Spec-Zone.ru › GCC 15

3.20.45 Параметры SH

Для реализаций SH определены следующие параметры «-m»:

-m1

Генерировать код для SH1.

-m2

Генерировать код для SH2.

-m2e

Генерировать код для SH2e.

-m2a-nofpu

Генерировать код для SH2a без FPU или для SH2a-FPU так, чтобы блок операций с плавающей точкой не использовался.

-m2a-single-only

Генерировать код для SH2a-FPU так, чтобы операции с плавающей точкой двойной точности не использовались.

-m2a-single

Генерировать код для SH2a-FPU, предполагая, что блок операций с плавающей точкой по умолчанию работает в режиме одинарной точности.

-m2a

Генерировать код для SH2a-FPU, предполагая, что блок операций с плавающей точкой по умолчанию работает в режиме двойной точности.

-m3

Генерировать код для SH3.

-m3e

Генерировать код для SH3e.

-m4-nofpu

Генерировать код для SH4 без блока операций с плавающей точкой.

-m4-single-only

Генерировать код для SH4 с блоком операций с плавающей точкой, поддерживающим только арифметику одинарной точности.

-m4-single

Генерировать код для SH4, предполагая, что блок операций с плавающей точкой по умолчанию работает в режиме одинарной точности.

-m4

Генерировать код для SH4.

-m4-100

Генерировать код для SH4-100.

-m4-100-nofpu

Генерировать код для SH4-100 так, чтобы блок операций с плавающей точкой не использовался.

-m4-100-single

Генерировать код для SH4-100, предполагая, что блок операций с плавающей точкой по умолчанию работает в режиме одинарной точности.

-m4-100-single-only

Генерировать код для SH4-100 так, чтобы операции с плавающей точкой двойной точности не использовались.

-m4-200

Генерировать код для SH4-200.

-m4-200-nofpu

Генерировать код для SH4-200 так, чтобы блок операций с плавающей точкой не использовался.

-m4-200-single

Генерировать код для SH4-200, предполагая, что блок операций с плавающей точкой по умолчанию работает в режиме одинарной точности.

-m4-200-single-only

Генерировать код для SH4-200 так, чтобы операции с плавающей точкой двойной точности не использовались.

-m4-300

Генерировать код для SH4-300.

-m4-300-nofpu

Генерировать код для SH4-300 так, чтобы блок операций с плавающей точкой не использовался.

-m4-300-single

Генерировать код для SH4-300 так, чтобы операции с плавающей точкой двойной точности не использовались.

-m4-300-single-only

Генерировать код для SH4-300 так, чтобы операции с плавающей точкой двойной точности не использовались.

-m4-340

Генерировать код для SH4-340 (без MMU и FPU).

-m4-500

Генерировать код для SH4-500 (без FPU). Передавать ассемблеру параметр -isa=sh4-nofpu.

-m4a-nofpu

Генерировать код для SH4al-dsp или для SH4a так, чтобы блок операций с плавающей точкой не использовался.

-m4a-single-only

Генерировать код для SH4a так, чтобы операции с плавающей точкой двойной точности не использовались.

-m4a-single

Генерировать код для SH4a, предполагая, что блок операций с плавающей точкой по умолчанию работает в режиме одинарной точности.

-m4a

Генерировать код для SH4a.

-m4al

То же, что и -m4a-nofpu, но дополнительно неявно передаёт ассемблеру параметр -dsp. В настоящее время GCC не генерирует инструкции DSP.

-mb

Компилировать код для процессора в режиме прямого порядка байтов.

-ml

Компилировать код для процессора в режиме обратного порядка байтов.

-mdalign

Выравнивать значения double по 64-битным границам. Обратите внимание, что это изменяет соглашения о вызовах, поэтому некоторые функции стандартной библиотеки C не будут работать, пока вы предварительно не перекомпилируете её с параметром -mdalign.

-mrelax

По возможности сокращать некоторые ссылки на адреса на этапе компоновки; для этого используется параметр компоновщика -relax.

-mbigtable

Использовать 32-битные смещения в таблицах switch. По умолчанию используются 16-битные смещения.

-mbitops

Разрешить использование инструкций манипуляции битами на SH2A.

-mfmovd

Разрешить использование инструкции fmovd. Ограничения на выравнивание см. в описании -mdalign.

-mrenesas

Соблюдать соглашения о вызовах, определённые Renesas.

-mno-renesas

Соблюдать соглашения о вызовах, определённые для GCC до появления соглашений Renesas. Этот параметр используется по умолчанию для всех целевых платформ инструментальной цепочки SH.

-mnomacsave

Пометить регистр MAC как затираемый при вызове, даже если указан -mrenesas.

-mieee
-mno-ieee

