[libc-commits] [libc] 9ac66f0 - [libc][cmake] split fputil into individual targets

Michael Jones via libc-commits libc-commits at lists.llvm.org
Wed Aug 31 10:45:02 PDT 2022


Author: Michael Jones
Date: 2022-08-31T10:44:52-07:00
New Revision: 9ac66f0650dfb7d7bca733e4b68bbb6be455faab

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

LOG: [libc][cmake] split fputil into individual targets

The libc.src.__support.FPUtil.fputil target encompassed many unrelated
files, and provided a lot of hidden dependencies. This patch splits out
all of these files into component parts and cleans up the cmake files
that used them. It does not touch any source files for simplicity, but
there may be changes made to them in future patches.

Reviewed By: lntue

Differential Revision: https://reviews.llvm.org/D132980

Added: 
    

Modified: 
    libc/fuzzing/math/CMakeLists.txt
    libc/src/__support/CMakeLists.txt
    libc/src/__support/FPUtil/CMakeLists.txt
    libc/src/fenv/CMakeLists.txt
    libc/src/math/CMakeLists.txt
    libc/src/math/generic/CMakeLists.txt
    libc/src/stdio/printf_core/CMakeLists.txt
    libc/test/src/fenv/CMakeLists.txt
    libc/test/src/math/CMakeLists.txt
    libc/test/src/math/differential_testing/CMakeLists.txt
    libc/test/src/math/exhaustive/CMakeLists.txt
    libc/test/src/math/generic/CMakeLists.txt
    libc/test/src/stdio/CMakeLists.txt
    libc/test/utils/FPUtil/CMakeLists.txt
    libc/utils/MPFRWrapper/CMakeLists.txt
    libc/utils/UnitTest/CMakeLists.txt

Removed: 
    


################################################################################
diff  --git a/libc/fuzzing/math/CMakeLists.txt b/libc/fuzzing/math/CMakeLists.txt
index 8027cc121efaa..86c864083d206 100644
--- a/libc/fuzzing/math/CMakeLists.txt
+++ b/libc/fuzzing/math/CMakeLists.txt
@@ -45,7 +45,7 @@ add_libc_fuzzer(
     libc.src.math.trunc
     libc.src.math.truncf
     libc.src.math.truncl
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
     libc.src.__support.CPP.type_traits
 )
 

diff  --git a/libc/src/__support/CMakeLists.txt b/libc/src/__support/CMakeLists.txt
index ee6df4bc2b19b..9f2f1f4a76269 100644
--- a/libc/src/__support/CMakeLists.txt
+++ b/libc/src/__support/CMakeLists.txt
@@ -61,7 +61,8 @@ add_header_library(
     .uint128
     libc.include.errno
     libc.src.__support.CPP.limits
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.builtin_wrappers
     libc.src.errno.errno
 )
 

