MSA 011110 |
0101 |
df |
wt |
ws |
wd |
3RF 011011 |
6 |
4 |
1 |
5 |
5 |
5 |
6 |
FMSUB.df |
Vector Floating-Point Multiply-Sub | |
FMSUB.W wd,ws,wt |
MSA |
Vector Floating-Point Multiply-Sub |
FMSUB.D wd,ws,wt |
MSA |
Vector Floating-Point Multiply-Sub |
Vector Floating-Point Multiply-Sub
Vector floating-point multiply-sub
wd[i] = wd[i] - ws[i] * wt[i]
The floating-point elements in vector wt multiplied by floating-point elements in vector ws are subtracted from the floating-point elements in vector wd. The operation is fused, i.e. computed as if with unbounded range and precision, rounding only once to the destination format.
The multiply subtract operation is defined by the IEEE Standard for Floating-Point Arithmetic 754TM-2008. The multiplication between an infinity and a zero signals Invalid Operation exception. If the Invalid Operation exception is disabled, the result is the default quiet NaN.
The operands and results are values in floating-point data format df.
Data-dependent exceptions are poss ible as s pecified by the I EEE Standard for Floating-Point Arithmetic 754TM2008.
FMSUB.W for i in 0 .. WRLEN/32-1 WR[wd]32i+31..32i = MultiplySubFP(WR[wd]32i+31..32i, WR[ws]32i+31..32i, WR[wt]32i+31..32i, 32) endfor FMSUB.D for i in 0 .. WRLEN/64-1 WR[wd]64i+63..64i = MultiplySubFP(WR[wd]64i+63..64i, WR[ws]64i+63..64i, WR[wt]64i+63..64i, 64) endfor function MultiplySubFP(td, tt, ts, n) /* Implementation defined multiply subtract operation. */ endfunction MultiplySubFP
Reserved Instruction Exception, MSA Disabled Exception, MSA Floating Point Exception.