Spec-Zone.ru › GCC 5

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API