Revision 593f17e5 target-alpha/translate.c

b/target-alpha/translate.c
598 598
    gen_fp_exc_raise_ignore(rc, fn11, fn11 & QUAL_I ? 0 : float_flag_inexact);
599 599
}
600 600

  
601
static void gen_fcvtlq(int rb, int rc)
602
{
603
    if (unlikely(rc == 31)) {
604
        return;
605
    }
606
    if (unlikely(rb == 31)) {
607
        tcg_gen_movi_i64(cpu_fir[rc], 0);
608
    } else {
609
        TCGv tmp = tcg_temp_new();
610

  
611
        /* The arithmetic right shift here, plus the sign-extended mask below
612
           yields a sign-extended result without an explicit ext32s_i64.  */
613
        tcg_gen_sari_i64(tmp, cpu_fir[rb], 32);
614
        tcg_gen_shri_i64(cpu_fir[rc], cpu_fir[rb], 29);
615
        tcg_gen_andi_i64(tmp, tmp, (int32_t)0xc0000000);
616
        tcg_gen_andi_i64(cpu_fir[rc], cpu_fir[rc], 0x3fffffff);
617
        tcg_gen_or_i64(cpu_fir[rc], cpu_fir[rc], tmp);
618

  
619
        tcg_temp_free(tmp);
620
    }
621
}
622

  
601 623
static void gen_fcvtql(int rb, int rc)
602 624
{
603 625
    if (unlikely(rc == 31)) {
......
647 669
        tcg_temp_free(tmp);                             \
648 670
    }                                                   \
649 671
}
650
FARITH2(cvtlq)
651 672

  
652 673
/* ??? VAX instruction qualifiers ignored.  */
653 674
FARITH2(sqrtf)

Also available in: Unified diff