#include <immintrin.h>
このエラーが発生した場合:
エラー: '__builtin_ia32_addpd256' はこのスコープで宣言されていません
AVX を利用可能にするマクロを定義__AVX__
しましたが、明らかにこれだけでは不十分です。マクロの代わりに__FMA__
コンパイラ フラグを使用してもエラーは発生しませんが、その解決策は受け入れられません。-mavx
では、AVX を使用するには他に何を定義すればよいでしょうか?
自分で定義するべきではありません。__AVX__
これら__FMA__
は、正しいコンパイラ オプションを有効にすると自動的に定義されます。
gcc -Wall -mavx ...
興味がある場合は、これを自分で確認できます。
AVX なし:
$ gcc -dM -E - < /dev/null | egrep "AVX|FMA"
$
AVX:
$ gcc -mavx -dM -E - < /dev/null | egrep "AVX|FMA"
#define __AVX__ 1
$
AVX + FMA:
$ gcc -mavx -mfma -dM -E - < /dev/null | egrep "AVX|FMA"
#define __AVX__ 1
#define __FMA__ 1
$