CMOVNZ
/ CMOVNEMove if not equal / nonzero
Test ZF = 0; select the source when true; otherwise retain the old value within the operand width.
| Form | Bits | Requires | Encoding |
|---|---|---|---|
CMOVNZ r32_dst, r32_src | 32 | CMOV | 0F 45 /r |
CMOVNZ r64_dst, r64_src | 64 | CMOV | REX.W + 0F 45 /r |
Operation#
Pseudo-C · selected form
dst = (ZF = 0) ? src : old_dst
R64[63:32] = 0Exact upstream semantics
Standard variant
let result := if Condition_Holds(cond) then src2 else src1;What to watch for
- Both data operands are registers in this selection. No memory access occurs.
Architectural details#
- Flags
- Reads ZF = 0; leaves RFLAGS unchanged.
- Destination
- Writes the low 32 bits and clears the corresponding 64-bit register’s upper half. The 32-bit form clears the upper half even when the condition is false.
- Encoding
0F 45 /r- Operands
r32_dstread / write · 32 bitsr32_srcread · 32 bits
- Coverage
- Selected register destinations only; memory and 16-bit conditional-move forms are outside this selection.
- Conditions
not equal / nonzero: ZF = 0
Exception information & execution requirements
#UD
Imported exceptions are checks exposed by this XML form; memory, stack, instruction-fetch and called architectural helpers can introduce additional faults.
Feature availability alone does not guarantee execution: OS state and execution-level controls also apply. Use the linked architecture documentation for the full exception conditions.
Sources & provenance#
Technical fields are imported from pinned upstream files. Explanations and explorer behavior are maintained separately.
Intel · CMOVcc-Conditional-Move.xml
- Revision
4ebe7f0ac1bd00f46244c49bb72c503ce368def7- SHA-256
86f9029859c9dd03c872d527ca1c152a1acf3c497e41e9e7c27168981b103802- Terms
- Intel SDM terms; see License.md