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

その他の組込み関数

次の表は、組込み関数のリストです。これらの組込み関数は、特に記述のない限り、すべてのインテル® アーキテクチャーで使用できます。これらの組込み関数はインテル製マイクロプロセッサーおよび互換マイクロプロセッサーで利用可能ですが、インテル製マイクロプロセッサーにおいてより多くの最適化が行われる場合があります。

インテル® アーキテクチャーの組込み関数で利用可能なさまざまな INT 型と FP 型のキャスト関数は、型を変更するだけで、整数値と浮動小数点値の変換は行いません

組込み関数

説明

サポートされるすべてのインテル® アーキテクチャーで使用可能な組込み関数

__cpuid

プロセッサーの種類とサポートされている機能に関する情報をプロセッサーに問い合わせます。インテル® C++ コンパイラーは、Microsoft* のこの組込み関数の実装をサポートしています。詳細については、Microsoft* のマニュアルを参照してください。

void *_alloca(int)

ローカル・スタック・フレーム内のメモリーを割り当てます。関数の呼び出しが完了すると、メモリーは自動的に解放されます。

int _bit_scan_forward(int x)

x の最下位セットビットのビット・インデックスを返します。x が 0 の場合、結果は未定義です。

int _bit_scan_reverse(int)

x の最上位セットビットのビット・インデックスを返します。x が 0 の場合、結果は未定義です。

unsigned char _BitScanForward(unsigned __int32 *p, unsigned __int32 b);

インテル® 64 アーキテクチャーのみ:

unsigned char _BitScanForward64(unsigned __int32 *p, unsigned __int64 b);

*p を、b のセットされている最下位のビットのビット・インデックスに設定します。b が 0 の場合は変更しません。b が非ゼロの場合は非ゼロの値を返し、b が 0 の場合は 0 を返します。

unsigned char _BitScanReverse(unsigned __int32 *p, unsigned __int32 b);

インテル® 64 アーキテクチャーのみ:

unsigned char _BitScanReverse64(unsigned __int32 *p, unsigned __int64 b);

*p を、b のセットされている最上位のビットのビット・インデックスに設定します。b が 0 の場合は変更しません。b が非ゼロの場合は非ゼロの値を返し、b が 0 の場合は 0 を返します。

unsigned char _bittest(__int32 *p, __int32 b);

インテル® 64 アーキテクチャーのみ:

unsigned char _bittest64(__int64 *p, __int64 b);

p で参照されるメモリーアドレスの位置 b のビットを返します。

unsigned char _bittestandcomplement(__int32 *p, __int32 b);

インテル® 64 アーキテクチャーのみ:

unsigned char _bittestandcomplement64(__int64 *p, __int64 b);

p で参照されるメモリーアドレスの位置 b のビットを返し、そのビットを補完します。

unsigned char _bittestandreset(__int32 *p, __int32 b);

インテル® 64 アーキテクチャーのみ:

unsigned char _bittestandreset64(__int64 *p, __int64 b);

p で参照されるメモリーアドレスの位置 b のビットを返し、そのビットを 0 にリセットします。

unsigned char _bittestandset(__int32 *p, __int32 b);

インテル® 64 アーキテクチャーのみ:

unsigned char _bittestandset64(__int64 *p, __int64 b);

p で参照されるメモリーアドレスの位置 b のビットを返し、そのビットを 1 に設定します。

int _bswap(int)

x のバイトの順序を逆にします。4 バイトをスワップします。ビット 0 から 7 は、ビット 24 から 31 とスワップされ、ビット 8 から 15 は、ビット 16 から 23 とスワップされます。

__int64 _bswap64(__int64 x)

x のバイトの順序を逆にします。8 バイトをスワップします。ビット 0 から 7 は、ビット 56 から 63 とスワップされ、ビット 8 から 15 は、ビット 48 から 55 とスワップされ、ビット 16 から 23 は、ビット 40 から 47 とスワップされ、ビット 24 から 31 は、ビット 32 から 39 とスワップされます。

unsigned int __cacheSize(unsigned int cacheLevel)

__cacheSize(n) は n レベルのキャッシュのサイズをバイトで返します。1 は一次キャッシュを表します。キャッシュレベルが存在しない場合、0 が返されます。例えば、アプリケーションはキャッシュサイズをクエリーし、行列を操作するアルゴリズムでブロックサイズを選択するのにキャッシュサイズを使用します。

void _enable(void)

割り込みを有効にします。

unsigned __int32 _castf32_u32(float)

float 値を符号なし 32 ビット整数にキャストします。

unsigned __int64 _castf64_u64(double)

double 値を符号なし 64 ビット整数にキャストします。

float _castu32_f32(unsigned __int32)

符号なし 32 ビット整数を float32 にキャストします。

double _castu64_f64(unsigned __int64)

符号なし 32 ビット整数を float64 にキャストします。

void _disable(void)

割り込みを無効にします。

int _in_byte(int)

IA-32 命令 IN に対応付けられる組込み関数。引数で指定されたポートからデータバイトを転送します。

int _in_dword(int)

IA-32 命令 IN に対応付けられる組込み関数。引数で指定されたポートからダブルワードを転送します。

int _in_word(int)

IA-32 命令 IN に対応付けられる組込み関数。引数で指定されたポートからワードを転送します。

int _inp(int)

_in_byte と同じです。

int _inpd(int)

_in_dword と同じです。

int _inpw(int)

_in_word と同じです。

int _out_byte(int, int)

IA-32 命令 OUT に対応付けられる組込み関数。第 2 の引数内のデータバイトを、第 1 の引数で指定するポートに転送します。

int _out_dword(int, int)

IA-32 命令 OUT に対応付けられる組込み関数。第 2 の引数内のダブルワードを、第 1 の引数で指定するポートに転送します。

int _out_word(int, int)

IA-32 命令 OUT に対応付けられる組込み関数。第 2 の引数内のワードを、第 1 の引数で指定するポートに転送します。

int _outp(int, int)

_out_byte と同じです。

int _outpw(int, int)

_out_word と同じです。

int _outpd(int, int)

_out_dword と同じです。

int _popcnt32(int x)

x のセットビットの数を返します。

int _popcnt64(__int64 x)

x のセットビットの数を返します。

__int64 _rdpmc(int p)

p で指定された 40 ビット・パフォーマンス・モニタリング・カウンターの現在の値を返します。

IA-32 およびインテル® 64 アーキテクチャーで使用可能な組込み関数

__int64 _rdtsc(void)

プロセッサーの 64 ビット・タイム・スタンプ・カウンターの現在の値を返します。

int _setjmp(jmp_buf)

setjmp() の高速版。終了処理が省略されます。呼び出し先セーブのレジスター、スタックポインター、およびリターンアドレスを保存します。

int __pin_value(char *annotation) PIN モードでのみ実行されるコードを省略します。これは、PIN モードでのみコードが実行されるように指定されたアノテーションをオブジェクト・ファイルに追加するインテル® スレッディング・ビルディング・ブロック (インテル® TBB) で特に役立ちます。