Я пытаюсь выяснить, как использовать sse _mm_shuffle_epi8 для уплотнения 128-битного регистра.быстрый компактный регистр с использованием sse
Скажем, у меня есть входной переменной
__m128i target
, которая в основном 8 16-бит, обозначенный как:
a[0], a[1] ... a[7]. // each slot is 16 bits
мой выход называется:
__m128i output
сейчас У меня есть бит-вектор размером 8:
char bit_mask // 8 bits, i-th bit each indicate if
// the corresponding a[i] should be included
ОК, как я могу получить окончательный результат на основе бит_маски и цели ввода?
считать, мой bitvector является:
[0 1 1 0 0 0 0 0]
, то я хочу привести быть:
output = [a1, a2 , ... ]
Любой известный способ сделать это с помощью _mm_shuffle_epi8?
Предположим, что я использую массив поиска: _mm_shuffle_epi8 (a, mask_lookup [bitvector]);
Как создать массив?
Итак, вы хотите выбрать, скажем, бит 5 из каждого из 8 ваших 16-битных номеров? –