Spec-Zone.ru › GCC 15

7.2.2 Встроенные функции битовых операций

Встроенная функция: int __builtin_ffs (int x)

Возвращает индекс младшего значащего бита со значением 1 в x, увеличенный на единицу, или 0, если x равен нулю.

Встроенная функция: int __builtin_clz (unsigned int x)

Возвращает количество ведущих нулевых битов в x, начиная со старшего значащего бита. Если x равен 0, результат не определён.

Встроенная функция: int __builtin_ctz (unsigned int x)

Возвращает количество конечных нулевых битов в x, начиная с младшего значащего бита. Если x равен 0, результат не определён.

Встроенная функция: int __builtin_clrsb (int x)

Возвращает количество ведущих избыточных знаковых битов в x, то есть количество битов после старшего значащего бита, совпадающих с ним. Для 0 и других значений особых случаев нет.

Встроенная функция: int __builtin_popcount (unsigned int x)

Возвращает количество единичных битов в x.

Встроенная функция: int __builtin_parity (unsigned int x)

Возвращает чётность x, то есть количество единичных битов в x по модулю 2.

Встроенная функция: int __builtin_ffsl (long)

Аналогична __builtin_ffs, но тип аргумента — long.

Встроенная функция: int __builtin_clzl (unsigned long)

Аналогична __builtin_clz, но тип аргумента — unsigned long.

Встроенная функция: int __builtin_ctzl (unsigned long)

Аналогична __builtin_ctz, но тип аргумента — unsigned long.

Встроенная функция: int __builtin_clrsbl (long)

Аналогична __builtin_clrsb, но тип аргумента — long.

Встроенная функция: int __builtin_popcountl (unsigned long)

Аналогична __builtin_popcount, но тип аргумента — unsigned long.

Встроенная функция: int __builtin_parityl (unsigned long)

Аналогична __builtin_parity, но тип аргумента — unsigned long.

Встроенная функция: int __builtin_ffsll (long long)

Аналогична __builtin_ffs, но тип аргумента — long long.

Встроенная функция: int __builtin_clzll (unsigned long long)

Аналогична __builtin_clz, но тип аргумента — unsigned long long.

Встроенная функция: int __builtin_ctzll (unsigned long long)

Аналогична __builtin_ctz, но тип аргумента — unsigned long long.

Встроенная функция: int __builtin_clrsbll (long long)

Аналогична __builtin_clrsb, но тип аргумента — long long.

Встроенная функция: int __builtin_popcountll (unsigned long long)

Аналогична __builtin_popcount, но тип аргумента — unsigned long long.

Встроенная функция: int __builtin_parityll (unsigned long long)

Аналогична __builtin_parity, но тип аргумента — unsigned long long.

Встроенная функция: int __builtin_ffsg (...)

Аналогична __builtin_ffs, но аргумент имеет тип обобщённого знакового целого числа (стандартный, расширенный или с заданной точностью в битах). Целочисленные продвижения аргумента не выполняются.

Встроенная функция: int __builtin_clzg (...)

Аналогична __builtin_clz, но аргумент имеет тип обобщённого беззнакового целого числа (стандартный, расширенный или с заданной точностью в битах); предусмотрен необязательный второй аргумент типа int. Целочисленные продвижения первого аргумента не выполняются. Если указаны два аргумента и первый аргумент равен 0, результатом является второй аргумент. Если указан только один аргумент и он равен 0, результат не определён.

Встроенная функция: int __builtin_ctzg (...)

Аналогична __builtin_ctz, но аргумент имеет тип обобщённого беззнакового целого числа (стандартный, расширенный или с заданной точностью в битах); предусмотрен необязательный второй аргумент типа int. Целочисленные продвижения первого аргумента не выполняются. Если указаны два аргумента и первый аргумент равен 0, результатом является второй аргумент. Если указан только один аргумент и он равен 0, результат не определён.

Встроенная функция: int __builtin_clrsbg (...)

Аналогична __builtin_clrsb, но аргумент имеет тип обобщённого знакового целого числа (стандартный, расширенный или с заданной точностью в битах). Целочисленные продвижения аргумента не выполняются.

