Spec-Zone.ru › GCC 15

3.20.4 Параметры ARC

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

-mbarrel-shifter

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

-mjli-always

Принудительно вызывать функцию с помощью инструкции jli_s. Этот параметр действителен только для архитектуры ARCv2.

-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 без аппаратных расширений.

‘em4’

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

‘em4_dmips’

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

‘em4_fpus’

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

‘em4_fpuda’

Компилировать для процессора ARC EM4 DMIPS с операциями с плавающей точкой одинарной точности и инструкциями поддержки двойной точности.

‘hs’

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

‘hs34’

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

‘hs38’

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

‘hs38_linux’

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

‘hs4x’

Компилировать для процессора ARC HS4x.

‘hs4xd’

Компилировать для процессора ARC HS4xD.

‘hs4x_rel31’

Компилировать для процессора ARC HS4x, версия 3.10a.

‘arc600_norm’

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

‘arc600_mul32x16’

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

‘arc600_mul64’

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

‘arc601_norm’

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

‘arc601_mul32x16’

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

‘arc601_mul64’

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

‘nps400’

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

‘em_mini’

Компилировать для минималистичной конфигурации ARC EM с сокращённым набором регистров.

-mdpfp
-mdpfp-compact

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

-mdpfp-fast

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

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

-mirq-ctrl-saved=register-range, blink, lp_count

Указать регистры общего назначения, которые процессор автоматически сохраняет и восстанавливает при входе в обработчик прерывания и выходе из него. register-range задаётся как два регистра, разделённые дефисом. Диапазон регистров всегда начинается с r0; верхняя граница — регистр fp. Параметры blink и lp_count необязательны. Этот параметр действителен только для ядер ARC EM и ARC HS.

-mrgf-banked-regs=number

Указать количество регистров, дублируемых во втором банке регистров при входе в быстрое прерывание. Быстрые прерывания — это прерывания с наивысшим уровнем приоритета P0. Чтобы избежать транзакций с памятью при входе в обработчик и выходе из него, при таких прерываниях сохраняются только регистры PC и STATUS32. Используйте этот параметр при работе с быстрыми прерываниями на процессоре семейства ARC V2. Допустимые значения: 4, 8, 16 и 32.

-mlpc-width=width

Указать разрядность регистра lp_count. Допустимые значения width: 8, 16, 20, 24, 28 и 32 бита. По умолчанию разрядность фиксирована на 32 битах. Если разрядность меньше 32 бит, компилятор не пытается преобразовывать циклы программы для использования механизма цикла с нулевой задержкой, если только не известно, что регистр lp_count может хранить требуемое значение счётчика цикла. В зависимости от заданной разрядности компилятор и библиотека времени выполнения могут продолжать использовать механизм циклов для различных задач. Этот параметр определяет макрос __ARC_LPC_WIDTH__ со значением width.

-mrf16

Этот параметр указывает компилятору генерировать код для регистрового файла из 16 элементов. Он определяет макрос препроцессора __ARC_RF16__.

-mbranch-index

Разрешить использование инструкций bi или bih для реализации таблиц переходов.

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

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

-G num

Помещать определения внешних данных в секцию малых данных, если размер этих данных не превышает num байт. Значение num по умолчанию равно 4 для любой конфигурации ARC или 8 при наличии операций двойной загрузки/сохранения.

-mno-sdata

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

-mvolatile-cache

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

-mno-volatile-cache

Включить обход кэша для ссылок volatile.

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

-malign-call

Ничего не делает. Сохранён для обратной совместимости.

-mauto-modify-reg

Разрешить использование автоинкремента/автодекремента с регистровым смещением.

-mbbit-peephole

Ничего не делает. Сохранён для обратной совместимости.

-mno-brcc

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

-mcase-vector-pcrel

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

-mcompact-casesi

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

-mno-cond-exec

Отключить специфичный для ARCompact этап генерации инструкций условного выполнения.

