_mm_com_epu32

Se requiere Visual Studio 2010 SP1.

Específicos de Microsoft

Genera la instrucción XOP vpcomud para devolver una máscara de bits generada por una comparación sin signo palabra cuádruple a palabra cuádruple de sus dos primeros orígenes mediante la condición proporcionada por el tercer origen.

__m128i _mm_com_epu32 (
   __m128i src1,
   __m128i src2,
   int condition
); 

Parámetros

  • [in] src1
    Matriz empaquetada de 128 bits de cuatro enteros sin signo de 32 bits.

  • [in] src2
    Matriz empaquetada de 128 bits de cuatro enteros sin signo de 32 bits.

  • [in] condition
    Una condición entera de 32 bits que se va a utilizar en la comparación. Los valores válidos van del 0 al 7.

Valor devuelto

Una matriz empaquetada de 128 bits r de cuatro enteros sin signo de 32 bits, cada uno de los cuales es 0x00000000 o 0xFFFFFFFF. Si cond es el operador lógico implicado por el valor condition, entonces

r[i] := src1[i] cond src2[i] ? 0xFFFFFFFF : 0x00000000;

Requisitos

Intrínseco

Arquitectura

_mm_com_epu32

XOP

Archivo de encabezado <intrin.h>

Comentarios

Esta instrucción compara cada palabra doble de src1 con la palabra doble correspondiente de src2, utilizando el operador de comparación descrito por condition. (Cada par de palabras dobles usa el mismo operador de comparación.) Los valores condition válidos son del 0 al 7. Incluyendo < intrin.h > podrá utilizar los siguientes nombres en lugar de los valores numéricos para condition:

Valor entero

Nombre simbólico

Significado

0

_MM_PCOMCTRL_LT

¿r[i] = (src1[i] < src2[i]) ? 0xFFFFFFFF: 0x00000000

1

_MM_PCOMCTRL_LE

¿r[i] = (src1[i] <= src2[i]) ? 0xFFFFFFFF: 0x00000000

2

_MM_PCOMCTRL_GT

¿r[i] = (src1[i] > src2[i]) ? 0xFFFFFFFF: 0x00000000

3

_MM_PCOMCTRL_GE

¿r[i] = (src1[i] >= src2[i]) ? 0xFFFFFFFF: 0x00000000

4

_MM_PCOMCTRL_EQ

¿r[i] = (src1[i] == src2[i]) ? 0xFFFFFFFF: 0x00000000

5

_MM_PCOMCTRL_NEQ

¿r [i] = (src1 [i]! = src2 [i])? 0xFFFFFFFF: 0x00000000

6

_MM_PCOMCTRL_FALSE

r[i] = 0x00000000 (máscara de todos los ceros)

7

_MM_PCOMCTRL_TRUE

r[i] = 0xFFFFFFFF (máscara de todos unos)

Si lo prefiere, puede utilizar las siguientes macros, que se definirán cuando < intrin.h > está incluido:

Macro

Significado

_mm_comlt_epu32 (src1, src2)

_mm_com_epu32 (src1, src2, 0)

_mm_comle_epu32 (src1, src2)

_mm_com_epi32 (src1, src2, 1)

_mm_comgt_epu32 (src1, src2)

_mm_com_epu32 (src1, src2, 2)

_mm_comge_epu32 (src1, src2)

_mm_com_epu32 (src1, src2, 3)

_mm_comeq_epu32 (src1, src2)

_mm_com_epu32 (src1, src2, 4)

_mm_comneq_epu32 (src1, src2)

_mm_com_epu32 (src1, src2, 5)

_mm_comfalse_epu32 (src1, src2)

_mm_com_epu32 (src1, src2, 6)

_mm_comtrue_epu32 (src1, src2)

_mm_com_epu32 (src1, src2, 7)

La instrucción vpcomud forma parte de la familia XOP de instrucciones. Antes de utilizar este intrínseco, debe asegurarse de que el procesador admite esta instrucción. Para determinar la compatibilidad del hardware para obtener esta instrucción, llame a __cpuid intrínseco con InfoType = 0x80000001 y compruebe el bit 11 de CPUInfo [2] (ECX). Este bit es 1 cuando se admite la instrucción, de lo contrario es 0.

Ejemplo

#include <stdio.h>
#include <intrin.h>
main()
{
    __m128i a, b, d;
    int i;
    for (i = 0; i < 4; i++) {
        a.m128i_i32[i] = 1000*i - 1500;
        b.m128i_i32[i] = 2000*i - 2500;
    }
    printf("src1:       ");
    for (i = 0; i < 4; i++) printf_s("   %10u", a.m128i_u32[i]);
    printf_s("\nsrc2:       ");
    for (i = 0; i < 4; i++) printf_s("   %10u", b.m128i_u32[i]);
    printf_s("\n>   mask:   ");
    d = _mm_com_epi32(a, b, _MM_PCOMCTRL_GT);
    for (i = 0; i < 4; i++) printf_s("     %08x", d.m128i_u32[i]);
    printf_s("\nfalse mask: ");
    d = _mm_com_epi32(a, b, _MM_PCOMCTRL_FALSE);
    for (i = 0; i < 4; i++) printf_s("     %08x", d.m128i_u32[i]);
    printf("\n");
}
  

Vea también

Otros recursos

_mm_com_epu8

_mm_com_epu16

_mm_com_epu64

_mm_com_epi32

Intrínsecos XOP agregados para Visual Studio 2010 SP1

Historial de cambios

Fecha

Historial

Motivo

Marzo de 2011

Se agrega este contenido.

Cambio de características de SP1.