インテル® C++ コンパイラー 19.0 デベロッパー・ガイドおよびリファレンス
インテル® アドバンスト・ベクトル・エクステンション 512 (インテル® AVX-512) 組込み関数のプロトタイプは、zmmintrin.h ヘッダーファイルで定義されていますが、これらの組込み関数を使用する場合、次のように immintrin.h ファイルをインクルードします。
#include <immintrin.h>
組込み関数名 |
演算 |
対応するインテル® AVX-512 命令 |
---|---|---|
_mm512_load_epi32、 _mm512_mask_load_epi32、 _mm512_maskz_load_epi32 |
メモリーからパックド int32 要素をロードします。 |
VMOVDQA32 |
_mm512_load_epi64、 _mm512_mask_load_epi64、 _mm512_maskz_load_epi64 |
メモリーからパックド int64 要素をロードします。 |
VMOVDQA64 |
_mm512_loadu_si512 |
アライメントされていないメモリー位置から 512 ビットのスカラー整数をロードします。 |
VMOVDQU32 |
_mm512_mask_loadu_epi32、 _mm512_maskz_loadu_epi32 |
アライメントされていないメモリー位置からパックド int32 要素をロードします。 |
VMOVDQU32 |
_mm512_mask_loadu_epi64、 _mm512_maskz_loadu_epi64 |
アライメントされていないメモリー位置からパックド int64 要素をロードします。 |
VMOVDQU64 |
_mm512_stream_load_si512 | 非テンポラルなヒントを使用してダブル・クワッドワードをロードします。 |
MOVNTDQA |
_mm512_mask_storeu_epi64 |
パックド int64 要素をアライメントされていないメモリー位置にストアします。 |
VMOVDQU64 |
_mm512_stream_si512 |
非テンポラルなヒントを使用して、パックド整数値をストアします。 |
VMOVNTDQA |
変数 | 定義 |
---|---|
k | セレクターとして使用される書き込みマスク |
a | 1 つ目のソースベクトルの要素 |
mem_addr | メモリーのベースアドレスへのポインター |
src | 書き込みマスクの結果に応じて使用されるソース要素 |
_mm512_load_si512
extern __m512i __cdecl _mm512_load_si512(void const* mem_addr);
512 ビットの整数データをメモリーからデスティネーションにロードします。
mem_addr は 64 バイト境界でアライメントされていなければなりません。そうでない場合、一般的な保護例外が発生します。
_mm512_loadu_si512
extern __m512i __cdecl _mm512_loadu_si512(void const* mem_addr);
512 ビットの整数データをメモリーからデスティネーションにロードします。
mem_addr は特定の境界でアライメントされている必要はありません。
_mm512_load_epi32
extern __m512i __cdecl _mm512_load_epi32(void const* mem_addr);
512 ビット (16 のパックド 32 ビット整数) をメモリーからデスティネーションにロードします。
mem_addr は 64 バイト境界でアライメントされていなければなりません。そうでない場合、一般的な保護例外が発生します。
_mm512_mask_load_epi32
extern __m512i __cdecl _mm512_mask_load_epi32(__m512i src, __mmask16 k, void const* mem_addr);
書き込みマスク k を使用して、パックド int32 要素をメモリーからデスティネーションにロードします (マスクの対応するビットが設定されていない場合は src の要素がコピーされます)。
mem_addr は 64 バイト境界でアライメントされていなければなりません。そうでない場合、一般的な保護例外が発生します。
_mm512_maskz_load_epi32
extern __m512i __cdecl _mm512_maskz_load_epi32(__mmask16 k, void const* mem_addr);
ゼロマスク k を使用して、パックド int32 要素をメモリーからデスティネーションにロードします (マスクの対応するビットが設定されていない場合は要素が 0 に設定されます)。
mem_addr は 64 バイト境界でアライメントされていなければなりません。そうでない場合、一般的な保護例外が発生します。
_mm512_load_epi64
extern __m512i __cdecl _mm512_load_epi64(void const* mem_addr);
512 ビット (8 つのパックド int64 要素) をメモリーからデスティネーションにロードします。
mem_addr は 64 バイト境界でアライメントされていなければなりません。そうでない場合、一般的な保護例外が発生します。
_mm512_mask_load_epi64
extern __m512i __cdecl _mm512_mask_load_epi64(__m512i src, __mmask8 k, void const* mem_addr);
書き込みマスク k を使用して、パックド int64 要素をメモリーからデスティネーションにロードします (マスクの対応するビットが設定されていない場合は src の要素がコピーされます)。
mem_addr は 64 バイト境界でアライメントされていなければなりません。そうでない場合、一般的な保護例外が発生します。
_mm512_maskz_load_epi64
extern __m512i __cdecl _mm512_maskz_load_epi64(__mmask8 k, void const* mem_addr);
ゼロマスク k を使用して、パックド int64 要素をメモリーからデスティネーションにロードします (マスクの対応するビットが設定されていない場合は要素が 0 に設定されます)。
mem_addr は 64 バイト境界でアライメントされていなければなりません。そうでない場合、一般的な保護例外が発生します。
_mm512_mask_loadu_epi32
extern __m512i __cdecl _mm512_mask_loadu_epi32(__m512i src, __mmask16 k, void const* mem_addr);
書き込みマスク k を使用して、パックド int32 要素をメモリーからデスティネーションにロードします (マスクの対応するビットが設定されていない場合は src の要素がコピーされます)。
mem_addr は特定の境界でアライメントされている必要はありません。
_mm512_maskz_loadu_epi32
extern __m512i __cdecl _mm512_maskz_loadu_epi32(__mmask16 k, void const* mem_addr);
ゼロマスク k を使用して、パックド int32 要素をメモリーからデスティネーションにロードします (マスクの対応するビットが設定されていない場合は要素が 0 に設定されます)。
mem_addr は特定の境界でアライメントされている必要はありません。
_mm512_mask_loadu_epi64
extern __m512i __cdecl _mm512_mask_loadu_epi64(__m512i src, __mmask8 k, void const* mem_addr);
書き込みマスク k を使用して、パックド int64 要素をメモリーからデスティネーションにロードします (マスクの対応するビットが設定されていない場合は src の要素がコピーされます)。
mem_addr は特定の境界でアライメントされている必要はありません。
_mm512_stream_load_si512
extern __m512i __cdecl _mm512_stream_load_si512(void * mem_addr);
非テンポラルなヒントを使用して、512 ビットの整数データをメモリーからデスティネーションにロードします。
mem_addr は 64 バイト境界でアライメントされていなければなりません。そうでない場合、一般的な保護例外が発生します。
_mm512_store_epi32
extern void __cdecl _mm512_store_epi32(void* mem_addr, __m512i a);
a の 512 ビット (16 のパックド 32 ビット整数) をメモリーにストアします。
mem_addr は 64 バイト境界でアライメントされていなければなりません。そうでない場合、一般的な保護例外が発生します。
_mm512_mask_store_epi32
extern void __cdecl _mm512_mask_store_epi32(void* mem_addr, __mmask16 k, __m512i a);
書き込みマスク k を使用して、a のパックド int32 要素をメモリーにストアします。
mem_addr は 64 バイト境界でアライメントされていなければなりません。そうでない場合、一般的な保護例外が発生します。
_mm512_store_si512
extern void __cdecl _mm512_store_si512(void* mem_addr, __m512i a);
a の 512 ビットの整数データをメモリーにストアします。
mem_addr は 64 バイト境界でアライメントされていなければなりません。そうでない場合、一般的な保護例外が発生します。
_mm512_store_epi64
extern void __cdecl _mm512_store_epi64(void* mem_addr, __m512i a);
a の 512 ビットの整数データ (8 つのパックド int64 要素) をメモリーにストアします。
mem_addr は 64 バイト境界でアライメントされていなければなりません。そうでない場合、一般的な保護例外が発生します。
_mm512_mask_store_epi64
extern void __cdecl _mm512_mask_store_epi64(void* mem_addr, __mmask8 k, __m512i a);
書き込みマスク k を使用して、a のパックド int64 要素をメモリーにストアします。
mem_addr は 64 バイト境界でアライメントされていなければなりません。そうでない場合、一般的な保護例外が発生します。
_mm512_mask_storeu_epi32
extern void __cdecl _mm512_mask_storeu_epi32(void* mem_addr, __mmask16 k, __m512i a);
書き込みマスク k を使用して、a のパックド int32 要素をメモリーにストアします。
mem_addr は特定の境界でアライメントされている必要はありません。
_mm512_mask_storeu_epi64
extern void __cdecl _mm512_mask_storeu_epi64(void* mem_addr, __mmask8 k, __m512i a);
書き込みマスク k を使用して、a のパックド int64 要素をメモリーにストアします。
mem_addr は特定の境界でアライメントされている必要はありません。
_mm512_storeu_si512
extern void __cdecl _mm512_storeu_si512(void* mem_addr, __m512i a);
a の 512 ビットの整数データをメモリーにストアします。
mem_addr は特定の境界でアライメントされている必要はありません。
_mm512_stream_si512
extern void __cdecl _mm512_stream_si512(void* mem_addr, __m512i a);
非テンポラルなヒントを使用して、a の 512 ビットの整数データをメモリーにストアします。