This is a collection of Intel®’ IA32® Software Developer's Manuals (URL of the day) and AMD' AMD64 Architecture Programmer's Manual together with the related specifications, application notes, white papers, and change logs. The collection aims to keep all available revisions. It was originally created by Michal Necasek, see OS/2 Museum.

If you have a public document, related to the IA32® specifications and missing from the collection, please mail it to me. The content of this URL and all sub-ULRs is available for convenient bulk download by rsync x86docs password "" (empty).

NZCV

NZCV, Condition Flags

The NZCV characteristics are:

Purpose

Allows access to the condition flags.

Configuration

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

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.

Accessing NZCV

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

op0op1CRnCRmop2
0b110b0110b01000b00100b000

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>

op0op1CRnCRmop2
0b110b0110b01000b00100b000

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;


2026-03-26 20:27:25, 2026-03_rel

Copyright © 2010-2026 Arm Limited or its affiliates. All rights reserved. This document is Non-Confidential.