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