6.62.25.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, используя режим округления до ближайшего нечётного.
-
Встроенная функция:
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-14.2.0/gcc/Basic-PowerPC-Built_002din-Functions-Available-on-ISA-3_002e0.html