COMISS
Compare escalar Ordenado valores en coma flotante de precisión simple y Set EFLAGS
estableVMJITAOTinstruccion
Codificaciones
| Opcode | Instruccion | Op/En | 64 bits | Compat/Legacy | Descripcion |
|---|---|---|---|---|---|
NP 0F 2F /r | COMISS xmm1, xmm2/m32 | A | Valido | Valido | Compare baja valores en coma flotante de precisión simple en xmm1 y xmm2/mem32 y establezca las banderas EFLAGS en consecuencia. |
VEX.LIG.0F.WIG 2F /r | VCOMISS xmm1, xmm2/m32 | A | Valido | Valido | Compare baja valores en coma flotante de precisión simple en xmm1 y xmm2/mem32 y establezca las banderas EFLAGS en consecuencia. |
EVEX.LLIG.0F.W0 2F /r | VCOMISS xmm1, xmm2/m32{sae} | B | Valido | Valido | Compare baja valores en coma flotante de precisión simple en OR AVX10.1 xmm1 y xmm2/mem32 y establecer las banderas EFLAGS en consecuencia. |
Codificacion de operandos
Cada modo es un valor de la columna Op/En de arriba. Dice en que campo de la instruccion codificada va cada operando, en el orden en que se escriben, y si la instruccion lo lee, lo escribe o ambas cosas.
A
modrm.regescriturabyte ModRM, campo reg (bits 5-3)modrm.rmlecturabyte ModRM, campo r/m (bits 2-0); con el byte SIB y el desplazamiento cuando el campo mod los pide
B
modrm.regescriturabyte ModRM, campo reg (bits 5-3)modrm.rmlecturabyte ModRM, campo r/m (bits 2-0); con el byte SIB y el desplazamiento cuando el campo mod los pide
Tupla: Tuple1 Scalar
Coste medido
Cargando las mediciones de arch-data...
Descripción
Compara los valores en coma flotante de precisión simple en las cuádwords bajas de operando 1 (primer operando) y operando 2 (segundo operando), y establece las banderas ZF, PF y CF en el registro EFLAGS de acuerdo con el resultado (sin orden, mayor que, menos o igual). Las banderas OF, SF y AF en el registro EFLAGS se fijan en 0. El resultado no deseado es devuelto si operando de origen es un NaN (QNaN o SNaN).
Operando 1 es un registro XMM; operando 2 puede ser un registro XMM o una ubicación de memoria de 32 bits.
La instrucción COMISS difiere de la instrucción UCOMISS en que indica una excepción de operación inválida SIMD coma flotante (#I) cuando un operando de origen es un QNaN o SNaN. La instrucción UCOMISS indica una excepción de operación inválida sólo si un operando de origen es un SNaN.
El registro EFLAGS no se actualiza si se genera una excepción SIMD coma flotante sin máscara.
VEX.vvvv y EVEX.vvvv están reservados y deben ser 1111b, de lo contrario las instrucciones #UD.
El software debe asegurar que VCOMISS esté codificado con VEX.L=0. Codificar VCOMISS con VEX.L=1 puede encontrar un comportamiento impredecible en diferentes generaciones de procesadores.
Operación
COMISS (All Versions)
RESULT :=OrderedCompare(DEST[31:0] <> SRC[31:0]) {
(* Set EFLAGS *) CASE (RESULT) OF
UNORDERED: ZF,PF,CF := 111;
GREATER_THAN: ZF,PF,CF := 000;
LESS_THAN: ZF,PF,CF := 001;
EQUAL: ZF,PF,CF := 100;
ESAC;
OF, AF, SF := 0; }Intel C/C++ compilador intrínseco
VCOMISS int _mm_comi_round_ss(__m128 a, __m128 b, int imm, int sae);
VCOMISS int _mm_comieq_ss (__m128 a, __m128 b) VCOMISS int _mm_comilt_ss (__m128 a, __m128 b) VCOMISS int _mm_comile_ss (__m128 a, __m128 b) VCOMISS int _mm_comigt_ss (__m128 a, __m128 b) VCOMISS int _mm_comige_ss (__m128 a, __m128 b) VCOMISS int _mm_comineq_ss (__m128 a, __m128 b);SIMD coma flotante Excepciones
Inválido (si SNaN o QNaN operandos), Denormal.
Otras excepciones
Instrucciones codificadas por VEX, ver Tabla 2-20, "Tipo 3 Condiciones de Excepción".
Instrucciones codificadas por EVEX, ver Tabla 2-50, "Tipo E3NF Clase Condiciones de Excepción."
Additionally:
#UD If VEX.vvvv != 1111B or EVEX.vvvv != 1111B.