インテル® C++ コンパイラー 18.0 デベロッパー・ガイドおよびリファレンス
2 つ目のソースベクトルにあるシャッフル制御マスクに応じて、1 つ目のソースベクトルのバイトをシャッフルします。対応するインテル® AVX2 命令は VPSHUFB です。
extern __m256i _mm256_shuffle_epi8(__m256i a, __m256i b); |
a |
整数ソースベクトル |
b |
整数ソースベクトル |
2 つ目のソースベクトルにあるシャッフル制御マスクの設定に応じて、1 つ目のソースベクトルの 8 ビットの符号付きまたは符号なし整数をシャッフルします。
以下は、a、b、および 8 ビットの符号なし整数の配列 r の解釈を示す擬似コードです。
for (i = 0; i < 16; i++){
if (b[i] & 0x80){
r[i] = 0;
}
else{
r[i] = a[b[i] & 0x0F];
}
if (b[16+i] & 0x80){
r[16+i] = 0;
}
else{
r[16+i] = a[16+(b[16+i] & 0x0F)];
}
}シャッフル操作の結果。