インテル® C++ コンパイラー 19.0 デベロッパー・ガイドおよびリファレンス

ストア操作の組込み関数

インテル® アドバンスト・ベクトル・エクステンション 512 (インテル® AVX-512) 組込み関数のプロトタイプは、zmmintrin.h ヘッダーファイルで定義されていますが、これらの組込み関数を使用する場合、次のように immintrin.h ファイルをインクルードします。

#include <immintrin.h>


変数 定義
base_addr

ロード/ストア操作を開始するメモリーのベースアドレスへのポインター

mem_addr

メモリーのベースアドレスへのポインター

k

セレクターとして使用される書き込みマスク

a

1 つ目のソースベクトルの要素


_mm_mask_compressstoreu_pd

void _mm_mask_compressstoreu_pd(void* base_addr, __mmask8 k, __m128d a)

CPUID フラグ: AVX512F、AVX512VL

命令: vcompresspd

a のアクティブな倍精度 (64 ビット) 浮動小数点要素 (書き込みマスク k の対応するビットがセットされている要素) をアライメントされていないメモリー位置 base_addr に連続してストアします。



_mm256_mask_compressstoreu_pd

void _mm256_mask_compressstoreu_pd(void* base_addr, __mmask8 k, __m256d a)

CPUID フラグ: AVX512F、AVX512VL

命令: vcompresspd

a のアクティブな倍精度 (64 ビット) 浮動小数点要素 (書き込みマスク k の対応するビットがセットされている要素) をアライメントされていないメモリー位置 base_addr に連続してストアします。



_mm_mask_compressstoreu_ps

void _mm_mask_compressstoreu_ps(void* base_addr, __mmask8 k, __m128 a)

CPUID フラグ: AVX512F、AVX512VL

命令: vcompressps

a のアクティブな単精度 (32 ビット) 浮動小数点要素 (書き込みマスク k の対応するビットがセットされている要素) をアライメントされていないメモリー位置 base_addr に連続してストアします。



_mm256_mask_compressstoreu_ps

void _mm256_mask_compressstoreu_ps(void* base_addr, __mmask8 k, __m256 a)

CPUID フラグ: AVX512F、AVX512VL

命令: vcompressps

a のアクティブな単精度 (32 ビット) 浮動小数点要素 (書き込みマスク k の対応するビットがセットされている要素) をアライメントされていないメモリー位置 base_addr に連続してストアします。



_mm_mask_store_pd

void _mm_mask_store_pd(void* mem_addr, __mmask8 k, __m128d a)

CPUID フラグ: AVX512F、AVX512VL

命令: vmovapd

書き込みマスク k を使用して、a のパックド倍精度 (64 ビット) 浮動小数点要素をメモリーにストアします。mem_addr は 16 バイト境界でアライメントされていなければなりません。そうでない場合、一般的な保護例外が発生する可能性があります。



_mm256_mask_store_pd

void _mm256_mask_store_pd(void* mem_addr, __mmask8 k, __m256d a)

CPUID フラグ: AVX512F、AVX512VL

命令: vmovapd

書き込みマスク k を使用して、a のパックド倍精度 (64 ビット) 浮動小数点要素をメモリーにストアします。mem_addr は 32 バイト境界でアライメントされていなければなりません。そうでない場合、一般的な保護例外が発生する可能性があります。



_mm_mask_store_ps

void _mm_mask_store_ps(void* mem_addr, __mmask8 k, __m128 a)

CPUID フラグ: AVX512F、AVX512VL

命令: vmovaps

書き込みマスク k を使用して、a のパックド単精度 (32 ビット) 浮動小数点要素をメモリーにストアします。mem_addr は 16 バイト境界でアライメントされていなければなりません。そうでない場合、一般的な保護例外が発生する可能性があります。



_mm256_mask_store_ps

void _mm256_mask_store_ps(void* mem_addr, __mmask8 k, __m256 a)

CPUID フラグ: AVX512F、AVX512VL

命令: vmovaps

書き込みマスク k を使用して、a のパックド単精度 (32 ビット) 浮動小数点要素をメモリーにストアします。mem_addr は 32 バイト境界でアライメントされていなければなりません。そうでない場合、一般的な保護例外が発生する可能性があります。



