Исключения: NE: #O, #U,. #I, #P, #D; PM: #АС: 4; #GP(0): 37; #NM: 3; #PF(fault-code); #SS(0): 13; #UD: 10-13; #XM; RM: #GP: 13; #NM: 3; #UD: 17-20; #XM; VM: исключения реального режима; #АС(0); #PF(fault-code).
ANDNPS приемник, источник
ANDNPS (bit-wise logical AND Not for Packed Single-precision float-point) — поразрядное логическое И-НЕ над упакованными значениями в формате ХММ.
Синтаксис: ANDNPS rxmm1, rxmm2/m128
Машинный код: 00001111:01010101:mod rxmm1 r/m
Действие: инвертировать биты операнда приемник, над каждой парой битов операндов приемник (после инвертирования) и источник выполнить операцию логического И.
Исключения: PM: #GP(0): 37; #NM: 3; #PF(fault-code); #SS(0): 13; #UD: 10,12,13; RM: #GP: 13; #NM: 3; #UD: 7; VM: исключения реального режима; #PF(fault-code); #UD: 16, 17.
ANDPS приемник, источник
ANDPS (bit-wise logical AND for Packed Single-precision float-point) — поразрядное логическое И над каждой парой бит операндов источник и приемник.
Синтаксис: ANDPS rxmm1, rxmm2/m128
Машинный код: 00001111:01010100: mod rxmm 1 r/m
Исключения: 1; PM: #GP(0): 37; #NM: 3; #PF(fault-code); #SS(0): 13; #UD: 10,12, 13; RM: #GP: 13; #NM: 3; #UD: 17, 19, 20; VM: исключения реального режима; #PF(fault-code).
CMPPS приемник, источник, условие
CMPPS (CoMPare Packed Single-precision float-point) — сравнение упакованных значений в формате ХММ
Синтаксис: CMPPS rxmm1, rxmm2/m128, i8
Машинный код: 00001111:11000010: mod rxmm1 r/m: i8
Действие: условие, в соответствии с которым производится сравнение каждой пары элементов операндов приемник и источник, задается явно в виде непосредственного операнда (см. ниже). В результате сравнения в приемнике формируются единичные (если условие выполнено) или нулевые элементы (если условие не выполнено).
Усло-вие | Описание условия | Отношение | Эмуляция | Код маски i8 | Результат, если операнд NaN | Исключение #I, если операнд qNAN/sNAN | |
Eq | Equal (равно) | xmm1== xmm2 | 000b | False | Нет | ||
Lt | less-than (меньше чем) | xmm1<< xmm2 | 001 b | False | Да | ||
Le | less-than - or-equal (меньше чем или равно) | xmm1<<= xmm2 | 010b | False | Да | ||
greater than (больше чем) | xmm1>> xmm2 | Перестанов-ка с сохранением, lt | False | Да | |||
greater- than-or- equal (больше чем или равно) | xmm1>>= xmm2 | Перестанов-ка с сохране- нием, le | False | Да | |||
Unord | Unordered (одно из чисел QNAN) | xmm1 ? xmm2 | 011b | True | Нет | ||
Neq | not-equal (не равно) | !(xmm1== xmm2) | 100b | True | Нет | ||
Nit | not-less- than (не меньше чем) | !(xmm1 << xmm2) | 101b | True | Да | ||
NIe | not-less- than-or- equal (не меньше чем или равно) | !(xmm1<<= xmm2) | 110b | True | Да | ||
not-greater- than(не больше чем) | !(xmm1>> xmm2) | Перестанов-ка с сохранением, nlt | True | Да | |||
not-greater-than-or- equal (не больше чем или равно) | !(xmm1>>= xmm2) | Перестанов-ка с сохранением, nle | True | Да | |||
Ord | Ordered (числа неQNAN) | !(xmm1 ?xmm2) | 111b | False | Нет |
Исключения: 1; NE: #I, #D; PM: #GP(0): 37; #NM: 3; #PF(fault-code); #SS(0): 13; #UD: 10-13; #XM; RM: #GP: 13; #NM: 3; #VD: 17-20; #XM; VM: исключения реального режима; #PF(fault-code).
CMPSS приемник, источник, условие
CMPSS (CoMPare Scalar Single-precision float-point) — скалярное сравнение значений в формате ХММ.
Синтаксис: CMPSS rxmm1, rxmm2/m32, i8
Машинный код: 11110011:00001111:11000010:mod rxmm1 r/m: i8
Действие: для пары значений операндов приемник и источник выполняется сравнение, в результате которого формируются единичные (если условие выполнено) или нулевые элементы (если условие не выполнено). Значение источника может быть расположено в 32-битной ячейке памяти или в младшем двойном слове регистра ХММ. Значение приемника расположено в младшем двойном слове другого регистра ХММ.
Возможные значения условий приведены в описании команды CMPPS.
Исключения: NE: #I, #D; PM: #AC(0); #GP(0): 37; #NM: 3; #PF(fault-code); #SS(0): 13; #UD: 10-13; #XM; RM: #GP: 13; #NM: 3; #UD: 17-20; #ХМ; VM: исключения реального режима; #АС(0); #PF(fault-code).
COMISS приемник, источник
COMISS (COMpare ordered Scalar Single-precision float-point COMpare and Set EFLAGS) — скалярное упорядоченное сравнение значений в формате ХММ с установкой EFLAGS.
Синтаксис: COMISS rxmm1, rxmm2/m32
Машинный код: 00001111:00101111 :mod rxmm1 r/m
Действие: команда сравнивает пару значений операндов приемник и источник, в результате чего устанавливаются флаги в регистре EFLAGS, как показано ниже.
Значение источника может быть расположено в 32-битной ячейке памяти или младшем двойном слове регистра ХММ. Значение приемника расположено в младшем двойном слове другого регистра ХММ.
Соотношение операндов | Значение флагов |
Приемник>источник | 0F=SF=AF=ZF=PF=CF=0 |
Приемник<источник | 0F=SF=AF=ZF=PF=0; CF=1 |
Приемник=источник | 0F=SF=AF=PF=CF=0; ZF=1 |
Приемник или источник=qNaN или sNaN | 0F=SF=AF=0; ZF=PF=CF=1 |
При возникновении незамаскированных исключений значение EFLAGS не изменяется. Исключения: NE: #I, #D; PM: #AC(0); #GP(0): 37; #NM: 3; #PF(fault-code); #SS(0): 13; #UD: 10-13; #XM; RM: #GP: 13; #NM: 3; #UD: 17-20; #ХМ; VM: исключения реального режима; #АС(0); #PF(fault-code).
CVTPI2PS приемник, источник
CVTPI2PS (Conversion Two Packed signed Int32 to Packed Single-precision float-point) — преобразование двух упакованных 32-битных целых в два упакованных вещественных значения.
Синтаксис: CVTP12PS rxmm1, rmmx2/m64
Машинный код: 00001111:00101010:mod rxmm1 r/m
Действие: алгоритм работы команды показан на рисунке ниже.
В случае, когда не удается выполнить точное преобразование, результат округляется в соответствии с полем MXCSR.RC.
Исключения: NE: #Р; РМ: #АС(0); #GP(0): 37; #MF; #NM: 3; #PF(fault-code);
#SS(0): 13; #UD: 10-13; #XM; RM: #AC; #GP: 13; #MF; #NM: 3; #UD: 17-20; #XM; VM: исключения реального режима; #АС(0); #PF(fault-code).
CVTPS2PI приемник, источник
CVTPS2PI (ConVersion Two Packed Single-precision float-point to Packed signed Int32) — преобразование двух вещественных целых в два упакованных 32-битных целых.
Синтаксис: CVTPS2PI rmmx1, rmmx2/m128
Машинный код: 00001111:00101101 :mod rmmx1 r/m
Действие: алгоритм работы команды показан на рисунке ниже.
Если преобразованный результат больше, чем максимально возможное целочисленное 32-битное значение, то возвращается значение 80000000h. В случае, когда не удается выполнить точное преобразование, значение округляется в соответствии с полем MXCSR.RC.
Исключения: NE: #I, #Р; РМ: #АС(0); #GP(0): 37; #MF; #NM: 3; #PF(fault-code); #SS(0): 13; #UD: 10-13; #XM; RM: #GP: 13; #MF; #NM: 3; #UD: 17-20; #XM; VM: исключения реального режима; #АС(0); #PF(fault-code).
CVTSI2SS приемник, источник
CVTSI2SS (ConVerT Scalar signed Int32 to Scalar Single-precision float-point) -скалярное преобразование знакового 32-битного целого в вещественное значение.
Синтаксис: CVTS12SS rxmm, r32/m32
Машинный код: 11110011:00001111:00101010:mod rxmm r/m
Действие: алгоритм работы команды показан на рисунке ниже.
В случае когда не удается выполнить точное преобразование, значение округляется в соответствии с полем MXCSR.RC.
Исключения: NE: #Р; РМ: #АС(0); #GP(0): 37; #NM: 3; #PF(fault-code); #SS(0): 13; #UD: 10-13; #XM; RM: #GP: 13; #NM: 3; #UD: 17-20; #ХМ; VM: исключения реального режима; #АС(0); #PF(fault-code).
CVTSS2SI приемник, источник
CVTSS2SI (ConVerT Scalar Single-precision float-point to Scalar signed Int32) -скалярное преобразование вещественного целого в 32-битное знаковое целое.
Синтаксис: CVTSS2SI r32,rxmm/m128
Машинный код: 11110011:00001111:00101101 :mod r32 r/m
Действие: значение источника хранится в младшем двойном слове регистра ХММ или в 128-битной ячейке памяти. Приемник — один из 32-битных регистров.
Алгоритм работы команды показан на рисунке ниже.
Если преобразованный результат больше, чем максимально возможное целочисленное 32-битное значение, то возвращается значение 80000000h. В случае, когда не удается выполнить точное преобразование, значение округляется в соответствии с полем MXCSR.RC.
Исключения: NE: #I, #Р; РМ: #АС(0); #GP(0): 37; #NM: 3; #PF(fault-code); #SS(0): 13; #UD: 10-13; #XM; RM: #GP: 13; #NM: 3; #UD: 17-20; #XM; VM: исключения реального режима; #АС(0); #PF(fault-code).
CVTTPS2PI приемник, источник
CVTTPS2PI (ConVerT Truncate two Packed Single-precision float-point to Packed signed Int32) — преобразование (путем отбрасывания дробной части) двух вещественных целых в два упакованных 32-битных целых значения.
Синтаксис: CVTTPS2PI rmmx,rxmm/m128
Машинный код: 00001111:00101100:mod rmmx r/m
Действие: алгоритм работы команды показан на рисунке ниже.
Если преобразованный результат больше, чем максимально возможное целочисленное 32-битное значение, то будет возвращено значение 80000000h.
Исключения: NE: ffl,#P; РМ: #АС(0); #GP(0): 37; #MF; #NM: 3; #PF(fault-code); #SS(0): 13; #UD: 10-13; #XM; RM: #GP: 13; #MF; #NM: 3; #UD: 17-20; #XM; VM: исключения реального режима; #АС(0); #PF(fault-code).
CVTTSS2SI приемник, источник
CVTTSS2SI (ConVerT Truncate Scalar Single-precision float-point to Scalar signed Int32) — скалярное преобразование (путем отбрасывания дробной части) вещественного целого в знаковое целое.
Синтаксис: CVTTSS2SI r32,rxmm/m128
Машинный код: 11110011:00001111:00101100:mod r32 r/m
Действие: значение источника хранится в младшем двойном слове регистра ХММ или в 128-битной ячейке памяти. Приемник — один из 32-битных регистров. Алгоритм работы команды показан на рисунке ниже.
Если преобразованный результат больше, чем максимально возможное целочисленное 32-битное значение, то будет возвращено значение 80000000h.
Исключения: NE: #I,#Р; РМ: #АС(0); #GP(0): 37; #NM: 3; #PF(fault-code); #SS(0): 13; #UD: 10-13; #XM; RM: #GP: 13; #NM: 3; #UD: 17-20; #ХМ; VM: исключения реального режима; #АС(0); #PF(fault-code).
DIVPS приемник, источник
DIVPS (DIVide Packed Single-precision float-point) — деление упакованных значений в формате ХММ согласно следующей схеме.
Синтаксис: DIVPS rxmm1,rxmm2/m128
Машинный код: 00001111:01011110:mod rxmm r/m