Spec-Zone.ru › GCC 15

3.20.2 Параметры Adapteva Epiphany

Для Adapteva Epiphany определены следующие параметры «-m»:

-mhalf-reg-file

Не выделять регистры из диапазона r32…r63. Это позволяет запускать код на вариантах аппаратного обеспечения, в которых отсутствуют эти регистры.

-mprefer-short-insn-regs

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

-mbranch-cost=num

Задать стоимость переходов примерно равной num «простым» инструкциям. Эта стоимость является лишь эвристической и не гарантирует получения стабильных результатов в разных выпусках.

-mcmove

Включить генерацию условных перемещений.

-mnops=num

Выводить num инструкций NOP перед каждой второй генерируемой инструкцией.

-mno-soft-cmpsf

При сравнении чисел с плавающей точкой одинарной точности выводить инструкцию fsub и проверять флаги. Это быстрее программного сравнения, но может давать неверные результаты при наличии NaN или при сравнении двух разных малых чисел, разность которых вычисляется как ноль. По умолчанию используется -msoft-cmpsf, который выполняет более медленные, но соответствующие стандарту IEEE программные сравнения.

-mstack-offset=num

Задать смещение между вершиной стека и указателем стека. Например, значение 8 означает, что восемь байтов в диапазоне sp+0…sp+7 могут использоваться листовыми функциями без выделения места в стеке. Значения, отличные от «8» или «16», не проверялись и, скорее всего, работать не будут. Обратите также внимание, что этот параметр изменяет ABI; компиляция программы со смещением стека, отличным от использованного при компиляции библиотек, обычно не работает. Этот параметр может быть полезен, если вы хотите оценить, позволит ли другое смещение стека получить более качественный код. Однако для сборки работоспособных программ с другим смещением стека рекомендуется настроить цепочку инструментов с соответствующим параметром --with-stack-offset=num.

-mno-round-nearest

Предположить при планировании, что режим округления установлен на усечение. По умолчанию используется -mround-nearest.

-mlong-calls

Если иное не задано атрибутом, предполагать, что все вызовы могут выходить за пределы диапазона смещений инструкций b / bl, и поэтому перед выполнением (в остальном прямого) вызова загружать адрес функции в регистр. Это поведение используется по умолчанию.

-mshort-calls

Если иное не задано атрибутом, предполагать, что все прямые вызовы находятся в диапазоне инструкций b / bl, и использовать эти инструкции для прямых вызовов. По умолчанию используется -mlong-calls.

-msmall16

Предполагать, что адреса можно загружать как 16-разрядные беззнаковые значения. Это не относится к адресам функций, для которых действуют семантики -mlong-calls.

-mfp-mode=mode

Задать преобладающий режим модуля операций с плавающей точкой. Он определяет режим операций с плавающей точкой, который предоставляется и ожидается при вызове и возврате из функции. Если этот режим совпадает с режимом, который чаще всего требуется в начале функции, программы могут стать меньше и работать быстрее за счёт исключения ненужных переключений режимов.

Для mode можно задать одно из следующих значений:

«caller»

При входе в функцию допустим любой режим; он сохраняется или восстанавливается при возврате из функции и при вызове других функций. Этот режим полезен при компиляции библиотек и других единиц трансляции, которые могут включаться в разные программы с различными преобладающими режимами FPU. Возможность использовать один объектный файл может быть важнее дополнительных затрат на размер и быстродействие из-за переключения режимов, которое может потребоваться по сравнению с более конкретным выбором преобладающего режима FPU.

«truncate»

Этот режим используется для вычислений с плавающей точкой с округлением усечением (то есть к нулю). Сюда также относится преобразование чисел с плавающей точкой в целые числа.

«round-nearest»

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

«int»

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

По умолчанию используется -mfp-mode=caller

-mno-split-lohi
-mno-postinc
-mno-postmodify

Параметры генерации кода, отключающие соответственно разделение 32-разрядных загрузок, генерацию адресов с постинкрементом и генерацию адресов с постмодификацией. По умолчанию используются msplit-lohi, -mpost-inc и -mpost-modify.

-mnovect-double

Изменить предпочтительный режим SIMD на SImode. По умолчанию используется -mvect-double, задающий DImode в качестве предпочтительного режима SIMD.

-max-vect-align=num

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

-msplit-vecmove-early

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

-m1reg-reg

Указать регистр для хранения константы −1, что ускоряет загрузку небольших отрицательных констант и некоторых битовых масок. Допустимые значения для reg — «r43» и «r63», указывающие на использование соответствующего регистра в качестве фиксированного, а также «none», означающее, что для этой цели не используется ни один регистр. По умолчанию используется -m1reg-none.

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

Spec-Zone.ru

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