[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