Extensions
Forms
1 (1 Legacy)
Data
Intel XED v2026.08.23

STD sets the direction flag, DF, bit 10 of RFLAGS, and changes no other flag. DF steers the string instructions: while it is set, MOVS, STOS, LODS, CMPS, SCAS, INS and OUTS step RSI and RDI down by the element size after each element instead of up. CLD clears it again. Zen 5 set bit 10 in each of its six recorded cases and left every other flag alone.

Copying backwards

The use for a downward string operation is a copy whose destination overlaps the source at a higher address, as in memmove: copied upward, the first elements written would overwrite source elements not yet read. With DF set, RSI and RDI start at the last element and the copy runs from the top. Intel’s optimization manual warns that this is much slower on its processors than an upward REP MOVS and suggests copying the overlapping tail first instead (Section 3.7.6.3).

Leaving it set

The System V and Microsoft x64 calling conventions require DF to be clear at every call and return (see the registers), and compiled code relies on it: GCC 14 copies a 512-byte struct with a REP MOVS and no CLD before it. Code that runs STD must therefore clear DF again before it calls a function, returns or lets any other code run. Neither GCC 14 nor Clang 23 emitted STD in our builds: an overlapping move became a call to memmove, or, in Clang for a fixed 64 bytes, four vector loads before four stores.

Cost

Intel’s optimization manual lists STD among the instructions that write part of the flags register (Section 3.5.2.5). The instruction table of AMD’s Zen 5 guide lists STD and CLD as microcoded, while STC and CLC are single macro-ops.

Forms

Every encoding of STD that Intel XED knows, one row per XED instruction form (iform). How to read the notation.
InstructionEncodingRequires
STD STDFDBase instruction set

Latency and throughput

What the scheduling models of LLVM 23.1.2 give for each form, not measurements: latency / reciprocal throughput in cycles, the ports under them. A row is a model, or models that agree; a dash, a form that its processors lack. Memory forms: latency from the address, ports without the load and store units. Which processors each model covers.
ModelSTD
Sandy Bridge1 / 0.33p015
Haswell, Broadwell, Skylake, Skylake-SP, Ice Lake6 / 1.5p0156
Alder Lake, Sapphire Rapids6 / 0.5p0 p1 p5 p6 p11
Lunar Lake6 / 0.33p012345
Bonnell21 / 10.5p01
Silvermont1 / 0.5IEC0 IEC1
Piledriver1 / 1EX0 EX1
Zen, Zen 2, Zen 3, Zen 41 / 0.25ALU0 ALU1 ALU2 ALU3
Jaguar1 / 0.5ALU0 ALU1

Operation

What the forms do, in pseudocode that our tests run against results recorded on real processors. How to read.

df = 1                           # string instructions step rSI and rDI down

Run on AMD Zen 5 (EPYC 9645): 6 cases.

Operands

What each form reads and writes, as Intel XED records it: the operands of its syntax, in order, and the implicit ones that the syntax does not name. How to read.
OperandKindAction
STD
RFLAGSimplicitwrite

Flags

1 set; blank: not affected. How to read.
DF
All forms
1

Attributes

What else XED records about the forms. How to read.

All forms
may abort a TSX transaction in some cases

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.

CPUID requirements and processors of the XED ISA sets above. Alternatives are separated by “or”; processors follow XED’s chip model, whose AMD processors end with Zen 2, and the CPU data of this site for Zen 3 to Zen 6.
ISA setCPUIDProcessors
I86

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

All 109 General-purpose instructions

Sources

  1. Intel XED v2026.08.23 (commit 0bcb6237345c): forms, encodings, operands, flags, exception classes, attributes, ISA sets, CPUID bits and chip model.
  2. The CPU data of x86-64.net: Zen 3 to Zen 6, from GCC’s -march feature sets and AMD’s Processor Programming References, which the page of each processor cites.
  3. LLVM 23.1.2's x86 scheduling models (commit 85ac56026243): the latency, reciprocal throughput and ports of each form, as llvm-mca reports them.
  4. Intel 64 and IA-32 Architectures Software Developer's Manual, Volume 2 (325383-093, September 2026): Volume 2B, page 4-673 (STD)
  5. AMD64 Architecture Programmer's Manual, Volume 3: General-Purpose and System Instructions (24594, rev. 3.39, October 2026)
  6. Intel 64 and IA-32 Architectures Optimization Reference Manual, Volume 1 (248966-051, October 2026)
  7. 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.