You copied the Doc URL to your clipboard.

Condition code meanings

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 flags is VCMP. Other VFP or NEON instruction cannot modify the condition code flags.

The 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 instruction:


The meanings of the condition code mnemonics are shown in Table 18.

Table 18. Condition codes
MnemonicMeaning after ARM data processing instructionMeaning after VFP VCMP instruction
NENot equalNot equal, or unordered
CSCarry setGreater than or equal, or unordered
HSUnsigned higher or sameGreater than or equal, or unordered
CCCarry clearLess than
LOUnsigned lowerLess than
MINegativeLess than
PLPositive or zeroGreater than or equal, or unordered
VSOverflowUnordered (at least one NaN operand)
VCNo overflowNot unordered
HIUnsigned higherGreater than, or unordered
LSUnsigned lower or sameLess than or equal
GESigned greater than or equalGreater than or equal
LTSigned less thanLess than, or unordered
GTSigned greater thanGreater than
LESigned less than or equalLess than or equal, or unordered
ALAlways (normally omitted)Always (normally omitted)


The type of the instruction that last updated the flags in the APSR determines the meaning of condition codes.