インテル® C++ コンパイラー 18.0 デベロッパー・ガイドおよびリファレンス
インテル® アドバンスト・ベクトル・エクステンション 512 (インテル® AVX-512) 組込み関数のプロトタイプは、zmmintrin.h ヘッダーファイルで定義されていますが、実際にヘッダーをコードにインクルードする場合は、immintrin.h を使用します。
組込み関数名 |
演算 |
対応するインテル® AVX-512 命令 |
---|---|---|
_mm512_i32gather_epi32、 _mm512_mask_i32gather_epi32 |
32 ビットのインデックスを使用して、メモリーから int32 を集約 (Gather) します。 |
VPGATHERDD |
_mm512_i32gather_epi64、 _mm512_mask_i32gather_epi64 |
32 ビットのインデックスを使用して、メモリーから int64 を集約 (Gather) します。 |
VPGATHERDQ |
_mm512_i64gather_epi32、 _mm512_mask_i64gather_epi32 |
64 ビットのインデックスを使用して、メモリーから int32 を集約 (Gather) します。 |
VPGATHERQD |
_mm512_i64gather_epi64、 _mm512_mask_i64gather_epi64 |
64 ビットのインデックスを使用して、メモリーから int64 を集約 (Gather) します。 |
VPGATHERQQ |
_mm512_i32scatter_epi32、 _mm512_mask_i32scatter_epi32 |
32 ビットのインデックスを使用して、int32 をメモリーに分散 (Scatter) します。 |
VPSCATTERDD |
_mm512_i32scatter_epi64、 _mm512_mask_i32scatter_epi64 |
32 ビットのインデックスを使用して、int64 をメモリーに分散 (Scatter) します。 |
VPSCATTERDQ |
_mm512_i64scatter_epi32、 _mm512_mask_i64scatter_epi32 |
64 ビットのインデックスを使用して、int32 をメモリーに分散 (Scatter) します。 |
VPSCATTERQD |
_mm512_i64scatter_epi64、 _mm512_mask_i64scatter_epi64 |
64 ビットのインデックスを使用して、int64 をメモリーに分散 (Scatter) します。 |
VPSCATTERQQ |
変数 | 定義 |
---|---|
k | セレクターとして使用される書き込みマスク |
a | 1 つ目のソースベクトルの要素 |
src | 書き込みマスクの結果に応じて使用されるソース要素 |
downconv | _MM_DOWNCONV_EPI32_ENUM には、次のいずれかの値を指定できます。
|
downconv | _MM_DOWNCONV_EPI64_ENUM には、次のいずれかの値を指定できます。
|
upconv | _MM_UPCONV_EPI32_ENUM には、次のいずれかの値を指定できます。
|
upconv | _MM_UPCONV_EPI64_ENUM には、次の値を指定できます。
|
scale | _MM_INDEX_SCALE_ENUM には、次のいずれかの値を指定できます。
|
hint | 値を書き込むキャッシュレベル。_MM_HINT_ENUM には、次の値を指定できます。 _MM_HINT_NONE 0x0 - オフ |
_mm512_i32gather_epi32
extern __m512i __cdecl _mm512_i32gather_epi32(__m512i vindex, void const* base_addr, _MM_UPCONV_EPI32_ENUM upconv, int scale, int hint);
32 ビットのインデックスを使用して、メモリーから int32 を集約 (Gather) します。開始アドレス base_addr から、vindex の各 32 ビット要素をオフセットとして 32 ビット要素をロードします (各インデックスは scale の係数でスケーリングされます)。集約した要素は、デスティネーションにマージします。
_mm512_mask_i32gather_epi32
extern __m512i __cdecl _mm512_mask_i32gather_epi32(__m512i src, __mmask16 k, __m512i vindex, void const* base_addr, _MM_UPCONV_EPI32_ENUM upconv, int scale, int hint);
32 ビットのインデックスを使用して、メモリーから int32 を集約 (Gather) します。開始アドレス base_addr から、vindex の各 32 ビット要素をオフセットとして 32 ビット要素をロードします (各インデックスは scale の係数でスケーリングされます)。集約した要素は、書き込みマスク k を使用してデスティネーションにマージします (マスクの対応するビットが設定されていない場合は src の要素がコピーされます)。
_mm512_i32gather_epi64
extern __m512i __cdecl _mm512_i32gather_epi64(__m512i vindex, void const* base_addr, _MM_UPCONV_EPI64_ENUM upconv, int scale, int hint);
32 ビットのインデックスを使用して、メモリーから int64 を集約 (Gather) します。開始アドレス base_addr から、vindex の各 32 ビット要素をオフセットとして 64 ビット要素をロードします (各インデックスは scale の係数でスケーリングされます)。集約した要素は、デスティネーションにマージします。
_mm512_mask_i32gather_epi64
extern __m512i __cdecl _mm512_mask_i32gather_epi64(__m512i vindex, __mmask16k, void const* base_addr, _MM_UPCONV_EPI64_ENUM upconv, int scale, int hint);
32 ビットのインデックスを使用して、メモリーから int64 を集約 (Gather) します。開始アドレス base_addr から、vindex の各 32 ビット要素をオフセットとして 64 ビット要素をロードします (各インデックスは scale の係数でスケーリングされます)。集約した要素は、書き込みマスク k を使用してデスティネーションにマージします (マスクの対応するビットが設定されていない場合は src の要素がコピーされます)。
_mm512_i64gather_epi32
extern __m512i __cdecl _mm512_i64gather_epi32(__m512i vindex, void const* base_addr, _MM_UPCONV_EPI32_ENUM upconv, int scale, int hint);
64 ビットのインデックスを使用して、メモリーから int32 を集約 (Gather) します。開始アドレス base_addr から、vindex の各 64 ビット要素をオフセットとして 32 ビット要素をロードします (各インデックスは scale の係数でスケーリングされます)。集約した要素は、デスティネーションにマージします。
_mm512_mask_i64gather_epi32
extern __m512i __cdecl _mm512_mask_i64gather_epi32(__m512i src, __mmask8 k, __m512i vindex, void const* base_addr, _MM_UPCONV_EPI32_ENUM upconv, int scale, int hint);
64 ビットのインデックスを使用して、メモリーから int32 を集約 (Gather) します。開始アドレス base_addr から、vindex の各 64 ビット要素をオフセットとして 32 ビット要素をロードします (各インデックスは scale の係数でスケーリングされます)。集約した要素は、書き込みマスク k を使用してデスティネーションにマージします (マスクの対応するビットが設定されていない場合は src の要素がコピーされます)。
_mm512_i64gather_epi64
extern __m512i __cdecl _mm512_i64gather_epi64(__m512i vindex, void const* base_addr, _MM_UPCONV_EPI64_ENUM upconv, int scale, int hint);
64 ビットのインデックスを使用して、メモリーから int64 を集約 (Gather) します。開始アドレス base_addr から、vindex の各 64 ビット要素をオフセットとして 64 ビット要素をロードします (各インデックスは scale の係数でスケーリングされます)。集約した要素は、デスティネーションにマージします。
_mm512_mask_i64gather_epi64
extern __m512i __cdecl _mm512_mask_i64gather_epi64(__m512i src, __mmask8 k, __m512i vindex, void const* base_addr, _MM_UPCONV_EPI64_ENUM upconv, int scale, int hint);
64 ビットのインデックスを使用して、メモリーから int64 を集約 (Gather) します。開始アドレス base_addr から、vindex の各 64 ビット要素をオフセットとして 64 ビット要素をロードします (各インデックスは scale の係数でスケーリングされます)。集約した要素は、書き込みマスク k を使用してデスティネーションにマージします (マスクの対応するビットが設定されていない場合は src の要素がコピーされます)。
_mm512_i32scatter_epi32
extern void __cdecl _mm512_i32scatter_epi32(void* base_addr, __m512i a, __m512i vindex, _MM_DOWNCONV_EPI32_ENUM downconv, int scale, int hint);
32 ビットのインデックスを使用して、a の int32 をメモリーに分散 (Scatter) します。開始アドレス base_addr に、vindex の各 32 ビット要素をオフセットとして 32 ビット要素をストアします (各インデックスは scale の係数でスケーリングされます)。
_mm512_mask_i32scatter_epi32
extern void __cdecl _mm512_mask_i32scatter_epi32(void* base_addr, __mmask16 k, __m512i a, __m512i vindex, _MM_DOWNCONV_EPI32_ENUM downconv, int scale, int hint);
32 ビットのインデックスを使用して、a の int32 をメモリーに分散 (Scatter) します。マスク k を使用して、開始アドレス base_addr に vindex の各 32 ビット要素をオフセットとして 32 ビット要素をストアします (各インデックスは scale の係数でスケーリングされます。マスクの対応するビットが設定されていない場合、要素はストアされません)。
_mm512_i32scatter_epi64
extern void __cdecl _mm512_i32scatter_epi64(void* base_addr, __m512i a, __m512i vindex, _MM_DOWNCONV_EPI64_ENUM downconv, int scale, int hint);
32 ビットのインデックスを使用して、a の int64 をメモリーに分散 (Scatter) します。開始アドレス base_addr に、vindex の各 32 ビット要素をオフセットとして 64 ビット要素をストアします (各インデックスは scale の係数でスケーリングされます)。
_mm512_mask_i32scatter_epi64
extern void __cdecl _mm512_mask_i32scatter_epi64(void* base_addr, __mmask8 k, __m512i a, __m512i vindex, _MM_DOWNCONV_EPI64_ENUM downconv, int scale, int hint);
32 ビットのインデックスを使用して、a の int64 をメモリーに分散 (Scatter) します。マスク k を使用して、開始アドレス base_addr に vindex の各 32 ビット要素をオフセットとして 64 ビット要素をストアします (各インデックスは scale の係数でスケーリングされます。マスクの対応するビットが設定されていない場合、要素はストアされません)。
_mm512_i64scatter_epi32
extern void __cdecl _mm512_i64scatter_epi32(void* base_addr, __m512i a, __m512i vindex, _MM_DOWNCONV_EPI32_ENUM downconv, int scale, int hint);
64 ビットのインデックスを使用して、a の int32 をメモリーに分散 (Scatter) します。開始アドレス base_addr に、vindex の各 64 ビット要素をオフセットとして 32 ビット要素をストアします (各インデックスは scale の係数でスケーリングされます)。
_mm512_mask_i64scatter_epi32
extern void __cdecl _mm512_mask_i64scatter_epi32(void* base_addr, __mmask8 k, __m512i a, __m512i vindex, _MM_DOWNCONV_EPI32_ENUM downconv, int scale, int hint);
64 ビットのインデックスを使用して、a の int32 をメモリーに分散 (Scatter) します。マスク k を使用して、開始アドレス base_addr に vindex の各 64 ビット要素をオフセットとして 32 ビット要素をストアします (各インデックスは scale の係数でスケーリングされます。マスクの対応するビットが設定されていない場合、要素はストアされません)。
_mm512_i64scatter_epi64
extern void __cdecl _mm512_i64scatter_epi64(void* base_addr, __m512i a, __m512i vindex, _MM_DOWNCONV_EPI64_ENUM downconv, int scale, int hint);
64 ビットのインデックスを使用して、a の int64 をメモリーに分散 (Scatter) します。開始アドレス base_addr に、vindex の各 64 ビット要素をオフセットとして 64 ビット要素をストアします (各インデックスは scale の係数でスケーリングされます)。
_mm512_mask_i64scatter_epi64
extern void __cdecl _mm512_mask_i64scatter_epi64(void* base_addr, __mmask8 k, __m512i a, __m512i vindex, _MM_DOWNCONV_EPI64_ENUM downconv, int scale, int hint);
64 ビットのインデックスを使用して、a の int64 をメモリーに分散 (Scatter) します。マスク k を使用して、開始アドレス base_addr に vindex の各 64 ビット要素をオフセットとして 64 ビット要素をストアします (各インデックスは scale の係数でスケーリングされます。マスクの対応するビットが設定されていない場合、要素はストアされません)。