xscvspdp

Vector Scalar Convert Single-Precision to Double-Precision format Non-signalling

xscvspdp XT, XB

Converts a single-precision floating-point value in VSR[XB] to double-precision format and places the result into VSR[XT].

Details

The xscvspdp instruction converts the contents of the specified single-precision floating-point element in VSR[BX] to a double-precision floating-point value and stores it in the specified element of VSR[TX]. The result is placed in doubleword element 0 of VSR[XT], and doubleword element 1 is set to zero.

Pseudocode Operation

if MSR.VSX=0 then
    VSX_Unavailable()
end
src ←bfp_CONVERT_FROM_BFP32(VSR[32×BX+B].word[0])
vxsnan_flag ←src.class.SNaN
if vxsnan_flag=1 then do
    SetFX(FPSCR.VXSNAN)
    result ←bfp_QUIET(result)
end
vex_flag ←FPSCR.VE & vxsnan_flag
FPSCR.FR ←0b0
FPSCR.FI ←0b0
if vex_flag=0 then do
    VSR[32×TX+T].dword[0] ←result
    VSR[32×TX+T].dword[1] ←0x0000_0000_0000_0000
    FPSCR.FPRF ←fprf_CLASS_BFP64(result)
end

Programming Note

['xscvspdp can be used to convert a single-precision value in single-precision format to double-precision format for use by Floating-Point scalar single-precision operations.', '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

xscvspdp vs1, vs3

Encoding

Binary Layout
60
6
XT
11
0
16
XB
21
408
30 31
 
Format XX2-form
Opcode 0xF0000198
Extension VSX
Registers Altered FPSCR, VXSNAN

Operands

  • XT
    Target
  • XB
    Source