_mm_mask_storeu_pd

void _mm_mask_storeu_pd(void* mem_addr, __mmask8 k, __m128d a)

CPUID フラグ: AVX512F、AVX512VL

命令: vmovupd

書き込みマスク k を使用して、a のパックド倍精度 (64 ビット) 浮動小数点要素をメモリーにストアします。mem_addr は特定の境界でアライメントされている必要はありません。



_mm256_mask_storeu_pd

void _mm256_mask_storeu_pd(void* mem_addr, __mmask8 k, __m256d a)

CPUID フラグ: AVX512F、AVX512VL

命令: vmovupd

書き込みマスク k を使用して、a のパックド倍精度 (64 ビット) 浮動小数点要素をメモリーにストアします。mem_addr は特定の境界でアライメントされている必要はありません。



_mm_mask_storeu_ps

void _mm_mask_storeu_ps(void* mem_addr, __mmask8 k, __m128 a)

CPUID フラグ: AVX512F、AVX512VL

命令: vmovups

書き込みマスク k を使用して、a のパックド単精度 (32 ビット) 浮動小数点要素をメモリーにストアします。mem_addr は特定の境界でアライメントされている必要はありません。



_mm256_mask_storeu_ps

void _mm256_mask_storeu_ps(void* mem_addr, __mmask8 k, __m256 a)

CPUID フラグ: AVX512F、AVX512VL

命令: vmovups

書き込みマスク k を使用して、a のパックド単精度 (32 ビット) 浮動小数点要素をメモリーにストアします。mem_addr は特定の境界でアライメントされている必要はありません。



_mm_i32scatter_pd

void _mm_i32scatter_pd(void* base_addr, __m128i vindex, __m128d a, const int scale)

CPUID フラグ: AVX512F、AVX512VL

命令: vscatterdpd

32 ビットのインデックスを使用して、a の倍精度 (64 ビット) 浮動小数点要素をメモリーに分散 (Scatter) します。開始アドレス base_addr に、vindex の各 32 ビット要素をオフセットとして 64 ビット要素をストアします (各インデックスは scale の係数でスケーリングされます)。scale は、1、2、4、または 8 でなければなりません。



_mm_mask_i32scatter_pd

void _mm_mask_i32scatter_pd(void* base_addr, __mmask8 k, __m128i vindex, __m128d a, const int scale)

CPUID フラグ: AVX512F、AVX512VL

命令: vscatterdpd

32 ビットのインデックスを使用して、a の倍精度 (64 ビット) 浮動小数点要素をメモリーに分散 (Scatter) します。マスク k を使用して、開始アドレス base_addrvindex の各 32 ビット要素をオフセットとして 64 ビット要素をストアします (各インデックスは scale の係数でスケーリングされます。マスクの対応するビットが設定されていない場合、要素はストアされません)。scale は、1、2、4、または 8 でなければなりません。



_mm256_i32scatter_pd

void _mm256_i32scatter_pd(void* base_addr, __m128i vindex, __m256d a, const int scale)

CPUID フラグ: AVX512F、AVX512VL

命令: vscatterdpd

32 ビットのインデックスを使用して、a の倍精度 (64 ビット) 浮動小数点要素をメモリーに分散 (Scatter) します。開始アドレス base_addr に、vindex の各 32 ビット要素をオフセットとして 64 ビット要素をストアします (各インデックスは scale の係数でスケーリングされます)。scale は、1、2、4、または 8 でなければなりません。



_mm256_mask_i32scatter_pd

void _mm256_mask_i32scatter_pd(void* base_addr, __mmask8 k, __m128i vindex, __m256d a, const int scale)

CPUID フラグ: AVX512F、AVX512VL

命令: vscatterdpd

32 ビットのインデックスを使用して、a の倍精度 (64 ビット) 浮動小数点要素をメモリーに分散 (Scatter) します。マスク k を使用して、開始アドレス base_addrvindex の各 32 ビット要素をオフセットとして 64 ビット要素をストアします (各インデックスは scale の係数でスケーリングされます。マスクの対応するビットが設定されていない場合、要素はストアされません)。scale は、1、2、4、または 8 でなければなりません。



