Spec-Zone.ru › GCC 11

Далее: Параметры zSeries, Предыдущее: Параметры Xstormy16, Выше: Параметры, зависящие от машины [Оглавление][Индекс]

3.19.62 Параметры Xtensa ¶

Эти параметры поддерживаются для целей Xtensa:

-mconst16
-mno-const16

Включить или отключить использование инструкций CONST16 для загрузки константных значений. Инструкция CONST16 в настоящее время не является стандартным параметром Tensilica. При включении инструкции CONST16 всегда используются вместо стандартных инструкций L32R. Использование инструкций CONST16 включено по умолчанию, только если инструкция L32R недоступна.

-mfused-madd
-mno-fused-madd

Включить или отключить использование инструкций слияния умножения/сложения и умножения/вычитания в параметре с плавающей точкой. Это не имеет эффекта, если параметр с плавающей точкой также не включен. Отключение инструкций слияния умножения/сложения и умножения/вычитания заставляет компилятор использовать отдельные инструкции для операций умножения и сложения/вычитания. Это может быть желательно в некоторых случаях, когда требуются строго совместимые с IEEE 754 результаты: инструкции слияния умножения/сложения не округляют промежуточный результат, тем самым обеспечивая результаты с *большим* количеством бит точности, чем указано в стандарте IEEE. Отключение инструкций слияния умножения/сложения также гарантирует, что выходные данные программы не зависят от способности компилятора объединять операции умножения и сложения/вычитания.

-mserialize-volatile
-mno-serialize-volatile

При включении этого параметра GCC вставляет инструкции MEMW перед ссылками на память volatile для гарантии последовательной согласованности. По умолчанию используется -mserialize-volatile. Используйте -mno-serialize-volatile, чтобы опустить инструкции MEMW.

-mforce-no-pic

Для целей, таких как GNU/Linux, где весь код Xtensa в режиме пользователя должен быть кодом с независимой позицией (PIC), этот параметр отключает PIC для компиляции кода ядра.

-mtext-section-literals
-mno-text-section-literals

Эти параметры управляют обработкой литеральных пулов. По умолчанию используется -mno-text-section-literals, который помещает литералы в отдельный раздел в выходном файле. Это позволяет поместить литеральный пул в оперативную память/ПЗУ данных, а также позволяет компоновщику объединить литеральные пулы из отдельных объектных файлов для устранения избыточных литералов и улучшения размера кода. С -mtext-section-literals литералы вставляются в текстовый раздел, чтобы держать их как можно ближе к их ссылкам. Это может быть необходимо для больших файлов ассемблера. Литералы для каждой функции помещаются непосредственно перед этой функцией.

-mauto-litpools
-mno-auto-litpools

Эти параметры управляют обработкой литеральных пулов. По умолчанию используется -mno-auto-litpools, который помещает литералы в отдельный раздел в выходном файле, если не используется -mtext-section-literals. С -mauto-litpools литералы вставляются в текстовый раздел ассемблером. Компилятор не генерирует явные директивы .literal и загружает литералы в регистры с инструкциями MOVI вместо L32R, чтобы позволить ассемблеру выполнить релаксацию и разместить литералы по мере необходимости. Этот параметр позволяет ассемблеру создавать несколько литеральных пулов на функцию и собирать очень большие функции, что может быть невозможно с -mtext-section-literals.

-mtarget-align
-mno-target-align

При включении этого параметра GCC сообщает ассемблеру автоматически выравнивать инструкции для уменьшения штрафов за ветвление за счет некоторой плотности кода. Ассемблер пытается расширить инструкции плотности для выравнивания целей ветвления и инструкций, следующих за инструкциями вызова. Если нет достаточно предшествующих инструкций безопасной плотности для выравнивания цели, никакое расширение не выполняется. По умолчанию используется -mtarget-align. Эти параметры не влияют на обработку автовыровненных инструкций, таких как LOOP, которые ассемблер всегда выравнивает, либо расширяя инструкции плотности, либо вставляя инструкции NOP.

-mlongcalls
-mno-longcalls

При включении этого параметра GCC сообщает ассемблеру переводить прямые вызовы в косвенные вызовы, если он не может определить, что цель прямого вызова находится в диапазоне, разрешенном инструкцией вызова. Этот перевод обычно выполняется для вызовов функций в других исходных файлах. В частности, ассемблер переводит прямую инструкцию CALL в L32R, за которой следует инструкция CALLX. По умолчанию используется -mno-longcalls. Этот параметр следует использовать в программах, где цель вызова потенциально может находиться вне диапазона. Этот параметр реализован в ассемблере, а не в компиляторе, поэтому сгенерированный GCC ассемблерный код по-прежнему показывает прямые инструкции вызова — посмотрите на дизассемблированный объектный код, чтобы увидеть фактические инструкции. Обратите внимание, что ассемблер использует косвенный вызов для каждого межфайлового вызова, а не только для тех, которые действительно находятся вне диапазона.

-mabi=name

Сгенерировать код для указанного ABI. Допустимые значения: ‘call0’, ‘windowed’. Значение ABI по умолчанию выбирается конфигурацией ядра Xtensa.

-mabi=call0

При включении этого параметра параметры функции передаются в регистрах a2 через a7, регистры a12 через a15 являются сохраняемыми вызывающей стороной, и регистр a15 может использоваться как указатель стека. При включении этой версии ABI символ препроцессора C __XTENSA_CALL0_ABI__ определен.

-mabi=windowed

При включении этого параметра параметры функции передаются в регистрах a10 через a15, а вызываемая функция поворачивает окно регистров на 8 регистров при входе, так что ее аргументы находятся в регистрах a2 через a7. Регистр a7 может использоваться как указатель стека. Окно регистров поворачивается на 8 регистров назад при возвращении. При включении этой версии ABI символ препроцессора C __XTENSA_WINDOWED_ABI__ определен.

Далее: Параметры zSeries, Предыдущее: Параметры Xstormy16, Выше: Параметры, зависящие от машины [Оглавление][Индекс]

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

Spec-Zone.ru

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