Spec-Zone.ru › GCC 6

3.18.1 Параметры AArch64

Эти параметры определены для реализаций AArch64:

-mabi=name

Генерировать код для указанной модели данных. Допустимые значения — ‘ilp32’ для модели данных типа SysV, где int, long int и указатель имеют 32 бита, и ‘lp64’ для модели данных типа SysV, где int имеет 32 бита, а long int и указатель — 64 бита.

По умолчанию зависит от конкретной конфигурации целевой платформы. Обратите внимание, что ABI LP64 и ILP32 несовместимы при линковке; необходимо скомпилировать всю программу с одним ABI и связать её с совместимым набором библиотек.

-mbig-endian

Генерировать код в формате big-endian. Это значение по умолчанию, когда GCC настроен для целевой платформы ‘aarch64_be-*-*’.

-mgeneral-regs-only

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

-mlittle-endian

Генерировать код в формате little-endian. Это значение по умолчанию, когда GCC настроен для целевой платформы ‘aarch64-*-*’, но не ‘aarch64_be-*-*’.

-mcmodel=tiny

Генерировать код для крошечной модели кода. Программа и её статически определённые символы должны находиться на расстоянии в пределах 1 ГБ друг от друга. Указатели — 64 бита. Программы могут быть статически или динамически связаны. Эта модель не полностью реализована и в основном обрабатывается как ‘small’.

-mcmodel=small

Генерировать код для малой модели кода. Программа и её статически определённые символы должны находиться на расстоянии в пределах 4 ГБ друг от друга. Указатели — 64 бита. Программы могут быть статически или динамически связаны. Это модель кода по умолчанию.

-mcmodel=large

Генерировать код для большой модели кода. Она не делает предположений об адресах и размерах разделов. Указатели — 64 бита. Программы могут быть только статически связаны.

-mstrict-align

Не предполагать, что ссылки на невыровненную память обрабатываются системой.

-momit-leaf-frame-pointer
-mno-omit-leaf-frame-pointer

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

-mtls-dialect=desc

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

-mtls-dialect=traditional

Использовать традиционную TLS в качестве механизма хранения TLS для динамического доступа к переменным TLS.

-mtls-size=size

Указать размер непосредственного смещения TLS в битах. Допустимые значения — 12, 24, 32, 48. Этот параметр зависит от binutils версии выше 2.25.

-mfix-cortex-a53-835769
-mno-fix-cortex-a53-835769

Включить или отключить обходное решение для ошибки ARM Cortex-A53 с номером 835769. Это включает вставку инструкции NOP между инструкциями памяти и инструкциями 64-разрядного целочисленного умножения-сложения.

-mfix-cortex-a53-843419
-mno-fix-cortex-a53-843419

Включить или отключить обходное решение для ошибки ARM Cortex-A53 с номером 843419. Данное обходное решение применяется на этапе линковки, и этот параметр передаст соответствующий флаг в компоновщик.

-mlow-precision-recip-sqrt
-mno-low-precision-recip-sqrt

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

-march=name

Укажите имя целевой архитектуры и, необязательно, один или несколько модификаторов функций. Этот параметр имеет вид -march=arch{+[no]feature}*.

Допустимые значения для arch — ‘armv8-a’, ‘armv8.1-a’ или native.

Значение ‘armv8.1-a’ подразумевает ‘armv8-a’ и включает поддержку компилятора для расширения архитектуры ARMv8.1. В частности, оно включает функции ‘+crc’ и ‘+lse’.

Значение ‘native’ доступно в родной AArch64 GNU/Linux и заставляет компилятор выбрать архитектуру хост-системы. Этот параметр не имеет эффекта, если компилятор не может распознать архитектуру хост-системы.

Допустимые значения для feature перечислены в подраздле “Модификаторы функций -march и -mcpu”. В случае конфликтующих модификаторов функций используется последний.

