SSSE3 - SSSE3

Дополнительные расширения SIMD для потоковой передачи 3 (SSSE3 или же SSE3S) это SIMD набор инструкций, созданный Intel и является четвертой итерацией SSE технологии.

История

SSSE3 был впервые представлен с процессорами Intel на базе Основная микроархитектура 26 июня 2006 года с Xeon "Woodcrest".

SSSE3 упоминается по кодовым именам Теджас Новые инструкции (TNI) или же Мером Новые инструкции (MNI) для первых разработок процессоров, предназначенных для его поддержки.

Функциональность

SSSE3 содержит 16 новых дискретных инструкций. Каждая инструкция может работать с 64-битными регистрами MMX или 128-битными XMM. Поэтому в материалах Intel упоминаются 32 новые инструкции. Они включают:[1]

  • Двенадцать инструкций, выполняющих операции горизонтального сложения или вычитания.
  • Шесть инструкций, оценивающих абсолютные значения.
  • Две инструкции, которые выполняют операции умножения и сложения и ускоряют вычисление скалярных произведений.
  • Две инструкции, которые ускоряют операции упакованного целочисленного умножения и производят целочисленные значения с масштабированием.
  • Две инструкции, которые выполняют побайтовое перемешивание на месте в соответствии со вторым операндом управления перемешиванием.
  • Шесть инструкций, которые инвертируют упакованные целые числа в операнде-адресате, если знаки соответствующего элемента в исходном операнде меньше нуля.
  • Две инструкции, которые выравнивают данные из двух операндов.

Процессоры с SSSE3

Новый[1] инструкции

В таблице ниже satsw (X) (читается как «насыщение до знакового слова») принимает целое число X со знаком и преобразует его в -32768, если оно меньше -32768, в +32767, если оно больше 32767, и в противном случае оставляет его без изменений. Как обычно для архитектуры Intel, байты составляют 8 бит, слова - 16 бит, а двойные слова - 32 бита; «Регистр» относится к векторному регистру MMX или XMM.

PSIGNB, PSIGNW, PSIGNDУпакованный знакОтменять элементы регистра байтов, слов или двойных слов, если знак соответствующих элементов другого регистра отрицательный.
ПАБСБ, ПАБСВ, ПАБСДУпакованное абсолютное значениеЗаполните элементы регистра байтов, слов или двойных слов абсолютными значениями элементов другого регистра
PALIGNRУпаковано по правому краювзять два регистра, объединить их значения и извлечь раздел длины регистра из смещения, заданного непосредственным значением, закодированным в инструкции.
ПШУФБУпакованные байты в случайном порядкепринимает регистры байтов A = [a0 а1 а2 ...] и B = [b0 б1 б2 ...] и заменяет A на [ab0 аb1 аБи 2 ...]; за исключением того, что он заменяет i-ю запись на 0, если верхний бит bя установлен.
PMULHRSWУпаковано Multiply High с Round и Scaleобрабатывать 16-битные слова в регистрах A и B как 16-битные числа со знаком с фиксированной точкой в ​​диапазоне от -1,00000000 до +0,99996948 ... (например, 0x4000 обрабатывается как +0,5, а 0xA000 как -0,75) и умножать их вместе с правильными округление.
PMADDUBSWУмножение и сложение упакованных байтов со знаком и без знакаВозьмите байты в регистрах A и B, умножьте их вместе, сложите пары, выполните насыщение со знаком и сохраните. Т.е. [a0 a1 a2…] pmaddubsw [b0 b1 b2…] = [satsw (a0b0 + a1b1) satsw (a2b2 + a3b3)…]
PHSUBW, PHSUBDУпакованное горизонтальное вычитание (слова или двойные слова)принимает регистры A = [a0 a1 a2…] и B = [b0 b1 b2…] и выводит [a0 − a1 a2 − a3… b0 − b1 b2 − b3…]
PHSUBSWУпакованные горизонтальные слова вычитания и насыщениякак PHSUBW, но выводит [satsw (a0 − a1) satsw (a2 − a3)… satsw (b0 − b1) satsw (b2 − b3)…]
PHADDW, PHADDDУпакованное горизонтальное сложение (слова или двойные слова)принимает регистры A = [a0 a1 a2…] и B = [b0 b1 b2…] и выводит [a0 + a1 a2 + a3… b0 + b1 b2 + b3…]
PHADDSWУпакованные горизонтальные слова добавления и насыщениякак PHADDW, но выводит [satsw (a0 + a1) satsw (a2 + a3)… satsw (b0 + b1) satsw (b2 + b3)…]

Смотрите также

Рекомендации

  1. ^ а б "2.9.5". Справочное руководство по оптимизации архитектур Intel 64 и IA-32 (PDF) (Технический отчет). Intel.com. 2016. С. 92–93.. Получено 22 июня, 2018.

внешняя ссылка