Spec-Zone.ru › GCC 5

3.17.3 Параметры архитектуры ARC

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

-mbarrel-shifter

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

-mcpu=cpu

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

‘ARC600’

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

‘ARC601’

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

‘ARC700’

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

-mdpfp
-mdpfp-compact

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

-mdpfp-fast

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

-mno-dpfp-lrsr

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

-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.

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

-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 целей, когда запрошено профилирование.

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

-mepilogue-cfi

Включить генерацию информации о кадре вызова для эпилогов.

-mno-epilogue-cfi

Отключить генерацию информации о кадре вызова для эпилогов.

-mlong-calls

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

-mmedium-calls

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

-mno-sdata

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

-mucb-mcount

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

-mvolatile-cache

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

-mno-volatile-cache

Включить обход кэша для переменных с модификатором volatile.

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

-malign-call

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

-mauto-modify-reg

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

-mbbit-peephole

Включить оптимизацию bbit peephole2.

-mno-brcc

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

-mcase-vector-pcrel

Использовать таблицы переключателей pc-относительных – это позволяет сократить таблицы случаев. Это значение по умолчанию для -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

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

-mlra

Включить локальное распределение регистров. Это все еще экспериментально для 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. См. Перекрестное профилирование. Значение по умолчанию равно (REG_BR_PROB_BASE/2), т.е. 5000.

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

-margonaut

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

-mbig-endian
-EB

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

-mlittle-endian
-EL

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

-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-5.5.0/gcc/ARC-Options.html

Spec-Zone.ru

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