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

Converts a double-precision floating-point value held in a VSX register to quad-precision format and stores the result in a VSX register pair. The conversion is exact since double-precision has fewer significant bits than quad-precision. This instruction requires VSX support and updates FPSCR with exception flags as needed.

Pseudocode Operation

FPR[vD:vD+1] ← convert_to_quad_precision(FPR[vB])
FPSCR ← updated with exception flags

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

// Promote Double to Quad.

Encoding

Binary Layout
0
0
VRT
6
VRB
11
11000000000000000000000000000000
21
 
Format X-form
Opcode 0xFC160688
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