NZCV, Condition Flags

The NZCV characteristics are:

Purpose

Allows access to the condition flags.

Configuration

Attributes

NZCV is a 64-bit register.

Field descriptions

The NZCV bit assignments are:

6362616059585756555453525150494847464544434241403938373635343332
00000000000000000000000000000000
NZCV0000000000000000000000000000
313029282726252423222120191817161514131211109876543210

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 the NZCV

Accesses to this register use the following encodings:

MRS <Xt>, NZCV

op0CRnop1op2CRm
0b110b01000b0110b0000b0010

if PSTATE.EL == EL0 then return Zeros(32):PSTATE.<N,Z,C,V>:Zeros(28); elsif PSTATE.EL == EL1 then return Zeros(32):PSTATE.<N,Z,C,V>:Zeros(28); elsif PSTATE.EL == EL2 then return Zeros(32):PSTATE.<N,Z,C,V>:Zeros(28); elsif PSTATE.EL == EL3 then return Zeros(32):PSTATE.<N,Z,C,V>:Zeros(28);

MSR NZCV, <Xt>

op0CRnop1op2CRm
0b110b01000b0110b0000b0010

if PSTATE.EL == EL0 then PSTATE.<N,Z,C,V> = X[t]<31:28>; elsif PSTATE.EL == EL1 then PSTATE.<N,Z,C,V> = X[t]<31:28>; elsif PSTATE.EL == EL2 then PSTATE.<N,Z,C,V> = X[t]<31:28>; elsif PSTATE.EL == EL3 then PSTATE.<N,Z,C,V> = X[t]<31:28>;




13/12/2018 16:42; 6379d01c197f1d40720d32d0f84c419c9187c009

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