2013-11-21 1 views
4

log2를 __m128 변수에 적용하려고합니다.C : x86 Intel 내장 함수 사용 _mm_log2_ps() -> 오류 : 호환되지 않는 유형 'int'?

#include <immintrin.h> 
int main (void) { 
    __m128 two_v = {2.0, 2.0, 2.0, 2.0}; 
    __m128 log2_v = _mm_log2_ps(two_v); // log_2 := log(2) 

    return 0; 
} 

이이 오류를 반환 컴파일하려고 :

내가 그것을 어떻게

error: initializing '__m128' with an expression of 
     incompatible type 'int' 
       __m128 log2_v = _mm_log2_ps(two_v); // log_2 := log(2) 
        ^  ~~~~~~~~~~~~~~~~~~ 
을 를 해결할 수 을이처럼?

+4

SVML 내장 함수입니다. .h 파일의 선언과 같은 깡패가 잘못되어 있으면 어떻게 보이는지 보여줍니다. –

+0

@HansPassant 죄송합니다, 이해가 안됩니다. 내 immintrin.h 파일을보고 싶니? – tmuecksch

+0

헤더 파일을 지정하지 않았습니다. 이미 모든 코드를 볼 수 있습니다. – tmuecksch

답변

1

컴파일에 사용 된 immintrin.h와 immintrin.h가 다릅니다. 컴파일러는

가 말했다 제대로 된 바와 같이, extern __m128 _mm_log2_ps(__m128 v1)SVML routine입니다 기본 immintrin.h을 사용하는 반면 가능성이 , 당신은 그래서, 인텔 고유의 헤더 (어딘가 /opt/intel/include/immintrin.h 등)로 찾고 가장 먼저 보는 해결책은 Intel Compiler입니다. 비상업적 인 개발을 위해서는 Linux 용으로 무료입니다.

다른 컴파일러를 사용하여 컴파일하는 동안 사용자 정의 immintrin.h 파일의 포함 경로를 첫 번째 인수로 지정할 수 있지만이 헤더가 인텔 전용이기 때문에 너무 많은 오류가 발생한다고 생각합니다. .

관련 문제