|
MSA 011110 |
111 |
df |
wt |
ws |
wd |
3R 010100 |
|
6 |
3 |
2 |
5 |
5 |
5 |
6 |
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 |
Vector Interleave Odd
Vector odd elements interleave.
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.
No data-dependent exceptions are possible.
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
Reserved Instruction Exception, MSA Disabled Exception.