COMISD
Compare escalar Ordenado valores en coma flotante de precisión doble y Set EFLAGS
estableVMJITAOTinstruccion
Codificaciones
| Opcode | Instruccion | Op/En | 64 bits | Compat/Legacy | Descripcion |
|---|---|---|---|---|---|
66 0F 2F /r | COMISD xmm1, xmm2/m64 | A | Valido | Valido | Compare baja valores en coma flotante de precisión doble en xmm1 y xmm2/mem64 y establezca las banderas EFLAGS en consecuencia. |
VEX.LIG.66.0F.WIG 2F /r | VCOMISD xmm1, xmm2/m64 | A | Valido | Valido | Compare baja valores en coma flotante de precisión doble en xmm1 y xmm2/mem64 y establezca las banderas EFLAGS en consecuencia. |
EVEX.LLIG.66.0F.W1 2F /r | VCOMISD xmm1, xmm2/m64{sae} | B | Valido | Valido | Compare baja valores en coma flotante de precisión doble en OR AVX10.1 xmm1 y xmm2/mem64 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 doble 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 64 bits. La instrucción COMISD difiere de la instrucción UCOMISD 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 UCOMISD 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 VCOMISD esté codificado con VEX.L=0. Codificar VCOMISD con VEX.L=1 puede encontrar un comportamiento impredecible en diferentes generaciones de procesadores.
Operación
COMISD (All Versions)
RESULT :=OrderedCompare(DEST[63:0] <> SRC[63: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
VCOMISD int _mm_comi_round_sd(__m128d a, __m128d b, int imm, int sae);
VCOMISD int _mm_comieq_sd (__m128d a, __m128d b) VCOMISD int _mm_comilt_sd (__m128d a, __m128d b) VCOMISD int _mm_comile_sd (__m128d a, __m128d b) VCOMISD int _mm_comigt_sd (__m128d a, __m128d b) VCOMISD int _mm_comige_sd (__m128d a, __m128d b) VCOMISD int _mm_comineq_sd (__m128d a, __m128d 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.