_mm_i32scatter_ps

void _mm_i32scatter_ps(void* base_addr, __m128i vindex, __m128 a, const int scale)

CPUID フラグ: AVX512F、AVX512VL

命令: vscatterdps

32 ビットのインデックスを使用して、a の単精度 (32 ビット) 浮動小数点要素をメモリーに分散 (Scatter) します。開始アドレス base_addr に、vindex の各 32 ビット要素をオフセットとして 32 ビット要素をストアします (各インデックスは scale の係数でスケーリングされます)。scale は、1、2、4、または 8 でなければなりません。



_mm_mask_i32scatter_ps

void _mm_mask_i32scatter_ps(void* base_addr, __mmask8 k, __m128i vindex, __m128 a, const int scale)

CPUID フラグ: AVX512F、AVX512VL

命令: vscatterdps

32 ビットのインデックスを使用して、a の単精度 (32 ビット) 浮動小数点要素をメモリーに分散 (Scatter) します。マスク k を使用して、開始アドレス base_addrvindex の各 32 ビット要素をオフセットとして 32 ビット要素をストアします (各インデックスは scale の係数でスケーリングされます。マスクの対応するビットが設定されていない場合、要素はストアされません)。scale は、1、2、4、または 8 でなければなりません。



_mm256_i32scatter_ps

void _mm256_i32scatter_ps(void* base_addr, __m256i vindex, __m256 a, const int scale)

CPUID フラグ: AVX512F、AVX512VL

命令: vscatterdps

32 ビットのインデックスを使用して、a の単精度 (32 ビット) 浮動小数点要素をメモリーに分散 (Scatter) します。開始アドレス base_addr に、vindex の各 32 ビット要素をオフセットとして 32 ビット要素をストアします (各インデックスは scale の係数でスケーリングされます)。scale は、1、2、4、または 8 でなければなりません。



_mm256_mask_i32scatter_ps

void _mm256_mask_i32scatter_ps(void* base_addr, __mmask8 k, __m256i vindex, __m256 a, const int scale)

CPUID フラグ: AVX512F、AVX512VL

命令: vscatterdps

32 ビットのインデックスを使用して、a の単精度 (32 ビット) 浮動小数点要素をメモリーに分散 (Scatter) します。マスク k を使用して、開始アドレス base_addrvindex の各 32 ビット要素をオフセットとして 32 ビット要素をストアします (各インデックスは scale の係数でスケーリングされます。マスクの対応するビットが設定されていない場合、要素はストアされません)。scale は、1、2、4、または 8 でなければなりません。



_mm_i64scatter_pd

void _mm_i64scatter_pd(void* base_addr, __m128i vindex, __m128d a, const int scale)

CPUID フラグ: AVX512F、AVX512VL

命令: vscatterqpd

64 ビットのインデックスを使用して、a の倍精度 (64 ビット) 浮動小数点要素をメモリーに分散 (Scatter) します。開始アドレス base_addr に、vindex の各 64 ビット要素をオフセットとして 64 ビット要素をストアします (各インデックスは scale の係数でスケーリングされます)。scale は、1、2、4、または 8 でなければなりません。



_mm_mask_i64scatter_pd

void _mm_mask_i64scatter_pd(void* base_addr, __mmask8 k, __m128i vindex, __m128d a, const int scale)

CPUID フラグ: AVX512F、AVX512VL

命令: vscatterqpd

64 ビットのインデックスを使用して、a の倍精度 (64 ビット) 浮動小数点要素をメモリーに分散 (Scatter) します。マスク k を使用して、開始アドレス base_addrvindex の各 64 ビット要素をオフセットとして 64 ビット要素をストアします (各インデックスは scale の係数でスケーリングされます。マスクの対応するビットが設定されていない場合、要素はストアされません)。scale は、1、2、4、または 8 でなければなりません。



_mm256_i64scatter_pd

void _mm256_i64scatter_pd(void* base_addr, __m256i vindex, __m256d a, const int scale)

CPUID フラグ: AVX512F、AVX512VL

命令: vscatterqpd

