Encoding:

MSA

011110

0100

df

wt

ws

wd

3RF

011011

6

4

1

5

5

5

6

Format:

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

Purpose:

Vector Floating-Point Multiply-Add

Vector floating-point multiply-add

Description:

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.

Restrictions:

Data-dependent exceptions are poss ible as s pecified by the I EEE Standard for Floating-Point Arithmetic 754TM2008.

Operation:

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

Exceptions:

Reserved Instruction Exception, MSA Disabled Exception, MSA Floating Point Exception.