Spec-Zone.ru › GCC 6

3.18.44 Параметры 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

Предполагается, что числа с двойной точностью имеют выравнивание 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-битном режиме.

-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’ и ‘niagara7’.

В родных средах 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, niagara7

По умолчанию (если не настроено иначе) 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.

-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’ и ‘niagara7’. В родных средах 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
END_OF_DOCUMENT_MARKER

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

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

Spec-Zone.ru

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