3.19.45 Параметры 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.bopcode для__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.
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-14.2.0/gcc/SH-Options.html