概要
vfmaddrnd231pd 命令は、FMA命令セットに属するはずの特異な命令。 SDM(Software Development Manual)2024年版 で記載されていたが、2026年版では削除。 ラウンド制御 を命令単位で可能にする設計だったが、実装・サポートは未確認。 アセンブラやコンパイラ もこの命令を認識せず、実行すると未定義命令例外が発生。 Intel内部で計画されたが、最終的に撤回された可能性が高い。
vfmaddrnd231pd命令の謎
- vfmaddrnd231pd は、FMA命令セットの一部として SDM 2024年版 に記載
- 命令名の "rnd" は、ラウンド制御機能を意味
- 即値バイト で、ラウンドモード・DAZ・FTZ・例外抑制などを個別制御
- 従来のx86浮動小数点命令 はグローバルなラウンドモードを使用し、切替は低速
- vfmaddrnd231pd は命令単位でラウンドモードを指定でき、 AVX-512不要 で高速な丸め制御を実現
- FMA命令の性質上、加算・減算・乗算のエミュレーションも可能
- アルゴリズム実装 で丸め制御が求められる場面で有用なはず
実装・サポート状況
- GNUアセンブラ はvfmaddrnd231pdを認識しない
- Intel C/C++ Compiler や Clang にも、該当するintrinsics(_mm_fmaddround_pd等)が存在しない
- SDMに記載の オペコード(VEX.DDS.128.66.0F3A.W1 B8 /r /ib) を手動で組み立てて実行しても、 #UD(未定義命令例外) が発生
- DDS という接頭辞はSDM内でこの命令のみ登場し、後のSDMでは削除
- 他のバリエーション (pd/ps/sd/ssや132/213/231)も存在せず、異例の記述
SDMでの扱いと消失
- 2024年版SDM には詳細なテーブルや独自の擬似コード付きで掲載
- 2026年版SDM では完全に削除
- 単なる記載ミス とは思えない独自構成
- Intelが 実装直前で撤回 した可能性が高いが、公式な説明はなし
まとめと疑問
- vfmaddrnd231pd命令 は、 SDM2024年版限定の幻の命令
- 実際のCPUやツールチェーン でサポートされていない
- 設計段階での撤回 が濃厚
- Intel内部事情 や撤回理由は不明
- 情報提供を希望 する呼びかけ