xscvdpspn

VSX Scalar Convert Scalar Single-Precision to Vector Single-Precision format Non-signalling

xscvdpspn XT,XB

Converts a scalar single-precision floating-point value to vector single-precision format without raising exceptions for inexact results.

Details

The instruction converts the contents of doubleword element 0 of VSR[XB] represented in double-precision format to single-precision format and places it into word elements 0 and 1 of VSR[XT]. Word elements 2 and 3 of VSR[XT] are set to 0.

Pseudocode Operation

if MSR.VSX=0 then VSX_Unavailable()
reset_xflags()
src ← bfp_CONVERT_FROM_BFP64(VSR[32×BX+B].dword[0])
result ← bfp32_CONVERT_FROM_BFP(src)
VSR[32×TX+T].word[0] ← result
VSR[32×TX+T].word[1] ← result
VSR[32×TX+T].word[2] ← 0x0000_0000
VSR[32×TX+T].word[3] ← 0x0000_0000

Programming Note

['If x is not representable in single-precision, some exponent and/or significand bits will be discarded, likely producing undesirable results. The low-order 29 bits of the significand of x are discarded, more if the unbiased exponent of x is less than -126 (i.e., denormal). Finite values of x having an unbiased exponent less than -150 will return a result of Zero. Finite values of x having an unbiased exponent greater than +127 will result in discarding significant bits of the exponent. SNaN inputs having no significant bits in the upper 23 bits of the significand will return Infinity as the result. No status is set for any of these cases.', 'xscvdpsp should be used to convert a scalar double-precision value to vector single-precision format.', 'xscvdpspn should be used to convert a scalar single-precision value to vector single-precision format for non-signalling conversion.']

Example

xscvdpspn vs1, vs3

Encoding

Binary Layout
60
0
T
11
B
16
267
21
BX
29
TX
48
 
Format XX2-form
Opcode 0xF000042C
Extension VSX
Registers Altered None

Operands

  • XT
    Target Vector-Specific Register
  • XB
    Source Vector-Specific Register