The MicroBlaze floating-point unit is based on the IEEE 754-1985 standard.
- Uses IEEE 754 single precision floating-point format, and double precision format with 64-bit MicroBlaze, including definitions for infinity, not-a-number (NaN), and zero
- Supports addition, subtraction, multiplication, division, comparison, conversion, and square root instructions
- Implements round-to-nearest mode
- Generates sticky status bits for: underflow, overflow, divide-by-zero and invalid operation
For improved performance, the following non-standard simplifications are made:
- Denormalized 1 operands are not supported. A hardware floating-point operation on a denormalized number returns a quiet NaN and sets the sticky denormalized operand error bit in FSR; see Floating-Point Status Register.
- A denormalized result is stored as a signed 0 with the underflow bit set in FSR. This method is commonly referred to as Flush-to-Zero (FTZ)
- An operation on a quiet NaN returns the fixed NaN: 0xFFC00000 for single precision or 0xFFF8000000000000 for double precision, rather than one of the NaN operands
- Overflow as a result of a floating-point operation always returns signed ∞.
Note:
- Numbers that are so close to 0, that they cannot be represented with full precision, that is, any number n that falls in the following ranges for single precision: (1.17549*10-38> n > 0), or (0 > n > -1.17549 * 10-38), and the following ranges for double precision: (5.562684646268*10-309> n > 0), or (0 > n > -5.562684646268 * 10-309)