MSA 011110 |
110011011 |
df |
ws |
wd |
2RF 011110 |
6 |
9 |
1 |
5 |
5 |
6 |
FFQR.df |
Vector Floating-Point Convert from Fixed-Point Right | |
FFQR.W wd,ws |
MSA |
Vector Floating-Point Convert from Fixed-Point Right |
FFQR.D wd,ws |
MSA |
Vector Floating-Point Convert from Fixed-Point Right |
Vector Floating-Point Convert from Fixed-Point Right
Vector right fix-point elements format conversion to floating-point doubling the element width.
wd[i] = from_q(right_half(ws)[i]);
The right half fixed-point elements in vector ws are up-converted to floating-point data format, i.e. from 16-bit Q15 to
32-bit floating-point, or from 32-bit Q31 to 64-bit floating-point. The result is written to vector wd.
The fixed-point Q15 or Q31 value is first converted to floating-point as a 16-bit or 32-bit integer (as though it was scaled up by 215 or 231) and then the resulting floating-point value is scaled down (divided by 215 or 231).
The scaling and integer to floating-point conversion operations are defined by the IEEE Standard for Floating-Point
Arithmetic 754TM-2008. No floating-point exceptions are possible because the input data is half the size of the output.
The operands are values in fixed-point data format half the size of df. The results are floating-point values in data format df.
No data-dependent exceptions are possible.
FFQR.W for i in 0 .. WRLEN/32-1 f = FromFixPointFP(WR[ws]16i+15..16i, 16) WR[wd]32i+31..32i = f endfor FFQR.D for i in 0 .. WRLEN/64-1 f = FromFixPointFP(WR[wt]32i+31..32i, 32) WR[ws]64i+63..64i = f endfor function FromFixPointFP(tt, n) /* Implementation defined fixed-point to floating-point conversion. */ endfunction FromFixPointFP
Reserved Instruction Exception, MSA Disabled Exception.