Spec-Zone.ru › GCC 11

Далее: Параметры для 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 необходимо передать, чтобы получить старый режим загрузки.

-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.

С параметром -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+.

-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 Architecture 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-11.4.0/gcc/SPARC-Options.html

Spec-Zone.ru

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