Управлять соответствием IEEE для сравнений чисел с плавающей точкой, которое влияет на обработку случаев, когда результат сравнения неупорядочен. По умолчанию -mieee включается неявно. Если включён -ffinite-math-only, неявно задаётся -mno-ieee, что ускоряет сравнения чисел с плавающей точкой «больше или равно» и «меньше или равно». Эти неявные настройки можно переопределить, указав -mieee или -mno-ieee.

-minline-ic_invalidate

Встраивать код для инвалидации записей кэша инструкций после настройки трамплинов вложенных функций. Этот параметр не действует, если задан -musermode, а выбранный параметр генерации кода (например, -m4) не допускает использования инструкции icbi. Если выбранный параметр генерации кода не допускает использования инструкции icbi и не задан -musermode, встроенный код напрямую изменяет массив адресов кэша инструкций с помощью ассоциативной записи. Для этого требуется привилегированный режим во время выполнения, кроме того, операция завершается с ошибкой, если строка кэша была отображена через TLB, а затем отображение было удалено.

-misize

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

-mpadstruct

Этот параметр устарел. Он дополняет структуры до размера, кратного 4 байтам, что несовместимо с ABI SH.

-matomic-model=model

Задаёт модель атомарных операций и дополнительные параметры в виде списка, разделённого запятыми. Сведения о встроенных атомарных функциях см. в разделе Встроенные функции для атомарных операций с учётом модели памяти. Поддерживаются следующие модели и параметры:

«none»

Отключить генерируемые компилятором атомарные последовательности и использовать вызовы библиотечных функций для атомарных операций. Это значение используется по умолчанию, если целевая платформа не является sh*-*-linux*.

«soft-gusa»

Генерировать совместимые с GNU/Linux программные атомарные последовательности gUSA для встроенных атомарных функций. Для сгенерированных атомарных последовательностей требуется дополнительная поддержка в коде обработки прерываний/исключений системы; они подходят только для одноядерных систем SH3* и SH4*. Этот параметр включён по умолчанию, если целевая платформа — sh*-*-linux* и SH3* или SH4*. Для целевой платформы SH4A этот параметр также частично использует аппаратные атомарные инструкции movli.l и movco.l для генерации более эффективного кода, если не указан параметр «strict».

«soft-tcb»

Генерировать программные атомарные последовательности, использующие переменную в блоке управления потоком. Это вариант последовательностей gUSA, который также можно использовать на целевых платформах SH1* и SH2*. Для сгенерированных атомарных последовательностей требуется дополнительная поддержка в коде обработки прерываний/исключений системы; они подходят только для одноядерных систем. При использовании этой модели необходимо также указать параметр «gbr-offset=».

«soft-imask»

Генерировать программные атомарные последовательности, временно отключающие прерывания путём установки SR.IMASK = 1111. Эта модель работает только при выполнении программы в привилегированном режиме и подходит только для одноядерных систем. Дополнительная поддержка в коде обработки прерываний/исключений системы не требуется. Эта модель включена по умолчанию, если целевая платформа — sh*-*-linux* и SH1* или SH2*.

«hard-llcs»

Генерировать аппаратные атомарные последовательности, используя только инструкции movli.l и movco.l. Доступно только на SH4A и подходит для многоядерных систем. Поскольку аппаратные инструкции поддерживают доступ к атомарным переменным только размером 32 бита, доступ к переменным размером 8 или 16 бит эмулируется с помощью 32-битных операций. Код, скомпилированный с этим параметром, также совместим с системами обработки прерываний/исключений, использующими другие программные модели атомарных операций, если он выполняется на системе SH4A. Для этой модели дополнительная поддержка в коде обработки прерываний/исключений системы не требуется.

«gbr-offset=»

Этот параметр задаёт смещение в байтах переменной в структуре блока управления потоком, которая должна использоваться сгенерированными атомарными последовательностями при выборе модели «soft-tcb». Для других моделей этот параметр игнорируется. Указанное значение должно быть целым числом, кратным четырём, в диапазоне 0–1020.

«strict»

Этот параметр запрещает совместное использование нескольких моделей атомарных операций, даже если они совместимы, и заставляет компилятор генерировать атомарные последовательности только указанной модели.

-mtas

Генерировать код операции tas.b для __atomic_test_and_set. Обратите внимание, что в зависимости от конкретной конфигурации аппаратного и программного обеспечения это может снизить общую производительность из-за сброса строк кэша операндов, который подразумевается инструкцией tas.b. На многоядерных процессорах SH4A инструкцию tas.b следует использовать с осторожностью, поскольку при некоторых конфигурациях кэша она может привести к повреждению данных.

-mprefergot

При генерации позиционно-независимого кода выполнять вызовы функций через таблицу глобальных смещений, а не через таблицу связывания процедур.

-musermode
-mno-usermode

Запретить (разрешить) компилятору генерировать код привилегированного режима. Указание -musermode также подразумевает -mno-inline-ic_invalidate, если встроенный код не будет работать в пользовательском режиме. Параметр -musermode используется по умолчанию, если целевая платформа — sh*-*-linux*. Для целевых платформ SH1* или SH2* параметр -musermode не действует, поскольку пользовательского режима нет.

