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