Encoding:

MSA

011110

111

df

wt

ws

wd

3R

010100

6

3

2

5

5

5

6

Format:

ILVOD.df 

Vector Interleave Odd

ILVOD.B wd,ws,wt

MSA

Vector Interleave Odd

ILVOD.H wd,ws,wt

MSA

Vector Interleave Odd

ILVOD.W wd,ws,wt

MSA

Vector Interleave Odd

ILVOD.D wd,ws,wt

MSA

Vector Interleave Odd

Purpose:

Vector Interleave Odd

Vector odd elements interleave.

Description:

wd[2i] = wt[2i+1]; wd[2i+1] = ws[2i+1]

Odd elements in v ectors 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:

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

Exceptions:

Reserved Instruction Exception, MSA Disabled Exception.