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