インテル® C++ コンパイラー 17.0 デベロッパー・ガイドおよびリファレンス
プロセッサー固有機能が利用可能かどうか判断するため、ソースレベルで動的にプロセッサーに問い合わせます (この組込み関数はベンダーのチェックは行いません)。
extern int _may_i_use_cpu_feature(unsigned __int64); |
unsigned __int64 |
1 つまたは複数の CPUID 機能を表す符号なし __int64 ビット。次の引数を使用できます。 _FEATURE_GENERIC_IA32 _FEATURE_FPU _FEATURE_CMOV _FEATURE_MMX _FEATURE_FXSAVE _FEATURE_SSE _FEATURE_SSE2 _FEATURE_SSE3 _FEATURE_SSSE3 _FEATURE_SSE4_1 _FEATURE_SSE4_2 _FEATURE_POPCNT _FEATURE_MOVBE _FEATURE_PCLMULQDQ _FEATURE_AES _FEATURE_F16C _FEATURE_AVX _FEATURE_RDRND _FEATURE_FMA _FEATURE_BMI _FEATURE_LZCNT _FEATURE_HLE _FEATURE_RTM _FEATURE_AVX2 _FEATURE_KNCNI _FEATURE_ADX _FEATURE_RDSEED |
この組込み関数は、指定された機能が利用可能かどうか、実行中のプロセッサーに問い合わせます。このチェックは、ソースの呼び出し位置で動的に実行されます。次に例を示します。
if (_may_i_use_cpu_feature(_FEATURE_SSE4_2)) { インテル® SSE4.2 組込み関数を使用する; } Else { 汎用コードを使用する; }
この場合、 _may_i_use_feature 組込み関数は、コードを実行中のプロセッサーがインテル® SSE4.2 に対応しているかどうかを動的にチェックし、対応している場合は true (そうでない場合は false) を返します。_may_i_use_feature 組込み関数では、次のように、引数内で複数の機能を指定できます。
if (_may_i_use_cpu_feature(_FEATURE_SSE | _FEATURE_SSE2 | _FEATURE_SSE3 | _FEATURE_SSSE3 | _FEATURE_MOVBE) && !_may_i_use_cpu_feature(_FEATURE_SSE4_1)) { printf("\nYou are running on an Atom processor."\n"); }
この組込み関数は、-m <cpu> オプションとは異なり、プロセッサーのベンダーはチェックしません。
実行中のマシンで指定された機能が利用可能かどうかを示す問い合わせの結果: true または false (1 または 0)。