64 ビットのインデックスを使用して、a の倍精度 (64 ビット) 浮動小数点要素をメモリーに分散 (Scatter) します。開始アドレス base_addr に、vindex の各 64 ビット要素をオフセットとして 64 ビット要素をストアします (各インデックスは scale の係数でスケーリングされます)。scale は、1、2、4、または 8 でなければなりません。



_mm256_mask_i64scatter_pd

void _mm256_mask_i64scatter_pd(void* base_addr, __mmask8 k, __m256i vindex, __m256d a, const int scale)

CPUID フラグ: AVX512F、AVX512VL

命令: vscatterqpd

64 ビットのインデックスを使用して、a の倍精度 (64 ビット) 浮動小数点要素をメモリーに分散 (Scatter) します。マスク k を使用して、開始アドレス base_addrvindex の各 64 ビット要素をオフセットとして 64 ビット要素をストアします (各インデックスは scale の係数でスケーリングされます。マスクの対応するビットが設定されていない場合、要素はストアされません)。scale は、1、2、4、または 8 でなければなりません。



_mm_i64scatter_ps

void _mm_i64scatter_ps(void* base_addr, __m128i vindex, __m128 a, const int scale)

CPUID フラグ: AVX512F、AVX512VL

命令: vscatterqps

64 ビットのインデックスを使用して、a の単精度 (32 ビット) 浮動小数点要素をメモリーに分散 (Scatter) します。マスク k を使用して、開始アドレス base_addrvindex の各 64 ビット要素をオフセットとして 32 ビット要素をストアします (各インデックスは scale の係数でスケーリングされます。マスクの対応するビットが設定されていない場合、要素はストアされません)。scale は、1、2、4、または 8 でなければなりません。



_mm_mask_i64scatter_ps

void _mm_mask_i64scatter_ps(void* base_addr, __mmask8 k, __m128i vindex, __m128 a, const int scale)

CPUID フラグ: AVX512F、AVX512VL

命令: vscatterqps

64 ビットのインデックスを使用して、a の単精度 (32 ビット) 浮動小数点要素をメモリーに分散 (Scatter) します。マスク k を使用して、開始アドレス base_addrvindex の各 64 ビット要素をオフセットとして 32 ビット要素をストアします (各インデックスは scale の係数でスケーリングされます。マスクの対応するビットが設定されていない場合、要素はストアされません)。scale は、1、2、4、または 8 でなければなりません。



_mm256_i64scatter_ps

void _mm256_i64scatter_ps(void* base_addr, __m256i vindex, __m128 a, const int scale)

CPUID フラグ: AVX512F、AVX512VL

命令: vscatterqps

64 ビットのインデックスを使用して、a の単精度 (32 ビット) 浮動小数点要素をメモリーに分散 (Scatter) します。マスク k を使用して、開始アドレス base_addrvindex の各 64 ビット要素をオフセットとして 32 ビット要素をストアします (各インデックスは scale の係数でスケーリングされます。マスクの対応するビットが設定されていない場合、要素はストアされません)。scale は、1、2、4、または 8 でなければなりません。



_mm256_mask_i64scatter_ps

void _mm256_mask_i64scatter_ps(void* base_addr, __mmask8 k, __m256i vindex, __m128 a, const int scale)

CPUID フラグ: AVX512F、AVX512VL

命令: vscatterqps

64 ビットのインデックスを使用して、a の単精度 (32 ビット) 浮動小数点要素をメモリーに分散 (Scatter) します。マスク k を使用して、開始アドレス base_addrvindex の各 64 ビット要素をオフセットとして 32 ビット要素をストアします (各インデックスは scale の係数でスケーリングされます。マスクの対応するビットが設定されていない場合、要素はストアされません)。scale は、1、2、4、または 8 でなければなりません。



_mm_mask_store_epi32

void _mm_mask_store_epi32(void* mem_addr, __mmask8 k, __m128i a)

CPUID フラグ: AVX512F、AVX512VL

命令: vmovdqa32

書き込みマスク k を使用して、a のパックド 32 ビット整数をメモリーにストアします。mem_addr は 16 バイト境界でアライメントされていなければなりません。そうでない場合、一般的な保護例外が発生する可能性があります。



