Encoding:

MSA

011110

11000010

df

ws

wd

2R

011110

6

8

2

5

5

6

Format:

NLOC.df 

Vector Leading Ones Count

NLOC.B wd,ws

MSA

Vector Leading Ones Count

NLOC.H wd,ws

MSA

Vector Leading Ones Count

NLOC.W wd,ws

MSA

Vector Leading Ones Count

NLOC.D wd,ws

MSA

Vector Leading Ones Count

Purpose:

Vector Leading Ones Count

Vector element count of leading bits set to 1.

Description:

wd[i] = leading_one_count(ws[i])

The number of leading ones for elements in vector ws is stored to the elements in vector wd.

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

Restrictions:

No data-dependent exceptions are possible.

Operation:

NLOC.B
   for i in 0 .. WRLEN/8-1
      WR[wd]8i+7..8i = leading_one_count(WR[ws]8i+7..8i, 8)
   endfor
NLOC.H
   for i in 0 .. WRLEN/16-1
      WR[wd]16i+15..16i = leading_one_count(WR[ws]16i+15..16i, 16)
   endfor
NLOC.W
   for i in 0 .. WRLEN/32-1
      WR[wd]32i+31..32i = leading_one_count(WR[ws]32i+31..32i, 32)
   endfor
NLOC.D
   for i in 0 .. WRLEN/64-1
      WR[wd]64i+63..64i = leading_one_count(WR[ws]64i+63..64i, 64)
   endfor
function leading_one_count(tt, n)
   z = 0
   for i in n-1..0
      if tti = 0 then
          return z
      else
          z = z + 1
      endif
endfunction leading_one_count

Exceptions:

Reserved Instruction Exception, MSA Disabled Exception.