MSA 011110 |
011 |
df |
wt |
ws |
wd |
3R 010100 |
6 |
3 |
2 |
5 |
5 |
5 |
6 |
PCKOD.df |
Vector Pack Odd | |
PCKOD.B wd,ws,wt |
MSA |
Vector Pack Odd |
PCKOD.H wd,ws,wt |
MSA |
Vector Pack Odd |
PCKOD.W wd,ws,wt |
MSA |
Vector Pack Odd |
PCKOD.D wd,ws,wt |
MSA |
Vector Pack Odd |
Vector Pack Odd
Vector odd elements copy.
left_half(wd)[i] = ws[2i+1]; right_half(wd)[i] = wt[2i+1]
Odd elements in vector ws are copied to the left half of vector wd and odd elements in vector wt are copied to the right half of vector wd.
The operands and results are values in integer data format df.
No data-dependent exceptions are possible.
PCKOD.B for i in 0 .. WRLEN/16-1 k = 2 * i + 1 WR[wd]8i+7+WRLEN/2..8i+WRLEN/2 = WR[ws]8k+7..8k WR[wd]8i+7..8i = WR[wt]8k+7..8k endfor PCKOD.H for i in 0 .. WRLEN/32-1 k = 2 * i + 1 WR[wd]16i+15+WRLEN/2..16i+WRLEN/2 = WR[ws]16k+15..16k WR[wd]16i+15..16i = WR[wt]16k+15..16k endfor PCKOD.W for i in 0 .. WRLEN/64-1 k = 2 * i + 1 WR[wd]32i+31+WRLEN/2..32i+WRLEN/2 = WR[ws]32k+31..32k WR[wd]32i+31..32i = WR[wt]32k+31..32k endfor PCKOD.D for i in 0 .. WRLEN/128-1 k = 2 * i + 1 WR[wd]64i+63+WRLEN/2..64i+WRLEN/2 = WR[ws]64k+63..64k WR[wd]64i+63..64i = WR[wt]64k+63..64k endfor
Reserved Instruction Exception, MSA Disabled Exception.