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

_mm512_packstorehi_ps/_mm512_mask_packstorehi_ps

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

構文

マスクなし

extern void __cdecl _mm512_packstorehi_ps(void* mt, __m512 v1);

マスク付き

extern void __cdecl _mm512_mask_packstorehi_ps(void* mt, __mmask16 k1, __m512 v1);

引数

v1

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

k1

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

mt

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

説明

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

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

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

_mm512_packstorelo_ps(mt, v1);
_mm512_packstorehi_ps(mt+64, v1);

戻り値

なし。