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

FP ロード/ストア操作の組込み関数

インテル® アドバンスト・ベクトル・エクステンション 512 (インテル® AVX-512) 組込み関数のプロトタイプは、zmmintrin.h ヘッダーファイルで定義されていますが、実際にヘッダーをコードにインクルードする場合は、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 にストアします。