6.6.8.7.1 NaN Propagation Operand Detection
For instructions that generate a result, special propagation rules apply when one or both source operands are NaN values, such that sNaNs can be successfully used as “tracer” values. Should a NaN be deemed as propagated, then it will replace the operation result.
With reference to NaN Propagation, all instructions will examine the operands for NaN values during the RD-stage:
- Two operand instructions:
If one or both operands are NaN values, the RD-stage will apply a propagation priority as shown in Table 6-38.
- Three operand FMAC
instruction:
The source operands are examined in the RD-stage as usual but in conjunction with the selected intermediate result, and any NaN values detected are propagated as shown in Table 6-39.
- Three operand FFLIM
instruction:
If one or both limit operands are NaN values, the RD-stage will apply a propagation priority as shown in Table 6-37. If the FFLIM input value is a NaN, the limit values are ignored and the input NaN value is propagated (quieted if an sNaN).
In all cases, if a NaN is to be propagated, the corresponding NaN value is entered as the operand value in the Instruction/Hazard Tracker FIFO entry for that instruction. The instruction FIFO entry also sets a flag to indicate that NaN propagation is enabled.