Внутренний:
int mask = _mm256_movemask_epi8(__m256i s1)
создает маску со своими битами 32
, соответствующими самому значащему биту каждого байта s1
. После манипулирования маской с использованием битовых операций (например, BMI2
) я хотел бы выполнить инверсию _mm256_movemask_epi8
, т.е. Создать вектор __m256i
с самым значительным битом каждого байта, содержащим соответствующий бит uint32_t mask
.
Каков наилучший способ сделать это?
Изменить:
Мне нужно выполнить инверсию, потому что встроенный _mm256_blendv_epi8
принимает только макет типа __m256i
вместо uint32_t
. Таким образом, в полученной маске __m256i
я могу игнорировать биты, отличные от MSB каждого байта.