Spec-Zone.ru › GCC 8

3.18.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

-mnosplit-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.

Далее: Параметры ARC, Предыдущее: Параметры AArch64, Вверх: Параметры Подмодели [Оглавление][Индекс]

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

Spec-Zone.ru

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