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

WRMSRLIST writes up to 64 model-specific registers from memory in one instruction, where WRMSR writes one from EDX:EAX. It takes the tables and mask of RDMSRLIST: RSI points to 8-byte MSR numbers, RDI to 8-byte values, both tables 8-byte aligned, and bit n of RCX selects entry n of each, bit 0 first. Every write is checked as WRMSR checks it: the MSR must exist, no reserved bit may be set and an address must be canonical. A failure raises #GP(0) with the bits of the entries already written clear in RCX, as an interrupt leaves them, so that running the instruction again goes on from there. It needs CPL 0 and 64-bit mode; its encoding is F3 0F 01 C6.

In order, not serializing

Unlike RDMSRLIST’s reads, the writes happen in the table’s order, each with its side effects in place before the next. What WRMSRLIST leaves out is serialization, as WRMSRNS does: earlier stores need not have drained when it ends. Instructions before it still use the old values and those after it the new ones, and an MSR whose write by WRMSR flushes the TLBs, an MTRR for one, flushes them here too. Code that used WRMSR as a barrier adds SERIALIZE, which the SDM also suggests ahead of a change to the controls of performance-monitoring events that count stores as they drain to memory.

The processor may also read the tables ahead. It can fault on an entry past the last one written, and its loads from the tables may still use a memory type or TLB entry that an earlier entry has changed, through an MTRR or a TLB flush.

Guests and our builds

In a VMX guest WRMSRLIST raises #UD unless the tertiary control “enable MSR-list instructions” is set. With MSR bitmaps, a write that they intercept exits after its value has been read, with that entry’s bit still set in RCX and the value in the VMCS’s MSR-data field for the hypervisor; without bitmaps, every WRMSRLIST exits. GCC 14.2.0 and Clang 23.1.2 have no intrinsic for it, though both assemblers encode the mnemonic. The probe runs at CPL 3, and the Zen 5 guest behind its recorded cases lacks MSRLIST, CPUID.(EAX=07H,ECX=1):EAX[27], so it ran no case; AMD’s manuals do not describe the instruction.

Forms

Every encoding of WRMSRLIST that Intel XED knows, one row per XED instruction form (iform). How to read the notation.
InstructionEncodingRequires
WRMSRLIST 64-bit mode only WRMSRLISTF3 0F 01 C6MSRLIST

Operation

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

if CPL > 0:
    fault(GP, 0)
if rsi & 7 or rdi & 7:
    fault(GP, 0)                 # both tables 8-byte aligned
for i in range(64):              # entry i of each table where bit i
    if rcx >> i & 1:             # of RCX is set, from bit 0 up
        e = load(rsi + 8 * i, 64)
        v = load(rdi + 8 * i, 64)
        if e >> 32 or not msr_allows(e, v):
            fault(GP, 0)         # as WRMSR's checks
        msr[e] = v               # in order: the effects of one write
                                 # come before the next
rcx = 0
# each bit of RCX clears as its MSR is written: an interrupt or a
# fault leaves RIP at the instruction and RCX with the bits of the
# entries done clear, so that it goes on where it stopped; this
# block shows a fault ending it with RCX as it was. Not serializing

Not run on a processor: the Zen 5 guest that ran the probe does not report MSRLIST in CPUID.

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
WRMSRLIST 64-bit mode only
RSIimplicitread
RDIimplicitread
RCXimplicitread, write

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
privileged: CPL 0 only; 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.

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
MSRLIST

MSRLIST
CPUID.(EAX=07H,ECX=1):EAX[27] MSRLIST

Panther Lake, Nova Lake, Diamond Rapids, Sierra Forest, Clearwater Forest

More MSRLIST 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. Intel 64 and IA-32 Architectures Software Developer's Manual, Volume 2 (325383-093, September 2026): Volume 2D, page 6-10 (WRMSRLIST)
  3. Intel 64 and IA-32 Architectures Software Developer's Manual, Volume 3 (325384-093, September 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.