Встроенная функция _mm_slli_si128
будет выполнять логический сдвиг влево из 128-битного регистра, но он ограничен непосредственными значениями сдвига и сдвигами на байты, а не на биты.
Я могу использовать встроенную функцию, например _mm_sll_epi64
или _mm_sll_epi32
, чтобы сдвинуть влево набор значений в регистре __m128i
, но они не содержат " биты переполнения.
Для сдвига на N битов представьте, что я мог бы сделать что-то вроде:
_mm_sll_epi64
_mm_srr_epi64
(для битов, которые я хочу перенести: переместить их в младший разряд)(но, вероятно, также необходимо включить проверки N относительно 64).
Есть ли лучший способ?