/arch (x86)

Определить архитектуру для создания кода для платформы x86.См. также /arch (x64) и /arch (ARM).

/arch:[IA32|SSE|SSE2|AVX]

Аргументы

  • /arch:IA32
    Не определяет никаких улучшенные инструкции, а также определяет x87 для вычислений с плавающей запятой.

  • /arch:SSE
    Разрешает использование инструкций SSE.

  • /arch:SSE2
    Позволяет использовать инструкции SSE2.Это инструкция по умолчанию на платформах x86, если параметр /arch не указан.

  • /arch:AVX
    Разрешает использование инструкции Intel набор расширений вектора.

Заметки

Наборы инструкций SSE и SSE2 имеются в различных процессорах Intel и AMD.Инструкции AVX существуют в процессорах Intel Sandy Bridge и процессорах AMD Bulldozer.

Макрос _M_IX86_FP означает, что, если любое, использовался параметр компилятора /arch.Для получения дополнительной информации см. Предварительно определенные макросы.

Если указан параметр /arch, то оптимизатор выбирает, где и как применять наборы инструкций SSE и SSE2.Он использует инструкций SSE и SSE2 для некоторых скалярных вычислений с плавающей запятой, когда он определяет, что он быстрее для использования инструкций SSE/SSE2 и регистрирует вместо с плавающей запятой стека регистр x87.В результате код будет использовать для вычислений с плавающей запятой как инструкции x87, так и SSE/SSE2.Кроме того, используя /arch:SSE2, можно использовать инструкции SSE2 для некоторых операций 64 разрядных целые числа.

В дополнение к наборам инструкций SSE и SSE2 компилятор будет также использовать другие инструкции, имеющиеся в редакциях процессоров, поддерживающих SSE и SSE2.Примером может служить инструкция CMOV, которая впервые появилась в редакции Pentium Pro процессоров Intel.

При использовании /clr компилироваться, /arch не влияет на создание кода для управляемых функций./arch влияет только на создание кода для собственных функций.

Нельзя использовать /arch и /QIfist в одном объекте компиляции.В частности, если _controlfp не используется для изменения ключевое слово управления FP, времени выполнения устанавливается запуска поле точност- элемента управления ключевые слова управления x87 FPU до 53 бита.Следовательно, каждый float и операция числа двойной точности в выражении используется significand 53 бит и экспонента 15 бит.Однако каждая операция одиночной точности используется SSE significand бита 24 и 8 разрядного экспонента, операции и SSE2 двойной точности используют significand 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 
                  // whether x87 stack is used or SSE/SSE2 is used.

controlfp не изменяет управляющие биты MXCSR.Поэтому с /arch:SSE2, будет нарушена любая функция, которая зависит от параметра controlfp.

Установка параметра компилятора для SSE или SSE2 в Visual Studio

  1. Откройте диалоговое окно Страницы свойств проекта.Для получения дополнительной информации см. Открытие свойств страниц проекта.

  2. Выделите папку C/C++.

  3. Выберете страницу свойств Создание кода.

  4. Измените свойство Включить расширенный набор инструкций.

Установка параметра компилятора /arch:AVX в Visual Studio

  1. Откройте диалоговое окно Страницы свойств проекта.Для получения дополнительной информации см. Открытие свойств страниц проекта.

  2. Выделите папку C/C++.

  3. Выберите страницу свойств Командная строка.

  4. В поле Дополнительные параметры добавьте /arch:AVX.

Установка данного параметра компилятора программным способом

См. также

Ссылки

/arch (минимальная архитектура ЦП)

Параметры компилятора

Настройка параметров компилятора