brintos

brintos / llvm-project-archived public Read only

0
0
Text · 14.5 KiB · c5b2f09 Raw
317 lines · c
1//===-- Definition of macros to be used with stdbit functions ----------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9#ifndef __LLVM_LIBC_MACROS_STDBIT_MACROS_H10#define __LLVM_LIBC_MACROS_STDBIT_MACROS_H11 12#define __STDC_VERSION_STDBIT_H__ 202311L13#define __STDC_ENDIAN_LITTLE__ __ORDER_LITTLE_ENDIAN__14#define __STDC_ENDIAN_BIG__ __ORDER_BIG_ENDIAN__15#define __STDC_ENDIAN_NATIVE__ __BYTE_ORDER__16 17// TODO(https://github.com/llvm/llvm-project/issues/80509): support _BitInt().18#ifdef __cplusplus19inline unsigned stdc_leading_zeros(unsigned char x) {20  return stdc_leading_zeros_uc(x);21}22inline unsigned stdc_leading_zeros(unsigned short x) {23  return stdc_leading_zeros_us(x);24}25inline unsigned stdc_leading_zeros(unsigned x) {26  return stdc_leading_zeros_ui(x);27}28inline unsigned stdc_leading_zeros(unsigned long x) {29  return stdc_leading_zeros_ul(x);30}31inline unsigned stdc_leading_zeros(unsigned long long x) {32  return stdc_leading_zeros_ull(x);33}34inline unsigned stdc_leading_ones(unsigned char x) {35  return stdc_leading_ones_uc(x);36}37inline unsigned stdc_leading_ones(unsigned short x) {38  return stdc_leading_ones_us(x);39}40inline unsigned stdc_leading_ones(unsigned x) {41  return stdc_leading_ones_ui(x);42}43inline unsigned stdc_leading_ones(unsigned long x) {44  return stdc_leading_ones_ul(x);45}46inline unsigned stdc_leading_ones(unsigned long long x) {47  return stdc_leading_ones_ull(x);48}49inline unsigned stdc_trailing_zeros(unsigned char x) {50  return stdc_trailing_zeros_uc(x);51}52inline unsigned stdc_trailing_zeros(unsigned short x) {53  return stdc_trailing_zeros_us(x);54}55inline unsigned stdc_trailing_zeros(unsigned x) {56  return stdc_trailing_zeros_ui(x);57}58inline unsigned stdc_trailing_zeros(unsigned long x) {59  return stdc_trailing_zeros_ul(x);60}61inline unsigned stdc_trailing_zeros(unsigned long long x) {62  return stdc_trailing_zeros_ull(x);63}64inline unsigned stdc_trailing_ones(unsigned char x) {65  return stdc_trailing_ones_uc(x);66}67inline unsigned stdc_trailing_ones(unsigned short x) {68  return stdc_trailing_ones_us(x);69}70inline unsigned stdc_trailing_ones(unsigned x) {71  return stdc_trailing_ones_ui(x);72}73inline unsigned stdc_trailing_ones(unsigned long x) {74  return stdc_trailing_ones_ul(x);75}76inline unsigned stdc_trailing_ones(unsigned long long x) {77  return stdc_trailing_ones_ull(x);78}79inline unsigned stdc_first_leading_zero(unsigned char x) {80  return stdc_first_leading_zero_uc(x);81}82inline unsigned stdc_first_leading_zero(unsigned short x) {83  return stdc_first_leading_zero_us(x);84}85inline unsigned stdc_first_leading_zero(unsigned x) {86  return stdc_first_leading_zero_ui(x);87}88inline unsigned stdc_first_leading_zero(unsigned long x) {89  return stdc_first_leading_zero_ul(x);90}91inline unsigned stdc_first_leading_zero(unsigned long long x) {92  return stdc_first_leading_zero_ull(x);93}94inline unsigned stdc_first_leading_one(unsigned char x) {95  return stdc_first_leading_one_uc(x);96}97inline unsigned stdc_first_leading_one(unsigned short x) {98  return stdc_first_leading_one_us(x);99}100inline unsigned stdc_first_leading_one(unsigned x) {101  return stdc_first_leading_one_ui(x);102}103inline unsigned stdc_first_leading_one(unsigned long x) {104  return stdc_first_leading_one_ul(x);105}106inline unsigned stdc_first_leading_one(unsigned long long x) {107  return stdc_first_leading_one_ull(x);108}109inline unsigned stdc_first_trailing_zero(unsigned char x) {110  return stdc_first_trailing_zero_uc(x);111}112inline unsigned stdc_first_trailing_zero(unsigned short x) {113  return stdc_first_trailing_zero_us(x);114}115inline unsigned stdc_first_trailing_zero(unsigned x) {116  return stdc_first_trailing_zero_ui(x);117}118inline unsigned stdc_first_trailing_zero(unsigned long x) {119  return stdc_first_trailing_zero_ul(x);120}121inline unsigned stdc_first_trailing_zero(unsigned long long x) {122  return stdc_first_trailing_zero_ull(x);123}124inline unsigned stdc_first_trailing_one(unsigned char x) {125  return stdc_first_trailing_one_uc(x);126}127inline unsigned stdc_first_trailing_one(unsigned short x) {128  return stdc_first_trailing_one_us(x);129}130inline unsigned stdc_first_trailing_one(unsigned x) {131  return stdc_first_trailing_one_ui(x);132}133inline unsigned stdc_first_trailing_one(unsigned long x) {134  return stdc_first_trailing_one_ul(x);135}136inline unsigned stdc_first_trailing_one(unsigned long long x) {137  return stdc_first_trailing_one_ull(x);138}139inline unsigned stdc_count_zeros(unsigned char x) {140  return stdc_count_zeros_uc(x);141}142inline unsigned stdc_count_zeros(unsigned short x) {143  return stdc_count_zeros_us(x);144}145inline unsigned stdc_count_zeros(unsigned x) { return stdc_count_zeros_ui(x); }146inline unsigned stdc_count_zeros(unsigned long x) {147  return stdc_count_zeros_ul(x);148}149inline unsigned stdc_count_zeros(unsigned long long x) {150  return stdc_count_zeros_ull(x);151}152inline unsigned stdc_count_ones(unsigned char x) {153  return stdc_count_ones_uc(x);154}155inline unsigned stdc_count_ones(unsigned short x) {156  return stdc_count_ones_us(x);157}158inline unsigned stdc_count_ones(unsigned x) { return stdc_count_ones_ui(x); }159inline unsigned stdc_count_ones(unsigned long x) {160  return stdc_count_ones_ul(x);161}162inline unsigned stdc_count_ones(unsigned long long x) {163  return stdc_count_ones_ull(x);164}165inline bool stdc_has_single_bit(unsigned char x) {166  return stdc_has_single_bit_uc(x);167}168inline bool stdc_has_single_bit(unsigned short x) {169  return stdc_has_single_bit_us(x);170}171inline bool stdc_has_single_bit(unsigned x) {172  return stdc_has_single_bit_ui(x);173}174inline bool stdc_has_single_bit(unsigned long x) {175  return stdc_has_single_bit_ul(x);176}177inline bool stdc_has_single_bit(unsigned long long x) {178  return stdc_has_single_bit_ull(x);179}180inline unsigned stdc_bit_width(unsigned char x) { return stdc_bit_width_uc(x); }181inline unsigned stdc_bit_width(unsigned short x) {182  return stdc_bit_width_us(x);183}184inline unsigned stdc_bit_width(unsigned x) { return stdc_bit_width_ui(x); }185inline unsigned stdc_bit_width(unsigned long x) { return stdc_bit_width_ul(x); }186inline unsigned stdc_bit_width(unsigned long long x) {187  return stdc_bit_width_ull(x);188}189inline unsigned char stdc_bit_floor(unsigned char x) {190  return stdc_bit_floor_uc(x);191}192inline unsigned short stdc_bit_floor(unsigned short x) {193  return stdc_bit_floor_us(x);194}195inline unsigned stdc_bit_floor(unsigned x) { return stdc_bit_floor_ui(x); }196inline unsigned long stdc_bit_floor(unsigned long x) {197  return stdc_bit_floor_ul(x);198}199inline unsigned long long stdc_bit_floor(unsigned long long x) {200  return stdc_bit_floor_ull(x);201}202inline unsigned char stdc_bit_ceil(unsigned char x) {203  return stdc_bit_ceil_uc(x);204}205inline unsigned short stdc_bit_ceil(unsigned short x) {206  return stdc_bit_ceil_us(x);207}208inline unsigned stdc_bit_ceil(unsigned x) { return stdc_bit_ceil_ui(x); }209inline unsigned long stdc_bit_ceil(unsigned long x) {210  return stdc_bit_ceil_ul(x);211}212inline unsigned long long stdc_bit_ceil(unsigned long long x) {213  return stdc_bit_ceil_ull(x);214}215#else216#define stdc_leading_zeros(x)                                                  \217  _Generic((x),                                                                \218      unsigned char: stdc_leading_zeros_uc,                                    \219      unsigned short: stdc_leading_zeros_us,                                   \220      unsigned: stdc_leading_zeros_ui,                                         \221      unsigned long: stdc_leading_zeros_ul,                                    \222      unsigned long long: stdc_leading_zeros_ull)(x)223#define stdc_leading_ones(x)                                                   \224  _Generic((x),                                                                \225      unsigned char: stdc_leading_ones_uc,                                     \226      unsigned short: stdc_leading_ones_us,                                    \227      unsigned: stdc_leading_ones_ui,                                          \228      unsigned long: stdc_leading_ones_ul,                                     \229      unsigned long long: stdc_leading_ones_ull)(x)230#define stdc_trailing_zeros(x)                                                 \231  _Generic((x),                                                                \232      unsigned char: stdc_trailing_zeros_uc,                                   \233      unsigned short: stdc_trailing_zeros_us,                                  \234      unsigned: stdc_trailing_zeros_ui,                                        \235      unsigned long: stdc_trailing_zeros_ul,                                   \236      unsigned long long: stdc_trailing_zeros_ull)(x)237#define stdc_trailing_ones(x)                                                  \238  _Generic((x),                                                                \239      unsigned char: stdc_trailing_ones_uc,                                    \240      unsigned short: stdc_trailing_ones_us,                                   \241      unsigned: stdc_trailing_ones_ui,                                         \242      unsigned long: stdc_trailing_ones_ul,                                    \243      unsigned long long: stdc_trailing_ones_ull)(x)244#define stdc_first_leading_zero(x)                                             \245  _Generic((x),                                                                \246      unsigned char: stdc_first_leading_zero_uc,                               \247      unsigned short: stdc_first_leading_zero_us,                              \248      unsigned: stdc_first_leading_zero_ui,                                    \249      unsigned long: stdc_first_leading_zero_ul,                               \250      unsigned long long: stdc_first_leading_zero_ull)(x)251#define stdc_first_leading_one(x)                                              \252  _Generic((x),                                                                \253      unsigned char: stdc_first_leading_one_uc,                                \254      unsigned short: stdc_first_leading_one_us,                               \255      unsigned: stdc_first_leading_one_ui,                                     \256      unsigned long: stdc_first_leading_one_ul,                                \257      unsigned long long: stdc_first_leading_one_ull)(x)258#define stdc_first_trailing_zero(x)                                            \259  _Generic((x),                                                                \260      unsigned char: stdc_first_trailing_zero_uc,                              \261      unsigned short: stdc_first_trailing_zero_us,                             \262      unsigned: stdc_first_trailing_zero_ui,                                   \263      unsigned long: stdc_first_trailing_zero_ul,                              \264      unsigned long long: stdc_first_trailing_zero_ull)(x)265#define stdc_first_trailing_one(x)                                             \266  _Generic((x),                                                                \267      unsigned char: stdc_first_trailing_one_uc,                               \268      unsigned short: stdc_first_trailing_one_us,                              \269      unsigned: stdc_first_trailing_one_ui,                                    \270      unsigned long: stdc_first_trailing_one_ul,                               \271      unsigned long long: stdc_first_trailing_one_ull)(x)272#define stdc_count_zeros(x)                                                    \273  _Generic((x),                                                                \274      unsigned char: stdc_count_zeros_uc,                                      \275      unsigned short: stdc_count_zeros_us,                                     \276      unsigned: stdc_count_zeros_ui,                                           \277      unsigned long: stdc_count_zeros_ul,                                      \278      unsigned long long: stdc_count_zeros_ull)(x)279#define stdc_count_ones(x)                                                     \280  _Generic((x),                                                                \281      unsigned char: stdc_count_ones_uc,                                       \282      unsigned short: stdc_count_ones_us,                                      \283      unsigned: stdc_count_ones_ui,                                            \284      unsigned long: stdc_count_ones_ul,                                       \285      unsigned long long: stdc_count_ones_ull)(x)286#define stdc_has_single_bit(x)                                                 \287  _Generic((x),                                                                \288      unsigned char: stdc_has_single_bit_uc,                                   \289      unsigned short: stdc_has_single_bit_us,                                  \290      unsigned: stdc_has_single_bit_ui,                                        \291      unsigned long: stdc_has_single_bit_ul,                                   \292      unsigned long long: stdc_has_single_bit_ull)(x)293#define stdc_bit_width(x)                                                      \294  _Generic((x),                                                                \295      unsigned char: stdc_bit_width_uc,                                        \296      unsigned short: stdc_bit_width_us,                                       \297      unsigned: stdc_bit_width_ui,                                             \298      unsigned long: stdc_bit_width_ul,                                        \299      unsigned long long: stdc_bit_width_ull)(x)300#define stdc_bit_floor(x)                                                      \301  _Generic((x),                                                                \302      unsigned char: stdc_bit_floor_uc,                                        \303      unsigned short: stdc_bit_floor_us,                                       \304      unsigned: stdc_bit_floor_ui,                                             \305      unsigned long: stdc_bit_floor_ul,                                        \306      unsigned long long: stdc_bit_floor_ull)(x)307#define stdc_bit_ceil(x)                                                       \308  _Generic((x),                                                                \309      unsigned char: stdc_bit_ceil_uc,                                         \310      unsigned short: stdc_bit_ceil_us,                                        \311      unsigned: stdc_bit_ceil_ui,                                              \312      unsigned long: stdc_bit_ceil_ul,                                         \313      unsigned long long: stdc_bit_ceil_ull)(x)314#endif // __cplusplus315 316#endif // __LLVM_LIBC_MACROS_STDBIT_MACROS_H317