[libc-commits] [libc] [libc][stdbit] implement stdc_trailing_ones (C23) (PR #80459)

Nick Desaulniers via libc-commits libc-commits at lists.llvm.org
Fri Feb 2 15:16:58 PST 2024


================
@@ -1,112 +1,23 @@
 add_custom_target(libc-stdbit-tests)
 
-add_libc_test(
-  stdc_leading_zeros_uc_test
-  SUITE
-    libc-stdbit-tests
-  SRCS
-    stdc_leading_zeros_uc_test.cpp
-  DEPENDS
-    libc.src.__support.CPP.limits
-    libc.src.stdbit.stdc_leading_zeros_uc
-)
-
-add_libc_test(
-  stdc_leading_zeros_us_test
-  SUITE
-    libc-stdbit-tests
-  SRCS
-    stdc_leading_zeros_us_test.cpp
-  DEPENDS
-    libc.src.__support.CPP.limits
-    libc.src.stdbit.stdc_leading_zeros_us
-)
-
-add_libc_test(
-  stdc_leading_zeros_ui_test
-  SUITE
-    libc-stdbit-tests
-  SRCS
-    stdc_leading_zeros_ui_test.cpp
-  DEPENDS
-    libc.src.__support.CPP.limits
-    libc.src.stdbit.stdc_leading_zeros_ui
-)
-
-add_libc_test(
-  stdc_leading_zeros_ul_test
-  SUITE
-    libc-stdbit-tests
-  SRCS
-    stdc_leading_zeros_ul_test.cpp
-  DEPENDS
-    libc.src.__support.CPP.limits
-    libc.src.stdbit.stdc_leading_zeros_ul
-)
-
-add_libc_test(
-  stdc_leading_zeros_ull_test
-  SUITE
-    libc-stdbit-tests
-  SRCS
-    stdc_leading_zeros_ull_test.cpp
-  DEPENDS
-    libc.src.__support.CPP.limits
-    libc.src.stdbit.stdc_leading_zeros_ull
-)
-
-add_libc_test(
-  stdc_leading_ones_uc_test
-  SUITE
-    libc-stdbit-tests
-  SRCS
-    stdc_leading_ones_uc_test.cpp
-  DEPENDS
-    libc.src.__support.CPP.limits
-    libc.src.stdbit.stdc_leading_ones_uc
-)
-
-add_libc_test(
-  stdc_leading_ones_us_test
-  SUITE
-    libc-stdbit-tests
-  SRCS
-    stdc_leading_ones_us_test.cpp
-  DEPENDS
-    libc.src.__support.CPP.limits
-    libc.src.stdbit.stdc_leading_ones_us
-)
-
-add_libc_test(
-  stdc_leading_ones_ui_test
-  SUITE
-    libc-stdbit-tests
-  SRCS
-    stdc_leading_ones_ui_test.cpp
-  DEPENDS
-    libc.src.__support.CPP.limits
-    libc.src.stdbit.stdc_leading_ones_ui
-)
-
-add_libc_test(
-  stdc_leading_ones_ul_test
-  SUITE
-    libc-stdbit-tests
-  SRCS
-    stdc_leading_ones_ul_test.cpp
-  DEPENDS
-    libc.src.__support.CPP.limits
-    libc.src.stdbit.stdc_leading_ones_ul
-)
-
-add_libc_test(
-  stdc_leading_ones_ull_test
-  SUITE
-    libc-stdbit-tests
-  SRCS
-    stdc_leading_ones_ull_test.cpp
-  DEPENDS
-    libc.src.__support.CPP.limits
-    libc.src.stdbit.stdc_leading_ones_ull
-)
-
+list(APPEND prefixes
+  leading_zeros
+  leading_ones
+  trailing_zeros
+  trailing_ones
+)
+list(APPEND suffixes c s i l ll)
+foreach(prefix IN LISTS prefixes)
+  foreach(suffix IN LISTS suffixes)
----------------
nickdesaulniers wrote:

Consider making this point in https://github.com/llvm/llvm-project/pull/80344 (the child PR this PR is based off of; sorry for stacking commits but this was more obvious in phabricator than github PRs).

The list of "suffixes" is set, but "prefixes" will grow to:
- leading_zeros
- leading_ones
- trailing_zeros
- trailing_ones
- first_leading_zero
- first_leading_one
- first_trailing_zero
- first_trailing_one
- count_zeros
- count_ones
- has_single_bit
- bit_width
- bit_floor
- bit_ceil

as I finish implementing stdbit.h.  Personal preference, but I prefer to add new individual lines for each of these to minimize the impact on `git blame`, as opposed to making one line excessively longer through multiple commits (which I believe is what you're suggesting).  I don't feel strongly about it, but that's an insight into *why* I did it that way. WDYT?

https://github.com/llvm/llvm-project/pull/80459


More information about the libc-commits mailing list