Spec-Zone.ru › GCC 13

3.19.47 SPARC Параметры

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

-mno-app-regs
-mapp-regs

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

Чтобы полностью соответствовать спецификации SVR4 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

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

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

-muser-mode
-mno-user-mode

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

-mfaster-structs
-mno-faster-structs

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

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

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

Значение по умолчанию — -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 генерирует код для ABI SPARC-V8+. Разница с ABI V8 заключается в том, что глобальные и выходные регистры считаются 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.

-mvis4
-mno-vis4

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

-mvis4b
-mno-vis4b

С -mvis4b, GCC генерирует код, который использует расширения набора инструкций UltraSPARC Visual версии 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’

Расслабленный порядок памяти

‘pso’

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

‘tso’

Полный порядок записи

‘sc’

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

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

-mstack-bias
-mno-stack-bias

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

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

Spec-Zone.ru

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