Encoding:

MSA

011110

110011010

df

ws

wd

2RF

011110

6

9

1

5

5

6

Format:

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

Purpose:

Vector Floating-Point Convert from Fixed-Point Left

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

Description:

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.

Restrictions:

No data-dependent exceptions are possible.

Operation:

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

Exceptions:

Reserved Instruction Exception, MSA Disabled Exception.