GCC использует name для определения типа инструкций, которые можно выдать при генерации кода ассемблера. Если -march указан без -mtune или -mcpu, код настраивается на высокую производительность на различных целевых процессорах, поддерживающих целевую архитектуру.

-mtune=name

Укажите имя целевого процессора, для которого GCC должен настроить производительность кода. Допустимые значения для этого параметра: ‘generic’, ‘cortex-a35’, ‘cortex-a53’, ‘cortex-a57’, ‘cortex-a72’, ‘exynos-m1’, ‘qdf24xx’, ‘thunderx’, ‘xgene1’.

Кроме того, этот параметр может указывать, что GCC должен настроить производительность кода для системы big.LITTLE. Допустимые значения для этого параметра: ‘cortex-a57.cortex-a53’, ‘cortex-a72.cortex-a53’.

Кроме того, в родных AArch64 GNU/Linux системах доступно значение ‘native’. Этот параметр заставляет компилятор выбрать архитектуру и настроить производительность кода для процессора хост-системы. Этот параметр не имеет эффекта, если компилятор не может распознать архитектуру хост-системы.

Если ни -mtune=, ни -mcpu=, ни -march= не указаны, код настраивается на высокую производительность на различных целевых процессорах.

Этот параметр не может иметь модификаторы функций.

-mcpu=name

Укажите имя целевого процессора, необязательно с постфиксом одним или несколькими модификаторами функций. Этот параметр имеет вид -mcpu=cpu{+[no]feature}*, где допустимые значения для cpu такие же, как и для -mtune. Допустимые значения для feature документированы в подраздле “Модификаторы функций -march и -mcpu”. В случае конфликтующих модификаторов функций используется последний.

Кроме того, в родных AArch64 GNU/Linux системах доступно значение ‘native’. Этот параметр заставляет компилятор настроить производительность кода для процессора хост-системы. Этот параметр не имеет эффекта, если компилятор не может распознать архитектуру хост-системы.

GCC использует name, чтобы определить тип инструкций, которые можно выдать при генерации кода ассемблера (как если бы был -march) и для определения целевого процессора, для которого настроить производительность (как если бы был -mtune). Когда этот параметр используется совместно с -march или -mtune, эти параметры имеют приоритет над соответствующей частью этого параметра.

-moverride=string

Переопределяет решения по настройке, принятые задним концом в ответ на переключатель -mtune=. Синтаксис, семантика и допустимые значения для string в этом параметре не гарантируются как согласующиеся между выпусками.

Этот параметр предназначен только для разработчиков GCC.

-mpc-relative-literal-loads

Включить загрузки литералов, относительных к PC. Если этот параметр используется, предполагается, что пулы литералов имеют диапазон до 1 МБ, и используется соответствующая последовательность инструкций. Этот параметр не имеет влияния, когда используется с -mcmodel=tiny.

3.18.1.1 Модификаторы функций -march и -mcpu

Модификаторы функций, используемые с -march и -mcpu, могут быть любыми из следующих и их обратными nofeature:

‘crc’

Включить расширение CRC. Это включено по умолчанию для -march=armv8.1-a.

‘crypto’

Включить расширение Crypto. Это также включает инструкции Advanced SIMD и с плавающей точкой.

‘fp’

Включить инструкции с плавающей точкой. Это включено по умолчанию для всех возможных значений параметров -march и -mcpu.

‘simd’

Включить инструкции Advanced SIMD. Это также включает инструкции с плавающей точкой. Это включено по умолчанию для всех возможных значений параметров -march и -mcpu.

‘lse’

Включить инструкции расширения Large System. Это включено по умолчанию для -march=armv8.1-a.

То есть, crypto подразумевает simd, которое подразумевает fp. И наоборот, nofp (или эквивалентно -mgeneral-regs-only) подразумевает nosimd, которое подразумевает nocrypto.

Далее: Параметры Adapteva Epiphany, Наверх: Параметры подмоделей [Оглавление][Индекс]

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

Spec-Zone.ru

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