Freigeben über


_mm_com_epi64

Visual Studio 2010 SP1 wird benötigt.

Microsoft-spezifisch

Generiert die XOP-Anweisung vpcomq, um eine Bitmaske zurückzugeben, die durch einen vorzeichenbehafteten Vergleich der Quadworte der ersten zwei Quellen generiert wird, wobei die von der dritten Quelle angegebene Bedingung verwendet wird.

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

Parameter

  • [in] src1
    Gepacktes 128-Bit-Array von zwei 64-Bit-Ganzzahlen mit Vorzeichen.

  • [in] src2
    Gepacktes 128-Bit-Array von zwei 64-Bit-Ganzzahlen mit Vorzeichen.

  • [in] condition
    Eine 32-Bit-Ganzzahl-Bedingung, die im Vergleich verwendet werden soll. Gültige Werte sind 0 bis 7.

Rückgabewert

Ein gepacktes 128-Bit-Array-r mit zwei 64-Bit-Ganzzahlen ohne Vorzeichen, von denen jede entweder den Wert 0x0000000000000000 oder 0xFFFFFFFFFFFFFFFF hat. Wenn cond der durch den Wert von condition vorgegebene logische Operator ist, dann ist

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

Anforderungen

Intrinsisch

Architektur

_mm_com_epi64

XOP

Headerdatei <intrin.h>

Hinweise

Diese Anweisung vergleicht jedes Quadwort von src1 mit dem entsprechenden Quadwort von src2 und verwendet den in condition beschriebenen Vergleichsoperator. (Jedes Paar Quadwörter verwendet den gleichen Vergleichsoperator.) Die condition für gültige Werte gibt 0 bis 7 an. Durch Einbinden von <intrin.h> sind Sie in der Lage, statt der numerischen Werte die folgenden Namen für condition zu verwenden:

Ganzzahliger Wert

Symbolischer Name

Bedeutung

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 (Maske aller 0 (null))

7

_MM_PCOMCTRL_TRUE

r[i] = 0xFFFFFFFFFFFFFFFF (Maske alle 1)

Wenn Sie dies vorziehen, können Sie die folgenden Makros verwenden, die durch das Einschließen von <intrin.h> definiert werden:

Makro

Bedeutung

_mm_comlt_epi64(src1, src2)

_mm_com_epi64(src1, src2, 0)

_mm_comle_epi64(src1, src2)

_mm_com_epi64(src1, src2, 1)

_mm_comgt_epi64(src1, src2)

_mm_com_epi64(src1, src2, 2)

_mm_comge_epi64(src1, src2)

_mm_com_epi64(src1, src2, 3)

_mm_comeq_epi64(src1, src2)

_mm_com_epi64(src1, src2, 4)

_mm_comneq_epi64(src1, src2)

_mm_com_epi64(src1, src2, 5)

_mm_comfalse_epi64(src1, src2)

_mm_com_epi64(src1, src2, 6)

_mm_comtrue_epi64(src1, src2)

_mm_com_epi64(src1, src2, 7)

Die vpcomq-Anweisung ist Teil der XOP-Anweisungsfamilie. Bevor Sie diese systeminterne Funktion verwenden, müssen Sie sicherstellen, dass der Prozessor diese Anweisung unterstützt. Um die Hardwareunterstützung für diese Anweisung zu bestimmen, rufen Sie die systeminterne Funktion __cpuid mit InfoType = 0x80000001 auf, und prüfen Sie Bit 11 von CPUInfo[2] (ECX). Dieses Bit ist 1, wenn die Anweisung unterstützt wird, und andernfalls 0.

Beispiel

#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:     %16I64d %16I64d\n",
            a.m128i_i64[0], a.m128i_i64[1]);
    printf("src2:     %16I64d %16I64d\n",
            b.m128i_i64[0], b.m128i_i64[1]);
    d = _mm_com_epi64(a, b, _MM_PCOMCTRL_LT);
    printf("< mask:   %016I64x %016I64x\n",
            d.m128i_u64[0], d.m128i_u64[1]);
    d = _mm_com_epi64(a, b, _MM_PCOMCTRL_GT);
    printf("> mask:   %016I64x %016I64x\n",
            d.m128i_u64[0], d.m128i_u64[1]);
}
  

Siehe auch

Weitere Ressourcen

_mm_com_epi8

_mm_com_epi16

_mm_com_epi32

_mm_com_epu64

In Visual Studio 2010 SP1 hinzugefügte systeminterne XOP-Funktionen

Änderungsprotokoll

Datum

Versionsgeschichte

Grund

März 2011

Diesen Inhalt hinzugefügt.

SP1-Funktionsänderung.