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- Отключить использование инструкций 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.
Следующие параметры передаются в ассемблер и также определяют символы препроцессора.
-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 бит для вызовов, что является смещением, доступным для безусловной инструкции 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- Использовать обычный кешируемый доступ к памяти для переменных с модификатором volatile. Это значение по умолчанию.
-mno-volatile-cache- Включить обход кэша для переменных с модификатором volatile.
Следующие параметры уточняют генерацию кода:
-malign-call- Оптимизация выравнивания для инструкций вызова.
-mauto-modify-reg- Включить использование предварительной/последующей модификации с смещением регистра.
-mbbit-peephole- Включить оптимизацию `bbit`.
-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. См. 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’.
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-4.9.4/gcc/ARC-Options.html