Encoding:

MSA

011110

010

df

wt

ws

wd

3R

010010

6

3

2

5

5

5

6

Format:

MSUBV.df 

Vector Multiply and Subtract

MSUBV.B wd,ws,wt

MSA

Vector Multiply and Subtract

MSUBV.H wd,ws,wt

MSA

Vector Multiply and Subtract

MSUBV.W wd,ws,wt

MSA

Vector Multiply and Subtract

MSUBV.D wd,ws,wt

MSA

Vector Multiply and Subtract

Purpose:

Vector Multiply and Subtract

Vector multiply and subtract.

Description:

wd[i] = wd[i] - ws[i] * wt[i]

The integer elements in vector wt are multiplied by integer elements in vector ws and subtracted from the integer elements in vector wd. The most significant half of the multiplication result is discarded.

The operands and results are values in integer data format df.

Restrictions:

No data-dependent exceptions are possible.

Operation:

MSUBV.B
   for i in 0 .. WRLEN/8-1
      WR[wd]8i+7..8i = 
             WR[wd]8i+7..8i - WR[ws]8i+7..8i * WR[wt]8i+7..8i
   endfor
MSUBV.H
   for i in 0 .. WRLEN/16-1
      WR[wd]16i+15..16i =
             WR[wd]16i+15..16i - WR[ws]16i+15..16i * WR[wt]16i+15..16i
   endfor
MSUBV.W
   for i in 0 .. WRLEN/32-1
      WR[wd]32i+31..32i =
             WR[wd]32i+31..32i - WR[ws]32i+31..32i * WR[wt]32i+31..32i
   endfor
MSUBV.D
   for i in 0 .. WRLEN/64-1
      WR[wd]64i+63..64i =
             WR[wd]64i+63..64i - WR[ws]64i+63..64i * WR[wt]64i+63..64i
   endfor

Exceptions:

Reserved Instruction Exception, MSA Disabled Exception.