Spec-Zone.ru › GCC 5

3.17.43 SPARC Параметры

Эти параметры «-m» поддерживаются на SPARC:

-mno-app-regs
-mapp-regs

Укажите -mapp-regs для генерации вывода, используя глобальные регистры 2–4, которые резервируются для приложений спецификацией SPARC SVR4 ABI. Как и глобальный регистр 1, каждый глобальный регистр 2–4 затем обрабатывается как регистр, который может быть выделен и очищается вызовами функций. Это значение по умолчанию.

Для полного соответствия спецификации SPARC ABI с некоторыми потерями производительности укажите -mno-app-regs. Вы должны компилировать библиотеки и системное ПО с этим параметром.

-mflat
-mno-flat

При использовании -mflat, компилятор не генерирует инструкции сохранения/восстановления и использует модель «плоского» или однорегистрового окна. Эта модель совместима с обычной моделью регистрового окна. Локальные регистры и регистры входных данных (0–5) по-прежнему обрабатываются как «сохранённые при вызове» регистры и сохраняются в стеке по мере необходимости.

При использовании -mno-flat (по умолчанию) компилятор генерирует инструкции сохранения/восстановления (кроме функций-листьев). Это обычный режим работы.

-mfpu
-mhard-float

Генерировать вывод, содержащий инструкции с плавающей точкой. Это значение по умолчанию.

-mno-fpu
-msoft-float

Генерировать вывод, содержащий вызовы библиотек для операций с плавающей точкой. Предупреждение: необходимые библиотеки недоступны для всех целевых платформ SPARC. Обычно используются средства стандартного компилятора C машины, но это невозможно сделать напрямую при кросс-компиляции. Вам нужно самостоятельно обеспечить наличие подходящих функций библиотеки для кросс-компиляции. Встроенные цели «sparc-*-aout» и «sparclite-*-*» обеспечивают поддержку программной плавающей точки.

-msoft-float изменяет соглашение о вызовах в выходном файле; поэтому он полезен только в том случае, если вы компилируете весь проект с этим параметром. В частности, вам нужно скомпилировать libgcc.a, библиотеку, входящую в GCC, с -msoft-float, чтобы это работало.

-mhard-quad-float

Генерировать вывод, содержащий инструкции с плавающей точкой для четырёхбайтовых (long double) значений.

-msoft-quad-float

Генерировать вывод, содержащий вызовы библиотек для операций с плавающей точкой для четырёхбайтовых (long double) значений. Вызываемые функции указаны в SPARC ABI. Это значение по умолчанию.

На момент написания этой документации не существует реализаций SPARC, которые имеют аппаратную поддержку четырёхбайтовых инструкций с плавающей точкой. Все они вызывают обработчик исключений для одной из этих инструкций, а затем обработчик исключений эмулирует эффект инструкции. Из-за накладных расходов на обработчик исключений это значительно медленнее, чем вызов процедур библиотеки ABI. Таким образом, параметр -msoft-quad-float является значением по умолчанию.

-mno-unaligned-doubles
-munaligned-doubles

Предполагается, что переменные типа double имеют выравнивание 8 байт. Это значение по умолчанию.

При использовании -munaligned-doubles, GCC предполагает, что переменные типа double имеют выравнивание 8 байт только если они содержатся в другом типе или имеют абсолютный адрес. В противном случае предполагается выравнивание 4 байта. Указание этого параметра позволяет избежать некоторых редких проблем совместимости с кодом, сгенерированным другими компиляторами. Это не значение по умолчанию, поскольку это приводит к потерям производительности, особенно для кода с плавающей точкой.

-muser-mode
-mno-user-mode

Не генерировать код, который может выполняться только в режиме супервизора. Это актуально только для инструкции casa, выпущенной для процессора LEON3. Это значение по умолчанию.

-mno-faster-structs
-mfaster-structs

С параметром -mfaster-structs компилятор предполагает, что структуры должны иметь выравнивание 8 байт. Это позволяет использовать пары инструкций ldd и std для копирования при присваивании структур вместо удвоенного количества пар ld и st. Однако использование этого изменённого выравнивания напрямую нарушает соглашение SPARC ABI. Поэтому он предназначен только для использования на целевых платформах, где разработчик признаёт, что полученный код не соответствует правилам ABI.

-mcpu=cpu_type

Установить набор инструкций, набор регистров и параметры планирования инструкций для типа машины cpu_type. Поддерживаемые значения для cpu_type — «v7», «cypress», «v8», «supersparc», «hypersparc», «leon», «leon3», «leon3v7», «sparclite», «f930», «f934», «sparclite86x», «sparclet», «tsc701», «v9», «ultrasparc», «ultrasparc3», «niagara», «niagara2», «niagara3» и «niagara4».

