Spec-Zone.ru › GCC 6

3.18.3 Варианты архитектуры ARC

Следующие параметры управляют вариантом архитектуры, для которого компилируется код:

-mbarrel-shifter

Генерировать инструкции, поддерживаемые сдвиговым регистром. По умолчанию, если не заданы -mcpu=ARC601 или -mcpu=ARCEM.

-mcpu=cpu

Установить параметры типа архитектуры, использования регистров и планирования инструкций для cpu. Также доступны сокращённые варианты для обратной совместимости и удобства. Поддерживаемые значения для cpu:

‘ARC600’
‘arc600’

Компиляция для ARC600. Псевдонимы: -mA6, -mARC600.

‘ARC601’
‘arc601’

Компиляция для ARC601. Псевдоним: -mARC601.

‘ARC700’
‘arc700’

Компиляция для ARC700. Псевдонимы: -mA7, -mARC700. По умолчанию при настройке с --with-cpu=arc700.

‘ARCEM’
‘arcem’

Компиляция для ARC EM.

‘ARCHS’
‘archs’

Компиляция для ARC HS.

-mdpfp
-mdpfp-compact

FPX: Генерировать инструкции FPX двойной точности, настроенные для компактной реализации.

-mdpfp-fast

FPX: Генерировать инструкции FPX двойной точности, настроенные для быстрой реализации.

-mno-dpfp-lrsr

Отключить использование инструкций LR и SR с расширением FPX дополнительных регистров.

-mea

Генерировать расширенные арифметические инструкции. В настоящее время поддерживаются только divaw, adds, subs, и sat16. Включено по умолчанию для -mcpu=ARC700.

-mno-mpy

Не генерировать инструкции mpy для ARC700.

-mmul32x16

Генерировать инструкции умножения и суммирования 32x16 бит.

-mmul64

Генерировать инструкции mul64 и mulu64. Действительно только для -mcpu=ARC600.

-mnorm

Генерировать инструкцию norm. По умолчанию, если задан -mcpu=ARC700.

-mspfp
-mspfp-compact

FPX: Генерировать инструкции FPX одинарной точности, настроенные для компактной реализации.

-mspfp-fast

FPX: Генерировать инструкции FPX одинарной точности, настроенные для быстрой реализации.

-msimd

Включить генерацию инструкций ARC SIMD через встроенные функции, специфичные для целевой платформы. Только для -mcpu=ARC700.

-msoft-float

Этот параметр игнорируется; он предоставлен только для совместимости. По умолчанию используется программный код с плавающей запятой, и это значение можно переопределить параметрами FPX; ‘mspfp’, ‘mspfp-compact’, или ‘mspfp-fast’ для одинарной точности, и ‘mdpfp’, ‘mdpfp-compact’, или ‘mdpfp-fast’ для двойной точности.

-mswap

Генерировать инструкции swap.

-matomic

Включает расширение условного блокирующего загрузки/хранения для реализации встроенных функций атомной памяти. Недоступно для ядер ARC 6xx или ARC EM.

-mdiv-rem

Включить инструкции DIV/REM для ядер ARCv2.

-mcode-density

Включить инструкции сжатия кода для ARC EM, по умолчанию включено для ARC HS.

-mll64

Включить двойные операции загрузки/хранения для ядер ARC HS.

-mmpy-option=multo

Компилировать код ARCv2 с вариантом проектирования умножителя. ‘wlh1’ является значением по умолчанию. Признаваемые значения для multo:

‘0’

Нет доступного умножителя.

‘1’

Параметр умножения установлен на w: 16x16 умножитель, полностью конвейерный. Включены следующие инструкции: MPYW, и MPYUW.

‘2’

Параметр умножения установлен на wlh1: 32x32 умножитель, полностью конвейерный (1 стадия). Дополнительно включены инструкции: MPY, MPYU, MPYM, MPYMU, и MPY_S.

‘3’

Параметр умножения установлен на wlh2: 32x32 умножитель, полностью конвейерный (2 стадии). Дополнительно включены инструкции: MPY, MPYU, MPYM, MPYMU, и MPY_S.

‘4’

Параметр умножения установлен на wlh3: Два 16x16 умножителя, блокирующие, последовательные. Дополнительно включены инструкции: MPY, MPYU, MPYM, MPYMU, и MPY_S.

‘5’

Параметр умножения установлен на wlh4: Один 16x16 умножитель, блокирующий, последовательный. Дополнительно включены инструкции: MPY, MPYU, MPYM, MPYMU, и MPY_S.

