Код: Выделить всё
const __m128i mask = _mm_set1_epi8(0x0F);
const __m128i vec_unpack_one = _mm_and_si128(vec, mask);
const __m128i vec_unpack_two = _mm_and_si128(_mm_srli_epi16(vec, 4), mask);
Например, один из 8-битных элементов vec - 01111011.
В vec_unpack_one в настоящее время оно распаковывается как 00001011, тогда как в vec_unpack_two оно распаковывается как 00000111. Однако я хочу, чтобы распакованное значение в vec_unpacked_one было 11111011, иначе значения, используемые в последующей операции, будут отличаться от того, что было на самом деле задумано.
Текущее решение, которое я имел в виду, состоит в том, чтобы отделить старший бит полубайта от побитовых операций и операций и выполнить какие-то маскируемые операции или операции, основанные на битах. Но есть ли способы добиться этого посредством прямого указания или более эффективными способами. Предложения приветствуются. Спасибо
Подробнее здесь: https://stackoverflow.com/questions/786 ... lement-and