vfmaddrnd231pd 到底是条什么指令?
来源:purplesyringa.moe — 2026-10-12
📋 概述
作者在查 Intel 软件开发手册时发现一条名为 vfmaddrnd231pd 的 FMA 指令,它能按指令级别控制舍入模式,理论上可以在没有 AVX-512 的情况下让依赖舍入的算法大幅加速。但 GNU 汇编器不认识它,Clang 与 ICC 都没有手册提到的对应 intrinsic,按手册给出的 VEX.DDS 操作码手写汇编则在支持 FMA 的 Haswell 上直接触发 #UD。更蹊跷的是这条指令只出现在 2024 版手册里,2026 版已经把它删掉,而手册中独有的表格与伪代码又不像是笔误。作者的猜测是 Intel 曾在最后关头撤下这套指令却没有同步改对文档。
🔑 核心要点
- 这条指令提供按指令级别控制舍入模式的能力,而 FMA 能模拟加、减、乘,因此无需 AVX-512 也能控制任意算术的舍入
- GNU 汇编器不认识它,手册提到的 _mm_fmaddround_pd / _mm256_fmaddround_pd 连 ICC 里也找不到
- 按手册的 VEX.DDS.128.66.0F3A.W1 B8 手写汇编,在支持 FMA 的 Haswell 上直接抛出 #UD
- DDS 这个后缀在全手册里只出现过这一次,后续版本已将其移除,显得格外可疑
- 诡异之处:指令存在于 2024 版手册却在 2026 版消失,而描述它的表格与伪代码与任何其他指令都不同
- 最可能的解释是Intel 想加这套指令,最后关头发现问题并从 CPU 上撤下,却没把文档改对
💡 金句
如果读到这里的人有 Intel 的朋友,我很想知道答案。
👍 0
👎 0
← 返回 Lobsters 首页