-multcost=number

Задать предполагаемую стоимость инструкции умножения.

-mdiv=strategy

Задать стратегию деления для операций целочисленного деления. strategy может принимать одно из следующих значений:

«call-div1»

Вызывать библиотечную функцию, которая выполняет операцию с помощью инструкции деления с одним шагом div1. При делении на ноль вычисляется неопределённый результат, исключение не возникает. Это значение используется по умолчанию, кроме случаев SH4, SH2A и SHcompact.

«call-fp»

Вызывать библиотечную функцию, которая выполняет операцию с плавающей точкой двойной точности. При делении на ноль возникает исключение с плавающей точкой. Это значение используется по умолчанию для SHcompact с FPU. Если задать его для целевых платформ без FPU двойной точности, по умолчанию будет использоваться call-div1.

«call-table»

Вызывать библиотечную функцию, которая использует таблицу поиска для малых делителей и инструкцию div1 с выбором варианта для больших делителей. При делении на ноль вычисляется неопределённый результат, исключение не возникает. Это значение используется по умолчанию для SH4. Если задать его для целевых платформ без инструкций динамического сдвига, по умолчанию будет использоваться call-div1.

Если стратегия деления не указана, выбирается стратегия по умолчанию для текущей целевой платформы. Для SH2A по умолчанию используются инструкции divs и divu вместо вызовов библиотечных функций.

-maccumulate-outgoing-args

Резервировать место для выходных аргументов один раз в прологе функции, а не перед каждым вызовом. Обычно это повышает производительность и уменьшает размер кода. Также это необходимо для раскрутки стека, чтобы избежать изменения кадра стека в условном коде.

-mdivsi3_libfunc=name

Задать name в качестве имени библиотечной функции для деления знаковых 32-битных чисел. Это влияет только на имя, используемое в стратегиях деления «call»; компилятор по-прежнему ожидает те же наборы входных, выходных и затираемых регистров, что и без этого параметра.

-mfixed-range=register-range

Генерировать код, рассматривая указанный диапазон регистров как фиксированные регистры. Фиксированный регистр — это регистр, который не может использоваться распределителем регистров. Это полезно при компиляции кода ядра. Диапазон регистров задаётся двумя регистрами, разделёнными дефисом. Можно указать несколько диапазонов регистров, разделив их запятыми.

-mbranch-cost=num

Считать, что стоимость инструкции перехода равна num. Чем выше значение, тем больше компилятор старается по возможности генерировать код без переходов. Если значение не указано, оно выбирается в зависимости от типа процессора, для которого выполняется компиляция.

-mzdcbranch
-mno-zdcbranch

Считать (не считать), что условные инструкции перехода с нулевым смещением bt и bf являются быстрыми. Если указан -mzdcbranch, компилятор отдаёт предпочтение последовательностям кода с переходами с нулевым смещением. Этот параметр включён по умолчанию при генерации кода для SH4 и SH4A. Его можно явно отключить, указав -mno-zdcbranch.

-mcbranch-force-delay-slot

Принудительно использовать слоты задержки для условных переходов, заполняя слот задержки инструкцией nop, если не удаётся найти подходящую инструкцию. По умолчанию этот параметр отключён. Его можно включить для обхода аппаратных ошибок, подобных обнаруженным в исходной версии SH7055.

-mfused-madd
-mno-fused-madd

Генерировать код, использующий (не использующий) инструкции умножения и накопления с плавающей точкой. Эти инструкции генерируются по умолчанию при использовании аппаратной поддержки операций с плавающей точкой. Аппаратно-зависимый параметр -mfused-madd теперь преобразуется в независимый от платформы параметр -ffp-contract=fast, а -mno-fused-madd — в -ffp-contract=off.

-mfsca
-mno-fsca

Разрешить или запретить компилятору генерировать инструкцию fsca для аппроксимации синуса и косинуса. Параметр -mfsca необходимо использовать вместе с -funsafe-math-optimizations. Он включён по умолчанию при генерации кода для SH4A. Использование -mno-fsca отключает аппроксимацию синуса и косинуса, даже если задан -funsafe-math-optimizations.

-mfsrra
-mno-fsrra

Разрешить или запретить компилятору генерировать инструкцию fsrra для аппроксимации обратного квадратного корня. Параметр -mfsrra необходимо использовать вместе с -funsafe-math-optimizations и -ffinite-math-only. Он включён по умолчанию при генерации кода для SH4A. Использование -mno-fsrra отключает аппроксимацию обратного квадратного корня, даже если заданы -funsafe-math-optimizations и -ffinite-math-only.

-mpretend-cmove

Отдавать предпочтение условным переходам с нулевым смещением для шаблонов инструкций условного перемещения. Это может ускорить код на процессоре SH4.

-mfdpic

Генерировать код с использованием ABI FDPIC.

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

Spec-Zone.ru

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