Encoding:

MSA

011110

101

df

wt

ws

wd

3R

010001

6

3

2

5

5

5

6

Format:

ASUB_U.df 

Vector Absolute Values of Unsigned Subtract

ASUB_U.B wd,ws,wt

MSA

Vector Absolute Values of Unsigned Subtract

ASUB_U.H wd,ws,wt

MSA

Vector Absolute Values of Unsigned Subtract

ASUB_U.W wd,ws,wt

MSA

Vector Absolute Values of Unsigned Subtract

ASUB_U.D wd,ws,wt

MSA

Vector Absolute Values of Unsigned Subtract

Purpose:

Vector Absolute Values of Unsigned Subtract

Vector subtraction from vector of unsigned values taking the absolute value of the results.

Description:

wd[i] = absolute_value(unsigned(ws[i]) - unsigned(wt[i]))

The unsigned elements in vector wt are subtracted from the unsigned elements in vector ws. The absolute value of the signed result is written to vector wd.

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

Restrictions:

No data-dependent exceptions are possible.

Operation:

ASUB_U.B:
   for i in 0 .. WRLEN/8-1
      WR[wd]8i+7..8i = asub_u(WR[ws]8i+7..8i, WR[wt]8i+7..8i, 8)
   endfor
ASUB_U.H:
   for i in 0 .. WRLEN/16-1
      WR[wd]16i+15..16i = asub_u(WR[ws]16i+15..16i, WR[wt]16i+15..16i, 16)
   endfor
ASUB_U.W:
   for i in 0 .. WRLEN/32-1
      WR[wd]32i+31..32i = asub_u(WR[ws]32i+31..32i, WR[wt]32i+31..32i, 32)
   endfor
ASUB_U.D:
   for i in 0 .. WRLEN/64-1
      WR[wd]64i+63..64i = asub_u(WR[ws]64i+63..64i, WR[wt]64i+63..64i, 64)
   endfor
function asub_u(ts, tt, n)
   t = (0 || ts) - (0 || tt)
   if tn = 0 then
      return tn-1..0
   else
      return (-t)n-1..0
endfunction asub_s

Exceptions:

Reserved Instruction Exception, MSA Disabled Exception.