Revision 19e6c50d target-mips/dsp_helper.c

b/target-mips/dsp_helper.c
3814 3814

  
3815 3815
    rs5_0 = rs & 0x3F;
3816 3816
    rs5_0 = (int8_t)(rs5_0 << 2) >> 2;
3817
    rs5_0 = MIPSDSP_ABS(rs5_0);
3817

  
3818
    if (unlikely(rs5_0 == 0)) {
3819
        return;
3820
    }
3821

  
3818 3822
    acc   = (((uint64_t)env->active_tc.HI[ac] << 32) & MIPSDSP_LHI) |
3819 3823
            ((uint64_t)env->active_tc.LO[ac] & MIPSDSP_LLO);
3820
    if (rs5_0 == 0) {
3821
        temp = acc;
3824

  
3825
    if (rs5_0 > 0) {
3826
        temp = acc >> rs5_0;
3822 3827
    } else {
3823
        if (rs5_0 > 0) {
3824
            temp = acc >> rs5_0;
3825
        } else {
3826
            temp = acc << rs5_0;
3827
        }
3828
        temp = acc << -rs5_0;
3828 3829
    }
3829 3830

  
3830 3831
    env->active_tc.HI[ac] = (target_ulong)(int32_t)((temp & MIPSDSP_LHI) >> 32);

Also available in: Unified diff