NaN Propagation

The FPU macro supports NaN (payload) propagation to facilitate code debugging. After the CPU issues an instruction to the FPU, the source operands are examined and a NaN value detected, compared, and then propagated. Two operand instructions propagate NaN values as shown in Table 6-38.

The FMAC instruction is a special case with respect to NaN propagation as it consists of essentially three operands consisting of the two source operands (for the multiply) and a prior FMAC result value (i.e, the intermediate used for the accumulate function). The source operands are examined as usual but in conjunction with the selected intermediate result, and any NaN values detected are propagated as defined by Table 6-38.

FFLIM is also a three-operand instruction, though it is ultimately either a two-operand maximum or minimum operation based on the value of the source operand. NaN values detected are propagated as defined by Table 6-37.

Table 6-38. NaN Propagation Priority
Source OperandsResultConditionNotes
FbFs
FPNsNaNQuieted sNaNINVAL signaled
FPNqNaNqNaN-
sNaNFPNQuieted sNaNINVAL signaled
qNaNFPNqNaN-
qNaN1qNaN2qNaN1qNaN1 ≥qNaN2-
qNaN2qNaN2 > qNaN1-
sNaNqNaNqNaNINVAL signaled
qNaNsNaNqNaNINVAL signaled
sNaN1sNaN2Quieted sNaN1sNaN1 ≥ sNaN2INVAL signaled
Quieted sNaN2sNaN2 > sNaN1