xscvqpdp

VSX Scalar Convert Quad-Precision to Double

xscvqpdp vD, vB

Converts a quad-precision floating-point value to a double-precision floating-point value with round-to-even rounding.

Details

Converts a 128-bit quad-precision floating-point value in VSR vB to a 64-bit double-precision floating-point value, placing the result in the low 64 bits of VSR vD using round-to-even rounding. FPSCR exception flags (XX, ZX, OX, UX) are updated based on the conversion result. Requires VSX support.

Pseudocode Operation

vD[0:63] ← ConvertQuadPrecisionToDoublePrecision(vB[0:127])
FPSCR[XX,ZX,OX,UX] ← updated based on conversion result

Programming Note

This instruction is used to convert a quad-precision floating-point number to a double-precision floating-point number. Ensure that the VSX facility is enabled in the MSR register, as attempting to use this instruction when VSX is unavailable will result in an exception. The conversion respects the rounding mode specified in the FPSCR register, and any exceptions such as invalid operation (VXSNAN), overflow (OX), underflow (UX), or inexact (XX) are recorded in the FPSCR. The result is stored in the first doubleword of the destination vector register, with the second doubleword set to zero.

Example

xscvqpdp vd, vb

Encoding

Binary Layout
1
0
VRT
16
0
21
VRB
26
RO
30
0
31
0
0
 
Format X-form
Opcode 0xFC140688
Extension VSX
Registers Altered FPSCR, FPRF, FR, FI, VXSNAN, OX, UX, XX

Operands

  • vD
    Target
  • vB
    Source
  • VRT
    Target Vector Register
  • VRB
    Source Vector Register