2012-11-04 5 views
2

"Apple LLVM Compiler 4.1"(Clang)과 함께 Xcode 4.5.2를 사용합니다.AVX가 활성화되면 Clang이 느린 코드를 생성합니까?

AVX가 활성화 된 (아직 _mm256 * 기능이없고 __m256 변수가 없음) SSE 내장 함수에 크게 의존하는 코드를 컴파일하려고 시도했지만 SSE 4.2 만 활성화 된 경우 느린 코드가 나타납니다.

이에 대한 합리적인 설명이 있습니까?

+1

SSE 라이브러리 기능을 사용하는 경우 VEC로 인코딩 된 SSE (AVX에서와 같이)와 'vzeroupper'를 사용하지 않고 레거시 SSE간에 전환하면 기능이 많이 중단 될 수 있습니다. VEC가 3 가지 피연산자 명령어로 인 코드되기 때문에 더 빠를 것입니다. 나는 AVX를 위해 다시 컴파일함으로써 순수한 128 비트 코드에서 10 %의 이득을 경험했다. – hirschhornsalz

+0

감사. 코드에 이러한 전환 기능이 있는지 확인할 수 있습니까 (어쩌면 내가 사용하는 제 3 자 라이브러리에서 온 것일 수 있습니까?). –

답변

3

현재 LLVM은 AVX 성능과 관련된 버그 인 such as this one을 열었습니다.

전체 avx 관련 버그 목록은 here입니다.