7.13.24.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) Выполняет сложение чисел с плавающей точкой IEEE с точностью 128 бит, используя округление к нечётному в качестве режима округления.
-
Встроенная функция:
__float128__builtin_subf128_round_to_odd(__float128, __float128) Выполняет вычитание чисел с плавающей точкой IEEE с точностью 128 бит, используя округление к нечётному в качестве режима округления.
-
Встроенная функция:
__float128__builtin_mulf128_round_to_odd(__float128, __float128) Выполняет умножение чисел с плавающей точкой IEEE с точностью 128 бит, используя округление к нечётному в качестве режима округления.
-
Встроенная функция:
__float128__builtin_divf128_round_to_odd(__float128, __float128) Выполняет деление чисел с плавающей точкой IEEE с точностью 128 бит, используя округление к нечётному в качестве режима округления.
-
Встроенная функция:
__float128__builtin_sqrtf128_round_to_odd(__float128) Вычисляет квадратный корень числа с плавающей точкой IEEE с точностью 128 бит, используя округление к нечётному в качестве режима округления.
-
Встроенная функция:
__float128__builtin_fmaf128_round_to_odd(__float128, __float128, __float128) Выполняет операцию слитного умножения и сложения чисел с плавающей точкой IEEE с точностью 128 бит, используя округление к нечётному в качестве режима округления.
-
Встроенная функция:
double__builtin_truncf128_round_to_odd(__float128) Преобразует значение числа с плавающей точкой IEEE с точностью 128 бит в
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 использует инструкцию mffsl ISA 3.0 для чтения FPSCR. Эта инструкция имеет меньшую задержку, чем инструкция mffs. Если инструкция mffsl недоступна, встроенная функция использует для чтения FPSCR более старую инструкцию mffs.
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-15.3.0/gcc/Basic-PowerPC-Built_002din-Functions-Available-on-ISA-3_002e0.html