xsiexpdp

VSX Scalar Insert Exponent Double-Precision

xsiexpdp XT, XA, XB

Inserts exponent from one double into another.

Details

The xsiexpdp instruction inserts the exponent from the unsigned integer value in GPR[RB] into the double-precision floating-point number in VSR[XT]. The significand and sign of the result are taken from the unsigned integer value in GPR[RA].

Pseudocode Operation

if MSR.VSX=0 then
    VSX_Unavailable()
src1 ← GPR[RA]
src2 ← GPR[RB]
XT ← 32×TX + T
VSR[XT].dword[0].bit[0] ← src1.bit[0]
VSR[XT].dword[0].bit[1:11] ← src2.bit[53:63]
VSR[XT].dword[0].bit[12:63] ← src1.bit[12:63]
VSR[XT].dword[1] ← 0x0000_0000_0000_0000

Programming Note

['This instruction can be used to produce a single-precision result.', 'Previous versions of the architecture allowed the contents of doubleword 1 of the result register to be undefined. However, all processors that support this instruction write 0s into doubleword 1 of the result register, as is required by this version of the architecture.']

Example

xsiexpdp vs1, vs2, vs3

Encoding

Binary Layout
60
0
XT
6
XA
11
XB
16
219
 
Format XX3-form
Opcode 0xF00000DB
Extension VSX
Registers Altered VSR[XT]

Operands

  • XT
    Target
  • XA
    Significand
  • XB
    Exponent
  • RA
    Source General Purpose Register
  • RB
    Source General Purpose Register