インテル® C++ コンパイラー 18.0 デベロッパー・ガイドおよびリファレンス
インテル® アドバンスト・ベクトル・エクステンション 512 (インテル® AVX-512) 組込み関数のプロトタイプは、zmmintrin.h ヘッダーファイルで定義されていますが、実際にヘッダーをコードにインクルードする場合は、immintrin.h を使用します。
組込み関数名 |
演算 |
対応するインテル® AVX-512 命令 |
---|---|---|
_mm512_i32gather_pd、 _mm512_mask_i32gather_pd |
int32 インデックスを使用して、メモリーから float64 ベクトル要素を集約 (Gather) します。 |
VGATHERDPD |
_mm512_i32gather_ps、 _mm512_mask_i32gather_ps |
int32 インデックスを使用して、メモリーから float32 ベクトル要素を集約 (Gather) します。 |
VGATHERDPS |
_mm512_i64gather_pd、 _mm512_mask_i64gather_pd |
int64 インデックスを使用して、メモリーから float64 ベクトル要素を集約 (Gather) します。 |
VGATHERQPD |
_mm512_i64gather_ps、 _mm512_mask_i64gather_ps |
int64 インデックスを使用して、メモリーから float32 ベクトル要素を集約 (Gather) します。 |
VGATHERQPS |
_mm512_prefetch_i32gather_pd、 _mm512_mask_prefetch_i32gather_pd |
int32 インデックスを使用して、float64 ベクトルを集約 (Gather) プリフェッチします。 |
VGATHERPF0DPD、 VGATHERPF1DPD |
_mm512_prefetch_i64gather_pd、 _mm512_mask_prefetch_i64gather_pd |
int64 インデックスを使用して、float64 ベクトルを集約 (Gather) プリフェッチします。 |
VGATHERPF0QPD、 VGATHERPF1QPD |
_mm512_prefetch_i64gather_ps、 _mm512_mask_prefetch_i64gather_ps |
int64 インデックスを使用して、float64 ベクトルを集約 (Gather) プリフェッチします。 |
VGATHERPF0QPS、 VGATHERPF1QPS |
_mm512_i32scatter_pd、 _mm512_mask_i32scatter_pd |
int32 インデックスを使用して、メモリーから float64 ベクトル要素を分散 (Scatter) します。 |
VSCATTERDPD |
_mm512_i32scatter_ps、 _mm512_mask_i32scatter_ps |
int32 インデックスを使用して、メモリーから float32 ベクトル要素を分散 (Scatter) します。 |
VSCATTERDPD |
_mm512_i64scatter_pd、 _mm512_mask_i64scatter_pd |
int64 インデックスを使用して、メモリーから float64 ベクトル要素を分散 (Scatter) します。 |
VSCATTERQPD |
_mm512_i64scatter_ps、 _mm512_mask_i64scatter_ps |
int64 インデックスを使用して、メモリーから float32 ベクトル要素を分散 (Scatter) します。 |
VSCATTERQPS |
_mm512_prefetch_i32scatter_pd、 _mm512_mask_prefetch_i32scatter_pd |
int32 インデックスを使用して、float64 ベクトルを分散 (Scatter) プリフェッチします。 |
VSCATTERPF0DPD、 VSCATTERPF1DPD |
_mm512_prefetch_i64scatter_pd、 _mm512_mask_prefetch_i64scatter_pd |
int64 インデックスを使用して、float64 ベクトルを分散 (Scatter) プリフェッチします。 |
VSCATTERPF0QPD、 VSCATTERPF1QPD |
_mm512_prefetch_i64scatter_ps、 _mm512_mask_prefetch_i64scatter_ps |
int64 インデックスを使用して、float64 ベクトルを分散 (Scatter) プリフェッチします。 |
VSCATTERPF0QPS、 VSCATTERPF1QPS |
変数 | 定義 |
---|---|
k | セレクターとして使用される書き込みマスク |
a | 1 つ目のソースベクトルの要素 |
src | 書き込みマスクの結果に応じて使用されるソース要素 |
hint | 値を書き込むキャッシュレベル。_MM_HINT_ENUM には、次の値を指定できます。 _MM_HINT_NONE 0x0 - オフ |
scale | _MM_INDEX_SCALE_ENUM には、次のいずれかの値を指定できます。
|
round | 丸め制御値。次のいずれかになります (sae によりすべての例外フラグが抑止されます)。
|
_mm512_i32gather_pd
extern __m512 __cdecl _mm512_i32gather_pd(__m512i vindex, void const* base_addr, int scale, int hint);
32 ビットのインデックスを使用して、メモリーから float64 要素を集約 (Gather) します。開始アドレス base_addr から、vindex の各 32 ビット要素をオフセットとして 64 ビット要素をロードします (各インデックスは scale の係数でスケーリングされます)。集約した要素は、デスティネーションにマージします。
_mm512_mask_i32gather_pd
extern __m512 __cdecl _mm512_mask_i32gather_pd(__m512 src, __mmask16 k, __m512i vindex, void const* base_addr, int scale, int hint);
32 ビットのインデックスを使用して、メモリーから float64 要素を集約 (Gather) します。開始アドレス base_addr から、vindex の各 32 ビット要素をオフセットとして 64 ビット要素をロードします (各インデックスは scale の係数でスケーリングされます)。集約した要素は、書き込みマスク k を使用してデスティネーションにマージします (マスクの対応するビットが設定されていない場合は src の要素がコピーされます)。
_mm512_i32gather_ps
extern __m512 __cdecl _mm512_i32gather_ps(__m512i vindex, void const* base_addr, int scale, int hint);
32 ビットのインデックスを使用して、メモリーから float32 要素を集約 (Gather) します。開始アドレス base_addr から、vindex の各 32 ビット要素をオフセットとして 32 ビット要素をロードします (各インデックスは scale の係数でスケーリングされます)。集約した要素は、デスティネーションにマージします。
_mm512_mask_i32gather_ps
extern __m512 __cdecl _mm512_mask_i32gather_ps(__m512 src, __mmask16 k, __m512i vindex, void const* base_addr, int scale, int hint);
32 ビットのインデックスを使用して、メモリーから float32 要素を集約 (Gather) します。開始アドレス base_addr から、vindex の各 32 ビット要素をオフセットとして 32 ビット要素をロードします (各インデックスは scale の係数でスケーリングされます)。集約した要素は、書き込みマスク k を使用してデスティネーションにマージします (マスクの対応するビットが設定されていない場合は src の要素がコピーされます)。
_mm512_i64gather_pd
extern __m512d __cdecl _mm512_i64gather_pd(__m512i vindex, void const* base_addr, int scale, int hint);
64 ビットのインデックスを使用して、メモリーから float64 要素を集約 (Gather) します。開始アドレス base_addr から、vindex の各 64 ビット要素をオフセットとして 64 ビット要素をロードします (各インデックスは scale の係数でスケーリングされます)。集約した要素は、デスティネーションにマージします。
_mm512_mask_i64gather_pd
extern __m512d __cdecl _mm512_mask_i64gather_pd(__m512d a, __mmask8 k, __m512i vindex, void const* base_addr, int scale, int hint);
64 ビットのインデックスを使用して、メモリーから float64 要素を集約 (Gather) します。開始アドレス base_addr から、vindex の各 64 ビット要素をオフセットとして 64 ビット要素をロードします (各インデックスは scale の係数でスケーリングされます)。集約した要素は、書き込みマスク k を使用してデスティネーションにマージします (マスクの対応するビットが設定されていない場合は src の要素がコピーされます)。
_mm512_i64gather_ps
extern __m512 __cdecl _mm512_i64gather_ps(__m512i vindex, void const* base_addr, int scale, int hint);
64 ビットのインデックスを使用して、メモリーから float32 要素を集約 (Gather) します。開始アドレス base_addr から、vindex の各 64 ビット要素をオフセットとして 32 ビット要素をロードします (各インデックスは scale の係数でスケーリングされます)。集約した要素は、デスティネーションにマージします。
_mm512_mask_i64gather_ps
extern __m512 __cdecl _mm512_mask_i64gather_ps(__m512 src, __mmask8 k, __m512i vindex, void const*, int scale, int hint);
64 ビットのインデックスを使用して、メモリーから float32 要素を集約 (Gather) します。開始アドレス base_addr から、vindex の各 64 ビット要素をオフセットとして 32 ビット要素をロードします (各インデックスは scale の係数でスケーリングされます)。集約した要素は、書き込みマスク k を使用してデスティネーションにマージします (マスクの対応するビットが設定されていない場合は src の要素がコピーされます)。
_mm512_prefetch_i64gather_ps
extern void __cdecl _mm512_prefetch_i64gather_ps(__m512i vindex, void const* base_addr, int scale, int hint);
64 ビットのインデックスを使用して、メモリーから float32 要素をプリフェッチします。開始アドレス base_addr から、vindex の各 64 ビット要素をオフセットとして 32 ビット要素をロードします (各インデックスは scale の係数でスケーリングされます)。集約した要素は、キャッシュにマージします。scalehint は 0 または 1 のいずれかで、値を書き込むキャッシュレベルを示します。
_mm512_mask_prefetch_i64gather_ps
extern void __cdecl _mm512_mask_prefetch_i64gather_ps(__m512i vindex, __mmask8 k, void const* base_addr, int scale, int hint);
64 ビットのインデックスを使用して、メモリーから float32 要素をプリフェッチします。開始アドレス base_addr から、vindex の各 64 ビット要素をオフセットとして 32 ビット要素をロードします (各インデックスは scale の係数でスケーリングされます)。集約した要素は、書き込みマスク k を使用してキャッシュにマージします (マスクの対応するビットが設定されている場合のみ要素がキャッシュに書き込まれます)。scalehint は 0 または 1 のいずれかで、値を書き込むキャッシュレベルを示します。
_mm512_prefetch_i32gather_pd
extern void __cdecl _mm512_prefetch_i32scatter_pd(void* base_addr, __m256i vindex, int scale, int hint);
32 ビットのインデックスを使用して、メモリーから float64 要素をプリフェッチします。開始アドレス base_addr から、vindex の各 32 ビット要素をオフセットとして 64 ビット要素をロードします (各インデックスは scale の係数でスケーリングされます)。
scalehint は 0 または 1 のいずれかで、値を書き込むキャッシュレベルを示します。集約した要素は、キャッシュにマージします。
_mm512_mask_prefetch_i32gather_pd
extern void __cdecl _mm512_mask_prefetch_i32scatter_pd(void* base_addr, __mmask8 k, __m256i vindex, int scale, int hint);
32 ビットのインデックスを使用して、メモリーから float64 要素をプリフェッチします。開始アドレス base_addr から、vindex の各 32 ビット要素をオフセットとして 64 ビット要素をロードします (各インデックスは scale の係数でスケーリングされます)。集約した要素は、書き込みマスク k を使用してキャッシュにマージします (マスクの対応するビットが設定されている場合のみ要素がキャッシュに書き込まれます)。scalehint は 0 または 1 のいずれかで、値を書き込むキャッシュレベルを示します。
_mm512_prefetch_i64gather_pd
extern void __cdecl _mm512_prefetch_i64gather_pd(__m512i vindex, void const* base_addr, int scale, int hint);
64 ビットのインデックスを使用して、メモリーから hint で指定されたキャッシュレベルに float64 要素をプリフェッチします。開始アドレス base_addr から、vindex の各 64 ビット要素をオフセットとして 64 ビット要素をロードします (各インデックスは scale の係数でスケーリングされます)。scalehint は 0 または 1 のいずれかです。
_mm512_mask_prefetch_i64gather_pd
extern void __cdecl _mm512_mask_prefetch_i64gather_pd(__m512i vindex, __mmask8 k, void const* base_addr, int scale, int hint);
64 ビットのインデックスを使用して、メモリーから hint で指定されたキャッシュレベルに float64 要素をプリフェッチします。開始アドレス base_addr から、vindex の各 64 ビット要素をオフセットとして 64 ビット要素をロードします (各インデックスは scale の係数でスケーリングされます)。プリフェッチした要素は、書き込みマスク k を使用してキャッシュにマージされます (マスクの対応するビットが設定されている場合はメモリーから要素がコピーされます)。scalehint は 0 または 1 のいずれかです。
_mm512_i32scatter_pd
extern void __cdecl _mm512_i32scatter_pd(void* base_addr, __m512i vindex, __m512d a, int scale, int hint);
32 ビットのインデックスを使用して、a の float64 要素をメモリーに分散 (Scatter) します。開始アドレス base_addr に、vindex の各 32 ビット要素をオフセットとして 64 ビット要素をストアします (各インデックスは scale の係数でスケーリングされます)。
_mm512_mask_i32scatter_pd
extern void __cdecl _mm512_mask_i32scatter_pd(void* base_addr, __mmask8 k, __m512i vindex, __m512d a, int scale, int hint);
32 ビットのインデックスを使用して、a の float64 要素をメモリーに分散 (Scatter) します。マスク k を使用して、開始アドレス base_addr に vindex の各 32 ビット要素をオフセットとして 64 ビット要素をストアします (各インデックスは scale の係数でスケーリングされます。マスクの対応するビットが設定されていない場合、要素はストアされません)。
_mm512_i32scatter_ps
extern void __cdecl _mm512_i32scatter_ps(void* base_addr, __m512i vindex, __m512 a, int scale, int hint);
32 ビットのインデックスを使用して、a の float32 要素をメモリーに分散 (Scatter) します。開始アドレス base_addr に、vindex の各 32 ビット要素をオフセットとして 32 ビット要素をストアします (各インデックスは scale の係数でスケーリングされます)。
_mm512_mask_i32scatter_ps
extern void __cdecl _mm512_mask_i32scatter_ps(void* base_addr, __mmask16 k, __m512i vindex, __m512 a, int scale, int hint);
32 ビットのインデックスを使用して、a の float32 要素をメモリーに分散 (Scatter) します。マスク k を使用して、開始アドレス base_addr に vindex の各 32 ビット要素をオフセットとして 32 ビット要素をストアします (各インデックスは scale の係数でスケーリングされます。マスクの対応するビットが設定されていない場合、要素はストアされません)。
_mm512_i64scatter_pd
extern void __cdecl _mm512_i64scatter_pd(void* base_addr, __m512i vindex, __m512d a, int scale, int hint);
64 ビットのインデックスを使用して、a の float64 要素をメモリーに分散 (Scatter) します。開始アドレス base_addr に、vindex の各 64 ビット要素をオフセットとして 64 ビット要素をストアします (各インデックスは scale の係数でスケーリングされます)。
_mm512_mask_i64scatter_pd
extern void __cdecl _mm512_mask_i64scatter_pd(void* base_addr, __mmask8 k, __m512i vindex, __m512d a, int scale, int hint);
64 ビットのインデックスを使用して、a の float64 要素をメモリーに分散 (Scatter) します。マスク k を使用して、開始アドレス base_addr に vindex の各 64 ビット要素をオフセットとして 64 ビット要素をストアします (各インデックスは scale の係数でスケーリングされます。マスクの対応するビットが設定されていない場合、要素はストアされません)。
_mm512_i64scatter_ps
extern void __cdecl _mm512_i64scatter_ps(void* base_addr, __m512i vindex, __m512 a, int scale, int hint);
64 ビットのインデックスを使用して、a の float32 要素をメモリーに分散 (Scatter) します。マスク k を使用して、開始アドレス base_addr に vindex の各 64 ビット要素をオフセットとして 32 ビット要素をストアします (各インデックスは scale の係数でスケーリングされます。マスクの対応するビットが設定されていない場合、要素はストアされません)。
_mm512_mask_i64scatter_ps
extern void __cdecl _mm512_mask_i64scatter_ps(void* base_addr, __mmask8 k, __m512i vindex, __m512 a, int scale, int hint);
64 ビットのインデックスを使用して、a の float32 要素をメモリーに分散 (Scatter) します。マスク k を使用して、開始アドレス base_addr に vindex の各 64 ビット要素をオフセットとして 32 ビット要素をストアします (各インデックスは scale の係数でスケーリングされます。マスクの対応するビットが設定されていない場合、要素はストアされません)。
_mm512_prefetch_i64scatter_ps
extern void __cdecl _mm512_prefetch_i64scatter_ps(void* base_addr, __m512i vindex, int scale, int hint);
64 ビットのインデックスを使用して、メモリーへ書き込む float32 要素をプリフェッチします。要素は、キャッシュレベル hint にプリフェッチされます。hint は 0 または 1 です。開始アドレス base_addr に、vindex の各 64 ビット要素をオフセットとして 32 ビット要素をストアします (各インデックスは scale の係数でスケーリングされます)。
_mm512_mask_prefetch_i64scatter_ps
extern void __cdecl _mm512_mask_prefetch_i64scatter_ps(void* base_addr, __mmask8 k, __m512i vindex, int scale, int hint);
64 ビットのインデックスを使用して、メモリーへ書き込む float32 要素をプリフェッチします。要素は、キャッシュレベル hint にプリフェッチされます。hint は 0 または 1 です。マスク k を使用して、開始アドレス base_addr に vindex の各 64 ビット要素をオフセットとして 32 ビット要素を格納します (各インデックスは scale の係数でスケーリングされます。マスクの対応するビットが設定されていない場合、要素はキャッシュに書き込まれません)。
_mm512_prefetch_i32scatter_pd
extern void __cdecl _mm512_prefetch_i32gather_pd(__m256i vindex, void const* base_addr, int scale, int hint);
32 ビットのインデックスを使用して、メモリーへ書き込む float64 要素をプリフェッチします。要素は、キャッシュレベル hint にプリフェッチされます。hint は 0 または 1 です。開始アドレス 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 ビットのインデックスを使用して、メモリーへ書き込む float64 要素をプリフェッチします。要素は、キャッシュレベル hint にプリフェッチされます。hint は 0 または 1 です。マスク k を使用して、開始アドレス base_addr から、vindex の各 32 ビット要素をオフセットとして 64 ビット要素をキャッシュに書き込みます (各インデックスは scale の係数でスケーリングされます。マスクの対応するビットが設定されていない場合、要素はキャッシュに書き込まれません)。
_mm512_prefetch_i64scatter_pd
extern void __cdecl _mm512_prefetch_i64scatter_pd(void* base_addr, __m512i vindex, int scale, int hint);
64 ビットのインデックスを使用して、メモリーへ書き込む float64 要素をプリフェッチします。要素は、キャッシュレベル hint にプリフェッチされます。hint は 0 または 1 です。開始アドレス base_addr から、vindex の各 64 ビット要素をオフセットとして 64 ビット要素をキャッシュに書き込みます (各インデックスは scale の係数でスケーリングされます)。
_mm512_mask_prefetch_i64scatter_pd
extern void __cdecl _mm512_mask_prefetch_i64scatter_pd(void* base_addr, __mmask8 k, __m512i vindex, int scale, int hint);
64 ビットのインデックスを使用して、メモリーへ書き込む float64 要素をプリフェッチします。要素は、キャッシュレベル hint にプリフェッチされます。hint は 0 または 1 です。マスク k を使用して、開始アドレス base_addr から、vindex の各 64 ビット要素をオフセットとして 64 ビット要素をキャッシュに書き込みます (各インデックスは scale の係数でスケーリングされます。マスクの対応するビットが設定されていない場合、要素はキャッシュに書き込まれません)。