Встроенная функция: int __builtin_popcountg (...)

Аналогична __builtin_popcount, но аргумент имеет тип обобщённого беззнакового целого числа (стандартный, расширенный или с заданной точностью в битах). Целочисленные продвижения аргумента не выполняются.

Встроенная функция: int __builtin_parityg (...)

Аналогична __builtin_parity, но аргумент имеет тип обобщённого беззнакового целого числа (стандартный, расширенный или с заданной точностью в битах). Целочисленные продвижения аргумента не выполняются.

Встроенная функция: type __builtin_stdc_bit_ceil (type arg)

Функция __builtin_stdc_bit_ceil доступна только в C. Она является типообобщённой; аргументом может быть любое беззнаковое целое число (стандартное, расширенное или с заданной точностью в битах). Целочисленные продвижения аргумента не выполняются. Она эквивалентна arg <= 1 ? (type) 1 : (type) 2 << (prec - 1 - __builtin_clzg ((type) (arg - 1))), где prec — разрядность type, за исключением того, что побочные эффекты в arg вычисляются только один раз.

Встроенная функция: type __builtin_stdc_bit_floor (type arg)

Функция __builtin_stdc_bit_floor доступна только в C. Она является типообобщённой; аргументом может быть любое беззнаковое целое число (стандартное, расширенное или с заданной точностью в битах). Целочисленные продвижения аргумента не выполняются. Она эквивалентна arg == 0 ? (type) 0 : (type) 1 << (prec - 1 - __builtin_clzg (arg)), где prec — разрядность type, за исключением того, что побочные эффекты в arg вычисляются только один раз.

Встроенная функция: unsigned int __builtin_stdc_bit_width (type arg)

Функция __builtin_stdc_bit_width доступна только в C. Она является типообобщённой; аргументом может быть любое беззнаковое целое число (стандартное, расширенное или с заданной точностью в битах). Целочисленные продвижения аргумента не выполняются. Она эквивалентна (unsigned int) (prec - __builtin_clzg (arg, prec)), где prec — разрядность type.

Встроенная функция: unsigned int __builtin_stdc_count_ones (type arg)

Функция __builtin_stdc_count_ones доступна только в C. Она является типообобщённой; аргументом может быть любое беззнаковое целое число (стандартное, расширенное или с заданной точностью в битах). Целочисленные продвижения аргумента не выполняются. Она эквивалентна (unsigned int) __builtin_popcountg (arg)

Встроенная функция: unsigned int __builtin_stdc_count_zeros (type arg)

Функция __builtin_stdc_count_zeros доступна только в C. Она является типообобщённой; аргументом может быть любое беззнаковое целое число (стандартное, расширенное или с заданной точностью в битах). Целочисленные продвижения аргумента не выполняются. Она эквивалентна (unsigned int) __builtin_popcountg ((type) ~arg)

Встроенная функция: unsigned int __builtin_stdc_first_leading_one (type arg)

Функция __builtin_stdc_first_leading_one доступна только в C. Она является типообобщённой; аргументом может быть любое беззнаковое целое число (стандартное, расширенное или с заданной точностью в битах). Целочисленные продвижения аргумента не выполняются. Она эквивалентна __builtin_clzg (arg, -1) + 1U

Встроенная функция: unsigned int __builtin_stdc_first_leading_zero (type arg)

Функция __builtin_stdc_first_leading_zero доступна только в C. Она является типообобщённой; аргументом может быть любое беззнаковое целое число (стандартное, расширенное или с заданной точностью в битах). Целочисленные продвижения аргумента не выполняются. Она эквивалентна __builtin_clzg ((type) ~arg, -1) + 1U

Встроенная функция: unsigned int __builtin_stdc_first_trailing_one (type arg)

Функция __builtin_stdc_first_trailing_one доступна только в C. Она является типообобщённой; аргументом может быть любое беззнаковое целое число (стандартное, расширенное или с заданной точностью в битах). Целочисленные продвижения аргумента не выполняются. Она эквивалентна __builtin_ctzg (arg, -1) + 1U

