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