インテル® C++ コンパイラー 17.0 デベロッパー・ガイドおよびリファレンス
64 ビット浮動小数点ベクトルにスウィズル操作(要素の並べ替え)を行います。対応する命令はありません。この組込み関数は、インテル® メニー・インテグレーテッド・コア (インテル® MIC) アーキテクチャーにのみ適用されます。
マスクなし extern _m512d __cdecl _mm512_swizzle_pd(_m512d v, _MM_SWIZZLE_ENUM s) |
マスク付き extern __m512d __cdecl _mm512_mask_swizzle_pd(__m512d v1_old, __mmask8 k1, __m512d v, _MM_SWIZZLE_ENUM s); |
v |
スウィズル操作を行うソースベクトル。 |
s |
スウィズル引数。次のいずれかの値を指定します。
|
v1_old |
デスティネーション・ベクトルの古い値を保持するソースベクトル。マスクビットが 0 にセットされている場合は、v1_old の対応する要素が結果ベクトルにコピーされます。 |
k1 |
書き込みマスク。k1 マスクの対応するビットが '1' にセットされているソースベクトルの要素のみ計算され、結果に格納されます。 |
スウィズル操作(要素の並べ替え)を実行します。スウィズル引数 s に応じて 64 ビット・ベクトルのレーン (各 4 要素) の要素を並べ替えます。スウィズル引数は、各レーンの要素の順序を指定します。 スウィズル引数 DCBA は並べ替えを行わないように指定します。例えば、ソースベクトルの要素が hgfe dcba (v[0]=a, v[1]=b, v[2]=c, …, v[7]=f) の場合、y=_mm512_swizzle_pd(v, _MM_SWIZ_REG_BADC) を行うとすべての要素が並べ替えられ、nmpo jilk fehg badc(y[0]=c, y[1]=d, y[2]=a, …, y[7]=f) になります。
スウィズル引数が _MM_SWIZ_REG_BBBB の場合、前の例の入力ベクトルの結果ベクトルは ffff bbbb です。
マスク付きには 2 つの追加の引数 (v1_old と k1) があります。ベクトルマスク k1 が対応するビットがセットされているソースベクトル v の要素のみ計算に使用されます。ベクトルマスク k1 の対応するビットがセットされていないベクトル v の要素は計算に使用されません。代わりに、v1_old から結果ベクトルに対応する要素がコピーされます。
_mm512_add_pd (v2, _mm512_swizzle_pd(v3, _MM_SWIZ_REG_DCBA));
float64 ベクトルにスウィズル操作を行った結果。