_mm_com_epi64

업데이트: 2011년 3월

Visual Studio 2010 SP1이 필요합니다.

Microsoft 전용

XOP 명령 vpcomq를 생성하여 세 번째 소스에서 제공한 조건을 사용하여 처음 두 소스의 쿼드워드 단위 부호 있는 비교에서 생성된 비트 마스크를 반환합니다.

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

매개 변수

  • [in] src1
    2개의 64비트 부호 있는 정수의 128비트 배열을 패킹합니다.

  • [in] src2
    2개의 64비트 부호 있는 정수의 128비트 배열을 패킹합니다.

  • [in] condition
    비교에 사용할 32비트 정수 조건입니다. 합법적인 값은 0부터 7까지입니다.

반환 값

각각 0x0000000000000000 또는 0xFFFFFFFFFFFFFFFF인 2개의 64비트 부호 없는 정수의 압축된 128비트 배열 r입니다. cond가 condition의 값에 의해 암시된 논리 연산자인 경우

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

요구 사항

내장

아키텍처

_mm_com_epi64

XOP

헤더 파일 <intrin.h>

설명

이 명령은 condition에서 설명하는 비교 연산자를 사용하여 src1의 각 쿼드워드를 src2의 해당 쿼드워드와 비교합니다. (쿼드워드의 각 쌍은 동일한 비교 연산자를 사용합니다.) 합법적인 값 condition은 0~7입니다. <intrin.h>를 포함시키면 condition에 대한 숫자 값 대신 다음 이름을 사용할 수 있습니다.

정수 값

기호화된 이름

의미

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 (모두 0으로 마스크)

7

_MM_PCOMCTRL_TRUE

r[i] = 0xFFFFFFFFFFFFFFFF (모두 1로 마스크)

원하는 경우 <intrin.h>가 포함되어 있을 때 정의되는 다음 매크로를 사용할 수 있습니다.

매크로

의미

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

vpcomq 명령은 XOP 명령군의 일부입니다. 이 intrinsic을 사용하기 전에 프로세서가 이 명령을 지원하는지 확인해야 합니다. 이 명령에 대한 하드웨어 지원을 확인하려면 InfoType = 0x80000001을 사용하여 __cpuid intrinsic을 호출하고 CPUInfo[2] (ECX)의 비트 11을 확인합니다. 명령이 지원되는 경우 비트는 1이고, 그렇지 않으면 0입니다.

예제

#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]);
}
  src1:                  -10               10
src2:                   22              -22
< 마스크:   ffffffffffffffff 0000000000000000
> 마스크:   0000000000000000 ffffffffffffffff

참고 항목

기타 리소스

_mm_com_epi8

_mm_com_epi16

_mm_com_epi32

_mm_com_epu64

Visual Studio 2010 SP1용으로 추가된 XOP 내장 함수

변경 기록

날짜

변경 내용

이유

2011년 3월

이 내용이 추가되었습니다.

SP1 기능 변경