A developer digging through Intel’s official documentation stumbled on something that shouldn’t exist: a fully documented CPU instruction called vfmaddrnd231pd that no assembler recognizes, no compiler supports, and no real processor can execute. The discovery, detailed in a blog post by developer purplesyringa, is a small but fascinating window into how documentation for one of the world’s most complex pieces of hardware can drift out of sync with reality.
What vfmaddrnd231pd is supposed to do
The instruction belongs to Intel’s FMA (Fused Multiply-Add) instruction set, a group of x86 instructions that combine a multiply and an add into a single operation, which is both faster and more numerically precise than doing the two steps separately. Normal FMA instructions follow a naming pattern like vfmadd231pd. The “rnd” inserted into vfmaddrnd231pd stands for rounding control, and according to the Intel Software Development Manual (SDM), this variant would let a program set the floating-point rounding mode for that single instruction, rather than relying on the processor’s global rounding setting.
That distinction matters more than it sounds. Changing the global rounding mode on x86 is a relatively slow operation, since it affects a control register that influences all subsequent floating-point math and can stall the pipeline. Per-instruction rounding control, by contrast, would let software switch rounding behavior on the fly with no performance penalty. Since FMA can be used to emulate plain addition, subtraction, and multiplication as well, having rounding control on FMA alone would effectively give programmers controllable rounding for general arithmetic without needing AVX-512, a newer and not universally supported instruction set that already offers this capability.
Why this would have been a big deal
Controllable rounding isn’t a niche feature. It’s essential for algorithms that need reproducible or specific numerical behavior, such as interval arithmetic, certain cryptographic routines, and numerical methods that detect or bound floating-point error. Currently, developers who need this either eat the cost of switching the global rounding mode or require AVX-512 hardware, which is not present in all consumer and server CPUs. A rounding-aware FMA instruction that worked on ordinary AVX2/FMA hardware would have made such algorithms significantly faster and more widely deployable.
The instruction that isn’t actually there
The trouble starts when you try to actually use it. The GNU assembler doesn’t recognize the mnemonic at all. The corresponding C/C++ compiler intrinsics that the SDM references, _mm_fmaddround_pd and _mm256_fmaddround_pd, are missing not just from open-source compilers like Clang but from Intel’s own ICC compiler as well. That alone is a strong signal that something is off, since Intel’s compiler would normally be the first place to support an Intel-documented instruction.
Attempting to hand-assemble the instruction’s machine code from the SDM’s own opcode tables turns up a further anomaly: the encoding references something called “DDS” inside the VEX prefix description. According to the blog post, this is the only place in the entire SDM where DDS appears, and a Stack Overflow answer cited in the piece indicates DDS was a documentation-only marker removed from later SDM editions, making its lone survival here especially odd.
The final, most direct piece of evidence came from actually running the instruction. On a Haswell-generation CPU that otherwise fully supports the FMA instruction set, executing the opcode triggers a #UD exception, the processor’s signal for “undefined instruction.” In other words, the hardware itself has no idea what this instruction is supposed to be.
A documentation fossil, not a typo
One detail ruled out a simple copy-paste error: unlike a typo, the SDM entry for vfmaddrnd231pd includes unique tables and pseudocode not duplicated from any other instruction. It was also the only rounding-control variant listed, even though other FMA instructions typically come in multiple forms covering packed/scalar and single/double precision data (pd/ps/sd/ss) and different operand orderings (132/213/231). A real, fully implemented feature would be expected to have that full family of variants; this one had exactly one entry and nothing else.
The investigation also found a telling timeline clue: the instruction is present in the 2024 edition of the SDM but is absent from the 2026 edition. That disappearance supports the author’s leading theory, offered explicitly as speculation rather than confirmed fact: Intel likely planned to ship a full set of rounding-controlled FMA instructions, ran into some problem late in development, pulled the feature from actual silicon, and then simply failed to fully scrub the leftover documentation before it shipped in the SDM. The blog post ends with an open call for anyone with Intel contacts to confirm what really happened.
What it means for developers
For practical purposes, the takeaway is straightforward: vfmaddrnd231pd does not work and should not be relied upon, on any hardware or toolchain. Developers chasing faster rounding-controlled arithmetic should continue using AVX-512 where available, or the existing global rounding-mode switch where it isn’t, rather than expecting this documented-but-phantom instruction to appear in a future microcode update or compiler release.
More broadly, the episode is a useful reminder that even vendor-authored technical manuals for mature, heavily scrutinized platforms like x86 can contain stale or inaccurate material. For anyone doing low-level systems programming, compiler development, or security research that depends on precise instruction behavior, it’s worth independently verifying unusual or rarely used opcodes against real hardware and official assemblers rather than trusting documentation alone.
Frequently asked questions
Is vfmaddrnd231pd a security vulnerability?
No. It’s a documentation discrepancy, not an exploitable flaw. The instruction simply doesn’t exist in any shipping processor, so there is nothing to attack.
Can I ever use this instruction?
Not currently. No assembler, compiler, or CPU examined in the original investigation supports it, and it has since been removed from Intel’s own documentation.
Does AVX-512 already solve this problem?
Yes, AVX-512 includes per-instruction rounding control for floating-point operations. The appeal of vfmaddrnd231pd, had it existed, was offering similar functionality without requiring AVX-512 hardware.
Source: Who is vfmaddrnd231pd?

답글 남기기