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
 
Format X-form
Opcode 0xFC0002A8
Extension VSX
Registers Altered FPSCR.FPRF, FPSCR.FX, FPSCR.VXSNAN, FPSCR.FR, FPSCR.FI

Operands

  • vD
    Target (Quad)
  • vB
    Source (Double)
  • VRT
    Target Vector-Scalar Register
  • VRB
    Source Vector-Scalar Register