Revision 36aa55dc target-arm/translate.c
b/target-arm/translate.c | ||
---|---|---|
1447 | 1447 |
|
1448 | 1448 |
static void gen_iwmmxt_movl_wRn_T0_T1(int rn) |
1449 | 1449 |
{ |
1450 |
tcg_gen_extu_i32_i64(cpu_V0, cpu_T[0]); |
|
1451 |
tcg_gen_extu_i32_i64(cpu_V1, cpu_T[0]); |
|
1452 |
tcg_gen_shli_i64(cpu_V1, cpu_V1, 32); |
|
1453 |
tcg_gen_or_i64(cpu_V0, cpu_V0, cpu_V1); |
|
1450 |
tcg_gen_concat_i32_i64(cpu_V0, cpu_T[0], cpu_T[1]); |
|
1454 | 1451 |
iwmmxt_store_reg(cpu_V0, rn); |
1455 | 1452 |
} |
1456 | 1453 |
|
... | ... | |
4663 | 4660 |
} else { |
4664 | 4661 |
tmp = neon_load_reg(rm + pass, 0); |
4665 | 4662 |
gen_neon_shift_narrow(size, tmp, tmp2, q, u); |
4666 |
tcg_gen_extu_i32_i64(cpu_V0, tmp); |
|
4663 |
tmp3 = neon_load_reg(rm + pass, 1); |
|
4664 |
gen_neon_shift_narrow(size, tmp3, tmp2, q, u); |
|
4665 |
tcg_gen_concat_i32_i64(cpu_V0, tmp, tmp3); |
|
4667 | 4666 |
dead_tmp(tmp); |
4668 |
tmp = neon_load_reg(rm + pass, 1); |
|
4669 |
gen_neon_shift_narrow(size, tmp, tmp2, q, u); |
|
4670 |
tcg_gen_extu_i32_i64(cpu_V1, tmp); |
|
4671 |
dead_tmp(tmp); |
|
4672 |
tcg_gen_shli_i64(cpu_V1, cpu_V1, 32); |
|
4673 |
tcg_gen_or_i64(cpu_V0, cpu_V0, cpu_V1); |
|
4667 |
dead_tmp(tmp3); |
|
4674 | 4668 |
} |
4675 | 4669 |
tmp = new_tmp(); |
4676 | 4670 |
if (op == 8 && !u) { |
... | ... | |
5600 | 5594 |
TCGv tmp; |
5601 | 5595 |
TCGv tmp2; |
5602 | 5596 |
|
5603 |
/* Load 64-bit value rd:rn. */
|
|
5597 |
/* Load value and extend to 64 bits. */
|
|
5604 | 5598 |
tmp = tcg_temp_new(TCG_TYPE_I64); |
5605 | 5599 |
tmp2 = load_reg(s, rlow); |
5606 | 5600 |
tcg_gen_extu_i32_i64(tmp, tmp2); |
... | ... | |
5612 | 5606 |
static void gen_addq(DisasContext *s, TCGv val, int rlow, int rhigh) |
5613 | 5607 |
{ |
5614 | 5608 |
TCGv tmp; |
5615 |
TCGv tmp2; |
|
5609 |
TCGv tmpl; |
|
5610 |
TCGv tmph; |
|
5616 | 5611 |
|
5617 | 5612 |
/* Load 64-bit value rd:rn. */ |
5613 |
tmpl = load_reg(s, rlow); |
|
5614 |
tmph = load_reg(s, rhigh); |
|
5618 | 5615 |
tmp = tcg_temp_new(TCG_TYPE_I64); |
5619 |
tmp2 = load_reg(s, rhigh); |
|
5620 |
tcg_gen_extu_i32_i64(tmp, tmp2); |
|
5621 |
dead_tmp(tmp2); |
|
5622 |
tcg_gen_shli_i64(tmp, tmp, 32); |
|
5623 |
tcg_gen_add_i64(val, val, tmp); |
|
5624 |
|
|
5625 |
tmp2 = load_reg(s, rlow); |
|
5626 |
tcg_gen_extu_i32_i64(tmp, tmp2); |
|
5627 |
dead_tmp(tmp2); |
|
5616 |
tcg_gen_concat_i32_i64(tmp, tmpl, tmph); |
|
5617 |
dead_tmp(tmpl); |
|
5618 |
dead_tmp(tmph); |
|
5628 | 5619 |
tcg_gen_add_i64(val, val, tmp); |
5629 | 5620 |
} |
5630 | 5621 |
|
Also available in: Unified diff