Encoding:

MSA

011110

110

df

wt

ws

wd

3R

001101

6

3

2

5

5

5

6

Format:

BINSL.df 

Vector Bit Insert Left

BINSL.B wd,ws,wt

MSA

Vector Bit Insert Left

BINSL.H wd,ws,wt

MSA

Vector Bit Insert Left

BINSL.W wd,ws,wt

MSA

Vector Bit Insert Left

BINSL.D wd,ws,wt

MSA

Vector Bit Insert Left

Purpose:

Vector Bit Insert Left

Vector selected left most bits copy while preserving destination right bits.

Description:

wd[i] = bit_insert_left(wd[i], ws[i], wt[i])

Copy most significant (left) bits in each element of vector ws to elements in vector wd while preserving the least significant (right) bits. The number of bits to copy is given by the elements in vector wt modulo the size of the element in bits plus 1.

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

Restrictions:

No data-dependent exceptions are possible.

Operation:

BINSL.B:
   for i in 0 .. WRLEN/8-1
      t = WR[wt]8i+2..8i
      WR[wd]8i+7..8i = WR[ws]8i+7..8i+7-t || WR[wd]8i+7-t-1..8i
   endfor
BINSL.H:
   for i in 0 .. WRLEN/16-1
      t = WR[wt]16i+3..16i
      WR[wd]16i+15..16i = WR[ws]16i+15..16i+15-t || WR[wd]16i+15-t-1..16i
   endfor
BINSL.W:
   for i in 0 .. WRLEN/32-1
      t = WR[wt]32i+4..32i
      WR[wd]32i+31..32i = WR[ws]32i+31..32i+31-t || WR[wd]32i+31-t-1..32i
   endfor
BINSL.D:
   for i in 0 .. WRLEN/64-1
      t = WR[wt]64i+5..64i
      WR[wd]64i+63..64i = WR[ws]64i+63..64i+63-t || WR[wd]64i+63-t-1..64i
   endfor

Exceptions:

Reserved Instruction Exception, MSA Disabled Exception.