xscvdpqp
VSX Scalar Convert Double-Precision to Quad-Precision format
xscvdpqp vD, vB
Converts a double-precision floating-point value to a quad-precision floating-point value.
Details
The xscvdpqp instruction converts the double-precision floating-point value in VSR[VRB+32].dword[0] to a quad-precision floating-point value and stores it in VSR[VRT+32].
Pseudocode Operation
if MSR.VSX=0 then VSX_Unavailable()
src ←bfp_CONVERT_FROM_BFP64(VSR[VRB+32].dword[0])
if src.class.SNaN then
result ←bfp128_CONVERT_FROM_BFP(bfp_QUIET(src))
else
result ←bfp128_CONVERT_FROM_BFP(src)
vxsnan_flag ←src.class.SNaN
if vxsnan_flag=1 then SetFX(FPSCR.VXSNAN)
vex_flag ←FPSCR.VE & vxsnan_flag
if vex_flag=0 then do
VSR[VRT+32] ←result
FPSCR.FPRF ←fprf_CLASS_BFP128(result)
end
FPSCR.FR ←0
FPSCR.FI ←0
Programming Note
This instruction is used to convert a double-precision floating-point number to a quad-precision format. Ensure that the VSX (Vector Scalar Extensions) are enabled in the MSR register, otherwise, an exception will be raised. Be cautious with signaling NaNs (SNaNs), as they are converted to quiet NaNs and may trigger exceptions based on the FPSCR settings.
Example
xscvdpqp v2, v3
Encoding
Binary Layout
0
0
VRT
6
VRB
11
11000000000000000000000000000000
21
Operands
-
vD
Target (Quad) -
vB
Source (Double) -
VRT
Target Vector-Scalar Register -
VRB
Source Vector-Scalar Register