Encoding:

MSA

011110

110011011

df

ws

wd

2RF

011110

6

9

1

5

5

6

Format:

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

Purpose:

Vector Floating-Point Convert from Fixed-Point Right

Vector right fix-point elements format conversion to floating-point doubling the element width.

Description:

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.

Restrictions:

No data-dependent exceptions are possible.

Operation:

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

Exceptions:

Reserved Instruction Exception, MSA Disabled Exception.