Spec-Zone.ru › GCC 9

3.18.61 Параметры 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 ассемблерный код по-прежнему показывает прямые инструкции вызова — посмотрите на разобранный объектный код, чтобы увидеть фактические инструкции. Обратите внимание, что ассемблер использует косвенный вызов для каждого межфайлового вызова, а не только для тех, которые действительно находятся вне диапазона.

Далее: Параметры zSeries, Предыдущий: Параметры Xstormy16, Вверх: Параметры подмоделей [Содержание][Индекс]

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

Spec-Zone.ru

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