MSA 011110 |
110011010 |
df |
ws |
wd |
2RF 011110 |
6 |
9 |
1 |
5 |
5 |
6 |
FFQL.df |
Vector Floating-Point Convert from Fixed-Point Left | |
FFQL.W wd,ws |
MSA |
Vector Floating-Point Convert from Fixed-Point Left |
FFQL.D wd,ws |
MSA |
Vector Floating-Point Convert from Fixed-Point Left |
Vector Floating-Point Convert from Fixed-Point Left
Vector left fix-point elements format conversion to floating-point doubling the element width.
wd[i] = from_q(left_half(ws)[i])
The left 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.
FFQL.W for i in 0 .. WRLEN/32-1 f = FromFixPointFP(WR[ws]16i+15+WRLEN/2..16i+WRLEN/2, 16) WR[wd]32i+31..32i = f endfor FFQL.D for i in 0 .. WRLEN/64-1 f = FromFixPointFP(WR[ws]32i+31+WRLEN/2..32i+WRLEN/2, 32) WR[wd]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.