Instruction
POPP
Pops a 64-bit register with APX's push-pop acceleration hint, marking it as the partner of an earlier PUSHP.
- Extensions
- Forms
- 1 (1 Legacy)
- Data
- Intel XED v2026.08.23
POPP is POP of a 64-bit register with a hint: the value it reads was written by a matching PUSHP. It does what POP does, loading the register from the top of the stack and raising RSP by 8, and changes no flag. Where the two are correctly paired, an APX processor can forward the value from the push without going through memory or relying on its store-forwarding predictor.
It is opcode 58+r under a REX2 prefix with W set, so it takes REX2 even for a register plain POP encodes in one byte, and it has no 16-bit form; the PUSHP page covers the encoding and the rule that both halves must be marked. POPP has the same exceptions as POP, plus #UD without APX. As with PUSHP, a hint that breaks the rule cannot change the result, only lose the speed-up. The POP form with a memory operand has no hinted version.
In our builds at -O2 with -mapxf, GCC 14 and Clang 23 restore saved
registers in the epilogue with POPP and POP2P, mirroring
the prologue’s PUSHP and PUSH2P: popp rbx, pop2p,
pop2p, popp r15 in GCC’s function that saved six registers.
Forms
| Instruction | Encoding | Requires |
|---|---|---|
POPP r64
POPP_GPR64 | REX2.W1 58+r | APX_F |
Operation
What the forms do, in pseudocode that our tests run against results recorded on real processors. How to read.
v = load(rsp, 64) # POP with the hint that a PUSHP pushed
rsp = rsp + 8 # what it pops (APX's PPX)
dest.write(v)Not run on a processor: none of these processors has APX.
Operands
| Operand | Kind | Action |
|---|---|---|
POPP r64 | ||
r64 | explicit | write |
stack | implicit | read |
rSP | implicit | read, write |
Flags
None: XED records no flag that the forms test or change.
CPUID and processors
Each form belongs to an XED ISA set. A form can be used when the processor reports every CPUID bit of one of its ISA set's alternatives.
| ISA set | CPUID | Processors |
|---|---|---|
APX_F | APX_F | Nova Lake, Diamond Rapids |
More APX instructions
Sources
- Intel XED v2026.08.23 (commit
0bcb6237345c): forms, encodings, operands, flags, exception classes, attributes, ISA sets, CPUID bits and chip model. - Intel Advanced Performance Extensions (Intel APX) Architecture Specification, revision 9.0 (355828-009, August 2026)
The tables are derived from Intel XED, Copyright Intel Corporation, licensed under the Apache License 2.0; x86-64.net converted and reformatted them. The text is our own.