xscvspdp
Vector Scalar Convert Single-Precision to Double-Precision format Non-signalling
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
Encoding
Operands
-
XT
Target -
XB
Source