Spec-Zone.ru › GCC 10

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

3.19.48 Параметры SH ¶

Эти параметры ‘-m’ определены для реализаций SH:

-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

Компилировать код для процессора в режиме big-endian.

-ml

Компилировать код для процессора в режиме little-endian.

-mdalign

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

-mrelax

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

-mbigtable

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

-mbitops

Включить использование инструкций по работе с битами на SH2A.

-mfmovd

Включить использование инструкции fmovd. См. -mdalign для ограничений выравнивания.

-mrenesas

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

-mno-renesas

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

-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

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

-musermode
-mno-usermode

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

-multcost=number

Установите стоимость для предполагаемого умножения insn.

-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

Установите имя библиотечной функции, используемой для 32-битного знакового деления, на name. Это влияет только на имя, используемое в стратегиях деления ‘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.

Далее: Solaris 2 Options, Предыдущий: Score Options, Вверх: Параметры, зависящие от модели машины [Содержание][Индекс]

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

Spec-Zone.ru

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