Форматы данных и команды их обработки процессоров Pentium III, Pentium IVРефераты >> Программирование и компьютеры >> Форматы данных и команды их обработки процессоров Pentium III, Pentium IV
ORPS Логическое ИЛИ двух пакетов операндов
XORPS Исключающее ИЛИ двух пакетов операндов Перестановки операндов в ХММ
SHUFPS Перестановка слов в регистре ХММ под управлением 8-битного непосредственного операнда
UNPCKHPS Переупаковка старших половин с чередованием слов в результате
UNPCKLPS Переупаковка старших половин с чередованием слов в результате
Управление состоянием
LDMXCSR Загрузка регистра MXCSR
STMXCSR Сохранение регистра MXCSR
FXSAVE Сохранение состояния блоков FP/MMX и ХММ
FXRSTOR Восстановление состояния блоков FP/MMX и ХММ
Дополнительные целочисленные SIMD-инструкции (выполняются с операндами в регистрах ММХ, входят и в расширенный набор 3DNow!)
PAVGB/PAVGW Нахождение среднего упакованных беззнаковых байт или слов
PEXTRW Извлечение 16-битного слова из регистра ММХ в младшую половину 32-битного регистра (старшая половина обнуляется). Номер слова определяется младшими битами непосредственного операнда
PINSRW Помещение младшей половины 32-битного регистра в выбранное слово регистра ММХ. Номер слова определяется младшими битами непосредственного операнда
PMAXUB, PMAXSW Нахождение максимума упакованных беззнаковых байт/знаковых слов
PMINUB, PMINSW Нахождение минимума упакованных беззнаковых байт/знаковых слов
PMOVMSKB Сборка старших бит упакованных байт в 8-битную маску, помещаемую в целочисленный регистр
PMULHUW Умножение беззнаковых слов с сохранением старших половин произведений
PSADBW Нахождение суммы модулей разности пар слов (результат — 16-битное число)
PSHUFW Перемешивание слов под управлением 8-битного непосредственного операнда
Управление кэшированием (входят и в расширенный набор 3DNow!)
MASKMOVQ Выборочная запись байт из регистра ММХ в память, минуя кэш MOVNTQ Запись из регистра ММХ в память, минуя кэш
MOVNTPS Запись из регистра ХММ в память, минуя кэш (адрес должен быть
выровнен по границе параграфа)
PREFETCHTO Загрузка 32 или более байт в кэш-память
PREFETCHT1
PREFETCHT2
PREFETCHNT
SFENCE Выгрузка результатов всех предыдущих инструкций в кэш-память
Новые инструкции управления кэшированием обеспечивают запись содержимого регистров ММХ и ХММ в память, минуя кэш, что позволяет избегать "загрязнения" кэш-памяти промежуточными данными. Появилась и возможность "закачивать" требуемые данные в кэш прежде использующих их инструкций.
По сравнению с расширением 3DNow! набор инструкций SSE шире, часть инструкций пересекается, но и в 3DNow! имеются уникальные инструкции, не реализованные в SSE.
Инструкции SSE2 появились в процессорах Pentium 4. Большая их часть предназначена для работы с числами с плавающей точкой двойной точности (64-битные операнды), расположенными в регистрах ХММ, векторными (упакованная пара 64-битных чисел) и скалярными (старшим или младшим числом). Они обеспечивают векторные и скалярные пересылки этих чисел, арифметические инструкции (сложение, вычитание, умножение, деление, извлечение корня, нахождение максимума и минимума), сравнение чисел, преобразования форматов, перестановки операндов, а также побитные логические функции. Появились и SIMD-инструкции обработки 32- и 64-битных целых чисел, расположенных в регистрах ХММ. Новые инструкции управления кэшированием позволяют миновать кэш при записи в память из регистров ХММ и общих регистров, упорядочивать последовательности загрузки данных из памяти и записи в память и выполнять некоторые другие действия.
Таблица. Инструкции SSE2
Инструкция Описание
Инструкции пересылки данных (чисел с плавающей точкой двойной точности между регистрами ХММ, а также регистрами ХММ и памятью)
MOVAPD Пересылка пары упакованных выровненных чисел
MOVUPD Пересылка пары упакованных невыровненных чисел
MOVHPD Пересылка старшего упакованного числа
MOVLPD Пересылка младшего упакованного числа
MOVMSKPD Извлечение знаковой маски из пары чисел
MOVSD Пересылка скалярного числа
Арифметические инструкции над операндами с плавающей точкой двойной точности в регистрах ХММ
ADDPD Векторное сложение
ADDSD Скалярное сложение
SUBPD Векторное вычитание
SUBSD Скалярное вычитание
MULPD Векторное умножение
MULSD Скалярное умножение
DIVPD Векторное деление
DIVSD Скалярное деление
SQRTPD Векторное извлечение квадратного корня
SQRTSD Скалярное извлечение квадратного корня
MAXPD Векторное нахождение максимума
MAXSD Скалярное нахождение максимума
MINPD Векторное нахождение минимума
MINSD Скалярное нахождение минимума
Логические инструкции над упакованными 64-битными операндами в регистрах ХММ (побитные функции)
ANDPD Логическое И
ANDNPD Логическое И-НЕ
ORPD Логическое ИЛИ
XORPD Исключающее ИЛИ
Инструкции сравнения упакованных (векторных) и скалярных операндов с плавающей точкой двойной точности в регистрах ХММ с помещением результата в операнд-приемник или регистр EFLAGS
CMPPD Сравнение векторное
CMPSD Сравнение скалярное
COMISD Упорядоченное сравнение скалярных чисел с помещением результата в биты регистра EFLAGS (если хоть один из операндов QNaN или SNaN, генерируется исключение #I и EFLAGS не модифицируется)
UCOMISD Неупорядоченное сравнение (то же, но исключение #I генерируется только в случае SNaN)
Инструкции перестановок и распаковки операндов с плавающей точкой двойной точности в регистрах ХММ
SHUFPD Перестановка элементов в упакованных операндах
UNPCKHPD Распаковка и чередование старших элементов (в приемнике собираются старшие части операндов)
UNPCKLPD Распаковка и чередование младших элементов (в приемнике собираются младшие части операндов)
Инструкции преобразований в формат и из формата упакованных и скалярных чисел с плавающей точкой двойной точности
CVTPD2PI Преобразование упакованных чисел с плавающей точкой в упакованные целые (двойные слова)
CVTTPD2PI Преобразование с усечением упакованных чисел с плавающей точкой двойной точности в упакованные целые (двойные слова)
CVTP12PD Преобразование упакованных целых (двойных слов) в упакованные числа с плавающей точкой двойной точности
CVTPD2DQ Преобразование упакованных чисел с плавающей точкой в упакованные целые (двойные слова)
CVTTPD2DQ Преобразование с усечением упакованных чисел с плавающей точкой двойной точности в упакованные целые (двойные слова)
CVTDQ2PD Преобразование упакованных 32-битных целых в упакованные числа с плавающей точкой двойной точности
CVTPS2PD Преобразование упакованных чисел с плавающей точкой одинарной точности в числа двойной точности
CVTPD2PS Преобразование упакованных чисел с плавающей точкой двойной точности в числа одинарной точности
CVTSS2SD Преобразование скалярного числа с плавающей точкой одинарной точности в число двойной точности
CVTSD2SS Преобразование скалярного числа с плавающей точкой двойной точности в число одинарной точности
CVTSD2SI Преобразование скалярного числа одинарной точности в 32-битное целое