Spec-Zone.ru › GCC 4

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

Spec-Zone.ru

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