インテル® C++ コンパイラー 19.1 デベロッパー・ガイドおよびリファレンス
インテル® アドバンスト・ベクトル・エクステンション 512 (インテル® AVX-512) 組込み関数のプロトタイプは、zmmintrin.h ヘッダーファイルで定義されていますが、これらの組込み関数を使用する場合、次のように immintrin.h ファイルをインクルードします。
#include <immintrin.h>
組込み関数名 |
演算 |
対応するインテル® AVX-512 命令 |
---|---|---|
_mm512_i32gather_pd、 _mm512_mask_i32gather_pd |
32 ビットの整数インデックスを使用して、メモリーから倍精度 (64 ビット) 浮動小数点要素を集約 (Gather) します。 |
VGATHERDPD |
_mm512_i32gather_ps、 _mm512_mask_i32gather_ps |
32 ビットの整数インデックスを使用して、メモリーから単精度 (32 ビット) 浮動小数点要素を集約 (Gather) します。 |
VGATHERDPS |
_mm512_i32extgather_ps、 _mm512_mask_i32extgather_ps |
32 ビットの整数インデックスを使用して、メモリーからの単精度 (32 ビット) 浮動小数点要素を順方向変換します。 |
VGATHERDPS |
_mm512_i64gather_pd、 _mm512_mask_i64gather_pd |
64 ビットの整数インデックスを使用して、メモリーから倍精度 (64 ビット) 浮動小数点要素を集約 (Gather) します。 |
VGATHERQPD |
_mm512_i64gather_ps、 _mm512_mask_i64gather_ps |
64 ビットの整数インデックスを使用して、メモリーから単精度 (32 ビット) 浮動小数点要素を集約 (Gather) します。 |
VGATHERQPS |
_mm512_prefetch_i32gather_pd、 _mm512_mask_prefetch_i32gather_pd |
32 ビットの整数インデックスを使用して、倍精度 (64 ビット) 浮動小数点要素のプリフェッチを集約 (Gather) します。 |
VGATHERPF0DPD、 VGATHERPF1DPD |
_mm512_prefetch_i32gather_ps、 _mm512_mask_prefetch_i32gather_ps |
32 ビットの整数インデックスを使用して、倍精度 (64 ビット) 浮動小数点要素のプリフェッチを集約 (Gather) します。 |
VGATHERPF0DPS、 VGATHERPF1DPS |
_mm512_prefetch_i64gather_pd、 _mm512_mask_prefetch_i64gather_pd |
64 ビットの整数インデックスを使用して、倍精度 (64 ビット) 浮動小数点要素のプリフェッチを集約 (Gather) します。 |
VGATHERPF0QPD、 VGATHERPF1QPD |
_mm512_prefetch_i64gather_ps、 _mm512_mask_prefetch_i64gather_ps |
64 ビットの整数インデックスを使用して、倍精度 (64 ビット) 浮動小数点要素のプリフェッチを集約 (Gather) します。 |
VGATHERPF0QPS、 VGATHERPF1QPS |
_mm512_i32scatter_pd、 _mm512_mask_i32scatter_pd |
32 ビットの整数インデックスを使用して、メモリーから倍精度 (64 ビット) 浮動小数点要素を分散 (Scatter) します。 |
VSCATTERDPD |
_mm512_i32scatter_ps、 _mm512_mask_i32scatter_ps |
32 ビットの整数インデックスを使用して、メモリーから単精度 (32 ビット) 浮動小数点要素を分散 (Scatter) します。 |
VSCATTERDPD |
_mm512_i32extscatter_ps、 _mm512_mask_i32extscatter_ps |
32 ビットの整数インデックスを使用して、メモリーからの単精度 (32 ビット) 浮動小数点要素を逆方向変換します。 |
VSCATTERDPS |
_mm512_i64scatter_pd、 _mm512_mask_i64scatter_pd |
64 ビットの整数インデックスを使用して、メモリーから倍精度 (64 ビット) 浮動小数点要素を分散 (Scatter) します。 |
VSCATTERQPD |
_mm512_i64scatter_ps、 _mm512_mask_i64scatter_ps |
64 ビットの整数インデックスを使用して、メモリーから単精度 (32 ビット) 浮動小数点要素を分散 (Scatter) します。 |
VSCATTERQPS |
_mm512_prefetch_i32scatter_pd、 _mm512_mask_prefetch_i32scatter_pd |
32 ビットの整数インデックスを使用して、倍精度 (64 ビット) 浮動小数点要素のプリフェッチを分散 (Scatter) します。 |
VSCATTERPF0DPD、 VSCATTERPF1DPD |
_mm512_prefetch_i32scatter_ps、 _mm512_mask_prefetch_i32scatter_ps |
32 ビットの整数インデックスを使用して、倍精度 (64 ビット) 浮動小数点要素のプリフェッチを分散 (Scatter) します。 |
VSCATTERPF0DPS、 VSCATTERPF1DPS |
_mm512_prefetch_i64scatter_pd、 _mm512_mask_prefetch_i64scatter_pd |
64 ビットの整数インデックスを使用して、倍精度 (64 ビット) 浮動小数点要素のプリフェッチを分散 (Scatter) します。 |
VSCATTERPF0QPD、 VSCATTERPF1QPD |
_mm512_prefetch_i64scatter_ps、 _mm512_mask_prefetch_i64scatter_ps |
64 ビットの整数インデックスを使用して、倍精度 (64 ビット) 浮動小数点要素のプリフェッチを分散 (Scatter) します。 |
VSCATTERPF0QPS、 VSCATTERPF1QPS |
変数 | 定義 |
---|---|
vindex | インデックスのベクトル |
base_addr | メモリーのベースアドレスへのポインター |
scale | ベクトル・インデックスのスケーリングに使用されるコンパイル時のリテラル定数。設定可能な値は、1、2、4、または 8 です。 |
k | セレクターとして使用されるマスク |
a | 1 つ目のソースベクトルの要素 |
src | マスクの結果に応じて使用されるソース要素 |
upconv | _MM_UPCONV_PS_ENUM は次の値を指定できます。
|
index | メモリー mv にあるインデクスを含むベクトル |
downconv | _MM_DOWNCONV_PS_ENUM は次の値を指定できます。
|
hint | 値を書き込むキャッシュレベル。_MM_HINT_ENUM は次のいずれかの値を指定できます。
インテル® Xeon Phi™ x200 製品ファミリー (開発コード名 Knights Landing) をターゲットとするインテル® 64 アーキテクチャーでは、_mm512_prefetch* および _mm512_mask_prefetch* 組込み関数の hint パラメーターに次のいずれかの値を指定できます。
|
_mm512_i32gather_pd
__m512d _mm512_i32gather_pd (__m256i vindex, void const* base_addr, int scale)
32 ビットのインデックスを使用して、メモリーから倍精度 (64 ビット) 浮動小数点要素を集約 (Gather) します。開始アドレス base_addr から、vindex の各 32 ビット要素をオフセットとして 64 ビット要素をロードします (各インデックスは scale の係数でスケーリングされます)。
_mm512_mask_i32gather_pd
__m512d _mm512_mask_i32gather_pd (__m512d src, __mmask8 k, __m256i vindex, void const* base_addr, int scale)
32 ビットのインデックスを使用して、メモリーから倍精度 (64 ビット) 浮動小数点要素を集約 (Gather) します。開始アドレス base_addr から、vindex の各 32 ビット要素をオフセットとして 64 ビット要素をロードします (各インデックスは scale の係数でスケーリングされます)。集約した要素は、マスク k を使用して src とマージされます。マスクの対応するビットが設定されていない場合は src から要素がコピーされます。
_mm512_i32gather_ps
__m512 _mm512_i32gather_ps (__m512i vindex, void const* base_addr, int scale)
32 ビットのインデックスを使用して、メモリーから単精度 (32 ビット) 浮動小数点要素を集約 (Gather) します。開始アドレス base_addr から、vindex の各 32 ビット要素をオフセットとして 32 ビット要素をロードします (各インデックスは scale の係数でスケーリングされます)。
_mm512_mask_i32gather_ps
__m512 _mm512_mask_i32gather_ps (__m512 src, __mmask16 k, __m512i vindex, void const* base_addr, int scale)
32 ビットのインデックスを使用して、メモリーから単精度 (32 ビット) 浮動小数点要素を集約 (Gather) します。開始アドレス base_addr から、vindex の各 32 ビット要素をオフセットとして 32 ビット要素をロードします (各インデックスは scale の係数でスケーリングされます)。集約した要素は、マスク k を使用して src とマージされます。マスクの対応するビットが設定されていない場合は src から要素がコピーされます。
_mm512_i32extgather_ps
__m512 _mm512_i32extgather_ps (__m512i index, void const * mv, _MM_UPCONV_PS_ENUM upconv, int scale, int hint)
scale でスケーリングされたパックド 32 ビット整数インデックス index を使用して、upconv で 開始位置 mv から 16 のメモリー位置を単精度 (32 ビット) 浮動小数点要素に順方向変換して dst に格納します。
_mm512_mask_i32extgather_ps
__m512 _mm512_mask_i32extgather_ps (__m512 src, __mmask16 k, __m512i index, void const * mv, _MM_UPCONV_PS_ENUM upconv, int scale, int hint)
scale でスケーリングされたパックド 32 ビット整数インデックス index を使用して、upconv で開始位置 mv から 16 の単精度のメモリー位置を単精度 (32 ビット) 浮動小数点要素に順方向変換し、マスク k を使用して src とマージします。マスクの対応するビットが設定されていない場合は src から要素がコピーされます。
_mm512_i64gather_pd
__m512d _mm512_i64gather_pd (__m512i vindex, void const* base_addr, int scale)
64 ビットのインデックスを使用して、メモリーから倍精度 (64 ビット) 浮動小数点要素を集約 (Gather) します。開始アドレス base_addr から、vindex の各 64 ビット要素をオフセットとして 64 ビット要素をロードします (各インデックスは scale の係数でスケーリングされます)。
_mm512_mask_i64gather_pd
__m512d _mm512_mask_i64gather_pd (__m512d src, __mmask8 k, __m512i vindex, void const* base_addr, int scale)
64 ビットのインデックスを使用して、メモリーから倍精度 (64 ビット) 浮動小数点要素を集約 (Gather) します。開始アドレス base_addr から、vindex の各 64 ビット要素をオフセットとして 64 ビット要素をロードします (各インデックスは scale の係数でスケーリングされます)。集約した要素は、マスク k を使用して src とマージされます。マスクの対応するビットが設定されていない場合は src から要素がコピーされます。
_mm512_i64gather_ps
__m256 _mm512_i64gather_ps (__m512i vindex, void const* base_addr, int scale)
64 ビットのインデックスを使用して、メモリーから単精度 (32 ビット) 浮動小数点要素を集約 (Gather) します。開始アドレス base_addr から、vindex の各 64 ビット要素をオフセットとして 32 ビット要素をロードします (各インデックスは scale の係数でスケーリングされます)。
_mm512_mask_i64gather_ps
__m256 _mm512_mask_i64gather_ps (__m256 src, __mmask8 k, __m512i vindex, void const* base_addr, int scale)
64 ビットのインデックスを使用して、メモリーから単精度 (32 ビット) 浮動小数点要素を集約 (Gather) します。開始アドレス base_addr から、vindex の各 64 ビット要素をオフセットとして 32 ビット要素をロードします (各インデックスは scale の係数でスケーリングされます)。集約した要素は、マスク k を使用して src とマージされます。マスクの対応するビットが設定されていない場合は src から要素がコピーされます。
_mm512_prefetch_i32gather_pd
void _mm512_prefetch_i32gather_pd (__m256i vindex, void const* base_addr, int scale, int hint)
32 ビットのインデックスを使用して、メモリーから倍精度 (64 ビット) 浮動小数点要素をプリフェッチします。開始アドレス base_addr から、vindex の各 32 ビット要素をオフセットとして 64 ビット要素をロードします (各インデックスは scale の係数でスケーリングされます)。
_mm512_mask_prefetch_i32gather_pd
void _mm512_mask_prefetch_i32gather_pd (__m256i vindex, __mmask8 mask, void const* base_addr, int scale, int hint)
32 ビットのインデックスを使用して、メモリーから倍精度 (64 ビット) 浮動小数点要素をプリフェッチします。開始アドレス base_addr から、vindex の各 32 ビット要素をオフセットとして 64 ビット要素をロードします (各インデックスは scale の係数でスケーリングされます)。集約した要素は、マスク k を使用してキャッシュとマージされます。要素は、マスクの対応するビットが設定されている場合のみキャッシュに書き込まれます。
_mm512_prefetch_i32gather_ps
void _mm512_prefetch_i32gather_ps (__m512i index, void const* mv, int scale, int hint)
パックド 32 ビット整数インデックス index を使用して、開始位置 mv から 16 の単精度 (32 ビット) 浮動小数点要素をプリフェッチします (各インデックスは、scale の係数でスケーリングされます)。
_mm512_mask_prefetch_i32gather_ps
void _mm512_mask_prefetch_i32gather_ps (__m512i vindex, __mmask16 mask, void const* base_addr, int scale, int hint)
32 ビットのインデックスを使用して、メモリーから単精度 (32 ビット) 浮動小数点要素をプリフェッチします。開始アドレス base_addr から、vindex の各 32 ビット要素をオフセットとして 32 ビット要素をロードします (各インデックスは scale の係数でスケーリングされます)。集約した要素は、マスク k を使用してキャッシュとマージされます。要素は、マスクの対応するビットが設定されている場合のみキャッシュに書き込まれます。
_mm512_prefetch_i64gather_pd
void _mm512_prefetch_i64gather_pd (__m512i vindex, void const* base_addr, int scale, int hint)
64 ビットのインデックスを使用して、メモリーから hint で指定されたキャッシュレベルに倍精度 (64 ビット) 浮動小数点要素をプリフェッチします。開始アドレス base_addr から、vindex の各 64 ビット要素をオフセットとして 64 ビット要素をロードします (各インデックスは scale の係数でスケーリングされます)。
_mm512_mask_prefetch_i64gather_pd
void _mm512_mask_prefetch_i64gather_pd (__m512i vindex, __mmask8 mask, void const* base_addr, int scale, int hint)
64 ビットのインデックスを使用して、メモリーから hint で指定されたキャッシュレベルに倍精度 (64 ビット) 浮動小数点要素をプリフェッチします。開始アドレス base_addr から、vindex の各 64 ビット要素をオフセットとして 64 ビット要素をロードします (各インデックスは scale の係数でスケーリングされます)。プリフェッチした要素は、マスク k を使用してキャッシュとマージされます。要素は、マスクの対応するビットが設定されている場合のみキャッシュに書き込まれます。
_mm512_prefetch_i64gather_ps
void _mm512_prefetch_i32gather_pd (__m256i vindex, void const* base_addr, int scale, int hint)
64 ビットのインデックスを使用して、メモリーから単精度 (32 ビット) 浮動小数点要素をプリフェッチします。開始アドレス base_addr から、vindex の各 64 ビット要素をオフセットとして 32 ビット要素をロードします (各インデックスは scale の係数でスケーリングされます)。
_mm512_mask_prefetch_i64gather_ps
void _mm512_mask_prefetch_i64gather_ps (__m512i vindex, __mmask8 mask, void const* base_addr, int scale, int hint)
64 ビットのインデックスを使用して、メモリーから単精度 (32 ビット) 浮動小数点要素をプリフェッチします。開始アドレス base_addr から、vindex の各 64 ビット要素をオフセットとして 32 ビット要素をロードします (各インデックスは scale の係数でスケーリングされます)。集約した要素は、マスク k を使用してキャッシュとマージされます。要素は、マスクの対応するビットが設定されている場合のみキャッシュに書き込まれます。
_mm512_i32scatter_pd
void _mm512_i32scatter_pd (void* base_addr, __m256i vindex, __m512d a, int scale)
32 ビットのインデックスを使用して、a の倍精度 (64 ビット) 浮動小数点要素をメモリーに分散 (Scatter) します。開始アドレス base_addr に、vindex の各 32 ビット要素をオフセットとして 64 ビット要素をストアします (各インデックスは scale の係数でスケーリングされます)。
_mm512_mask_i32scatter_pd
void _mm512_mask_i32scatter_pd (void* base_addr, __mmask8 k, __m256i vindex, __m512d a, int scale)
32 ビットのインデックスを使用して、a の倍精度 (64 ビット) 浮動小数点要素をメモリーに分散 (Scatter) します。開始アドレス base_addr に、vindex の各 32 ビット要素をオフセットとして、マスク k に応じて 64 ビット要素をストアします (各インデックスは scale の係数でスケーリングされます)。要素は、マスクの対応するビットが設定されている場合のみキャッシュに書き込まれます。
_mm512_i32scatter_ps
void _mm512_i32scatter_ps (void* base_addr, __m512i vindex, __m512 a, int scale)
32 ビットのインデックスを使用して、a の単精度 (32 ビット) 浮動小数点要素をメモリーに分散 (Scatter) します。開始アドレス base_addr に、vindex の各 32 ビット要素をオフセットとして 32 ビット要素をストアします (各インデックスは scale の係数でスケーリングされます)。
_mm512_mask_i32scatter_ps
void _mm512_mask_i32scatter_ps (void* base_addr, __mmask16 k, __m512i vindex, __m512 a, int scale)
32 ビットのインデックスを使用して、a の単精度 (32 ビット) 浮動小数点要素をメモリーに分散 (Scatter) します。開始アドレス base_addr に、vindex の各 32 ビット要素をオフセットとして、マスク k に応じて 32 ビット要素をストアします (各インデックスは scale の係数でスケーリングされます)。要素は、マスクの対応するビットが設定されている場合のみキャッシュに書き込まれます。
_mm512_i32extscatter_ps
void _mm512_i32extscatter_ps (void * mv, __m512i index, __m512 v1, _MM_DOWNCONV_PS_ENUM downconv, int scale, int hint)
downconv で 16 のパックド単精度 (32 ビット) 浮動小数点要素 v1 を逆方向変換して、scale でスケーリングされたパックド 32 ビット整数インデックス index を使用して、開始位置 mv に格納します。
_mm512_mask_i32extscatter_ps
void _mm512_mask_i32extscatter_ps (void * mv, __mmask16 k, __m512i index, __m512 v1, _MM_DOWNCONV_PS_ENUM downconv, int scale, int hint)
downconv で 16 のパックド単精度 (32 ビット) 浮動小数点要素 v1 を逆方向変換して、scale でスケーリングされたパックド 32 ビット整数インデックス index を使用して、開始位置 mv にマスク k に応じて格納します。要素は、マスクの対応するビットが設定されている場合のみキャッシュに書き込まれます。
_mm512_i64scatter_pd
void _mm512_i64scatter_pd (void* base_addr, __m512i vindex, __m512d a, int scale)
64 ビットのインデックスを使用して、a の倍精度 (64 ビット) 浮動小数点要素をメモリーに分散 (Scatter) します。開始アドレス base_addr に、vindex の各 64 ビット要素をオフセットとして 64 ビット要素をストアします (各インデックスは scale の係数でスケーリングされます)。
_mm512_mask_i64scatter_pd
void _mm512_mask_i64scatter_pd (void* base_addr, __mmask8 k, __m512i vindex, __m512d a, int scale)
64 ビットのインデックスを使用して、a の倍精度 (64 ビット) 浮動小数点要素をメモリーに分散 (Scatter) します。開始アドレス base_addr に、vindex の各 64 ビット要素をオフセットとして、マスク k に応じて 64 ビット要素をストアします (各インデックスは scale の係数でスケーリングされます)。要素は、マスクの対応するビットが設定されている場合のみキャッシュに書き込まれます。
_mm512_i64scatter_ps
void _mm512_i64scatter_ps (void* base_addr, __m512i vindex, __m256 a, int scale)
64 ビットのインデックスを使用して、a の単精度 (32 ビット) 浮動小数点要素をメモリーに分散 (Scatter) します。開始アドレス base_addr に、vindex の各 64 ビット要素をオフセットとして 32 ビット要素をストアします (各インデックスは scale の係数でスケーリングされます)。
_mm512_mask_i64scatter_ps
void _mm512_mask_i64scatter_ps (void* base_addr, __mmask8 k, __m512i vindex, __m256 a, int scale)
64 ビットのインデックスを使用して、a の単精度 (32 ビット) 浮動小数点要素をメモリーに分散 (Scatter) します。マスク k に応じて、開始アドレス base_addr に、vindex の各 64 ビット要素をオフセットとして 32 ビット要素をストアします (各インデックスは scale の係数でスケーリングされます)。要素は、マスクの対応するビットが設定されている場合のみキャッシュに書き込まれます。
_mm512_prefetch_i32scatter_pd
void _mm512_prefetch_i32scatter_pd (void* base_addr, __m256i vindex, int scale, int hint)
32 ビットのインデックスを使用して書き込むため、メモリーから倍精度 (64 ビット) 浮動小数点要素をプリフェッチします。開始アドレス base_addr から、vindex の各 32 ビット要素をオフセットとして 64 ビット要素をキャッシュに書き込みます (各インデックスは scale の係数でスケーリングされます)。
_mm512_mask_prefetch_i32scatter_pd
extern void __cdecl _mm512_mask_prefetch_i32gather_pd(__m256i vindex, __mmask8 k, void const* base_addr, int scale, int hint);
32 ビットのインデックスを使用して書き込むため、メモリーから倍精度 (64 ビット) 浮動小数点要素をプリフェッチします。開始アドレス base_addr から、vindex の各 32 ビット要素をオフセットとして 64 ビット要素をマスク k に応じてキャッシュに書き込みます (各インデックスは scale の係数でスケーリングされます)。要素は、マスクの対応するビットが設定されている場合のみキャッシュに書き込まれます。
_mm512_prefetch_i32scatter_ps
void _mm512_prefetch_i32scatter_ps (void* mv, __m512i index, int scale, int hint)
scale でスケーリングされたパックド 32 ビット整数インデックス index を使用して、開始位置 mv から 16 の単精度 (32 ビット) 浮動小数点要素をプリフェッチします。
_mm512_mask_prefetch_i32scatter_ps
void _mm512_mask_prefetch_i32scatter_ps (void* mv, __mmask16 k, __m512i index, int scale, int hint)
scale でスケーリングされたパックド 32 ビット整数インデックス index を使用して、開始位置 mv から 16 の単精度 (32 ビット) 浮動小数点要素をプリフェッチします。要素は、マスク k の対応するビットが設定されている場合のみキャッシュに書き込まれます。
_mm512_prefetch_i64scatter_pd
void _mm512_prefetch_i64scatter_pd (void* base_addr, __m512i vindex, int scale, int hint)
64 ビットのインデックスを使用してメモリーに書き込むため、倍精度 (64 ビット) 浮動小数点要素をプリフェッチします。開始アドレス base_addr から、vindex の各 64 ビット要素をオフセットとして 64 ビット要素をキャッシュに書き込みます (各インデックスは scale の係数でスケーリングされます)。
_mm512_mask_prefetch_i64scatter_pd
void _mm512_mask_prefetch_i64scatter_pd (void* base_addr, __mmask8 mask, __m512i vindex, int scale, int hint)
64 ビットのインデックスを使用してメモリーに書き込むため、倍精度 (64 ビット) 浮動小数点要素をプリフェッチします。開始アドレス base_addr から、vindex の各 64 ビット要素をオフセットとして 64 ビット要素をマスク k に応じてキャッシュに書き込みます (各インデックスは scale の係数でスケーリングされます)。要素は、マスクの対応するビットが設定されている場合のみキャッシュに書き込まれます。
_mm512_prefetch_i64scatter_ps
void _mm512_prefetch_i64scatter_ps (void* base_addr, __m512i vindex, int scale, int hint)
64 ビットのインデックスを使用してメモリーに書き込むため、単精度 (32 ビット) 浮動小数点要素をプリフェッチします。開始アドレス base_addr に、vindex の各 64 ビット要素をオフセットとして 32 ビット要素をストアします (各インデックスは scale の係数でスケーリングされます)。
_mm512_mask_prefetch_i64scatter_ps
void _mm512_mask_prefetch_i64scatter_ps (void* base_addr, __mmask8 mask, __m512i vindex, int scale, int hint)
64 ビットのインデックスを使用してメモリーに書き込むため、単精度 (32 ビット) 浮動小数点要素をプリフェッチします。マスク k に応じて、開始アドレス base_addr に、vindex の各 64 ビット要素をオフセットとして 32 ビット要素をストアします (各インデックスは scale の係数でスケーリングされます)。要素は、マスクの対応するビットが設定されている場合のみキャッシュに書き込まれます。