UCOMISD
Unordered Compare valores en coma flotante de precisión doble escalares y Set EFLAGS
estableVMJITAOTinstruccion
Codificaciones
| Opcode | Instruccion | Op/En | 64 bits | Compat/Legacy | Descripcion |
|---|---|---|---|---|---|
66 0F 2E /r | UCOMISD 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 2E /r | VUCOMISD 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 2E /r | VUCOMISD xmm1, xmm2/m64{sae} | B | Valido | Valido | Compare baja valores en coma flotante de precisión doble en OR AVX10.1 xmm1 y xmm2/m64 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.reglecturabyte 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
Realiza una comparación sin orden de los valores en coma flotante de precisión doble en los cuádpagos bajos 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 (noordenado, mayor que, menor 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).
Operand 1 is an XMM register; operand 2 can be an XMM register or a 64 bit memory
location.
La instrucción UCOMISD difiere de la instrucción COMISD en que indica una excepción de operación inválida SIMD coma flotante (#I) sólo cuando un operando de origen es un SNaN. La instrucción COMISD indica una excepción de operación inválida sólo si un operando de origen es un SNaN o un QNaN.
El registro EFLAGS no se actualiza si se genera una excepción SIMD coma flotante sin máscara.
Nota: 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
(V)UCOMISD (All Versions)
RESULT := UnorderedCompare(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
VUCOMISD int _mm_comi_round_sd(__m128d a, __m128d b, int imm, int sae);
UCOMISD int _mm_ucomieq_sd(__m128d a, __m128d b) UCOMISD int _mm_ucomilt_sd(__m128d a, __m128d b) UCOMISD int _mm_ucomile_sd(__m128d a, __m128d b) UCOMISD int _mm_ucomigt_sd(__m128d a, __m128d b) UCOMISD int _mm_ucomige_sd(__m128d a, __m128d b) UCOMISD int _mm_ucomineq_sd(__m128d a, __m128d b);SIMD coma flotante Excepciones
Inválido (si SNaN operandos), Denormal.
Otras excepciones
Instrucciones codificadas por VEX, ver Tabla 2-20, "Tipo 3 Condiciones de Excepción," adicionalmente:
#UD If VEX.vvvv != 1111B.Instrucciones codificadas por EVEX, ver Tabla 2-50, "Tipo E3NF Clase Condiciones de Excepción."