3.17.44 Параметры 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 вставляет nops, чтобы увеличить двойную обработку, когда ожидает, что это увеличит производительность. n может принимать значения от 0 до 10. Меньшее значение n вставляет меньше nops. 10 — по умолчанию, 0 то же самое, что -mno-dual-nops. Отключено с -Os.
-mhint-max-nops=n-
Максимальное количество nops для вставки для прогноза ветвления. Прогноз ветвления должен находиться как минимум в 8 инструкциях от ветвления, на которое он влияет. GCC вставляет до n nops для обеспечения этого, в противном случае не генерирует прогноз ветвления.
-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-5.5.0/gcc/SPU-Options.html