6.31.23 Атрибуты функций PowerPC
Эти атрибуты функций поддерживаются бэкендом PowerPC:
longcallshortcall-
Атрибут
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’
-
Предполагать (не предполагать), что инструкции оценки обратного значения обеспечивают более точные оценки, чем предписывает ABI PowerPC.
- ‘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 инлайнер не инлайнит функцию, которая имеет разные параметры целевой платформы, чем вызывающая функция, если у вызываемой функции нет подмножества параметров целевой платформы вызывающей функции.
Далее: Атрибуты функций RISC-V, Предыдущий: Атрибуты функций Nvidia PTX, Вверх: Атрибуты функций [Оглавление][Индекс]
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-8.5.0/gcc/PowerPC-Function-Attributes.html