The precise meanings of the condition code flags differ depending on whether the flags were set by a floating-point operation or by an ARM data processing instruction. This is because:
floating-point values are never unsigned, so the unsigned conditions are not required
Not-a-Number (NaN) values have no ordering relationship with numbers or with each other, so additional conditions are required to account for unordered results.
The only VFP instruction that can be used to update the status
VCMP. Other VFP or NEON instruction cannot
modify the condition code flags.
VCMP instruction does not update the flags
in the APSR directly, but updates a separate set of flags in the
FPSCR. To use these flags to control conditional instructions, including conditional
VFP instructions, you must first copy them into the APSR using a
VMRS APSR_nzcv, FPSCR
The meanings of the condition code mnemonics are shown in Table 18.
|Mnemonic||Meaning after ARM data processing instruction||Meaning after VFP VCMP instruction|
|Not equal||Not equal, or unordered|
|Carry set||Greater than or equal, or unordered|
|Unsigned higher or same||Greater than or equal, or unordered|
|Carry clear||Less than|
|Unsigned lower||Less than|
|Positive or zero||Greater than or equal, or unordered|
|Overflow||Unordered (at least one NaN operand)|
|No overflow||Not unordered|
|Unsigned higher||Greater than, or unordered|
|Unsigned lower or same||Less than or equal|
|Signed greater than or equal||Greater than or equal|
|Signed less than||Less than, or unordered|
|Signed greater than||Greater than|
|Signed less than or equal||Less than or equal, or unordered|
|Always (normally omitted)||Always (normally omitted)|
The type of the instruction that last updated the flags in the APSR determines the meaning of condition codes.