このmulx
命令は、Haswell プロセッサから始まる BMI2 命令セットで導入されました。
Intelのドキュメントによると、組み込みのmulx
unsigned __int64 umul128(unsigned __int64 a, unsigned __int64 b, unsigned __int64 * hi);
ただし、BMI2または一般に、 Intelの組み込みガイドオンラインからそのような組み込みは見つかりません。ただし、ADX 命令セットから addcarry 組み込み関数が見つかります。
このリンクによると、本質的なものはmulx_u64
ありますが、それも見つかりません。
MSVC は MSVC 2005 に_umul128 組み込み関数を追加しましたが、それは生成するだけで生成mul
しませんmulx
(MSVC で BMI2 を有効にする方法がわかりません)。
(または) を使用して GCC でmulx
間接的に命令を生成できますが、組み込みを使用してより直接的に行うことをお勧めします。__int128
-mbmi2
-march=haswell
ADX 組み込み関数が存在するのに、 Intel のドキュメントmulx
で定義されているものがないのはなぜですか?