x86 SIMD組み込み関数のヘッダーファイル 質問する

x86 SIMD組み込み関数のヘッダーファイル 質問する

さまざまな x86 SIMD 命令セット拡張 (MMX、SSE、AVX など) の組み込み関数を提供するヘッダー ファイルはどれですか? そのようなリストをオンラインで見つけるのは不可能のようです。間違っていたら訂正してください。

ベストアンサー1

最近は、通常は を含めるだけで十分です<immintrin.h>。すべてが含まれます。

GCC と clang は、コンパイル時に有効にしていない命令 (または-march=nativeなど-mavx2 -mbmi2 -mpopcnt -mfma -mcx16 -mtune=znver1) の組み込み関数の使用を停止します。

MSVCとICCでは、コンパイル時に何も有効にせずに組み込み関数を使用できますが、それでもすべきAVX 組み込み関数を使用する前に AVX を有効にします。


これまでは (immintrin.hすべてをプルインする前は)、必要な最高レベルの組み込み関数のヘッダーを手動で含める必要がありました。

これは、MSVC および ICC で、必要のない命令セットの使用を止めるために依然として役立つ可能性があります。

<mmintrin.h>  MMX
<xmmintrin.h> SSE
<emmintrin.h> SSE2
<pmmintrin.h> SSE3
<tmmintrin.h> SSSE3
<smmintrin.h> SSE4.1
<nmmintrin.h> SSE4.2
<ammintrin.h> SSE4A
<wmmintrin.h> AES
<immintrin.h> AVX, AVX2, FMA

これらのプルの 1 つを以前のものすべてに含めます (AMD 専用の SSE4A を除く:immintrin.hこれはプルされません)

一部のコンパイラには<zmmintrin.h>AVX512 用のものもあります。

おすすめ記事