UCOMISS

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

estableVMJITAOTinstruccion

Codificaciones

OpcodeInstruccionOp/En64 bitsCompat/LegacyDescripcion
NP 0F 2E /rUCOMISS xmm1, xmm2/m32AValidoValidoCompare 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 2E /rVUCOMISS xmm1, xmm2/m32AValidoValidoCompare 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 2E /rVUCOMISS xmm1, xmm2/m32{sae}BValidoValidoCompare 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

  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

Compara los valores en coma flotante de precisión simple en las palabras dobles 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 UCOMISS difiere de la instrucción COMISS en que indica una excepción de operación inválida SIMD coma flotante (#I) sólo si un operando de origen es un SNaN. La instrucción COMISS indica una excepción de operación inválida cuando un operando de origen es un QNaN o SNaN.

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 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

(V)UCOMISS (All Versions)
RESULT := UnorderedCompare(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

VUCOMISS     int _mm_comi_round_ss(__m128 a, __m128 b, int imm, int sae);
UCOMISS      int _mm_ucomieq_ss(__m128 a, __m128 b);
UCOMISS      int _mm_ucomilt_ss(__m128 a, __m128 b);
UCOMISS      int _mm_ucomile_ss(__m128 a, __m128 b);
UCOMISS  int _mm_ucomigt_ss(__m128 a, __m128 b);
UCOMISS  int _mm_ucomige_ss(__m128 a, __m128 b);
UCOMISS  int _mm_ucomineq_ss(__m128 a, __m128 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