組み込み関数サンプル

組み込み関数サンプルは、コンパイラーによりサポートされている組み込み関数とマクロの一般的な使用方法を示します。

ンパイラーに付属しているその他のサンプルについては、「サンプル」を参照してください。

サンプルファイルと保存場所

ソース

場所

intrin_double_sample.c

intrin_dot_sample.c

intrin_time_sample.c

intrin_ftz_sample.c

Linux* および Mac OS*

<install-dir>/samples/intrinsic_samples/

Windows*

<install-dir>\samples\intrinsic_samples\

説明

このサンプルでは、コンパイラーでサポートされている組み込み関数とマクロのさまざまな特徴を説明します。

ファイル名

説明

intrin_double_sample.c

ストリーミング SIMD 拡張命令 3 (SSE3)、およびストリーミング SIMD 拡張命令 2 (SSE2) の組み込み関数を使用して、2 つの複素数の乗算を実行する方法を示します。

SSE3 組み込み関数と SSE2 組み込み関数は、SSE3 命令セットに対応していないプロセッサーでは実行できません。

intrin_dot_sample.c

ストリーミング SIMD 拡張命令 3 (SSE3) 、C、MMX(R) テクノロジーの組み込み関数を使用して 2 つのベクトルのドット積を計算する方法を示します。

SSE3 組み込み関数と MMX テクノロジーの組み込み関数は、SSE3 命令セットに対応していないプロセッサーでは実行できません。

intrin_time_sample.c

_rdtsc() 組み込み関数を使用して、タイム・スタンプ・カウンターを読み取る方法を示します。64 ビット・タイム・スタンプ・カウンターの現在の値を出力します。このため、サンプルコードを実行するたびに出力される値は異なります。

IA-32 アーキテクチャーおよびインテル(R) 64 アーキテクチャーのみ。

intrin_ftz_sample.c

MXCSR コントロール・レジスターの FTZ フラグと DAZ フラグを読み取るコンパイラー・マクロの使用方法を示します。

SSE2 と SSE3 のサンプルは、これらの命令セットに対応したプロセッサーで実行する必要があります。プロセッサーが対応していない場合にはプログラムは失敗します。

サンプルのコンパイル

サンプルでは、コンパイルに必要な特別なオプションはありません。ただし、コマンド例には、Linux および Mac OS で実行ファイルが上書きされないようにするため、ファイル名を指定するコンパイラー・オプションが含まれています。Windows コンパイルでは、実行ファイルの名前にソースファイル名が自動で使用されます。

プラットフォーム

コマンド

Linux および Mac OS

icpc intrin_double_sample.c -o intrin_double_sample

icpc intrin_dot_sample.c -o intrin_dot_sample

icpc intrin_time_sample.c -o intrin_time_sample

icpc intrin_ftz_sample.c -o intrin_ftz_sample

Windows

icl intrin_double_sample.c

icl intrin_dot_sample.c

icl intrin_time_sample.c

icl intrin_ftz_sample.c

実行ファイルの実行

複素数実行ファイルの実行

プラットフォーム

コマンド

Linux および Mac OS

./intrin_double_sample

Windows

intrin_double_sample

実行ファイルにより、次のような結果が生成されます。

コマンド

Complex Product(C):    23.00+ -2.00i

Complex Product(SSE3): 23.00+ -2.00i

Complex Product(SSE2): 23.00+ -2.00i

このサンプルを SSE2 および SSE3 に対応していないプロセッサーで実行すると、実行ファイルは失敗し、例外エラーが発行されます。

ドット積実行ファイルの実行

プラットフォーム

コマンド

Linux および Mac OS

./intrin_dot_sample

Windows

intrin_dot_sample

実行ファイルにより、次のような結果が生成されます。

コマンド

Dot Product computed by C: 506.000000

Dot Product computed by SSE2 intrinsics:  506.000000

Dot Product computed by MMX intrinsics:  506

このサンプルを SSE2 に対応していないプロセッサーで実行すると、実行ファイルは失敗し、例外エラーが発行されます。

時間実行ファイルの実行

プラットフォーム

コマンド

Linux および Mac OS

./intrin_time_sample

Windows

intrin_time_sample

アプリケーションは、次の結果を生成しますが、最終の数字はプログラムを実行するごとに異なります。

コマンド

Processor cycles                                                           15280

マクロ実行ファイルの実行

プラットフォーム

コマンド

Linux および Mac OS

./intrin_ftz_sample

Windows

intrin_ftz_sample

実行ファイルにより、次のような結果が生成されます。

コマンド

FTZ is set.

DAZ is set.