Есть ли какой-либо изящный способ загрузить 16 8-битных данных и объединить их в 4 unsigned int?Как загрузить 16 8-битных данных и объединить их в 4 unsigned int?
нравится следующим образом:
нагрузки следующий массив (16 epi8) путем _mm_load_si128() к __m128i
0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xAA, 0xBB, 0xCC, 0xdd, 0xEE, 0xff
, а затем сделать некоторые манипуляции, такие, что регистр (__ m128i) становится 4 epi32,
0x33221100, 0x77665544, 0xbbaa8899, 0xffeeddcc
спасибо!
Как данные заложены в памяти? –
Вопрос одновременно указывает на то, что эти 16 байтов не будут последовательно упакованы и что они есть. Что он? – harold
Вот как я интерпретирую ваш вопрос: у вас есть эти байты, хранящиеся в памяти, с 0x00 в первом байте, 0x11 во втором и так далее. Теперь вы хотите, чтобы они были сохранены в виде 32-разрядных маленьких конечных чисел (исходная конфигурация была бы большой endian). Просто поменяйте местами 0 и 3, позиции 1 и 2, позиции 4 и 7, позиции 5 и 6 и т. Д. Вам нужен список примеров? –