適切な解決策を見つけるために Web を検索していましたが、あまり成功しませんでした。それで、あなたの誰かがそれについて何か知っていることを願っています: " Intel Bit Manipulation Instruction Sets 2 " (BMI2) コンパイル時間を検出する方法はありますか? 入手可能性に基づいて条件付きのものを作りたいです。
質問する
2023 次
2 に答える
7
GCC を使用すると、__BMI2__
マクロを確認できます。このマクロは、ターゲットが BMI2 (例: ) をサポートしている場合に定義され-mbmi2
ます-march=haswell
。これは、組み込みのヘッダー ( x86intrin.h
、bmi2intrin.h
) がコンパイル時に BMI2 をチェックするために使用するマクロです。
ランタイム チェック用で__builtin_cpu_init()
、__builtin_cpu_supports("bmi2")
最新の GCC で使用できます (GCC 5.1、4.9 およびそれ以下でテスト済み)。
于 2015-08-26T20:05:14.813 に答える
1
CPUID 組み込み関数を EAX=7、ECX=0 で実行し、返された EBX レジスタのビット 3 (BMI1 フラグ) をチェックします。EBX ビット 8 は BMI2 フラグです。CPUID を呼び出してデータを取得する方法については、コンパイラのドキュメントを参照してください。
于 2015-08-26T00:29:41.120 に答える