Spec-Zone.ru › GCC 7

3.18.46 Параметры 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-7.5.0/gcc/SPU-Options.html

Spec-Zone.ru

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