Из-за планирования слотов задержки и взаимодействия между номерами операндов, размерами литералов, длиной инструкций и поддержкой условного выполнения, независимому от целевой платформы этапу генерации условного выполнения часто недостаёт возможностей. Поэтому в порте ARC сохранён специальный этап, который после распределения регистров, сокращения переходов и планирования слотов задержки пытается найти дополнительные возможности для генерации условного выполнения. Этот этап обычно, но не всегда, повышает производительность и уменьшает размер кода ценой увеличения времени компиляции; поэтому предусмотрен параметр для его отключения. Если инструкции вызова выходят за допустимый диапазон смещения из-за условного выполнения, рассмотрите возможность использовать -mmedium-calls.

-mearly-cbranchsi

Разрешить использование шаблона cbranchsi до перезагрузки регистров.

-mexpand-adddi

При генерации RTL разворачивать adddi3 и subdi3 в add.f, adc и т. д. Этот параметр устарел.

-mindexed-loads

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

-mlra

Ничего не делает. Сохранён для обратной совместимости.

-mlra-priority-none

Не задавать приоритет для целевых регистров.

-mlra-priority-compact

Задать приоритет целевых регистров для r0..r3 / r12..r15.

-mlra-priority-noncompact

Снизить приоритет целевых регистров для r0..r3 / r12..r15.

-mmillicode

При оптимизации размера (с помощью -Os) прологи и эпилоги, в которых требуется сохранить или восстановить большое количество регистров, часто сокращаются за счёт вызова специальной функции из libgcc; такой вызов называется вызовом millicode. Поскольку эти вызовы могут снижать производительность и/или вызывать проблемы при нестандартной компоновке, этот параметр позволяет включать или отключать генерацию вызовов millicode.

-mcode-density-frame

Этот параметр разрешает компилятору генерировать инструкции enter и leave. Эти инструкции допустимы только для процессоров с функцией повышения плотности кода.

-mmixed-code

Ничего не делает. Сохранён для обратной совместимости.

-mq-class

Этот параметр устарел. Включить альтернативные варианты инструкции ‘q’. Это значение используется по умолчанию для -Os.

-mRcq

Ничего не делает. Сохранён для обратной совместимости.

-mRcw

Ничего не делает. Сохранён для обратной совместимости.

-msize-level=level

Настроить оптимизацию размера с учётом длины инструкций и выравнивания. Допустимые значения level:

‘0’

Без оптимизации размера. Этот уровень устарел и обрабатывается как ‘1’.

‘1’

Короткие инструкции используются при наличии подходящих возможностей.

‘2’

Дополнительно отменяется выравнивание циклов и кода после барьеров.

‘3’

Дополнительно отменяется необязательное выравнивание данных и включается параметр Os.

Если задан -Os, по умолчанию используется значение ‘3’. В противном случае, если параметр не задан, поведение эквивалентно уровню ‘1’.

-mtune=cpu

Задать параметры планирования инструкций для cpu, переопределив параметры, подразумеваемые параметром -mcpu=.

Поддерживаемые значения cpu:

‘ARC600’

Оптимизировать для процессора ARC600.

‘ARC601’

Оптимизировать для процессора ARC601.

‘ARC700’

Оптимизировать для процессора ARC700 со стандартным блоком умножителя.

‘ARC700-xmac’

Оптимизировать для процессора ARC700 с блоком XMAC.

‘ARC725D’

Оптимизировать для процессора ARC725D.

‘ARC750D’

Оптимизировать для процессора ARC750D.

‘core3’

Оптимизировать для процессора типа ARCv2 core3. Этот параметр разрешает использование инструкции dbnz.

‘release31a’

Оптимизировать для ARC4x, версия 3.10a.

-mmultcost=num

Оценочная стоимость инструкции умножения; значение ‘4’ соответствует обычной инструкции.

-munalign-prob-threshold=probability

Ничего не делает. Сохранён для обратной совместимости.

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

-margonaut

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

-mbig-endian
-EB

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

-mlittle-endian
-EL

Компилировать код для целевых платформ с порядком байтов от младшего к старшему. Использование этих параметров устарело. Поддержка такого кода обеспечивается настройкой GCC для сборки целевых платформ 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.

© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-15.3.0/gcc/ARC-Options.html

Spec-Zone.ru

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