_mm_perm_epi8
업데이트: 2011년 3월
Visual Studio 2010 SP1이 필요합니다.
Microsoft 전용
XOP 명령 vpperm를 생성하여 처음 두 소스에서 바이트를 선택하고 이를 선택적으로 변환합니다.
__m128i _mm_perm_epi8 (
__m128i src1,
__m128i src2,
__m128i selector
);
매개 변수
[in] src1
16개 바이트를 포함하는 128비트 매개 변수입니다.[in] src2
16개 바이트를 포함하는 128비트 매개 변수입니다.[in] selector
src1 및 src2에서 바이트를 선택하고 필요에 따라 선택한 바이트에 적용할 변환을 선택하는 128비트 매개 변수입니다.
반환 값
src1 및 src2에서 선택한 바이트를 포함하는 128비트 결과 r이며 선택적으로 변환됩니다.
요구 사항
내장 |
아키텍처 |
---|---|
_mm_perm_epi8 |
XOP |
헤더 파일 <intrin.h>
설명
selector의 각 바이트에 대해 하위 비트는 src1 또는 src2에서 바이트를 선택합니다. 값 0~15는 src1의 바이트 0~15를 선택하는 반면, 값 16~31은 src2의 바이트 0~15를 선택합니다. selector에서 각 바이트의 하위 비트는 선택한 바이트에 적용할 변환을 결정합니다.
선택기의 상위 3 비트 값 |
선택한 변환 |
---|---|
000b |
변환하지 않습니다. |
001b |
원본 바이트 반전(한 구성 요소) |
010b |
비트 역방향 소스 바이트 |
011b |
비트 역방향 반전 소스 바이트 |
100b |
결과 바이트를 0x00으로 설정 |
101b |
결과 바이트를 0xFF로 설정 |
110b |
원본 바이트의 최상위 비트 복제 |
111b |
원본 바이트의 반전된 최상위 비트 복제 |
vpperm 명령은 XOP 명령군의 일부입니다. 이 intrinsic을 사용하기 전에 프로세서가 이 명령을 지원하는지 확인해야 합니다. 이 명령에 대한 하드웨어 지원을 확인하려면 InfoType = 0x80000001을 사용하여 __cpuid intrinsic을 호출하고 CPUInfo[2] (ECX)의 비트 11을 확인합니다. 명령이 지원되는 경우 비트는 1이고, 그렇지 않으면 0입니다.
예제
#include <stdio.h>
#include <intrin.h>
int main()
{
__m128i a, b, selector, d;
int i;
for (i = 15; i >= 0; i--) {
a.m128i_u8[i] = i; // 0x0f0e0d0c...
b.m128i_u8[i] = (i << 4) | i; // 0xffeeddcc...
}
selector.m128i_u64[1] = 0xfedcba9876543210ll;
selector.m128i_u64[0] = 0x0011223344556677ll;
d = _mm_perm_epi8(a, b, selector);
printf_s("%016I64x %016I64x\n", d.m128i_u64[1], d.m128i_u64[0]);
}
참고 항목
참조
기타 리소스
Visual Studio 2010 SP1용으로 추가된 XOP 내장 함수
변경 기록
날짜 |
변경 내용 |
이유 |
---|---|---|
2011년 3월 |
이 내용이 추가되었습니다. |
SP1 기능 변경 |