インテル® C++ コンパイラー 19.0 デベロッパー・ガイドおよびリファレンス
ソースベクトルのダブルワード要素をデスティネーション・ベクトルに並べ替えます。対応するインテル® AVX2 命令は VPERMD です。
extern __m256i _mm256_permutevar8x32_epi32(__m256i val, __m256i offsets); |
val |
並べ替える 32 ビット整数要素のベクトル |
offsets |
256 ビットのベクトルの並べ替えた要素を示す 8 つの 3 ビット・オフセット (範囲 [0 - 7] の値で指定される) からなるベクトル |
ベクトル offsets の各ダブルワード要素にあるオフセット値を使用して、ソースベクトル val からダブルワード要素を選択します。結果の要素は、デスティネーション・ベクトルの対応する要素にコピーされます。ソースベクトルの同じ要素をデスティネーション・ベクトルの複数の要素にコピーすることはできません。
以下にこの組込み関数の擬似コードを示します。
RESULT[31:0] <- (VAL[255:0] >> (OFFSETS[2:0] * 32))[31:0]; RESULT[63:32] <- (VAL[255:0] >> (OFFSETS[34:32] * 32))[31:0]; RESULT[95:64] <- (VAL[255:0] >> (OFFSETS[66:64] * 32))[31:0]; RESULT[127:96] <- (VAL[255:0] >> (OFFSETS[98:96] * 32))[31:0]; RESULT[159:128] <- (VAL[255:0] >> (OFFSETS[130:128] * 32))[31:0]; RESULT[191:160] <- (VAL[255:0] >> (OFFSETS[162:160] * 32))[31:0]; RESULT[223:192] <- (VAL[255:0] >> (OFFSETS[194:192] * 32))[31:0]; RESULT[255:224] <- (VAL[255:0] >> (OFFSETS[226:224] * 32))[31:0];
置換操作の結果。