_mm256_mask_store_epi32

void _mm256_mask_store_epi32(void* mem_addr, __mmask8 k, __m256i a)

CPUID フラグ: AVX512F、AVX512VL

命令: vmovdqa32

書き込みマスク k を使用して、a のパックド 32 ビット整数をメモリーにストアします。mem_addr は 32 バイト境界でアライメントされていなければなりません。そうでない場合、一般的な保護例外が発生する可能性があります。



_mm_mask_store_epi64

void _mm_mask_store_epi64(void* mem_addr, __mmask8 k, __m128i a)

CPUID フラグ: AVX512F、AVX512VL

命令: vmovdqa64

書き込みマスク k を使用して、a のパックド 64 ビット整数をメモリーにストアします。mem_addr は 16 バイト境界でアライメントされていなければなりません。そうでない場合、一般的な保護例外が発生する可能性があります。



_mm256_mask_store_epi64

void _mm256_mask_store_epi64(void* mem_addr, __mmask8 k, __m256i a)

CPUID フラグ: AVX512F、AVX512VL

命令: vmovdqa64

書き込みマスク k を使用して、a のパックド 64 ビット整数をメモリーにストアします。mem_addr は 32 バイト境界でアライメントされていなければなりません。そうでない場合、一般的な保護例外が発生する可能性があります。



_mm_mask_storeu_epi16

void _mm_mask_storeu_epi16(void* mem_addr, __mmask8 k, __m128i a)

CPUID フラグ: AVX512BW、AVX512VL

命令: vmovdqu16

書き込みマスク k を使用して、a のパックド 16 ビット整数をメモリーにストアします。mem_addr は特定の境界でアライメントされている必要はありません。



_mm256_mask_storeu_epi16

void _mm256_mask_storeu_epi16(void* mem_addr, __mmask16 k, __m256i a)

CPUID フラグ: AVX512BW、AVX512VL

命令: vmovdqu16

書き込みマスク k を使用して、a のパックド 16 ビット整数をメモリーにストアします。mem_addr は特定の境界でアライメントされている必要はありません。



_mm512_mask_storeu_epi16

void _mm512_mask_storeu_epi16(void* mem_addr, __mmask32 k, __m512i a)

CPUID フラグ: AVX512BW

命令: vmovdqu16

書き込みマスク k を使用して、a のパックド 16 ビット整数をメモリーにストアします。mem_addr は特定の境界でアライメントされている必要はありません。



_mm_mask_storeu_epi32

void _mm_mask_storeu_epi32(void* mem_addr, __mmask8 k, __m128i a)

CPUID フラグ: AVX512F、AVX512VL

命令: vmovdqu32

書き込みマスク k を使用して、a のパックド 32 ビット整数をメモリーにストアします。mem_addr は特定の境界でアライメントされている必要はありません。



_mm256_mask_storeu_epi32

void _mm256_mask_storeu_epi32(void* mem_addr, __mmask8 k, __m256i a)

CPUID フラグ: AVX512F、AVX512VL

命令: vmovdqu32

書き込みマスク k を使用して、a のパックド 32 ビット整数をメモリーにストアします。mem_addr は特定の境界でアライメントされている必要はありません。



_mm_mask_storeu_epi64

void _mm_mask_storeu_epi64(void* mem_addr, __mmask8 k, __m128i a)

CPUID フラグ: AVX512F、AVX512VL

命令: vmovdqu64

書き込みマスク k を使用して、a のパックド 64 ビット整数をメモリーにストアします。mem_addr は特定の境界でアライメントされている必要はありません。



_mm256_mask_storeu_epi64

void _mm256_mask_storeu_epi64(void* mem_addr, __mmask8 k, __m256i a)

CPUID フラグ: AVX512F、AVX512VL

命令: vmovdqu64

書き込みマスク k を使用して、a のパックド 64 ビット整数をメモリーにストアします。mem_addr は特定の境界でアライメントされている必要はありません。



_mm_mask_storeu_epi8

void _mm_mask_storeu_epi8(void* mem_addr, __mmask16 k, __m128i a)

