MSA 011110 |
101 |
df |
wt |
ws |
wd |
3R 010100 |
6 |
3 |
2 |
5 |
5 |
5 |
6 |
ILVR.df |
Vector Interleave Right | |
ILVR.B wd,ws,wt |
MSA |
Vector Interleave Right |
ILVR.H wd,ws,wt |
MSA |
Vector Interleave Right |
ILVR.W wd,ws,wt |
MSA |
Vector Interleave Right |
ILVR.D wd,ws,wt |
MSA |
Vector Interleave Right |
Vector Interleave Right
Vector right elements interleave.
wd[2i] = right_half(wt)[i]; wd[2i+1] = right_half(ws)[i]
The right 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.
No data-dependent exceptions are possible.
ILVR.B for i in 0 .. WRLEN/16-1 j = 2 * i k = 2 * i + 1 WR[wd]8j+7..8j = WR[wt]8i+7..8i WR[wd]8k+7..8k = WR[ws]8i+7..8i endfor ILVR.H for i in 0 .. WRLEN/32-1 j = 2 * i k = 2 * i + 1 WR[wd]16j+15..16j = WR[wt]16i+15..16i WR[wd]16k+15..16k = WR[ws]16i+15..16i endfor ILVR.W for i in 0 .. WRLEN/64-1 j = 2 * i k = 2 * i + 1 WR[wd]32j+31..32j = WR[wt]32i+31..32i WR[wd]32k+31..32k = WR[ws]32i+31..32i endfor ILVR.D for i in 0 .. WRLEN/128-1 j = 2 * i k = 2 * i + 1 WR[wd]64j+63..64j = WR[wt]64i+63..64i WR[wd]64k+63..64k = WR[ws]64i+63..64i endfor
Reserved Instruction Exception, MSA Disabled Exception.