2014-02-09 3 views
2

GCC를 사용하고 명령 행 인수 -mavx를 설정할 때 컴파일러는 소스 코드에서 자동으로 __AVX__을 정의합니다.Clang, 소스 코드 측에서 -mavx 컴파일러 인수를 감지

이 방법을 사용하면 프로젝트가 AVX 명령어로 빌드되고 다른 코드 경로로 폴백하지 않으면 감지 할 수 있습니다.

Clang과 동일한 작업을 수행 할 수있는 방법이 있습니까?

덕분에, 오른쪽 테스트 __AVX__에 크리스토프

답변

6

, 그것은 GCC와 마찬가지로 그 소리와 마찬가지로 잘 작동합니다. 심지어 LLVM/도구/lib 디렉토리/기본/Targets.cpp에

2

... 비주얼 스튜디오와 소스를 작동 : 비주얼 C와

switch (SSELevel) { 
.... 
    case AVX: 
    Builder.defineMacro("__AVX__"); 
... 
0

++은 define _AVX_하지 __AVX__입니다.

나는 실제로 __AVX__을 검사하고 있었지만 성공하지 못했습니다. AVX를 사용하기위한 플래그를 올바르게 설정하기 위해 프로젝트 생성기 (CMake)에서 문제가 발생했을 수 있습니다.

편집 : 수정 사항은 밑줄이 아니며, 내 실수입니다! 그렇습니다. __AVX__은 VC, GCC 및 Clang에서 작동합니다. \ o/

감사합니다. Christophe

+0

http://msdn.microsoft.com/ko-kr/library/b0084kay.aspx의 설명과 다릅니다. –