Нативные Solaris и GNU/Linux инструменты также поддерживают значение «native», которое выбирает лучший вариант архитектуры для целевого процессора. -mcpu=native не оказывает никакого влияния, если GCC не распознаёт процессор.

Параметры планирования инструкций по умолчанию используются для значений, которые выбирают архитектуру, а не реализацию. Это «v7», «v8», «sparclite», «sparclet», «v9».

Вот список каждой поддерживаемой архитектуры и поддерживаемых реализаций.

v7

cypress, leon3v7

v8

supersparc, hypersparc, leon, leon3

sparclite

f930, f934, sparclite86x

sparclet

tsc701

v9

ultrasparc, ultrasparc3, niagara, niagara2, niagara3, niagara4

По умолчанию (если не настроено иначе), GCC генерирует код для варианта V7 архитектуры SPARC. С помощью -mcpu=cypress, компилятор дополнительно оптимизирует его для чипа Cypress CY7C602, используемого в серии SPARCStation/SPARCServer 3xx. Это также подходит для более старых SPARCStation 1, 2, IPX и т. д.

При использовании -mcpu=v8, GCC генерирует код для варианта V8 архитектуры SPARC. Единственное отличие от кода V7 заключается в том, что компилятор генерирует инструкции умножения и деления целых чисел, которые существуют в SPARC-V8, но отсутствуют в SPARC-V7. При использовании -mcpu=supersparc, компилятор дополнительно оптимизирует его для чипа SuperSPARC, используемого в сериях SPARCStation 10, 1000 и 2000.

При использовании -mcpu=sparclite, GCC генерирует код для варианта SPARClite архитектуры SPARC. Это добавляет инструкции умножения/деления целых чисел и сканирования (ffs), которые существуют в SPARClite, но отсутствуют в SPARC-V7. При использовании -mcpu=f930, компилятор дополнительно оптимизирует его для чипа Fujitsu MB86930, который является оригинальным SPARClite без FPU. При использовании -mcpu=f934, компилятор дополнительно оптимизирует его для чипа Fujitsu MB86934, который является более новой версией SPARClite с FPU.

При использовании -mcpu=sparclet, GCC генерирует код для варианта SPARClet архитектуры SPARC. Это добавляет инструкции умножения, умножения/суммирования, деления и сканирования целых чисел (ffs), которые существуют в SPARClet, но отсутствуют в SPARC-V7. При использовании -mcpu=tsc701, компилятор дополнительно оптимизирует его для чипа TEMIC SPARClet.

При использовании -mcpu=v9, GCC генерирует код для варианта V9 архитектуры SPARC. Это добавляет 64-битные инструкции перемещения целых и чисел с плавающей точкой, 3 дополнительных регистра условий плавающей точки и инструкции условного перемещения. При использовании -mcpu=ultrasparc, компилятор дополнительно оптимизирует его для чипов Sun UltraSPARC I/II/IIi. При использовании -mcpu=ultrasparc3, компилятор дополнительно оптимизирует его для чипов Sun UltraSPARC III/III+/IIIi/IIIi+/IV/IV+. При использовании -mcpu=niagara, компилятор дополнительно оптимизирует его для чипов Sun UltraSPARC T1. При использовании -mcpu=niagara2, компилятор дополнительно оптимизирует его для чипов Sun UltraSPARC T2. При использовании -mcpu=niagara3, компилятор дополнительно оптимизирует его для чипов Sun UltraSPARC T3. При использовании -mcpu=niagara4, компилятор дополнительно оптимизирует его для чипов Sun UltraSPARC T4.

-mtune=cpu_type

Установить параметры планирования инструкций для типа машины cpu_type, но не устанавливать набор инструкций или набор регистров, которые устанавливает параметр -mcpu=cpu_type.

Те же значения, что и для -mcpu=cpu_type, могут использоваться для -mtune=cpu_type, но полезными являются только те, которые выбирают конкретную реализацию процессора. Это «cypress», «supersparc», «hypersparc», «leon», «leon3», «leon3v7», «f930», «f934», «sparclite86x», «tsc701», «ultrasparc», «ultrasparc3», «niagara», «niagara2», «niagara3» и «niagara4». В нативных Solaris и GNU/Linux инструментах также можно использовать «native».

-mv8plus
-mno-v8plus

При использовании -mv8plus, GCC генерирует код для SPARC-V8+ ABI. Разница с V8 ABI заключается в том, что глобальные и выходные регистры считаются 64-разрядными. Это включено по умолчанию в Solaris в 32-битном режиме для всех процессоров SPARC-V9.

