Condividi tramite


_mm_com_epu64

È necessario Visual Studio 2010 SP1.

Specifici di Microsoft

Genera l'istruzione XOP vpcomuq per restituire una maschera di bit generata da un confronto unsigned parola quadrupla per parola quadrupla delle prime due origini utilizzando la condizione fornita dalla terza origine.

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

Parametri

  • [in] src1
    Matrice a 128 bit compressa di due interi senza segno a 64 bit.

  • [in] src2
    Matrice a 128 bit compressa di due interi senza segno a 64 bit.

  • [in] condition
    Una condizione dell'intero a 32 bit da utilizzare nel confronto. I valori consentiti sono compresi tra 0 e 7.

Valore restituito

Una matrice a 128 bit compressa r di due Unsigned Integer a 64 bit, ognuno dei quali è 0x0000000000000000 o 0xFFFFFFFFFFFFFFFF. Se cond è l'operatore logico dato dal valore di condition, allora

r[i] := src1[i] cond src2[i] ? 0xFFFFFFFFFFFFFFFF : 0x0000000000000000;

Requisiti

Intrinseco

Architettura

_mm_com_epu64

XOP

File di intestazione <intrin.h>

Note

Questa istruzione confronta ogni parola quadrupla di src1 con la parola quadrupla corrispondente di src2, utilizzando l'operatore di confronto descritto da condition. (Ogni coppia di parole quadruple utilizza lo stesso operatore di confronto). I valori consentiti condition vanno da 0 a 7. Includendo <intrin.h> sarà possibile utilizzare i nomi seguenti piuttosto che valori numerici per condition:

Valore Integer

Nome simbolico

Significato

0

_MM_PCOMCTRL_LT

r[i] = (src1[i] < src2[i]) ? 0xFFFFFFFFFFFFFFFF : 0x0000000000000000

1

_MM_PCOMCTRL_LE

r[i] = (src1[i] <= src2[i]) ? 0xFFFFFFFFFFFFFFFF : 0x0000000000000000

2

_MM_PCOMCTRL_GT

r[i] = (src1[i] > src2[i]) ? 0xFFFFFFFFFFFFFFFF : 0x0000000000000000

3

_MM_PCOMCTRL_GE

r[i] = (src1[i] >= src2[i]) ? 0xFFFFFFFFFFFFFFFF : 0x0000000000000000

4

_MM_PCOMCTRL_EQ

r[i] = (src1[i] == src2[i]) ? 0xFFFFFFFFFFFFFFFF : 0x0000000000000000

5

_MM_PCOMCTRL_NEQ

r[i] = (src1[i] != src2[i]) ? 0xFFFFFFFFFFFFFFFF : 0x0000000000000000

6

_MM_PCOMCTRL_FALSE

r[i] = 0x0000000000000000 (maschera di tutti gli zeri)

7

_MM_PCOMCTRL_TRUE

r[i] = 0xFFFFFFFFFFFFFFFF (maschera di tutti gli uno)

Se si preferisce, è possibile utilizzare le macro seguenti che saranno definite quando è incluso <intrin.h>:

Macro

Significato

_mm_comlt_epu64(src1, src2)

_mm_com_epu64(src1, src2, 0)

_mm_comle_epu64(src1, src2)

_mm_com_epu64(src1, src2, 1)

_mm_comgt_epu64(src1, src2)

_mm_com_epu64(src1, src2, 2)

_mm_comge_epu64(src1, src2)

_mm_com_epu64(src1, src2, 3)

_mm_comeq_epu64(src1, src2)

_mm_com_epu64(src1, src2, 4)

_mm_comneq_epu64(src1, src2)

_mm_com_epu64(src1, src2, 5)

_mm_comfalse_epu64(src1, src2)

_mm_com_epu64(src1, src2, 6)

_mm_comtrue_epu64(src1, src2)

_mm_com_epu64(src1, src2, 7)

L'istruzione vpcomuq è parte della famiglia XOP di istruzioni. Prima di utilizzare questo intrinseco, è necessario assicurarsi che il processore supporti questa istruzione. Per determinare il supporto hardware per questa istruzione, chiamare l'intrinseco __cpuid con InfoType = 0x80000001 e il bit di controllo 11 di CPUInfo[2] (ECX). Questo bit è 1 quando l'istruzione è supportata, e 0 in caso contrario.

Esempio

#include <stdio.h>
#include <intrin.h>
main()
{
    __m128i a, b, d;
    int i;
    a.m128i_i64[0] = -10;
    a.m128i_i64[1] =  10;
    b.m128i_i64[0] =  22;
    b.m128i_i64[1] = -22;
    printf("src1:     %20I64u %20I64u\n",
            a.m128i_u64[0], a.m128i_u64[1]);
    printf("src2:     %20I64u %20I64u\n",
            b.m128i_u64[0], b.m128i_u64[1]);
    d = _mm_com_epu64(a, b, _MM_PCOMCTRL_LT);
    printf("< mask:       %016I64x     %016I64x\n",
            d.m128i_u64[0], d.m128i_u64[1]);
    d = _mm_com_epu64(a, b, _MM_PCOMCTRL_GT);
    printf("> mask:       %016I64x     %016I64x\n",
            d.m128i_u64[0], d.m128i_u64[1]);
}
  

Vedere anche

Altre risorse

_mm_com_epi8

_mm_com_epu16

_mm_com_epu32

_mm_com_epi64

Oggetti intrinseci XOP aggiunti per Visual Studio 2010 SP1

Cronologia delle modifiche

Data

Cronologia

Motivo

Marzo 2011

È stato aggiunto questo contenuto.

Modifica di funzionalità in SP1.