6.60.22.5 Базовые встроенные функции PowerPC, доступные в ISA 3.0 ¶
Базовые встроенные функции, описанные в этом разделе, доступны на процессорах семейства PowerPC, начиная с ISA 3.0 и новее. Если на командной строке не отключены конкретные опции, указание опции -mcpu=power9 имеет тот же эффект, что и опция -mcpu=power8, а также включает опцию -misel.
Следующие встроенные функции доступны в 64-битных системах Linux, использующих набор инструкций ISA 3.0 (-mcpu=power9):
__float128 __builtin_addf128_round_to_odd (__float128, __float128)-
Выполнение 128-битного IEEE-плавающего сложения с использованием округления до нечётного как режима округления.
__float128 __builtin_subf128_round_to_odd (__float128, __float128)-
Выполнение 128-битного IEEE-плавающего вычитания с использованием округления до нечётного как режима округления.
__float128 __builtin_mulf128_round_to_odd (__float128, __float128)-
Выполнение 128-битного IEEE-плавающего умножения с использованием округления до нечётного как режима округления.
__float128 __builtin_divf128_round_to_odd (__float128, __float128)-
Выполнение 128-битного IEEE-плавающего деления с использованием округления до нечётного как режима округления.
__float128 __builtin_sqrtf128_round_to_odd (__float128)-
Выполнение 128-битного IEEE-плавающего извлечения квадратного корня с использованием округления до нечётного как режима округления.
__float128 __builtin_fmaf128_round_to_odd (__float128, __float128, __float128)-
Выполнение 128-битной IEEE-плавающей операции умножения и сложения (fused multiply-add) с использованием округления до нечётного как режима округления.
double __builtin_truncf128_round_to_odd (__float128)Преобразование 128-битного IEEE-плавающего значения в
doubleс использованием округления до нечётного как режима округления.
Следующие дополнительные встроенные функции также доступны для процессоров семейства PowerPC, начиная с ISA 3.0 или новее:
long long __builtin_darn (void); long long __builtin_darn_raw (void); int __builtin_darn_32 (void);
Функции __builtin_darn и __builtin_darn_raw требуют 64-битной среды, поддерживающей ISA 3.0 или новее. Функция __builtin_darn обеспечивает 64-битное условное случайное число. Функция __builtin_darn_raw обеспечивает 64-битное «сырое» случайное число. Функция __builtin_darn_32 обеспечивает 32-битное условное случайное число.
Следующие дополнительные встроенные функции также доступны для процессоров семейства PowerPC, начиная с ISA 3.0 или новее:
int __builtin_byte_in_set (unsigned char u, unsigned long long set); int __builtin_byte_in_range (unsigned char u, unsigned int range); int __builtin_byte_in_either_range (unsigned char u, unsigned int ranges); int __builtin_dfp_dtstsfi_lt (unsigned int comparison, _Decimal64 value); int __builtin_dfp_dtstsfi_lt (unsigned int comparison, _Decimal128 value); int __builtin_dfp_dtstsfi_lt_dd (unsigned int comparison, _Decimal64 value); int __builtin_dfp_dtstsfi_lt_td (unsigned int comparison, _Decimal128 value); int __builtin_dfp_dtstsfi_gt (unsigned int comparison, _Decimal64 value); int __builtin_dfp_dtstsfi_gt (unsigned int comparison, _Decimal128 value); int __builtin_dfp_dtstsfi_gt_dd (unsigned int comparison, _Decimal64 value); int __builtin_dfp_dtstsfi_gt_td (unsigned int comparison, _Decimal128 value); int __builtin_dfp_dtstsfi_eq (unsigned int comparison, _Decimal64 value); int __builtin_dfp_dtstsfi_eq (unsigned int comparison, _Decimal128 value); int __builtin_dfp_dtstsfi_eq_dd (unsigned int comparison, _Decimal64 value); int __builtin_dfp_dtstsfi_eq_td (unsigned int comparison, _Decimal128 value); int __builtin_dfp_dtstsfi_ov (unsigned int comparison, _Decimal64 value); int __builtin_dfp_dtstsfi_ov (unsigned int comparison, _Decimal128 value); int __builtin_dfp_dtstsfi_ov_dd (unsigned int comparison, _Decimal64 value); int __builtin_dfp_dtstsfi_ov_td (unsigned int comparison, _Decimal128 value); double __builtin_mffsl(void);
Функция __builtin_byte_in_set требует 64-битной среды, поддерживающей ISA 3.0 или новее. Эта функция возвращает ненулевое значение тогда и только тогда, когда ее аргумент u точно равен одному из восьми байтов, содержащихся в ее 64-битном аргументе set.
Функции __builtin_byte_in_range и __builtin_byte_in_either_range требуют среды, поддерживающей ISA 3.0 или новее. Для этих двух функций аргумент range закодирован как 4 байта, организованных как hi_1:lo_1:hi_2:lo_2. Функция __builtin_byte_in_range возвращает ненулевое значение тогда и только тогда, когда ее аргумент u находится в диапазоне от lo_2 до hi_2 включительно. Функция __builtin_byte_in_either_range возвращает ненулевое значение тогда и только тогда, когда ее аргумент u находится в диапазоне от lo_1 до hi_1 включительно или от lo_2 до hi_2 включительно.
Функция __builtin_dfp_dtstsfi_lt возвращает ненулевое значение тогда и только тогда, когда количество значащих цифр ее аргумента value меньше ее аргумента comparison. Функции __builtin_dfp_dtstsfi_lt_dd и __builtin_dfp_dtstsfi_lt_td ведут себя аналогично, но требуют, чтобы тип аргумента value был __Decimal64 и __Decimal128 соответственно.
Функция __builtin_dfp_dtstsfi_gt возвращает ненулевое значение тогда и только тогда, когда количество значащих цифр ее аргумента value больше ее аргумента comparison. Функции __builtin_dfp_dtstsfi_gt_dd и __builtin_dfp_dtstsfi_gt_td ведут себя аналогично, но требуют, чтобы тип аргумента value был __Decimal64 и __Decimal128 соответственно.
Функция __builtin_dfp_dtstsfi_eq возвращает ненулевое значение тогда и только тогда, когда количество значащих цифр ее аргумента value равно ее аргументу comparison. Функции __builtin_dfp_dtstsfi_eq_dd и __builtin_dfp_dtstsfi_eq_td ведут себя аналогично, но требуют, чтобы тип аргумента value был __Decimal64 и __Decimal128 соответственно.
Функция __builtin_dfp_dtstsfi_ov возвращает ненулевое значение тогда и только тогда, когда ее аргумент value имеет неопределённое количество значащих цифр, например, когда value является кодированием NaN. Функции __builtin_dfp_dtstsfi_ov_dd и __builtin_dfp_dtstsfi_ov_td ведут себя аналогично, но требуют, чтобы тип аргумента value был __Decimal64 и __Decimal128 соответственно.
Функция __builtin_mffsl использует инструкцию ISA 3.0 mffsl для чтения FPSCR. Эта инструкция является более быстрой версией инструкции mffs. Если инструкция mffsl недоступна, то встроенная функция использует более старую инструкцию mffs для чтения FPSCR.
© 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-3_002e0.html