‘6’

Параметр умножения установлен на wlh5: Один 32x4 умножитель, блокирующий, последовательный. Дополнительно включены инструкции: MPY, MPYU, MPYM, MPYMU, и MPY_S.

Этот параметр доступен только для ядер ARCv2.

-mfpu=fpu

Включает определённое расширение аппаратной поддержки чисел с плавающей точкой для ядра ARCv2. Поддерживаемые значения для fpu:

‘fpus’

Включает поддержку аппаратных расширений для чисел с плавающей точкой одинарной точности.

‘fpud’

Включает поддержку аппаратных расширений для чисел с плавающей точкой двойной точности. Также включается расширение для одинарной точности. Недоступно для ARC EM.

‘fpuda’

Включает поддержку аппаратных расширений для чисел с плавающей точкой двойной точности с использованием инструкций для поддержки двойной точности. Также включается расширение для одинарной точности. Доступно только для ARC EM.

‘fpuda_div’

Включает поддержку аппаратных расширений для чисел с плавающей точкой двойной точности с использованием инструкций для поддержки двойной точности, а также аппаратных расширений для извлечения квадратного корня и деления одинарной точности. Также включается расширение для одинарной точности. Доступно только для ARC EM.

‘fpuda_fma’

Включает поддержку аппаратных расширений для чисел с плавающей точкой двойной точности с использованием инструкций для поддержки двойной точности, а также расширение для слияния умножения и сложения одинарной точности. Также включается расширение для одинарной точности. Доступно только для ARC EM.

‘fpuda_all’

Включает поддержку аппаратных расширений для чисел с плавающей точкой двойной точности с использованием инструкций для поддержки двойной точности и всех аппаратных расширений одинарной точности. Также включается расширение для одинарной точности. Доступно только для ARC EM.

‘fpus_div’

Включает поддержку аппаратных расширений для чисел с плавающей точкой одинарной точности и аппаратных расширений для извлечения квадратного корня и деления одинарной точности.

‘fpud_div’

Включает поддержку аппаратных расширений для чисел с плавающей точкой двойной точности и аппаратных расширений для извлечения квадратного корня и деления двойной точности. Включает параметр ‘fpus_div’. Недоступно для ARC EM.

‘fpus_fma’

Включает поддержку аппаратных расширений для чисел с плавающей точкой одинарной точности и расширение для слияния умножения и сложения одинарной точности.

‘fpud_fma’

Включает поддержку аппаратных расширений для чисел с плавающей точкой двойной точности и расширение для слияния умножения и сложения двойной точности. Включает параметр ‘fpus_fma’. Недоступно для ARC EM.

‘fpus_all’

Включает поддержку всех аппаратных расширений для чисел с плавающей точкой одинарной точности.

‘fpud_all’

Включает поддержку всех аппаратных расширений для чисел с плавающей точкой одинарной и двойной точности. Недоступно для ARC EM.

Следующие параметры передаются в ассемблер и также определяют символы препроцессора.

-mdsp-packa

Передаётся в ассемблер для включения расширений DSP Pack A. Также устанавливает символ препроцессора __Xdsp_packa.

-mdvbf

Передаётся в ассемблер для включения расширения двойной витерби-бабочки. Также устанавливает символ препроцессора __Xdvbf.

-mlock

Передаётся в ассемблер для включения расширения условного блокирующего загрузки/хранения. Также устанавливает символ препроцессора __Xlock.

-mmac-d16

Передаётся в ассемблер. Также устанавливает символ препроцессора __Xxmac_d16.

-mmac-24

Передаётся в ассемблер. Также устанавливает символ препроцессора __Xxmac_24.

-mrtsc

Передаётся в ассемблер для включения инструкции расширения счётчика временных меток 64 бит. Также устанавливает символ препроцессора __Xrtsc.

-mswape

Передаётся в ассемблер для включения инструкции расширения перестановки порядка байтов. Также устанавливает символ препроцессора __Xswape.

-mtelephony

Передаётся в ассемблер для включения инструкций с двойным и одинарным операндами для телефонии. Также устанавливает символ препроцессора __Xtelephony.

-mxy

Передаётся в ассемблер для включения расширения XY памяти. Также устанавливает символ препроцессора __Xxy.

Следующие параметры управляют тем, как комментируется ассемблерный код:

-misize

Комментировать ассемблерные инструкции с оцененными адресами.

-mannotate-align