CPUID フラグ: AVX512BW、AVX512VL

命令: vmovdqu8

書き込みマスク k を使用して、a のパックド 8 ビット整数をメモリーにストアします。mem_addr は特定の境界でアライメントされている必要はありません。



_mm256_mask_storeu_epi8

void _mm256_mask_storeu_epi8(void* mem_addr, __mmask32 k, __m256i a)

CPUID フラグ: AVX512BW、AVX512VL

命令: vmovdqu8

書き込みマスク k を使用して、a のパックド 8 ビット整数をメモリーにストアします。mem_addr は特定の境界でアライメントされている必要はありません。



_mm512_mask_storeu_epi8

void _mm512_mask_storeu_epi8(void* mem_addr, __mmask64 k, __m512i a)

CPUID フラグ: AVX512BW

命令: vmovdqu8

書き込みマスク k を使用して、a のパックド 8 ビット整数をメモリーにストアします。mem_addr は特定の境界でアライメントされている必要はありません。



_mm_mask_compressstoreu_epi32

void _mm_mask_compressstoreu_epi32(void* base_addr, __mmask8 k, __m128i a)

CPUID フラグ: AVX512F、AVX512VL

命令: vpcompressd

a のアクティブな 32 ビット整数 (書き込みマスク k の対応するビットがセットされている要素) をアライメントされていないメモリー位置 base_addr に連続してストアします。



_mm256_mask_compressstoreu_epi32

void _mm256_mask_compressstoreu_epi32(void* base_addr, __mmask8 k, __m256i a)

CPUID フラグ: AVX512F、AVX512VL

命令: vpcompressd

a のアクティブな 32 ビット整数 (書き込みマスク k の対応するビットがセットされている要素) をアライメントされていないメモリー位置 base_addr に連続してストアします。



_mm_mask_compressstoreu_epi64

void _mm_mask_compressstoreu_epi64(void* base_addr, __mmask8 k, __m128i a)

CPUID フラグ: AVX512F、AVX512VL

命令: vpcompressq

a のアクティブな 64 ビット整数 (書き込みマスク k の対応するビットがセットされている要素) をアライメントされていないメモリー位置 base_addr に連続してストアします。



_mm256_mask_compressstoreu_epi64

void _mm256_mask_compressstoreu_epi64(void* base_addr, __mmask8 k, __m256i a)

CPUID フラグ: AVX512F、AVX512VL

命令: vpcompressq

a のアクティブな 64 ビット整数 (書き込みマスク k の対応するビットがセットされている要素) をアライメントされていないメモリー位置 base_addr に連続してストアします。



_mm_i32scatter_epi32

void _mm_i32scatter_epi32(void* base_addr, __m128i vindex, __m128i a, const int scale)

CPUID フラグ: AVX512F、AVX512VL

命令: vpscatterdd

32 ビットのインデックスを使用して、a の 32 ビット整数をメモリーに分散 (Scatter) します。開始アドレス base_addr に、vindex の各 32 ビット要素をオフセットとして 32 ビット要素をストアします (各インデックスは scale の係数でスケーリングされます)。scale は、1、2、4、または 8 でなければなりません。



_mm_mask_i32scatter_epi32

void _mm_mask_i32scatter_epi32(void* base_addr, __mmask8 k, __m128i vindex, __m128i a, const int scale)

CPUID フラグ: AVX512F、AVX512VL

命令: vpscatterdd

32 ビットのインデックスを使用して、a の 32 ビット整数をメモリーに分散 (Scatter) します。マスク k を使用して、開始アドレス base_addrvindex の各 32 ビット要素をオフセットとして 32 ビット要素をストアします (各インデックスは scale の係数でスケーリングされます。マスクの対応するビットが設定されていない場合、要素はストアされません)。scale は、1、2、4、または 8 でなければなりません。



_mm256_i32scatter_epi32

void _mm256_i32scatter_epi32(void* base_addr, __m256i vindex, __m256i a, const int scale)

CPUID フラグ: AVX512F、AVX512VL

命令: vpscatterdd

