6.60.22.2 Базовые встроенные функции PowerPC, доступные на ISA 2.05 ¶
Базовые встроенные функции, описанные в этом разделе, доступны на семействе процессоров PowerPC начиная с ISA 2.05 и выше. Если не указано иное, установка опции -mcpu=power6 в командной строке включает опции -mpowerpc64, -mpowerpc-gpopt, -mpowerpc-gfxopt, -mmfcrf, -mpopcntb, -mfprnd, -mcmpb, -mhard-dfp и -mrecip-precision. Для использования опции -maltivec необходимо указать её явно в сочетании с вышеперечисленными опциями.
Следующие функции требуют опции -mcmpb.
unsigned long long __builtin_cmpb (unsigned long long int, unsigned long long int); unsigned int __builtin_cmpb (unsigned int, unsigned int);
Функция __builtin_cmpb выполняет байтовое сравнение содержимого своих двух аргументов, возвращая результат байтового сравнения в качестве возвращаемого значения. Для каждого сравнения байтов соответствующий байт возвращаемого значения содержит 0xff, если байты входных данных равны, и 0, если байты входных данных не равны. Если любой из аргументов этой встроенной функции шире 32 бит, вызов функции расширяется в форму, которая ожидает unsigned long long int аргумента, доступную только на 64-битных целевых платформах.
Следующие встроенные функции доступны, когда доступна аппаратная десятичная плавающая точка (-mhard-dfp):
void __builtin_set_fpscr_drn(int); _Decimal64 __builtin_ddedpd (int, _Decimal64); _Decimal128 __builtin_ddedpdq (int, _Decimal128); _Decimal64 __builtin_denbcd (int, _Decimal64); _Decimal128 __builtin_denbcdq (int, _Decimal128); _Decimal64 __builtin_diex (long long, _Decimal64); _Decimal128 _builtin_diexq (long long, _Decimal128); _Decimal64 __builtin_dscli (_Decimal64, int); _Decimal128 __builtin_dscliq (_Decimal128, int); _Decimal64 __builtin_dscri (_Decimal64, int); _Decimal128 __builtin_dscriq (_Decimal128, int); long long __builtin_dxex (_Decimal64); long long __builtin_dxexq (_Decimal128); _Decimal128 __builtin_pack_dec128 (unsigned long long, unsigned long long); unsigned long long __builtin_unpack_dec128 (_Decimal128, int); The__builtin_set_fpscr_drnbuiltin allows changing the three decimal floating point rounding mode bits. The argument is a 3-bit value. The argument can either be aconst intor the value can be stored in a variable. The builtin uses the ISA 3.0 instructionmffscdrnif available. Otherwise the builtin reads the FPSCR, masks the current decimal rounding mode bits out and OR's in the new value.
Следующие функции требуют опций -mhard-float, -mpowerpc-gfxopt и -mpopcntb.
double __builtin_recipdiv (double, double); float __builtin_recipdivf (float, float); double __builtin_rsqrt (double); float __builtin_rsqrtf (float);
Функции vec_rsqrt, __builtin_rsqrt, и __builtin_rsqrtf генерируют несколько инструкций для реализации функции обратного квадратного корня с использованием инструкций оценки обратного квадратного корня.
Функции __builtin_recipdiv и __builtin_recipdivf генерируют несколько инструкций для реализации деления с использованием инструкций оценки обратного числа.
Следующие функции требуют опций -mhard-float и -mmultiple.
Функция __builtin_unpack_longdouble принимает аргумент long double и константу времени компиляции 0 или 1. Если константа равна 0, возвращается первый double в long double, в противном случае возвращается второй double. Функция __builtin_unpack_longdouble доступна только в том случае, если long double использует расширенное представление двойной точности IBM.
Функция __builtin_pack_longdouble принимает два аргумента double и возвращает значение long double, которое объединяет два аргумента. Функция __builtin_pack_longdouble доступна только в том случае, если long double использует расширенное представление двойной точности IBM.
Функция __builtin_unpack_ibm128 принимает аргумент __ibm128 и константу времени компиляции 0 или 1. Если константа равна 0, возвращается первый double в __ibm128, в противном случае возвращается второй double.
Функция __builtin_pack_ibm128 принимает два аргумента double и возвращает значение __ibm128, которое объединяет два аргумента.
Дополнительные встроенные функции доступны для 64-битного семейства процессоров PowerPC для эффективного использования 128-битных чисел с плавающей запятой (__float128)
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-11.4.0/gcc/Basic-PowerPC-Built-in-Functions-Available-on-ISA-2_002e05.html