Spec-Zone.ru › GCC 8

3.18.44 SH Options

These ‘-m’ options are defined for the SH implementations:

-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-инструментария.

-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 байтам, что несовместимо с SH ABI.

-matomic-model=model

Устанавливает модель атомных операций и дополнительные параметры как список, разделённый запятыми. Подробности об атомных встроенных функциях см. в __atomic Builtins. Поддерживаются следующие модели и параметры:

‘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

Сгенерировать opcode 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

Установить имя функции библиотеки, используемой для 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

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

Следующая: Опции Solaris 2, Предыдущая: Опции Score, Вверх: Опции подмодели [Оглавление][Индекс]

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

Spec-Zone.ru

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