← Home

NZCV

Condition Flags

Allows access to the condition flags.

Configuration

This register is present only when FEAT_AA64 is implemented. Otherwise, direct accesses to NZCV are UNDEFINED.

This register is a Special-purpose register.

Attributes

NZCV is a 64-bit register.

Field descriptions

6362616059585756555453525150494847464544434241403938373635343332
313029282726252423222120191817161514131211109876543210
RES0
NZCVRES0

Bits [63:32]:

Reserved, RES0.

N, bit [31]:

Negative condition flag. Set to 1 if the result of the last flag-setting instruction was negative.

Z, bit [30]:

Zero condition flag. Set to 1 if the result of the last flag-setting instruction was zero, and to 0 otherwise. A result of zero often indicates an equal result from a comparison.

C, bit [29]:

Carry condition flag. Set to 1 if the last flag-setting instruction resulted in a carry condition, for example an unsigned overflow on an addition.

V, bit [28]:

Overflow condition flag. Set to 1 if the last flag-setting instruction resulted in an overflow condition, for example a signed overflow on an addition.

Bits [27:0]:

Reserved, RES0.

Access Instructions

The MSR (register) and MRS instructions used to access NZCV are data-independent-time instructions as described in About PSTATE.DIT.

Accesses to this register use the following encodings in the System register encoding space:

MRS <Xt>, NZCV

(op0 = 0b11, op1 = 0b011, CRn = 0b0100, CRm = 0b0010, op2 = 0b000)

if !IsFeatureImplemented(FEAT_AA64) then Undefined(); elsif PSTATE.EL == EL0 then X{64}(t) = Zeros{32} :: PSTATE.[N,Z,C,V] :: Zeros{28}; elsif PSTATE.EL == EL1 then X{64}(t) = Zeros{32} :: PSTATE.[N,Z,C,V] :: Zeros{28}; elsif PSTATE.EL == EL2 then X{64}(t) = Zeros{32} :: PSTATE.[N,Z,C,V] :: Zeros{28}; elsif PSTATE.EL == EL3 then X{64}(t) = Zeros{32} :: PSTATE.[N,Z,C,V] :: Zeros{28}; end;

MSR NZCV, <Xt>

(op0 = 0b11, op1 = 0b011, CRn = 0b0100, CRm = 0b0010, op2 = 0b000)

if !IsFeatureImplemented(FEAT_AA64) then Undefined(); elsif PSTATE.EL == EL0 then PSTATE.[N,Z,C,V] = X{64}(t)[31:28]; elsif PSTATE.EL == EL1 then PSTATE.[N,Z,C,V] = X{64}(t)[31:28]; elsif PSTATE.EL == EL2 then PSTATE.[N,Z,C,V] = X{64}(t)[31:28]; elsif PSTATE.EL == EL3 then PSTATE.[N,Z,C,V] = X{64}(t)[31:28]; end;


Version 2026.06 — Copyright © 2010-2026 Arm Limited or its affiliates.

This site is provided as a community resource and is NOT affiliated with nor endorsed by Arm Limited.