2012-04-25 3 views

답변

15

예. * mmintrin.h 헤더의 내장 함수를 사용할 수 있습니다 (사용하려는 SSE 수준에 따라 emmintrin.h, xmmintrin.h 등). 일반적으로 여러 가지 이유로 어셈블러를 사용하는 것이 좋습니다.

#include <emmintrin.h> 

int main(void) 
{ 
    __m128i a = _mm_set_epi32(4, 3, 2, 1); 
    __m128i b = _mm_set_epi32(7, 6, 5, 4); 
    __m128i c = _mm_add_epi32(a, b); 

    // ... 

    return 0; 
} 

이 방법은 대부분의 x86 및 x86-64 컴파일러에서 작동합니다. gcc, clang 및 Linux/Mac OS X/Windows 및 Microsoft의 Visual C/C++ (물론 Windows 만 해당)의 Intel ICC가 있습니다.

+0

이것은 gcc 또는 VC++ 용입니까? – pythonic

+4

gcc와 VC++ 모두 내장 함수를 지원합니다. –

+0

FTW, icc도 이러한 내장 함수를 지원합니다. – hroptatyr

4

gcc에있는 *intrin.h 헤더 (여기에서 /usr/lib/gcc/x86_64-unknown-linux-gnu/4.8.0/include/)를 찾으십시오.

머리글 immintrin.h에는 허용되는 기능 (예 : -msse2 또는 -mavx 사용)에 따라 다른 모든 intrins가 포함되어 있습니다.

4

원하는 것은 intrinsics으로 라이브러리 기능처럼 보이지만 실제로는 컴파일러에 내장되어 있으므로 특정 기계 코드로 변환됩니다.

Paul R 및 hroptatyr은 GCC의 설명서를 어디서 찾을 수 있는지 설명합니다. Microsoft also has good documentation on the intrinsics in their compiler; 비록 당신이 GCC를 사용하고있다 할지라도 MS의 아이디어에 대한 더 나은 튜토리얼을 찾을 수 있습니다.

+0

ARM 아키텍처는 어떻게됩니까? NEON SIMD를 지원합니까? 또는 이것은 x86에서만 의미가 있습니까? – enthusiasticgeek

+1

@enthusiasticgeek 질문은 x86-64를 지정합니다. ARM과 NEON은 고유 한 컴파일러와 자체 내장 함수를 가지고 있습니다. – Crashworks

관련 문제