Встроенная функция: unsigned int __builtin_stdc_first_trailing_zero (type arg)

Функция __builtin_stdc_first_trailing_zero доступна только в C. Она является типообобщённой; аргументом может быть любое беззнаковое целое число (стандартное, расширенное или с заданной точностью в битах). Целочисленные продвижения аргумента не выполняются. Она эквивалентна __builtin_ctzg ((type) ~arg, -1) + 1U

Встроенная функция: unsigned int __builtin_stdc_has_single_bit (type arg)

Функция __builtin_stdc_has_single_bit доступна только в C. Она является типообобщённой; аргументом может быть любое беззнаковое целое число (стандартное, расширенное или с заданной точностью в битах). Целочисленные продвижения аргумента не выполняются. Она эквивалентна (_Bool) (__builtin_popcountg (arg) == 1)

Встроенная функция: unsigned int __builtin_stdc_leading_ones (type arg)

Функция __builtin_stdc_leading_ones доступна только в C. Она является типообобщённой; аргументом может быть любое беззнаковое целое число (стандартное, расширенное или с заданной точностью в битах). Целочисленные продвижения аргумента не выполняются. Она эквивалентна (unsigned int) __builtin_clzg ((type) ~arg, prec)

Встроенная функция: unsigned int __builtin_stdc_leading_zeros (type arg)

Функция __builtin_stdc_leading_zeros доступна только в C. Она является типообобщённой; аргументом может быть любое беззнаковое целое число (стандартное, расширенное или с заданной точностью в битах). Целочисленные продвижения аргумента не выполняются. Она эквивалентна (unsigned int) __builtin_clzg (arg, prec)

Встроенная функция: unsigned int __builtin_stdc_trailing_ones (type arg)

Функция __builtin_stdc_trailing_ones доступна только в C. Она является типообобщённой; аргументом может быть любое беззнаковое целое число (стандартное, расширенное или с заданной точностью в битах). Целочисленные продвижения аргумента не выполняются. Она эквивалентна (unsigned int) __builtin_ctzg ((type) ~arg, prec)

Встроенная функция: unsigned int __builtin_stdc_trailing_zeros (type arg)

Функция __builtin_stdc_trailing_zeros доступна только в C. Она является типообобщённой; аргументом может быть любое беззнаковое целое число (стандартное, расширенное или с заданной точностью в битах). Целочисленные продвижения аргумента не выполняются. Она эквивалентна (unsigned int) __builtin_ctzg (arg, prec)

Встроенная функция: type1 __builtin_stdc_rotate_left (type1 arg1, type2 arg2)

Функция __builtin_stdc_rotate_left доступна только в C. Она является типообобщённой: первый аргумент может быть любым беззнаковым целым числом (стандартным, расширенным или с заданной точностью в битах), а второй — любым знаковым или беззнаковым целым числом либо char. Целочисленные продвижения аргументов не выполняются. Она эквивалентна (type1) ((arg1 << (arg2 % prec)) | (arg1 >> ((-(unsigned type2) arg2) % prec))), где prec — разрядность type1, за исключением того, что побочные эффекты в arg1 и arg2 вычисляются только один раз. Поведение не определено, если arg2 отрицателен.

Встроенная функция: type1 __builtin_stdc_rotate_right (type1 arg1, type2 arg2)

Функция __builtin_stdc_rotate_right доступна только в C. Она является типообобщённой: первый аргумент может быть любым беззнаковым целым числом (стандартным, расширенным или с заданной точностью в битах), а второй — любым знаковым или беззнаковым целым числом либо char. Целочисленные продвижения аргументов не выполняются. Она эквивалентна (type1) ((arg1 >> (arg2 % prec)) | (arg1 << ((-(unsigned type2) arg2) % prec))), где prec — разрядность type1, за исключением того, что побочные эффекты в arg1 и arg2 вычисляются только один раз. Поведение не определено, если arg2 отрицателен.

© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-15.3.0/gcc/Bit-Operation-Builtins.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API