A method in a microprocessor of executing an FMA instruction having multiplier, multiplicand, and accumulator operands, each having a significand and an exponent, adding partial products of the multiplier and multiplicand and accumulating the accumulator operands with the partial products of the multiplier and multiplicand for a subset of input operand values in which the absolute value of accumulator operands is smaller than or nearly as small as the absolute value of the product of the multiplier and multiplicand, and for handling a special case in which the accumulator operand is denormal and a product of the multiplier and multiplicand operands would result in an underflow, the method comprising: determining an exponent difference between a sum of the multiplier and multiplicand operand exponents and the accumulator operand exponent; determining a number of leading zeroes in the accumulator operand significand; using a first circuit that employs 2's complement subtraction to generate a first exponent difference value that is a difference between the sum of the multiplier and multiplicand exponents and the accumulator exponent and using the first exponent difference value to control a right-shifter that right shifts the accumulator operand significand; using a second circuit that employs 1's complement subtraction to generate a second exponent difference value that is a difference between the sum of the multiplier and multiplicand exponents and the accumulator exponent and using the second exponent difference value to control a left-shifter that left shifts the accumulator operand significand; receiving at least a portion of second exponent difference value, inverting it, and feeding the inverter result to the left shifter; and if the accumulator operand is not denormal and the exponent difference value is positive and in a given numberspace, selecting the right-shifted accumulator operand significand to accumulate with the partial products; and if the accumulator operand is denormal and the exponent difference value is negative and the number of leading zeroes plus a nonnegative integer constant exceeds the exponent difference absolute value, selecting the left-shifted accumulator operand significand to accumulate with the partial products. determining an exponent difference between a sum of the multiplier and multiplicand operand exponents and the accumulator operand exponent; determining a number of leading zeroes in the accumulator operand significand; using a first circuit that employs 2's complement subtraction to generate a first exponent difference value that is a difference between the sum of the multiplier and multiplicand exponents and the accumulator exponent and using the first exponent difference value to control a right-shifter that right shifts the accumulator operand significand; using a second circuit that employs 1's complement subtraction to generate a second exponent difference value that is a difference between the sum of the multiplier and multiplicand exponents and the accumulator exponent and using the second exponent difference value to control a left-shifter that left shifts the accumulator operand significand; receiving at least a portion of second exponent difference value, inverting it, and feeding the inverter result to the left shifter; and if the accumulator operand is not denormal and the exponent difference value is positive and in a given numberspace, selecting the right-shifted accumulator operand significand to accumulate with the partial products; and if the accumulator operand is denormal and the exponent difference value is negative and the number of leading zeroes plus a nonnegative integer constant exceeds the exponent difference absolute value, selecting the left-shifted accumulator operand significand to accumulate with the partial products. <EOS>