1 /*- 2 * Copyright (c) 2025-2026 Robert Clausecker <fuz@FreeBSD.org> 3 * 4 * SPDX-License-Identifier: BSD-2-Clause 5 */ 6 7 #ifndef __STDC_VERSION_STDBIT_H__ 8 #define __STDC_VERSION_STDBIT_H__ 202311L 9 10 #include <sys/cdefs.h> 11 #include <sys/_types.h> 12 #include <sys/_stdint.h> 13 14 #ifndef _SIZE_T_DECLARED 15 typedef __size_t size_t; 16 #define _SIZE_T_DECLARED 17 #endif 18 19 #ifndef _INT_LEAST_T_DECLARED 20 typedef __int_least8_t int_least8_t; 21 typedef __int_least16_t int_least16_t; 22 typedef __int_least32_t int_least32_t; 23 typedef __int_least64_t int_least64_t; 24 25 typedef __uint_least8_t uint_least8_t; 26 typedef __uint_least16_t uint_least16_t; 27 typedef __uint_least32_t uint_least32_t; 28 typedef __uint_least64_t uint_least64_t; 29 #define _INT_LEAST_T_DECLARED 30 #endif 31 32 /* byte order */ 33 #define __STDC_ENDIAN_LITTLE__ __ORDER_LITTLE_ENDIAN__ 34 #define __STDC_ENDIAN_BIG__ __ORDER_BIG_ENDIAN__ 35 #define __STDC_ENDIAN_NATIVE__ __BYTE_ORDER__ 36 37 #define __generic_bitfunc(func, x) (_Generic(x, \ 38 unsigned char: func ## _uc, \ 39 unsigned short: func ## _us, \ 40 unsigned int: func ## _ui, \ 41 unsigned long: func ## _ul, \ 42 unsigned long long: func ## _ull)(x)) 43 44 __BEGIN_DECLS 45 unsigned int stdc_leading_zeros_uc(unsigned char) __pure2; 46 unsigned int stdc_leading_zeros_us(unsigned short) __pure2; 47 unsigned int stdc_leading_zeros_ui(unsigned int) __pure2; 48 unsigned int stdc_leading_zeros_ul(unsigned long) __pure2; 49 unsigned int stdc_leading_zeros_ull(unsigned long long) __pure2; 50 #define stdc_leading_zeros(x) __generic_bitfunc(stdc_leading_zeros, x) 51 52 unsigned int stdc_leading_ones_uc(unsigned char) __pure2; 53 unsigned int stdc_leading_ones_us(unsigned short) __pure2; 54 unsigned int stdc_leading_ones_ui(unsigned int) __pure2; 55 unsigned int stdc_leading_ones_ul(unsigned long) __pure2; 56 unsigned int stdc_leading_ones_ull(unsigned long long) __pure2; 57 #define stdc_leading_ones(x) __generic_bitfunc(stdc_leading_ones, x) 58 59 unsigned int stdc_trailing_zeros_uc(unsigned char) __pure2; 60 unsigned int stdc_trailing_zeros_us(unsigned short) __pure2; 61 unsigned int stdc_trailing_zeros_ui(unsigned int) __pure2; 62 unsigned int stdc_trailing_zeros_ul(unsigned long) __pure2; 63 unsigned int stdc_trailing_zeros_ull(unsigned long long) __pure2; 64 #define stdc_trailing_zeros(x) __generic_bitfunc(stdc_trailing_zeros, x) 65 66 unsigned int stdc_trailing_ones_uc(unsigned char) __pure2; 67 unsigned int stdc_trailing_ones_us(unsigned short) __pure2; 68 unsigned int stdc_trailing_ones_ui(unsigned int) __pure2; 69 unsigned int stdc_trailing_ones_ul(unsigned long) __pure2; 70 unsigned int stdc_trailing_ones_ull(unsigned long long) __pure2; 71 #define stdc_trailing_ones(x) __generic_bitfunc(stdc_trailing_ones, x) 72 73 unsigned int stdc_first_leading_zero_uc(unsigned char) __pure2; 74 unsigned int stdc_first_leading_zero_us(unsigned short) __pure2; 75 unsigned int stdc_first_leading_zero_ui(unsigned int) __pure2; 76 unsigned int stdc_first_leading_zero_ul(unsigned long) __pure2; 77 unsigned int stdc_first_leading_zero_ull(unsigned long long) __pure2; 78 #define stdc_first_leading_zero(x) __generic_bitfunc(stdc_first_leading_zero, x) 79 80 unsigned int stdc_first_leading_one_uc(unsigned char) __pure2; 81 unsigned int stdc_first_leading_one_us(unsigned short) __pure2; 82 unsigned int stdc_first_leading_one_ui(unsigned int) __pure2; 83 unsigned int stdc_first_leading_one_ul(unsigned long) __pure2; 84 unsigned int stdc_first_leading_one_ull(unsigned long long) __pure2; 85 #define stdc_first_leading_one(x) __generic_bitfunc(stdc_first_leading_one, x) 86 87 unsigned int stdc_first_trailing_zero_uc(unsigned char) __pure2; 88 unsigned int stdc_first_trailing_zero_us(unsigned short) __pure2; 89 unsigned int stdc_first_trailing_zero_ui(unsigned int) __pure2; 90 unsigned int stdc_first_trailing_zero_ul(unsigned long) __pure2; 91 unsigned int stdc_first_trailing_zero_ull(unsigned long long) __pure2; 92 #define stdc_first_trailing_zero(x) __generic_bitfunc(stdc_first_trailing_zero, x) 93 94 unsigned int stdc_first_trailing_one_uc(unsigned char) __pure2; 95 unsigned int stdc_first_trailing_one_us(unsigned short) __pure2; 96 unsigned int stdc_first_trailing_one_ui(unsigned int) __pure2; 97 unsigned int stdc_first_trailing_one_ul(unsigned long) __pure2; 98 unsigned int stdc_first_trailing_one_ull(unsigned long long) __pure2; 99 #define stdc_first_trailing_one(x) __generic_bitfunc(stdc_first_trailing_one, x) 100 101 unsigned int stdc_count_zeros_uc(unsigned char) __pure2; 102 unsigned int stdc_count_zeros_us(unsigned short) __pure2; 103 unsigned int stdc_count_zeros_ui(unsigned int) __pure2; 104 unsigned int stdc_count_zeros_ul(unsigned long) __pure2; 105 unsigned int stdc_count_zeros_ull(unsigned long long) __pure2; 106 #define stdc_count_zeros(x) __generic_bitfunc(stdc_count_zeros, x) 107 108 unsigned int stdc_count_ones_uc(unsigned char) __pure2; 109 unsigned int stdc_count_ones_us(unsigned short) __pure2; 110 unsigned int stdc_count_ones_ui(unsigned int) __pure2; 111 unsigned int stdc_count_ones_ul(unsigned long) __pure2; 112 unsigned int stdc_count_ones_ull(unsigned long long) __pure2; 113 #define stdc_count_ones(x) __generic_bitfunc(stdc_count_ones, x) 114 115 _Bool stdc_has_single_bit_uc(unsigned char) __pure2; 116 _Bool stdc_has_single_bit_us(unsigned short) __pure2; 117 _Bool stdc_has_single_bit_ui(unsigned int) __pure2; 118 _Bool stdc_has_single_bit_ul(unsigned long) __pure2; 119 _Bool stdc_has_single_bit_ull(unsigned long long) __pure2; 120 #define stdc_has_single_bit(x) __generic_bitfunc(stdc_has_single_bit, x) 121 122 unsigned int stdc_bit_width_uc(unsigned char) __pure2; 123 unsigned int stdc_bit_width_us(unsigned short) __pure2; 124 unsigned int stdc_bit_width_ui(unsigned int) __pure2; 125 unsigned int stdc_bit_width_ul(unsigned long) __pure2; 126 unsigned int stdc_bit_width_ull(unsigned long long) __pure2; 127 #define stdc_bit_width(x) __generic_bitfunc(stdc_bit_width, x) 128 129 unsigned char stdc_bit_floor_uc(unsigned char) __pure2; 130 unsigned short stdc_bit_floor_us(unsigned short) __pure2; 131 unsigned stdc_bit_floor_ui(unsigned int) __pure2; 132 unsigned long stdc_bit_floor_ul(unsigned long) __pure2; 133 unsigned long long stdc_bit_floor_ull(unsigned long long) __pure2; 134 #define stdc_bit_floor(x) __generic_bitfunc(stdc_bit_floor, x) 135 136 unsigned char stdc_bit_ceil_uc(unsigned char) __pure2; 137 unsigned short stdc_bit_ceil_us(unsigned short) __pure2; 138 unsigned int stdc_bit_ceil_ui(unsigned int) __pure2; 139 unsigned long stdc_bit_ceil_ul(unsigned long) __pure2; 140 unsigned long long stdc_bit_ceil_ull(unsigned long long) __pure2; 141 #define stdc_bit_ceil(x) __generic_bitfunc(stdc_bit_ceil, x) 142 __END_DECLS 143 144 #endif /* __STDC_VERSION_STDBIT_H__ */ 145