2012-10-22 3 views
1

Linux에서 gcc로 컴파일하려고하는 코드를 상속 받았습니다.해결되지 않은 __builtin_ia32_stmxcsr

내가 찾고있는 라이브러리에는 __builtin_ia32_stmxcsr이 있습니까?

사과 - 제가 제출하기가 너무 빨랐습니다. Nvidia Eclipse 내부에서 gcc를 실행합니다. 실제 오류 메시지는 "Functuion ...."을 해결할 수 없습니다. 그래서 나는 lib를 참조 할 필요가있는 결론을 뛰어 넘었습니다. 문제가되는 줄은 다음과 같습니다. #if 정의 (SSE) 나는 컴파일 명령 줄의 copyh를 찾을 수는 없지만 -msse2 스위치가 있음을 의미합니다. [이 Eclipse 도구를 배우는 것만으로 매우 새롭다!]

+0

사과 - 너무 빨리 제출할 수 없습니다. Nvidia Eclipse 내부에서 gcc를 실행합니다. 실제 오류 메시지는 "Functuion ...."을 해결할 수 없습니다. 그래서 나는 lib를 참조 할 필요가있는 결론을 뛰어 넘었습니다. 문제가되는 줄 : #if defined (__ SSE__) orig_mxcsr = __builtin_ia32_stmxcsr(); \t our_mxcsr = orig_mxcsr | MXCSR_DAZ | MXCSR_FTZ; \t __builtin_ia32_ldmxcsr (our_mxcsr); #endif – JPM

답변

1

이것은 gcc의 __builtin* 함수를 사용하는 일식 인덱서의 버그입니다. 버그 보고서는 문제도 glibc는/GCC 라이브러리 자신이 __builtin* 기능을 사용할 수 있다는 것입니다 https://bugs.eclipse.org/bugs/show_bug.cgi?id=352537

에, 그래서 일식 코스 넌센스이다 결함 xmmintrin.h 등을 뿌려줍니다.

버그 보고서에있는 해결 방법이 있습니다. 함수 프로토 타입을 인덱서에 대한 사용자 정의 매크로로 추가 할 수 있지만 몇 가지 유형 검사 기능이 없어지면 지루해집니다.

+0

나는 정전이 있음을 알았습니다. 내가 다시 부팅하고 이클립스를 다시 시작하면 문제가 사라졌습니다! 당신의 도움을 주셔서 감사합니다. – JPM

2

이름으로 "builtin"은 gcc 내장 (내장) 컴파일러 함수라는 단서입니다.

그러나이를 인식하려면 SSE를 활성화 한 x86 대상에 컴파일해야합니다. gcc -msse2 ....

__builtin_ia32_stmxcsr 대신 _mm_getcsr 내장 문자를 에서 사용할 수 있습니다. 이는 더 휴대하기 편리합니다.

+1

오른쪽. 동등한 휴대용 내장 함수가 사용 가능할 때'__builtin_'을 피하는 것이 좋습니다. 덕분에 –

+0

. 나는 _mm_getcsr에 대한 당신의 제안을 시도했다. 이 함수의 오류 메시지가 여전히 ... 해결할 수 없습니다. 이견있는 사람 ? – JPM

+0

# # 을 (를) 포함 했습니까? 일시적으로 코드 블록을 #ifdef하면 성능상의 이유로 비정규 처리를 막을 수 있습니다. 지금은 이것을 생략하고 나머지 코드를 컴파일하고 나중에 다시 볼 수 있습니다. 그것은 기능에 영향을 미치지 않고 단지 성능에 영향을 미치지 않습니다. –