| FLOT $X,$Z | FLOT $X,Z |
| FLOTU $X,$Z | FLOTU $X,Z |
| FIX $X,$Z | FIXU $X,$Z |
Specification:
| FLOT: | f($X) | ← s($Z) |
| FLOTU: | f($X) | ← u($Z) |
| FIX: | s($X) | ← int(f($Z)) |
| FIXU: | u($X) | ← (int(f($Z)))mod264 |
Timing:
4υ
Description:
Converts numbers from integer representation to floating point representation and vice versa. An optional Y-Operand can be used to specify one of the following rounding modes: ROUND_OFF, ROUND_UP, ROUND_DOWN, or ROUND_NEAR.
| FLOT: | "convert fixed to floating". The integer in $Z or the immediate constant Z is converted to the nearest floating point value (using the current rounding mode) and placed in register $X. A floating inexact exception occurs if rounding is necessary. |
| FLOTU: | "convert fixed to floating unsigned". FLOTU is like FLOT, but $Z is treated as an unsigned integer. |
| FIX: | "convert floating to fixed". The floating point number in register $Z is converted to an integer as with the FINT instruction, and the resulting integer (mod 264) is placed in register $X. An invalid exception occurs if $Z is infinite or a NaN; in that case $X is simply set equal to $Z. A float-to-fix exception occurs if the result is less than −264 or greater than 264 - 1. |
| FIXU: | "convert floating to fixed unsigned". This instruction is identical to FIX except that no float-to-fix exception occurs. |