Encoding:

MSA

011110

100

df

wt

ws

wd

3R

010101

6

3

2

5

5

5

6

Format:

HADD_S.df 

Vector Signed Horizontal Add

HADD_S.H wd,ws,wt

MSA

Vector Signed Horizontal Add

HADD_S.W wd,ws,wt

MSA

Vector Signed Horizontal Add

HADD_S.D wd,ws,wt

MSA

Vector Signed Horizontal Add

Purpose:

Vector Signed Horizontal Add

Vector sign extend and pairwise add the odd elements with the even elements to double width elements

Description:

(wd[2i+1], wd[2i]) = signed(ws[2i+1]) + signed(wt[2i])

The sign-extended odd elements in vector ws are added to the sign-extended even elements in vector wt producing a result twice the size of the input operands. The result is written to vector wd.

The operands are values in integer data format half the size of df. The results are values in integer data format df.

Restrictions:

No data-dependent exceptions are possible.

Operation:

HADD_S.H
   for i in 0 .. WRLEN/16-1
      WR[wd]16i+15..16i = hadd_s(WR[ws]16i+15..16i, WR[wt]16i+15..16i, 8)
   endfor
HADD_S.W
   for i in 0 .. WRLEN/32-1
      WR[wd]32i+31..32i = hadd_s(WR[ws]32i+31..32i, WR[wt]32i+31..32i, 16)
   endfor
HADD_S.D
   for i in 0 .. WRLEN/64-1
      WR[wd]64i+63..64i = hadd_s(WR[ws]64i+63..64i, WR[wt]64i+63..64i, 32)
   endfor
function hadd_s(ts, tt, n)
   t = ((ts2n-1)n || ts2n-1..n) + ((ttn-1)n || ttn-1..0)
   return t
endfunction hadd_s

Exceptions:

Reserved Instruction Exception, MSA Disabled Exception.