У меня есть следующая проблема:
В регистре __m128i
имеется 16 8-битных значений в следующем порядке:
[ 1, 5, 9, 13 ] [ 2, 6, 10, 14] [3, 7, 11, 15] [4, 8, 12, 16]
То, что я хотел бы получить, - это эффективно перетасовать байты, чтобы получить это упорядочение:
[ 1, 2, 3, 4 ] [ 5, 6, 7, 8] [9, 10, 11, 12] [13, 14, 15, 16]
На самом деле это аналог с транспозицией матрицы 4x4, но работает на 8-битном элементе внутри одного регистра.
Вы можете указать мне, какие инструкции SSE (желательно) <= SSE2) подходят для реализации этого?