ccmn
Conditional Compare Negative (Immediate)
CCMN <Wn>, #<imm>, #<nzcv>, <cond>
Compares register with negative immediate if condition is true.
Pseudocode Operation
if ConditionHolds(cond) then temp ← Wn + imm5; N ← temp[31]; Z ← (temp == 0); C ← UnsignedOverflow(Wn, imm5); V ← SignedOverflow(Wn, imm5) else N ← nzcv[3]; Z ← nzcv[2]; C ← nzcv[1]; V ← nzcv[0]
Example
CCMN w1, #16, #nzcv, cond
Reference
View in Arm A64 ISA Reference ↗
Arm A64 ISA
Instruction Forms
| Encoding | Instruction | ISA | Bit pattern | ||
|---|---|---|---|---|---|
| 0x3A400800 | CCMN <Wn>, #<imm>, #<nzcv>, <cond> | A64 | 0 | 0 | 1 | 11010010 | imm5 | cond | 1 | 0 | Rn | 0 | nzcv | ||
| 0xBA400800 | CCMN <Xn>, #<imm>, #<nzcv>, <cond> | A64 | 1 | 0 | 1 | 11010010 | imm5 | cond | 1 | 0 | Rn | 0 | nzcv | ||
| 0x3A400000 | CCMN <Wn>, <Wm>, #<nzcv>, <cond> | A64 | 0 | 0 | 1 | 11010010 | Rm | cond | 0 | 0 | Rn | 0 | nzcv | ||
| 0xBA400000 | CCMN <Xn>, <Xm>, #<nzcv>, <cond> | A64 | 1 | 0 | 1 | 11010010 | Rm | cond | 0 | 0 | Rn | 0 | nzcv |
Description
Conditional Compare Negative (immediate) sets the value of the condition flags to the result of the comparison of a register value and a negated immediate value if the condition is TRUE, and an immediate value otherwise.
Operation
if ConditionHolds(cond) then
bits(datasize) operand1 = X[n, datasize];
(-, flags) = AddWithCarry(operand1, imm, '0');
PSTATE.<N,Z,C,V> = flags;