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.