Spec-Zone.ru › GCC 14

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

Эти параметры ‘-m’ определены для Adapteva Epiphany:

-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-13.3.0/gcc/Adapteva-Epiphany-Options.html

Spec-Zone.ru

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