/arch(최소 CPU 아키텍처)
스트리밍 SIMD Extensions(SSE), 스트리밍 SIMD Extensions 2(SSE2) 및 고급 Vector Extension (AVX) 명령을 사용한 코드 생성을 지원하는 아키텍처를 지정합니다.
/arch:[SSE|SSE2|AVX]
설명
참고
/arch:SSE 및 /arch:SSE2는 x 86 플랫폼을 대상으로 하여 컴파일할 때만 사용할 수 있습니다. /arch:AVX는 x86 및 x64 플랫폼에만 사용할 수 있습니다. Itanium을 대상으로 하여 컴파일할 때는 이 컴파일러 옵션을 사용할 수 없습니다.
SSE 및 SSE2 명령은 여러 Intel 및 AMD 프로세서에 있습니다. AVX 지침은 Intel Sandy Bridge 프로세서와 AMD Bulldozer 프로세서에 대해 존재합니다.
/arch:SSE를 사용하면 컴파일러는 SSE 명령을 사용할 수 있습니다. /arch:SSE2를 사용하면 컴파일러는 SSE2 명령을 사용할 수 있습니다. /arch:AVX는 AVX 명령 인코딩을 사용하도록 컴파일러에 지시합니다.
_M_IX86_FP는 /arch 컴파일러 옵션이 사용된 것을 나타냅니다. 자세한 내용은 Predefined Macros을 참조하십시오.
/arch를 지정하면 최적화 프로그램에서 SSE 및 SSE2 명령의 사용 시기와 방법을 선택합니다. x87 부동 소수점 레지스터 스택을 사용하는 것보다 SSE/SSE2 명령을 사용하면 더 빠르다고 판단될 때는 일부 스칼라 부동 소수점 계산에 SSE 및 SSE2 명령을 사용합니다. 따라서 코드가 부동 소수점 계산에 x87과 SSE/SSE2를 함께 사용하게 됩니다. 뿐만 아니라 /arch:SSE2를 지정하면 일부 64비트 정수 연산에 SSE2 명령을 사용합니다.
컴파일러는 SSE 및 SSE2 명령 뿐만 아니라 SSE 및 SSE2를 지원하는 프로세서에 있는 다른 명령도 사용합니다. 이러한 예로는 Intel Pentium Pro 프로세서에서 처음 소개된 CMOV 명령을 들 수 있습니다.
/clr을 사용하여 컴파일하면 /arch는 관리되는 함수 코드 생성에 영향을 주지 않습니다. /arch는 네이티브 함수에 대한 코드 생성에만 영향을 줍니다.
/arch 및 /QIfist는 같은 컴파일에서는 사용할 수 없습니다.
특히 _controlfp를 사용하여 FP 제어 단어를 수정하지 않을 경우 런타임 시작 코드가 x87 FPU 제어 단어 정밀도 제어 필드를 53비트로 설정합니다. 따라서 식에서 모든 float 및 double 작업은 53비트 기호 및 15비트 지수로 발생합니다. 그러나 모든 SSE 단정밀도 연산은 24비트 기호 및 8비트 지수를 사용하고 SSE2 배정밀도 연산은 53비트 기호 및 11비트 지수를 사용합니다. 자세한 내용은 _control87, _controlfp, __control87_2을 참조하십시오.
이러한 차이는 하나의 식 트리에서 가능하지만 사용자 할당이 각 부분식 뒤에 포함되는 경우에만 가능합니다.
r = f1 * f2 + d; // Different results are possible on SSE/SSE2.
아래와 비교
t = f1 * f2; // Do f1 * f2, round to the type of t.
r = t + d; // This should produce the same overall result
// regardless whether x87 stack or SSE/SSE2 is used.
controlfp는 MXCSR 제어 비트를 변경하지 않습니다. 따라서 /arch:SSE2를 사용하여 controlfp를 사용하는 기능은 중단됩니다.
Visual Studio에서 SSE 또는 SSE2의 컴파일러 옵션을 설정하려면
프로젝트의 속성 페이지 대화 상자를 엽니다. 자세한 내용은 방법: 프로젝트 속성 페이지 열기을 참조하십시오.
C/C++ 폴더를 클릭합니다.
코드 생성 속성 페이지를 클릭합니다.
고급 명령어 집합 사용 속성을 수정합니다.
Visual Studio에서 /arch:AVX 컴파일러 옵션을 설정하려면
프로젝트의 속성 페이지 대화 상자를 엽니다. 자세한 내용은 방법: 프로젝트 속성 페이지 열기을 참조하십시오.
C/C++ 폴더를 클릭합니다.
명령줄 속성 페이지를 클릭합니다.
추가 옵션 상자에서 /arch:AVX를 추가합니다.
프로그래밍 방식으로 이 컴파일러 옵션을 설정하려면
- EnableEnhancedInstructionSet를 참조하십시오.