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-compactFPX: Генерировать инструкции двойной точности FPX, настроенные для компактной реализации.
-mdpfp-fastFPX: Генерировать инструкции двойной точности 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-compactFPX: Генерировать инструкции одинарной точности FPX, настроенные для компактной реализации.
-mspfp-fastFPX: Генерировать инструкции одинарной точности 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