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
-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.
Далее: Параметры AMD GCN, Предыдущее: Параметры AArch64, Вернуться: Параметры подмоделей [Оглавление][Индекс]
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-9.5.0/gcc/Adapteva-Epiphany-Options.html