インテル® 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)]; } }
シャッフル操作の結果。