cneg

Conditional Negate

CNEG <Wd>, <Wn>, <cond>

Negate register if condition is true, else copy. (Alias for CSNEG)

Details

Conditionally negates the source register and writes the result to the destination, or copies the source unchanged based on the condition code. This is an alias for CSNEG (Conditional Select Negate). Condition flags are not affected by this instruction. Executes in AArch64 state only.

Pseudocode Operation

if ConditionHolds(cond) then
  Wd ← -Wn
else
  Wd ← Wn

Example

CNEG w0, w1, cond

Encoding

Binary Layout
0
1
0
11010100
Rm
cond
0
1
Rn
Rd
 
Format Cond Select
Opcode 0x5A800400
Extension Base

Operands

  • Wd
    Destination 32-bit integer register
  • Wn
    First source / base 32-bit integer register
  • cond
    Condition

Reference (Arm A64 ISA)

Instruction Forms

Encoding Instruction ISA Bit pattern
0x5A800400 CNEG <Wd>, <Wn>, <invcond> A64 0 | 1 | 0 | 11010100 | Rm | cond | 0 | 1 | Rn | Rd
0xDA800400 CNEG <Xd>, <Xn>, <invcond> A64 1 | 1 | 0 | 11010100 | Rm | cond | 0 | 1 | Rn | Rd

Description

Conditional Negate returns, in the destination register, the negated value of the source register if the condition is TRUE, and otherwise returns the value of the source register.