3.18.42 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-
Выравнивать числа с плавающей точкой двойной точности на границах 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 байтам, что несовместимо с ABI SH.
-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
-
Сгенерировать
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-6.5.0/gcc/SH-Options.html