Encoding:

MSA

011110

011

df

wt

ws

wd

3R

010000

6

3

2

5

5

5

6

Format:

ADDS_U.df 

Vector Unsigned Saturated Add of Unsigned Values

ADDS_U.B wd,ws,wt

MSA

Vector Unsigned Saturated Add of Unsigned Values

ADDS_U.H wd,ws,wt

MSA

Vector Unsigned Saturated Add of Unsigned Values

ADDS_U.W wd,ws,wt

MSA

Vector Unsigned Saturated Add of Unsigned Values

ADDS_U.D wd,ws,wt

MSA

Vector Unsigned Saturated Add of Unsigned Values

Purpose:

Vector Unsigned Saturated Add of Unsigned Values

Vector addition to vector saturating the result as unsigned value.

Description:

wd[i] = saturate_unsigned(unsigned(ws[i]) + unsigned(wt[i]))

The elements in v ector wt are added to the elements in vector ws. Unsigned arithmetic is performed and overflows clamp to the largest representable unsigned value before writing the result to vector wd.

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

Restrictions:

No data-dependent exceptions are possible.

Operation:

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

Exceptions:

Reserved Instruction Exception, MSA Disabled Exception.