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

_mm512_packstorelo_epi32/_mm512_mask_packstorelo_epi32

int32 ベクトルのマスクがセットされている要素を、アライメントされていない int32 ストリームにパックして、メモリーの 64 バイトでアライメントされた下位の部分にマップするストリームの部分をストアします。対応する命令は VPACKSTORELD です。この組込み関数は、インテル® メニー・インテグレーテッド・コア (インテル® MIC) アーキテクチャーにのみ適用されます。

構文

マスクなし

extern void __cdecl _mm512_packstorelo_epi32(void* mt, __m512i v1);

マスク付き

extern void __cdecl _mm512_mask_packstorelo_epi32(void* mt, __mmask16 k1, __m512i v1);

引数

v1

ストアする要素を含むソースベクトル

k1

ストリームに追加する要素を選択するベクトルマスク

mt

ベクトル要素をストアするメモリー位置

説明

int32 ベクトル v1 のマスクがセットされている要素を、要素がアライメントされたアドレス mt で始まる、論理的にマップされた int64 ストリームにパックし、ストリームの下位 64 バイトの要素 (mt 以降の 64 バイトでアライメントされた最初のアドレスの前でマップするストリームの要素、現在の実装では下位のキャッシュライン) を格納します。 ストリームの長さはセットされているマスクの数に依存します。マスクがセットされていない要素はストリームに追加されません。

マスク引数 k1 は、この関数では書き込みマスクとして使用されません。 代わりに、マスクは、ストリームに追加する要素を選択する要素セレクターとして使用されます。

_mm512_packstorehi_epi32 とともに、この関数はデータをキューにパックするのに役立ちます。 また、_mm512_packstorehi_epi32 とともに、アライメントされていないベクトルのストアが可能です (つまり、ベクトルのストアは、要素単位でのみアライメントされ、ベクトル単位ではアライメントされません)。 アライメントされていないベクトルのストアは、一般に次の順で実行されます。

_mm512_packstorelo_epi32(mt, v1);
_mm512_packstorehi_epi32(mt+64, v1);

戻り値

なし。