diff  --git a/libc/src/__support/FPUtil/CMakeLists.txt b/libc/src/__support/FPUtil/CMakeLists.txt
index f716b97aaea0c..9a725f6021ac1 100644
--- a/libc/src/__support/FPUtil/CMakeLists.txt
+++ b/libc/src/__support/FPUtil/CMakeLists.txt
@@ -1,28 +1,128 @@
-#TODO(michaelrj): separate the fputil library into individual targets.
 add_header_library(
-  fputil
+  builtin_wrappers
+  HDRS
+    builtin_wrappers.h
+)
+
+add_header_library(
+  fenv_impl
   HDRS
     FEnvImpl.h
-    BasicOperations.h
-    DivisionAndRemainderOperations.h
+  DEPENDS
+    libc.include.fenv
+    libc.src.__support.common
+)
+
+add_header_library(
+  platform_defs
+  HDRS
+    PlatformDefs.h
+  DEPENDS
+    libc.src.__support.common
+)
+
+add_header_library(
+  float_properties
+  HDRS
     FloatProperties.h
+  DEPENDS
+    .platform_defs
+    libc.src.__support.uint128
+)
+
+add_header_library(
+  fp_bits
+  HDRS
     FPBits.h
-    BasicOperations.h
-    ManipulationFunctions.h
+  DEPENDS
+    .platform_defs
+    .float_properties
+    .builtin_wrappers
+    libc.src.__support.CPP.bit
+    libc.src.__support.CPP.type_traits
+    libc.src.__support.common
+)
+
+add_header_library(
+  nearest_integer_operations
+  HDRS
     NearestIntegerOperations.h
-    NormalFloat.h
-    PlatformDefs.h
-    builtin_wrappers.h
-    except_value_utils.h
   DEPENDS
+    .fp_bits
+    .fenv_impl
+    libc.src.__support.CPP.type_traits
+    libc.include.math
     libc.include.errno
-    libc.include.fenv
+    libc.src.errno.errno
+)
+
+add_header_library(
+  normal_float
+  HDRS
+    NormalFloat.h
+  DEPENDS
+    .fp_bits
+    libc.src.__support.CPP.type_traits
+)
+
+add_header_library(
+  manipulation_functions
+  HDRS
+    ManipulationFunctions.h
+  DEPENDS
+    .fp_bits
+    .nearest_integer_operations
+    .normal_float
+    .platform_defs
+    libc.src.__support.CPP.bit
+    libc.src.__support.CPP.type_traits
     libc.include.math
-    libc.src.__support.common
+    libc.include.errno
+    libc.src.errno.errno
+)
+
+add_header_library(
+  basic_operations
+  HDRS
+    BasicOperations.h
+  DEPENDS
+    .fp_bits
+    libc.src.__support.CPP.type_traits
+)
+
+add_header_library(
+  division_and_remainder_operations
+  HDRS
+    DivisionAndRemainderOperations.h
+  DEPENDS
+    .fp_bits
+    .manipulation_functions
+    .normal_float
+    libc.src.__support.CPP.type_traits
+)
+
+add_header_library(
+  except_value_utils
+  HDRS
+    except_value_utils.h
+  DEPENDS
+    .fp_bits
+    .fenv_impl
+)
+
+
+add_header_library(
+  hypot
+  HDRS
+    Hypot.h
+  DEPENDS
+    .basic_operations
+    .fenv_impl
+    .fp_bits
+    .builtin_wrappers
     libc.src.__support.CPP.bit
     libc.src.__support.CPP.type_traits
     libc.src.__support.uint128
-    libc.src.errno.errno
 )
 
 add_header_library(
@@ -30,7 +130,8 @@ add_header_library(
   HDRS
     XFloat.h
   DEPENDS
-    .fputil #FPBits and NormalFloat
+    .fp_bits
+    .normal_float
     libc.src.__support.uint
 )
 
@@ -39,7 +140,7 @@ add_header_library(
   HDRS
     sqrt.h
   DEPENDS
-    .fputil
+    libc.src.__support.common
     libc.src.__support.FPUtil.generic.sqrt
 )
 
@@ -48,7 +149,8 @@ add_header_library(
   HDRS
     FMA.h
   DEPENDS
-    .fputil
+    libc.src.__support.common
+    libc.src.__support.CPP.type_traits
     libc.src.__support.FPUtil.generic.fma
   FLAGS
     FMA_OPT

diff  --git a/libc/src/fenv/CMakeLists.txt b/libc/src/fenv/CMakeLists.txt
index 2a210c026dac3..0da539d187bfa 100644
--- a/libc/src/fenv/CMakeLists.txt
+++ b/libc/src/fenv/CMakeLists.txt
@@ -6,7 +6,7 @@ add_entrypoint_object(
     fegetround.h
   DEPENDS
     libc.include.fenv
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fenv_impl
   COMPILE_OPTIONS
     -O2
 )
@@ -19,7 +19,7 @@ add_entrypoint_object(
     fesetround.h
   DEPENDS
     libc.include.fenv
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fenv_impl
   COMPILE_OPTIONS
     -O2
 )
@@ -32,7 +32,7 @@ add_entrypoint_object(
     feclearexcept.h
   DEPENDS
     libc.include.fenv
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fenv_impl
   COMPILE_OPTIONS
     -O2
 )
@@ -45,7 +45,7 @@ add_entrypoint_object(
     feraiseexcept.h
   DEPENDS
     libc.include.fenv
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fenv_impl
   COMPILE_OPTIONS
     -O2
 )
@@ -58,7 +58,7 @@ add_entrypoint_object(
     fetestexcept.h
   DEPENDS
     libc.include.fenv
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fenv_impl
   COMPILE_OPTIONS
     -O2
 )
@@ -71,7 +71,7 @@ add_entrypoint_object(
     fegetenv.h
   DEPENDS
     libc.include.fenv
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fenv_impl
   COMPILE_OPTIONS
     -O2
 )
@@ -84,7 +84,7 @@ add_entrypoint_object(
     fesetenv.h
   DEPENDS
     libc.include.fenv
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fenv_impl
   COMPILE_OPTIONS
     -O2
 )
@@ -97,7 +97,7 @@ add_entrypoint_object(
     fegetexceptflag.h
   DEPENDS
     libc.include.fenv
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fenv_impl
   COMPILE_OPTIONS
     -O2
 )
@@ -110,7 +110,7 @@ add_entrypoint_object(
     fesetexceptflag.h
   DEPENDS
     libc.include.fenv
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fenv_impl
   COMPILE_OPTIONS
     -O2
 )
@@ -123,7 +123,7 @@ add_entrypoint_object(
     feholdexcept.h
   DEPENDS
     libc.include.fenv
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fenv_impl
   COMPILE_OPTIONS
     -O2
 )
@@ -136,7 +136,7 @@ add_entrypoint_object(
     feupdateenv.h
   DEPENDS
     libc.include.fenv
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fenv_impl
   COMPILE_OPTIONS
     -O2
 )
@@ -149,7 +149,7 @@ add_entrypoint_object(
     feenableexcept.h
   DEPENDS
     libc.include.fenv
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fenv_impl
   COMPILE_OPTIONS
     -O2
 )
@@ -162,7 +162,7 @@ add_entrypoint_object(
     fedisableexcept.h
   DEPENDS
     libc.include.fenv
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fenv_impl
   COMPILE_OPTIONS
     -O2
 )
@@ -175,7 +175,7 @@ add_entrypoint_object(
     fegetexcept.h
   DEPENDS
     libc.include.fenv
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fenv_impl
   COMPILE_OPTIONS
     -O2
 )

diff  --git a/libc/src/math/CMakeLists.txt b/libc/src/math/CMakeLists.txt
index 373e4ae0db0c5..eeb78d5aa45c1 100644
--- a/libc/src/math/CMakeLists.txt
+++ b/libc/src/math/CMakeLists.txt
@@ -47,7 +47,6 @@ add_entrypoint_object(
   HDRS
     fmaf.h
   DEPENDS
-    libc.src.__support.FPUtil.fputil
     libc.src.__support.FPUtil.fma
   COMPILE_OPTIONS
     -O3
@@ -60,7 +59,6 @@ add_entrypoint_object(
   HDRS
     fma.h
   DEPENDS
-    libc.src.__support.FPUtil.fputil
     libc.src.__support.FPUtil.fma
   COMPILE_OPTIONS
     -O3

diff  --git a/libc/src/math/generic/CMakeLists.txt b/libc/src/math/generic/CMakeLists.txt
index 42f8b1922da08..3436c504cf0b2 100644
--- a/libc/src/math/generic/CMakeLists.txt
+++ b/libc/src/math/generic/CMakeLists.txt
@@ -5,7 +5,7 @@ add_entrypoint_object(
   HDRS
     ../ceil.h
   DEPENDS
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.nearest_integer_operations
   COMPILE_OPTIONS
     -O2
 )
@@ -17,7 +17,7 @@ add_entrypoint_object(
   HDRS
     ../ceilf.h
   DEPENDS
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.nearest_integer_operations
   COMPILE_OPTIONS
     -O2
 )
@@ -29,7 +29,7 @@ add_entrypoint_object(
   HDRS
     ../ceill.h
   DEPENDS
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.nearest_integer_operations
   COMPILE_OPTIONS
     -O2
 )
@@ -52,7 +52,7 @@ add_header_library(
     range_reduction.h
     range_reduction_fma.h
   DEPENDS
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
     libc.src.__support.FPUtil.fma
     libc.src.__support.FPUtil.multiply_add
     libc.src.__support.FPUtil.nearest_integer
@@ -64,7 +64,7 @@ add_header_library(
     sincosf_utils.h
   DEPENDS
     .range_reduction
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
     libc.src.__support.FPUtil.polyeval
 )
 
@@ -78,7 +78,10 @@ add_entrypoint_object(
     .sincosf_utils
     libc.include.math
     libc.src.errno.errno
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.except_value_utils
     libc.src.__support.FPUtil.fma
     libc.src.__support.FPUtil.multiply_add
     libc.src.__support.FPUtil.polyeval
@@ -97,7 +100,9 @@ add_entrypoint_object(
     .sincosf_utils
     libc.include.math
     libc.src.errno.errno
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
     libc.src.__support.FPUtil.fma
     libc.src.__support.FPUtil.multiply_add
     libc.src.__support.FPUtil.polyeval
@@ -116,7 +121,8 @@ add_entrypoint_object(
     .sincosf_utils
     libc.include.math
     libc.src.errno.errno
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
     libc.src.__support.FPUtil.fma
     libc.src.__support.FPUtil.multiply_add
     libc.src.__support.FPUtil.polyeval
@@ -134,7 +140,10 @@ add_entrypoint_object(
     .range_reduction
     libc.include.math
     libc.src.errno.errno
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.except_value_utils
+    libc.src.__support.FPUtil.nearest_integer
     libc.src.__support.FPUtil.fma
     libc.src.__support.FPUtil.multiply_add
     libc.src.__support.FPUtil.polyeval
@@ -149,7 +158,7 @@ add_entrypoint_object(
   HDRS
     ../fabs.h
   DEPENDS
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.basic_operations
   COMPILE_OPTIONS
     -O2
 )
@@ -161,7 +170,7 @@ add_entrypoint_object(
   HDRS
     ../fabsf.h
   DEPENDS
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.basic_operations
   COMPILE_OPTIONS
     -O2
 )
@@ -173,7 +182,7 @@ add_entrypoint_object(
   HDRS
     ../fabsl.h
   DEPENDS
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.basic_operations
   COMPILE_OPTIONS
     -O2
 )
@@ -185,7 +194,7 @@ add_entrypoint_object(
   HDRS
     ../trunc.h
   DEPENDS
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.nearest_integer_operations
   COMPILE_OPTIONS
     -O2
 )
@@ -197,7 +206,7 @@ add_entrypoint_object(
   HDRS
     ../truncf.h
   DEPENDS
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.nearest_integer_operations
   COMPILE_OPTIONS
     -O2
 )
@@ -209,7 +218,7 @@ add_entrypoint_object(
   HDRS
     ../truncl.h
   DEPENDS
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.nearest_integer_operations
   COMPILE_OPTIONS
     -O2
 )
@@ -221,7 +230,7 @@ add_entrypoint_object(
   HDRS
     ../floor.h
   DEPENDS
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.nearest_integer_operations
   COMPILE_OPTIONS
     -O2
 )
@@ -233,7 +242,7 @@ add_entrypoint_object(
   HDRS
     ../floorf.h
   DEPENDS
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.nearest_integer_operations
   COMPILE_OPTIONS
     -O2
 )
@@ -245,7 +254,7 @@ add_entrypoint_object(
   HDRS
     ../floorl.h
   DEPENDS
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.nearest_integer_operations
   COMPILE_OPTIONS
     -O2
 )
@@ -257,7 +266,7 @@ add_entrypoint_object(
   HDRS
     ../round.h
   DEPENDS
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.nearest_integer_operations
   COMPILE_OPTIONS
     -O2
 )
@@ -269,7 +278,7 @@ add_entrypoint_object(
   HDRS
     ../roundf.h
   DEPENDS
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.nearest_integer_operations
   COMPILE_OPTIONS
     -O2
 )
@@ -281,7 +290,7 @@ add_entrypoint_object(
   HDRS
     ../roundl.h
   DEPENDS
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.nearest_integer_operations
   COMPILE_OPTIONS
     -O2
 )
@@ -293,7 +302,7 @@ add_entrypoint_object(
   HDRS
     ../lround.h
   DEPENDS
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.nearest_integer_operations
   COMPILE_OPTIONS
     -O2
 )
@@ -305,7 +314,7 @@ add_entrypoint_object(
   HDRS
     ../lroundf.h
   DEPENDS
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.nearest_integer_operations
   COMPILE_OPTIONS
     -O2
 )
@@ -317,7 +326,7 @@ add_entrypoint_object(
   HDRS
     ../lroundl.h
   DEPENDS
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.nearest_integer_operations
   COMPILE_OPTIONS
     -O2
 )
@@ -329,7 +338,7 @@ add_entrypoint_object(
   HDRS
     ../llround.h
   DEPENDS
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.nearest_integer_operations
   COMPILE_OPTIONS
     -O2
 )
@@ -341,7 +350,7 @@ add_entrypoint_object(
   HDRS
     ../llroundf.h
   DEPENDS
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.nearest_integer_operations
   COMPILE_OPTIONS
     -O2
 )
@@ -353,7 +362,7 @@ add_entrypoint_object(
   HDRS
     ../llroundl.h
   DEPENDS
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.nearest_integer_operations
   COMPILE_OPTIONS
     -O2
 )
@@ -365,7 +374,7 @@ add_entrypoint_object(
   HDRS
     ../rint.h
   DEPENDS
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.nearest_integer_operations
   COMPILE_OPTIONS
     -O2
 )
@@ -377,7 +386,7 @@ add_entrypoint_object(
   HDRS
     ../rintf.h
   DEPENDS
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.nearest_integer_operations
   COMPILE_OPTIONS
     -O2
 )
@@ -389,7 +398,7 @@ add_entrypoint_object(
   HDRS
     ../rintl.h
   DEPENDS
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.nearest_integer_operations
   COMPILE_OPTIONS
     -O2
 )
@@ -401,7 +410,7 @@ add_entrypoint_object(
   HDRS
     ../lrint.h
   DEPENDS
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.nearest_integer_operations
   COMPILE_OPTIONS
     -O2
 )
@@ -413,7 +422,7 @@ add_entrypoint_object(
   HDRS
     ../lrintf.h
   DEPENDS
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.nearest_integer_operations
   COMPILE_OPTIONS
     -O2
 )
@@ -425,7 +434,7 @@ add_entrypoint_object(
   HDRS
     ../lrintl.h
   DEPENDS
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.nearest_integer_operations
   COMPILE_OPTIONS
     -O2
 )
@@ -437,7 +446,7 @@ add_entrypoint_object(
   HDRS
     ../llrint.h
   DEPENDS
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.nearest_integer_operations
   COMPILE_OPTIONS
     -O2
 )
@@ -449,7 +458,7 @@ add_entrypoint_object(
   HDRS
     ../llrintf.h
   DEPENDS
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.nearest_integer_operations
   COMPILE_OPTIONS
     -O2
 )
@@ -461,7 +470,7 @@ add_entrypoint_object(
   HDRS
     ../llrintl.h
   DEPENDS
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.nearest_integer_operations
   COMPILE_OPTIONS
     -O2
 )
@@ -473,7 +482,7 @@ add_entrypoint_object(
   HDRS
     ../nearbyint.h
   DEPENDS
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.nearest_integer_operations
   COMPILE_OPTIONS
     -O2
 )
@@ -485,7 +494,7 @@ add_entrypoint_object(
   HDRS
     ../nearbyintf.h
   DEPENDS
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.nearest_integer_operations
   COMPILE_OPTIONS
     -O2
 )
@@ -497,7 +506,7 @@ add_entrypoint_object(
   HDRS
     ../nearbyintl.h
   DEPENDS
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.nearest_integer_operations
   COMPILE_OPTIONS
     -O2
 )
@@ -520,10 +529,14 @@ add_entrypoint_object(
     ../expf.h
   DEPENDS
     .common_constants
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
     libc.src.__support.FPUtil.multiply_add
     libc.src.__support.FPUtil.nearest_integer
     libc.src.__support.FPUtil.polyeval
+    libc.include.errno
+    libc.src.errno.errno
     libc.include.math
   COMPILE_OPTIONS
     -O3
@@ -536,11 +549,15 @@ add_entrypoint_object(
   HDRS
     ../exp2f.h
   DEPENDS
+    .common_constants
     .explogxf
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
     libc.src.__support.FPUtil.multiply_add
     libc.src.__support.FPUtil.nearest_integer
     libc.src.__support.FPUtil.polyeval
+    libc.include.errno
+    libc.src.errno.errno
     libc.include.math
   COMPILE_OPTIONS
     -O3
@@ -554,10 +571,14 @@ add_entrypoint_object(
     ../expm1f.h
   DEPENDS
     .common_constants
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
     libc.src.__support.FPUtil.multiply_add
     libc.src.__support.FPUtil.nearest_integer
     libc.src.__support.FPUtil.polyeval
+    libc.include.errno
+    libc.src.errno.errno
     libc.include.math
   COMPILE_OPTIONS
     -O3
@@ -570,7 +591,7 @@ add_entrypoint_object(
   HDRS
     ../copysign.h
   DEPENDS
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.manipulation_functions
   COMPILE_OPTIONS
     -O2
 )
@@ -582,7 +603,7 @@ add_entrypoint_object(
   HDRS
     ../copysignf.h
   DEPENDS
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.manipulation_functions
   COMPILE_OPTIONS
     -O2
 )
@@ -594,7 +615,7 @@ add_entrypoint_object(
   HDRS
     ../copysignl.h
   DEPENDS
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.manipulation_functions
   COMPILE_OPTIONS
     -O2
 )
@@ -606,7 +627,7 @@ add_entrypoint_object(
   HDRS
     ../frexp.h
   DEPENDS
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.manipulation_functions
   COMPILE_OPTIONS
     -O2
 )
@@ -618,7 +639,7 @@ add_entrypoint_object(
   HDRS
     ../frexpf.h
   DEPENDS
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.manipulation_functions
   COMPILE_OPTIONS
     -O2
 )
@@ -630,7 +651,7 @@ add_entrypoint_object(
   HDRS
     ../frexpl.h
   DEPENDS
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.manipulation_functions
   COMPILE_OPTIONS
     -O2
 )
@@ -642,7 +663,7 @@ add_entrypoint_object(
   HDRS
     ../ilogb.h
   DEPENDS
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.manipulation_functions
   COMPILE_OPTIONS
     -O2
 )
@@ -654,7 +675,7 @@ add_entrypoint_object(
   HDRS
     ../ilogbf.h
   DEPENDS
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.manipulation_functions
   COMPILE_OPTIONS
     -O2
 )
@@ -666,7 +687,7 @@ add_entrypoint_object(
   HDRS
     ../ilogbl.h
   DEPENDS
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.manipulation_functions
   COMPILE_OPTIONS
     -O2
 )
@@ -678,7 +699,7 @@ add_entrypoint_object(
   HDRS
     ../ldexp.h
   DEPENDS
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.manipulation_functions
   COMPILE_OPTIONS
     -O2
 )
@@ -690,7 +711,7 @@ add_entrypoint_object(
   HDRS
     ../ldexpf.h
   DEPENDS
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.manipulation_functions
   COMPILE_OPTIONS
     -O2
 )
@@ -702,7 +723,7 @@ add_entrypoint_object(
   HDRS
     ../ldexpl.h
   DEPENDS
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.manipulation_functions
   COMPILE_OPTIONS
     -O2
 )
@@ -723,8 +744,10 @@ add_entrypoint_object(
     ../log10f.h
   DEPENDS
     .common_constants
-    libc.src.__support.FPUtil.fputil
-    libc.src.__support.FPUtil.multiply_add
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.fma
     libc.src.__support.FPUtil.polyeval
   COMPILE_OPTIONS
     -O3
@@ -738,8 +761,10 @@ add_entrypoint_object(
     ../log1pf.h
   DEPENDS
     .common_constants
-    libc.src.__support.FPUtil.fputil
-    libc.src.__support.FPUtil.multiply_add
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.fma
     libc.src.__support.FPUtil.polyeval
   COMPILE_OPTIONS
     -O3
@@ -753,7 +778,10 @@ add_entrypoint_object(
     ../log2f.h
   DEPENDS
     .common_constants
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.fma
     libc.src.__support.FPUtil.polyeval
     COMPILE_OPTIONS
     -O3
@@ -767,8 +795,10 @@ add_entrypoint_object(
     ../logf.h
   DEPENDS
     .common_constants
-    libc.src.__support.FPUtil.fputil
-    libc.src.__support.FPUtil.multiply_add
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.fma
     libc.src.__support.FPUtil.polyeval
   COMPILE_OPTIONS
     -O3
@@ -781,7 +811,7 @@ add_entrypoint_object(
   HDRS
     ../logb.h
   DEPENDS
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.manipulation_functions
   COMPILE_OPTIONS
     -O2
 )
@@ -793,7 +823,7 @@ add_entrypoint_object(
   HDRS
     ../logbf.h
   DEPENDS
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.manipulation_functions
   COMPILE_OPTIONS
     -O2
 )
@@ -805,7 +835,7 @@ add_entrypoint_object(
   HDRS
     ../logbl.h
   DEPENDS
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.manipulation_functions
   COMPILE_OPTIONS
     -O2
 )
@@ -817,7 +847,7 @@ add_entrypoint_object(
   HDRS
     ../modf.h
   DEPENDS
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.manipulation_functions
   COMPILE_OPTIONS
     -O2
 )
@@ -829,7 +859,7 @@ add_entrypoint_object(
   HDRS
     ../modff.h
   DEPENDS
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.manipulation_functions
   COMPILE_OPTIONS
     -O2
 )
@@ -841,7 +871,7 @@ add_entrypoint_object(
   HDRS
     ../modfl.h
   DEPENDS
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.manipulation_functions
   COMPILE_OPTIONS
     -O2
 )
@@ -853,7 +883,7 @@ add_entrypoint_object(
   HDRS
     ../fmin.h
   DEPENDS
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.basic_operations
   COMPILE_OPTIONS
     -O2
 )
@@ -865,7 +895,7 @@ add_entrypoint_object(
   HDRS
     ../fminf.h
   DEPENDS
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.basic_operations
   COMPILE_OPTIONS
     -O2
 )
@@ -877,7 +907,7 @@ add_entrypoint_object(
   HDRS
     ../fminl.h
   DEPENDS
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.basic_operations
   COMPILE_OPTIONS
     -O2
 )
@@ -889,7 +919,7 @@ add_entrypoint_object(
   HDRS
     ../fmax.h
   DEPENDS
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.basic_operations
   COMPILE_OPTIONS
     -O2
 )
@@ -901,7 +931,7 @@ add_entrypoint_object(
   HDRS
     ../fmaxf.h
   DEPENDS
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.basic_operations
   COMPILE_OPTIONS
     -O2
 )
@@ -913,7 +943,7 @@ add_entrypoint_object(
   HDRS
     ../fmaxl.h
   DEPENDS
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.basic_operations
   COMPILE_OPTIONS
     -O2
 )
@@ -925,7 +955,6 @@ add_entrypoint_object(
   HDRS
     ../sqrt.h
   DEPENDS
-    libc.src.__support.FPUtil.fputil
     libc.src.__support.FPUtil.sqrt
   COMPILE_OPTIONS
     -O3
@@ -938,7 +967,6 @@ add_entrypoint_object(
   HDRS
     ../sqrtf.h
   DEPENDS
-    libc.src.__support.FPUtil.fputil
     libc.src.__support.FPUtil.sqrt
   COMPILE_OPTIONS
     -O3
@@ -951,7 +979,6 @@ add_entrypoint_object(
   HDRS
     ../sqrtl.h
   DEPENDS
-    libc.src.__support.FPUtil.fputil
     libc.src.__support.FPUtil.sqrt
   COMPILE_OPTIONS
     -O3
@@ -964,7 +991,7 @@ add_entrypoint_object(
   HDRS
     ../remquof.h
   DEPENDS
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.division_and_remainder_operations
   COMPILE_OPTIONS
     -O2
 )
@@ -976,7 +1003,7 @@ add_entrypoint_object(
   HDRS
     ../remquo.h
   DEPENDS
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.division_and_remainder_operations
   COMPILE_OPTIONS
     -O2
 )
@@ -988,7 +1015,7 @@ add_entrypoint_object(
   HDRS
     ../remquol.h
   DEPENDS
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.division_and_remainder_operations
   COMPILE_OPTIONS
     -O2
 )
@@ -1000,7 +1027,7 @@ add_entrypoint_object(
   HDRS
     ../remainderf.h
   DEPENDS
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.division_and_remainder_operations
   COMPILE_OPTIONS
     -O2
 )
@@ -1012,7 +1039,7 @@ add_entrypoint_object(
   HDRS
     ../remainder.h
   DEPENDS
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.division_and_remainder_operations
   COMPILE_OPTIONS
     -O2
 )
@@ -1024,7 +1051,7 @@ add_entrypoint_object(
   HDRS
     ../remainderl.h
   DEPENDS
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.division_and_remainder_operations
   COMPILE_OPTIONS
     -O2
 )
@@ -1036,7 +1063,8 @@ add_entrypoint_object(
   HDRS
     ../hypotf.h
   DEPENDS
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.fp_bits
     libc.src.__support.FPUtil.sqrt
   COMPILE_OPTIONS
     -O3
@@ -1049,7 +1077,7 @@ add_entrypoint_object(
   HDRS
     ../fdim.h
   DEPENDS
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.basic_operations
   COMPILE_OPTIONS
     -O2
 )
@@ -1061,7 +1089,7 @@ add_entrypoint_object(
   HDRS
     ../fdimf.h
   DEPENDS
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.basic_operations
   COMPILE_OPTIONS
     -O2
 )
@@ -1073,7 +1101,7 @@ add_entrypoint_object(
   HDRS
     ../fdiml.h
   DEPENDS
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.basic_operations
   COMPILE_OPTIONS
     -O2
 )
@@ -1085,7 +1113,7 @@ add_entrypoint_object(
   HDRS
     ../hypot.h
   DEPENDS
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.hypot
   COMPILE_OPTIONS
     -O3
 )
@@ -1097,7 +1125,7 @@ add_entrypoint_object(
   HDRS
     ../nextafter.h
   DEPENDS
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.manipulation_functions
   COMPILE_OPTIONS
     -O2
 )
@@ -1109,7 +1137,7 @@ add_entrypoint_object(
   HDRS
     ../nextafterf.h
   DEPENDS
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.manipulation_functions
   COMPILE_OPTIONS
     -O2
 )
@@ -1121,7 +1149,7 @@ add_entrypoint_object(
   HDRS
     ../nextafterl.h
   DEPENDS
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.manipulation_functions
   COMPILE_OPTIONS
     -O2
 )
@@ -1133,7 +1161,8 @@ add_object_library(
   HDRS
     dp_trig.h
   DEPENDS
-    libc.src.__support.FPUtil.fputil #FPBits and ManipulationFunction
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.manipulation_functions
     libc.src.__support.FPUtil.xfloat
     libc.src.__support.uint
   COMPILE_OPTIONS
@@ -1166,12 +1195,26 @@ add_entrypoint_object(
     -O3
 )
 
+#TODO: Add errno include to the hyperbolic functions.
 add_object_library(
   explogxf
   HDRS
     explogxf.h
   SRCS
     explogxf.cpp
+  DEPENDS
+    .common_constants
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.multiply_add
+    libc.src.__support.FPUtil.nearest_integer
+    libc.src.__support.FPUtil.polyeval
+    libc.include.errno
+    libc.src.errno.errno
+    libc.include.math
+  COMPILE_OPTIONS
+    -O3
 )
 
 add_entrypoint_object(
@@ -1182,11 +1225,8 @@ add_entrypoint_object(
     ../coshf.h
   DEPENDS
     .explogxf
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
     libc.src.__support.FPUtil.multiply_add
-    libc.src.__support.FPUtil.nearest_integer
-    libc.src.__support.FPUtil.polyeval
-    libc.include.math
   COMPILE_OPTIONS
     -O3
 )
@@ -1199,11 +1239,7 @@ add_entrypoint_object(
     ../sinhf.h
   DEPENDS
     .explogxf
-    libc.src.__support.FPUtil.fputil
-    libc.src.__support.FPUtil.multiply_add
-    libc.src.__support.FPUtil.nearest_integer
-    libc.src.__support.FPUtil.polyeval
-    libc.include.math
+    libc.src.__support.FPUtil.fp_bits
   COMPILE_OPTIONS
     -O3
 )
@@ -1216,11 +1252,7 @@ add_entrypoint_object(
     ../tanhf.h
   DEPENDS
     .explogxf
-    libc.src.__support.FPUtil.fputil
-    libc.src.__support.FPUtil.multiply_add
-    libc.src.__support.FPUtil.nearest_integer
-    libc.src.__support.FPUtil.polyeval
-    libc.include.math
+    libc.src.__support.FPUtil.fp_bits
   COMPILE_OPTIONS
     -O3
 )
@@ -1233,11 +1265,7 @@ add_entrypoint_object(
     ../atanhf.h
   DEPENDS
     .explogxf
-    libc.src.__support.FPUtil.fputil
-    libc.src.__support.FPUtil.multiply_add
-    libc.src.__support.FPUtil.nearest_integer
-    libc.src.__support.FPUtil.polyeval
-    libc.include.math
+    libc.src.__support.FPUtil.fp_bits
   COMPILE_OPTIONS
     -O3
 )
@@ -1248,6 +1276,16 @@ add_object_library(
     inv_trigf_utils.h
   SRCS
     inv_trigf_utils.cpp
+  DEPENDS
+    .math_utils
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.nearest_integer
+    libc.src.__support.FPUtil.nearest_integer_operations
+    libc.src.__support.FPUtil.polyeval
+    libc.include.errno
+    libc.src.errno.errno
+    libc.include.math
 )
 
 add_entrypoint_object(
@@ -1258,11 +1296,8 @@ add_entrypoint_object(
     ../atanf.h
   DEPENDS
     .inv_trigf_utils
-    libc.src.__support.FPUtil.fputil
-    libc.src.__support.FPUtil.multiply_add
-    libc.src.__support.FPUtil.nearest_integer
-    libc.src.__support.FPUtil.polyeval
-    libc.include.math
+    .math_utils
+    libc.src.__support.FPUtil.fp_bits
   COMPILE_OPTIONS
     -O3
 )

diff  --git a/libc/src/stdio/printf_core/CMakeLists.txt b/libc/src/stdio/printf_core/CMakeLists.txt
index 4ab4d61a41bc1..ced63686e4424 100644
--- a/libc/src/stdio/printf_core/CMakeLists.txt
+++ b/libc/src/stdio/printf_core/CMakeLists.txt
@@ -5,7 +5,7 @@ add_header_library(
     core_structs.h
   DEPENDS
     libc.src.__support.CPP.string_view
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
 )
 
 add_object_library(
@@ -65,7 +65,8 @@ add_object_library(
     libc.src.__support.CPP.limits
     libc.src.__support.CPP.span
     libc.src.__support.CPP.string_view
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.fenv_impl
     libc.src.__support.integer_to_string
 )
 

diff  --git a/libc/test/src/fenv/CMakeLists.txt b/libc/test/src/fenv/CMakeLists.txt
index 5b062bf9554cc..cf27fa5b5188c 100644
--- a/libc/test/src/fenv/CMakeLists.txt
+++ b/libc/test/src/fenv/CMakeLists.txt
@@ -21,7 +21,7 @@ add_libc_unittest(
     libc.src.fenv.feclearexcept
     libc.src.fenv.feraiseexcept
     libc.src.fenv.fetestexcept
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fenv_impl
 )
 
 add_libc_unittest(
@@ -35,7 +35,7 @@ add_libc_unittest(
     libc.src.fenv.fegetround
     libc.src.fenv.fesetenv
     libc.src.fenv.fesetround
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fenv_impl
 )
 
 add_libc_unittest(
@@ -47,7 +47,7 @@ add_libc_unittest(
   DEPENDS
     libc.src.fenv.fegetexceptflag
     libc.src.fenv.fesetexceptflag
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fenv_impl
 )
 
 add_libc_unittest(
@@ -59,7 +59,7 @@ add_libc_unittest(
   DEPENDS
     libc.include.signal
     libc.src.fenv.feupdateenv
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fenv_impl
 )
 
 add_libc_unittest(
@@ -70,7 +70,7 @@ add_libc_unittest(
     feclearexcept_test.cpp
   DEPENDS
     libc.src.fenv.feclearexcept
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fenv_impl
 )
 
 add_libc_unittest(
@@ -103,7 +103,7 @@ if (NOT (LLVM_USE_SANITIZER OR (${LIBC_TARGET_OS} STREQUAL "windows")
       libc.src.fenv.feclearexcept
       libc.src.fenv.feraiseexcept
       libc.src.fenv.fetestexcept
-      libc.src.__support.FPUtil.fputil
+      libc.src.__support.FPUtil.fenv_impl
   )
 
   add_fp_unittest(
@@ -115,6 +115,6 @@ if (NOT (LLVM_USE_SANITIZER OR (${LIBC_TARGET_OS} STREQUAL "windows")
     DEPENDS
       libc.include.fenv
       libc.src.fenv.feholdexcept
-      libc.src.__support.FPUtil.fputil
+      libc.src.__support.FPUtil.fenv_impl
   )
 endif()

diff  --git a/libc/test/src/math/CMakeLists.txt b/libc/test/src/math/CMakeLists.txt
index 6c4ca22ca9219..e69d855c15fa5 100644
--- a/libc/test/src/math/CMakeLists.txt
+++ b/libc/test/src/math/CMakeLists.txt
@@ -11,9 +11,10 @@ add_fp_unittest(
     sdcomp26094.h
   DEPENDS
     libc.include.errno
+    libc.src.errno.errno
     libc.src.math.cosf
     libc.src.__support.CPP.array
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
 )
 
 add_fp_unittest(
@@ -25,7 +26,7 @@ add_fp_unittest(
     cos_test.cpp
   DEPENDS
     libc.src.math.cos
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
 )
 
 add_fp_unittest(
@@ -39,9 +40,10 @@ add_fp_unittest(
     sdcomp26094.h
   DEPENDS
     libc.include.errno
+    libc.src.errno.errno
     libc.src.math.sinf
     libc.src.__support.CPP.array
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
 )
 
 add_fp_unittest(
@@ -53,7 +55,7 @@ add_fp_unittest(
     sin_test.cpp
   DEPENDS
     libc.src.math.sin
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
 )
 
 add_fp_unittest(
@@ -67,9 +69,10 @@ add_fp_unittest(
     sdcomp26094.h
   DEPENDS
     libc.include.errno
+    libc.src.errno.errno
     libc.src.math.sincosf
     libc.src.__support.CPP.array
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
 )
 
 add_fp_unittest(
@@ -83,9 +86,10 @@ add_fp_unittest(
     sdcomp26094.h
   DEPENDS
     libc.include.errno
+    libc.src.errno.errno
     libc.src.math.tanf
     libc.src.__support.CPP.array
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
 )
 
 add_fp_unittest(
@@ -100,7 +104,7 @@ add_fp_unittest(
   DEPENDS
     libc.include.math
     libc.src.math.fabs
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
 )
 
 add_fp_unittest(
@@ -115,7 +119,7 @@ add_fp_unittest(
   DEPENDS
     libc.include.math
     libc.src.math.fabsf
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
 )
 
 add_fp_unittest(
@@ -130,7 +134,7 @@ add_fp_unittest(
   DEPENDS
     libc.include.math
     libc.src.math.fabsl
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
 )
 
 add_fp_unittest(
@@ -145,7 +149,7 @@ add_fp_unittest(
   DEPENDS
     libc.include.math
     libc.src.math.trunc
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
 )
 
 add_fp_unittest(
@@ -160,7 +164,7 @@ add_fp_unittest(
   DEPENDS
     libc.include.math
     libc.src.math.truncf
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
 )
 
 add_fp_unittest(
@@ -175,7 +179,7 @@ add_fp_unittest(
   DEPENDS
     libc.include.math
     libc.src.math.truncl
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
 )
 
 add_fp_unittest(
@@ -190,7 +194,7 @@ add_fp_unittest(
   DEPENDS
     libc.include.math
     libc.src.math.ceil
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
 )
 
 add_fp_unittest(
@@ -205,7 +209,7 @@ add_fp_unittest(
   DEPENDS
     libc.include.math
     libc.src.math.ceilf
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
 )
 
 add_fp_unittest(
@@ -220,7 +224,7 @@ add_fp_unittest(
   DEPENDS
     libc.include.math
     libc.src.math.ceill
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
 )
 
 add_fp_unittest(
@@ -235,7 +239,7 @@ add_fp_unittest(
   DEPENDS
     libc.include.math
     libc.src.math.floor
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
 )
 
 add_fp_unittest(
@@ -250,7 +254,7 @@ add_fp_unittest(
   DEPENDS
     libc.include.math
     libc.src.math.floorf
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
 )
 
 add_fp_unittest(
@@ -265,7 +269,7 @@ add_fp_unittest(
   DEPENDS
     libc.include.math
     libc.src.math.floorl
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
 )
 
 add_fp_unittest(
@@ -280,7 +284,7 @@ add_fp_unittest(
   DEPENDS
     libc.include.math
     libc.src.math.round
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
 )
 
 add_fp_unittest(
@@ -295,7 +299,7 @@ add_fp_unittest(
   DEPENDS
     libc.include.math
     libc.src.math.roundf
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
 )
 
 add_fp_unittest(
@@ -310,7 +314,7 @@ add_fp_unittest(
   DEPENDS
     libc.include.math
     libc.src.math.roundl
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
 )
 
 add_fp_unittest(
@@ -330,7 +334,7 @@ add_fp_unittest(
     libc.src.fenv.feraiseexcept
     libc.src.fenv.fetestexcept
     libc.src.math.lround
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
 )
 
 add_fp_unittest(
@@ -350,7 +354,7 @@ add_fp_unittest(
     libc.src.fenv.feraiseexcept
     libc.src.fenv.fetestexcept
     libc.src.math.lroundf
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
 )
 
 add_fp_unittest(
@@ -370,7 +374,7 @@ add_fp_unittest(
     libc.src.fenv.feraiseexcept
     libc.src.fenv.fetestexcept
     libc.src.math.lroundl
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
 )
 
 add_fp_unittest(
@@ -390,7 +394,7 @@ add_fp_unittest(
     libc.src.fenv.feraiseexcept
     libc.src.fenv.fetestexcept
     libc.src.math.llround
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
 )
 
 add_fp_unittest(
@@ -410,7 +414,7 @@ add_fp_unittest(
     libc.src.fenv.feraiseexcept
     libc.src.fenv.fetestexcept
     libc.src.math.llroundf
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
 )
 
 add_fp_unittest(
@@ -430,7 +434,7 @@ add_fp_unittest(
     libc.src.fenv.feraiseexcept
     libc.src.fenv.fetestexcept
     libc.src.math.llroundl
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
 )
 
 add_fp_unittest(
@@ -445,7 +449,8 @@ add_fp_unittest(
   DEPENDS
     libc.include.math
     libc.src.math.rint
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
 )
 
 add_fp_unittest(
@@ -460,7 +465,8 @@ add_fp_unittest(
   DEPENDS
     libc.include.math
     libc.src.math.rintf
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
 )
 
 add_fp_unittest(
@@ -475,7 +481,8 @@ add_fp_unittest(
   DEPENDS
     libc.include.math
     libc.src.math.rintl
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
 )
 
 add_fp_unittest(
@@ -490,7 +497,8 @@ add_fp_unittest(
   DEPENDS
     libc.include.math
     libc.src.math.lrint
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
 )
 
 add_fp_unittest(
@@ -505,7 +513,8 @@ add_fp_unittest(
   DEPENDS
     libc.include.math
     libc.src.math.lrintf
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
 )
 
 add_fp_unittest(
@@ -520,7 +529,8 @@ add_fp_unittest(
   DEPENDS
     libc.include.math
     libc.src.math.lrintl
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
 )
 
 add_fp_unittest(
@@ -535,7 +545,8 @@ add_fp_unittest(
   DEPENDS
     libc.include.math
     libc.src.math.llrint
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
 )
 
 add_fp_unittest(
@@ -550,7 +561,8 @@ add_fp_unittest(
   DEPENDS
     libc.include.math
     libc.src.math.llrintf
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
 )
 
 add_fp_unittest(
@@ -565,7 +577,8 @@ add_fp_unittest(
   DEPENDS
     libc.include.math
     libc.src.math.llrintl
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
 )
 
 add_fp_unittest(
@@ -577,9 +590,10 @@ add_fp_unittest(
     expf_test.cpp
   DEPENDS
     libc.include.errno
+    libc.src.errno.errno
     libc.include.math
     libc.src.math.expf
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
 )
 
 add_fp_unittest(
@@ -591,9 +605,10 @@ add_fp_unittest(
     exp2f_test.cpp
   DEPENDS
     libc.include.errno
+    libc.src.errno.errno
     libc.include.math
     libc.src.math.exp2f
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
 )
 
 add_fp_unittest(
@@ -607,7 +622,7 @@ add_fp_unittest(
   DEPENDS
     libc.include.math
     libc.src.math.copysign
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
 )
 
 add_fp_unittest(
@@ -621,7 +636,7 @@ add_fp_unittest(
   DEPENDS
     libc.include.math
     libc.src.math.copysignf
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
 )
 
 add_fp_unittest(
@@ -635,7 +650,7 @@ add_fp_unittest(
   DEPENDS
     libc.include.math
     libc.src.math.copysignl
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
 )
 
 add_fp_unittest(
@@ -650,7 +665,7 @@ add_fp_unittest(
   DEPENDS
     libc.include.math
     libc.src.math.frexp
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.basic_operations
 )
 
 add_fp_unittest(
@@ -665,7 +680,7 @@ add_fp_unittest(
   DEPENDS
     libc.include.math
     libc.src.math.frexpf
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.basic_operations
 )
 
 add_fp_unittest(
@@ -680,7 +695,7 @@ add_fp_unittest(
   DEPENDS
     libc.include.math
     libc.src.math.frexpl
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.basic_operations
 )
 
 add_fp_unittest(
@@ -694,7 +709,8 @@ add_fp_unittest(
   DEPENDS
     libc.include.math
     libc.src.math.ilogb
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.manipulation_functions
 )
 
 add_fp_unittest(
@@ -708,7 +724,8 @@ add_fp_unittest(
   DEPENDS
     libc.include.math
     libc.src.math.ilogbf
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.manipulation_functions
 )
 
 add_fp_unittest(
@@ -722,7 +739,8 @@ add_fp_unittest(
   DEPENDS
     libc.include.math
     libc.src.math.ilogbl
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.manipulation_functions
 )
 
 add_fp_unittest(
@@ -736,7 +754,8 @@ add_fp_unittest(
   DEPENDS
     libc.include.math
     libc.src.math.ldexp
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.normal_float
 )
 
 add_fp_unittest(
@@ -750,7 +769,8 @@ add_fp_unittest(
   DEPENDS
     libc.include.math
     libc.src.math.ldexpf
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.normal_float
 )
 
 add_fp_unittest(
@@ -764,7 +784,8 @@ add_fp_unittest(
   DEPENDS
     libc.include.math
     libc.src.math.ldexpl
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.normal_float
 )
 
 add_fp_unittest(
@@ -776,7 +797,7 @@ add_fp_unittest(
   DEPENDS
     libc.include.math
     libc.src.math.logb
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.manipulation_functions
 )
 
 add_fp_unittest(
@@ -788,7 +809,7 @@ add_fp_unittest(
   DEPENDS
     libc.include.math
     libc.src.math.logbf
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.manipulation_functions
 )
 
 add_fp_unittest(
@@ -802,7 +823,7 @@ add_fp_unittest(
   DEPENDS
     libc.include.math
     libc.src.math.logbl
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.manipulation_functions
 )
 
 add_fp_unittest(
@@ -816,7 +837,8 @@ add_fp_unittest(
   DEPENDS
     libc.include.math
     libc.src.math.modf
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.nearest_integer_operations
 )
 
 add_fp_unittest(
@@ -830,7 +852,8 @@ add_fp_unittest(
   DEPENDS
     libc.include.math
     libc.src.math.modff
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.nearest_integer_operations
 )
 
 add_fp_unittest(
@@ -844,7 +867,8 @@ add_fp_unittest(
   DEPENDS
     libc.include.math
     libc.src.math.modfl
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.nearest_integer_operations
 )
 
 add_fp_unittest(
@@ -858,7 +882,8 @@ add_fp_unittest(
   DEPENDS
     libc.include.math
     libc.src.math.fdimf
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.fp_bits
 )
 
 add_fp_unittest(
@@ -872,7 +897,8 @@ add_fp_unittest(
   DEPENDS
     libc.include.math
     libc.src.math.fdim
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.fp_bits
 )
 
 add_fp_unittest(
@@ -886,7 +912,8 @@ add_fp_unittest(
   DEPENDS
     libc.include.math
     libc.src.math.fdiml
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.fp_bits
 )
 
 add_fp_unittest(
@@ -900,7 +927,7 @@ add_fp_unittest(
   DEPENDS
     libc.include.math
     libc.src.math.fminf
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
 )
 
 add_fp_unittest(
@@ -914,7 +941,7 @@ add_fp_unittest(
   DEPENDS
     libc.include.math
     libc.src.math.fmin
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
 )
 
 add_fp_unittest(
@@ -928,7 +955,7 @@ add_fp_unittest(
   DEPENDS
     libc.include.math
     libc.src.math.fminl
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
 )
 
 add_fp_unittest(
@@ -942,7 +969,7 @@ add_fp_unittest(
   DEPENDS
     libc.include.math
     libc.src.math.fmaxf
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
 )
 
 add_fp_unittest(
@@ -956,7 +983,7 @@ add_fp_unittest(
   DEPENDS
     libc.include.math
     libc.src.math.fmax
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
 )
 
 add_fp_unittest(
@@ -970,7 +997,7 @@ add_fp_unittest(
   DEPENDS
     libc.include.math
     libc.src.math.fmaxl
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
 )
 
 add_fp_unittest(
@@ -983,7 +1010,7 @@ add_fp_unittest(
   DEPENDS
     libc.include.math
     libc.src.math.sqrtf
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
 )
 
 add_fp_unittest(
@@ -996,7 +1023,7 @@ add_fp_unittest(
   DEPENDS
     libc.include.math
     libc.src.math.sqrt
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
 )
 
 add_fp_unittest(
@@ -1009,7 +1036,7 @@ add_fp_unittest(
   DEPENDS
     libc.include.math
     libc.src.math.sqrtl
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
 )
 
 add_fp_unittest(
@@ -1021,7 +1048,7 @@ add_fp_unittest(
     generic_sqrtf_test.cpp
   DEPENDS
     libc.src.math.sqrtf
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
     libc.src.__support.FPUtil.generic.sqrt
   COMPILE_OPTIONS
     -O3
@@ -1036,7 +1063,7 @@ add_fp_unittest(
     generic_sqrt_test.cpp
   DEPENDS
     libc.src.math.sqrt
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
     libc.src.__support.FPUtil.generic.sqrt
   COMPILE_OPTIONS
     -O3
@@ -1051,7 +1078,7 @@ add_fp_unittest(
     generic_sqrtl_test.cpp
   DEPENDS
     libc.src.math.sqrtl
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
     libc.src.__support.FPUtil.generic.sqrt
   COMPILE_OPTIONS
     -O3
@@ -1069,7 +1096,8 @@ add_fp_unittest(
   DEPENDS
     libc.include.math
     libc.src.math.remquof
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.fp_bits
 )
 
 add_fp_unittest(
@@ -1084,7 +1112,8 @@ add_fp_unittest(
   DEPENDS
     libc.include.math
     libc.src.math.remquo
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.fp_bits
 )
 
 add_fp_unittest(
@@ -1099,7 +1128,8 @@ add_fp_unittest(
   DEPENDS
     libc.include.math
     libc.src.math.remquol
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.fp_bits
 )
 
 add_fp_unittest(
@@ -1112,7 +1142,7 @@ add_fp_unittest(
   DEPENDS
     libc.include.math
     libc.src.math.hypotf
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
 )
 
 add_fp_unittest(
@@ -1125,7 +1155,7 @@ add_fp_unittest(
   DEPENDS
     libc.include.math
     libc.src.math.hypot
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
 )
 
 add_fp_unittest(
@@ -1139,7 +1169,8 @@ add_fp_unittest(
   DEPENDS
     libc.include.math
     libc.src.math.nextafter
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.fp_bits
 )
 
 add_fp_unittest(
@@ -1153,7 +1184,8 @@ add_fp_unittest(
   DEPENDS
     libc.include.math
     libc.src.math.nextafterf
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.fp_bits
 )
 
 add_fp_unittest(
@@ -1167,7 +1199,8 @@ add_fp_unittest(
   DEPENDS
     libc.include.math
     libc.src.math.nextafterl
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.fp_bits
 )
 
 # TODO(lntue): The current implementation of fputil::general::fma<float> is only
@@ -1182,7 +1215,7 @@ add_fp_unittest(
   DEPENDS
     libc.include.math
     libc.src.math.fmaf
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
   FLAGS
     FMA_OPT__ONLY
 )
@@ -1197,7 +1230,7 @@ add_fp_unittest(
   DEPENDS
     libc.include.math
     libc.src.math.fma
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
 )
 
 add_fp_unittest(
@@ -1209,7 +1242,7 @@ add_fp_unittest(
     tan_test.cpp
   DEPENDS
     libc.src.math.tan
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
 )
 
 add_fp_unittest(
@@ -1221,9 +1254,10 @@ add_fp_unittest(
     expm1f_test.cpp
   DEPENDS
     libc.include.errno
+    libc.src.errno.errno
     libc.include.math
     libc.src.math.expm1f
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
 )
 
 add_fp_unittest(
@@ -1235,7 +1269,7 @@ add_fp_unittest(
     mod_k_pi_test.cpp
   DEPENDS
     libc.src.math.generic.dp_trig
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
 )
 
 add_fp_unittest(
@@ -1246,9 +1280,11 @@ add_fp_unittest(
   SRCS
     logf_test.cpp
   DEPENDS
+    libc.include.errno
+    libc.src.errno.errno
     libc.include.math
     libc.src.math.logf
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
 )
 
 add_fp_unittest(
@@ -1259,9 +1295,11 @@ add_fp_unittest(
   SRCS
     log2f_test.cpp
   DEPENDS
+    libc.include.errno
+    libc.src.errno.errno
     libc.include.math
     libc.src.math.log2f
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
 )
 
 add_fp_unittest(
@@ -1272,9 +1310,11 @@ add_fp_unittest(
   SRCS
     log10f_test.cpp
   DEPENDS
+    libc.include.errno
+    libc.src.errno.errno
     libc.include.math
     libc.src.math.log10f
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
 )
 
 add_fp_unittest(
@@ -1285,9 +1325,11 @@ add_fp_unittest(
   SRCS
     log1pf_test.cpp
   DEPENDS
+    libc.include.errno
+    libc.src.errno.errno
     libc.include.math
     libc.src.math.log1pf
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
 )
 
 add_fp_unittest(
@@ -1301,7 +1343,8 @@ add_fp_unittest(
   DEPENDS
     libc.include.math
     libc.src.math.fmodf
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.nearest_integer_operations
 )
 
 add_fp_unittest(
@@ -1315,7 +1358,8 @@ add_fp_unittest(
   DEPENDS
     libc.include.math
     libc.src.math.fmod
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.nearest_integer_operations
 )
 
 add_fp_unittest(
@@ -1328,8 +1372,9 @@ add_fp_unittest(
   SRCS
     explogxf_test.cpp
   DEPENDS
+    libc.include.math
     libc.src.math.generic.explogxf
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
 )
 
 add_fp_unittest(
@@ -1343,9 +1388,10 @@ add_fp_unittest(
     sdcomp26094.h
   DEPENDS
     libc.include.errno
+    libc.src.errno.errno
     libc.src.math.coshf
     libc.src.__support.CPP.array
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
 )
 
 add_fp_unittest(
@@ -1359,9 +1405,10 @@ add_fp_unittest(
     sdcomp26094.h
   DEPENDS
     libc.include.errno
+    libc.src.errno.errno
     libc.src.math.sinhf
     libc.src.__support.CPP.array
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
 )
 
 add_fp_unittest(
@@ -1373,7 +1420,7 @@ add_fp_unittest(
     tanhf_test.cpp
   DEPENDS
     libc.src.math.tanhf
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
 )
 
 add_fp_unittest(
@@ -1384,8 +1431,10 @@ add_fp_unittest(
   SRCS
     atanhf_test.cpp
   DEPENDS
+    libc.include.errno
+    libc.src.errno.errno
     libc.src.math.atanhf
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
 )
 
 add_fp_unittest(
@@ -1396,8 +1445,10 @@ add_fp_unittest(
   SRCS
     atanf_test.cpp
   DEPENDS
+    libc.include.errno
+    libc.src.errno.errno
     libc.src.math.atanf
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
 )
 
 add_fp_unittest(
@@ -1411,7 +1462,7 @@ add_fp_unittest(
     inv_trigf_utils_test.cpp
   DEPENDS
     libc.src.math.generic.inv_trigf_utils
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
 )
 
 add_subdirectory(generic)

diff  --git a/libc/test/src/math/
diff erential_testing/CMakeLists.txt b/libc/test/src/math/
diff erential_testing/CMakeLists.txt
index 7eb2fbf26a976..32bbc6c461542 100644
--- a/libc/test/src/math/
diff erential_testing/CMakeLists.txt
+++ b/libc/test/src/math/
diff erential_testing/CMakeLists.txt
@@ -64,7 +64,7 @@ function(add_
diff _binary target_name)
 
   add_dependencies(
     ${fq_target_name}
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
     ${fq_deps_list}
   )
 endfunction()

diff  --git a/libc/test/src/math/exhaustive/CMakeLists.txt b/libc/test/src/math/exhaustive/CMakeLists.txt
index 287b5651a12b1..5a45e3febe441 100644
--- a/libc/test/src/math/exhaustive/CMakeLists.txt
+++ b/libc/test/src/math/exhaustive/CMakeLists.txt
@@ -18,7 +18,7 @@ add_fp_unittest(
   DEPENDS
     libc.include.math
     libc.src.math.sqrtf
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
 )
 
 add_fp_unittest(
@@ -33,7 +33,7 @@ add_fp_unittest(
     .exhaustive_test
     libc.include.math
     libc.src.math.sinf
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
   LINK_LIBRARIES
     -lpthread
 )
@@ -50,7 +50,7 @@ add_fp_unittest(
     .exhaustive_test
     libc.include.math
     libc.src.math.cosf
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
   LINK_LIBRARIES
     -lpthread
 )
@@ -67,7 +67,7 @@ add_fp_unittest(
     .exhaustive_test
     libc.include.math
     libc.src.math.sincosf
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
   LINK_LIBRARIES
     -lpthread
 )
@@ -84,7 +84,7 @@ add_fp_unittest(
     .exhaustive_test
     libc.include.math
     libc.src.math.tanf
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
   LINK_LIBRARIES
     -lpthread
 )
@@ -101,7 +101,7 @@ add_fp_unittest(
     .exhaustive_test
     libc.include.math
     libc.src.math.expf
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
   LINK_LIBRARIES
     -lpthread
 )
@@ -118,7 +118,7 @@ add_fp_unittest(
     .exhaustive_test
     libc.include.math
     libc.src.math.exp2f
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
   LINK_LIBRARIES
     -lpthread
 )
@@ -135,7 +135,7 @@ add_fp_unittest(
     .exhaustive_test
     libc.include.math
     libc.src.math.expm1f
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
   LINK_LIBRARIES
     -lpthread
 )
@@ -152,7 +152,7 @@ add_fp_unittest(
     .exhaustive_test
     libc.include.math
     libc.src.math.logf
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
   LINK_LIBRARIES
     -lpthread
 )
@@ -169,7 +169,7 @@ add_fp_unittest(
     .exhaustive_test
     libc.include.math
     libc.src.math.log10f
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
   LINK_LIBRARIES
     -lpthread
 )
@@ -186,7 +186,7 @@ add_fp_unittest(
     .exhaustive_test
     libc.include.math
     libc.src.math.log1pf
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
   LINK_LIBRARIES
     -lpthread
 )
@@ -203,7 +203,7 @@ add_fp_unittest(
     .exhaustive_test
     libc.include.math
     libc.src.math.log2f
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
   LINK_LIBRARIES
     -lpthread
 )
@@ -222,7 +222,7 @@ add_fp_unittest(
     .exhaustive_test
     libc.include.math
     libc.src.math.hypotf
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
   LINK_LIBRARIES
     -lpthread
 )
@@ -236,7 +236,7 @@ add_fp_unittest(
   SRCS
     fmod_generic_impl_test.cpp
   DEPENDS
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
     libc.src.__support.FPUtil.generic.fmod
 )
 
@@ -252,7 +252,7 @@ add_fp_unittest(
     .exhaustive_test
     libc.include.math
     libc.src.math.coshf
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
   LINK_LIBRARIES
     -lpthread
 )
@@ -269,7 +269,7 @@ add_fp_unittest(
     .exhaustive_test
     libc.include.math
     libc.src.math.sinhf
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
   LINK_LIBRARIES
     -lpthread
 )
@@ -286,7 +286,7 @@ add_fp_unittest(
     .exhaustive_test
     libc.include.math
     libc.src.math.tanhf
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
   LINK_LIBRARIES
     -lpthread
 )
@@ -303,7 +303,7 @@ add_fp_unittest(
     .exhaustive_test
     libc.include.math
     libc.src.math.atanhf
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
   LINK_LIBRARIES
     -lpthread
 )
@@ -320,7 +320,7 @@ add_fp_unittest(
     .exhaustive_test
     libc.include.math
     libc.src.math.atanf
-    libc.src.__support.FPUtil.fputil
+    libc.src.__support.FPUtil.fp_bits
   LINK_LIBRARIES
     -lpthread
 )

diff  --git a/libc/test/src/math/generic/CMakeLists.txt b/libc/test/src/math/generic/CMakeLists.txt
index 9f04138e281d7..9803f34873e5d 100644
--- a/libc/test/src/math/generic/CMakeLists.txt
+++ b/libc/test/src/math/generic/CMakeLists.txt
@@ -8,7 +8,6 @@ add_fp_unittest(
   DEPENDS
     libc.include.math
     libc.src.math.generic.ceil
-    libc.src.__support.FPUtil.fputil
 )
 
 add_fp_unittest(
@@ -21,7 +20,6 @@ add_fp_unittest(
   DEPENDS
     libc.include.math
     libc.src.math.generic.ceilf
-    libc.src.__support.FPUtil.fputil
 )
 
 add_fp_unittest(
@@ -34,6 +32,5 @@ add_fp_unittest(
   DEPENDS
     libc.include.math
     libc.src.math.generic.ceill
-    libc.src.__support.FPUtil.fputil
 )
 

diff  --git a/libc/test/src/stdio/CMakeLists.txt b/libc/test/src/stdio/CMakeLists.txt
index 2b89a3d87e67d..75bda67b55d32 100644
--- a/libc/test/src/stdio/CMakeLists.txt
+++ b/libc/test/src/stdio/CMakeLists.txt
@@ -71,6 +71,8 @@ add_libc_unittest(
     sprintf_test.cpp
   DEPENDS
     libc.src.stdio.sprintf
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.platform_defs
 )
 
 add_libc_unittest(
@@ -107,7 +109,6 @@ add_libc_unittest(
   DEPENDS
     libc.src.stdio.printf
     libc.src.fenv.fesetround
-    libc.src.__support.FPUtil.fputil
 )
 
 add_subdirectory(printf_core)

diff  --git a/libc/test/utils/FPUtil/CMakeLists.txt b/libc/test/utils/FPUtil/CMakeLists.txt
index c90946dd9ed38..06b7042e20db5 100644
--- a/libc/test/utils/FPUtil/CMakeLists.txt
+++ b/libc/test/utils/FPUtil/CMakeLists.txt
@@ -5,6 +5,6 @@ if((${LIBC_TARGET_OS} STREQUAL "linux") AND (${LIBC_TARGET_ARCHITECTURE_IS_X86})
       x86_long_double_test.cpp
     DEPENDS
       libc.include.math
-      libc.src.__support.FPUtil.fputil
+      libc.src.__support.FPUtil.fp_bits
   )
 endif()

diff  --git a/libc/utils/MPFRWrapper/CMakeLists.txt b/libc/utils/MPFRWrapper/CMakeLists.txt
index 763a3d563e9d1..950b9b76fa934 100644
--- a/libc/utils/MPFRWrapper/CMakeLists.txt
+++ b/libc/utils/MPFRWrapper/CMakeLists.txt
@@ -10,7 +10,8 @@ if(LIBC_TESTS_CAN_USE_MPFR)
     libcMPFRWrapper 
     libc.src.__support.CPP.string_view 
     libc.src.__support.CPP.type_traits 
-    libc.src.__support.FPUtil.fputil 
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.platform_defs
     LibcUnitTest
     libc_test_utils
   )

diff  --git a/libc/utils/UnitTest/CMakeLists.txt b/libc/utils/UnitTest/CMakeLists.txt
index 45c8a7d08d30b..c4dffeaedd0ab 100644
--- a/libc/utils/UnitTest/CMakeLists.txt
+++ b/libc/utils/UnitTest/CMakeLists.txt
@@ -38,7 +38,8 @@ add_dependencies(
   LibcFPTestHelpers
   LibcUnitTest
   libc.utils.UnitTest.string_utils
-  libc.src.__support.FPUtil.fputil
+  libc.src.__support.FPUtil.fp_bits
+  libc.src.__support.FPUtil.fenv_impl
 )
 
 add_library(
@@ -64,7 +65,7 @@ target_link_libraries(LibcPrintfHelpers LibcUnitTest)
 add_dependencies(
   LibcPrintfHelpers
   LibcUnitTest
-  libc.src.__support.FPUtil.fputil #FPBits
+  libc.src.__support.FPUtil.fp_bits
   libc.src.stdio.printf_core.core_structs
   libc.utils.UnitTest.string_utils
 )


        


More information about the libc-commits mailing list