Spec-Zone.ru › GCC 7

6.31.23 Атрибуты функций PowerPC

Эти атрибуты функций поддерживаются бэкендом PowerPC:

longcall
shortcall

Атрибут longcall указывает, что функция может находиться далеко от места вызова и потребовать другой (более дорогой) последовательности вызова. Атрибут shortcall указывает, что функция всегда достаточно близка для использования более короткой последовательности вызова. Эти атрибуты переопределяют как переключатель -mlongcall, так и значение #pragma longcall.

См. RS/6000 и параметры PowerPC для получения дополнительной информации о необходимости длинных вызовов.

target (options)

Как обсуждалось в Общие атрибуты функций, этот атрибут позволяет указать опции компиляции, специфичные для целевой платформы.

На PowerPC разрешены следующие опции:

‘altivec’
‘no-altivec’

Генерировать код, использующий (не использующий) инструкции AltiVec. В 32-разрядном коде вы не можете включить инструкции AltiVec, если не используете -mabi=altivec в командной строке.

‘cmpb’
‘no-cmpb’

Генерировать код, использующий (не использующий) инструкцию сравнения байтов, реализованную на процессоре POWER6 и других процессорах, поддерживающих архитектуру PowerPC V2.05.

‘dlmzb’
‘no-dlmzb’

Генерировать код, использующий (не использующий) инструкцию поиска строк ‘dlmzb’ на процессорах IBM 405, 440, 464 и 476. Эта инструкция генерируется по умолчанию при нацеливании на эти процессоры.

‘fprnd’
‘no-fprnd’

Генерировать код, использующий (не использующий) инструкции FP округления к целому, реализованные на процессоре POWER5+ и других процессорах, поддерживающих архитектуру PowerPC V2.03.

‘hard-dfp’
‘no-hard-dfp’

Генерировать код, использующий (не использующий) инструкции десятичной плавающей точки, реализованные на некоторых процессорах POWER.

‘isel’
‘no-isel’

Генерировать код, использующий (не использующий) инструкцию ISEL.

‘mfcrf’
‘no-mfcrf’

Генерировать код, использующий (не использующий) инструкцию перемещения из регистра условий в поле, реализованную на процессоре POWER4 и других процессорах, поддерживающих архитектуру PowerPC V2.01.

‘mfpgpr’
‘no-mfpgpr’

Генерировать код, использующий (не использующий) инструкции FP перемещения в/из регистры общего назначения, реализованные на процессоре POWER6X и других процессорах, поддерживающих расширенную архитектуру PowerPC V2.05.

‘mulhw’
‘no-mulhw’

Генерировать код, использующий (не использующий) инструкции умножения на половину слова и умножения-складывания на процессорах IBM 405, 440, 464 и 476. Эти инструкции генерируются по умолчанию при нацеливании на эти процессоры.

‘multiple’
‘no-multiple’

Генерировать код, использующий (не использующий) инструкции загрузки и сохранения нескольких слов.

‘update’
‘no-update’

Генерировать код, использующий (не использующий) инструкции загрузки или сохранения, которые обновляют базовый регистр до адреса рассчитанного расположения памяти.

‘popcntb’
‘no-popcntb’

Генерировать код, использующий (не использующий) инструкцию подсчета единиц и двойной точности оценки обратной величины FP, реализованную на процессоре POWER5 и других процессорах, поддерживающих архитектуру PowerPC V2.02.

‘popcntd’
‘no-popcntd’

Генерировать код, использующий (не использующий) инструкцию подсчета единиц, реализованную на процессоре POWER7 и других процессорах, поддерживающих архитектуру PowerPC V2.06.

‘powerpc-gfxopt’
‘no-powerpc-gfxopt’

Генерировать код, использующий (не использующий) необязательные инструкции архитектуры PowerPC в группе Graphics, включая выбор плавающей точки.

‘powerpc-gpopt’
‘no-powerpc-gpopt’

Генерировать код, использующий (не использующий) необязательные инструкции архитектуры PowerPC в группе General Purpose, включая квадратный корень плавающей точки.

‘recip-precision’
‘no-recip-precision’

Предполагать (не предполагать), что инструкции оценки обратной величины обеспечивают оценки более высокой точности, чем требуется PowerPC ABI.

‘string’
‘no-string’

Генерировать код, использующий (не использующий) инструкции загрузки строки и инструкции сохранения строки для сохранения нескольких регистров и выполнения небольших блочных перемещений.

‘vsx’
‘no-vsx’

Генерировать код, использующий (не использующий) инструкции вектор/скаляр (VSX), а также включить использование встроенных функций, которые позволяют более прямой доступ к набору инструкций VSX. В 32-разрядном коде вы не можете включить инструкции VSX или AltiVec, если не используете -mabi=altivec в командной строке.

‘friz’
‘no-friz’

Генерировать (не генерировать) инструкцию friz, когда опция -funsafe-math-optimizations используется для оптимизации округления значения с плавающей точкой до 64-битного целого и обратно в плавающую точку. Инструкция friz не возвращает то же значение, если число с плавающей точкой слишком велико для размещения в целом.

‘avoid-indexed-addresses’
‘no-avoid-indexed-addresses’

Генерировать код, который пытается избежать (не избегать) использования индексированных инструкций загрузки или сохранения.

‘paired’
‘no-paired’

Генерировать код, использующий (не использующий) генерацию инструкций PAIRED simd.

‘longcall’
‘no-longcall’

Генерировать код, предполагающий (не предполагающий), что все вызовы находятся далеко, так что требуется более длинная и дорогая последовательность вызова.

‘cpu=CPU’

Укажите архитектуру, для которой генерируется код при компиляции функции. Если вы выберете атрибут target("cpu=power7") при генерации 32-разрядного кода, инструкции VSX и AltiVec не генерируются, если вы не используете опцию -mabi=altivec в командной строке.

‘tune=TUNE’

Укажите архитектуру, для которой нужно настроить компиляцию функции. Если вы не укажете атрибут target("tune=TUNE"), а укажете атрибут target("cpu=CPU"), компиляция настраивается для архитектуры CPU, а не для настройки по умолчанию, указанной в командной строке.

В PowerPC инлайнер не инлайнит функцию, которая имеет разные целевые опции, чем вызывающая функция, если только функция-приемник не имеет подмножества целевых опций вызывающей функции.

Далее: Атрибуты функций RL78, Предыдущее: Атрибуты функций Nvidia PTX, Вверх: Атрибуты функций [Содержание][Индекс]

© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-7.5.0/gcc/PowerPC-Function-Attributes.html

Spec-Zone.ru

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