インテル® C++ コンパイラー 18.0 デベロッパー・ガイドおよびリファレンス

_may_i_use_cpu_feature

プロセッサー固有機能が利用可能かどうか判断するため、ソースレベルで動的にプロセッサーに問い合わせます (この組込み関数はベンダーのチェックは行いません)。

構文

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_ADX

_FEATURE_RDSEED

_FEATURE_AVX512DQ

_FEATURE_AVX512F

_FEATURE_AVX512ER

_FEATURE_AVX512PF

_FEATURE_AVX512CD

_FEATURE_AVX512BW

_FEATURE_AVX512VL

_FEATURE_SHA

_FEATURE_MPX

_FEATURE_AVX512IFMA52

_FEATURE_AVX512VBMI

_FEATURE_AVX512_4FMAPS

_FEATURE_AVX512_4VNNIW

説明

この組込み関数は、指定された機能が利用可能かどうか、実行中のプロセッサーに問い合わせます。このチェックは、ソースの呼び出し位置で動的に実行されます。次に例を示します。

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)。

関連情報