Действие: условие, в соответствии с которым производится сравнение каждой пары элемен-
тов операндов приемник и источник, задается явно в виде непосредственного операнда (табл. П.23).
В результате сравнения в приемнике формируются единичные (если условие
или
нулевые элементы (если условие не выполнено).
CMPSD
•
приемник, источник, условие
•
• Сравнение скалярных значений с плавающей точкой двойной точности.
590 Приложение. Система команд процессоров IA-32
Действие: команда сравнивает упакованные значения с плавающей точкой двойной точно-
сти в разрядах
приемника и источника. Формирование проверяемого условия и ре-
зультата выполнения команды те же, что и для команды
Таблица
Допустимые значения условия в команде
Eq
Lt
Le
Gt
Ge
Neq
NJt
Nle
Ngt
Nge
Ord
Описание
условия
Равно
Меньше
чем
Меньше
чем или
равно
Больше
чем
Больше
чем или
равно
Одно из
чисел -
NaN
Не равно
Не мень-
ше чем
Не мень-
ше чем
или равно
Не больше
чем
Не больше
чем или
равно
Оба числа
не NaN
Отношение
>
!(xmml xmm2)
Эмуляция
Перестанов-
ка с сохра-
нением,
Перестанов-
ка с сохра-
нением, 1е
Перестанов-
ка с сохране-
нием,
Перестанов-
ка с сохра-
нением,
Код
маски
Результат,
если опе-
ранд не
False
False
False
False
False
True
True
True
True
True
True
False
Исключение
если опе-
ранд QNaN/
SNaN
Нет
Да
Да
Да
Да
Нет
Нет
Да
Да
Да
Да
Нет
CMPSS
• CMPSS приемник, источник, условие
•
• Скалярное сравнение значений в формате
Действие: для пары значений операндов приемник и источник выполняется сравнение, в ре-
зультате которого формируются единичные (если условие выполнено) или нулевые элементы
(если условие не выполнено). Значение источника может быть расположено в 32-разрядной ячейке
памяти или в младшем двойном слове ХММ-регистра. Значение приемника должно быть распо-
ложено в младшем двойном слове другого ХММ-регистра. Возможные значения условий
приведены в описании команды
(см. табл. П.23).
Команды блока блока
(SSE и SSE2)
COMISD
•
приемник, источник, условие
•
• Сравнение упорядоченных скалярных значений с плавающей точкой двойной точности и уста-
новка регистра FLAGS.
Действие: упорядоченные скалярные значения с плавающей точкой двойной точности срав-
ниваются в разрядах
приемника и источника. По результату сравнения
флаги ZF, PF и CF в регистре EFLAGS:
приемник > источник (ZF = О, PF = 0, CF 0);
приемник < источник (ZF = О, PF = О, CF 1);
приемник - источник (ZF = 1, PF - О, CF = 0);
приемник и/или источник — нечисло (NaN) или имеют неопределенный формат (ZF
PF = 1,
CF-1).
Флаги OF, SF и AF устанавливаются в 0. В случае генерации немаскированного
с плавающей точкой регистр EFLAGS не модифицируется.
COMISS
• COMISS приемник, источник
•
COMISS
• Скалярное упорядоченное сравнение значений в формате ХММ с установкой регистра EFLAGS.
Действие: команда сравнивает пару значений операндов приемник и источник, в результате
устанавливаются флаги в регистре EFLAGS (табл.
Значение источника может быть располо-
жено в 32-разрядной ячейке памяти или младшем двойном слове ХММ-регистра. Значение при-
емника должно быть расположено в младшем двойном слове другого ХММ-регистра.
Таблица
Допустимые значения флагов в регистре EFLAGS
Соотношение операндов
Приемник > источник
Приемник < источник
Приемник = источник
Приемник или источник
или SNaN
Значение флагов
OF
- SF = AF = ZF - PF - CF - 0
OF
- SF - AF = ZF - PF = 0; CF - 1
OF
- SF - AF - PF - CF - 0; ZF = 1
OF
= SF - AF = 0; ZF - PF = CF = 1
При возникновении незамаскированных исключений
EFLAGS не изменяется.
Источник
Приемник
источник
Приемник
127 64
п1
V
и1
Целые
и1 иО
63
! 32 31 0
I
пО
t
V
иО
Вещественные
592 Приложение.
команд процессоров IA-32
приемник, источник
•
• Преобразование двух упакованных 32-разрядных целых в два упакованные значения с
вающей точкой двойной точности.
Действие: алгоритм работы команды показан на схеме (см. предыдущую страницу).
•
приемник, источник
•
CVTDQ2PS
•
32-разрядных целых со знаком в четыре
значения с
точкой
точности.
Действие: алгоритм работы команды показан на следующей схеме.
Целые со знаком
иЗ
и2
и1
иО
...............
........ ........
п1
127
6
I
I I !
Преобразование
127
Источник
Приемник
rxmm
cvtdq2ps приемник, источник
Приемник
Вещественные
(32 бита)
В случае, когда не удается выполнить точное
значение округляется в соот-
ветствии с
• CVTPD2DQ приемник, источник
• F2 OF E6 CVTPD2DQ
rxmm2/ml28
• Преобразование двух упакованных
с плавающей точкой двойной точности в два
упакованных 32-разрядных целых.
Вещественные
источник
Приемник
rxmm
и1
117
| 64
127
иО
63
пО
63
0
cvtpd2dq приемник, источник
Приемник
rxmm
127
Команды блока блока
и SSE2) 593
Действие: алгоритм работы команды показан
следующей схеме.
В случае, когда не удается выполнить точное преобразование, значение округляется в соот-
ветствии с полем MXCSR.RC. Если преобразованный результат больше чем максимально возмож-
ное
32-разрядное значение, то возвращается значение
• CVTPD2PI приемник, источник
•
•
двух упакованных значений с плавающей точкой двойной точности в два
упакованных 32-разрядных целых.
Действие: алгоритм работы команды показан на следующей схеме.
Вещественные
cvtpd2pi приемник, источник
floatf>int|
В случае, когда не удается выполнить точное преобразование,
округляется в соот-
ветствии с полем MXCSR.RC. Если преобразованный результат больше, чем максимально возмож-
ное целочисленное
значение, то возвращается значение
• CVTPD2PS приемник, источник
•
• Преобразование двух упакованных значений с плавающей точкой двойной точности в два
упакованных
с плавающей точкой одинарной точности.
Действие: алгоритм работы
показан на следующей схеме.
Вещественные (64 бита)
источник
Приемник
cvtpd2ps приемник, источник
Приемник
rxmm —
и1
127
| 64
иО
63
0
|
J
127
I 64 63 I 0
4
0000000000000000 |
! иО
Целые (32 бита)
594 Приложение. Система команд процессоров IA-32
В случае, когда не удается выполнить точное преобразование, значение округляется в соот-
ветствии с полем
• CVTPI2PD приемник, источник
•
OF 2А CVTPI2PD
rmmx/m64
• Преобразование двух упакованных 32-разрядных целых в два упакованных значения с пла-
вающей точкой двойной точности.
Do'stlaringiz bilan baham: |