Почему _mm256_unpacklo "прыгает" двойное слово и где это говорит в документации?C++

Программы на C++. Форум разработчиков
Anonymous
Почему _mm256_unpacklo "прыгает" двойное слово и где это говорит в документации?

Сообщение Anonymous »

Я нахожу _MM256_unpacklo_epi32 инструкция немного смешной и не может действительно связать ее с документацией.
#include
#include

int main() {
__m256i a = _mm256_set_epi32(8, 7, 6, 5, 4, 3, 2, 1);
__m256i b = _mm256_set_epi32(16, 15, 14, 13, 12, 11, 10, 9);

__m256i c = _mm256_unpacklo_epi32(a, b);

int* values = (int*)&c;
for (size_t i = 0; i < 8 - 1; i++) {
std::cout
  • В чем причина этого? Есть ли инструкция, которая переключает нижние 128 -битные векторы из исходных векторов? Поведение не кажется мне таким полезным. Docs/CPP-компилятор/разработчик-Guide-Reference/2021-10/MM256-UNPACKLO-EPI8-16-32-64.HTML. Где это говорит, что второй самый низкий двойной слой игнорируется?


Подробнее здесь: https://stackoverflow.com/questions/794 ... o-in-the-d

Вернуться в «C++»