3.5.5. CMP and CMN

Compare and Compare Negative.

Syntax

CMP{cond} Rn, Operand2
CMN{cond} Rn, Operand2

Where:

cond

Is an optional condition code. See Conditional execution.

Rn

Is the register holding the first operand.

Operand2

Is a flexible second operand. See Flexible second operand for details of the options.

Operation

These instructions compare the value in a register with Operand2. They update the condition flags on the result, but do not write the result to a register.

The CMP instruction subtracts the value of Operand2 from the value in Rn. This is the same as a SUBS instruction, except that the result is discarded.

The CMN instruction adds the value of Operand2 to the value in Rn. This is the same as an ADDS instruction, except that the result is discarded.

Restrictions

In these instructions:

  • Do not use PC.

  • Operand2 must not be SP.

Condition flags

These instructions update the N, Z, C and V flags according to the result.

Examples

    CMP     R2, R9
    CMN     R0, #6400
    CMPGT   SP, R7, LSL #2
Copyright © 2015, 2018 Arm. All rights reserved.ARM DUI 0646C
Non-ConfidentialID121118