32 ビットのインデックスを使用して、a の 32 ビット整数をメモリーに分散 (Scatter) します。開始アドレス base_addr に、vindex の各 32 ビット要素をオフセットとして 32 ビット要素をストアします (各インデックスは scale の係数でスケーリングされます)。scale は、1、2、4、または 8 でなければなりません。



_mm256_mask_i32scatter_epi32

void _mm256_mask_i32scatter_epi32(void* base_addr, __mmask8 k, __m256i vindex, __m256i a, const int scale)

CPUID フラグ: AVX512F、AVX512VL

命令: vpscatterdd

32 ビットのインデックスを使用して、a の 32 ビット整数をメモリーに分散 (Scatter) します。マスク k を使用して、開始アドレス base_addrvindex の各 32 ビット要素をオフセットとして 32 ビット要素をストアします (各インデックスは scale の係数でスケーリングされます。マスクの対応するビットが設定されていない場合、要素はストアされません)。scale は、1、2、4、または 8 でなければなりません。



_mm_i32scatter_epi64

void _mm_i32scatter_epi64(void* base_addr, __m128i vindex, __m128i a, const int scale)

CPUID フラグ: AVX512F、AVX512VL

命令: vpscatterdq

32 ビットのインデックスを使用して、a の 64 ビット整数をメモリーに分散 (Scatter) します。開始アドレス base_addr に、vindex の各 32 ビット要素をオフセットとして 64 ビット要素をストアします (各インデックスは scale の係数でスケーリングされます)。scale は、1、2、4、または 8 でなければなりません。



_mm_mask_i32scatter_epi64

void _mm_mask_i32scatter_epi64(void* base_addr, __mmask8 k, __m128i vindex, __m128i a, const int scale)

CPUID フラグ: AVX512F、AVX512VL

命令: vpscatterdq

32 ビットのインデックスを使用して、a の 64 ビット整数をメモリーに分散 (Scatter) します。マスク k を使用して、開始アドレス base_addrvindex の各 32 ビット要素をオフセットとして 64 ビット要素をストアします (各インデックスは scale の係数でスケーリングされます。マスクの対応するビットが設定されていない場合、要素はストアされません)。scale は、1、2、4、または 8 でなければなりません。



_mm256_i32scatter_epi64

void _mm256_i32scatter_epi64(void* base_addr, __m128i vindex, __m256i a, const int scale)

CPUID フラグ: AVX512F、AVX512VL

命令: vpscatterdq

32 ビットのインデックスを使用して、a の 64 ビット整数をメモリーに分散 (Scatter) します。開始アドレス base_addr に、vindex の各 32 ビット要素をオフセットとして 64 ビット要素をストアします (各インデックスは scale の係数でスケーリングされます)。scale は、1、2、4、または 8 でなければなりません。



_mm256_mask_i32scatter_epi64

void _mm256_mask_i32scatter_epi64(void* base_addr, __mmask8 k, __m128i vindex, __m256i a, const int scale)

CPUID フラグ: AVX512F、AVX512VL

命令: vpscatterdq

32 ビットのインデックスを使用して、a の 64 ビット整数をメモリーに分散 (Scatter) します。マスク k を使用して、開始アドレス base_addrvindex の各 32 ビット要素をオフセットとして 64 ビット要素をストアします (各インデックスは scale の係数でスケーリングされます。マスクの対応するビットが設定されていない場合、要素はストアされません)。scale は、1、2、4、または 8 でなければなりません。



_mm_i64scatter_epi32

void _mm_i64scatter_epi32(void* base_addr, __m128i vindex, __m128i a, const int scale)

CPUID フラグ: AVX512F、AVX512VL

命令: vpscatterqd

64 ビットのインデックスを使用して、a の 32 ビット整数をメモリーに分散 (Scatter) します。開始アドレス base_addr に、vindex の各 64 ビット要素をオフセットとして 32 ビット要素をストアします (各インデックスは scale の係数でスケーリングされます)。scale は、1、2、4、または 8 でなければなりません。



_mm_mask_i64scatter_epi32

void _mm_mask_i64scatter_epi32(void* base_addr, __mmask8 k, __m128i vindex, __m128i a, const int scale)

CPUID フラグ: AVX512F、AVX512VL

