Encoding:

MSA

011110

0101

df

wt

ws

wd

3RF

011011

6

4

1

5

5

5

6

Format:

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

Purpose:

Vector Floating-Point Multiply-Sub

Vector floating-point multiply-sub

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 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.

Restrictions:

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

Operation:

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

Exceptions:

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