Spec-Zone.ru › GCC 12

3.19.51 Параметры SPARC

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

-mno-app-regs
-mapp-regs

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

Для полной совместимости с ABI SVR4 за счёт некоторой потери производительности укажите -mno-app-regs. Вы должны компилировать библиотеки и системное программное обеспечение с этим параметром.

-mflat
-mno-flat

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

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

-mfpu
-msoft-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. Это значение по умолчанию.

-mfaster-structs
-mno-faster-structs

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

-mstd-struct-return
-mno-std-struct-return

С -mstd-struct-return компилятор генерирует код проверки в функциях, возвращающих структуры или объединения, чтобы обнаружить несоответствие размеров между двумя сторонами вызовов функций, согласно ABI 32-бит.

Значение по умолчанию — -mno-std-struct-return. Этот параметр не влияет в 64-битном режиме.

-mlra
-mno-lra

Включить локальное выделение регистров. По умолчанию для SPARC начиная с GCC 7, поэтому -mno-lra необходимо передать, чтобы получить старый Reload.

-mcpu=cpu_type

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

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

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

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

v7

cypress, leon3v7

v8

supersparc, hypersparc, leon, leon3, leon5

sparclite

f930, f934, sparclite86x

sparclet

tsc701

v9

ultrasparc, ultrasparc3, niagara, niagara2, niagara3, niagara4, niagara7, m8

По умолчанию (если не настроено иначе), 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. С -mcpu=niagara7 компилятор дополнительно оптимизирует его для чипов Oracle SPARC M7. С -mcpu=m8 компилятор дополнительно оптимизирует его для чипов Oracle M8.

-mtune=cpu_type

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

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

-mv8plus
-mno-v8plus

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

-mvis
-mno-vis

С -mvis GCC генерирует код, использующий расширения набора инструкций UltraSPARC Visual Instruction Set. Значение по умолчанию — -mno-vis.

-mvis2
-mno-vis2

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

-mvis3
-mno-vis3

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

-mvis4
-mno-vis4

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

-mvis4b
-mno-vis4b

С -mvis4b, GCC генерирует код, использующий расширения набора инструкций UltraSPARC Visual Instruction Set версии 4.0, плюс дополнительные инструкции VIS, представленные в архитектуре Oracle SPARC 2017. По умолчанию -mvis4b используется при нацеливании на процессор, поддерживающий такие инструкции, такие как m8 и более поздние версии. Установка -mvis4b также устанавливает -mvis4, -mvis3, -mvis2 и -mvis.

-mcbcond
-mno-cbcond

С -mcbcond, GCC генерирует код, использующий инструкции UltraSPARC Compare-and-Branch-on-Condition. По умолчанию -mcbcond используется при нацеливании на процессор, поддерживающий такие инструкции, такие как Niagara-4 и более поздние версии.

-mfmaf
-mno-fmaf

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

-mfsmuld
-mno-fsmuld

С -mfsmuld, GCC генерирует код, использующий инструкцию Floating-point Multiply Single to Double (FsMULd). По умолчанию -mfsmuld используется при нацеливании на процессор, поддерживающий архитектуры V8 или V9 с FPU, за исключением -mcpu=leon.

-mpopc
-mno-popc

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

-msubxc
-mno-subxc

С -msubxc, GCC генерирует код, использующий инструкцию UltraSPARC Subtract-Extended-with-Carry. По умолчанию -msubxc используется при нацеливании на процессор, поддерживающий такую инструкцию, такие как Niagara-7 и более поздние версии.

-mfix-at697f

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

-mfix-ut699

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

-mfix-ut700

Включить документированное решение для ошибки последовательных операций записи процессора UT699E/UT700.

-mfix-gr712rc

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

Эти параметры ‘-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’

Relaxed Memory Order (Расслабленный порядок памяти)

‘pso’

Partial Store Order (Частичный порядок записи)

‘tso’

Total Store Order (Полный порядок записи)

‘sc’

Sequential Consistency (Последовательная согласованность)

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

-mstack-bias
-mno-stack-bias

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

Далее: Параметры System V, Предыдущее: Параметры Solaris 2, Вверх: Параметры подмоделей [Оглавление][Индекс]

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

Spec-Zone.ru

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