3.18.45 Параметры SPU
Эти параметры ‘-m’ поддерживаются в SPU:
-mwarn-reloc-merror-reloc-
Загрузчик SPU не обрабатывает динамические переадресации. По умолчанию GCC выдаёт ошибку, когда генерируется код, требующий динамической переадресации. -mno-error-reloc отключает ошибку, -mwarn-reloc генерирует предупреждение вместо неё.
-msafe-dma-munsafe-dma-
Инструкции, которые инициируют или проверяют завершение DMA, не должны переупорядочиваться относительно загрузки и сохранения памяти, к которой осуществляется доступ. С -munsafe-dma необходимо использовать ключевое слово
volatile, чтобы защитить обращения к памяти, но это может привести к неэффективному коду в местах, где известно, что память не меняется. Вместо того, чтобы помечать память как volatile, можно использовать -msafe-dma, чтобы сообщить компилятору, что инструкции DMA могут влиять на всю память. -mbranch-hints-
По умолчанию GCC генерирует инструкцию прогнозирования ветвления, чтобы избежать остановок конвейера для ветвлений, которые всегда выполняются или, вероятно, выполняются. Прогноз не генерируется ближе, чем на 8 инструкций от ветвления. Нет особых причин для их отключения, за исключением отладки или для уменьшения размера объекта.
-msmall-mem-mlarge-mem-
По умолчанию GCC генерирует код, предполагая, что адреса никогда не превышают 18 бит. С -mlarge-mem генерируется код, предполагающий полный 32-битный адрес.
-mstdmain-
По умолчанию GCC подключается к коду инициализации, который предполагает интерфейс функции main в стиле SPU (с нестандартным списком параметров). С -mstdmain GCC подключает вашу программу к коду инициализации, который предполагает интерфейс в стиле C99 для
main, включая локальную копиюargvстрок. -mfixed-range=register-range-
Генерировать код, обрабатывающий указанный диапазон регистров как фиксированные регистры. Фиксированный регистр — это регистр, который не может быть использован регистровым аллокатором. Это полезно при компиляции ядра. Диапазон регистров задаётся как два регистра, разделённых дефисом. Несколько диапазонов регистров могут быть заданы, разделённые запятой.
-mea32-mea64-
Компилировать код, предполагая, что указатели на адресное пространство PPU, доступ к которому осуществляется через
__eaименованный квалификатор адресного пространства, имеют ширину 32 или 64 бита. По умолчанию — 32 бита. Поскольку это изменяющий ABI параметр, весь объектный код в исполняемом файле должен быть скомпилирован с одинаковым значением. -maddress-space-conversion-mno-address-space-conversion-
Разрешить/запретить обработку адресного пространства
__eaкак супермножества общего адресного пространства. Это позволяет явные преобразования типов между__eaи общим указателем, а также неявные преобразования общих указателей в__eaуказатели. По умолчанию разрешены преобразования указателей адресного пространства. -mcache-size=cache-size-
Этот параметр управляет версией libgcc, к которой компилятор подключается к исполняемому файлу, и выбирает кэш программного управления для доступа к переменным в адресном пространстве
__eaс определённым размером кэша. Возможные значения для cache-size — ‘8’, ‘16’, ‘32’, ‘64’ и ‘128’. По умолчанию размер кэша составляет 64 КБ. -matomic-updates-mno-atomic-updates-
Этот параметр управляет версией libgcc, к которой компилятор подключается к исполняемому файлу, и выбирает, использовать ли атомарные обновления программного кэша переменных со стороны PPU. Если вы используете атомарные обновления, изменения переменной PPU из кода SPU, использующего
__eaименованный квалификатор адресного пространства, не мешают изменениям других переменных PPU, находящихся в той же строке кэша, из кода PPU. Если вы не используете атомарные обновления, такое вмешательство может произойти, однако, запись в строки кэша более эффективна. По умолчанию используются атомарные обновления. -mdual-nops-mdual-nops=n-
По умолчанию GCC вставляет NOP-инструкции для увеличения двойной выдачи, когда ожидает, что это увеличит производительность. n может принимать значения от 0 до 10. Меньшее n вставляет меньше NOP-инструкций. 10 — значение по умолчанию, 0 — то же самое, что -mno-dual-nops. Отключено с -Os.
-mhint-max-nops=n-
Максимальное количество NOP-инструкций, которые нужно вставить для прогнозирования ветвления. Прогноз ветвления должен быть как минимум на 8 инструкциях дальше от ветвления, которое он затрагивает. GCC вставляет до n NOP-инструкций, чтобы обеспечить это, в противном случае не генерирует прогноз ветвления.
-mhint-max-distance=n-
Кодировка инструкции прогнозирования ветвления ограничивает прогноз 256 инструкциями от ветвления, которое он затрагивает. По умолчанию GCC гарантирует, что это не более 125.
-msafe-hints-
Обход аппаратной ошибки, из-за которой SPU останавливается на неопределённое время. По умолчанию GCC вставляет инструкцию
hbrp, чтобы убедиться, что эта остановка не произойдёт.
Далее: Параметры System V, Предыдущее: Параметры SPARC, Вернуться к: Параметры подмодели [Оглавление][Указатель]
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-6.5.0/gcc/SPU-Options.html