Revision 3018f259 target-arm/translate.c
b/target-arm/translate.c | ||
---|---|---|
2807 | 2807 |
tmp2 = new_tmp(); |
2808 | 2808 |
tcg_gen_mov_i32(tmp2, tmp); |
2809 | 2809 |
neon_store_reg(rn, 0, tmp2); |
2810 |
neon_store_reg(rn, 0, tmp);
|
|
2810 |
neon_store_reg(rn, 1, tmp);
|
|
2811 | 2811 |
} else { |
2812 | 2812 |
/* VMOV */ |
2813 | 2813 |
switch (size) { |
... | ... | |
3814 | 3814 |
tmp2 = new_tmp(); |
3815 | 3815 |
tcg_gen_mov_i32(tmp2, tmp); |
3816 | 3816 |
neon_store_reg(rd, 0, tmp2); |
3817 |
neon_store_reg(rd, 0, tmp);
|
|
3817 |
neon_store_reg(rd, 1, tmp);
|
|
3818 | 3818 |
rd += stride; |
3819 | 3819 |
} |
3820 | 3820 |
stride = (1 << size) * nregs; |
... | ... | |
5498 | 5498 |
} |
5499 | 5499 |
} else if ((insn & (1 << 10)) == 0) { |
5500 | 5500 |
/* VTBL, VTBX. */ |
5501 |
n = (insn >> 5) & 0x18;
|
|
5501 |
n = ((insn >> 5) & 0x18) + 8;
|
|
5502 | 5502 |
if (insn & (1 << 6)) { |
5503 | 5503 |
tmp = neon_load_reg(rd, 0); |
5504 | 5504 |
} else { |
... | ... | |
5508 | 5508 |
tmp2 = neon_load_reg(rm, 0); |
5509 | 5509 |
gen_helper_neon_tbl(tmp2, tmp2, tmp, tcg_const_i32(rn), |
5510 | 5510 |
tcg_const_i32(n)); |
5511 |
dead_tmp(tmp); |
|
5511 | 5512 |
if (insn & (1 << 6)) { |
5512 | 5513 |
tmp = neon_load_reg(rd, 1); |
5513 | 5514 |
} else { |
... | ... | |
5518 | 5519 |
gen_helper_neon_tbl(tmp3, tmp3, tmp, tcg_const_i32(rn), |
5519 | 5520 |
tcg_const_i32(n)); |
5520 | 5521 |
neon_store_reg(rd, 0, tmp2); |
5521 |
neon_store_reg(rd, 1, tmp2); |
|
5522 |
neon_store_reg(rd, 1, tmp3); |
|
5523 |
dead_tmp(tmp); |
|
5522 | 5524 |
} else if ((insn & 0x380) == 0) { |
5523 | 5525 |
/* VDUP */ |
5524 | 5526 |
if (insn & (1 << 19)) { |
Also available in: Unified diff