Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2 курс / Лекции / Лекция 26 - Расширения системы команд IA-32 – MMX и SSE..ppt
Скачиваний:
43
Добавлен:
18.02.2023
Размер:
458.24 Кб
Скачать

Команды передачи данных SSE

MOVHLPS – пересылка не выровненных 64 бит. Оба операнда – XMM-регистры. Старшие 64 бита источника в младшие 64 бита назначения.

MOVLHPS – пересылка не выровненных 64 бит. Оба операнда – XMM-регистры. Младшие 64 бита источника в старшие 64 бита назначения.

MOVMSKPS – пересылка знакового бита каждого из четырех упакованных чисел входного операнда в младшие четыре бита выходного операнда. Входной операнд – XMM-регистр, выходной операнд – РОН.

MOVSS – пересылка 32 младших разрядов из источника в приемник. При этом один операнд – XMM-регистр, а второй – ячейка памяти.

 

 

Арифметические команды

 

 

 

 

SSE

 

 

ADDPS – параллельное сложение 128-разрядных операндов. Входной

 

 

операнд – XMM-регистр или ячейка памяти. Выходной операнд – XMM-

 

 

регистр.

 

 

ADDSS – скалярное сложение операндов. Входной операнд – XMM-регистр

 

 

или 32-разрядная ячейка памяти. Выходной операнд – XMM-регистр.

 

 

SUBPS – параллельное вычитание 128-разрядных операндов. Входной

 

 

операнд – XMM-регистр или ячейка памяти. Выходной операнд – XMM-

 

 

регистр.

 

 

SUBSS – скалярное вычитание операндов. Входной операнд – XMM-

 

 

регистр или 32-разрядная ячейка памяти. Выходной операнд – XMM-

 

 

регистр.

 

 

MULPS – параллельное умножение 128-разрядных операндов. Входной

 

 

операнд – XMM-регистр или ячейка памяти. Выходной операнд – XMM-

 

 

регистр.

 

 

MULSS – скалярное умножение операндов. Входной операнд – XMM-

 

 

регистр или 32-разрядная ячейка памяти. Выходной операнд – XMM-

 

 

регистр.

DIVPS – параллельное деление 128-разрядных операндов. Входной

 

 

операнд – XMM-регистр или ячейка памяти. Выходной операнд – XMM-

 

 

регистр.

 

 

DIVSS – скалярное деление операндов. Входной операнд – XMM-регистр

 

 

или 32-разрядная ячейка памяти. Выходной операнд – XMM-регистр.

 

 

 

 

 

Арифметические команды SSE

SQRTPS – параллельное вычисление квадратного корня 128- разрядных операндов. Входной операнд – XMM-регистр или ячейка памяти. Выходной операнд – XMM-регистр.

SQRTSS – скалярное вычисление квадратного корня операнда. Входной операнд – XMM-регистр или 32-разрядная ячейка памяти. Выходной операнд – XMM-регистр.

MAXPS – параллельное получение максимального значения 128- разрядных операндов. Входной операнд – XMM-регистр или ячейка памяти. Выходной операнд – XMM-регистр.

MAXSS – скалярное получение максимального значения операнда. Входной операнд – XMM-регистр или 32-разрядная ячейка памяти. Выходной операнд – XMM-регистр.

MINPS – параллельное получение минимального значения 128- разрядных операндов. Входной операнд – XMM-регистр или ячейка памяти. Выходной операнд – XMM-регистр.

MINSS – скалярное получение минимального значения операнда. Входной операнд – XMM-регистр или 32-разрядная ячейка памяти. Выходной операнд – XMM-регистр.

Арифметические команды SSE

RCPPS – параллельное вычисление обратных значений 128- разрядных операндов. Входной операнд – XMM-регистр или ячейка памяти. Выходной операнд – XMM-регистр.

RCPSS – скалярное вычисление обратного значения операнда. Входной операнд – XMM-регистр или 32-разрядная ячейка памяти. Выходной операнд – XMM-регистр.

RSQRTPS – параллельное вычисление обратных значений корней 128-разрядных операндов. Входной операнд – XMM-регистр или ячейка памяти. Выходной операнд – XMM-регистр.

RSQRTSS – скалярное вычисление обратного значения корня операнда. Входной операнд – XMM-регистр или 32-разрядная ячейка памяти. Выходной операнд – XMM-регистр.

Команды сравнения

Команды сравнения выполняют попарное сравнение упакованных операндов во входном и выходном операндах и устанавливают биты выходного операнда в 1, если сравнение истинно. В противном случае – биты устанавливаются в ноль. Входной операнд – XMM-регистр, 128- или 32-разрядная ячейка памяти. Выходной операнд – XMM-регистр.

CMPEQPS, CMPEQSS – сравнение на «равно».

CMPLTPS, CMPLTSS – сравнение на «меньше». CMPLEPS, CMPLESS – сравнение на «меньше или равно». CMPNEQPS, CMPNEQSS – сравнение на «не равно». CMPNLTPS, CMPNLTSS – сравнение на «не меньше».

CMPNLEPS, CMPNLESS – сравнение на «не меньше или равно».

Команды COMISS и UCOMISS выполняются сравнение младших 32-разрядов операндов, но не изменяют их, а влияют на флаги ZF, PF и CF регистра EFLAGS.

Логические команды

ANDPS – вычисление побитового И над 128-разрядными операндами.

ANDNPS – вычисление побитового И-НЕ над 128-разрядными операндами.

ORPS – вычисление побитового ИЛИ над 128-разрядными операндами.

XORPS – вычисление побитового исключающего ИЛИ над 128- разрядными операндами.

Команды преобразования

CVTPPS2PI – параллельное преобразование двух младших вещественных значений в целочисленные значения. Входной операнд – XMM-регистр или память, выходной операнд – MMX- регистр.

CVTPSS2SI – скалярное преобразование младшего вещественного значений в целочисленные значения. Входной операнд – XMM- регистр или память, выходной операнд – РОН.

CVTTPS2PI – параллельное преобразование двух младших вещественных значений в целочисленные значения. Входной операнд – XMM-регистр или память, выходной операнд – MMX- регистр.

CVTTSS2SI – скалярное преобразование младшего вещественного значений в целочисленные значения. Входной операнд – XMM- регистр или память, выходной операнд – РОН.

CVTPPI2PS – параллельное преобразование двух 32-разрядных целых чисел в вещественные значения. Входной операнд – MMX- регистр или память, выходной операнд – XMM-регистр.

CVTSI2SS – скалярное преобразование 32-разрядных целого числа в вещественное значение. Входной операнд – РОН или память, выходной операнд – XMM-регистр.