xviexpdp

VSX Vector Insert Exponent Double-Precision

xviexpdp XT,XA,XB

Inserts the exponent from one vector register into another for double-precision floating-point numbers.

Details

The xviexpdp instruction inserts the exponent from one vector register into another for double-precision floating-point numbers. The target register XT is calculated as 32×TX + T, and the source registers XA and XB are calculated as 32×AX + A and 32×BX + B respectively.

Pseudocode Operation

if MSR.VSX=0 then
    VSX_Unavailable()
XT ←32×TX + T
do i = 0 to 1
    src1 ←VSR[32×AX+A].dword[i]
    src2 ←VSR[32×BX+B].dword[i]
    VSR[XT].dword[i].bit[0]    ←src1.bit[0]
    VSR[XT].dword[i].bit[1:11]  ←src2.bit[53:63]
    VSR[XT].dword[i].bit[12:63] ←src1.bit[12:63]
end

Programming Note

The xviexpdp instruction is used to insert the exponent from one vector register into another for double-precision floating-point numbers. Ensure that the VSX (Vector Scalar Extensions) are enabled in the MSR.VSX bit before using this instruction, otherwise a VSX_Unavailable exception will be raised. The instruction operates on 64-bit elements and requires proper alignment of the source and target registers to avoid undefined behavior.

Example

xviexpdp vs1, vs2, vs3

Encoding

Binary Layout
T
0
A
6
B
11
248
16
AX BX TX
21
 
Format XX3-form
Opcode 0xF00007C0
Extension VSX

Operands

  • XT
    Target Vector Register
  • XA
    Source Vector Register
  • XB
    Source Vector Register
  • VRT
    Target Vector Register
  • VRA
    Source Vector Register
  • VRB
    Source Vector Register