MSA 011110 |
1000 |
df |
wt |
ws |
wd |
3RF 011011 |
6 |
4 |
1 |
5 |
5 |
5 |
6 |
FEXDO.df |
Vector Floating-Point Down-Convert Interchange Format | |
FEXDO.H wd,ws,wt |
MSA |
Vector Floating-Point Down-Convert Interchange Format |
FEXDO.W wd,ws,wt |
MSA |
Vector Floating-Point Down-Convert Interchange Format |
Vector Floating-Point Down-Convert Interchange Format
Vector conversion to smaller interchange format.
left_half(wd)[i] = down_convert(ws[i]); right_half(wd)[i] = down_convert(wt[i])
The floating-point elements in vectors ws and wt are down-converted to a smaller interchange format, i.e. from 64-bit to 32-bit, or from 32-bit to 16-bit.
The format down-conversion operation is defined by the IEEE Standard for Floating-Point Arithmetic 754TM-2008.
16-bit floating-point results are not affected by the flush-to-zero bit FS in MSA Control and Status Register MSACSR.
The operands are values in floating-point data format d ouble the size of df. The results are floating-point values in data format of df.
Data-dependent exceptions are poss ible as s pecified by the I EEE Standard for Floating-Point Arithmetic 754TM2008.
FEXDO.H for i in 0 .. WRLEN/32-1 f = DownConvertFP(WR[ws]32i+31..32i, 32) g = DownConvertFP(WR[wt]32i+31..32i, 32) WR[wd]16i+15+WRLEN/2..16i+WRLEN/2 = f WR[wd]16i+15..16i = g endfor FEXDO.W for i in 0 .. WRLEN/64-1 f = DownConvertFP(WR[ws]64i+63..64i, 64) g = DownConvertFP(WR[wt]64i+63..64i, 64) WR[wd]32i+31+WRLEN/2..32i+WRLEN/2 = f WR[wd]32i+31..32i = g endfor function DownConvertFP(tt, n) /* Implementation defined format down-conversion. */ endfunction DownConvertFP
Reserved Instruction Exception, MSA Disabled Exception, MSA Floating Point Exception.