Advanced Vector Extensions (AVX) - это расширение архитектуры набора инструкций x86 для микропроцессоров Intel и AMD.

AVX обеспечивает новую кодировку для всех предыдущих инструкций Intel SSE, обеспечивая неразрушающую работу с 3 операндами. Он также вводит векторные регистры ymm двойной ширины и некоторые новые инструкции для управления ими. Векторные инструкции с плавающей запятой имеют версии 256b в AVX, но целочисленные инструкции 256b требуют AVX2. AVX2 также представил тасование с плавающей запятой при пересечении полос движения.

Смешивание инструкций AVX (кодирование vex) и не AVX (старое кодирование SSE) в одной программе требует осторожного использования VZEROUPPERна процессорах Intel, чтобы избежать серьезных проблем с производительностью. Это привело к нескольким вопросам производительности, на которые был дан ответ.

Другая ловушка для новичков заключается в том, что большинство инструкций 256b работают на двух полосах 128b, а не обрабатывают регистр ymm как один длинный вектор. Внимательно изучите, какой элемент куда движется при использованииUNPCKLPS и другие инструкции в случайном порядке / горизонтально.

На странице тегов x86 вы найдете руководства и другие ресурсы по программированию и оптимизации программ с использованием AVX. См. Вики по тегам SSE для некоторых руководств по методам программирования SIMD, а не только для справок по набору инструкций.

См. Также " Обработка чисел с помощью AVX и AVX2" для ознакомления с использованием встроенных функций AVX с простыми примерами.