mtvsrdd

Move To VSR Double Double

mtvsrdd XT, RA, RB

Moves the contents of two general-purpose registers into a vector-scalar register (VSR) as doublewords.

Details

The mtvsrdd instruction moves the contents of GPR[RA] and GPR[RB] into the doublewords of VSR[XT]. If RA is zero, the first doubleword is set to zero. The second doubleword is always taken from GPR[RB].

Pseudocode Operation

if TX=0 & MSR.VSX=0 then
    VSX_Unavailable()
if TX=1 & MSR.VEC=0 then
    Vector_Unavailable()
if RA=0 then
    VSR[32×TX+T].dword[0] ← 0x0000_0000_0000_0000
else
    VSR[32×TX+T].dword[0] ← GPR[RA]
VSR[32×TX+T].dword[1] ← GPR[RB]

Programming Note

For TX=0, mtvsrdd is treated as a VSX instruction in terms of resource availability. For TX=1, mtvsrdd is treated as a Vector instruction in terms of resource availability.

Example

mtvsrdd vs1, r4, r5

Encoding

Binary Layout
31
0
XT
6
RA
11
RB
16
435
21
/
 
Format X-form
Opcode 0x7C000363
Extension VSX
Registers Altered MSR

Operands

  • XT
    Target VSR
  • RA
    High GPR
  • RB
    Low GPR