-mvis
-mno-vis

При использовании -mvis, GCC генерирует код, который использует расширения набора инструкций UltraSPARC Visual. По умолчанию используется -mno-vis.

-mvis2
-mno-vis2

При использовании -mvis2, GCC генерирует код, который использует расширения набора инструкций UltraSPARC Visual версии 2.0. По умолчанию используется -mvis2 при нацеливании на процессор, поддерживающий такие инструкции, как UltraSPARC-III и новее. Указание -mvis2 также устанавливает -mvis.

-mvis3
-mno-vis3

При использовании -mvis3, GCC генерирует код, который использует расширения набора инструкций UltraSPARC Visual версии 3.0. По умолчанию используется -mvis3 при нацеливании на процессор, поддерживающий такие инструкции, как niagara-3 и новее. Указание -mvis3 также устанавливает -mvis2 и -mvis.

-mcbcond
-mno-cbcond

При использовании -mcbcond, GCC генерирует код, который использует инструкции сравнения и перехода, как определено в архитектуре SPARC 2011. По умолчанию используется -mcbcond при нацеливании на процессор, поддерживающий такие инструкции, как niagara-4 и новее.

-mpopc
-mno-popc

При использовании -mpopc, GCC генерирует код, который использует инструкцию подсчёта бит UltraSPARC. По умолчанию используется -mpopc при нацеливании на процессор, поддерживающий такие инструкции, как Niagara-2 и новее.

-mfmaf
-mno-fmaf

С -mfmaf, GCC генерирует код, который использует преимущества расширений для операций с плавающей точкой слияния умножения-сложения UltraSPARC. По умолчанию используется -mfmaf, если целевой процессор поддерживает такие инструкции, например, Niagara-3 и более поздние версии.

-mfix-at697f

Включить документированное решение для единичного случая ошибки процессора Atmel AT697F (что соответствует ошибке #13 процессора AT697E).

-mfix-ut699

Включить документированные обходные пути для ошибок с плавающей точкой и ошибок аннулирования кэша данных процессора UT699.

Эти опции «-m» поддерживаются в дополнение к вышеперечисленным для SPARC-V9 процессоров в 64-битных средах:

-m32
-m64

Генерировать код для 32-битной или 64-битной среды. 32-битная среда устанавливает int, long и указатель на 32 бита. 64-битная среда устанавливает int на 32 бита, а long и указатель на 64 бита.

-mcmodel=which

Установить модель кода на одну из

‘medlow’

Модель кода Medium/Low: 64-битные адреса, программы должны быть связаны в нижних 32 битах памяти. Программы могут быть статически или динамически связаны.

‘medmid’

Модель кода Medium/Middle: 64-битные адреса, программы должны быть связаны в нижних 44 битах памяти, размеры сегментов текста и данных должны быть меньше 2 ГБ, и сегмент данных должен находиться в пределах 2 ГБ от сегмента текста.

‘medany’

Модель кода Medium/Anywhere: 64-битные адреса, программы могут быть связаны в любом месте памяти, размеры сегментов текста и данных должны быть меньше 2 ГБ, и сегмент данных должен находиться в пределах 2 ГБ от сегмента текста.

‘embmedany’

Модель кода Medium/Anywhere для систем встраиваемой электроники: 64-битные адреса, размеры сегментов текста и данных должны быть меньше 2 ГБ, оба начинаются в любом месте памяти (определяется во время компоновки). Глобальный регистр %g4 указывает на начало сегмента данных. Программы связаны статически, и PIC не поддерживается.

-mmemory-model=mem-model

Установить используемую модель памяти на процессоре на одну из

‘default’

Модель памяти по умолчанию для процессора и операционной системы.

‘rmo’

Отложенный порядок памяти

‘pso’

Частичный порядок записи в память

‘tso’

Полный порядок записи в память

‘sc’

Последовательная согласованность

Эти модели памяти формально определены в приложении D руководства по архитектуре Sparc V9, как задано в поле процессора PSTATE.MM.

-mstack-bias
-mno-stack-bias

С -mstack-bias, GCC предполагает, что указатель стека и указатель кадра (если присутствует), смещены на -2047, который необходимо добавить обратно при ссылках на фрейм стека. Это значение по умолчанию в 64-битном режиме. В противном случае предполагается, что такого смещения нет.

Далее: Опции SPU, Предыдущее: Опции Solaris 2, Вверх: Опции подмодели [Содержание][Индекс]

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

Spec-Zone.ru

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