Spec-Zone.ru › GCC 7

3.18.3 ARC Параметры

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

-mbarrel-shifter

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

-mcpu=cpu

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

‘arc600’

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

‘arc601’

Компилировать для ARC601. Псевдоним: -mARC601.

‘arc700’

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

‘arcem’

Компилировать для ARC EM.

‘archs’

Компилировать для ARC HS.

‘em’

Компилировать для ARC EM CPU без аппаратных расширений.

‘em4’

Компилировать для ARC EM4 CPU.

‘em4_dmips’

Компилировать для ARC EM4 DMIPS CPU.

‘em4_fpus’

Компилировать для ARC EM4 DMIPS CPU с расширением для одноточной арифметики с плавающей запятой.

‘em4_fpuda’

Компилировать для ARC EM4 DMIPS CPU с расширениями для одноточной арифметики с плавающей запятой и инструкциями двойной точности с помощью вспомогательных инструкций.

‘hs’

Компилировать для ARC HS CPU без аппаратных расширений, кроме атомарных инструкций.

‘hs34’

Компилировать для ARC HS34 CPU.

‘hs38’

Компилировать для ARC HS38 CPU.

‘hs38_linux’

Компилировать для ARC HS38 CPU со всеми аппаратными расширениями включёнными.

‘arc600_norm’

Компилировать для ARC 600 CPU с norm инструкциями включёнными.

‘arc600_mul32x16’

Компилировать для ARC 600 CPU с norm и инструкциями 32x16-битного умножения включёнными.

‘arc600_mul64’

Компилировать для ARC 600 CPU с norm и mul64-семействами инструкций включёнными.

‘arc601_norm’

Компилировать для ARC 601 CPU с norm инструкциями включёнными.

‘arc601_mul32x16’

Компилировать для ARC 601 CPU с norm и инструкциями 32x16-битного умножения включёнными.

‘arc601_mul64’

Компилировать для ARC 601 CPU с norm и mul64-семействами инструкций включёнными.

‘nps400’

Компилировать для ARC 700 на чипе NPS400.

-mdpfp
-mdpfp-compact

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

-mdpfp-fast

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

-mspfp-fast

Генерировать инструкции 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.

-mtp-regno=regno

Указать номер регистра указателя потока.

-mmpy-option=multo

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

‘0’
‘none’

Умножитель недоступен.

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

‘7’
‘plus_dmpy’

Поддержка ARC HS SIMD.

‘8’
‘plus_macd’

Поддержка ARC HS SIMD.

‘9’
‘plus_qmacw’

Поддержка ARC HS SIMD.

Этот параметр доступен только для ядер 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 бит для вызовов, что является смещением, доступным для инструкции безусловного ветвления и связи. Условное выполнение вызовов функций подавляется, чтобы разрешить использование диапазона 25 бит вместо диапазона 21 бит с условным ветвлением и связью. Это значение по умолчанию для инструментальных цепочек, созданных для arc-linux-uclibc и arceb-linux-uclibc целевых платформ.

-mno-sdata

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

-mvolatile-cache

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

-mno-volatile-cache

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

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

-malign-call

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

-mauto-modify-reg

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

-mbbit-peephole

Включить peephole2 для bbit.

-mno-brcc

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

-mcase-vector-pcrel

Использовать таблицы переключателей PC-относительных для сокращения таблиц случаев. Это значение по умолчанию для -Os.

-mcompact-casesi

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

-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 поддерживается путем настройки GCC для построения arceb-elf32 и arceb-linux-uclibc целей, для которых big endian является значением по умолчанию.

-mlittle-endian
-EL

Компилировать код для целей little-endian. Использование этих опций устарело. Код little-endian поддерживается путем настройки GCC для построения 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-7.5.0/gcc/ARC-Options.html

Spec-Zone.ru

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