+2006-05-15 Chao-ying Fu <fu@mips.com>
+
+ * dsp.igen (do_ph_shift, do_w_shra): Fix bugs for rounding instructions.
+
2006-04-18 Nick Clifton <nickc@redhat.com>
* dv-tx3904tmr.c (deliver_tx3904tmr_tick): Add missing break
}
else // right
{
- if (sat == 1 && shift != 0)
- h0 += (1 << (shift - 1));
- h0 = h0 >> shift;
+ if (sat == 1 && shift != 0 && (h0 & (1 << (shift-1))))
+ h0 = (h0 >> shift) + 1;
+ else
+ h0 = h0 >> shift;
}
result |= ((unsigned32)((unsigned16)h0) << i);
{
unsigned32 result = GPR[rt];
signed32 h0 = (signed32)result;
- if (shift != 0)
- h0 += (1 << (shift - 1));
- h0 = h0 >> shift;
+ if (shift != 0 && (h0 & (1 << (shift-1))))
+ h0 = (h0 >> shift) + 1;
+ else
+ h0 = h0 >> shift;
GPR[rd] = EXTEND32 (h0);
}