Инструкция mulx была введена с набором команд BMI2, начиная с процессора Haswell.
Согласно документации Intel, для mulx
unsigned __int64 umul128(unsigned __int64 a, unsigned __int64 b, unsigned __int64 * hi);
Тем не менее, я не нахожу такого встроенного в встроенного онлайн-руководства Intel под BMI2 или вообще. Тем не менее, я обнаружил, что intrinsics addcarry из набора инструкций ADX.
Согласно эта ссылка, intrinsic is mulx_u64, но я тоже не нахожу его.
MSVC добавила _ umul128 intrinsic в MSVC 2005, но только производит mul, а не mulx (и я понятия не имею, как включить BMI2 в MSVC).
Я могу сделать инструкцию mulx косвенно используя __int128 в GCC с помощью -mbmi2 (или -march=haswell), но я бы предпочел сделать это более непосредственно с помощью встроенного.
Почему существуют встроенные функции ADX, но не для mulx, как определено в документации Intel?