Spec-Zone.ru › GCC 10

Следующее: Параметры для System V, Предыдущее: Параметры Solaris 2, Выше: Параметры, зависящие от машины [Оглавление][Индекс]

3.19.50 Параметры 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
-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. Это значение по умолчанию.

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

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

‘pso’

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

‘tso’

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

‘sc’

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

Эти модели памяти формально определены в Приложении 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-10.5.0/gcc/SPARC-Options.html

Spec-Zone.ru

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