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