_mm_haddq_epu8
업데이트: 2011년 3월
Visual Studio 2010 SP1이 필요합니다.
Microsoft 전용
XOP 명령 vphaddubq를 생성하여 소스의 정수 부호 없는 가로 더하기를 수행합니다.
__m128i _mm_haddq_epu8 (
__m128i src
);
매개 변수
- [in] src
16개의 8비트 부호 없는 정수를 포함하는 128비트 매개 변수입니다.
반환 값
2개의 64비트 부호 없는 정수를 포함하는 128비트 결과 r입니다.
r[i] := src[8*i] + src[8*i+1] + src[8*i+2] + src[8*i+3] +
src[8*i+4] + src[8*i+5] + src[8*i+6] + src[8*i+7];
요구 사항
내장 |
아키텍처 |
---|---|
_mm_haddq_epu8 |
XOP |
헤더 파일 <intrin.h>
설명
src의 8개 8비트 부호 없는 정수 값의 각 2개 집합은 대상에 해당 값으로 저장되는 64비트 부호 없는 정수 결과를 생성하도록 추가됩니다. 이 명령에서는 오버플로가 가능하지 않습니다.
vphaddubq 명령은 XOP 명령군의 일부입니다. 이 intrinsic을 사용하기 전에 프로세서가 이 명령을 지원하는지 확인해야 합니다. 이 명령에 대한 하드웨어 지원을 확인하려면 InfoType = 0x80000001을 사용하여 __cpuid intrinsic을 호출하고 CPUInfo[2] (ECX)의 비트 11을 확인합니다. 명령이 지원되는 경우 비트는 1이고, 그렇지 않으면 0입니다.
예제
#include <stdio.h>
#include <intrin.h>
int main()
{
__m128i a, d;
int i;
for (i = 0; i < 4; i++) {
a.m128i_i8[i] = -128;
a.m128i_i8[i+4] = i-128;
a.m128i_i8[i+8] = 10*i;
a.m128i_i8[i+12] = 127;
}
// Note that this intrinsic treats negative values as unsigned
// So, e.g., -128 becomes +128
d = _mm_haddq_epu8(a);
for (i = 0; i < 2; i++) printf_s(" %I64u", d.m128i_u64[i]);
printf_s("\n");
}
참고 항목
참조
기타 리소스
Visual Studio 2010 SP1용으로 추가된 XOP 내장 함수
변경 기록
날짜 |
변경 내용 |
이유 |
---|---|---|
2011년 3월 |
이 내용이 추가되었습니다. |
SP1 기능 변경 |