Encoding:

MSA

011110

100

df

wt

ws

wd

3R

010100

6

3

2

5

5

5

6

Format:

ILVL.df 

Vector Interleave Left

ILVL.B wd,ws,wt

MSA

Vector Interleave Left

ILVL.H wd,ws,wt

MSA

Vector Interleave Left

ILVL.W wd,ws,wt

MSA

Vector Interleave Left

ILVL.D wd,ws,wt

MSA

Vector Interleave Left

Purpose:

Vector Interleave Left

Vector left elements interleave.

Description:

wd[2i] = left_half(wt)[i]; wd[2i+1] = left_half(ws)[i]

The left half elements in vectors ws and wt are copied to vector wd alternating one element from ws with one element from wt.

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

Restrictions:

No data-dependent exceptions are possible.

Operation:

ILVL.B
   for i in 0 .. WRLEN/16-1
      j = 2 * i
      k = 2 * i + 1
      WR[wd]8j+7..8j = WR[wt]8i+7+WRLEN/2..8i+WRLEN/2
      WR[wd]8k+7..8k = WR[ws]8i+7+WRLEN/2..8i+WRLEN/2
   endfor
ILVL.H
   for i in 0 .. WRLEN/32-1
      j = 2 * i
      k = 2 * i + 1
      WR[wd]16j+15..16j = WR[wt]16i+15+WRLEN/2..16i+WRLEN/2
      WR[wd]16k+15..16k = WR[ws]16i+15+WRLEN/2..16i+WRLEN/2
   endfor
ILVL.W
   for i in 0 .. WRLEN/64-1
      j = 2 * i
      k = 2 * i + 1
      WR[wd]32j+31..32j = WR[wt]32i+31+WRLEN/2..32i+WRLEN/2
      WR[wd]32k+31..32k = WR[ws]32i+31+WRLEN/2..32i+WRLEN/2
   endfor
ILVL.D
   for i in 0 .. WRLEN/128-1
      j = 2 * i
      k = 2 * i + 1
      WR[wd]64j+63..64j = WR[wt]64i+63+WRLEN/2..64i+WRLEN/2
      WR[wd]64k+63..64k = WR[ws]64i+63+WRLEN/2..64i+WRLEN/2
   endfor

Exceptions:

Reserved Instruction Exception, MSA Disabled Exception.