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.
© 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