命令: vpscatterqd

64 ビットのインデックスを使用して、a の 32 ビット整数をメモリーに分散 (Scatter) します。マスク k を使用して、開始アドレス base_addrvindex の各 64 ビット要素をオフセットとして 32 ビット要素をストアします (各インデックスは scale の係数でスケーリングされます。マスクの対応するビットが設定されていない場合、要素はストアされません)。scale は、1、2、4、または 8 でなければなりません。



_mm256_i64scatter_epi32

void _mm256_i64scatter_epi32(void* base_addr, __m256i vindex, __m128i a, const int scale)

CPUID フラグ: AVX512F、AVX512VL

命令: vpscatterqd

64 ビットのインデックスを使用して、a の 32 ビット整数をメモリーに分散 (Scatter) します。開始アドレス base_addr に、vindex の各 64 ビット要素をオフセットとして 32 ビット要素をストアします (各インデックスは scale の係数でスケーリングされます)。scale は、1、2、4、または 8 でなければなりません。



_mm256_mask_i64scatter_epi32

void _mm256_mask_i64scatter_epi32(void* base_addr, __mmask8 k, __m256i vindex, __m128i a, const int scale)

CPUID フラグ: AVX512F、AVX512VL

命令: vpscatterqd

64 ビットのインデックスを使用して、a の 32 ビット整数をメモリーに分散 (Scatter) します。マスク k を使用して、開始アドレス base_addrvindex の各 64 ビット要素をオフセットとして 32 ビット要素をストアします (各インデックスは scale の係数でスケーリングされます。マスクの対応するビットが設定されていない場合、要素はストアされません)。scale は、1、2、4、または 8 でなければなりません。



_mm_i64scatter_epi64

void _mm_i64scatter_epi64(void* base_addr, __m128i vindex, __m128i a, const int scale)

CPUID フラグ: AVX512F、AVX512VL

命令: vpscatterqq

64 ビットのインデックスを使用して、a の 64 ビット整数をメモリーに分散 (Scatter) します。開始アドレス base_addr に、vindex の各 64 ビット要素をオフセットとして 64 ビット要素をストアします (各インデックスは scale の係数でスケーリングされます)。scale は、1、2、4、または 8 でなければなりません。



_mm_mask_i64scatter_epi64

void _mm_mask_i64scatter_epi64(void* base_addr, __mmask8 k, __m128i vindex, __m128i a, const int scale)

CPUID フラグ: AVX512F、AVX512VL

命令: vpscatterqq

64 ビットのインデックスを使用して、a の 64 ビット整数をメモリーに分散 (Scatter) します。マスク k を使用して、開始アドレス base_addrvindex の各 64 ビット要素をオフセットとして 64 ビット要素をストアします (各インデックスは scale の係数でスケーリングされます。マスクの対応するビットが設定されていない場合、要素はストアされません)。scale は、1、2、4、または 8 でなければなりません。



_mm256_i64scatter_epi64

void _mm256_i64scatter_epi64(void* base_addr, __m256i vindex, __m256i a, const int scale)

CPUID フラグ: AVX512F、AVX512VL

命令: vpscatterqq

64 ビットのインデックスを使用して、a の 64 ビット整数をメモリーに分散 (Scatter) します。開始アドレス base_addr に、vindex の各 64 ビット要素をオフセットとして 64 ビット要素をストアします (各インデックスは scale の係数でスケーリングされます)。scale は、1、2、4、または 8 でなければなりません。



_mm256_mask_i64scatter_epi64

void _mm256_mask_i64scatter_epi64(void* base_addr, __mmask8 k, __m256i vindex, __m256i a, const int scale)

CPUID フラグ: AVX512F、AVX512VL

命令: vpscatterqq

64 ビットのインデックスを使用して、a の 64 ビット整数をメモリーに分散 (Scatter) します。マスク k を使用して、開始アドレス base_addrvindex の各 64 ビット要素をオフセットとして 64 ビット要素をストアします (各インデックスは scale の係数でスケーリングされます。マスクの対応するビットが設定されていない場合、要素はストアされません)。scale は、1、2、4、または 8 でなければなりません。