_mm_maccshi_epi32

업데이트: 2011년 3월

Visual Studio 2010 SP1이 필요합니다.

Microsoft 전용

XOP 명령 vpmacssdqh를 생성하여 소스의 포화 정수 곱하기-더하기를 수행합니다.

__m128i _mm_maccshi_epi32 (
   __m128i src1,
   __m128i src2,
   __m128i src3
);

매개 변수

  • [in] src1
    홀수로 인덱싱된 더블워드에 2개의 32비트 부호 있는 정수를 포함하는 128비트 매개 변수입니다.

  • [in] src2
    홀수로 인덱싱된 더블워드에 2개의 32비트 부호 있는 정수를 포함하는 128비트 매개 변수입니다.

  • [in] src3
    2개의 64비트 부호 있는 정수를 포함하는 128비트 매개 변수입니다.

반환 값

2개의 64비트 부호 있는 정수를 포함하는 128비트 결과 r입니다.

r[0] := src1[1] * src2[1] + src3[0];
r[1] := src1[3] * src2[3] + src3[1];

요구 사항

내장

아키텍처

_mm_maccshi_epi32

XOP

헤더 파일 <intrin.h>

설명

src1에서 각 홀수로 인덱싱된 32비트 부호 있는 정수 값을 각각 src2에서 해당 32비트 부호 있는 정수 값에 곱하고, 각 64비트 부호 있는 정수 곱을 src3에서 해당 64비트 부호 있는 정수 값에 더하고 64비트 정수 결과는 대상에 해당 값으로 저장됩니다. src1 및 src2의 짝수 인덱스 쿼드워드는 무시됩니다.

64비트 곱에 더한 결과가 9223372036854775807(0x7FFFFFFFFFFFFFFF) 이상이거나 -9223372036854775808(0x8000000000000000) 이하인 경우 곱하기-더하기는 각각 결과 값을 9223372036854775807 또는 -9223372036854775808로 설정하여 포화합니다.

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

예제

#include <stdio.h>
#include <intrin.h>
int main()
{
    __m128i a, b, c, d;
    int i;
    a.m128i_i32[1] = 2000000000;
    a.m128i_i32[3] = 2000000000;
    b.m128i_i32[1] = -2000000000;
    b.m128i_i32[3] = 2000000000;
    c.m128i_i64[0] = 9000000000000000000ll;
    c.m128i_i64[1] = 9000000000000000000ll;
    d = _mm_maccshi_epi32(a, b, c);
    for (i = 0; i < 2; i++)
        printf_s(" %20I64d (0x%I64x)\n",
            d.m128i_i64[i], d.m128i_i64[i]);
 }
  

참고 항목

참조

__cpuid, __cpuidex

기타 리소스

_mm_macchi_epi32

_mm_macclo_epi32

_mm_maccslo_epi32

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

변경 기록

날짜

변경 내용

이유

2011년 3월

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

SP1 기능 변경