MSA 011110 |
0100 |
df |
wt |
ws |
wd |
3RF 011011 |
6 |
4 |
1 |
5 |
5 |
5 |
6 |
FMADD.df |
Vector Floating-Point Multiply-Add | |
FMADD.W wd,ws,wt |
MSA |
Vector Floating-Point Multiply-Add |
FMADD.D wd,ws,wt |
MSA |
Vector Floating-Point Multiply-Add |
Vector Floating-Point Multiply-Add
Vector floating-point multiply-add
wd[i] = wd[i] + ws[i] * wt[i]
The floating-point elements in vector wt multiplied by floating-point elements in vector ws are added to the floatingpoint 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 add operation is defined by the IEEE Standard for Floating-Point Arithmetic 754TM-2008. The multiplication between an infinity and a zero si gnals 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.
FMADD.W for i in 0 .. WRLEN/32-1 WR[wd]32i+31..32i = MultiplyAddFP(WR[wd]32i+31..32i, WR[ws]32i+31..32i, WR[wt]32i+31..32i, 32) endfor FMADD.D for i in 0 .. WRLEN/64-1 WR[wd]64i+63..64i = MultiplyAddFP(WR[wd]64i+63..64i, WR[ws]64i+63..64i, WR[wt]64i+63..64i, 64) endfor function MultiplyAddFP(td, tt, ts, n) /* Implementation defined multiply add operation. */ endfunction MultiplyAddFP
Reserved Instruction Exception, MSA Disabled Exception, MSA Floating Point Exception.