Spec-Zone.ru › GCC 12

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

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

‘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

Установить имя библиотечной функции, используемой для 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, Предыдущее: Параметры Score, Вверх: Параметры подмодели [Оглавление][Индекс]

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

Spec-Zone.ru

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