#ifndef _SYS_STDBIT_H
#define _SYS_STDBIT_H
#include <sys/feature_tests.h>
#include <sys/isa_defs.h>
#include <sys/int_types.h>
#include <sys/stdbool.h>
#ifdef __cplusplus
extern "C" {
#endif
#define __STDC_VERSION_STDBIT_H__ 202311L
#if !defined(_SIZE_T) || __cplusplus >= 199711L
#define _SIZE_T
#if defined(_LP64)
typedef unsigned long size_t;
#else
typedef unsigned int size_t;
#endif
#endif
#define __STDC_ENDIAN_LITTLE__ 1234
#define __STDC_ENDIAN_BIG__ 4321
#if defined(_LITTLE_ENDIAN)
#define __STDC_ENDIAN_NATIVE__ __STDC_ENDIAN_LITTLE__
#elif defined(_BIG_ENDIAN)
#define __STDC_ENDIAN_NATIVE__ __STDC_ENDIAN_BIG__
#else
#error "Unknown byte order"
#endif
extern unsigned int stdc_leading_zeros_uc(unsigned char) _C23_UNSEQ_ATTR;
extern unsigned int stdc_leading_zeros_us(unsigned short) _C23_UNSEQ_ATTR;
extern unsigned int stdc_leading_zeros_ui(unsigned int) _C23_UNSEQ_ATTR;
extern unsigned int stdc_leading_zeros_ul(unsigned long) _C23_UNSEQ_ATTR;
extern unsigned int stdc_leading_ones_uc(unsigned char) _C23_UNSEQ_ATTR;
extern unsigned int stdc_leading_ones_us(unsigned short) _C23_UNSEQ_ATTR;
extern unsigned int stdc_leading_ones_ui(unsigned int) _C23_UNSEQ_ATTR;
extern unsigned int stdc_leading_ones_ul(unsigned long) _C23_UNSEQ_ATTR;
extern unsigned int stdc_trailing_zeros_uc(unsigned char) _C23_UNSEQ_ATTR;
extern unsigned int stdc_trailing_zeros_us(unsigned short) _C23_UNSEQ_ATTR;
extern unsigned int stdc_trailing_zeros_ui(unsigned int) _C23_UNSEQ_ATTR;
extern unsigned int stdc_trailing_zeros_ul(unsigned long) _C23_UNSEQ_ATTR;
extern unsigned int stdc_trailing_ones_uc(unsigned char) _C23_UNSEQ_ATTR;
extern unsigned int stdc_trailing_ones_us(unsigned short) _C23_UNSEQ_ATTR;
extern unsigned int stdc_trailing_ones_ui(unsigned int) _C23_UNSEQ_ATTR;
extern unsigned int stdc_trailing_ones_ul(unsigned long) _C23_UNSEQ_ATTR;
extern unsigned int stdc_first_leading_zero_uc(unsigned char) _C23_UNSEQ_ATTR;
extern unsigned int stdc_first_leading_zero_us(unsigned short) _C23_UNSEQ_ATTR;
extern unsigned int stdc_first_leading_zero_ui(unsigned int) _C23_UNSEQ_ATTR;
extern unsigned int stdc_first_leading_zero_ul(unsigned long) _C23_UNSEQ_ATTR;
extern unsigned int stdc_first_leading_one_uc(unsigned char) _C23_UNSEQ_ATTR;
extern unsigned int stdc_first_leading_one_us(unsigned short) _C23_UNSEQ_ATTR;
extern unsigned int stdc_first_leading_one_ui(unsigned int) _C23_UNSEQ_ATTR;
extern unsigned int stdc_first_leading_one_ul(unsigned long) _C23_UNSEQ_ATTR;
extern unsigned int stdc_first_trailing_zero_uc(unsigned char) _C23_UNSEQ_ATTR;
extern unsigned int stdc_first_trailing_zero_us(unsigned short) _C23_UNSEQ_ATTR;
extern unsigned int stdc_first_trailing_zero_ui(unsigned int) _C23_UNSEQ_ATTR;
extern unsigned int stdc_first_trailing_zero_ul(unsigned long) _C23_UNSEQ_ATTR;
extern unsigned int stdc_first_trailing_one_uc(unsigned char) _C23_UNSEQ_ATTR;
extern unsigned int stdc_first_trailing_one_us(unsigned short) _C23_UNSEQ_ATTR;
extern unsigned int stdc_first_trailing_one_ui(unsigned int) _C23_UNSEQ_ATTR;
extern unsigned int stdc_first_trailing_one_ul(unsigned long) _C23_UNSEQ_ATTR;
extern unsigned int stdc_count_zeros_uc(unsigned char) _C23_UNSEQ_ATTR;
extern unsigned int stdc_count_zeros_us(unsigned short) _C23_UNSEQ_ATTR;
extern unsigned int stdc_count_zeros_ui(unsigned int) _C23_UNSEQ_ATTR;
extern unsigned int stdc_count_zeros_ul(unsigned long) _C23_UNSEQ_ATTR;
extern unsigned int stdc_count_ones_uc(unsigned char) _C23_UNSEQ_ATTR;
extern unsigned int stdc_count_ones_us(unsigned short) _C23_UNSEQ_ATTR;
extern unsigned int stdc_count_ones_ui(unsigned int) _C23_UNSEQ_ATTR;
extern unsigned int stdc_count_ones_ul(unsigned long) _C23_UNSEQ_ATTR;
extern bool stdc_has_single_bit_uc(unsigned char) _C23_UNSEQ_ATTR;
extern bool stdc_has_single_bit_us(unsigned short) _C23_UNSEQ_ATTR;
extern bool stdc_has_single_bit_ui(unsigned int) _C23_UNSEQ_ATTR;
extern bool stdc_has_single_bit_ul(unsigned long) _C23_UNSEQ_ATTR;
extern unsigned int stdc_bit_width_uc(unsigned char) _C23_UNSEQ_ATTR;
extern unsigned int stdc_bit_width_us(unsigned short) _C23_UNSEQ_ATTR;
extern unsigned int stdc_bit_width_ui(unsigned int) _C23_UNSEQ_ATTR;
extern unsigned int stdc_bit_width_ul(unsigned long) _C23_UNSEQ_ATTR;
extern unsigned char stdc_bit_floor_uc(unsigned char) _C23_UNSEQ_ATTR;
extern unsigned short stdc_bit_floor_us(unsigned short) _C23_UNSEQ_ATTR;
extern unsigned int stdc_bit_floor_ui(unsigned int) _C23_UNSEQ_ATTR;
extern unsigned long stdc_bit_floor_ul(unsigned long) _C23_UNSEQ_ATTR;
extern unsigned char stdc_bit_ceil_uc(unsigned char) _C23_UNSEQ_ATTR;
extern unsigned short stdc_bit_ceil_us(unsigned short) _C23_UNSEQ_ATTR;
extern unsigned int stdc_bit_ceil_ui(unsigned int) _C23_UNSEQ_ATTR;
extern unsigned long stdc_bit_ceil_ul(unsigned long) _C23_UNSEQ_ATTR;
#if defined(_LONGLONG_TYPE)
extern unsigned int stdc_leading_zeros_ull(unsigned long long) _C23_UNSEQ_ATTR;
extern unsigned int stdc_leading_ones_ull(unsigned long long) _C23_UNSEQ_ATTR;
extern unsigned int stdc_trailing_zeros_ull(unsigned long long) _C23_UNSEQ_ATTR;
extern unsigned int stdc_trailing_ones_ull(unsigned long long) _C23_UNSEQ_ATTR;
extern unsigned int stdc_first_leading_zero_ull(unsigned long long)
_C23_UNSEQ_ATTR;
extern unsigned int stdc_first_leading_one_ull(unsigned long long)
_C23_UNSEQ_ATTR;
extern unsigned int stdc_first_trailing_zero_ull(unsigned long long)
_C23_UNSEQ_ATTR;
extern unsigned int stdc_first_trailing_one_ull(unsigned long long)
_C23_UNSEQ_ATTR;
extern unsigned int stdc_count_zeros_ull(unsigned long long) _C23_UNSEQ_ATTR;
extern unsigned int stdc_count_ones_ull(unsigned long long) _C23_UNSEQ_ATTR;
extern bool stdc_has_single_bit_ull(unsigned long long) _C23_UNSEQ_ATTR;
extern unsigned int stdc_bit_width_ull(unsigned long long) _C23_UNSEQ_ATTR;
extern unsigned long long stdc_bit_floor_ull(unsigned long long)
_C23_UNSEQ_ATTR;
extern unsigned long long stdc_bit_ceil_ull(unsigned long long) _C23_UNSEQ_ATTR;
#endif
#if defined(_STDC_C11)
#define stdc_leading_zeros(val) _Generic((char(*)[sizeof (val)]){ 0 }, \
char(*)[1]: stdc_leading_zeros_uc(val), \
char(*)[2]: stdc_leading_zeros_us(val), \
char(*)[4]: stdc_leading_zeros_ui(val), \
char(*)[8]: stdc_leading_zeros_ull(val))
#define stdc_leading_ones(val) _Generic((char(*)[sizeof (val)]){ 0 }, \
char(*)[1]: stdc_leading_ones_uc(val), \
char(*)[2]: stdc_leading_ones_us(val), \
char(*)[4]: stdc_leading_ones_ui(val), \
char(*)[8]: stdc_leading_ones_ull(val))
#define stdc_trailing_zeros(val) _Generic((char(*)[sizeof (val)]){ 0 }, \
char(*)[1]: stdc_trailing_zeros_uc(val), \
char(*)[2]: stdc_trailing_zeros_us(val), \
char(*)[4]: stdc_trailing_zeros_ui(val), \
char(*)[8]: stdc_trailing_zeros_ull(val))
#define stdc_trailing_ones(val) _Generic((char(*)[sizeof (val)]){ 0 }, \
char(*)[1]: stdc_trailing_ones_uc(val), \
char(*)[2]: stdc_trailing_ones_us(val), \
char(*)[4]: stdc_trailing_ones_ui(val), \
char(*)[8]: stdc_trailing_ones_ull(val))
#define stdc_first_leading_zero(val) _Generic((char(*)[sizeof (val)]){ 0 }, \
char(*)[1]: stdc_first_leading_zero_uc(val), \
char(*)[2]: stdc_first_leading_zero_us(val), \
char(*)[4]: stdc_first_leading_zero_ui(val), \
char(*)[8]: stdc_first_leading_zero_ull(val))
#define stdc_first_leading_one(val) _Generic((char(*)[sizeof (val)]){ 0 }, \
char(*)[1]: stdc_first_leading_one_uc(val), \
char(*)[2]: stdc_first_leading_one_us(val), \
char(*)[4]: stdc_first_leading_one_ui(val), \
char(*)[8]: stdc_first_leading_one_ull(val))
#define stdc_first_trailing_zero(val) _Generic((char(*)[sizeof (val)]){ 0 }, \
char(*)[1]: stdc_first_trailing_zero_uc(val), \
char(*)[2]: stdc_first_trailing_zero_us(val), \
char(*)[4]: stdc_first_trailing_zero_ui(val), \
char(*)[8]: stdc_first_trailing_zero_ull(val))
#define stdc_first_trailing_one(val) _Generic((char(*)[sizeof (val)]){ 0 }, \
char(*)[1]: stdc_first_trailing_one_uc(val), \
char(*)[2]: stdc_first_trailing_one_us(val), \
char(*)[4]: stdc_first_trailing_one_ui(val), \
char(*)[8]: stdc_first_trailing_one_ull(val))
#define stdc_count_zeros(val) _Generic((char(*)[sizeof (val)]){ 0 }, \
char(*)[1]: stdc_count_zeros_uc(val), \
char(*)[2]: stdc_count_zeros_us(val), \
char(*)[4]: stdc_count_zeros_ui(val), \
char(*)[8]: stdc_count_zeros_ull(val))
#define stdc_count_ones(val) _Generic((char(*)[sizeof (val)]){ 0 }, \
char(*)[1]: stdc_count_ones_uc(val), \
char(*)[2]: stdc_count_ones_us(val), \
char(*)[4]: stdc_count_ones_ui(val), \
char(*)[8]: stdc_count_ones_ull(val))
#define stdc_has_single_bit(val) _Generic((char(*)[sizeof (val)]){ 0 }, \
char(*)[1]: stdc_has_single_bit_uc(val), \
char(*)[2]: stdc_has_single_bit_us(val), \
char(*)[4]: stdc_has_single_bit_ui(val), \
char(*)[8]: stdc_has_single_bit_ull(val))
#define stdc_bit_width(val) _Generic((char(*)[sizeof (val)]){ 0 }, \
char(*)[1]: stdc_bit_width_uc(val), \
char(*)[2]: stdc_bit_width_us(val), \
char(*)[4]: stdc_bit_width_ui(val), \
char(*)[8]: stdc_bit_width_ull(val))
#define stdc_bit_floor(val) _Generic((char(*)[sizeof (val)]){ 0 }, \
char(*)[1]: stdc_bit_floor_uc(val), \
char(*)[2]: stdc_bit_floor_us(val), \
char(*)[4]: stdc_bit_floor_ui(val), \
char(*)[8]: stdc_bit_floor_ull(val))
#define stdc_bit_ceil(val) _Generic((char(*)[sizeof (val)]){ 0 }, \
char(*)[1]: stdc_bit_ceil_uc(val), \
char(*)[2]: stdc_bit_ceil_us(val), \
char(*)[4]: stdc_bit_ceil_ui(val), \
char(*)[8]: stdc_bit_ceil_ull(val))
#endif
#ifdef __cplusplus
}
#endif
#endif