Объяснить, какие соображения выравнивания приводят к решению о том, чтобы сделать инструкцию короткой или длинной.

Следующие параметры передаются в компоновщик:

-marclinux

Передаётся в компоновщик, чтобы указать использование эмуляции arclinux. Этот параметр включён по умолчанию в инструментальных цепочках, скомпилированных для arc-linux-uclibc и arceb-linux-uclibc целевых платформ, когда не требуется профилирование.

-marclinux_prof

Передаётся в компоновщик, чтобы указать использование эмуляции arclinux_prof. Этот параметр включён по умолчанию в инструментальных цепочках, скомпилированных для arc-linux-uclibc и arceb-linux-uclibc целевых платформ, когда требуется профилирование.

Следующие параметры управляют семантикой генерируемого кода:

-mlong-calls

Генерировать вызовы инструкций как косвенные вызовы по регистру, предоставляя доступ ко всему 32-битному диапазону адресов.

-mmedium-calls

Не использовать диапазон адресации менее 25 бит для вызовов, который является смещением, доступным для безусловной инструкции branch-and-link. Условное выполнение вызовов функций подавляется, чтобы разрешить использование диапазона 25 бит вместо диапазона 21 бит с условным branch-and-link. Это значение по умолчанию для инструментальных цепочек, скомпилированных для arc-linux-uclibc и arceb-linux-uclibc целевых платформ.

-mno-sdata

Не генерировать ссылки sdata. Это значение по умолчанию для инструментальных цепочек, скомпилированных для arc-linux-uclibc и arceb-linux-uclibc целевых платформ.

-mucb-mcount

Инструментировать вызовами mcount, как используется в коде UCB. Т.е. выполнять подсчёт в вызываемой функции, а не в вызывающей. По умолчанию инструментация ARC выполняет подсчёт в вызывающей функции.

-mvolatile-cache

Использовать обычно кэшируемые обращения к памяти для волатильных ссылок. Это значение по умолчанию.

-mno-volatile-cache

Включить обход кэша для волатильных ссылок.

Следующие параметры позволяют точнее настроить генерацию кода:

-malign-call

Выполнять оптимизации выравнивания для инструкций вызова.

-mauto-modify-reg

Включить использование пред/после модификации со смещением регистра.

-mbbit-peephole

Включить bbit peephole2.

-mno-brcc

Этот параметр отключает специфичный для целевой платформы этап в arc_reorg для генерации инструкций BRcc. Он не влияет на генерацию BRcc, управляемую этапом объединения.

-mcase-vector-pcrel

Использовать pc-относительные таблицы switch case - это позволяет укоротить таблицы case. Это значение по умолчанию для -Os.

-mcompact-casesi

Включить компактную структуру casesi. Это значение по умолчанию для -Os.

-mno-cond-exec

Отключить специфичный для ARCompact этап для генерации инструкций условного выполнения. Из-за планирования с задержкой, взаимодействия между номерами операндов, размерами литералов, длинами инструкций и поддержкой условного выполнения независимый от целевой платформы этап генерации условного выполнения часто отсутствует, поэтому порт ARC сохранил специальный этап, который пытается найти больше возможностей генерации условного выполнения после размещения регистров, укорачивания ветвлений и планирования с задержкой. Этот этап, как правило, но не всегда, улучшает производительность и размер кода за счёт дополнительного времени компиляции, поэтому существует возможность его отключения. Если у вас есть проблема с тем, что инструкции вызова превышают допустимый диапазон смещения из-за условного выполнения, вы должны рассмотреть использование -mmedium-calls вместо этого.

-mearly-cbranchsi

Включить предварительное использование cbranchsi шаблона.

-mexpand-adddi

Расширить adddi3 и subdi3 во время генерации rtl в add.f, adc и т.д.

-mindexed-loads

Включить использование индексированных загрузок. Это может быть проблематично, потому что некоторые оптимизаторы затем предполагают существование индексированных сохранений, что не так.

Включить локальное размещение регистров. Это всё ещё экспериментально для ARC, поэтому по умолчанию компилятор использует стандартное перераспределение (т.е. -mno-lra).

-mlra-priority-none

Не указывать приоритет для регистров целевой платформы.

-mlra-priority-compact

Указать приоритет регистров целевой платформы для r0..r3 / r12..r15.

-mlra-priority-noncompact

Уменьшить приоритет регистров целевой платформы для r0..r3 / r12..r15.

-mno-millicode

