インテル® C++ コンパイラー 19.1 デベロッパー・ガイドおよびリファレンス
インテル® アドバンスト・ベクトル・エクステンション 512 (インテル® AVX-512) 組込み関数のプロトタイプは、zmmintrin.h ヘッダーファイルで定義されていますが、これらの組込み関数を使用する場合、次のように immintrin.h ファイルをインクルードします。
#include <immintrin.h>
組込み関数名 |
演算 |
対応するインテル® AVX-512 命令 |
---|---|---|
_mm512_i32gather_epi32、 _mm512_mask_i32gather_epi32 |
32 ビットのインデックスを使用して、メモリーから 32 ビット整数を集約 (Gather) します。 |
VPGATHERDD |
_mm512_i32gather_epi64、 _mm512_mask_i32gather_epi64 |
32 ビットのインデックスを使用して、メモリーから 64 ビット整数を集約 (Gather) します。 |
VPGATHERDQ |
_mm512_i64gather_epi32、 _mm512_mask_i64gather_epi32 |
64 ビットのインデックスを使用して、メモリーから 32 ビット整数を集約 (Gather) します。 |
VPGATHERQD |
_mm512_i64gather_epi64、 _mm512_mask_i64gather_epi64 |
64 ビットのインデックスを使用して、メモリーから 64 ビット整数を集約 (Gather) します。 |
VPGATHERQQ |
_mm512_i32scatter_epi32、 _mm512_mask_i32scatter_epi32 |
32 ビットのインデックスを使用して、a の 32 ビット整数をメモリーに分散 (Scatter) します。 |
VPSCATTERDD |
_mm512_i32scatter_epi64、 _mm512_mask_i32scatter_epi64 |
32 ビットのインデックスを使用して、a の 64 ビット整数をメモリーに分散 (Scatter) します。 |
VPSCATTERDQ |
_mm512_i64scatter_epi32、 _mm512_mask_i64scatter_epi32 |
64 ビットのインデックスを使用して、a の 32 ビット整数をメモリーに分散 (Scatter) します。 |
VPSCATTERQD |
_mm512_i64scatter_epi64、 _mm512_mask_i64scatter_epi64 |
64 ビットのインデックスを使用して、a の 64 ビット整数をメモリーに分散 (Scatter) します。 |
VPSCATTERQQ |
変数 | 定義 |
---|---|
vindex | インデックスのベクトル |
base_addr | メモリーのベースアドレスへのポインター |
scale | コンパイル時のリテラル定数。ベクトル・インデックス・スケールとして使用されます。設定可能な値は、1、2、4、または 8 です。 |
k | セレクターとして使用されるマスク |
a | 1 つ目のソースベクトルの要素 |
src | マスクの結果に応じて使用されるソース要素 |
_mm512_i32gather_epi32
__m512i _mm512_i32gather_epi32(__m512i vindex, void const* base_addr, int scale)
32 ビットのインデックスを使用して、メモリーから 32 ビット整数を集約 (Gather) します。開始アドレス base_addr から、vindex の各 32 ビット要素をオフセットとして 32 ビット要素をロードします (各インデックスは scale の係数でスケーリングされます)。
_mm512_mask_i32gather_epi32
__m512i _mm512_mask_i32gather_epi32(__m512i src, __mmask16 k, __m512i vindex, void const* base_addr, int scale)
32 ビットのインデックスを使用して、メモリーから 32 ビット整数を集約 (Gather) します。開始アドレス base_addr から、vindex の各 32 ビット要素をオフセットとして 32 ビット要素をロードします (各インデックスは scale の係数でスケーリングされます)。集約した要素は、マスク k を使用して src とマージされます。マスクの対応するビットが設定されていない場合は src から要素がコピーされます。
_mm512_i32gather_epi64
__m512i _mm512_mask_i32gather_epi64 (__m512i src, __mmask8 k, __m256i vindex, void const* base_addr, int scale)
32 ビットのインデックスを使用して、メモリーから 64 ビット整数を集約 (Gather) します。開始アドレス base_addr から、vindex の各 32 ビット要素をオフセットとして 64 ビット要素をロードします (各インデックスは scale の係数でスケーリングされます)。
_mm512_mask_i32gather_epi64
__m512i _mm512_mask_i32gather_epi64 (__m512i src, __mmask8 k, __m256i vindex, void const* base_addr, int scale)
32 ビットのインデックスを使用して、メモリーから 64 ビット整数を集約 (Gather) します。開始アドレス base_addr から、vindex の各 32 ビット要素をオフセットとして 64 ビット要素をロードします (各インデックスは scale の係数でスケーリングされます)。集約した要素は、マスク k を使用して src とマージされます。マスクの対応するビットが設定されていない場合は src から要素がコピーされます。
_mm512_i64gather_epi32
__m256i _mm512_i64gather_epi32 (__m512i vindex, void const* base_addr, int scale)
64 ビットのインデックスを使用して、メモリーから 32 ビット整数を集約 (Gather) します。開始アドレス base_addr から、vindex の各 64 ビット要素をオフセットとして 32 ビット要素をロードします (各インデックスは scale の係数でスケーリングされます)。
_mm512_mask_i64gather_epi32
__m256i _mm512_mask_i64gather_epi32 (__m256i src, __mmask8 k, __m512i vindex, void const* base_addr, int scale)
64 ビットのインデックスを使用して、メモリーから 32 ビット整数を集約 (Gather) します。開始アドレス base_addr から、vindex の各 64 ビット要素をオフセットとして 32 ビット要素をロードします (各インデックスは scale の係数でスケーリングされます)。集約した要素は、マスク k を使用して src とマージされます。マスクの対応するビットが設定されていない場合は src から要素がコピーされます。
_mm512_i64gather_epi64
__m512i _mm512_i64gather_epi64 (__m512i vindex, void const* base_addr, int scale)
64 ビットのインデックスを使用して、メモリーから 64 ビット整数を集約 (Gather) します。開始アドレス base_addr から、vindex の各 64 ビット要素をオフセットとして 64 ビット要素をロードします (各インデックスは scale の係数でスケーリングされます)。
_mm512_mask_i64gather_epi64
__m512i _mm512_mask_i64gather_epi64 (__m512i src, __mmask8 k, __m512i vindex, void const* base_addr, int scale)
64 ビットのインデックスを使用して、メモリーから 64 ビット整数を集約 (Gather) します。開始アドレス base_addr から、vindex の各 64 ビット要素をオフセットとして 64 ビット要素をロードします (各インデックスは scale の係数でスケーリングされます)。集約した要素は、マスク k を使用して src とマージされます。マスクの対応するビットが設定されていない場合は src から要素がコピーされます。
_mm512_i32scatter_epi32
void mm512_i32scatter_epi32(void* base_addr, __m512i vindex, __m512i a, int scale)
32 ビットのインデックスを使用して、a の 32 ビット整数をメモリーに分散 (Scatter) します。開始アドレス base_addr に、vindex の各 32 ビット要素をオフセットとして 32 ビット要素をストアします (各インデックスは scale の係数でスケーリングされます)。
_mm512_mask_i32scatter_epi32
void _mm512_mask_i32scatter_epi32(void* base_addr, __mmask16 k, __m512i vindex, __m512i a, int scale
32 ビットのインデックスを使用して、a の 32 ビット整数をメモリーに分散 (Scatter) します。開始アドレス base_addr に、vindex の各 32 ビット要素をオフセットとして、マスク k に応じて 32 ビット要素をストアします (各インデックスは scale の係数でスケーリングされます)。マスクの対応するビットが設定されていない場合、要素はストアされません。
_mm512_i32scatter_epi64
void _mm512_i32scatter_epi64 (void* base_addr, __m256i vindex, __m512i a, int scale)
32 ビットのインデックスを使用して、a の 64 ビット整数をメモリーに分散 (Scatter) します。開始アドレス base_addr に、vindex の各 32 ビット要素をオフセットとして 64 ビット要素をストアします (各インデックスは scale の係数でスケーリングされます)。
_mm512_mask_i32scatter_epi64
void _mm512_mask_i32scatter_epi64 (void* base_addr, __mmask8 k, __m256i vindex, __m512i a, int scale)
32 ビットのインデックスを使用して、a の 64 ビット整数をメモリーに分散 (Scatter) します。開始アドレス base_addr に、vindex の各 32 ビット要素をオフセットとして、マスク k に応じて 64 ビット要素をストアします (各インデックスは scale の係数でスケーリングされます)。マスクの対応するビットが設定されていない場合、要素はストアされません。
_mm512_i64scatter_epi32
void _mm512_i64scatter_epi32 (void* base_addr, __m512i vindex, __m256i a, int scale)
64 ビットのインデックスを使用して、a の 32 ビット整数をメモリーに分散 (Scatter) します。開始アドレス base_addr に、vindex の各 64 ビット要素をオフセットとして 32 ビット要素をストアします (各インデックスは scale の係数でスケーリングされます)。
_mm512_mask_i64scatter_epi32
void _mm512_mask_i64scatter_epi32 (void* base_addr, __mmask8 k, __m512i vindex, __m256i a, int scale)
64 ビットのインデックスを使用して、a の 32 ビット整数をメモリーに分散 (Scatter) します。マスク k に応じて、開始アドレス base_addr に、vindex の各 64 ビット要素をオフセットとして 32 ビット要素をストアします (各インデックスは scale の係数でスケーリングされます)。マスクの対応するビットが設定されていない場合、要素はストアされません。
_mm512_i64scatter_epi64
void _mm512_i64scatter_epi64 (void* base_addr, __m512i vindex, __m512i a, int scale)
64 ビットのインデックスを使用して、a の 64 ビット整数をメモリーに分散 (Scatter) します。開始アドレス base_addr に、vindex の各 64 ビット要素をオフセットとして 64 ビット要素をストアします (各インデックスは scale の係数でスケーリングされます)。
_mm512_mask_i64scatter_epi64
void _mm512_mask_i64scatter_epi64 (void* base_addr, __mmask8 k, __m512i vindex, __m512i a, int scale)
64 ビットのインデックスを使用して、a の 64 ビット整数をメモリーに分散 (Scatter) します。開始アドレス base_addr に、vindex の各 64 ビット要素をオフセットとして、マスク k に応じて 64 ビット要素をストアします (各インデックスは scale の係数でスケーリングされます)。マスクの対応するビットが設定されていない場合、要素はストアされません。