5

適切な解決策を見つけるために Web を検索していましたが、あまり成功しませんでした。それで、あなたの誰かがそれについて何か知っていることを願っています: " Intel Bit Manipulation Instruction Sets 2 " (BMI2) コンパイル時間を検出する方法はありますか? 入手可能性に基づいて条件付きのものを作りたいです。

4

2 に答える 2

7

GCC を使用すると、__BMI2__マクロを確認できます。このマクロは、ターゲットが BMI2 (例: ) をサポートしている場合に定義され-mbmi2ます-march=haswell。これは、組み込みのヘッダー ( x86intrin.hbmi2intrin.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 に答える