Here's the situation. I am executing instruction FMSUB.S on mentioned in the title hardware. I am using operands values as such: 0xB3800000*0x00500000-0x80800000, with rounding to nearest-even. If I am correct GRS after this operation will be 0x5, therefore rounding happens and final result is a normal value of 0x00800000, but underflow flag is being set. Second try but this time with rounding towards +infinity(up). The same operation, the same result, however underflow flag this time is not being set. Inexact flag in both cases is being set. The same operation made with rounding to nearest-ties to max magnitude behaves the same way as nearest-even. Rounding -infinity with operands 0x33800000*0x00500000-0x00800000(changing signs basically) acts the same as +infinity with previous operands.
My question is, where does that difference in underflow flag come from ?
User contributions licensed under CC BY-SA 3.0