UCOMISD

Unordered Compare valores en coma flotante de precisión doble escalares y Set EFLAGS

estableVMJITAOTinstruccion

Codificaciones

OpcodeInstruccionOp/En64 bitsCompat/LegacyDescripcion
66 0F 2E /rUCOMISD xmm1, xmm2/m64AValidoValidoCompare 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 /rVUCOMISD xmm1, xmm2/m64AValidoValidoCompare 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 /rVUCOMISD xmm1, xmm2/m64{sae}BValidoValidoCompare 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

  1. modrm.reg lecturabyte ModRM, campo reg (bits 5-3)
  2. modrm.rm lecturabyte ModRM, campo r/m (bits 2-0); con el byte SIB y el desplazamiento cuando el campo mod los pide

B

  1. modrm.reg escriturabyte ModRM, campo reg (bits 5-3)
  2. modrm.rm lecturabyte 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."

Fuentes