[libc-commits] [libc] e390e6b - [libc][stdfix] Fix idiv* doc table, rename idivfx test helpers and remove duplicate bitsuk source (#206729)

via libc-commits libc-commits at lists.llvm.org
Tue Jul 7 08:21:41 PDT 2026


Author: sohail
Date: 2026-07-07T11:21:36-04:00
New Revision: e390e6b7a64353c72dbe1ff3f4bd3382412daca5

URL: https://github.com/llvm/llvm-project/commit/e390e6b7a64353c72dbe1ff3f4bd3382412daca5
DIFF: https://github.com/llvm/llvm-project/commit/e390e6b7a64353c72dbe1ff3f4bd3382412daca5.diff

LOG: [libc][stdfix] Fix idiv* doc table, rename idivfx test helpers and remove duplicate bitsuk source (#206729)

Two small cleanups in libc/src/stdfix.

1. `idiv*` in `stdfix.rst` was marked as implemented for all 12 type
variants but only the 8 non-short width variants (ur, r, ulr, lr, uk, k,
ulk, lk) exist in the directory and are built. Updated the table to
match.
2. Removed `bitusk.cpp` which is an orphaned duplicate of `bitsuk.cpp`
with a typo in the file name. It isn't referenced in the CMakeLists.txt
and has no corresponding .h file.
3. Rename the idivfx test header and helpers.

Added: 
    libc/test/src/stdfix/IdivFxTest.h

Modified: 
    libc/docs/headers/stdfix.rst
    libc/test/src/stdfix/CMakeLists.txt
    libc/test/src/stdfix/idivk_test.cpp
    libc/test/src/stdfix/idivlk_test.cpp
    libc/test/src/stdfix/idivlr_test.cpp
    libc/test/src/stdfix/idivr_test.cpp
    libc/test/src/stdfix/idivuk_test.cpp
    libc/test/src/stdfix/idivulk_test.cpp
    libc/test/src/stdfix/idivulr_test.cpp
    libc/test/src/stdfix/idivur_test.cpp

Removed: 
    libc/src/stdfix/bitusk.cpp
    libc/test/src/stdfix/IdivTest.h


################################################################################
diff  --git a/libc/docs/headers/stdfix.rst b/libc/docs/headers/stdfix.rst
index 76ac7e7b71c95..c3ac4d97650f4 100644
--- a/libc/docs/headers/stdfix.rst
+++ b/libc/docs/headers/stdfix.rst
@@ -75,7 +75,7 @@ The following functions are included in the ISO/IEC TR 18037:2008 standard.
 +---------------+----------------+-------------+---------------+------------+----------------+-------------+----------------+-------------+---------------+------------+----------------+-------------+
 | divi\*        |                |             |               |            |                |             |                |             |               |            |                |             |
 +---------------+----------------+-------------+---------------+------------+----------------+-------------+----------------+-------------+---------------+------------+----------------+-------------+
-| idiv\*        | |check|        | |check|     | |check|       | |check|    | |check|        | |check|     | |check|        | |check|     | |check|       | |check|    | |check|        | |check|     |
+| idiv\*        |                |             | |check|       | |check|    | |check|        | |check|     |                |             | |check|       | |check|    | |check|        | |check|     |
 +---------------+----------------+-------------+---------------+------------+----------------+-------------+----------------+-------------+---------------+------------+----------------+-------------+
 | muli          |                |             |               |            |                |             |                |             |               |            |                |             |
 +---------------+----------------+-------------+---------------+------------+----------------+-------------+----------------+-------------+---------------+------------+----------------+-------------+

diff  --git a/libc/src/stdfix/bitusk.cpp b/libc/src/stdfix/bitusk.cpp
deleted file mode 100755
index 8309927f9ed82..0000000000000
--- a/libc/src/stdfix/bitusk.cpp
+++ /dev/null
@@ -1,22 +0,0 @@
-//===-- Implementation for bitsuk function --------------------------------===//
-//
-// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
-// See https://llvm.org/LICENSE.txt for license information.
-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-//
-//===----------------------------------------------------------------------===//
-
-#include "bitsuk.h"
-#include "include/llvm-libc-macros/stdfix-macros.h" // unsigned accum
-#include "include/llvm-libc-types/uint_uk_t.h"
-#include "src/__support/common.h"                   // LLVM_LIBC_FUNCTION
-#include "src/__support/fixed_point/fx_bits.h"      // fixed_point
-#include "src/__support/macros/config.h"            // LIBC_NAMESPACE_DECL
-
-namespace LIBC_NAMESPACE_DECL {
-
-LLVM_LIBC_FUNCTION(uint_uk_t, bitsuk, (unsigned accum f)) {
-  return fixed_point::bitsfx<unsigned accum, uint_uk_t>(f);
-}
-
-} // namespace LIBC_NAMESPACE_DECL

diff  --git a/libc/test/src/stdfix/CMakeLists.txt b/libc/test/src/stdfix/CMakeLists.txt
index 04bedc3e00fe2..b8fdb5845b6a8 100644
--- a/libc/test/src/stdfix/CMakeLists.txt
+++ b/libc/test/src/stdfix/CMakeLists.txt
@@ -121,7 +121,7 @@ foreach(suffix IN ITEMS r lr k lk ur ulr uk ulk)
     SUITE
       libc-stdfix-tests
     HDRS
-      IdivTest.h
+      IdivFxTest.h
     SRCS
       idiv${suffix}_test.cpp
     DEPENDS

diff  --git a/libc/test/src/stdfix/IdivTest.h b/libc/test/src/stdfix/IdivFxTest.h
similarity index 88%
rename from libc/test/src/stdfix/IdivTest.h
rename to libc/test/src/stdfix/IdivFxTest.h
index 28c39f4f5ef86..1fe6e5706b765 100644
--- a/libc/test/src/stdfix/IdivTest.h
+++ b/libc/test/src/stdfix/IdivFxTest.h
@@ -14,7 +14,7 @@
 #include "hdr/signal_macros.h"
 
 template <typename T, typename XType>
-class IdivTest : public LIBC_NAMESPACE::testing::Test {
+class IdivFxTest : public LIBC_NAMESPACE::testing::Test {
 
   using FXRep = LIBC_NAMESPACE::fixed_point::FXRep<T>;
 
@@ -25,9 +25,9 @@ class IdivTest : public LIBC_NAMESPACE::testing::Test {
   static constexpr T one_fourth = FXRep::ONE_FOURTH();
 
 public:
-  typedef XType (*IdivFunc)(T, T);
+  typedef XType (*IdivFxFunc)(T, T);
 
-  void testSpecialNumbers(IdivFunc func) {
+  void testSpecialNumbers(IdivFxFunc func) {
     constexpr bool is_signed = (FXRep::SIGN_LEN > 0);
     constexpr bool has_integral = (FXRep::INTEGRAL_LEN > 0);
 
@@ -61,7 +61,7 @@ class IdivTest : public LIBC_NAMESPACE::testing::Test {
     }
   }
 
-  void testInvalidNumbers(IdivFunc func) {
+  void testInvalidNumbers(IdivFxFunc func) {
     constexpr bool has_integral = (FXRep::INTEGRAL_LEN > 0);
 
     EXPECT_DEATH([func] { func(0.5, 0.0); }, WITH_SIGNAL(-1));
@@ -72,8 +72,8 @@ class IdivTest : public LIBC_NAMESPACE::testing::Test {
 };
 
 #if defined(LIBC_ADD_NULL_CHECKS)
-#define LIST_IDIV_TESTS(Name, T, XType, func)                                  \
-  using LlvmLibcIdiv##Name##Test = IdivTest<T, XType>;                         \
+#define LIST_IDIVFX_TESTS(Name, T, XType, func)                                \
+  using LlvmLibcIdiv##Name##Test = IdivFxTest<T, XType>;                       \
   TEST_F(LlvmLibcIdiv##Name##Test, InvalidNumbers) {                           \
     testInvalidNumbers(&func);                                                 \
   }                                                                            \
@@ -82,8 +82,8 @@ class IdivTest : public LIBC_NAMESPACE::testing::Test {
   }                                                                            \
   static_assert(true, "Require semicolon.")
 #else
-#define LIST_IDIV_TESTS(Name, T, XType, func)                                  \
-  using LlvmLibcIdiv##Name##Test = IdivTest<T, XType>;                         \
+#define LIST_IDIVFX_TESTS(Name, T, XType, func)                                \
+  using LlvmLibcIdiv##Name##Test = IdivFxTest<T, XType>;                       \
   TEST_F(LlvmLibcIdiv##Name##Test, SpecialNumbers) {                           \
     testSpecialNumbers(&func);                                                 \
   }                                                                            \

diff  --git a/libc/test/src/stdfix/idivk_test.cpp b/libc/test/src/stdfix/idivk_test.cpp
index b10a43ed6135a..a0ac2810f74bb 100644
--- a/libc/test/src/stdfix/idivk_test.cpp
+++ b/libc/test/src/stdfix/idivk_test.cpp
@@ -6,9 +6,9 @@
 //
 //===----------------------------------------------------------------------===//
 
-#include "IdivTest.h"
+#include "IdivFxTest.h"
 
 #include "llvm-libc-macros/stdfix-macros.h" // accum
 #include "src/stdfix/idivk.h"
 
-LIST_IDIV_TESTS(k, accum, int, LIBC_NAMESPACE::idivk);
+LIST_IDIVFX_TESTS(k, accum, int, LIBC_NAMESPACE::idivk);

diff  --git a/libc/test/src/stdfix/idivlk_test.cpp b/libc/test/src/stdfix/idivlk_test.cpp
index dcd4ccbcc4a78..8447e55ed1884 100644
--- a/libc/test/src/stdfix/idivlk_test.cpp
+++ b/libc/test/src/stdfix/idivlk_test.cpp
@@ -6,9 +6,9 @@
 //
 //===----------------------------------------------------------------------===//
 
-#include "IdivTest.h"
+#include "IdivFxTest.h"
 
 #include "llvm-libc-macros/stdfix-macros.h" // long accum
 #include "src/stdfix/idivlk.h"
 
-LIST_IDIV_TESTS(lk, long accum, long int, LIBC_NAMESPACE::idivlk);
+LIST_IDIVFX_TESTS(lk, long accum, long int, LIBC_NAMESPACE::idivlk);

diff  --git a/libc/test/src/stdfix/idivlr_test.cpp b/libc/test/src/stdfix/idivlr_test.cpp
index 0fdb1e3a19e8f..0943d6bc609c8 100644
--- a/libc/test/src/stdfix/idivlr_test.cpp
+++ b/libc/test/src/stdfix/idivlr_test.cpp
@@ -6,9 +6,9 @@
 //
 //===----------------------------------------------------------------------===//
 
-#include "IdivTest.h"
+#include "IdivFxTest.h"
 
 #include "llvm-libc-macros/stdfix-macros.h" // long fract
 #include "src/stdfix/idivlr.h"
 
-LIST_IDIV_TESTS(lr, long fract, long int, LIBC_NAMESPACE::idivlr);
+LIST_IDIVFX_TESTS(lr, long fract, long int, LIBC_NAMESPACE::idivlr);

diff  --git a/libc/test/src/stdfix/idivr_test.cpp b/libc/test/src/stdfix/idivr_test.cpp
index 82bec5c7be069..4e8491d8434eb 100644
--- a/libc/test/src/stdfix/idivr_test.cpp
+++ b/libc/test/src/stdfix/idivr_test.cpp
@@ -6,9 +6,9 @@
 //
 //===----------------------------------------------------------------------===//
 
-#include "IdivTest.h"
+#include "IdivFxTest.h"
 
 #include "llvm-libc-macros/stdfix-macros.h" // fract
 #include "src/stdfix/idivr.h"
 
-LIST_IDIV_TESTS(r, fract, int, LIBC_NAMESPACE::idivr);
+LIST_IDIVFX_TESTS(r, fract, int, LIBC_NAMESPACE::idivr);

diff  --git a/libc/test/src/stdfix/idivuk_test.cpp b/libc/test/src/stdfix/idivuk_test.cpp
index 2bfd93da3ed4a..4830e3444c64d 100644
--- a/libc/test/src/stdfix/idivuk_test.cpp
+++ b/libc/test/src/stdfix/idivuk_test.cpp
@@ -6,9 +6,9 @@
 //
 //===----------------------------------------------------------------------===//
 
-#include "IdivTest.h"
+#include "IdivFxTest.h"
 
 #include "llvm-libc-macros/stdfix-macros.h" // unsigned accum
 #include "src/stdfix/idivuk.h"
 
-LIST_IDIV_TESTS(uk, unsigned accum, unsigned int, LIBC_NAMESPACE::idivuk);
+LIST_IDIVFX_TESTS(uk, unsigned accum, unsigned int, LIBC_NAMESPACE::idivuk);

diff  --git a/libc/test/src/stdfix/idivulk_test.cpp b/libc/test/src/stdfix/idivulk_test.cpp
index 31eb96114a0ce..a6d4bc27f5687 100644
--- a/libc/test/src/stdfix/idivulk_test.cpp
+++ b/libc/test/src/stdfix/idivulk_test.cpp
@@ -6,10 +6,10 @@
 //
 //===----------------------------------------------------------------------===//
 
-#include "IdivTest.h"
+#include "IdivFxTest.h"
 
 #include "llvm-libc-macros/stdfix-macros.h" // unsigned long accum
 #include "src/stdfix/idivulk.h"
 
-LIST_IDIV_TESTS(ulk, unsigned long accum, unsigned long int,
-                LIBC_NAMESPACE::idivulk);
+LIST_IDIVFX_TESTS(ulk, unsigned long accum, unsigned long int,
+                  LIBC_NAMESPACE::idivulk);

diff  --git a/libc/test/src/stdfix/idivulr_test.cpp b/libc/test/src/stdfix/idivulr_test.cpp
index 6f43df149a127..b34a65ebc8638 100644
--- a/libc/test/src/stdfix/idivulr_test.cpp
+++ b/libc/test/src/stdfix/idivulr_test.cpp
@@ -6,10 +6,10 @@
 //
 //===----------------------------------------------------------------------===//
 
-#include "IdivTest.h"
+#include "IdivFxTest.h"
 
 #include "llvm-libc-macros/stdfix-macros.h" // unsigned long fract
 #include "src/stdfix/idivulr.h"
 
-LIST_IDIV_TESTS(ulr, unsigned long fract, unsigned long int,
-                LIBC_NAMESPACE::idivulr);
+LIST_IDIVFX_TESTS(ulr, unsigned long fract, unsigned long int,
+                  LIBC_NAMESPACE::idivulr);

diff  --git a/libc/test/src/stdfix/idivur_test.cpp b/libc/test/src/stdfix/idivur_test.cpp
index c2d2f9caf19d9..12280ea3df2a9 100644
--- a/libc/test/src/stdfix/idivur_test.cpp
+++ b/libc/test/src/stdfix/idivur_test.cpp
@@ -6,9 +6,9 @@
 //
 //===----------------------------------------------------------------------===//
 
-#include "IdivTest.h"
+#include "IdivFxTest.h"
 
 #include "llvm-libc-macros/stdfix-macros.h" // unsigned fract
 #include "src/stdfix/idivur.h"
 
-LIST_IDIV_TESTS(ur, unsigned fract, unsigned int, LIBC_NAMESPACE::idivur);
+LIST_IDIVFX_TESTS(ur, unsigned fract, unsigned int, LIBC_NAMESPACE::idivur);


        


More information about the libc-commits mailing list