CMP (immediate)

Compare (immediate)

This instruction subtracts an optionally-shifted immediate value from a register value. It updates the condition flags based on the result, and discards the result.

Encoding: Setting the condition flags

313029282726252423222120191817161514131211109876543210
1110001011111
sfopSshimm12RnRd

32-bit (sf == 0)

CMP <Wn|WSP>, #<imm>{, <shift>}

Equivalent to: SUBS WZR, <Wn|WSP>, #<imm>{, <shift>}

64-bit (sf == 1)

CMP <Xn|SP>, #<imm>{, <shift>}

Equivalent to: SUBS XZR, <Xn|SP>, #<imm>{, <shift>}

Explanations

<Wn|WSP>: Is the 32-bit name of the source general-purpose register or stack pointer, encoded in the "Rn" field.
<imm>: Is an unsigned immediate, in the range 0 to 4095, encoded in the "imm12" field.
<shift>: <Xn|SP>: Is the 64-bit name of the source general-purpose register or stack pointer, encoded in the "Rn" field.

Operational Notes

If PSTATE.DIT is 1: