Instruction
PAUSE
Tells the processor it is in a spin-wait loop, which avoids a penalty on leaving the loop and saves power; a NOP before the Pentium 4.
- Extensions
- Forms
- 1 (1 Legacy)
- Data
- Intel XED v2026.08.23
PAUSE belongs in the body of a spin-wait loop: the loop that rereads a lock word or a flag until another thread changes it. The usual shape is to try the atomic operation (a LOCK CMPXCHG or XCHG), and while it fails, spin on plain loads with a PAUSE in each iteration until the lock looks free, then try again. The PAUSE gives the core’s resources to the other hardware thread, saves power and makes the loop leave faster when the value changes.
Its encoding, F3 90, is NOP with a REP prefix, so it needs no CPUID
check: processors that predate it run it as a NOP. GCC 14 even prints
it as rep nop, where Clang 23 prints pause.
How long one PAUSE waits differs widely, by the vendors’ optimization manuals:
- about 10 cycles on Intel’s cores before Skylake, and up to 140 on the Skylake client cores;
- about 64 cycles, during which the thread dispatches nothing, on Zen 5.
A loop that waits a fixed number of PAUSEs can therefore wait more than ten times longer on one processor than on another. Intel’s optimization manual suggests bounding the wait by time read with RDTSC instead, and, for a contended lock, doubling the number of PAUSEs after each failed attempt up to a limit. For waits of thousands of cycles or more, it advises giving the processor back to the operating system, through a futex on Linux, rather than spinning.
Under virtualization a spinning guest may wait for a virtual processor that is not running at all. Intel’s VMX can exit to the hypervisor when a guest keeps executing PAUSE in a loop (PAUSE-loop exiting), and AMD’s SVM after a set number of PAUSEs (pause filtering); the hypervisor can then run another virtual processor instead.
To wait without spinning, see UMWAIT and TPAUSE on Intel’s processors and MWAITX on AMD’s.
In the optimization guide
What the optimization guide says about PAUSE, a line per claim. Each links to the claim in the guide, with its sources and where they differ.
Branches
- The cost of a misprediction: A tight spin-wait loop ends in a flush of its own: its loads run ahead of the store that releases it, and the processor must discard them to keep memory order.
Memory
- Sharing between cores: A contended lock is best taken by spinning on a plain load with PAUSE and trying
cmpxchgonly when it looks free, with backoff.
Crestmont and Gracemont
- Hybrid processors: Intel advises against pinning threads to cores and for waiting with UMWAIT, TPAUSE or PAUSE. sources differ
Golden Cove and Raptor Cove
- Threads and hybrid parts: On Alder Lake and Raptor Lake, Thread Director tells the operating system how each thread would fare on either kind of core. sources differ
Silvermont to Goldmont Plus
- Out-of-order and in-order execution: From Goldmont on,
pausewaits about as long as on Skylake, to save power in spin loops; see Skylake for what that means for code that spins.
Skylake to Cooper Lake
- Threads: PAUSE takes up to about 140 cycles, against about 10 on earlier cores, to leave the core to the sibling thread and save power. sources differ
Zen 3
- Two threads on a core: PAUSE stops the thread’s dispatch for about 64 cycles, which saves power and leaves resources to the other thread while a spin loop waits.
Zen 4
- Two threads on a core: PAUSE stops the thread’s dispatch for about 64 cycles, which saves power and leaves resources to the other thread while a spin loop waits.
Zen 5
- Two threads on a core: PAUSE stops the thread’s dispatch for about 64 cycles, which saves power and leaves resources to the other thread while a spin loop waits.
Forms
| Instruction | Encoding | Requires |
|---|---|---|
PAUSE
PAUSE | F3 90 | Base instruction set |
Latency and throughput
| Model | PAUSE |
|---|---|
| Sandy Bridge | 4 / 1.33p015 |
| Haswell, Broadwell | 5 / 1.25p0156 |
| Skylake | 4 / 1p0156 |
| Skylake-SP, Ice Lake | 140 / 1p0156 |
| Alder Lake | 4 / 1p056 |
| Sapphire Rapids | 140 / 1p056 |
| Lunar Lake | 1 / 0 |
| Bonnell | 17 / 8.5p01 |
| Silvermont | 1 / 0.5 |
| Piledriver | 1 / 1EX0 EX1 |
| Zen, Zen 2 | 100 / 0.25 |
| Zen 3, Zen 4 | 0 / 0.25ALU0 ALU1 ALU2 ALU3 |
| Jaguar | 1 / 0.5ALU0 ALU1 |
Operation
What the forms do, in pseudocode that our tests run against results recorded on real processors. How to read.
pass # a hint that the code spins, waiting
# for a value that another processor
# writes: the processor waits a short
# while, which differs between models,
# and leaves the loop sooner when the
# value changes; nothing else happens
# F3 90 is NOP with a REP prefix, which older processors run as NOPRun on AMD Zen 5 (EPYC 9645): 3 cases.
Operands
None: XED lists no operands for this form.
Flags
None: XED records no flag that the forms test or change.
Attributes
What else XED records about the forms. How to read.
- All forms
- may abort a TSX transaction
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 |
|---|---|---|
PAUSE | No CPUID bit: part of the base instruction set. | Every x86-64 processor in XED’s model and Zen 3 to Zen 6 |
More General-purpose instructions
Sources
- Intel XED v2026.08.23 (commit
0bcb6237345c): forms, encodings, operands, flags, exception classes, attributes, ISA sets, CPUID bits and chip model. - The CPU data of x86-64.net: Zen 3 to Zen 6, from GCC’s
-marchfeature sets and AMD’s Processor Programming References, which the page of each processor cites. - LLVM 23.1.2's x86 scheduling models (commit
85ac56026243): the latency, reciprocal throughput and ports of each form, as llvm-mca reports them. - Intel 64 and IA-32 Architectures Software Developer's Manual, Volume 2 (325383-093, September 2026): Volume 2B, page 4-226 (PAUSE)
- Intel 64 and IA-32 Architectures Software Developer's Manual, Volume 3 (325384-093, September 2026)
- AMD64 Architecture Programmer's Manual, Volume 2: System Programming (24593, rev. 3.46, October 2026)
- AMD64 Architecture Programmer's Manual, Volume 3: General-Purpose and System Instructions (24594, rev. 3.39, October 2026)
- Intel 64 and IA-32 Architectures Optimization Reference Manual, Volume 1 (248966-051, October 2026)
- Software Optimization Guide for the AMD Zen5 Microarchitecture (58455, rev. 1.00, August 2024), Wayback Machine copy of AMD's ZIP
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 timings come from LLVM's scheduling models, part of the LLVM Project, licensed under the Apache License 2.0 with LLVM Exceptions. The text is our own.