インテル® C++ コンパイラー 19.0 デベロッパー・ガイドおよびリファレンス
インテル® アドバンスト・ベクトル・エクステンション 512 (インテル® AVX-512) 組込み関数のプロトタイプは、zmmintrin.h ヘッダーファイルで定義されていますが、これらの組込み関数を使用する場合、次のように immintrin.h ファイルをインクルードします。
#include <immintrin.h>
組込み関数名 |
演算 |
対応するインテル® AVX-512 命令 |
---|---|---|
_mm512_load_pd、 _mm512_mask_load_pd、 _mm512_maskz_load_pd _mm512_store_pd、 _mm512_mask_store_pd |
アライメントされた float64 値をメモリーからロード/ストアします。 |
MOVAPD |
_mm512_load_ps、 _mm512_mask_load_ps、 _mm512_maskz_load_ps _mm512_store_ps、 _mm512_mask_store_ps |
アライメントされた float32 値をメモリーからロード/ストアします。 |
MOVAPS |
_mm_mask_load_sd、 _mm_maskz_load_sd _mm_mask_store_sd |
下位 float64 値をメモリーからロード/ストアします。 |
VMOVSD |
_mm_mask_load_ss、 _mm_maskz_load_ss _mm_mask_store_ss |
下位 float32 値をメモリーからロード/ストアします。 |
VMOVSS |
_mm512_loadu_pd、 _mm512_mask_loadu_pd、 _mm512_maskz_loadu_pd _mm512_storeu_pd、 _mm512_mask_storeu_pd |
アライメントされていない float64 値をメモリーからロード/ストアします。 |
VMOVUPD |
_mm512_loadu_ps、 _mm512_mask_loadu_ps、 _mm512_maskz_loadu_ps _mm512_storeu_ps、 _mm512_mask_storeu_ps |
アライメントされていない float32 値をメモリーからロード/ストアします。 |
VMOVUPS |
_mm512_stream_pd |
非テンポラルなヒントを使用して、float64 値をストアします。 |
VMOVNTPD |
_mm512_stream_ps |
非テンポラルなヒントを使用して、float32 値をストアします。 |
VMOVNTPS |
変数 | 定義 |
---|---|
k | セレクターとして使用される書き込みマスク |
a | 1 つ目のソースベクトルの要素 |
src | 書き込みマスクの結果に応じて使用されるソース要素 |
mem_addr | メモリーのベースアドレスへのポインター |
_mm512_load_pd
extern __m512d __cdecl _mm512_load_pd(void const* mem_addr);
512 ビット (8 つのパックド float64 要素) を mem_addr からデスティネーションにロードします。
mem_addr は 64 バイト境界でアライメントされていなければなりません。そうでない場合、一般的な保護例外が発生します。
_mm512_mask_load_pd
extern __m512d __cdecl _mm512_mask_load_pd(__m512d src, __mmask8 k, void const* mem_addr);
書き込みマスク k を使用して、パックド float64 要素を mem_addr からデスティネーションにロードします (マスクの対応するビットが設定されていない場合は src の要素がコピーされます)。
mem_addr は 64 バイト境界でアライメントされていなければなりません。そうでない場合、一般的な保護例外が発生します。
_mm512_maskz_load_pd
extern __m512d __cdecl _mm512_maskz_load_pd(__mmask8 k, void const* mem_addr);
ゼロマスク k を使用して、パックド float64 要素を mem_addr からデスティネーションにロードします (マスクの対応するビットが設定されていない場合は要素が 0 に設定されます)。
mem_addr は 64 バイト境界でアライメントされていなければなりません。そうでない場合、一般的な保護例外が発生します。
_mm512_load_ps
extern __m512 __cdecl _mm512_load_ps(void const* mem_addr);
512 ビット (16 のパックド float32 要素) を mem_addr からデスティネーションにロードします。
mem_addr は 64 バイト境界でアライメントされていなければなりません。そうでない場合、一般的な保護例外が発生します。
_mm512_mask_load_ps
extern __m512 __cdecl _mm512_mask_load_ps(__m512 src, __mmask16 k, void const* mem_addr);
書き込みマスク k を使用して、パックド float32 要素を mem_addr からデスティネーションにロードします (マスクの対応するビットが設定されていない場合は src の要素がコピーされます)。
mem_addr は 64 バイト境界でアライメントされていなければなりません。そうでない場合、一般的な保護例外が発生します。
_mm512_maskz_load_ps
extern __m512 __cdecl _mm512_maskz_load_ps(__mmask16 k, void const* mem_addr);
ゼロマスク k を使用して、パックド float32 要素を mem_addr からデスティネーションにロードします (マスクの対応するビットが設定されていない場合は要素が 0 に設定されます)。
mem_addr は 64 バイト境界でアライメントされていなければなりません。そうでない場合、一般的な保護例外が発生します。
_mm_mask_load_sd
extern __m128d __cdecl _mm_mask_load_sd(__m128d src, __mmask8 k, const double* mem_addr);
書き込みマスク k を使用して、float64 要素を mem_addr からデスティネーションの下位要素にロードし (マスクの対応するビットが設定されていない場合は src の要素がコピーされます)、デスティネーションの上位要素を 0 に設定します。
mem_addr は 16 バイト境界でアライメントされていなければなりません。そうでない場合、一般的な保護例外が発生します。
_mm_maskz_load_sd
extern __m128d __cdecl _mm_maskz_load_sd(__mmask8 k, const double* mem_addr);
ゼロマスク k を使用して、float64 要素を mem_addr からデスティネーションの下位要素にロードし (マスクビット 0 が設定されていない場合は要素が 0 に設定されます)、デスティネーションの上位要素を 0 に設定します。
mem_addr は 16 バイト境界でアライメントされていなければなりません。そうでない場合、一般的な保護例外が発生します。
_mm_mask_load_ss
extern __m128 __cdecl _mm_mask_load_ss(__m128 src, __mmask8 k, const float* mem_addr);
書き込みマスク k を使用して、float32 要素を mem_addr からデスティネーションの下位要素にロードし (マスクの対応するビットが設定されていない場合は src の要素がコピーされます)、デスティネーションの上位要素を 0 に設定します。
mem_addr は 16 バイト境界でアライメントされていなければなりません。そうでない場合、一般的な保護例外が発生します。
_mm_maskz_load_ss
extern __m128 __cdecl _mm_maskz_load_ss(__mmask8 k, const float* mem_addr);
ゼロマスク k を使用して、float32 要素を mem_addr からデスティネーションの下位要素にロードし (マスクビット 0 が設定されていない場合は要素が 0 に設定されます)、デスティネーションの上位要素を 0 に設定します。
mem_addr は 16 バイト境界でアライメントされていなければなりません。そうでない場合、一般的な保護例外が発生します。
_mm512_loadu_pd
extern __m512d __cdecl _mm512_loadu_pd(void const* mem_addr);
512 ビット (8 つのパックド float64 要素) を mem_addr からデスティネーションにロードします。
mem_addr は特定の境界でアライメントされている必要はありません。
_mm512_mask_loadu_pd
extern __m512d __cdecl _mm512_mask_loadu_pd(__m512d src, __mmask8 k, void const* mem_addr);
書き込みマスク k を使用して、パックド float64 要素を mem_addr からデスティネーションにロードします (マスクの対応するビットが設定されていない場合は src の要素がコピーされます)。
mem_addr は特定の境界でアライメントされている必要はありません。
_mm512_maskz_loadu_pd
extern __m512d __cdecl _mm512_maskz_loadu_pd(__mmask8 k, void const* mem_addr);
ゼロマスク k を使用して、パックド float64 要素を mem_addr からデスティネーションにロードします (マスクの対応するビットが設定されていない場合は要素が 0 に設定されます)。
mem_addr は特定の境界でアライメントされている必要はありません。
_mm512_loadu_ps
extern __m512 __cdecl _mm512_loadu_ps(void const* mem_addr);
512 ビット (16 のパックド float32 要素) を mem_addr からデスティネーションにロードします。
_mm512_mask_loadu_ps
extern __m512 __cdecl _mm512_mask_loadu_ps(__m512 src, __mmask16 k, void const* mem_addr);
書き込みマスク k を使用して、パックド float32 要素を mem_addr からデスティネーションにロードします (マスクの対応するビットが設定されていない場合は src の要素がコピーされます)。
_mm512_maskz_loadu_ps
extern __m512 __cdecl _mm512_maskz_loadu_ps(__mmask16 k, void const* mem_addr);
ゼロマスク k を使用して、パックド float32 要素を mem_addr からデスティネーションにロードします (マスクの対応するビットが設定されていない場合は要素が 0 に設定されます)。
mem_addr は特定の境界でアライメントされている必要はありません。
_mm512_store_pd
extern void __cdecl _mm512_store_pd(void* mem_addr, __m512d a);
a の 512 ビット (8 つのパックド float64 要素) を mem_addr にストアします。
_mm512_mask_store_pd
extern void __cdecl _mm512_mask_store_pd(void* mem_addr, __mmask8 k, __m512d a);
書き込みマスク k を使用して、a のパックド float64 要素を mem_addr にストアします。
mem_addr は 64 バイト境界でアライメントされていなければなりません。そうでない場合、一般的な保護例外が発生します。
_mm512_store_ps
extern void __cdecl _mm512_store_ps(void* mem_addr, __m512 a);
a の 512 ビット (16 のパックド float32 要素) を mem_addr にストアします。
mem_addr は 64 バイト境界でアライメントされていなければなりません。そうでない場合、一般的な保護例外が発生します。
_mm512_mask_store_ps
extern void __cdecl _mm512_mask_store_ps(void* mem_addr, __mmask16 k, __m512 a);
書き込みマスク k を使用して、a のパックド float32 要素を mem_addr にストアします。
mem_addr は 64 バイト境界でアライメントされていなければなりません。そうでない場合、一般的な保護例外が発生します。
_mm512_stream_pd
extern void __cdecl _mm512_stream_pd(void* mem_addr, __m512d a);
非テンポラルなヒントを使用して、a の 512 ビット (8 つのパックド float64 要素) を mem_addr にストアします。
_mm512_stream_ps
extern void __cdecl _mm512_stream_ps(void* mem_addr, __m512 a);
非テンポラルなヒントを使用して、a の 512 ビット (16 のパックド float32 要素) を mem_addr にストアします。
_mm_mask_store_sd
extern void __cdecl _mm_mask_store_sd(double* mem_addr, __mmask8 k, __m128d a);
書き込みマスク k を使用して、a の下位 float64 要素を mem_addr にストアします。
mem_addr は 16 バイト境界でアライメントされていなければなりません。そうでない場合、一般的な保護例外が発生します。
_mm_mask_store_ss
extern void __cdecl _mm_mask_store_ss(float* mem_addr, __mmask8 k, __m128 a);
書き込みマスク k を使用して、a の下位 float32 要素を mem_addr にストアします。
mem_addr は 16 バイト境界でアライメントされていなければなりません。そうでない場合、一般的な保護例外が発生します。
_mm512_storeu_pd
extern void __cdecl _mm512_storeu_pd(void* mem_addr, __m512d a);
a の 512 ビット (8 つのパックド float64 要素) を mem_addr にストアします。
mem_addr は特定の境界でアライメントされている必要はありません。
_mm512_mask_storeu_pd
extern void __cdecl _mm512_mask_storeu_pd(void* mem_addr, __mmask8 k, __m512d a);
書き込みマスク k を使用して、a のパックド float64 要素を mem_addr にストアします。
mem_addr は特定の境界でアライメントされている必要はありません。
_mm512_storeu_ps
extern void __cdecl _mm512_storeu_ps(void* mem_addr, __m512 a);
a の 512 ビット (16 のパックド float32 要素) を mem_addr にストアします。
mem_addr は特定の境界でアライメントされている必要はありません。
_mm512_mask_storeu_ps
extern void __cdecl _mm512_mask_storeu_ps(void* mem_addr, __mmask16 k, __m512 a);
書き込みマスク k を使用して、a のパックド float32 要素を mem_addr にストアします。