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