При оптимизации по размеру (с использованием -Os), прологи и эпилоги, которые должны сохранить или восстановить большое количество регистров, часто укорачиваются путём вызова специальной функции в libgcc; это называется вызовом millicode. Поскольку эти вызовы могут представлять проблемы с производительностью и/или вызывать проблемы с компоновкой при компоновке нестандартным образом, этот параметр предназначен для отключения генерации вызовов millicode.

-mmixed-code

Настроить размещение регистров, чтобы помочь генерации инструкций длиной 16 бит. Это, как правило, приводит к уменьшению среднего размера инструкции при увеличении количества инструкций.

-mq-class

Включить альтернативы инструкций «q». Это значение по умолчанию для -Os.

-mRcq

Включить обработку ограничения Rcq - большинство генерации краткого кода зависит от этого. Это значение по умолчанию.

-mRcw

Включить обработку ограничения Rcw - ccfsm condexec в основном зависит от этого. Это значение по умолчанию.

-msize-level=level

Точная настройка оптимизации размера по отношению к длинам и выравниванию инструкций. Признанные значения для level:

‘0’

Без оптимизации по размеру. Этот уровень устарел и рассматривается как ‘1’.

‘1’

Короткие инструкции используются по возможности.

‘2’

Кроме того, отменяется выравнивание циклов и кода после барьеров.

‘3’

Кроме того, отменяется необязательное выравнивание данных, и параметр Os включается.

Это значение по умолчанию ‘3’, когда -Os активен. В противном случае поведение, когда это не установлено, эквивалентно уровню ‘1’.

-mtune=cpu

Установить параметры планирования инструкций для cpu, переопределяя любые, подразумеваемые -mcpu=.

Поддерживаемые значения для cpu:

‘ARC600’

Настройка для процессора ARC600.

‘ARC601’

Настройка для процессора ARC601.

‘ARC700’

Настройка для процессора ARC700 со стандартным блоком умножителя.

‘ARC700-xmac’

Настройка для процессора ARC700 с блоком XMAC.

‘ARC725D’

Настройка для процессора ARC725D.

‘ARC750D’

Настройка для процессора ARC750D.

-mmultcost=num

Стоимость, которую следует принять для инструкции умножения, при этом ‘4’ равна обычной инструкции.

-munalign-prob-threshold=probability

Установить пороговое значение вероятности для невыравнивания ветвлений. При настройке для ‘ARC700’ и оптимизации для скорости ветви без заполненного слота задержки предпочтительно генерируются невыровненными и длинными, если профилирование не указывает, что вероятность выполнения ветвления ниже probability. См. Cross-profiling. Значение по умолчанию (REG_BR_PROB_BASE/2), т.е. 5000.

Следующие параметры поддерживаются для обратной совместимости, но теперь устарели и будут удалены в будущей версии:

-margonaut

Устаревший FPX.

-mbig-endian
-EB

Компилировать код для целевых платформ с big endian. Использование этих параметров устарело. Пользователи, которые хотят код с big endian, должны использовать целевые платформы arceb-elf32 и arceb-linux-uclibc при построении инструментальной цепочки, для которой big endian является значением по умолчанию.

-mlittle-endian
-EL

Компилировать код для целевых платформ с little endian. Использование этих параметров устарело. Пользователи, которые хотят код с little endian, должны использовать целевые платформы arc-elf32 и arc-linux-uclibc при построении инструментальной цепочки, для которой little endian является значением по умолчанию.

-mbarrel_shifter

Заменён на -mbarrel-shifter.

-mdpfp_compact

Заменён на -mdpfp-compact.

-mdpfp_fast

Заменён на -mdpfp-fast.

-mdsp_packa

Заменён на -mdsp-packa.

-mEA

Заменён на -mea.

-mmac_24

Заменён на -mmac-24.

-mmac_d16

Заменён на -mmac-d16.

-mspfp_compact

Заменён на -mspfp-compact.

-mspfp_fast

Заменён на -mspfp-fast.

-mtune=cpu

Значения ‘arc600’, ‘arc601’, ‘arc700’ и ‘arc700-xmac’ для cpu заменены на ‘ARC600’, ‘ARC601’, ‘ARC700’ и ‘ARC700-xmac’ соответственно

-multcost=num

Заменён на -mmultcost.

Следующий: Параметры ARM, Предыдущий: Параметры Adapteva Epiphany, Вверх: Параметры подмодели [Содержание][Индекс]

© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-6.5.0/gcc/ARC-Options.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API