[libc-commits] [libc] [libc][math][c++23] Add Fmabf16 math function (PR #182836)

via libc-commits libc-commits at lists.llvm.org
Mon Feb 23 08:22:28 PST 2026


https://github.com/Sukumarsawant updated https://github.com/llvm/llvm-project/pull/182836

>From cfb7a7fae010c240c286617adb69a560b31e9bfb Mon Sep 17 00:00:00 2001
From: Sukumarsawant <sawantsukumar at gmail.com>
Date: Mon, 9 Feb 2026 13:15:49 +0530
Subject: [PATCH 01/43] initial commit + tests remaining + uncomplete

---
 libc/config/baremetal/aarch64/entrypoints.txt |  1865 +--
 libc/config/baremetal/arm/entrypoints.txt     |  1887 +--
 libc/config/baremetal/riscv/entrypoints.txt   |  1883 +--
 libc/config/darwin/aarch64/entrypoints.txt    |  1495 +-
 libc/config/darwin/x86_64/entrypoints.txt     |   621 +-
 libc/config/gpu/amdgpu/entrypoints.txt        |  1387 +-
 libc/config/gpu/nvptx/entrypoints.txt         |  1391 +-
 libc/config/linux/aarch64/entrypoints.txt     |  2369 +--
 libc/config/linux/arm/entrypoints.txt         |  1075 +-
 libc/config/linux/riscv/entrypoints.txt       |  2663 ++--
 libc/config/linux/x86_64/entrypoints.txt      |  2805 ++--
 libc/config/windows/entrypoints.txt           |   769 +-
 libc/src/math/CMakeLists.txt                  |  1291 +-
 libc/src/math/ffmal.h                         |    40 +-
 libc/src/math/fmabf16.h                       |    21 +
 libc/src/math/generic/CMakeLists.txt          |    14 +
 libc/src/math/generic/fmabf16.cpp             |    21 +
 libc/test/src/math/CMakeLists.txt             |  6948 ++++----
 libc/test/src/math/bf16mul_test.cpp           |    30 +-
 libc/test/src/math/fmabf16_test.cpp           |    29 +
 libc/test/src/math/smoke/CMakeLists.txt       | 13049 ++++++++--------
 libc/test/src/math/smoke/fmabf16_test.cpp     |    14 +
 22 files changed, 20904 insertions(+), 20763 deletions(-)
 create mode 100644 libc/src/math/fmabf16.h
 create mode 100644 libc/src/math/generic/fmabf16.cpp
 create mode 100644 libc/test/src/math/fmabf16_test.cpp
 create mode 100644 libc/test/src/math/smoke/fmabf16_test.cpp

diff --git a/libc/config/baremetal/aarch64/entrypoints.txt b/libc/config/baremetal/aarch64/entrypoints.txt
index 742d96761c415..a8ed932da0fe3 100644
--- a/libc/config/baremetal/aarch64/entrypoints.txt
+++ b/libc/config/baremetal/aarch64/entrypoints.txt
@@ -1,932 +1,933 @@
-set(TARGET_LIBC_ENTRYPOINTS
-    # assert.h entrypoints
-    libc.src.assert.__assert_fail
-
-    # compiler entrypoints (no corresponding header)
-    libc.src.compiler.__stack_chk_fail
-
-    # ctype.h entrypoints
-    libc.src.ctype.isalnum
-    libc.src.ctype.isalpha
-    libc.src.ctype.isascii
-    libc.src.ctype.isblank
-    libc.src.ctype.iscntrl
-    libc.src.ctype.isdigit
-    libc.src.ctype.isgraph
-    libc.src.ctype.islower
-    libc.src.ctype.isprint
-    libc.src.ctype.ispunct
-    libc.src.ctype.isspace
-    libc.src.ctype.isupper
-    libc.src.ctype.isxdigit
-    libc.src.ctype.toascii
-    libc.src.ctype.tolower
-    libc.src.ctype.toupper
-
-    # ctype.h entrypoints
-    libc.src.ctype.isalnum_l
-    libc.src.ctype.isalpha_l
-    libc.src.ctype.isblank_l
-    libc.src.ctype.iscntrl_l
-    libc.src.ctype.isdigit_l
-    libc.src.ctype.isgraph_l
-    libc.src.ctype.islower_l
-    libc.src.ctype.isprint_l
-    libc.src.ctype.ispunct_l
-    libc.src.ctype.isspace_l
-    libc.src.ctype.isupper_l
-    libc.src.ctype.isxdigit_l
-    libc.src.ctype.tolower_l
-    libc.src.ctype.toupper_l
-
-    # errno.h entrypoints
-    libc.src.errno.errno
-
-    # locale.h entrypoints
-    libc.src.locale.localeconv
-    libc.src.locale.duplocale
-    libc.src.locale.freelocale
-    libc.src.locale.localeconv
-    libc.src.locale.newlocale
-    libc.src.locale.setlocale
-    libc.src.locale.uselocale
-
-    # setjmp.h entrypoints
-    libc.src.setjmp.longjmp
-    libc.src.setjmp.setjmp
-
-    # string.h entrypoints
-    libc.src.string.memccpy
-    libc.src.string.memchr
-    libc.src.string.memcmp
-    libc.src.string.memcpy
-    libc.src.string.memmem
-    libc.src.string.memmove
-    libc.src.string.mempcpy
-    libc.src.string.memrchr
-    libc.src.string.memset
-    libc.src.string.memset_explicit
-    libc.src.string.stpcpy
-    libc.src.string.stpncpy
-    libc.src.string.strcasestr
-    libc.src.string.strcat
-    libc.src.string.strchr
-    libc.src.string.strchrnul
-    libc.src.string.strcmp
-    libc.src.string.strcoll
-    libc.src.string.strcpy
-    libc.src.string.strcspn
-    libc.src.string.strdup
-    libc.src.string.strerror
-    libc.src.string.strerror_r
-    libc.src.string.strlcat
-    libc.src.string.strlcpy
-    libc.src.string.strlen
-    libc.src.string.strncat
-    libc.src.string.strncmp
-    libc.src.string.strncpy
-    libc.src.string.strndup
-    libc.src.string.strnlen
-    libc.src.string.strpbrk
-    libc.src.string.strrchr
-    libc.src.string.strsep
-    libc.src.string.strspn
-    libc.src.string.strstr
-    libc.src.string.strtok
-    libc.src.string.strtok_r
-    libc.src.string.strxfrm
-
-    # string.h entrypoints
-    libc.src.string.strcoll_l
-    libc.src.string.strxfrm_l
-
-    # strings.h entrypoints
-    libc.src.strings.bcmp
-    libc.src.strings.bcopy
-    libc.src.strings.bzero
-    libc.src.strings.ffs
-    libc.src.strings.ffsl
-    libc.src.strings.ffsll
-    libc.src.strings.index
-    libc.src.strings.rindex
-    libc.src.strings.strcasecmp
-    libc.src.strings.strncasecmp
-
-    # strings.h entrypoints
-    libc.src.strings.strcasecmp_l
-    libc.src.strings.strncasecmp_l
-
-    # inttypes.h entrypoints
-    libc.src.inttypes.imaxabs
-    libc.src.inttypes.imaxdiv
-    libc.src.inttypes.strtoimax
-    libc.src.inttypes.strtoumax
-
-    # stdio.h entrypoints
-    libc.src.stdio.asprintf
-    libc.src.stdio.feof
-    libc.src.stdio.ferror
-    libc.src.stdio.fgetc
-    libc.src.stdio.fgets
-    libc.src.stdio.fprintf
-    libc.src.stdio.fputc
-    libc.src.stdio.fputs
-    libc.src.stdio.fread
-    libc.src.stdio.fscanf
-    libc.src.stdio.fwrite
-    libc.src.stdio.getchar
-    libc.src.stdio.printf
-    libc.src.stdio.putc
-    libc.src.stdio.putchar
-    libc.src.stdio.puts
-    libc.src.stdio.remove
-    libc.src.stdio.scanf
-    libc.src.stdio.snprintf
-    libc.src.stdio.sprintf
-    libc.src.stdio.sscanf
-    libc.src.stdio.vasprintf
-    libc.src.stdio.vfprintf
-    libc.src.stdio.vfscanf
-    libc.src.stdio.vprintf
-    libc.src.stdio.vscanf
-    libc.src.stdio.vsnprintf
-    libc.src.stdio.vsprintf
-    libc.src.stdio.vsscanf
-
-    # stdbit.h entrypoints
-    libc.src.stdbit.stdc_bit_ceil_uc
-    libc.src.stdbit.stdc_bit_ceil_ui
-    libc.src.stdbit.stdc_bit_ceil_ul
-    libc.src.stdbit.stdc_bit_ceil_ull
-    libc.src.stdbit.stdc_bit_ceil_us
-    libc.src.stdbit.stdc_bit_floor_uc
-    libc.src.stdbit.stdc_bit_floor_ui
-    libc.src.stdbit.stdc_bit_floor_ul
-    libc.src.stdbit.stdc_bit_floor_ull
-    libc.src.stdbit.stdc_bit_floor_us
-    libc.src.stdbit.stdc_bit_width_uc
-    libc.src.stdbit.stdc_bit_width_ui
-    libc.src.stdbit.stdc_bit_width_ul
-    libc.src.stdbit.stdc_bit_width_ull
-    libc.src.stdbit.stdc_bit_width_us
-    libc.src.stdbit.stdc_count_ones_uc
-    libc.src.stdbit.stdc_count_ones_ui
-    libc.src.stdbit.stdc_count_ones_ul
-    libc.src.stdbit.stdc_count_ones_ull
-    libc.src.stdbit.stdc_count_ones_us
-    libc.src.stdbit.stdc_count_zeros_uc
-    libc.src.stdbit.stdc_count_zeros_ui
-    libc.src.stdbit.stdc_count_zeros_ul
-    libc.src.stdbit.stdc_count_zeros_ull
-    libc.src.stdbit.stdc_count_zeros_us
-    libc.src.stdbit.stdc_first_leading_one_uc
-    libc.src.stdbit.stdc_first_leading_one_ui
-    libc.src.stdbit.stdc_first_leading_one_ul
-    libc.src.stdbit.stdc_first_leading_one_ull
-    libc.src.stdbit.stdc_first_leading_one_us
-    libc.src.stdbit.stdc_first_leading_zero_uc
-    libc.src.stdbit.stdc_first_leading_zero_ui
-    libc.src.stdbit.stdc_first_leading_zero_ul
-    libc.src.stdbit.stdc_first_leading_zero_ull
-    libc.src.stdbit.stdc_first_leading_zero_us
-    libc.src.stdbit.stdc_first_trailing_one_uc
-    libc.src.stdbit.stdc_first_trailing_one_ui
-    libc.src.stdbit.stdc_first_trailing_one_ul
-    libc.src.stdbit.stdc_first_trailing_one_ull
-    libc.src.stdbit.stdc_first_trailing_one_us
-    libc.src.stdbit.stdc_first_trailing_zero_uc
-    libc.src.stdbit.stdc_first_trailing_zero_ui
-    libc.src.stdbit.stdc_first_trailing_zero_ul
-    libc.src.stdbit.stdc_first_trailing_zero_ull
-    libc.src.stdbit.stdc_first_trailing_zero_us
-    libc.src.stdbit.stdc_has_single_bit_uc
-    libc.src.stdbit.stdc_has_single_bit_ui
-    libc.src.stdbit.stdc_has_single_bit_ul
-    libc.src.stdbit.stdc_has_single_bit_ull
-    libc.src.stdbit.stdc_has_single_bit_us
-    libc.src.stdbit.stdc_leading_ones_uc
-    libc.src.stdbit.stdc_leading_ones_ui
-    libc.src.stdbit.stdc_leading_ones_ul
-    libc.src.stdbit.stdc_leading_ones_ull
-    libc.src.stdbit.stdc_leading_ones_us
-    libc.src.stdbit.stdc_leading_zeros_uc
-    libc.src.stdbit.stdc_leading_zeros_ui
-    libc.src.stdbit.stdc_leading_zeros_ul
-    libc.src.stdbit.stdc_leading_zeros_ull
-    libc.src.stdbit.stdc_leading_zeros_us
-    libc.src.stdbit.stdc_trailing_ones_uc
-    libc.src.stdbit.stdc_trailing_ones_ui
-    libc.src.stdbit.stdc_trailing_ones_ul
-    libc.src.stdbit.stdc_trailing_ones_ull
-    libc.src.stdbit.stdc_trailing_ones_us
-    libc.src.stdbit.stdc_trailing_zeros_uc
-    libc.src.stdbit.stdc_trailing_zeros_ui
-    libc.src.stdbit.stdc_trailing_zeros_ul
-    libc.src.stdbit.stdc_trailing_zeros_ull
-    libc.src.stdbit.stdc_trailing_zeros_us
-
-    # stdlib.h entrypoints
-    libc.src.stdlib._Exit
-    libc.src.stdlib.a64l
-    libc.src.stdlib.abort
-    libc.src.stdlib.abs
-    libc.src.stdlib.aligned_alloc
-    libc.src.stdlib.atexit
-    libc.src.stdlib.atof
-    libc.src.stdlib.atoi
-    libc.src.stdlib.atol
-    libc.src.stdlib.atoll
-    libc.src.stdlib.bsearch
-    libc.src.stdlib.calloc
-    libc.src.stdlib.div
-    libc.src.stdlib.exit
-    libc.src.stdlib.free
-    libc.src.stdlib.l64a
-    libc.src.stdlib.labs
-    libc.src.stdlib.ldiv
-    libc.src.stdlib.llabs
-    libc.src.stdlib.lldiv
-    libc.src.stdlib.malloc
-    libc.src.stdlib.memalignment
-    libc.src.stdlib.qsort
-    libc.src.stdlib.qsort_r
-    libc.src.stdlib.rand
-    libc.src.stdlib.realloc
-    libc.src.stdlib.srand
-    # libc.src.stdlib.strfromd
-    # libc.src.stdlib.strfromf
-    # libc.src.stdlib.strfroml
-    libc.src.stdlib.strtod
-    libc.src.stdlib.strtof
-    libc.src.stdlib.strtol
-    libc.src.stdlib.strtold
-    libc.src.stdlib.strtoll
-    libc.src.stdlib.strtoul
-    libc.src.stdlib.strtoull
-
-    # stdlib.h entrypoints
-    libc.src.stdlib.strtod_l
-    libc.src.stdlib.strtof_l
-    libc.src.stdlib.strtol_l
-    libc.src.stdlib.strtold_l
-    libc.src.stdlib.strtoll_l
-    libc.src.stdlib.strtoul_l
-    libc.src.stdlib.strtoull_l
-
-    # time.h entrypoints
-    libc.src.time.asctime
-    libc.src.time.asctime_r
-    libc.src.time.clock
-    libc.src.time.ctime
-    libc.src.time.ctime_r
-    libc.src.time.difftime
-    libc.src.time.gmtime
-    libc.src.time.gmtime_r
-    libc.src.time.localtime
-    libc.src.time.localtime_r
-    libc.src.time.mktime
-    libc.src.time.strftime
-    libc.src.time.strftime_l
-    libc.src.time.timespec_get
-
-    # wchar.h entrypoints
-    libc.src.wchar.btowc
-    libc.src.wchar.wcslen
-    libc.src.wchar.wctob
-
-    # internal entrypoints
-    libc.startup.baremetal.init
-    libc.startup.baremetal.fini
-)
-
-set(TARGET_LIBM_ENTRYPOINTS
-    # complex.h entrypoints
-    libc.src.complex.creal
-    libc.src.complex.crealf
-    libc.src.complex.creall
-    libc.src.complex.cimag
-    libc.src.complex.cimagf
-    libc.src.complex.cimagl
-    libc.src.complex.conj
-    libc.src.complex.conjf
-    libc.src.complex.conjl
-    libc.src.complex.cproj
-    libc.src.complex.cprojf
-    libc.src.complex.cprojl
-
-    # fenv.h entrypoints
-    libc.src.fenv.feclearexcept
-    libc.src.fenv.fedisableexcept
-    libc.src.fenv.feenableexcept
-    libc.src.fenv.fegetenv
-    libc.src.fenv.fegetexcept
-    libc.src.fenv.fegetexceptflag
-    libc.src.fenv.fegetround
-    libc.src.fenv.feholdexcept
-    libc.src.fenv.feraiseexcept
-    libc.src.fenv.fesetenv
-    libc.src.fenv.fesetexcept
-    libc.src.fenv.fesetexceptflag
-    libc.src.fenv.fesetround
-    libc.src.fenv.fetestexcept
-    libc.src.fenv.fetestexceptflag
-    libc.src.fenv.feupdateenv
-
-    # math.h entrypoints
-    libc.src.math.acos
-    libc.src.math.acosf
-    libc.src.math.acoshf
-    libc.src.math.asin
-    libc.src.math.asinf
-    libc.src.math.asinhf
-    libc.src.math.atan2
-    libc.src.math.atan2f
-    # libc.src.math.atan2l
-    libc.src.math.atan
-    libc.src.math.atanf
-    libc.src.math.atanhf
-    libc.src.math.canonicalize
-    libc.src.math.canonicalizef
-    libc.src.math.canonicalizel
-    libc.src.math.cbrt
-    libc.src.math.cbrtf
-    libc.src.math.ceil
-    libc.src.math.ceilf
-    libc.src.math.ceill
-    libc.src.math.copysign
-    libc.src.math.copysignf
-    libc.src.math.copysignl
-    libc.src.math.cos
-    libc.src.math.cosf
-    libc.src.math.coshf
-    libc.src.math.cospif
-    libc.src.math.dfmal
-    libc.src.math.dmull
-    libc.src.math.dsqrtl
-    libc.src.math.daddl
-    libc.src.math.ddivl
-    libc.src.math.dsubl
-    libc.src.math.erff
-    libc.src.math.exp
-    libc.src.math.exp10
-    libc.src.math.exp10f
-    libc.src.math.exp10m1f
-    libc.src.math.exp2
-    libc.src.math.exp2f
-    libc.src.math.exp2m1f
-    libc.src.math.expf
-    libc.src.math.expm1
-    libc.src.math.expm1f
-    libc.src.math.fabs
-    libc.src.math.fabsf
-    libc.src.math.fabsl
-    libc.src.math.fadd
-    libc.src.math.faddl
-    libc.src.math.fadd
-    libc.src.math.fdim
-    libc.src.math.fdimf
-    libc.src.math.fdiml
-    libc.src.math.fdiv
-    libc.src.math.fdivl
-    libc.src.math.ffma
-    libc.src.math.ffmal
-    libc.src.math.floor
-    libc.src.math.floorf
-    libc.src.math.floorl
-    libc.src.math.fma
-    libc.src.math.fmaf
-    libc.src.math.fmax
-    libc.src.math.fmaxf
-    libc.src.math.fmaximum
-    libc.src.math.fmaximum_mag
-    libc.src.math.fmaximum_mag_num
-    libc.src.math.fmaximum_mag_numf
-    libc.src.math.fmaximum_mag_numl
-    libc.src.math.fmaximum_magf
-    libc.src.math.fmaximum_magl
-    libc.src.math.fmaximum_num
-    libc.src.math.fmaximum_numf
-    libc.src.math.fmaximum_numl
-    libc.src.math.fmaximumf
-    libc.src.math.fmaximuml
-    libc.src.math.fmaxl
-    libc.src.math.fmin
-    libc.src.math.fminf
-    libc.src.math.fminimum
-    libc.src.math.fminimum_mag
-    libc.src.math.fminimum_mag_num
-    libc.src.math.fminimum_mag_numf
-    libc.src.math.fminimum_mag_numl
-    libc.src.math.fminimum_magf
-    libc.src.math.fminimum_magl
-    libc.src.math.fminimum_num
-    libc.src.math.fminimum_numf
-    libc.src.math.fminimum_numl
-    libc.src.math.fminimumf
-    libc.src.math.fminimuml
-    libc.src.math.fminl
-    libc.src.math.fmod
-    libc.src.math.fmodf
-    libc.src.math.fmodl
-    libc.src.math.fmul
-    libc.src.math.fmull
-    libc.src.math.frexp
-    libc.src.math.frexpf
-    libc.src.math.frexpl
-    libc.src.math.fromfp
-    libc.src.math.fromfpf
-    libc.src.math.fromfpl
-    libc.src.math.fromfpx
-    libc.src.math.fromfpxf
-    libc.src.math.fromfpxl
-    libc.src.math.fsqrt
-    libc.src.math.fsqrtl
-    libc.src.math.fsub
-    libc.src.math.fsubl
-    libc.src.math.getpayload
-    libc.src.math.getpayloadf
-    libc.src.math.getpayloadl
-    libc.src.math.hypot
-    libc.src.math.hypotf
-    libc.src.math.ilogb
-    libc.src.math.ilogbf
-    libc.src.math.ilogbl
-    libc.src.math.iscanonical
-    libc.src.math.iscanonicalf
-    libc.src.math.iscanonicall
-    libc.src.math.isnan
-    libc.src.math.isnanf
-    libc.src.math.isnanl
-    libc.src.math.issignaling
-    libc.src.math.issignalingf
-    libc.src.math.issignalingl
-    libc.src.math.ldexp
-    libc.src.math.ldexpf
-    libc.src.math.ldexpl
-    libc.src.math.llogb
-    libc.src.math.llogbf
-    libc.src.math.llogbl
-    libc.src.math.llrint
-    libc.src.math.llrintf
-    libc.src.math.llrintl
-    libc.src.math.llround
-    libc.src.math.llroundf
-    libc.src.math.llroundl
-    libc.src.math.log
-    libc.src.math.log10
-    libc.src.math.log10f
-    libc.src.math.log1p
-    libc.src.math.log1pf
-    libc.src.math.log2
-    libc.src.math.log2f
-    libc.src.math.logb
-    libc.src.math.logbf
-    libc.src.math.logbl
-    libc.src.math.logf
-    libc.src.math.lrint
-    libc.src.math.lrintf
-    libc.src.math.lrintl
-    libc.src.math.lround
-    libc.src.math.lroundf
-    libc.src.math.lroundl
-    libc.src.math.modf
-    libc.src.math.modff
-    libc.src.math.modfl
-    libc.src.math.nan
-    libc.src.math.nanf
-    libc.src.math.nanl
-    libc.src.math.nearbyint
-    libc.src.math.nearbyintf
-    libc.src.math.nearbyintl
-    libc.src.math.nextafter
-    libc.src.math.nextafterf
-    libc.src.math.nextafterl
-    libc.src.math.nextdown
-    libc.src.math.nextdownf
-    libc.src.math.nextdownl
-    libc.src.math.nexttoward
-    libc.src.math.nexttowardf
-    libc.src.math.nexttowardl
-    libc.src.math.nextup
-    libc.src.math.nextupf
-    libc.src.math.nextupl
-    libc.src.math.pow
-    libc.src.math.powf
-    libc.src.math.remainder
-    libc.src.math.remainderf
-    libc.src.math.remainderl
-    libc.src.math.remquo
-    libc.src.math.remquof
-    libc.src.math.remquol
-    libc.src.math.rint
-    libc.src.math.rintf
-    libc.src.math.rintl
-    libc.src.math.round
-    libc.src.math.roundeven
-    libc.src.math.roundevenf
-    libc.src.math.roundevenl
-    libc.src.math.roundf
-    libc.src.math.roundl
-    libc.src.math.scalbln
-    libc.src.math.scalblnf
-    libc.src.math.scalblnl
-    libc.src.math.scalbn
-    libc.src.math.scalbnf
-    libc.src.math.scalbnl
-    libc.src.math.setpayload
-    libc.src.math.setpayloadf
-    libc.src.math.setpayloadl
-    libc.src.math.setpayloadsig
-    libc.src.math.setpayloadsigf
-    libc.src.math.setpayloadsigl
-    libc.src.math.sin
-    libc.src.math.sincos
-    libc.src.math.sincosf
-    libc.src.math.sinf
-    libc.src.math.sinhf
-    libc.src.math.sinpif
-    libc.src.math.sqrt
-    libc.src.math.sqrtf
-    libc.src.math.sqrtl
-    libc.src.math.tan
-    libc.src.math.tanf
-    libc.src.math.tanhf
-    libc.src.math.totalorder
-    libc.src.math.totalorderf
-    libc.src.math.totalorderl
-    libc.src.math.totalordermag
-    libc.src.math.totalordermagf
-    libc.src.math.totalordermagl
-    libc.src.math.trunc
-    libc.src.math.truncf
-    libc.src.math.truncl
-    libc.src.math.ufromfp
-    libc.src.math.ufromfpf
-    libc.src.math.ufromfpl
-    libc.src.math.ufromfpx
-    libc.src.math.ufromfpxf
-    libc.src.math.ufromfpxl
-)
-
-if(LIBC_TYPES_HAS_CFLOAT16)
-  list(APPEND TARGET_LIBM_ENTRYPOINTS
-    # complex.h C23 _Complex _Float16 entrypoints
-    libc.src.complex.crealf16
-    libc.src.complex.cimagf16
-    libc.src.complex.conjf16
-    libc.src.complex.cprojf16
-  )
-endif()
-
-if(LIBC_TYPES_HAS_FLOAT16)
-  list(APPEND TARGET_LIBM_ENTRYPOINTS
-    # math.h C23 _Float16 entrypoints
-    libc.src.math.acosf16
-    libc.src.math.acoshf16
-    libc.src.math.asinf16
-    libc.src.math.asinhf16
-    libc.src.math.canonicalizef16
-    libc.src.math.ceilf16
-    libc.src.math.copysignf16
-    libc.src.math.cosf16
-    libc.src.math.coshf16
-    libc.src.math.cospif16
-    libc.src.math.exp10f16
-    libc.src.math.exp10m1f16
-    libc.src.math.exp2f16
-    libc.src.math.exp2m1f16
-    libc.src.math.expf16
-    libc.src.math.expm1f16
-    libc.src.math.f16add
-    libc.src.math.f16addf
-    libc.src.math.f16addl
-    libc.src.math.f16div
-    libc.src.math.f16divf
-    libc.src.math.f16divl
-    libc.src.math.f16fma
-    libc.src.math.f16fmaf
-    libc.src.math.f16fmal
-    libc.src.math.f16mul
-    libc.src.math.f16mulf
-    libc.src.math.f16mull
-    libc.src.math.f16sqrt
-    libc.src.math.f16sqrtf
-    libc.src.math.f16sqrtl
-    libc.src.math.f16sub
-    libc.src.math.f16subf
-    libc.src.math.f16subl
-    libc.src.math.fabsf16
-    libc.src.math.fdimf16
-    libc.src.math.floorf16
-    libc.src.math.fmaf16
-    libc.src.math.fmaxf16
-    libc.src.math.fmaximum_mag_numf16
-    libc.src.math.fmaximum_magf16
-    libc.src.math.fmaximum_numf16
-    libc.src.math.fmaximumf16
-    libc.src.math.fminf16
-    libc.src.math.fminimum_mag_numf16
-    libc.src.math.fminimum_magf16
-    libc.src.math.fminimum_numf16
-    libc.src.math.fminimumf16
-    libc.src.math.fmodf16
-    libc.src.math.frexpf16
-    libc.src.math.fromfpf16
-    libc.src.math.fromfpxf16
-    libc.src.math.getpayloadf16
-    libc.src.math.hypotf16
-    libc.src.math.ilogbf16
-    libc.src.math.iscanonicalf16
-    libc.src.math.issignalingf16
-    libc.src.math.ldexpf16
-    libc.src.math.llogbf16
-    libc.src.math.llrintf16
-    libc.src.math.llroundf16
-    libc.src.math.log10f16
-    libc.src.math.log2f16
-    libc.src.math.logbf16
-    libc.src.math.logf16
-    libc.src.math.lrintf16
-    libc.src.math.lroundf16
-    libc.src.math.modff16
-    libc.src.math.nanf16
-    libc.src.math.nearbyintf16
-    libc.src.math.nextafterf16
-    libc.src.math.nextdownf16
-    libc.src.math.nexttowardf16
-    libc.src.math.nextupf16
-    libc.src.math.remainderf16
-    libc.src.math.remquof16
-    libc.src.math.rintf16
-    libc.src.math.roundevenf16
-    libc.src.math.roundf16
-    libc.src.math.scalblnf16
-    libc.src.math.scalbnf16
-    libc.src.math.setpayloadf16
-    libc.src.math.setpayloadsigf16
-    libc.src.math.sinf16
-    libc.src.math.sinhf16
-    libc.src.math.sinpif16
-    libc.src.math.sqrtf16
-    libc.src.math.tanf16
-    libc.src.math.tanhf16
-    libc.src.math.tanpif16
-    libc.src.math.totalorderf16
-    libc.src.math.totalordermagf16
-    libc.src.math.truncf16
-    libc.src.math.ufromfpf16
-    libc.src.math.ufromfpxf16
-  )
-
-  if(LIBC_TYPES_HAS_FLOAT128)
-    list(APPEND TARGET_LIBM_ENTRYPOINTS
-      # math.h C23 mixed _Float16 and _Float128 entrypoints
-      libc.src.math.f16addf128
-      libc.src.math.f16divf128
-      libc.src.math.f16fmaf128
-      libc.src.math.f16mulf128
-      libc.src.math.f16sqrtf128
-      libc.src.math.f16subf128
-    )
-  endif()
-endif()
-
-if(LIBC_TYPES_HAS_CFLOAT128)
-  list(APPEND TARGET_LIBM_ENTRYPOINTS
-    # complex.h C23 _Complex _Float128 entrypoints
-    libc.src.complex.crealf128
-    libc.src.complex.cimagf128
-    libc.src.complex.conjf128
-    libc.src.complex.cprojf128
-  )
-endif()
-
-if(LIBC_TYPES_HAS_FLOAT128)
-  list(APPEND TARGET_LIBM_ENTRYPOINTS
-    # math.h C23 _Float128 entrypoints
-    libc.src.math.atan2f128
-    libc.src.math.canonicalizef128
-    libc.src.math.ceilf128
-    libc.src.math.copysignf128
-    libc.src.math.daddf128
-    libc.src.math.ddivf128
-    libc.src.math.dfmaf128
-    libc.src.math.dmulf128
-    libc.src.math.dsqrtf128
-    libc.src.math.dsubf128
-    libc.src.math.fabsf128
-    libc.src.math.faddf128
-    libc.src.math.fdimf128
-    libc.src.math.fdivf128
-    libc.src.math.ffmaf128
-    libc.src.math.floorf128
-    libc.src.math.fmaxf128
-    libc.src.math.fmaximum_mag_numf128
-    libc.src.math.fmaximum_magf128
-    libc.src.math.fmaximum_numf128
-    libc.src.math.fmaximumf128
-    libc.src.math.fminf128
-    libc.src.math.fminimum_mag_numf128
-    libc.src.math.fminimum_magf128
-    libc.src.math.fminimum_numf128
-    libc.src.math.fminimumf128
-    libc.src.math.fmodf128
-    libc.src.math.fmulf128
-    libc.src.math.frexpf128
-    libc.src.math.fromfpf128
-    libc.src.math.fromfpxf128
-    libc.src.math.fsqrtf128
-    libc.src.math.fsubf128
-    libc.src.math.getpayloadf128
-    libc.src.math.ilogbf128
-    libc.src.math.iscanonicalf128
-    libc.src.math.issignalingf128
-    libc.src.math.ldexpf128
-    libc.src.math.llogbf128
-    libc.src.math.llrintf128
-    libc.src.math.llroundf128
-    libc.src.math.logbf128
-    libc.src.math.lrintf128
-    libc.src.math.lroundf128
-    libc.src.math.modff128
-    libc.src.math.nanf128
-    libc.src.math.nearbyintf128
-    libc.src.math.nextafterf128
-    libc.src.math.nextdownf128
-    libc.src.math.nextupf128
-    libc.src.math.remainderf128
-    libc.src.math.remquof128
-    libc.src.math.rintf128
-    libc.src.math.roundevenf128
-    libc.src.math.roundf128
-    libc.src.math.scalblnf128
-    libc.src.math.scalbnf128
-    libc.src.math.setpayloadf128
-    libc.src.math.setpayloadsigf128
-    libc.src.math.sqrtf128
-    libc.src.math.totalorderf128
-    libc.src.math.totalordermagf128
-    libc.src.math.truncf128
-    libc.src.math.ufromfpf128
-    libc.src.math.ufromfpxf128
-  )
-endif()
-
-list(APPEND TARGET_LIBM_ENTRYPOINTS
-  # bfloat16 entrypoints
-  libc.src.math.bf16add
-  libc.src.math.bf16addf
-  libc.src.math.bf16addl
-  libc.src.math.bf16div
-  libc.src.math.bf16divf
-  libc.src.math.bf16divl
-  libc.src.math.bf16fma
-  libc.src.math.bf16fmaf
-  libc.src.math.bf16fmal
-  libc.src.math.bf16mul
-  libc.src.math.bf16mulf
-  libc.src.math.bf16mull
-  libc.src.math.bf16sub
-  libc.src.math.bf16subf
-  libc.src.math.bf16subl
-  libc.src.math.canonicalizebf16
-  libc.src.math.ceilbf16
-  libc.src.math.copysignbf16
-  libc.src.math.fabsbf16
-  libc.src.math.fdimbf16
-  libc.src.math.floorbf16
-  libc.src.math.fmaxbf16
-  libc.src.math.fmaximumbf16
-  libc.src.math.fmaximum_magbf16
-  libc.src.math.fmaximum_mag_numbf16
-  libc.src.math.fmaximum_numbf16
-  libc.src.math.fminbf16
-  libc.src.math.fminimumbf16
-  libc.src.math.fminimum_magbf16
-  libc.src.math.fminimum_mag_numbf16
-  libc.src.math.fminimum_numbf16
-  libc.src.math.fmodbf16
-  libc.src.math.frexpbf16
-  libc.src.math.fromfpbf16
-  libc.src.math.fromfpxbf16
-  libc.src.math.getpayloadbf16
-  libc.src.math.ilogbbf16
-  libc.src.math.iscanonicalbf16
-  libc.src.math.issignalingbf16
-  libc.src.math.ldexpbf16
-  libc.src.math.llogbbf16
-  libc.src.math.llrintbf16
-  libc.src.math.llroundbf16
-  libc.src.math.log_bf16
-  libc.src.math.logbbf16
-  libc.src.math.lrintbf16
-  libc.src.math.lroundbf16
-  libc.src.math.modfbf16
-  libc.src.math.nanbf16
-  libc.src.math.nearbyintbf16
-  libc.src.math.nextafterbf16
-  libc.src.math.nextdownbf16
-  libc.src.math.nexttowardbf16
-  libc.src.math.nextupbf16
-  libc.src.math.remainderbf16
-  libc.src.math.remquobf16
-  libc.src.math.rintbf16
-  libc.src.math.roundbf16
-  libc.src.math.roundevenbf16
-  libc.src.math.scalblnbf16
-  libc.src.math.scalbnbf16
-  libc.src.math.setpayloadbf16
-  libc.src.math.setpayloadsigbf16
-  libc.src.math.sqrtbf16
-  libc.src.math.truncbf16
-  libc.src.math.totalorderbf16
-  libc.src.math.totalordermagbf16
-  libc.src.math.ufromfpbf16
-  libc.src.math.ufromfpxbf16
-)
-
-if(LIBC_TYPES_HAS_FLOAT128)
-  list(APPEND TARGET_LIBM_ENTRYPOINTS
-    # math.h C++23 mixed bfloat16 and _Float128 entrypoints
-    libc.src.math.bf16addf128
-    libc.src.math.bf16divf128
-    libc.src.math.bf16fmaf128
-    libc.src.math.bf16mulf128
-    libc.src.math.bf16subf128
-  )
-endif()
-
-if(LIBC_COMPILER_HAS_FIXED_POINT)
-  list(APPEND TARGET_LIBM_ENTRYPOINTS
-    # stdfix.h _Fract and _Accum entrypoints
-    libc.src.stdfix.abshk
-    libc.src.stdfix.abshr
-    libc.src.stdfix.absk
-    libc.src.stdfix.abslk
-    libc.src.stdfix.abslr
-    libc.src.stdfix.absr
-    libc.src.stdfix.exphk
-    libc.src.stdfix.expk
-    libc.src.stdfix.roundhk
-    libc.src.stdfix.roundhr
-    libc.src.stdfix.roundk
-    libc.src.stdfix.roundlk
-    libc.src.stdfix.roundlr
-    libc.src.stdfix.roundr
-    libc.src.stdfix.rounduhk
-    libc.src.stdfix.rounduhr
-    libc.src.stdfix.rounduk
-    libc.src.stdfix.roundulk
-    libc.src.stdfix.roundulr
-    libc.src.stdfix.roundur
-    libc.src.stdfix.sqrtuhk
-    libc.src.stdfix.sqrtuhr
-    libc.src.stdfix.sqrtuk
-    libc.src.stdfix.sqrtur
-    # libc.src.stdfix.sqrtulk
-    libc.src.stdfix.sqrtulr
-    libc.src.stdfix.uhksqrtus
-    libc.src.stdfix.uksqrtui
-    libc.src.stdfix.hrbits
-    libc.src.stdfix.uhrbits
-    libc.src.stdfix.rbits
-    libc.src.stdfix.urbits
-    libc.src.stdfix.lrbits
-    libc.src.stdfix.ulrbits
-    libc.src.stdfix.hkbits
-    libc.src.stdfix.uhkbits
-    libc.src.stdfix.kbits
-    libc.src.stdfix.ukbits
-    libc.src.stdfix.lkbits
-    libc.src.stdfix.ulkbits
-    libc.src.stdfix.bitshr
-    libc.src.stdfix.bitsr
-    libc.src.stdfix.bitslr
-    libc.src.stdfix.bitshk
-    libc.src.stdfix.bitsk
-    libc.src.stdfix.bitslk
-    libc.src.stdfix.bitsuhr
-    libc.src.stdfix.bitsur
-    libc.src.stdfix.bitsulr
-    libc.src.stdfix.bitsuhk
-    libc.src.stdfix.bitsuk
-    libc.src.stdfix.bitsulk
-    libc.src.stdfix.countlshr
-    libc.src.stdfix.countlsr
-    libc.src.stdfix.countlslr
-    libc.src.stdfix.countlshk
-    libc.src.stdfix.countlsk
-    libc.src.stdfix.countlslk
-    libc.src.stdfix.countlsuhr
-    libc.src.stdfix.countlsur
-    libc.src.stdfix.countlsulr
-    libc.src.stdfix.countlsuhk
-    libc.src.stdfix.countlsuk
-    libc.src.stdfix.countlsulk
-  )
-endif()
-
-set(TARGET_LLVMLIBC_ENTRYPOINTS
-  ${TARGET_LIBC_ENTRYPOINTS}
-  ${TARGET_LIBM_ENTRYPOINTS}
-)
+set(TARGET_LIBC_ENTRYPOINTS
+    # assert.h entrypoints
+    libc.src.assert.__assert_fail
+
+    # compiler entrypoints (no corresponding header)
+    libc.src.compiler.__stack_chk_fail
+
+    # ctype.h entrypoints
+    libc.src.ctype.isalnum
+    libc.src.ctype.isalpha
+    libc.src.ctype.isascii
+    libc.src.ctype.isblank
+    libc.src.ctype.iscntrl
+    libc.src.ctype.isdigit
+    libc.src.ctype.isgraph
+    libc.src.ctype.islower
+    libc.src.ctype.isprint
+    libc.src.ctype.ispunct
+    libc.src.ctype.isspace
+    libc.src.ctype.isupper
+    libc.src.ctype.isxdigit
+    libc.src.ctype.toascii
+    libc.src.ctype.tolower
+    libc.src.ctype.toupper
+
+    # ctype.h entrypoints
+    libc.src.ctype.isalnum_l
+    libc.src.ctype.isalpha_l
+    libc.src.ctype.isblank_l
+    libc.src.ctype.iscntrl_l
+    libc.src.ctype.isdigit_l
+    libc.src.ctype.isgraph_l
+    libc.src.ctype.islower_l
+    libc.src.ctype.isprint_l
+    libc.src.ctype.ispunct_l
+    libc.src.ctype.isspace_l
+    libc.src.ctype.isupper_l
+    libc.src.ctype.isxdigit_l
+    libc.src.ctype.tolower_l
+    libc.src.ctype.toupper_l
+
+    # errno.h entrypoints
+    libc.src.errno.errno
+
+    # locale.h entrypoints
+    libc.src.locale.localeconv
+    libc.src.locale.duplocale
+    libc.src.locale.freelocale
+    libc.src.locale.localeconv
+    libc.src.locale.newlocale
+    libc.src.locale.setlocale
+    libc.src.locale.uselocale
+
+    # setjmp.h entrypoints
+    libc.src.setjmp.longjmp
+    libc.src.setjmp.setjmp
+
+    # string.h entrypoints
+    libc.src.string.memccpy
+    libc.src.string.memchr
+    libc.src.string.memcmp
+    libc.src.string.memcpy
+    libc.src.string.memmem
+    libc.src.string.memmove
+    libc.src.string.mempcpy
+    libc.src.string.memrchr
+    libc.src.string.memset
+    libc.src.string.memset_explicit
+    libc.src.string.stpcpy
+    libc.src.string.stpncpy
+    libc.src.string.strcasestr
+    libc.src.string.strcat
+    libc.src.string.strchr
+    libc.src.string.strchrnul
+    libc.src.string.strcmp
+    libc.src.string.strcoll
+    libc.src.string.strcpy
+    libc.src.string.strcspn
+    libc.src.string.strdup
+    libc.src.string.strerror
+    libc.src.string.strerror_r
+    libc.src.string.strlcat
+    libc.src.string.strlcpy
+    libc.src.string.strlen
+    libc.src.string.strncat
+    libc.src.string.strncmp
+    libc.src.string.strncpy
+    libc.src.string.strndup
+    libc.src.string.strnlen
+    libc.src.string.strpbrk
+    libc.src.string.strrchr
+    libc.src.string.strsep
+    libc.src.string.strspn
+    libc.src.string.strstr
+    libc.src.string.strtok
+    libc.src.string.strtok_r
+    libc.src.string.strxfrm
+
+    # string.h entrypoints
+    libc.src.string.strcoll_l
+    libc.src.string.strxfrm_l
+
+    # strings.h entrypoints
+    libc.src.strings.bcmp
+    libc.src.strings.bcopy
+    libc.src.strings.bzero
+    libc.src.strings.ffs
+    libc.src.strings.ffsl
+    libc.src.strings.ffsll
+    libc.src.strings.index
+    libc.src.strings.rindex
+    libc.src.strings.strcasecmp
+    libc.src.strings.strncasecmp
+
+    # strings.h entrypoints
+    libc.src.strings.strcasecmp_l
+    libc.src.strings.strncasecmp_l
+
+    # inttypes.h entrypoints
+    libc.src.inttypes.imaxabs
+    libc.src.inttypes.imaxdiv
+    libc.src.inttypes.strtoimax
+    libc.src.inttypes.strtoumax
+
+    # stdio.h entrypoints
+    libc.src.stdio.asprintf
+    libc.src.stdio.feof
+    libc.src.stdio.ferror
+    libc.src.stdio.fgetc
+    libc.src.stdio.fgets
+    libc.src.stdio.fprintf
+    libc.src.stdio.fputc
+    libc.src.stdio.fputs
+    libc.src.stdio.fread
+    libc.src.stdio.fscanf
+    libc.src.stdio.fwrite
+    libc.src.stdio.getchar
+    libc.src.stdio.printf
+    libc.src.stdio.putc
+    libc.src.stdio.putchar
+    libc.src.stdio.puts
+    libc.src.stdio.remove
+    libc.src.stdio.scanf
+    libc.src.stdio.snprintf
+    libc.src.stdio.sprintf
+    libc.src.stdio.sscanf
+    libc.src.stdio.vasprintf
+    libc.src.stdio.vfprintf
+    libc.src.stdio.vfscanf
+    libc.src.stdio.vprintf
+    libc.src.stdio.vscanf
+    libc.src.stdio.vsnprintf
+    libc.src.stdio.vsprintf
+    libc.src.stdio.vsscanf
+
+    # stdbit.h entrypoints
+    libc.src.stdbit.stdc_bit_ceil_uc
+    libc.src.stdbit.stdc_bit_ceil_ui
+    libc.src.stdbit.stdc_bit_ceil_ul
+    libc.src.stdbit.stdc_bit_ceil_ull
+    libc.src.stdbit.stdc_bit_ceil_us
+    libc.src.stdbit.stdc_bit_floor_uc
+    libc.src.stdbit.stdc_bit_floor_ui
+    libc.src.stdbit.stdc_bit_floor_ul
+    libc.src.stdbit.stdc_bit_floor_ull
+    libc.src.stdbit.stdc_bit_floor_us
+    libc.src.stdbit.stdc_bit_width_uc
+    libc.src.stdbit.stdc_bit_width_ui
+    libc.src.stdbit.stdc_bit_width_ul
+    libc.src.stdbit.stdc_bit_width_ull
+    libc.src.stdbit.stdc_bit_width_us
+    libc.src.stdbit.stdc_count_ones_uc
+    libc.src.stdbit.stdc_count_ones_ui
+    libc.src.stdbit.stdc_count_ones_ul
+    libc.src.stdbit.stdc_count_ones_ull
+    libc.src.stdbit.stdc_count_ones_us
+    libc.src.stdbit.stdc_count_zeros_uc
+    libc.src.stdbit.stdc_count_zeros_ui
+    libc.src.stdbit.stdc_count_zeros_ul
+    libc.src.stdbit.stdc_count_zeros_ull
+    libc.src.stdbit.stdc_count_zeros_us
+    libc.src.stdbit.stdc_first_leading_one_uc
+    libc.src.stdbit.stdc_first_leading_one_ui
+    libc.src.stdbit.stdc_first_leading_one_ul
+    libc.src.stdbit.stdc_first_leading_one_ull
+    libc.src.stdbit.stdc_first_leading_one_us
+    libc.src.stdbit.stdc_first_leading_zero_uc
+    libc.src.stdbit.stdc_first_leading_zero_ui
+    libc.src.stdbit.stdc_first_leading_zero_ul
+    libc.src.stdbit.stdc_first_leading_zero_ull
+    libc.src.stdbit.stdc_first_leading_zero_us
+    libc.src.stdbit.stdc_first_trailing_one_uc
+    libc.src.stdbit.stdc_first_trailing_one_ui
+    libc.src.stdbit.stdc_first_trailing_one_ul
+    libc.src.stdbit.stdc_first_trailing_one_ull
+    libc.src.stdbit.stdc_first_trailing_one_us
+    libc.src.stdbit.stdc_first_trailing_zero_uc
+    libc.src.stdbit.stdc_first_trailing_zero_ui
+    libc.src.stdbit.stdc_first_trailing_zero_ul
+    libc.src.stdbit.stdc_first_trailing_zero_ull
+    libc.src.stdbit.stdc_first_trailing_zero_us
+    libc.src.stdbit.stdc_has_single_bit_uc
+    libc.src.stdbit.stdc_has_single_bit_ui
+    libc.src.stdbit.stdc_has_single_bit_ul
+    libc.src.stdbit.stdc_has_single_bit_ull
+    libc.src.stdbit.stdc_has_single_bit_us
+    libc.src.stdbit.stdc_leading_ones_uc
+    libc.src.stdbit.stdc_leading_ones_ui
+    libc.src.stdbit.stdc_leading_ones_ul
+    libc.src.stdbit.stdc_leading_ones_ull
+    libc.src.stdbit.stdc_leading_ones_us
+    libc.src.stdbit.stdc_leading_zeros_uc
+    libc.src.stdbit.stdc_leading_zeros_ui
+    libc.src.stdbit.stdc_leading_zeros_ul
+    libc.src.stdbit.stdc_leading_zeros_ull
+    libc.src.stdbit.stdc_leading_zeros_us
+    libc.src.stdbit.stdc_trailing_ones_uc
+    libc.src.stdbit.stdc_trailing_ones_ui
+    libc.src.stdbit.stdc_trailing_ones_ul
+    libc.src.stdbit.stdc_trailing_ones_ull
+    libc.src.stdbit.stdc_trailing_ones_us
+    libc.src.stdbit.stdc_trailing_zeros_uc
+    libc.src.stdbit.stdc_trailing_zeros_ui
+    libc.src.stdbit.stdc_trailing_zeros_ul
+    libc.src.stdbit.stdc_trailing_zeros_ull
+    libc.src.stdbit.stdc_trailing_zeros_us
+
+    # stdlib.h entrypoints
+    libc.src.stdlib._Exit
+    libc.src.stdlib.a64l
+    libc.src.stdlib.abort
+    libc.src.stdlib.abs
+    libc.src.stdlib.aligned_alloc
+    libc.src.stdlib.atexit
+    libc.src.stdlib.atof
+    libc.src.stdlib.atoi
+    libc.src.stdlib.atol
+    libc.src.stdlib.atoll
+    libc.src.stdlib.bsearch
+    libc.src.stdlib.calloc
+    libc.src.stdlib.div
+    libc.src.stdlib.exit
+    libc.src.stdlib.free
+    libc.src.stdlib.l64a
+    libc.src.stdlib.labs
+    libc.src.stdlib.ldiv
+    libc.src.stdlib.llabs
+    libc.src.stdlib.lldiv
+    libc.src.stdlib.malloc
+    libc.src.stdlib.memalignment
+    libc.src.stdlib.qsort
+    libc.src.stdlib.qsort_r
+    libc.src.stdlib.rand
+    libc.src.stdlib.realloc
+    libc.src.stdlib.srand
+    # libc.src.stdlib.strfromd
+    # libc.src.stdlib.strfromf
+    # libc.src.stdlib.strfroml
+    libc.src.stdlib.strtod
+    libc.src.stdlib.strtof
+    libc.src.stdlib.strtol
+    libc.src.stdlib.strtold
+    libc.src.stdlib.strtoll
+    libc.src.stdlib.strtoul
+    libc.src.stdlib.strtoull
+
+    # stdlib.h entrypoints
+    libc.src.stdlib.strtod_l
+    libc.src.stdlib.strtof_l
+    libc.src.stdlib.strtol_l
+    libc.src.stdlib.strtold_l
+    libc.src.stdlib.strtoll_l
+    libc.src.stdlib.strtoul_l
+    libc.src.stdlib.strtoull_l
+
+    # time.h entrypoints
+    libc.src.time.asctime
+    libc.src.time.asctime_r
+    libc.src.time.clock
+    libc.src.time.ctime
+    libc.src.time.ctime_r
+    libc.src.time.difftime
+    libc.src.time.gmtime
+    libc.src.time.gmtime_r
+    libc.src.time.localtime
+    libc.src.time.localtime_r
+    libc.src.time.mktime
+    libc.src.time.strftime
+    libc.src.time.strftime_l
+    libc.src.time.timespec_get
+
+    # wchar.h entrypoints
+    libc.src.wchar.btowc
+    libc.src.wchar.wcslen
+    libc.src.wchar.wctob
+
+    # internal entrypoints
+    libc.startup.baremetal.init
+    libc.startup.baremetal.fini
+)
+
+set(TARGET_LIBM_ENTRYPOINTS
+    # complex.h entrypoints
+    libc.src.complex.creal
+    libc.src.complex.crealf
+    libc.src.complex.creall
+    libc.src.complex.cimag
+    libc.src.complex.cimagf
+    libc.src.complex.cimagl
+    libc.src.complex.conj
+    libc.src.complex.conjf
+    libc.src.complex.conjl
+    libc.src.complex.cproj
+    libc.src.complex.cprojf
+    libc.src.complex.cprojl
+
+    # fenv.h entrypoints
+    libc.src.fenv.feclearexcept
+    libc.src.fenv.fedisableexcept
+    libc.src.fenv.feenableexcept
+    libc.src.fenv.fegetenv
+    libc.src.fenv.fegetexcept
+    libc.src.fenv.fegetexceptflag
+    libc.src.fenv.fegetround
+    libc.src.fenv.feholdexcept
+    libc.src.fenv.feraiseexcept
+    libc.src.fenv.fesetenv
+    libc.src.fenv.fesetexcept
+    libc.src.fenv.fesetexceptflag
+    libc.src.fenv.fesetround
+    libc.src.fenv.fetestexcept
+    libc.src.fenv.fetestexceptflag
+    libc.src.fenv.feupdateenv
+
+    # math.h entrypoints
+    libc.src.math.acos
+    libc.src.math.acosf
+    libc.src.math.acoshf
+    libc.src.math.asin
+    libc.src.math.asinf
+    libc.src.math.asinhf
+    libc.src.math.atan2
+    libc.src.math.atan2f
+    # libc.src.math.atan2l
+    libc.src.math.atan
+    libc.src.math.atanf
+    libc.src.math.atanhf
+    libc.src.math.canonicalize
+    libc.src.math.canonicalizef
+    libc.src.math.canonicalizel
+    libc.src.math.cbrt
+    libc.src.math.cbrtf
+    libc.src.math.ceil
+    libc.src.math.ceilf
+    libc.src.math.ceill
+    libc.src.math.copysign
+    libc.src.math.copysignf
+    libc.src.math.copysignl
+    libc.src.math.cos
+    libc.src.math.cosf
+    libc.src.math.coshf
+    libc.src.math.cospif
+    libc.src.math.dfmal
+    libc.src.math.dmull
+    libc.src.math.dsqrtl
+    libc.src.math.daddl
+    libc.src.math.ddivl
+    libc.src.math.dsubl
+    libc.src.math.erff
+    libc.src.math.exp
+    libc.src.math.exp10
+    libc.src.math.exp10f
+    libc.src.math.exp10m1f
+    libc.src.math.exp2
+    libc.src.math.exp2f
+    libc.src.math.exp2m1f
+    libc.src.math.expf
+    libc.src.math.expm1
+    libc.src.math.expm1f
+    libc.src.math.fabs
+    libc.src.math.fabsf
+    libc.src.math.fabsl
+    libc.src.math.fadd
+    libc.src.math.faddl
+    libc.src.math.fadd
+    libc.src.math.fdim
+    libc.src.math.fdimf
+    libc.src.math.fdiml
+    libc.src.math.fdiv
+    libc.src.math.fdivl
+    libc.src.math.ffma
+    libc.src.math.ffmal
+    libc.src.math.floor
+    libc.src.math.floorf
+    libc.src.math.floorl
+    libc.src.math.fma
+    libc.src.math.fmabf16
+    libc.src.math.fmaf
+    libc.src.math.fmax
+    libc.src.math.fmaxf
+    libc.src.math.fmaximum
+    libc.src.math.fmaximum_mag
+    libc.src.math.fmaximum_mag_num
+    libc.src.math.fmaximum_mag_numf
+    libc.src.math.fmaximum_mag_numl
+    libc.src.math.fmaximum_magf
+    libc.src.math.fmaximum_magl
+    libc.src.math.fmaximum_num
+    libc.src.math.fmaximum_numf
+    libc.src.math.fmaximum_numl
+    libc.src.math.fmaximumf
+    libc.src.math.fmaximuml
+    libc.src.math.fmaxl
+    libc.src.math.fmin
+    libc.src.math.fminf
+    libc.src.math.fminimum
+    libc.src.math.fminimum_mag
+    libc.src.math.fminimum_mag_num
+    libc.src.math.fminimum_mag_numf
+    libc.src.math.fminimum_mag_numl
+    libc.src.math.fminimum_magf
+    libc.src.math.fminimum_magl
+    libc.src.math.fminimum_num
+    libc.src.math.fminimum_numf
+    libc.src.math.fminimum_numl
+    libc.src.math.fminimumf
+    libc.src.math.fminimuml
+    libc.src.math.fminl
+    libc.src.math.fmod
+    libc.src.math.fmodf
+    libc.src.math.fmodl
+    libc.src.math.fmul
+    libc.src.math.fmull
+    libc.src.math.frexp
+    libc.src.math.frexpf
+    libc.src.math.frexpl
+    libc.src.math.fromfp
+    libc.src.math.fromfpf
+    libc.src.math.fromfpl
+    libc.src.math.fromfpx
+    libc.src.math.fromfpxf
+    libc.src.math.fromfpxl
+    libc.src.math.fsqrt
+    libc.src.math.fsqrtl
+    libc.src.math.fsub
+    libc.src.math.fsubl
+    libc.src.math.getpayload
+    libc.src.math.getpayloadf
+    libc.src.math.getpayloadl
+    libc.src.math.hypot
+    libc.src.math.hypotf
+    libc.src.math.ilogb
+    libc.src.math.ilogbf
+    libc.src.math.ilogbl
+    libc.src.math.iscanonical
+    libc.src.math.iscanonicalf
+    libc.src.math.iscanonicall
+    libc.src.math.isnan
+    libc.src.math.isnanf
+    libc.src.math.isnanl
+    libc.src.math.issignaling
+    libc.src.math.issignalingf
+    libc.src.math.issignalingl
+    libc.src.math.ldexp
+    libc.src.math.ldexpf
+    libc.src.math.ldexpl
+    libc.src.math.llogb
+    libc.src.math.llogbf
+    libc.src.math.llogbl
+    libc.src.math.llrint
+    libc.src.math.llrintf
+    libc.src.math.llrintl
+    libc.src.math.llround
+    libc.src.math.llroundf
+    libc.src.math.llroundl
+    libc.src.math.log
+    libc.src.math.log10
+    libc.src.math.log10f
+    libc.src.math.log1p
+    libc.src.math.log1pf
+    libc.src.math.log2
+    libc.src.math.log2f
+    libc.src.math.logb
+    libc.src.math.logbf
+    libc.src.math.logbl
+    libc.src.math.logf
+    libc.src.math.lrint
+    libc.src.math.lrintf
+    libc.src.math.lrintl
+    libc.src.math.lround
+    libc.src.math.lroundf
+    libc.src.math.lroundl
+    libc.src.math.modf
+    libc.src.math.modff
+    libc.src.math.modfl
+    libc.src.math.nan
+    libc.src.math.nanf
+    libc.src.math.nanl
+    libc.src.math.nearbyint
+    libc.src.math.nearbyintf
+    libc.src.math.nearbyintl
+    libc.src.math.nextafter
+    libc.src.math.nextafterf
+    libc.src.math.nextafterl
+    libc.src.math.nextdown
+    libc.src.math.nextdownf
+    libc.src.math.nextdownl
+    libc.src.math.nexttoward
+    libc.src.math.nexttowardf
+    libc.src.math.nexttowardl
+    libc.src.math.nextup
+    libc.src.math.nextupf
+    libc.src.math.nextupl
+    libc.src.math.pow
+    libc.src.math.powf
+    libc.src.math.remainder
+    libc.src.math.remainderf
+    libc.src.math.remainderl
+    libc.src.math.remquo
+    libc.src.math.remquof
+    libc.src.math.remquol
+    libc.src.math.rint
+    libc.src.math.rintf
+    libc.src.math.rintl
+    libc.src.math.round
+    libc.src.math.roundeven
+    libc.src.math.roundevenf
+    libc.src.math.roundevenl
+    libc.src.math.roundf
+    libc.src.math.roundl
+    libc.src.math.scalbln
+    libc.src.math.scalblnf
+    libc.src.math.scalblnl
+    libc.src.math.scalbn
+    libc.src.math.scalbnf
+    libc.src.math.scalbnl
+    libc.src.math.setpayload
+    libc.src.math.setpayloadf
+    libc.src.math.setpayloadl
+    libc.src.math.setpayloadsig
+    libc.src.math.setpayloadsigf
+    libc.src.math.setpayloadsigl
+    libc.src.math.sin
+    libc.src.math.sincos
+    libc.src.math.sincosf
+    libc.src.math.sinf
+    libc.src.math.sinhf
+    libc.src.math.sinpif
+    libc.src.math.sqrt
+    libc.src.math.sqrtf
+    libc.src.math.sqrtl
+    libc.src.math.tan
+    libc.src.math.tanf
+    libc.src.math.tanhf
+    libc.src.math.totalorder
+    libc.src.math.totalorderf
+    libc.src.math.totalorderl
+    libc.src.math.totalordermag
+    libc.src.math.totalordermagf
+    libc.src.math.totalordermagl
+    libc.src.math.trunc
+    libc.src.math.truncf
+    libc.src.math.truncl
+    libc.src.math.ufromfp
+    libc.src.math.ufromfpf
+    libc.src.math.ufromfpl
+    libc.src.math.ufromfpx
+    libc.src.math.ufromfpxf
+    libc.src.math.ufromfpxl
+)
+
+if(LIBC_TYPES_HAS_CFLOAT16)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # complex.h C23 _Complex _Float16 entrypoints
+    libc.src.complex.crealf16
+    libc.src.complex.cimagf16
+    libc.src.complex.conjf16
+    libc.src.complex.cprojf16
+  )
+endif()
+
+if(LIBC_TYPES_HAS_FLOAT16)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # math.h C23 _Float16 entrypoints
+    libc.src.math.acosf16
+    libc.src.math.acoshf16
+    libc.src.math.asinf16
+    libc.src.math.asinhf16
+    libc.src.math.canonicalizef16
+    libc.src.math.ceilf16
+    libc.src.math.copysignf16
+    libc.src.math.cosf16
+    libc.src.math.coshf16
+    libc.src.math.cospif16
+    libc.src.math.exp10f16
+    libc.src.math.exp10m1f16
+    libc.src.math.exp2f16
+    libc.src.math.exp2m1f16
+    libc.src.math.expf16
+    libc.src.math.expm1f16
+    libc.src.math.f16add
+    libc.src.math.f16addf
+    libc.src.math.f16addl
+    libc.src.math.f16div
+    libc.src.math.f16divf
+    libc.src.math.f16divl
+    libc.src.math.f16fma
+    libc.src.math.f16fmaf
+    libc.src.math.f16fmal
+    libc.src.math.f16mul
+    libc.src.math.f16mulf
+    libc.src.math.f16mull
+    libc.src.math.f16sqrt
+    libc.src.math.f16sqrtf
+    libc.src.math.f16sqrtl
+    libc.src.math.f16sub
+    libc.src.math.f16subf
+    libc.src.math.f16subl
+    libc.src.math.fabsf16
+    libc.src.math.fdimf16
+    libc.src.math.floorf16
+    libc.src.math.fmaf16
+    libc.src.math.fmaxf16
+    libc.src.math.fmaximum_mag_numf16
+    libc.src.math.fmaximum_magf16
+    libc.src.math.fmaximum_numf16
+    libc.src.math.fmaximumf16
+    libc.src.math.fminf16
+    libc.src.math.fminimum_mag_numf16
+    libc.src.math.fminimum_magf16
+    libc.src.math.fminimum_numf16
+    libc.src.math.fminimumf16
+    libc.src.math.fmodf16
+    libc.src.math.frexpf16
+    libc.src.math.fromfpf16
+    libc.src.math.fromfpxf16
+    libc.src.math.getpayloadf16
+    libc.src.math.hypotf16
+    libc.src.math.ilogbf16
+    libc.src.math.iscanonicalf16
+    libc.src.math.issignalingf16
+    libc.src.math.ldexpf16
+    libc.src.math.llogbf16
+    libc.src.math.llrintf16
+    libc.src.math.llroundf16
+    libc.src.math.log10f16
+    libc.src.math.log2f16
+    libc.src.math.logbf16
+    libc.src.math.logf16
+    libc.src.math.lrintf16
+    libc.src.math.lroundf16
+    libc.src.math.modff16
+    libc.src.math.nanf16
+    libc.src.math.nearbyintf16
+    libc.src.math.nextafterf16
+    libc.src.math.nextdownf16
+    libc.src.math.nexttowardf16
+    libc.src.math.nextupf16
+    libc.src.math.remainderf16
+    libc.src.math.remquof16
+    libc.src.math.rintf16
+    libc.src.math.roundevenf16
+    libc.src.math.roundf16
+    libc.src.math.scalblnf16
+    libc.src.math.scalbnf16
+    libc.src.math.setpayloadf16
+    libc.src.math.setpayloadsigf16
+    libc.src.math.sinf16
+    libc.src.math.sinhf16
+    libc.src.math.sinpif16
+    libc.src.math.sqrtf16
+    libc.src.math.tanf16
+    libc.src.math.tanhf16
+    libc.src.math.tanpif16
+    libc.src.math.totalorderf16
+    libc.src.math.totalordermagf16
+    libc.src.math.truncf16
+    libc.src.math.ufromfpf16
+    libc.src.math.ufromfpxf16
+  )
+
+  if(LIBC_TYPES_HAS_FLOAT128)
+    list(APPEND TARGET_LIBM_ENTRYPOINTS
+      # math.h C23 mixed _Float16 and _Float128 entrypoints
+      libc.src.math.f16addf128
+      libc.src.math.f16divf128
+      libc.src.math.f16fmaf128
+      libc.src.math.f16mulf128
+      libc.src.math.f16sqrtf128
+      libc.src.math.f16subf128
+    )
+  endif()
+endif()
+
+if(LIBC_TYPES_HAS_CFLOAT128)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # complex.h C23 _Complex _Float128 entrypoints
+    libc.src.complex.crealf128
+    libc.src.complex.cimagf128
+    libc.src.complex.conjf128
+    libc.src.complex.cprojf128
+  )
+endif()
+
+if(LIBC_TYPES_HAS_FLOAT128)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # math.h C23 _Float128 entrypoints
+    libc.src.math.atan2f128
+    libc.src.math.canonicalizef128
+    libc.src.math.ceilf128
+    libc.src.math.copysignf128
+    libc.src.math.daddf128
+    libc.src.math.ddivf128
+    libc.src.math.dfmaf128
+    libc.src.math.dmulf128
+    libc.src.math.dsqrtf128
+    libc.src.math.dsubf128
+    libc.src.math.fabsf128
+    libc.src.math.faddf128
+    libc.src.math.fdimf128
+    libc.src.math.fdivf128
+    libc.src.math.ffmaf128
+    libc.src.math.floorf128
+    libc.src.math.fmaxf128
+    libc.src.math.fmaximum_mag_numf128
+    libc.src.math.fmaximum_magf128
+    libc.src.math.fmaximum_numf128
+    libc.src.math.fmaximumf128
+    libc.src.math.fminf128
+    libc.src.math.fminimum_mag_numf128
+    libc.src.math.fminimum_magf128
+    libc.src.math.fminimum_numf128
+    libc.src.math.fminimumf128
+    libc.src.math.fmodf128
+    libc.src.math.fmulf128
+    libc.src.math.frexpf128
+    libc.src.math.fromfpf128
+    libc.src.math.fromfpxf128
+    libc.src.math.fsqrtf128
+    libc.src.math.fsubf128
+    libc.src.math.getpayloadf128
+    libc.src.math.ilogbf128
+    libc.src.math.iscanonicalf128
+    libc.src.math.issignalingf128
+    libc.src.math.ldexpf128
+    libc.src.math.llogbf128
+    libc.src.math.llrintf128
+    libc.src.math.llroundf128
+    libc.src.math.logbf128
+    libc.src.math.lrintf128
+    libc.src.math.lroundf128
+    libc.src.math.modff128
+    libc.src.math.nanf128
+    libc.src.math.nearbyintf128
+    libc.src.math.nextafterf128
+    libc.src.math.nextdownf128
+    libc.src.math.nextupf128
+    libc.src.math.remainderf128
+    libc.src.math.remquof128
+    libc.src.math.rintf128
+    libc.src.math.roundevenf128
+    libc.src.math.roundf128
+    libc.src.math.scalblnf128
+    libc.src.math.scalbnf128
+    libc.src.math.setpayloadf128
+    libc.src.math.setpayloadsigf128
+    libc.src.math.sqrtf128
+    libc.src.math.totalorderf128
+    libc.src.math.totalordermagf128
+    libc.src.math.truncf128
+    libc.src.math.ufromfpf128
+    libc.src.math.ufromfpxf128
+  )
+endif()
+
+list(APPEND TARGET_LIBM_ENTRYPOINTS
+  # bfloat16 entrypoints
+  libc.src.math.bf16add
+  libc.src.math.bf16addf
+  libc.src.math.bf16addl
+  libc.src.math.bf16div
+  libc.src.math.bf16divf
+  libc.src.math.bf16divl
+  libc.src.math.bf16fma
+  libc.src.math.bf16fmaf
+  libc.src.math.bf16fmal
+  libc.src.math.bf16mul
+  libc.src.math.bf16mulf
+  libc.src.math.bf16mull
+  libc.src.math.bf16sub
+  libc.src.math.bf16subf
+  libc.src.math.bf16subl
+  libc.src.math.canonicalizebf16
+  libc.src.math.ceilbf16
+  libc.src.math.copysignbf16
+  libc.src.math.fabsbf16
+  libc.src.math.fdimbf16
+  libc.src.math.floorbf16
+  libc.src.math.fmaxbf16
+  libc.src.math.fmaximumbf16
+  libc.src.math.fmaximum_magbf16
+  libc.src.math.fmaximum_mag_numbf16
+  libc.src.math.fmaximum_numbf16
+  libc.src.math.fminbf16
+  libc.src.math.fminimumbf16
+  libc.src.math.fminimum_magbf16
+  libc.src.math.fminimum_mag_numbf16
+  libc.src.math.fminimum_numbf16
+  libc.src.math.fmodbf16
+  libc.src.math.frexpbf16
+  libc.src.math.fromfpbf16
+  libc.src.math.fromfpxbf16
+  libc.src.math.getpayloadbf16
+  libc.src.math.ilogbbf16
+  libc.src.math.iscanonicalbf16
+  libc.src.math.issignalingbf16
+  libc.src.math.ldexpbf16
+  libc.src.math.llogbbf16
+  libc.src.math.llrintbf16
+  libc.src.math.llroundbf16
+  libc.src.math.log_bf16
+  libc.src.math.logbbf16
+  libc.src.math.lrintbf16
+  libc.src.math.lroundbf16
+  libc.src.math.modfbf16
+  libc.src.math.nanbf16
+  libc.src.math.nearbyintbf16
+  libc.src.math.nextafterbf16
+  libc.src.math.nextdownbf16
+  libc.src.math.nexttowardbf16
+  libc.src.math.nextupbf16
+  libc.src.math.remainderbf16
+  libc.src.math.remquobf16
+  libc.src.math.rintbf16
+  libc.src.math.roundbf16
+  libc.src.math.roundevenbf16
+  libc.src.math.scalblnbf16
+  libc.src.math.scalbnbf16
+  libc.src.math.setpayloadbf16
+  libc.src.math.setpayloadsigbf16
+  libc.src.math.sqrtbf16
+  libc.src.math.truncbf16
+  libc.src.math.totalorderbf16
+  libc.src.math.totalordermagbf16
+  libc.src.math.ufromfpbf16
+  libc.src.math.ufromfpxbf16
+)
+
+if(LIBC_TYPES_HAS_FLOAT128)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # math.h C++23 mixed bfloat16 and _Float128 entrypoints
+    libc.src.math.bf16addf128
+    libc.src.math.bf16divf128
+    libc.src.math.bf16fmaf128
+    libc.src.math.bf16mulf128
+    libc.src.math.bf16subf128
+  )
+endif()
+
+if(LIBC_COMPILER_HAS_FIXED_POINT)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # stdfix.h _Fract and _Accum entrypoints
+    libc.src.stdfix.abshk
+    libc.src.stdfix.abshr
+    libc.src.stdfix.absk
+    libc.src.stdfix.abslk
+    libc.src.stdfix.abslr
+    libc.src.stdfix.absr
+    libc.src.stdfix.exphk
+    libc.src.stdfix.expk
+    libc.src.stdfix.roundhk
+    libc.src.stdfix.roundhr
+    libc.src.stdfix.roundk
+    libc.src.stdfix.roundlk
+    libc.src.stdfix.roundlr
+    libc.src.stdfix.roundr
+    libc.src.stdfix.rounduhk
+    libc.src.stdfix.rounduhr
+    libc.src.stdfix.rounduk
+    libc.src.stdfix.roundulk
+    libc.src.stdfix.roundulr
+    libc.src.stdfix.roundur
+    libc.src.stdfix.sqrtuhk
+    libc.src.stdfix.sqrtuhr
+    libc.src.stdfix.sqrtuk
+    libc.src.stdfix.sqrtur
+    # libc.src.stdfix.sqrtulk
+    libc.src.stdfix.sqrtulr
+    libc.src.stdfix.uhksqrtus
+    libc.src.stdfix.uksqrtui
+    libc.src.stdfix.hrbits
+    libc.src.stdfix.uhrbits
+    libc.src.stdfix.rbits
+    libc.src.stdfix.urbits
+    libc.src.stdfix.lrbits
+    libc.src.stdfix.ulrbits
+    libc.src.stdfix.hkbits
+    libc.src.stdfix.uhkbits
+    libc.src.stdfix.kbits
+    libc.src.stdfix.ukbits
+    libc.src.stdfix.lkbits
+    libc.src.stdfix.ulkbits
+    libc.src.stdfix.bitshr
+    libc.src.stdfix.bitsr
+    libc.src.stdfix.bitslr
+    libc.src.stdfix.bitshk
+    libc.src.stdfix.bitsk
+    libc.src.stdfix.bitslk
+    libc.src.stdfix.bitsuhr
+    libc.src.stdfix.bitsur
+    libc.src.stdfix.bitsulr
+    libc.src.stdfix.bitsuhk
+    libc.src.stdfix.bitsuk
+    libc.src.stdfix.bitsulk
+    libc.src.stdfix.countlshr
+    libc.src.stdfix.countlsr
+    libc.src.stdfix.countlslr
+    libc.src.stdfix.countlshk
+    libc.src.stdfix.countlsk
+    libc.src.stdfix.countlslk
+    libc.src.stdfix.countlsuhr
+    libc.src.stdfix.countlsur
+    libc.src.stdfix.countlsulr
+    libc.src.stdfix.countlsuhk
+    libc.src.stdfix.countlsuk
+    libc.src.stdfix.countlsulk
+  )
+endif()
+
+set(TARGET_LLVMLIBC_ENTRYPOINTS
+  ${TARGET_LIBC_ENTRYPOINTS}
+  ${TARGET_LIBM_ENTRYPOINTS}
+)
diff --git a/libc/config/baremetal/arm/entrypoints.txt b/libc/config/baremetal/arm/entrypoints.txt
index 95cb0dea8e49e..a04400f815fe7 100644
--- a/libc/config/baremetal/arm/entrypoints.txt
+++ b/libc/config/baremetal/arm/entrypoints.txt
@@ -1,943 +1,944 @@
-set(TARGET_LIBC_ENTRYPOINTS
-    # assert.h entrypoints
-    libc.src.assert.__assert_fail
-
-    # compiler entrypoints (no corresponding header)
-    libc.src.compiler.__stack_chk_fail
-
-    # ctype.h entrypoints
-    libc.src.ctype.isalnum
-    libc.src.ctype.isalpha
-    libc.src.ctype.isascii
-    libc.src.ctype.isblank
-    libc.src.ctype.iscntrl
-    libc.src.ctype.isdigit
-    libc.src.ctype.isgraph
-    libc.src.ctype.islower
-    libc.src.ctype.isprint
-    libc.src.ctype.ispunct
-    libc.src.ctype.isspace
-    libc.src.ctype.isupper
-    libc.src.ctype.isxdigit
-    libc.src.ctype.toascii
-    libc.src.ctype.tolower
-    libc.src.ctype.toupper
-
-    # ctype.h entrypoints
-    libc.src.ctype.isalnum_l
-    libc.src.ctype.isalpha_l
-    libc.src.ctype.isblank_l
-    libc.src.ctype.iscntrl_l
-    libc.src.ctype.isdigit_l
-    libc.src.ctype.isgraph_l
-    libc.src.ctype.islower_l
-    libc.src.ctype.isprint_l
-    libc.src.ctype.ispunct_l
-    libc.src.ctype.isspace_l
-    libc.src.ctype.isupper_l
-    libc.src.ctype.isxdigit_l
-    libc.src.ctype.tolower_l
-    libc.src.ctype.toupper_l
-
-    # errno.h entrypoints
-    libc.src.errno.errno
-
-    # locale.h entrypoints
-    libc.src.locale.localeconv
-    libc.src.locale.duplocale
-    libc.src.locale.freelocale
-    libc.src.locale.localeconv
-    libc.src.locale.newlocale
-    libc.src.locale.setlocale
-    libc.src.locale.uselocale
-
-    # setjmp.h entrypoints
-    libc.src.setjmp.longjmp
-    libc.src.setjmp.setjmp
-
-    # string.h entrypoints
-    libc.src.string.memccpy
-    libc.src.string.memchr
-    libc.src.string.memcmp
-    libc.src.string.memcpy
-    libc.src.string.memmem
-    libc.src.string.memmove
-    libc.src.string.mempcpy
-    libc.src.string.memrchr
-    libc.src.string.memset
-    libc.src.string.memset_explicit
-    libc.src.string.stpcpy
-    libc.src.string.stpncpy
-    libc.src.string.strcasestr
-    libc.src.string.strcat
-    libc.src.string.strchr
-    libc.src.string.strchrnul
-    libc.src.string.strcmp
-    libc.src.string.strcoll
-    libc.src.string.strcpy
-    libc.src.string.strcspn
-    libc.src.string.strdup
-    libc.src.string.strerror
-    libc.src.string.strerror_r
-    libc.src.string.strlcat
-    libc.src.string.strlcpy
-    libc.src.string.strlen
-    libc.src.string.strncat
-    libc.src.string.strncmp
-    libc.src.string.strncpy
-    libc.src.string.strndup
-    libc.src.string.strnlen
-    libc.src.string.strpbrk
-    libc.src.string.strrchr
-    libc.src.string.strsep
-    libc.src.string.strspn
-    libc.src.string.strstr
-    libc.src.string.strtok
-    libc.src.string.strtok_r
-    libc.src.string.strxfrm
-
-    # string.h entrypoints
-    libc.src.string.strcoll_l
-    libc.src.string.strxfrm_l
-
-    # strings.h entrypoints
-    libc.src.strings.bcmp
-    libc.src.strings.bcopy
-    libc.src.strings.bzero
-    libc.src.strings.ffs
-    libc.src.strings.ffsl
-    libc.src.strings.ffsll
-    libc.src.strings.index
-    libc.src.strings.rindex
-    libc.src.strings.strcasecmp
-    libc.src.strings.strncasecmp
-
-    # strings.h entrypoints
-    libc.src.strings.strcasecmp_l
-    libc.src.strings.strncasecmp_l
-
-    # inttypes.h entrypoints
-    libc.src.inttypes.imaxabs
-    libc.src.inttypes.imaxdiv
-    libc.src.inttypes.strtoimax
-    libc.src.inttypes.strtoumax
-
-    # stdio.h entrypoints
-    libc.src.stdio.asprintf
-    libc.src.stdio.feof
-    libc.src.stdio.ferror
-    libc.src.stdio.fgetc
-    libc.src.stdio.fgets
-    libc.src.stdio.fprintf
-    libc.src.stdio.fputc
-    libc.src.stdio.fputs
-    libc.src.stdio.fread
-    libc.src.stdio.fscanf
-    libc.src.stdio.fwrite
-    libc.src.stdio.getchar
-    libc.src.stdio.printf
-    libc.src.stdio.putc
-    libc.src.stdio.putchar
-    libc.src.stdio.puts
-    libc.src.stdio.remove
-    libc.src.stdio.scanf
-    libc.src.stdio.snprintf
-    libc.src.stdio.sprintf
-    libc.src.stdio.sscanf
-    libc.src.stdio.vasprintf
-    libc.src.stdio.vfprintf
-    libc.src.stdio.vfscanf
-    libc.src.stdio.vprintf
-    libc.src.stdio.vscanf
-    libc.src.stdio.vsnprintf
-    libc.src.stdio.vsprintf
-    libc.src.stdio.vsscanf
-
-    # stdbit.h entrypoints
-    libc.src.stdbit.stdc_bit_ceil_uc
-    libc.src.stdbit.stdc_bit_ceil_ui
-    libc.src.stdbit.stdc_bit_ceil_ul
-    libc.src.stdbit.stdc_bit_ceil_ull
-    libc.src.stdbit.stdc_bit_ceil_us
-    libc.src.stdbit.stdc_bit_floor_uc
-    libc.src.stdbit.stdc_bit_floor_ui
-    libc.src.stdbit.stdc_bit_floor_ul
-    libc.src.stdbit.stdc_bit_floor_ull
-    libc.src.stdbit.stdc_bit_floor_us
-    libc.src.stdbit.stdc_bit_width_uc
-    libc.src.stdbit.stdc_bit_width_ui
-    libc.src.stdbit.stdc_bit_width_ul
-    libc.src.stdbit.stdc_bit_width_ull
-    libc.src.stdbit.stdc_bit_width_us
-    libc.src.stdbit.stdc_count_ones_uc
-    libc.src.stdbit.stdc_count_ones_ui
-    libc.src.stdbit.stdc_count_ones_ul
-    libc.src.stdbit.stdc_count_ones_ull
-    libc.src.stdbit.stdc_count_ones_us
-    libc.src.stdbit.stdc_count_zeros_uc
-    libc.src.stdbit.stdc_count_zeros_ui
-    libc.src.stdbit.stdc_count_zeros_ul
-    libc.src.stdbit.stdc_count_zeros_ull
-    libc.src.stdbit.stdc_count_zeros_us
-    libc.src.stdbit.stdc_first_leading_one_uc
-    libc.src.stdbit.stdc_first_leading_one_ui
-    libc.src.stdbit.stdc_first_leading_one_ul
-    libc.src.stdbit.stdc_first_leading_one_ull
-    libc.src.stdbit.stdc_first_leading_one_us
-    libc.src.stdbit.stdc_first_leading_zero_uc
-    libc.src.stdbit.stdc_first_leading_zero_ui
-    libc.src.stdbit.stdc_first_leading_zero_ul
-    libc.src.stdbit.stdc_first_leading_zero_ull
-    libc.src.stdbit.stdc_first_leading_zero_us
-    libc.src.stdbit.stdc_first_trailing_one_uc
-    libc.src.stdbit.stdc_first_trailing_one_ui
-    libc.src.stdbit.stdc_first_trailing_one_ul
-    libc.src.stdbit.stdc_first_trailing_one_ull
-    libc.src.stdbit.stdc_first_trailing_one_us
-    libc.src.stdbit.stdc_first_trailing_zero_uc
-    libc.src.stdbit.stdc_first_trailing_zero_ui
-    libc.src.stdbit.stdc_first_trailing_zero_ul
-    libc.src.stdbit.stdc_first_trailing_zero_ull
-    libc.src.stdbit.stdc_first_trailing_zero_us
-    libc.src.stdbit.stdc_has_single_bit_uc
-    libc.src.stdbit.stdc_has_single_bit_ui
-    libc.src.stdbit.stdc_has_single_bit_ul
-    libc.src.stdbit.stdc_has_single_bit_ull
-    libc.src.stdbit.stdc_has_single_bit_us
-    libc.src.stdbit.stdc_leading_ones_uc
-    libc.src.stdbit.stdc_leading_ones_ui
-    libc.src.stdbit.stdc_leading_ones_ul
-    libc.src.stdbit.stdc_leading_ones_ull
-    libc.src.stdbit.stdc_leading_ones_us
-    libc.src.stdbit.stdc_leading_zeros_uc
-    libc.src.stdbit.stdc_leading_zeros_ui
-    libc.src.stdbit.stdc_leading_zeros_ul
-    libc.src.stdbit.stdc_leading_zeros_ull
-    libc.src.stdbit.stdc_leading_zeros_us
-    libc.src.stdbit.stdc_trailing_ones_uc
-    libc.src.stdbit.stdc_trailing_ones_ui
-    libc.src.stdbit.stdc_trailing_ones_ul
-    libc.src.stdbit.stdc_trailing_ones_ull
-    libc.src.stdbit.stdc_trailing_ones_us
-    libc.src.stdbit.stdc_trailing_zeros_uc
-    libc.src.stdbit.stdc_trailing_zeros_ui
-    libc.src.stdbit.stdc_trailing_zeros_ul
-    libc.src.stdbit.stdc_trailing_zeros_ull
-    libc.src.stdbit.stdc_trailing_zeros_us
-
-    # stdlib.h entrypoints
-    libc.src.stdlib._Exit
-    libc.src.stdlib.a64l
-    libc.src.stdlib.abort
-    libc.src.stdlib.abs
-    libc.src.stdlib.aligned_alloc
-    libc.src.stdlib.atexit
-    libc.src.stdlib.atof
-    libc.src.stdlib.atoi
-    libc.src.stdlib.atol
-    libc.src.stdlib.atoll
-    libc.src.stdlib.bsearch
-    libc.src.stdlib.calloc
-    libc.src.stdlib.div
-    libc.src.stdlib.exit
-    libc.src.stdlib.free
-    libc.src.stdlib.l64a
-    libc.src.stdlib.labs
-    libc.src.stdlib.ldiv
-    libc.src.stdlib.llabs
-    libc.src.stdlib.lldiv
-    libc.src.stdlib.malloc
-    libc.src.stdlib.memalignment
-    libc.src.stdlib.qsort
-    libc.src.stdlib.qsort_r
-    libc.src.stdlib.rand
-    libc.src.stdlib.realloc
-    libc.src.stdlib.srand
-    # libc.src.stdlib.strfromd
-    # libc.src.stdlib.strfromf
-    # libc.src.stdlib.strfroml
-    libc.src.stdlib.strtod
-    libc.src.stdlib.strtof
-    libc.src.stdlib.strtol
-    libc.src.stdlib.strtold
-    libc.src.stdlib.strtoll
-    libc.src.stdlib.strtoul
-    libc.src.stdlib.strtoull
-
-    # stdlib.h entrypoints
-    libc.src.stdlib.strtod_l
-    libc.src.stdlib.strtof_l
-    libc.src.stdlib.strtol_l
-    libc.src.stdlib.strtold_l
-    libc.src.stdlib.strtoll_l
-    libc.src.stdlib.strtoul_l
-    libc.src.stdlib.strtoull_l
-
-    # time.h entrypoints
-    libc.src.time.asctime
-    libc.src.time.asctime_r
-    libc.src.time.clock
-    libc.src.time.ctime
-    libc.src.time.ctime_r
-    libc.src.time.difftime
-    libc.src.time.gmtime
-    libc.src.time.gmtime_r
-    libc.src.time.localtime
-    libc.src.time.localtime_r
-    libc.src.time.mktime
-    libc.src.time.strftime
-    libc.src.time.strftime_l
-    libc.src.time.timespec_get
-
-    # wchar.h entrypoints
-    libc.src.wchar.btowc
-    libc.src.wchar.wcslen
-    libc.src.wchar.wctob
-
-    # wctype.h entrypoints
-    libc.src.wctype.iswalpha
-
-    # internal entrypoints
-    libc.startup.baremetal.init
-    libc.startup.baremetal.fini
-)
-
-set(TARGET_LIBM_ENTRYPOINTS
-    # complex.h entrypoints
-    libc.src.complex.creal
-    libc.src.complex.crealf
-    libc.src.complex.creall
-    libc.src.complex.cimag
-    libc.src.complex.cimagf
-    libc.src.complex.cimagl
-    libc.src.complex.conj
-    libc.src.complex.conjf
-    libc.src.complex.conjl
-    libc.src.complex.cproj
-    libc.src.complex.cprojf
-    libc.src.complex.cprojl
-
-    # fenv.h entrypoints
-    libc.src.fenv.feclearexcept
-    libc.src.fenv.fedisableexcept
-    libc.src.fenv.feenableexcept
-    libc.src.fenv.fegetenv
-    libc.src.fenv.fegetexcept
-    libc.src.fenv.fegetexceptflag
-    libc.src.fenv.fegetround
-    libc.src.fenv.feholdexcept
-    libc.src.fenv.feraiseexcept
-    libc.src.fenv.fesetenv
-    libc.src.fenv.fesetexcept
-    libc.src.fenv.fesetexceptflag
-    libc.src.fenv.fesetround
-    libc.src.fenv.fetestexcept
-    libc.src.fenv.fetestexceptflag
-    libc.src.fenv.feupdateenv
-
-    # math.h entrypoints
-    libc.src.math.acos
-    libc.src.math.acosf
-    libc.src.math.acoshf
-    libc.src.math.asin
-    libc.src.math.asinf
-    libc.src.math.asinhf
-    libc.src.math.atan2
-    libc.src.math.atan2f
-    libc.src.math.atan2l
-    libc.src.math.atan
-    libc.src.math.atanf
-    libc.src.math.atanhf
-    libc.src.math.canonicalize
-    libc.src.math.canonicalizef
-    libc.src.math.canonicalizel
-    libc.src.math.cbrt
-    libc.src.math.cbrtf
-    libc.src.math.ceil
-    libc.src.math.ceilf
-    libc.src.math.ceill
-    libc.src.math.copysign
-    libc.src.math.copysignf
-    libc.src.math.copysignl
-    libc.src.math.cos
-    libc.src.math.cosf
-    libc.src.math.coshf
-    libc.src.math.cospif
-    libc.src.math.dfmal
-    libc.src.math.dmull
-    libc.src.math.dsqrtl
-    libc.src.math.daddl
-    libc.src.math.ddivl
-    libc.src.math.dsubl
-    libc.src.math.erff
-    libc.src.math.exp
-    libc.src.math.exp10
-    libc.src.math.exp10f
-    libc.src.math.exp10m1f
-    libc.src.math.exp2
-    libc.src.math.exp2f
-    libc.src.math.exp2m1f
-    libc.src.math.expf
-    libc.src.math.expm1
-    libc.src.math.expm1f
-    libc.src.math.fabs
-    libc.src.math.fabsf
-    libc.src.math.fabsl
-    libc.src.math.fadd
-    libc.src.math.faddl
-    libc.src.math.fadd
-    libc.src.math.fdim
-    libc.src.math.fdimf
-    libc.src.math.fdiml
-    libc.src.math.fdiv
-    libc.src.math.fdivl
-    libc.src.math.ffma
-    libc.src.math.ffmal
-    libc.src.math.floor
-    libc.src.math.floorf
-    libc.src.math.floorl
-    libc.src.math.fma
-    libc.src.math.fmaf
-    libc.src.math.fmax
-    libc.src.math.fmaxf
-    libc.src.math.fmaximum
-    libc.src.math.fmaximum_mag
-    libc.src.math.fmaximum_mag_num
-    libc.src.math.fmaximum_mag_numf
-    libc.src.math.fmaximum_mag_numl
-    libc.src.math.fmaximum_magf
-    libc.src.math.fmaximum_magl
-    libc.src.math.fmaximum_num
-    libc.src.math.fmaximum_numf
-    libc.src.math.fmaximum_numl
-    libc.src.math.fmaximumf
-    libc.src.math.fmaximuml
-    libc.src.math.fmaxl
-    libc.src.math.fmin
-    libc.src.math.fminf
-    libc.src.math.fminimum
-    libc.src.math.fminimum_mag
-    libc.src.math.fminimum_mag_num
-    libc.src.math.fminimum_mag_numf
-    libc.src.math.fminimum_mag_numl
-    libc.src.math.fminimum_magf
-    libc.src.math.fminimum_magl
-    libc.src.math.fminimum_num
-    libc.src.math.fminimum_numf
-    libc.src.math.fminimum_numl
-    libc.src.math.fminimumf
-    libc.src.math.fminimuml
-    libc.src.math.fminl
-    libc.src.math.fmod
-    libc.src.math.fmodf
-    libc.src.math.fmodl
-    libc.src.math.fmul
-    libc.src.math.fmull
-    libc.src.math.frexp
-    libc.src.math.frexpf
-    libc.src.math.frexpl
-    libc.src.math.fromfp
-    libc.src.math.fromfpf
-    libc.src.math.fromfpl
-    libc.src.math.fromfpx
-    libc.src.math.fromfpxf
-    libc.src.math.fromfpxl
-    libc.src.math.fsqrt
-    libc.src.math.fsqrtl
-    libc.src.math.fsub
-    libc.src.math.fsubl
-    libc.src.math.getpayload
-    libc.src.math.getpayloadf
-    libc.src.math.getpayloadl
-    libc.src.math.hypot
-    libc.src.math.hypotf
-    libc.src.math.ilogb
-    libc.src.math.ilogbf
-    libc.src.math.ilogbl
-    libc.src.math.iscanonical
-    libc.src.math.iscanonicalf
-    libc.src.math.iscanonicall
-    libc.src.math.isnan
-    libc.src.math.isnanf
-    libc.src.math.isnanl
-    libc.src.math.issignaling
-    libc.src.math.issignalingf
-    libc.src.math.issignalingl
-    libc.src.math.ldexp
-    libc.src.math.ldexpf
-    libc.src.math.ldexpl
-    libc.src.math.llogb
-    libc.src.math.llogbf
-    libc.src.math.llogbl
-    libc.src.math.llrint
-    libc.src.math.llrintf
-    libc.src.math.llrintl
-    libc.src.math.llround
-    libc.src.math.llroundf
-    libc.src.math.llroundl
-    libc.src.math.log
-    libc.src.math.log10
-    libc.src.math.log10f
-    libc.src.math.log1p
-    libc.src.math.log1pf
-    libc.src.math.log2
-    libc.src.math.log2f
-    libc.src.math.logb
-    libc.src.math.logbf
-    libc.src.math.logbl
-    libc.src.math.logf
-    libc.src.math.lrint
-    libc.src.math.lrintf
-    libc.src.math.lrintl
-    libc.src.math.lround
-    libc.src.math.lroundf
-    libc.src.math.lroundl
-    libc.src.math.modf
-    libc.src.math.modff
-    libc.src.math.modfl
-    libc.src.math.nan
-    libc.src.math.nanf
-    libc.src.math.nanl
-    libc.src.math.nearbyint
-    libc.src.math.nearbyintf
-    libc.src.math.nearbyintl
-    libc.src.math.nextafter
-    libc.src.math.nextafterf
-    libc.src.math.nextafterl
-    libc.src.math.nextdown
-    libc.src.math.nextdownf
-    libc.src.math.nextdownl
-    libc.src.math.nexttoward
-    libc.src.math.nexttowardf
-    libc.src.math.nexttowardl
-    libc.src.math.nextup
-    libc.src.math.nextupf
-    libc.src.math.nextupl
-    libc.src.math.pow
-    libc.src.math.powf
-    libc.src.math.remainder
-    libc.src.math.remainderf
-    libc.src.math.remainderl
-    libc.src.math.remquo
-    libc.src.math.remquof
-    libc.src.math.remquol
-    libc.src.math.rint
-    libc.src.math.rintf
-    libc.src.math.rintl
-    libc.src.math.round
-    libc.src.math.roundeven
-    libc.src.math.roundevenf
-    libc.src.math.roundevenl
-    libc.src.math.roundf
-    libc.src.math.roundl
-    libc.src.math.scalbln
-    libc.src.math.scalblnf
-    libc.src.math.scalblnl
-    libc.src.math.scalbn
-    libc.src.math.scalbnf
-    libc.src.math.scalbnl
-    libc.src.math.setpayload
-    libc.src.math.setpayloadf
-    libc.src.math.setpayloadl
-    libc.src.math.setpayloadsig
-    libc.src.math.setpayloadsigf
-    libc.src.math.setpayloadsigl
-    libc.src.math.sin
-    libc.src.math.sincos
-    libc.src.math.sincosf
-    libc.src.math.sinf
-    libc.src.math.sinhf
-    libc.src.math.sinpif
-    libc.src.math.sqrt
-    libc.src.math.sqrtf
-    libc.src.math.sqrtl
-    libc.src.math.tan
-    libc.src.math.tanf
-    libc.src.math.tanhf
-    libc.src.math.totalorder
-    libc.src.math.totalorderf
-    libc.src.math.totalorderl
-    libc.src.math.totalordermag
-    libc.src.math.totalordermagf
-    libc.src.math.totalordermagl
-    libc.src.math.trunc
-    libc.src.math.truncf
-    libc.src.math.truncl
-    libc.src.math.ufromfp
-    libc.src.math.ufromfpf
-    libc.src.math.ufromfpl
-    libc.src.math.ufromfpx
-    libc.src.math.ufromfpxf
-    libc.src.math.ufromfpxl
-)
-
-if(LIBC_TYPES_HAS_CFLOAT16)
-  list(APPEND TARGET_LIBM_ENTRYPOINTS
-    # complex.h C23 _Complex _Float16 entrypoints
-    libc.src.complex.crealf16
-    libc.src.complex.cimagf16
-    libc.src.complex.conjf16
-    libc.src.complex.cprojf16
-  )
-endif()
-
-if(LIBC_TYPES_HAS_FLOAT16)
-  list(APPEND TARGET_LIBM_ENTRYPOINTS
-    # math.h C23 _Float16 entrypoints
-    libc.src.math.acosf16
-    libc.src.math.acoshf16
-    libc.src.math.asinf16
-    libc.src.math.asinhf16
-    libc.src.math.canonicalizef16
-    libc.src.math.ceilf16
-    libc.src.math.copysignf16
-    libc.src.math.cosf16
-    libc.src.math.coshf16
-    libc.src.math.cospif16
-    libc.src.math.exp10f16
-    libc.src.math.exp10m1f16
-    libc.src.math.exp2f16
-    libc.src.math.exp2m1f16
-    libc.src.math.expf16
-    libc.src.math.expm1f16
-    libc.src.math.f16add
-    libc.src.math.f16addf
-    libc.src.math.f16addl
-    libc.src.math.f16div
-    libc.src.math.f16divf
-    libc.src.math.f16divl
-    libc.src.math.f16fma
-    libc.src.math.f16fmaf
-    libc.src.math.f16fmal
-    libc.src.math.f16mul
-    libc.src.math.f16mulf
-    libc.src.math.f16mull
-    libc.src.math.f16sqrt
-    libc.src.math.f16sqrtf
-    libc.src.math.f16sqrtl
-    libc.src.math.f16sub
-    libc.src.math.f16subf
-    libc.src.math.f16subl
-    libc.src.math.fabsf16
-    libc.src.math.fdimf16
-    libc.src.math.floorf16
-    libc.src.math.fmaf16
-    libc.src.math.fmaxf16
-    libc.src.math.fmaximum_mag_numf16
-    libc.src.math.fmaximum_magf16
-    libc.src.math.fmaximum_numf16
-    libc.src.math.fmaximumf16
-    libc.src.math.fminf16
-    libc.src.math.fminimum_mag_numf16
-    libc.src.math.fminimum_magf16
-    libc.src.math.fminimum_numf16
-    libc.src.math.fminimumf16
-    libc.src.math.fmodf16
-    libc.src.math.frexpf16
-    libc.src.math.fromfpf16
-    libc.src.math.fromfpxf16
-    libc.src.math.getpayloadf16
-    libc.src.math.hypotf16
-    libc.src.math.ilogbf16
-    libc.src.math.iscanonicalf16
-    libc.src.math.issignalingf16
-    libc.src.math.ldexpf16
-    libc.src.math.llogbf16
-    libc.src.math.llrintf16
-    libc.src.math.llroundf16
-    libc.src.math.log10f16
-    libc.src.math.log2f16
-    libc.src.math.logbf16
-    libc.src.math.logf16
-    libc.src.math.lrintf16
-    libc.src.math.lroundf16
-    libc.src.math.modff16
-    libc.src.math.nanf16
-    libc.src.math.nearbyintf16
-    libc.src.math.nextafterf16
-    libc.src.math.nextdownf16
-    libc.src.math.nexttowardf16
-    libc.src.math.nextupf16
-    libc.src.math.remainderf16
-    libc.src.math.remquof16
-    libc.src.math.rintf16
-    libc.src.math.roundevenf16
-    libc.src.math.roundf16
-    libc.src.math.scalblnf16
-    libc.src.math.scalbnf16
-    libc.src.math.setpayloadf16
-    libc.src.math.setpayloadsigf16
-    libc.src.math.sinf16
-    libc.src.math.sinhf16
-    libc.src.math.sinpif16
-    libc.src.math.sqrtf16
-    libc.src.math.tanf16
-    libc.src.math.tanhf16
-    libc.src.math.tanpif16
-    libc.src.math.totalorderf16
-    libc.src.math.totalordermagf16
-    libc.src.math.truncf16
-    libc.src.math.ufromfpf16
-    libc.src.math.ufromfpxf16
-  )
-
-  if(LIBC_TYPES_HAS_FLOAT128)
-    list(APPEND TARGET_LIBM_ENTRYPOINTS
-      # math.h C23 mixed _Float16 and _Float128 entrypoints
-      libc.src.math.f16addf128
-      libc.src.math.f16divf128
-      libc.src.math.f16fmaf128
-      libc.src.math.f16mulf128
-      libc.src.math.f16sqrtf128
-      libc.src.math.f16subf128
-    )
-  endif()
-endif()
-
-if(LIBC_TYPES_HAS_CFLOAT128)
-  list(APPEND TARGET_LIBM_ENTRYPOINTS
-    # complex.h C23 _Complex _Float128 entrypoints
-    libc.src.complex.crealf128
-    libc.src.complex.cimagf128
-    libc.src.complex.conjf128
-    libc.src.complex.cprojf128
-  )
-endif()
-
-if(LIBC_TYPES_HAS_FLOAT128)
-  list(APPEND TARGET_LIBM_ENTRYPOINTS
-    # math.h C23 _Float128 entrypoints
-    libc.src.math.atan2f128
-    libc.src.math.canonicalizef128
-    libc.src.math.ceilf128
-    libc.src.math.copysignf128
-    libc.src.math.daddf128
-    libc.src.math.ddivf128
-    libc.src.math.dfmaf128
-    libc.src.math.dmulf128
-    libc.src.math.dsqrtf128
-    libc.src.math.dsubf128
-    libc.src.math.fabsf128
-    libc.src.math.faddf128
-    libc.src.math.fdimf128
-    libc.src.math.fdivf128
-    libc.src.math.ffmaf128
-    libc.src.math.floorf128
-    libc.src.math.fmaxf128
-    libc.src.math.fmaximum_mag_numf128
-    libc.src.math.fmaximum_magf128
-    libc.src.math.fmaximum_numf128
-    libc.src.math.fmaximumf128
-    libc.src.math.fminf128
-    libc.src.math.fminimum_mag_numf128
-    libc.src.math.fminimum_magf128
-    libc.src.math.fminimum_numf128
-    libc.src.math.fminimumf128
-    libc.src.math.fmodf128
-    libc.src.math.fmulf128
-    libc.src.math.frexpf128
-    libc.src.math.fromfpf128
-    libc.src.math.fromfpxf128
-    libc.src.math.fsqrtf128
-    libc.src.math.fsubf128
-    libc.src.math.getpayloadf128
-    libc.src.math.ilogbf128
-    libc.src.math.iscanonicalf128
-    libc.src.math.issignalingf128
-    libc.src.math.ldexpf128
-    libc.src.math.llogbf128
-    libc.src.math.llrintf128
-    libc.src.math.llroundf128
-    libc.src.math.logbf128
-    libc.src.math.lrintf128
-    libc.src.math.lroundf128
-    libc.src.math.modff128
-    libc.src.math.nanf128
-    libc.src.math.nearbyintf128
-    libc.src.math.nextafterf128
-    libc.src.math.nextdownf128
-    libc.src.math.nextupf128
-    libc.src.math.remainderf128
-    libc.src.math.remquof128
-    libc.src.math.rintf128
-    libc.src.math.roundevenf128
-    libc.src.math.roundf128
-    libc.src.math.scalblnf128
-    libc.src.math.scalbnf128
-    libc.src.math.setpayloadf128
-    libc.src.math.setpayloadsigf128
-    libc.src.math.sqrtf128
-    libc.src.math.totalorderf128
-    libc.src.math.totalordermagf128
-    libc.src.math.truncf128
-    libc.src.math.ufromfpf128
-    libc.src.math.ufromfpxf128
-  )
-endif()
-
-list(APPEND TARGET_LIBM_ENTRYPOINTS
-  # bfloat16 entrypoints
-  libc.src.math.bf16add
-  libc.src.math.bf16addf
-  libc.src.math.bf16addl
-  libc.src.math.bf16div
-  libc.src.math.bf16divf
-  libc.src.math.bf16divl
-  libc.src.math.bf16fma
-  libc.src.math.bf16fmaf
-  libc.src.math.bf16fmal
-  libc.src.math.bf16mul
-  libc.src.math.bf16mulf
-  libc.src.math.bf16mull
-  libc.src.math.bf16sub
-  libc.src.math.bf16subf
-  libc.src.math.bf16subl
-  libc.src.math.canonicalizebf16
-  libc.src.math.ceilbf16
-  libc.src.math.copysignbf16
-  libc.src.math.fabsbf16
-  libc.src.math.fdimbf16
-  libc.src.math.floorbf16
-  libc.src.math.fmaxbf16
-  libc.src.math.fmaximumbf16
-  libc.src.math.fmaximum_magbf16
-  libc.src.math.fmaximum_mag_numbf16
-  libc.src.math.fmaximum_numbf16
-  libc.src.math.fminbf16
-  libc.src.math.fminimumbf16
-  libc.src.math.fminimum_magbf16
-  libc.src.math.fminimum_mag_numbf16
-  libc.src.math.fminimum_numbf16
-  libc.src.math.fmodbf16
-  libc.src.math.frexpbf16
-  libc.src.math.fromfpbf16
-  libc.src.math.fromfpxbf16
-  libc.src.math.getpayloadbf16
-  libc.src.math.ilogbbf16
-  libc.src.math.iscanonicalbf16
-  libc.src.math.issignalingbf16
-  libc.src.math.ldexpbf16
-  libc.src.math.llogbbf16
-  libc.src.math.llrintbf16
-  libc.src.math.llroundbf16
-  libc.src.math.log_bf16
-  libc.src.math.logbbf16
-  libc.src.math.lrintbf16
-  libc.src.math.lroundbf16
-  libc.src.math.modfbf16
-  libc.src.math.nanbf16
-  libc.src.math.nearbyintbf16
-  libc.src.math.nextafterbf16
-  libc.src.math.nextdownbf16
-  libc.src.math.nexttowardbf16
-  libc.src.math.nextupbf16
-  libc.src.math.remainderbf16
-  libc.src.math.remquobf16
-  libc.src.math.rintbf16
-  libc.src.math.roundbf16
-  libc.src.math.roundevenbf16
-  libc.src.math.scalblnbf16
-  libc.src.math.scalbnbf16
-  libc.src.math.setpayloadbf16
-  libc.src.math.setpayloadsigbf16
-  libc.src.math.sqrtbf16
-  libc.src.math.truncbf16
-  libc.src.math.totalorderbf16
-  libc.src.math.totalordermagbf16
-  libc.src.math.ufromfpbf16
-  libc.src.math.ufromfpxbf16
-)
-
-if(LIBC_TYPES_HAS_FLOAT128)
-  list(APPEND TARGET_LIBM_ENTRYPOINTS
-    # math.h C++23 mixed bfloat16 and _Float128 entrypoints
-    libc.src.math.bf16addf128
-    libc.src.math.bf16divf128
-    libc.src.math.bf16fmaf128
-    libc.src.math.bf16mulf128
-    libc.src.math.bf16subf128
-  )
-endif()
-
-if(LIBC_COMPILER_HAS_FIXED_POINT)
-  list(APPEND TARGET_LIBM_ENTRYPOINTS
-    # stdfix.h _Fract and _Accum entrypoints
-    libc.src.stdfix.abshk
-    libc.src.stdfix.abshr
-    libc.src.stdfix.absk
-    libc.src.stdfix.abslk
-    libc.src.stdfix.abslr
-    libc.src.stdfix.absr
-    libc.src.stdfix.exphk
-    libc.src.stdfix.expk
-    libc.src.stdfix.roundhk
-    libc.src.stdfix.roundhr
-    libc.src.stdfix.roundk
-    libc.src.stdfix.roundlk
-    libc.src.stdfix.roundlr
-    libc.src.stdfix.roundr
-    libc.src.stdfix.rounduhk
-    libc.src.stdfix.rounduhr
-    libc.src.stdfix.rounduk
-    libc.src.stdfix.roundulk
-    libc.src.stdfix.roundulr
-    libc.src.stdfix.roundur
-    libc.src.stdfix.sqrtuhk
-    libc.src.stdfix.sqrtuhr
-    libc.src.stdfix.sqrtuk
-    libc.src.stdfix.sqrtur
-    # libc.src.stdfix.sqrtulk
-    libc.src.stdfix.sqrtulr
-    libc.src.stdfix.uhksqrtus
-    libc.src.stdfix.uksqrtui
-    libc.src.stdfix.hrbits
-    libc.src.stdfix.uhrbits
-    libc.src.stdfix.rbits
-    libc.src.stdfix.urbits
-    libc.src.stdfix.lrbits
-    libc.src.stdfix.ulrbits
-    libc.src.stdfix.hkbits
-    libc.src.stdfix.uhkbits
-    libc.src.stdfix.kbits
-    libc.src.stdfix.ukbits
-    libc.src.stdfix.lkbits
-    libc.src.stdfix.ulkbits
-    libc.src.stdfix.bitshr
-    libc.src.stdfix.bitsr
-    libc.src.stdfix.bitslr
-    libc.src.stdfix.bitshk
-    libc.src.stdfix.bitsk
-    libc.src.stdfix.bitslk
-    libc.src.stdfix.bitsuhr
-    libc.src.stdfix.bitsur
-    libc.src.stdfix.bitsulr
-    libc.src.stdfix.bitsuhk
-    libc.src.stdfix.bitsuk
-    libc.src.stdfix.bitsulk
-    libc.src.stdfix.countlshr
-    libc.src.stdfix.countlsr
-    libc.src.stdfix.countlslr
-    libc.src.stdfix.countlshk
-    libc.src.stdfix.countlsk
-    libc.src.stdfix.countlslk
-    libc.src.stdfix.countlsuhr
-    libc.src.stdfix.countlsur
-    libc.src.stdfix.countlsulr
-    libc.src.stdfix.countlsuhk
-    libc.src.stdfix.countlsuk
-    libc.src.stdfix.countlsulk
-    libc.src.stdfix.idivr
-    libc.src.stdfix.idivlr
-    libc.src.stdfix.idivk
-    libc.src.stdfix.idivlk
-    libc.src.stdfix.idivur
-    libc.src.stdfix.idivulr
-    libc.src.stdfix.idivuk
-    libc.src.stdfix.idivulk
-  )
-endif()
-
-set(TARGET_LLVMLIBC_ENTRYPOINTS
-  ${TARGET_LIBC_ENTRYPOINTS}
-  ${TARGET_LIBM_ENTRYPOINTS}
-)
+set(TARGET_LIBC_ENTRYPOINTS
+    # assert.h entrypoints
+    libc.src.assert.__assert_fail
+
+    # compiler entrypoints (no corresponding header)
+    libc.src.compiler.__stack_chk_fail
+
+    # ctype.h entrypoints
+    libc.src.ctype.isalnum
+    libc.src.ctype.isalpha
+    libc.src.ctype.isascii
+    libc.src.ctype.isblank
+    libc.src.ctype.iscntrl
+    libc.src.ctype.isdigit
+    libc.src.ctype.isgraph
+    libc.src.ctype.islower
+    libc.src.ctype.isprint
+    libc.src.ctype.ispunct
+    libc.src.ctype.isspace
+    libc.src.ctype.isupper
+    libc.src.ctype.isxdigit
+    libc.src.ctype.toascii
+    libc.src.ctype.tolower
+    libc.src.ctype.toupper
+
+    # ctype.h entrypoints
+    libc.src.ctype.isalnum_l
+    libc.src.ctype.isalpha_l
+    libc.src.ctype.isblank_l
+    libc.src.ctype.iscntrl_l
+    libc.src.ctype.isdigit_l
+    libc.src.ctype.isgraph_l
+    libc.src.ctype.islower_l
+    libc.src.ctype.isprint_l
+    libc.src.ctype.ispunct_l
+    libc.src.ctype.isspace_l
+    libc.src.ctype.isupper_l
+    libc.src.ctype.isxdigit_l
+    libc.src.ctype.tolower_l
+    libc.src.ctype.toupper_l
+
+    # errno.h entrypoints
+    libc.src.errno.errno
+
+    # locale.h entrypoints
+    libc.src.locale.localeconv
+    libc.src.locale.duplocale
+    libc.src.locale.freelocale
+    libc.src.locale.localeconv
+    libc.src.locale.newlocale
+    libc.src.locale.setlocale
+    libc.src.locale.uselocale
+
+    # setjmp.h entrypoints
+    libc.src.setjmp.longjmp
+    libc.src.setjmp.setjmp
+
+    # string.h entrypoints
+    libc.src.string.memccpy
+    libc.src.string.memchr
+    libc.src.string.memcmp
+    libc.src.string.memcpy
+    libc.src.string.memmem
+    libc.src.string.memmove
+    libc.src.string.mempcpy
+    libc.src.string.memrchr
+    libc.src.string.memset
+    libc.src.string.memset_explicit
+    libc.src.string.stpcpy
+    libc.src.string.stpncpy
+    libc.src.string.strcasestr
+    libc.src.string.strcat
+    libc.src.string.strchr
+    libc.src.string.strchrnul
+    libc.src.string.strcmp
+    libc.src.string.strcoll
+    libc.src.string.strcpy
+    libc.src.string.strcspn
+    libc.src.string.strdup
+    libc.src.string.strerror
+    libc.src.string.strerror_r
+    libc.src.string.strlcat
+    libc.src.string.strlcpy
+    libc.src.string.strlen
+    libc.src.string.strncat
+    libc.src.string.strncmp
+    libc.src.string.strncpy
+    libc.src.string.strndup
+    libc.src.string.strnlen
+    libc.src.string.strpbrk
+    libc.src.string.strrchr
+    libc.src.string.strsep
+    libc.src.string.strspn
+    libc.src.string.strstr
+    libc.src.string.strtok
+    libc.src.string.strtok_r
+    libc.src.string.strxfrm
+
+    # string.h entrypoints
+    libc.src.string.strcoll_l
+    libc.src.string.strxfrm_l
+
+    # strings.h entrypoints
+    libc.src.strings.bcmp
+    libc.src.strings.bcopy
+    libc.src.strings.bzero
+    libc.src.strings.ffs
+    libc.src.strings.ffsl
+    libc.src.strings.ffsll
+    libc.src.strings.index
+    libc.src.strings.rindex
+    libc.src.strings.strcasecmp
+    libc.src.strings.strncasecmp
+
+    # strings.h entrypoints
+    libc.src.strings.strcasecmp_l
+    libc.src.strings.strncasecmp_l
+
+    # inttypes.h entrypoints
+    libc.src.inttypes.imaxabs
+    libc.src.inttypes.imaxdiv
+    libc.src.inttypes.strtoimax
+    libc.src.inttypes.strtoumax
+
+    # stdio.h entrypoints
+    libc.src.stdio.asprintf
+    libc.src.stdio.feof
+    libc.src.stdio.ferror
+    libc.src.stdio.fgetc
+    libc.src.stdio.fgets
+    libc.src.stdio.fprintf
+    libc.src.stdio.fputc
+    libc.src.stdio.fputs
+    libc.src.stdio.fread
+    libc.src.stdio.fscanf
+    libc.src.stdio.fwrite
+    libc.src.stdio.getchar
+    libc.src.stdio.printf
+    libc.src.stdio.putc
+    libc.src.stdio.putchar
+    libc.src.stdio.puts
+    libc.src.stdio.remove
+    libc.src.stdio.scanf
+    libc.src.stdio.snprintf
+    libc.src.stdio.sprintf
+    libc.src.stdio.sscanf
+    libc.src.stdio.vasprintf
+    libc.src.stdio.vfprintf
+    libc.src.stdio.vfscanf
+    libc.src.stdio.vprintf
+    libc.src.stdio.vscanf
+    libc.src.stdio.vsnprintf
+    libc.src.stdio.vsprintf
+    libc.src.stdio.vsscanf
+
+    # stdbit.h entrypoints
+    libc.src.stdbit.stdc_bit_ceil_uc
+    libc.src.stdbit.stdc_bit_ceil_ui
+    libc.src.stdbit.stdc_bit_ceil_ul
+    libc.src.stdbit.stdc_bit_ceil_ull
+    libc.src.stdbit.stdc_bit_ceil_us
+    libc.src.stdbit.stdc_bit_floor_uc
+    libc.src.stdbit.stdc_bit_floor_ui
+    libc.src.stdbit.stdc_bit_floor_ul
+    libc.src.stdbit.stdc_bit_floor_ull
+    libc.src.stdbit.stdc_bit_floor_us
+    libc.src.stdbit.stdc_bit_width_uc
+    libc.src.stdbit.stdc_bit_width_ui
+    libc.src.stdbit.stdc_bit_width_ul
+    libc.src.stdbit.stdc_bit_width_ull
+    libc.src.stdbit.stdc_bit_width_us
+    libc.src.stdbit.stdc_count_ones_uc
+    libc.src.stdbit.stdc_count_ones_ui
+    libc.src.stdbit.stdc_count_ones_ul
+    libc.src.stdbit.stdc_count_ones_ull
+    libc.src.stdbit.stdc_count_ones_us
+    libc.src.stdbit.stdc_count_zeros_uc
+    libc.src.stdbit.stdc_count_zeros_ui
+    libc.src.stdbit.stdc_count_zeros_ul
+    libc.src.stdbit.stdc_count_zeros_ull
+    libc.src.stdbit.stdc_count_zeros_us
+    libc.src.stdbit.stdc_first_leading_one_uc
+    libc.src.stdbit.stdc_first_leading_one_ui
+    libc.src.stdbit.stdc_first_leading_one_ul
+    libc.src.stdbit.stdc_first_leading_one_ull
+    libc.src.stdbit.stdc_first_leading_one_us
+    libc.src.stdbit.stdc_first_leading_zero_uc
+    libc.src.stdbit.stdc_first_leading_zero_ui
+    libc.src.stdbit.stdc_first_leading_zero_ul
+    libc.src.stdbit.stdc_first_leading_zero_ull
+    libc.src.stdbit.stdc_first_leading_zero_us
+    libc.src.stdbit.stdc_first_trailing_one_uc
+    libc.src.stdbit.stdc_first_trailing_one_ui
+    libc.src.stdbit.stdc_first_trailing_one_ul
+    libc.src.stdbit.stdc_first_trailing_one_ull
+    libc.src.stdbit.stdc_first_trailing_one_us
+    libc.src.stdbit.stdc_first_trailing_zero_uc
+    libc.src.stdbit.stdc_first_trailing_zero_ui
+    libc.src.stdbit.stdc_first_trailing_zero_ul
+    libc.src.stdbit.stdc_first_trailing_zero_ull
+    libc.src.stdbit.stdc_first_trailing_zero_us
+    libc.src.stdbit.stdc_has_single_bit_uc
+    libc.src.stdbit.stdc_has_single_bit_ui
+    libc.src.stdbit.stdc_has_single_bit_ul
+    libc.src.stdbit.stdc_has_single_bit_ull
+    libc.src.stdbit.stdc_has_single_bit_us
+    libc.src.stdbit.stdc_leading_ones_uc
+    libc.src.stdbit.stdc_leading_ones_ui
+    libc.src.stdbit.stdc_leading_ones_ul
+    libc.src.stdbit.stdc_leading_ones_ull
+    libc.src.stdbit.stdc_leading_ones_us
+    libc.src.stdbit.stdc_leading_zeros_uc
+    libc.src.stdbit.stdc_leading_zeros_ui
+    libc.src.stdbit.stdc_leading_zeros_ul
+    libc.src.stdbit.stdc_leading_zeros_ull
+    libc.src.stdbit.stdc_leading_zeros_us
+    libc.src.stdbit.stdc_trailing_ones_uc
+    libc.src.stdbit.stdc_trailing_ones_ui
+    libc.src.stdbit.stdc_trailing_ones_ul
+    libc.src.stdbit.stdc_trailing_ones_ull
+    libc.src.stdbit.stdc_trailing_ones_us
+    libc.src.stdbit.stdc_trailing_zeros_uc
+    libc.src.stdbit.stdc_trailing_zeros_ui
+    libc.src.stdbit.stdc_trailing_zeros_ul
+    libc.src.stdbit.stdc_trailing_zeros_ull
+    libc.src.stdbit.stdc_trailing_zeros_us
+
+    # stdlib.h entrypoints
+    libc.src.stdlib._Exit
+    libc.src.stdlib.a64l
+    libc.src.stdlib.abort
+    libc.src.stdlib.abs
+    libc.src.stdlib.aligned_alloc
+    libc.src.stdlib.atexit
+    libc.src.stdlib.atof
+    libc.src.stdlib.atoi
+    libc.src.stdlib.atol
+    libc.src.stdlib.atoll
+    libc.src.stdlib.bsearch
+    libc.src.stdlib.calloc
+    libc.src.stdlib.div
+    libc.src.stdlib.exit
+    libc.src.stdlib.free
+    libc.src.stdlib.l64a
+    libc.src.stdlib.labs
+    libc.src.stdlib.ldiv
+    libc.src.stdlib.llabs
+    libc.src.stdlib.lldiv
+    libc.src.stdlib.malloc
+    libc.src.stdlib.memalignment
+    libc.src.stdlib.qsort
+    libc.src.stdlib.qsort_r
+    libc.src.stdlib.rand
+    libc.src.stdlib.realloc
+    libc.src.stdlib.srand
+    # libc.src.stdlib.strfromd
+    # libc.src.stdlib.strfromf
+    # libc.src.stdlib.strfroml
+    libc.src.stdlib.strtod
+    libc.src.stdlib.strtof
+    libc.src.stdlib.strtol
+    libc.src.stdlib.strtold
+    libc.src.stdlib.strtoll
+    libc.src.stdlib.strtoul
+    libc.src.stdlib.strtoull
+
+    # stdlib.h entrypoints
+    libc.src.stdlib.strtod_l
+    libc.src.stdlib.strtof_l
+    libc.src.stdlib.strtol_l
+    libc.src.stdlib.strtold_l
+    libc.src.stdlib.strtoll_l
+    libc.src.stdlib.strtoul_l
+    libc.src.stdlib.strtoull_l
+
+    # time.h entrypoints
+    libc.src.time.asctime
+    libc.src.time.asctime_r
+    libc.src.time.clock
+    libc.src.time.ctime
+    libc.src.time.ctime_r
+    libc.src.time.difftime
+    libc.src.time.gmtime
+    libc.src.time.gmtime_r
+    libc.src.time.localtime
+    libc.src.time.localtime_r
+    libc.src.time.mktime
+    libc.src.time.strftime
+    libc.src.time.strftime_l
+    libc.src.time.timespec_get
+
+    # wchar.h entrypoints
+    libc.src.wchar.btowc
+    libc.src.wchar.wcslen
+    libc.src.wchar.wctob
+
+    # wctype.h entrypoints
+    libc.src.wctype.iswalpha
+
+    # internal entrypoints
+    libc.startup.baremetal.init
+    libc.startup.baremetal.fini
+)
+
+set(TARGET_LIBM_ENTRYPOINTS
+    # complex.h entrypoints
+    libc.src.complex.creal
+    libc.src.complex.crealf
+    libc.src.complex.creall
+    libc.src.complex.cimag
+    libc.src.complex.cimagf
+    libc.src.complex.cimagl
+    libc.src.complex.conj
+    libc.src.complex.conjf
+    libc.src.complex.conjl
+    libc.src.complex.cproj
+    libc.src.complex.cprojf
+    libc.src.complex.cprojl
+
+    # fenv.h entrypoints
+    libc.src.fenv.feclearexcept
+    libc.src.fenv.fedisableexcept
+    libc.src.fenv.feenableexcept
+    libc.src.fenv.fegetenv
+    libc.src.fenv.fegetexcept
+    libc.src.fenv.fegetexceptflag
+    libc.src.fenv.fegetround
+    libc.src.fenv.feholdexcept
+    libc.src.fenv.feraiseexcept
+    libc.src.fenv.fesetenv
+    libc.src.fenv.fesetexcept
+    libc.src.fenv.fesetexceptflag
+    libc.src.fenv.fesetround
+    libc.src.fenv.fetestexcept
+    libc.src.fenv.fetestexceptflag
+    libc.src.fenv.feupdateenv
+
+    # math.h entrypoints
+    libc.src.math.acos
+    libc.src.math.acosf
+    libc.src.math.acoshf
+    libc.src.math.asin
+    libc.src.math.asinf
+    libc.src.math.asinhf
+    libc.src.math.atan2
+    libc.src.math.atan2f
+    libc.src.math.atan2l
+    libc.src.math.atan
+    libc.src.math.atanf
+    libc.src.math.atanhf
+    libc.src.math.canonicalize
+    libc.src.math.canonicalizef
+    libc.src.math.canonicalizel
+    libc.src.math.cbrt
+    libc.src.math.cbrtf
+    libc.src.math.ceil
+    libc.src.math.ceilf
+    libc.src.math.ceill
+    libc.src.math.copysign
+    libc.src.math.copysignf
+    libc.src.math.copysignl
+    libc.src.math.cos
+    libc.src.math.cosf
+    libc.src.math.coshf
+    libc.src.math.cospif
+    libc.src.math.dfmal
+    libc.src.math.dmull
+    libc.src.math.dsqrtl
+    libc.src.math.daddl
+    libc.src.math.ddivl
+    libc.src.math.dsubl
+    libc.src.math.erff
+    libc.src.math.exp
+    libc.src.math.exp10
+    libc.src.math.exp10f
+    libc.src.math.exp10m1f
+    libc.src.math.exp2
+    libc.src.math.exp2f
+    libc.src.math.exp2m1f
+    libc.src.math.expf
+    libc.src.math.expm1
+    libc.src.math.expm1f
+    libc.src.math.fabs
+    libc.src.math.fabsf
+    libc.src.math.fabsl
+    libc.src.math.fadd
+    libc.src.math.faddl
+    libc.src.math.fadd
+    libc.src.math.fdim
+    libc.src.math.fdimf
+    libc.src.math.fdiml
+    libc.src.math.fdiv
+    libc.src.math.fdivl
+    libc.src.math.ffma
+    libc.src.math.ffmal
+    libc.src.math.floor
+    libc.src.math.floorf
+    libc.src.math.floorl
+    libc.src.math.fma
+    libc.src.math.fmabf16
+    libc.src.math.fmaf
+    libc.src.math.fmax
+    libc.src.math.fmaxf
+    libc.src.math.fmaximum
+    libc.src.math.fmaximum_mag
+    libc.src.math.fmaximum_mag_num
+    libc.src.math.fmaximum_mag_numf
+    libc.src.math.fmaximum_mag_numl
+    libc.src.math.fmaximum_magf
+    libc.src.math.fmaximum_magl
+    libc.src.math.fmaximum_num
+    libc.src.math.fmaximum_numf
+    libc.src.math.fmaximum_numl
+    libc.src.math.fmaximumf
+    libc.src.math.fmaximuml
+    libc.src.math.fmaxl
+    libc.src.math.fmin
+    libc.src.math.fminf
+    libc.src.math.fminimum
+    libc.src.math.fminimum_mag
+    libc.src.math.fminimum_mag_num
+    libc.src.math.fminimum_mag_numf
+    libc.src.math.fminimum_mag_numl
+    libc.src.math.fminimum_magf
+    libc.src.math.fminimum_magl
+    libc.src.math.fminimum_num
+    libc.src.math.fminimum_numf
+    libc.src.math.fminimum_numl
+    libc.src.math.fminimumf
+    libc.src.math.fminimuml
+    libc.src.math.fminl
+    libc.src.math.fmod
+    libc.src.math.fmodf
+    libc.src.math.fmodl
+    libc.src.math.fmul
+    libc.src.math.fmull
+    libc.src.math.frexp
+    libc.src.math.frexpf
+    libc.src.math.frexpl
+    libc.src.math.fromfp
+    libc.src.math.fromfpf
+    libc.src.math.fromfpl
+    libc.src.math.fromfpx
+    libc.src.math.fromfpxf
+    libc.src.math.fromfpxl
+    libc.src.math.fsqrt
+    libc.src.math.fsqrtl
+    libc.src.math.fsub
+    libc.src.math.fsubl
+    libc.src.math.getpayload
+    libc.src.math.getpayloadf
+    libc.src.math.getpayloadl
+    libc.src.math.hypot
+    libc.src.math.hypotf
+    libc.src.math.ilogb
+    libc.src.math.ilogbf
+    libc.src.math.ilogbl
+    libc.src.math.iscanonical
+    libc.src.math.iscanonicalf
+    libc.src.math.iscanonicall
+    libc.src.math.isnan
+    libc.src.math.isnanf
+    libc.src.math.isnanl
+    libc.src.math.issignaling
+    libc.src.math.issignalingf
+    libc.src.math.issignalingl
+    libc.src.math.ldexp
+    libc.src.math.ldexpf
+    libc.src.math.ldexpl
+    libc.src.math.llogb
+    libc.src.math.llogbf
+    libc.src.math.llogbl
+    libc.src.math.llrint
+    libc.src.math.llrintf
+    libc.src.math.llrintl
+    libc.src.math.llround
+    libc.src.math.llroundf
+    libc.src.math.llroundl
+    libc.src.math.log
+    libc.src.math.log10
+    libc.src.math.log10f
+    libc.src.math.log1p
+    libc.src.math.log1pf
+    libc.src.math.log2
+    libc.src.math.log2f
+    libc.src.math.logb
+    libc.src.math.logbf
+    libc.src.math.logbl
+    libc.src.math.logf
+    libc.src.math.lrint
+    libc.src.math.lrintf
+    libc.src.math.lrintl
+    libc.src.math.lround
+    libc.src.math.lroundf
+    libc.src.math.lroundl
+    libc.src.math.modf
+    libc.src.math.modff
+    libc.src.math.modfl
+    libc.src.math.nan
+    libc.src.math.nanf
+    libc.src.math.nanl
+    libc.src.math.nearbyint
+    libc.src.math.nearbyintf
+    libc.src.math.nearbyintl
+    libc.src.math.nextafter
+    libc.src.math.nextafterf
+    libc.src.math.nextafterl
+    libc.src.math.nextdown
+    libc.src.math.nextdownf
+    libc.src.math.nextdownl
+    libc.src.math.nexttoward
+    libc.src.math.nexttowardf
+    libc.src.math.nexttowardl
+    libc.src.math.nextup
+    libc.src.math.nextupf
+    libc.src.math.nextupl
+    libc.src.math.pow
+    libc.src.math.powf
+    libc.src.math.remainder
+    libc.src.math.remainderf
+    libc.src.math.remainderl
+    libc.src.math.remquo
+    libc.src.math.remquof
+    libc.src.math.remquol
+    libc.src.math.rint
+    libc.src.math.rintf
+    libc.src.math.rintl
+    libc.src.math.round
+    libc.src.math.roundeven
+    libc.src.math.roundevenf
+    libc.src.math.roundevenl
+    libc.src.math.roundf
+    libc.src.math.roundl
+    libc.src.math.scalbln
+    libc.src.math.scalblnf
+    libc.src.math.scalblnl
+    libc.src.math.scalbn
+    libc.src.math.scalbnf
+    libc.src.math.scalbnl
+    libc.src.math.setpayload
+    libc.src.math.setpayloadf
+    libc.src.math.setpayloadl
+    libc.src.math.setpayloadsig
+    libc.src.math.setpayloadsigf
+    libc.src.math.setpayloadsigl
+    libc.src.math.sin
+    libc.src.math.sincos
+    libc.src.math.sincosf
+    libc.src.math.sinf
+    libc.src.math.sinhf
+    libc.src.math.sinpif
+    libc.src.math.sqrt
+    libc.src.math.sqrtf
+    libc.src.math.sqrtl
+    libc.src.math.tan
+    libc.src.math.tanf
+    libc.src.math.tanhf
+    libc.src.math.totalorder
+    libc.src.math.totalorderf
+    libc.src.math.totalorderl
+    libc.src.math.totalordermag
+    libc.src.math.totalordermagf
+    libc.src.math.totalordermagl
+    libc.src.math.trunc
+    libc.src.math.truncf
+    libc.src.math.truncl
+    libc.src.math.ufromfp
+    libc.src.math.ufromfpf
+    libc.src.math.ufromfpl
+    libc.src.math.ufromfpx
+    libc.src.math.ufromfpxf
+    libc.src.math.ufromfpxl
+)
+
+if(LIBC_TYPES_HAS_CFLOAT16)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # complex.h C23 _Complex _Float16 entrypoints
+    libc.src.complex.crealf16
+    libc.src.complex.cimagf16
+    libc.src.complex.conjf16
+    libc.src.complex.cprojf16
+  )
+endif()
+
+if(LIBC_TYPES_HAS_FLOAT16)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # math.h C23 _Float16 entrypoints
+    libc.src.math.acosf16
+    libc.src.math.acoshf16
+    libc.src.math.asinf16
+    libc.src.math.asinhf16
+    libc.src.math.canonicalizef16
+    libc.src.math.ceilf16
+    libc.src.math.copysignf16
+    libc.src.math.cosf16
+    libc.src.math.coshf16
+    libc.src.math.cospif16
+    libc.src.math.exp10f16
+    libc.src.math.exp10m1f16
+    libc.src.math.exp2f16
+    libc.src.math.exp2m1f16
+    libc.src.math.expf16
+    libc.src.math.expm1f16
+    libc.src.math.f16add
+    libc.src.math.f16addf
+    libc.src.math.f16addl
+    libc.src.math.f16div
+    libc.src.math.f16divf
+    libc.src.math.f16divl
+    libc.src.math.f16fma
+    libc.src.math.f16fmaf
+    libc.src.math.f16fmal
+    libc.src.math.f16mul
+    libc.src.math.f16mulf
+    libc.src.math.f16mull
+    libc.src.math.f16sqrt
+    libc.src.math.f16sqrtf
+    libc.src.math.f16sqrtl
+    libc.src.math.f16sub
+    libc.src.math.f16subf
+    libc.src.math.f16subl
+    libc.src.math.fabsf16
+    libc.src.math.fdimf16
+    libc.src.math.floorf16
+    libc.src.math.fmaf16
+    libc.src.math.fmaxf16
+    libc.src.math.fmaximum_mag_numf16
+    libc.src.math.fmaximum_magf16
+    libc.src.math.fmaximum_numf16
+    libc.src.math.fmaximumf16
+    libc.src.math.fminf16
+    libc.src.math.fminimum_mag_numf16
+    libc.src.math.fminimum_magf16
+    libc.src.math.fminimum_numf16
+    libc.src.math.fminimumf16
+    libc.src.math.fmodf16
+    libc.src.math.frexpf16
+    libc.src.math.fromfpf16
+    libc.src.math.fromfpxf16
+    libc.src.math.getpayloadf16
+    libc.src.math.hypotf16
+    libc.src.math.ilogbf16
+    libc.src.math.iscanonicalf16
+    libc.src.math.issignalingf16
+    libc.src.math.ldexpf16
+    libc.src.math.llogbf16
+    libc.src.math.llrintf16
+    libc.src.math.llroundf16
+    libc.src.math.log10f16
+    libc.src.math.log2f16
+    libc.src.math.logbf16
+    libc.src.math.logf16
+    libc.src.math.lrintf16
+    libc.src.math.lroundf16
+    libc.src.math.modff16
+    libc.src.math.nanf16
+    libc.src.math.nearbyintf16
+    libc.src.math.nextafterf16
+    libc.src.math.nextdownf16
+    libc.src.math.nexttowardf16
+    libc.src.math.nextupf16
+    libc.src.math.remainderf16
+    libc.src.math.remquof16
+    libc.src.math.rintf16
+    libc.src.math.roundevenf16
+    libc.src.math.roundf16
+    libc.src.math.scalblnf16
+    libc.src.math.scalbnf16
+    libc.src.math.setpayloadf16
+    libc.src.math.setpayloadsigf16
+    libc.src.math.sinf16
+    libc.src.math.sinhf16
+    libc.src.math.sinpif16
+    libc.src.math.sqrtf16
+    libc.src.math.tanf16
+    libc.src.math.tanhf16
+    libc.src.math.tanpif16
+    libc.src.math.totalorderf16
+    libc.src.math.totalordermagf16
+    libc.src.math.truncf16
+    libc.src.math.ufromfpf16
+    libc.src.math.ufromfpxf16
+  )
+
+  if(LIBC_TYPES_HAS_FLOAT128)
+    list(APPEND TARGET_LIBM_ENTRYPOINTS
+      # math.h C23 mixed _Float16 and _Float128 entrypoints
+      libc.src.math.f16addf128
+      libc.src.math.f16divf128
+      libc.src.math.f16fmaf128
+      libc.src.math.f16mulf128
+      libc.src.math.f16sqrtf128
+      libc.src.math.f16subf128
+    )
+  endif()
+endif()
+
+if(LIBC_TYPES_HAS_CFLOAT128)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # complex.h C23 _Complex _Float128 entrypoints
+    libc.src.complex.crealf128
+    libc.src.complex.cimagf128
+    libc.src.complex.conjf128
+    libc.src.complex.cprojf128
+  )
+endif()
+
+if(LIBC_TYPES_HAS_FLOAT128)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # math.h C23 _Float128 entrypoints
+    libc.src.math.atan2f128
+    libc.src.math.canonicalizef128
+    libc.src.math.ceilf128
+    libc.src.math.copysignf128
+    libc.src.math.daddf128
+    libc.src.math.ddivf128
+    libc.src.math.dfmaf128
+    libc.src.math.dmulf128
+    libc.src.math.dsqrtf128
+    libc.src.math.dsubf128
+    libc.src.math.fabsf128
+    libc.src.math.faddf128
+    libc.src.math.fdimf128
+    libc.src.math.fdivf128
+    libc.src.math.ffmaf128
+    libc.src.math.floorf128
+    libc.src.math.fmaxf128
+    libc.src.math.fmaximum_mag_numf128
+    libc.src.math.fmaximum_magf128
+    libc.src.math.fmaximum_numf128
+    libc.src.math.fmaximumf128
+    libc.src.math.fminf128
+    libc.src.math.fminimum_mag_numf128
+    libc.src.math.fminimum_magf128
+    libc.src.math.fminimum_numf128
+    libc.src.math.fminimumf128
+    libc.src.math.fmodf128
+    libc.src.math.fmulf128
+    libc.src.math.frexpf128
+    libc.src.math.fromfpf128
+    libc.src.math.fromfpxf128
+    libc.src.math.fsqrtf128
+    libc.src.math.fsubf128
+    libc.src.math.getpayloadf128
+    libc.src.math.ilogbf128
+    libc.src.math.iscanonicalf128
+    libc.src.math.issignalingf128
+    libc.src.math.ldexpf128
+    libc.src.math.llogbf128
+    libc.src.math.llrintf128
+    libc.src.math.llroundf128
+    libc.src.math.logbf128
+    libc.src.math.lrintf128
+    libc.src.math.lroundf128
+    libc.src.math.modff128
+    libc.src.math.nanf128
+    libc.src.math.nearbyintf128
+    libc.src.math.nextafterf128
+    libc.src.math.nextdownf128
+    libc.src.math.nextupf128
+    libc.src.math.remainderf128
+    libc.src.math.remquof128
+    libc.src.math.rintf128
+    libc.src.math.roundevenf128
+    libc.src.math.roundf128
+    libc.src.math.scalblnf128
+    libc.src.math.scalbnf128
+    libc.src.math.setpayloadf128
+    libc.src.math.setpayloadsigf128
+    libc.src.math.sqrtf128
+    libc.src.math.totalorderf128
+    libc.src.math.totalordermagf128
+    libc.src.math.truncf128
+    libc.src.math.ufromfpf128
+    libc.src.math.ufromfpxf128
+  )
+endif()
+
+list(APPEND TARGET_LIBM_ENTRYPOINTS
+  # bfloat16 entrypoints
+  libc.src.math.bf16add
+  libc.src.math.bf16addf
+  libc.src.math.bf16addl
+  libc.src.math.bf16div
+  libc.src.math.bf16divf
+  libc.src.math.bf16divl
+  libc.src.math.bf16fma
+  libc.src.math.bf16fmaf
+  libc.src.math.bf16fmal
+  libc.src.math.bf16mul
+  libc.src.math.bf16mulf
+  libc.src.math.bf16mull
+  libc.src.math.bf16sub
+  libc.src.math.bf16subf
+  libc.src.math.bf16subl
+  libc.src.math.canonicalizebf16
+  libc.src.math.ceilbf16
+  libc.src.math.copysignbf16
+  libc.src.math.fabsbf16
+  libc.src.math.fdimbf16
+  libc.src.math.floorbf16
+  libc.src.math.fmaxbf16
+  libc.src.math.fmaximumbf16
+  libc.src.math.fmaximum_magbf16
+  libc.src.math.fmaximum_mag_numbf16
+  libc.src.math.fmaximum_numbf16
+  libc.src.math.fminbf16
+  libc.src.math.fminimumbf16
+  libc.src.math.fminimum_magbf16
+  libc.src.math.fminimum_mag_numbf16
+  libc.src.math.fminimum_numbf16
+  libc.src.math.fmodbf16
+  libc.src.math.frexpbf16
+  libc.src.math.fromfpbf16
+  libc.src.math.fromfpxbf16
+  libc.src.math.getpayloadbf16
+  libc.src.math.ilogbbf16
+  libc.src.math.iscanonicalbf16
+  libc.src.math.issignalingbf16
+  libc.src.math.ldexpbf16
+  libc.src.math.llogbbf16
+  libc.src.math.llrintbf16
+  libc.src.math.llroundbf16
+  libc.src.math.log_bf16
+  libc.src.math.logbbf16
+  libc.src.math.lrintbf16
+  libc.src.math.lroundbf16
+  libc.src.math.modfbf16
+  libc.src.math.nanbf16
+  libc.src.math.nearbyintbf16
+  libc.src.math.nextafterbf16
+  libc.src.math.nextdownbf16
+  libc.src.math.nexttowardbf16
+  libc.src.math.nextupbf16
+  libc.src.math.remainderbf16
+  libc.src.math.remquobf16
+  libc.src.math.rintbf16
+  libc.src.math.roundbf16
+  libc.src.math.roundevenbf16
+  libc.src.math.scalblnbf16
+  libc.src.math.scalbnbf16
+  libc.src.math.setpayloadbf16
+  libc.src.math.setpayloadsigbf16
+  libc.src.math.sqrtbf16
+  libc.src.math.truncbf16
+  libc.src.math.totalorderbf16
+  libc.src.math.totalordermagbf16
+  libc.src.math.ufromfpbf16
+  libc.src.math.ufromfpxbf16
+)
+
+if(LIBC_TYPES_HAS_FLOAT128)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # math.h C++23 mixed bfloat16 and _Float128 entrypoints
+    libc.src.math.bf16addf128
+    libc.src.math.bf16divf128
+    libc.src.math.bf16fmaf128
+    libc.src.math.bf16mulf128
+    libc.src.math.bf16subf128
+  )
+endif()
+
+if(LIBC_COMPILER_HAS_FIXED_POINT)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # stdfix.h _Fract and _Accum entrypoints
+    libc.src.stdfix.abshk
+    libc.src.stdfix.abshr
+    libc.src.stdfix.absk
+    libc.src.stdfix.abslk
+    libc.src.stdfix.abslr
+    libc.src.stdfix.absr
+    libc.src.stdfix.exphk
+    libc.src.stdfix.expk
+    libc.src.stdfix.roundhk
+    libc.src.stdfix.roundhr
+    libc.src.stdfix.roundk
+    libc.src.stdfix.roundlk
+    libc.src.stdfix.roundlr
+    libc.src.stdfix.roundr
+    libc.src.stdfix.rounduhk
+    libc.src.stdfix.rounduhr
+    libc.src.stdfix.rounduk
+    libc.src.stdfix.roundulk
+    libc.src.stdfix.roundulr
+    libc.src.stdfix.roundur
+    libc.src.stdfix.sqrtuhk
+    libc.src.stdfix.sqrtuhr
+    libc.src.stdfix.sqrtuk
+    libc.src.stdfix.sqrtur
+    # libc.src.stdfix.sqrtulk
+    libc.src.stdfix.sqrtulr
+    libc.src.stdfix.uhksqrtus
+    libc.src.stdfix.uksqrtui
+    libc.src.stdfix.hrbits
+    libc.src.stdfix.uhrbits
+    libc.src.stdfix.rbits
+    libc.src.stdfix.urbits
+    libc.src.stdfix.lrbits
+    libc.src.stdfix.ulrbits
+    libc.src.stdfix.hkbits
+    libc.src.stdfix.uhkbits
+    libc.src.stdfix.kbits
+    libc.src.stdfix.ukbits
+    libc.src.stdfix.lkbits
+    libc.src.stdfix.ulkbits
+    libc.src.stdfix.bitshr
+    libc.src.stdfix.bitsr
+    libc.src.stdfix.bitslr
+    libc.src.stdfix.bitshk
+    libc.src.stdfix.bitsk
+    libc.src.stdfix.bitslk
+    libc.src.stdfix.bitsuhr
+    libc.src.stdfix.bitsur
+    libc.src.stdfix.bitsulr
+    libc.src.stdfix.bitsuhk
+    libc.src.stdfix.bitsuk
+    libc.src.stdfix.bitsulk
+    libc.src.stdfix.countlshr
+    libc.src.stdfix.countlsr
+    libc.src.stdfix.countlslr
+    libc.src.stdfix.countlshk
+    libc.src.stdfix.countlsk
+    libc.src.stdfix.countlslk
+    libc.src.stdfix.countlsuhr
+    libc.src.stdfix.countlsur
+    libc.src.stdfix.countlsulr
+    libc.src.stdfix.countlsuhk
+    libc.src.stdfix.countlsuk
+    libc.src.stdfix.countlsulk
+    libc.src.stdfix.idivr
+    libc.src.stdfix.idivlr
+    libc.src.stdfix.idivk
+    libc.src.stdfix.idivlk
+    libc.src.stdfix.idivur
+    libc.src.stdfix.idivulr
+    libc.src.stdfix.idivuk
+    libc.src.stdfix.idivulk
+  )
+endif()
+
+set(TARGET_LLVMLIBC_ENTRYPOINTS
+  ${TARGET_LIBC_ENTRYPOINTS}
+  ${TARGET_LIBM_ENTRYPOINTS}
+)
diff --git a/libc/config/baremetal/riscv/entrypoints.txt b/libc/config/baremetal/riscv/entrypoints.txt
index 3fc71280f5163..7cad3f33c2980 100644
--- a/libc/config/baremetal/riscv/entrypoints.txt
+++ b/libc/config/baremetal/riscv/entrypoints.txt
@@ -1,941 +1,942 @@
-set(TARGET_LIBC_ENTRYPOINTS
-    # assert.h entrypoints
-    libc.src.assert.__assert_fail
-
-    # compiler entrypoints (no corresponding header)
-    libc.src.compiler.__stack_chk_fail
-
-    # ctype.h entrypoints
-    libc.src.ctype.isalnum
-    libc.src.ctype.isalpha
-    libc.src.ctype.isascii
-    libc.src.ctype.isblank
-    libc.src.ctype.iscntrl
-    libc.src.ctype.isdigit
-    libc.src.ctype.isgraph
-    libc.src.ctype.islower
-    libc.src.ctype.isprint
-    libc.src.ctype.ispunct
-    libc.src.ctype.isspace
-    libc.src.ctype.isupper
-    libc.src.ctype.isxdigit
-    libc.src.ctype.toascii
-    libc.src.ctype.tolower
-    libc.src.ctype.toupper
-
-    # ctype.h entrypoints
-    libc.src.ctype.isalnum_l
-    libc.src.ctype.isalpha_l
-    libc.src.ctype.isblank_l
-    libc.src.ctype.iscntrl_l
-    libc.src.ctype.isdigit_l
-    libc.src.ctype.isgraph_l
-    libc.src.ctype.islower_l
-    libc.src.ctype.isprint_l
-    libc.src.ctype.ispunct_l
-    libc.src.ctype.isspace_l
-    libc.src.ctype.isupper_l
-    libc.src.ctype.isxdigit_l
-    libc.src.ctype.tolower_l
-    libc.src.ctype.toupper_l
-
-    # errno.h entrypoints
-    libc.src.errno.errno
-
-    # locale.h entrypoints
-    libc.src.locale.localeconv
-    libc.src.locale.duplocale
-    libc.src.locale.freelocale
-    libc.src.locale.localeconv
-    libc.src.locale.newlocale
-    libc.src.locale.setlocale
-    libc.src.locale.uselocale
-
-    # setjmp.h entrypoints
-    # libc.src.setjmp.longjmp
-    # libc.src.setjmp.setjmp
-
-    # string.h entrypoints
-    libc.src.string.memccpy
-    libc.src.string.memchr
-    libc.src.string.memcmp
-    libc.src.string.memcpy
-    libc.src.string.memmem
-    libc.src.string.memmove
-    libc.src.string.mempcpy
-    libc.src.string.memrchr
-    libc.src.string.memset
-    libc.src.string.memset_explicit
-    libc.src.string.stpcpy
-    libc.src.string.stpncpy
-    libc.src.string.strcasestr
-    libc.src.string.strcat
-    libc.src.string.strchr
-    libc.src.string.strchrnul
-    libc.src.string.strcmp
-    libc.src.string.strcoll
-    libc.src.string.strcpy
-    libc.src.string.strcspn
-    libc.src.string.strdup
-    libc.src.string.strerror
-    libc.src.string.strerror_r
-    libc.src.string.strlcat
-    libc.src.string.strlcpy
-    libc.src.string.strlen
-    libc.src.string.strncat
-    libc.src.string.strncmp
-    libc.src.string.strncpy
-    libc.src.string.strndup
-    libc.src.string.strnlen
-    libc.src.string.strpbrk
-    libc.src.string.strrchr
-    libc.src.string.strsep
-    libc.src.string.strspn
-    libc.src.string.strstr
-    libc.src.string.strtok
-    libc.src.string.strtok_r
-    libc.src.string.strxfrm
-
-    # string.h entrypoints
-    libc.src.string.strcoll_l
-    libc.src.string.strxfrm_l
-
-    # strings.h entrypoints
-    libc.src.strings.bcmp
-    libc.src.strings.bcopy
-    libc.src.strings.bzero
-    libc.src.strings.ffs
-    libc.src.strings.ffsl
-    libc.src.strings.ffsll
-    libc.src.strings.index
-    libc.src.strings.rindex
-    libc.src.strings.strcasecmp
-    libc.src.strings.strncasecmp
-
-    # strings.h entrypoints
-    libc.src.strings.strcasecmp_l
-    libc.src.strings.strncasecmp_l
-
-    # inttypes.h entrypoints
-    libc.src.inttypes.imaxabs
-    libc.src.inttypes.imaxdiv
-    libc.src.inttypes.strtoimax
-    libc.src.inttypes.strtoumax
-
-    # stdio.h entrypoints
-    libc.src.stdio.asprintf
-    libc.src.stdio.feof
-    libc.src.stdio.ferror
-    libc.src.stdio.fgetc
-    libc.src.stdio.fgets
-    libc.src.stdio.fprintf
-    libc.src.stdio.fputc
-    libc.src.stdio.fputs
-    libc.src.stdio.fread
-    libc.src.stdio.fscanf
-    libc.src.stdio.fwrite
-    libc.src.stdio.getchar
-    libc.src.stdio.printf
-    libc.src.stdio.putc
-    libc.src.stdio.putchar
-    libc.src.stdio.puts
-    libc.src.stdio.remove
-    libc.src.stdio.scanf
-    libc.src.stdio.snprintf
-    libc.src.stdio.sprintf
-    libc.src.stdio.sscanf
-    libc.src.stdio.vasprintf
-    libc.src.stdio.vfprintf
-    libc.src.stdio.vfscanf
-    libc.src.stdio.vprintf
-    libc.src.stdio.vscanf
-    libc.src.stdio.vsnprintf
-    libc.src.stdio.vsprintf
-    libc.src.stdio.vsscanf
-
-    # stdbit.h entrypoints
-    libc.src.stdbit.stdc_bit_ceil_uc
-    libc.src.stdbit.stdc_bit_ceil_ui
-    libc.src.stdbit.stdc_bit_ceil_ul
-    libc.src.stdbit.stdc_bit_ceil_ull
-    libc.src.stdbit.stdc_bit_ceil_us
-    libc.src.stdbit.stdc_bit_floor_uc
-    libc.src.stdbit.stdc_bit_floor_ui
-    libc.src.stdbit.stdc_bit_floor_ul
-    libc.src.stdbit.stdc_bit_floor_ull
-    libc.src.stdbit.stdc_bit_floor_us
-    libc.src.stdbit.stdc_bit_width_uc
-    libc.src.stdbit.stdc_bit_width_ui
-    libc.src.stdbit.stdc_bit_width_ul
-    libc.src.stdbit.stdc_bit_width_ull
-    libc.src.stdbit.stdc_bit_width_us
-    libc.src.stdbit.stdc_count_ones_uc
-    libc.src.stdbit.stdc_count_ones_ui
-    libc.src.stdbit.stdc_count_ones_ul
-    libc.src.stdbit.stdc_count_ones_ull
-    libc.src.stdbit.stdc_count_ones_us
-    libc.src.stdbit.stdc_count_zeros_uc
-    libc.src.stdbit.stdc_count_zeros_ui
-    libc.src.stdbit.stdc_count_zeros_ul
-    libc.src.stdbit.stdc_count_zeros_ull
-    libc.src.stdbit.stdc_count_zeros_us
-    libc.src.stdbit.stdc_first_leading_one_uc
-    libc.src.stdbit.stdc_first_leading_one_ui
-    libc.src.stdbit.stdc_first_leading_one_ul
-    libc.src.stdbit.stdc_first_leading_one_ull
-    libc.src.stdbit.stdc_first_leading_one_us
-    libc.src.stdbit.stdc_first_leading_zero_uc
-    libc.src.stdbit.stdc_first_leading_zero_ui
-    libc.src.stdbit.stdc_first_leading_zero_ul
-    libc.src.stdbit.stdc_first_leading_zero_ull
-    libc.src.stdbit.stdc_first_leading_zero_us
-    libc.src.stdbit.stdc_first_trailing_one_uc
-    libc.src.stdbit.stdc_first_trailing_one_ui
-    libc.src.stdbit.stdc_first_trailing_one_ul
-    libc.src.stdbit.stdc_first_trailing_one_ull
-    libc.src.stdbit.stdc_first_trailing_one_us
-    libc.src.stdbit.stdc_first_trailing_zero_uc
-    libc.src.stdbit.stdc_first_trailing_zero_ui
-    libc.src.stdbit.stdc_first_trailing_zero_ul
-    libc.src.stdbit.stdc_first_trailing_zero_ull
-    libc.src.stdbit.stdc_first_trailing_zero_us
-    libc.src.stdbit.stdc_has_single_bit_uc
-    libc.src.stdbit.stdc_has_single_bit_ui
-    libc.src.stdbit.stdc_has_single_bit_ul
-    libc.src.stdbit.stdc_has_single_bit_ull
-    libc.src.stdbit.stdc_has_single_bit_us
-    libc.src.stdbit.stdc_leading_ones_uc
-    libc.src.stdbit.stdc_leading_ones_ui
-    libc.src.stdbit.stdc_leading_ones_ul
-    libc.src.stdbit.stdc_leading_ones_ull
-    libc.src.stdbit.stdc_leading_ones_us
-    libc.src.stdbit.stdc_leading_zeros_uc
-    libc.src.stdbit.stdc_leading_zeros_ui
-    libc.src.stdbit.stdc_leading_zeros_ul
-    libc.src.stdbit.stdc_leading_zeros_ull
-    libc.src.stdbit.stdc_leading_zeros_us
-    libc.src.stdbit.stdc_trailing_ones_uc
-    libc.src.stdbit.stdc_trailing_ones_ui
-    libc.src.stdbit.stdc_trailing_ones_ul
-    libc.src.stdbit.stdc_trailing_ones_ull
-    libc.src.stdbit.stdc_trailing_ones_us
-    libc.src.stdbit.stdc_trailing_zeros_uc
-    libc.src.stdbit.stdc_trailing_zeros_ui
-    libc.src.stdbit.stdc_trailing_zeros_ul
-    libc.src.stdbit.stdc_trailing_zeros_ull
-    libc.src.stdbit.stdc_trailing_zeros_us
-
-    # stdlib.h entrypoints
-    libc.src.stdlib._Exit
-    libc.src.stdlib.a64l
-    libc.src.stdlib.abort
-    libc.src.stdlib.abs
-    libc.src.stdlib.aligned_alloc
-    libc.src.stdlib.atexit
-    libc.src.stdlib.atof
-    libc.src.stdlib.atoi
-    libc.src.stdlib.atol
-    libc.src.stdlib.atoll
-    libc.src.stdlib.bsearch
-    libc.src.stdlib.calloc
-    libc.src.stdlib.div
-    libc.src.stdlib.exit
-    libc.src.stdlib.free
-    libc.src.stdlib.l64a
-    libc.src.stdlib.labs
-    libc.src.stdlib.ldiv
-    libc.src.stdlib.llabs
-    libc.src.stdlib.lldiv
-    libc.src.stdlib.malloc
-    libc.src.stdlib.memalignment
-    libc.src.stdlib.qsort
-    libc.src.stdlib.qsort_r
-    libc.src.stdlib.rand
-    libc.src.stdlib.realloc
-    libc.src.stdlib.srand
-    # libc.src.stdlib.strfromd
-    # libc.src.stdlib.strfromf
-    # libc.src.stdlib.strfroml
-    libc.src.stdlib.strtod
-    libc.src.stdlib.strtof
-    libc.src.stdlib.strtol
-    libc.src.stdlib.strtold
-    libc.src.stdlib.strtoll
-    libc.src.stdlib.strtoul
-    libc.src.stdlib.strtoull
-
-    # stdlib.h entrypoints
-    libc.src.stdlib.strtod_l
-    libc.src.stdlib.strtof_l
-    libc.src.stdlib.strtol_l
-    libc.src.stdlib.strtold_l
-    libc.src.stdlib.strtoll_l
-    libc.src.stdlib.strtoul_l
-    libc.src.stdlib.strtoull_l
-
-    # time.h entrypoints
-    libc.src.time.asctime
-    libc.src.time.asctime_r
-    libc.src.time.clock
-    libc.src.time.ctime
-    libc.src.time.ctime_r
-    libc.src.time.difftime
-    libc.src.time.gmtime
-    libc.src.time.gmtime_r
-    libc.src.time.localtime
-    libc.src.time.localtime_r
-    libc.src.time.mktime
-    libc.src.time.strftime
-    libc.src.time.strftime_l
-    libc.src.time.timespec_get
-
-    # wchar.h entrypoints
-    libc.src.wchar.btowc
-    libc.src.wchar.wcslen
-    libc.src.wchar.wctob
-
-    # wctype.h entrypoints
-    libc.src.wctype.iswalpha
-
-    # internal entrypoints
-    libc.startup.baremetal.init
-    libc.startup.baremetal.fini
-)
-
-set(TARGET_LIBM_ENTRYPOINTS
-    # complex.h entrypoints
-    libc.src.complex.creal
-    libc.src.complex.crealf
-    libc.src.complex.creall
-    libc.src.complex.cimag
-    libc.src.complex.cimagf
-    libc.src.complex.cimagl
-    libc.src.complex.conj
-    libc.src.complex.conjf
-    libc.src.complex.conjl
-    libc.src.complex.cproj
-    libc.src.complex.cprojf
-    libc.src.complex.cprojl
-
-    # fenv.h entrypoints
-    libc.src.fenv.feclearexcept
-    libc.src.fenv.fedisableexcept
-    libc.src.fenv.feenableexcept
-    libc.src.fenv.fegetenv
-    libc.src.fenv.fegetexcept
-    libc.src.fenv.fegetexceptflag
-    libc.src.fenv.fegetround
-    libc.src.fenv.feholdexcept
-    libc.src.fenv.feraiseexcept
-    libc.src.fenv.fesetenv
-    libc.src.fenv.fesetexcept
-    libc.src.fenv.fesetexceptflag
-    libc.src.fenv.fesetround
-    libc.src.fenv.fetestexcept
-    libc.src.fenv.fetestexceptflag
-    libc.src.fenv.feupdateenv
-
-    # math.h entrypoints
-    libc.src.math.acosf
-    libc.src.math.acoshf
-    libc.src.math.asinf
-    libc.src.math.asinhf
-    libc.src.math.atan2
-    libc.src.math.atan2f
-    # libc.src.math.atan2l
-    libc.src.math.atan
-    libc.src.math.atanf
-    libc.src.math.atanhf
-    libc.src.math.canonicalize
-    libc.src.math.canonicalizef
-    libc.src.math.canonicalizel
-    libc.src.math.cbrt
-    libc.src.math.cbrtf
-    libc.src.math.ceil
-    libc.src.math.ceilf
-    libc.src.math.ceill
-    libc.src.math.copysign
-    libc.src.math.copysignf
-    libc.src.math.copysignl
-    libc.src.math.cos
-    libc.src.math.cosf
-    libc.src.math.coshf
-    libc.src.math.cospif
-    libc.src.math.dfmal
-    libc.src.math.dmull
-    libc.src.math.dsqrtl
-    libc.src.math.daddl
-    libc.src.math.ddivl
-    libc.src.math.dsubl
-    libc.src.math.erff
-    libc.src.math.exp
-    libc.src.math.exp10
-    libc.src.math.exp10f
-    libc.src.math.exp10m1f
-    libc.src.math.exp2
-    libc.src.math.exp2f
-    libc.src.math.exp2m1f
-    libc.src.math.expf
-    libc.src.math.expm1
-    libc.src.math.expm1f
-    libc.src.math.fabs
-    libc.src.math.fabsf
-    libc.src.math.fabsl
-    libc.src.math.fadd
-    libc.src.math.faddl
-    libc.src.math.fadd
-    libc.src.math.fdim
-    libc.src.math.fdimf
-    libc.src.math.fdiml
-    libc.src.math.fdiv
-    libc.src.math.fdivl
-    libc.src.math.ffma
-    libc.src.math.ffmal
-    libc.src.math.floor
-    libc.src.math.floorf
-    libc.src.math.floorl
-    libc.src.math.fma
-    libc.src.math.fmaf
-    libc.src.math.fmax
-    libc.src.math.fmaxf
-    libc.src.math.fmaximum
-    libc.src.math.fmaximum_mag
-    libc.src.math.fmaximum_mag_num
-    libc.src.math.fmaximum_mag_numf
-    libc.src.math.fmaximum_mag_numl
-    libc.src.math.fmaximum_magf
-    libc.src.math.fmaximum_magl
-    libc.src.math.fmaximum_num
-    libc.src.math.fmaximum_numf
-    libc.src.math.fmaximum_numl
-    libc.src.math.fmaximumf
-    libc.src.math.fmaximuml
-    libc.src.math.fmaxl
-    libc.src.math.fmin
-    libc.src.math.fminf
-    libc.src.math.fminimum
-    libc.src.math.fminimum_mag
-    libc.src.math.fminimum_mag_num
-    libc.src.math.fminimum_mag_numf
-    libc.src.math.fminimum_mag_numl
-    libc.src.math.fminimum_magf
-    libc.src.math.fminimum_magl
-    libc.src.math.fminimum_num
-    libc.src.math.fminimum_numf
-    libc.src.math.fminimum_numl
-    libc.src.math.fminimumf
-    libc.src.math.fminimuml
-    libc.src.math.fminl
-    libc.src.math.fmod
-    libc.src.math.fmodf
-    # libc.src.math.fmodl
-    libc.src.math.fmul
-    libc.src.math.fmull
-    libc.src.math.frexp
-    libc.src.math.frexpf
-    libc.src.math.frexpl
-    libc.src.math.fromfp
-    libc.src.math.fromfpf
-    libc.src.math.fromfpl
-    libc.src.math.fromfpx
-    libc.src.math.fromfpxf
-    libc.src.math.fromfpxl
-    libc.src.math.fsqrt
-    libc.src.math.fsqrtl
-    libc.src.math.fsub
-    libc.src.math.fsubl
-    libc.src.math.getpayload
-    libc.src.math.getpayloadf
-    libc.src.math.getpayloadl
-    libc.src.math.hypot
-    libc.src.math.hypotf
-    libc.src.math.ilogb
-    libc.src.math.ilogbf
-    libc.src.math.ilogbl
-    libc.src.math.iscanonical
-    libc.src.math.iscanonicalf
-    libc.src.math.iscanonicall
-    libc.src.math.isnan
-    libc.src.math.isnanf
-    libc.src.math.isnanl
-    libc.src.math.issignaling
-    libc.src.math.issignalingf
-    libc.src.math.issignalingl
-    libc.src.math.ldexp
-    libc.src.math.ldexpf
-    libc.src.math.ldexpl
-    libc.src.math.llogb
-    libc.src.math.llogbf
-    libc.src.math.llogbl
-    libc.src.math.llrint
-    libc.src.math.llrintf
-    libc.src.math.llrintl
-    libc.src.math.llround
-    libc.src.math.llroundf
-    libc.src.math.llroundl
-    libc.src.math.log
-    libc.src.math.log10
-    libc.src.math.log10f
-    libc.src.math.log1p
-    libc.src.math.log1pf
-    libc.src.math.log2
-    libc.src.math.log2f
-    libc.src.math.logb
-    libc.src.math.logbf
-    libc.src.math.logbl
-    libc.src.math.logf
-    libc.src.math.lrint
-    libc.src.math.lrintf
-    libc.src.math.lrintl
-    libc.src.math.lround
-    libc.src.math.lroundf
-    libc.src.math.lroundl
-    libc.src.math.modf
-    libc.src.math.modff
-    libc.src.math.modfl
-    libc.src.math.nan
-    libc.src.math.nanf
-    libc.src.math.nanl
-    libc.src.math.nearbyint
-    libc.src.math.nearbyintf
-    libc.src.math.nearbyintl
-    libc.src.math.nextafter
-    libc.src.math.nextafterf
-    libc.src.math.nextafterl
-    libc.src.math.nextdown
-    libc.src.math.nextdownf
-    libc.src.math.nextdownl
-    libc.src.math.nexttoward
-    libc.src.math.nexttowardf
-    libc.src.math.nexttowardl
-    libc.src.math.nextup
-    libc.src.math.nextupf
-    libc.src.math.nextupl
-    libc.src.math.pow
-    libc.src.math.powf
-    libc.src.math.remainder
-    libc.src.math.remainderf
-    libc.src.math.remainderl
-    libc.src.math.remquo
-    libc.src.math.remquof
-    libc.src.math.remquol
-    libc.src.math.rint
-    libc.src.math.rintf
-    libc.src.math.rintl
-    libc.src.math.round
-    libc.src.math.roundeven
-    libc.src.math.roundevenf
-    libc.src.math.roundevenl
-    libc.src.math.roundf
-    libc.src.math.roundl
-    libc.src.math.scalbln
-    libc.src.math.scalblnf
-    libc.src.math.scalblnl
-    libc.src.math.scalbn
-    libc.src.math.scalbnf
-    libc.src.math.scalbnl
-    libc.src.math.setpayload
-    libc.src.math.setpayloadf
-    libc.src.math.setpayloadl
-    libc.src.math.setpayloadsig
-    libc.src.math.setpayloadsigf
-    libc.src.math.setpayloadsigl
-    libc.src.math.sin
-    libc.src.math.sincos
-    libc.src.math.sincosf
-    libc.src.math.sinf
-    libc.src.math.sinhf
-    libc.src.math.sinpif
-    libc.src.math.sqrt
-    libc.src.math.sqrtf
-    libc.src.math.sqrtl
-    libc.src.math.tan
-    libc.src.math.tanf
-    libc.src.math.tanhf
-    libc.src.math.totalorder
-    libc.src.math.totalorderf
-    libc.src.math.totalorderl
-    libc.src.math.totalordermag
-    libc.src.math.totalordermagf
-    libc.src.math.totalordermagl
-    libc.src.math.trunc
-    libc.src.math.truncf
-    libc.src.math.truncl
-    libc.src.math.ufromfp
-    libc.src.math.ufromfpf
-    libc.src.math.ufromfpl
-    libc.src.math.ufromfpx
-    libc.src.math.ufromfpxf
-    libc.src.math.ufromfpxl
-)
-
-if(LIBC_TYPES_HAS_CFLOAT16)
-  list(APPEND TARGET_LIBM_ENTRYPOINTS
-    # complex.h C23 _Complex _Float16 entrypoints
-    libc.src.complex.crealf16
-    libc.src.complex.cimagf16
-    libc.src.complex.conjf16
-    libc.src.complex.cprojf16
-  )
-endif()
-
-if(LIBC_TYPES_HAS_FLOAT16)
-  list(APPEND TARGET_LIBM_ENTRYPOINTS
-    # math.h C23 _Float16 entrypoints
-    libc.src.math.acosf16
-    libc.src.math.acoshf16
-    libc.src.math.asinf16
-    libc.src.math.asinhf16
-    libc.src.math.canonicalizef16
-    libc.src.math.ceilf16
-    libc.src.math.copysignf16
-    libc.src.math.cosf16
-    libc.src.math.coshf16
-    libc.src.math.cospif16
-    libc.src.math.exp10f16
-    libc.src.math.exp10m1f16
-    libc.src.math.exp2f16
-    libc.src.math.exp2m1f16
-    libc.src.math.expf16
-    libc.src.math.expm1f16
-    libc.src.math.f16add
-    libc.src.math.f16addf
-    libc.src.math.f16addl
-    libc.src.math.f16div
-    libc.src.math.f16divf
-    libc.src.math.f16divl
-    libc.src.math.f16fma
-    libc.src.math.f16fmaf
-    libc.src.math.f16fmal
-    libc.src.math.f16mul
-    libc.src.math.f16mulf
-    libc.src.math.f16mull
-    libc.src.math.f16sqrt
-    libc.src.math.f16sqrtf
-    libc.src.math.f16sqrtl
-    libc.src.math.f16sub
-    libc.src.math.f16subf
-    libc.src.math.f16subl
-    libc.src.math.fabsf16
-    libc.src.math.fdimf16
-    libc.src.math.floorf16
-    libc.src.math.fmaf16
-    libc.src.math.fmaxf16
-    libc.src.math.fmaximum_mag_numf16
-    libc.src.math.fmaximum_magf16
-    libc.src.math.fmaximum_numf16
-    libc.src.math.fmaximumf16
-    libc.src.math.fminf16
-    libc.src.math.fminimum_mag_numf16
-    libc.src.math.fminimum_magf16
-    libc.src.math.fminimum_numf16
-    libc.src.math.fminimumf16
-    libc.src.math.fmodf16
-    libc.src.math.frexpf16
-    libc.src.math.fromfpf16
-    libc.src.math.fromfpxf16
-    libc.src.math.getpayloadf16
-    libc.src.math.hypotf16
-    libc.src.math.ilogbf16
-    libc.src.math.iscanonicalf16
-    libc.src.math.issignalingf16
-    libc.src.math.ldexpf16
-    libc.src.math.llogbf16
-    libc.src.math.llrintf16
-    libc.src.math.llroundf16
-    libc.src.math.log10f16
-    libc.src.math.log2f16
-    libc.src.math.logbf16
-    libc.src.math.logf16
-    libc.src.math.lrintf16
-    libc.src.math.lroundf16
-    libc.src.math.modff16
-    libc.src.math.nanf16
-    libc.src.math.nearbyintf16
-    libc.src.math.nextafterf16
-    libc.src.math.nextdownf16
-    libc.src.math.nexttowardf16
-    libc.src.math.nextupf16
-    libc.src.math.remainderf16
-    libc.src.math.remquof16
-    libc.src.math.rintf16
-    libc.src.math.roundevenf16
-    libc.src.math.roundf16
-    libc.src.math.scalblnf16
-    libc.src.math.scalbnf16
-    libc.src.math.setpayloadf16
-    libc.src.math.setpayloadsigf16
-    libc.src.math.sinf16
-    libc.src.math.sinhf16
-    libc.src.math.sinpif16
-    libc.src.math.sqrtf16
-    libc.src.math.tanf16
-    libc.src.math.tanhf16
-    libc.src.math.tanpif16
-    libc.src.math.totalorderf16
-    libc.src.math.totalordermagf16
-    libc.src.math.truncf16
-    libc.src.math.ufromfpf16
-    libc.src.math.ufromfpxf16
-  )
-
-  if(LIBC_TYPES_HAS_FLOAT128)
-    list(APPEND TARGET_LIBM_ENTRYPOINTS
-      # math.h C23 mixed _Float16 and _Float128 entrypoints
-      libc.src.math.f16addf128
-      libc.src.math.f16divf128
-      libc.src.math.f16fmaf128
-      libc.src.math.f16mulf128
-      libc.src.math.f16sqrtf128
-      libc.src.math.f16subf128
-    )
-  endif()
-endif()
-
-if(LIBC_TYPES_HAS_CFLOAT128)
-  list(APPEND TARGET_LIBM_ENTRYPOINTS
-    # complex.h C23 _Complex _Float128 entrypoints
-    libc.src.complex.crealf128
-    libc.src.complex.cimagf128
-    libc.src.complex.conjf128
-    libc.src.complex.cprojf128
-  )
-endif()
-
-if(LIBC_TYPES_HAS_FLOAT128)
-  list(APPEND TARGET_LIBM_ENTRYPOINTS
-    # math.h C23 _Float128 entrypoints
-    libc.src.math.atan2f128
-    libc.src.math.canonicalizef128
-    libc.src.math.ceilf128
-    libc.src.math.copysignf128
-    libc.src.math.daddf128
-    libc.src.math.ddivf128
-    libc.src.math.dfmaf128
-    libc.src.math.dmulf128
-    libc.src.math.dsqrtf128
-    libc.src.math.dsubf128
-    libc.src.math.fabsf128
-    libc.src.math.faddf128
-    libc.src.math.fdimf128
-    libc.src.math.fdivf128
-    libc.src.math.ffmaf128
-    libc.src.math.floorf128
-    libc.src.math.fmaxf128
-    libc.src.math.fmaximum_mag_numf128
-    libc.src.math.fmaximum_magf128
-    libc.src.math.fmaximum_numf128
-    libc.src.math.fmaximumf128
-    libc.src.math.fminf128
-    libc.src.math.fminimum_mag_numf128
-    libc.src.math.fminimum_magf128
-    libc.src.math.fminimum_numf128
-    libc.src.math.fminimumf128
-    # libc.src.math.fmodf128
-    libc.src.math.fmulf128
-    libc.src.math.frexpf128
-    libc.src.math.fromfpf128
-    libc.src.math.fromfpxf128
-    libc.src.math.fsqrtf128
-    libc.src.math.fsubf128
-    libc.src.math.getpayloadf128
-    libc.src.math.ilogbf128
-    libc.src.math.iscanonicalf128
-    libc.src.math.issignalingf128
-    libc.src.math.ldexpf128
-    libc.src.math.llogbf128
-    libc.src.math.llrintf128
-    libc.src.math.llroundf128
-    libc.src.math.logbf128
-    libc.src.math.lrintf128
-    libc.src.math.lroundf128
-    libc.src.math.modff128
-    libc.src.math.nanf128
-    libc.src.math.nearbyintf128
-    libc.src.math.nextafterf128
-    libc.src.math.nextdownf128
-    libc.src.math.nextupf128
-    libc.src.math.remainderf128
-    libc.src.math.remquof128
-    libc.src.math.rintf128
-    libc.src.math.roundevenf128
-    libc.src.math.roundf128
-    libc.src.math.scalblnf128
-    libc.src.math.scalbnf128
-    libc.src.math.setpayloadf128
-    libc.src.math.setpayloadsigf128
-    libc.src.math.sqrtf128
-    libc.src.math.totalorderf128
-    libc.src.math.totalordermagf128
-    libc.src.math.truncf128
-    libc.src.math.ufromfpf128
-    libc.src.math.ufromfpxf128
-  )
-endif()
-
-list(APPEND TARGET_LIBM_ENTRYPOINTS
-  # bfloat16 entrypoints
-  libc.src.math.bf16add
-  libc.src.math.bf16addf
-  libc.src.math.bf16addl
-  libc.src.math.bf16div
-  libc.src.math.bf16divf
-  libc.src.math.bf16divl
-  libc.src.math.bf16fma
-  libc.src.math.bf16fmaf
-  libc.src.math.bf16fmal
-  libc.src.math.bf16mul
-  libc.src.math.bf16mulf
-  libc.src.math.bf16mull
-  libc.src.math.bf16sub
-  libc.src.math.bf16subf
-  libc.src.math.bf16subl
-  libc.src.math.canonicalizebf16
-  libc.src.math.ceilbf16
-  libc.src.math.copysignbf16
-  libc.src.math.fabsbf16
-  libc.src.math.fdimbf16
-  libc.src.math.floorbf16
-  libc.src.math.fmaxbf16
-  libc.src.math.fmaximumbf16
-  libc.src.math.fmaximum_magbf16
-  libc.src.math.fmaximum_mag_numbf16
-  libc.src.math.fmaximum_numbf16
-  libc.src.math.fminbf16
-  libc.src.math.fminimumbf16
-  libc.src.math.fminimum_magbf16
-  libc.src.math.fminimum_mag_numbf16
-  libc.src.math.fminimum_numbf16
-  libc.src.math.fmodbf16
-  libc.src.math.frexpbf16
-  libc.src.math.fromfpbf16
-  libc.src.math.fromfpxbf16
-  libc.src.math.getpayloadbf16
-  libc.src.math.ilogbbf16
-  libc.src.math.iscanonicalbf16
-  libc.src.math.issignalingbf16
-  libc.src.math.ldexpbf16
-  libc.src.math.llogbbf16
-  libc.src.math.llrintbf16
-  libc.src.math.llroundbf16
-  libc.src.math.log_bf16
-  libc.src.math.logbbf16
-  libc.src.math.lrintbf16
-  libc.src.math.lroundbf16
-  libc.src.math.modfbf16
-  libc.src.math.nanbf16
-  libc.src.math.nearbyintbf16
-  libc.src.math.nextafterbf16
-  libc.src.math.nextdownbf16
-  libc.src.math.nexttowardbf16
-  libc.src.math.nextupbf16
-  libc.src.math.remainderbf16
-  libc.src.math.remquobf16
-  libc.src.math.rintbf16
-  libc.src.math.roundbf16
-  libc.src.math.roundevenbf16
-  libc.src.math.scalblnbf16
-  libc.src.math.scalbnbf16
-  libc.src.math.setpayloadbf16
-  libc.src.math.setpayloadsigbf16
-  libc.src.math.sqrtbf16
-  libc.src.math.truncbf16
-  libc.src.math.totalorderbf16
-  libc.src.math.totalordermagbf16
-  libc.src.math.ufromfpbf16
-  libc.src.math.ufromfpxbf16
-)
-
-if(LIBC_TYPES_HAS_FLOAT128)
-  list(APPEND TARGET_LIBM_ENTRYPOINTS
-    # math.h C++23 mixed bfloat16 and _Float128 entrypoints
-    libc.src.math.bf16addf128
-    libc.src.math.bf16divf128
-    libc.src.math.bf16fmaf128
-    libc.src.math.bf16mulf128
-    libc.src.math.bf16subf128
-  )
-endif()
-
-if(LIBC_COMPILER_HAS_FIXED_POINT)
-  list(APPEND TARGET_LIBM_ENTRYPOINTS
-    # stdfix.h _Fract and _Accum entrypoints
-    libc.src.stdfix.abshk
-    libc.src.stdfix.abshr
-    libc.src.stdfix.absk
-    libc.src.stdfix.abslk
-    libc.src.stdfix.abslr
-    libc.src.stdfix.absr
-    libc.src.stdfix.exphk
-    libc.src.stdfix.expk
-    libc.src.stdfix.roundhk
-    libc.src.stdfix.roundhr
-    libc.src.stdfix.roundk
-    libc.src.stdfix.roundlk
-    libc.src.stdfix.roundlr
-    libc.src.stdfix.roundr
-    libc.src.stdfix.rounduhk
-    libc.src.stdfix.rounduhr
-    libc.src.stdfix.rounduk
-    libc.src.stdfix.roundulk
-    libc.src.stdfix.roundulr
-    libc.src.stdfix.roundur
-    libc.src.stdfix.sqrtuhk
-    libc.src.stdfix.sqrtuhr
-    libc.src.stdfix.sqrtuk
-    libc.src.stdfix.sqrtur
-    # libc.src.stdfix.sqrtulk
-    libc.src.stdfix.sqrtulr
-    libc.src.stdfix.uhksqrtus
-    libc.src.stdfix.uksqrtui
-    libc.src.stdfix.hrbits
-    libc.src.stdfix.uhrbits
-    libc.src.stdfix.rbits
-    libc.src.stdfix.urbits
-    libc.src.stdfix.lrbits
-    libc.src.stdfix.ulrbits
-    libc.src.stdfix.hkbits
-    libc.src.stdfix.uhkbits
-    libc.src.stdfix.kbits
-    libc.src.stdfix.ukbits
-    libc.src.stdfix.lkbits
-    libc.src.stdfix.ulkbits
-    libc.src.stdfix.bitshr
-    libc.src.stdfix.bitsr
-    libc.src.stdfix.bitslr
-    libc.src.stdfix.bitshk
-    libc.src.stdfix.bitsk
-    libc.src.stdfix.bitslk
-    libc.src.stdfix.bitsuhr
-    libc.src.stdfix.bitsur
-    libc.src.stdfix.bitsulr
-    libc.src.stdfix.bitsuhk
-    libc.src.stdfix.bitsuk
-    libc.src.stdfix.bitsulk
-    libc.src.stdfix.countlshr
-    libc.src.stdfix.countlsr
-    libc.src.stdfix.countlslr
-    libc.src.stdfix.countlshk
-    libc.src.stdfix.countlsk
-    libc.src.stdfix.countlslk
-    libc.src.stdfix.countlsuhr
-    libc.src.stdfix.countlsur
-    libc.src.stdfix.countlsulr
-    libc.src.stdfix.countlsuhk
-    libc.src.stdfix.countlsuk
-    libc.src.stdfix.countlsulk
-    libc.src.stdfix.idivr
-    libc.src.stdfix.idivlr
-    libc.src.stdfix.idivk
-    libc.src.stdfix.idivlk
-    libc.src.stdfix.idivur
-    libc.src.stdfix.idivulr
-    libc.src.stdfix.idivuk
-    libc.src.stdfix.idivulk
-  )
-endif()
-
-set(TARGET_LLVMLIBC_ENTRYPOINTS
-  ${TARGET_LIBC_ENTRYPOINTS}
-  ${TARGET_LIBM_ENTRYPOINTS}
-)
+set(TARGET_LIBC_ENTRYPOINTS
+    # assert.h entrypoints
+    libc.src.assert.__assert_fail
+
+    # compiler entrypoints (no corresponding header)
+    libc.src.compiler.__stack_chk_fail
+
+    # ctype.h entrypoints
+    libc.src.ctype.isalnum
+    libc.src.ctype.isalpha
+    libc.src.ctype.isascii
+    libc.src.ctype.isblank
+    libc.src.ctype.iscntrl
+    libc.src.ctype.isdigit
+    libc.src.ctype.isgraph
+    libc.src.ctype.islower
+    libc.src.ctype.isprint
+    libc.src.ctype.ispunct
+    libc.src.ctype.isspace
+    libc.src.ctype.isupper
+    libc.src.ctype.isxdigit
+    libc.src.ctype.toascii
+    libc.src.ctype.tolower
+    libc.src.ctype.toupper
+
+    # ctype.h entrypoints
+    libc.src.ctype.isalnum_l
+    libc.src.ctype.isalpha_l
+    libc.src.ctype.isblank_l
+    libc.src.ctype.iscntrl_l
+    libc.src.ctype.isdigit_l
+    libc.src.ctype.isgraph_l
+    libc.src.ctype.islower_l
+    libc.src.ctype.isprint_l
+    libc.src.ctype.ispunct_l
+    libc.src.ctype.isspace_l
+    libc.src.ctype.isupper_l
+    libc.src.ctype.isxdigit_l
+    libc.src.ctype.tolower_l
+    libc.src.ctype.toupper_l
+
+    # errno.h entrypoints
+    libc.src.errno.errno
+
+    # locale.h entrypoints
+    libc.src.locale.localeconv
+    libc.src.locale.duplocale
+    libc.src.locale.freelocale
+    libc.src.locale.localeconv
+    libc.src.locale.newlocale
+    libc.src.locale.setlocale
+    libc.src.locale.uselocale
+
+    # setjmp.h entrypoints
+    # libc.src.setjmp.longjmp
+    # libc.src.setjmp.setjmp
+
+    # string.h entrypoints
+    libc.src.string.memccpy
+    libc.src.string.memchr
+    libc.src.string.memcmp
+    libc.src.string.memcpy
+    libc.src.string.memmem
+    libc.src.string.memmove
+    libc.src.string.mempcpy
+    libc.src.string.memrchr
+    libc.src.string.memset
+    libc.src.string.memset_explicit
+    libc.src.string.stpcpy
+    libc.src.string.stpncpy
+    libc.src.string.strcasestr
+    libc.src.string.strcat
+    libc.src.string.strchr
+    libc.src.string.strchrnul
+    libc.src.string.strcmp
+    libc.src.string.strcoll
+    libc.src.string.strcpy
+    libc.src.string.strcspn
+    libc.src.string.strdup
+    libc.src.string.strerror
+    libc.src.string.strerror_r
+    libc.src.string.strlcat
+    libc.src.string.strlcpy
+    libc.src.string.strlen
+    libc.src.string.strncat
+    libc.src.string.strncmp
+    libc.src.string.strncpy
+    libc.src.string.strndup
+    libc.src.string.strnlen
+    libc.src.string.strpbrk
+    libc.src.string.strrchr
+    libc.src.string.strsep
+    libc.src.string.strspn
+    libc.src.string.strstr
+    libc.src.string.strtok
+    libc.src.string.strtok_r
+    libc.src.string.strxfrm
+
+    # string.h entrypoints
+    libc.src.string.strcoll_l
+    libc.src.string.strxfrm_l
+
+    # strings.h entrypoints
+    libc.src.strings.bcmp
+    libc.src.strings.bcopy
+    libc.src.strings.bzero
+    libc.src.strings.ffs
+    libc.src.strings.ffsl
+    libc.src.strings.ffsll
+    libc.src.strings.index
+    libc.src.strings.rindex
+    libc.src.strings.strcasecmp
+    libc.src.strings.strncasecmp
+
+    # strings.h entrypoints
+    libc.src.strings.strcasecmp_l
+    libc.src.strings.strncasecmp_l
+
+    # inttypes.h entrypoints
+    libc.src.inttypes.imaxabs
+    libc.src.inttypes.imaxdiv
+    libc.src.inttypes.strtoimax
+    libc.src.inttypes.strtoumax
+
+    # stdio.h entrypoints
+    libc.src.stdio.asprintf
+    libc.src.stdio.feof
+    libc.src.stdio.ferror
+    libc.src.stdio.fgetc
+    libc.src.stdio.fgets
+    libc.src.stdio.fprintf
+    libc.src.stdio.fputc
+    libc.src.stdio.fputs
+    libc.src.stdio.fread
+    libc.src.stdio.fscanf
+    libc.src.stdio.fwrite
+    libc.src.stdio.getchar
+    libc.src.stdio.printf
+    libc.src.stdio.putc
+    libc.src.stdio.putchar
+    libc.src.stdio.puts
+    libc.src.stdio.remove
+    libc.src.stdio.scanf
+    libc.src.stdio.snprintf
+    libc.src.stdio.sprintf
+    libc.src.stdio.sscanf
+    libc.src.stdio.vasprintf
+    libc.src.stdio.vfprintf
+    libc.src.stdio.vfscanf
+    libc.src.stdio.vprintf
+    libc.src.stdio.vscanf
+    libc.src.stdio.vsnprintf
+    libc.src.stdio.vsprintf
+    libc.src.stdio.vsscanf
+
+    # stdbit.h entrypoints
+    libc.src.stdbit.stdc_bit_ceil_uc
+    libc.src.stdbit.stdc_bit_ceil_ui
+    libc.src.stdbit.stdc_bit_ceil_ul
+    libc.src.stdbit.stdc_bit_ceil_ull
+    libc.src.stdbit.stdc_bit_ceil_us
+    libc.src.stdbit.stdc_bit_floor_uc
+    libc.src.stdbit.stdc_bit_floor_ui
+    libc.src.stdbit.stdc_bit_floor_ul
+    libc.src.stdbit.stdc_bit_floor_ull
+    libc.src.stdbit.stdc_bit_floor_us
+    libc.src.stdbit.stdc_bit_width_uc
+    libc.src.stdbit.stdc_bit_width_ui
+    libc.src.stdbit.stdc_bit_width_ul
+    libc.src.stdbit.stdc_bit_width_ull
+    libc.src.stdbit.stdc_bit_width_us
+    libc.src.stdbit.stdc_count_ones_uc
+    libc.src.stdbit.stdc_count_ones_ui
+    libc.src.stdbit.stdc_count_ones_ul
+    libc.src.stdbit.stdc_count_ones_ull
+    libc.src.stdbit.stdc_count_ones_us
+    libc.src.stdbit.stdc_count_zeros_uc
+    libc.src.stdbit.stdc_count_zeros_ui
+    libc.src.stdbit.stdc_count_zeros_ul
+    libc.src.stdbit.stdc_count_zeros_ull
+    libc.src.stdbit.stdc_count_zeros_us
+    libc.src.stdbit.stdc_first_leading_one_uc
+    libc.src.stdbit.stdc_first_leading_one_ui
+    libc.src.stdbit.stdc_first_leading_one_ul
+    libc.src.stdbit.stdc_first_leading_one_ull
+    libc.src.stdbit.stdc_first_leading_one_us
+    libc.src.stdbit.stdc_first_leading_zero_uc
+    libc.src.stdbit.stdc_first_leading_zero_ui
+    libc.src.stdbit.stdc_first_leading_zero_ul
+    libc.src.stdbit.stdc_first_leading_zero_ull
+    libc.src.stdbit.stdc_first_leading_zero_us
+    libc.src.stdbit.stdc_first_trailing_one_uc
+    libc.src.stdbit.stdc_first_trailing_one_ui
+    libc.src.stdbit.stdc_first_trailing_one_ul
+    libc.src.stdbit.stdc_first_trailing_one_ull
+    libc.src.stdbit.stdc_first_trailing_one_us
+    libc.src.stdbit.stdc_first_trailing_zero_uc
+    libc.src.stdbit.stdc_first_trailing_zero_ui
+    libc.src.stdbit.stdc_first_trailing_zero_ul
+    libc.src.stdbit.stdc_first_trailing_zero_ull
+    libc.src.stdbit.stdc_first_trailing_zero_us
+    libc.src.stdbit.stdc_has_single_bit_uc
+    libc.src.stdbit.stdc_has_single_bit_ui
+    libc.src.stdbit.stdc_has_single_bit_ul
+    libc.src.stdbit.stdc_has_single_bit_ull
+    libc.src.stdbit.stdc_has_single_bit_us
+    libc.src.stdbit.stdc_leading_ones_uc
+    libc.src.stdbit.stdc_leading_ones_ui
+    libc.src.stdbit.stdc_leading_ones_ul
+    libc.src.stdbit.stdc_leading_ones_ull
+    libc.src.stdbit.stdc_leading_ones_us
+    libc.src.stdbit.stdc_leading_zeros_uc
+    libc.src.stdbit.stdc_leading_zeros_ui
+    libc.src.stdbit.stdc_leading_zeros_ul
+    libc.src.stdbit.stdc_leading_zeros_ull
+    libc.src.stdbit.stdc_leading_zeros_us
+    libc.src.stdbit.stdc_trailing_ones_uc
+    libc.src.stdbit.stdc_trailing_ones_ui
+    libc.src.stdbit.stdc_trailing_ones_ul
+    libc.src.stdbit.stdc_trailing_ones_ull
+    libc.src.stdbit.stdc_trailing_ones_us
+    libc.src.stdbit.stdc_trailing_zeros_uc
+    libc.src.stdbit.stdc_trailing_zeros_ui
+    libc.src.stdbit.stdc_trailing_zeros_ul
+    libc.src.stdbit.stdc_trailing_zeros_ull
+    libc.src.stdbit.stdc_trailing_zeros_us
+
+    # stdlib.h entrypoints
+    libc.src.stdlib._Exit
+    libc.src.stdlib.a64l
+    libc.src.stdlib.abort
+    libc.src.stdlib.abs
+    libc.src.stdlib.aligned_alloc
+    libc.src.stdlib.atexit
+    libc.src.stdlib.atof
+    libc.src.stdlib.atoi
+    libc.src.stdlib.atol
+    libc.src.stdlib.atoll
+    libc.src.stdlib.bsearch
+    libc.src.stdlib.calloc
+    libc.src.stdlib.div
+    libc.src.stdlib.exit
+    libc.src.stdlib.free
+    libc.src.stdlib.l64a
+    libc.src.stdlib.labs
+    libc.src.stdlib.ldiv
+    libc.src.stdlib.llabs
+    libc.src.stdlib.lldiv
+    libc.src.stdlib.malloc
+    libc.src.stdlib.memalignment
+    libc.src.stdlib.qsort
+    libc.src.stdlib.qsort_r
+    libc.src.stdlib.rand
+    libc.src.stdlib.realloc
+    libc.src.stdlib.srand
+    # libc.src.stdlib.strfromd
+    # libc.src.stdlib.strfromf
+    # libc.src.stdlib.strfroml
+    libc.src.stdlib.strtod
+    libc.src.stdlib.strtof
+    libc.src.stdlib.strtol
+    libc.src.stdlib.strtold
+    libc.src.stdlib.strtoll
+    libc.src.stdlib.strtoul
+    libc.src.stdlib.strtoull
+
+    # stdlib.h entrypoints
+    libc.src.stdlib.strtod_l
+    libc.src.stdlib.strtof_l
+    libc.src.stdlib.strtol_l
+    libc.src.stdlib.strtold_l
+    libc.src.stdlib.strtoll_l
+    libc.src.stdlib.strtoul_l
+    libc.src.stdlib.strtoull_l
+
+    # time.h entrypoints
+    libc.src.time.asctime
+    libc.src.time.asctime_r
+    libc.src.time.clock
+    libc.src.time.ctime
+    libc.src.time.ctime_r
+    libc.src.time.difftime
+    libc.src.time.gmtime
+    libc.src.time.gmtime_r
+    libc.src.time.localtime
+    libc.src.time.localtime_r
+    libc.src.time.mktime
+    libc.src.time.strftime
+    libc.src.time.strftime_l
+    libc.src.time.timespec_get
+
+    # wchar.h entrypoints
+    libc.src.wchar.btowc
+    libc.src.wchar.wcslen
+    libc.src.wchar.wctob
+
+    # wctype.h entrypoints
+    libc.src.wctype.iswalpha
+
+    # internal entrypoints
+    libc.startup.baremetal.init
+    libc.startup.baremetal.fini
+)
+
+set(TARGET_LIBM_ENTRYPOINTS
+    # complex.h entrypoints
+    libc.src.complex.creal
+    libc.src.complex.crealf
+    libc.src.complex.creall
+    libc.src.complex.cimag
+    libc.src.complex.cimagf
+    libc.src.complex.cimagl
+    libc.src.complex.conj
+    libc.src.complex.conjf
+    libc.src.complex.conjl
+    libc.src.complex.cproj
+    libc.src.complex.cprojf
+    libc.src.complex.cprojl
+
+    # fenv.h entrypoints
+    libc.src.fenv.feclearexcept
+    libc.src.fenv.fedisableexcept
+    libc.src.fenv.feenableexcept
+    libc.src.fenv.fegetenv
+    libc.src.fenv.fegetexcept
+    libc.src.fenv.fegetexceptflag
+    libc.src.fenv.fegetround
+    libc.src.fenv.feholdexcept
+    libc.src.fenv.feraiseexcept
+    libc.src.fenv.fesetenv
+    libc.src.fenv.fesetexcept
+    libc.src.fenv.fesetexceptflag
+    libc.src.fenv.fesetround
+    libc.src.fenv.fetestexcept
+    libc.src.fenv.fetestexceptflag
+    libc.src.fenv.feupdateenv
+
+    # math.h entrypoints
+    libc.src.math.acosf
+    libc.src.math.acoshf
+    libc.src.math.asinf
+    libc.src.math.asinhf
+    libc.src.math.atan2
+    libc.src.math.atan2f
+    # libc.src.math.atan2l
+    libc.src.math.atan
+    libc.src.math.atanf
+    libc.src.math.atanhf
+    libc.src.math.canonicalize
+    libc.src.math.canonicalizef
+    libc.src.math.canonicalizel
+    libc.src.math.cbrt
+    libc.src.math.cbrtf
+    libc.src.math.ceil
+    libc.src.math.ceilf
+    libc.src.math.ceill
+    libc.src.math.copysign
+    libc.src.math.copysignf
+    libc.src.math.copysignl
+    libc.src.math.cos
+    libc.src.math.cosf
+    libc.src.math.coshf
+    libc.src.math.cospif
+    libc.src.math.dfmal
+    libc.src.math.dmull
+    libc.src.math.dsqrtl
+    libc.src.math.daddl
+    libc.src.math.ddivl
+    libc.src.math.dsubl
+    libc.src.math.erff
+    libc.src.math.exp
+    libc.src.math.exp10
+    libc.src.math.exp10f
+    libc.src.math.exp10m1f
+    libc.src.math.exp2
+    libc.src.math.exp2f
+    libc.src.math.exp2m1f
+    libc.src.math.expf
+    libc.src.math.expm1
+    libc.src.math.expm1f
+    libc.src.math.fabs
+    libc.src.math.fabsf
+    libc.src.math.fabsl
+    libc.src.math.fadd
+    libc.src.math.faddl
+    libc.src.math.fadd
+    libc.src.math.fdim
+    libc.src.math.fdimf
+    libc.src.math.fdiml
+    libc.src.math.fdiv
+    libc.src.math.fdivl
+    libc.src.math.ffma
+    libc.src.math.ffmal
+    libc.src.math.floor
+    libc.src.math.floorf
+    libc.src.math.floorl
+    libc.src.math.fma
+    libc.src.math.fmabf16
+    libc.src.math.fmaf
+    libc.src.math.fmax
+    libc.src.math.fmaxf
+    libc.src.math.fmaximum
+    libc.src.math.fmaximum_mag
+    libc.src.math.fmaximum_mag_num
+    libc.src.math.fmaximum_mag_numf
+    libc.src.math.fmaximum_mag_numl
+    libc.src.math.fmaximum_magf
+    libc.src.math.fmaximum_magl
+    libc.src.math.fmaximum_num
+    libc.src.math.fmaximum_numf
+    libc.src.math.fmaximum_numl
+    libc.src.math.fmaximumf
+    libc.src.math.fmaximuml
+    libc.src.math.fmaxl
+    libc.src.math.fmin
+    libc.src.math.fminf
+    libc.src.math.fminimum
+    libc.src.math.fminimum_mag
+    libc.src.math.fminimum_mag_num
+    libc.src.math.fminimum_mag_numf
+    libc.src.math.fminimum_mag_numl
+    libc.src.math.fminimum_magf
+    libc.src.math.fminimum_magl
+    libc.src.math.fminimum_num
+    libc.src.math.fminimum_numf
+    libc.src.math.fminimum_numl
+    libc.src.math.fminimumf
+    libc.src.math.fminimuml
+    libc.src.math.fminl
+    libc.src.math.fmod
+    libc.src.math.fmodf
+    # libc.src.math.fmodl
+    libc.src.math.fmul
+    libc.src.math.fmull
+    libc.src.math.frexp
+    libc.src.math.frexpf
+    libc.src.math.frexpl
+    libc.src.math.fromfp
+    libc.src.math.fromfpf
+    libc.src.math.fromfpl
+    libc.src.math.fromfpx
+    libc.src.math.fromfpxf
+    libc.src.math.fromfpxl
+    libc.src.math.fsqrt
+    libc.src.math.fsqrtl
+    libc.src.math.fsub
+    libc.src.math.fsubl
+    libc.src.math.getpayload
+    libc.src.math.getpayloadf
+    libc.src.math.getpayloadl
+    libc.src.math.hypot
+    libc.src.math.hypotf
+    libc.src.math.ilogb
+    libc.src.math.ilogbf
+    libc.src.math.ilogbl
+    libc.src.math.iscanonical
+    libc.src.math.iscanonicalf
+    libc.src.math.iscanonicall
+    libc.src.math.isnan
+    libc.src.math.isnanf
+    libc.src.math.isnanl
+    libc.src.math.issignaling
+    libc.src.math.issignalingf
+    libc.src.math.issignalingl
+    libc.src.math.ldexp
+    libc.src.math.ldexpf
+    libc.src.math.ldexpl
+    libc.src.math.llogb
+    libc.src.math.llogbf
+    libc.src.math.llogbl
+    libc.src.math.llrint
+    libc.src.math.llrintf
+    libc.src.math.llrintl
+    libc.src.math.llround
+    libc.src.math.llroundf
+    libc.src.math.llroundl
+    libc.src.math.log
+    libc.src.math.log10
+    libc.src.math.log10f
+    libc.src.math.log1p
+    libc.src.math.log1pf
+    libc.src.math.log2
+    libc.src.math.log2f
+    libc.src.math.logb
+    libc.src.math.logbf
+    libc.src.math.logbl
+    libc.src.math.logf
+    libc.src.math.lrint
+    libc.src.math.lrintf
+    libc.src.math.lrintl
+    libc.src.math.lround
+    libc.src.math.lroundf
+    libc.src.math.lroundl
+    libc.src.math.modf
+    libc.src.math.modff
+    libc.src.math.modfl
+    libc.src.math.nan
+    libc.src.math.nanf
+    libc.src.math.nanl
+    libc.src.math.nearbyint
+    libc.src.math.nearbyintf
+    libc.src.math.nearbyintl
+    libc.src.math.nextafter
+    libc.src.math.nextafterf
+    libc.src.math.nextafterl
+    libc.src.math.nextdown
+    libc.src.math.nextdownf
+    libc.src.math.nextdownl
+    libc.src.math.nexttoward
+    libc.src.math.nexttowardf
+    libc.src.math.nexttowardl
+    libc.src.math.nextup
+    libc.src.math.nextupf
+    libc.src.math.nextupl
+    libc.src.math.pow
+    libc.src.math.powf
+    libc.src.math.remainder
+    libc.src.math.remainderf
+    libc.src.math.remainderl
+    libc.src.math.remquo
+    libc.src.math.remquof
+    libc.src.math.remquol
+    libc.src.math.rint
+    libc.src.math.rintf
+    libc.src.math.rintl
+    libc.src.math.round
+    libc.src.math.roundeven
+    libc.src.math.roundevenf
+    libc.src.math.roundevenl
+    libc.src.math.roundf
+    libc.src.math.roundl
+    libc.src.math.scalbln
+    libc.src.math.scalblnf
+    libc.src.math.scalblnl
+    libc.src.math.scalbn
+    libc.src.math.scalbnf
+    libc.src.math.scalbnl
+    libc.src.math.setpayload
+    libc.src.math.setpayloadf
+    libc.src.math.setpayloadl
+    libc.src.math.setpayloadsig
+    libc.src.math.setpayloadsigf
+    libc.src.math.setpayloadsigl
+    libc.src.math.sin
+    libc.src.math.sincos
+    libc.src.math.sincosf
+    libc.src.math.sinf
+    libc.src.math.sinhf
+    libc.src.math.sinpif
+    libc.src.math.sqrt
+    libc.src.math.sqrtf
+    libc.src.math.sqrtl
+    libc.src.math.tan
+    libc.src.math.tanf
+    libc.src.math.tanhf
+    libc.src.math.totalorder
+    libc.src.math.totalorderf
+    libc.src.math.totalorderl
+    libc.src.math.totalordermag
+    libc.src.math.totalordermagf
+    libc.src.math.totalordermagl
+    libc.src.math.trunc
+    libc.src.math.truncf
+    libc.src.math.truncl
+    libc.src.math.ufromfp
+    libc.src.math.ufromfpf
+    libc.src.math.ufromfpl
+    libc.src.math.ufromfpx
+    libc.src.math.ufromfpxf
+    libc.src.math.ufromfpxl
+)
+
+if(LIBC_TYPES_HAS_CFLOAT16)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # complex.h C23 _Complex _Float16 entrypoints
+    libc.src.complex.crealf16
+    libc.src.complex.cimagf16
+    libc.src.complex.conjf16
+    libc.src.complex.cprojf16
+  )
+endif()
+
+if(LIBC_TYPES_HAS_FLOAT16)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # math.h C23 _Float16 entrypoints
+    libc.src.math.acosf16
+    libc.src.math.acoshf16
+    libc.src.math.asinf16
+    libc.src.math.asinhf16
+    libc.src.math.canonicalizef16
+    libc.src.math.ceilf16
+    libc.src.math.copysignf16
+    libc.src.math.cosf16
+    libc.src.math.coshf16
+    libc.src.math.cospif16
+    libc.src.math.exp10f16
+    libc.src.math.exp10m1f16
+    libc.src.math.exp2f16
+    libc.src.math.exp2m1f16
+    libc.src.math.expf16
+    libc.src.math.expm1f16
+    libc.src.math.f16add
+    libc.src.math.f16addf
+    libc.src.math.f16addl
+    libc.src.math.f16div
+    libc.src.math.f16divf
+    libc.src.math.f16divl
+    libc.src.math.f16fma
+    libc.src.math.f16fmaf
+    libc.src.math.f16fmal
+    libc.src.math.f16mul
+    libc.src.math.f16mulf
+    libc.src.math.f16mull
+    libc.src.math.f16sqrt
+    libc.src.math.f16sqrtf
+    libc.src.math.f16sqrtl
+    libc.src.math.f16sub
+    libc.src.math.f16subf
+    libc.src.math.f16subl
+    libc.src.math.fabsf16
+    libc.src.math.fdimf16
+    libc.src.math.floorf16
+    libc.src.math.fmaf16
+    libc.src.math.fmaxf16
+    libc.src.math.fmaximum_mag_numf16
+    libc.src.math.fmaximum_magf16
+    libc.src.math.fmaximum_numf16
+    libc.src.math.fmaximumf16
+    libc.src.math.fminf16
+    libc.src.math.fminimum_mag_numf16
+    libc.src.math.fminimum_magf16
+    libc.src.math.fminimum_numf16
+    libc.src.math.fminimumf16
+    libc.src.math.fmodf16
+    libc.src.math.frexpf16
+    libc.src.math.fromfpf16
+    libc.src.math.fromfpxf16
+    libc.src.math.getpayloadf16
+    libc.src.math.hypotf16
+    libc.src.math.ilogbf16
+    libc.src.math.iscanonicalf16
+    libc.src.math.issignalingf16
+    libc.src.math.ldexpf16
+    libc.src.math.llogbf16
+    libc.src.math.llrintf16
+    libc.src.math.llroundf16
+    libc.src.math.log10f16
+    libc.src.math.log2f16
+    libc.src.math.logbf16
+    libc.src.math.logf16
+    libc.src.math.lrintf16
+    libc.src.math.lroundf16
+    libc.src.math.modff16
+    libc.src.math.nanf16
+    libc.src.math.nearbyintf16
+    libc.src.math.nextafterf16
+    libc.src.math.nextdownf16
+    libc.src.math.nexttowardf16
+    libc.src.math.nextupf16
+    libc.src.math.remainderf16
+    libc.src.math.remquof16
+    libc.src.math.rintf16
+    libc.src.math.roundevenf16
+    libc.src.math.roundf16
+    libc.src.math.scalblnf16
+    libc.src.math.scalbnf16
+    libc.src.math.setpayloadf16
+    libc.src.math.setpayloadsigf16
+    libc.src.math.sinf16
+    libc.src.math.sinhf16
+    libc.src.math.sinpif16
+    libc.src.math.sqrtf16
+    libc.src.math.tanf16
+    libc.src.math.tanhf16
+    libc.src.math.tanpif16
+    libc.src.math.totalorderf16
+    libc.src.math.totalordermagf16
+    libc.src.math.truncf16
+    libc.src.math.ufromfpf16
+    libc.src.math.ufromfpxf16
+  )
+
+  if(LIBC_TYPES_HAS_FLOAT128)
+    list(APPEND TARGET_LIBM_ENTRYPOINTS
+      # math.h C23 mixed _Float16 and _Float128 entrypoints
+      libc.src.math.f16addf128
+      libc.src.math.f16divf128
+      libc.src.math.f16fmaf128
+      libc.src.math.f16mulf128
+      libc.src.math.f16sqrtf128
+      libc.src.math.f16subf128
+    )
+  endif()
+endif()
+
+if(LIBC_TYPES_HAS_CFLOAT128)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # complex.h C23 _Complex _Float128 entrypoints
+    libc.src.complex.crealf128
+    libc.src.complex.cimagf128
+    libc.src.complex.conjf128
+    libc.src.complex.cprojf128
+  )
+endif()
+
+if(LIBC_TYPES_HAS_FLOAT128)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # math.h C23 _Float128 entrypoints
+    libc.src.math.atan2f128
+    libc.src.math.canonicalizef128
+    libc.src.math.ceilf128
+    libc.src.math.copysignf128
+    libc.src.math.daddf128
+    libc.src.math.ddivf128
+    libc.src.math.dfmaf128
+    libc.src.math.dmulf128
+    libc.src.math.dsqrtf128
+    libc.src.math.dsubf128
+    libc.src.math.fabsf128
+    libc.src.math.faddf128
+    libc.src.math.fdimf128
+    libc.src.math.fdivf128
+    libc.src.math.ffmaf128
+    libc.src.math.floorf128
+    libc.src.math.fmaxf128
+    libc.src.math.fmaximum_mag_numf128
+    libc.src.math.fmaximum_magf128
+    libc.src.math.fmaximum_numf128
+    libc.src.math.fmaximumf128
+    libc.src.math.fminf128
+    libc.src.math.fminimum_mag_numf128
+    libc.src.math.fminimum_magf128
+    libc.src.math.fminimum_numf128
+    libc.src.math.fminimumf128
+    # libc.src.math.fmodf128
+    libc.src.math.fmulf128
+    libc.src.math.frexpf128
+    libc.src.math.fromfpf128
+    libc.src.math.fromfpxf128
+    libc.src.math.fsqrtf128
+    libc.src.math.fsubf128
+    libc.src.math.getpayloadf128
+    libc.src.math.ilogbf128
+    libc.src.math.iscanonicalf128
+    libc.src.math.issignalingf128
+    libc.src.math.ldexpf128
+    libc.src.math.llogbf128
+    libc.src.math.llrintf128
+    libc.src.math.llroundf128
+    libc.src.math.logbf128
+    libc.src.math.lrintf128
+    libc.src.math.lroundf128
+    libc.src.math.modff128
+    libc.src.math.nanf128
+    libc.src.math.nearbyintf128
+    libc.src.math.nextafterf128
+    libc.src.math.nextdownf128
+    libc.src.math.nextupf128
+    libc.src.math.remainderf128
+    libc.src.math.remquof128
+    libc.src.math.rintf128
+    libc.src.math.roundevenf128
+    libc.src.math.roundf128
+    libc.src.math.scalblnf128
+    libc.src.math.scalbnf128
+    libc.src.math.setpayloadf128
+    libc.src.math.setpayloadsigf128
+    libc.src.math.sqrtf128
+    libc.src.math.totalorderf128
+    libc.src.math.totalordermagf128
+    libc.src.math.truncf128
+    libc.src.math.ufromfpf128
+    libc.src.math.ufromfpxf128
+  )
+endif()
+
+list(APPEND TARGET_LIBM_ENTRYPOINTS
+  # bfloat16 entrypoints
+  libc.src.math.bf16add
+  libc.src.math.bf16addf
+  libc.src.math.bf16addl
+  libc.src.math.bf16div
+  libc.src.math.bf16divf
+  libc.src.math.bf16divl
+  libc.src.math.bf16fma
+  libc.src.math.bf16fmaf
+  libc.src.math.bf16fmal
+  libc.src.math.bf16mul
+  libc.src.math.bf16mulf
+  libc.src.math.bf16mull
+  libc.src.math.bf16sub
+  libc.src.math.bf16subf
+  libc.src.math.bf16subl
+  libc.src.math.canonicalizebf16
+  libc.src.math.ceilbf16
+  libc.src.math.copysignbf16
+  libc.src.math.fabsbf16
+  libc.src.math.fdimbf16
+  libc.src.math.floorbf16
+  libc.src.math.fmaxbf16
+  libc.src.math.fmaximumbf16
+  libc.src.math.fmaximum_magbf16
+  libc.src.math.fmaximum_mag_numbf16
+  libc.src.math.fmaximum_numbf16
+  libc.src.math.fminbf16
+  libc.src.math.fminimumbf16
+  libc.src.math.fminimum_magbf16
+  libc.src.math.fminimum_mag_numbf16
+  libc.src.math.fminimum_numbf16
+  libc.src.math.fmodbf16
+  libc.src.math.frexpbf16
+  libc.src.math.fromfpbf16
+  libc.src.math.fromfpxbf16
+  libc.src.math.getpayloadbf16
+  libc.src.math.ilogbbf16
+  libc.src.math.iscanonicalbf16
+  libc.src.math.issignalingbf16
+  libc.src.math.ldexpbf16
+  libc.src.math.llogbbf16
+  libc.src.math.llrintbf16
+  libc.src.math.llroundbf16
+  libc.src.math.log_bf16
+  libc.src.math.logbbf16
+  libc.src.math.lrintbf16
+  libc.src.math.lroundbf16
+  libc.src.math.modfbf16
+  libc.src.math.nanbf16
+  libc.src.math.nearbyintbf16
+  libc.src.math.nextafterbf16
+  libc.src.math.nextdownbf16
+  libc.src.math.nexttowardbf16
+  libc.src.math.nextupbf16
+  libc.src.math.remainderbf16
+  libc.src.math.remquobf16
+  libc.src.math.rintbf16
+  libc.src.math.roundbf16
+  libc.src.math.roundevenbf16
+  libc.src.math.scalblnbf16
+  libc.src.math.scalbnbf16
+  libc.src.math.setpayloadbf16
+  libc.src.math.setpayloadsigbf16
+  libc.src.math.sqrtbf16
+  libc.src.math.truncbf16
+  libc.src.math.totalorderbf16
+  libc.src.math.totalordermagbf16
+  libc.src.math.ufromfpbf16
+  libc.src.math.ufromfpxbf16
+)
+
+if(LIBC_TYPES_HAS_FLOAT128)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # math.h C++23 mixed bfloat16 and _Float128 entrypoints
+    libc.src.math.bf16addf128
+    libc.src.math.bf16divf128
+    libc.src.math.bf16fmaf128
+    libc.src.math.bf16mulf128
+    libc.src.math.bf16subf128
+  )
+endif()
+
+if(LIBC_COMPILER_HAS_FIXED_POINT)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # stdfix.h _Fract and _Accum entrypoints
+    libc.src.stdfix.abshk
+    libc.src.stdfix.abshr
+    libc.src.stdfix.absk
+    libc.src.stdfix.abslk
+    libc.src.stdfix.abslr
+    libc.src.stdfix.absr
+    libc.src.stdfix.exphk
+    libc.src.stdfix.expk
+    libc.src.stdfix.roundhk
+    libc.src.stdfix.roundhr
+    libc.src.stdfix.roundk
+    libc.src.stdfix.roundlk
+    libc.src.stdfix.roundlr
+    libc.src.stdfix.roundr
+    libc.src.stdfix.rounduhk
+    libc.src.stdfix.rounduhr
+    libc.src.stdfix.rounduk
+    libc.src.stdfix.roundulk
+    libc.src.stdfix.roundulr
+    libc.src.stdfix.roundur
+    libc.src.stdfix.sqrtuhk
+    libc.src.stdfix.sqrtuhr
+    libc.src.stdfix.sqrtuk
+    libc.src.stdfix.sqrtur
+    # libc.src.stdfix.sqrtulk
+    libc.src.stdfix.sqrtulr
+    libc.src.stdfix.uhksqrtus
+    libc.src.stdfix.uksqrtui
+    libc.src.stdfix.hrbits
+    libc.src.stdfix.uhrbits
+    libc.src.stdfix.rbits
+    libc.src.stdfix.urbits
+    libc.src.stdfix.lrbits
+    libc.src.stdfix.ulrbits
+    libc.src.stdfix.hkbits
+    libc.src.stdfix.uhkbits
+    libc.src.stdfix.kbits
+    libc.src.stdfix.ukbits
+    libc.src.stdfix.lkbits
+    libc.src.stdfix.ulkbits
+    libc.src.stdfix.bitshr
+    libc.src.stdfix.bitsr
+    libc.src.stdfix.bitslr
+    libc.src.stdfix.bitshk
+    libc.src.stdfix.bitsk
+    libc.src.stdfix.bitslk
+    libc.src.stdfix.bitsuhr
+    libc.src.stdfix.bitsur
+    libc.src.stdfix.bitsulr
+    libc.src.stdfix.bitsuhk
+    libc.src.stdfix.bitsuk
+    libc.src.stdfix.bitsulk
+    libc.src.stdfix.countlshr
+    libc.src.stdfix.countlsr
+    libc.src.stdfix.countlslr
+    libc.src.stdfix.countlshk
+    libc.src.stdfix.countlsk
+    libc.src.stdfix.countlslk
+    libc.src.stdfix.countlsuhr
+    libc.src.stdfix.countlsur
+    libc.src.stdfix.countlsulr
+    libc.src.stdfix.countlsuhk
+    libc.src.stdfix.countlsuk
+    libc.src.stdfix.countlsulk
+    libc.src.stdfix.idivr
+    libc.src.stdfix.idivlr
+    libc.src.stdfix.idivk
+    libc.src.stdfix.idivlk
+    libc.src.stdfix.idivur
+    libc.src.stdfix.idivulr
+    libc.src.stdfix.idivuk
+    libc.src.stdfix.idivulk
+  )
+endif()
+
+set(TARGET_LLVMLIBC_ENTRYPOINTS
+  ${TARGET_LIBC_ENTRYPOINTS}
+  ${TARGET_LIBM_ENTRYPOINTS}
+)
diff --git a/libc/config/darwin/aarch64/entrypoints.txt b/libc/config/darwin/aarch64/entrypoints.txt
index 3909417f9730d..6aceca7d31e1e 100644
--- a/libc/config/darwin/aarch64/entrypoints.txt
+++ b/libc/config/darwin/aarch64/entrypoints.txt
@@ -1,747 +1,748 @@
-set(TARGET_LIBC_ENTRYPOINTS
-    # ctype.h entrypoints
-    libc.src.ctype.isalnum
-    libc.src.ctype.isalpha
-    libc.src.ctype.isascii
-    libc.src.ctype.isblank
-    libc.src.ctype.iscntrl
-    libc.src.ctype.isdigit
-    libc.src.ctype.isgraph
-    libc.src.ctype.islower
-    libc.src.ctype.isprint
-    libc.src.ctype.ispunct
-    libc.src.ctype.isspace
-    libc.src.ctype.isupper
-    libc.src.ctype.isxdigit
-    libc.src.ctype.toascii
-    libc.src.ctype.tolower
-    libc.src.ctype.toupper
-
-    # errno.h entrypoints
-    libc.src.errno.errno
-
-    # string.h entrypoints
-    libc.src.string.memccpy
-    libc.src.string.memchr
-    libc.src.string.memcmp
-    libc.src.string.memcpy
-    libc.src.string.memmem
-    libc.src.string.memmove
-    libc.src.string.mempcpy
-    libc.src.string.memrchr
-    libc.src.string.memset
-    libc.src.string.stpcpy
-    libc.src.string.stpncpy
-    libc.src.string.strcasestr
-    libc.src.string.strcat
-    libc.src.string.strchr
-    libc.src.string.strchrnul
-    libc.src.string.strcmp
-    libc.src.string.strcpy
-    libc.src.string.strcspn
-    libc.src.string.strlcat
-    libc.src.string.strlcpy
-    libc.src.string.strlen
-    libc.src.string.strncat
-    libc.src.string.strncmp
-    libc.src.string.strncpy
-    libc.src.string.strnlen
-    libc.src.string.strpbrk
-    libc.src.string.strrchr
-    libc.src.string.strspn
-    libc.src.string.strstr
-    libc.src.string.strtok
-    libc.src.string.strtok_r
-
-    # string.h entrypoints that depend on malloc
-    libc.src.string.strdup
-    libc.src.string.strndup
-
-    # strings.h entrypoints
-    libc.src.strings.bcmp
-    libc.src.strings.bcopy
-    libc.src.strings.bzero
-    libc.src.strings.strcasecmp
-    libc.src.strings.strncasecmp
-
-    # inttypes.h entrypoints
-    libc.src.inttypes.imaxabs
-    libc.src.inttypes.imaxdiv
-    libc.src.inttypes.strtoimax
-    libc.src.inttypes.strtoumax
-
-    # stdlib.h entrypoints
-    libc.src.stdlib.abs
-    libc.src.stdlib.atoi
-    libc.src.stdlib.atof
-    libc.src.stdlib.atol
-    libc.src.stdlib.atoll
-    libc.src.stdlib.bsearch
-    libc.src.stdlib.div
-    libc.src.stdlib.labs
-    libc.src.stdlib.ldiv
-    libc.src.stdlib.llabs
-    libc.src.stdlib.lldiv
-    libc.src.stdlib.memalignment
-    libc.src.stdlib.qsort
-    libc.src.stdlib.rand
-    libc.src.stdlib.srand
-    libc.src.stdlib.strtod
-    libc.src.stdlib.strtof
-    libc.src.stdlib.strtol
-    libc.src.stdlib.strtold
-    libc.src.stdlib.strtoll
-    libc.src.stdlib.strtoul
-    libc.src.stdlib.strtoull
-
-    # stdlib.h external entrypoints
-    libc.src.stdlib.malloc
-    libc.src.stdlib.calloc
-    libc.src.stdlib.realloc
-    libc.src.stdlib.free
-
-    # wctype.h entrypoints
-    libc.src.wctype.iswalpha
-)
-
-if(LLVM_LIBC_FULL_BUILD)
-  list(APPEND TARGET_LIBC_ENTRYPOINTS
-    # setjmp.h entrypoints
-    libc.src.setjmp.longjmp
-    libc.src.setjmp.setjmp
-    libc.src.setjmp.siglongjmp
-    libc.src.setjmp.sigsetjmp
-    libc.src.stdlib._Exit
-  )
-endif()
-
-
-set(TARGET_LIBM_ENTRYPOINTS
-    # complex.h entrypoints
-    libc.src.complex.creal
-    libc.src.complex.crealf
-    libc.src.complex.creall
-    libc.src.complex.cimag
-    libc.src.complex.cimagf
-    libc.src.complex.cimagl
-    libc.src.complex.conj
-    libc.src.complex.conjf
-    libc.src.complex.conjl
-    libc.src.complex.cproj
-    libc.src.complex.cprojf
-    libc.src.complex.cprojl
-
-    # fenv.h entrypoints
-    libc.src.fenv.feclearexcept
-    libc.src.fenv.fedisableexcept
-    libc.src.fenv.feenableexcept
-    libc.src.fenv.fegetenv
-    libc.src.fenv.fegetexcept
-    libc.src.fenv.fegetexceptflag
-    libc.src.fenv.fegetround
-    libc.src.fenv.feholdexcept
-    libc.src.fenv.feraiseexcept
-    libc.src.fenv.fesetenv
-    libc.src.fenv.fesetexcept
-    libc.src.fenv.fesetexceptflag
-    libc.src.fenv.fesetround
-    libc.src.fenv.fetestexcept
-    libc.src.fenv.fetestexceptflag
-    libc.src.fenv.feupdateenv
-
-    # math.h entrypoints
-    libc.src.math.acos
-    libc.src.math.acosf
-    libc.src.math.acoshf
-    libc.src.math.asin
-    libc.src.math.asinf
-    libc.src.math.asinhf
-    libc.src.math.atan2
-    libc.src.math.atan2f
-    libc.src.math.atan
-    libc.src.math.atanf
-    libc.src.math.atanhf
-    libc.src.math.canonicalize
-    libc.src.math.canonicalizef
-    libc.src.math.canonicalizel
-    libc.src.math.cbrt
-    libc.src.math.cbrtf
-    libc.src.math.ceil
-    libc.src.math.ceilf
-    libc.src.math.ceill
-    libc.src.math.copysign
-    libc.src.math.copysignf
-    libc.src.math.copysignl
-    libc.src.math.cos
-    libc.src.math.cosf
-    libc.src.math.coshf
-    libc.src.math.cospif
-    libc.src.math.dfmal
-    libc.src.math.dmull
-    libc.src.math.dsqrtl
-    libc.src.math.daddl
-    libc.src.math.ddivl
-    libc.src.math.dsubl
-    libc.src.math.erff
-    libc.src.math.exp
-    libc.src.math.exp10
-    libc.src.math.exp10f
-    libc.src.math.exp10m1f
-    libc.src.math.exp2
-    libc.src.math.exp2f
-    libc.src.math.exp2m1f
-    libc.src.math.expf
-    libc.src.math.expm1
-    libc.src.math.expm1f
-    libc.src.math.fabs
-    libc.src.math.fabsf
-    libc.src.math.fabsl
-    libc.src.math.fadd
-    libc.src.math.faddl
-    libc.src.math.fadd
-    libc.src.math.fdim
-    libc.src.math.fdimf
-    libc.src.math.fdiml
-    libc.src.math.fdiv
-    libc.src.math.fdivl
-    libc.src.math.ffma
-    libc.src.math.ffmal
-    libc.src.math.floor
-    libc.src.math.floorf
-    libc.src.math.floorl
-    libc.src.math.fma
-    libc.src.math.fmaf
-    libc.src.math.fmax
-    libc.src.math.fmaxf
-    libc.src.math.fmaximum
-    libc.src.math.fmaximum_mag
-    libc.src.math.fmaximum_mag_num
-    libc.src.math.fmaximum_mag_numf
-    libc.src.math.fmaximum_mag_numl
-    libc.src.math.fmaximum_magf
-    libc.src.math.fmaximum_magl
-    libc.src.math.fmaximum_num
-    libc.src.math.fmaximum_numf
-    libc.src.math.fmaximum_numl
-    libc.src.math.fmaximumf
-    libc.src.math.fmaximuml
-    libc.src.math.fmaxl
-    libc.src.math.fmin
-    libc.src.math.fminf
-    libc.src.math.fminimum
-    libc.src.math.fminimum_mag
-    libc.src.math.fminimum_mag_num
-    libc.src.math.fminimum_mag_numf
-    libc.src.math.fminimum_mag_numl
-    libc.src.math.fminimum_magf
-    libc.src.math.fminimum_magl
-    libc.src.math.fminimum_num
-    libc.src.math.fminimum_numf
-    libc.src.math.fminimum_numl
-    libc.src.math.fminimumf
-    libc.src.math.fminimuml
-    libc.src.math.fminl
-    libc.src.math.fmod
-    libc.src.math.fmodf
-    libc.src.math.fmodl
-    libc.src.math.fmul
-    libc.src.math.fmull
-    libc.src.math.frexp
-    libc.src.math.frexpf
-    libc.src.math.frexpl
-    libc.src.math.fromfp
-    libc.src.math.fromfpf
-    libc.src.math.fromfpl
-    libc.src.math.fromfpx
-    libc.src.math.fromfpxf
-    libc.src.math.fromfpxl
-    libc.src.math.fsqrt
-    libc.src.math.fsqrtl
-    libc.src.math.fsub
-    libc.src.math.fsubl
-    libc.src.math.getpayload
-    libc.src.math.getpayloadf
-    libc.src.math.getpayloadl
-    libc.src.math.hypot
-    libc.src.math.hypotf
-    libc.src.math.ilogb
-    libc.src.math.ilogbf
-    libc.src.math.ilogbl
-    libc.src.math.iscanonical
-    libc.src.math.iscanonicalf
-    libc.src.math.iscanonicall
-    libc.src.math.isnan
-    libc.src.math.isnanf
-    libc.src.math.isnanl
-    libc.src.math.issignaling
-    libc.src.math.issignalingf
-    libc.src.math.issignalingl
-    libc.src.math.ldexp
-    libc.src.math.ldexpf
-    libc.src.math.ldexpl
-    libc.src.math.llogb
-    libc.src.math.llogbf
-    libc.src.math.llogbl
-    libc.src.math.llrint
-    libc.src.math.llrintf
-    libc.src.math.llrintl
-    libc.src.math.llround
-    libc.src.math.llroundf
-    libc.src.math.llroundl
-    libc.src.math.log
-    libc.src.math.log10
-    libc.src.math.log10f
-    libc.src.math.log1p
-    libc.src.math.log1pf
-    libc.src.math.log2
-    libc.src.math.log2f
-    libc.src.math.logb
-    libc.src.math.logbf
-    libc.src.math.logbl
-    libc.src.math.logf
-    libc.src.math.lrint
-    libc.src.math.lrintf
-    libc.src.math.lrintl
-    libc.src.math.lround
-    libc.src.math.lroundf
-    libc.src.math.lroundl
-    libc.src.math.modf
-    libc.src.math.modff
-    libc.src.math.modfl
-    libc.src.math.nan
-    libc.src.math.nanf
-    libc.src.math.nanl
-    libc.src.math.nearbyint
-    libc.src.math.nearbyintf
-    libc.src.math.nearbyintl
-    libc.src.math.nextafter
-    libc.src.math.nextafterf
-    libc.src.math.nextafterl
-    libc.src.math.nextdown
-    libc.src.math.nextdownf
-    libc.src.math.nextdownl
-    libc.src.math.nexttoward
-    libc.src.math.nexttowardf
-    libc.src.math.nexttowardl
-    libc.src.math.nextup
-    libc.src.math.nextupf
-    libc.src.math.nextupl
-    libc.src.math.pow
-    libc.src.math.powf
-    libc.src.math.remainder
-    libc.src.math.remainderf
-    libc.src.math.remainderl
-    libc.src.math.remquo
-    libc.src.math.remquof
-    libc.src.math.remquol
-    libc.src.math.rint
-    libc.src.math.rintf
-    libc.src.math.rintl
-    libc.src.math.round
-    libc.src.math.roundeven
-    libc.src.math.roundevenf
-    libc.src.math.roundevenl
-    libc.src.math.roundf
-    libc.src.math.roundl
-    libc.src.math.scalbln
-    libc.src.math.scalblnf
-    libc.src.math.scalblnl
-    libc.src.math.scalbn
-    libc.src.math.scalbnf
-    libc.src.math.scalbnl
-    libc.src.math.setpayload
-    libc.src.math.setpayloadf
-    libc.src.math.setpayloadl
-    libc.src.math.setpayloadsig
-    libc.src.math.setpayloadsigf
-    libc.src.math.setpayloadsigl
-    libc.src.math.sin
-    libc.src.math.sincos
-    libc.src.math.sincosf
-    libc.src.math.sinf
-    libc.src.math.sinhf
-    libc.src.math.sinpif
-    libc.src.math.sqrt
-    libc.src.math.sqrtf
-    libc.src.math.sqrtl
-    libc.src.math.tan
-    libc.src.math.tanf
-    libc.src.math.tanhf
-    libc.src.math.tanpif
-    libc.src.math.totalorder
-    libc.src.math.totalorderf
-    libc.src.math.totalorderl
-    libc.src.math.totalordermag
-    libc.src.math.totalordermagf
-    libc.src.math.totalordermagl
-    libc.src.math.trunc
-    libc.src.math.truncf
-    libc.src.math.truncl
-    libc.src.math.ufromfp
-    libc.src.math.ufromfpf
-    libc.src.math.ufromfpl
-    libc.src.math.ufromfpx
-    libc.src.math.ufromfpxf
-    libc.src.math.ufromfpxl
-)
-
-if(LIBC_TYPES_HAS_CFLOAT16)
-  list(APPEND TARGET_LIBM_ENTRYPOINTS
-    # complex.h C23 _Complex _Float16 entrypoints
-    libc.src.complex.crealf16
-    libc.src.complex.cimagf16
-    libc.src.complex.conjf16
-    libc.src.complex.cprojf16
-  )
-endif()
-
-if(LIBC_TYPES_HAS_FLOAT16)
-  list(APPEND TARGET_LIBM_ENTRYPOINTS
-    # math.h C23 _Float16 entrypoints
-    libc.src.math.acosf16
-    libc.src.math.acoshf16
-    libc.src.math.asinf16
-    libc.src.math.asinhf16
-    libc.src.math.canonicalizef16
-    libc.src.math.ceilf16
-    libc.src.math.copysignf16
-    libc.src.math.cosf16
-    libc.src.math.coshf16
-    libc.src.math.cospif16
-    libc.src.math.exp10f16
-    libc.src.math.exp10m1f16
-    libc.src.math.exp2f16
-    libc.src.math.exp2m1f16
-    libc.src.math.expf16
-    libc.src.math.expm1f16
-    libc.src.math.f16add
-    libc.src.math.f16addf
-    libc.src.math.f16addl
-    libc.src.math.f16div
-    libc.src.math.f16divf
-    libc.src.math.f16divl
-    libc.src.math.f16fma
-    libc.src.math.f16fmaf
-    libc.src.math.f16fmal
-    libc.src.math.f16mul
-    libc.src.math.f16mulf
-    libc.src.math.f16mull
-    libc.src.math.f16sqrt
-    libc.src.math.f16sqrtf
-    libc.src.math.f16sqrtl
-    libc.src.math.f16sub
-    libc.src.math.f16subf
-    libc.src.math.f16subl
-    libc.src.math.fabsf16
-    libc.src.math.fdimf16
-    libc.src.math.floorf16
-    libc.src.math.fmaf16
-    libc.src.math.fmaxf16
-    libc.src.math.fmaximum_mag_numf16
-    libc.src.math.fmaximum_magf16
-    libc.src.math.fmaximum_numf16
-    libc.src.math.fmaximumf16
-    libc.src.math.fminf16
-    libc.src.math.fminimum_mag_numf16
-    libc.src.math.fminimum_magf16
-    libc.src.math.fminimum_numf16
-    libc.src.math.fminimumf16
-    libc.src.math.fmodf16
-    libc.src.math.frexpf16
-    libc.src.math.fromfpf16
-    libc.src.math.fromfpxf16
-    libc.src.math.getpayloadf16
-    libc.src.math.hypotf16
-    libc.src.math.ilogbf16
-    libc.src.math.iscanonicalf16
-    libc.src.math.issignalingf16
-    libc.src.math.ldexpf16
-    libc.src.math.llogbf16
-    libc.src.math.llrintf16
-    libc.src.math.llroundf16
-    libc.src.math.log10f16
-    libc.src.math.log2f16
-    libc.src.math.logbf16
-    libc.src.math.logf16
-    libc.src.math.lrintf16
-    libc.src.math.lroundf16
-    libc.src.math.modff16
-    libc.src.math.nanf16
-    libc.src.math.nearbyintf16
-    libc.src.math.nextafterf16
-    libc.src.math.nextdownf16
-    libc.src.math.nexttowardf16
-    libc.src.math.nextupf16
-    libc.src.math.remainderf16
-    libc.src.math.remquof16
-    libc.src.math.rintf16
-    libc.src.math.roundevenf16
-    libc.src.math.roundf16
-    libc.src.math.scalblnf16
-    libc.src.math.scalbnf16
-    libc.src.math.setpayloadf16
-    libc.src.math.setpayloadsigf16
-    libc.src.math.sinf16
-    libc.src.math.sinhf16
-    libc.src.math.sinpif16
-    libc.src.math.sqrtf16
-    libc.src.math.tanf16
-    libc.src.math.tanhf16
-    libc.src.math.tanpif16
-    libc.src.math.totalorderf16
-    libc.src.math.totalordermagf16
-    libc.src.math.truncf16
-    libc.src.math.ufromfpf16
-    libc.src.math.ufromfpxf16
-  )
-
-  if(LIBC_TYPES_HAS_FLOAT128)
-    list(APPEND TARGET_LIBM_ENTRYPOINTS
-      # math.h C23 mixed _Float16 and _Float128 entrypoints
-      libc.src.math.f16addf128
-      libc.src.math.f16divf128
-      libc.src.math.f16fmaf128
-      libc.src.math.f16mulf128
-      libc.src.math.f16sqrtf128
-      libc.src.math.f16subf128
-    )
-  endif()
-endif()
-
-if(LIBC_TYPES_HAS_CFLOAT128)
-  list(APPEND TARGET_LIBM_ENTRYPOINTS
-    # complex.h C23 _Complex _Float128 entrypoints
-    libc.src.complex.crealf128
-    libc.src.complex.cimagf128
-    libc.src.complex.conjf128
-    libc.src.complex.cprojf128
-  )
-endif()
-
-if(LIBC_TYPES_HAS_FLOAT128)
-  list(APPEND TARGET_LIBM_ENTRYPOINTS
-    # math.h C23 _Float128 entrypoints
-    libc.src.math.atan2f128
-    libc.src.math.canonicalizef128
-    libc.src.math.ceilf128
-    libc.src.math.copysignf128
-    libc.src.math.daddf128
-    libc.src.math.ddivf128
-    libc.src.math.dfmaf128
-    libc.src.math.dmulf128
-    libc.src.math.dsqrtf128
-    libc.src.math.dsubf128
-    libc.src.math.fabsf128
-    libc.src.math.faddf128
-    libc.src.math.fdimf128
-    libc.src.math.fdivf128
-    libc.src.math.ffmaf128
-    libc.src.math.floorf128
-    libc.src.math.fmaxf128
-    libc.src.math.fmaximum_mag_numf128
-    libc.src.math.fmaximum_magf128
-    libc.src.math.fmaximum_numf128
-    libc.src.math.fmaximumf128
-    libc.src.math.fminf128
-    libc.src.math.fminimum_mag_numf128
-    libc.src.math.fminimum_magf128
-    libc.src.math.fminimum_numf128
-    libc.src.math.fminimumf128
-    libc.src.math.fmodf128
-    libc.src.math.fmulf128
-    libc.src.math.frexpf128
-    libc.src.math.fromfpf128
-    libc.src.math.fromfpxf128
-    libc.src.math.fsqrtf128
-    libc.src.math.fsubf128
-    libc.src.math.getpayloadf128
-    libc.src.math.ilogbf128
-    libc.src.math.iscanonicalf128
-    libc.src.math.issignalingf128
-    libc.src.math.ldexpf128
-    libc.src.math.llogbf128
-    libc.src.math.llrintf128
-    libc.src.math.llroundf128
-    libc.src.math.logbf128
-    libc.src.math.lrintf128
-    libc.src.math.lroundf128
-    libc.src.math.modff128
-    libc.src.math.nanf128
-    libc.src.math.nearbyintf128
-    libc.src.math.nextafterf128
-    libc.src.math.nextdownf128
-    libc.src.math.nextupf128
-    libc.src.math.remainderf128
-    libc.src.math.remquof128
-    libc.src.math.rintf128
-    libc.src.math.roundevenf128
-    libc.src.math.roundf128
-    libc.src.math.scalblnf128
-    libc.src.math.scalbnf128
-    libc.src.math.setpayloadf128
-    libc.src.math.setpayloadsigf128
-    libc.src.math.sqrtf128
-    libc.src.math.totalorderf128
-    libc.src.math.totalordermagf128
-    libc.src.math.truncf128
-    libc.src.math.ufromfpf128
-    libc.src.math.ufromfpxf128
-  )
-endif()
-
-list(APPEND TARGET_LIBM_ENTRYPOINTS
-  # bfloat16 entrypoints
-  libc.src.math.bf16add
-  libc.src.math.bf16addf
-  libc.src.math.bf16addl
-  libc.src.math.bf16div
-  libc.src.math.bf16divf
-  libc.src.math.bf16divl
-  libc.src.math.bf16fma
-  libc.src.math.bf16fmaf
-  libc.src.math.bf16fmal
-  libc.src.math.bf16mul
-  libc.src.math.bf16mulf
-  libc.src.math.bf16mull
-  libc.src.math.bf16sub
-  libc.src.math.bf16subf
-  libc.src.math.bf16subl
-  libc.src.math.canonicalizebf16
-  libc.src.math.ceilbf16
-  libc.src.math.copysignbf16
-  libc.src.math.fabsbf16
-  libc.src.math.fdimbf16
-  libc.src.math.floorbf16
-  libc.src.math.fmaxbf16
-  libc.src.math.fmaximumbf16
-  libc.src.math.fmaximum_magbf16
-  libc.src.math.fmaximum_mag_numbf16
-  libc.src.math.fmaximum_numbf16
-  libc.src.math.fminbf16
-  libc.src.math.fminimumbf16
-  libc.src.math.fminimum_magbf16
-  libc.src.math.fminimum_mag_numbf16
-  libc.src.math.fminimum_numbf16
-  libc.src.math.fmodbf16
-  libc.src.math.frexpbf16
-  libc.src.math.fromfpbf16
-  libc.src.math.fromfpxbf16
-  libc.src.math.getpayloadbf16
-  libc.src.math.ilogbbf16
-  libc.src.math.iscanonicalbf16
-  libc.src.math.issignalingbf16
-  libc.src.math.ldexpbf16
-  libc.src.math.llogbbf16
-  libc.src.math.llrintbf16
-  libc.src.math.llroundbf16
-  libc.src.math.log_bf16
-  libc.src.math.logbbf16
-  libc.src.math.lrintbf16
-  libc.src.math.lroundbf16
-  libc.src.math.modfbf16
-  libc.src.math.nanbf16
-  libc.src.math.nearbyintbf16
-  libc.src.math.nextafterbf16
-  libc.src.math.nextdownbf16
-  libc.src.math.nexttowardbf16
-  libc.src.math.nextupbf16
-  libc.src.math.remainderbf16
-  libc.src.math.remquobf16
-  libc.src.math.rintbf16
-  libc.src.math.roundbf16
-  libc.src.math.roundevenbf16
-  libc.src.math.scalblnbf16
-  libc.src.math.scalbnbf16
-  libc.src.math.setpayloadbf16
-  libc.src.math.setpayloadsigbf16
-  libc.src.math.sqrtbf16
-  libc.src.math.truncbf16
-  libc.src.math.totalorderbf16
-  libc.src.math.totalordermagbf16
-  libc.src.math.ufromfpbf16
-  libc.src.math.ufromfpxbf16
-)
-
-if(LIBC_TYPES_HAS_FLOAT128)
-  list(APPEND TARGET_LIBM_ENTRYPOINTS
-    # math.h C++23 mixed bfloat16 and _Float128 entrypoints
-    libc.src.math.bf16addf128
-    libc.src.math.bf16mulf128
-    libc.src.math.bf16subf128
-  )
-endif()
-
-if(LIBC_COMPILER_HAS_FIXED_POINT)
-  list(APPEND TARGET_LIBM_ENTRYPOINTS
-    # stdfix.h _Fract and _Accum entrypoints
-    libc.src.stdfix.abshk
-    libc.src.stdfix.abshr
-    libc.src.stdfix.absk
-    libc.src.stdfix.abslk
-    libc.src.stdfix.abslr
-    libc.src.stdfix.absr
-    libc.src.stdfix.exphk
-    libc.src.stdfix.expk
-    libc.src.stdfix.roundhk
-    libc.src.stdfix.roundhr
-    libc.src.stdfix.roundk
-    libc.src.stdfix.roundlk
-    libc.src.stdfix.roundlr
-    libc.src.stdfix.roundr
-    libc.src.stdfix.rounduhk
-    libc.src.stdfix.rounduhr
-    libc.src.stdfix.rounduk
-    libc.src.stdfix.roundulk
-    libc.src.stdfix.roundulr
-    libc.src.stdfix.roundur
-    libc.src.stdfix.sqrtuhk
-    libc.src.stdfix.sqrtuhr
-    libc.src.stdfix.sqrtuk
-    libc.src.stdfix.sqrtur
-    # libc.src.stdfix.sqrtulk
-    libc.src.stdfix.sqrtulr
-    libc.src.stdfix.uhksqrtus
-    libc.src.stdfix.uksqrtui
-    libc.src.stdfix.hrbits
-    libc.src.stdfix.uhrbits
-    libc.src.stdfix.rbits
-    libc.src.stdfix.urbits
-    libc.src.stdfix.lrbits
-    libc.src.stdfix.ulrbits
-    libc.src.stdfix.hkbits
-    libc.src.stdfix.uhkbits
-    libc.src.stdfix.kbits
-    libc.src.stdfix.ukbits
-    libc.src.stdfix.lkbits
-    libc.src.stdfix.ulkbits
-    libc.src.stdfix.bitshr
-    libc.src.stdfix.bitsr
-    libc.src.stdfix.bitslr
-    libc.src.stdfix.bitshk
-    libc.src.stdfix.bitsk
-    libc.src.stdfix.bitslk
-    libc.src.stdfix.bitsuhr
-    libc.src.stdfix.bitsur
-    libc.src.stdfix.bitsulr
-    libc.src.stdfix.bitsuhk
-    libc.src.stdfix.bitsuk
-    libc.src.stdfix.bitsulk
-    libc.src.stdfix.countlshr
-    libc.src.stdfix.countlsr
-    libc.src.stdfix.countlslr
-    libc.src.stdfix.countlshk
-    libc.src.stdfix.countlsk
-    libc.src.stdfix.countlslk
-    libc.src.stdfix.countlsuhr
-    libc.src.stdfix.countlsur
-    libc.src.stdfix.countlsulr
-    libc.src.stdfix.countlsuhk
-    libc.src.stdfix.countlsuk
-    libc.src.stdfix.countlsulk
-  )
-endif()
-
-set(TARGET_LLVMLIBC_ENTRYPOINTS
-  ${TARGET_LIBC_ENTRYPOINTS}
-  ${TARGET_LIBM_ENTRYPOINTS}
-)
+set(TARGET_LIBC_ENTRYPOINTS
+    # ctype.h entrypoints
+    libc.src.ctype.isalnum
+    libc.src.ctype.isalpha
+    libc.src.ctype.isascii
+    libc.src.ctype.isblank
+    libc.src.ctype.iscntrl
+    libc.src.ctype.isdigit
+    libc.src.ctype.isgraph
+    libc.src.ctype.islower
+    libc.src.ctype.isprint
+    libc.src.ctype.ispunct
+    libc.src.ctype.isspace
+    libc.src.ctype.isupper
+    libc.src.ctype.isxdigit
+    libc.src.ctype.toascii
+    libc.src.ctype.tolower
+    libc.src.ctype.toupper
+
+    # errno.h entrypoints
+    libc.src.errno.errno
+
+    # string.h entrypoints
+    libc.src.string.memccpy
+    libc.src.string.memchr
+    libc.src.string.memcmp
+    libc.src.string.memcpy
+    libc.src.string.memmem
+    libc.src.string.memmove
+    libc.src.string.mempcpy
+    libc.src.string.memrchr
+    libc.src.string.memset
+    libc.src.string.stpcpy
+    libc.src.string.stpncpy
+    libc.src.string.strcasestr
+    libc.src.string.strcat
+    libc.src.string.strchr
+    libc.src.string.strchrnul
+    libc.src.string.strcmp
+    libc.src.string.strcpy
+    libc.src.string.strcspn
+    libc.src.string.strlcat
+    libc.src.string.strlcpy
+    libc.src.string.strlen
+    libc.src.string.strncat
+    libc.src.string.strncmp
+    libc.src.string.strncpy
+    libc.src.string.strnlen
+    libc.src.string.strpbrk
+    libc.src.string.strrchr
+    libc.src.string.strspn
+    libc.src.string.strstr
+    libc.src.string.strtok
+    libc.src.string.strtok_r
+
+    # string.h entrypoints that depend on malloc
+    libc.src.string.strdup
+    libc.src.string.strndup
+
+    # strings.h entrypoints
+    libc.src.strings.bcmp
+    libc.src.strings.bcopy
+    libc.src.strings.bzero
+    libc.src.strings.strcasecmp
+    libc.src.strings.strncasecmp
+
+    # inttypes.h entrypoints
+    libc.src.inttypes.imaxabs
+    libc.src.inttypes.imaxdiv
+    libc.src.inttypes.strtoimax
+    libc.src.inttypes.strtoumax
+
+    # stdlib.h entrypoints
+    libc.src.stdlib.abs
+    libc.src.stdlib.atoi
+    libc.src.stdlib.atof
+    libc.src.stdlib.atol
+    libc.src.stdlib.atoll
+    libc.src.stdlib.bsearch
+    libc.src.stdlib.div
+    libc.src.stdlib.labs
+    libc.src.stdlib.ldiv
+    libc.src.stdlib.llabs
+    libc.src.stdlib.lldiv
+    libc.src.stdlib.memalignment
+    libc.src.stdlib.qsort
+    libc.src.stdlib.rand
+    libc.src.stdlib.srand
+    libc.src.stdlib.strtod
+    libc.src.stdlib.strtof
+    libc.src.stdlib.strtol
+    libc.src.stdlib.strtold
+    libc.src.stdlib.strtoll
+    libc.src.stdlib.strtoul
+    libc.src.stdlib.strtoull
+
+    # stdlib.h external entrypoints
+    libc.src.stdlib.malloc
+    libc.src.stdlib.calloc
+    libc.src.stdlib.realloc
+    libc.src.stdlib.free
+
+    # wctype.h entrypoints
+    libc.src.wctype.iswalpha
+)
+
+if(LLVM_LIBC_FULL_BUILD)
+  list(APPEND TARGET_LIBC_ENTRYPOINTS
+    # setjmp.h entrypoints
+    libc.src.setjmp.longjmp
+    libc.src.setjmp.setjmp
+    libc.src.setjmp.siglongjmp
+    libc.src.setjmp.sigsetjmp
+    libc.src.stdlib._Exit
+  )
+endif()
+
+
+set(TARGET_LIBM_ENTRYPOINTS
+    # complex.h entrypoints
+    libc.src.complex.creal
+    libc.src.complex.crealf
+    libc.src.complex.creall
+    libc.src.complex.cimag
+    libc.src.complex.cimagf
+    libc.src.complex.cimagl
+    libc.src.complex.conj
+    libc.src.complex.conjf
+    libc.src.complex.conjl
+    libc.src.complex.cproj
+    libc.src.complex.cprojf
+    libc.src.complex.cprojl
+
+    # fenv.h entrypoints
+    libc.src.fenv.feclearexcept
+    libc.src.fenv.fedisableexcept
+    libc.src.fenv.feenableexcept
+    libc.src.fenv.fegetenv
+    libc.src.fenv.fegetexcept
+    libc.src.fenv.fegetexceptflag
+    libc.src.fenv.fegetround
+    libc.src.fenv.feholdexcept
+    libc.src.fenv.feraiseexcept
+    libc.src.fenv.fesetenv
+    libc.src.fenv.fesetexcept
+    libc.src.fenv.fesetexceptflag
+    libc.src.fenv.fesetround
+    libc.src.fenv.fetestexcept
+    libc.src.fenv.fetestexceptflag
+    libc.src.fenv.feupdateenv
+
+    # math.h entrypoints
+    libc.src.math.acos
+    libc.src.math.acosf
+    libc.src.math.acoshf
+    libc.src.math.asin
+    libc.src.math.asinf
+    libc.src.math.asinhf
+    libc.src.math.atan2
+    libc.src.math.atan2f
+    libc.src.math.atan
+    libc.src.math.atanf
+    libc.src.math.atanhf
+    libc.src.math.canonicalize
+    libc.src.math.canonicalizef
+    libc.src.math.canonicalizel
+    libc.src.math.cbrt
+    libc.src.math.cbrtf
+    libc.src.math.ceil
+    libc.src.math.ceilf
+    libc.src.math.ceill
+    libc.src.math.copysign
+    libc.src.math.copysignf
+    libc.src.math.copysignl
+    libc.src.math.cos
+    libc.src.math.cosf
+    libc.src.math.coshf
+    libc.src.math.cospif
+    libc.src.math.dfmal
+    libc.src.math.dmull
+    libc.src.math.dsqrtl
+    libc.src.math.daddl
+    libc.src.math.ddivl
+    libc.src.math.dsubl
+    libc.src.math.erff
+    libc.src.math.exp
+    libc.src.math.exp10
+    libc.src.math.exp10f
+    libc.src.math.exp10m1f
+    libc.src.math.exp2
+    libc.src.math.exp2f
+    libc.src.math.exp2m1f
+    libc.src.math.expf
+    libc.src.math.expm1
+    libc.src.math.expm1f
+    libc.src.math.fabs
+    libc.src.math.fabsf
+    libc.src.math.fabsl
+    libc.src.math.fadd
+    libc.src.math.faddl
+    libc.src.math.fadd
+    libc.src.math.fdim
+    libc.src.math.fdimf
+    libc.src.math.fdiml
+    libc.src.math.fdiv
+    libc.src.math.fdivl
+    libc.src.math.ffma
+    libc.src.math.ffmal
+    libc.src.math.floor
+    libc.src.math.floorf
+    libc.src.math.floorl
+    libc.src.math.fma
+    libc.src.math.fmabf16
+    libc.src.math.fmaf
+    libc.src.math.fmax
+    libc.src.math.fmaxf
+    libc.src.math.fmaximum
+    libc.src.math.fmaximum_mag
+    libc.src.math.fmaximum_mag_num
+    libc.src.math.fmaximum_mag_numf
+    libc.src.math.fmaximum_mag_numl
+    libc.src.math.fmaximum_magf
+    libc.src.math.fmaximum_magl
+    libc.src.math.fmaximum_num
+    libc.src.math.fmaximum_numf
+    libc.src.math.fmaximum_numl
+    libc.src.math.fmaximumf
+    libc.src.math.fmaximuml
+    libc.src.math.fmaxl
+    libc.src.math.fmin
+    libc.src.math.fminf
+    libc.src.math.fminimum
+    libc.src.math.fminimum_mag
+    libc.src.math.fminimum_mag_num
+    libc.src.math.fminimum_mag_numf
+    libc.src.math.fminimum_mag_numl
+    libc.src.math.fminimum_magf
+    libc.src.math.fminimum_magl
+    libc.src.math.fminimum_num
+    libc.src.math.fminimum_numf
+    libc.src.math.fminimum_numl
+    libc.src.math.fminimumf
+    libc.src.math.fminimuml
+    libc.src.math.fminl
+    libc.src.math.fmod
+    libc.src.math.fmodf
+    libc.src.math.fmodl
+    libc.src.math.fmul
+    libc.src.math.fmull
+    libc.src.math.frexp
+    libc.src.math.frexpf
+    libc.src.math.frexpl
+    libc.src.math.fromfp
+    libc.src.math.fromfpf
+    libc.src.math.fromfpl
+    libc.src.math.fromfpx
+    libc.src.math.fromfpxf
+    libc.src.math.fromfpxl
+    libc.src.math.fsqrt
+    libc.src.math.fsqrtl
+    libc.src.math.fsub
+    libc.src.math.fsubl
+    libc.src.math.getpayload
+    libc.src.math.getpayloadf
+    libc.src.math.getpayloadl
+    libc.src.math.hypot
+    libc.src.math.hypotf
+    libc.src.math.ilogb
+    libc.src.math.ilogbf
+    libc.src.math.ilogbl
+    libc.src.math.iscanonical
+    libc.src.math.iscanonicalf
+    libc.src.math.iscanonicall
+    libc.src.math.isnan
+    libc.src.math.isnanf
+    libc.src.math.isnanl
+    libc.src.math.issignaling
+    libc.src.math.issignalingf
+    libc.src.math.issignalingl
+    libc.src.math.ldexp
+    libc.src.math.ldexpf
+    libc.src.math.ldexpl
+    libc.src.math.llogb
+    libc.src.math.llogbf
+    libc.src.math.llogbl
+    libc.src.math.llrint
+    libc.src.math.llrintf
+    libc.src.math.llrintl
+    libc.src.math.llround
+    libc.src.math.llroundf
+    libc.src.math.llroundl
+    libc.src.math.log
+    libc.src.math.log10
+    libc.src.math.log10f
+    libc.src.math.log1p
+    libc.src.math.log1pf
+    libc.src.math.log2
+    libc.src.math.log2f
+    libc.src.math.logb
+    libc.src.math.logbf
+    libc.src.math.logbl
+    libc.src.math.logf
+    libc.src.math.lrint
+    libc.src.math.lrintf
+    libc.src.math.lrintl
+    libc.src.math.lround
+    libc.src.math.lroundf
+    libc.src.math.lroundl
+    libc.src.math.modf
+    libc.src.math.modff
+    libc.src.math.modfl
+    libc.src.math.nan
+    libc.src.math.nanf
+    libc.src.math.nanl
+    libc.src.math.nearbyint
+    libc.src.math.nearbyintf
+    libc.src.math.nearbyintl
+    libc.src.math.nextafter
+    libc.src.math.nextafterf
+    libc.src.math.nextafterl
+    libc.src.math.nextdown
+    libc.src.math.nextdownf
+    libc.src.math.nextdownl
+    libc.src.math.nexttoward
+    libc.src.math.nexttowardf
+    libc.src.math.nexttowardl
+    libc.src.math.nextup
+    libc.src.math.nextupf
+    libc.src.math.nextupl
+    libc.src.math.pow
+    libc.src.math.powf
+    libc.src.math.remainder
+    libc.src.math.remainderf
+    libc.src.math.remainderl
+    libc.src.math.remquo
+    libc.src.math.remquof
+    libc.src.math.remquol
+    libc.src.math.rint
+    libc.src.math.rintf
+    libc.src.math.rintl
+    libc.src.math.round
+    libc.src.math.roundeven
+    libc.src.math.roundevenf
+    libc.src.math.roundevenl
+    libc.src.math.roundf
+    libc.src.math.roundl
+    libc.src.math.scalbln
+    libc.src.math.scalblnf
+    libc.src.math.scalblnl
+    libc.src.math.scalbn
+    libc.src.math.scalbnf
+    libc.src.math.scalbnl
+    libc.src.math.setpayload
+    libc.src.math.setpayloadf
+    libc.src.math.setpayloadl
+    libc.src.math.setpayloadsig
+    libc.src.math.setpayloadsigf
+    libc.src.math.setpayloadsigl
+    libc.src.math.sin
+    libc.src.math.sincos
+    libc.src.math.sincosf
+    libc.src.math.sinf
+    libc.src.math.sinhf
+    libc.src.math.sinpif
+    libc.src.math.sqrt
+    libc.src.math.sqrtf
+    libc.src.math.sqrtl
+    libc.src.math.tan
+    libc.src.math.tanf
+    libc.src.math.tanhf
+    libc.src.math.tanpif
+    libc.src.math.totalorder
+    libc.src.math.totalorderf
+    libc.src.math.totalorderl
+    libc.src.math.totalordermag
+    libc.src.math.totalordermagf
+    libc.src.math.totalordermagl
+    libc.src.math.trunc
+    libc.src.math.truncf
+    libc.src.math.truncl
+    libc.src.math.ufromfp
+    libc.src.math.ufromfpf
+    libc.src.math.ufromfpl
+    libc.src.math.ufromfpx
+    libc.src.math.ufromfpxf
+    libc.src.math.ufromfpxl
+)
+
+if(LIBC_TYPES_HAS_CFLOAT16)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # complex.h C23 _Complex _Float16 entrypoints
+    libc.src.complex.crealf16
+    libc.src.complex.cimagf16
+    libc.src.complex.conjf16
+    libc.src.complex.cprojf16
+  )
+endif()
+
+if(LIBC_TYPES_HAS_FLOAT16)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # math.h C23 _Float16 entrypoints
+    libc.src.math.acosf16
+    libc.src.math.acoshf16
+    libc.src.math.asinf16
+    libc.src.math.asinhf16
+    libc.src.math.canonicalizef16
+    libc.src.math.ceilf16
+    libc.src.math.copysignf16
+    libc.src.math.cosf16
+    libc.src.math.coshf16
+    libc.src.math.cospif16
+    libc.src.math.exp10f16
+    libc.src.math.exp10m1f16
+    libc.src.math.exp2f16
+    libc.src.math.exp2m1f16
+    libc.src.math.expf16
+    libc.src.math.expm1f16
+    libc.src.math.f16add
+    libc.src.math.f16addf
+    libc.src.math.f16addl
+    libc.src.math.f16div
+    libc.src.math.f16divf
+    libc.src.math.f16divl
+    libc.src.math.f16fma
+    libc.src.math.f16fmaf
+    libc.src.math.f16fmal
+    libc.src.math.f16mul
+    libc.src.math.f16mulf
+    libc.src.math.f16mull
+    libc.src.math.f16sqrt
+    libc.src.math.f16sqrtf
+    libc.src.math.f16sqrtl
+    libc.src.math.f16sub
+    libc.src.math.f16subf
+    libc.src.math.f16subl
+    libc.src.math.fabsf16
+    libc.src.math.fdimf16
+    libc.src.math.floorf16
+    libc.src.math.fmaf16
+    libc.src.math.fmaxf16
+    libc.src.math.fmaximum_mag_numf16
+    libc.src.math.fmaximum_magf16
+    libc.src.math.fmaximum_numf16
+    libc.src.math.fmaximumf16
+    libc.src.math.fminf16
+    libc.src.math.fminimum_mag_numf16
+    libc.src.math.fminimum_magf16
+    libc.src.math.fminimum_numf16
+    libc.src.math.fminimumf16
+    libc.src.math.fmodf16
+    libc.src.math.frexpf16
+    libc.src.math.fromfpf16
+    libc.src.math.fromfpxf16
+    libc.src.math.getpayloadf16
+    libc.src.math.hypotf16
+    libc.src.math.ilogbf16
+    libc.src.math.iscanonicalf16
+    libc.src.math.issignalingf16
+    libc.src.math.ldexpf16
+    libc.src.math.llogbf16
+    libc.src.math.llrintf16
+    libc.src.math.llroundf16
+    libc.src.math.log10f16
+    libc.src.math.log2f16
+    libc.src.math.logbf16
+    libc.src.math.logf16
+    libc.src.math.lrintf16
+    libc.src.math.lroundf16
+    libc.src.math.modff16
+    libc.src.math.nanf16
+    libc.src.math.nearbyintf16
+    libc.src.math.nextafterf16
+    libc.src.math.nextdownf16
+    libc.src.math.nexttowardf16
+    libc.src.math.nextupf16
+    libc.src.math.remainderf16
+    libc.src.math.remquof16
+    libc.src.math.rintf16
+    libc.src.math.roundevenf16
+    libc.src.math.roundf16
+    libc.src.math.scalblnf16
+    libc.src.math.scalbnf16
+    libc.src.math.setpayloadf16
+    libc.src.math.setpayloadsigf16
+    libc.src.math.sinf16
+    libc.src.math.sinhf16
+    libc.src.math.sinpif16
+    libc.src.math.sqrtf16
+    libc.src.math.tanf16
+    libc.src.math.tanhf16
+    libc.src.math.tanpif16
+    libc.src.math.totalorderf16
+    libc.src.math.totalordermagf16
+    libc.src.math.truncf16
+    libc.src.math.ufromfpf16
+    libc.src.math.ufromfpxf16
+  )
+
+  if(LIBC_TYPES_HAS_FLOAT128)
+    list(APPEND TARGET_LIBM_ENTRYPOINTS
+      # math.h C23 mixed _Float16 and _Float128 entrypoints
+      libc.src.math.f16addf128
+      libc.src.math.f16divf128
+      libc.src.math.f16fmaf128
+      libc.src.math.f16mulf128
+      libc.src.math.f16sqrtf128
+      libc.src.math.f16subf128
+    )
+  endif()
+endif()
+
+if(LIBC_TYPES_HAS_CFLOAT128)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # complex.h C23 _Complex _Float128 entrypoints
+    libc.src.complex.crealf128
+    libc.src.complex.cimagf128
+    libc.src.complex.conjf128
+    libc.src.complex.cprojf128
+  )
+endif()
+
+if(LIBC_TYPES_HAS_FLOAT128)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # math.h C23 _Float128 entrypoints
+    libc.src.math.atan2f128
+    libc.src.math.canonicalizef128
+    libc.src.math.ceilf128
+    libc.src.math.copysignf128
+    libc.src.math.daddf128
+    libc.src.math.ddivf128
+    libc.src.math.dfmaf128
+    libc.src.math.dmulf128
+    libc.src.math.dsqrtf128
+    libc.src.math.dsubf128
+    libc.src.math.fabsf128
+    libc.src.math.faddf128
+    libc.src.math.fdimf128
+    libc.src.math.fdivf128
+    libc.src.math.ffmaf128
+    libc.src.math.floorf128
+    libc.src.math.fmaxf128
+    libc.src.math.fmaximum_mag_numf128
+    libc.src.math.fmaximum_magf128
+    libc.src.math.fmaximum_numf128
+    libc.src.math.fmaximumf128
+    libc.src.math.fminf128
+    libc.src.math.fminimum_mag_numf128
+    libc.src.math.fminimum_magf128
+    libc.src.math.fminimum_numf128
+    libc.src.math.fminimumf128
+    libc.src.math.fmodf128
+    libc.src.math.fmulf128
+    libc.src.math.frexpf128
+    libc.src.math.fromfpf128
+    libc.src.math.fromfpxf128
+    libc.src.math.fsqrtf128
+    libc.src.math.fsubf128
+    libc.src.math.getpayloadf128
+    libc.src.math.ilogbf128
+    libc.src.math.iscanonicalf128
+    libc.src.math.issignalingf128
+    libc.src.math.ldexpf128
+    libc.src.math.llogbf128
+    libc.src.math.llrintf128
+    libc.src.math.llroundf128
+    libc.src.math.logbf128
+    libc.src.math.lrintf128
+    libc.src.math.lroundf128
+    libc.src.math.modff128
+    libc.src.math.nanf128
+    libc.src.math.nearbyintf128
+    libc.src.math.nextafterf128
+    libc.src.math.nextdownf128
+    libc.src.math.nextupf128
+    libc.src.math.remainderf128
+    libc.src.math.remquof128
+    libc.src.math.rintf128
+    libc.src.math.roundevenf128
+    libc.src.math.roundf128
+    libc.src.math.scalblnf128
+    libc.src.math.scalbnf128
+    libc.src.math.setpayloadf128
+    libc.src.math.setpayloadsigf128
+    libc.src.math.sqrtf128
+    libc.src.math.totalorderf128
+    libc.src.math.totalordermagf128
+    libc.src.math.truncf128
+    libc.src.math.ufromfpf128
+    libc.src.math.ufromfpxf128
+  )
+endif()
+
+list(APPEND TARGET_LIBM_ENTRYPOINTS
+  # bfloat16 entrypoints
+  libc.src.math.bf16add
+  libc.src.math.bf16addf
+  libc.src.math.bf16addl
+  libc.src.math.bf16div
+  libc.src.math.bf16divf
+  libc.src.math.bf16divl
+  libc.src.math.bf16fma
+  libc.src.math.bf16fmaf
+  libc.src.math.bf16fmal
+  libc.src.math.bf16mul
+  libc.src.math.bf16mulf
+  libc.src.math.bf16mull
+  libc.src.math.bf16sub
+  libc.src.math.bf16subf
+  libc.src.math.bf16subl
+  libc.src.math.canonicalizebf16
+  libc.src.math.ceilbf16
+  libc.src.math.copysignbf16
+  libc.src.math.fabsbf16
+  libc.src.math.fdimbf16
+  libc.src.math.floorbf16
+  libc.src.math.fmaxbf16
+  libc.src.math.fmaximumbf16
+  libc.src.math.fmaximum_magbf16
+  libc.src.math.fmaximum_mag_numbf16
+  libc.src.math.fmaximum_numbf16
+  libc.src.math.fminbf16
+  libc.src.math.fminimumbf16
+  libc.src.math.fminimum_magbf16
+  libc.src.math.fminimum_mag_numbf16
+  libc.src.math.fminimum_numbf16
+  libc.src.math.fmodbf16
+  libc.src.math.frexpbf16
+  libc.src.math.fromfpbf16
+  libc.src.math.fromfpxbf16
+  libc.src.math.getpayloadbf16
+  libc.src.math.ilogbbf16
+  libc.src.math.iscanonicalbf16
+  libc.src.math.issignalingbf16
+  libc.src.math.ldexpbf16
+  libc.src.math.llogbbf16
+  libc.src.math.llrintbf16
+  libc.src.math.llroundbf16
+  libc.src.math.log_bf16
+  libc.src.math.logbbf16
+  libc.src.math.lrintbf16
+  libc.src.math.lroundbf16
+  libc.src.math.modfbf16
+  libc.src.math.nanbf16
+  libc.src.math.nearbyintbf16
+  libc.src.math.nextafterbf16
+  libc.src.math.nextdownbf16
+  libc.src.math.nexttowardbf16
+  libc.src.math.nextupbf16
+  libc.src.math.remainderbf16
+  libc.src.math.remquobf16
+  libc.src.math.rintbf16
+  libc.src.math.roundbf16
+  libc.src.math.roundevenbf16
+  libc.src.math.scalblnbf16
+  libc.src.math.scalbnbf16
+  libc.src.math.setpayloadbf16
+  libc.src.math.setpayloadsigbf16
+  libc.src.math.sqrtbf16
+  libc.src.math.truncbf16
+  libc.src.math.totalorderbf16
+  libc.src.math.totalordermagbf16
+  libc.src.math.ufromfpbf16
+  libc.src.math.ufromfpxbf16
+)
+
+if(LIBC_TYPES_HAS_FLOAT128)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # math.h C++23 mixed bfloat16 and _Float128 entrypoints
+    libc.src.math.bf16addf128
+    libc.src.math.bf16mulf128
+    libc.src.math.bf16subf128
+  )
+endif()
+
+if(LIBC_COMPILER_HAS_FIXED_POINT)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # stdfix.h _Fract and _Accum entrypoints
+    libc.src.stdfix.abshk
+    libc.src.stdfix.abshr
+    libc.src.stdfix.absk
+    libc.src.stdfix.abslk
+    libc.src.stdfix.abslr
+    libc.src.stdfix.absr
+    libc.src.stdfix.exphk
+    libc.src.stdfix.expk
+    libc.src.stdfix.roundhk
+    libc.src.stdfix.roundhr
+    libc.src.stdfix.roundk
+    libc.src.stdfix.roundlk
+    libc.src.stdfix.roundlr
+    libc.src.stdfix.roundr
+    libc.src.stdfix.rounduhk
+    libc.src.stdfix.rounduhr
+    libc.src.stdfix.rounduk
+    libc.src.stdfix.roundulk
+    libc.src.stdfix.roundulr
+    libc.src.stdfix.roundur
+    libc.src.stdfix.sqrtuhk
+    libc.src.stdfix.sqrtuhr
+    libc.src.stdfix.sqrtuk
+    libc.src.stdfix.sqrtur
+    # libc.src.stdfix.sqrtulk
+    libc.src.stdfix.sqrtulr
+    libc.src.stdfix.uhksqrtus
+    libc.src.stdfix.uksqrtui
+    libc.src.stdfix.hrbits
+    libc.src.stdfix.uhrbits
+    libc.src.stdfix.rbits
+    libc.src.stdfix.urbits
+    libc.src.stdfix.lrbits
+    libc.src.stdfix.ulrbits
+    libc.src.stdfix.hkbits
+    libc.src.stdfix.uhkbits
+    libc.src.stdfix.kbits
+    libc.src.stdfix.ukbits
+    libc.src.stdfix.lkbits
+    libc.src.stdfix.ulkbits
+    libc.src.stdfix.bitshr
+    libc.src.stdfix.bitsr
+    libc.src.stdfix.bitslr
+    libc.src.stdfix.bitshk
+    libc.src.stdfix.bitsk
+    libc.src.stdfix.bitslk
+    libc.src.stdfix.bitsuhr
+    libc.src.stdfix.bitsur
+    libc.src.stdfix.bitsulr
+    libc.src.stdfix.bitsuhk
+    libc.src.stdfix.bitsuk
+    libc.src.stdfix.bitsulk
+    libc.src.stdfix.countlshr
+    libc.src.stdfix.countlsr
+    libc.src.stdfix.countlslr
+    libc.src.stdfix.countlshk
+    libc.src.stdfix.countlsk
+    libc.src.stdfix.countlslk
+    libc.src.stdfix.countlsuhr
+    libc.src.stdfix.countlsur
+    libc.src.stdfix.countlsulr
+    libc.src.stdfix.countlsuhk
+    libc.src.stdfix.countlsuk
+    libc.src.stdfix.countlsulk
+  )
+endif()
+
+set(TARGET_LLVMLIBC_ENTRYPOINTS
+  ${TARGET_LIBC_ENTRYPOINTS}
+  ${TARGET_LIBM_ENTRYPOINTS}
+)
diff --git a/libc/config/darwin/x86_64/entrypoints.txt b/libc/config/darwin/x86_64/entrypoints.txt
index e899bf97ea3f6..d27510602df62 100644
--- a/libc/config/darwin/x86_64/entrypoints.txt
+++ b/libc/config/darwin/x86_64/entrypoints.txt
@@ -1,310 +1,311 @@
-set(TARGET_LIBC_ENTRYPOINTS
-    # ctype.h entrypoints
-    libc.src.ctype.isalnum
-    libc.src.ctype.isalpha
-    libc.src.ctype.isascii
-    libc.src.ctype.isblank
-    libc.src.ctype.iscntrl
-    libc.src.ctype.isdigit
-    libc.src.ctype.isgraph
-    libc.src.ctype.islower
-    libc.src.ctype.isprint
-    libc.src.ctype.ispunct
-    libc.src.ctype.isspace
-    libc.src.ctype.isupper
-    libc.src.ctype.isxdigit
-    libc.src.ctype.toascii
-    libc.src.ctype.tolower
-    libc.src.ctype.toupper
-
-    # search.h entrypoints
-    libc.src.search.lfind
-
-    # string.h entrypoints
-    libc.src.string.memccpy
-    libc.src.string.memchr
-    libc.src.string.memcmp
-    libc.src.string.memcpy
-    libc.src.string.memmem
-    libc.src.string.memmove
-    libc.src.string.mempcpy
-    libc.src.string.memrchr
-    libc.src.string.memset
-    libc.src.string.stpcpy
-    libc.src.string.stpncpy
-    libc.src.string.strcat
-    libc.src.string.strchr
-    libc.src.string.strchrnul
-    libc.src.string.strcmp
-    libc.src.string.strcpy
-    libc.src.string.strcspn
-    libc.src.string.strlcat
-    libc.src.string.strlcpy
-    libc.src.string.strlen
-    libc.src.string.strncat
-    libc.src.string.strncmp
-    libc.src.string.strncpy
-    libc.src.string.strnlen
-    libc.src.string.strpbrk
-    libc.src.string.strrchr
-    libc.src.string.strspn
-    libc.src.string.strstr
-    libc.src.string.strtok
-    libc.src.string.strtok_r
-
-    # string.h entrypoints that depend on malloc
-    libc.src.string.strdup
-    libc.src.string.strndup
-
-    # strings.h entrypoints
-    libc.src.strings.bcmp
-    libc.src.strings.bzero
-
-    # inttypes.h entrypoints
-    libc.src.inttypes.imaxabs
-    libc.src.inttypes.imaxdiv
-    libc.src.inttypes.strtoimax
-    libc.src.inttypes.strtoumax
-
-    # stdlib.h entrypoints
-    libc.src.stdlib.abs
-    libc.src.stdlib.atoi
-    libc.src.stdlib.atof
-    libc.src.stdlib.atol
-    libc.src.stdlib.atoll
-    libc.src.stdlib.bsearch
-    libc.src.stdlib.div
-    libc.src.stdlib.labs
-    libc.src.stdlib.ldiv
-    libc.src.stdlib.llabs
-    libc.src.stdlib.lldiv
-    libc.src.stdlib.memalignment
-    libc.src.stdlib.qsort
-    libc.src.stdlib.strtod
-    libc.src.stdlib.strtof
-    libc.src.stdlib.strtol
-    libc.src.stdlib.strtold
-    libc.src.stdlib.strtoll
-    libc.src.stdlib.strtoul
-    libc.src.stdlib.strtoull
-
-    # stdlib.h external entrypoints
-    libc.src.stdlib.malloc
-    libc.src.stdlib.calloc
-    libc.src.stdlib.realloc
-    libc.src.stdlib.free
-)
-
-set(TARGET_LIBM_ENTRYPOINTS
-    # fenv disabled on x86_64 MacOS for now.
-    # # fenv.h entrypoints
-    # libc.src.fenv.feclearexcept
-    # libc.src.fenv.fedisableexcept
-    # libc.src.fenv.feenableexcept
-    # libc.src.fenv.fegetenv
-    # libc.src.fenv.fegetexcept
-    # libc.src.fenv.fegetexceptflag
-    # libc.src.fenv.fegetround
-    # libc.src.fenv.feholdexcept
-    # libc.src.fenv.fesetenv
-    # libc.src.fenv.fesetexcept
-    # libc.src.fenv.fesetexceptflag
-    # libc.src.fenv.fesetround
-    # libc.src.fenv.feraiseexcept
-    # libc.src.fenv.fetestexcept
-    # libc.src.fenv.fetestexceptflag
-    # libc.src.fenv.feupdateenv
-
-    ## Currently disabled for failing tests.
-    # math.h entrypoints
-    #libc.src.math.copysign
-    #libc.src.math.copysignf
-    #libc.src.math.copysignl
-    #libc.src.math.ceil
-    #libc.src.math.ceilf
-    #libc.src.math.ceill
-    #libc.src.math.coshf
-    #libc.src.math.cosf
-    #libc.src.math.daddl
-    #libc.src.math.ddivl
-    #libc.src.math.dfmal
-    #libc.src.math.dsqrtl
-    #libc.src.math.dsubl
-    #libc.src.math.expf
-    #libc.src.math.exp2f
-    #libc.src.math.expm1f
-    #libc.src.math.fabs
-    #libc.src.math.fabsf
-    #libc.src.math.fabsl
-    #libc.src.math.fdim
-    #libc.src.math.fdimf
-    #libc.src.math.fdiml
-    #libc.src.math.fdiv
-    #libc.src.math.fdivl
-    #libc.src.math.ffma
-    #libc.src.math.ffmal
-    #libc.src.math.floor
-    #libc.src.math.floorf
-    #libc.src.math.floorl
-    #libc.src.math.fma
-    #libc.src.math.fmaf
-    #libc.src.math.fmax
-    #libc.src.math.fmaxf
-    #libc.src.math.fmaxl
-    #libc.src.math.fmin
-    #libc.src.math.fminf
-    #libc.src.math.fminl
-    #libc.src.math.fmod
-    #libc.src.math.fmodf
-    #libc.src.math.frexp
-    #libc.src.math.frexpf
-    #libc.src.math.frexpl
-    #libc.src.math.fsub
-    #libc.src.math.fsubl
-    #libc.src.math.hypot
-    #libc.src.math.hypotf
-    #libc.src.math.ilogb
-    #libc.src.math.ilogbf
-    #libc.src.math.ilogbl
-    #libc.src.math.llrint
-    #libc.src.math.llrintf
-    #libc.src.math.llrintl
-    #libc.src.math.llround
-    #libc.src.math.llroundf
-    #libc.src.math.llroundl
-    #libc.src.math.lrint
-    #libc.src.math.lrintf
-    #libc.src.math.lrintl
-    #libc.src.math.lround
-    #libc.src.math.lroundf
-    #libc.src.math.lroundl
-    #libc.src.math.ldexp
-    #libc.src.math.ldexpf
-    #libc.src.math.ldexpl
-    #libc.src.math.log10f
-    #libc.src.math.log1pf
-    #libc.src.math.log2f
-    #libc.src.math.logf
-    #libc.src.math.logb
-    #libc.src.math.logbf
-    #libc.src.math.logbl
-    #libc.src.math.modf
-    #libc.src.math.modff
-    #libc.src.math.modfl
-    #libc.src.math.nan
-    #libc.src.math.nanf
-    #libc.src.math.nanl
-    #libc.src.math.nearbyint
-    #libc.src.math.nearbyintf
-    #libc.src.math.nearbyintl
-    #libc.src.math.nextafter
-    #libc.src.math.nextafterf
-    #libc.src.math.nextafterl
-    #libc.src.math.nexttoward
-    #libc.src.math.nexttowardf
-    #libc.src.math.nexttowardl
-    #libc.src.math.remainderf
-    #libc.src.math.remainder
-    #libc.src.math.remainderl
-    #libc.src.math.remquof
-    #libc.src.math.remquo
-    #libc.src.math.remquol
-    #libc.src.math.rint
-    #libc.src.math.rintf
-    #libc.src.math.rintl
-    #libc.src.math.round
-    #libc.src.math.roundf
-    #libc.src.math.roundl
-    #libc.src.math.sincosf
-    #libc.src.math.sinhf
-    #libc.src.math.sinf
-    #libc.src.math.sqrt
-    #libc.src.math.sqrtf
-    #libc.src.math.sqrtl
-    #libc.src.math.tanf
-    #libc.src.math.tanhf
-    #libc.src.math.totalordermag
-    #libc.src.math.totalordermagf
-    #libc.src.math.totalordermagl
-    #libc.src.math.trunc
-    #libc.src.math.truncf
-    #libc.src.math.truncl
-)
-
-list(APPEND TARGET_LIBM_ENTRYPOINTS
-  # bfloat16 entrypoints
-  libc.src.math.bf16add
-  libc.src.math.bf16addf
-  libc.src.math.bf16addl
-  libc.src.math.bf16div
-  libc.src.math.bf16divf
-  libc.src.math.bf16divl
-  libc.src.math.bf16fma
-  libc.src.math.bf16fmaf
-  libc.src.math.bf16fmal
-  libc.src.math.bf16mul
-  libc.src.math.bf16mulf
-  libc.src.math.bf16mull
-  libc.src.math.bf16sub
-  libc.src.math.bf16subf
-  libc.src.math.bf16subl
-  libc.src.math.canonicalizebf16
-  libc.src.math.ceilbf16
-  libc.src.math.copysignbf16
-  libc.src.math.fabsbf16
-  libc.src.math.fdimbf16
-  libc.src.math.floorbf16
-  libc.src.math.fmaxbf16
-  libc.src.math.fmaximumbf16
-  libc.src.math.fmaximum_magbf16
-  libc.src.math.fmaximum_mag_numbf16
-  libc.src.math.fmaximum_numbf16
-  libc.src.math.fminbf16
-  libc.src.math.fminimumbf16
-  libc.src.math.fminimum_magbf16
-  libc.src.math.fminimum_mag_numbf16
-  libc.src.math.fminimum_numbf16
-  libc.src.math.fmodbf16
-  libc.src.math.frexpbf16
-  libc.src.math.fromfpbf16
-  libc.src.math.fromfpxbf16
-  libc.src.math.getpayloadbf16
-  libc.src.math.ilogbbf16
-  libc.src.math.iscanonicalbf16
-  libc.src.math.issignalingbf16
-  libc.src.math.ldexpbf16
-  libc.src.math.llogbbf16
-  libc.src.math.llrintbf16
-  libc.src.math.llroundbf16
-  libc.src.math.log_bf16
-  libc.src.math.logbbf16
-  libc.src.math.lrintbf16
-  libc.src.math.lroundbf16
-  libc.src.math.modfbf16
-  libc.src.math.nanbf16
-  libc.src.math.nearbyintbf16
-  libc.src.math.nextafterbf16
-  libc.src.math.nextdownbf16
-  libc.src.math.nexttowardbf16
-  libc.src.math.nextupbf16
-  libc.src.math.remainderbf16
-  libc.src.math.remquobf16
-  libc.src.math.rintbf16
-  libc.src.math.roundbf16
-  libc.src.math.roundevenbf16
-  libc.src.math.scalblnbf16
-  libc.src.math.scalbnbf16
-  libc.src.math.setpayloadbf16
-  libc.src.math.setpayloadsigbf16
-  libc.src.math.sqrtbf16
-  libc.src.math.truncbf16
-  libc.src.math.totalorderbf16
-  libc.src.math.totalordermagbf16
-  libc.src.math.ufromfpbf16
-  libc.src.math.ufromfpxbf16
-)
-
-set(TARGET_LLVMLIBC_ENTRYPOINTS
-  ${TARGET_LIBC_ENTRYPOINTS}
-  ${TARGET_LIBM_ENTRYPOINTS}
-)
+set(TARGET_LIBC_ENTRYPOINTS
+    # ctype.h entrypoints
+    libc.src.ctype.isalnum
+    libc.src.ctype.isalpha
+    libc.src.ctype.isascii
+    libc.src.ctype.isblank
+    libc.src.ctype.iscntrl
+    libc.src.ctype.isdigit
+    libc.src.ctype.isgraph
+    libc.src.ctype.islower
+    libc.src.ctype.isprint
+    libc.src.ctype.ispunct
+    libc.src.ctype.isspace
+    libc.src.ctype.isupper
+    libc.src.ctype.isxdigit
+    libc.src.ctype.toascii
+    libc.src.ctype.tolower
+    libc.src.ctype.toupper
+
+    # search.h entrypoints
+    libc.src.search.lfind
+
+    # string.h entrypoints
+    libc.src.string.memccpy
+    libc.src.string.memchr
+    libc.src.string.memcmp
+    libc.src.string.memcpy
+    libc.src.string.memmem
+    libc.src.string.memmove
+    libc.src.string.mempcpy
+    libc.src.string.memrchr
+    libc.src.string.memset
+    libc.src.string.stpcpy
+    libc.src.string.stpncpy
+    libc.src.string.strcat
+    libc.src.string.strchr
+    libc.src.string.strchrnul
+    libc.src.string.strcmp
+    libc.src.string.strcpy
+    libc.src.string.strcspn
+    libc.src.string.strlcat
+    libc.src.string.strlcpy
+    libc.src.string.strlen
+    libc.src.string.strncat
+    libc.src.string.strncmp
+    libc.src.string.strncpy
+    libc.src.string.strnlen
+    libc.src.string.strpbrk
+    libc.src.string.strrchr
+    libc.src.string.strspn
+    libc.src.string.strstr
+    libc.src.string.strtok
+    libc.src.string.strtok_r
+
+    # string.h entrypoints that depend on malloc
+    libc.src.string.strdup
+    libc.src.string.strndup
+
+    # strings.h entrypoints
+    libc.src.strings.bcmp
+    libc.src.strings.bzero
+
+    # inttypes.h entrypoints
+    libc.src.inttypes.imaxabs
+    libc.src.inttypes.imaxdiv
+    libc.src.inttypes.strtoimax
+    libc.src.inttypes.strtoumax
+
+    # stdlib.h entrypoints
+    libc.src.stdlib.abs
+    libc.src.stdlib.atoi
+    libc.src.stdlib.atof
+    libc.src.stdlib.atol
+    libc.src.stdlib.atoll
+    libc.src.stdlib.bsearch
+    libc.src.stdlib.div
+    libc.src.stdlib.labs
+    libc.src.stdlib.ldiv
+    libc.src.stdlib.llabs
+    libc.src.stdlib.lldiv
+    libc.src.stdlib.memalignment
+    libc.src.stdlib.qsort
+    libc.src.stdlib.strtod
+    libc.src.stdlib.strtof
+    libc.src.stdlib.strtol
+    libc.src.stdlib.strtold
+    libc.src.stdlib.strtoll
+    libc.src.stdlib.strtoul
+    libc.src.stdlib.strtoull
+
+    # stdlib.h external entrypoints
+    libc.src.stdlib.malloc
+    libc.src.stdlib.calloc
+    libc.src.stdlib.realloc
+    libc.src.stdlib.free
+)
+
+set(TARGET_LIBM_ENTRYPOINTS
+    # fenv disabled on x86_64 MacOS for now.
+    # # fenv.h entrypoints
+    # libc.src.fenv.feclearexcept
+    # libc.src.fenv.fedisableexcept
+    # libc.src.fenv.feenableexcept
+    # libc.src.fenv.fegetenv
+    # libc.src.fenv.fegetexcept
+    # libc.src.fenv.fegetexceptflag
+    # libc.src.fenv.fegetround
+    # libc.src.fenv.feholdexcept
+    # libc.src.fenv.fesetenv
+    # libc.src.fenv.fesetexcept
+    # libc.src.fenv.fesetexceptflag
+    # libc.src.fenv.fesetround
+    # libc.src.fenv.feraiseexcept
+    # libc.src.fenv.fetestexcept
+    # libc.src.fenv.fetestexceptflag
+    # libc.src.fenv.feupdateenv
+
+    ## Currently disabled for failing tests.
+    # math.h entrypoints
+    #libc.src.math.copysign
+    #libc.src.math.copysignf
+    #libc.src.math.copysignl
+    #libc.src.math.ceil
+    #libc.src.math.ceilf
+    #libc.src.math.ceill
+    #libc.src.math.coshf
+    #libc.src.math.cosf
+    #libc.src.math.daddl
+    #libc.src.math.ddivl
+    #libc.src.math.dfmal
+    #libc.src.math.dsqrtl
+    #libc.src.math.dsubl
+    #libc.src.math.expf
+    #libc.src.math.exp2f
+    #libc.src.math.expm1f
+    #libc.src.math.fabs
+    #libc.src.math.fabsf
+    #libc.src.math.fabsl
+    #libc.src.math.fdim
+    #libc.src.math.fdimf
+    #libc.src.math.fdiml
+    #libc.src.math.fdiv
+    #libc.src.math.fdivl
+    #libc.src.math.ffma
+    #libc.src.math.ffmal
+    #libc.src.math.floor
+    #libc.src.math.floorf
+    #libc.src.math.floorl
+    #libc.src.math.fma
+    #libc.src.math.fmabf16
+    #libc.src.math.fmaf
+    #libc.src.math.fmax
+    #libc.src.math.fmaxf
+    #libc.src.math.fmaxl
+    #libc.src.math.fmin
+    #libc.src.math.fminf
+    #libc.src.math.fminl
+    #libc.src.math.fmod
+    #libc.src.math.fmodf
+    #libc.src.math.frexp
+    #libc.src.math.frexpf
+    #libc.src.math.frexpl
+    #libc.src.math.fsub
+    #libc.src.math.fsubl
+    #libc.src.math.hypot
+    #libc.src.math.hypotf
+    #libc.src.math.ilogb
+    #libc.src.math.ilogbf
+    #libc.src.math.ilogbl
+    #libc.src.math.llrint
+    #libc.src.math.llrintf
+    #libc.src.math.llrintl
+    #libc.src.math.llround
+    #libc.src.math.llroundf
+    #libc.src.math.llroundl
+    #libc.src.math.lrint
+    #libc.src.math.lrintf
+    #libc.src.math.lrintl
+    #libc.src.math.lround
+    #libc.src.math.lroundf
+    #libc.src.math.lroundl
+    #libc.src.math.ldexp
+    #libc.src.math.ldexpf
+    #libc.src.math.ldexpl
+    #libc.src.math.log10f
+    #libc.src.math.log1pf
+    #libc.src.math.log2f
+    #libc.src.math.logf
+    #libc.src.math.logb
+    #libc.src.math.logbf
+    #libc.src.math.logbl
+    #libc.src.math.modf
+    #libc.src.math.modff
+    #libc.src.math.modfl
+    #libc.src.math.nan
+    #libc.src.math.nanf
+    #libc.src.math.nanl
+    #libc.src.math.nearbyint
+    #libc.src.math.nearbyintf
+    #libc.src.math.nearbyintl
+    #libc.src.math.nextafter
+    #libc.src.math.nextafterf
+    #libc.src.math.nextafterl
+    #libc.src.math.nexttoward
+    #libc.src.math.nexttowardf
+    #libc.src.math.nexttowardl
+    #libc.src.math.remainderf
+    #libc.src.math.remainder
+    #libc.src.math.remainderl
+    #libc.src.math.remquof
+    #libc.src.math.remquo
+    #libc.src.math.remquol
+    #libc.src.math.rint
+    #libc.src.math.rintf
+    #libc.src.math.rintl
+    #libc.src.math.round
+    #libc.src.math.roundf
+    #libc.src.math.roundl
+    #libc.src.math.sincosf
+    #libc.src.math.sinhf
+    #libc.src.math.sinf
+    #libc.src.math.sqrt
+    #libc.src.math.sqrtf
+    #libc.src.math.sqrtl
+    #libc.src.math.tanf
+    #libc.src.math.tanhf
+    #libc.src.math.totalordermag
+    #libc.src.math.totalordermagf
+    #libc.src.math.totalordermagl
+    #libc.src.math.trunc
+    #libc.src.math.truncf
+    #libc.src.math.truncl
+)
+
+list(APPEND TARGET_LIBM_ENTRYPOINTS
+  # bfloat16 entrypoints
+  libc.src.math.bf16add
+  libc.src.math.bf16addf
+  libc.src.math.bf16addl
+  libc.src.math.bf16div
+  libc.src.math.bf16divf
+  libc.src.math.bf16divl
+  libc.src.math.bf16fma
+  libc.src.math.bf16fmaf
+  libc.src.math.bf16fmal
+  libc.src.math.bf16mul
+  libc.src.math.bf16mulf
+  libc.src.math.bf16mull
+  libc.src.math.bf16sub
+  libc.src.math.bf16subf
+  libc.src.math.bf16subl
+  libc.src.math.canonicalizebf16
+  libc.src.math.ceilbf16
+  libc.src.math.copysignbf16
+  libc.src.math.fabsbf16
+  libc.src.math.fdimbf16
+  libc.src.math.floorbf16
+  libc.src.math.fmaxbf16
+  libc.src.math.fmaximumbf16
+  libc.src.math.fmaximum_magbf16
+  libc.src.math.fmaximum_mag_numbf16
+  libc.src.math.fmaximum_numbf16
+  libc.src.math.fminbf16
+  libc.src.math.fminimumbf16
+  libc.src.math.fminimum_magbf16
+  libc.src.math.fminimum_mag_numbf16
+  libc.src.math.fminimum_numbf16
+  libc.src.math.fmodbf16
+  libc.src.math.frexpbf16
+  libc.src.math.fromfpbf16
+  libc.src.math.fromfpxbf16
+  libc.src.math.getpayloadbf16
+  libc.src.math.ilogbbf16
+  libc.src.math.iscanonicalbf16
+  libc.src.math.issignalingbf16
+  libc.src.math.ldexpbf16
+  libc.src.math.llogbbf16
+  libc.src.math.llrintbf16
+  libc.src.math.llroundbf16
+  libc.src.math.log_bf16
+  libc.src.math.logbbf16
+  libc.src.math.lrintbf16
+  libc.src.math.lroundbf16
+  libc.src.math.modfbf16
+  libc.src.math.nanbf16
+  libc.src.math.nearbyintbf16
+  libc.src.math.nextafterbf16
+  libc.src.math.nextdownbf16
+  libc.src.math.nexttowardbf16
+  libc.src.math.nextupbf16
+  libc.src.math.remainderbf16
+  libc.src.math.remquobf16
+  libc.src.math.rintbf16
+  libc.src.math.roundbf16
+  libc.src.math.roundevenbf16
+  libc.src.math.scalblnbf16
+  libc.src.math.scalbnbf16
+  libc.src.math.setpayloadbf16
+  libc.src.math.setpayloadsigbf16
+  libc.src.math.sqrtbf16
+  libc.src.math.truncbf16
+  libc.src.math.totalorderbf16
+  libc.src.math.totalordermagbf16
+  libc.src.math.ufromfpbf16
+  libc.src.math.ufromfpxbf16
+)
+
+set(TARGET_LLVMLIBC_ENTRYPOINTS
+  ${TARGET_LIBC_ENTRYPOINTS}
+  ${TARGET_LIBM_ENTRYPOINTS}
+)
diff --git a/libc/config/gpu/amdgpu/entrypoints.txt b/libc/config/gpu/amdgpu/entrypoints.txt
index 0dda7d5c683ec..9ab7d517cf57c 100644
--- a/libc/config/gpu/amdgpu/entrypoints.txt
+++ b/libc/config/gpu/amdgpu/entrypoints.txt
@@ -1,693 +1,694 @@
-set(TARGET_LIBC_ENTRYPOINTS
-    # assert.h entrypoints
-    libc.src.assert.__assert_fail
-
-    # ctype.h entrypoints
-    libc.src.ctype.isalnum
-    libc.src.ctype.isalnum_l
-    libc.src.ctype.isalpha
-    libc.src.ctype.isalpha_l
-    libc.src.ctype.isascii
-    libc.src.ctype.isblank
-    libc.src.ctype.isblank_l
-    libc.src.ctype.iscntrl
-    libc.src.ctype.iscntrl_l
-    libc.src.ctype.isdigit
-    libc.src.ctype.isdigit_l
-    libc.src.ctype.isgraph
-    libc.src.ctype.isgraph_l
-    libc.src.ctype.islower
-    libc.src.ctype.islower_l
-    libc.src.ctype.isprint
-    libc.src.ctype.isprint_l
-    libc.src.ctype.ispunct
-    libc.src.ctype.ispunct_l
-    libc.src.ctype.isspace
-    libc.src.ctype.isspace_l
-    libc.src.ctype.isupper
-    libc.src.ctype.isupper_l
-    libc.src.ctype.isxdigit
-    libc.src.ctype.isxdigit_l
-    libc.src.ctype.toascii
-    libc.src.ctype.tolower
-    libc.src.ctype.tolower_l
-    libc.src.ctype.toupper
-    libc.src.ctype.toupper_l
-
-    # string.h entrypoints
-    libc.src.string.memccpy
-    libc.src.string.memchr
-    libc.src.string.memcmp
-    libc.src.string.memcpy
-    libc.src.string.memmem
-    libc.src.string.memmove
-    libc.src.string.mempcpy
-    libc.src.string.memrchr
-    libc.src.string.memset
-    libc.src.string.stpcpy
-    libc.src.string.stpncpy
-    libc.src.string.strcasestr
-    libc.src.string.strcat
-    libc.src.string.strchr
-    libc.src.string.strchrnul
-    libc.src.string.strcmp
-    libc.src.string.strcoll
-    libc.src.string.strcoll_l
-    libc.src.string.strcpy
-    libc.src.string.strcspn
-    libc.src.string.strdup
-    libc.src.string.strerror
-    libc.src.string.strlcat
-    libc.src.string.strlcpy
-    libc.src.string.strlen
-    libc.src.string.strncat
-    libc.src.string.strncmp
-    libc.src.string.strncpy
-    libc.src.string.strndup
-    libc.src.string.strnlen
-    libc.src.string.strpbrk
-    libc.src.string.strrchr
-    libc.src.string.strsep
-    libc.src.string.strspn
-    libc.src.string.strstr
-    libc.src.string.strtok
-    libc.src.string.strtok_r
-    libc.src.string.strxfrm
-    libc.src.string.strxfrm_l
-
-    # strings.h entrypoints
-    libc.src.strings.bcmp
-    libc.src.strings.bcopy
-    libc.src.strings.bzero
-    libc.src.strings.index
-    libc.src.strings.rindex
-    libc.src.strings.strcasecmp
-    libc.src.strings.strncasecmp
-
-    # stdbit.h entrypoints
-    libc.src.stdbit.stdc_bit_ceil_uc
-    libc.src.stdbit.stdc_bit_ceil_ui
-    libc.src.stdbit.stdc_bit_ceil_ul
-    libc.src.stdbit.stdc_bit_ceil_ull
-    libc.src.stdbit.stdc_bit_ceil_us
-    libc.src.stdbit.stdc_bit_floor_uc
-    libc.src.stdbit.stdc_bit_floor_ui
-    libc.src.stdbit.stdc_bit_floor_ul
-    libc.src.stdbit.stdc_bit_floor_ull
-    libc.src.stdbit.stdc_bit_floor_us
-    libc.src.stdbit.stdc_bit_width_uc
-    libc.src.stdbit.stdc_bit_width_ui
-    libc.src.stdbit.stdc_bit_width_ul
-    libc.src.stdbit.stdc_bit_width_ull
-    libc.src.stdbit.stdc_bit_width_us
-    libc.src.stdbit.stdc_count_ones_uc
-    libc.src.stdbit.stdc_count_ones_ui
-    libc.src.stdbit.stdc_count_ones_ul
-    libc.src.stdbit.stdc_count_ones_ull
-    libc.src.stdbit.stdc_count_ones_us
-    libc.src.stdbit.stdc_count_zeros_uc
-    libc.src.stdbit.stdc_count_zeros_ui
-    libc.src.stdbit.stdc_count_zeros_ul
-    libc.src.stdbit.stdc_count_zeros_ull
-    libc.src.stdbit.stdc_count_zeros_us
-    libc.src.stdbit.stdc_first_leading_one_uc
-    libc.src.stdbit.stdc_first_leading_one_ui
-    libc.src.stdbit.stdc_first_leading_one_ul
-    libc.src.stdbit.stdc_first_leading_one_ull
-    libc.src.stdbit.stdc_first_leading_one_us
-    libc.src.stdbit.stdc_first_leading_zero_uc
-    libc.src.stdbit.stdc_first_leading_zero_ui
-    libc.src.stdbit.stdc_first_leading_zero_ul
-    libc.src.stdbit.stdc_first_leading_zero_ull
-    libc.src.stdbit.stdc_first_leading_zero_us
-    libc.src.stdbit.stdc_first_trailing_one_uc
-    libc.src.stdbit.stdc_first_trailing_one_ui
-    libc.src.stdbit.stdc_first_trailing_one_ul
-    libc.src.stdbit.stdc_first_trailing_one_ull
-    libc.src.stdbit.stdc_first_trailing_one_us
-    libc.src.stdbit.stdc_first_trailing_zero_uc
-    libc.src.stdbit.stdc_first_trailing_zero_ui
-    libc.src.stdbit.stdc_first_trailing_zero_ul
-    libc.src.stdbit.stdc_first_trailing_zero_ull
-    libc.src.stdbit.stdc_first_trailing_zero_us
-    libc.src.stdbit.stdc_has_single_bit_uc
-    libc.src.stdbit.stdc_has_single_bit_ui
-    libc.src.stdbit.stdc_has_single_bit_ul
-    libc.src.stdbit.stdc_has_single_bit_ull
-    libc.src.stdbit.stdc_has_single_bit_us
-    libc.src.stdbit.stdc_leading_ones_uc
-    libc.src.stdbit.stdc_leading_ones_ui
-    libc.src.stdbit.stdc_leading_ones_ul
-    libc.src.stdbit.stdc_leading_ones_ull
-    libc.src.stdbit.stdc_leading_ones_us
-    libc.src.stdbit.stdc_leading_zeros_uc
-    libc.src.stdbit.stdc_leading_zeros_ui
-    libc.src.stdbit.stdc_leading_zeros_ul
-    libc.src.stdbit.stdc_leading_zeros_ull
-    libc.src.stdbit.stdc_leading_zeros_us
-    libc.src.stdbit.stdc_trailing_ones_uc
-    libc.src.stdbit.stdc_trailing_ones_ui
-    libc.src.stdbit.stdc_trailing_ones_ul
-    libc.src.stdbit.stdc_trailing_ones_ull
-    libc.src.stdbit.stdc_trailing_ones_us
-    libc.src.stdbit.stdc_trailing_zeros_uc
-    libc.src.stdbit.stdc_trailing_zeros_ui
-    libc.src.stdbit.stdc_trailing_zeros_ul
-    libc.src.stdbit.stdc_trailing_zeros_ull
-    libc.src.stdbit.stdc_trailing_zeros_us
-
-    # stdlib.h entrypoints
-    libc.src.stdlib._Exit
-    libc.src.stdlib.abort
-    libc.src.stdlib.abs
-    libc.src.stdlib.atexit
-    libc.src.stdlib.atof
-    libc.src.stdlib.atoi
-    libc.src.stdlib.atol
-    libc.src.stdlib.atoll
-    libc.src.stdlib.bsearch
-    libc.src.stdlib.div
-    libc.src.stdlib.exit
-    libc.src.stdlib.labs
-    libc.src.stdlib.ldiv
-    libc.src.stdlib.llabs
-    libc.src.stdlib.lldiv
-    libc.src.stdlib.memalignment
-    libc.src.stdlib.qsort
-    libc.src.stdlib.qsort_r
-    libc.src.stdlib.rand
-    libc.src.stdlib.srand
-    libc.src.stdlib.strtod
-    libc.src.stdlib.strtod_l
-    libc.src.stdlib.strtof
-    libc.src.stdlib.strtof_l
-    libc.src.stdlib.strtol
-    libc.src.stdlib.strtol_l
-    libc.src.stdlib.strtold
-    libc.src.stdlib.strtold_l
-    libc.src.stdlib.strtoll
-    libc.src.stdlib.strtoll_l
-    libc.src.stdlib.strtoul
-    libc.src.stdlib.strtoul_l
-    libc.src.stdlib.strtoull
-    libc.src.stdlib.strtoull_l
-    libc.src.stdlib.at_quick_exit
-    libc.src.stdlib.quick_exit
-    libc.src.stdlib.getenv
-    libc.src.stdlib.system
-
-    # TODO: Implement these correctly
-    libc.src.stdlib.aligned_alloc
-    libc.src.stdlib.calloc
-    libc.src.stdlib.free
-    libc.src.stdlib.malloc
-    libc.src.stdlib.realloc
-
-    # errno.h entrypoints
-    libc.src.errno.errno
-
-    # stdio.h entrypoints
-    libc.src.stdio.clearerr
-    libc.src.stdio.fclose
-    libc.src.stdio.printf
-    libc.src.stdio.vprintf
-    libc.src.stdio.fprintf
-    libc.src.stdio.vfprintf
-    libc.src.stdio.snprintf
-    libc.src.stdio.sprintf
-    libc.src.stdio.vsnprintf
-    libc.src.stdio.vsprintf
-    libc.src.stdio.asprintf
-    libc.src.stdio.vasprintf
-    libc.src.stdio.scanf
-    libc.src.stdio.vscanf
-    libc.src.stdio.fscanf
-    libc.src.stdio.vfscanf
-    libc.src.stdio.sscanf
-    libc.src.stdio.vsscanf
-    libc.src.stdio.feof
-    libc.src.stdio.ferror
-    libc.src.stdio.fflush
-    libc.src.stdio.fgetc
-    libc.src.stdio.fgets
-    libc.src.stdio.fopen
-    libc.src.stdio.fputc
-    libc.src.stdio.fputs
-    libc.src.stdio.fread
-    libc.src.stdio.fseek
-    libc.src.stdio.ftell
-    libc.src.stdio.fwrite
-    libc.src.stdio.getc
-    libc.src.stdio.getchar
-    libc.src.stdio.putc
-    libc.src.stdio.putchar
-    libc.src.stdio.puts
-    libc.src.stdio.remove
-    libc.src.stdio.rename
-    libc.src.stdio.stderr
-    libc.src.stdio.stdin
-    libc.src.stdio.stdout
-    libc.src.stdio.ungetc
-
-    # inttypes.h entrypoints
-    libc.src.inttypes.imaxabs
-    libc.src.inttypes.imaxdiv
-    libc.src.inttypes.strtoimax
-    libc.src.inttypes.strtoumax
-
-    # time.h entrypoints
-    libc.src.time.clock
-    libc.src.time.clock_gettime
-    libc.src.time.timespec_get
-    libc.src.time.nanosleep
-    libc.src.time.strftime
-    libc.src.time.strftime_l
-    libc.src.time.mktime
-
-    # wchar.h entrypoints
-    libc.src.wchar.wcslen
-    libc.src.wchar.wctob
-
-    # locale.h entrypoints
-    libc.src.locale.localeconv
-    libc.src.locale.duplocale
-    libc.src.locale.freelocale
-    libc.src.locale.localeconv
-    libc.src.locale.newlocale
-    libc.src.locale.setlocale
-    libc.src.locale.uselocale
-)
-
-set(TARGET_LIBM_ENTRYPOINTS
-    # math.h entrypoints
-    libc.src.math.acos
-    libc.src.math.acosf
-    libc.src.math.acoshf
-    libc.src.math.asin
-    libc.src.math.asinf
-    libc.src.math.asinhf
-    libc.src.math.atan
-    libc.src.math.atan2
-    libc.src.math.atan2f
-    libc.src.math.atan2l
-    libc.src.math.atanf
-    libc.src.math.atanhf
-    libc.src.math.canonicalize
-    libc.src.math.canonicalizef
-    libc.src.math.canonicalizel
-    libc.src.math.cbrt
-    libc.src.math.cbrtf
-    libc.src.math.ceil
-    libc.src.math.ceilf
-    libc.src.math.ceill
-    libc.src.math.copysign
-    libc.src.math.copysignf
-    libc.src.math.copysignl
-    libc.src.math.cos
-    libc.src.math.cosf
-    libc.src.math.coshf
-    libc.src.math.cospif
-    libc.src.math.ddivl
-    libc.src.math.dfmal
-    libc.src.math.dmull
-    libc.src.math.dsqrtl
-    libc.src.math.erff
-    libc.src.math.exp
-    libc.src.math.exp10
-    libc.src.math.exp10f
-    libc.src.math.exp2
-    libc.src.math.exp2f
-    libc.src.math.exp2m1f
-    libc.src.math.expf
-    libc.src.math.expm1
-    libc.src.math.expm1f
-    libc.src.math.fabs
-    libc.src.math.fabsf
-    libc.src.math.fabsl
-    libc.src.math.fadd
-    libc.src.math.faddl
-    libc.src.math.fdim
-    libc.src.math.fdimf
-    libc.src.math.fdiml
-    libc.src.math.fdiv
-    libc.src.math.fdivl
-    libc.src.math.ffma
-    libc.src.math.ffmal
-    libc.src.math.floor
-    libc.src.math.floorf
-    libc.src.math.floorl
-    libc.src.math.fma
-    libc.src.math.fmaf
-    libc.src.math.fmax
-    libc.src.math.fmaxf
-    libc.src.math.fmaximum
-    libc.src.math.fmaximumf
-    libc.src.math.fmaximuml
-    libc.src.math.fmaximum_mag
-    libc.src.math.fmaximum_magf
-    libc.src.math.fmaximum_magl
-    libc.src.math.fmaximum_mag_num
-    libc.src.math.fmaximum_mag_numf
-    libc.src.math.fmaximum_mag_numl
-    libc.src.math.fmaximum_num
-    libc.src.math.fmaximum_numf
-    libc.src.math.fmaximum_numl
-    libc.src.math.fmaxl
-    libc.src.math.fmin
-    libc.src.math.fminf
-    libc.src.math.fminimum
-    libc.src.math.fminimumf
-    libc.src.math.fminimuml
-    libc.src.math.fminimum_mag
-    libc.src.math.fminimum_magf
-    libc.src.math.fminimum_magl
-    libc.src.math.fminimum_mag_num
-    libc.src.math.fminimum_mag_numf
-    libc.src.math.fminimum_mag_numl
-    libc.src.math.fminimum_num
-    libc.src.math.fminimum_numf
-    libc.src.math.fminimum_numl
-    libc.src.math.fminl
-    libc.src.math.fmod
-    libc.src.math.fmodf
-    libc.src.math.fmodl
-    libc.src.math.fmul
-    libc.src.math.fmull
-    libc.src.math.frexp
-    libc.src.math.frexpf
-    libc.src.math.frexpl
-    libc.src.math.fromfp
-    libc.src.math.fromfpf
-    libc.src.math.fromfpl
-    libc.src.math.fromfpx
-    libc.src.math.fromfpxf
-    libc.src.math.fromfpxl
-    libc.src.math.fsqrt
-    libc.src.math.fsqrtl
-    libc.src.math.fsub
-    libc.src.math.fsubl
-    libc.src.math.getpayload
-    libc.src.math.getpayloadf
-    libc.src.math.getpayloadl
-    libc.src.math.hypot
-    libc.src.math.hypotf
-    libc.src.math.ilogb
-    libc.src.math.ilogbf
-    libc.src.math.ilogbl
-    libc.src.math.isnan
-    libc.src.math.isnanf
-    libc.src.math.isnanl
-    libc.src.math.ldexp
-    libc.src.math.ldexpf
-    libc.src.math.ldexpl
-    libc.src.math.lgamma
-    libc.src.math.lgamma_r
-    libc.src.math.llogb
-    libc.src.math.llogbf
-    libc.src.math.llogbl
-    libc.src.math.llrint
-    libc.src.math.llrintf
-    libc.src.math.llrintl
-    libc.src.math.llround
-    libc.src.math.llroundf
-    libc.src.math.llroundl
-    libc.src.math.log
-    libc.src.math.log10
-    libc.src.math.log10f
-    libc.src.math.log1p
-    libc.src.math.log1pf
-    libc.src.math.log2
-    libc.src.math.log2f
-    libc.src.math.logb
-    libc.src.math.logbf
-    libc.src.math.logbl
-    libc.src.math.logf
-    libc.src.math.lrint
-    libc.src.math.lrintf
-    libc.src.math.lrintl
-    libc.src.math.lround
-    libc.src.math.lroundf
-    libc.src.math.lroundl
-    libc.src.math.modf
-    libc.src.math.modff
-    libc.src.math.modfl
-    libc.src.math.nan
-    libc.src.math.nanf
-    libc.src.math.nanl
-    libc.src.math.nearbyint
-    libc.src.math.nearbyintf
-    libc.src.math.nearbyintl
-    libc.src.math.nextafter
-    libc.src.math.nextafterf
-    libc.src.math.nextafterl
-    libc.src.math.nextdown
-    libc.src.math.nextdownf
-    libc.src.math.nextdownl
-    libc.src.math.nexttoward
-    libc.src.math.nexttowardf
-    libc.src.math.nexttowardl
-    libc.src.math.nextup
-    libc.src.math.nextupf
-    libc.src.math.nextupl
-    libc.src.math.pow
-    libc.src.math.powf
-    libc.src.math.remainder
-    libc.src.math.remainderf
-    libc.src.math.remainderl
-    libc.src.math.remquo
-    libc.src.math.remquof
-    libc.src.math.remquol
-    libc.src.math.rint
-    libc.src.math.rintf
-    libc.src.math.rintl
-    libc.src.math.roundeven
-    libc.src.math.roundevenf
-    libc.src.math.roundevenl
-    libc.src.math.round
-    libc.src.math.roundf
-    libc.src.math.roundl
-    libc.src.math.scalbln
-    libc.src.math.scalblnf
-    libc.src.math.scalblnl
-    libc.src.math.scalbn
-    libc.src.math.scalbnf
-    libc.src.math.scalbnl
-    libc.src.math.setpayload
-    libc.src.math.setpayloadf
-    libc.src.math.setpayloadl
-    libc.src.math.setpayloadsig
-    libc.src.math.setpayloadsigf
-    libc.src.math.setpayloadsigl
-    libc.src.math.sin
-    libc.src.math.sincos
-    libc.src.math.sincosf
-    libc.src.math.sinf
-    libc.src.math.sinhf
-    libc.src.math.sinpif
-    libc.src.math.sqrt
-    libc.src.math.sqrtf
-    libc.src.math.sqrtl
-    libc.src.math.tan
-    libc.src.math.tanf
-    libc.src.math.tanhf
-    libc.src.math.tanpif
-    libc.src.math.tgamma
-    libc.src.math.tgammaf
-    libc.src.math.totalorder
-    libc.src.math.totalorderf
-    libc.src.math.totalorderl
-    libc.src.math.totalordermag
-    libc.src.math.totalordermagf
-    libc.src.math.totalordermagl
-    libc.src.math.trunc
-    libc.src.math.truncf
-    libc.src.math.truncl
-    libc.src.math.ufromfp
-    libc.src.math.ufromfpf
-    libc.src.math.ufromfpl
-    libc.src.math.ufromfpx
-    libc.src.math.ufromfpxf
-    libc.src.math.ufromfpxl
-)
-
-if(LIBC_TYPES_HAS_FLOAT16)
-  list(APPEND TARGET_LIBM_ENTRYPOINTS
-    # math.h C23 _Float16 entrypoints
-    libc.src.math.acosf16
-    libc.src.math.acoshf16
-    libc.src.math.acospif16
-    libc.src.math.asinf16
-    libc.src.math.asinhf16
-    libc.src.math.atanf16
-    libc.src.math.atanhf16
-    libc.src.math.canonicalizef16
-    libc.src.math.ceilf16
-    libc.src.math.copysignf16
-    libc.src.math.cosf16
-    libc.src.math.coshf16
-    libc.src.math.cospif16
-    libc.src.math.exp10f16
-    libc.src.math.exp10m1f16
-    libc.src.math.exp2f16
-    # libc.src.math.exp2m1f16
-    libc.src.math.expf16
-    libc.src.math.expm1f16
-    libc.src.math.f16add
-    libc.src.math.f16addf
-    libc.src.math.f16addl
-    libc.src.math.f16div
-    libc.src.math.f16divf
-    libc.src.math.f16divl
-    libc.src.math.f16fma
-    libc.src.math.f16fmaf
-    libc.src.math.f16fmal
-    libc.src.math.f16mul
-    libc.src.math.f16mulf
-    libc.src.math.f16mull
-    libc.src.math.f16sqrt
-    libc.src.math.f16sqrtf
-    libc.src.math.f16sqrtl
-    libc.src.math.f16sub
-    libc.src.math.f16subf
-    libc.src.math.f16subl
-    libc.src.math.fabsf16
-    libc.src.math.fdimf16
-    libc.src.math.floorf16
-    libc.src.math.fmaf16
-    libc.src.math.fmaxf16
-    libc.src.math.fmaximum_mag_numf16
-    libc.src.math.fmaximum_magf16
-    libc.src.math.fmaximum_numf16
-    libc.src.math.fmaximumf16
-    libc.src.math.fminf16
-    libc.src.math.fminimum_mag_numf16
-    libc.src.math.fminimum_magf16
-    libc.src.math.fminimum_numf16
-    libc.src.math.fminimumf16
-    libc.src.math.fmodf16
-    libc.src.math.frexpf16
-    libc.src.math.fromfpf16
-    libc.src.math.fromfpxf16
-    libc.src.math.getpayloadf16
-    libc.src.math.hypotf16
-    libc.src.math.ilogbf16
-    libc.src.math.iscanonicalf16
-    libc.src.math.issignalingf16
-    libc.src.math.ldexpf16
-    libc.src.math.llogbf16
-    libc.src.math.llrintf16
-    libc.src.math.llroundf16
-    libc.src.math.log10f16
-    libc.src.math.log2f16
-    libc.src.math.logbf16
-    libc.src.math.logf16
-    libc.src.math.lrintf16
-    libc.src.math.lroundf16
-    libc.src.math.modff16
-    libc.src.math.nanf16
-    libc.src.math.nearbyintf16
-    libc.src.math.nextafterf16
-    libc.src.math.nextdownf16
-    libc.src.math.nexttowardf16
-    libc.src.math.nextupf16
-    libc.src.math.remainderf16
-    libc.src.math.remquof16
-    libc.src.math.rintf16
-    libc.src.math.roundevenf16
-    libc.src.math.roundf16
-    libc.src.math.scalblnf16
-    libc.src.math.scalbnf16
-    libc.src.math.setpayloadf16
-    libc.src.math.setpayloadsigf16
-    libc.src.math.sinf16
-    libc.src.math.sinhf16
-    libc.src.math.sinpif16
-    libc.src.math.sqrtf16
-    libc.src.math.tanf16
-    libc.src.math.tanhf16
-    libc.src.math.tanpif16
-    libc.src.math.totalorderf16
-    libc.src.math.totalordermagf16
-    libc.src.math.truncf16
-    libc.src.math.ufromfpf16
-    libc.src.math.ufromfpxf16
-  )
-endif()
-
-list(APPEND TARGET_LIBM_ENTRYPOINTS
-  # bfloat16 entrypoints
-  libc.src.math.bf16add
-  libc.src.math.bf16addf
-  libc.src.math.bf16addl
-  libc.src.math.bf16div
-  libc.src.math.bf16divf
-  libc.src.math.bf16divl
-  libc.src.math.bf16fma
-  libc.src.math.bf16fmaf
-  libc.src.math.bf16fmal
-  libc.src.math.bf16mul
-  libc.src.math.bf16mulf
-  libc.src.math.bf16mull
-  libc.src.math.bf16sub
-  libc.src.math.bf16subf
-  libc.src.math.bf16subl
-  libc.src.math.canonicalizebf16
-  libc.src.math.ceilbf16
-  libc.src.math.copysignbf16
-  libc.src.math.fabsbf16
-  libc.src.math.fdimbf16
-  libc.src.math.floorbf16
-  libc.src.math.fmaxbf16
-  libc.src.math.fmaximumbf16
-  libc.src.math.fmaximum_magbf16
-  libc.src.math.fmaximum_mag_numbf16
-  libc.src.math.fmaximum_numbf16
-  libc.src.math.fminbf16
-  libc.src.math.fminimumbf16
-  libc.src.math.fminimum_magbf16
-  libc.src.math.fminimum_mag_numbf16
-  libc.src.math.fminimum_numbf16
-  libc.src.math.fmodbf16
-  libc.src.math.frexpbf16
-  libc.src.math.fromfpbf16
-  libc.src.math.fromfpxbf16
-  libc.src.math.getpayloadbf16
-  libc.src.math.ilogbbf16
-  libc.src.math.iscanonicalbf16
-  libc.src.math.issignalingbf16
-  libc.src.math.ldexpbf16
-  libc.src.math.llogbbf16
-  libc.src.math.llrintbf16
-  libc.src.math.llroundbf16
-  libc.src.math.log_bf16
-  libc.src.math.logbbf16
-  libc.src.math.lrintbf16
-  libc.src.math.lroundbf16
-  libc.src.math.modfbf16
-  libc.src.math.nanbf16
-  libc.src.math.nearbyintbf16
-  libc.src.math.nextafterbf16
-  libc.src.math.nextdownbf16
-  libc.src.math.nexttowardbf16
-  libc.src.math.nextupbf16
-  libc.src.math.remainderbf16
-  libc.src.math.remquobf16
-  libc.src.math.rintbf16
-  libc.src.math.roundbf16
-  libc.src.math.roundevenbf16
-  libc.src.math.scalblnbf16
-  libc.src.math.scalbnbf16
-  libc.src.math.setpayloadbf16
-  libc.src.math.setpayloadsigbf16
-  libc.src.math.sqrtbf16
-  libc.src.math.truncbf16
-  libc.src.math.totalorderbf16
-  libc.src.math.totalordermagbf16
-  libc.src.math.ufromfpbf16
-  libc.src.math.ufromfpxbf16
-)
-
-set(TARGET_LLVMLIBC_ENTRYPOINTS
-  ${TARGET_LIBC_ENTRYPOINTS}
-  ${TARGET_LIBM_ENTRYPOINTS}
-)
+set(TARGET_LIBC_ENTRYPOINTS
+    # assert.h entrypoints
+    libc.src.assert.__assert_fail
+
+    # ctype.h entrypoints
+    libc.src.ctype.isalnum
+    libc.src.ctype.isalnum_l
+    libc.src.ctype.isalpha
+    libc.src.ctype.isalpha_l
+    libc.src.ctype.isascii
+    libc.src.ctype.isblank
+    libc.src.ctype.isblank_l
+    libc.src.ctype.iscntrl
+    libc.src.ctype.iscntrl_l
+    libc.src.ctype.isdigit
+    libc.src.ctype.isdigit_l
+    libc.src.ctype.isgraph
+    libc.src.ctype.isgraph_l
+    libc.src.ctype.islower
+    libc.src.ctype.islower_l
+    libc.src.ctype.isprint
+    libc.src.ctype.isprint_l
+    libc.src.ctype.ispunct
+    libc.src.ctype.ispunct_l
+    libc.src.ctype.isspace
+    libc.src.ctype.isspace_l
+    libc.src.ctype.isupper
+    libc.src.ctype.isupper_l
+    libc.src.ctype.isxdigit
+    libc.src.ctype.isxdigit_l
+    libc.src.ctype.toascii
+    libc.src.ctype.tolower
+    libc.src.ctype.tolower_l
+    libc.src.ctype.toupper
+    libc.src.ctype.toupper_l
+
+    # string.h entrypoints
+    libc.src.string.memccpy
+    libc.src.string.memchr
+    libc.src.string.memcmp
+    libc.src.string.memcpy
+    libc.src.string.memmem
+    libc.src.string.memmove
+    libc.src.string.mempcpy
+    libc.src.string.memrchr
+    libc.src.string.memset
+    libc.src.string.stpcpy
+    libc.src.string.stpncpy
+    libc.src.string.strcasestr
+    libc.src.string.strcat
+    libc.src.string.strchr
+    libc.src.string.strchrnul
+    libc.src.string.strcmp
+    libc.src.string.strcoll
+    libc.src.string.strcoll_l
+    libc.src.string.strcpy
+    libc.src.string.strcspn
+    libc.src.string.strdup
+    libc.src.string.strerror
+    libc.src.string.strlcat
+    libc.src.string.strlcpy
+    libc.src.string.strlen
+    libc.src.string.strncat
+    libc.src.string.strncmp
+    libc.src.string.strncpy
+    libc.src.string.strndup
+    libc.src.string.strnlen
+    libc.src.string.strpbrk
+    libc.src.string.strrchr
+    libc.src.string.strsep
+    libc.src.string.strspn
+    libc.src.string.strstr
+    libc.src.string.strtok
+    libc.src.string.strtok_r
+    libc.src.string.strxfrm
+    libc.src.string.strxfrm_l
+
+    # strings.h entrypoints
+    libc.src.strings.bcmp
+    libc.src.strings.bcopy
+    libc.src.strings.bzero
+    libc.src.strings.index
+    libc.src.strings.rindex
+    libc.src.strings.strcasecmp
+    libc.src.strings.strncasecmp
+
+    # stdbit.h entrypoints
+    libc.src.stdbit.stdc_bit_ceil_uc
+    libc.src.stdbit.stdc_bit_ceil_ui
+    libc.src.stdbit.stdc_bit_ceil_ul
+    libc.src.stdbit.stdc_bit_ceil_ull
+    libc.src.stdbit.stdc_bit_ceil_us
+    libc.src.stdbit.stdc_bit_floor_uc
+    libc.src.stdbit.stdc_bit_floor_ui
+    libc.src.stdbit.stdc_bit_floor_ul
+    libc.src.stdbit.stdc_bit_floor_ull
+    libc.src.stdbit.stdc_bit_floor_us
+    libc.src.stdbit.stdc_bit_width_uc
+    libc.src.stdbit.stdc_bit_width_ui
+    libc.src.stdbit.stdc_bit_width_ul
+    libc.src.stdbit.stdc_bit_width_ull
+    libc.src.stdbit.stdc_bit_width_us
+    libc.src.stdbit.stdc_count_ones_uc
+    libc.src.stdbit.stdc_count_ones_ui
+    libc.src.stdbit.stdc_count_ones_ul
+    libc.src.stdbit.stdc_count_ones_ull
+    libc.src.stdbit.stdc_count_ones_us
+    libc.src.stdbit.stdc_count_zeros_uc
+    libc.src.stdbit.stdc_count_zeros_ui
+    libc.src.stdbit.stdc_count_zeros_ul
+    libc.src.stdbit.stdc_count_zeros_ull
+    libc.src.stdbit.stdc_count_zeros_us
+    libc.src.stdbit.stdc_first_leading_one_uc
+    libc.src.stdbit.stdc_first_leading_one_ui
+    libc.src.stdbit.stdc_first_leading_one_ul
+    libc.src.stdbit.stdc_first_leading_one_ull
+    libc.src.stdbit.stdc_first_leading_one_us
+    libc.src.stdbit.stdc_first_leading_zero_uc
+    libc.src.stdbit.stdc_first_leading_zero_ui
+    libc.src.stdbit.stdc_first_leading_zero_ul
+    libc.src.stdbit.stdc_first_leading_zero_ull
+    libc.src.stdbit.stdc_first_leading_zero_us
+    libc.src.stdbit.stdc_first_trailing_one_uc
+    libc.src.stdbit.stdc_first_trailing_one_ui
+    libc.src.stdbit.stdc_first_trailing_one_ul
+    libc.src.stdbit.stdc_first_trailing_one_ull
+    libc.src.stdbit.stdc_first_trailing_one_us
+    libc.src.stdbit.stdc_first_trailing_zero_uc
+    libc.src.stdbit.stdc_first_trailing_zero_ui
+    libc.src.stdbit.stdc_first_trailing_zero_ul
+    libc.src.stdbit.stdc_first_trailing_zero_ull
+    libc.src.stdbit.stdc_first_trailing_zero_us
+    libc.src.stdbit.stdc_has_single_bit_uc
+    libc.src.stdbit.stdc_has_single_bit_ui
+    libc.src.stdbit.stdc_has_single_bit_ul
+    libc.src.stdbit.stdc_has_single_bit_ull
+    libc.src.stdbit.stdc_has_single_bit_us
+    libc.src.stdbit.stdc_leading_ones_uc
+    libc.src.stdbit.stdc_leading_ones_ui
+    libc.src.stdbit.stdc_leading_ones_ul
+    libc.src.stdbit.stdc_leading_ones_ull
+    libc.src.stdbit.stdc_leading_ones_us
+    libc.src.stdbit.stdc_leading_zeros_uc
+    libc.src.stdbit.stdc_leading_zeros_ui
+    libc.src.stdbit.stdc_leading_zeros_ul
+    libc.src.stdbit.stdc_leading_zeros_ull
+    libc.src.stdbit.stdc_leading_zeros_us
+    libc.src.stdbit.stdc_trailing_ones_uc
+    libc.src.stdbit.stdc_trailing_ones_ui
+    libc.src.stdbit.stdc_trailing_ones_ul
+    libc.src.stdbit.stdc_trailing_ones_ull
+    libc.src.stdbit.stdc_trailing_ones_us
+    libc.src.stdbit.stdc_trailing_zeros_uc
+    libc.src.stdbit.stdc_trailing_zeros_ui
+    libc.src.stdbit.stdc_trailing_zeros_ul
+    libc.src.stdbit.stdc_trailing_zeros_ull
+    libc.src.stdbit.stdc_trailing_zeros_us
+
+    # stdlib.h entrypoints
+    libc.src.stdlib._Exit
+    libc.src.stdlib.abort
+    libc.src.stdlib.abs
+    libc.src.stdlib.atexit
+    libc.src.stdlib.atof
+    libc.src.stdlib.atoi
+    libc.src.stdlib.atol
+    libc.src.stdlib.atoll
+    libc.src.stdlib.bsearch
+    libc.src.stdlib.div
+    libc.src.stdlib.exit
+    libc.src.stdlib.labs
+    libc.src.stdlib.ldiv
+    libc.src.stdlib.llabs
+    libc.src.stdlib.lldiv
+    libc.src.stdlib.memalignment
+    libc.src.stdlib.qsort
+    libc.src.stdlib.qsort_r
+    libc.src.stdlib.rand
+    libc.src.stdlib.srand
+    libc.src.stdlib.strtod
+    libc.src.stdlib.strtod_l
+    libc.src.stdlib.strtof
+    libc.src.stdlib.strtof_l
+    libc.src.stdlib.strtol
+    libc.src.stdlib.strtol_l
+    libc.src.stdlib.strtold
+    libc.src.stdlib.strtold_l
+    libc.src.stdlib.strtoll
+    libc.src.stdlib.strtoll_l
+    libc.src.stdlib.strtoul
+    libc.src.stdlib.strtoul_l
+    libc.src.stdlib.strtoull
+    libc.src.stdlib.strtoull_l
+    libc.src.stdlib.at_quick_exit
+    libc.src.stdlib.quick_exit
+    libc.src.stdlib.getenv
+    libc.src.stdlib.system
+
+    # TODO: Implement these correctly
+    libc.src.stdlib.aligned_alloc
+    libc.src.stdlib.calloc
+    libc.src.stdlib.free
+    libc.src.stdlib.malloc
+    libc.src.stdlib.realloc
+
+    # errno.h entrypoints
+    libc.src.errno.errno
+
+    # stdio.h entrypoints
+    libc.src.stdio.clearerr
+    libc.src.stdio.fclose
+    libc.src.stdio.printf
+    libc.src.stdio.vprintf
+    libc.src.stdio.fprintf
+    libc.src.stdio.vfprintf
+    libc.src.stdio.snprintf
+    libc.src.stdio.sprintf
+    libc.src.stdio.vsnprintf
+    libc.src.stdio.vsprintf
+    libc.src.stdio.asprintf
+    libc.src.stdio.vasprintf
+    libc.src.stdio.scanf
+    libc.src.stdio.vscanf
+    libc.src.stdio.fscanf
+    libc.src.stdio.vfscanf
+    libc.src.stdio.sscanf
+    libc.src.stdio.vsscanf
+    libc.src.stdio.feof
+    libc.src.stdio.ferror
+    libc.src.stdio.fflush
+    libc.src.stdio.fgetc
+    libc.src.stdio.fgets
+    libc.src.stdio.fopen
+    libc.src.stdio.fputc
+    libc.src.stdio.fputs
+    libc.src.stdio.fread
+    libc.src.stdio.fseek
+    libc.src.stdio.ftell
+    libc.src.stdio.fwrite
+    libc.src.stdio.getc
+    libc.src.stdio.getchar
+    libc.src.stdio.putc
+    libc.src.stdio.putchar
+    libc.src.stdio.puts
+    libc.src.stdio.remove
+    libc.src.stdio.rename
+    libc.src.stdio.stderr
+    libc.src.stdio.stdin
+    libc.src.stdio.stdout
+    libc.src.stdio.ungetc
+
+    # inttypes.h entrypoints
+    libc.src.inttypes.imaxabs
+    libc.src.inttypes.imaxdiv
+    libc.src.inttypes.strtoimax
+    libc.src.inttypes.strtoumax
+
+    # time.h entrypoints
+    libc.src.time.clock
+    libc.src.time.clock_gettime
+    libc.src.time.timespec_get
+    libc.src.time.nanosleep
+    libc.src.time.strftime
+    libc.src.time.strftime_l
+    libc.src.time.mktime
+
+    # wchar.h entrypoints
+    libc.src.wchar.wcslen
+    libc.src.wchar.wctob
+
+    # locale.h entrypoints
+    libc.src.locale.localeconv
+    libc.src.locale.duplocale
+    libc.src.locale.freelocale
+    libc.src.locale.localeconv
+    libc.src.locale.newlocale
+    libc.src.locale.setlocale
+    libc.src.locale.uselocale
+)
+
+set(TARGET_LIBM_ENTRYPOINTS
+    # math.h entrypoints
+    libc.src.math.acos
+    libc.src.math.acosf
+    libc.src.math.acoshf
+    libc.src.math.asin
+    libc.src.math.asinf
+    libc.src.math.asinhf
+    libc.src.math.atan
+    libc.src.math.atan2
+    libc.src.math.atan2f
+    libc.src.math.atan2l
+    libc.src.math.atanf
+    libc.src.math.atanhf
+    libc.src.math.canonicalize
+    libc.src.math.canonicalizef
+    libc.src.math.canonicalizel
+    libc.src.math.cbrt
+    libc.src.math.cbrtf
+    libc.src.math.ceil
+    libc.src.math.ceilf
+    libc.src.math.ceill
+    libc.src.math.copysign
+    libc.src.math.copysignf
+    libc.src.math.copysignl
+    libc.src.math.cos
+    libc.src.math.cosf
+    libc.src.math.coshf
+    libc.src.math.cospif
+    libc.src.math.ddivl
+    libc.src.math.dfmal
+    libc.src.math.dmull
+    libc.src.math.dsqrtl
+    libc.src.math.erff
+    libc.src.math.exp
+    libc.src.math.exp10
+    libc.src.math.exp10f
+    libc.src.math.exp2
+    libc.src.math.exp2f
+    libc.src.math.exp2m1f
+    libc.src.math.expf
+    libc.src.math.expm1
+    libc.src.math.expm1f
+    libc.src.math.fabs
+    libc.src.math.fabsf
+    libc.src.math.fabsl
+    libc.src.math.fadd
+    libc.src.math.faddl
+    libc.src.math.fdim
+    libc.src.math.fdimf
+    libc.src.math.fdiml
+    libc.src.math.fdiv
+    libc.src.math.fdivl
+    libc.src.math.ffma
+    libc.src.math.ffmal
+    libc.src.math.floor
+    libc.src.math.floorf
+    libc.src.math.floorl
+    libc.src.math.fma
+    libc.src.math.fmabf16
+    libc.src.math.fmaf
+    libc.src.math.fmax
+    libc.src.math.fmaxf
+    libc.src.math.fmaximum
+    libc.src.math.fmaximumf
+    libc.src.math.fmaximuml
+    libc.src.math.fmaximum_mag
+    libc.src.math.fmaximum_magf
+    libc.src.math.fmaximum_magl
+    libc.src.math.fmaximum_mag_num
+    libc.src.math.fmaximum_mag_numf
+    libc.src.math.fmaximum_mag_numl
+    libc.src.math.fmaximum_num
+    libc.src.math.fmaximum_numf
+    libc.src.math.fmaximum_numl
+    libc.src.math.fmaxl
+    libc.src.math.fmin
+    libc.src.math.fminf
+    libc.src.math.fminimum
+    libc.src.math.fminimumf
+    libc.src.math.fminimuml
+    libc.src.math.fminimum_mag
+    libc.src.math.fminimum_magf
+    libc.src.math.fminimum_magl
+    libc.src.math.fminimum_mag_num
+    libc.src.math.fminimum_mag_numf
+    libc.src.math.fminimum_mag_numl
+    libc.src.math.fminimum_num
+    libc.src.math.fminimum_numf
+    libc.src.math.fminimum_numl
+    libc.src.math.fminl
+    libc.src.math.fmod
+    libc.src.math.fmodf
+    libc.src.math.fmodl
+    libc.src.math.fmul
+    libc.src.math.fmull
+    libc.src.math.frexp
+    libc.src.math.frexpf
+    libc.src.math.frexpl
+    libc.src.math.fromfp
+    libc.src.math.fromfpf
+    libc.src.math.fromfpl
+    libc.src.math.fromfpx
+    libc.src.math.fromfpxf
+    libc.src.math.fromfpxl
+    libc.src.math.fsqrt
+    libc.src.math.fsqrtl
+    libc.src.math.fsub
+    libc.src.math.fsubl
+    libc.src.math.getpayload
+    libc.src.math.getpayloadf
+    libc.src.math.getpayloadl
+    libc.src.math.hypot
+    libc.src.math.hypotf
+    libc.src.math.ilogb
+    libc.src.math.ilogbf
+    libc.src.math.ilogbl
+    libc.src.math.isnan
+    libc.src.math.isnanf
+    libc.src.math.isnanl
+    libc.src.math.ldexp
+    libc.src.math.ldexpf
+    libc.src.math.ldexpl
+    libc.src.math.lgamma
+    libc.src.math.lgamma_r
+    libc.src.math.llogb
+    libc.src.math.llogbf
+    libc.src.math.llogbl
+    libc.src.math.llrint
+    libc.src.math.llrintf
+    libc.src.math.llrintl
+    libc.src.math.llround
+    libc.src.math.llroundf
+    libc.src.math.llroundl
+    libc.src.math.log
+    libc.src.math.log10
+    libc.src.math.log10f
+    libc.src.math.log1p
+    libc.src.math.log1pf
+    libc.src.math.log2
+    libc.src.math.log2f
+    libc.src.math.logb
+    libc.src.math.logbf
+    libc.src.math.logbl
+    libc.src.math.logf
+    libc.src.math.lrint
+    libc.src.math.lrintf
+    libc.src.math.lrintl
+    libc.src.math.lround
+    libc.src.math.lroundf
+    libc.src.math.lroundl
+    libc.src.math.modf
+    libc.src.math.modff
+    libc.src.math.modfl
+    libc.src.math.nan
+    libc.src.math.nanf
+    libc.src.math.nanl
+    libc.src.math.nearbyint
+    libc.src.math.nearbyintf
+    libc.src.math.nearbyintl
+    libc.src.math.nextafter
+    libc.src.math.nextafterf
+    libc.src.math.nextafterl
+    libc.src.math.nextdown
+    libc.src.math.nextdownf
+    libc.src.math.nextdownl
+    libc.src.math.nexttoward
+    libc.src.math.nexttowardf
+    libc.src.math.nexttowardl
+    libc.src.math.nextup
+    libc.src.math.nextupf
+    libc.src.math.nextupl
+    libc.src.math.pow
+    libc.src.math.powf
+    libc.src.math.remainder
+    libc.src.math.remainderf
+    libc.src.math.remainderl
+    libc.src.math.remquo
+    libc.src.math.remquof
+    libc.src.math.remquol
+    libc.src.math.rint
+    libc.src.math.rintf
+    libc.src.math.rintl
+    libc.src.math.roundeven
+    libc.src.math.roundevenf
+    libc.src.math.roundevenl
+    libc.src.math.round
+    libc.src.math.roundf
+    libc.src.math.roundl
+    libc.src.math.scalbln
+    libc.src.math.scalblnf
+    libc.src.math.scalblnl
+    libc.src.math.scalbn
+    libc.src.math.scalbnf
+    libc.src.math.scalbnl
+    libc.src.math.setpayload
+    libc.src.math.setpayloadf
+    libc.src.math.setpayloadl
+    libc.src.math.setpayloadsig
+    libc.src.math.setpayloadsigf
+    libc.src.math.setpayloadsigl
+    libc.src.math.sin
+    libc.src.math.sincos
+    libc.src.math.sincosf
+    libc.src.math.sinf
+    libc.src.math.sinhf
+    libc.src.math.sinpif
+    libc.src.math.sqrt
+    libc.src.math.sqrtf
+    libc.src.math.sqrtl
+    libc.src.math.tan
+    libc.src.math.tanf
+    libc.src.math.tanhf
+    libc.src.math.tanpif
+    libc.src.math.tgamma
+    libc.src.math.tgammaf
+    libc.src.math.totalorder
+    libc.src.math.totalorderf
+    libc.src.math.totalorderl
+    libc.src.math.totalordermag
+    libc.src.math.totalordermagf
+    libc.src.math.totalordermagl
+    libc.src.math.trunc
+    libc.src.math.truncf
+    libc.src.math.truncl
+    libc.src.math.ufromfp
+    libc.src.math.ufromfpf
+    libc.src.math.ufromfpl
+    libc.src.math.ufromfpx
+    libc.src.math.ufromfpxf
+    libc.src.math.ufromfpxl
+)
+
+if(LIBC_TYPES_HAS_FLOAT16)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # math.h C23 _Float16 entrypoints
+    libc.src.math.acosf16
+    libc.src.math.acoshf16
+    libc.src.math.acospif16
+    libc.src.math.asinf16
+    libc.src.math.asinhf16
+    libc.src.math.atanf16
+    libc.src.math.atanhf16
+    libc.src.math.canonicalizef16
+    libc.src.math.ceilf16
+    libc.src.math.copysignf16
+    libc.src.math.cosf16
+    libc.src.math.coshf16
+    libc.src.math.cospif16
+    libc.src.math.exp10f16
+    libc.src.math.exp10m1f16
+    libc.src.math.exp2f16
+    # libc.src.math.exp2m1f16
+    libc.src.math.expf16
+    libc.src.math.expm1f16
+    libc.src.math.f16add
+    libc.src.math.f16addf
+    libc.src.math.f16addl
+    libc.src.math.f16div
+    libc.src.math.f16divf
+    libc.src.math.f16divl
+    libc.src.math.f16fma
+    libc.src.math.f16fmaf
+    libc.src.math.f16fmal
+    libc.src.math.f16mul
+    libc.src.math.f16mulf
+    libc.src.math.f16mull
+    libc.src.math.f16sqrt
+    libc.src.math.f16sqrtf
+    libc.src.math.f16sqrtl
+    libc.src.math.f16sub
+    libc.src.math.f16subf
+    libc.src.math.f16subl
+    libc.src.math.fabsf16
+    libc.src.math.fdimf16
+    libc.src.math.floorf16
+    libc.src.math.fmaf16
+    libc.src.math.fmaxf16
+    libc.src.math.fmaximum_mag_numf16
+    libc.src.math.fmaximum_magf16
+    libc.src.math.fmaximum_numf16
+    libc.src.math.fmaximumf16
+    libc.src.math.fminf16
+    libc.src.math.fminimum_mag_numf16
+    libc.src.math.fminimum_magf16
+    libc.src.math.fminimum_numf16
+    libc.src.math.fminimumf16
+    libc.src.math.fmodf16
+    libc.src.math.frexpf16
+    libc.src.math.fromfpf16
+    libc.src.math.fromfpxf16
+    libc.src.math.getpayloadf16
+    libc.src.math.hypotf16
+    libc.src.math.ilogbf16
+    libc.src.math.iscanonicalf16
+    libc.src.math.issignalingf16
+    libc.src.math.ldexpf16
+    libc.src.math.llogbf16
+    libc.src.math.llrintf16
+    libc.src.math.llroundf16
+    libc.src.math.log10f16
+    libc.src.math.log2f16
+    libc.src.math.logbf16
+    libc.src.math.logf16
+    libc.src.math.lrintf16
+    libc.src.math.lroundf16
+    libc.src.math.modff16
+    libc.src.math.nanf16
+    libc.src.math.nearbyintf16
+    libc.src.math.nextafterf16
+    libc.src.math.nextdownf16
+    libc.src.math.nexttowardf16
+    libc.src.math.nextupf16
+    libc.src.math.remainderf16
+    libc.src.math.remquof16
+    libc.src.math.rintf16
+    libc.src.math.roundevenf16
+    libc.src.math.roundf16
+    libc.src.math.scalblnf16
+    libc.src.math.scalbnf16
+    libc.src.math.setpayloadf16
+    libc.src.math.setpayloadsigf16
+    libc.src.math.sinf16
+    libc.src.math.sinhf16
+    libc.src.math.sinpif16
+    libc.src.math.sqrtf16
+    libc.src.math.tanf16
+    libc.src.math.tanhf16
+    libc.src.math.tanpif16
+    libc.src.math.totalorderf16
+    libc.src.math.totalordermagf16
+    libc.src.math.truncf16
+    libc.src.math.ufromfpf16
+    libc.src.math.ufromfpxf16
+  )
+endif()
+
+list(APPEND TARGET_LIBM_ENTRYPOINTS
+  # bfloat16 entrypoints
+  libc.src.math.bf16add
+  libc.src.math.bf16addf
+  libc.src.math.bf16addl
+  libc.src.math.bf16div
+  libc.src.math.bf16divf
+  libc.src.math.bf16divl
+  libc.src.math.bf16fma
+  libc.src.math.bf16fmaf
+  libc.src.math.bf16fmal
+  libc.src.math.bf16mul
+  libc.src.math.bf16mulf
+  libc.src.math.bf16mull
+  libc.src.math.bf16sub
+  libc.src.math.bf16subf
+  libc.src.math.bf16subl
+  libc.src.math.canonicalizebf16
+  libc.src.math.ceilbf16
+  libc.src.math.copysignbf16
+  libc.src.math.fabsbf16
+  libc.src.math.fdimbf16
+  libc.src.math.floorbf16
+  libc.src.math.fmaxbf16
+  libc.src.math.fmaximumbf16
+  libc.src.math.fmaximum_magbf16
+  libc.src.math.fmaximum_mag_numbf16
+  libc.src.math.fmaximum_numbf16
+  libc.src.math.fminbf16
+  libc.src.math.fminimumbf16
+  libc.src.math.fminimum_magbf16
+  libc.src.math.fminimum_mag_numbf16
+  libc.src.math.fminimum_numbf16
+  libc.src.math.fmodbf16
+  libc.src.math.frexpbf16
+  libc.src.math.fromfpbf16
+  libc.src.math.fromfpxbf16
+  libc.src.math.getpayloadbf16
+  libc.src.math.ilogbbf16
+  libc.src.math.iscanonicalbf16
+  libc.src.math.issignalingbf16
+  libc.src.math.ldexpbf16
+  libc.src.math.llogbbf16
+  libc.src.math.llrintbf16
+  libc.src.math.llroundbf16
+  libc.src.math.log_bf16
+  libc.src.math.logbbf16
+  libc.src.math.lrintbf16
+  libc.src.math.lroundbf16
+  libc.src.math.modfbf16
+  libc.src.math.nanbf16
+  libc.src.math.nearbyintbf16
+  libc.src.math.nextafterbf16
+  libc.src.math.nextdownbf16
+  libc.src.math.nexttowardbf16
+  libc.src.math.nextupbf16
+  libc.src.math.remainderbf16
+  libc.src.math.remquobf16
+  libc.src.math.rintbf16
+  libc.src.math.roundbf16
+  libc.src.math.roundevenbf16
+  libc.src.math.scalblnbf16
+  libc.src.math.scalbnbf16
+  libc.src.math.setpayloadbf16
+  libc.src.math.setpayloadsigbf16
+  libc.src.math.sqrtbf16
+  libc.src.math.truncbf16
+  libc.src.math.totalorderbf16
+  libc.src.math.totalordermagbf16
+  libc.src.math.ufromfpbf16
+  libc.src.math.ufromfpxbf16
+)
+
+set(TARGET_LLVMLIBC_ENTRYPOINTS
+  ${TARGET_LIBC_ENTRYPOINTS}
+  ${TARGET_LIBM_ENTRYPOINTS}
+)
diff --git a/libc/config/gpu/nvptx/entrypoints.txt b/libc/config/gpu/nvptx/entrypoints.txt
index 6070fb5b17b3c..b997d3eb3b26a 100644
--- a/libc/config/gpu/nvptx/entrypoints.txt
+++ b/libc/config/gpu/nvptx/entrypoints.txt
@@ -1,695 +1,696 @@
-set(TARGET_LIBC_ENTRYPOINTS
-    # assert.h entrypoints
-    libc.src.assert.__assert_fail
-
-    # ctype.h entrypoints
-    libc.src.ctype.isalnum
-    libc.src.ctype.isalnum_l
-    libc.src.ctype.isalpha
-    libc.src.ctype.isalpha_l
-    libc.src.ctype.isascii
-    libc.src.ctype.isblank
-    libc.src.ctype.isblank_l
-    libc.src.ctype.iscntrl
-    libc.src.ctype.iscntrl_l
-    libc.src.ctype.isdigit
-    libc.src.ctype.isdigit_l
-    libc.src.ctype.isgraph
-    libc.src.ctype.isgraph_l
-    libc.src.ctype.islower
-    libc.src.ctype.islower_l
-    libc.src.ctype.isprint
-    libc.src.ctype.isprint_l
-    libc.src.ctype.ispunct
-    libc.src.ctype.ispunct_l
-    libc.src.ctype.isspace
-    libc.src.ctype.isspace_l
-    libc.src.ctype.isupper
-    libc.src.ctype.isupper_l
-    libc.src.ctype.isxdigit
-    libc.src.ctype.isxdigit_l
-    libc.src.ctype.toascii
-    libc.src.ctype.tolower
-    libc.src.ctype.tolower_l
-    libc.src.ctype.toupper
-    libc.src.ctype.toupper_l
-
-    # string.h entrypoints
-    libc.src.string.memccpy
-    libc.src.string.memchr
-    libc.src.string.memcmp
-    libc.src.string.memcpy
-    libc.src.string.memmem
-    libc.src.string.memmove
-    libc.src.string.mempcpy
-    libc.src.string.memrchr
-    libc.src.string.memset
-    libc.src.string.stpcpy
-    libc.src.string.stpncpy
-    libc.src.string.strcasestr
-    libc.src.string.strcat
-    libc.src.string.strchr
-    libc.src.string.strchrnul
-    libc.src.string.strcmp
-    libc.src.string.strcoll
-    libc.src.string.strcoll_l
-    libc.src.string.strcpy
-    libc.src.string.strcspn
-    libc.src.string.strdup
-    libc.src.string.strerror
-    libc.src.string.strlcat
-    libc.src.string.strlcpy
-    libc.src.string.strlen
-    libc.src.string.strncat
-    libc.src.string.strncmp
-    libc.src.string.strncpy
-    libc.src.string.strndup
-    libc.src.string.strnlen
-    libc.src.string.strpbrk
-    libc.src.string.strrchr
-    libc.src.string.strsep
-    libc.src.string.strspn
-    libc.src.string.strstr
-    libc.src.string.strtok
-    libc.src.string.strtok_r
-    libc.src.string.strxfrm
-    libc.src.string.strxfrm_l
-
-    # strings.h entrypoints
-    libc.src.strings.bcmp
-    libc.src.strings.bcopy
-    libc.src.strings.bzero
-    libc.src.strings.index
-    libc.src.strings.rindex
-    libc.src.strings.strcasecmp
-    libc.src.strings.strncasecmp
-
-    # stdbit.h entrypoints
-    libc.src.stdbit.stdc_bit_ceil_uc
-    libc.src.stdbit.stdc_bit_ceil_ui
-    libc.src.stdbit.stdc_bit_ceil_ul
-    libc.src.stdbit.stdc_bit_ceil_ull
-    libc.src.stdbit.stdc_bit_ceil_us
-    libc.src.stdbit.stdc_bit_floor_uc
-    libc.src.stdbit.stdc_bit_floor_ui
-    libc.src.stdbit.stdc_bit_floor_ul
-    libc.src.stdbit.stdc_bit_floor_ull
-    libc.src.stdbit.stdc_bit_floor_us
-    libc.src.stdbit.stdc_bit_width_uc
-    libc.src.stdbit.stdc_bit_width_ui
-    libc.src.stdbit.stdc_bit_width_ul
-    libc.src.stdbit.stdc_bit_width_ull
-    libc.src.stdbit.stdc_bit_width_us
-    libc.src.stdbit.stdc_count_ones_uc
-    libc.src.stdbit.stdc_count_ones_ui
-    libc.src.stdbit.stdc_count_ones_ul
-    libc.src.stdbit.stdc_count_ones_ull
-    libc.src.stdbit.stdc_count_ones_us
-    libc.src.stdbit.stdc_count_zeros_uc
-    libc.src.stdbit.stdc_count_zeros_ui
-    libc.src.stdbit.stdc_count_zeros_ul
-    libc.src.stdbit.stdc_count_zeros_ull
-    libc.src.stdbit.stdc_count_zeros_us
-    libc.src.stdbit.stdc_first_leading_one_uc
-    libc.src.stdbit.stdc_first_leading_one_ui
-    libc.src.stdbit.stdc_first_leading_one_ul
-    libc.src.stdbit.stdc_first_leading_one_ull
-    libc.src.stdbit.stdc_first_leading_one_us
-    libc.src.stdbit.stdc_first_leading_zero_uc
-    libc.src.stdbit.stdc_first_leading_zero_ui
-    libc.src.stdbit.stdc_first_leading_zero_ul
-    libc.src.stdbit.stdc_first_leading_zero_ull
-    libc.src.stdbit.stdc_first_leading_zero_us
-    libc.src.stdbit.stdc_first_trailing_one_uc
-    libc.src.stdbit.stdc_first_trailing_one_ui
-    libc.src.stdbit.stdc_first_trailing_one_ul
-    libc.src.stdbit.stdc_first_trailing_one_ull
-    libc.src.stdbit.stdc_first_trailing_one_us
-    libc.src.stdbit.stdc_first_trailing_zero_uc
-    libc.src.stdbit.stdc_first_trailing_zero_ui
-    libc.src.stdbit.stdc_first_trailing_zero_ul
-    libc.src.stdbit.stdc_first_trailing_zero_ull
-    libc.src.stdbit.stdc_first_trailing_zero_us
-    libc.src.stdbit.stdc_has_single_bit_uc
-    libc.src.stdbit.stdc_has_single_bit_ui
-    libc.src.stdbit.stdc_has_single_bit_ul
-    libc.src.stdbit.stdc_has_single_bit_ull
-    libc.src.stdbit.stdc_has_single_bit_us
-    libc.src.stdbit.stdc_leading_ones_uc
-    libc.src.stdbit.stdc_leading_ones_ui
-    libc.src.stdbit.stdc_leading_ones_ul
-    libc.src.stdbit.stdc_leading_ones_ull
-    libc.src.stdbit.stdc_leading_ones_us
-    libc.src.stdbit.stdc_leading_zeros_uc
-    libc.src.stdbit.stdc_leading_zeros_ui
-    libc.src.stdbit.stdc_leading_zeros_ul
-    libc.src.stdbit.stdc_leading_zeros_ull
-    libc.src.stdbit.stdc_leading_zeros_us
-    libc.src.stdbit.stdc_trailing_ones_uc
-    libc.src.stdbit.stdc_trailing_ones_ui
-    libc.src.stdbit.stdc_trailing_ones_ul
-    libc.src.stdbit.stdc_trailing_ones_ull
-    libc.src.stdbit.stdc_trailing_ones_us
-    libc.src.stdbit.stdc_trailing_zeros_uc
-    libc.src.stdbit.stdc_trailing_zeros_ui
-    libc.src.stdbit.stdc_trailing_zeros_ul
-    libc.src.stdbit.stdc_trailing_zeros_ull
-    libc.src.stdbit.stdc_trailing_zeros_us
-
-    # stdlib.h entrypoints
-    libc.src.stdlib._Exit
-    libc.src.stdlib.abort
-    libc.src.stdlib.abs
-    libc.src.stdlib.atexit
-    libc.src.stdlib.atof
-    libc.src.stdlib.atoi
-    libc.src.stdlib.atol
-    libc.src.stdlib.atoll
-    libc.src.stdlib.bsearch
-    libc.src.stdlib.div
-    libc.src.stdlib.exit
-    libc.src.stdlib.labs
-    libc.src.stdlib.ldiv
-    libc.src.stdlib.llabs
-    libc.src.stdlib.lldiv
-    libc.src.stdlib.memalignment
-    libc.src.stdlib.qsort
-    libc.src.stdlib.qsort_r
-    libc.src.stdlib.rand
-    libc.src.stdlib.srand
-    libc.src.stdlib.strtod
-    libc.src.stdlib.strtod_l
-    libc.src.stdlib.strtof
-    libc.src.stdlib.strtof_l
-    libc.src.stdlib.strtol
-    libc.src.stdlib.strtol_l
-    libc.src.stdlib.strtold
-    libc.src.stdlib.strtold_l
-    libc.src.stdlib.strtoll
-    libc.src.stdlib.strtoll_l
-    libc.src.stdlib.strtoul
-    libc.src.stdlib.strtoul_l
-    libc.src.stdlib.strtoull
-    libc.src.stdlib.strtoull_l
-    libc.src.stdlib.at_quick_exit
-    libc.src.stdlib.quick_exit
-    libc.src.stdlib.getenv
-    libc.src.stdlib.system
-
-    # TODO: Implement these correctly
-    libc.src.stdlib.aligned_alloc
-    libc.src.stdlib.calloc
-    libc.src.stdlib.free
-    libc.src.stdlib.malloc
-    libc.src.stdlib.realloc
-
-    # errno.h entrypoints
-    libc.src.errno.errno
-
-    # stdio.h entrypoints
-    libc.src.stdio.clearerr
-    libc.src.stdio.fclose
-    libc.src.stdio.printf
-    libc.src.stdio.vprintf
-    libc.src.stdio.fprintf
-    libc.src.stdio.vfprintf
-    libc.src.stdio.snprintf
-    libc.src.stdio.sprintf
-    libc.src.stdio.vsnprintf
-    libc.src.stdio.vsprintf
-    libc.src.stdio.asprintf
-    libc.src.stdio.vasprintf
-    libc.src.stdio.scanf
-    libc.src.stdio.vscanf
-    libc.src.stdio.fscanf
-    libc.src.stdio.vfscanf
-    libc.src.stdio.sscanf
-    libc.src.stdio.vsscanf
-    libc.src.stdio.feof
-    libc.src.stdio.ferror
-    libc.src.stdio.fflush
-    libc.src.stdio.fgetc
-    libc.src.stdio.fgets
-    libc.src.stdio.fopen
-    libc.src.stdio.fputc
-    libc.src.stdio.fputs
-    libc.src.stdio.fread
-    libc.src.stdio.fseek
-    libc.src.stdio.ftell
-    libc.src.stdio.fwrite
-    libc.src.stdio.getc
-    libc.src.stdio.getchar
-    libc.src.stdio.putc
-    libc.src.stdio.putchar
-    libc.src.stdio.puts
-    libc.src.stdio.remove
-    libc.src.stdio.rename
-    libc.src.stdio.stderr
-    libc.src.stdio.stdin
-    libc.src.stdio.stdout
-    libc.src.stdio.ungetc
-
-    # inttypes.h entrypoints
-    libc.src.inttypes.imaxabs
-    libc.src.inttypes.imaxdiv
-    libc.src.inttypes.strtoimax
-    libc.src.inttypes.strtoumax
-
-    # time.h entrypoints
-    libc.src.time.clock
-    libc.src.time.clock_gettime
-    libc.src.time.timespec_get
-    libc.src.time.nanosleep
-    libc.src.time.strftime
-    libc.src.time.strftime_l
-    libc.src.time.mktime
-
-    # wchar.h entrypoints
-    libc.src.wchar.wcslen
-    libc.src.wchar.wctob
-
-    # locale.h entrypoints
-    libc.src.locale.localeconv
-    libc.src.locale.duplocale
-    libc.src.locale.freelocale
-    libc.src.locale.localeconv
-    libc.src.locale.newlocale
-    libc.src.locale.setlocale
-    libc.src.locale.uselocale
-)
-
-set(TARGET_LIBM_ENTRYPOINTS
-    # math.h entrypoints
-    libc.src.math.acos
-    libc.src.math.acosf
-    libc.src.math.acoshf
-    libc.src.math.asin
-    libc.src.math.asinf
-    libc.src.math.asinhf
-    libc.src.math.atan
-    libc.src.math.atan2
-    libc.src.math.atan2f
-    libc.src.math.atan2l
-    libc.src.math.atanf
-    libc.src.math.atanhf
-    libc.src.math.canonicalize
-    libc.src.math.canonicalizef
-    libc.src.math.canonicalizel
-    libc.src.math.cbrt
-    libc.src.math.cbrtf
-    libc.src.math.ceil
-    libc.src.math.ceilf
-    libc.src.math.ceill
-    libc.src.math.copysign
-    libc.src.math.copysignf
-    libc.src.math.copysignl
-    libc.src.math.cos
-    libc.src.math.cosf
-    libc.src.math.coshf
-    libc.src.math.cospif
-    libc.src.math.ddivl
-    libc.src.math.dfmal
-    libc.src.math.dmull
-    libc.src.math.dsqrtl
-    libc.src.math.erff
-    libc.src.math.exp
-    libc.src.math.exp10
-    libc.src.math.exp10f
-    libc.src.math.exp2
-    libc.src.math.exp2f
-    libc.src.math.exp2m1f
-    libc.src.math.expf
-    libc.src.math.expm1
-    libc.src.math.expm1f
-    libc.src.math.fabs
-    libc.src.math.fabsf
-    libc.src.math.fabsl
-    libc.src.math.fadd
-    libc.src.math.faddl
-    libc.src.math.fdim
-    libc.src.math.fdimf
-    libc.src.math.fdiml
-    libc.src.math.fdiv
-    libc.src.math.fdivl
-    libc.src.math.ffma
-    libc.src.math.ffmal
-    libc.src.math.floor
-    libc.src.math.floorf
-    libc.src.math.floorl
-    libc.src.math.fma
-    libc.src.math.fmaf
-    libc.src.math.fmax
-    libc.src.math.fmaxf
-    libc.src.math.fmaximum
-    libc.src.math.fmaximumf
-    libc.src.math.fmaximuml
-    libc.src.math.fmaximum_mag
-    libc.src.math.fmaximum_magf
-    libc.src.math.fmaximum_magl
-    libc.src.math.fmaximum_mag_num
-    libc.src.math.fmaximum_mag_numf
-    libc.src.math.fmaximum_mag_numl
-    libc.src.math.fmaximum_num
-    libc.src.math.fmaximum_numf
-    libc.src.math.fmaximum_numl
-    libc.src.math.fmaxl
-    libc.src.math.fmin
-    libc.src.math.fminf
-    libc.src.math.fminimum
-    libc.src.math.fminimumf
-    libc.src.math.fminimuml
-    libc.src.math.fminimum_mag
-    libc.src.math.fminimum_magf
-    libc.src.math.fminimum_magl
-    libc.src.math.fminimum_mag_num
-    libc.src.math.fminimum_mag_numf
-    libc.src.math.fminimum_mag_numl
-    libc.src.math.fminimum_num
-    libc.src.math.fminimum_numf
-    libc.src.math.fminimum_numl
-    libc.src.math.fminl
-    libc.src.math.fmod
-    libc.src.math.fmodf
-    libc.src.math.fmodl
-    libc.src.math.fmul
-    libc.src.math.fmull
-    libc.src.math.frexp
-    libc.src.math.frexpf
-    libc.src.math.frexpl
-    # FIXME: Broken.
-    # libc.src.math.fromfp
-    # libc.src.math.fromfpf
-    # libc.src.math.fromfpl
-    # libc.src.math.fromfpx
-    # libc.src.math.fromfpxf
-    # libc.src.math.fromfpxl
-    libc.src.math.fsqrt
-    libc.src.math.fsqrtl
-    libc.src.math.fsub
-    libc.src.math.fsubl
-    libc.src.math.getpayload
-    libc.src.math.getpayloadf
-    libc.src.math.getpayloadl
-    libc.src.math.hypot
-    libc.src.math.hypotf
-    libc.src.math.ilogb
-    libc.src.math.ilogbf
-    libc.src.math.ilogbl
-    libc.src.math.isnan
-    libc.src.math.isnanf
-    libc.src.math.isnanl
-    libc.src.math.ldexp
-    libc.src.math.ldexpf
-    libc.src.math.ldexpl
-    libc.src.math.lgamma
-    libc.src.math.lgamma_r
-    libc.src.math.llogb
-    libc.src.math.llogbf
-    libc.src.math.llogbl
-    libc.src.math.llrint
-    libc.src.math.llrintf
-    libc.src.math.llrintl
-    libc.src.math.llround
-    libc.src.math.llroundf
-    libc.src.math.llroundl
-    libc.src.math.log
-    libc.src.math.log10
-    libc.src.math.log10f
-    libc.src.math.log1p
-    libc.src.math.log1pf
-    libc.src.math.log2
-    libc.src.math.log2f
-    libc.src.math.logb
-    libc.src.math.logbf
-    libc.src.math.logbl
-    libc.src.math.logf
-    libc.src.math.lrint
-    libc.src.math.lrintf
-    libc.src.math.lrintl
-    libc.src.math.lround
-    libc.src.math.lroundf
-    libc.src.math.lroundl
-    libc.src.math.modf
-    libc.src.math.modff
-    libc.src.math.modfl
-    libc.src.math.nan
-    libc.src.math.nanf
-    libc.src.math.nanl
-    libc.src.math.nearbyint
-    libc.src.math.nearbyintf
-    libc.src.math.nearbyintl
-    libc.src.math.nextafter
-    libc.src.math.nextafterf
-    libc.src.math.nextafterl
-    libc.src.math.nextdown
-    libc.src.math.nextdownf
-    libc.src.math.nextdownl
-    libc.src.math.nexttoward
-    libc.src.math.nexttowardf
-    libc.src.math.nexttowardl
-    libc.src.math.nextup
-    libc.src.math.nextupf
-    libc.src.math.nextupl
-    libc.src.math.pow
-    libc.src.math.powf
-    libc.src.math.remainder
-    libc.src.math.remainderf
-    libc.src.math.remainderl
-    libc.src.math.remquo
-    libc.src.math.remquof
-    libc.src.math.remquol
-    libc.src.math.rint
-    libc.src.math.rintf
-    libc.src.math.rintl
-    libc.src.math.roundeven
-    libc.src.math.roundevenf
-    libc.src.math.roundevenl
-    libc.src.math.round
-    libc.src.math.roundf
-    libc.src.math.roundl
-    libc.src.math.scalbln
-    libc.src.math.scalblnf
-    libc.src.math.scalblnl
-    libc.src.math.scalbn
-    libc.src.math.scalbnf
-    libc.src.math.scalbnl
-    libc.src.math.setpayload
-    libc.src.math.setpayloadf
-    libc.src.math.setpayloadl
-    libc.src.math.setpayloadsig
-    libc.src.math.setpayloadsigf
-    libc.src.math.setpayloadsigl
-    libc.src.math.sin
-    libc.src.math.sincos
-    libc.src.math.sincosf
-    libc.src.math.sinf
-    libc.src.math.sinhf
-    libc.src.math.sinpif
-    libc.src.math.sqrt
-    libc.src.math.sqrtf
-    libc.src.math.sqrtl
-    libc.src.math.tan
-    libc.src.math.tanf
-    libc.src.math.tanhf
-    libc.src.math.tanpif
-    libc.src.math.tgamma
-    libc.src.math.tgammaf
-    libc.src.math.totalorder
-    libc.src.math.totalorderf
-    libc.src.math.totalorderl
-    libc.src.math.totalordermag
-    libc.src.math.totalordermagf
-    libc.src.math.totalordermagl
-    libc.src.math.trunc
-    libc.src.math.truncf
-    libc.src.math.truncl
-    # FIXME: Broken.
-    # libc.src.math.ufromfp
-    # libc.src.math.ufromfpf
-    # libc.src.math.ufromfpl
-    # libc.src.math.ufromfpx
-    # libc.src.math.ufromfpxf
-    # libc.src.math.ufromfpxl
-)
-
-if(LIBC_TYPES_HAS_FLOAT16)
-  list(APPEND TARGET_LIBM_ENTRYPOINTS
-    # math.h C23 _Float16 entrypoints
-    libc.src.math.acosf16
-    libc.src.math.acoshf16
-    libc.src.math.acospif16
-    libc.src.math.asinf16
-    libc.src.math.asinhf16
-    libc.src.math.atanf16
-    libc.src.math.atanhf16
-    libc.src.math.canonicalizef16
-    libc.src.math.ceilf16
-    libc.src.math.copysignf16
-    libc.src.math.cosf16
-    libc.src.math.coshf16
-    libc.src.math.cospif16
-    libc.src.math.exp10f16
-    libc.src.math.exp10m1f16
-    libc.src.math.exp2f16
-    libc.src.math.exp2m1f16
-    libc.src.math.expf16
-    libc.src.math.expm1f16
-    libc.src.math.f16add
-    libc.src.math.f16addf
-    libc.src.math.f16addl
-    libc.src.math.f16div
-    libc.src.math.f16divf
-    libc.src.math.f16divl
-    libc.src.math.f16fma
-    libc.src.math.f16fmaf
-    libc.src.math.f16fmal
-    libc.src.math.f16mul
-    libc.src.math.f16mulf
-    libc.src.math.f16mull
-    libc.src.math.f16sqrt
-    libc.src.math.f16sqrtf
-    libc.src.math.f16sqrtl
-    libc.src.math.f16sub
-    libc.src.math.f16subf
-    libc.src.math.f16subl
-    libc.src.math.fabsf16
-    libc.src.math.fdimf16
-    libc.src.math.floorf16
-    libc.src.math.fmaf16
-    libc.src.math.fmaxf16
-    libc.src.math.fmaximum_mag_numf16
-    libc.src.math.fmaximum_magf16
-    libc.src.math.fmaximum_numf16
-    libc.src.math.fmaximumf16
-    libc.src.math.fminf16
-    libc.src.math.fminimum_mag_numf16
-    libc.src.math.fminimum_magf16
-    libc.src.math.fminimum_numf16
-    libc.src.math.fminimumf16
-    libc.src.math.fmodf16
-    libc.src.math.frexpf16
-    libc.src.math.fromfpf16
-    libc.src.math.fromfpxf16
-    libc.src.math.getpayloadf16
-    libc.src.math.hypotf16
-    libc.src.math.ilogbf16
-    libc.src.math.iscanonicalf16
-    libc.src.math.issignalingf16
-    libc.src.math.ldexpf16
-    libc.src.math.llogbf16
-    libc.src.math.llrintf16
-    libc.src.math.llroundf16
-    libc.src.math.log10f16
-    libc.src.math.log2f16
-    libc.src.math.logbf16
-    libc.src.math.logf16
-    libc.src.math.lrintf16
-    libc.src.math.lroundf16
-    libc.src.math.modff16
-    libc.src.math.nanf16
-    libc.src.math.nearbyintf16
-    libc.src.math.nextafterf16
-    libc.src.math.nextdownf16
-    libc.src.math.nexttowardf16
-    libc.src.math.nextupf16
-    libc.src.math.remainderf16
-    libc.src.math.remquof16
-    libc.src.math.rintf16
-    libc.src.math.roundevenf16
-    libc.src.math.roundf16
-    libc.src.math.scalblnf16
-    libc.src.math.scalbnf16
-    libc.src.math.setpayloadf16
-    libc.src.math.setpayloadsigf16
-    libc.src.math.sinf16
-    libc.src.math.sinhf16
-    libc.src.math.sinpif16
-    libc.src.math.sqrtf16
-    libc.src.math.tanf16
-    libc.src.math.tanhf16
-    libc.src.math.tanpif16
-    libc.src.math.totalorderf16
-    libc.src.math.totalordermagf16
-    libc.src.math.truncf16
-    libc.src.math.ufromfpf16
-    libc.src.math.ufromfpxf16
-  )
-endif()
-
-list(APPEND TARGET_LIBM_ENTRYPOINTS
-  # bfloat16 entrypoints
-  libc.src.math.bf16add
-  libc.src.math.bf16addf
-  libc.src.math.bf16addl
-  libc.src.math.bf16div
-  libc.src.math.bf16divf
-  libc.src.math.bf16divl
-  libc.src.math.bf16fma
-  libc.src.math.bf16fmaf
-  libc.src.math.bf16fmal
-  libc.src.math.bf16mul
-  libc.src.math.bf16mulf
-  libc.src.math.bf16mull
-  libc.src.math.bf16sub
-  libc.src.math.bf16subf
-  libc.src.math.bf16subl
-  libc.src.math.canonicalizebf16
-  libc.src.math.ceilbf16
-  libc.src.math.copysignbf16
-  libc.src.math.fabsbf16
-  libc.src.math.fdimbf16
-  libc.src.math.floorbf16
-  libc.src.math.fmaxbf16
-  libc.src.math.fmaximumbf16
-  libc.src.math.fmaximum_magbf16
-  libc.src.math.fmaximum_mag_numbf16
-  libc.src.math.fmaximum_numbf16
-  libc.src.math.fminbf16
-  libc.src.math.fminimumbf16
-  libc.src.math.fminimum_magbf16
-  libc.src.math.fminimum_mag_numbf16
-  libc.src.math.fminimum_numbf16
-  libc.src.math.fmodbf16
-  libc.src.math.frexpbf16
-  libc.src.math.fromfpbf16
-  libc.src.math.fromfpxbf16
-  libc.src.math.getpayloadbf16
-  libc.src.math.ilogbbf16
-  libc.src.math.iscanonicalbf16
-  libc.src.math.issignalingbf16
-  libc.src.math.ldexpbf16
-  libc.src.math.llogbbf16
-  libc.src.math.llrintbf16
-  libc.src.math.llroundbf16
-  libc.src.math.log_bf16
-  libc.src.math.logbbf16
-  libc.src.math.lrintbf16
-  libc.src.math.lroundbf16
-  libc.src.math.modfbf16
-  libc.src.math.nanbf16
-  libc.src.math.nearbyintbf16
-  libc.src.math.nextafterbf16
-  libc.src.math.nextdownbf16
-  libc.src.math.nexttowardbf16
-  libc.src.math.nextupbf16
-  libc.src.math.remainderbf16
-  libc.src.math.remquobf16
-  libc.src.math.rintbf16
-  libc.src.math.roundbf16
-  libc.src.math.roundevenbf16
-  libc.src.math.scalblnbf16
-  libc.src.math.scalbnbf16
-  libc.src.math.setpayloadbf16
-  libc.src.math.setpayloadsigbf16
-  libc.src.math.sqrtbf16
-  libc.src.math.truncbf16
-  libc.src.math.totalorderbf16
-  libc.src.math.totalordermagbf16
-  libc.src.math.ufromfpbf16
-  libc.src.math.ufromfpxbf16
-)
-
-set(TARGET_LLVMLIBC_ENTRYPOINTS
-  ${TARGET_LIBC_ENTRYPOINTS}
-  ${TARGET_LIBM_ENTRYPOINTS}
-)
+set(TARGET_LIBC_ENTRYPOINTS
+    # assert.h entrypoints
+    libc.src.assert.__assert_fail
+
+    # ctype.h entrypoints
+    libc.src.ctype.isalnum
+    libc.src.ctype.isalnum_l
+    libc.src.ctype.isalpha
+    libc.src.ctype.isalpha_l
+    libc.src.ctype.isascii
+    libc.src.ctype.isblank
+    libc.src.ctype.isblank_l
+    libc.src.ctype.iscntrl
+    libc.src.ctype.iscntrl_l
+    libc.src.ctype.isdigit
+    libc.src.ctype.isdigit_l
+    libc.src.ctype.isgraph
+    libc.src.ctype.isgraph_l
+    libc.src.ctype.islower
+    libc.src.ctype.islower_l
+    libc.src.ctype.isprint
+    libc.src.ctype.isprint_l
+    libc.src.ctype.ispunct
+    libc.src.ctype.ispunct_l
+    libc.src.ctype.isspace
+    libc.src.ctype.isspace_l
+    libc.src.ctype.isupper
+    libc.src.ctype.isupper_l
+    libc.src.ctype.isxdigit
+    libc.src.ctype.isxdigit_l
+    libc.src.ctype.toascii
+    libc.src.ctype.tolower
+    libc.src.ctype.tolower_l
+    libc.src.ctype.toupper
+    libc.src.ctype.toupper_l
+
+    # string.h entrypoints
+    libc.src.string.memccpy
+    libc.src.string.memchr
+    libc.src.string.memcmp
+    libc.src.string.memcpy
+    libc.src.string.memmem
+    libc.src.string.memmove
+    libc.src.string.mempcpy
+    libc.src.string.memrchr
+    libc.src.string.memset
+    libc.src.string.stpcpy
+    libc.src.string.stpncpy
+    libc.src.string.strcasestr
+    libc.src.string.strcat
+    libc.src.string.strchr
+    libc.src.string.strchrnul
+    libc.src.string.strcmp
+    libc.src.string.strcoll
+    libc.src.string.strcoll_l
+    libc.src.string.strcpy
+    libc.src.string.strcspn
+    libc.src.string.strdup
+    libc.src.string.strerror
+    libc.src.string.strlcat
+    libc.src.string.strlcpy
+    libc.src.string.strlen
+    libc.src.string.strncat
+    libc.src.string.strncmp
+    libc.src.string.strncpy
+    libc.src.string.strndup
+    libc.src.string.strnlen
+    libc.src.string.strpbrk
+    libc.src.string.strrchr
+    libc.src.string.strsep
+    libc.src.string.strspn
+    libc.src.string.strstr
+    libc.src.string.strtok
+    libc.src.string.strtok_r
+    libc.src.string.strxfrm
+    libc.src.string.strxfrm_l
+
+    # strings.h entrypoints
+    libc.src.strings.bcmp
+    libc.src.strings.bcopy
+    libc.src.strings.bzero
+    libc.src.strings.index
+    libc.src.strings.rindex
+    libc.src.strings.strcasecmp
+    libc.src.strings.strncasecmp
+
+    # stdbit.h entrypoints
+    libc.src.stdbit.stdc_bit_ceil_uc
+    libc.src.stdbit.stdc_bit_ceil_ui
+    libc.src.stdbit.stdc_bit_ceil_ul
+    libc.src.stdbit.stdc_bit_ceil_ull
+    libc.src.stdbit.stdc_bit_ceil_us
+    libc.src.stdbit.stdc_bit_floor_uc
+    libc.src.stdbit.stdc_bit_floor_ui
+    libc.src.stdbit.stdc_bit_floor_ul
+    libc.src.stdbit.stdc_bit_floor_ull
+    libc.src.stdbit.stdc_bit_floor_us
+    libc.src.stdbit.stdc_bit_width_uc
+    libc.src.stdbit.stdc_bit_width_ui
+    libc.src.stdbit.stdc_bit_width_ul
+    libc.src.stdbit.stdc_bit_width_ull
+    libc.src.stdbit.stdc_bit_width_us
+    libc.src.stdbit.stdc_count_ones_uc
+    libc.src.stdbit.stdc_count_ones_ui
+    libc.src.stdbit.stdc_count_ones_ul
+    libc.src.stdbit.stdc_count_ones_ull
+    libc.src.stdbit.stdc_count_ones_us
+    libc.src.stdbit.stdc_count_zeros_uc
+    libc.src.stdbit.stdc_count_zeros_ui
+    libc.src.stdbit.stdc_count_zeros_ul
+    libc.src.stdbit.stdc_count_zeros_ull
+    libc.src.stdbit.stdc_count_zeros_us
+    libc.src.stdbit.stdc_first_leading_one_uc
+    libc.src.stdbit.stdc_first_leading_one_ui
+    libc.src.stdbit.stdc_first_leading_one_ul
+    libc.src.stdbit.stdc_first_leading_one_ull
+    libc.src.stdbit.stdc_first_leading_one_us
+    libc.src.stdbit.stdc_first_leading_zero_uc
+    libc.src.stdbit.stdc_first_leading_zero_ui
+    libc.src.stdbit.stdc_first_leading_zero_ul
+    libc.src.stdbit.stdc_first_leading_zero_ull
+    libc.src.stdbit.stdc_first_leading_zero_us
+    libc.src.stdbit.stdc_first_trailing_one_uc
+    libc.src.stdbit.stdc_first_trailing_one_ui
+    libc.src.stdbit.stdc_first_trailing_one_ul
+    libc.src.stdbit.stdc_first_trailing_one_ull
+    libc.src.stdbit.stdc_first_trailing_one_us
+    libc.src.stdbit.stdc_first_trailing_zero_uc
+    libc.src.stdbit.stdc_first_trailing_zero_ui
+    libc.src.stdbit.stdc_first_trailing_zero_ul
+    libc.src.stdbit.stdc_first_trailing_zero_ull
+    libc.src.stdbit.stdc_first_trailing_zero_us
+    libc.src.stdbit.stdc_has_single_bit_uc
+    libc.src.stdbit.stdc_has_single_bit_ui
+    libc.src.stdbit.stdc_has_single_bit_ul
+    libc.src.stdbit.stdc_has_single_bit_ull
+    libc.src.stdbit.stdc_has_single_bit_us
+    libc.src.stdbit.stdc_leading_ones_uc
+    libc.src.stdbit.stdc_leading_ones_ui
+    libc.src.stdbit.stdc_leading_ones_ul
+    libc.src.stdbit.stdc_leading_ones_ull
+    libc.src.stdbit.stdc_leading_ones_us
+    libc.src.stdbit.stdc_leading_zeros_uc
+    libc.src.stdbit.stdc_leading_zeros_ui
+    libc.src.stdbit.stdc_leading_zeros_ul
+    libc.src.stdbit.stdc_leading_zeros_ull
+    libc.src.stdbit.stdc_leading_zeros_us
+    libc.src.stdbit.stdc_trailing_ones_uc
+    libc.src.stdbit.stdc_trailing_ones_ui
+    libc.src.stdbit.stdc_trailing_ones_ul
+    libc.src.stdbit.stdc_trailing_ones_ull
+    libc.src.stdbit.stdc_trailing_ones_us
+    libc.src.stdbit.stdc_trailing_zeros_uc
+    libc.src.stdbit.stdc_trailing_zeros_ui
+    libc.src.stdbit.stdc_trailing_zeros_ul
+    libc.src.stdbit.stdc_trailing_zeros_ull
+    libc.src.stdbit.stdc_trailing_zeros_us
+
+    # stdlib.h entrypoints
+    libc.src.stdlib._Exit
+    libc.src.stdlib.abort
+    libc.src.stdlib.abs
+    libc.src.stdlib.atexit
+    libc.src.stdlib.atof
+    libc.src.stdlib.atoi
+    libc.src.stdlib.atol
+    libc.src.stdlib.atoll
+    libc.src.stdlib.bsearch
+    libc.src.stdlib.div
+    libc.src.stdlib.exit
+    libc.src.stdlib.labs
+    libc.src.stdlib.ldiv
+    libc.src.stdlib.llabs
+    libc.src.stdlib.lldiv
+    libc.src.stdlib.memalignment
+    libc.src.stdlib.qsort
+    libc.src.stdlib.qsort_r
+    libc.src.stdlib.rand
+    libc.src.stdlib.srand
+    libc.src.stdlib.strtod
+    libc.src.stdlib.strtod_l
+    libc.src.stdlib.strtof
+    libc.src.stdlib.strtof_l
+    libc.src.stdlib.strtol
+    libc.src.stdlib.strtol_l
+    libc.src.stdlib.strtold
+    libc.src.stdlib.strtold_l
+    libc.src.stdlib.strtoll
+    libc.src.stdlib.strtoll_l
+    libc.src.stdlib.strtoul
+    libc.src.stdlib.strtoul_l
+    libc.src.stdlib.strtoull
+    libc.src.stdlib.strtoull_l
+    libc.src.stdlib.at_quick_exit
+    libc.src.stdlib.quick_exit
+    libc.src.stdlib.getenv
+    libc.src.stdlib.system
+
+    # TODO: Implement these correctly
+    libc.src.stdlib.aligned_alloc
+    libc.src.stdlib.calloc
+    libc.src.stdlib.free
+    libc.src.stdlib.malloc
+    libc.src.stdlib.realloc
+
+    # errno.h entrypoints
+    libc.src.errno.errno
+
+    # stdio.h entrypoints
+    libc.src.stdio.clearerr
+    libc.src.stdio.fclose
+    libc.src.stdio.printf
+    libc.src.stdio.vprintf
+    libc.src.stdio.fprintf
+    libc.src.stdio.vfprintf
+    libc.src.stdio.snprintf
+    libc.src.stdio.sprintf
+    libc.src.stdio.vsnprintf
+    libc.src.stdio.vsprintf
+    libc.src.stdio.asprintf
+    libc.src.stdio.vasprintf
+    libc.src.stdio.scanf
+    libc.src.stdio.vscanf
+    libc.src.stdio.fscanf
+    libc.src.stdio.vfscanf
+    libc.src.stdio.sscanf
+    libc.src.stdio.vsscanf
+    libc.src.stdio.feof
+    libc.src.stdio.ferror
+    libc.src.stdio.fflush
+    libc.src.stdio.fgetc
+    libc.src.stdio.fgets
+    libc.src.stdio.fopen
+    libc.src.stdio.fputc
+    libc.src.stdio.fputs
+    libc.src.stdio.fread
+    libc.src.stdio.fseek
+    libc.src.stdio.ftell
+    libc.src.stdio.fwrite
+    libc.src.stdio.getc
+    libc.src.stdio.getchar
+    libc.src.stdio.putc
+    libc.src.stdio.putchar
+    libc.src.stdio.puts
+    libc.src.stdio.remove
+    libc.src.stdio.rename
+    libc.src.stdio.stderr
+    libc.src.stdio.stdin
+    libc.src.stdio.stdout
+    libc.src.stdio.ungetc
+
+    # inttypes.h entrypoints
+    libc.src.inttypes.imaxabs
+    libc.src.inttypes.imaxdiv
+    libc.src.inttypes.strtoimax
+    libc.src.inttypes.strtoumax
+
+    # time.h entrypoints
+    libc.src.time.clock
+    libc.src.time.clock_gettime
+    libc.src.time.timespec_get
+    libc.src.time.nanosleep
+    libc.src.time.strftime
+    libc.src.time.strftime_l
+    libc.src.time.mktime
+
+    # wchar.h entrypoints
+    libc.src.wchar.wcslen
+    libc.src.wchar.wctob
+
+    # locale.h entrypoints
+    libc.src.locale.localeconv
+    libc.src.locale.duplocale
+    libc.src.locale.freelocale
+    libc.src.locale.localeconv
+    libc.src.locale.newlocale
+    libc.src.locale.setlocale
+    libc.src.locale.uselocale
+)
+
+set(TARGET_LIBM_ENTRYPOINTS
+    # math.h entrypoints
+    libc.src.math.acos
+    libc.src.math.acosf
+    libc.src.math.acoshf
+    libc.src.math.asin
+    libc.src.math.asinf
+    libc.src.math.asinhf
+    libc.src.math.atan
+    libc.src.math.atan2
+    libc.src.math.atan2f
+    libc.src.math.atan2l
+    libc.src.math.atanf
+    libc.src.math.atanhf
+    libc.src.math.canonicalize
+    libc.src.math.canonicalizef
+    libc.src.math.canonicalizel
+    libc.src.math.cbrt
+    libc.src.math.cbrtf
+    libc.src.math.ceil
+    libc.src.math.ceilf
+    libc.src.math.ceill
+    libc.src.math.copysign
+    libc.src.math.copysignf
+    libc.src.math.copysignl
+    libc.src.math.cos
+    libc.src.math.cosf
+    libc.src.math.coshf
+    libc.src.math.cospif
+    libc.src.math.ddivl
+    libc.src.math.dfmal
+    libc.src.math.dmull
+    libc.src.math.dsqrtl
+    libc.src.math.erff
+    libc.src.math.exp
+    libc.src.math.exp10
+    libc.src.math.exp10f
+    libc.src.math.exp2
+    libc.src.math.exp2f
+    libc.src.math.exp2m1f
+    libc.src.math.expf
+    libc.src.math.expm1
+    libc.src.math.expm1f
+    libc.src.math.fabs
+    libc.src.math.fabsf
+    libc.src.math.fabsl
+    libc.src.math.fadd
+    libc.src.math.faddl
+    libc.src.math.fdim
+    libc.src.math.fdimf
+    libc.src.math.fdiml
+    libc.src.math.fdiv
+    libc.src.math.fdivl
+    libc.src.math.ffma
+    libc.src.math.ffmal
+    libc.src.math.floor
+    libc.src.math.floorf
+    libc.src.math.floorl
+    libc.src.math.fma
+    libc.src.math.fmabf16
+    libc.src.math.fmaf
+    libc.src.math.fmax
+    libc.src.math.fmaxf
+    libc.src.math.fmaximum
+    libc.src.math.fmaximumf
+    libc.src.math.fmaximuml
+    libc.src.math.fmaximum_mag
+    libc.src.math.fmaximum_magf
+    libc.src.math.fmaximum_magl
+    libc.src.math.fmaximum_mag_num
+    libc.src.math.fmaximum_mag_numf
+    libc.src.math.fmaximum_mag_numl
+    libc.src.math.fmaximum_num
+    libc.src.math.fmaximum_numf
+    libc.src.math.fmaximum_numl
+    libc.src.math.fmaxl
+    libc.src.math.fmin
+    libc.src.math.fminf
+    libc.src.math.fminimum
+    libc.src.math.fminimumf
+    libc.src.math.fminimuml
+    libc.src.math.fminimum_mag
+    libc.src.math.fminimum_magf
+    libc.src.math.fminimum_magl
+    libc.src.math.fminimum_mag_num
+    libc.src.math.fminimum_mag_numf
+    libc.src.math.fminimum_mag_numl
+    libc.src.math.fminimum_num
+    libc.src.math.fminimum_numf
+    libc.src.math.fminimum_numl
+    libc.src.math.fminl
+    libc.src.math.fmod
+    libc.src.math.fmodf
+    libc.src.math.fmodl
+    libc.src.math.fmul
+    libc.src.math.fmull
+    libc.src.math.frexp
+    libc.src.math.frexpf
+    libc.src.math.frexpl
+    # FIXME: Broken.
+    # libc.src.math.fromfp
+    # libc.src.math.fromfpf
+    # libc.src.math.fromfpl
+    # libc.src.math.fromfpx
+    # libc.src.math.fromfpxf
+    # libc.src.math.fromfpxl
+    libc.src.math.fsqrt
+    libc.src.math.fsqrtl
+    libc.src.math.fsub
+    libc.src.math.fsubl
+    libc.src.math.getpayload
+    libc.src.math.getpayloadf
+    libc.src.math.getpayloadl
+    libc.src.math.hypot
+    libc.src.math.hypotf
+    libc.src.math.ilogb
+    libc.src.math.ilogbf
+    libc.src.math.ilogbl
+    libc.src.math.isnan
+    libc.src.math.isnanf
+    libc.src.math.isnanl
+    libc.src.math.ldexp
+    libc.src.math.ldexpf
+    libc.src.math.ldexpl
+    libc.src.math.lgamma
+    libc.src.math.lgamma_r
+    libc.src.math.llogb
+    libc.src.math.llogbf
+    libc.src.math.llogbl
+    libc.src.math.llrint
+    libc.src.math.llrintf
+    libc.src.math.llrintl
+    libc.src.math.llround
+    libc.src.math.llroundf
+    libc.src.math.llroundl
+    libc.src.math.log
+    libc.src.math.log10
+    libc.src.math.log10f
+    libc.src.math.log1p
+    libc.src.math.log1pf
+    libc.src.math.log2
+    libc.src.math.log2f
+    libc.src.math.logb
+    libc.src.math.logbf
+    libc.src.math.logbl
+    libc.src.math.logf
+    libc.src.math.lrint
+    libc.src.math.lrintf
+    libc.src.math.lrintl
+    libc.src.math.lround
+    libc.src.math.lroundf
+    libc.src.math.lroundl
+    libc.src.math.modf
+    libc.src.math.modff
+    libc.src.math.modfl
+    libc.src.math.nan
+    libc.src.math.nanf
+    libc.src.math.nanl
+    libc.src.math.nearbyint
+    libc.src.math.nearbyintf
+    libc.src.math.nearbyintl
+    libc.src.math.nextafter
+    libc.src.math.nextafterf
+    libc.src.math.nextafterl
+    libc.src.math.nextdown
+    libc.src.math.nextdownf
+    libc.src.math.nextdownl
+    libc.src.math.nexttoward
+    libc.src.math.nexttowardf
+    libc.src.math.nexttowardl
+    libc.src.math.nextup
+    libc.src.math.nextupf
+    libc.src.math.nextupl
+    libc.src.math.pow
+    libc.src.math.powf
+    libc.src.math.remainder
+    libc.src.math.remainderf
+    libc.src.math.remainderl
+    libc.src.math.remquo
+    libc.src.math.remquof
+    libc.src.math.remquol
+    libc.src.math.rint
+    libc.src.math.rintf
+    libc.src.math.rintl
+    libc.src.math.roundeven
+    libc.src.math.roundevenf
+    libc.src.math.roundevenl
+    libc.src.math.round
+    libc.src.math.roundf
+    libc.src.math.roundl
+    libc.src.math.scalbln
+    libc.src.math.scalblnf
+    libc.src.math.scalblnl
+    libc.src.math.scalbn
+    libc.src.math.scalbnf
+    libc.src.math.scalbnl
+    libc.src.math.setpayload
+    libc.src.math.setpayloadf
+    libc.src.math.setpayloadl
+    libc.src.math.setpayloadsig
+    libc.src.math.setpayloadsigf
+    libc.src.math.setpayloadsigl
+    libc.src.math.sin
+    libc.src.math.sincos
+    libc.src.math.sincosf
+    libc.src.math.sinf
+    libc.src.math.sinhf
+    libc.src.math.sinpif
+    libc.src.math.sqrt
+    libc.src.math.sqrtf
+    libc.src.math.sqrtl
+    libc.src.math.tan
+    libc.src.math.tanf
+    libc.src.math.tanhf
+    libc.src.math.tanpif
+    libc.src.math.tgamma
+    libc.src.math.tgammaf
+    libc.src.math.totalorder
+    libc.src.math.totalorderf
+    libc.src.math.totalorderl
+    libc.src.math.totalordermag
+    libc.src.math.totalordermagf
+    libc.src.math.totalordermagl
+    libc.src.math.trunc
+    libc.src.math.truncf
+    libc.src.math.truncl
+    # FIXME: Broken.
+    # libc.src.math.ufromfp
+    # libc.src.math.ufromfpf
+    # libc.src.math.ufromfpl
+    # libc.src.math.ufromfpx
+    # libc.src.math.ufromfpxf
+    # libc.src.math.ufromfpxl
+)
+
+if(LIBC_TYPES_HAS_FLOAT16)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # math.h C23 _Float16 entrypoints
+    libc.src.math.acosf16
+    libc.src.math.acoshf16
+    libc.src.math.acospif16
+    libc.src.math.asinf16
+    libc.src.math.asinhf16
+    libc.src.math.atanf16
+    libc.src.math.atanhf16
+    libc.src.math.canonicalizef16
+    libc.src.math.ceilf16
+    libc.src.math.copysignf16
+    libc.src.math.cosf16
+    libc.src.math.coshf16
+    libc.src.math.cospif16
+    libc.src.math.exp10f16
+    libc.src.math.exp10m1f16
+    libc.src.math.exp2f16
+    libc.src.math.exp2m1f16
+    libc.src.math.expf16
+    libc.src.math.expm1f16
+    libc.src.math.f16add
+    libc.src.math.f16addf
+    libc.src.math.f16addl
+    libc.src.math.f16div
+    libc.src.math.f16divf
+    libc.src.math.f16divl
+    libc.src.math.f16fma
+    libc.src.math.f16fmaf
+    libc.src.math.f16fmal
+    libc.src.math.f16mul
+    libc.src.math.f16mulf
+    libc.src.math.f16mull
+    libc.src.math.f16sqrt
+    libc.src.math.f16sqrtf
+    libc.src.math.f16sqrtl
+    libc.src.math.f16sub
+    libc.src.math.f16subf
+    libc.src.math.f16subl
+    libc.src.math.fabsf16
+    libc.src.math.fdimf16
+    libc.src.math.floorf16
+    libc.src.math.fmaf16
+    libc.src.math.fmaxf16
+    libc.src.math.fmaximum_mag_numf16
+    libc.src.math.fmaximum_magf16
+    libc.src.math.fmaximum_numf16
+    libc.src.math.fmaximumf16
+    libc.src.math.fminf16
+    libc.src.math.fminimum_mag_numf16
+    libc.src.math.fminimum_magf16
+    libc.src.math.fminimum_numf16
+    libc.src.math.fminimumf16
+    libc.src.math.fmodf16
+    libc.src.math.frexpf16
+    libc.src.math.fromfpf16
+    libc.src.math.fromfpxf16
+    libc.src.math.getpayloadf16
+    libc.src.math.hypotf16
+    libc.src.math.ilogbf16
+    libc.src.math.iscanonicalf16
+    libc.src.math.issignalingf16
+    libc.src.math.ldexpf16
+    libc.src.math.llogbf16
+    libc.src.math.llrintf16
+    libc.src.math.llroundf16
+    libc.src.math.log10f16
+    libc.src.math.log2f16
+    libc.src.math.logbf16
+    libc.src.math.logf16
+    libc.src.math.lrintf16
+    libc.src.math.lroundf16
+    libc.src.math.modff16
+    libc.src.math.nanf16
+    libc.src.math.nearbyintf16
+    libc.src.math.nextafterf16
+    libc.src.math.nextdownf16
+    libc.src.math.nexttowardf16
+    libc.src.math.nextupf16
+    libc.src.math.remainderf16
+    libc.src.math.remquof16
+    libc.src.math.rintf16
+    libc.src.math.roundevenf16
+    libc.src.math.roundf16
+    libc.src.math.scalblnf16
+    libc.src.math.scalbnf16
+    libc.src.math.setpayloadf16
+    libc.src.math.setpayloadsigf16
+    libc.src.math.sinf16
+    libc.src.math.sinhf16
+    libc.src.math.sinpif16
+    libc.src.math.sqrtf16
+    libc.src.math.tanf16
+    libc.src.math.tanhf16
+    libc.src.math.tanpif16
+    libc.src.math.totalorderf16
+    libc.src.math.totalordermagf16
+    libc.src.math.truncf16
+    libc.src.math.ufromfpf16
+    libc.src.math.ufromfpxf16
+  )
+endif()
+
+list(APPEND TARGET_LIBM_ENTRYPOINTS
+  # bfloat16 entrypoints
+  libc.src.math.bf16add
+  libc.src.math.bf16addf
+  libc.src.math.bf16addl
+  libc.src.math.bf16div
+  libc.src.math.bf16divf
+  libc.src.math.bf16divl
+  libc.src.math.bf16fma
+  libc.src.math.bf16fmaf
+  libc.src.math.bf16fmal
+  libc.src.math.bf16mul
+  libc.src.math.bf16mulf
+  libc.src.math.bf16mull
+  libc.src.math.bf16sub
+  libc.src.math.bf16subf
+  libc.src.math.bf16subl
+  libc.src.math.canonicalizebf16
+  libc.src.math.ceilbf16
+  libc.src.math.copysignbf16
+  libc.src.math.fabsbf16
+  libc.src.math.fdimbf16
+  libc.src.math.floorbf16
+  libc.src.math.fmaxbf16
+  libc.src.math.fmaximumbf16
+  libc.src.math.fmaximum_magbf16
+  libc.src.math.fmaximum_mag_numbf16
+  libc.src.math.fmaximum_numbf16
+  libc.src.math.fminbf16
+  libc.src.math.fminimumbf16
+  libc.src.math.fminimum_magbf16
+  libc.src.math.fminimum_mag_numbf16
+  libc.src.math.fminimum_numbf16
+  libc.src.math.fmodbf16
+  libc.src.math.frexpbf16
+  libc.src.math.fromfpbf16
+  libc.src.math.fromfpxbf16
+  libc.src.math.getpayloadbf16
+  libc.src.math.ilogbbf16
+  libc.src.math.iscanonicalbf16
+  libc.src.math.issignalingbf16
+  libc.src.math.ldexpbf16
+  libc.src.math.llogbbf16
+  libc.src.math.llrintbf16
+  libc.src.math.llroundbf16
+  libc.src.math.log_bf16
+  libc.src.math.logbbf16
+  libc.src.math.lrintbf16
+  libc.src.math.lroundbf16
+  libc.src.math.modfbf16
+  libc.src.math.nanbf16
+  libc.src.math.nearbyintbf16
+  libc.src.math.nextafterbf16
+  libc.src.math.nextdownbf16
+  libc.src.math.nexttowardbf16
+  libc.src.math.nextupbf16
+  libc.src.math.remainderbf16
+  libc.src.math.remquobf16
+  libc.src.math.rintbf16
+  libc.src.math.roundbf16
+  libc.src.math.roundevenbf16
+  libc.src.math.scalblnbf16
+  libc.src.math.scalbnbf16
+  libc.src.math.setpayloadbf16
+  libc.src.math.setpayloadsigbf16
+  libc.src.math.sqrtbf16
+  libc.src.math.truncbf16
+  libc.src.math.totalorderbf16
+  libc.src.math.totalordermagbf16
+  libc.src.math.ufromfpbf16
+  libc.src.math.ufromfpxbf16
+)
+
+set(TARGET_LLVMLIBC_ENTRYPOINTS
+  ${TARGET_LIBC_ENTRYPOINTS}
+  ${TARGET_LIBM_ENTRYPOINTS}
+)
diff --git a/libc/config/linux/aarch64/entrypoints.txt b/libc/config/linux/aarch64/entrypoints.txt
index 970c825bbfc96..ff9579c840f92 100644
--- a/libc/config/linux/aarch64/entrypoints.txt
+++ b/libc/config/linux/aarch64/entrypoints.txt
@@ -1,1184 +1,1185 @@
-set(TARGET_LIBC_ENTRYPOINTS
-    # ctype.h entrypoints
-    libc.src.ctype.isalnum
-    libc.src.ctype.isalpha
-    libc.src.ctype.isascii
-    libc.src.ctype.isblank
-    libc.src.ctype.iscntrl
-    libc.src.ctype.isdigit
-    libc.src.ctype.isgraph
-    libc.src.ctype.islower
-    libc.src.ctype.isprint
-    libc.src.ctype.ispunct
-    libc.src.ctype.isspace
-    libc.src.ctype.isupper
-    libc.src.ctype.isxdigit
-    libc.src.ctype.toascii
-    libc.src.ctype.tolower
-    libc.src.ctype.toupper
-
-    # dlfcn.h entrypoints
-    libc.src.dlfcn.dlclose
-    libc.src.dlfcn.dlerror
-    libc.src.dlfcn.dlopen
-    libc.src.dlfcn.dlsym
-
-    # errno.h entrypoints
-    libc.src.errno.errno
-
-    # fcntl.h entrypoints
-    libc.src.fcntl.creat
-    libc.src.fcntl.fcntl
-    libc.src.fcntl.open
-    libc.src.fcntl.openat
-
-    # poll.h entrypoints
-    libc.src.poll.poll
-
-    # sched.h entrypoints
-    libc.src.sched.sched_get_priority_max
-    libc.src.sched.sched_get_priority_min
-    libc.src.sched.sched_getaffinity
-    libc.src.sched.sched_getparam
-    libc.src.sched.sched_getscheduler
-    libc.src.sched.sched_rr_get_interval
-    libc.src.sched.sched_setaffinity
-    libc.src.sched.sched_setparam
-    libc.src.sched.sched_setscheduler
-    libc.src.sched.sched_yield
-
-    # string.h entrypoints
-    libc.src.string.memccpy
-    libc.src.string.memchr
-    libc.src.string.memcmp
-    libc.src.string.memcpy
-    libc.src.string.memmem
-    libc.src.string.memmove
-    libc.src.string.mempcpy
-    libc.src.string.memrchr
-    libc.src.string.memset
-    libc.src.string.memset_explicit
-    libc.src.string.stpcpy
-    libc.src.string.stpncpy
-    libc.src.string.strcasestr
-    libc.src.string.strcat
-    libc.src.string.strchr
-    libc.src.string.strchrnul
-    libc.src.string.strcmp
-    libc.src.string.strcoll
-    libc.src.string.strcpy
-    libc.src.string.strcspn
-    libc.src.string.strdup
-    libc.src.string.strerror
-    libc.src.string.strerror_r
-    libc.src.string.strlcat
-    libc.src.string.strlcpy
-    libc.src.string.strlen
-    libc.src.string.strncat
-    libc.src.string.strncmp
-    libc.src.string.strncpy
-    libc.src.string.strndup
-    libc.src.string.strnlen
-    libc.src.string.strpbrk
-    libc.src.string.strrchr
-    libc.src.string.strsep
-    libc.src.string.strsignal
-    libc.src.string.strspn
-    libc.src.string.strstr
-    libc.src.string.strtok
-    libc.src.string.strtok_r
-    libc.src.string.strxfrm
-
-    # strings.h entrypoints
-    libc.src.strings.bcmp
-    libc.src.strings.bcopy
-    libc.src.strings.bzero
-    libc.src.strings.ffs
-    libc.src.strings.ffsl
-    libc.src.strings.ffsll
-    libc.src.strings.index
-    libc.src.strings.rindex
-    libc.src.strings.strcasecmp
-    libc.src.strings.strncasecmp
-
-    # inttypes.h entrypoints
-    libc.src.inttypes.imaxabs
-    libc.src.inttypes.imaxdiv
-    libc.src.inttypes.strtoimax
-    libc.src.inttypes.strtoumax
-
-    # stdbit.h entrypoints
-    libc.src.stdbit.stdc_bit_ceil_uc
-    libc.src.stdbit.stdc_bit_ceil_ui
-    libc.src.stdbit.stdc_bit_ceil_ul
-    libc.src.stdbit.stdc_bit_ceil_ull
-    libc.src.stdbit.stdc_bit_ceil_us
-    libc.src.stdbit.stdc_bit_floor_uc
-    libc.src.stdbit.stdc_bit_floor_ui
-    libc.src.stdbit.stdc_bit_floor_ul
-    libc.src.stdbit.stdc_bit_floor_ull
-    libc.src.stdbit.stdc_bit_floor_us
-    libc.src.stdbit.stdc_bit_width_uc
-    libc.src.stdbit.stdc_bit_width_ui
-    libc.src.stdbit.stdc_bit_width_ul
-    libc.src.stdbit.stdc_bit_width_ull
-    libc.src.stdbit.stdc_bit_width_us
-    libc.src.stdbit.stdc_count_ones_uc
-    libc.src.stdbit.stdc_count_ones_ui
-    libc.src.stdbit.stdc_count_ones_ul
-    libc.src.stdbit.stdc_count_ones_ull
-    libc.src.stdbit.stdc_count_ones_us
-    libc.src.stdbit.stdc_count_zeros_uc
-    libc.src.stdbit.stdc_count_zeros_ui
-    libc.src.stdbit.stdc_count_zeros_ul
-    libc.src.stdbit.stdc_count_zeros_ull
-    libc.src.stdbit.stdc_count_zeros_us
-    libc.src.stdbit.stdc_first_leading_one_uc
-    libc.src.stdbit.stdc_first_leading_one_ui
-    libc.src.stdbit.stdc_first_leading_one_ul
-    libc.src.stdbit.stdc_first_leading_one_ull
-    libc.src.stdbit.stdc_first_leading_one_us
-    libc.src.stdbit.stdc_first_leading_zero_uc
-    libc.src.stdbit.stdc_first_leading_zero_ui
-    libc.src.stdbit.stdc_first_leading_zero_ul
-    libc.src.stdbit.stdc_first_leading_zero_ull
-    libc.src.stdbit.stdc_first_leading_zero_us
-    libc.src.stdbit.stdc_first_trailing_one_uc
-    libc.src.stdbit.stdc_first_trailing_one_ui
-    libc.src.stdbit.stdc_first_trailing_one_ul
-    libc.src.stdbit.stdc_first_trailing_one_ull
-    libc.src.stdbit.stdc_first_trailing_one_us
-    libc.src.stdbit.stdc_first_trailing_zero_uc
-    libc.src.stdbit.stdc_first_trailing_zero_ui
-    libc.src.stdbit.stdc_first_trailing_zero_ul
-    libc.src.stdbit.stdc_first_trailing_zero_ull
-    libc.src.stdbit.stdc_first_trailing_zero_us
-    libc.src.stdbit.stdc_has_single_bit_uc
-    libc.src.stdbit.stdc_has_single_bit_ui
-    libc.src.stdbit.stdc_has_single_bit_ul
-    libc.src.stdbit.stdc_has_single_bit_ull
-    libc.src.stdbit.stdc_has_single_bit_us
-    libc.src.stdbit.stdc_leading_ones_uc
-    libc.src.stdbit.stdc_leading_ones_ui
-    libc.src.stdbit.stdc_leading_ones_ul
-    libc.src.stdbit.stdc_leading_ones_ull
-    libc.src.stdbit.stdc_leading_ones_us
-    libc.src.stdbit.stdc_leading_zeros_uc
-    libc.src.stdbit.stdc_leading_zeros_ui
-    libc.src.stdbit.stdc_leading_zeros_ul
-    libc.src.stdbit.stdc_leading_zeros_ull
-    libc.src.stdbit.stdc_leading_zeros_us
-    libc.src.stdbit.stdc_trailing_ones_uc
-    libc.src.stdbit.stdc_trailing_ones_ui
-    libc.src.stdbit.stdc_trailing_ones_ul
-    libc.src.stdbit.stdc_trailing_ones_ull
-    libc.src.stdbit.stdc_trailing_ones_us
-    libc.src.stdbit.stdc_trailing_zeros_uc
-    libc.src.stdbit.stdc_trailing_zeros_ui
-    libc.src.stdbit.stdc_trailing_zeros_ul
-    libc.src.stdbit.stdc_trailing_zeros_ull
-    libc.src.stdbit.stdc_trailing_zeros_us
-
-    # stdlib.h entrypoints
-    libc.src.stdlib.abs
-    libc.src.stdlib.atof
-    libc.src.stdlib.atoi
-    libc.src.stdlib.atol
-    libc.src.stdlib.atoll
-    libc.src.stdlib.bsearch
-    libc.src.stdlib.div
-    libc.src.stdlib.labs
-    libc.src.stdlib.ldiv
-    libc.src.stdlib.llabs
-    libc.src.stdlib.lldiv
-    libc.src.stdlib.memalignment
-    libc.src.stdlib.qsort
-    libc.src.stdlib.qsort_r
-    libc.src.stdlib.rand
-    libc.src.stdlib.srand
-    libc.src.stdlib.strfromd
-    libc.src.stdlib.strfromf
-    # TODO: long double support is buggy with clang-11. Re-enable when buildbots are upgraded.
-    # libc.src.stdlib.strfroml
-    libc.src.stdlib.strtod
-    libc.src.stdlib.strtof
-    libc.src.stdlib.strtol
-    libc.src.stdlib.strtold
-    libc.src.stdlib.strtoll
-    libc.src.stdlib.strtoul
-    libc.src.stdlib.strtoull
-
-    # stdlib.h external entrypoints
-    libc.src.stdlib.aligned_alloc
-    libc.src.stdlib.calloc
-    libc.src.stdlib.free
-    libc.src.stdlib.malloc
-    libc.src.stdlib.realloc
-
-    # stdio.h entrypoints
-    libc.src.stdio.fprintf
-    libc.src.stdio.fscanf
-    libc.src.stdio.vfscanf
-    libc.src.stdio.printf
-    libc.src.stdio.remove
-    libc.src.stdio.rename
-    libc.src.stdio.scanf
-    libc.src.stdio.vscanf
-    libc.src.stdio.snprintf
-    libc.src.stdio.sprintf
-    libc.src.stdio.asprintf
-    libc.src.stdio.sscanf
-    libc.src.stdio.vsscanf
-    libc.src.stdio.vfprintf
-    libc.src.stdio.vprintf
-    libc.src.stdio.vsnprintf
-    libc.src.stdio.vsprintf
-    libc.src.stdio.vasprintf
-
-    # sys/epoll.h entrypoints
-    libc.src.sys.epoll.epoll_create
-    libc.src.sys.epoll.epoll_create1
-    libc.src.sys.epoll.epoll_ctl
-    libc.src.sys.epoll.epoll_pwait
-    libc.src.sys.epoll.epoll_wait
-    # TODO: Need to check if pwait2 is available before providing.
-    # https://github.com/llvm/llvm-project/issues/80060
-    # libc.src.sys.epoll.epoll_pwait2
-
-    # sys/ioctl.h entrypoints
-    libc.src.sys.ioctl.ioctl
-
-    # sys/mman.h entrypoints
-    libc.src.sys.mman.madvise
-    libc.src.sys.mman.mincore
-    libc.src.sys.mman.mlock
-    libc.src.sys.mman.mlock2
-    libc.src.sys.mman.mlockall
-    libc.src.sys.mman.mmap
-    libc.src.sys.mman.mremap
-    libc.src.sys.mman.mprotect
-    libc.src.sys.mman.msync
-    libc.src.sys.mman.munlock
-    libc.src.sys.mman.munlockall
-    libc.src.sys.mman.munmap
-    libc.src.sys.mman.remap_file_pages
-    libc.src.sys.mman.posix_madvise
-    libc.src.sys.mman.shm_open
-    libc.src.sys.mman.shm_unlink
-
-    # sys/random.h entrypoints
-    libc.src.sys.random.getrandom
-
-    # sys/resource.h entrypoints
-    libc.src.sys.resource.getrlimit
-    libc.src.sys.resource.setrlimit
-
-    # sys/sendfile entrypoints
-    libc.src.sys.sendfile.sendfile
-
-    # sys/stat.h entrypoints
-    libc.src.sys.stat.chmod
-    libc.src.sys.stat.fchmod
-    libc.src.sys.stat.fchmodat
-    libc.src.sys.stat.fstat
-    libc.src.sys.stat.lstat
-    libc.src.sys.stat.mkdir
-    libc.src.sys.stat.mkdirat
-    libc.src.sys.stat.stat
-
-    # sys/statvfs.h
-    libc.src.sys.statvfs.fstatvfs
-    libc.src.sys.statvfs.statvfs
-
-    # sys/utsname.h entrypoints
-    libc.src.sys.utsname.uname
-
-    # sys/wait.h entrypoints
-    libc.src.sys.wait.wait
-    libc.src.sys.wait.wait4
-    libc.src.sys.wait.waitpid
-
-    # sys/prctl.h entrypoints
-    libc.src.sys.prctl.prctl
-
-    # sys/auxv.h entrypoints
-    libc.src.sys.auxv.getauxval
-
-    # termios.h entrypoints
-    libc.src.termios.cfgetispeed
-    libc.src.termios.cfgetospeed
-    libc.src.termios.cfsetispeed
-    libc.src.termios.cfsetospeed
-    libc.src.termios.tcdrain
-    libc.src.termios.tcflow
-    libc.src.termios.tcflush
-    libc.src.termios.tcgetattr
-    libc.src.termios.tcgetsid
-    libc.src.termios.tcsendbreak
-    libc.src.termios.tcsetattr
-
-    # unistd.h entrypoints
-    libc.src.unistd.access
-    libc.src.unistd.chdir
-    libc.src.unistd.close
-    libc.src.unistd.dup
-    libc.src.unistd.dup2
-    libc.src.unistd.dup3
-    libc.src.unistd.execve
-    libc.src.unistd.faccessat
-    libc.src.unistd.fchdir
-    libc.src.unistd.fchown
-    libc.src.unistd.fpathconf
-    libc.src.unistd.fsync
-    libc.src.unistd.ftruncate
-    libc.src.unistd.getcwd
-    libc.src.unistd.getentropy
-    libc.src.unistd.geteuid
-    libc.src.unistd.gethostname
-    libc.src.unistd.getpagesize
-    libc.src.unistd.getpid
-    libc.src.unistd.getppid
-    libc.src.unistd.getsid
-    libc.src.unistd.gettid
-    libc.src.unistd.getuid
-    libc.src.unistd.isatty
-    libc.src.unistd.link
-    libc.src.unistd.linkat
-    libc.src.unistd.lseek
-    libc.src.unistd.pathconf
-    libc.src.unistd.pipe
-    libc.src.unistd.pipe2
-    libc.src.unistd.pread
-    libc.src.unistd.pwrite
-    libc.src.unistd.read
-    libc.src.unistd.readlink
-    libc.src.unistd.readlinkat
-    libc.src.unistd.rmdir
-    libc.src.unistd.setsid
-    libc.src.unistd.symlink
-    libc.src.unistd.symlinkat
-    libc.src.unistd.sysconf
-    libc.src.unistd.truncate
-    libc.src.unistd.unlink
-    libc.src.unistd.unlinkat
-    libc.src.unistd.write
-
-    # wchar.h entrypoints
-    libc.src.wchar.wcslen
-    libc.src.wchar.wctob
-
-    # wctype.h entrypoints
-    libc.src.wctype.iswalpha
-
-    # sys/uio.h entrypoints
-    libc.src.sys.uio.writev
-    libc.src.sys.uio.readv
-
-    # sys/time.h entrypoints
-    libc.src.sys.time.setitimer
-    libc.src.sys.time.getitimer
-)
-
-if(LLVM_LIBC_INCLUDE_SCUDO)
-  list(APPEND TARGET_LIBC_ENTRYPOINTS
-    # malloc.h external entrypoints
-    libc.src.stdlib.mallopt
-  )
-endif()
-
-set(TARGET_LIBM_ENTRYPOINTS
-    # complex.h entrypoints
-    libc.src.complex.creal
-    libc.src.complex.crealf
-    libc.src.complex.creall
-    libc.src.complex.cimag
-    libc.src.complex.cimagf
-    libc.src.complex.cimagl
-    libc.src.complex.conj
-    libc.src.complex.conjf
-    libc.src.complex.conjl
-    libc.src.complex.cproj
-    libc.src.complex.cprojf
-    libc.src.complex.cprojl
-
-    # fenv.h entrypoints
-    libc.src.fenv.feclearexcept
-    libc.src.fenv.fedisableexcept
-    libc.src.fenv.feenableexcept
-    libc.src.fenv.fegetenv
-    libc.src.fenv.fegetexcept
-    libc.src.fenv.fegetexceptflag
-    libc.src.fenv.fegetround
-    libc.src.fenv.feholdexcept
-    libc.src.fenv.feraiseexcept
-    libc.src.fenv.fesetenv
-    libc.src.fenv.fesetexcept
-    libc.src.fenv.fesetexceptflag
-    libc.src.fenv.fesetround
-    libc.src.fenv.fetestexcept
-    libc.src.fenv.fetestexceptflag
-    libc.src.fenv.feupdateenv
-
-    # math.h entrypoints
-    libc.src.math.acos
-    libc.src.math.acosf
-    libc.src.math.acoshf
-    libc.src.math.asin
-    libc.src.math.asinf
-    libc.src.math.asinhf
-    libc.src.math.atan2
-    libc.src.math.atan2f
-    libc.src.math.atan
-    libc.src.math.atanf
-    libc.src.math.atanhf
-    libc.src.math.canonicalize
-    libc.src.math.canonicalizef
-    libc.src.math.canonicalizel
-    libc.src.math.cbrt
-    libc.src.math.cbrtf
-    libc.src.math.ceil
-    libc.src.math.ceilf
-    libc.src.math.ceill
-    libc.src.math.copysign
-    libc.src.math.copysignf
-    libc.src.math.copysignl
-    libc.src.math.cos
-    libc.src.math.cosf
-    libc.src.math.coshf
-    libc.src.math.cospif
-    libc.src.math.daddl
-    libc.src.math.ddivl
-    libc.src.math.dfmal
-    libc.src.math.dmull
-    libc.src.math.dsqrtl
-    libc.src.math.dsubl
-    libc.src.math.erff
-    libc.src.math.exp
-    libc.src.math.exp10
-    libc.src.math.exp10f
-    libc.src.math.exp2
-    libc.src.math.exp2f
-    libc.src.math.exp2m1f
-    libc.src.math.expf
-    libc.src.math.expm1
-    libc.src.math.expm1f
-    libc.src.math.fabs
-    libc.src.math.fabsf
-    libc.src.math.fabsl
-    libc.src.math.fadd
-    libc.src.math.faddl
-    libc.src.math.fadd
-    libc.src.math.fdim
-    libc.src.math.fdimf
-    libc.src.math.fdiml
-    libc.src.math.floor
-    libc.src.math.floorf
-    libc.src.math.floorl
-    libc.src.math.fma
-    libc.src.math.fmaf
-    libc.src.math.fmax
-    libc.src.math.fmaxf
-    libc.src.math.fmaximum
-    libc.src.math.fmaximum_mag
-    libc.src.math.fmaximum_mag_num
-    libc.src.math.fmaximum_mag_numf
-    libc.src.math.fmaximum_mag_numl
-    libc.src.math.fmaximum_magf
-    libc.src.math.fmaximum_magl
-    libc.src.math.fmaximum_num
-    libc.src.math.fmaximum_numf
-    libc.src.math.fmaximum_numl
-    libc.src.math.fmaximumf
-    libc.src.math.fmaximuml
-    libc.src.math.fmaxl
-    libc.src.math.fmin
-    libc.src.math.fminf
-    libc.src.math.fminimum
-    libc.src.math.fminimum_mag
-    libc.src.math.fminimum_mag_num
-    libc.src.math.fminimum_mag_numf
-    libc.src.math.fminimum_mag_numl
-    libc.src.math.fminimum_magf
-    libc.src.math.fminimum_magl
-    libc.src.math.fminimum_num
-    libc.src.math.fminimum_numf
-    libc.src.math.fminimum_numl
-    libc.src.math.fminimumf
-    libc.src.math.fminimuml
-    libc.src.math.fminl
-    libc.src.math.fmod
-    libc.src.math.fmodf
-    libc.src.math.fmodl
-    libc.src.math.fmul
-    libc.src.math.fmull
-    libc.src.math.frexp
-    libc.src.math.frexpf
-    libc.src.math.frexpl
-    libc.src.math.fromfp
-    libc.src.math.fromfpf
-    libc.src.math.fromfpl
-    libc.src.math.fromfpx
-    libc.src.math.fromfpxf
-    libc.src.math.fromfpxl
-    libc.src.math.fsqrt
-    libc.src.math.fsqrtl
-    libc.src.math.fsub
-    libc.src.math.fsubl
-    libc.src.math.getpayload
-    libc.src.math.getpayloadf
-    libc.src.math.getpayloadl
-    libc.src.math.hypot
-    libc.src.math.hypotf
-    libc.src.math.ilogb
-    libc.src.math.ilogbf
-    libc.src.math.ilogbl
-    libc.src.math.iscanonical
-    libc.src.math.iscanonicalf
-    libc.src.math.iscanonicall
-    libc.src.math.isnan
-    libc.src.math.isnanf
-    libc.src.math.isnanl
-    libc.src.math.issignaling
-    libc.src.math.issignalingf
-    libc.src.math.issignalingl
-    libc.src.math.ldexp
-    libc.src.math.ldexpf
-    libc.src.math.ldexpl
-    libc.src.math.llogb
-    libc.src.math.llogbf
-    libc.src.math.llogbl
-    libc.src.math.llrint
-    libc.src.math.llrintf
-    libc.src.math.llrintl
-    libc.src.math.llround
-    libc.src.math.llroundf
-    libc.src.math.llroundl
-    libc.src.math.log
-    libc.src.math.log10
-    libc.src.math.log10f
-    libc.src.math.log1p
-    libc.src.math.log1pf
-    libc.src.math.log2
-    libc.src.math.log2f
-    libc.src.math.logb
-    libc.src.math.logbf
-    libc.src.math.logbl
-    libc.src.math.logf
-    libc.src.math.lrint
-    libc.src.math.lrintf
-    libc.src.math.lrintl
-    libc.src.math.lround
-    libc.src.math.lroundf
-    libc.src.math.lroundl
-    libc.src.math.modf
-    libc.src.math.modff
-    libc.src.math.modfl
-    libc.src.math.nan
-    libc.src.math.nanf
-    libc.src.math.nanl
-    libc.src.math.nearbyint
-    libc.src.math.nearbyintf
-    libc.src.math.nearbyintl
-    libc.src.math.nextafter
-    libc.src.math.nextafterf
-    libc.src.math.nextafterl
-    libc.src.math.nextdown
-    libc.src.math.nextdownf
-    libc.src.math.nextdownl
-    libc.src.math.nexttoward
-    libc.src.math.nexttowardf
-    libc.src.math.nexttowardl
-    libc.src.math.nextup
-    libc.src.math.nextupf
-    libc.src.math.nextupl
-    libc.src.math.pow
-    libc.src.math.powf
-    libc.src.math.remainder
-    libc.src.math.remainderf
-    libc.src.math.remainderl
-    libc.src.math.remquo
-    libc.src.math.remquof
-    libc.src.math.remquol
-    libc.src.math.rint
-    libc.src.math.rintf
-    libc.src.math.rintl
-    libc.src.math.round
-    libc.src.math.roundeven
-    libc.src.math.roundevenf
-    libc.src.math.roundevenl
-    libc.src.math.roundf
-    libc.src.math.roundl
-    libc.src.math.scalbln
-    libc.src.math.scalblnf
-    libc.src.math.scalblnl
-    libc.src.math.scalbn
-    libc.src.math.scalbnf
-    libc.src.math.scalbnl
-    libc.src.math.setpayload
-    libc.src.math.setpayloadf
-    libc.src.math.setpayloadl
-    libc.src.math.setpayloadsig
-    libc.src.math.setpayloadsigf
-    libc.src.math.setpayloadsigl
-    libc.src.math.sin
-    libc.src.math.sincos
-    libc.src.math.sincosf
-    libc.src.math.sinf
-    libc.src.math.sinhf
-    libc.src.math.sinpif
-    libc.src.math.sqrt
-    libc.src.math.sqrtf
-    libc.src.math.sqrtl
-    libc.src.math.tan
-    libc.src.math.tanf
-    libc.src.math.tanhf
-    libc.src.math.tanpif
-    libc.src.math.totalorder
-    libc.src.math.totalorderf
-    libc.src.math.totalorderl
-    libc.src.math.totalordermag
-    libc.src.math.totalordermagf
-    libc.src.math.totalordermagl
-    libc.src.math.trunc
-    libc.src.math.truncf
-    libc.src.math.truncl
-    libc.src.math.ufromfp
-    libc.src.math.ufromfpf
-    libc.src.math.ufromfpl
-    libc.src.math.ufromfpx
-    libc.src.math.ufromfpxf
-    libc.src.math.ufromfpxl
-)
-
-if(LIBC_TYPES_HAS_CFLOAT16)
-  list(APPEND TARGET_LIBM_ENTRYPOINTS
-    # complex.h C23 _Complex _Float16 entrypoints
-    libc.src.complex.crealf16
-    libc.src.complex.cimagf16
-    libc.src.complex.conjf16
-    libc.src.complex.cprojf16
-  )
-endif()
-
-if(LIBC_TYPES_HAS_FLOAT16)
-  list(APPEND TARGET_LIBM_ENTRYPOINTS
-    # math.h C23 _Float16 entrypoints
-    libc.src.math.acoshf16
-    libc.src.math.asinpif16
-    libc.src.math.canonicalizef16
-    libc.src.math.ceilf16
-    libc.src.math.copysignf16
-    libc.src.math.cospif16
-    libc.src.math.expf16
-    libc.src.math.f16add
-    libc.src.math.f16addf
-    # libc.src.math.f16addl
-    libc.src.math.f16div
-    libc.src.math.f16divf
-    # libc.src.math.f16divl
-    libc.src.math.f16fma
-    libc.src.math.f16fmaf
-    # libc.src.math.f16fmal
-    libc.src.math.f16mul
-    libc.src.math.f16mulf
-    # libc.src.math.f16mull
-    libc.src.math.f16sqrt
-    libc.src.math.f16sqrtf
-    # libc.src.math.f16sqrtl
-    libc.src.math.f16sub
-    libc.src.math.f16subf
-    # libc.src.math.f16subl
-    libc.src.math.fabsf16
-    libc.src.math.fdimf16
-    libc.src.math.fdiv
-    libc.src.math.fdivl
-    libc.src.math.ffma
-    libc.src.math.ffmal
-    libc.src.math.floorf16
-    libc.src.math.fmaf16
-    libc.src.math.fmaxf16
-    libc.src.math.fmaximum_mag_numf16
-    libc.src.math.fmaximum_magf16
-    libc.src.math.fmaximum_numf16
-    libc.src.math.fmaximumf16
-    libc.src.math.fminf16
-    libc.src.math.fminimum_mag_numf16
-    libc.src.math.fminimum_magf16
-    libc.src.math.fminimum_numf16
-    libc.src.math.fminimumf16
-    # libc.src.math.fmodf16
-    libc.src.math.frexpf16
-    libc.src.math.fromfpf16
-    libc.src.math.fromfpxf16
-    libc.src.math.getpayloadf16
-    libc.src.math.ilogbf16
-    libc.src.math.iscanonicalf16
-    libc.src.math.issignalingf16
-    libc.src.math.ldexpf16
-    libc.src.math.llogbf16
-    libc.src.math.llrintf16
-    libc.src.math.llroundf16
-    libc.src.math.logbf16
-    libc.src.math.lrintf16
-    libc.src.math.lroundf16
-    # libc.src.math.modff16
-    libc.src.math.nanf16
-    libc.src.math.nearbyintf16
-    libc.src.math.nextafterf16
-    libc.src.math.nextdownf16
-    # Temporarily disable nexttowardf16 on aarch64 because the conversion
-    # between _Float16 and long double will crash clang-11.  This is fixed in
-    # clang-12 and after: https://godbolt.org/z/8ceT9454c
-    # libc.src.math.nexttowardf16
-    libc.src.math.nextupf16
-    libc.src.math.remainderf16
-    libc.src.math.remquof16
-    libc.src.math.rintf16
-    libc.src.math.roundevenf16
-    libc.src.math.roundf16
-    libc.src.math.rsqrtf
-    libc.src.math.rsqrtf16
-    libc.src.math.scalblnf16
-    libc.src.math.scalbnf16
-    libc.src.math.setpayloadf16
-    libc.src.math.setpayloadsigf16
-    libc.src.math.sinpif16
-    libc.src.math.sqrtf16
-    libc.src.math.totalorderf16
-    libc.src.math.totalordermagf16
-    libc.src.math.truncf16
-    libc.src.math.ufromfpf16
-    libc.src.math.ufromfpxf16
-  )
-
-  # if(LIBC_TYPES_HAS_FLOAT128)
-  #   list(APPEND TARGET_LIBM_ENTRYPOINTS
-  #     # math.h C23 mixed _Float16 and _Float128 entrypoints
-  #     libc.src.math.f16addf128
-  #     libc.src.math.f16divf128
-  #     libc.src.math.f16fmaf128
-  #     libc.src.math.f16mulf128
-  #     libc.src.math.f16sqrtf128
-  #     libc.src.math.f16subf128
-  #   )
-  # endif()
-endif()
-
-if(LIBC_TYPES_HAS_CFLOAT128)
-  list(APPEND TARGET_LIBM_ENTRYPOINTS
-    # complex.h C23 _Complex _Float128 entrypoints
-    libc.src.complex.crealf128
-    libc.src.complex.cimagf128
-    libc.src.complex.conjf128
-    libc.src.complex.cprojf128
-  )
-endif()
-
-if(LIBC_TYPES_HAS_FLOAT128)
-  list(APPEND TARGET_LIBM_ENTRYPOINTS
-    # math.h C23 _Float128 entrypoints
-    libc.src.math.atan2f128
-    libc.src.math.canonicalizef128
-    libc.src.math.ceilf128
-    libc.src.math.copysignf128
-    libc.src.math.daddf128
-    libc.src.math.ddivf128
-    libc.src.math.dfmaf128
-    libc.src.math.dmulf128
-    libc.src.math.dsqrtf128
-    libc.src.math.dsubf128
-    libc.src.math.fabsf128
-    libc.src.math.faddf128
-    libc.src.math.fdimf128
-    libc.src.math.fdivf128
-    libc.src.math.ffmaf128
-    libc.src.math.floorf128
-    libc.src.math.fmaxf128
-    libc.src.math.fmaximum_mag_numf128
-    libc.src.math.fmaximum_magf128
-    libc.src.math.fmaximum_numf128
-    libc.src.math.fmaximumf128
-    libc.src.math.fminf128
-    libc.src.math.fminimum_mag_numf128
-    libc.src.math.fminimum_magf128
-    libc.src.math.fminimum_numf128
-    libc.src.math.fminimumf128
-    libc.src.math.fmodf128
-    libc.src.math.fmulf128
-    libc.src.math.frexpf128
-    libc.src.math.fromfpf128
-    libc.src.math.fromfpxf128
-    libc.src.math.fsqrtf128
-    libc.src.math.fsubf128
-    libc.src.math.getpayloadf128
-    libc.src.math.ilogbf128
-    libc.src.math.iscanonicalf128
-    libc.src.math.issignalingf128
-    libc.src.math.ldexpf128
-    libc.src.math.llogbf128
-    libc.src.math.llrintf128
-    libc.src.math.llroundf128
-    libc.src.math.logbf128
-    libc.src.math.lrintf128
-    libc.src.math.lroundf128
-    libc.src.math.modff128
-    libc.src.math.nanf128
-    libc.src.math.nearbyintf128
-    libc.src.math.nextafterf128
-    libc.src.math.nextdownf128
-    libc.src.math.nextupf128
-    libc.src.math.remainderf128
-    libc.src.math.remquof128
-    libc.src.math.rintf128
-    libc.src.math.roundevenf128
-    libc.src.math.roundf128
-    libc.src.math.scalblnf128
-    libc.src.math.scalbnf128
-    libc.src.math.setpayloadf128
-    libc.src.math.setpayloadsigf128
-    libc.src.math.sqrtf128
-    libc.src.math.totalorderf128
-    libc.src.math.totalordermagf128
-    libc.src.math.truncf128
-    libc.src.math.ufromfpf128
-    libc.src.math.ufromfpxf128
-  )
-endif()
-
-list(APPEND TARGET_LIBM_ENTRYPOINTS
-  # bfloat16 entrypoints
-  libc.src.math.bf16add
-  libc.src.math.bf16addf
-  libc.src.math.bf16addl
-  libc.src.math.bf16div
-  libc.src.math.bf16divf
-  libc.src.math.bf16divl
-  libc.src.math.bf16fma
-  libc.src.math.bf16fmaf
-  libc.src.math.bf16fmal
-  libc.src.math.bf16mul
-  libc.src.math.bf16mulf
-  libc.src.math.bf16mull
-  libc.src.math.bf16sub
-  libc.src.math.bf16subf
-  libc.src.math.bf16subl
-  libc.src.math.canonicalizebf16
-  libc.src.math.ceilbf16
-  libc.src.math.copysignbf16
-  libc.src.math.fabsbf16
-  libc.src.math.fdimbf16
-  libc.src.math.floorbf16
-  libc.src.math.fmaxbf16
-  libc.src.math.fmaximumbf16
-  libc.src.math.fmaximum_magbf16
-  libc.src.math.fmaximum_mag_numbf16
-  libc.src.math.fmaximum_numbf16
-  libc.src.math.fminbf16
-  libc.src.math.fminimumbf16
-  libc.src.math.fminimum_magbf16
-  libc.src.math.fminimum_mag_numbf16
-  libc.src.math.fminimum_numbf16
-  libc.src.math.fmodbf16
-  libc.src.math.frexpbf16
-  libc.src.math.fromfpbf16
-  libc.src.math.fromfpxbf16
-  libc.src.math.getpayloadbf16
-  libc.src.math.ilogbbf16
-  libc.src.math.iscanonicalbf16
-  libc.src.math.issignalingbf16
-  libc.src.math.ldexpbf16
-  libc.src.math.llogbbf16
-  libc.src.math.llrintbf16
-  libc.src.math.llroundbf16
-  libc.src.math.log_bf16
-  libc.src.math.logbbf16
-  libc.src.math.lrintbf16
-  libc.src.math.lroundbf16
-  libc.src.math.modfbf16
-  libc.src.math.nanbf16
-  libc.src.math.nearbyintbf16
-  libc.src.math.nextafterbf16
-  libc.src.math.nextdownbf16
-  libc.src.math.nexttowardbf16
-  libc.src.math.nextupbf16
-  libc.src.math.remainderbf16
-  libc.src.math.remquobf16
-  libc.src.math.rintbf16
-  libc.src.math.roundbf16
-  libc.src.math.roundevenbf16
-  libc.src.math.scalblnbf16
-  libc.src.math.scalbnbf16
-  libc.src.math.setpayloadbf16
-  libc.src.math.setpayloadsigbf16
-  libc.src.math.sqrtbf16
-  libc.src.math.truncbf16
-  libc.src.math.totalorderbf16
-  libc.src.math.totalordermagbf16
-  libc.src.math.ufromfpbf16
-  libc.src.math.ufromfpxbf16
-)
-
-if(LIBC_TYPES_HAS_FLOAT128)
-  list(APPEND TARGET_LIBM_ENTRYPOINTS
-    # math.h C++23 mixed bfloat16 and _Float128 entrypoints
-    libc.src.math.bf16addf128
-    libc.src.math.bf16divf128
-    libc.src.math.bf16fmaf128
-    libc.src.math.bf16mulf128
-    libc.src.math.bf16subf128
-  )
-endif()
-
-if(LLVM_LIBC_FULL_BUILD)
-  list(APPEND TARGET_LIBC_ENTRYPOINTS
-    # assert.h entrypoints
-    libc.src.assert.__assert_fail
-
-    # compiler entrypoints (no corresponding header)
-    libc.src.compiler.__stack_chk_fail
-
-    # dirent.h entrypoints
-    libc.src.dirent.closedir
-    libc.src.dirent.dirfd
-    libc.src.dirent.opendir
-    libc.src.dirent.readdir
-
-    # arpa/inet.h entrypoints
-    libc.src.arpa.inet.htonl
-    libc.src.arpa.inet.htons
-    libc.src.arpa.inet.inet_addr
-    libc.src.arpa.inet.inet_aton
-    libc.src.arpa.inet.ntohl
-    libc.src.arpa.inet.ntohs
-
-    # pthread.h entrypoints
-    libc.src.pthread.pthread_atfork
-    libc.src.pthread.pthread_attr_destroy
-    libc.src.pthread.pthread_attr_getdetachstate
-    libc.src.pthread.pthread_attr_getguardsize
-    libc.src.pthread.pthread_attr_getstack
-    libc.src.pthread.pthread_attr_getstacksize
-    libc.src.pthread.pthread_attr_init
-    libc.src.pthread.pthread_attr_setdetachstate
-    libc.src.pthread.pthread_attr_setguardsize
-    libc.src.pthread.pthread_attr_setstack
-    libc.src.pthread.pthread_attr_setstacksize
-    libc.src.pthread.pthread_condattr_destroy
-    libc.src.pthread.pthread_condattr_getclock
-    libc.src.pthread.pthread_condattr_getpshared
-    libc.src.pthread.pthread_condattr_init
-    libc.src.pthread.pthread_condattr_setclock
-    libc.src.pthread.pthread_condattr_setpshared
-    libc.src.pthread.pthread_create
-    libc.src.pthread.pthread_detach
-    libc.src.pthread.pthread_equal
-    libc.src.pthread.pthread_exit
-    libc.src.pthread.pthread_getname_np
-    libc.src.pthread.pthread_getspecific
-    libc.src.pthread.pthread_join
-    libc.src.pthread.pthread_key_create
-    libc.src.pthread.pthread_key_delete
-    libc.src.pthread.pthread_mutex_destroy
-    libc.src.pthread.pthread_mutex_init
-    libc.src.pthread.pthread_mutex_lock
-    libc.src.pthread.pthread_mutex_unlock
-    libc.src.pthread.pthread_mutexattr_destroy
-    libc.src.pthread.pthread_mutexattr_getpshared
-    libc.src.pthread.pthread_mutexattr_getrobust
-    libc.src.pthread.pthread_mutexattr_gettype
-    libc.src.pthread.pthread_mutexattr_init
-    libc.src.pthread.pthread_mutexattr_setpshared
-    libc.src.pthread.pthread_mutexattr_setrobust
-    libc.src.pthread.pthread_mutexattr_settype
-    libc.src.pthread.pthread_once
-    libc.src.pthread.pthread_rwlock_clockrdlock
-    libc.src.pthread.pthread_rwlock_clockwrlock
-    libc.src.pthread.pthread_rwlock_destroy
-    libc.src.pthread.pthread_rwlock_init
-    libc.src.pthread.pthread_rwlock_rdlock
-    libc.src.pthread.pthread_rwlock_timedrdlock
-    libc.src.pthread.pthread_rwlock_timedwrlock
-    libc.src.pthread.pthread_rwlock_tryrdlock
-    libc.src.pthread.pthread_rwlock_trywrlock
-    libc.src.pthread.pthread_rwlock_unlock
-    libc.src.pthread.pthread_rwlock_wrlock
-    libc.src.pthread.pthread_rwlockattr_destroy
-    libc.src.pthread.pthread_rwlockattr_getkind_np
-    libc.src.pthread.pthread_rwlockattr_getpshared
-    libc.src.pthread.pthread_rwlockattr_init
-    libc.src.pthread.pthread_rwlockattr_setkind_np
-    libc.src.pthread.pthread_rwlockattr_setpshared
-    libc.src.pthread.pthread_spin_destroy
-    libc.src.pthread.pthread_spin_init
-    libc.src.pthread.pthread_spin_lock
-    libc.src.pthread.pthread_spin_trylock
-    libc.src.pthread.pthread_spin_unlock
-    libc.src.pthread.pthread_self
-    libc.src.pthread.pthread_setname_np
-    libc.src.pthread.pthread_setspecific
-
-    # sched.h entrypoints
-    libc.src.sched.__sched_getcpucount
-    libc.src.sched.__sched_setcpuzero
-    libc.src.sched.__sched_setcpuset
-    libc.src.sched.__sched_getcpuisset
-
-    # strings.h entrypoints
-    libc.src.strings.strcasecmp_l
-    libc.src.strings.strncasecmp_l
-
-    # setjmp.h entrypoints
-    libc.src.setjmp.longjmp
-    libc.src.setjmp.setjmp
-    libc.src.setjmp.siglongjmp
-    libc.src.setjmp.sigsetjmp
-
-    # stdio.h entrypoints
-    libc.src.stdio.clearerr
-    libc.src.stdio.clearerr_unlocked
-    libc.src.stdio.fclose
-    libc.src.stdio.fdopen
-    libc.src.stdio.feof
-    libc.src.stdio.feof_unlocked
-    libc.src.stdio.ferror
-    libc.src.stdio.ferror_unlocked
-    libc.src.stdio.fflush
-    libc.src.stdio.fgetc
-    libc.src.stdio.fgetc_unlocked
-    libc.src.stdio.fgets
-    libc.src.stdio.fileno
-    libc.src.stdio.flockfile
-    libc.src.stdio.fopen
-    libc.src.stdio.fopencookie
-    libc.src.stdio.fputc
-    libc.src.stdio.fputs
-    libc.src.stdio.fread
-    libc.src.stdio.fread_unlocked
-    libc.src.stdio.fseek
-    libc.src.stdio.fseeko
-    libc.src.stdio.ftell
-    libc.src.stdio.ftello
-    libc.src.stdio.funlockfile
-    libc.src.stdio.fwrite
-    libc.src.stdio.fwrite_unlocked
-    libc.src.stdio.getc
-    libc.src.stdio.getc_unlocked
-    libc.src.stdio.getchar
-    libc.src.stdio.getchar_unlocked
-    libc.src.stdio.perror
-    libc.src.stdio.putc
-    libc.src.stdio.putchar
-    libc.src.stdio.puts
-    libc.src.stdio.setbuf
-    libc.src.stdio.setvbuf
-    libc.src.stdio.stderr
-    libc.src.stdio.stdin
-    libc.src.stdio.stdout
-    libc.src.stdio.ungetc
-
-    # stdlib.h entrypoints
-    libc.src.stdlib._Exit
-    libc.src.stdlib.abort
-    libc.src.stdlib.at_quick_exit
-    libc.src.stdlib.atexit
-    libc.src.stdlib.exit
-    libc.src.stdlib.getenv
-    libc.src.stdlib.quick_exit
-
-    # signal.h entrypoints
-    libc.src.signal.kill
-    libc.src.signal.raise
-    libc.src.signal.sigaction
-    libc.src.signal.sigaddset
-    libc.src.signal.sigaltstack
-    libc.src.signal.sigdelset
-    libc.src.signal.sigemptyset
-    libc.src.signal.sigfillset
-    libc.src.signal.signal
-    libc.src.signal.sigprocmask
-
-    # spawn.h entrypoints
-    libc.src.spawn.posix_spawn
-    libc.src.spawn.posix_spawn_file_actions_addclose
-    libc.src.spawn.posix_spawn_file_actions_adddup2
-    libc.src.spawn.posix_spawn_file_actions_addopen
-    libc.src.spawn.posix_spawn_file_actions_destroy
-    libc.src.spawn.posix_spawn_file_actions_init
-
-    # search.h entrypoints
-    libc.src.search.hcreate
-    libc.src.search.hcreate_r
-    libc.src.search.hdestroy
-    libc.src.search.hdestroy_r
-    libc.src.search.hsearch
-    libc.src.search.hsearch_r
-    libc.src.search.insque
-    libc.src.search.lfind
-    libc.src.search.lsearch
-    libc.src.search.remque
-
-    # threads.h entrypoints
-    libc.src.threads.call_once
-    libc.src.threads.cnd_broadcast
-    libc.src.threads.cnd_destroy
-    libc.src.threads.cnd_init
-    libc.src.threads.cnd_signal
-    libc.src.threads.cnd_wait
-    libc.src.threads.mtx_destroy
-    libc.src.threads.mtx_init
-    libc.src.threads.mtx_lock
-    libc.src.threads.mtx_unlock
-    libc.src.threads.thrd_create
-    libc.src.threads.thrd_current
-    libc.src.threads.thrd_detach
-    libc.src.threads.thrd_equal
-    libc.src.threads.thrd_exit
-    libc.src.threads.thrd_join
-    libc.src.threads.tss_create
-    libc.src.threads.tss_delete
-    libc.src.threads.tss_get
-    libc.src.threads.tss_set
-
-    # time.h entrypoints
-    libc.src.time.asctime
-    libc.src.time.asctime_r
-    libc.src.time.ctime
-    libc.src.time.ctime_r
-    libc.src.time.clock
-    libc.src.time.clock_gettime
-    libc.src.time.clock_settime
-    libc.src.time.difftime
-    libc.src.time.gettimeofday
-    libc.src.time.gmtime
-    libc.src.time.gmtime_r
-    libc.src.time.mktime
-    libc.src.time.nanosleep
-    libc.src.time.time
-    libc.src.time.timespec_get
-
-    # unistd.h entrypoints
-    libc.src.unistd.__llvm_libc_syscall
-    libc.src.unistd._exit
-    libc.src.unistd.environ
-    libc.src.unistd.execv
-    libc.src.unistd.fork
-    libc.src.unistd.getopt
-    libc.src.unistd.optarg
-    libc.src.unistd.opterr
-    libc.src.unistd.optind
-    libc.src.unistd.optopt
-    libc.src.unistd.swab
-
-    # sys/select.h entrypoints
-    libc.src.sys.select.select
-
-    # sys/socket.h entrypoints
-    libc.src.sys.socket.bind
-    libc.src.sys.socket.socket
-  )
-endif()
-
-set(TARGET_LLVMLIBC_ENTRYPOINTS
-  ${TARGET_LIBC_ENTRYPOINTS}
-  ${TARGET_LIBM_ENTRYPOINTS}
-)
+set(TARGET_LIBC_ENTRYPOINTS
+    # ctype.h entrypoints
+    libc.src.ctype.isalnum
+    libc.src.ctype.isalpha
+    libc.src.ctype.isascii
+    libc.src.ctype.isblank
+    libc.src.ctype.iscntrl
+    libc.src.ctype.isdigit
+    libc.src.ctype.isgraph
+    libc.src.ctype.islower
+    libc.src.ctype.isprint
+    libc.src.ctype.ispunct
+    libc.src.ctype.isspace
+    libc.src.ctype.isupper
+    libc.src.ctype.isxdigit
+    libc.src.ctype.toascii
+    libc.src.ctype.tolower
+    libc.src.ctype.toupper
+
+    # dlfcn.h entrypoints
+    libc.src.dlfcn.dlclose
+    libc.src.dlfcn.dlerror
+    libc.src.dlfcn.dlopen
+    libc.src.dlfcn.dlsym
+
+    # errno.h entrypoints
+    libc.src.errno.errno
+
+    # fcntl.h entrypoints
+    libc.src.fcntl.creat
+    libc.src.fcntl.fcntl
+    libc.src.fcntl.open
+    libc.src.fcntl.openat
+
+    # poll.h entrypoints
+    libc.src.poll.poll
+
+    # sched.h entrypoints
+    libc.src.sched.sched_get_priority_max
+    libc.src.sched.sched_get_priority_min
+    libc.src.sched.sched_getaffinity
+    libc.src.sched.sched_getparam
+    libc.src.sched.sched_getscheduler
+    libc.src.sched.sched_rr_get_interval
+    libc.src.sched.sched_setaffinity
+    libc.src.sched.sched_setparam
+    libc.src.sched.sched_setscheduler
+    libc.src.sched.sched_yield
+
+    # string.h entrypoints
+    libc.src.string.memccpy
+    libc.src.string.memchr
+    libc.src.string.memcmp
+    libc.src.string.memcpy
+    libc.src.string.memmem
+    libc.src.string.memmove
+    libc.src.string.mempcpy
+    libc.src.string.memrchr
+    libc.src.string.memset
+    libc.src.string.memset_explicit
+    libc.src.string.stpcpy
+    libc.src.string.stpncpy
+    libc.src.string.strcasestr
+    libc.src.string.strcat
+    libc.src.string.strchr
+    libc.src.string.strchrnul
+    libc.src.string.strcmp
+    libc.src.string.strcoll
+    libc.src.string.strcpy
+    libc.src.string.strcspn
+    libc.src.string.strdup
+    libc.src.string.strerror
+    libc.src.string.strerror_r
+    libc.src.string.strlcat
+    libc.src.string.strlcpy
+    libc.src.string.strlen
+    libc.src.string.strncat
+    libc.src.string.strncmp
+    libc.src.string.strncpy
+    libc.src.string.strndup
+    libc.src.string.strnlen
+    libc.src.string.strpbrk
+    libc.src.string.strrchr
+    libc.src.string.strsep
+    libc.src.string.strsignal
+    libc.src.string.strspn
+    libc.src.string.strstr
+    libc.src.string.strtok
+    libc.src.string.strtok_r
+    libc.src.string.strxfrm
+
+    # strings.h entrypoints
+    libc.src.strings.bcmp
+    libc.src.strings.bcopy
+    libc.src.strings.bzero
+    libc.src.strings.ffs
+    libc.src.strings.ffsl
+    libc.src.strings.ffsll
+    libc.src.strings.index
+    libc.src.strings.rindex
+    libc.src.strings.strcasecmp
+    libc.src.strings.strncasecmp
+
+    # inttypes.h entrypoints
+    libc.src.inttypes.imaxabs
+    libc.src.inttypes.imaxdiv
+    libc.src.inttypes.strtoimax
+    libc.src.inttypes.strtoumax
+
+    # stdbit.h entrypoints
+    libc.src.stdbit.stdc_bit_ceil_uc
+    libc.src.stdbit.stdc_bit_ceil_ui
+    libc.src.stdbit.stdc_bit_ceil_ul
+    libc.src.stdbit.stdc_bit_ceil_ull
+    libc.src.stdbit.stdc_bit_ceil_us
+    libc.src.stdbit.stdc_bit_floor_uc
+    libc.src.stdbit.stdc_bit_floor_ui
+    libc.src.stdbit.stdc_bit_floor_ul
+    libc.src.stdbit.stdc_bit_floor_ull
+    libc.src.stdbit.stdc_bit_floor_us
+    libc.src.stdbit.stdc_bit_width_uc
+    libc.src.stdbit.stdc_bit_width_ui
+    libc.src.stdbit.stdc_bit_width_ul
+    libc.src.stdbit.stdc_bit_width_ull
+    libc.src.stdbit.stdc_bit_width_us
+    libc.src.stdbit.stdc_count_ones_uc
+    libc.src.stdbit.stdc_count_ones_ui
+    libc.src.stdbit.stdc_count_ones_ul
+    libc.src.stdbit.stdc_count_ones_ull
+    libc.src.stdbit.stdc_count_ones_us
+    libc.src.stdbit.stdc_count_zeros_uc
+    libc.src.stdbit.stdc_count_zeros_ui
+    libc.src.stdbit.stdc_count_zeros_ul
+    libc.src.stdbit.stdc_count_zeros_ull
+    libc.src.stdbit.stdc_count_zeros_us
+    libc.src.stdbit.stdc_first_leading_one_uc
+    libc.src.stdbit.stdc_first_leading_one_ui
+    libc.src.stdbit.stdc_first_leading_one_ul
+    libc.src.stdbit.stdc_first_leading_one_ull
+    libc.src.stdbit.stdc_first_leading_one_us
+    libc.src.stdbit.stdc_first_leading_zero_uc
+    libc.src.stdbit.stdc_first_leading_zero_ui
+    libc.src.stdbit.stdc_first_leading_zero_ul
+    libc.src.stdbit.stdc_first_leading_zero_ull
+    libc.src.stdbit.stdc_first_leading_zero_us
+    libc.src.stdbit.stdc_first_trailing_one_uc
+    libc.src.stdbit.stdc_first_trailing_one_ui
+    libc.src.stdbit.stdc_first_trailing_one_ul
+    libc.src.stdbit.stdc_first_trailing_one_ull
+    libc.src.stdbit.stdc_first_trailing_one_us
+    libc.src.stdbit.stdc_first_trailing_zero_uc
+    libc.src.stdbit.stdc_first_trailing_zero_ui
+    libc.src.stdbit.stdc_first_trailing_zero_ul
+    libc.src.stdbit.stdc_first_trailing_zero_ull
+    libc.src.stdbit.stdc_first_trailing_zero_us
+    libc.src.stdbit.stdc_has_single_bit_uc
+    libc.src.stdbit.stdc_has_single_bit_ui
+    libc.src.stdbit.stdc_has_single_bit_ul
+    libc.src.stdbit.stdc_has_single_bit_ull
+    libc.src.stdbit.stdc_has_single_bit_us
+    libc.src.stdbit.stdc_leading_ones_uc
+    libc.src.stdbit.stdc_leading_ones_ui
+    libc.src.stdbit.stdc_leading_ones_ul
+    libc.src.stdbit.stdc_leading_ones_ull
+    libc.src.stdbit.stdc_leading_ones_us
+    libc.src.stdbit.stdc_leading_zeros_uc
+    libc.src.stdbit.stdc_leading_zeros_ui
+    libc.src.stdbit.stdc_leading_zeros_ul
+    libc.src.stdbit.stdc_leading_zeros_ull
+    libc.src.stdbit.stdc_leading_zeros_us
+    libc.src.stdbit.stdc_trailing_ones_uc
+    libc.src.stdbit.stdc_trailing_ones_ui
+    libc.src.stdbit.stdc_trailing_ones_ul
+    libc.src.stdbit.stdc_trailing_ones_ull
+    libc.src.stdbit.stdc_trailing_ones_us
+    libc.src.stdbit.stdc_trailing_zeros_uc
+    libc.src.stdbit.stdc_trailing_zeros_ui
+    libc.src.stdbit.stdc_trailing_zeros_ul
+    libc.src.stdbit.stdc_trailing_zeros_ull
+    libc.src.stdbit.stdc_trailing_zeros_us
+
+    # stdlib.h entrypoints
+    libc.src.stdlib.abs
+    libc.src.stdlib.atof
+    libc.src.stdlib.atoi
+    libc.src.stdlib.atol
+    libc.src.stdlib.atoll
+    libc.src.stdlib.bsearch
+    libc.src.stdlib.div
+    libc.src.stdlib.labs
+    libc.src.stdlib.ldiv
+    libc.src.stdlib.llabs
+    libc.src.stdlib.lldiv
+    libc.src.stdlib.memalignment
+    libc.src.stdlib.qsort
+    libc.src.stdlib.qsort_r
+    libc.src.stdlib.rand
+    libc.src.stdlib.srand
+    libc.src.stdlib.strfromd
+    libc.src.stdlib.strfromf
+    # TODO: long double support is buggy with clang-11. Re-enable when buildbots are upgraded.
+    # libc.src.stdlib.strfroml
+    libc.src.stdlib.strtod
+    libc.src.stdlib.strtof
+    libc.src.stdlib.strtol
+    libc.src.stdlib.strtold
+    libc.src.stdlib.strtoll
+    libc.src.stdlib.strtoul
+    libc.src.stdlib.strtoull
+
+    # stdlib.h external entrypoints
+    libc.src.stdlib.aligned_alloc
+    libc.src.stdlib.calloc
+    libc.src.stdlib.free
+    libc.src.stdlib.malloc
+    libc.src.stdlib.realloc
+
+    # stdio.h entrypoints
+    libc.src.stdio.fprintf
+    libc.src.stdio.fscanf
+    libc.src.stdio.vfscanf
+    libc.src.stdio.printf
+    libc.src.stdio.remove
+    libc.src.stdio.rename
+    libc.src.stdio.scanf
+    libc.src.stdio.vscanf
+    libc.src.stdio.snprintf
+    libc.src.stdio.sprintf
+    libc.src.stdio.asprintf
+    libc.src.stdio.sscanf
+    libc.src.stdio.vsscanf
+    libc.src.stdio.vfprintf
+    libc.src.stdio.vprintf
+    libc.src.stdio.vsnprintf
+    libc.src.stdio.vsprintf
+    libc.src.stdio.vasprintf
+
+    # sys/epoll.h entrypoints
+    libc.src.sys.epoll.epoll_create
+    libc.src.sys.epoll.epoll_create1
+    libc.src.sys.epoll.epoll_ctl
+    libc.src.sys.epoll.epoll_pwait
+    libc.src.sys.epoll.epoll_wait
+    # TODO: Need to check if pwait2 is available before providing.
+    # https://github.com/llvm/llvm-project/issues/80060
+    # libc.src.sys.epoll.epoll_pwait2
+
+    # sys/ioctl.h entrypoints
+    libc.src.sys.ioctl.ioctl
+
+    # sys/mman.h entrypoints
+    libc.src.sys.mman.madvise
+    libc.src.sys.mman.mincore
+    libc.src.sys.mman.mlock
+    libc.src.sys.mman.mlock2
+    libc.src.sys.mman.mlockall
+    libc.src.sys.mman.mmap
+    libc.src.sys.mman.mremap
+    libc.src.sys.mman.mprotect
+    libc.src.sys.mman.msync
+    libc.src.sys.mman.munlock
+    libc.src.sys.mman.munlockall
+    libc.src.sys.mman.munmap
+    libc.src.sys.mman.remap_file_pages
+    libc.src.sys.mman.posix_madvise
+    libc.src.sys.mman.shm_open
+    libc.src.sys.mman.shm_unlink
+
+    # sys/random.h entrypoints
+    libc.src.sys.random.getrandom
+
+    # sys/resource.h entrypoints
+    libc.src.sys.resource.getrlimit
+    libc.src.sys.resource.setrlimit
+
+    # sys/sendfile entrypoints
+    libc.src.sys.sendfile.sendfile
+
+    # sys/stat.h entrypoints
+    libc.src.sys.stat.chmod
+    libc.src.sys.stat.fchmod
+    libc.src.sys.stat.fchmodat
+    libc.src.sys.stat.fstat
+    libc.src.sys.stat.lstat
+    libc.src.sys.stat.mkdir
+    libc.src.sys.stat.mkdirat
+    libc.src.sys.stat.stat
+
+    # sys/statvfs.h
+    libc.src.sys.statvfs.fstatvfs
+    libc.src.sys.statvfs.statvfs
+
+    # sys/utsname.h entrypoints
+    libc.src.sys.utsname.uname
+
+    # sys/wait.h entrypoints
+    libc.src.sys.wait.wait
+    libc.src.sys.wait.wait4
+    libc.src.sys.wait.waitpid
+
+    # sys/prctl.h entrypoints
+    libc.src.sys.prctl.prctl
+
+    # sys/auxv.h entrypoints
+    libc.src.sys.auxv.getauxval
+
+    # termios.h entrypoints
+    libc.src.termios.cfgetispeed
+    libc.src.termios.cfgetospeed
+    libc.src.termios.cfsetispeed
+    libc.src.termios.cfsetospeed
+    libc.src.termios.tcdrain
+    libc.src.termios.tcflow
+    libc.src.termios.tcflush
+    libc.src.termios.tcgetattr
+    libc.src.termios.tcgetsid
+    libc.src.termios.tcsendbreak
+    libc.src.termios.tcsetattr
+
+    # unistd.h entrypoints
+    libc.src.unistd.access
+    libc.src.unistd.chdir
+    libc.src.unistd.close
+    libc.src.unistd.dup
+    libc.src.unistd.dup2
+    libc.src.unistd.dup3
+    libc.src.unistd.execve
+    libc.src.unistd.faccessat
+    libc.src.unistd.fchdir
+    libc.src.unistd.fchown
+    libc.src.unistd.fpathconf
+    libc.src.unistd.fsync
+    libc.src.unistd.ftruncate
+    libc.src.unistd.getcwd
+    libc.src.unistd.getentropy
+    libc.src.unistd.geteuid
+    libc.src.unistd.gethostname
+    libc.src.unistd.getpagesize
+    libc.src.unistd.getpid
+    libc.src.unistd.getppid
+    libc.src.unistd.getsid
+    libc.src.unistd.gettid
+    libc.src.unistd.getuid
+    libc.src.unistd.isatty
+    libc.src.unistd.link
+    libc.src.unistd.linkat
+    libc.src.unistd.lseek
+    libc.src.unistd.pathconf
+    libc.src.unistd.pipe
+    libc.src.unistd.pipe2
+    libc.src.unistd.pread
+    libc.src.unistd.pwrite
+    libc.src.unistd.read
+    libc.src.unistd.readlink
+    libc.src.unistd.readlinkat
+    libc.src.unistd.rmdir
+    libc.src.unistd.setsid
+    libc.src.unistd.symlink
+    libc.src.unistd.symlinkat
+    libc.src.unistd.sysconf
+    libc.src.unistd.truncate
+    libc.src.unistd.unlink
+    libc.src.unistd.unlinkat
+    libc.src.unistd.write
+
+    # wchar.h entrypoints
+    libc.src.wchar.wcslen
+    libc.src.wchar.wctob
+
+    # wctype.h entrypoints
+    libc.src.wctype.iswalpha
+
+    # sys/uio.h entrypoints
+    libc.src.sys.uio.writev
+    libc.src.sys.uio.readv
+
+    # sys/time.h entrypoints
+    libc.src.sys.time.setitimer
+    libc.src.sys.time.getitimer
+)
+
+if(LLVM_LIBC_INCLUDE_SCUDO)
+  list(APPEND TARGET_LIBC_ENTRYPOINTS
+    # malloc.h external entrypoints
+    libc.src.stdlib.mallopt
+  )
+endif()
+
+set(TARGET_LIBM_ENTRYPOINTS
+    # complex.h entrypoints
+    libc.src.complex.creal
+    libc.src.complex.crealf
+    libc.src.complex.creall
+    libc.src.complex.cimag
+    libc.src.complex.cimagf
+    libc.src.complex.cimagl
+    libc.src.complex.conj
+    libc.src.complex.conjf
+    libc.src.complex.conjl
+    libc.src.complex.cproj
+    libc.src.complex.cprojf
+    libc.src.complex.cprojl
+
+    # fenv.h entrypoints
+    libc.src.fenv.feclearexcept
+    libc.src.fenv.fedisableexcept
+    libc.src.fenv.feenableexcept
+    libc.src.fenv.fegetenv
+    libc.src.fenv.fegetexcept
+    libc.src.fenv.fegetexceptflag
+    libc.src.fenv.fegetround
+    libc.src.fenv.feholdexcept
+    libc.src.fenv.feraiseexcept
+    libc.src.fenv.fesetenv
+    libc.src.fenv.fesetexcept
+    libc.src.fenv.fesetexceptflag
+    libc.src.fenv.fesetround
+    libc.src.fenv.fetestexcept
+    libc.src.fenv.fetestexceptflag
+    libc.src.fenv.feupdateenv
+
+    # math.h entrypoints
+    libc.src.math.acos
+    libc.src.math.acosf
+    libc.src.math.acoshf
+    libc.src.math.asin
+    libc.src.math.asinf
+    libc.src.math.asinhf
+    libc.src.math.atan2
+    libc.src.math.atan2f
+    libc.src.math.atan
+    libc.src.math.atanf
+    libc.src.math.atanhf
+    libc.src.math.canonicalize
+    libc.src.math.canonicalizef
+    libc.src.math.canonicalizel
+    libc.src.math.cbrt
+    libc.src.math.cbrtf
+    libc.src.math.ceil
+    libc.src.math.ceilf
+    libc.src.math.ceill
+    libc.src.math.copysign
+    libc.src.math.copysignf
+    libc.src.math.copysignl
+    libc.src.math.cos
+    libc.src.math.cosf
+    libc.src.math.coshf
+    libc.src.math.cospif
+    libc.src.math.daddl
+    libc.src.math.ddivl
+    libc.src.math.dfmal
+    libc.src.math.dmull
+    libc.src.math.dsqrtl
+    libc.src.math.dsubl
+    libc.src.math.erff
+    libc.src.math.exp
+    libc.src.math.exp10
+    libc.src.math.exp10f
+    libc.src.math.exp2
+    libc.src.math.exp2f
+    libc.src.math.exp2m1f
+    libc.src.math.expf
+    libc.src.math.expm1
+    libc.src.math.expm1f
+    libc.src.math.fabs
+    libc.src.math.fabsf
+    libc.src.math.fabsl
+    libc.src.math.fadd
+    libc.src.math.faddl
+    libc.src.math.fadd
+    libc.src.math.fdim
+    libc.src.math.fdimf
+    libc.src.math.fdiml
+    libc.src.math.floor
+    libc.src.math.floorf
+    libc.src.math.floorl
+    libc.src.math.fma
+    libc.src.math.fmabf16
+    libc.src.math.fmaf
+    libc.src.math.fmax
+    libc.src.math.fmaxf
+    libc.src.math.fmaximum
+    libc.src.math.fmaximum_mag
+    libc.src.math.fmaximum_mag_num
+    libc.src.math.fmaximum_mag_numf
+    libc.src.math.fmaximum_mag_numl
+    libc.src.math.fmaximum_magf
+    libc.src.math.fmaximum_magl
+    libc.src.math.fmaximum_num
+    libc.src.math.fmaximum_numf
+    libc.src.math.fmaximum_numl
+    libc.src.math.fmaximumf
+    libc.src.math.fmaximuml
+    libc.src.math.fmaxl
+    libc.src.math.fmin
+    libc.src.math.fminf
+    libc.src.math.fminimum
+    libc.src.math.fminimum_mag
+    libc.src.math.fminimum_mag_num
+    libc.src.math.fminimum_mag_numf
+    libc.src.math.fminimum_mag_numl
+    libc.src.math.fminimum_magf
+    libc.src.math.fminimum_magl
+    libc.src.math.fminimum_num
+    libc.src.math.fminimum_numf
+    libc.src.math.fminimum_numl
+    libc.src.math.fminimumf
+    libc.src.math.fminimuml
+    libc.src.math.fminl
+    libc.src.math.fmod
+    libc.src.math.fmodf
+    libc.src.math.fmodl
+    libc.src.math.fmul
+    libc.src.math.fmull
+    libc.src.math.frexp
+    libc.src.math.frexpf
+    libc.src.math.frexpl
+    libc.src.math.fromfp
+    libc.src.math.fromfpf
+    libc.src.math.fromfpl
+    libc.src.math.fromfpx
+    libc.src.math.fromfpxf
+    libc.src.math.fromfpxl
+    libc.src.math.fsqrt
+    libc.src.math.fsqrtl
+    libc.src.math.fsub
+    libc.src.math.fsubl
+    libc.src.math.getpayload
+    libc.src.math.getpayloadf
+    libc.src.math.getpayloadl
+    libc.src.math.hypot
+    libc.src.math.hypotf
+    libc.src.math.ilogb
+    libc.src.math.ilogbf
+    libc.src.math.ilogbl
+    libc.src.math.iscanonical
+    libc.src.math.iscanonicalf
+    libc.src.math.iscanonicall
+    libc.src.math.isnan
+    libc.src.math.isnanf
+    libc.src.math.isnanl
+    libc.src.math.issignaling
+    libc.src.math.issignalingf
+    libc.src.math.issignalingl
+    libc.src.math.ldexp
+    libc.src.math.ldexpf
+    libc.src.math.ldexpl
+    libc.src.math.llogb
+    libc.src.math.llogbf
+    libc.src.math.llogbl
+    libc.src.math.llrint
+    libc.src.math.llrintf
+    libc.src.math.llrintl
+    libc.src.math.llround
+    libc.src.math.llroundf
+    libc.src.math.llroundl
+    libc.src.math.log
+    libc.src.math.log10
+    libc.src.math.log10f
+    libc.src.math.log1p
+    libc.src.math.log1pf
+    libc.src.math.log2
+    libc.src.math.log2f
+    libc.src.math.logb
+    libc.src.math.logbf
+    libc.src.math.logbl
+    libc.src.math.logf
+    libc.src.math.lrint
+    libc.src.math.lrintf
+    libc.src.math.lrintl
+    libc.src.math.lround
+    libc.src.math.lroundf
+    libc.src.math.lroundl
+    libc.src.math.modf
+    libc.src.math.modff
+    libc.src.math.modfl
+    libc.src.math.nan
+    libc.src.math.nanf
+    libc.src.math.nanl
+    libc.src.math.nearbyint
+    libc.src.math.nearbyintf
+    libc.src.math.nearbyintl
+    libc.src.math.nextafter
+    libc.src.math.nextafterf
+    libc.src.math.nextafterl
+    libc.src.math.nextdown
+    libc.src.math.nextdownf
+    libc.src.math.nextdownl
+    libc.src.math.nexttoward
+    libc.src.math.nexttowardf
+    libc.src.math.nexttowardl
+    libc.src.math.nextup
+    libc.src.math.nextupf
+    libc.src.math.nextupl
+    libc.src.math.pow
+    libc.src.math.powf
+    libc.src.math.remainder
+    libc.src.math.remainderf
+    libc.src.math.remainderl
+    libc.src.math.remquo
+    libc.src.math.remquof
+    libc.src.math.remquol
+    libc.src.math.rint
+    libc.src.math.rintf
+    libc.src.math.rintl
+    libc.src.math.round
+    libc.src.math.roundeven
+    libc.src.math.roundevenf
+    libc.src.math.roundevenl
+    libc.src.math.roundf
+    libc.src.math.roundl
+    libc.src.math.scalbln
+    libc.src.math.scalblnf
+    libc.src.math.scalblnl
+    libc.src.math.scalbn
+    libc.src.math.scalbnf
+    libc.src.math.scalbnl
+    libc.src.math.setpayload
+    libc.src.math.setpayloadf
+    libc.src.math.setpayloadl
+    libc.src.math.setpayloadsig
+    libc.src.math.setpayloadsigf
+    libc.src.math.setpayloadsigl
+    libc.src.math.sin
+    libc.src.math.sincos
+    libc.src.math.sincosf
+    libc.src.math.sinf
+    libc.src.math.sinhf
+    libc.src.math.sinpif
+    libc.src.math.sqrt
+    libc.src.math.sqrtf
+    libc.src.math.sqrtl
+    libc.src.math.tan
+    libc.src.math.tanf
+    libc.src.math.tanhf
+    libc.src.math.tanpif
+    libc.src.math.totalorder
+    libc.src.math.totalorderf
+    libc.src.math.totalorderl
+    libc.src.math.totalordermag
+    libc.src.math.totalordermagf
+    libc.src.math.totalordermagl
+    libc.src.math.trunc
+    libc.src.math.truncf
+    libc.src.math.truncl
+    libc.src.math.ufromfp
+    libc.src.math.ufromfpf
+    libc.src.math.ufromfpl
+    libc.src.math.ufromfpx
+    libc.src.math.ufromfpxf
+    libc.src.math.ufromfpxl
+)
+
+if(LIBC_TYPES_HAS_CFLOAT16)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # complex.h C23 _Complex _Float16 entrypoints
+    libc.src.complex.crealf16
+    libc.src.complex.cimagf16
+    libc.src.complex.conjf16
+    libc.src.complex.cprojf16
+  )
+endif()
+
+if(LIBC_TYPES_HAS_FLOAT16)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # math.h C23 _Float16 entrypoints
+    libc.src.math.acoshf16
+    libc.src.math.asinpif16
+    libc.src.math.canonicalizef16
+    libc.src.math.ceilf16
+    libc.src.math.copysignf16
+    libc.src.math.cospif16
+    libc.src.math.expf16
+    libc.src.math.f16add
+    libc.src.math.f16addf
+    # libc.src.math.f16addl
+    libc.src.math.f16div
+    libc.src.math.f16divf
+    # libc.src.math.f16divl
+    libc.src.math.f16fma
+    libc.src.math.f16fmaf
+    # libc.src.math.f16fmal
+    libc.src.math.f16mul
+    libc.src.math.f16mulf
+    # libc.src.math.f16mull
+    libc.src.math.f16sqrt
+    libc.src.math.f16sqrtf
+    # libc.src.math.f16sqrtl
+    libc.src.math.f16sub
+    libc.src.math.f16subf
+    # libc.src.math.f16subl
+    libc.src.math.fabsf16
+    libc.src.math.fdimf16
+    libc.src.math.fdiv
+    libc.src.math.fdivl
+    libc.src.math.ffma
+    libc.src.math.ffmal
+    libc.src.math.floorf16
+    libc.src.math.fmaf16
+    libc.src.math.fmaxf16
+    libc.src.math.fmaximum_mag_numf16
+    libc.src.math.fmaximum_magf16
+    libc.src.math.fmaximum_numf16
+    libc.src.math.fmaximumf16
+    libc.src.math.fminf16
+    libc.src.math.fminimum_mag_numf16
+    libc.src.math.fminimum_magf16
+    libc.src.math.fminimum_numf16
+    libc.src.math.fminimumf16
+    # libc.src.math.fmodf16
+    libc.src.math.frexpf16
+    libc.src.math.fromfpf16
+    libc.src.math.fromfpxf16
+    libc.src.math.getpayloadf16
+    libc.src.math.ilogbf16
+    libc.src.math.iscanonicalf16
+    libc.src.math.issignalingf16
+    libc.src.math.ldexpf16
+    libc.src.math.llogbf16
+    libc.src.math.llrintf16
+    libc.src.math.llroundf16
+    libc.src.math.logbf16
+    libc.src.math.lrintf16
+    libc.src.math.lroundf16
+    # libc.src.math.modff16
+    libc.src.math.nanf16
+    libc.src.math.nearbyintf16
+    libc.src.math.nextafterf16
+    libc.src.math.nextdownf16
+    # Temporarily disable nexttowardf16 on aarch64 because the conversion
+    # between _Float16 and long double will crash clang-11.  This is fixed in
+    # clang-12 and after: https://godbolt.org/z/8ceT9454c
+    # libc.src.math.nexttowardf16
+    libc.src.math.nextupf16
+    libc.src.math.remainderf16
+    libc.src.math.remquof16
+    libc.src.math.rintf16
+    libc.src.math.roundevenf16
+    libc.src.math.roundf16
+    libc.src.math.rsqrtf
+    libc.src.math.rsqrtf16
+    libc.src.math.scalblnf16
+    libc.src.math.scalbnf16
+    libc.src.math.setpayloadf16
+    libc.src.math.setpayloadsigf16
+    libc.src.math.sinpif16
+    libc.src.math.sqrtf16
+    libc.src.math.totalorderf16
+    libc.src.math.totalordermagf16
+    libc.src.math.truncf16
+    libc.src.math.ufromfpf16
+    libc.src.math.ufromfpxf16
+  )
+
+  # if(LIBC_TYPES_HAS_FLOAT128)
+  #   list(APPEND TARGET_LIBM_ENTRYPOINTS
+  #     # math.h C23 mixed _Float16 and _Float128 entrypoints
+  #     libc.src.math.f16addf128
+  #     libc.src.math.f16divf128
+  #     libc.src.math.f16fmaf128
+  #     libc.src.math.f16mulf128
+  #     libc.src.math.f16sqrtf128
+  #     libc.src.math.f16subf128
+  #   )
+  # endif()
+endif()
+
+if(LIBC_TYPES_HAS_CFLOAT128)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # complex.h C23 _Complex _Float128 entrypoints
+    libc.src.complex.crealf128
+    libc.src.complex.cimagf128
+    libc.src.complex.conjf128
+    libc.src.complex.cprojf128
+  )
+endif()
+
+if(LIBC_TYPES_HAS_FLOAT128)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # math.h C23 _Float128 entrypoints
+    libc.src.math.atan2f128
+    libc.src.math.canonicalizef128
+    libc.src.math.ceilf128
+    libc.src.math.copysignf128
+    libc.src.math.daddf128
+    libc.src.math.ddivf128
+    libc.src.math.dfmaf128
+    libc.src.math.dmulf128
+    libc.src.math.dsqrtf128
+    libc.src.math.dsubf128
+    libc.src.math.fabsf128
+    libc.src.math.faddf128
+    libc.src.math.fdimf128
+    libc.src.math.fdivf128
+    libc.src.math.ffmaf128
+    libc.src.math.floorf128
+    libc.src.math.fmaxf128
+    libc.src.math.fmaximum_mag_numf128
+    libc.src.math.fmaximum_magf128
+    libc.src.math.fmaximum_numf128
+    libc.src.math.fmaximumf128
+    libc.src.math.fminf128
+    libc.src.math.fminimum_mag_numf128
+    libc.src.math.fminimum_magf128
+    libc.src.math.fminimum_numf128
+    libc.src.math.fminimumf128
+    libc.src.math.fmodf128
+    libc.src.math.fmulf128
+    libc.src.math.frexpf128
+    libc.src.math.fromfpf128
+    libc.src.math.fromfpxf128
+    libc.src.math.fsqrtf128
+    libc.src.math.fsubf128
+    libc.src.math.getpayloadf128
+    libc.src.math.ilogbf128
+    libc.src.math.iscanonicalf128
+    libc.src.math.issignalingf128
+    libc.src.math.ldexpf128
+    libc.src.math.llogbf128
+    libc.src.math.llrintf128
+    libc.src.math.llroundf128
+    libc.src.math.logbf128
+    libc.src.math.lrintf128
+    libc.src.math.lroundf128
+    libc.src.math.modff128
+    libc.src.math.nanf128
+    libc.src.math.nearbyintf128
+    libc.src.math.nextafterf128
+    libc.src.math.nextdownf128
+    libc.src.math.nextupf128
+    libc.src.math.remainderf128
+    libc.src.math.remquof128
+    libc.src.math.rintf128
+    libc.src.math.roundevenf128
+    libc.src.math.roundf128
+    libc.src.math.scalblnf128
+    libc.src.math.scalbnf128
+    libc.src.math.setpayloadf128
+    libc.src.math.setpayloadsigf128
+    libc.src.math.sqrtf128
+    libc.src.math.totalorderf128
+    libc.src.math.totalordermagf128
+    libc.src.math.truncf128
+    libc.src.math.ufromfpf128
+    libc.src.math.ufromfpxf128
+  )
+endif()
+
+list(APPEND TARGET_LIBM_ENTRYPOINTS
+  # bfloat16 entrypoints
+  libc.src.math.bf16add
+  libc.src.math.bf16addf
+  libc.src.math.bf16addl
+  libc.src.math.bf16div
+  libc.src.math.bf16divf
+  libc.src.math.bf16divl
+  libc.src.math.bf16fma
+  libc.src.math.bf16fmaf
+  libc.src.math.bf16fmal
+  libc.src.math.bf16mul
+  libc.src.math.bf16mulf
+  libc.src.math.bf16mull
+  libc.src.math.bf16sub
+  libc.src.math.bf16subf
+  libc.src.math.bf16subl
+  libc.src.math.canonicalizebf16
+  libc.src.math.ceilbf16
+  libc.src.math.copysignbf16
+  libc.src.math.fabsbf16
+  libc.src.math.fdimbf16
+  libc.src.math.floorbf16
+  libc.src.math.fmaxbf16
+  libc.src.math.fmaximumbf16
+  libc.src.math.fmaximum_magbf16
+  libc.src.math.fmaximum_mag_numbf16
+  libc.src.math.fmaximum_numbf16
+  libc.src.math.fminbf16
+  libc.src.math.fminimumbf16
+  libc.src.math.fminimum_magbf16
+  libc.src.math.fminimum_mag_numbf16
+  libc.src.math.fminimum_numbf16
+  libc.src.math.fmodbf16
+  libc.src.math.frexpbf16
+  libc.src.math.fromfpbf16
+  libc.src.math.fromfpxbf16
+  libc.src.math.getpayloadbf16
+  libc.src.math.ilogbbf16
+  libc.src.math.iscanonicalbf16
+  libc.src.math.issignalingbf16
+  libc.src.math.ldexpbf16
+  libc.src.math.llogbbf16
+  libc.src.math.llrintbf16
+  libc.src.math.llroundbf16
+  libc.src.math.log_bf16
+  libc.src.math.logbbf16
+  libc.src.math.lrintbf16
+  libc.src.math.lroundbf16
+  libc.src.math.modfbf16
+  libc.src.math.nanbf16
+  libc.src.math.nearbyintbf16
+  libc.src.math.nextafterbf16
+  libc.src.math.nextdownbf16
+  libc.src.math.nexttowardbf16
+  libc.src.math.nextupbf16
+  libc.src.math.remainderbf16
+  libc.src.math.remquobf16
+  libc.src.math.rintbf16
+  libc.src.math.roundbf16
+  libc.src.math.roundevenbf16
+  libc.src.math.scalblnbf16
+  libc.src.math.scalbnbf16
+  libc.src.math.setpayloadbf16
+  libc.src.math.setpayloadsigbf16
+  libc.src.math.sqrtbf16
+  libc.src.math.truncbf16
+  libc.src.math.totalorderbf16
+  libc.src.math.totalordermagbf16
+  libc.src.math.ufromfpbf16
+  libc.src.math.ufromfpxbf16
+)
+
+if(LIBC_TYPES_HAS_FLOAT128)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # math.h C++23 mixed bfloat16 and _Float128 entrypoints
+    libc.src.math.bf16addf128
+    libc.src.math.bf16divf128
+    libc.src.math.bf16fmaf128
+    libc.src.math.bf16mulf128
+    libc.src.math.bf16subf128
+  )
+endif()
+
+if(LLVM_LIBC_FULL_BUILD)
+  list(APPEND TARGET_LIBC_ENTRYPOINTS
+    # assert.h entrypoints
+    libc.src.assert.__assert_fail
+
+    # compiler entrypoints (no corresponding header)
+    libc.src.compiler.__stack_chk_fail
+
+    # dirent.h entrypoints
+    libc.src.dirent.closedir
+    libc.src.dirent.dirfd
+    libc.src.dirent.opendir
+    libc.src.dirent.readdir
+
+    # arpa/inet.h entrypoints
+    libc.src.arpa.inet.htonl
+    libc.src.arpa.inet.htons
+    libc.src.arpa.inet.inet_addr
+    libc.src.arpa.inet.inet_aton
+    libc.src.arpa.inet.ntohl
+    libc.src.arpa.inet.ntohs
+
+    # pthread.h entrypoints
+    libc.src.pthread.pthread_atfork
+    libc.src.pthread.pthread_attr_destroy
+    libc.src.pthread.pthread_attr_getdetachstate
+    libc.src.pthread.pthread_attr_getguardsize
+    libc.src.pthread.pthread_attr_getstack
+    libc.src.pthread.pthread_attr_getstacksize
+    libc.src.pthread.pthread_attr_init
+    libc.src.pthread.pthread_attr_setdetachstate
+    libc.src.pthread.pthread_attr_setguardsize
+    libc.src.pthread.pthread_attr_setstack
+    libc.src.pthread.pthread_attr_setstacksize
+    libc.src.pthread.pthread_condattr_destroy
+    libc.src.pthread.pthread_condattr_getclock
+    libc.src.pthread.pthread_condattr_getpshared
+    libc.src.pthread.pthread_condattr_init
+    libc.src.pthread.pthread_condattr_setclock
+    libc.src.pthread.pthread_condattr_setpshared
+    libc.src.pthread.pthread_create
+    libc.src.pthread.pthread_detach
+    libc.src.pthread.pthread_equal
+    libc.src.pthread.pthread_exit
+    libc.src.pthread.pthread_getname_np
+    libc.src.pthread.pthread_getspecific
+    libc.src.pthread.pthread_join
+    libc.src.pthread.pthread_key_create
+    libc.src.pthread.pthread_key_delete
+    libc.src.pthread.pthread_mutex_destroy
+    libc.src.pthread.pthread_mutex_init
+    libc.src.pthread.pthread_mutex_lock
+    libc.src.pthread.pthread_mutex_unlock
+    libc.src.pthread.pthread_mutexattr_destroy
+    libc.src.pthread.pthread_mutexattr_getpshared
+    libc.src.pthread.pthread_mutexattr_getrobust
+    libc.src.pthread.pthread_mutexattr_gettype
+    libc.src.pthread.pthread_mutexattr_init
+    libc.src.pthread.pthread_mutexattr_setpshared
+    libc.src.pthread.pthread_mutexattr_setrobust
+    libc.src.pthread.pthread_mutexattr_settype
+    libc.src.pthread.pthread_once
+    libc.src.pthread.pthread_rwlock_clockrdlock
+    libc.src.pthread.pthread_rwlock_clockwrlock
+    libc.src.pthread.pthread_rwlock_destroy
+    libc.src.pthread.pthread_rwlock_init
+    libc.src.pthread.pthread_rwlock_rdlock
+    libc.src.pthread.pthread_rwlock_timedrdlock
+    libc.src.pthread.pthread_rwlock_timedwrlock
+    libc.src.pthread.pthread_rwlock_tryrdlock
+    libc.src.pthread.pthread_rwlock_trywrlock
+    libc.src.pthread.pthread_rwlock_unlock
+    libc.src.pthread.pthread_rwlock_wrlock
+    libc.src.pthread.pthread_rwlockattr_destroy
+    libc.src.pthread.pthread_rwlockattr_getkind_np
+    libc.src.pthread.pthread_rwlockattr_getpshared
+    libc.src.pthread.pthread_rwlockattr_init
+    libc.src.pthread.pthread_rwlockattr_setkind_np
+    libc.src.pthread.pthread_rwlockattr_setpshared
+    libc.src.pthread.pthread_spin_destroy
+    libc.src.pthread.pthread_spin_init
+    libc.src.pthread.pthread_spin_lock
+    libc.src.pthread.pthread_spin_trylock
+    libc.src.pthread.pthread_spin_unlock
+    libc.src.pthread.pthread_self
+    libc.src.pthread.pthread_setname_np
+    libc.src.pthread.pthread_setspecific
+
+    # sched.h entrypoints
+    libc.src.sched.__sched_getcpucount
+    libc.src.sched.__sched_setcpuzero
+    libc.src.sched.__sched_setcpuset
+    libc.src.sched.__sched_getcpuisset
+
+    # strings.h entrypoints
+    libc.src.strings.strcasecmp_l
+    libc.src.strings.strncasecmp_l
+
+    # setjmp.h entrypoints
+    libc.src.setjmp.longjmp
+    libc.src.setjmp.setjmp
+    libc.src.setjmp.siglongjmp
+    libc.src.setjmp.sigsetjmp
+
+    # stdio.h entrypoints
+    libc.src.stdio.clearerr
+    libc.src.stdio.clearerr_unlocked
+    libc.src.stdio.fclose
+    libc.src.stdio.fdopen
+    libc.src.stdio.feof
+    libc.src.stdio.feof_unlocked
+    libc.src.stdio.ferror
+    libc.src.stdio.ferror_unlocked
+    libc.src.stdio.fflush
+    libc.src.stdio.fgetc
+    libc.src.stdio.fgetc_unlocked
+    libc.src.stdio.fgets
+    libc.src.stdio.fileno
+    libc.src.stdio.flockfile
+    libc.src.stdio.fopen
+    libc.src.stdio.fopencookie
+    libc.src.stdio.fputc
+    libc.src.stdio.fputs
+    libc.src.stdio.fread
+    libc.src.stdio.fread_unlocked
+    libc.src.stdio.fseek
+    libc.src.stdio.fseeko
+    libc.src.stdio.ftell
+    libc.src.stdio.ftello
+    libc.src.stdio.funlockfile
+    libc.src.stdio.fwrite
+    libc.src.stdio.fwrite_unlocked
+    libc.src.stdio.getc
+    libc.src.stdio.getc_unlocked
+    libc.src.stdio.getchar
+    libc.src.stdio.getchar_unlocked
+    libc.src.stdio.perror
+    libc.src.stdio.putc
+    libc.src.stdio.putchar
+    libc.src.stdio.puts
+    libc.src.stdio.setbuf
+    libc.src.stdio.setvbuf
+    libc.src.stdio.stderr
+    libc.src.stdio.stdin
+    libc.src.stdio.stdout
+    libc.src.stdio.ungetc
+
+    # stdlib.h entrypoints
+    libc.src.stdlib._Exit
+    libc.src.stdlib.abort
+    libc.src.stdlib.at_quick_exit
+    libc.src.stdlib.atexit
+    libc.src.stdlib.exit
+    libc.src.stdlib.getenv
+    libc.src.stdlib.quick_exit
+
+    # signal.h entrypoints
+    libc.src.signal.kill
+    libc.src.signal.raise
+    libc.src.signal.sigaction
+    libc.src.signal.sigaddset
+    libc.src.signal.sigaltstack
+    libc.src.signal.sigdelset
+    libc.src.signal.sigemptyset
+    libc.src.signal.sigfillset
+    libc.src.signal.signal
+    libc.src.signal.sigprocmask
+
+    # spawn.h entrypoints
+    libc.src.spawn.posix_spawn
+    libc.src.spawn.posix_spawn_file_actions_addclose
+    libc.src.spawn.posix_spawn_file_actions_adddup2
+    libc.src.spawn.posix_spawn_file_actions_addopen
+    libc.src.spawn.posix_spawn_file_actions_destroy
+    libc.src.spawn.posix_spawn_file_actions_init
+
+    # search.h entrypoints
+    libc.src.search.hcreate
+    libc.src.search.hcreate_r
+    libc.src.search.hdestroy
+    libc.src.search.hdestroy_r
+    libc.src.search.hsearch
+    libc.src.search.hsearch_r
+    libc.src.search.insque
+    libc.src.search.lfind
+    libc.src.search.lsearch
+    libc.src.search.remque
+
+    # threads.h entrypoints
+    libc.src.threads.call_once
+    libc.src.threads.cnd_broadcast
+    libc.src.threads.cnd_destroy
+    libc.src.threads.cnd_init
+    libc.src.threads.cnd_signal
+    libc.src.threads.cnd_wait
+    libc.src.threads.mtx_destroy
+    libc.src.threads.mtx_init
+    libc.src.threads.mtx_lock
+    libc.src.threads.mtx_unlock
+    libc.src.threads.thrd_create
+    libc.src.threads.thrd_current
+    libc.src.threads.thrd_detach
+    libc.src.threads.thrd_equal
+    libc.src.threads.thrd_exit
+    libc.src.threads.thrd_join
+    libc.src.threads.tss_create
+    libc.src.threads.tss_delete
+    libc.src.threads.tss_get
+    libc.src.threads.tss_set
+
+    # time.h entrypoints
+    libc.src.time.asctime
+    libc.src.time.asctime_r
+    libc.src.time.ctime
+    libc.src.time.ctime_r
+    libc.src.time.clock
+    libc.src.time.clock_gettime
+    libc.src.time.clock_settime
+    libc.src.time.difftime
+    libc.src.time.gettimeofday
+    libc.src.time.gmtime
+    libc.src.time.gmtime_r
+    libc.src.time.mktime
+    libc.src.time.nanosleep
+    libc.src.time.time
+    libc.src.time.timespec_get
+
+    # unistd.h entrypoints
+    libc.src.unistd.__llvm_libc_syscall
+    libc.src.unistd._exit
+    libc.src.unistd.environ
+    libc.src.unistd.execv
+    libc.src.unistd.fork
+    libc.src.unistd.getopt
+    libc.src.unistd.optarg
+    libc.src.unistd.opterr
+    libc.src.unistd.optind
+    libc.src.unistd.optopt
+    libc.src.unistd.swab
+
+    # sys/select.h entrypoints
+    libc.src.sys.select.select
+
+    # sys/socket.h entrypoints
+    libc.src.sys.socket.bind
+    libc.src.sys.socket.socket
+  )
+endif()
+
+set(TARGET_LLVMLIBC_ENTRYPOINTS
+  ${TARGET_LIBC_ENTRYPOINTS}
+  ${TARGET_LIBM_ENTRYPOINTS}
+)
diff --git a/libc/config/linux/arm/entrypoints.txt b/libc/config/linux/arm/entrypoints.txt
index f04ac40145d3a..12d3ab7e1ee17 100644
--- a/libc/config/linux/arm/entrypoints.txt
+++ b/libc/config/linux/arm/entrypoints.txt
@@ -1,537 +1,538 @@
-set(TARGET_LIBC_ENTRYPOINTS
-    # ctype.h entrypoints
-    libc.src.ctype.isalnum
-    libc.src.ctype.isalpha
-    libc.src.ctype.isascii
-    libc.src.ctype.isblank
-    libc.src.ctype.iscntrl
-    libc.src.ctype.isdigit
-    libc.src.ctype.isgraph
-    libc.src.ctype.islower
-    libc.src.ctype.isprint
-    libc.src.ctype.ispunct
-    libc.src.ctype.isspace
-    libc.src.ctype.isupper
-    libc.src.ctype.isxdigit
-    libc.src.ctype.toascii
-    libc.src.ctype.tolower
-    libc.src.ctype.toupper
-
-    # errno.h entrypoints
-    libc.src.errno.errno
-
-    # poll.h entrypoints
-    libc.src.poll.poll
-
-    # string.h entrypoints
-    libc.src.string.memccpy
-    libc.src.string.memchr
-    libc.src.string.memcmp
-    libc.src.string.memcpy
-    libc.src.string.memmem
-    libc.src.string.memmove
-    libc.src.string.mempcpy
-    libc.src.string.memrchr
-    libc.src.string.memset
-    libc.src.string.stpcpy
-    libc.src.string.stpncpy
-    libc.src.string.strcasestr
-    libc.src.string.strcat
-    libc.src.string.strchr
-    libc.src.string.strchrnul
-    libc.src.string.strcmp
-    libc.src.string.strcpy
-    libc.src.string.strcspn
-    libc.src.string.strlcat
-    libc.src.string.strlcpy
-    libc.src.string.strlen
-    libc.src.string.strncat
-    libc.src.string.strncmp
-    libc.src.string.strncpy
-    libc.src.string.strnlen
-    libc.src.string.strpbrk
-    libc.src.string.strrchr
-    libc.src.string.strsep
-    libc.src.string.strspn
-    libc.src.string.strstr
-    libc.src.string.strtok
-    libc.src.string.strtok_r
-
-    # strings.h entrypoints
-    libc.src.strings.bcmp
-    libc.src.strings.bcopy
-    libc.src.strings.bzero
-    libc.src.strings.index
-    libc.src.strings.rindex
-    libc.src.strings.strcasecmp
-    libc.src.strings.strncasecmp
-
-    # inttypes.h entrypoints
-    libc.src.inttypes.imaxabs
-    libc.src.inttypes.imaxdiv
-    libc.src.inttypes.strtoimax
-    libc.src.inttypes.strtoumax
-
-    # stdbit.h entrypoints
-    libc.src.stdbit.stdc_bit_ceil_uc
-    libc.src.stdbit.stdc_bit_ceil_ui
-    libc.src.stdbit.stdc_bit_ceil_ul
-    libc.src.stdbit.stdc_bit_ceil_ull
-    libc.src.stdbit.stdc_bit_ceil_us
-    libc.src.stdbit.stdc_bit_floor_uc
-    libc.src.stdbit.stdc_bit_floor_ui
-    libc.src.stdbit.stdc_bit_floor_ul
-    libc.src.stdbit.stdc_bit_floor_ull
-    libc.src.stdbit.stdc_bit_floor_us
-    libc.src.stdbit.stdc_bit_width_uc
-    libc.src.stdbit.stdc_bit_width_ui
-    libc.src.stdbit.stdc_bit_width_ul
-    libc.src.stdbit.stdc_bit_width_ull
-    libc.src.stdbit.stdc_bit_width_us
-    libc.src.stdbit.stdc_count_ones_uc
-    libc.src.stdbit.stdc_count_ones_ui
-    libc.src.stdbit.stdc_count_ones_ul
-    libc.src.stdbit.stdc_count_ones_ull
-    libc.src.stdbit.stdc_count_ones_us
-    libc.src.stdbit.stdc_count_zeros_uc
-    libc.src.stdbit.stdc_count_zeros_ui
-    libc.src.stdbit.stdc_count_zeros_ul
-    libc.src.stdbit.stdc_count_zeros_ull
-    libc.src.stdbit.stdc_count_zeros_us
-    libc.src.stdbit.stdc_first_leading_one_uc
-    libc.src.stdbit.stdc_first_leading_one_ui
-    libc.src.stdbit.stdc_first_leading_one_ul
-    libc.src.stdbit.stdc_first_leading_one_ull
-    libc.src.stdbit.stdc_first_leading_one_us
-    libc.src.stdbit.stdc_first_leading_zero_uc
-    libc.src.stdbit.stdc_first_leading_zero_ui
-    libc.src.stdbit.stdc_first_leading_zero_ul
-    libc.src.stdbit.stdc_first_leading_zero_ull
-    libc.src.stdbit.stdc_first_leading_zero_us
-    libc.src.stdbit.stdc_first_trailing_one_uc
-    libc.src.stdbit.stdc_first_trailing_one_ui
-    libc.src.stdbit.stdc_first_trailing_one_ul
-    libc.src.stdbit.stdc_first_trailing_one_ull
-    libc.src.stdbit.stdc_first_trailing_one_us
-    libc.src.stdbit.stdc_first_trailing_zero_uc
-    libc.src.stdbit.stdc_first_trailing_zero_ui
-    libc.src.stdbit.stdc_first_trailing_zero_ul
-    libc.src.stdbit.stdc_first_trailing_zero_ull
-    libc.src.stdbit.stdc_first_trailing_zero_us
-    libc.src.stdbit.stdc_has_single_bit_uc
-    libc.src.stdbit.stdc_has_single_bit_ui
-    libc.src.stdbit.stdc_has_single_bit_ul
-    libc.src.stdbit.stdc_has_single_bit_ull
-    libc.src.stdbit.stdc_has_single_bit_us
-    libc.src.stdbit.stdc_leading_ones_uc
-    libc.src.stdbit.stdc_leading_ones_ui
-    libc.src.stdbit.stdc_leading_ones_ul
-    libc.src.stdbit.stdc_leading_ones_ull
-    libc.src.stdbit.stdc_leading_ones_us
-    libc.src.stdbit.stdc_leading_zeros_uc
-    libc.src.stdbit.stdc_leading_zeros_ui
-    libc.src.stdbit.stdc_leading_zeros_ul
-    libc.src.stdbit.stdc_leading_zeros_ull
-    libc.src.stdbit.stdc_leading_zeros_us
-    libc.src.stdbit.stdc_trailing_ones_uc
-    libc.src.stdbit.stdc_trailing_ones_ui
-    libc.src.stdbit.stdc_trailing_ones_ul
-    libc.src.stdbit.stdc_trailing_ones_ull
-    libc.src.stdbit.stdc_trailing_ones_us
-    libc.src.stdbit.stdc_trailing_zeros_uc
-    libc.src.stdbit.stdc_trailing_zeros_ui
-    libc.src.stdbit.stdc_trailing_zeros_ul
-    libc.src.stdbit.stdc_trailing_zeros_ull
-    libc.src.stdbit.stdc_trailing_zeros_us
-
-    # stdlib.h entrypoints
-    libc.src.stdlib.abs
-    libc.src.stdlib.atof
-    libc.src.stdlib.atoi
-    libc.src.stdlib.atol
-    libc.src.stdlib.atoll
-    libc.src.stdlib.bsearch
-    libc.src.stdlib.div
-    libc.src.stdlib.labs
-    libc.src.stdlib.ldiv
-    libc.src.stdlib.llabs
-    libc.src.stdlib.lldiv
-    libc.src.stdlib.memalignment
-    libc.src.stdlib.qsort
-    libc.src.stdlib.qsort_r
-    libc.src.stdlib.strtod
-    libc.src.stdlib.strtof
-    libc.src.stdlib.strtol
-    libc.src.stdlib.strtold
-    libc.src.stdlib.strtoll
-    libc.src.stdlib.strtoul
-    libc.src.stdlib.strtoull
-
-    # stdlib.h external entrypoints
-    libc.src.stdlib.aligned_alloc
-    libc.src.stdlib.free
-    libc.src.stdlib.malloc
-
-    # sys/ioctl.h entrypoints
-    libc.src.sys.ioctl.ioctl
-
-    # sys/mman.h entrypoints
-    libc.src.sys.mman.mmap
-    libc.src.sys.mman.munmap
-
-    # sys/prctl.h entrypoints
-    libc.src.sys.prctl.prctl
-
-    # sys/epoll.h entrypoints
-    # Disabled due to epoll_wait syscalls not being available on this platform.
-    # libc.src.sys.epoll.epoll_wait
-    # libc.src.sys.epoll.epoll_pwait
-    # libc.src.sys.epoll.epoll_pwait2
-
-    # sys/time.h entrypoints
-    libc.src.sys.time.setitimer
-    libc.src.sys.time.getitimer
-
-    # wctype.h entrypoints
-    libc.src.wctype.iswalpha
-)
-
-if(LLVM_LIBC_FULL_BUILD)
-  list(APPEND TARGET_LIBC_ENTRYPOINTS
-    # search.h entrypoints
-    libc.src.search.lfind
-
-    # setjmp.h entrypoints
-    libc.src.setjmp.longjmp
-    libc.src.setjmp.setjmp
-    libc.src.setjmp.siglongjmp
-    libc.src.setjmp.sigsetjmp
-  )
-endif()
-
-if(LLVM_LIBC_INCLUDE_SCUDO)
-  list(APPEND TARGET_LIBC_ENTRYPOINTS
-    # malloc.h external entrypoints
-    libc.src.stdlib.mallopt
-  )
-endif()
-
-set(TARGET_LIBM_ENTRYPOINTS
-    # complex.h entrypoints
-    libc.src.complex.creal
-    libc.src.complex.crealf
-    libc.src.complex.creall
-    libc.src.complex.cimag
-    libc.src.complex.cimagf
-    libc.src.complex.cimagl
-    libc.src.complex.conj
-    libc.src.complex.conjf
-    libc.src.complex.conjl
-    libc.src.complex.cproj
-    libc.src.complex.cprojf
-    libc.src.complex.cprojl
-
-    # fenv.h entrypoints
-    libc.src.fenv.feclearexcept
-    libc.src.fenv.fedisableexcept
-    libc.src.fenv.feenableexcept
-    libc.src.fenv.fegetenv
-    libc.src.fenv.fegetexcept
-    libc.src.fenv.fegetexceptflag
-    libc.src.fenv.fegetround
-    libc.src.fenv.feholdexcept
-    libc.src.fenv.feraiseexcept
-    libc.src.fenv.fesetenv
-    libc.src.fenv.fesetexcept
-    libc.src.fenv.fesetexceptflag
-    libc.src.fenv.fesetround
-    libc.src.fenv.fetestexcept
-    libc.src.fenv.fetestexceptflag
-    libc.src.fenv.feupdateenv
-
-    # math.h entrypoints
-    libc.src.math.acos
-    libc.src.math.acosf
-    libc.src.math.acoshf
-    libc.src.math.asin
-    libc.src.math.asinf
-    libc.src.math.asinhf
-    libc.src.math.atan2
-    libc.src.math.atan2f
-    libc.src.math.atan
-    libc.src.math.atanf
-    libc.src.math.atanhf
-    libc.src.math.cbrt
-    libc.src.math.cbrtf
-    libc.src.math.ceil
-    libc.src.math.ceilf
-    libc.src.math.ceill
-    libc.src.math.copysign
-    libc.src.math.copysignf
-    libc.src.math.copysignl
-    libc.src.math.cos
-    libc.src.math.cosf
-    libc.src.math.coshf
-    libc.src.math.dfmal
-    libc.src.math.dsqrtl
-    libc.src.math.erff
-    libc.src.math.exp
-    libc.src.math.exp10
-    libc.src.math.exp10f
-    libc.src.math.exp2
-    libc.src.math.exp2f
-    libc.src.math.expf
-    libc.src.math.expm1
-    libc.src.math.expm1f
-    libc.src.math.fabs
-    libc.src.math.fabsf
-    libc.src.math.fabsl
-    libc.src.math.fadd
-    libc.src.math.faddl
-    libc.src.math.fadd
-    libc.src.math.fdim
-    libc.src.math.fdimf
-    libc.src.math.fdiml
-    libc.src.math.fdiv
-    libc.src.math.fdivl
-    libc.src.math.ffma
-    libc.src.math.ffmal
-    libc.src.math.floor
-    libc.src.math.floorf
-    libc.src.math.floorl
-    libc.src.math.fma
-    libc.src.math.fmaf
-    libc.src.math.fmax
-    libc.src.math.fmaxf
-    libc.src.math.fmaximum
-    libc.src.math.fmaximum_mag
-    libc.src.math.fmaximum_mag_num
-    libc.src.math.fmaximum_mag_numf
-    libc.src.math.fmaximum_mag_numl
-    libc.src.math.fmaximum_magf
-    libc.src.math.fmaximum_magl
-    libc.src.math.fmaximum_num
-    libc.src.math.fmaximum_numf
-    libc.src.math.fmaximum_numl
-    libc.src.math.fmaximumf
-    libc.src.math.fmaximuml
-    libc.src.math.fmaxl
-    libc.src.math.fmin
-    libc.src.math.fminf
-    libc.src.math.fminimum
-    libc.src.math.fminimum_mag
-    libc.src.math.fminimum_mag_num
-    libc.src.math.fminimum_mag_numf
-    libc.src.math.fminimum_mag_numl
-    libc.src.math.fminimum_magf
-    libc.src.math.fminimum_magl
-    libc.src.math.fminimum_num
-    libc.src.math.fminimum_numf
-    libc.src.math.fminimum_numl
-    libc.src.math.fminimumf
-    libc.src.math.fminimuml
-    libc.src.math.fminl
-    libc.src.math.fmod
-    libc.src.math.fmodf
-    libc.src.math.fmul
-    libc.src.math.frexp
-    libc.src.math.frexpf
-    libc.src.math.frexpl
-    libc.src.math.fromfp
-    libc.src.math.fromfpf
-    libc.src.math.fromfpl
-    libc.src.math.fromfpx
-    libc.src.math.fromfpxf
-    libc.src.math.fromfpxl
-    libc.src.math.fsub
-    libc.src.math.fsubl
-    libc.src.math.getpayload
-    libc.src.math.getpayloadf
-    libc.src.math.getpayloadl
-    libc.src.math.hypot
-    libc.src.math.hypotf
-    libc.src.math.ilogb
-    libc.src.math.ilogbf
-    libc.src.math.ilogbl
-    libc.src.math.ldexp
-    libc.src.math.ldexpf
-    libc.src.math.ldexpl
-    libc.src.math.llogb
-    libc.src.math.llogbf
-    libc.src.math.llogbl
-    libc.src.math.llrint
-    libc.src.math.llrintf
-    libc.src.math.llrintl
-    libc.src.math.llround
-    libc.src.math.llroundf
-    libc.src.math.llroundl
-    libc.src.math.log
-    libc.src.math.log10
-    libc.src.math.log10f
-    libc.src.math.log1p
-    libc.src.math.log1pf
-    libc.src.math.log2
-    libc.src.math.log2f
-    libc.src.math.logb
-    libc.src.math.logbf
-    libc.src.math.logbl
-    libc.src.math.logf
-    libc.src.math.lrint
-    libc.src.math.lrintf
-    libc.src.math.lrintl
-    libc.src.math.lround
-    libc.src.math.lroundf
-    libc.src.math.lroundl
-    libc.src.math.modf
-    libc.src.math.modff
-    libc.src.math.modfl
-    libc.src.math.nan
-    libc.src.math.nanf
-    libc.src.math.nanl
-    libc.src.math.nearbyint
-    libc.src.math.nearbyintf
-    libc.src.math.nearbyintl
-    libc.src.math.nextafter
-    libc.src.math.nextafterf
-    libc.src.math.nextafterl
-    libc.src.math.nextdown
-    libc.src.math.nextdownf
-    libc.src.math.nextdownl
-    libc.src.math.nexttoward
-    libc.src.math.nexttowardf
-    libc.src.math.nexttowardl
-    libc.src.math.nextup
-    libc.src.math.nextupf
-    libc.src.math.nextupl
-    libc.src.math.pow
-    libc.src.math.powf
-    libc.src.math.remainder
-    libc.src.math.remainderf
-    libc.src.math.remainderl
-    libc.src.math.remquo
-    libc.src.math.remquof
-    libc.src.math.remquol
-    libc.src.math.rint
-    libc.src.math.rintf
-    libc.src.math.rintl
-    libc.src.math.round
-    libc.src.math.roundf
-    libc.src.math.roundl
-    libc.src.math.scalbln
-    libc.src.math.scalblnf
-    libc.src.math.scalblnl
-    libc.src.math.scalbn
-    libc.src.math.scalbnf
-    libc.src.math.scalbnl
-    libc.src.math.setpayload
-    libc.src.math.setpayloadf
-    libc.src.math.setpayloadl
-    libc.src.math.setpayloadsig
-    libc.src.math.setpayloadsigf
-    libc.src.math.setpayloadsigl
-    libc.src.math.sin
-    libc.src.math.sincos
-    libc.src.math.sincosf
-    libc.src.math.sinf
-    libc.src.math.sinhf
-    libc.src.math.sqrt
-    libc.src.math.sqrtf
-    libc.src.math.sqrtl
-    libc.src.math.tan
-    libc.src.math.tanf
-    libc.src.math.tanhf
-    libc.src.math.tanpif
-    libc.src.math.totalorder
-    libc.src.math.totalorderf
-    libc.src.math.totalorderl
-    libc.src.math.totalordermag
-    libc.src.math.totalordermagf
-    libc.src.math.totalordermagl
-    libc.src.math.trunc
-    libc.src.math.truncf
-    libc.src.math.truncl
-    libc.src.math.ufromfp
-    libc.src.math.ufromfpf
-    libc.src.math.ufromfpl
-    libc.src.math.ufromfpx
-    libc.src.math.ufromfpxf
-    libc.src.math.ufromfpxl
-)
-
-list(APPEND TARGET_LIBM_ENTRYPOINTS
-  # bfloat16 entrypoints
-  libc.src.math.bf16add
-  libc.src.math.bf16addf
-  libc.src.math.bf16addl
-  libc.src.math.bf16div
-  libc.src.math.bf16divf
-  libc.src.math.bf16divl
-  libc.src.math.bf16fma
-  libc.src.math.bf16fmaf
-  libc.src.math.bf16fmal
-  libc.src.math.bf16mul
-  libc.src.math.bf16mulf
-  libc.src.math.bf16mull
-  libc.src.math.bf16sub
-  libc.src.math.bf16subf
-  libc.src.math.bf16subl
-  libc.src.math.canonicalizebf16
-  libc.src.math.ceilbf16
-  libc.src.math.copysignbf16
-  libc.src.math.fabsbf16
-  libc.src.math.fdimbf16
-  libc.src.math.floorbf16
-  libc.src.math.fmaxbf16
-  libc.src.math.fmaximumbf16
-  libc.src.math.fmaximum_magbf16
-  libc.src.math.fmaximum_mag_numbf16
-  libc.src.math.fmaximum_numbf16
-  libc.src.math.fminbf16
-  libc.src.math.fminimumbf16
-  libc.src.math.fminimum_magbf16
-  libc.src.math.fminimum_mag_numbf16
-  libc.src.math.fminimum_numbf16
-  libc.src.math.fmodbf16
-  libc.src.math.frexpbf16
-  libc.src.math.fromfpbf16
-  libc.src.math.fromfpxbf16
-  libc.src.math.getpayloadbf16
-  libc.src.math.ilogbbf16
-  libc.src.math.iscanonicalbf16
-  libc.src.math.issignalingbf16
-  libc.src.math.ldexpbf16
-  libc.src.math.llogbbf16
-  libc.src.math.llrintbf16
-  libc.src.math.llroundbf16
-  libc.src.math.log_bf16
-  libc.src.math.logbbf16
-  libc.src.math.lrintbf16
-  libc.src.math.lroundbf16
-  libc.src.math.modfbf16
-  libc.src.math.nanbf16
-  libc.src.math.nearbyintbf16
-  libc.src.math.nextafterbf16
-  libc.src.math.nextdownbf16
-  libc.src.math.nexttowardbf16
-  libc.src.math.nextupbf16
-  libc.src.math.remainderbf16
-  libc.src.math.remquobf16
-  libc.src.math.rintbf16
-  libc.src.math.roundbf16
-  libc.src.math.roundevenbf16
-  libc.src.math.scalblnbf16
-  libc.src.math.scalbnbf16
-  libc.src.math.setpayloadbf16
-  libc.src.math.setpayloadsigbf16
-  libc.src.math.sqrtbf16
-  libc.src.math.truncbf16
-  libc.src.math.totalorderbf16
-  libc.src.math.totalordermagbf16
-  libc.src.math.ufromfpbf16
-  libc.src.math.ufromfpxbf16
-)
-
-set(TARGET_LLVMLIBC_ENTRYPOINTS
-  ${TARGET_LIBC_ENTRYPOINTS}
-  ${TARGET_LIBM_ENTRYPOINTS}
-)
+set(TARGET_LIBC_ENTRYPOINTS
+    # ctype.h entrypoints
+    libc.src.ctype.isalnum
+    libc.src.ctype.isalpha
+    libc.src.ctype.isascii
+    libc.src.ctype.isblank
+    libc.src.ctype.iscntrl
+    libc.src.ctype.isdigit
+    libc.src.ctype.isgraph
+    libc.src.ctype.islower
+    libc.src.ctype.isprint
+    libc.src.ctype.ispunct
+    libc.src.ctype.isspace
+    libc.src.ctype.isupper
+    libc.src.ctype.isxdigit
+    libc.src.ctype.toascii
+    libc.src.ctype.tolower
+    libc.src.ctype.toupper
+
+    # errno.h entrypoints
+    libc.src.errno.errno
+
+    # poll.h entrypoints
+    libc.src.poll.poll
+
+    # string.h entrypoints
+    libc.src.string.memccpy
+    libc.src.string.memchr
+    libc.src.string.memcmp
+    libc.src.string.memcpy
+    libc.src.string.memmem
+    libc.src.string.memmove
+    libc.src.string.mempcpy
+    libc.src.string.memrchr
+    libc.src.string.memset
+    libc.src.string.stpcpy
+    libc.src.string.stpncpy
+    libc.src.string.strcasestr
+    libc.src.string.strcat
+    libc.src.string.strchr
+    libc.src.string.strchrnul
+    libc.src.string.strcmp
+    libc.src.string.strcpy
+    libc.src.string.strcspn
+    libc.src.string.strlcat
+    libc.src.string.strlcpy
+    libc.src.string.strlen
+    libc.src.string.strncat
+    libc.src.string.strncmp
+    libc.src.string.strncpy
+    libc.src.string.strnlen
+    libc.src.string.strpbrk
+    libc.src.string.strrchr
+    libc.src.string.strsep
+    libc.src.string.strspn
+    libc.src.string.strstr
+    libc.src.string.strtok
+    libc.src.string.strtok_r
+
+    # strings.h entrypoints
+    libc.src.strings.bcmp
+    libc.src.strings.bcopy
+    libc.src.strings.bzero
+    libc.src.strings.index
+    libc.src.strings.rindex
+    libc.src.strings.strcasecmp
+    libc.src.strings.strncasecmp
+
+    # inttypes.h entrypoints
+    libc.src.inttypes.imaxabs
+    libc.src.inttypes.imaxdiv
+    libc.src.inttypes.strtoimax
+    libc.src.inttypes.strtoumax
+
+    # stdbit.h entrypoints
+    libc.src.stdbit.stdc_bit_ceil_uc
+    libc.src.stdbit.stdc_bit_ceil_ui
+    libc.src.stdbit.stdc_bit_ceil_ul
+    libc.src.stdbit.stdc_bit_ceil_ull
+    libc.src.stdbit.stdc_bit_ceil_us
+    libc.src.stdbit.stdc_bit_floor_uc
+    libc.src.stdbit.stdc_bit_floor_ui
+    libc.src.stdbit.stdc_bit_floor_ul
+    libc.src.stdbit.stdc_bit_floor_ull
+    libc.src.stdbit.stdc_bit_floor_us
+    libc.src.stdbit.stdc_bit_width_uc
+    libc.src.stdbit.stdc_bit_width_ui
+    libc.src.stdbit.stdc_bit_width_ul
+    libc.src.stdbit.stdc_bit_width_ull
+    libc.src.stdbit.stdc_bit_width_us
+    libc.src.stdbit.stdc_count_ones_uc
+    libc.src.stdbit.stdc_count_ones_ui
+    libc.src.stdbit.stdc_count_ones_ul
+    libc.src.stdbit.stdc_count_ones_ull
+    libc.src.stdbit.stdc_count_ones_us
+    libc.src.stdbit.stdc_count_zeros_uc
+    libc.src.stdbit.stdc_count_zeros_ui
+    libc.src.stdbit.stdc_count_zeros_ul
+    libc.src.stdbit.stdc_count_zeros_ull
+    libc.src.stdbit.stdc_count_zeros_us
+    libc.src.stdbit.stdc_first_leading_one_uc
+    libc.src.stdbit.stdc_first_leading_one_ui
+    libc.src.stdbit.stdc_first_leading_one_ul
+    libc.src.stdbit.stdc_first_leading_one_ull
+    libc.src.stdbit.stdc_first_leading_one_us
+    libc.src.stdbit.stdc_first_leading_zero_uc
+    libc.src.stdbit.stdc_first_leading_zero_ui
+    libc.src.stdbit.stdc_first_leading_zero_ul
+    libc.src.stdbit.stdc_first_leading_zero_ull
+    libc.src.stdbit.stdc_first_leading_zero_us
+    libc.src.stdbit.stdc_first_trailing_one_uc
+    libc.src.stdbit.stdc_first_trailing_one_ui
+    libc.src.stdbit.stdc_first_trailing_one_ul
+    libc.src.stdbit.stdc_first_trailing_one_ull
+    libc.src.stdbit.stdc_first_trailing_one_us
+    libc.src.stdbit.stdc_first_trailing_zero_uc
+    libc.src.stdbit.stdc_first_trailing_zero_ui
+    libc.src.stdbit.stdc_first_trailing_zero_ul
+    libc.src.stdbit.stdc_first_trailing_zero_ull
+    libc.src.stdbit.stdc_first_trailing_zero_us
+    libc.src.stdbit.stdc_has_single_bit_uc
+    libc.src.stdbit.stdc_has_single_bit_ui
+    libc.src.stdbit.stdc_has_single_bit_ul
+    libc.src.stdbit.stdc_has_single_bit_ull
+    libc.src.stdbit.stdc_has_single_bit_us
+    libc.src.stdbit.stdc_leading_ones_uc
+    libc.src.stdbit.stdc_leading_ones_ui
+    libc.src.stdbit.stdc_leading_ones_ul
+    libc.src.stdbit.stdc_leading_ones_ull
+    libc.src.stdbit.stdc_leading_ones_us
+    libc.src.stdbit.stdc_leading_zeros_uc
+    libc.src.stdbit.stdc_leading_zeros_ui
+    libc.src.stdbit.stdc_leading_zeros_ul
+    libc.src.stdbit.stdc_leading_zeros_ull
+    libc.src.stdbit.stdc_leading_zeros_us
+    libc.src.stdbit.stdc_trailing_ones_uc
+    libc.src.stdbit.stdc_trailing_ones_ui
+    libc.src.stdbit.stdc_trailing_ones_ul
+    libc.src.stdbit.stdc_trailing_ones_ull
+    libc.src.stdbit.stdc_trailing_ones_us
+    libc.src.stdbit.stdc_trailing_zeros_uc
+    libc.src.stdbit.stdc_trailing_zeros_ui
+    libc.src.stdbit.stdc_trailing_zeros_ul
+    libc.src.stdbit.stdc_trailing_zeros_ull
+    libc.src.stdbit.stdc_trailing_zeros_us
+
+    # stdlib.h entrypoints
+    libc.src.stdlib.abs
+    libc.src.stdlib.atof
+    libc.src.stdlib.atoi
+    libc.src.stdlib.atol
+    libc.src.stdlib.atoll
+    libc.src.stdlib.bsearch
+    libc.src.stdlib.div
+    libc.src.stdlib.labs
+    libc.src.stdlib.ldiv
+    libc.src.stdlib.llabs
+    libc.src.stdlib.lldiv
+    libc.src.stdlib.memalignment
+    libc.src.stdlib.qsort
+    libc.src.stdlib.qsort_r
+    libc.src.stdlib.strtod
+    libc.src.stdlib.strtof
+    libc.src.stdlib.strtol
+    libc.src.stdlib.strtold
+    libc.src.stdlib.strtoll
+    libc.src.stdlib.strtoul
+    libc.src.stdlib.strtoull
+
+    # stdlib.h external entrypoints
+    libc.src.stdlib.aligned_alloc
+    libc.src.stdlib.free
+    libc.src.stdlib.malloc
+
+    # sys/ioctl.h entrypoints
+    libc.src.sys.ioctl.ioctl
+
+    # sys/mman.h entrypoints
+    libc.src.sys.mman.mmap
+    libc.src.sys.mman.munmap
+
+    # sys/prctl.h entrypoints
+    libc.src.sys.prctl.prctl
+
+    # sys/epoll.h entrypoints
+    # Disabled due to epoll_wait syscalls not being available on this platform.
+    # libc.src.sys.epoll.epoll_wait
+    # libc.src.sys.epoll.epoll_pwait
+    # libc.src.sys.epoll.epoll_pwait2
+
+    # sys/time.h entrypoints
+    libc.src.sys.time.setitimer
+    libc.src.sys.time.getitimer
+
+    # wctype.h entrypoints
+    libc.src.wctype.iswalpha
+)
+
+if(LLVM_LIBC_FULL_BUILD)
+  list(APPEND TARGET_LIBC_ENTRYPOINTS
+    # search.h entrypoints
+    libc.src.search.lfind
+
+    # setjmp.h entrypoints
+    libc.src.setjmp.longjmp
+    libc.src.setjmp.setjmp
+    libc.src.setjmp.siglongjmp
+    libc.src.setjmp.sigsetjmp
+  )
+endif()
+
+if(LLVM_LIBC_INCLUDE_SCUDO)
+  list(APPEND TARGET_LIBC_ENTRYPOINTS
+    # malloc.h external entrypoints
+    libc.src.stdlib.mallopt
+  )
+endif()
+
+set(TARGET_LIBM_ENTRYPOINTS
+    # complex.h entrypoints
+    libc.src.complex.creal
+    libc.src.complex.crealf
+    libc.src.complex.creall
+    libc.src.complex.cimag
+    libc.src.complex.cimagf
+    libc.src.complex.cimagl
+    libc.src.complex.conj
+    libc.src.complex.conjf
+    libc.src.complex.conjl
+    libc.src.complex.cproj
+    libc.src.complex.cprojf
+    libc.src.complex.cprojl
+
+    # fenv.h entrypoints
+    libc.src.fenv.feclearexcept
+    libc.src.fenv.fedisableexcept
+    libc.src.fenv.feenableexcept
+    libc.src.fenv.fegetenv
+    libc.src.fenv.fegetexcept
+    libc.src.fenv.fegetexceptflag
+    libc.src.fenv.fegetround
+    libc.src.fenv.feholdexcept
+    libc.src.fenv.feraiseexcept
+    libc.src.fenv.fesetenv
+    libc.src.fenv.fesetexcept
+    libc.src.fenv.fesetexceptflag
+    libc.src.fenv.fesetround
+    libc.src.fenv.fetestexcept
+    libc.src.fenv.fetestexceptflag
+    libc.src.fenv.feupdateenv
+
+    # math.h entrypoints
+    libc.src.math.acos
+    libc.src.math.acosf
+    libc.src.math.acoshf
+    libc.src.math.asin
+    libc.src.math.asinf
+    libc.src.math.asinhf
+    libc.src.math.atan2
+    libc.src.math.atan2f
+    libc.src.math.atan
+    libc.src.math.atanf
+    libc.src.math.atanhf
+    libc.src.math.cbrt
+    libc.src.math.cbrtf
+    libc.src.math.ceil
+    libc.src.math.ceilf
+    libc.src.math.ceill
+    libc.src.math.copysign
+    libc.src.math.copysignf
+    libc.src.math.copysignl
+    libc.src.math.cos
+    libc.src.math.cosf
+    libc.src.math.coshf
+    libc.src.math.dfmal
+    libc.src.math.dsqrtl
+    libc.src.math.erff
+    libc.src.math.exp
+    libc.src.math.exp10
+    libc.src.math.exp10f
+    libc.src.math.exp2
+    libc.src.math.exp2f
+    libc.src.math.expf
+    libc.src.math.expm1
+    libc.src.math.expm1f
+    libc.src.math.fabs
+    libc.src.math.fabsf
+    libc.src.math.fabsl
+    libc.src.math.fadd
+    libc.src.math.faddl
+    libc.src.math.fadd
+    libc.src.math.fdim
+    libc.src.math.fdimf
+    libc.src.math.fdiml
+    libc.src.math.fdiv
+    libc.src.math.fdivl
+    libc.src.math.ffma
+    libc.src.math.ffmal
+    libc.src.math.floor
+    libc.src.math.floorf
+    libc.src.math.floorl
+    libc.src.math.fma
+    libc.src.math.fmabf16
+    libc.src.math.fmaf
+    libc.src.math.fmax
+    libc.src.math.fmaxf
+    libc.src.math.fmaximum
+    libc.src.math.fmaximum_mag
+    libc.src.math.fmaximum_mag_num
+    libc.src.math.fmaximum_mag_numf
+    libc.src.math.fmaximum_mag_numl
+    libc.src.math.fmaximum_magf
+    libc.src.math.fmaximum_magl
+    libc.src.math.fmaximum_num
+    libc.src.math.fmaximum_numf
+    libc.src.math.fmaximum_numl
+    libc.src.math.fmaximumf
+    libc.src.math.fmaximuml
+    libc.src.math.fmaxl
+    libc.src.math.fmin
+    libc.src.math.fminf
+    libc.src.math.fminimum
+    libc.src.math.fminimum_mag
+    libc.src.math.fminimum_mag_num
+    libc.src.math.fminimum_mag_numf
+    libc.src.math.fminimum_mag_numl
+    libc.src.math.fminimum_magf
+    libc.src.math.fminimum_magl
+    libc.src.math.fminimum_num
+    libc.src.math.fminimum_numf
+    libc.src.math.fminimum_numl
+    libc.src.math.fminimumf
+    libc.src.math.fminimuml
+    libc.src.math.fminl
+    libc.src.math.fmod
+    libc.src.math.fmodf
+    libc.src.math.fmul
+    libc.src.math.frexp
+    libc.src.math.frexpf
+    libc.src.math.frexpl
+    libc.src.math.fromfp
+    libc.src.math.fromfpf
+    libc.src.math.fromfpl
+    libc.src.math.fromfpx
+    libc.src.math.fromfpxf
+    libc.src.math.fromfpxl
+    libc.src.math.fsub
+    libc.src.math.fsubl
+    libc.src.math.getpayload
+    libc.src.math.getpayloadf
+    libc.src.math.getpayloadl
+    libc.src.math.hypot
+    libc.src.math.hypotf
+    libc.src.math.ilogb
+    libc.src.math.ilogbf
+    libc.src.math.ilogbl
+    libc.src.math.ldexp
+    libc.src.math.ldexpf
+    libc.src.math.ldexpl
+    libc.src.math.llogb
+    libc.src.math.llogbf
+    libc.src.math.llogbl
+    libc.src.math.llrint
+    libc.src.math.llrintf
+    libc.src.math.llrintl
+    libc.src.math.llround
+    libc.src.math.llroundf
+    libc.src.math.llroundl
+    libc.src.math.log
+    libc.src.math.log10
+    libc.src.math.log10f
+    libc.src.math.log1p
+    libc.src.math.log1pf
+    libc.src.math.log2
+    libc.src.math.log2f
+    libc.src.math.logb
+    libc.src.math.logbf
+    libc.src.math.logbl
+    libc.src.math.logf
+    libc.src.math.lrint
+    libc.src.math.lrintf
+    libc.src.math.lrintl
+    libc.src.math.lround
+    libc.src.math.lroundf
+    libc.src.math.lroundl
+    libc.src.math.modf
+    libc.src.math.modff
+    libc.src.math.modfl
+    libc.src.math.nan
+    libc.src.math.nanf
+    libc.src.math.nanl
+    libc.src.math.nearbyint
+    libc.src.math.nearbyintf
+    libc.src.math.nearbyintl
+    libc.src.math.nextafter
+    libc.src.math.nextafterf
+    libc.src.math.nextafterl
+    libc.src.math.nextdown
+    libc.src.math.nextdownf
+    libc.src.math.nextdownl
+    libc.src.math.nexttoward
+    libc.src.math.nexttowardf
+    libc.src.math.nexttowardl
+    libc.src.math.nextup
+    libc.src.math.nextupf
+    libc.src.math.nextupl
+    libc.src.math.pow
+    libc.src.math.powf
+    libc.src.math.remainder
+    libc.src.math.remainderf
+    libc.src.math.remainderl
+    libc.src.math.remquo
+    libc.src.math.remquof
+    libc.src.math.remquol
+    libc.src.math.rint
+    libc.src.math.rintf
+    libc.src.math.rintl
+    libc.src.math.round
+    libc.src.math.roundf
+    libc.src.math.roundl
+    libc.src.math.scalbln
+    libc.src.math.scalblnf
+    libc.src.math.scalblnl
+    libc.src.math.scalbn
+    libc.src.math.scalbnf
+    libc.src.math.scalbnl
+    libc.src.math.setpayload
+    libc.src.math.setpayloadf
+    libc.src.math.setpayloadl
+    libc.src.math.setpayloadsig
+    libc.src.math.setpayloadsigf
+    libc.src.math.setpayloadsigl
+    libc.src.math.sin
+    libc.src.math.sincos
+    libc.src.math.sincosf
+    libc.src.math.sinf
+    libc.src.math.sinhf
+    libc.src.math.sqrt
+    libc.src.math.sqrtf
+    libc.src.math.sqrtl
+    libc.src.math.tan
+    libc.src.math.tanf
+    libc.src.math.tanhf
+    libc.src.math.tanpif
+    libc.src.math.totalorder
+    libc.src.math.totalorderf
+    libc.src.math.totalorderl
+    libc.src.math.totalordermag
+    libc.src.math.totalordermagf
+    libc.src.math.totalordermagl
+    libc.src.math.trunc
+    libc.src.math.truncf
+    libc.src.math.truncl
+    libc.src.math.ufromfp
+    libc.src.math.ufromfpf
+    libc.src.math.ufromfpl
+    libc.src.math.ufromfpx
+    libc.src.math.ufromfpxf
+    libc.src.math.ufromfpxl
+)
+
+list(APPEND TARGET_LIBM_ENTRYPOINTS
+  # bfloat16 entrypoints
+  libc.src.math.bf16add
+  libc.src.math.bf16addf
+  libc.src.math.bf16addl
+  libc.src.math.bf16div
+  libc.src.math.bf16divf
+  libc.src.math.bf16divl
+  libc.src.math.bf16fma
+  libc.src.math.bf16fmaf
+  libc.src.math.bf16fmal
+  libc.src.math.bf16mul
+  libc.src.math.bf16mulf
+  libc.src.math.bf16mull
+  libc.src.math.bf16sub
+  libc.src.math.bf16subf
+  libc.src.math.bf16subl
+  libc.src.math.canonicalizebf16
+  libc.src.math.ceilbf16
+  libc.src.math.copysignbf16
+  libc.src.math.fabsbf16
+  libc.src.math.fdimbf16
+  libc.src.math.floorbf16
+  libc.src.math.fmaxbf16
+  libc.src.math.fmaximumbf16
+  libc.src.math.fmaximum_magbf16
+  libc.src.math.fmaximum_mag_numbf16
+  libc.src.math.fmaximum_numbf16
+  libc.src.math.fminbf16
+  libc.src.math.fminimumbf16
+  libc.src.math.fminimum_magbf16
+  libc.src.math.fminimum_mag_numbf16
+  libc.src.math.fminimum_numbf16
+  libc.src.math.fmodbf16
+  libc.src.math.frexpbf16
+  libc.src.math.fromfpbf16
+  libc.src.math.fromfpxbf16
+  libc.src.math.getpayloadbf16
+  libc.src.math.ilogbbf16
+  libc.src.math.iscanonicalbf16
+  libc.src.math.issignalingbf16
+  libc.src.math.ldexpbf16
+  libc.src.math.llogbbf16
+  libc.src.math.llrintbf16
+  libc.src.math.llroundbf16
+  libc.src.math.log_bf16
+  libc.src.math.logbbf16
+  libc.src.math.lrintbf16
+  libc.src.math.lroundbf16
+  libc.src.math.modfbf16
+  libc.src.math.nanbf16
+  libc.src.math.nearbyintbf16
+  libc.src.math.nextafterbf16
+  libc.src.math.nextdownbf16
+  libc.src.math.nexttowardbf16
+  libc.src.math.nextupbf16
+  libc.src.math.remainderbf16
+  libc.src.math.remquobf16
+  libc.src.math.rintbf16
+  libc.src.math.roundbf16
+  libc.src.math.roundevenbf16
+  libc.src.math.scalblnbf16
+  libc.src.math.scalbnbf16
+  libc.src.math.setpayloadbf16
+  libc.src.math.setpayloadsigbf16
+  libc.src.math.sqrtbf16
+  libc.src.math.truncbf16
+  libc.src.math.totalorderbf16
+  libc.src.math.totalordermagbf16
+  libc.src.math.ufromfpbf16
+  libc.src.math.ufromfpxbf16
+)
+
+set(TARGET_LLVMLIBC_ENTRYPOINTS
+  ${TARGET_LIBC_ENTRYPOINTS}
+  ${TARGET_LIBM_ENTRYPOINTS}
+)
diff --git a/libc/config/linux/riscv/entrypoints.txt b/libc/config/linux/riscv/entrypoints.txt
index 7baf4de9d8a5b..ca8df44ca2b7f 100644
--- a/libc/config/linux/riscv/entrypoints.txt
+++ b/libc/config/linux/riscv/entrypoints.txt
@@ -1,1331 +1,1332 @@
-set(TARGET_LIBC_ENTRYPOINTS
-    # ctype.h entrypoints
-    libc.src.ctype.isalnum
-    libc.src.ctype.isalpha
-    libc.src.ctype.isascii
-    libc.src.ctype.isblank
-    libc.src.ctype.iscntrl
-    libc.src.ctype.isdigit
-    libc.src.ctype.isgraph
-    libc.src.ctype.islower
-    libc.src.ctype.isprint
-    libc.src.ctype.ispunct
-    libc.src.ctype.isspace
-    libc.src.ctype.isupper
-    libc.src.ctype.isxdigit
-    libc.src.ctype.toascii
-    libc.src.ctype.tolower
-    libc.src.ctype.toupper
-
-    # dlfcn.h entrypoints
-    libc.src.dlfcn.dlclose
-    libc.src.dlfcn.dlerror
-    libc.src.dlfcn.dlopen
-    libc.src.dlfcn.dlsym
-
-    # errno.h entrypoints
-    libc.src.errno.errno
-
-    # fcntl.h entrypoints
-    libc.src.fcntl.creat
-    libc.src.fcntl.fcntl
-    libc.src.fcntl.open
-    libc.src.fcntl.openat
-
-    # poll.h entrypoints
-    libc.src.poll.poll
-
-    # sched.h entrypoints
-    libc.src.sched.sched_get_priority_max
-    libc.src.sched.sched_get_priority_min
-    libc.src.sched.sched_getaffinity
-    libc.src.sched.sched_getparam
-    libc.src.sched.sched_getscheduler
-    libc.src.sched.sched_rr_get_interval
-    libc.src.sched.sched_setaffinity
-    libc.src.sched.sched_setparam
-    libc.src.sched.sched_setscheduler
-    libc.src.sched.sched_yield
-
-    # string.h entrypoints
-    libc.src.string.memccpy
-    libc.src.string.memchr
-    libc.src.string.memcmp
-    libc.src.string.memcpy
-    libc.src.string.memmem
-    libc.src.string.memmove
-    libc.src.string.mempcpy
-    libc.src.string.memrchr
-    libc.src.string.memset
-    libc.src.string.memset_explicit
-    libc.src.string.stpcpy
-    libc.src.string.stpncpy
-    libc.src.string.strcasestr
-    libc.src.string.strcat
-    libc.src.string.strchr
-    libc.src.string.strchrnul
-    libc.src.string.strcmp
-    libc.src.string.strcoll
-    libc.src.string.strcpy
-    libc.src.string.strcspn
-    libc.src.string.strdup
-    libc.src.string.strerror
-    libc.src.string.strerror_r
-    libc.src.string.strlcat
-    libc.src.string.strlcpy
-    libc.src.string.strlen
-    libc.src.string.strncat
-    libc.src.string.strncmp
-    libc.src.string.strncpy
-    libc.src.string.strndup
-    libc.src.string.strnlen
-    libc.src.string.strpbrk
-    libc.src.string.strrchr
-    libc.src.string.strsep
-    libc.src.string.strsignal
-    libc.src.string.strspn
-    libc.src.string.strstr
-    libc.src.string.strtok
-    libc.src.string.strtok_r
-    libc.src.string.strxfrm
-
-    # strings.h entrypoints
-    libc.src.strings.bcmp
-    libc.src.strings.bcopy
-    libc.src.strings.bzero
-    libc.src.strings.ffs
-    libc.src.strings.ffsl
-    libc.src.strings.ffsll
-    libc.src.strings.index
-    libc.src.strings.rindex
-    libc.src.strings.strcasecmp
-    libc.src.strings.strncasecmp
-
-    # inttypes.h entrypoints
-    libc.src.inttypes.imaxabs
-    libc.src.inttypes.imaxdiv
-    libc.src.inttypes.strtoimax
-    libc.src.inttypes.strtoumax
-
-    # stdbit.h entrypoints
-    libc.src.stdbit.stdc_bit_ceil_uc
-    libc.src.stdbit.stdc_bit_ceil_ui
-    libc.src.stdbit.stdc_bit_ceil_ul
-    libc.src.stdbit.stdc_bit_ceil_ull
-    libc.src.stdbit.stdc_bit_ceil_us
-    libc.src.stdbit.stdc_bit_floor_uc
-    libc.src.stdbit.stdc_bit_floor_ui
-    libc.src.stdbit.stdc_bit_floor_ul
-    libc.src.stdbit.stdc_bit_floor_ull
-    libc.src.stdbit.stdc_bit_floor_us
-    libc.src.stdbit.stdc_bit_width_uc
-    libc.src.stdbit.stdc_bit_width_ui
-    libc.src.stdbit.stdc_bit_width_ul
-    libc.src.stdbit.stdc_bit_width_ull
-    libc.src.stdbit.stdc_bit_width_us
-    libc.src.stdbit.stdc_count_ones_uc
-    libc.src.stdbit.stdc_count_ones_ui
-    libc.src.stdbit.stdc_count_ones_ul
-    libc.src.stdbit.stdc_count_ones_ull
-    libc.src.stdbit.stdc_count_ones_us
-    libc.src.stdbit.stdc_count_zeros_uc
-    libc.src.stdbit.stdc_count_zeros_ui
-    libc.src.stdbit.stdc_count_zeros_ul
-    libc.src.stdbit.stdc_count_zeros_ull
-    libc.src.stdbit.stdc_count_zeros_us
-    libc.src.stdbit.stdc_first_leading_one_uc
-    libc.src.stdbit.stdc_first_leading_one_ui
-    libc.src.stdbit.stdc_first_leading_one_ul
-    libc.src.stdbit.stdc_first_leading_one_ull
-    libc.src.stdbit.stdc_first_leading_one_us
-    libc.src.stdbit.stdc_first_leading_zero_uc
-    libc.src.stdbit.stdc_first_leading_zero_ui
-    libc.src.stdbit.stdc_first_leading_zero_ul
-    libc.src.stdbit.stdc_first_leading_zero_ull
-    libc.src.stdbit.stdc_first_leading_zero_us
-    libc.src.stdbit.stdc_first_trailing_one_uc
-    libc.src.stdbit.stdc_first_trailing_one_ui
-    libc.src.stdbit.stdc_first_trailing_one_ul
-    libc.src.stdbit.stdc_first_trailing_one_ull
-    libc.src.stdbit.stdc_first_trailing_one_us
-    libc.src.stdbit.stdc_first_trailing_zero_uc
-    libc.src.stdbit.stdc_first_trailing_zero_ui
-    libc.src.stdbit.stdc_first_trailing_zero_ul
-    libc.src.stdbit.stdc_first_trailing_zero_ull
-    libc.src.stdbit.stdc_first_trailing_zero_us
-    libc.src.stdbit.stdc_has_single_bit_uc
-    libc.src.stdbit.stdc_has_single_bit_ui
-    libc.src.stdbit.stdc_has_single_bit_ul
-    libc.src.stdbit.stdc_has_single_bit_ull
-    libc.src.stdbit.stdc_has_single_bit_us
-    libc.src.stdbit.stdc_leading_ones_uc
-    libc.src.stdbit.stdc_leading_ones_ui
-    libc.src.stdbit.stdc_leading_ones_ul
-    libc.src.stdbit.stdc_leading_ones_ull
-    libc.src.stdbit.stdc_leading_ones_us
-    libc.src.stdbit.stdc_leading_zeros_uc
-    libc.src.stdbit.stdc_leading_zeros_ui
-    libc.src.stdbit.stdc_leading_zeros_ul
-    libc.src.stdbit.stdc_leading_zeros_ull
-    libc.src.stdbit.stdc_leading_zeros_us
-    libc.src.stdbit.stdc_trailing_ones_uc
-    libc.src.stdbit.stdc_trailing_ones_ui
-    libc.src.stdbit.stdc_trailing_ones_ul
-    libc.src.stdbit.stdc_trailing_ones_ull
-    libc.src.stdbit.stdc_trailing_ones_us
-    libc.src.stdbit.stdc_trailing_zeros_uc
-    libc.src.stdbit.stdc_trailing_zeros_ui
-    libc.src.stdbit.stdc_trailing_zeros_ul
-    libc.src.stdbit.stdc_trailing_zeros_ull
-    libc.src.stdbit.stdc_trailing_zeros_us
-
-    # stdlib.h entrypoints
-    libc.src.stdlib.a64l
-    libc.src.stdlib.abs
-    libc.src.stdlib.atof
-    libc.src.stdlib.atoi
-    libc.src.stdlib.atol
-    libc.src.stdlib.atoll
-    libc.src.stdlib.bsearch
-    libc.src.stdlib.div
-    libc.src.stdlib.l64a
-    libc.src.stdlib.labs
-    libc.src.stdlib.ldiv
-    libc.src.stdlib.llabs
-    libc.src.stdlib.lldiv
-    libc.src.stdlib.memalignment
-    libc.src.stdlib.qsort
-    libc.src.stdlib.qsort_r
-    libc.src.stdlib.rand
-    libc.src.stdlib.srand
-    libc.src.stdlib.strfromd
-    libc.src.stdlib.strfromf
-    libc.src.stdlib.strfroml
-    libc.src.stdlib.strtod
-    libc.src.stdlib.strtof
-    libc.src.stdlib.strtol
-    libc.src.stdlib.strtold
-    libc.src.stdlib.strtoll
-    libc.src.stdlib.strtoul
-    libc.src.stdlib.strtoull
-
-    # stdlib.h external entrypoints
-    libc.src.stdlib.aligned_alloc
-    libc.src.stdlib.calloc
-    libc.src.stdlib.free
-    libc.src.stdlib.malloc
-    libc.src.stdlib.realloc
-
-    # stdio.h entrypoints
-    libc.src.stdio.fprintf
-    libc.src.stdio.fscanf
-    libc.src.stdio.vfscanf
-    libc.src.stdio.printf
-    libc.src.stdio.remove
-    libc.src.stdio.rename
-    libc.src.stdio.scanf
-    libc.src.stdio.vscanf
-    libc.src.stdio.snprintf
-    libc.src.stdio.sprintf
-    libc.src.stdio.asprintf
-    libc.src.stdio.sscanf
-    libc.src.stdio.vsscanf
-    libc.src.stdio.vfprintf
-    libc.src.stdio.vprintf
-    libc.src.stdio.vsnprintf
-    libc.src.stdio.vsprintf
-    libc.src.stdio.vasprintf
-
-    # sys/epoll.h entrypoints
-    libc.src.sys.epoll.epoll_create
-    libc.src.sys.epoll.epoll_create1
-    libc.src.sys.epoll.epoll_ctl
-    libc.src.sys.epoll.epoll_pwait
-    libc.src.sys.epoll.epoll_wait
-    # TODO: Need to check if pwait2 is available before providing.
-    # https://github.com/llvm/llvm-project/issues/80060
-    # libc.src.sys.epoll.epoll_pwait2
-
-    # sys/ioctl.h entrypoints
-    libc.src.sys.ioctl.ioctl
-
-    # sys/mman.h entrypoints
-    libc.src.sys.mman.madvise
-    libc.src.sys.mman.mincore
-    libc.src.sys.mman.mlock
-    libc.src.sys.mman.mlock2
-    libc.src.sys.mman.mlockall
-    libc.src.sys.mman.mmap
-    libc.src.sys.mman.mremap
-    libc.src.sys.mman.mprotect
-    libc.src.sys.mman.msync
-    libc.src.sys.mman.munlock
-    libc.src.sys.mman.munlockall
-    libc.src.sys.mman.munmap
-    libc.src.sys.mman.remap_file_pages
-    libc.src.sys.mman.posix_madvise
-    libc.src.sys.mman.shm_open
-    libc.src.sys.mman.shm_unlink
-
-    # sys/random.h entrypoints
-    libc.src.sys.random.getrandom
-
-    # sys/resource.h entrypoints
-    libc.src.sys.resource.getrlimit
-    libc.src.sys.resource.setrlimit
-
-    # sys/sendfile entrypoints
-    libc.src.sys.sendfile.sendfile
-
-    # sys/stat.h entrypoints
-    libc.src.sys.stat.chmod
-    libc.src.sys.stat.fchmod
-    libc.src.sys.stat.fchmodat
-    libc.src.sys.stat.fstat
-    libc.src.sys.stat.lstat
-    libc.src.sys.stat.mkdir
-    libc.src.sys.stat.mkdirat
-    libc.src.sys.stat.stat
-
-    # sys/statvfs.h
-    libc.src.sys.statvfs.fstatvfs
-    libc.src.sys.statvfs.statvfs
-
-    # sys/utimes.h entrypoints
-    libc.src.sys.time.utimes
-
-    # sys/utsname.h entrypoints
-    libc.src.sys.utsname.uname
-
-    # sys/wait.h entrypoints
-    libc.src.sys.wait.wait
-    libc.src.sys.wait.wait4
-    libc.src.sys.wait.waitpid
-
-    # sys/prctl.h entrypoints
-    libc.src.sys.prctl.prctl
-
-    # sys/auxv.h entrypoints
-    libc.src.sys.auxv.getauxval
-
-    # termios.h entrypoints
-    libc.src.termios.cfgetispeed
-    libc.src.termios.cfgetospeed
-    libc.src.termios.cfsetispeed
-    libc.src.termios.cfsetospeed
-    libc.src.termios.tcdrain
-    libc.src.termios.tcflow
-    libc.src.termios.tcflush
-    libc.src.termios.tcgetattr
-    libc.src.termios.tcgetsid
-    libc.src.termios.tcsendbreak
-    libc.src.termios.tcsetattr
-
-    # unistd.h entrypoints
-    libc.src.unistd.access
-    libc.src.unistd.chdir
-    libc.src.unistd.close
-    libc.src.unistd.dup
-    libc.src.unistd.dup2
-    libc.src.unistd.dup3
-    libc.src.unistd.execve
-    libc.src.unistd.faccessat
-    libc.src.unistd.fchdir
-    libc.src.unistd.fpathconf
-    libc.src.unistd.fsync
-    libc.src.unistd.ftruncate
-    libc.src.unistd.getcwd
-    libc.src.unistd.getentropy
-    libc.src.unistd.geteuid
-    libc.src.unistd.gethostname
-    libc.src.unistd.getpagesize
-    libc.src.unistd.getpid
-    libc.src.unistd.getppid
-    libc.src.unistd.getsid
-    libc.src.unistd.gettid
-    libc.src.unistd.getuid
-    libc.src.unistd.isatty
-    libc.src.unistd.link
-    libc.src.unistd.linkat
-    libc.src.unistd.lseek
-    libc.src.unistd.pathconf
-    libc.src.unistd.pipe
-    libc.src.unistd.pipe2
-    libc.src.unistd.pread
-    libc.src.unistd.pwrite
-    libc.src.unistd.read
-    libc.src.unistd.readlink
-    libc.src.unistd.readlinkat
-    libc.src.unistd.rmdir
-    libc.src.unistd.setsid
-    libc.src.unistd.symlink
-    libc.src.unistd.symlinkat
-    libc.src.unistd.sysconf
-    libc.src.unistd.truncate
-    libc.src.unistd.unlink
-    libc.src.unistd.unlinkat
-    libc.src.unistd.write
-
-    # wchar.h entrypoints
-    libc.src.wchar.btowc
-    libc.src.wchar.wcslen
-    libc.src.wchar.wctob
-
-    # wctype.h entrypoints
-    libc.src.wctype.iswalpha
-
-    # sys/uio.h entrypoints
-    libc.src.sys.uio.writev
-    libc.src.sys.uio.readv
-
-    # sys/time.h entrypoints
-    libc.src.sys.time.setitimer
-    libc.src.sys.time.getitimer
-)
-
-if(LLVM_LIBC_INCLUDE_SCUDO)
-  list(APPEND TARGET_LIBC_ENTRYPOINTS
-    # malloc.h external entrypoints
-    libc.src.stdlib.mallopt
-  )
-endif()
-
-set(TARGET_LIBM_ENTRYPOINTS
-    # complex.h entrypoints
-    libc.src.complex.creal
-    libc.src.complex.crealf
-    libc.src.complex.creall
-    libc.src.complex.cimag
-    libc.src.complex.cimagf
-    libc.src.complex.cimagl
-    libc.src.complex.conj
-    libc.src.complex.conjf
-    libc.src.complex.conjl
-    libc.src.complex.cproj
-    libc.src.complex.cprojf
-    libc.src.complex.cprojl
-
-    # fenv.h entrypoints
-    libc.src.fenv.feclearexcept
-    libc.src.fenv.fedisableexcept
-    libc.src.fenv.feenableexcept
-    libc.src.fenv.fegetenv
-    libc.src.fenv.fegetexcept
-    libc.src.fenv.fegetexceptflag
-    libc.src.fenv.fegetround
-    libc.src.fenv.feholdexcept
-    libc.src.fenv.feraiseexcept
-    libc.src.fenv.fesetenv
-    libc.src.fenv.fesetexcept
-    libc.src.fenv.fesetexceptflag
-    libc.src.fenv.fesetround
-    libc.src.fenv.fetestexcept
-    libc.src.fenv.fetestexceptflag
-    libc.src.fenv.feupdateenv
-
-    # math.h entrypoints
-    libc.src.math.acos
-    libc.src.math.acosf
-    libc.src.math.acoshf
-    libc.src.math.asin
-    libc.src.math.asinf
-    libc.src.math.asinhf
-    libc.src.math.atan2
-    libc.src.math.atan2f
-    libc.src.math.atan
-    libc.src.math.atanf
-    libc.src.math.atanhf
-    libc.src.math.canonicalize
-    libc.src.math.canonicalizef
-    libc.src.math.canonicalizel
-    libc.src.math.cbrt
-    libc.src.math.cbrtf
-    libc.src.math.ceil
-    libc.src.math.ceilf
-    libc.src.math.ceill
-    libc.src.math.copysign
-    libc.src.math.copysignf
-    libc.src.math.copysignl
-    libc.src.math.cos
-    libc.src.math.cosf
-    libc.src.math.coshf
-    libc.src.math.cospif
-    libc.src.math.daddl
-    libc.src.math.ddivl
-    libc.src.math.dfmal
-    libc.src.math.dmull
-    libc.src.math.dsqrtl
-    libc.src.math.dsubl
-    libc.src.math.erff
-    libc.src.math.exp
-    libc.src.math.exp10
-    libc.src.math.exp10f
-    libc.src.math.exp10m1f
-    libc.src.math.exp2
-    libc.src.math.exp2f
-    libc.src.math.exp2m1f
-    libc.src.math.expf
-    libc.src.math.expm1
-    libc.src.math.expm1f
-    libc.src.math.fabs
-    libc.src.math.fabsf
-    libc.src.math.fabsl
-    libc.src.math.fadd
-    libc.src.math.faddl
-    libc.src.math.fadd
-    libc.src.math.fdim
-    libc.src.math.fdimf
-    libc.src.math.fdiml
-    libc.src.math.fdiv
-    libc.src.math.fdivl
-    libc.src.math.ffma
-    libc.src.math.ffmal
-    libc.src.math.floor
-    libc.src.math.floorf
-    libc.src.math.floorl
-    libc.src.math.fma
-    libc.src.math.fmaf
-    libc.src.math.fmax
-    libc.src.math.fmaxf
-    libc.src.math.fmaximum
-    libc.src.math.fmaximum_mag
-    libc.src.math.fmaximum_mag_num
-    libc.src.math.fmaximum_mag_numf
-    libc.src.math.fmaximum_mag_numl
-    libc.src.math.fmaximum_magf
-    libc.src.math.fmaximum_magl
-    libc.src.math.fmaximum_num
-    libc.src.math.fmaximum_numf
-    libc.src.math.fmaximum_numl
-    libc.src.math.fmaximumf
-    libc.src.math.fmaximuml
-    libc.src.math.fmaxl
-    libc.src.math.fmin
-    libc.src.math.fminf
-    libc.src.math.fminimum
-    libc.src.math.fminimum_mag
-    libc.src.math.fminimum_mag_num
-    libc.src.math.fminimum_mag_numf
-    libc.src.math.fminimum_mag_numl
-    libc.src.math.fminimum_magf
-    libc.src.math.fminimum_magl
-    libc.src.math.fminimum_num
-    libc.src.math.fminimum_numf
-    libc.src.math.fminimum_numl
-    libc.src.math.fminimumf
-    libc.src.math.fminimuml
-    libc.src.math.fminl
-    libc.src.math.fmod
-    libc.src.math.fmodf
-    libc.src.math.fmodl
-    libc.src.math.fmul
-    libc.src.math.fmull
-    libc.src.math.frexp
-    libc.src.math.frexpf
-    libc.src.math.frexpl
-    libc.src.math.fromfp
-    libc.src.math.fromfpf
-    libc.src.math.fromfpl
-    libc.src.math.fromfpx
-    libc.src.math.fromfpxf
-    libc.src.math.fromfpxl
-    libc.src.math.fsqrt
-    libc.src.math.fsqrtl
-    libc.src.math.fsub
-    libc.src.math.fsubl
-    libc.src.math.getpayload
-    libc.src.math.getpayloadf
-    libc.src.math.getpayloadl
-    libc.src.math.hypot
-    libc.src.math.hypotf
-    libc.src.math.ilogb
-    libc.src.math.ilogbf
-    libc.src.math.ilogbl
-    libc.src.math.iscanonical
-    libc.src.math.iscanonicalf
-    libc.src.math.iscanonicall
-    libc.src.math.isnan
-    libc.src.math.isnanf
-    libc.src.math.isnanl
-    libc.src.math.issignaling
-    libc.src.math.issignalingf
-    libc.src.math.issignalingl
-    libc.src.math.ldexp
-    libc.src.math.ldexpf
-    libc.src.math.ldexpl
-    libc.src.math.llogb
-    libc.src.math.llogbf
-    libc.src.math.llogbl
-    libc.src.math.llrint
-    libc.src.math.llrintf
-    libc.src.math.llrintl
-    libc.src.math.llround
-    libc.src.math.llroundf
-    libc.src.math.llroundl
-    libc.src.math.log
-    libc.src.math.log10
-    libc.src.math.log10f
-    libc.src.math.log1p
-    libc.src.math.log1pf
-    libc.src.math.log2
-    libc.src.math.log2f
-    libc.src.math.logb
-    libc.src.math.logbf
-    libc.src.math.logbl
-    libc.src.math.logf
-    libc.src.math.lrint
-    libc.src.math.lrintf
-    libc.src.math.lrintl
-    libc.src.math.lround
-    libc.src.math.lroundf
-    libc.src.math.lroundl
-    libc.src.math.modf
-    libc.src.math.modff
-    libc.src.math.modfl
-    libc.src.math.nan
-    libc.src.math.nanf
-    libc.src.math.nanl
-    libc.src.math.nearbyint
-    libc.src.math.nearbyintf
-    libc.src.math.nearbyintl
-    libc.src.math.nextafter
-    libc.src.math.nextafterf
-    libc.src.math.nextafterl
-    libc.src.math.nextdown
-    libc.src.math.nextdownf
-    libc.src.math.nextdownl
-    libc.src.math.nexttoward
-    libc.src.math.nexttowardf
-    libc.src.math.nexttowardl
-    libc.src.math.nextup
-    libc.src.math.nextupf
-    libc.src.math.nextupl
-    libc.src.math.pow
-    libc.src.math.powf
-    libc.src.math.remainder
-    libc.src.math.remainderf
-    libc.src.math.remainderl
-    libc.src.math.remquo
-    libc.src.math.remquof
-    libc.src.math.remquol
-    libc.src.math.rint
-    libc.src.math.rintf
-    libc.src.math.rintl
-    libc.src.math.round
-    libc.src.math.roundeven
-    libc.src.math.roundevenf
-    libc.src.math.roundevenl
-    libc.src.math.roundf
-    libc.src.math.roundl
-    libc.src.math.scalbln
-    libc.src.math.scalblnf
-    libc.src.math.scalblnl
-    libc.src.math.scalbn
-    libc.src.math.scalbnf
-    libc.src.math.scalbnl
-    libc.src.math.setpayload
-    libc.src.math.setpayloadf
-    libc.src.math.setpayloadl
-    libc.src.math.setpayloadsig
-    libc.src.math.setpayloadsigf
-    libc.src.math.setpayloadsigl
-    libc.src.math.sin
-    libc.src.math.sincos
-    libc.src.math.sincosf
-    libc.src.math.sinf
-    libc.src.math.sinhf
-    libc.src.math.sinpif
-    libc.src.math.sqrt
-    libc.src.math.sqrtf
-    libc.src.math.sqrtl
-    libc.src.math.tan
-    libc.src.math.tanf
-    libc.src.math.tanhf
-    libc.src.math.tanpif
-    libc.src.math.totalorder
-    libc.src.math.totalorderf
-    libc.src.math.totalorderl
-    libc.src.math.totalordermag
-    libc.src.math.totalordermagf
-    libc.src.math.totalordermagl
-    libc.src.math.trunc
-    libc.src.math.truncf
-    libc.src.math.truncl
-    libc.src.math.ufromfp
-    libc.src.math.ufromfpf
-    libc.src.math.ufromfpl
-    libc.src.math.ufromfpx
-    libc.src.math.ufromfpxf
-    libc.src.math.ufromfpxl
-)
-if(LIBC_TYPES_HAS_CFLOAT16)
-  list(APPEND TARGET_LIBM_ENTRYPOINTS
-    # complex.h C23 _Complex _Float16 entrypoints
-    libc.src.complex.crealf16
-    libc.src.complex.cimagf16
-    libc.src.complex.conjf16
-    libc.src.complex.cprojf16
-  )
-endif()
-
-if(LIBC_TYPES_HAS_FLOAT16)
-  list(APPEND TARGET_LIBM_ENTRYPOINTS
-    # math.h C23 _Float16 entrypoints
-    libc.src.math.acosf16
-    libc.src.math.acoshf16
-    libc.src.math.acospif16
-    libc.src.math.asinf16
-    libc.src.math.asinhf16
-    libc.src.math.atanhf16
-    libc.src.math.canonicalizef16
-    libc.src.math.ceilf16
-    libc.src.math.copysignf16
-    libc.src.math.cosf16
-    libc.src.math.coshf16
-    libc.src.math.cospif16
-    libc.src.math.exp10f16
-    libc.src.math.exp10m1f16
-    libc.src.math.exp2f16
-    libc.src.math.exp2m1f16
-    libc.src.math.expf16
-    libc.src.math.expm1f16
-    libc.src.math.f16add
-    libc.src.math.f16addf
-    libc.src.math.f16addl
-    libc.src.math.f16div
-    libc.src.math.f16divf
-    libc.src.math.f16divl
-    libc.src.math.f16fma
-    libc.src.math.f16fmaf
-    libc.src.math.f16fmal
-    libc.src.math.f16mul
-    libc.src.math.f16mulf
-    libc.src.math.f16mull
-    libc.src.math.f16sqrt
-    libc.src.math.f16sqrtf
-    libc.src.math.f16sqrtl
-    libc.src.math.f16sub
-    libc.src.math.f16subf
-    libc.src.math.f16subl
-    libc.src.math.fabsf16
-    libc.src.math.fdimf16
-    libc.src.math.floorf16
-    libc.src.math.fmaf16
-    libc.src.math.fmaxf16
-    libc.src.math.fmaximum_mag_numf16
-    libc.src.math.fmaximum_magf16
-    libc.src.math.fmaximum_numf16
-    libc.src.math.fmaximumf16
-    libc.src.math.fminf16
-    libc.src.math.fminimum_mag_numf16
-    libc.src.math.fminimum_magf16
-    libc.src.math.fminimum_numf16
-    libc.src.math.fminimumf16
-    libc.src.math.fmodf16
-    libc.src.math.frexpf16
-    libc.src.math.fromfpf16
-    libc.src.math.fromfpxf16
-    libc.src.math.getpayloadf16
-    libc.src.math.hypotf16
-    libc.src.math.ilogbf16
-    libc.src.math.iscanonicalf16
-    libc.src.math.issignalingf16
-    libc.src.math.ldexpf16
-    libc.src.math.llogbf16
-    libc.src.math.llrintf16
-    libc.src.math.llroundf16
-    libc.src.math.log10f16
-    libc.src.math.log2f16
-    libc.src.math.logbf16
-    libc.src.math.logf16
-    libc.src.math.lrintf16
-    libc.src.math.lroundf16
-    libc.src.math.modff16
-    libc.src.math.nanf16
-    libc.src.math.nearbyintf16
-    libc.src.math.nextafterf16
-    libc.src.math.nextdownf16
-    libc.src.math.nexttowardf16
-    libc.src.math.nextupf16
-    libc.src.math.remainderf16
-    libc.src.math.remquof16
-    libc.src.math.rintf16
-    libc.src.math.roundevenf16
-    libc.src.math.roundf16
-    libc.src.math.rsqrtf
-    libc.src.math.rsqrtf16
-    libc.src.math.scalblnf16
-    libc.src.math.scalbnf16
-    libc.src.math.setpayloadf16
-    libc.src.math.setpayloadsigf16
-    libc.src.math.sinf16
-    libc.src.math.sinhf16
-    libc.src.math.sinpif16
-    libc.src.math.sqrtf16
-    libc.src.math.tanf16
-    libc.src.math.tanhf16
-    libc.src.math.tanpif16
-    libc.src.math.totalorderf16
-    libc.src.math.totalordermagf16
-    libc.src.math.truncf16
-    libc.src.math.ufromfpf16
-    libc.src.math.ufromfpxf16
-  )
-
-  if(LIBC_TYPES_HAS_FLOAT128)
-    list(APPEND TARGET_LIBM_ENTRYPOINTS
-      # math.h C23 mixed _Float16 and _Float128 entrypoints
-      libc.src.math.f16addf128
-      libc.src.math.f16divf128
-      libc.src.math.f16fmaf128
-      libc.src.math.f16mulf128
-      libc.src.math.f16sqrtf128
-      libc.src.math.f16subf128
-    )
-  endif()
-endif()
-
-if(LIBC_TYPES_HAS_CFLOAT128)
-  list(APPEND TARGET_LIBM_ENTRYPOINTS
-    # complex.h C23 _Complex _Float128 entrypoints
-    libc.src.complex.crealf128
-    libc.src.complex.cimagf128
-    libc.src.complex.conjf128
-    libc.src.complex.cprojf128
-  )
-endif()
-
-if(LIBC_TYPES_HAS_FLOAT128)
-  list(APPEND TARGET_LIBM_ENTRYPOINTS
-    # math.h C23 _Float128 entrypoints
-    libc.src.math.atan2f128
-    libc.src.math.canonicalizef128
-    libc.src.math.ceilf128
-    libc.src.math.copysignf128
-    libc.src.math.daddf128
-    libc.src.math.ddivf128
-    libc.src.math.dfmaf128
-    libc.src.math.dmulf128
-    libc.src.math.dsqrtf128
-    libc.src.math.dsubf128
-    libc.src.math.fabsf128
-    libc.src.math.faddf128
-    libc.src.math.fdimf128
-    libc.src.math.fdivf128
-    libc.src.math.ffmaf128
-    libc.src.math.floorf128
-    libc.src.math.fmaxf128
-    libc.src.math.fmaximum_mag_numf128
-    libc.src.math.fmaximum_magf128
-    libc.src.math.fmaximum_numf128
-    libc.src.math.fmaximumf128
-    libc.src.math.fminf128
-    libc.src.math.fminimum_mag_numf128
-    libc.src.math.fminimum_magf128
-    libc.src.math.fminimum_numf128
-    libc.src.math.fminimumf128
-    libc.src.math.fmodf128
-    libc.src.math.fmulf128
-    libc.src.math.frexpf128
-    libc.src.math.fromfpf128
-    libc.src.math.fromfpxf128
-    libc.src.math.fsqrtf128
-    libc.src.math.fsubf128
-    libc.src.math.getpayloadf128
-    libc.src.math.ilogbf128
-    libc.src.math.iscanonicalf128
-    libc.src.math.issignalingf128
-    libc.src.math.ldexpf128
-    libc.src.math.llogbf128
-    libc.src.math.llrintf128
-    libc.src.math.llroundf128
-    libc.src.math.logbf128
-    libc.src.math.lrintf128
-    libc.src.math.lroundf128
-    libc.src.math.modff128
-    libc.src.math.nanf128
-    libc.src.math.nearbyintf128
-    libc.src.math.nextafterf128
-    libc.src.math.nextdownf128
-    libc.src.math.nextupf128
-    libc.src.math.remainderf128
-    libc.src.math.remquof128
-    libc.src.math.rintf128
-    libc.src.math.roundevenf128
-    libc.src.math.roundf128
-    libc.src.math.scalblnf128
-    libc.src.math.scalbnf128
-    libc.src.math.setpayloadf128
-    libc.src.math.setpayloadsigf128
-    libc.src.math.sqrtf128
-    libc.src.math.totalorderf128
-    libc.src.math.totalordermagf128
-    libc.src.math.truncf128
-    libc.src.math.ufromfpf128
-    libc.src.math.ufromfpxf128
-  )
-endif()
-
-list(APPEND TARGET_LIBM_ENTRYPOINTS
-  # bfloat16 entrypoints
-  libc.src.math.bf16add
-  libc.src.math.bf16addf
-  libc.src.math.bf16addl
-  libc.src.math.bf16div
-  libc.src.math.bf16divf
-  libc.src.math.bf16divl
-  libc.src.math.bf16fma
-  libc.src.math.bf16fmaf
-  libc.src.math.bf16fmal
-  libc.src.math.bf16mul
-  libc.src.math.bf16mulf
-  libc.src.math.bf16mull
-  libc.src.math.bf16sub
-  libc.src.math.bf16subf
-  libc.src.math.bf16subl
-  libc.src.math.canonicalizebf16
-  libc.src.math.ceilbf16
-  libc.src.math.copysignbf16
-  libc.src.math.fabsbf16
-  libc.src.math.fdimbf16
-  libc.src.math.floorbf16
-  libc.src.math.fmaxbf16
-  libc.src.math.fmaximumbf16
-  libc.src.math.fmaximum_magbf16
-  libc.src.math.fmaximum_mag_numbf16
-  libc.src.math.fmaximum_numbf16
-  libc.src.math.fminbf16
-  libc.src.math.fminimumbf16
-  libc.src.math.fminimum_magbf16
-  libc.src.math.fminimum_mag_numbf16
-  libc.src.math.fminimum_numbf16
-  libc.src.math.fmodbf16
-  libc.src.math.frexpbf16
-  libc.src.math.fromfpbf16
-  libc.src.math.fromfpxbf16
-  libc.src.math.getpayloadbf16
-  libc.src.math.ilogbbf16
-  libc.src.math.iscanonicalbf16
-  libc.src.math.issignalingbf16
-  libc.src.math.ldexpbf16
-  libc.src.math.llogbbf16
-  libc.src.math.llrintbf16
-  libc.src.math.llroundbf16
-  libc.src.math.log_bf16
-  libc.src.math.logbbf16
-  libc.src.math.lrintbf16
-  libc.src.math.lroundbf16
-  libc.src.math.modfbf16
-  libc.src.math.nanbf16
-  libc.src.math.nearbyintbf16
-  libc.src.math.nextafterbf16
-  libc.src.math.nextdownbf16
-  libc.src.math.nexttowardbf16
-  libc.src.math.nextupbf16
-  libc.src.math.remainderbf16
-  libc.src.math.remquobf16
-  libc.src.math.rintbf16
-  libc.src.math.roundbf16
-  libc.src.math.roundevenbf16
-  libc.src.math.scalblnbf16
-  libc.src.math.scalbnbf16
-  libc.src.math.setpayloadbf16
-  libc.src.math.setpayloadsigbf16
-  libc.src.math.sqrtbf16
-  libc.src.math.truncbf16
-  libc.src.math.totalorderbf16
-  libc.src.math.totalordermagbf16
-  libc.src.math.ufromfpbf16
-  libc.src.math.ufromfpxbf16
-)
-
-if(LIBC_TYPES_HAS_FLOAT128)
-  list(APPEND TARGET_LIBM_ENTRYPOINTS
-    # math.h C++23 mixed bfloat16 and _Float128 entrypoints
-    libc.src.math.bf16addf128
-    libc.src.math.bf16divf128
-    libc.src.math.bf16fmaf128
-    libc.src.math.bf16mulf128
-    libc.src.math.bf16subf128
-  )
-endif()
-
-if(LIBC_COMPILER_HAS_FIXED_POINT)
-  list(APPEND TARGET_LIBM_ENTRYPOINTS
-    # stdfix.h _Fract and _Accum entrypoints
-    libc.src.stdfix.abshk
-    libc.src.stdfix.abshr
-    libc.src.stdfix.absk
-    libc.src.stdfix.abslk
-    libc.src.stdfix.abslr
-    libc.src.stdfix.absr
-    libc.src.stdfix.exphk
-    libc.src.stdfix.expk
-    libc.src.stdfix.roundhk
-    libc.src.stdfix.roundhr
-    libc.src.stdfix.roundk
-    libc.src.stdfix.roundlk
-    libc.src.stdfix.roundlr
-    libc.src.stdfix.roundr
-    libc.src.stdfix.rounduhk
-    libc.src.stdfix.rounduhr
-    libc.src.stdfix.rounduk
-    libc.src.stdfix.roundulk
-    libc.src.stdfix.roundulr
-    libc.src.stdfix.roundur
-    libc.src.stdfix.sqrtuhk
-    libc.src.stdfix.sqrtuhr
-    libc.src.stdfix.sqrtuk
-    libc.src.stdfix.sqrtur
-    # libc.src.stdfix.sqrtulk
-    libc.src.stdfix.sqrtulr
-    libc.src.stdfix.uhksqrtus
-    libc.src.stdfix.uksqrtui
-    libc.src.stdfix.hrbits
-    libc.src.stdfix.uhrbits
-    libc.src.stdfix.rbits
-    libc.src.stdfix.urbits
-    libc.src.stdfix.lrbits
-    libc.src.stdfix.ulrbits
-    libc.src.stdfix.hkbits
-    libc.src.stdfix.uhkbits
-    libc.src.stdfix.kbits
-    libc.src.stdfix.ukbits
-    libc.src.stdfix.lkbits
-    libc.src.stdfix.ulkbits
-    libc.src.stdfix.bitshr
-    libc.src.stdfix.bitsr
-    libc.src.stdfix.bitslr
-    libc.src.stdfix.bitshk
-    libc.src.stdfix.bitsk
-    libc.src.stdfix.bitslk
-    libc.src.stdfix.bitsuhr
-    libc.src.stdfix.bitsur
-    libc.src.stdfix.bitsulr
-    libc.src.stdfix.bitsuhk
-    libc.src.stdfix.bitsuk
-    libc.src.stdfix.bitsulk
-    libc.src.stdfix.countlshr
-    libc.src.stdfix.countlsr
-    libc.src.stdfix.countlslr
-    libc.src.stdfix.countlshk
-    libc.src.stdfix.countlsk
-    libc.src.stdfix.countlslk
-    libc.src.stdfix.countlsuhr
-    libc.src.stdfix.countlsur
-    libc.src.stdfix.countlsulr
-    libc.src.stdfix.countlsuhk
-    libc.src.stdfix.countlsuk
-    libc.src.stdfix.countlsulk
-    libc.src.stdfix.idivr
-    libc.src.stdfix.idivlr
-    libc.src.stdfix.idivk
-    libc.src.stdfix.idivlk
-    libc.src.stdfix.idivur
-    libc.src.stdfix.idivulr
-    libc.src.stdfix.idivuk
-    libc.src.stdfix.idivulk
-    libc.src.stdfix.rdivi
-  )
-endif()
-
-if(LLVM_LIBC_FULL_BUILD)
-  list(APPEND TARGET_LIBC_ENTRYPOINTS
-    # ctype.h entrypoints
-    libc.src.ctype.isalnum_l
-    libc.src.ctype.isalpha_l
-    libc.src.ctype.isblank_l
-    libc.src.ctype.iscntrl_l
-    libc.src.ctype.isdigit_l
-    libc.src.ctype.isgraph_l
-    libc.src.ctype.islower_l
-    libc.src.ctype.isprint_l
-    libc.src.ctype.ispunct_l
-    libc.src.ctype.isspace_l
-    libc.src.ctype.isupper_l
-    libc.src.ctype.isxdigit_l
-    libc.src.ctype.tolower_l
-    libc.src.ctype.toupper_l
-
-    # stdlib.h entrypoints
-    libc.src.stdlib.strtod_l
-    libc.src.stdlib.strtof_l
-    libc.src.stdlib.strtol_l
-    libc.src.stdlib.strtold_l
-    libc.src.stdlib.strtoll_l
-    libc.src.stdlib.strtoul_l
-    libc.src.stdlib.strtoull_l
-
-    # string.h entrypoints
-    libc.src.string.strcoll_l
-    libc.src.string.strxfrm_l
-
-    # strings.h entrypoints
-    libc.src.strings.strcasecmp_l
-    libc.src.strings.strncasecmp_l
-
-    # assert.h entrypoints
-    libc.src.assert.__assert_fail
-
-    # compiler entrypoints (no corresponding header)
-    libc.src.compiler.__stack_chk_fail
-
-    # dirent.h entrypoints
-    libc.src.dirent.closedir
-    libc.src.dirent.dirfd
-    libc.src.dirent.opendir
-    libc.src.dirent.readdir
-
-    # arpa/inet.h entrypoints
-    libc.src.arpa.inet.htonl
-    libc.src.arpa.inet.htons
-    libc.src.arpa.inet.inet_addr
-    libc.src.arpa.inet.inet_aton
-    libc.src.arpa.inet.ntohl
-    libc.src.arpa.inet.ntohs
-
-    # pthread.h entrypoints
-    libc.src.pthread.pthread_atfork
-    libc.src.pthread.pthread_attr_destroy
-    libc.src.pthread.pthread_attr_getdetachstate
-    libc.src.pthread.pthread_attr_getguardsize
-    libc.src.pthread.pthread_attr_getstack
-    libc.src.pthread.pthread_attr_getstacksize
-    libc.src.pthread.pthread_attr_init
-    libc.src.pthread.pthread_attr_setdetachstate
-    libc.src.pthread.pthread_attr_setguardsize
-    libc.src.pthread.pthread_attr_setstack
-    libc.src.pthread.pthread_attr_setstacksize
-    libc.src.pthread.pthread_condattr_destroy
-    libc.src.pthread.pthread_condattr_getclock
-    libc.src.pthread.pthread_condattr_getpshared
-    libc.src.pthread.pthread_condattr_init
-    libc.src.pthread.pthread_condattr_setclock
-    libc.src.pthread.pthread_condattr_setpshared
-    libc.src.pthread.pthread_create
-    libc.src.pthread.pthread_detach
-    libc.src.pthread.pthread_equal
-    libc.src.pthread.pthread_exit
-    libc.src.pthread.pthread_getname_np
-    libc.src.pthread.pthread_getspecific
-    libc.src.pthread.pthread_join
-    libc.src.pthread.pthread_key_create
-    libc.src.pthread.pthread_key_delete
-    libc.src.pthread.pthread_mutex_destroy
-    libc.src.pthread.pthread_mutex_init
-    libc.src.pthread.pthread_mutex_lock
-    libc.src.pthread.pthread_mutex_unlock
-    libc.src.pthread.pthread_mutexattr_destroy
-    libc.src.pthread.pthread_mutexattr_getpshared
-    libc.src.pthread.pthread_mutexattr_getrobust
-    libc.src.pthread.pthread_mutexattr_gettype
-    libc.src.pthread.pthread_mutexattr_init
-    libc.src.pthread.pthread_mutexattr_setpshared
-    libc.src.pthread.pthread_mutexattr_setrobust
-    libc.src.pthread.pthread_mutexattr_settype
-    libc.src.pthread.pthread_once
-    libc.src.pthread.pthread_rwlock_clockrdlock
-    libc.src.pthread.pthread_rwlock_clockwrlock
-    libc.src.pthread.pthread_rwlock_destroy
-    libc.src.pthread.pthread_rwlock_init
-    libc.src.pthread.pthread_rwlock_rdlock
-    libc.src.pthread.pthread_rwlock_timedrdlock
-    libc.src.pthread.pthread_rwlock_timedwrlock
-    libc.src.pthread.pthread_rwlock_tryrdlock
-    libc.src.pthread.pthread_rwlock_trywrlock
-    libc.src.pthread.pthread_rwlock_unlock
-    libc.src.pthread.pthread_rwlock_wrlock
-    libc.src.pthread.pthread_rwlockattr_destroy
-    libc.src.pthread.pthread_rwlockattr_getkind_np
-    libc.src.pthread.pthread_rwlockattr_getpshared
-    libc.src.pthread.pthread_rwlockattr_init
-    libc.src.pthread.pthread_rwlockattr_setkind_np
-    libc.src.pthread.pthread_rwlockattr_setpshared
-    libc.src.pthread.pthread_spin_destroy
-    libc.src.pthread.pthread_spin_init
-    libc.src.pthread.pthread_spin_lock
-    libc.src.pthread.pthread_spin_trylock
-    libc.src.pthread.pthread_spin_unlock
-    libc.src.pthread.pthread_self
-    libc.src.pthread.pthread_setname_np
-    libc.src.pthread.pthread_setspecific
-
-    # sched.h entrypoints
-    libc.src.sched.__sched_getcpucount
-    libc.src.sched.__sched_setcpuzero
-    libc.src.sched.__sched_setcpuset
-    libc.src.sched.__sched_getcpuisset
-
-    # setjmp.h entrypoints
-    libc.src.setjmp.longjmp
-    libc.src.setjmp.setjmp
-    libc.src.setjmp.siglongjmp
-    libc.src.setjmp.sigsetjmp
-
-    # stdio.h entrypoints
-    libc.src.stdio.clearerr
-    libc.src.stdio.clearerr_unlocked
-    libc.src.stdio.fclose
-    libc.src.stdio.fdopen
-    libc.src.stdio.feof
-    libc.src.stdio.feof_unlocked
-    libc.src.stdio.ferror
-    libc.src.stdio.ferror_unlocked
-    libc.src.stdio.fflush
-    libc.src.stdio.fgetc
-    libc.src.stdio.fgetc_unlocked
-    libc.src.stdio.fgets
-    libc.src.stdio.fileno
-    libc.src.stdio.flockfile
-    libc.src.stdio.fopen
-    libc.src.stdio.fopencookie
-    libc.src.stdio.fputc
-    libc.src.stdio.fputs
-    libc.src.stdio.fread
-    libc.src.stdio.fread_unlocked
-    libc.src.stdio.fseek
-    libc.src.stdio.fseeko
-    libc.src.stdio.ftell
-    libc.src.stdio.ftello
-    libc.src.stdio.funlockfile
-    libc.src.stdio.fwrite
-    libc.src.stdio.fwrite_unlocked
-    libc.src.stdio.getc
-    libc.src.stdio.getc_unlocked
-    libc.src.stdio.getchar
-    libc.src.stdio.getchar_unlocked
-    libc.src.stdio.perror
-    libc.src.stdio.putc
-    libc.src.stdio.putchar
-    libc.src.stdio.puts
-    libc.src.stdio.setbuf
-    libc.src.stdio.setvbuf
-    libc.src.stdio.stderr
-    libc.src.stdio.stdin
-    libc.src.stdio.stdout
-    libc.src.stdio.ungetc
-
-    # stdlib.h entrypoints
-    libc.src.stdlib._Exit
-    libc.src.stdlib.abort
-    libc.src.stdlib.at_quick_exit
-    libc.src.stdlib.atexit
-    libc.src.stdlib.exit
-    libc.src.stdlib.getenv
-    libc.src.stdlib.quick_exit
-
-    # signal.h entrypoints
-    libc.src.signal.kill
-    libc.src.signal.raise
-    libc.src.signal.sigaction
-    libc.src.signal.sigaddset
-    libc.src.signal.sigaltstack
-    libc.src.signal.sigdelset
-    libc.src.signal.sigemptyset
-    libc.src.signal.sigfillset
-    libc.src.signal.signal
-    libc.src.signal.sigprocmask
-
-    # spawn.h entrypoints
-    libc.src.spawn.posix_spawn
-    libc.src.spawn.posix_spawn_file_actions_addclose
-    libc.src.spawn.posix_spawn_file_actions_adddup2
-    libc.src.spawn.posix_spawn_file_actions_addopen
-    libc.src.spawn.posix_spawn_file_actions_destroy
-    libc.src.spawn.posix_spawn_file_actions_init
-
-    # search.h entrypoints
-    libc.src.search.hcreate
-    libc.src.search.hcreate_r
-    libc.src.search.hdestroy
-    libc.src.search.hdestroy_r
-    libc.src.search.hsearch
-    libc.src.search.hsearch_r
-    libc.src.search.insque
-    libc.src.search.lfind
-    libc.src.search.lsearch
-    libc.src.search.remque
-
-    # threads.h entrypoints
-    libc.src.threads.call_once
-    libc.src.threads.cnd_broadcast
-    libc.src.threads.cnd_destroy
-    libc.src.threads.cnd_init
-    libc.src.threads.cnd_signal
-    libc.src.threads.cnd_wait
-    libc.src.threads.mtx_destroy
-    libc.src.threads.mtx_init
-    libc.src.threads.mtx_lock
-    libc.src.threads.mtx_unlock
-    libc.src.threads.thrd_create
-    libc.src.threads.thrd_current
-    libc.src.threads.thrd_detach
-    libc.src.threads.thrd_equal
-    libc.src.threads.thrd_exit
-    libc.src.threads.thrd_join
-    libc.src.threads.tss_create
-    libc.src.threads.tss_delete
-    libc.src.threads.tss_get
-    libc.src.threads.tss_set
-
-    # time.h entrypoints
-    libc.src.time.asctime
-    libc.src.time.asctime_r
-    libc.src.time.ctime
-    libc.src.time.ctime_r
-    libc.src.time.clock
-    libc.src.time.clock_gettime
-    libc.src.time.clock_settime
-    libc.src.time.difftime
-    libc.src.time.gettimeofday
-    libc.src.time.gmtime
-    libc.src.time.gmtime_r
-    libc.src.time.mktime
-    libc.src.time.nanosleep
-    libc.src.time.strftime
-    libc.src.time.strftime_l
-    libc.src.time.time
-    libc.src.time.timespec_get
-
-    # locale.h entrypoints
-    libc.src.locale.localeconv
-    libc.src.locale.duplocale
-    libc.src.locale.freelocale
-    libc.src.locale.localeconv
-    libc.src.locale.newlocale
-    libc.src.locale.setlocale
-    libc.src.locale.uselocale
-
-    # unistd.h entrypoints
-    libc.src.unistd.__llvm_libc_syscall
-    libc.src.unistd._exit
-    libc.src.unistd.environ
-    libc.src.unistd.execv
-    libc.src.unistd.fork
-    libc.src.unistd.getopt
-    libc.src.unistd.optarg
-    libc.src.unistd.opterr
-    libc.src.unistd.optind
-    libc.src.unistd.optopt
-    libc.src.unistd.swab
-
-    # sys/select.h entrypoints
-    libc.src.sys.select.select
-
-    # sys/socket.h entrypoints
-    libc.src.sys.socket.bind
-    libc.src.sys.socket.socket
-    libc.src.sys.socket.socketpair
-    libc.src.sys.socket.send
-    libc.src.sys.socket.sendto
-    libc.src.sys.socket.sendmsg
-    libc.src.sys.socket.recv
-    libc.src.sys.socket.recvfrom
-    libc.src.sys.socket.recvmsg
-  )
-endif()
-
-set(TARGET_LLVMLIBC_ENTRYPOINTS
-  ${TARGET_LIBC_ENTRYPOINTS}
-  ${TARGET_LIBM_ENTRYPOINTS}
-)
+set(TARGET_LIBC_ENTRYPOINTS
+    # ctype.h entrypoints
+    libc.src.ctype.isalnum
+    libc.src.ctype.isalpha
+    libc.src.ctype.isascii
+    libc.src.ctype.isblank
+    libc.src.ctype.iscntrl
+    libc.src.ctype.isdigit
+    libc.src.ctype.isgraph
+    libc.src.ctype.islower
+    libc.src.ctype.isprint
+    libc.src.ctype.ispunct
+    libc.src.ctype.isspace
+    libc.src.ctype.isupper
+    libc.src.ctype.isxdigit
+    libc.src.ctype.toascii
+    libc.src.ctype.tolower
+    libc.src.ctype.toupper
+
+    # dlfcn.h entrypoints
+    libc.src.dlfcn.dlclose
+    libc.src.dlfcn.dlerror
+    libc.src.dlfcn.dlopen
+    libc.src.dlfcn.dlsym
+
+    # errno.h entrypoints
+    libc.src.errno.errno
+
+    # fcntl.h entrypoints
+    libc.src.fcntl.creat
+    libc.src.fcntl.fcntl
+    libc.src.fcntl.open
+    libc.src.fcntl.openat
+
+    # poll.h entrypoints
+    libc.src.poll.poll
+
+    # sched.h entrypoints
+    libc.src.sched.sched_get_priority_max
+    libc.src.sched.sched_get_priority_min
+    libc.src.sched.sched_getaffinity
+    libc.src.sched.sched_getparam
+    libc.src.sched.sched_getscheduler
+    libc.src.sched.sched_rr_get_interval
+    libc.src.sched.sched_setaffinity
+    libc.src.sched.sched_setparam
+    libc.src.sched.sched_setscheduler
+    libc.src.sched.sched_yield
+
+    # string.h entrypoints
+    libc.src.string.memccpy
+    libc.src.string.memchr
+    libc.src.string.memcmp
+    libc.src.string.memcpy
+    libc.src.string.memmem
+    libc.src.string.memmove
+    libc.src.string.mempcpy
+    libc.src.string.memrchr
+    libc.src.string.memset
+    libc.src.string.memset_explicit
+    libc.src.string.stpcpy
+    libc.src.string.stpncpy
+    libc.src.string.strcasestr
+    libc.src.string.strcat
+    libc.src.string.strchr
+    libc.src.string.strchrnul
+    libc.src.string.strcmp
+    libc.src.string.strcoll
+    libc.src.string.strcpy
+    libc.src.string.strcspn
+    libc.src.string.strdup
+    libc.src.string.strerror
+    libc.src.string.strerror_r
+    libc.src.string.strlcat
+    libc.src.string.strlcpy
+    libc.src.string.strlen
+    libc.src.string.strncat
+    libc.src.string.strncmp
+    libc.src.string.strncpy
+    libc.src.string.strndup
+    libc.src.string.strnlen
+    libc.src.string.strpbrk
+    libc.src.string.strrchr
+    libc.src.string.strsep
+    libc.src.string.strsignal
+    libc.src.string.strspn
+    libc.src.string.strstr
+    libc.src.string.strtok
+    libc.src.string.strtok_r
+    libc.src.string.strxfrm
+
+    # strings.h entrypoints
+    libc.src.strings.bcmp
+    libc.src.strings.bcopy
+    libc.src.strings.bzero
+    libc.src.strings.ffs
+    libc.src.strings.ffsl
+    libc.src.strings.ffsll
+    libc.src.strings.index
+    libc.src.strings.rindex
+    libc.src.strings.strcasecmp
+    libc.src.strings.strncasecmp
+
+    # inttypes.h entrypoints
+    libc.src.inttypes.imaxabs
+    libc.src.inttypes.imaxdiv
+    libc.src.inttypes.strtoimax
+    libc.src.inttypes.strtoumax
+
+    # stdbit.h entrypoints
+    libc.src.stdbit.stdc_bit_ceil_uc
+    libc.src.stdbit.stdc_bit_ceil_ui
+    libc.src.stdbit.stdc_bit_ceil_ul
+    libc.src.stdbit.stdc_bit_ceil_ull
+    libc.src.stdbit.stdc_bit_ceil_us
+    libc.src.stdbit.stdc_bit_floor_uc
+    libc.src.stdbit.stdc_bit_floor_ui
+    libc.src.stdbit.stdc_bit_floor_ul
+    libc.src.stdbit.stdc_bit_floor_ull
+    libc.src.stdbit.stdc_bit_floor_us
+    libc.src.stdbit.stdc_bit_width_uc
+    libc.src.stdbit.stdc_bit_width_ui
+    libc.src.stdbit.stdc_bit_width_ul
+    libc.src.stdbit.stdc_bit_width_ull
+    libc.src.stdbit.stdc_bit_width_us
+    libc.src.stdbit.stdc_count_ones_uc
+    libc.src.stdbit.stdc_count_ones_ui
+    libc.src.stdbit.stdc_count_ones_ul
+    libc.src.stdbit.stdc_count_ones_ull
+    libc.src.stdbit.stdc_count_ones_us
+    libc.src.stdbit.stdc_count_zeros_uc
+    libc.src.stdbit.stdc_count_zeros_ui
+    libc.src.stdbit.stdc_count_zeros_ul
+    libc.src.stdbit.stdc_count_zeros_ull
+    libc.src.stdbit.stdc_count_zeros_us
+    libc.src.stdbit.stdc_first_leading_one_uc
+    libc.src.stdbit.stdc_first_leading_one_ui
+    libc.src.stdbit.stdc_first_leading_one_ul
+    libc.src.stdbit.stdc_first_leading_one_ull
+    libc.src.stdbit.stdc_first_leading_one_us
+    libc.src.stdbit.stdc_first_leading_zero_uc
+    libc.src.stdbit.stdc_first_leading_zero_ui
+    libc.src.stdbit.stdc_first_leading_zero_ul
+    libc.src.stdbit.stdc_first_leading_zero_ull
+    libc.src.stdbit.stdc_first_leading_zero_us
+    libc.src.stdbit.stdc_first_trailing_one_uc
+    libc.src.stdbit.stdc_first_trailing_one_ui
+    libc.src.stdbit.stdc_first_trailing_one_ul
+    libc.src.stdbit.stdc_first_trailing_one_ull
+    libc.src.stdbit.stdc_first_trailing_one_us
+    libc.src.stdbit.stdc_first_trailing_zero_uc
+    libc.src.stdbit.stdc_first_trailing_zero_ui
+    libc.src.stdbit.stdc_first_trailing_zero_ul
+    libc.src.stdbit.stdc_first_trailing_zero_ull
+    libc.src.stdbit.stdc_first_trailing_zero_us
+    libc.src.stdbit.stdc_has_single_bit_uc
+    libc.src.stdbit.stdc_has_single_bit_ui
+    libc.src.stdbit.stdc_has_single_bit_ul
+    libc.src.stdbit.stdc_has_single_bit_ull
+    libc.src.stdbit.stdc_has_single_bit_us
+    libc.src.stdbit.stdc_leading_ones_uc
+    libc.src.stdbit.stdc_leading_ones_ui
+    libc.src.stdbit.stdc_leading_ones_ul
+    libc.src.stdbit.stdc_leading_ones_ull
+    libc.src.stdbit.stdc_leading_ones_us
+    libc.src.stdbit.stdc_leading_zeros_uc
+    libc.src.stdbit.stdc_leading_zeros_ui
+    libc.src.stdbit.stdc_leading_zeros_ul
+    libc.src.stdbit.stdc_leading_zeros_ull
+    libc.src.stdbit.stdc_leading_zeros_us
+    libc.src.stdbit.stdc_trailing_ones_uc
+    libc.src.stdbit.stdc_trailing_ones_ui
+    libc.src.stdbit.stdc_trailing_ones_ul
+    libc.src.stdbit.stdc_trailing_ones_ull
+    libc.src.stdbit.stdc_trailing_ones_us
+    libc.src.stdbit.stdc_trailing_zeros_uc
+    libc.src.stdbit.stdc_trailing_zeros_ui
+    libc.src.stdbit.stdc_trailing_zeros_ul
+    libc.src.stdbit.stdc_trailing_zeros_ull
+    libc.src.stdbit.stdc_trailing_zeros_us
+
+    # stdlib.h entrypoints
+    libc.src.stdlib.a64l
+    libc.src.stdlib.abs
+    libc.src.stdlib.atof
+    libc.src.stdlib.atoi
+    libc.src.stdlib.atol
+    libc.src.stdlib.atoll
+    libc.src.stdlib.bsearch
+    libc.src.stdlib.div
+    libc.src.stdlib.l64a
+    libc.src.stdlib.labs
+    libc.src.stdlib.ldiv
+    libc.src.stdlib.llabs
+    libc.src.stdlib.lldiv
+    libc.src.stdlib.memalignment
+    libc.src.stdlib.qsort
+    libc.src.stdlib.qsort_r
+    libc.src.stdlib.rand
+    libc.src.stdlib.srand
+    libc.src.stdlib.strfromd
+    libc.src.stdlib.strfromf
+    libc.src.stdlib.strfroml
+    libc.src.stdlib.strtod
+    libc.src.stdlib.strtof
+    libc.src.stdlib.strtol
+    libc.src.stdlib.strtold
+    libc.src.stdlib.strtoll
+    libc.src.stdlib.strtoul
+    libc.src.stdlib.strtoull
+
+    # stdlib.h external entrypoints
+    libc.src.stdlib.aligned_alloc
+    libc.src.stdlib.calloc
+    libc.src.stdlib.free
+    libc.src.stdlib.malloc
+    libc.src.stdlib.realloc
+
+    # stdio.h entrypoints
+    libc.src.stdio.fprintf
+    libc.src.stdio.fscanf
+    libc.src.stdio.vfscanf
+    libc.src.stdio.printf
+    libc.src.stdio.remove
+    libc.src.stdio.rename
+    libc.src.stdio.scanf
+    libc.src.stdio.vscanf
+    libc.src.stdio.snprintf
+    libc.src.stdio.sprintf
+    libc.src.stdio.asprintf
+    libc.src.stdio.sscanf
+    libc.src.stdio.vsscanf
+    libc.src.stdio.vfprintf
+    libc.src.stdio.vprintf
+    libc.src.stdio.vsnprintf
+    libc.src.stdio.vsprintf
+    libc.src.stdio.vasprintf
+
+    # sys/epoll.h entrypoints
+    libc.src.sys.epoll.epoll_create
+    libc.src.sys.epoll.epoll_create1
+    libc.src.sys.epoll.epoll_ctl
+    libc.src.sys.epoll.epoll_pwait
+    libc.src.sys.epoll.epoll_wait
+    # TODO: Need to check if pwait2 is available before providing.
+    # https://github.com/llvm/llvm-project/issues/80060
+    # libc.src.sys.epoll.epoll_pwait2
+
+    # sys/ioctl.h entrypoints
+    libc.src.sys.ioctl.ioctl
+
+    # sys/mman.h entrypoints
+    libc.src.sys.mman.madvise
+    libc.src.sys.mman.mincore
+    libc.src.sys.mman.mlock
+    libc.src.sys.mman.mlock2
+    libc.src.sys.mman.mlockall
+    libc.src.sys.mman.mmap
+    libc.src.sys.mman.mremap
+    libc.src.sys.mman.mprotect
+    libc.src.sys.mman.msync
+    libc.src.sys.mman.munlock
+    libc.src.sys.mman.munlockall
+    libc.src.sys.mman.munmap
+    libc.src.sys.mman.remap_file_pages
+    libc.src.sys.mman.posix_madvise
+    libc.src.sys.mman.shm_open
+    libc.src.sys.mman.shm_unlink
+
+    # sys/random.h entrypoints
+    libc.src.sys.random.getrandom
+
+    # sys/resource.h entrypoints
+    libc.src.sys.resource.getrlimit
+    libc.src.sys.resource.setrlimit
+
+    # sys/sendfile entrypoints
+    libc.src.sys.sendfile.sendfile
+
+    # sys/stat.h entrypoints
+    libc.src.sys.stat.chmod
+    libc.src.sys.stat.fchmod
+    libc.src.sys.stat.fchmodat
+    libc.src.sys.stat.fstat
+    libc.src.sys.stat.lstat
+    libc.src.sys.stat.mkdir
+    libc.src.sys.stat.mkdirat
+    libc.src.sys.stat.stat
+
+    # sys/statvfs.h
+    libc.src.sys.statvfs.fstatvfs
+    libc.src.sys.statvfs.statvfs
+
+    # sys/utimes.h entrypoints
+    libc.src.sys.time.utimes
+
+    # sys/utsname.h entrypoints
+    libc.src.sys.utsname.uname
+
+    # sys/wait.h entrypoints
+    libc.src.sys.wait.wait
+    libc.src.sys.wait.wait4
+    libc.src.sys.wait.waitpid
+
+    # sys/prctl.h entrypoints
+    libc.src.sys.prctl.prctl
+
+    # sys/auxv.h entrypoints
+    libc.src.sys.auxv.getauxval
+
+    # termios.h entrypoints
+    libc.src.termios.cfgetispeed
+    libc.src.termios.cfgetospeed
+    libc.src.termios.cfsetispeed
+    libc.src.termios.cfsetospeed
+    libc.src.termios.tcdrain
+    libc.src.termios.tcflow
+    libc.src.termios.tcflush
+    libc.src.termios.tcgetattr
+    libc.src.termios.tcgetsid
+    libc.src.termios.tcsendbreak
+    libc.src.termios.tcsetattr
+
+    # unistd.h entrypoints
+    libc.src.unistd.access
+    libc.src.unistd.chdir
+    libc.src.unistd.close
+    libc.src.unistd.dup
+    libc.src.unistd.dup2
+    libc.src.unistd.dup3
+    libc.src.unistd.execve
+    libc.src.unistd.faccessat
+    libc.src.unistd.fchdir
+    libc.src.unistd.fpathconf
+    libc.src.unistd.fsync
+    libc.src.unistd.ftruncate
+    libc.src.unistd.getcwd
+    libc.src.unistd.getentropy
+    libc.src.unistd.geteuid
+    libc.src.unistd.gethostname
+    libc.src.unistd.getpagesize
+    libc.src.unistd.getpid
+    libc.src.unistd.getppid
+    libc.src.unistd.getsid
+    libc.src.unistd.gettid
+    libc.src.unistd.getuid
+    libc.src.unistd.isatty
+    libc.src.unistd.link
+    libc.src.unistd.linkat
+    libc.src.unistd.lseek
+    libc.src.unistd.pathconf
+    libc.src.unistd.pipe
+    libc.src.unistd.pipe2
+    libc.src.unistd.pread
+    libc.src.unistd.pwrite
+    libc.src.unistd.read
+    libc.src.unistd.readlink
+    libc.src.unistd.readlinkat
+    libc.src.unistd.rmdir
+    libc.src.unistd.setsid
+    libc.src.unistd.symlink
+    libc.src.unistd.symlinkat
+    libc.src.unistd.sysconf
+    libc.src.unistd.truncate
+    libc.src.unistd.unlink
+    libc.src.unistd.unlinkat
+    libc.src.unistd.write
+
+    # wchar.h entrypoints
+    libc.src.wchar.btowc
+    libc.src.wchar.wcslen
+    libc.src.wchar.wctob
+
+    # wctype.h entrypoints
+    libc.src.wctype.iswalpha
+
+    # sys/uio.h entrypoints
+    libc.src.sys.uio.writev
+    libc.src.sys.uio.readv
+
+    # sys/time.h entrypoints
+    libc.src.sys.time.setitimer
+    libc.src.sys.time.getitimer
+)
+
+if(LLVM_LIBC_INCLUDE_SCUDO)
+  list(APPEND TARGET_LIBC_ENTRYPOINTS
+    # malloc.h external entrypoints
+    libc.src.stdlib.mallopt
+  )
+endif()
+
+set(TARGET_LIBM_ENTRYPOINTS
+    # complex.h entrypoints
+    libc.src.complex.creal
+    libc.src.complex.crealf
+    libc.src.complex.creall
+    libc.src.complex.cimag
+    libc.src.complex.cimagf
+    libc.src.complex.cimagl
+    libc.src.complex.conj
+    libc.src.complex.conjf
+    libc.src.complex.conjl
+    libc.src.complex.cproj
+    libc.src.complex.cprojf
+    libc.src.complex.cprojl
+
+    # fenv.h entrypoints
+    libc.src.fenv.feclearexcept
+    libc.src.fenv.fedisableexcept
+    libc.src.fenv.feenableexcept
+    libc.src.fenv.fegetenv
+    libc.src.fenv.fegetexcept
+    libc.src.fenv.fegetexceptflag
+    libc.src.fenv.fegetround
+    libc.src.fenv.feholdexcept
+    libc.src.fenv.feraiseexcept
+    libc.src.fenv.fesetenv
+    libc.src.fenv.fesetexcept
+    libc.src.fenv.fesetexceptflag
+    libc.src.fenv.fesetround
+    libc.src.fenv.fetestexcept
+    libc.src.fenv.fetestexceptflag
+    libc.src.fenv.feupdateenv
+
+    # math.h entrypoints
+    libc.src.math.acos
+    libc.src.math.acosf
+    libc.src.math.acoshf
+    libc.src.math.asin
+    libc.src.math.asinf
+    libc.src.math.asinhf
+    libc.src.math.atan2
+    libc.src.math.atan2f
+    libc.src.math.atan
+    libc.src.math.atanf
+    libc.src.math.atanhf
+    libc.src.math.canonicalize
+    libc.src.math.canonicalizef
+    libc.src.math.canonicalizel
+    libc.src.math.cbrt
+    libc.src.math.cbrtf
+    libc.src.math.ceil
+    libc.src.math.ceilf
+    libc.src.math.ceill
+    libc.src.math.copysign
+    libc.src.math.copysignf
+    libc.src.math.copysignl
+    libc.src.math.cos
+    libc.src.math.cosf
+    libc.src.math.coshf
+    libc.src.math.cospif
+    libc.src.math.daddl
+    libc.src.math.ddivl
+    libc.src.math.dfmal
+    libc.src.math.dmull
+    libc.src.math.dsqrtl
+    libc.src.math.dsubl
+    libc.src.math.erff
+    libc.src.math.exp
+    libc.src.math.exp10
+    libc.src.math.exp10f
+    libc.src.math.exp10m1f
+    libc.src.math.exp2
+    libc.src.math.exp2f
+    libc.src.math.exp2m1f
+    libc.src.math.expf
+    libc.src.math.expm1
+    libc.src.math.expm1f
+    libc.src.math.fabs
+    libc.src.math.fabsf
+    libc.src.math.fabsl
+    libc.src.math.fadd
+    libc.src.math.faddl
+    libc.src.math.fadd
+    libc.src.math.fdim
+    libc.src.math.fdimf
+    libc.src.math.fdiml
+    libc.src.math.fdiv
+    libc.src.math.fdivl
+    libc.src.math.ffma
+    libc.src.math.ffmal
+    libc.src.math.floor
+    libc.src.math.floorf
+    libc.src.math.floorl
+    libc.src.math.fma
+    libc.src.math.fmabf16
+    libc.src.math.fmaf
+    libc.src.math.fmax
+    libc.src.math.fmaxf
+    libc.src.math.fmaximum
+    libc.src.math.fmaximum_mag
+    libc.src.math.fmaximum_mag_num
+    libc.src.math.fmaximum_mag_numf
+    libc.src.math.fmaximum_mag_numl
+    libc.src.math.fmaximum_magf
+    libc.src.math.fmaximum_magl
+    libc.src.math.fmaximum_num
+    libc.src.math.fmaximum_numf
+    libc.src.math.fmaximum_numl
+    libc.src.math.fmaximumf
+    libc.src.math.fmaximuml
+    libc.src.math.fmaxl
+    libc.src.math.fmin
+    libc.src.math.fminf
+    libc.src.math.fminimum
+    libc.src.math.fminimum_mag
+    libc.src.math.fminimum_mag_num
+    libc.src.math.fminimum_mag_numf
+    libc.src.math.fminimum_mag_numl
+    libc.src.math.fminimum_magf
+    libc.src.math.fminimum_magl
+    libc.src.math.fminimum_num
+    libc.src.math.fminimum_numf
+    libc.src.math.fminimum_numl
+    libc.src.math.fminimumf
+    libc.src.math.fminimuml
+    libc.src.math.fminl
+    libc.src.math.fmod
+    libc.src.math.fmodf
+    libc.src.math.fmodl
+    libc.src.math.fmul
+    libc.src.math.fmull
+    libc.src.math.frexp
+    libc.src.math.frexpf
+    libc.src.math.frexpl
+    libc.src.math.fromfp
+    libc.src.math.fromfpf
+    libc.src.math.fromfpl
+    libc.src.math.fromfpx
+    libc.src.math.fromfpxf
+    libc.src.math.fromfpxl
+    libc.src.math.fsqrt
+    libc.src.math.fsqrtl
+    libc.src.math.fsub
+    libc.src.math.fsubl
+    libc.src.math.getpayload
+    libc.src.math.getpayloadf
+    libc.src.math.getpayloadl
+    libc.src.math.hypot
+    libc.src.math.hypotf
+    libc.src.math.ilogb
+    libc.src.math.ilogbf
+    libc.src.math.ilogbl
+    libc.src.math.iscanonical
+    libc.src.math.iscanonicalf
+    libc.src.math.iscanonicall
+    libc.src.math.isnan
+    libc.src.math.isnanf
+    libc.src.math.isnanl
+    libc.src.math.issignaling
+    libc.src.math.issignalingf
+    libc.src.math.issignalingl
+    libc.src.math.ldexp
+    libc.src.math.ldexpf
+    libc.src.math.ldexpl
+    libc.src.math.llogb
+    libc.src.math.llogbf
+    libc.src.math.llogbl
+    libc.src.math.llrint
+    libc.src.math.llrintf
+    libc.src.math.llrintl
+    libc.src.math.llround
+    libc.src.math.llroundf
+    libc.src.math.llroundl
+    libc.src.math.log
+    libc.src.math.log10
+    libc.src.math.log10f
+    libc.src.math.log1p
+    libc.src.math.log1pf
+    libc.src.math.log2
+    libc.src.math.log2f
+    libc.src.math.logb
+    libc.src.math.logbf
+    libc.src.math.logbl
+    libc.src.math.logf
+    libc.src.math.lrint
+    libc.src.math.lrintf
+    libc.src.math.lrintl
+    libc.src.math.lround
+    libc.src.math.lroundf
+    libc.src.math.lroundl
+    libc.src.math.modf
+    libc.src.math.modff
+    libc.src.math.modfl
+    libc.src.math.nan
+    libc.src.math.nanf
+    libc.src.math.nanl
+    libc.src.math.nearbyint
+    libc.src.math.nearbyintf
+    libc.src.math.nearbyintl
+    libc.src.math.nextafter
+    libc.src.math.nextafterf
+    libc.src.math.nextafterl
+    libc.src.math.nextdown
+    libc.src.math.nextdownf
+    libc.src.math.nextdownl
+    libc.src.math.nexttoward
+    libc.src.math.nexttowardf
+    libc.src.math.nexttowardl
+    libc.src.math.nextup
+    libc.src.math.nextupf
+    libc.src.math.nextupl
+    libc.src.math.pow
+    libc.src.math.powf
+    libc.src.math.remainder
+    libc.src.math.remainderf
+    libc.src.math.remainderl
+    libc.src.math.remquo
+    libc.src.math.remquof
+    libc.src.math.remquol
+    libc.src.math.rint
+    libc.src.math.rintf
+    libc.src.math.rintl
+    libc.src.math.round
+    libc.src.math.roundeven
+    libc.src.math.roundevenf
+    libc.src.math.roundevenl
+    libc.src.math.roundf
+    libc.src.math.roundl
+    libc.src.math.scalbln
+    libc.src.math.scalblnf
+    libc.src.math.scalblnl
+    libc.src.math.scalbn
+    libc.src.math.scalbnf
+    libc.src.math.scalbnl
+    libc.src.math.setpayload
+    libc.src.math.setpayloadf
+    libc.src.math.setpayloadl
+    libc.src.math.setpayloadsig
+    libc.src.math.setpayloadsigf
+    libc.src.math.setpayloadsigl
+    libc.src.math.sin
+    libc.src.math.sincos
+    libc.src.math.sincosf
+    libc.src.math.sinf
+    libc.src.math.sinhf
+    libc.src.math.sinpif
+    libc.src.math.sqrt
+    libc.src.math.sqrtf
+    libc.src.math.sqrtl
+    libc.src.math.tan
+    libc.src.math.tanf
+    libc.src.math.tanhf
+    libc.src.math.tanpif
+    libc.src.math.totalorder
+    libc.src.math.totalorderf
+    libc.src.math.totalorderl
+    libc.src.math.totalordermag
+    libc.src.math.totalordermagf
+    libc.src.math.totalordermagl
+    libc.src.math.trunc
+    libc.src.math.truncf
+    libc.src.math.truncl
+    libc.src.math.ufromfp
+    libc.src.math.ufromfpf
+    libc.src.math.ufromfpl
+    libc.src.math.ufromfpx
+    libc.src.math.ufromfpxf
+    libc.src.math.ufromfpxl
+)
+if(LIBC_TYPES_HAS_CFLOAT16)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # complex.h C23 _Complex _Float16 entrypoints
+    libc.src.complex.crealf16
+    libc.src.complex.cimagf16
+    libc.src.complex.conjf16
+    libc.src.complex.cprojf16
+  )
+endif()
+
+if(LIBC_TYPES_HAS_FLOAT16)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # math.h C23 _Float16 entrypoints
+    libc.src.math.acosf16
+    libc.src.math.acoshf16
+    libc.src.math.acospif16
+    libc.src.math.asinf16
+    libc.src.math.asinhf16
+    libc.src.math.atanhf16
+    libc.src.math.canonicalizef16
+    libc.src.math.ceilf16
+    libc.src.math.copysignf16
+    libc.src.math.cosf16
+    libc.src.math.coshf16
+    libc.src.math.cospif16
+    libc.src.math.exp10f16
+    libc.src.math.exp10m1f16
+    libc.src.math.exp2f16
+    libc.src.math.exp2m1f16
+    libc.src.math.expf16
+    libc.src.math.expm1f16
+    libc.src.math.f16add
+    libc.src.math.f16addf
+    libc.src.math.f16addl
+    libc.src.math.f16div
+    libc.src.math.f16divf
+    libc.src.math.f16divl
+    libc.src.math.f16fma
+    libc.src.math.f16fmaf
+    libc.src.math.f16fmal
+    libc.src.math.f16mul
+    libc.src.math.f16mulf
+    libc.src.math.f16mull
+    libc.src.math.f16sqrt
+    libc.src.math.f16sqrtf
+    libc.src.math.f16sqrtl
+    libc.src.math.f16sub
+    libc.src.math.f16subf
+    libc.src.math.f16subl
+    libc.src.math.fabsf16
+    libc.src.math.fdimf16
+    libc.src.math.floorf16
+    libc.src.math.fmaf16
+    libc.src.math.fmaxf16
+    libc.src.math.fmaximum_mag_numf16
+    libc.src.math.fmaximum_magf16
+    libc.src.math.fmaximum_numf16
+    libc.src.math.fmaximumf16
+    libc.src.math.fminf16
+    libc.src.math.fminimum_mag_numf16
+    libc.src.math.fminimum_magf16
+    libc.src.math.fminimum_numf16
+    libc.src.math.fminimumf16
+    libc.src.math.fmodf16
+    libc.src.math.frexpf16
+    libc.src.math.fromfpf16
+    libc.src.math.fromfpxf16
+    libc.src.math.getpayloadf16
+    libc.src.math.hypotf16
+    libc.src.math.ilogbf16
+    libc.src.math.iscanonicalf16
+    libc.src.math.issignalingf16
+    libc.src.math.ldexpf16
+    libc.src.math.llogbf16
+    libc.src.math.llrintf16
+    libc.src.math.llroundf16
+    libc.src.math.log10f16
+    libc.src.math.log2f16
+    libc.src.math.logbf16
+    libc.src.math.logf16
+    libc.src.math.lrintf16
+    libc.src.math.lroundf16
+    libc.src.math.modff16
+    libc.src.math.nanf16
+    libc.src.math.nearbyintf16
+    libc.src.math.nextafterf16
+    libc.src.math.nextdownf16
+    libc.src.math.nexttowardf16
+    libc.src.math.nextupf16
+    libc.src.math.remainderf16
+    libc.src.math.remquof16
+    libc.src.math.rintf16
+    libc.src.math.roundevenf16
+    libc.src.math.roundf16
+    libc.src.math.rsqrtf
+    libc.src.math.rsqrtf16
+    libc.src.math.scalblnf16
+    libc.src.math.scalbnf16
+    libc.src.math.setpayloadf16
+    libc.src.math.setpayloadsigf16
+    libc.src.math.sinf16
+    libc.src.math.sinhf16
+    libc.src.math.sinpif16
+    libc.src.math.sqrtf16
+    libc.src.math.tanf16
+    libc.src.math.tanhf16
+    libc.src.math.tanpif16
+    libc.src.math.totalorderf16
+    libc.src.math.totalordermagf16
+    libc.src.math.truncf16
+    libc.src.math.ufromfpf16
+    libc.src.math.ufromfpxf16
+  )
+
+  if(LIBC_TYPES_HAS_FLOAT128)
+    list(APPEND TARGET_LIBM_ENTRYPOINTS
+      # math.h C23 mixed _Float16 and _Float128 entrypoints
+      libc.src.math.f16addf128
+      libc.src.math.f16divf128
+      libc.src.math.f16fmaf128
+      libc.src.math.f16mulf128
+      libc.src.math.f16sqrtf128
+      libc.src.math.f16subf128
+    )
+  endif()
+endif()
+
+if(LIBC_TYPES_HAS_CFLOAT128)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # complex.h C23 _Complex _Float128 entrypoints
+    libc.src.complex.crealf128
+    libc.src.complex.cimagf128
+    libc.src.complex.conjf128
+    libc.src.complex.cprojf128
+  )
+endif()
+
+if(LIBC_TYPES_HAS_FLOAT128)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # math.h C23 _Float128 entrypoints
+    libc.src.math.atan2f128
+    libc.src.math.canonicalizef128
+    libc.src.math.ceilf128
+    libc.src.math.copysignf128
+    libc.src.math.daddf128
+    libc.src.math.ddivf128
+    libc.src.math.dfmaf128
+    libc.src.math.dmulf128
+    libc.src.math.dsqrtf128
+    libc.src.math.dsubf128
+    libc.src.math.fabsf128
+    libc.src.math.faddf128
+    libc.src.math.fdimf128
+    libc.src.math.fdivf128
+    libc.src.math.ffmaf128
+    libc.src.math.floorf128
+    libc.src.math.fmaxf128
+    libc.src.math.fmaximum_mag_numf128
+    libc.src.math.fmaximum_magf128
+    libc.src.math.fmaximum_numf128
+    libc.src.math.fmaximumf128
+    libc.src.math.fminf128
+    libc.src.math.fminimum_mag_numf128
+    libc.src.math.fminimum_magf128
+    libc.src.math.fminimum_numf128
+    libc.src.math.fminimumf128
+    libc.src.math.fmodf128
+    libc.src.math.fmulf128
+    libc.src.math.frexpf128
+    libc.src.math.fromfpf128
+    libc.src.math.fromfpxf128
+    libc.src.math.fsqrtf128
+    libc.src.math.fsubf128
+    libc.src.math.getpayloadf128
+    libc.src.math.ilogbf128
+    libc.src.math.iscanonicalf128
+    libc.src.math.issignalingf128
+    libc.src.math.ldexpf128
+    libc.src.math.llogbf128
+    libc.src.math.llrintf128
+    libc.src.math.llroundf128
+    libc.src.math.logbf128
+    libc.src.math.lrintf128
+    libc.src.math.lroundf128
+    libc.src.math.modff128
+    libc.src.math.nanf128
+    libc.src.math.nearbyintf128
+    libc.src.math.nextafterf128
+    libc.src.math.nextdownf128
+    libc.src.math.nextupf128
+    libc.src.math.remainderf128
+    libc.src.math.remquof128
+    libc.src.math.rintf128
+    libc.src.math.roundevenf128
+    libc.src.math.roundf128
+    libc.src.math.scalblnf128
+    libc.src.math.scalbnf128
+    libc.src.math.setpayloadf128
+    libc.src.math.setpayloadsigf128
+    libc.src.math.sqrtf128
+    libc.src.math.totalorderf128
+    libc.src.math.totalordermagf128
+    libc.src.math.truncf128
+    libc.src.math.ufromfpf128
+    libc.src.math.ufromfpxf128
+  )
+endif()
+
+list(APPEND TARGET_LIBM_ENTRYPOINTS
+  # bfloat16 entrypoints
+  libc.src.math.bf16add
+  libc.src.math.bf16addf
+  libc.src.math.bf16addl
+  libc.src.math.bf16div
+  libc.src.math.bf16divf
+  libc.src.math.bf16divl
+  libc.src.math.bf16fma
+  libc.src.math.bf16fmaf
+  libc.src.math.bf16fmal
+  libc.src.math.bf16mul
+  libc.src.math.bf16mulf
+  libc.src.math.bf16mull
+  libc.src.math.bf16sub
+  libc.src.math.bf16subf
+  libc.src.math.bf16subl
+  libc.src.math.canonicalizebf16
+  libc.src.math.ceilbf16
+  libc.src.math.copysignbf16
+  libc.src.math.fabsbf16
+  libc.src.math.fdimbf16
+  libc.src.math.floorbf16
+  libc.src.math.fmaxbf16
+  libc.src.math.fmaximumbf16
+  libc.src.math.fmaximum_magbf16
+  libc.src.math.fmaximum_mag_numbf16
+  libc.src.math.fmaximum_numbf16
+  libc.src.math.fminbf16
+  libc.src.math.fminimumbf16
+  libc.src.math.fminimum_magbf16
+  libc.src.math.fminimum_mag_numbf16
+  libc.src.math.fminimum_numbf16
+  libc.src.math.fmodbf16
+  libc.src.math.frexpbf16
+  libc.src.math.fromfpbf16
+  libc.src.math.fromfpxbf16
+  libc.src.math.getpayloadbf16
+  libc.src.math.ilogbbf16
+  libc.src.math.iscanonicalbf16
+  libc.src.math.issignalingbf16
+  libc.src.math.ldexpbf16
+  libc.src.math.llogbbf16
+  libc.src.math.llrintbf16
+  libc.src.math.llroundbf16
+  libc.src.math.log_bf16
+  libc.src.math.logbbf16
+  libc.src.math.lrintbf16
+  libc.src.math.lroundbf16
+  libc.src.math.modfbf16
+  libc.src.math.nanbf16
+  libc.src.math.nearbyintbf16
+  libc.src.math.nextafterbf16
+  libc.src.math.nextdownbf16
+  libc.src.math.nexttowardbf16
+  libc.src.math.nextupbf16
+  libc.src.math.remainderbf16
+  libc.src.math.remquobf16
+  libc.src.math.rintbf16
+  libc.src.math.roundbf16
+  libc.src.math.roundevenbf16
+  libc.src.math.scalblnbf16
+  libc.src.math.scalbnbf16
+  libc.src.math.setpayloadbf16
+  libc.src.math.setpayloadsigbf16
+  libc.src.math.sqrtbf16
+  libc.src.math.truncbf16
+  libc.src.math.totalorderbf16
+  libc.src.math.totalordermagbf16
+  libc.src.math.ufromfpbf16
+  libc.src.math.ufromfpxbf16
+)
+
+if(LIBC_TYPES_HAS_FLOAT128)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # math.h C++23 mixed bfloat16 and _Float128 entrypoints
+    libc.src.math.bf16addf128
+    libc.src.math.bf16divf128
+    libc.src.math.bf16fmaf128
+    libc.src.math.bf16mulf128
+    libc.src.math.bf16subf128
+  )
+endif()
+
+if(LIBC_COMPILER_HAS_FIXED_POINT)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # stdfix.h _Fract and _Accum entrypoints
+    libc.src.stdfix.abshk
+    libc.src.stdfix.abshr
+    libc.src.stdfix.absk
+    libc.src.stdfix.abslk
+    libc.src.stdfix.abslr
+    libc.src.stdfix.absr
+    libc.src.stdfix.exphk
+    libc.src.stdfix.expk
+    libc.src.stdfix.roundhk
+    libc.src.stdfix.roundhr
+    libc.src.stdfix.roundk
+    libc.src.stdfix.roundlk
+    libc.src.stdfix.roundlr
+    libc.src.stdfix.roundr
+    libc.src.stdfix.rounduhk
+    libc.src.stdfix.rounduhr
+    libc.src.stdfix.rounduk
+    libc.src.stdfix.roundulk
+    libc.src.stdfix.roundulr
+    libc.src.stdfix.roundur
+    libc.src.stdfix.sqrtuhk
+    libc.src.stdfix.sqrtuhr
+    libc.src.stdfix.sqrtuk
+    libc.src.stdfix.sqrtur
+    # libc.src.stdfix.sqrtulk
+    libc.src.stdfix.sqrtulr
+    libc.src.stdfix.uhksqrtus
+    libc.src.stdfix.uksqrtui
+    libc.src.stdfix.hrbits
+    libc.src.stdfix.uhrbits
+    libc.src.stdfix.rbits
+    libc.src.stdfix.urbits
+    libc.src.stdfix.lrbits
+    libc.src.stdfix.ulrbits
+    libc.src.stdfix.hkbits
+    libc.src.stdfix.uhkbits
+    libc.src.stdfix.kbits
+    libc.src.stdfix.ukbits
+    libc.src.stdfix.lkbits
+    libc.src.stdfix.ulkbits
+    libc.src.stdfix.bitshr
+    libc.src.stdfix.bitsr
+    libc.src.stdfix.bitslr
+    libc.src.stdfix.bitshk
+    libc.src.stdfix.bitsk
+    libc.src.stdfix.bitslk
+    libc.src.stdfix.bitsuhr
+    libc.src.stdfix.bitsur
+    libc.src.stdfix.bitsulr
+    libc.src.stdfix.bitsuhk
+    libc.src.stdfix.bitsuk
+    libc.src.stdfix.bitsulk
+    libc.src.stdfix.countlshr
+    libc.src.stdfix.countlsr
+    libc.src.stdfix.countlslr
+    libc.src.stdfix.countlshk
+    libc.src.stdfix.countlsk
+    libc.src.stdfix.countlslk
+    libc.src.stdfix.countlsuhr
+    libc.src.stdfix.countlsur
+    libc.src.stdfix.countlsulr
+    libc.src.stdfix.countlsuhk
+    libc.src.stdfix.countlsuk
+    libc.src.stdfix.countlsulk
+    libc.src.stdfix.idivr
+    libc.src.stdfix.idivlr
+    libc.src.stdfix.idivk
+    libc.src.stdfix.idivlk
+    libc.src.stdfix.idivur
+    libc.src.stdfix.idivulr
+    libc.src.stdfix.idivuk
+    libc.src.stdfix.idivulk
+    libc.src.stdfix.rdivi
+  )
+endif()
+
+if(LLVM_LIBC_FULL_BUILD)
+  list(APPEND TARGET_LIBC_ENTRYPOINTS
+    # ctype.h entrypoints
+    libc.src.ctype.isalnum_l
+    libc.src.ctype.isalpha_l
+    libc.src.ctype.isblank_l
+    libc.src.ctype.iscntrl_l
+    libc.src.ctype.isdigit_l
+    libc.src.ctype.isgraph_l
+    libc.src.ctype.islower_l
+    libc.src.ctype.isprint_l
+    libc.src.ctype.ispunct_l
+    libc.src.ctype.isspace_l
+    libc.src.ctype.isupper_l
+    libc.src.ctype.isxdigit_l
+    libc.src.ctype.tolower_l
+    libc.src.ctype.toupper_l
+
+    # stdlib.h entrypoints
+    libc.src.stdlib.strtod_l
+    libc.src.stdlib.strtof_l
+    libc.src.stdlib.strtol_l
+    libc.src.stdlib.strtold_l
+    libc.src.stdlib.strtoll_l
+    libc.src.stdlib.strtoul_l
+    libc.src.stdlib.strtoull_l
+
+    # string.h entrypoints
+    libc.src.string.strcoll_l
+    libc.src.string.strxfrm_l
+
+    # strings.h entrypoints
+    libc.src.strings.strcasecmp_l
+    libc.src.strings.strncasecmp_l
+
+    # assert.h entrypoints
+    libc.src.assert.__assert_fail
+
+    # compiler entrypoints (no corresponding header)
+    libc.src.compiler.__stack_chk_fail
+
+    # dirent.h entrypoints
+    libc.src.dirent.closedir
+    libc.src.dirent.dirfd
+    libc.src.dirent.opendir
+    libc.src.dirent.readdir
+
+    # arpa/inet.h entrypoints
+    libc.src.arpa.inet.htonl
+    libc.src.arpa.inet.htons
+    libc.src.arpa.inet.inet_addr
+    libc.src.arpa.inet.inet_aton
+    libc.src.arpa.inet.ntohl
+    libc.src.arpa.inet.ntohs
+
+    # pthread.h entrypoints
+    libc.src.pthread.pthread_atfork
+    libc.src.pthread.pthread_attr_destroy
+    libc.src.pthread.pthread_attr_getdetachstate
+    libc.src.pthread.pthread_attr_getguardsize
+    libc.src.pthread.pthread_attr_getstack
+    libc.src.pthread.pthread_attr_getstacksize
+    libc.src.pthread.pthread_attr_init
+    libc.src.pthread.pthread_attr_setdetachstate
+    libc.src.pthread.pthread_attr_setguardsize
+    libc.src.pthread.pthread_attr_setstack
+    libc.src.pthread.pthread_attr_setstacksize
+    libc.src.pthread.pthread_condattr_destroy
+    libc.src.pthread.pthread_condattr_getclock
+    libc.src.pthread.pthread_condattr_getpshared
+    libc.src.pthread.pthread_condattr_init
+    libc.src.pthread.pthread_condattr_setclock
+    libc.src.pthread.pthread_condattr_setpshared
+    libc.src.pthread.pthread_create
+    libc.src.pthread.pthread_detach
+    libc.src.pthread.pthread_equal
+    libc.src.pthread.pthread_exit
+    libc.src.pthread.pthread_getname_np
+    libc.src.pthread.pthread_getspecific
+    libc.src.pthread.pthread_join
+    libc.src.pthread.pthread_key_create
+    libc.src.pthread.pthread_key_delete
+    libc.src.pthread.pthread_mutex_destroy
+    libc.src.pthread.pthread_mutex_init
+    libc.src.pthread.pthread_mutex_lock
+    libc.src.pthread.pthread_mutex_unlock
+    libc.src.pthread.pthread_mutexattr_destroy
+    libc.src.pthread.pthread_mutexattr_getpshared
+    libc.src.pthread.pthread_mutexattr_getrobust
+    libc.src.pthread.pthread_mutexattr_gettype
+    libc.src.pthread.pthread_mutexattr_init
+    libc.src.pthread.pthread_mutexattr_setpshared
+    libc.src.pthread.pthread_mutexattr_setrobust
+    libc.src.pthread.pthread_mutexattr_settype
+    libc.src.pthread.pthread_once
+    libc.src.pthread.pthread_rwlock_clockrdlock
+    libc.src.pthread.pthread_rwlock_clockwrlock
+    libc.src.pthread.pthread_rwlock_destroy
+    libc.src.pthread.pthread_rwlock_init
+    libc.src.pthread.pthread_rwlock_rdlock
+    libc.src.pthread.pthread_rwlock_timedrdlock
+    libc.src.pthread.pthread_rwlock_timedwrlock
+    libc.src.pthread.pthread_rwlock_tryrdlock
+    libc.src.pthread.pthread_rwlock_trywrlock
+    libc.src.pthread.pthread_rwlock_unlock
+    libc.src.pthread.pthread_rwlock_wrlock
+    libc.src.pthread.pthread_rwlockattr_destroy
+    libc.src.pthread.pthread_rwlockattr_getkind_np
+    libc.src.pthread.pthread_rwlockattr_getpshared
+    libc.src.pthread.pthread_rwlockattr_init
+    libc.src.pthread.pthread_rwlockattr_setkind_np
+    libc.src.pthread.pthread_rwlockattr_setpshared
+    libc.src.pthread.pthread_spin_destroy
+    libc.src.pthread.pthread_spin_init
+    libc.src.pthread.pthread_spin_lock
+    libc.src.pthread.pthread_spin_trylock
+    libc.src.pthread.pthread_spin_unlock
+    libc.src.pthread.pthread_self
+    libc.src.pthread.pthread_setname_np
+    libc.src.pthread.pthread_setspecific
+
+    # sched.h entrypoints
+    libc.src.sched.__sched_getcpucount
+    libc.src.sched.__sched_setcpuzero
+    libc.src.sched.__sched_setcpuset
+    libc.src.sched.__sched_getcpuisset
+
+    # setjmp.h entrypoints
+    libc.src.setjmp.longjmp
+    libc.src.setjmp.setjmp
+    libc.src.setjmp.siglongjmp
+    libc.src.setjmp.sigsetjmp
+
+    # stdio.h entrypoints
+    libc.src.stdio.clearerr
+    libc.src.stdio.clearerr_unlocked
+    libc.src.stdio.fclose
+    libc.src.stdio.fdopen
+    libc.src.stdio.feof
+    libc.src.stdio.feof_unlocked
+    libc.src.stdio.ferror
+    libc.src.stdio.ferror_unlocked
+    libc.src.stdio.fflush
+    libc.src.stdio.fgetc
+    libc.src.stdio.fgetc_unlocked
+    libc.src.stdio.fgets
+    libc.src.stdio.fileno
+    libc.src.stdio.flockfile
+    libc.src.stdio.fopen
+    libc.src.stdio.fopencookie
+    libc.src.stdio.fputc
+    libc.src.stdio.fputs
+    libc.src.stdio.fread
+    libc.src.stdio.fread_unlocked
+    libc.src.stdio.fseek
+    libc.src.stdio.fseeko
+    libc.src.stdio.ftell
+    libc.src.stdio.ftello
+    libc.src.stdio.funlockfile
+    libc.src.stdio.fwrite
+    libc.src.stdio.fwrite_unlocked
+    libc.src.stdio.getc
+    libc.src.stdio.getc_unlocked
+    libc.src.stdio.getchar
+    libc.src.stdio.getchar_unlocked
+    libc.src.stdio.perror
+    libc.src.stdio.putc
+    libc.src.stdio.putchar
+    libc.src.stdio.puts
+    libc.src.stdio.setbuf
+    libc.src.stdio.setvbuf
+    libc.src.stdio.stderr
+    libc.src.stdio.stdin
+    libc.src.stdio.stdout
+    libc.src.stdio.ungetc
+
+    # stdlib.h entrypoints
+    libc.src.stdlib._Exit
+    libc.src.stdlib.abort
+    libc.src.stdlib.at_quick_exit
+    libc.src.stdlib.atexit
+    libc.src.stdlib.exit
+    libc.src.stdlib.getenv
+    libc.src.stdlib.quick_exit
+
+    # signal.h entrypoints
+    libc.src.signal.kill
+    libc.src.signal.raise
+    libc.src.signal.sigaction
+    libc.src.signal.sigaddset
+    libc.src.signal.sigaltstack
+    libc.src.signal.sigdelset
+    libc.src.signal.sigemptyset
+    libc.src.signal.sigfillset
+    libc.src.signal.signal
+    libc.src.signal.sigprocmask
+
+    # spawn.h entrypoints
+    libc.src.spawn.posix_spawn
+    libc.src.spawn.posix_spawn_file_actions_addclose
+    libc.src.spawn.posix_spawn_file_actions_adddup2
+    libc.src.spawn.posix_spawn_file_actions_addopen
+    libc.src.spawn.posix_spawn_file_actions_destroy
+    libc.src.spawn.posix_spawn_file_actions_init
+
+    # search.h entrypoints
+    libc.src.search.hcreate
+    libc.src.search.hcreate_r
+    libc.src.search.hdestroy
+    libc.src.search.hdestroy_r
+    libc.src.search.hsearch
+    libc.src.search.hsearch_r
+    libc.src.search.insque
+    libc.src.search.lfind
+    libc.src.search.lsearch
+    libc.src.search.remque
+
+    # threads.h entrypoints
+    libc.src.threads.call_once
+    libc.src.threads.cnd_broadcast
+    libc.src.threads.cnd_destroy
+    libc.src.threads.cnd_init
+    libc.src.threads.cnd_signal
+    libc.src.threads.cnd_wait
+    libc.src.threads.mtx_destroy
+    libc.src.threads.mtx_init
+    libc.src.threads.mtx_lock
+    libc.src.threads.mtx_unlock
+    libc.src.threads.thrd_create
+    libc.src.threads.thrd_current
+    libc.src.threads.thrd_detach
+    libc.src.threads.thrd_equal
+    libc.src.threads.thrd_exit
+    libc.src.threads.thrd_join
+    libc.src.threads.tss_create
+    libc.src.threads.tss_delete
+    libc.src.threads.tss_get
+    libc.src.threads.tss_set
+
+    # time.h entrypoints
+    libc.src.time.asctime
+    libc.src.time.asctime_r
+    libc.src.time.ctime
+    libc.src.time.ctime_r
+    libc.src.time.clock
+    libc.src.time.clock_gettime
+    libc.src.time.clock_settime
+    libc.src.time.difftime
+    libc.src.time.gettimeofday
+    libc.src.time.gmtime
+    libc.src.time.gmtime_r
+    libc.src.time.mktime
+    libc.src.time.nanosleep
+    libc.src.time.strftime
+    libc.src.time.strftime_l
+    libc.src.time.time
+    libc.src.time.timespec_get
+
+    # locale.h entrypoints
+    libc.src.locale.localeconv
+    libc.src.locale.duplocale
+    libc.src.locale.freelocale
+    libc.src.locale.localeconv
+    libc.src.locale.newlocale
+    libc.src.locale.setlocale
+    libc.src.locale.uselocale
+
+    # unistd.h entrypoints
+    libc.src.unistd.__llvm_libc_syscall
+    libc.src.unistd._exit
+    libc.src.unistd.environ
+    libc.src.unistd.execv
+    libc.src.unistd.fork
+    libc.src.unistd.getopt
+    libc.src.unistd.optarg
+    libc.src.unistd.opterr
+    libc.src.unistd.optind
+    libc.src.unistd.optopt
+    libc.src.unistd.swab
+
+    # sys/select.h entrypoints
+    libc.src.sys.select.select
+
+    # sys/socket.h entrypoints
+    libc.src.sys.socket.bind
+    libc.src.sys.socket.socket
+    libc.src.sys.socket.socketpair
+    libc.src.sys.socket.send
+    libc.src.sys.socket.sendto
+    libc.src.sys.socket.sendmsg
+    libc.src.sys.socket.recv
+    libc.src.sys.socket.recvfrom
+    libc.src.sys.socket.recvmsg
+  )
+endif()
+
+set(TARGET_LLVMLIBC_ENTRYPOINTS
+  ${TARGET_LIBC_ENTRYPOINTS}
+  ${TARGET_LIBM_ENTRYPOINTS}
+)
diff --git a/libc/config/linux/x86_64/entrypoints.txt b/libc/config/linux/x86_64/entrypoints.txt
index 9399b284fa2da..3959c6ddb8c3f 100644
--- a/libc/config/linux/x86_64/entrypoints.txt
+++ b/libc/config/linux/x86_64/entrypoints.txt
@@ -1,1402 +1,1403 @@
-set(TARGET_LIBC_ENTRYPOINTS
-    # ctype.h entrypoints
-    libc.src.ctype.isalnum
-    libc.src.ctype.isalpha
-    libc.src.ctype.isascii
-    libc.src.ctype.isblank
-    libc.src.ctype.iscntrl
-    libc.src.ctype.isdigit
-    libc.src.ctype.isgraph
-    libc.src.ctype.islower
-    libc.src.ctype.isprint
-    libc.src.ctype.ispunct
-    libc.src.ctype.isspace
-    libc.src.ctype.isupper
-    libc.src.ctype.isxdigit
-    libc.src.ctype.toascii
-    libc.src.ctype.tolower
-    libc.src.ctype.toupper
-
-    # dlfcn.h entrypoints
-    libc.src.dlfcn.dladdr
-    libc.src.dlfcn.dlclose
-    libc.src.dlfcn.dlerror
-    libc.src.dlfcn.dlopen
-    libc.src.dlfcn.dlsym
-
-    # errno.h entrypoints
-    libc.src.errno.errno
-
-    # fcntl.h entrypoints
-    libc.src.fcntl.creat
-    libc.src.fcntl.fcntl
-    libc.src.fcntl.open
-    libc.src.fcntl.openat
-
-    # poll.h entrypoints
-    libc.src.poll.poll
-
-    # sched.h entrypoints
-    libc.src.sched.getcpu
-    libc.src.sched.sched_get_priority_max
-    libc.src.sched.sched_get_priority_min
-    libc.src.sched.sched_getaffinity
-    libc.src.sched.sched_getparam
-    libc.src.sched.sched_getscheduler
-    libc.src.sched.sched_rr_get_interval
-    libc.src.sched.sched_setaffinity
-    libc.src.sched.sched_setparam
-    libc.src.sched.sched_setscheduler
-    libc.src.sched.sched_yield
-
-    # string.h entrypoints
-    libc.src.string.memccpy
-    libc.src.string.memchr
-    libc.src.string.memcmp
-    libc.src.string.memcpy
-    libc.src.string.memmem
-    libc.src.string.memmove
-    libc.src.string.mempcpy
-    libc.src.string.memrchr
-    libc.src.string.memset
-    libc.src.string.memset_explicit
-    libc.src.string.stpcpy
-    libc.src.string.stpncpy
-    libc.src.string.strcasestr
-    libc.src.string.strcat
-    libc.src.string.strchr
-    libc.src.string.strchrnul
-    libc.src.string.strcmp
-    libc.src.string.strcoll
-    libc.src.string.strcpy
-    libc.src.string.strcspn
-    libc.src.string.strdup
-    libc.src.string.strerror
-    libc.src.string.strerror_r
-    libc.src.string.strlcat
-    libc.src.string.strlcpy
-    libc.src.string.strlen
-    libc.src.string.strncat
-    libc.src.string.strncmp
-    libc.src.string.strncpy
-    libc.src.string.strndup
-    libc.src.string.strnlen
-    libc.src.string.strpbrk
-    libc.src.string.strrchr
-    libc.src.string.strsep
-    libc.src.string.strsignal
-    libc.src.string.strspn
-    libc.src.string.strstr
-    libc.src.string.strtok
-    libc.src.string.strtok_r
-    libc.src.string.strxfrm
-
-    # strings.h entrypoints
-    libc.src.strings.bcmp
-    libc.src.strings.bcopy
-    libc.src.strings.bzero
-    libc.src.strings.ffs
-    libc.src.strings.ffsl
-    libc.src.strings.ffsll
-    libc.src.strings.index
-    libc.src.strings.rindex
-    libc.src.strings.strcasecmp
-    libc.src.strings.strncasecmp
-
-    # inttypes.h entrypoints
-    libc.src.inttypes.imaxabs
-    libc.src.inttypes.imaxdiv
-    libc.src.inttypes.strtoimax
-    libc.src.inttypes.strtoumax
-
-    # stdbit.h entrypoints
-    libc.src.stdbit.stdc_bit_ceil_uc
-    libc.src.stdbit.stdc_bit_ceil_ui
-    libc.src.stdbit.stdc_bit_ceil_ul
-    libc.src.stdbit.stdc_bit_ceil_ull
-    libc.src.stdbit.stdc_bit_ceil_us
-    libc.src.stdbit.stdc_bit_floor_uc
-    libc.src.stdbit.stdc_bit_floor_ui
-    libc.src.stdbit.stdc_bit_floor_ul
-    libc.src.stdbit.stdc_bit_floor_ull
-    libc.src.stdbit.stdc_bit_floor_us
-    libc.src.stdbit.stdc_bit_width_uc
-    libc.src.stdbit.stdc_bit_width_ui
-    libc.src.stdbit.stdc_bit_width_ul
-    libc.src.stdbit.stdc_bit_width_ull
-    libc.src.stdbit.stdc_bit_width_us
-    libc.src.stdbit.stdc_count_ones_uc
-    libc.src.stdbit.stdc_count_ones_ui
-    libc.src.stdbit.stdc_count_ones_ul
-    libc.src.stdbit.stdc_count_ones_ull
-    libc.src.stdbit.stdc_count_ones_us
-    libc.src.stdbit.stdc_count_zeros_uc
-    libc.src.stdbit.stdc_count_zeros_ui
-    libc.src.stdbit.stdc_count_zeros_ul
-    libc.src.stdbit.stdc_count_zeros_ull
-    libc.src.stdbit.stdc_count_zeros_us
-    libc.src.stdbit.stdc_first_leading_one_uc
-    libc.src.stdbit.stdc_first_leading_one_ui
-    libc.src.stdbit.stdc_first_leading_one_ul
-    libc.src.stdbit.stdc_first_leading_one_ull
-    libc.src.stdbit.stdc_first_leading_one_us
-    libc.src.stdbit.stdc_first_leading_zero_uc
-    libc.src.stdbit.stdc_first_leading_zero_ui
-    libc.src.stdbit.stdc_first_leading_zero_ul
-    libc.src.stdbit.stdc_first_leading_zero_ull
-    libc.src.stdbit.stdc_first_leading_zero_us
-    libc.src.stdbit.stdc_first_trailing_one_uc
-    libc.src.stdbit.stdc_first_trailing_one_ui
-    libc.src.stdbit.stdc_first_trailing_one_ul
-    libc.src.stdbit.stdc_first_trailing_one_ull
-    libc.src.stdbit.stdc_first_trailing_one_us
-    libc.src.stdbit.stdc_first_trailing_zero_uc
-    libc.src.stdbit.stdc_first_trailing_zero_ui
-    libc.src.stdbit.stdc_first_trailing_zero_ul
-    libc.src.stdbit.stdc_first_trailing_zero_ull
-    libc.src.stdbit.stdc_first_trailing_zero_us
-    libc.src.stdbit.stdc_has_single_bit_uc
-    libc.src.stdbit.stdc_has_single_bit_ui
-    libc.src.stdbit.stdc_has_single_bit_ul
-    libc.src.stdbit.stdc_has_single_bit_ull
-    libc.src.stdbit.stdc_has_single_bit_us
-    libc.src.stdbit.stdc_leading_ones_uc
-    libc.src.stdbit.stdc_leading_ones_ui
-    libc.src.stdbit.stdc_leading_ones_ul
-    libc.src.stdbit.stdc_leading_ones_ull
-    libc.src.stdbit.stdc_leading_ones_us
-    libc.src.stdbit.stdc_leading_zeros_uc
-    libc.src.stdbit.stdc_leading_zeros_ui
-    libc.src.stdbit.stdc_leading_zeros_ul
-    libc.src.stdbit.stdc_leading_zeros_ull
-    libc.src.stdbit.stdc_leading_zeros_us
-    libc.src.stdbit.stdc_trailing_ones_uc
-    libc.src.stdbit.stdc_trailing_ones_ui
-    libc.src.stdbit.stdc_trailing_ones_ul
-    libc.src.stdbit.stdc_trailing_ones_ull
-    libc.src.stdbit.stdc_trailing_ones_us
-    libc.src.stdbit.stdc_trailing_zeros_uc
-    libc.src.stdbit.stdc_trailing_zeros_ui
-    libc.src.stdbit.stdc_trailing_zeros_ul
-    libc.src.stdbit.stdc_trailing_zeros_ull
-    libc.src.stdbit.stdc_trailing_zeros_us
-
-    # stdlib.h entrypoints
-    libc.src.stdlib.a64l
-    libc.src.stdlib.abs
-    libc.src.stdlib.atof
-    libc.src.stdlib.atoi
-    libc.src.stdlib.atol
-    libc.src.stdlib.atoll
-    libc.src.stdlib.bsearch
-    libc.src.stdlib.div
-    libc.src.stdlib.l64a
-    libc.src.stdlib.labs
-    libc.src.stdlib.ldiv
-    libc.src.stdlib.llabs
-    libc.src.stdlib.lldiv
-    libc.src.stdlib.memalignment
-    libc.src.stdlib.qsort
-    libc.src.stdlib.qsort_r
-    libc.src.stdlib.rand
-    libc.src.stdlib.srand
-    libc.src.stdlib.strfromd
-    libc.src.stdlib.strfromf
-    libc.src.stdlib.strfroml
-    libc.src.stdlib.strtod
-    libc.src.stdlib.strtof
-    libc.src.stdlib.strtol
-    libc.src.stdlib.strtold
-    libc.src.stdlib.strtoll
-    libc.src.stdlib.strtoul
-    libc.src.stdlib.strtoull
-
-    # stdlib.h external entrypoints
-    libc.src.stdlib.aligned_alloc
-    libc.src.stdlib.calloc
-    libc.src.stdlib.free
-    libc.src.stdlib.malloc
-    libc.src.stdlib.realloc
-
-    # stdio.h entrypoints
-    libc.src.stdio.fprintf
-    libc.src.stdio.fscanf
-    libc.src.stdio.vfscanf
-    libc.src.stdio.printf
-    libc.src.stdio.remove
-    libc.src.stdio.rename
-    libc.src.stdio.scanf
-    libc.src.stdio.vscanf
-    libc.src.stdio.snprintf
-    libc.src.stdio.sprintf
-    libc.src.stdio.asprintf
-    libc.src.stdio.sscanf
-    libc.src.stdio.vsscanf
-    libc.src.stdio.vfprintf
-    libc.src.stdio.vprintf
-    libc.src.stdio.vsnprintf
-    libc.src.stdio.vsprintf
-    libc.src.stdio.vasprintf
-
-    # sys/epoll.h entrypoints
-    libc.src.sys.epoll.epoll_create
-    libc.src.sys.epoll.epoll_create1
-    libc.src.sys.epoll.epoll_ctl
-    libc.src.sys.epoll.epoll_pwait
-    libc.src.sys.epoll.epoll_wait
-    # TODO: Need to check if pwait2 is available before providing.
-    # https://github.com/llvm/llvm-project/issues/80060
-    # libc.src.sys.epoll.epoll_pwait2
-
-    # sys/ioctl.h entrypoints
-    libc.src.sys.ioctl.ioctl
-
-    # sys/mman.h entrypoints
-    libc.src.sys.mman.madvise
-    libc.src.sys.mman.mincore
-    libc.src.sys.mman.mlock
-    libc.src.sys.mman.mlock2
-    libc.src.sys.mman.mlockall
-    libc.src.sys.mman.mmap
-    libc.src.sys.mman.mremap
-    libc.src.sys.mman.mprotect
-    libc.src.sys.mman.msync
-    libc.src.sys.mman.munlock
-    libc.src.sys.mman.munlockall
-    libc.src.sys.mman.munmap
-    libc.src.sys.mman.pkey_alloc
-    libc.src.sys.mman.pkey_free
-    libc.src.sys.mman.pkey_get
-    libc.src.sys.mman.pkey_mprotect
-    libc.src.sys.mman.pkey_set
-    libc.src.sys.mman.remap_file_pages
-    libc.src.sys.mman.posix_madvise
-    libc.src.sys.mman.shm_open
-    libc.src.sys.mman.shm_unlink
-
-    # sys/random.h entrypoints
-    libc.src.sys.random.getrandom
-
-    # sys/resource.h entrypoints
-    libc.src.sys.resource.getrlimit
-    libc.src.sys.resource.setrlimit
-
-    # sys/sendfile entrypoints
-    libc.src.sys.sendfile.sendfile
-
-    # sys/stat.h entrypoints
-    libc.src.sys.stat.chmod
-    libc.src.sys.stat.fchmod
-    libc.src.sys.stat.fchmodat
-    libc.src.sys.stat.fstat
-    libc.src.sys.stat.lstat
-    libc.src.sys.stat.mkdir
-    libc.src.sys.stat.mkdirat
-    libc.src.sys.stat.stat
-
-    # sys/statvfs.h
-    libc.src.sys.statvfs.fstatvfs
-    libc.src.sys.statvfs.statvfs
-
-    # sys/utimes.h entrypoints
-    libc.src.sys.time.utimes
-
-    # sys/utsname.h entrypoints
-    libc.src.sys.utsname.uname
-
-    # sys/wait.h entrypoints
-    libc.src.sys.wait.wait
-    libc.src.sys.wait.wait4
-    libc.src.sys.wait.waitpid
-
-    # sys/prctl.h entrypoints
-    libc.src.sys.prctl.prctl
-
-    # sys/auxv.h entrypoints
-    libc.src.sys.auxv.getauxval
-
-    # termios.h entrypoints
-    libc.src.termios.cfgetispeed
-    libc.src.termios.cfgetospeed
-    libc.src.termios.cfsetispeed
-    libc.src.termios.cfsetospeed
-    libc.src.termios.tcdrain
-    libc.src.termios.tcflow
-    libc.src.termios.tcflush
-    libc.src.termios.tcgetattr
-    libc.src.termios.tcgetsid
-    libc.src.termios.tcsendbreak
-    libc.src.termios.tcsetattr
-
-    # unistd.h entrypoints
-    libc.src.unistd.access
-    libc.src.unistd.chdir
-    libc.src.unistd.chown
-    libc.src.unistd.close
-    libc.src.unistd.dup
-    libc.src.unistd.dup2
-    libc.src.unistd.dup3
-    libc.src.unistd.execve
-    libc.src.unistd.faccessat
-    libc.src.unistd.fchdir
-    libc.src.unistd.fchown
-    libc.src.unistd.fpathconf
-    libc.src.unistd.fsync
-    libc.src.unistd.ftruncate
-    libc.src.unistd.getcwd
-    libc.src.unistd.getentropy
-    libc.src.unistd.geteuid
-    libc.src.unistd.gethostname
-    libc.src.unistd.getpagesize
-    libc.src.unistd.getpid
-    libc.src.unistd.getppid
-    libc.src.unistd.getsid
-    libc.src.unistd.gettid
-    libc.src.unistd.getgid
-    libc.src.unistd.getuid
-    libc.src.unistd.isatty
-    libc.src.unistd.link
-    libc.src.unistd.linkat
-    libc.src.unistd.lseek
-    libc.src.unistd.pathconf
-    libc.src.unistd.pipe
-    libc.src.unistd.pipe2
-    libc.src.unistd.pread
-    libc.src.unistd.pwrite
-    libc.src.unistd.read
-    libc.src.unistd.readlink
-    libc.src.unistd.readlinkat
-    libc.src.unistd.rmdir
-    libc.src.unistd.setsid
-    libc.src.unistd.symlink
-    libc.src.unistd.symlinkat
-    libc.src.unistd.sysconf
-    libc.src.unistd.truncate
-    libc.src.unistd.unlink
-    libc.src.unistd.unlinkat
-    libc.src.unistd.write
-
-    # wchar.h entrypoints
-    libc.src.wchar.btowc
-    libc.src.wchar.wcslen
-    libc.src.wchar.wcsnlen
-    libc.src.wchar.wctob
-    libc.src.wchar.wmemmove
-    libc.src.wchar.wmemset
-    libc.src.wchar.wcschr
-    libc.src.wchar.wcsncmp
-    libc.src.wchar.wcscmp
-    libc.src.wchar.wcspbrk
-    libc.src.wchar.wcsrchr
-    libc.src.wchar.wcsspn
-    libc.src.wchar.wcscspn
-    libc.src.wchar.wcsdup
-    libc.src.wchar.wmemcmp
-    libc.src.wchar.wmempcpy
-    libc.src.wchar.wmemcpy
-    libc.src.wchar.wcsncpy
-    libc.src.wchar.wcscat
-    libc.src.wchar.wcsstr
-    libc.src.wchar.wcsncat
-    libc.src.wchar.wcslcat
-    libc.src.wchar.wcscpy
-    libc.src.wchar.wcslcpy
-    libc.src.wchar.wmemchr
-    libc.src.wchar.wcpcpy
-    libc.src.wchar.wcpncpy
-    libc.src.wchar.wcstod
-    libc.src.wchar.wcstof
-    libc.src.wchar.wcstok
-    libc.src.wchar.wcstol
-    libc.src.wchar.wcstold
-    libc.src.wchar.wcstoll
-    libc.src.wchar.wcstoul
-    libc.src.wchar.wcstoull
-
-    # wctype.h entrypoints
-    libc.src.wctype.iswalpha
-
-    # sys/uio.h entrypoints
-    libc.src.sys.uio.writev
-    libc.src.sys.uio.readv
-
-    # sys/time.h entrypoints
-    libc.src.sys.time.setitimer
-    libc.src.sys.time.getitimer
-)
-
-if(LLVM_LIBC_INCLUDE_SCUDO)
-  list(APPEND TARGET_LIBC_ENTRYPOINTS
-    # malloc.h external entrypoints
-    libc.src.stdlib.mallopt
-  )
-endif()
-
-set(TARGET_LIBM_ENTRYPOINTS
-    # complex.h entrypoints
-    libc.src.complex.creal
-    libc.src.complex.crealf
-    libc.src.complex.creall
-    libc.src.complex.cimag
-    libc.src.complex.cimagf
-    libc.src.complex.cimagl
-    libc.src.complex.conj
-    libc.src.complex.conjf
-    libc.src.complex.conjl
-    libc.src.complex.cproj
-    libc.src.complex.cprojf
-    libc.src.complex.cprojl
-
-    # fenv.h entrypoints
-    libc.src.fenv.feclearexcept
-    libc.src.fenv.fedisableexcept
-    libc.src.fenv.feenableexcept
-    libc.src.fenv.fegetenv
-    libc.src.fenv.fegetexcept
-    libc.src.fenv.fegetexceptflag
-    libc.src.fenv.fegetround
-    libc.src.fenv.feholdexcept
-    libc.src.fenv.feraiseexcept
-    libc.src.fenv.fesetenv
-    libc.src.fenv.fesetexcept
-    libc.src.fenv.fesetexceptflag
-    libc.src.fenv.fesetround
-    libc.src.fenv.fetestexcept
-    libc.src.fenv.fetestexceptflag
-    libc.src.fenv.feupdateenv
-
-    # math.h entrypoints
-    libc.src.math.acos
-    libc.src.math.acosf
-    libc.src.math.acoshf
-    libc.src.math.asin
-    libc.src.math.asinf
-    libc.src.math.asinhf
-    libc.src.math.atan2
-    libc.src.math.atan2f
-    libc.src.math.atan
-    libc.src.math.atanf
-    libc.src.math.atanhf
-    libc.src.math.canonicalize
-    libc.src.math.canonicalizef
-    libc.src.math.canonicalizel
-    libc.src.math.cbrt
-    libc.src.math.cbrtf
-    libc.src.math.ceil
-    libc.src.math.ceilf
-    libc.src.math.ceill
-    libc.src.math.copysign
-    libc.src.math.copysignf
-    libc.src.math.copysignl
-    libc.src.math.cos
-    libc.src.math.cosf
-    libc.src.math.coshf
-    libc.src.math.cospif
-    libc.src.math.dfmal
-    libc.src.math.dmull
-    libc.src.math.dsqrtl
-    libc.src.math.daddl
-    libc.src.math.ddivl
-    libc.src.math.dsubl
-    libc.src.math.erff
-    libc.src.math.exp
-    libc.src.math.exp10
-    libc.src.math.exp10f
-    libc.src.math.exp10m1f
-    libc.src.math.exp2
-    libc.src.math.exp2f
-    libc.src.math.exp2m1f
-    libc.src.math.expf
-    libc.src.math.expm1
-    libc.src.math.expm1f
-    libc.src.math.fabs
-    libc.src.math.fabsf
-    libc.src.math.fabsl
-    libc.src.math.fadd
-    libc.src.math.faddl
-    libc.src.math.fadd
-    libc.src.math.fdim
-    libc.src.math.fdimf
-    libc.src.math.fdiml
-    libc.src.math.fdiv
-    libc.src.math.fdivl
-    libc.src.math.ffma
-    libc.src.math.ffmal
-    libc.src.math.floor
-    libc.src.math.floorf
-    libc.src.math.floorl
-    libc.src.math.fma
-    libc.src.math.fmaf
-    libc.src.math.fmax
-    libc.src.math.fmaxf
-    libc.src.math.fmaximum
-    libc.src.math.fmaximum_mag
-    libc.src.math.fmaximum_mag_num
-    libc.src.math.fmaximum_mag_numf
-    libc.src.math.fmaximum_mag_numl
-    libc.src.math.fmaximum_magf
-    libc.src.math.fmaximum_magl
-    libc.src.math.fmaximum_num
-    libc.src.math.fmaximum_numf
-    libc.src.math.fmaximum_numl
-    libc.src.math.fmaximumf
-    libc.src.math.fmaximuml
-    libc.src.math.fmaxl
-    libc.src.math.fmin
-    libc.src.math.fminf
-    libc.src.math.fminimum
-    libc.src.math.fminimum_mag
-    libc.src.math.fminimum_mag_num
-    libc.src.math.fminimum_mag_numf
-    libc.src.math.fminimum_mag_numl
-    libc.src.math.fminimum_magf
-    libc.src.math.fminimum_magl
-    libc.src.math.fminimum_num
-    libc.src.math.fminimum_numf
-    libc.src.math.fminimum_numl
-    libc.src.math.fminimumf
-    libc.src.math.fminimuml
-    libc.src.math.fminl
-    libc.src.math.fmod
-    libc.src.math.fmodf
-    libc.src.math.fmodl
-    libc.src.math.fmul
-    libc.src.math.fmull
-    libc.src.math.frexp
-    libc.src.math.frexpf
-    libc.src.math.frexpl
-    libc.src.math.fromfp
-    libc.src.math.fromfpf
-    libc.src.math.fromfpl
-    libc.src.math.fromfpx
-    libc.src.math.fromfpxf
-    libc.src.math.fromfpxl
-    libc.src.math.fsqrt
-    libc.src.math.fsqrtl
-    libc.src.math.fsub
-    libc.src.math.fsubl
-    libc.src.math.getpayload
-    libc.src.math.getpayloadf
-    libc.src.math.getpayloadl
-    libc.src.math.hypot
-    libc.src.math.hypotf
-    libc.src.math.ilogb
-    libc.src.math.ilogbf
-    libc.src.math.ilogbl
-    libc.src.math.iscanonical
-    libc.src.math.iscanonicalf
-    libc.src.math.iscanonicall
-    libc.src.math.isnan
-    libc.src.math.isnanf
-    libc.src.math.isnanl
-    libc.src.math.issignaling
-    libc.src.math.issignalingf
-    libc.src.math.issignalingl
-    libc.src.math.ldexp
-    libc.src.math.ldexpf
-    libc.src.math.ldexpl
-    libc.src.math.llogb
-    libc.src.math.llogbf
-    libc.src.math.llogbl
-    libc.src.math.llrint
-    libc.src.math.llrintf
-    libc.src.math.llrintl
-    libc.src.math.llround
-    libc.src.math.llroundf
-    libc.src.math.llroundl
-    libc.src.math.log
-    libc.src.math.log10
-    libc.src.math.log10f
-    libc.src.math.log1p
-    libc.src.math.log1pf
-    libc.src.math.log2
-    libc.src.math.log2f
-    libc.src.math.logb
-    libc.src.math.logbf
-    libc.src.math.logbl
-    libc.src.math.logf
-    libc.src.math.lrint
-    libc.src.math.lrintf
-    libc.src.math.lrintl
-    libc.src.math.lround
-    libc.src.math.lroundf
-    libc.src.math.lroundl
-    libc.src.math.modf
-    libc.src.math.modff
-    libc.src.math.modfl
-    libc.src.math.nan
-    libc.src.math.nanf
-    libc.src.math.nanl
-    libc.src.math.nearbyint
-    libc.src.math.nearbyintf
-    libc.src.math.nearbyintl
-    libc.src.math.nextafter
-    libc.src.math.nextafterf
-    libc.src.math.nextafterl
-    libc.src.math.nextdown
-    libc.src.math.nextdownf
-    libc.src.math.nextdownl
-    libc.src.math.nexttoward
-    libc.src.math.nexttowardf
-    libc.src.math.nexttowardl
-    libc.src.math.nextup
-    libc.src.math.nextupf
-    libc.src.math.nextupl
-    libc.src.math.pow
-    libc.src.math.powf
-    libc.src.math.remainder
-    libc.src.math.remainderf
-    libc.src.math.remainderl
-    libc.src.math.remquo
-    libc.src.math.remquof
-    libc.src.math.remquol
-    libc.src.math.rint
-    libc.src.math.rintf
-    libc.src.math.rintl
-    libc.src.math.round
-    libc.src.math.roundeven
-    libc.src.math.roundevenf
-    libc.src.math.roundevenl
-    libc.src.math.roundf
-    libc.src.math.roundl
-    libc.src.math.scalbln
-    libc.src.math.scalblnf
-    libc.src.math.scalblnl
-    libc.src.math.scalbn
-    libc.src.math.scalbnf
-    libc.src.math.scalbnl
-    libc.src.math.setpayload
-    libc.src.math.setpayloadf
-    libc.src.math.setpayloadl
-    libc.src.math.setpayloadsig
-    libc.src.math.setpayloadsigf
-    libc.src.math.setpayloadsigl
-    libc.src.math.sin
-    libc.src.math.sincos
-    libc.src.math.sincosf
-    libc.src.math.sinf
-    libc.src.math.sinhf
-    libc.src.math.sinpif
-    libc.src.math.sqrt
-    libc.src.math.sqrtf
-    libc.src.math.sqrtl
-    libc.src.math.tan
-    libc.src.math.tanf
-    libc.src.math.tanhf
-    libc.src.math.tanpif
-    libc.src.math.totalorder
-    libc.src.math.totalorderf
-    libc.src.math.totalorderl
-    libc.src.math.totalordermag
-    libc.src.math.totalordermagf
-    libc.src.math.totalordermagl
-    libc.src.math.trunc
-    libc.src.math.truncf
-    libc.src.math.truncl
-    libc.src.math.ufromfp
-    libc.src.math.ufromfpf
-    libc.src.math.ufromfpl
-    libc.src.math.ufromfpx
-    libc.src.math.ufromfpxf
-    libc.src.math.ufromfpxl
-)
-
-if(LIBC_TYPES_HAS_CFLOAT16)
-  list(APPEND TARGET_LIBM_ENTRYPOINTS
-    # complex.h C23 _Complex _Float16 entrypoints
-    libc.src.complex.crealf16
-    libc.src.complex.cimagf16
-    libc.src.complex.conjf16
-    libc.src.complex.cprojf16
-  )
-endif()
-
-if(LIBC_TYPES_HAS_FLOAT16)
-  list(APPEND TARGET_LIBM_ENTRYPOINTS
-    # math.h C23 _Float16 entrypoints
-    libc.src.math.acosf16
-    libc.src.math.acoshf16
-    libc.src.math.acospif16
-    libc.src.math.asinf16
-    libc.src.math.asinhf16
-    libc.src.math.asinpif16
-    libc.src.math.atanf16
-    libc.src.math.atanhf16
-    libc.src.math.atanpif16
-    libc.src.math.canonicalizef16
-    libc.src.math.ceilf16
-    libc.src.math.copysignf16
-    libc.src.math.cosf16
-    libc.src.math.coshf16
-    libc.src.math.cospif16
-    libc.src.math.exp10f16
-    libc.src.math.exp10m1f16
-    libc.src.math.exp2f16
-    libc.src.math.exp2m1f16
-    libc.src.math.expf16
-    libc.src.math.expm1f16
-    libc.src.math.f16add
-    libc.src.math.f16addf
-    libc.src.math.f16addl
-    libc.src.math.f16div
-    libc.src.math.f16divf
-    libc.src.math.f16divl
-    libc.src.math.f16fma
-    libc.src.math.f16fmaf
-    libc.src.math.f16fmal
-    libc.src.math.f16mul
-    libc.src.math.f16mulf
-    libc.src.math.f16mull
-    libc.src.math.f16sqrt
-    libc.src.math.f16sqrtf
-    libc.src.math.f16sqrtl
-    libc.src.math.f16sub
-    libc.src.math.f16subf
-    libc.src.math.f16subl
-    libc.src.math.fabsf16
-    libc.src.math.fdimf16
-    libc.src.math.floorf16
-    libc.src.math.fmaf16
-    libc.src.math.fmaxf16
-    libc.src.math.fmaximum_mag_numf16
-    libc.src.math.fmaximum_magf16
-    libc.src.math.fmaximum_numf16
-    libc.src.math.fmaximumf16
-    libc.src.math.fminf16
-    libc.src.math.fminimum_mag_numf16
-    libc.src.math.fminimum_magf16
-    libc.src.math.fminimum_numf16
-    libc.src.math.fminimumf16
-    libc.src.math.fmodf16
-    libc.src.math.frexpf16
-    libc.src.math.fromfpf16
-    libc.src.math.fromfpxf16
-    libc.src.math.getpayloadf16
-    libc.src.math.hypotf16
-    libc.src.math.ilogbf16
-    libc.src.math.iscanonicalf16
-    libc.src.math.issignalingf16
-    libc.src.math.ldexpf16
-    libc.src.math.llogbf16
-    libc.src.math.llrintf16
-    libc.src.math.llroundf16
-    libc.src.math.log10f16
-    libc.src.math.log2f16
-    libc.src.math.logbf16
-    libc.src.math.logf16
-    libc.src.math.lrintf16
-    libc.src.math.lroundf16
-    libc.src.math.modff16
-    libc.src.math.nanf16
-    libc.src.math.nearbyintf16
-    libc.src.math.nextafterf16
-    libc.src.math.nextdownf16
-    libc.src.math.nexttowardf16
-    libc.src.math.nextupf16
-    libc.src.math.remainderf16
-    libc.src.math.remquof16
-    libc.src.math.rintf16
-    libc.src.math.roundevenf16
-    libc.src.math.roundf16
-    libc.src.math.rsqrtf
-    libc.src.math.rsqrtf16
-    libc.src.math.scalblnf16
-    libc.src.math.scalbnf16
-    libc.src.math.setpayloadf16
-    libc.src.math.setpayloadsigf16
-    libc.src.math.sinf16
-    libc.src.math.sinhf16
-    libc.src.math.sinpif16
-    libc.src.math.sqrtf16
-    libc.src.math.tanf16
-    libc.src.math.tanhf16
-    libc.src.math.tanpif16
-    libc.src.math.totalorderf16
-    libc.src.math.totalordermagf16
-    libc.src.math.truncf16
-    libc.src.math.ufromfpf16
-    libc.src.math.ufromfpxf16
-  )
-
-  if(LIBC_TYPES_HAS_FLOAT128)
-    list(APPEND TARGET_LIBM_ENTRYPOINTS
-      # math.h C23 mixed _Float16 and _Float128 entrypoints
-      libc.src.math.f16addf128
-      libc.src.math.f16divf128
-      libc.src.math.f16fmaf128
-      libc.src.math.f16mulf128
-      libc.src.math.f16sqrtf128
-      libc.src.math.f16subf128
-    )
-  endif()
-endif()
-
-if(LIBC_TYPES_HAS_CFLOAT128)
-  list(APPEND TARGET_LIBM_ENTRYPOINTS
-    # complex.h C23 _Complex _Float128 entrypoints
-    libc.src.complex.crealf128
-    libc.src.complex.cimagf128
-    libc.src.complex.conjf128
-    libc.src.complex.cprojf128
-  )
-endif()
-
-if(LIBC_TYPES_HAS_FLOAT128)
-  list(APPEND TARGET_LIBM_ENTRYPOINTS
-    # math.h C23 _Float128 entrypoints
-    libc.src.math.atan2f128
-    libc.src.math.canonicalizef128
-    libc.src.math.ceilf128
-    libc.src.math.copysignf128
-    libc.src.math.daddf128
-    libc.src.math.ddivf128
-    libc.src.math.dfmaf128
-    libc.src.math.dmulf128
-    libc.src.math.dsqrtf128
-    libc.src.math.dsubf128
-    libc.src.math.fabsf128
-    libc.src.math.faddf128
-    libc.src.math.fdimf128
-    libc.src.math.fdivf128
-    libc.src.math.ffmaf128
-    libc.src.math.floorf128
-    libc.src.math.fmaxf128
-    libc.src.math.fmaximum_mag_numf128
-    libc.src.math.fmaximum_magf128
-    libc.src.math.fmaximum_numf128
-    libc.src.math.fmaximumf128
-    libc.src.math.fminf128
-    libc.src.math.fminimum_mag_numf128
-    libc.src.math.fminimum_magf128
-    libc.src.math.fminimum_numf128
-    libc.src.math.fminimumf128
-    libc.src.math.fmodf128
-    libc.src.math.fmulf128
-    libc.src.math.frexpf128
-    libc.src.math.fromfpf128
-    libc.src.math.fromfpxf128
-    libc.src.math.fsqrtf128
-    libc.src.math.fsubf128
-    libc.src.math.getpayloadf128
-    libc.src.math.ilogbf128
-    libc.src.math.iscanonicalf128
-    libc.src.math.issignalingf128
-    libc.src.math.ldexpf128
-    libc.src.math.llogbf128
-    libc.src.math.llrintf128
-    libc.src.math.llroundf128
-    libc.src.math.logbf128
-    libc.src.math.lrintf128
-    libc.src.math.lroundf128
-    libc.src.math.modff128
-    libc.src.math.nanf128
-    libc.src.math.nearbyintf128
-    libc.src.math.nextafterf128
-    libc.src.math.nextdownf128
-    libc.src.math.nextupf128
-    libc.src.math.remainderf128
-    libc.src.math.remquof128
-    libc.src.math.rintf128
-    libc.src.math.roundevenf128
-    libc.src.math.roundf128
-    libc.src.math.scalblnf128
-    libc.src.math.scalbnf128
-    libc.src.math.setpayloadf128
-    libc.src.math.setpayloadsigf128
-    libc.src.math.sqrtf128
-    libc.src.math.totalorderf128
-    libc.src.math.totalordermagf128
-    libc.src.math.truncf128
-    libc.src.math.ufromfpf128
-    libc.src.math.ufromfpxf128
-  )
-endif()
-
-list(APPEND TARGET_LIBM_ENTRYPOINTS
-  # bfloat16 entrypoints
-  libc.src.math.bf16add
-  libc.src.math.bf16addf
-  libc.src.math.bf16addl
-  libc.src.math.bf16div
-  libc.src.math.bf16divf
-  libc.src.math.bf16divl
-  libc.src.math.bf16fma
-  libc.src.math.bf16fmaf
-  libc.src.math.bf16fmal
-  libc.src.math.bf16mul
-  libc.src.math.bf16mulf
-  libc.src.math.bf16mull
-  libc.src.math.bf16sub
-  libc.src.math.bf16subf
-  libc.src.math.bf16subl
-  libc.src.math.canonicalizebf16
-  libc.src.math.ceilbf16
-  libc.src.math.copysignbf16
-  libc.src.math.fabsbf16
-  libc.src.math.fdimbf16
-  libc.src.math.floorbf16
-  libc.src.math.fmaxbf16
-  libc.src.math.fmaximumbf16
-  libc.src.math.fmaximum_magbf16
-  libc.src.math.fmaximum_mag_numbf16
-  libc.src.math.fmaximum_numbf16
-  libc.src.math.fminbf16
-  libc.src.math.fminimumbf16
-  libc.src.math.fminimum_magbf16
-  libc.src.math.fminimum_mag_numbf16
-  libc.src.math.fminimum_numbf16
-  libc.src.math.fmodbf16
-  libc.src.math.frexpbf16
-  libc.src.math.fromfpbf16
-  libc.src.math.fromfpxbf16
-  libc.src.math.getpayloadbf16
-  libc.src.math.ilogbbf16
-  libc.src.math.iscanonicalbf16
-  libc.src.math.issignalingbf16
-  libc.src.math.ldexpbf16
-  libc.src.math.llogbbf16
-  libc.src.math.llrintbf16
-  libc.src.math.llroundbf16
-  libc.src.math.log_bf16
-  libc.src.math.logbbf16
-  libc.src.math.lrintbf16
-  libc.src.math.lroundbf16
-  libc.src.math.modfbf16
-  libc.src.math.nanbf16
-  libc.src.math.nearbyintbf16
-  libc.src.math.nextafterbf16
-  libc.src.math.nextdownbf16
-  libc.src.math.nexttowardbf16
-  libc.src.math.nextupbf16
-  libc.src.math.remainderbf16
-  libc.src.math.remquobf16
-  libc.src.math.rintbf16
-  libc.src.math.roundbf16
-  libc.src.math.roundevenbf16
-  libc.src.math.scalblnbf16
-  libc.src.math.scalbnbf16
-  libc.src.math.setpayloadbf16
-  libc.src.math.setpayloadsigbf16
-  libc.src.math.sqrtbf16
-  libc.src.math.truncbf16
-  libc.src.math.totalorderbf16
-  libc.src.math.totalordermagbf16
-  libc.src.math.ufromfpbf16
-  libc.src.math.ufromfpxbf16
-)
-
-if(LIBC_TYPES_HAS_FLOAT128)
-  list(APPEND TARGET_LIBM_ENTRYPOINTS
-    # math.h C++23 mixed bfloat16 and _Float128 entrypoints
-    libc.src.math.bf16addf128
-    libc.src.math.bf16divf128
-    libc.src.math.bf16fmaf128
-    libc.src.math.bf16mulf128
-    libc.src.math.bf16subf128
-  )
-endif()
-
-if(LIBC_COMPILER_HAS_FIXED_POINT)
-  list(APPEND TARGET_LIBM_ENTRYPOINTS
-    # stdfix.h _Fract and _Accum entrypoints
-    libc.src.stdfix.abshk
-    libc.src.stdfix.abshr
-    libc.src.stdfix.absk
-    libc.src.stdfix.abslk
-    libc.src.stdfix.abslr
-    libc.src.stdfix.absr
-    libc.src.stdfix.exphk
-    libc.src.stdfix.expk
-    libc.src.stdfix.roundhk
-    libc.src.stdfix.roundhr
-    libc.src.stdfix.roundk
-    libc.src.stdfix.roundlk
-    libc.src.stdfix.roundlr
-    libc.src.stdfix.roundr
-    libc.src.stdfix.rounduhk
-    libc.src.stdfix.rounduhr
-    libc.src.stdfix.rounduk
-    libc.src.stdfix.roundulk
-    libc.src.stdfix.roundulr
-    libc.src.stdfix.roundur
-    libc.src.stdfix.sqrtuhk
-    libc.src.stdfix.sqrtuhr
-    libc.src.stdfix.sqrtuk
-    libc.src.stdfix.sqrtur
-    # libc.src.stdfix.sqrtulk
-    libc.src.stdfix.sqrtulr
-    libc.src.stdfix.uhksqrtus
-    libc.src.stdfix.uksqrtui
-    libc.src.stdfix.hrbits
-    libc.src.stdfix.uhrbits
-    libc.src.stdfix.rbits
-    libc.src.stdfix.urbits
-    libc.src.stdfix.lrbits
-    libc.src.stdfix.ulrbits
-    libc.src.stdfix.hkbits
-    libc.src.stdfix.uhkbits
-    libc.src.stdfix.kbits
-    libc.src.stdfix.ukbits
-    libc.src.stdfix.lkbits
-    libc.src.stdfix.ulkbits
-    libc.src.stdfix.bitshr
-    libc.src.stdfix.bitsr
-    libc.src.stdfix.bitslr
-    libc.src.stdfix.bitshk
-    libc.src.stdfix.bitsk
-    libc.src.stdfix.bitslk
-    libc.src.stdfix.bitsuhr
-    libc.src.stdfix.bitsur
-    libc.src.stdfix.bitsulr
-    libc.src.stdfix.bitsuhk
-    libc.src.stdfix.bitsuk
-    libc.src.stdfix.bitsulk
-    libc.src.stdfix.countlshr
-    libc.src.stdfix.countlsr
-    libc.src.stdfix.countlslr
-    libc.src.stdfix.countlshk
-    libc.src.stdfix.countlsk
-    libc.src.stdfix.countlslk
-    libc.src.stdfix.countlsuhr
-    libc.src.stdfix.countlsur
-    libc.src.stdfix.countlsulr
-    libc.src.stdfix.countlsuhk
-    libc.src.stdfix.countlsuk
-    libc.src.stdfix.countlsulk
-    libc.src.stdfix.idivr
-    libc.src.stdfix.idivlr
-    libc.src.stdfix.idivk
-    libc.src.stdfix.idivlk
-    libc.src.stdfix.idivur
-    libc.src.stdfix.idivulr
-    libc.src.stdfix.idivuk
-    libc.src.stdfix.idivulk
-    libc.src.stdfix.rdivi
-  )
-endif()
-
-if(LLVM_LIBC_FULL_BUILD)
-  list(APPEND TARGET_LIBC_ENTRYPOINTS
-    # ctype.h entrypoints
-    libc.src.ctype.isalnum_l
-    libc.src.ctype.isalpha_l
-    libc.src.ctype.isblank_l
-    libc.src.ctype.iscntrl_l
-    libc.src.ctype.isdigit_l
-    libc.src.ctype.isgraph_l
-    libc.src.ctype.islower_l
-    libc.src.ctype.isprint_l
-    libc.src.ctype.ispunct_l
-    libc.src.ctype.isspace_l
-    libc.src.ctype.isupper_l
-    libc.src.ctype.isxdigit_l
-    libc.src.ctype.tolower_l
-    libc.src.ctype.toupper_l
-
-    # stdlib.h entrypoints
-    libc.src.stdlib.strtod_l
-    libc.src.stdlib.strtof_l
-    libc.src.stdlib.strtol_l
-    libc.src.stdlib.strtold_l
-    libc.src.stdlib.strtoll_l
-    libc.src.stdlib.strtoul_l
-    libc.src.stdlib.strtoull_l
-
-    # string.h entrypoints
-    libc.src.string.strcoll_l
-    libc.src.string.strxfrm_l
-
-    # strings.h entrypoints
-    libc.src.strings.strcasecmp_l
-    libc.src.strings.strncasecmp_l
-
-    # assert.h entrypoints
-    libc.src.assert.__assert_fail
-
-    # compiler entrypoints (no corresponding header)
-    libc.src.compiler.__stack_chk_fail
-
-    # dirent.h entrypoints
-    libc.src.dirent.closedir
-    libc.src.dirent.dirfd
-    libc.src.dirent.opendir
-    libc.src.dirent.readdir
-
-    # arpa/inet.h entrypoints
-    libc.src.arpa.inet.htonl
-    libc.src.arpa.inet.htons
-    libc.src.arpa.inet.inet_addr
-    libc.src.arpa.inet.inet_aton
-    libc.src.arpa.inet.ntohl
-    libc.src.arpa.inet.ntohs
-
-    # pthread.h entrypoints
-    libc.src.pthread.pthread_atfork
-    libc.src.pthread.pthread_attr_destroy
-    libc.src.pthread.pthread_attr_getdetachstate
-    libc.src.pthread.pthread_attr_getguardsize
-    libc.src.pthread.pthread_attr_getstack
-    libc.src.pthread.pthread_attr_getstacksize
-    libc.src.pthread.pthread_attr_init
-    libc.src.pthread.pthread_attr_setdetachstate
-    libc.src.pthread.pthread_attr_setguardsize
-    libc.src.pthread.pthread_attr_setstack
-    libc.src.pthread.pthread_attr_setstacksize
-    libc.src.pthread.pthread_condattr_destroy
-    libc.src.pthread.pthread_condattr_getclock
-    libc.src.pthread.pthread_condattr_getpshared
-    libc.src.pthread.pthread_condattr_init
-    libc.src.pthread.pthread_condattr_setclock
-    libc.src.pthread.pthread_condattr_setpshared
-    libc.src.pthread.pthread_create
-    libc.src.pthread.pthread_detach
-    libc.src.pthread.pthread_equal
-    libc.src.pthread.pthread_exit
-    libc.src.pthread.pthread_getname_np
-    libc.src.pthread.pthread_getspecific
-    libc.src.pthread.pthread_join
-    libc.src.pthread.pthread_key_create
-    libc.src.pthread.pthread_key_delete
-    libc.src.pthread.pthread_barrier_init
-    libc.src.pthread.pthread_barrier_wait
-    libc.src.pthread.pthread_barrier_destroy
-    libc.src.pthread.pthread_mutex_destroy
-    libc.src.pthread.pthread_mutex_init
-    libc.src.pthread.pthread_mutex_lock
-    libc.src.pthread.pthread_mutex_unlock
-    libc.src.pthread.pthread_mutexattr_destroy
-    libc.src.pthread.pthread_mutexattr_getpshared
-    libc.src.pthread.pthread_mutexattr_getrobust
-    libc.src.pthread.pthread_mutexattr_gettype
-    libc.src.pthread.pthread_mutexattr_init
-    libc.src.pthread.pthread_mutexattr_setpshared
-    libc.src.pthread.pthread_mutexattr_setrobust
-    libc.src.pthread.pthread_mutexattr_settype
-    libc.src.pthread.pthread_once
-    libc.src.pthread.pthread_rwlock_clockrdlock
-    libc.src.pthread.pthread_rwlock_clockwrlock
-    libc.src.pthread.pthread_rwlock_destroy
-    libc.src.pthread.pthread_rwlock_init
-    libc.src.pthread.pthread_rwlock_rdlock
-    libc.src.pthread.pthread_rwlock_timedrdlock
-    libc.src.pthread.pthread_rwlock_timedwrlock
-    libc.src.pthread.pthread_rwlock_tryrdlock
-    libc.src.pthread.pthread_rwlock_trywrlock
-    libc.src.pthread.pthread_rwlock_unlock
-    libc.src.pthread.pthread_rwlock_wrlock
-    libc.src.pthread.pthread_rwlockattr_destroy
-    libc.src.pthread.pthread_rwlockattr_getkind_np
-    libc.src.pthread.pthread_rwlockattr_getpshared
-    libc.src.pthread.pthread_rwlockattr_init
-    libc.src.pthread.pthread_rwlockattr_setkind_np
-    libc.src.pthread.pthread_rwlockattr_setpshared
-    libc.src.pthread.pthread_spin_destroy
-    libc.src.pthread.pthread_spin_init
-    libc.src.pthread.pthread_spin_lock
-    libc.src.pthread.pthread_spin_trylock
-    libc.src.pthread.pthread_spin_unlock
-    libc.src.pthread.pthread_self
-    libc.src.pthread.pthread_setname_np
-    libc.src.pthread.pthread_setspecific
-
-    # sched.h entrypoints
-    libc.src.sched.__sched_getcpucount
-    libc.src.sched.__sched_setcpuzero
-    libc.src.sched.__sched_setcpuset
-    libc.src.sched.__sched_getcpuisset
-
-    # setjmp.h entrypoints
-    libc.src.setjmp.longjmp
-    libc.src.setjmp.setjmp
-    libc.src.setjmp.siglongjmp
-    libc.src.setjmp.sigsetjmp
-
-    # stdio.h entrypoints
-    libc.src.stdio.clearerr
-    libc.src.stdio.clearerr_unlocked
-    libc.src.stdio.fclose
-    libc.src.stdio.fdopen
-    libc.src.stdio.feof
-    libc.src.stdio.feof_unlocked
-    libc.src.stdio.ferror
-    libc.src.stdio.ferror_unlocked
-    libc.src.stdio.fflush
-    libc.src.stdio.fgetc
-    libc.src.stdio.fgetc_unlocked
-    libc.src.stdio.fgets
-    libc.src.stdio.fileno
-    libc.src.stdio.flockfile
-    libc.src.stdio.fopen
-    libc.src.stdio.fopencookie
-    libc.src.stdio.fputc
-    libc.src.stdio.fputs
-    libc.src.stdio.fread
-    libc.src.stdio.fread_unlocked
-    libc.src.stdio.fseek
-    libc.src.stdio.fseeko
-    libc.src.stdio.ftell
-    libc.src.stdio.ftello
-    libc.src.stdio.funlockfile
-    libc.src.stdio.fwrite
-    libc.src.stdio.fwrite_unlocked
-    libc.src.stdio.getc
-    libc.src.stdio.getc_unlocked
-    libc.src.stdio.getchar
-    libc.src.stdio.getchar_unlocked
-    libc.src.stdio.perror
-    libc.src.stdio.putc
-    libc.src.stdio.putchar
-    libc.src.stdio.puts
-    libc.src.stdio.setbuf
-    libc.src.stdio.setvbuf
-    libc.src.stdio.stderr
-    libc.src.stdio.stdin
-    libc.src.stdio.stdout
-    libc.src.stdio.ungetc
-
-    # stdlib.h entrypoints
-    libc.src.stdlib._Exit
-    libc.src.stdlib.abort
-    libc.src.stdlib.at_quick_exit
-    libc.src.stdlib.atexit
-    libc.src.stdlib.exit
-    libc.src.stdlib.getenv
-    libc.src.stdlib.mbstowcs
-    libc.src.stdlib.mbtowc
-    libc.src.stdlib.quick_exit
-    libc.src.stdlib.wcstombs
-    libc.src.stdlib.wctomb
-
-    # signal.h entrypoints
-    libc.src.signal.kill
-    libc.src.signal.raise
-    libc.src.signal.sigaction
-    libc.src.signal.sigaddset
-    libc.src.signal.sigaltstack
-    libc.src.signal.sigdelset
-    libc.src.signal.sigemptyset
-    libc.src.signal.sigfillset
-    libc.src.signal.signal
-    libc.src.signal.sigprocmask
-
-    # spawn.h entrypoints
-    libc.src.spawn.posix_spawn
-    libc.src.spawn.posix_spawn_file_actions_addclose
-    libc.src.spawn.posix_spawn_file_actions_adddup2
-    libc.src.spawn.posix_spawn_file_actions_addopen
-    libc.src.spawn.posix_spawn_file_actions_destroy
-    libc.src.spawn.posix_spawn_file_actions_init
-
-    # search.h entrypoints
-    libc.src.search.hcreate
-    libc.src.search.hcreate_r
-    libc.src.search.hdestroy
-    libc.src.search.hdestroy_r
-    libc.src.search.hsearch
-    libc.src.search.hsearch_r
-    libc.src.search.insque
-    libc.src.search.lfind
-    libc.src.search.lsearch
-    libc.src.search.remque
-
-    # threads.h entrypoints
-    libc.src.threads.call_once
-    libc.src.threads.cnd_broadcast
-    libc.src.threads.cnd_destroy
-    libc.src.threads.cnd_init
-    libc.src.threads.cnd_signal
-    libc.src.threads.cnd_wait
-    libc.src.threads.mtx_destroy
-    libc.src.threads.mtx_init
-    libc.src.threads.mtx_lock
-    libc.src.threads.mtx_unlock
-    libc.src.threads.thrd_create
-    libc.src.threads.thrd_current
-    libc.src.threads.thrd_detach
-    libc.src.threads.thrd_equal
-    libc.src.threads.thrd_exit
-    libc.src.threads.thrd_join
-    libc.src.threads.tss_create
-    libc.src.threads.tss_delete
-    libc.src.threads.tss_get
-    libc.src.threads.tss_set
-
-    # time.h entrypoints
-    libc.src.time.asctime
-    libc.src.time.asctime_r
-    libc.src.time.ctime
-    libc.src.time.ctime_r
-    libc.src.time.clock
-    libc.src.time.clock_gettime
-    libc.src.time.clock_settime
-    libc.src.time.difftime
-    libc.src.time.gettimeofday
-    libc.src.time.gmtime
-    libc.src.time.gmtime_r
-    libc.src.time.localtime
-    libc.src.time.localtime_r
-    libc.src.time.mktime
-    libc.src.time.nanosleep
-    libc.src.time.strftime
-    libc.src.time.strftime_l
-    libc.src.time.time
-    libc.src.time.timespec_get
-
-    # locale.h entrypoints
-    libc.src.locale.localeconv
-    libc.src.locale.duplocale
-    libc.src.locale.freelocale
-    libc.src.locale.localeconv
-    libc.src.locale.newlocale
-    libc.src.locale.setlocale
-    libc.src.locale.uselocale
-
-    # unistd.h entrypoints
-    libc.src.unistd.__llvm_libc_syscall
-    libc.src.unistd._exit
-    libc.src.unistd.environ
-    libc.src.unistd.execv
-    libc.src.unistd.fork
-    libc.src.unistd.getopt
-    libc.src.unistd.optarg
-    libc.src.unistd.opterr
-    libc.src.unistd.optind
-    libc.src.unistd.optopt
-    libc.src.unistd.swab
-
-    # sys/select.h entrypoints
-    libc.src.sys.select.select
-
-    # sys/socket.h entrypoints
-    libc.src.sys.socket.socket
-    libc.src.sys.socket.bind
-    libc.src.sys.socket.socketpair
-    libc.src.sys.socket.send
-    libc.src.sys.socket.sendto
-    libc.src.sys.socket.sendmsg
-    libc.src.sys.socket.recv
-    libc.src.sys.socket.recvfrom
-    libc.src.sys.socket.recvmsg
-
-    # wchar.h entrypoints
-    libc.src.wchar.mblen
-    libc.src.wchar.mbrlen
-    libc.src.wchar.mbsinit
-    libc.src.wchar.mbrtowc
-    libc.src.wchar.mbsrtowcs
-    libc.src.wchar.mbsnrtowcs
-    libc.src.wchar.wcrtomb
-    libc.src.wchar.wcsrtombs
-    libc.src.wchar.wcsnrtombs
-
-    # nl_types.h entrypoints
-    libc.src.nl_types.catopen 
-    libc.src.nl_types.catclose
-    libc.src.nl_types.catgets
-  )
-endif()
-
-set(TARGET_LLVMLIBC_ENTRYPOINTS
-  ${TARGET_LIBC_ENTRYPOINTS}
-  ${TARGET_LIBM_ENTRYPOINTS}
-)
+set(TARGET_LIBC_ENTRYPOINTS
+    # ctype.h entrypoints
+    libc.src.ctype.isalnum
+    libc.src.ctype.isalpha
+    libc.src.ctype.isascii
+    libc.src.ctype.isblank
+    libc.src.ctype.iscntrl
+    libc.src.ctype.isdigit
+    libc.src.ctype.isgraph
+    libc.src.ctype.islower
+    libc.src.ctype.isprint
+    libc.src.ctype.ispunct
+    libc.src.ctype.isspace
+    libc.src.ctype.isupper
+    libc.src.ctype.isxdigit
+    libc.src.ctype.toascii
+    libc.src.ctype.tolower
+    libc.src.ctype.toupper
+
+    # dlfcn.h entrypoints
+    libc.src.dlfcn.dladdr
+    libc.src.dlfcn.dlclose
+    libc.src.dlfcn.dlerror
+    libc.src.dlfcn.dlopen
+    libc.src.dlfcn.dlsym
+
+    # errno.h entrypoints
+    libc.src.errno.errno
+
+    # fcntl.h entrypoints
+    libc.src.fcntl.creat
+    libc.src.fcntl.fcntl
+    libc.src.fcntl.open
+    libc.src.fcntl.openat
+
+    # poll.h entrypoints
+    libc.src.poll.poll
+
+    # sched.h entrypoints
+    libc.src.sched.getcpu
+    libc.src.sched.sched_get_priority_max
+    libc.src.sched.sched_get_priority_min
+    libc.src.sched.sched_getaffinity
+    libc.src.sched.sched_getparam
+    libc.src.sched.sched_getscheduler
+    libc.src.sched.sched_rr_get_interval
+    libc.src.sched.sched_setaffinity
+    libc.src.sched.sched_setparam
+    libc.src.sched.sched_setscheduler
+    libc.src.sched.sched_yield
+
+    # string.h entrypoints
+    libc.src.string.memccpy
+    libc.src.string.memchr
+    libc.src.string.memcmp
+    libc.src.string.memcpy
+    libc.src.string.memmem
+    libc.src.string.memmove
+    libc.src.string.mempcpy
+    libc.src.string.memrchr
+    libc.src.string.memset
+    libc.src.string.memset_explicit
+    libc.src.string.stpcpy
+    libc.src.string.stpncpy
+    libc.src.string.strcasestr
+    libc.src.string.strcat
+    libc.src.string.strchr
+    libc.src.string.strchrnul
+    libc.src.string.strcmp
+    libc.src.string.strcoll
+    libc.src.string.strcpy
+    libc.src.string.strcspn
+    libc.src.string.strdup
+    libc.src.string.strerror
+    libc.src.string.strerror_r
+    libc.src.string.strlcat
+    libc.src.string.strlcpy
+    libc.src.string.strlen
+    libc.src.string.strncat
+    libc.src.string.strncmp
+    libc.src.string.strncpy
+    libc.src.string.strndup
+    libc.src.string.strnlen
+    libc.src.string.strpbrk
+    libc.src.string.strrchr
+    libc.src.string.strsep
+    libc.src.string.strsignal
+    libc.src.string.strspn
+    libc.src.string.strstr
+    libc.src.string.strtok
+    libc.src.string.strtok_r
+    libc.src.string.strxfrm
+
+    # strings.h entrypoints
+    libc.src.strings.bcmp
+    libc.src.strings.bcopy
+    libc.src.strings.bzero
+    libc.src.strings.ffs
+    libc.src.strings.ffsl
+    libc.src.strings.ffsll
+    libc.src.strings.index
+    libc.src.strings.rindex
+    libc.src.strings.strcasecmp
+    libc.src.strings.strncasecmp
+
+    # inttypes.h entrypoints
+    libc.src.inttypes.imaxabs
+    libc.src.inttypes.imaxdiv
+    libc.src.inttypes.strtoimax
+    libc.src.inttypes.strtoumax
+
+    # stdbit.h entrypoints
+    libc.src.stdbit.stdc_bit_ceil_uc
+    libc.src.stdbit.stdc_bit_ceil_ui
+    libc.src.stdbit.stdc_bit_ceil_ul
+    libc.src.stdbit.stdc_bit_ceil_ull
+    libc.src.stdbit.stdc_bit_ceil_us
+    libc.src.stdbit.stdc_bit_floor_uc
+    libc.src.stdbit.stdc_bit_floor_ui
+    libc.src.stdbit.stdc_bit_floor_ul
+    libc.src.stdbit.stdc_bit_floor_ull
+    libc.src.stdbit.stdc_bit_floor_us
+    libc.src.stdbit.stdc_bit_width_uc
+    libc.src.stdbit.stdc_bit_width_ui
+    libc.src.stdbit.stdc_bit_width_ul
+    libc.src.stdbit.stdc_bit_width_ull
+    libc.src.stdbit.stdc_bit_width_us
+    libc.src.stdbit.stdc_count_ones_uc
+    libc.src.stdbit.stdc_count_ones_ui
+    libc.src.stdbit.stdc_count_ones_ul
+    libc.src.stdbit.stdc_count_ones_ull
+    libc.src.stdbit.stdc_count_ones_us
+    libc.src.stdbit.stdc_count_zeros_uc
+    libc.src.stdbit.stdc_count_zeros_ui
+    libc.src.stdbit.stdc_count_zeros_ul
+    libc.src.stdbit.stdc_count_zeros_ull
+    libc.src.stdbit.stdc_count_zeros_us
+    libc.src.stdbit.stdc_first_leading_one_uc
+    libc.src.stdbit.stdc_first_leading_one_ui
+    libc.src.stdbit.stdc_first_leading_one_ul
+    libc.src.stdbit.stdc_first_leading_one_ull
+    libc.src.stdbit.stdc_first_leading_one_us
+    libc.src.stdbit.stdc_first_leading_zero_uc
+    libc.src.stdbit.stdc_first_leading_zero_ui
+    libc.src.stdbit.stdc_first_leading_zero_ul
+    libc.src.stdbit.stdc_first_leading_zero_ull
+    libc.src.stdbit.stdc_first_leading_zero_us
+    libc.src.stdbit.stdc_first_trailing_one_uc
+    libc.src.stdbit.stdc_first_trailing_one_ui
+    libc.src.stdbit.stdc_first_trailing_one_ul
+    libc.src.stdbit.stdc_first_trailing_one_ull
+    libc.src.stdbit.stdc_first_trailing_one_us
+    libc.src.stdbit.stdc_first_trailing_zero_uc
+    libc.src.stdbit.stdc_first_trailing_zero_ui
+    libc.src.stdbit.stdc_first_trailing_zero_ul
+    libc.src.stdbit.stdc_first_trailing_zero_ull
+    libc.src.stdbit.stdc_first_trailing_zero_us
+    libc.src.stdbit.stdc_has_single_bit_uc
+    libc.src.stdbit.stdc_has_single_bit_ui
+    libc.src.stdbit.stdc_has_single_bit_ul
+    libc.src.stdbit.stdc_has_single_bit_ull
+    libc.src.stdbit.stdc_has_single_bit_us
+    libc.src.stdbit.stdc_leading_ones_uc
+    libc.src.stdbit.stdc_leading_ones_ui
+    libc.src.stdbit.stdc_leading_ones_ul
+    libc.src.stdbit.stdc_leading_ones_ull
+    libc.src.stdbit.stdc_leading_ones_us
+    libc.src.stdbit.stdc_leading_zeros_uc
+    libc.src.stdbit.stdc_leading_zeros_ui
+    libc.src.stdbit.stdc_leading_zeros_ul
+    libc.src.stdbit.stdc_leading_zeros_ull
+    libc.src.stdbit.stdc_leading_zeros_us
+    libc.src.stdbit.stdc_trailing_ones_uc
+    libc.src.stdbit.stdc_trailing_ones_ui
+    libc.src.stdbit.stdc_trailing_ones_ul
+    libc.src.stdbit.stdc_trailing_ones_ull
+    libc.src.stdbit.stdc_trailing_ones_us
+    libc.src.stdbit.stdc_trailing_zeros_uc
+    libc.src.stdbit.stdc_trailing_zeros_ui
+    libc.src.stdbit.stdc_trailing_zeros_ul
+    libc.src.stdbit.stdc_trailing_zeros_ull
+    libc.src.stdbit.stdc_trailing_zeros_us
+
+    # stdlib.h entrypoints
+    libc.src.stdlib.a64l
+    libc.src.stdlib.abs
+    libc.src.stdlib.atof
+    libc.src.stdlib.atoi
+    libc.src.stdlib.atol
+    libc.src.stdlib.atoll
+    libc.src.stdlib.bsearch
+    libc.src.stdlib.div
+    libc.src.stdlib.l64a
+    libc.src.stdlib.labs
+    libc.src.stdlib.ldiv
+    libc.src.stdlib.llabs
+    libc.src.stdlib.lldiv
+    libc.src.stdlib.memalignment
+    libc.src.stdlib.qsort
+    libc.src.stdlib.qsort_r
+    libc.src.stdlib.rand
+    libc.src.stdlib.srand
+    libc.src.stdlib.strfromd
+    libc.src.stdlib.strfromf
+    libc.src.stdlib.strfroml
+    libc.src.stdlib.strtod
+    libc.src.stdlib.strtof
+    libc.src.stdlib.strtol
+    libc.src.stdlib.strtold
+    libc.src.stdlib.strtoll
+    libc.src.stdlib.strtoul
+    libc.src.stdlib.strtoull
+
+    # stdlib.h external entrypoints
+    libc.src.stdlib.aligned_alloc
+    libc.src.stdlib.calloc
+    libc.src.stdlib.free
+    libc.src.stdlib.malloc
+    libc.src.stdlib.realloc
+
+    # stdio.h entrypoints
+    libc.src.stdio.fprintf
+    libc.src.stdio.fscanf
+    libc.src.stdio.vfscanf
+    libc.src.stdio.printf
+    libc.src.stdio.remove
+    libc.src.stdio.rename
+    libc.src.stdio.scanf
+    libc.src.stdio.vscanf
+    libc.src.stdio.snprintf
+    libc.src.stdio.sprintf
+    libc.src.stdio.asprintf
+    libc.src.stdio.sscanf
+    libc.src.stdio.vsscanf
+    libc.src.stdio.vfprintf
+    libc.src.stdio.vprintf
+    libc.src.stdio.vsnprintf
+    libc.src.stdio.vsprintf
+    libc.src.stdio.vasprintf
+
+    # sys/epoll.h entrypoints
+    libc.src.sys.epoll.epoll_create
+    libc.src.sys.epoll.epoll_create1
+    libc.src.sys.epoll.epoll_ctl
+    libc.src.sys.epoll.epoll_pwait
+    libc.src.sys.epoll.epoll_wait
+    # TODO: Need to check if pwait2 is available before providing.
+    # https://github.com/llvm/llvm-project/issues/80060
+    # libc.src.sys.epoll.epoll_pwait2
+
+    # sys/ioctl.h entrypoints
+    libc.src.sys.ioctl.ioctl
+
+    # sys/mman.h entrypoints
+    libc.src.sys.mman.madvise
+    libc.src.sys.mman.mincore
+    libc.src.sys.mman.mlock
+    libc.src.sys.mman.mlock2
+    libc.src.sys.mman.mlockall
+    libc.src.sys.mman.mmap
+    libc.src.sys.mman.mremap
+    libc.src.sys.mman.mprotect
+    libc.src.sys.mman.msync
+    libc.src.sys.mman.munlock
+    libc.src.sys.mman.munlockall
+    libc.src.sys.mman.munmap
+    libc.src.sys.mman.pkey_alloc
+    libc.src.sys.mman.pkey_free
+    libc.src.sys.mman.pkey_get
+    libc.src.sys.mman.pkey_mprotect
+    libc.src.sys.mman.pkey_set
+    libc.src.sys.mman.remap_file_pages
+    libc.src.sys.mman.posix_madvise
+    libc.src.sys.mman.shm_open
+    libc.src.sys.mman.shm_unlink
+
+    # sys/random.h entrypoints
+    libc.src.sys.random.getrandom
+
+    # sys/resource.h entrypoints
+    libc.src.sys.resource.getrlimit
+    libc.src.sys.resource.setrlimit
+
+    # sys/sendfile entrypoints
+    libc.src.sys.sendfile.sendfile
+
+    # sys/stat.h entrypoints
+    libc.src.sys.stat.chmod
+    libc.src.sys.stat.fchmod
+    libc.src.sys.stat.fchmodat
+    libc.src.sys.stat.fstat
+    libc.src.sys.stat.lstat
+    libc.src.sys.stat.mkdir
+    libc.src.sys.stat.mkdirat
+    libc.src.sys.stat.stat
+
+    # sys/statvfs.h
+    libc.src.sys.statvfs.fstatvfs
+    libc.src.sys.statvfs.statvfs
+
+    # sys/utimes.h entrypoints
+    libc.src.sys.time.utimes
+
+    # sys/utsname.h entrypoints
+    libc.src.sys.utsname.uname
+
+    # sys/wait.h entrypoints
+    libc.src.sys.wait.wait
+    libc.src.sys.wait.wait4
+    libc.src.sys.wait.waitpid
+
+    # sys/prctl.h entrypoints
+    libc.src.sys.prctl.prctl
+
+    # sys/auxv.h entrypoints
+    libc.src.sys.auxv.getauxval
+
+    # termios.h entrypoints
+    libc.src.termios.cfgetispeed
+    libc.src.termios.cfgetospeed
+    libc.src.termios.cfsetispeed
+    libc.src.termios.cfsetospeed
+    libc.src.termios.tcdrain
+    libc.src.termios.tcflow
+    libc.src.termios.tcflush
+    libc.src.termios.tcgetattr
+    libc.src.termios.tcgetsid
+    libc.src.termios.tcsendbreak
+    libc.src.termios.tcsetattr
+
+    # unistd.h entrypoints
+    libc.src.unistd.access
+    libc.src.unistd.chdir
+    libc.src.unistd.chown
+    libc.src.unistd.close
+    libc.src.unistd.dup
+    libc.src.unistd.dup2
+    libc.src.unistd.dup3
+    libc.src.unistd.execve
+    libc.src.unistd.faccessat
+    libc.src.unistd.fchdir
+    libc.src.unistd.fchown
+    libc.src.unistd.fpathconf
+    libc.src.unistd.fsync
+    libc.src.unistd.ftruncate
+    libc.src.unistd.getcwd
+    libc.src.unistd.getentropy
+    libc.src.unistd.geteuid
+    libc.src.unistd.gethostname
+    libc.src.unistd.getpagesize
+    libc.src.unistd.getpid
+    libc.src.unistd.getppid
+    libc.src.unistd.getsid
+    libc.src.unistd.gettid
+    libc.src.unistd.getgid
+    libc.src.unistd.getuid
+    libc.src.unistd.isatty
+    libc.src.unistd.link
+    libc.src.unistd.linkat
+    libc.src.unistd.lseek
+    libc.src.unistd.pathconf
+    libc.src.unistd.pipe
+    libc.src.unistd.pipe2
+    libc.src.unistd.pread
+    libc.src.unistd.pwrite
+    libc.src.unistd.read
+    libc.src.unistd.readlink
+    libc.src.unistd.readlinkat
+    libc.src.unistd.rmdir
+    libc.src.unistd.setsid
+    libc.src.unistd.symlink
+    libc.src.unistd.symlinkat
+    libc.src.unistd.sysconf
+    libc.src.unistd.truncate
+    libc.src.unistd.unlink
+    libc.src.unistd.unlinkat
+    libc.src.unistd.write
+
+    # wchar.h entrypoints
+    libc.src.wchar.btowc
+    libc.src.wchar.wcslen
+    libc.src.wchar.wcsnlen
+    libc.src.wchar.wctob
+    libc.src.wchar.wmemmove
+    libc.src.wchar.wmemset
+    libc.src.wchar.wcschr
+    libc.src.wchar.wcsncmp
+    libc.src.wchar.wcscmp
+    libc.src.wchar.wcspbrk
+    libc.src.wchar.wcsrchr
+    libc.src.wchar.wcsspn
+    libc.src.wchar.wcscspn
+    libc.src.wchar.wcsdup
+    libc.src.wchar.wmemcmp
+    libc.src.wchar.wmempcpy
+    libc.src.wchar.wmemcpy
+    libc.src.wchar.wcsncpy
+    libc.src.wchar.wcscat
+    libc.src.wchar.wcsstr
+    libc.src.wchar.wcsncat
+    libc.src.wchar.wcslcat
+    libc.src.wchar.wcscpy
+    libc.src.wchar.wcslcpy
+    libc.src.wchar.wmemchr
+    libc.src.wchar.wcpcpy
+    libc.src.wchar.wcpncpy
+    libc.src.wchar.wcstod
+    libc.src.wchar.wcstof
+    libc.src.wchar.wcstok
+    libc.src.wchar.wcstol
+    libc.src.wchar.wcstold
+    libc.src.wchar.wcstoll
+    libc.src.wchar.wcstoul
+    libc.src.wchar.wcstoull
+
+    # wctype.h entrypoints
+    libc.src.wctype.iswalpha
+
+    # sys/uio.h entrypoints
+    libc.src.sys.uio.writev
+    libc.src.sys.uio.readv
+
+    # sys/time.h entrypoints
+    libc.src.sys.time.setitimer
+    libc.src.sys.time.getitimer
+)
+
+if(LLVM_LIBC_INCLUDE_SCUDO)
+  list(APPEND TARGET_LIBC_ENTRYPOINTS
+    # malloc.h external entrypoints
+    libc.src.stdlib.mallopt
+  )
+endif()
+
+set(TARGET_LIBM_ENTRYPOINTS
+    # complex.h entrypoints
+    libc.src.complex.creal
+    libc.src.complex.crealf
+    libc.src.complex.creall
+    libc.src.complex.cimag
+    libc.src.complex.cimagf
+    libc.src.complex.cimagl
+    libc.src.complex.conj
+    libc.src.complex.conjf
+    libc.src.complex.conjl
+    libc.src.complex.cproj
+    libc.src.complex.cprojf
+    libc.src.complex.cprojl
+
+    # fenv.h entrypoints
+    libc.src.fenv.feclearexcept
+    libc.src.fenv.fedisableexcept
+    libc.src.fenv.feenableexcept
+    libc.src.fenv.fegetenv
+    libc.src.fenv.fegetexcept
+    libc.src.fenv.fegetexceptflag
+    libc.src.fenv.fegetround
+    libc.src.fenv.feholdexcept
+    libc.src.fenv.feraiseexcept
+    libc.src.fenv.fesetenv
+    libc.src.fenv.fesetexcept
+    libc.src.fenv.fesetexceptflag
+    libc.src.fenv.fesetround
+    libc.src.fenv.fetestexcept
+    libc.src.fenv.fetestexceptflag
+    libc.src.fenv.feupdateenv
+
+    # math.h entrypoints
+    libc.src.math.acos
+    libc.src.math.acosf
+    libc.src.math.acoshf
+    libc.src.math.asin
+    libc.src.math.asinf
+    libc.src.math.asinhf
+    libc.src.math.atan2
+    libc.src.math.atan2f
+    libc.src.math.atan
+    libc.src.math.atanf
+    libc.src.math.atanhf
+    libc.src.math.canonicalize
+    libc.src.math.canonicalizef
+    libc.src.math.canonicalizel
+    libc.src.math.cbrt
+    libc.src.math.cbrtf
+    libc.src.math.ceil
+    libc.src.math.ceilf
+    libc.src.math.ceill
+    libc.src.math.copysign
+    libc.src.math.copysignf
+    libc.src.math.copysignl
+    libc.src.math.cos
+    libc.src.math.cosf
+    libc.src.math.coshf
+    libc.src.math.cospif
+    libc.src.math.dfmal
+    libc.src.math.dmull
+    libc.src.math.dsqrtl
+    libc.src.math.daddl
+    libc.src.math.ddivl
+    libc.src.math.dsubl
+    libc.src.math.erff
+    libc.src.math.exp
+    libc.src.math.exp10
+    libc.src.math.exp10f
+    libc.src.math.exp10m1f
+    libc.src.math.exp2
+    libc.src.math.exp2f
+    libc.src.math.exp2m1f
+    libc.src.math.expf
+    libc.src.math.expm1
+    libc.src.math.expm1f
+    libc.src.math.fabs
+    libc.src.math.fabsf
+    libc.src.math.fabsl
+    libc.src.math.fadd
+    libc.src.math.faddl
+    libc.src.math.fadd
+    libc.src.math.fdim
+    libc.src.math.fdimf
+    libc.src.math.fdiml
+    libc.src.math.fdiv
+    libc.src.math.fdivl
+    libc.src.math.ffma
+    libc.src.math.ffmal
+    libc.src.math.floor
+    libc.src.math.floorf
+    libc.src.math.floorl
+    libc.src.math.fma
+    libc.src.math.fmabf16
+    libc.src.math.fmaf
+    libc.src.math.fmax
+    libc.src.math.fmaxf
+    libc.src.math.fmaximum
+    libc.src.math.fmaximum_mag
+    libc.src.math.fmaximum_mag_num
+    libc.src.math.fmaximum_mag_numf
+    libc.src.math.fmaximum_mag_numl
+    libc.src.math.fmaximum_magf
+    libc.src.math.fmaximum_magl
+    libc.src.math.fmaximum_num
+    libc.src.math.fmaximum_numf
+    libc.src.math.fmaximum_numl
+    libc.src.math.fmaximumf
+    libc.src.math.fmaximuml
+    libc.src.math.fmaxl
+    libc.src.math.fmin
+    libc.src.math.fminf
+    libc.src.math.fminimum
+    libc.src.math.fminimum_mag
+    libc.src.math.fminimum_mag_num
+    libc.src.math.fminimum_mag_numf
+    libc.src.math.fminimum_mag_numl
+    libc.src.math.fminimum_magf
+    libc.src.math.fminimum_magl
+    libc.src.math.fminimum_num
+    libc.src.math.fminimum_numf
+    libc.src.math.fminimum_numl
+    libc.src.math.fminimumf
+    libc.src.math.fminimuml
+    libc.src.math.fminl
+    libc.src.math.fmod
+    libc.src.math.fmodf
+    libc.src.math.fmodl
+    libc.src.math.fmul
+    libc.src.math.fmull
+    libc.src.math.frexp
+    libc.src.math.frexpf
+    libc.src.math.frexpl
+    libc.src.math.fromfp
+    libc.src.math.fromfpf
+    libc.src.math.fromfpl
+    libc.src.math.fromfpx
+    libc.src.math.fromfpxf
+    libc.src.math.fromfpxl
+    libc.src.math.fsqrt
+    libc.src.math.fsqrtl
+    libc.src.math.fsub
+    libc.src.math.fsubl
+    libc.src.math.getpayload
+    libc.src.math.getpayloadf
+    libc.src.math.getpayloadl
+    libc.src.math.hypot
+    libc.src.math.hypotf
+    libc.src.math.ilogb
+    libc.src.math.ilogbf
+    libc.src.math.ilogbl
+    libc.src.math.iscanonical
+    libc.src.math.iscanonicalf
+    libc.src.math.iscanonicall
+    libc.src.math.isnan
+    libc.src.math.isnanf
+    libc.src.math.isnanl
+    libc.src.math.issignaling
+    libc.src.math.issignalingf
+    libc.src.math.issignalingl
+    libc.src.math.ldexp
+    libc.src.math.ldexpf
+    libc.src.math.ldexpl
+    libc.src.math.llogb
+    libc.src.math.llogbf
+    libc.src.math.llogbl
+    libc.src.math.llrint
+    libc.src.math.llrintf
+    libc.src.math.llrintl
+    libc.src.math.llround
+    libc.src.math.llroundf
+    libc.src.math.llroundl
+    libc.src.math.log
+    libc.src.math.log10
+    libc.src.math.log10f
+    libc.src.math.log1p
+    libc.src.math.log1pf
+    libc.src.math.log2
+    libc.src.math.log2f
+    libc.src.math.logb
+    libc.src.math.logbf
+    libc.src.math.logbl
+    libc.src.math.logf
+    libc.src.math.lrint
+    libc.src.math.lrintf
+    libc.src.math.lrintl
+    libc.src.math.lround
+    libc.src.math.lroundf
+    libc.src.math.lroundl
+    libc.src.math.modf
+    libc.src.math.modff
+    libc.src.math.modfl
+    libc.src.math.nan
+    libc.src.math.nanf
+    libc.src.math.nanl
+    libc.src.math.nearbyint
+    libc.src.math.nearbyintf
+    libc.src.math.nearbyintl
+    libc.src.math.nextafter
+    libc.src.math.nextafterf
+    libc.src.math.nextafterl
+    libc.src.math.nextdown
+    libc.src.math.nextdownf
+    libc.src.math.nextdownl
+    libc.src.math.nexttoward
+    libc.src.math.nexttowardf
+    libc.src.math.nexttowardl
+    libc.src.math.nextup
+    libc.src.math.nextupf
+    libc.src.math.nextupl
+    libc.src.math.pow
+    libc.src.math.powf
+    libc.src.math.remainder
+    libc.src.math.remainderf
+    libc.src.math.remainderl
+    libc.src.math.remquo
+    libc.src.math.remquof
+    libc.src.math.remquol
+    libc.src.math.rint
+    libc.src.math.rintf
+    libc.src.math.rintl
+    libc.src.math.round
+    libc.src.math.roundeven
+    libc.src.math.roundevenf
+    libc.src.math.roundevenl
+    libc.src.math.roundf
+    libc.src.math.roundl
+    libc.src.math.scalbln
+    libc.src.math.scalblnf
+    libc.src.math.scalblnl
+    libc.src.math.scalbn
+    libc.src.math.scalbnf
+    libc.src.math.scalbnl
+    libc.src.math.setpayload
+    libc.src.math.setpayloadf
+    libc.src.math.setpayloadl
+    libc.src.math.setpayloadsig
+    libc.src.math.setpayloadsigf
+    libc.src.math.setpayloadsigl
+    libc.src.math.sin
+    libc.src.math.sincos
+    libc.src.math.sincosf
+    libc.src.math.sinf
+    libc.src.math.sinhf
+    libc.src.math.sinpif
+    libc.src.math.sqrt
+    libc.src.math.sqrtf
+    libc.src.math.sqrtl
+    libc.src.math.tan
+    libc.src.math.tanf
+    libc.src.math.tanhf
+    libc.src.math.tanpif
+    libc.src.math.totalorder
+    libc.src.math.totalorderf
+    libc.src.math.totalorderl
+    libc.src.math.totalordermag
+    libc.src.math.totalordermagf
+    libc.src.math.totalordermagl
+    libc.src.math.trunc
+    libc.src.math.truncf
+    libc.src.math.truncl
+    libc.src.math.ufromfp
+    libc.src.math.ufromfpf
+    libc.src.math.ufromfpl
+    libc.src.math.ufromfpx
+    libc.src.math.ufromfpxf
+    libc.src.math.ufromfpxl
+)
+
+if(LIBC_TYPES_HAS_CFLOAT16)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # complex.h C23 _Complex _Float16 entrypoints
+    libc.src.complex.crealf16
+    libc.src.complex.cimagf16
+    libc.src.complex.conjf16
+    libc.src.complex.cprojf16
+  )
+endif()
+
+if(LIBC_TYPES_HAS_FLOAT16)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # math.h C23 _Float16 entrypoints
+    libc.src.math.acosf16
+    libc.src.math.acoshf16
+    libc.src.math.acospif16
+    libc.src.math.asinf16
+    libc.src.math.asinhf16
+    libc.src.math.asinpif16
+    libc.src.math.atanf16
+    libc.src.math.atanhf16
+    libc.src.math.atanpif16
+    libc.src.math.canonicalizef16
+    libc.src.math.ceilf16
+    libc.src.math.copysignf16
+    libc.src.math.cosf16
+    libc.src.math.coshf16
+    libc.src.math.cospif16
+    libc.src.math.exp10f16
+    libc.src.math.exp10m1f16
+    libc.src.math.exp2f16
+    libc.src.math.exp2m1f16
+    libc.src.math.expf16
+    libc.src.math.expm1f16
+    libc.src.math.f16add
+    libc.src.math.f16addf
+    libc.src.math.f16addl
+    libc.src.math.f16div
+    libc.src.math.f16divf
+    libc.src.math.f16divl
+    libc.src.math.f16fma
+    libc.src.math.f16fmaf
+    libc.src.math.f16fmal
+    libc.src.math.f16mul
+    libc.src.math.f16mulf
+    libc.src.math.f16mull
+    libc.src.math.f16sqrt
+    libc.src.math.f16sqrtf
+    libc.src.math.f16sqrtl
+    libc.src.math.f16sub
+    libc.src.math.f16subf
+    libc.src.math.f16subl
+    libc.src.math.fabsf16
+    libc.src.math.fdimf16
+    libc.src.math.floorf16
+    libc.src.math.fmaf16
+    libc.src.math.fmaxf16
+    libc.src.math.fmaximum_mag_numf16
+    libc.src.math.fmaximum_magf16
+    libc.src.math.fmaximum_numf16
+    libc.src.math.fmaximumf16
+    libc.src.math.fminf16
+    libc.src.math.fminimum_mag_numf16
+    libc.src.math.fminimum_magf16
+    libc.src.math.fminimum_numf16
+    libc.src.math.fminimumf16
+    libc.src.math.fmodf16
+    libc.src.math.frexpf16
+    libc.src.math.fromfpf16
+    libc.src.math.fromfpxf16
+    libc.src.math.getpayloadf16
+    libc.src.math.hypotf16
+    libc.src.math.ilogbf16
+    libc.src.math.iscanonicalf16
+    libc.src.math.issignalingf16
+    libc.src.math.ldexpf16
+    libc.src.math.llogbf16
+    libc.src.math.llrintf16
+    libc.src.math.llroundf16
+    libc.src.math.log10f16
+    libc.src.math.log2f16
+    libc.src.math.logbf16
+    libc.src.math.logf16
+    libc.src.math.lrintf16
+    libc.src.math.lroundf16
+    libc.src.math.modff16
+    libc.src.math.nanf16
+    libc.src.math.nearbyintf16
+    libc.src.math.nextafterf16
+    libc.src.math.nextdownf16
+    libc.src.math.nexttowardf16
+    libc.src.math.nextupf16
+    libc.src.math.remainderf16
+    libc.src.math.remquof16
+    libc.src.math.rintf16
+    libc.src.math.roundevenf16
+    libc.src.math.roundf16
+    libc.src.math.rsqrtf
+    libc.src.math.rsqrtf16
+    libc.src.math.scalblnf16
+    libc.src.math.scalbnf16
+    libc.src.math.setpayloadf16
+    libc.src.math.setpayloadsigf16
+    libc.src.math.sinf16
+    libc.src.math.sinhf16
+    libc.src.math.sinpif16
+    libc.src.math.sqrtf16
+    libc.src.math.tanf16
+    libc.src.math.tanhf16
+    libc.src.math.tanpif16
+    libc.src.math.totalorderf16
+    libc.src.math.totalordermagf16
+    libc.src.math.truncf16
+    libc.src.math.ufromfpf16
+    libc.src.math.ufromfpxf16
+  )
+
+  if(LIBC_TYPES_HAS_FLOAT128)
+    list(APPEND TARGET_LIBM_ENTRYPOINTS
+      # math.h C23 mixed _Float16 and _Float128 entrypoints
+      libc.src.math.f16addf128
+      libc.src.math.f16divf128
+      libc.src.math.f16fmaf128
+      libc.src.math.f16mulf128
+      libc.src.math.f16sqrtf128
+      libc.src.math.f16subf128
+    )
+  endif()
+endif()
+
+if(LIBC_TYPES_HAS_CFLOAT128)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # complex.h C23 _Complex _Float128 entrypoints
+    libc.src.complex.crealf128
+    libc.src.complex.cimagf128
+    libc.src.complex.conjf128
+    libc.src.complex.cprojf128
+  )
+endif()
+
+if(LIBC_TYPES_HAS_FLOAT128)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # math.h C23 _Float128 entrypoints
+    libc.src.math.atan2f128
+    libc.src.math.canonicalizef128
+    libc.src.math.ceilf128
+    libc.src.math.copysignf128
+    libc.src.math.daddf128
+    libc.src.math.ddivf128
+    libc.src.math.dfmaf128
+    libc.src.math.dmulf128
+    libc.src.math.dsqrtf128
+    libc.src.math.dsubf128
+    libc.src.math.fabsf128
+    libc.src.math.faddf128
+    libc.src.math.fdimf128
+    libc.src.math.fdivf128
+    libc.src.math.ffmaf128
+    libc.src.math.floorf128
+    libc.src.math.fmaxf128
+    libc.src.math.fmaximum_mag_numf128
+    libc.src.math.fmaximum_magf128
+    libc.src.math.fmaximum_numf128
+    libc.src.math.fmaximumf128
+    libc.src.math.fminf128
+    libc.src.math.fminimum_mag_numf128
+    libc.src.math.fminimum_magf128
+    libc.src.math.fminimum_numf128
+    libc.src.math.fminimumf128
+    libc.src.math.fmodf128
+    libc.src.math.fmulf128
+    libc.src.math.frexpf128
+    libc.src.math.fromfpf128
+    libc.src.math.fromfpxf128
+    libc.src.math.fsqrtf128
+    libc.src.math.fsubf128
+    libc.src.math.getpayloadf128
+    libc.src.math.ilogbf128
+    libc.src.math.iscanonicalf128
+    libc.src.math.issignalingf128
+    libc.src.math.ldexpf128
+    libc.src.math.llogbf128
+    libc.src.math.llrintf128
+    libc.src.math.llroundf128
+    libc.src.math.logbf128
+    libc.src.math.lrintf128
+    libc.src.math.lroundf128
+    libc.src.math.modff128
+    libc.src.math.nanf128
+    libc.src.math.nearbyintf128
+    libc.src.math.nextafterf128
+    libc.src.math.nextdownf128
+    libc.src.math.nextupf128
+    libc.src.math.remainderf128
+    libc.src.math.remquof128
+    libc.src.math.rintf128
+    libc.src.math.roundevenf128
+    libc.src.math.roundf128
+    libc.src.math.scalblnf128
+    libc.src.math.scalbnf128
+    libc.src.math.setpayloadf128
+    libc.src.math.setpayloadsigf128
+    libc.src.math.sqrtf128
+    libc.src.math.totalorderf128
+    libc.src.math.totalordermagf128
+    libc.src.math.truncf128
+    libc.src.math.ufromfpf128
+    libc.src.math.ufromfpxf128
+  )
+endif()
+
+list(APPEND TARGET_LIBM_ENTRYPOINTS
+  # bfloat16 entrypoints
+  libc.src.math.bf16add
+  libc.src.math.bf16addf
+  libc.src.math.bf16addl
+  libc.src.math.bf16div
+  libc.src.math.bf16divf
+  libc.src.math.bf16divl
+  libc.src.math.bf16fma
+  libc.src.math.bf16fmaf
+  libc.src.math.bf16fmal
+  libc.src.math.bf16mul
+  libc.src.math.bf16mulf
+  libc.src.math.bf16mull
+  libc.src.math.bf16sub
+  libc.src.math.bf16subf
+  libc.src.math.bf16subl
+  libc.src.math.canonicalizebf16
+  libc.src.math.ceilbf16
+  libc.src.math.copysignbf16
+  libc.src.math.fabsbf16
+  libc.src.math.fdimbf16
+  libc.src.math.floorbf16
+  libc.src.math.fmaxbf16
+  libc.src.math.fmaximumbf16
+  libc.src.math.fmaximum_magbf16
+  libc.src.math.fmaximum_mag_numbf16
+  libc.src.math.fmaximum_numbf16
+  libc.src.math.fminbf16
+  libc.src.math.fminimumbf16
+  libc.src.math.fminimum_magbf16
+  libc.src.math.fminimum_mag_numbf16
+  libc.src.math.fminimum_numbf16
+  libc.src.math.fmodbf16
+  libc.src.math.frexpbf16
+  libc.src.math.fromfpbf16
+  libc.src.math.fromfpxbf16
+  libc.src.math.getpayloadbf16
+  libc.src.math.ilogbbf16
+  libc.src.math.iscanonicalbf16
+  libc.src.math.issignalingbf16
+  libc.src.math.ldexpbf16
+  libc.src.math.llogbbf16
+  libc.src.math.llrintbf16
+  libc.src.math.llroundbf16
+  libc.src.math.log_bf16
+  libc.src.math.logbbf16
+  libc.src.math.lrintbf16
+  libc.src.math.lroundbf16
+  libc.src.math.modfbf16
+  libc.src.math.nanbf16
+  libc.src.math.nearbyintbf16
+  libc.src.math.nextafterbf16
+  libc.src.math.nextdownbf16
+  libc.src.math.nexttowardbf16
+  libc.src.math.nextupbf16
+  libc.src.math.remainderbf16
+  libc.src.math.remquobf16
+  libc.src.math.rintbf16
+  libc.src.math.roundbf16
+  libc.src.math.roundevenbf16
+  libc.src.math.scalblnbf16
+  libc.src.math.scalbnbf16
+  libc.src.math.setpayloadbf16
+  libc.src.math.setpayloadsigbf16
+  libc.src.math.sqrtbf16
+  libc.src.math.truncbf16
+  libc.src.math.totalorderbf16
+  libc.src.math.totalordermagbf16
+  libc.src.math.ufromfpbf16
+  libc.src.math.ufromfpxbf16
+)
+
+if(LIBC_TYPES_HAS_FLOAT128)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # math.h C++23 mixed bfloat16 and _Float128 entrypoints
+    libc.src.math.bf16addf128
+    libc.src.math.bf16divf128
+    libc.src.math.bf16fmaf128
+    libc.src.math.bf16mulf128
+    libc.src.math.bf16subf128
+  )
+endif()
+
+if(LIBC_COMPILER_HAS_FIXED_POINT)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # stdfix.h _Fract and _Accum entrypoints
+    libc.src.stdfix.abshk
+    libc.src.stdfix.abshr
+    libc.src.stdfix.absk
+    libc.src.stdfix.abslk
+    libc.src.stdfix.abslr
+    libc.src.stdfix.absr
+    libc.src.stdfix.exphk
+    libc.src.stdfix.expk
+    libc.src.stdfix.roundhk
+    libc.src.stdfix.roundhr
+    libc.src.stdfix.roundk
+    libc.src.stdfix.roundlk
+    libc.src.stdfix.roundlr
+    libc.src.stdfix.roundr
+    libc.src.stdfix.rounduhk
+    libc.src.stdfix.rounduhr
+    libc.src.stdfix.rounduk
+    libc.src.stdfix.roundulk
+    libc.src.stdfix.roundulr
+    libc.src.stdfix.roundur
+    libc.src.stdfix.sqrtuhk
+    libc.src.stdfix.sqrtuhr
+    libc.src.stdfix.sqrtuk
+    libc.src.stdfix.sqrtur
+    # libc.src.stdfix.sqrtulk
+    libc.src.stdfix.sqrtulr
+    libc.src.stdfix.uhksqrtus
+    libc.src.stdfix.uksqrtui
+    libc.src.stdfix.hrbits
+    libc.src.stdfix.uhrbits
+    libc.src.stdfix.rbits
+    libc.src.stdfix.urbits
+    libc.src.stdfix.lrbits
+    libc.src.stdfix.ulrbits
+    libc.src.stdfix.hkbits
+    libc.src.stdfix.uhkbits
+    libc.src.stdfix.kbits
+    libc.src.stdfix.ukbits
+    libc.src.stdfix.lkbits
+    libc.src.stdfix.ulkbits
+    libc.src.stdfix.bitshr
+    libc.src.stdfix.bitsr
+    libc.src.stdfix.bitslr
+    libc.src.stdfix.bitshk
+    libc.src.stdfix.bitsk
+    libc.src.stdfix.bitslk
+    libc.src.stdfix.bitsuhr
+    libc.src.stdfix.bitsur
+    libc.src.stdfix.bitsulr
+    libc.src.stdfix.bitsuhk
+    libc.src.stdfix.bitsuk
+    libc.src.stdfix.bitsulk
+    libc.src.stdfix.countlshr
+    libc.src.stdfix.countlsr
+    libc.src.stdfix.countlslr
+    libc.src.stdfix.countlshk
+    libc.src.stdfix.countlsk
+    libc.src.stdfix.countlslk
+    libc.src.stdfix.countlsuhr
+    libc.src.stdfix.countlsur
+    libc.src.stdfix.countlsulr
+    libc.src.stdfix.countlsuhk
+    libc.src.stdfix.countlsuk
+    libc.src.stdfix.countlsulk
+    libc.src.stdfix.idivr
+    libc.src.stdfix.idivlr
+    libc.src.stdfix.idivk
+    libc.src.stdfix.idivlk
+    libc.src.stdfix.idivur
+    libc.src.stdfix.idivulr
+    libc.src.stdfix.idivuk
+    libc.src.stdfix.idivulk
+    libc.src.stdfix.rdivi
+  )
+endif()
+
+if(LLVM_LIBC_FULL_BUILD)
+  list(APPEND TARGET_LIBC_ENTRYPOINTS
+    # ctype.h entrypoints
+    libc.src.ctype.isalnum_l
+    libc.src.ctype.isalpha_l
+    libc.src.ctype.isblank_l
+    libc.src.ctype.iscntrl_l
+    libc.src.ctype.isdigit_l
+    libc.src.ctype.isgraph_l
+    libc.src.ctype.islower_l
+    libc.src.ctype.isprint_l
+    libc.src.ctype.ispunct_l
+    libc.src.ctype.isspace_l
+    libc.src.ctype.isupper_l
+    libc.src.ctype.isxdigit_l
+    libc.src.ctype.tolower_l
+    libc.src.ctype.toupper_l
+
+    # stdlib.h entrypoints
+    libc.src.stdlib.strtod_l
+    libc.src.stdlib.strtof_l
+    libc.src.stdlib.strtol_l
+    libc.src.stdlib.strtold_l
+    libc.src.stdlib.strtoll_l
+    libc.src.stdlib.strtoul_l
+    libc.src.stdlib.strtoull_l
+
+    # string.h entrypoints
+    libc.src.string.strcoll_l
+    libc.src.string.strxfrm_l
+
+    # strings.h entrypoints
+    libc.src.strings.strcasecmp_l
+    libc.src.strings.strncasecmp_l
+
+    # assert.h entrypoints
+    libc.src.assert.__assert_fail
+
+    # compiler entrypoints (no corresponding header)
+    libc.src.compiler.__stack_chk_fail
+
+    # dirent.h entrypoints
+    libc.src.dirent.closedir
+    libc.src.dirent.dirfd
+    libc.src.dirent.opendir
+    libc.src.dirent.readdir
+
+    # arpa/inet.h entrypoints
+    libc.src.arpa.inet.htonl
+    libc.src.arpa.inet.htons
+    libc.src.arpa.inet.inet_addr
+    libc.src.arpa.inet.inet_aton
+    libc.src.arpa.inet.ntohl
+    libc.src.arpa.inet.ntohs
+
+    # pthread.h entrypoints
+    libc.src.pthread.pthread_atfork
+    libc.src.pthread.pthread_attr_destroy
+    libc.src.pthread.pthread_attr_getdetachstate
+    libc.src.pthread.pthread_attr_getguardsize
+    libc.src.pthread.pthread_attr_getstack
+    libc.src.pthread.pthread_attr_getstacksize
+    libc.src.pthread.pthread_attr_init
+    libc.src.pthread.pthread_attr_setdetachstate
+    libc.src.pthread.pthread_attr_setguardsize
+    libc.src.pthread.pthread_attr_setstack
+    libc.src.pthread.pthread_attr_setstacksize
+    libc.src.pthread.pthread_condattr_destroy
+    libc.src.pthread.pthread_condattr_getclock
+    libc.src.pthread.pthread_condattr_getpshared
+    libc.src.pthread.pthread_condattr_init
+    libc.src.pthread.pthread_condattr_setclock
+    libc.src.pthread.pthread_condattr_setpshared
+    libc.src.pthread.pthread_create
+    libc.src.pthread.pthread_detach
+    libc.src.pthread.pthread_equal
+    libc.src.pthread.pthread_exit
+    libc.src.pthread.pthread_getname_np
+    libc.src.pthread.pthread_getspecific
+    libc.src.pthread.pthread_join
+    libc.src.pthread.pthread_key_create
+    libc.src.pthread.pthread_key_delete
+    libc.src.pthread.pthread_barrier_init
+    libc.src.pthread.pthread_barrier_wait
+    libc.src.pthread.pthread_barrier_destroy
+    libc.src.pthread.pthread_mutex_destroy
+    libc.src.pthread.pthread_mutex_init
+    libc.src.pthread.pthread_mutex_lock
+    libc.src.pthread.pthread_mutex_unlock
+    libc.src.pthread.pthread_mutexattr_destroy
+    libc.src.pthread.pthread_mutexattr_getpshared
+    libc.src.pthread.pthread_mutexattr_getrobust
+    libc.src.pthread.pthread_mutexattr_gettype
+    libc.src.pthread.pthread_mutexattr_init
+    libc.src.pthread.pthread_mutexattr_setpshared
+    libc.src.pthread.pthread_mutexattr_setrobust
+    libc.src.pthread.pthread_mutexattr_settype
+    libc.src.pthread.pthread_once
+    libc.src.pthread.pthread_rwlock_clockrdlock
+    libc.src.pthread.pthread_rwlock_clockwrlock
+    libc.src.pthread.pthread_rwlock_destroy
+    libc.src.pthread.pthread_rwlock_init
+    libc.src.pthread.pthread_rwlock_rdlock
+    libc.src.pthread.pthread_rwlock_timedrdlock
+    libc.src.pthread.pthread_rwlock_timedwrlock
+    libc.src.pthread.pthread_rwlock_tryrdlock
+    libc.src.pthread.pthread_rwlock_trywrlock
+    libc.src.pthread.pthread_rwlock_unlock
+    libc.src.pthread.pthread_rwlock_wrlock
+    libc.src.pthread.pthread_rwlockattr_destroy
+    libc.src.pthread.pthread_rwlockattr_getkind_np
+    libc.src.pthread.pthread_rwlockattr_getpshared
+    libc.src.pthread.pthread_rwlockattr_init
+    libc.src.pthread.pthread_rwlockattr_setkind_np
+    libc.src.pthread.pthread_rwlockattr_setpshared
+    libc.src.pthread.pthread_spin_destroy
+    libc.src.pthread.pthread_spin_init
+    libc.src.pthread.pthread_spin_lock
+    libc.src.pthread.pthread_spin_trylock
+    libc.src.pthread.pthread_spin_unlock
+    libc.src.pthread.pthread_self
+    libc.src.pthread.pthread_setname_np
+    libc.src.pthread.pthread_setspecific
+
+    # sched.h entrypoints
+    libc.src.sched.__sched_getcpucount
+    libc.src.sched.__sched_setcpuzero
+    libc.src.sched.__sched_setcpuset
+    libc.src.sched.__sched_getcpuisset
+
+    # setjmp.h entrypoints
+    libc.src.setjmp.longjmp
+    libc.src.setjmp.setjmp
+    libc.src.setjmp.siglongjmp
+    libc.src.setjmp.sigsetjmp
+
+    # stdio.h entrypoints
+    libc.src.stdio.clearerr
+    libc.src.stdio.clearerr_unlocked
+    libc.src.stdio.fclose
+    libc.src.stdio.fdopen
+    libc.src.stdio.feof
+    libc.src.stdio.feof_unlocked
+    libc.src.stdio.ferror
+    libc.src.stdio.ferror_unlocked
+    libc.src.stdio.fflush
+    libc.src.stdio.fgetc
+    libc.src.stdio.fgetc_unlocked
+    libc.src.stdio.fgets
+    libc.src.stdio.fileno
+    libc.src.stdio.flockfile
+    libc.src.stdio.fopen
+    libc.src.stdio.fopencookie
+    libc.src.stdio.fputc
+    libc.src.stdio.fputs
+    libc.src.stdio.fread
+    libc.src.stdio.fread_unlocked
+    libc.src.stdio.fseek
+    libc.src.stdio.fseeko
+    libc.src.stdio.ftell
+    libc.src.stdio.ftello
+    libc.src.stdio.funlockfile
+    libc.src.stdio.fwrite
+    libc.src.stdio.fwrite_unlocked
+    libc.src.stdio.getc
+    libc.src.stdio.getc_unlocked
+    libc.src.stdio.getchar
+    libc.src.stdio.getchar_unlocked
+    libc.src.stdio.perror
+    libc.src.stdio.putc
+    libc.src.stdio.putchar
+    libc.src.stdio.puts
+    libc.src.stdio.setbuf
+    libc.src.stdio.setvbuf
+    libc.src.stdio.stderr
+    libc.src.stdio.stdin
+    libc.src.stdio.stdout
+    libc.src.stdio.ungetc
+
+    # stdlib.h entrypoints
+    libc.src.stdlib._Exit
+    libc.src.stdlib.abort
+    libc.src.stdlib.at_quick_exit
+    libc.src.stdlib.atexit
+    libc.src.stdlib.exit
+    libc.src.stdlib.getenv
+    libc.src.stdlib.mbstowcs
+    libc.src.stdlib.mbtowc
+    libc.src.stdlib.quick_exit
+    libc.src.stdlib.wcstombs
+    libc.src.stdlib.wctomb
+
+    # signal.h entrypoints
+    libc.src.signal.kill
+    libc.src.signal.raise
+    libc.src.signal.sigaction
+    libc.src.signal.sigaddset
+    libc.src.signal.sigaltstack
+    libc.src.signal.sigdelset
+    libc.src.signal.sigemptyset
+    libc.src.signal.sigfillset
+    libc.src.signal.signal
+    libc.src.signal.sigprocmask
+
+    # spawn.h entrypoints
+    libc.src.spawn.posix_spawn
+    libc.src.spawn.posix_spawn_file_actions_addclose
+    libc.src.spawn.posix_spawn_file_actions_adddup2
+    libc.src.spawn.posix_spawn_file_actions_addopen
+    libc.src.spawn.posix_spawn_file_actions_destroy
+    libc.src.spawn.posix_spawn_file_actions_init
+
+    # search.h entrypoints
+    libc.src.search.hcreate
+    libc.src.search.hcreate_r
+    libc.src.search.hdestroy
+    libc.src.search.hdestroy_r
+    libc.src.search.hsearch
+    libc.src.search.hsearch_r
+    libc.src.search.insque
+    libc.src.search.lfind
+    libc.src.search.lsearch
+    libc.src.search.remque
+
+    # threads.h entrypoints
+    libc.src.threads.call_once
+    libc.src.threads.cnd_broadcast
+    libc.src.threads.cnd_destroy
+    libc.src.threads.cnd_init
+    libc.src.threads.cnd_signal
+    libc.src.threads.cnd_wait
+    libc.src.threads.mtx_destroy
+    libc.src.threads.mtx_init
+    libc.src.threads.mtx_lock
+    libc.src.threads.mtx_unlock
+    libc.src.threads.thrd_create
+    libc.src.threads.thrd_current
+    libc.src.threads.thrd_detach
+    libc.src.threads.thrd_equal
+    libc.src.threads.thrd_exit
+    libc.src.threads.thrd_join
+    libc.src.threads.tss_create
+    libc.src.threads.tss_delete
+    libc.src.threads.tss_get
+    libc.src.threads.tss_set
+
+    # time.h entrypoints
+    libc.src.time.asctime
+    libc.src.time.asctime_r
+    libc.src.time.ctime
+    libc.src.time.ctime_r
+    libc.src.time.clock
+    libc.src.time.clock_gettime
+    libc.src.time.clock_settime
+    libc.src.time.difftime
+    libc.src.time.gettimeofday
+    libc.src.time.gmtime
+    libc.src.time.gmtime_r
+    libc.src.time.localtime
+    libc.src.time.localtime_r
+    libc.src.time.mktime
+    libc.src.time.nanosleep
+    libc.src.time.strftime
+    libc.src.time.strftime_l
+    libc.src.time.time
+    libc.src.time.timespec_get
+
+    # locale.h entrypoints
+    libc.src.locale.localeconv
+    libc.src.locale.duplocale
+    libc.src.locale.freelocale
+    libc.src.locale.localeconv
+    libc.src.locale.newlocale
+    libc.src.locale.setlocale
+    libc.src.locale.uselocale
+
+    # unistd.h entrypoints
+    libc.src.unistd.__llvm_libc_syscall
+    libc.src.unistd._exit
+    libc.src.unistd.environ
+    libc.src.unistd.execv
+    libc.src.unistd.fork
+    libc.src.unistd.getopt
+    libc.src.unistd.optarg
+    libc.src.unistd.opterr
+    libc.src.unistd.optind
+    libc.src.unistd.optopt
+    libc.src.unistd.swab
+
+    # sys/select.h entrypoints
+    libc.src.sys.select.select
+
+    # sys/socket.h entrypoints
+    libc.src.sys.socket.socket
+    libc.src.sys.socket.bind
+    libc.src.sys.socket.socketpair
+    libc.src.sys.socket.send
+    libc.src.sys.socket.sendto
+    libc.src.sys.socket.sendmsg
+    libc.src.sys.socket.recv
+    libc.src.sys.socket.recvfrom
+    libc.src.sys.socket.recvmsg
+
+    # wchar.h entrypoints
+    libc.src.wchar.mblen
+    libc.src.wchar.mbrlen
+    libc.src.wchar.mbsinit
+    libc.src.wchar.mbrtowc
+    libc.src.wchar.mbsrtowcs
+    libc.src.wchar.mbsnrtowcs
+    libc.src.wchar.wcrtomb
+    libc.src.wchar.wcsrtombs
+    libc.src.wchar.wcsnrtombs
+
+    # nl_types.h entrypoints
+    libc.src.nl_types.catopen 
+    libc.src.nl_types.catclose
+    libc.src.nl_types.catgets
+  )
+endif()
+
+set(TARGET_LLVMLIBC_ENTRYPOINTS
+  ${TARGET_LIBC_ENTRYPOINTS}
+  ${TARGET_LIBM_ENTRYPOINTS}
+)
diff --git a/libc/config/windows/entrypoints.txt b/libc/config/windows/entrypoints.txt
index 3a76595b258e2..847e22889303a 100644
--- a/libc/config/windows/entrypoints.txt
+++ b/libc/config/windows/entrypoints.txt
@@ -1,384 +1,385 @@
-set(TARGET_LIBC_ENTRYPOINTS
-    # ctype.h entrypoints
-    libc.src.ctype.isalnum
-    libc.src.ctype.isalpha
-    libc.src.ctype.isascii
-    libc.src.ctype.isblank
-    libc.src.ctype.iscntrl
-    libc.src.ctype.isdigit
-    libc.src.ctype.isgraph
-    libc.src.ctype.islower
-    libc.src.ctype.isprint
-    libc.src.ctype.ispunct
-    libc.src.ctype.isspace
-    libc.src.ctype.isupper
-    libc.src.ctype.isxdigit
-    libc.src.ctype.toascii
-    libc.src.ctype.tolower
-    libc.src.ctype.toupper
-
-    # string.h entrypoints
-    libc.src.string.memccpy
-    libc.src.string.memchr
-    libc.src.string.memcmp
-    libc.src.string.memcpy
-    libc.src.string.memmem
-    libc.src.string.memmove
-    libc.src.string.mempcpy
-    libc.src.string.memrchr
-    libc.src.string.memset
-    libc.src.string.stpcpy
-    libc.src.string.stpncpy
-    libc.src.string.strcasestr
-    libc.src.string.strcat
-    libc.src.string.strchr
-    libc.src.string.strchrnul
-    libc.src.string.strcmp
-    libc.src.string.strcpy
-    libc.src.string.strcspn
-    libc.src.string.strlcat
-    libc.src.string.strlcpy
-    libc.src.string.strlen
-    libc.src.string.strncat
-    libc.src.string.strncmp
-    libc.src.string.strncpy
-    libc.src.string.strnlen
-    libc.src.string.strpbrk
-    libc.src.string.strrchr
-    libc.src.string.strspn
-    libc.src.string.strstr
-    libc.src.string.strtok
-    libc.src.string.strtok_r
-
-    # string.h entrypoints that depend on malloc
-    libc.src.string.strdup
-    libc.src.string.strndup
-
-    # strings.h entrypoints
-    libc.src.strings.bcmp
-    libc.src.strings.bcopy
-    libc.src.strings.bzero
-    libc.src.strings.strcasecmp
-    libc.src.strings.strncasecmp
-
-    # inttypes.h entrypoints
-    libc.src.inttypes.imaxabs
-    libc.src.inttypes.imaxdiv
-    libc.src.inttypes.strtoimax
-    libc.src.inttypes.strtoumax
-
-    # stdlib.h entrypoints
-    libc.src.stdlib.abs
-    libc.src.stdlib.atoi
-    libc.src.stdlib.atof
-    libc.src.stdlib.atol
-    libc.src.stdlib.atoll
-    libc.src.stdlib.bsearch
-    libc.src.stdlib.div
-    libc.src.stdlib.labs
-    libc.src.stdlib.ldiv
-    libc.src.stdlib.llabs
-    libc.src.stdlib.lldiv
-    libc.src.stdlib.memalignment
-    libc.src.stdlib.qsort
-    libc.src.stdlib.strtod
-    libc.src.stdlib.strtof
-    libc.src.stdlib.strtol
-    libc.src.stdlib.strtold
-    libc.src.stdlib.strtoll
-    libc.src.stdlib.strtoul
-    libc.src.stdlib.strtoull
-
-    # stdlib.h external entrypoints
-    libc.src.stdlib.malloc
-    libc.src.stdlib.calloc
-    libc.src.stdlib.realloc
-    libc.src.stdlib.aligned_alloc
-    libc.src.stdlib.free
-
-    # errno.h entrypoints
-    libc.src.errno.errno
-
-    # time.h entrypoints
-    libc.src.time.time
-    libc.src.time.clock_getres
-
-    # unistd.h entrypoints
-    libc.src.unistd.getentropy
-
-    # wctype.h entrypoints
-    libc.src.wctype.iswalpha
-)
-
-set(TARGET_LIBM_ENTRYPOINTS
-    # fenv.h entrypoints
-    libc.src.fenv.feclearexcept
-    libc.src.fenv.fedisableexcept
-    libc.src.fenv.feenableexcept
-    libc.src.fenv.fegetenv
-    libc.src.fenv.fegetexcept
-    libc.src.fenv.fegetexceptflag
-    libc.src.fenv.fegetround
-    libc.src.fenv.feholdexcept
-    libc.src.fenv.fesetenv
-    libc.src.fenv.fesetexcept
-    libc.src.fenv.fesetexceptflag
-    libc.src.fenv.fesetround
-    libc.src.fenv.feraiseexcept
-    libc.src.fenv.fetestexcept
-    libc.src.fenv.fetestexceptflag
-    libc.src.fenv.feupdateenv
-
-    # math.h entrypoints
-    libc.src.math.acos
-    libc.src.math.acosf
-    libc.src.math.acoshf
-    libc.src.math.asin
-    libc.src.math.asinf
-    libc.src.math.asinhf
-    libc.src.math.atan2
-    libc.src.math.atan2f
-    libc.src.math.atan
-    libc.src.math.atanf
-    libc.src.math.atanhf
-    libc.src.math.cbrt
-    libc.src.math.cbrtf
-    libc.src.math.copysign
-    libc.src.math.copysignf
-    libc.src.math.copysignl
-    libc.src.math.ceil
-    libc.src.math.ceilf
-    libc.src.math.ceill
-    libc.src.math.cos
-    libc.src.math.cosf
-    libc.src.math.coshf
-    libc.src.math.daddl
-    libc.src.math.ddivl
-    libc.src.math.dfmal
-    libc.src.math.dsubl
-    libc.src.math.erff
-    libc.src.math.exp
-    libc.src.math.expf
-    libc.src.math.exp10
-    libc.src.math.exp10f
-    libc.src.math.exp2
-    libc.src.math.exp2f
-    libc.src.math.expm1
-    libc.src.math.expm1f
-    libc.src.math.fabs
-    libc.src.math.fabsf
-    libc.src.math.fabsl
-    libc.src.math.fadd
-    libc.src.math.faddl
-    libc.src.math.fdim
-    libc.src.math.fdimf
-    libc.src.math.fdiml
-    libc.src.math.fdiv
-    libc.src.math.fdivl
-    libc.src.math.ffma
-    libc.src.math.ffmal
-    libc.src.math.floor
-    libc.src.math.floorf
-    libc.src.math.floorl
-    libc.src.math.fma
-    libc.src.math.fmaf
-    libc.src.math.fmin
-    libc.src.math.fminf
-    libc.src.math.fminl
-    libc.src.math.fmax
-    libc.src.math.fmaxf
-    libc.src.math.fmaxl
-    libc.src.math.fmaximum
-    libc.src.math.fmaximumf
-    libc.src.math.fmaximuml
-    libc.src.math.fmaximum_num
-    libc.src.math.fmaximum_numf
-    libc.src.math.fmaximum_numl
-    libc.src.math.fmaximum_mag
-    libc.src.math.fmaximum_magf
-    libc.src.math.fmaximum_magl
-    libc.src.math.fmaximum_mag_num
-    libc.src.math.fmaximum_mag_numf
-    libc.src.math.fmaximum_mag_numl
-    libc.src.math.fminimum
-    libc.src.math.fminimumf
-    libc.src.math.fminimuml
-    libc.src.math.fminimum_num
-    libc.src.math.fminimum_numf
-    libc.src.math.fminimum_numl
-    libc.src.math.fminimum_mag
-    libc.src.math.fminimum_magf
-    libc.src.math.fminimum_magl
-    libc.src.math.fminimum_mag_num
-    libc.src.math.fminimum_mag_numf
-    libc.src.math.fminimum_mag_numl
-    libc.src.math.fmul
-    libc.src.math.fmod
-    libc.src.math.fmodf
-    libc.src.math.fmodl
-    libc.src.math.frexp
-    libc.src.math.frexpf
-    libc.src.math.frexpl
-    libc.src.math.fsub
-    libc.src.math.fsubl
-    libc.src.math.hypot
-    libc.src.math.hypotf
-    libc.src.math.ilogb
-    libc.src.math.ilogbf
-    libc.src.math.ilogbl
-    libc.src.math.ldexp
-    libc.src.math.ldexpf
-    libc.src.math.ldexpl
-    libc.src.math.llrint
-    libc.src.math.llrintf
-    libc.src.math.llrintl
-    libc.src.math.llround
-    libc.src.math.llroundf
-    libc.src.math.llroundl
-    libc.src.math.log10
-    libc.src.math.log10f
-    libc.src.math.log1p
-    libc.src.math.log1pf
-    libc.src.math.log2
-    libc.src.math.log2f
-    libc.src.math.log
-    libc.src.math.logf
-    libc.src.math.logb
-    libc.src.math.logbf
-    libc.src.math.logbl
-    libc.src.math.lrint
-    libc.src.math.lrintf
-    libc.src.math.lrintl
-    libc.src.math.lround
-    libc.src.math.lroundf
-    libc.src.math.lroundl
-    libc.src.math.modf
-    libc.src.math.modff
-    libc.src.math.modfl
-    libc.src.math.nan
-    libc.src.math.nanf
-    libc.src.math.nanl
-    libc.src.math.nearbyint
-    libc.src.math.nearbyintf
-    libc.src.math.nearbyintl
-    libc.src.math.nextafter
-    libc.src.math.nextafterf
-    libc.src.math.nextafterl
-    libc.src.math.nexttoward
-    libc.src.math.nexttowardf
-    libc.src.math.nexttowardl
-    libc.src.math.pow
-    libc.src.math.powf
-    libc.src.math.remainderf
-    libc.src.math.remainder
-    libc.src.math.remainderl
-    libc.src.math.remquof
-    libc.src.math.remquo
-    libc.src.math.remquol
-    libc.src.math.rint
-    libc.src.math.rintf
-    libc.src.math.rintl
-    libc.src.math.round
-    libc.src.math.roundf
-    libc.src.math.roundl
-    libc.src.math.scalbln
-    libc.src.math.scalblnf
-    libc.src.math.scalblnl
-    libc.src.math.scalbn
-    libc.src.math.scalbnf
-    libc.src.math.scalbnl
-    libc.src.math.sin
-    libc.src.math.sincosf
-    libc.src.math.sincosf
-    libc.src.math.sinf
-    libc.src.math.sinhf
-    libc.src.math.sqrt
-    libc.src.math.sqrtf
-    libc.src.math.sqrtl
-    libc.src.math.tan
-    libc.src.math.tanf
-    libc.src.math.tanhf
-    libc.src.math.tanpif
-    libc.src.math.trunc
-    libc.src.math.truncf
-    libc.src.math.truncl
-)
-
-list(APPEND TARGET_LIBM_ENTRYPOINTS
-  # bfloat16 entrypoints
-  libc.src.math.bf16add
-  libc.src.math.bf16addf
-  libc.src.math.bf16addl
-  libc.src.math.bf16div
-  libc.src.math.bf16divf
-  libc.src.math.bf16divl
-  libc.src.math.bf16fma
-  libc.src.math.bf16fmaf
-  libc.src.math.bf16fmal
-  libc.src.math.bf16mul
-  libc.src.math.bf16mulf
-  libc.src.math.bf16mull
-  libc.src.math.bf16sub
-  libc.src.math.bf16subf
-  libc.src.math.bf16subl
-  libc.src.math.canonicalizebf16
-  libc.src.math.ceilbf16
-  libc.src.math.copysignbf16
-  libc.src.math.fabsbf16
-  libc.src.math.fdimbf16
-  libc.src.math.floorbf16
-  libc.src.math.fmaxbf16
-  libc.src.math.fmaximumbf16
-  libc.src.math.fmaximum_magbf16
-  libc.src.math.fmaximum_mag_numbf16
-  libc.src.math.fmaximum_numbf16
-  libc.src.math.fminbf16
-  libc.src.math.fminimumbf16
-  libc.src.math.fminimum_magbf16
-  libc.src.math.fminimum_mag_numbf16
-  libc.src.math.fminimum_numbf16
-  libc.src.math.fmodbf16
-  libc.src.math.frexpbf16
-  libc.src.math.fromfpbf16
-  libc.src.math.fromfpxbf16
-  libc.src.math.getpayloadbf16
-  libc.src.math.ilogbbf16
-  libc.src.math.iscanonicalbf16
-  libc.src.math.issignalingbf16
-  libc.src.math.ldexpbf16
-  libc.src.math.llogbbf16
-  libc.src.math.llrintbf16
-  libc.src.math.llroundbf16
-  libc.src.math.log_bf16
-  libc.src.math.logbbf16
-  libc.src.math.lrintbf16
-  libc.src.math.lroundbf16
-  libc.src.math.modfbf16
-  libc.src.math.nanbf16
-  libc.src.math.nearbyintbf16
-  libc.src.math.nextafterbf16
-  libc.src.math.nextdownbf16
-  libc.src.math.nexttowardbf16
-  libc.src.math.nextupbf16
-  libc.src.math.remainderbf16
-  libc.src.math.remquobf16
-  libc.src.math.rintbf16
-  libc.src.math.roundbf16
-  libc.src.math.roundevenbf16
-  libc.src.math.scalblnbf16
-  libc.src.math.scalbnbf16
-  libc.src.math.setpayloadbf16
-  libc.src.math.setpayloadsigbf16
-  libc.src.math.sqrtbf16
-  libc.src.math.truncbf16
-  libc.src.math.totalorderbf16
-  libc.src.math.totalordermagbf16
-  libc.src.math.ufromfpbf16
-  libc.src.math.ufromfpxbf16
-)
-
-set(TARGET_LLVMLIBC_ENTRYPOINTS
-  ${TARGET_LIBC_ENTRYPOINTS}
-  ${TARGET_LIBM_ENTRYPOINTS}
-)
-
+set(TARGET_LIBC_ENTRYPOINTS
+    # ctype.h entrypoints
+    libc.src.ctype.isalnum
+    libc.src.ctype.isalpha
+    libc.src.ctype.isascii
+    libc.src.ctype.isblank
+    libc.src.ctype.iscntrl
+    libc.src.ctype.isdigit
+    libc.src.ctype.isgraph
+    libc.src.ctype.islower
+    libc.src.ctype.isprint
+    libc.src.ctype.ispunct
+    libc.src.ctype.isspace
+    libc.src.ctype.isupper
+    libc.src.ctype.isxdigit
+    libc.src.ctype.toascii
+    libc.src.ctype.tolower
+    libc.src.ctype.toupper
+
+    # string.h entrypoints
+    libc.src.string.memccpy
+    libc.src.string.memchr
+    libc.src.string.memcmp
+    libc.src.string.memcpy
+    libc.src.string.memmem
+    libc.src.string.memmove
+    libc.src.string.mempcpy
+    libc.src.string.memrchr
+    libc.src.string.memset
+    libc.src.string.stpcpy
+    libc.src.string.stpncpy
+    libc.src.string.strcasestr
+    libc.src.string.strcat
+    libc.src.string.strchr
+    libc.src.string.strchrnul
+    libc.src.string.strcmp
+    libc.src.string.strcpy
+    libc.src.string.strcspn
+    libc.src.string.strlcat
+    libc.src.string.strlcpy
+    libc.src.string.strlen
+    libc.src.string.strncat
+    libc.src.string.strncmp
+    libc.src.string.strncpy
+    libc.src.string.strnlen
+    libc.src.string.strpbrk
+    libc.src.string.strrchr
+    libc.src.string.strspn
+    libc.src.string.strstr
+    libc.src.string.strtok
+    libc.src.string.strtok_r
+
+    # string.h entrypoints that depend on malloc
+    libc.src.string.strdup
+    libc.src.string.strndup
+
+    # strings.h entrypoints
+    libc.src.strings.bcmp
+    libc.src.strings.bcopy
+    libc.src.strings.bzero
+    libc.src.strings.strcasecmp
+    libc.src.strings.strncasecmp
+
+    # inttypes.h entrypoints
+    libc.src.inttypes.imaxabs
+    libc.src.inttypes.imaxdiv
+    libc.src.inttypes.strtoimax
+    libc.src.inttypes.strtoumax
+
+    # stdlib.h entrypoints
+    libc.src.stdlib.abs
+    libc.src.stdlib.atoi
+    libc.src.stdlib.atof
+    libc.src.stdlib.atol
+    libc.src.stdlib.atoll
+    libc.src.stdlib.bsearch
+    libc.src.stdlib.div
+    libc.src.stdlib.labs
+    libc.src.stdlib.ldiv
+    libc.src.stdlib.llabs
+    libc.src.stdlib.lldiv
+    libc.src.stdlib.memalignment
+    libc.src.stdlib.qsort
+    libc.src.stdlib.strtod
+    libc.src.stdlib.strtof
+    libc.src.stdlib.strtol
+    libc.src.stdlib.strtold
+    libc.src.stdlib.strtoll
+    libc.src.stdlib.strtoul
+    libc.src.stdlib.strtoull
+
+    # stdlib.h external entrypoints
+    libc.src.stdlib.malloc
+    libc.src.stdlib.calloc
+    libc.src.stdlib.realloc
+    libc.src.stdlib.aligned_alloc
+    libc.src.stdlib.free
+
+    # errno.h entrypoints
+    libc.src.errno.errno
+
+    # time.h entrypoints
+    libc.src.time.time
+    libc.src.time.clock_getres
+
+    # unistd.h entrypoints
+    libc.src.unistd.getentropy
+
+    # wctype.h entrypoints
+    libc.src.wctype.iswalpha
+)
+
+set(TARGET_LIBM_ENTRYPOINTS
+    # fenv.h entrypoints
+    libc.src.fenv.feclearexcept
+    libc.src.fenv.fedisableexcept
+    libc.src.fenv.feenableexcept
+    libc.src.fenv.fegetenv
+    libc.src.fenv.fegetexcept
+    libc.src.fenv.fegetexceptflag
+    libc.src.fenv.fegetround
+    libc.src.fenv.feholdexcept
+    libc.src.fenv.fesetenv
+    libc.src.fenv.fesetexcept
+    libc.src.fenv.fesetexceptflag
+    libc.src.fenv.fesetround
+    libc.src.fenv.feraiseexcept
+    libc.src.fenv.fetestexcept
+    libc.src.fenv.fetestexceptflag
+    libc.src.fenv.feupdateenv
+
+    # math.h entrypoints
+    libc.src.math.acos
+    libc.src.math.acosf
+    libc.src.math.acoshf
+    libc.src.math.asin
+    libc.src.math.asinf
+    libc.src.math.asinhf
+    libc.src.math.atan2
+    libc.src.math.atan2f
+    libc.src.math.atan
+    libc.src.math.atanf
+    libc.src.math.atanhf
+    libc.src.math.cbrt
+    libc.src.math.cbrtf
+    libc.src.math.copysign
+    libc.src.math.copysignf
+    libc.src.math.copysignl
+    libc.src.math.ceil
+    libc.src.math.ceilf
+    libc.src.math.ceill
+    libc.src.math.cos
+    libc.src.math.cosf
+    libc.src.math.coshf
+    libc.src.math.daddl
+    libc.src.math.ddivl
+    libc.src.math.dfmal
+    libc.src.math.dsubl
+    libc.src.math.erff
+    libc.src.math.exp
+    libc.src.math.expf
+    libc.src.math.exp10
+    libc.src.math.exp10f
+    libc.src.math.exp2
+    libc.src.math.exp2f
+    libc.src.math.expm1
+    libc.src.math.expm1f
+    libc.src.math.fabs
+    libc.src.math.fabsf
+    libc.src.math.fabsl
+    libc.src.math.fadd
+    libc.src.math.faddl
+    libc.src.math.fdim
+    libc.src.math.fdimf
+    libc.src.math.fdiml
+    libc.src.math.fdiv
+    libc.src.math.fdivl
+    libc.src.math.ffma
+    libc.src.math.ffmal
+    libc.src.math.floor
+    libc.src.math.floorf
+    libc.src.math.floorl
+    libc.src.math.fma
+    libc.src.math.fmabf16
+    libc.src.math.fmaf
+    libc.src.math.fmin
+    libc.src.math.fminf
+    libc.src.math.fminl
+    libc.src.math.fmax
+    libc.src.math.fmaxf
+    libc.src.math.fmaxl
+    libc.src.math.fmaximum
+    libc.src.math.fmaximumf
+    libc.src.math.fmaximuml
+    libc.src.math.fmaximum_num
+    libc.src.math.fmaximum_numf
+    libc.src.math.fmaximum_numl
+    libc.src.math.fmaximum_mag
+    libc.src.math.fmaximum_magf
+    libc.src.math.fmaximum_magl
+    libc.src.math.fmaximum_mag_num
+    libc.src.math.fmaximum_mag_numf
+    libc.src.math.fmaximum_mag_numl
+    libc.src.math.fminimum
+    libc.src.math.fminimumf
+    libc.src.math.fminimuml
+    libc.src.math.fminimum_num
+    libc.src.math.fminimum_numf
+    libc.src.math.fminimum_numl
+    libc.src.math.fminimum_mag
+    libc.src.math.fminimum_magf
+    libc.src.math.fminimum_magl
+    libc.src.math.fminimum_mag_num
+    libc.src.math.fminimum_mag_numf
+    libc.src.math.fminimum_mag_numl
+    libc.src.math.fmul
+    libc.src.math.fmod
+    libc.src.math.fmodf
+    libc.src.math.fmodl
+    libc.src.math.frexp
+    libc.src.math.frexpf
+    libc.src.math.frexpl
+    libc.src.math.fsub
+    libc.src.math.fsubl
+    libc.src.math.hypot
+    libc.src.math.hypotf
+    libc.src.math.ilogb
+    libc.src.math.ilogbf
+    libc.src.math.ilogbl
+    libc.src.math.ldexp
+    libc.src.math.ldexpf
+    libc.src.math.ldexpl
+    libc.src.math.llrint
+    libc.src.math.llrintf
+    libc.src.math.llrintl
+    libc.src.math.llround
+    libc.src.math.llroundf
+    libc.src.math.llroundl
+    libc.src.math.log10
+    libc.src.math.log10f
+    libc.src.math.log1p
+    libc.src.math.log1pf
+    libc.src.math.log2
+    libc.src.math.log2f
+    libc.src.math.log
+    libc.src.math.logf
+    libc.src.math.logb
+    libc.src.math.logbf
+    libc.src.math.logbl
+    libc.src.math.lrint
+    libc.src.math.lrintf
+    libc.src.math.lrintl
+    libc.src.math.lround
+    libc.src.math.lroundf
+    libc.src.math.lroundl
+    libc.src.math.modf
+    libc.src.math.modff
+    libc.src.math.modfl
+    libc.src.math.nan
+    libc.src.math.nanf
+    libc.src.math.nanl
+    libc.src.math.nearbyint
+    libc.src.math.nearbyintf
+    libc.src.math.nearbyintl
+    libc.src.math.nextafter
+    libc.src.math.nextafterf
+    libc.src.math.nextafterl
+    libc.src.math.nexttoward
+    libc.src.math.nexttowardf
+    libc.src.math.nexttowardl
+    libc.src.math.pow
+    libc.src.math.powf
+    libc.src.math.remainderf
+    libc.src.math.remainder
+    libc.src.math.remainderl
+    libc.src.math.remquof
+    libc.src.math.remquo
+    libc.src.math.remquol
+    libc.src.math.rint
+    libc.src.math.rintf
+    libc.src.math.rintl
+    libc.src.math.round
+    libc.src.math.roundf
+    libc.src.math.roundl
+    libc.src.math.scalbln
+    libc.src.math.scalblnf
+    libc.src.math.scalblnl
+    libc.src.math.scalbn
+    libc.src.math.scalbnf
+    libc.src.math.scalbnl
+    libc.src.math.sin
+    libc.src.math.sincosf
+    libc.src.math.sincosf
+    libc.src.math.sinf
+    libc.src.math.sinhf
+    libc.src.math.sqrt
+    libc.src.math.sqrtf
+    libc.src.math.sqrtl
+    libc.src.math.tan
+    libc.src.math.tanf
+    libc.src.math.tanhf
+    libc.src.math.tanpif
+    libc.src.math.trunc
+    libc.src.math.truncf
+    libc.src.math.truncl
+)
+
+list(APPEND TARGET_LIBM_ENTRYPOINTS
+  # bfloat16 entrypoints
+  libc.src.math.bf16add
+  libc.src.math.bf16addf
+  libc.src.math.bf16addl
+  libc.src.math.bf16div
+  libc.src.math.bf16divf
+  libc.src.math.bf16divl
+  libc.src.math.bf16fma
+  libc.src.math.bf16fmaf
+  libc.src.math.bf16fmal
+  libc.src.math.bf16mul
+  libc.src.math.bf16mulf
+  libc.src.math.bf16mull
+  libc.src.math.bf16sub
+  libc.src.math.bf16subf
+  libc.src.math.bf16subl
+  libc.src.math.canonicalizebf16
+  libc.src.math.ceilbf16
+  libc.src.math.copysignbf16
+  libc.src.math.fabsbf16
+  libc.src.math.fdimbf16
+  libc.src.math.floorbf16
+  libc.src.math.fmaxbf16
+  libc.src.math.fmaximumbf16
+  libc.src.math.fmaximum_magbf16
+  libc.src.math.fmaximum_mag_numbf16
+  libc.src.math.fmaximum_numbf16
+  libc.src.math.fminbf16
+  libc.src.math.fminimumbf16
+  libc.src.math.fminimum_magbf16
+  libc.src.math.fminimum_mag_numbf16
+  libc.src.math.fminimum_numbf16
+  libc.src.math.fmodbf16
+  libc.src.math.frexpbf16
+  libc.src.math.fromfpbf16
+  libc.src.math.fromfpxbf16
+  libc.src.math.getpayloadbf16
+  libc.src.math.ilogbbf16
+  libc.src.math.iscanonicalbf16
+  libc.src.math.issignalingbf16
+  libc.src.math.ldexpbf16
+  libc.src.math.llogbbf16
+  libc.src.math.llrintbf16
+  libc.src.math.llroundbf16
+  libc.src.math.log_bf16
+  libc.src.math.logbbf16
+  libc.src.math.lrintbf16
+  libc.src.math.lroundbf16
+  libc.src.math.modfbf16
+  libc.src.math.nanbf16
+  libc.src.math.nearbyintbf16
+  libc.src.math.nextafterbf16
+  libc.src.math.nextdownbf16
+  libc.src.math.nexttowardbf16
+  libc.src.math.nextupbf16
+  libc.src.math.remainderbf16
+  libc.src.math.remquobf16
+  libc.src.math.rintbf16
+  libc.src.math.roundbf16
+  libc.src.math.roundevenbf16
+  libc.src.math.scalblnbf16
+  libc.src.math.scalbnbf16
+  libc.src.math.setpayloadbf16
+  libc.src.math.setpayloadsigbf16
+  libc.src.math.sqrtbf16
+  libc.src.math.truncbf16
+  libc.src.math.totalorderbf16
+  libc.src.math.totalordermagbf16
+  libc.src.math.ufromfpbf16
+  libc.src.math.ufromfpxbf16
+)
+
+set(TARGET_LLVMLIBC_ENTRYPOINTS
+  ${TARGET_LIBC_ENTRYPOINTS}
+  ${TARGET_LIBM_ENTRYPOINTS}
+)
+
diff --git a/libc/src/math/CMakeLists.txt b/libc/src/math/CMakeLists.txt
index e37e22fdb58e6..d0db5cf8d0f74 100644
--- a/libc/src/math/CMakeLists.txt
+++ b/libc/src/math/CMakeLists.txt
@@ -1,645 +1,646 @@
-add_subdirectory(generic)
-if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${LIBC_TARGET_ARCHITECTURE})
-  add_subdirectory(${LIBC_TARGET_ARCHITECTURE})
-endif()
-
-function(add_math_entrypoint_object name)
-  # We prefer machine specific implementation if available. Hence we check
-  # that first and return early if we are able to add an alias target for the
-  # machine specific implementation.
-  get_fq_target_name("${LIBC_TARGET_ARCHITECTURE}.${name}" fq_machine_specific_target_name)
-  if(TARGET ${fq_machine_specific_target_name})
-    add_entrypoint_object(
-      ${name}
-      ALIAS
-      DEPENDS
-        .${LIBC_TARGET_ARCHITECTURE}.${name}
-    )
-    return()
-  endif()
-
-  get_fq_target_name("generic.${name}" fq_generic_target_name)
-  if(TARGET ${fq_generic_target_name})
-    add_entrypoint_object(
-      ${name}
-      ALIAS
-      DEPENDS
-        .generic.${name}
-    )
-    return()
-  endif()
-
-  # Add a dummy entrypoint object for missing implementations. They will be skipped
-  # anyway as there will be no entry for them in the target entrypoints list.
-  add_entrypoint_object(
-    ${name}
-    SRCS
-      dummy_srcs
-    HDRS
-      dummy_hdrs
-  )
-endfunction()
-
-add_math_entrypoint_object(acos)
-add_math_entrypoint_object(acosf)
-add_math_entrypoint_object(acosf16)
-
-add_math_entrypoint_object(acosh)
-add_math_entrypoint_object(acoshf)
-add_math_entrypoint_object(acoshf16)
-
-add_math_entrypoint_object(acospif16)
- 
-add_math_entrypoint_object(asin)
-add_math_entrypoint_object(asinf)
-add_math_entrypoint_object(asinf16)
-
-add_math_entrypoint_object(asinh)
-add_math_entrypoint_object(asinhf)
-add_math_entrypoint_object(asinhf16)
-
-add_math_entrypoint_object(asinpif16)
-
-add_math_entrypoint_object(atan)
-add_math_entrypoint_object(atanf)
-add_math_entrypoint_object(atanf16)
-
-add_math_entrypoint_object(atan2)
-add_math_entrypoint_object(atan2f)
-add_math_entrypoint_object(atan2l)
-add_math_entrypoint_object(atan2f128)
-
-add_math_entrypoint_object(atanh)
-add_math_entrypoint_object(atanhf)
-add_math_entrypoint_object(atanhf16)
-
-add_math_entrypoint_object(atanpif16)
-
-add_math_entrypoint_object(canonicalize)
-add_math_entrypoint_object(canonicalizef)
-add_math_entrypoint_object(canonicalizel)
-add_math_entrypoint_object(canonicalizef16)
-add_math_entrypoint_object(canonicalizef128)
-add_math_entrypoint_object(canonicalizebf16)
-
-add_math_entrypoint_object(iscanonical)
-add_math_entrypoint_object(iscanonicalf)
-add_math_entrypoint_object(iscanonicall)
-add_math_entrypoint_object(iscanonicalf16)
-add_math_entrypoint_object(iscanonicalf128)
-add_math_entrypoint_object(iscanonicalbf16)
-
-add_math_entrypoint_object(cbrt)
-add_math_entrypoint_object(cbrtf)
-
-add_math_entrypoint_object(ceil)
-add_math_entrypoint_object(ceilf)
-add_math_entrypoint_object(ceill)
-add_math_entrypoint_object(ceilf16)
-add_math_entrypoint_object(ceilf128)
-add_math_entrypoint_object(ceilbf16)
-
-add_math_entrypoint_object(copysign)
-add_math_entrypoint_object(copysignf)
-add_math_entrypoint_object(copysignl)
-add_math_entrypoint_object(copysignf16)
-add_math_entrypoint_object(copysignf128)
-add_math_entrypoint_object(copysignbf16)
-
-add_math_entrypoint_object(cos)
-add_math_entrypoint_object(cosf)
-add_math_entrypoint_object(cosf16)
-
-add_math_entrypoint_object(cosh)
-add_math_entrypoint_object(coshf)
-add_math_entrypoint_object(coshf16)
-
-add_math_entrypoint_object(cospif)
-add_math_entrypoint_object(cospif16)
-
-add_math_entrypoint_object(daddl)
-add_math_entrypoint_object(daddf128)
-add_math_entrypoint_object(ddivl)
-add_math_entrypoint_object(ddivf128)
-add_math_entrypoint_object(dmull)
-add_math_entrypoint_object(dmulf128)
-
-add_math_entrypoint_object(dfmal)
-add_math_entrypoint_object(dfmaf128)
-
-add_math_entrypoint_object(dsqrtl)
-add_math_entrypoint_object(dsqrtf128)
-
-add_math_entrypoint_object(dsubl)
-add_math_entrypoint_object(dsubf128)
-
-add_math_entrypoint_object(erf)
-add_math_entrypoint_object(erff)
-
-add_math_entrypoint_object(exp)
-add_math_entrypoint_object(expf)
-add_math_entrypoint_object(expf16)
-
-add_math_entrypoint_object(exp2)
-add_math_entrypoint_object(exp2f)
-add_math_entrypoint_object(exp2f16)
-
-add_math_entrypoint_object(exp2m1f)
-add_math_entrypoint_object(exp2m1f16)
-
-add_math_entrypoint_object(exp10)
-add_math_entrypoint_object(exp10f)
-add_math_entrypoint_object(exp10f16)
-
-add_math_entrypoint_object(exp10m1f)
-add_math_entrypoint_object(exp10m1f16)
-
-add_math_entrypoint_object(expm1)
-add_math_entrypoint_object(expm1f)
-add_math_entrypoint_object(expm1f16)
-
-add_math_entrypoint_object(f16add)
-add_math_entrypoint_object(f16addf)
-add_math_entrypoint_object(f16addl)
-add_math_entrypoint_object(f16addf128)
-
-add_math_entrypoint_object(f16div)
-add_math_entrypoint_object(f16divf)
-add_math_entrypoint_object(f16divl)
-add_math_entrypoint_object(f16divf128)
-
-add_math_entrypoint_object(f16fma)
-add_math_entrypoint_object(f16fmaf)
-add_math_entrypoint_object(f16fmal)
-add_math_entrypoint_object(f16fmaf128)
-
-add_math_entrypoint_object(f16mul)
-add_math_entrypoint_object(f16mulf)
-add_math_entrypoint_object(f16mull)
-add_math_entrypoint_object(f16mulf128)
-
-add_math_entrypoint_object(f16sqrt)
-add_math_entrypoint_object(f16sqrtf)
-add_math_entrypoint_object(f16sqrtl)
-add_math_entrypoint_object(f16sqrtf128)
-
-add_math_entrypoint_object(fsqrt)
-add_math_entrypoint_object(fsqrtl)
-add_math_entrypoint_object(fsqrtf128)
-
-add_math_entrypoint_object(f16sub)
-add_math_entrypoint_object(f16subf)
-add_math_entrypoint_object(f16subl)
-add_math_entrypoint_object(f16subf128)
-
-add_math_entrypoint_object(fabs)
-add_math_entrypoint_object(fabsf)
-add_math_entrypoint_object(fabsl)
-add_math_entrypoint_object(fabsf16)
-add_math_entrypoint_object(fabsf128)
-add_math_entrypoint_object(fabsbf16)
-
-add_math_entrypoint_object(fadd)
-add_math_entrypoint_object(faddl)
-add_math_entrypoint_object(faddf128)
-
-add_math_entrypoint_object(fdim)
-add_math_entrypoint_object(fdimf)
-add_math_entrypoint_object(fdiml)
-add_math_entrypoint_object(fdimf16)
-add_math_entrypoint_object(fdimf128)
-add_math_entrypoint_object(fdimbf16)
-
-add_math_entrypoint_object(fdiv)
-add_math_entrypoint_object(fdivl)
-add_math_entrypoint_object(fdivf128)
-
-add_math_entrypoint_object(ffma)
-add_math_entrypoint_object(ffmal)
-add_math_entrypoint_object(ffmaf128)
-
-add_math_entrypoint_object(floor)
-add_math_entrypoint_object(floorf)
-add_math_entrypoint_object(floorl)
-add_math_entrypoint_object(floorf16)
-add_math_entrypoint_object(floorf128)
-add_math_entrypoint_object(floorbf16)
-
-add_math_entrypoint_object(fma)
-add_math_entrypoint_object(fmaf)
-add_math_entrypoint_object(fmaf16)
-
-add_math_entrypoint_object(fmax)
-add_math_entrypoint_object(fmaxf)
-add_math_entrypoint_object(fmaxl)
-add_math_entrypoint_object(fmaxf128)
-add_math_entrypoint_object(fmaxf16)
-add_math_entrypoint_object(fmaxbf16)
-
-add_math_entrypoint_object(fmin)
-add_math_entrypoint_object(fminf)
-add_math_entrypoint_object(fminl)
-add_math_entrypoint_object(fminf128)
-add_math_entrypoint_object(fminf16)
-add_math_entrypoint_object(fminbf16)
-
-add_math_entrypoint_object(fmaximum)
-add_math_entrypoint_object(fmaximumf)
-add_math_entrypoint_object(fmaximuml)
-add_math_entrypoint_object(fmaximumf16)
-add_math_entrypoint_object(fmaximumf128)
-add_math_entrypoint_object(fmaximumbf16)
-
-add_math_entrypoint_object(fmaximum_num)
-add_math_entrypoint_object(fmaximum_numf)
-add_math_entrypoint_object(fmaximum_numl)
-add_math_entrypoint_object(fmaximum_numf16)
-add_math_entrypoint_object(fmaximum_numf128)
-add_math_entrypoint_object(fmaximum_numbf16)
-
-add_math_entrypoint_object(fmaximum_mag)
-add_math_entrypoint_object(fmaximum_magf)
-add_math_entrypoint_object(fmaximum_magl)
-add_math_entrypoint_object(fmaximum_magf16)
-add_math_entrypoint_object(fmaximum_magf128)
-add_math_entrypoint_object(fmaximum_magbf16)
-
-add_math_entrypoint_object(fmaximum_mag_num)
-add_math_entrypoint_object(fmaximum_mag_numf)
-add_math_entrypoint_object(fmaximum_mag_numl)
-add_math_entrypoint_object(fmaximum_mag_numf16)
-add_math_entrypoint_object(fmaximum_mag_numf128)
-add_math_entrypoint_object(fmaximum_mag_numbf16)
-
-add_math_entrypoint_object(fminimum)
-add_math_entrypoint_object(fminimumf)
-add_math_entrypoint_object(fminimuml)
-add_math_entrypoint_object(fminimumf16)
-add_math_entrypoint_object(fminimumf128)
-add_math_entrypoint_object(fminimumbf16)
-
-add_math_entrypoint_object(fminimum_num)
-add_math_entrypoint_object(fminimum_numf)
-add_math_entrypoint_object(fminimum_numl)
-add_math_entrypoint_object(fminimum_numf16)
-add_math_entrypoint_object(fminimum_numf128)
-add_math_entrypoint_object(fminimum_numbf16)
-
-add_math_entrypoint_object(fminimum_mag)
-add_math_entrypoint_object(fminimum_magf)
-add_math_entrypoint_object(fminimum_magl)
-add_math_entrypoint_object(fminimum_magf16)
-add_math_entrypoint_object(fminimum_magf128)
-add_math_entrypoint_object(fminimum_magbf16)
-
-add_math_entrypoint_object(fminimum_mag_num)
-add_math_entrypoint_object(fminimum_mag_numf)
-add_math_entrypoint_object(fminimum_mag_numl)
-add_math_entrypoint_object(fminimum_mag_numf16)
-add_math_entrypoint_object(fminimum_mag_numf128)
-add_math_entrypoint_object(fminimum_mag_numbf16)
-
-add_math_entrypoint_object(fmul)
-add_math_entrypoint_object(fmull)
-add_math_entrypoint_object(fmulf128)
-
-add_math_entrypoint_object(fmod)
-add_math_entrypoint_object(fmodf)
-add_math_entrypoint_object(fmodl)
-add_math_entrypoint_object(fmodf16)
-add_math_entrypoint_object(fmodf128)
-add_math_entrypoint_object(fmodbf16)
-
-add_math_entrypoint_object(frexp)
-add_math_entrypoint_object(frexpf)
-add_math_entrypoint_object(frexpl)
-add_math_entrypoint_object(frexpf16)
-add_math_entrypoint_object(frexpf128)
-add_math_entrypoint_object(frexpbf16)
-
-add_math_entrypoint_object(fromfp)
-add_math_entrypoint_object(fromfpf)
-add_math_entrypoint_object(fromfpl)
-add_math_entrypoint_object(fromfpf16)
-add_math_entrypoint_object(fromfpf128)
-add_math_entrypoint_object(fromfpbf16)
-
-add_math_entrypoint_object(fromfpx)
-add_math_entrypoint_object(fromfpxf)
-add_math_entrypoint_object(fromfpxl)
-add_math_entrypoint_object(fromfpxf16)
-add_math_entrypoint_object(fromfpxf128)
-add_math_entrypoint_object(fromfpxbf16)
-
-add_math_entrypoint_object(fsub)
-add_math_entrypoint_object(fsubl)
-add_math_entrypoint_object(fsubf128)
-
-add_math_entrypoint_object(getpayload)
-add_math_entrypoint_object(getpayloadf)
-add_math_entrypoint_object(getpayloadl)
-add_math_entrypoint_object(getpayloadf16)
-add_math_entrypoint_object(getpayloadf128)
-add_math_entrypoint_object(getpayloadbf16)
-
-add_math_entrypoint_object(hypot)
-add_math_entrypoint_object(hypotf)
-add_math_entrypoint_object(hypotf16)
-
-add_math_entrypoint_object(ilogb)
-add_math_entrypoint_object(ilogbf)
-add_math_entrypoint_object(ilogbl)
-add_math_entrypoint_object(ilogbf16)
-add_math_entrypoint_object(ilogbf128)
-add_math_entrypoint_object(ilogbbf16)
-
-add_math_entrypoint_object(isnan)
-add_math_entrypoint_object(isnanf)
-add_math_entrypoint_object(isnanl)
-
-add_math_entrypoint_object(issignaling)
-add_math_entrypoint_object(issignalingf)
-add_math_entrypoint_object(issignalingl)
-add_math_entrypoint_object(issignalingf16)
-add_math_entrypoint_object(issignalingf128)
-add_math_entrypoint_object(issignalingbf16)
-
-add_math_entrypoint_object(llogb)
-add_math_entrypoint_object(llogbf)
-add_math_entrypoint_object(llogbl)
-add_math_entrypoint_object(llogbf16)
-add_math_entrypoint_object(llogbf128)
-add_math_entrypoint_object(llogbbf16)
-
-add_math_entrypoint_object(ldexp)
-add_math_entrypoint_object(ldexpf)
-add_math_entrypoint_object(ldexpl)
-add_math_entrypoint_object(ldexpf16)
-add_math_entrypoint_object(ldexpf128)
-add_math_entrypoint_object(ldexpbf16)
-
-add_math_entrypoint_object(log10)
-add_math_entrypoint_object(log10f)
-add_math_entrypoint_object(log10f16)
-
-add_math_entrypoint_object(log1p)
-add_math_entrypoint_object(log1pf)
-
-add_math_entrypoint_object(log2)
-add_math_entrypoint_object(log2f)
-add_math_entrypoint_object(log2f16)
-
-add_math_entrypoint_object(log)
-add_math_entrypoint_object(logf)
-add_math_entrypoint_object(logf16)
-add_math_entrypoint_object(log_bf16)
-
-add_math_entrypoint_object(logb)
-add_math_entrypoint_object(logbf)
-add_math_entrypoint_object(logbl)
-add_math_entrypoint_object(logbf16)
-add_math_entrypoint_object(logbf128)
-add_math_entrypoint_object(logbbf16)
-
-add_math_entrypoint_object(llrint)
-add_math_entrypoint_object(llrintf)
-add_math_entrypoint_object(llrintl)
-add_math_entrypoint_object(llrintf16)
-add_math_entrypoint_object(llrintf128)
-add_math_entrypoint_object(llrintbf16)
-
-add_math_entrypoint_object(llround)
-add_math_entrypoint_object(llroundf)
-add_math_entrypoint_object(llroundl)
-add_math_entrypoint_object(llroundf16)
-add_math_entrypoint_object(llroundf128)
-add_math_entrypoint_object(llroundbf16)
-
-add_math_entrypoint_object(lrint)
-add_math_entrypoint_object(lrintf)
-add_math_entrypoint_object(lrintl)
-add_math_entrypoint_object(lrintf16)
-add_math_entrypoint_object(lrintf128)
-add_math_entrypoint_object(lrintbf16)
-
-add_math_entrypoint_object(lround)
-add_math_entrypoint_object(lroundf)
-add_math_entrypoint_object(lroundl)
-add_math_entrypoint_object(lroundf16)
-add_math_entrypoint_object(lroundf128)
-add_math_entrypoint_object(lroundbf16)
-
-add_math_entrypoint_object(modf)
-add_math_entrypoint_object(modff)
-add_math_entrypoint_object(modfl)
-add_math_entrypoint_object(modff16)
-add_math_entrypoint_object(modff128)
-add_math_entrypoint_object(modfbf16)
-
-add_math_entrypoint_object(nan)
-add_math_entrypoint_object(nanf)
-add_math_entrypoint_object(nanl)
-add_math_entrypoint_object(nanf16)
-add_math_entrypoint_object(nanf128)
-add_math_entrypoint_object(nanbf16)
-
-add_math_entrypoint_object(nearbyint)
-add_math_entrypoint_object(nearbyintf)
-add_math_entrypoint_object(nearbyintl)
-add_math_entrypoint_object(nearbyintf16)
-add_math_entrypoint_object(nearbyintf128)
-add_math_entrypoint_object(nearbyintbf16)
-
-add_math_entrypoint_object(nextafter)
-add_math_entrypoint_object(nextafterf)
-add_math_entrypoint_object(nextafterl)
-add_math_entrypoint_object(nextafterf16)
-add_math_entrypoint_object(nextafterf128)
-add_math_entrypoint_object(nextafterbf16)
-
-add_math_entrypoint_object(nexttoward)
-add_math_entrypoint_object(nexttowardf)
-add_math_entrypoint_object(nexttowardl)
-add_math_entrypoint_object(nexttowardf16)
-add_math_entrypoint_object(nexttowardbf16)
-
-add_math_entrypoint_object(nextdown)
-add_math_entrypoint_object(nextdownf)
-add_math_entrypoint_object(nextdownl)
-add_math_entrypoint_object(nextdownf16)
-add_math_entrypoint_object(nextdownf128)
-add_math_entrypoint_object(nextdownbf16)
-
-add_math_entrypoint_object(nextup)
-add_math_entrypoint_object(nextupf)
-add_math_entrypoint_object(nextupl)
-add_math_entrypoint_object(nextupf16)
-add_math_entrypoint_object(nextupf128)
-add_math_entrypoint_object(nextupbf16)
-
-add_math_entrypoint_object(pow)
-add_math_entrypoint_object(powf)
-add_math_entrypoint_object(powi)
-add_math_entrypoint_object(powif)
-
-add_math_entrypoint_object(remainder)
-add_math_entrypoint_object(remainderf)
-add_math_entrypoint_object(remainderl)
-add_math_entrypoint_object(remainderf16)
-add_math_entrypoint_object(remainderf128)
-add_math_entrypoint_object(remainderbf16)
-
-add_math_entrypoint_object(remquo)
-add_math_entrypoint_object(remquof)
-add_math_entrypoint_object(remquol)
-add_math_entrypoint_object(remquof16)
-add_math_entrypoint_object(remquof128)
-add_math_entrypoint_object(remquobf16)
-
-add_math_entrypoint_object(rint)
-add_math_entrypoint_object(rintf)
-add_math_entrypoint_object(rintl)
-add_math_entrypoint_object(rintf16)
-add_math_entrypoint_object(rintf128)
-add_math_entrypoint_object(rintbf16)
-
-add_math_entrypoint_object(round)
-add_math_entrypoint_object(roundf)
-add_math_entrypoint_object(roundl)
-add_math_entrypoint_object(roundf16)
-add_math_entrypoint_object(roundf128)
-add_math_entrypoint_object(roundbf16)
-
-add_math_entrypoint_object(roundeven)
-add_math_entrypoint_object(roundevenf)
-add_math_entrypoint_object(roundevenl)
-add_math_entrypoint_object(roundevenf16)
-add_math_entrypoint_object(roundevenf128)
-add_math_entrypoint_object(roundevenbf16)
-
-add_math_entrypoint_object(rsqrtf)
-add_math_entrypoint_object(rsqrtf16)
-
-add_math_entrypoint_object(scalbln)
-add_math_entrypoint_object(scalblnf)
-add_math_entrypoint_object(scalblnl)
-add_math_entrypoint_object(scalblnf16)
-add_math_entrypoint_object(scalblnf128)
-add_math_entrypoint_object(scalblnbf16)
-
-add_math_entrypoint_object(scalbn)
-add_math_entrypoint_object(scalbnf)
-add_math_entrypoint_object(scalbnl)
-add_math_entrypoint_object(scalbnf16)
-add_math_entrypoint_object(scalbnf128)
-add_math_entrypoint_object(scalbnbf16)
-
-add_math_entrypoint_object(setpayload)
-add_math_entrypoint_object(setpayloadf)
-add_math_entrypoint_object(setpayloadl)
-add_math_entrypoint_object(setpayloadf16)
-add_math_entrypoint_object(setpayloadf128)
-add_math_entrypoint_object(setpayloadbf16)
-
-add_math_entrypoint_object(setpayloadsig)
-add_math_entrypoint_object(setpayloadsigf)
-add_math_entrypoint_object(setpayloadsigl)
-add_math_entrypoint_object(setpayloadsigf16)
-add_math_entrypoint_object(setpayloadsigf128)
-add_math_entrypoint_object(setpayloadsigbf16)
-
-add_math_entrypoint_object(sincos)
-add_math_entrypoint_object(sincosf)
-
-add_math_entrypoint_object(sin)
-add_math_entrypoint_object(sinf)
-add_math_entrypoint_object(sinf16)
-add_math_entrypoint_object(sinpif)
-add_math_entrypoint_object(sinpif16)
-
-add_math_entrypoint_object(sinh)
-add_math_entrypoint_object(sinhf)
-add_math_entrypoint_object(sinhf16)
-
-add_math_entrypoint_object(sqrt)
-add_math_entrypoint_object(sqrtf)
-add_math_entrypoint_object(sqrtl)
-add_math_entrypoint_object(sqrtf16)
-add_math_entrypoint_object(sqrtf128)
-add_math_entrypoint_object(sqrtbf16)
-
-add_math_entrypoint_object(tan)
-add_math_entrypoint_object(tanf)
-add_math_entrypoint_object(tanf16)
-
-add_math_entrypoint_object(tanh)
-add_math_entrypoint_object(tanhf)
-add_math_entrypoint_object(tanhf16)
-
-add_math_entrypoint_object(tanpif)
-add_math_entrypoint_object(tanpif16)
-
-add_math_entrypoint_object(tgamma)
-add_math_entrypoint_object(tgammaf)
-add_math_entrypoint_object(lgamma)
-add_math_entrypoint_object(lgamma_r)
-
-add_math_entrypoint_object(totalorder)
-add_math_entrypoint_object(totalorderf)
-add_math_entrypoint_object(totalorderl)
-add_math_entrypoint_object(totalorderf16)
-add_math_entrypoint_object(totalorderf128)
-add_math_entrypoint_object(totalorderbf16)
-
-add_math_entrypoint_object(totalordermag)
-add_math_entrypoint_object(totalordermagf)
-add_math_entrypoint_object(totalordermagl)
-add_math_entrypoint_object(totalordermagf16)
-add_math_entrypoint_object(totalordermagf128)
-add_math_entrypoint_object(totalordermagbf16)
-
-add_math_entrypoint_object(trunc)
-add_math_entrypoint_object(truncf)
-add_math_entrypoint_object(truncl)
-add_math_entrypoint_object(truncf16)
-add_math_entrypoint_object(truncf128)
-add_math_entrypoint_object(truncbf16)
-
-add_math_entrypoint_object(ufromfp)
-add_math_entrypoint_object(ufromfpf)
-add_math_entrypoint_object(ufromfpl)
-add_math_entrypoint_object(ufromfpf16)
-add_math_entrypoint_object(ufromfpf128)
-add_math_entrypoint_object(ufromfpbf16)
-
-add_math_entrypoint_object(ufromfpx)
-add_math_entrypoint_object(ufromfpxf)
-add_math_entrypoint_object(ufromfpxl)
-add_math_entrypoint_object(ufromfpxf16)
-add_math_entrypoint_object(ufromfpxf128)
-add_math_entrypoint_object(ufromfpxbf16)
-
-add_math_entrypoint_object(bf16add)
-add_math_entrypoint_object(bf16addf)
-add_math_entrypoint_object(bf16addl)
-add_math_entrypoint_object(bf16addf128)
-
-add_math_entrypoint_object(bf16div)
-add_math_entrypoint_object(bf16divf)
-add_math_entrypoint_object(bf16divl)
-add_math_entrypoint_object(bf16divf128)
-
-add_math_entrypoint_object(bf16fma)
-add_math_entrypoint_object(bf16fmaf)
-add_math_entrypoint_object(bf16fmal)
-add_math_entrypoint_object(bf16fmaf128)
-
-add_math_entrypoint_object(bf16mul)
-add_math_entrypoint_object(bf16mulf)
-add_math_entrypoint_object(bf16mull)
-add_math_entrypoint_object(bf16mulf128)
-
-add_math_entrypoint_object(bf16sub)
-add_math_entrypoint_object(bf16subf)
-add_math_entrypoint_object(bf16subl)
-add_math_entrypoint_object(bf16subf128)
+add_subdirectory(generic)
+if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${LIBC_TARGET_ARCHITECTURE})
+  add_subdirectory(${LIBC_TARGET_ARCHITECTURE})
+endif()
+
+function(add_math_entrypoint_object name)
+  # We prefer machine specific implementation if available. Hence we check
+  # that first and return early if we are able to add an alias target for the
+  # machine specific implementation.
+  get_fq_target_name("${LIBC_TARGET_ARCHITECTURE}.${name}" fq_machine_specific_target_name)
+  if(TARGET ${fq_machine_specific_target_name})
+    add_entrypoint_object(
+      ${name}
+      ALIAS
+      DEPENDS
+        .${LIBC_TARGET_ARCHITECTURE}.${name}
+    )
+    return()
+  endif()
+
+  get_fq_target_name("generic.${name}" fq_generic_target_name)
+  if(TARGET ${fq_generic_target_name})
+    add_entrypoint_object(
+      ${name}
+      ALIAS
+      DEPENDS
+        .generic.${name}
+    )
+    return()
+  endif()
+
+  # Add a dummy entrypoint object for missing implementations. They will be skipped
+  # anyway as there will be no entry for them in the target entrypoints list.
+  add_entrypoint_object(
+    ${name}
+    SRCS
+      dummy_srcs
+    HDRS
+      dummy_hdrs
+  )
+endfunction()
+
+add_math_entrypoint_object(acos)
+add_math_entrypoint_object(acosf)
+add_math_entrypoint_object(acosf16)
+
+add_math_entrypoint_object(acosh)
+add_math_entrypoint_object(acoshf)
+add_math_entrypoint_object(acoshf16)
+
+add_math_entrypoint_object(acospif16)
+ 
+add_math_entrypoint_object(asin)
+add_math_entrypoint_object(asinf)
+add_math_entrypoint_object(asinf16)
+
+add_math_entrypoint_object(asinh)
+add_math_entrypoint_object(asinhf)
+add_math_entrypoint_object(asinhf16)
+
+add_math_entrypoint_object(asinpif16)
+
+add_math_entrypoint_object(atan)
+add_math_entrypoint_object(atanf)
+add_math_entrypoint_object(atanf16)
+
+add_math_entrypoint_object(atan2)
+add_math_entrypoint_object(atan2f)
+add_math_entrypoint_object(atan2l)
+add_math_entrypoint_object(atan2f128)
+
+add_math_entrypoint_object(atanh)
+add_math_entrypoint_object(atanhf)
+add_math_entrypoint_object(atanhf16)
+
+add_math_entrypoint_object(atanpif16)
+
+add_math_entrypoint_object(canonicalize)
+add_math_entrypoint_object(canonicalizef)
+add_math_entrypoint_object(canonicalizel)
+add_math_entrypoint_object(canonicalizef16)
+add_math_entrypoint_object(canonicalizef128)
+add_math_entrypoint_object(canonicalizebf16)
+
+add_math_entrypoint_object(iscanonical)
+add_math_entrypoint_object(iscanonicalf)
+add_math_entrypoint_object(iscanonicall)
+add_math_entrypoint_object(iscanonicalf16)
+add_math_entrypoint_object(iscanonicalf128)
+add_math_entrypoint_object(iscanonicalbf16)
+
+add_math_entrypoint_object(cbrt)
+add_math_entrypoint_object(cbrtf)
+
+add_math_entrypoint_object(ceil)
+add_math_entrypoint_object(ceilf)
+add_math_entrypoint_object(ceill)
+add_math_entrypoint_object(ceilf16)
+add_math_entrypoint_object(ceilf128)
+add_math_entrypoint_object(ceilbf16)
+
+add_math_entrypoint_object(copysign)
+add_math_entrypoint_object(copysignf)
+add_math_entrypoint_object(copysignl)
+add_math_entrypoint_object(copysignf16)
+add_math_entrypoint_object(copysignf128)
+add_math_entrypoint_object(copysignbf16)
+
+add_math_entrypoint_object(cos)
+add_math_entrypoint_object(cosf)
+add_math_entrypoint_object(cosf16)
+
+add_math_entrypoint_object(cosh)
+add_math_entrypoint_object(coshf)
+add_math_entrypoint_object(coshf16)
+
+add_math_entrypoint_object(cospif)
+add_math_entrypoint_object(cospif16)
+
+add_math_entrypoint_object(daddl)
+add_math_entrypoint_object(daddf128)
+add_math_entrypoint_object(ddivl)
+add_math_entrypoint_object(ddivf128)
+add_math_entrypoint_object(dmull)
+add_math_entrypoint_object(dmulf128)
+
+add_math_entrypoint_object(dfmal)
+add_math_entrypoint_object(dfmaf128)
+
+add_math_entrypoint_object(dsqrtl)
+add_math_entrypoint_object(dsqrtf128)
+
+add_math_entrypoint_object(dsubl)
+add_math_entrypoint_object(dsubf128)
+
+add_math_entrypoint_object(erf)
+add_math_entrypoint_object(erff)
+
+add_math_entrypoint_object(exp)
+add_math_entrypoint_object(expf)
+add_math_entrypoint_object(expf16)
+
+add_math_entrypoint_object(exp2)
+add_math_entrypoint_object(exp2f)
+add_math_entrypoint_object(exp2f16)
+
+add_math_entrypoint_object(exp2m1f)
+add_math_entrypoint_object(exp2m1f16)
+
+add_math_entrypoint_object(exp10)
+add_math_entrypoint_object(exp10f)
+add_math_entrypoint_object(exp10f16)
+
+add_math_entrypoint_object(exp10m1f)
+add_math_entrypoint_object(exp10m1f16)
+
+add_math_entrypoint_object(expm1)
+add_math_entrypoint_object(expm1f)
+add_math_entrypoint_object(expm1f16)
+
+add_math_entrypoint_object(f16add)
+add_math_entrypoint_object(f16addf)
+add_math_entrypoint_object(f16addl)
+add_math_entrypoint_object(f16addf128)
+
+add_math_entrypoint_object(f16div)
+add_math_entrypoint_object(f16divf)
+add_math_entrypoint_object(f16divl)
+add_math_entrypoint_object(f16divf128)
+
+add_math_entrypoint_object(f16fma)
+add_math_entrypoint_object(f16fmaf)
+add_math_entrypoint_object(f16fmal)
+add_math_entrypoint_object(f16fmaf128)
+
+add_math_entrypoint_object(f16mul)
+add_math_entrypoint_object(f16mulf)
+add_math_entrypoint_object(f16mull)
+add_math_entrypoint_object(f16mulf128)
+
+add_math_entrypoint_object(f16sqrt)
+add_math_entrypoint_object(f16sqrtf)
+add_math_entrypoint_object(f16sqrtl)
+add_math_entrypoint_object(f16sqrtf128)
+
+add_math_entrypoint_object(fsqrt)
+add_math_entrypoint_object(fsqrtl)
+add_math_entrypoint_object(fsqrtf128)
+
+add_math_entrypoint_object(f16sub)
+add_math_entrypoint_object(f16subf)
+add_math_entrypoint_object(f16subl)
+add_math_entrypoint_object(f16subf128)
+
+add_math_entrypoint_object(fabs)
+add_math_entrypoint_object(fabsf)
+add_math_entrypoint_object(fabsl)
+add_math_entrypoint_object(fabsf16)
+add_math_entrypoint_object(fabsf128)
+add_math_entrypoint_object(fabsbf16)
+
+add_math_entrypoint_object(fadd)
+add_math_entrypoint_object(faddl)
+add_math_entrypoint_object(faddf128)
+
+add_math_entrypoint_object(fdim)
+add_math_entrypoint_object(fdimf)
+add_math_entrypoint_object(fdiml)
+add_math_entrypoint_object(fdimf16)
+add_math_entrypoint_object(fdimf128)
+add_math_entrypoint_object(fdimbf16)
+
+add_math_entrypoint_object(fdiv)
+add_math_entrypoint_object(fdivl)
+add_math_entrypoint_object(fdivf128)
+
+add_math_entrypoint_object(ffma)
+add_math_entrypoint_object(ffmal)
+add_math_entrypoint_object(ffmaf128)
+
+add_math_entrypoint_object(floor)
+add_math_entrypoint_object(floorf)
+add_math_entrypoint_object(floorl)
+add_math_entrypoint_object(floorf16)
+add_math_entrypoint_object(floorf128)
+add_math_entrypoint_object(floorbf16)
+
+add_math_entrypoint_object(fma)
+add_math_entrypoint_object(fmaf)
+add_math_entrypoint_object(fmaf16)
+add_math_entrypoint_object(fmabf16)
+
+add_math_entrypoint_object(fmax)
+add_math_entrypoint_object(fmaxf)
+add_math_entrypoint_object(fmaxl)
+add_math_entrypoint_object(fmaxf128)
+add_math_entrypoint_object(fmaxf16)
+add_math_entrypoint_object(fmaxbf16)
+
+add_math_entrypoint_object(fmin)
+add_math_entrypoint_object(fminf)
+add_math_entrypoint_object(fminl)
+add_math_entrypoint_object(fminf128)
+add_math_entrypoint_object(fminf16)
+add_math_entrypoint_object(fminbf16)
+
+add_math_entrypoint_object(fmaximum)
+add_math_entrypoint_object(fmaximumf)
+add_math_entrypoint_object(fmaximuml)
+add_math_entrypoint_object(fmaximumf16)
+add_math_entrypoint_object(fmaximumf128)
+add_math_entrypoint_object(fmaximumbf16)
+
+add_math_entrypoint_object(fmaximum_num)
+add_math_entrypoint_object(fmaximum_numf)
+add_math_entrypoint_object(fmaximum_numl)
+add_math_entrypoint_object(fmaximum_numf16)
+add_math_entrypoint_object(fmaximum_numf128)
+add_math_entrypoint_object(fmaximum_numbf16)
+
+add_math_entrypoint_object(fmaximum_mag)
+add_math_entrypoint_object(fmaximum_magf)
+add_math_entrypoint_object(fmaximum_magl)
+add_math_entrypoint_object(fmaximum_magf16)
+add_math_entrypoint_object(fmaximum_magf128)
+add_math_entrypoint_object(fmaximum_magbf16)
+
+add_math_entrypoint_object(fmaximum_mag_num)
+add_math_entrypoint_object(fmaximum_mag_numf)
+add_math_entrypoint_object(fmaximum_mag_numl)
+add_math_entrypoint_object(fmaximum_mag_numf16)
+add_math_entrypoint_object(fmaximum_mag_numf128)
+add_math_entrypoint_object(fmaximum_mag_numbf16)
+
+add_math_entrypoint_object(fminimum)
+add_math_entrypoint_object(fminimumf)
+add_math_entrypoint_object(fminimuml)
+add_math_entrypoint_object(fminimumf16)
+add_math_entrypoint_object(fminimumf128)
+add_math_entrypoint_object(fminimumbf16)
+
+add_math_entrypoint_object(fminimum_num)
+add_math_entrypoint_object(fminimum_numf)
+add_math_entrypoint_object(fminimum_numl)
+add_math_entrypoint_object(fminimum_numf16)
+add_math_entrypoint_object(fminimum_numf128)
+add_math_entrypoint_object(fminimum_numbf16)
+
+add_math_entrypoint_object(fminimum_mag)
+add_math_entrypoint_object(fminimum_magf)
+add_math_entrypoint_object(fminimum_magl)
+add_math_entrypoint_object(fminimum_magf16)
+add_math_entrypoint_object(fminimum_magf128)
+add_math_entrypoint_object(fminimum_magbf16)
+
+add_math_entrypoint_object(fminimum_mag_num)
+add_math_entrypoint_object(fminimum_mag_numf)
+add_math_entrypoint_object(fminimum_mag_numl)
+add_math_entrypoint_object(fminimum_mag_numf16)
+add_math_entrypoint_object(fminimum_mag_numf128)
+add_math_entrypoint_object(fminimum_mag_numbf16)
+
+add_math_entrypoint_object(fmul)
+add_math_entrypoint_object(fmull)
+add_math_entrypoint_object(fmulf128)
+
+add_math_entrypoint_object(fmod)
+add_math_entrypoint_object(fmodf)
+add_math_entrypoint_object(fmodl)
+add_math_entrypoint_object(fmodf16)
+add_math_entrypoint_object(fmodf128)
+add_math_entrypoint_object(fmodbf16)
+
+add_math_entrypoint_object(frexp)
+add_math_entrypoint_object(frexpf)
+add_math_entrypoint_object(frexpl)
+add_math_entrypoint_object(frexpf16)
+add_math_entrypoint_object(frexpf128)
+add_math_entrypoint_object(frexpbf16)
+
+add_math_entrypoint_object(fromfp)
+add_math_entrypoint_object(fromfpf)
+add_math_entrypoint_object(fromfpl)
+add_math_entrypoint_object(fromfpf16)
+add_math_entrypoint_object(fromfpf128)
+add_math_entrypoint_object(fromfpbf16)
+
+add_math_entrypoint_object(fromfpx)
+add_math_entrypoint_object(fromfpxf)
+add_math_entrypoint_object(fromfpxl)
+add_math_entrypoint_object(fromfpxf16)
+add_math_entrypoint_object(fromfpxf128)
+add_math_entrypoint_object(fromfpxbf16)
+
+add_math_entrypoint_object(fsub)
+add_math_entrypoint_object(fsubl)
+add_math_entrypoint_object(fsubf128)
+
+add_math_entrypoint_object(getpayload)
+add_math_entrypoint_object(getpayloadf)
+add_math_entrypoint_object(getpayloadl)
+add_math_entrypoint_object(getpayloadf16)
+add_math_entrypoint_object(getpayloadf128)
+add_math_entrypoint_object(getpayloadbf16)
+
+add_math_entrypoint_object(hypot)
+add_math_entrypoint_object(hypotf)
+add_math_entrypoint_object(hypotf16)
+
+add_math_entrypoint_object(ilogb)
+add_math_entrypoint_object(ilogbf)
+add_math_entrypoint_object(ilogbl)
+add_math_entrypoint_object(ilogbf16)
+add_math_entrypoint_object(ilogbf128)
+add_math_entrypoint_object(ilogbbf16)
+
+add_math_entrypoint_object(isnan)
+add_math_entrypoint_object(isnanf)
+add_math_entrypoint_object(isnanl)
+
+add_math_entrypoint_object(issignaling)
+add_math_entrypoint_object(issignalingf)
+add_math_entrypoint_object(issignalingl)
+add_math_entrypoint_object(issignalingf16)
+add_math_entrypoint_object(issignalingf128)
+add_math_entrypoint_object(issignalingbf16)
+
+add_math_entrypoint_object(llogb)
+add_math_entrypoint_object(llogbf)
+add_math_entrypoint_object(llogbl)
+add_math_entrypoint_object(llogbf16)
+add_math_entrypoint_object(llogbf128)
+add_math_entrypoint_object(llogbbf16)
+
+add_math_entrypoint_object(ldexp)
+add_math_entrypoint_object(ldexpf)
+add_math_entrypoint_object(ldexpl)
+add_math_entrypoint_object(ldexpf16)
+add_math_entrypoint_object(ldexpf128)
+add_math_entrypoint_object(ldexpbf16)
+
+add_math_entrypoint_object(log10)
+add_math_entrypoint_object(log10f)
+add_math_entrypoint_object(log10f16)
+
+add_math_entrypoint_object(log1p)
+add_math_entrypoint_object(log1pf)
+
+add_math_entrypoint_object(log2)
+add_math_entrypoint_object(log2f)
+add_math_entrypoint_object(log2f16)
+
+add_math_entrypoint_object(log)
+add_math_entrypoint_object(logf)
+add_math_entrypoint_object(logf16)
+add_math_entrypoint_object(log_bf16)
+
+add_math_entrypoint_object(logb)
+add_math_entrypoint_object(logbf)
+add_math_entrypoint_object(logbl)
+add_math_entrypoint_object(logbf16)
+add_math_entrypoint_object(logbf128)
+add_math_entrypoint_object(logbbf16)
+
+add_math_entrypoint_object(llrint)
+add_math_entrypoint_object(llrintf)
+add_math_entrypoint_object(llrintl)
+add_math_entrypoint_object(llrintf16)
+add_math_entrypoint_object(llrintf128)
+add_math_entrypoint_object(llrintbf16)
+
+add_math_entrypoint_object(llround)
+add_math_entrypoint_object(llroundf)
+add_math_entrypoint_object(llroundl)
+add_math_entrypoint_object(llroundf16)
+add_math_entrypoint_object(llroundf128)
+add_math_entrypoint_object(llroundbf16)
+
+add_math_entrypoint_object(lrint)
+add_math_entrypoint_object(lrintf)
+add_math_entrypoint_object(lrintl)
+add_math_entrypoint_object(lrintf16)
+add_math_entrypoint_object(lrintf128)
+add_math_entrypoint_object(lrintbf16)
+
+add_math_entrypoint_object(lround)
+add_math_entrypoint_object(lroundf)
+add_math_entrypoint_object(lroundl)
+add_math_entrypoint_object(lroundf16)
+add_math_entrypoint_object(lroundf128)
+add_math_entrypoint_object(lroundbf16)
+
+add_math_entrypoint_object(modf)
+add_math_entrypoint_object(modff)
+add_math_entrypoint_object(modfl)
+add_math_entrypoint_object(modff16)
+add_math_entrypoint_object(modff128)
+add_math_entrypoint_object(modfbf16)
+
+add_math_entrypoint_object(nan)
+add_math_entrypoint_object(nanf)
+add_math_entrypoint_object(nanl)
+add_math_entrypoint_object(nanf16)
+add_math_entrypoint_object(nanf128)
+add_math_entrypoint_object(nanbf16)
+
+add_math_entrypoint_object(nearbyint)
+add_math_entrypoint_object(nearbyintf)
+add_math_entrypoint_object(nearbyintl)
+add_math_entrypoint_object(nearbyintf16)
+add_math_entrypoint_object(nearbyintf128)
+add_math_entrypoint_object(nearbyintbf16)
+
+add_math_entrypoint_object(nextafter)
+add_math_entrypoint_object(nextafterf)
+add_math_entrypoint_object(nextafterl)
+add_math_entrypoint_object(nextafterf16)
+add_math_entrypoint_object(nextafterf128)
+add_math_entrypoint_object(nextafterbf16)
+
+add_math_entrypoint_object(nexttoward)
+add_math_entrypoint_object(nexttowardf)
+add_math_entrypoint_object(nexttowardl)
+add_math_entrypoint_object(nexttowardf16)
+add_math_entrypoint_object(nexttowardbf16)
+
+add_math_entrypoint_object(nextdown)
+add_math_entrypoint_object(nextdownf)
+add_math_entrypoint_object(nextdownl)
+add_math_entrypoint_object(nextdownf16)
+add_math_entrypoint_object(nextdownf128)
+add_math_entrypoint_object(nextdownbf16)
+
+add_math_entrypoint_object(nextup)
+add_math_entrypoint_object(nextupf)
+add_math_entrypoint_object(nextupl)
+add_math_entrypoint_object(nextupf16)
+add_math_entrypoint_object(nextupf128)
+add_math_entrypoint_object(nextupbf16)
+
+add_math_entrypoint_object(pow)
+add_math_entrypoint_object(powf)
+add_math_entrypoint_object(powi)
+add_math_entrypoint_object(powif)
+
+add_math_entrypoint_object(remainder)
+add_math_entrypoint_object(remainderf)
+add_math_entrypoint_object(remainderl)
+add_math_entrypoint_object(remainderf16)
+add_math_entrypoint_object(remainderf128)
+add_math_entrypoint_object(remainderbf16)
+
+add_math_entrypoint_object(remquo)
+add_math_entrypoint_object(remquof)
+add_math_entrypoint_object(remquol)
+add_math_entrypoint_object(remquof16)
+add_math_entrypoint_object(remquof128)
+add_math_entrypoint_object(remquobf16)
+
+add_math_entrypoint_object(rint)
+add_math_entrypoint_object(rintf)
+add_math_entrypoint_object(rintl)
+add_math_entrypoint_object(rintf16)
+add_math_entrypoint_object(rintf128)
+add_math_entrypoint_object(rintbf16)
+
+add_math_entrypoint_object(round)
+add_math_entrypoint_object(roundf)
+add_math_entrypoint_object(roundl)
+add_math_entrypoint_object(roundf16)
+add_math_entrypoint_object(roundf128)
+add_math_entrypoint_object(roundbf16)
+
+add_math_entrypoint_object(roundeven)
+add_math_entrypoint_object(roundevenf)
+add_math_entrypoint_object(roundevenl)
+add_math_entrypoint_object(roundevenf16)
+add_math_entrypoint_object(roundevenf128)
+add_math_entrypoint_object(roundevenbf16)
+
+add_math_entrypoint_object(rsqrtf)
+add_math_entrypoint_object(rsqrtf16)
+
+add_math_entrypoint_object(scalbln)
+add_math_entrypoint_object(scalblnf)
+add_math_entrypoint_object(scalblnl)
+add_math_entrypoint_object(scalblnf16)
+add_math_entrypoint_object(scalblnf128)
+add_math_entrypoint_object(scalblnbf16)
+
+add_math_entrypoint_object(scalbn)
+add_math_entrypoint_object(scalbnf)
+add_math_entrypoint_object(scalbnl)
+add_math_entrypoint_object(scalbnf16)
+add_math_entrypoint_object(scalbnf128)
+add_math_entrypoint_object(scalbnbf16)
+
+add_math_entrypoint_object(setpayload)
+add_math_entrypoint_object(setpayloadf)
+add_math_entrypoint_object(setpayloadl)
+add_math_entrypoint_object(setpayloadf16)
+add_math_entrypoint_object(setpayloadf128)
+add_math_entrypoint_object(setpayloadbf16)
+
+add_math_entrypoint_object(setpayloadsig)
+add_math_entrypoint_object(setpayloadsigf)
+add_math_entrypoint_object(setpayloadsigl)
+add_math_entrypoint_object(setpayloadsigf16)
+add_math_entrypoint_object(setpayloadsigf128)
+add_math_entrypoint_object(setpayloadsigbf16)
+
+add_math_entrypoint_object(sincos)
+add_math_entrypoint_object(sincosf)
+
+add_math_entrypoint_object(sin)
+add_math_entrypoint_object(sinf)
+add_math_entrypoint_object(sinf16)
+add_math_entrypoint_object(sinpif)
+add_math_entrypoint_object(sinpif16)
+
+add_math_entrypoint_object(sinh)
+add_math_entrypoint_object(sinhf)
+add_math_entrypoint_object(sinhf16)
+
+add_math_entrypoint_object(sqrt)
+add_math_entrypoint_object(sqrtf)
+add_math_entrypoint_object(sqrtl)
+add_math_entrypoint_object(sqrtf16)
+add_math_entrypoint_object(sqrtf128)
+add_math_entrypoint_object(sqrtbf16)
+
+add_math_entrypoint_object(tan)
+add_math_entrypoint_object(tanf)
+add_math_entrypoint_object(tanf16)
+
+add_math_entrypoint_object(tanh)
+add_math_entrypoint_object(tanhf)
+add_math_entrypoint_object(tanhf16)
+
+add_math_entrypoint_object(tanpif)
+add_math_entrypoint_object(tanpif16)
+
+add_math_entrypoint_object(tgamma)
+add_math_entrypoint_object(tgammaf)
+add_math_entrypoint_object(lgamma)
+add_math_entrypoint_object(lgamma_r)
+
+add_math_entrypoint_object(totalorder)
+add_math_entrypoint_object(totalorderf)
+add_math_entrypoint_object(totalorderl)
+add_math_entrypoint_object(totalorderf16)
+add_math_entrypoint_object(totalorderf128)
+add_math_entrypoint_object(totalorderbf16)
+
+add_math_entrypoint_object(totalordermag)
+add_math_entrypoint_object(totalordermagf)
+add_math_entrypoint_object(totalordermagl)
+add_math_entrypoint_object(totalordermagf16)
+add_math_entrypoint_object(totalordermagf128)
+add_math_entrypoint_object(totalordermagbf16)
+
+add_math_entrypoint_object(trunc)
+add_math_entrypoint_object(truncf)
+add_math_entrypoint_object(truncl)
+add_math_entrypoint_object(truncf16)
+add_math_entrypoint_object(truncf128)
+add_math_entrypoint_object(truncbf16)
+
+add_math_entrypoint_object(ufromfp)
+add_math_entrypoint_object(ufromfpf)
+add_math_entrypoint_object(ufromfpl)
+add_math_entrypoint_object(ufromfpf16)
+add_math_entrypoint_object(ufromfpf128)
+add_math_entrypoint_object(ufromfpbf16)
+
+add_math_entrypoint_object(ufromfpx)
+add_math_entrypoint_object(ufromfpxf)
+add_math_entrypoint_object(ufromfpxl)
+add_math_entrypoint_object(ufromfpxf16)
+add_math_entrypoint_object(ufromfpxf128)
+add_math_entrypoint_object(ufromfpxbf16)
+
+add_math_entrypoint_object(bf16add)
+add_math_entrypoint_object(bf16addf)
+add_math_entrypoint_object(bf16addl)
+add_math_entrypoint_object(bf16addf128)
+
+add_math_entrypoint_object(bf16div)
+add_math_entrypoint_object(bf16divf)
+add_math_entrypoint_object(bf16divl)
+add_math_entrypoint_object(bf16divf128)
+
+add_math_entrypoint_object(bf16fma)
+add_math_entrypoint_object(bf16fmaf)
+add_math_entrypoint_object(bf16fmal)
+add_math_entrypoint_object(bf16fmaf128)
+
+add_math_entrypoint_object(bf16mul)
+add_math_entrypoint_object(bf16mulf)
+add_math_entrypoint_object(bf16mull)
+add_math_entrypoint_object(bf16mulf128)
+
+add_math_entrypoint_object(bf16sub)
+add_math_entrypoint_object(bf16subf)
+add_math_entrypoint_object(bf16subl)
+add_math_entrypoint_object(bf16subf128)
diff --git a/libc/src/math/ffmal.h b/libc/src/math/ffmal.h
index 75fd40a0a92a2..1cbb61dcd2134 100644
--- a/libc/src/math/ffmal.h
+++ b/libc/src/math/ffmal.h
@@ -1,20 +1,20 @@
-//===-- Implementation header for ffmal -------------------------*- C++ -*-===//
-//
-// 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
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef LLVM_LIBC_SRC_MATH_FFMAL_H
-#define LLVM_LIBC_SRC_MATH_FFMAL_H
-
-#include "src/__support/macros/config.h"
-
-namespace LIBC_NAMESPACE_DECL {
-
-float ffmal(long double x, long double y, long double z);
-
-} // namespace LIBC_NAMESPACE_DECL
-
-#endif // LLVM_LIBC_SRC_MATH_FFMAL_H
+//===-- Implementation header for ffmal -------------------------*- C++ -*-===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_LIBC_SRC_MATH_FFMAL_H
+#define LLVM_LIBC_SRC_MATH_FFMAL_H
+
+#include "src/__support/macros/config.h"
+
+namespace LIBC_NAMESPACE_DECL {
+
+float ffmal(long double x, long double y, long double z);
+
+} // namespace LIBC_NAMESPACE_DECL
+
+#endif // LLVM_LIBC_SRC_MATH_FFMAL_H
diff --git a/libc/src/math/fmabf16.h b/libc/src/math/fmabf16.h
new file mode 100644
index 0000000000000..5ba0876894f9a
--- /dev/null
+++ b/libc/src/math/fmabf16.h
@@ -0,0 +1,21 @@
+//===-- Implementation header for fmabf16 -----------------------*- C++ -*-===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_LIBC_SRC_MATH_FMABF16_H
+#define LLVM_LIBC_SRC_MATH_FMABF16_H
+
+#include "src/__support/macros/config.h"
+#include "src/__support/macros/properties/types.h"
+
+namespace LIBC_NAMESPACE_DECL {
+
+bfloat16 fmabf16(bfloat16 x, bfloat16 y, bfloat16 z);
+
+} // namespace LIBC_NAMESPACE_DECL
+
+#endif // LLVM_LIBC_SRC_MATH_FMABF16_H
diff --git a/libc/src/math/generic/CMakeLists.txt b/libc/src/math/generic/CMakeLists.txt
index 96dc0e7ca4851..5768defa013ff 100644
--- a/libc/src/math/generic/CMakeLists.txt
+++ b/libc/src/math/generic/CMakeLists.txt
@@ -4545,6 +4545,20 @@ add_entrypoint_object(
     libc.src.__support.macros.properties.types
 )
 
+add_entrypoint_object(
+  fmabf16
+  SRCS
+    fmabf16.cpp
+  HDRS
+    ../fmabf16.h
+  DEPENDS
+    libc.src.__support.common
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.FPUtil.FMA
+    libc.src.__support.macros.config
+    libc.src.__support.macros.properties.types
+)
+
 add_entrypoint_object(
   fma
   SRCS
diff --git a/libc/src/math/generic/fmabf16.cpp b/libc/src/math/generic/fmabf16.cpp
new file mode 100644
index 0000000000000..233dbc9089f9c
--- /dev/null
+++ b/libc/src/math/generic/fmabf16.cpp
@@ -0,0 +1,21 @@
+//===-- Implementation of fmabf16 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 "src/math/fmabf16.h"
+#include "src/__support/common.h"
+#include "src/__support/FPUtil/FMA.h"
+#include "src/__support/FPUtil/bfloat16.h"
+#include "src/__support/macros/config.h"
+
+namespace LIBC_NAMESPACE_DECL {
+
+LLVM_LIBC_FUNCTION(bfloat16, fmabf16, (bfloat16 x, bfloat16 y, bfloat16 z)) {
+  return fputil::fma<bfloat16>(x, y, z);
+}
+
+} // namespace LIBC_NAMESPACE_DECL
diff --git a/libc/test/src/math/CMakeLists.txt b/libc/test/src/math/CMakeLists.txt
index ff5c511922171..e478b57c9b3c8 100644
--- a/libc/test/src/math/CMakeLists.txt
+++ b/libc/test/src/math/CMakeLists.txt
@@ -1,3466 +1,3482 @@
-add_custom_target(libc-math-unittests)
-
-add_fp_unittest(
-  cosf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    cosf_test.cpp
-  HDRS
-    sdcomp26094.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.cosf
-    libc.src.__support.CPP.array
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  cosf_float_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    cosf_float_test.cpp
-  DEPENDS
-    libc.src.__support.math.sincosf_utils
-    libc.src.__support.FPUtil.fp_bits
-  FLAGS
-    FMA_OPT__ONLY
-)
-
-add_fp_unittest(
-  cos_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    cos_test.cpp
-  DEPENDS
-    libc.src.math.cos
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  cosf16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    cosf16_test.cpp
-  DEPENDS
-    libc.src.math.cosf16
-)
-
-add_fp_unittest(
-  cospif_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    cospif_test.cpp
-  HDRS
-    sdcomp26094.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.cospif
-    libc.src.__support.CPP.array
-    libc.src.__support.FPUtil.fp_bits
-)
-
-
-add_fp_unittest(
-  cospif16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    cospif16_test.cpp
-  DEPENDS
-    libc.src.math.cospif16
-)
-
-add_fp_unittest(
-  daddl_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    daddl_test.cpp
-  HDRS
-    AddTest.h
-  DEPENDS
-    libc.src.math.daddl
-)
-
-add_fp_unittest(
-  sinf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    sinf_test.cpp
-  HDRS
-    sdcomp26094.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.sinf
-    libc.src.__support.CPP.array
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  sinf_float_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    sinf_float_test.cpp
-  DEPENDS
-    libc.src.__support.math.sincosf_utils
-    libc.src.__support.FPUtil.fp_bits
-  FLAGS
-    FMA_OPT__ONLY
-)
-
-add_fp_unittest(
-  sinf16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    sinf16_test.cpp
-  DEPENDS
-    libc.src.math.sinf16
-)
-
-add_fp_unittest(
-  sinpif_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    sinpif_test.cpp
-  HDRS
-    sdcomp26094.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.sinpif
-    libc.src.__support.CPP.array
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  sinpif16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    sinpif16_test.cpp
-  DEPENDS
-    libc.src.math.sinpif16
-)
-
-add_fp_unittest(
-  sin_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    sin_test.cpp
-  DEPENDS
-    libc.src.math.sin
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  sincosf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    sincosf_test.cpp
-  HDRS
-    sdcomp26094.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.sincosf
-    libc.src.__support.CPP.array
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  sincos_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    sincos_test.cpp
-  DEPENDS
-    libc.src.math.sincos
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  tanf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    tanf_test.cpp
-  HDRS
-    sdcomp26094.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.tanf
-    libc.src.__support.CPP.array
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  tanf16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    tanf16_test.cpp
-  DEPENDS
-    libc.src.math.tanf16
-)
-
-add_fp_unittest(
-  tanpif_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    tanpif_test.cpp
-  HDRS
-    sdcomp26094.h
-  DEPENDS
-    libc.src.math.tanpif
-    libc.src.__support.CPP.array
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  tanpif16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    tanpif16_test.cpp
-  DEPENDS
-    libc.src.math.tanpif16
-)
-
-add_fp_unittest(
-  fabs_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    fabs_test.cpp
-  HDRS
-    FAbsTest.h
-  DEPENDS
-    libc.src.math.fabs
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fabsf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    fabsf_test.cpp
-  HDRS
-    FAbsTest.h
-  DEPENDS
-    libc.src.math.fabsf
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fabsl_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    fabsl_test.cpp
-  HDRS
-    FAbsTest.h
-  DEPENDS
-    libc.src.math.fabsl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fadd_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    fadd_test.cpp
-  HDRS
-    AddTest.h
-  DEPENDS
-    libc.src.math.fadd
-    libc.src.__support.FPUtil.basic_operations
-)
-
-add_fp_unittest(
-  faddl_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    faddl_test.cpp
-  HDRS
-    AddTest.h
-  DEPENDS
-    libc.src.math.faddl
-)
-
-add_fp_unittest(
-  trunc_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    trunc_test.cpp
-  HDRS
-    TruncTest.h
-  DEPENDS
-    libc.src.math.trunc
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  truncf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    truncf_test.cpp
-  HDRS
-    TruncTest.h
-  DEPENDS
-    libc.src.math.truncf
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  truncl_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    truncl_test.cpp
-  HDRS
-    TruncTest.h
-  DEPENDS
-    libc.src.math.truncl
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  truncf16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    truncf16_test.cpp
-  HDRS
-    TruncTest.h
-  DEPENDS
-    libc.src.math.truncf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  ceil_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    ceil_test.cpp
-  HDRS
-    CeilTest.h
-  DEPENDS
-    libc.src.math.ceil
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  ceilf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    ceilf_test.cpp
-  HDRS
-    CeilTest.h
-  DEPENDS
-    libc.src.math.ceilf
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  ceill_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    ceill_test.cpp
-  HDRS
-    CeilTest.h
-  DEPENDS
-    libc.src.math.ceill
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  ceilf16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    ceilf16_test.cpp
-  HDRS
-    CeilTest.h
-  DEPENDS
-    libc.src.math.ceilf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  floor_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    floor_test.cpp
-  HDRS
-    FloorTest.h
-  DEPENDS
-    libc.src.math.floor
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  floorf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    floorf_test.cpp
-  HDRS
-    FloorTest.h
-  DEPENDS
-    libc.src.math.floorf
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  floorl_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    floorl_test.cpp
-  HDRS
-    FloorTest.h
-  DEPENDS
-    libc.src.math.floorl
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  floorf16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    floorf16_test.cpp
-  HDRS
-    FloorTest.h
-  DEPENDS
-    libc.src.math.floorf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  round_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    round_test.cpp
-  HDRS
-    RoundTest.h
-  DEPENDS
-    libc.src.math.round
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  roundf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    roundf_test.cpp
-  HDRS
-    RoundTest.h
-  DEPENDS
-    libc.src.math.roundf
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  roundl_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    roundl_test.cpp
-  HDRS
-    RoundTest.h
-  DEPENDS
-    libc.src.math.roundl
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  roundf16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    roundf16_test.cpp
-  HDRS
-    RoundTest.h
-  DEPENDS
-    libc.src.math.roundf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  roundeven_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    roundeven_test.cpp
-  HDRS
-  RoundEvenTest.h
-  DEPENDS
-    libc.src.math.roundeven
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  roundevenf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    roundevenf_test.cpp
-  HDRS
-  RoundEvenTest.h
-  DEPENDS
-    libc.src.math.roundevenf
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  roundevenl_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    roundevenl_test.cpp
-  HDRS
-  RoundEvenTest.h
-  DEPENDS
-    libc.src.math.roundevenl
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  roundevenf16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    roundevenf16_test.cpp
-  HDRS
-  RoundEvenTest.h
-  DEPENDS
-    libc.src.math.roundevenf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  lround_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    lround_test.cpp
-  HDRS
-    RoundToIntegerTest.h
-  DEPENDS
-    libc.hdr.fenv_macros
-    libc.src.errno.errno
-    libc.src.math.lround
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  lroundf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    lroundf_test.cpp
-  HDRS
-    RoundToIntegerTest.h
-  DEPENDS
-    libc.hdr.fenv_macros
-    libc.src.errno.errno
-    libc.src.math.lroundf
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  lroundl_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    lroundl_test.cpp
-  HDRS
-    RoundToIntegerTest.h
-  DEPENDS
-    libc.hdr.fenv_macros
-    libc.src.errno.errno
-    libc.src.math.lroundl
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  lroundf16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    lroundf16_test.cpp
-  HDRS
-    RoundToIntegerTest.h
-  DEPENDS
-    libc.hdr.fenv_macros
-    libc.src.errno.errno
-    libc.src.math.lroundf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  lroundbf16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    lroundbf16_test.cpp
-  HDRS
-    RoundToIntegerTest.h
-  DEPENDS
-    libc.hdr.fenv_macros
-    libc.src.errno.errno
-    libc.src.math.lroundbf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  llround_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    llround_test.cpp
-  HDRS
-    RoundToIntegerTest.h
-  DEPENDS
-    libc.hdr.fenv_macros
-    libc.src.errno.errno
-    libc.src.math.llround
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  llroundf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    llroundf_test.cpp
-  HDRS
-    RoundToIntegerTest.h
-  DEPENDS
-    libc.hdr.fenv_macros
-    libc.src.errno.errno
-    libc.src.math.llroundf
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  llroundl_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    llroundl_test.cpp
-  HDRS
-    RoundToIntegerTest.h
-  DEPENDS
-    libc.hdr.fenv_macros
-    libc.src.errno.errno
-    libc.src.math.llroundl
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  llroundf16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    llroundf16_test.cpp
-  HDRS
-    RoundToIntegerTest.h
-  DEPENDS
-    libc.hdr.fenv_macros
-    libc.src.errno.errno
-    libc.src.math.llroundf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  llroundbf16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    llroundbf16_test.cpp
-  HDRS
-    RoundToIntegerTest.h
-  DEPENDS
-    libc.hdr.fenv_macros
-    libc.src.errno.errno
-    libc.src.math.llroundbf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  nearbyint_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    nearbyint_test.cpp
-  HDRS
-    NearbyIntTest.h
-  DEPENDS
-    libc.src.math.nearbyint
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.CPP.array
-)
-
-add_fp_unittest(
-  nearbyintf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    nearbyintf_test.cpp
-  HDRS
-    NearbyIntTest.h
-  DEPENDS
-    libc.src.math.nearbyintf
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.CPP.array
-)
-
-add_fp_unittest(
-  nearbyintl_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    nearbyintl_test.cpp
-  HDRS
-    NearbyIntTest.h
-  DEPENDS
-    libc.src.math.nearbyintl
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.CPP.array
-)
-
-add_fp_unittest(
-  nearbyintf16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    nearbyintf16_test.cpp
-  HDRS
-    NearbyIntTest.h
-  DEPENDS
-    libc.src.math.nearbyintf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.CPP.array
-)
-
-add_fp_unittest(
-  nearbyintbf16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    nearbyintbf16_test.cpp
-  HDRS
-    NearbyIntTest.h
-  DEPENDS
-    libc.src.math.nearbyintbf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.CPP.array
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  rint_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    rint_test.cpp
-  HDRS
-    RIntTest.h
-  DEPENDS
-    libc.hdr.fenv_macros
-    libc.src.math.rint
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  rintf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    rintf_test.cpp
-  HDRS
-    RIntTest.h
-  DEPENDS
-    libc.hdr.fenv_macros
-    libc.src.math.rintf
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  rintl_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    rintl_test.cpp
-  HDRS
-    RIntTest.h
-  DEPENDS
-    libc.hdr.fenv_macros
-    libc.src.math.rintl
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  rintf16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    rintf16_test.cpp
-  HDRS
-    RIntTest.h
-  DEPENDS
-    libc.hdr.fenv_macros
-    libc.src.math.rintf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  rintbf16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    rintbf16_test.cpp
-  HDRS
-    RIntTest.h
-  DEPENDS
-    libc.hdr.fenv_macros
-    libc.src.math.rintbf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  lrint_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    lrint_test.cpp
-  HDRS
-    RoundToIntegerTest.h
-  DEPENDS
-    libc.src.math.lrint
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  lrintf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    lrintf_test.cpp
-  HDRS
-    RoundToIntegerTest.h
-  DEPENDS
-    libc.src.math.lrintf
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  lrintl_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    lrintl_test.cpp
-  HDRS
-    RoundToIntegerTest.h
-  DEPENDS
-    libc.src.math.lrintl
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  lrintf16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    lrintf16_test.cpp
-  HDRS
-    RoundToIntegerTest.h
-  DEPENDS
-    libc.src.math.lrintf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  lrintbf16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    lrintbf16_test.cpp
-  HDRS
-    RoundToIntegerTest.h
-  DEPENDS
-    libc.src.math.lrintbf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  llrint_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    llrint_test.cpp
-  HDRS
-    RoundToIntegerTest.h
-  DEPENDS
-    libc.src.math.llrint
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  llrintf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    llrintf_test.cpp
-  HDRS
-    RoundToIntegerTest.h
-  DEPENDS
-    libc.src.math.llrintf
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  llrintl_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    llrintl_test.cpp
-  HDRS
-    RoundToIntegerTest.h
-  DEPENDS
-    libc.src.math.llrintl
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  llrintf16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    llrintf16_test.cpp
-  HDRS
-    RoundToIntegerTest.h
-  DEPENDS
-    libc.src.math.llrintf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  llrintbf16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    llrintbf16_test.cpp
-  HDRS
-    RoundToIntegerTest.h
-  DEPENDS
-    libc.src.math.llrintbf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  exp_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    exp_test.cpp
-  DEPENDS
-    libc.src.math.exp
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  expf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    expf_test.cpp
-  DEPENDS
-    libc.src.errno.errno
-    libc.src.math.expf
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  expf16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    expf16_test.cpp
-  DEPENDS
-    libc.src.math.expf16
-)
-
-add_fp_unittest(
-  exp2_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    exp2_test.cpp
-  DEPENDS
-    libc.src.math.exp2
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  exp2f_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    exp2f_test.cpp
-  DEPENDS
-    libc.src.errno.errno
-    libc.src.math.exp2f
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  exp2f16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    exp2f16_test.cpp
-  DEPENDS
-    libc.src.math.exp2f16
-)
-
-add_fp_unittest(
-  exp2m1f_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    exp2m1f_test.cpp
-  DEPENDS
-    libc.src.errno.errno
-    libc.src.math.exp2m1f
-    libc.src.__support.CPP.array
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  exp2m1f16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    exp2m1f16_test.cpp
-  DEPENDS
-    libc.src.math.exp2m1f16
-)
-
-add_fp_unittest(
-  exp10_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    exp10_test.cpp
-  DEPENDS
-    libc.src.math.exp10
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  exp10f_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    exp10f_test.cpp
-  DEPENDS
-    libc.src.errno.errno
-    libc.src.math.exp10f
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  exp10f16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    exp10f16_test.cpp
-  DEPENDS
-    libc.src.math.exp10f16
-)
-
-add_fp_unittest(
-  exp10m1f16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    exp10m1f16_test.cpp
-  DEPENDS
-    libc.src.math.exp10m1f16
-)
-
-add_fp_unittest(
-  exp10m1f_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    exp10m1f_test.cpp
-  DEPENDS
-    libc.hdr.math_macros
-    libc.src.errno.errno
-    libc.src.math.exp10m1f
-    libc.src.__support.CPP.array
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  copysign_test
-  SUITE
-    libc-math-unittests
-  SRCS
-    copysign_test.cpp
-  HDRS
-    CopySignTest.h
-  DEPENDS
-    libc.src.math.copysign
-    libc.src.__support.FPUtil.fp_bits
-  # FIXME: Currently fails on the GPU build.
-  UNIT_TEST_ONLY
-)
-
-add_fp_unittest(
-  copysignf_test
-  SUITE
-    libc-math-unittests
-  SRCS
-    copysignf_test.cpp
-  HDRS
-    CopySignTest.h
-  DEPENDS
-    libc.src.math.copysignf
-    libc.src.__support.FPUtil.fp_bits
-  # FIXME: Currently fails on the GPU build.
-  UNIT_TEST_ONLY
-)
-
-add_fp_unittest(
-  copysignl_test
-  SUITE
-    libc-math-unittests
-  SRCS
-    copysignl_test.cpp
-  HDRS
-    CopySignTest.h
-  DEPENDS
-    libc.src.math.copysignl
-    libc.src.__support.FPUtil.fp_bits
-  # FIXME: Currently fails on the GPU build.
-  UNIT_TEST_ONLY
-)
-
-add_fp_unittest(
-  frexp_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    frexp_test.cpp
-  HDRS
-    FrexpTest.h
-  DEPENDS
-    libc.src.math.frexp
-    libc.src.__support.FPUtil.basic_operations
-)
-
-add_fp_unittest(
-  frexpf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    frexpf_test.cpp
-  HDRS
-    FrexpTest.h
-  DEPENDS
-    libc.src.math.frexpf
-    libc.src.__support.FPUtil.basic_operations
-)
-
-add_fp_unittest(
-  frexpl_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    frexpl_test.cpp
-  HDRS
-    FrexpTest.h
-  DEPENDS
-    libc.src.math.frexpl
-    libc.src.__support.FPUtil.basic_operations
-)
-
-add_fp_unittest(
-  ilogb_test
-  SUITE
-    libc-math-unittests
-  SRCS
-    ilogb_test.cpp
-  HDRS
-    ILogbTest.h
-  DEPENDS
-    libc.src.math.ilogb
-    libc.src.__support.CPP.limits
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.manipulation_functions
-)
-
-add_fp_unittest(
-  ilogbf_test
-  SUITE
-    libc-math-unittests
-  SRCS
-    ilogbf_test.cpp
-  HDRS
-    ILogbTest.h
-  DEPENDS
-    libc.src.math.ilogbf
-    libc.src.__support.CPP.limits
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.manipulation_functions
-)
-
-add_fp_unittest(
-  ilogbl_test
-  SUITE
-    libc-math-unittests
-  SRCS
-    ilogbl_test.cpp
-  HDRS
-    ILogbTest.h
-  DEPENDS
-    libc.src.math.ilogbl
-    libc.src.__support.CPP.limits
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.manipulation_functions
-)
-
-add_fp_unittest(
-  ldexp_test
-  SUITE
-    libc-math-unittests
-  SRCS
-    ldexp_test.cpp
-  HDRS
-    LdExpTest.h
-  DEPENDS
-    libc.src.math.ldexp
-    libc.src.__support.CPP.limits
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.normal_float
-)
-
-add_fp_unittest(
-  ldexpf_test
-  SUITE
-    libc-math-unittests
-  SRCS
-    ldexpf_test.cpp
-  HDRS
-    LdExpTest.h
-  DEPENDS
-    libc.src.math.ldexpf
-    libc.src.__support.CPP.limits
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.normal_float
-)
-
-add_fp_unittest(
-  ldexpl_test
-  SUITE
-    libc-math-unittests
-  SRCS
-    ldexpl_test.cpp
-  HDRS
-    LdExpTest.h
-  DEPENDS
-    libc.src.math.ldexpl
-    libc.src.__support.CPP.limits
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.normal_float
-)
-
-add_fp_unittest(
-  logb_test
-  SUITE
-    libc-math-unittests
-  SRCS
-    logb_test.cpp
-  DEPENDS
-    libc.src.math.logb
-    libc.src.__support.FPUtil.manipulation_functions
-)
-
-add_fp_unittest(
-  logbf_test
-  SUITE
-    libc-math-unittests
-  SRCS
-    logbf_test.cpp
-  DEPENDS
-    libc.src.math.logbf
-    libc.src.__support.FPUtil.manipulation_functions
-)
-
-add_fp_unittest(
-  logbl_test
-  SUITE
-    libc-math-unittests
-  SRCS
-    logbl_test.cpp
-  HDRS
-    LogbTest.h
-  DEPENDS
-    libc.src.math.logbl
-    libc.src.__support.FPUtil.manipulation_functions
-)
-
-add_fp_unittest(
-  modf_test
-  SUITE
-    libc-math-unittests
-  SRCS
-    modf_test.cpp
-  HDRS
-    ModfTest.h
-  DEPENDS
-    libc.src.math.modf
-    libc.src.__support.FPUtil.basic_operations
-    libc.src.__support.FPUtil.nearest_integer_operations
-  # Requires C++ limits.
-  UNIT_TEST_ONLY
-)
-
-add_fp_unittest(
-  modff_test
-  SUITE
-    libc-math-unittests
-  SRCS
-    modff_test.cpp
-  HDRS
-    ModfTest.h
-  DEPENDS
-    libc.src.math.modff
-    libc.src.__support.FPUtil.basic_operations
-    libc.src.__support.FPUtil.nearest_integer_operations
-  # Requires C++ limits.
-  UNIT_TEST_ONLY
-)
-
-add_fp_unittest(
-  modfl_test
-  SUITE
-    libc-math-unittests
-  SRCS
-    modfl_test.cpp
-  HDRS
-    ModfTest.h
-  DEPENDS
-    libc.src.math.modfl
-    libc.src.__support.FPUtil.basic_operations
-    libc.src.__support.FPUtil.nearest_integer_operations
-)
-
-add_fp_unittest(
-  fdimf_test
-  SUITE
-    libc-math-unittests
-  SRCS
-    fdimf_test.cpp
-  HDRS
-    FDimTest.h
-  DEPENDS
-    libc.src.math.fdimf
-    libc.src.__support.FPUtil.basic_operations
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fdim_test
-  SUITE
-    libc-math-unittests
-  SRCS
-    fdim_test.cpp
-  HDRS
-    FDimTest.h
-  DEPENDS
-    libc.src.math.fdim
-    libc.src.__support.FPUtil.basic_operations
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fdiml_test
-  SUITE
-    libc-math-unittests
-  SRCS
-    fdiml_test.cpp
-  HDRS
-    FDimTest.h
-  DEPENDS
-    libc.src.math.fdiml
-    libc.src.__support.FPUtil.basic_operations
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fminf_test
-  SUITE
-    libc-math-unittests
-  SRCS
-    fminf_test.cpp
-  HDRS
-    FMinTest.h
-  DEPENDS
-    libc.src.math.fminf
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fmin_test
-  SUITE
-    libc-math-unittests
-  SRCS
-    fmin_test.cpp
-  HDRS
-    FMinTest.h
-  DEPENDS
-    libc.src.math.fmin
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fminl_test
-  SUITE
-    libc-math-unittests
-  SRCS
-    fminl_test.cpp
-  HDRS
-    FMinTest.h
-  DEPENDS
-    libc.src.math.fminl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fmaxf_test
-  SUITE
-    libc-math-unittests
-  SRCS
-    fmaxf_test.cpp
-  HDRS
-    FMaxTest.h
-  DEPENDS
-    libc.src.math.fmaxf
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fmax_test
-  SUITE
-    libc-math-unittests
-  SRCS
-    fmax_test.cpp
-  HDRS
-    FMaxTest.h
-  DEPENDS
-    libc.src.math.fmax
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fmaxl_test
-  SUITE
-    libc-math-unittests
-  SRCS
-    fmaxl_test.cpp
-  HDRS
-    FMaxTest.h
-  DEPENDS
-    libc.src.math.fmaxl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  sqrtf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    sqrtf_test.cpp
-  HDRS
-    SqrtTest.h
-  DEPENDS
-    libc.src.math.sqrtf
-)
-
-add_fp_unittest(
-  sqrt_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    sqrt_test.cpp
-  HDRS
-    SqrtTest.h
-  DEPENDS
-    libc.src.math.sqrt
-)
-
-add_fp_unittest(
-  sqrtl_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    sqrtl_test.cpp
-  HDRS
-    SqrtTest.h
-  DEPENDS
-    libc.src.math.sqrtl
-)
-
-add_fp_unittest(
-  rsqrtf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    rsqrtf_test.cpp
-  DEPENDS
-    libc.src.math.rsqrtf
-)
-
-add_fp_unittest(
-  rsqrtf16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    rsqrtf16_test.cpp
-  DEPENDS
-    libc.src.math.rsqrtf16
-)
-
-add_fp_unittest(
-  sqrtf16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    sqrtf16_test.cpp
-  DEPENDS
-    libc.src.math.sqrtf16
-)
-
-add_fp_unittest(
-  sqrtf128_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    sqrtf128_test.cpp
-  HDRS
-    SqrtTest.h
-  DEPENDS
-    libc.src.math.sqrtf128
-)
-
-add_fp_unittest(
-  sqrtbf16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    sqrtbf16_test.cpp
-  DEPENDS
-    libc.src.math.sqrtbf16
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  generic_sqrtf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    generic_sqrtf_test.cpp
-  HDRS
-    SqrtTest.h
-  DEPENDS
-    libc.src.math.sqrtf
-    libc.src.__support.FPUtil.generic.sqrt
-  COMPILE_OPTIONS
-    ${libc_opt_high_flag}
-)
-
-add_fp_unittest(
-  generic_sqrt_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    generic_sqrt_test.cpp
-  HDRS
-    SqrtTest.h
-  DEPENDS
-    libc.src.math.sqrt
-    libc.src.__support.FPUtil.generic.sqrt
-  COMPILE_OPTIONS
-    ${libc_opt_high_flag}
-)
-
-add_fp_unittest(
-  generic_sqrtl_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    generic_sqrtl_test.cpp
-  HDRS
-    SqrtTest.h
-  DEPENDS
-    libc.src.math.sqrtl
-    libc.src.__support.FPUtil.generic.sqrt
-  COMPILE_OPTIONS
-    ${libc_opt_high_flag}
-)
-
-add_fp_unittest(
-  remquof_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    remquof_test.cpp
-  HDRS
-    RemQuoTest.h
-  DEPENDS
-    libc.src.math.remquof
-    libc.src.__support.FPUtil.basic_operations
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  remquo_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    remquo_test.cpp
-  HDRS
-    RemQuoTest.h
-  DEPENDS
-    libc.src.math.remquo
-    libc.src.__support.FPUtil.basic_operations
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  remquol_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    remquol_test.cpp
-  HDRS
-    RemQuoTest.h
-  DEPENDS
-    libc.src.math.remquol
-    libc.src.__support.FPUtil.basic_operations
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  hypotf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    hypotf_test.cpp
-  DEPENDS
-    libc.src.math.hypotf
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  hypot_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    hypot_test.cpp
-  DEPENDS
-    libc.src.math.hypot
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  hypotf16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    hypotf16_test.cpp
-  DEPENDS
-    libc.src.math.hypotf16
-)
-
-add_fp_unittest(
-  nextafter_test
-  SUITE
-    libc-math-unittests
-  SRCS
-    nextafter_test.cpp
-  HDRS
-    NextAfterTest.h
-  DEPENDS
-    libc.src.math.nextafter
-    libc.src.__support.FPUtil.basic_operations
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  nextafterf_test
-  SUITE
-    libc-math-unittests
-  SRCS
-    nextafterf_test.cpp
-  HDRS
-    NextAfterTest.h
-  DEPENDS
-    libc.src.math.nextafterf
-    libc.src.__support.FPUtil.basic_operations
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  nextafterl_test
-  SUITE
-    libc-math-unittests
-  SRCS
-    nextafterl_test.cpp
-  HDRS
-    NextAfterTest.h
-  DEPENDS
-    libc.src.math.nextafterl
-    libc.src.__support.FPUtil.basic_operations
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  nextafterf128_test
-  SUITE
-    libc-math-unittests
-  SRCS
-    nextafterf128_test.cpp
-  HDRS
-    NextAfterTest.h
-  DEPENDS
-    libc.src.math.nextafterf128
-    libc.src.__support.FPUtil.basic_operations
-    libc.src.__support.FPUtil.fp_bits
-)
-
-# TODO(lntue): The current implementation of fputil::general::fma<float> is only
-# correctly rounded for the default rounding mode round-to-nearest tie-to-even.
-add_fp_unittest(
-  fmaf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    fmaf_test.cpp
-  HDRS
-    FmaTest.h
-  DEPENDS
-    libc.src.math.fmaf
-    libc.src.stdlib.rand
-    libc.src.stdlib.srand
-  FLAGS
-    FMA_OPT__ONLY
-)
-
-add_fp_unittest(
-  fmaf16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    fmaf16_test.cpp
-  HDRS
-    FmaTest.h
-  DEPENDS
-    libc.src.math.fmaf16
-    libc.src.stdlib.rand
-    libc.src.stdlib.srand
-)
-
-add_fp_unittest(
-  fma_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    fma_test.cpp
-  HDRS
-    FmaTest.h
-  DEPENDS
-    libc.src.math.fma
-    libc.src.stdlib.rand
-    libc.src.stdlib.srand
-)
-
-add_fp_unittest(
-  tan_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    tan_test.cpp
-  DEPENDS
-    libc.src.math.tan
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  expm1_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    expm1_test.cpp
-  DEPENDS
-    libc.src.math.expm1
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  expm1f_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    expm1f_test.cpp
-  DEPENDS
-    libc.src.errno.errno
-    libc.src.math.expm1f
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  expm1f16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    expm1f16_test.cpp
-  DEPENDS
-    libc.src.math.expm1f16
-)
-
-add_fp_unittest(
- log_test
- NEED_MPFR
- SUITE
-   libc-math-unittests
- SRCS
-   log_test.cpp
- DEPENDS
-   libc.src.math.log
-   libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  logf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    logf_test.cpp
-  DEPENDS
-    libc.src.math.logf
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  logf16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    logf16_test.cpp
-  DEPENDS
-    libc.src.math.logf16
-)
-
-add_fp_unittest(
-  log_bf16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    log_bf16_test.cpp
-  DEPENDS
-    libc.src.math.log_bf16
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-log2_test
- NEED_MPFR
- SUITE
-   libc-math-unittests
- SRCS
-   log2_test.cpp
- DEPENDS
-   libc.src.math.log2
-   libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  log2f_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    log2f_test.cpp
-  DEPENDS
-    libc.src.errno.errno
-    libc.src.math.log2f
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  log2f16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    log2f16_test.cpp
-  DEPENDS
-    libc.src.math.log2f16
-)
-
-add_fp_unittest(
- log10_test
- NEED_MPFR
- SUITE
-   libc-math-unittests
- SRCS
-   log10_test.cpp
- DEPENDS
-   libc.src.math.log10
-   libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  log10f_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    log10f_test.cpp
-  DEPENDS
-    libc.src.math.log10f
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  log10f16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    log10f16_test.cpp
-  DEPENDS
-    libc.src.math.log10f16
-)
-
-add_fp_unittest(
-log1p_test
- NEED_MPFR
- SUITE
-   libc-math-unittests
- SRCS
-   log1p_test.cpp
- DEPENDS
-   libc.src.math.log1p
-   libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  log1pf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    log1pf_test.cpp
-  DEPENDS
-    libc.src.math.log1pf
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fmodf_test
-  SUITE
-    libc-math-unittests
-  SRCS
-    fmodf_test.cpp
-  HDRS
-    FModTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.fmodf
-    libc.src.__support.FPUtil.basic_operations
-    libc.src.__support.FPUtil.nearest_integer_operations
-  # FIXME: Currently fails on the GPU build.
-  UNIT_TEST_ONLY
-)
-
-add_fp_unittest(
-  fmod_test
-  SUITE
-    libc-math-unittests
-  SRCS
-    fmod_test.cpp
-  HDRS
-    FModTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.fmod
-    libc.src.__support.FPUtil.basic_operations
-    libc.src.__support.FPUtil.nearest_integer_operations
-  # FIXME: Currently fails on the GPU build.
-  UNIT_TEST_ONLY
-)
-
-add_fp_unittest(
-  explogxf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  HDRS
-    in_float_range_test_helper.h
-  SRCS
-    explogxf_test.cpp
-  DEPENDS
-    libc.src.math.generic.explogxf
-    libc.src.math.fabs
-    libc.src.math.fabsf
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  coshf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    coshf_test.cpp
-  HDRS
-    sdcomp26094.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.coshf
-    libc.src.__support.CPP.array
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  coshf16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    coshf16_test.cpp
-  DEPENDS
-    libc.src.math.coshf16
-)
-
-add_fp_unittest(
-  sinhf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    sinhf_test.cpp
-  HDRS
-    sdcomp26094.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.sinhf
-    libc.src.__support.CPP.array
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  sinhf16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    sinhf16_test.cpp
-  DEPENDS
-    libc.src.math.sinhf16
-)
-
-add_fp_unittest(
-  tanhf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    tanhf_test.cpp
-  DEPENDS
-    libc.src.math.tanhf
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  tanhf16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    tanhf16_test.cpp
-  DEPENDS
-    libc.src.math.tanhf16
-)
-
-add_fp_unittest(
-  atanhf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    atanhf_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.atanhf
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  atanhf16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    atanhf16_test.cpp
-  DEPENDS
-    libc.src.math.atanhf16
-)
-
-add_fp_unittest(
-  atanpif16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    atanpif16_test.cpp
-  DEPENDS
-    libc.src.math.atanpif16
-)
-
-add_fp_unittest(
-  fmul_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    fmul_test.cpp
-  HDRS
-    MulTest.h
-  DEPENDS
-    libc.src.math.fmul
-    libc.src.stdlib.rand
-    libc.src.stdlib.srand
-)
-
-add_fp_unittest(
-  fmull_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    fmull_test.cpp
-  HDRS
-    MulTest.h
-  DEPENDS
-    libc.src.math.fmull
-    libc.src.stdlib.rand
-    libc.src.stdlib.srand
-)
-
-add_fp_unittest(
-  asinhf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    asinhf_test.cpp
-  DEPENDS
-    libc.src.math.asinhf
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  asinhf16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    asinhf16_test.cpp
-  DEPENDS
-    libc.src.math.asinhf16
-)
-
-add_fp_unittest(
-  acoshf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    acoshf_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.acoshf
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  acoshf16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    acoshf16_test.cpp
-  DEPENDS
-    libc.src.math.acoshf16
-)
-
-add_fp_unittest(
-  asinf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    asinf_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.asinf
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  asin_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    asin_test.cpp
-  DEPENDS
-    libc.src.math.asin
-)
-
-add_fp_unittest(
-  asinf16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    asinf16_test.cpp
-  DEPENDS
-    libc.src.math.asinf16  
-)
-
-add_fp_unittest(
-  asinpif16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    asinpif16_test.cpp
-  DEPENDS
-    libc.src.math.asinpif16
-)
-
-add_fp_unittest(
-  acosf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    acosf_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.acosf
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  acos_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    acos_test.cpp
-  DEPENDS
-    libc.src.math.acos
-)
-
-add_fp_unittest(
-  acosf16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    acosf16_test.cpp
-  DEPENDS
-    libc.src.math.acosf16  
-)
-
-add_fp_unittest(
-  acospif16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    acospif16_test.cpp
-  DEPENDS
-    libc.src.math.acospif16  
-)
-
-add_fp_unittest(
-  atanf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    atanf_test.cpp
-  DEPENDS
-    libc.src.math.atanf
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  atan_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    atan_test.cpp
-  DEPENDS
-    libc.src.math.atan
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  atanf16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    atanf16_test.cpp
-  DEPENDS
-    libc.src.math.atanf16
-)
-
-add_fp_unittest(
-  scalbn_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    scalbn_test.cpp
-  HDRS
-    ScalbnTest.h
-  DEPENDS
-    libc.src.math.scalbn
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.normal_float
-)
-
-add_fp_unittest(
-  scalbnf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    scalbnf_test.cpp
-  HDRS
-    ScalbnTest.h
-  DEPENDS
-    libc.src.math.scalbnf
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.normal_float
-)
-
-add_fp_unittest(
-  scalbnl_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    scalbnl_test.cpp
-  HDRS
-    ScalbnTest.h
-  DEPENDS
-    libc.src.math.scalbnl
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.normal_float
-)
-
-add_fp_unittest(
-  scalbnf128_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    scalbnf128_test.cpp
-  HDRS
-    ScalbnTest.h
-  DEPENDS
-    libc.src.math.scalbnf128
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.normal_float
-)
-
-add_fp_unittest(
-  erff_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    erff_test.cpp
-  DEPENDS
-    libc.src.math.erff
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  pow_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    pow_test.cpp
-  DEPENDS
-    libc.src.math.pow
-)
-
-add_fp_unittest(
-  powf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    powf_test.cpp
-  DEPENDS
-    libc.src.math.powf
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  atan2f_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    atan2f_test.cpp
-  DEPENDS
-    libc.src.math.atan2f
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  atan2_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    atan2_test.cpp
-  DEPENDS
-    libc.src.math.atan2
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  atan2f128_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    atan2f128_test.cpp
-  DEPENDS
-    libc.src.math.atan2f128
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  f16add_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    f16add_test.cpp
-  HDRS
-    AddTest.h
-  DEPENDS
-    libc.src.math.f16add
-)
-
-add_fp_unittest(
-  f16addf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    f16addf_test.cpp
-  HDRS
-    AddTest.h
-  DEPENDS
-    libc.src.math.f16addf
-)
-
-add_fp_unittest(
-  f16addl_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    f16addl_test.cpp
-  HDRS
-    AddTest.h
-  DEPENDS
-    libc.src.math.f16addl
-)
-
-add_fp_unittest(
-  f16sub_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    f16sub_test.cpp
-  HDRS
-    SubTest.h
-  DEPENDS
-    libc.src.math.f16sub
-)
-
-add_fp_unittest(
-  f16subf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    f16subf_test.cpp
-  HDRS
-    SubTest.h
-  DEPENDS
-    libc.src.math.f16subf
-)
-
-add_fp_unittest(
-  f16subl_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    f16subl_test.cpp
-  HDRS
-    SubTest.h
-  DEPENDS
-    libc.src.math.f16subl
-)
-
-add_fp_unittest(
-  f16div_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    f16div_test.cpp
-  HDRS
-    DivTest.h
-  DEPENDS
-    libc.src.math.f16div
-)
-
-add_fp_unittest(
-  f16divf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    f16divf_test.cpp
-  HDRS
-    DivTest.h
-  DEPENDS
-    libc.src.math.f16divf
-)
-
-add_fp_unittest(
-  f16divl_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    f16divl_test.cpp
-  HDRS
-    DivTest.h
-  DEPENDS
-    libc.src.math.f16divl
-)
-
-add_fp_unittest(
-  f16fma_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    f16fma_test.cpp
-  HDRS
-    FmaTest.h
-  DEPENDS
-    libc.src.math.f16fma
-    libc.src.stdlib.rand
-    libc.src.stdlib.srand
-)
-
-add_fp_unittest(
-  f16fmaf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    f16fmaf_test.cpp
-  HDRS
-    FmaTest.h
-  DEPENDS
-    libc.src.math.f16fmaf
-    libc.src.stdlib.rand
-    libc.src.stdlib.srand
-)
-
-add_fp_unittest(
-  f16fmal_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    f16fmal_test.cpp
-  HDRS
-    FmaTest.h
-  DEPENDS
-    libc.src.math.f16fmal
-    libc.src.stdlib.rand
-    libc.src.stdlib.srand
-)
-
-add_fp_unittest(
-  f16sqrt_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    f16sqrt_test.cpp
-  HDRS
-    SqrtTest.h
-  DEPENDS
-    libc.src.math.f16sqrt
-)
-
-add_fp_unittest(
-  f16sqrtf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    f16sqrtf_test.cpp
-  HDRS
-    SqrtTest.h
-  DEPENDS
-    libc.src.math.f16sqrtf
-)
-
-add_fp_unittest(
-  f16sqrtl_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    f16sqrtl_test.cpp
-  HDRS
-    SqrtTest.h
-  DEPENDS
-    libc.src.math.f16sqrtl
-)
-
-add_fp_unittest(
-  fsqrt_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    fsqrt_test.cpp
-  HDRS
-    SqrtTest.h
-  DEPENDS
-    libc.src.math.fsqrt
-)
-
-add_fp_unittest(
-  fsqrtl_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    fsqrtl_test.cpp
-  HDRS
-    SqrtTest.h
-  DEPENDS
-    libc.src.math.fsqrtl
-)
-
-add_fp_unittest(
-  fsub_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    fsub_test.cpp
-  HDRS
-    SubTest.h
-  DEPENDS
-    libc.src.math.fsub
-)
-
-add_fp_unittest(
-  fsubl_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    fsubl_test.cpp
-  HDRS
-    SubTest.h
-  DEPENDS
-    libc.src.math.fsubl
-)
-
-add_fp_unittest(
-  dsqrtl_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    dsqrtl_test.cpp
-  HDRS
-    SqrtTest.h
-  DEPENDS
-    libc.src.math.dsqrtl
-)
-
-add_fp_unittest(
-  cbrtf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    cbrtf_test.cpp
-  DEPENDS
-    libc.src.math.cbrtf
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  cbrt_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    cbrt_test.cpp
-  DEPENDS
-    libc.src.math.cbrt
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  dmull_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    dmull_test.cpp
-  HDRS
-    MulTest.h
-  DEPENDS
-    libc.src.math.dmull
-    libc.src.stdlib.rand
-    libc.src.stdlib.srand
-)
-
-add_fp_unittest(
-  f16mul_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    f16mul_test.cpp
-  HDRS
-    MulTest.h
-  DEPENDS
-    libc.src.math.f16mul
-    libc.src.stdlib.rand
-    libc.src.stdlib.srand
-)
-
-add_fp_unittest(
-  f16mulf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    f16mulf_test.cpp
-  HDRS
-    MulTest.h
-  DEPENDS
-    libc.src.math.f16mulf
-    libc.src.stdlib.rand
-    libc.src.stdlib.srand
-)
-
-add_fp_unittest(
-  f16mull_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    f16mull_test.cpp
-  HDRS
-    MulTest.h
-  DEPENDS
-    libc.src.math.f16mull
-    libc.src.stdlib.rand
-    libc.src.stdlib.srand
-)
-
-add_fp_unittest(
-  ddivl_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    ddivl_test.cpp
-  HDRS
-    DivTest.h
-  DEPENDS
-    libc.src.math.ddivl
-)
-
-add_fp_unittest(
-  dfmal_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    dfmal_test.cpp
-  HDRS
-    FmaTest.h
-  DEPENDS
-    libc.src.math.dfmal
-    libc.src.stdlib.rand
-    libc.src.stdlib.srand
-)
-
-add_fp_unittest(
-  dsubl_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    dsubl_test.cpp
-  HDRS
-    SubTest.h
-  DEPENDS
-    libc.src.math.dsubl
-)
-
-add_fp_unittest(
-  fdiv_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    fdiv_test.cpp
-  HDRS
-    DivTest.h
-  DEPENDS
-    libc.src.math.fdiv
-)
-
-add_fp_unittest(
-  fdivl_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    fdivl_test.cpp
-  HDRS
-    DivTest.h
-  DEPENDS
-    libc.src.math.fdivl
-)
-
-add_fp_unittest(
-  ffma_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    ffma_test.cpp
-  HDRS
-    FmaTest.h
-  DEPENDS
-    libc.src.math.ffma
-    libc.src.stdlib.rand
-    libc.src.stdlib.srand
-)
-
-add_fp_unittest(
-  ffmal_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    ffmal_test.cpp
-  HDRS
-    FmaTest.h
-  DEPENDS
-    libc.src.math.ffmal
-    libc.src.stdlib.rand
-    libc.src.stdlib.srand
-)
-
-add_fp_unittest(
-  add_same_type_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    add_same_type_test.cpp
-  HDRS
-    AddTest.h
-  DEPENDS
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.generic.add_sub
-    libc.src.__support.macros.properties.types
-)
-
-add_fp_unittest(
-  sub_same_type_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    sub_same_type_test.cpp
-  HDRS
-    SubTest.h
-  DEPENDS
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.generic.add_sub
-    libc.src.__support.macros.properties.types
-)
-
-add_fp_unittest(
-  bf16add_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    bf16add_test.cpp
-  HDRS
-    AddTest.h
-  DEPENDS
-    libc.src.math.bf16add
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  bf16addf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    bf16addf_test.cpp
-  HDRS
-    AddTest.h
-  DEPENDS
-    libc.src.math.bf16addf
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  bf16addl_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    bf16addl_test.cpp
-  HDRS
-    AddTest.h
-  DEPENDS
-    libc.src.math.bf16addl
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  bf16addf128_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    bf16addf128_test.cpp
-  HDRS
-    AddTest.h
-  DEPENDS
-    libc.src.math.bf16addf128
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  bf16div_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    bf16div_test.cpp
-  HDRS
-    DivTest.h
-  DEPENDS
-    libc.src.math.bf16div
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  bf16divf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    bf16divf_test.cpp
-  HDRS
-    DivTest.h
-  DEPENDS
-    libc.src.math.bf16divf
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  bf16divl_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    bf16divl_test.cpp
-  HDRS
-    DivTest.h
-  DEPENDS
-    libc.src.math.bf16divl
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  bf16divf128_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    bf16divf128_test.cpp
-  HDRS
-    DivTest.h
-  DEPENDS
-    libc.src.math.bf16divf128
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  bf16fma_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    bf16fma_test.cpp
-  HDRS
-    FmaTest.h
-  DEPENDS
-    libc.src.math.bf16fma
-    libc.src.stdlib.rand
-    libc.src.stdlib.srand
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  bf16fmaf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    bf16fmaf_test.cpp
-  HDRS
-    FmaTest.h
-  DEPENDS
-    libc.src.math.bf16fmaf
-    libc.src.stdlib.rand
-    libc.src.stdlib.srand
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  bf16fmal_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    bf16fmal_test.cpp
-  HDRS
-    FmaTest.h
-  DEPENDS
-    libc.src.math.bf16fmal
-    libc.src.stdlib.rand
-    libc.src.stdlib.srand
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  bf16fmaf128_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    bf16fmaf128_test.cpp
-  HDRS
-    FmaTest.h
-  DEPENDS
-    libc.src.math.bf16fmaf128
-    libc.src.stdlib.rand
-    libc.src.stdlib.srand
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  bf16mul_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    bf16mul_test.cpp
-  HDRS
-    MulTest.h
-  DEPENDS
-    libc.src.math.bf16mul
-    libc.src.stdlib.rand
-    libc.src.stdlib.srand
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  bf16mulf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    bf16mulf_test.cpp
-  HDRS
-    MulTest.h
-  DEPENDS
-    libc.src.math.bf16mulf
-    libc.src.stdlib.rand
-    libc.src.stdlib.srand
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  bf16mull_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    bf16mull_test.cpp
-  HDRS
-    MulTest.h
-  DEPENDS
-    libc.src.math.bf16mull
-    libc.src.stdlib.rand
-    libc.src.stdlib.srand
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  bf16mulf128_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    bf16mulf128_test.cpp
-  HDRS
-    MulTest.h
-  DEPENDS
-    libc.src.math.bf16mulf128
-    libc.src.stdlib.rand
-    libc.src.stdlib.srand
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  bf16sub_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    bf16sub_test.cpp
-  HDRS
-    SubTest.h
-  DEPENDS
-    libc.src.math.bf16sub
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  bf16subf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    bf16subf_test.cpp
-  HDRS
-    SubTest.h
-  DEPENDS
-    libc.src.math.bf16subf
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  bf16subl_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    bf16subl_test.cpp
-  HDRS
-    SubTest.h
-  DEPENDS
-    libc.src.math.bf16subl
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  bf16subf128_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    bf16subf128_test.cpp
-  HDRS
-    SubTest.h
-  DEPENDS
-    libc.src.math.bf16subf128
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_subdirectory(generic)
-add_subdirectory(smoke)
-
-if(NOT LLVM_LIBC_FULL_BUILD)
-  add_subdirectory(exhaustive)
-  add_subdirectory(performance_testing)
-endif()
+add_custom_target(libc-math-unittests)
+
+add_fp_unittest(
+  cosf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    cosf_test.cpp
+  HDRS
+    sdcomp26094.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.cosf
+    libc.src.__support.CPP.array
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  cosf_float_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    cosf_float_test.cpp
+  DEPENDS
+    libc.src.__support.math.sincosf_utils
+    libc.src.__support.FPUtil.fp_bits
+  FLAGS
+    FMA_OPT__ONLY
+)
+
+add_fp_unittest(
+  cos_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    cos_test.cpp
+  DEPENDS
+    libc.src.math.cos
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  cosf16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    cosf16_test.cpp
+  DEPENDS
+    libc.src.math.cosf16
+)
+
+add_fp_unittest(
+  cospif_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    cospif_test.cpp
+  HDRS
+    sdcomp26094.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.cospif
+    libc.src.__support.CPP.array
+    libc.src.__support.FPUtil.fp_bits
+)
+
+
+add_fp_unittest(
+  cospif16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    cospif16_test.cpp
+  DEPENDS
+    libc.src.math.cospif16
+)
+
+add_fp_unittest(
+  daddl_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    daddl_test.cpp
+  HDRS
+    AddTest.h
+  DEPENDS
+    libc.src.math.daddl
+)
+
+add_fp_unittest(
+  sinf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    sinf_test.cpp
+  HDRS
+    sdcomp26094.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.sinf
+    libc.src.__support.CPP.array
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  sinf_float_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    sinf_float_test.cpp
+  DEPENDS
+    libc.src.__support.math.sincosf_utils
+    libc.src.__support.FPUtil.fp_bits
+  FLAGS
+    FMA_OPT__ONLY
+)
+
+add_fp_unittest(
+  sinf16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    sinf16_test.cpp
+  DEPENDS
+    libc.src.math.sinf16
+)
+
+add_fp_unittest(
+  sinpif_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    sinpif_test.cpp
+  HDRS
+    sdcomp26094.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.sinpif
+    libc.src.__support.CPP.array
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  sinpif16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    sinpif16_test.cpp
+  DEPENDS
+    libc.src.math.sinpif16
+)
+
+add_fp_unittest(
+  sin_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    sin_test.cpp
+  DEPENDS
+    libc.src.math.sin
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  sincosf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    sincosf_test.cpp
+  HDRS
+    sdcomp26094.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.sincosf
+    libc.src.__support.CPP.array
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  sincos_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    sincos_test.cpp
+  DEPENDS
+    libc.src.math.sincos
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  tanf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    tanf_test.cpp
+  HDRS
+    sdcomp26094.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.tanf
+    libc.src.__support.CPP.array
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  tanf16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    tanf16_test.cpp
+  DEPENDS
+    libc.src.math.tanf16
+)
+
+add_fp_unittest(
+  tanpif_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    tanpif_test.cpp
+  HDRS
+    sdcomp26094.h
+  DEPENDS
+    libc.src.math.tanpif
+    libc.src.__support.CPP.array
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  tanpif16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    tanpif16_test.cpp
+  DEPENDS
+    libc.src.math.tanpif16
+)
+
+add_fp_unittest(
+  fabs_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    fabs_test.cpp
+  HDRS
+    FAbsTest.h
+  DEPENDS
+    libc.src.math.fabs
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fabsf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    fabsf_test.cpp
+  HDRS
+    FAbsTest.h
+  DEPENDS
+    libc.src.math.fabsf
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fabsl_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    fabsl_test.cpp
+  HDRS
+    FAbsTest.h
+  DEPENDS
+    libc.src.math.fabsl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fadd_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    fadd_test.cpp
+  HDRS
+    AddTest.h
+  DEPENDS
+    libc.src.math.fadd
+    libc.src.__support.FPUtil.basic_operations
+)
+
+add_fp_unittest(
+  faddl_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    faddl_test.cpp
+  HDRS
+    AddTest.h
+  DEPENDS
+    libc.src.math.faddl
+)
+
+add_fp_unittest(
+  trunc_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    trunc_test.cpp
+  HDRS
+    TruncTest.h
+  DEPENDS
+    libc.src.math.trunc
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  truncf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    truncf_test.cpp
+  HDRS
+    TruncTest.h
+  DEPENDS
+    libc.src.math.truncf
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  truncl_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    truncl_test.cpp
+  HDRS
+    TruncTest.h
+  DEPENDS
+    libc.src.math.truncl
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  truncf16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    truncf16_test.cpp
+  HDRS
+    TruncTest.h
+  DEPENDS
+    libc.src.math.truncf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  ceil_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    ceil_test.cpp
+  HDRS
+    CeilTest.h
+  DEPENDS
+    libc.src.math.ceil
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  ceilf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    ceilf_test.cpp
+  HDRS
+    CeilTest.h
+  DEPENDS
+    libc.src.math.ceilf
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  ceill_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    ceill_test.cpp
+  HDRS
+    CeilTest.h
+  DEPENDS
+    libc.src.math.ceill
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  ceilf16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    ceilf16_test.cpp
+  HDRS
+    CeilTest.h
+  DEPENDS
+    libc.src.math.ceilf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  floor_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    floor_test.cpp
+  HDRS
+    FloorTest.h
+  DEPENDS
+    libc.src.math.floor
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  floorf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    floorf_test.cpp
+  HDRS
+    FloorTest.h
+  DEPENDS
+    libc.src.math.floorf
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  floorl_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    floorl_test.cpp
+  HDRS
+    FloorTest.h
+  DEPENDS
+    libc.src.math.floorl
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  floorf16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    floorf16_test.cpp
+  HDRS
+    FloorTest.h
+  DEPENDS
+    libc.src.math.floorf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  round_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    round_test.cpp
+  HDRS
+    RoundTest.h
+  DEPENDS
+    libc.src.math.round
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  roundf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    roundf_test.cpp
+  HDRS
+    RoundTest.h
+  DEPENDS
+    libc.src.math.roundf
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  roundl_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    roundl_test.cpp
+  HDRS
+    RoundTest.h
+  DEPENDS
+    libc.src.math.roundl
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  roundf16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    roundf16_test.cpp
+  HDRS
+    RoundTest.h
+  DEPENDS
+    libc.src.math.roundf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  roundeven_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    roundeven_test.cpp
+  HDRS
+  RoundEvenTest.h
+  DEPENDS
+    libc.src.math.roundeven
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  roundevenf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    roundevenf_test.cpp
+  HDRS
+  RoundEvenTest.h
+  DEPENDS
+    libc.src.math.roundevenf
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  roundevenl_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    roundevenl_test.cpp
+  HDRS
+  RoundEvenTest.h
+  DEPENDS
+    libc.src.math.roundevenl
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  roundevenf16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    roundevenf16_test.cpp
+  HDRS
+  RoundEvenTest.h
+  DEPENDS
+    libc.src.math.roundevenf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  lround_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    lround_test.cpp
+  HDRS
+    RoundToIntegerTest.h
+  DEPENDS
+    libc.hdr.fenv_macros
+    libc.src.errno.errno
+    libc.src.math.lround
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  lroundf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    lroundf_test.cpp
+  HDRS
+    RoundToIntegerTest.h
+  DEPENDS
+    libc.hdr.fenv_macros
+    libc.src.errno.errno
+    libc.src.math.lroundf
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  lroundl_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    lroundl_test.cpp
+  HDRS
+    RoundToIntegerTest.h
+  DEPENDS
+    libc.hdr.fenv_macros
+    libc.src.errno.errno
+    libc.src.math.lroundl
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  lroundf16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    lroundf16_test.cpp
+  HDRS
+    RoundToIntegerTest.h
+  DEPENDS
+    libc.hdr.fenv_macros
+    libc.src.errno.errno
+    libc.src.math.lroundf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  lroundbf16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    lroundbf16_test.cpp
+  HDRS
+    RoundToIntegerTest.h
+  DEPENDS
+    libc.hdr.fenv_macros
+    libc.src.errno.errno
+    libc.src.math.lroundbf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  llround_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    llround_test.cpp
+  HDRS
+    RoundToIntegerTest.h
+  DEPENDS
+    libc.hdr.fenv_macros
+    libc.src.errno.errno
+    libc.src.math.llround
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  llroundf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    llroundf_test.cpp
+  HDRS
+    RoundToIntegerTest.h
+  DEPENDS
+    libc.hdr.fenv_macros
+    libc.src.errno.errno
+    libc.src.math.llroundf
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  llroundl_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    llroundl_test.cpp
+  HDRS
+    RoundToIntegerTest.h
+  DEPENDS
+    libc.hdr.fenv_macros
+    libc.src.errno.errno
+    libc.src.math.llroundl
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  llroundf16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    llroundf16_test.cpp
+  HDRS
+    RoundToIntegerTest.h
+  DEPENDS
+    libc.hdr.fenv_macros
+    libc.src.errno.errno
+    libc.src.math.llroundf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  llroundbf16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    llroundbf16_test.cpp
+  HDRS
+    RoundToIntegerTest.h
+  DEPENDS
+    libc.hdr.fenv_macros
+    libc.src.errno.errno
+    libc.src.math.llroundbf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  nearbyint_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    nearbyint_test.cpp
+  HDRS
+    NearbyIntTest.h
+  DEPENDS
+    libc.src.math.nearbyint
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.CPP.array
+)
+
+add_fp_unittest(
+  nearbyintf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    nearbyintf_test.cpp
+  HDRS
+    NearbyIntTest.h
+  DEPENDS
+    libc.src.math.nearbyintf
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.CPP.array
+)
+
+add_fp_unittest(
+  nearbyintl_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    nearbyintl_test.cpp
+  HDRS
+    NearbyIntTest.h
+  DEPENDS
+    libc.src.math.nearbyintl
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.CPP.array
+)
+
+add_fp_unittest(
+  nearbyintf16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    nearbyintf16_test.cpp
+  HDRS
+    NearbyIntTest.h
+  DEPENDS
+    libc.src.math.nearbyintf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.CPP.array
+)
+
+add_fp_unittest(
+  nearbyintbf16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    nearbyintbf16_test.cpp
+  HDRS
+    NearbyIntTest.h
+  DEPENDS
+    libc.src.math.nearbyintbf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.CPP.array
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  rint_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    rint_test.cpp
+  HDRS
+    RIntTest.h
+  DEPENDS
+    libc.hdr.fenv_macros
+    libc.src.math.rint
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  rintf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    rintf_test.cpp
+  HDRS
+    RIntTest.h
+  DEPENDS
+    libc.hdr.fenv_macros
+    libc.src.math.rintf
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  rintl_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    rintl_test.cpp
+  HDRS
+    RIntTest.h
+  DEPENDS
+    libc.hdr.fenv_macros
+    libc.src.math.rintl
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  rintf16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    rintf16_test.cpp
+  HDRS
+    RIntTest.h
+  DEPENDS
+    libc.hdr.fenv_macros
+    libc.src.math.rintf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  rintbf16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    rintbf16_test.cpp
+  HDRS
+    RIntTest.h
+  DEPENDS
+    libc.hdr.fenv_macros
+    libc.src.math.rintbf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  lrint_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    lrint_test.cpp
+  HDRS
+    RoundToIntegerTest.h
+  DEPENDS
+    libc.src.math.lrint
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  lrintf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    lrintf_test.cpp
+  HDRS
+    RoundToIntegerTest.h
+  DEPENDS
+    libc.src.math.lrintf
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  lrintl_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    lrintl_test.cpp
+  HDRS
+    RoundToIntegerTest.h
+  DEPENDS
+    libc.src.math.lrintl
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  lrintf16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    lrintf16_test.cpp
+  HDRS
+    RoundToIntegerTest.h
+  DEPENDS
+    libc.src.math.lrintf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  lrintbf16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    lrintbf16_test.cpp
+  HDRS
+    RoundToIntegerTest.h
+  DEPENDS
+    libc.src.math.lrintbf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  llrint_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    llrint_test.cpp
+  HDRS
+    RoundToIntegerTest.h
+  DEPENDS
+    libc.src.math.llrint
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  llrintf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    llrintf_test.cpp
+  HDRS
+    RoundToIntegerTest.h
+  DEPENDS
+    libc.src.math.llrintf
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  llrintl_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    llrintl_test.cpp
+  HDRS
+    RoundToIntegerTest.h
+  DEPENDS
+    libc.src.math.llrintl
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  llrintf16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    llrintf16_test.cpp
+  HDRS
+    RoundToIntegerTest.h
+  DEPENDS
+    libc.src.math.llrintf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  llrintbf16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    llrintbf16_test.cpp
+  HDRS
+    RoundToIntegerTest.h
+  DEPENDS
+    libc.src.math.llrintbf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  exp_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    exp_test.cpp
+  DEPENDS
+    libc.src.math.exp
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  expf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    expf_test.cpp
+  DEPENDS
+    libc.src.errno.errno
+    libc.src.math.expf
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  expf16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    expf16_test.cpp
+  DEPENDS
+    libc.src.math.expf16
+)
+
+add_fp_unittest(
+  exp2_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    exp2_test.cpp
+  DEPENDS
+    libc.src.math.exp2
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  exp2f_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    exp2f_test.cpp
+  DEPENDS
+    libc.src.errno.errno
+    libc.src.math.exp2f
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  exp2f16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    exp2f16_test.cpp
+  DEPENDS
+    libc.src.math.exp2f16
+)
+
+add_fp_unittest(
+  exp2m1f_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    exp2m1f_test.cpp
+  DEPENDS
+    libc.src.errno.errno
+    libc.src.math.exp2m1f
+    libc.src.__support.CPP.array
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  exp2m1f16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    exp2m1f16_test.cpp
+  DEPENDS
+    libc.src.math.exp2m1f16
+)
+
+add_fp_unittest(
+  exp10_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    exp10_test.cpp
+  DEPENDS
+    libc.src.math.exp10
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  exp10f_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    exp10f_test.cpp
+  DEPENDS
+    libc.src.errno.errno
+    libc.src.math.exp10f
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  exp10f16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    exp10f16_test.cpp
+  DEPENDS
+    libc.src.math.exp10f16
+)
+
+add_fp_unittest(
+  exp10m1f16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    exp10m1f16_test.cpp
+  DEPENDS
+    libc.src.math.exp10m1f16
+)
+
+add_fp_unittest(
+  exp10m1f_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    exp10m1f_test.cpp
+  DEPENDS
+    libc.hdr.math_macros
+    libc.src.errno.errno
+    libc.src.math.exp10m1f
+    libc.src.__support.CPP.array
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  copysign_test
+  SUITE
+    libc-math-unittests
+  SRCS
+    copysign_test.cpp
+  HDRS
+    CopySignTest.h
+  DEPENDS
+    libc.src.math.copysign
+    libc.src.__support.FPUtil.fp_bits
+  # FIXME: Currently fails on the GPU build.
+  UNIT_TEST_ONLY
+)
+
+add_fp_unittest(
+  copysignf_test
+  SUITE
+    libc-math-unittests
+  SRCS
+    copysignf_test.cpp
+  HDRS
+    CopySignTest.h
+  DEPENDS
+    libc.src.math.copysignf
+    libc.src.__support.FPUtil.fp_bits
+  # FIXME: Currently fails on the GPU build.
+  UNIT_TEST_ONLY
+)
+
+add_fp_unittest(
+  copysignl_test
+  SUITE
+    libc-math-unittests
+  SRCS
+    copysignl_test.cpp
+  HDRS
+    CopySignTest.h
+  DEPENDS
+    libc.src.math.copysignl
+    libc.src.__support.FPUtil.fp_bits
+  # FIXME: Currently fails on the GPU build.
+  UNIT_TEST_ONLY
+)
+
+add_fp_unittest(
+  frexp_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    frexp_test.cpp
+  HDRS
+    FrexpTest.h
+  DEPENDS
+    libc.src.math.frexp
+    libc.src.__support.FPUtil.basic_operations
+)
+
+add_fp_unittest(
+  frexpf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    frexpf_test.cpp
+  HDRS
+    FrexpTest.h
+  DEPENDS
+    libc.src.math.frexpf
+    libc.src.__support.FPUtil.basic_operations
+)
+
+add_fp_unittest(
+  frexpl_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    frexpl_test.cpp
+  HDRS
+    FrexpTest.h
+  DEPENDS
+    libc.src.math.frexpl
+    libc.src.__support.FPUtil.basic_operations
+)
+
+add_fp_unittest(
+  ilogb_test
+  SUITE
+    libc-math-unittests
+  SRCS
+    ilogb_test.cpp
+  HDRS
+    ILogbTest.h
+  DEPENDS
+    libc.src.math.ilogb
+    libc.src.__support.CPP.limits
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.manipulation_functions
+)
+
+add_fp_unittest(
+  ilogbf_test
+  SUITE
+    libc-math-unittests
+  SRCS
+    ilogbf_test.cpp
+  HDRS
+    ILogbTest.h
+  DEPENDS
+    libc.src.math.ilogbf
+    libc.src.__support.CPP.limits
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.manipulation_functions
+)
+
+add_fp_unittest(
+  ilogbl_test
+  SUITE
+    libc-math-unittests
+  SRCS
+    ilogbl_test.cpp
+  HDRS
+    ILogbTest.h
+  DEPENDS
+    libc.src.math.ilogbl
+    libc.src.__support.CPP.limits
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.manipulation_functions
+)
+
+add_fp_unittest(
+  ldexp_test
+  SUITE
+    libc-math-unittests
+  SRCS
+    ldexp_test.cpp
+  HDRS
+    LdExpTest.h
+  DEPENDS
+    libc.src.math.ldexp
+    libc.src.__support.CPP.limits
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.normal_float
+)
+
+add_fp_unittest(
+  ldexpf_test
+  SUITE
+    libc-math-unittests
+  SRCS
+    ldexpf_test.cpp
+  HDRS
+    LdExpTest.h
+  DEPENDS
+    libc.src.math.ldexpf
+    libc.src.__support.CPP.limits
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.normal_float
+)
+
+add_fp_unittest(
+  ldexpl_test
+  SUITE
+    libc-math-unittests
+  SRCS
+    ldexpl_test.cpp
+  HDRS
+    LdExpTest.h
+  DEPENDS
+    libc.src.math.ldexpl
+    libc.src.__support.CPP.limits
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.normal_float
+)
+
+add_fp_unittest(
+  logb_test
+  SUITE
+    libc-math-unittests
+  SRCS
+    logb_test.cpp
+  DEPENDS
+    libc.src.math.logb
+    libc.src.__support.FPUtil.manipulation_functions
+)
+
+add_fp_unittest(
+  logbf_test
+  SUITE
+    libc-math-unittests
+  SRCS
+    logbf_test.cpp
+  DEPENDS
+    libc.src.math.logbf
+    libc.src.__support.FPUtil.manipulation_functions
+)
+
+add_fp_unittest(
+  logbl_test
+  SUITE
+    libc-math-unittests
+  SRCS
+    logbl_test.cpp
+  HDRS
+    LogbTest.h
+  DEPENDS
+    libc.src.math.logbl
+    libc.src.__support.FPUtil.manipulation_functions
+)
+
+add_fp_unittest(
+  modf_test
+  SUITE
+    libc-math-unittests
+  SRCS
+    modf_test.cpp
+  HDRS
+    ModfTest.h
+  DEPENDS
+    libc.src.math.modf
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.nearest_integer_operations
+  # Requires C++ limits.
+  UNIT_TEST_ONLY
+)
+
+add_fp_unittest(
+  modff_test
+  SUITE
+    libc-math-unittests
+  SRCS
+    modff_test.cpp
+  HDRS
+    ModfTest.h
+  DEPENDS
+    libc.src.math.modff
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.nearest_integer_operations
+  # Requires C++ limits.
+  UNIT_TEST_ONLY
+)
+
+add_fp_unittest(
+  modfl_test
+  SUITE
+    libc-math-unittests
+  SRCS
+    modfl_test.cpp
+  HDRS
+    ModfTest.h
+  DEPENDS
+    libc.src.math.modfl
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.nearest_integer_operations
+)
+
+add_fp_unittest(
+  fdimf_test
+  SUITE
+    libc-math-unittests
+  SRCS
+    fdimf_test.cpp
+  HDRS
+    FDimTest.h
+  DEPENDS
+    libc.src.math.fdimf
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fdim_test
+  SUITE
+    libc-math-unittests
+  SRCS
+    fdim_test.cpp
+  HDRS
+    FDimTest.h
+  DEPENDS
+    libc.src.math.fdim
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fdiml_test
+  SUITE
+    libc-math-unittests
+  SRCS
+    fdiml_test.cpp
+  HDRS
+    FDimTest.h
+  DEPENDS
+    libc.src.math.fdiml
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fminf_test
+  SUITE
+    libc-math-unittests
+  SRCS
+    fminf_test.cpp
+  HDRS
+    FMinTest.h
+  DEPENDS
+    libc.src.math.fminf
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fmin_test
+  SUITE
+    libc-math-unittests
+  SRCS
+    fmin_test.cpp
+  HDRS
+    FMinTest.h
+  DEPENDS
+    libc.src.math.fmin
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fminl_test
+  SUITE
+    libc-math-unittests
+  SRCS
+    fminl_test.cpp
+  HDRS
+    FMinTest.h
+  DEPENDS
+    libc.src.math.fminl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fmaxf_test
+  SUITE
+    libc-math-unittests
+  SRCS
+    fmaxf_test.cpp
+  HDRS
+    FMaxTest.h
+  DEPENDS
+    libc.src.math.fmaxf
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fmax_test
+  SUITE
+    libc-math-unittests
+  SRCS
+    fmax_test.cpp
+  HDRS
+    FMaxTest.h
+  DEPENDS
+    libc.src.math.fmax
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fmaxl_test
+  SUITE
+    libc-math-unittests
+  SRCS
+    fmaxl_test.cpp
+  HDRS
+    FMaxTest.h
+  DEPENDS
+    libc.src.math.fmaxl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  sqrtf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    sqrtf_test.cpp
+  HDRS
+    SqrtTest.h
+  DEPENDS
+    libc.src.math.sqrtf
+)
+
+add_fp_unittest(
+  sqrt_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    sqrt_test.cpp
+  HDRS
+    SqrtTest.h
+  DEPENDS
+    libc.src.math.sqrt
+)
+
+add_fp_unittest(
+  sqrtl_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    sqrtl_test.cpp
+  HDRS
+    SqrtTest.h
+  DEPENDS
+    libc.src.math.sqrtl
+)
+
+add_fp_unittest(
+  rsqrtf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    rsqrtf_test.cpp
+  DEPENDS
+    libc.src.math.rsqrtf
+)
+
+add_fp_unittest(
+  rsqrtf16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    rsqrtf16_test.cpp
+  DEPENDS
+    libc.src.math.rsqrtf16
+)
+
+add_fp_unittest(
+  sqrtf16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    sqrtf16_test.cpp
+  DEPENDS
+    libc.src.math.sqrtf16
+)
+
+add_fp_unittest(
+  sqrtf128_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    sqrtf128_test.cpp
+  HDRS
+    SqrtTest.h
+  DEPENDS
+    libc.src.math.sqrtf128
+)
+
+add_fp_unittest(
+  sqrtbf16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    sqrtbf16_test.cpp
+  DEPENDS
+    libc.src.math.sqrtbf16
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  generic_sqrtf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    generic_sqrtf_test.cpp
+  HDRS
+    SqrtTest.h
+  DEPENDS
+    libc.src.math.sqrtf
+    libc.src.__support.FPUtil.generic.sqrt
+  COMPILE_OPTIONS
+    ${libc_opt_high_flag}
+)
+
+add_fp_unittest(
+  generic_sqrt_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    generic_sqrt_test.cpp
+  HDRS
+    SqrtTest.h
+  DEPENDS
+    libc.src.math.sqrt
+    libc.src.__support.FPUtil.generic.sqrt
+  COMPILE_OPTIONS
+    ${libc_opt_high_flag}
+)
+
+add_fp_unittest(
+  generic_sqrtl_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    generic_sqrtl_test.cpp
+  HDRS
+    SqrtTest.h
+  DEPENDS
+    libc.src.math.sqrtl
+    libc.src.__support.FPUtil.generic.sqrt
+  COMPILE_OPTIONS
+    ${libc_opt_high_flag}
+)
+
+add_fp_unittest(
+  remquof_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    remquof_test.cpp
+  HDRS
+    RemQuoTest.h
+  DEPENDS
+    libc.src.math.remquof
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  remquo_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    remquo_test.cpp
+  HDRS
+    RemQuoTest.h
+  DEPENDS
+    libc.src.math.remquo
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  remquol_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    remquol_test.cpp
+  HDRS
+    RemQuoTest.h
+  DEPENDS
+    libc.src.math.remquol
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  hypotf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    hypotf_test.cpp
+  DEPENDS
+    libc.src.math.hypotf
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  hypot_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    hypot_test.cpp
+  DEPENDS
+    libc.src.math.hypot
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  hypotf16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    hypotf16_test.cpp
+  DEPENDS
+    libc.src.math.hypotf16
+)
+
+add_fp_unittest(
+  nextafter_test
+  SUITE
+    libc-math-unittests
+  SRCS
+    nextafter_test.cpp
+  HDRS
+    NextAfterTest.h
+  DEPENDS
+    libc.src.math.nextafter
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  nextafterf_test
+  SUITE
+    libc-math-unittests
+  SRCS
+    nextafterf_test.cpp
+  HDRS
+    NextAfterTest.h
+  DEPENDS
+    libc.src.math.nextafterf
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  nextafterl_test
+  SUITE
+    libc-math-unittests
+  SRCS
+    nextafterl_test.cpp
+  HDRS
+    NextAfterTest.h
+  DEPENDS
+    libc.src.math.nextafterl
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  nextafterf128_test
+  SUITE
+    libc-math-unittests
+  SRCS
+    nextafterf128_test.cpp
+  HDRS
+    NextAfterTest.h
+  DEPENDS
+    libc.src.math.nextafterf128
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.fp_bits
+)
+
+# TODO(lntue): The current implementation of fputil::general::fma<float> is only
+# correctly rounded for the default rounding mode round-to-nearest tie-to-even.
+add_fp_unittest(
+  fmaf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    fmaf_test.cpp
+  HDRS
+    FmaTest.h
+  DEPENDS
+    libc.src.math.fmaf
+    libc.src.stdlib.rand
+    libc.src.stdlib.srand
+  FLAGS
+    FMA_OPT__ONLY
+)
+
+add_fp_unittest(
+  fmaf16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    fmaf16_test.cpp
+  HDRS
+    FmaTest.h
+  DEPENDS
+    libc.src.math.fmaf16
+    libc.src.stdlib.rand
+    libc.src.stdlib.srand
+)
+
+add_fp_unittest(
+  fmabf16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    fmabf16_test.cpp
+  HDRS
+    FmaTest.h
+  DEPENDS
+    libc.src.math.fmabf16
+    libc.src.stdlib.rand
+    libc.src.stdlib.srand
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  fma_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    fma_test.cpp
+  HDRS
+    FmaTest.h
+  DEPENDS
+    libc.src.math.fma
+    libc.src.stdlib.rand
+    libc.src.stdlib.srand
+)
+
+add_fp_unittest(
+  tan_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    tan_test.cpp
+  DEPENDS
+    libc.src.math.tan
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  expm1_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    expm1_test.cpp
+  DEPENDS
+    libc.src.math.expm1
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  expm1f_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    expm1f_test.cpp
+  DEPENDS
+    libc.src.errno.errno
+    libc.src.math.expm1f
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  expm1f16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    expm1f16_test.cpp
+  DEPENDS
+    libc.src.math.expm1f16
+)
+
+add_fp_unittest(
+ log_test
+ NEED_MPFR
+ SUITE
+   libc-math-unittests
+ SRCS
+   log_test.cpp
+ DEPENDS
+   libc.src.math.log
+   libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  logf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    logf_test.cpp
+  DEPENDS
+    libc.src.math.logf
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  logf16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    logf16_test.cpp
+  DEPENDS
+    libc.src.math.logf16
+)
+
+add_fp_unittest(
+  log_bf16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    log_bf16_test.cpp
+  DEPENDS
+    libc.src.math.log_bf16
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+log2_test
+ NEED_MPFR
+ SUITE
+   libc-math-unittests
+ SRCS
+   log2_test.cpp
+ DEPENDS
+   libc.src.math.log2
+   libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  log2f_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    log2f_test.cpp
+  DEPENDS
+    libc.src.errno.errno
+    libc.src.math.log2f
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  log2f16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    log2f16_test.cpp
+  DEPENDS
+    libc.src.math.log2f16
+)
+
+add_fp_unittest(
+ log10_test
+ NEED_MPFR
+ SUITE
+   libc-math-unittests
+ SRCS
+   log10_test.cpp
+ DEPENDS
+   libc.src.math.log10
+   libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  log10f_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    log10f_test.cpp
+  DEPENDS
+    libc.src.math.log10f
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  log10f16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    log10f16_test.cpp
+  DEPENDS
+    libc.src.math.log10f16
+)
+
+add_fp_unittest(
+log1p_test
+ NEED_MPFR
+ SUITE
+   libc-math-unittests
+ SRCS
+   log1p_test.cpp
+ DEPENDS
+   libc.src.math.log1p
+   libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  log1pf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    log1pf_test.cpp
+  DEPENDS
+    libc.src.math.log1pf
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fmodf_test
+  SUITE
+    libc-math-unittests
+  SRCS
+    fmodf_test.cpp
+  HDRS
+    FModTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.fmodf
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.nearest_integer_operations
+  # FIXME: Currently fails on the GPU build.
+  UNIT_TEST_ONLY
+)
+
+add_fp_unittest(
+  fmod_test
+  SUITE
+    libc-math-unittests
+  SRCS
+    fmod_test.cpp
+  HDRS
+    FModTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.fmod
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.nearest_integer_operations
+  # FIXME: Currently fails on the GPU build.
+  UNIT_TEST_ONLY
+)
+
+add_fp_unittest(
+  explogxf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  HDRS
+    in_float_range_test_helper.h
+  SRCS
+    explogxf_test.cpp
+  DEPENDS
+    libc.src.math.generic.explogxf
+    libc.src.math.fabs
+    libc.src.math.fabsf
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  coshf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    coshf_test.cpp
+  HDRS
+    sdcomp26094.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.coshf
+    libc.src.__support.CPP.array
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  coshf16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    coshf16_test.cpp
+  DEPENDS
+    libc.src.math.coshf16
+)
+
+add_fp_unittest(
+  sinhf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    sinhf_test.cpp
+  HDRS
+    sdcomp26094.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.sinhf
+    libc.src.__support.CPP.array
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  sinhf16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    sinhf16_test.cpp
+  DEPENDS
+    libc.src.math.sinhf16
+)
+
+add_fp_unittest(
+  tanhf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    tanhf_test.cpp
+  DEPENDS
+    libc.src.math.tanhf
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  tanhf16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    tanhf16_test.cpp
+  DEPENDS
+    libc.src.math.tanhf16
+)
+
+add_fp_unittest(
+  atanhf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    atanhf_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.atanhf
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  atanhf16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    atanhf16_test.cpp
+  DEPENDS
+    libc.src.math.atanhf16
+)
+
+add_fp_unittest(
+  atanpif16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    atanpif16_test.cpp
+  DEPENDS
+    libc.src.math.atanpif16
+)
+
+add_fp_unittest(
+  fmul_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    fmul_test.cpp
+  HDRS
+    MulTest.h
+  DEPENDS
+    libc.src.math.fmul
+    libc.src.stdlib.rand
+    libc.src.stdlib.srand
+)
+
+add_fp_unittest(
+  fmull_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    fmull_test.cpp
+  HDRS
+    MulTest.h
+  DEPENDS
+    libc.src.math.fmull
+    libc.src.stdlib.rand
+    libc.src.stdlib.srand
+)
+
+add_fp_unittest(
+  asinhf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    asinhf_test.cpp
+  DEPENDS
+    libc.src.math.asinhf
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  asinhf16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    asinhf16_test.cpp
+  DEPENDS
+    libc.src.math.asinhf16
+)
+
+add_fp_unittest(
+  acoshf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    acoshf_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.acoshf
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  acoshf16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    acoshf16_test.cpp
+  DEPENDS
+    libc.src.math.acoshf16
+)
+
+add_fp_unittest(
+  asinf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    asinf_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.asinf
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  asin_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    asin_test.cpp
+  DEPENDS
+    libc.src.math.asin
+)
+
+add_fp_unittest(
+  asinf16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    asinf16_test.cpp
+  DEPENDS
+    libc.src.math.asinf16  
+)
+
+add_fp_unittest(
+  asinpif16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    asinpif16_test.cpp
+  DEPENDS
+    libc.src.math.asinpif16
+)
+
+add_fp_unittest(
+  acosf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    acosf_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.acosf
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  acos_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    acos_test.cpp
+  DEPENDS
+    libc.src.math.acos
+)
+
+add_fp_unittest(
+  acosf16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    acosf16_test.cpp
+  DEPENDS
+    libc.src.math.acosf16  
+)
+
+add_fp_unittest(
+  acospif16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    acospif16_test.cpp
+  DEPENDS
+    libc.src.math.acospif16  
+)
+
+add_fp_unittest(
+  atanf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    atanf_test.cpp
+  DEPENDS
+    libc.src.math.atanf
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  atan_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    atan_test.cpp
+  DEPENDS
+    libc.src.math.atan
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  atanf16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    atanf16_test.cpp
+  DEPENDS
+    libc.src.math.atanf16
+)
+
+add_fp_unittest(
+  scalbn_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    scalbn_test.cpp
+  HDRS
+    ScalbnTest.h
+  DEPENDS
+    libc.src.math.scalbn
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.normal_float
+)
+
+add_fp_unittest(
+  scalbnf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    scalbnf_test.cpp
+  HDRS
+    ScalbnTest.h
+  DEPENDS
+    libc.src.math.scalbnf
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.normal_float
+)
+
+add_fp_unittest(
+  scalbnl_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    scalbnl_test.cpp
+  HDRS
+    ScalbnTest.h
+  DEPENDS
+    libc.src.math.scalbnl
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.normal_float
+)
+
+add_fp_unittest(
+  scalbnf128_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    scalbnf128_test.cpp
+  HDRS
+    ScalbnTest.h
+  DEPENDS
+    libc.src.math.scalbnf128
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.normal_float
+)
+
+add_fp_unittest(
+  erff_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    erff_test.cpp
+  DEPENDS
+    libc.src.math.erff
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  pow_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    pow_test.cpp
+  DEPENDS
+    libc.src.math.pow
+)
+
+add_fp_unittest(
+  powf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    powf_test.cpp
+  DEPENDS
+    libc.src.math.powf
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  atan2f_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    atan2f_test.cpp
+  DEPENDS
+    libc.src.math.atan2f
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  atan2_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    atan2_test.cpp
+  DEPENDS
+    libc.src.math.atan2
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  atan2f128_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    atan2f128_test.cpp
+  DEPENDS
+    libc.src.math.atan2f128
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  f16add_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    f16add_test.cpp
+  HDRS
+    AddTest.h
+  DEPENDS
+    libc.src.math.f16add
+)
+
+add_fp_unittest(
+  f16addf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    f16addf_test.cpp
+  HDRS
+    AddTest.h
+  DEPENDS
+    libc.src.math.f16addf
+)
+
+add_fp_unittest(
+  f16addl_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    f16addl_test.cpp
+  HDRS
+    AddTest.h
+  DEPENDS
+    libc.src.math.f16addl
+)
+
+add_fp_unittest(
+  f16sub_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    f16sub_test.cpp
+  HDRS
+    SubTest.h
+  DEPENDS
+    libc.src.math.f16sub
+)
+
+add_fp_unittest(
+  f16subf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    f16subf_test.cpp
+  HDRS
+    SubTest.h
+  DEPENDS
+    libc.src.math.f16subf
+)
+
+add_fp_unittest(
+  f16subl_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    f16subl_test.cpp
+  HDRS
+    SubTest.h
+  DEPENDS
+    libc.src.math.f16subl
+)
+
+add_fp_unittest(
+  f16div_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    f16div_test.cpp
+  HDRS
+    DivTest.h
+  DEPENDS
+    libc.src.math.f16div
+)
+
+add_fp_unittest(
+  f16divf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    f16divf_test.cpp
+  HDRS
+    DivTest.h
+  DEPENDS
+    libc.src.math.f16divf
+)
+
+add_fp_unittest(
+  f16divl_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    f16divl_test.cpp
+  HDRS
+    DivTest.h
+  DEPENDS
+    libc.src.math.f16divl
+)
+
+add_fp_unittest(
+  f16fma_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    f16fma_test.cpp
+  HDRS
+    FmaTest.h
+  DEPENDS
+    libc.src.math.f16fma
+    libc.src.stdlib.rand
+    libc.src.stdlib.srand
+)
+
+add_fp_unittest(
+  f16fmaf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    f16fmaf_test.cpp
+  HDRS
+    FmaTest.h
+  DEPENDS
+    libc.src.math.f16fmaf
+    libc.src.stdlib.rand
+    libc.src.stdlib.srand
+)
+
+add_fp_unittest(
+  f16fmal_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    f16fmal_test.cpp
+  HDRS
+    FmaTest.h
+  DEPENDS
+    libc.src.math.f16fmal
+    libc.src.stdlib.rand
+    libc.src.stdlib.srand
+)
+
+add_fp_unittest(
+  f16sqrt_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    f16sqrt_test.cpp
+  HDRS
+    SqrtTest.h
+  DEPENDS
+    libc.src.math.f16sqrt
+)
+
+add_fp_unittest(
+  f16sqrtf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    f16sqrtf_test.cpp
+  HDRS
+    SqrtTest.h
+  DEPENDS
+    libc.src.math.f16sqrtf
+)
+
+add_fp_unittest(
+  f16sqrtl_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    f16sqrtl_test.cpp
+  HDRS
+    SqrtTest.h
+  DEPENDS
+    libc.src.math.f16sqrtl
+)
+
+add_fp_unittest(
+  fsqrt_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    fsqrt_test.cpp
+  HDRS
+    SqrtTest.h
+  DEPENDS
+    libc.src.math.fsqrt
+)
+
+add_fp_unittest(
+  fsqrtl_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    fsqrtl_test.cpp
+  HDRS
+    SqrtTest.h
+  DEPENDS
+    libc.src.math.fsqrtl
+)
+
+add_fp_unittest(
+  fsub_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    fsub_test.cpp
+  HDRS
+    SubTest.h
+  DEPENDS
+    libc.src.math.fsub
+)
+
+add_fp_unittest(
+  fsubl_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    fsubl_test.cpp
+  HDRS
+    SubTest.h
+  DEPENDS
+    libc.src.math.fsubl
+)
+
+add_fp_unittest(
+  dsqrtl_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    dsqrtl_test.cpp
+  HDRS
+    SqrtTest.h
+  DEPENDS
+    libc.src.math.dsqrtl
+)
+
+add_fp_unittest(
+  cbrtf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    cbrtf_test.cpp
+  DEPENDS
+    libc.src.math.cbrtf
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  cbrt_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    cbrt_test.cpp
+  DEPENDS
+    libc.src.math.cbrt
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  dmull_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    dmull_test.cpp
+  HDRS
+    MulTest.h
+  DEPENDS
+    libc.src.math.dmull
+    libc.src.stdlib.rand
+    libc.src.stdlib.srand
+)
+
+add_fp_unittest(
+  f16mul_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    f16mul_test.cpp
+  HDRS
+    MulTest.h
+  DEPENDS
+    libc.src.math.f16mul
+    libc.src.stdlib.rand
+    libc.src.stdlib.srand
+)
+
+add_fp_unittest(
+  f16mulf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    f16mulf_test.cpp
+  HDRS
+    MulTest.h
+  DEPENDS
+    libc.src.math.f16mulf
+    libc.src.stdlib.rand
+    libc.src.stdlib.srand
+)
+
+add_fp_unittest(
+  f16mull_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    f16mull_test.cpp
+  HDRS
+    MulTest.h
+  DEPENDS
+    libc.src.math.f16mull
+    libc.src.stdlib.rand
+    libc.src.stdlib.srand
+)
+
+add_fp_unittest(
+  ddivl_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    ddivl_test.cpp
+  HDRS
+    DivTest.h
+  DEPENDS
+    libc.src.math.ddivl
+)
+
+add_fp_unittest(
+  dfmal_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    dfmal_test.cpp
+  HDRS
+    FmaTest.h
+  DEPENDS
+    libc.src.math.dfmal
+    libc.src.stdlib.rand
+    libc.src.stdlib.srand
+)
+
+add_fp_unittest(
+  dsubl_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    dsubl_test.cpp
+  HDRS
+    SubTest.h
+  DEPENDS
+    libc.src.math.dsubl
+)
+
+add_fp_unittest(
+  fdiv_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    fdiv_test.cpp
+  HDRS
+    DivTest.h
+  DEPENDS
+    libc.src.math.fdiv
+)
+
+add_fp_unittest(
+  fdivl_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    fdivl_test.cpp
+  HDRS
+    DivTest.h
+  DEPENDS
+    libc.src.math.fdivl
+)
+
+add_fp_unittest(
+  ffma_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    ffma_test.cpp
+  HDRS
+    FmaTest.h
+  DEPENDS
+    libc.src.math.ffma
+    libc.src.stdlib.rand
+    libc.src.stdlib.srand
+)
+
+add_fp_unittest(
+  ffmal_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    ffmal_test.cpp
+  HDRS
+    FmaTest.h
+  DEPENDS
+    libc.src.math.ffmal
+    libc.src.stdlib.rand
+    libc.src.stdlib.srand
+)
+
+add_fp_unittest(
+  add_same_type_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    add_same_type_test.cpp
+  HDRS
+    AddTest.h
+  DEPENDS
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.generic.add_sub
+    libc.src.__support.macros.properties.types
+)
+
+add_fp_unittest(
+  sub_same_type_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    sub_same_type_test.cpp
+  HDRS
+    SubTest.h
+  DEPENDS
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.generic.add_sub
+    libc.src.__support.macros.properties.types
+)
+
+add_fp_unittest(
+  bf16add_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    bf16add_test.cpp
+  HDRS
+    AddTest.h
+  DEPENDS
+    libc.src.math.bf16add
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  bf16addf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    bf16addf_test.cpp
+  HDRS
+    AddTest.h
+  DEPENDS
+    libc.src.math.bf16addf
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  bf16addl_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    bf16addl_test.cpp
+  HDRS
+    AddTest.h
+  DEPENDS
+    libc.src.math.bf16addl
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  bf16addf128_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    bf16addf128_test.cpp
+  HDRS
+    AddTest.h
+  DEPENDS
+    libc.src.math.bf16addf128
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  bf16div_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    bf16div_test.cpp
+  HDRS
+    DivTest.h
+  DEPENDS
+    libc.src.math.bf16div
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  bf16divf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    bf16divf_test.cpp
+  HDRS
+    DivTest.h
+  DEPENDS
+    libc.src.math.bf16divf
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  bf16divl_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    bf16divl_test.cpp
+  HDRS
+    DivTest.h
+  DEPENDS
+    libc.src.math.bf16divl
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  bf16divf128_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    bf16divf128_test.cpp
+  HDRS
+    DivTest.h
+  DEPENDS
+    libc.src.math.bf16divf128
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  bf16fma_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    bf16fma_test.cpp
+  HDRS
+    FmaTest.h
+  DEPENDS
+    libc.src.math.bf16fma
+    libc.src.stdlib.rand
+    libc.src.stdlib.srand
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  bf16fmaf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    bf16fmaf_test.cpp
+  HDRS
+    FmaTest.h
+  DEPENDS
+    libc.src.math.bf16fmaf
+    libc.src.stdlib.rand
+    libc.src.stdlib.srand
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  bf16fmal_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    bf16fmal_test.cpp
+  HDRS
+    FmaTest.h
+  DEPENDS
+    libc.src.math.bf16fmal
+    libc.src.stdlib.rand
+    libc.src.stdlib.srand
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  bf16fmaf128_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    bf16fmaf128_test.cpp
+  HDRS
+    FmaTest.h
+  DEPENDS
+    libc.src.math.bf16fmaf128
+    libc.src.stdlib.rand
+    libc.src.stdlib.srand
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  bf16mul_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    bf16mul_test.cpp
+  HDRS
+    MulTest.h
+  DEPENDS
+    libc.src.math.bf16mul
+    libc.src.stdlib.rand
+    libc.src.stdlib.srand
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  bf16mulf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    bf16mulf_test.cpp
+  HDRS
+    MulTest.h
+  DEPENDS
+    libc.src.math.bf16mulf
+    libc.src.stdlib.rand
+    libc.src.stdlib.srand
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  bf16mull_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    bf16mull_test.cpp
+  HDRS
+    MulTest.h
+  DEPENDS
+    libc.src.math.bf16mull
+    libc.src.stdlib.rand
+    libc.src.stdlib.srand
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  bf16mulf128_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    bf16mulf128_test.cpp
+  HDRS
+    MulTest.h
+  DEPENDS
+    libc.src.math.bf16mulf128
+    libc.src.stdlib.rand
+    libc.src.stdlib.srand
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  bf16sub_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    bf16sub_test.cpp
+  HDRS
+    SubTest.h
+  DEPENDS
+    libc.src.math.bf16sub
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  bf16subf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    bf16subf_test.cpp
+  HDRS
+    SubTest.h
+  DEPENDS
+    libc.src.math.bf16subf
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  bf16subl_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    bf16subl_test.cpp
+  HDRS
+    SubTest.h
+  DEPENDS
+    libc.src.math.bf16subl
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  bf16subf128_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    bf16subf128_test.cpp
+  HDRS
+    SubTest.h
+  DEPENDS
+    libc.src.math.bf16subf128
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_subdirectory(generic)
+add_subdirectory(smoke)
+
+if(NOT LLVM_LIBC_FULL_BUILD)
+  add_subdirectory(exhaustive)
+  add_subdirectory(performance_testing)
+endif()
diff --git a/libc/test/src/math/bf16mul_test.cpp b/libc/test/src/math/bf16mul_test.cpp
index 3682705556b0a..76bd3dba42566 100644
--- a/libc/test/src/math/bf16mul_test.cpp
+++ b/libc/test/src/math/bf16mul_test.cpp
@@ -1,15 +1,15 @@
-//===-- Unittests for bf16mul ---------------------------------------------===//
-//
-// 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 "MulTest.h"
-
-#include "src/math/bf16mul.h"
-
-#include "src/__support/FPUtil/bfloat16.h"
-
-LIST_MUL_TESTS(bfloat16, double, LIBC_NAMESPACE::bf16mul)
+//===-- Unittests for bf16mul ---------------------------------------------===//
+//
+// 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 "MulTest.h"
+
+#include "src/math/bf16mul.h"
+
+#include "src/__support/FPUtil/bfloat16.h"
+
+LIST_MUL_TESTS(bfloat16, double, LIBC_NAMESPACE::bf16mul)
diff --git a/libc/test/src/math/fmabf16_test.cpp b/libc/test/src/math/fmabf16_test.cpp
new file mode 100644
index 0000000000000..ae01948c21ca5
--- /dev/null
+++ b/libc/test/src/math/fmabf16_test.cpp
@@ -0,0 +1,29 @@
+// //===-- Exhaustive test for fmabf16 ---------------------------------------===//
+// //
+// // 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 "src/__support/FPUtil/bfloat16.h"
+// #include "src/math/fmabf16.h"
+// #include "test/UnitTest/FPMatcher.h"
+// #include "test/UnitTest/Test.h"
+// #include "utils/MPFRWrapper/MPFRUtils.h"
+
+// using LlvmLibcFmabf16Test = LIBC_NAMESPACE::testing::FPTest<bfloat16>;
+
+// namespace mpfr = LIBC_NAMESPACE::testing::mpfr;
+
+// // range: [0, inf]
+// static constexpr uint16_t POS_START = 0x0000U;
+// static constexpr uint16_t POS_STOP = 0x7f80U;
+
+// TEST_F(LlvmLibcSqrtf16Test, PositiveRange) {
+//   for (uint16_t v = POS_START; v <= POS_STOP; ++v) {
+//     bfloat16 x = FPBits(v).get_val();
+//     EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Sqrt, x,
+//                                    LIBC_NAMESPACE::sqrtbf16(x), 0.5);
+//   }
+// }
diff --git a/libc/test/src/math/smoke/CMakeLists.txt b/libc/test/src/math/smoke/CMakeLists.txt
index 5afd3a9f22967..73b72b69d883a 100644
--- a/libc/test/src/math/smoke/CMakeLists.txt
+++ b/libc/test/src/math/smoke/CMakeLists.txt
@@ -1,6518 +1,6531 @@
-add_custom_target(libc-math-smoke-tests)
-add_dependencies(libc-math-unittests libc-math-smoke-tests)
-
-add_fp_unittest(
-  cosf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    cosf_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.cosf
-)
-
-add_fp_unittest(
-  cosf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    cosf16_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.cosf16
-)
-
-add_fp_unittest(
-  cospif_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    cospif_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.cospif
-    libc.src.__support.CPP.array
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  cospif16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    cospif16_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.cospif16
-    libc.src.__support.FPUtil.cast
-)
-
-add_fp_unittest(
-  sinf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    sinf_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.sinf
-    libc.src.__support.CPP.array
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  sinf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    sinf16_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.sinf16
-    libc.src.__support.FPUtil.cast
-)
-
-add_fp_unittest(
-  sinpif_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    sinpif_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.sinpif
-    libc.src.__support.CPP.array
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  sinpif16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    sinpif16_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.sinpif16
-)
-
-add_fp_unittest(
-  sincosf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    sincosf_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.sincosf
-    libc.src.__support.CPP.array
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  tanf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    tanf_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.tanf
-    libc.src.__support.CPP.array
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  tanf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    tanf16_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.tanf16
-)
-
-add_fp_unittest(
-  tanpif_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    tanpif_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.tanpif
-)
-
-add_fp_unittest(
-  tanpif16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    tanpif16_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.tanpif16
-)
-
-add_fp_unittest(
-  fabs_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fabs_test.cpp
-  HDRS
-    FAbsTest.h
-  DEPENDS
-    libc.src.math.fabs
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fabsf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fabsf_test.cpp
-  HDRS
-    FAbsTest.h
-  DEPENDS
-    libc.src.math.fabsf
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fabsl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fabsl_test.cpp
-  HDRS
-    FAbsTest.h
-  DEPENDS
-    libc.src.math.fabsl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fabsf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fabsf16_test.cpp
-  HDRS
-    FAbsTest.h
-  DEPENDS
-    libc.src.math.fabsf16
-)
-
-add_fp_unittest(
-  fabsf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fabsf128_test.cpp
-  HDRS
-    FAbsTest.h
-  DEPENDS
-    libc.src.math.fabsf128
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fabsbf16_test
-  SUITE
-  libc-math-smoke-tests
-  SRCS
-    fabsbf16_test.cpp
-  HDRS
-    FAbsTest.h
-  DEPENDS
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.math.fabsbf16
-)
-
-add_fp_unittest(
-  fadd_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fadd_test.cpp
-  HDRS
-    AddTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.fadd
-    libc.src.__support.macros.properties.os
-)
-
-add_fp_unittest(
-  faddl_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    faddl_test.cpp
-  HDRS
-    AddTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.faddl
-    libc.src.__support.macros.properties.os
-)
-
-add_fp_unittest(
-  faddf128_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    faddf128_test.cpp
-  HDRS
-    AddTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.faddf128
-    libc.src.__support.macros.properties.os
-)
-
-add_fp_unittest(
-  trunc_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    trunc_test.cpp
-  HDRS
-    TruncTest.h
-  DEPENDS
-    libc.src.math.trunc
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  truncf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    truncf_test.cpp
-  HDRS
-    TruncTest.h
-  DEPENDS
-    libc.src.math.truncf
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  truncl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    truncl_test.cpp
-  HDRS
-    TruncTest.h
-  DEPENDS
-    libc.src.math.truncl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  truncf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    truncf16_test.cpp
-  HDRS
-    TruncTest.h
-  DEPENDS
-    libc.src.math.truncf16
-)
-
-add_fp_unittest(
-  truncf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    truncf128_test.cpp
-  HDRS
-    TruncTest.h
-  DEPENDS
-    libc.src.math.truncf128
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  truncbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    truncbf16_test.cpp
-  HDRS
-    TruncTest.h
-  DEPENDS
-    libc.src.math.truncbf16
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  canonicalize_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    canonicalize_test.cpp
-  HDRS
-    CanonicalizeTest.h
-  DEPENDS
-    libc.src.math.canonicalize
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.integer_literals
-)
-
-add_fp_unittest(
-  canonicalizef_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    canonicalizef_test.cpp
-  HDRS
-    CanonicalizeTest.h
-  DEPENDS
-    libc.src.math.canonicalizef
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.integer_literals
-)
-
-add_fp_unittest(
-  canonicalizef16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    canonicalizef16_test.cpp
-  HDRS
-    CanonicalizeTest.h
-  DEPENDS
-    libc.src.math.canonicalizef16
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.integer_literals
-)
-
-add_fp_unittest(
-  canonicalizef128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    canonicalizef128_test.cpp
-  HDRS
-    CanonicalizeTest.h
-  DEPENDS
-    libc.src.math.canonicalizef128
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.integer_literals
-)
-
-add_fp_unittest(
-  canonicalizel_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    canonicalizel_test.cpp
-  HDRS
-    CanonicalizeTest.h
-  DEPENDS
-    libc.src.math.canonicalizel
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.integer_literals
-)
-
-add_fp_unittest(
-  canonicalizebf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    canonicalizebf16_test.cpp
-  HDRS
-    CanonicalizeTest.h
-  DEPENDS
-    libc.src.math.canonicalizebf16
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.integer_literals
-)
-
-add_fp_unittest(
-  iscanonical_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    iscanonical_test.cpp
-  HDRS
-    IsCanonicalTest.h
-  DEPENDS
-    libc.src.math.iscanonical
-)
-
-add_fp_unittest(
-  iscanonicalf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    iscanonicalf_test.cpp
-  HDRS
-    IsCanonicalTest.h
-  DEPENDS
-    libc.src.math.iscanonicalf
-)
-
-add_fp_unittest(
-  iscanonicall_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    iscanonicall_test.cpp
-  HDRS
-    IsCanonicalTest.h
-  DEPENDS
-    libc.src.math.iscanonicall
-)
-
-add_fp_unittest(
-  iscanonicalf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    iscanonicalf16_test.cpp
-  HDRS
-    IsCanonicalTest.h
-  DEPENDS
-    libc.src.math.iscanonicalf16
-)
-
-add_fp_unittest(
-  iscanonicalf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    iscanonicalf128_test.cpp
-  HDRS
-    IsCanonicalTest.h
-  DEPENDS
-    libc.src.math.iscanonicalf128
-)
-
-add_fp_unittest(
-  iscanonicalbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    iscanonicalbf16_test.cpp
-  HDRS
-    IsCanonicalTest.h
-  DEPENDS
-    libc.src.math.iscanonicalbf16
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  ceil_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    ceil_test.cpp
-  HDRS
-    CeilTest.h
-  DEPENDS
-    libc.src.math.ceil
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  ceilf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    ceilf_test.cpp
-  HDRS
-    CeilTest.h
-  DEPENDS
-    libc.src.math.ceilf
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  ceill_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    ceill_test.cpp
-  HDRS
-    CeilTest.h
-  DEPENDS
-    libc.src.math.ceill
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  ceilf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    ceilf16_test.cpp
-  HDRS
-    CeilTest.h
-  DEPENDS
-    libc.src.math.ceilf16
-)
-
-add_fp_unittest(
-  ceilf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    ceilf128_test.cpp
-  HDRS
-    CeilTest.h
-  DEPENDS
-    libc.src.math.ceilf128
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  ceilbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    ceilbf16_test.cpp
-  HDRS
-    CeilTest.h
-  DEPENDS
-    libc.src.math.ceilbf16
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  dfmal_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    dfmal_test.cpp
-  HDRS
-    FmaTest.h
-  DEPENDS
-    libc.src.math.dfmal
-    libc.src.__support.macros.properties.types
-)
-
-add_fp_unittest(
-  dfmaf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    dfmaf128_test.cpp
-  HDRS
-    FmaTest.h
-  DEPENDS
-    libc.src.math.dfmaf128
-    libc.src.__support.macros.properties.types
-)
-
-add_fp_unittest(
-  dsubl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    dsubl_test.cpp
-  HDRS
-    SubTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.dsubl
-    libc.src.__support.macros.properties.os
-)
-
-add_fp_unittest(
-  dsubf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    dsubf128_test.cpp
-  HDRS
-    SubTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.dsubf128
-    libc.src.__support.macros.properties.os
-)
-
-add_fp_unittest(
-  floor_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    floor_test.cpp
-  HDRS
-    FloorTest.h
-  DEPENDS
-    libc.src.math.floor
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  floorf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    floorf_test.cpp
-  HDRS
-    FloorTest.h
-  DEPENDS
-    libc.src.math.floorf
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  floorl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    floorl_test.cpp
-  HDRS
-    FloorTest.h
-  DEPENDS
-    libc.src.math.floorl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  floorf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    floorf16_test.cpp
-  HDRS
-    FloorTest.h
-  DEPENDS
-    libc.src.math.floorf16
-)
-
-add_fp_unittest(
-  floorf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    floorf128_test.cpp
-  HDRS
-    FloorTest.h
-  DEPENDS
-    libc.src.math.floorf128
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  floorbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    floorbf16_test.cpp
-  HDRS
-    FloorTest.h
-  DEPENDS
-    libc.src.math.floorbf16
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  round_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    round_test.cpp
-  HDRS
-    RoundTest.h
-  DEPENDS
-    libc.src.math.round
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  roundf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    roundf_test.cpp
-  HDRS
-    RoundTest.h
-  DEPENDS
-    libc.src.math.roundf
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  roundl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    roundl_test.cpp
-  HDRS
-    RoundTest.h
-  DEPENDS
-    libc.src.math.roundl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  roundf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    roundf16_test.cpp
-  HDRS
-    RoundTest.h
-  DEPENDS
-    libc.src.math.roundf16
-)
-
-add_fp_unittest(
-  roundf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    roundf128_test.cpp
-  HDRS
-    RoundTest.h
-  DEPENDS
-    libc.src.math.roundf128
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  roundbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    roundbf16_test.cpp
-  HDRS
-    RoundTest.h
-  DEPENDS
-    libc.src.math.roundbf16
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  roundeven_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    roundeven_test.cpp
-  HDRS
-  RoundEvenTest.h
-  DEPENDS
-    libc.src.math.roundeven
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  roundevenf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    roundevenf_test.cpp
-  HDRS
-  RoundEvenTest.h
-  DEPENDS
-    libc.src.math.roundevenf
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  roundevenl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    roundevenl_test.cpp
-  HDRS
-  RoundEvenTest.h
-  DEPENDS
-    libc.src.math.roundevenl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  roundevenf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    roundevenf16_test.cpp
-  HDRS
-    RoundEvenTest.h
-  DEPENDS
-    libc.src.math.roundevenf16
-)
-
-add_fp_unittest(
-  roundevenf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    roundevenf128_test.cpp
-  HDRS
-  RoundEvenTest.h
-  DEPENDS
-    libc.src.math.roundevenf128
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  roundevenbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    roundevenbf16_test.cpp
-  HDRS
-    RoundEvenTest.h
-  DEPENDS
-    libc.src.math.roundevenbf16
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  lround_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    lround_test.cpp
-  HDRS
-    RoundToIntegerTest.h
-  DEPENDS
-    libc.src.errno.errno
-    libc.src.math.lround
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  lroundf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    lroundf_test.cpp
-  HDRS
-    RoundToIntegerTest.h
-  DEPENDS
-    libc.src.errno.errno
-    libc.src.math.lroundf
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  lroundl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    lroundl_test.cpp
-  HDRS
-    RoundToIntegerTest.h
-  DEPENDS
-    libc.src.errno.errno
-    libc.src.math.lroundl
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  lroundf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    lroundf16_test.cpp
-  HDRS
-    RoundToIntegerTest.h
-  DEPENDS
-    libc.src.errno.errno
-    libc.src.math.lroundf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  lroundf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    lroundf128_test.cpp
-  HDRS
-    RoundToIntegerTest.h
-  DEPENDS
-    libc.src.errno.errno
-    libc.src.math.lroundf128
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  lroundbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    lroundbf16_test.cpp
-  HDRS
-    RoundToIntegerTest.h
-  DEPENDS
-    libc.src.errno.errno
-    libc.src.math.lroundbf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  llround_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    llround_test.cpp
-  HDRS
-    RoundToIntegerTest.h
-  DEPENDS
-    libc.src.errno.errno
-    libc.src.math.llround
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  llroundf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    llroundf_test.cpp
-  HDRS
-    RoundToIntegerTest.h
-  DEPENDS
-    libc.src.errno.errno
-    libc.src.math.llroundf
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  llroundl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    llroundl_test.cpp
-  HDRS
-    RoundToIntegerTest.h
-  DEPENDS
-    libc.src.errno.errno
-    libc.src.math.llroundl
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  llroundf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    llroundf16_test.cpp
-  HDRS
-    RoundToIntegerTest.h
-  DEPENDS
-    libc.src.errno.errno
-    libc.src.math.llroundf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  llroundf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    llroundf128_test.cpp
-  HDRS
-    RoundToIntegerTest.h
-  DEPENDS
-    libc.src.errno.errno
-    libc.src.math.llroundf128
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  llroundbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    llroundbf16_test.cpp
-  HDRS
-    RoundToIntegerTest.h
-  DEPENDS
-    libc.src.errno.errno
-    libc.src.math.llroundbf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  rint_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    rint_test.cpp
-  HDRS
-    RIntTest.h
-  DEPENDS
-    libc.src.math.rint
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  rintf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    rintf_test.cpp
-  HDRS
-    RIntTest.h
-  DEPENDS
-    libc.src.math.rintf
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  rintl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    rintl_test.cpp
-  HDRS
-    RIntTest.h
-  DEPENDS
-    libc.src.math.rintl
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  rintf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    rintf16_test.cpp
-  HDRS
-    RIntTest.h
-  DEPENDS
-    libc.src.math.rintf16
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  rintf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    rintf128_test.cpp
-  HDRS
-    RIntTest.h
-  DEPENDS
-    libc.src.math.rintf128
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  rintbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    rintbf16_test.cpp
-  HDRS
-    RIntTest.h
-  DEPENDS
-    libc.src.math.rintbf16
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  lrint_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    lrint_test.cpp
-  HDRS
-    RoundToIntegerTest.h
-  DEPENDS
-    libc.src.errno.errno
-    libc.src.math.lrint
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  lrintf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    lrintf_test.cpp
-  HDRS
-    RoundToIntegerTest.h
-  DEPENDS
-    libc.src.errno.errno
-    libc.src.math.lrintf
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  lrintl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    lrintl_test.cpp
-  HDRS
-    RoundToIntegerTest.h
-  DEPENDS
-    libc.src.errno.errno
-    libc.src.math.lrintl
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  lrintf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    lrintf16_test.cpp
-  HDRS
-    RoundToIntegerTest.h
-  DEPENDS
-    libc.src.errno.errno
-    libc.src.math.lrintf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  lrintf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    lrintf128_test.cpp
-  HDRS
-    RoundToIntegerTest.h
-  DEPENDS
-    libc.src.errno.errno
-    libc.src.math.lrintf128
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  lrintbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    lrintbf16_test.cpp
-  HDRS
-    RoundToIntegerTest.h
-  DEPENDS
-    libc.src.errno.errno
-    libc.src.math.lrintbf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  llrint_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    llrint_test.cpp
-  HDRS
-    RoundToIntegerTest.h
-  DEPENDS
-    libc.src.errno.errno
-    libc.src.math.llrint
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  llrintf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    llrintf_test.cpp
-  HDRS
-    RoundToIntegerTest.h
-  DEPENDS
-    libc.src.errno.errno
-    libc.src.math.llrintf
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  llrintl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    llrintl_test.cpp
-  HDRS
-    RoundToIntegerTest.h
-  DEPENDS
-    libc.src.errno.errno
-    libc.src.math.llrintl
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  llrintf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    llrintf16_test.cpp
-  HDRS
-    RoundToIntegerTest.h
-  DEPENDS
-    libc.src.errno.errno
-    libc.src.math.llrintf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  llrintf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    llrintf128_test.cpp
-  HDRS
-    RoundToIntegerTest.h
-  DEPENDS
-    libc.src.errno.errno
-    libc.src.math.llrintf128
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  llrintbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    llrintbf16_test.cpp
-  HDRS
-    RoundToIntegerTest.h
-  DEPENDS
-    libc.src.errno.errno
-    libc.src.math.llrintbf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  exp_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    exp_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.exp
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  expf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    expf_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.expf
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  expf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    expf16_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.expf16
-    libc.src.__support.FPUtil.cast
-)
-
-add_fp_unittest(
-  exp2_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    exp2_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.exp2
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  exp2f_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    exp2f_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.exp2f
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  exp2f16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    exp2f16_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.exp2f16
-    libc.src.__support.FPUtil.cast
-)
-
-add_fp_unittest(
-  exp2m1f_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    exp2m1f_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.exp2m1f
-)
-
-add_fp_unittest(
-  exp2m1f16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    exp2m1f16_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.exp2m1f16
-    libc.src.__support.FPUtil.cast
-)
-
-add_fp_unittest(
-  exp10_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    exp10_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.exp10
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  exp10f_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    exp10f_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.exp10f
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  exp10f16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    exp10f16_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.exp10f16
-    libc.src.__support.FPUtil.cast
-)
-
-add_fp_unittest(
-  exp10m1f16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    exp10m1f16_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.exp10m1f16
-    libc.src.__support.FPUtil.cast
-)
-
-add_fp_unittest(
-  exp10m1f_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    exp10m1f_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.exp10m1f
-)
-
-add_fp_unittest(
-  copysign_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    copysign_test.cpp
-  HDRS
-    CopySignTest.h
-  DEPENDS
-    libc.src.math.copysign
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  copysignf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    copysignf_test.cpp
-  HDRS
-    CopySignTest.h
-  DEPENDS
-    libc.src.math.copysignf
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  copysignl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    copysignl_test.cpp
-  HDRS
-    CopySignTest.h
-  DEPENDS
-    libc.src.math.copysignl
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  copysignf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    copysignf16_test.cpp
-  HDRS
-    CopySignTest.h
-  DEPENDS
-    libc.src.math.copysignf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  copysignf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    copysignf128_test.cpp
-  HDRS
-    CopySignTest.h
-  DEPENDS
-    libc.src.math.copysignf128
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  copysignbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    copysignbf16_test.cpp
-  HDRS
-    CopySignTest.h
-  DEPENDS
-    libc.src.math.copysignbf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  frexp_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    frexp_test.cpp
-  HDRS
-    FrexpTest.h
-  DEPENDS
-    libc.src.math.frexp
-)
-
-add_fp_unittest(
-  frexpf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    frexpf_test.cpp
-  HDRS
-    FrexpTest.h
-  DEPENDS
-    libc.src.math.frexpf
-)
-
-add_fp_unittest(
-  frexpl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    frexpl_test.cpp
-  HDRS
-    FrexpTest.h
-  DEPENDS
-    libc.src.math.frexpl
-)
-
-add_fp_unittest(
-  frexpf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    frexpf16_test.cpp
-  HDRS
-    FrexpTest.h
-  DEPENDS
-    libc.src.math.frexpf16
-)
-
-add_fp_unittest(
-  frexpf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    frexpf128_test.cpp
-  HDRS
-    FrexpTest.h
-  DEPENDS
-    libc.src.math.frexpf128
-)
-
-add_fp_unittest(
-  frexpbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    frexpbf16_test.cpp
-  HDRS
-    FrexpTest.h
-  DEPENDS
-    libc.src.math.frexpbf16
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  fromfp_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fromfp_test.cpp
-  HDRS
-    FromfpTest.h
-  DEPENDS
-    libc.src.math.fromfp
-)
-
-add_fp_unittest(
-  fromfpf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fromfpf_test.cpp
-  HDRS
-    FromfpTest.h
-  DEPENDS
-    libc.src.math.fromfpf
-)
-
-add_fp_unittest(
-  fromfpl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fromfpl_test.cpp
-  HDRS
-    FromfpTest.h
-  DEPENDS
-    libc.src.math.fromfpl
-)
-
-add_fp_unittest(
-  fromfpf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fromfpf16_test.cpp
-  HDRS
-    FromfpTest.h
-  DEPENDS
-    libc.src.math.fromfpf16
-)
-
-add_fp_unittest(
-  fromfpf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fromfpf128_test.cpp
-  HDRS
-    FromfpTest.h
-  DEPENDS
-    libc.src.math.fromfpf128
-)
-
-add_fp_unittest(
-  fromfpbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fromfpbf16_test.cpp
-  HDRS
-    FromfpTest.h
-  DEPENDS
-    libc.src.math.fromfpbf16
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  fromfpx_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fromfpx_test.cpp
-  HDRS
-    FromfpxTest.h
-  DEPENDS
-    libc.src.math.fromfpx
-)
-
-add_fp_unittest(
-  fromfpxf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fromfpxf_test.cpp
-  HDRS
-    FromfpxTest.h
-  DEPENDS
-    libc.src.math.fromfpxf
-)
-
-add_fp_unittest(
-  fromfpxl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fromfpxl_test.cpp
-  HDRS
-    FromfpxTest.h
-  DEPENDS
-    libc.src.math.fromfpxl
-)
-
-add_fp_unittest(
-  fromfpxf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fromfpxf16_test.cpp
-  HDRS
-    FromfpxTest.h
-  DEPENDS
-    libc.src.math.fromfpxf16
-)
-
-add_fp_unittest(
-  fromfpxf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fromfpxf128_test.cpp
-  HDRS
-    FromfpxTest.h
-  DEPENDS
-    libc.src.math.fromfpxf128
-)
-
-add_fp_unittest(
-  fromfpxbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fromfpxbf16_test.cpp
-  HDRS
-    FromfpxTest.h
-  DEPENDS
-    libc.src.math.fromfpxbf16
-    libc.src.__support.FPUtil.bfloat16
-)
-
-
-add_fp_unittest(
-  ufromfp_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    ufromfp_test.cpp
-  HDRS
-    UfromfpTest.h
-  DEPENDS
-    libc.src.math.ufromfp
-)
-
-add_fp_unittest(
-  ufromfpf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    ufromfpf_test.cpp
-  HDRS
-    UfromfpTest.h
-  DEPENDS
-    libc.src.math.ufromfpf
-)
-
-add_fp_unittest(
-  ufromfpl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    ufromfpl_test.cpp
-  HDRS
-    UfromfpTest.h
-  DEPENDS
-    libc.src.math.ufromfpl
-)
-
-add_fp_unittest(
-  ufromfpf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    ufromfpf16_test.cpp
-  HDRS
-    UfromfpTest.h
-  DEPENDS
-    libc.src.math.ufromfpf16
-)
-
-add_fp_unittest(
-  ufromfpf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    ufromfpf128_test.cpp
-  HDRS
-    UfromfpTest.h
-  DEPENDS
-    libc.src.math.ufromfpf128
-)
-
-add_fp_unittest(
-  ufromfpbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    ufromfpbf16_test.cpp
-  HDRS
-    UfromfpTest.h
-  DEPENDS
-    libc.src.math.ufromfpbf16
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  ufromfpx_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    ufromfpx_test.cpp
-  HDRS
-    UfromfpxTest.h
-  DEPENDS
-    libc.src.math.ufromfpx
-)
-
-add_fp_unittest(
-  ufromfpxf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    ufromfpxf_test.cpp
-  HDRS
-    UfromfpxTest.h
-  DEPENDS
-    libc.src.math.ufromfpxf
-)
-
-add_fp_unittest(
-  ufromfpxl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    ufromfpxl_test.cpp
-  HDRS
-    UfromfpxTest.h
-  DEPENDS
-    libc.src.math.ufromfpxl
-)
-
-add_fp_unittest(
-  ufromfpxf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    ufromfpxf16_test.cpp
-  HDRS
-    UfromfpxTest.h
-  DEPENDS
-    libc.src.math.ufromfpxf16
-)
-
-add_fp_unittest(
-  ufromfpxf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    ufromfpxf128_test.cpp
-  HDRS
-    UfromfpxTest.h
-  DEPENDS
-    libc.src.math.ufromfpxf128
-)
-
-add_fp_unittest(
-  ufromfpxbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    ufromfpxbf16_test.cpp
-  HDRS
-    UfromfpxTest.h
-  DEPENDS
-    libc.src.math.ufromfpxbf16
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  ilogb_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    ilogb_test.cpp
-  HDRS
-    ILogbTest.h
-  DEPENDS
-    libc.src.math.ilogb
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.manipulation_functions
-)
-
-add_fp_unittest(
-  ilogbf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    ilogbf_test.cpp
-  HDRS
-    ILogbTest.h
-  DEPENDS
-    libc.src.math.ilogbf
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.manipulation_functions
-)
-
-add_fp_unittest(
-  ilogbl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    ilogbl_test.cpp
-  HDRS
-    ILogbTest.h
-  DEPENDS
-    libc.src.math.ilogbl
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.manipulation_functions
-)
-
-add_fp_unittest(
-  ilogbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    ilogbf16_test.cpp
-  HDRS
-    ILogbTest.h
-  DEPENDS
-    libc.src.math.ilogbf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.manipulation_functions
-)
-
-add_fp_unittest(
-  ilogbf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    ilogbf128_test.cpp
-  HDRS
-    ILogbTest.h
-  DEPENDS
-    libc.src.math.ilogbf128
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.manipulation_functions
-)
-
-add_fp_unittest(
-  ilogbbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    ilogbbf16_test.cpp
-  HDRS
-    ILogbTest.h
-  DEPENDS
-    libc.src.math.ilogbbf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.manipulation_functions
-)
-
-add_fp_unittest(
-  issignaling_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    issignaling_test.cpp
-  HDRS
-    IsSignalingTest.h
-  DEPENDS
-    libc.src.math.issignaling
-)
-
-add_fp_unittest(
-  issignalingf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    issignalingf_test.cpp
-  HDRS
-    IsSignalingTest.h
-  DEPENDS
-    libc.src.math.issignalingf
-)
-
-add_fp_unittest(
-  issignalingl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    issignalingl_test.cpp
-  HDRS
-    IsSignalingTest.h
-  DEPENDS
-    libc.src.math.issignalingl
-)
-
-add_fp_unittest(
-  issignalingf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    issignalingf16_test.cpp
-  HDRS
-    IsSignalingTest.h
-  DEPENDS
-    libc.src.math.issignalingf16
-)
-
-add_fp_unittest(
-  issignalingf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    issignalingf128_test.cpp
-  HDRS
-    IsSignalingTest.h
-  DEPENDS
-    libc.src.math.issignalingf128
-)
-
-add_fp_unittest(
-  issignalingbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    issignalingbf16_test.cpp
-  HDRS
-    IsSignalingTest.h
-  DEPENDS
-    libc.src.math.issignalingbf16
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  llogb_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    llogb_test.cpp
-  HDRS
-    ILogbTest.h
-  DEPENDS
-    libc.src.math.llogb
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.manipulation_functions
-)
-
-add_fp_unittest(
-  llogbf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    llogbf_test.cpp
-  HDRS
-    ILogbTest.h
-  DEPENDS
-    libc.src.math.llogbf
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.manipulation_functions
-)
-
-add_fp_unittest(
-  llogbl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    llogbl_test.cpp
-  HDRS
-    ILogbTest.h
-  DEPENDS
-    libc.src.math.llogbl
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.manipulation_functions
-)
-
-add_fp_unittest(
-  llogbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    llogbf16_test.cpp
-  HDRS
-    ILogbTest.h
-  DEPENDS
-    libc.src.math.llogbf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.manipulation_functions
-)
-
-add_fp_unittest(
-  llogbf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    llogbf128_test.cpp
-  HDRS
-    ILogbTest.h
-  DEPENDS
-    libc.src.math.llogbf128
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.manipulation_functions
-)
-
-add_fp_unittest(
-  llogbbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    llogbbf16_test.cpp
-  HDRS
-    ILogbTest.h
-  DEPENDS
-    libc.src.math.llogbbf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.manipulation_functions
-)
-
-add_fp_unittest(
-  ldexp_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    ldexp_test.cpp
-  HDRS
-    LdExpTest.h
-  DEPENDS
-    libc.src.math.ldexp
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.CPP.limits
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.normal_float
-)
-
-add_fp_unittest(
-  ldexpf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    ldexpf_test.cpp
-  HDRS
-    LdExpTest.h
-  DEPENDS
-    libc.src.math.ldexpf
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.CPP.limits
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.normal_float
-)
-
-add_fp_unittest(
-  ldexpl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    ldexpl_test.cpp
-  HDRS
-    LdExpTest.h
-  DEPENDS
-    libc.src.math.ldexpl
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.CPP.limits
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.normal_float
-)
-
-add_fp_unittest(
-  ldexpf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    ldexpf16_test.cpp
-  HDRS
-    LdExpTest.h
-  DEPENDS
-    libc.src.math.ldexpf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.CPP.limits
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.normal_float
-)
-
-add_fp_unittest(
-  ldexpf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    ldexpf128_test.cpp
-  HDRS
-    LdExpTest.h
-  DEPENDS
-    libc.src.math.ldexpf128
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.CPP.limits
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.normal_float
-)
-
-add_fp_unittest(
-  ldexpbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    ldexpbf16_test.cpp
-  HDRS
-    LdExpTest.h
-  DEPENDS
-    libc.src.math.ldexpbf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.CPP.limits
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.normal_float
-)
-
-add_fp_unittest(
-  logb_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    logb_test.cpp
-  HDRS
-    LogbTest.h
-  DEPENDS
-    libc.src.math.logb
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.manipulation_functions
-)
-
-add_fp_unittest(
-  logbf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    logbf_test.cpp
-  HDRS
-    LogbTest.h
-  DEPENDS
-    libc.src.math.logbf
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.manipulation_functions
-)
-
-add_fp_unittest(
-  logbl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    logbl_test.cpp
-  HDRS
-    LogbTest.h
-  DEPENDS
-    libc.src.math.logbl
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.manipulation_functions
-)
-
-add_fp_unittest(
-  logbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    logbf16_test.cpp
-  HDRS
-    LogbTest.h
-  DEPENDS
-    libc.src.math.logbf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.manipulation_functions
-)
-
-add_fp_unittest(
-  logbf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    logbf128_test.cpp
-  HDRS
-    LogbTest.h
-  DEPENDS
-    libc.src.math.logbf128
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.manipulation_functions
-)
-
-add_fp_unittest(
-  logbbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    logbbf16_test.cpp
-  HDRS
-    LogbTest.h
-  DEPENDS
-    libc.src.math.logbbf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.__support.FPUtil.manipulation_functions
-)
-
-add_fp_unittest(
-  modf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    modf_test.cpp
-  HDRS
-    ModfTest.h
-  DEPENDS
-    libc.src.math.modf
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.basic_operations
-    libc.src.__support.FPUtil.nearest_integer_operations
-)
-
-add_fp_unittest(
-  modff_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    modff_test.cpp
-  HDRS
-    ModfTest.h
-  DEPENDS
-    libc.src.math.modff
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.basic_operations
-    libc.src.__support.FPUtil.nearest_integer_operations
-)
-
-add_fp_unittest(
-  modfl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    modfl_test.cpp
-  HDRS
-    ModfTest.h
-  DEPENDS
-    libc.src.math.modfl
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.basic_operations
-    libc.src.__support.FPUtil.nearest_integer_operations
-)
-
-add_fp_unittest(
-  modff16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    modff16_test.cpp
-  HDRS
-    ModfTest.h
-  DEPENDS
-    libc.src.math.modff16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.basic_operations
-    libc.src.__support.FPUtil.nearest_integer_operations
-)
-
-add_fp_unittest(
-  modff128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    modff128_test.cpp
-  HDRS
-    ModfTest.h
-  DEPENDS
-    libc.src.math.modff128
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.basic_operations
-    libc.src.__support.FPUtil.nearest_integer_operations
-)
-
-add_fp_unittest(
-  modfbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    modfbf16_test.cpp
-  HDRS
-    ModfTest.h
-  DEPENDS
-    libc.src.math.modfbf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.basic_operations
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.__support.FPUtil.nearest_integer_operations
-)
-
-add_fp_unittest(
-  fdimf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fdimf_test.cpp
-  HDRS
-    FDimTest.h
-  DEPENDS
-    libc.src.math.fdimf
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fdim_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fdim_test.cpp
-  HDRS
-    FDimTest.h
-  DEPENDS
-    libc.src.math.fdim
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fdiml_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fdiml_test.cpp
-  HDRS
-    FDimTest.h
-  DEPENDS
-    libc.src.math.fdiml
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fdimf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fdimf16_test.cpp
-  HDRS
-    FDimTest.h
-  DEPENDS
-    libc.src.math.fdimf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fdimf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fdimf128_test.cpp
-  HDRS
-    FDimTest.h
-  DEPENDS
-    libc.src.math.fdimf128
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fdimbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fdimbf16_test.cpp
-  HDRS
-    FDimTest.h
-  DEPENDS
-    libc.src.math.fdimbf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fminf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fminf_test.cpp
-  HDRS
-    FMinTest.h
-  DEPENDS
-    libc.src.math.fminf
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fmin_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fmin_test.cpp
-  HDRS
-    FMinTest.h
-  DEPENDS
-    libc.src.math.fmin
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fminl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fminl_test.cpp
-  HDRS
-    FMinTest.h
-  DEPENDS
-    libc.src.math.fminl
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fminf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fminf128_test.cpp
-  HDRS
-    FMinTest.h
-  DEPENDS
-    libc.src.math.fminf128
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fminf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fminf16_test.cpp
-  HDRS
-    FMinTest.h
-  DEPENDS
-    libc.src.math.fminf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fminbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fminbf16_test.cpp
-  HDRS
-    FMinTest.h
-  DEPENDS
-    libc.src.math.fminbf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fmaxf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fmaxf_test.cpp
-  HDRS
-    FMaxTest.h
-  DEPENDS
-    libc.src.math.fmaxf
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fmax_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fmax_test.cpp
-  HDRS
-    FMaxTest.h
-  DEPENDS
-    libc.src.math.fmax
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fmaxl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fmaxl_test.cpp
-  HDRS
-    FMaxTest.h
-  DEPENDS
-    libc.src.math.fmaxl
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fmaxf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fmaxf128_test.cpp
-  HDRS
-    FMaxTest.h
-  DEPENDS
-    libc.src.math.fmaxf128
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fmaxf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fmaxf16_test.cpp
-  HDRS
-    FMaxTest.h
-  DEPENDS
-    libc.src.math.fmaxf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fmaxbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fmaxbf16_test.cpp
-  HDRS
-    FMaxTest.h
-  DEPENDS
-    libc.src.math.fmaxbf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fmaximuml_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fmaximuml_test.cpp
-  HDRS
-    FMaximumTest.h
-  DEPENDS
-    libc.src.math.fmaximuml
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fmaximumf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fmaximumf16_test.cpp
-  HDRS
-    FMaximumTest.h
-  DEPENDS
-    libc.src.math.fmaximumf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fmaximumf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fmaximumf128_test.cpp
-  HDRS
-    FMaximumTest.h
-  DEPENDS
-    libc.src.math.fmaximumf128
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fmaximum_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fmaximum_test.cpp
-  HDRS
-    FMaximumTest.h
-  DEPENDS
-    libc.src.math.fmaximum
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fmaximumf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fmaximumf_test.cpp
-  HDRS
-    FMaximumTest.h
-  DEPENDS
-    libc.src.math.fmaximumf
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fmaximum_numf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fmaximum_numf_test.cpp
-  HDRS
-    FMaximumNumTest.h
-  DEPENDS
-    libc.src.math.fmaximum_numf
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fmaximumbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fmaximumbf16_test.cpp
-  HDRS
-    FMaximumTest.h
-  DEPENDS
-    libc.src.math.fmaximumbf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fmaximum_num_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fmaximum_num_test.cpp
-  HDRS
-    FMaximumNumTest.h
-  DEPENDS
-    libc.src.math.fmaximum_num
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fmaximum_numl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fmaximum_numl_test.cpp
-  HDRS
-    FMaximumNumTest.h
-  DEPENDS
-    libc.src.math.fmaximum_numl
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fmaximum_numf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fmaximum_numf16_test.cpp
-  HDRS
-    FMaximumNumTest.h
-  DEPENDS
-    libc.src.math.fmaximum_numf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fmaximum_numf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fmaximum_numf128_test.cpp
-  HDRS
-    FMaximumNumTest.h
-  DEPENDS
-    libc.src.math.fmaximum_numf128
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fmaximum_numbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fmaximum_numbf16_test.cpp
-  HDRS
-    FMaximumTest.h
-  DEPENDS
-    libc.src.math.fmaximum_numbf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fmaximum_magf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fmaximum_magf_test.cpp
-  HDRS
-    FMaximumMagTest.h
-  DEPENDS
-    libc.src.math.fmaximum_magf
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.basic_operations
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fmaximum_mag_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fmaximum_mag_test.cpp
-  HDRS
-    FMaximumMagTest.h
-  DEPENDS
-    libc.src.math.fmaximum_mag
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.basic_operations
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fmaximum_magl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fmaximum_magl_test.cpp
-  HDRS
-    FMaximumMagTest.h
-  DEPENDS
-    libc.src.math.fmaximum_magl
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.basic_operations
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fmaximum_magf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fmaximum_magf16_test.cpp
-  HDRS
-    FMaximumMagTest.h
-  DEPENDS
-    libc.src.math.fmaximum_magf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.basic_operations
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fmaximum_magf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fmaximum_magf128_test.cpp
-  HDRS
-    FMaximumMagTest.h
-  DEPENDS
-    libc.src.math.fmaximum_magf128
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.basic_operations
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fmaximum_magbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fmaximum_magbf16_test.cpp
-  HDRS
-    FMaximumTest.h
-  DEPENDS
-    libc.src.math.fmaximum_magbf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fmaximum_mag_numf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fmaximum_mag_numf_test.cpp
-  HDRS
-    FMaximumMagNumTest.h
-  DEPENDS
-    libc.src.math.fmaximum_mag_numf
-    libc.src.__support.FPUtil.basic_operations
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fmaximum_mag_num_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fmaximum_mag_num_test.cpp
-  HDRS
-    FMaximumMagNumTest.h
-  DEPENDS
-    libc.src.math.fmaximum_mag_num
-    libc.src.__support.FPUtil.basic_operations
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fmaximum_mag_numl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fmaximum_mag_numl_test.cpp
-  HDRS
-    FMaximumMagNumTest.h
-  DEPENDS
-    libc.src.math.fmaximum_mag_numl
-    libc.src.__support.FPUtil.basic_operations
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fmaximum_mag_numf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fmaximum_mag_numf16_test.cpp
-  HDRS
-    FMaximumMagNumTest.h
-  DEPENDS
-    libc.src.math.fmaximum_mag_numf16
-    libc.src.__support.FPUtil.basic_operations
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fmaximum_mag_numf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fmaximum_mag_numf128_test.cpp
-  HDRS
-    FMaximumMagNumTest.h
-  DEPENDS
-    libc.src.math.fmaximum_mag_numf128
-    libc.src.__support.FPUtil.basic_operations
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fmaximum_mag_numbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fmaximum_mag_numbf16_test.cpp
-  HDRS
-    FMaximumTest.h
-  DEPENDS
-    libc.src.math.fmaximum_mag_numbf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fminimuml_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fminimuml_test.cpp
-  HDRS
-    FMinimumTest.h
-  DEPENDS
-    libc.src.math.fminimuml
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fminimumf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fminimumf16_test.cpp
-  HDRS
-    FMinimumTest.h
-  DEPENDS
-    libc.src.math.fminimumf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fminimumf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fminimumf128_test.cpp
-  HDRS
-    FMinimumTest.h
-  DEPENDS
-    libc.src.math.fminimumf128
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fminimum_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fminimum_test.cpp
-  HDRS
-    FMinimumTest.h
-  DEPENDS
-    libc.src.math.fminimum
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fminimumf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fminimumf_test.cpp
-  HDRS
-    FMinimumTest.h
-  DEPENDS
-    libc.src.math.fminimumf
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fminimumbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fminimumbf16_test.cpp
-  HDRS
-    FMaximumTest.h
-  DEPENDS
-    libc.src.math.fminimumbf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fminimum_numf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fminimum_numf_test.cpp
-  HDRS
-    FMinimumNumTest.h
-  DEPENDS
-    libc.src.math.fminimum_numf
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fminimum_num_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fminimum_num_test.cpp
-  HDRS
-    FMinimumNumTest.h
-  DEPENDS
-    libc.src.math.fminimum_num
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fminimum_numl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fminimum_numl_test.cpp
-  HDRS
-    FMinimumNumTest.h
-  DEPENDS
-    libc.src.math.fminimum_numl
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fminimum_numf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fminimum_numf16_test.cpp
-  HDRS
-    FMinimumNumTest.h
-  DEPENDS
-    libc.src.math.fminimum_numf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fminimum_numf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fminimum_numf128_test.cpp
-  HDRS
-    FMinimumNumTest.h
-  DEPENDS
-    libc.src.math.fminimum_numf128
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fminimum_numbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fminimum_numf16_test.cpp
-  HDRS
-    FMaximumTest.h
-  DEPENDS
-    libc.src.math.fminimum_numf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fminimum_magf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fminimum_magf_test.cpp
-  HDRS
-    FMinimumMagTest.h
-  DEPENDS
-    libc.src.math.fminimum_magf
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fminimum_mag_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fminimum_mag_test.cpp
-  HDRS
-    FMinimumMagTest.h
-  DEPENDS
-    libc.src.math.fminimum_mag
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fminimum_magl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fminimum_magl_test.cpp
-  HDRS
-    FMinimumMagTest.h
-  DEPENDS
-    libc.src.math.fminimum_magl
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fminimum_magf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fminimum_magf16_test.cpp
-  HDRS
-    FMinimumMagTest.h
-  DEPENDS
-    libc.src.math.fminimum_magf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fminimum_magf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fminimum_magf128_test.cpp
-  HDRS
-    FMinimumMagTest.h
-  DEPENDS
-    libc.src.math.fminimum_magf128
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fminimum_magbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fminimum_magbf16_test.cpp
-  HDRS
-    FMaximumTest.h
-  DEPENDS
-    libc.src.math.fminimum_magbf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fminimum_mag_numf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fminimum_mag_numf_test.cpp
-  HDRS
-    FMinimumMagNumTest.h
-  DEPENDS
-    libc.src.math.fminimum_mag_numf
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fminimum_mag_num_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fminimum_mag_num_test.cpp
-  HDRS
-    FMinimumMagNumTest.h
-  DEPENDS
-    libc.src.math.fminimum_mag_num
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fminimum_mag_numl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fminimum_mag_numl_test.cpp
-  HDRS
-    FMinimumMagNumTest.h
-  DEPENDS
-    libc.src.math.fminimum_mag_numl
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fminimum_mag_numf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fminimum_mag_numf16_test.cpp
-  HDRS
-    FMinimumMagNumTest.h
-  DEPENDS
-    libc.src.math.fminimum_mag_numf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fminimum_mag_numf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fminimum_mag_numf128_test.cpp
-  HDRS
-    FMinimumMagNumTest.h
-  DEPENDS
-    libc.src.math.fminimum_mag_numf128
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fminimum_mag_numbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fminimum_mag_numbf16_test.cpp
-  HDRS
-    FMaximumTest.h
-  DEPENDS
-    libc.src.math.fminimum_mag_numbf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fmul_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fmul_test.cpp
-  HDRS
-    MulTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.__support.FPUtil.basic_operations
-    libc.src.math.fmul
-)
-
-add_fp_unittest(
-  fmull_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fmull_test.cpp
-  HDRS
-    MulTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.__support.FPUtil.basic_operations
-    libc.src.math.fmull
-)
-
-add_fp_unittest(
-  sqrtf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    sqrtf_test.cpp
-  HDRS
-    SqrtTest.h
-  DEPENDS
-    libc.src.math.sqrtf
-)
-
-add_fp_unittest(
-  sqrt_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    sqrt_test.cpp
-  HDRS
-    SqrtTest.h
-  DEPENDS
-    libc.src.math.sqrt
-)
-
-add_fp_unittest(
-  sqrtl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    sqrtl_test.cpp
-  HDRS
-    SqrtTest.h
-  DEPENDS
-    libc.src.math.sqrtl
-)
-
-add_fp_unittest(
-  rsqrtf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    rsqrtf_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros  
-    libc.hdr.fenv_macros  
-    libc.src.math.rsqrtf 
-)
-
-add_fp_unittest(
-  rsqrtf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    rsqrtf16_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros  
-    libc.hdr.fenv_macros 
-    libc.src.math.rsqrtf16
-)
-
-add_fp_unittest(
-  sqrtf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    sqrtf16_test.cpp
-  HDRS
-    SqrtTest.h
-  DEPENDS
-    libc.src.math.sqrtf16
-)
-
-add_fp_unittest(
-  sqrtf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    sqrtf128_test.cpp
-  HDRS
-    SqrtTest.h
-  DEPENDS
-    libc.src.math.sqrtf128
-)
-
-add_fp_unittest(
-  sqrtbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    sqrtbf16_test.cpp
-  HDRS
-    SqrtTest.h
-  DEPENDS
-    libc.src.math.sqrtbf16
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  generic_sqrtf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    generic_sqrtf_test.cpp
-  HDRS
-    SqrtTest.h
-  DEPENDS
-    libc.src.__support.FPUtil.generic.sqrt
-  COMPILE_OPTIONS
-    ${libc_opt_high_flag}
-)
-
-add_fp_unittest(
-  generic_sqrt_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    generic_sqrt_test.cpp
-  HDRS
-    SqrtTest.h
-  DEPENDS
-    libc.src.__support.FPUtil.generic.sqrt
-  COMPILE_OPTIONS
-    ${libc_opt_high_flag}
-)
-
-add_fp_unittest(
-  generic_sqrtl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    generic_sqrtl_test.cpp
-  HDRS
-    SqrtTest.h
-  DEPENDS
-    libc.src.__support.FPUtil.generic.sqrt
-  COMPILE_OPTIONS
-    ${libc_opt_high_flag}
-)
-
-add_fp_unittest(
-  generic_sqrtf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    generic_sqrtf128_test.cpp
-  HDRS
-    SqrtTest.h
-  DEPENDS
-    # The dependency on sqrtf128 is used to disable the test when float128
-    # support is not available.
-    libc.src.math.sqrtf128
-    libc.src.__support.FPUtil.generic.sqrt
-  COMPILE_OPTIONS
-    ${libc_opt_high_flag}
-)
-
-add_fp_unittest(
-  remquof_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    remquof_test.cpp
-  HDRS
-    RemQuoTest.h
-  DEPENDS
-    libc.src.math.remquof
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  remquof128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    remquof128_test.cpp
-  HDRS
-    RemQuoTest.h
-  DEPENDS
-    libc.src.math.remquof128
-    libc.src.__support.FPUtil.basic_operations
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  remquo_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    remquo_test.cpp
-  HDRS
-    RemQuoTest.h
-  DEPENDS
-    libc.src.math.remquo
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  remquol_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    remquol_test.cpp
-  HDRS
-    RemQuoTest.h
-  DEPENDS
-    libc.src.math.remquol
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  remquof16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    remquof16_test.cpp
-  HDRS
-    RemQuoTest.h
-  DEPENDS
-    libc.src.math.remquof16
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  remquobf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    remquobf16_test.cpp
-  HDRS
-    RemQuoTest.h
-  DEPENDS
-    libc.src.math.remquobf16
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  hypotf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    hypotf_test.cpp
-  HDRS
-    HypotTest.h
-  DEPENDS
-    libc.src.math.hypotf
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.macros.properties.architectures
-)
-
-add_fp_unittest(
-  hypotf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    hypotf16_test.cpp
-  HDRS
-    HypotTest.h
-  DEPENDS
-    libc.src.math.hypotf16
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  hypot_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    hypot_test.cpp
-  HDRS
-    HypotTest.h
-  DEPENDS
-    libc.src.math.hypot
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.macros.properties.architectures
-)
-
-add_fp_unittest(
-  nanf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    nanf_test.cpp
-  DEPENDS
-    libc.hdr.signal_macros
-    libc.src.math.nanf
-    libc.src.__support.FPUtil.fp_bits
-  # FIXME: The nan tests currently have death tests, which aren't supported for
-  # hermetic tests.
-  UNIT_TEST_ONLY
-)
-
-add_fp_unittest(
-  nan_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    nan_test.cpp
-  DEPENDS
-    libc.hdr.signal_macros
-    libc.src.math.nan
-    libc.src.__support.FPUtil.fp_bits
-  # FIXME: The nan tests currently have death tests, which aren't supported for
-  # hermetic tests.
-  UNIT_TEST_ONLY
-)
-
-add_fp_unittest(
-  nanl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    nanl_test.cpp
-  DEPENDS
-    libc.hdr.signal_macros
-    libc.src.math.nanl
-    libc.src.__support.FPUtil.fp_bits
-  # FIXME: The nan tests currently have death tests, which aren't supported for
-  # hermetic tests.
-  UNIT_TEST_ONLY
-)
-
-add_fp_unittest(
-  nanf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    nanf16_test.cpp
-  DEPENDS
-    libc.hdr.signal_macros
-    libc.src.math.nanf16
-    libc.src.__support.FPUtil.fp_bits
-  # FIXME: The nan tests currently have death tests, which aren't supported for
-  # hermetic tests.
-  UNIT_TEST_ONLY
-)
-
-add_fp_unittest(
-  nanf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    nanf128_test.cpp
-  DEPENDS
-    libc.hdr.signal_macros
-    libc.src.math.nanf128
-    libc.src.__support.FPUtil.fp_bits
-  # FIXME: The nan tests currently have death tests, which aren't supported for
-  # hermetic tests.
-  UNIT_TEST_ONLY
-)
-
-add_fp_unittest(
-  nanbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    nanbf16_test.cpp
-  DEPENDS
-    libc.hdr.signal_macros
-    libc.src.math.nanbf16
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.__support.FPUtil.fp_bits
-  # FIXME: The nan tests currently have death tests, which aren't supported for
-  # hermetic tests.
-  UNIT_TEST_ONLY
-)
-
-add_fp_unittest(
-  nearbyint_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    nearbyint_test.cpp
-  HDRS
-    NearbyIntTest.h
-  DEPENDS
-    libc.hdr.fenv_macros
-    libc.src.math.nearbyint
-)
-
-add_fp_unittest(
-  nearbyintf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    nearbyintf_test.cpp
-  HDRS
-    NearbyIntTest.h
-  DEPENDS
-    libc.hdr.fenv_macros
-    libc.src.math.nearbyintf
-)
-
-add_fp_unittest(
-  nearbyintl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    nearbyintl_test.cpp
-  HDRS
-    NearbyIntTest.h
-  DEPENDS
-    libc.hdr.fenv_macros
-    libc.src.math.nearbyintl
-)
-
-add_fp_unittest(
-  nearbyintf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    nearbyintf16_test.cpp
-  HDRS
-    NearbyIntTest.h
-  DEPENDS
-    libc.hdr.fenv_macros
-    libc.src.math.nearbyintf16
-)
-
-add_fp_unittest(
-  nearbyintf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    nearbyintf128_test.cpp
-  HDRS
-    NearbyIntTest.h
-  DEPENDS
-    libc.hdr.fenv_macros
-    libc.src.math.nearbyintf128
-)
-
-add_fp_unittest(
-  nearbyintbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    nearbyintbf16_test.cpp
-  HDRS
-    NearbyIntTest.h
-  DEPENDS
-    libc.hdr.fenv_macros
-    libc.src.math.nearbyintbf16
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  nextafter_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    nextafter_test.cpp
-  HDRS
-    NextAfterTest.h
-  DEPENDS
-    libc.hdr.fenv_macros
-    libc.src.math.nextafter
-    libc.src.__support.CPP.bit
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  nextafterf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    nextafterf_test.cpp
-  HDRS
-    NextAfterTest.h
-  DEPENDS
-    libc.hdr.fenv_macros
-    libc.src.math.nextafterf
-    libc.src.__support.CPP.bit
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  nextafterl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    nextafterl_test.cpp
-  HDRS
-    NextAfterTest.h
-  DEPENDS
-    libc.hdr.fenv_macros
-    libc.src.math.nextafterl
-    libc.src.__support.CPP.bit
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  nextafterf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    nextafterf16_test.cpp
-  HDRS
-    NextAfterTest.h
-  DEPENDS
-    libc.hdr.fenv_macros
-    libc.src.math.nextafterf16
-    libc.src.__support.CPP.bit
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  nextafterf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    nextafterf128_test.cpp
-  HDRS
-    NextAfterTest.h
-  DEPENDS
-    libc.hdr.fenv_macros
-    libc.src.math.nextafterf128
-    libc.src.__support.CPP.bit
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  nextafterbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    nextafterbf16_test.cpp
-  HDRS
-    NextAfterTest.h
-  DEPENDS
-    libc.hdr.fenv_macros
-    libc.src.math.nextafterbf16
-    libc.src.__support.CPP.bit
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-# FIXME: These tests are currently spurious for the GPU.
-if(NOT LIBC_TARGET_OS_IS_GPU)
-  add_fp_unittest(
-    nexttoward_test
-    SUITE
-      libc-math-smoke-tests
-    SRCS
-      nexttoward_test.cpp
-    HDRS
-      NextTowardTest.h
-    DEPENDS
-      libc.hdr.fenv_macros
-      libc.src.math.nexttoward
-      libc.src.__support.CPP.bit
-      libc.src.__support.FPUtil.fenv_impl
-      libc.src.__support.FPUtil.fp_bits
-  )
-
-  add_fp_unittest(
-    nexttowardf_test
-    SUITE
-      libc-math-smoke-tests
-    SRCS
-      nexttowardf_test.cpp
-    HDRS
-      NextTowardTest.h
-    DEPENDS
-      libc.hdr.fenv_macros
-      libc.src.math.nexttowardf
-      libc.src.__support.CPP.bit
-      libc.src.__support.FPUtil.fenv_impl
-      libc.src.__support.FPUtil.fp_bits
-  )
-endif()
-
-add_fp_unittest(
-  nexttowardl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    nexttowardl_test.cpp
-  HDRS
-    NextTowardTest.h
-  DEPENDS
-    libc.hdr.fenv_macros
-    libc.src.math.nexttowardl
-    libc.src.__support.CPP.bit
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  nexttowardf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    nexttowardf16_test.cpp
-  HDRS
-    NextTowardTest.h
-  DEPENDS
-    libc.hdr.fenv_macros
-    libc.src.math.nexttowardf16
-    libc.src.__support.CPP.bit
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  nexttowardbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    nexttowardbf16_test.cpp
-  HDRS
-    NextTowardTest.h
-  DEPENDS
-    libc.hdr.fenv_macros
-    libc.src.math.nexttowardbf16
-    libc.src.__support.CPP.bit
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  nextdown_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    nextdown_test.cpp
-  HDRS
-    NextDownTest.h
-  DEPENDS
-    libc.src.math.nextdown
-)
-
-add_fp_unittest(
-  nextdownf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    nextdownf_test.cpp
-  HDRS
-    NextDownTest.h
-  DEPENDS
-    libc.src.math.nextdownf
-)
-
-add_fp_unittest(
-  nextdownl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    nextdownl_test.cpp
-  HDRS
-    NextDownTest.h
-  DEPENDS
-    libc.src.math.nextdownl
-)
-
-add_fp_unittest(
-  nextdownf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    nextdownf16_test.cpp
-  HDRS
-    NextDownTest.h
-  DEPENDS
-    libc.src.math.nextdownf16
-)
-
-add_fp_unittest(
-  nextdownf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    nextdownf128_test.cpp
-  HDRS
-    NextDownTest.h
-  DEPENDS
-    libc.src.math.nextdownf128
-)
-
-add_fp_unittest(
-  nextdownbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    nextdownbf16_test.cpp
-  HDRS
-    NextDownTest.h
-  DEPENDS
-    libc.src.math.nextdownbf16
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  nextup_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    nextup_test.cpp
-  HDRS
-    NextUpTest.h
-  DEPENDS
-    libc.src.math.nextup
-)
-
-add_fp_unittest(
-  nextupf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    nextupf_test.cpp
-  HDRS
-    NextUpTest.h
-  DEPENDS
-    libc.src.math.nextupf
-)
-
-add_fp_unittest(
-  nextupl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    nextupl_test.cpp
-  HDRS
-    NextUpTest.h
-  DEPENDS
-    libc.src.math.nextupl
-)
-
-add_fp_unittest(
-  nextupf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    nextupf16_test.cpp
-  HDRS
-    NextUpTest.h
-  DEPENDS
-    libc.src.math.nextupf16
-)
-
-add_fp_unittest(
-  nextupf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    nextupf128_test.cpp
-  HDRS
-    NextUpTest.h
-  DEPENDS
-    libc.src.math.nextupf128
-)
-
-add_fp_unittest(
-  nextupbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    nextupbf16_test.cpp
-  HDRS
-    NextUpTest.h
-  DEPENDS
-    libc.src.math.nextupbf16
-    libc.src.__support.FPUtil.bfloat16
-)
-
-# TODO(lntue): The current implementation of fputil::general::fma<float> is only
-# correctly rounded for the default rounding mode round-to-nearest tie-to-even.
-add_fp_unittest(
-  fmaf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fmaf_test.cpp
-  HDRS
-    FmaTest.h
-  DEPENDS
-    libc.src.math.fmaf
-    libc.src.__support.macros.properties.types
-)
-
-add_fp_unittest(
-  fmaf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fmaf16_test.cpp
-  HDRS
-    FmaTest.h
-  DEPENDS
-    libc.src.math.fmaf16
-    libc.src.__support.FPUtil.cast
-)
-
-add_fp_unittest(
-  fma_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fma_test.cpp
-  HDRS
-    FmaTest.h
-  DEPENDS
-    libc.src.math.fma
-    libc.src.__support.macros.properties.types
-)
-
-add_fp_unittest(
-  expm1_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    expm1_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.expm1
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  expm1f_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    expm1f_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.expm1f
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  expm1f16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    expm1f16_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.expm1f16
-    libc.src.__support.FPUtil.cast
-)
-
-add_fp_unittest(
-  log_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    log_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.log
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  logf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    logf_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.logf
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  logf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    logf16_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.logf16
-    libc.src.__support.FPUtil.cast
-)
-
-add_fp_unittest(
-  log_bf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    log_bf16_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.log_bf16
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  log2_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    log2_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.log2
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  log2f_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    log2f_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.log2f
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  log2f16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    log2f16_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.log2f16
-    libc.src.__support.FPUtil.cast
-)
-
-add_fp_unittest(
-  log10_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    log10_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.log10
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  log10f_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    log10f_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.log10f
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  log10f16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    log10f16_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.log10f16
-    libc.src.__support.FPUtil.cast
-)
-
-add_fp_unittest(
-  log1p_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    log1p_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.log1p
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  log1pf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    log1pf_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.log1pf
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fmodf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fmodf_test.cpp
-  HDRS
-    FModTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.fmodf
-    libc.src.__support.FPUtil.fenv_impl
-  # FIXME: Currently fails on the GPU build.
-  UNIT_TEST_ONLY
-)
-
-add_fp_unittest(
-  fmod_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fmod_test.cpp
-  HDRS
-    FModTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.fmod
-    libc.src.__support.FPUtil.fenv_impl
-  # FIXME: Currently fails on the GPU build.
-  UNIT_TEST_ONLY
-)
-
-add_fp_unittest(
-  fmodl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fmodl_test.cpp
-  HDRS
-    FModTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.fmodl
-    libc.src.__support.FPUtil.fenv_impl
-  # FIXME: Currently fails on the GPU build.
-  UNIT_TEST_ONLY
-)
-
-add_fp_unittest(
-  fmodf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fmodf16_test.cpp
-  HDRS
-    FModTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.fmodf16
-    libc.src.__support.FPUtil.fenv_impl
-  # FIXME: Currently fails on the GPU build.
-  UNIT_TEST_ONLY
-)
-
-add_fp_unittest(
-  fmodf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fmodf128_test.cpp
-  HDRS
-    FModTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.fmodf128
-    libc.src.__support.FPUtil.fenv_impl
-  # FIXME: Currently fails on the GPU build.
-  UNIT_TEST_ONLY
-)
-
-add_fp_unittest(
-  fmodbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fmodbf16_test.cpp
-  HDRS
-    FModTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.fmodbf16
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.__support.FPUtil.fenv_impl
-  UNIT_TEST_ONLY
-)
-
-add_fp_unittest(
-  coshf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    coshf_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.coshf
-    libc.src.__support.CPP.array
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  coshf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    coshf16_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.coshf16
-    libc.src.__support.FPUtil.cast
-)
-
-add_fp_unittest(
-  sinhf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    sinhf_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.sinhf
-    libc.src.__support.CPP.array
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  sinhf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    sinhf16_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.sinhf16
-    libc.src.__support.FPUtil.cast
-)
-
-add_fp_unittest(
-  tanhf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    tanhf_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.tanhf
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  tanhf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    tanhf16_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.tanhf16
-    libc.src.__support.FPUtil.cast
-)
-
-add_fp_unittest(
-  atanhf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    atanhf_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.atanhf
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  atanhf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    atanhf16_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.atanhf16
-    libc.src.__support.FPUtil.cast
-)
-
-add_fp_unittest(
-  atanpif16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    atanpif16_test.cpp
-  DEPENDS
-    libc.src.math.atanpif16
-)
-
-add_fp_unittest(
-  asinhf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    asinhf_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.asinhf
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  asinhf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    asinhf16_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.asinhf16
-)
-
-add_fp_unittest(
-  asinpif16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    asinpif16_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.asinpif16
-)
-
-add_fp_unittest(
-  acoshf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    acoshf_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.acoshf
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  acoshf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    acoshf16_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.acoshf16
-    libc.src.__support.FPUtil.cast
-)
-
-add_fp_unittest(
-  asinf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    asinf_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.asinf
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  asin_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    asin_test.cpp
-  DEPENDS
-    libc.src.math.asin
-)
-
-add_fp_unittest(
-  asinf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    asinf16_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.asinf16
-)
-
-add_fp_unittest(
-  acosf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    acosf_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.acosf
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  acos_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    acos_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.acos
-)
-
-add_fp_unittest(
-  acosf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    acosf16_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.acosf16
-)
-
-add_fp_unittest(
-  acospif16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    acospif16_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.acospif16
-)
-
-add_fp_unittest(
-  atanf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    atanf_test.cpp
-  DEPENDS
-    libc.src.math.atanf
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  atan_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    atan_test.cpp
-  DEPENDS
-    libc.src.math.atan
-)
-
-add_fp_unittest(
-  atanf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    atanf16_test.cpp
-  DEPENDS
-    libc.src.math.atanf16
-)
-
-add_fp_unittest(
-  atan2f_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    atan2f_test.cpp
-  DEPENDS
-    libc.src.math.atan2f
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  atan2_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    atan2_test.cpp
-  DEPENDS
-    libc.src.math.atan2
-)
-
-add_fp_unittest(
-  atan2f128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    atan2f128_test.cpp
-  DEPENDS
-    libc.src.math.atan2f128
-)
-
-add_fp_unittest(
-  scalbln_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    scalbln_test.cpp
-  HDRS
-    ScalbnTest.h
-  DEPENDS
-    libc.src.math.scalbln
-    libc.src.__support.CPP.limits
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.normal_float
-)
-
-add_fp_unittest(
-  scalblnf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    scalblnf_test.cpp
-  HDRS
-    ScalbnTest.h
-  DEPENDS
-    libc.src.math.scalblnf
-    libc.src.__support.CPP.limits
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.normal_float
-)
-
-add_fp_unittest(
-  scalblnl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    scalblnl_test.cpp
-  HDRS
-    ScalbnTest.h
-  DEPENDS
-    libc.src.math.scalblnl
-    libc.src.__support.CPP.limits
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.normal_float
-)
-
-add_fp_unittest(
-  scalblnf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    scalblnf16_test.cpp
-  HDRS
-    ScalbnTest.h
-  DEPENDS
-    libc.src.math.scalblnf16
-    libc.src.__support.CPP.limits
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.normal_float
-)
-
-add_fp_unittest(
-  scalblnf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    scalblnf128_test.cpp
-  HDRS
-    ScalbnTest.h
-  DEPENDS
-    libc.src.math.scalblnf128
-    libc.src.__support.CPP.limits
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.normal_float
-)
-
-add_fp_unittest(
-  scalblnbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    scalblnbf16_test.cpp
-  HDRS
-    ScalbnTest.h
-  DEPENDS
-    libc.src.math.scalblnbf16
-    libc.src.__support.CPP.limits
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.normal_float
-)
-
-add_fp_unittest(
-  scalbn_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    scalbn_test.cpp
-  HDRS
-    ScalbnTest.h
-  DEPENDS
-    libc.src.math.scalbn
-    libc.src.__support.CPP.limits
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.normal_float
-)
-
-add_fp_unittest(
-  scalbnf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    scalbnf_test.cpp
-  HDRS
-    ScalbnTest.h
-  DEPENDS
-    libc.src.math.scalbnf
-    libc.src.__support.CPP.limits
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.normal_float
-)
-
-add_fp_unittest(
-  scalbnl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    scalbnl_test.cpp
-  HDRS
-    ScalbnTest.h
-  DEPENDS
-    libc.src.math.scalbnl
-    libc.src.__support.CPP.limits
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.normal_float
-)
-
-add_fp_unittest(
-  scalbnf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    scalbnf16_test.cpp
-  HDRS
-    ScalbnTest.h
-  DEPENDS
-    libc.src.math.scalbnf16
-    libc.src.__support.CPP.limits
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.normal_float
-)
-
-add_fp_unittest(
-  scalbnf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    scalbnf128_test.cpp
-  HDRS
-    ScalbnTest.h
-  DEPENDS
-    libc.src.math.scalbnf128
-    libc.src.__support.CPP.limits
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.normal_float
-)
-
-add_fp_unittest(
-  scalbnbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    scalbnbf16_test.cpp
-  HDRS
-    ScalbnTest.h
-  DEPENDS
-    libc.src.math.scalbnbf16
-    libc.src.__support.CPP.limits
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.normal_float
-)
-
-add_fp_unittest(
-  erff_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    erff_test.cpp
-  DEPENDS
-    libc.src.math.erff
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  pow_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    pow_test.cpp
-  DEPENDS
-    libc.hdr.fenv_macros
-    libc.src.math.pow
-)
-
-add_fp_unittest(
-  powf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    powf_test.cpp
-  DEPENDS
-    libc.src.math.powf
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  totalorder_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    totalorder_test.cpp
-  HDRS
-    TotalOrderTest.h
-  DEPENDS
-    libc.src.math.totalorder
-)
-
-add_fp_unittest(
-  totalorderf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    totalorderf_test.cpp
-  HDRS
-    TotalOrderTest.h
-  DEPENDS
-    libc.src.math.totalorderf
-)
-
-add_fp_unittest(
-  totalorderl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    totalorderl_test.cpp
-  HDRS
-    TotalOrderTest.h
-  DEPENDS
-    libc.src.math.totalorderl
-)
-
-add_fp_unittest(
-  totalorderf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    totalorderf16_test.cpp
-  HDRS
-    TotalOrderTest.h
-  DEPENDS
-    libc.src.math.totalorderf16
-)
-
-add_fp_unittest(
-  totalorderf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    totalorderf128_test.cpp
-  HDRS
-    TotalOrderTest.h
-  DEPENDS
-    libc.src.math.totalorderf128
-)
-
-add_fp_unittest(
-  totalorderbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    totalorderbf16_test.cpp
-  HDRS
-    TotalOrderTest.h
-  DEPENDS
-    libc.src.math.totalorderbf16
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  totalordermag_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    totalordermag_test.cpp
-  HDRS
-    TotalOrderMagTest.h
-  DEPENDS
-    libc.src.math.totalordermag
-)
-
-add_fp_unittest(
-  totalordermagf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    totalordermagf_test.cpp
-  HDRS
-    TotalOrderMagTest.h
-  DEPENDS
-    libc.src.math.totalordermagf
-)
-
-add_fp_unittest(
-  totalordermagl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    totalordermagl_test.cpp
-  HDRS
-    TotalOrderMagTest.h
-  DEPENDS
-    libc.src.math.totalordermagl
-)
-
-add_fp_unittest(
-  totalordermagf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    totalordermagf16_test.cpp
-  HDRS
-    TotalOrderMagTest.h
-  DEPENDS
-    libc.src.math.totalordermagf16
-)
-
-add_fp_unittest(
-  totalordermagf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    totalordermagf128_test.cpp
-  HDRS
-    TotalOrderMagTest.h
-  DEPENDS
-    libc.src.math.totalordermagf128
-)
-
-add_fp_unittest(
-  totalordermagbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    totalordermagbf16_test.cpp
-  HDRS
-    TotalOrderMagTest.h
-  DEPENDS
-    libc.src.math.totalordermagbf16
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  getpayload_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    getpayload_test.cpp
-  HDRS
-    GetPayloadTest.h
-  DEPENDS
-    libc.src.math.getpayload
-)
-
-add_fp_unittest(
-  getpayloadf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    getpayloadf_test.cpp
-  HDRS
-    GetPayloadTest.h
-  DEPENDS
-    libc.src.math.getpayloadf
-)
-
-add_fp_unittest(
-  getpayloadl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    getpayloadl_test.cpp
-  HDRS
-    GetPayloadTest.h
-  DEPENDS
-    libc.src.math.getpayloadl
-)
-
-add_fp_unittest(
-  getpayloadf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    getpayloadf16_test.cpp
-  HDRS
-    GetPayloadTest.h
-  DEPENDS
-    libc.src.math.getpayloadf16
-)
-
-add_fp_unittest(
-  getpayloadf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    getpayloadf128_test.cpp
-  HDRS
-    GetPayloadTest.h
-  DEPENDS
-    libc.src.math.getpayloadf128
-)
-
-add_fp_unittest(
-  getpayloadbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    getpayloadbf16_test.cpp
-  HDRS
-    GetPayloadTest.h
-  DEPENDS
-    libc.src.math.getpayloadbf16
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  setpayload_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    setpayload_test.cpp
-  HDRS
-    SetPayloadTest.h
-  DEPENDS
-    libc.src.math.setpayload
-)
-
-add_fp_unittest(
-  setpayloadf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    setpayloadf_test.cpp
-  HDRS
-    SetPayloadTest.h
-  DEPENDS
-    libc.src.math.setpayloadf
-)
-
-add_fp_unittest(
-  setpayloadl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    setpayloadl_test.cpp
-  HDRS
-    SetPayloadTest.h
-  DEPENDS
-    libc.src.math.setpayloadl
-)
-
-add_fp_unittest(
-  setpayloadf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    setpayloadf16_test.cpp
-  HDRS
-    SetPayloadTest.h
-  DEPENDS
-    libc.src.math.setpayloadf16
-)
-
-add_fp_unittest(
-  setpayloadf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    setpayloadf128_test.cpp
-  HDRS
-    SetPayloadTest.h
-  DEPENDS
-    libc.src.math.setpayloadf128
-)
-
-add_fp_unittest(
-  setpayloadbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    setpayloadbf16_test.cpp
-  HDRS
-    SetPayloadTest.h
-  DEPENDS
-    libc.src.math.setpayloadbf16
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  setpayloadsig_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    setpayloadsig_test.cpp
-  HDRS
-    SetPayloadSigTest.h
-  DEPENDS
-    libc.src.math.setpayloadsig
-)
-
-add_fp_unittest(
-  setpayloadsigf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    setpayloadsigf_test.cpp
-  HDRS
-    SetPayloadSigTest.h
-  DEPENDS
-    libc.src.math.setpayloadsigf
-)
-
-add_fp_unittest(
-  setpayloadsigl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    setpayloadsigl_test.cpp
-  HDRS
-    SetPayloadSigTest.h
-  DEPENDS
-    libc.src.math.setpayloadsigl
-)
-
-add_fp_unittest(
-  setpayloadsigf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    setpayloadsigf16_test.cpp
-  HDRS
-    SetPayloadSigTest.h
-  DEPENDS
-    libc.src.math.setpayloadsigf16
-)
-
-add_fp_unittest(
-  setpayloadsigf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    setpayloadsigf128_test.cpp
-  HDRS
-    SetPayloadSigTest.h
-  DEPENDS
-    libc.src.math.setpayloadsigf128
-)
-
-add_fp_unittest(
-  setpayloadsigbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    setpayloadsigbf16_test.cpp
-  HDRS
-    SetPayloadTest.h
-  DEPENDS
-    libc.src.math.setpayloadsigbf16
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  f16add_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    f16add_test.cpp
-  HDRS
-    AddTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.f16add
-    libc.src.__support.macros.properties.os
-)
-
-add_fp_unittest(
-  f16addf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    f16addf_test.cpp
-  HDRS
-    AddTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.f16addf
-    libc.src.__support.macros.properties.os
-)
-
-add_fp_unittest(
-  f16addl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    f16addl_test.cpp
-  HDRS
-    AddTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.f16addl
-    libc.src.__support.macros.properties.os
-)
-
-add_fp_unittest(
-  f16addf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    f16addf128_test.cpp
-  HDRS
-    AddTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.f16addf128
-    libc.src.__support.macros.properties.os
-)
-
-add_fp_unittest(
-  f16sub_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    f16sub_test.cpp
-  HDRS
-    SubTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.f16sub
-    libc.src.__support.macros.properties.os
-)
-
-add_fp_unittest(
-  f16subf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    f16subf_test.cpp
-  HDRS
-    SubTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.f16subf
-    libc.src.__support.macros.properties.os
-)
-
-add_fp_unittest(
-  f16subl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    f16subl_test.cpp
-  HDRS
-    SubTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.f16subl
-    libc.src.__support.macros.properties.os
-)
-
-add_fp_unittest(
-  f16subf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    f16subf128_test.cpp
-  HDRS
-    SubTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.f16subf128
-    libc.src.__support.macros.properties.os
-)
-
-add_fp_unittest(
-  f16div_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    f16div_test.cpp
-  HDRS
-    DivTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.f16div
-)
-
-add_fp_unittest(
-  f16divf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    f16divf_test.cpp
-  HDRS
-    DivTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.f16divf
-)
-
-add_fp_unittest(
-  f16divl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    f16divl_test.cpp
-  HDRS
-    DivTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.f16divl
-)
-
-add_fp_unittest(
-  f16divf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    f16divf128_test.cpp
-  HDRS
-    DivTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.f16divf128
-)
-
-add_fp_unittest(
-  f16fma_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    f16fma_test.cpp
-  HDRS
-    FmaTest.h
-  DEPENDS
-    libc.src.math.f16fma
-    libc.src.__support.macros.properties.types
-)
-
-add_fp_unittest(
-  f16fmaf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    f16fmaf_test.cpp
-  HDRS
-    FmaTest.h
-  DEPENDS
-    libc.src.math.f16fmaf
-    libc.src.__support.macros.properties.types
-)
-
-add_fp_unittest(
-  f16fmal_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    f16fmal_test.cpp
-  HDRS
-    FmaTest.h
-  DEPENDS
-    libc.src.math.f16fmal
-    libc.src.__support.macros.properties.types
-)
-
-add_fp_unittest(
-  f16fmaf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    f16fmaf128_test.cpp
-  HDRS
-    FmaTest.h
-  DEPENDS
-    libc.src.math.f16fmaf128
-    libc.src.__support.macros.properties.types
-)
-
-add_fp_unittest(
-  f16sqrt_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    f16sqrt_test.cpp
-  HDRS
-    SqrtTest.h
-  DEPENDS
-    libc.src.math.f16sqrt
-)
-
-add_fp_unittest(
-  f16sqrtf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    f16sqrtf_test.cpp
-  HDRS
-    SqrtTest.h
-  DEPENDS
-    libc.src.math.f16sqrtf
-)
-
-add_fp_unittest(
-  f16sqrtl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    f16sqrtl_test.cpp
-  HDRS
-    SqrtTest.h
-  DEPENDS
-    libc.src.math.f16sqrtl
-)
-
-add_fp_unittest(
-  f16sqrtf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    f16sqrtf128_test.cpp
-  HDRS
-    SqrtTest.h
-  DEPENDS
-    libc.src.math.f16sqrtf128
-)
-
-add_fp_unittest(
-  fdiv_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fdiv_test.cpp
-  HDRS
-    DivTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.fdiv
-)
-
-add_fp_unittest(
-  fdivl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fdivl_test.cpp
-  HDRS
-    DivTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.fdivl
-)
-
-add_fp_unittest(
-  fdivf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fdivf128_test.cpp
-  HDRS
-    DivTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.fdivf128
-)
-
-add_fp_unittest(
-  ffma_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    ffma_test.cpp
-  HDRS
-    FmaTest.h
-  DEPENDS
-    libc.src.math.ffma
-    libc.src.__support.macros.properties.types
-)
-
-add_fp_unittest(
-  ffmal_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    ffmal_test.cpp
-  HDRS
-    FmaTest.h
-  DEPENDS
-    libc.src.math.ffmal
-    libc.src.__support.macros.properties.types
-)
-
-add_fp_unittest(
-  ffmaf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    ffmaf128_test.cpp
-  HDRS
-    FmaTest.h
-  DEPENDS
-    libc.src.math.ffmaf128
-    libc.src.__support.macros.properties.types
-)
-
-add_fp_unittest(
-  fsqrt_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fsqrt_test.cpp
-  HDRS
-    SqrtTest.h
-  DEPENDS
-    libc.src.math.fsqrt
-)
-
-
-add_fp_unittest(
-  fsqrtl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fsqrtl_test.cpp
-  HDRS
-    SqrtTest.h
-  DEPENDS
-    libc.src.math.fsqrtl
-)
-
-add_fp_unittest(
-  fsqrtf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fsqrtf128_test.cpp
-  HDRS
-    SqrtTest.h
-  DEPENDS
-    libc.src.math.fsqrtf128
-)
-
-add_fp_unittest(
-  fsub_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fsub_test.cpp
-  HDRS
-    SubTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.fsub
-    libc.src.__support.macros.properties.os
-)
-
-add_fp_unittest(
-  fsubl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fsubl_test.cpp
-  HDRS
-    SubTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.fsubl
-    libc.src.__support.macros.properties.os
-)
-
-add_fp_unittest(
-  fsubf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fsubf128_test.cpp
-  HDRS
-    SubTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.fsubf128
-    libc.src.__support.macros.properties.os
-)
-
-add_fp_unittest(
-  dsqrtl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    dsqrtl_test.cpp
-  HDRS
-    SqrtTest.h
-  DEPENDS
-    libc.src.math.dsqrtl
-)
-
-add_fp_unittest(
-  dsqrtf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    dsqrtf128_test.cpp
-  HDRS
-    SqrtTest.h
-  DEPENDS
-    libc.src.math.dsqrtf128
-)
-
-add_fp_unittest(
-  sin_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    sin_test.cpp
-  DEPENDS
-    libc.src.math.sin
-)
-
-add_fp_unittest(
-  cos_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    cos_test.cpp
-  DEPENDS
-    libc.src.math.cos
-)
-
-add_fp_unittest(
-  sincos_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    sincos_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.sincos
-)
-
-add_fp_unittest(
-  tan_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    tan_test.cpp
-  DEPENDS
-    libc.src.math.tan
-)
-
-add_fp_unittest(
-  cbrtf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    cbrtf_test.cpp
-  DEPENDS
-    libc.src.math.cbrtf
-)
-
-add_fp_unittest(
-  cbrt_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    cbrt_test.cpp
-  DEPENDS
-    libc.src.math.cbrt
-)
-
-add_fp_unittest(
-  dmull_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    dmull_test.cpp
-  HDRS
-    MulTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.__support.FPUtil.basic_operations
-    libc.src.math.dmull
-)
-
-add_fp_unittest(
-  f16mul_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    f16mul_test.cpp
-  HDRS
-    MulTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.__support.FPUtil.basic_operations
-    libc.src.math.f16mul
-)
-
-add_fp_unittest(
-  f16mulf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    f16mulf_test.cpp
-  HDRS
-    MulTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.__support.FPUtil.basic_operations
-    libc.src.math.f16mulf
-)
-
-add_fp_unittest(
-  f16mull_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    f16mull_test.cpp
-  HDRS
-    MulTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.__support.FPUtil.basic_operations
-    libc.src.math.f16mull
-)
-
-add_fp_unittest(
-  f16mulf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    f16mulf128_test.cpp
-  HDRS
-    MulTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.__support.FPUtil.basic_operations
-    libc.src.math.f16mulf128
-)
-
-add_fp_unittest(
-  daddl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    daddl_test.cpp
-  HDRS
-    AddTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.daddl
-    libc.src.__support.macros.properties.os
-)
-
-add_fp_unittest(
-  daddf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    daddf128_test.cpp
-  HDRS
-    AddTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.daddf128
-    libc.src.__support.macros.properties.os
-)
-
-add_fp_unittest(
-  ddivl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    ddivl_test.cpp
-  HDRS
-    DivTest.h
-  DEPENDS
-    libc.src.math.ddivl
-)
-
-add_fp_unittest(
-  ddivf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    ddivf128_test.cpp
-  HDRS
-    DivTest.h
-  DEPENDS
-    libc.src.math.ddivf128
-)
-
-add_fp_unittest(
-  bfloat16_add_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    bfloat16_add_test.cpp
-  HDRS
-    AddTest.h
-  DEPENDS
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.__support.FPUtil.generic.add_sub
-    libc.src.__support.macros.properties.os
-    libc.src.__support.macros.properties.types
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-)
-
-add_fp_unittest(
-  bfloat16_div_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    bfloat16_div_test.cpp
-  HDRS
-    DivTest.h
-  DEPENDS
-    libc.src.__support.FPUtil.bfloat16
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-)
-
-add_fp_unittest(
-  bfloat16_mul_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    bfloat16_mul_test.cpp
-  HDRS
-    MulTest.h
-  DEPENDS
-    libc.src.__support.FPUtil.basic_operations
-    libc.src.__support.FPUtil.bfloat16
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-)
-
-add_fp_unittest(
-  bfloat16_sub_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    bfloat16_sub_test.cpp
-  HDRS
-    SubTest.h
-  DEPENDS
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.__support.FPUtil.generic.add_sub
-    libc.src.__support.macros.properties.os
-    libc.src.__support.macros.properties.types
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-)
-
-add_fp_unittest(
-  add_same_type_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    add_same_type_test.cpp
-  HDRS
-    AddTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.__support.FPUtil.generic.add_sub
-    libc.src.__support.macros.properties.os
-    libc.src.__support.macros.properties.types
-)
-
-add_fp_unittest(
-  sub_same_type_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    sub_same_type_test.cpp
-  HDRS
-    SubTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.__support.FPUtil.generic.add_sub
-    libc.src.__support.macros.properties.os
-    libc.src.__support.macros.properties.types
-)
-
-add_fp_unittest(
-  bf16add_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    bf16add_test.cpp
-  HDRS
-    AddTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.bf16add
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.__support.macros.properties.os
-)
-
-add_fp_unittest(
-  bf16addf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    bf16addf_test.cpp
-  HDRS
-    AddTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.bf16addf
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.__support.macros.properties.os
-)
-
-add_fp_unittest(
-  bf16addl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    bf16addl_test.cpp
-  HDRS
-    AddTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.bf16addl
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.__support.macros.properties.os
-)
-
-add_fp_unittest(
-  bf16addf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    bf16addf128_test.cpp
-  HDRS
-    AddTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.bf16addf128
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.__support.macros.properties.os
-)
-
-add_fp_unittest(
-  bf16fma_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    bf16fma_test.cpp
-  HDRS
-    FmaTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.bf16fma
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  bf16fmaf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    bf16fmaf_test.cpp
-  HDRS
-    FmaTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.bf16fmaf
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  bf16fmal_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    bf16fmal_test.cpp
-  HDRS
-    FmaTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.bf16fmal
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  bf16fmaf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    bf16fmaf128_test.cpp
-  HDRS
-    FmaTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.bf16fmaf128
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  bf16div_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    bf16div_test.cpp
-  HDRS
-    DivTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.bf16div
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  bf16divf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    bf16divf_test.cpp
-  HDRS
-    DivTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.bf16divf
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  bf16divl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    bf16divl_test.cpp
-  HDRS
-    DivTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.bf16divl
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  bf16divf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    bf16divf128_test.cpp
-  HDRS
-    DivTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.bf16divf128
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  bf16mul_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    bf16mul_test.cpp
-  HDRS
-    MulTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.bf16mul
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  bf16mulf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    bf16mulf_test.cpp
-  HDRS
-    MulTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.bf16mulf
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  bf16mull_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    bf16mull_test.cpp
-  HDRS
-    MulTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.bf16mull
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  bf16mulf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    bf16mulf128_test.cpp
-  HDRS
-    MulTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.bf16mulf128
-    libc.src.__support.FPUtil.bfloat16
-)
-
-
-add_fp_unittest(
-  bf16sub_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    bf16sub_test.cpp
-  HDRS
-    SubTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.bf16sub
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.__support.macros.properties.os
-)
-
-add_fp_unittest(
-  bf16subf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    bf16subf_test.cpp
-  HDRS
-    SubTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.bf16subf
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.__support.macros.properties.os
-)
-
-add_fp_unittest(
-  bf16subl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    bf16subl_test.cpp
-  HDRS
-    SubTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.bf16subl
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.__support.macros.properties.os
-)
-
-add_fp_unittest(
-  bf16subf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    bf16subf128_test.cpp
-  HDRS
-    SubTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.bf16subf128
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.__support.macros.properties.os
-)
+add_custom_target(libc-math-smoke-tests)
+add_dependencies(libc-math-unittests libc-math-smoke-tests)
+
+add_fp_unittest(
+  cosf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    cosf_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.cosf
+)
+
+add_fp_unittest(
+  cosf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    cosf16_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.cosf16
+)
+
+add_fp_unittest(
+  cospif_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    cospif_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.cospif
+    libc.src.__support.CPP.array
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  cospif16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    cospif16_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.cospif16
+    libc.src.__support.FPUtil.cast
+)
+
+add_fp_unittest(
+  sinf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    sinf_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.sinf
+    libc.src.__support.CPP.array
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  sinf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    sinf16_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.sinf16
+    libc.src.__support.FPUtil.cast
+)
+
+add_fp_unittest(
+  sinpif_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    sinpif_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.sinpif
+    libc.src.__support.CPP.array
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  sinpif16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    sinpif16_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.sinpif16
+)
+
+add_fp_unittest(
+  sincosf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    sincosf_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.sincosf
+    libc.src.__support.CPP.array
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  tanf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    tanf_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.tanf
+    libc.src.__support.CPP.array
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  tanf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    tanf16_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.tanf16
+)
+
+add_fp_unittest(
+  tanpif_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    tanpif_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.tanpif
+)
+
+add_fp_unittest(
+  tanpif16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    tanpif16_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.tanpif16
+)
+
+add_fp_unittest(
+  fabs_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fabs_test.cpp
+  HDRS
+    FAbsTest.h
+  DEPENDS
+    libc.src.math.fabs
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fabsf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fabsf_test.cpp
+  HDRS
+    FAbsTest.h
+  DEPENDS
+    libc.src.math.fabsf
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fabsl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fabsl_test.cpp
+  HDRS
+    FAbsTest.h
+  DEPENDS
+    libc.src.math.fabsl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fabsf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fabsf16_test.cpp
+  HDRS
+    FAbsTest.h
+  DEPENDS
+    libc.src.math.fabsf16
+)
+
+add_fp_unittest(
+  fabsf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fabsf128_test.cpp
+  HDRS
+    FAbsTest.h
+  DEPENDS
+    libc.src.math.fabsf128
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fabsbf16_test
+  SUITE
+  libc-math-smoke-tests
+  SRCS
+    fabsbf16_test.cpp
+  HDRS
+    FAbsTest.h
+  DEPENDS
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.math.fabsbf16
+)
+
+add_fp_unittest(
+  fadd_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fadd_test.cpp
+  HDRS
+    AddTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.fadd
+    libc.src.__support.macros.properties.os
+)
+
+add_fp_unittest(
+  faddl_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    faddl_test.cpp
+  HDRS
+    AddTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.faddl
+    libc.src.__support.macros.properties.os
+)
+
+add_fp_unittest(
+  faddf128_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    faddf128_test.cpp
+  HDRS
+    AddTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.faddf128
+    libc.src.__support.macros.properties.os
+)
+
+add_fp_unittest(
+  trunc_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    trunc_test.cpp
+  HDRS
+    TruncTest.h
+  DEPENDS
+    libc.src.math.trunc
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  truncf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    truncf_test.cpp
+  HDRS
+    TruncTest.h
+  DEPENDS
+    libc.src.math.truncf
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  truncl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    truncl_test.cpp
+  HDRS
+    TruncTest.h
+  DEPENDS
+    libc.src.math.truncl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  truncf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    truncf16_test.cpp
+  HDRS
+    TruncTest.h
+  DEPENDS
+    libc.src.math.truncf16
+)
+
+add_fp_unittest(
+  truncf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    truncf128_test.cpp
+  HDRS
+    TruncTest.h
+  DEPENDS
+    libc.src.math.truncf128
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  truncbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    truncbf16_test.cpp
+  HDRS
+    TruncTest.h
+  DEPENDS
+    libc.src.math.truncbf16
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  canonicalize_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    canonicalize_test.cpp
+  HDRS
+    CanonicalizeTest.h
+  DEPENDS
+    libc.src.math.canonicalize
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.integer_literals
+)
+
+add_fp_unittest(
+  canonicalizef_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    canonicalizef_test.cpp
+  HDRS
+    CanonicalizeTest.h
+  DEPENDS
+    libc.src.math.canonicalizef
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.integer_literals
+)
+
+add_fp_unittest(
+  canonicalizef16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    canonicalizef16_test.cpp
+  HDRS
+    CanonicalizeTest.h
+  DEPENDS
+    libc.src.math.canonicalizef16
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.integer_literals
+)
+
+add_fp_unittest(
+  canonicalizef128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    canonicalizef128_test.cpp
+  HDRS
+    CanonicalizeTest.h
+  DEPENDS
+    libc.src.math.canonicalizef128
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.integer_literals
+)
+
+add_fp_unittest(
+  canonicalizel_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    canonicalizel_test.cpp
+  HDRS
+    CanonicalizeTest.h
+  DEPENDS
+    libc.src.math.canonicalizel
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.integer_literals
+)
+
+add_fp_unittest(
+  canonicalizebf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    canonicalizebf16_test.cpp
+  HDRS
+    CanonicalizeTest.h
+  DEPENDS
+    libc.src.math.canonicalizebf16
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.integer_literals
+)
+
+add_fp_unittest(
+  iscanonical_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    iscanonical_test.cpp
+  HDRS
+    IsCanonicalTest.h
+  DEPENDS
+    libc.src.math.iscanonical
+)
+
+add_fp_unittest(
+  iscanonicalf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    iscanonicalf_test.cpp
+  HDRS
+    IsCanonicalTest.h
+  DEPENDS
+    libc.src.math.iscanonicalf
+)
+
+add_fp_unittest(
+  iscanonicall_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    iscanonicall_test.cpp
+  HDRS
+    IsCanonicalTest.h
+  DEPENDS
+    libc.src.math.iscanonicall
+)
+
+add_fp_unittest(
+  iscanonicalf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    iscanonicalf16_test.cpp
+  HDRS
+    IsCanonicalTest.h
+  DEPENDS
+    libc.src.math.iscanonicalf16
+)
+
+add_fp_unittest(
+  iscanonicalf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    iscanonicalf128_test.cpp
+  HDRS
+    IsCanonicalTest.h
+  DEPENDS
+    libc.src.math.iscanonicalf128
+)
+
+add_fp_unittest(
+  iscanonicalbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    iscanonicalbf16_test.cpp
+  HDRS
+    IsCanonicalTest.h
+  DEPENDS
+    libc.src.math.iscanonicalbf16
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  ceil_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    ceil_test.cpp
+  HDRS
+    CeilTest.h
+  DEPENDS
+    libc.src.math.ceil
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  ceilf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    ceilf_test.cpp
+  HDRS
+    CeilTest.h
+  DEPENDS
+    libc.src.math.ceilf
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  ceill_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    ceill_test.cpp
+  HDRS
+    CeilTest.h
+  DEPENDS
+    libc.src.math.ceill
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  ceilf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    ceilf16_test.cpp
+  HDRS
+    CeilTest.h
+  DEPENDS
+    libc.src.math.ceilf16
+)
+
+add_fp_unittest(
+  ceilf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    ceilf128_test.cpp
+  HDRS
+    CeilTest.h
+  DEPENDS
+    libc.src.math.ceilf128
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  ceilbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    ceilbf16_test.cpp
+  HDRS
+    CeilTest.h
+  DEPENDS
+    libc.src.math.ceilbf16
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  dfmal_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    dfmal_test.cpp
+  HDRS
+    FmaTest.h
+  DEPENDS
+    libc.src.math.dfmal
+    libc.src.__support.macros.properties.types
+)
+
+add_fp_unittest(
+  dfmaf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    dfmaf128_test.cpp
+  HDRS
+    FmaTest.h
+  DEPENDS
+    libc.src.math.dfmaf128
+    libc.src.__support.macros.properties.types
+)
+
+add_fp_unittest(
+  dsubl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    dsubl_test.cpp
+  HDRS
+    SubTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.dsubl
+    libc.src.__support.macros.properties.os
+)
+
+add_fp_unittest(
+  dsubf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    dsubf128_test.cpp
+  HDRS
+    SubTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.dsubf128
+    libc.src.__support.macros.properties.os
+)
+
+add_fp_unittest(
+  floor_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    floor_test.cpp
+  HDRS
+    FloorTest.h
+  DEPENDS
+    libc.src.math.floor
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  floorf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    floorf_test.cpp
+  HDRS
+    FloorTest.h
+  DEPENDS
+    libc.src.math.floorf
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  floorl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    floorl_test.cpp
+  HDRS
+    FloorTest.h
+  DEPENDS
+    libc.src.math.floorl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  floorf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    floorf16_test.cpp
+  HDRS
+    FloorTest.h
+  DEPENDS
+    libc.src.math.floorf16
+)
+
+add_fp_unittest(
+  floorf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    floorf128_test.cpp
+  HDRS
+    FloorTest.h
+  DEPENDS
+    libc.src.math.floorf128
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  floorbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    floorbf16_test.cpp
+  HDRS
+    FloorTest.h
+  DEPENDS
+    libc.src.math.floorbf16
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  round_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    round_test.cpp
+  HDRS
+    RoundTest.h
+  DEPENDS
+    libc.src.math.round
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  roundf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    roundf_test.cpp
+  HDRS
+    RoundTest.h
+  DEPENDS
+    libc.src.math.roundf
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  roundl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    roundl_test.cpp
+  HDRS
+    RoundTest.h
+  DEPENDS
+    libc.src.math.roundl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  roundf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    roundf16_test.cpp
+  HDRS
+    RoundTest.h
+  DEPENDS
+    libc.src.math.roundf16
+)
+
+add_fp_unittest(
+  roundf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    roundf128_test.cpp
+  HDRS
+    RoundTest.h
+  DEPENDS
+    libc.src.math.roundf128
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  roundbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    roundbf16_test.cpp
+  HDRS
+    RoundTest.h
+  DEPENDS
+    libc.src.math.roundbf16
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  roundeven_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    roundeven_test.cpp
+  HDRS
+  RoundEvenTest.h
+  DEPENDS
+    libc.src.math.roundeven
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  roundevenf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    roundevenf_test.cpp
+  HDRS
+  RoundEvenTest.h
+  DEPENDS
+    libc.src.math.roundevenf
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  roundevenl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    roundevenl_test.cpp
+  HDRS
+  RoundEvenTest.h
+  DEPENDS
+    libc.src.math.roundevenl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  roundevenf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    roundevenf16_test.cpp
+  HDRS
+    RoundEvenTest.h
+  DEPENDS
+    libc.src.math.roundevenf16
+)
+
+add_fp_unittest(
+  roundevenf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    roundevenf128_test.cpp
+  HDRS
+  RoundEvenTest.h
+  DEPENDS
+    libc.src.math.roundevenf128
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  roundevenbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    roundevenbf16_test.cpp
+  HDRS
+    RoundEvenTest.h
+  DEPENDS
+    libc.src.math.roundevenbf16
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  lround_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    lround_test.cpp
+  HDRS
+    RoundToIntegerTest.h
+  DEPENDS
+    libc.src.errno.errno
+    libc.src.math.lround
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  lroundf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    lroundf_test.cpp
+  HDRS
+    RoundToIntegerTest.h
+  DEPENDS
+    libc.src.errno.errno
+    libc.src.math.lroundf
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  lroundl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    lroundl_test.cpp
+  HDRS
+    RoundToIntegerTest.h
+  DEPENDS
+    libc.src.errno.errno
+    libc.src.math.lroundl
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  lroundf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    lroundf16_test.cpp
+  HDRS
+    RoundToIntegerTest.h
+  DEPENDS
+    libc.src.errno.errno
+    libc.src.math.lroundf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  lroundf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    lroundf128_test.cpp
+  HDRS
+    RoundToIntegerTest.h
+  DEPENDS
+    libc.src.errno.errno
+    libc.src.math.lroundf128
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  lroundbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    lroundbf16_test.cpp
+  HDRS
+    RoundToIntegerTest.h
+  DEPENDS
+    libc.src.errno.errno
+    libc.src.math.lroundbf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  llround_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    llround_test.cpp
+  HDRS
+    RoundToIntegerTest.h
+  DEPENDS
+    libc.src.errno.errno
+    libc.src.math.llround
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  llroundf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    llroundf_test.cpp
+  HDRS
+    RoundToIntegerTest.h
+  DEPENDS
+    libc.src.errno.errno
+    libc.src.math.llroundf
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  llroundl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    llroundl_test.cpp
+  HDRS
+    RoundToIntegerTest.h
+  DEPENDS
+    libc.src.errno.errno
+    libc.src.math.llroundl
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  llroundf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    llroundf16_test.cpp
+  HDRS
+    RoundToIntegerTest.h
+  DEPENDS
+    libc.src.errno.errno
+    libc.src.math.llroundf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  llroundf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    llroundf128_test.cpp
+  HDRS
+    RoundToIntegerTest.h
+  DEPENDS
+    libc.src.errno.errno
+    libc.src.math.llroundf128
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  llroundbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    llroundbf16_test.cpp
+  HDRS
+    RoundToIntegerTest.h
+  DEPENDS
+    libc.src.errno.errno
+    libc.src.math.llroundbf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  rint_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    rint_test.cpp
+  HDRS
+    RIntTest.h
+  DEPENDS
+    libc.src.math.rint
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  rintf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    rintf_test.cpp
+  HDRS
+    RIntTest.h
+  DEPENDS
+    libc.src.math.rintf
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  rintl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    rintl_test.cpp
+  HDRS
+    RIntTest.h
+  DEPENDS
+    libc.src.math.rintl
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  rintf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    rintf16_test.cpp
+  HDRS
+    RIntTest.h
+  DEPENDS
+    libc.src.math.rintf16
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  rintf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    rintf128_test.cpp
+  HDRS
+    RIntTest.h
+  DEPENDS
+    libc.src.math.rintf128
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  rintbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    rintbf16_test.cpp
+  HDRS
+    RIntTest.h
+  DEPENDS
+    libc.src.math.rintbf16
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  lrint_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    lrint_test.cpp
+  HDRS
+    RoundToIntegerTest.h
+  DEPENDS
+    libc.src.errno.errno
+    libc.src.math.lrint
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  lrintf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    lrintf_test.cpp
+  HDRS
+    RoundToIntegerTest.h
+  DEPENDS
+    libc.src.errno.errno
+    libc.src.math.lrintf
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  lrintl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    lrintl_test.cpp
+  HDRS
+    RoundToIntegerTest.h
+  DEPENDS
+    libc.src.errno.errno
+    libc.src.math.lrintl
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  lrintf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    lrintf16_test.cpp
+  HDRS
+    RoundToIntegerTest.h
+  DEPENDS
+    libc.src.errno.errno
+    libc.src.math.lrintf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  lrintf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    lrintf128_test.cpp
+  HDRS
+    RoundToIntegerTest.h
+  DEPENDS
+    libc.src.errno.errno
+    libc.src.math.lrintf128
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  lrintbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    lrintbf16_test.cpp
+  HDRS
+    RoundToIntegerTest.h
+  DEPENDS
+    libc.src.errno.errno
+    libc.src.math.lrintbf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  llrint_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    llrint_test.cpp
+  HDRS
+    RoundToIntegerTest.h
+  DEPENDS
+    libc.src.errno.errno
+    libc.src.math.llrint
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  llrintf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    llrintf_test.cpp
+  HDRS
+    RoundToIntegerTest.h
+  DEPENDS
+    libc.src.errno.errno
+    libc.src.math.llrintf
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  llrintl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    llrintl_test.cpp
+  HDRS
+    RoundToIntegerTest.h
+  DEPENDS
+    libc.src.errno.errno
+    libc.src.math.llrintl
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  llrintf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    llrintf16_test.cpp
+  HDRS
+    RoundToIntegerTest.h
+  DEPENDS
+    libc.src.errno.errno
+    libc.src.math.llrintf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  llrintf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    llrintf128_test.cpp
+  HDRS
+    RoundToIntegerTest.h
+  DEPENDS
+    libc.src.errno.errno
+    libc.src.math.llrintf128
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  llrintbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    llrintbf16_test.cpp
+  HDRS
+    RoundToIntegerTest.h
+  DEPENDS
+    libc.src.errno.errno
+    libc.src.math.llrintbf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  exp_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    exp_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.exp
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  expf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    expf_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.expf
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  expf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    expf16_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.expf16
+    libc.src.__support.FPUtil.cast
+)
+
+add_fp_unittest(
+  exp2_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    exp2_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.exp2
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  exp2f_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    exp2f_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.exp2f
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  exp2f16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    exp2f16_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.exp2f16
+    libc.src.__support.FPUtil.cast
+)
+
+add_fp_unittest(
+  exp2m1f_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    exp2m1f_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.exp2m1f
+)
+
+add_fp_unittest(
+  exp2m1f16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    exp2m1f16_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.exp2m1f16
+    libc.src.__support.FPUtil.cast
+)
+
+add_fp_unittest(
+  exp10_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    exp10_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.exp10
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  exp10f_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    exp10f_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.exp10f
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  exp10f16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    exp10f16_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.exp10f16
+    libc.src.__support.FPUtil.cast
+)
+
+add_fp_unittest(
+  exp10m1f16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    exp10m1f16_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.exp10m1f16
+    libc.src.__support.FPUtil.cast
+)
+
+add_fp_unittest(
+  exp10m1f_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    exp10m1f_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.exp10m1f
+)
+
+add_fp_unittest(
+  copysign_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    copysign_test.cpp
+  HDRS
+    CopySignTest.h
+  DEPENDS
+    libc.src.math.copysign
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  copysignf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    copysignf_test.cpp
+  HDRS
+    CopySignTest.h
+  DEPENDS
+    libc.src.math.copysignf
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  copysignl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    copysignl_test.cpp
+  HDRS
+    CopySignTest.h
+  DEPENDS
+    libc.src.math.copysignl
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  copysignf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    copysignf16_test.cpp
+  HDRS
+    CopySignTest.h
+  DEPENDS
+    libc.src.math.copysignf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  copysignf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    copysignf128_test.cpp
+  HDRS
+    CopySignTest.h
+  DEPENDS
+    libc.src.math.copysignf128
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  copysignbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    copysignbf16_test.cpp
+  HDRS
+    CopySignTest.h
+  DEPENDS
+    libc.src.math.copysignbf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  frexp_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    frexp_test.cpp
+  HDRS
+    FrexpTest.h
+  DEPENDS
+    libc.src.math.frexp
+)
+
+add_fp_unittest(
+  frexpf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    frexpf_test.cpp
+  HDRS
+    FrexpTest.h
+  DEPENDS
+    libc.src.math.frexpf
+)
+
+add_fp_unittest(
+  frexpl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    frexpl_test.cpp
+  HDRS
+    FrexpTest.h
+  DEPENDS
+    libc.src.math.frexpl
+)
+
+add_fp_unittest(
+  frexpf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    frexpf16_test.cpp
+  HDRS
+    FrexpTest.h
+  DEPENDS
+    libc.src.math.frexpf16
+)
+
+add_fp_unittest(
+  frexpf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    frexpf128_test.cpp
+  HDRS
+    FrexpTest.h
+  DEPENDS
+    libc.src.math.frexpf128
+)
+
+add_fp_unittest(
+  frexpbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    frexpbf16_test.cpp
+  HDRS
+    FrexpTest.h
+  DEPENDS
+    libc.src.math.frexpbf16
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  fromfp_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fromfp_test.cpp
+  HDRS
+    FromfpTest.h
+  DEPENDS
+    libc.src.math.fromfp
+)
+
+add_fp_unittest(
+  fromfpf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fromfpf_test.cpp
+  HDRS
+    FromfpTest.h
+  DEPENDS
+    libc.src.math.fromfpf
+)
+
+add_fp_unittest(
+  fromfpl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fromfpl_test.cpp
+  HDRS
+    FromfpTest.h
+  DEPENDS
+    libc.src.math.fromfpl
+)
+
+add_fp_unittest(
+  fromfpf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fromfpf16_test.cpp
+  HDRS
+    FromfpTest.h
+  DEPENDS
+    libc.src.math.fromfpf16
+)
+
+add_fp_unittest(
+  fromfpf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fromfpf128_test.cpp
+  HDRS
+    FromfpTest.h
+  DEPENDS
+    libc.src.math.fromfpf128
+)
+
+add_fp_unittest(
+  fromfpbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fromfpbf16_test.cpp
+  HDRS
+    FromfpTest.h
+  DEPENDS
+    libc.src.math.fromfpbf16
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  fromfpx_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fromfpx_test.cpp
+  HDRS
+    FromfpxTest.h
+  DEPENDS
+    libc.src.math.fromfpx
+)
+
+add_fp_unittest(
+  fromfpxf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fromfpxf_test.cpp
+  HDRS
+    FromfpxTest.h
+  DEPENDS
+    libc.src.math.fromfpxf
+)
+
+add_fp_unittest(
+  fromfpxl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fromfpxl_test.cpp
+  HDRS
+    FromfpxTest.h
+  DEPENDS
+    libc.src.math.fromfpxl
+)
+
+add_fp_unittest(
+  fromfpxf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fromfpxf16_test.cpp
+  HDRS
+    FromfpxTest.h
+  DEPENDS
+    libc.src.math.fromfpxf16
+)
+
+add_fp_unittest(
+  fromfpxf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fromfpxf128_test.cpp
+  HDRS
+    FromfpxTest.h
+  DEPENDS
+    libc.src.math.fromfpxf128
+)
+
+add_fp_unittest(
+  fromfpxbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fromfpxbf16_test.cpp
+  HDRS
+    FromfpxTest.h
+  DEPENDS
+    libc.src.math.fromfpxbf16
+    libc.src.__support.FPUtil.bfloat16
+)
+
+
+add_fp_unittest(
+  ufromfp_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    ufromfp_test.cpp
+  HDRS
+    UfromfpTest.h
+  DEPENDS
+    libc.src.math.ufromfp
+)
+
+add_fp_unittest(
+  ufromfpf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    ufromfpf_test.cpp
+  HDRS
+    UfromfpTest.h
+  DEPENDS
+    libc.src.math.ufromfpf
+)
+
+add_fp_unittest(
+  ufromfpl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    ufromfpl_test.cpp
+  HDRS
+    UfromfpTest.h
+  DEPENDS
+    libc.src.math.ufromfpl
+)
+
+add_fp_unittest(
+  ufromfpf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    ufromfpf16_test.cpp
+  HDRS
+    UfromfpTest.h
+  DEPENDS
+    libc.src.math.ufromfpf16
+)
+
+add_fp_unittest(
+  ufromfpf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    ufromfpf128_test.cpp
+  HDRS
+    UfromfpTest.h
+  DEPENDS
+    libc.src.math.ufromfpf128
+)
+
+add_fp_unittest(
+  ufromfpbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    ufromfpbf16_test.cpp
+  HDRS
+    UfromfpTest.h
+  DEPENDS
+    libc.src.math.ufromfpbf16
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  ufromfpx_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    ufromfpx_test.cpp
+  HDRS
+    UfromfpxTest.h
+  DEPENDS
+    libc.src.math.ufromfpx
+)
+
+add_fp_unittest(
+  ufromfpxf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    ufromfpxf_test.cpp
+  HDRS
+    UfromfpxTest.h
+  DEPENDS
+    libc.src.math.ufromfpxf
+)
+
+add_fp_unittest(
+  ufromfpxl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    ufromfpxl_test.cpp
+  HDRS
+    UfromfpxTest.h
+  DEPENDS
+    libc.src.math.ufromfpxl
+)
+
+add_fp_unittest(
+  ufromfpxf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    ufromfpxf16_test.cpp
+  HDRS
+    UfromfpxTest.h
+  DEPENDS
+    libc.src.math.ufromfpxf16
+)
+
+add_fp_unittest(
+  ufromfpxf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    ufromfpxf128_test.cpp
+  HDRS
+    UfromfpxTest.h
+  DEPENDS
+    libc.src.math.ufromfpxf128
+)
+
+add_fp_unittest(
+  ufromfpxbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    ufromfpxbf16_test.cpp
+  HDRS
+    UfromfpxTest.h
+  DEPENDS
+    libc.src.math.ufromfpxbf16
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  ilogb_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    ilogb_test.cpp
+  HDRS
+    ILogbTest.h
+  DEPENDS
+    libc.src.math.ilogb
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.manipulation_functions
+)
+
+add_fp_unittest(
+  ilogbf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    ilogbf_test.cpp
+  HDRS
+    ILogbTest.h
+  DEPENDS
+    libc.src.math.ilogbf
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.manipulation_functions
+)
+
+add_fp_unittest(
+  ilogbl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    ilogbl_test.cpp
+  HDRS
+    ILogbTest.h
+  DEPENDS
+    libc.src.math.ilogbl
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.manipulation_functions
+)
+
+add_fp_unittest(
+  ilogbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    ilogbf16_test.cpp
+  HDRS
+    ILogbTest.h
+  DEPENDS
+    libc.src.math.ilogbf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.manipulation_functions
+)
+
+add_fp_unittest(
+  ilogbf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    ilogbf128_test.cpp
+  HDRS
+    ILogbTest.h
+  DEPENDS
+    libc.src.math.ilogbf128
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.manipulation_functions
+)
+
+add_fp_unittest(
+  ilogbbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    ilogbbf16_test.cpp
+  HDRS
+    ILogbTest.h
+  DEPENDS
+    libc.src.math.ilogbbf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.manipulation_functions
+)
+
+add_fp_unittest(
+  issignaling_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    issignaling_test.cpp
+  HDRS
+    IsSignalingTest.h
+  DEPENDS
+    libc.src.math.issignaling
+)
+
+add_fp_unittest(
+  issignalingf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    issignalingf_test.cpp
+  HDRS
+    IsSignalingTest.h
+  DEPENDS
+    libc.src.math.issignalingf
+)
+
+add_fp_unittest(
+  issignalingl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    issignalingl_test.cpp
+  HDRS
+    IsSignalingTest.h
+  DEPENDS
+    libc.src.math.issignalingl
+)
+
+add_fp_unittest(
+  issignalingf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    issignalingf16_test.cpp
+  HDRS
+    IsSignalingTest.h
+  DEPENDS
+    libc.src.math.issignalingf16
+)
+
+add_fp_unittest(
+  issignalingf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    issignalingf128_test.cpp
+  HDRS
+    IsSignalingTest.h
+  DEPENDS
+    libc.src.math.issignalingf128
+)
+
+add_fp_unittest(
+  issignalingbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    issignalingbf16_test.cpp
+  HDRS
+    IsSignalingTest.h
+  DEPENDS
+    libc.src.math.issignalingbf16
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  llogb_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    llogb_test.cpp
+  HDRS
+    ILogbTest.h
+  DEPENDS
+    libc.src.math.llogb
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.manipulation_functions
+)
+
+add_fp_unittest(
+  llogbf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    llogbf_test.cpp
+  HDRS
+    ILogbTest.h
+  DEPENDS
+    libc.src.math.llogbf
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.manipulation_functions
+)
+
+add_fp_unittest(
+  llogbl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    llogbl_test.cpp
+  HDRS
+    ILogbTest.h
+  DEPENDS
+    libc.src.math.llogbl
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.manipulation_functions
+)
+
+add_fp_unittest(
+  llogbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    llogbf16_test.cpp
+  HDRS
+    ILogbTest.h
+  DEPENDS
+    libc.src.math.llogbf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.manipulation_functions
+)
+
+add_fp_unittest(
+  llogbf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    llogbf128_test.cpp
+  HDRS
+    ILogbTest.h
+  DEPENDS
+    libc.src.math.llogbf128
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.manipulation_functions
+)
+
+add_fp_unittest(
+  llogbbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    llogbbf16_test.cpp
+  HDRS
+    ILogbTest.h
+  DEPENDS
+    libc.src.math.llogbbf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.manipulation_functions
+)
+
+add_fp_unittest(
+  ldexp_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    ldexp_test.cpp
+  HDRS
+    LdExpTest.h
+  DEPENDS
+    libc.src.math.ldexp
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.CPP.limits
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.normal_float
+)
+
+add_fp_unittest(
+  ldexpf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    ldexpf_test.cpp
+  HDRS
+    LdExpTest.h
+  DEPENDS
+    libc.src.math.ldexpf
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.CPP.limits
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.normal_float
+)
+
+add_fp_unittest(
+  ldexpl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    ldexpl_test.cpp
+  HDRS
+    LdExpTest.h
+  DEPENDS
+    libc.src.math.ldexpl
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.CPP.limits
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.normal_float
+)
+
+add_fp_unittest(
+  ldexpf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    ldexpf16_test.cpp
+  HDRS
+    LdExpTest.h
+  DEPENDS
+    libc.src.math.ldexpf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.CPP.limits
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.normal_float
+)
+
+add_fp_unittest(
+  ldexpf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    ldexpf128_test.cpp
+  HDRS
+    LdExpTest.h
+  DEPENDS
+    libc.src.math.ldexpf128
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.CPP.limits
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.normal_float
+)
+
+add_fp_unittest(
+  ldexpbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    ldexpbf16_test.cpp
+  HDRS
+    LdExpTest.h
+  DEPENDS
+    libc.src.math.ldexpbf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.CPP.limits
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.normal_float
+)
+
+add_fp_unittest(
+  logb_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    logb_test.cpp
+  HDRS
+    LogbTest.h
+  DEPENDS
+    libc.src.math.logb
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.manipulation_functions
+)
+
+add_fp_unittest(
+  logbf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    logbf_test.cpp
+  HDRS
+    LogbTest.h
+  DEPENDS
+    libc.src.math.logbf
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.manipulation_functions
+)
+
+add_fp_unittest(
+  logbl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    logbl_test.cpp
+  HDRS
+    LogbTest.h
+  DEPENDS
+    libc.src.math.logbl
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.manipulation_functions
+)
+
+add_fp_unittest(
+  logbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    logbf16_test.cpp
+  HDRS
+    LogbTest.h
+  DEPENDS
+    libc.src.math.logbf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.manipulation_functions
+)
+
+add_fp_unittest(
+  logbf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    logbf128_test.cpp
+  HDRS
+    LogbTest.h
+  DEPENDS
+    libc.src.math.logbf128
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.manipulation_functions
+)
+
+add_fp_unittest(
+  logbbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    logbbf16_test.cpp
+  HDRS
+    LogbTest.h
+  DEPENDS
+    libc.src.math.logbbf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.FPUtil.manipulation_functions
+)
+
+add_fp_unittest(
+  modf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    modf_test.cpp
+  HDRS
+    ModfTest.h
+  DEPENDS
+    libc.src.math.modf
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.nearest_integer_operations
+)
+
+add_fp_unittest(
+  modff_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    modff_test.cpp
+  HDRS
+    ModfTest.h
+  DEPENDS
+    libc.src.math.modff
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.nearest_integer_operations
+)
+
+add_fp_unittest(
+  modfl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    modfl_test.cpp
+  HDRS
+    ModfTest.h
+  DEPENDS
+    libc.src.math.modfl
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.nearest_integer_operations
+)
+
+add_fp_unittest(
+  modff16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    modff16_test.cpp
+  HDRS
+    ModfTest.h
+  DEPENDS
+    libc.src.math.modff16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.nearest_integer_operations
+)
+
+add_fp_unittest(
+  modff128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    modff128_test.cpp
+  HDRS
+    ModfTest.h
+  DEPENDS
+    libc.src.math.modff128
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.nearest_integer_operations
+)
+
+add_fp_unittest(
+  modfbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    modfbf16_test.cpp
+  HDRS
+    ModfTest.h
+  DEPENDS
+    libc.src.math.modfbf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.FPUtil.nearest_integer_operations
+)
+
+add_fp_unittest(
+  fdimf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fdimf_test.cpp
+  HDRS
+    FDimTest.h
+  DEPENDS
+    libc.src.math.fdimf
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fdim_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fdim_test.cpp
+  HDRS
+    FDimTest.h
+  DEPENDS
+    libc.src.math.fdim
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fdiml_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fdiml_test.cpp
+  HDRS
+    FDimTest.h
+  DEPENDS
+    libc.src.math.fdiml
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fdimf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fdimf16_test.cpp
+  HDRS
+    FDimTest.h
+  DEPENDS
+    libc.src.math.fdimf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fdimf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fdimf128_test.cpp
+  HDRS
+    FDimTest.h
+  DEPENDS
+    libc.src.math.fdimf128
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fdimbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fdimbf16_test.cpp
+  HDRS
+    FDimTest.h
+  DEPENDS
+    libc.src.math.fdimbf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fminf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fminf_test.cpp
+  HDRS
+    FMinTest.h
+  DEPENDS
+    libc.src.math.fminf
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fmin_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fmin_test.cpp
+  HDRS
+    FMinTest.h
+  DEPENDS
+    libc.src.math.fmin
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fminl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fminl_test.cpp
+  HDRS
+    FMinTest.h
+  DEPENDS
+    libc.src.math.fminl
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fminf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fminf128_test.cpp
+  HDRS
+    FMinTest.h
+  DEPENDS
+    libc.src.math.fminf128
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fminf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fminf16_test.cpp
+  HDRS
+    FMinTest.h
+  DEPENDS
+    libc.src.math.fminf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fminbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fminbf16_test.cpp
+  HDRS
+    FMinTest.h
+  DEPENDS
+    libc.src.math.fminbf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fmaxf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fmaxf_test.cpp
+  HDRS
+    FMaxTest.h
+  DEPENDS
+    libc.src.math.fmaxf
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fmax_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fmax_test.cpp
+  HDRS
+    FMaxTest.h
+  DEPENDS
+    libc.src.math.fmax
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fmaxl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fmaxl_test.cpp
+  HDRS
+    FMaxTest.h
+  DEPENDS
+    libc.src.math.fmaxl
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fmaxf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fmaxf128_test.cpp
+  HDRS
+    FMaxTest.h
+  DEPENDS
+    libc.src.math.fmaxf128
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fmaxf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fmaxf16_test.cpp
+  HDRS
+    FMaxTest.h
+  DEPENDS
+    libc.src.math.fmaxf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fmaxbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fmaxbf16_test.cpp
+  HDRS
+    FMaxTest.h
+  DEPENDS
+    libc.src.math.fmaxbf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fmaximuml_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fmaximuml_test.cpp
+  HDRS
+    FMaximumTest.h
+  DEPENDS
+    libc.src.math.fmaximuml
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fmaximumf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fmaximumf16_test.cpp
+  HDRS
+    FMaximumTest.h
+  DEPENDS
+    libc.src.math.fmaximumf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fmaximumf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fmaximumf128_test.cpp
+  HDRS
+    FMaximumTest.h
+  DEPENDS
+    libc.src.math.fmaximumf128
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fmaximum_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fmaximum_test.cpp
+  HDRS
+    FMaximumTest.h
+  DEPENDS
+    libc.src.math.fmaximum
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fmaximumf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fmaximumf_test.cpp
+  HDRS
+    FMaximumTest.h
+  DEPENDS
+    libc.src.math.fmaximumf
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fmaximum_numf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fmaximum_numf_test.cpp
+  HDRS
+    FMaximumNumTest.h
+  DEPENDS
+    libc.src.math.fmaximum_numf
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fmaximumbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fmaximumbf16_test.cpp
+  HDRS
+    FMaximumTest.h
+  DEPENDS
+    libc.src.math.fmaximumbf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fmaximum_num_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fmaximum_num_test.cpp
+  HDRS
+    FMaximumNumTest.h
+  DEPENDS
+    libc.src.math.fmaximum_num
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fmaximum_numl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fmaximum_numl_test.cpp
+  HDRS
+    FMaximumNumTest.h
+  DEPENDS
+    libc.src.math.fmaximum_numl
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fmaximum_numf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fmaximum_numf16_test.cpp
+  HDRS
+    FMaximumNumTest.h
+  DEPENDS
+    libc.src.math.fmaximum_numf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fmaximum_numf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fmaximum_numf128_test.cpp
+  HDRS
+    FMaximumNumTest.h
+  DEPENDS
+    libc.src.math.fmaximum_numf128
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fmaximum_numbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fmaximum_numbf16_test.cpp
+  HDRS
+    FMaximumTest.h
+  DEPENDS
+    libc.src.math.fmaximum_numbf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fmaximum_magf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fmaximum_magf_test.cpp
+  HDRS
+    FMaximumMagTest.h
+  DEPENDS
+    libc.src.math.fmaximum_magf
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fmaximum_mag_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fmaximum_mag_test.cpp
+  HDRS
+    FMaximumMagTest.h
+  DEPENDS
+    libc.src.math.fmaximum_mag
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fmaximum_magl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fmaximum_magl_test.cpp
+  HDRS
+    FMaximumMagTest.h
+  DEPENDS
+    libc.src.math.fmaximum_magl
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fmaximum_magf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fmaximum_magf16_test.cpp
+  HDRS
+    FMaximumMagTest.h
+  DEPENDS
+    libc.src.math.fmaximum_magf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fmaximum_magf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fmaximum_magf128_test.cpp
+  HDRS
+    FMaximumMagTest.h
+  DEPENDS
+    libc.src.math.fmaximum_magf128
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fmaximum_magbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fmaximum_magbf16_test.cpp
+  HDRS
+    FMaximumTest.h
+  DEPENDS
+    libc.src.math.fmaximum_magbf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fmaximum_mag_numf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fmaximum_mag_numf_test.cpp
+  HDRS
+    FMaximumMagNumTest.h
+  DEPENDS
+    libc.src.math.fmaximum_mag_numf
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fmaximum_mag_num_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fmaximum_mag_num_test.cpp
+  HDRS
+    FMaximumMagNumTest.h
+  DEPENDS
+    libc.src.math.fmaximum_mag_num
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fmaximum_mag_numl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fmaximum_mag_numl_test.cpp
+  HDRS
+    FMaximumMagNumTest.h
+  DEPENDS
+    libc.src.math.fmaximum_mag_numl
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fmaximum_mag_numf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fmaximum_mag_numf16_test.cpp
+  HDRS
+    FMaximumMagNumTest.h
+  DEPENDS
+    libc.src.math.fmaximum_mag_numf16
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fmaximum_mag_numf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fmaximum_mag_numf128_test.cpp
+  HDRS
+    FMaximumMagNumTest.h
+  DEPENDS
+    libc.src.math.fmaximum_mag_numf128
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fmaximum_mag_numbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fmaximum_mag_numbf16_test.cpp
+  HDRS
+    FMaximumTest.h
+  DEPENDS
+    libc.src.math.fmaximum_mag_numbf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fminimuml_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fminimuml_test.cpp
+  HDRS
+    FMinimumTest.h
+  DEPENDS
+    libc.src.math.fminimuml
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fminimumf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fminimumf16_test.cpp
+  HDRS
+    FMinimumTest.h
+  DEPENDS
+    libc.src.math.fminimumf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fminimumf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fminimumf128_test.cpp
+  HDRS
+    FMinimumTest.h
+  DEPENDS
+    libc.src.math.fminimumf128
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fminimum_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fminimum_test.cpp
+  HDRS
+    FMinimumTest.h
+  DEPENDS
+    libc.src.math.fminimum
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fminimumf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fminimumf_test.cpp
+  HDRS
+    FMinimumTest.h
+  DEPENDS
+    libc.src.math.fminimumf
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fminimumbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fminimumbf16_test.cpp
+  HDRS
+    FMaximumTest.h
+  DEPENDS
+    libc.src.math.fminimumbf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fminimum_numf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fminimum_numf_test.cpp
+  HDRS
+    FMinimumNumTest.h
+  DEPENDS
+    libc.src.math.fminimum_numf
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fminimum_num_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fminimum_num_test.cpp
+  HDRS
+    FMinimumNumTest.h
+  DEPENDS
+    libc.src.math.fminimum_num
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fminimum_numl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fminimum_numl_test.cpp
+  HDRS
+    FMinimumNumTest.h
+  DEPENDS
+    libc.src.math.fminimum_numl
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fminimum_numf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fminimum_numf16_test.cpp
+  HDRS
+    FMinimumNumTest.h
+  DEPENDS
+    libc.src.math.fminimum_numf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fminimum_numf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fminimum_numf128_test.cpp
+  HDRS
+    FMinimumNumTest.h
+  DEPENDS
+    libc.src.math.fminimum_numf128
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fminimum_numbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fminimum_numf16_test.cpp
+  HDRS
+    FMaximumTest.h
+  DEPENDS
+    libc.src.math.fminimum_numf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fminimum_magf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fminimum_magf_test.cpp
+  HDRS
+    FMinimumMagTest.h
+  DEPENDS
+    libc.src.math.fminimum_magf
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fminimum_mag_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fminimum_mag_test.cpp
+  HDRS
+    FMinimumMagTest.h
+  DEPENDS
+    libc.src.math.fminimum_mag
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fminimum_magl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fminimum_magl_test.cpp
+  HDRS
+    FMinimumMagTest.h
+  DEPENDS
+    libc.src.math.fminimum_magl
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fminimum_magf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fminimum_magf16_test.cpp
+  HDRS
+    FMinimumMagTest.h
+  DEPENDS
+    libc.src.math.fminimum_magf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fminimum_magf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fminimum_magf128_test.cpp
+  HDRS
+    FMinimumMagTest.h
+  DEPENDS
+    libc.src.math.fminimum_magf128
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fminimum_magbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fminimum_magbf16_test.cpp
+  HDRS
+    FMaximumTest.h
+  DEPENDS
+    libc.src.math.fminimum_magbf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fminimum_mag_numf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fminimum_mag_numf_test.cpp
+  HDRS
+    FMinimumMagNumTest.h
+  DEPENDS
+    libc.src.math.fminimum_mag_numf
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fminimum_mag_num_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fminimum_mag_num_test.cpp
+  HDRS
+    FMinimumMagNumTest.h
+  DEPENDS
+    libc.src.math.fminimum_mag_num
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fminimum_mag_numl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fminimum_mag_numl_test.cpp
+  HDRS
+    FMinimumMagNumTest.h
+  DEPENDS
+    libc.src.math.fminimum_mag_numl
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fminimum_mag_numf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fminimum_mag_numf16_test.cpp
+  HDRS
+    FMinimumMagNumTest.h
+  DEPENDS
+    libc.src.math.fminimum_mag_numf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fminimum_mag_numf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fminimum_mag_numf128_test.cpp
+  HDRS
+    FMinimumMagNumTest.h
+  DEPENDS
+    libc.src.math.fminimum_mag_numf128
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fminimum_mag_numbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fminimum_mag_numbf16_test.cpp
+  HDRS
+    FMaximumTest.h
+  DEPENDS
+    libc.src.math.fminimum_mag_numbf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fmul_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fmul_test.cpp
+  HDRS
+    MulTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.math.fmul
+)
+
+add_fp_unittest(
+  fmull_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fmull_test.cpp
+  HDRS
+    MulTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.math.fmull
+)
+
+add_fp_unittest(
+  sqrtf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    sqrtf_test.cpp
+  HDRS
+    SqrtTest.h
+  DEPENDS
+    libc.src.math.sqrtf
+)
+
+add_fp_unittest(
+  sqrt_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    sqrt_test.cpp
+  HDRS
+    SqrtTest.h
+  DEPENDS
+    libc.src.math.sqrt
+)
+
+add_fp_unittest(
+  sqrtl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    sqrtl_test.cpp
+  HDRS
+    SqrtTest.h
+  DEPENDS
+    libc.src.math.sqrtl
+)
+
+add_fp_unittest(
+  rsqrtf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    rsqrtf_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros  
+    libc.hdr.fenv_macros  
+    libc.src.math.rsqrtf 
+)
+
+add_fp_unittest(
+  rsqrtf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    rsqrtf16_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros  
+    libc.hdr.fenv_macros 
+    libc.src.math.rsqrtf16
+)
+
+add_fp_unittest(
+  sqrtf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    sqrtf16_test.cpp
+  HDRS
+    SqrtTest.h
+  DEPENDS
+    libc.src.math.sqrtf16
+)
+
+add_fp_unittest(
+  sqrtf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    sqrtf128_test.cpp
+  HDRS
+    SqrtTest.h
+  DEPENDS
+    libc.src.math.sqrtf128
+)
+
+add_fp_unittest(
+  sqrtbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    sqrtbf16_test.cpp
+  HDRS
+    SqrtTest.h
+  DEPENDS
+    libc.src.math.sqrtbf16
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  generic_sqrtf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    generic_sqrtf_test.cpp
+  HDRS
+    SqrtTest.h
+  DEPENDS
+    libc.src.__support.FPUtil.generic.sqrt
+  COMPILE_OPTIONS
+    ${libc_opt_high_flag}
+)
+
+add_fp_unittest(
+  generic_sqrt_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    generic_sqrt_test.cpp
+  HDRS
+    SqrtTest.h
+  DEPENDS
+    libc.src.__support.FPUtil.generic.sqrt
+  COMPILE_OPTIONS
+    ${libc_opt_high_flag}
+)
+
+add_fp_unittest(
+  generic_sqrtl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    generic_sqrtl_test.cpp
+  HDRS
+    SqrtTest.h
+  DEPENDS
+    libc.src.__support.FPUtil.generic.sqrt
+  COMPILE_OPTIONS
+    ${libc_opt_high_flag}
+)
+
+add_fp_unittest(
+  generic_sqrtf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    generic_sqrtf128_test.cpp
+  HDRS
+    SqrtTest.h
+  DEPENDS
+    # The dependency on sqrtf128 is used to disable the test when float128
+    # support is not available.
+    libc.src.math.sqrtf128
+    libc.src.__support.FPUtil.generic.sqrt
+  COMPILE_OPTIONS
+    ${libc_opt_high_flag}
+)
+
+add_fp_unittest(
+  remquof_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    remquof_test.cpp
+  HDRS
+    RemQuoTest.h
+  DEPENDS
+    libc.src.math.remquof
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  remquof128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    remquof128_test.cpp
+  HDRS
+    RemQuoTest.h
+  DEPENDS
+    libc.src.math.remquof128
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  remquo_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    remquo_test.cpp
+  HDRS
+    RemQuoTest.h
+  DEPENDS
+    libc.src.math.remquo
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  remquol_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    remquol_test.cpp
+  HDRS
+    RemQuoTest.h
+  DEPENDS
+    libc.src.math.remquol
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  remquof16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    remquof16_test.cpp
+  HDRS
+    RemQuoTest.h
+  DEPENDS
+    libc.src.math.remquof16
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  remquobf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    remquobf16_test.cpp
+  HDRS
+    RemQuoTest.h
+  DEPENDS
+    libc.src.math.remquobf16
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  hypotf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    hypotf_test.cpp
+  HDRS
+    HypotTest.h
+  DEPENDS
+    libc.src.math.hypotf
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.macros.properties.architectures
+)
+
+add_fp_unittest(
+  hypotf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    hypotf16_test.cpp
+  HDRS
+    HypotTest.h
+  DEPENDS
+    libc.src.math.hypotf16
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  hypot_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    hypot_test.cpp
+  HDRS
+    HypotTest.h
+  DEPENDS
+    libc.src.math.hypot
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.macros.properties.architectures
+)
+
+add_fp_unittest(
+  nanf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    nanf_test.cpp
+  DEPENDS
+    libc.hdr.signal_macros
+    libc.src.math.nanf
+    libc.src.__support.FPUtil.fp_bits
+  # FIXME: The nan tests currently have death tests, which aren't supported for
+  # hermetic tests.
+  UNIT_TEST_ONLY
+)
+
+add_fp_unittest(
+  nan_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    nan_test.cpp
+  DEPENDS
+    libc.hdr.signal_macros
+    libc.src.math.nan
+    libc.src.__support.FPUtil.fp_bits
+  # FIXME: The nan tests currently have death tests, which aren't supported for
+  # hermetic tests.
+  UNIT_TEST_ONLY
+)
+
+add_fp_unittest(
+  nanl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    nanl_test.cpp
+  DEPENDS
+    libc.hdr.signal_macros
+    libc.src.math.nanl
+    libc.src.__support.FPUtil.fp_bits
+  # FIXME: The nan tests currently have death tests, which aren't supported for
+  # hermetic tests.
+  UNIT_TEST_ONLY
+)
+
+add_fp_unittest(
+  nanf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    nanf16_test.cpp
+  DEPENDS
+    libc.hdr.signal_macros
+    libc.src.math.nanf16
+    libc.src.__support.FPUtil.fp_bits
+  # FIXME: The nan tests currently have death tests, which aren't supported for
+  # hermetic tests.
+  UNIT_TEST_ONLY
+)
+
+add_fp_unittest(
+  nanf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    nanf128_test.cpp
+  DEPENDS
+    libc.hdr.signal_macros
+    libc.src.math.nanf128
+    libc.src.__support.FPUtil.fp_bits
+  # FIXME: The nan tests currently have death tests, which aren't supported for
+  # hermetic tests.
+  UNIT_TEST_ONLY
+)
+
+add_fp_unittest(
+  nanbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    nanbf16_test.cpp
+  DEPENDS
+    libc.hdr.signal_macros
+    libc.src.math.nanbf16
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.FPUtil.fp_bits
+  # FIXME: The nan tests currently have death tests, which aren't supported for
+  # hermetic tests.
+  UNIT_TEST_ONLY
+)
+
+add_fp_unittest(
+  nearbyint_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    nearbyint_test.cpp
+  HDRS
+    NearbyIntTest.h
+  DEPENDS
+    libc.hdr.fenv_macros
+    libc.src.math.nearbyint
+)
+
+add_fp_unittest(
+  nearbyintf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    nearbyintf_test.cpp
+  HDRS
+    NearbyIntTest.h
+  DEPENDS
+    libc.hdr.fenv_macros
+    libc.src.math.nearbyintf
+)
+
+add_fp_unittest(
+  nearbyintl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    nearbyintl_test.cpp
+  HDRS
+    NearbyIntTest.h
+  DEPENDS
+    libc.hdr.fenv_macros
+    libc.src.math.nearbyintl
+)
+
+add_fp_unittest(
+  nearbyintf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    nearbyintf16_test.cpp
+  HDRS
+    NearbyIntTest.h
+  DEPENDS
+    libc.hdr.fenv_macros
+    libc.src.math.nearbyintf16
+)
+
+add_fp_unittest(
+  nearbyintf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    nearbyintf128_test.cpp
+  HDRS
+    NearbyIntTest.h
+  DEPENDS
+    libc.hdr.fenv_macros
+    libc.src.math.nearbyintf128
+)
+
+add_fp_unittest(
+  nearbyintbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    nearbyintbf16_test.cpp
+  HDRS
+    NearbyIntTest.h
+  DEPENDS
+    libc.hdr.fenv_macros
+    libc.src.math.nearbyintbf16
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  nextafter_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    nextafter_test.cpp
+  HDRS
+    NextAfterTest.h
+  DEPENDS
+    libc.hdr.fenv_macros
+    libc.src.math.nextafter
+    libc.src.__support.CPP.bit
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  nextafterf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    nextafterf_test.cpp
+  HDRS
+    NextAfterTest.h
+  DEPENDS
+    libc.hdr.fenv_macros
+    libc.src.math.nextafterf
+    libc.src.__support.CPP.bit
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  nextafterl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    nextafterl_test.cpp
+  HDRS
+    NextAfterTest.h
+  DEPENDS
+    libc.hdr.fenv_macros
+    libc.src.math.nextafterl
+    libc.src.__support.CPP.bit
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  nextafterf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    nextafterf16_test.cpp
+  HDRS
+    NextAfterTest.h
+  DEPENDS
+    libc.hdr.fenv_macros
+    libc.src.math.nextafterf16
+    libc.src.__support.CPP.bit
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  nextafterf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    nextafterf128_test.cpp
+  HDRS
+    NextAfterTest.h
+  DEPENDS
+    libc.hdr.fenv_macros
+    libc.src.math.nextafterf128
+    libc.src.__support.CPP.bit
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  nextafterbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    nextafterbf16_test.cpp
+  HDRS
+    NextAfterTest.h
+  DEPENDS
+    libc.hdr.fenv_macros
+    libc.src.math.nextafterbf16
+    libc.src.__support.CPP.bit
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+# FIXME: These tests are currently spurious for the GPU.
+if(NOT LIBC_TARGET_OS_IS_GPU)
+  add_fp_unittest(
+    nexttoward_test
+    SUITE
+      libc-math-smoke-tests
+    SRCS
+      nexttoward_test.cpp
+    HDRS
+      NextTowardTest.h
+    DEPENDS
+      libc.hdr.fenv_macros
+      libc.src.math.nexttoward
+      libc.src.__support.CPP.bit
+      libc.src.__support.FPUtil.fenv_impl
+      libc.src.__support.FPUtil.fp_bits
+  )
+
+  add_fp_unittest(
+    nexttowardf_test
+    SUITE
+      libc-math-smoke-tests
+    SRCS
+      nexttowardf_test.cpp
+    HDRS
+      NextTowardTest.h
+    DEPENDS
+      libc.hdr.fenv_macros
+      libc.src.math.nexttowardf
+      libc.src.__support.CPP.bit
+      libc.src.__support.FPUtil.fenv_impl
+      libc.src.__support.FPUtil.fp_bits
+  )
+endif()
+
+add_fp_unittest(
+  nexttowardl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    nexttowardl_test.cpp
+  HDRS
+    NextTowardTest.h
+  DEPENDS
+    libc.hdr.fenv_macros
+    libc.src.math.nexttowardl
+    libc.src.__support.CPP.bit
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  nexttowardf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    nexttowardf16_test.cpp
+  HDRS
+    NextTowardTest.h
+  DEPENDS
+    libc.hdr.fenv_macros
+    libc.src.math.nexttowardf16
+    libc.src.__support.CPP.bit
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  nexttowardbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    nexttowardbf16_test.cpp
+  HDRS
+    NextTowardTest.h
+  DEPENDS
+    libc.hdr.fenv_macros
+    libc.src.math.nexttowardbf16
+    libc.src.__support.CPP.bit
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  nextdown_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    nextdown_test.cpp
+  HDRS
+    NextDownTest.h
+  DEPENDS
+    libc.src.math.nextdown
+)
+
+add_fp_unittest(
+  nextdownf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    nextdownf_test.cpp
+  HDRS
+    NextDownTest.h
+  DEPENDS
+    libc.src.math.nextdownf
+)
+
+add_fp_unittest(
+  nextdownl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    nextdownl_test.cpp
+  HDRS
+    NextDownTest.h
+  DEPENDS
+    libc.src.math.nextdownl
+)
+
+add_fp_unittest(
+  nextdownf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    nextdownf16_test.cpp
+  HDRS
+    NextDownTest.h
+  DEPENDS
+    libc.src.math.nextdownf16
+)
+
+add_fp_unittest(
+  nextdownf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    nextdownf128_test.cpp
+  HDRS
+    NextDownTest.h
+  DEPENDS
+    libc.src.math.nextdownf128
+)
+
+add_fp_unittest(
+  nextdownbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    nextdownbf16_test.cpp
+  HDRS
+    NextDownTest.h
+  DEPENDS
+    libc.src.math.nextdownbf16
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  nextup_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    nextup_test.cpp
+  HDRS
+    NextUpTest.h
+  DEPENDS
+    libc.src.math.nextup
+)
+
+add_fp_unittest(
+  nextupf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    nextupf_test.cpp
+  HDRS
+    NextUpTest.h
+  DEPENDS
+    libc.src.math.nextupf
+)
+
+add_fp_unittest(
+  nextupl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    nextupl_test.cpp
+  HDRS
+    NextUpTest.h
+  DEPENDS
+    libc.src.math.nextupl
+)
+
+add_fp_unittest(
+  nextupf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    nextupf16_test.cpp
+  HDRS
+    NextUpTest.h
+  DEPENDS
+    libc.src.math.nextupf16
+)
+
+add_fp_unittest(
+  nextupf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    nextupf128_test.cpp
+  HDRS
+    NextUpTest.h
+  DEPENDS
+    libc.src.math.nextupf128
+)
+
+add_fp_unittest(
+  nextupbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    nextupbf16_test.cpp
+  HDRS
+    NextUpTest.h
+  DEPENDS
+    libc.src.math.nextupbf16
+    libc.src.__support.FPUtil.bfloat16
+)
+
+# TODO(lntue): The current implementation of fputil::general::fma<float> is only
+# correctly rounded for the default rounding mode round-to-nearest tie-to-even.
+add_fp_unittest(
+  fmaf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fmaf_test.cpp
+  HDRS
+    FmaTest.h
+  DEPENDS
+    libc.src.math.fmaf
+    libc.src.__support.macros.properties.types
+)
+
+add_fp_unittest(
+  fmaf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fmaf16_test.cpp
+  HDRS
+    FmaTest.h
+  DEPENDS
+    libc.src.math.fmaf16
+    libc.src.__support.FPUtil.cast
+)
+
+add_fp_unittest(
+  fmabf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fmabf16_test.cpp
+  HDRS
+    FmaTest.h
+  DEPENDS
+    libc.src.math.fmabf16
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  fma_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fma_test.cpp
+  HDRS
+    FmaTest.h
+  DEPENDS
+    libc.src.math.fma
+    libc.src.__support.macros.properties.types
+)
+
+add_fp_unittest(
+  expm1_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    expm1_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.expm1
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  expm1f_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    expm1f_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.expm1f
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  expm1f16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    expm1f16_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.expm1f16
+    libc.src.__support.FPUtil.cast
+)
+
+add_fp_unittest(
+  log_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    log_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.log
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  logf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    logf_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.logf
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  logf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    logf16_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.logf16
+    libc.src.__support.FPUtil.cast
+)
+
+add_fp_unittest(
+  log_bf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    log_bf16_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.log_bf16
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  log2_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    log2_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.log2
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  log2f_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    log2f_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.log2f
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  log2f16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    log2f16_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.log2f16
+    libc.src.__support.FPUtil.cast
+)
+
+add_fp_unittest(
+  log10_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    log10_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.log10
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  log10f_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    log10f_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.log10f
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  log10f16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    log10f16_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.log10f16
+    libc.src.__support.FPUtil.cast
+)
+
+add_fp_unittest(
+  log1p_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    log1p_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.log1p
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  log1pf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    log1pf_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.log1pf
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fmodf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fmodf_test.cpp
+  HDRS
+    FModTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.fmodf
+    libc.src.__support.FPUtil.fenv_impl
+  # FIXME: Currently fails on the GPU build.
+  UNIT_TEST_ONLY
+)
+
+add_fp_unittest(
+  fmod_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fmod_test.cpp
+  HDRS
+    FModTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.fmod
+    libc.src.__support.FPUtil.fenv_impl
+  # FIXME: Currently fails on the GPU build.
+  UNIT_TEST_ONLY
+)
+
+add_fp_unittest(
+  fmodl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fmodl_test.cpp
+  HDRS
+    FModTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.fmodl
+    libc.src.__support.FPUtil.fenv_impl
+  # FIXME: Currently fails on the GPU build.
+  UNIT_TEST_ONLY
+)
+
+add_fp_unittest(
+  fmodf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fmodf16_test.cpp
+  HDRS
+    FModTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.fmodf16
+    libc.src.__support.FPUtil.fenv_impl
+  # FIXME: Currently fails on the GPU build.
+  UNIT_TEST_ONLY
+)
+
+add_fp_unittest(
+  fmodf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fmodf128_test.cpp
+  HDRS
+    FModTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.fmodf128
+    libc.src.__support.FPUtil.fenv_impl
+  # FIXME: Currently fails on the GPU build.
+  UNIT_TEST_ONLY
+)
+
+add_fp_unittest(
+  fmodbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fmodbf16_test.cpp
+  HDRS
+    FModTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.fmodbf16
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.FPUtil.fenv_impl
+  UNIT_TEST_ONLY
+)
+
+add_fp_unittest(
+  coshf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    coshf_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.coshf
+    libc.src.__support.CPP.array
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  coshf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    coshf16_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.coshf16
+    libc.src.__support.FPUtil.cast
+)
+
+add_fp_unittest(
+  sinhf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    sinhf_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.sinhf
+    libc.src.__support.CPP.array
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  sinhf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    sinhf16_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.sinhf16
+    libc.src.__support.FPUtil.cast
+)
+
+add_fp_unittest(
+  tanhf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    tanhf_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.tanhf
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  tanhf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    tanhf16_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.tanhf16
+    libc.src.__support.FPUtil.cast
+)
+
+add_fp_unittest(
+  atanhf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    atanhf_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.atanhf
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  atanhf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    atanhf16_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.atanhf16
+    libc.src.__support.FPUtil.cast
+)
+
+add_fp_unittest(
+  atanpif16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    atanpif16_test.cpp
+  DEPENDS
+    libc.src.math.atanpif16
+)
+
+add_fp_unittest(
+  asinhf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    asinhf_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.asinhf
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  asinhf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    asinhf16_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.asinhf16
+)
+
+add_fp_unittest(
+  asinpif16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    asinpif16_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.asinpif16
+)
+
+add_fp_unittest(
+  acoshf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    acoshf_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.acoshf
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  acoshf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    acoshf16_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.acoshf16
+    libc.src.__support.FPUtil.cast
+)
+
+add_fp_unittest(
+  asinf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    asinf_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.asinf
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  asin_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    asin_test.cpp
+  DEPENDS
+    libc.src.math.asin
+)
+
+add_fp_unittest(
+  asinf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    asinf16_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.asinf16
+)
+
+add_fp_unittest(
+  acosf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    acosf_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.acosf
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  acos_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    acos_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.acos
+)
+
+add_fp_unittest(
+  acosf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    acosf16_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.acosf16
+)
+
+add_fp_unittest(
+  acospif16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    acospif16_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.acospif16
+)
+
+add_fp_unittest(
+  atanf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    atanf_test.cpp
+  DEPENDS
+    libc.src.math.atanf
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  atan_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    atan_test.cpp
+  DEPENDS
+    libc.src.math.atan
+)
+
+add_fp_unittest(
+  atanf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    atanf16_test.cpp
+  DEPENDS
+    libc.src.math.atanf16
+)
+
+add_fp_unittest(
+  atan2f_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    atan2f_test.cpp
+  DEPENDS
+    libc.src.math.atan2f
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  atan2_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    atan2_test.cpp
+  DEPENDS
+    libc.src.math.atan2
+)
+
+add_fp_unittest(
+  atan2f128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    atan2f128_test.cpp
+  DEPENDS
+    libc.src.math.atan2f128
+)
+
+add_fp_unittest(
+  scalbln_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    scalbln_test.cpp
+  HDRS
+    ScalbnTest.h
+  DEPENDS
+    libc.src.math.scalbln
+    libc.src.__support.CPP.limits
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.normal_float
+)
+
+add_fp_unittest(
+  scalblnf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    scalblnf_test.cpp
+  HDRS
+    ScalbnTest.h
+  DEPENDS
+    libc.src.math.scalblnf
+    libc.src.__support.CPP.limits
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.normal_float
+)
+
+add_fp_unittest(
+  scalblnl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    scalblnl_test.cpp
+  HDRS
+    ScalbnTest.h
+  DEPENDS
+    libc.src.math.scalblnl
+    libc.src.__support.CPP.limits
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.normal_float
+)
+
+add_fp_unittest(
+  scalblnf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    scalblnf16_test.cpp
+  HDRS
+    ScalbnTest.h
+  DEPENDS
+    libc.src.math.scalblnf16
+    libc.src.__support.CPP.limits
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.normal_float
+)
+
+add_fp_unittest(
+  scalblnf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    scalblnf128_test.cpp
+  HDRS
+    ScalbnTest.h
+  DEPENDS
+    libc.src.math.scalblnf128
+    libc.src.__support.CPP.limits
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.normal_float
+)
+
+add_fp_unittest(
+  scalblnbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    scalblnbf16_test.cpp
+  HDRS
+    ScalbnTest.h
+  DEPENDS
+    libc.src.math.scalblnbf16
+    libc.src.__support.CPP.limits
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.normal_float
+)
+
+add_fp_unittest(
+  scalbn_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    scalbn_test.cpp
+  HDRS
+    ScalbnTest.h
+  DEPENDS
+    libc.src.math.scalbn
+    libc.src.__support.CPP.limits
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.normal_float
+)
+
+add_fp_unittest(
+  scalbnf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    scalbnf_test.cpp
+  HDRS
+    ScalbnTest.h
+  DEPENDS
+    libc.src.math.scalbnf
+    libc.src.__support.CPP.limits
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.normal_float
+)
+
+add_fp_unittest(
+  scalbnl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    scalbnl_test.cpp
+  HDRS
+    ScalbnTest.h
+  DEPENDS
+    libc.src.math.scalbnl
+    libc.src.__support.CPP.limits
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.normal_float
+)
+
+add_fp_unittest(
+  scalbnf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    scalbnf16_test.cpp
+  HDRS
+    ScalbnTest.h
+  DEPENDS
+    libc.src.math.scalbnf16
+    libc.src.__support.CPP.limits
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.normal_float
+)
+
+add_fp_unittest(
+  scalbnf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    scalbnf128_test.cpp
+  HDRS
+    ScalbnTest.h
+  DEPENDS
+    libc.src.math.scalbnf128
+    libc.src.__support.CPP.limits
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.normal_float
+)
+
+add_fp_unittest(
+  scalbnbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    scalbnbf16_test.cpp
+  HDRS
+    ScalbnTest.h
+  DEPENDS
+    libc.src.math.scalbnbf16
+    libc.src.__support.CPP.limits
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.normal_float
+)
+
+add_fp_unittest(
+  erff_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    erff_test.cpp
+  DEPENDS
+    libc.src.math.erff
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  pow_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    pow_test.cpp
+  DEPENDS
+    libc.hdr.fenv_macros
+    libc.src.math.pow
+)
+
+add_fp_unittest(
+  powf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    powf_test.cpp
+  DEPENDS
+    libc.src.math.powf
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  totalorder_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    totalorder_test.cpp
+  HDRS
+    TotalOrderTest.h
+  DEPENDS
+    libc.src.math.totalorder
+)
+
+add_fp_unittest(
+  totalorderf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    totalorderf_test.cpp
+  HDRS
+    TotalOrderTest.h
+  DEPENDS
+    libc.src.math.totalorderf
+)
+
+add_fp_unittest(
+  totalorderl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    totalorderl_test.cpp
+  HDRS
+    TotalOrderTest.h
+  DEPENDS
+    libc.src.math.totalorderl
+)
+
+add_fp_unittest(
+  totalorderf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    totalorderf16_test.cpp
+  HDRS
+    TotalOrderTest.h
+  DEPENDS
+    libc.src.math.totalorderf16
+)
+
+add_fp_unittest(
+  totalorderf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    totalorderf128_test.cpp
+  HDRS
+    TotalOrderTest.h
+  DEPENDS
+    libc.src.math.totalorderf128
+)
+
+add_fp_unittest(
+  totalorderbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    totalorderbf16_test.cpp
+  HDRS
+    TotalOrderTest.h
+  DEPENDS
+    libc.src.math.totalorderbf16
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  totalordermag_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    totalordermag_test.cpp
+  HDRS
+    TotalOrderMagTest.h
+  DEPENDS
+    libc.src.math.totalordermag
+)
+
+add_fp_unittest(
+  totalordermagf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    totalordermagf_test.cpp
+  HDRS
+    TotalOrderMagTest.h
+  DEPENDS
+    libc.src.math.totalordermagf
+)
+
+add_fp_unittest(
+  totalordermagl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    totalordermagl_test.cpp
+  HDRS
+    TotalOrderMagTest.h
+  DEPENDS
+    libc.src.math.totalordermagl
+)
+
+add_fp_unittest(
+  totalordermagf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    totalordermagf16_test.cpp
+  HDRS
+    TotalOrderMagTest.h
+  DEPENDS
+    libc.src.math.totalordermagf16
+)
+
+add_fp_unittest(
+  totalordermagf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    totalordermagf128_test.cpp
+  HDRS
+    TotalOrderMagTest.h
+  DEPENDS
+    libc.src.math.totalordermagf128
+)
+
+add_fp_unittest(
+  totalordermagbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    totalordermagbf16_test.cpp
+  HDRS
+    TotalOrderMagTest.h
+  DEPENDS
+    libc.src.math.totalordermagbf16
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  getpayload_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    getpayload_test.cpp
+  HDRS
+    GetPayloadTest.h
+  DEPENDS
+    libc.src.math.getpayload
+)
+
+add_fp_unittest(
+  getpayloadf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    getpayloadf_test.cpp
+  HDRS
+    GetPayloadTest.h
+  DEPENDS
+    libc.src.math.getpayloadf
+)
+
+add_fp_unittest(
+  getpayloadl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    getpayloadl_test.cpp
+  HDRS
+    GetPayloadTest.h
+  DEPENDS
+    libc.src.math.getpayloadl
+)
+
+add_fp_unittest(
+  getpayloadf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    getpayloadf16_test.cpp
+  HDRS
+    GetPayloadTest.h
+  DEPENDS
+    libc.src.math.getpayloadf16
+)
+
+add_fp_unittest(
+  getpayloadf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    getpayloadf128_test.cpp
+  HDRS
+    GetPayloadTest.h
+  DEPENDS
+    libc.src.math.getpayloadf128
+)
+
+add_fp_unittest(
+  getpayloadbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    getpayloadbf16_test.cpp
+  HDRS
+    GetPayloadTest.h
+  DEPENDS
+    libc.src.math.getpayloadbf16
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  setpayload_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    setpayload_test.cpp
+  HDRS
+    SetPayloadTest.h
+  DEPENDS
+    libc.src.math.setpayload
+)
+
+add_fp_unittest(
+  setpayloadf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    setpayloadf_test.cpp
+  HDRS
+    SetPayloadTest.h
+  DEPENDS
+    libc.src.math.setpayloadf
+)
+
+add_fp_unittest(
+  setpayloadl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    setpayloadl_test.cpp
+  HDRS
+    SetPayloadTest.h
+  DEPENDS
+    libc.src.math.setpayloadl
+)
+
+add_fp_unittest(
+  setpayloadf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    setpayloadf16_test.cpp
+  HDRS
+    SetPayloadTest.h
+  DEPENDS
+    libc.src.math.setpayloadf16
+)
+
+add_fp_unittest(
+  setpayloadf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    setpayloadf128_test.cpp
+  HDRS
+    SetPayloadTest.h
+  DEPENDS
+    libc.src.math.setpayloadf128
+)
+
+add_fp_unittest(
+  setpayloadbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    setpayloadbf16_test.cpp
+  HDRS
+    SetPayloadTest.h
+  DEPENDS
+    libc.src.math.setpayloadbf16
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  setpayloadsig_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    setpayloadsig_test.cpp
+  HDRS
+    SetPayloadSigTest.h
+  DEPENDS
+    libc.src.math.setpayloadsig
+)
+
+add_fp_unittest(
+  setpayloadsigf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    setpayloadsigf_test.cpp
+  HDRS
+    SetPayloadSigTest.h
+  DEPENDS
+    libc.src.math.setpayloadsigf
+)
+
+add_fp_unittest(
+  setpayloadsigl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    setpayloadsigl_test.cpp
+  HDRS
+    SetPayloadSigTest.h
+  DEPENDS
+    libc.src.math.setpayloadsigl
+)
+
+add_fp_unittest(
+  setpayloadsigf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    setpayloadsigf16_test.cpp
+  HDRS
+    SetPayloadSigTest.h
+  DEPENDS
+    libc.src.math.setpayloadsigf16
+)
+
+add_fp_unittest(
+  setpayloadsigf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    setpayloadsigf128_test.cpp
+  HDRS
+    SetPayloadSigTest.h
+  DEPENDS
+    libc.src.math.setpayloadsigf128
+)
+
+add_fp_unittest(
+  setpayloadsigbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    setpayloadsigbf16_test.cpp
+  HDRS
+    SetPayloadTest.h
+  DEPENDS
+    libc.src.math.setpayloadsigbf16
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  f16add_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    f16add_test.cpp
+  HDRS
+    AddTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.f16add
+    libc.src.__support.macros.properties.os
+)
+
+add_fp_unittest(
+  f16addf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    f16addf_test.cpp
+  HDRS
+    AddTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.f16addf
+    libc.src.__support.macros.properties.os
+)
+
+add_fp_unittest(
+  f16addl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    f16addl_test.cpp
+  HDRS
+    AddTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.f16addl
+    libc.src.__support.macros.properties.os
+)
+
+add_fp_unittest(
+  f16addf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    f16addf128_test.cpp
+  HDRS
+    AddTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.f16addf128
+    libc.src.__support.macros.properties.os
+)
+
+add_fp_unittest(
+  f16sub_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    f16sub_test.cpp
+  HDRS
+    SubTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.f16sub
+    libc.src.__support.macros.properties.os
+)
+
+add_fp_unittest(
+  f16subf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    f16subf_test.cpp
+  HDRS
+    SubTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.f16subf
+    libc.src.__support.macros.properties.os
+)
+
+add_fp_unittest(
+  f16subl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    f16subl_test.cpp
+  HDRS
+    SubTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.f16subl
+    libc.src.__support.macros.properties.os
+)
+
+add_fp_unittest(
+  f16subf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    f16subf128_test.cpp
+  HDRS
+    SubTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.f16subf128
+    libc.src.__support.macros.properties.os
+)
+
+add_fp_unittest(
+  f16div_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    f16div_test.cpp
+  HDRS
+    DivTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.f16div
+)
+
+add_fp_unittest(
+  f16divf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    f16divf_test.cpp
+  HDRS
+    DivTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.f16divf
+)
+
+add_fp_unittest(
+  f16divl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    f16divl_test.cpp
+  HDRS
+    DivTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.f16divl
+)
+
+add_fp_unittest(
+  f16divf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    f16divf128_test.cpp
+  HDRS
+    DivTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.f16divf128
+)
+
+add_fp_unittest(
+  f16fma_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    f16fma_test.cpp
+  HDRS
+    FmaTest.h
+  DEPENDS
+    libc.src.math.f16fma
+    libc.src.__support.macros.properties.types
+)
+
+add_fp_unittest(
+  f16fmaf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    f16fmaf_test.cpp
+  HDRS
+    FmaTest.h
+  DEPENDS
+    libc.src.math.f16fmaf
+    libc.src.__support.macros.properties.types
+)
+
+add_fp_unittest(
+  f16fmal_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    f16fmal_test.cpp
+  HDRS
+    FmaTest.h
+  DEPENDS
+    libc.src.math.f16fmal
+    libc.src.__support.macros.properties.types
+)
+
+add_fp_unittest(
+  f16fmaf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    f16fmaf128_test.cpp
+  HDRS
+    FmaTest.h
+  DEPENDS
+    libc.src.math.f16fmaf128
+    libc.src.__support.macros.properties.types
+)
+
+add_fp_unittest(
+  f16sqrt_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    f16sqrt_test.cpp
+  HDRS
+    SqrtTest.h
+  DEPENDS
+    libc.src.math.f16sqrt
+)
+
+add_fp_unittest(
+  f16sqrtf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    f16sqrtf_test.cpp
+  HDRS
+    SqrtTest.h
+  DEPENDS
+    libc.src.math.f16sqrtf
+)
+
+add_fp_unittest(
+  f16sqrtl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    f16sqrtl_test.cpp
+  HDRS
+    SqrtTest.h
+  DEPENDS
+    libc.src.math.f16sqrtl
+)
+
+add_fp_unittest(
+  f16sqrtf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    f16sqrtf128_test.cpp
+  HDRS
+    SqrtTest.h
+  DEPENDS
+    libc.src.math.f16sqrtf128
+)
+
+add_fp_unittest(
+  fdiv_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fdiv_test.cpp
+  HDRS
+    DivTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.fdiv
+)
+
+add_fp_unittest(
+  fdivl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fdivl_test.cpp
+  HDRS
+    DivTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.fdivl
+)
+
+add_fp_unittest(
+  fdivf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fdivf128_test.cpp
+  HDRS
+    DivTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.fdivf128
+)
+
+add_fp_unittest(
+  ffma_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    ffma_test.cpp
+  HDRS
+    FmaTest.h
+  DEPENDS
+    libc.src.math.ffma
+    libc.src.__support.macros.properties.types
+)
+
+add_fp_unittest(
+  ffmal_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    ffmal_test.cpp
+  HDRS
+    FmaTest.h
+  DEPENDS
+    libc.src.math.ffmal
+    libc.src.__support.macros.properties.types
+)
+
+add_fp_unittest(
+  ffmaf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    ffmaf128_test.cpp
+  HDRS
+    FmaTest.h
+  DEPENDS
+    libc.src.math.ffmaf128
+    libc.src.__support.macros.properties.types
+)
+
+add_fp_unittest(
+  fsqrt_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fsqrt_test.cpp
+  HDRS
+    SqrtTest.h
+  DEPENDS
+    libc.src.math.fsqrt
+)
+
+
+add_fp_unittest(
+  fsqrtl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fsqrtl_test.cpp
+  HDRS
+    SqrtTest.h
+  DEPENDS
+    libc.src.math.fsqrtl
+)
+
+add_fp_unittest(
+  fsqrtf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fsqrtf128_test.cpp
+  HDRS
+    SqrtTest.h
+  DEPENDS
+    libc.src.math.fsqrtf128
+)
+
+add_fp_unittest(
+  fsub_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fsub_test.cpp
+  HDRS
+    SubTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.fsub
+    libc.src.__support.macros.properties.os
+)
+
+add_fp_unittest(
+  fsubl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fsubl_test.cpp
+  HDRS
+    SubTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.fsubl
+    libc.src.__support.macros.properties.os
+)
+
+add_fp_unittest(
+  fsubf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fsubf128_test.cpp
+  HDRS
+    SubTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.fsubf128
+    libc.src.__support.macros.properties.os
+)
+
+add_fp_unittest(
+  dsqrtl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    dsqrtl_test.cpp
+  HDRS
+    SqrtTest.h
+  DEPENDS
+    libc.src.math.dsqrtl
+)
+
+add_fp_unittest(
+  dsqrtf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    dsqrtf128_test.cpp
+  HDRS
+    SqrtTest.h
+  DEPENDS
+    libc.src.math.dsqrtf128
+)
+
+add_fp_unittest(
+  sin_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    sin_test.cpp
+  DEPENDS
+    libc.src.math.sin
+)
+
+add_fp_unittest(
+  cos_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    cos_test.cpp
+  DEPENDS
+    libc.src.math.cos
+)
+
+add_fp_unittest(
+  sincos_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    sincos_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.sincos
+)
+
+add_fp_unittest(
+  tan_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    tan_test.cpp
+  DEPENDS
+    libc.src.math.tan
+)
+
+add_fp_unittest(
+  cbrtf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    cbrtf_test.cpp
+  DEPENDS
+    libc.src.math.cbrtf
+)
+
+add_fp_unittest(
+  cbrt_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    cbrt_test.cpp
+  DEPENDS
+    libc.src.math.cbrt
+)
+
+add_fp_unittest(
+  dmull_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    dmull_test.cpp
+  HDRS
+    MulTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.math.dmull
+)
+
+add_fp_unittest(
+  f16mul_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    f16mul_test.cpp
+  HDRS
+    MulTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.math.f16mul
+)
+
+add_fp_unittest(
+  f16mulf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    f16mulf_test.cpp
+  HDRS
+    MulTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.math.f16mulf
+)
+
+add_fp_unittest(
+  f16mull_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    f16mull_test.cpp
+  HDRS
+    MulTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.math.f16mull
+)
+
+add_fp_unittest(
+  f16mulf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    f16mulf128_test.cpp
+  HDRS
+    MulTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.math.f16mulf128
+)
+
+add_fp_unittest(
+  daddl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    daddl_test.cpp
+  HDRS
+    AddTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.daddl
+    libc.src.__support.macros.properties.os
+)
+
+add_fp_unittest(
+  daddf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    daddf128_test.cpp
+  HDRS
+    AddTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.daddf128
+    libc.src.__support.macros.properties.os
+)
+
+add_fp_unittest(
+  ddivl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    ddivl_test.cpp
+  HDRS
+    DivTest.h
+  DEPENDS
+    libc.src.math.ddivl
+)
+
+add_fp_unittest(
+  ddivf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    ddivf128_test.cpp
+  HDRS
+    DivTest.h
+  DEPENDS
+    libc.src.math.ddivf128
+)
+
+add_fp_unittest(
+  bfloat16_add_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    bfloat16_add_test.cpp
+  HDRS
+    AddTest.h
+  DEPENDS
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.FPUtil.generic.add_sub
+    libc.src.__support.macros.properties.os
+    libc.src.__support.macros.properties.types
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+)
+
+add_fp_unittest(
+  bfloat16_div_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    bfloat16_div_test.cpp
+  HDRS
+    DivTest.h
+  DEPENDS
+    libc.src.__support.FPUtil.bfloat16
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+)
+
+add_fp_unittest(
+  bfloat16_mul_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    bfloat16_mul_test.cpp
+  HDRS
+    MulTest.h
+  DEPENDS
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.bfloat16
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+)
+
+add_fp_unittest(
+  bfloat16_sub_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    bfloat16_sub_test.cpp
+  HDRS
+    SubTest.h
+  DEPENDS
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.FPUtil.generic.add_sub
+    libc.src.__support.macros.properties.os
+    libc.src.__support.macros.properties.types
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+)
+
+add_fp_unittest(
+  add_same_type_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    add_same_type_test.cpp
+  HDRS
+    AddTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.__support.FPUtil.generic.add_sub
+    libc.src.__support.macros.properties.os
+    libc.src.__support.macros.properties.types
+)
+
+add_fp_unittest(
+  sub_same_type_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    sub_same_type_test.cpp
+  HDRS
+    SubTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.__support.FPUtil.generic.add_sub
+    libc.src.__support.macros.properties.os
+    libc.src.__support.macros.properties.types
+)
+
+add_fp_unittest(
+  bf16add_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    bf16add_test.cpp
+  HDRS
+    AddTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.bf16add
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.macros.properties.os
+)
+
+add_fp_unittest(
+  bf16addf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    bf16addf_test.cpp
+  HDRS
+    AddTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.bf16addf
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.macros.properties.os
+)
+
+add_fp_unittest(
+  bf16addl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    bf16addl_test.cpp
+  HDRS
+    AddTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.bf16addl
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.macros.properties.os
+)
+
+add_fp_unittest(
+  bf16addf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    bf16addf128_test.cpp
+  HDRS
+    AddTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.bf16addf128
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.macros.properties.os
+)
+
+add_fp_unittest(
+  bf16fma_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    bf16fma_test.cpp
+  HDRS
+    FmaTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.bf16fma
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  bf16fmaf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    bf16fmaf_test.cpp
+  HDRS
+    FmaTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.bf16fmaf
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  bf16fmal_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    bf16fmal_test.cpp
+  HDRS
+    FmaTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.bf16fmal
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  bf16fmaf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    bf16fmaf128_test.cpp
+  HDRS
+    FmaTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.bf16fmaf128
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  bf16div_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    bf16div_test.cpp
+  HDRS
+    DivTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.bf16div
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  bf16divf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    bf16divf_test.cpp
+  HDRS
+    DivTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.bf16divf
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  bf16divl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    bf16divl_test.cpp
+  HDRS
+    DivTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.bf16divl
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  bf16divf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    bf16divf128_test.cpp
+  HDRS
+    DivTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.bf16divf128
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  bf16mul_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    bf16mul_test.cpp
+  HDRS
+    MulTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.bf16mul
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  bf16mulf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    bf16mulf_test.cpp
+  HDRS
+    MulTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.bf16mulf
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  bf16mull_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    bf16mull_test.cpp
+  HDRS
+    MulTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.bf16mull
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  bf16mulf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    bf16mulf128_test.cpp
+  HDRS
+    MulTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.bf16mulf128
+    libc.src.__support.FPUtil.bfloat16
+)
+
+
+add_fp_unittest(
+  bf16sub_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    bf16sub_test.cpp
+  HDRS
+    SubTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.bf16sub
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.macros.properties.os
+)
+
+add_fp_unittest(
+  bf16subf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    bf16subf_test.cpp
+  HDRS
+    SubTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.bf16subf
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.macros.properties.os
+)
+
+add_fp_unittest(
+  bf16subl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    bf16subl_test.cpp
+  HDRS
+    SubTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.bf16subl
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.macros.properties.os
+)
+
+add_fp_unittest(
+  bf16subf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    bf16subf128_test.cpp
+  HDRS
+    SubTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.bf16subf128
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.macros.properties.os
+)
diff --git a/libc/test/src/math/smoke/fmabf16_test.cpp b/libc/test/src/math/smoke/fmabf16_test.cpp
new file mode 100644
index 0000000000000..4b1ececf40d74
--- /dev/null
+++ b/libc/test/src/math/smoke/fmabf16_test.cpp
@@ -0,0 +1,14 @@
+//===-- Unittests for fmabf16 ---------------------------------------------===//
+//
+// 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 "FmaTest.h"
+
+#include "src/__support/FPUtil/bfloat16.h"
+#include "src/math/fmabf16.h"
+
+LIST_FMA_TESTS(bfloat16, LIBC_NAMESPACE::fmabf16)

>From 5b97d5f108b5ae1f1c31edfce6611a44997e9438 Mon Sep 17 00:00:00 2001
From: Sukumarsawant <sawantsukumar at gmail.com>
Date: Mon, 9 Feb 2026 18:41:54 +0530
Subject: [PATCH 02/43] crlf->lf 1

---
 libc/config/baremetal/aarch64/entrypoints.txt | 1866 ++++++++--------
 libc/config/baremetal/arm/entrypoints.txt     | 1888 ++++++++---------
 2 files changed, 1877 insertions(+), 1877 deletions(-)

diff --git a/libc/config/baremetal/aarch64/entrypoints.txt b/libc/config/baremetal/aarch64/entrypoints.txt
index a8ed932da0fe3..7f5e787d843ba 100644
--- a/libc/config/baremetal/aarch64/entrypoints.txt
+++ b/libc/config/baremetal/aarch64/entrypoints.txt
@@ -1,933 +1,933 @@
-set(TARGET_LIBC_ENTRYPOINTS
-    # assert.h entrypoints
-    libc.src.assert.__assert_fail
-
-    # compiler entrypoints (no corresponding header)
-    libc.src.compiler.__stack_chk_fail
-
-    # ctype.h entrypoints
-    libc.src.ctype.isalnum
-    libc.src.ctype.isalpha
-    libc.src.ctype.isascii
-    libc.src.ctype.isblank
-    libc.src.ctype.iscntrl
-    libc.src.ctype.isdigit
-    libc.src.ctype.isgraph
-    libc.src.ctype.islower
-    libc.src.ctype.isprint
-    libc.src.ctype.ispunct
-    libc.src.ctype.isspace
-    libc.src.ctype.isupper
-    libc.src.ctype.isxdigit
-    libc.src.ctype.toascii
-    libc.src.ctype.tolower
-    libc.src.ctype.toupper
-
-    # ctype.h entrypoints
-    libc.src.ctype.isalnum_l
-    libc.src.ctype.isalpha_l
-    libc.src.ctype.isblank_l
-    libc.src.ctype.iscntrl_l
-    libc.src.ctype.isdigit_l
-    libc.src.ctype.isgraph_l
-    libc.src.ctype.islower_l
-    libc.src.ctype.isprint_l
-    libc.src.ctype.ispunct_l
-    libc.src.ctype.isspace_l
-    libc.src.ctype.isupper_l
-    libc.src.ctype.isxdigit_l
-    libc.src.ctype.tolower_l
-    libc.src.ctype.toupper_l
-
-    # errno.h entrypoints
-    libc.src.errno.errno
-
-    # locale.h entrypoints
-    libc.src.locale.localeconv
-    libc.src.locale.duplocale
-    libc.src.locale.freelocale
-    libc.src.locale.localeconv
-    libc.src.locale.newlocale
-    libc.src.locale.setlocale
-    libc.src.locale.uselocale
-
-    # setjmp.h entrypoints
-    libc.src.setjmp.longjmp
-    libc.src.setjmp.setjmp
-
-    # string.h entrypoints
-    libc.src.string.memccpy
-    libc.src.string.memchr
-    libc.src.string.memcmp
-    libc.src.string.memcpy
-    libc.src.string.memmem
-    libc.src.string.memmove
-    libc.src.string.mempcpy
-    libc.src.string.memrchr
-    libc.src.string.memset
-    libc.src.string.memset_explicit
-    libc.src.string.stpcpy
-    libc.src.string.stpncpy
-    libc.src.string.strcasestr
-    libc.src.string.strcat
-    libc.src.string.strchr
-    libc.src.string.strchrnul
-    libc.src.string.strcmp
-    libc.src.string.strcoll
-    libc.src.string.strcpy
-    libc.src.string.strcspn
-    libc.src.string.strdup
-    libc.src.string.strerror
-    libc.src.string.strerror_r
-    libc.src.string.strlcat
-    libc.src.string.strlcpy
-    libc.src.string.strlen
-    libc.src.string.strncat
-    libc.src.string.strncmp
-    libc.src.string.strncpy
-    libc.src.string.strndup
-    libc.src.string.strnlen
-    libc.src.string.strpbrk
-    libc.src.string.strrchr
-    libc.src.string.strsep
-    libc.src.string.strspn
-    libc.src.string.strstr
-    libc.src.string.strtok
-    libc.src.string.strtok_r
-    libc.src.string.strxfrm
-
-    # string.h entrypoints
-    libc.src.string.strcoll_l
-    libc.src.string.strxfrm_l
-
-    # strings.h entrypoints
-    libc.src.strings.bcmp
-    libc.src.strings.bcopy
-    libc.src.strings.bzero
-    libc.src.strings.ffs
-    libc.src.strings.ffsl
-    libc.src.strings.ffsll
-    libc.src.strings.index
-    libc.src.strings.rindex
-    libc.src.strings.strcasecmp
-    libc.src.strings.strncasecmp
-
-    # strings.h entrypoints
-    libc.src.strings.strcasecmp_l
-    libc.src.strings.strncasecmp_l
-
-    # inttypes.h entrypoints
-    libc.src.inttypes.imaxabs
-    libc.src.inttypes.imaxdiv
-    libc.src.inttypes.strtoimax
-    libc.src.inttypes.strtoumax
-
-    # stdio.h entrypoints
-    libc.src.stdio.asprintf
-    libc.src.stdio.feof
-    libc.src.stdio.ferror
-    libc.src.stdio.fgetc
-    libc.src.stdio.fgets
-    libc.src.stdio.fprintf
-    libc.src.stdio.fputc
-    libc.src.stdio.fputs
-    libc.src.stdio.fread
-    libc.src.stdio.fscanf
-    libc.src.stdio.fwrite
-    libc.src.stdio.getchar
-    libc.src.stdio.printf
-    libc.src.stdio.putc
-    libc.src.stdio.putchar
-    libc.src.stdio.puts
-    libc.src.stdio.remove
-    libc.src.stdio.scanf
-    libc.src.stdio.snprintf
-    libc.src.stdio.sprintf
-    libc.src.stdio.sscanf
-    libc.src.stdio.vasprintf
-    libc.src.stdio.vfprintf
-    libc.src.stdio.vfscanf
-    libc.src.stdio.vprintf
-    libc.src.stdio.vscanf
-    libc.src.stdio.vsnprintf
-    libc.src.stdio.vsprintf
-    libc.src.stdio.vsscanf
-
-    # stdbit.h entrypoints
-    libc.src.stdbit.stdc_bit_ceil_uc
-    libc.src.stdbit.stdc_bit_ceil_ui
-    libc.src.stdbit.stdc_bit_ceil_ul
-    libc.src.stdbit.stdc_bit_ceil_ull
-    libc.src.stdbit.stdc_bit_ceil_us
-    libc.src.stdbit.stdc_bit_floor_uc
-    libc.src.stdbit.stdc_bit_floor_ui
-    libc.src.stdbit.stdc_bit_floor_ul
-    libc.src.stdbit.stdc_bit_floor_ull
-    libc.src.stdbit.stdc_bit_floor_us
-    libc.src.stdbit.stdc_bit_width_uc
-    libc.src.stdbit.stdc_bit_width_ui
-    libc.src.stdbit.stdc_bit_width_ul
-    libc.src.stdbit.stdc_bit_width_ull
-    libc.src.stdbit.stdc_bit_width_us
-    libc.src.stdbit.stdc_count_ones_uc
-    libc.src.stdbit.stdc_count_ones_ui
-    libc.src.stdbit.stdc_count_ones_ul
-    libc.src.stdbit.stdc_count_ones_ull
-    libc.src.stdbit.stdc_count_ones_us
-    libc.src.stdbit.stdc_count_zeros_uc
-    libc.src.stdbit.stdc_count_zeros_ui
-    libc.src.stdbit.stdc_count_zeros_ul
-    libc.src.stdbit.stdc_count_zeros_ull
-    libc.src.stdbit.stdc_count_zeros_us
-    libc.src.stdbit.stdc_first_leading_one_uc
-    libc.src.stdbit.stdc_first_leading_one_ui
-    libc.src.stdbit.stdc_first_leading_one_ul
-    libc.src.stdbit.stdc_first_leading_one_ull
-    libc.src.stdbit.stdc_first_leading_one_us
-    libc.src.stdbit.stdc_first_leading_zero_uc
-    libc.src.stdbit.stdc_first_leading_zero_ui
-    libc.src.stdbit.stdc_first_leading_zero_ul
-    libc.src.stdbit.stdc_first_leading_zero_ull
-    libc.src.stdbit.stdc_first_leading_zero_us
-    libc.src.stdbit.stdc_first_trailing_one_uc
-    libc.src.stdbit.stdc_first_trailing_one_ui
-    libc.src.stdbit.stdc_first_trailing_one_ul
-    libc.src.stdbit.stdc_first_trailing_one_ull
-    libc.src.stdbit.stdc_first_trailing_one_us
-    libc.src.stdbit.stdc_first_trailing_zero_uc
-    libc.src.stdbit.stdc_first_trailing_zero_ui
-    libc.src.stdbit.stdc_first_trailing_zero_ul
-    libc.src.stdbit.stdc_first_trailing_zero_ull
-    libc.src.stdbit.stdc_first_trailing_zero_us
-    libc.src.stdbit.stdc_has_single_bit_uc
-    libc.src.stdbit.stdc_has_single_bit_ui
-    libc.src.stdbit.stdc_has_single_bit_ul
-    libc.src.stdbit.stdc_has_single_bit_ull
-    libc.src.stdbit.stdc_has_single_bit_us
-    libc.src.stdbit.stdc_leading_ones_uc
-    libc.src.stdbit.stdc_leading_ones_ui
-    libc.src.stdbit.stdc_leading_ones_ul
-    libc.src.stdbit.stdc_leading_ones_ull
-    libc.src.stdbit.stdc_leading_ones_us
-    libc.src.stdbit.stdc_leading_zeros_uc
-    libc.src.stdbit.stdc_leading_zeros_ui
-    libc.src.stdbit.stdc_leading_zeros_ul
-    libc.src.stdbit.stdc_leading_zeros_ull
-    libc.src.stdbit.stdc_leading_zeros_us
-    libc.src.stdbit.stdc_trailing_ones_uc
-    libc.src.stdbit.stdc_trailing_ones_ui
-    libc.src.stdbit.stdc_trailing_ones_ul
-    libc.src.stdbit.stdc_trailing_ones_ull
-    libc.src.stdbit.stdc_trailing_ones_us
-    libc.src.stdbit.stdc_trailing_zeros_uc
-    libc.src.stdbit.stdc_trailing_zeros_ui
-    libc.src.stdbit.stdc_trailing_zeros_ul
-    libc.src.stdbit.stdc_trailing_zeros_ull
-    libc.src.stdbit.stdc_trailing_zeros_us
-
-    # stdlib.h entrypoints
-    libc.src.stdlib._Exit
-    libc.src.stdlib.a64l
-    libc.src.stdlib.abort
-    libc.src.stdlib.abs
-    libc.src.stdlib.aligned_alloc
-    libc.src.stdlib.atexit
-    libc.src.stdlib.atof
-    libc.src.stdlib.atoi
-    libc.src.stdlib.atol
-    libc.src.stdlib.atoll
-    libc.src.stdlib.bsearch
-    libc.src.stdlib.calloc
-    libc.src.stdlib.div
-    libc.src.stdlib.exit
-    libc.src.stdlib.free
-    libc.src.stdlib.l64a
-    libc.src.stdlib.labs
-    libc.src.stdlib.ldiv
-    libc.src.stdlib.llabs
-    libc.src.stdlib.lldiv
-    libc.src.stdlib.malloc
-    libc.src.stdlib.memalignment
-    libc.src.stdlib.qsort
-    libc.src.stdlib.qsort_r
-    libc.src.stdlib.rand
-    libc.src.stdlib.realloc
-    libc.src.stdlib.srand
-    # libc.src.stdlib.strfromd
-    # libc.src.stdlib.strfromf
-    # libc.src.stdlib.strfroml
-    libc.src.stdlib.strtod
-    libc.src.stdlib.strtof
-    libc.src.stdlib.strtol
-    libc.src.stdlib.strtold
-    libc.src.stdlib.strtoll
-    libc.src.stdlib.strtoul
-    libc.src.stdlib.strtoull
-
-    # stdlib.h entrypoints
-    libc.src.stdlib.strtod_l
-    libc.src.stdlib.strtof_l
-    libc.src.stdlib.strtol_l
-    libc.src.stdlib.strtold_l
-    libc.src.stdlib.strtoll_l
-    libc.src.stdlib.strtoul_l
-    libc.src.stdlib.strtoull_l
-
-    # time.h entrypoints
-    libc.src.time.asctime
-    libc.src.time.asctime_r
-    libc.src.time.clock
-    libc.src.time.ctime
-    libc.src.time.ctime_r
-    libc.src.time.difftime
-    libc.src.time.gmtime
-    libc.src.time.gmtime_r
-    libc.src.time.localtime
-    libc.src.time.localtime_r
-    libc.src.time.mktime
-    libc.src.time.strftime
-    libc.src.time.strftime_l
-    libc.src.time.timespec_get
-
-    # wchar.h entrypoints
-    libc.src.wchar.btowc
-    libc.src.wchar.wcslen
-    libc.src.wchar.wctob
-
-    # internal entrypoints
-    libc.startup.baremetal.init
-    libc.startup.baremetal.fini
-)
-
-set(TARGET_LIBM_ENTRYPOINTS
-    # complex.h entrypoints
-    libc.src.complex.creal
-    libc.src.complex.crealf
-    libc.src.complex.creall
-    libc.src.complex.cimag
-    libc.src.complex.cimagf
-    libc.src.complex.cimagl
-    libc.src.complex.conj
-    libc.src.complex.conjf
-    libc.src.complex.conjl
-    libc.src.complex.cproj
-    libc.src.complex.cprojf
-    libc.src.complex.cprojl
-
-    # fenv.h entrypoints
-    libc.src.fenv.feclearexcept
-    libc.src.fenv.fedisableexcept
-    libc.src.fenv.feenableexcept
-    libc.src.fenv.fegetenv
-    libc.src.fenv.fegetexcept
-    libc.src.fenv.fegetexceptflag
-    libc.src.fenv.fegetround
-    libc.src.fenv.feholdexcept
-    libc.src.fenv.feraiseexcept
-    libc.src.fenv.fesetenv
-    libc.src.fenv.fesetexcept
-    libc.src.fenv.fesetexceptflag
-    libc.src.fenv.fesetround
-    libc.src.fenv.fetestexcept
-    libc.src.fenv.fetestexceptflag
-    libc.src.fenv.feupdateenv
-
-    # math.h entrypoints
-    libc.src.math.acos
-    libc.src.math.acosf
-    libc.src.math.acoshf
-    libc.src.math.asin
-    libc.src.math.asinf
-    libc.src.math.asinhf
-    libc.src.math.atan2
-    libc.src.math.atan2f
-    # libc.src.math.atan2l
-    libc.src.math.atan
-    libc.src.math.atanf
-    libc.src.math.atanhf
-    libc.src.math.canonicalize
-    libc.src.math.canonicalizef
-    libc.src.math.canonicalizel
-    libc.src.math.cbrt
-    libc.src.math.cbrtf
-    libc.src.math.ceil
-    libc.src.math.ceilf
-    libc.src.math.ceill
-    libc.src.math.copysign
-    libc.src.math.copysignf
-    libc.src.math.copysignl
-    libc.src.math.cos
-    libc.src.math.cosf
-    libc.src.math.coshf
-    libc.src.math.cospif
-    libc.src.math.dfmal
-    libc.src.math.dmull
-    libc.src.math.dsqrtl
-    libc.src.math.daddl
-    libc.src.math.ddivl
-    libc.src.math.dsubl
-    libc.src.math.erff
-    libc.src.math.exp
-    libc.src.math.exp10
-    libc.src.math.exp10f
-    libc.src.math.exp10m1f
-    libc.src.math.exp2
-    libc.src.math.exp2f
-    libc.src.math.exp2m1f
-    libc.src.math.expf
-    libc.src.math.expm1
-    libc.src.math.expm1f
-    libc.src.math.fabs
-    libc.src.math.fabsf
-    libc.src.math.fabsl
-    libc.src.math.fadd
-    libc.src.math.faddl
-    libc.src.math.fadd
-    libc.src.math.fdim
-    libc.src.math.fdimf
-    libc.src.math.fdiml
-    libc.src.math.fdiv
-    libc.src.math.fdivl
-    libc.src.math.ffma
-    libc.src.math.ffmal
-    libc.src.math.floor
-    libc.src.math.floorf
-    libc.src.math.floorl
-    libc.src.math.fma
-    libc.src.math.fmabf16
-    libc.src.math.fmaf
-    libc.src.math.fmax
-    libc.src.math.fmaxf
-    libc.src.math.fmaximum
-    libc.src.math.fmaximum_mag
-    libc.src.math.fmaximum_mag_num
-    libc.src.math.fmaximum_mag_numf
-    libc.src.math.fmaximum_mag_numl
-    libc.src.math.fmaximum_magf
-    libc.src.math.fmaximum_magl
-    libc.src.math.fmaximum_num
-    libc.src.math.fmaximum_numf
-    libc.src.math.fmaximum_numl
-    libc.src.math.fmaximumf
-    libc.src.math.fmaximuml
-    libc.src.math.fmaxl
-    libc.src.math.fmin
-    libc.src.math.fminf
-    libc.src.math.fminimum
-    libc.src.math.fminimum_mag
-    libc.src.math.fminimum_mag_num
-    libc.src.math.fminimum_mag_numf
-    libc.src.math.fminimum_mag_numl
-    libc.src.math.fminimum_magf
-    libc.src.math.fminimum_magl
-    libc.src.math.fminimum_num
-    libc.src.math.fminimum_numf
-    libc.src.math.fminimum_numl
-    libc.src.math.fminimumf
-    libc.src.math.fminimuml
-    libc.src.math.fminl
-    libc.src.math.fmod
-    libc.src.math.fmodf
-    libc.src.math.fmodl
-    libc.src.math.fmul
-    libc.src.math.fmull
-    libc.src.math.frexp
-    libc.src.math.frexpf
-    libc.src.math.frexpl
-    libc.src.math.fromfp
-    libc.src.math.fromfpf
-    libc.src.math.fromfpl
-    libc.src.math.fromfpx
-    libc.src.math.fromfpxf
-    libc.src.math.fromfpxl
-    libc.src.math.fsqrt
-    libc.src.math.fsqrtl
-    libc.src.math.fsub
-    libc.src.math.fsubl
-    libc.src.math.getpayload
-    libc.src.math.getpayloadf
-    libc.src.math.getpayloadl
-    libc.src.math.hypot
-    libc.src.math.hypotf
-    libc.src.math.ilogb
-    libc.src.math.ilogbf
-    libc.src.math.ilogbl
-    libc.src.math.iscanonical
-    libc.src.math.iscanonicalf
-    libc.src.math.iscanonicall
-    libc.src.math.isnan
-    libc.src.math.isnanf
-    libc.src.math.isnanl
-    libc.src.math.issignaling
-    libc.src.math.issignalingf
-    libc.src.math.issignalingl
-    libc.src.math.ldexp
-    libc.src.math.ldexpf
-    libc.src.math.ldexpl
-    libc.src.math.llogb
-    libc.src.math.llogbf
-    libc.src.math.llogbl
-    libc.src.math.llrint
-    libc.src.math.llrintf
-    libc.src.math.llrintl
-    libc.src.math.llround
-    libc.src.math.llroundf
-    libc.src.math.llroundl
-    libc.src.math.log
-    libc.src.math.log10
-    libc.src.math.log10f
-    libc.src.math.log1p
-    libc.src.math.log1pf
-    libc.src.math.log2
-    libc.src.math.log2f
-    libc.src.math.logb
-    libc.src.math.logbf
-    libc.src.math.logbl
-    libc.src.math.logf
-    libc.src.math.lrint
-    libc.src.math.lrintf
-    libc.src.math.lrintl
-    libc.src.math.lround
-    libc.src.math.lroundf
-    libc.src.math.lroundl
-    libc.src.math.modf
-    libc.src.math.modff
-    libc.src.math.modfl
-    libc.src.math.nan
-    libc.src.math.nanf
-    libc.src.math.nanl
-    libc.src.math.nearbyint
-    libc.src.math.nearbyintf
-    libc.src.math.nearbyintl
-    libc.src.math.nextafter
-    libc.src.math.nextafterf
-    libc.src.math.nextafterl
-    libc.src.math.nextdown
-    libc.src.math.nextdownf
-    libc.src.math.nextdownl
-    libc.src.math.nexttoward
-    libc.src.math.nexttowardf
-    libc.src.math.nexttowardl
-    libc.src.math.nextup
-    libc.src.math.nextupf
-    libc.src.math.nextupl
-    libc.src.math.pow
-    libc.src.math.powf
-    libc.src.math.remainder
-    libc.src.math.remainderf
-    libc.src.math.remainderl
-    libc.src.math.remquo
-    libc.src.math.remquof
-    libc.src.math.remquol
-    libc.src.math.rint
-    libc.src.math.rintf
-    libc.src.math.rintl
-    libc.src.math.round
-    libc.src.math.roundeven
-    libc.src.math.roundevenf
-    libc.src.math.roundevenl
-    libc.src.math.roundf
-    libc.src.math.roundl
-    libc.src.math.scalbln
-    libc.src.math.scalblnf
-    libc.src.math.scalblnl
-    libc.src.math.scalbn
-    libc.src.math.scalbnf
-    libc.src.math.scalbnl
-    libc.src.math.setpayload
-    libc.src.math.setpayloadf
-    libc.src.math.setpayloadl
-    libc.src.math.setpayloadsig
-    libc.src.math.setpayloadsigf
-    libc.src.math.setpayloadsigl
-    libc.src.math.sin
-    libc.src.math.sincos
-    libc.src.math.sincosf
-    libc.src.math.sinf
-    libc.src.math.sinhf
-    libc.src.math.sinpif
-    libc.src.math.sqrt
-    libc.src.math.sqrtf
-    libc.src.math.sqrtl
-    libc.src.math.tan
-    libc.src.math.tanf
-    libc.src.math.tanhf
-    libc.src.math.totalorder
-    libc.src.math.totalorderf
-    libc.src.math.totalorderl
-    libc.src.math.totalordermag
-    libc.src.math.totalordermagf
-    libc.src.math.totalordermagl
-    libc.src.math.trunc
-    libc.src.math.truncf
-    libc.src.math.truncl
-    libc.src.math.ufromfp
-    libc.src.math.ufromfpf
-    libc.src.math.ufromfpl
-    libc.src.math.ufromfpx
-    libc.src.math.ufromfpxf
-    libc.src.math.ufromfpxl
-)
-
-if(LIBC_TYPES_HAS_CFLOAT16)
-  list(APPEND TARGET_LIBM_ENTRYPOINTS
-    # complex.h C23 _Complex _Float16 entrypoints
-    libc.src.complex.crealf16
-    libc.src.complex.cimagf16
-    libc.src.complex.conjf16
-    libc.src.complex.cprojf16
-  )
-endif()
-
-if(LIBC_TYPES_HAS_FLOAT16)
-  list(APPEND TARGET_LIBM_ENTRYPOINTS
-    # math.h C23 _Float16 entrypoints
-    libc.src.math.acosf16
-    libc.src.math.acoshf16
-    libc.src.math.asinf16
-    libc.src.math.asinhf16
-    libc.src.math.canonicalizef16
-    libc.src.math.ceilf16
-    libc.src.math.copysignf16
-    libc.src.math.cosf16
-    libc.src.math.coshf16
-    libc.src.math.cospif16
-    libc.src.math.exp10f16
-    libc.src.math.exp10m1f16
-    libc.src.math.exp2f16
-    libc.src.math.exp2m1f16
-    libc.src.math.expf16
-    libc.src.math.expm1f16
-    libc.src.math.f16add
-    libc.src.math.f16addf
-    libc.src.math.f16addl
-    libc.src.math.f16div
-    libc.src.math.f16divf
-    libc.src.math.f16divl
-    libc.src.math.f16fma
-    libc.src.math.f16fmaf
-    libc.src.math.f16fmal
-    libc.src.math.f16mul
-    libc.src.math.f16mulf
-    libc.src.math.f16mull
-    libc.src.math.f16sqrt
-    libc.src.math.f16sqrtf
-    libc.src.math.f16sqrtl
-    libc.src.math.f16sub
-    libc.src.math.f16subf
-    libc.src.math.f16subl
-    libc.src.math.fabsf16
-    libc.src.math.fdimf16
-    libc.src.math.floorf16
-    libc.src.math.fmaf16
-    libc.src.math.fmaxf16
-    libc.src.math.fmaximum_mag_numf16
-    libc.src.math.fmaximum_magf16
-    libc.src.math.fmaximum_numf16
-    libc.src.math.fmaximumf16
-    libc.src.math.fminf16
-    libc.src.math.fminimum_mag_numf16
-    libc.src.math.fminimum_magf16
-    libc.src.math.fminimum_numf16
-    libc.src.math.fminimumf16
-    libc.src.math.fmodf16
-    libc.src.math.frexpf16
-    libc.src.math.fromfpf16
-    libc.src.math.fromfpxf16
-    libc.src.math.getpayloadf16
-    libc.src.math.hypotf16
-    libc.src.math.ilogbf16
-    libc.src.math.iscanonicalf16
-    libc.src.math.issignalingf16
-    libc.src.math.ldexpf16
-    libc.src.math.llogbf16
-    libc.src.math.llrintf16
-    libc.src.math.llroundf16
-    libc.src.math.log10f16
-    libc.src.math.log2f16
-    libc.src.math.logbf16
-    libc.src.math.logf16
-    libc.src.math.lrintf16
-    libc.src.math.lroundf16
-    libc.src.math.modff16
-    libc.src.math.nanf16
-    libc.src.math.nearbyintf16
-    libc.src.math.nextafterf16
-    libc.src.math.nextdownf16
-    libc.src.math.nexttowardf16
-    libc.src.math.nextupf16
-    libc.src.math.remainderf16
-    libc.src.math.remquof16
-    libc.src.math.rintf16
-    libc.src.math.roundevenf16
-    libc.src.math.roundf16
-    libc.src.math.scalblnf16
-    libc.src.math.scalbnf16
-    libc.src.math.setpayloadf16
-    libc.src.math.setpayloadsigf16
-    libc.src.math.sinf16
-    libc.src.math.sinhf16
-    libc.src.math.sinpif16
-    libc.src.math.sqrtf16
-    libc.src.math.tanf16
-    libc.src.math.tanhf16
-    libc.src.math.tanpif16
-    libc.src.math.totalorderf16
-    libc.src.math.totalordermagf16
-    libc.src.math.truncf16
-    libc.src.math.ufromfpf16
-    libc.src.math.ufromfpxf16
-  )
-
-  if(LIBC_TYPES_HAS_FLOAT128)
-    list(APPEND TARGET_LIBM_ENTRYPOINTS
-      # math.h C23 mixed _Float16 and _Float128 entrypoints
-      libc.src.math.f16addf128
-      libc.src.math.f16divf128
-      libc.src.math.f16fmaf128
-      libc.src.math.f16mulf128
-      libc.src.math.f16sqrtf128
-      libc.src.math.f16subf128
-    )
-  endif()
-endif()
-
-if(LIBC_TYPES_HAS_CFLOAT128)
-  list(APPEND TARGET_LIBM_ENTRYPOINTS
-    # complex.h C23 _Complex _Float128 entrypoints
-    libc.src.complex.crealf128
-    libc.src.complex.cimagf128
-    libc.src.complex.conjf128
-    libc.src.complex.cprojf128
-  )
-endif()
-
-if(LIBC_TYPES_HAS_FLOAT128)
-  list(APPEND TARGET_LIBM_ENTRYPOINTS
-    # math.h C23 _Float128 entrypoints
-    libc.src.math.atan2f128
-    libc.src.math.canonicalizef128
-    libc.src.math.ceilf128
-    libc.src.math.copysignf128
-    libc.src.math.daddf128
-    libc.src.math.ddivf128
-    libc.src.math.dfmaf128
-    libc.src.math.dmulf128
-    libc.src.math.dsqrtf128
-    libc.src.math.dsubf128
-    libc.src.math.fabsf128
-    libc.src.math.faddf128
-    libc.src.math.fdimf128
-    libc.src.math.fdivf128
-    libc.src.math.ffmaf128
-    libc.src.math.floorf128
-    libc.src.math.fmaxf128
-    libc.src.math.fmaximum_mag_numf128
-    libc.src.math.fmaximum_magf128
-    libc.src.math.fmaximum_numf128
-    libc.src.math.fmaximumf128
-    libc.src.math.fminf128
-    libc.src.math.fminimum_mag_numf128
-    libc.src.math.fminimum_magf128
-    libc.src.math.fminimum_numf128
-    libc.src.math.fminimumf128
-    libc.src.math.fmodf128
-    libc.src.math.fmulf128
-    libc.src.math.frexpf128
-    libc.src.math.fromfpf128
-    libc.src.math.fromfpxf128
-    libc.src.math.fsqrtf128
-    libc.src.math.fsubf128
-    libc.src.math.getpayloadf128
-    libc.src.math.ilogbf128
-    libc.src.math.iscanonicalf128
-    libc.src.math.issignalingf128
-    libc.src.math.ldexpf128
-    libc.src.math.llogbf128
-    libc.src.math.llrintf128
-    libc.src.math.llroundf128
-    libc.src.math.logbf128
-    libc.src.math.lrintf128
-    libc.src.math.lroundf128
-    libc.src.math.modff128
-    libc.src.math.nanf128
-    libc.src.math.nearbyintf128
-    libc.src.math.nextafterf128
-    libc.src.math.nextdownf128
-    libc.src.math.nextupf128
-    libc.src.math.remainderf128
-    libc.src.math.remquof128
-    libc.src.math.rintf128
-    libc.src.math.roundevenf128
-    libc.src.math.roundf128
-    libc.src.math.scalblnf128
-    libc.src.math.scalbnf128
-    libc.src.math.setpayloadf128
-    libc.src.math.setpayloadsigf128
-    libc.src.math.sqrtf128
-    libc.src.math.totalorderf128
-    libc.src.math.totalordermagf128
-    libc.src.math.truncf128
-    libc.src.math.ufromfpf128
-    libc.src.math.ufromfpxf128
-  )
-endif()
-
-list(APPEND TARGET_LIBM_ENTRYPOINTS
-  # bfloat16 entrypoints
-  libc.src.math.bf16add
-  libc.src.math.bf16addf
-  libc.src.math.bf16addl
-  libc.src.math.bf16div
-  libc.src.math.bf16divf
-  libc.src.math.bf16divl
-  libc.src.math.bf16fma
-  libc.src.math.bf16fmaf
-  libc.src.math.bf16fmal
-  libc.src.math.bf16mul
-  libc.src.math.bf16mulf
-  libc.src.math.bf16mull
-  libc.src.math.bf16sub
-  libc.src.math.bf16subf
-  libc.src.math.bf16subl
-  libc.src.math.canonicalizebf16
-  libc.src.math.ceilbf16
-  libc.src.math.copysignbf16
-  libc.src.math.fabsbf16
-  libc.src.math.fdimbf16
-  libc.src.math.floorbf16
-  libc.src.math.fmaxbf16
-  libc.src.math.fmaximumbf16
-  libc.src.math.fmaximum_magbf16
-  libc.src.math.fmaximum_mag_numbf16
-  libc.src.math.fmaximum_numbf16
-  libc.src.math.fminbf16
-  libc.src.math.fminimumbf16
-  libc.src.math.fminimum_magbf16
-  libc.src.math.fminimum_mag_numbf16
-  libc.src.math.fminimum_numbf16
-  libc.src.math.fmodbf16
-  libc.src.math.frexpbf16
-  libc.src.math.fromfpbf16
-  libc.src.math.fromfpxbf16
-  libc.src.math.getpayloadbf16
-  libc.src.math.ilogbbf16
-  libc.src.math.iscanonicalbf16
-  libc.src.math.issignalingbf16
-  libc.src.math.ldexpbf16
-  libc.src.math.llogbbf16
-  libc.src.math.llrintbf16
-  libc.src.math.llroundbf16
-  libc.src.math.log_bf16
-  libc.src.math.logbbf16
-  libc.src.math.lrintbf16
-  libc.src.math.lroundbf16
-  libc.src.math.modfbf16
-  libc.src.math.nanbf16
-  libc.src.math.nearbyintbf16
-  libc.src.math.nextafterbf16
-  libc.src.math.nextdownbf16
-  libc.src.math.nexttowardbf16
-  libc.src.math.nextupbf16
-  libc.src.math.remainderbf16
-  libc.src.math.remquobf16
-  libc.src.math.rintbf16
-  libc.src.math.roundbf16
-  libc.src.math.roundevenbf16
-  libc.src.math.scalblnbf16
-  libc.src.math.scalbnbf16
-  libc.src.math.setpayloadbf16
-  libc.src.math.setpayloadsigbf16
-  libc.src.math.sqrtbf16
-  libc.src.math.truncbf16
-  libc.src.math.totalorderbf16
-  libc.src.math.totalordermagbf16
-  libc.src.math.ufromfpbf16
-  libc.src.math.ufromfpxbf16
-)
-
-if(LIBC_TYPES_HAS_FLOAT128)
-  list(APPEND TARGET_LIBM_ENTRYPOINTS
-    # math.h C++23 mixed bfloat16 and _Float128 entrypoints
-    libc.src.math.bf16addf128
-    libc.src.math.bf16divf128
-    libc.src.math.bf16fmaf128
-    libc.src.math.bf16mulf128
-    libc.src.math.bf16subf128
-  )
-endif()
-
-if(LIBC_COMPILER_HAS_FIXED_POINT)
-  list(APPEND TARGET_LIBM_ENTRYPOINTS
-    # stdfix.h _Fract and _Accum entrypoints
-    libc.src.stdfix.abshk
-    libc.src.stdfix.abshr
-    libc.src.stdfix.absk
-    libc.src.stdfix.abslk
-    libc.src.stdfix.abslr
-    libc.src.stdfix.absr
-    libc.src.stdfix.exphk
-    libc.src.stdfix.expk
-    libc.src.stdfix.roundhk
-    libc.src.stdfix.roundhr
-    libc.src.stdfix.roundk
-    libc.src.stdfix.roundlk
-    libc.src.stdfix.roundlr
-    libc.src.stdfix.roundr
-    libc.src.stdfix.rounduhk
-    libc.src.stdfix.rounduhr
-    libc.src.stdfix.rounduk
-    libc.src.stdfix.roundulk
-    libc.src.stdfix.roundulr
-    libc.src.stdfix.roundur
-    libc.src.stdfix.sqrtuhk
-    libc.src.stdfix.sqrtuhr
-    libc.src.stdfix.sqrtuk
-    libc.src.stdfix.sqrtur
-    # libc.src.stdfix.sqrtulk
-    libc.src.stdfix.sqrtulr
-    libc.src.stdfix.uhksqrtus
-    libc.src.stdfix.uksqrtui
-    libc.src.stdfix.hrbits
-    libc.src.stdfix.uhrbits
-    libc.src.stdfix.rbits
-    libc.src.stdfix.urbits
-    libc.src.stdfix.lrbits
-    libc.src.stdfix.ulrbits
-    libc.src.stdfix.hkbits
-    libc.src.stdfix.uhkbits
-    libc.src.stdfix.kbits
-    libc.src.stdfix.ukbits
-    libc.src.stdfix.lkbits
-    libc.src.stdfix.ulkbits
-    libc.src.stdfix.bitshr
-    libc.src.stdfix.bitsr
-    libc.src.stdfix.bitslr
-    libc.src.stdfix.bitshk
-    libc.src.stdfix.bitsk
-    libc.src.stdfix.bitslk
-    libc.src.stdfix.bitsuhr
-    libc.src.stdfix.bitsur
-    libc.src.stdfix.bitsulr
-    libc.src.stdfix.bitsuhk
-    libc.src.stdfix.bitsuk
-    libc.src.stdfix.bitsulk
-    libc.src.stdfix.countlshr
-    libc.src.stdfix.countlsr
-    libc.src.stdfix.countlslr
-    libc.src.stdfix.countlshk
-    libc.src.stdfix.countlsk
-    libc.src.stdfix.countlslk
-    libc.src.stdfix.countlsuhr
-    libc.src.stdfix.countlsur
-    libc.src.stdfix.countlsulr
-    libc.src.stdfix.countlsuhk
-    libc.src.stdfix.countlsuk
-    libc.src.stdfix.countlsulk
-  )
-endif()
-
-set(TARGET_LLVMLIBC_ENTRYPOINTS
-  ${TARGET_LIBC_ENTRYPOINTS}
-  ${TARGET_LIBM_ENTRYPOINTS}
-)
+set(TARGET_LIBC_ENTRYPOINTS
+    # assert.h entrypoints
+    libc.src.assert.__assert_fail
+
+    # compiler entrypoints (no corresponding header)
+    libc.src.compiler.__stack_chk_fail
+
+    # ctype.h entrypoints
+    libc.src.ctype.isalnum
+    libc.src.ctype.isalpha
+    libc.src.ctype.isascii
+    libc.src.ctype.isblank
+    libc.src.ctype.iscntrl
+    libc.src.ctype.isdigit
+    libc.src.ctype.isgraph
+    libc.src.ctype.islower
+    libc.src.ctype.isprint
+    libc.src.ctype.ispunct
+    libc.src.ctype.isspace
+    libc.src.ctype.isupper
+    libc.src.ctype.isxdigit
+    libc.src.ctype.toascii
+    libc.src.ctype.tolower
+    libc.src.ctype.toupper
+
+    # ctype.h entrypoints
+    libc.src.ctype.isalnum_l
+    libc.src.ctype.isalpha_l
+    libc.src.ctype.isblank_l
+    libc.src.ctype.iscntrl_l
+    libc.src.ctype.isdigit_l
+    libc.src.ctype.isgraph_l
+    libc.src.ctype.islower_l
+    libc.src.ctype.isprint_l
+    libc.src.ctype.ispunct_l
+    libc.src.ctype.isspace_l
+    libc.src.ctype.isupper_l
+    libc.src.ctype.isxdigit_l
+    libc.src.ctype.tolower_l
+    libc.src.ctype.toupper_l
+
+    # errno.h entrypoints
+    libc.src.errno.errno
+
+    # locale.h entrypoints
+    libc.src.locale.localeconv
+    libc.src.locale.duplocale
+    libc.src.locale.freelocale
+    libc.src.locale.localeconv
+    libc.src.locale.newlocale
+    libc.src.locale.setlocale
+    libc.src.locale.uselocale
+
+    # setjmp.h entrypoints
+    libc.src.setjmp.longjmp
+    libc.src.setjmp.setjmp
+
+    # string.h entrypoints
+    libc.src.string.memccpy
+    libc.src.string.memchr
+    libc.src.string.memcmp
+    libc.src.string.memcpy
+    libc.src.string.memmem
+    libc.src.string.memmove
+    libc.src.string.mempcpy
+    libc.src.string.memrchr
+    libc.src.string.memset
+    libc.src.string.memset_explicit
+    libc.src.string.stpcpy
+    libc.src.string.stpncpy
+    libc.src.string.strcasestr
+    libc.src.string.strcat
+    libc.src.string.strchr
+    libc.src.string.strchrnul
+    libc.src.string.strcmp
+    libc.src.string.strcoll
+    libc.src.string.strcpy
+    libc.src.string.strcspn
+    libc.src.string.strdup
+    libc.src.string.strerror
+    libc.src.string.strerror_r
+    libc.src.string.strlcat
+    libc.src.string.strlcpy
+    libc.src.string.strlen
+    libc.src.string.strncat
+    libc.src.string.strncmp
+    libc.src.string.strncpy
+    libc.src.string.strndup
+    libc.src.string.strnlen
+    libc.src.string.strpbrk
+    libc.src.string.strrchr
+    libc.src.string.strsep
+    libc.src.string.strspn
+    libc.src.string.strstr
+    libc.src.string.strtok
+    libc.src.string.strtok_r
+    libc.src.string.strxfrm
+
+    # string.h entrypoints
+    libc.src.string.strcoll_l
+    libc.src.string.strxfrm_l
+
+    # strings.h entrypoints
+    libc.src.strings.bcmp
+    libc.src.strings.bcopy
+    libc.src.strings.bzero
+    libc.src.strings.ffs
+    libc.src.strings.ffsl
+    libc.src.strings.ffsll
+    libc.src.strings.index
+    libc.src.strings.rindex
+    libc.src.strings.strcasecmp
+    libc.src.strings.strncasecmp
+
+    # strings.h entrypoints
+    libc.src.strings.strcasecmp_l
+    libc.src.strings.strncasecmp_l
+
+    # inttypes.h entrypoints
+    libc.src.inttypes.imaxabs
+    libc.src.inttypes.imaxdiv
+    libc.src.inttypes.strtoimax
+    libc.src.inttypes.strtoumax
+
+    # stdio.h entrypoints
+    libc.src.stdio.asprintf
+    libc.src.stdio.feof
+    libc.src.stdio.ferror
+    libc.src.stdio.fgetc
+    libc.src.stdio.fgets
+    libc.src.stdio.fprintf
+    libc.src.stdio.fputc
+    libc.src.stdio.fputs
+    libc.src.stdio.fread
+    libc.src.stdio.fscanf
+    libc.src.stdio.fwrite
+    libc.src.stdio.getchar
+    libc.src.stdio.printf
+    libc.src.stdio.putc
+    libc.src.stdio.putchar
+    libc.src.stdio.puts
+    libc.src.stdio.remove
+    libc.src.stdio.scanf
+    libc.src.stdio.snprintf
+    libc.src.stdio.sprintf
+    libc.src.stdio.sscanf
+    libc.src.stdio.vasprintf
+    libc.src.stdio.vfprintf
+    libc.src.stdio.vfscanf
+    libc.src.stdio.vprintf
+    libc.src.stdio.vscanf
+    libc.src.stdio.vsnprintf
+    libc.src.stdio.vsprintf
+    libc.src.stdio.vsscanf
+
+    # stdbit.h entrypoints
+    libc.src.stdbit.stdc_bit_ceil_uc
+    libc.src.stdbit.stdc_bit_ceil_ui
+    libc.src.stdbit.stdc_bit_ceil_ul
+    libc.src.stdbit.stdc_bit_ceil_ull
+    libc.src.stdbit.stdc_bit_ceil_us
+    libc.src.stdbit.stdc_bit_floor_uc
+    libc.src.stdbit.stdc_bit_floor_ui
+    libc.src.stdbit.stdc_bit_floor_ul
+    libc.src.stdbit.stdc_bit_floor_ull
+    libc.src.stdbit.stdc_bit_floor_us
+    libc.src.stdbit.stdc_bit_width_uc
+    libc.src.stdbit.stdc_bit_width_ui
+    libc.src.stdbit.stdc_bit_width_ul
+    libc.src.stdbit.stdc_bit_width_ull
+    libc.src.stdbit.stdc_bit_width_us
+    libc.src.stdbit.stdc_count_ones_uc
+    libc.src.stdbit.stdc_count_ones_ui
+    libc.src.stdbit.stdc_count_ones_ul
+    libc.src.stdbit.stdc_count_ones_ull
+    libc.src.stdbit.stdc_count_ones_us
+    libc.src.stdbit.stdc_count_zeros_uc
+    libc.src.stdbit.stdc_count_zeros_ui
+    libc.src.stdbit.stdc_count_zeros_ul
+    libc.src.stdbit.stdc_count_zeros_ull
+    libc.src.stdbit.stdc_count_zeros_us
+    libc.src.stdbit.stdc_first_leading_one_uc
+    libc.src.stdbit.stdc_first_leading_one_ui
+    libc.src.stdbit.stdc_first_leading_one_ul
+    libc.src.stdbit.stdc_first_leading_one_ull
+    libc.src.stdbit.stdc_first_leading_one_us
+    libc.src.stdbit.stdc_first_leading_zero_uc
+    libc.src.stdbit.stdc_first_leading_zero_ui
+    libc.src.stdbit.stdc_first_leading_zero_ul
+    libc.src.stdbit.stdc_first_leading_zero_ull
+    libc.src.stdbit.stdc_first_leading_zero_us
+    libc.src.stdbit.stdc_first_trailing_one_uc
+    libc.src.stdbit.stdc_first_trailing_one_ui
+    libc.src.stdbit.stdc_first_trailing_one_ul
+    libc.src.stdbit.stdc_first_trailing_one_ull
+    libc.src.stdbit.stdc_first_trailing_one_us
+    libc.src.stdbit.stdc_first_trailing_zero_uc
+    libc.src.stdbit.stdc_first_trailing_zero_ui
+    libc.src.stdbit.stdc_first_trailing_zero_ul
+    libc.src.stdbit.stdc_first_trailing_zero_ull
+    libc.src.stdbit.stdc_first_trailing_zero_us
+    libc.src.stdbit.stdc_has_single_bit_uc
+    libc.src.stdbit.stdc_has_single_bit_ui
+    libc.src.stdbit.stdc_has_single_bit_ul
+    libc.src.stdbit.stdc_has_single_bit_ull
+    libc.src.stdbit.stdc_has_single_bit_us
+    libc.src.stdbit.stdc_leading_ones_uc
+    libc.src.stdbit.stdc_leading_ones_ui
+    libc.src.stdbit.stdc_leading_ones_ul
+    libc.src.stdbit.stdc_leading_ones_ull
+    libc.src.stdbit.stdc_leading_ones_us
+    libc.src.stdbit.stdc_leading_zeros_uc
+    libc.src.stdbit.stdc_leading_zeros_ui
+    libc.src.stdbit.stdc_leading_zeros_ul
+    libc.src.stdbit.stdc_leading_zeros_ull
+    libc.src.stdbit.stdc_leading_zeros_us
+    libc.src.stdbit.stdc_trailing_ones_uc
+    libc.src.stdbit.stdc_trailing_ones_ui
+    libc.src.stdbit.stdc_trailing_ones_ul
+    libc.src.stdbit.stdc_trailing_ones_ull
+    libc.src.stdbit.stdc_trailing_ones_us
+    libc.src.stdbit.stdc_trailing_zeros_uc
+    libc.src.stdbit.stdc_trailing_zeros_ui
+    libc.src.stdbit.stdc_trailing_zeros_ul
+    libc.src.stdbit.stdc_trailing_zeros_ull
+    libc.src.stdbit.stdc_trailing_zeros_us
+
+    # stdlib.h entrypoints
+    libc.src.stdlib._Exit
+    libc.src.stdlib.a64l
+    libc.src.stdlib.abort
+    libc.src.stdlib.abs
+    libc.src.stdlib.aligned_alloc
+    libc.src.stdlib.atexit
+    libc.src.stdlib.atof
+    libc.src.stdlib.atoi
+    libc.src.stdlib.atol
+    libc.src.stdlib.atoll
+    libc.src.stdlib.bsearch
+    libc.src.stdlib.calloc
+    libc.src.stdlib.div
+    libc.src.stdlib.exit
+    libc.src.stdlib.free
+    libc.src.stdlib.l64a
+    libc.src.stdlib.labs
+    libc.src.stdlib.ldiv
+    libc.src.stdlib.llabs
+    libc.src.stdlib.lldiv
+    libc.src.stdlib.malloc
+    libc.src.stdlib.memalignment
+    libc.src.stdlib.qsort
+    libc.src.stdlib.qsort_r
+    libc.src.stdlib.rand
+    libc.src.stdlib.realloc
+    libc.src.stdlib.srand
+    # libc.src.stdlib.strfromd
+    # libc.src.stdlib.strfromf
+    # libc.src.stdlib.strfroml
+    libc.src.stdlib.strtod
+    libc.src.stdlib.strtof
+    libc.src.stdlib.strtol
+    libc.src.stdlib.strtold
+    libc.src.stdlib.strtoll
+    libc.src.stdlib.strtoul
+    libc.src.stdlib.strtoull
+
+    # stdlib.h entrypoints
+    libc.src.stdlib.strtod_l
+    libc.src.stdlib.strtof_l
+    libc.src.stdlib.strtol_l
+    libc.src.stdlib.strtold_l
+    libc.src.stdlib.strtoll_l
+    libc.src.stdlib.strtoul_l
+    libc.src.stdlib.strtoull_l
+
+    # time.h entrypoints
+    libc.src.time.asctime
+    libc.src.time.asctime_r
+    libc.src.time.clock
+    libc.src.time.ctime
+    libc.src.time.ctime_r
+    libc.src.time.difftime
+    libc.src.time.gmtime
+    libc.src.time.gmtime_r
+    libc.src.time.localtime
+    libc.src.time.localtime_r
+    libc.src.time.mktime
+    libc.src.time.strftime
+    libc.src.time.strftime_l
+    libc.src.time.timespec_get
+
+    # wchar.h entrypoints
+    libc.src.wchar.btowc
+    libc.src.wchar.wcslen
+    libc.src.wchar.wctob
+
+    # internal entrypoints
+    libc.startup.baremetal.init
+    libc.startup.baremetal.fini
+)
+
+set(TARGET_LIBM_ENTRYPOINTS
+    # complex.h entrypoints
+    libc.src.complex.creal
+    libc.src.complex.crealf
+    libc.src.complex.creall
+    libc.src.complex.cimag
+    libc.src.complex.cimagf
+    libc.src.complex.cimagl
+    libc.src.complex.conj
+    libc.src.complex.conjf
+    libc.src.complex.conjl
+    libc.src.complex.cproj
+    libc.src.complex.cprojf
+    libc.src.complex.cprojl
+
+    # fenv.h entrypoints
+    libc.src.fenv.feclearexcept
+    libc.src.fenv.fedisableexcept
+    libc.src.fenv.feenableexcept
+    libc.src.fenv.fegetenv
+    libc.src.fenv.fegetexcept
+    libc.src.fenv.fegetexceptflag
+    libc.src.fenv.fegetround
+    libc.src.fenv.feholdexcept
+    libc.src.fenv.feraiseexcept
+    libc.src.fenv.fesetenv
+    libc.src.fenv.fesetexcept
+    libc.src.fenv.fesetexceptflag
+    libc.src.fenv.fesetround
+    libc.src.fenv.fetestexcept
+    libc.src.fenv.fetestexceptflag
+    libc.src.fenv.feupdateenv
+
+    # math.h entrypoints
+    libc.src.math.acos
+    libc.src.math.acosf
+    libc.src.math.acoshf
+    libc.src.math.asin
+    libc.src.math.asinf
+    libc.src.math.asinhf
+    libc.src.math.atan2
+    libc.src.math.atan2f
+    # libc.src.math.atan2l
+    libc.src.math.atan
+    libc.src.math.atanf
+    libc.src.math.atanhf
+    libc.src.math.canonicalize
+    libc.src.math.canonicalizef
+    libc.src.math.canonicalizel
+    libc.src.math.cbrt
+    libc.src.math.cbrtf
+    libc.src.math.ceil
+    libc.src.math.ceilf
+    libc.src.math.ceill
+    libc.src.math.copysign
+    libc.src.math.copysignf
+    libc.src.math.copysignl
+    libc.src.math.cos
+    libc.src.math.cosf
+    libc.src.math.coshf
+    libc.src.math.cospif
+    libc.src.math.dfmal
+    libc.src.math.dmull
+    libc.src.math.dsqrtl
+    libc.src.math.daddl
+    libc.src.math.ddivl
+    libc.src.math.dsubl
+    libc.src.math.erff
+    libc.src.math.exp
+    libc.src.math.exp10
+    libc.src.math.exp10f
+    libc.src.math.exp10m1f
+    libc.src.math.exp2
+    libc.src.math.exp2f
+    libc.src.math.exp2m1f
+    libc.src.math.expf
+    libc.src.math.expm1
+    libc.src.math.expm1f
+    libc.src.math.fabs
+    libc.src.math.fabsf
+    libc.src.math.fabsl
+    libc.src.math.fadd
+    libc.src.math.faddl
+    libc.src.math.fadd
+    libc.src.math.fdim
+    libc.src.math.fdimf
+    libc.src.math.fdiml
+    libc.src.math.fdiv
+    libc.src.math.fdivl
+    libc.src.math.ffma
+    libc.src.math.ffmal
+    libc.src.math.floor
+    libc.src.math.floorf
+    libc.src.math.floorl
+    libc.src.math.fma
+    libc.src.math.fmabf16
+    libc.src.math.fmaf
+    libc.src.math.fmax
+    libc.src.math.fmaxf
+    libc.src.math.fmaximum
+    libc.src.math.fmaximum_mag
+    libc.src.math.fmaximum_mag_num
+    libc.src.math.fmaximum_mag_numf
+    libc.src.math.fmaximum_mag_numl
+    libc.src.math.fmaximum_magf
+    libc.src.math.fmaximum_magl
+    libc.src.math.fmaximum_num
+    libc.src.math.fmaximum_numf
+    libc.src.math.fmaximum_numl
+    libc.src.math.fmaximumf
+    libc.src.math.fmaximuml
+    libc.src.math.fmaxl
+    libc.src.math.fmin
+    libc.src.math.fminf
+    libc.src.math.fminimum
+    libc.src.math.fminimum_mag
+    libc.src.math.fminimum_mag_num
+    libc.src.math.fminimum_mag_numf
+    libc.src.math.fminimum_mag_numl
+    libc.src.math.fminimum_magf
+    libc.src.math.fminimum_magl
+    libc.src.math.fminimum_num
+    libc.src.math.fminimum_numf
+    libc.src.math.fminimum_numl
+    libc.src.math.fminimumf
+    libc.src.math.fminimuml
+    libc.src.math.fminl
+    libc.src.math.fmod
+    libc.src.math.fmodf
+    libc.src.math.fmodl
+    libc.src.math.fmul
+    libc.src.math.fmull
+    libc.src.math.frexp
+    libc.src.math.frexpf
+    libc.src.math.frexpl
+    libc.src.math.fromfp
+    libc.src.math.fromfpf
+    libc.src.math.fromfpl
+    libc.src.math.fromfpx
+    libc.src.math.fromfpxf
+    libc.src.math.fromfpxl
+    libc.src.math.fsqrt
+    libc.src.math.fsqrtl
+    libc.src.math.fsub
+    libc.src.math.fsubl
+    libc.src.math.getpayload
+    libc.src.math.getpayloadf
+    libc.src.math.getpayloadl
+    libc.src.math.hypot
+    libc.src.math.hypotf
+    libc.src.math.ilogb
+    libc.src.math.ilogbf
+    libc.src.math.ilogbl
+    libc.src.math.iscanonical
+    libc.src.math.iscanonicalf
+    libc.src.math.iscanonicall
+    libc.src.math.isnan
+    libc.src.math.isnanf
+    libc.src.math.isnanl
+    libc.src.math.issignaling
+    libc.src.math.issignalingf
+    libc.src.math.issignalingl
+    libc.src.math.ldexp
+    libc.src.math.ldexpf
+    libc.src.math.ldexpl
+    libc.src.math.llogb
+    libc.src.math.llogbf
+    libc.src.math.llogbl
+    libc.src.math.llrint
+    libc.src.math.llrintf
+    libc.src.math.llrintl
+    libc.src.math.llround
+    libc.src.math.llroundf
+    libc.src.math.llroundl
+    libc.src.math.log
+    libc.src.math.log10
+    libc.src.math.log10f
+    libc.src.math.log1p
+    libc.src.math.log1pf
+    libc.src.math.log2
+    libc.src.math.log2f
+    libc.src.math.logb
+    libc.src.math.logbf
+    libc.src.math.logbl
+    libc.src.math.logf
+    libc.src.math.lrint
+    libc.src.math.lrintf
+    libc.src.math.lrintl
+    libc.src.math.lround
+    libc.src.math.lroundf
+    libc.src.math.lroundl
+    libc.src.math.modf
+    libc.src.math.modff
+    libc.src.math.modfl
+    libc.src.math.nan
+    libc.src.math.nanf
+    libc.src.math.nanl
+    libc.src.math.nearbyint
+    libc.src.math.nearbyintf
+    libc.src.math.nearbyintl
+    libc.src.math.nextafter
+    libc.src.math.nextafterf
+    libc.src.math.nextafterl
+    libc.src.math.nextdown
+    libc.src.math.nextdownf
+    libc.src.math.nextdownl
+    libc.src.math.nexttoward
+    libc.src.math.nexttowardf
+    libc.src.math.nexttowardl
+    libc.src.math.nextup
+    libc.src.math.nextupf
+    libc.src.math.nextupl
+    libc.src.math.pow
+    libc.src.math.powf
+    libc.src.math.remainder
+    libc.src.math.remainderf
+    libc.src.math.remainderl
+    libc.src.math.remquo
+    libc.src.math.remquof
+    libc.src.math.remquol
+    libc.src.math.rint
+    libc.src.math.rintf
+    libc.src.math.rintl
+    libc.src.math.round
+    libc.src.math.roundeven
+    libc.src.math.roundevenf
+    libc.src.math.roundevenl
+    libc.src.math.roundf
+    libc.src.math.roundl
+    libc.src.math.scalbln
+    libc.src.math.scalblnf
+    libc.src.math.scalblnl
+    libc.src.math.scalbn
+    libc.src.math.scalbnf
+    libc.src.math.scalbnl
+    libc.src.math.setpayload
+    libc.src.math.setpayloadf
+    libc.src.math.setpayloadl
+    libc.src.math.setpayloadsig
+    libc.src.math.setpayloadsigf
+    libc.src.math.setpayloadsigl
+    libc.src.math.sin
+    libc.src.math.sincos
+    libc.src.math.sincosf
+    libc.src.math.sinf
+    libc.src.math.sinhf
+    libc.src.math.sinpif
+    libc.src.math.sqrt
+    libc.src.math.sqrtf
+    libc.src.math.sqrtl
+    libc.src.math.tan
+    libc.src.math.tanf
+    libc.src.math.tanhf
+    libc.src.math.totalorder
+    libc.src.math.totalorderf
+    libc.src.math.totalorderl
+    libc.src.math.totalordermag
+    libc.src.math.totalordermagf
+    libc.src.math.totalordermagl
+    libc.src.math.trunc
+    libc.src.math.truncf
+    libc.src.math.truncl
+    libc.src.math.ufromfp
+    libc.src.math.ufromfpf
+    libc.src.math.ufromfpl
+    libc.src.math.ufromfpx
+    libc.src.math.ufromfpxf
+    libc.src.math.ufromfpxl
+)
+
+if(LIBC_TYPES_HAS_CFLOAT16)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # complex.h C23 _Complex _Float16 entrypoints
+    libc.src.complex.crealf16
+    libc.src.complex.cimagf16
+    libc.src.complex.conjf16
+    libc.src.complex.cprojf16
+  )
+endif()
+
+if(LIBC_TYPES_HAS_FLOAT16)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # math.h C23 _Float16 entrypoints
+    libc.src.math.acosf16
+    libc.src.math.acoshf16
+    libc.src.math.asinf16
+    libc.src.math.asinhf16
+    libc.src.math.canonicalizef16
+    libc.src.math.ceilf16
+    libc.src.math.copysignf16
+    libc.src.math.cosf16
+    libc.src.math.coshf16
+    libc.src.math.cospif16
+    libc.src.math.exp10f16
+    libc.src.math.exp10m1f16
+    libc.src.math.exp2f16
+    libc.src.math.exp2m1f16
+    libc.src.math.expf16
+    libc.src.math.expm1f16
+    libc.src.math.f16add
+    libc.src.math.f16addf
+    libc.src.math.f16addl
+    libc.src.math.f16div
+    libc.src.math.f16divf
+    libc.src.math.f16divl
+    libc.src.math.f16fma
+    libc.src.math.f16fmaf
+    libc.src.math.f16fmal
+    libc.src.math.f16mul
+    libc.src.math.f16mulf
+    libc.src.math.f16mull
+    libc.src.math.f16sqrt
+    libc.src.math.f16sqrtf
+    libc.src.math.f16sqrtl
+    libc.src.math.f16sub
+    libc.src.math.f16subf
+    libc.src.math.f16subl
+    libc.src.math.fabsf16
+    libc.src.math.fdimf16
+    libc.src.math.floorf16
+    libc.src.math.fmaf16
+    libc.src.math.fmaxf16
+    libc.src.math.fmaximum_mag_numf16
+    libc.src.math.fmaximum_magf16
+    libc.src.math.fmaximum_numf16
+    libc.src.math.fmaximumf16
+    libc.src.math.fminf16
+    libc.src.math.fminimum_mag_numf16
+    libc.src.math.fminimum_magf16
+    libc.src.math.fminimum_numf16
+    libc.src.math.fminimumf16
+    libc.src.math.fmodf16
+    libc.src.math.frexpf16
+    libc.src.math.fromfpf16
+    libc.src.math.fromfpxf16
+    libc.src.math.getpayloadf16
+    libc.src.math.hypotf16
+    libc.src.math.ilogbf16
+    libc.src.math.iscanonicalf16
+    libc.src.math.issignalingf16
+    libc.src.math.ldexpf16
+    libc.src.math.llogbf16
+    libc.src.math.llrintf16
+    libc.src.math.llroundf16
+    libc.src.math.log10f16
+    libc.src.math.log2f16
+    libc.src.math.logbf16
+    libc.src.math.logf16
+    libc.src.math.lrintf16
+    libc.src.math.lroundf16
+    libc.src.math.modff16
+    libc.src.math.nanf16
+    libc.src.math.nearbyintf16
+    libc.src.math.nextafterf16
+    libc.src.math.nextdownf16
+    libc.src.math.nexttowardf16
+    libc.src.math.nextupf16
+    libc.src.math.remainderf16
+    libc.src.math.remquof16
+    libc.src.math.rintf16
+    libc.src.math.roundevenf16
+    libc.src.math.roundf16
+    libc.src.math.scalblnf16
+    libc.src.math.scalbnf16
+    libc.src.math.setpayloadf16
+    libc.src.math.setpayloadsigf16
+    libc.src.math.sinf16
+    libc.src.math.sinhf16
+    libc.src.math.sinpif16
+    libc.src.math.sqrtf16
+    libc.src.math.tanf16
+    libc.src.math.tanhf16
+    libc.src.math.tanpif16
+    libc.src.math.totalorderf16
+    libc.src.math.totalordermagf16
+    libc.src.math.truncf16
+    libc.src.math.ufromfpf16
+    libc.src.math.ufromfpxf16
+  )
+
+  if(LIBC_TYPES_HAS_FLOAT128)
+    list(APPEND TARGET_LIBM_ENTRYPOINTS
+      # math.h C23 mixed _Float16 and _Float128 entrypoints
+      libc.src.math.f16addf128
+      libc.src.math.f16divf128
+      libc.src.math.f16fmaf128
+      libc.src.math.f16mulf128
+      libc.src.math.f16sqrtf128
+      libc.src.math.f16subf128
+    )
+  endif()
+endif()
+
+if(LIBC_TYPES_HAS_CFLOAT128)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # complex.h C23 _Complex _Float128 entrypoints
+    libc.src.complex.crealf128
+    libc.src.complex.cimagf128
+    libc.src.complex.conjf128
+    libc.src.complex.cprojf128
+  )
+endif()
+
+if(LIBC_TYPES_HAS_FLOAT128)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # math.h C23 _Float128 entrypoints
+    libc.src.math.atan2f128
+    libc.src.math.canonicalizef128
+    libc.src.math.ceilf128
+    libc.src.math.copysignf128
+    libc.src.math.daddf128
+    libc.src.math.ddivf128
+    libc.src.math.dfmaf128
+    libc.src.math.dmulf128
+    libc.src.math.dsqrtf128
+    libc.src.math.dsubf128
+    libc.src.math.fabsf128
+    libc.src.math.faddf128
+    libc.src.math.fdimf128
+    libc.src.math.fdivf128
+    libc.src.math.ffmaf128
+    libc.src.math.floorf128
+    libc.src.math.fmaxf128
+    libc.src.math.fmaximum_mag_numf128
+    libc.src.math.fmaximum_magf128
+    libc.src.math.fmaximum_numf128
+    libc.src.math.fmaximumf128
+    libc.src.math.fminf128
+    libc.src.math.fminimum_mag_numf128
+    libc.src.math.fminimum_magf128
+    libc.src.math.fminimum_numf128
+    libc.src.math.fminimumf128
+    libc.src.math.fmodf128
+    libc.src.math.fmulf128
+    libc.src.math.frexpf128
+    libc.src.math.fromfpf128
+    libc.src.math.fromfpxf128
+    libc.src.math.fsqrtf128
+    libc.src.math.fsubf128
+    libc.src.math.getpayloadf128
+    libc.src.math.ilogbf128
+    libc.src.math.iscanonicalf128
+    libc.src.math.issignalingf128
+    libc.src.math.ldexpf128
+    libc.src.math.llogbf128
+    libc.src.math.llrintf128
+    libc.src.math.llroundf128
+    libc.src.math.logbf128
+    libc.src.math.lrintf128
+    libc.src.math.lroundf128
+    libc.src.math.modff128
+    libc.src.math.nanf128
+    libc.src.math.nearbyintf128
+    libc.src.math.nextafterf128
+    libc.src.math.nextdownf128
+    libc.src.math.nextupf128
+    libc.src.math.remainderf128
+    libc.src.math.remquof128
+    libc.src.math.rintf128
+    libc.src.math.roundevenf128
+    libc.src.math.roundf128
+    libc.src.math.scalblnf128
+    libc.src.math.scalbnf128
+    libc.src.math.setpayloadf128
+    libc.src.math.setpayloadsigf128
+    libc.src.math.sqrtf128
+    libc.src.math.totalorderf128
+    libc.src.math.totalordermagf128
+    libc.src.math.truncf128
+    libc.src.math.ufromfpf128
+    libc.src.math.ufromfpxf128
+  )
+endif()
+
+list(APPEND TARGET_LIBM_ENTRYPOINTS
+  # bfloat16 entrypoints
+  libc.src.math.bf16add
+  libc.src.math.bf16addf
+  libc.src.math.bf16addl
+  libc.src.math.bf16div
+  libc.src.math.bf16divf
+  libc.src.math.bf16divl
+  libc.src.math.bf16fma
+  libc.src.math.bf16fmaf
+  libc.src.math.bf16fmal
+  libc.src.math.bf16mul
+  libc.src.math.bf16mulf
+  libc.src.math.bf16mull
+  libc.src.math.bf16sub
+  libc.src.math.bf16subf
+  libc.src.math.bf16subl
+  libc.src.math.canonicalizebf16
+  libc.src.math.ceilbf16
+  libc.src.math.copysignbf16
+  libc.src.math.fabsbf16
+  libc.src.math.fdimbf16
+  libc.src.math.floorbf16
+  libc.src.math.fmaxbf16
+  libc.src.math.fmaximumbf16
+  libc.src.math.fmaximum_magbf16
+  libc.src.math.fmaximum_mag_numbf16
+  libc.src.math.fmaximum_numbf16
+  libc.src.math.fminbf16
+  libc.src.math.fminimumbf16
+  libc.src.math.fminimum_magbf16
+  libc.src.math.fminimum_mag_numbf16
+  libc.src.math.fminimum_numbf16
+  libc.src.math.fmodbf16
+  libc.src.math.frexpbf16
+  libc.src.math.fromfpbf16
+  libc.src.math.fromfpxbf16
+  libc.src.math.getpayloadbf16
+  libc.src.math.ilogbbf16
+  libc.src.math.iscanonicalbf16
+  libc.src.math.issignalingbf16
+  libc.src.math.ldexpbf16
+  libc.src.math.llogbbf16
+  libc.src.math.llrintbf16
+  libc.src.math.llroundbf16
+  libc.src.math.log_bf16
+  libc.src.math.logbbf16
+  libc.src.math.lrintbf16
+  libc.src.math.lroundbf16
+  libc.src.math.modfbf16
+  libc.src.math.nanbf16
+  libc.src.math.nearbyintbf16
+  libc.src.math.nextafterbf16
+  libc.src.math.nextdownbf16
+  libc.src.math.nexttowardbf16
+  libc.src.math.nextupbf16
+  libc.src.math.remainderbf16
+  libc.src.math.remquobf16
+  libc.src.math.rintbf16
+  libc.src.math.roundbf16
+  libc.src.math.roundevenbf16
+  libc.src.math.scalblnbf16
+  libc.src.math.scalbnbf16
+  libc.src.math.setpayloadbf16
+  libc.src.math.setpayloadsigbf16
+  libc.src.math.sqrtbf16
+  libc.src.math.truncbf16
+  libc.src.math.totalorderbf16
+  libc.src.math.totalordermagbf16
+  libc.src.math.ufromfpbf16
+  libc.src.math.ufromfpxbf16
+)
+
+if(LIBC_TYPES_HAS_FLOAT128)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # math.h C++23 mixed bfloat16 and _Float128 entrypoints
+    libc.src.math.bf16addf128
+    libc.src.math.bf16divf128
+    libc.src.math.bf16fmaf128
+    libc.src.math.bf16mulf128
+    libc.src.math.bf16subf128
+  )
+endif()
+
+if(LIBC_COMPILER_HAS_FIXED_POINT)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # stdfix.h _Fract and _Accum entrypoints
+    libc.src.stdfix.abshk
+    libc.src.stdfix.abshr
+    libc.src.stdfix.absk
+    libc.src.stdfix.abslk
+    libc.src.stdfix.abslr
+    libc.src.stdfix.absr
+    libc.src.stdfix.exphk
+    libc.src.stdfix.expk
+    libc.src.stdfix.roundhk
+    libc.src.stdfix.roundhr
+    libc.src.stdfix.roundk
+    libc.src.stdfix.roundlk
+    libc.src.stdfix.roundlr
+    libc.src.stdfix.roundr
+    libc.src.stdfix.rounduhk
+    libc.src.stdfix.rounduhr
+    libc.src.stdfix.rounduk
+    libc.src.stdfix.roundulk
+    libc.src.stdfix.roundulr
+    libc.src.stdfix.roundur
+    libc.src.stdfix.sqrtuhk
+    libc.src.stdfix.sqrtuhr
+    libc.src.stdfix.sqrtuk
+    libc.src.stdfix.sqrtur
+    # libc.src.stdfix.sqrtulk
+    libc.src.stdfix.sqrtulr
+    libc.src.stdfix.uhksqrtus
+    libc.src.stdfix.uksqrtui
+    libc.src.stdfix.hrbits
+    libc.src.stdfix.uhrbits
+    libc.src.stdfix.rbits
+    libc.src.stdfix.urbits
+    libc.src.stdfix.lrbits
+    libc.src.stdfix.ulrbits
+    libc.src.stdfix.hkbits
+    libc.src.stdfix.uhkbits
+    libc.src.stdfix.kbits
+    libc.src.stdfix.ukbits
+    libc.src.stdfix.lkbits
+    libc.src.stdfix.ulkbits
+    libc.src.stdfix.bitshr
+    libc.src.stdfix.bitsr
+    libc.src.stdfix.bitslr
+    libc.src.stdfix.bitshk
+    libc.src.stdfix.bitsk
+    libc.src.stdfix.bitslk
+    libc.src.stdfix.bitsuhr
+    libc.src.stdfix.bitsur
+    libc.src.stdfix.bitsulr
+    libc.src.stdfix.bitsuhk
+    libc.src.stdfix.bitsuk
+    libc.src.stdfix.bitsulk
+    libc.src.stdfix.countlshr
+    libc.src.stdfix.countlsr
+    libc.src.stdfix.countlslr
+    libc.src.stdfix.countlshk
+    libc.src.stdfix.countlsk
+    libc.src.stdfix.countlslk
+    libc.src.stdfix.countlsuhr
+    libc.src.stdfix.countlsur
+    libc.src.stdfix.countlsulr
+    libc.src.stdfix.countlsuhk
+    libc.src.stdfix.countlsuk
+    libc.src.stdfix.countlsulk
+  )
+endif()
+
+set(TARGET_LLVMLIBC_ENTRYPOINTS
+  ${TARGET_LIBC_ENTRYPOINTS}
+  ${TARGET_LIBM_ENTRYPOINTS}
+)
diff --git a/libc/config/baremetal/arm/entrypoints.txt b/libc/config/baremetal/arm/entrypoints.txt
index a04400f815fe7..8f0a3f4a60f4c 100644
--- a/libc/config/baremetal/arm/entrypoints.txt
+++ b/libc/config/baremetal/arm/entrypoints.txt
@@ -1,944 +1,944 @@
-set(TARGET_LIBC_ENTRYPOINTS
-    # assert.h entrypoints
-    libc.src.assert.__assert_fail
-
-    # compiler entrypoints (no corresponding header)
-    libc.src.compiler.__stack_chk_fail
-
-    # ctype.h entrypoints
-    libc.src.ctype.isalnum
-    libc.src.ctype.isalpha
-    libc.src.ctype.isascii
-    libc.src.ctype.isblank
-    libc.src.ctype.iscntrl
-    libc.src.ctype.isdigit
-    libc.src.ctype.isgraph
-    libc.src.ctype.islower
-    libc.src.ctype.isprint
-    libc.src.ctype.ispunct
-    libc.src.ctype.isspace
-    libc.src.ctype.isupper
-    libc.src.ctype.isxdigit
-    libc.src.ctype.toascii
-    libc.src.ctype.tolower
-    libc.src.ctype.toupper
-
-    # ctype.h entrypoints
-    libc.src.ctype.isalnum_l
-    libc.src.ctype.isalpha_l
-    libc.src.ctype.isblank_l
-    libc.src.ctype.iscntrl_l
-    libc.src.ctype.isdigit_l
-    libc.src.ctype.isgraph_l
-    libc.src.ctype.islower_l
-    libc.src.ctype.isprint_l
-    libc.src.ctype.ispunct_l
-    libc.src.ctype.isspace_l
-    libc.src.ctype.isupper_l
-    libc.src.ctype.isxdigit_l
-    libc.src.ctype.tolower_l
-    libc.src.ctype.toupper_l
-
-    # errno.h entrypoints
-    libc.src.errno.errno
-
-    # locale.h entrypoints
-    libc.src.locale.localeconv
-    libc.src.locale.duplocale
-    libc.src.locale.freelocale
-    libc.src.locale.localeconv
-    libc.src.locale.newlocale
-    libc.src.locale.setlocale
-    libc.src.locale.uselocale
-
-    # setjmp.h entrypoints
-    libc.src.setjmp.longjmp
-    libc.src.setjmp.setjmp
-
-    # string.h entrypoints
-    libc.src.string.memccpy
-    libc.src.string.memchr
-    libc.src.string.memcmp
-    libc.src.string.memcpy
-    libc.src.string.memmem
-    libc.src.string.memmove
-    libc.src.string.mempcpy
-    libc.src.string.memrchr
-    libc.src.string.memset
-    libc.src.string.memset_explicit
-    libc.src.string.stpcpy
-    libc.src.string.stpncpy
-    libc.src.string.strcasestr
-    libc.src.string.strcat
-    libc.src.string.strchr
-    libc.src.string.strchrnul
-    libc.src.string.strcmp
-    libc.src.string.strcoll
-    libc.src.string.strcpy
-    libc.src.string.strcspn
-    libc.src.string.strdup
-    libc.src.string.strerror
-    libc.src.string.strerror_r
-    libc.src.string.strlcat
-    libc.src.string.strlcpy
-    libc.src.string.strlen
-    libc.src.string.strncat
-    libc.src.string.strncmp
-    libc.src.string.strncpy
-    libc.src.string.strndup
-    libc.src.string.strnlen
-    libc.src.string.strpbrk
-    libc.src.string.strrchr
-    libc.src.string.strsep
-    libc.src.string.strspn
-    libc.src.string.strstr
-    libc.src.string.strtok
-    libc.src.string.strtok_r
-    libc.src.string.strxfrm
-
-    # string.h entrypoints
-    libc.src.string.strcoll_l
-    libc.src.string.strxfrm_l
-
-    # strings.h entrypoints
-    libc.src.strings.bcmp
-    libc.src.strings.bcopy
-    libc.src.strings.bzero
-    libc.src.strings.ffs
-    libc.src.strings.ffsl
-    libc.src.strings.ffsll
-    libc.src.strings.index
-    libc.src.strings.rindex
-    libc.src.strings.strcasecmp
-    libc.src.strings.strncasecmp
-
-    # strings.h entrypoints
-    libc.src.strings.strcasecmp_l
-    libc.src.strings.strncasecmp_l
-
-    # inttypes.h entrypoints
-    libc.src.inttypes.imaxabs
-    libc.src.inttypes.imaxdiv
-    libc.src.inttypes.strtoimax
-    libc.src.inttypes.strtoumax
-
-    # stdio.h entrypoints
-    libc.src.stdio.asprintf
-    libc.src.stdio.feof
-    libc.src.stdio.ferror
-    libc.src.stdio.fgetc
-    libc.src.stdio.fgets
-    libc.src.stdio.fprintf
-    libc.src.stdio.fputc
-    libc.src.stdio.fputs
-    libc.src.stdio.fread
-    libc.src.stdio.fscanf
-    libc.src.stdio.fwrite
-    libc.src.stdio.getchar
-    libc.src.stdio.printf
-    libc.src.stdio.putc
-    libc.src.stdio.putchar
-    libc.src.stdio.puts
-    libc.src.stdio.remove
-    libc.src.stdio.scanf
-    libc.src.stdio.snprintf
-    libc.src.stdio.sprintf
-    libc.src.stdio.sscanf
-    libc.src.stdio.vasprintf
-    libc.src.stdio.vfprintf
-    libc.src.stdio.vfscanf
-    libc.src.stdio.vprintf
-    libc.src.stdio.vscanf
-    libc.src.stdio.vsnprintf
-    libc.src.stdio.vsprintf
-    libc.src.stdio.vsscanf
-
-    # stdbit.h entrypoints
-    libc.src.stdbit.stdc_bit_ceil_uc
-    libc.src.stdbit.stdc_bit_ceil_ui
-    libc.src.stdbit.stdc_bit_ceil_ul
-    libc.src.stdbit.stdc_bit_ceil_ull
-    libc.src.stdbit.stdc_bit_ceil_us
-    libc.src.stdbit.stdc_bit_floor_uc
-    libc.src.stdbit.stdc_bit_floor_ui
-    libc.src.stdbit.stdc_bit_floor_ul
-    libc.src.stdbit.stdc_bit_floor_ull
-    libc.src.stdbit.stdc_bit_floor_us
-    libc.src.stdbit.stdc_bit_width_uc
-    libc.src.stdbit.stdc_bit_width_ui
-    libc.src.stdbit.stdc_bit_width_ul
-    libc.src.stdbit.stdc_bit_width_ull
-    libc.src.stdbit.stdc_bit_width_us
-    libc.src.stdbit.stdc_count_ones_uc
-    libc.src.stdbit.stdc_count_ones_ui
-    libc.src.stdbit.stdc_count_ones_ul
-    libc.src.stdbit.stdc_count_ones_ull
-    libc.src.stdbit.stdc_count_ones_us
-    libc.src.stdbit.stdc_count_zeros_uc
-    libc.src.stdbit.stdc_count_zeros_ui
-    libc.src.stdbit.stdc_count_zeros_ul
-    libc.src.stdbit.stdc_count_zeros_ull
-    libc.src.stdbit.stdc_count_zeros_us
-    libc.src.stdbit.stdc_first_leading_one_uc
-    libc.src.stdbit.stdc_first_leading_one_ui
-    libc.src.stdbit.stdc_first_leading_one_ul
-    libc.src.stdbit.stdc_first_leading_one_ull
-    libc.src.stdbit.stdc_first_leading_one_us
-    libc.src.stdbit.stdc_first_leading_zero_uc
-    libc.src.stdbit.stdc_first_leading_zero_ui
-    libc.src.stdbit.stdc_first_leading_zero_ul
-    libc.src.stdbit.stdc_first_leading_zero_ull
-    libc.src.stdbit.stdc_first_leading_zero_us
-    libc.src.stdbit.stdc_first_trailing_one_uc
-    libc.src.stdbit.stdc_first_trailing_one_ui
-    libc.src.stdbit.stdc_first_trailing_one_ul
-    libc.src.stdbit.stdc_first_trailing_one_ull
-    libc.src.stdbit.stdc_first_trailing_one_us
-    libc.src.stdbit.stdc_first_trailing_zero_uc
-    libc.src.stdbit.stdc_first_trailing_zero_ui
-    libc.src.stdbit.stdc_first_trailing_zero_ul
-    libc.src.stdbit.stdc_first_trailing_zero_ull
-    libc.src.stdbit.stdc_first_trailing_zero_us
-    libc.src.stdbit.stdc_has_single_bit_uc
-    libc.src.stdbit.stdc_has_single_bit_ui
-    libc.src.stdbit.stdc_has_single_bit_ul
-    libc.src.stdbit.stdc_has_single_bit_ull
-    libc.src.stdbit.stdc_has_single_bit_us
-    libc.src.stdbit.stdc_leading_ones_uc
-    libc.src.stdbit.stdc_leading_ones_ui
-    libc.src.stdbit.stdc_leading_ones_ul
-    libc.src.stdbit.stdc_leading_ones_ull
-    libc.src.stdbit.stdc_leading_ones_us
-    libc.src.stdbit.stdc_leading_zeros_uc
-    libc.src.stdbit.stdc_leading_zeros_ui
-    libc.src.stdbit.stdc_leading_zeros_ul
-    libc.src.stdbit.stdc_leading_zeros_ull
-    libc.src.stdbit.stdc_leading_zeros_us
-    libc.src.stdbit.stdc_trailing_ones_uc
-    libc.src.stdbit.stdc_trailing_ones_ui
-    libc.src.stdbit.stdc_trailing_ones_ul
-    libc.src.stdbit.stdc_trailing_ones_ull
-    libc.src.stdbit.stdc_trailing_ones_us
-    libc.src.stdbit.stdc_trailing_zeros_uc
-    libc.src.stdbit.stdc_trailing_zeros_ui
-    libc.src.stdbit.stdc_trailing_zeros_ul
-    libc.src.stdbit.stdc_trailing_zeros_ull
-    libc.src.stdbit.stdc_trailing_zeros_us
-
-    # stdlib.h entrypoints
-    libc.src.stdlib._Exit
-    libc.src.stdlib.a64l
-    libc.src.stdlib.abort
-    libc.src.stdlib.abs
-    libc.src.stdlib.aligned_alloc
-    libc.src.stdlib.atexit
-    libc.src.stdlib.atof
-    libc.src.stdlib.atoi
-    libc.src.stdlib.atol
-    libc.src.stdlib.atoll
-    libc.src.stdlib.bsearch
-    libc.src.stdlib.calloc
-    libc.src.stdlib.div
-    libc.src.stdlib.exit
-    libc.src.stdlib.free
-    libc.src.stdlib.l64a
-    libc.src.stdlib.labs
-    libc.src.stdlib.ldiv
-    libc.src.stdlib.llabs
-    libc.src.stdlib.lldiv
-    libc.src.stdlib.malloc
-    libc.src.stdlib.memalignment
-    libc.src.stdlib.qsort
-    libc.src.stdlib.qsort_r
-    libc.src.stdlib.rand
-    libc.src.stdlib.realloc
-    libc.src.stdlib.srand
-    # libc.src.stdlib.strfromd
-    # libc.src.stdlib.strfromf
-    # libc.src.stdlib.strfroml
-    libc.src.stdlib.strtod
-    libc.src.stdlib.strtof
-    libc.src.stdlib.strtol
-    libc.src.stdlib.strtold
-    libc.src.stdlib.strtoll
-    libc.src.stdlib.strtoul
-    libc.src.stdlib.strtoull
-
-    # stdlib.h entrypoints
-    libc.src.stdlib.strtod_l
-    libc.src.stdlib.strtof_l
-    libc.src.stdlib.strtol_l
-    libc.src.stdlib.strtold_l
-    libc.src.stdlib.strtoll_l
-    libc.src.stdlib.strtoul_l
-    libc.src.stdlib.strtoull_l
-
-    # time.h entrypoints
-    libc.src.time.asctime
-    libc.src.time.asctime_r
-    libc.src.time.clock
-    libc.src.time.ctime
-    libc.src.time.ctime_r
-    libc.src.time.difftime
-    libc.src.time.gmtime
-    libc.src.time.gmtime_r
-    libc.src.time.localtime
-    libc.src.time.localtime_r
-    libc.src.time.mktime
-    libc.src.time.strftime
-    libc.src.time.strftime_l
-    libc.src.time.timespec_get
-
-    # wchar.h entrypoints
-    libc.src.wchar.btowc
-    libc.src.wchar.wcslen
-    libc.src.wchar.wctob
-
-    # wctype.h entrypoints
-    libc.src.wctype.iswalpha
-
-    # internal entrypoints
-    libc.startup.baremetal.init
-    libc.startup.baremetal.fini
-)
-
-set(TARGET_LIBM_ENTRYPOINTS
-    # complex.h entrypoints
-    libc.src.complex.creal
-    libc.src.complex.crealf
-    libc.src.complex.creall
-    libc.src.complex.cimag
-    libc.src.complex.cimagf
-    libc.src.complex.cimagl
-    libc.src.complex.conj
-    libc.src.complex.conjf
-    libc.src.complex.conjl
-    libc.src.complex.cproj
-    libc.src.complex.cprojf
-    libc.src.complex.cprojl
-
-    # fenv.h entrypoints
-    libc.src.fenv.feclearexcept
-    libc.src.fenv.fedisableexcept
-    libc.src.fenv.feenableexcept
-    libc.src.fenv.fegetenv
-    libc.src.fenv.fegetexcept
-    libc.src.fenv.fegetexceptflag
-    libc.src.fenv.fegetround
-    libc.src.fenv.feholdexcept
-    libc.src.fenv.feraiseexcept
-    libc.src.fenv.fesetenv
-    libc.src.fenv.fesetexcept
-    libc.src.fenv.fesetexceptflag
-    libc.src.fenv.fesetround
-    libc.src.fenv.fetestexcept
-    libc.src.fenv.fetestexceptflag
-    libc.src.fenv.feupdateenv
-
-    # math.h entrypoints
-    libc.src.math.acos
-    libc.src.math.acosf
-    libc.src.math.acoshf
-    libc.src.math.asin
-    libc.src.math.asinf
-    libc.src.math.asinhf
-    libc.src.math.atan2
-    libc.src.math.atan2f
-    libc.src.math.atan2l
-    libc.src.math.atan
-    libc.src.math.atanf
-    libc.src.math.atanhf
-    libc.src.math.canonicalize
-    libc.src.math.canonicalizef
-    libc.src.math.canonicalizel
-    libc.src.math.cbrt
-    libc.src.math.cbrtf
-    libc.src.math.ceil
-    libc.src.math.ceilf
-    libc.src.math.ceill
-    libc.src.math.copysign
-    libc.src.math.copysignf
-    libc.src.math.copysignl
-    libc.src.math.cos
-    libc.src.math.cosf
-    libc.src.math.coshf
-    libc.src.math.cospif
-    libc.src.math.dfmal
-    libc.src.math.dmull
-    libc.src.math.dsqrtl
-    libc.src.math.daddl
-    libc.src.math.ddivl
-    libc.src.math.dsubl
-    libc.src.math.erff
-    libc.src.math.exp
-    libc.src.math.exp10
-    libc.src.math.exp10f
-    libc.src.math.exp10m1f
-    libc.src.math.exp2
-    libc.src.math.exp2f
-    libc.src.math.exp2m1f
-    libc.src.math.expf
-    libc.src.math.expm1
-    libc.src.math.expm1f
-    libc.src.math.fabs
-    libc.src.math.fabsf
-    libc.src.math.fabsl
-    libc.src.math.fadd
-    libc.src.math.faddl
-    libc.src.math.fadd
-    libc.src.math.fdim
-    libc.src.math.fdimf
-    libc.src.math.fdiml
-    libc.src.math.fdiv
-    libc.src.math.fdivl
-    libc.src.math.ffma
-    libc.src.math.ffmal
-    libc.src.math.floor
-    libc.src.math.floorf
-    libc.src.math.floorl
-    libc.src.math.fma
-    libc.src.math.fmabf16
-    libc.src.math.fmaf
-    libc.src.math.fmax
-    libc.src.math.fmaxf
-    libc.src.math.fmaximum
-    libc.src.math.fmaximum_mag
-    libc.src.math.fmaximum_mag_num
-    libc.src.math.fmaximum_mag_numf
-    libc.src.math.fmaximum_mag_numl
-    libc.src.math.fmaximum_magf
-    libc.src.math.fmaximum_magl
-    libc.src.math.fmaximum_num
-    libc.src.math.fmaximum_numf
-    libc.src.math.fmaximum_numl
-    libc.src.math.fmaximumf
-    libc.src.math.fmaximuml
-    libc.src.math.fmaxl
-    libc.src.math.fmin
-    libc.src.math.fminf
-    libc.src.math.fminimum
-    libc.src.math.fminimum_mag
-    libc.src.math.fminimum_mag_num
-    libc.src.math.fminimum_mag_numf
-    libc.src.math.fminimum_mag_numl
-    libc.src.math.fminimum_magf
-    libc.src.math.fminimum_magl
-    libc.src.math.fminimum_num
-    libc.src.math.fminimum_numf
-    libc.src.math.fminimum_numl
-    libc.src.math.fminimumf
-    libc.src.math.fminimuml
-    libc.src.math.fminl
-    libc.src.math.fmod
-    libc.src.math.fmodf
-    libc.src.math.fmodl
-    libc.src.math.fmul
-    libc.src.math.fmull
-    libc.src.math.frexp
-    libc.src.math.frexpf
-    libc.src.math.frexpl
-    libc.src.math.fromfp
-    libc.src.math.fromfpf
-    libc.src.math.fromfpl
-    libc.src.math.fromfpx
-    libc.src.math.fromfpxf
-    libc.src.math.fromfpxl
-    libc.src.math.fsqrt
-    libc.src.math.fsqrtl
-    libc.src.math.fsub
-    libc.src.math.fsubl
-    libc.src.math.getpayload
-    libc.src.math.getpayloadf
-    libc.src.math.getpayloadl
-    libc.src.math.hypot
-    libc.src.math.hypotf
-    libc.src.math.ilogb
-    libc.src.math.ilogbf
-    libc.src.math.ilogbl
-    libc.src.math.iscanonical
-    libc.src.math.iscanonicalf
-    libc.src.math.iscanonicall
-    libc.src.math.isnan
-    libc.src.math.isnanf
-    libc.src.math.isnanl
-    libc.src.math.issignaling
-    libc.src.math.issignalingf
-    libc.src.math.issignalingl
-    libc.src.math.ldexp
-    libc.src.math.ldexpf
-    libc.src.math.ldexpl
-    libc.src.math.llogb
-    libc.src.math.llogbf
-    libc.src.math.llogbl
-    libc.src.math.llrint
-    libc.src.math.llrintf
-    libc.src.math.llrintl
-    libc.src.math.llround
-    libc.src.math.llroundf
-    libc.src.math.llroundl
-    libc.src.math.log
-    libc.src.math.log10
-    libc.src.math.log10f
-    libc.src.math.log1p
-    libc.src.math.log1pf
-    libc.src.math.log2
-    libc.src.math.log2f
-    libc.src.math.logb
-    libc.src.math.logbf
-    libc.src.math.logbl
-    libc.src.math.logf
-    libc.src.math.lrint
-    libc.src.math.lrintf
-    libc.src.math.lrintl
-    libc.src.math.lround
-    libc.src.math.lroundf
-    libc.src.math.lroundl
-    libc.src.math.modf
-    libc.src.math.modff
-    libc.src.math.modfl
-    libc.src.math.nan
-    libc.src.math.nanf
-    libc.src.math.nanl
-    libc.src.math.nearbyint
-    libc.src.math.nearbyintf
-    libc.src.math.nearbyintl
-    libc.src.math.nextafter
-    libc.src.math.nextafterf
-    libc.src.math.nextafterl
-    libc.src.math.nextdown
-    libc.src.math.nextdownf
-    libc.src.math.nextdownl
-    libc.src.math.nexttoward
-    libc.src.math.nexttowardf
-    libc.src.math.nexttowardl
-    libc.src.math.nextup
-    libc.src.math.nextupf
-    libc.src.math.nextupl
-    libc.src.math.pow
-    libc.src.math.powf
-    libc.src.math.remainder
-    libc.src.math.remainderf
-    libc.src.math.remainderl
-    libc.src.math.remquo
-    libc.src.math.remquof
-    libc.src.math.remquol
-    libc.src.math.rint
-    libc.src.math.rintf
-    libc.src.math.rintl
-    libc.src.math.round
-    libc.src.math.roundeven
-    libc.src.math.roundevenf
-    libc.src.math.roundevenl
-    libc.src.math.roundf
-    libc.src.math.roundl
-    libc.src.math.scalbln
-    libc.src.math.scalblnf
-    libc.src.math.scalblnl
-    libc.src.math.scalbn
-    libc.src.math.scalbnf
-    libc.src.math.scalbnl
-    libc.src.math.setpayload
-    libc.src.math.setpayloadf
-    libc.src.math.setpayloadl
-    libc.src.math.setpayloadsig
-    libc.src.math.setpayloadsigf
-    libc.src.math.setpayloadsigl
-    libc.src.math.sin
-    libc.src.math.sincos
-    libc.src.math.sincosf
-    libc.src.math.sinf
-    libc.src.math.sinhf
-    libc.src.math.sinpif
-    libc.src.math.sqrt
-    libc.src.math.sqrtf
-    libc.src.math.sqrtl
-    libc.src.math.tan
-    libc.src.math.tanf
-    libc.src.math.tanhf
-    libc.src.math.totalorder
-    libc.src.math.totalorderf
-    libc.src.math.totalorderl
-    libc.src.math.totalordermag
-    libc.src.math.totalordermagf
-    libc.src.math.totalordermagl
-    libc.src.math.trunc
-    libc.src.math.truncf
-    libc.src.math.truncl
-    libc.src.math.ufromfp
-    libc.src.math.ufromfpf
-    libc.src.math.ufromfpl
-    libc.src.math.ufromfpx
-    libc.src.math.ufromfpxf
-    libc.src.math.ufromfpxl
-)
-
-if(LIBC_TYPES_HAS_CFLOAT16)
-  list(APPEND TARGET_LIBM_ENTRYPOINTS
-    # complex.h C23 _Complex _Float16 entrypoints
-    libc.src.complex.crealf16
-    libc.src.complex.cimagf16
-    libc.src.complex.conjf16
-    libc.src.complex.cprojf16
-  )
-endif()
-
-if(LIBC_TYPES_HAS_FLOAT16)
-  list(APPEND TARGET_LIBM_ENTRYPOINTS
-    # math.h C23 _Float16 entrypoints
-    libc.src.math.acosf16
-    libc.src.math.acoshf16
-    libc.src.math.asinf16
-    libc.src.math.asinhf16
-    libc.src.math.canonicalizef16
-    libc.src.math.ceilf16
-    libc.src.math.copysignf16
-    libc.src.math.cosf16
-    libc.src.math.coshf16
-    libc.src.math.cospif16
-    libc.src.math.exp10f16
-    libc.src.math.exp10m1f16
-    libc.src.math.exp2f16
-    libc.src.math.exp2m1f16
-    libc.src.math.expf16
-    libc.src.math.expm1f16
-    libc.src.math.f16add
-    libc.src.math.f16addf
-    libc.src.math.f16addl
-    libc.src.math.f16div
-    libc.src.math.f16divf
-    libc.src.math.f16divl
-    libc.src.math.f16fma
-    libc.src.math.f16fmaf
-    libc.src.math.f16fmal
-    libc.src.math.f16mul
-    libc.src.math.f16mulf
-    libc.src.math.f16mull
-    libc.src.math.f16sqrt
-    libc.src.math.f16sqrtf
-    libc.src.math.f16sqrtl
-    libc.src.math.f16sub
-    libc.src.math.f16subf
-    libc.src.math.f16subl
-    libc.src.math.fabsf16
-    libc.src.math.fdimf16
-    libc.src.math.floorf16
-    libc.src.math.fmaf16
-    libc.src.math.fmaxf16
-    libc.src.math.fmaximum_mag_numf16
-    libc.src.math.fmaximum_magf16
-    libc.src.math.fmaximum_numf16
-    libc.src.math.fmaximumf16
-    libc.src.math.fminf16
-    libc.src.math.fminimum_mag_numf16
-    libc.src.math.fminimum_magf16
-    libc.src.math.fminimum_numf16
-    libc.src.math.fminimumf16
-    libc.src.math.fmodf16
-    libc.src.math.frexpf16
-    libc.src.math.fromfpf16
-    libc.src.math.fromfpxf16
-    libc.src.math.getpayloadf16
-    libc.src.math.hypotf16
-    libc.src.math.ilogbf16
-    libc.src.math.iscanonicalf16
-    libc.src.math.issignalingf16
-    libc.src.math.ldexpf16
-    libc.src.math.llogbf16
-    libc.src.math.llrintf16
-    libc.src.math.llroundf16
-    libc.src.math.log10f16
-    libc.src.math.log2f16
-    libc.src.math.logbf16
-    libc.src.math.logf16
-    libc.src.math.lrintf16
-    libc.src.math.lroundf16
-    libc.src.math.modff16
-    libc.src.math.nanf16
-    libc.src.math.nearbyintf16
-    libc.src.math.nextafterf16
-    libc.src.math.nextdownf16
-    libc.src.math.nexttowardf16
-    libc.src.math.nextupf16
-    libc.src.math.remainderf16
-    libc.src.math.remquof16
-    libc.src.math.rintf16
-    libc.src.math.roundevenf16
-    libc.src.math.roundf16
-    libc.src.math.scalblnf16
-    libc.src.math.scalbnf16
-    libc.src.math.setpayloadf16
-    libc.src.math.setpayloadsigf16
-    libc.src.math.sinf16
-    libc.src.math.sinhf16
-    libc.src.math.sinpif16
-    libc.src.math.sqrtf16
-    libc.src.math.tanf16
-    libc.src.math.tanhf16
-    libc.src.math.tanpif16
-    libc.src.math.totalorderf16
-    libc.src.math.totalordermagf16
-    libc.src.math.truncf16
-    libc.src.math.ufromfpf16
-    libc.src.math.ufromfpxf16
-  )
-
-  if(LIBC_TYPES_HAS_FLOAT128)
-    list(APPEND TARGET_LIBM_ENTRYPOINTS
-      # math.h C23 mixed _Float16 and _Float128 entrypoints
-      libc.src.math.f16addf128
-      libc.src.math.f16divf128
-      libc.src.math.f16fmaf128
-      libc.src.math.f16mulf128
-      libc.src.math.f16sqrtf128
-      libc.src.math.f16subf128
-    )
-  endif()
-endif()
-
-if(LIBC_TYPES_HAS_CFLOAT128)
-  list(APPEND TARGET_LIBM_ENTRYPOINTS
-    # complex.h C23 _Complex _Float128 entrypoints
-    libc.src.complex.crealf128
-    libc.src.complex.cimagf128
-    libc.src.complex.conjf128
-    libc.src.complex.cprojf128
-  )
-endif()
-
-if(LIBC_TYPES_HAS_FLOAT128)
-  list(APPEND TARGET_LIBM_ENTRYPOINTS
-    # math.h C23 _Float128 entrypoints
-    libc.src.math.atan2f128
-    libc.src.math.canonicalizef128
-    libc.src.math.ceilf128
-    libc.src.math.copysignf128
-    libc.src.math.daddf128
-    libc.src.math.ddivf128
-    libc.src.math.dfmaf128
-    libc.src.math.dmulf128
-    libc.src.math.dsqrtf128
-    libc.src.math.dsubf128
-    libc.src.math.fabsf128
-    libc.src.math.faddf128
-    libc.src.math.fdimf128
-    libc.src.math.fdivf128
-    libc.src.math.ffmaf128
-    libc.src.math.floorf128
-    libc.src.math.fmaxf128
-    libc.src.math.fmaximum_mag_numf128
-    libc.src.math.fmaximum_magf128
-    libc.src.math.fmaximum_numf128
-    libc.src.math.fmaximumf128
-    libc.src.math.fminf128
-    libc.src.math.fminimum_mag_numf128
-    libc.src.math.fminimum_magf128
-    libc.src.math.fminimum_numf128
-    libc.src.math.fminimumf128
-    libc.src.math.fmodf128
-    libc.src.math.fmulf128
-    libc.src.math.frexpf128
-    libc.src.math.fromfpf128
-    libc.src.math.fromfpxf128
-    libc.src.math.fsqrtf128
-    libc.src.math.fsubf128
-    libc.src.math.getpayloadf128
-    libc.src.math.ilogbf128
-    libc.src.math.iscanonicalf128
-    libc.src.math.issignalingf128
-    libc.src.math.ldexpf128
-    libc.src.math.llogbf128
-    libc.src.math.llrintf128
-    libc.src.math.llroundf128
-    libc.src.math.logbf128
-    libc.src.math.lrintf128
-    libc.src.math.lroundf128
-    libc.src.math.modff128
-    libc.src.math.nanf128
-    libc.src.math.nearbyintf128
-    libc.src.math.nextafterf128
-    libc.src.math.nextdownf128
-    libc.src.math.nextupf128
-    libc.src.math.remainderf128
-    libc.src.math.remquof128
-    libc.src.math.rintf128
-    libc.src.math.roundevenf128
-    libc.src.math.roundf128
-    libc.src.math.scalblnf128
-    libc.src.math.scalbnf128
-    libc.src.math.setpayloadf128
-    libc.src.math.setpayloadsigf128
-    libc.src.math.sqrtf128
-    libc.src.math.totalorderf128
-    libc.src.math.totalordermagf128
-    libc.src.math.truncf128
-    libc.src.math.ufromfpf128
-    libc.src.math.ufromfpxf128
-  )
-endif()
-
-list(APPEND TARGET_LIBM_ENTRYPOINTS
-  # bfloat16 entrypoints
-  libc.src.math.bf16add
-  libc.src.math.bf16addf
-  libc.src.math.bf16addl
-  libc.src.math.bf16div
-  libc.src.math.bf16divf
-  libc.src.math.bf16divl
-  libc.src.math.bf16fma
-  libc.src.math.bf16fmaf
-  libc.src.math.bf16fmal
-  libc.src.math.bf16mul
-  libc.src.math.bf16mulf
-  libc.src.math.bf16mull
-  libc.src.math.bf16sub
-  libc.src.math.bf16subf
-  libc.src.math.bf16subl
-  libc.src.math.canonicalizebf16
-  libc.src.math.ceilbf16
-  libc.src.math.copysignbf16
-  libc.src.math.fabsbf16
-  libc.src.math.fdimbf16
-  libc.src.math.floorbf16
-  libc.src.math.fmaxbf16
-  libc.src.math.fmaximumbf16
-  libc.src.math.fmaximum_magbf16
-  libc.src.math.fmaximum_mag_numbf16
-  libc.src.math.fmaximum_numbf16
-  libc.src.math.fminbf16
-  libc.src.math.fminimumbf16
-  libc.src.math.fminimum_magbf16
-  libc.src.math.fminimum_mag_numbf16
-  libc.src.math.fminimum_numbf16
-  libc.src.math.fmodbf16
-  libc.src.math.frexpbf16
-  libc.src.math.fromfpbf16
-  libc.src.math.fromfpxbf16
-  libc.src.math.getpayloadbf16
-  libc.src.math.ilogbbf16
-  libc.src.math.iscanonicalbf16
-  libc.src.math.issignalingbf16
-  libc.src.math.ldexpbf16
-  libc.src.math.llogbbf16
-  libc.src.math.llrintbf16
-  libc.src.math.llroundbf16
-  libc.src.math.log_bf16
-  libc.src.math.logbbf16
-  libc.src.math.lrintbf16
-  libc.src.math.lroundbf16
-  libc.src.math.modfbf16
-  libc.src.math.nanbf16
-  libc.src.math.nearbyintbf16
-  libc.src.math.nextafterbf16
-  libc.src.math.nextdownbf16
-  libc.src.math.nexttowardbf16
-  libc.src.math.nextupbf16
-  libc.src.math.remainderbf16
-  libc.src.math.remquobf16
-  libc.src.math.rintbf16
-  libc.src.math.roundbf16
-  libc.src.math.roundevenbf16
-  libc.src.math.scalblnbf16
-  libc.src.math.scalbnbf16
-  libc.src.math.setpayloadbf16
-  libc.src.math.setpayloadsigbf16
-  libc.src.math.sqrtbf16
-  libc.src.math.truncbf16
-  libc.src.math.totalorderbf16
-  libc.src.math.totalordermagbf16
-  libc.src.math.ufromfpbf16
-  libc.src.math.ufromfpxbf16
-)
-
-if(LIBC_TYPES_HAS_FLOAT128)
-  list(APPEND TARGET_LIBM_ENTRYPOINTS
-    # math.h C++23 mixed bfloat16 and _Float128 entrypoints
-    libc.src.math.bf16addf128
-    libc.src.math.bf16divf128
-    libc.src.math.bf16fmaf128
-    libc.src.math.bf16mulf128
-    libc.src.math.bf16subf128
-  )
-endif()
-
-if(LIBC_COMPILER_HAS_FIXED_POINT)
-  list(APPEND TARGET_LIBM_ENTRYPOINTS
-    # stdfix.h _Fract and _Accum entrypoints
-    libc.src.stdfix.abshk
-    libc.src.stdfix.abshr
-    libc.src.stdfix.absk
-    libc.src.stdfix.abslk
-    libc.src.stdfix.abslr
-    libc.src.stdfix.absr
-    libc.src.stdfix.exphk
-    libc.src.stdfix.expk
-    libc.src.stdfix.roundhk
-    libc.src.stdfix.roundhr
-    libc.src.stdfix.roundk
-    libc.src.stdfix.roundlk
-    libc.src.stdfix.roundlr
-    libc.src.stdfix.roundr
-    libc.src.stdfix.rounduhk
-    libc.src.stdfix.rounduhr
-    libc.src.stdfix.rounduk
-    libc.src.stdfix.roundulk
-    libc.src.stdfix.roundulr
-    libc.src.stdfix.roundur
-    libc.src.stdfix.sqrtuhk
-    libc.src.stdfix.sqrtuhr
-    libc.src.stdfix.sqrtuk
-    libc.src.stdfix.sqrtur
-    # libc.src.stdfix.sqrtulk
-    libc.src.stdfix.sqrtulr
-    libc.src.stdfix.uhksqrtus
-    libc.src.stdfix.uksqrtui
-    libc.src.stdfix.hrbits
-    libc.src.stdfix.uhrbits
-    libc.src.stdfix.rbits
-    libc.src.stdfix.urbits
-    libc.src.stdfix.lrbits
-    libc.src.stdfix.ulrbits
-    libc.src.stdfix.hkbits
-    libc.src.stdfix.uhkbits
-    libc.src.stdfix.kbits
-    libc.src.stdfix.ukbits
-    libc.src.stdfix.lkbits
-    libc.src.stdfix.ulkbits
-    libc.src.stdfix.bitshr
-    libc.src.stdfix.bitsr
-    libc.src.stdfix.bitslr
-    libc.src.stdfix.bitshk
-    libc.src.stdfix.bitsk
-    libc.src.stdfix.bitslk
-    libc.src.stdfix.bitsuhr
-    libc.src.stdfix.bitsur
-    libc.src.stdfix.bitsulr
-    libc.src.stdfix.bitsuhk
-    libc.src.stdfix.bitsuk
-    libc.src.stdfix.bitsulk
-    libc.src.stdfix.countlshr
-    libc.src.stdfix.countlsr
-    libc.src.stdfix.countlslr
-    libc.src.stdfix.countlshk
-    libc.src.stdfix.countlsk
-    libc.src.stdfix.countlslk
-    libc.src.stdfix.countlsuhr
-    libc.src.stdfix.countlsur
-    libc.src.stdfix.countlsulr
-    libc.src.stdfix.countlsuhk
-    libc.src.stdfix.countlsuk
-    libc.src.stdfix.countlsulk
-    libc.src.stdfix.idivr
-    libc.src.stdfix.idivlr
-    libc.src.stdfix.idivk
-    libc.src.stdfix.idivlk
-    libc.src.stdfix.idivur
-    libc.src.stdfix.idivulr
-    libc.src.stdfix.idivuk
-    libc.src.stdfix.idivulk
-  )
-endif()
-
-set(TARGET_LLVMLIBC_ENTRYPOINTS
-  ${TARGET_LIBC_ENTRYPOINTS}
-  ${TARGET_LIBM_ENTRYPOINTS}
-)
+set(TARGET_LIBC_ENTRYPOINTS
+    # assert.h entrypoints
+    libc.src.assert.__assert_fail
+
+    # compiler entrypoints (no corresponding header)
+    libc.src.compiler.__stack_chk_fail
+
+    # ctype.h entrypoints
+    libc.src.ctype.isalnum
+    libc.src.ctype.isalpha
+    libc.src.ctype.isascii
+    libc.src.ctype.isblank
+    libc.src.ctype.iscntrl
+    libc.src.ctype.isdigit
+    libc.src.ctype.isgraph
+    libc.src.ctype.islower
+    libc.src.ctype.isprint
+    libc.src.ctype.ispunct
+    libc.src.ctype.isspace
+    libc.src.ctype.isupper
+    libc.src.ctype.isxdigit
+    libc.src.ctype.toascii
+    libc.src.ctype.tolower
+    libc.src.ctype.toupper
+
+    # ctype.h entrypoints
+    libc.src.ctype.isalnum_l
+    libc.src.ctype.isalpha_l
+    libc.src.ctype.isblank_l
+    libc.src.ctype.iscntrl_l
+    libc.src.ctype.isdigit_l
+    libc.src.ctype.isgraph_l
+    libc.src.ctype.islower_l
+    libc.src.ctype.isprint_l
+    libc.src.ctype.ispunct_l
+    libc.src.ctype.isspace_l
+    libc.src.ctype.isupper_l
+    libc.src.ctype.isxdigit_l
+    libc.src.ctype.tolower_l
+    libc.src.ctype.toupper_l
+
+    # errno.h entrypoints
+    libc.src.errno.errno
+
+    # locale.h entrypoints
+    libc.src.locale.localeconv
+    libc.src.locale.duplocale
+    libc.src.locale.freelocale
+    libc.src.locale.localeconv
+    libc.src.locale.newlocale
+    libc.src.locale.setlocale
+    libc.src.locale.uselocale
+
+    # setjmp.h entrypoints
+    libc.src.setjmp.longjmp
+    libc.src.setjmp.setjmp
+
+    # string.h entrypoints
+    libc.src.string.memccpy
+    libc.src.string.memchr
+    libc.src.string.memcmp
+    libc.src.string.memcpy
+    libc.src.string.memmem
+    libc.src.string.memmove
+    libc.src.string.mempcpy
+    libc.src.string.memrchr
+    libc.src.string.memset
+    libc.src.string.memset_explicit
+    libc.src.string.stpcpy
+    libc.src.string.stpncpy
+    libc.src.string.strcasestr
+    libc.src.string.strcat
+    libc.src.string.strchr
+    libc.src.string.strchrnul
+    libc.src.string.strcmp
+    libc.src.string.strcoll
+    libc.src.string.strcpy
+    libc.src.string.strcspn
+    libc.src.string.strdup
+    libc.src.string.strerror
+    libc.src.string.strerror_r
+    libc.src.string.strlcat
+    libc.src.string.strlcpy
+    libc.src.string.strlen
+    libc.src.string.strncat
+    libc.src.string.strncmp
+    libc.src.string.strncpy
+    libc.src.string.strndup
+    libc.src.string.strnlen
+    libc.src.string.strpbrk
+    libc.src.string.strrchr
+    libc.src.string.strsep
+    libc.src.string.strspn
+    libc.src.string.strstr
+    libc.src.string.strtok
+    libc.src.string.strtok_r
+    libc.src.string.strxfrm
+
+    # string.h entrypoints
+    libc.src.string.strcoll_l
+    libc.src.string.strxfrm_l
+
+    # strings.h entrypoints
+    libc.src.strings.bcmp
+    libc.src.strings.bcopy
+    libc.src.strings.bzero
+    libc.src.strings.ffs
+    libc.src.strings.ffsl
+    libc.src.strings.ffsll
+    libc.src.strings.index
+    libc.src.strings.rindex
+    libc.src.strings.strcasecmp
+    libc.src.strings.strncasecmp
+
+    # strings.h entrypoints
+    libc.src.strings.strcasecmp_l
+    libc.src.strings.strncasecmp_l
+
+    # inttypes.h entrypoints
+    libc.src.inttypes.imaxabs
+    libc.src.inttypes.imaxdiv
+    libc.src.inttypes.strtoimax
+    libc.src.inttypes.strtoumax
+
+    # stdio.h entrypoints
+    libc.src.stdio.asprintf
+    libc.src.stdio.feof
+    libc.src.stdio.ferror
+    libc.src.stdio.fgetc
+    libc.src.stdio.fgets
+    libc.src.stdio.fprintf
+    libc.src.stdio.fputc
+    libc.src.stdio.fputs
+    libc.src.stdio.fread
+    libc.src.stdio.fscanf
+    libc.src.stdio.fwrite
+    libc.src.stdio.getchar
+    libc.src.stdio.printf
+    libc.src.stdio.putc
+    libc.src.stdio.putchar
+    libc.src.stdio.puts
+    libc.src.stdio.remove
+    libc.src.stdio.scanf
+    libc.src.stdio.snprintf
+    libc.src.stdio.sprintf
+    libc.src.stdio.sscanf
+    libc.src.stdio.vasprintf
+    libc.src.stdio.vfprintf
+    libc.src.stdio.vfscanf
+    libc.src.stdio.vprintf
+    libc.src.stdio.vscanf
+    libc.src.stdio.vsnprintf
+    libc.src.stdio.vsprintf
+    libc.src.stdio.vsscanf
+
+    # stdbit.h entrypoints
+    libc.src.stdbit.stdc_bit_ceil_uc
+    libc.src.stdbit.stdc_bit_ceil_ui
+    libc.src.stdbit.stdc_bit_ceil_ul
+    libc.src.stdbit.stdc_bit_ceil_ull
+    libc.src.stdbit.stdc_bit_ceil_us
+    libc.src.stdbit.stdc_bit_floor_uc
+    libc.src.stdbit.stdc_bit_floor_ui
+    libc.src.stdbit.stdc_bit_floor_ul
+    libc.src.stdbit.stdc_bit_floor_ull
+    libc.src.stdbit.stdc_bit_floor_us
+    libc.src.stdbit.stdc_bit_width_uc
+    libc.src.stdbit.stdc_bit_width_ui
+    libc.src.stdbit.stdc_bit_width_ul
+    libc.src.stdbit.stdc_bit_width_ull
+    libc.src.stdbit.stdc_bit_width_us
+    libc.src.stdbit.stdc_count_ones_uc
+    libc.src.stdbit.stdc_count_ones_ui
+    libc.src.stdbit.stdc_count_ones_ul
+    libc.src.stdbit.stdc_count_ones_ull
+    libc.src.stdbit.stdc_count_ones_us
+    libc.src.stdbit.stdc_count_zeros_uc
+    libc.src.stdbit.stdc_count_zeros_ui
+    libc.src.stdbit.stdc_count_zeros_ul
+    libc.src.stdbit.stdc_count_zeros_ull
+    libc.src.stdbit.stdc_count_zeros_us
+    libc.src.stdbit.stdc_first_leading_one_uc
+    libc.src.stdbit.stdc_first_leading_one_ui
+    libc.src.stdbit.stdc_first_leading_one_ul
+    libc.src.stdbit.stdc_first_leading_one_ull
+    libc.src.stdbit.stdc_first_leading_one_us
+    libc.src.stdbit.stdc_first_leading_zero_uc
+    libc.src.stdbit.stdc_first_leading_zero_ui
+    libc.src.stdbit.stdc_first_leading_zero_ul
+    libc.src.stdbit.stdc_first_leading_zero_ull
+    libc.src.stdbit.stdc_first_leading_zero_us
+    libc.src.stdbit.stdc_first_trailing_one_uc
+    libc.src.stdbit.stdc_first_trailing_one_ui
+    libc.src.stdbit.stdc_first_trailing_one_ul
+    libc.src.stdbit.stdc_first_trailing_one_ull
+    libc.src.stdbit.stdc_first_trailing_one_us
+    libc.src.stdbit.stdc_first_trailing_zero_uc
+    libc.src.stdbit.stdc_first_trailing_zero_ui
+    libc.src.stdbit.stdc_first_trailing_zero_ul
+    libc.src.stdbit.stdc_first_trailing_zero_ull
+    libc.src.stdbit.stdc_first_trailing_zero_us
+    libc.src.stdbit.stdc_has_single_bit_uc
+    libc.src.stdbit.stdc_has_single_bit_ui
+    libc.src.stdbit.stdc_has_single_bit_ul
+    libc.src.stdbit.stdc_has_single_bit_ull
+    libc.src.stdbit.stdc_has_single_bit_us
+    libc.src.stdbit.stdc_leading_ones_uc
+    libc.src.stdbit.stdc_leading_ones_ui
+    libc.src.stdbit.stdc_leading_ones_ul
+    libc.src.stdbit.stdc_leading_ones_ull
+    libc.src.stdbit.stdc_leading_ones_us
+    libc.src.stdbit.stdc_leading_zeros_uc
+    libc.src.stdbit.stdc_leading_zeros_ui
+    libc.src.stdbit.stdc_leading_zeros_ul
+    libc.src.stdbit.stdc_leading_zeros_ull
+    libc.src.stdbit.stdc_leading_zeros_us
+    libc.src.stdbit.stdc_trailing_ones_uc
+    libc.src.stdbit.stdc_trailing_ones_ui
+    libc.src.stdbit.stdc_trailing_ones_ul
+    libc.src.stdbit.stdc_trailing_ones_ull
+    libc.src.stdbit.stdc_trailing_ones_us
+    libc.src.stdbit.stdc_trailing_zeros_uc
+    libc.src.stdbit.stdc_trailing_zeros_ui
+    libc.src.stdbit.stdc_trailing_zeros_ul
+    libc.src.stdbit.stdc_trailing_zeros_ull
+    libc.src.stdbit.stdc_trailing_zeros_us
+
+    # stdlib.h entrypoints
+    libc.src.stdlib._Exit
+    libc.src.stdlib.a64l
+    libc.src.stdlib.abort
+    libc.src.stdlib.abs
+    libc.src.stdlib.aligned_alloc
+    libc.src.stdlib.atexit
+    libc.src.stdlib.atof
+    libc.src.stdlib.atoi
+    libc.src.stdlib.atol
+    libc.src.stdlib.atoll
+    libc.src.stdlib.bsearch
+    libc.src.stdlib.calloc
+    libc.src.stdlib.div
+    libc.src.stdlib.exit
+    libc.src.stdlib.free
+    libc.src.stdlib.l64a
+    libc.src.stdlib.labs
+    libc.src.stdlib.ldiv
+    libc.src.stdlib.llabs
+    libc.src.stdlib.lldiv
+    libc.src.stdlib.malloc
+    libc.src.stdlib.memalignment
+    libc.src.stdlib.qsort
+    libc.src.stdlib.qsort_r
+    libc.src.stdlib.rand
+    libc.src.stdlib.realloc
+    libc.src.stdlib.srand
+    # libc.src.stdlib.strfromd
+    # libc.src.stdlib.strfromf
+    # libc.src.stdlib.strfroml
+    libc.src.stdlib.strtod
+    libc.src.stdlib.strtof
+    libc.src.stdlib.strtol
+    libc.src.stdlib.strtold
+    libc.src.stdlib.strtoll
+    libc.src.stdlib.strtoul
+    libc.src.stdlib.strtoull
+
+    # stdlib.h entrypoints
+    libc.src.stdlib.strtod_l
+    libc.src.stdlib.strtof_l
+    libc.src.stdlib.strtol_l
+    libc.src.stdlib.strtold_l
+    libc.src.stdlib.strtoll_l
+    libc.src.stdlib.strtoul_l
+    libc.src.stdlib.strtoull_l
+
+    # time.h entrypoints
+    libc.src.time.asctime
+    libc.src.time.asctime_r
+    libc.src.time.clock
+    libc.src.time.ctime
+    libc.src.time.ctime_r
+    libc.src.time.difftime
+    libc.src.time.gmtime
+    libc.src.time.gmtime_r
+    libc.src.time.localtime
+    libc.src.time.localtime_r
+    libc.src.time.mktime
+    libc.src.time.strftime
+    libc.src.time.strftime_l
+    libc.src.time.timespec_get
+
+    # wchar.h entrypoints
+    libc.src.wchar.btowc
+    libc.src.wchar.wcslen
+    libc.src.wchar.wctob
+
+    # wctype.h entrypoints
+    libc.src.wctype.iswalpha
+
+    # internal entrypoints
+    libc.startup.baremetal.init
+    libc.startup.baremetal.fini
+)
+
+set(TARGET_LIBM_ENTRYPOINTS
+    # complex.h entrypoints
+    libc.src.complex.creal
+    libc.src.complex.crealf
+    libc.src.complex.creall
+    libc.src.complex.cimag
+    libc.src.complex.cimagf
+    libc.src.complex.cimagl
+    libc.src.complex.conj
+    libc.src.complex.conjf
+    libc.src.complex.conjl
+    libc.src.complex.cproj
+    libc.src.complex.cprojf
+    libc.src.complex.cprojl
+
+    # fenv.h entrypoints
+    libc.src.fenv.feclearexcept
+    libc.src.fenv.fedisableexcept
+    libc.src.fenv.feenableexcept
+    libc.src.fenv.fegetenv
+    libc.src.fenv.fegetexcept
+    libc.src.fenv.fegetexceptflag
+    libc.src.fenv.fegetround
+    libc.src.fenv.feholdexcept
+    libc.src.fenv.feraiseexcept
+    libc.src.fenv.fesetenv
+    libc.src.fenv.fesetexcept
+    libc.src.fenv.fesetexceptflag
+    libc.src.fenv.fesetround
+    libc.src.fenv.fetestexcept
+    libc.src.fenv.fetestexceptflag
+    libc.src.fenv.feupdateenv
+
+    # math.h entrypoints
+    libc.src.math.acos
+    libc.src.math.acosf
+    libc.src.math.acoshf
+    libc.src.math.asin
+    libc.src.math.asinf
+    libc.src.math.asinhf
+    libc.src.math.atan2
+    libc.src.math.atan2f
+    libc.src.math.atan2l
+    libc.src.math.atan
+    libc.src.math.atanf
+    libc.src.math.atanhf
+    libc.src.math.canonicalize
+    libc.src.math.canonicalizef
+    libc.src.math.canonicalizel
+    libc.src.math.cbrt
+    libc.src.math.cbrtf
+    libc.src.math.ceil
+    libc.src.math.ceilf
+    libc.src.math.ceill
+    libc.src.math.copysign
+    libc.src.math.copysignf
+    libc.src.math.copysignl
+    libc.src.math.cos
+    libc.src.math.cosf
+    libc.src.math.coshf
+    libc.src.math.cospif
+    libc.src.math.dfmal
+    libc.src.math.dmull
+    libc.src.math.dsqrtl
+    libc.src.math.daddl
+    libc.src.math.ddivl
+    libc.src.math.dsubl
+    libc.src.math.erff
+    libc.src.math.exp
+    libc.src.math.exp10
+    libc.src.math.exp10f
+    libc.src.math.exp10m1f
+    libc.src.math.exp2
+    libc.src.math.exp2f
+    libc.src.math.exp2m1f
+    libc.src.math.expf
+    libc.src.math.expm1
+    libc.src.math.expm1f
+    libc.src.math.fabs
+    libc.src.math.fabsf
+    libc.src.math.fabsl
+    libc.src.math.fadd
+    libc.src.math.faddl
+    libc.src.math.fadd
+    libc.src.math.fdim
+    libc.src.math.fdimf
+    libc.src.math.fdiml
+    libc.src.math.fdiv
+    libc.src.math.fdivl
+    libc.src.math.ffma
+    libc.src.math.ffmal
+    libc.src.math.floor
+    libc.src.math.floorf
+    libc.src.math.floorl
+    libc.src.math.fma
+    libc.src.math.fmabf16
+    libc.src.math.fmaf
+    libc.src.math.fmax
+    libc.src.math.fmaxf
+    libc.src.math.fmaximum
+    libc.src.math.fmaximum_mag
+    libc.src.math.fmaximum_mag_num
+    libc.src.math.fmaximum_mag_numf
+    libc.src.math.fmaximum_mag_numl
+    libc.src.math.fmaximum_magf
+    libc.src.math.fmaximum_magl
+    libc.src.math.fmaximum_num
+    libc.src.math.fmaximum_numf
+    libc.src.math.fmaximum_numl
+    libc.src.math.fmaximumf
+    libc.src.math.fmaximuml
+    libc.src.math.fmaxl
+    libc.src.math.fmin
+    libc.src.math.fminf
+    libc.src.math.fminimum
+    libc.src.math.fminimum_mag
+    libc.src.math.fminimum_mag_num
+    libc.src.math.fminimum_mag_numf
+    libc.src.math.fminimum_mag_numl
+    libc.src.math.fminimum_magf
+    libc.src.math.fminimum_magl
+    libc.src.math.fminimum_num
+    libc.src.math.fminimum_numf
+    libc.src.math.fminimum_numl
+    libc.src.math.fminimumf
+    libc.src.math.fminimuml
+    libc.src.math.fminl
+    libc.src.math.fmod
+    libc.src.math.fmodf
+    libc.src.math.fmodl
+    libc.src.math.fmul
+    libc.src.math.fmull
+    libc.src.math.frexp
+    libc.src.math.frexpf
+    libc.src.math.frexpl
+    libc.src.math.fromfp
+    libc.src.math.fromfpf
+    libc.src.math.fromfpl
+    libc.src.math.fromfpx
+    libc.src.math.fromfpxf
+    libc.src.math.fromfpxl
+    libc.src.math.fsqrt
+    libc.src.math.fsqrtl
+    libc.src.math.fsub
+    libc.src.math.fsubl
+    libc.src.math.getpayload
+    libc.src.math.getpayloadf
+    libc.src.math.getpayloadl
+    libc.src.math.hypot
+    libc.src.math.hypotf
+    libc.src.math.ilogb
+    libc.src.math.ilogbf
+    libc.src.math.ilogbl
+    libc.src.math.iscanonical
+    libc.src.math.iscanonicalf
+    libc.src.math.iscanonicall
+    libc.src.math.isnan
+    libc.src.math.isnanf
+    libc.src.math.isnanl
+    libc.src.math.issignaling
+    libc.src.math.issignalingf
+    libc.src.math.issignalingl
+    libc.src.math.ldexp
+    libc.src.math.ldexpf
+    libc.src.math.ldexpl
+    libc.src.math.llogb
+    libc.src.math.llogbf
+    libc.src.math.llogbl
+    libc.src.math.llrint
+    libc.src.math.llrintf
+    libc.src.math.llrintl
+    libc.src.math.llround
+    libc.src.math.llroundf
+    libc.src.math.llroundl
+    libc.src.math.log
+    libc.src.math.log10
+    libc.src.math.log10f
+    libc.src.math.log1p
+    libc.src.math.log1pf
+    libc.src.math.log2
+    libc.src.math.log2f
+    libc.src.math.logb
+    libc.src.math.logbf
+    libc.src.math.logbl
+    libc.src.math.logf
+    libc.src.math.lrint
+    libc.src.math.lrintf
+    libc.src.math.lrintl
+    libc.src.math.lround
+    libc.src.math.lroundf
+    libc.src.math.lroundl
+    libc.src.math.modf
+    libc.src.math.modff
+    libc.src.math.modfl
+    libc.src.math.nan
+    libc.src.math.nanf
+    libc.src.math.nanl
+    libc.src.math.nearbyint
+    libc.src.math.nearbyintf
+    libc.src.math.nearbyintl
+    libc.src.math.nextafter
+    libc.src.math.nextafterf
+    libc.src.math.nextafterl
+    libc.src.math.nextdown
+    libc.src.math.nextdownf
+    libc.src.math.nextdownl
+    libc.src.math.nexttoward
+    libc.src.math.nexttowardf
+    libc.src.math.nexttowardl
+    libc.src.math.nextup
+    libc.src.math.nextupf
+    libc.src.math.nextupl
+    libc.src.math.pow
+    libc.src.math.powf
+    libc.src.math.remainder
+    libc.src.math.remainderf
+    libc.src.math.remainderl
+    libc.src.math.remquo
+    libc.src.math.remquof
+    libc.src.math.remquol
+    libc.src.math.rint
+    libc.src.math.rintf
+    libc.src.math.rintl
+    libc.src.math.round
+    libc.src.math.roundeven
+    libc.src.math.roundevenf
+    libc.src.math.roundevenl
+    libc.src.math.roundf
+    libc.src.math.roundl
+    libc.src.math.scalbln
+    libc.src.math.scalblnf
+    libc.src.math.scalblnl
+    libc.src.math.scalbn
+    libc.src.math.scalbnf
+    libc.src.math.scalbnl
+    libc.src.math.setpayload
+    libc.src.math.setpayloadf
+    libc.src.math.setpayloadl
+    libc.src.math.setpayloadsig
+    libc.src.math.setpayloadsigf
+    libc.src.math.setpayloadsigl
+    libc.src.math.sin
+    libc.src.math.sincos
+    libc.src.math.sincosf
+    libc.src.math.sinf
+    libc.src.math.sinhf
+    libc.src.math.sinpif
+    libc.src.math.sqrt
+    libc.src.math.sqrtf
+    libc.src.math.sqrtl
+    libc.src.math.tan
+    libc.src.math.tanf
+    libc.src.math.tanhf
+    libc.src.math.totalorder
+    libc.src.math.totalorderf
+    libc.src.math.totalorderl
+    libc.src.math.totalordermag
+    libc.src.math.totalordermagf
+    libc.src.math.totalordermagl
+    libc.src.math.trunc
+    libc.src.math.truncf
+    libc.src.math.truncl
+    libc.src.math.ufromfp
+    libc.src.math.ufromfpf
+    libc.src.math.ufromfpl
+    libc.src.math.ufromfpx
+    libc.src.math.ufromfpxf
+    libc.src.math.ufromfpxl
+)
+
+if(LIBC_TYPES_HAS_CFLOAT16)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # complex.h C23 _Complex _Float16 entrypoints
+    libc.src.complex.crealf16
+    libc.src.complex.cimagf16
+    libc.src.complex.conjf16
+    libc.src.complex.cprojf16
+  )
+endif()
+
+if(LIBC_TYPES_HAS_FLOAT16)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # math.h C23 _Float16 entrypoints
+    libc.src.math.acosf16
+    libc.src.math.acoshf16
+    libc.src.math.asinf16
+    libc.src.math.asinhf16
+    libc.src.math.canonicalizef16
+    libc.src.math.ceilf16
+    libc.src.math.copysignf16
+    libc.src.math.cosf16
+    libc.src.math.coshf16
+    libc.src.math.cospif16
+    libc.src.math.exp10f16
+    libc.src.math.exp10m1f16
+    libc.src.math.exp2f16
+    libc.src.math.exp2m1f16
+    libc.src.math.expf16
+    libc.src.math.expm1f16
+    libc.src.math.f16add
+    libc.src.math.f16addf
+    libc.src.math.f16addl
+    libc.src.math.f16div
+    libc.src.math.f16divf
+    libc.src.math.f16divl
+    libc.src.math.f16fma
+    libc.src.math.f16fmaf
+    libc.src.math.f16fmal
+    libc.src.math.f16mul
+    libc.src.math.f16mulf
+    libc.src.math.f16mull
+    libc.src.math.f16sqrt
+    libc.src.math.f16sqrtf
+    libc.src.math.f16sqrtl
+    libc.src.math.f16sub
+    libc.src.math.f16subf
+    libc.src.math.f16subl
+    libc.src.math.fabsf16
+    libc.src.math.fdimf16
+    libc.src.math.floorf16
+    libc.src.math.fmaf16
+    libc.src.math.fmaxf16
+    libc.src.math.fmaximum_mag_numf16
+    libc.src.math.fmaximum_magf16
+    libc.src.math.fmaximum_numf16
+    libc.src.math.fmaximumf16
+    libc.src.math.fminf16
+    libc.src.math.fminimum_mag_numf16
+    libc.src.math.fminimum_magf16
+    libc.src.math.fminimum_numf16
+    libc.src.math.fminimumf16
+    libc.src.math.fmodf16
+    libc.src.math.frexpf16
+    libc.src.math.fromfpf16
+    libc.src.math.fromfpxf16
+    libc.src.math.getpayloadf16
+    libc.src.math.hypotf16
+    libc.src.math.ilogbf16
+    libc.src.math.iscanonicalf16
+    libc.src.math.issignalingf16
+    libc.src.math.ldexpf16
+    libc.src.math.llogbf16
+    libc.src.math.llrintf16
+    libc.src.math.llroundf16
+    libc.src.math.log10f16
+    libc.src.math.log2f16
+    libc.src.math.logbf16
+    libc.src.math.logf16
+    libc.src.math.lrintf16
+    libc.src.math.lroundf16
+    libc.src.math.modff16
+    libc.src.math.nanf16
+    libc.src.math.nearbyintf16
+    libc.src.math.nextafterf16
+    libc.src.math.nextdownf16
+    libc.src.math.nexttowardf16
+    libc.src.math.nextupf16
+    libc.src.math.remainderf16
+    libc.src.math.remquof16
+    libc.src.math.rintf16
+    libc.src.math.roundevenf16
+    libc.src.math.roundf16
+    libc.src.math.scalblnf16
+    libc.src.math.scalbnf16
+    libc.src.math.setpayloadf16
+    libc.src.math.setpayloadsigf16
+    libc.src.math.sinf16
+    libc.src.math.sinhf16
+    libc.src.math.sinpif16
+    libc.src.math.sqrtf16
+    libc.src.math.tanf16
+    libc.src.math.tanhf16
+    libc.src.math.tanpif16
+    libc.src.math.totalorderf16
+    libc.src.math.totalordermagf16
+    libc.src.math.truncf16
+    libc.src.math.ufromfpf16
+    libc.src.math.ufromfpxf16
+  )
+
+  if(LIBC_TYPES_HAS_FLOAT128)
+    list(APPEND TARGET_LIBM_ENTRYPOINTS
+      # math.h C23 mixed _Float16 and _Float128 entrypoints
+      libc.src.math.f16addf128
+      libc.src.math.f16divf128
+      libc.src.math.f16fmaf128
+      libc.src.math.f16mulf128
+      libc.src.math.f16sqrtf128
+      libc.src.math.f16subf128
+    )
+  endif()
+endif()
+
+if(LIBC_TYPES_HAS_CFLOAT128)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # complex.h C23 _Complex _Float128 entrypoints
+    libc.src.complex.crealf128
+    libc.src.complex.cimagf128
+    libc.src.complex.conjf128
+    libc.src.complex.cprojf128
+  )
+endif()
+
+if(LIBC_TYPES_HAS_FLOAT128)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # math.h C23 _Float128 entrypoints
+    libc.src.math.atan2f128
+    libc.src.math.canonicalizef128
+    libc.src.math.ceilf128
+    libc.src.math.copysignf128
+    libc.src.math.daddf128
+    libc.src.math.ddivf128
+    libc.src.math.dfmaf128
+    libc.src.math.dmulf128
+    libc.src.math.dsqrtf128
+    libc.src.math.dsubf128
+    libc.src.math.fabsf128
+    libc.src.math.faddf128
+    libc.src.math.fdimf128
+    libc.src.math.fdivf128
+    libc.src.math.ffmaf128
+    libc.src.math.floorf128
+    libc.src.math.fmaxf128
+    libc.src.math.fmaximum_mag_numf128
+    libc.src.math.fmaximum_magf128
+    libc.src.math.fmaximum_numf128
+    libc.src.math.fmaximumf128
+    libc.src.math.fminf128
+    libc.src.math.fminimum_mag_numf128
+    libc.src.math.fminimum_magf128
+    libc.src.math.fminimum_numf128
+    libc.src.math.fminimumf128
+    libc.src.math.fmodf128
+    libc.src.math.fmulf128
+    libc.src.math.frexpf128
+    libc.src.math.fromfpf128
+    libc.src.math.fromfpxf128
+    libc.src.math.fsqrtf128
+    libc.src.math.fsubf128
+    libc.src.math.getpayloadf128
+    libc.src.math.ilogbf128
+    libc.src.math.iscanonicalf128
+    libc.src.math.issignalingf128
+    libc.src.math.ldexpf128
+    libc.src.math.llogbf128
+    libc.src.math.llrintf128
+    libc.src.math.llroundf128
+    libc.src.math.logbf128
+    libc.src.math.lrintf128
+    libc.src.math.lroundf128
+    libc.src.math.modff128
+    libc.src.math.nanf128
+    libc.src.math.nearbyintf128
+    libc.src.math.nextafterf128
+    libc.src.math.nextdownf128
+    libc.src.math.nextupf128
+    libc.src.math.remainderf128
+    libc.src.math.remquof128
+    libc.src.math.rintf128
+    libc.src.math.roundevenf128
+    libc.src.math.roundf128
+    libc.src.math.scalblnf128
+    libc.src.math.scalbnf128
+    libc.src.math.setpayloadf128
+    libc.src.math.setpayloadsigf128
+    libc.src.math.sqrtf128
+    libc.src.math.totalorderf128
+    libc.src.math.totalordermagf128
+    libc.src.math.truncf128
+    libc.src.math.ufromfpf128
+    libc.src.math.ufromfpxf128
+  )
+endif()
+
+list(APPEND TARGET_LIBM_ENTRYPOINTS
+  # bfloat16 entrypoints
+  libc.src.math.bf16add
+  libc.src.math.bf16addf
+  libc.src.math.bf16addl
+  libc.src.math.bf16div
+  libc.src.math.bf16divf
+  libc.src.math.bf16divl
+  libc.src.math.bf16fma
+  libc.src.math.bf16fmaf
+  libc.src.math.bf16fmal
+  libc.src.math.bf16mul
+  libc.src.math.bf16mulf
+  libc.src.math.bf16mull
+  libc.src.math.bf16sub
+  libc.src.math.bf16subf
+  libc.src.math.bf16subl
+  libc.src.math.canonicalizebf16
+  libc.src.math.ceilbf16
+  libc.src.math.copysignbf16
+  libc.src.math.fabsbf16
+  libc.src.math.fdimbf16
+  libc.src.math.floorbf16
+  libc.src.math.fmaxbf16
+  libc.src.math.fmaximumbf16
+  libc.src.math.fmaximum_magbf16
+  libc.src.math.fmaximum_mag_numbf16
+  libc.src.math.fmaximum_numbf16
+  libc.src.math.fminbf16
+  libc.src.math.fminimumbf16
+  libc.src.math.fminimum_magbf16
+  libc.src.math.fminimum_mag_numbf16
+  libc.src.math.fminimum_numbf16
+  libc.src.math.fmodbf16
+  libc.src.math.frexpbf16
+  libc.src.math.fromfpbf16
+  libc.src.math.fromfpxbf16
+  libc.src.math.getpayloadbf16
+  libc.src.math.ilogbbf16
+  libc.src.math.iscanonicalbf16
+  libc.src.math.issignalingbf16
+  libc.src.math.ldexpbf16
+  libc.src.math.llogbbf16
+  libc.src.math.llrintbf16
+  libc.src.math.llroundbf16
+  libc.src.math.log_bf16
+  libc.src.math.logbbf16
+  libc.src.math.lrintbf16
+  libc.src.math.lroundbf16
+  libc.src.math.modfbf16
+  libc.src.math.nanbf16
+  libc.src.math.nearbyintbf16
+  libc.src.math.nextafterbf16
+  libc.src.math.nextdownbf16
+  libc.src.math.nexttowardbf16
+  libc.src.math.nextupbf16
+  libc.src.math.remainderbf16
+  libc.src.math.remquobf16
+  libc.src.math.rintbf16
+  libc.src.math.roundbf16
+  libc.src.math.roundevenbf16
+  libc.src.math.scalblnbf16
+  libc.src.math.scalbnbf16
+  libc.src.math.setpayloadbf16
+  libc.src.math.setpayloadsigbf16
+  libc.src.math.sqrtbf16
+  libc.src.math.truncbf16
+  libc.src.math.totalorderbf16
+  libc.src.math.totalordermagbf16
+  libc.src.math.ufromfpbf16
+  libc.src.math.ufromfpxbf16
+)
+
+if(LIBC_TYPES_HAS_FLOAT128)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # math.h C++23 mixed bfloat16 and _Float128 entrypoints
+    libc.src.math.bf16addf128
+    libc.src.math.bf16divf128
+    libc.src.math.bf16fmaf128
+    libc.src.math.bf16mulf128
+    libc.src.math.bf16subf128
+  )
+endif()
+
+if(LIBC_COMPILER_HAS_FIXED_POINT)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # stdfix.h _Fract and _Accum entrypoints
+    libc.src.stdfix.abshk
+    libc.src.stdfix.abshr
+    libc.src.stdfix.absk
+    libc.src.stdfix.abslk
+    libc.src.stdfix.abslr
+    libc.src.stdfix.absr
+    libc.src.stdfix.exphk
+    libc.src.stdfix.expk
+    libc.src.stdfix.roundhk
+    libc.src.stdfix.roundhr
+    libc.src.stdfix.roundk
+    libc.src.stdfix.roundlk
+    libc.src.stdfix.roundlr
+    libc.src.stdfix.roundr
+    libc.src.stdfix.rounduhk
+    libc.src.stdfix.rounduhr
+    libc.src.stdfix.rounduk
+    libc.src.stdfix.roundulk
+    libc.src.stdfix.roundulr
+    libc.src.stdfix.roundur
+    libc.src.stdfix.sqrtuhk
+    libc.src.stdfix.sqrtuhr
+    libc.src.stdfix.sqrtuk
+    libc.src.stdfix.sqrtur
+    # libc.src.stdfix.sqrtulk
+    libc.src.stdfix.sqrtulr
+    libc.src.stdfix.uhksqrtus
+    libc.src.stdfix.uksqrtui
+    libc.src.stdfix.hrbits
+    libc.src.stdfix.uhrbits
+    libc.src.stdfix.rbits
+    libc.src.stdfix.urbits
+    libc.src.stdfix.lrbits
+    libc.src.stdfix.ulrbits
+    libc.src.stdfix.hkbits
+    libc.src.stdfix.uhkbits
+    libc.src.stdfix.kbits
+    libc.src.stdfix.ukbits
+    libc.src.stdfix.lkbits
+    libc.src.stdfix.ulkbits
+    libc.src.stdfix.bitshr
+    libc.src.stdfix.bitsr
+    libc.src.stdfix.bitslr
+    libc.src.stdfix.bitshk
+    libc.src.stdfix.bitsk
+    libc.src.stdfix.bitslk
+    libc.src.stdfix.bitsuhr
+    libc.src.stdfix.bitsur
+    libc.src.stdfix.bitsulr
+    libc.src.stdfix.bitsuhk
+    libc.src.stdfix.bitsuk
+    libc.src.stdfix.bitsulk
+    libc.src.stdfix.countlshr
+    libc.src.stdfix.countlsr
+    libc.src.stdfix.countlslr
+    libc.src.stdfix.countlshk
+    libc.src.stdfix.countlsk
+    libc.src.stdfix.countlslk
+    libc.src.stdfix.countlsuhr
+    libc.src.stdfix.countlsur
+    libc.src.stdfix.countlsulr
+    libc.src.stdfix.countlsuhk
+    libc.src.stdfix.countlsuk
+    libc.src.stdfix.countlsulk
+    libc.src.stdfix.idivr
+    libc.src.stdfix.idivlr
+    libc.src.stdfix.idivk
+    libc.src.stdfix.idivlk
+    libc.src.stdfix.idivur
+    libc.src.stdfix.idivulr
+    libc.src.stdfix.idivuk
+    libc.src.stdfix.idivulk
+  )
+endif()
+
+set(TARGET_LLVMLIBC_ENTRYPOINTS
+  ${TARGET_LIBC_ENTRYPOINTS}
+  ${TARGET_LIBM_ENTRYPOINTS}
+)

>From 868c4689fec2aadb32c40d75f39df506936c5d25 Mon Sep 17 00:00:00 2001
From: Sukumarsawant <sawantsukumar at gmail.com>
Date: Mon, 9 Feb 2026 18:46:46 +0530
Subject: [PATCH 03/43] crlf-lf 2

---
 libc/config/baremetal/riscv/entrypoints.txt | 1884 ++++++-------
 libc/config/darwin/aarch64/entrypoints.txt  | 1496 +++++-----
 libc/config/darwin/x86_64/entrypoints.txt   |  622 ++--
 libc/config/gpu/amdgpu/entrypoints.txt      | 1388 ++++-----
 libc/config/gpu/nvptx/entrypoints.txt       | 1392 ++++-----
 libc/config/linux/aarch64/entrypoints.txt   | 2370 ++++++++--------
 libc/config/linux/arm/entrypoints.txt       | 1076 +++----
 libc/config/linux/riscv/entrypoints.txt     | 2664 +++++++++---------
 libc/config/linux/x86_64/entrypoints.txt    | 2806 +++++++++----------
 libc/config/windows/entrypoints.txt         |  770 ++---
 10 files changed, 8234 insertions(+), 8234 deletions(-)

diff --git a/libc/config/baremetal/riscv/entrypoints.txt b/libc/config/baremetal/riscv/entrypoints.txt
index 7cad3f33c2980..88c8f8d036669 100644
--- a/libc/config/baremetal/riscv/entrypoints.txt
+++ b/libc/config/baremetal/riscv/entrypoints.txt
@@ -1,942 +1,942 @@
-set(TARGET_LIBC_ENTRYPOINTS
-    # assert.h entrypoints
-    libc.src.assert.__assert_fail
-
-    # compiler entrypoints (no corresponding header)
-    libc.src.compiler.__stack_chk_fail
-
-    # ctype.h entrypoints
-    libc.src.ctype.isalnum
-    libc.src.ctype.isalpha
-    libc.src.ctype.isascii
-    libc.src.ctype.isblank
-    libc.src.ctype.iscntrl
-    libc.src.ctype.isdigit
-    libc.src.ctype.isgraph
-    libc.src.ctype.islower
-    libc.src.ctype.isprint
-    libc.src.ctype.ispunct
-    libc.src.ctype.isspace
-    libc.src.ctype.isupper
-    libc.src.ctype.isxdigit
-    libc.src.ctype.toascii
-    libc.src.ctype.tolower
-    libc.src.ctype.toupper
-
-    # ctype.h entrypoints
-    libc.src.ctype.isalnum_l
-    libc.src.ctype.isalpha_l
-    libc.src.ctype.isblank_l
-    libc.src.ctype.iscntrl_l
-    libc.src.ctype.isdigit_l
-    libc.src.ctype.isgraph_l
-    libc.src.ctype.islower_l
-    libc.src.ctype.isprint_l
-    libc.src.ctype.ispunct_l
-    libc.src.ctype.isspace_l
-    libc.src.ctype.isupper_l
-    libc.src.ctype.isxdigit_l
-    libc.src.ctype.tolower_l
-    libc.src.ctype.toupper_l
-
-    # errno.h entrypoints
-    libc.src.errno.errno
-
-    # locale.h entrypoints
-    libc.src.locale.localeconv
-    libc.src.locale.duplocale
-    libc.src.locale.freelocale
-    libc.src.locale.localeconv
-    libc.src.locale.newlocale
-    libc.src.locale.setlocale
-    libc.src.locale.uselocale
-
-    # setjmp.h entrypoints
-    # libc.src.setjmp.longjmp
-    # libc.src.setjmp.setjmp
-
-    # string.h entrypoints
-    libc.src.string.memccpy
-    libc.src.string.memchr
-    libc.src.string.memcmp
-    libc.src.string.memcpy
-    libc.src.string.memmem
-    libc.src.string.memmove
-    libc.src.string.mempcpy
-    libc.src.string.memrchr
-    libc.src.string.memset
-    libc.src.string.memset_explicit
-    libc.src.string.stpcpy
-    libc.src.string.stpncpy
-    libc.src.string.strcasestr
-    libc.src.string.strcat
-    libc.src.string.strchr
-    libc.src.string.strchrnul
-    libc.src.string.strcmp
-    libc.src.string.strcoll
-    libc.src.string.strcpy
-    libc.src.string.strcspn
-    libc.src.string.strdup
-    libc.src.string.strerror
-    libc.src.string.strerror_r
-    libc.src.string.strlcat
-    libc.src.string.strlcpy
-    libc.src.string.strlen
-    libc.src.string.strncat
-    libc.src.string.strncmp
-    libc.src.string.strncpy
-    libc.src.string.strndup
-    libc.src.string.strnlen
-    libc.src.string.strpbrk
-    libc.src.string.strrchr
-    libc.src.string.strsep
-    libc.src.string.strspn
-    libc.src.string.strstr
-    libc.src.string.strtok
-    libc.src.string.strtok_r
-    libc.src.string.strxfrm
-
-    # string.h entrypoints
-    libc.src.string.strcoll_l
-    libc.src.string.strxfrm_l
-
-    # strings.h entrypoints
-    libc.src.strings.bcmp
-    libc.src.strings.bcopy
-    libc.src.strings.bzero
-    libc.src.strings.ffs
-    libc.src.strings.ffsl
-    libc.src.strings.ffsll
-    libc.src.strings.index
-    libc.src.strings.rindex
-    libc.src.strings.strcasecmp
-    libc.src.strings.strncasecmp
-
-    # strings.h entrypoints
-    libc.src.strings.strcasecmp_l
-    libc.src.strings.strncasecmp_l
-
-    # inttypes.h entrypoints
-    libc.src.inttypes.imaxabs
-    libc.src.inttypes.imaxdiv
-    libc.src.inttypes.strtoimax
-    libc.src.inttypes.strtoumax
-
-    # stdio.h entrypoints
-    libc.src.stdio.asprintf
-    libc.src.stdio.feof
-    libc.src.stdio.ferror
-    libc.src.stdio.fgetc
-    libc.src.stdio.fgets
-    libc.src.stdio.fprintf
-    libc.src.stdio.fputc
-    libc.src.stdio.fputs
-    libc.src.stdio.fread
-    libc.src.stdio.fscanf
-    libc.src.stdio.fwrite
-    libc.src.stdio.getchar
-    libc.src.stdio.printf
-    libc.src.stdio.putc
-    libc.src.stdio.putchar
-    libc.src.stdio.puts
-    libc.src.stdio.remove
-    libc.src.stdio.scanf
-    libc.src.stdio.snprintf
-    libc.src.stdio.sprintf
-    libc.src.stdio.sscanf
-    libc.src.stdio.vasprintf
-    libc.src.stdio.vfprintf
-    libc.src.stdio.vfscanf
-    libc.src.stdio.vprintf
-    libc.src.stdio.vscanf
-    libc.src.stdio.vsnprintf
-    libc.src.stdio.vsprintf
-    libc.src.stdio.vsscanf
-
-    # stdbit.h entrypoints
-    libc.src.stdbit.stdc_bit_ceil_uc
-    libc.src.stdbit.stdc_bit_ceil_ui
-    libc.src.stdbit.stdc_bit_ceil_ul
-    libc.src.stdbit.stdc_bit_ceil_ull
-    libc.src.stdbit.stdc_bit_ceil_us
-    libc.src.stdbit.stdc_bit_floor_uc
-    libc.src.stdbit.stdc_bit_floor_ui
-    libc.src.stdbit.stdc_bit_floor_ul
-    libc.src.stdbit.stdc_bit_floor_ull
-    libc.src.stdbit.stdc_bit_floor_us
-    libc.src.stdbit.stdc_bit_width_uc
-    libc.src.stdbit.stdc_bit_width_ui
-    libc.src.stdbit.stdc_bit_width_ul
-    libc.src.stdbit.stdc_bit_width_ull
-    libc.src.stdbit.stdc_bit_width_us
-    libc.src.stdbit.stdc_count_ones_uc
-    libc.src.stdbit.stdc_count_ones_ui
-    libc.src.stdbit.stdc_count_ones_ul
-    libc.src.stdbit.stdc_count_ones_ull
-    libc.src.stdbit.stdc_count_ones_us
-    libc.src.stdbit.stdc_count_zeros_uc
-    libc.src.stdbit.stdc_count_zeros_ui
-    libc.src.stdbit.stdc_count_zeros_ul
-    libc.src.stdbit.stdc_count_zeros_ull
-    libc.src.stdbit.stdc_count_zeros_us
-    libc.src.stdbit.stdc_first_leading_one_uc
-    libc.src.stdbit.stdc_first_leading_one_ui
-    libc.src.stdbit.stdc_first_leading_one_ul
-    libc.src.stdbit.stdc_first_leading_one_ull
-    libc.src.stdbit.stdc_first_leading_one_us
-    libc.src.stdbit.stdc_first_leading_zero_uc
-    libc.src.stdbit.stdc_first_leading_zero_ui
-    libc.src.stdbit.stdc_first_leading_zero_ul
-    libc.src.stdbit.stdc_first_leading_zero_ull
-    libc.src.stdbit.stdc_first_leading_zero_us
-    libc.src.stdbit.stdc_first_trailing_one_uc
-    libc.src.stdbit.stdc_first_trailing_one_ui
-    libc.src.stdbit.stdc_first_trailing_one_ul
-    libc.src.stdbit.stdc_first_trailing_one_ull
-    libc.src.stdbit.stdc_first_trailing_one_us
-    libc.src.stdbit.stdc_first_trailing_zero_uc
-    libc.src.stdbit.stdc_first_trailing_zero_ui
-    libc.src.stdbit.stdc_first_trailing_zero_ul
-    libc.src.stdbit.stdc_first_trailing_zero_ull
-    libc.src.stdbit.stdc_first_trailing_zero_us
-    libc.src.stdbit.stdc_has_single_bit_uc
-    libc.src.stdbit.stdc_has_single_bit_ui
-    libc.src.stdbit.stdc_has_single_bit_ul
-    libc.src.stdbit.stdc_has_single_bit_ull
-    libc.src.stdbit.stdc_has_single_bit_us
-    libc.src.stdbit.stdc_leading_ones_uc
-    libc.src.stdbit.stdc_leading_ones_ui
-    libc.src.stdbit.stdc_leading_ones_ul
-    libc.src.stdbit.stdc_leading_ones_ull
-    libc.src.stdbit.stdc_leading_ones_us
-    libc.src.stdbit.stdc_leading_zeros_uc
-    libc.src.stdbit.stdc_leading_zeros_ui
-    libc.src.stdbit.stdc_leading_zeros_ul
-    libc.src.stdbit.stdc_leading_zeros_ull
-    libc.src.stdbit.stdc_leading_zeros_us
-    libc.src.stdbit.stdc_trailing_ones_uc
-    libc.src.stdbit.stdc_trailing_ones_ui
-    libc.src.stdbit.stdc_trailing_ones_ul
-    libc.src.stdbit.stdc_trailing_ones_ull
-    libc.src.stdbit.stdc_trailing_ones_us
-    libc.src.stdbit.stdc_trailing_zeros_uc
-    libc.src.stdbit.stdc_trailing_zeros_ui
-    libc.src.stdbit.stdc_trailing_zeros_ul
-    libc.src.stdbit.stdc_trailing_zeros_ull
-    libc.src.stdbit.stdc_trailing_zeros_us
-
-    # stdlib.h entrypoints
-    libc.src.stdlib._Exit
-    libc.src.stdlib.a64l
-    libc.src.stdlib.abort
-    libc.src.stdlib.abs
-    libc.src.stdlib.aligned_alloc
-    libc.src.stdlib.atexit
-    libc.src.stdlib.atof
-    libc.src.stdlib.atoi
-    libc.src.stdlib.atol
-    libc.src.stdlib.atoll
-    libc.src.stdlib.bsearch
-    libc.src.stdlib.calloc
-    libc.src.stdlib.div
-    libc.src.stdlib.exit
-    libc.src.stdlib.free
-    libc.src.stdlib.l64a
-    libc.src.stdlib.labs
-    libc.src.stdlib.ldiv
-    libc.src.stdlib.llabs
-    libc.src.stdlib.lldiv
-    libc.src.stdlib.malloc
-    libc.src.stdlib.memalignment
-    libc.src.stdlib.qsort
-    libc.src.stdlib.qsort_r
-    libc.src.stdlib.rand
-    libc.src.stdlib.realloc
-    libc.src.stdlib.srand
-    # libc.src.stdlib.strfromd
-    # libc.src.stdlib.strfromf
-    # libc.src.stdlib.strfroml
-    libc.src.stdlib.strtod
-    libc.src.stdlib.strtof
-    libc.src.stdlib.strtol
-    libc.src.stdlib.strtold
-    libc.src.stdlib.strtoll
-    libc.src.stdlib.strtoul
-    libc.src.stdlib.strtoull
-
-    # stdlib.h entrypoints
-    libc.src.stdlib.strtod_l
-    libc.src.stdlib.strtof_l
-    libc.src.stdlib.strtol_l
-    libc.src.stdlib.strtold_l
-    libc.src.stdlib.strtoll_l
-    libc.src.stdlib.strtoul_l
-    libc.src.stdlib.strtoull_l
-
-    # time.h entrypoints
-    libc.src.time.asctime
-    libc.src.time.asctime_r
-    libc.src.time.clock
-    libc.src.time.ctime
-    libc.src.time.ctime_r
-    libc.src.time.difftime
-    libc.src.time.gmtime
-    libc.src.time.gmtime_r
-    libc.src.time.localtime
-    libc.src.time.localtime_r
-    libc.src.time.mktime
-    libc.src.time.strftime
-    libc.src.time.strftime_l
-    libc.src.time.timespec_get
-
-    # wchar.h entrypoints
-    libc.src.wchar.btowc
-    libc.src.wchar.wcslen
-    libc.src.wchar.wctob
-
-    # wctype.h entrypoints
-    libc.src.wctype.iswalpha
-
-    # internal entrypoints
-    libc.startup.baremetal.init
-    libc.startup.baremetal.fini
-)
-
-set(TARGET_LIBM_ENTRYPOINTS
-    # complex.h entrypoints
-    libc.src.complex.creal
-    libc.src.complex.crealf
-    libc.src.complex.creall
-    libc.src.complex.cimag
-    libc.src.complex.cimagf
-    libc.src.complex.cimagl
-    libc.src.complex.conj
-    libc.src.complex.conjf
-    libc.src.complex.conjl
-    libc.src.complex.cproj
-    libc.src.complex.cprojf
-    libc.src.complex.cprojl
-
-    # fenv.h entrypoints
-    libc.src.fenv.feclearexcept
-    libc.src.fenv.fedisableexcept
-    libc.src.fenv.feenableexcept
-    libc.src.fenv.fegetenv
-    libc.src.fenv.fegetexcept
-    libc.src.fenv.fegetexceptflag
-    libc.src.fenv.fegetround
-    libc.src.fenv.feholdexcept
-    libc.src.fenv.feraiseexcept
-    libc.src.fenv.fesetenv
-    libc.src.fenv.fesetexcept
-    libc.src.fenv.fesetexceptflag
-    libc.src.fenv.fesetround
-    libc.src.fenv.fetestexcept
-    libc.src.fenv.fetestexceptflag
-    libc.src.fenv.feupdateenv
-
-    # math.h entrypoints
-    libc.src.math.acosf
-    libc.src.math.acoshf
-    libc.src.math.asinf
-    libc.src.math.asinhf
-    libc.src.math.atan2
-    libc.src.math.atan2f
-    # libc.src.math.atan2l
-    libc.src.math.atan
-    libc.src.math.atanf
-    libc.src.math.atanhf
-    libc.src.math.canonicalize
-    libc.src.math.canonicalizef
-    libc.src.math.canonicalizel
-    libc.src.math.cbrt
-    libc.src.math.cbrtf
-    libc.src.math.ceil
-    libc.src.math.ceilf
-    libc.src.math.ceill
-    libc.src.math.copysign
-    libc.src.math.copysignf
-    libc.src.math.copysignl
-    libc.src.math.cos
-    libc.src.math.cosf
-    libc.src.math.coshf
-    libc.src.math.cospif
-    libc.src.math.dfmal
-    libc.src.math.dmull
-    libc.src.math.dsqrtl
-    libc.src.math.daddl
-    libc.src.math.ddivl
-    libc.src.math.dsubl
-    libc.src.math.erff
-    libc.src.math.exp
-    libc.src.math.exp10
-    libc.src.math.exp10f
-    libc.src.math.exp10m1f
-    libc.src.math.exp2
-    libc.src.math.exp2f
-    libc.src.math.exp2m1f
-    libc.src.math.expf
-    libc.src.math.expm1
-    libc.src.math.expm1f
-    libc.src.math.fabs
-    libc.src.math.fabsf
-    libc.src.math.fabsl
-    libc.src.math.fadd
-    libc.src.math.faddl
-    libc.src.math.fadd
-    libc.src.math.fdim
-    libc.src.math.fdimf
-    libc.src.math.fdiml
-    libc.src.math.fdiv
-    libc.src.math.fdivl
-    libc.src.math.ffma
-    libc.src.math.ffmal
-    libc.src.math.floor
-    libc.src.math.floorf
-    libc.src.math.floorl
-    libc.src.math.fma
-    libc.src.math.fmabf16
-    libc.src.math.fmaf
-    libc.src.math.fmax
-    libc.src.math.fmaxf
-    libc.src.math.fmaximum
-    libc.src.math.fmaximum_mag
-    libc.src.math.fmaximum_mag_num
-    libc.src.math.fmaximum_mag_numf
-    libc.src.math.fmaximum_mag_numl
-    libc.src.math.fmaximum_magf
-    libc.src.math.fmaximum_magl
-    libc.src.math.fmaximum_num
-    libc.src.math.fmaximum_numf
-    libc.src.math.fmaximum_numl
-    libc.src.math.fmaximumf
-    libc.src.math.fmaximuml
-    libc.src.math.fmaxl
-    libc.src.math.fmin
-    libc.src.math.fminf
-    libc.src.math.fminimum
-    libc.src.math.fminimum_mag
-    libc.src.math.fminimum_mag_num
-    libc.src.math.fminimum_mag_numf
-    libc.src.math.fminimum_mag_numl
-    libc.src.math.fminimum_magf
-    libc.src.math.fminimum_magl
-    libc.src.math.fminimum_num
-    libc.src.math.fminimum_numf
-    libc.src.math.fminimum_numl
-    libc.src.math.fminimumf
-    libc.src.math.fminimuml
-    libc.src.math.fminl
-    libc.src.math.fmod
-    libc.src.math.fmodf
-    # libc.src.math.fmodl
-    libc.src.math.fmul
-    libc.src.math.fmull
-    libc.src.math.frexp
-    libc.src.math.frexpf
-    libc.src.math.frexpl
-    libc.src.math.fromfp
-    libc.src.math.fromfpf
-    libc.src.math.fromfpl
-    libc.src.math.fromfpx
-    libc.src.math.fromfpxf
-    libc.src.math.fromfpxl
-    libc.src.math.fsqrt
-    libc.src.math.fsqrtl
-    libc.src.math.fsub
-    libc.src.math.fsubl
-    libc.src.math.getpayload
-    libc.src.math.getpayloadf
-    libc.src.math.getpayloadl
-    libc.src.math.hypot
-    libc.src.math.hypotf
-    libc.src.math.ilogb
-    libc.src.math.ilogbf
-    libc.src.math.ilogbl
-    libc.src.math.iscanonical
-    libc.src.math.iscanonicalf
-    libc.src.math.iscanonicall
-    libc.src.math.isnan
-    libc.src.math.isnanf
-    libc.src.math.isnanl
-    libc.src.math.issignaling
-    libc.src.math.issignalingf
-    libc.src.math.issignalingl
-    libc.src.math.ldexp
-    libc.src.math.ldexpf
-    libc.src.math.ldexpl
-    libc.src.math.llogb
-    libc.src.math.llogbf
-    libc.src.math.llogbl
-    libc.src.math.llrint
-    libc.src.math.llrintf
-    libc.src.math.llrintl
-    libc.src.math.llround
-    libc.src.math.llroundf
-    libc.src.math.llroundl
-    libc.src.math.log
-    libc.src.math.log10
-    libc.src.math.log10f
-    libc.src.math.log1p
-    libc.src.math.log1pf
-    libc.src.math.log2
-    libc.src.math.log2f
-    libc.src.math.logb
-    libc.src.math.logbf
-    libc.src.math.logbl
-    libc.src.math.logf
-    libc.src.math.lrint
-    libc.src.math.lrintf
-    libc.src.math.lrintl
-    libc.src.math.lround
-    libc.src.math.lroundf
-    libc.src.math.lroundl
-    libc.src.math.modf
-    libc.src.math.modff
-    libc.src.math.modfl
-    libc.src.math.nan
-    libc.src.math.nanf
-    libc.src.math.nanl
-    libc.src.math.nearbyint
-    libc.src.math.nearbyintf
-    libc.src.math.nearbyintl
-    libc.src.math.nextafter
-    libc.src.math.nextafterf
-    libc.src.math.nextafterl
-    libc.src.math.nextdown
-    libc.src.math.nextdownf
-    libc.src.math.nextdownl
-    libc.src.math.nexttoward
-    libc.src.math.nexttowardf
-    libc.src.math.nexttowardl
-    libc.src.math.nextup
-    libc.src.math.nextupf
-    libc.src.math.nextupl
-    libc.src.math.pow
-    libc.src.math.powf
-    libc.src.math.remainder
-    libc.src.math.remainderf
-    libc.src.math.remainderl
-    libc.src.math.remquo
-    libc.src.math.remquof
-    libc.src.math.remquol
-    libc.src.math.rint
-    libc.src.math.rintf
-    libc.src.math.rintl
-    libc.src.math.round
-    libc.src.math.roundeven
-    libc.src.math.roundevenf
-    libc.src.math.roundevenl
-    libc.src.math.roundf
-    libc.src.math.roundl
-    libc.src.math.scalbln
-    libc.src.math.scalblnf
-    libc.src.math.scalblnl
-    libc.src.math.scalbn
-    libc.src.math.scalbnf
-    libc.src.math.scalbnl
-    libc.src.math.setpayload
-    libc.src.math.setpayloadf
-    libc.src.math.setpayloadl
-    libc.src.math.setpayloadsig
-    libc.src.math.setpayloadsigf
-    libc.src.math.setpayloadsigl
-    libc.src.math.sin
-    libc.src.math.sincos
-    libc.src.math.sincosf
-    libc.src.math.sinf
-    libc.src.math.sinhf
-    libc.src.math.sinpif
-    libc.src.math.sqrt
-    libc.src.math.sqrtf
-    libc.src.math.sqrtl
-    libc.src.math.tan
-    libc.src.math.tanf
-    libc.src.math.tanhf
-    libc.src.math.totalorder
-    libc.src.math.totalorderf
-    libc.src.math.totalorderl
-    libc.src.math.totalordermag
-    libc.src.math.totalordermagf
-    libc.src.math.totalordermagl
-    libc.src.math.trunc
-    libc.src.math.truncf
-    libc.src.math.truncl
-    libc.src.math.ufromfp
-    libc.src.math.ufromfpf
-    libc.src.math.ufromfpl
-    libc.src.math.ufromfpx
-    libc.src.math.ufromfpxf
-    libc.src.math.ufromfpxl
-)
-
-if(LIBC_TYPES_HAS_CFLOAT16)
-  list(APPEND TARGET_LIBM_ENTRYPOINTS
-    # complex.h C23 _Complex _Float16 entrypoints
-    libc.src.complex.crealf16
-    libc.src.complex.cimagf16
-    libc.src.complex.conjf16
-    libc.src.complex.cprojf16
-  )
-endif()
-
-if(LIBC_TYPES_HAS_FLOAT16)
-  list(APPEND TARGET_LIBM_ENTRYPOINTS
-    # math.h C23 _Float16 entrypoints
-    libc.src.math.acosf16
-    libc.src.math.acoshf16
-    libc.src.math.asinf16
-    libc.src.math.asinhf16
-    libc.src.math.canonicalizef16
-    libc.src.math.ceilf16
-    libc.src.math.copysignf16
-    libc.src.math.cosf16
-    libc.src.math.coshf16
-    libc.src.math.cospif16
-    libc.src.math.exp10f16
-    libc.src.math.exp10m1f16
-    libc.src.math.exp2f16
-    libc.src.math.exp2m1f16
-    libc.src.math.expf16
-    libc.src.math.expm1f16
-    libc.src.math.f16add
-    libc.src.math.f16addf
-    libc.src.math.f16addl
-    libc.src.math.f16div
-    libc.src.math.f16divf
-    libc.src.math.f16divl
-    libc.src.math.f16fma
-    libc.src.math.f16fmaf
-    libc.src.math.f16fmal
-    libc.src.math.f16mul
-    libc.src.math.f16mulf
-    libc.src.math.f16mull
-    libc.src.math.f16sqrt
-    libc.src.math.f16sqrtf
-    libc.src.math.f16sqrtl
-    libc.src.math.f16sub
-    libc.src.math.f16subf
-    libc.src.math.f16subl
-    libc.src.math.fabsf16
-    libc.src.math.fdimf16
-    libc.src.math.floorf16
-    libc.src.math.fmaf16
-    libc.src.math.fmaxf16
-    libc.src.math.fmaximum_mag_numf16
-    libc.src.math.fmaximum_magf16
-    libc.src.math.fmaximum_numf16
-    libc.src.math.fmaximumf16
-    libc.src.math.fminf16
-    libc.src.math.fminimum_mag_numf16
-    libc.src.math.fminimum_magf16
-    libc.src.math.fminimum_numf16
-    libc.src.math.fminimumf16
-    libc.src.math.fmodf16
-    libc.src.math.frexpf16
-    libc.src.math.fromfpf16
-    libc.src.math.fromfpxf16
-    libc.src.math.getpayloadf16
-    libc.src.math.hypotf16
-    libc.src.math.ilogbf16
-    libc.src.math.iscanonicalf16
-    libc.src.math.issignalingf16
-    libc.src.math.ldexpf16
-    libc.src.math.llogbf16
-    libc.src.math.llrintf16
-    libc.src.math.llroundf16
-    libc.src.math.log10f16
-    libc.src.math.log2f16
-    libc.src.math.logbf16
-    libc.src.math.logf16
-    libc.src.math.lrintf16
-    libc.src.math.lroundf16
-    libc.src.math.modff16
-    libc.src.math.nanf16
-    libc.src.math.nearbyintf16
-    libc.src.math.nextafterf16
-    libc.src.math.nextdownf16
-    libc.src.math.nexttowardf16
-    libc.src.math.nextupf16
-    libc.src.math.remainderf16
-    libc.src.math.remquof16
-    libc.src.math.rintf16
-    libc.src.math.roundevenf16
-    libc.src.math.roundf16
-    libc.src.math.scalblnf16
-    libc.src.math.scalbnf16
-    libc.src.math.setpayloadf16
-    libc.src.math.setpayloadsigf16
-    libc.src.math.sinf16
-    libc.src.math.sinhf16
-    libc.src.math.sinpif16
-    libc.src.math.sqrtf16
-    libc.src.math.tanf16
-    libc.src.math.tanhf16
-    libc.src.math.tanpif16
-    libc.src.math.totalorderf16
-    libc.src.math.totalordermagf16
-    libc.src.math.truncf16
-    libc.src.math.ufromfpf16
-    libc.src.math.ufromfpxf16
-  )
-
-  if(LIBC_TYPES_HAS_FLOAT128)
-    list(APPEND TARGET_LIBM_ENTRYPOINTS
-      # math.h C23 mixed _Float16 and _Float128 entrypoints
-      libc.src.math.f16addf128
-      libc.src.math.f16divf128
-      libc.src.math.f16fmaf128
-      libc.src.math.f16mulf128
-      libc.src.math.f16sqrtf128
-      libc.src.math.f16subf128
-    )
-  endif()
-endif()
-
-if(LIBC_TYPES_HAS_CFLOAT128)
-  list(APPEND TARGET_LIBM_ENTRYPOINTS
-    # complex.h C23 _Complex _Float128 entrypoints
-    libc.src.complex.crealf128
-    libc.src.complex.cimagf128
-    libc.src.complex.conjf128
-    libc.src.complex.cprojf128
-  )
-endif()
-
-if(LIBC_TYPES_HAS_FLOAT128)
-  list(APPEND TARGET_LIBM_ENTRYPOINTS
-    # math.h C23 _Float128 entrypoints
-    libc.src.math.atan2f128
-    libc.src.math.canonicalizef128
-    libc.src.math.ceilf128
-    libc.src.math.copysignf128
-    libc.src.math.daddf128
-    libc.src.math.ddivf128
-    libc.src.math.dfmaf128
-    libc.src.math.dmulf128
-    libc.src.math.dsqrtf128
-    libc.src.math.dsubf128
-    libc.src.math.fabsf128
-    libc.src.math.faddf128
-    libc.src.math.fdimf128
-    libc.src.math.fdivf128
-    libc.src.math.ffmaf128
-    libc.src.math.floorf128
-    libc.src.math.fmaxf128
-    libc.src.math.fmaximum_mag_numf128
-    libc.src.math.fmaximum_magf128
-    libc.src.math.fmaximum_numf128
-    libc.src.math.fmaximumf128
-    libc.src.math.fminf128
-    libc.src.math.fminimum_mag_numf128
-    libc.src.math.fminimum_magf128
-    libc.src.math.fminimum_numf128
-    libc.src.math.fminimumf128
-    # libc.src.math.fmodf128
-    libc.src.math.fmulf128
-    libc.src.math.frexpf128
-    libc.src.math.fromfpf128
-    libc.src.math.fromfpxf128
-    libc.src.math.fsqrtf128
-    libc.src.math.fsubf128
-    libc.src.math.getpayloadf128
-    libc.src.math.ilogbf128
-    libc.src.math.iscanonicalf128
-    libc.src.math.issignalingf128
-    libc.src.math.ldexpf128
-    libc.src.math.llogbf128
-    libc.src.math.llrintf128
-    libc.src.math.llroundf128
-    libc.src.math.logbf128
-    libc.src.math.lrintf128
-    libc.src.math.lroundf128
-    libc.src.math.modff128
-    libc.src.math.nanf128
-    libc.src.math.nearbyintf128
-    libc.src.math.nextafterf128
-    libc.src.math.nextdownf128
-    libc.src.math.nextupf128
-    libc.src.math.remainderf128
-    libc.src.math.remquof128
-    libc.src.math.rintf128
-    libc.src.math.roundevenf128
-    libc.src.math.roundf128
-    libc.src.math.scalblnf128
-    libc.src.math.scalbnf128
-    libc.src.math.setpayloadf128
-    libc.src.math.setpayloadsigf128
-    libc.src.math.sqrtf128
-    libc.src.math.totalorderf128
-    libc.src.math.totalordermagf128
-    libc.src.math.truncf128
-    libc.src.math.ufromfpf128
-    libc.src.math.ufromfpxf128
-  )
-endif()
-
-list(APPEND TARGET_LIBM_ENTRYPOINTS
-  # bfloat16 entrypoints
-  libc.src.math.bf16add
-  libc.src.math.bf16addf
-  libc.src.math.bf16addl
-  libc.src.math.bf16div
-  libc.src.math.bf16divf
-  libc.src.math.bf16divl
-  libc.src.math.bf16fma
-  libc.src.math.bf16fmaf
-  libc.src.math.bf16fmal
-  libc.src.math.bf16mul
-  libc.src.math.bf16mulf
-  libc.src.math.bf16mull
-  libc.src.math.bf16sub
-  libc.src.math.bf16subf
-  libc.src.math.bf16subl
-  libc.src.math.canonicalizebf16
-  libc.src.math.ceilbf16
-  libc.src.math.copysignbf16
-  libc.src.math.fabsbf16
-  libc.src.math.fdimbf16
-  libc.src.math.floorbf16
-  libc.src.math.fmaxbf16
-  libc.src.math.fmaximumbf16
-  libc.src.math.fmaximum_magbf16
-  libc.src.math.fmaximum_mag_numbf16
-  libc.src.math.fmaximum_numbf16
-  libc.src.math.fminbf16
-  libc.src.math.fminimumbf16
-  libc.src.math.fminimum_magbf16
-  libc.src.math.fminimum_mag_numbf16
-  libc.src.math.fminimum_numbf16
-  libc.src.math.fmodbf16
-  libc.src.math.frexpbf16
-  libc.src.math.fromfpbf16
-  libc.src.math.fromfpxbf16
-  libc.src.math.getpayloadbf16
-  libc.src.math.ilogbbf16
-  libc.src.math.iscanonicalbf16
-  libc.src.math.issignalingbf16
-  libc.src.math.ldexpbf16
-  libc.src.math.llogbbf16
-  libc.src.math.llrintbf16
-  libc.src.math.llroundbf16
-  libc.src.math.log_bf16
-  libc.src.math.logbbf16
-  libc.src.math.lrintbf16
-  libc.src.math.lroundbf16
-  libc.src.math.modfbf16
-  libc.src.math.nanbf16
-  libc.src.math.nearbyintbf16
-  libc.src.math.nextafterbf16
-  libc.src.math.nextdownbf16
-  libc.src.math.nexttowardbf16
-  libc.src.math.nextupbf16
-  libc.src.math.remainderbf16
-  libc.src.math.remquobf16
-  libc.src.math.rintbf16
-  libc.src.math.roundbf16
-  libc.src.math.roundevenbf16
-  libc.src.math.scalblnbf16
-  libc.src.math.scalbnbf16
-  libc.src.math.setpayloadbf16
-  libc.src.math.setpayloadsigbf16
-  libc.src.math.sqrtbf16
-  libc.src.math.truncbf16
-  libc.src.math.totalorderbf16
-  libc.src.math.totalordermagbf16
-  libc.src.math.ufromfpbf16
-  libc.src.math.ufromfpxbf16
-)
-
-if(LIBC_TYPES_HAS_FLOAT128)
-  list(APPEND TARGET_LIBM_ENTRYPOINTS
-    # math.h C++23 mixed bfloat16 and _Float128 entrypoints
-    libc.src.math.bf16addf128
-    libc.src.math.bf16divf128
-    libc.src.math.bf16fmaf128
-    libc.src.math.bf16mulf128
-    libc.src.math.bf16subf128
-  )
-endif()
-
-if(LIBC_COMPILER_HAS_FIXED_POINT)
-  list(APPEND TARGET_LIBM_ENTRYPOINTS
-    # stdfix.h _Fract and _Accum entrypoints
-    libc.src.stdfix.abshk
-    libc.src.stdfix.abshr
-    libc.src.stdfix.absk
-    libc.src.stdfix.abslk
-    libc.src.stdfix.abslr
-    libc.src.stdfix.absr
-    libc.src.stdfix.exphk
-    libc.src.stdfix.expk
-    libc.src.stdfix.roundhk
-    libc.src.stdfix.roundhr
-    libc.src.stdfix.roundk
-    libc.src.stdfix.roundlk
-    libc.src.stdfix.roundlr
-    libc.src.stdfix.roundr
-    libc.src.stdfix.rounduhk
-    libc.src.stdfix.rounduhr
-    libc.src.stdfix.rounduk
-    libc.src.stdfix.roundulk
-    libc.src.stdfix.roundulr
-    libc.src.stdfix.roundur
-    libc.src.stdfix.sqrtuhk
-    libc.src.stdfix.sqrtuhr
-    libc.src.stdfix.sqrtuk
-    libc.src.stdfix.sqrtur
-    # libc.src.stdfix.sqrtulk
-    libc.src.stdfix.sqrtulr
-    libc.src.stdfix.uhksqrtus
-    libc.src.stdfix.uksqrtui
-    libc.src.stdfix.hrbits
-    libc.src.stdfix.uhrbits
-    libc.src.stdfix.rbits
-    libc.src.stdfix.urbits
-    libc.src.stdfix.lrbits
-    libc.src.stdfix.ulrbits
-    libc.src.stdfix.hkbits
-    libc.src.stdfix.uhkbits
-    libc.src.stdfix.kbits
-    libc.src.stdfix.ukbits
-    libc.src.stdfix.lkbits
-    libc.src.stdfix.ulkbits
-    libc.src.stdfix.bitshr
-    libc.src.stdfix.bitsr
-    libc.src.stdfix.bitslr
-    libc.src.stdfix.bitshk
-    libc.src.stdfix.bitsk
-    libc.src.stdfix.bitslk
-    libc.src.stdfix.bitsuhr
-    libc.src.stdfix.bitsur
-    libc.src.stdfix.bitsulr
-    libc.src.stdfix.bitsuhk
-    libc.src.stdfix.bitsuk
-    libc.src.stdfix.bitsulk
-    libc.src.stdfix.countlshr
-    libc.src.stdfix.countlsr
-    libc.src.stdfix.countlslr
-    libc.src.stdfix.countlshk
-    libc.src.stdfix.countlsk
-    libc.src.stdfix.countlslk
-    libc.src.stdfix.countlsuhr
-    libc.src.stdfix.countlsur
-    libc.src.stdfix.countlsulr
-    libc.src.stdfix.countlsuhk
-    libc.src.stdfix.countlsuk
-    libc.src.stdfix.countlsulk
-    libc.src.stdfix.idivr
-    libc.src.stdfix.idivlr
-    libc.src.stdfix.idivk
-    libc.src.stdfix.idivlk
-    libc.src.stdfix.idivur
-    libc.src.stdfix.idivulr
-    libc.src.stdfix.idivuk
-    libc.src.stdfix.idivulk
-  )
-endif()
-
-set(TARGET_LLVMLIBC_ENTRYPOINTS
-  ${TARGET_LIBC_ENTRYPOINTS}
-  ${TARGET_LIBM_ENTRYPOINTS}
-)
+set(TARGET_LIBC_ENTRYPOINTS
+    # assert.h entrypoints
+    libc.src.assert.__assert_fail
+
+    # compiler entrypoints (no corresponding header)
+    libc.src.compiler.__stack_chk_fail
+
+    # ctype.h entrypoints
+    libc.src.ctype.isalnum
+    libc.src.ctype.isalpha
+    libc.src.ctype.isascii
+    libc.src.ctype.isblank
+    libc.src.ctype.iscntrl
+    libc.src.ctype.isdigit
+    libc.src.ctype.isgraph
+    libc.src.ctype.islower
+    libc.src.ctype.isprint
+    libc.src.ctype.ispunct
+    libc.src.ctype.isspace
+    libc.src.ctype.isupper
+    libc.src.ctype.isxdigit
+    libc.src.ctype.toascii
+    libc.src.ctype.tolower
+    libc.src.ctype.toupper
+
+    # ctype.h entrypoints
+    libc.src.ctype.isalnum_l
+    libc.src.ctype.isalpha_l
+    libc.src.ctype.isblank_l
+    libc.src.ctype.iscntrl_l
+    libc.src.ctype.isdigit_l
+    libc.src.ctype.isgraph_l
+    libc.src.ctype.islower_l
+    libc.src.ctype.isprint_l
+    libc.src.ctype.ispunct_l
+    libc.src.ctype.isspace_l
+    libc.src.ctype.isupper_l
+    libc.src.ctype.isxdigit_l
+    libc.src.ctype.tolower_l
+    libc.src.ctype.toupper_l
+
+    # errno.h entrypoints
+    libc.src.errno.errno
+
+    # locale.h entrypoints
+    libc.src.locale.localeconv
+    libc.src.locale.duplocale
+    libc.src.locale.freelocale
+    libc.src.locale.localeconv
+    libc.src.locale.newlocale
+    libc.src.locale.setlocale
+    libc.src.locale.uselocale
+
+    # setjmp.h entrypoints
+    # libc.src.setjmp.longjmp
+    # libc.src.setjmp.setjmp
+
+    # string.h entrypoints
+    libc.src.string.memccpy
+    libc.src.string.memchr
+    libc.src.string.memcmp
+    libc.src.string.memcpy
+    libc.src.string.memmem
+    libc.src.string.memmove
+    libc.src.string.mempcpy
+    libc.src.string.memrchr
+    libc.src.string.memset
+    libc.src.string.memset_explicit
+    libc.src.string.stpcpy
+    libc.src.string.stpncpy
+    libc.src.string.strcasestr
+    libc.src.string.strcat
+    libc.src.string.strchr
+    libc.src.string.strchrnul
+    libc.src.string.strcmp
+    libc.src.string.strcoll
+    libc.src.string.strcpy
+    libc.src.string.strcspn
+    libc.src.string.strdup
+    libc.src.string.strerror
+    libc.src.string.strerror_r
+    libc.src.string.strlcat
+    libc.src.string.strlcpy
+    libc.src.string.strlen
+    libc.src.string.strncat
+    libc.src.string.strncmp
+    libc.src.string.strncpy
+    libc.src.string.strndup
+    libc.src.string.strnlen
+    libc.src.string.strpbrk
+    libc.src.string.strrchr
+    libc.src.string.strsep
+    libc.src.string.strspn
+    libc.src.string.strstr
+    libc.src.string.strtok
+    libc.src.string.strtok_r
+    libc.src.string.strxfrm
+
+    # string.h entrypoints
+    libc.src.string.strcoll_l
+    libc.src.string.strxfrm_l
+
+    # strings.h entrypoints
+    libc.src.strings.bcmp
+    libc.src.strings.bcopy
+    libc.src.strings.bzero
+    libc.src.strings.ffs
+    libc.src.strings.ffsl
+    libc.src.strings.ffsll
+    libc.src.strings.index
+    libc.src.strings.rindex
+    libc.src.strings.strcasecmp
+    libc.src.strings.strncasecmp
+
+    # strings.h entrypoints
+    libc.src.strings.strcasecmp_l
+    libc.src.strings.strncasecmp_l
+
+    # inttypes.h entrypoints
+    libc.src.inttypes.imaxabs
+    libc.src.inttypes.imaxdiv
+    libc.src.inttypes.strtoimax
+    libc.src.inttypes.strtoumax
+
+    # stdio.h entrypoints
+    libc.src.stdio.asprintf
+    libc.src.stdio.feof
+    libc.src.stdio.ferror
+    libc.src.stdio.fgetc
+    libc.src.stdio.fgets
+    libc.src.stdio.fprintf
+    libc.src.stdio.fputc
+    libc.src.stdio.fputs
+    libc.src.stdio.fread
+    libc.src.stdio.fscanf
+    libc.src.stdio.fwrite
+    libc.src.stdio.getchar
+    libc.src.stdio.printf
+    libc.src.stdio.putc
+    libc.src.stdio.putchar
+    libc.src.stdio.puts
+    libc.src.stdio.remove
+    libc.src.stdio.scanf
+    libc.src.stdio.snprintf
+    libc.src.stdio.sprintf
+    libc.src.stdio.sscanf
+    libc.src.stdio.vasprintf
+    libc.src.stdio.vfprintf
+    libc.src.stdio.vfscanf
+    libc.src.stdio.vprintf
+    libc.src.stdio.vscanf
+    libc.src.stdio.vsnprintf
+    libc.src.stdio.vsprintf
+    libc.src.stdio.vsscanf
+
+    # stdbit.h entrypoints
+    libc.src.stdbit.stdc_bit_ceil_uc
+    libc.src.stdbit.stdc_bit_ceil_ui
+    libc.src.stdbit.stdc_bit_ceil_ul
+    libc.src.stdbit.stdc_bit_ceil_ull
+    libc.src.stdbit.stdc_bit_ceil_us
+    libc.src.stdbit.stdc_bit_floor_uc
+    libc.src.stdbit.stdc_bit_floor_ui
+    libc.src.stdbit.stdc_bit_floor_ul
+    libc.src.stdbit.stdc_bit_floor_ull
+    libc.src.stdbit.stdc_bit_floor_us
+    libc.src.stdbit.stdc_bit_width_uc
+    libc.src.stdbit.stdc_bit_width_ui
+    libc.src.stdbit.stdc_bit_width_ul
+    libc.src.stdbit.stdc_bit_width_ull
+    libc.src.stdbit.stdc_bit_width_us
+    libc.src.stdbit.stdc_count_ones_uc
+    libc.src.stdbit.stdc_count_ones_ui
+    libc.src.stdbit.stdc_count_ones_ul
+    libc.src.stdbit.stdc_count_ones_ull
+    libc.src.stdbit.stdc_count_ones_us
+    libc.src.stdbit.stdc_count_zeros_uc
+    libc.src.stdbit.stdc_count_zeros_ui
+    libc.src.stdbit.stdc_count_zeros_ul
+    libc.src.stdbit.stdc_count_zeros_ull
+    libc.src.stdbit.stdc_count_zeros_us
+    libc.src.stdbit.stdc_first_leading_one_uc
+    libc.src.stdbit.stdc_first_leading_one_ui
+    libc.src.stdbit.stdc_first_leading_one_ul
+    libc.src.stdbit.stdc_first_leading_one_ull
+    libc.src.stdbit.stdc_first_leading_one_us
+    libc.src.stdbit.stdc_first_leading_zero_uc
+    libc.src.stdbit.stdc_first_leading_zero_ui
+    libc.src.stdbit.stdc_first_leading_zero_ul
+    libc.src.stdbit.stdc_first_leading_zero_ull
+    libc.src.stdbit.stdc_first_leading_zero_us
+    libc.src.stdbit.stdc_first_trailing_one_uc
+    libc.src.stdbit.stdc_first_trailing_one_ui
+    libc.src.stdbit.stdc_first_trailing_one_ul
+    libc.src.stdbit.stdc_first_trailing_one_ull
+    libc.src.stdbit.stdc_first_trailing_one_us
+    libc.src.stdbit.stdc_first_trailing_zero_uc
+    libc.src.stdbit.stdc_first_trailing_zero_ui
+    libc.src.stdbit.stdc_first_trailing_zero_ul
+    libc.src.stdbit.stdc_first_trailing_zero_ull
+    libc.src.stdbit.stdc_first_trailing_zero_us
+    libc.src.stdbit.stdc_has_single_bit_uc
+    libc.src.stdbit.stdc_has_single_bit_ui
+    libc.src.stdbit.stdc_has_single_bit_ul
+    libc.src.stdbit.stdc_has_single_bit_ull
+    libc.src.stdbit.stdc_has_single_bit_us
+    libc.src.stdbit.stdc_leading_ones_uc
+    libc.src.stdbit.stdc_leading_ones_ui
+    libc.src.stdbit.stdc_leading_ones_ul
+    libc.src.stdbit.stdc_leading_ones_ull
+    libc.src.stdbit.stdc_leading_ones_us
+    libc.src.stdbit.stdc_leading_zeros_uc
+    libc.src.stdbit.stdc_leading_zeros_ui
+    libc.src.stdbit.stdc_leading_zeros_ul
+    libc.src.stdbit.stdc_leading_zeros_ull
+    libc.src.stdbit.stdc_leading_zeros_us
+    libc.src.stdbit.stdc_trailing_ones_uc
+    libc.src.stdbit.stdc_trailing_ones_ui
+    libc.src.stdbit.stdc_trailing_ones_ul
+    libc.src.stdbit.stdc_trailing_ones_ull
+    libc.src.stdbit.stdc_trailing_ones_us
+    libc.src.stdbit.stdc_trailing_zeros_uc
+    libc.src.stdbit.stdc_trailing_zeros_ui
+    libc.src.stdbit.stdc_trailing_zeros_ul
+    libc.src.stdbit.stdc_trailing_zeros_ull
+    libc.src.stdbit.stdc_trailing_zeros_us
+
+    # stdlib.h entrypoints
+    libc.src.stdlib._Exit
+    libc.src.stdlib.a64l
+    libc.src.stdlib.abort
+    libc.src.stdlib.abs
+    libc.src.stdlib.aligned_alloc
+    libc.src.stdlib.atexit
+    libc.src.stdlib.atof
+    libc.src.stdlib.atoi
+    libc.src.stdlib.atol
+    libc.src.stdlib.atoll
+    libc.src.stdlib.bsearch
+    libc.src.stdlib.calloc
+    libc.src.stdlib.div
+    libc.src.stdlib.exit
+    libc.src.stdlib.free
+    libc.src.stdlib.l64a
+    libc.src.stdlib.labs
+    libc.src.stdlib.ldiv
+    libc.src.stdlib.llabs
+    libc.src.stdlib.lldiv
+    libc.src.stdlib.malloc
+    libc.src.stdlib.memalignment
+    libc.src.stdlib.qsort
+    libc.src.stdlib.qsort_r
+    libc.src.stdlib.rand
+    libc.src.stdlib.realloc
+    libc.src.stdlib.srand
+    # libc.src.stdlib.strfromd
+    # libc.src.stdlib.strfromf
+    # libc.src.stdlib.strfroml
+    libc.src.stdlib.strtod
+    libc.src.stdlib.strtof
+    libc.src.stdlib.strtol
+    libc.src.stdlib.strtold
+    libc.src.stdlib.strtoll
+    libc.src.stdlib.strtoul
+    libc.src.stdlib.strtoull
+
+    # stdlib.h entrypoints
+    libc.src.stdlib.strtod_l
+    libc.src.stdlib.strtof_l
+    libc.src.stdlib.strtol_l
+    libc.src.stdlib.strtold_l
+    libc.src.stdlib.strtoll_l
+    libc.src.stdlib.strtoul_l
+    libc.src.stdlib.strtoull_l
+
+    # time.h entrypoints
+    libc.src.time.asctime
+    libc.src.time.asctime_r
+    libc.src.time.clock
+    libc.src.time.ctime
+    libc.src.time.ctime_r
+    libc.src.time.difftime
+    libc.src.time.gmtime
+    libc.src.time.gmtime_r
+    libc.src.time.localtime
+    libc.src.time.localtime_r
+    libc.src.time.mktime
+    libc.src.time.strftime
+    libc.src.time.strftime_l
+    libc.src.time.timespec_get
+
+    # wchar.h entrypoints
+    libc.src.wchar.btowc
+    libc.src.wchar.wcslen
+    libc.src.wchar.wctob
+
+    # wctype.h entrypoints
+    libc.src.wctype.iswalpha
+
+    # internal entrypoints
+    libc.startup.baremetal.init
+    libc.startup.baremetal.fini
+)
+
+set(TARGET_LIBM_ENTRYPOINTS
+    # complex.h entrypoints
+    libc.src.complex.creal
+    libc.src.complex.crealf
+    libc.src.complex.creall
+    libc.src.complex.cimag
+    libc.src.complex.cimagf
+    libc.src.complex.cimagl
+    libc.src.complex.conj
+    libc.src.complex.conjf
+    libc.src.complex.conjl
+    libc.src.complex.cproj
+    libc.src.complex.cprojf
+    libc.src.complex.cprojl
+
+    # fenv.h entrypoints
+    libc.src.fenv.feclearexcept
+    libc.src.fenv.fedisableexcept
+    libc.src.fenv.feenableexcept
+    libc.src.fenv.fegetenv
+    libc.src.fenv.fegetexcept
+    libc.src.fenv.fegetexceptflag
+    libc.src.fenv.fegetround
+    libc.src.fenv.feholdexcept
+    libc.src.fenv.feraiseexcept
+    libc.src.fenv.fesetenv
+    libc.src.fenv.fesetexcept
+    libc.src.fenv.fesetexceptflag
+    libc.src.fenv.fesetround
+    libc.src.fenv.fetestexcept
+    libc.src.fenv.fetestexceptflag
+    libc.src.fenv.feupdateenv
+
+    # math.h entrypoints
+    libc.src.math.acosf
+    libc.src.math.acoshf
+    libc.src.math.asinf
+    libc.src.math.asinhf
+    libc.src.math.atan2
+    libc.src.math.atan2f
+    # libc.src.math.atan2l
+    libc.src.math.atan
+    libc.src.math.atanf
+    libc.src.math.atanhf
+    libc.src.math.canonicalize
+    libc.src.math.canonicalizef
+    libc.src.math.canonicalizel
+    libc.src.math.cbrt
+    libc.src.math.cbrtf
+    libc.src.math.ceil
+    libc.src.math.ceilf
+    libc.src.math.ceill
+    libc.src.math.copysign
+    libc.src.math.copysignf
+    libc.src.math.copysignl
+    libc.src.math.cos
+    libc.src.math.cosf
+    libc.src.math.coshf
+    libc.src.math.cospif
+    libc.src.math.dfmal
+    libc.src.math.dmull
+    libc.src.math.dsqrtl
+    libc.src.math.daddl
+    libc.src.math.ddivl
+    libc.src.math.dsubl
+    libc.src.math.erff
+    libc.src.math.exp
+    libc.src.math.exp10
+    libc.src.math.exp10f
+    libc.src.math.exp10m1f
+    libc.src.math.exp2
+    libc.src.math.exp2f
+    libc.src.math.exp2m1f
+    libc.src.math.expf
+    libc.src.math.expm1
+    libc.src.math.expm1f
+    libc.src.math.fabs
+    libc.src.math.fabsf
+    libc.src.math.fabsl
+    libc.src.math.fadd
+    libc.src.math.faddl
+    libc.src.math.fadd
+    libc.src.math.fdim
+    libc.src.math.fdimf
+    libc.src.math.fdiml
+    libc.src.math.fdiv
+    libc.src.math.fdivl
+    libc.src.math.ffma
+    libc.src.math.ffmal
+    libc.src.math.floor
+    libc.src.math.floorf
+    libc.src.math.floorl
+    libc.src.math.fma
+    libc.src.math.fmabf16
+    libc.src.math.fmaf
+    libc.src.math.fmax
+    libc.src.math.fmaxf
+    libc.src.math.fmaximum
+    libc.src.math.fmaximum_mag
+    libc.src.math.fmaximum_mag_num
+    libc.src.math.fmaximum_mag_numf
+    libc.src.math.fmaximum_mag_numl
+    libc.src.math.fmaximum_magf
+    libc.src.math.fmaximum_magl
+    libc.src.math.fmaximum_num
+    libc.src.math.fmaximum_numf
+    libc.src.math.fmaximum_numl
+    libc.src.math.fmaximumf
+    libc.src.math.fmaximuml
+    libc.src.math.fmaxl
+    libc.src.math.fmin
+    libc.src.math.fminf
+    libc.src.math.fminimum
+    libc.src.math.fminimum_mag
+    libc.src.math.fminimum_mag_num
+    libc.src.math.fminimum_mag_numf
+    libc.src.math.fminimum_mag_numl
+    libc.src.math.fminimum_magf
+    libc.src.math.fminimum_magl
+    libc.src.math.fminimum_num
+    libc.src.math.fminimum_numf
+    libc.src.math.fminimum_numl
+    libc.src.math.fminimumf
+    libc.src.math.fminimuml
+    libc.src.math.fminl
+    libc.src.math.fmod
+    libc.src.math.fmodf
+    # libc.src.math.fmodl
+    libc.src.math.fmul
+    libc.src.math.fmull
+    libc.src.math.frexp
+    libc.src.math.frexpf
+    libc.src.math.frexpl
+    libc.src.math.fromfp
+    libc.src.math.fromfpf
+    libc.src.math.fromfpl
+    libc.src.math.fromfpx
+    libc.src.math.fromfpxf
+    libc.src.math.fromfpxl
+    libc.src.math.fsqrt
+    libc.src.math.fsqrtl
+    libc.src.math.fsub
+    libc.src.math.fsubl
+    libc.src.math.getpayload
+    libc.src.math.getpayloadf
+    libc.src.math.getpayloadl
+    libc.src.math.hypot
+    libc.src.math.hypotf
+    libc.src.math.ilogb
+    libc.src.math.ilogbf
+    libc.src.math.ilogbl
+    libc.src.math.iscanonical
+    libc.src.math.iscanonicalf
+    libc.src.math.iscanonicall
+    libc.src.math.isnan
+    libc.src.math.isnanf
+    libc.src.math.isnanl
+    libc.src.math.issignaling
+    libc.src.math.issignalingf
+    libc.src.math.issignalingl
+    libc.src.math.ldexp
+    libc.src.math.ldexpf
+    libc.src.math.ldexpl
+    libc.src.math.llogb
+    libc.src.math.llogbf
+    libc.src.math.llogbl
+    libc.src.math.llrint
+    libc.src.math.llrintf
+    libc.src.math.llrintl
+    libc.src.math.llround
+    libc.src.math.llroundf
+    libc.src.math.llroundl
+    libc.src.math.log
+    libc.src.math.log10
+    libc.src.math.log10f
+    libc.src.math.log1p
+    libc.src.math.log1pf
+    libc.src.math.log2
+    libc.src.math.log2f
+    libc.src.math.logb
+    libc.src.math.logbf
+    libc.src.math.logbl
+    libc.src.math.logf
+    libc.src.math.lrint
+    libc.src.math.lrintf
+    libc.src.math.lrintl
+    libc.src.math.lround
+    libc.src.math.lroundf
+    libc.src.math.lroundl
+    libc.src.math.modf
+    libc.src.math.modff
+    libc.src.math.modfl
+    libc.src.math.nan
+    libc.src.math.nanf
+    libc.src.math.nanl
+    libc.src.math.nearbyint
+    libc.src.math.nearbyintf
+    libc.src.math.nearbyintl
+    libc.src.math.nextafter
+    libc.src.math.nextafterf
+    libc.src.math.nextafterl
+    libc.src.math.nextdown
+    libc.src.math.nextdownf
+    libc.src.math.nextdownl
+    libc.src.math.nexttoward
+    libc.src.math.nexttowardf
+    libc.src.math.nexttowardl
+    libc.src.math.nextup
+    libc.src.math.nextupf
+    libc.src.math.nextupl
+    libc.src.math.pow
+    libc.src.math.powf
+    libc.src.math.remainder
+    libc.src.math.remainderf
+    libc.src.math.remainderl
+    libc.src.math.remquo
+    libc.src.math.remquof
+    libc.src.math.remquol
+    libc.src.math.rint
+    libc.src.math.rintf
+    libc.src.math.rintl
+    libc.src.math.round
+    libc.src.math.roundeven
+    libc.src.math.roundevenf
+    libc.src.math.roundevenl
+    libc.src.math.roundf
+    libc.src.math.roundl
+    libc.src.math.scalbln
+    libc.src.math.scalblnf
+    libc.src.math.scalblnl
+    libc.src.math.scalbn
+    libc.src.math.scalbnf
+    libc.src.math.scalbnl
+    libc.src.math.setpayload
+    libc.src.math.setpayloadf
+    libc.src.math.setpayloadl
+    libc.src.math.setpayloadsig
+    libc.src.math.setpayloadsigf
+    libc.src.math.setpayloadsigl
+    libc.src.math.sin
+    libc.src.math.sincos
+    libc.src.math.sincosf
+    libc.src.math.sinf
+    libc.src.math.sinhf
+    libc.src.math.sinpif
+    libc.src.math.sqrt
+    libc.src.math.sqrtf
+    libc.src.math.sqrtl
+    libc.src.math.tan
+    libc.src.math.tanf
+    libc.src.math.tanhf
+    libc.src.math.totalorder
+    libc.src.math.totalorderf
+    libc.src.math.totalorderl
+    libc.src.math.totalordermag
+    libc.src.math.totalordermagf
+    libc.src.math.totalordermagl
+    libc.src.math.trunc
+    libc.src.math.truncf
+    libc.src.math.truncl
+    libc.src.math.ufromfp
+    libc.src.math.ufromfpf
+    libc.src.math.ufromfpl
+    libc.src.math.ufromfpx
+    libc.src.math.ufromfpxf
+    libc.src.math.ufromfpxl
+)
+
+if(LIBC_TYPES_HAS_CFLOAT16)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # complex.h C23 _Complex _Float16 entrypoints
+    libc.src.complex.crealf16
+    libc.src.complex.cimagf16
+    libc.src.complex.conjf16
+    libc.src.complex.cprojf16
+  )
+endif()
+
+if(LIBC_TYPES_HAS_FLOAT16)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # math.h C23 _Float16 entrypoints
+    libc.src.math.acosf16
+    libc.src.math.acoshf16
+    libc.src.math.asinf16
+    libc.src.math.asinhf16
+    libc.src.math.canonicalizef16
+    libc.src.math.ceilf16
+    libc.src.math.copysignf16
+    libc.src.math.cosf16
+    libc.src.math.coshf16
+    libc.src.math.cospif16
+    libc.src.math.exp10f16
+    libc.src.math.exp10m1f16
+    libc.src.math.exp2f16
+    libc.src.math.exp2m1f16
+    libc.src.math.expf16
+    libc.src.math.expm1f16
+    libc.src.math.f16add
+    libc.src.math.f16addf
+    libc.src.math.f16addl
+    libc.src.math.f16div
+    libc.src.math.f16divf
+    libc.src.math.f16divl
+    libc.src.math.f16fma
+    libc.src.math.f16fmaf
+    libc.src.math.f16fmal
+    libc.src.math.f16mul
+    libc.src.math.f16mulf
+    libc.src.math.f16mull
+    libc.src.math.f16sqrt
+    libc.src.math.f16sqrtf
+    libc.src.math.f16sqrtl
+    libc.src.math.f16sub
+    libc.src.math.f16subf
+    libc.src.math.f16subl
+    libc.src.math.fabsf16
+    libc.src.math.fdimf16
+    libc.src.math.floorf16
+    libc.src.math.fmaf16
+    libc.src.math.fmaxf16
+    libc.src.math.fmaximum_mag_numf16
+    libc.src.math.fmaximum_magf16
+    libc.src.math.fmaximum_numf16
+    libc.src.math.fmaximumf16
+    libc.src.math.fminf16
+    libc.src.math.fminimum_mag_numf16
+    libc.src.math.fminimum_magf16
+    libc.src.math.fminimum_numf16
+    libc.src.math.fminimumf16
+    libc.src.math.fmodf16
+    libc.src.math.frexpf16
+    libc.src.math.fromfpf16
+    libc.src.math.fromfpxf16
+    libc.src.math.getpayloadf16
+    libc.src.math.hypotf16
+    libc.src.math.ilogbf16
+    libc.src.math.iscanonicalf16
+    libc.src.math.issignalingf16
+    libc.src.math.ldexpf16
+    libc.src.math.llogbf16
+    libc.src.math.llrintf16
+    libc.src.math.llroundf16
+    libc.src.math.log10f16
+    libc.src.math.log2f16
+    libc.src.math.logbf16
+    libc.src.math.logf16
+    libc.src.math.lrintf16
+    libc.src.math.lroundf16
+    libc.src.math.modff16
+    libc.src.math.nanf16
+    libc.src.math.nearbyintf16
+    libc.src.math.nextafterf16
+    libc.src.math.nextdownf16
+    libc.src.math.nexttowardf16
+    libc.src.math.nextupf16
+    libc.src.math.remainderf16
+    libc.src.math.remquof16
+    libc.src.math.rintf16
+    libc.src.math.roundevenf16
+    libc.src.math.roundf16
+    libc.src.math.scalblnf16
+    libc.src.math.scalbnf16
+    libc.src.math.setpayloadf16
+    libc.src.math.setpayloadsigf16
+    libc.src.math.sinf16
+    libc.src.math.sinhf16
+    libc.src.math.sinpif16
+    libc.src.math.sqrtf16
+    libc.src.math.tanf16
+    libc.src.math.tanhf16
+    libc.src.math.tanpif16
+    libc.src.math.totalorderf16
+    libc.src.math.totalordermagf16
+    libc.src.math.truncf16
+    libc.src.math.ufromfpf16
+    libc.src.math.ufromfpxf16
+  )
+
+  if(LIBC_TYPES_HAS_FLOAT128)
+    list(APPEND TARGET_LIBM_ENTRYPOINTS
+      # math.h C23 mixed _Float16 and _Float128 entrypoints
+      libc.src.math.f16addf128
+      libc.src.math.f16divf128
+      libc.src.math.f16fmaf128
+      libc.src.math.f16mulf128
+      libc.src.math.f16sqrtf128
+      libc.src.math.f16subf128
+    )
+  endif()
+endif()
+
+if(LIBC_TYPES_HAS_CFLOAT128)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # complex.h C23 _Complex _Float128 entrypoints
+    libc.src.complex.crealf128
+    libc.src.complex.cimagf128
+    libc.src.complex.conjf128
+    libc.src.complex.cprojf128
+  )
+endif()
+
+if(LIBC_TYPES_HAS_FLOAT128)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # math.h C23 _Float128 entrypoints
+    libc.src.math.atan2f128
+    libc.src.math.canonicalizef128
+    libc.src.math.ceilf128
+    libc.src.math.copysignf128
+    libc.src.math.daddf128
+    libc.src.math.ddivf128
+    libc.src.math.dfmaf128
+    libc.src.math.dmulf128
+    libc.src.math.dsqrtf128
+    libc.src.math.dsubf128
+    libc.src.math.fabsf128
+    libc.src.math.faddf128
+    libc.src.math.fdimf128
+    libc.src.math.fdivf128
+    libc.src.math.ffmaf128
+    libc.src.math.floorf128
+    libc.src.math.fmaxf128
+    libc.src.math.fmaximum_mag_numf128
+    libc.src.math.fmaximum_magf128
+    libc.src.math.fmaximum_numf128
+    libc.src.math.fmaximumf128
+    libc.src.math.fminf128
+    libc.src.math.fminimum_mag_numf128
+    libc.src.math.fminimum_magf128
+    libc.src.math.fminimum_numf128
+    libc.src.math.fminimumf128
+    # libc.src.math.fmodf128
+    libc.src.math.fmulf128
+    libc.src.math.frexpf128
+    libc.src.math.fromfpf128
+    libc.src.math.fromfpxf128
+    libc.src.math.fsqrtf128
+    libc.src.math.fsubf128
+    libc.src.math.getpayloadf128
+    libc.src.math.ilogbf128
+    libc.src.math.iscanonicalf128
+    libc.src.math.issignalingf128
+    libc.src.math.ldexpf128
+    libc.src.math.llogbf128
+    libc.src.math.llrintf128
+    libc.src.math.llroundf128
+    libc.src.math.logbf128
+    libc.src.math.lrintf128
+    libc.src.math.lroundf128
+    libc.src.math.modff128
+    libc.src.math.nanf128
+    libc.src.math.nearbyintf128
+    libc.src.math.nextafterf128
+    libc.src.math.nextdownf128
+    libc.src.math.nextupf128
+    libc.src.math.remainderf128
+    libc.src.math.remquof128
+    libc.src.math.rintf128
+    libc.src.math.roundevenf128
+    libc.src.math.roundf128
+    libc.src.math.scalblnf128
+    libc.src.math.scalbnf128
+    libc.src.math.setpayloadf128
+    libc.src.math.setpayloadsigf128
+    libc.src.math.sqrtf128
+    libc.src.math.totalorderf128
+    libc.src.math.totalordermagf128
+    libc.src.math.truncf128
+    libc.src.math.ufromfpf128
+    libc.src.math.ufromfpxf128
+  )
+endif()
+
+list(APPEND TARGET_LIBM_ENTRYPOINTS
+  # bfloat16 entrypoints
+  libc.src.math.bf16add
+  libc.src.math.bf16addf
+  libc.src.math.bf16addl
+  libc.src.math.bf16div
+  libc.src.math.bf16divf
+  libc.src.math.bf16divl
+  libc.src.math.bf16fma
+  libc.src.math.bf16fmaf
+  libc.src.math.bf16fmal
+  libc.src.math.bf16mul
+  libc.src.math.bf16mulf
+  libc.src.math.bf16mull
+  libc.src.math.bf16sub
+  libc.src.math.bf16subf
+  libc.src.math.bf16subl
+  libc.src.math.canonicalizebf16
+  libc.src.math.ceilbf16
+  libc.src.math.copysignbf16
+  libc.src.math.fabsbf16
+  libc.src.math.fdimbf16
+  libc.src.math.floorbf16
+  libc.src.math.fmaxbf16
+  libc.src.math.fmaximumbf16
+  libc.src.math.fmaximum_magbf16
+  libc.src.math.fmaximum_mag_numbf16
+  libc.src.math.fmaximum_numbf16
+  libc.src.math.fminbf16
+  libc.src.math.fminimumbf16
+  libc.src.math.fminimum_magbf16
+  libc.src.math.fminimum_mag_numbf16
+  libc.src.math.fminimum_numbf16
+  libc.src.math.fmodbf16
+  libc.src.math.frexpbf16
+  libc.src.math.fromfpbf16
+  libc.src.math.fromfpxbf16
+  libc.src.math.getpayloadbf16
+  libc.src.math.ilogbbf16
+  libc.src.math.iscanonicalbf16
+  libc.src.math.issignalingbf16
+  libc.src.math.ldexpbf16
+  libc.src.math.llogbbf16
+  libc.src.math.llrintbf16
+  libc.src.math.llroundbf16
+  libc.src.math.log_bf16
+  libc.src.math.logbbf16
+  libc.src.math.lrintbf16
+  libc.src.math.lroundbf16
+  libc.src.math.modfbf16
+  libc.src.math.nanbf16
+  libc.src.math.nearbyintbf16
+  libc.src.math.nextafterbf16
+  libc.src.math.nextdownbf16
+  libc.src.math.nexttowardbf16
+  libc.src.math.nextupbf16
+  libc.src.math.remainderbf16
+  libc.src.math.remquobf16
+  libc.src.math.rintbf16
+  libc.src.math.roundbf16
+  libc.src.math.roundevenbf16
+  libc.src.math.scalblnbf16
+  libc.src.math.scalbnbf16
+  libc.src.math.setpayloadbf16
+  libc.src.math.setpayloadsigbf16
+  libc.src.math.sqrtbf16
+  libc.src.math.truncbf16
+  libc.src.math.totalorderbf16
+  libc.src.math.totalordermagbf16
+  libc.src.math.ufromfpbf16
+  libc.src.math.ufromfpxbf16
+)
+
+if(LIBC_TYPES_HAS_FLOAT128)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # math.h C++23 mixed bfloat16 and _Float128 entrypoints
+    libc.src.math.bf16addf128
+    libc.src.math.bf16divf128
+    libc.src.math.bf16fmaf128
+    libc.src.math.bf16mulf128
+    libc.src.math.bf16subf128
+  )
+endif()
+
+if(LIBC_COMPILER_HAS_FIXED_POINT)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # stdfix.h _Fract and _Accum entrypoints
+    libc.src.stdfix.abshk
+    libc.src.stdfix.abshr
+    libc.src.stdfix.absk
+    libc.src.stdfix.abslk
+    libc.src.stdfix.abslr
+    libc.src.stdfix.absr
+    libc.src.stdfix.exphk
+    libc.src.stdfix.expk
+    libc.src.stdfix.roundhk
+    libc.src.stdfix.roundhr
+    libc.src.stdfix.roundk
+    libc.src.stdfix.roundlk
+    libc.src.stdfix.roundlr
+    libc.src.stdfix.roundr
+    libc.src.stdfix.rounduhk
+    libc.src.stdfix.rounduhr
+    libc.src.stdfix.rounduk
+    libc.src.stdfix.roundulk
+    libc.src.stdfix.roundulr
+    libc.src.stdfix.roundur
+    libc.src.stdfix.sqrtuhk
+    libc.src.stdfix.sqrtuhr
+    libc.src.stdfix.sqrtuk
+    libc.src.stdfix.sqrtur
+    # libc.src.stdfix.sqrtulk
+    libc.src.stdfix.sqrtulr
+    libc.src.stdfix.uhksqrtus
+    libc.src.stdfix.uksqrtui
+    libc.src.stdfix.hrbits
+    libc.src.stdfix.uhrbits
+    libc.src.stdfix.rbits
+    libc.src.stdfix.urbits
+    libc.src.stdfix.lrbits
+    libc.src.stdfix.ulrbits
+    libc.src.stdfix.hkbits
+    libc.src.stdfix.uhkbits
+    libc.src.stdfix.kbits
+    libc.src.stdfix.ukbits
+    libc.src.stdfix.lkbits
+    libc.src.stdfix.ulkbits
+    libc.src.stdfix.bitshr
+    libc.src.stdfix.bitsr
+    libc.src.stdfix.bitslr
+    libc.src.stdfix.bitshk
+    libc.src.stdfix.bitsk
+    libc.src.stdfix.bitslk
+    libc.src.stdfix.bitsuhr
+    libc.src.stdfix.bitsur
+    libc.src.stdfix.bitsulr
+    libc.src.stdfix.bitsuhk
+    libc.src.stdfix.bitsuk
+    libc.src.stdfix.bitsulk
+    libc.src.stdfix.countlshr
+    libc.src.stdfix.countlsr
+    libc.src.stdfix.countlslr
+    libc.src.stdfix.countlshk
+    libc.src.stdfix.countlsk
+    libc.src.stdfix.countlslk
+    libc.src.stdfix.countlsuhr
+    libc.src.stdfix.countlsur
+    libc.src.stdfix.countlsulr
+    libc.src.stdfix.countlsuhk
+    libc.src.stdfix.countlsuk
+    libc.src.stdfix.countlsulk
+    libc.src.stdfix.idivr
+    libc.src.stdfix.idivlr
+    libc.src.stdfix.idivk
+    libc.src.stdfix.idivlk
+    libc.src.stdfix.idivur
+    libc.src.stdfix.idivulr
+    libc.src.stdfix.idivuk
+    libc.src.stdfix.idivulk
+  )
+endif()
+
+set(TARGET_LLVMLIBC_ENTRYPOINTS
+  ${TARGET_LIBC_ENTRYPOINTS}
+  ${TARGET_LIBM_ENTRYPOINTS}
+)
diff --git a/libc/config/darwin/aarch64/entrypoints.txt b/libc/config/darwin/aarch64/entrypoints.txt
index 6aceca7d31e1e..3aeb6fb5ae541 100644
--- a/libc/config/darwin/aarch64/entrypoints.txt
+++ b/libc/config/darwin/aarch64/entrypoints.txt
@@ -1,748 +1,748 @@
-set(TARGET_LIBC_ENTRYPOINTS
-    # ctype.h entrypoints
-    libc.src.ctype.isalnum
-    libc.src.ctype.isalpha
-    libc.src.ctype.isascii
-    libc.src.ctype.isblank
-    libc.src.ctype.iscntrl
-    libc.src.ctype.isdigit
-    libc.src.ctype.isgraph
-    libc.src.ctype.islower
-    libc.src.ctype.isprint
-    libc.src.ctype.ispunct
-    libc.src.ctype.isspace
-    libc.src.ctype.isupper
-    libc.src.ctype.isxdigit
-    libc.src.ctype.toascii
-    libc.src.ctype.tolower
-    libc.src.ctype.toupper
-
-    # errno.h entrypoints
-    libc.src.errno.errno
-
-    # string.h entrypoints
-    libc.src.string.memccpy
-    libc.src.string.memchr
-    libc.src.string.memcmp
-    libc.src.string.memcpy
-    libc.src.string.memmem
-    libc.src.string.memmove
-    libc.src.string.mempcpy
-    libc.src.string.memrchr
-    libc.src.string.memset
-    libc.src.string.stpcpy
-    libc.src.string.stpncpy
-    libc.src.string.strcasestr
-    libc.src.string.strcat
-    libc.src.string.strchr
-    libc.src.string.strchrnul
-    libc.src.string.strcmp
-    libc.src.string.strcpy
-    libc.src.string.strcspn
-    libc.src.string.strlcat
-    libc.src.string.strlcpy
-    libc.src.string.strlen
-    libc.src.string.strncat
-    libc.src.string.strncmp
-    libc.src.string.strncpy
-    libc.src.string.strnlen
-    libc.src.string.strpbrk
-    libc.src.string.strrchr
-    libc.src.string.strspn
-    libc.src.string.strstr
-    libc.src.string.strtok
-    libc.src.string.strtok_r
-
-    # string.h entrypoints that depend on malloc
-    libc.src.string.strdup
-    libc.src.string.strndup
-
-    # strings.h entrypoints
-    libc.src.strings.bcmp
-    libc.src.strings.bcopy
-    libc.src.strings.bzero
-    libc.src.strings.strcasecmp
-    libc.src.strings.strncasecmp
-
-    # inttypes.h entrypoints
-    libc.src.inttypes.imaxabs
-    libc.src.inttypes.imaxdiv
-    libc.src.inttypes.strtoimax
-    libc.src.inttypes.strtoumax
-
-    # stdlib.h entrypoints
-    libc.src.stdlib.abs
-    libc.src.stdlib.atoi
-    libc.src.stdlib.atof
-    libc.src.stdlib.atol
-    libc.src.stdlib.atoll
-    libc.src.stdlib.bsearch
-    libc.src.stdlib.div
-    libc.src.stdlib.labs
-    libc.src.stdlib.ldiv
-    libc.src.stdlib.llabs
-    libc.src.stdlib.lldiv
-    libc.src.stdlib.memalignment
-    libc.src.stdlib.qsort
-    libc.src.stdlib.rand
-    libc.src.stdlib.srand
-    libc.src.stdlib.strtod
-    libc.src.stdlib.strtof
-    libc.src.stdlib.strtol
-    libc.src.stdlib.strtold
-    libc.src.stdlib.strtoll
-    libc.src.stdlib.strtoul
-    libc.src.stdlib.strtoull
-
-    # stdlib.h external entrypoints
-    libc.src.stdlib.malloc
-    libc.src.stdlib.calloc
-    libc.src.stdlib.realloc
-    libc.src.stdlib.free
-
-    # wctype.h entrypoints
-    libc.src.wctype.iswalpha
-)
-
-if(LLVM_LIBC_FULL_BUILD)
-  list(APPEND TARGET_LIBC_ENTRYPOINTS
-    # setjmp.h entrypoints
-    libc.src.setjmp.longjmp
-    libc.src.setjmp.setjmp
-    libc.src.setjmp.siglongjmp
-    libc.src.setjmp.sigsetjmp
-    libc.src.stdlib._Exit
-  )
-endif()
-
-
-set(TARGET_LIBM_ENTRYPOINTS
-    # complex.h entrypoints
-    libc.src.complex.creal
-    libc.src.complex.crealf
-    libc.src.complex.creall
-    libc.src.complex.cimag
-    libc.src.complex.cimagf
-    libc.src.complex.cimagl
-    libc.src.complex.conj
-    libc.src.complex.conjf
-    libc.src.complex.conjl
-    libc.src.complex.cproj
-    libc.src.complex.cprojf
-    libc.src.complex.cprojl
-
-    # fenv.h entrypoints
-    libc.src.fenv.feclearexcept
-    libc.src.fenv.fedisableexcept
-    libc.src.fenv.feenableexcept
-    libc.src.fenv.fegetenv
-    libc.src.fenv.fegetexcept
-    libc.src.fenv.fegetexceptflag
-    libc.src.fenv.fegetround
-    libc.src.fenv.feholdexcept
-    libc.src.fenv.feraiseexcept
-    libc.src.fenv.fesetenv
-    libc.src.fenv.fesetexcept
-    libc.src.fenv.fesetexceptflag
-    libc.src.fenv.fesetround
-    libc.src.fenv.fetestexcept
-    libc.src.fenv.fetestexceptflag
-    libc.src.fenv.feupdateenv
-
-    # math.h entrypoints
-    libc.src.math.acos
-    libc.src.math.acosf
-    libc.src.math.acoshf
-    libc.src.math.asin
-    libc.src.math.asinf
-    libc.src.math.asinhf
-    libc.src.math.atan2
-    libc.src.math.atan2f
-    libc.src.math.atan
-    libc.src.math.atanf
-    libc.src.math.atanhf
-    libc.src.math.canonicalize
-    libc.src.math.canonicalizef
-    libc.src.math.canonicalizel
-    libc.src.math.cbrt
-    libc.src.math.cbrtf
-    libc.src.math.ceil
-    libc.src.math.ceilf
-    libc.src.math.ceill
-    libc.src.math.copysign
-    libc.src.math.copysignf
-    libc.src.math.copysignl
-    libc.src.math.cos
-    libc.src.math.cosf
-    libc.src.math.coshf
-    libc.src.math.cospif
-    libc.src.math.dfmal
-    libc.src.math.dmull
-    libc.src.math.dsqrtl
-    libc.src.math.daddl
-    libc.src.math.ddivl
-    libc.src.math.dsubl
-    libc.src.math.erff
-    libc.src.math.exp
-    libc.src.math.exp10
-    libc.src.math.exp10f
-    libc.src.math.exp10m1f
-    libc.src.math.exp2
-    libc.src.math.exp2f
-    libc.src.math.exp2m1f
-    libc.src.math.expf
-    libc.src.math.expm1
-    libc.src.math.expm1f
-    libc.src.math.fabs
-    libc.src.math.fabsf
-    libc.src.math.fabsl
-    libc.src.math.fadd
-    libc.src.math.faddl
-    libc.src.math.fadd
-    libc.src.math.fdim
-    libc.src.math.fdimf
-    libc.src.math.fdiml
-    libc.src.math.fdiv
-    libc.src.math.fdivl
-    libc.src.math.ffma
-    libc.src.math.ffmal
-    libc.src.math.floor
-    libc.src.math.floorf
-    libc.src.math.floorl
-    libc.src.math.fma
-    libc.src.math.fmabf16
-    libc.src.math.fmaf
-    libc.src.math.fmax
-    libc.src.math.fmaxf
-    libc.src.math.fmaximum
-    libc.src.math.fmaximum_mag
-    libc.src.math.fmaximum_mag_num
-    libc.src.math.fmaximum_mag_numf
-    libc.src.math.fmaximum_mag_numl
-    libc.src.math.fmaximum_magf
-    libc.src.math.fmaximum_magl
-    libc.src.math.fmaximum_num
-    libc.src.math.fmaximum_numf
-    libc.src.math.fmaximum_numl
-    libc.src.math.fmaximumf
-    libc.src.math.fmaximuml
-    libc.src.math.fmaxl
-    libc.src.math.fmin
-    libc.src.math.fminf
-    libc.src.math.fminimum
-    libc.src.math.fminimum_mag
-    libc.src.math.fminimum_mag_num
-    libc.src.math.fminimum_mag_numf
-    libc.src.math.fminimum_mag_numl
-    libc.src.math.fminimum_magf
-    libc.src.math.fminimum_magl
-    libc.src.math.fminimum_num
-    libc.src.math.fminimum_numf
-    libc.src.math.fminimum_numl
-    libc.src.math.fminimumf
-    libc.src.math.fminimuml
-    libc.src.math.fminl
-    libc.src.math.fmod
-    libc.src.math.fmodf
-    libc.src.math.fmodl
-    libc.src.math.fmul
-    libc.src.math.fmull
-    libc.src.math.frexp
-    libc.src.math.frexpf
-    libc.src.math.frexpl
-    libc.src.math.fromfp
-    libc.src.math.fromfpf
-    libc.src.math.fromfpl
-    libc.src.math.fromfpx
-    libc.src.math.fromfpxf
-    libc.src.math.fromfpxl
-    libc.src.math.fsqrt
-    libc.src.math.fsqrtl
-    libc.src.math.fsub
-    libc.src.math.fsubl
-    libc.src.math.getpayload
-    libc.src.math.getpayloadf
-    libc.src.math.getpayloadl
-    libc.src.math.hypot
-    libc.src.math.hypotf
-    libc.src.math.ilogb
-    libc.src.math.ilogbf
-    libc.src.math.ilogbl
-    libc.src.math.iscanonical
-    libc.src.math.iscanonicalf
-    libc.src.math.iscanonicall
-    libc.src.math.isnan
-    libc.src.math.isnanf
-    libc.src.math.isnanl
-    libc.src.math.issignaling
-    libc.src.math.issignalingf
-    libc.src.math.issignalingl
-    libc.src.math.ldexp
-    libc.src.math.ldexpf
-    libc.src.math.ldexpl
-    libc.src.math.llogb
-    libc.src.math.llogbf
-    libc.src.math.llogbl
-    libc.src.math.llrint
-    libc.src.math.llrintf
-    libc.src.math.llrintl
-    libc.src.math.llround
-    libc.src.math.llroundf
-    libc.src.math.llroundl
-    libc.src.math.log
-    libc.src.math.log10
-    libc.src.math.log10f
-    libc.src.math.log1p
-    libc.src.math.log1pf
-    libc.src.math.log2
-    libc.src.math.log2f
-    libc.src.math.logb
-    libc.src.math.logbf
-    libc.src.math.logbl
-    libc.src.math.logf
-    libc.src.math.lrint
-    libc.src.math.lrintf
-    libc.src.math.lrintl
-    libc.src.math.lround
-    libc.src.math.lroundf
-    libc.src.math.lroundl
-    libc.src.math.modf
-    libc.src.math.modff
-    libc.src.math.modfl
-    libc.src.math.nan
-    libc.src.math.nanf
-    libc.src.math.nanl
-    libc.src.math.nearbyint
-    libc.src.math.nearbyintf
-    libc.src.math.nearbyintl
-    libc.src.math.nextafter
-    libc.src.math.nextafterf
-    libc.src.math.nextafterl
-    libc.src.math.nextdown
-    libc.src.math.nextdownf
-    libc.src.math.nextdownl
-    libc.src.math.nexttoward
-    libc.src.math.nexttowardf
-    libc.src.math.nexttowardl
-    libc.src.math.nextup
-    libc.src.math.nextupf
-    libc.src.math.nextupl
-    libc.src.math.pow
-    libc.src.math.powf
-    libc.src.math.remainder
-    libc.src.math.remainderf
-    libc.src.math.remainderl
-    libc.src.math.remquo
-    libc.src.math.remquof
-    libc.src.math.remquol
-    libc.src.math.rint
-    libc.src.math.rintf
-    libc.src.math.rintl
-    libc.src.math.round
-    libc.src.math.roundeven
-    libc.src.math.roundevenf
-    libc.src.math.roundevenl
-    libc.src.math.roundf
-    libc.src.math.roundl
-    libc.src.math.scalbln
-    libc.src.math.scalblnf
-    libc.src.math.scalblnl
-    libc.src.math.scalbn
-    libc.src.math.scalbnf
-    libc.src.math.scalbnl
-    libc.src.math.setpayload
-    libc.src.math.setpayloadf
-    libc.src.math.setpayloadl
-    libc.src.math.setpayloadsig
-    libc.src.math.setpayloadsigf
-    libc.src.math.setpayloadsigl
-    libc.src.math.sin
-    libc.src.math.sincos
-    libc.src.math.sincosf
-    libc.src.math.sinf
-    libc.src.math.sinhf
-    libc.src.math.sinpif
-    libc.src.math.sqrt
-    libc.src.math.sqrtf
-    libc.src.math.sqrtl
-    libc.src.math.tan
-    libc.src.math.tanf
-    libc.src.math.tanhf
-    libc.src.math.tanpif
-    libc.src.math.totalorder
-    libc.src.math.totalorderf
-    libc.src.math.totalorderl
-    libc.src.math.totalordermag
-    libc.src.math.totalordermagf
-    libc.src.math.totalordermagl
-    libc.src.math.trunc
-    libc.src.math.truncf
-    libc.src.math.truncl
-    libc.src.math.ufromfp
-    libc.src.math.ufromfpf
-    libc.src.math.ufromfpl
-    libc.src.math.ufromfpx
-    libc.src.math.ufromfpxf
-    libc.src.math.ufromfpxl
-)
-
-if(LIBC_TYPES_HAS_CFLOAT16)
-  list(APPEND TARGET_LIBM_ENTRYPOINTS
-    # complex.h C23 _Complex _Float16 entrypoints
-    libc.src.complex.crealf16
-    libc.src.complex.cimagf16
-    libc.src.complex.conjf16
-    libc.src.complex.cprojf16
-  )
-endif()
-
-if(LIBC_TYPES_HAS_FLOAT16)
-  list(APPEND TARGET_LIBM_ENTRYPOINTS
-    # math.h C23 _Float16 entrypoints
-    libc.src.math.acosf16
-    libc.src.math.acoshf16
-    libc.src.math.asinf16
-    libc.src.math.asinhf16
-    libc.src.math.canonicalizef16
-    libc.src.math.ceilf16
-    libc.src.math.copysignf16
-    libc.src.math.cosf16
-    libc.src.math.coshf16
-    libc.src.math.cospif16
-    libc.src.math.exp10f16
-    libc.src.math.exp10m1f16
-    libc.src.math.exp2f16
-    libc.src.math.exp2m1f16
-    libc.src.math.expf16
-    libc.src.math.expm1f16
-    libc.src.math.f16add
-    libc.src.math.f16addf
-    libc.src.math.f16addl
-    libc.src.math.f16div
-    libc.src.math.f16divf
-    libc.src.math.f16divl
-    libc.src.math.f16fma
-    libc.src.math.f16fmaf
-    libc.src.math.f16fmal
-    libc.src.math.f16mul
-    libc.src.math.f16mulf
-    libc.src.math.f16mull
-    libc.src.math.f16sqrt
-    libc.src.math.f16sqrtf
-    libc.src.math.f16sqrtl
-    libc.src.math.f16sub
-    libc.src.math.f16subf
-    libc.src.math.f16subl
-    libc.src.math.fabsf16
-    libc.src.math.fdimf16
-    libc.src.math.floorf16
-    libc.src.math.fmaf16
-    libc.src.math.fmaxf16
-    libc.src.math.fmaximum_mag_numf16
-    libc.src.math.fmaximum_magf16
-    libc.src.math.fmaximum_numf16
-    libc.src.math.fmaximumf16
-    libc.src.math.fminf16
-    libc.src.math.fminimum_mag_numf16
-    libc.src.math.fminimum_magf16
-    libc.src.math.fminimum_numf16
-    libc.src.math.fminimumf16
-    libc.src.math.fmodf16
-    libc.src.math.frexpf16
-    libc.src.math.fromfpf16
-    libc.src.math.fromfpxf16
-    libc.src.math.getpayloadf16
-    libc.src.math.hypotf16
-    libc.src.math.ilogbf16
-    libc.src.math.iscanonicalf16
-    libc.src.math.issignalingf16
-    libc.src.math.ldexpf16
-    libc.src.math.llogbf16
-    libc.src.math.llrintf16
-    libc.src.math.llroundf16
-    libc.src.math.log10f16
-    libc.src.math.log2f16
-    libc.src.math.logbf16
-    libc.src.math.logf16
-    libc.src.math.lrintf16
-    libc.src.math.lroundf16
-    libc.src.math.modff16
-    libc.src.math.nanf16
-    libc.src.math.nearbyintf16
-    libc.src.math.nextafterf16
-    libc.src.math.nextdownf16
-    libc.src.math.nexttowardf16
-    libc.src.math.nextupf16
-    libc.src.math.remainderf16
-    libc.src.math.remquof16
-    libc.src.math.rintf16
-    libc.src.math.roundevenf16
-    libc.src.math.roundf16
-    libc.src.math.scalblnf16
-    libc.src.math.scalbnf16
-    libc.src.math.setpayloadf16
-    libc.src.math.setpayloadsigf16
-    libc.src.math.sinf16
-    libc.src.math.sinhf16
-    libc.src.math.sinpif16
-    libc.src.math.sqrtf16
-    libc.src.math.tanf16
-    libc.src.math.tanhf16
-    libc.src.math.tanpif16
-    libc.src.math.totalorderf16
-    libc.src.math.totalordermagf16
-    libc.src.math.truncf16
-    libc.src.math.ufromfpf16
-    libc.src.math.ufromfpxf16
-  )
-
-  if(LIBC_TYPES_HAS_FLOAT128)
-    list(APPEND TARGET_LIBM_ENTRYPOINTS
-      # math.h C23 mixed _Float16 and _Float128 entrypoints
-      libc.src.math.f16addf128
-      libc.src.math.f16divf128
-      libc.src.math.f16fmaf128
-      libc.src.math.f16mulf128
-      libc.src.math.f16sqrtf128
-      libc.src.math.f16subf128
-    )
-  endif()
-endif()
-
-if(LIBC_TYPES_HAS_CFLOAT128)
-  list(APPEND TARGET_LIBM_ENTRYPOINTS
-    # complex.h C23 _Complex _Float128 entrypoints
-    libc.src.complex.crealf128
-    libc.src.complex.cimagf128
-    libc.src.complex.conjf128
-    libc.src.complex.cprojf128
-  )
-endif()
-
-if(LIBC_TYPES_HAS_FLOAT128)
-  list(APPEND TARGET_LIBM_ENTRYPOINTS
-    # math.h C23 _Float128 entrypoints
-    libc.src.math.atan2f128
-    libc.src.math.canonicalizef128
-    libc.src.math.ceilf128
-    libc.src.math.copysignf128
-    libc.src.math.daddf128
-    libc.src.math.ddivf128
-    libc.src.math.dfmaf128
-    libc.src.math.dmulf128
-    libc.src.math.dsqrtf128
-    libc.src.math.dsubf128
-    libc.src.math.fabsf128
-    libc.src.math.faddf128
-    libc.src.math.fdimf128
-    libc.src.math.fdivf128
-    libc.src.math.ffmaf128
-    libc.src.math.floorf128
-    libc.src.math.fmaxf128
-    libc.src.math.fmaximum_mag_numf128
-    libc.src.math.fmaximum_magf128
-    libc.src.math.fmaximum_numf128
-    libc.src.math.fmaximumf128
-    libc.src.math.fminf128
-    libc.src.math.fminimum_mag_numf128
-    libc.src.math.fminimum_magf128
-    libc.src.math.fminimum_numf128
-    libc.src.math.fminimumf128
-    libc.src.math.fmodf128
-    libc.src.math.fmulf128
-    libc.src.math.frexpf128
-    libc.src.math.fromfpf128
-    libc.src.math.fromfpxf128
-    libc.src.math.fsqrtf128
-    libc.src.math.fsubf128
-    libc.src.math.getpayloadf128
-    libc.src.math.ilogbf128
-    libc.src.math.iscanonicalf128
-    libc.src.math.issignalingf128
-    libc.src.math.ldexpf128
-    libc.src.math.llogbf128
-    libc.src.math.llrintf128
-    libc.src.math.llroundf128
-    libc.src.math.logbf128
-    libc.src.math.lrintf128
-    libc.src.math.lroundf128
-    libc.src.math.modff128
-    libc.src.math.nanf128
-    libc.src.math.nearbyintf128
-    libc.src.math.nextafterf128
-    libc.src.math.nextdownf128
-    libc.src.math.nextupf128
-    libc.src.math.remainderf128
-    libc.src.math.remquof128
-    libc.src.math.rintf128
-    libc.src.math.roundevenf128
-    libc.src.math.roundf128
-    libc.src.math.scalblnf128
-    libc.src.math.scalbnf128
-    libc.src.math.setpayloadf128
-    libc.src.math.setpayloadsigf128
-    libc.src.math.sqrtf128
-    libc.src.math.totalorderf128
-    libc.src.math.totalordermagf128
-    libc.src.math.truncf128
-    libc.src.math.ufromfpf128
-    libc.src.math.ufromfpxf128
-  )
-endif()
-
-list(APPEND TARGET_LIBM_ENTRYPOINTS
-  # bfloat16 entrypoints
-  libc.src.math.bf16add
-  libc.src.math.bf16addf
-  libc.src.math.bf16addl
-  libc.src.math.bf16div
-  libc.src.math.bf16divf
-  libc.src.math.bf16divl
-  libc.src.math.bf16fma
-  libc.src.math.bf16fmaf
-  libc.src.math.bf16fmal
-  libc.src.math.bf16mul
-  libc.src.math.bf16mulf
-  libc.src.math.bf16mull
-  libc.src.math.bf16sub
-  libc.src.math.bf16subf
-  libc.src.math.bf16subl
-  libc.src.math.canonicalizebf16
-  libc.src.math.ceilbf16
-  libc.src.math.copysignbf16
-  libc.src.math.fabsbf16
-  libc.src.math.fdimbf16
-  libc.src.math.floorbf16
-  libc.src.math.fmaxbf16
-  libc.src.math.fmaximumbf16
-  libc.src.math.fmaximum_magbf16
-  libc.src.math.fmaximum_mag_numbf16
-  libc.src.math.fmaximum_numbf16
-  libc.src.math.fminbf16
-  libc.src.math.fminimumbf16
-  libc.src.math.fminimum_magbf16
-  libc.src.math.fminimum_mag_numbf16
-  libc.src.math.fminimum_numbf16
-  libc.src.math.fmodbf16
-  libc.src.math.frexpbf16
-  libc.src.math.fromfpbf16
-  libc.src.math.fromfpxbf16
-  libc.src.math.getpayloadbf16
-  libc.src.math.ilogbbf16
-  libc.src.math.iscanonicalbf16
-  libc.src.math.issignalingbf16
-  libc.src.math.ldexpbf16
-  libc.src.math.llogbbf16
-  libc.src.math.llrintbf16
-  libc.src.math.llroundbf16
-  libc.src.math.log_bf16
-  libc.src.math.logbbf16
-  libc.src.math.lrintbf16
-  libc.src.math.lroundbf16
-  libc.src.math.modfbf16
-  libc.src.math.nanbf16
-  libc.src.math.nearbyintbf16
-  libc.src.math.nextafterbf16
-  libc.src.math.nextdownbf16
-  libc.src.math.nexttowardbf16
-  libc.src.math.nextupbf16
-  libc.src.math.remainderbf16
-  libc.src.math.remquobf16
-  libc.src.math.rintbf16
-  libc.src.math.roundbf16
-  libc.src.math.roundevenbf16
-  libc.src.math.scalblnbf16
-  libc.src.math.scalbnbf16
-  libc.src.math.setpayloadbf16
-  libc.src.math.setpayloadsigbf16
-  libc.src.math.sqrtbf16
-  libc.src.math.truncbf16
-  libc.src.math.totalorderbf16
-  libc.src.math.totalordermagbf16
-  libc.src.math.ufromfpbf16
-  libc.src.math.ufromfpxbf16
-)
-
-if(LIBC_TYPES_HAS_FLOAT128)
-  list(APPEND TARGET_LIBM_ENTRYPOINTS
-    # math.h C++23 mixed bfloat16 and _Float128 entrypoints
-    libc.src.math.bf16addf128
-    libc.src.math.bf16mulf128
-    libc.src.math.bf16subf128
-  )
-endif()
-
-if(LIBC_COMPILER_HAS_FIXED_POINT)
-  list(APPEND TARGET_LIBM_ENTRYPOINTS
-    # stdfix.h _Fract and _Accum entrypoints
-    libc.src.stdfix.abshk
-    libc.src.stdfix.abshr
-    libc.src.stdfix.absk
-    libc.src.stdfix.abslk
-    libc.src.stdfix.abslr
-    libc.src.stdfix.absr
-    libc.src.stdfix.exphk
-    libc.src.stdfix.expk
-    libc.src.stdfix.roundhk
-    libc.src.stdfix.roundhr
-    libc.src.stdfix.roundk
-    libc.src.stdfix.roundlk
-    libc.src.stdfix.roundlr
-    libc.src.stdfix.roundr
-    libc.src.stdfix.rounduhk
-    libc.src.stdfix.rounduhr
-    libc.src.stdfix.rounduk
-    libc.src.stdfix.roundulk
-    libc.src.stdfix.roundulr
-    libc.src.stdfix.roundur
-    libc.src.stdfix.sqrtuhk
-    libc.src.stdfix.sqrtuhr
-    libc.src.stdfix.sqrtuk
-    libc.src.stdfix.sqrtur
-    # libc.src.stdfix.sqrtulk
-    libc.src.stdfix.sqrtulr
-    libc.src.stdfix.uhksqrtus
-    libc.src.stdfix.uksqrtui
-    libc.src.stdfix.hrbits
-    libc.src.stdfix.uhrbits
-    libc.src.stdfix.rbits
-    libc.src.stdfix.urbits
-    libc.src.stdfix.lrbits
-    libc.src.stdfix.ulrbits
-    libc.src.stdfix.hkbits
-    libc.src.stdfix.uhkbits
-    libc.src.stdfix.kbits
-    libc.src.stdfix.ukbits
-    libc.src.stdfix.lkbits
-    libc.src.stdfix.ulkbits
-    libc.src.stdfix.bitshr
-    libc.src.stdfix.bitsr
-    libc.src.stdfix.bitslr
-    libc.src.stdfix.bitshk
-    libc.src.stdfix.bitsk
-    libc.src.stdfix.bitslk
-    libc.src.stdfix.bitsuhr
-    libc.src.stdfix.bitsur
-    libc.src.stdfix.bitsulr
-    libc.src.stdfix.bitsuhk
-    libc.src.stdfix.bitsuk
-    libc.src.stdfix.bitsulk
-    libc.src.stdfix.countlshr
-    libc.src.stdfix.countlsr
-    libc.src.stdfix.countlslr
-    libc.src.stdfix.countlshk
-    libc.src.stdfix.countlsk
-    libc.src.stdfix.countlslk
-    libc.src.stdfix.countlsuhr
-    libc.src.stdfix.countlsur
-    libc.src.stdfix.countlsulr
-    libc.src.stdfix.countlsuhk
-    libc.src.stdfix.countlsuk
-    libc.src.stdfix.countlsulk
-  )
-endif()
-
-set(TARGET_LLVMLIBC_ENTRYPOINTS
-  ${TARGET_LIBC_ENTRYPOINTS}
-  ${TARGET_LIBM_ENTRYPOINTS}
-)
+set(TARGET_LIBC_ENTRYPOINTS
+    # ctype.h entrypoints
+    libc.src.ctype.isalnum
+    libc.src.ctype.isalpha
+    libc.src.ctype.isascii
+    libc.src.ctype.isblank
+    libc.src.ctype.iscntrl
+    libc.src.ctype.isdigit
+    libc.src.ctype.isgraph
+    libc.src.ctype.islower
+    libc.src.ctype.isprint
+    libc.src.ctype.ispunct
+    libc.src.ctype.isspace
+    libc.src.ctype.isupper
+    libc.src.ctype.isxdigit
+    libc.src.ctype.toascii
+    libc.src.ctype.tolower
+    libc.src.ctype.toupper
+
+    # errno.h entrypoints
+    libc.src.errno.errno
+
+    # string.h entrypoints
+    libc.src.string.memccpy
+    libc.src.string.memchr
+    libc.src.string.memcmp
+    libc.src.string.memcpy
+    libc.src.string.memmem
+    libc.src.string.memmove
+    libc.src.string.mempcpy
+    libc.src.string.memrchr
+    libc.src.string.memset
+    libc.src.string.stpcpy
+    libc.src.string.stpncpy
+    libc.src.string.strcasestr
+    libc.src.string.strcat
+    libc.src.string.strchr
+    libc.src.string.strchrnul
+    libc.src.string.strcmp
+    libc.src.string.strcpy
+    libc.src.string.strcspn
+    libc.src.string.strlcat
+    libc.src.string.strlcpy
+    libc.src.string.strlen
+    libc.src.string.strncat
+    libc.src.string.strncmp
+    libc.src.string.strncpy
+    libc.src.string.strnlen
+    libc.src.string.strpbrk
+    libc.src.string.strrchr
+    libc.src.string.strspn
+    libc.src.string.strstr
+    libc.src.string.strtok
+    libc.src.string.strtok_r
+
+    # string.h entrypoints that depend on malloc
+    libc.src.string.strdup
+    libc.src.string.strndup
+
+    # strings.h entrypoints
+    libc.src.strings.bcmp
+    libc.src.strings.bcopy
+    libc.src.strings.bzero
+    libc.src.strings.strcasecmp
+    libc.src.strings.strncasecmp
+
+    # inttypes.h entrypoints
+    libc.src.inttypes.imaxabs
+    libc.src.inttypes.imaxdiv
+    libc.src.inttypes.strtoimax
+    libc.src.inttypes.strtoumax
+
+    # stdlib.h entrypoints
+    libc.src.stdlib.abs
+    libc.src.stdlib.atoi
+    libc.src.stdlib.atof
+    libc.src.stdlib.atol
+    libc.src.stdlib.atoll
+    libc.src.stdlib.bsearch
+    libc.src.stdlib.div
+    libc.src.stdlib.labs
+    libc.src.stdlib.ldiv
+    libc.src.stdlib.llabs
+    libc.src.stdlib.lldiv
+    libc.src.stdlib.memalignment
+    libc.src.stdlib.qsort
+    libc.src.stdlib.rand
+    libc.src.stdlib.srand
+    libc.src.stdlib.strtod
+    libc.src.stdlib.strtof
+    libc.src.stdlib.strtol
+    libc.src.stdlib.strtold
+    libc.src.stdlib.strtoll
+    libc.src.stdlib.strtoul
+    libc.src.stdlib.strtoull
+
+    # stdlib.h external entrypoints
+    libc.src.stdlib.malloc
+    libc.src.stdlib.calloc
+    libc.src.stdlib.realloc
+    libc.src.stdlib.free
+
+    # wctype.h entrypoints
+    libc.src.wctype.iswalpha
+)
+
+if(LLVM_LIBC_FULL_BUILD)
+  list(APPEND TARGET_LIBC_ENTRYPOINTS
+    # setjmp.h entrypoints
+    libc.src.setjmp.longjmp
+    libc.src.setjmp.setjmp
+    libc.src.setjmp.siglongjmp
+    libc.src.setjmp.sigsetjmp
+    libc.src.stdlib._Exit
+  )
+endif()
+
+
+set(TARGET_LIBM_ENTRYPOINTS
+    # complex.h entrypoints
+    libc.src.complex.creal
+    libc.src.complex.crealf
+    libc.src.complex.creall
+    libc.src.complex.cimag
+    libc.src.complex.cimagf
+    libc.src.complex.cimagl
+    libc.src.complex.conj
+    libc.src.complex.conjf
+    libc.src.complex.conjl
+    libc.src.complex.cproj
+    libc.src.complex.cprojf
+    libc.src.complex.cprojl
+
+    # fenv.h entrypoints
+    libc.src.fenv.feclearexcept
+    libc.src.fenv.fedisableexcept
+    libc.src.fenv.feenableexcept
+    libc.src.fenv.fegetenv
+    libc.src.fenv.fegetexcept
+    libc.src.fenv.fegetexceptflag
+    libc.src.fenv.fegetround
+    libc.src.fenv.feholdexcept
+    libc.src.fenv.feraiseexcept
+    libc.src.fenv.fesetenv
+    libc.src.fenv.fesetexcept
+    libc.src.fenv.fesetexceptflag
+    libc.src.fenv.fesetround
+    libc.src.fenv.fetestexcept
+    libc.src.fenv.fetestexceptflag
+    libc.src.fenv.feupdateenv
+
+    # math.h entrypoints
+    libc.src.math.acos
+    libc.src.math.acosf
+    libc.src.math.acoshf
+    libc.src.math.asin
+    libc.src.math.asinf
+    libc.src.math.asinhf
+    libc.src.math.atan2
+    libc.src.math.atan2f
+    libc.src.math.atan
+    libc.src.math.atanf
+    libc.src.math.atanhf
+    libc.src.math.canonicalize
+    libc.src.math.canonicalizef
+    libc.src.math.canonicalizel
+    libc.src.math.cbrt
+    libc.src.math.cbrtf
+    libc.src.math.ceil
+    libc.src.math.ceilf
+    libc.src.math.ceill
+    libc.src.math.copysign
+    libc.src.math.copysignf
+    libc.src.math.copysignl
+    libc.src.math.cos
+    libc.src.math.cosf
+    libc.src.math.coshf
+    libc.src.math.cospif
+    libc.src.math.dfmal
+    libc.src.math.dmull
+    libc.src.math.dsqrtl
+    libc.src.math.daddl
+    libc.src.math.ddivl
+    libc.src.math.dsubl
+    libc.src.math.erff
+    libc.src.math.exp
+    libc.src.math.exp10
+    libc.src.math.exp10f
+    libc.src.math.exp10m1f
+    libc.src.math.exp2
+    libc.src.math.exp2f
+    libc.src.math.exp2m1f
+    libc.src.math.expf
+    libc.src.math.expm1
+    libc.src.math.expm1f
+    libc.src.math.fabs
+    libc.src.math.fabsf
+    libc.src.math.fabsl
+    libc.src.math.fadd
+    libc.src.math.faddl
+    libc.src.math.fadd
+    libc.src.math.fdim
+    libc.src.math.fdimf
+    libc.src.math.fdiml
+    libc.src.math.fdiv
+    libc.src.math.fdivl
+    libc.src.math.ffma
+    libc.src.math.ffmal
+    libc.src.math.floor
+    libc.src.math.floorf
+    libc.src.math.floorl
+    libc.src.math.fma
+    libc.src.math.fmabf16
+    libc.src.math.fmaf
+    libc.src.math.fmax
+    libc.src.math.fmaxf
+    libc.src.math.fmaximum
+    libc.src.math.fmaximum_mag
+    libc.src.math.fmaximum_mag_num
+    libc.src.math.fmaximum_mag_numf
+    libc.src.math.fmaximum_mag_numl
+    libc.src.math.fmaximum_magf
+    libc.src.math.fmaximum_magl
+    libc.src.math.fmaximum_num
+    libc.src.math.fmaximum_numf
+    libc.src.math.fmaximum_numl
+    libc.src.math.fmaximumf
+    libc.src.math.fmaximuml
+    libc.src.math.fmaxl
+    libc.src.math.fmin
+    libc.src.math.fminf
+    libc.src.math.fminimum
+    libc.src.math.fminimum_mag
+    libc.src.math.fminimum_mag_num
+    libc.src.math.fminimum_mag_numf
+    libc.src.math.fminimum_mag_numl
+    libc.src.math.fminimum_magf
+    libc.src.math.fminimum_magl
+    libc.src.math.fminimum_num
+    libc.src.math.fminimum_numf
+    libc.src.math.fminimum_numl
+    libc.src.math.fminimumf
+    libc.src.math.fminimuml
+    libc.src.math.fminl
+    libc.src.math.fmod
+    libc.src.math.fmodf
+    libc.src.math.fmodl
+    libc.src.math.fmul
+    libc.src.math.fmull
+    libc.src.math.frexp
+    libc.src.math.frexpf
+    libc.src.math.frexpl
+    libc.src.math.fromfp
+    libc.src.math.fromfpf
+    libc.src.math.fromfpl
+    libc.src.math.fromfpx
+    libc.src.math.fromfpxf
+    libc.src.math.fromfpxl
+    libc.src.math.fsqrt
+    libc.src.math.fsqrtl
+    libc.src.math.fsub
+    libc.src.math.fsubl
+    libc.src.math.getpayload
+    libc.src.math.getpayloadf
+    libc.src.math.getpayloadl
+    libc.src.math.hypot
+    libc.src.math.hypotf
+    libc.src.math.ilogb
+    libc.src.math.ilogbf
+    libc.src.math.ilogbl
+    libc.src.math.iscanonical
+    libc.src.math.iscanonicalf
+    libc.src.math.iscanonicall
+    libc.src.math.isnan
+    libc.src.math.isnanf
+    libc.src.math.isnanl
+    libc.src.math.issignaling
+    libc.src.math.issignalingf
+    libc.src.math.issignalingl
+    libc.src.math.ldexp
+    libc.src.math.ldexpf
+    libc.src.math.ldexpl
+    libc.src.math.llogb
+    libc.src.math.llogbf
+    libc.src.math.llogbl
+    libc.src.math.llrint
+    libc.src.math.llrintf
+    libc.src.math.llrintl
+    libc.src.math.llround
+    libc.src.math.llroundf
+    libc.src.math.llroundl
+    libc.src.math.log
+    libc.src.math.log10
+    libc.src.math.log10f
+    libc.src.math.log1p
+    libc.src.math.log1pf
+    libc.src.math.log2
+    libc.src.math.log2f
+    libc.src.math.logb
+    libc.src.math.logbf
+    libc.src.math.logbl
+    libc.src.math.logf
+    libc.src.math.lrint
+    libc.src.math.lrintf
+    libc.src.math.lrintl
+    libc.src.math.lround
+    libc.src.math.lroundf
+    libc.src.math.lroundl
+    libc.src.math.modf
+    libc.src.math.modff
+    libc.src.math.modfl
+    libc.src.math.nan
+    libc.src.math.nanf
+    libc.src.math.nanl
+    libc.src.math.nearbyint
+    libc.src.math.nearbyintf
+    libc.src.math.nearbyintl
+    libc.src.math.nextafter
+    libc.src.math.nextafterf
+    libc.src.math.nextafterl
+    libc.src.math.nextdown
+    libc.src.math.nextdownf
+    libc.src.math.nextdownl
+    libc.src.math.nexttoward
+    libc.src.math.nexttowardf
+    libc.src.math.nexttowardl
+    libc.src.math.nextup
+    libc.src.math.nextupf
+    libc.src.math.nextupl
+    libc.src.math.pow
+    libc.src.math.powf
+    libc.src.math.remainder
+    libc.src.math.remainderf
+    libc.src.math.remainderl
+    libc.src.math.remquo
+    libc.src.math.remquof
+    libc.src.math.remquol
+    libc.src.math.rint
+    libc.src.math.rintf
+    libc.src.math.rintl
+    libc.src.math.round
+    libc.src.math.roundeven
+    libc.src.math.roundevenf
+    libc.src.math.roundevenl
+    libc.src.math.roundf
+    libc.src.math.roundl
+    libc.src.math.scalbln
+    libc.src.math.scalblnf
+    libc.src.math.scalblnl
+    libc.src.math.scalbn
+    libc.src.math.scalbnf
+    libc.src.math.scalbnl
+    libc.src.math.setpayload
+    libc.src.math.setpayloadf
+    libc.src.math.setpayloadl
+    libc.src.math.setpayloadsig
+    libc.src.math.setpayloadsigf
+    libc.src.math.setpayloadsigl
+    libc.src.math.sin
+    libc.src.math.sincos
+    libc.src.math.sincosf
+    libc.src.math.sinf
+    libc.src.math.sinhf
+    libc.src.math.sinpif
+    libc.src.math.sqrt
+    libc.src.math.sqrtf
+    libc.src.math.sqrtl
+    libc.src.math.tan
+    libc.src.math.tanf
+    libc.src.math.tanhf
+    libc.src.math.tanpif
+    libc.src.math.totalorder
+    libc.src.math.totalorderf
+    libc.src.math.totalorderl
+    libc.src.math.totalordermag
+    libc.src.math.totalordermagf
+    libc.src.math.totalordermagl
+    libc.src.math.trunc
+    libc.src.math.truncf
+    libc.src.math.truncl
+    libc.src.math.ufromfp
+    libc.src.math.ufromfpf
+    libc.src.math.ufromfpl
+    libc.src.math.ufromfpx
+    libc.src.math.ufromfpxf
+    libc.src.math.ufromfpxl
+)
+
+if(LIBC_TYPES_HAS_CFLOAT16)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # complex.h C23 _Complex _Float16 entrypoints
+    libc.src.complex.crealf16
+    libc.src.complex.cimagf16
+    libc.src.complex.conjf16
+    libc.src.complex.cprojf16
+  )
+endif()
+
+if(LIBC_TYPES_HAS_FLOAT16)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # math.h C23 _Float16 entrypoints
+    libc.src.math.acosf16
+    libc.src.math.acoshf16
+    libc.src.math.asinf16
+    libc.src.math.asinhf16
+    libc.src.math.canonicalizef16
+    libc.src.math.ceilf16
+    libc.src.math.copysignf16
+    libc.src.math.cosf16
+    libc.src.math.coshf16
+    libc.src.math.cospif16
+    libc.src.math.exp10f16
+    libc.src.math.exp10m1f16
+    libc.src.math.exp2f16
+    libc.src.math.exp2m1f16
+    libc.src.math.expf16
+    libc.src.math.expm1f16
+    libc.src.math.f16add
+    libc.src.math.f16addf
+    libc.src.math.f16addl
+    libc.src.math.f16div
+    libc.src.math.f16divf
+    libc.src.math.f16divl
+    libc.src.math.f16fma
+    libc.src.math.f16fmaf
+    libc.src.math.f16fmal
+    libc.src.math.f16mul
+    libc.src.math.f16mulf
+    libc.src.math.f16mull
+    libc.src.math.f16sqrt
+    libc.src.math.f16sqrtf
+    libc.src.math.f16sqrtl
+    libc.src.math.f16sub
+    libc.src.math.f16subf
+    libc.src.math.f16subl
+    libc.src.math.fabsf16
+    libc.src.math.fdimf16
+    libc.src.math.floorf16
+    libc.src.math.fmaf16
+    libc.src.math.fmaxf16
+    libc.src.math.fmaximum_mag_numf16
+    libc.src.math.fmaximum_magf16
+    libc.src.math.fmaximum_numf16
+    libc.src.math.fmaximumf16
+    libc.src.math.fminf16
+    libc.src.math.fminimum_mag_numf16
+    libc.src.math.fminimum_magf16
+    libc.src.math.fminimum_numf16
+    libc.src.math.fminimumf16
+    libc.src.math.fmodf16
+    libc.src.math.frexpf16
+    libc.src.math.fromfpf16
+    libc.src.math.fromfpxf16
+    libc.src.math.getpayloadf16
+    libc.src.math.hypotf16
+    libc.src.math.ilogbf16
+    libc.src.math.iscanonicalf16
+    libc.src.math.issignalingf16
+    libc.src.math.ldexpf16
+    libc.src.math.llogbf16
+    libc.src.math.llrintf16
+    libc.src.math.llroundf16
+    libc.src.math.log10f16
+    libc.src.math.log2f16
+    libc.src.math.logbf16
+    libc.src.math.logf16
+    libc.src.math.lrintf16
+    libc.src.math.lroundf16
+    libc.src.math.modff16
+    libc.src.math.nanf16
+    libc.src.math.nearbyintf16
+    libc.src.math.nextafterf16
+    libc.src.math.nextdownf16
+    libc.src.math.nexttowardf16
+    libc.src.math.nextupf16
+    libc.src.math.remainderf16
+    libc.src.math.remquof16
+    libc.src.math.rintf16
+    libc.src.math.roundevenf16
+    libc.src.math.roundf16
+    libc.src.math.scalblnf16
+    libc.src.math.scalbnf16
+    libc.src.math.setpayloadf16
+    libc.src.math.setpayloadsigf16
+    libc.src.math.sinf16
+    libc.src.math.sinhf16
+    libc.src.math.sinpif16
+    libc.src.math.sqrtf16
+    libc.src.math.tanf16
+    libc.src.math.tanhf16
+    libc.src.math.tanpif16
+    libc.src.math.totalorderf16
+    libc.src.math.totalordermagf16
+    libc.src.math.truncf16
+    libc.src.math.ufromfpf16
+    libc.src.math.ufromfpxf16
+  )
+
+  if(LIBC_TYPES_HAS_FLOAT128)
+    list(APPEND TARGET_LIBM_ENTRYPOINTS
+      # math.h C23 mixed _Float16 and _Float128 entrypoints
+      libc.src.math.f16addf128
+      libc.src.math.f16divf128
+      libc.src.math.f16fmaf128
+      libc.src.math.f16mulf128
+      libc.src.math.f16sqrtf128
+      libc.src.math.f16subf128
+    )
+  endif()
+endif()
+
+if(LIBC_TYPES_HAS_CFLOAT128)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # complex.h C23 _Complex _Float128 entrypoints
+    libc.src.complex.crealf128
+    libc.src.complex.cimagf128
+    libc.src.complex.conjf128
+    libc.src.complex.cprojf128
+  )
+endif()
+
+if(LIBC_TYPES_HAS_FLOAT128)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # math.h C23 _Float128 entrypoints
+    libc.src.math.atan2f128
+    libc.src.math.canonicalizef128
+    libc.src.math.ceilf128
+    libc.src.math.copysignf128
+    libc.src.math.daddf128
+    libc.src.math.ddivf128
+    libc.src.math.dfmaf128
+    libc.src.math.dmulf128
+    libc.src.math.dsqrtf128
+    libc.src.math.dsubf128
+    libc.src.math.fabsf128
+    libc.src.math.faddf128
+    libc.src.math.fdimf128
+    libc.src.math.fdivf128
+    libc.src.math.ffmaf128
+    libc.src.math.floorf128
+    libc.src.math.fmaxf128
+    libc.src.math.fmaximum_mag_numf128
+    libc.src.math.fmaximum_magf128
+    libc.src.math.fmaximum_numf128
+    libc.src.math.fmaximumf128
+    libc.src.math.fminf128
+    libc.src.math.fminimum_mag_numf128
+    libc.src.math.fminimum_magf128
+    libc.src.math.fminimum_numf128
+    libc.src.math.fminimumf128
+    libc.src.math.fmodf128
+    libc.src.math.fmulf128
+    libc.src.math.frexpf128
+    libc.src.math.fromfpf128
+    libc.src.math.fromfpxf128
+    libc.src.math.fsqrtf128
+    libc.src.math.fsubf128
+    libc.src.math.getpayloadf128
+    libc.src.math.ilogbf128
+    libc.src.math.iscanonicalf128
+    libc.src.math.issignalingf128
+    libc.src.math.ldexpf128
+    libc.src.math.llogbf128
+    libc.src.math.llrintf128
+    libc.src.math.llroundf128
+    libc.src.math.logbf128
+    libc.src.math.lrintf128
+    libc.src.math.lroundf128
+    libc.src.math.modff128
+    libc.src.math.nanf128
+    libc.src.math.nearbyintf128
+    libc.src.math.nextafterf128
+    libc.src.math.nextdownf128
+    libc.src.math.nextupf128
+    libc.src.math.remainderf128
+    libc.src.math.remquof128
+    libc.src.math.rintf128
+    libc.src.math.roundevenf128
+    libc.src.math.roundf128
+    libc.src.math.scalblnf128
+    libc.src.math.scalbnf128
+    libc.src.math.setpayloadf128
+    libc.src.math.setpayloadsigf128
+    libc.src.math.sqrtf128
+    libc.src.math.totalorderf128
+    libc.src.math.totalordermagf128
+    libc.src.math.truncf128
+    libc.src.math.ufromfpf128
+    libc.src.math.ufromfpxf128
+  )
+endif()
+
+list(APPEND TARGET_LIBM_ENTRYPOINTS
+  # bfloat16 entrypoints
+  libc.src.math.bf16add
+  libc.src.math.bf16addf
+  libc.src.math.bf16addl
+  libc.src.math.bf16div
+  libc.src.math.bf16divf
+  libc.src.math.bf16divl
+  libc.src.math.bf16fma
+  libc.src.math.bf16fmaf
+  libc.src.math.bf16fmal
+  libc.src.math.bf16mul
+  libc.src.math.bf16mulf
+  libc.src.math.bf16mull
+  libc.src.math.bf16sub
+  libc.src.math.bf16subf
+  libc.src.math.bf16subl
+  libc.src.math.canonicalizebf16
+  libc.src.math.ceilbf16
+  libc.src.math.copysignbf16
+  libc.src.math.fabsbf16
+  libc.src.math.fdimbf16
+  libc.src.math.floorbf16
+  libc.src.math.fmaxbf16
+  libc.src.math.fmaximumbf16
+  libc.src.math.fmaximum_magbf16
+  libc.src.math.fmaximum_mag_numbf16
+  libc.src.math.fmaximum_numbf16
+  libc.src.math.fminbf16
+  libc.src.math.fminimumbf16
+  libc.src.math.fminimum_magbf16
+  libc.src.math.fminimum_mag_numbf16
+  libc.src.math.fminimum_numbf16
+  libc.src.math.fmodbf16
+  libc.src.math.frexpbf16
+  libc.src.math.fromfpbf16
+  libc.src.math.fromfpxbf16
+  libc.src.math.getpayloadbf16
+  libc.src.math.ilogbbf16
+  libc.src.math.iscanonicalbf16
+  libc.src.math.issignalingbf16
+  libc.src.math.ldexpbf16
+  libc.src.math.llogbbf16
+  libc.src.math.llrintbf16
+  libc.src.math.llroundbf16
+  libc.src.math.log_bf16
+  libc.src.math.logbbf16
+  libc.src.math.lrintbf16
+  libc.src.math.lroundbf16
+  libc.src.math.modfbf16
+  libc.src.math.nanbf16
+  libc.src.math.nearbyintbf16
+  libc.src.math.nextafterbf16
+  libc.src.math.nextdownbf16
+  libc.src.math.nexttowardbf16
+  libc.src.math.nextupbf16
+  libc.src.math.remainderbf16
+  libc.src.math.remquobf16
+  libc.src.math.rintbf16
+  libc.src.math.roundbf16
+  libc.src.math.roundevenbf16
+  libc.src.math.scalblnbf16
+  libc.src.math.scalbnbf16
+  libc.src.math.setpayloadbf16
+  libc.src.math.setpayloadsigbf16
+  libc.src.math.sqrtbf16
+  libc.src.math.truncbf16
+  libc.src.math.totalorderbf16
+  libc.src.math.totalordermagbf16
+  libc.src.math.ufromfpbf16
+  libc.src.math.ufromfpxbf16
+)
+
+if(LIBC_TYPES_HAS_FLOAT128)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # math.h C++23 mixed bfloat16 and _Float128 entrypoints
+    libc.src.math.bf16addf128
+    libc.src.math.bf16mulf128
+    libc.src.math.bf16subf128
+  )
+endif()
+
+if(LIBC_COMPILER_HAS_FIXED_POINT)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # stdfix.h _Fract and _Accum entrypoints
+    libc.src.stdfix.abshk
+    libc.src.stdfix.abshr
+    libc.src.stdfix.absk
+    libc.src.stdfix.abslk
+    libc.src.stdfix.abslr
+    libc.src.stdfix.absr
+    libc.src.stdfix.exphk
+    libc.src.stdfix.expk
+    libc.src.stdfix.roundhk
+    libc.src.stdfix.roundhr
+    libc.src.stdfix.roundk
+    libc.src.stdfix.roundlk
+    libc.src.stdfix.roundlr
+    libc.src.stdfix.roundr
+    libc.src.stdfix.rounduhk
+    libc.src.stdfix.rounduhr
+    libc.src.stdfix.rounduk
+    libc.src.stdfix.roundulk
+    libc.src.stdfix.roundulr
+    libc.src.stdfix.roundur
+    libc.src.stdfix.sqrtuhk
+    libc.src.stdfix.sqrtuhr
+    libc.src.stdfix.sqrtuk
+    libc.src.stdfix.sqrtur
+    # libc.src.stdfix.sqrtulk
+    libc.src.stdfix.sqrtulr
+    libc.src.stdfix.uhksqrtus
+    libc.src.stdfix.uksqrtui
+    libc.src.stdfix.hrbits
+    libc.src.stdfix.uhrbits
+    libc.src.stdfix.rbits
+    libc.src.stdfix.urbits
+    libc.src.stdfix.lrbits
+    libc.src.stdfix.ulrbits
+    libc.src.stdfix.hkbits
+    libc.src.stdfix.uhkbits
+    libc.src.stdfix.kbits
+    libc.src.stdfix.ukbits
+    libc.src.stdfix.lkbits
+    libc.src.stdfix.ulkbits
+    libc.src.stdfix.bitshr
+    libc.src.stdfix.bitsr
+    libc.src.stdfix.bitslr
+    libc.src.stdfix.bitshk
+    libc.src.stdfix.bitsk
+    libc.src.stdfix.bitslk
+    libc.src.stdfix.bitsuhr
+    libc.src.stdfix.bitsur
+    libc.src.stdfix.bitsulr
+    libc.src.stdfix.bitsuhk
+    libc.src.stdfix.bitsuk
+    libc.src.stdfix.bitsulk
+    libc.src.stdfix.countlshr
+    libc.src.stdfix.countlsr
+    libc.src.stdfix.countlslr
+    libc.src.stdfix.countlshk
+    libc.src.stdfix.countlsk
+    libc.src.stdfix.countlslk
+    libc.src.stdfix.countlsuhr
+    libc.src.stdfix.countlsur
+    libc.src.stdfix.countlsulr
+    libc.src.stdfix.countlsuhk
+    libc.src.stdfix.countlsuk
+    libc.src.stdfix.countlsulk
+  )
+endif()
+
+set(TARGET_LLVMLIBC_ENTRYPOINTS
+  ${TARGET_LIBC_ENTRYPOINTS}
+  ${TARGET_LIBM_ENTRYPOINTS}
+)
diff --git a/libc/config/darwin/x86_64/entrypoints.txt b/libc/config/darwin/x86_64/entrypoints.txt
index d27510602df62..13e92f75d020f 100644
--- a/libc/config/darwin/x86_64/entrypoints.txt
+++ b/libc/config/darwin/x86_64/entrypoints.txt
@@ -1,311 +1,311 @@
-set(TARGET_LIBC_ENTRYPOINTS
-    # ctype.h entrypoints
-    libc.src.ctype.isalnum
-    libc.src.ctype.isalpha
-    libc.src.ctype.isascii
-    libc.src.ctype.isblank
-    libc.src.ctype.iscntrl
-    libc.src.ctype.isdigit
-    libc.src.ctype.isgraph
-    libc.src.ctype.islower
-    libc.src.ctype.isprint
-    libc.src.ctype.ispunct
-    libc.src.ctype.isspace
-    libc.src.ctype.isupper
-    libc.src.ctype.isxdigit
-    libc.src.ctype.toascii
-    libc.src.ctype.tolower
-    libc.src.ctype.toupper
-
-    # search.h entrypoints
-    libc.src.search.lfind
-
-    # string.h entrypoints
-    libc.src.string.memccpy
-    libc.src.string.memchr
-    libc.src.string.memcmp
-    libc.src.string.memcpy
-    libc.src.string.memmem
-    libc.src.string.memmove
-    libc.src.string.mempcpy
-    libc.src.string.memrchr
-    libc.src.string.memset
-    libc.src.string.stpcpy
-    libc.src.string.stpncpy
-    libc.src.string.strcat
-    libc.src.string.strchr
-    libc.src.string.strchrnul
-    libc.src.string.strcmp
-    libc.src.string.strcpy
-    libc.src.string.strcspn
-    libc.src.string.strlcat
-    libc.src.string.strlcpy
-    libc.src.string.strlen
-    libc.src.string.strncat
-    libc.src.string.strncmp
-    libc.src.string.strncpy
-    libc.src.string.strnlen
-    libc.src.string.strpbrk
-    libc.src.string.strrchr
-    libc.src.string.strspn
-    libc.src.string.strstr
-    libc.src.string.strtok
-    libc.src.string.strtok_r
-
-    # string.h entrypoints that depend on malloc
-    libc.src.string.strdup
-    libc.src.string.strndup
-
-    # strings.h entrypoints
-    libc.src.strings.bcmp
-    libc.src.strings.bzero
-
-    # inttypes.h entrypoints
-    libc.src.inttypes.imaxabs
-    libc.src.inttypes.imaxdiv
-    libc.src.inttypes.strtoimax
-    libc.src.inttypes.strtoumax
-
-    # stdlib.h entrypoints
-    libc.src.stdlib.abs
-    libc.src.stdlib.atoi
-    libc.src.stdlib.atof
-    libc.src.stdlib.atol
-    libc.src.stdlib.atoll
-    libc.src.stdlib.bsearch
-    libc.src.stdlib.div
-    libc.src.stdlib.labs
-    libc.src.stdlib.ldiv
-    libc.src.stdlib.llabs
-    libc.src.stdlib.lldiv
-    libc.src.stdlib.memalignment
-    libc.src.stdlib.qsort
-    libc.src.stdlib.strtod
-    libc.src.stdlib.strtof
-    libc.src.stdlib.strtol
-    libc.src.stdlib.strtold
-    libc.src.stdlib.strtoll
-    libc.src.stdlib.strtoul
-    libc.src.stdlib.strtoull
-
-    # stdlib.h external entrypoints
-    libc.src.stdlib.malloc
-    libc.src.stdlib.calloc
-    libc.src.stdlib.realloc
-    libc.src.stdlib.free
-)
-
-set(TARGET_LIBM_ENTRYPOINTS
-    # fenv disabled on x86_64 MacOS for now.
-    # # fenv.h entrypoints
-    # libc.src.fenv.feclearexcept
-    # libc.src.fenv.fedisableexcept
-    # libc.src.fenv.feenableexcept
-    # libc.src.fenv.fegetenv
-    # libc.src.fenv.fegetexcept
-    # libc.src.fenv.fegetexceptflag
-    # libc.src.fenv.fegetround
-    # libc.src.fenv.feholdexcept
-    # libc.src.fenv.fesetenv
-    # libc.src.fenv.fesetexcept
-    # libc.src.fenv.fesetexceptflag
-    # libc.src.fenv.fesetround
-    # libc.src.fenv.feraiseexcept
-    # libc.src.fenv.fetestexcept
-    # libc.src.fenv.fetestexceptflag
-    # libc.src.fenv.feupdateenv
-
-    ## Currently disabled for failing tests.
-    # math.h entrypoints
-    #libc.src.math.copysign
-    #libc.src.math.copysignf
-    #libc.src.math.copysignl
-    #libc.src.math.ceil
-    #libc.src.math.ceilf
-    #libc.src.math.ceill
-    #libc.src.math.coshf
-    #libc.src.math.cosf
-    #libc.src.math.daddl
-    #libc.src.math.ddivl
-    #libc.src.math.dfmal
-    #libc.src.math.dsqrtl
-    #libc.src.math.dsubl
-    #libc.src.math.expf
-    #libc.src.math.exp2f
-    #libc.src.math.expm1f
-    #libc.src.math.fabs
-    #libc.src.math.fabsf
-    #libc.src.math.fabsl
-    #libc.src.math.fdim
-    #libc.src.math.fdimf
-    #libc.src.math.fdiml
-    #libc.src.math.fdiv
-    #libc.src.math.fdivl
-    #libc.src.math.ffma
-    #libc.src.math.ffmal
-    #libc.src.math.floor
-    #libc.src.math.floorf
-    #libc.src.math.floorl
-    #libc.src.math.fma
-    #libc.src.math.fmabf16
-    #libc.src.math.fmaf
-    #libc.src.math.fmax
-    #libc.src.math.fmaxf
-    #libc.src.math.fmaxl
-    #libc.src.math.fmin
-    #libc.src.math.fminf
-    #libc.src.math.fminl
-    #libc.src.math.fmod
-    #libc.src.math.fmodf
-    #libc.src.math.frexp
-    #libc.src.math.frexpf
-    #libc.src.math.frexpl
-    #libc.src.math.fsub
-    #libc.src.math.fsubl
-    #libc.src.math.hypot
-    #libc.src.math.hypotf
-    #libc.src.math.ilogb
-    #libc.src.math.ilogbf
-    #libc.src.math.ilogbl
-    #libc.src.math.llrint
-    #libc.src.math.llrintf
-    #libc.src.math.llrintl
-    #libc.src.math.llround
-    #libc.src.math.llroundf
-    #libc.src.math.llroundl
-    #libc.src.math.lrint
-    #libc.src.math.lrintf
-    #libc.src.math.lrintl
-    #libc.src.math.lround
-    #libc.src.math.lroundf
-    #libc.src.math.lroundl
-    #libc.src.math.ldexp
-    #libc.src.math.ldexpf
-    #libc.src.math.ldexpl
-    #libc.src.math.log10f
-    #libc.src.math.log1pf
-    #libc.src.math.log2f
-    #libc.src.math.logf
-    #libc.src.math.logb
-    #libc.src.math.logbf
-    #libc.src.math.logbl
-    #libc.src.math.modf
-    #libc.src.math.modff
-    #libc.src.math.modfl
-    #libc.src.math.nan
-    #libc.src.math.nanf
-    #libc.src.math.nanl
-    #libc.src.math.nearbyint
-    #libc.src.math.nearbyintf
-    #libc.src.math.nearbyintl
-    #libc.src.math.nextafter
-    #libc.src.math.nextafterf
-    #libc.src.math.nextafterl
-    #libc.src.math.nexttoward
-    #libc.src.math.nexttowardf
-    #libc.src.math.nexttowardl
-    #libc.src.math.remainderf
-    #libc.src.math.remainder
-    #libc.src.math.remainderl
-    #libc.src.math.remquof
-    #libc.src.math.remquo
-    #libc.src.math.remquol
-    #libc.src.math.rint
-    #libc.src.math.rintf
-    #libc.src.math.rintl
-    #libc.src.math.round
-    #libc.src.math.roundf
-    #libc.src.math.roundl
-    #libc.src.math.sincosf
-    #libc.src.math.sinhf
-    #libc.src.math.sinf
-    #libc.src.math.sqrt
-    #libc.src.math.sqrtf
-    #libc.src.math.sqrtl
-    #libc.src.math.tanf
-    #libc.src.math.tanhf
-    #libc.src.math.totalordermag
-    #libc.src.math.totalordermagf
-    #libc.src.math.totalordermagl
-    #libc.src.math.trunc
-    #libc.src.math.truncf
-    #libc.src.math.truncl
-)
-
-list(APPEND TARGET_LIBM_ENTRYPOINTS
-  # bfloat16 entrypoints
-  libc.src.math.bf16add
-  libc.src.math.bf16addf
-  libc.src.math.bf16addl
-  libc.src.math.bf16div
-  libc.src.math.bf16divf
-  libc.src.math.bf16divl
-  libc.src.math.bf16fma
-  libc.src.math.bf16fmaf
-  libc.src.math.bf16fmal
-  libc.src.math.bf16mul
-  libc.src.math.bf16mulf
-  libc.src.math.bf16mull
-  libc.src.math.bf16sub
-  libc.src.math.bf16subf
-  libc.src.math.bf16subl
-  libc.src.math.canonicalizebf16
-  libc.src.math.ceilbf16
-  libc.src.math.copysignbf16
-  libc.src.math.fabsbf16
-  libc.src.math.fdimbf16
-  libc.src.math.floorbf16
-  libc.src.math.fmaxbf16
-  libc.src.math.fmaximumbf16
-  libc.src.math.fmaximum_magbf16
-  libc.src.math.fmaximum_mag_numbf16
-  libc.src.math.fmaximum_numbf16
-  libc.src.math.fminbf16
-  libc.src.math.fminimumbf16
-  libc.src.math.fminimum_magbf16
-  libc.src.math.fminimum_mag_numbf16
-  libc.src.math.fminimum_numbf16
-  libc.src.math.fmodbf16
-  libc.src.math.frexpbf16
-  libc.src.math.fromfpbf16
-  libc.src.math.fromfpxbf16
-  libc.src.math.getpayloadbf16
-  libc.src.math.ilogbbf16
-  libc.src.math.iscanonicalbf16
-  libc.src.math.issignalingbf16
-  libc.src.math.ldexpbf16
-  libc.src.math.llogbbf16
-  libc.src.math.llrintbf16
-  libc.src.math.llroundbf16
-  libc.src.math.log_bf16
-  libc.src.math.logbbf16
-  libc.src.math.lrintbf16
-  libc.src.math.lroundbf16
-  libc.src.math.modfbf16
-  libc.src.math.nanbf16
-  libc.src.math.nearbyintbf16
-  libc.src.math.nextafterbf16
-  libc.src.math.nextdownbf16
-  libc.src.math.nexttowardbf16
-  libc.src.math.nextupbf16
-  libc.src.math.remainderbf16
-  libc.src.math.remquobf16
-  libc.src.math.rintbf16
-  libc.src.math.roundbf16
-  libc.src.math.roundevenbf16
-  libc.src.math.scalblnbf16
-  libc.src.math.scalbnbf16
-  libc.src.math.setpayloadbf16
-  libc.src.math.setpayloadsigbf16
-  libc.src.math.sqrtbf16
-  libc.src.math.truncbf16
-  libc.src.math.totalorderbf16
-  libc.src.math.totalordermagbf16
-  libc.src.math.ufromfpbf16
-  libc.src.math.ufromfpxbf16
-)
-
-set(TARGET_LLVMLIBC_ENTRYPOINTS
-  ${TARGET_LIBC_ENTRYPOINTS}
-  ${TARGET_LIBM_ENTRYPOINTS}
-)
+set(TARGET_LIBC_ENTRYPOINTS
+    # ctype.h entrypoints
+    libc.src.ctype.isalnum
+    libc.src.ctype.isalpha
+    libc.src.ctype.isascii
+    libc.src.ctype.isblank
+    libc.src.ctype.iscntrl
+    libc.src.ctype.isdigit
+    libc.src.ctype.isgraph
+    libc.src.ctype.islower
+    libc.src.ctype.isprint
+    libc.src.ctype.ispunct
+    libc.src.ctype.isspace
+    libc.src.ctype.isupper
+    libc.src.ctype.isxdigit
+    libc.src.ctype.toascii
+    libc.src.ctype.tolower
+    libc.src.ctype.toupper
+
+    # search.h entrypoints
+    libc.src.search.lfind
+
+    # string.h entrypoints
+    libc.src.string.memccpy
+    libc.src.string.memchr
+    libc.src.string.memcmp
+    libc.src.string.memcpy
+    libc.src.string.memmem
+    libc.src.string.memmove
+    libc.src.string.mempcpy
+    libc.src.string.memrchr
+    libc.src.string.memset
+    libc.src.string.stpcpy
+    libc.src.string.stpncpy
+    libc.src.string.strcat
+    libc.src.string.strchr
+    libc.src.string.strchrnul
+    libc.src.string.strcmp
+    libc.src.string.strcpy
+    libc.src.string.strcspn
+    libc.src.string.strlcat
+    libc.src.string.strlcpy
+    libc.src.string.strlen
+    libc.src.string.strncat
+    libc.src.string.strncmp
+    libc.src.string.strncpy
+    libc.src.string.strnlen
+    libc.src.string.strpbrk
+    libc.src.string.strrchr
+    libc.src.string.strspn
+    libc.src.string.strstr
+    libc.src.string.strtok
+    libc.src.string.strtok_r
+
+    # string.h entrypoints that depend on malloc
+    libc.src.string.strdup
+    libc.src.string.strndup
+
+    # strings.h entrypoints
+    libc.src.strings.bcmp
+    libc.src.strings.bzero
+
+    # inttypes.h entrypoints
+    libc.src.inttypes.imaxabs
+    libc.src.inttypes.imaxdiv
+    libc.src.inttypes.strtoimax
+    libc.src.inttypes.strtoumax
+
+    # stdlib.h entrypoints
+    libc.src.stdlib.abs
+    libc.src.stdlib.atoi
+    libc.src.stdlib.atof
+    libc.src.stdlib.atol
+    libc.src.stdlib.atoll
+    libc.src.stdlib.bsearch
+    libc.src.stdlib.div
+    libc.src.stdlib.labs
+    libc.src.stdlib.ldiv
+    libc.src.stdlib.llabs
+    libc.src.stdlib.lldiv
+    libc.src.stdlib.memalignment
+    libc.src.stdlib.qsort
+    libc.src.stdlib.strtod
+    libc.src.stdlib.strtof
+    libc.src.stdlib.strtol
+    libc.src.stdlib.strtold
+    libc.src.stdlib.strtoll
+    libc.src.stdlib.strtoul
+    libc.src.stdlib.strtoull
+
+    # stdlib.h external entrypoints
+    libc.src.stdlib.malloc
+    libc.src.stdlib.calloc
+    libc.src.stdlib.realloc
+    libc.src.stdlib.free
+)
+
+set(TARGET_LIBM_ENTRYPOINTS
+    # fenv disabled on x86_64 MacOS for now.
+    # # fenv.h entrypoints
+    # libc.src.fenv.feclearexcept
+    # libc.src.fenv.fedisableexcept
+    # libc.src.fenv.feenableexcept
+    # libc.src.fenv.fegetenv
+    # libc.src.fenv.fegetexcept
+    # libc.src.fenv.fegetexceptflag
+    # libc.src.fenv.fegetround
+    # libc.src.fenv.feholdexcept
+    # libc.src.fenv.fesetenv
+    # libc.src.fenv.fesetexcept
+    # libc.src.fenv.fesetexceptflag
+    # libc.src.fenv.fesetround
+    # libc.src.fenv.feraiseexcept
+    # libc.src.fenv.fetestexcept
+    # libc.src.fenv.fetestexceptflag
+    # libc.src.fenv.feupdateenv
+
+    ## Currently disabled for failing tests.
+    # math.h entrypoints
+    #libc.src.math.copysign
+    #libc.src.math.copysignf
+    #libc.src.math.copysignl
+    #libc.src.math.ceil
+    #libc.src.math.ceilf
+    #libc.src.math.ceill
+    #libc.src.math.coshf
+    #libc.src.math.cosf
+    #libc.src.math.daddl
+    #libc.src.math.ddivl
+    #libc.src.math.dfmal
+    #libc.src.math.dsqrtl
+    #libc.src.math.dsubl
+    #libc.src.math.expf
+    #libc.src.math.exp2f
+    #libc.src.math.expm1f
+    #libc.src.math.fabs
+    #libc.src.math.fabsf
+    #libc.src.math.fabsl
+    #libc.src.math.fdim
+    #libc.src.math.fdimf
+    #libc.src.math.fdiml
+    #libc.src.math.fdiv
+    #libc.src.math.fdivl
+    #libc.src.math.ffma
+    #libc.src.math.ffmal
+    #libc.src.math.floor
+    #libc.src.math.floorf
+    #libc.src.math.floorl
+    #libc.src.math.fma
+    #libc.src.math.fmabf16
+    #libc.src.math.fmaf
+    #libc.src.math.fmax
+    #libc.src.math.fmaxf
+    #libc.src.math.fmaxl
+    #libc.src.math.fmin
+    #libc.src.math.fminf
+    #libc.src.math.fminl
+    #libc.src.math.fmod
+    #libc.src.math.fmodf
+    #libc.src.math.frexp
+    #libc.src.math.frexpf
+    #libc.src.math.frexpl
+    #libc.src.math.fsub
+    #libc.src.math.fsubl
+    #libc.src.math.hypot
+    #libc.src.math.hypotf
+    #libc.src.math.ilogb
+    #libc.src.math.ilogbf
+    #libc.src.math.ilogbl
+    #libc.src.math.llrint
+    #libc.src.math.llrintf
+    #libc.src.math.llrintl
+    #libc.src.math.llround
+    #libc.src.math.llroundf
+    #libc.src.math.llroundl
+    #libc.src.math.lrint
+    #libc.src.math.lrintf
+    #libc.src.math.lrintl
+    #libc.src.math.lround
+    #libc.src.math.lroundf
+    #libc.src.math.lroundl
+    #libc.src.math.ldexp
+    #libc.src.math.ldexpf
+    #libc.src.math.ldexpl
+    #libc.src.math.log10f
+    #libc.src.math.log1pf
+    #libc.src.math.log2f
+    #libc.src.math.logf
+    #libc.src.math.logb
+    #libc.src.math.logbf
+    #libc.src.math.logbl
+    #libc.src.math.modf
+    #libc.src.math.modff
+    #libc.src.math.modfl
+    #libc.src.math.nan
+    #libc.src.math.nanf
+    #libc.src.math.nanl
+    #libc.src.math.nearbyint
+    #libc.src.math.nearbyintf
+    #libc.src.math.nearbyintl
+    #libc.src.math.nextafter
+    #libc.src.math.nextafterf
+    #libc.src.math.nextafterl
+    #libc.src.math.nexttoward
+    #libc.src.math.nexttowardf
+    #libc.src.math.nexttowardl
+    #libc.src.math.remainderf
+    #libc.src.math.remainder
+    #libc.src.math.remainderl
+    #libc.src.math.remquof
+    #libc.src.math.remquo
+    #libc.src.math.remquol
+    #libc.src.math.rint
+    #libc.src.math.rintf
+    #libc.src.math.rintl
+    #libc.src.math.round
+    #libc.src.math.roundf
+    #libc.src.math.roundl
+    #libc.src.math.sincosf
+    #libc.src.math.sinhf
+    #libc.src.math.sinf
+    #libc.src.math.sqrt
+    #libc.src.math.sqrtf
+    #libc.src.math.sqrtl
+    #libc.src.math.tanf
+    #libc.src.math.tanhf
+    #libc.src.math.totalordermag
+    #libc.src.math.totalordermagf
+    #libc.src.math.totalordermagl
+    #libc.src.math.trunc
+    #libc.src.math.truncf
+    #libc.src.math.truncl
+)
+
+list(APPEND TARGET_LIBM_ENTRYPOINTS
+  # bfloat16 entrypoints
+  libc.src.math.bf16add
+  libc.src.math.bf16addf
+  libc.src.math.bf16addl
+  libc.src.math.bf16div
+  libc.src.math.bf16divf
+  libc.src.math.bf16divl
+  libc.src.math.bf16fma
+  libc.src.math.bf16fmaf
+  libc.src.math.bf16fmal
+  libc.src.math.bf16mul
+  libc.src.math.bf16mulf
+  libc.src.math.bf16mull
+  libc.src.math.bf16sub
+  libc.src.math.bf16subf
+  libc.src.math.bf16subl
+  libc.src.math.canonicalizebf16
+  libc.src.math.ceilbf16
+  libc.src.math.copysignbf16
+  libc.src.math.fabsbf16
+  libc.src.math.fdimbf16
+  libc.src.math.floorbf16
+  libc.src.math.fmaxbf16
+  libc.src.math.fmaximumbf16
+  libc.src.math.fmaximum_magbf16
+  libc.src.math.fmaximum_mag_numbf16
+  libc.src.math.fmaximum_numbf16
+  libc.src.math.fminbf16
+  libc.src.math.fminimumbf16
+  libc.src.math.fminimum_magbf16
+  libc.src.math.fminimum_mag_numbf16
+  libc.src.math.fminimum_numbf16
+  libc.src.math.fmodbf16
+  libc.src.math.frexpbf16
+  libc.src.math.fromfpbf16
+  libc.src.math.fromfpxbf16
+  libc.src.math.getpayloadbf16
+  libc.src.math.ilogbbf16
+  libc.src.math.iscanonicalbf16
+  libc.src.math.issignalingbf16
+  libc.src.math.ldexpbf16
+  libc.src.math.llogbbf16
+  libc.src.math.llrintbf16
+  libc.src.math.llroundbf16
+  libc.src.math.log_bf16
+  libc.src.math.logbbf16
+  libc.src.math.lrintbf16
+  libc.src.math.lroundbf16
+  libc.src.math.modfbf16
+  libc.src.math.nanbf16
+  libc.src.math.nearbyintbf16
+  libc.src.math.nextafterbf16
+  libc.src.math.nextdownbf16
+  libc.src.math.nexttowardbf16
+  libc.src.math.nextupbf16
+  libc.src.math.remainderbf16
+  libc.src.math.remquobf16
+  libc.src.math.rintbf16
+  libc.src.math.roundbf16
+  libc.src.math.roundevenbf16
+  libc.src.math.scalblnbf16
+  libc.src.math.scalbnbf16
+  libc.src.math.setpayloadbf16
+  libc.src.math.setpayloadsigbf16
+  libc.src.math.sqrtbf16
+  libc.src.math.truncbf16
+  libc.src.math.totalorderbf16
+  libc.src.math.totalordermagbf16
+  libc.src.math.ufromfpbf16
+  libc.src.math.ufromfpxbf16
+)
+
+set(TARGET_LLVMLIBC_ENTRYPOINTS
+  ${TARGET_LIBC_ENTRYPOINTS}
+  ${TARGET_LIBM_ENTRYPOINTS}
+)
diff --git a/libc/config/gpu/amdgpu/entrypoints.txt b/libc/config/gpu/amdgpu/entrypoints.txt
index 9ab7d517cf57c..01a7fc56a2d8d 100644
--- a/libc/config/gpu/amdgpu/entrypoints.txt
+++ b/libc/config/gpu/amdgpu/entrypoints.txt
@@ -1,694 +1,694 @@
-set(TARGET_LIBC_ENTRYPOINTS
-    # assert.h entrypoints
-    libc.src.assert.__assert_fail
-
-    # ctype.h entrypoints
-    libc.src.ctype.isalnum
-    libc.src.ctype.isalnum_l
-    libc.src.ctype.isalpha
-    libc.src.ctype.isalpha_l
-    libc.src.ctype.isascii
-    libc.src.ctype.isblank
-    libc.src.ctype.isblank_l
-    libc.src.ctype.iscntrl
-    libc.src.ctype.iscntrl_l
-    libc.src.ctype.isdigit
-    libc.src.ctype.isdigit_l
-    libc.src.ctype.isgraph
-    libc.src.ctype.isgraph_l
-    libc.src.ctype.islower
-    libc.src.ctype.islower_l
-    libc.src.ctype.isprint
-    libc.src.ctype.isprint_l
-    libc.src.ctype.ispunct
-    libc.src.ctype.ispunct_l
-    libc.src.ctype.isspace
-    libc.src.ctype.isspace_l
-    libc.src.ctype.isupper
-    libc.src.ctype.isupper_l
-    libc.src.ctype.isxdigit
-    libc.src.ctype.isxdigit_l
-    libc.src.ctype.toascii
-    libc.src.ctype.tolower
-    libc.src.ctype.tolower_l
-    libc.src.ctype.toupper
-    libc.src.ctype.toupper_l
-
-    # string.h entrypoints
-    libc.src.string.memccpy
-    libc.src.string.memchr
-    libc.src.string.memcmp
-    libc.src.string.memcpy
-    libc.src.string.memmem
-    libc.src.string.memmove
-    libc.src.string.mempcpy
-    libc.src.string.memrchr
-    libc.src.string.memset
-    libc.src.string.stpcpy
-    libc.src.string.stpncpy
-    libc.src.string.strcasestr
-    libc.src.string.strcat
-    libc.src.string.strchr
-    libc.src.string.strchrnul
-    libc.src.string.strcmp
-    libc.src.string.strcoll
-    libc.src.string.strcoll_l
-    libc.src.string.strcpy
-    libc.src.string.strcspn
-    libc.src.string.strdup
-    libc.src.string.strerror
-    libc.src.string.strlcat
-    libc.src.string.strlcpy
-    libc.src.string.strlen
-    libc.src.string.strncat
-    libc.src.string.strncmp
-    libc.src.string.strncpy
-    libc.src.string.strndup
-    libc.src.string.strnlen
-    libc.src.string.strpbrk
-    libc.src.string.strrchr
-    libc.src.string.strsep
-    libc.src.string.strspn
-    libc.src.string.strstr
-    libc.src.string.strtok
-    libc.src.string.strtok_r
-    libc.src.string.strxfrm
-    libc.src.string.strxfrm_l
-
-    # strings.h entrypoints
-    libc.src.strings.bcmp
-    libc.src.strings.bcopy
-    libc.src.strings.bzero
-    libc.src.strings.index
-    libc.src.strings.rindex
-    libc.src.strings.strcasecmp
-    libc.src.strings.strncasecmp
-
-    # stdbit.h entrypoints
-    libc.src.stdbit.stdc_bit_ceil_uc
-    libc.src.stdbit.stdc_bit_ceil_ui
-    libc.src.stdbit.stdc_bit_ceil_ul
-    libc.src.stdbit.stdc_bit_ceil_ull
-    libc.src.stdbit.stdc_bit_ceil_us
-    libc.src.stdbit.stdc_bit_floor_uc
-    libc.src.stdbit.stdc_bit_floor_ui
-    libc.src.stdbit.stdc_bit_floor_ul
-    libc.src.stdbit.stdc_bit_floor_ull
-    libc.src.stdbit.stdc_bit_floor_us
-    libc.src.stdbit.stdc_bit_width_uc
-    libc.src.stdbit.stdc_bit_width_ui
-    libc.src.stdbit.stdc_bit_width_ul
-    libc.src.stdbit.stdc_bit_width_ull
-    libc.src.stdbit.stdc_bit_width_us
-    libc.src.stdbit.stdc_count_ones_uc
-    libc.src.stdbit.stdc_count_ones_ui
-    libc.src.stdbit.stdc_count_ones_ul
-    libc.src.stdbit.stdc_count_ones_ull
-    libc.src.stdbit.stdc_count_ones_us
-    libc.src.stdbit.stdc_count_zeros_uc
-    libc.src.stdbit.stdc_count_zeros_ui
-    libc.src.stdbit.stdc_count_zeros_ul
-    libc.src.stdbit.stdc_count_zeros_ull
-    libc.src.stdbit.stdc_count_zeros_us
-    libc.src.stdbit.stdc_first_leading_one_uc
-    libc.src.stdbit.stdc_first_leading_one_ui
-    libc.src.stdbit.stdc_first_leading_one_ul
-    libc.src.stdbit.stdc_first_leading_one_ull
-    libc.src.stdbit.stdc_first_leading_one_us
-    libc.src.stdbit.stdc_first_leading_zero_uc
-    libc.src.stdbit.stdc_first_leading_zero_ui
-    libc.src.stdbit.stdc_first_leading_zero_ul
-    libc.src.stdbit.stdc_first_leading_zero_ull
-    libc.src.stdbit.stdc_first_leading_zero_us
-    libc.src.stdbit.stdc_first_trailing_one_uc
-    libc.src.stdbit.stdc_first_trailing_one_ui
-    libc.src.stdbit.stdc_first_trailing_one_ul
-    libc.src.stdbit.stdc_first_trailing_one_ull
-    libc.src.stdbit.stdc_first_trailing_one_us
-    libc.src.stdbit.stdc_first_trailing_zero_uc
-    libc.src.stdbit.stdc_first_trailing_zero_ui
-    libc.src.stdbit.stdc_first_trailing_zero_ul
-    libc.src.stdbit.stdc_first_trailing_zero_ull
-    libc.src.stdbit.stdc_first_trailing_zero_us
-    libc.src.stdbit.stdc_has_single_bit_uc
-    libc.src.stdbit.stdc_has_single_bit_ui
-    libc.src.stdbit.stdc_has_single_bit_ul
-    libc.src.stdbit.stdc_has_single_bit_ull
-    libc.src.stdbit.stdc_has_single_bit_us
-    libc.src.stdbit.stdc_leading_ones_uc
-    libc.src.stdbit.stdc_leading_ones_ui
-    libc.src.stdbit.stdc_leading_ones_ul
-    libc.src.stdbit.stdc_leading_ones_ull
-    libc.src.stdbit.stdc_leading_ones_us
-    libc.src.stdbit.stdc_leading_zeros_uc
-    libc.src.stdbit.stdc_leading_zeros_ui
-    libc.src.stdbit.stdc_leading_zeros_ul
-    libc.src.stdbit.stdc_leading_zeros_ull
-    libc.src.stdbit.stdc_leading_zeros_us
-    libc.src.stdbit.stdc_trailing_ones_uc
-    libc.src.stdbit.stdc_trailing_ones_ui
-    libc.src.stdbit.stdc_trailing_ones_ul
-    libc.src.stdbit.stdc_trailing_ones_ull
-    libc.src.stdbit.stdc_trailing_ones_us
-    libc.src.stdbit.stdc_trailing_zeros_uc
-    libc.src.stdbit.stdc_trailing_zeros_ui
-    libc.src.stdbit.stdc_trailing_zeros_ul
-    libc.src.stdbit.stdc_trailing_zeros_ull
-    libc.src.stdbit.stdc_trailing_zeros_us
-
-    # stdlib.h entrypoints
-    libc.src.stdlib._Exit
-    libc.src.stdlib.abort
-    libc.src.stdlib.abs
-    libc.src.stdlib.atexit
-    libc.src.stdlib.atof
-    libc.src.stdlib.atoi
-    libc.src.stdlib.atol
-    libc.src.stdlib.atoll
-    libc.src.stdlib.bsearch
-    libc.src.stdlib.div
-    libc.src.stdlib.exit
-    libc.src.stdlib.labs
-    libc.src.stdlib.ldiv
-    libc.src.stdlib.llabs
-    libc.src.stdlib.lldiv
-    libc.src.stdlib.memalignment
-    libc.src.stdlib.qsort
-    libc.src.stdlib.qsort_r
-    libc.src.stdlib.rand
-    libc.src.stdlib.srand
-    libc.src.stdlib.strtod
-    libc.src.stdlib.strtod_l
-    libc.src.stdlib.strtof
-    libc.src.stdlib.strtof_l
-    libc.src.stdlib.strtol
-    libc.src.stdlib.strtol_l
-    libc.src.stdlib.strtold
-    libc.src.stdlib.strtold_l
-    libc.src.stdlib.strtoll
-    libc.src.stdlib.strtoll_l
-    libc.src.stdlib.strtoul
-    libc.src.stdlib.strtoul_l
-    libc.src.stdlib.strtoull
-    libc.src.stdlib.strtoull_l
-    libc.src.stdlib.at_quick_exit
-    libc.src.stdlib.quick_exit
-    libc.src.stdlib.getenv
-    libc.src.stdlib.system
-
-    # TODO: Implement these correctly
-    libc.src.stdlib.aligned_alloc
-    libc.src.stdlib.calloc
-    libc.src.stdlib.free
-    libc.src.stdlib.malloc
-    libc.src.stdlib.realloc
-
-    # errno.h entrypoints
-    libc.src.errno.errno
-
-    # stdio.h entrypoints
-    libc.src.stdio.clearerr
-    libc.src.stdio.fclose
-    libc.src.stdio.printf
-    libc.src.stdio.vprintf
-    libc.src.stdio.fprintf
-    libc.src.stdio.vfprintf
-    libc.src.stdio.snprintf
-    libc.src.stdio.sprintf
-    libc.src.stdio.vsnprintf
-    libc.src.stdio.vsprintf
-    libc.src.stdio.asprintf
-    libc.src.stdio.vasprintf
-    libc.src.stdio.scanf
-    libc.src.stdio.vscanf
-    libc.src.stdio.fscanf
-    libc.src.stdio.vfscanf
-    libc.src.stdio.sscanf
-    libc.src.stdio.vsscanf
-    libc.src.stdio.feof
-    libc.src.stdio.ferror
-    libc.src.stdio.fflush
-    libc.src.stdio.fgetc
-    libc.src.stdio.fgets
-    libc.src.stdio.fopen
-    libc.src.stdio.fputc
-    libc.src.stdio.fputs
-    libc.src.stdio.fread
-    libc.src.stdio.fseek
-    libc.src.stdio.ftell
-    libc.src.stdio.fwrite
-    libc.src.stdio.getc
-    libc.src.stdio.getchar
-    libc.src.stdio.putc
-    libc.src.stdio.putchar
-    libc.src.stdio.puts
-    libc.src.stdio.remove
-    libc.src.stdio.rename
-    libc.src.stdio.stderr
-    libc.src.stdio.stdin
-    libc.src.stdio.stdout
-    libc.src.stdio.ungetc
-
-    # inttypes.h entrypoints
-    libc.src.inttypes.imaxabs
-    libc.src.inttypes.imaxdiv
-    libc.src.inttypes.strtoimax
-    libc.src.inttypes.strtoumax
-
-    # time.h entrypoints
-    libc.src.time.clock
-    libc.src.time.clock_gettime
-    libc.src.time.timespec_get
-    libc.src.time.nanosleep
-    libc.src.time.strftime
-    libc.src.time.strftime_l
-    libc.src.time.mktime
-
-    # wchar.h entrypoints
-    libc.src.wchar.wcslen
-    libc.src.wchar.wctob
-
-    # locale.h entrypoints
-    libc.src.locale.localeconv
-    libc.src.locale.duplocale
-    libc.src.locale.freelocale
-    libc.src.locale.localeconv
-    libc.src.locale.newlocale
-    libc.src.locale.setlocale
-    libc.src.locale.uselocale
-)
-
-set(TARGET_LIBM_ENTRYPOINTS
-    # math.h entrypoints
-    libc.src.math.acos
-    libc.src.math.acosf
-    libc.src.math.acoshf
-    libc.src.math.asin
-    libc.src.math.asinf
-    libc.src.math.asinhf
-    libc.src.math.atan
-    libc.src.math.atan2
-    libc.src.math.atan2f
-    libc.src.math.atan2l
-    libc.src.math.atanf
-    libc.src.math.atanhf
-    libc.src.math.canonicalize
-    libc.src.math.canonicalizef
-    libc.src.math.canonicalizel
-    libc.src.math.cbrt
-    libc.src.math.cbrtf
-    libc.src.math.ceil
-    libc.src.math.ceilf
-    libc.src.math.ceill
-    libc.src.math.copysign
-    libc.src.math.copysignf
-    libc.src.math.copysignl
-    libc.src.math.cos
-    libc.src.math.cosf
-    libc.src.math.coshf
-    libc.src.math.cospif
-    libc.src.math.ddivl
-    libc.src.math.dfmal
-    libc.src.math.dmull
-    libc.src.math.dsqrtl
-    libc.src.math.erff
-    libc.src.math.exp
-    libc.src.math.exp10
-    libc.src.math.exp10f
-    libc.src.math.exp2
-    libc.src.math.exp2f
-    libc.src.math.exp2m1f
-    libc.src.math.expf
-    libc.src.math.expm1
-    libc.src.math.expm1f
-    libc.src.math.fabs
-    libc.src.math.fabsf
-    libc.src.math.fabsl
-    libc.src.math.fadd
-    libc.src.math.faddl
-    libc.src.math.fdim
-    libc.src.math.fdimf
-    libc.src.math.fdiml
-    libc.src.math.fdiv
-    libc.src.math.fdivl
-    libc.src.math.ffma
-    libc.src.math.ffmal
-    libc.src.math.floor
-    libc.src.math.floorf
-    libc.src.math.floorl
-    libc.src.math.fma
-    libc.src.math.fmabf16
-    libc.src.math.fmaf
-    libc.src.math.fmax
-    libc.src.math.fmaxf
-    libc.src.math.fmaximum
-    libc.src.math.fmaximumf
-    libc.src.math.fmaximuml
-    libc.src.math.fmaximum_mag
-    libc.src.math.fmaximum_magf
-    libc.src.math.fmaximum_magl
-    libc.src.math.fmaximum_mag_num
-    libc.src.math.fmaximum_mag_numf
-    libc.src.math.fmaximum_mag_numl
-    libc.src.math.fmaximum_num
-    libc.src.math.fmaximum_numf
-    libc.src.math.fmaximum_numl
-    libc.src.math.fmaxl
-    libc.src.math.fmin
-    libc.src.math.fminf
-    libc.src.math.fminimum
-    libc.src.math.fminimumf
-    libc.src.math.fminimuml
-    libc.src.math.fminimum_mag
-    libc.src.math.fminimum_magf
-    libc.src.math.fminimum_magl
-    libc.src.math.fminimum_mag_num
-    libc.src.math.fminimum_mag_numf
-    libc.src.math.fminimum_mag_numl
-    libc.src.math.fminimum_num
-    libc.src.math.fminimum_numf
-    libc.src.math.fminimum_numl
-    libc.src.math.fminl
-    libc.src.math.fmod
-    libc.src.math.fmodf
-    libc.src.math.fmodl
-    libc.src.math.fmul
-    libc.src.math.fmull
-    libc.src.math.frexp
-    libc.src.math.frexpf
-    libc.src.math.frexpl
-    libc.src.math.fromfp
-    libc.src.math.fromfpf
-    libc.src.math.fromfpl
-    libc.src.math.fromfpx
-    libc.src.math.fromfpxf
-    libc.src.math.fromfpxl
-    libc.src.math.fsqrt
-    libc.src.math.fsqrtl
-    libc.src.math.fsub
-    libc.src.math.fsubl
-    libc.src.math.getpayload
-    libc.src.math.getpayloadf
-    libc.src.math.getpayloadl
-    libc.src.math.hypot
-    libc.src.math.hypotf
-    libc.src.math.ilogb
-    libc.src.math.ilogbf
-    libc.src.math.ilogbl
-    libc.src.math.isnan
-    libc.src.math.isnanf
-    libc.src.math.isnanl
-    libc.src.math.ldexp
-    libc.src.math.ldexpf
-    libc.src.math.ldexpl
-    libc.src.math.lgamma
-    libc.src.math.lgamma_r
-    libc.src.math.llogb
-    libc.src.math.llogbf
-    libc.src.math.llogbl
-    libc.src.math.llrint
-    libc.src.math.llrintf
-    libc.src.math.llrintl
-    libc.src.math.llround
-    libc.src.math.llroundf
-    libc.src.math.llroundl
-    libc.src.math.log
-    libc.src.math.log10
-    libc.src.math.log10f
-    libc.src.math.log1p
-    libc.src.math.log1pf
-    libc.src.math.log2
-    libc.src.math.log2f
-    libc.src.math.logb
-    libc.src.math.logbf
-    libc.src.math.logbl
-    libc.src.math.logf
-    libc.src.math.lrint
-    libc.src.math.lrintf
-    libc.src.math.lrintl
-    libc.src.math.lround
-    libc.src.math.lroundf
-    libc.src.math.lroundl
-    libc.src.math.modf
-    libc.src.math.modff
-    libc.src.math.modfl
-    libc.src.math.nan
-    libc.src.math.nanf
-    libc.src.math.nanl
-    libc.src.math.nearbyint
-    libc.src.math.nearbyintf
-    libc.src.math.nearbyintl
-    libc.src.math.nextafter
-    libc.src.math.nextafterf
-    libc.src.math.nextafterl
-    libc.src.math.nextdown
-    libc.src.math.nextdownf
-    libc.src.math.nextdownl
-    libc.src.math.nexttoward
-    libc.src.math.nexttowardf
-    libc.src.math.nexttowardl
-    libc.src.math.nextup
-    libc.src.math.nextupf
-    libc.src.math.nextupl
-    libc.src.math.pow
-    libc.src.math.powf
-    libc.src.math.remainder
-    libc.src.math.remainderf
-    libc.src.math.remainderl
-    libc.src.math.remquo
-    libc.src.math.remquof
-    libc.src.math.remquol
-    libc.src.math.rint
-    libc.src.math.rintf
-    libc.src.math.rintl
-    libc.src.math.roundeven
-    libc.src.math.roundevenf
-    libc.src.math.roundevenl
-    libc.src.math.round
-    libc.src.math.roundf
-    libc.src.math.roundl
-    libc.src.math.scalbln
-    libc.src.math.scalblnf
-    libc.src.math.scalblnl
-    libc.src.math.scalbn
-    libc.src.math.scalbnf
-    libc.src.math.scalbnl
-    libc.src.math.setpayload
-    libc.src.math.setpayloadf
-    libc.src.math.setpayloadl
-    libc.src.math.setpayloadsig
-    libc.src.math.setpayloadsigf
-    libc.src.math.setpayloadsigl
-    libc.src.math.sin
-    libc.src.math.sincos
-    libc.src.math.sincosf
-    libc.src.math.sinf
-    libc.src.math.sinhf
-    libc.src.math.sinpif
-    libc.src.math.sqrt
-    libc.src.math.sqrtf
-    libc.src.math.sqrtl
-    libc.src.math.tan
-    libc.src.math.tanf
-    libc.src.math.tanhf
-    libc.src.math.tanpif
-    libc.src.math.tgamma
-    libc.src.math.tgammaf
-    libc.src.math.totalorder
-    libc.src.math.totalorderf
-    libc.src.math.totalorderl
-    libc.src.math.totalordermag
-    libc.src.math.totalordermagf
-    libc.src.math.totalordermagl
-    libc.src.math.trunc
-    libc.src.math.truncf
-    libc.src.math.truncl
-    libc.src.math.ufromfp
-    libc.src.math.ufromfpf
-    libc.src.math.ufromfpl
-    libc.src.math.ufromfpx
-    libc.src.math.ufromfpxf
-    libc.src.math.ufromfpxl
-)
-
-if(LIBC_TYPES_HAS_FLOAT16)
-  list(APPEND TARGET_LIBM_ENTRYPOINTS
-    # math.h C23 _Float16 entrypoints
-    libc.src.math.acosf16
-    libc.src.math.acoshf16
-    libc.src.math.acospif16
-    libc.src.math.asinf16
-    libc.src.math.asinhf16
-    libc.src.math.atanf16
-    libc.src.math.atanhf16
-    libc.src.math.canonicalizef16
-    libc.src.math.ceilf16
-    libc.src.math.copysignf16
-    libc.src.math.cosf16
-    libc.src.math.coshf16
-    libc.src.math.cospif16
-    libc.src.math.exp10f16
-    libc.src.math.exp10m1f16
-    libc.src.math.exp2f16
-    # libc.src.math.exp2m1f16
-    libc.src.math.expf16
-    libc.src.math.expm1f16
-    libc.src.math.f16add
-    libc.src.math.f16addf
-    libc.src.math.f16addl
-    libc.src.math.f16div
-    libc.src.math.f16divf
-    libc.src.math.f16divl
-    libc.src.math.f16fma
-    libc.src.math.f16fmaf
-    libc.src.math.f16fmal
-    libc.src.math.f16mul
-    libc.src.math.f16mulf
-    libc.src.math.f16mull
-    libc.src.math.f16sqrt
-    libc.src.math.f16sqrtf
-    libc.src.math.f16sqrtl
-    libc.src.math.f16sub
-    libc.src.math.f16subf
-    libc.src.math.f16subl
-    libc.src.math.fabsf16
-    libc.src.math.fdimf16
-    libc.src.math.floorf16
-    libc.src.math.fmaf16
-    libc.src.math.fmaxf16
-    libc.src.math.fmaximum_mag_numf16
-    libc.src.math.fmaximum_magf16
-    libc.src.math.fmaximum_numf16
-    libc.src.math.fmaximumf16
-    libc.src.math.fminf16
-    libc.src.math.fminimum_mag_numf16
-    libc.src.math.fminimum_magf16
-    libc.src.math.fminimum_numf16
-    libc.src.math.fminimumf16
-    libc.src.math.fmodf16
-    libc.src.math.frexpf16
-    libc.src.math.fromfpf16
-    libc.src.math.fromfpxf16
-    libc.src.math.getpayloadf16
-    libc.src.math.hypotf16
-    libc.src.math.ilogbf16
-    libc.src.math.iscanonicalf16
-    libc.src.math.issignalingf16
-    libc.src.math.ldexpf16
-    libc.src.math.llogbf16
-    libc.src.math.llrintf16
-    libc.src.math.llroundf16
-    libc.src.math.log10f16
-    libc.src.math.log2f16
-    libc.src.math.logbf16
-    libc.src.math.logf16
-    libc.src.math.lrintf16
-    libc.src.math.lroundf16
-    libc.src.math.modff16
-    libc.src.math.nanf16
-    libc.src.math.nearbyintf16
-    libc.src.math.nextafterf16
-    libc.src.math.nextdownf16
-    libc.src.math.nexttowardf16
-    libc.src.math.nextupf16
-    libc.src.math.remainderf16
-    libc.src.math.remquof16
-    libc.src.math.rintf16
-    libc.src.math.roundevenf16
-    libc.src.math.roundf16
-    libc.src.math.scalblnf16
-    libc.src.math.scalbnf16
-    libc.src.math.setpayloadf16
-    libc.src.math.setpayloadsigf16
-    libc.src.math.sinf16
-    libc.src.math.sinhf16
-    libc.src.math.sinpif16
-    libc.src.math.sqrtf16
-    libc.src.math.tanf16
-    libc.src.math.tanhf16
-    libc.src.math.tanpif16
-    libc.src.math.totalorderf16
-    libc.src.math.totalordermagf16
-    libc.src.math.truncf16
-    libc.src.math.ufromfpf16
-    libc.src.math.ufromfpxf16
-  )
-endif()
-
-list(APPEND TARGET_LIBM_ENTRYPOINTS
-  # bfloat16 entrypoints
-  libc.src.math.bf16add
-  libc.src.math.bf16addf
-  libc.src.math.bf16addl
-  libc.src.math.bf16div
-  libc.src.math.bf16divf
-  libc.src.math.bf16divl
-  libc.src.math.bf16fma
-  libc.src.math.bf16fmaf
-  libc.src.math.bf16fmal
-  libc.src.math.bf16mul
-  libc.src.math.bf16mulf
-  libc.src.math.bf16mull
-  libc.src.math.bf16sub
-  libc.src.math.bf16subf
-  libc.src.math.bf16subl
-  libc.src.math.canonicalizebf16
-  libc.src.math.ceilbf16
-  libc.src.math.copysignbf16
-  libc.src.math.fabsbf16
-  libc.src.math.fdimbf16
-  libc.src.math.floorbf16
-  libc.src.math.fmaxbf16
-  libc.src.math.fmaximumbf16
-  libc.src.math.fmaximum_magbf16
-  libc.src.math.fmaximum_mag_numbf16
-  libc.src.math.fmaximum_numbf16
-  libc.src.math.fminbf16
-  libc.src.math.fminimumbf16
-  libc.src.math.fminimum_magbf16
-  libc.src.math.fminimum_mag_numbf16
-  libc.src.math.fminimum_numbf16
-  libc.src.math.fmodbf16
-  libc.src.math.frexpbf16
-  libc.src.math.fromfpbf16
-  libc.src.math.fromfpxbf16
-  libc.src.math.getpayloadbf16
-  libc.src.math.ilogbbf16
-  libc.src.math.iscanonicalbf16
-  libc.src.math.issignalingbf16
-  libc.src.math.ldexpbf16
-  libc.src.math.llogbbf16
-  libc.src.math.llrintbf16
-  libc.src.math.llroundbf16
-  libc.src.math.log_bf16
-  libc.src.math.logbbf16
-  libc.src.math.lrintbf16
-  libc.src.math.lroundbf16
-  libc.src.math.modfbf16
-  libc.src.math.nanbf16
-  libc.src.math.nearbyintbf16
-  libc.src.math.nextafterbf16
-  libc.src.math.nextdownbf16
-  libc.src.math.nexttowardbf16
-  libc.src.math.nextupbf16
-  libc.src.math.remainderbf16
-  libc.src.math.remquobf16
-  libc.src.math.rintbf16
-  libc.src.math.roundbf16
-  libc.src.math.roundevenbf16
-  libc.src.math.scalblnbf16
-  libc.src.math.scalbnbf16
-  libc.src.math.setpayloadbf16
-  libc.src.math.setpayloadsigbf16
-  libc.src.math.sqrtbf16
-  libc.src.math.truncbf16
-  libc.src.math.totalorderbf16
-  libc.src.math.totalordermagbf16
-  libc.src.math.ufromfpbf16
-  libc.src.math.ufromfpxbf16
-)
-
-set(TARGET_LLVMLIBC_ENTRYPOINTS
-  ${TARGET_LIBC_ENTRYPOINTS}
-  ${TARGET_LIBM_ENTRYPOINTS}
-)
+set(TARGET_LIBC_ENTRYPOINTS
+    # assert.h entrypoints
+    libc.src.assert.__assert_fail
+
+    # ctype.h entrypoints
+    libc.src.ctype.isalnum
+    libc.src.ctype.isalnum_l
+    libc.src.ctype.isalpha
+    libc.src.ctype.isalpha_l
+    libc.src.ctype.isascii
+    libc.src.ctype.isblank
+    libc.src.ctype.isblank_l
+    libc.src.ctype.iscntrl
+    libc.src.ctype.iscntrl_l
+    libc.src.ctype.isdigit
+    libc.src.ctype.isdigit_l
+    libc.src.ctype.isgraph
+    libc.src.ctype.isgraph_l
+    libc.src.ctype.islower
+    libc.src.ctype.islower_l
+    libc.src.ctype.isprint
+    libc.src.ctype.isprint_l
+    libc.src.ctype.ispunct
+    libc.src.ctype.ispunct_l
+    libc.src.ctype.isspace
+    libc.src.ctype.isspace_l
+    libc.src.ctype.isupper
+    libc.src.ctype.isupper_l
+    libc.src.ctype.isxdigit
+    libc.src.ctype.isxdigit_l
+    libc.src.ctype.toascii
+    libc.src.ctype.tolower
+    libc.src.ctype.tolower_l
+    libc.src.ctype.toupper
+    libc.src.ctype.toupper_l
+
+    # string.h entrypoints
+    libc.src.string.memccpy
+    libc.src.string.memchr
+    libc.src.string.memcmp
+    libc.src.string.memcpy
+    libc.src.string.memmem
+    libc.src.string.memmove
+    libc.src.string.mempcpy
+    libc.src.string.memrchr
+    libc.src.string.memset
+    libc.src.string.stpcpy
+    libc.src.string.stpncpy
+    libc.src.string.strcasestr
+    libc.src.string.strcat
+    libc.src.string.strchr
+    libc.src.string.strchrnul
+    libc.src.string.strcmp
+    libc.src.string.strcoll
+    libc.src.string.strcoll_l
+    libc.src.string.strcpy
+    libc.src.string.strcspn
+    libc.src.string.strdup
+    libc.src.string.strerror
+    libc.src.string.strlcat
+    libc.src.string.strlcpy
+    libc.src.string.strlen
+    libc.src.string.strncat
+    libc.src.string.strncmp
+    libc.src.string.strncpy
+    libc.src.string.strndup
+    libc.src.string.strnlen
+    libc.src.string.strpbrk
+    libc.src.string.strrchr
+    libc.src.string.strsep
+    libc.src.string.strspn
+    libc.src.string.strstr
+    libc.src.string.strtok
+    libc.src.string.strtok_r
+    libc.src.string.strxfrm
+    libc.src.string.strxfrm_l
+
+    # strings.h entrypoints
+    libc.src.strings.bcmp
+    libc.src.strings.bcopy
+    libc.src.strings.bzero
+    libc.src.strings.index
+    libc.src.strings.rindex
+    libc.src.strings.strcasecmp
+    libc.src.strings.strncasecmp
+
+    # stdbit.h entrypoints
+    libc.src.stdbit.stdc_bit_ceil_uc
+    libc.src.stdbit.stdc_bit_ceil_ui
+    libc.src.stdbit.stdc_bit_ceil_ul
+    libc.src.stdbit.stdc_bit_ceil_ull
+    libc.src.stdbit.stdc_bit_ceil_us
+    libc.src.stdbit.stdc_bit_floor_uc
+    libc.src.stdbit.stdc_bit_floor_ui
+    libc.src.stdbit.stdc_bit_floor_ul
+    libc.src.stdbit.stdc_bit_floor_ull
+    libc.src.stdbit.stdc_bit_floor_us
+    libc.src.stdbit.stdc_bit_width_uc
+    libc.src.stdbit.stdc_bit_width_ui
+    libc.src.stdbit.stdc_bit_width_ul
+    libc.src.stdbit.stdc_bit_width_ull
+    libc.src.stdbit.stdc_bit_width_us
+    libc.src.stdbit.stdc_count_ones_uc
+    libc.src.stdbit.stdc_count_ones_ui
+    libc.src.stdbit.stdc_count_ones_ul
+    libc.src.stdbit.stdc_count_ones_ull
+    libc.src.stdbit.stdc_count_ones_us
+    libc.src.stdbit.stdc_count_zeros_uc
+    libc.src.stdbit.stdc_count_zeros_ui
+    libc.src.stdbit.stdc_count_zeros_ul
+    libc.src.stdbit.stdc_count_zeros_ull
+    libc.src.stdbit.stdc_count_zeros_us
+    libc.src.stdbit.stdc_first_leading_one_uc
+    libc.src.stdbit.stdc_first_leading_one_ui
+    libc.src.stdbit.stdc_first_leading_one_ul
+    libc.src.stdbit.stdc_first_leading_one_ull
+    libc.src.stdbit.stdc_first_leading_one_us
+    libc.src.stdbit.stdc_first_leading_zero_uc
+    libc.src.stdbit.stdc_first_leading_zero_ui
+    libc.src.stdbit.stdc_first_leading_zero_ul
+    libc.src.stdbit.stdc_first_leading_zero_ull
+    libc.src.stdbit.stdc_first_leading_zero_us
+    libc.src.stdbit.stdc_first_trailing_one_uc
+    libc.src.stdbit.stdc_first_trailing_one_ui
+    libc.src.stdbit.stdc_first_trailing_one_ul
+    libc.src.stdbit.stdc_first_trailing_one_ull
+    libc.src.stdbit.stdc_first_trailing_one_us
+    libc.src.stdbit.stdc_first_trailing_zero_uc
+    libc.src.stdbit.stdc_first_trailing_zero_ui
+    libc.src.stdbit.stdc_first_trailing_zero_ul
+    libc.src.stdbit.stdc_first_trailing_zero_ull
+    libc.src.stdbit.stdc_first_trailing_zero_us
+    libc.src.stdbit.stdc_has_single_bit_uc
+    libc.src.stdbit.stdc_has_single_bit_ui
+    libc.src.stdbit.stdc_has_single_bit_ul
+    libc.src.stdbit.stdc_has_single_bit_ull
+    libc.src.stdbit.stdc_has_single_bit_us
+    libc.src.stdbit.stdc_leading_ones_uc
+    libc.src.stdbit.stdc_leading_ones_ui
+    libc.src.stdbit.stdc_leading_ones_ul
+    libc.src.stdbit.stdc_leading_ones_ull
+    libc.src.stdbit.stdc_leading_ones_us
+    libc.src.stdbit.stdc_leading_zeros_uc
+    libc.src.stdbit.stdc_leading_zeros_ui
+    libc.src.stdbit.stdc_leading_zeros_ul
+    libc.src.stdbit.stdc_leading_zeros_ull
+    libc.src.stdbit.stdc_leading_zeros_us
+    libc.src.stdbit.stdc_trailing_ones_uc
+    libc.src.stdbit.stdc_trailing_ones_ui
+    libc.src.stdbit.stdc_trailing_ones_ul
+    libc.src.stdbit.stdc_trailing_ones_ull
+    libc.src.stdbit.stdc_trailing_ones_us
+    libc.src.stdbit.stdc_trailing_zeros_uc
+    libc.src.stdbit.stdc_trailing_zeros_ui
+    libc.src.stdbit.stdc_trailing_zeros_ul
+    libc.src.stdbit.stdc_trailing_zeros_ull
+    libc.src.stdbit.stdc_trailing_zeros_us
+
+    # stdlib.h entrypoints
+    libc.src.stdlib._Exit
+    libc.src.stdlib.abort
+    libc.src.stdlib.abs
+    libc.src.stdlib.atexit
+    libc.src.stdlib.atof
+    libc.src.stdlib.atoi
+    libc.src.stdlib.atol
+    libc.src.stdlib.atoll
+    libc.src.stdlib.bsearch
+    libc.src.stdlib.div
+    libc.src.stdlib.exit
+    libc.src.stdlib.labs
+    libc.src.stdlib.ldiv
+    libc.src.stdlib.llabs
+    libc.src.stdlib.lldiv
+    libc.src.stdlib.memalignment
+    libc.src.stdlib.qsort
+    libc.src.stdlib.qsort_r
+    libc.src.stdlib.rand
+    libc.src.stdlib.srand
+    libc.src.stdlib.strtod
+    libc.src.stdlib.strtod_l
+    libc.src.stdlib.strtof
+    libc.src.stdlib.strtof_l
+    libc.src.stdlib.strtol
+    libc.src.stdlib.strtol_l
+    libc.src.stdlib.strtold
+    libc.src.stdlib.strtold_l
+    libc.src.stdlib.strtoll
+    libc.src.stdlib.strtoll_l
+    libc.src.stdlib.strtoul
+    libc.src.stdlib.strtoul_l
+    libc.src.stdlib.strtoull
+    libc.src.stdlib.strtoull_l
+    libc.src.stdlib.at_quick_exit
+    libc.src.stdlib.quick_exit
+    libc.src.stdlib.getenv
+    libc.src.stdlib.system
+
+    # TODO: Implement these correctly
+    libc.src.stdlib.aligned_alloc
+    libc.src.stdlib.calloc
+    libc.src.stdlib.free
+    libc.src.stdlib.malloc
+    libc.src.stdlib.realloc
+
+    # errno.h entrypoints
+    libc.src.errno.errno
+
+    # stdio.h entrypoints
+    libc.src.stdio.clearerr
+    libc.src.stdio.fclose
+    libc.src.stdio.printf
+    libc.src.stdio.vprintf
+    libc.src.stdio.fprintf
+    libc.src.stdio.vfprintf
+    libc.src.stdio.snprintf
+    libc.src.stdio.sprintf
+    libc.src.stdio.vsnprintf
+    libc.src.stdio.vsprintf
+    libc.src.stdio.asprintf
+    libc.src.stdio.vasprintf
+    libc.src.stdio.scanf
+    libc.src.stdio.vscanf
+    libc.src.stdio.fscanf
+    libc.src.stdio.vfscanf
+    libc.src.stdio.sscanf
+    libc.src.stdio.vsscanf
+    libc.src.stdio.feof
+    libc.src.stdio.ferror
+    libc.src.stdio.fflush
+    libc.src.stdio.fgetc
+    libc.src.stdio.fgets
+    libc.src.stdio.fopen
+    libc.src.stdio.fputc
+    libc.src.stdio.fputs
+    libc.src.stdio.fread
+    libc.src.stdio.fseek
+    libc.src.stdio.ftell
+    libc.src.stdio.fwrite
+    libc.src.stdio.getc
+    libc.src.stdio.getchar
+    libc.src.stdio.putc
+    libc.src.stdio.putchar
+    libc.src.stdio.puts
+    libc.src.stdio.remove
+    libc.src.stdio.rename
+    libc.src.stdio.stderr
+    libc.src.stdio.stdin
+    libc.src.stdio.stdout
+    libc.src.stdio.ungetc
+
+    # inttypes.h entrypoints
+    libc.src.inttypes.imaxabs
+    libc.src.inttypes.imaxdiv
+    libc.src.inttypes.strtoimax
+    libc.src.inttypes.strtoumax
+
+    # time.h entrypoints
+    libc.src.time.clock
+    libc.src.time.clock_gettime
+    libc.src.time.timespec_get
+    libc.src.time.nanosleep
+    libc.src.time.strftime
+    libc.src.time.strftime_l
+    libc.src.time.mktime
+
+    # wchar.h entrypoints
+    libc.src.wchar.wcslen
+    libc.src.wchar.wctob
+
+    # locale.h entrypoints
+    libc.src.locale.localeconv
+    libc.src.locale.duplocale
+    libc.src.locale.freelocale
+    libc.src.locale.localeconv
+    libc.src.locale.newlocale
+    libc.src.locale.setlocale
+    libc.src.locale.uselocale
+)
+
+set(TARGET_LIBM_ENTRYPOINTS
+    # math.h entrypoints
+    libc.src.math.acos
+    libc.src.math.acosf
+    libc.src.math.acoshf
+    libc.src.math.asin
+    libc.src.math.asinf
+    libc.src.math.asinhf
+    libc.src.math.atan
+    libc.src.math.atan2
+    libc.src.math.atan2f
+    libc.src.math.atan2l
+    libc.src.math.atanf
+    libc.src.math.atanhf
+    libc.src.math.canonicalize
+    libc.src.math.canonicalizef
+    libc.src.math.canonicalizel
+    libc.src.math.cbrt
+    libc.src.math.cbrtf
+    libc.src.math.ceil
+    libc.src.math.ceilf
+    libc.src.math.ceill
+    libc.src.math.copysign
+    libc.src.math.copysignf
+    libc.src.math.copysignl
+    libc.src.math.cos
+    libc.src.math.cosf
+    libc.src.math.coshf
+    libc.src.math.cospif
+    libc.src.math.ddivl
+    libc.src.math.dfmal
+    libc.src.math.dmull
+    libc.src.math.dsqrtl
+    libc.src.math.erff
+    libc.src.math.exp
+    libc.src.math.exp10
+    libc.src.math.exp10f
+    libc.src.math.exp2
+    libc.src.math.exp2f
+    libc.src.math.exp2m1f
+    libc.src.math.expf
+    libc.src.math.expm1
+    libc.src.math.expm1f
+    libc.src.math.fabs
+    libc.src.math.fabsf
+    libc.src.math.fabsl
+    libc.src.math.fadd
+    libc.src.math.faddl
+    libc.src.math.fdim
+    libc.src.math.fdimf
+    libc.src.math.fdiml
+    libc.src.math.fdiv
+    libc.src.math.fdivl
+    libc.src.math.ffma
+    libc.src.math.ffmal
+    libc.src.math.floor
+    libc.src.math.floorf
+    libc.src.math.floorl
+    libc.src.math.fma
+    libc.src.math.fmabf16
+    libc.src.math.fmaf
+    libc.src.math.fmax
+    libc.src.math.fmaxf
+    libc.src.math.fmaximum
+    libc.src.math.fmaximumf
+    libc.src.math.fmaximuml
+    libc.src.math.fmaximum_mag
+    libc.src.math.fmaximum_magf
+    libc.src.math.fmaximum_magl
+    libc.src.math.fmaximum_mag_num
+    libc.src.math.fmaximum_mag_numf
+    libc.src.math.fmaximum_mag_numl
+    libc.src.math.fmaximum_num
+    libc.src.math.fmaximum_numf
+    libc.src.math.fmaximum_numl
+    libc.src.math.fmaxl
+    libc.src.math.fmin
+    libc.src.math.fminf
+    libc.src.math.fminimum
+    libc.src.math.fminimumf
+    libc.src.math.fminimuml
+    libc.src.math.fminimum_mag
+    libc.src.math.fminimum_magf
+    libc.src.math.fminimum_magl
+    libc.src.math.fminimum_mag_num
+    libc.src.math.fminimum_mag_numf
+    libc.src.math.fminimum_mag_numl
+    libc.src.math.fminimum_num
+    libc.src.math.fminimum_numf
+    libc.src.math.fminimum_numl
+    libc.src.math.fminl
+    libc.src.math.fmod
+    libc.src.math.fmodf
+    libc.src.math.fmodl
+    libc.src.math.fmul
+    libc.src.math.fmull
+    libc.src.math.frexp
+    libc.src.math.frexpf
+    libc.src.math.frexpl
+    libc.src.math.fromfp
+    libc.src.math.fromfpf
+    libc.src.math.fromfpl
+    libc.src.math.fromfpx
+    libc.src.math.fromfpxf
+    libc.src.math.fromfpxl
+    libc.src.math.fsqrt
+    libc.src.math.fsqrtl
+    libc.src.math.fsub
+    libc.src.math.fsubl
+    libc.src.math.getpayload
+    libc.src.math.getpayloadf
+    libc.src.math.getpayloadl
+    libc.src.math.hypot
+    libc.src.math.hypotf
+    libc.src.math.ilogb
+    libc.src.math.ilogbf
+    libc.src.math.ilogbl
+    libc.src.math.isnan
+    libc.src.math.isnanf
+    libc.src.math.isnanl
+    libc.src.math.ldexp
+    libc.src.math.ldexpf
+    libc.src.math.ldexpl
+    libc.src.math.lgamma
+    libc.src.math.lgamma_r
+    libc.src.math.llogb
+    libc.src.math.llogbf
+    libc.src.math.llogbl
+    libc.src.math.llrint
+    libc.src.math.llrintf
+    libc.src.math.llrintl
+    libc.src.math.llround
+    libc.src.math.llroundf
+    libc.src.math.llroundl
+    libc.src.math.log
+    libc.src.math.log10
+    libc.src.math.log10f
+    libc.src.math.log1p
+    libc.src.math.log1pf
+    libc.src.math.log2
+    libc.src.math.log2f
+    libc.src.math.logb
+    libc.src.math.logbf
+    libc.src.math.logbl
+    libc.src.math.logf
+    libc.src.math.lrint
+    libc.src.math.lrintf
+    libc.src.math.lrintl
+    libc.src.math.lround
+    libc.src.math.lroundf
+    libc.src.math.lroundl
+    libc.src.math.modf
+    libc.src.math.modff
+    libc.src.math.modfl
+    libc.src.math.nan
+    libc.src.math.nanf
+    libc.src.math.nanl
+    libc.src.math.nearbyint
+    libc.src.math.nearbyintf
+    libc.src.math.nearbyintl
+    libc.src.math.nextafter
+    libc.src.math.nextafterf
+    libc.src.math.nextafterl
+    libc.src.math.nextdown
+    libc.src.math.nextdownf
+    libc.src.math.nextdownl
+    libc.src.math.nexttoward
+    libc.src.math.nexttowardf
+    libc.src.math.nexttowardl
+    libc.src.math.nextup
+    libc.src.math.nextupf
+    libc.src.math.nextupl
+    libc.src.math.pow
+    libc.src.math.powf
+    libc.src.math.remainder
+    libc.src.math.remainderf
+    libc.src.math.remainderl
+    libc.src.math.remquo
+    libc.src.math.remquof
+    libc.src.math.remquol
+    libc.src.math.rint
+    libc.src.math.rintf
+    libc.src.math.rintl
+    libc.src.math.roundeven
+    libc.src.math.roundevenf
+    libc.src.math.roundevenl
+    libc.src.math.round
+    libc.src.math.roundf
+    libc.src.math.roundl
+    libc.src.math.scalbln
+    libc.src.math.scalblnf
+    libc.src.math.scalblnl
+    libc.src.math.scalbn
+    libc.src.math.scalbnf
+    libc.src.math.scalbnl
+    libc.src.math.setpayload
+    libc.src.math.setpayloadf
+    libc.src.math.setpayloadl
+    libc.src.math.setpayloadsig
+    libc.src.math.setpayloadsigf
+    libc.src.math.setpayloadsigl
+    libc.src.math.sin
+    libc.src.math.sincos
+    libc.src.math.sincosf
+    libc.src.math.sinf
+    libc.src.math.sinhf
+    libc.src.math.sinpif
+    libc.src.math.sqrt
+    libc.src.math.sqrtf
+    libc.src.math.sqrtl
+    libc.src.math.tan
+    libc.src.math.tanf
+    libc.src.math.tanhf
+    libc.src.math.tanpif
+    libc.src.math.tgamma
+    libc.src.math.tgammaf
+    libc.src.math.totalorder
+    libc.src.math.totalorderf
+    libc.src.math.totalorderl
+    libc.src.math.totalordermag
+    libc.src.math.totalordermagf
+    libc.src.math.totalordermagl
+    libc.src.math.trunc
+    libc.src.math.truncf
+    libc.src.math.truncl
+    libc.src.math.ufromfp
+    libc.src.math.ufromfpf
+    libc.src.math.ufromfpl
+    libc.src.math.ufromfpx
+    libc.src.math.ufromfpxf
+    libc.src.math.ufromfpxl
+)
+
+if(LIBC_TYPES_HAS_FLOAT16)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # math.h C23 _Float16 entrypoints
+    libc.src.math.acosf16
+    libc.src.math.acoshf16
+    libc.src.math.acospif16
+    libc.src.math.asinf16
+    libc.src.math.asinhf16
+    libc.src.math.atanf16
+    libc.src.math.atanhf16
+    libc.src.math.canonicalizef16
+    libc.src.math.ceilf16
+    libc.src.math.copysignf16
+    libc.src.math.cosf16
+    libc.src.math.coshf16
+    libc.src.math.cospif16
+    libc.src.math.exp10f16
+    libc.src.math.exp10m1f16
+    libc.src.math.exp2f16
+    # libc.src.math.exp2m1f16
+    libc.src.math.expf16
+    libc.src.math.expm1f16
+    libc.src.math.f16add
+    libc.src.math.f16addf
+    libc.src.math.f16addl
+    libc.src.math.f16div
+    libc.src.math.f16divf
+    libc.src.math.f16divl
+    libc.src.math.f16fma
+    libc.src.math.f16fmaf
+    libc.src.math.f16fmal
+    libc.src.math.f16mul
+    libc.src.math.f16mulf
+    libc.src.math.f16mull
+    libc.src.math.f16sqrt
+    libc.src.math.f16sqrtf
+    libc.src.math.f16sqrtl
+    libc.src.math.f16sub
+    libc.src.math.f16subf
+    libc.src.math.f16subl
+    libc.src.math.fabsf16
+    libc.src.math.fdimf16
+    libc.src.math.floorf16
+    libc.src.math.fmaf16
+    libc.src.math.fmaxf16
+    libc.src.math.fmaximum_mag_numf16
+    libc.src.math.fmaximum_magf16
+    libc.src.math.fmaximum_numf16
+    libc.src.math.fmaximumf16
+    libc.src.math.fminf16
+    libc.src.math.fminimum_mag_numf16
+    libc.src.math.fminimum_magf16
+    libc.src.math.fminimum_numf16
+    libc.src.math.fminimumf16
+    libc.src.math.fmodf16
+    libc.src.math.frexpf16
+    libc.src.math.fromfpf16
+    libc.src.math.fromfpxf16
+    libc.src.math.getpayloadf16
+    libc.src.math.hypotf16
+    libc.src.math.ilogbf16
+    libc.src.math.iscanonicalf16
+    libc.src.math.issignalingf16
+    libc.src.math.ldexpf16
+    libc.src.math.llogbf16
+    libc.src.math.llrintf16
+    libc.src.math.llroundf16
+    libc.src.math.log10f16
+    libc.src.math.log2f16
+    libc.src.math.logbf16
+    libc.src.math.logf16
+    libc.src.math.lrintf16
+    libc.src.math.lroundf16
+    libc.src.math.modff16
+    libc.src.math.nanf16
+    libc.src.math.nearbyintf16
+    libc.src.math.nextafterf16
+    libc.src.math.nextdownf16
+    libc.src.math.nexttowardf16
+    libc.src.math.nextupf16
+    libc.src.math.remainderf16
+    libc.src.math.remquof16
+    libc.src.math.rintf16
+    libc.src.math.roundevenf16
+    libc.src.math.roundf16
+    libc.src.math.scalblnf16
+    libc.src.math.scalbnf16
+    libc.src.math.setpayloadf16
+    libc.src.math.setpayloadsigf16
+    libc.src.math.sinf16
+    libc.src.math.sinhf16
+    libc.src.math.sinpif16
+    libc.src.math.sqrtf16
+    libc.src.math.tanf16
+    libc.src.math.tanhf16
+    libc.src.math.tanpif16
+    libc.src.math.totalorderf16
+    libc.src.math.totalordermagf16
+    libc.src.math.truncf16
+    libc.src.math.ufromfpf16
+    libc.src.math.ufromfpxf16
+  )
+endif()
+
+list(APPEND TARGET_LIBM_ENTRYPOINTS
+  # bfloat16 entrypoints
+  libc.src.math.bf16add
+  libc.src.math.bf16addf
+  libc.src.math.bf16addl
+  libc.src.math.bf16div
+  libc.src.math.bf16divf
+  libc.src.math.bf16divl
+  libc.src.math.bf16fma
+  libc.src.math.bf16fmaf
+  libc.src.math.bf16fmal
+  libc.src.math.bf16mul
+  libc.src.math.bf16mulf
+  libc.src.math.bf16mull
+  libc.src.math.bf16sub
+  libc.src.math.bf16subf
+  libc.src.math.bf16subl
+  libc.src.math.canonicalizebf16
+  libc.src.math.ceilbf16
+  libc.src.math.copysignbf16
+  libc.src.math.fabsbf16
+  libc.src.math.fdimbf16
+  libc.src.math.floorbf16
+  libc.src.math.fmaxbf16
+  libc.src.math.fmaximumbf16
+  libc.src.math.fmaximum_magbf16
+  libc.src.math.fmaximum_mag_numbf16
+  libc.src.math.fmaximum_numbf16
+  libc.src.math.fminbf16
+  libc.src.math.fminimumbf16
+  libc.src.math.fminimum_magbf16
+  libc.src.math.fminimum_mag_numbf16
+  libc.src.math.fminimum_numbf16
+  libc.src.math.fmodbf16
+  libc.src.math.frexpbf16
+  libc.src.math.fromfpbf16
+  libc.src.math.fromfpxbf16
+  libc.src.math.getpayloadbf16
+  libc.src.math.ilogbbf16
+  libc.src.math.iscanonicalbf16
+  libc.src.math.issignalingbf16
+  libc.src.math.ldexpbf16
+  libc.src.math.llogbbf16
+  libc.src.math.llrintbf16
+  libc.src.math.llroundbf16
+  libc.src.math.log_bf16
+  libc.src.math.logbbf16
+  libc.src.math.lrintbf16
+  libc.src.math.lroundbf16
+  libc.src.math.modfbf16
+  libc.src.math.nanbf16
+  libc.src.math.nearbyintbf16
+  libc.src.math.nextafterbf16
+  libc.src.math.nextdownbf16
+  libc.src.math.nexttowardbf16
+  libc.src.math.nextupbf16
+  libc.src.math.remainderbf16
+  libc.src.math.remquobf16
+  libc.src.math.rintbf16
+  libc.src.math.roundbf16
+  libc.src.math.roundevenbf16
+  libc.src.math.scalblnbf16
+  libc.src.math.scalbnbf16
+  libc.src.math.setpayloadbf16
+  libc.src.math.setpayloadsigbf16
+  libc.src.math.sqrtbf16
+  libc.src.math.truncbf16
+  libc.src.math.totalorderbf16
+  libc.src.math.totalordermagbf16
+  libc.src.math.ufromfpbf16
+  libc.src.math.ufromfpxbf16
+)
+
+set(TARGET_LLVMLIBC_ENTRYPOINTS
+  ${TARGET_LIBC_ENTRYPOINTS}
+  ${TARGET_LIBM_ENTRYPOINTS}
+)
diff --git a/libc/config/gpu/nvptx/entrypoints.txt b/libc/config/gpu/nvptx/entrypoints.txt
index b997d3eb3b26a..331694e64fc8d 100644
--- a/libc/config/gpu/nvptx/entrypoints.txt
+++ b/libc/config/gpu/nvptx/entrypoints.txt
@@ -1,696 +1,696 @@
-set(TARGET_LIBC_ENTRYPOINTS
-    # assert.h entrypoints
-    libc.src.assert.__assert_fail
-
-    # ctype.h entrypoints
-    libc.src.ctype.isalnum
-    libc.src.ctype.isalnum_l
-    libc.src.ctype.isalpha
-    libc.src.ctype.isalpha_l
-    libc.src.ctype.isascii
-    libc.src.ctype.isblank
-    libc.src.ctype.isblank_l
-    libc.src.ctype.iscntrl
-    libc.src.ctype.iscntrl_l
-    libc.src.ctype.isdigit
-    libc.src.ctype.isdigit_l
-    libc.src.ctype.isgraph
-    libc.src.ctype.isgraph_l
-    libc.src.ctype.islower
-    libc.src.ctype.islower_l
-    libc.src.ctype.isprint
-    libc.src.ctype.isprint_l
-    libc.src.ctype.ispunct
-    libc.src.ctype.ispunct_l
-    libc.src.ctype.isspace
-    libc.src.ctype.isspace_l
-    libc.src.ctype.isupper
-    libc.src.ctype.isupper_l
-    libc.src.ctype.isxdigit
-    libc.src.ctype.isxdigit_l
-    libc.src.ctype.toascii
-    libc.src.ctype.tolower
-    libc.src.ctype.tolower_l
-    libc.src.ctype.toupper
-    libc.src.ctype.toupper_l
-
-    # string.h entrypoints
-    libc.src.string.memccpy
-    libc.src.string.memchr
-    libc.src.string.memcmp
-    libc.src.string.memcpy
-    libc.src.string.memmem
-    libc.src.string.memmove
-    libc.src.string.mempcpy
-    libc.src.string.memrchr
-    libc.src.string.memset
-    libc.src.string.stpcpy
-    libc.src.string.stpncpy
-    libc.src.string.strcasestr
-    libc.src.string.strcat
-    libc.src.string.strchr
-    libc.src.string.strchrnul
-    libc.src.string.strcmp
-    libc.src.string.strcoll
-    libc.src.string.strcoll_l
-    libc.src.string.strcpy
-    libc.src.string.strcspn
-    libc.src.string.strdup
-    libc.src.string.strerror
-    libc.src.string.strlcat
-    libc.src.string.strlcpy
-    libc.src.string.strlen
-    libc.src.string.strncat
-    libc.src.string.strncmp
-    libc.src.string.strncpy
-    libc.src.string.strndup
-    libc.src.string.strnlen
-    libc.src.string.strpbrk
-    libc.src.string.strrchr
-    libc.src.string.strsep
-    libc.src.string.strspn
-    libc.src.string.strstr
-    libc.src.string.strtok
-    libc.src.string.strtok_r
-    libc.src.string.strxfrm
-    libc.src.string.strxfrm_l
-
-    # strings.h entrypoints
-    libc.src.strings.bcmp
-    libc.src.strings.bcopy
-    libc.src.strings.bzero
-    libc.src.strings.index
-    libc.src.strings.rindex
-    libc.src.strings.strcasecmp
-    libc.src.strings.strncasecmp
-
-    # stdbit.h entrypoints
-    libc.src.stdbit.stdc_bit_ceil_uc
-    libc.src.stdbit.stdc_bit_ceil_ui
-    libc.src.stdbit.stdc_bit_ceil_ul
-    libc.src.stdbit.stdc_bit_ceil_ull
-    libc.src.stdbit.stdc_bit_ceil_us
-    libc.src.stdbit.stdc_bit_floor_uc
-    libc.src.stdbit.stdc_bit_floor_ui
-    libc.src.stdbit.stdc_bit_floor_ul
-    libc.src.stdbit.stdc_bit_floor_ull
-    libc.src.stdbit.stdc_bit_floor_us
-    libc.src.stdbit.stdc_bit_width_uc
-    libc.src.stdbit.stdc_bit_width_ui
-    libc.src.stdbit.stdc_bit_width_ul
-    libc.src.stdbit.stdc_bit_width_ull
-    libc.src.stdbit.stdc_bit_width_us
-    libc.src.stdbit.stdc_count_ones_uc
-    libc.src.stdbit.stdc_count_ones_ui
-    libc.src.stdbit.stdc_count_ones_ul
-    libc.src.stdbit.stdc_count_ones_ull
-    libc.src.stdbit.stdc_count_ones_us
-    libc.src.stdbit.stdc_count_zeros_uc
-    libc.src.stdbit.stdc_count_zeros_ui
-    libc.src.stdbit.stdc_count_zeros_ul
-    libc.src.stdbit.stdc_count_zeros_ull
-    libc.src.stdbit.stdc_count_zeros_us
-    libc.src.stdbit.stdc_first_leading_one_uc
-    libc.src.stdbit.stdc_first_leading_one_ui
-    libc.src.stdbit.stdc_first_leading_one_ul
-    libc.src.stdbit.stdc_first_leading_one_ull
-    libc.src.stdbit.stdc_first_leading_one_us
-    libc.src.stdbit.stdc_first_leading_zero_uc
-    libc.src.stdbit.stdc_first_leading_zero_ui
-    libc.src.stdbit.stdc_first_leading_zero_ul
-    libc.src.stdbit.stdc_first_leading_zero_ull
-    libc.src.stdbit.stdc_first_leading_zero_us
-    libc.src.stdbit.stdc_first_trailing_one_uc
-    libc.src.stdbit.stdc_first_trailing_one_ui
-    libc.src.stdbit.stdc_first_trailing_one_ul
-    libc.src.stdbit.stdc_first_trailing_one_ull
-    libc.src.stdbit.stdc_first_trailing_one_us
-    libc.src.stdbit.stdc_first_trailing_zero_uc
-    libc.src.stdbit.stdc_first_trailing_zero_ui
-    libc.src.stdbit.stdc_first_trailing_zero_ul
-    libc.src.stdbit.stdc_first_trailing_zero_ull
-    libc.src.stdbit.stdc_first_trailing_zero_us
-    libc.src.stdbit.stdc_has_single_bit_uc
-    libc.src.stdbit.stdc_has_single_bit_ui
-    libc.src.stdbit.stdc_has_single_bit_ul
-    libc.src.stdbit.stdc_has_single_bit_ull
-    libc.src.stdbit.stdc_has_single_bit_us
-    libc.src.stdbit.stdc_leading_ones_uc
-    libc.src.stdbit.stdc_leading_ones_ui
-    libc.src.stdbit.stdc_leading_ones_ul
-    libc.src.stdbit.stdc_leading_ones_ull
-    libc.src.stdbit.stdc_leading_ones_us
-    libc.src.stdbit.stdc_leading_zeros_uc
-    libc.src.stdbit.stdc_leading_zeros_ui
-    libc.src.stdbit.stdc_leading_zeros_ul
-    libc.src.stdbit.stdc_leading_zeros_ull
-    libc.src.stdbit.stdc_leading_zeros_us
-    libc.src.stdbit.stdc_trailing_ones_uc
-    libc.src.stdbit.stdc_trailing_ones_ui
-    libc.src.stdbit.stdc_trailing_ones_ul
-    libc.src.stdbit.stdc_trailing_ones_ull
-    libc.src.stdbit.stdc_trailing_ones_us
-    libc.src.stdbit.stdc_trailing_zeros_uc
-    libc.src.stdbit.stdc_trailing_zeros_ui
-    libc.src.stdbit.stdc_trailing_zeros_ul
-    libc.src.stdbit.stdc_trailing_zeros_ull
-    libc.src.stdbit.stdc_trailing_zeros_us
-
-    # stdlib.h entrypoints
-    libc.src.stdlib._Exit
-    libc.src.stdlib.abort
-    libc.src.stdlib.abs
-    libc.src.stdlib.atexit
-    libc.src.stdlib.atof
-    libc.src.stdlib.atoi
-    libc.src.stdlib.atol
-    libc.src.stdlib.atoll
-    libc.src.stdlib.bsearch
-    libc.src.stdlib.div
-    libc.src.stdlib.exit
-    libc.src.stdlib.labs
-    libc.src.stdlib.ldiv
-    libc.src.stdlib.llabs
-    libc.src.stdlib.lldiv
-    libc.src.stdlib.memalignment
-    libc.src.stdlib.qsort
-    libc.src.stdlib.qsort_r
-    libc.src.stdlib.rand
-    libc.src.stdlib.srand
-    libc.src.stdlib.strtod
-    libc.src.stdlib.strtod_l
-    libc.src.stdlib.strtof
-    libc.src.stdlib.strtof_l
-    libc.src.stdlib.strtol
-    libc.src.stdlib.strtol_l
-    libc.src.stdlib.strtold
-    libc.src.stdlib.strtold_l
-    libc.src.stdlib.strtoll
-    libc.src.stdlib.strtoll_l
-    libc.src.stdlib.strtoul
-    libc.src.stdlib.strtoul_l
-    libc.src.stdlib.strtoull
-    libc.src.stdlib.strtoull_l
-    libc.src.stdlib.at_quick_exit
-    libc.src.stdlib.quick_exit
-    libc.src.stdlib.getenv
-    libc.src.stdlib.system
-
-    # TODO: Implement these correctly
-    libc.src.stdlib.aligned_alloc
-    libc.src.stdlib.calloc
-    libc.src.stdlib.free
-    libc.src.stdlib.malloc
-    libc.src.stdlib.realloc
-
-    # errno.h entrypoints
-    libc.src.errno.errno
-
-    # stdio.h entrypoints
-    libc.src.stdio.clearerr
-    libc.src.stdio.fclose
-    libc.src.stdio.printf
-    libc.src.stdio.vprintf
-    libc.src.stdio.fprintf
-    libc.src.stdio.vfprintf
-    libc.src.stdio.snprintf
-    libc.src.stdio.sprintf
-    libc.src.stdio.vsnprintf
-    libc.src.stdio.vsprintf
-    libc.src.stdio.asprintf
-    libc.src.stdio.vasprintf
-    libc.src.stdio.scanf
-    libc.src.stdio.vscanf
-    libc.src.stdio.fscanf
-    libc.src.stdio.vfscanf
-    libc.src.stdio.sscanf
-    libc.src.stdio.vsscanf
-    libc.src.stdio.feof
-    libc.src.stdio.ferror
-    libc.src.stdio.fflush
-    libc.src.stdio.fgetc
-    libc.src.stdio.fgets
-    libc.src.stdio.fopen
-    libc.src.stdio.fputc
-    libc.src.stdio.fputs
-    libc.src.stdio.fread
-    libc.src.stdio.fseek
-    libc.src.stdio.ftell
-    libc.src.stdio.fwrite
-    libc.src.stdio.getc
-    libc.src.stdio.getchar
-    libc.src.stdio.putc
-    libc.src.stdio.putchar
-    libc.src.stdio.puts
-    libc.src.stdio.remove
-    libc.src.stdio.rename
-    libc.src.stdio.stderr
-    libc.src.stdio.stdin
-    libc.src.stdio.stdout
-    libc.src.stdio.ungetc
-
-    # inttypes.h entrypoints
-    libc.src.inttypes.imaxabs
-    libc.src.inttypes.imaxdiv
-    libc.src.inttypes.strtoimax
-    libc.src.inttypes.strtoumax
-
-    # time.h entrypoints
-    libc.src.time.clock
-    libc.src.time.clock_gettime
-    libc.src.time.timespec_get
-    libc.src.time.nanosleep
-    libc.src.time.strftime
-    libc.src.time.strftime_l
-    libc.src.time.mktime
-
-    # wchar.h entrypoints
-    libc.src.wchar.wcslen
-    libc.src.wchar.wctob
-
-    # locale.h entrypoints
-    libc.src.locale.localeconv
-    libc.src.locale.duplocale
-    libc.src.locale.freelocale
-    libc.src.locale.localeconv
-    libc.src.locale.newlocale
-    libc.src.locale.setlocale
-    libc.src.locale.uselocale
-)
-
-set(TARGET_LIBM_ENTRYPOINTS
-    # math.h entrypoints
-    libc.src.math.acos
-    libc.src.math.acosf
-    libc.src.math.acoshf
-    libc.src.math.asin
-    libc.src.math.asinf
-    libc.src.math.asinhf
-    libc.src.math.atan
-    libc.src.math.atan2
-    libc.src.math.atan2f
-    libc.src.math.atan2l
-    libc.src.math.atanf
-    libc.src.math.atanhf
-    libc.src.math.canonicalize
-    libc.src.math.canonicalizef
-    libc.src.math.canonicalizel
-    libc.src.math.cbrt
-    libc.src.math.cbrtf
-    libc.src.math.ceil
-    libc.src.math.ceilf
-    libc.src.math.ceill
-    libc.src.math.copysign
-    libc.src.math.copysignf
-    libc.src.math.copysignl
-    libc.src.math.cos
-    libc.src.math.cosf
-    libc.src.math.coshf
-    libc.src.math.cospif
-    libc.src.math.ddivl
-    libc.src.math.dfmal
-    libc.src.math.dmull
-    libc.src.math.dsqrtl
-    libc.src.math.erff
-    libc.src.math.exp
-    libc.src.math.exp10
-    libc.src.math.exp10f
-    libc.src.math.exp2
-    libc.src.math.exp2f
-    libc.src.math.exp2m1f
-    libc.src.math.expf
-    libc.src.math.expm1
-    libc.src.math.expm1f
-    libc.src.math.fabs
-    libc.src.math.fabsf
-    libc.src.math.fabsl
-    libc.src.math.fadd
-    libc.src.math.faddl
-    libc.src.math.fdim
-    libc.src.math.fdimf
-    libc.src.math.fdiml
-    libc.src.math.fdiv
-    libc.src.math.fdivl
-    libc.src.math.ffma
-    libc.src.math.ffmal
-    libc.src.math.floor
-    libc.src.math.floorf
-    libc.src.math.floorl
-    libc.src.math.fma
-    libc.src.math.fmabf16
-    libc.src.math.fmaf
-    libc.src.math.fmax
-    libc.src.math.fmaxf
-    libc.src.math.fmaximum
-    libc.src.math.fmaximumf
-    libc.src.math.fmaximuml
-    libc.src.math.fmaximum_mag
-    libc.src.math.fmaximum_magf
-    libc.src.math.fmaximum_magl
-    libc.src.math.fmaximum_mag_num
-    libc.src.math.fmaximum_mag_numf
-    libc.src.math.fmaximum_mag_numl
-    libc.src.math.fmaximum_num
-    libc.src.math.fmaximum_numf
-    libc.src.math.fmaximum_numl
-    libc.src.math.fmaxl
-    libc.src.math.fmin
-    libc.src.math.fminf
-    libc.src.math.fminimum
-    libc.src.math.fminimumf
-    libc.src.math.fminimuml
-    libc.src.math.fminimum_mag
-    libc.src.math.fminimum_magf
-    libc.src.math.fminimum_magl
-    libc.src.math.fminimum_mag_num
-    libc.src.math.fminimum_mag_numf
-    libc.src.math.fminimum_mag_numl
-    libc.src.math.fminimum_num
-    libc.src.math.fminimum_numf
-    libc.src.math.fminimum_numl
-    libc.src.math.fminl
-    libc.src.math.fmod
-    libc.src.math.fmodf
-    libc.src.math.fmodl
-    libc.src.math.fmul
-    libc.src.math.fmull
-    libc.src.math.frexp
-    libc.src.math.frexpf
-    libc.src.math.frexpl
-    # FIXME: Broken.
-    # libc.src.math.fromfp
-    # libc.src.math.fromfpf
-    # libc.src.math.fromfpl
-    # libc.src.math.fromfpx
-    # libc.src.math.fromfpxf
-    # libc.src.math.fromfpxl
-    libc.src.math.fsqrt
-    libc.src.math.fsqrtl
-    libc.src.math.fsub
-    libc.src.math.fsubl
-    libc.src.math.getpayload
-    libc.src.math.getpayloadf
-    libc.src.math.getpayloadl
-    libc.src.math.hypot
-    libc.src.math.hypotf
-    libc.src.math.ilogb
-    libc.src.math.ilogbf
-    libc.src.math.ilogbl
-    libc.src.math.isnan
-    libc.src.math.isnanf
-    libc.src.math.isnanl
-    libc.src.math.ldexp
-    libc.src.math.ldexpf
-    libc.src.math.ldexpl
-    libc.src.math.lgamma
-    libc.src.math.lgamma_r
-    libc.src.math.llogb
-    libc.src.math.llogbf
-    libc.src.math.llogbl
-    libc.src.math.llrint
-    libc.src.math.llrintf
-    libc.src.math.llrintl
-    libc.src.math.llround
-    libc.src.math.llroundf
-    libc.src.math.llroundl
-    libc.src.math.log
-    libc.src.math.log10
-    libc.src.math.log10f
-    libc.src.math.log1p
-    libc.src.math.log1pf
-    libc.src.math.log2
-    libc.src.math.log2f
-    libc.src.math.logb
-    libc.src.math.logbf
-    libc.src.math.logbl
-    libc.src.math.logf
-    libc.src.math.lrint
-    libc.src.math.lrintf
-    libc.src.math.lrintl
-    libc.src.math.lround
-    libc.src.math.lroundf
-    libc.src.math.lroundl
-    libc.src.math.modf
-    libc.src.math.modff
-    libc.src.math.modfl
-    libc.src.math.nan
-    libc.src.math.nanf
-    libc.src.math.nanl
-    libc.src.math.nearbyint
-    libc.src.math.nearbyintf
-    libc.src.math.nearbyintl
-    libc.src.math.nextafter
-    libc.src.math.nextafterf
-    libc.src.math.nextafterl
-    libc.src.math.nextdown
-    libc.src.math.nextdownf
-    libc.src.math.nextdownl
-    libc.src.math.nexttoward
-    libc.src.math.nexttowardf
-    libc.src.math.nexttowardl
-    libc.src.math.nextup
-    libc.src.math.nextupf
-    libc.src.math.nextupl
-    libc.src.math.pow
-    libc.src.math.powf
-    libc.src.math.remainder
-    libc.src.math.remainderf
-    libc.src.math.remainderl
-    libc.src.math.remquo
-    libc.src.math.remquof
-    libc.src.math.remquol
-    libc.src.math.rint
-    libc.src.math.rintf
-    libc.src.math.rintl
-    libc.src.math.roundeven
-    libc.src.math.roundevenf
-    libc.src.math.roundevenl
-    libc.src.math.round
-    libc.src.math.roundf
-    libc.src.math.roundl
-    libc.src.math.scalbln
-    libc.src.math.scalblnf
-    libc.src.math.scalblnl
-    libc.src.math.scalbn
-    libc.src.math.scalbnf
-    libc.src.math.scalbnl
-    libc.src.math.setpayload
-    libc.src.math.setpayloadf
-    libc.src.math.setpayloadl
-    libc.src.math.setpayloadsig
-    libc.src.math.setpayloadsigf
-    libc.src.math.setpayloadsigl
-    libc.src.math.sin
-    libc.src.math.sincos
-    libc.src.math.sincosf
-    libc.src.math.sinf
-    libc.src.math.sinhf
-    libc.src.math.sinpif
-    libc.src.math.sqrt
-    libc.src.math.sqrtf
-    libc.src.math.sqrtl
-    libc.src.math.tan
-    libc.src.math.tanf
-    libc.src.math.tanhf
-    libc.src.math.tanpif
-    libc.src.math.tgamma
-    libc.src.math.tgammaf
-    libc.src.math.totalorder
-    libc.src.math.totalorderf
-    libc.src.math.totalorderl
-    libc.src.math.totalordermag
-    libc.src.math.totalordermagf
-    libc.src.math.totalordermagl
-    libc.src.math.trunc
-    libc.src.math.truncf
-    libc.src.math.truncl
-    # FIXME: Broken.
-    # libc.src.math.ufromfp
-    # libc.src.math.ufromfpf
-    # libc.src.math.ufromfpl
-    # libc.src.math.ufromfpx
-    # libc.src.math.ufromfpxf
-    # libc.src.math.ufromfpxl
-)
-
-if(LIBC_TYPES_HAS_FLOAT16)
-  list(APPEND TARGET_LIBM_ENTRYPOINTS
-    # math.h C23 _Float16 entrypoints
-    libc.src.math.acosf16
-    libc.src.math.acoshf16
-    libc.src.math.acospif16
-    libc.src.math.asinf16
-    libc.src.math.asinhf16
-    libc.src.math.atanf16
-    libc.src.math.atanhf16
-    libc.src.math.canonicalizef16
-    libc.src.math.ceilf16
-    libc.src.math.copysignf16
-    libc.src.math.cosf16
-    libc.src.math.coshf16
-    libc.src.math.cospif16
-    libc.src.math.exp10f16
-    libc.src.math.exp10m1f16
-    libc.src.math.exp2f16
-    libc.src.math.exp2m1f16
-    libc.src.math.expf16
-    libc.src.math.expm1f16
-    libc.src.math.f16add
-    libc.src.math.f16addf
-    libc.src.math.f16addl
-    libc.src.math.f16div
-    libc.src.math.f16divf
-    libc.src.math.f16divl
-    libc.src.math.f16fma
-    libc.src.math.f16fmaf
-    libc.src.math.f16fmal
-    libc.src.math.f16mul
-    libc.src.math.f16mulf
-    libc.src.math.f16mull
-    libc.src.math.f16sqrt
-    libc.src.math.f16sqrtf
-    libc.src.math.f16sqrtl
-    libc.src.math.f16sub
-    libc.src.math.f16subf
-    libc.src.math.f16subl
-    libc.src.math.fabsf16
-    libc.src.math.fdimf16
-    libc.src.math.floorf16
-    libc.src.math.fmaf16
-    libc.src.math.fmaxf16
-    libc.src.math.fmaximum_mag_numf16
-    libc.src.math.fmaximum_magf16
-    libc.src.math.fmaximum_numf16
-    libc.src.math.fmaximumf16
-    libc.src.math.fminf16
-    libc.src.math.fminimum_mag_numf16
-    libc.src.math.fminimum_magf16
-    libc.src.math.fminimum_numf16
-    libc.src.math.fminimumf16
-    libc.src.math.fmodf16
-    libc.src.math.frexpf16
-    libc.src.math.fromfpf16
-    libc.src.math.fromfpxf16
-    libc.src.math.getpayloadf16
-    libc.src.math.hypotf16
-    libc.src.math.ilogbf16
-    libc.src.math.iscanonicalf16
-    libc.src.math.issignalingf16
-    libc.src.math.ldexpf16
-    libc.src.math.llogbf16
-    libc.src.math.llrintf16
-    libc.src.math.llroundf16
-    libc.src.math.log10f16
-    libc.src.math.log2f16
-    libc.src.math.logbf16
-    libc.src.math.logf16
-    libc.src.math.lrintf16
-    libc.src.math.lroundf16
-    libc.src.math.modff16
-    libc.src.math.nanf16
-    libc.src.math.nearbyintf16
-    libc.src.math.nextafterf16
-    libc.src.math.nextdownf16
-    libc.src.math.nexttowardf16
-    libc.src.math.nextupf16
-    libc.src.math.remainderf16
-    libc.src.math.remquof16
-    libc.src.math.rintf16
-    libc.src.math.roundevenf16
-    libc.src.math.roundf16
-    libc.src.math.scalblnf16
-    libc.src.math.scalbnf16
-    libc.src.math.setpayloadf16
-    libc.src.math.setpayloadsigf16
-    libc.src.math.sinf16
-    libc.src.math.sinhf16
-    libc.src.math.sinpif16
-    libc.src.math.sqrtf16
-    libc.src.math.tanf16
-    libc.src.math.tanhf16
-    libc.src.math.tanpif16
-    libc.src.math.totalorderf16
-    libc.src.math.totalordermagf16
-    libc.src.math.truncf16
-    libc.src.math.ufromfpf16
-    libc.src.math.ufromfpxf16
-  )
-endif()
-
-list(APPEND TARGET_LIBM_ENTRYPOINTS
-  # bfloat16 entrypoints
-  libc.src.math.bf16add
-  libc.src.math.bf16addf
-  libc.src.math.bf16addl
-  libc.src.math.bf16div
-  libc.src.math.bf16divf
-  libc.src.math.bf16divl
-  libc.src.math.bf16fma
-  libc.src.math.bf16fmaf
-  libc.src.math.bf16fmal
-  libc.src.math.bf16mul
-  libc.src.math.bf16mulf
-  libc.src.math.bf16mull
-  libc.src.math.bf16sub
-  libc.src.math.bf16subf
-  libc.src.math.bf16subl
-  libc.src.math.canonicalizebf16
-  libc.src.math.ceilbf16
-  libc.src.math.copysignbf16
-  libc.src.math.fabsbf16
-  libc.src.math.fdimbf16
-  libc.src.math.floorbf16
-  libc.src.math.fmaxbf16
-  libc.src.math.fmaximumbf16
-  libc.src.math.fmaximum_magbf16
-  libc.src.math.fmaximum_mag_numbf16
-  libc.src.math.fmaximum_numbf16
-  libc.src.math.fminbf16
-  libc.src.math.fminimumbf16
-  libc.src.math.fminimum_magbf16
-  libc.src.math.fminimum_mag_numbf16
-  libc.src.math.fminimum_numbf16
-  libc.src.math.fmodbf16
-  libc.src.math.frexpbf16
-  libc.src.math.fromfpbf16
-  libc.src.math.fromfpxbf16
-  libc.src.math.getpayloadbf16
-  libc.src.math.ilogbbf16
-  libc.src.math.iscanonicalbf16
-  libc.src.math.issignalingbf16
-  libc.src.math.ldexpbf16
-  libc.src.math.llogbbf16
-  libc.src.math.llrintbf16
-  libc.src.math.llroundbf16
-  libc.src.math.log_bf16
-  libc.src.math.logbbf16
-  libc.src.math.lrintbf16
-  libc.src.math.lroundbf16
-  libc.src.math.modfbf16
-  libc.src.math.nanbf16
-  libc.src.math.nearbyintbf16
-  libc.src.math.nextafterbf16
-  libc.src.math.nextdownbf16
-  libc.src.math.nexttowardbf16
-  libc.src.math.nextupbf16
-  libc.src.math.remainderbf16
-  libc.src.math.remquobf16
-  libc.src.math.rintbf16
-  libc.src.math.roundbf16
-  libc.src.math.roundevenbf16
-  libc.src.math.scalblnbf16
-  libc.src.math.scalbnbf16
-  libc.src.math.setpayloadbf16
-  libc.src.math.setpayloadsigbf16
-  libc.src.math.sqrtbf16
-  libc.src.math.truncbf16
-  libc.src.math.totalorderbf16
-  libc.src.math.totalordermagbf16
-  libc.src.math.ufromfpbf16
-  libc.src.math.ufromfpxbf16
-)
-
-set(TARGET_LLVMLIBC_ENTRYPOINTS
-  ${TARGET_LIBC_ENTRYPOINTS}
-  ${TARGET_LIBM_ENTRYPOINTS}
-)
+set(TARGET_LIBC_ENTRYPOINTS
+    # assert.h entrypoints
+    libc.src.assert.__assert_fail
+
+    # ctype.h entrypoints
+    libc.src.ctype.isalnum
+    libc.src.ctype.isalnum_l
+    libc.src.ctype.isalpha
+    libc.src.ctype.isalpha_l
+    libc.src.ctype.isascii
+    libc.src.ctype.isblank
+    libc.src.ctype.isblank_l
+    libc.src.ctype.iscntrl
+    libc.src.ctype.iscntrl_l
+    libc.src.ctype.isdigit
+    libc.src.ctype.isdigit_l
+    libc.src.ctype.isgraph
+    libc.src.ctype.isgraph_l
+    libc.src.ctype.islower
+    libc.src.ctype.islower_l
+    libc.src.ctype.isprint
+    libc.src.ctype.isprint_l
+    libc.src.ctype.ispunct
+    libc.src.ctype.ispunct_l
+    libc.src.ctype.isspace
+    libc.src.ctype.isspace_l
+    libc.src.ctype.isupper
+    libc.src.ctype.isupper_l
+    libc.src.ctype.isxdigit
+    libc.src.ctype.isxdigit_l
+    libc.src.ctype.toascii
+    libc.src.ctype.tolower
+    libc.src.ctype.tolower_l
+    libc.src.ctype.toupper
+    libc.src.ctype.toupper_l
+
+    # string.h entrypoints
+    libc.src.string.memccpy
+    libc.src.string.memchr
+    libc.src.string.memcmp
+    libc.src.string.memcpy
+    libc.src.string.memmem
+    libc.src.string.memmove
+    libc.src.string.mempcpy
+    libc.src.string.memrchr
+    libc.src.string.memset
+    libc.src.string.stpcpy
+    libc.src.string.stpncpy
+    libc.src.string.strcasestr
+    libc.src.string.strcat
+    libc.src.string.strchr
+    libc.src.string.strchrnul
+    libc.src.string.strcmp
+    libc.src.string.strcoll
+    libc.src.string.strcoll_l
+    libc.src.string.strcpy
+    libc.src.string.strcspn
+    libc.src.string.strdup
+    libc.src.string.strerror
+    libc.src.string.strlcat
+    libc.src.string.strlcpy
+    libc.src.string.strlen
+    libc.src.string.strncat
+    libc.src.string.strncmp
+    libc.src.string.strncpy
+    libc.src.string.strndup
+    libc.src.string.strnlen
+    libc.src.string.strpbrk
+    libc.src.string.strrchr
+    libc.src.string.strsep
+    libc.src.string.strspn
+    libc.src.string.strstr
+    libc.src.string.strtok
+    libc.src.string.strtok_r
+    libc.src.string.strxfrm
+    libc.src.string.strxfrm_l
+
+    # strings.h entrypoints
+    libc.src.strings.bcmp
+    libc.src.strings.bcopy
+    libc.src.strings.bzero
+    libc.src.strings.index
+    libc.src.strings.rindex
+    libc.src.strings.strcasecmp
+    libc.src.strings.strncasecmp
+
+    # stdbit.h entrypoints
+    libc.src.stdbit.stdc_bit_ceil_uc
+    libc.src.stdbit.stdc_bit_ceil_ui
+    libc.src.stdbit.stdc_bit_ceil_ul
+    libc.src.stdbit.stdc_bit_ceil_ull
+    libc.src.stdbit.stdc_bit_ceil_us
+    libc.src.stdbit.stdc_bit_floor_uc
+    libc.src.stdbit.stdc_bit_floor_ui
+    libc.src.stdbit.stdc_bit_floor_ul
+    libc.src.stdbit.stdc_bit_floor_ull
+    libc.src.stdbit.stdc_bit_floor_us
+    libc.src.stdbit.stdc_bit_width_uc
+    libc.src.stdbit.stdc_bit_width_ui
+    libc.src.stdbit.stdc_bit_width_ul
+    libc.src.stdbit.stdc_bit_width_ull
+    libc.src.stdbit.stdc_bit_width_us
+    libc.src.stdbit.stdc_count_ones_uc
+    libc.src.stdbit.stdc_count_ones_ui
+    libc.src.stdbit.stdc_count_ones_ul
+    libc.src.stdbit.stdc_count_ones_ull
+    libc.src.stdbit.stdc_count_ones_us
+    libc.src.stdbit.stdc_count_zeros_uc
+    libc.src.stdbit.stdc_count_zeros_ui
+    libc.src.stdbit.stdc_count_zeros_ul
+    libc.src.stdbit.stdc_count_zeros_ull
+    libc.src.stdbit.stdc_count_zeros_us
+    libc.src.stdbit.stdc_first_leading_one_uc
+    libc.src.stdbit.stdc_first_leading_one_ui
+    libc.src.stdbit.stdc_first_leading_one_ul
+    libc.src.stdbit.stdc_first_leading_one_ull
+    libc.src.stdbit.stdc_first_leading_one_us
+    libc.src.stdbit.stdc_first_leading_zero_uc
+    libc.src.stdbit.stdc_first_leading_zero_ui
+    libc.src.stdbit.stdc_first_leading_zero_ul
+    libc.src.stdbit.stdc_first_leading_zero_ull
+    libc.src.stdbit.stdc_first_leading_zero_us
+    libc.src.stdbit.stdc_first_trailing_one_uc
+    libc.src.stdbit.stdc_first_trailing_one_ui
+    libc.src.stdbit.stdc_first_trailing_one_ul
+    libc.src.stdbit.stdc_first_trailing_one_ull
+    libc.src.stdbit.stdc_first_trailing_one_us
+    libc.src.stdbit.stdc_first_trailing_zero_uc
+    libc.src.stdbit.stdc_first_trailing_zero_ui
+    libc.src.stdbit.stdc_first_trailing_zero_ul
+    libc.src.stdbit.stdc_first_trailing_zero_ull
+    libc.src.stdbit.stdc_first_trailing_zero_us
+    libc.src.stdbit.stdc_has_single_bit_uc
+    libc.src.stdbit.stdc_has_single_bit_ui
+    libc.src.stdbit.stdc_has_single_bit_ul
+    libc.src.stdbit.stdc_has_single_bit_ull
+    libc.src.stdbit.stdc_has_single_bit_us
+    libc.src.stdbit.stdc_leading_ones_uc
+    libc.src.stdbit.stdc_leading_ones_ui
+    libc.src.stdbit.stdc_leading_ones_ul
+    libc.src.stdbit.stdc_leading_ones_ull
+    libc.src.stdbit.stdc_leading_ones_us
+    libc.src.stdbit.stdc_leading_zeros_uc
+    libc.src.stdbit.stdc_leading_zeros_ui
+    libc.src.stdbit.stdc_leading_zeros_ul
+    libc.src.stdbit.stdc_leading_zeros_ull
+    libc.src.stdbit.stdc_leading_zeros_us
+    libc.src.stdbit.stdc_trailing_ones_uc
+    libc.src.stdbit.stdc_trailing_ones_ui
+    libc.src.stdbit.stdc_trailing_ones_ul
+    libc.src.stdbit.stdc_trailing_ones_ull
+    libc.src.stdbit.stdc_trailing_ones_us
+    libc.src.stdbit.stdc_trailing_zeros_uc
+    libc.src.stdbit.stdc_trailing_zeros_ui
+    libc.src.stdbit.stdc_trailing_zeros_ul
+    libc.src.stdbit.stdc_trailing_zeros_ull
+    libc.src.stdbit.stdc_trailing_zeros_us
+
+    # stdlib.h entrypoints
+    libc.src.stdlib._Exit
+    libc.src.stdlib.abort
+    libc.src.stdlib.abs
+    libc.src.stdlib.atexit
+    libc.src.stdlib.atof
+    libc.src.stdlib.atoi
+    libc.src.stdlib.atol
+    libc.src.stdlib.atoll
+    libc.src.stdlib.bsearch
+    libc.src.stdlib.div
+    libc.src.stdlib.exit
+    libc.src.stdlib.labs
+    libc.src.stdlib.ldiv
+    libc.src.stdlib.llabs
+    libc.src.stdlib.lldiv
+    libc.src.stdlib.memalignment
+    libc.src.stdlib.qsort
+    libc.src.stdlib.qsort_r
+    libc.src.stdlib.rand
+    libc.src.stdlib.srand
+    libc.src.stdlib.strtod
+    libc.src.stdlib.strtod_l
+    libc.src.stdlib.strtof
+    libc.src.stdlib.strtof_l
+    libc.src.stdlib.strtol
+    libc.src.stdlib.strtol_l
+    libc.src.stdlib.strtold
+    libc.src.stdlib.strtold_l
+    libc.src.stdlib.strtoll
+    libc.src.stdlib.strtoll_l
+    libc.src.stdlib.strtoul
+    libc.src.stdlib.strtoul_l
+    libc.src.stdlib.strtoull
+    libc.src.stdlib.strtoull_l
+    libc.src.stdlib.at_quick_exit
+    libc.src.stdlib.quick_exit
+    libc.src.stdlib.getenv
+    libc.src.stdlib.system
+
+    # TODO: Implement these correctly
+    libc.src.stdlib.aligned_alloc
+    libc.src.stdlib.calloc
+    libc.src.stdlib.free
+    libc.src.stdlib.malloc
+    libc.src.stdlib.realloc
+
+    # errno.h entrypoints
+    libc.src.errno.errno
+
+    # stdio.h entrypoints
+    libc.src.stdio.clearerr
+    libc.src.stdio.fclose
+    libc.src.stdio.printf
+    libc.src.stdio.vprintf
+    libc.src.stdio.fprintf
+    libc.src.stdio.vfprintf
+    libc.src.stdio.snprintf
+    libc.src.stdio.sprintf
+    libc.src.stdio.vsnprintf
+    libc.src.stdio.vsprintf
+    libc.src.stdio.asprintf
+    libc.src.stdio.vasprintf
+    libc.src.stdio.scanf
+    libc.src.stdio.vscanf
+    libc.src.stdio.fscanf
+    libc.src.stdio.vfscanf
+    libc.src.stdio.sscanf
+    libc.src.stdio.vsscanf
+    libc.src.stdio.feof
+    libc.src.stdio.ferror
+    libc.src.stdio.fflush
+    libc.src.stdio.fgetc
+    libc.src.stdio.fgets
+    libc.src.stdio.fopen
+    libc.src.stdio.fputc
+    libc.src.stdio.fputs
+    libc.src.stdio.fread
+    libc.src.stdio.fseek
+    libc.src.stdio.ftell
+    libc.src.stdio.fwrite
+    libc.src.stdio.getc
+    libc.src.stdio.getchar
+    libc.src.stdio.putc
+    libc.src.stdio.putchar
+    libc.src.stdio.puts
+    libc.src.stdio.remove
+    libc.src.stdio.rename
+    libc.src.stdio.stderr
+    libc.src.stdio.stdin
+    libc.src.stdio.stdout
+    libc.src.stdio.ungetc
+
+    # inttypes.h entrypoints
+    libc.src.inttypes.imaxabs
+    libc.src.inttypes.imaxdiv
+    libc.src.inttypes.strtoimax
+    libc.src.inttypes.strtoumax
+
+    # time.h entrypoints
+    libc.src.time.clock
+    libc.src.time.clock_gettime
+    libc.src.time.timespec_get
+    libc.src.time.nanosleep
+    libc.src.time.strftime
+    libc.src.time.strftime_l
+    libc.src.time.mktime
+
+    # wchar.h entrypoints
+    libc.src.wchar.wcslen
+    libc.src.wchar.wctob
+
+    # locale.h entrypoints
+    libc.src.locale.localeconv
+    libc.src.locale.duplocale
+    libc.src.locale.freelocale
+    libc.src.locale.localeconv
+    libc.src.locale.newlocale
+    libc.src.locale.setlocale
+    libc.src.locale.uselocale
+)
+
+set(TARGET_LIBM_ENTRYPOINTS
+    # math.h entrypoints
+    libc.src.math.acos
+    libc.src.math.acosf
+    libc.src.math.acoshf
+    libc.src.math.asin
+    libc.src.math.asinf
+    libc.src.math.asinhf
+    libc.src.math.atan
+    libc.src.math.atan2
+    libc.src.math.atan2f
+    libc.src.math.atan2l
+    libc.src.math.atanf
+    libc.src.math.atanhf
+    libc.src.math.canonicalize
+    libc.src.math.canonicalizef
+    libc.src.math.canonicalizel
+    libc.src.math.cbrt
+    libc.src.math.cbrtf
+    libc.src.math.ceil
+    libc.src.math.ceilf
+    libc.src.math.ceill
+    libc.src.math.copysign
+    libc.src.math.copysignf
+    libc.src.math.copysignl
+    libc.src.math.cos
+    libc.src.math.cosf
+    libc.src.math.coshf
+    libc.src.math.cospif
+    libc.src.math.ddivl
+    libc.src.math.dfmal
+    libc.src.math.dmull
+    libc.src.math.dsqrtl
+    libc.src.math.erff
+    libc.src.math.exp
+    libc.src.math.exp10
+    libc.src.math.exp10f
+    libc.src.math.exp2
+    libc.src.math.exp2f
+    libc.src.math.exp2m1f
+    libc.src.math.expf
+    libc.src.math.expm1
+    libc.src.math.expm1f
+    libc.src.math.fabs
+    libc.src.math.fabsf
+    libc.src.math.fabsl
+    libc.src.math.fadd
+    libc.src.math.faddl
+    libc.src.math.fdim
+    libc.src.math.fdimf
+    libc.src.math.fdiml
+    libc.src.math.fdiv
+    libc.src.math.fdivl
+    libc.src.math.ffma
+    libc.src.math.ffmal
+    libc.src.math.floor
+    libc.src.math.floorf
+    libc.src.math.floorl
+    libc.src.math.fma
+    libc.src.math.fmabf16
+    libc.src.math.fmaf
+    libc.src.math.fmax
+    libc.src.math.fmaxf
+    libc.src.math.fmaximum
+    libc.src.math.fmaximumf
+    libc.src.math.fmaximuml
+    libc.src.math.fmaximum_mag
+    libc.src.math.fmaximum_magf
+    libc.src.math.fmaximum_magl
+    libc.src.math.fmaximum_mag_num
+    libc.src.math.fmaximum_mag_numf
+    libc.src.math.fmaximum_mag_numl
+    libc.src.math.fmaximum_num
+    libc.src.math.fmaximum_numf
+    libc.src.math.fmaximum_numl
+    libc.src.math.fmaxl
+    libc.src.math.fmin
+    libc.src.math.fminf
+    libc.src.math.fminimum
+    libc.src.math.fminimumf
+    libc.src.math.fminimuml
+    libc.src.math.fminimum_mag
+    libc.src.math.fminimum_magf
+    libc.src.math.fminimum_magl
+    libc.src.math.fminimum_mag_num
+    libc.src.math.fminimum_mag_numf
+    libc.src.math.fminimum_mag_numl
+    libc.src.math.fminimum_num
+    libc.src.math.fminimum_numf
+    libc.src.math.fminimum_numl
+    libc.src.math.fminl
+    libc.src.math.fmod
+    libc.src.math.fmodf
+    libc.src.math.fmodl
+    libc.src.math.fmul
+    libc.src.math.fmull
+    libc.src.math.frexp
+    libc.src.math.frexpf
+    libc.src.math.frexpl
+    # FIXME: Broken.
+    # libc.src.math.fromfp
+    # libc.src.math.fromfpf
+    # libc.src.math.fromfpl
+    # libc.src.math.fromfpx
+    # libc.src.math.fromfpxf
+    # libc.src.math.fromfpxl
+    libc.src.math.fsqrt
+    libc.src.math.fsqrtl
+    libc.src.math.fsub
+    libc.src.math.fsubl
+    libc.src.math.getpayload
+    libc.src.math.getpayloadf
+    libc.src.math.getpayloadl
+    libc.src.math.hypot
+    libc.src.math.hypotf
+    libc.src.math.ilogb
+    libc.src.math.ilogbf
+    libc.src.math.ilogbl
+    libc.src.math.isnan
+    libc.src.math.isnanf
+    libc.src.math.isnanl
+    libc.src.math.ldexp
+    libc.src.math.ldexpf
+    libc.src.math.ldexpl
+    libc.src.math.lgamma
+    libc.src.math.lgamma_r
+    libc.src.math.llogb
+    libc.src.math.llogbf
+    libc.src.math.llogbl
+    libc.src.math.llrint
+    libc.src.math.llrintf
+    libc.src.math.llrintl
+    libc.src.math.llround
+    libc.src.math.llroundf
+    libc.src.math.llroundl
+    libc.src.math.log
+    libc.src.math.log10
+    libc.src.math.log10f
+    libc.src.math.log1p
+    libc.src.math.log1pf
+    libc.src.math.log2
+    libc.src.math.log2f
+    libc.src.math.logb
+    libc.src.math.logbf
+    libc.src.math.logbl
+    libc.src.math.logf
+    libc.src.math.lrint
+    libc.src.math.lrintf
+    libc.src.math.lrintl
+    libc.src.math.lround
+    libc.src.math.lroundf
+    libc.src.math.lroundl
+    libc.src.math.modf
+    libc.src.math.modff
+    libc.src.math.modfl
+    libc.src.math.nan
+    libc.src.math.nanf
+    libc.src.math.nanl
+    libc.src.math.nearbyint
+    libc.src.math.nearbyintf
+    libc.src.math.nearbyintl
+    libc.src.math.nextafter
+    libc.src.math.nextafterf
+    libc.src.math.nextafterl
+    libc.src.math.nextdown
+    libc.src.math.nextdownf
+    libc.src.math.nextdownl
+    libc.src.math.nexttoward
+    libc.src.math.nexttowardf
+    libc.src.math.nexttowardl
+    libc.src.math.nextup
+    libc.src.math.nextupf
+    libc.src.math.nextupl
+    libc.src.math.pow
+    libc.src.math.powf
+    libc.src.math.remainder
+    libc.src.math.remainderf
+    libc.src.math.remainderl
+    libc.src.math.remquo
+    libc.src.math.remquof
+    libc.src.math.remquol
+    libc.src.math.rint
+    libc.src.math.rintf
+    libc.src.math.rintl
+    libc.src.math.roundeven
+    libc.src.math.roundevenf
+    libc.src.math.roundevenl
+    libc.src.math.round
+    libc.src.math.roundf
+    libc.src.math.roundl
+    libc.src.math.scalbln
+    libc.src.math.scalblnf
+    libc.src.math.scalblnl
+    libc.src.math.scalbn
+    libc.src.math.scalbnf
+    libc.src.math.scalbnl
+    libc.src.math.setpayload
+    libc.src.math.setpayloadf
+    libc.src.math.setpayloadl
+    libc.src.math.setpayloadsig
+    libc.src.math.setpayloadsigf
+    libc.src.math.setpayloadsigl
+    libc.src.math.sin
+    libc.src.math.sincos
+    libc.src.math.sincosf
+    libc.src.math.sinf
+    libc.src.math.sinhf
+    libc.src.math.sinpif
+    libc.src.math.sqrt
+    libc.src.math.sqrtf
+    libc.src.math.sqrtl
+    libc.src.math.tan
+    libc.src.math.tanf
+    libc.src.math.tanhf
+    libc.src.math.tanpif
+    libc.src.math.tgamma
+    libc.src.math.tgammaf
+    libc.src.math.totalorder
+    libc.src.math.totalorderf
+    libc.src.math.totalorderl
+    libc.src.math.totalordermag
+    libc.src.math.totalordermagf
+    libc.src.math.totalordermagl
+    libc.src.math.trunc
+    libc.src.math.truncf
+    libc.src.math.truncl
+    # FIXME: Broken.
+    # libc.src.math.ufromfp
+    # libc.src.math.ufromfpf
+    # libc.src.math.ufromfpl
+    # libc.src.math.ufromfpx
+    # libc.src.math.ufromfpxf
+    # libc.src.math.ufromfpxl
+)
+
+if(LIBC_TYPES_HAS_FLOAT16)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # math.h C23 _Float16 entrypoints
+    libc.src.math.acosf16
+    libc.src.math.acoshf16
+    libc.src.math.acospif16
+    libc.src.math.asinf16
+    libc.src.math.asinhf16
+    libc.src.math.atanf16
+    libc.src.math.atanhf16
+    libc.src.math.canonicalizef16
+    libc.src.math.ceilf16
+    libc.src.math.copysignf16
+    libc.src.math.cosf16
+    libc.src.math.coshf16
+    libc.src.math.cospif16
+    libc.src.math.exp10f16
+    libc.src.math.exp10m1f16
+    libc.src.math.exp2f16
+    libc.src.math.exp2m1f16
+    libc.src.math.expf16
+    libc.src.math.expm1f16
+    libc.src.math.f16add
+    libc.src.math.f16addf
+    libc.src.math.f16addl
+    libc.src.math.f16div
+    libc.src.math.f16divf
+    libc.src.math.f16divl
+    libc.src.math.f16fma
+    libc.src.math.f16fmaf
+    libc.src.math.f16fmal
+    libc.src.math.f16mul
+    libc.src.math.f16mulf
+    libc.src.math.f16mull
+    libc.src.math.f16sqrt
+    libc.src.math.f16sqrtf
+    libc.src.math.f16sqrtl
+    libc.src.math.f16sub
+    libc.src.math.f16subf
+    libc.src.math.f16subl
+    libc.src.math.fabsf16
+    libc.src.math.fdimf16
+    libc.src.math.floorf16
+    libc.src.math.fmaf16
+    libc.src.math.fmaxf16
+    libc.src.math.fmaximum_mag_numf16
+    libc.src.math.fmaximum_magf16
+    libc.src.math.fmaximum_numf16
+    libc.src.math.fmaximumf16
+    libc.src.math.fminf16
+    libc.src.math.fminimum_mag_numf16
+    libc.src.math.fminimum_magf16
+    libc.src.math.fminimum_numf16
+    libc.src.math.fminimumf16
+    libc.src.math.fmodf16
+    libc.src.math.frexpf16
+    libc.src.math.fromfpf16
+    libc.src.math.fromfpxf16
+    libc.src.math.getpayloadf16
+    libc.src.math.hypotf16
+    libc.src.math.ilogbf16
+    libc.src.math.iscanonicalf16
+    libc.src.math.issignalingf16
+    libc.src.math.ldexpf16
+    libc.src.math.llogbf16
+    libc.src.math.llrintf16
+    libc.src.math.llroundf16
+    libc.src.math.log10f16
+    libc.src.math.log2f16
+    libc.src.math.logbf16
+    libc.src.math.logf16
+    libc.src.math.lrintf16
+    libc.src.math.lroundf16
+    libc.src.math.modff16
+    libc.src.math.nanf16
+    libc.src.math.nearbyintf16
+    libc.src.math.nextafterf16
+    libc.src.math.nextdownf16
+    libc.src.math.nexttowardf16
+    libc.src.math.nextupf16
+    libc.src.math.remainderf16
+    libc.src.math.remquof16
+    libc.src.math.rintf16
+    libc.src.math.roundevenf16
+    libc.src.math.roundf16
+    libc.src.math.scalblnf16
+    libc.src.math.scalbnf16
+    libc.src.math.setpayloadf16
+    libc.src.math.setpayloadsigf16
+    libc.src.math.sinf16
+    libc.src.math.sinhf16
+    libc.src.math.sinpif16
+    libc.src.math.sqrtf16
+    libc.src.math.tanf16
+    libc.src.math.tanhf16
+    libc.src.math.tanpif16
+    libc.src.math.totalorderf16
+    libc.src.math.totalordermagf16
+    libc.src.math.truncf16
+    libc.src.math.ufromfpf16
+    libc.src.math.ufromfpxf16
+  )
+endif()
+
+list(APPEND TARGET_LIBM_ENTRYPOINTS
+  # bfloat16 entrypoints
+  libc.src.math.bf16add
+  libc.src.math.bf16addf
+  libc.src.math.bf16addl
+  libc.src.math.bf16div
+  libc.src.math.bf16divf
+  libc.src.math.bf16divl
+  libc.src.math.bf16fma
+  libc.src.math.bf16fmaf
+  libc.src.math.bf16fmal
+  libc.src.math.bf16mul
+  libc.src.math.bf16mulf
+  libc.src.math.bf16mull
+  libc.src.math.bf16sub
+  libc.src.math.bf16subf
+  libc.src.math.bf16subl
+  libc.src.math.canonicalizebf16
+  libc.src.math.ceilbf16
+  libc.src.math.copysignbf16
+  libc.src.math.fabsbf16
+  libc.src.math.fdimbf16
+  libc.src.math.floorbf16
+  libc.src.math.fmaxbf16
+  libc.src.math.fmaximumbf16
+  libc.src.math.fmaximum_magbf16
+  libc.src.math.fmaximum_mag_numbf16
+  libc.src.math.fmaximum_numbf16
+  libc.src.math.fminbf16
+  libc.src.math.fminimumbf16
+  libc.src.math.fminimum_magbf16
+  libc.src.math.fminimum_mag_numbf16
+  libc.src.math.fminimum_numbf16
+  libc.src.math.fmodbf16
+  libc.src.math.frexpbf16
+  libc.src.math.fromfpbf16
+  libc.src.math.fromfpxbf16
+  libc.src.math.getpayloadbf16
+  libc.src.math.ilogbbf16
+  libc.src.math.iscanonicalbf16
+  libc.src.math.issignalingbf16
+  libc.src.math.ldexpbf16
+  libc.src.math.llogbbf16
+  libc.src.math.llrintbf16
+  libc.src.math.llroundbf16
+  libc.src.math.log_bf16
+  libc.src.math.logbbf16
+  libc.src.math.lrintbf16
+  libc.src.math.lroundbf16
+  libc.src.math.modfbf16
+  libc.src.math.nanbf16
+  libc.src.math.nearbyintbf16
+  libc.src.math.nextafterbf16
+  libc.src.math.nextdownbf16
+  libc.src.math.nexttowardbf16
+  libc.src.math.nextupbf16
+  libc.src.math.remainderbf16
+  libc.src.math.remquobf16
+  libc.src.math.rintbf16
+  libc.src.math.roundbf16
+  libc.src.math.roundevenbf16
+  libc.src.math.scalblnbf16
+  libc.src.math.scalbnbf16
+  libc.src.math.setpayloadbf16
+  libc.src.math.setpayloadsigbf16
+  libc.src.math.sqrtbf16
+  libc.src.math.truncbf16
+  libc.src.math.totalorderbf16
+  libc.src.math.totalordermagbf16
+  libc.src.math.ufromfpbf16
+  libc.src.math.ufromfpxbf16
+)
+
+set(TARGET_LLVMLIBC_ENTRYPOINTS
+  ${TARGET_LIBC_ENTRYPOINTS}
+  ${TARGET_LIBM_ENTRYPOINTS}
+)
diff --git a/libc/config/linux/aarch64/entrypoints.txt b/libc/config/linux/aarch64/entrypoints.txt
index ff9579c840f92..5373acd9eeb05 100644
--- a/libc/config/linux/aarch64/entrypoints.txt
+++ b/libc/config/linux/aarch64/entrypoints.txt
@@ -1,1185 +1,1185 @@
-set(TARGET_LIBC_ENTRYPOINTS
-    # ctype.h entrypoints
-    libc.src.ctype.isalnum
-    libc.src.ctype.isalpha
-    libc.src.ctype.isascii
-    libc.src.ctype.isblank
-    libc.src.ctype.iscntrl
-    libc.src.ctype.isdigit
-    libc.src.ctype.isgraph
-    libc.src.ctype.islower
-    libc.src.ctype.isprint
-    libc.src.ctype.ispunct
-    libc.src.ctype.isspace
-    libc.src.ctype.isupper
-    libc.src.ctype.isxdigit
-    libc.src.ctype.toascii
-    libc.src.ctype.tolower
-    libc.src.ctype.toupper
-
-    # dlfcn.h entrypoints
-    libc.src.dlfcn.dlclose
-    libc.src.dlfcn.dlerror
-    libc.src.dlfcn.dlopen
-    libc.src.dlfcn.dlsym
-
-    # errno.h entrypoints
-    libc.src.errno.errno
-
-    # fcntl.h entrypoints
-    libc.src.fcntl.creat
-    libc.src.fcntl.fcntl
-    libc.src.fcntl.open
-    libc.src.fcntl.openat
-
-    # poll.h entrypoints
-    libc.src.poll.poll
-
-    # sched.h entrypoints
-    libc.src.sched.sched_get_priority_max
-    libc.src.sched.sched_get_priority_min
-    libc.src.sched.sched_getaffinity
-    libc.src.sched.sched_getparam
-    libc.src.sched.sched_getscheduler
-    libc.src.sched.sched_rr_get_interval
-    libc.src.sched.sched_setaffinity
-    libc.src.sched.sched_setparam
-    libc.src.sched.sched_setscheduler
-    libc.src.sched.sched_yield
-
-    # string.h entrypoints
-    libc.src.string.memccpy
-    libc.src.string.memchr
-    libc.src.string.memcmp
-    libc.src.string.memcpy
-    libc.src.string.memmem
-    libc.src.string.memmove
-    libc.src.string.mempcpy
-    libc.src.string.memrchr
-    libc.src.string.memset
-    libc.src.string.memset_explicit
-    libc.src.string.stpcpy
-    libc.src.string.stpncpy
-    libc.src.string.strcasestr
-    libc.src.string.strcat
-    libc.src.string.strchr
-    libc.src.string.strchrnul
-    libc.src.string.strcmp
-    libc.src.string.strcoll
-    libc.src.string.strcpy
-    libc.src.string.strcspn
-    libc.src.string.strdup
-    libc.src.string.strerror
-    libc.src.string.strerror_r
-    libc.src.string.strlcat
-    libc.src.string.strlcpy
-    libc.src.string.strlen
-    libc.src.string.strncat
-    libc.src.string.strncmp
-    libc.src.string.strncpy
-    libc.src.string.strndup
-    libc.src.string.strnlen
-    libc.src.string.strpbrk
-    libc.src.string.strrchr
-    libc.src.string.strsep
-    libc.src.string.strsignal
-    libc.src.string.strspn
-    libc.src.string.strstr
-    libc.src.string.strtok
-    libc.src.string.strtok_r
-    libc.src.string.strxfrm
-
-    # strings.h entrypoints
-    libc.src.strings.bcmp
-    libc.src.strings.bcopy
-    libc.src.strings.bzero
-    libc.src.strings.ffs
-    libc.src.strings.ffsl
-    libc.src.strings.ffsll
-    libc.src.strings.index
-    libc.src.strings.rindex
-    libc.src.strings.strcasecmp
-    libc.src.strings.strncasecmp
-
-    # inttypes.h entrypoints
-    libc.src.inttypes.imaxabs
-    libc.src.inttypes.imaxdiv
-    libc.src.inttypes.strtoimax
-    libc.src.inttypes.strtoumax
-
-    # stdbit.h entrypoints
-    libc.src.stdbit.stdc_bit_ceil_uc
-    libc.src.stdbit.stdc_bit_ceil_ui
-    libc.src.stdbit.stdc_bit_ceil_ul
-    libc.src.stdbit.stdc_bit_ceil_ull
-    libc.src.stdbit.stdc_bit_ceil_us
-    libc.src.stdbit.stdc_bit_floor_uc
-    libc.src.stdbit.stdc_bit_floor_ui
-    libc.src.stdbit.stdc_bit_floor_ul
-    libc.src.stdbit.stdc_bit_floor_ull
-    libc.src.stdbit.stdc_bit_floor_us
-    libc.src.stdbit.stdc_bit_width_uc
-    libc.src.stdbit.stdc_bit_width_ui
-    libc.src.stdbit.stdc_bit_width_ul
-    libc.src.stdbit.stdc_bit_width_ull
-    libc.src.stdbit.stdc_bit_width_us
-    libc.src.stdbit.stdc_count_ones_uc
-    libc.src.stdbit.stdc_count_ones_ui
-    libc.src.stdbit.stdc_count_ones_ul
-    libc.src.stdbit.stdc_count_ones_ull
-    libc.src.stdbit.stdc_count_ones_us
-    libc.src.stdbit.stdc_count_zeros_uc
-    libc.src.stdbit.stdc_count_zeros_ui
-    libc.src.stdbit.stdc_count_zeros_ul
-    libc.src.stdbit.stdc_count_zeros_ull
-    libc.src.stdbit.stdc_count_zeros_us
-    libc.src.stdbit.stdc_first_leading_one_uc
-    libc.src.stdbit.stdc_first_leading_one_ui
-    libc.src.stdbit.stdc_first_leading_one_ul
-    libc.src.stdbit.stdc_first_leading_one_ull
-    libc.src.stdbit.stdc_first_leading_one_us
-    libc.src.stdbit.stdc_first_leading_zero_uc
-    libc.src.stdbit.stdc_first_leading_zero_ui
-    libc.src.stdbit.stdc_first_leading_zero_ul
-    libc.src.stdbit.stdc_first_leading_zero_ull
-    libc.src.stdbit.stdc_first_leading_zero_us
-    libc.src.stdbit.stdc_first_trailing_one_uc
-    libc.src.stdbit.stdc_first_trailing_one_ui
-    libc.src.stdbit.stdc_first_trailing_one_ul
-    libc.src.stdbit.stdc_first_trailing_one_ull
-    libc.src.stdbit.stdc_first_trailing_one_us
-    libc.src.stdbit.stdc_first_trailing_zero_uc
-    libc.src.stdbit.stdc_first_trailing_zero_ui
-    libc.src.stdbit.stdc_first_trailing_zero_ul
-    libc.src.stdbit.stdc_first_trailing_zero_ull
-    libc.src.stdbit.stdc_first_trailing_zero_us
-    libc.src.stdbit.stdc_has_single_bit_uc
-    libc.src.stdbit.stdc_has_single_bit_ui
-    libc.src.stdbit.stdc_has_single_bit_ul
-    libc.src.stdbit.stdc_has_single_bit_ull
-    libc.src.stdbit.stdc_has_single_bit_us
-    libc.src.stdbit.stdc_leading_ones_uc
-    libc.src.stdbit.stdc_leading_ones_ui
-    libc.src.stdbit.stdc_leading_ones_ul
-    libc.src.stdbit.stdc_leading_ones_ull
-    libc.src.stdbit.stdc_leading_ones_us
-    libc.src.stdbit.stdc_leading_zeros_uc
-    libc.src.stdbit.stdc_leading_zeros_ui
-    libc.src.stdbit.stdc_leading_zeros_ul
-    libc.src.stdbit.stdc_leading_zeros_ull
-    libc.src.stdbit.stdc_leading_zeros_us
-    libc.src.stdbit.stdc_trailing_ones_uc
-    libc.src.stdbit.stdc_trailing_ones_ui
-    libc.src.stdbit.stdc_trailing_ones_ul
-    libc.src.stdbit.stdc_trailing_ones_ull
-    libc.src.stdbit.stdc_trailing_ones_us
-    libc.src.stdbit.stdc_trailing_zeros_uc
-    libc.src.stdbit.stdc_trailing_zeros_ui
-    libc.src.stdbit.stdc_trailing_zeros_ul
-    libc.src.stdbit.stdc_trailing_zeros_ull
-    libc.src.stdbit.stdc_trailing_zeros_us
-
-    # stdlib.h entrypoints
-    libc.src.stdlib.abs
-    libc.src.stdlib.atof
-    libc.src.stdlib.atoi
-    libc.src.stdlib.atol
-    libc.src.stdlib.atoll
-    libc.src.stdlib.bsearch
-    libc.src.stdlib.div
-    libc.src.stdlib.labs
-    libc.src.stdlib.ldiv
-    libc.src.stdlib.llabs
-    libc.src.stdlib.lldiv
-    libc.src.stdlib.memalignment
-    libc.src.stdlib.qsort
-    libc.src.stdlib.qsort_r
-    libc.src.stdlib.rand
-    libc.src.stdlib.srand
-    libc.src.stdlib.strfromd
-    libc.src.stdlib.strfromf
-    # TODO: long double support is buggy with clang-11. Re-enable when buildbots are upgraded.
-    # libc.src.stdlib.strfroml
-    libc.src.stdlib.strtod
-    libc.src.stdlib.strtof
-    libc.src.stdlib.strtol
-    libc.src.stdlib.strtold
-    libc.src.stdlib.strtoll
-    libc.src.stdlib.strtoul
-    libc.src.stdlib.strtoull
-
-    # stdlib.h external entrypoints
-    libc.src.stdlib.aligned_alloc
-    libc.src.stdlib.calloc
-    libc.src.stdlib.free
-    libc.src.stdlib.malloc
-    libc.src.stdlib.realloc
-
-    # stdio.h entrypoints
-    libc.src.stdio.fprintf
-    libc.src.stdio.fscanf
-    libc.src.stdio.vfscanf
-    libc.src.stdio.printf
-    libc.src.stdio.remove
-    libc.src.stdio.rename
-    libc.src.stdio.scanf
-    libc.src.stdio.vscanf
-    libc.src.stdio.snprintf
-    libc.src.stdio.sprintf
-    libc.src.stdio.asprintf
-    libc.src.stdio.sscanf
-    libc.src.stdio.vsscanf
-    libc.src.stdio.vfprintf
-    libc.src.stdio.vprintf
-    libc.src.stdio.vsnprintf
-    libc.src.stdio.vsprintf
-    libc.src.stdio.vasprintf
-
-    # sys/epoll.h entrypoints
-    libc.src.sys.epoll.epoll_create
-    libc.src.sys.epoll.epoll_create1
-    libc.src.sys.epoll.epoll_ctl
-    libc.src.sys.epoll.epoll_pwait
-    libc.src.sys.epoll.epoll_wait
-    # TODO: Need to check if pwait2 is available before providing.
-    # https://github.com/llvm/llvm-project/issues/80060
-    # libc.src.sys.epoll.epoll_pwait2
-
-    # sys/ioctl.h entrypoints
-    libc.src.sys.ioctl.ioctl
-
-    # sys/mman.h entrypoints
-    libc.src.sys.mman.madvise
-    libc.src.sys.mman.mincore
-    libc.src.sys.mman.mlock
-    libc.src.sys.mman.mlock2
-    libc.src.sys.mman.mlockall
-    libc.src.sys.mman.mmap
-    libc.src.sys.mman.mremap
-    libc.src.sys.mman.mprotect
-    libc.src.sys.mman.msync
-    libc.src.sys.mman.munlock
-    libc.src.sys.mman.munlockall
-    libc.src.sys.mman.munmap
-    libc.src.sys.mman.remap_file_pages
-    libc.src.sys.mman.posix_madvise
-    libc.src.sys.mman.shm_open
-    libc.src.sys.mman.shm_unlink
-
-    # sys/random.h entrypoints
-    libc.src.sys.random.getrandom
-
-    # sys/resource.h entrypoints
-    libc.src.sys.resource.getrlimit
-    libc.src.sys.resource.setrlimit
-
-    # sys/sendfile entrypoints
-    libc.src.sys.sendfile.sendfile
-
-    # sys/stat.h entrypoints
-    libc.src.sys.stat.chmod
-    libc.src.sys.stat.fchmod
-    libc.src.sys.stat.fchmodat
-    libc.src.sys.stat.fstat
-    libc.src.sys.stat.lstat
-    libc.src.sys.stat.mkdir
-    libc.src.sys.stat.mkdirat
-    libc.src.sys.stat.stat
-
-    # sys/statvfs.h
-    libc.src.sys.statvfs.fstatvfs
-    libc.src.sys.statvfs.statvfs
-
-    # sys/utsname.h entrypoints
-    libc.src.sys.utsname.uname
-
-    # sys/wait.h entrypoints
-    libc.src.sys.wait.wait
-    libc.src.sys.wait.wait4
-    libc.src.sys.wait.waitpid
-
-    # sys/prctl.h entrypoints
-    libc.src.sys.prctl.prctl
-
-    # sys/auxv.h entrypoints
-    libc.src.sys.auxv.getauxval
-
-    # termios.h entrypoints
-    libc.src.termios.cfgetispeed
-    libc.src.termios.cfgetospeed
-    libc.src.termios.cfsetispeed
-    libc.src.termios.cfsetospeed
-    libc.src.termios.tcdrain
-    libc.src.termios.tcflow
-    libc.src.termios.tcflush
-    libc.src.termios.tcgetattr
-    libc.src.termios.tcgetsid
-    libc.src.termios.tcsendbreak
-    libc.src.termios.tcsetattr
-
-    # unistd.h entrypoints
-    libc.src.unistd.access
-    libc.src.unistd.chdir
-    libc.src.unistd.close
-    libc.src.unistd.dup
-    libc.src.unistd.dup2
-    libc.src.unistd.dup3
-    libc.src.unistd.execve
-    libc.src.unistd.faccessat
-    libc.src.unistd.fchdir
-    libc.src.unistd.fchown
-    libc.src.unistd.fpathconf
-    libc.src.unistd.fsync
-    libc.src.unistd.ftruncate
-    libc.src.unistd.getcwd
-    libc.src.unistd.getentropy
-    libc.src.unistd.geteuid
-    libc.src.unistd.gethostname
-    libc.src.unistd.getpagesize
-    libc.src.unistd.getpid
-    libc.src.unistd.getppid
-    libc.src.unistd.getsid
-    libc.src.unistd.gettid
-    libc.src.unistd.getuid
-    libc.src.unistd.isatty
-    libc.src.unistd.link
-    libc.src.unistd.linkat
-    libc.src.unistd.lseek
-    libc.src.unistd.pathconf
-    libc.src.unistd.pipe
-    libc.src.unistd.pipe2
-    libc.src.unistd.pread
-    libc.src.unistd.pwrite
-    libc.src.unistd.read
-    libc.src.unistd.readlink
-    libc.src.unistd.readlinkat
-    libc.src.unistd.rmdir
-    libc.src.unistd.setsid
-    libc.src.unistd.symlink
-    libc.src.unistd.symlinkat
-    libc.src.unistd.sysconf
-    libc.src.unistd.truncate
-    libc.src.unistd.unlink
-    libc.src.unistd.unlinkat
-    libc.src.unistd.write
-
-    # wchar.h entrypoints
-    libc.src.wchar.wcslen
-    libc.src.wchar.wctob
-
-    # wctype.h entrypoints
-    libc.src.wctype.iswalpha
-
-    # sys/uio.h entrypoints
-    libc.src.sys.uio.writev
-    libc.src.sys.uio.readv
-
-    # sys/time.h entrypoints
-    libc.src.sys.time.setitimer
-    libc.src.sys.time.getitimer
-)
-
-if(LLVM_LIBC_INCLUDE_SCUDO)
-  list(APPEND TARGET_LIBC_ENTRYPOINTS
-    # malloc.h external entrypoints
-    libc.src.stdlib.mallopt
-  )
-endif()
-
-set(TARGET_LIBM_ENTRYPOINTS
-    # complex.h entrypoints
-    libc.src.complex.creal
-    libc.src.complex.crealf
-    libc.src.complex.creall
-    libc.src.complex.cimag
-    libc.src.complex.cimagf
-    libc.src.complex.cimagl
-    libc.src.complex.conj
-    libc.src.complex.conjf
-    libc.src.complex.conjl
-    libc.src.complex.cproj
-    libc.src.complex.cprojf
-    libc.src.complex.cprojl
-
-    # fenv.h entrypoints
-    libc.src.fenv.feclearexcept
-    libc.src.fenv.fedisableexcept
-    libc.src.fenv.feenableexcept
-    libc.src.fenv.fegetenv
-    libc.src.fenv.fegetexcept
-    libc.src.fenv.fegetexceptflag
-    libc.src.fenv.fegetround
-    libc.src.fenv.feholdexcept
-    libc.src.fenv.feraiseexcept
-    libc.src.fenv.fesetenv
-    libc.src.fenv.fesetexcept
-    libc.src.fenv.fesetexceptflag
-    libc.src.fenv.fesetround
-    libc.src.fenv.fetestexcept
-    libc.src.fenv.fetestexceptflag
-    libc.src.fenv.feupdateenv
-
-    # math.h entrypoints
-    libc.src.math.acos
-    libc.src.math.acosf
-    libc.src.math.acoshf
-    libc.src.math.asin
-    libc.src.math.asinf
-    libc.src.math.asinhf
-    libc.src.math.atan2
-    libc.src.math.atan2f
-    libc.src.math.atan
-    libc.src.math.atanf
-    libc.src.math.atanhf
-    libc.src.math.canonicalize
-    libc.src.math.canonicalizef
-    libc.src.math.canonicalizel
-    libc.src.math.cbrt
-    libc.src.math.cbrtf
-    libc.src.math.ceil
-    libc.src.math.ceilf
-    libc.src.math.ceill
-    libc.src.math.copysign
-    libc.src.math.copysignf
-    libc.src.math.copysignl
-    libc.src.math.cos
-    libc.src.math.cosf
-    libc.src.math.coshf
-    libc.src.math.cospif
-    libc.src.math.daddl
-    libc.src.math.ddivl
-    libc.src.math.dfmal
-    libc.src.math.dmull
-    libc.src.math.dsqrtl
-    libc.src.math.dsubl
-    libc.src.math.erff
-    libc.src.math.exp
-    libc.src.math.exp10
-    libc.src.math.exp10f
-    libc.src.math.exp2
-    libc.src.math.exp2f
-    libc.src.math.exp2m1f
-    libc.src.math.expf
-    libc.src.math.expm1
-    libc.src.math.expm1f
-    libc.src.math.fabs
-    libc.src.math.fabsf
-    libc.src.math.fabsl
-    libc.src.math.fadd
-    libc.src.math.faddl
-    libc.src.math.fadd
-    libc.src.math.fdim
-    libc.src.math.fdimf
-    libc.src.math.fdiml
-    libc.src.math.floor
-    libc.src.math.floorf
-    libc.src.math.floorl
-    libc.src.math.fma
-    libc.src.math.fmabf16
-    libc.src.math.fmaf
-    libc.src.math.fmax
-    libc.src.math.fmaxf
-    libc.src.math.fmaximum
-    libc.src.math.fmaximum_mag
-    libc.src.math.fmaximum_mag_num
-    libc.src.math.fmaximum_mag_numf
-    libc.src.math.fmaximum_mag_numl
-    libc.src.math.fmaximum_magf
-    libc.src.math.fmaximum_magl
-    libc.src.math.fmaximum_num
-    libc.src.math.fmaximum_numf
-    libc.src.math.fmaximum_numl
-    libc.src.math.fmaximumf
-    libc.src.math.fmaximuml
-    libc.src.math.fmaxl
-    libc.src.math.fmin
-    libc.src.math.fminf
-    libc.src.math.fminimum
-    libc.src.math.fminimum_mag
-    libc.src.math.fminimum_mag_num
-    libc.src.math.fminimum_mag_numf
-    libc.src.math.fminimum_mag_numl
-    libc.src.math.fminimum_magf
-    libc.src.math.fminimum_magl
-    libc.src.math.fminimum_num
-    libc.src.math.fminimum_numf
-    libc.src.math.fminimum_numl
-    libc.src.math.fminimumf
-    libc.src.math.fminimuml
-    libc.src.math.fminl
-    libc.src.math.fmod
-    libc.src.math.fmodf
-    libc.src.math.fmodl
-    libc.src.math.fmul
-    libc.src.math.fmull
-    libc.src.math.frexp
-    libc.src.math.frexpf
-    libc.src.math.frexpl
-    libc.src.math.fromfp
-    libc.src.math.fromfpf
-    libc.src.math.fromfpl
-    libc.src.math.fromfpx
-    libc.src.math.fromfpxf
-    libc.src.math.fromfpxl
-    libc.src.math.fsqrt
-    libc.src.math.fsqrtl
-    libc.src.math.fsub
-    libc.src.math.fsubl
-    libc.src.math.getpayload
-    libc.src.math.getpayloadf
-    libc.src.math.getpayloadl
-    libc.src.math.hypot
-    libc.src.math.hypotf
-    libc.src.math.ilogb
-    libc.src.math.ilogbf
-    libc.src.math.ilogbl
-    libc.src.math.iscanonical
-    libc.src.math.iscanonicalf
-    libc.src.math.iscanonicall
-    libc.src.math.isnan
-    libc.src.math.isnanf
-    libc.src.math.isnanl
-    libc.src.math.issignaling
-    libc.src.math.issignalingf
-    libc.src.math.issignalingl
-    libc.src.math.ldexp
-    libc.src.math.ldexpf
-    libc.src.math.ldexpl
-    libc.src.math.llogb
-    libc.src.math.llogbf
-    libc.src.math.llogbl
-    libc.src.math.llrint
-    libc.src.math.llrintf
-    libc.src.math.llrintl
-    libc.src.math.llround
-    libc.src.math.llroundf
-    libc.src.math.llroundl
-    libc.src.math.log
-    libc.src.math.log10
-    libc.src.math.log10f
-    libc.src.math.log1p
-    libc.src.math.log1pf
-    libc.src.math.log2
-    libc.src.math.log2f
-    libc.src.math.logb
-    libc.src.math.logbf
-    libc.src.math.logbl
-    libc.src.math.logf
-    libc.src.math.lrint
-    libc.src.math.lrintf
-    libc.src.math.lrintl
-    libc.src.math.lround
-    libc.src.math.lroundf
-    libc.src.math.lroundl
-    libc.src.math.modf
-    libc.src.math.modff
-    libc.src.math.modfl
-    libc.src.math.nan
-    libc.src.math.nanf
-    libc.src.math.nanl
-    libc.src.math.nearbyint
-    libc.src.math.nearbyintf
-    libc.src.math.nearbyintl
-    libc.src.math.nextafter
-    libc.src.math.nextafterf
-    libc.src.math.nextafterl
-    libc.src.math.nextdown
-    libc.src.math.nextdownf
-    libc.src.math.nextdownl
-    libc.src.math.nexttoward
-    libc.src.math.nexttowardf
-    libc.src.math.nexttowardl
-    libc.src.math.nextup
-    libc.src.math.nextupf
-    libc.src.math.nextupl
-    libc.src.math.pow
-    libc.src.math.powf
-    libc.src.math.remainder
-    libc.src.math.remainderf
-    libc.src.math.remainderl
-    libc.src.math.remquo
-    libc.src.math.remquof
-    libc.src.math.remquol
-    libc.src.math.rint
-    libc.src.math.rintf
-    libc.src.math.rintl
-    libc.src.math.round
-    libc.src.math.roundeven
-    libc.src.math.roundevenf
-    libc.src.math.roundevenl
-    libc.src.math.roundf
-    libc.src.math.roundl
-    libc.src.math.scalbln
-    libc.src.math.scalblnf
-    libc.src.math.scalblnl
-    libc.src.math.scalbn
-    libc.src.math.scalbnf
-    libc.src.math.scalbnl
-    libc.src.math.setpayload
-    libc.src.math.setpayloadf
-    libc.src.math.setpayloadl
-    libc.src.math.setpayloadsig
-    libc.src.math.setpayloadsigf
-    libc.src.math.setpayloadsigl
-    libc.src.math.sin
-    libc.src.math.sincos
-    libc.src.math.sincosf
-    libc.src.math.sinf
-    libc.src.math.sinhf
-    libc.src.math.sinpif
-    libc.src.math.sqrt
-    libc.src.math.sqrtf
-    libc.src.math.sqrtl
-    libc.src.math.tan
-    libc.src.math.tanf
-    libc.src.math.tanhf
-    libc.src.math.tanpif
-    libc.src.math.totalorder
-    libc.src.math.totalorderf
-    libc.src.math.totalorderl
-    libc.src.math.totalordermag
-    libc.src.math.totalordermagf
-    libc.src.math.totalordermagl
-    libc.src.math.trunc
-    libc.src.math.truncf
-    libc.src.math.truncl
-    libc.src.math.ufromfp
-    libc.src.math.ufromfpf
-    libc.src.math.ufromfpl
-    libc.src.math.ufromfpx
-    libc.src.math.ufromfpxf
-    libc.src.math.ufromfpxl
-)
-
-if(LIBC_TYPES_HAS_CFLOAT16)
-  list(APPEND TARGET_LIBM_ENTRYPOINTS
-    # complex.h C23 _Complex _Float16 entrypoints
-    libc.src.complex.crealf16
-    libc.src.complex.cimagf16
-    libc.src.complex.conjf16
-    libc.src.complex.cprojf16
-  )
-endif()
-
-if(LIBC_TYPES_HAS_FLOAT16)
-  list(APPEND TARGET_LIBM_ENTRYPOINTS
-    # math.h C23 _Float16 entrypoints
-    libc.src.math.acoshf16
-    libc.src.math.asinpif16
-    libc.src.math.canonicalizef16
-    libc.src.math.ceilf16
-    libc.src.math.copysignf16
-    libc.src.math.cospif16
-    libc.src.math.expf16
-    libc.src.math.f16add
-    libc.src.math.f16addf
-    # libc.src.math.f16addl
-    libc.src.math.f16div
-    libc.src.math.f16divf
-    # libc.src.math.f16divl
-    libc.src.math.f16fma
-    libc.src.math.f16fmaf
-    # libc.src.math.f16fmal
-    libc.src.math.f16mul
-    libc.src.math.f16mulf
-    # libc.src.math.f16mull
-    libc.src.math.f16sqrt
-    libc.src.math.f16sqrtf
-    # libc.src.math.f16sqrtl
-    libc.src.math.f16sub
-    libc.src.math.f16subf
-    # libc.src.math.f16subl
-    libc.src.math.fabsf16
-    libc.src.math.fdimf16
-    libc.src.math.fdiv
-    libc.src.math.fdivl
-    libc.src.math.ffma
-    libc.src.math.ffmal
-    libc.src.math.floorf16
-    libc.src.math.fmaf16
-    libc.src.math.fmaxf16
-    libc.src.math.fmaximum_mag_numf16
-    libc.src.math.fmaximum_magf16
-    libc.src.math.fmaximum_numf16
-    libc.src.math.fmaximumf16
-    libc.src.math.fminf16
-    libc.src.math.fminimum_mag_numf16
-    libc.src.math.fminimum_magf16
-    libc.src.math.fminimum_numf16
-    libc.src.math.fminimumf16
-    # libc.src.math.fmodf16
-    libc.src.math.frexpf16
-    libc.src.math.fromfpf16
-    libc.src.math.fromfpxf16
-    libc.src.math.getpayloadf16
-    libc.src.math.ilogbf16
-    libc.src.math.iscanonicalf16
-    libc.src.math.issignalingf16
-    libc.src.math.ldexpf16
-    libc.src.math.llogbf16
-    libc.src.math.llrintf16
-    libc.src.math.llroundf16
-    libc.src.math.logbf16
-    libc.src.math.lrintf16
-    libc.src.math.lroundf16
-    # libc.src.math.modff16
-    libc.src.math.nanf16
-    libc.src.math.nearbyintf16
-    libc.src.math.nextafterf16
-    libc.src.math.nextdownf16
-    # Temporarily disable nexttowardf16 on aarch64 because the conversion
-    # between _Float16 and long double will crash clang-11.  This is fixed in
-    # clang-12 and after: https://godbolt.org/z/8ceT9454c
-    # libc.src.math.nexttowardf16
-    libc.src.math.nextupf16
-    libc.src.math.remainderf16
-    libc.src.math.remquof16
-    libc.src.math.rintf16
-    libc.src.math.roundevenf16
-    libc.src.math.roundf16
-    libc.src.math.rsqrtf
-    libc.src.math.rsqrtf16
-    libc.src.math.scalblnf16
-    libc.src.math.scalbnf16
-    libc.src.math.setpayloadf16
-    libc.src.math.setpayloadsigf16
-    libc.src.math.sinpif16
-    libc.src.math.sqrtf16
-    libc.src.math.totalorderf16
-    libc.src.math.totalordermagf16
-    libc.src.math.truncf16
-    libc.src.math.ufromfpf16
-    libc.src.math.ufromfpxf16
-  )
-
-  # if(LIBC_TYPES_HAS_FLOAT128)
-  #   list(APPEND TARGET_LIBM_ENTRYPOINTS
-  #     # math.h C23 mixed _Float16 and _Float128 entrypoints
-  #     libc.src.math.f16addf128
-  #     libc.src.math.f16divf128
-  #     libc.src.math.f16fmaf128
-  #     libc.src.math.f16mulf128
-  #     libc.src.math.f16sqrtf128
-  #     libc.src.math.f16subf128
-  #   )
-  # endif()
-endif()
-
-if(LIBC_TYPES_HAS_CFLOAT128)
-  list(APPEND TARGET_LIBM_ENTRYPOINTS
-    # complex.h C23 _Complex _Float128 entrypoints
-    libc.src.complex.crealf128
-    libc.src.complex.cimagf128
-    libc.src.complex.conjf128
-    libc.src.complex.cprojf128
-  )
-endif()
-
-if(LIBC_TYPES_HAS_FLOAT128)
-  list(APPEND TARGET_LIBM_ENTRYPOINTS
-    # math.h C23 _Float128 entrypoints
-    libc.src.math.atan2f128
-    libc.src.math.canonicalizef128
-    libc.src.math.ceilf128
-    libc.src.math.copysignf128
-    libc.src.math.daddf128
-    libc.src.math.ddivf128
-    libc.src.math.dfmaf128
-    libc.src.math.dmulf128
-    libc.src.math.dsqrtf128
-    libc.src.math.dsubf128
-    libc.src.math.fabsf128
-    libc.src.math.faddf128
-    libc.src.math.fdimf128
-    libc.src.math.fdivf128
-    libc.src.math.ffmaf128
-    libc.src.math.floorf128
-    libc.src.math.fmaxf128
-    libc.src.math.fmaximum_mag_numf128
-    libc.src.math.fmaximum_magf128
-    libc.src.math.fmaximum_numf128
-    libc.src.math.fmaximumf128
-    libc.src.math.fminf128
-    libc.src.math.fminimum_mag_numf128
-    libc.src.math.fminimum_magf128
-    libc.src.math.fminimum_numf128
-    libc.src.math.fminimumf128
-    libc.src.math.fmodf128
-    libc.src.math.fmulf128
-    libc.src.math.frexpf128
-    libc.src.math.fromfpf128
-    libc.src.math.fromfpxf128
-    libc.src.math.fsqrtf128
-    libc.src.math.fsubf128
-    libc.src.math.getpayloadf128
-    libc.src.math.ilogbf128
-    libc.src.math.iscanonicalf128
-    libc.src.math.issignalingf128
-    libc.src.math.ldexpf128
-    libc.src.math.llogbf128
-    libc.src.math.llrintf128
-    libc.src.math.llroundf128
-    libc.src.math.logbf128
-    libc.src.math.lrintf128
-    libc.src.math.lroundf128
-    libc.src.math.modff128
-    libc.src.math.nanf128
-    libc.src.math.nearbyintf128
-    libc.src.math.nextafterf128
-    libc.src.math.nextdownf128
-    libc.src.math.nextupf128
-    libc.src.math.remainderf128
-    libc.src.math.remquof128
-    libc.src.math.rintf128
-    libc.src.math.roundevenf128
-    libc.src.math.roundf128
-    libc.src.math.scalblnf128
-    libc.src.math.scalbnf128
-    libc.src.math.setpayloadf128
-    libc.src.math.setpayloadsigf128
-    libc.src.math.sqrtf128
-    libc.src.math.totalorderf128
-    libc.src.math.totalordermagf128
-    libc.src.math.truncf128
-    libc.src.math.ufromfpf128
-    libc.src.math.ufromfpxf128
-  )
-endif()
-
-list(APPEND TARGET_LIBM_ENTRYPOINTS
-  # bfloat16 entrypoints
-  libc.src.math.bf16add
-  libc.src.math.bf16addf
-  libc.src.math.bf16addl
-  libc.src.math.bf16div
-  libc.src.math.bf16divf
-  libc.src.math.bf16divl
-  libc.src.math.bf16fma
-  libc.src.math.bf16fmaf
-  libc.src.math.bf16fmal
-  libc.src.math.bf16mul
-  libc.src.math.bf16mulf
-  libc.src.math.bf16mull
-  libc.src.math.bf16sub
-  libc.src.math.bf16subf
-  libc.src.math.bf16subl
-  libc.src.math.canonicalizebf16
-  libc.src.math.ceilbf16
-  libc.src.math.copysignbf16
-  libc.src.math.fabsbf16
-  libc.src.math.fdimbf16
-  libc.src.math.floorbf16
-  libc.src.math.fmaxbf16
-  libc.src.math.fmaximumbf16
-  libc.src.math.fmaximum_magbf16
-  libc.src.math.fmaximum_mag_numbf16
-  libc.src.math.fmaximum_numbf16
-  libc.src.math.fminbf16
-  libc.src.math.fminimumbf16
-  libc.src.math.fminimum_magbf16
-  libc.src.math.fminimum_mag_numbf16
-  libc.src.math.fminimum_numbf16
-  libc.src.math.fmodbf16
-  libc.src.math.frexpbf16
-  libc.src.math.fromfpbf16
-  libc.src.math.fromfpxbf16
-  libc.src.math.getpayloadbf16
-  libc.src.math.ilogbbf16
-  libc.src.math.iscanonicalbf16
-  libc.src.math.issignalingbf16
-  libc.src.math.ldexpbf16
-  libc.src.math.llogbbf16
-  libc.src.math.llrintbf16
-  libc.src.math.llroundbf16
-  libc.src.math.log_bf16
-  libc.src.math.logbbf16
-  libc.src.math.lrintbf16
-  libc.src.math.lroundbf16
-  libc.src.math.modfbf16
-  libc.src.math.nanbf16
-  libc.src.math.nearbyintbf16
-  libc.src.math.nextafterbf16
-  libc.src.math.nextdownbf16
-  libc.src.math.nexttowardbf16
-  libc.src.math.nextupbf16
-  libc.src.math.remainderbf16
-  libc.src.math.remquobf16
-  libc.src.math.rintbf16
-  libc.src.math.roundbf16
-  libc.src.math.roundevenbf16
-  libc.src.math.scalblnbf16
-  libc.src.math.scalbnbf16
-  libc.src.math.setpayloadbf16
-  libc.src.math.setpayloadsigbf16
-  libc.src.math.sqrtbf16
-  libc.src.math.truncbf16
-  libc.src.math.totalorderbf16
-  libc.src.math.totalordermagbf16
-  libc.src.math.ufromfpbf16
-  libc.src.math.ufromfpxbf16
-)
-
-if(LIBC_TYPES_HAS_FLOAT128)
-  list(APPEND TARGET_LIBM_ENTRYPOINTS
-    # math.h C++23 mixed bfloat16 and _Float128 entrypoints
-    libc.src.math.bf16addf128
-    libc.src.math.bf16divf128
-    libc.src.math.bf16fmaf128
-    libc.src.math.bf16mulf128
-    libc.src.math.bf16subf128
-  )
-endif()
-
-if(LLVM_LIBC_FULL_BUILD)
-  list(APPEND TARGET_LIBC_ENTRYPOINTS
-    # assert.h entrypoints
-    libc.src.assert.__assert_fail
-
-    # compiler entrypoints (no corresponding header)
-    libc.src.compiler.__stack_chk_fail
-
-    # dirent.h entrypoints
-    libc.src.dirent.closedir
-    libc.src.dirent.dirfd
-    libc.src.dirent.opendir
-    libc.src.dirent.readdir
-
-    # arpa/inet.h entrypoints
-    libc.src.arpa.inet.htonl
-    libc.src.arpa.inet.htons
-    libc.src.arpa.inet.inet_addr
-    libc.src.arpa.inet.inet_aton
-    libc.src.arpa.inet.ntohl
-    libc.src.arpa.inet.ntohs
-
-    # pthread.h entrypoints
-    libc.src.pthread.pthread_atfork
-    libc.src.pthread.pthread_attr_destroy
-    libc.src.pthread.pthread_attr_getdetachstate
-    libc.src.pthread.pthread_attr_getguardsize
-    libc.src.pthread.pthread_attr_getstack
-    libc.src.pthread.pthread_attr_getstacksize
-    libc.src.pthread.pthread_attr_init
-    libc.src.pthread.pthread_attr_setdetachstate
-    libc.src.pthread.pthread_attr_setguardsize
-    libc.src.pthread.pthread_attr_setstack
-    libc.src.pthread.pthread_attr_setstacksize
-    libc.src.pthread.pthread_condattr_destroy
-    libc.src.pthread.pthread_condattr_getclock
-    libc.src.pthread.pthread_condattr_getpshared
-    libc.src.pthread.pthread_condattr_init
-    libc.src.pthread.pthread_condattr_setclock
-    libc.src.pthread.pthread_condattr_setpshared
-    libc.src.pthread.pthread_create
-    libc.src.pthread.pthread_detach
-    libc.src.pthread.pthread_equal
-    libc.src.pthread.pthread_exit
-    libc.src.pthread.pthread_getname_np
-    libc.src.pthread.pthread_getspecific
-    libc.src.pthread.pthread_join
-    libc.src.pthread.pthread_key_create
-    libc.src.pthread.pthread_key_delete
-    libc.src.pthread.pthread_mutex_destroy
-    libc.src.pthread.pthread_mutex_init
-    libc.src.pthread.pthread_mutex_lock
-    libc.src.pthread.pthread_mutex_unlock
-    libc.src.pthread.pthread_mutexattr_destroy
-    libc.src.pthread.pthread_mutexattr_getpshared
-    libc.src.pthread.pthread_mutexattr_getrobust
-    libc.src.pthread.pthread_mutexattr_gettype
-    libc.src.pthread.pthread_mutexattr_init
-    libc.src.pthread.pthread_mutexattr_setpshared
-    libc.src.pthread.pthread_mutexattr_setrobust
-    libc.src.pthread.pthread_mutexattr_settype
-    libc.src.pthread.pthread_once
-    libc.src.pthread.pthread_rwlock_clockrdlock
-    libc.src.pthread.pthread_rwlock_clockwrlock
-    libc.src.pthread.pthread_rwlock_destroy
-    libc.src.pthread.pthread_rwlock_init
-    libc.src.pthread.pthread_rwlock_rdlock
-    libc.src.pthread.pthread_rwlock_timedrdlock
-    libc.src.pthread.pthread_rwlock_timedwrlock
-    libc.src.pthread.pthread_rwlock_tryrdlock
-    libc.src.pthread.pthread_rwlock_trywrlock
-    libc.src.pthread.pthread_rwlock_unlock
-    libc.src.pthread.pthread_rwlock_wrlock
-    libc.src.pthread.pthread_rwlockattr_destroy
-    libc.src.pthread.pthread_rwlockattr_getkind_np
-    libc.src.pthread.pthread_rwlockattr_getpshared
-    libc.src.pthread.pthread_rwlockattr_init
-    libc.src.pthread.pthread_rwlockattr_setkind_np
-    libc.src.pthread.pthread_rwlockattr_setpshared
-    libc.src.pthread.pthread_spin_destroy
-    libc.src.pthread.pthread_spin_init
-    libc.src.pthread.pthread_spin_lock
-    libc.src.pthread.pthread_spin_trylock
-    libc.src.pthread.pthread_spin_unlock
-    libc.src.pthread.pthread_self
-    libc.src.pthread.pthread_setname_np
-    libc.src.pthread.pthread_setspecific
-
-    # sched.h entrypoints
-    libc.src.sched.__sched_getcpucount
-    libc.src.sched.__sched_setcpuzero
-    libc.src.sched.__sched_setcpuset
-    libc.src.sched.__sched_getcpuisset
-
-    # strings.h entrypoints
-    libc.src.strings.strcasecmp_l
-    libc.src.strings.strncasecmp_l
-
-    # setjmp.h entrypoints
-    libc.src.setjmp.longjmp
-    libc.src.setjmp.setjmp
-    libc.src.setjmp.siglongjmp
-    libc.src.setjmp.sigsetjmp
-
-    # stdio.h entrypoints
-    libc.src.stdio.clearerr
-    libc.src.stdio.clearerr_unlocked
-    libc.src.stdio.fclose
-    libc.src.stdio.fdopen
-    libc.src.stdio.feof
-    libc.src.stdio.feof_unlocked
-    libc.src.stdio.ferror
-    libc.src.stdio.ferror_unlocked
-    libc.src.stdio.fflush
-    libc.src.stdio.fgetc
-    libc.src.stdio.fgetc_unlocked
-    libc.src.stdio.fgets
-    libc.src.stdio.fileno
-    libc.src.stdio.flockfile
-    libc.src.stdio.fopen
-    libc.src.stdio.fopencookie
-    libc.src.stdio.fputc
-    libc.src.stdio.fputs
-    libc.src.stdio.fread
-    libc.src.stdio.fread_unlocked
-    libc.src.stdio.fseek
-    libc.src.stdio.fseeko
-    libc.src.stdio.ftell
-    libc.src.stdio.ftello
-    libc.src.stdio.funlockfile
-    libc.src.stdio.fwrite
-    libc.src.stdio.fwrite_unlocked
-    libc.src.stdio.getc
-    libc.src.stdio.getc_unlocked
-    libc.src.stdio.getchar
-    libc.src.stdio.getchar_unlocked
-    libc.src.stdio.perror
-    libc.src.stdio.putc
-    libc.src.stdio.putchar
-    libc.src.stdio.puts
-    libc.src.stdio.setbuf
-    libc.src.stdio.setvbuf
-    libc.src.stdio.stderr
-    libc.src.stdio.stdin
-    libc.src.stdio.stdout
-    libc.src.stdio.ungetc
-
-    # stdlib.h entrypoints
-    libc.src.stdlib._Exit
-    libc.src.stdlib.abort
-    libc.src.stdlib.at_quick_exit
-    libc.src.stdlib.atexit
-    libc.src.stdlib.exit
-    libc.src.stdlib.getenv
-    libc.src.stdlib.quick_exit
-
-    # signal.h entrypoints
-    libc.src.signal.kill
-    libc.src.signal.raise
-    libc.src.signal.sigaction
-    libc.src.signal.sigaddset
-    libc.src.signal.sigaltstack
-    libc.src.signal.sigdelset
-    libc.src.signal.sigemptyset
-    libc.src.signal.sigfillset
-    libc.src.signal.signal
-    libc.src.signal.sigprocmask
-
-    # spawn.h entrypoints
-    libc.src.spawn.posix_spawn
-    libc.src.spawn.posix_spawn_file_actions_addclose
-    libc.src.spawn.posix_spawn_file_actions_adddup2
-    libc.src.spawn.posix_spawn_file_actions_addopen
-    libc.src.spawn.posix_spawn_file_actions_destroy
-    libc.src.spawn.posix_spawn_file_actions_init
-
-    # search.h entrypoints
-    libc.src.search.hcreate
-    libc.src.search.hcreate_r
-    libc.src.search.hdestroy
-    libc.src.search.hdestroy_r
-    libc.src.search.hsearch
-    libc.src.search.hsearch_r
-    libc.src.search.insque
-    libc.src.search.lfind
-    libc.src.search.lsearch
-    libc.src.search.remque
-
-    # threads.h entrypoints
-    libc.src.threads.call_once
-    libc.src.threads.cnd_broadcast
-    libc.src.threads.cnd_destroy
-    libc.src.threads.cnd_init
-    libc.src.threads.cnd_signal
-    libc.src.threads.cnd_wait
-    libc.src.threads.mtx_destroy
-    libc.src.threads.mtx_init
-    libc.src.threads.mtx_lock
-    libc.src.threads.mtx_unlock
-    libc.src.threads.thrd_create
-    libc.src.threads.thrd_current
-    libc.src.threads.thrd_detach
-    libc.src.threads.thrd_equal
-    libc.src.threads.thrd_exit
-    libc.src.threads.thrd_join
-    libc.src.threads.tss_create
-    libc.src.threads.tss_delete
-    libc.src.threads.tss_get
-    libc.src.threads.tss_set
-
-    # time.h entrypoints
-    libc.src.time.asctime
-    libc.src.time.asctime_r
-    libc.src.time.ctime
-    libc.src.time.ctime_r
-    libc.src.time.clock
-    libc.src.time.clock_gettime
-    libc.src.time.clock_settime
-    libc.src.time.difftime
-    libc.src.time.gettimeofday
-    libc.src.time.gmtime
-    libc.src.time.gmtime_r
-    libc.src.time.mktime
-    libc.src.time.nanosleep
-    libc.src.time.time
-    libc.src.time.timespec_get
-
-    # unistd.h entrypoints
-    libc.src.unistd.__llvm_libc_syscall
-    libc.src.unistd._exit
-    libc.src.unistd.environ
-    libc.src.unistd.execv
-    libc.src.unistd.fork
-    libc.src.unistd.getopt
-    libc.src.unistd.optarg
-    libc.src.unistd.opterr
-    libc.src.unistd.optind
-    libc.src.unistd.optopt
-    libc.src.unistd.swab
-
-    # sys/select.h entrypoints
-    libc.src.sys.select.select
-
-    # sys/socket.h entrypoints
-    libc.src.sys.socket.bind
-    libc.src.sys.socket.socket
-  )
-endif()
-
-set(TARGET_LLVMLIBC_ENTRYPOINTS
-  ${TARGET_LIBC_ENTRYPOINTS}
-  ${TARGET_LIBM_ENTRYPOINTS}
-)
+set(TARGET_LIBC_ENTRYPOINTS
+    # ctype.h entrypoints
+    libc.src.ctype.isalnum
+    libc.src.ctype.isalpha
+    libc.src.ctype.isascii
+    libc.src.ctype.isblank
+    libc.src.ctype.iscntrl
+    libc.src.ctype.isdigit
+    libc.src.ctype.isgraph
+    libc.src.ctype.islower
+    libc.src.ctype.isprint
+    libc.src.ctype.ispunct
+    libc.src.ctype.isspace
+    libc.src.ctype.isupper
+    libc.src.ctype.isxdigit
+    libc.src.ctype.toascii
+    libc.src.ctype.tolower
+    libc.src.ctype.toupper
+
+    # dlfcn.h entrypoints
+    libc.src.dlfcn.dlclose
+    libc.src.dlfcn.dlerror
+    libc.src.dlfcn.dlopen
+    libc.src.dlfcn.dlsym
+
+    # errno.h entrypoints
+    libc.src.errno.errno
+
+    # fcntl.h entrypoints
+    libc.src.fcntl.creat
+    libc.src.fcntl.fcntl
+    libc.src.fcntl.open
+    libc.src.fcntl.openat
+
+    # poll.h entrypoints
+    libc.src.poll.poll
+
+    # sched.h entrypoints
+    libc.src.sched.sched_get_priority_max
+    libc.src.sched.sched_get_priority_min
+    libc.src.sched.sched_getaffinity
+    libc.src.sched.sched_getparam
+    libc.src.sched.sched_getscheduler
+    libc.src.sched.sched_rr_get_interval
+    libc.src.sched.sched_setaffinity
+    libc.src.sched.sched_setparam
+    libc.src.sched.sched_setscheduler
+    libc.src.sched.sched_yield
+
+    # string.h entrypoints
+    libc.src.string.memccpy
+    libc.src.string.memchr
+    libc.src.string.memcmp
+    libc.src.string.memcpy
+    libc.src.string.memmem
+    libc.src.string.memmove
+    libc.src.string.mempcpy
+    libc.src.string.memrchr
+    libc.src.string.memset
+    libc.src.string.memset_explicit
+    libc.src.string.stpcpy
+    libc.src.string.stpncpy
+    libc.src.string.strcasestr
+    libc.src.string.strcat
+    libc.src.string.strchr
+    libc.src.string.strchrnul
+    libc.src.string.strcmp
+    libc.src.string.strcoll
+    libc.src.string.strcpy
+    libc.src.string.strcspn
+    libc.src.string.strdup
+    libc.src.string.strerror
+    libc.src.string.strerror_r
+    libc.src.string.strlcat
+    libc.src.string.strlcpy
+    libc.src.string.strlen
+    libc.src.string.strncat
+    libc.src.string.strncmp
+    libc.src.string.strncpy
+    libc.src.string.strndup
+    libc.src.string.strnlen
+    libc.src.string.strpbrk
+    libc.src.string.strrchr
+    libc.src.string.strsep
+    libc.src.string.strsignal
+    libc.src.string.strspn
+    libc.src.string.strstr
+    libc.src.string.strtok
+    libc.src.string.strtok_r
+    libc.src.string.strxfrm
+
+    # strings.h entrypoints
+    libc.src.strings.bcmp
+    libc.src.strings.bcopy
+    libc.src.strings.bzero
+    libc.src.strings.ffs
+    libc.src.strings.ffsl
+    libc.src.strings.ffsll
+    libc.src.strings.index
+    libc.src.strings.rindex
+    libc.src.strings.strcasecmp
+    libc.src.strings.strncasecmp
+
+    # inttypes.h entrypoints
+    libc.src.inttypes.imaxabs
+    libc.src.inttypes.imaxdiv
+    libc.src.inttypes.strtoimax
+    libc.src.inttypes.strtoumax
+
+    # stdbit.h entrypoints
+    libc.src.stdbit.stdc_bit_ceil_uc
+    libc.src.stdbit.stdc_bit_ceil_ui
+    libc.src.stdbit.stdc_bit_ceil_ul
+    libc.src.stdbit.stdc_bit_ceil_ull
+    libc.src.stdbit.stdc_bit_ceil_us
+    libc.src.stdbit.stdc_bit_floor_uc
+    libc.src.stdbit.stdc_bit_floor_ui
+    libc.src.stdbit.stdc_bit_floor_ul
+    libc.src.stdbit.stdc_bit_floor_ull
+    libc.src.stdbit.stdc_bit_floor_us
+    libc.src.stdbit.stdc_bit_width_uc
+    libc.src.stdbit.stdc_bit_width_ui
+    libc.src.stdbit.stdc_bit_width_ul
+    libc.src.stdbit.stdc_bit_width_ull
+    libc.src.stdbit.stdc_bit_width_us
+    libc.src.stdbit.stdc_count_ones_uc
+    libc.src.stdbit.stdc_count_ones_ui
+    libc.src.stdbit.stdc_count_ones_ul
+    libc.src.stdbit.stdc_count_ones_ull
+    libc.src.stdbit.stdc_count_ones_us
+    libc.src.stdbit.stdc_count_zeros_uc
+    libc.src.stdbit.stdc_count_zeros_ui
+    libc.src.stdbit.stdc_count_zeros_ul
+    libc.src.stdbit.stdc_count_zeros_ull
+    libc.src.stdbit.stdc_count_zeros_us
+    libc.src.stdbit.stdc_first_leading_one_uc
+    libc.src.stdbit.stdc_first_leading_one_ui
+    libc.src.stdbit.stdc_first_leading_one_ul
+    libc.src.stdbit.stdc_first_leading_one_ull
+    libc.src.stdbit.stdc_first_leading_one_us
+    libc.src.stdbit.stdc_first_leading_zero_uc
+    libc.src.stdbit.stdc_first_leading_zero_ui
+    libc.src.stdbit.stdc_first_leading_zero_ul
+    libc.src.stdbit.stdc_first_leading_zero_ull
+    libc.src.stdbit.stdc_first_leading_zero_us
+    libc.src.stdbit.stdc_first_trailing_one_uc
+    libc.src.stdbit.stdc_first_trailing_one_ui
+    libc.src.stdbit.stdc_first_trailing_one_ul
+    libc.src.stdbit.stdc_first_trailing_one_ull
+    libc.src.stdbit.stdc_first_trailing_one_us
+    libc.src.stdbit.stdc_first_trailing_zero_uc
+    libc.src.stdbit.stdc_first_trailing_zero_ui
+    libc.src.stdbit.stdc_first_trailing_zero_ul
+    libc.src.stdbit.stdc_first_trailing_zero_ull
+    libc.src.stdbit.stdc_first_trailing_zero_us
+    libc.src.stdbit.stdc_has_single_bit_uc
+    libc.src.stdbit.stdc_has_single_bit_ui
+    libc.src.stdbit.stdc_has_single_bit_ul
+    libc.src.stdbit.stdc_has_single_bit_ull
+    libc.src.stdbit.stdc_has_single_bit_us
+    libc.src.stdbit.stdc_leading_ones_uc
+    libc.src.stdbit.stdc_leading_ones_ui
+    libc.src.stdbit.stdc_leading_ones_ul
+    libc.src.stdbit.stdc_leading_ones_ull
+    libc.src.stdbit.stdc_leading_ones_us
+    libc.src.stdbit.stdc_leading_zeros_uc
+    libc.src.stdbit.stdc_leading_zeros_ui
+    libc.src.stdbit.stdc_leading_zeros_ul
+    libc.src.stdbit.stdc_leading_zeros_ull
+    libc.src.stdbit.stdc_leading_zeros_us
+    libc.src.stdbit.stdc_trailing_ones_uc
+    libc.src.stdbit.stdc_trailing_ones_ui
+    libc.src.stdbit.stdc_trailing_ones_ul
+    libc.src.stdbit.stdc_trailing_ones_ull
+    libc.src.stdbit.stdc_trailing_ones_us
+    libc.src.stdbit.stdc_trailing_zeros_uc
+    libc.src.stdbit.stdc_trailing_zeros_ui
+    libc.src.stdbit.stdc_trailing_zeros_ul
+    libc.src.stdbit.stdc_trailing_zeros_ull
+    libc.src.stdbit.stdc_trailing_zeros_us
+
+    # stdlib.h entrypoints
+    libc.src.stdlib.abs
+    libc.src.stdlib.atof
+    libc.src.stdlib.atoi
+    libc.src.stdlib.atol
+    libc.src.stdlib.atoll
+    libc.src.stdlib.bsearch
+    libc.src.stdlib.div
+    libc.src.stdlib.labs
+    libc.src.stdlib.ldiv
+    libc.src.stdlib.llabs
+    libc.src.stdlib.lldiv
+    libc.src.stdlib.memalignment
+    libc.src.stdlib.qsort
+    libc.src.stdlib.qsort_r
+    libc.src.stdlib.rand
+    libc.src.stdlib.srand
+    libc.src.stdlib.strfromd
+    libc.src.stdlib.strfromf
+    # TODO: long double support is buggy with clang-11. Re-enable when buildbots are upgraded.
+    # libc.src.stdlib.strfroml
+    libc.src.stdlib.strtod
+    libc.src.stdlib.strtof
+    libc.src.stdlib.strtol
+    libc.src.stdlib.strtold
+    libc.src.stdlib.strtoll
+    libc.src.stdlib.strtoul
+    libc.src.stdlib.strtoull
+
+    # stdlib.h external entrypoints
+    libc.src.stdlib.aligned_alloc
+    libc.src.stdlib.calloc
+    libc.src.stdlib.free
+    libc.src.stdlib.malloc
+    libc.src.stdlib.realloc
+
+    # stdio.h entrypoints
+    libc.src.stdio.fprintf
+    libc.src.stdio.fscanf
+    libc.src.stdio.vfscanf
+    libc.src.stdio.printf
+    libc.src.stdio.remove
+    libc.src.stdio.rename
+    libc.src.stdio.scanf
+    libc.src.stdio.vscanf
+    libc.src.stdio.snprintf
+    libc.src.stdio.sprintf
+    libc.src.stdio.asprintf
+    libc.src.stdio.sscanf
+    libc.src.stdio.vsscanf
+    libc.src.stdio.vfprintf
+    libc.src.stdio.vprintf
+    libc.src.stdio.vsnprintf
+    libc.src.stdio.vsprintf
+    libc.src.stdio.vasprintf
+
+    # sys/epoll.h entrypoints
+    libc.src.sys.epoll.epoll_create
+    libc.src.sys.epoll.epoll_create1
+    libc.src.sys.epoll.epoll_ctl
+    libc.src.sys.epoll.epoll_pwait
+    libc.src.sys.epoll.epoll_wait
+    # TODO: Need to check if pwait2 is available before providing.
+    # https://github.com/llvm/llvm-project/issues/80060
+    # libc.src.sys.epoll.epoll_pwait2
+
+    # sys/ioctl.h entrypoints
+    libc.src.sys.ioctl.ioctl
+
+    # sys/mman.h entrypoints
+    libc.src.sys.mman.madvise
+    libc.src.sys.mman.mincore
+    libc.src.sys.mman.mlock
+    libc.src.sys.mman.mlock2
+    libc.src.sys.mman.mlockall
+    libc.src.sys.mman.mmap
+    libc.src.sys.mman.mremap
+    libc.src.sys.mman.mprotect
+    libc.src.sys.mman.msync
+    libc.src.sys.mman.munlock
+    libc.src.sys.mman.munlockall
+    libc.src.sys.mman.munmap
+    libc.src.sys.mman.remap_file_pages
+    libc.src.sys.mman.posix_madvise
+    libc.src.sys.mman.shm_open
+    libc.src.sys.mman.shm_unlink
+
+    # sys/random.h entrypoints
+    libc.src.sys.random.getrandom
+
+    # sys/resource.h entrypoints
+    libc.src.sys.resource.getrlimit
+    libc.src.sys.resource.setrlimit
+
+    # sys/sendfile entrypoints
+    libc.src.sys.sendfile.sendfile
+
+    # sys/stat.h entrypoints
+    libc.src.sys.stat.chmod
+    libc.src.sys.stat.fchmod
+    libc.src.sys.stat.fchmodat
+    libc.src.sys.stat.fstat
+    libc.src.sys.stat.lstat
+    libc.src.sys.stat.mkdir
+    libc.src.sys.stat.mkdirat
+    libc.src.sys.stat.stat
+
+    # sys/statvfs.h
+    libc.src.sys.statvfs.fstatvfs
+    libc.src.sys.statvfs.statvfs
+
+    # sys/utsname.h entrypoints
+    libc.src.sys.utsname.uname
+
+    # sys/wait.h entrypoints
+    libc.src.sys.wait.wait
+    libc.src.sys.wait.wait4
+    libc.src.sys.wait.waitpid
+
+    # sys/prctl.h entrypoints
+    libc.src.sys.prctl.prctl
+
+    # sys/auxv.h entrypoints
+    libc.src.sys.auxv.getauxval
+
+    # termios.h entrypoints
+    libc.src.termios.cfgetispeed
+    libc.src.termios.cfgetospeed
+    libc.src.termios.cfsetispeed
+    libc.src.termios.cfsetospeed
+    libc.src.termios.tcdrain
+    libc.src.termios.tcflow
+    libc.src.termios.tcflush
+    libc.src.termios.tcgetattr
+    libc.src.termios.tcgetsid
+    libc.src.termios.tcsendbreak
+    libc.src.termios.tcsetattr
+
+    # unistd.h entrypoints
+    libc.src.unistd.access
+    libc.src.unistd.chdir
+    libc.src.unistd.close
+    libc.src.unistd.dup
+    libc.src.unistd.dup2
+    libc.src.unistd.dup3
+    libc.src.unistd.execve
+    libc.src.unistd.faccessat
+    libc.src.unistd.fchdir
+    libc.src.unistd.fchown
+    libc.src.unistd.fpathconf
+    libc.src.unistd.fsync
+    libc.src.unistd.ftruncate
+    libc.src.unistd.getcwd
+    libc.src.unistd.getentropy
+    libc.src.unistd.geteuid
+    libc.src.unistd.gethostname
+    libc.src.unistd.getpagesize
+    libc.src.unistd.getpid
+    libc.src.unistd.getppid
+    libc.src.unistd.getsid
+    libc.src.unistd.gettid
+    libc.src.unistd.getuid
+    libc.src.unistd.isatty
+    libc.src.unistd.link
+    libc.src.unistd.linkat
+    libc.src.unistd.lseek
+    libc.src.unistd.pathconf
+    libc.src.unistd.pipe
+    libc.src.unistd.pipe2
+    libc.src.unistd.pread
+    libc.src.unistd.pwrite
+    libc.src.unistd.read
+    libc.src.unistd.readlink
+    libc.src.unistd.readlinkat
+    libc.src.unistd.rmdir
+    libc.src.unistd.setsid
+    libc.src.unistd.symlink
+    libc.src.unistd.symlinkat
+    libc.src.unistd.sysconf
+    libc.src.unistd.truncate
+    libc.src.unistd.unlink
+    libc.src.unistd.unlinkat
+    libc.src.unistd.write
+
+    # wchar.h entrypoints
+    libc.src.wchar.wcslen
+    libc.src.wchar.wctob
+
+    # wctype.h entrypoints
+    libc.src.wctype.iswalpha
+
+    # sys/uio.h entrypoints
+    libc.src.sys.uio.writev
+    libc.src.sys.uio.readv
+
+    # sys/time.h entrypoints
+    libc.src.sys.time.setitimer
+    libc.src.sys.time.getitimer
+)
+
+if(LLVM_LIBC_INCLUDE_SCUDO)
+  list(APPEND TARGET_LIBC_ENTRYPOINTS
+    # malloc.h external entrypoints
+    libc.src.stdlib.mallopt
+  )
+endif()
+
+set(TARGET_LIBM_ENTRYPOINTS
+    # complex.h entrypoints
+    libc.src.complex.creal
+    libc.src.complex.crealf
+    libc.src.complex.creall
+    libc.src.complex.cimag
+    libc.src.complex.cimagf
+    libc.src.complex.cimagl
+    libc.src.complex.conj
+    libc.src.complex.conjf
+    libc.src.complex.conjl
+    libc.src.complex.cproj
+    libc.src.complex.cprojf
+    libc.src.complex.cprojl
+
+    # fenv.h entrypoints
+    libc.src.fenv.feclearexcept
+    libc.src.fenv.fedisableexcept
+    libc.src.fenv.feenableexcept
+    libc.src.fenv.fegetenv
+    libc.src.fenv.fegetexcept
+    libc.src.fenv.fegetexceptflag
+    libc.src.fenv.fegetround
+    libc.src.fenv.feholdexcept
+    libc.src.fenv.feraiseexcept
+    libc.src.fenv.fesetenv
+    libc.src.fenv.fesetexcept
+    libc.src.fenv.fesetexceptflag
+    libc.src.fenv.fesetround
+    libc.src.fenv.fetestexcept
+    libc.src.fenv.fetestexceptflag
+    libc.src.fenv.feupdateenv
+
+    # math.h entrypoints
+    libc.src.math.acos
+    libc.src.math.acosf
+    libc.src.math.acoshf
+    libc.src.math.asin
+    libc.src.math.asinf
+    libc.src.math.asinhf
+    libc.src.math.atan2
+    libc.src.math.atan2f
+    libc.src.math.atan
+    libc.src.math.atanf
+    libc.src.math.atanhf
+    libc.src.math.canonicalize
+    libc.src.math.canonicalizef
+    libc.src.math.canonicalizel
+    libc.src.math.cbrt
+    libc.src.math.cbrtf
+    libc.src.math.ceil
+    libc.src.math.ceilf
+    libc.src.math.ceill
+    libc.src.math.copysign
+    libc.src.math.copysignf
+    libc.src.math.copysignl
+    libc.src.math.cos
+    libc.src.math.cosf
+    libc.src.math.coshf
+    libc.src.math.cospif
+    libc.src.math.daddl
+    libc.src.math.ddivl
+    libc.src.math.dfmal
+    libc.src.math.dmull
+    libc.src.math.dsqrtl
+    libc.src.math.dsubl
+    libc.src.math.erff
+    libc.src.math.exp
+    libc.src.math.exp10
+    libc.src.math.exp10f
+    libc.src.math.exp2
+    libc.src.math.exp2f
+    libc.src.math.exp2m1f
+    libc.src.math.expf
+    libc.src.math.expm1
+    libc.src.math.expm1f
+    libc.src.math.fabs
+    libc.src.math.fabsf
+    libc.src.math.fabsl
+    libc.src.math.fadd
+    libc.src.math.faddl
+    libc.src.math.fadd
+    libc.src.math.fdim
+    libc.src.math.fdimf
+    libc.src.math.fdiml
+    libc.src.math.floor
+    libc.src.math.floorf
+    libc.src.math.floorl
+    libc.src.math.fma
+    libc.src.math.fmabf16
+    libc.src.math.fmaf
+    libc.src.math.fmax
+    libc.src.math.fmaxf
+    libc.src.math.fmaximum
+    libc.src.math.fmaximum_mag
+    libc.src.math.fmaximum_mag_num
+    libc.src.math.fmaximum_mag_numf
+    libc.src.math.fmaximum_mag_numl
+    libc.src.math.fmaximum_magf
+    libc.src.math.fmaximum_magl
+    libc.src.math.fmaximum_num
+    libc.src.math.fmaximum_numf
+    libc.src.math.fmaximum_numl
+    libc.src.math.fmaximumf
+    libc.src.math.fmaximuml
+    libc.src.math.fmaxl
+    libc.src.math.fmin
+    libc.src.math.fminf
+    libc.src.math.fminimum
+    libc.src.math.fminimum_mag
+    libc.src.math.fminimum_mag_num
+    libc.src.math.fminimum_mag_numf
+    libc.src.math.fminimum_mag_numl
+    libc.src.math.fminimum_magf
+    libc.src.math.fminimum_magl
+    libc.src.math.fminimum_num
+    libc.src.math.fminimum_numf
+    libc.src.math.fminimum_numl
+    libc.src.math.fminimumf
+    libc.src.math.fminimuml
+    libc.src.math.fminl
+    libc.src.math.fmod
+    libc.src.math.fmodf
+    libc.src.math.fmodl
+    libc.src.math.fmul
+    libc.src.math.fmull
+    libc.src.math.frexp
+    libc.src.math.frexpf
+    libc.src.math.frexpl
+    libc.src.math.fromfp
+    libc.src.math.fromfpf
+    libc.src.math.fromfpl
+    libc.src.math.fromfpx
+    libc.src.math.fromfpxf
+    libc.src.math.fromfpxl
+    libc.src.math.fsqrt
+    libc.src.math.fsqrtl
+    libc.src.math.fsub
+    libc.src.math.fsubl
+    libc.src.math.getpayload
+    libc.src.math.getpayloadf
+    libc.src.math.getpayloadl
+    libc.src.math.hypot
+    libc.src.math.hypotf
+    libc.src.math.ilogb
+    libc.src.math.ilogbf
+    libc.src.math.ilogbl
+    libc.src.math.iscanonical
+    libc.src.math.iscanonicalf
+    libc.src.math.iscanonicall
+    libc.src.math.isnan
+    libc.src.math.isnanf
+    libc.src.math.isnanl
+    libc.src.math.issignaling
+    libc.src.math.issignalingf
+    libc.src.math.issignalingl
+    libc.src.math.ldexp
+    libc.src.math.ldexpf
+    libc.src.math.ldexpl
+    libc.src.math.llogb
+    libc.src.math.llogbf
+    libc.src.math.llogbl
+    libc.src.math.llrint
+    libc.src.math.llrintf
+    libc.src.math.llrintl
+    libc.src.math.llround
+    libc.src.math.llroundf
+    libc.src.math.llroundl
+    libc.src.math.log
+    libc.src.math.log10
+    libc.src.math.log10f
+    libc.src.math.log1p
+    libc.src.math.log1pf
+    libc.src.math.log2
+    libc.src.math.log2f
+    libc.src.math.logb
+    libc.src.math.logbf
+    libc.src.math.logbl
+    libc.src.math.logf
+    libc.src.math.lrint
+    libc.src.math.lrintf
+    libc.src.math.lrintl
+    libc.src.math.lround
+    libc.src.math.lroundf
+    libc.src.math.lroundl
+    libc.src.math.modf
+    libc.src.math.modff
+    libc.src.math.modfl
+    libc.src.math.nan
+    libc.src.math.nanf
+    libc.src.math.nanl
+    libc.src.math.nearbyint
+    libc.src.math.nearbyintf
+    libc.src.math.nearbyintl
+    libc.src.math.nextafter
+    libc.src.math.nextafterf
+    libc.src.math.nextafterl
+    libc.src.math.nextdown
+    libc.src.math.nextdownf
+    libc.src.math.nextdownl
+    libc.src.math.nexttoward
+    libc.src.math.nexttowardf
+    libc.src.math.nexttowardl
+    libc.src.math.nextup
+    libc.src.math.nextupf
+    libc.src.math.nextupl
+    libc.src.math.pow
+    libc.src.math.powf
+    libc.src.math.remainder
+    libc.src.math.remainderf
+    libc.src.math.remainderl
+    libc.src.math.remquo
+    libc.src.math.remquof
+    libc.src.math.remquol
+    libc.src.math.rint
+    libc.src.math.rintf
+    libc.src.math.rintl
+    libc.src.math.round
+    libc.src.math.roundeven
+    libc.src.math.roundevenf
+    libc.src.math.roundevenl
+    libc.src.math.roundf
+    libc.src.math.roundl
+    libc.src.math.scalbln
+    libc.src.math.scalblnf
+    libc.src.math.scalblnl
+    libc.src.math.scalbn
+    libc.src.math.scalbnf
+    libc.src.math.scalbnl
+    libc.src.math.setpayload
+    libc.src.math.setpayloadf
+    libc.src.math.setpayloadl
+    libc.src.math.setpayloadsig
+    libc.src.math.setpayloadsigf
+    libc.src.math.setpayloadsigl
+    libc.src.math.sin
+    libc.src.math.sincos
+    libc.src.math.sincosf
+    libc.src.math.sinf
+    libc.src.math.sinhf
+    libc.src.math.sinpif
+    libc.src.math.sqrt
+    libc.src.math.sqrtf
+    libc.src.math.sqrtl
+    libc.src.math.tan
+    libc.src.math.tanf
+    libc.src.math.tanhf
+    libc.src.math.tanpif
+    libc.src.math.totalorder
+    libc.src.math.totalorderf
+    libc.src.math.totalorderl
+    libc.src.math.totalordermag
+    libc.src.math.totalordermagf
+    libc.src.math.totalordermagl
+    libc.src.math.trunc
+    libc.src.math.truncf
+    libc.src.math.truncl
+    libc.src.math.ufromfp
+    libc.src.math.ufromfpf
+    libc.src.math.ufromfpl
+    libc.src.math.ufromfpx
+    libc.src.math.ufromfpxf
+    libc.src.math.ufromfpxl
+)
+
+if(LIBC_TYPES_HAS_CFLOAT16)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # complex.h C23 _Complex _Float16 entrypoints
+    libc.src.complex.crealf16
+    libc.src.complex.cimagf16
+    libc.src.complex.conjf16
+    libc.src.complex.cprojf16
+  )
+endif()
+
+if(LIBC_TYPES_HAS_FLOAT16)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # math.h C23 _Float16 entrypoints
+    libc.src.math.acoshf16
+    libc.src.math.asinpif16
+    libc.src.math.canonicalizef16
+    libc.src.math.ceilf16
+    libc.src.math.copysignf16
+    libc.src.math.cospif16
+    libc.src.math.expf16
+    libc.src.math.f16add
+    libc.src.math.f16addf
+    # libc.src.math.f16addl
+    libc.src.math.f16div
+    libc.src.math.f16divf
+    # libc.src.math.f16divl
+    libc.src.math.f16fma
+    libc.src.math.f16fmaf
+    # libc.src.math.f16fmal
+    libc.src.math.f16mul
+    libc.src.math.f16mulf
+    # libc.src.math.f16mull
+    libc.src.math.f16sqrt
+    libc.src.math.f16sqrtf
+    # libc.src.math.f16sqrtl
+    libc.src.math.f16sub
+    libc.src.math.f16subf
+    # libc.src.math.f16subl
+    libc.src.math.fabsf16
+    libc.src.math.fdimf16
+    libc.src.math.fdiv
+    libc.src.math.fdivl
+    libc.src.math.ffma
+    libc.src.math.ffmal
+    libc.src.math.floorf16
+    libc.src.math.fmaf16
+    libc.src.math.fmaxf16
+    libc.src.math.fmaximum_mag_numf16
+    libc.src.math.fmaximum_magf16
+    libc.src.math.fmaximum_numf16
+    libc.src.math.fmaximumf16
+    libc.src.math.fminf16
+    libc.src.math.fminimum_mag_numf16
+    libc.src.math.fminimum_magf16
+    libc.src.math.fminimum_numf16
+    libc.src.math.fminimumf16
+    # libc.src.math.fmodf16
+    libc.src.math.frexpf16
+    libc.src.math.fromfpf16
+    libc.src.math.fromfpxf16
+    libc.src.math.getpayloadf16
+    libc.src.math.ilogbf16
+    libc.src.math.iscanonicalf16
+    libc.src.math.issignalingf16
+    libc.src.math.ldexpf16
+    libc.src.math.llogbf16
+    libc.src.math.llrintf16
+    libc.src.math.llroundf16
+    libc.src.math.logbf16
+    libc.src.math.lrintf16
+    libc.src.math.lroundf16
+    # libc.src.math.modff16
+    libc.src.math.nanf16
+    libc.src.math.nearbyintf16
+    libc.src.math.nextafterf16
+    libc.src.math.nextdownf16
+    # Temporarily disable nexttowardf16 on aarch64 because the conversion
+    # between _Float16 and long double will crash clang-11.  This is fixed in
+    # clang-12 and after: https://godbolt.org/z/8ceT9454c
+    # libc.src.math.nexttowardf16
+    libc.src.math.nextupf16
+    libc.src.math.remainderf16
+    libc.src.math.remquof16
+    libc.src.math.rintf16
+    libc.src.math.roundevenf16
+    libc.src.math.roundf16
+    libc.src.math.rsqrtf
+    libc.src.math.rsqrtf16
+    libc.src.math.scalblnf16
+    libc.src.math.scalbnf16
+    libc.src.math.setpayloadf16
+    libc.src.math.setpayloadsigf16
+    libc.src.math.sinpif16
+    libc.src.math.sqrtf16
+    libc.src.math.totalorderf16
+    libc.src.math.totalordermagf16
+    libc.src.math.truncf16
+    libc.src.math.ufromfpf16
+    libc.src.math.ufromfpxf16
+  )
+
+  # if(LIBC_TYPES_HAS_FLOAT128)
+  #   list(APPEND TARGET_LIBM_ENTRYPOINTS
+  #     # math.h C23 mixed _Float16 and _Float128 entrypoints
+  #     libc.src.math.f16addf128
+  #     libc.src.math.f16divf128
+  #     libc.src.math.f16fmaf128
+  #     libc.src.math.f16mulf128
+  #     libc.src.math.f16sqrtf128
+  #     libc.src.math.f16subf128
+  #   )
+  # endif()
+endif()
+
+if(LIBC_TYPES_HAS_CFLOAT128)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # complex.h C23 _Complex _Float128 entrypoints
+    libc.src.complex.crealf128
+    libc.src.complex.cimagf128
+    libc.src.complex.conjf128
+    libc.src.complex.cprojf128
+  )
+endif()
+
+if(LIBC_TYPES_HAS_FLOAT128)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # math.h C23 _Float128 entrypoints
+    libc.src.math.atan2f128
+    libc.src.math.canonicalizef128
+    libc.src.math.ceilf128
+    libc.src.math.copysignf128
+    libc.src.math.daddf128
+    libc.src.math.ddivf128
+    libc.src.math.dfmaf128
+    libc.src.math.dmulf128
+    libc.src.math.dsqrtf128
+    libc.src.math.dsubf128
+    libc.src.math.fabsf128
+    libc.src.math.faddf128
+    libc.src.math.fdimf128
+    libc.src.math.fdivf128
+    libc.src.math.ffmaf128
+    libc.src.math.floorf128
+    libc.src.math.fmaxf128
+    libc.src.math.fmaximum_mag_numf128
+    libc.src.math.fmaximum_magf128
+    libc.src.math.fmaximum_numf128
+    libc.src.math.fmaximumf128
+    libc.src.math.fminf128
+    libc.src.math.fminimum_mag_numf128
+    libc.src.math.fminimum_magf128
+    libc.src.math.fminimum_numf128
+    libc.src.math.fminimumf128
+    libc.src.math.fmodf128
+    libc.src.math.fmulf128
+    libc.src.math.frexpf128
+    libc.src.math.fromfpf128
+    libc.src.math.fromfpxf128
+    libc.src.math.fsqrtf128
+    libc.src.math.fsubf128
+    libc.src.math.getpayloadf128
+    libc.src.math.ilogbf128
+    libc.src.math.iscanonicalf128
+    libc.src.math.issignalingf128
+    libc.src.math.ldexpf128
+    libc.src.math.llogbf128
+    libc.src.math.llrintf128
+    libc.src.math.llroundf128
+    libc.src.math.logbf128
+    libc.src.math.lrintf128
+    libc.src.math.lroundf128
+    libc.src.math.modff128
+    libc.src.math.nanf128
+    libc.src.math.nearbyintf128
+    libc.src.math.nextafterf128
+    libc.src.math.nextdownf128
+    libc.src.math.nextupf128
+    libc.src.math.remainderf128
+    libc.src.math.remquof128
+    libc.src.math.rintf128
+    libc.src.math.roundevenf128
+    libc.src.math.roundf128
+    libc.src.math.scalblnf128
+    libc.src.math.scalbnf128
+    libc.src.math.setpayloadf128
+    libc.src.math.setpayloadsigf128
+    libc.src.math.sqrtf128
+    libc.src.math.totalorderf128
+    libc.src.math.totalordermagf128
+    libc.src.math.truncf128
+    libc.src.math.ufromfpf128
+    libc.src.math.ufromfpxf128
+  )
+endif()
+
+list(APPEND TARGET_LIBM_ENTRYPOINTS
+  # bfloat16 entrypoints
+  libc.src.math.bf16add
+  libc.src.math.bf16addf
+  libc.src.math.bf16addl
+  libc.src.math.bf16div
+  libc.src.math.bf16divf
+  libc.src.math.bf16divl
+  libc.src.math.bf16fma
+  libc.src.math.bf16fmaf
+  libc.src.math.bf16fmal
+  libc.src.math.bf16mul
+  libc.src.math.bf16mulf
+  libc.src.math.bf16mull
+  libc.src.math.bf16sub
+  libc.src.math.bf16subf
+  libc.src.math.bf16subl
+  libc.src.math.canonicalizebf16
+  libc.src.math.ceilbf16
+  libc.src.math.copysignbf16
+  libc.src.math.fabsbf16
+  libc.src.math.fdimbf16
+  libc.src.math.floorbf16
+  libc.src.math.fmaxbf16
+  libc.src.math.fmaximumbf16
+  libc.src.math.fmaximum_magbf16
+  libc.src.math.fmaximum_mag_numbf16
+  libc.src.math.fmaximum_numbf16
+  libc.src.math.fminbf16
+  libc.src.math.fminimumbf16
+  libc.src.math.fminimum_magbf16
+  libc.src.math.fminimum_mag_numbf16
+  libc.src.math.fminimum_numbf16
+  libc.src.math.fmodbf16
+  libc.src.math.frexpbf16
+  libc.src.math.fromfpbf16
+  libc.src.math.fromfpxbf16
+  libc.src.math.getpayloadbf16
+  libc.src.math.ilogbbf16
+  libc.src.math.iscanonicalbf16
+  libc.src.math.issignalingbf16
+  libc.src.math.ldexpbf16
+  libc.src.math.llogbbf16
+  libc.src.math.llrintbf16
+  libc.src.math.llroundbf16
+  libc.src.math.log_bf16
+  libc.src.math.logbbf16
+  libc.src.math.lrintbf16
+  libc.src.math.lroundbf16
+  libc.src.math.modfbf16
+  libc.src.math.nanbf16
+  libc.src.math.nearbyintbf16
+  libc.src.math.nextafterbf16
+  libc.src.math.nextdownbf16
+  libc.src.math.nexttowardbf16
+  libc.src.math.nextupbf16
+  libc.src.math.remainderbf16
+  libc.src.math.remquobf16
+  libc.src.math.rintbf16
+  libc.src.math.roundbf16
+  libc.src.math.roundevenbf16
+  libc.src.math.scalblnbf16
+  libc.src.math.scalbnbf16
+  libc.src.math.setpayloadbf16
+  libc.src.math.setpayloadsigbf16
+  libc.src.math.sqrtbf16
+  libc.src.math.truncbf16
+  libc.src.math.totalorderbf16
+  libc.src.math.totalordermagbf16
+  libc.src.math.ufromfpbf16
+  libc.src.math.ufromfpxbf16
+)
+
+if(LIBC_TYPES_HAS_FLOAT128)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # math.h C++23 mixed bfloat16 and _Float128 entrypoints
+    libc.src.math.bf16addf128
+    libc.src.math.bf16divf128
+    libc.src.math.bf16fmaf128
+    libc.src.math.bf16mulf128
+    libc.src.math.bf16subf128
+  )
+endif()
+
+if(LLVM_LIBC_FULL_BUILD)
+  list(APPEND TARGET_LIBC_ENTRYPOINTS
+    # assert.h entrypoints
+    libc.src.assert.__assert_fail
+
+    # compiler entrypoints (no corresponding header)
+    libc.src.compiler.__stack_chk_fail
+
+    # dirent.h entrypoints
+    libc.src.dirent.closedir
+    libc.src.dirent.dirfd
+    libc.src.dirent.opendir
+    libc.src.dirent.readdir
+
+    # arpa/inet.h entrypoints
+    libc.src.arpa.inet.htonl
+    libc.src.arpa.inet.htons
+    libc.src.arpa.inet.inet_addr
+    libc.src.arpa.inet.inet_aton
+    libc.src.arpa.inet.ntohl
+    libc.src.arpa.inet.ntohs
+
+    # pthread.h entrypoints
+    libc.src.pthread.pthread_atfork
+    libc.src.pthread.pthread_attr_destroy
+    libc.src.pthread.pthread_attr_getdetachstate
+    libc.src.pthread.pthread_attr_getguardsize
+    libc.src.pthread.pthread_attr_getstack
+    libc.src.pthread.pthread_attr_getstacksize
+    libc.src.pthread.pthread_attr_init
+    libc.src.pthread.pthread_attr_setdetachstate
+    libc.src.pthread.pthread_attr_setguardsize
+    libc.src.pthread.pthread_attr_setstack
+    libc.src.pthread.pthread_attr_setstacksize
+    libc.src.pthread.pthread_condattr_destroy
+    libc.src.pthread.pthread_condattr_getclock
+    libc.src.pthread.pthread_condattr_getpshared
+    libc.src.pthread.pthread_condattr_init
+    libc.src.pthread.pthread_condattr_setclock
+    libc.src.pthread.pthread_condattr_setpshared
+    libc.src.pthread.pthread_create
+    libc.src.pthread.pthread_detach
+    libc.src.pthread.pthread_equal
+    libc.src.pthread.pthread_exit
+    libc.src.pthread.pthread_getname_np
+    libc.src.pthread.pthread_getspecific
+    libc.src.pthread.pthread_join
+    libc.src.pthread.pthread_key_create
+    libc.src.pthread.pthread_key_delete
+    libc.src.pthread.pthread_mutex_destroy
+    libc.src.pthread.pthread_mutex_init
+    libc.src.pthread.pthread_mutex_lock
+    libc.src.pthread.pthread_mutex_unlock
+    libc.src.pthread.pthread_mutexattr_destroy
+    libc.src.pthread.pthread_mutexattr_getpshared
+    libc.src.pthread.pthread_mutexattr_getrobust
+    libc.src.pthread.pthread_mutexattr_gettype
+    libc.src.pthread.pthread_mutexattr_init
+    libc.src.pthread.pthread_mutexattr_setpshared
+    libc.src.pthread.pthread_mutexattr_setrobust
+    libc.src.pthread.pthread_mutexattr_settype
+    libc.src.pthread.pthread_once
+    libc.src.pthread.pthread_rwlock_clockrdlock
+    libc.src.pthread.pthread_rwlock_clockwrlock
+    libc.src.pthread.pthread_rwlock_destroy
+    libc.src.pthread.pthread_rwlock_init
+    libc.src.pthread.pthread_rwlock_rdlock
+    libc.src.pthread.pthread_rwlock_timedrdlock
+    libc.src.pthread.pthread_rwlock_timedwrlock
+    libc.src.pthread.pthread_rwlock_tryrdlock
+    libc.src.pthread.pthread_rwlock_trywrlock
+    libc.src.pthread.pthread_rwlock_unlock
+    libc.src.pthread.pthread_rwlock_wrlock
+    libc.src.pthread.pthread_rwlockattr_destroy
+    libc.src.pthread.pthread_rwlockattr_getkind_np
+    libc.src.pthread.pthread_rwlockattr_getpshared
+    libc.src.pthread.pthread_rwlockattr_init
+    libc.src.pthread.pthread_rwlockattr_setkind_np
+    libc.src.pthread.pthread_rwlockattr_setpshared
+    libc.src.pthread.pthread_spin_destroy
+    libc.src.pthread.pthread_spin_init
+    libc.src.pthread.pthread_spin_lock
+    libc.src.pthread.pthread_spin_trylock
+    libc.src.pthread.pthread_spin_unlock
+    libc.src.pthread.pthread_self
+    libc.src.pthread.pthread_setname_np
+    libc.src.pthread.pthread_setspecific
+
+    # sched.h entrypoints
+    libc.src.sched.__sched_getcpucount
+    libc.src.sched.__sched_setcpuzero
+    libc.src.sched.__sched_setcpuset
+    libc.src.sched.__sched_getcpuisset
+
+    # strings.h entrypoints
+    libc.src.strings.strcasecmp_l
+    libc.src.strings.strncasecmp_l
+
+    # setjmp.h entrypoints
+    libc.src.setjmp.longjmp
+    libc.src.setjmp.setjmp
+    libc.src.setjmp.siglongjmp
+    libc.src.setjmp.sigsetjmp
+
+    # stdio.h entrypoints
+    libc.src.stdio.clearerr
+    libc.src.stdio.clearerr_unlocked
+    libc.src.stdio.fclose
+    libc.src.stdio.fdopen
+    libc.src.stdio.feof
+    libc.src.stdio.feof_unlocked
+    libc.src.stdio.ferror
+    libc.src.stdio.ferror_unlocked
+    libc.src.stdio.fflush
+    libc.src.stdio.fgetc
+    libc.src.stdio.fgetc_unlocked
+    libc.src.stdio.fgets
+    libc.src.stdio.fileno
+    libc.src.stdio.flockfile
+    libc.src.stdio.fopen
+    libc.src.stdio.fopencookie
+    libc.src.stdio.fputc
+    libc.src.stdio.fputs
+    libc.src.stdio.fread
+    libc.src.stdio.fread_unlocked
+    libc.src.stdio.fseek
+    libc.src.stdio.fseeko
+    libc.src.stdio.ftell
+    libc.src.stdio.ftello
+    libc.src.stdio.funlockfile
+    libc.src.stdio.fwrite
+    libc.src.stdio.fwrite_unlocked
+    libc.src.stdio.getc
+    libc.src.stdio.getc_unlocked
+    libc.src.stdio.getchar
+    libc.src.stdio.getchar_unlocked
+    libc.src.stdio.perror
+    libc.src.stdio.putc
+    libc.src.stdio.putchar
+    libc.src.stdio.puts
+    libc.src.stdio.setbuf
+    libc.src.stdio.setvbuf
+    libc.src.stdio.stderr
+    libc.src.stdio.stdin
+    libc.src.stdio.stdout
+    libc.src.stdio.ungetc
+
+    # stdlib.h entrypoints
+    libc.src.stdlib._Exit
+    libc.src.stdlib.abort
+    libc.src.stdlib.at_quick_exit
+    libc.src.stdlib.atexit
+    libc.src.stdlib.exit
+    libc.src.stdlib.getenv
+    libc.src.stdlib.quick_exit
+
+    # signal.h entrypoints
+    libc.src.signal.kill
+    libc.src.signal.raise
+    libc.src.signal.sigaction
+    libc.src.signal.sigaddset
+    libc.src.signal.sigaltstack
+    libc.src.signal.sigdelset
+    libc.src.signal.sigemptyset
+    libc.src.signal.sigfillset
+    libc.src.signal.signal
+    libc.src.signal.sigprocmask
+
+    # spawn.h entrypoints
+    libc.src.spawn.posix_spawn
+    libc.src.spawn.posix_spawn_file_actions_addclose
+    libc.src.spawn.posix_spawn_file_actions_adddup2
+    libc.src.spawn.posix_spawn_file_actions_addopen
+    libc.src.spawn.posix_spawn_file_actions_destroy
+    libc.src.spawn.posix_spawn_file_actions_init
+
+    # search.h entrypoints
+    libc.src.search.hcreate
+    libc.src.search.hcreate_r
+    libc.src.search.hdestroy
+    libc.src.search.hdestroy_r
+    libc.src.search.hsearch
+    libc.src.search.hsearch_r
+    libc.src.search.insque
+    libc.src.search.lfind
+    libc.src.search.lsearch
+    libc.src.search.remque
+
+    # threads.h entrypoints
+    libc.src.threads.call_once
+    libc.src.threads.cnd_broadcast
+    libc.src.threads.cnd_destroy
+    libc.src.threads.cnd_init
+    libc.src.threads.cnd_signal
+    libc.src.threads.cnd_wait
+    libc.src.threads.mtx_destroy
+    libc.src.threads.mtx_init
+    libc.src.threads.mtx_lock
+    libc.src.threads.mtx_unlock
+    libc.src.threads.thrd_create
+    libc.src.threads.thrd_current
+    libc.src.threads.thrd_detach
+    libc.src.threads.thrd_equal
+    libc.src.threads.thrd_exit
+    libc.src.threads.thrd_join
+    libc.src.threads.tss_create
+    libc.src.threads.tss_delete
+    libc.src.threads.tss_get
+    libc.src.threads.tss_set
+
+    # time.h entrypoints
+    libc.src.time.asctime
+    libc.src.time.asctime_r
+    libc.src.time.ctime
+    libc.src.time.ctime_r
+    libc.src.time.clock
+    libc.src.time.clock_gettime
+    libc.src.time.clock_settime
+    libc.src.time.difftime
+    libc.src.time.gettimeofday
+    libc.src.time.gmtime
+    libc.src.time.gmtime_r
+    libc.src.time.mktime
+    libc.src.time.nanosleep
+    libc.src.time.time
+    libc.src.time.timespec_get
+
+    # unistd.h entrypoints
+    libc.src.unistd.__llvm_libc_syscall
+    libc.src.unistd._exit
+    libc.src.unistd.environ
+    libc.src.unistd.execv
+    libc.src.unistd.fork
+    libc.src.unistd.getopt
+    libc.src.unistd.optarg
+    libc.src.unistd.opterr
+    libc.src.unistd.optind
+    libc.src.unistd.optopt
+    libc.src.unistd.swab
+
+    # sys/select.h entrypoints
+    libc.src.sys.select.select
+
+    # sys/socket.h entrypoints
+    libc.src.sys.socket.bind
+    libc.src.sys.socket.socket
+  )
+endif()
+
+set(TARGET_LLVMLIBC_ENTRYPOINTS
+  ${TARGET_LIBC_ENTRYPOINTS}
+  ${TARGET_LIBM_ENTRYPOINTS}
+)
diff --git a/libc/config/linux/arm/entrypoints.txt b/libc/config/linux/arm/entrypoints.txt
index 12d3ab7e1ee17..c6a3ed9015040 100644
--- a/libc/config/linux/arm/entrypoints.txt
+++ b/libc/config/linux/arm/entrypoints.txt
@@ -1,538 +1,538 @@
-set(TARGET_LIBC_ENTRYPOINTS
-    # ctype.h entrypoints
-    libc.src.ctype.isalnum
-    libc.src.ctype.isalpha
-    libc.src.ctype.isascii
-    libc.src.ctype.isblank
-    libc.src.ctype.iscntrl
-    libc.src.ctype.isdigit
-    libc.src.ctype.isgraph
-    libc.src.ctype.islower
-    libc.src.ctype.isprint
-    libc.src.ctype.ispunct
-    libc.src.ctype.isspace
-    libc.src.ctype.isupper
-    libc.src.ctype.isxdigit
-    libc.src.ctype.toascii
-    libc.src.ctype.tolower
-    libc.src.ctype.toupper
-
-    # errno.h entrypoints
-    libc.src.errno.errno
-
-    # poll.h entrypoints
-    libc.src.poll.poll
-
-    # string.h entrypoints
-    libc.src.string.memccpy
-    libc.src.string.memchr
-    libc.src.string.memcmp
-    libc.src.string.memcpy
-    libc.src.string.memmem
-    libc.src.string.memmove
-    libc.src.string.mempcpy
-    libc.src.string.memrchr
-    libc.src.string.memset
-    libc.src.string.stpcpy
-    libc.src.string.stpncpy
-    libc.src.string.strcasestr
-    libc.src.string.strcat
-    libc.src.string.strchr
-    libc.src.string.strchrnul
-    libc.src.string.strcmp
-    libc.src.string.strcpy
-    libc.src.string.strcspn
-    libc.src.string.strlcat
-    libc.src.string.strlcpy
-    libc.src.string.strlen
-    libc.src.string.strncat
-    libc.src.string.strncmp
-    libc.src.string.strncpy
-    libc.src.string.strnlen
-    libc.src.string.strpbrk
-    libc.src.string.strrchr
-    libc.src.string.strsep
-    libc.src.string.strspn
-    libc.src.string.strstr
-    libc.src.string.strtok
-    libc.src.string.strtok_r
-
-    # strings.h entrypoints
-    libc.src.strings.bcmp
-    libc.src.strings.bcopy
-    libc.src.strings.bzero
-    libc.src.strings.index
-    libc.src.strings.rindex
-    libc.src.strings.strcasecmp
-    libc.src.strings.strncasecmp
-
-    # inttypes.h entrypoints
-    libc.src.inttypes.imaxabs
-    libc.src.inttypes.imaxdiv
-    libc.src.inttypes.strtoimax
-    libc.src.inttypes.strtoumax
-
-    # stdbit.h entrypoints
-    libc.src.stdbit.stdc_bit_ceil_uc
-    libc.src.stdbit.stdc_bit_ceil_ui
-    libc.src.stdbit.stdc_bit_ceil_ul
-    libc.src.stdbit.stdc_bit_ceil_ull
-    libc.src.stdbit.stdc_bit_ceil_us
-    libc.src.stdbit.stdc_bit_floor_uc
-    libc.src.stdbit.stdc_bit_floor_ui
-    libc.src.stdbit.stdc_bit_floor_ul
-    libc.src.stdbit.stdc_bit_floor_ull
-    libc.src.stdbit.stdc_bit_floor_us
-    libc.src.stdbit.stdc_bit_width_uc
-    libc.src.stdbit.stdc_bit_width_ui
-    libc.src.stdbit.stdc_bit_width_ul
-    libc.src.stdbit.stdc_bit_width_ull
-    libc.src.stdbit.stdc_bit_width_us
-    libc.src.stdbit.stdc_count_ones_uc
-    libc.src.stdbit.stdc_count_ones_ui
-    libc.src.stdbit.stdc_count_ones_ul
-    libc.src.stdbit.stdc_count_ones_ull
-    libc.src.stdbit.stdc_count_ones_us
-    libc.src.stdbit.stdc_count_zeros_uc
-    libc.src.stdbit.stdc_count_zeros_ui
-    libc.src.stdbit.stdc_count_zeros_ul
-    libc.src.stdbit.stdc_count_zeros_ull
-    libc.src.stdbit.stdc_count_zeros_us
-    libc.src.stdbit.stdc_first_leading_one_uc
-    libc.src.stdbit.stdc_first_leading_one_ui
-    libc.src.stdbit.stdc_first_leading_one_ul
-    libc.src.stdbit.stdc_first_leading_one_ull
-    libc.src.stdbit.stdc_first_leading_one_us
-    libc.src.stdbit.stdc_first_leading_zero_uc
-    libc.src.stdbit.stdc_first_leading_zero_ui
-    libc.src.stdbit.stdc_first_leading_zero_ul
-    libc.src.stdbit.stdc_first_leading_zero_ull
-    libc.src.stdbit.stdc_first_leading_zero_us
-    libc.src.stdbit.stdc_first_trailing_one_uc
-    libc.src.stdbit.stdc_first_trailing_one_ui
-    libc.src.stdbit.stdc_first_trailing_one_ul
-    libc.src.stdbit.stdc_first_trailing_one_ull
-    libc.src.stdbit.stdc_first_trailing_one_us
-    libc.src.stdbit.stdc_first_trailing_zero_uc
-    libc.src.stdbit.stdc_first_trailing_zero_ui
-    libc.src.stdbit.stdc_first_trailing_zero_ul
-    libc.src.stdbit.stdc_first_trailing_zero_ull
-    libc.src.stdbit.stdc_first_trailing_zero_us
-    libc.src.stdbit.stdc_has_single_bit_uc
-    libc.src.stdbit.stdc_has_single_bit_ui
-    libc.src.stdbit.stdc_has_single_bit_ul
-    libc.src.stdbit.stdc_has_single_bit_ull
-    libc.src.stdbit.stdc_has_single_bit_us
-    libc.src.stdbit.stdc_leading_ones_uc
-    libc.src.stdbit.stdc_leading_ones_ui
-    libc.src.stdbit.stdc_leading_ones_ul
-    libc.src.stdbit.stdc_leading_ones_ull
-    libc.src.stdbit.stdc_leading_ones_us
-    libc.src.stdbit.stdc_leading_zeros_uc
-    libc.src.stdbit.stdc_leading_zeros_ui
-    libc.src.stdbit.stdc_leading_zeros_ul
-    libc.src.stdbit.stdc_leading_zeros_ull
-    libc.src.stdbit.stdc_leading_zeros_us
-    libc.src.stdbit.stdc_trailing_ones_uc
-    libc.src.stdbit.stdc_trailing_ones_ui
-    libc.src.stdbit.stdc_trailing_ones_ul
-    libc.src.stdbit.stdc_trailing_ones_ull
-    libc.src.stdbit.stdc_trailing_ones_us
-    libc.src.stdbit.stdc_trailing_zeros_uc
-    libc.src.stdbit.stdc_trailing_zeros_ui
-    libc.src.stdbit.stdc_trailing_zeros_ul
-    libc.src.stdbit.stdc_trailing_zeros_ull
-    libc.src.stdbit.stdc_trailing_zeros_us
-
-    # stdlib.h entrypoints
-    libc.src.stdlib.abs
-    libc.src.stdlib.atof
-    libc.src.stdlib.atoi
-    libc.src.stdlib.atol
-    libc.src.stdlib.atoll
-    libc.src.stdlib.bsearch
-    libc.src.stdlib.div
-    libc.src.stdlib.labs
-    libc.src.stdlib.ldiv
-    libc.src.stdlib.llabs
-    libc.src.stdlib.lldiv
-    libc.src.stdlib.memalignment
-    libc.src.stdlib.qsort
-    libc.src.stdlib.qsort_r
-    libc.src.stdlib.strtod
-    libc.src.stdlib.strtof
-    libc.src.stdlib.strtol
-    libc.src.stdlib.strtold
-    libc.src.stdlib.strtoll
-    libc.src.stdlib.strtoul
-    libc.src.stdlib.strtoull
-
-    # stdlib.h external entrypoints
-    libc.src.stdlib.aligned_alloc
-    libc.src.stdlib.free
-    libc.src.stdlib.malloc
-
-    # sys/ioctl.h entrypoints
-    libc.src.sys.ioctl.ioctl
-
-    # sys/mman.h entrypoints
-    libc.src.sys.mman.mmap
-    libc.src.sys.mman.munmap
-
-    # sys/prctl.h entrypoints
-    libc.src.sys.prctl.prctl
-
-    # sys/epoll.h entrypoints
-    # Disabled due to epoll_wait syscalls not being available on this platform.
-    # libc.src.sys.epoll.epoll_wait
-    # libc.src.sys.epoll.epoll_pwait
-    # libc.src.sys.epoll.epoll_pwait2
-
-    # sys/time.h entrypoints
-    libc.src.sys.time.setitimer
-    libc.src.sys.time.getitimer
-
-    # wctype.h entrypoints
-    libc.src.wctype.iswalpha
-)
-
-if(LLVM_LIBC_FULL_BUILD)
-  list(APPEND TARGET_LIBC_ENTRYPOINTS
-    # search.h entrypoints
-    libc.src.search.lfind
-
-    # setjmp.h entrypoints
-    libc.src.setjmp.longjmp
-    libc.src.setjmp.setjmp
-    libc.src.setjmp.siglongjmp
-    libc.src.setjmp.sigsetjmp
-  )
-endif()
-
-if(LLVM_LIBC_INCLUDE_SCUDO)
-  list(APPEND TARGET_LIBC_ENTRYPOINTS
-    # malloc.h external entrypoints
-    libc.src.stdlib.mallopt
-  )
-endif()
-
-set(TARGET_LIBM_ENTRYPOINTS
-    # complex.h entrypoints
-    libc.src.complex.creal
-    libc.src.complex.crealf
-    libc.src.complex.creall
-    libc.src.complex.cimag
-    libc.src.complex.cimagf
-    libc.src.complex.cimagl
-    libc.src.complex.conj
-    libc.src.complex.conjf
-    libc.src.complex.conjl
-    libc.src.complex.cproj
-    libc.src.complex.cprojf
-    libc.src.complex.cprojl
-
-    # fenv.h entrypoints
-    libc.src.fenv.feclearexcept
-    libc.src.fenv.fedisableexcept
-    libc.src.fenv.feenableexcept
-    libc.src.fenv.fegetenv
-    libc.src.fenv.fegetexcept
-    libc.src.fenv.fegetexceptflag
-    libc.src.fenv.fegetround
-    libc.src.fenv.feholdexcept
-    libc.src.fenv.feraiseexcept
-    libc.src.fenv.fesetenv
-    libc.src.fenv.fesetexcept
-    libc.src.fenv.fesetexceptflag
-    libc.src.fenv.fesetround
-    libc.src.fenv.fetestexcept
-    libc.src.fenv.fetestexceptflag
-    libc.src.fenv.feupdateenv
-
-    # math.h entrypoints
-    libc.src.math.acos
-    libc.src.math.acosf
-    libc.src.math.acoshf
-    libc.src.math.asin
-    libc.src.math.asinf
-    libc.src.math.asinhf
-    libc.src.math.atan2
-    libc.src.math.atan2f
-    libc.src.math.atan
-    libc.src.math.atanf
-    libc.src.math.atanhf
-    libc.src.math.cbrt
-    libc.src.math.cbrtf
-    libc.src.math.ceil
-    libc.src.math.ceilf
-    libc.src.math.ceill
-    libc.src.math.copysign
-    libc.src.math.copysignf
-    libc.src.math.copysignl
-    libc.src.math.cos
-    libc.src.math.cosf
-    libc.src.math.coshf
-    libc.src.math.dfmal
-    libc.src.math.dsqrtl
-    libc.src.math.erff
-    libc.src.math.exp
-    libc.src.math.exp10
-    libc.src.math.exp10f
-    libc.src.math.exp2
-    libc.src.math.exp2f
-    libc.src.math.expf
-    libc.src.math.expm1
-    libc.src.math.expm1f
-    libc.src.math.fabs
-    libc.src.math.fabsf
-    libc.src.math.fabsl
-    libc.src.math.fadd
-    libc.src.math.faddl
-    libc.src.math.fadd
-    libc.src.math.fdim
-    libc.src.math.fdimf
-    libc.src.math.fdiml
-    libc.src.math.fdiv
-    libc.src.math.fdivl
-    libc.src.math.ffma
-    libc.src.math.ffmal
-    libc.src.math.floor
-    libc.src.math.floorf
-    libc.src.math.floorl
-    libc.src.math.fma
-    libc.src.math.fmabf16
-    libc.src.math.fmaf
-    libc.src.math.fmax
-    libc.src.math.fmaxf
-    libc.src.math.fmaximum
-    libc.src.math.fmaximum_mag
-    libc.src.math.fmaximum_mag_num
-    libc.src.math.fmaximum_mag_numf
-    libc.src.math.fmaximum_mag_numl
-    libc.src.math.fmaximum_magf
-    libc.src.math.fmaximum_magl
-    libc.src.math.fmaximum_num
-    libc.src.math.fmaximum_numf
-    libc.src.math.fmaximum_numl
-    libc.src.math.fmaximumf
-    libc.src.math.fmaximuml
-    libc.src.math.fmaxl
-    libc.src.math.fmin
-    libc.src.math.fminf
-    libc.src.math.fminimum
-    libc.src.math.fminimum_mag
-    libc.src.math.fminimum_mag_num
-    libc.src.math.fminimum_mag_numf
-    libc.src.math.fminimum_mag_numl
-    libc.src.math.fminimum_magf
-    libc.src.math.fminimum_magl
-    libc.src.math.fminimum_num
-    libc.src.math.fminimum_numf
-    libc.src.math.fminimum_numl
-    libc.src.math.fminimumf
-    libc.src.math.fminimuml
-    libc.src.math.fminl
-    libc.src.math.fmod
-    libc.src.math.fmodf
-    libc.src.math.fmul
-    libc.src.math.frexp
-    libc.src.math.frexpf
-    libc.src.math.frexpl
-    libc.src.math.fromfp
-    libc.src.math.fromfpf
-    libc.src.math.fromfpl
-    libc.src.math.fromfpx
-    libc.src.math.fromfpxf
-    libc.src.math.fromfpxl
-    libc.src.math.fsub
-    libc.src.math.fsubl
-    libc.src.math.getpayload
-    libc.src.math.getpayloadf
-    libc.src.math.getpayloadl
-    libc.src.math.hypot
-    libc.src.math.hypotf
-    libc.src.math.ilogb
-    libc.src.math.ilogbf
-    libc.src.math.ilogbl
-    libc.src.math.ldexp
-    libc.src.math.ldexpf
-    libc.src.math.ldexpl
-    libc.src.math.llogb
-    libc.src.math.llogbf
-    libc.src.math.llogbl
-    libc.src.math.llrint
-    libc.src.math.llrintf
-    libc.src.math.llrintl
-    libc.src.math.llround
-    libc.src.math.llroundf
-    libc.src.math.llroundl
-    libc.src.math.log
-    libc.src.math.log10
-    libc.src.math.log10f
-    libc.src.math.log1p
-    libc.src.math.log1pf
-    libc.src.math.log2
-    libc.src.math.log2f
-    libc.src.math.logb
-    libc.src.math.logbf
-    libc.src.math.logbl
-    libc.src.math.logf
-    libc.src.math.lrint
-    libc.src.math.lrintf
-    libc.src.math.lrintl
-    libc.src.math.lround
-    libc.src.math.lroundf
-    libc.src.math.lroundl
-    libc.src.math.modf
-    libc.src.math.modff
-    libc.src.math.modfl
-    libc.src.math.nan
-    libc.src.math.nanf
-    libc.src.math.nanl
-    libc.src.math.nearbyint
-    libc.src.math.nearbyintf
-    libc.src.math.nearbyintl
-    libc.src.math.nextafter
-    libc.src.math.nextafterf
-    libc.src.math.nextafterl
-    libc.src.math.nextdown
-    libc.src.math.nextdownf
-    libc.src.math.nextdownl
-    libc.src.math.nexttoward
-    libc.src.math.nexttowardf
-    libc.src.math.nexttowardl
-    libc.src.math.nextup
-    libc.src.math.nextupf
-    libc.src.math.nextupl
-    libc.src.math.pow
-    libc.src.math.powf
-    libc.src.math.remainder
-    libc.src.math.remainderf
-    libc.src.math.remainderl
-    libc.src.math.remquo
-    libc.src.math.remquof
-    libc.src.math.remquol
-    libc.src.math.rint
-    libc.src.math.rintf
-    libc.src.math.rintl
-    libc.src.math.round
-    libc.src.math.roundf
-    libc.src.math.roundl
-    libc.src.math.scalbln
-    libc.src.math.scalblnf
-    libc.src.math.scalblnl
-    libc.src.math.scalbn
-    libc.src.math.scalbnf
-    libc.src.math.scalbnl
-    libc.src.math.setpayload
-    libc.src.math.setpayloadf
-    libc.src.math.setpayloadl
-    libc.src.math.setpayloadsig
-    libc.src.math.setpayloadsigf
-    libc.src.math.setpayloadsigl
-    libc.src.math.sin
-    libc.src.math.sincos
-    libc.src.math.sincosf
-    libc.src.math.sinf
-    libc.src.math.sinhf
-    libc.src.math.sqrt
-    libc.src.math.sqrtf
-    libc.src.math.sqrtl
-    libc.src.math.tan
-    libc.src.math.tanf
-    libc.src.math.tanhf
-    libc.src.math.tanpif
-    libc.src.math.totalorder
-    libc.src.math.totalorderf
-    libc.src.math.totalorderl
-    libc.src.math.totalordermag
-    libc.src.math.totalordermagf
-    libc.src.math.totalordermagl
-    libc.src.math.trunc
-    libc.src.math.truncf
-    libc.src.math.truncl
-    libc.src.math.ufromfp
-    libc.src.math.ufromfpf
-    libc.src.math.ufromfpl
-    libc.src.math.ufromfpx
-    libc.src.math.ufromfpxf
-    libc.src.math.ufromfpxl
-)
-
-list(APPEND TARGET_LIBM_ENTRYPOINTS
-  # bfloat16 entrypoints
-  libc.src.math.bf16add
-  libc.src.math.bf16addf
-  libc.src.math.bf16addl
-  libc.src.math.bf16div
-  libc.src.math.bf16divf
-  libc.src.math.bf16divl
-  libc.src.math.bf16fma
-  libc.src.math.bf16fmaf
-  libc.src.math.bf16fmal
-  libc.src.math.bf16mul
-  libc.src.math.bf16mulf
-  libc.src.math.bf16mull
-  libc.src.math.bf16sub
-  libc.src.math.bf16subf
-  libc.src.math.bf16subl
-  libc.src.math.canonicalizebf16
-  libc.src.math.ceilbf16
-  libc.src.math.copysignbf16
-  libc.src.math.fabsbf16
-  libc.src.math.fdimbf16
-  libc.src.math.floorbf16
-  libc.src.math.fmaxbf16
-  libc.src.math.fmaximumbf16
-  libc.src.math.fmaximum_magbf16
-  libc.src.math.fmaximum_mag_numbf16
-  libc.src.math.fmaximum_numbf16
-  libc.src.math.fminbf16
-  libc.src.math.fminimumbf16
-  libc.src.math.fminimum_magbf16
-  libc.src.math.fminimum_mag_numbf16
-  libc.src.math.fminimum_numbf16
-  libc.src.math.fmodbf16
-  libc.src.math.frexpbf16
-  libc.src.math.fromfpbf16
-  libc.src.math.fromfpxbf16
-  libc.src.math.getpayloadbf16
-  libc.src.math.ilogbbf16
-  libc.src.math.iscanonicalbf16
-  libc.src.math.issignalingbf16
-  libc.src.math.ldexpbf16
-  libc.src.math.llogbbf16
-  libc.src.math.llrintbf16
-  libc.src.math.llroundbf16
-  libc.src.math.log_bf16
-  libc.src.math.logbbf16
-  libc.src.math.lrintbf16
-  libc.src.math.lroundbf16
-  libc.src.math.modfbf16
-  libc.src.math.nanbf16
-  libc.src.math.nearbyintbf16
-  libc.src.math.nextafterbf16
-  libc.src.math.nextdownbf16
-  libc.src.math.nexttowardbf16
-  libc.src.math.nextupbf16
-  libc.src.math.remainderbf16
-  libc.src.math.remquobf16
-  libc.src.math.rintbf16
-  libc.src.math.roundbf16
-  libc.src.math.roundevenbf16
-  libc.src.math.scalblnbf16
-  libc.src.math.scalbnbf16
-  libc.src.math.setpayloadbf16
-  libc.src.math.setpayloadsigbf16
-  libc.src.math.sqrtbf16
-  libc.src.math.truncbf16
-  libc.src.math.totalorderbf16
-  libc.src.math.totalordermagbf16
-  libc.src.math.ufromfpbf16
-  libc.src.math.ufromfpxbf16
-)
-
-set(TARGET_LLVMLIBC_ENTRYPOINTS
-  ${TARGET_LIBC_ENTRYPOINTS}
-  ${TARGET_LIBM_ENTRYPOINTS}
-)
+set(TARGET_LIBC_ENTRYPOINTS
+    # ctype.h entrypoints
+    libc.src.ctype.isalnum
+    libc.src.ctype.isalpha
+    libc.src.ctype.isascii
+    libc.src.ctype.isblank
+    libc.src.ctype.iscntrl
+    libc.src.ctype.isdigit
+    libc.src.ctype.isgraph
+    libc.src.ctype.islower
+    libc.src.ctype.isprint
+    libc.src.ctype.ispunct
+    libc.src.ctype.isspace
+    libc.src.ctype.isupper
+    libc.src.ctype.isxdigit
+    libc.src.ctype.toascii
+    libc.src.ctype.tolower
+    libc.src.ctype.toupper
+
+    # errno.h entrypoints
+    libc.src.errno.errno
+
+    # poll.h entrypoints
+    libc.src.poll.poll
+
+    # string.h entrypoints
+    libc.src.string.memccpy
+    libc.src.string.memchr
+    libc.src.string.memcmp
+    libc.src.string.memcpy
+    libc.src.string.memmem
+    libc.src.string.memmove
+    libc.src.string.mempcpy
+    libc.src.string.memrchr
+    libc.src.string.memset
+    libc.src.string.stpcpy
+    libc.src.string.stpncpy
+    libc.src.string.strcasestr
+    libc.src.string.strcat
+    libc.src.string.strchr
+    libc.src.string.strchrnul
+    libc.src.string.strcmp
+    libc.src.string.strcpy
+    libc.src.string.strcspn
+    libc.src.string.strlcat
+    libc.src.string.strlcpy
+    libc.src.string.strlen
+    libc.src.string.strncat
+    libc.src.string.strncmp
+    libc.src.string.strncpy
+    libc.src.string.strnlen
+    libc.src.string.strpbrk
+    libc.src.string.strrchr
+    libc.src.string.strsep
+    libc.src.string.strspn
+    libc.src.string.strstr
+    libc.src.string.strtok
+    libc.src.string.strtok_r
+
+    # strings.h entrypoints
+    libc.src.strings.bcmp
+    libc.src.strings.bcopy
+    libc.src.strings.bzero
+    libc.src.strings.index
+    libc.src.strings.rindex
+    libc.src.strings.strcasecmp
+    libc.src.strings.strncasecmp
+
+    # inttypes.h entrypoints
+    libc.src.inttypes.imaxabs
+    libc.src.inttypes.imaxdiv
+    libc.src.inttypes.strtoimax
+    libc.src.inttypes.strtoumax
+
+    # stdbit.h entrypoints
+    libc.src.stdbit.stdc_bit_ceil_uc
+    libc.src.stdbit.stdc_bit_ceil_ui
+    libc.src.stdbit.stdc_bit_ceil_ul
+    libc.src.stdbit.stdc_bit_ceil_ull
+    libc.src.stdbit.stdc_bit_ceil_us
+    libc.src.stdbit.stdc_bit_floor_uc
+    libc.src.stdbit.stdc_bit_floor_ui
+    libc.src.stdbit.stdc_bit_floor_ul
+    libc.src.stdbit.stdc_bit_floor_ull
+    libc.src.stdbit.stdc_bit_floor_us
+    libc.src.stdbit.stdc_bit_width_uc
+    libc.src.stdbit.stdc_bit_width_ui
+    libc.src.stdbit.stdc_bit_width_ul
+    libc.src.stdbit.stdc_bit_width_ull
+    libc.src.stdbit.stdc_bit_width_us
+    libc.src.stdbit.stdc_count_ones_uc
+    libc.src.stdbit.stdc_count_ones_ui
+    libc.src.stdbit.stdc_count_ones_ul
+    libc.src.stdbit.stdc_count_ones_ull
+    libc.src.stdbit.stdc_count_ones_us
+    libc.src.stdbit.stdc_count_zeros_uc
+    libc.src.stdbit.stdc_count_zeros_ui
+    libc.src.stdbit.stdc_count_zeros_ul
+    libc.src.stdbit.stdc_count_zeros_ull
+    libc.src.stdbit.stdc_count_zeros_us
+    libc.src.stdbit.stdc_first_leading_one_uc
+    libc.src.stdbit.stdc_first_leading_one_ui
+    libc.src.stdbit.stdc_first_leading_one_ul
+    libc.src.stdbit.stdc_first_leading_one_ull
+    libc.src.stdbit.stdc_first_leading_one_us
+    libc.src.stdbit.stdc_first_leading_zero_uc
+    libc.src.stdbit.stdc_first_leading_zero_ui
+    libc.src.stdbit.stdc_first_leading_zero_ul
+    libc.src.stdbit.stdc_first_leading_zero_ull
+    libc.src.stdbit.stdc_first_leading_zero_us
+    libc.src.stdbit.stdc_first_trailing_one_uc
+    libc.src.stdbit.stdc_first_trailing_one_ui
+    libc.src.stdbit.stdc_first_trailing_one_ul
+    libc.src.stdbit.stdc_first_trailing_one_ull
+    libc.src.stdbit.stdc_first_trailing_one_us
+    libc.src.stdbit.stdc_first_trailing_zero_uc
+    libc.src.stdbit.stdc_first_trailing_zero_ui
+    libc.src.stdbit.stdc_first_trailing_zero_ul
+    libc.src.stdbit.stdc_first_trailing_zero_ull
+    libc.src.stdbit.stdc_first_trailing_zero_us
+    libc.src.stdbit.stdc_has_single_bit_uc
+    libc.src.stdbit.stdc_has_single_bit_ui
+    libc.src.stdbit.stdc_has_single_bit_ul
+    libc.src.stdbit.stdc_has_single_bit_ull
+    libc.src.stdbit.stdc_has_single_bit_us
+    libc.src.stdbit.stdc_leading_ones_uc
+    libc.src.stdbit.stdc_leading_ones_ui
+    libc.src.stdbit.stdc_leading_ones_ul
+    libc.src.stdbit.stdc_leading_ones_ull
+    libc.src.stdbit.stdc_leading_ones_us
+    libc.src.stdbit.stdc_leading_zeros_uc
+    libc.src.stdbit.stdc_leading_zeros_ui
+    libc.src.stdbit.stdc_leading_zeros_ul
+    libc.src.stdbit.stdc_leading_zeros_ull
+    libc.src.stdbit.stdc_leading_zeros_us
+    libc.src.stdbit.stdc_trailing_ones_uc
+    libc.src.stdbit.stdc_trailing_ones_ui
+    libc.src.stdbit.stdc_trailing_ones_ul
+    libc.src.stdbit.stdc_trailing_ones_ull
+    libc.src.stdbit.stdc_trailing_ones_us
+    libc.src.stdbit.stdc_trailing_zeros_uc
+    libc.src.stdbit.stdc_trailing_zeros_ui
+    libc.src.stdbit.stdc_trailing_zeros_ul
+    libc.src.stdbit.stdc_trailing_zeros_ull
+    libc.src.stdbit.stdc_trailing_zeros_us
+
+    # stdlib.h entrypoints
+    libc.src.stdlib.abs
+    libc.src.stdlib.atof
+    libc.src.stdlib.atoi
+    libc.src.stdlib.atol
+    libc.src.stdlib.atoll
+    libc.src.stdlib.bsearch
+    libc.src.stdlib.div
+    libc.src.stdlib.labs
+    libc.src.stdlib.ldiv
+    libc.src.stdlib.llabs
+    libc.src.stdlib.lldiv
+    libc.src.stdlib.memalignment
+    libc.src.stdlib.qsort
+    libc.src.stdlib.qsort_r
+    libc.src.stdlib.strtod
+    libc.src.stdlib.strtof
+    libc.src.stdlib.strtol
+    libc.src.stdlib.strtold
+    libc.src.stdlib.strtoll
+    libc.src.stdlib.strtoul
+    libc.src.stdlib.strtoull
+
+    # stdlib.h external entrypoints
+    libc.src.stdlib.aligned_alloc
+    libc.src.stdlib.free
+    libc.src.stdlib.malloc
+
+    # sys/ioctl.h entrypoints
+    libc.src.sys.ioctl.ioctl
+
+    # sys/mman.h entrypoints
+    libc.src.sys.mman.mmap
+    libc.src.sys.mman.munmap
+
+    # sys/prctl.h entrypoints
+    libc.src.sys.prctl.prctl
+
+    # sys/epoll.h entrypoints
+    # Disabled due to epoll_wait syscalls not being available on this platform.
+    # libc.src.sys.epoll.epoll_wait
+    # libc.src.sys.epoll.epoll_pwait
+    # libc.src.sys.epoll.epoll_pwait2
+
+    # sys/time.h entrypoints
+    libc.src.sys.time.setitimer
+    libc.src.sys.time.getitimer
+
+    # wctype.h entrypoints
+    libc.src.wctype.iswalpha
+)
+
+if(LLVM_LIBC_FULL_BUILD)
+  list(APPEND TARGET_LIBC_ENTRYPOINTS
+    # search.h entrypoints
+    libc.src.search.lfind
+
+    # setjmp.h entrypoints
+    libc.src.setjmp.longjmp
+    libc.src.setjmp.setjmp
+    libc.src.setjmp.siglongjmp
+    libc.src.setjmp.sigsetjmp
+  )
+endif()
+
+if(LLVM_LIBC_INCLUDE_SCUDO)
+  list(APPEND TARGET_LIBC_ENTRYPOINTS
+    # malloc.h external entrypoints
+    libc.src.stdlib.mallopt
+  )
+endif()
+
+set(TARGET_LIBM_ENTRYPOINTS
+    # complex.h entrypoints
+    libc.src.complex.creal
+    libc.src.complex.crealf
+    libc.src.complex.creall
+    libc.src.complex.cimag
+    libc.src.complex.cimagf
+    libc.src.complex.cimagl
+    libc.src.complex.conj
+    libc.src.complex.conjf
+    libc.src.complex.conjl
+    libc.src.complex.cproj
+    libc.src.complex.cprojf
+    libc.src.complex.cprojl
+
+    # fenv.h entrypoints
+    libc.src.fenv.feclearexcept
+    libc.src.fenv.fedisableexcept
+    libc.src.fenv.feenableexcept
+    libc.src.fenv.fegetenv
+    libc.src.fenv.fegetexcept
+    libc.src.fenv.fegetexceptflag
+    libc.src.fenv.fegetround
+    libc.src.fenv.feholdexcept
+    libc.src.fenv.feraiseexcept
+    libc.src.fenv.fesetenv
+    libc.src.fenv.fesetexcept
+    libc.src.fenv.fesetexceptflag
+    libc.src.fenv.fesetround
+    libc.src.fenv.fetestexcept
+    libc.src.fenv.fetestexceptflag
+    libc.src.fenv.feupdateenv
+
+    # math.h entrypoints
+    libc.src.math.acos
+    libc.src.math.acosf
+    libc.src.math.acoshf
+    libc.src.math.asin
+    libc.src.math.asinf
+    libc.src.math.asinhf
+    libc.src.math.atan2
+    libc.src.math.atan2f
+    libc.src.math.atan
+    libc.src.math.atanf
+    libc.src.math.atanhf
+    libc.src.math.cbrt
+    libc.src.math.cbrtf
+    libc.src.math.ceil
+    libc.src.math.ceilf
+    libc.src.math.ceill
+    libc.src.math.copysign
+    libc.src.math.copysignf
+    libc.src.math.copysignl
+    libc.src.math.cos
+    libc.src.math.cosf
+    libc.src.math.coshf
+    libc.src.math.dfmal
+    libc.src.math.dsqrtl
+    libc.src.math.erff
+    libc.src.math.exp
+    libc.src.math.exp10
+    libc.src.math.exp10f
+    libc.src.math.exp2
+    libc.src.math.exp2f
+    libc.src.math.expf
+    libc.src.math.expm1
+    libc.src.math.expm1f
+    libc.src.math.fabs
+    libc.src.math.fabsf
+    libc.src.math.fabsl
+    libc.src.math.fadd
+    libc.src.math.faddl
+    libc.src.math.fadd
+    libc.src.math.fdim
+    libc.src.math.fdimf
+    libc.src.math.fdiml
+    libc.src.math.fdiv
+    libc.src.math.fdivl
+    libc.src.math.ffma
+    libc.src.math.ffmal
+    libc.src.math.floor
+    libc.src.math.floorf
+    libc.src.math.floorl
+    libc.src.math.fma
+    libc.src.math.fmabf16
+    libc.src.math.fmaf
+    libc.src.math.fmax
+    libc.src.math.fmaxf
+    libc.src.math.fmaximum
+    libc.src.math.fmaximum_mag
+    libc.src.math.fmaximum_mag_num
+    libc.src.math.fmaximum_mag_numf
+    libc.src.math.fmaximum_mag_numl
+    libc.src.math.fmaximum_magf
+    libc.src.math.fmaximum_magl
+    libc.src.math.fmaximum_num
+    libc.src.math.fmaximum_numf
+    libc.src.math.fmaximum_numl
+    libc.src.math.fmaximumf
+    libc.src.math.fmaximuml
+    libc.src.math.fmaxl
+    libc.src.math.fmin
+    libc.src.math.fminf
+    libc.src.math.fminimum
+    libc.src.math.fminimum_mag
+    libc.src.math.fminimum_mag_num
+    libc.src.math.fminimum_mag_numf
+    libc.src.math.fminimum_mag_numl
+    libc.src.math.fminimum_magf
+    libc.src.math.fminimum_magl
+    libc.src.math.fminimum_num
+    libc.src.math.fminimum_numf
+    libc.src.math.fminimum_numl
+    libc.src.math.fminimumf
+    libc.src.math.fminimuml
+    libc.src.math.fminl
+    libc.src.math.fmod
+    libc.src.math.fmodf
+    libc.src.math.fmul
+    libc.src.math.frexp
+    libc.src.math.frexpf
+    libc.src.math.frexpl
+    libc.src.math.fromfp
+    libc.src.math.fromfpf
+    libc.src.math.fromfpl
+    libc.src.math.fromfpx
+    libc.src.math.fromfpxf
+    libc.src.math.fromfpxl
+    libc.src.math.fsub
+    libc.src.math.fsubl
+    libc.src.math.getpayload
+    libc.src.math.getpayloadf
+    libc.src.math.getpayloadl
+    libc.src.math.hypot
+    libc.src.math.hypotf
+    libc.src.math.ilogb
+    libc.src.math.ilogbf
+    libc.src.math.ilogbl
+    libc.src.math.ldexp
+    libc.src.math.ldexpf
+    libc.src.math.ldexpl
+    libc.src.math.llogb
+    libc.src.math.llogbf
+    libc.src.math.llogbl
+    libc.src.math.llrint
+    libc.src.math.llrintf
+    libc.src.math.llrintl
+    libc.src.math.llround
+    libc.src.math.llroundf
+    libc.src.math.llroundl
+    libc.src.math.log
+    libc.src.math.log10
+    libc.src.math.log10f
+    libc.src.math.log1p
+    libc.src.math.log1pf
+    libc.src.math.log2
+    libc.src.math.log2f
+    libc.src.math.logb
+    libc.src.math.logbf
+    libc.src.math.logbl
+    libc.src.math.logf
+    libc.src.math.lrint
+    libc.src.math.lrintf
+    libc.src.math.lrintl
+    libc.src.math.lround
+    libc.src.math.lroundf
+    libc.src.math.lroundl
+    libc.src.math.modf
+    libc.src.math.modff
+    libc.src.math.modfl
+    libc.src.math.nan
+    libc.src.math.nanf
+    libc.src.math.nanl
+    libc.src.math.nearbyint
+    libc.src.math.nearbyintf
+    libc.src.math.nearbyintl
+    libc.src.math.nextafter
+    libc.src.math.nextafterf
+    libc.src.math.nextafterl
+    libc.src.math.nextdown
+    libc.src.math.nextdownf
+    libc.src.math.nextdownl
+    libc.src.math.nexttoward
+    libc.src.math.nexttowardf
+    libc.src.math.nexttowardl
+    libc.src.math.nextup
+    libc.src.math.nextupf
+    libc.src.math.nextupl
+    libc.src.math.pow
+    libc.src.math.powf
+    libc.src.math.remainder
+    libc.src.math.remainderf
+    libc.src.math.remainderl
+    libc.src.math.remquo
+    libc.src.math.remquof
+    libc.src.math.remquol
+    libc.src.math.rint
+    libc.src.math.rintf
+    libc.src.math.rintl
+    libc.src.math.round
+    libc.src.math.roundf
+    libc.src.math.roundl
+    libc.src.math.scalbln
+    libc.src.math.scalblnf
+    libc.src.math.scalblnl
+    libc.src.math.scalbn
+    libc.src.math.scalbnf
+    libc.src.math.scalbnl
+    libc.src.math.setpayload
+    libc.src.math.setpayloadf
+    libc.src.math.setpayloadl
+    libc.src.math.setpayloadsig
+    libc.src.math.setpayloadsigf
+    libc.src.math.setpayloadsigl
+    libc.src.math.sin
+    libc.src.math.sincos
+    libc.src.math.sincosf
+    libc.src.math.sinf
+    libc.src.math.sinhf
+    libc.src.math.sqrt
+    libc.src.math.sqrtf
+    libc.src.math.sqrtl
+    libc.src.math.tan
+    libc.src.math.tanf
+    libc.src.math.tanhf
+    libc.src.math.tanpif
+    libc.src.math.totalorder
+    libc.src.math.totalorderf
+    libc.src.math.totalorderl
+    libc.src.math.totalordermag
+    libc.src.math.totalordermagf
+    libc.src.math.totalordermagl
+    libc.src.math.trunc
+    libc.src.math.truncf
+    libc.src.math.truncl
+    libc.src.math.ufromfp
+    libc.src.math.ufromfpf
+    libc.src.math.ufromfpl
+    libc.src.math.ufromfpx
+    libc.src.math.ufromfpxf
+    libc.src.math.ufromfpxl
+)
+
+list(APPEND TARGET_LIBM_ENTRYPOINTS
+  # bfloat16 entrypoints
+  libc.src.math.bf16add
+  libc.src.math.bf16addf
+  libc.src.math.bf16addl
+  libc.src.math.bf16div
+  libc.src.math.bf16divf
+  libc.src.math.bf16divl
+  libc.src.math.bf16fma
+  libc.src.math.bf16fmaf
+  libc.src.math.bf16fmal
+  libc.src.math.bf16mul
+  libc.src.math.bf16mulf
+  libc.src.math.bf16mull
+  libc.src.math.bf16sub
+  libc.src.math.bf16subf
+  libc.src.math.bf16subl
+  libc.src.math.canonicalizebf16
+  libc.src.math.ceilbf16
+  libc.src.math.copysignbf16
+  libc.src.math.fabsbf16
+  libc.src.math.fdimbf16
+  libc.src.math.floorbf16
+  libc.src.math.fmaxbf16
+  libc.src.math.fmaximumbf16
+  libc.src.math.fmaximum_magbf16
+  libc.src.math.fmaximum_mag_numbf16
+  libc.src.math.fmaximum_numbf16
+  libc.src.math.fminbf16
+  libc.src.math.fminimumbf16
+  libc.src.math.fminimum_magbf16
+  libc.src.math.fminimum_mag_numbf16
+  libc.src.math.fminimum_numbf16
+  libc.src.math.fmodbf16
+  libc.src.math.frexpbf16
+  libc.src.math.fromfpbf16
+  libc.src.math.fromfpxbf16
+  libc.src.math.getpayloadbf16
+  libc.src.math.ilogbbf16
+  libc.src.math.iscanonicalbf16
+  libc.src.math.issignalingbf16
+  libc.src.math.ldexpbf16
+  libc.src.math.llogbbf16
+  libc.src.math.llrintbf16
+  libc.src.math.llroundbf16
+  libc.src.math.log_bf16
+  libc.src.math.logbbf16
+  libc.src.math.lrintbf16
+  libc.src.math.lroundbf16
+  libc.src.math.modfbf16
+  libc.src.math.nanbf16
+  libc.src.math.nearbyintbf16
+  libc.src.math.nextafterbf16
+  libc.src.math.nextdownbf16
+  libc.src.math.nexttowardbf16
+  libc.src.math.nextupbf16
+  libc.src.math.remainderbf16
+  libc.src.math.remquobf16
+  libc.src.math.rintbf16
+  libc.src.math.roundbf16
+  libc.src.math.roundevenbf16
+  libc.src.math.scalblnbf16
+  libc.src.math.scalbnbf16
+  libc.src.math.setpayloadbf16
+  libc.src.math.setpayloadsigbf16
+  libc.src.math.sqrtbf16
+  libc.src.math.truncbf16
+  libc.src.math.totalorderbf16
+  libc.src.math.totalordermagbf16
+  libc.src.math.ufromfpbf16
+  libc.src.math.ufromfpxbf16
+)
+
+set(TARGET_LLVMLIBC_ENTRYPOINTS
+  ${TARGET_LIBC_ENTRYPOINTS}
+  ${TARGET_LIBM_ENTRYPOINTS}
+)
diff --git a/libc/config/linux/riscv/entrypoints.txt b/libc/config/linux/riscv/entrypoints.txt
index ca8df44ca2b7f..220c071f89a92 100644
--- a/libc/config/linux/riscv/entrypoints.txt
+++ b/libc/config/linux/riscv/entrypoints.txt
@@ -1,1332 +1,1332 @@
-set(TARGET_LIBC_ENTRYPOINTS
-    # ctype.h entrypoints
-    libc.src.ctype.isalnum
-    libc.src.ctype.isalpha
-    libc.src.ctype.isascii
-    libc.src.ctype.isblank
-    libc.src.ctype.iscntrl
-    libc.src.ctype.isdigit
-    libc.src.ctype.isgraph
-    libc.src.ctype.islower
-    libc.src.ctype.isprint
-    libc.src.ctype.ispunct
-    libc.src.ctype.isspace
-    libc.src.ctype.isupper
-    libc.src.ctype.isxdigit
-    libc.src.ctype.toascii
-    libc.src.ctype.tolower
-    libc.src.ctype.toupper
-
-    # dlfcn.h entrypoints
-    libc.src.dlfcn.dlclose
-    libc.src.dlfcn.dlerror
-    libc.src.dlfcn.dlopen
-    libc.src.dlfcn.dlsym
-
-    # errno.h entrypoints
-    libc.src.errno.errno
-
-    # fcntl.h entrypoints
-    libc.src.fcntl.creat
-    libc.src.fcntl.fcntl
-    libc.src.fcntl.open
-    libc.src.fcntl.openat
-
-    # poll.h entrypoints
-    libc.src.poll.poll
-
-    # sched.h entrypoints
-    libc.src.sched.sched_get_priority_max
-    libc.src.sched.sched_get_priority_min
-    libc.src.sched.sched_getaffinity
-    libc.src.sched.sched_getparam
-    libc.src.sched.sched_getscheduler
-    libc.src.sched.sched_rr_get_interval
-    libc.src.sched.sched_setaffinity
-    libc.src.sched.sched_setparam
-    libc.src.sched.sched_setscheduler
-    libc.src.sched.sched_yield
-
-    # string.h entrypoints
-    libc.src.string.memccpy
-    libc.src.string.memchr
-    libc.src.string.memcmp
-    libc.src.string.memcpy
-    libc.src.string.memmem
-    libc.src.string.memmove
-    libc.src.string.mempcpy
-    libc.src.string.memrchr
-    libc.src.string.memset
-    libc.src.string.memset_explicit
-    libc.src.string.stpcpy
-    libc.src.string.stpncpy
-    libc.src.string.strcasestr
-    libc.src.string.strcat
-    libc.src.string.strchr
-    libc.src.string.strchrnul
-    libc.src.string.strcmp
-    libc.src.string.strcoll
-    libc.src.string.strcpy
-    libc.src.string.strcspn
-    libc.src.string.strdup
-    libc.src.string.strerror
-    libc.src.string.strerror_r
-    libc.src.string.strlcat
-    libc.src.string.strlcpy
-    libc.src.string.strlen
-    libc.src.string.strncat
-    libc.src.string.strncmp
-    libc.src.string.strncpy
-    libc.src.string.strndup
-    libc.src.string.strnlen
-    libc.src.string.strpbrk
-    libc.src.string.strrchr
-    libc.src.string.strsep
-    libc.src.string.strsignal
-    libc.src.string.strspn
-    libc.src.string.strstr
-    libc.src.string.strtok
-    libc.src.string.strtok_r
-    libc.src.string.strxfrm
-
-    # strings.h entrypoints
-    libc.src.strings.bcmp
-    libc.src.strings.bcopy
-    libc.src.strings.bzero
-    libc.src.strings.ffs
-    libc.src.strings.ffsl
-    libc.src.strings.ffsll
-    libc.src.strings.index
-    libc.src.strings.rindex
-    libc.src.strings.strcasecmp
-    libc.src.strings.strncasecmp
-
-    # inttypes.h entrypoints
-    libc.src.inttypes.imaxabs
-    libc.src.inttypes.imaxdiv
-    libc.src.inttypes.strtoimax
-    libc.src.inttypes.strtoumax
-
-    # stdbit.h entrypoints
-    libc.src.stdbit.stdc_bit_ceil_uc
-    libc.src.stdbit.stdc_bit_ceil_ui
-    libc.src.stdbit.stdc_bit_ceil_ul
-    libc.src.stdbit.stdc_bit_ceil_ull
-    libc.src.stdbit.stdc_bit_ceil_us
-    libc.src.stdbit.stdc_bit_floor_uc
-    libc.src.stdbit.stdc_bit_floor_ui
-    libc.src.stdbit.stdc_bit_floor_ul
-    libc.src.stdbit.stdc_bit_floor_ull
-    libc.src.stdbit.stdc_bit_floor_us
-    libc.src.stdbit.stdc_bit_width_uc
-    libc.src.stdbit.stdc_bit_width_ui
-    libc.src.stdbit.stdc_bit_width_ul
-    libc.src.stdbit.stdc_bit_width_ull
-    libc.src.stdbit.stdc_bit_width_us
-    libc.src.stdbit.stdc_count_ones_uc
-    libc.src.stdbit.stdc_count_ones_ui
-    libc.src.stdbit.stdc_count_ones_ul
-    libc.src.stdbit.stdc_count_ones_ull
-    libc.src.stdbit.stdc_count_ones_us
-    libc.src.stdbit.stdc_count_zeros_uc
-    libc.src.stdbit.stdc_count_zeros_ui
-    libc.src.stdbit.stdc_count_zeros_ul
-    libc.src.stdbit.stdc_count_zeros_ull
-    libc.src.stdbit.stdc_count_zeros_us
-    libc.src.stdbit.stdc_first_leading_one_uc
-    libc.src.stdbit.stdc_first_leading_one_ui
-    libc.src.stdbit.stdc_first_leading_one_ul
-    libc.src.stdbit.stdc_first_leading_one_ull
-    libc.src.stdbit.stdc_first_leading_one_us
-    libc.src.stdbit.stdc_first_leading_zero_uc
-    libc.src.stdbit.stdc_first_leading_zero_ui
-    libc.src.stdbit.stdc_first_leading_zero_ul
-    libc.src.stdbit.stdc_first_leading_zero_ull
-    libc.src.stdbit.stdc_first_leading_zero_us
-    libc.src.stdbit.stdc_first_trailing_one_uc
-    libc.src.stdbit.stdc_first_trailing_one_ui
-    libc.src.stdbit.stdc_first_trailing_one_ul
-    libc.src.stdbit.stdc_first_trailing_one_ull
-    libc.src.stdbit.stdc_first_trailing_one_us
-    libc.src.stdbit.stdc_first_trailing_zero_uc
-    libc.src.stdbit.stdc_first_trailing_zero_ui
-    libc.src.stdbit.stdc_first_trailing_zero_ul
-    libc.src.stdbit.stdc_first_trailing_zero_ull
-    libc.src.stdbit.stdc_first_trailing_zero_us
-    libc.src.stdbit.stdc_has_single_bit_uc
-    libc.src.stdbit.stdc_has_single_bit_ui
-    libc.src.stdbit.stdc_has_single_bit_ul
-    libc.src.stdbit.stdc_has_single_bit_ull
-    libc.src.stdbit.stdc_has_single_bit_us
-    libc.src.stdbit.stdc_leading_ones_uc
-    libc.src.stdbit.stdc_leading_ones_ui
-    libc.src.stdbit.stdc_leading_ones_ul
-    libc.src.stdbit.stdc_leading_ones_ull
-    libc.src.stdbit.stdc_leading_ones_us
-    libc.src.stdbit.stdc_leading_zeros_uc
-    libc.src.stdbit.stdc_leading_zeros_ui
-    libc.src.stdbit.stdc_leading_zeros_ul
-    libc.src.stdbit.stdc_leading_zeros_ull
-    libc.src.stdbit.stdc_leading_zeros_us
-    libc.src.stdbit.stdc_trailing_ones_uc
-    libc.src.stdbit.stdc_trailing_ones_ui
-    libc.src.stdbit.stdc_trailing_ones_ul
-    libc.src.stdbit.stdc_trailing_ones_ull
-    libc.src.stdbit.stdc_trailing_ones_us
-    libc.src.stdbit.stdc_trailing_zeros_uc
-    libc.src.stdbit.stdc_trailing_zeros_ui
-    libc.src.stdbit.stdc_trailing_zeros_ul
-    libc.src.stdbit.stdc_trailing_zeros_ull
-    libc.src.stdbit.stdc_trailing_zeros_us
-
-    # stdlib.h entrypoints
-    libc.src.stdlib.a64l
-    libc.src.stdlib.abs
-    libc.src.stdlib.atof
-    libc.src.stdlib.atoi
-    libc.src.stdlib.atol
-    libc.src.stdlib.atoll
-    libc.src.stdlib.bsearch
-    libc.src.stdlib.div
-    libc.src.stdlib.l64a
-    libc.src.stdlib.labs
-    libc.src.stdlib.ldiv
-    libc.src.stdlib.llabs
-    libc.src.stdlib.lldiv
-    libc.src.stdlib.memalignment
-    libc.src.stdlib.qsort
-    libc.src.stdlib.qsort_r
-    libc.src.stdlib.rand
-    libc.src.stdlib.srand
-    libc.src.stdlib.strfromd
-    libc.src.stdlib.strfromf
-    libc.src.stdlib.strfroml
-    libc.src.stdlib.strtod
-    libc.src.stdlib.strtof
-    libc.src.stdlib.strtol
-    libc.src.stdlib.strtold
-    libc.src.stdlib.strtoll
-    libc.src.stdlib.strtoul
-    libc.src.stdlib.strtoull
-
-    # stdlib.h external entrypoints
-    libc.src.stdlib.aligned_alloc
-    libc.src.stdlib.calloc
-    libc.src.stdlib.free
-    libc.src.stdlib.malloc
-    libc.src.stdlib.realloc
-
-    # stdio.h entrypoints
-    libc.src.stdio.fprintf
-    libc.src.stdio.fscanf
-    libc.src.stdio.vfscanf
-    libc.src.stdio.printf
-    libc.src.stdio.remove
-    libc.src.stdio.rename
-    libc.src.stdio.scanf
-    libc.src.stdio.vscanf
-    libc.src.stdio.snprintf
-    libc.src.stdio.sprintf
-    libc.src.stdio.asprintf
-    libc.src.stdio.sscanf
-    libc.src.stdio.vsscanf
-    libc.src.stdio.vfprintf
-    libc.src.stdio.vprintf
-    libc.src.stdio.vsnprintf
-    libc.src.stdio.vsprintf
-    libc.src.stdio.vasprintf
-
-    # sys/epoll.h entrypoints
-    libc.src.sys.epoll.epoll_create
-    libc.src.sys.epoll.epoll_create1
-    libc.src.sys.epoll.epoll_ctl
-    libc.src.sys.epoll.epoll_pwait
-    libc.src.sys.epoll.epoll_wait
-    # TODO: Need to check if pwait2 is available before providing.
-    # https://github.com/llvm/llvm-project/issues/80060
-    # libc.src.sys.epoll.epoll_pwait2
-
-    # sys/ioctl.h entrypoints
-    libc.src.sys.ioctl.ioctl
-
-    # sys/mman.h entrypoints
-    libc.src.sys.mman.madvise
-    libc.src.sys.mman.mincore
-    libc.src.sys.mman.mlock
-    libc.src.sys.mman.mlock2
-    libc.src.sys.mman.mlockall
-    libc.src.sys.mman.mmap
-    libc.src.sys.mman.mremap
-    libc.src.sys.mman.mprotect
-    libc.src.sys.mman.msync
-    libc.src.sys.mman.munlock
-    libc.src.sys.mman.munlockall
-    libc.src.sys.mman.munmap
-    libc.src.sys.mman.remap_file_pages
-    libc.src.sys.mman.posix_madvise
-    libc.src.sys.mman.shm_open
-    libc.src.sys.mman.shm_unlink
-
-    # sys/random.h entrypoints
-    libc.src.sys.random.getrandom
-
-    # sys/resource.h entrypoints
-    libc.src.sys.resource.getrlimit
-    libc.src.sys.resource.setrlimit
-
-    # sys/sendfile entrypoints
-    libc.src.sys.sendfile.sendfile
-
-    # sys/stat.h entrypoints
-    libc.src.sys.stat.chmod
-    libc.src.sys.stat.fchmod
-    libc.src.sys.stat.fchmodat
-    libc.src.sys.stat.fstat
-    libc.src.sys.stat.lstat
-    libc.src.sys.stat.mkdir
-    libc.src.sys.stat.mkdirat
-    libc.src.sys.stat.stat
-
-    # sys/statvfs.h
-    libc.src.sys.statvfs.fstatvfs
-    libc.src.sys.statvfs.statvfs
-
-    # sys/utimes.h entrypoints
-    libc.src.sys.time.utimes
-
-    # sys/utsname.h entrypoints
-    libc.src.sys.utsname.uname
-
-    # sys/wait.h entrypoints
-    libc.src.sys.wait.wait
-    libc.src.sys.wait.wait4
-    libc.src.sys.wait.waitpid
-
-    # sys/prctl.h entrypoints
-    libc.src.sys.prctl.prctl
-
-    # sys/auxv.h entrypoints
-    libc.src.sys.auxv.getauxval
-
-    # termios.h entrypoints
-    libc.src.termios.cfgetispeed
-    libc.src.termios.cfgetospeed
-    libc.src.termios.cfsetispeed
-    libc.src.termios.cfsetospeed
-    libc.src.termios.tcdrain
-    libc.src.termios.tcflow
-    libc.src.termios.tcflush
-    libc.src.termios.tcgetattr
-    libc.src.termios.tcgetsid
-    libc.src.termios.tcsendbreak
-    libc.src.termios.tcsetattr
-
-    # unistd.h entrypoints
-    libc.src.unistd.access
-    libc.src.unistd.chdir
-    libc.src.unistd.close
-    libc.src.unistd.dup
-    libc.src.unistd.dup2
-    libc.src.unistd.dup3
-    libc.src.unistd.execve
-    libc.src.unistd.faccessat
-    libc.src.unistd.fchdir
-    libc.src.unistd.fpathconf
-    libc.src.unistd.fsync
-    libc.src.unistd.ftruncate
-    libc.src.unistd.getcwd
-    libc.src.unistd.getentropy
-    libc.src.unistd.geteuid
-    libc.src.unistd.gethostname
-    libc.src.unistd.getpagesize
-    libc.src.unistd.getpid
-    libc.src.unistd.getppid
-    libc.src.unistd.getsid
-    libc.src.unistd.gettid
-    libc.src.unistd.getuid
-    libc.src.unistd.isatty
-    libc.src.unistd.link
-    libc.src.unistd.linkat
-    libc.src.unistd.lseek
-    libc.src.unistd.pathconf
-    libc.src.unistd.pipe
-    libc.src.unistd.pipe2
-    libc.src.unistd.pread
-    libc.src.unistd.pwrite
-    libc.src.unistd.read
-    libc.src.unistd.readlink
-    libc.src.unistd.readlinkat
-    libc.src.unistd.rmdir
-    libc.src.unistd.setsid
-    libc.src.unistd.symlink
-    libc.src.unistd.symlinkat
-    libc.src.unistd.sysconf
-    libc.src.unistd.truncate
-    libc.src.unistd.unlink
-    libc.src.unistd.unlinkat
-    libc.src.unistd.write
-
-    # wchar.h entrypoints
-    libc.src.wchar.btowc
-    libc.src.wchar.wcslen
-    libc.src.wchar.wctob
-
-    # wctype.h entrypoints
-    libc.src.wctype.iswalpha
-
-    # sys/uio.h entrypoints
-    libc.src.sys.uio.writev
-    libc.src.sys.uio.readv
-
-    # sys/time.h entrypoints
-    libc.src.sys.time.setitimer
-    libc.src.sys.time.getitimer
-)
-
-if(LLVM_LIBC_INCLUDE_SCUDO)
-  list(APPEND TARGET_LIBC_ENTRYPOINTS
-    # malloc.h external entrypoints
-    libc.src.stdlib.mallopt
-  )
-endif()
-
-set(TARGET_LIBM_ENTRYPOINTS
-    # complex.h entrypoints
-    libc.src.complex.creal
-    libc.src.complex.crealf
-    libc.src.complex.creall
-    libc.src.complex.cimag
-    libc.src.complex.cimagf
-    libc.src.complex.cimagl
-    libc.src.complex.conj
-    libc.src.complex.conjf
-    libc.src.complex.conjl
-    libc.src.complex.cproj
-    libc.src.complex.cprojf
-    libc.src.complex.cprojl
-
-    # fenv.h entrypoints
-    libc.src.fenv.feclearexcept
-    libc.src.fenv.fedisableexcept
-    libc.src.fenv.feenableexcept
-    libc.src.fenv.fegetenv
-    libc.src.fenv.fegetexcept
-    libc.src.fenv.fegetexceptflag
-    libc.src.fenv.fegetround
-    libc.src.fenv.feholdexcept
-    libc.src.fenv.feraiseexcept
-    libc.src.fenv.fesetenv
-    libc.src.fenv.fesetexcept
-    libc.src.fenv.fesetexceptflag
-    libc.src.fenv.fesetround
-    libc.src.fenv.fetestexcept
-    libc.src.fenv.fetestexceptflag
-    libc.src.fenv.feupdateenv
-
-    # math.h entrypoints
-    libc.src.math.acos
-    libc.src.math.acosf
-    libc.src.math.acoshf
-    libc.src.math.asin
-    libc.src.math.asinf
-    libc.src.math.asinhf
-    libc.src.math.atan2
-    libc.src.math.atan2f
-    libc.src.math.atan
-    libc.src.math.atanf
-    libc.src.math.atanhf
-    libc.src.math.canonicalize
-    libc.src.math.canonicalizef
-    libc.src.math.canonicalizel
-    libc.src.math.cbrt
-    libc.src.math.cbrtf
-    libc.src.math.ceil
-    libc.src.math.ceilf
-    libc.src.math.ceill
-    libc.src.math.copysign
-    libc.src.math.copysignf
-    libc.src.math.copysignl
-    libc.src.math.cos
-    libc.src.math.cosf
-    libc.src.math.coshf
-    libc.src.math.cospif
-    libc.src.math.daddl
-    libc.src.math.ddivl
-    libc.src.math.dfmal
-    libc.src.math.dmull
-    libc.src.math.dsqrtl
-    libc.src.math.dsubl
-    libc.src.math.erff
-    libc.src.math.exp
-    libc.src.math.exp10
-    libc.src.math.exp10f
-    libc.src.math.exp10m1f
-    libc.src.math.exp2
-    libc.src.math.exp2f
-    libc.src.math.exp2m1f
-    libc.src.math.expf
-    libc.src.math.expm1
-    libc.src.math.expm1f
-    libc.src.math.fabs
-    libc.src.math.fabsf
-    libc.src.math.fabsl
-    libc.src.math.fadd
-    libc.src.math.faddl
-    libc.src.math.fadd
-    libc.src.math.fdim
-    libc.src.math.fdimf
-    libc.src.math.fdiml
-    libc.src.math.fdiv
-    libc.src.math.fdivl
-    libc.src.math.ffma
-    libc.src.math.ffmal
-    libc.src.math.floor
-    libc.src.math.floorf
-    libc.src.math.floorl
-    libc.src.math.fma
-    libc.src.math.fmabf16
-    libc.src.math.fmaf
-    libc.src.math.fmax
-    libc.src.math.fmaxf
-    libc.src.math.fmaximum
-    libc.src.math.fmaximum_mag
-    libc.src.math.fmaximum_mag_num
-    libc.src.math.fmaximum_mag_numf
-    libc.src.math.fmaximum_mag_numl
-    libc.src.math.fmaximum_magf
-    libc.src.math.fmaximum_magl
-    libc.src.math.fmaximum_num
-    libc.src.math.fmaximum_numf
-    libc.src.math.fmaximum_numl
-    libc.src.math.fmaximumf
-    libc.src.math.fmaximuml
-    libc.src.math.fmaxl
-    libc.src.math.fmin
-    libc.src.math.fminf
-    libc.src.math.fminimum
-    libc.src.math.fminimum_mag
-    libc.src.math.fminimum_mag_num
-    libc.src.math.fminimum_mag_numf
-    libc.src.math.fminimum_mag_numl
-    libc.src.math.fminimum_magf
-    libc.src.math.fminimum_magl
-    libc.src.math.fminimum_num
-    libc.src.math.fminimum_numf
-    libc.src.math.fminimum_numl
-    libc.src.math.fminimumf
-    libc.src.math.fminimuml
-    libc.src.math.fminl
-    libc.src.math.fmod
-    libc.src.math.fmodf
-    libc.src.math.fmodl
-    libc.src.math.fmul
-    libc.src.math.fmull
-    libc.src.math.frexp
-    libc.src.math.frexpf
-    libc.src.math.frexpl
-    libc.src.math.fromfp
-    libc.src.math.fromfpf
-    libc.src.math.fromfpl
-    libc.src.math.fromfpx
-    libc.src.math.fromfpxf
-    libc.src.math.fromfpxl
-    libc.src.math.fsqrt
-    libc.src.math.fsqrtl
-    libc.src.math.fsub
-    libc.src.math.fsubl
-    libc.src.math.getpayload
-    libc.src.math.getpayloadf
-    libc.src.math.getpayloadl
-    libc.src.math.hypot
-    libc.src.math.hypotf
-    libc.src.math.ilogb
-    libc.src.math.ilogbf
-    libc.src.math.ilogbl
-    libc.src.math.iscanonical
-    libc.src.math.iscanonicalf
-    libc.src.math.iscanonicall
-    libc.src.math.isnan
-    libc.src.math.isnanf
-    libc.src.math.isnanl
-    libc.src.math.issignaling
-    libc.src.math.issignalingf
-    libc.src.math.issignalingl
-    libc.src.math.ldexp
-    libc.src.math.ldexpf
-    libc.src.math.ldexpl
-    libc.src.math.llogb
-    libc.src.math.llogbf
-    libc.src.math.llogbl
-    libc.src.math.llrint
-    libc.src.math.llrintf
-    libc.src.math.llrintl
-    libc.src.math.llround
-    libc.src.math.llroundf
-    libc.src.math.llroundl
-    libc.src.math.log
-    libc.src.math.log10
-    libc.src.math.log10f
-    libc.src.math.log1p
-    libc.src.math.log1pf
-    libc.src.math.log2
-    libc.src.math.log2f
-    libc.src.math.logb
-    libc.src.math.logbf
-    libc.src.math.logbl
-    libc.src.math.logf
-    libc.src.math.lrint
-    libc.src.math.lrintf
-    libc.src.math.lrintl
-    libc.src.math.lround
-    libc.src.math.lroundf
-    libc.src.math.lroundl
-    libc.src.math.modf
-    libc.src.math.modff
-    libc.src.math.modfl
-    libc.src.math.nan
-    libc.src.math.nanf
-    libc.src.math.nanl
-    libc.src.math.nearbyint
-    libc.src.math.nearbyintf
-    libc.src.math.nearbyintl
-    libc.src.math.nextafter
-    libc.src.math.nextafterf
-    libc.src.math.nextafterl
-    libc.src.math.nextdown
-    libc.src.math.nextdownf
-    libc.src.math.nextdownl
-    libc.src.math.nexttoward
-    libc.src.math.nexttowardf
-    libc.src.math.nexttowardl
-    libc.src.math.nextup
-    libc.src.math.nextupf
-    libc.src.math.nextupl
-    libc.src.math.pow
-    libc.src.math.powf
-    libc.src.math.remainder
-    libc.src.math.remainderf
-    libc.src.math.remainderl
-    libc.src.math.remquo
-    libc.src.math.remquof
-    libc.src.math.remquol
-    libc.src.math.rint
-    libc.src.math.rintf
-    libc.src.math.rintl
-    libc.src.math.round
-    libc.src.math.roundeven
-    libc.src.math.roundevenf
-    libc.src.math.roundevenl
-    libc.src.math.roundf
-    libc.src.math.roundl
-    libc.src.math.scalbln
-    libc.src.math.scalblnf
-    libc.src.math.scalblnl
-    libc.src.math.scalbn
-    libc.src.math.scalbnf
-    libc.src.math.scalbnl
-    libc.src.math.setpayload
-    libc.src.math.setpayloadf
-    libc.src.math.setpayloadl
-    libc.src.math.setpayloadsig
-    libc.src.math.setpayloadsigf
-    libc.src.math.setpayloadsigl
-    libc.src.math.sin
-    libc.src.math.sincos
-    libc.src.math.sincosf
-    libc.src.math.sinf
-    libc.src.math.sinhf
-    libc.src.math.sinpif
-    libc.src.math.sqrt
-    libc.src.math.sqrtf
-    libc.src.math.sqrtl
-    libc.src.math.tan
-    libc.src.math.tanf
-    libc.src.math.tanhf
-    libc.src.math.tanpif
-    libc.src.math.totalorder
-    libc.src.math.totalorderf
-    libc.src.math.totalorderl
-    libc.src.math.totalordermag
-    libc.src.math.totalordermagf
-    libc.src.math.totalordermagl
-    libc.src.math.trunc
-    libc.src.math.truncf
-    libc.src.math.truncl
-    libc.src.math.ufromfp
-    libc.src.math.ufromfpf
-    libc.src.math.ufromfpl
-    libc.src.math.ufromfpx
-    libc.src.math.ufromfpxf
-    libc.src.math.ufromfpxl
-)
-if(LIBC_TYPES_HAS_CFLOAT16)
-  list(APPEND TARGET_LIBM_ENTRYPOINTS
-    # complex.h C23 _Complex _Float16 entrypoints
-    libc.src.complex.crealf16
-    libc.src.complex.cimagf16
-    libc.src.complex.conjf16
-    libc.src.complex.cprojf16
-  )
-endif()
-
-if(LIBC_TYPES_HAS_FLOAT16)
-  list(APPEND TARGET_LIBM_ENTRYPOINTS
-    # math.h C23 _Float16 entrypoints
-    libc.src.math.acosf16
-    libc.src.math.acoshf16
-    libc.src.math.acospif16
-    libc.src.math.asinf16
-    libc.src.math.asinhf16
-    libc.src.math.atanhf16
-    libc.src.math.canonicalizef16
-    libc.src.math.ceilf16
-    libc.src.math.copysignf16
-    libc.src.math.cosf16
-    libc.src.math.coshf16
-    libc.src.math.cospif16
-    libc.src.math.exp10f16
-    libc.src.math.exp10m1f16
-    libc.src.math.exp2f16
-    libc.src.math.exp2m1f16
-    libc.src.math.expf16
-    libc.src.math.expm1f16
-    libc.src.math.f16add
-    libc.src.math.f16addf
-    libc.src.math.f16addl
-    libc.src.math.f16div
-    libc.src.math.f16divf
-    libc.src.math.f16divl
-    libc.src.math.f16fma
-    libc.src.math.f16fmaf
-    libc.src.math.f16fmal
-    libc.src.math.f16mul
-    libc.src.math.f16mulf
-    libc.src.math.f16mull
-    libc.src.math.f16sqrt
-    libc.src.math.f16sqrtf
-    libc.src.math.f16sqrtl
-    libc.src.math.f16sub
-    libc.src.math.f16subf
-    libc.src.math.f16subl
-    libc.src.math.fabsf16
-    libc.src.math.fdimf16
-    libc.src.math.floorf16
-    libc.src.math.fmaf16
-    libc.src.math.fmaxf16
-    libc.src.math.fmaximum_mag_numf16
-    libc.src.math.fmaximum_magf16
-    libc.src.math.fmaximum_numf16
-    libc.src.math.fmaximumf16
-    libc.src.math.fminf16
-    libc.src.math.fminimum_mag_numf16
-    libc.src.math.fminimum_magf16
-    libc.src.math.fminimum_numf16
-    libc.src.math.fminimumf16
-    libc.src.math.fmodf16
-    libc.src.math.frexpf16
-    libc.src.math.fromfpf16
-    libc.src.math.fromfpxf16
-    libc.src.math.getpayloadf16
-    libc.src.math.hypotf16
-    libc.src.math.ilogbf16
-    libc.src.math.iscanonicalf16
-    libc.src.math.issignalingf16
-    libc.src.math.ldexpf16
-    libc.src.math.llogbf16
-    libc.src.math.llrintf16
-    libc.src.math.llroundf16
-    libc.src.math.log10f16
-    libc.src.math.log2f16
-    libc.src.math.logbf16
-    libc.src.math.logf16
-    libc.src.math.lrintf16
-    libc.src.math.lroundf16
-    libc.src.math.modff16
-    libc.src.math.nanf16
-    libc.src.math.nearbyintf16
-    libc.src.math.nextafterf16
-    libc.src.math.nextdownf16
-    libc.src.math.nexttowardf16
-    libc.src.math.nextupf16
-    libc.src.math.remainderf16
-    libc.src.math.remquof16
-    libc.src.math.rintf16
-    libc.src.math.roundevenf16
-    libc.src.math.roundf16
-    libc.src.math.rsqrtf
-    libc.src.math.rsqrtf16
-    libc.src.math.scalblnf16
-    libc.src.math.scalbnf16
-    libc.src.math.setpayloadf16
-    libc.src.math.setpayloadsigf16
-    libc.src.math.sinf16
-    libc.src.math.sinhf16
-    libc.src.math.sinpif16
-    libc.src.math.sqrtf16
-    libc.src.math.tanf16
-    libc.src.math.tanhf16
-    libc.src.math.tanpif16
-    libc.src.math.totalorderf16
-    libc.src.math.totalordermagf16
-    libc.src.math.truncf16
-    libc.src.math.ufromfpf16
-    libc.src.math.ufromfpxf16
-  )
-
-  if(LIBC_TYPES_HAS_FLOAT128)
-    list(APPEND TARGET_LIBM_ENTRYPOINTS
-      # math.h C23 mixed _Float16 and _Float128 entrypoints
-      libc.src.math.f16addf128
-      libc.src.math.f16divf128
-      libc.src.math.f16fmaf128
-      libc.src.math.f16mulf128
-      libc.src.math.f16sqrtf128
-      libc.src.math.f16subf128
-    )
-  endif()
-endif()
-
-if(LIBC_TYPES_HAS_CFLOAT128)
-  list(APPEND TARGET_LIBM_ENTRYPOINTS
-    # complex.h C23 _Complex _Float128 entrypoints
-    libc.src.complex.crealf128
-    libc.src.complex.cimagf128
-    libc.src.complex.conjf128
-    libc.src.complex.cprojf128
-  )
-endif()
-
-if(LIBC_TYPES_HAS_FLOAT128)
-  list(APPEND TARGET_LIBM_ENTRYPOINTS
-    # math.h C23 _Float128 entrypoints
-    libc.src.math.atan2f128
-    libc.src.math.canonicalizef128
-    libc.src.math.ceilf128
-    libc.src.math.copysignf128
-    libc.src.math.daddf128
-    libc.src.math.ddivf128
-    libc.src.math.dfmaf128
-    libc.src.math.dmulf128
-    libc.src.math.dsqrtf128
-    libc.src.math.dsubf128
-    libc.src.math.fabsf128
-    libc.src.math.faddf128
-    libc.src.math.fdimf128
-    libc.src.math.fdivf128
-    libc.src.math.ffmaf128
-    libc.src.math.floorf128
-    libc.src.math.fmaxf128
-    libc.src.math.fmaximum_mag_numf128
-    libc.src.math.fmaximum_magf128
-    libc.src.math.fmaximum_numf128
-    libc.src.math.fmaximumf128
-    libc.src.math.fminf128
-    libc.src.math.fminimum_mag_numf128
-    libc.src.math.fminimum_magf128
-    libc.src.math.fminimum_numf128
-    libc.src.math.fminimumf128
-    libc.src.math.fmodf128
-    libc.src.math.fmulf128
-    libc.src.math.frexpf128
-    libc.src.math.fromfpf128
-    libc.src.math.fromfpxf128
-    libc.src.math.fsqrtf128
-    libc.src.math.fsubf128
-    libc.src.math.getpayloadf128
-    libc.src.math.ilogbf128
-    libc.src.math.iscanonicalf128
-    libc.src.math.issignalingf128
-    libc.src.math.ldexpf128
-    libc.src.math.llogbf128
-    libc.src.math.llrintf128
-    libc.src.math.llroundf128
-    libc.src.math.logbf128
-    libc.src.math.lrintf128
-    libc.src.math.lroundf128
-    libc.src.math.modff128
-    libc.src.math.nanf128
-    libc.src.math.nearbyintf128
-    libc.src.math.nextafterf128
-    libc.src.math.nextdownf128
-    libc.src.math.nextupf128
-    libc.src.math.remainderf128
-    libc.src.math.remquof128
-    libc.src.math.rintf128
-    libc.src.math.roundevenf128
-    libc.src.math.roundf128
-    libc.src.math.scalblnf128
-    libc.src.math.scalbnf128
-    libc.src.math.setpayloadf128
-    libc.src.math.setpayloadsigf128
-    libc.src.math.sqrtf128
-    libc.src.math.totalorderf128
-    libc.src.math.totalordermagf128
-    libc.src.math.truncf128
-    libc.src.math.ufromfpf128
-    libc.src.math.ufromfpxf128
-  )
-endif()
-
-list(APPEND TARGET_LIBM_ENTRYPOINTS
-  # bfloat16 entrypoints
-  libc.src.math.bf16add
-  libc.src.math.bf16addf
-  libc.src.math.bf16addl
-  libc.src.math.bf16div
-  libc.src.math.bf16divf
-  libc.src.math.bf16divl
-  libc.src.math.bf16fma
-  libc.src.math.bf16fmaf
-  libc.src.math.bf16fmal
-  libc.src.math.bf16mul
-  libc.src.math.bf16mulf
-  libc.src.math.bf16mull
-  libc.src.math.bf16sub
-  libc.src.math.bf16subf
-  libc.src.math.bf16subl
-  libc.src.math.canonicalizebf16
-  libc.src.math.ceilbf16
-  libc.src.math.copysignbf16
-  libc.src.math.fabsbf16
-  libc.src.math.fdimbf16
-  libc.src.math.floorbf16
-  libc.src.math.fmaxbf16
-  libc.src.math.fmaximumbf16
-  libc.src.math.fmaximum_magbf16
-  libc.src.math.fmaximum_mag_numbf16
-  libc.src.math.fmaximum_numbf16
-  libc.src.math.fminbf16
-  libc.src.math.fminimumbf16
-  libc.src.math.fminimum_magbf16
-  libc.src.math.fminimum_mag_numbf16
-  libc.src.math.fminimum_numbf16
-  libc.src.math.fmodbf16
-  libc.src.math.frexpbf16
-  libc.src.math.fromfpbf16
-  libc.src.math.fromfpxbf16
-  libc.src.math.getpayloadbf16
-  libc.src.math.ilogbbf16
-  libc.src.math.iscanonicalbf16
-  libc.src.math.issignalingbf16
-  libc.src.math.ldexpbf16
-  libc.src.math.llogbbf16
-  libc.src.math.llrintbf16
-  libc.src.math.llroundbf16
-  libc.src.math.log_bf16
-  libc.src.math.logbbf16
-  libc.src.math.lrintbf16
-  libc.src.math.lroundbf16
-  libc.src.math.modfbf16
-  libc.src.math.nanbf16
-  libc.src.math.nearbyintbf16
-  libc.src.math.nextafterbf16
-  libc.src.math.nextdownbf16
-  libc.src.math.nexttowardbf16
-  libc.src.math.nextupbf16
-  libc.src.math.remainderbf16
-  libc.src.math.remquobf16
-  libc.src.math.rintbf16
-  libc.src.math.roundbf16
-  libc.src.math.roundevenbf16
-  libc.src.math.scalblnbf16
-  libc.src.math.scalbnbf16
-  libc.src.math.setpayloadbf16
-  libc.src.math.setpayloadsigbf16
-  libc.src.math.sqrtbf16
-  libc.src.math.truncbf16
-  libc.src.math.totalorderbf16
-  libc.src.math.totalordermagbf16
-  libc.src.math.ufromfpbf16
-  libc.src.math.ufromfpxbf16
-)
-
-if(LIBC_TYPES_HAS_FLOAT128)
-  list(APPEND TARGET_LIBM_ENTRYPOINTS
-    # math.h C++23 mixed bfloat16 and _Float128 entrypoints
-    libc.src.math.bf16addf128
-    libc.src.math.bf16divf128
-    libc.src.math.bf16fmaf128
-    libc.src.math.bf16mulf128
-    libc.src.math.bf16subf128
-  )
-endif()
-
-if(LIBC_COMPILER_HAS_FIXED_POINT)
-  list(APPEND TARGET_LIBM_ENTRYPOINTS
-    # stdfix.h _Fract and _Accum entrypoints
-    libc.src.stdfix.abshk
-    libc.src.stdfix.abshr
-    libc.src.stdfix.absk
-    libc.src.stdfix.abslk
-    libc.src.stdfix.abslr
-    libc.src.stdfix.absr
-    libc.src.stdfix.exphk
-    libc.src.stdfix.expk
-    libc.src.stdfix.roundhk
-    libc.src.stdfix.roundhr
-    libc.src.stdfix.roundk
-    libc.src.stdfix.roundlk
-    libc.src.stdfix.roundlr
-    libc.src.stdfix.roundr
-    libc.src.stdfix.rounduhk
-    libc.src.stdfix.rounduhr
-    libc.src.stdfix.rounduk
-    libc.src.stdfix.roundulk
-    libc.src.stdfix.roundulr
-    libc.src.stdfix.roundur
-    libc.src.stdfix.sqrtuhk
-    libc.src.stdfix.sqrtuhr
-    libc.src.stdfix.sqrtuk
-    libc.src.stdfix.sqrtur
-    # libc.src.stdfix.sqrtulk
-    libc.src.stdfix.sqrtulr
-    libc.src.stdfix.uhksqrtus
-    libc.src.stdfix.uksqrtui
-    libc.src.stdfix.hrbits
-    libc.src.stdfix.uhrbits
-    libc.src.stdfix.rbits
-    libc.src.stdfix.urbits
-    libc.src.stdfix.lrbits
-    libc.src.stdfix.ulrbits
-    libc.src.stdfix.hkbits
-    libc.src.stdfix.uhkbits
-    libc.src.stdfix.kbits
-    libc.src.stdfix.ukbits
-    libc.src.stdfix.lkbits
-    libc.src.stdfix.ulkbits
-    libc.src.stdfix.bitshr
-    libc.src.stdfix.bitsr
-    libc.src.stdfix.bitslr
-    libc.src.stdfix.bitshk
-    libc.src.stdfix.bitsk
-    libc.src.stdfix.bitslk
-    libc.src.stdfix.bitsuhr
-    libc.src.stdfix.bitsur
-    libc.src.stdfix.bitsulr
-    libc.src.stdfix.bitsuhk
-    libc.src.stdfix.bitsuk
-    libc.src.stdfix.bitsulk
-    libc.src.stdfix.countlshr
-    libc.src.stdfix.countlsr
-    libc.src.stdfix.countlslr
-    libc.src.stdfix.countlshk
-    libc.src.stdfix.countlsk
-    libc.src.stdfix.countlslk
-    libc.src.stdfix.countlsuhr
-    libc.src.stdfix.countlsur
-    libc.src.stdfix.countlsulr
-    libc.src.stdfix.countlsuhk
-    libc.src.stdfix.countlsuk
-    libc.src.stdfix.countlsulk
-    libc.src.stdfix.idivr
-    libc.src.stdfix.idivlr
-    libc.src.stdfix.idivk
-    libc.src.stdfix.idivlk
-    libc.src.stdfix.idivur
-    libc.src.stdfix.idivulr
-    libc.src.stdfix.idivuk
-    libc.src.stdfix.idivulk
-    libc.src.stdfix.rdivi
-  )
-endif()
-
-if(LLVM_LIBC_FULL_BUILD)
-  list(APPEND TARGET_LIBC_ENTRYPOINTS
-    # ctype.h entrypoints
-    libc.src.ctype.isalnum_l
-    libc.src.ctype.isalpha_l
-    libc.src.ctype.isblank_l
-    libc.src.ctype.iscntrl_l
-    libc.src.ctype.isdigit_l
-    libc.src.ctype.isgraph_l
-    libc.src.ctype.islower_l
-    libc.src.ctype.isprint_l
-    libc.src.ctype.ispunct_l
-    libc.src.ctype.isspace_l
-    libc.src.ctype.isupper_l
-    libc.src.ctype.isxdigit_l
-    libc.src.ctype.tolower_l
-    libc.src.ctype.toupper_l
-
-    # stdlib.h entrypoints
-    libc.src.stdlib.strtod_l
-    libc.src.stdlib.strtof_l
-    libc.src.stdlib.strtol_l
-    libc.src.stdlib.strtold_l
-    libc.src.stdlib.strtoll_l
-    libc.src.stdlib.strtoul_l
-    libc.src.stdlib.strtoull_l
-
-    # string.h entrypoints
-    libc.src.string.strcoll_l
-    libc.src.string.strxfrm_l
-
-    # strings.h entrypoints
-    libc.src.strings.strcasecmp_l
-    libc.src.strings.strncasecmp_l
-
-    # assert.h entrypoints
-    libc.src.assert.__assert_fail
-
-    # compiler entrypoints (no corresponding header)
-    libc.src.compiler.__stack_chk_fail
-
-    # dirent.h entrypoints
-    libc.src.dirent.closedir
-    libc.src.dirent.dirfd
-    libc.src.dirent.opendir
-    libc.src.dirent.readdir
-
-    # arpa/inet.h entrypoints
-    libc.src.arpa.inet.htonl
-    libc.src.arpa.inet.htons
-    libc.src.arpa.inet.inet_addr
-    libc.src.arpa.inet.inet_aton
-    libc.src.arpa.inet.ntohl
-    libc.src.arpa.inet.ntohs
-
-    # pthread.h entrypoints
-    libc.src.pthread.pthread_atfork
-    libc.src.pthread.pthread_attr_destroy
-    libc.src.pthread.pthread_attr_getdetachstate
-    libc.src.pthread.pthread_attr_getguardsize
-    libc.src.pthread.pthread_attr_getstack
-    libc.src.pthread.pthread_attr_getstacksize
-    libc.src.pthread.pthread_attr_init
-    libc.src.pthread.pthread_attr_setdetachstate
-    libc.src.pthread.pthread_attr_setguardsize
-    libc.src.pthread.pthread_attr_setstack
-    libc.src.pthread.pthread_attr_setstacksize
-    libc.src.pthread.pthread_condattr_destroy
-    libc.src.pthread.pthread_condattr_getclock
-    libc.src.pthread.pthread_condattr_getpshared
-    libc.src.pthread.pthread_condattr_init
-    libc.src.pthread.pthread_condattr_setclock
-    libc.src.pthread.pthread_condattr_setpshared
-    libc.src.pthread.pthread_create
-    libc.src.pthread.pthread_detach
-    libc.src.pthread.pthread_equal
-    libc.src.pthread.pthread_exit
-    libc.src.pthread.pthread_getname_np
-    libc.src.pthread.pthread_getspecific
-    libc.src.pthread.pthread_join
-    libc.src.pthread.pthread_key_create
-    libc.src.pthread.pthread_key_delete
-    libc.src.pthread.pthread_mutex_destroy
-    libc.src.pthread.pthread_mutex_init
-    libc.src.pthread.pthread_mutex_lock
-    libc.src.pthread.pthread_mutex_unlock
-    libc.src.pthread.pthread_mutexattr_destroy
-    libc.src.pthread.pthread_mutexattr_getpshared
-    libc.src.pthread.pthread_mutexattr_getrobust
-    libc.src.pthread.pthread_mutexattr_gettype
-    libc.src.pthread.pthread_mutexattr_init
-    libc.src.pthread.pthread_mutexattr_setpshared
-    libc.src.pthread.pthread_mutexattr_setrobust
-    libc.src.pthread.pthread_mutexattr_settype
-    libc.src.pthread.pthread_once
-    libc.src.pthread.pthread_rwlock_clockrdlock
-    libc.src.pthread.pthread_rwlock_clockwrlock
-    libc.src.pthread.pthread_rwlock_destroy
-    libc.src.pthread.pthread_rwlock_init
-    libc.src.pthread.pthread_rwlock_rdlock
-    libc.src.pthread.pthread_rwlock_timedrdlock
-    libc.src.pthread.pthread_rwlock_timedwrlock
-    libc.src.pthread.pthread_rwlock_tryrdlock
-    libc.src.pthread.pthread_rwlock_trywrlock
-    libc.src.pthread.pthread_rwlock_unlock
-    libc.src.pthread.pthread_rwlock_wrlock
-    libc.src.pthread.pthread_rwlockattr_destroy
-    libc.src.pthread.pthread_rwlockattr_getkind_np
-    libc.src.pthread.pthread_rwlockattr_getpshared
-    libc.src.pthread.pthread_rwlockattr_init
-    libc.src.pthread.pthread_rwlockattr_setkind_np
-    libc.src.pthread.pthread_rwlockattr_setpshared
-    libc.src.pthread.pthread_spin_destroy
-    libc.src.pthread.pthread_spin_init
-    libc.src.pthread.pthread_spin_lock
-    libc.src.pthread.pthread_spin_trylock
-    libc.src.pthread.pthread_spin_unlock
-    libc.src.pthread.pthread_self
-    libc.src.pthread.pthread_setname_np
-    libc.src.pthread.pthread_setspecific
-
-    # sched.h entrypoints
-    libc.src.sched.__sched_getcpucount
-    libc.src.sched.__sched_setcpuzero
-    libc.src.sched.__sched_setcpuset
-    libc.src.sched.__sched_getcpuisset
-
-    # setjmp.h entrypoints
-    libc.src.setjmp.longjmp
-    libc.src.setjmp.setjmp
-    libc.src.setjmp.siglongjmp
-    libc.src.setjmp.sigsetjmp
-
-    # stdio.h entrypoints
-    libc.src.stdio.clearerr
-    libc.src.stdio.clearerr_unlocked
-    libc.src.stdio.fclose
-    libc.src.stdio.fdopen
-    libc.src.stdio.feof
-    libc.src.stdio.feof_unlocked
-    libc.src.stdio.ferror
-    libc.src.stdio.ferror_unlocked
-    libc.src.stdio.fflush
-    libc.src.stdio.fgetc
-    libc.src.stdio.fgetc_unlocked
-    libc.src.stdio.fgets
-    libc.src.stdio.fileno
-    libc.src.stdio.flockfile
-    libc.src.stdio.fopen
-    libc.src.stdio.fopencookie
-    libc.src.stdio.fputc
-    libc.src.stdio.fputs
-    libc.src.stdio.fread
-    libc.src.stdio.fread_unlocked
-    libc.src.stdio.fseek
-    libc.src.stdio.fseeko
-    libc.src.stdio.ftell
-    libc.src.stdio.ftello
-    libc.src.stdio.funlockfile
-    libc.src.stdio.fwrite
-    libc.src.stdio.fwrite_unlocked
-    libc.src.stdio.getc
-    libc.src.stdio.getc_unlocked
-    libc.src.stdio.getchar
-    libc.src.stdio.getchar_unlocked
-    libc.src.stdio.perror
-    libc.src.stdio.putc
-    libc.src.stdio.putchar
-    libc.src.stdio.puts
-    libc.src.stdio.setbuf
-    libc.src.stdio.setvbuf
-    libc.src.stdio.stderr
-    libc.src.stdio.stdin
-    libc.src.stdio.stdout
-    libc.src.stdio.ungetc
-
-    # stdlib.h entrypoints
-    libc.src.stdlib._Exit
-    libc.src.stdlib.abort
-    libc.src.stdlib.at_quick_exit
-    libc.src.stdlib.atexit
-    libc.src.stdlib.exit
-    libc.src.stdlib.getenv
-    libc.src.stdlib.quick_exit
-
-    # signal.h entrypoints
-    libc.src.signal.kill
-    libc.src.signal.raise
-    libc.src.signal.sigaction
-    libc.src.signal.sigaddset
-    libc.src.signal.sigaltstack
-    libc.src.signal.sigdelset
-    libc.src.signal.sigemptyset
-    libc.src.signal.sigfillset
-    libc.src.signal.signal
-    libc.src.signal.sigprocmask
-
-    # spawn.h entrypoints
-    libc.src.spawn.posix_spawn
-    libc.src.spawn.posix_spawn_file_actions_addclose
-    libc.src.spawn.posix_spawn_file_actions_adddup2
-    libc.src.spawn.posix_spawn_file_actions_addopen
-    libc.src.spawn.posix_spawn_file_actions_destroy
-    libc.src.spawn.posix_spawn_file_actions_init
-
-    # search.h entrypoints
-    libc.src.search.hcreate
-    libc.src.search.hcreate_r
-    libc.src.search.hdestroy
-    libc.src.search.hdestroy_r
-    libc.src.search.hsearch
-    libc.src.search.hsearch_r
-    libc.src.search.insque
-    libc.src.search.lfind
-    libc.src.search.lsearch
-    libc.src.search.remque
-
-    # threads.h entrypoints
-    libc.src.threads.call_once
-    libc.src.threads.cnd_broadcast
-    libc.src.threads.cnd_destroy
-    libc.src.threads.cnd_init
-    libc.src.threads.cnd_signal
-    libc.src.threads.cnd_wait
-    libc.src.threads.mtx_destroy
-    libc.src.threads.mtx_init
-    libc.src.threads.mtx_lock
-    libc.src.threads.mtx_unlock
-    libc.src.threads.thrd_create
-    libc.src.threads.thrd_current
-    libc.src.threads.thrd_detach
-    libc.src.threads.thrd_equal
-    libc.src.threads.thrd_exit
-    libc.src.threads.thrd_join
-    libc.src.threads.tss_create
-    libc.src.threads.tss_delete
-    libc.src.threads.tss_get
-    libc.src.threads.tss_set
-
-    # time.h entrypoints
-    libc.src.time.asctime
-    libc.src.time.asctime_r
-    libc.src.time.ctime
-    libc.src.time.ctime_r
-    libc.src.time.clock
-    libc.src.time.clock_gettime
-    libc.src.time.clock_settime
-    libc.src.time.difftime
-    libc.src.time.gettimeofday
-    libc.src.time.gmtime
-    libc.src.time.gmtime_r
-    libc.src.time.mktime
-    libc.src.time.nanosleep
-    libc.src.time.strftime
-    libc.src.time.strftime_l
-    libc.src.time.time
-    libc.src.time.timespec_get
-
-    # locale.h entrypoints
-    libc.src.locale.localeconv
-    libc.src.locale.duplocale
-    libc.src.locale.freelocale
-    libc.src.locale.localeconv
-    libc.src.locale.newlocale
-    libc.src.locale.setlocale
-    libc.src.locale.uselocale
-
-    # unistd.h entrypoints
-    libc.src.unistd.__llvm_libc_syscall
-    libc.src.unistd._exit
-    libc.src.unistd.environ
-    libc.src.unistd.execv
-    libc.src.unistd.fork
-    libc.src.unistd.getopt
-    libc.src.unistd.optarg
-    libc.src.unistd.opterr
-    libc.src.unistd.optind
-    libc.src.unistd.optopt
-    libc.src.unistd.swab
-
-    # sys/select.h entrypoints
-    libc.src.sys.select.select
-
-    # sys/socket.h entrypoints
-    libc.src.sys.socket.bind
-    libc.src.sys.socket.socket
-    libc.src.sys.socket.socketpair
-    libc.src.sys.socket.send
-    libc.src.sys.socket.sendto
-    libc.src.sys.socket.sendmsg
-    libc.src.sys.socket.recv
-    libc.src.sys.socket.recvfrom
-    libc.src.sys.socket.recvmsg
-  )
-endif()
-
-set(TARGET_LLVMLIBC_ENTRYPOINTS
-  ${TARGET_LIBC_ENTRYPOINTS}
-  ${TARGET_LIBM_ENTRYPOINTS}
-)
+set(TARGET_LIBC_ENTRYPOINTS
+    # ctype.h entrypoints
+    libc.src.ctype.isalnum
+    libc.src.ctype.isalpha
+    libc.src.ctype.isascii
+    libc.src.ctype.isblank
+    libc.src.ctype.iscntrl
+    libc.src.ctype.isdigit
+    libc.src.ctype.isgraph
+    libc.src.ctype.islower
+    libc.src.ctype.isprint
+    libc.src.ctype.ispunct
+    libc.src.ctype.isspace
+    libc.src.ctype.isupper
+    libc.src.ctype.isxdigit
+    libc.src.ctype.toascii
+    libc.src.ctype.tolower
+    libc.src.ctype.toupper
+
+    # dlfcn.h entrypoints
+    libc.src.dlfcn.dlclose
+    libc.src.dlfcn.dlerror
+    libc.src.dlfcn.dlopen
+    libc.src.dlfcn.dlsym
+
+    # errno.h entrypoints
+    libc.src.errno.errno
+
+    # fcntl.h entrypoints
+    libc.src.fcntl.creat
+    libc.src.fcntl.fcntl
+    libc.src.fcntl.open
+    libc.src.fcntl.openat
+
+    # poll.h entrypoints
+    libc.src.poll.poll
+
+    # sched.h entrypoints
+    libc.src.sched.sched_get_priority_max
+    libc.src.sched.sched_get_priority_min
+    libc.src.sched.sched_getaffinity
+    libc.src.sched.sched_getparam
+    libc.src.sched.sched_getscheduler
+    libc.src.sched.sched_rr_get_interval
+    libc.src.sched.sched_setaffinity
+    libc.src.sched.sched_setparam
+    libc.src.sched.sched_setscheduler
+    libc.src.sched.sched_yield
+
+    # string.h entrypoints
+    libc.src.string.memccpy
+    libc.src.string.memchr
+    libc.src.string.memcmp
+    libc.src.string.memcpy
+    libc.src.string.memmem
+    libc.src.string.memmove
+    libc.src.string.mempcpy
+    libc.src.string.memrchr
+    libc.src.string.memset
+    libc.src.string.memset_explicit
+    libc.src.string.stpcpy
+    libc.src.string.stpncpy
+    libc.src.string.strcasestr
+    libc.src.string.strcat
+    libc.src.string.strchr
+    libc.src.string.strchrnul
+    libc.src.string.strcmp
+    libc.src.string.strcoll
+    libc.src.string.strcpy
+    libc.src.string.strcspn
+    libc.src.string.strdup
+    libc.src.string.strerror
+    libc.src.string.strerror_r
+    libc.src.string.strlcat
+    libc.src.string.strlcpy
+    libc.src.string.strlen
+    libc.src.string.strncat
+    libc.src.string.strncmp
+    libc.src.string.strncpy
+    libc.src.string.strndup
+    libc.src.string.strnlen
+    libc.src.string.strpbrk
+    libc.src.string.strrchr
+    libc.src.string.strsep
+    libc.src.string.strsignal
+    libc.src.string.strspn
+    libc.src.string.strstr
+    libc.src.string.strtok
+    libc.src.string.strtok_r
+    libc.src.string.strxfrm
+
+    # strings.h entrypoints
+    libc.src.strings.bcmp
+    libc.src.strings.bcopy
+    libc.src.strings.bzero
+    libc.src.strings.ffs
+    libc.src.strings.ffsl
+    libc.src.strings.ffsll
+    libc.src.strings.index
+    libc.src.strings.rindex
+    libc.src.strings.strcasecmp
+    libc.src.strings.strncasecmp
+
+    # inttypes.h entrypoints
+    libc.src.inttypes.imaxabs
+    libc.src.inttypes.imaxdiv
+    libc.src.inttypes.strtoimax
+    libc.src.inttypes.strtoumax
+
+    # stdbit.h entrypoints
+    libc.src.stdbit.stdc_bit_ceil_uc
+    libc.src.stdbit.stdc_bit_ceil_ui
+    libc.src.stdbit.stdc_bit_ceil_ul
+    libc.src.stdbit.stdc_bit_ceil_ull
+    libc.src.stdbit.stdc_bit_ceil_us
+    libc.src.stdbit.stdc_bit_floor_uc
+    libc.src.stdbit.stdc_bit_floor_ui
+    libc.src.stdbit.stdc_bit_floor_ul
+    libc.src.stdbit.stdc_bit_floor_ull
+    libc.src.stdbit.stdc_bit_floor_us
+    libc.src.stdbit.stdc_bit_width_uc
+    libc.src.stdbit.stdc_bit_width_ui
+    libc.src.stdbit.stdc_bit_width_ul
+    libc.src.stdbit.stdc_bit_width_ull
+    libc.src.stdbit.stdc_bit_width_us
+    libc.src.stdbit.stdc_count_ones_uc
+    libc.src.stdbit.stdc_count_ones_ui
+    libc.src.stdbit.stdc_count_ones_ul
+    libc.src.stdbit.stdc_count_ones_ull
+    libc.src.stdbit.stdc_count_ones_us
+    libc.src.stdbit.stdc_count_zeros_uc
+    libc.src.stdbit.stdc_count_zeros_ui
+    libc.src.stdbit.stdc_count_zeros_ul
+    libc.src.stdbit.stdc_count_zeros_ull
+    libc.src.stdbit.stdc_count_zeros_us
+    libc.src.stdbit.stdc_first_leading_one_uc
+    libc.src.stdbit.stdc_first_leading_one_ui
+    libc.src.stdbit.stdc_first_leading_one_ul
+    libc.src.stdbit.stdc_first_leading_one_ull
+    libc.src.stdbit.stdc_first_leading_one_us
+    libc.src.stdbit.stdc_first_leading_zero_uc
+    libc.src.stdbit.stdc_first_leading_zero_ui
+    libc.src.stdbit.stdc_first_leading_zero_ul
+    libc.src.stdbit.stdc_first_leading_zero_ull
+    libc.src.stdbit.stdc_first_leading_zero_us
+    libc.src.stdbit.stdc_first_trailing_one_uc
+    libc.src.stdbit.stdc_first_trailing_one_ui
+    libc.src.stdbit.stdc_first_trailing_one_ul
+    libc.src.stdbit.stdc_first_trailing_one_ull
+    libc.src.stdbit.stdc_first_trailing_one_us
+    libc.src.stdbit.stdc_first_trailing_zero_uc
+    libc.src.stdbit.stdc_first_trailing_zero_ui
+    libc.src.stdbit.stdc_first_trailing_zero_ul
+    libc.src.stdbit.stdc_first_trailing_zero_ull
+    libc.src.stdbit.stdc_first_trailing_zero_us
+    libc.src.stdbit.stdc_has_single_bit_uc
+    libc.src.stdbit.stdc_has_single_bit_ui
+    libc.src.stdbit.stdc_has_single_bit_ul
+    libc.src.stdbit.stdc_has_single_bit_ull
+    libc.src.stdbit.stdc_has_single_bit_us
+    libc.src.stdbit.stdc_leading_ones_uc
+    libc.src.stdbit.stdc_leading_ones_ui
+    libc.src.stdbit.stdc_leading_ones_ul
+    libc.src.stdbit.stdc_leading_ones_ull
+    libc.src.stdbit.stdc_leading_ones_us
+    libc.src.stdbit.stdc_leading_zeros_uc
+    libc.src.stdbit.stdc_leading_zeros_ui
+    libc.src.stdbit.stdc_leading_zeros_ul
+    libc.src.stdbit.stdc_leading_zeros_ull
+    libc.src.stdbit.stdc_leading_zeros_us
+    libc.src.stdbit.stdc_trailing_ones_uc
+    libc.src.stdbit.stdc_trailing_ones_ui
+    libc.src.stdbit.stdc_trailing_ones_ul
+    libc.src.stdbit.stdc_trailing_ones_ull
+    libc.src.stdbit.stdc_trailing_ones_us
+    libc.src.stdbit.stdc_trailing_zeros_uc
+    libc.src.stdbit.stdc_trailing_zeros_ui
+    libc.src.stdbit.stdc_trailing_zeros_ul
+    libc.src.stdbit.stdc_trailing_zeros_ull
+    libc.src.stdbit.stdc_trailing_zeros_us
+
+    # stdlib.h entrypoints
+    libc.src.stdlib.a64l
+    libc.src.stdlib.abs
+    libc.src.stdlib.atof
+    libc.src.stdlib.atoi
+    libc.src.stdlib.atol
+    libc.src.stdlib.atoll
+    libc.src.stdlib.bsearch
+    libc.src.stdlib.div
+    libc.src.stdlib.l64a
+    libc.src.stdlib.labs
+    libc.src.stdlib.ldiv
+    libc.src.stdlib.llabs
+    libc.src.stdlib.lldiv
+    libc.src.stdlib.memalignment
+    libc.src.stdlib.qsort
+    libc.src.stdlib.qsort_r
+    libc.src.stdlib.rand
+    libc.src.stdlib.srand
+    libc.src.stdlib.strfromd
+    libc.src.stdlib.strfromf
+    libc.src.stdlib.strfroml
+    libc.src.stdlib.strtod
+    libc.src.stdlib.strtof
+    libc.src.stdlib.strtol
+    libc.src.stdlib.strtold
+    libc.src.stdlib.strtoll
+    libc.src.stdlib.strtoul
+    libc.src.stdlib.strtoull
+
+    # stdlib.h external entrypoints
+    libc.src.stdlib.aligned_alloc
+    libc.src.stdlib.calloc
+    libc.src.stdlib.free
+    libc.src.stdlib.malloc
+    libc.src.stdlib.realloc
+
+    # stdio.h entrypoints
+    libc.src.stdio.fprintf
+    libc.src.stdio.fscanf
+    libc.src.stdio.vfscanf
+    libc.src.stdio.printf
+    libc.src.stdio.remove
+    libc.src.stdio.rename
+    libc.src.stdio.scanf
+    libc.src.stdio.vscanf
+    libc.src.stdio.snprintf
+    libc.src.stdio.sprintf
+    libc.src.stdio.asprintf
+    libc.src.stdio.sscanf
+    libc.src.stdio.vsscanf
+    libc.src.stdio.vfprintf
+    libc.src.stdio.vprintf
+    libc.src.stdio.vsnprintf
+    libc.src.stdio.vsprintf
+    libc.src.stdio.vasprintf
+
+    # sys/epoll.h entrypoints
+    libc.src.sys.epoll.epoll_create
+    libc.src.sys.epoll.epoll_create1
+    libc.src.sys.epoll.epoll_ctl
+    libc.src.sys.epoll.epoll_pwait
+    libc.src.sys.epoll.epoll_wait
+    # TODO: Need to check if pwait2 is available before providing.
+    # https://github.com/llvm/llvm-project/issues/80060
+    # libc.src.sys.epoll.epoll_pwait2
+
+    # sys/ioctl.h entrypoints
+    libc.src.sys.ioctl.ioctl
+
+    # sys/mman.h entrypoints
+    libc.src.sys.mman.madvise
+    libc.src.sys.mman.mincore
+    libc.src.sys.mman.mlock
+    libc.src.sys.mman.mlock2
+    libc.src.sys.mman.mlockall
+    libc.src.sys.mman.mmap
+    libc.src.sys.mman.mremap
+    libc.src.sys.mman.mprotect
+    libc.src.sys.mman.msync
+    libc.src.sys.mman.munlock
+    libc.src.sys.mman.munlockall
+    libc.src.sys.mman.munmap
+    libc.src.sys.mman.remap_file_pages
+    libc.src.sys.mman.posix_madvise
+    libc.src.sys.mman.shm_open
+    libc.src.sys.mman.shm_unlink
+
+    # sys/random.h entrypoints
+    libc.src.sys.random.getrandom
+
+    # sys/resource.h entrypoints
+    libc.src.sys.resource.getrlimit
+    libc.src.sys.resource.setrlimit
+
+    # sys/sendfile entrypoints
+    libc.src.sys.sendfile.sendfile
+
+    # sys/stat.h entrypoints
+    libc.src.sys.stat.chmod
+    libc.src.sys.stat.fchmod
+    libc.src.sys.stat.fchmodat
+    libc.src.sys.stat.fstat
+    libc.src.sys.stat.lstat
+    libc.src.sys.stat.mkdir
+    libc.src.sys.stat.mkdirat
+    libc.src.sys.stat.stat
+
+    # sys/statvfs.h
+    libc.src.sys.statvfs.fstatvfs
+    libc.src.sys.statvfs.statvfs
+
+    # sys/utimes.h entrypoints
+    libc.src.sys.time.utimes
+
+    # sys/utsname.h entrypoints
+    libc.src.sys.utsname.uname
+
+    # sys/wait.h entrypoints
+    libc.src.sys.wait.wait
+    libc.src.sys.wait.wait4
+    libc.src.sys.wait.waitpid
+
+    # sys/prctl.h entrypoints
+    libc.src.sys.prctl.prctl
+
+    # sys/auxv.h entrypoints
+    libc.src.sys.auxv.getauxval
+
+    # termios.h entrypoints
+    libc.src.termios.cfgetispeed
+    libc.src.termios.cfgetospeed
+    libc.src.termios.cfsetispeed
+    libc.src.termios.cfsetospeed
+    libc.src.termios.tcdrain
+    libc.src.termios.tcflow
+    libc.src.termios.tcflush
+    libc.src.termios.tcgetattr
+    libc.src.termios.tcgetsid
+    libc.src.termios.tcsendbreak
+    libc.src.termios.tcsetattr
+
+    # unistd.h entrypoints
+    libc.src.unistd.access
+    libc.src.unistd.chdir
+    libc.src.unistd.close
+    libc.src.unistd.dup
+    libc.src.unistd.dup2
+    libc.src.unistd.dup3
+    libc.src.unistd.execve
+    libc.src.unistd.faccessat
+    libc.src.unistd.fchdir
+    libc.src.unistd.fpathconf
+    libc.src.unistd.fsync
+    libc.src.unistd.ftruncate
+    libc.src.unistd.getcwd
+    libc.src.unistd.getentropy
+    libc.src.unistd.geteuid
+    libc.src.unistd.gethostname
+    libc.src.unistd.getpagesize
+    libc.src.unistd.getpid
+    libc.src.unistd.getppid
+    libc.src.unistd.getsid
+    libc.src.unistd.gettid
+    libc.src.unistd.getuid
+    libc.src.unistd.isatty
+    libc.src.unistd.link
+    libc.src.unistd.linkat
+    libc.src.unistd.lseek
+    libc.src.unistd.pathconf
+    libc.src.unistd.pipe
+    libc.src.unistd.pipe2
+    libc.src.unistd.pread
+    libc.src.unistd.pwrite
+    libc.src.unistd.read
+    libc.src.unistd.readlink
+    libc.src.unistd.readlinkat
+    libc.src.unistd.rmdir
+    libc.src.unistd.setsid
+    libc.src.unistd.symlink
+    libc.src.unistd.symlinkat
+    libc.src.unistd.sysconf
+    libc.src.unistd.truncate
+    libc.src.unistd.unlink
+    libc.src.unistd.unlinkat
+    libc.src.unistd.write
+
+    # wchar.h entrypoints
+    libc.src.wchar.btowc
+    libc.src.wchar.wcslen
+    libc.src.wchar.wctob
+
+    # wctype.h entrypoints
+    libc.src.wctype.iswalpha
+
+    # sys/uio.h entrypoints
+    libc.src.sys.uio.writev
+    libc.src.sys.uio.readv
+
+    # sys/time.h entrypoints
+    libc.src.sys.time.setitimer
+    libc.src.sys.time.getitimer
+)
+
+if(LLVM_LIBC_INCLUDE_SCUDO)
+  list(APPEND TARGET_LIBC_ENTRYPOINTS
+    # malloc.h external entrypoints
+    libc.src.stdlib.mallopt
+  )
+endif()
+
+set(TARGET_LIBM_ENTRYPOINTS
+    # complex.h entrypoints
+    libc.src.complex.creal
+    libc.src.complex.crealf
+    libc.src.complex.creall
+    libc.src.complex.cimag
+    libc.src.complex.cimagf
+    libc.src.complex.cimagl
+    libc.src.complex.conj
+    libc.src.complex.conjf
+    libc.src.complex.conjl
+    libc.src.complex.cproj
+    libc.src.complex.cprojf
+    libc.src.complex.cprojl
+
+    # fenv.h entrypoints
+    libc.src.fenv.feclearexcept
+    libc.src.fenv.fedisableexcept
+    libc.src.fenv.feenableexcept
+    libc.src.fenv.fegetenv
+    libc.src.fenv.fegetexcept
+    libc.src.fenv.fegetexceptflag
+    libc.src.fenv.fegetround
+    libc.src.fenv.feholdexcept
+    libc.src.fenv.feraiseexcept
+    libc.src.fenv.fesetenv
+    libc.src.fenv.fesetexcept
+    libc.src.fenv.fesetexceptflag
+    libc.src.fenv.fesetround
+    libc.src.fenv.fetestexcept
+    libc.src.fenv.fetestexceptflag
+    libc.src.fenv.feupdateenv
+
+    # math.h entrypoints
+    libc.src.math.acos
+    libc.src.math.acosf
+    libc.src.math.acoshf
+    libc.src.math.asin
+    libc.src.math.asinf
+    libc.src.math.asinhf
+    libc.src.math.atan2
+    libc.src.math.atan2f
+    libc.src.math.atan
+    libc.src.math.atanf
+    libc.src.math.atanhf
+    libc.src.math.canonicalize
+    libc.src.math.canonicalizef
+    libc.src.math.canonicalizel
+    libc.src.math.cbrt
+    libc.src.math.cbrtf
+    libc.src.math.ceil
+    libc.src.math.ceilf
+    libc.src.math.ceill
+    libc.src.math.copysign
+    libc.src.math.copysignf
+    libc.src.math.copysignl
+    libc.src.math.cos
+    libc.src.math.cosf
+    libc.src.math.coshf
+    libc.src.math.cospif
+    libc.src.math.daddl
+    libc.src.math.ddivl
+    libc.src.math.dfmal
+    libc.src.math.dmull
+    libc.src.math.dsqrtl
+    libc.src.math.dsubl
+    libc.src.math.erff
+    libc.src.math.exp
+    libc.src.math.exp10
+    libc.src.math.exp10f
+    libc.src.math.exp10m1f
+    libc.src.math.exp2
+    libc.src.math.exp2f
+    libc.src.math.exp2m1f
+    libc.src.math.expf
+    libc.src.math.expm1
+    libc.src.math.expm1f
+    libc.src.math.fabs
+    libc.src.math.fabsf
+    libc.src.math.fabsl
+    libc.src.math.fadd
+    libc.src.math.faddl
+    libc.src.math.fadd
+    libc.src.math.fdim
+    libc.src.math.fdimf
+    libc.src.math.fdiml
+    libc.src.math.fdiv
+    libc.src.math.fdivl
+    libc.src.math.ffma
+    libc.src.math.ffmal
+    libc.src.math.floor
+    libc.src.math.floorf
+    libc.src.math.floorl
+    libc.src.math.fma
+    libc.src.math.fmabf16
+    libc.src.math.fmaf
+    libc.src.math.fmax
+    libc.src.math.fmaxf
+    libc.src.math.fmaximum
+    libc.src.math.fmaximum_mag
+    libc.src.math.fmaximum_mag_num
+    libc.src.math.fmaximum_mag_numf
+    libc.src.math.fmaximum_mag_numl
+    libc.src.math.fmaximum_magf
+    libc.src.math.fmaximum_magl
+    libc.src.math.fmaximum_num
+    libc.src.math.fmaximum_numf
+    libc.src.math.fmaximum_numl
+    libc.src.math.fmaximumf
+    libc.src.math.fmaximuml
+    libc.src.math.fmaxl
+    libc.src.math.fmin
+    libc.src.math.fminf
+    libc.src.math.fminimum
+    libc.src.math.fminimum_mag
+    libc.src.math.fminimum_mag_num
+    libc.src.math.fminimum_mag_numf
+    libc.src.math.fminimum_mag_numl
+    libc.src.math.fminimum_magf
+    libc.src.math.fminimum_magl
+    libc.src.math.fminimum_num
+    libc.src.math.fminimum_numf
+    libc.src.math.fminimum_numl
+    libc.src.math.fminimumf
+    libc.src.math.fminimuml
+    libc.src.math.fminl
+    libc.src.math.fmod
+    libc.src.math.fmodf
+    libc.src.math.fmodl
+    libc.src.math.fmul
+    libc.src.math.fmull
+    libc.src.math.frexp
+    libc.src.math.frexpf
+    libc.src.math.frexpl
+    libc.src.math.fromfp
+    libc.src.math.fromfpf
+    libc.src.math.fromfpl
+    libc.src.math.fromfpx
+    libc.src.math.fromfpxf
+    libc.src.math.fromfpxl
+    libc.src.math.fsqrt
+    libc.src.math.fsqrtl
+    libc.src.math.fsub
+    libc.src.math.fsubl
+    libc.src.math.getpayload
+    libc.src.math.getpayloadf
+    libc.src.math.getpayloadl
+    libc.src.math.hypot
+    libc.src.math.hypotf
+    libc.src.math.ilogb
+    libc.src.math.ilogbf
+    libc.src.math.ilogbl
+    libc.src.math.iscanonical
+    libc.src.math.iscanonicalf
+    libc.src.math.iscanonicall
+    libc.src.math.isnan
+    libc.src.math.isnanf
+    libc.src.math.isnanl
+    libc.src.math.issignaling
+    libc.src.math.issignalingf
+    libc.src.math.issignalingl
+    libc.src.math.ldexp
+    libc.src.math.ldexpf
+    libc.src.math.ldexpl
+    libc.src.math.llogb
+    libc.src.math.llogbf
+    libc.src.math.llogbl
+    libc.src.math.llrint
+    libc.src.math.llrintf
+    libc.src.math.llrintl
+    libc.src.math.llround
+    libc.src.math.llroundf
+    libc.src.math.llroundl
+    libc.src.math.log
+    libc.src.math.log10
+    libc.src.math.log10f
+    libc.src.math.log1p
+    libc.src.math.log1pf
+    libc.src.math.log2
+    libc.src.math.log2f
+    libc.src.math.logb
+    libc.src.math.logbf
+    libc.src.math.logbl
+    libc.src.math.logf
+    libc.src.math.lrint
+    libc.src.math.lrintf
+    libc.src.math.lrintl
+    libc.src.math.lround
+    libc.src.math.lroundf
+    libc.src.math.lroundl
+    libc.src.math.modf
+    libc.src.math.modff
+    libc.src.math.modfl
+    libc.src.math.nan
+    libc.src.math.nanf
+    libc.src.math.nanl
+    libc.src.math.nearbyint
+    libc.src.math.nearbyintf
+    libc.src.math.nearbyintl
+    libc.src.math.nextafter
+    libc.src.math.nextafterf
+    libc.src.math.nextafterl
+    libc.src.math.nextdown
+    libc.src.math.nextdownf
+    libc.src.math.nextdownl
+    libc.src.math.nexttoward
+    libc.src.math.nexttowardf
+    libc.src.math.nexttowardl
+    libc.src.math.nextup
+    libc.src.math.nextupf
+    libc.src.math.nextupl
+    libc.src.math.pow
+    libc.src.math.powf
+    libc.src.math.remainder
+    libc.src.math.remainderf
+    libc.src.math.remainderl
+    libc.src.math.remquo
+    libc.src.math.remquof
+    libc.src.math.remquol
+    libc.src.math.rint
+    libc.src.math.rintf
+    libc.src.math.rintl
+    libc.src.math.round
+    libc.src.math.roundeven
+    libc.src.math.roundevenf
+    libc.src.math.roundevenl
+    libc.src.math.roundf
+    libc.src.math.roundl
+    libc.src.math.scalbln
+    libc.src.math.scalblnf
+    libc.src.math.scalblnl
+    libc.src.math.scalbn
+    libc.src.math.scalbnf
+    libc.src.math.scalbnl
+    libc.src.math.setpayload
+    libc.src.math.setpayloadf
+    libc.src.math.setpayloadl
+    libc.src.math.setpayloadsig
+    libc.src.math.setpayloadsigf
+    libc.src.math.setpayloadsigl
+    libc.src.math.sin
+    libc.src.math.sincos
+    libc.src.math.sincosf
+    libc.src.math.sinf
+    libc.src.math.sinhf
+    libc.src.math.sinpif
+    libc.src.math.sqrt
+    libc.src.math.sqrtf
+    libc.src.math.sqrtl
+    libc.src.math.tan
+    libc.src.math.tanf
+    libc.src.math.tanhf
+    libc.src.math.tanpif
+    libc.src.math.totalorder
+    libc.src.math.totalorderf
+    libc.src.math.totalorderl
+    libc.src.math.totalordermag
+    libc.src.math.totalordermagf
+    libc.src.math.totalordermagl
+    libc.src.math.trunc
+    libc.src.math.truncf
+    libc.src.math.truncl
+    libc.src.math.ufromfp
+    libc.src.math.ufromfpf
+    libc.src.math.ufromfpl
+    libc.src.math.ufromfpx
+    libc.src.math.ufromfpxf
+    libc.src.math.ufromfpxl
+)
+if(LIBC_TYPES_HAS_CFLOAT16)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # complex.h C23 _Complex _Float16 entrypoints
+    libc.src.complex.crealf16
+    libc.src.complex.cimagf16
+    libc.src.complex.conjf16
+    libc.src.complex.cprojf16
+  )
+endif()
+
+if(LIBC_TYPES_HAS_FLOAT16)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # math.h C23 _Float16 entrypoints
+    libc.src.math.acosf16
+    libc.src.math.acoshf16
+    libc.src.math.acospif16
+    libc.src.math.asinf16
+    libc.src.math.asinhf16
+    libc.src.math.atanhf16
+    libc.src.math.canonicalizef16
+    libc.src.math.ceilf16
+    libc.src.math.copysignf16
+    libc.src.math.cosf16
+    libc.src.math.coshf16
+    libc.src.math.cospif16
+    libc.src.math.exp10f16
+    libc.src.math.exp10m1f16
+    libc.src.math.exp2f16
+    libc.src.math.exp2m1f16
+    libc.src.math.expf16
+    libc.src.math.expm1f16
+    libc.src.math.f16add
+    libc.src.math.f16addf
+    libc.src.math.f16addl
+    libc.src.math.f16div
+    libc.src.math.f16divf
+    libc.src.math.f16divl
+    libc.src.math.f16fma
+    libc.src.math.f16fmaf
+    libc.src.math.f16fmal
+    libc.src.math.f16mul
+    libc.src.math.f16mulf
+    libc.src.math.f16mull
+    libc.src.math.f16sqrt
+    libc.src.math.f16sqrtf
+    libc.src.math.f16sqrtl
+    libc.src.math.f16sub
+    libc.src.math.f16subf
+    libc.src.math.f16subl
+    libc.src.math.fabsf16
+    libc.src.math.fdimf16
+    libc.src.math.floorf16
+    libc.src.math.fmaf16
+    libc.src.math.fmaxf16
+    libc.src.math.fmaximum_mag_numf16
+    libc.src.math.fmaximum_magf16
+    libc.src.math.fmaximum_numf16
+    libc.src.math.fmaximumf16
+    libc.src.math.fminf16
+    libc.src.math.fminimum_mag_numf16
+    libc.src.math.fminimum_magf16
+    libc.src.math.fminimum_numf16
+    libc.src.math.fminimumf16
+    libc.src.math.fmodf16
+    libc.src.math.frexpf16
+    libc.src.math.fromfpf16
+    libc.src.math.fromfpxf16
+    libc.src.math.getpayloadf16
+    libc.src.math.hypotf16
+    libc.src.math.ilogbf16
+    libc.src.math.iscanonicalf16
+    libc.src.math.issignalingf16
+    libc.src.math.ldexpf16
+    libc.src.math.llogbf16
+    libc.src.math.llrintf16
+    libc.src.math.llroundf16
+    libc.src.math.log10f16
+    libc.src.math.log2f16
+    libc.src.math.logbf16
+    libc.src.math.logf16
+    libc.src.math.lrintf16
+    libc.src.math.lroundf16
+    libc.src.math.modff16
+    libc.src.math.nanf16
+    libc.src.math.nearbyintf16
+    libc.src.math.nextafterf16
+    libc.src.math.nextdownf16
+    libc.src.math.nexttowardf16
+    libc.src.math.nextupf16
+    libc.src.math.remainderf16
+    libc.src.math.remquof16
+    libc.src.math.rintf16
+    libc.src.math.roundevenf16
+    libc.src.math.roundf16
+    libc.src.math.rsqrtf
+    libc.src.math.rsqrtf16
+    libc.src.math.scalblnf16
+    libc.src.math.scalbnf16
+    libc.src.math.setpayloadf16
+    libc.src.math.setpayloadsigf16
+    libc.src.math.sinf16
+    libc.src.math.sinhf16
+    libc.src.math.sinpif16
+    libc.src.math.sqrtf16
+    libc.src.math.tanf16
+    libc.src.math.tanhf16
+    libc.src.math.tanpif16
+    libc.src.math.totalorderf16
+    libc.src.math.totalordermagf16
+    libc.src.math.truncf16
+    libc.src.math.ufromfpf16
+    libc.src.math.ufromfpxf16
+  )
+
+  if(LIBC_TYPES_HAS_FLOAT128)
+    list(APPEND TARGET_LIBM_ENTRYPOINTS
+      # math.h C23 mixed _Float16 and _Float128 entrypoints
+      libc.src.math.f16addf128
+      libc.src.math.f16divf128
+      libc.src.math.f16fmaf128
+      libc.src.math.f16mulf128
+      libc.src.math.f16sqrtf128
+      libc.src.math.f16subf128
+    )
+  endif()
+endif()
+
+if(LIBC_TYPES_HAS_CFLOAT128)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # complex.h C23 _Complex _Float128 entrypoints
+    libc.src.complex.crealf128
+    libc.src.complex.cimagf128
+    libc.src.complex.conjf128
+    libc.src.complex.cprojf128
+  )
+endif()
+
+if(LIBC_TYPES_HAS_FLOAT128)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # math.h C23 _Float128 entrypoints
+    libc.src.math.atan2f128
+    libc.src.math.canonicalizef128
+    libc.src.math.ceilf128
+    libc.src.math.copysignf128
+    libc.src.math.daddf128
+    libc.src.math.ddivf128
+    libc.src.math.dfmaf128
+    libc.src.math.dmulf128
+    libc.src.math.dsqrtf128
+    libc.src.math.dsubf128
+    libc.src.math.fabsf128
+    libc.src.math.faddf128
+    libc.src.math.fdimf128
+    libc.src.math.fdivf128
+    libc.src.math.ffmaf128
+    libc.src.math.floorf128
+    libc.src.math.fmaxf128
+    libc.src.math.fmaximum_mag_numf128
+    libc.src.math.fmaximum_magf128
+    libc.src.math.fmaximum_numf128
+    libc.src.math.fmaximumf128
+    libc.src.math.fminf128
+    libc.src.math.fminimum_mag_numf128
+    libc.src.math.fminimum_magf128
+    libc.src.math.fminimum_numf128
+    libc.src.math.fminimumf128
+    libc.src.math.fmodf128
+    libc.src.math.fmulf128
+    libc.src.math.frexpf128
+    libc.src.math.fromfpf128
+    libc.src.math.fromfpxf128
+    libc.src.math.fsqrtf128
+    libc.src.math.fsubf128
+    libc.src.math.getpayloadf128
+    libc.src.math.ilogbf128
+    libc.src.math.iscanonicalf128
+    libc.src.math.issignalingf128
+    libc.src.math.ldexpf128
+    libc.src.math.llogbf128
+    libc.src.math.llrintf128
+    libc.src.math.llroundf128
+    libc.src.math.logbf128
+    libc.src.math.lrintf128
+    libc.src.math.lroundf128
+    libc.src.math.modff128
+    libc.src.math.nanf128
+    libc.src.math.nearbyintf128
+    libc.src.math.nextafterf128
+    libc.src.math.nextdownf128
+    libc.src.math.nextupf128
+    libc.src.math.remainderf128
+    libc.src.math.remquof128
+    libc.src.math.rintf128
+    libc.src.math.roundevenf128
+    libc.src.math.roundf128
+    libc.src.math.scalblnf128
+    libc.src.math.scalbnf128
+    libc.src.math.setpayloadf128
+    libc.src.math.setpayloadsigf128
+    libc.src.math.sqrtf128
+    libc.src.math.totalorderf128
+    libc.src.math.totalordermagf128
+    libc.src.math.truncf128
+    libc.src.math.ufromfpf128
+    libc.src.math.ufromfpxf128
+  )
+endif()
+
+list(APPEND TARGET_LIBM_ENTRYPOINTS
+  # bfloat16 entrypoints
+  libc.src.math.bf16add
+  libc.src.math.bf16addf
+  libc.src.math.bf16addl
+  libc.src.math.bf16div
+  libc.src.math.bf16divf
+  libc.src.math.bf16divl
+  libc.src.math.bf16fma
+  libc.src.math.bf16fmaf
+  libc.src.math.bf16fmal
+  libc.src.math.bf16mul
+  libc.src.math.bf16mulf
+  libc.src.math.bf16mull
+  libc.src.math.bf16sub
+  libc.src.math.bf16subf
+  libc.src.math.bf16subl
+  libc.src.math.canonicalizebf16
+  libc.src.math.ceilbf16
+  libc.src.math.copysignbf16
+  libc.src.math.fabsbf16
+  libc.src.math.fdimbf16
+  libc.src.math.floorbf16
+  libc.src.math.fmaxbf16
+  libc.src.math.fmaximumbf16
+  libc.src.math.fmaximum_magbf16
+  libc.src.math.fmaximum_mag_numbf16
+  libc.src.math.fmaximum_numbf16
+  libc.src.math.fminbf16
+  libc.src.math.fminimumbf16
+  libc.src.math.fminimum_magbf16
+  libc.src.math.fminimum_mag_numbf16
+  libc.src.math.fminimum_numbf16
+  libc.src.math.fmodbf16
+  libc.src.math.frexpbf16
+  libc.src.math.fromfpbf16
+  libc.src.math.fromfpxbf16
+  libc.src.math.getpayloadbf16
+  libc.src.math.ilogbbf16
+  libc.src.math.iscanonicalbf16
+  libc.src.math.issignalingbf16
+  libc.src.math.ldexpbf16
+  libc.src.math.llogbbf16
+  libc.src.math.llrintbf16
+  libc.src.math.llroundbf16
+  libc.src.math.log_bf16
+  libc.src.math.logbbf16
+  libc.src.math.lrintbf16
+  libc.src.math.lroundbf16
+  libc.src.math.modfbf16
+  libc.src.math.nanbf16
+  libc.src.math.nearbyintbf16
+  libc.src.math.nextafterbf16
+  libc.src.math.nextdownbf16
+  libc.src.math.nexttowardbf16
+  libc.src.math.nextupbf16
+  libc.src.math.remainderbf16
+  libc.src.math.remquobf16
+  libc.src.math.rintbf16
+  libc.src.math.roundbf16
+  libc.src.math.roundevenbf16
+  libc.src.math.scalblnbf16
+  libc.src.math.scalbnbf16
+  libc.src.math.setpayloadbf16
+  libc.src.math.setpayloadsigbf16
+  libc.src.math.sqrtbf16
+  libc.src.math.truncbf16
+  libc.src.math.totalorderbf16
+  libc.src.math.totalordermagbf16
+  libc.src.math.ufromfpbf16
+  libc.src.math.ufromfpxbf16
+)
+
+if(LIBC_TYPES_HAS_FLOAT128)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # math.h C++23 mixed bfloat16 and _Float128 entrypoints
+    libc.src.math.bf16addf128
+    libc.src.math.bf16divf128
+    libc.src.math.bf16fmaf128
+    libc.src.math.bf16mulf128
+    libc.src.math.bf16subf128
+  )
+endif()
+
+if(LIBC_COMPILER_HAS_FIXED_POINT)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # stdfix.h _Fract and _Accum entrypoints
+    libc.src.stdfix.abshk
+    libc.src.stdfix.abshr
+    libc.src.stdfix.absk
+    libc.src.stdfix.abslk
+    libc.src.stdfix.abslr
+    libc.src.stdfix.absr
+    libc.src.stdfix.exphk
+    libc.src.stdfix.expk
+    libc.src.stdfix.roundhk
+    libc.src.stdfix.roundhr
+    libc.src.stdfix.roundk
+    libc.src.stdfix.roundlk
+    libc.src.stdfix.roundlr
+    libc.src.stdfix.roundr
+    libc.src.stdfix.rounduhk
+    libc.src.stdfix.rounduhr
+    libc.src.stdfix.rounduk
+    libc.src.stdfix.roundulk
+    libc.src.stdfix.roundulr
+    libc.src.stdfix.roundur
+    libc.src.stdfix.sqrtuhk
+    libc.src.stdfix.sqrtuhr
+    libc.src.stdfix.sqrtuk
+    libc.src.stdfix.sqrtur
+    # libc.src.stdfix.sqrtulk
+    libc.src.stdfix.sqrtulr
+    libc.src.stdfix.uhksqrtus
+    libc.src.stdfix.uksqrtui
+    libc.src.stdfix.hrbits
+    libc.src.stdfix.uhrbits
+    libc.src.stdfix.rbits
+    libc.src.stdfix.urbits
+    libc.src.stdfix.lrbits
+    libc.src.stdfix.ulrbits
+    libc.src.stdfix.hkbits
+    libc.src.stdfix.uhkbits
+    libc.src.stdfix.kbits
+    libc.src.stdfix.ukbits
+    libc.src.stdfix.lkbits
+    libc.src.stdfix.ulkbits
+    libc.src.stdfix.bitshr
+    libc.src.stdfix.bitsr
+    libc.src.stdfix.bitslr
+    libc.src.stdfix.bitshk
+    libc.src.stdfix.bitsk
+    libc.src.stdfix.bitslk
+    libc.src.stdfix.bitsuhr
+    libc.src.stdfix.bitsur
+    libc.src.stdfix.bitsulr
+    libc.src.stdfix.bitsuhk
+    libc.src.stdfix.bitsuk
+    libc.src.stdfix.bitsulk
+    libc.src.stdfix.countlshr
+    libc.src.stdfix.countlsr
+    libc.src.stdfix.countlslr
+    libc.src.stdfix.countlshk
+    libc.src.stdfix.countlsk
+    libc.src.stdfix.countlslk
+    libc.src.stdfix.countlsuhr
+    libc.src.stdfix.countlsur
+    libc.src.stdfix.countlsulr
+    libc.src.stdfix.countlsuhk
+    libc.src.stdfix.countlsuk
+    libc.src.stdfix.countlsulk
+    libc.src.stdfix.idivr
+    libc.src.stdfix.idivlr
+    libc.src.stdfix.idivk
+    libc.src.stdfix.idivlk
+    libc.src.stdfix.idivur
+    libc.src.stdfix.idivulr
+    libc.src.stdfix.idivuk
+    libc.src.stdfix.idivulk
+    libc.src.stdfix.rdivi
+  )
+endif()
+
+if(LLVM_LIBC_FULL_BUILD)
+  list(APPEND TARGET_LIBC_ENTRYPOINTS
+    # ctype.h entrypoints
+    libc.src.ctype.isalnum_l
+    libc.src.ctype.isalpha_l
+    libc.src.ctype.isblank_l
+    libc.src.ctype.iscntrl_l
+    libc.src.ctype.isdigit_l
+    libc.src.ctype.isgraph_l
+    libc.src.ctype.islower_l
+    libc.src.ctype.isprint_l
+    libc.src.ctype.ispunct_l
+    libc.src.ctype.isspace_l
+    libc.src.ctype.isupper_l
+    libc.src.ctype.isxdigit_l
+    libc.src.ctype.tolower_l
+    libc.src.ctype.toupper_l
+
+    # stdlib.h entrypoints
+    libc.src.stdlib.strtod_l
+    libc.src.stdlib.strtof_l
+    libc.src.stdlib.strtol_l
+    libc.src.stdlib.strtold_l
+    libc.src.stdlib.strtoll_l
+    libc.src.stdlib.strtoul_l
+    libc.src.stdlib.strtoull_l
+
+    # string.h entrypoints
+    libc.src.string.strcoll_l
+    libc.src.string.strxfrm_l
+
+    # strings.h entrypoints
+    libc.src.strings.strcasecmp_l
+    libc.src.strings.strncasecmp_l
+
+    # assert.h entrypoints
+    libc.src.assert.__assert_fail
+
+    # compiler entrypoints (no corresponding header)
+    libc.src.compiler.__stack_chk_fail
+
+    # dirent.h entrypoints
+    libc.src.dirent.closedir
+    libc.src.dirent.dirfd
+    libc.src.dirent.opendir
+    libc.src.dirent.readdir
+
+    # arpa/inet.h entrypoints
+    libc.src.arpa.inet.htonl
+    libc.src.arpa.inet.htons
+    libc.src.arpa.inet.inet_addr
+    libc.src.arpa.inet.inet_aton
+    libc.src.arpa.inet.ntohl
+    libc.src.arpa.inet.ntohs
+
+    # pthread.h entrypoints
+    libc.src.pthread.pthread_atfork
+    libc.src.pthread.pthread_attr_destroy
+    libc.src.pthread.pthread_attr_getdetachstate
+    libc.src.pthread.pthread_attr_getguardsize
+    libc.src.pthread.pthread_attr_getstack
+    libc.src.pthread.pthread_attr_getstacksize
+    libc.src.pthread.pthread_attr_init
+    libc.src.pthread.pthread_attr_setdetachstate
+    libc.src.pthread.pthread_attr_setguardsize
+    libc.src.pthread.pthread_attr_setstack
+    libc.src.pthread.pthread_attr_setstacksize
+    libc.src.pthread.pthread_condattr_destroy
+    libc.src.pthread.pthread_condattr_getclock
+    libc.src.pthread.pthread_condattr_getpshared
+    libc.src.pthread.pthread_condattr_init
+    libc.src.pthread.pthread_condattr_setclock
+    libc.src.pthread.pthread_condattr_setpshared
+    libc.src.pthread.pthread_create
+    libc.src.pthread.pthread_detach
+    libc.src.pthread.pthread_equal
+    libc.src.pthread.pthread_exit
+    libc.src.pthread.pthread_getname_np
+    libc.src.pthread.pthread_getspecific
+    libc.src.pthread.pthread_join
+    libc.src.pthread.pthread_key_create
+    libc.src.pthread.pthread_key_delete
+    libc.src.pthread.pthread_mutex_destroy
+    libc.src.pthread.pthread_mutex_init
+    libc.src.pthread.pthread_mutex_lock
+    libc.src.pthread.pthread_mutex_unlock
+    libc.src.pthread.pthread_mutexattr_destroy
+    libc.src.pthread.pthread_mutexattr_getpshared
+    libc.src.pthread.pthread_mutexattr_getrobust
+    libc.src.pthread.pthread_mutexattr_gettype
+    libc.src.pthread.pthread_mutexattr_init
+    libc.src.pthread.pthread_mutexattr_setpshared
+    libc.src.pthread.pthread_mutexattr_setrobust
+    libc.src.pthread.pthread_mutexattr_settype
+    libc.src.pthread.pthread_once
+    libc.src.pthread.pthread_rwlock_clockrdlock
+    libc.src.pthread.pthread_rwlock_clockwrlock
+    libc.src.pthread.pthread_rwlock_destroy
+    libc.src.pthread.pthread_rwlock_init
+    libc.src.pthread.pthread_rwlock_rdlock
+    libc.src.pthread.pthread_rwlock_timedrdlock
+    libc.src.pthread.pthread_rwlock_timedwrlock
+    libc.src.pthread.pthread_rwlock_tryrdlock
+    libc.src.pthread.pthread_rwlock_trywrlock
+    libc.src.pthread.pthread_rwlock_unlock
+    libc.src.pthread.pthread_rwlock_wrlock
+    libc.src.pthread.pthread_rwlockattr_destroy
+    libc.src.pthread.pthread_rwlockattr_getkind_np
+    libc.src.pthread.pthread_rwlockattr_getpshared
+    libc.src.pthread.pthread_rwlockattr_init
+    libc.src.pthread.pthread_rwlockattr_setkind_np
+    libc.src.pthread.pthread_rwlockattr_setpshared
+    libc.src.pthread.pthread_spin_destroy
+    libc.src.pthread.pthread_spin_init
+    libc.src.pthread.pthread_spin_lock
+    libc.src.pthread.pthread_spin_trylock
+    libc.src.pthread.pthread_spin_unlock
+    libc.src.pthread.pthread_self
+    libc.src.pthread.pthread_setname_np
+    libc.src.pthread.pthread_setspecific
+
+    # sched.h entrypoints
+    libc.src.sched.__sched_getcpucount
+    libc.src.sched.__sched_setcpuzero
+    libc.src.sched.__sched_setcpuset
+    libc.src.sched.__sched_getcpuisset
+
+    # setjmp.h entrypoints
+    libc.src.setjmp.longjmp
+    libc.src.setjmp.setjmp
+    libc.src.setjmp.siglongjmp
+    libc.src.setjmp.sigsetjmp
+
+    # stdio.h entrypoints
+    libc.src.stdio.clearerr
+    libc.src.stdio.clearerr_unlocked
+    libc.src.stdio.fclose
+    libc.src.stdio.fdopen
+    libc.src.stdio.feof
+    libc.src.stdio.feof_unlocked
+    libc.src.stdio.ferror
+    libc.src.stdio.ferror_unlocked
+    libc.src.stdio.fflush
+    libc.src.stdio.fgetc
+    libc.src.stdio.fgetc_unlocked
+    libc.src.stdio.fgets
+    libc.src.stdio.fileno
+    libc.src.stdio.flockfile
+    libc.src.stdio.fopen
+    libc.src.stdio.fopencookie
+    libc.src.stdio.fputc
+    libc.src.stdio.fputs
+    libc.src.stdio.fread
+    libc.src.stdio.fread_unlocked
+    libc.src.stdio.fseek
+    libc.src.stdio.fseeko
+    libc.src.stdio.ftell
+    libc.src.stdio.ftello
+    libc.src.stdio.funlockfile
+    libc.src.stdio.fwrite
+    libc.src.stdio.fwrite_unlocked
+    libc.src.stdio.getc
+    libc.src.stdio.getc_unlocked
+    libc.src.stdio.getchar
+    libc.src.stdio.getchar_unlocked
+    libc.src.stdio.perror
+    libc.src.stdio.putc
+    libc.src.stdio.putchar
+    libc.src.stdio.puts
+    libc.src.stdio.setbuf
+    libc.src.stdio.setvbuf
+    libc.src.stdio.stderr
+    libc.src.stdio.stdin
+    libc.src.stdio.stdout
+    libc.src.stdio.ungetc
+
+    # stdlib.h entrypoints
+    libc.src.stdlib._Exit
+    libc.src.stdlib.abort
+    libc.src.stdlib.at_quick_exit
+    libc.src.stdlib.atexit
+    libc.src.stdlib.exit
+    libc.src.stdlib.getenv
+    libc.src.stdlib.quick_exit
+
+    # signal.h entrypoints
+    libc.src.signal.kill
+    libc.src.signal.raise
+    libc.src.signal.sigaction
+    libc.src.signal.sigaddset
+    libc.src.signal.sigaltstack
+    libc.src.signal.sigdelset
+    libc.src.signal.sigemptyset
+    libc.src.signal.sigfillset
+    libc.src.signal.signal
+    libc.src.signal.sigprocmask
+
+    # spawn.h entrypoints
+    libc.src.spawn.posix_spawn
+    libc.src.spawn.posix_spawn_file_actions_addclose
+    libc.src.spawn.posix_spawn_file_actions_adddup2
+    libc.src.spawn.posix_spawn_file_actions_addopen
+    libc.src.spawn.posix_spawn_file_actions_destroy
+    libc.src.spawn.posix_spawn_file_actions_init
+
+    # search.h entrypoints
+    libc.src.search.hcreate
+    libc.src.search.hcreate_r
+    libc.src.search.hdestroy
+    libc.src.search.hdestroy_r
+    libc.src.search.hsearch
+    libc.src.search.hsearch_r
+    libc.src.search.insque
+    libc.src.search.lfind
+    libc.src.search.lsearch
+    libc.src.search.remque
+
+    # threads.h entrypoints
+    libc.src.threads.call_once
+    libc.src.threads.cnd_broadcast
+    libc.src.threads.cnd_destroy
+    libc.src.threads.cnd_init
+    libc.src.threads.cnd_signal
+    libc.src.threads.cnd_wait
+    libc.src.threads.mtx_destroy
+    libc.src.threads.mtx_init
+    libc.src.threads.mtx_lock
+    libc.src.threads.mtx_unlock
+    libc.src.threads.thrd_create
+    libc.src.threads.thrd_current
+    libc.src.threads.thrd_detach
+    libc.src.threads.thrd_equal
+    libc.src.threads.thrd_exit
+    libc.src.threads.thrd_join
+    libc.src.threads.tss_create
+    libc.src.threads.tss_delete
+    libc.src.threads.tss_get
+    libc.src.threads.tss_set
+
+    # time.h entrypoints
+    libc.src.time.asctime
+    libc.src.time.asctime_r
+    libc.src.time.ctime
+    libc.src.time.ctime_r
+    libc.src.time.clock
+    libc.src.time.clock_gettime
+    libc.src.time.clock_settime
+    libc.src.time.difftime
+    libc.src.time.gettimeofday
+    libc.src.time.gmtime
+    libc.src.time.gmtime_r
+    libc.src.time.mktime
+    libc.src.time.nanosleep
+    libc.src.time.strftime
+    libc.src.time.strftime_l
+    libc.src.time.time
+    libc.src.time.timespec_get
+
+    # locale.h entrypoints
+    libc.src.locale.localeconv
+    libc.src.locale.duplocale
+    libc.src.locale.freelocale
+    libc.src.locale.localeconv
+    libc.src.locale.newlocale
+    libc.src.locale.setlocale
+    libc.src.locale.uselocale
+
+    # unistd.h entrypoints
+    libc.src.unistd.__llvm_libc_syscall
+    libc.src.unistd._exit
+    libc.src.unistd.environ
+    libc.src.unistd.execv
+    libc.src.unistd.fork
+    libc.src.unistd.getopt
+    libc.src.unistd.optarg
+    libc.src.unistd.opterr
+    libc.src.unistd.optind
+    libc.src.unistd.optopt
+    libc.src.unistd.swab
+
+    # sys/select.h entrypoints
+    libc.src.sys.select.select
+
+    # sys/socket.h entrypoints
+    libc.src.sys.socket.bind
+    libc.src.sys.socket.socket
+    libc.src.sys.socket.socketpair
+    libc.src.sys.socket.send
+    libc.src.sys.socket.sendto
+    libc.src.sys.socket.sendmsg
+    libc.src.sys.socket.recv
+    libc.src.sys.socket.recvfrom
+    libc.src.sys.socket.recvmsg
+  )
+endif()
+
+set(TARGET_LLVMLIBC_ENTRYPOINTS
+  ${TARGET_LIBC_ENTRYPOINTS}
+  ${TARGET_LIBM_ENTRYPOINTS}
+)
diff --git a/libc/config/linux/x86_64/entrypoints.txt b/libc/config/linux/x86_64/entrypoints.txt
index 3959c6ddb8c3f..ba07c328e291b 100644
--- a/libc/config/linux/x86_64/entrypoints.txt
+++ b/libc/config/linux/x86_64/entrypoints.txt
@@ -1,1403 +1,1403 @@
-set(TARGET_LIBC_ENTRYPOINTS
-    # ctype.h entrypoints
-    libc.src.ctype.isalnum
-    libc.src.ctype.isalpha
-    libc.src.ctype.isascii
-    libc.src.ctype.isblank
-    libc.src.ctype.iscntrl
-    libc.src.ctype.isdigit
-    libc.src.ctype.isgraph
-    libc.src.ctype.islower
-    libc.src.ctype.isprint
-    libc.src.ctype.ispunct
-    libc.src.ctype.isspace
-    libc.src.ctype.isupper
-    libc.src.ctype.isxdigit
-    libc.src.ctype.toascii
-    libc.src.ctype.tolower
-    libc.src.ctype.toupper
-
-    # dlfcn.h entrypoints
-    libc.src.dlfcn.dladdr
-    libc.src.dlfcn.dlclose
-    libc.src.dlfcn.dlerror
-    libc.src.dlfcn.dlopen
-    libc.src.dlfcn.dlsym
-
-    # errno.h entrypoints
-    libc.src.errno.errno
-
-    # fcntl.h entrypoints
-    libc.src.fcntl.creat
-    libc.src.fcntl.fcntl
-    libc.src.fcntl.open
-    libc.src.fcntl.openat
-
-    # poll.h entrypoints
-    libc.src.poll.poll
-
-    # sched.h entrypoints
-    libc.src.sched.getcpu
-    libc.src.sched.sched_get_priority_max
-    libc.src.sched.sched_get_priority_min
-    libc.src.sched.sched_getaffinity
-    libc.src.sched.sched_getparam
-    libc.src.sched.sched_getscheduler
-    libc.src.sched.sched_rr_get_interval
-    libc.src.sched.sched_setaffinity
-    libc.src.sched.sched_setparam
-    libc.src.sched.sched_setscheduler
-    libc.src.sched.sched_yield
-
-    # string.h entrypoints
-    libc.src.string.memccpy
-    libc.src.string.memchr
-    libc.src.string.memcmp
-    libc.src.string.memcpy
-    libc.src.string.memmem
-    libc.src.string.memmove
-    libc.src.string.mempcpy
-    libc.src.string.memrchr
-    libc.src.string.memset
-    libc.src.string.memset_explicit
-    libc.src.string.stpcpy
-    libc.src.string.stpncpy
-    libc.src.string.strcasestr
-    libc.src.string.strcat
-    libc.src.string.strchr
-    libc.src.string.strchrnul
-    libc.src.string.strcmp
-    libc.src.string.strcoll
-    libc.src.string.strcpy
-    libc.src.string.strcspn
-    libc.src.string.strdup
-    libc.src.string.strerror
-    libc.src.string.strerror_r
-    libc.src.string.strlcat
-    libc.src.string.strlcpy
-    libc.src.string.strlen
-    libc.src.string.strncat
-    libc.src.string.strncmp
-    libc.src.string.strncpy
-    libc.src.string.strndup
-    libc.src.string.strnlen
-    libc.src.string.strpbrk
-    libc.src.string.strrchr
-    libc.src.string.strsep
-    libc.src.string.strsignal
-    libc.src.string.strspn
-    libc.src.string.strstr
-    libc.src.string.strtok
-    libc.src.string.strtok_r
-    libc.src.string.strxfrm
-
-    # strings.h entrypoints
-    libc.src.strings.bcmp
-    libc.src.strings.bcopy
-    libc.src.strings.bzero
-    libc.src.strings.ffs
-    libc.src.strings.ffsl
-    libc.src.strings.ffsll
-    libc.src.strings.index
-    libc.src.strings.rindex
-    libc.src.strings.strcasecmp
-    libc.src.strings.strncasecmp
-
-    # inttypes.h entrypoints
-    libc.src.inttypes.imaxabs
-    libc.src.inttypes.imaxdiv
-    libc.src.inttypes.strtoimax
-    libc.src.inttypes.strtoumax
-
-    # stdbit.h entrypoints
-    libc.src.stdbit.stdc_bit_ceil_uc
-    libc.src.stdbit.stdc_bit_ceil_ui
-    libc.src.stdbit.stdc_bit_ceil_ul
-    libc.src.stdbit.stdc_bit_ceil_ull
-    libc.src.stdbit.stdc_bit_ceil_us
-    libc.src.stdbit.stdc_bit_floor_uc
-    libc.src.stdbit.stdc_bit_floor_ui
-    libc.src.stdbit.stdc_bit_floor_ul
-    libc.src.stdbit.stdc_bit_floor_ull
-    libc.src.stdbit.stdc_bit_floor_us
-    libc.src.stdbit.stdc_bit_width_uc
-    libc.src.stdbit.stdc_bit_width_ui
-    libc.src.stdbit.stdc_bit_width_ul
-    libc.src.stdbit.stdc_bit_width_ull
-    libc.src.stdbit.stdc_bit_width_us
-    libc.src.stdbit.stdc_count_ones_uc
-    libc.src.stdbit.stdc_count_ones_ui
-    libc.src.stdbit.stdc_count_ones_ul
-    libc.src.stdbit.stdc_count_ones_ull
-    libc.src.stdbit.stdc_count_ones_us
-    libc.src.stdbit.stdc_count_zeros_uc
-    libc.src.stdbit.stdc_count_zeros_ui
-    libc.src.stdbit.stdc_count_zeros_ul
-    libc.src.stdbit.stdc_count_zeros_ull
-    libc.src.stdbit.stdc_count_zeros_us
-    libc.src.stdbit.stdc_first_leading_one_uc
-    libc.src.stdbit.stdc_first_leading_one_ui
-    libc.src.stdbit.stdc_first_leading_one_ul
-    libc.src.stdbit.stdc_first_leading_one_ull
-    libc.src.stdbit.stdc_first_leading_one_us
-    libc.src.stdbit.stdc_first_leading_zero_uc
-    libc.src.stdbit.stdc_first_leading_zero_ui
-    libc.src.stdbit.stdc_first_leading_zero_ul
-    libc.src.stdbit.stdc_first_leading_zero_ull
-    libc.src.stdbit.stdc_first_leading_zero_us
-    libc.src.stdbit.stdc_first_trailing_one_uc
-    libc.src.stdbit.stdc_first_trailing_one_ui
-    libc.src.stdbit.stdc_first_trailing_one_ul
-    libc.src.stdbit.stdc_first_trailing_one_ull
-    libc.src.stdbit.stdc_first_trailing_one_us
-    libc.src.stdbit.stdc_first_trailing_zero_uc
-    libc.src.stdbit.stdc_first_trailing_zero_ui
-    libc.src.stdbit.stdc_first_trailing_zero_ul
-    libc.src.stdbit.stdc_first_trailing_zero_ull
-    libc.src.stdbit.stdc_first_trailing_zero_us
-    libc.src.stdbit.stdc_has_single_bit_uc
-    libc.src.stdbit.stdc_has_single_bit_ui
-    libc.src.stdbit.stdc_has_single_bit_ul
-    libc.src.stdbit.stdc_has_single_bit_ull
-    libc.src.stdbit.stdc_has_single_bit_us
-    libc.src.stdbit.stdc_leading_ones_uc
-    libc.src.stdbit.stdc_leading_ones_ui
-    libc.src.stdbit.stdc_leading_ones_ul
-    libc.src.stdbit.stdc_leading_ones_ull
-    libc.src.stdbit.stdc_leading_ones_us
-    libc.src.stdbit.stdc_leading_zeros_uc
-    libc.src.stdbit.stdc_leading_zeros_ui
-    libc.src.stdbit.stdc_leading_zeros_ul
-    libc.src.stdbit.stdc_leading_zeros_ull
-    libc.src.stdbit.stdc_leading_zeros_us
-    libc.src.stdbit.stdc_trailing_ones_uc
-    libc.src.stdbit.stdc_trailing_ones_ui
-    libc.src.stdbit.stdc_trailing_ones_ul
-    libc.src.stdbit.stdc_trailing_ones_ull
-    libc.src.stdbit.stdc_trailing_ones_us
-    libc.src.stdbit.stdc_trailing_zeros_uc
-    libc.src.stdbit.stdc_trailing_zeros_ui
-    libc.src.stdbit.stdc_trailing_zeros_ul
-    libc.src.stdbit.stdc_trailing_zeros_ull
-    libc.src.stdbit.stdc_trailing_zeros_us
-
-    # stdlib.h entrypoints
-    libc.src.stdlib.a64l
-    libc.src.stdlib.abs
-    libc.src.stdlib.atof
-    libc.src.stdlib.atoi
-    libc.src.stdlib.atol
-    libc.src.stdlib.atoll
-    libc.src.stdlib.bsearch
-    libc.src.stdlib.div
-    libc.src.stdlib.l64a
-    libc.src.stdlib.labs
-    libc.src.stdlib.ldiv
-    libc.src.stdlib.llabs
-    libc.src.stdlib.lldiv
-    libc.src.stdlib.memalignment
-    libc.src.stdlib.qsort
-    libc.src.stdlib.qsort_r
-    libc.src.stdlib.rand
-    libc.src.stdlib.srand
-    libc.src.stdlib.strfromd
-    libc.src.stdlib.strfromf
-    libc.src.stdlib.strfroml
-    libc.src.stdlib.strtod
-    libc.src.stdlib.strtof
-    libc.src.stdlib.strtol
-    libc.src.stdlib.strtold
-    libc.src.stdlib.strtoll
-    libc.src.stdlib.strtoul
-    libc.src.stdlib.strtoull
-
-    # stdlib.h external entrypoints
-    libc.src.stdlib.aligned_alloc
-    libc.src.stdlib.calloc
-    libc.src.stdlib.free
-    libc.src.stdlib.malloc
-    libc.src.stdlib.realloc
-
-    # stdio.h entrypoints
-    libc.src.stdio.fprintf
-    libc.src.stdio.fscanf
-    libc.src.stdio.vfscanf
-    libc.src.stdio.printf
-    libc.src.stdio.remove
-    libc.src.stdio.rename
-    libc.src.stdio.scanf
-    libc.src.stdio.vscanf
-    libc.src.stdio.snprintf
-    libc.src.stdio.sprintf
-    libc.src.stdio.asprintf
-    libc.src.stdio.sscanf
-    libc.src.stdio.vsscanf
-    libc.src.stdio.vfprintf
-    libc.src.stdio.vprintf
-    libc.src.stdio.vsnprintf
-    libc.src.stdio.vsprintf
-    libc.src.stdio.vasprintf
-
-    # sys/epoll.h entrypoints
-    libc.src.sys.epoll.epoll_create
-    libc.src.sys.epoll.epoll_create1
-    libc.src.sys.epoll.epoll_ctl
-    libc.src.sys.epoll.epoll_pwait
-    libc.src.sys.epoll.epoll_wait
-    # TODO: Need to check if pwait2 is available before providing.
-    # https://github.com/llvm/llvm-project/issues/80060
-    # libc.src.sys.epoll.epoll_pwait2
-
-    # sys/ioctl.h entrypoints
-    libc.src.sys.ioctl.ioctl
-
-    # sys/mman.h entrypoints
-    libc.src.sys.mman.madvise
-    libc.src.sys.mman.mincore
-    libc.src.sys.mman.mlock
-    libc.src.sys.mman.mlock2
-    libc.src.sys.mman.mlockall
-    libc.src.sys.mman.mmap
-    libc.src.sys.mman.mremap
-    libc.src.sys.mman.mprotect
-    libc.src.sys.mman.msync
-    libc.src.sys.mman.munlock
-    libc.src.sys.mman.munlockall
-    libc.src.sys.mman.munmap
-    libc.src.sys.mman.pkey_alloc
-    libc.src.sys.mman.pkey_free
-    libc.src.sys.mman.pkey_get
-    libc.src.sys.mman.pkey_mprotect
-    libc.src.sys.mman.pkey_set
-    libc.src.sys.mman.remap_file_pages
-    libc.src.sys.mman.posix_madvise
-    libc.src.sys.mman.shm_open
-    libc.src.sys.mman.shm_unlink
-
-    # sys/random.h entrypoints
-    libc.src.sys.random.getrandom
-
-    # sys/resource.h entrypoints
-    libc.src.sys.resource.getrlimit
-    libc.src.sys.resource.setrlimit
-
-    # sys/sendfile entrypoints
-    libc.src.sys.sendfile.sendfile
-
-    # sys/stat.h entrypoints
-    libc.src.sys.stat.chmod
-    libc.src.sys.stat.fchmod
-    libc.src.sys.stat.fchmodat
-    libc.src.sys.stat.fstat
-    libc.src.sys.stat.lstat
-    libc.src.sys.stat.mkdir
-    libc.src.sys.stat.mkdirat
-    libc.src.sys.stat.stat
-
-    # sys/statvfs.h
-    libc.src.sys.statvfs.fstatvfs
-    libc.src.sys.statvfs.statvfs
-
-    # sys/utimes.h entrypoints
-    libc.src.sys.time.utimes
-
-    # sys/utsname.h entrypoints
-    libc.src.sys.utsname.uname
-
-    # sys/wait.h entrypoints
-    libc.src.sys.wait.wait
-    libc.src.sys.wait.wait4
-    libc.src.sys.wait.waitpid
-
-    # sys/prctl.h entrypoints
-    libc.src.sys.prctl.prctl
-
-    # sys/auxv.h entrypoints
-    libc.src.sys.auxv.getauxval
-
-    # termios.h entrypoints
-    libc.src.termios.cfgetispeed
-    libc.src.termios.cfgetospeed
-    libc.src.termios.cfsetispeed
-    libc.src.termios.cfsetospeed
-    libc.src.termios.tcdrain
-    libc.src.termios.tcflow
-    libc.src.termios.tcflush
-    libc.src.termios.tcgetattr
-    libc.src.termios.tcgetsid
-    libc.src.termios.tcsendbreak
-    libc.src.termios.tcsetattr
-
-    # unistd.h entrypoints
-    libc.src.unistd.access
-    libc.src.unistd.chdir
-    libc.src.unistd.chown
-    libc.src.unistd.close
-    libc.src.unistd.dup
-    libc.src.unistd.dup2
-    libc.src.unistd.dup3
-    libc.src.unistd.execve
-    libc.src.unistd.faccessat
-    libc.src.unistd.fchdir
-    libc.src.unistd.fchown
-    libc.src.unistd.fpathconf
-    libc.src.unistd.fsync
-    libc.src.unistd.ftruncate
-    libc.src.unistd.getcwd
-    libc.src.unistd.getentropy
-    libc.src.unistd.geteuid
-    libc.src.unistd.gethostname
-    libc.src.unistd.getpagesize
-    libc.src.unistd.getpid
-    libc.src.unistd.getppid
-    libc.src.unistd.getsid
-    libc.src.unistd.gettid
-    libc.src.unistd.getgid
-    libc.src.unistd.getuid
-    libc.src.unistd.isatty
-    libc.src.unistd.link
-    libc.src.unistd.linkat
-    libc.src.unistd.lseek
-    libc.src.unistd.pathconf
-    libc.src.unistd.pipe
-    libc.src.unistd.pipe2
-    libc.src.unistd.pread
-    libc.src.unistd.pwrite
-    libc.src.unistd.read
-    libc.src.unistd.readlink
-    libc.src.unistd.readlinkat
-    libc.src.unistd.rmdir
-    libc.src.unistd.setsid
-    libc.src.unistd.symlink
-    libc.src.unistd.symlinkat
-    libc.src.unistd.sysconf
-    libc.src.unistd.truncate
-    libc.src.unistd.unlink
-    libc.src.unistd.unlinkat
-    libc.src.unistd.write
-
-    # wchar.h entrypoints
-    libc.src.wchar.btowc
-    libc.src.wchar.wcslen
-    libc.src.wchar.wcsnlen
-    libc.src.wchar.wctob
-    libc.src.wchar.wmemmove
-    libc.src.wchar.wmemset
-    libc.src.wchar.wcschr
-    libc.src.wchar.wcsncmp
-    libc.src.wchar.wcscmp
-    libc.src.wchar.wcspbrk
-    libc.src.wchar.wcsrchr
-    libc.src.wchar.wcsspn
-    libc.src.wchar.wcscspn
-    libc.src.wchar.wcsdup
-    libc.src.wchar.wmemcmp
-    libc.src.wchar.wmempcpy
-    libc.src.wchar.wmemcpy
-    libc.src.wchar.wcsncpy
-    libc.src.wchar.wcscat
-    libc.src.wchar.wcsstr
-    libc.src.wchar.wcsncat
-    libc.src.wchar.wcslcat
-    libc.src.wchar.wcscpy
-    libc.src.wchar.wcslcpy
-    libc.src.wchar.wmemchr
-    libc.src.wchar.wcpcpy
-    libc.src.wchar.wcpncpy
-    libc.src.wchar.wcstod
-    libc.src.wchar.wcstof
-    libc.src.wchar.wcstok
-    libc.src.wchar.wcstol
-    libc.src.wchar.wcstold
-    libc.src.wchar.wcstoll
-    libc.src.wchar.wcstoul
-    libc.src.wchar.wcstoull
-
-    # wctype.h entrypoints
-    libc.src.wctype.iswalpha
-
-    # sys/uio.h entrypoints
-    libc.src.sys.uio.writev
-    libc.src.sys.uio.readv
-
-    # sys/time.h entrypoints
-    libc.src.sys.time.setitimer
-    libc.src.sys.time.getitimer
-)
-
-if(LLVM_LIBC_INCLUDE_SCUDO)
-  list(APPEND TARGET_LIBC_ENTRYPOINTS
-    # malloc.h external entrypoints
-    libc.src.stdlib.mallopt
-  )
-endif()
-
-set(TARGET_LIBM_ENTRYPOINTS
-    # complex.h entrypoints
-    libc.src.complex.creal
-    libc.src.complex.crealf
-    libc.src.complex.creall
-    libc.src.complex.cimag
-    libc.src.complex.cimagf
-    libc.src.complex.cimagl
-    libc.src.complex.conj
-    libc.src.complex.conjf
-    libc.src.complex.conjl
-    libc.src.complex.cproj
-    libc.src.complex.cprojf
-    libc.src.complex.cprojl
-
-    # fenv.h entrypoints
-    libc.src.fenv.feclearexcept
-    libc.src.fenv.fedisableexcept
-    libc.src.fenv.feenableexcept
-    libc.src.fenv.fegetenv
-    libc.src.fenv.fegetexcept
-    libc.src.fenv.fegetexceptflag
-    libc.src.fenv.fegetround
-    libc.src.fenv.feholdexcept
-    libc.src.fenv.feraiseexcept
-    libc.src.fenv.fesetenv
-    libc.src.fenv.fesetexcept
-    libc.src.fenv.fesetexceptflag
-    libc.src.fenv.fesetround
-    libc.src.fenv.fetestexcept
-    libc.src.fenv.fetestexceptflag
-    libc.src.fenv.feupdateenv
-
-    # math.h entrypoints
-    libc.src.math.acos
-    libc.src.math.acosf
-    libc.src.math.acoshf
-    libc.src.math.asin
-    libc.src.math.asinf
-    libc.src.math.asinhf
-    libc.src.math.atan2
-    libc.src.math.atan2f
-    libc.src.math.atan
-    libc.src.math.atanf
-    libc.src.math.atanhf
-    libc.src.math.canonicalize
-    libc.src.math.canonicalizef
-    libc.src.math.canonicalizel
-    libc.src.math.cbrt
-    libc.src.math.cbrtf
-    libc.src.math.ceil
-    libc.src.math.ceilf
-    libc.src.math.ceill
-    libc.src.math.copysign
-    libc.src.math.copysignf
-    libc.src.math.copysignl
-    libc.src.math.cos
-    libc.src.math.cosf
-    libc.src.math.coshf
-    libc.src.math.cospif
-    libc.src.math.dfmal
-    libc.src.math.dmull
-    libc.src.math.dsqrtl
-    libc.src.math.daddl
-    libc.src.math.ddivl
-    libc.src.math.dsubl
-    libc.src.math.erff
-    libc.src.math.exp
-    libc.src.math.exp10
-    libc.src.math.exp10f
-    libc.src.math.exp10m1f
-    libc.src.math.exp2
-    libc.src.math.exp2f
-    libc.src.math.exp2m1f
-    libc.src.math.expf
-    libc.src.math.expm1
-    libc.src.math.expm1f
-    libc.src.math.fabs
-    libc.src.math.fabsf
-    libc.src.math.fabsl
-    libc.src.math.fadd
-    libc.src.math.faddl
-    libc.src.math.fadd
-    libc.src.math.fdim
-    libc.src.math.fdimf
-    libc.src.math.fdiml
-    libc.src.math.fdiv
-    libc.src.math.fdivl
-    libc.src.math.ffma
-    libc.src.math.ffmal
-    libc.src.math.floor
-    libc.src.math.floorf
-    libc.src.math.floorl
-    libc.src.math.fma
-    libc.src.math.fmabf16
-    libc.src.math.fmaf
-    libc.src.math.fmax
-    libc.src.math.fmaxf
-    libc.src.math.fmaximum
-    libc.src.math.fmaximum_mag
-    libc.src.math.fmaximum_mag_num
-    libc.src.math.fmaximum_mag_numf
-    libc.src.math.fmaximum_mag_numl
-    libc.src.math.fmaximum_magf
-    libc.src.math.fmaximum_magl
-    libc.src.math.fmaximum_num
-    libc.src.math.fmaximum_numf
-    libc.src.math.fmaximum_numl
-    libc.src.math.fmaximumf
-    libc.src.math.fmaximuml
-    libc.src.math.fmaxl
-    libc.src.math.fmin
-    libc.src.math.fminf
-    libc.src.math.fminimum
-    libc.src.math.fminimum_mag
-    libc.src.math.fminimum_mag_num
-    libc.src.math.fminimum_mag_numf
-    libc.src.math.fminimum_mag_numl
-    libc.src.math.fminimum_magf
-    libc.src.math.fminimum_magl
-    libc.src.math.fminimum_num
-    libc.src.math.fminimum_numf
-    libc.src.math.fminimum_numl
-    libc.src.math.fminimumf
-    libc.src.math.fminimuml
-    libc.src.math.fminl
-    libc.src.math.fmod
-    libc.src.math.fmodf
-    libc.src.math.fmodl
-    libc.src.math.fmul
-    libc.src.math.fmull
-    libc.src.math.frexp
-    libc.src.math.frexpf
-    libc.src.math.frexpl
-    libc.src.math.fromfp
-    libc.src.math.fromfpf
-    libc.src.math.fromfpl
-    libc.src.math.fromfpx
-    libc.src.math.fromfpxf
-    libc.src.math.fromfpxl
-    libc.src.math.fsqrt
-    libc.src.math.fsqrtl
-    libc.src.math.fsub
-    libc.src.math.fsubl
-    libc.src.math.getpayload
-    libc.src.math.getpayloadf
-    libc.src.math.getpayloadl
-    libc.src.math.hypot
-    libc.src.math.hypotf
-    libc.src.math.ilogb
-    libc.src.math.ilogbf
-    libc.src.math.ilogbl
-    libc.src.math.iscanonical
-    libc.src.math.iscanonicalf
-    libc.src.math.iscanonicall
-    libc.src.math.isnan
-    libc.src.math.isnanf
-    libc.src.math.isnanl
-    libc.src.math.issignaling
-    libc.src.math.issignalingf
-    libc.src.math.issignalingl
-    libc.src.math.ldexp
-    libc.src.math.ldexpf
-    libc.src.math.ldexpl
-    libc.src.math.llogb
-    libc.src.math.llogbf
-    libc.src.math.llogbl
-    libc.src.math.llrint
-    libc.src.math.llrintf
-    libc.src.math.llrintl
-    libc.src.math.llround
-    libc.src.math.llroundf
-    libc.src.math.llroundl
-    libc.src.math.log
-    libc.src.math.log10
-    libc.src.math.log10f
-    libc.src.math.log1p
-    libc.src.math.log1pf
-    libc.src.math.log2
-    libc.src.math.log2f
-    libc.src.math.logb
-    libc.src.math.logbf
-    libc.src.math.logbl
-    libc.src.math.logf
-    libc.src.math.lrint
-    libc.src.math.lrintf
-    libc.src.math.lrintl
-    libc.src.math.lround
-    libc.src.math.lroundf
-    libc.src.math.lroundl
-    libc.src.math.modf
-    libc.src.math.modff
-    libc.src.math.modfl
-    libc.src.math.nan
-    libc.src.math.nanf
-    libc.src.math.nanl
-    libc.src.math.nearbyint
-    libc.src.math.nearbyintf
-    libc.src.math.nearbyintl
-    libc.src.math.nextafter
-    libc.src.math.nextafterf
-    libc.src.math.nextafterl
-    libc.src.math.nextdown
-    libc.src.math.nextdownf
-    libc.src.math.nextdownl
-    libc.src.math.nexttoward
-    libc.src.math.nexttowardf
-    libc.src.math.nexttowardl
-    libc.src.math.nextup
-    libc.src.math.nextupf
-    libc.src.math.nextupl
-    libc.src.math.pow
-    libc.src.math.powf
-    libc.src.math.remainder
-    libc.src.math.remainderf
-    libc.src.math.remainderl
-    libc.src.math.remquo
-    libc.src.math.remquof
-    libc.src.math.remquol
-    libc.src.math.rint
-    libc.src.math.rintf
-    libc.src.math.rintl
-    libc.src.math.round
-    libc.src.math.roundeven
-    libc.src.math.roundevenf
-    libc.src.math.roundevenl
-    libc.src.math.roundf
-    libc.src.math.roundl
-    libc.src.math.scalbln
-    libc.src.math.scalblnf
-    libc.src.math.scalblnl
-    libc.src.math.scalbn
-    libc.src.math.scalbnf
-    libc.src.math.scalbnl
-    libc.src.math.setpayload
-    libc.src.math.setpayloadf
-    libc.src.math.setpayloadl
-    libc.src.math.setpayloadsig
-    libc.src.math.setpayloadsigf
-    libc.src.math.setpayloadsigl
-    libc.src.math.sin
-    libc.src.math.sincos
-    libc.src.math.sincosf
-    libc.src.math.sinf
-    libc.src.math.sinhf
-    libc.src.math.sinpif
-    libc.src.math.sqrt
-    libc.src.math.sqrtf
-    libc.src.math.sqrtl
-    libc.src.math.tan
-    libc.src.math.tanf
-    libc.src.math.tanhf
-    libc.src.math.tanpif
-    libc.src.math.totalorder
-    libc.src.math.totalorderf
-    libc.src.math.totalorderl
-    libc.src.math.totalordermag
-    libc.src.math.totalordermagf
-    libc.src.math.totalordermagl
-    libc.src.math.trunc
-    libc.src.math.truncf
-    libc.src.math.truncl
-    libc.src.math.ufromfp
-    libc.src.math.ufromfpf
-    libc.src.math.ufromfpl
-    libc.src.math.ufromfpx
-    libc.src.math.ufromfpxf
-    libc.src.math.ufromfpxl
-)
-
-if(LIBC_TYPES_HAS_CFLOAT16)
-  list(APPEND TARGET_LIBM_ENTRYPOINTS
-    # complex.h C23 _Complex _Float16 entrypoints
-    libc.src.complex.crealf16
-    libc.src.complex.cimagf16
-    libc.src.complex.conjf16
-    libc.src.complex.cprojf16
-  )
-endif()
-
-if(LIBC_TYPES_HAS_FLOAT16)
-  list(APPEND TARGET_LIBM_ENTRYPOINTS
-    # math.h C23 _Float16 entrypoints
-    libc.src.math.acosf16
-    libc.src.math.acoshf16
-    libc.src.math.acospif16
-    libc.src.math.asinf16
-    libc.src.math.asinhf16
-    libc.src.math.asinpif16
-    libc.src.math.atanf16
-    libc.src.math.atanhf16
-    libc.src.math.atanpif16
-    libc.src.math.canonicalizef16
-    libc.src.math.ceilf16
-    libc.src.math.copysignf16
-    libc.src.math.cosf16
-    libc.src.math.coshf16
-    libc.src.math.cospif16
-    libc.src.math.exp10f16
-    libc.src.math.exp10m1f16
-    libc.src.math.exp2f16
-    libc.src.math.exp2m1f16
-    libc.src.math.expf16
-    libc.src.math.expm1f16
-    libc.src.math.f16add
-    libc.src.math.f16addf
-    libc.src.math.f16addl
-    libc.src.math.f16div
-    libc.src.math.f16divf
-    libc.src.math.f16divl
-    libc.src.math.f16fma
-    libc.src.math.f16fmaf
-    libc.src.math.f16fmal
-    libc.src.math.f16mul
-    libc.src.math.f16mulf
-    libc.src.math.f16mull
-    libc.src.math.f16sqrt
-    libc.src.math.f16sqrtf
-    libc.src.math.f16sqrtl
-    libc.src.math.f16sub
-    libc.src.math.f16subf
-    libc.src.math.f16subl
-    libc.src.math.fabsf16
-    libc.src.math.fdimf16
-    libc.src.math.floorf16
-    libc.src.math.fmaf16
-    libc.src.math.fmaxf16
-    libc.src.math.fmaximum_mag_numf16
-    libc.src.math.fmaximum_magf16
-    libc.src.math.fmaximum_numf16
-    libc.src.math.fmaximumf16
-    libc.src.math.fminf16
-    libc.src.math.fminimum_mag_numf16
-    libc.src.math.fminimum_magf16
-    libc.src.math.fminimum_numf16
-    libc.src.math.fminimumf16
-    libc.src.math.fmodf16
-    libc.src.math.frexpf16
-    libc.src.math.fromfpf16
-    libc.src.math.fromfpxf16
-    libc.src.math.getpayloadf16
-    libc.src.math.hypotf16
-    libc.src.math.ilogbf16
-    libc.src.math.iscanonicalf16
-    libc.src.math.issignalingf16
-    libc.src.math.ldexpf16
-    libc.src.math.llogbf16
-    libc.src.math.llrintf16
-    libc.src.math.llroundf16
-    libc.src.math.log10f16
-    libc.src.math.log2f16
-    libc.src.math.logbf16
-    libc.src.math.logf16
-    libc.src.math.lrintf16
-    libc.src.math.lroundf16
-    libc.src.math.modff16
-    libc.src.math.nanf16
-    libc.src.math.nearbyintf16
-    libc.src.math.nextafterf16
-    libc.src.math.nextdownf16
-    libc.src.math.nexttowardf16
-    libc.src.math.nextupf16
-    libc.src.math.remainderf16
-    libc.src.math.remquof16
-    libc.src.math.rintf16
-    libc.src.math.roundevenf16
-    libc.src.math.roundf16
-    libc.src.math.rsqrtf
-    libc.src.math.rsqrtf16
-    libc.src.math.scalblnf16
-    libc.src.math.scalbnf16
-    libc.src.math.setpayloadf16
-    libc.src.math.setpayloadsigf16
-    libc.src.math.sinf16
-    libc.src.math.sinhf16
-    libc.src.math.sinpif16
-    libc.src.math.sqrtf16
-    libc.src.math.tanf16
-    libc.src.math.tanhf16
-    libc.src.math.tanpif16
-    libc.src.math.totalorderf16
-    libc.src.math.totalordermagf16
-    libc.src.math.truncf16
-    libc.src.math.ufromfpf16
-    libc.src.math.ufromfpxf16
-  )
-
-  if(LIBC_TYPES_HAS_FLOAT128)
-    list(APPEND TARGET_LIBM_ENTRYPOINTS
-      # math.h C23 mixed _Float16 and _Float128 entrypoints
-      libc.src.math.f16addf128
-      libc.src.math.f16divf128
-      libc.src.math.f16fmaf128
-      libc.src.math.f16mulf128
-      libc.src.math.f16sqrtf128
-      libc.src.math.f16subf128
-    )
-  endif()
-endif()
-
-if(LIBC_TYPES_HAS_CFLOAT128)
-  list(APPEND TARGET_LIBM_ENTRYPOINTS
-    # complex.h C23 _Complex _Float128 entrypoints
-    libc.src.complex.crealf128
-    libc.src.complex.cimagf128
-    libc.src.complex.conjf128
-    libc.src.complex.cprojf128
-  )
-endif()
-
-if(LIBC_TYPES_HAS_FLOAT128)
-  list(APPEND TARGET_LIBM_ENTRYPOINTS
-    # math.h C23 _Float128 entrypoints
-    libc.src.math.atan2f128
-    libc.src.math.canonicalizef128
-    libc.src.math.ceilf128
-    libc.src.math.copysignf128
-    libc.src.math.daddf128
-    libc.src.math.ddivf128
-    libc.src.math.dfmaf128
-    libc.src.math.dmulf128
-    libc.src.math.dsqrtf128
-    libc.src.math.dsubf128
-    libc.src.math.fabsf128
-    libc.src.math.faddf128
-    libc.src.math.fdimf128
-    libc.src.math.fdivf128
-    libc.src.math.ffmaf128
-    libc.src.math.floorf128
-    libc.src.math.fmaxf128
-    libc.src.math.fmaximum_mag_numf128
-    libc.src.math.fmaximum_magf128
-    libc.src.math.fmaximum_numf128
-    libc.src.math.fmaximumf128
-    libc.src.math.fminf128
-    libc.src.math.fminimum_mag_numf128
-    libc.src.math.fminimum_magf128
-    libc.src.math.fminimum_numf128
-    libc.src.math.fminimumf128
-    libc.src.math.fmodf128
-    libc.src.math.fmulf128
-    libc.src.math.frexpf128
-    libc.src.math.fromfpf128
-    libc.src.math.fromfpxf128
-    libc.src.math.fsqrtf128
-    libc.src.math.fsubf128
-    libc.src.math.getpayloadf128
-    libc.src.math.ilogbf128
-    libc.src.math.iscanonicalf128
-    libc.src.math.issignalingf128
-    libc.src.math.ldexpf128
-    libc.src.math.llogbf128
-    libc.src.math.llrintf128
-    libc.src.math.llroundf128
-    libc.src.math.logbf128
-    libc.src.math.lrintf128
-    libc.src.math.lroundf128
-    libc.src.math.modff128
-    libc.src.math.nanf128
-    libc.src.math.nearbyintf128
-    libc.src.math.nextafterf128
-    libc.src.math.nextdownf128
-    libc.src.math.nextupf128
-    libc.src.math.remainderf128
-    libc.src.math.remquof128
-    libc.src.math.rintf128
-    libc.src.math.roundevenf128
-    libc.src.math.roundf128
-    libc.src.math.scalblnf128
-    libc.src.math.scalbnf128
-    libc.src.math.setpayloadf128
-    libc.src.math.setpayloadsigf128
-    libc.src.math.sqrtf128
-    libc.src.math.totalorderf128
-    libc.src.math.totalordermagf128
-    libc.src.math.truncf128
-    libc.src.math.ufromfpf128
-    libc.src.math.ufromfpxf128
-  )
-endif()
-
-list(APPEND TARGET_LIBM_ENTRYPOINTS
-  # bfloat16 entrypoints
-  libc.src.math.bf16add
-  libc.src.math.bf16addf
-  libc.src.math.bf16addl
-  libc.src.math.bf16div
-  libc.src.math.bf16divf
-  libc.src.math.bf16divl
-  libc.src.math.bf16fma
-  libc.src.math.bf16fmaf
-  libc.src.math.bf16fmal
-  libc.src.math.bf16mul
-  libc.src.math.bf16mulf
-  libc.src.math.bf16mull
-  libc.src.math.bf16sub
-  libc.src.math.bf16subf
-  libc.src.math.bf16subl
-  libc.src.math.canonicalizebf16
-  libc.src.math.ceilbf16
-  libc.src.math.copysignbf16
-  libc.src.math.fabsbf16
-  libc.src.math.fdimbf16
-  libc.src.math.floorbf16
-  libc.src.math.fmaxbf16
-  libc.src.math.fmaximumbf16
-  libc.src.math.fmaximum_magbf16
-  libc.src.math.fmaximum_mag_numbf16
-  libc.src.math.fmaximum_numbf16
-  libc.src.math.fminbf16
-  libc.src.math.fminimumbf16
-  libc.src.math.fminimum_magbf16
-  libc.src.math.fminimum_mag_numbf16
-  libc.src.math.fminimum_numbf16
-  libc.src.math.fmodbf16
-  libc.src.math.frexpbf16
-  libc.src.math.fromfpbf16
-  libc.src.math.fromfpxbf16
-  libc.src.math.getpayloadbf16
-  libc.src.math.ilogbbf16
-  libc.src.math.iscanonicalbf16
-  libc.src.math.issignalingbf16
-  libc.src.math.ldexpbf16
-  libc.src.math.llogbbf16
-  libc.src.math.llrintbf16
-  libc.src.math.llroundbf16
-  libc.src.math.log_bf16
-  libc.src.math.logbbf16
-  libc.src.math.lrintbf16
-  libc.src.math.lroundbf16
-  libc.src.math.modfbf16
-  libc.src.math.nanbf16
-  libc.src.math.nearbyintbf16
-  libc.src.math.nextafterbf16
-  libc.src.math.nextdownbf16
-  libc.src.math.nexttowardbf16
-  libc.src.math.nextupbf16
-  libc.src.math.remainderbf16
-  libc.src.math.remquobf16
-  libc.src.math.rintbf16
-  libc.src.math.roundbf16
-  libc.src.math.roundevenbf16
-  libc.src.math.scalblnbf16
-  libc.src.math.scalbnbf16
-  libc.src.math.setpayloadbf16
-  libc.src.math.setpayloadsigbf16
-  libc.src.math.sqrtbf16
-  libc.src.math.truncbf16
-  libc.src.math.totalorderbf16
-  libc.src.math.totalordermagbf16
-  libc.src.math.ufromfpbf16
-  libc.src.math.ufromfpxbf16
-)
-
-if(LIBC_TYPES_HAS_FLOAT128)
-  list(APPEND TARGET_LIBM_ENTRYPOINTS
-    # math.h C++23 mixed bfloat16 and _Float128 entrypoints
-    libc.src.math.bf16addf128
-    libc.src.math.bf16divf128
-    libc.src.math.bf16fmaf128
-    libc.src.math.bf16mulf128
-    libc.src.math.bf16subf128
-  )
-endif()
-
-if(LIBC_COMPILER_HAS_FIXED_POINT)
-  list(APPEND TARGET_LIBM_ENTRYPOINTS
-    # stdfix.h _Fract and _Accum entrypoints
-    libc.src.stdfix.abshk
-    libc.src.stdfix.abshr
-    libc.src.stdfix.absk
-    libc.src.stdfix.abslk
-    libc.src.stdfix.abslr
-    libc.src.stdfix.absr
-    libc.src.stdfix.exphk
-    libc.src.stdfix.expk
-    libc.src.stdfix.roundhk
-    libc.src.stdfix.roundhr
-    libc.src.stdfix.roundk
-    libc.src.stdfix.roundlk
-    libc.src.stdfix.roundlr
-    libc.src.stdfix.roundr
-    libc.src.stdfix.rounduhk
-    libc.src.stdfix.rounduhr
-    libc.src.stdfix.rounduk
-    libc.src.stdfix.roundulk
-    libc.src.stdfix.roundulr
-    libc.src.stdfix.roundur
-    libc.src.stdfix.sqrtuhk
-    libc.src.stdfix.sqrtuhr
-    libc.src.stdfix.sqrtuk
-    libc.src.stdfix.sqrtur
-    # libc.src.stdfix.sqrtulk
-    libc.src.stdfix.sqrtulr
-    libc.src.stdfix.uhksqrtus
-    libc.src.stdfix.uksqrtui
-    libc.src.stdfix.hrbits
-    libc.src.stdfix.uhrbits
-    libc.src.stdfix.rbits
-    libc.src.stdfix.urbits
-    libc.src.stdfix.lrbits
-    libc.src.stdfix.ulrbits
-    libc.src.stdfix.hkbits
-    libc.src.stdfix.uhkbits
-    libc.src.stdfix.kbits
-    libc.src.stdfix.ukbits
-    libc.src.stdfix.lkbits
-    libc.src.stdfix.ulkbits
-    libc.src.stdfix.bitshr
-    libc.src.stdfix.bitsr
-    libc.src.stdfix.bitslr
-    libc.src.stdfix.bitshk
-    libc.src.stdfix.bitsk
-    libc.src.stdfix.bitslk
-    libc.src.stdfix.bitsuhr
-    libc.src.stdfix.bitsur
-    libc.src.stdfix.bitsulr
-    libc.src.stdfix.bitsuhk
-    libc.src.stdfix.bitsuk
-    libc.src.stdfix.bitsulk
-    libc.src.stdfix.countlshr
-    libc.src.stdfix.countlsr
-    libc.src.stdfix.countlslr
-    libc.src.stdfix.countlshk
-    libc.src.stdfix.countlsk
-    libc.src.stdfix.countlslk
-    libc.src.stdfix.countlsuhr
-    libc.src.stdfix.countlsur
-    libc.src.stdfix.countlsulr
-    libc.src.stdfix.countlsuhk
-    libc.src.stdfix.countlsuk
-    libc.src.stdfix.countlsulk
-    libc.src.stdfix.idivr
-    libc.src.stdfix.idivlr
-    libc.src.stdfix.idivk
-    libc.src.stdfix.idivlk
-    libc.src.stdfix.idivur
-    libc.src.stdfix.idivulr
-    libc.src.stdfix.idivuk
-    libc.src.stdfix.idivulk
-    libc.src.stdfix.rdivi
-  )
-endif()
-
-if(LLVM_LIBC_FULL_BUILD)
-  list(APPEND TARGET_LIBC_ENTRYPOINTS
-    # ctype.h entrypoints
-    libc.src.ctype.isalnum_l
-    libc.src.ctype.isalpha_l
-    libc.src.ctype.isblank_l
-    libc.src.ctype.iscntrl_l
-    libc.src.ctype.isdigit_l
-    libc.src.ctype.isgraph_l
-    libc.src.ctype.islower_l
-    libc.src.ctype.isprint_l
-    libc.src.ctype.ispunct_l
-    libc.src.ctype.isspace_l
-    libc.src.ctype.isupper_l
-    libc.src.ctype.isxdigit_l
-    libc.src.ctype.tolower_l
-    libc.src.ctype.toupper_l
-
-    # stdlib.h entrypoints
-    libc.src.stdlib.strtod_l
-    libc.src.stdlib.strtof_l
-    libc.src.stdlib.strtol_l
-    libc.src.stdlib.strtold_l
-    libc.src.stdlib.strtoll_l
-    libc.src.stdlib.strtoul_l
-    libc.src.stdlib.strtoull_l
-
-    # string.h entrypoints
-    libc.src.string.strcoll_l
-    libc.src.string.strxfrm_l
-
-    # strings.h entrypoints
-    libc.src.strings.strcasecmp_l
-    libc.src.strings.strncasecmp_l
-
-    # assert.h entrypoints
-    libc.src.assert.__assert_fail
-
-    # compiler entrypoints (no corresponding header)
-    libc.src.compiler.__stack_chk_fail
-
-    # dirent.h entrypoints
-    libc.src.dirent.closedir
-    libc.src.dirent.dirfd
-    libc.src.dirent.opendir
-    libc.src.dirent.readdir
-
-    # arpa/inet.h entrypoints
-    libc.src.arpa.inet.htonl
-    libc.src.arpa.inet.htons
-    libc.src.arpa.inet.inet_addr
-    libc.src.arpa.inet.inet_aton
-    libc.src.arpa.inet.ntohl
-    libc.src.arpa.inet.ntohs
-
-    # pthread.h entrypoints
-    libc.src.pthread.pthread_atfork
-    libc.src.pthread.pthread_attr_destroy
-    libc.src.pthread.pthread_attr_getdetachstate
-    libc.src.pthread.pthread_attr_getguardsize
-    libc.src.pthread.pthread_attr_getstack
-    libc.src.pthread.pthread_attr_getstacksize
-    libc.src.pthread.pthread_attr_init
-    libc.src.pthread.pthread_attr_setdetachstate
-    libc.src.pthread.pthread_attr_setguardsize
-    libc.src.pthread.pthread_attr_setstack
-    libc.src.pthread.pthread_attr_setstacksize
-    libc.src.pthread.pthread_condattr_destroy
-    libc.src.pthread.pthread_condattr_getclock
-    libc.src.pthread.pthread_condattr_getpshared
-    libc.src.pthread.pthread_condattr_init
-    libc.src.pthread.pthread_condattr_setclock
-    libc.src.pthread.pthread_condattr_setpshared
-    libc.src.pthread.pthread_create
-    libc.src.pthread.pthread_detach
-    libc.src.pthread.pthread_equal
-    libc.src.pthread.pthread_exit
-    libc.src.pthread.pthread_getname_np
-    libc.src.pthread.pthread_getspecific
-    libc.src.pthread.pthread_join
-    libc.src.pthread.pthread_key_create
-    libc.src.pthread.pthread_key_delete
-    libc.src.pthread.pthread_barrier_init
-    libc.src.pthread.pthread_barrier_wait
-    libc.src.pthread.pthread_barrier_destroy
-    libc.src.pthread.pthread_mutex_destroy
-    libc.src.pthread.pthread_mutex_init
-    libc.src.pthread.pthread_mutex_lock
-    libc.src.pthread.pthread_mutex_unlock
-    libc.src.pthread.pthread_mutexattr_destroy
-    libc.src.pthread.pthread_mutexattr_getpshared
-    libc.src.pthread.pthread_mutexattr_getrobust
-    libc.src.pthread.pthread_mutexattr_gettype
-    libc.src.pthread.pthread_mutexattr_init
-    libc.src.pthread.pthread_mutexattr_setpshared
-    libc.src.pthread.pthread_mutexattr_setrobust
-    libc.src.pthread.pthread_mutexattr_settype
-    libc.src.pthread.pthread_once
-    libc.src.pthread.pthread_rwlock_clockrdlock
-    libc.src.pthread.pthread_rwlock_clockwrlock
-    libc.src.pthread.pthread_rwlock_destroy
-    libc.src.pthread.pthread_rwlock_init
-    libc.src.pthread.pthread_rwlock_rdlock
-    libc.src.pthread.pthread_rwlock_timedrdlock
-    libc.src.pthread.pthread_rwlock_timedwrlock
-    libc.src.pthread.pthread_rwlock_tryrdlock
-    libc.src.pthread.pthread_rwlock_trywrlock
-    libc.src.pthread.pthread_rwlock_unlock
-    libc.src.pthread.pthread_rwlock_wrlock
-    libc.src.pthread.pthread_rwlockattr_destroy
-    libc.src.pthread.pthread_rwlockattr_getkind_np
-    libc.src.pthread.pthread_rwlockattr_getpshared
-    libc.src.pthread.pthread_rwlockattr_init
-    libc.src.pthread.pthread_rwlockattr_setkind_np
-    libc.src.pthread.pthread_rwlockattr_setpshared
-    libc.src.pthread.pthread_spin_destroy
-    libc.src.pthread.pthread_spin_init
-    libc.src.pthread.pthread_spin_lock
-    libc.src.pthread.pthread_spin_trylock
-    libc.src.pthread.pthread_spin_unlock
-    libc.src.pthread.pthread_self
-    libc.src.pthread.pthread_setname_np
-    libc.src.pthread.pthread_setspecific
-
-    # sched.h entrypoints
-    libc.src.sched.__sched_getcpucount
-    libc.src.sched.__sched_setcpuzero
-    libc.src.sched.__sched_setcpuset
-    libc.src.sched.__sched_getcpuisset
-
-    # setjmp.h entrypoints
-    libc.src.setjmp.longjmp
-    libc.src.setjmp.setjmp
-    libc.src.setjmp.siglongjmp
-    libc.src.setjmp.sigsetjmp
-
-    # stdio.h entrypoints
-    libc.src.stdio.clearerr
-    libc.src.stdio.clearerr_unlocked
-    libc.src.stdio.fclose
-    libc.src.stdio.fdopen
-    libc.src.stdio.feof
-    libc.src.stdio.feof_unlocked
-    libc.src.stdio.ferror
-    libc.src.stdio.ferror_unlocked
-    libc.src.stdio.fflush
-    libc.src.stdio.fgetc
-    libc.src.stdio.fgetc_unlocked
-    libc.src.stdio.fgets
-    libc.src.stdio.fileno
-    libc.src.stdio.flockfile
-    libc.src.stdio.fopen
-    libc.src.stdio.fopencookie
-    libc.src.stdio.fputc
-    libc.src.stdio.fputs
-    libc.src.stdio.fread
-    libc.src.stdio.fread_unlocked
-    libc.src.stdio.fseek
-    libc.src.stdio.fseeko
-    libc.src.stdio.ftell
-    libc.src.stdio.ftello
-    libc.src.stdio.funlockfile
-    libc.src.stdio.fwrite
-    libc.src.stdio.fwrite_unlocked
-    libc.src.stdio.getc
-    libc.src.stdio.getc_unlocked
-    libc.src.stdio.getchar
-    libc.src.stdio.getchar_unlocked
-    libc.src.stdio.perror
-    libc.src.stdio.putc
-    libc.src.stdio.putchar
-    libc.src.stdio.puts
-    libc.src.stdio.setbuf
-    libc.src.stdio.setvbuf
-    libc.src.stdio.stderr
-    libc.src.stdio.stdin
-    libc.src.stdio.stdout
-    libc.src.stdio.ungetc
-
-    # stdlib.h entrypoints
-    libc.src.stdlib._Exit
-    libc.src.stdlib.abort
-    libc.src.stdlib.at_quick_exit
-    libc.src.stdlib.atexit
-    libc.src.stdlib.exit
-    libc.src.stdlib.getenv
-    libc.src.stdlib.mbstowcs
-    libc.src.stdlib.mbtowc
-    libc.src.stdlib.quick_exit
-    libc.src.stdlib.wcstombs
-    libc.src.stdlib.wctomb
-
-    # signal.h entrypoints
-    libc.src.signal.kill
-    libc.src.signal.raise
-    libc.src.signal.sigaction
-    libc.src.signal.sigaddset
-    libc.src.signal.sigaltstack
-    libc.src.signal.sigdelset
-    libc.src.signal.sigemptyset
-    libc.src.signal.sigfillset
-    libc.src.signal.signal
-    libc.src.signal.sigprocmask
-
-    # spawn.h entrypoints
-    libc.src.spawn.posix_spawn
-    libc.src.spawn.posix_spawn_file_actions_addclose
-    libc.src.spawn.posix_spawn_file_actions_adddup2
-    libc.src.spawn.posix_spawn_file_actions_addopen
-    libc.src.spawn.posix_spawn_file_actions_destroy
-    libc.src.spawn.posix_spawn_file_actions_init
-
-    # search.h entrypoints
-    libc.src.search.hcreate
-    libc.src.search.hcreate_r
-    libc.src.search.hdestroy
-    libc.src.search.hdestroy_r
-    libc.src.search.hsearch
-    libc.src.search.hsearch_r
-    libc.src.search.insque
-    libc.src.search.lfind
-    libc.src.search.lsearch
-    libc.src.search.remque
-
-    # threads.h entrypoints
-    libc.src.threads.call_once
-    libc.src.threads.cnd_broadcast
-    libc.src.threads.cnd_destroy
-    libc.src.threads.cnd_init
-    libc.src.threads.cnd_signal
-    libc.src.threads.cnd_wait
-    libc.src.threads.mtx_destroy
-    libc.src.threads.mtx_init
-    libc.src.threads.mtx_lock
-    libc.src.threads.mtx_unlock
-    libc.src.threads.thrd_create
-    libc.src.threads.thrd_current
-    libc.src.threads.thrd_detach
-    libc.src.threads.thrd_equal
-    libc.src.threads.thrd_exit
-    libc.src.threads.thrd_join
-    libc.src.threads.tss_create
-    libc.src.threads.tss_delete
-    libc.src.threads.tss_get
-    libc.src.threads.tss_set
-
-    # time.h entrypoints
-    libc.src.time.asctime
-    libc.src.time.asctime_r
-    libc.src.time.ctime
-    libc.src.time.ctime_r
-    libc.src.time.clock
-    libc.src.time.clock_gettime
-    libc.src.time.clock_settime
-    libc.src.time.difftime
-    libc.src.time.gettimeofday
-    libc.src.time.gmtime
-    libc.src.time.gmtime_r
-    libc.src.time.localtime
-    libc.src.time.localtime_r
-    libc.src.time.mktime
-    libc.src.time.nanosleep
-    libc.src.time.strftime
-    libc.src.time.strftime_l
-    libc.src.time.time
-    libc.src.time.timespec_get
-
-    # locale.h entrypoints
-    libc.src.locale.localeconv
-    libc.src.locale.duplocale
-    libc.src.locale.freelocale
-    libc.src.locale.localeconv
-    libc.src.locale.newlocale
-    libc.src.locale.setlocale
-    libc.src.locale.uselocale
-
-    # unistd.h entrypoints
-    libc.src.unistd.__llvm_libc_syscall
-    libc.src.unistd._exit
-    libc.src.unistd.environ
-    libc.src.unistd.execv
-    libc.src.unistd.fork
-    libc.src.unistd.getopt
-    libc.src.unistd.optarg
-    libc.src.unistd.opterr
-    libc.src.unistd.optind
-    libc.src.unistd.optopt
-    libc.src.unistd.swab
-
-    # sys/select.h entrypoints
-    libc.src.sys.select.select
-
-    # sys/socket.h entrypoints
-    libc.src.sys.socket.socket
-    libc.src.sys.socket.bind
-    libc.src.sys.socket.socketpair
-    libc.src.sys.socket.send
-    libc.src.sys.socket.sendto
-    libc.src.sys.socket.sendmsg
-    libc.src.sys.socket.recv
-    libc.src.sys.socket.recvfrom
-    libc.src.sys.socket.recvmsg
-
-    # wchar.h entrypoints
-    libc.src.wchar.mblen
-    libc.src.wchar.mbrlen
-    libc.src.wchar.mbsinit
-    libc.src.wchar.mbrtowc
-    libc.src.wchar.mbsrtowcs
-    libc.src.wchar.mbsnrtowcs
-    libc.src.wchar.wcrtomb
-    libc.src.wchar.wcsrtombs
-    libc.src.wchar.wcsnrtombs
-
-    # nl_types.h entrypoints
-    libc.src.nl_types.catopen 
-    libc.src.nl_types.catclose
-    libc.src.nl_types.catgets
-  )
-endif()
-
-set(TARGET_LLVMLIBC_ENTRYPOINTS
-  ${TARGET_LIBC_ENTRYPOINTS}
-  ${TARGET_LIBM_ENTRYPOINTS}
-)
+set(TARGET_LIBC_ENTRYPOINTS
+    # ctype.h entrypoints
+    libc.src.ctype.isalnum
+    libc.src.ctype.isalpha
+    libc.src.ctype.isascii
+    libc.src.ctype.isblank
+    libc.src.ctype.iscntrl
+    libc.src.ctype.isdigit
+    libc.src.ctype.isgraph
+    libc.src.ctype.islower
+    libc.src.ctype.isprint
+    libc.src.ctype.ispunct
+    libc.src.ctype.isspace
+    libc.src.ctype.isupper
+    libc.src.ctype.isxdigit
+    libc.src.ctype.toascii
+    libc.src.ctype.tolower
+    libc.src.ctype.toupper
+
+    # dlfcn.h entrypoints
+    libc.src.dlfcn.dladdr
+    libc.src.dlfcn.dlclose
+    libc.src.dlfcn.dlerror
+    libc.src.dlfcn.dlopen
+    libc.src.dlfcn.dlsym
+
+    # errno.h entrypoints
+    libc.src.errno.errno
+
+    # fcntl.h entrypoints
+    libc.src.fcntl.creat
+    libc.src.fcntl.fcntl
+    libc.src.fcntl.open
+    libc.src.fcntl.openat
+
+    # poll.h entrypoints
+    libc.src.poll.poll
+
+    # sched.h entrypoints
+    libc.src.sched.getcpu
+    libc.src.sched.sched_get_priority_max
+    libc.src.sched.sched_get_priority_min
+    libc.src.sched.sched_getaffinity
+    libc.src.sched.sched_getparam
+    libc.src.sched.sched_getscheduler
+    libc.src.sched.sched_rr_get_interval
+    libc.src.sched.sched_setaffinity
+    libc.src.sched.sched_setparam
+    libc.src.sched.sched_setscheduler
+    libc.src.sched.sched_yield
+
+    # string.h entrypoints
+    libc.src.string.memccpy
+    libc.src.string.memchr
+    libc.src.string.memcmp
+    libc.src.string.memcpy
+    libc.src.string.memmem
+    libc.src.string.memmove
+    libc.src.string.mempcpy
+    libc.src.string.memrchr
+    libc.src.string.memset
+    libc.src.string.memset_explicit
+    libc.src.string.stpcpy
+    libc.src.string.stpncpy
+    libc.src.string.strcasestr
+    libc.src.string.strcat
+    libc.src.string.strchr
+    libc.src.string.strchrnul
+    libc.src.string.strcmp
+    libc.src.string.strcoll
+    libc.src.string.strcpy
+    libc.src.string.strcspn
+    libc.src.string.strdup
+    libc.src.string.strerror
+    libc.src.string.strerror_r
+    libc.src.string.strlcat
+    libc.src.string.strlcpy
+    libc.src.string.strlen
+    libc.src.string.strncat
+    libc.src.string.strncmp
+    libc.src.string.strncpy
+    libc.src.string.strndup
+    libc.src.string.strnlen
+    libc.src.string.strpbrk
+    libc.src.string.strrchr
+    libc.src.string.strsep
+    libc.src.string.strsignal
+    libc.src.string.strspn
+    libc.src.string.strstr
+    libc.src.string.strtok
+    libc.src.string.strtok_r
+    libc.src.string.strxfrm
+
+    # strings.h entrypoints
+    libc.src.strings.bcmp
+    libc.src.strings.bcopy
+    libc.src.strings.bzero
+    libc.src.strings.ffs
+    libc.src.strings.ffsl
+    libc.src.strings.ffsll
+    libc.src.strings.index
+    libc.src.strings.rindex
+    libc.src.strings.strcasecmp
+    libc.src.strings.strncasecmp
+
+    # inttypes.h entrypoints
+    libc.src.inttypes.imaxabs
+    libc.src.inttypes.imaxdiv
+    libc.src.inttypes.strtoimax
+    libc.src.inttypes.strtoumax
+
+    # stdbit.h entrypoints
+    libc.src.stdbit.stdc_bit_ceil_uc
+    libc.src.stdbit.stdc_bit_ceil_ui
+    libc.src.stdbit.stdc_bit_ceil_ul
+    libc.src.stdbit.stdc_bit_ceil_ull
+    libc.src.stdbit.stdc_bit_ceil_us
+    libc.src.stdbit.stdc_bit_floor_uc
+    libc.src.stdbit.stdc_bit_floor_ui
+    libc.src.stdbit.stdc_bit_floor_ul
+    libc.src.stdbit.stdc_bit_floor_ull
+    libc.src.stdbit.stdc_bit_floor_us
+    libc.src.stdbit.stdc_bit_width_uc
+    libc.src.stdbit.stdc_bit_width_ui
+    libc.src.stdbit.stdc_bit_width_ul
+    libc.src.stdbit.stdc_bit_width_ull
+    libc.src.stdbit.stdc_bit_width_us
+    libc.src.stdbit.stdc_count_ones_uc
+    libc.src.stdbit.stdc_count_ones_ui
+    libc.src.stdbit.stdc_count_ones_ul
+    libc.src.stdbit.stdc_count_ones_ull
+    libc.src.stdbit.stdc_count_ones_us
+    libc.src.stdbit.stdc_count_zeros_uc
+    libc.src.stdbit.stdc_count_zeros_ui
+    libc.src.stdbit.stdc_count_zeros_ul
+    libc.src.stdbit.stdc_count_zeros_ull
+    libc.src.stdbit.stdc_count_zeros_us
+    libc.src.stdbit.stdc_first_leading_one_uc
+    libc.src.stdbit.stdc_first_leading_one_ui
+    libc.src.stdbit.stdc_first_leading_one_ul
+    libc.src.stdbit.stdc_first_leading_one_ull
+    libc.src.stdbit.stdc_first_leading_one_us
+    libc.src.stdbit.stdc_first_leading_zero_uc
+    libc.src.stdbit.stdc_first_leading_zero_ui
+    libc.src.stdbit.stdc_first_leading_zero_ul
+    libc.src.stdbit.stdc_first_leading_zero_ull
+    libc.src.stdbit.stdc_first_leading_zero_us
+    libc.src.stdbit.stdc_first_trailing_one_uc
+    libc.src.stdbit.stdc_first_trailing_one_ui
+    libc.src.stdbit.stdc_first_trailing_one_ul
+    libc.src.stdbit.stdc_first_trailing_one_ull
+    libc.src.stdbit.stdc_first_trailing_one_us
+    libc.src.stdbit.stdc_first_trailing_zero_uc
+    libc.src.stdbit.stdc_first_trailing_zero_ui
+    libc.src.stdbit.stdc_first_trailing_zero_ul
+    libc.src.stdbit.stdc_first_trailing_zero_ull
+    libc.src.stdbit.stdc_first_trailing_zero_us
+    libc.src.stdbit.stdc_has_single_bit_uc
+    libc.src.stdbit.stdc_has_single_bit_ui
+    libc.src.stdbit.stdc_has_single_bit_ul
+    libc.src.stdbit.stdc_has_single_bit_ull
+    libc.src.stdbit.stdc_has_single_bit_us
+    libc.src.stdbit.stdc_leading_ones_uc
+    libc.src.stdbit.stdc_leading_ones_ui
+    libc.src.stdbit.stdc_leading_ones_ul
+    libc.src.stdbit.stdc_leading_ones_ull
+    libc.src.stdbit.stdc_leading_ones_us
+    libc.src.stdbit.stdc_leading_zeros_uc
+    libc.src.stdbit.stdc_leading_zeros_ui
+    libc.src.stdbit.stdc_leading_zeros_ul
+    libc.src.stdbit.stdc_leading_zeros_ull
+    libc.src.stdbit.stdc_leading_zeros_us
+    libc.src.stdbit.stdc_trailing_ones_uc
+    libc.src.stdbit.stdc_trailing_ones_ui
+    libc.src.stdbit.stdc_trailing_ones_ul
+    libc.src.stdbit.stdc_trailing_ones_ull
+    libc.src.stdbit.stdc_trailing_ones_us
+    libc.src.stdbit.stdc_trailing_zeros_uc
+    libc.src.stdbit.stdc_trailing_zeros_ui
+    libc.src.stdbit.stdc_trailing_zeros_ul
+    libc.src.stdbit.stdc_trailing_zeros_ull
+    libc.src.stdbit.stdc_trailing_zeros_us
+
+    # stdlib.h entrypoints
+    libc.src.stdlib.a64l
+    libc.src.stdlib.abs
+    libc.src.stdlib.atof
+    libc.src.stdlib.atoi
+    libc.src.stdlib.atol
+    libc.src.stdlib.atoll
+    libc.src.stdlib.bsearch
+    libc.src.stdlib.div
+    libc.src.stdlib.l64a
+    libc.src.stdlib.labs
+    libc.src.stdlib.ldiv
+    libc.src.stdlib.llabs
+    libc.src.stdlib.lldiv
+    libc.src.stdlib.memalignment
+    libc.src.stdlib.qsort
+    libc.src.stdlib.qsort_r
+    libc.src.stdlib.rand
+    libc.src.stdlib.srand
+    libc.src.stdlib.strfromd
+    libc.src.stdlib.strfromf
+    libc.src.stdlib.strfroml
+    libc.src.stdlib.strtod
+    libc.src.stdlib.strtof
+    libc.src.stdlib.strtol
+    libc.src.stdlib.strtold
+    libc.src.stdlib.strtoll
+    libc.src.stdlib.strtoul
+    libc.src.stdlib.strtoull
+
+    # stdlib.h external entrypoints
+    libc.src.stdlib.aligned_alloc
+    libc.src.stdlib.calloc
+    libc.src.stdlib.free
+    libc.src.stdlib.malloc
+    libc.src.stdlib.realloc
+
+    # stdio.h entrypoints
+    libc.src.stdio.fprintf
+    libc.src.stdio.fscanf
+    libc.src.stdio.vfscanf
+    libc.src.stdio.printf
+    libc.src.stdio.remove
+    libc.src.stdio.rename
+    libc.src.stdio.scanf
+    libc.src.stdio.vscanf
+    libc.src.stdio.snprintf
+    libc.src.stdio.sprintf
+    libc.src.stdio.asprintf
+    libc.src.stdio.sscanf
+    libc.src.stdio.vsscanf
+    libc.src.stdio.vfprintf
+    libc.src.stdio.vprintf
+    libc.src.stdio.vsnprintf
+    libc.src.stdio.vsprintf
+    libc.src.stdio.vasprintf
+
+    # sys/epoll.h entrypoints
+    libc.src.sys.epoll.epoll_create
+    libc.src.sys.epoll.epoll_create1
+    libc.src.sys.epoll.epoll_ctl
+    libc.src.sys.epoll.epoll_pwait
+    libc.src.sys.epoll.epoll_wait
+    # TODO: Need to check if pwait2 is available before providing.
+    # https://github.com/llvm/llvm-project/issues/80060
+    # libc.src.sys.epoll.epoll_pwait2
+
+    # sys/ioctl.h entrypoints
+    libc.src.sys.ioctl.ioctl
+
+    # sys/mman.h entrypoints
+    libc.src.sys.mman.madvise
+    libc.src.sys.mman.mincore
+    libc.src.sys.mman.mlock
+    libc.src.sys.mman.mlock2
+    libc.src.sys.mman.mlockall
+    libc.src.sys.mman.mmap
+    libc.src.sys.mman.mremap
+    libc.src.sys.mman.mprotect
+    libc.src.sys.mman.msync
+    libc.src.sys.mman.munlock
+    libc.src.sys.mman.munlockall
+    libc.src.sys.mman.munmap
+    libc.src.sys.mman.pkey_alloc
+    libc.src.sys.mman.pkey_free
+    libc.src.sys.mman.pkey_get
+    libc.src.sys.mman.pkey_mprotect
+    libc.src.sys.mman.pkey_set
+    libc.src.sys.mman.remap_file_pages
+    libc.src.sys.mman.posix_madvise
+    libc.src.sys.mman.shm_open
+    libc.src.sys.mman.shm_unlink
+
+    # sys/random.h entrypoints
+    libc.src.sys.random.getrandom
+
+    # sys/resource.h entrypoints
+    libc.src.sys.resource.getrlimit
+    libc.src.sys.resource.setrlimit
+
+    # sys/sendfile entrypoints
+    libc.src.sys.sendfile.sendfile
+
+    # sys/stat.h entrypoints
+    libc.src.sys.stat.chmod
+    libc.src.sys.stat.fchmod
+    libc.src.sys.stat.fchmodat
+    libc.src.sys.stat.fstat
+    libc.src.sys.stat.lstat
+    libc.src.sys.stat.mkdir
+    libc.src.sys.stat.mkdirat
+    libc.src.sys.stat.stat
+
+    # sys/statvfs.h
+    libc.src.sys.statvfs.fstatvfs
+    libc.src.sys.statvfs.statvfs
+
+    # sys/utimes.h entrypoints
+    libc.src.sys.time.utimes
+
+    # sys/utsname.h entrypoints
+    libc.src.sys.utsname.uname
+
+    # sys/wait.h entrypoints
+    libc.src.sys.wait.wait
+    libc.src.sys.wait.wait4
+    libc.src.sys.wait.waitpid
+
+    # sys/prctl.h entrypoints
+    libc.src.sys.prctl.prctl
+
+    # sys/auxv.h entrypoints
+    libc.src.sys.auxv.getauxval
+
+    # termios.h entrypoints
+    libc.src.termios.cfgetispeed
+    libc.src.termios.cfgetospeed
+    libc.src.termios.cfsetispeed
+    libc.src.termios.cfsetospeed
+    libc.src.termios.tcdrain
+    libc.src.termios.tcflow
+    libc.src.termios.tcflush
+    libc.src.termios.tcgetattr
+    libc.src.termios.tcgetsid
+    libc.src.termios.tcsendbreak
+    libc.src.termios.tcsetattr
+
+    # unistd.h entrypoints
+    libc.src.unistd.access
+    libc.src.unistd.chdir
+    libc.src.unistd.chown
+    libc.src.unistd.close
+    libc.src.unistd.dup
+    libc.src.unistd.dup2
+    libc.src.unistd.dup3
+    libc.src.unistd.execve
+    libc.src.unistd.faccessat
+    libc.src.unistd.fchdir
+    libc.src.unistd.fchown
+    libc.src.unistd.fpathconf
+    libc.src.unistd.fsync
+    libc.src.unistd.ftruncate
+    libc.src.unistd.getcwd
+    libc.src.unistd.getentropy
+    libc.src.unistd.geteuid
+    libc.src.unistd.gethostname
+    libc.src.unistd.getpagesize
+    libc.src.unistd.getpid
+    libc.src.unistd.getppid
+    libc.src.unistd.getsid
+    libc.src.unistd.gettid
+    libc.src.unistd.getgid
+    libc.src.unistd.getuid
+    libc.src.unistd.isatty
+    libc.src.unistd.link
+    libc.src.unistd.linkat
+    libc.src.unistd.lseek
+    libc.src.unistd.pathconf
+    libc.src.unistd.pipe
+    libc.src.unistd.pipe2
+    libc.src.unistd.pread
+    libc.src.unistd.pwrite
+    libc.src.unistd.read
+    libc.src.unistd.readlink
+    libc.src.unistd.readlinkat
+    libc.src.unistd.rmdir
+    libc.src.unistd.setsid
+    libc.src.unistd.symlink
+    libc.src.unistd.symlinkat
+    libc.src.unistd.sysconf
+    libc.src.unistd.truncate
+    libc.src.unistd.unlink
+    libc.src.unistd.unlinkat
+    libc.src.unistd.write
+
+    # wchar.h entrypoints
+    libc.src.wchar.btowc
+    libc.src.wchar.wcslen
+    libc.src.wchar.wcsnlen
+    libc.src.wchar.wctob
+    libc.src.wchar.wmemmove
+    libc.src.wchar.wmemset
+    libc.src.wchar.wcschr
+    libc.src.wchar.wcsncmp
+    libc.src.wchar.wcscmp
+    libc.src.wchar.wcspbrk
+    libc.src.wchar.wcsrchr
+    libc.src.wchar.wcsspn
+    libc.src.wchar.wcscspn
+    libc.src.wchar.wcsdup
+    libc.src.wchar.wmemcmp
+    libc.src.wchar.wmempcpy
+    libc.src.wchar.wmemcpy
+    libc.src.wchar.wcsncpy
+    libc.src.wchar.wcscat
+    libc.src.wchar.wcsstr
+    libc.src.wchar.wcsncat
+    libc.src.wchar.wcslcat
+    libc.src.wchar.wcscpy
+    libc.src.wchar.wcslcpy
+    libc.src.wchar.wmemchr
+    libc.src.wchar.wcpcpy
+    libc.src.wchar.wcpncpy
+    libc.src.wchar.wcstod
+    libc.src.wchar.wcstof
+    libc.src.wchar.wcstok
+    libc.src.wchar.wcstol
+    libc.src.wchar.wcstold
+    libc.src.wchar.wcstoll
+    libc.src.wchar.wcstoul
+    libc.src.wchar.wcstoull
+
+    # wctype.h entrypoints
+    libc.src.wctype.iswalpha
+
+    # sys/uio.h entrypoints
+    libc.src.sys.uio.writev
+    libc.src.sys.uio.readv
+
+    # sys/time.h entrypoints
+    libc.src.sys.time.setitimer
+    libc.src.sys.time.getitimer
+)
+
+if(LLVM_LIBC_INCLUDE_SCUDO)
+  list(APPEND TARGET_LIBC_ENTRYPOINTS
+    # malloc.h external entrypoints
+    libc.src.stdlib.mallopt
+  )
+endif()
+
+set(TARGET_LIBM_ENTRYPOINTS
+    # complex.h entrypoints
+    libc.src.complex.creal
+    libc.src.complex.crealf
+    libc.src.complex.creall
+    libc.src.complex.cimag
+    libc.src.complex.cimagf
+    libc.src.complex.cimagl
+    libc.src.complex.conj
+    libc.src.complex.conjf
+    libc.src.complex.conjl
+    libc.src.complex.cproj
+    libc.src.complex.cprojf
+    libc.src.complex.cprojl
+
+    # fenv.h entrypoints
+    libc.src.fenv.feclearexcept
+    libc.src.fenv.fedisableexcept
+    libc.src.fenv.feenableexcept
+    libc.src.fenv.fegetenv
+    libc.src.fenv.fegetexcept
+    libc.src.fenv.fegetexceptflag
+    libc.src.fenv.fegetround
+    libc.src.fenv.feholdexcept
+    libc.src.fenv.feraiseexcept
+    libc.src.fenv.fesetenv
+    libc.src.fenv.fesetexcept
+    libc.src.fenv.fesetexceptflag
+    libc.src.fenv.fesetround
+    libc.src.fenv.fetestexcept
+    libc.src.fenv.fetestexceptflag
+    libc.src.fenv.feupdateenv
+
+    # math.h entrypoints
+    libc.src.math.acos
+    libc.src.math.acosf
+    libc.src.math.acoshf
+    libc.src.math.asin
+    libc.src.math.asinf
+    libc.src.math.asinhf
+    libc.src.math.atan2
+    libc.src.math.atan2f
+    libc.src.math.atan
+    libc.src.math.atanf
+    libc.src.math.atanhf
+    libc.src.math.canonicalize
+    libc.src.math.canonicalizef
+    libc.src.math.canonicalizel
+    libc.src.math.cbrt
+    libc.src.math.cbrtf
+    libc.src.math.ceil
+    libc.src.math.ceilf
+    libc.src.math.ceill
+    libc.src.math.copysign
+    libc.src.math.copysignf
+    libc.src.math.copysignl
+    libc.src.math.cos
+    libc.src.math.cosf
+    libc.src.math.coshf
+    libc.src.math.cospif
+    libc.src.math.dfmal
+    libc.src.math.dmull
+    libc.src.math.dsqrtl
+    libc.src.math.daddl
+    libc.src.math.ddivl
+    libc.src.math.dsubl
+    libc.src.math.erff
+    libc.src.math.exp
+    libc.src.math.exp10
+    libc.src.math.exp10f
+    libc.src.math.exp10m1f
+    libc.src.math.exp2
+    libc.src.math.exp2f
+    libc.src.math.exp2m1f
+    libc.src.math.expf
+    libc.src.math.expm1
+    libc.src.math.expm1f
+    libc.src.math.fabs
+    libc.src.math.fabsf
+    libc.src.math.fabsl
+    libc.src.math.fadd
+    libc.src.math.faddl
+    libc.src.math.fadd
+    libc.src.math.fdim
+    libc.src.math.fdimf
+    libc.src.math.fdiml
+    libc.src.math.fdiv
+    libc.src.math.fdivl
+    libc.src.math.ffma
+    libc.src.math.ffmal
+    libc.src.math.floor
+    libc.src.math.floorf
+    libc.src.math.floorl
+    libc.src.math.fma
+    libc.src.math.fmabf16
+    libc.src.math.fmaf
+    libc.src.math.fmax
+    libc.src.math.fmaxf
+    libc.src.math.fmaximum
+    libc.src.math.fmaximum_mag
+    libc.src.math.fmaximum_mag_num
+    libc.src.math.fmaximum_mag_numf
+    libc.src.math.fmaximum_mag_numl
+    libc.src.math.fmaximum_magf
+    libc.src.math.fmaximum_magl
+    libc.src.math.fmaximum_num
+    libc.src.math.fmaximum_numf
+    libc.src.math.fmaximum_numl
+    libc.src.math.fmaximumf
+    libc.src.math.fmaximuml
+    libc.src.math.fmaxl
+    libc.src.math.fmin
+    libc.src.math.fminf
+    libc.src.math.fminimum
+    libc.src.math.fminimum_mag
+    libc.src.math.fminimum_mag_num
+    libc.src.math.fminimum_mag_numf
+    libc.src.math.fminimum_mag_numl
+    libc.src.math.fminimum_magf
+    libc.src.math.fminimum_magl
+    libc.src.math.fminimum_num
+    libc.src.math.fminimum_numf
+    libc.src.math.fminimum_numl
+    libc.src.math.fminimumf
+    libc.src.math.fminimuml
+    libc.src.math.fminl
+    libc.src.math.fmod
+    libc.src.math.fmodf
+    libc.src.math.fmodl
+    libc.src.math.fmul
+    libc.src.math.fmull
+    libc.src.math.frexp
+    libc.src.math.frexpf
+    libc.src.math.frexpl
+    libc.src.math.fromfp
+    libc.src.math.fromfpf
+    libc.src.math.fromfpl
+    libc.src.math.fromfpx
+    libc.src.math.fromfpxf
+    libc.src.math.fromfpxl
+    libc.src.math.fsqrt
+    libc.src.math.fsqrtl
+    libc.src.math.fsub
+    libc.src.math.fsubl
+    libc.src.math.getpayload
+    libc.src.math.getpayloadf
+    libc.src.math.getpayloadl
+    libc.src.math.hypot
+    libc.src.math.hypotf
+    libc.src.math.ilogb
+    libc.src.math.ilogbf
+    libc.src.math.ilogbl
+    libc.src.math.iscanonical
+    libc.src.math.iscanonicalf
+    libc.src.math.iscanonicall
+    libc.src.math.isnan
+    libc.src.math.isnanf
+    libc.src.math.isnanl
+    libc.src.math.issignaling
+    libc.src.math.issignalingf
+    libc.src.math.issignalingl
+    libc.src.math.ldexp
+    libc.src.math.ldexpf
+    libc.src.math.ldexpl
+    libc.src.math.llogb
+    libc.src.math.llogbf
+    libc.src.math.llogbl
+    libc.src.math.llrint
+    libc.src.math.llrintf
+    libc.src.math.llrintl
+    libc.src.math.llround
+    libc.src.math.llroundf
+    libc.src.math.llroundl
+    libc.src.math.log
+    libc.src.math.log10
+    libc.src.math.log10f
+    libc.src.math.log1p
+    libc.src.math.log1pf
+    libc.src.math.log2
+    libc.src.math.log2f
+    libc.src.math.logb
+    libc.src.math.logbf
+    libc.src.math.logbl
+    libc.src.math.logf
+    libc.src.math.lrint
+    libc.src.math.lrintf
+    libc.src.math.lrintl
+    libc.src.math.lround
+    libc.src.math.lroundf
+    libc.src.math.lroundl
+    libc.src.math.modf
+    libc.src.math.modff
+    libc.src.math.modfl
+    libc.src.math.nan
+    libc.src.math.nanf
+    libc.src.math.nanl
+    libc.src.math.nearbyint
+    libc.src.math.nearbyintf
+    libc.src.math.nearbyintl
+    libc.src.math.nextafter
+    libc.src.math.nextafterf
+    libc.src.math.nextafterl
+    libc.src.math.nextdown
+    libc.src.math.nextdownf
+    libc.src.math.nextdownl
+    libc.src.math.nexttoward
+    libc.src.math.nexttowardf
+    libc.src.math.nexttowardl
+    libc.src.math.nextup
+    libc.src.math.nextupf
+    libc.src.math.nextupl
+    libc.src.math.pow
+    libc.src.math.powf
+    libc.src.math.remainder
+    libc.src.math.remainderf
+    libc.src.math.remainderl
+    libc.src.math.remquo
+    libc.src.math.remquof
+    libc.src.math.remquol
+    libc.src.math.rint
+    libc.src.math.rintf
+    libc.src.math.rintl
+    libc.src.math.round
+    libc.src.math.roundeven
+    libc.src.math.roundevenf
+    libc.src.math.roundevenl
+    libc.src.math.roundf
+    libc.src.math.roundl
+    libc.src.math.scalbln
+    libc.src.math.scalblnf
+    libc.src.math.scalblnl
+    libc.src.math.scalbn
+    libc.src.math.scalbnf
+    libc.src.math.scalbnl
+    libc.src.math.setpayload
+    libc.src.math.setpayloadf
+    libc.src.math.setpayloadl
+    libc.src.math.setpayloadsig
+    libc.src.math.setpayloadsigf
+    libc.src.math.setpayloadsigl
+    libc.src.math.sin
+    libc.src.math.sincos
+    libc.src.math.sincosf
+    libc.src.math.sinf
+    libc.src.math.sinhf
+    libc.src.math.sinpif
+    libc.src.math.sqrt
+    libc.src.math.sqrtf
+    libc.src.math.sqrtl
+    libc.src.math.tan
+    libc.src.math.tanf
+    libc.src.math.tanhf
+    libc.src.math.tanpif
+    libc.src.math.totalorder
+    libc.src.math.totalorderf
+    libc.src.math.totalorderl
+    libc.src.math.totalordermag
+    libc.src.math.totalordermagf
+    libc.src.math.totalordermagl
+    libc.src.math.trunc
+    libc.src.math.truncf
+    libc.src.math.truncl
+    libc.src.math.ufromfp
+    libc.src.math.ufromfpf
+    libc.src.math.ufromfpl
+    libc.src.math.ufromfpx
+    libc.src.math.ufromfpxf
+    libc.src.math.ufromfpxl
+)
+
+if(LIBC_TYPES_HAS_CFLOAT16)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # complex.h C23 _Complex _Float16 entrypoints
+    libc.src.complex.crealf16
+    libc.src.complex.cimagf16
+    libc.src.complex.conjf16
+    libc.src.complex.cprojf16
+  )
+endif()
+
+if(LIBC_TYPES_HAS_FLOAT16)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # math.h C23 _Float16 entrypoints
+    libc.src.math.acosf16
+    libc.src.math.acoshf16
+    libc.src.math.acospif16
+    libc.src.math.asinf16
+    libc.src.math.asinhf16
+    libc.src.math.asinpif16
+    libc.src.math.atanf16
+    libc.src.math.atanhf16
+    libc.src.math.atanpif16
+    libc.src.math.canonicalizef16
+    libc.src.math.ceilf16
+    libc.src.math.copysignf16
+    libc.src.math.cosf16
+    libc.src.math.coshf16
+    libc.src.math.cospif16
+    libc.src.math.exp10f16
+    libc.src.math.exp10m1f16
+    libc.src.math.exp2f16
+    libc.src.math.exp2m1f16
+    libc.src.math.expf16
+    libc.src.math.expm1f16
+    libc.src.math.f16add
+    libc.src.math.f16addf
+    libc.src.math.f16addl
+    libc.src.math.f16div
+    libc.src.math.f16divf
+    libc.src.math.f16divl
+    libc.src.math.f16fma
+    libc.src.math.f16fmaf
+    libc.src.math.f16fmal
+    libc.src.math.f16mul
+    libc.src.math.f16mulf
+    libc.src.math.f16mull
+    libc.src.math.f16sqrt
+    libc.src.math.f16sqrtf
+    libc.src.math.f16sqrtl
+    libc.src.math.f16sub
+    libc.src.math.f16subf
+    libc.src.math.f16subl
+    libc.src.math.fabsf16
+    libc.src.math.fdimf16
+    libc.src.math.floorf16
+    libc.src.math.fmaf16
+    libc.src.math.fmaxf16
+    libc.src.math.fmaximum_mag_numf16
+    libc.src.math.fmaximum_magf16
+    libc.src.math.fmaximum_numf16
+    libc.src.math.fmaximumf16
+    libc.src.math.fminf16
+    libc.src.math.fminimum_mag_numf16
+    libc.src.math.fminimum_magf16
+    libc.src.math.fminimum_numf16
+    libc.src.math.fminimumf16
+    libc.src.math.fmodf16
+    libc.src.math.frexpf16
+    libc.src.math.fromfpf16
+    libc.src.math.fromfpxf16
+    libc.src.math.getpayloadf16
+    libc.src.math.hypotf16
+    libc.src.math.ilogbf16
+    libc.src.math.iscanonicalf16
+    libc.src.math.issignalingf16
+    libc.src.math.ldexpf16
+    libc.src.math.llogbf16
+    libc.src.math.llrintf16
+    libc.src.math.llroundf16
+    libc.src.math.log10f16
+    libc.src.math.log2f16
+    libc.src.math.logbf16
+    libc.src.math.logf16
+    libc.src.math.lrintf16
+    libc.src.math.lroundf16
+    libc.src.math.modff16
+    libc.src.math.nanf16
+    libc.src.math.nearbyintf16
+    libc.src.math.nextafterf16
+    libc.src.math.nextdownf16
+    libc.src.math.nexttowardf16
+    libc.src.math.nextupf16
+    libc.src.math.remainderf16
+    libc.src.math.remquof16
+    libc.src.math.rintf16
+    libc.src.math.roundevenf16
+    libc.src.math.roundf16
+    libc.src.math.rsqrtf
+    libc.src.math.rsqrtf16
+    libc.src.math.scalblnf16
+    libc.src.math.scalbnf16
+    libc.src.math.setpayloadf16
+    libc.src.math.setpayloadsigf16
+    libc.src.math.sinf16
+    libc.src.math.sinhf16
+    libc.src.math.sinpif16
+    libc.src.math.sqrtf16
+    libc.src.math.tanf16
+    libc.src.math.tanhf16
+    libc.src.math.tanpif16
+    libc.src.math.totalorderf16
+    libc.src.math.totalordermagf16
+    libc.src.math.truncf16
+    libc.src.math.ufromfpf16
+    libc.src.math.ufromfpxf16
+  )
+
+  if(LIBC_TYPES_HAS_FLOAT128)
+    list(APPEND TARGET_LIBM_ENTRYPOINTS
+      # math.h C23 mixed _Float16 and _Float128 entrypoints
+      libc.src.math.f16addf128
+      libc.src.math.f16divf128
+      libc.src.math.f16fmaf128
+      libc.src.math.f16mulf128
+      libc.src.math.f16sqrtf128
+      libc.src.math.f16subf128
+    )
+  endif()
+endif()
+
+if(LIBC_TYPES_HAS_CFLOAT128)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # complex.h C23 _Complex _Float128 entrypoints
+    libc.src.complex.crealf128
+    libc.src.complex.cimagf128
+    libc.src.complex.conjf128
+    libc.src.complex.cprojf128
+  )
+endif()
+
+if(LIBC_TYPES_HAS_FLOAT128)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # math.h C23 _Float128 entrypoints
+    libc.src.math.atan2f128
+    libc.src.math.canonicalizef128
+    libc.src.math.ceilf128
+    libc.src.math.copysignf128
+    libc.src.math.daddf128
+    libc.src.math.ddivf128
+    libc.src.math.dfmaf128
+    libc.src.math.dmulf128
+    libc.src.math.dsqrtf128
+    libc.src.math.dsubf128
+    libc.src.math.fabsf128
+    libc.src.math.faddf128
+    libc.src.math.fdimf128
+    libc.src.math.fdivf128
+    libc.src.math.ffmaf128
+    libc.src.math.floorf128
+    libc.src.math.fmaxf128
+    libc.src.math.fmaximum_mag_numf128
+    libc.src.math.fmaximum_magf128
+    libc.src.math.fmaximum_numf128
+    libc.src.math.fmaximumf128
+    libc.src.math.fminf128
+    libc.src.math.fminimum_mag_numf128
+    libc.src.math.fminimum_magf128
+    libc.src.math.fminimum_numf128
+    libc.src.math.fminimumf128
+    libc.src.math.fmodf128
+    libc.src.math.fmulf128
+    libc.src.math.frexpf128
+    libc.src.math.fromfpf128
+    libc.src.math.fromfpxf128
+    libc.src.math.fsqrtf128
+    libc.src.math.fsubf128
+    libc.src.math.getpayloadf128
+    libc.src.math.ilogbf128
+    libc.src.math.iscanonicalf128
+    libc.src.math.issignalingf128
+    libc.src.math.ldexpf128
+    libc.src.math.llogbf128
+    libc.src.math.llrintf128
+    libc.src.math.llroundf128
+    libc.src.math.logbf128
+    libc.src.math.lrintf128
+    libc.src.math.lroundf128
+    libc.src.math.modff128
+    libc.src.math.nanf128
+    libc.src.math.nearbyintf128
+    libc.src.math.nextafterf128
+    libc.src.math.nextdownf128
+    libc.src.math.nextupf128
+    libc.src.math.remainderf128
+    libc.src.math.remquof128
+    libc.src.math.rintf128
+    libc.src.math.roundevenf128
+    libc.src.math.roundf128
+    libc.src.math.scalblnf128
+    libc.src.math.scalbnf128
+    libc.src.math.setpayloadf128
+    libc.src.math.setpayloadsigf128
+    libc.src.math.sqrtf128
+    libc.src.math.totalorderf128
+    libc.src.math.totalordermagf128
+    libc.src.math.truncf128
+    libc.src.math.ufromfpf128
+    libc.src.math.ufromfpxf128
+  )
+endif()
+
+list(APPEND TARGET_LIBM_ENTRYPOINTS
+  # bfloat16 entrypoints
+  libc.src.math.bf16add
+  libc.src.math.bf16addf
+  libc.src.math.bf16addl
+  libc.src.math.bf16div
+  libc.src.math.bf16divf
+  libc.src.math.bf16divl
+  libc.src.math.bf16fma
+  libc.src.math.bf16fmaf
+  libc.src.math.bf16fmal
+  libc.src.math.bf16mul
+  libc.src.math.bf16mulf
+  libc.src.math.bf16mull
+  libc.src.math.bf16sub
+  libc.src.math.bf16subf
+  libc.src.math.bf16subl
+  libc.src.math.canonicalizebf16
+  libc.src.math.ceilbf16
+  libc.src.math.copysignbf16
+  libc.src.math.fabsbf16
+  libc.src.math.fdimbf16
+  libc.src.math.floorbf16
+  libc.src.math.fmaxbf16
+  libc.src.math.fmaximumbf16
+  libc.src.math.fmaximum_magbf16
+  libc.src.math.fmaximum_mag_numbf16
+  libc.src.math.fmaximum_numbf16
+  libc.src.math.fminbf16
+  libc.src.math.fminimumbf16
+  libc.src.math.fminimum_magbf16
+  libc.src.math.fminimum_mag_numbf16
+  libc.src.math.fminimum_numbf16
+  libc.src.math.fmodbf16
+  libc.src.math.frexpbf16
+  libc.src.math.fromfpbf16
+  libc.src.math.fromfpxbf16
+  libc.src.math.getpayloadbf16
+  libc.src.math.ilogbbf16
+  libc.src.math.iscanonicalbf16
+  libc.src.math.issignalingbf16
+  libc.src.math.ldexpbf16
+  libc.src.math.llogbbf16
+  libc.src.math.llrintbf16
+  libc.src.math.llroundbf16
+  libc.src.math.log_bf16
+  libc.src.math.logbbf16
+  libc.src.math.lrintbf16
+  libc.src.math.lroundbf16
+  libc.src.math.modfbf16
+  libc.src.math.nanbf16
+  libc.src.math.nearbyintbf16
+  libc.src.math.nextafterbf16
+  libc.src.math.nextdownbf16
+  libc.src.math.nexttowardbf16
+  libc.src.math.nextupbf16
+  libc.src.math.remainderbf16
+  libc.src.math.remquobf16
+  libc.src.math.rintbf16
+  libc.src.math.roundbf16
+  libc.src.math.roundevenbf16
+  libc.src.math.scalblnbf16
+  libc.src.math.scalbnbf16
+  libc.src.math.setpayloadbf16
+  libc.src.math.setpayloadsigbf16
+  libc.src.math.sqrtbf16
+  libc.src.math.truncbf16
+  libc.src.math.totalorderbf16
+  libc.src.math.totalordermagbf16
+  libc.src.math.ufromfpbf16
+  libc.src.math.ufromfpxbf16
+)
+
+if(LIBC_TYPES_HAS_FLOAT128)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # math.h C++23 mixed bfloat16 and _Float128 entrypoints
+    libc.src.math.bf16addf128
+    libc.src.math.bf16divf128
+    libc.src.math.bf16fmaf128
+    libc.src.math.bf16mulf128
+    libc.src.math.bf16subf128
+  )
+endif()
+
+if(LIBC_COMPILER_HAS_FIXED_POINT)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # stdfix.h _Fract and _Accum entrypoints
+    libc.src.stdfix.abshk
+    libc.src.stdfix.abshr
+    libc.src.stdfix.absk
+    libc.src.stdfix.abslk
+    libc.src.stdfix.abslr
+    libc.src.stdfix.absr
+    libc.src.stdfix.exphk
+    libc.src.stdfix.expk
+    libc.src.stdfix.roundhk
+    libc.src.stdfix.roundhr
+    libc.src.stdfix.roundk
+    libc.src.stdfix.roundlk
+    libc.src.stdfix.roundlr
+    libc.src.stdfix.roundr
+    libc.src.stdfix.rounduhk
+    libc.src.stdfix.rounduhr
+    libc.src.stdfix.rounduk
+    libc.src.stdfix.roundulk
+    libc.src.stdfix.roundulr
+    libc.src.stdfix.roundur
+    libc.src.stdfix.sqrtuhk
+    libc.src.stdfix.sqrtuhr
+    libc.src.stdfix.sqrtuk
+    libc.src.stdfix.sqrtur
+    # libc.src.stdfix.sqrtulk
+    libc.src.stdfix.sqrtulr
+    libc.src.stdfix.uhksqrtus
+    libc.src.stdfix.uksqrtui
+    libc.src.stdfix.hrbits
+    libc.src.stdfix.uhrbits
+    libc.src.stdfix.rbits
+    libc.src.stdfix.urbits
+    libc.src.stdfix.lrbits
+    libc.src.stdfix.ulrbits
+    libc.src.stdfix.hkbits
+    libc.src.stdfix.uhkbits
+    libc.src.stdfix.kbits
+    libc.src.stdfix.ukbits
+    libc.src.stdfix.lkbits
+    libc.src.stdfix.ulkbits
+    libc.src.stdfix.bitshr
+    libc.src.stdfix.bitsr
+    libc.src.stdfix.bitslr
+    libc.src.stdfix.bitshk
+    libc.src.stdfix.bitsk
+    libc.src.stdfix.bitslk
+    libc.src.stdfix.bitsuhr
+    libc.src.stdfix.bitsur
+    libc.src.stdfix.bitsulr
+    libc.src.stdfix.bitsuhk
+    libc.src.stdfix.bitsuk
+    libc.src.stdfix.bitsulk
+    libc.src.stdfix.countlshr
+    libc.src.stdfix.countlsr
+    libc.src.stdfix.countlslr
+    libc.src.stdfix.countlshk
+    libc.src.stdfix.countlsk
+    libc.src.stdfix.countlslk
+    libc.src.stdfix.countlsuhr
+    libc.src.stdfix.countlsur
+    libc.src.stdfix.countlsulr
+    libc.src.stdfix.countlsuhk
+    libc.src.stdfix.countlsuk
+    libc.src.stdfix.countlsulk
+    libc.src.stdfix.idivr
+    libc.src.stdfix.idivlr
+    libc.src.stdfix.idivk
+    libc.src.stdfix.idivlk
+    libc.src.stdfix.idivur
+    libc.src.stdfix.idivulr
+    libc.src.stdfix.idivuk
+    libc.src.stdfix.idivulk
+    libc.src.stdfix.rdivi
+  )
+endif()
+
+if(LLVM_LIBC_FULL_BUILD)
+  list(APPEND TARGET_LIBC_ENTRYPOINTS
+    # ctype.h entrypoints
+    libc.src.ctype.isalnum_l
+    libc.src.ctype.isalpha_l
+    libc.src.ctype.isblank_l
+    libc.src.ctype.iscntrl_l
+    libc.src.ctype.isdigit_l
+    libc.src.ctype.isgraph_l
+    libc.src.ctype.islower_l
+    libc.src.ctype.isprint_l
+    libc.src.ctype.ispunct_l
+    libc.src.ctype.isspace_l
+    libc.src.ctype.isupper_l
+    libc.src.ctype.isxdigit_l
+    libc.src.ctype.tolower_l
+    libc.src.ctype.toupper_l
+
+    # stdlib.h entrypoints
+    libc.src.stdlib.strtod_l
+    libc.src.stdlib.strtof_l
+    libc.src.stdlib.strtol_l
+    libc.src.stdlib.strtold_l
+    libc.src.stdlib.strtoll_l
+    libc.src.stdlib.strtoul_l
+    libc.src.stdlib.strtoull_l
+
+    # string.h entrypoints
+    libc.src.string.strcoll_l
+    libc.src.string.strxfrm_l
+
+    # strings.h entrypoints
+    libc.src.strings.strcasecmp_l
+    libc.src.strings.strncasecmp_l
+
+    # assert.h entrypoints
+    libc.src.assert.__assert_fail
+
+    # compiler entrypoints (no corresponding header)
+    libc.src.compiler.__stack_chk_fail
+
+    # dirent.h entrypoints
+    libc.src.dirent.closedir
+    libc.src.dirent.dirfd
+    libc.src.dirent.opendir
+    libc.src.dirent.readdir
+
+    # arpa/inet.h entrypoints
+    libc.src.arpa.inet.htonl
+    libc.src.arpa.inet.htons
+    libc.src.arpa.inet.inet_addr
+    libc.src.arpa.inet.inet_aton
+    libc.src.arpa.inet.ntohl
+    libc.src.arpa.inet.ntohs
+
+    # pthread.h entrypoints
+    libc.src.pthread.pthread_atfork
+    libc.src.pthread.pthread_attr_destroy
+    libc.src.pthread.pthread_attr_getdetachstate
+    libc.src.pthread.pthread_attr_getguardsize
+    libc.src.pthread.pthread_attr_getstack
+    libc.src.pthread.pthread_attr_getstacksize
+    libc.src.pthread.pthread_attr_init
+    libc.src.pthread.pthread_attr_setdetachstate
+    libc.src.pthread.pthread_attr_setguardsize
+    libc.src.pthread.pthread_attr_setstack
+    libc.src.pthread.pthread_attr_setstacksize
+    libc.src.pthread.pthread_condattr_destroy
+    libc.src.pthread.pthread_condattr_getclock
+    libc.src.pthread.pthread_condattr_getpshared
+    libc.src.pthread.pthread_condattr_init
+    libc.src.pthread.pthread_condattr_setclock
+    libc.src.pthread.pthread_condattr_setpshared
+    libc.src.pthread.pthread_create
+    libc.src.pthread.pthread_detach
+    libc.src.pthread.pthread_equal
+    libc.src.pthread.pthread_exit
+    libc.src.pthread.pthread_getname_np
+    libc.src.pthread.pthread_getspecific
+    libc.src.pthread.pthread_join
+    libc.src.pthread.pthread_key_create
+    libc.src.pthread.pthread_key_delete
+    libc.src.pthread.pthread_barrier_init
+    libc.src.pthread.pthread_barrier_wait
+    libc.src.pthread.pthread_barrier_destroy
+    libc.src.pthread.pthread_mutex_destroy
+    libc.src.pthread.pthread_mutex_init
+    libc.src.pthread.pthread_mutex_lock
+    libc.src.pthread.pthread_mutex_unlock
+    libc.src.pthread.pthread_mutexattr_destroy
+    libc.src.pthread.pthread_mutexattr_getpshared
+    libc.src.pthread.pthread_mutexattr_getrobust
+    libc.src.pthread.pthread_mutexattr_gettype
+    libc.src.pthread.pthread_mutexattr_init
+    libc.src.pthread.pthread_mutexattr_setpshared
+    libc.src.pthread.pthread_mutexattr_setrobust
+    libc.src.pthread.pthread_mutexattr_settype
+    libc.src.pthread.pthread_once
+    libc.src.pthread.pthread_rwlock_clockrdlock
+    libc.src.pthread.pthread_rwlock_clockwrlock
+    libc.src.pthread.pthread_rwlock_destroy
+    libc.src.pthread.pthread_rwlock_init
+    libc.src.pthread.pthread_rwlock_rdlock
+    libc.src.pthread.pthread_rwlock_timedrdlock
+    libc.src.pthread.pthread_rwlock_timedwrlock
+    libc.src.pthread.pthread_rwlock_tryrdlock
+    libc.src.pthread.pthread_rwlock_trywrlock
+    libc.src.pthread.pthread_rwlock_unlock
+    libc.src.pthread.pthread_rwlock_wrlock
+    libc.src.pthread.pthread_rwlockattr_destroy
+    libc.src.pthread.pthread_rwlockattr_getkind_np
+    libc.src.pthread.pthread_rwlockattr_getpshared
+    libc.src.pthread.pthread_rwlockattr_init
+    libc.src.pthread.pthread_rwlockattr_setkind_np
+    libc.src.pthread.pthread_rwlockattr_setpshared
+    libc.src.pthread.pthread_spin_destroy
+    libc.src.pthread.pthread_spin_init
+    libc.src.pthread.pthread_spin_lock
+    libc.src.pthread.pthread_spin_trylock
+    libc.src.pthread.pthread_spin_unlock
+    libc.src.pthread.pthread_self
+    libc.src.pthread.pthread_setname_np
+    libc.src.pthread.pthread_setspecific
+
+    # sched.h entrypoints
+    libc.src.sched.__sched_getcpucount
+    libc.src.sched.__sched_setcpuzero
+    libc.src.sched.__sched_setcpuset
+    libc.src.sched.__sched_getcpuisset
+
+    # setjmp.h entrypoints
+    libc.src.setjmp.longjmp
+    libc.src.setjmp.setjmp
+    libc.src.setjmp.siglongjmp
+    libc.src.setjmp.sigsetjmp
+
+    # stdio.h entrypoints
+    libc.src.stdio.clearerr
+    libc.src.stdio.clearerr_unlocked
+    libc.src.stdio.fclose
+    libc.src.stdio.fdopen
+    libc.src.stdio.feof
+    libc.src.stdio.feof_unlocked
+    libc.src.stdio.ferror
+    libc.src.stdio.ferror_unlocked
+    libc.src.stdio.fflush
+    libc.src.stdio.fgetc
+    libc.src.stdio.fgetc_unlocked
+    libc.src.stdio.fgets
+    libc.src.stdio.fileno
+    libc.src.stdio.flockfile
+    libc.src.stdio.fopen
+    libc.src.stdio.fopencookie
+    libc.src.stdio.fputc
+    libc.src.stdio.fputs
+    libc.src.stdio.fread
+    libc.src.stdio.fread_unlocked
+    libc.src.stdio.fseek
+    libc.src.stdio.fseeko
+    libc.src.stdio.ftell
+    libc.src.stdio.ftello
+    libc.src.stdio.funlockfile
+    libc.src.stdio.fwrite
+    libc.src.stdio.fwrite_unlocked
+    libc.src.stdio.getc
+    libc.src.stdio.getc_unlocked
+    libc.src.stdio.getchar
+    libc.src.stdio.getchar_unlocked
+    libc.src.stdio.perror
+    libc.src.stdio.putc
+    libc.src.stdio.putchar
+    libc.src.stdio.puts
+    libc.src.stdio.setbuf
+    libc.src.stdio.setvbuf
+    libc.src.stdio.stderr
+    libc.src.stdio.stdin
+    libc.src.stdio.stdout
+    libc.src.stdio.ungetc
+
+    # stdlib.h entrypoints
+    libc.src.stdlib._Exit
+    libc.src.stdlib.abort
+    libc.src.stdlib.at_quick_exit
+    libc.src.stdlib.atexit
+    libc.src.stdlib.exit
+    libc.src.stdlib.getenv
+    libc.src.stdlib.mbstowcs
+    libc.src.stdlib.mbtowc
+    libc.src.stdlib.quick_exit
+    libc.src.stdlib.wcstombs
+    libc.src.stdlib.wctomb
+
+    # signal.h entrypoints
+    libc.src.signal.kill
+    libc.src.signal.raise
+    libc.src.signal.sigaction
+    libc.src.signal.sigaddset
+    libc.src.signal.sigaltstack
+    libc.src.signal.sigdelset
+    libc.src.signal.sigemptyset
+    libc.src.signal.sigfillset
+    libc.src.signal.signal
+    libc.src.signal.sigprocmask
+
+    # spawn.h entrypoints
+    libc.src.spawn.posix_spawn
+    libc.src.spawn.posix_spawn_file_actions_addclose
+    libc.src.spawn.posix_spawn_file_actions_adddup2
+    libc.src.spawn.posix_spawn_file_actions_addopen
+    libc.src.spawn.posix_spawn_file_actions_destroy
+    libc.src.spawn.posix_spawn_file_actions_init
+
+    # search.h entrypoints
+    libc.src.search.hcreate
+    libc.src.search.hcreate_r
+    libc.src.search.hdestroy
+    libc.src.search.hdestroy_r
+    libc.src.search.hsearch
+    libc.src.search.hsearch_r
+    libc.src.search.insque
+    libc.src.search.lfind
+    libc.src.search.lsearch
+    libc.src.search.remque
+
+    # threads.h entrypoints
+    libc.src.threads.call_once
+    libc.src.threads.cnd_broadcast
+    libc.src.threads.cnd_destroy
+    libc.src.threads.cnd_init
+    libc.src.threads.cnd_signal
+    libc.src.threads.cnd_wait
+    libc.src.threads.mtx_destroy
+    libc.src.threads.mtx_init
+    libc.src.threads.mtx_lock
+    libc.src.threads.mtx_unlock
+    libc.src.threads.thrd_create
+    libc.src.threads.thrd_current
+    libc.src.threads.thrd_detach
+    libc.src.threads.thrd_equal
+    libc.src.threads.thrd_exit
+    libc.src.threads.thrd_join
+    libc.src.threads.tss_create
+    libc.src.threads.tss_delete
+    libc.src.threads.tss_get
+    libc.src.threads.tss_set
+
+    # time.h entrypoints
+    libc.src.time.asctime
+    libc.src.time.asctime_r
+    libc.src.time.ctime
+    libc.src.time.ctime_r
+    libc.src.time.clock
+    libc.src.time.clock_gettime
+    libc.src.time.clock_settime
+    libc.src.time.difftime
+    libc.src.time.gettimeofday
+    libc.src.time.gmtime
+    libc.src.time.gmtime_r
+    libc.src.time.localtime
+    libc.src.time.localtime_r
+    libc.src.time.mktime
+    libc.src.time.nanosleep
+    libc.src.time.strftime
+    libc.src.time.strftime_l
+    libc.src.time.time
+    libc.src.time.timespec_get
+
+    # locale.h entrypoints
+    libc.src.locale.localeconv
+    libc.src.locale.duplocale
+    libc.src.locale.freelocale
+    libc.src.locale.localeconv
+    libc.src.locale.newlocale
+    libc.src.locale.setlocale
+    libc.src.locale.uselocale
+
+    # unistd.h entrypoints
+    libc.src.unistd.__llvm_libc_syscall
+    libc.src.unistd._exit
+    libc.src.unistd.environ
+    libc.src.unistd.execv
+    libc.src.unistd.fork
+    libc.src.unistd.getopt
+    libc.src.unistd.optarg
+    libc.src.unistd.opterr
+    libc.src.unistd.optind
+    libc.src.unistd.optopt
+    libc.src.unistd.swab
+
+    # sys/select.h entrypoints
+    libc.src.sys.select.select
+
+    # sys/socket.h entrypoints
+    libc.src.sys.socket.socket
+    libc.src.sys.socket.bind
+    libc.src.sys.socket.socketpair
+    libc.src.sys.socket.send
+    libc.src.sys.socket.sendto
+    libc.src.sys.socket.sendmsg
+    libc.src.sys.socket.recv
+    libc.src.sys.socket.recvfrom
+    libc.src.sys.socket.recvmsg
+
+    # wchar.h entrypoints
+    libc.src.wchar.mblen
+    libc.src.wchar.mbrlen
+    libc.src.wchar.mbsinit
+    libc.src.wchar.mbrtowc
+    libc.src.wchar.mbsrtowcs
+    libc.src.wchar.mbsnrtowcs
+    libc.src.wchar.wcrtomb
+    libc.src.wchar.wcsrtombs
+    libc.src.wchar.wcsnrtombs
+
+    # nl_types.h entrypoints
+    libc.src.nl_types.catopen 
+    libc.src.nl_types.catclose
+    libc.src.nl_types.catgets
+  )
+endif()
+
+set(TARGET_LLVMLIBC_ENTRYPOINTS
+  ${TARGET_LIBC_ENTRYPOINTS}
+  ${TARGET_LIBM_ENTRYPOINTS}
+)
diff --git a/libc/config/windows/entrypoints.txt b/libc/config/windows/entrypoints.txt
index 847e22889303a..faf3c5df24b7a 100644
--- a/libc/config/windows/entrypoints.txt
+++ b/libc/config/windows/entrypoints.txt
@@ -1,385 +1,385 @@
-set(TARGET_LIBC_ENTRYPOINTS
-    # ctype.h entrypoints
-    libc.src.ctype.isalnum
-    libc.src.ctype.isalpha
-    libc.src.ctype.isascii
-    libc.src.ctype.isblank
-    libc.src.ctype.iscntrl
-    libc.src.ctype.isdigit
-    libc.src.ctype.isgraph
-    libc.src.ctype.islower
-    libc.src.ctype.isprint
-    libc.src.ctype.ispunct
-    libc.src.ctype.isspace
-    libc.src.ctype.isupper
-    libc.src.ctype.isxdigit
-    libc.src.ctype.toascii
-    libc.src.ctype.tolower
-    libc.src.ctype.toupper
-
-    # string.h entrypoints
-    libc.src.string.memccpy
-    libc.src.string.memchr
-    libc.src.string.memcmp
-    libc.src.string.memcpy
-    libc.src.string.memmem
-    libc.src.string.memmove
-    libc.src.string.mempcpy
-    libc.src.string.memrchr
-    libc.src.string.memset
-    libc.src.string.stpcpy
-    libc.src.string.stpncpy
-    libc.src.string.strcasestr
-    libc.src.string.strcat
-    libc.src.string.strchr
-    libc.src.string.strchrnul
-    libc.src.string.strcmp
-    libc.src.string.strcpy
-    libc.src.string.strcspn
-    libc.src.string.strlcat
-    libc.src.string.strlcpy
-    libc.src.string.strlen
-    libc.src.string.strncat
-    libc.src.string.strncmp
-    libc.src.string.strncpy
-    libc.src.string.strnlen
-    libc.src.string.strpbrk
-    libc.src.string.strrchr
-    libc.src.string.strspn
-    libc.src.string.strstr
-    libc.src.string.strtok
-    libc.src.string.strtok_r
-
-    # string.h entrypoints that depend on malloc
-    libc.src.string.strdup
-    libc.src.string.strndup
-
-    # strings.h entrypoints
-    libc.src.strings.bcmp
-    libc.src.strings.bcopy
-    libc.src.strings.bzero
-    libc.src.strings.strcasecmp
-    libc.src.strings.strncasecmp
-
-    # inttypes.h entrypoints
-    libc.src.inttypes.imaxabs
-    libc.src.inttypes.imaxdiv
-    libc.src.inttypes.strtoimax
-    libc.src.inttypes.strtoumax
-
-    # stdlib.h entrypoints
-    libc.src.stdlib.abs
-    libc.src.stdlib.atoi
-    libc.src.stdlib.atof
-    libc.src.stdlib.atol
-    libc.src.stdlib.atoll
-    libc.src.stdlib.bsearch
-    libc.src.stdlib.div
-    libc.src.stdlib.labs
-    libc.src.stdlib.ldiv
-    libc.src.stdlib.llabs
-    libc.src.stdlib.lldiv
-    libc.src.stdlib.memalignment
-    libc.src.stdlib.qsort
-    libc.src.stdlib.strtod
-    libc.src.stdlib.strtof
-    libc.src.stdlib.strtol
-    libc.src.stdlib.strtold
-    libc.src.stdlib.strtoll
-    libc.src.stdlib.strtoul
-    libc.src.stdlib.strtoull
-
-    # stdlib.h external entrypoints
-    libc.src.stdlib.malloc
-    libc.src.stdlib.calloc
-    libc.src.stdlib.realloc
-    libc.src.stdlib.aligned_alloc
-    libc.src.stdlib.free
-
-    # errno.h entrypoints
-    libc.src.errno.errno
-
-    # time.h entrypoints
-    libc.src.time.time
-    libc.src.time.clock_getres
-
-    # unistd.h entrypoints
-    libc.src.unistd.getentropy
-
-    # wctype.h entrypoints
-    libc.src.wctype.iswalpha
-)
-
-set(TARGET_LIBM_ENTRYPOINTS
-    # fenv.h entrypoints
-    libc.src.fenv.feclearexcept
-    libc.src.fenv.fedisableexcept
-    libc.src.fenv.feenableexcept
-    libc.src.fenv.fegetenv
-    libc.src.fenv.fegetexcept
-    libc.src.fenv.fegetexceptflag
-    libc.src.fenv.fegetround
-    libc.src.fenv.feholdexcept
-    libc.src.fenv.fesetenv
-    libc.src.fenv.fesetexcept
-    libc.src.fenv.fesetexceptflag
-    libc.src.fenv.fesetround
-    libc.src.fenv.feraiseexcept
-    libc.src.fenv.fetestexcept
-    libc.src.fenv.fetestexceptflag
-    libc.src.fenv.feupdateenv
-
-    # math.h entrypoints
-    libc.src.math.acos
-    libc.src.math.acosf
-    libc.src.math.acoshf
-    libc.src.math.asin
-    libc.src.math.asinf
-    libc.src.math.asinhf
-    libc.src.math.atan2
-    libc.src.math.atan2f
-    libc.src.math.atan
-    libc.src.math.atanf
-    libc.src.math.atanhf
-    libc.src.math.cbrt
-    libc.src.math.cbrtf
-    libc.src.math.copysign
-    libc.src.math.copysignf
-    libc.src.math.copysignl
-    libc.src.math.ceil
-    libc.src.math.ceilf
-    libc.src.math.ceill
-    libc.src.math.cos
-    libc.src.math.cosf
-    libc.src.math.coshf
-    libc.src.math.daddl
-    libc.src.math.ddivl
-    libc.src.math.dfmal
-    libc.src.math.dsubl
-    libc.src.math.erff
-    libc.src.math.exp
-    libc.src.math.expf
-    libc.src.math.exp10
-    libc.src.math.exp10f
-    libc.src.math.exp2
-    libc.src.math.exp2f
-    libc.src.math.expm1
-    libc.src.math.expm1f
-    libc.src.math.fabs
-    libc.src.math.fabsf
-    libc.src.math.fabsl
-    libc.src.math.fadd
-    libc.src.math.faddl
-    libc.src.math.fdim
-    libc.src.math.fdimf
-    libc.src.math.fdiml
-    libc.src.math.fdiv
-    libc.src.math.fdivl
-    libc.src.math.ffma
-    libc.src.math.ffmal
-    libc.src.math.floor
-    libc.src.math.floorf
-    libc.src.math.floorl
-    libc.src.math.fma
-    libc.src.math.fmabf16
-    libc.src.math.fmaf
-    libc.src.math.fmin
-    libc.src.math.fminf
-    libc.src.math.fminl
-    libc.src.math.fmax
-    libc.src.math.fmaxf
-    libc.src.math.fmaxl
-    libc.src.math.fmaximum
-    libc.src.math.fmaximumf
-    libc.src.math.fmaximuml
-    libc.src.math.fmaximum_num
-    libc.src.math.fmaximum_numf
-    libc.src.math.fmaximum_numl
-    libc.src.math.fmaximum_mag
-    libc.src.math.fmaximum_magf
-    libc.src.math.fmaximum_magl
-    libc.src.math.fmaximum_mag_num
-    libc.src.math.fmaximum_mag_numf
-    libc.src.math.fmaximum_mag_numl
-    libc.src.math.fminimum
-    libc.src.math.fminimumf
-    libc.src.math.fminimuml
-    libc.src.math.fminimum_num
-    libc.src.math.fminimum_numf
-    libc.src.math.fminimum_numl
-    libc.src.math.fminimum_mag
-    libc.src.math.fminimum_magf
-    libc.src.math.fminimum_magl
-    libc.src.math.fminimum_mag_num
-    libc.src.math.fminimum_mag_numf
-    libc.src.math.fminimum_mag_numl
-    libc.src.math.fmul
-    libc.src.math.fmod
-    libc.src.math.fmodf
-    libc.src.math.fmodl
-    libc.src.math.frexp
-    libc.src.math.frexpf
-    libc.src.math.frexpl
-    libc.src.math.fsub
-    libc.src.math.fsubl
-    libc.src.math.hypot
-    libc.src.math.hypotf
-    libc.src.math.ilogb
-    libc.src.math.ilogbf
-    libc.src.math.ilogbl
-    libc.src.math.ldexp
-    libc.src.math.ldexpf
-    libc.src.math.ldexpl
-    libc.src.math.llrint
-    libc.src.math.llrintf
-    libc.src.math.llrintl
-    libc.src.math.llround
-    libc.src.math.llroundf
-    libc.src.math.llroundl
-    libc.src.math.log10
-    libc.src.math.log10f
-    libc.src.math.log1p
-    libc.src.math.log1pf
-    libc.src.math.log2
-    libc.src.math.log2f
-    libc.src.math.log
-    libc.src.math.logf
-    libc.src.math.logb
-    libc.src.math.logbf
-    libc.src.math.logbl
-    libc.src.math.lrint
-    libc.src.math.lrintf
-    libc.src.math.lrintl
-    libc.src.math.lround
-    libc.src.math.lroundf
-    libc.src.math.lroundl
-    libc.src.math.modf
-    libc.src.math.modff
-    libc.src.math.modfl
-    libc.src.math.nan
-    libc.src.math.nanf
-    libc.src.math.nanl
-    libc.src.math.nearbyint
-    libc.src.math.nearbyintf
-    libc.src.math.nearbyintl
-    libc.src.math.nextafter
-    libc.src.math.nextafterf
-    libc.src.math.nextafterl
-    libc.src.math.nexttoward
-    libc.src.math.nexttowardf
-    libc.src.math.nexttowardl
-    libc.src.math.pow
-    libc.src.math.powf
-    libc.src.math.remainderf
-    libc.src.math.remainder
-    libc.src.math.remainderl
-    libc.src.math.remquof
-    libc.src.math.remquo
-    libc.src.math.remquol
-    libc.src.math.rint
-    libc.src.math.rintf
-    libc.src.math.rintl
-    libc.src.math.round
-    libc.src.math.roundf
-    libc.src.math.roundl
-    libc.src.math.scalbln
-    libc.src.math.scalblnf
-    libc.src.math.scalblnl
-    libc.src.math.scalbn
-    libc.src.math.scalbnf
-    libc.src.math.scalbnl
-    libc.src.math.sin
-    libc.src.math.sincosf
-    libc.src.math.sincosf
-    libc.src.math.sinf
-    libc.src.math.sinhf
-    libc.src.math.sqrt
-    libc.src.math.sqrtf
-    libc.src.math.sqrtl
-    libc.src.math.tan
-    libc.src.math.tanf
-    libc.src.math.tanhf
-    libc.src.math.tanpif
-    libc.src.math.trunc
-    libc.src.math.truncf
-    libc.src.math.truncl
-)
-
-list(APPEND TARGET_LIBM_ENTRYPOINTS
-  # bfloat16 entrypoints
-  libc.src.math.bf16add
-  libc.src.math.bf16addf
-  libc.src.math.bf16addl
-  libc.src.math.bf16div
-  libc.src.math.bf16divf
-  libc.src.math.bf16divl
-  libc.src.math.bf16fma
-  libc.src.math.bf16fmaf
-  libc.src.math.bf16fmal
-  libc.src.math.bf16mul
-  libc.src.math.bf16mulf
-  libc.src.math.bf16mull
-  libc.src.math.bf16sub
-  libc.src.math.bf16subf
-  libc.src.math.bf16subl
-  libc.src.math.canonicalizebf16
-  libc.src.math.ceilbf16
-  libc.src.math.copysignbf16
-  libc.src.math.fabsbf16
-  libc.src.math.fdimbf16
-  libc.src.math.floorbf16
-  libc.src.math.fmaxbf16
-  libc.src.math.fmaximumbf16
-  libc.src.math.fmaximum_magbf16
-  libc.src.math.fmaximum_mag_numbf16
-  libc.src.math.fmaximum_numbf16
-  libc.src.math.fminbf16
-  libc.src.math.fminimumbf16
-  libc.src.math.fminimum_magbf16
-  libc.src.math.fminimum_mag_numbf16
-  libc.src.math.fminimum_numbf16
-  libc.src.math.fmodbf16
-  libc.src.math.frexpbf16
-  libc.src.math.fromfpbf16
-  libc.src.math.fromfpxbf16
-  libc.src.math.getpayloadbf16
-  libc.src.math.ilogbbf16
-  libc.src.math.iscanonicalbf16
-  libc.src.math.issignalingbf16
-  libc.src.math.ldexpbf16
-  libc.src.math.llogbbf16
-  libc.src.math.llrintbf16
-  libc.src.math.llroundbf16
-  libc.src.math.log_bf16
-  libc.src.math.logbbf16
-  libc.src.math.lrintbf16
-  libc.src.math.lroundbf16
-  libc.src.math.modfbf16
-  libc.src.math.nanbf16
-  libc.src.math.nearbyintbf16
-  libc.src.math.nextafterbf16
-  libc.src.math.nextdownbf16
-  libc.src.math.nexttowardbf16
-  libc.src.math.nextupbf16
-  libc.src.math.remainderbf16
-  libc.src.math.remquobf16
-  libc.src.math.rintbf16
-  libc.src.math.roundbf16
-  libc.src.math.roundevenbf16
-  libc.src.math.scalblnbf16
-  libc.src.math.scalbnbf16
-  libc.src.math.setpayloadbf16
-  libc.src.math.setpayloadsigbf16
-  libc.src.math.sqrtbf16
-  libc.src.math.truncbf16
-  libc.src.math.totalorderbf16
-  libc.src.math.totalordermagbf16
-  libc.src.math.ufromfpbf16
-  libc.src.math.ufromfpxbf16
-)
-
-set(TARGET_LLVMLIBC_ENTRYPOINTS
-  ${TARGET_LIBC_ENTRYPOINTS}
-  ${TARGET_LIBM_ENTRYPOINTS}
-)
-
+set(TARGET_LIBC_ENTRYPOINTS
+    # ctype.h entrypoints
+    libc.src.ctype.isalnum
+    libc.src.ctype.isalpha
+    libc.src.ctype.isascii
+    libc.src.ctype.isblank
+    libc.src.ctype.iscntrl
+    libc.src.ctype.isdigit
+    libc.src.ctype.isgraph
+    libc.src.ctype.islower
+    libc.src.ctype.isprint
+    libc.src.ctype.ispunct
+    libc.src.ctype.isspace
+    libc.src.ctype.isupper
+    libc.src.ctype.isxdigit
+    libc.src.ctype.toascii
+    libc.src.ctype.tolower
+    libc.src.ctype.toupper
+
+    # string.h entrypoints
+    libc.src.string.memccpy
+    libc.src.string.memchr
+    libc.src.string.memcmp
+    libc.src.string.memcpy
+    libc.src.string.memmem
+    libc.src.string.memmove
+    libc.src.string.mempcpy
+    libc.src.string.memrchr
+    libc.src.string.memset
+    libc.src.string.stpcpy
+    libc.src.string.stpncpy
+    libc.src.string.strcasestr
+    libc.src.string.strcat
+    libc.src.string.strchr
+    libc.src.string.strchrnul
+    libc.src.string.strcmp
+    libc.src.string.strcpy
+    libc.src.string.strcspn
+    libc.src.string.strlcat
+    libc.src.string.strlcpy
+    libc.src.string.strlen
+    libc.src.string.strncat
+    libc.src.string.strncmp
+    libc.src.string.strncpy
+    libc.src.string.strnlen
+    libc.src.string.strpbrk
+    libc.src.string.strrchr
+    libc.src.string.strspn
+    libc.src.string.strstr
+    libc.src.string.strtok
+    libc.src.string.strtok_r
+
+    # string.h entrypoints that depend on malloc
+    libc.src.string.strdup
+    libc.src.string.strndup
+
+    # strings.h entrypoints
+    libc.src.strings.bcmp
+    libc.src.strings.bcopy
+    libc.src.strings.bzero
+    libc.src.strings.strcasecmp
+    libc.src.strings.strncasecmp
+
+    # inttypes.h entrypoints
+    libc.src.inttypes.imaxabs
+    libc.src.inttypes.imaxdiv
+    libc.src.inttypes.strtoimax
+    libc.src.inttypes.strtoumax
+
+    # stdlib.h entrypoints
+    libc.src.stdlib.abs
+    libc.src.stdlib.atoi
+    libc.src.stdlib.atof
+    libc.src.stdlib.atol
+    libc.src.stdlib.atoll
+    libc.src.stdlib.bsearch
+    libc.src.stdlib.div
+    libc.src.stdlib.labs
+    libc.src.stdlib.ldiv
+    libc.src.stdlib.llabs
+    libc.src.stdlib.lldiv
+    libc.src.stdlib.memalignment
+    libc.src.stdlib.qsort
+    libc.src.stdlib.strtod
+    libc.src.stdlib.strtof
+    libc.src.stdlib.strtol
+    libc.src.stdlib.strtold
+    libc.src.stdlib.strtoll
+    libc.src.stdlib.strtoul
+    libc.src.stdlib.strtoull
+
+    # stdlib.h external entrypoints
+    libc.src.stdlib.malloc
+    libc.src.stdlib.calloc
+    libc.src.stdlib.realloc
+    libc.src.stdlib.aligned_alloc
+    libc.src.stdlib.free
+
+    # errno.h entrypoints
+    libc.src.errno.errno
+
+    # time.h entrypoints
+    libc.src.time.time
+    libc.src.time.clock_getres
+
+    # unistd.h entrypoints
+    libc.src.unistd.getentropy
+
+    # wctype.h entrypoints
+    libc.src.wctype.iswalpha
+)
+
+set(TARGET_LIBM_ENTRYPOINTS
+    # fenv.h entrypoints
+    libc.src.fenv.feclearexcept
+    libc.src.fenv.fedisableexcept
+    libc.src.fenv.feenableexcept
+    libc.src.fenv.fegetenv
+    libc.src.fenv.fegetexcept
+    libc.src.fenv.fegetexceptflag
+    libc.src.fenv.fegetround
+    libc.src.fenv.feholdexcept
+    libc.src.fenv.fesetenv
+    libc.src.fenv.fesetexcept
+    libc.src.fenv.fesetexceptflag
+    libc.src.fenv.fesetround
+    libc.src.fenv.feraiseexcept
+    libc.src.fenv.fetestexcept
+    libc.src.fenv.fetestexceptflag
+    libc.src.fenv.feupdateenv
+
+    # math.h entrypoints
+    libc.src.math.acos
+    libc.src.math.acosf
+    libc.src.math.acoshf
+    libc.src.math.asin
+    libc.src.math.asinf
+    libc.src.math.asinhf
+    libc.src.math.atan2
+    libc.src.math.atan2f
+    libc.src.math.atan
+    libc.src.math.atanf
+    libc.src.math.atanhf
+    libc.src.math.cbrt
+    libc.src.math.cbrtf
+    libc.src.math.copysign
+    libc.src.math.copysignf
+    libc.src.math.copysignl
+    libc.src.math.ceil
+    libc.src.math.ceilf
+    libc.src.math.ceill
+    libc.src.math.cos
+    libc.src.math.cosf
+    libc.src.math.coshf
+    libc.src.math.daddl
+    libc.src.math.ddivl
+    libc.src.math.dfmal
+    libc.src.math.dsubl
+    libc.src.math.erff
+    libc.src.math.exp
+    libc.src.math.expf
+    libc.src.math.exp10
+    libc.src.math.exp10f
+    libc.src.math.exp2
+    libc.src.math.exp2f
+    libc.src.math.expm1
+    libc.src.math.expm1f
+    libc.src.math.fabs
+    libc.src.math.fabsf
+    libc.src.math.fabsl
+    libc.src.math.fadd
+    libc.src.math.faddl
+    libc.src.math.fdim
+    libc.src.math.fdimf
+    libc.src.math.fdiml
+    libc.src.math.fdiv
+    libc.src.math.fdivl
+    libc.src.math.ffma
+    libc.src.math.ffmal
+    libc.src.math.floor
+    libc.src.math.floorf
+    libc.src.math.floorl
+    libc.src.math.fma
+    libc.src.math.fmabf16
+    libc.src.math.fmaf
+    libc.src.math.fmin
+    libc.src.math.fminf
+    libc.src.math.fminl
+    libc.src.math.fmax
+    libc.src.math.fmaxf
+    libc.src.math.fmaxl
+    libc.src.math.fmaximum
+    libc.src.math.fmaximumf
+    libc.src.math.fmaximuml
+    libc.src.math.fmaximum_num
+    libc.src.math.fmaximum_numf
+    libc.src.math.fmaximum_numl
+    libc.src.math.fmaximum_mag
+    libc.src.math.fmaximum_magf
+    libc.src.math.fmaximum_magl
+    libc.src.math.fmaximum_mag_num
+    libc.src.math.fmaximum_mag_numf
+    libc.src.math.fmaximum_mag_numl
+    libc.src.math.fminimum
+    libc.src.math.fminimumf
+    libc.src.math.fminimuml
+    libc.src.math.fminimum_num
+    libc.src.math.fminimum_numf
+    libc.src.math.fminimum_numl
+    libc.src.math.fminimum_mag
+    libc.src.math.fminimum_magf
+    libc.src.math.fminimum_magl
+    libc.src.math.fminimum_mag_num
+    libc.src.math.fminimum_mag_numf
+    libc.src.math.fminimum_mag_numl
+    libc.src.math.fmul
+    libc.src.math.fmod
+    libc.src.math.fmodf
+    libc.src.math.fmodl
+    libc.src.math.frexp
+    libc.src.math.frexpf
+    libc.src.math.frexpl
+    libc.src.math.fsub
+    libc.src.math.fsubl
+    libc.src.math.hypot
+    libc.src.math.hypotf
+    libc.src.math.ilogb
+    libc.src.math.ilogbf
+    libc.src.math.ilogbl
+    libc.src.math.ldexp
+    libc.src.math.ldexpf
+    libc.src.math.ldexpl
+    libc.src.math.llrint
+    libc.src.math.llrintf
+    libc.src.math.llrintl
+    libc.src.math.llround
+    libc.src.math.llroundf
+    libc.src.math.llroundl
+    libc.src.math.log10
+    libc.src.math.log10f
+    libc.src.math.log1p
+    libc.src.math.log1pf
+    libc.src.math.log2
+    libc.src.math.log2f
+    libc.src.math.log
+    libc.src.math.logf
+    libc.src.math.logb
+    libc.src.math.logbf
+    libc.src.math.logbl
+    libc.src.math.lrint
+    libc.src.math.lrintf
+    libc.src.math.lrintl
+    libc.src.math.lround
+    libc.src.math.lroundf
+    libc.src.math.lroundl
+    libc.src.math.modf
+    libc.src.math.modff
+    libc.src.math.modfl
+    libc.src.math.nan
+    libc.src.math.nanf
+    libc.src.math.nanl
+    libc.src.math.nearbyint
+    libc.src.math.nearbyintf
+    libc.src.math.nearbyintl
+    libc.src.math.nextafter
+    libc.src.math.nextafterf
+    libc.src.math.nextafterl
+    libc.src.math.nexttoward
+    libc.src.math.nexttowardf
+    libc.src.math.nexttowardl
+    libc.src.math.pow
+    libc.src.math.powf
+    libc.src.math.remainderf
+    libc.src.math.remainder
+    libc.src.math.remainderl
+    libc.src.math.remquof
+    libc.src.math.remquo
+    libc.src.math.remquol
+    libc.src.math.rint
+    libc.src.math.rintf
+    libc.src.math.rintl
+    libc.src.math.round
+    libc.src.math.roundf
+    libc.src.math.roundl
+    libc.src.math.scalbln
+    libc.src.math.scalblnf
+    libc.src.math.scalblnl
+    libc.src.math.scalbn
+    libc.src.math.scalbnf
+    libc.src.math.scalbnl
+    libc.src.math.sin
+    libc.src.math.sincosf
+    libc.src.math.sincosf
+    libc.src.math.sinf
+    libc.src.math.sinhf
+    libc.src.math.sqrt
+    libc.src.math.sqrtf
+    libc.src.math.sqrtl
+    libc.src.math.tan
+    libc.src.math.tanf
+    libc.src.math.tanhf
+    libc.src.math.tanpif
+    libc.src.math.trunc
+    libc.src.math.truncf
+    libc.src.math.truncl
+)
+
+list(APPEND TARGET_LIBM_ENTRYPOINTS
+  # bfloat16 entrypoints
+  libc.src.math.bf16add
+  libc.src.math.bf16addf
+  libc.src.math.bf16addl
+  libc.src.math.bf16div
+  libc.src.math.bf16divf
+  libc.src.math.bf16divl
+  libc.src.math.bf16fma
+  libc.src.math.bf16fmaf
+  libc.src.math.bf16fmal
+  libc.src.math.bf16mul
+  libc.src.math.bf16mulf
+  libc.src.math.bf16mull
+  libc.src.math.bf16sub
+  libc.src.math.bf16subf
+  libc.src.math.bf16subl
+  libc.src.math.canonicalizebf16
+  libc.src.math.ceilbf16
+  libc.src.math.copysignbf16
+  libc.src.math.fabsbf16
+  libc.src.math.fdimbf16
+  libc.src.math.floorbf16
+  libc.src.math.fmaxbf16
+  libc.src.math.fmaximumbf16
+  libc.src.math.fmaximum_magbf16
+  libc.src.math.fmaximum_mag_numbf16
+  libc.src.math.fmaximum_numbf16
+  libc.src.math.fminbf16
+  libc.src.math.fminimumbf16
+  libc.src.math.fminimum_magbf16
+  libc.src.math.fminimum_mag_numbf16
+  libc.src.math.fminimum_numbf16
+  libc.src.math.fmodbf16
+  libc.src.math.frexpbf16
+  libc.src.math.fromfpbf16
+  libc.src.math.fromfpxbf16
+  libc.src.math.getpayloadbf16
+  libc.src.math.ilogbbf16
+  libc.src.math.iscanonicalbf16
+  libc.src.math.issignalingbf16
+  libc.src.math.ldexpbf16
+  libc.src.math.llogbbf16
+  libc.src.math.llrintbf16
+  libc.src.math.llroundbf16
+  libc.src.math.log_bf16
+  libc.src.math.logbbf16
+  libc.src.math.lrintbf16
+  libc.src.math.lroundbf16
+  libc.src.math.modfbf16
+  libc.src.math.nanbf16
+  libc.src.math.nearbyintbf16
+  libc.src.math.nextafterbf16
+  libc.src.math.nextdownbf16
+  libc.src.math.nexttowardbf16
+  libc.src.math.nextupbf16
+  libc.src.math.remainderbf16
+  libc.src.math.remquobf16
+  libc.src.math.rintbf16
+  libc.src.math.roundbf16
+  libc.src.math.roundevenbf16
+  libc.src.math.scalblnbf16
+  libc.src.math.scalbnbf16
+  libc.src.math.setpayloadbf16
+  libc.src.math.setpayloadsigbf16
+  libc.src.math.sqrtbf16
+  libc.src.math.truncbf16
+  libc.src.math.totalorderbf16
+  libc.src.math.totalordermagbf16
+  libc.src.math.ufromfpbf16
+  libc.src.math.ufromfpxbf16
+)
+
+set(TARGET_LLVMLIBC_ENTRYPOINTS
+  ${TARGET_LIBC_ENTRYPOINTS}
+  ${TARGET_LIBM_ENTRYPOINTS}
+)
+

>From 4170c2e764af54b15480ae83bf247f023cafa221 Mon Sep 17 00:00:00 2001
From: Sukumarsawant <sawantsukumar at gmail.com>
Date: Mon, 9 Feb 2026 18:49:19 +0530
Subject: [PATCH 04/43] crlf-lf

---
 libc/src/math/CMakeLists.txt | 1292 +++++++++++++++++-----------------
 libc/src/math/ffmal.h        |   40 +-
 2 files changed, 666 insertions(+), 666 deletions(-)

diff --git a/libc/src/math/CMakeLists.txt b/libc/src/math/CMakeLists.txt
index d0db5cf8d0f74..79bd342cee1c6 100644
--- a/libc/src/math/CMakeLists.txt
+++ b/libc/src/math/CMakeLists.txt
@@ -1,646 +1,646 @@
-add_subdirectory(generic)
-if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${LIBC_TARGET_ARCHITECTURE})
-  add_subdirectory(${LIBC_TARGET_ARCHITECTURE})
-endif()
-
-function(add_math_entrypoint_object name)
-  # We prefer machine specific implementation if available. Hence we check
-  # that first and return early if we are able to add an alias target for the
-  # machine specific implementation.
-  get_fq_target_name("${LIBC_TARGET_ARCHITECTURE}.${name}" fq_machine_specific_target_name)
-  if(TARGET ${fq_machine_specific_target_name})
-    add_entrypoint_object(
-      ${name}
-      ALIAS
-      DEPENDS
-        .${LIBC_TARGET_ARCHITECTURE}.${name}
-    )
-    return()
-  endif()
-
-  get_fq_target_name("generic.${name}" fq_generic_target_name)
-  if(TARGET ${fq_generic_target_name})
-    add_entrypoint_object(
-      ${name}
-      ALIAS
-      DEPENDS
-        .generic.${name}
-    )
-    return()
-  endif()
-
-  # Add a dummy entrypoint object for missing implementations. They will be skipped
-  # anyway as there will be no entry for them in the target entrypoints list.
-  add_entrypoint_object(
-    ${name}
-    SRCS
-      dummy_srcs
-    HDRS
-      dummy_hdrs
-  )
-endfunction()
-
-add_math_entrypoint_object(acos)
-add_math_entrypoint_object(acosf)
-add_math_entrypoint_object(acosf16)
-
-add_math_entrypoint_object(acosh)
-add_math_entrypoint_object(acoshf)
-add_math_entrypoint_object(acoshf16)
-
-add_math_entrypoint_object(acospif16)
- 
-add_math_entrypoint_object(asin)
-add_math_entrypoint_object(asinf)
-add_math_entrypoint_object(asinf16)
-
-add_math_entrypoint_object(asinh)
-add_math_entrypoint_object(asinhf)
-add_math_entrypoint_object(asinhf16)
-
-add_math_entrypoint_object(asinpif16)
-
-add_math_entrypoint_object(atan)
-add_math_entrypoint_object(atanf)
-add_math_entrypoint_object(atanf16)
-
-add_math_entrypoint_object(atan2)
-add_math_entrypoint_object(atan2f)
-add_math_entrypoint_object(atan2l)
-add_math_entrypoint_object(atan2f128)
-
-add_math_entrypoint_object(atanh)
-add_math_entrypoint_object(atanhf)
-add_math_entrypoint_object(atanhf16)
-
-add_math_entrypoint_object(atanpif16)
-
-add_math_entrypoint_object(canonicalize)
-add_math_entrypoint_object(canonicalizef)
-add_math_entrypoint_object(canonicalizel)
-add_math_entrypoint_object(canonicalizef16)
-add_math_entrypoint_object(canonicalizef128)
-add_math_entrypoint_object(canonicalizebf16)
-
-add_math_entrypoint_object(iscanonical)
-add_math_entrypoint_object(iscanonicalf)
-add_math_entrypoint_object(iscanonicall)
-add_math_entrypoint_object(iscanonicalf16)
-add_math_entrypoint_object(iscanonicalf128)
-add_math_entrypoint_object(iscanonicalbf16)
-
-add_math_entrypoint_object(cbrt)
-add_math_entrypoint_object(cbrtf)
-
-add_math_entrypoint_object(ceil)
-add_math_entrypoint_object(ceilf)
-add_math_entrypoint_object(ceill)
-add_math_entrypoint_object(ceilf16)
-add_math_entrypoint_object(ceilf128)
-add_math_entrypoint_object(ceilbf16)
-
-add_math_entrypoint_object(copysign)
-add_math_entrypoint_object(copysignf)
-add_math_entrypoint_object(copysignl)
-add_math_entrypoint_object(copysignf16)
-add_math_entrypoint_object(copysignf128)
-add_math_entrypoint_object(copysignbf16)
-
-add_math_entrypoint_object(cos)
-add_math_entrypoint_object(cosf)
-add_math_entrypoint_object(cosf16)
-
-add_math_entrypoint_object(cosh)
-add_math_entrypoint_object(coshf)
-add_math_entrypoint_object(coshf16)
-
-add_math_entrypoint_object(cospif)
-add_math_entrypoint_object(cospif16)
-
-add_math_entrypoint_object(daddl)
-add_math_entrypoint_object(daddf128)
-add_math_entrypoint_object(ddivl)
-add_math_entrypoint_object(ddivf128)
-add_math_entrypoint_object(dmull)
-add_math_entrypoint_object(dmulf128)
-
-add_math_entrypoint_object(dfmal)
-add_math_entrypoint_object(dfmaf128)
-
-add_math_entrypoint_object(dsqrtl)
-add_math_entrypoint_object(dsqrtf128)
-
-add_math_entrypoint_object(dsubl)
-add_math_entrypoint_object(dsubf128)
-
-add_math_entrypoint_object(erf)
-add_math_entrypoint_object(erff)
-
-add_math_entrypoint_object(exp)
-add_math_entrypoint_object(expf)
-add_math_entrypoint_object(expf16)
-
-add_math_entrypoint_object(exp2)
-add_math_entrypoint_object(exp2f)
-add_math_entrypoint_object(exp2f16)
-
-add_math_entrypoint_object(exp2m1f)
-add_math_entrypoint_object(exp2m1f16)
-
-add_math_entrypoint_object(exp10)
-add_math_entrypoint_object(exp10f)
-add_math_entrypoint_object(exp10f16)
-
-add_math_entrypoint_object(exp10m1f)
-add_math_entrypoint_object(exp10m1f16)
-
-add_math_entrypoint_object(expm1)
-add_math_entrypoint_object(expm1f)
-add_math_entrypoint_object(expm1f16)
-
-add_math_entrypoint_object(f16add)
-add_math_entrypoint_object(f16addf)
-add_math_entrypoint_object(f16addl)
-add_math_entrypoint_object(f16addf128)
-
-add_math_entrypoint_object(f16div)
-add_math_entrypoint_object(f16divf)
-add_math_entrypoint_object(f16divl)
-add_math_entrypoint_object(f16divf128)
-
-add_math_entrypoint_object(f16fma)
-add_math_entrypoint_object(f16fmaf)
-add_math_entrypoint_object(f16fmal)
-add_math_entrypoint_object(f16fmaf128)
-
-add_math_entrypoint_object(f16mul)
-add_math_entrypoint_object(f16mulf)
-add_math_entrypoint_object(f16mull)
-add_math_entrypoint_object(f16mulf128)
-
-add_math_entrypoint_object(f16sqrt)
-add_math_entrypoint_object(f16sqrtf)
-add_math_entrypoint_object(f16sqrtl)
-add_math_entrypoint_object(f16sqrtf128)
-
-add_math_entrypoint_object(fsqrt)
-add_math_entrypoint_object(fsqrtl)
-add_math_entrypoint_object(fsqrtf128)
-
-add_math_entrypoint_object(f16sub)
-add_math_entrypoint_object(f16subf)
-add_math_entrypoint_object(f16subl)
-add_math_entrypoint_object(f16subf128)
-
-add_math_entrypoint_object(fabs)
-add_math_entrypoint_object(fabsf)
-add_math_entrypoint_object(fabsl)
-add_math_entrypoint_object(fabsf16)
-add_math_entrypoint_object(fabsf128)
-add_math_entrypoint_object(fabsbf16)
-
-add_math_entrypoint_object(fadd)
-add_math_entrypoint_object(faddl)
-add_math_entrypoint_object(faddf128)
-
-add_math_entrypoint_object(fdim)
-add_math_entrypoint_object(fdimf)
-add_math_entrypoint_object(fdiml)
-add_math_entrypoint_object(fdimf16)
-add_math_entrypoint_object(fdimf128)
-add_math_entrypoint_object(fdimbf16)
-
-add_math_entrypoint_object(fdiv)
-add_math_entrypoint_object(fdivl)
-add_math_entrypoint_object(fdivf128)
-
-add_math_entrypoint_object(ffma)
-add_math_entrypoint_object(ffmal)
-add_math_entrypoint_object(ffmaf128)
-
-add_math_entrypoint_object(floor)
-add_math_entrypoint_object(floorf)
-add_math_entrypoint_object(floorl)
-add_math_entrypoint_object(floorf16)
-add_math_entrypoint_object(floorf128)
-add_math_entrypoint_object(floorbf16)
-
-add_math_entrypoint_object(fma)
-add_math_entrypoint_object(fmaf)
-add_math_entrypoint_object(fmaf16)
-add_math_entrypoint_object(fmabf16)
-
-add_math_entrypoint_object(fmax)
-add_math_entrypoint_object(fmaxf)
-add_math_entrypoint_object(fmaxl)
-add_math_entrypoint_object(fmaxf128)
-add_math_entrypoint_object(fmaxf16)
-add_math_entrypoint_object(fmaxbf16)
-
-add_math_entrypoint_object(fmin)
-add_math_entrypoint_object(fminf)
-add_math_entrypoint_object(fminl)
-add_math_entrypoint_object(fminf128)
-add_math_entrypoint_object(fminf16)
-add_math_entrypoint_object(fminbf16)
-
-add_math_entrypoint_object(fmaximum)
-add_math_entrypoint_object(fmaximumf)
-add_math_entrypoint_object(fmaximuml)
-add_math_entrypoint_object(fmaximumf16)
-add_math_entrypoint_object(fmaximumf128)
-add_math_entrypoint_object(fmaximumbf16)
-
-add_math_entrypoint_object(fmaximum_num)
-add_math_entrypoint_object(fmaximum_numf)
-add_math_entrypoint_object(fmaximum_numl)
-add_math_entrypoint_object(fmaximum_numf16)
-add_math_entrypoint_object(fmaximum_numf128)
-add_math_entrypoint_object(fmaximum_numbf16)
-
-add_math_entrypoint_object(fmaximum_mag)
-add_math_entrypoint_object(fmaximum_magf)
-add_math_entrypoint_object(fmaximum_magl)
-add_math_entrypoint_object(fmaximum_magf16)
-add_math_entrypoint_object(fmaximum_magf128)
-add_math_entrypoint_object(fmaximum_magbf16)
-
-add_math_entrypoint_object(fmaximum_mag_num)
-add_math_entrypoint_object(fmaximum_mag_numf)
-add_math_entrypoint_object(fmaximum_mag_numl)
-add_math_entrypoint_object(fmaximum_mag_numf16)
-add_math_entrypoint_object(fmaximum_mag_numf128)
-add_math_entrypoint_object(fmaximum_mag_numbf16)
-
-add_math_entrypoint_object(fminimum)
-add_math_entrypoint_object(fminimumf)
-add_math_entrypoint_object(fminimuml)
-add_math_entrypoint_object(fminimumf16)
-add_math_entrypoint_object(fminimumf128)
-add_math_entrypoint_object(fminimumbf16)
-
-add_math_entrypoint_object(fminimum_num)
-add_math_entrypoint_object(fminimum_numf)
-add_math_entrypoint_object(fminimum_numl)
-add_math_entrypoint_object(fminimum_numf16)
-add_math_entrypoint_object(fminimum_numf128)
-add_math_entrypoint_object(fminimum_numbf16)
-
-add_math_entrypoint_object(fminimum_mag)
-add_math_entrypoint_object(fminimum_magf)
-add_math_entrypoint_object(fminimum_magl)
-add_math_entrypoint_object(fminimum_magf16)
-add_math_entrypoint_object(fminimum_magf128)
-add_math_entrypoint_object(fminimum_magbf16)
-
-add_math_entrypoint_object(fminimum_mag_num)
-add_math_entrypoint_object(fminimum_mag_numf)
-add_math_entrypoint_object(fminimum_mag_numl)
-add_math_entrypoint_object(fminimum_mag_numf16)
-add_math_entrypoint_object(fminimum_mag_numf128)
-add_math_entrypoint_object(fminimum_mag_numbf16)
-
-add_math_entrypoint_object(fmul)
-add_math_entrypoint_object(fmull)
-add_math_entrypoint_object(fmulf128)
-
-add_math_entrypoint_object(fmod)
-add_math_entrypoint_object(fmodf)
-add_math_entrypoint_object(fmodl)
-add_math_entrypoint_object(fmodf16)
-add_math_entrypoint_object(fmodf128)
-add_math_entrypoint_object(fmodbf16)
-
-add_math_entrypoint_object(frexp)
-add_math_entrypoint_object(frexpf)
-add_math_entrypoint_object(frexpl)
-add_math_entrypoint_object(frexpf16)
-add_math_entrypoint_object(frexpf128)
-add_math_entrypoint_object(frexpbf16)
-
-add_math_entrypoint_object(fromfp)
-add_math_entrypoint_object(fromfpf)
-add_math_entrypoint_object(fromfpl)
-add_math_entrypoint_object(fromfpf16)
-add_math_entrypoint_object(fromfpf128)
-add_math_entrypoint_object(fromfpbf16)
-
-add_math_entrypoint_object(fromfpx)
-add_math_entrypoint_object(fromfpxf)
-add_math_entrypoint_object(fromfpxl)
-add_math_entrypoint_object(fromfpxf16)
-add_math_entrypoint_object(fromfpxf128)
-add_math_entrypoint_object(fromfpxbf16)
-
-add_math_entrypoint_object(fsub)
-add_math_entrypoint_object(fsubl)
-add_math_entrypoint_object(fsubf128)
-
-add_math_entrypoint_object(getpayload)
-add_math_entrypoint_object(getpayloadf)
-add_math_entrypoint_object(getpayloadl)
-add_math_entrypoint_object(getpayloadf16)
-add_math_entrypoint_object(getpayloadf128)
-add_math_entrypoint_object(getpayloadbf16)
-
-add_math_entrypoint_object(hypot)
-add_math_entrypoint_object(hypotf)
-add_math_entrypoint_object(hypotf16)
-
-add_math_entrypoint_object(ilogb)
-add_math_entrypoint_object(ilogbf)
-add_math_entrypoint_object(ilogbl)
-add_math_entrypoint_object(ilogbf16)
-add_math_entrypoint_object(ilogbf128)
-add_math_entrypoint_object(ilogbbf16)
-
-add_math_entrypoint_object(isnan)
-add_math_entrypoint_object(isnanf)
-add_math_entrypoint_object(isnanl)
-
-add_math_entrypoint_object(issignaling)
-add_math_entrypoint_object(issignalingf)
-add_math_entrypoint_object(issignalingl)
-add_math_entrypoint_object(issignalingf16)
-add_math_entrypoint_object(issignalingf128)
-add_math_entrypoint_object(issignalingbf16)
-
-add_math_entrypoint_object(llogb)
-add_math_entrypoint_object(llogbf)
-add_math_entrypoint_object(llogbl)
-add_math_entrypoint_object(llogbf16)
-add_math_entrypoint_object(llogbf128)
-add_math_entrypoint_object(llogbbf16)
-
-add_math_entrypoint_object(ldexp)
-add_math_entrypoint_object(ldexpf)
-add_math_entrypoint_object(ldexpl)
-add_math_entrypoint_object(ldexpf16)
-add_math_entrypoint_object(ldexpf128)
-add_math_entrypoint_object(ldexpbf16)
-
-add_math_entrypoint_object(log10)
-add_math_entrypoint_object(log10f)
-add_math_entrypoint_object(log10f16)
-
-add_math_entrypoint_object(log1p)
-add_math_entrypoint_object(log1pf)
-
-add_math_entrypoint_object(log2)
-add_math_entrypoint_object(log2f)
-add_math_entrypoint_object(log2f16)
-
-add_math_entrypoint_object(log)
-add_math_entrypoint_object(logf)
-add_math_entrypoint_object(logf16)
-add_math_entrypoint_object(log_bf16)
-
-add_math_entrypoint_object(logb)
-add_math_entrypoint_object(logbf)
-add_math_entrypoint_object(logbl)
-add_math_entrypoint_object(logbf16)
-add_math_entrypoint_object(logbf128)
-add_math_entrypoint_object(logbbf16)
-
-add_math_entrypoint_object(llrint)
-add_math_entrypoint_object(llrintf)
-add_math_entrypoint_object(llrintl)
-add_math_entrypoint_object(llrintf16)
-add_math_entrypoint_object(llrintf128)
-add_math_entrypoint_object(llrintbf16)
-
-add_math_entrypoint_object(llround)
-add_math_entrypoint_object(llroundf)
-add_math_entrypoint_object(llroundl)
-add_math_entrypoint_object(llroundf16)
-add_math_entrypoint_object(llroundf128)
-add_math_entrypoint_object(llroundbf16)
-
-add_math_entrypoint_object(lrint)
-add_math_entrypoint_object(lrintf)
-add_math_entrypoint_object(lrintl)
-add_math_entrypoint_object(lrintf16)
-add_math_entrypoint_object(lrintf128)
-add_math_entrypoint_object(lrintbf16)
-
-add_math_entrypoint_object(lround)
-add_math_entrypoint_object(lroundf)
-add_math_entrypoint_object(lroundl)
-add_math_entrypoint_object(lroundf16)
-add_math_entrypoint_object(lroundf128)
-add_math_entrypoint_object(lroundbf16)
-
-add_math_entrypoint_object(modf)
-add_math_entrypoint_object(modff)
-add_math_entrypoint_object(modfl)
-add_math_entrypoint_object(modff16)
-add_math_entrypoint_object(modff128)
-add_math_entrypoint_object(modfbf16)
-
-add_math_entrypoint_object(nan)
-add_math_entrypoint_object(nanf)
-add_math_entrypoint_object(nanl)
-add_math_entrypoint_object(nanf16)
-add_math_entrypoint_object(nanf128)
-add_math_entrypoint_object(nanbf16)
-
-add_math_entrypoint_object(nearbyint)
-add_math_entrypoint_object(nearbyintf)
-add_math_entrypoint_object(nearbyintl)
-add_math_entrypoint_object(nearbyintf16)
-add_math_entrypoint_object(nearbyintf128)
-add_math_entrypoint_object(nearbyintbf16)
-
-add_math_entrypoint_object(nextafter)
-add_math_entrypoint_object(nextafterf)
-add_math_entrypoint_object(nextafterl)
-add_math_entrypoint_object(nextafterf16)
-add_math_entrypoint_object(nextafterf128)
-add_math_entrypoint_object(nextafterbf16)
-
-add_math_entrypoint_object(nexttoward)
-add_math_entrypoint_object(nexttowardf)
-add_math_entrypoint_object(nexttowardl)
-add_math_entrypoint_object(nexttowardf16)
-add_math_entrypoint_object(nexttowardbf16)
-
-add_math_entrypoint_object(nextdown)
-add_math_entrypoint_object(nextdownf)
-add_math_entrypoint_object(nextdownl)
-add_math_entrypoint_object(nextdownf16)
-add_math_entrypoint_object(nextdownf128)
-add_math_entrypoint_object(nextdownbf16)
-
-add_math_entrypoint_object(nextup)
-add_math_entrypoint_object(nextupf)
-add_math_entrypoint_object(nextupl)
-add_math_entrypoint_object(nextupf16)
-add_math_entrypoint_object(nextupf128)
-add_math_entrypoint_object(nextupbf16)
-
-add_math_entrypoint_object(pow)
-add_math_entrypoint_object(powf)
-add_math_entrypoint_object(powi)
-add_math_entrypoint_object(powif)
-
-add_math_entrypoint_object(remainder)
-add_math_entrypoint_object(remainderf)
-add_math_entrypoint_object(remainderl)
-add_math_entrypoint_object(remainderf16)
-add_math_entrypoint_object(remainderf128)
-add_math_entrypoint_object(remainderbf16)
-
-add_math_entrypoint_object(remquo)
-add_math_entrypoint_object(remquof)
-add_math_entrypoint_object(remquol)
-add_math_entrypoint_object(remquof16)
-add_math_entrypoint_object(remquof128)
-add_math_entrypoint_object(remquobf16)
-
-add_math_entrypoint_object(rint)
-add_math_entrypoint_object(rintf)
-add_math_entrypoint_object(rintl)
-add_math_entrypoint_object(rintf16)
-add_math_entrypoint_object(rintf128)
-add_math_entrypoint_object(rintbf16)
-
-add_math_entrypoint_object(round)
-add_math_entrypoint_object(roundf)
-add_math_entrypoint_object(roundl)
-add_math_entrypoint_object(roundf16)
-add_math_entrypoint_object(roundf128)
-add_math_entrypoint_object(roundbf16)
-
-add_math_entrypoint_object(roundeven)
-add_math_entrypoint_object(roundevenf)
-add_math_entrypoint_object(roundevenl)
-add_math_entrypoint_object(roundevenf16)
-add_math_entrypoint_object(roundevenf128)
-add_math_entrypoint_object(roundevenbf16)
-
-add_math_entrypoint_object(rsqrtf)
-add_math_entrypoint_object(rsqrtf16)
-
-add_math_entrypoint_object(scalbln)
-add_math_entrypoint_object(scalblnf)
-add_math_entrypoint_object(scalblnl)
-add_math_entrypoint_object(scalblnf16)
-add_math_entrypoint_object(scalblnf128)
-add_math_entrypoint_object(scalblnbf16)
-
-add_math_entrypoint_object(scalbn)
-add_math_entrypoint_object(scalbnf)
-add_math_entrypoint_object(scalbnl)
-add_math_entrypoint_object(scalbnf16)
-add_math_entrypoint_object(scalbnf128)
-add_math_entrypoint_object(scalbnbf16)
-
-add_math_entrypoint_object(setpayload)
-add_math_entrypoint_object(setpayloadf)
-add_math_entrypoint_object(setpayloadl)
-add_math_entrypoint_object(setpayloadf16)
-add_math_entrypoint_object(setpayloadf128)
-add_math_entrypoint_object(setpayloadbf16)
-
-add_math_entrypoint_object(setpayloadsig)
-add_math_entrypoint_object(setpayloadsigf)
-add_math_entrypoint_object(setpayloadsigl)
-add_math_entrypoint_object(setpayloadsigf16)
-add_math_entrypoint_object(setpayloadsigf128)
-add_math_entrypoint_object(setpayloadsigbf16)
-
-add_math_entrypoint_object(sincos)
-add_math_entrypoint_object(sincosf)
-
-add_math_entrypoint_object(sin)
-add_math_entrypoint_object(sinf)
-add_math_entrypoint_object(sinf16)
-add_math_entrypoint_object(sinpif)
-add_math_entrypoint_object(sinpif16)
-
-add_math_entrypoint_object(sinh)
-add_math_entrypoint_object(sinhf)
-add_math_entrypoint_object(sinhf16)
-
-add_math_entrypoint_object(sqrt)
-add_math_entrypoint_object(sqrtf)
-add_math_entrypoint_object(sqrtl)
-add_math_entrypoint_object(sqrtf16)
-add_math_entrypoint_object(sqrtf128)
-add_math_entrypoint_object(sqrtbf16)
-
-add_math_entrypoint_object(tan)
-add_math_entrypoint_object(tanf)
-add_math_entrypoint_object(tanf16)
-
-add_math_entrypoint_object(tanh)
-add_math_entrypoint_object(tanhf)
-add_math_entrypoint_object(tanhf16)
-
-add_math_entrypoint_object(tanpif)
-add_math_entrypoint_object(tanpif16)
-
-add_math_entrypoint_object(tgamma)
-add_math_entrypoint_object(tgammaf)
-add_math_entrypoint_object(lgamma)
-add_math_entrypoint_object(lgamma_r)
-
-add_math_entrypoint_object(totalorder)
-add_math_entrypoint_object(totalorderf)
-add_math_entrypoint_object(totalorderl)
-add_math_entrypoint_object(totalorderf16)
-add_math_entrypoint_object(totalorderf128)
-add_math_entrypoint_object(totalorderbf16)
-
-add_math_entrypoint_object(totalordermag)
-add_math_entrypoint_object(totalordermagf)
-add_math_entrypoint_object(totalordermagl)
-add_math_entrypoint_object(totalordermagf16)
-add_math_entrypoint_object(totalordermagf128)
-add_math_entrypoint_object(totalordermagbf16)
-
-add_math_entrypoint_object(trunc)
-add_math_entrypoint_object(truncf)
-add_math_entrypoint_object(truncl)
-add_math_entrypoint_object(truncf16)
-add_math_entrypoint_object(truncf128)
-add_math_entrypoint_object(truncbf16)
-
-add_math_entrypoint_object(ufromfp)
-add_math_entrypoint_object(ufromfpf)
-add_math_entrypoint_object(ufromfpl)
-add_math_entrypoint_object(ufromfpf16)
-add_math_entrypoint_object(ufromfpf128)
-add_math_entrypoint_object(ufromfpbf16)
-
-add_math_entrypoint_object(ufromfpx)
-add_math_entrypoint_object(ufromfpxf)
-add_math_entrypoint_object(ufromfpxl)
-add_math_entrypoint_object(ufromfpxf16)
-add_math_entrypoint_object(ufromfpxf128)
-add_math_entrypoint_object(ufromfpxbf16)
-
-add_math_entrypoint_object(bf16add)
-add_math_entrypoint_object(bf16addf)
-add_math_entrypoint_object(bf16addl)
-add_math_entrypoint_object(bf16addf128)
-
-add_math_entrypoint_object(bf16div)
-add_math_entrypoint_object(bf16divf)
-add_math_entrypoint_object(bf16divl)
-add_math_entrypoint_object(bf16divf128)
-
-add_math_entrypoint_object(bf16fma)
-add_math_entrypoint_object(bf16fmaf)
-add_math_entrypoint_object(bf16fmal)
-add_math_entrypoint_object(bf16fmaf128)
-
-add_math_entrypoint_object(bf16mul)
-add_math_entrypoint_object(bf16mulf)
-add_math_entrypoint_object(bf16mull)
-add_math_entrypoint_object(bf16mulf128)
-
-add_math_entrypoint_object(bf16sub)
-add_math_entrypoint_object(bf16subf)
-add_math_entrypoint_object(bf16subl)
-add_math_entrypoint_object(bf16subf128)
+add_subdirectory(generic)
+if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${LIBC_TARGET_ARCHITECTURE})
+  add_subdirectory(${LIBC_TARGET_ARCHITECTURE})
+endif()
+
+function(add_math_entrypoint_object name)
+  # We prefer machine specific implementation if available. Hence we check
+  # that first and return early if we are able to add an alias target for the
+  # machine specific implementation.
+  get_fq_target_name("${LIBC_TARGET_ARCHITECTURE}.${name}" fq_machine_specific_target_name)
+  if(TARGET ${fq_machine_specific_target_name})
+    add_entrypoint_object(
+      ${name}
+      ALIAS
+      DEPENDS
+        .${LIBC_TARGET_ARCHITECTURE}.${name}
+    )
+    return()
+  endif()
+
+  get_fq_target_name("generic.${name}" fq_generic_target_name)
+  if(TARGET ${fq_generic_target_name})
+    add_entrypoint_object(
+      ${name}
+      ALIAS
+      DEPENDS
+        .generic.${name}
+    )
+    return()
+  endif()
+
+  # Add a dummy entrypoint object for missing implementations. They will be skipped
+  # anyway as there will be no entry for them in the target entrypoints list.
+  add_entrypoint_object(
+    ${name}
+    SRCS
+      dummy_srcs
+    HDRS
+      dummy_hdrs
+  )
+endfunction()
+
+add_math_entrypoint_object(acos)
+add_math_entrypoint_object(acosf)
+add_math_entrypoint_object(acosf16)
+
+add_math_entrypoint_object(acosh)
+add_math_entrypoint_object(acoshf)
+add_math_entrypoint_object(acoshf16)
+
+add_math_entrypoint_object(acospif16)
+ 
+add_math_entrypoint_object(asin)
+add_math_entrypoint_object(asinf)
+add_math_entrypoint_object(asinf16)
+
+add_math_entrypoint_object(asinh)
+add_math_entrypoint_object(asinhf)
+add_math_entrypoint_object(asinhf16)
+
+add_math_entrypoint_object(asinpif16)
+
+add_math_entrypoint_object(atan)
+add_math_entrypoint_object(atanf)
+add_math_entrypoint_object(atanf16)
+
+add_math_entrypoint_object(atan2)
+add_math_entrypoint_object(atan2f)
+add_math_entrypoint_object(atan2l)
+add_math_entrypoint_object(atan2f128)
+
+add_math_entrypoint_object(atanh)
+add_math_entrypoint_object(atanhf)
+add_math_entrypoint_object(atanhf16)
+
+add_math_entrypoint_object(atanpif16)
+
+add_math_entrypoint_object(canonicalize)
+add_math_entrypoint_object(canonicalizef)
+add_math_entrypoint_object(canonicalizel)
+add_math_entrypoint_object(canonicalizef16)
+add_math_entrypoint_object(canonicalizef128)
+add_math_entrypoint_object(canonicalizebf16)
+
+add_math_entrypoint_object(iscanonical)
+add_math_entrypoint_object(iscanonicalf)
+add_math_entrypoint_object(iscanonicall)
+add_math_entrypoint_object(iscanonicalf16)
+add_math_entrypoint_object(iscanonicalf128)
+add_math_entrypoint_object(iscanonicalbf16)
+
+add_math_entrypoint_object(cbrt)
+add_math_entrypoint_object(cbrtf)
+
+add_math_entrypoint_object(ceil)
+add_math_entrypoint_object(ceilf)
+add_math_entrypoint_object(ceill)
+add_math_entrypoint_object(ceilf16)
+add_math_entrypoint_object(ceilf128)
+add_math_entrypoint_object(ceilbf16)
+
+add_math_entrypoint_object(copysign)
+add_math_entrypoint_object(copysignf)
+add_math_entrypoint_object(copysignl)
+add_math_entrypoint_object(copysignf16)
+add_math_entrypoint_object(copysignf128)
+add_math_entrypoint_object(copysignbf16)
+
+add_math_entrypoint_object(cos)
+add_math_entrypoint_object(cosf)
+add_math_entrypoint_object(cosf16)
+
+add_math_entrypoint_object(cosh)
+add_math_entrypoint_object(coshf)
+add_math_entrypoint_object(coshf16)
+
+add_math_entrypoint_object(cospif)
+add_math_entrypoint_object(cospif16)
+
+add_math_entrypoint_object(daddl)
+add_math_entrypoint_object(daddf128)
+add_math_entrypoint_object(ddivl)
+add_math_entrypoint_object(ddivf128)
+add_math_entrypoint_object(dmull)
+add_math_entrypoint_object(dmulf128)
+
+add_math_entrypoint_object(dfmal)
+add_math_entrypoint_object(dfmaf128)
+
+add_math_entrypoint_object(dsqrtl)
+add_math_entrypoint_object(dsqrtf128)
+
+add_math_entrypoint_object(dsubl)
+add_math_entrypoint_object(dsubf128)
+
+add_math_entrypoint_object(erf)
+add_math_entrypoint_object(erff)
+
+add_math_entrypoint_object(exp)
+add_math_entrypoint_object(expf)
+add_math_entrypoint_object(expf16)
+
+add_math_entrypoint_object(exp2)
+add_math_entrypoint_object(exp2f)
+add_math_entrypoint_object(exp2f16)
+
+add_math_entrypoint_object(exp2m1f)
+add_math_entrypoint_object(exp2m1f16)
+
+add_math_entrypoint_object(exp10)
+add_math_entrypoint_object(exp10f)
+add_math_entrypoint_object(exp10f16)
+
+add_math_entrypoint_object(exp10m1f)
+add_math_entrypoint_object(exp10m1f16)
+
+add_math_entrypoint_object(expm1)
+add_math_entrypoint_object(expm1f)
+add_math_entrypoint_object(expm1f16)
+
+add_math_entrypoint_object(f16add)
+add_math_entrypoint_object(f16addf)
+add_math_entrypoint_object(f16addl)
+add_math_entrypoint_object(f16addf128)
+
+add_math_entrypoint_object(f16div)
+add_math_entrypoint_object(f16divf)
+add_math_entrypoint_object(f16divl)
+add_math_entrypoint_object(f16divf128)
+
+add_math_entrypoint_object(f16fma)
+add_math_entrypoint_object(f16fmaf)
+add_math_entrypoint_object(f16fmal)
+add_math_entrypoint_object(f16fmaf128)
+
+add_math_entrypoint_object(f16mul)
+add_math_entrypoint_object(f16mulf)
+add_math_entrypoint_object(f16mull)
+add_math_entrypoint_object(f16mulf128)
+
+add_math_entrypoint_object(f16sqrt)
+add_math_entrypoint_object(f16sqrtf)
+add_math_entrypoint_object(f16sqrtl)
+add_math_entrypoint_object(f16sqrtf128)
+
+add_math_entrypoint_object(fsqrt)
+add_math_entrypoint_object(fsqrtl)
+add_math_entrypoint_object(fsqrtf128)
+
+add_math_entrypoint_object(f16sub)
+add_math_entrypoint_object(f16subf)
+add_math_entrypoint_object(f16subl)
+add_math_entrypoint_object(f16subf128)
+
+add_math_entrypoint_object(fabs)
+add_math_entrypoint_object(fabsf)
+add_math_entrypoint_object(fabsl)
+add_math_entrypoint_object(fabsf16)
+add_math_entrypoint_object(fabsf128)
+add_math_entrypoint_object(fabsbf16)
+
+add_math_entrypoint_object(fadd)
+add_math_entrypoint_object(faddl)
+add_math_entrypoint_object(faddf128)
+
+add_math_entrypoint_object(fdim)
+add_math_entrypoint_object(fdimf)
+add_math_entrypoint_object(fdiml)
+add_math_entrypoint_object(fdimf16)
+add_math_entrypoint_object(fdimf128)
+add_math_entrypoint_object(fdimbf16)
+
+add_math_entrypoint_object(fdiv)
+add_math_entrypoint_object(fdivl)
+add_math_entrypoint_object(fdivf128)
+
+add_math_entrypoint_object(ffma)
+add_math_entrypoint_object(ffmal)
+add_math_entrypoint_object(ffmaf128)
+
+add_math_entrypoint_object(floor)
+add_math_entrypoint_object(floorf)
+add_math_entrypoint_object(floorl)
+add_math_entrypoint_object(floorf16)
+add_math_entrypoint_object(floorf128)
+add_math_entrypoint_object(floorbf16)
+
+add_math_entrypoint_object(fma)
+add_math_entrypoint_object(fmaf)
+add_math_entrypoint_object(fmaf16)
+add_math_entrypoint_object(fmabf16)
+
+add_math_entrypoint_object(fmax)
+add_math_entrypoint_object(fmaxf)
+add_math_entrypoint_object(fmaxl)
+add_math_entrypoint_object(fmaxf128)
+add_math_entrypoint_object(fmaxf16)
+add_math_entrypoint_object(fmaxbf16)
+
+add_math_entrypoint_object(fmin)
+add_math_entrypoint_object(fminf)
+add_math_entrypoint_object(fminl)
+add_math_entrypoint_object(fminf128)
+add_math_entrypoint_object(fminf16)
+add_math_entrypoint_object(fminbf16)
+
+add_math_entrypoint_object(fmaximum)
+add_math_entrypoint_object(fmaximumf)
+add_math_entrypoint_object(fmaximuml)
+add_math_entrypoint_object(fmaximumf16)
+add_math_entrypoint_object(fmaximumf128)
+add_math_entrypoint_object(fmaximumbf16)
+
+add_math_entrypoint_object(fmaximum_num)
+add_math_entrypoint_object(fmaximum_numf)
+add_math_entrypoint_object(fmaximum_numl)
+add_math_entrypoint_object(fmaximum_numf16)
+add_math_entrypoint_object(fmaximum_numf128)
+add_math_entrypoint_object(fmaximum_numbf16)
+
+add_math_entrypoint_object(fmaximum_mag)
+add_math_entrypoint_object(fmaximum_magf)
+add_math_entrypoint_object(fmaximum_magl)
+add_math_entrypoint_object(fmaximum_magf16)
+add_math_entrypoint_object(fmaximum_magf128)
+add_math_entrypoint_object(fmaximum_magbf16)
+
+add_math_entrypoint_object(fmaximum_mag_num)
+add_math_entrypoint_object(fmaximum_mag_numf)
+add_math_entrypoint_object(fmaximum_mag_numl)
+add_math_entrypoint_object(fmaximum_mag_numf16)
+add_math_entrypoint_object(fmaximum_mag_numf128)
+add_math_entrypoint_object(fmaximum_mag_numbf16)
+
+add_math_entrypoint_object(fminimum)
+add_math_entrypoint_object(fminimumf)
+add_math_entrypoint_object(fminimuml)
+add_math_entrypoint_object(fminimumf16)
+add_math_entrypoint_object(fminimumf128)
+add_math_entrypoint_object(fminimumbf16)
+
+add_math_entrypoint_object(fminimum_num)
+add_math_entrypoint_object(fminimum_numf)
+add_math_entrypoint_object(fminimum_numl)
+add_math_entrypoint_object(fminimum_numf16)
+add_math_entrypoint_object(fminimum_numf128)
+add_math_entrypoint_object(fminimum_numbf16)
+
+add_math_entrypoint_object(fminimum_mag)
+add_math_entrypoint_object(fminimum_magf)
+add_math_entrypoint_object(fminimum_magl)
+add_math_entrypoint_object(fminimum_magf16)
+add_math_entrypoint_object(fminimum_magf128)
+add_math_entrypoint_object(fminimum_magbf16)
+
+add_math_entrypoint_object(fminimum_mag_num)
+add_math_entrypoint_object(fminimum_mag_numf)
+add_math_entrypoint_object(fminimum_mag_numl)
+add_math_entrypoint_object(fminimum_mag_numf16)
+add_math_entrypoint_object(fminimum_mag_numf128)
+add_math_entrypoint_object(fminimum_mag_numbf16)
+
+add_math_entrypoint_object(fmul)
+add_math_entrypoint_object(fmull)
+add_math_entrypoint_object(fmulf128)
+
+add_math_entrypoint_object(fmod)
+add_math_entrypoint_object(fmodf)
+add_math_entrypoint_object(fmodl)
+add_math_entrypoint_object(fmodf16)
+add_math_entrypoint_object(fmodf128)
+add_math_entrypoint_object(fmodbf16)
+
+add_math_entrypoint_object(frexp)
+add_math_entrypoint_object(frexpf)
+add_math_entrypoint_object(frexpl)
+add_math_entrypoint_object(frexpf16)
+add_math_entrypoint_object(frexpf128)
+add_math_entrypoint_object(frexpbf16)
+
+add_math_entrypoint_object(fromfp)
+add_math_entrypoint_object(fromfpf)
+add_math_entrypoint_object(fromfpl)
+add_math_entrypoint_object(fromfpf16)
+add_math_entrypoint_object(fromfpf128)
+add_math_entrypoint_object(fromfpbf16)
+
+add_math_entrypoint_object(fromfpx)
+add_math_entrypoint_object(fromfpxf)
+add_math_entrypoint_object(fromfpxl)
+add_math_entrypoint_object(fromfpxf16)
+add_math_entrypoint_object(fromfpxf128)
+add_math_entrypoint_object(fromfpxbf16)
+
+add_math_entrypoint_object(fsub)
+add_math_entrypoint_object(fsubl)
+add_math_entrypoint_object(fsubf128)
+
+add_math_entrypoint_object(getpayload)
+add_math_entrypoint_object(getpayloadf)
+add_math_entrypoint_object(getpayloadl)
+add_math_entrypoint_object(getpayloadf16)
+add_math_entrypoint_object(getpayloadf128)
+add_math_entrypoint_object(getpayloadbf16)
+
+add_math_entrypoint_object(hypot)
+add_math_entrypoint_object(hypotf)
+add_math_entrypoint_object(hypotf16)
+
+add_math_entrypoint_object(ilogb)
+add_math_entrypoint_object(ilogbf)
+add_math_entrypoint_object(ilogbl)
+add_math_entrypoint_object(ilogbf16)
+add_math_entrypoint_object(ilogbf128)
+add_math_entrypoint_object(ilogbbf16)
+
+add_math_entrypoint_object(isnan)
+add_math_entrypoint_object(isnanf)
+add_math_entrypoint_object(isnanl)
+
+add_math_entrypoint_object(issignaling)
+add_math_entrypoint_object(issignalingf)
+add_math_entrypoint_object(issignalingl)
+add_math_entrypoint_object(issignalingf16)
+add_math_entrypoint_object(issignalingf128)
+add_math_entrypoint_object(issignalingbf16)
+
+add_math_entrypoint_object(llogb)
+add_math_entrypoint_object(llogbf)
+add_math_entrypoint_object(llogbl)
+add_math_entrypoint_object(llogbf16)
+add_math_entrypoint_object(llogbf128)
+add_math_entrypoint_object(llogbbf16)
+
+add_math_entrypoint_object(ldexp)
+add_math_entrypoint_object(ldexpf)
+add_math_entrypoint_object(ldexpl)
+add_math_entrypoint_object(ldexpf16)
+add_math_entrypoint_object(ldexpf128)
+add_math_entrypoint_object(ldexpbf16)
+
+add_math_entrypoint_object(log10)
+add_math_entrypoint_object(log10f)
+add_math_entrypoint_object(log10f16)
+
+add_math_entrypoint_object(log1p)
+add_math_entrypoint_object(log1pf)
+
+add_math_entrypoint_object(log2)
+add_math_entrypoint_object(log2f)
+add_math_entrypoint_object(log2f16)
+
+add_math_entrypoint_object(log)
+add_math_entrypoint_object(logf)
+add_math_entrypoint_object(logf16)
+add_math_entrypoint_object(log_bf16)
+
+add_math_entrypoint_object(logb)
+add_math_entrypoint_object(logbf)
+add_math_entrypoint_object(logbl)
+add_math_entrypoint_object(logbf16)
+add_math_entrypoint_object(logbf128)
+add_math_entrypoint_object(logbbf16)
+
+add_math_entrypoint_object(llrint)
+add_math_entrypoint_object(llrintf)
+add_math_entrypoint_object(llrintl)
+add_math_entrypoint_object(llrintf16)
+add_math_entrypoint_object(llrintf128)
+add_math_entrypoint_object(llrintbf16)
+
+add_math_entrypoint_object(llround)
+add_math_entrypoint_object(llroundf)
+add_math_entrypoint_object(llroundl)
+add_math_entrypoint_object(llroundf16)
+add_math_entrypoint_object(llroundf128)
+add_math_entrypoint_object(llroundbf16)
+
+add_math_entrypoint_object(lrint)
+add_math_entrypoint_object(lrintf)
+add_math_entrypoint_object(lrintl)
+add_math_entrypoint_object(lrintf16)
+add_math_entrypoint_object(lrintf128)
+add_math_entrypoint_object(lrintbf16)
+
+add_math_entrypoint_object(lround)
+add_math_entrypoint_object(lroundf)
+add_math_entrypoint_object(lroundl)
+add_math_entrypoint_object(lroundf16)
+add_math_entrypoint_object(lroundf128)
+add_math_entrypoint_object(lroundbf16)
+
+add_math_entrypoint_object(modf)
+add_math_entrypoint_object(modff)
+add_math_entrypoint_object(modfl)
+add_math_entrypoint_object(modff16)
+add_math_entrypoint_object(modff128)
+add_math_entrypoint_object(modfbf16)
+
+add_math_entrypoint_object(nan)
+add_math_entrypoint_object(nanf)
+add_math_entrypoint_object(nanl)
+add_math_entrypoint_object(nanf16)
+add_math_entrypoint_object(nanf128)
+add_math_entrypoint_object(nanbf16)
+
+add_math_entrypoint_object(nearbyint)
+add_math_entrypoint_object(nearbyintf)
+add_math_entrypoint_object(nearbyintl)
+add_math_entrypoint_object(nearbyintf16)
+add_math_entrypoint_object(nearbyintf128)
+add_math_entrypoint_object(nearbyintbf16)
+
+add_math_entrypoint_object(nextafter)
+add_math_entrypoint_object(nextafterf)
+add_math_entrypoint_object(nextafterl)
+add_math_entrypoint_object(nextafterf16)
+add_math_entrypoint_object(nextafterf128)
+add_math_entrypoint_object(nextafterbf16)
+
+add_math_entrypoint_object(nexttoward)
+add_math_entrypoint_object(nexttowardf)
+add_math_entrypoint_object(nexttowardl)
+add_math_entrypoint_object(nexttowardf16)
+add_math_entrypoint_object(nexttowardbf16)
+
+add_math_entrypoint_object(nextdown)
+add_math_entrypoint_object(nextdownf)
+add_math_entrypoint_object(nextdownl)
+add_math_entrypoint_object(nextdownf16)
+add_math_entrypoint_object(nextdownf128)
+add_math_entrypoint_object(nextdownbf16)
+
+add_math_entrypoint_object(nextup)
+add_math_entrypoint_object(nextupf)
+add_math_entrypoint_object(nextupl)
+add_math_entrypoint_object(nextupf16)
+add_math_entrypoint_object(nextupf128)
+add_math_entrypoint_object(nextupbf16)
+
+add_math_entrypoint_object(pow)
+add_math_entrypoint_object(powf)
+add_math_entrypoint_object(powi)
+add_math_entrypoint_object(powif)
+
+add_math_entrypoint_object(remainder)
+add_math_entrypoint_object(remainderf)
+add_math_entrypoint_object(remainderl)
+add_math_entrypoint_object(remainderf16)
+add_math_entrypoint_object(remainderf128)
+add_math_entrypoint_object(remainderbf16)
+
+add_math_entrypoint_object(remquo)
+add_math_entrypoint_object(remquof)
+add_math_entrypoint_object(remquol)
+add_math_entrypoint_object(remquof16)
+add_math_entrypoint_object(remquof128)
+add_math_entrypoint_object(remquobf16)
+
+add_math_entrypoint_object(rint)
+add_math_entrypoint_object(rintf)
+add_math_entrypoint_object(rintl)
+add_math_entrypoint_object(rintf16)
+add_math_entrypoint_object(rintf128)
+add_math_entrypoint_object(rintbf16)
+
+add_math_entrypoint_object(round)
+add_math_entrypoint_object(roundf)
+add_math_entrypoint_object(roundl)
+add_math_entrypoint_object(roundf16)
+add_math_entrypoint_object(roundf128)
+add_math_entrypoint_object(roundbf16)
+
+add_math_entrypoint_object(roundeven)
+add_math_entrypoint_object(roundevenf)
+add_math_entrypoint_object(roundevenl)
+add_math_entrypoint_object(roundevenf16)
+add_math_entrypoint_object(roundevenf128)
+add_math_entrypoint_object(roundevenbf16)
+
+add_math_entrypoint_object(rsqrtf)
+add_math_entrypoint_object(rsqrtf16)
+
+add_math_entrypoint_object(scalbln)
+add_math_entrypoint_object(scalblnf)
+add_math_entrypoint_object(scalblnl)
+add_math_entrypoint_object(scalblnf16)
+add_math_entrypoint_object(scalblnf128)
+add_math_entrypoint_object(scalblnbf16)
+
+add_math_entrypoint_object(scalbn)
+add_math_entrypoint_object(scalbnf)
+add_math_entrypoint_object(scalbnl)
+add_math_entrypoint_object(scalbnf16)
+add_math_entrypoint_object(scalbnf128)
+add_math_entrypoint_object(scalbnbf16)
+
+add_math_entrypoint_object(setpayload)
+add_math_entrypoint_object(setpayloadf)
+add_math_entrypoint_object(setpayloadl)
+add_math_entrypoint_object(setpayloadf16)
+add_math_entrypoint_object(setpayloadf128)
+add_math_entrypoint_object(setpayloadbf16)
+
+add_math_entrypoint_object(setpayloadsig)
+add_math_entrypoint_object(setpayloadsigf)
+add_math_entrypoint_object(setpayloadsigl)
+add_math_entrypoint_object(setpayloadsigf16)
+add_math_entrypoint_object(setpayloadsigf128)
+add_math_entrypoint_object(setpayloadsigbf16)
+
+add_math_entrypoint_object(sincos)
+add_math_entrypoint_object(sincosf)
+
+add_math_entrypoint_object(sin)
+add_math_entrypoint_object(sinf)
+add_math_entrypoint_object(sinf16)
+add_math_entrypoint_object(sinpif)
+add_math_entrypoint_object(sinpif16)
+
+add_math_entrypoint_object(sinh)
+add_math_entrypoint_object(sinhf)
+add_math_entrypoint_object(sinhf16)
+
+add_math_entrypoint_object(sqrt)
+add_math_entrypoint_object(sqrtf)
+add_math_entrypoint_object(sqrtl)
+add_math_entrypoint_object(sqrtf16)
+add_math_entrypoint_object(sqrtf128)
+add_math_entrypoint_object(sqrtbf16)
+
+add_math_entrypoint_object(tan)
+add_math_entrypoint_object(tanf)
+add_math_entrypoint_object(tanf16)
+
+add_math_entrypoint_object(tanh)
+add_math_entrypoint_object(tanhf)
+add_math_entrypoint_object(tanhf16)
+
+add_math_entrypoint_object(tanpif)
+add_math_entrypoint_object(tanpif16)
+
+add_math_entrypoint_object(tgamma)
+add_math_entrypoint_object(tgammaf)
+add_math_entrypoint_object(lgamma)
+add_math_entrypoint_object(lgamma_r)
+
+add_math_entrypoint_object(totalorder)
+add_math_entrypoint_object(totalorderf)
+add_math_entrypoint_object(totalorderl)
+add_math_entrypoint_object(totalorderf16)
+add_math_entrypoint_object(totalorderf128)
+add_math_entrypoint_object(totalorderbf16)
+
+add_math_entrypoint_object(totalordermag)
+add_math_entrypoint_object(totalordermagf)
+add_math_entrypoint_object(totalordermagl)
+add_math_entrypoint_object(totalordermagf16)
+add_math_entrypoint_object(totalordermagf128)
+add_math_entrypoint_object(totalordermagbf16)
+
+add_math_entrypoint_object(trunc)
+add_math_entrypoint_object(truncf)
+add_math_entrypoint_object(truncl)
+add_math_entrypoint_object(truncf16)
+add_math_entrypoint_object(truncf128)
+add_math_entrypoint_object(truncbf16)
+
+add_math_entrypoint_object(ufromfp)
+add_math_entrypoint_object(ufromfpf)
+add_math_entrypoint_object(ufromfpl)
+add_math_entrypoint_object(ufromfpf16)
+add_math_entrypoint_object(ufromfpf128)
+add_math_entrypoint_object(ufromfpbf16)
+
+add_math_entrypoint_object(ufromfpx)
+add_math_entrypoint_object(ufromfpxf)
+add_math_entrypoint_object(ufromfpxl)
+add_math_entrypoint_object(ufromfpxf16)
+add_math_entrypoint_object(ufromfpxf128)
+add_math_entrypoint_object(ufromfpxbf16)
+
+add_math_entrypoint_object(bf16add)
+add_math_entrypoint_object(bf16addf)
+add_math_entrypoint_object(bf16addl)
+add_math_entrypoint_object(bf16addf128)
+
+add_math_entrypoint_object(bf16div)
+add_math_entrypoint_object(bf16divf)
+add_math_entrypoint_object(bf16divl)
+add_math_entrypoint_object(bf16divf128)
+
+add_math_entrypoint_object(bf16fma)
+add_math_entrypoint_object(bf16fmaf)
+add_math_entrypoint_object(bf16fmal)
+add_math_entrypoint_object(bf16fmaf128)
+
+add_math_entrypoint_object(bf16mul)
+add_math_entrypoint_object(bf16mulf)
+add_math_entrypoint_object(bf16mull)
+add_math_entrypoint_object(bf16mulf128)
+
+add_math_entrypoint_object(bf16sub)
+add_math_entrypoint_object(bf16subf)
+add_math_entrypoint_object(bf16subl)
+add_math_entrypoint_object(bf16subf128)
diff --git a/libc/src/math/ffmal.h b/libc/src/math/ffmal.h
index 1cbb61dcd2134..75fd40a0a92a2 100644
--- a/libc/src/math/ffmal.h
+++ b/libc/src/math/ffmal.h
@@ -1,20 +1,20 @@
-//===-- Implementation header for ffmal -------------------------*- C++ -*-===//
-//
-// 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
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef LLVM_LIBC_SRC_MATH_FFMAL_H
-#define LLVM_LIBC_SRC_MATH_FFMAL_H
-
-#include "src/__support/macros/config.h"
-
-namespace LIBC_NAMESPACE_DECL {
-
-float ffmal(long double x, long double y, long double z);
-
-} // namespace LIBC_NAMESPACE_DECL
-
-#endif // LLVM_LIBC_SRC_MATH_FFMAL_H
+//===-- Implementation header for ffmal -------------------------*- C++ -*-===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_LIBC_SRC_MATH_FFMAL_H
+#define LLVM_LIBC_SRC_MATH_FFMAL_H
+
+#include "src/__support/macros/config.h"
+
+namespace LIBC_NAMESPACE_DECL {
+
+float ffmal(long double x, long double y, long double z);
+
+} // namespace LIBC_NAMESPACE_DECL
+
+#endif // LLVM_LIBC_SRC_MATH_FFMAL_H

>From 2ee10dd300034199490b81c5dd32f6c4f0b3984f Mon Sep 17 00:00:00 2001
From: Sukumarsawant <sawantsukumar at gmail.com>
Date: Mon, 9 Feb 2026 18:50:42 +0530
Subject: [PATCH 05/43] crlf->lf 4

---
 libc/test/src/math/CMakeLists.txt | 6964 ++++++++++++++---------------
 1 file changed, 3482 insertions(+), 3482 deletions(-)

diff --git a/libc/test/src/math/CMakeLists.txt b/libc/test/src/math/CMakeLists.txt
index e478b57c9b3c8..abfd40f98a29a 100644
--- a/libc/test/src/math/CMakeLists.txt
+++ b/libc/test/src/math/CMakeLists.txt
@@ -1,3482 +1,3482 @@
-add_custom_target(libc-math-unittests)
-
-add_fp_unittest(
-  cosf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    cosf_test.cpp
-  HDRS
-    sdcomp26094.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.cosf
-    libc.src.__support.CPP.array
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  cosf_float_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    cosf_float_test.cpp
-  DEPENDS
-    libc.src.__support.math.sincosf_utils
-    libc.src.__support.FPUtil.fp_bits
-  FLAGS
-    FMA_OPT__ONLY
-)
-
-add_fp_unittest(
-  cos_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    cos_test.cpp
-  DEPENDS
-    libc.src.math.cos
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  cosf16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    cosf16_test.cpp
-  DEPENDS
-    libc.src.math.cosf16
-)
-
-add_fp_unittest(
-  cospif_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    cospif_test.cpp
-  HDRS
-    sdcomp26094.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.cospif
-    libc.src.__support.CPP.array
-    libc.src.__support.FPUtil.fp_bits
-)
-
-
-add_fp_unittest(
-  cospif16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    cospif16_test.cpp
-  DEPENDS
-    libc.src.math.cospif16
-)
-
-add_fp_unittest(
-  daddl_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    daddl_test.cpp
-  HDRS
-    AddTest.h
-  DEPENDS
-    libc.src.math.daddl
-)
-
-add_fp_unittest(
-  sinf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    sinf_test.cpp
-  HDRS
-    sdcomp26094.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.sinf
-    libc.src.__support.CPP.array
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  sinf_float_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    sinf_float_test.cpp
-  DEPENDS
-    libc.src.__support.math.sincosf_utils
-    libc.src.__support.FPUtil.fp_bits
-  FLAGS
-    FMA_OPT__ONLY
-)
-
-add_fp_unittest(
-  sinf16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    sinf16_test.cpp
-  DEPENDS
-    libc.src.math.sinf16
-)
-
-add_fp_unittest(
-  sinpif_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    sinpif_test.cpp
-  HDRS
-    sdcomp26094.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.sinpif
-    libc.src.__support.CPP.array
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  sinpif16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    sinpif16_test.cpp
-  DEPENDS
-    libc.src.math.sinpif16
-)
-
-add_fp_unittest(
-  sin_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    sin_test.cpp
-  DEPENDS
-    libc.src.math.sin
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  sincosf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    sincosf_test.cpp
-  HDRS
-    sdcomp26094.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.sincosf
-    libc.src.__support.CPP.array
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  sincos_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    sincos_test.cpp
-  DEPENDS
-    libc.src.math.sincos
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  tanf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    tanf_test.cpp
-  HDRS
-    sdcomp26094.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.tanf
-    libc.src.__support.CPP.array
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  tanf16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    tanf16_test.cpp
-  DEPENDS
-    libc.src.math.tanf16
-)
-
-add_fp_unittest(
-  tanpif_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    tanpif_test.cpp
-  HDRS
-    sdcomp26094.h
-  DEPENDS
-    libc.src.math.tanpif
-    libc.src.__support.CPP.array
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  tanpif16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    tanpif16_test.cpp
-  DEPENDS
-    libc.src.math.tanpif16
-)
-
-add_fp_unittest(
-  fabs_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    fabs_test.cpp
-  HDRS
-    FAbsTest.h
-  DEPENDS
-    libc.src.math.fabs
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fabsf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    fabsf_test.cpp
-  HDRS
-    FAbsTest.h
-  DEPENDS
-    libc.src.math.fabsf
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fabsl_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    fabsl_test.cpp
-  HDRS
-    FAbsTest.h
-  DEPENDS
-    libc.src.math.fabsl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fadd_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    fadd_test.cpp
-  HDRS
-    AddTest.h
-  DEPENDS
-    libc.src.math.fadd
-    libc.src.__support.FPUtil.basic_operations
-)
-
-add_fp_unittest(
-  faddl_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    faddl_test.cpp
-  HDRS
-    AddTest.h
-  DEPENDS
-    libc.src.math.faddl
-)
-
-add_fp_unittest(
-  trunc_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    trunc_test.cpp
-  HDRS
-    TruncTest.h
-  DEPENDS
-    libc.src.math.trunc
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  truncf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    truncf_test.cpp
-  HDRS
-    TruncTest.h
-  DEPENDS
-    libc.src.math.truncf
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  truncl_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    truncl_test.cpp
-  HDRS
-    TruncTest.h
-  DEPENDS
-    libc.src.math.truncl
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  truncf16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    truncf16_test.cpp
-  HDRS
-    TruncTest.h
-  DEPENDS
-    libc.src.math.truncf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  ceil_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    ceil_test.cpp
-  HDRS
-    CeilTest.h
-  DEPENDS
-    libc.src.math.ceil
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  ceilf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    ceilf_test.cpp
-  HDRS
-    CeilTest.h
-  DEPENDS
-    libc.src.math.ceilf
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  ceill_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    ceill_test.cpp
-  HDRS
-    CeilTest.h
-  DEPENDS
-    libc.src.math.ceill
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  ceilf16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    ceilf16_test.cpp
-  HDRS
-    CeilTest.h
-  DEPENDS
-    libc.src.math.ceilf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  floor_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    floor_test.cpp
-  HDRS
-    FloorTest.h
-  DEPENDS
-    libc.src.math.floor
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  floorf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    floorf_test.cpp
-  HDRS
-    FloorTest.h
-  DEPENDS
-    libc.src.math.floorf
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  floorl_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    floorl_test.cpp
-  HDRS
-    FloorTest.h
-  DEPENDS
-    libc.src.math.floorl
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  floorf16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    floorf16_test.cpp
-  HDRS
-    FloorTest.h
-  DEPENDS
-    libc.src.math.floorf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  round_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    round_test.cpp
-  HDRS
-    RoundTest.h
-  DEPENDS
-    libc.src.math.round
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  roundf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    roundf_test.cpp
-  HDRS
-    RoundTest.h
-  DEPENDS
-    libc.src.math.roundf
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  roundl_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    roundl_test.cpp
-  HDRS
-    RoundTest.h
-  DEPENDS
-    libc.src.math.roundl
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  roundf16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    roundf16_test.cpp
-  HDRS
-    RoundTest.h
-  DEPENDS
-    libc.src.math.roundf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  roundeven_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    roundeven_test.cpp
-  HDRS
-  RoundEvenTest.h
-  DEPENDS
-    libc.src.math.roundeven
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  roundevenf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    roundevenf_test.cpp
-  HDRS
-  RoundEvenTest.h
-  DEPENDS
-    libc.src.math.roundevenf
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  roundevenl_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    roundevenl_test.cpp
-  HDRS
-  RoundEvenTest.h
-  DEPENDS
-    libc.src.math.roundevenl
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  roundevenf16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    roundevenf16_test.cpp
-  HDRS
-  RoundEvenTest.h
-  DEPENDS
-    libc.src.math.roundevenf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  lround_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    lround_test.cpp
-  HDRS
-    RoundToIntegerTest.h
-  DEPENDS
-    libc.hdr.fenv_macros
-    libc.src.errno.errno
-    libc.src.math.lround
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  lroundf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    lroundf_test.cpp
-  HDRS
-    RoundToIntegerTest.h
-  DEPENDS
-    libc.hdr.fenv_macros
-    libc.src.errno.errno
-    libc.src.math.lroundf
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  lroundl_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    lroundl_test.cpp
-  HDRS
-    RoundToIntegerTest.h
-  DEPENDS
-    libc.hdr.fenv_macros
-    libc.src.errno.errno
-    libc.src.math.lroundl
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  lroundf16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    lroundf16_test.cpp
-  HDRS
-    RoundToIntegerTest.h
-  DEPENDS
-    libc.hdr.fenv_macros
-    libc.src.errno.errno
-    libc.src.math.lroundf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  lroundbf16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    lroundbf16_test.cpp
-  HDRS
-    RoundToIntegerTest.h
-  DEPENDS
-    libc.hdr.fenv_macros
-    libc.src.errno.errno
-    libc.src.math.lroundbf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  llround_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    llround_test.cpp
-  HDRS
-    RoundToIntegerTest.h
-  DEPENDS
-    libc.hdr.fenv_macros
-    libc.src.errno.errno
-    libc.src.math.llround
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  llroundf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    llroundf_test.cpp
-  HDRS
-    RoundToIntegerTest.h
-  DEPENDS
-    libc.hdr.fenv_macros
-    libc.src.errno.errno
-    libc.src.math.llroundf
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  llroundl_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    llroundl_test.cpp
-  HDRS
-    RoundToIntegerTest.h
-  DEPENDS
-    libc.hdr.fenv_macros
-    libc.src.errno.errno
-    libc.src.math.llroundl
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  llroundf16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    llroundf16_test.cpp
-  HDRS
-    RoundToIntegerTest.h
-  DEPENDS
-    libc.hdr.fenv_macros
-    libc.src.errno.errno
-    libc.src.math.llroundf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  llroundbf16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    llroundbf16_test.cpp
-  HDRS
-    RoundToIntegerTest.h
-  DEPENDS
-    libc.hdr.fenv_macros
-    libc.src.errno.errno
-    libc.src.math.llroundbf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  nearbyint_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    nearbyint_test.cpp
-  HDRS
-    NearbyIntTest.h
-  DEPENDS
-    libc.src.math.nearbyint
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.CPP.array
-)
-
-add_fp_unittest(
-  nearbyintf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    nearbyintf_test.cpp
-  HDRS
-    NearbyIntTest.h
-  DEPENDS
-    libc.src.math.nearbyintf
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.CPP.array
-)
-
-add_fp_unittest(
-  nearbyintl_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    nearbyintl_test.cpp
-  HDRS
-    NearbyIntTest.h
-  DEPENDS
-    libc.src.math.nearbyintl
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.CPP.array
-)
-
-add_fp_unittest(
-  nearbyintf16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    nearbyintf16_test.cpp
-  HDRS
-    NearbyIntTest.h
-  DEPENDS
-    libc.src.math.nearbyintf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.CPP.array
-)
-
-add_fp_unittest(
-  nearbyintbf16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    nearbyintbf16_test.cpp
-  HDRS
-    NearbyIntTest.h
-  DEPENDS
-    libc.src.math.nearbyintbf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.CPP.array
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  rint_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    rint_test.cpp
-  HDRS
-    RIntTest.h
-  DEPENDS
-    libc.hdr.fenv_macros
-    libc.src.math.rint
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  rintf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    rintf_test.cpp
-  HDRS
-    RIntTest.h
-  DEPENDS
-    libc.hdr.fenv_macros
-    libc.src.math.rintf
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  rintl_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    rintl_test.cpp
-  HDRS
-    RIntTest.h
-  DEPENDS
-    libc.hdr.fenv_macros
-    libc.src.math.rintl
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  rintf16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    rintf16_test.cpp
-  HDRS
-    RIntTest.h
-  DEPENDS
-    libc.hdr.fenv_macros
-    libc.src.math.rintf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  rintbf16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    rintbf16_test.cpp
-  HDRS
-    RIntTest.h
-  DEPENDS
-    libc.hdr.fenv_macros
-    libc.src.math.rintbf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  lrint_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    lrint_test.cpp
-  HDRS
-    RoundToIntegerTest.h
-  DEPENDS
-    libc.src.math.lrint
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  lrintf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    lrintf_test.cpp
-  HDRS
-    RoundToIntegerTest.h
-  DEPENDS
-    libc.src.math.lrintf
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  lrintl_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    lrintl_test.cpp
-  HDRS
-    RoundToIntegerTest.h
-  DEPENDS
-    libc.src.math.lrintl
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  lrintf16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    lrintf16_test.cpp
-  HDRS
-    RoundToIntegerTest.h
-  DEPENDS
-    libc.src.math.lrintf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  lrintbf16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    lrintbf16_test.cpp
-  HDRS
-    RoundToIntegerTest.h
-  DEPENDS
-    libc.src.math.lrintbf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  llrint_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    llrint_test.cpp
-  HDRS
-    RoundToIntegerTest.h
-  DEPENDS
-    libc.src.math.llrint
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  llrintf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    llrintf_test.cpp
-  HDRS
-    RoundToIntegerTest.h
-  DEPENDS
-    libc.src.math.llrintf
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  llrintl_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    llrintl_test.cpp
-  HDRS
-    RoundToIntegerTest.h
-  DEPENDS
-    libc.src.math.llrintl
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  llrintf16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    llrintf16_test.cpp
-  HDRS
-    RoundToIntegerTest.h
-  DEPENDS
-    libc.src.math.llrintf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  llrintbf16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    llrintbf16_test.cpp
-  HDRS
-    RoundToIntegerTest.h
-  DEPENDS
-    libc.src.math.llrintbf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  exp_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    exp_test.cpp
-  DEPENDS
-    libc.src.math.exp
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  expf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    expf_test.cpp
-  DEPENDS
-    libc.src.errno.errno
-    libc.src.math.expf
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  expf16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    expf16_test.cpp
-  DEPENDS
-    libc.src.math.expf16
-)
-
-add_fp_unittest(
-  exp2_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    exp2_test.cpp
-  DEPENDS
-    libc.src.math.exp2
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  exp2f_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    exp2f_test.cpp
-  DEPENDS
-    libc.src.errno.errno
-    libc.src.math.exp2f
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  exp2f16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    exp2f16_test.cpp
-  DEPENDS
-    libc.src.math.exp2f16
-)
-
-add_fp_unittest(
-  exp2m1f_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    exp2m1f_test.cpp
-  DEPENDS
-    libc.src.errno.errno
-    libc.src.math.exp2m1f
-    libc.src.__support.CPP.array
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  exp2m1f16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    exp2m1f16_test.cpp
-  DEPENDS
-    libc.src.math.exp2m1f16
-)
-
-add_fp_unittest(
-  exp10_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    exp10_test.cpp
-  DEPENDS
-    libc.src.math.exp10
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  exp10f_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    exp10f_test.cpp
-  DEPENDS
-    libc.src.errno.errno
-    libc.src.math.exp10f
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  exp10f16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    exp10f16_test.cpp
-  DEPENDS
-    libc.src.math.exp10f16
-)
-
-add_fp_unittest(
-  exp10m1f16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    exp10m1f16_test.cpp
-  DEPENDS
-    libc.src.math.exp10m1f16
-)
-
-add_fp_unittest(
-  exp10m1f_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    exp10m1f_test.cpp
-  DEPENDS
-    libc.hdr.math_macros
-    libc.src.errno.errno
-    libc.src.math.exp10m1f
-    libc.src.__support.CPP.array
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  copysign_test
-  SUITE
-    libc-math-unittests
-  SRCS
-    copysign_test.cpp
-  HDRS
-    CopySignTest.h
-  DEPENDS
-    libc.src.math.copysign
-    libc.src.__support.FPUtil.fp_bits
-  # FIXME: Currently fails on the GPU build.
-  UNIT_TEST_ONLY
-)
-
-add_fp_unittest(
-  copysignf_test
-  SUITE
-    libc-math-unittests
-  SRCS
-    copysignf_test.cpp
-  HDRS
-    CopySignTest.h
-  DEPENDS
-    libc.src.math.copysignf
-    libc.src.__support.FPUtil.fp_bits
-  # FIXME: Currently fails on the GPU build.
-  UNIT_TEST_ONLY
-)
-
-add_fp_unittest(
-  copysignl_test
-  SUITE
-    libc-math-unittests
-  SRCS
-    copysignl_test.cpp
-  HDRS
-    CopySignTest.h
-  DEPENDS
-    libc.src.math.copysignl
-    libc.src.__support.FPUtil.fp_bits
-  # FIXME: Currently fails on the GPU build.
-  UNIT_TEST_ONLY
-)
-
-add_fp_unittest(
-  frexp_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    frexp_test.cpp
-  HDRS
-    FrexpTest.h
-  DEPENDS
-    libc.src.math.frexp
-    libc.src.__support.FPUtil.basic_operations
-)
-
-add_fp_unittest(
-  frexpf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    frexpf_test.cpp
-  HDRS
-    FrexpTest.h
-  DEPENDS
-    libc.src.math.frexpf
-    libc.src.__support.FPUtil.basic_operations
-)
-
-add_fp_unittest(
-  frexpl_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    frexpl_test.cpp
-  HDRS
-    FrexpTest.h
-  DEPENDS
-    libc.src.math.frexpl
-    libc.src.__support.FPUtil.basic_operations
-)
-
-add_fp_unittest(
-  ilogb_test
-  SUITE
-    libc-math-unittests
-  SRCS
-    ilogb_test.cpp
-  HDRS
-    ILogbTest.h
-  DEPENDS
-    libc.src.math.ilogb
-    libc.src.__support.CPP.limits
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.manipulation_functions
-)
-
-add_fp_unittest(
-  ilogbf_test
-  SUITE
-    libc-math-unittests
-  SRCS
-    ilogbf_test.cpp
-  HDRS
-    ILogbTest.h
-  DEPENDS
-    libc.src.math.ilogbf
-    libc.src.__support.CPP.limits
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.manipulation_functions
-)
-
-add_fp_unittest(
-  ilogbl_test
-  SUITE
-    libc-math-unittests
-  SRCS
-    ilogbl_test.cpp
-  HDRS
-    ILogbTest.h
-  DEPENDS
-    libc.src.math.ilogbl
-    libc.src.__support.CPP.limits
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.manipulation_functions
-)
-
-add_fp_unittest(
-  ldexp_test
-  SUITE
-    libc-math-unittests
-  SRCS
-    ldexp_test.cpp
-  HDRS
-    LdExpTest.h
-  DEPENDS
-    libc.src.math.ldexp
-    libc.src.__support.CPP.limits
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.normal_float
-)
-
-add_fp_unittest(
-  ldexpf_test
-  SUITE
-    libc-math-unittests
-  SRCS
-    ldexpf_test.cpp
-  HDRS
-    LdExpTest.h
-  DEPENDS
-    libc.src.math.ldexpf
-    libc.src.__support.CPP.limits
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.normal_float
-)
-
-add_fp_unittest(
-  ldexpl_test
-  SUITE
-    libc-math-unittests
-  SRCS
-    ldexpl_test.cpp
-  HDRS
-    LdExpTest.h
-  DEPENDS
-    libc.src.math.ldexpl
-    libc.src.__support.CPP.limits
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.normal_float
-)
-
-add_fp_unittest(
-  logb_test
-  SUITE
-    libc-math-unittests
-  SRCS
-    logb_test.cpp
-  DEPENDS
-    libc.src.math.logb
-    libc.src.__support.FPUtil.manipulation_functions
-)
-
-add_fp_unittest(
-  logbf_test
-  SUITE
-    libc-math-unittests
-  SRCS
-    logbf_test.cpp
-  DEPENDS
-    libc.src.math.logbf
-    libc.src.__support.FPUtil.manipulation_functions
-)
-
-add_fp_unittest(
-  logbl_test
-  SUITE
-    libc-math-unittests
-  SRCS
-    logbl_test.cpp
-  HDRS
-    LogbTest.h
-  DEPENDS
-    libc.src.math.logbl
-    libc.src.__support.FPUtil.manipulation_functions
-)
-
-add_fp_unittest(
-  modf_test
-  SUITE
-    libc-math-unittests
-  SRCS
-    modf_test.cpp
-  HDRS
-    ModfTest.h
-  DEPENDS
-    libc.src.math.modf
-    libc.src.__support.FPUtil.basic_operations
-    libc.src.__support.FPUtil.nearest_integer_operations
-  # Requires C++ limits.
-  UNIT_TEST_ONLY
-)
-
-add_fp_unittest(
-  modff_test
-  SUITE
-    libc-math-unittests
-  SRCS
-    modff_test.cpp
-  HDRS
-    ModfTest.h
-  DEPENDS
-    libc.src.math.modff
-    libc.src.__support.FPUtil.basic_operations
-    libc.src.__support.FPUtil.nearest_integer_operations
-  # Requires C++ limits.
-  UNIT_TEST_ONLY
-)
-
-add_fp_unittest(
-  modfl_test
-  SUITE
-    libc-math-unittests
-  SRCS
-    modfl_test.cpp
-  HDRS
-    ModfTest.h
-  DEPENDS
-    libc.src.math.modfl
-    libc.src.__support.FPUtil.basic_operations
-    libc.src.__support.FPUtil.nearest_integer_operations
-)
-
-add_fp_unittest(
-  fdimf_test
-  SUITE
-    libc-math-unittests
-  SRCS
-    fdimf_test.cpp
-  HDRS
-    FDimTest.h
-  DEPENDS
-    libc.src.math.fdimf
-    libc.src.__support.FPUtil.basic_operations
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fdim_test
-  SUITE
-    libc-math-unittests
-  SRCS
-    fdim_test.cpp
-  HDRS
-    FDimTest.h
-  DEPENDS
-    libc.src.math.fdim
-    libc.src.__support.FPUtil.basic_operations
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fdiml_test
-  SUITE
-    libc-math-unittests
-  SRCS
-    fdiml_test.cpp
-  HDRS
-    FDimTest.h
-  DEPENDS
-    libc.src.math.fdiml
-    libc.src.__support.FPUtil.basic_operations
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fminf_test
-  SUITE
-    libc-math-unittests
-  SRCS
-    fminf_test.cpp
-  HDRS
-    FMinTest.h
-  DEPENDS
-    libc.src.math.fminf
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fmin_test
-  SUITE
-    libc-math-unittests
-  SRCS
-    fmin_test.cpp
-  HDRS
-    FMinTest.h
-  DEPENDS
-    libc.src.math.fmin
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fminl_test
-  SUITE
-    libc-math-unittests
-  SRCS
-    fminl_test.cpp
-  HDRS
-    FMinTest.h
-  DEPENDS
-    libc.src.math.fminl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fmaxf_test
-  SUITE
-    libc-math-unittests
-  SRCS
-    fmaxf_test.cpp
-  HDRS
-    FMaxTest.h
-  DEPENDS
-    libc.src.math.fmaxf
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fmax_test
-  SUITE
-    libc-math-unittests
-  SRCS
-    fmax_test.cpp
-  HDRS
-    FMaxTest.h
-  DEPENDS
-    libc.src.math.fmax
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fmaxl_test
-  SUITE
-    libc-math-unittests
-  SRCS
-    fmaxl_test.cpp
-  HDRS
-    FMaxTest.h
-  DEPENDS
-    libc.src.math.fmaxl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  sqrtf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    sqrtf_test.cpp
-  HDRS
-    SqrtTest.h
-  DEPENDS
-    libc.src.math.sqrtf
-)
-
-add_fp_unittest(
-  sqrt_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    sqrt_test.cpp
-  HDRS
-    SqrtTest.h
-  DEPENDS
-    libc.src.math.sqrt
-)
-
-add_fp_unittest(
-  sqrtl_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    sqrtl_test.cpp
-  HDRS
-    SqrtTest.h
-  DEPENDS
-    libc.src.math.sqrtl
-)
-
-add_fp_unittest(
-  rsqrtf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    rsqrtf_test.cpp
-  DEPENDS
-    libc.src.math.rsqrtf
-)
-
-add_fp_unittest(
-  rsqrtf16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    rsqrtf16_test.cpp
-  DEPENDS
-    libc.src.math.rsqrtf16
-)
-
-add_fp_unittest(
-  sqrtf16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    sqrtf16_test.cpp
-  DEPENDS
-    libc.src.math.sqrtf16
-)
-
-add_fp_unittest(
-  sqrtf128_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    sqrtf128_test.cpp
-  HDRS
-    SqrtTest.h
-  DEPENDS
-    libc.src.math.sqrtf128
-)
-
-add_fp_unittest(
-  sqrtbf16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    sqrtbf16_test.cpp
-  DEPENDS
-    libc.src.math.sqrtbf16
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  generic_sqrtf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    generic_sqrtf_test.cpp
-  HDRS
-    SqrtTest.h
-  DEPENDS
-    libc.src.math.sqrtf
-    libc.src.__support.FPUtil.generic.sqrt
-  COMPILE_OPTIONS
-    ${libc_opt_high_flag}
-)
-
-add_fp_unittest(
-  generic_sqrt_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    generic_sqrt_test.cpp
-  HDRS
-    SqrtTest.h
-  DEPENDS
-    libc.src.math.sqrt
-    libc.src.__support.FPUtil.generic.sqrt
-  COMPILE_OPTIONS
-    ${libc_opt_high_flag}
-)
-
-add_fp_unittest(
-  generic_sqrtl_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    generic_sqrtl_test.cpp
-  HDRS
-    SqrtTest.h
-  DEPENDS
-    libc.src.math.sqrtl
-    libc.src.__support.FPUtil.generic.sqrt
-  COMPILE_OPTIONS
-    ${libc_opt_high_flag}
-)
-
-add_fp_unittest(
-  remquof_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    remquof_test.cpp
-  HDRS
-    RemQuoTest.h
-  DEPENDS
-    libc.src.math.remquof
-    libc.src.__support.FPUtil.basic_operations
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  remquo_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    remquo_test.cpp
-  HDRS
-    RemQuoTest.h
-  DEPENDS
-    libc.src.math.remquo
-    libc.src.__support.FPUtil.basic_operations
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  remquol_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    remquol_test.cpp
-  HDRS
-    RemQuoTest.h
-  DEPENDS
-    libc.src.math.remquol
-    libc.src.__support.FPUtil.basic_operations
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  hypotf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    hypotf_test.cpp
-  DEPENDS
-    libc.src.math.hypotf
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  hypot_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    hypot_test.cpp
-  DEPENDS
-    libc.src.math.hypot
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  hypotf16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    hypotf16_test.cpp
-  DEPENDS
-    libc.src.math.hypotf16
-)
-
-add_fp_unittest(
-  nextafter_test
-  SUITE
-    libc-math-unittests
-  SRCS
-    nextafter_test.cpp
-  HDRS
-    NextAfterTest.h
-  DEPENDS
-    libc.src.math.nextafter
-    libc.src.__support.FPUtil.basic_operations
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  nextafterf_test
-  SUITE
-    libc-math-unittests
-  SRCS
-    nextafterf_test.cpp
-  HDRS
-    NextAfterTest.h
-  DEPENDS
-    libc.src.math.nextafterf
-    libc.src.__support.FPUtil.basic_operations
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  nextafterl_test
-  SUITE
-    libc-math-unittests
-  SRCS
-    nextafterl_test.cpp
-  HDRS
-    NextAfterTest.h
-  DEPENDS
-    libc.src.math.nextafterl
-    libc.src.__support.FPUtil.basic_operations
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  nextafterf128_test
-  SUITE
-    libc-math-unittests
-  SRCS
-    nextafterf128_test.cpp
-  HDRS
-    NextAfterTest.h
-  DEPENDS
-    libc.src.math.nextafterf128
-    libc.src.__support.FPUtil.basic_operations
-    libc.src.__support.FPUtil.fp_bits
-)
-
-# TODO(lntue): The current implementation of fputil::general::fma<float> is only
-# correctly rounded for the default rounding mode round-to-nearest tie-to-even.
-add_fp_unittest(
-  fmaf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    fmaf_test.cpp
-  HDRS
-    FmaTest.h
-  DEPENDS
-    libc.src.math.fmaf
-    libc.src.stdlib.rand
-    libc.src.stdlib.srand
-  FLAGS
-    FMA_OPT__ONLY
-)
-
-add_fp_unittest(
-  fmaf16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    fmaf16_test.cpp
-  HDRS
-    FmaTest.h
-  DEPENDS
-    libc.src.math.fmaf16
-    libc.src.stdlib.rand
-    libc.src.stdlib.srand
-)
-
-add_fp_unittest(
-  fmabf16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    fmabf16_test.cpp
-  HDRS
-    FmaTest.h
-  DEPENDS
-    libc.src.math.fmabf16
-    libc.src.stdlib.rand
-    libc.src.stdlib.srand
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  fma_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    fma_test.cpp
-  HDRS
-    FmaTest.h
-  DEPENDS
-    libc.src.math.fma
-    libc.src.stdlib.rand
-    libc.src.stdlib.srand
-)
-
-add_fp_unittest(
-  tan_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    tan_test.cpp
-  DEPENDS
-    libc.src.math.tan
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  expm1_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    expm1_test.cpp
-  DEPENDS
-    libc.src.math.expm1
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  expm1f_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    expm1f_test.cpp
-  DEPENDS
-    libc.src.errno.errno
-    libc.src.math.expm1f
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  expm1f16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    expm1f16_test.cpp
-  DEPENDS
-    libc.src.math.expm1f16
-)
-
-add_fp_unittest(
- log_test
- NEED_MPFR
- SUITE
-   libc-math-unittests
- SRCS
-   log_test.cpp
- DEPENDS
-   libc.src.math.log
-   libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  logf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    logf_test.cpp
-  DEPENDS
-    libc.src.math.logf
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  logf16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    logf16_test.cpp
-  DEPENDS
-    libc.src.math.logf16
-)
-
-add_fp_unittest(
-  log_bf16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    log_bf16_test.cpp
-  DEPENDS
-    libc.src.math.log_bf16
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-log2_test
- NEED_MPFR
- SUITE
-   libc-math-unittests
- SRCS
-   log2_test.cpp
- DEPENDS
-   libc.src.math.log2
-   libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  log2f_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    log2f_test.cpp
-  DEPENDS
-    libc.src.errno.errno
-    libc.src.math.log2f
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  log2f16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    log2f16_test.cpp
-  DEPENDS
-    libc.src.math.log2f16
-)
-
-add_fp_unittest(
- log10_test
- NEED_MPFR
- SUITE
-   libc-math-unittests
- SRCS
-   log10_test.cpp
- DEPENDS
-   libc.src.math.log10
-   libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  log10f_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    log10f_test.cpp
-  DEPENDS
-    libc.src.math.log10f
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  log10f16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    log10f16_test.cpp
-  DEPENDS
-    libc.src.math.log10f16
-)
-
-add_fp_unittest(
-log1p_test
- NEED_MPFR
- SUITE
-   libc-math-unittests
- SRCS
-   log1p_test.cpp
- DEPENDS
-   libc.src.math.log1p
-   libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  log1pf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    log1pf_test.cpp
-  DEPENDS
-    libc.src.math.log1pf
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fmodf_test
-  SUITE
-    libc-math-unittests
-  SRCS
-    fmodf_test.cpp
-  HDRS
-    FModTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.fmodf
-    libc.src.__support.FPUtil.basic_operations
-    libc.src.__support.FPUtil.nearest_integer_operations
-  # FIXME: Currently fails on the GPU build.
-  UNIT_TEST_ONLY
-)
-
-add_fp_unittest(
-  fmod_test
-  SUITE
-    libc-math-unittests
-  SRCS
-    fmod_test.cpp
-  HDRS
-    FModTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.fmod
-    libc.src.__support.FPUtil.basic_operations
-    libc.src.__support.FPUtil.nearest_integer_operations
-  # FIXME: Currently fails on the GPU build.
-  UNIT_TEST_ONLY
-)
-
-add_fp_unittest(
-  explogxf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  HDRS
-    in_float_range_test_helper.h
-  SRCS
-    explogxf_test.cpp
-  DEPENDS
-    libc.src.math.generic.explogxf
-    libc.src.math.fabs
-    libc.src.math.fabsf
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  coshf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    coshf_test.cpp
-  HDRS
-    sdcomp26094.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.coshf
-    libc.src.__support.CPP.array
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  coshf16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    coshf16_test.cpp
-  DEPENDS
-    libc.src.math.coshf16
-)
-
-add_fp_unittest(
-  sinhf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    sinhf_test.cpp
-  HDRS
-    sdcomp26094.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.sinhf
-    libc.src.__support.CPP.array
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  sinhf16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    sinhf16_test.cpp
-  DEPENDS
-    libc.src.math.sinhf16
-)
-
-add_fp_unittest(
-  tanhf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    tanhf_test.cpp
-  DEPENDS
-    libc.src.math.tanhf
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  tanhf16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    tanhf16_test.cpp
-  DEPENDS
-    libc.src.math.tanhf16
-)
-
-add_fp_unittest(
-  atanhf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    atanhf_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.atanhf
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  atanhf16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    atanhf16_test.cpp
-  DEPENDS
-    libc.src.math.atanhf16
-)
-
-add_fp_unittest(
-  atanpif16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    atanpif16_test.cpp
-  DEPENDS
-    libc.src.math.atanpif16
-)
-
-add_fp_unittest(
-  fmul_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    fmul_test.cpp
-  HDRS
-    MulTest.h
-  DEPENDS
-    libc.src.math.fmul
-    libc.src.stdlib.rand
-    libc.src.stdlib.srand
-)
-
-add_fp_unittest(
-  fmull_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    fmull_test.cpp
-  HDRS
-    MulTest.h
-  DEPENDS
-    libc.src.math.fmull
-    libc.src.stdlib.rand
-    libc.src.stdlib.srand
-)
-
-add_fp_unittest(
-  asinhf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    asinhf_test.cpp
-  DEPENDS
-    libc.src.math.asinhf
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  asinhf16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    asinhf16_test.cpp
-  DEPENDS
-    libc.src.math.asinhf16
-)
-
-add_fp_unittest(
-  acoshf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    acoshf_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.acoshf
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  acoshf16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    acoshf16_test.cpp
-  DEPENDS
-    libc.src.math.acoshf16
-)
-
-add_fp_unittest(
-  asinf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    asinf_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.asinf
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  asin_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    asin_test.cpp
-  DEPENDS
-    libc.src.math.asin
-)
-
-add_fp_unittest(
-  asinf16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    asinf16_test.cpp
-  DEPENDS
-    libc.src.math.asinf16  
-)
-
-add_fp_unittest(
-  asinpif16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    asinpif16_test.cpp
-  DEPENDS
-    libc.src.math.asinpif16
-)
-
-add_fp_unittest(
-  acosf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    acosf_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.acosf
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  acos_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    acos_test.cpp
-  DEPENDS
-    libc.src.math.acos
-)
-
-add_fp_unittest(
-  acosf16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    acosf16_test.cpp
-  DEPENDS
-    libc.src.math.acosf16  
-)
-
-add_fp_unittest(
-  acospif16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    acospif16_test.cpp
-  DEPENDS
-    libc.src.math.acospif16  
-)
-
-add_fp_unittest(
-  atanf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    atanf_test.cpp
-  DEPENDS
-    libc.src.math.atanf
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  atan_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    atan_test.cpp
-  DEPENDS
-    libc.src.math.atan
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  atanf16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    atanf16_test.cpp
-  DEPENDS
-    libc.src.math.atanf16
-)
-
-add_fp_unittest(
-  scalbn_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    scalbn_test.cpp
-  HDRS
-    ScalbnTest.h
-  DEPENDS
-    libc.src.math.scalbn
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.normal_float
-)
-
-add_fp_unittest(
-  scalbnf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    scalbnf_test.cpp
-  HDRS
-    ScalbnTest.h
-  DEPENDS
-    libc.src.math.scalbnf
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.normal_float
-)
-
-add_fp_unittest(
-  scalbnl_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    scalbnl_test.cpp
-  HDRS
-    ScalbnTest.h
-  DEPENDS
-    libc.src.math.scalbnl
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.normal_float
-)
-
-add_fp_unittest(
-  scalbnf128_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    scalbnf128_test.cpp
-  HDRS
-    ScalbnTest.h
-  DEPENDS
-    libc.src.math.scalbnf128
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.normal_float
-)
-
-add_fp_unittest(
-  erff_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    erff_test.cpp
-  DEPENDS
-    libc.src.math.erff
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  pow_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    pow_test.cpp
-  DEPENDS
-    libc.src.math.pow
-)
-
-add_fp_unittest(
-  powf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    powf_test.cpp
-  DEPENDS
-    libc.src.math.powf
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  atan2f_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    atan2f_test.cpp
-  DEPENDS
-    libc.src.math.atan2f
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  atan2_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    atan2_test.cpp
-  DEPENDS
-    libc.src.math.atan2
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  atan2f128_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    atan2f128_test.cpp
-  DEPENDS
-    libc.src.math.atan2f128
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  f16add_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    f16add_test.cpp
-  HDRS
-    AddTest.h
-  DEPENDS
-    libc.src.math.f16add
-)
-
-add_fp_unittest(
-  f16addf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    f16addf_test.cpp
-  HDRS
-    AddTest.h
-  DEPENDS
-    libc.src.math.f16addf
-)
-
-add_fp_unittest(
-  f16addl_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    f16addl_test.cpp
-  HDRS
-    AddTest.h
-  DEPENDS
-    libc.src.math.f16addl
-)
-
-add_fp_unittest(
-  f16sub_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    f16sub_test.cpp
-  HDRS
-    SubTest.h
-  DEPENDS
-    libc.src.math.f16sub
-)
-
-add_fp_unittest(
-  f16subf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    f16subf_test.cpp
-  HDRS
-    SubTest.h
-  DEPENDS
-    libc.src.math.f16subf
-)
-
-add_fp_unittest(
-  f16subl_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    f16subl_test.cpp
-  HDRS
-    SubTest.h
-  DEPENDS
-    libc.src.math.f16subl
-)
-
-add_fp_unittest(
-  f16div_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    f16div_test.cpp
-  HDRS
-    DivTest.h
-  DEPENDS
-    libc.src.math.f16div
-)
-
-add_fp_unittest(
-  f16divf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    f16divf_test.cpp
-  HDRS
-    DivTest.h
-  DEPENDS
-    libc.src.math.f16divf
-)
-
-add_fp_unittest(
-  f16divl_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    f16divl_test.cpp
-  HDRS
-    DivTest.h
-  DEPENDS
-    libc.src.math.f16divl
-)
-
-add_fp_unittest(
-  f16fma_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    f16fma_test.cpp
-  HDRS
-    FmaTest.h
-  DEPENDS
-    libc.src.math.f16fma
-    libc.src.stdlib.rand
-    libc.src.stdlib.srand
-)
-
-add_fp_unittest(
-  f16fmaf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    f16fmaf_test.cpp
-  HDRS
-    FmaTest.h
-  DEPENDS
-    libc.src.math.f16fmaf
-    libc.src.stdlib.rand
-    libc.src.stdlib.srand
-)
-
-add_fp_unittest(
-  f16fmal_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    f16fmal_test.cpp
-  HDRS
-    FmaTest.h
-  DEPENDS
-    libc.src.math.f16fmal
-    libc.src.stdlib.rand
-    libc.src.stdlib.srand
-)
-
-add_fp_unittest(
-  f16sqrt_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    f16sqrt_test.cpp
-  HDRS
-    SqrtTest.h
-  DEPENDS
-    libc.src.math.f16sqrt
-)
-
-add_fp_unittest(
-  f16sqrtf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    f16sqrtf_test.cpp
-  HDRS
-    SqrtTest.h
-  DEPENDS
-    libc.src.math.f16sqrtf
-)
-
-add_fp_unittest(
-  f16sqrtl_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    f16sqrtl_test.cpp
-  HDRS
-    SqrtTest.h
-  DEPENDS
-    libc.src.math.f16sqrtl
-)
-
-add_fp_unittest(
-  fsqrt_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    fsqrt_test.cpp
-  HDRS
-    SqrtTest.h
-  DEPENDS
-    libc.src.math.fsqrt
-)
-
-add_fp_unittest(
-  fsqrtl_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    fsqrtl_test.cpp
-  HDRS
-    SqrtTest.h
-  DEPENDS
-    libc.src.math.fsqrtl
-)
-
-add_fp_unittest(
-  fsub_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    fsub_test.cpp
-  HDRS
-    SubTest.h
-  DEPENDS
-    libc.src.math.fsub
-)
-
-add_fp_unittest(
-  fsubl_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    fsubl_test.cpp
-  HDRS
-    SubTest.h
-  DEPENDS
-    libc.src.math.fsubl
-)
-
-add_fp_unittest(
-  dsqrtl_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    dsqrtl_test.cpp
-  HDRS
-    SqrtTest.h
-  DEPENDS
-    libc.src.math.dsqrtl
-)
-
-add_fp_unittest(
-  cbrtf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    cbrtf_test.cpp
-  DEPENDS
-    libc.src.math.cbrtf
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  cbrt_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    cbrt_test.cpp
-  DEPENDS
-    libc.src.math.cbrt
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  dmull_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    dmull_test.cpp
-  HDRS
-    MulTest.h
-  DEPENDS
-    libc.src.math.dmull
-    libc.src.stdlib.rand
-    libc.src.stdlib.srand
-)
-
-add_fp_unittest(
-  f16mul_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    f16mul_test.cpp
-  HDRS
-    MulTest.h
-  DEPENDS
-    libc.src.math.f16mul
-    libc.src.stdlib.rand
-    libc.src.stdlib.srand
-)
-
-add_fp_unittest(
-  f16mulf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    f16mulf_test.cpp
-  HDRS
-    MulTest.h
-  DEPENDS
-    libc.src.math.f16mulf
-    libc.src.stdlib.rand
-    libc.src.stdlib.srand
-)
-
-add_fp_unittest(
-  f16mull_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    f16mull_test.cpp
-  HDRS
-    MulTest.h
-  DEPENDS
-    libc.src.math.f16mull
-    libc.src.stdlib.rand
-    libc.src.stdlib.srand
-)
-
-add_fp_unittest(
-  ddivl_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    ddivl_test.cpp
-  HDRS
-    DivTest.h
-  DEPENDS
-    libc.src.math.ddivl
-)
-
-add_fp_unittest(
-  dfmal_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    dfmal_test.cpp
-  HDRS
-    FmaTest.h
-  DEPENDS
-    libc.src.math.dfmal
-    libc.src.stdlib.rand
-    libc.src.stdlib.srand
-)
-
-add_fp_unittest(
-  dsubl_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    dsubl_test.cpp
-  HDRS
-    SubTest.h
-  DEPENDS
-    libc.src.math.dsubl
-)
-
-add_fp_unittest(
-  fdiv_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    fdiv_test.cpp
-  HDRS
-    DivTest.h
-  DEPENDS
-    libc.src.math.fdiv
-)
-
-add_fp_unittest(
-  fdivl_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    fdivl_test.cpp
-  HDRS
-    DivTest.h
-  DEPENDS
-    libc.src.math.fdivl
-)
-
-add_fp_unittest(
-  ffma_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    ffma_test.cpp
-  HDRS
-    FmaTest.h
-  DEPENDS
-    libc.src.math.ffma
-    libc.src.stdlib.rand
-    libc.src.stdlib.srand
-)
-
-add_fp_unittest(
-  ffmal_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    ffmal_test.cpp
-  HDRS
-    FmaTest.h
-  DEPENDS
-    libc.src.math.ffmal
-    libc.src.stdlib.rand
-    libc.src.stdlib.srand
-)
-
-add_fp_unittest(
-  add_same_type_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    add_same_type_test.cpp
-  HDRS
-    AddTest.h
-  DEPENDS
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.generic.add_sub
-    libc.src.__support.macros.properties.types
-)
-
-add_fp_unittest(
-  sub_same_type_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    sub_same_type_test.cpp
-  HDRS
-    SubTest.h
-  DEPENDS
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.generic.add_sub
-    libc.src.__support.macros.properties.types
-)
-
-add_fp_unittest(
-  bf16add_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    bf16add_test.cpp
-  HDRS
-    AddTest.h
-  DEPENDS
-    libc.src.math.bf16add
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  bf16addf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    bf16addf_test.cpp
-  HDRS
-    AddTest.h
-  DEPENDS
-    libc.src.math.bf16addf
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  bf16addl_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    bf16addl_test.cpp
-  HDRS
-    AddTest.h
-  DEPENDS
-    libc.src.math.bf16addl
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  bf16addf128_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    bf16addf128_test.cpp
-  HDRS
-    AddTest.h
-  DEPENDS
-    libc.src.math.bf16addf128
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  bf16div_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    bf16div_test.cpp
-  HDRS
-    DivTest.h
-  DEPENDS
-    libc.src.math.bf16div
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  bf16divf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    bf16divf_test.cpp
-  HDRS
-    DivTest.h
-  DEPENDS
-    libc.src.math.bf16divf
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  bf16divl_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    bf16divl_test.cpp
-  HDRS
-    DivTest.h
-  DEPENDS
-    libc.src.math.bf16divl
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  bf16divf128_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    bf16divf128_test.cpp
-  HDRS
-    DivTest.h
-  DEPENDS
-    libc.src.math.bf16divf128
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  bf16fma_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    bf16fma_test.cpp
-  HDRS
-    FmaTest.h
-  DEPENDS
-    libc.src.math.bf16fma
-    libc.src.stdlib.rand
-    libc.src.stdlib.srand
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  bf16fmaf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    bf16fmaf_test.cpp
-  HDRS
-    FmaTest.h
-  DEPENDS
-    libc.src.math.bf16fmaf
-    libc.src.stdlib.rand
-    libc.src.stdlib.srand
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  bf16fmal_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    bf16fmal_test.cpp
-  HDRS
-    FmaTest.h
-  DEPENDS
-    libc.src.math.bf16fmal
-    libc.src.stdlib.rand
-    libc.src.stdlib.srand
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  bf16fmaf128_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    bf16fmaf128_test.cpp
-  HDRS
-    FmaTest.h
-  DEPENDS
-    libc.src.math.bf16fmaf128
-    libc.src.stdlib.rand
-    libc.src.stdlib.srand
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  bf16mul_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    bf16mul_test.cpp
-  HDRS
-    MulTest.h
-  DEPENDS
-    libc.src.math.bf16mul
-    libc.src.stdlib.rand
-    libc.src.stdlib.srand
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  bf16mulf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    bf16mulf_test.cpp
-  HDRS
-    MulTest.h
-  DEPENDS
-    libc.src.math.bf16mulf
-    libc.src.stdlib.rand
-    libc.src.stdlib.srand
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  bf16mull_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    bf16mull_test.cpp
-  HDRS
-    MulTest.h
-  DEPENDS
-    libc.src.math.bf16mull
-    libc.src.stdlib.rand
-    libc.src.stdlib.srand
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  bf16mulf128_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    bf16mulf128_test.cpp
-  HDRS
-    MulTest.h
-  DEPENDS
-    libc.src.math.bf16mulf128
-    libc.src.stdlib.rand
-    libc.src.stdlib.srand
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  bf16sub_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    bf16sub_test.cpp
-  HDRS
-    SubTest.h
-  DEPENDS
-    libc.src.math.bf16sub
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  bf16subf_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    bf16subf_test.cpp
-  HDRS
-    SubTest.h
-  DEPENDS
-    libc.src.math.bf16subf
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  bf16subl_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    bf16subl_test.cpp
-  HDRS
-    SubTest.h
-  DEPENDS
-    libc.src.math.bf16subl
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  bf16subf128_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    bf16subf128_test.cpp
-  HDRS
-    SubTest.h
-  DEPENDS
-    libc.src.math.bf16subf128
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_subdirectory(generic)
-add_subdirectory(smoke)
-
-if(NOT LLVM_LIBC_FULL_BUILD)
-  add_subdirectory(exhaustive)
-  add_subdirectory(performance_testing)
-endif()
+add_custom_target(libc-math-unittests)
+
+add_fp_unittest(
+  cosf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    cosf_test.cpp
+  HDRS
+    sdcomp26094.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.cosf
+    libc.src.__support.CPP.array
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  cosf_float_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    cosf_float_test.cpp
+  DEPENDS
+    libc.src.__support.math.sincosf_utils
+    libc.src.__support.FPUtil.fp_bits
+  FLAGS
+    FMA_OPT__ONLY
+)
+
+add_fp_unittest(
+  cos_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    cos_test.cpp
+  DEPENDS
+    libc.src.math.cos
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  cosf16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    cosf16_test.cpp
+  DEPENDS
+    libc.src.math.cosf16
+)
+
+add_fp_unittest(
+  cospif_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    cospif_test.cpp
+  HDRS
+    sdcomp26094.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.cospif
+    libc.src.__support.CPP.array
+    libc.src.__support.FPUtil.fp_bits
+)
+
+
+add_fp_unittest(
+  cospif16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    cospif16_test.cpp
+  DEPENDS
+    libc.src.math.cospif16
+)
+
+add_fp_unittest(
+  daddl_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    daddl_test.cpp
+  HDRS
+    AddTest.h
+  DEPENDS
+    libc.src.math.daddl
+)
+
+add_fp_unittest(
+  sinf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    sinf_test.cpp
+  HDRS
+    sdcomp26094.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.sinf
+    libc.src.__support.CPP.array
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  sinf_float_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    sinf_float_test.cpp
+  DEPENDS
+    libc.src.__support.math.sincosf_utils
+    libc.src.__support.FPUtil.fp_bits
+  FLAGS
+    FMA_OPT__ONLY
+)
+
+add_fp_unittest(
+  sinf16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    sinf16_test.cpp
+  DEPENDS
+    libc.src.math.sinf16
+)
+
+add_fp_unittest(
+  sinpif_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    sinpif_test.cpp
+  HDRS
+    sdcomp26094.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.sinpif
+    libc.src.__support.CPP.array
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  sinpif16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    sinpif16_test.cpp
+  DEPENDS
+    libc.src.math.sinpif16
+)
+
+add_fp_unittest(
+  sin_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    sin_test.cpp
+  DEPENDS
+    libc.src.math.sin
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  sincosf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    sincosf_test.cpp
+  HDRS
+    sdcomp26094.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.sincosf
+    libc.src.__support.CPP.array
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  sincos_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    sincos_test.cpp
+  DEPENDS
+    libc.src.math.sincos
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  tanf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    tanf_test.cpp
+  HDRS
+    sdcomp26094.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.tanf
+    libc.src.__support.CPP.array
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  tanf16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    tanf16_test.cpp
+  DEPENDS
+    libc.src.math.tanf16
+)
+
+add_fp_unittest(
+  tanpif_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    tanpif_test.cpp
+  HDRS
+    sdcomp26094.h
+  DEPENDS
+    libc.src.math.tanpif
+    libc.src.__support.CPP.array
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  tanpif16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    tanpif16_test.cpp
+  DEPENDS
+    libc.src.math.tanpif16
+)
+
+add_fp_unittest(
+  fabs_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    fabs_test.cpp
+  HDRS
+    FAbsTest.h
+  DEPENDS
+    libc.src.math.fabs
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fabsf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    fabsf_test.cpp
+  HDRS
+    FAbsTest.h
+  DEPENDS
+    libc.src.math.fabsf
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fabsl_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    fabsl_test.cpp
+  HDRS
+    FAbsTest.h
+  DEPENDS
+    libc.src.math.fabsl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fadd_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    fadd_test.cpp
+  HDRS
+    AddTest.h
+  DEPENDS
+    libc.src.math.fadd
+    libc.src.__support.FPUtil.basic_operations
+)
+
+add_fp_unittest(
+  faddl_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    faddl_test.cpp
+  HDRS
+    AddTest.h
+  DEPENDS
+    libc.src.math.faddl
+)
+
+add_fp_unittest(
+  trunc_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    trunc_test.cpp
+  HDRS
+    TruncTest.h
+  DEPENDS
+    libc.src.math.trunc
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  truncf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    truncf_test.cpp
+  HDRS
+    TruncTest.h
+  DEPENDS
+    libc.src.math.truncf
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  truncl_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    truncl_test.cpp
+  HDRS
+    TruncTest.h
+  DEPENDS
+    libc.src.math.truncl
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  truncf16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    truncf16_test.cpp
+  HDRS
+    TruncTest.h
+  DEPENDS
+    libc.src.math.truncf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  ceil_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    ceil_test.cpp
+  HDRS
+    CeilTest.h
+  DEPENDS
+    libc.src.math.ceil
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  ceilf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    ceilf_test.cpp
+  HDRS
+    CeilTest.h
+  DEPENDS
+    libc.src.math.ceilf
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  ceill_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    ceill_test.cpp
+  HDRS
+    CeilTest.h
+  DEPENDS
+    libc.src.math.ceill
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  ceilf16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    ceilf16_test.cpp
+  HDRS
+    CeilTest.h
+  DEPENDS
+    libc.src.math.ceilf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  floor_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    floor_test.cpp
+  HDRS
+    FloorTest.h
+  DEPENDS
+    libc.src.math.floor
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  floorf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    floorf_test.cpp
+  HDRS
+    FloorTest.h
+  DEPENDS
+    libc.src.math.floorf
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  floorl_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    floorl_test.cpp
+  HDRS
+    FloorTest.h
+  DEPENDS
+    libc.src.math.floorl
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  floorf16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    floorf16_test.cpp
+  HDRS
+    FloorTest.h
+  DEPENDS
+    libc.src.math.floorf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  round_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    round_test.cpp
+  HDRS
+    RoundTest.h
+  DEPENDS
+    libc.src.math.round
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  roundf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    roundf_test.cpp
+  HDRS
+    RoundTest.h
+  DEPENDS
+    libc.src.math.roundf
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  roundl_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    roundl_test.cpp
+  HDRS
+    RoundTest.h
+  DEPENDS
+    libc.src.math.roundl
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  roundf16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    roundf16_test.cpp
+  HDRS
+    RoundTest.h
+  DEPENDS
+    libc.src.math.roundf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  roundeven_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    roundeven_test.cpp
+  HDRS
+  RoundEvenTest.h
+  DEPENDS
+    libc.src.math.roundeven
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  roundevenf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    roundevenf_test.cpp
+  HDRS
+  RoundEvenTest.h
+  DEPENDS
+    libc.src.math.roundevenf
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  roundevenl_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    roundevenl_test.cpp
+  HDRS
+  RoundEvenTest.h
+  DEPENDS
+    libc.src.math.roundevenl
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  roundevenf16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    roundevenf16_test.cpp
+  HDRS
+  RoundEvenTest.h
+  DEPENDS
+    libc.src.math.roundevenf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  lround_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    lround_test.cpp
+  HDRS
+    RoundToIntegerTest.h
+  DEPENDS
+    libc.hdr.fenv_macros
+    libc.src.errno.errno
+    libc.src.math.lround
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  lroundf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    lroundf_test.cpp
+  HDRS
+    RoundToIntegerTest.h
+  DEPENDS
+    libc.hdr.fenv_macros
+    libc.src.errno.errno
+    libc.src.math.lroundf
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  lroundl_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    lroundl_test.cpp
+  HDRS
+    RoundToIntegerTest.h
+  DEPENDS
+    libc.hdr.fenv_macros
+    libc.src.errno.errno
+    libc.src.math.lroundl
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  lroundf16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    lroundf16_test.cpp
+  HDRS
+    RoundToIntegerTest.h
+  DEPENDS
+    libc.hdr.fenv_macros
+    libc.src.errno.errno
+    libc.src.math.lroundf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  lroundbf16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    lroundbf16_test.cpp
+  HDRS
+    RoundToIntegerTest.h
+  DEPENDS
+    libc.hdr.fenv_macros
+    libc.src.errno.errno
+    libc.src.math.lroundbf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  llround_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    llround_test.cpp
+  HDRS
+    RoundToIntegerTest.h
+  DEPENDS
+    libc.hdr.fenv_macros
+    libc.src.errno.errno
+    libc.src.math.llround
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  llroundf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    llroundf_test.cpp
+  HDRS
+    RoundToIntegerTest.h
+  DEPENDS
+    libc.hdr.fenv_macros
+    libc.src.errno.errno
+    libc.src.math.llroundf
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  llroundl_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    llroundl_test.cpp
+  HDRS
+    RoundToIntegerTest.h
+  DEPENDS
+    libc.hdr.fenv_macros
+    libc.src.errno.errno
+    libc.src.math.llroundl
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  llroundf16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    llroundf16_test.cpp
+  HDRS
+    RoundToIntegerTest.h
+  DEPENDS
+    libc.hdr.fenv_macros
+    libc.src.errno.errno
+    libc.src.math.llroundf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  llroundbf16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    llroundbf16_test.cpp
+  HDRS
+    RoundToIntegerTest.h
+  DEPENDS
+    libc.hdr.fenv_macros
+    libc.src.errno.errno
+    libc.src.math.llroundbf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  nearbyint_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    nearbyint_test.cpp
+  HDRS
+    NearbyIntTest.h
+  DEPENDS
+    libc.src.math.nearbyint
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.CPP.array
+)
+
+add_fp_unittest(
+  nearbyintf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    nearbyintf_test.cpp
+  HDRS
+    NearbyIntTest.h
+  DEPENDS
+    libc.src.math.nearbyintf
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.CPP.array
+)
+
+add_fp_unittest(
+  nearbyintl_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    nearbyintl_test.cpp
+  HDRS
+    NearbyIntTest.h
+  DEPENDS
+    libc.src.math.nearbyintl
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.CPP.array
+)
+
+add_fp_unittest(
+  nearbyintf16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    nearbyintf16_test.cpp
+  HDRS
+    NearbyIntTest.h
+  DEPENDS
+    libc.src.math.nearbyintf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.CPP.array
+)
+
+add_fp_unittest(
+  nearbyintbf16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    nearbyintbf16_test.cpp
+  HDRS
+    NearbyIntTest.h
+  DEPENDS
+    libc.src.math.nearbyintbf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.CPP.array
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  rint_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    rint_test.cpp
+  HDRS
+    RIntTest.h
+  DEPENDS
+    libc.hdr.fenv_macros
+    libc.src.math.rint
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  rintf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    rintf_test.cpp
+  HDRS
+    RIntTest.h
+  DEPENDS
+    libc.hdr.fenv_macros
+    libc.src.math.rintf
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  rintl_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    rintl_test.cpp
+  HDRS
+    RIntTest.h
+  DEPENDS
+    libc.hdr.fenv_macros
+    libc.src.math.rintl
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  rintf16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    rintf16_test.cpp
+  HDRS
+    RIntTest.h
+  DEPENDS
+    libc.hdr.fenv_macros
+    libc.src.math.rintf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  rintbf16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    rintbf16_test.cpp
+  HDRS
+    RIntTest.h
+  DEPENDS
+    libc.hdr.fenv_macros
+    libc.src.math.rintbf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  lrint_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    lrint_test.cpp
+  HDRS
+    RoundToIntegerTest.h
+  DEPENDS
+    libc.src.math.lrint
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  lrintf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    lrintf_test.cpp
+  HDRS
+    RoundToIntegerTest.h
+  DEPENDS
+    libc.src.math.lrintf
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  lrintl_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    lrintl_test.cpp
+  HDRS
+    RoundToIntegerTest.h
+  DEPENDS
+    libc.src.math.lrintl
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  lrintf16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    lrintf16_test.cpp
+  HDRS
+    RoundToIntegerTest.h
+  DEPENDS
+    libc.src.math.lrintf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  lrintbf16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    lrintbf16_test.cpp
+  HDRS
+    RoundToIntegerTest.h
+  DEPENDS
+    libc.src.math.lrintbf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  llrint_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    llrint_test.cpp
+  HDRS
+    RoundToIntegerTest.h
+  DEPENDS
+    libc.src.math.llrint
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  llrintf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    llrintf_test.cpp
+  HDRS
+    RoundToIntegerTest.h
+  DEPENDS
+    libc.src.math.llrintf
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  llrintl_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    llrintl_test.cpp
+  HDRS
+    RoundToIntegerTest.h
+  DEPENDS
+    libc.src.math.llrintl
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  llrintf16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    llrintf16_test.cpp
+  HDRS
+    RoundToIntegerTest.h
+  DEPENDS
+    libc.src.math.llrintf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  llrintbf16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    llrintbf16_test.cpp
+  HDRS
+    RoundToIntegerTest.h
+  DEPENDS
+    libc.src.math.llrintbf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  exp_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    exp_test.cpp
+  DEPENDS
+    libc.src.math.exp
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  expf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    expf_test.cpp
+  DEPENDS
+    libc.src.errno.errno
+    libc.src.math.expf
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  expf16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    expf16_test.cpp
+  DEPENDS
+    libc.src.math.expf16
+)
+
+add_fp_unittest(
+  exp2_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    exp2_test.cpp
+  DEPENDS
+    libc.src.math.exp2
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  exp2f_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    exp2f_test.cpp
+  DEPENDS
+    libc.src.errno.errno
+    libc.src.math.exp2f
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  exp2f16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    exp2f16_test.cpp
+  DEPENDS
+    libc.src.math.exp2f16
+)
+
+add_fp_unittest(
+  exp2m1f_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    exp2m1f_test.cpp
+  DEPENDS
+    libc.src.errno.errno
+    libc.src.math.exp2m1f
+    libc.src.__support.CPP.array
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  exp2m1f16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    exp2m1f16_test.cpp
+  DEPENDS
+    libc.src.math.exp2m1f16
+)
+
+add_fp_unittest(
+  exp10_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    exp10_test.cpp
+  DEPENDS
+    libc.src.math.exp10
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  exp10f_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    exp10f_test.cpp
+  DEPENDS
+    libc.src.errno.errno
+    libc.src.math.exp10f
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  exp10f16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    exp10f16_test.cpp
+  DEPENDS
+    libc.src.math.exp10f16
+)
+
+add_fp_unittest(
+  exp10m1f16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    exp10m1f16_test.cpp
+  DEPENDS
+    libc.src.math.exp10m1f16
+)
+
+add_fp_unittest(
+  exp10m1f_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    exp10m1f_test.cpp
+  DEPENDS
+    libc.hdr.math_macros
+    libc.src.errno.errno
+    libc.src.math.exp10m1f
+    libc.src.__support.CPP.array
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  copysign_test
+  SUITE
+    libc-math-unittests
+  SRCS
+    copysign_test.cpp
+  HDRS
+    CopySignTest.h
+  DEPENDS
+    libc.src.math.copysign
+    libc.src.__support.FPUtil.fp_bits
+  # FIXME: Currently fails on the GPU build.
+  UNIT_TEST_ONLY
+)
+
+add_fp_unittest(
+  copysignf_test
+  SUITE
+    libc-math-unittests
+  SRCS
+    copysignf_test.cpp
+  HDRS
+    CopySignTest.h
+  DEPENDS
+    libc.src.math.copysignf
+    libc.src.__support.FPUtil.fp_bits
+  # FIXME: Currently fails on the GPU build.
+  UNIT_TEST_ONLY
+)
+
+add_fp_unittest(
+  copysignl_test
+  SUITE
+    libc-math-unittests
+  SRCS
+    copysignl_test.cpp
+  HDRS
+    CopySignTest.h
+  DEPENDS
+    libc.src.math.copysignl
+    libc.src.__support.FPUtil.fp_bits
+  # FIXME: Currently fails on the GPU build.
+  UNIT_TEST_ONLY
+)
+
+add_fp_unittest(
+  frexp_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    frexp_test.cpp
+  HDRS
+    FrexpTest.h
+  DEPENDS
+    libc.src.math.frexp
+    libc.src.__support.FPUtil.basic_operations
+)
+
+add_fp_unittest(
+  frexpf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    frexpf_test.cpp
+  HDRS
+    FrexpTest.h
+  DEPENDS
+    libc.src.math.frexpf
+    libc.src.__support.FPUtil.basic_operations
+)
+
+add_fp_unittest(
+  frexpl_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    frexpl_test.cpp
+  HDRS
+    FrexpTest.h
+  DEPENDS
+    libc.src.math.frexpl
+    libc.src.__support.FPUtil.basic_operations
+)
+
+add_fp_unittest(
+  ilogb_test
+  SUITE
+    libc-math-unittests
+  SRCS
+    ilogb_test.cpp
+  HDRS
+    ILogbTest.h
+  DEPENDS
+    libc.src.math.ilogb
+    libc.src.__support.CPP.limits
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.manipulation_functions
+)
+
+add_fp_unittest(
+  ilogbf_test
+  SUITE
+    libc-math-unittests
+  SRCS
+    ilogbf_test.cpp
+  HDRS
+    ILogbTest.h
+  DEPENDS
+    libc.src.math.ilogbf
+    libc.src.__support.CPP.limits
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.manipulation_functions
+)
+
+add_fp_unittest(
+  ilogbl_test
+  SUITE
+    libc-math-unittests
+  SRCS
+    ilogbl_test.cpp
+  HDRS
+    ILogbTest.h
+  DEPENDS
+    libc.src.math.ilogbl
+    libc.src.__support.CPP.limits
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.manipulation_functions
+)
+
+add_fp_unittest(
+  ldexp_test
+  SUITE
+    libc-math-unittests
+  SRCS
+    ldexp_test.cpp
+  HDRS
+    LdExpTest.h
+  DEPENDS
+    libc.src.math.ldexp
+    libc.src.__support.CPP.limits
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.normal_float
+)
+
+add_fp_unittest(
+  ldexpf_test
+  SUITE
+    libc-math-unittests
+  SRCS
+    ldexpf_test.cpp
+  HDRS
+    LdExpTest.h
+  DEPENDS
+    libc.src.math.ldexpf
+    libc.src.__support.CPP.limits
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.normal_float
+)
+
+add_fp_unittest(
+  ldexpl_test
+  SUITE
+    libc-math-unittests
+  SRCS
+    ldexpl_test.cpp
+  HDRS
+    LdExpTest.h
+  DEPENDS
+    libc.src.math.ldexpl
+    libc.src.__support.CPP.limits
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.normal_float
+)
+
+add_fp_unittest(
+  logb_test
+  SUITE
+    libc-math-unittests
+  SRCS
+    logb_test.cpp
+  DEPENDS
+    libc.src.math.logb
+    libc.src.__support.FPUtil.manipulation_functions
+)
+
+add_fp_unittest(
+  logbf_test
+  SUITE
+    libc-math-unittests
+  SRCS
+    logbf_test.cpp
+  DEPENDS
+    libc.src.math.logbf
+    libc.src.__support.FPUtil.manipulation_functions
+)
+
+add_fp_unittest(
+  logbl_test
+  SUITE
+    libc-math-unittests
+  SRCS
+    logbl_test.cpp
+  HDRS
+    LogbTest.h
+  DEPENDS
+    libc.src.math.logbl
+    libc.src.__support.FPUtil.manipulation_functions
+)
+
+add_fp_unittest(
+  modf_test
+  SUITE
+    libc-math-unittests
+  SRCS
+    modf_test.cpp
+  HDRS
+    ModfTest.h
+  DEPENDS
+    libc.src.math.modf
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.nearest_integer_operations
+  # Requires C++ limits.
+  UNIT_TEST_ONLY
+)
+
+add_fp_unittest(
+  modff_test
+  SUITE
+    libc-math-unittests
+  SRCS
+    modff_test.cpp
+  HDRS
+    ModfTest.h
+  DEPENDS
+    libc.src.math.modff
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.nearest_integer_operations
+  # Requires C++ limits.
+  UNIT_TEST_ONLY
+)
+
+add_fp_unittest(
+  modfl_test
+  SUITE
+    libc-math-unittests
+  SRCS
+    modfl_test.cpp
+  HDRS
+    ModfTest.h
+  DEPENDS
+    libc.src.math.modfl
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.nearest_integer_operations
+)
+
+add_fp_unittest(
+  fdimf_test
+  SUITE
+    libc-math-unittests
+  SRCS
+    fdimf_test.cpp
+  HDRS
+    FDimTest.h
+  DEPENDS
+    libc.src.math.fdimf
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fdim_test
+  SUITE
+    libc-math-unittests
+  SRCS
+    fdim_test.cpp
+  HDRS
+    FDimTest.h
+  DEPENDS
+    libc.src.math.fdim
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fdiml_test
+  SUITE
+    libc-math-unittests
+  SRCS
+    fdiml_test.cpp
+  HDRS
+    FDimTest.h
+  DEPENDS
+    libc.src.math.fdiml
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fminf_test
+  SUITE
+    libc-math-unittests
+  SRCS
+    fminf_test.cpp
+  HDRS
+    FMinTest.h
+  DEPENDS
+    libc.src.math.fminf
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fmin_test
+  SUITE
+    libc-math-unittests
+  SRCS
+    fmin_test.cpp
+  HDRS
+    FMinTest.h
+  DEPENDS
+    libc.src.math.fmin
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fminl_test
+  SUITE
+    libc-math-unittests
+  SRCS
+    fminl_test.cpp
+  HDRS
+    FMinTest.h
+  DEPENDS
+    libc.src.math.fminl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fmaxf_test
+  SUITE
+    libc-math-unittests
+  SRCS
+    fmaxf_test.cpp
+  HDRS
+    FMaxTest.h
+  DEPENDS
+    libc.src.math.fmaxf
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fmax_test
+  SUITE
+    libc-math-unittests
+  SRCS
+    fmax_test.cpp
+  HDRS
+    FMaxTest.h
+  DEPENDS
+    libc.src.math.fmax
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fmaxl_test
+  SUITE
+    libc-math-unittests
+  SRCS
+    fmaxl_test.cpp
+  HDRS
+    FMaxTest.h
+  DEPENDS
+    libc.src.math.fmaxl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  sqrtf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    sqrtf_test.cpp
+  HDRS
+    SqrtTest.h
+  DEPENDS
+    libc.src.math.sqrtf
+)
+
+add_fp_unittest(
+  sqrt_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    sqrt_test.cpp
+  HDRS
+    SqrtTest.h
+  DEPENDS
+    libc.src.math.sqrt
+)
+
+add_fp_unittest(
+  sqrtl_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    sqrtl_test.cpp
+  HDRS
+    SqrtTest.h
+  DEPENDS
+    libc.src.math.sqrtl
+)
+
+add_fp_unittest(
+  rsqrtf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    rsqrtf_test.cpp
+  DEPENDS
+    libc.src.math.rsqrtf
+)
+
+add_fp_unittest(
+  rsqrtf16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    rsqrtf16_test.cpp
+  DEPENDS
+    libc.src.math.rsqrtf16
+)
+
+add_fp_unittest(
+  sqrtf16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    sqrtf16_test.cpp
+  DEPENDS
+    libc.src.math.sqrtf16
+)
+
+add_fp_unittest(
+  sqrtf128_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    sqrtf128_test.cpp
+  HDRS
+    SqrtTest.h
+  DEPENDS
+    libc.src.math.sqrtf128
+)
+
+add_fp_unittest(
+  sqrtbf16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    sqrtbf16_test.cpp
+  DEPENDS
+    libc.src.math.sqrtbf16
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  generic_sqrtf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    generic_sqrtf_test.cpp
+  HDRS
+    SqrtTest.h
+  DEPENDS
+    libc.src.math.sqrtf
+    libc.src.__support.FPUtil.generic.sqrt
+  COMPILE_OPTIONS
+    ${libc_opt_high_flag}
+)
+
+add_fp_unittest(
+  generic_sqrt_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    generic_sqrt_test.cpp
+  HDRS
+    SqrtTest.h
+  DEPENDS
+    libc.src.math.sqrt
+    libc.src.__support.FPUtil.generic.sqrt
+  COMPILE_OPTIONS
+    ${libc_opt_high_flag}
+)
+
+add_fp_unittest(
+  generic_sqrtl_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    generic_sqrtl_test.cpp
+  HDRS
+    SqrtTest.h
+  DEPENDS
+    libc.src.math.sqrtl
+    libc.src.__support.FPUtil.generic.sqrt
+  COMPILE_OPTIONS
+    ${libc_opt_high_flag}
+)
+
+add_fp_unittest(
+  remquof_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    remquof_test.cpp
+  HDRS
+    RemQuoTest.h
+  DEPENDS
+    libc.src.math.remquof
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  remquo_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    remquo_test.cpp
+  HDRS
+    RemQuoTest.h
+  DEPENDS
+    libc.src.math.remquo
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  remquol_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    remquol_test.cpp
+  HDRS
+    RemQuoTest.h
+  DEPENDS
+    libc.src.math.remquol
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  hypotf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    hypotf_test.cpp
+  DEPENDS
+    libc.src.math.hypotf
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  hypot_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    hypot_test.cpp
+  DEPENDS
+    libc.src.math.hypot
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  hypotf16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    hypotf16_test.cpp
+  DEPENDS
+    libc.src.math.hypotf16
+)
+
+add_fp_unittest(
+  nextafter_test
+  SUITE
+    libc-math-unittests
+  SRCS
+    nextafter_test.cpp
+  HDRS
+    NextAfterTest.h
+  DEPENDS
+    libc.src.math.nextafter
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  nextafterf_test
+  SUITE
+    libc-math-unittests
+  SRCS
+    nextafterf_test.cpp
+  HDRS
+    NextAfterTest.h
+  DEPENDS
+    libc.src.math.nextafterf
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  nextafterl_test
+  SUITE
+    libc-math-unittests
+  SRCS
+    nextafterl_test.cpp
+  HDRS
+    NextAfterTest.h
+  DEPENDS
+    libc.src.math.nextafterl
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  nextafterf128_test
+  SUITE
+    libc-math-unittests
+  SRCS
+    nextafterf128_test.cpp
+  HDRS
+    NextAfterTest.h
+  DEPENDS
+    libc.src.math.nextafterf128
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.fp_bits
+)
+
+# TODO(lntue): The current implementation of fputil::general::fma<float> is only
+# correctly rounded for the default rounding mode round-to-nearest tie-to-even.
+add_fp_unittest(
+  fmaf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    fmaf_test.cpp
+  HDRS
+    FmaTest.h
+  DEPENDS
+    libc.src.math.fmaf
+    libc.src.stdlib.rand
+    libc.src.stdlib.srand
+  FLAGS
+    FMA_OPT__ONLY
+)
+
+add_fp_unittest(
+  fmaf16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    fmaf16_test.cpp
+  HDRS
+    FmaTest.h
+  DEPENDS
+    libc.src.math.fmaf16
+    libc.src.stdlib.rand
+    libc.src.stdlib.srand
+)
+
+add_fp_unittest(
+  fmabf16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    fmabf16_test.cpp
+  HDRS
+    FmaTest.h
+  DEPENDS
+    libc.src.math.fmabf16
+    libc.src.stdlib.rand
+    libc.src.stdlib.srandq
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  fma_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    fma_test.cpp
+  HDRS
+    FmaTest.h
+  DEPENDS
+    libc.src.math.fma
+    libc.src.stdlib.rand
+    libc.src.stdlib.srand
+)
+
+add_fp_unittest(
+  tan_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    tan_test.cpp
+  DEPENDS
+    libc.src.math.tan
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  expm1_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    expm1_test.cpp
+  DEPENDS
+    libc.src.math.expm1
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  expm1f_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    expm1f_test.cpp
+  DEPENDS
+    libc.src.errno.errno
+    libc.src.math.expm1f
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  expm1f16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    expm1f16_test.cpp
+  DEPENDS
+    libc.src.math.expm1f16
+)
+
+add_fp_unittest(
+ log_test
+ NEED_MPFR
+ SUITE
+   libc-math-unittests
+ SRCS
+   log_test.cpp
+ DEPENDS
+   libc.src.math.log
+   libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  logf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    logf_test.cpp
+  DEPENDS
+    libc.src.math.logf
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  logf16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    logf16_test.cpp
+  DEPENDS
+    libc.src.math.logf16
+)
+
+add_fp_unittest(
+  log_bf16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    log_bf16_test.cpp
+  DEPENDS
+    libc.src.math.log_bf16
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+log2_test
+ NEED_MPFR
+ SUITE
+   libc-math-unittests
+ SRCS
+   log2_test.cpp
+ DEPENDS
+   libc.src.math.log2
+   libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  log2f_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    log2f_test.cpp
+  DEPENDS
+    libc.src.errno.errno
+    libc.src.math.log2f
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  log2f16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    log2f16_test.cpp
+  DEPENDS
+    libc.src.math.log2f16
+)
+
+add_fp_unittest(
+ log10_test
+ NEED_MPFR
+ SUITE
+   libc-math-unittests
+ SRCS
+   log10_test.cpp
+ DEPENDS
+   libc.src.math.log10
+   libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  log10f_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    log10f_test.cpp
+  DEPENDS
+    libc.src.math.log10f
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  log10f16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    log10f16_test.cpp
+  DEPENDS
+    libc.src.math.log10f16
+)
+
+add_fp_unittest(
+log1p_test
+ NEED_MPFR
+ SUITE
+   libc-math-unittests
+ SRCS
+   log1p_test.cpp
+ DEPENDS
+   libc.src.math.log1p
+   libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  log1pf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    log1pf_test.cpp
+  DEPENDS
+    libc.src.math.log1pf
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fmodf_test
+  SUITE
+    libc-math-unittests
+  SRCS
+    fmodf_test.cpp
+  HDRS
+    FModTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.fmodf
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.nearest_integer_operations
+  # FIXME: Currently fails on the GPU build.
+  UNIT_TEST_ONLY
+)
+
+add_fp_unittest(
+  fmod_test
+  SUITE
+    libc-math-unittests
+  SRCS
+    fmod_test.cpp
+  HDRS
+    FModTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.fmod
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.nearest_integer_operations
+  # FIXME: Currently fails on the GPU build.
+  UNIT_TEST_ONLY
+)
+
+add_fp_unittest(
+  explogxf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  HDRS
+    in_float_range_test_helper.h
+  SRCS
+    explogxf_test.cpp
+  DEPENDS
+    libc.src.math.generic.explogxf
+    libc.src.math.fabs
+    libc.src.math.fabsf
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  coshf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    coshf_test.cpp
+  HDRS
+    sdcomp26094.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.coshf
+    libc.src.__support.CPP.array
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  coshf16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    coshf16_test.cpp
+  DEPENDS
+    libc.src.math.coshf16
+)
+
+add_fp_unittest(
+  sinhf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    sinhf_test.cpp
+  HDRS
+    sdcomp26094.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.sinhf
+    libc.src.__support.CPP.array
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  sinhf16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    sinhf16_test.cpp
+  DEPENDS
+    libc.src.math.sinhf16
+)
+
+add_fp_unittest(
+  tanhf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    tanhf_test.cpp
+  DEPENDS
+    libc.src.math.tanhf
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  tanhf16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    tanhf16_test.cpp
+  DEPENDS
+    libc.src.math.tanhf16
+)
+
+add_fp_unittest(
+  atanhf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    atanhf_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.atanhf
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  atanhf16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    atanhf16_test.cpp
+  DEPENDS
+    libc.src.math.atanhf16
+)
+
+add_fp_unittest(
+  atanpif16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    atanpif16_test.cpp
+  DEPENDS
+    libc.src.math.atanpif16
+)
+
+add_fp_unittest(
+  fmul_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    fmul_test.cpp
+  HDRS
+    MulTest.h
+  DEPENDS
+    libc.src.math.fmul
+    libc.src.stdlib.rand
+    libc.src.stdlib.srand
+)
+
+add_fp_unittest(
+  fmull_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    fmull_test.cpp
+  HDRS
+    MulTest.h
+  DEPENDS
+    libc.src.math.fmull
+    libc.src.stdlib.rand
+    libc.src.stdlib.srand
+)
+
+add_fp_unittest(
+  asinhf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    asinhf_test.cpp
+  DEPENDS
+    libc.src.math.asinhf
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  asinhf16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    asinhf16_test.cpp
+  DEPENDS
+    libc.src.math.asinhf16
+)
+
+add_fp_unittest(
+  acoshf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    acoshf_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.acoshf
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  acoshf16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    acoshf16_test.cpp
+  DEPENDS
+    libc.src.math.acoshf16
+)
+
+add_fp_unittest(
+  asinf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    asinf_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.asinf
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  asin_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    asin_test.cpp
+  DEPENDS
+    libc.src.math.asin
+)
+
+add_fp_unittest(
+  asinf16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    asinf16_test.cpp
+  DEPENDS
+    libc.src.math.asinf16  
+)
+
+add_fp_unittest(
+  asinpif16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    asinpif16_test.cpp
+  DEPENDS
+    libc.src.math.asinpif16
+)
+
+add_fp_unittest(
+  acosf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    acosf_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.acosf
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  acos_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    acos_test.cpp
+  DEPENDS
+    libc.src.math.acos
+)
+
+add_fp_unittest(
+  acosf16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    acosf16_test.cpp
+  DEPENDS
+    libc.src.math.acosf16  
+)
+
+add_fp_unittest(
+  acospif16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    acospif16_test.cpp
+  DEPENDS
+    libc.src.math.acospif16  
+)
+
+add_fp_unittest(
+  atanf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    atanf_test.cpp
+  DEPENDS
+    libc.src.math.atanf
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  atan_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    atan_test.cpp
+  DEPENDS
+    libc.src.math.atan
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  atanf16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    atanf16_test.cpp
+  DEPENDS
+    libc.src.math.atanf16
+)
+
+add_fp_unittest(
+  scalbn_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    scalbn_test.cpp
+  HDRS
+    ScalbnTest.h
+  DEPENDS
+    libc.src.math.scalbn
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.normal_float
+)
+
+add_fp_unittest(
+  scalbnf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    scalbnf_test.cpp
+  HDRS
+    ScalbnTest.h
+  DEPENDS
+    libc.src.math.scalbnf
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.normal_float
+)
+
+add_fp_unittest(
+  scalbnl_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    scalbnl_test.cpp
+  HDRS
+    ScalbnTest.h
+  DEPENDS
+    libc.src.math.scalbnl
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.normal_float
+)
+
+add_fp_unittest(
+  scalbnf128_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    scalbnf128_test.cpp
+  HDRS
+    ScalbnTest.h
+  DEPENDS
+    libc.src.math.scalbnf128
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.normal_float
+)
+
+add_fp_unittest(
+  erff_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    erff_test.cpp
+  DEPENDS
+    libc.src.math.erff
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  pow_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    pow_test.cpp
+  DEPENDS
+    libc.src.math.pow
+)
+
+add_fp_unittest(
+  powf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    powf_test.cpp
+  DEPENDS
+    libc.src.math.powf
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  atan2f_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    atan2f_test.cpp
+  DEPENDS
+    libc.src.math.atan2f
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  atan2_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    atan2_test.cpp
+  DEPENDS
+    libc.src.math.atan2
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  atan2f128_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    atan2f128_test.cpp
+  DEPENDS
+    libc.src.math.atan2f128
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  f16add_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    f16add_test.cpp
+  HDRS
+    AddTest.h
+  DEPENDS
+    libc.src.math.f16add
+)
+
+add_fp_unittest(
+  f16addf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    f16addf_test.cpp
+  HDRS
+    AddTest.h
+  DEPENDS
+    libc.src.math.f16addf
+)
+
+add_fp_unittest(
+  f16addl_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    f16addl_test.cpp
+  HDRS
+    AddTest.h
+  DEPENDS
+    libc.src.math.f16addl
+)
+
+add_fp_unittest(
+  f16sub_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    f16sub_test.cpp
+  HDRS
+    SubTest.h
+  DEPENDS
+    libc.src.math.f16sub
+)
+
+add_fp_unittest(
+  f16subf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    f16subf_test.cpp
+  HDRS
+    SubTest.h
+  DEPENDS
+    libc.src.math.f16subf
+)
+
+add_fp_unittest(
+  f16subl_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    f16subl_test.cpp
+  HDRS
+    SubTest.h
+  DEPENDS
+    libc.src.math.f16subl
+)
+
+add_fp_unittest(
+  f16div_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    f16div_test.cpp
+  HDRS
+    DivTest.h
+  DEPENDS
+    libc.src.math.f16div
+)
+
+add_fp_unittest(
+  f16divf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    f16divf_test.cpp
+  HDRS
+    DivTest.h
+  DEPENDS
+    libc.src.math.f16divf
+)
+
+add_fp_unittest(
+  f16divl_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    f16divl_test.cpp
+  HDRS
+    DivTest.h
+  DEPENDS
+    libc.src.math.f16divl
+)
+
+add_fp_unittest(
+  f16fma_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    f16fma_test.cpp
+  HDRS
+    FmaTest.h
+  DEPENDS
+    libc.src.math.f16fma
+    libc.src.stdlib.rand
+    libc.src.stdlib.srand
+)
+
+add_fp_unittest(
+  f16fmaf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    f16fmaf_test.cpp
+  HDRS
+    FmaTest.h
+  DEPENDS
+    libc.src.math.f16fmaf
+    libc.src.stdlib.rand
+    libc.src.stdlib.srand
+)
+
+add_fp_unittest(
+  f16fmal_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    f16fmal_test.cpp
+  HDRS
+    FmaTest.h
+  DEPENDS
+    libc.src.math.f16fmal
+    libc.src.stdlib.rand
+    libc.src.stdlib.srand
+)
+
+add_fp_unittest(
+  f16sqrt_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    f16sqrt_test.cpp
+  HDRS
+    SqrtTest.h
+  DEPENDS
+    libc.src.math.f16sqrt
+)
+
+add_fp_unittest(
+  f16sqrtf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    f16sqrtf_test.cpp
+  HDRS
+    SqrtTest.h
+  DEPENDS
+    libc.src.math.f16sqrtf
+)
+
+add_fp_unittest(
+  f16sqrtl_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    f16sqrtl_test.cpp
+  HDRS
+    SqrtTest.h
+  DEPENDS
+    libc.src.math.f16sqrtl
+)
+
+add_fp_unittest(
+  fsqrt_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    fsqrt_test.cpp
+  HDRS
+    SqrtTest.h
+  DEPENDS
+    libc.src.math.fsqrt
+)
+
+add_fp_unittest(
+  fsqrtl_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    fsqrtl_test.cpp
+  HDRS
+    SqrtTest.h
+  DEPENDS
+    libc.src.math.fsqrtl
+)
+
+add_fp_unittest(
+  fsub_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    fsub_test.cpp
+  HDRS
+    SubTest.h
+  DEPENDS
+    libc.src.math.fsub
+)
+
+add_fp_unittest(
+  fsubl_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    fsubl_test.cpp
+  HDRS
+    SubTest.h
+  DEPENDS
+    libc.src.math.fsubl
+)
+
+add_fp_unittest(
+  dsqrtl_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    dsqrtl_test.cpp
+  HDRS
+    SqrtTest.h
+  DEPENDS
+    libc.src.math.dsqrtl
+)
+
+add_fp_unittest(
+  cbrtf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    cbrtf_test.cpp
+  DEPENDS
+    libc.src.math.cbrtf
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  cbrt_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    cbrt_test.cpp
+  DEPENDS
+    libc.src.math.cbrt
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  dmull_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    dmull_test.cpp
+  HDRS
+    MulTest.h
+  DEPENDS
+    libc.src.math.dmull
+    libc.src.stdlib.rand
+    libc.src.stdlib.srand
+)
+
+add_fp_unittest(
+  f16mul_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    f16mul_test.cpp
+  HDRS
+    MulTest.h
+  DEPENDS
+    libc.src.math.f16mul
+    libc.src.stdlib.rand
+    libc.src.stdlib.srand
+)
+
+add_fp_unittest(
+  f16mulf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    f16mulf_test.cpp
+  HDRS
+    MulTest.h
+  DEPENDS
+    libc.src.math.f16mulf
+    libc.src.stdlib.rand
+    libc.src.stdlib.srand
+)
+
+add_fp_unittest(
+  f16mull_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    f16mull_test.cpp
+  HDRS
+    MulTest.h
+  DEPENDS
+    libc.src.math.f16mull
+    libc.src.stdlib.rand
+    libc.src.stdlib.srand
+)
+
+add_fp_unittest(
+  ddivl_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    ddivl_test.cpp
+  HDRS
+    DivTest.h
+  DEPENDS
+    libc.src.math.ddivl
+)
+
+add_fp_unittest(
+  dfmal_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    dfmal_test.cpp
+  HDRS
+    FmaTest.h
+  DEPENDS
+    libc.src.math.dfmal
+    libc.src.stdlib.rand
+    libc.src.stdlib.srand
+)
+
+add_fp_unittest(
+  dsubl_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    dsubl_test.cpp
+  HDRS
+    SubTest.h
+  DEPENDS
+    libc.src.math.dsubl
+)
+
+add_fp_unittest(
+  fdiv_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    fdiv_test.cpp
+  HDRS
+    DivTest.h
+  DEPENDS
+    libc.src.math.fdiv
+)
+
+add_fp_unittest(
+  fdivl_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    fdivl_test.cpp
+  HDRS
+    DivTest.h
+  DEPENDS
+    libc.src.math.fdivl
+)
+
+add_fp_unittest(
+  ffma_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    ffma_test.cpp
+  HDRS
+    FmaTest.h
+  DEPENDS
+    libc.src.math.ffma
+    libc.src.stdlib.rand
+    libc.src.stdlib.srand
+)
+
+add_fp_unittest(
+  ffmal_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    ffmal_test.cpp
+  HDRS
+    FmaTest.h
+  DEPENDS
+    libc.src.math.ffmal
+    libc.src.stdlib.rand
+    libc.src.stdlib.srand
+)
+
+add_fp_unittest(
+  add_same_type_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    add_same_type_test.cpp
+  HDRS
+    AddTest.h
+  DEPENDS
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.generic.add_sub
+    libc.src.__support.macros.properties.types
+)
+
+add_fp_unittest(
+  sub_same_type_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    sub_same_type_test.cpp
+  HDRS
+    SubTest.h
+  DEPENDS
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.generic.add_sub
+    libc.src.__support.macros.properties.types
+)
+
+add_fp_unittest(
+  bf16add_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    bf16add_test.cpp
+  HDRS
+    AddTest.h
+  DEPENDS
+    libc.src.math.bf16add
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  bf16addf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    bf16addf_test.cpp
+  HDRS
+    AddTest.h
+  DEPENDS
+    libc.src.math.bf16addf
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  bf16addl_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    bf16addl_test.cpp
+  HDRS
+    AddTest.h
+  DEPENDS
+    libc.src.math.bf16addl
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  bf16addf128_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    bf16addf128_test.cpp
+  HDRS
+    AddTest.h
+  DEPENDS
+    libc.src.math.bf16addf128
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  bf16div_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    bf16div_test.cpp
+  HDRS
+    DivTest.h
+  DEPENDS
+    libc.src.math.bf16div
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  bf16divf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    bf16divf_test.cpp
+  HDRS
+    DivTest.h
+  DEPENDS
+    libc.src.math.bf16divf
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  bf16divl_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    bf16divl_test.cpp
+  HDRS
+    DivTest.h
+  DEPENDS
+    libc.src.math.bf16divl
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  bf16divf128_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    bf16divf128_test.cpp
+  HDRS
+    DivTest.h
+  DEPENDS
+    libc.src.math.bf16divf128
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  bf16fma_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    bf16fma_test.cpp
+  HDRS
+    FmaTest.h
+  DEPENDS
+    libc.src.math.bf16fma
+    libc.src.stdlib.rand
+    libc.src.stdlib.srand
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  bf16fmaf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    bf16fmaf_test.cpp
+  HDRS
+    FmaTest.h
+  DEPENDS
+    libc.src.math.bf16fmaf
+    libc.src.stdlib.rand
+    libc.src.stdlib.srand
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  bf16fmal_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    bf16fmal_test.cpp
+  HDRS
+    FmaTest.h
+  DEPENDS
+    libc.src.math.bf16fmal
+    libc.src.stdlib.rand
+    libc.src.stdlib.srand
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  bf16fmaf128_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    bf16fmaf128_test.cpp
+  HDRS
+    FmaTest.h
+  DEPENDS
+    libc.src.math.bf16fmaf128
+    libc.src.stdlib.rand
+    libc.src.stdlib.srand
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  bf16mul_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    bf16mul_test.cpp
+  HDRS
+    MulTest.h
+  DEPENDS
+    libc.src.math.bf16mul
+    libc.src.stdlib.rand
+    libc.src.stdlib.srand
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  bf16mulf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    bf16mulf_test.cpp
+  HDRS
+    MulTest.h
+  DEPENDS
+    libc.src.math.bf16mulf
+    libc.src.stdlib.rand
+    libc.src.stdlib.srand
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  bf16mull_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    bf16mull_test.cpp
+  HDRS
+    MulTest.h
+  DEPENDS
+    libc.src.math.bf16mull
+    libc.src.stdlib.rand
+    libc.src.stdlib.srand
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  bf16mulf128_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    bf16mulf128_test.cpp
+  HDRS
+    MulTest.h
+  DEPENDS
+    libc.src.math.bf16mulf128
+    libc.src.stdlib.rand
+    libc.src.stdlib.srand
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  bf16sub_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    bf16sub_test.cpp
+  HDRS
+    SubTest.h
+  DEPENDS
+    libc.src.math.bf16sub
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  bf16subf_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    bf16subf_test.cpp
+  HDRS
+    SubTest.h
+  DEPENDS
+    libc.src.math.bf16subf
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  bf16subl_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    bf16subl_test.cpp
+  HDRS
+    SubTest.h
+  DEPENDS
+    libc.src.math.bf16subl
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  bf16subf128_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    bf16subf128_test.cpp
+  HDRS
+    SubTest.h
+  DEPENDS
+    libc.src.math.bf16subf128
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_subdirectory(generic)
+add_subdirectory(smoke)
+
+if(NOT LLVM_LIBC_FULL_BUILD)
+  add_subdirectory(exhaustive)
+  add_subdirectory(performance_testing)
+endif()

>From b4715244093fdda19fdeb71bc6d73b266eeb1223 Mon Sep 17 00:00:00 2001
From: Sukumarsawant <sawantsukumar at gmail.com>
Date: Mon, 9 Feb 2026 18:52:11 +0530
Subject: [PATCH 06/43] crl->lf 5

---
 libc/test/src/math/bf16mul_test.cpp     |    30 +-
 libc/test/src/math/smoke/CMakeLists.txt | 13062 +++++++++++-----------
 2 files changed, 6546 insertions(+), 6546 deletions(-)

diff --git a/libc/test/src/math/bf16mul_test.cpp b/libc/test/src/math/bf16mul_test.cpp
index 76bd3dba42566..3682705556b0a 100644
--- a/libc/test/src/math/bf16mul_test.cpp
+++ b/libc/test/src/math/bf16mul_test.cpp
@@ -1,15 +1,15 @@
-//===-- Unittests for bf16mul ---------------------------------------------===//
-//
-// 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 "MulTest.h"
-
-#include "src/math/bf16mul.h"
-
-#include "src/__support/FPUtil/bfloat16.h"
-
-LIST_MUL_TESTS(bfloat16, double, LIBC_NAMESPACE::bf16mul)
+//===-- Unittests for bf16mul ---------------------------------------------===//
+//
+// 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 "MulTest.h"
+
+#include "src/math/bf16mul.h"
+
+#include "src/__support/FPUtil/bfloat16.h"
+
+LIST_MUL_TESTS(bfloat16, double, LIBC_NAMESPACE::bf16mul)
diff --git a/libc/test/src/math/smoke/CMakeLists.txt b/libc/test/src/math/smoke/CMakeLists.txt
index 73b72b69d883a..f0d07551fcf49 100644
--- a/libc/test/src/math/smoke/CMakeLists.txt
+++ b/libc/test/src/math/smoke/CMakeLists.txt
@@ -1,6531 +1,6531 @@
-add_custom_target(libc-math-smoke-tests)
-add_dependencies(libc-math-unittests libc-math-smoke-tests)
-
-add_fp_unittest(
-  cosf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    cosf_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.cosf
-)
-
-add_fp_unittest(
-  cosf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    cosf16_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.cosf16
-)
-
-add_fp_unittest(
-  cospif_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    cospif_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.cospif
-    libc.src.__support.CPP.array
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  cospif16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    cospif16_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.cospif16
-    libc.src.__support.FPUtil.cast
-)
-
-add_fp_unittest(
-  sinf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    sinf_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.sinf
-    libc.src.__support.CPP.array
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  sinf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    sinf16_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.sinf16
-    libc.src.__support.FPUtil.cast
-)
-
-add_fp_unittest(
-  sinpif_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    sinpif_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.sinpif
-    libc.src.__support.CPP.array
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  sinpif16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    sinpif16_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.sinpif16
-)
-
-add_fp_unittest(
-  sincosf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    sincosf_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.sincosf
-    libc.src.__support.CPP.array
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  tanf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    tanf_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.tanf
-    libc.src.__support.CPP.array
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  tanf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    tanf16_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.tanf16
-)
-
-add_fp_unittest(
-  tanpif_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    tanpif_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.tanpif
-)
-
-add_fp_unittest(
-  tanpif16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    tanpif16_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.tanpif16
-)
-
-add_fp_unittest(
-  fabs_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fabs_test.cpp
-  HDRS
-    FAbsTest.h
-  DEPENDS
-    libc.src.math.fabs
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fabsf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fabsf_test.cpp
-  HDRS
-    FAbsTest.h
-  DEPENDS
-    libc.src.math.fabsf
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fabsl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fabsl_test.cpp
-  HDRS
-    FAbsTest.h
-  DEPENDS
-    libc.src.math.fabsl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fabsf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fabsf16_test.cpp
-  HDRS
-    FAbsTest.h
-  DEPENDS
-    libc.src.math.fabsf16
-)
-
-add_fp_unittest(
-  fabsf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fabsf128_test.cpp
-  HDRS
-    FAbsTest.h
-  DEPENDS
-    libc.src.math.fabsf128
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fabsbf16_test
-  SUITE
-  libc-math-smoke-tests
-  SRCS
-    fabsbf16_test.cpp
-  HDRS
-    FAbsTest.h
-  DEPENDS
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.math.fabsbf16
-)
-
-add_fp_unittest(
-  fadd_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fadd_test.cpp
-  HDRS
-    AddTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.fadd
-    libc.src.__support.macros.properties.os
-)
-
-add_fp_unittest(
-  faddl_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    faddl_test.cpp
-  HDRS
-    AddTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.faddl
-    libc.src.__support.macros.properties.os
-)
-
-add_fp_unittest(
-  faddf128_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    faddf128_test.cpp
-  HDRS
-    AddTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.faddf128
-    libc.src.__support.macros.properties.os
-)
-
-add_fp_unittest(
-  trunc_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    trunc_test.cpp
-  HDRS
-    TruncTest.h
-  DEPENDS
-    libc.src.math.trunc
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  truncf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    truncf_test.cpp
-  HDRS
-    TruncTest.h
-  DEPENDS
-    libc.src.math.truncf
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  truncl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    truncl_test.cpp
-  HDRS
-    TruncTest.h
-  DEPENDS
-    libc.src.math.truncl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  truncf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    truncf16_test.cpp
-  HDRS
-    TruncTest.h
-  DEPENDS
-    libc.src.math.truncf16
-)
-
-add_fp_unittest(
-  truncf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    truncf128_test.cpp
-  HDRS
-    TruncTest.h
-  DEPENDS
-    libc.src.math.truncf128
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  truncbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    truncbf16_test.cpp
-  HDRS
-    TruncTest.h
-  DEPENDS
-    libc.src.math.truncbf16
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  canonicalize_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    canonicalize_test.cpp
-  HDRS
-    CanonicalizeTest.h
-  DEPENDS
-    libc.src.math.canonicalize
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.integer_literals
-)
-
-add_fp_unittest(
-  canonicalizef_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    canonicalizef_test.cpp
-  HDRS
-    CanonicalizeTest.h
-  DEPENDS
-    libc.src.math.canonicalizef
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.integer_literals
-)
-
-add_fp_unittest(
-  canonicalizef16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    canonicalizef16_test.cpp
-  HDRS
-    CanonicalizeTest.h
-  DEPENDS
-    libc.src.math.canonicalizef16
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.integer_literals
-)
-
-add_fp_unittest(
-  canonicalizef128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    canonicalizef128_test.cpp
-  HDRS
-    CanonicalizeTest.h
-  DEPENDS
-    libc.src.math.canonicalizef128
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.integer_literals
-)
-
-add_fp_unittest(
-  canonicalizel_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    canonicalizel_test.cpp
-  HDRS
-    CanonicalizeTest.h
-  DEPENDS
-    libc.src.math.canonicalizel
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.integer_literals
-)
-
-add_fp_unittest(
-  canonicalizebf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    canonicalizebf16_test.cpp
-  HDRS
-    CanonicalizeTest.h
-  DEPENDS
-    libc.src.math.canonicalizebf16
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.integer_literals
-)
-
-add_fp_unittest(
-  iscanonical_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    iscanonical_test.cpp
-  HDRS
-    IsCanonicalTest.h
-  DEPENDS
-    libc.src.math.iscanonical
-)
-
-add_fp_unittest(
-  iscanonicalf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    iscanonicalf_test.cpp
-  HDRS
-    IsCanonicalTest.h
-  DEPENDS
-    libc.src.math.iscanonicalf
-)
-
-add_fp_unittest(
-  iscanonicall_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    iscanonicall_test.cpp
-  HDRS
-    IsCanonicalTest.h
-  DEPENDS
-    libc.src.math.iscanonicall
-)
-
-add_fp_unittest(
-  iscanonicalf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    iscanonicalf16_test.cpp
-  HDRS
-    IsCanonicalTest.h
-  DEPENDS
-    libc.src.math.iscanonicalf16
-)
-
-add_fp_unittest(
-  iscanonicalf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    iscanonicalf128_test.cpp
-  HDRS
-    IsCanonicalTest.h
-  DEPENDS
-    libc.src.math.iscanonicalf128
-)
-
-add_fp_unittest(
-  iscanonicalbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    iscanonicalbf16_test.cpp
-  HDRS
-    IsCanonicalTest.h
-  DEPENDS
-    libc.src.math.iscanonicalbf16
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  ceil_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    ceil_test.cpp
-  HDRS
-    CeilTest.h
-  DEPENDS
-    libc.src.math.ceil
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  ceilf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    ceilf_test.cpp
-  HDRS
-    CeilTest.h
-  DEPENDS
-    libc.src.math.ceilf
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  ceill_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    ceill_test.cpp
-  HDRS
-    CeilTest.h
-  DEPENDS
-    libc.src.math.ceill
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  ceilf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    ceilf16_test.cpp
-  HDRS
-    CeilTest.h
-  DEPENDS
-    libc.src.math.ceilf16
-)
-
-add_fp_unittest(
-  ceilf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    ceilf128_test.cpp
-  HDRS
-    CeilTest.h
-  DEPENDS
-    libc.src.math.ceilf128
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  ceilbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    ceilbf16_test.cpp
-  HDRS
-    CeilTest.h
-  DEPENDS
-    libc.src.math.ceilbf16
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  dfmal_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    dfmal_test.cpp
-  HDRS
-    FmaTest.h
-  DEPENDS
-    libc.src.math.dfmal
-    libc.src.__support.macros.properties.types
-)
-
-add_fp_unittest(
-  dfmaf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    dfmaf128_test.cpp
-  HDRS
-    FmaTest.h
-  DEPENDS
-    libc.src.math.dfmaf128
-    libc.src.__support.macros.properties.types
-)
-
-add_fp_unittest(
-  dsubl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    dsubl_test.cpp
-  HDRS
-    SubTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.dsubl
-    libc.src.__support.macros.properties.os
-)
-
-add_fp_unittest(
-  dsubf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    dsubf128_test.cpp
-  HDRS
-    SubTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.dsubf128
-    libc.src.__support.macros.properties.os
-)
-
-add_fp_unittest(
-  floor_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    floor_test.cpp
-  HDRS
-    FloorTest.h
-  DEPENDS
-    libc.src.math.floor
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  floorf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    floorf_test.cpp
-  HDRS
-    FloorTest.h
-  DEPENDS
-    libc.src.math.floorf
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  floorl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    floorl_test.cpp
-  HDRS
-    FloorTest.h
-  DEPENDS
-    libc.src.math.floorl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  floorf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    floorf16_test.cpp
-  HDRS
-    FloorTest.h
-  DEPENDS
-    libc.src.math.floorf16
-)
-
-add_fp_unittest(
-  floorf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    floorf128_test.cpp
-  HDRS
-    FloorTest.h
-  DEPENDS
-    libc.src.math.floorf128
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  floorbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    floorbf16_test.cpp
-  HDRS
-    FloorTest.h
-  DEPENDS
-    libc.src.math.floorbf16
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  round_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    round_test.cpp
-  HDRS
-    RoundTest.h
-  DEPENDS
-    libc.src.math.round
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  roundf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    roundf_test.cpp
-  HDRS
-    RoundTest.h
-  DEPENDS
-    libc.src.math.roundf
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  roundl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    roundl_test.cpp
-  HDRS
-    RoundTest.h
-  DEPENDS
-    libc.src.math.roundl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  roundf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    roundf16_test.cpp
-  HDRS
-    RoundTest.h
-  DEPENDS
-    libc.src.math.roundf16
-)
-
-add_fp_unittest(
-  roundf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    roundf128_test.cpp
-  HDRS
-    RoundTest.h
-  DEPENDS
-    libc.src.math.roundf128
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  roundbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    roundbf16_test.cpp
-  HDRS
-    RoundTest.h
-  DEPENDS
-    libc.src.math.roundbf16
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  roundeven_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    roundeven_test.cpp
-  HDRS
-  RoundEvenTest.h
-  DEPENDS
-    libc.src.math.roundeven
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  roundevenf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    roundevenf_test.cpp
-  HDRS
-  RoundEvenTest.h
-  DEPENDS
-    libc.src.math.roundevenf
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  roundevenl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    roundevenl_test.cpp
-  HDRS
-  RoundEvenTest.h
-  DEPENDS
-    libc.src.math.roundevenl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  roundevenf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    roundevenf16_test.cpp
-  HDRS
-    RoundEvenTest.h
-  DEPENDS
-    libc.src.math.roundevenf16
-)
-
-add_fp_unittest(
-  roundevenf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    roundevenf128_test.cpp
-  HDRS
-  RoundEvenTest.h
-  DEPENDS
-    libc.src.math.roundevenf128
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  roundevenbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    roundevenbf16_test.cpp
-  HDRS
-    RoundEvenTest.h
-  DEPENDS
-    libc.src.math.roundevenbf16
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  lround_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    lround_test.cpp
-  HDRS
-    RoundToIntegerTest.h
-  DEPENDS
-    libc.src.errno.errno
-    libc.src.math.lround
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  lroundf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    lroundf_test.cpp
-  HDRS
-    RoundToIntegerTest.h
-  DEPENDS
-    libc.src.errno.errno
-    libc.src.math.lroundf
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  lroundl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    lroundl_test.cpp
-  HDRS
-    RoundToIntegerTest.h
-  DEPENDS
-    libc.src.errno.errno
-    libc.src.math.lroundl
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  lroundf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    lroundf16_test.cpp
-  HDRS
-    RoundToIntegerTest.h
-  DEPENDS
-    libc.src.errno.errno
-    libc.src.math.lroundf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  lroundf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    lroundf128_test.cpp
-  HDRS
-    RoundToIntegerTest.h
-  DEPENDS
-    libc.src.errno.errno
-    libc.src.math.lroundf128
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  lroundbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    lroundbf16_test.cpp
-  HDRS
-    RoundToIntegerTest.h
-  DEPENDS
-    libc.src.errno.errno
-    libc.src.math.lroundbf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  llround_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    llround_test.cpp
-  HDRS
-    RoundToIntegerTest.h
-  DEPENDS
-    libc.src.errno.errno
-    libc.src.math.llround
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  llroundf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    llroundf_test.cpp
-  HDRS
-    RoundToIntegerTest.h
-  DEPENDS
-    libc.src.errno.errno
-    libc.src.math.llroundf
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  llroundl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    llroundl_test.cpp
-  HDRS
-    RoundToIntegerTest.h
-  DEPENDS
-    libc.src.errno.errno
-    libc.src.math.llroundl
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  llroundf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    llroundf16_test.cpp
-  HDRS
-    RoundToIntegerTest.h
-  DEPENDS
-    libc.src.errno.errno
-    libc.src.math.llroundf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  llroundf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    llroundf128_test.cpp
-  HDRS
-    RoundToIntegerTest.h
-  DEPENDS
-    libc.src.errno.errno
-    libc.src.math.llroundf128
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  llroundbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    llroundbf16_test.cpp
-  HDRS
-    RoundToIntegerTest.h
-  DEPENDS
-    libc.src.errno.errno
-    libc.src.math.llroundbf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  rint_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    rint_test.cpp
-  HDRS
-    RIntTest.h
-  DEPENDS
-    libc.src.math.rint
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  rintf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    rintf_test.cpp
-  HDRS
-    RIntTest.h
-  DEPENDS
-    libc.src.math.rintf
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  rintl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    rintl_test.cpp
-  HDRS
-    RIntTest.h
-  DEPENDS
-    libc.src.math.rintl
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  rintf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    rintf16_test.cpp
-  HDRS
-    RIntTest.h
-  DEPENDS
-    libc.src.math.rintf16
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  rintf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    rintf128_test.cpp
-  HDRS
-    RIntTest.h
-  DEPENDS
-    libc.src.math.rintf128
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  rintbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    rintbf16_test.cpp
-  HDRS
-    RIntTest.h
-  DEPENDS
-    libc.src.math.rintbf16
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  lrint_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    lrint_test.cpp
-  HDRS
-    RoundToIntegerTest.h
-  DEPENDS
-    libc.src.errno.errno
-    libc.src.math.lrint
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  lrintf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    lrintf_test.cpp
-  HDRS
-    RoundToIntegerTest.h
-  DEPENDS
-    libc.src.errno.errno
-    libc.src.math.lrintf
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  lrintl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    lrintl_test.cpp
-  HDRS
-    RoundToIntegerTest.h
-  DEPENDS
-    libc.src.errno.errno
-    libc.src.math.lrintl
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  lrintf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    lrintf16_test.cpp
-  HDRS
-    RoundToIntegerTest.h
-  DEPENDS
-    libc.src.errno.errno
-    libc.src.math.lrintf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  lrintf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    lrintf128_test.cpp
-  HDRS
-    RoundToIntegerTest.h
-  DEPENDS
-    libc.src.errno.errno
-    libc.src.math.lrintf128
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  lrintbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    lrintbf16_test.cpp
-  HDRS
-    RoundToIntegerTest.h
-  DEPENDS
-    libc.src.errno.errno
-    libc.src.math.lrintbf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  llrint_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    llrint_test.cpp
-  HDRS
-    RoundToIntegerTest.h
-  DEPENDS
-    libc.src.errno.errno
-    libc.src.math.llrint
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  llrintf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    llrintf_test.cpp
-  HDRS
-    RoundToIntegerTest.h
-  DEPENDS
-    libc.src.errno.errno
-    libc.src.math.llrintf
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  llrintl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    llrintl_test.cpp
-  HDRS
-    RoundToIntegerTest.h
-  DEPENDS
-    libc.src.errno.errno
-    libc.src.math.llrintl
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  llrintf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    llrintf16_test.cpp
-  HDRS
-    RoundToIntegerTest.h
-  DEPENDS
-    libc.src.errno.errno
-    libc.src.math.llrintf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  llrintf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    llrintf128_test.cpp
-  HDRS
-    RoundToIntegerTest.h
-  DEPENDS
-    libc.src.errno.errno
-    libc.src.math.llrintf128
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  llrintbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    llrintbf16_test.cpp
-  HDRS
-    RoundToIntegerTest.h
-  DEPENDS
-    libc.src.errno.errno
-    libc.src.math.llrintbf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  exp_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    exp_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.exp
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  expf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    expf_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.expf
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  expf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    expf16_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.expf16
-    libc.src.__support.FPUtil.cast
-)
-
-add_fp_unittest(
-  exp2_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    exp2_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.exp2
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  exp2f_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    exp2f_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.exp2f
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  exp2f16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    exp2f16_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.exp2f16
-    libc.src.__support.FPUtil.cast
-)
-
-add_fp_unittest(
-  exp2m1f_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    exp2m1f_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.exp2m1f
-)
-
-add_fp_unittest(
-  exp2m1f16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    exp2m1f16_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.exp2m1f16
-    libc.src.__support.FPUtil.cast
-)
-
-add_fp_unittest(
-  exp10_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    exp10_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.exp10
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  exp10f_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    exp10f_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.exp10f
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  exp10f16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    exp10f16_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.exp10f16
-    libc.src.__support.FPUtil.cast
-)
-
-add_fp_unittest(
-  exp10m1f16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    exp10m1f16_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.exp10m1f16
-    libc.src.__support.FPUtil.cast
-)
-
-add_fp_unittest(
-  exp10m1f_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    exp10m1f_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.exp10m1f
-)
-
-add_fp_unittest(
-  copysign_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    copysign_test.cpp
-  HDRS
-    CopySignTest.h
-  DEPENDS
-    libc.src.math.copysign
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  copysignf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    copysignf_test.cpp
-  HDRS
-    CopySignTest.h
-  DEPENDS
-    libc.src.math.copysignf
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  copysignl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    copysignl_test.cpp
-  HDRS
-    CopySignTest.h
-  DEPENDS
-    libc.src.math.copysignl
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  copysignf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    copysignf16_test.cpp
-  HDRS
-    CopySignTest.h
-  DEPENDS
-    libc.src.math.copysignf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  copysignf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    copysignf128_test.cpp
-  HDRS
-    CopySignTest.h
-  DEPENDS
-    libc.src.math.copysignf128
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  copysignbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    copysignbf16_test.cpp
-  HDRS
-    CopySignTest.h
-  DEPENDS
-    libc.src.math.copysignbf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  frexp_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    frexp_test.cpp
-  HDRS
-    FrexpTest.h
-  DEPENDS
-    libc.src.math.frexp
-)
-
-add_fp_unittest(
-  frexpf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    frexpf_test.cpp
-  HDRS
-    FrexpTest.h
-  DEPENDS
-    libc.src.math.frexpf
-)
-
-add_fp_unittest(
-  frexpl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    frexpl_test.cpp
-  HDRS
-    FrexpTest.h
-  DEPENDS
-    libc.src.math.frexpl
-)
-
-add_fp_unittest(
-  frexpf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    frexpf16_test.cpp
-  HDRS
-    FrexpTest.h
-  DEPENDS
-    libc.src.math.frexpf16
-)
-
-add_fp_unittest(
-  frexpf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    frexpf128_test.cpp
-  HDRS
-    FrexpTest.h
-  DEPENDS
-    libc.src.math.frexpf128
-)
-
-add_fp_unittest(
-  frexpbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    frexpbf16_test.cpp
-  HDRS
-    FrexpTest.h
-  DEPENDS
-    libc.src.math.frexpbf16
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  fromfp_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fromfp_test.cpp
-  HDRS
-    FromfpTest.h
-  DEPENDS
-    libc.src.math.fromfp
-)
-
-add_fp_unittest(
-  fromfpf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fromfpf_test.cpp
-  HDRS
-    FromfpTest.h
-  DEPENDS
-    libc.src.math.fromfpf
-)
-
-add_fp_unittest(
-  fromfpl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fromfpl_test.cpp
-  HDRS
-    FromfpTest.h
-  DEPENDS
-    libc.src.math.fromfpl
-)
-
-add_fp_unittest(
-  fromfpf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fromfpf16_test.cpp
-  HDRS
-    FromfpTest.h
-  DEPENDS
-    libc.src.math.fromfpf16
-)
-
-add_fp_unittest(
-  fromfpf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fromfpf128_test.cpp
-  HDRS
-    FromfpTest.h
-  DEPENDS
-    libc.src.math.fromfpf128
-)
-
-add_fp_unittest(
-  fromfpbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fromfpbf16_test.cpp
-  HDRS
-    FromfpTest.h
-  DEPENDS
-    libc.src.math.fromfpbf16
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  fromfpx_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fromfpx_test.cpp
-  HDRS
-    FromfpxTest.h
-  DEPENDS
-    libc.src.math.fromfpx
-)
-
-add_fp_unittest(
-  fromfpxf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fromfpxf_test.cpp
-  HDRS
-    FromfpxTest.h
-  DEPENDS
-    libc.src.math.fromfpxf
-)
-
-add_fp_unittest(
-  fromfpxl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fromfpxl_test.cpp
-  HDRS
-    FromfpxTest.h
-  DEPENDS
-    libc.src.math.fromfpxl
-)
-
-add_fp_unittest(
-  fromfpxf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fromfpxf16_test.cpp
-  HDRS
-    FromfpxTest.h
-  DEPENDS
-    libc.src.math.fromfpxf16
-)
-
-add_fp_unittest(
-  fromfpxf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fromfpxf128_test.cpp
-  HDRS
-    FromfpxTest.h
-  DEPENDS
-    libc.src.math.fromfpxf128
-)
-
-add_fp_unittest(
-  fromfpxbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fromfpxbf16_test.cpp
-  HDRS
-    FromfpxTest.h
-  DEPENDS
-    libc.src.math.fromfpxbf16
-    libc.src.__support.FPUtil.bfloat16
-)
-
-
-add_fp_unittest(
-  ufromfp_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    ufromfp_test.cpp
-  HDRS
-    UfromfpTest.h
-  DEPENDS
-    libc.src.math.ufromfp
-)
-
-add_fp_unittest(
-  ufromfpf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    ufromfpf_test.cpp
-  HDRS
-    UfromfpTest.h
-  DEPENDS
-    libc.src.math.ufromfpf
-)
-
-add_fp_unittest(
-  ufromfpl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    ufromfpl_test.cpp
-  HDRS
-    UfromfpTest.h
-  DEPENDS
-    libc.src.math.ufromfpl
-)
-
-add_fp_unittest(
-  ufromfpf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    ufromfpf16_test.cpp
-  HDRS
-    UfromfpTest.h
-  DEPENDS
-    libc.src.math.ufromfpf16
-)
-
-add_fp_unittest(
-  ufromfpf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    ufromfpf128_test.cpp
-  HDRS
-    UfromfpTest.h
-  DEPENDS
-    libc.src.math.ufromfpf128
-)
-
-add_fp_unittest(
-  ufromfpbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    ufromfpbf16_test.cpp
-  HDRS
-    UfromfpTest.h
-  DEPENDS
-    libc.src.math.ufromfpbf16
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  ufromfpx_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    ufromfpx_test.cpp
-  HDRS
-    UfromfpxTest.h
-  DEPENDS
-    libc.src.math.ufromfpx
-)
-
-add_fp_unittest(
-  ufromfpxf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    ufromfpxf_test.cpp
-  HDRS
-    UfromfpxTest.h
-  DEPENDS
-    libc.src.math.ufromfpxf
-)
-
-add_fp_unittest(
-  ufromfpxl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    ufromfpxl_test.cpp
-  HDRS
-    UfromfpxTest.h
-  DEPENDS
-    libc.src.math.ufromfpxl
-)
-
-add_fp_unittest(
-  ufromfpxf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    ufromfpxf16_test.cpp
-  HDRS
-    UfromfpxTest.h
-  DEPENDS
-    libc.src.math.ufromfpxf16
-)
-
-add_fp_unittest(
-  ufromfpxf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    ufromfpxf128_test.cpp
-  HDRS
-    UfromfpxTest.h
-  DEPENDS
-    libc.src.math.ufromfpxf128
-)
-
-add_fp_unittest(
-  ufromfpxbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    ufromfpxbf16_test.cpp
-  HDRS
-    UfromfpxTest.h
-  DEPENDS
-    libc.src.math.ufromfpxbf16
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  ilogb_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    ilogb_test.cpp
-  HDRS
-    ILogbTest.h
-  DEPENDS
-    libc.src.math.ilogb
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.manipulation_functions
-)
-
-add_fp_unittest(
-  ilogbf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    ilogbf_test.cpp
-  HDRS
-    ILogbTest.h
-  DEPENDS
-    libc.src.math.ilogbf
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.manipulation_functions
-)
-
-add_fp_unittest(
-  ilogbl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    ilogbl_test.cpp
-  HDRS
-    ILogbTest.h
-  DEPENDS
-    libc.src.math.ilogbl
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.manipulation_functions
-)
-
-add_fp_unittest(
-  ilogbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    ilogbf16_test.cpp
-  HDRS
-    ILogbTest.h
-  DEPENDS
-    libc.src.math.ilogbf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.manipulation_functions
-)
-
-add_fp_unittest(
-  ilogbf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    ilogbf128_test.cpp
-  HDRS
-    ILogbTest.h
-  DEPENDS
-    libc.src.math.ilogbf128
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.manipulation_functions
-)
-
-add_fp_unittest(
-  ilogbbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    ilogbbf16_test.cpp
-  HDRS
-    ILogbTest.h
-  DEPENDS
-    libc.src.math.ilogbbf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.manipulation_functions
-)
-
-add_fp_unittest(
-  issignaling_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    issignaling_test.cpp
-  HDRS
-    IsSignalingTest.h
-  DEPENDS
-    libc.src.math.issignaling
-)
-
-add_fp_unittest(
-  issignalingf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    issignalingf_test.cpp
-  HDRS
-    IsSignalingTest.h
-  DEPENDS
-    libc.src.math.issignalingf
-)
-
-add_fp_unittest(
-  issignalingl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    issignalingl_test.cpp
-  HDRS
-    IsSignalingTest.h
-  DEPENDS
-    libc.src.math.issignalingl
-)
-
-add_fp_unittest(
-  issignalingf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    issignalingf16_test.cpp
-  HDRS
-    IsSignalingTest.h
-  DEPENDS
-    libc.src.math.issignalingf16
-)
-
-add_fp_unittest(
-  issignalingf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    issignalingf128_test.cpp
-  HDRS
-    IsSignalingTest.h
-  DEPENDS
-    libc.src.math.issignalingf128
-)
-
-add_fp_unittest(
-  issignalingbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    issignalingbf16_test.cpp
-  HDRS
-    IsSignalingTest.h
-  DEPENDS
-    libc.src.math.issignalingbf16
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  llogb_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    llogb_test.cpp
-  HDRS
-    ILogbTest.h
-  DEPENDS
-    libc.src.math.llogb
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.manipulation_functions
-)
-
-add_fp_unittest(
-  llogbf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    llogbf_test.cpp
-  HDRS
-    ILogbTest.h
-  DEPENDS
-    libc.src.math.llogbf
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.manipulation_functions
-)
-
-add_fp_unittest(
-  llogbl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    llogbl_test.cpp
-  HDRS
-    ILogbTest.h
-  DEPENDS
-    libc.src.math.llogbl
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.manipulation_functions
-)
-
-add_fp_unittest(
-  llogbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    llogbf16_test.cpp
-  HDRS
-    ILogbTest.h
-  DEPENDS
-    libc.src.math.llogbf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.manipulation_functions
-)
-
-add_fp_unittest(
-  llogbf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    llogbf128_test.cpp
-  HDRS
-    ILogbTest.h
-  DEPENDS
-    libc.src.math.llogbf128
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.manipulation_functions
-)
-
-add_fp_unittest(
-  llogbbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    llogbbf16_test.cpp
-  HDRS
-    ILogbTest.h
-  DEPENDS
-    libc.src.math.llogbbf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.manipulation_functions
-)
-
-add_fp_unittest(
-  ldexp_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    ldexp_test.cpp
-  HDRS
-    LdExpTest.h
-  DEPENDS
-    libc.src.math.ldexp
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.CPP.limits
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.normal_float
-)
-
-add_fp_unittest(
-  ldexpf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    ldexpf_test.cpp
-  HDRS
-    LdExpTest.h
-  DEPENDS
-    libc.src.math.ldexpf
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.CPP.limits
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.normal_float
-)
-
-add_fp_unittest(
-  ldexpl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    ldexpl_test.cpp
-  HDRS
-    LdExpTest.h
-  DEPENDS
-    libc.src.math.ldexpl
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.CPP.limits
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.normal_float
-)
-
-add_fp_unittest(
-  ldexpf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    ldexpf16_test.cpp
-  HDRS
-    LdExpTest.h
-  DEPENDS
-    libc.src.math.ldexpf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.CPP.limits
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.normal_float
-)
-
-add_fp_unittest(
-  ldexpf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    ldexpf128_test.cpp
-  HDRS
-    LdExpTest.h
-  DEPENDS
-    libc.src.math.ldexpf128
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.CPP.limits
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.normal_float
-)
-
-add_fp_unittest(
-  ldexpbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    ldexpbf16_test.cpp
-  HDRS
-    LdExpTest.h
-  DEPENDS
-    libc.src.math.ldexpbf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.CPP.limits
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.normal_float
-)
-
-add_fp_unittest(
-  logb_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    logb_test.cpp
-  HDRS
-    LogbTest.h
-  DEPENDS
-    libc.src.math.logb
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.manipulation_functions
-)
-
-add_fp_unittest(
-  logbf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    logbf_test.cpp
-  HDRS
-    LogbTest.h
-  DEPENDS
-    libc.src.math.logbf
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.manipulation_functions
-)
-
-add_fp_unittest(
-  logbl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    logbl_test.cpp
-  HDRS
-    LogbTest.h
-  DEPENDS
-    libc.src.math.logbl
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.manipulation_functions
-)
-
-add_fp_unittest(
-  logbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    logbf16_test.cpp
-  HDRS
-    LogbTest.h
-  DEPENDS
-    libc.src.math.logbf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.manipulation_functions
-)
-
-add_fp_unittest(
-  logbf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    logbf128_test.cpp
-  HDRS
-    LogbTest.h
-  DEPENDS
-    libc.src.math.logbf128
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.manipulation_functions
-)
-
-add_fp_unittest(
-  logbbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    logbbf16_test.cpp
-  HDRS
-    LogbTest.h
-  DEPENDS
-    libc.src.math.logbbf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.__support.FPUtil.manipulation_functions
-)
-
-add_fp_unittest(
-  modf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    modf_test.cpp
-  HDRS
-    ModfTest.h
-  DEPENDS
-    libc.src.math.modf
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.basic_operations
-    libc.src.__support.FPUtil.nearest_integer_operations
-)
-
-add_fp_unittest(
-  modff_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    modff_test.cpp
-  HDRS
-    ModfTest.h
-  DEPENDS
-    libc.src.math.modff
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.basic_operations
-    libc.src.__support.FPUtil.nearest_integer_operations
-)
-
-add_fp_unittest(
-  modfl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    modfl_test.cpp
-  HDRS
-    ModfTest.h
-  DEPENDS
-    libc.src.math.modfl
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.basic_operations
-    libc.src.__support.FPUtil.nearest_integer_operations
-)
-
-add_fp_unittest(
-  modff16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    modff16_test.cpp
-  HDRS
-    ModfTest.h
-  DEPENDS
-    libc.src.math.modff16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.basic_operations
-    libc.src.__support.FPUtil.nearest_integer_operations
-)
-
-add_fp_unittest(
-  modff128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    modff128_test.cpp
-  HDRS
-    ModfTest.h
-  DEPENDS
-    libc.src.math.modff128
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.basic_operations
-    libc.src.__support.FPUtil.nearest_integer_operations
-)
-
-add_fp_unittest(
-  modfbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    modfbf16_test.cpp
-  HDRS
-    ModfTest.h
-  DEPENDS
-    libc.src.math.modfbf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.basic_operations
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.__support.FPUtil.nearest_integer_operations
-)
-
-add_fp_unittest(
-  fdimf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fdimf_test.cpp
-  HDRS
-    FDimTest.h
-  DEPENDS
-    libc.src.math.fdimf
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fdim_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fdim_test.cpp
-  HDRS
-    FDimTest.h
-  DEPENDS
-    libc.src.math.fdim
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fdiml_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fdiml_test.cpp
-  HDRS
-    FDimTest.h
-  DEPENDS
-    libc.src.math.fdiml
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fdimf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fdimf16_test.cpp
-  HDRS
-    FDimTest.h
-  DEPENDS
-    libc.src.math.fdimf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fdimf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fdimf128_test.cpp
-  HDRS
-    FDimTest.h
-  DEPENDS
-    libc.src.math.fdimf128
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fdimbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fdimbf16_test.cpp
-  HDRS
-    FDimTest.h
-  DEPENDS
-    libc.src.math.fdimbf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fminf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fminf_test.cpp
-  HDRS
-    FMinTest.h
-  DEPENDS
-    libc.src.math.fminf
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fmin_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fmin_test.cpp
-  HDRS
-    FMinTest.h
-  DEPENDS
-    libc.src.math.fmin
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fminl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fminl_test.cpp
-  HDRS
-    FMinTest.h
-  DEPENDS
-    libc.src.math.fminl
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fminf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fminf128_test.cpp
-  HDRS
-    FMinTest.h
-  DEPENDS
-    libc.src.math.fminf128
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fminf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fminf16_test.cpp
-  HDRS
-    FMinTest.h
-  DEPENDS
-    libc.src.math.fminf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fminbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fminbf16_test.cpp
-  HDRS
-    FMinTest.h
-  DEPENDS
-    libc.src.math.fminbf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fmaxf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fmaxf_test.cpp
-  HDRS
-    FMaxTest.h
-  DEPENDS
-    libc.src.math.fmaxf
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fmax_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fmax_test.cpp
-  HDRS
-    FMaxTest.h
-  DEPENDS
-    libc.src.math.fmax
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fmaxl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fmaxl_test.cpp
-  HDRS
-    FMaxTest.h
-  DEPENDS
-    libc.src.math.fmaxl
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fmaxf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fmaxf128_test.cpp
-  HDRS
-    FMaxTest.h
-  DEPENDS
-    libc.src.math.fmaxf128
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fmaxf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fmaxf16_test.cpp
-  HDRS
-    FMaxTest.h
-  DEPENDS
-    libc.src.math.fmaxf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fmaxbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fmaxbf16_test.cpp
-  HDRS
-    FMaxTest.h
-  DEPENDS
-    libc.src.math.fmaxbf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fmaximuml_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fmaximuml_test.cpp
-  HDRS
-    FMaximumTest.h
-  DEPENDS
-    libc.src.math.fmaximuml
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fmaximumf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fmaximumf16_test.cpp
-  HDRS
-    FMaximumTest.h
-  DEPENDS
-    libc.src.math.fmaximumf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fmaximumf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fmaximumf128_test.cpp
-  HDRS
-    FMaximumTest.h
-  DEPENDS
-    libc.src.math.fmaximumf128
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fmaximum_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fmaximum_test.cpp
-  HDRS
-    FMaximumTest.h
-  DEPENDS
-    libc.src.math.fmaximum
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fmaximumf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fmaximumf_test.cpp
-  HDRS
-    FMaximumTest.h
-  DEPENDS
-    libc.src.math.fmaximumf
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fmaximum_numf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fmaximum_numf_test.cpp
-  HDRS
-    FMaximumNumTest.h
-  DEPENDS
-    libc.src.math.fmaximum_numf
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fmaximumbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fmaximumbf16_test.cpp
-  HDRS
-    FMaximumTest.h
-  DEPENDS
-    libc.src.math.fmaximumbf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fmaximum_num_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fmaximum_num_test.cpp
-  HDRS
-    FMaximumNumTest.h
-  DEPENDS
-    libc.src.math.fmaximum_num
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fmaximum_numl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fmaximum_numl_test.cpp
-  HDRS
-    FMaximumNumTest.h
-  DEPENDS
-    libc.src.math.fmaximum_numl
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fmaximum_numf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fmaximum_numf16_test.cpp
-  HDRS
-    FMaximumNumTest.h
-  DEPENDS
-    libc.src.math.fmaximum_numf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fmaximum_numf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fmaximum_numf128_test.cpp
-  HDRS
-    FMaximumNumTest.h
-  DEPENDS
-    libc.src.math.fmaximum_numf128
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fmaximum_numbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fmaximum_numbf16_test.cpp
-  HDRS
-    FMaximumTest.h
-  DEPENDS
-    libc.src.math.fmaximum_numbf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fmaximum_magf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fmaximum_magf_test.cpp
-  HDRS
-    FMaximumMagTest.h
-  DEPENDS
-    libc.src.math.fmaximum_magf
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.basic_operations
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fmaximum_mag_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fmaximum_mag_test.cpp
-  HDRS
-    FMaximumMagTest.h
-  DEPENDS
-    libc.src.math.fmaximum_mag
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.basic_operations
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fmaximum_magl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fmaximum_magl_test.cpp
-  HDRS
-    FMaximumMagTest.h
-  DEPENDS
-    libc.src.math.fmaximum_magl
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.basic_operations
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fmaximum_magf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fmaximum_magf16_test.cpp
-  HDRS
-    FMaximumMagTest.h
-  DEPENDS
-    libc.src.math.fmaximum_magf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.basic_operations
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fmaximum_magf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fmaximum_magf128_test.cpp
-  HDRS
-    FMaximumMagTest.h
-  DEPENDS
-    libc.src.math.fmaximum_magf128
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.basic_operations
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fmaximum_magbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fmaximum_magbf16_test.cpp
-  HDRS
-    FMaximumTest.h
-  DEPENDS
-    libc.src.math.fmaximum_magbf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fmaximum_mag_numf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fmaximum_mag_numf_test.cpp
-  HDRS
-    FMaximumMagNumTest.h
-  DEPENDS
-    libc.src.math.fmaximum_mag_numf
-    libc.src.__support.FPUtil.basic_operations
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fmaximum_mag_num_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fmaximum_mag_num_test.cpp
-  HDRS
-    FMaximumMagNumTest.h
-  DEPENDS
-    libc.src.math.fmaximum_mag_num
-    libc.src.__support.FPUtil.basic_operations
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fmaximum_mag_numl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fmaximum_mag_numl_test.cpp
-  HDRS
-    FMaximumMagNumTest.h
-  DEPENDS
-    libc.src.math.fmaximum_mag_numl
-    libc.src.__support.FPUtil.basic_operations
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fmaximum_mag_numf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fmaximum_mag_numf16_test.cpp
-  HDRS
-    FMaximumMagNumTest.h
-  DEPENDS
-    libc.src.math.fmaximum_mag_numf16
-    libc.src.__support.FPUtil.basic_operations
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fmaximum_mag_numf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fmaximum_mag_numf128_test.cpp
-  HDRS
-    FMaximumMagNumTest.h
-  DEPENDS
-    libc.src.math.fmaximum_mag_numf128
-    libc.src.__support.FPUtil.basic_operations
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fmaximum_mag_numbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fmaximum_mag_numbf16_test.cpp
-  HDRS
-    FMaximumTest.h
-  DEPENDS
-    libc.src.math.fmaximum_mag_numbf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fminimuml_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fminimuml_test.cpp
-  HDRS
-    FMinimumTest.h
-  DEPENDS
-    libc.src.math.fminimuml
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fminimumf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fminimumf16_test.cpp
-  HDRS
-    FMinimumTest.h
-  DEPENDS
-    libc.src.math.fminimumf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fminimumf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fminimumf128_test.cpp
-  HDRS
-    FMinimumTest.h
-  DEPENDS
-    libc.src.math.fminimumf128
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fminimum_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fminimum_test.cpp
-  HDRS
-    FMinimumTest.h
-  DEPENDS
-    libc.src.math.fminimum
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fminimumf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fminimumf_test.cpp
-  HDRS
-    FMinimumTest.h
-  DEPENDS
-    libc.src.math.fminimumf
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fminimumbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fminimumbf16_test.cpp
-  HDRS
-    FMaximumTest.h
-  DEPENDS
-    libc.src.math.fminimumbf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fminimum_numf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fminimum_numf_test.cpp
-  HDRS
-    FMinimumNumTest.h
-  DEPENDS
-    libc.src.math.fminimum_numf
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fminimum_num_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fminimum_num_test.cpp
-  HDRS
-    FMinimumNumTest.h
-  DEPENDS
-    libc.src.math.fminimum_num
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fminimum_numl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fminimum_numl_test.cpp
-  HDRS
-    FMinimumNumTest.h
-  DEPENDS
-    libc.src.math.fminimum_numl
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fminimum_numf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fminimum_numf16_test.cpp
-  HDRS
-    FMinimumNumTest.h
-  DEPENDS
-    libc.src.math.fminimum_numf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fminimum_numf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fminimum_numf128_test.cpp
-  HDRS
-    FMinimumNumTest.h
-  DEPENDS
-    libc.src.math.fminimum_numf128
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fminimum_numbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fminimum_numf16_test.cpp
-  HDRS
-    FMaximumTest.h
-  DEPENDS
-    libc.src.math.fminimum_numf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fminimum_magf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fminimum_magf_test.cpp
-  HDRS
-    FMinimumMagTest.h
-  DEPENDS
-    libc.src.math.fminimum_magf
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fminimum_mag_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fminimum_mag_test.cpp
-  HDRS
-    FMinimumMagTest.h
-  DEPENDS
-    libc.src.math.fminimum_mag
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fminimum_magl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fminimum_magl_test.cpp
-  HDRS
-    FMinimumMagTest.h
-  DEPENDS
-    libc.src.math.fminimum_magl
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fminimum_magf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fminimum_magf16_test.cpp
-  HDRS
-    FMinimumMagTest.h
-  DEPENDS
-    libc.src.math.fminimum_magf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fminimum_magf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fminimum_magf128_test.cpp
-  HDRS
-    FMinimumMagTest.h
-  DEPENDS
-    libc.src.math.fminimum_magf128
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fminimum_magbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fminimum_magbf16_test.cpp
-  HDRS
-    FMaximumTest.h
-  DEPENDS
-    libc.src.math.fminimum_magbf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fminimum_mag_numf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fminimum_mag_numf_test.cpp
-  HDRS
-    FMinimumMagNumTest.h
-  DEPENDS
-    libc.src.math.fminimum_mag_numf
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fminimum_mag_num_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fminimum_mag_num_test.cpp
-  HDRS
-    FMinimumMagNumTest.h
-  DEPENDS
-    libc.src.math.fminimum_mag_num
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fminimum_mag_numl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fminimum_mag_numl_test.cpp
-  HDRS
-    FMinimumMagNumTest.h
-  DEPENDS
-    libc.src.math.fminimum_mag_numl
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fminimum_mag_numf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fminimum_mag_numf16_test.cpp
-  HDRS
-    FMinimumMagNumTest.h
-  DEPENDS
-    libc.src.math.fminimum_mag_numf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fminimum_mag_numf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fminimum_mag_numf128_test.cpp
-  HDRS
-    FMinimumMagNumTest.h
-  DEPENDS
-    libc.src.math.fminimum_mag_numf128
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fminimum_mag_numbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fminimum_mag_numbf16_test.cpp
-  HDRS
-    FMaximumTest.h
-  DEPENDS
-    libc.src.math.fminimum_mag_numbf16
-    libc.src.__support.CPP.algorithm
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fmul_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fmul_test.cpp
-  HDRS
-    MulTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.__support.FPUtil.basic_operations
-    libc.src.math.fmul
-)
-
-add_fp_unittest(
-  fmull_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fmull_test.cpp
-  HDRS
-    MulTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.__support.FPUtil.basic_operations
-    libc.src.math.fmull
-)
-
-add_fp_unittest(
-  sqrtf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    sqrtf_test.cpp
-  HDRS
-    SqrtTest.h
-  DEPENDS
-    libc.src.math.sqrtf
-)
-
-add_fp_unittest(
-  sqrt_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    sqrt_test.cpp
-  HDRS
-    SqrtTest.h
-  DEPENDS
-    libc.src.math.sqrt
-)
-
-add_fp_unittest(
-  sqrtl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    sqrtl_test.cpp
-  HDRS
-    SqrtTest.h
-  DEPENDS
-    libc.src.math.sqrtl
-)
-
-add_fp_unittest(
-  rsqrtf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    rsqrtf_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros  
-    libc.hdr.fenv_macros  
-    libc.src.math.rsqrtf 
-)
-
-add_fp_unittest(
-  rsqrtf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    rsqrtf16_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros  
-    libc.hdr.fenv_macros 
-    libc.src.math.rsqrtf16
-)
-
-add_fp_unittest(
-  sqrtf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    sqrtf16_test.cpp
-  HDRS
-    SqrtTest.h
-  DEPENDS
-    libc.src.math.sqrtf16
-)
-
-add_fp_unittest(
-  sqrtf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    sqrtf128_test.cpp
-  HDRS
-    SqrtTest.h
-  DEPENDS
-    libc.src.math.sqrtf128
-)
-
-add_fp_unittest(
-  sqrtbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    sqrtbf16_test.cpp
-  HDRS
-    SqrtTest.h
-  DEPENDS
-    libc.src.math.sqrtbf16
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  generic_sqrtf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    generic_sqrtf_test.cpp
-  HDRS
-    SqrtTest.h
-  DEPENDS
-    libc.src.__support.FPUtil.generic.sqrt
-  COMPILE_OPTIONS
-    ${libc_opt_high_flag}
-)
-
-add_fp_unittest(
-  generic_sqrt_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    generic_sqrt_test.cpp
-  HDRS
-    SqrtTest.h
-  DEPENDS
-    libc.src.__support.FPUtil.generic.sqrt
-  COMPILE_OPTIONS
-    ${libc_opt_high_flag}
-)
-
-add_fp_unittest(
-  generic_sqrtl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    generic_sqrtl_test.cpp
-  HDRS
-    SqrtTest.h
-  DEPENDS
-    libc.src.__support.FPUtil.generic.sqrt
-  COMPILE_OPTIONS
-    ${libc_opt_high_flag}
-)
-
-add_fp_unittest(
-  generic_sqrtf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    generic_sqrtf128_test.cpp
-  HDRS
-    SqrtTest.h
-  DEPENDS
-    # The dependency on sqrtf128 is used to disable the test when float128
-    # support is not available.
-    libc.src.math.sqrtf128
-    libc.src.__support.FPUtil.generic.sqrt
-  COMPILE_OPTIONS
-    ${libc_opt_high_flag}
-)
-
-add_fp_unittest(
-  remquof_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    remquof_test.cpp
-  HDRS
-    RemQuoTest.h
-  DEPENDS
-    libc.src.math.remquof
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  remquof128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    remquof128_test.cpp
-  HDRS
-    RemQuoTest.h
-  DEPENDS
-    libc.src.math.remquof128
-    libc.src.__support.FPUtil.basic_operations
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  remquo_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    remquo_test.cpp
-  HDRS
-    RemQuoTest.h
-  DEPENDS
-    libc.src.math.remquo
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  remquol_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    remquol_test.cpp
-  HDRS
-    RemQuoTest.h
-  DEPENDS
-    libc.src.math.remquol
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  remquof16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    remquof16_test.cpp
-  HDRS
-    RemQuoTest.h
-  DEPENDS
-    libc.src.math.remquof16
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  remquobf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    remquobf16_test.cpp
-  HDRS
-    RemQuoTest.h
-  DEPENDS
-    libc.src.math.remquobf16
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  hypotf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    hypotf_test.cpp
-  HDRS
-    HypotTest.h
-  DEPENDS
-    libc.src.math.hypotf
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.macros.properties.architectures
-)
-
-add_fp_unittest(
-  hypotf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    hypotf16_test.cpp
-  HDRS
-    HypotTest.h
-  DEPENDS
-    libc.src.math.hypotf16
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  hypot_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    hypot_test.cpp
-  HDRS
-    HypotTest.h
-  DEPENDS
-    libc.src.math.hypot
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.macros.properties.architectures
-)
-
-add_fp_unittest(
-  nanf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    nanf_test.cpp
-  DEPENDS
-    libc.hdr.signal_macros
-    libc.src.math.nanf
-    libc.src.__support.FPUtil.fp_bits
-  # FIXME: The nan tests currently have death tests, which aren't supported for
-  # hermetic tests.
-  UNIT_TEST_ONLY
-)
-
-add_fp_unittest(
-  nan_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    nan_test.cpp
-  DEPENDS
-    libc.hdr.signal_macros
-    libc.src.math.nan
-    libc.src.__support.FPUtil.fp_bits
-  # FIXME: The nan tests currently have death tests, which aren't supported for
-  # hermetic tests.
-  UNIT_TEST_ONLY
-)
-
-add_fp_unittest(
-  nanl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    nanl_test.cpp
-  DEPENDS
-    libc.hdr.signal_macros
-    libc.src.math.nanl
-    libc.src.__support.FPUtil.fp_bits
-  # FIXME: The nan tests currently have death tests, which aren't supported for
-  # hermetic tests.
-  UNIT_TEST_ONLY
-)
-
-add_fp_unittest(
-  nanf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    nanf16_test.cpp
-  DEPENDS
-    libc.hdr.signal_macros
-    libc.src.math.nanf16
-    libc.src.__support.FPUtil.fp_bits
-  # FIXME: The nan tests currently have death tests, which aren't supported for
-  # hermetic tests.
-  UNIT_TEST_ONLY
-)
-
-add_fp_unittest(
-  nanf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    nanf128_test.cpp
-  DEPENDS
-    libc.hdr.signal_macros
-    libc.src.math.nanf128
-    libc.src.__support.FPUtil.fp_bits
-  # FIXME: The nan tests currently have death tests, which aren't supported for
-  # hermetic tests.
-  UNIT_TEST_ONLY
-)
-
-add_fp_unittest(
-  nanbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    nanbf16_test.cpp
-  DEPENDS
-    libc.hdr.signal_macros
-    libc.src.math.nanbf16
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.__support.FPUtil.fp_bits
-  # FIXME: The nan tests currently have death tests, which aren't supported for
-  # hermetic tests.
-  UNIT_TEST_ONLY
-)
-
-add_fp_unittest(
-  nearbyint_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    nearbyint_test.cpp
-  HDRS
-    NearbyIntTest.h
-  DEPENDS
-    libc.hdr.fenv_macros
-    libc.src.math.nearbyint
-)
-
-add_fp_unittest(
-  nearbyintf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    nearbyintf_test.cpp
-  HDRS
-    NearbyIntTest.h
-  DEPENDS
-    libc.hdr.fenv_macros
-    libc.src.math.nearbyintf
-)
-
-add_fp_unittest(
-  nearbyintl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    nearbyintl_test.cpp
-  HDRS
-    NearbyIntTest.h
-  DEPENDS
-    libc.hdr.fenv_macros
-    libc.src.math.nearbyintl
-)
-
-add_fp_unittest(
-  nearbyintf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    nearbyintf16_test.cpp
-  HDRS
-    NearbyIntTest.h
-  DEPENDS
-    libc.hdr.fenv_macros
-    libc.src.math.nearbyintf16
-)
-
-add_fp_unittest(
-  nearbyintf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    nearbyintf128_test.cpp
-  HDRS
-    NearbyIntTest.h
-  DEPENDS
-    libc.hdr.fenv_macros
-    libc.src.math.nearbyintf128
-)
-
-add_fp_unittest(
-  nearbyintbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    nearbyintbf16_test.cpp
-  HDRS
-    NearbyIntTest.h
-  DEPENDS
-    libc.hdr.fenv_macros
-    libc.src.math.nearbyintbf16
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  nextafter_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    nextafter_test.cpp
-  HDRS
-    NextAfterTest.h
-  DEPENDS
-    libc.hdr.fenv_macros
-    libc.src.math.nextafter
-    libc.src.__support.CPP.bit
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  nextafterf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    nextafterf_test.cpp
-  HDRS
-    NextAfterTest.h
-  DEPENDS
-    libc.hdr.fenv_macros
-    libc.src.math.nextafterf
-    libc.src.__support.CPP.bit
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  nextafterl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    nextafterl_test.cpp
-  HDRS
-    NextAfterTest.h
-  DEPENDS
-    libc.hdr.fenv_macros
-    libc.src.math.nextafterl
-    libc.src.__support.CPP.bit
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  nextafterf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    nextafterf16_test.cpp
-  HDRS
-    NextAfterTest.h
-  DEPENDS
-    libc.hdr.fenv_macros
-    libc.src.math.nextafterf16
-    libc.src.__support.CPP.bit
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  nextafterf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    nextafterf128_test.cpp
-  HDRS
-    NextAfterTest.h
-  DEPENDS
-    libc.hdr.fenv_macros
-    libc.src.math.nextafterf128
-    libc.src.__support.CPP.bit
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  nextafterbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    nextafterbf16_test.cpp
-  HDRS
-    NextAfterTest.h
-  DEPENDS
-    libc.hdr.fenv_macros
-    libc.src.math.nextafterbf16
-    libc.src.__support.CPP.bit
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-# FIXME: These tests are currently spurious for the GPU.
-if(NOT LIBC_TARGET_OS_IS_GPU)
-  add_fp_unittest(
-    nexttoward_test
-    SUITE
-      libc-math-smoke-tests
-    SRCS
-      nexttoward_test.cpp
-    HDRS
-      NextTowardTest.h
-    DEPENDS
-      libc.hdr.fenv_macros
-      libc.src.math.nexttoward
-      libc.src.__support.CPP.bit
-      libc.src.__support.FPUtil.fenv_impl
-      libc.src.__support.FPUtil.fp_bits
-  )
-
-  add_fp_unittest(
-    nexttowardf_test
-    SUITE
-      libc-math-smoke-tests
-    SRCS
-      nexttowardf_test.cpp
-    HDRS
-      NextTowardTest.h
-    DEPENDS
-      libc.hdr.fenv_macros
-      libc.src.math.nexttowardf
-      libc.src.__support.CPP.bit
-      libc.src.__support.FPUtil.fenv_impl
-      libc.src.__support.FPUtil.fp_bits
-  )
-endif()
-
-add_fp_unittest(
-  nexttowardl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    nexttowardl_test.cpp
-  HDRS
-    NextTowardTest.h
-  DEPENDS
-    libc.hdr.fenv_macros
-    libc.src.math.nexttowardl
-    libc.src.__support.CPP.bit
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  nexttowardf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    nexttowardf16_test.cpp
-  HDRS
-    NextTowardTest.h
-  DEPENDS
-    libc.hdr.fenv_macros
-    libc.src.math.nexttowardf16
-    libc.src.__support.CPP.bit
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  nexttowardbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    nexttowardbf16_test.cpp
-  HDRS
-    NextTowardTest.h
-  DEPENDS
-    libc.hdr.fenv_macros
-    libc.src.math.nexttowardbf16
-    libc.src.__support.CPP.bit
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.__support.FPUtil.fenv_impl
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  nextdown_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    nextdown_test.cpp
-  HDRS
-    NextDownTest.h
-  DEPENDS
-    libc.src.math.nextdown
-)
-
-add_fp_unittest(
-  nextdownf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    nextdownf_test.cpp
-  HDRS
-    NextDownTest.h
-  DEPENDS
-    libc.src.math.nextdownf
-)
-
-add_fp_unittest(
-  nextdownl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    nextdownl_test.cpp
-  HDRS
-    NextDownTest.h
-  DEPENDS
-    libc.src.math.nextdownl
-)
-
-add_fp_unittest(
-  nextdownf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    nextdownf16_test.cpp
-  HDRS
-    NextDownTest.h
-  DEPENDS
-    libc.src.math.nextdownf16
-)
-
-add_fp_unittest(
-  nextdownf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    nextdownf128_test.cpp
-  HDRS
-    NextDownTest.h
-  DEPENDS
-    libc.src.math.nextdownf128
-)
-
-add_fp_unittest(
-  nextdownbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    nextdownbf16_test.cpp
-  HDRS
-    NextDownTest.h
-  DEPENDS
-    libc.src.math.nextdownbf16
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  nextup_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    nextup_test.cpp
-  HDRS
-    NextUpTest.h
-  DEPENDS
-    libc.src.math.nextup
-)
-
-add_fp_unittest(
-  nextupf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    nextupf_test.cpp
-  HDRS
-    NextUpTest.h
-  DEPENDS
-    libc.src.math.nextupf
-)
-
-add_fp_unittest(
-  nextupl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    nextupl_test.cpp
-  HDRS
-    NextUpTest.h
-  DEPENDS
-    libc.src.math.nextupl
-)
-
-add_fp_unittest(
-  nextupf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    nextupf16_test.cpp
-  HDRS
-    NextUpTest.h
-  DEPENDS
-    libc.src.math.nextupf16
-)
-
-add_fp_unittest(
-  nextupf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    nextupf128_test.cpp
-  HDRS
-    NextUpTest.h
-  DEPENDS
-    libc.src.math.nextupf128
-)
-
-add_fp_unittest(
-  nextupbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    nextupbf16_test.cpp
-  HDRS
-    NextUpTest.h
-  DEPENDS
-    libc.src.math.nextupbf16
-    libc.src.__support.FPUtil.bfloat16
-)
-
-# TODO(lntue): The current implementation of fputil::general::fma<float> is only
-# correctly rounded for the default rounding mode round-to-nearest tie-to-even.
-add_fp_unittest(
-  fmaf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fmaf_test.cpp
-  HDRS
-    FmaTest.h
-  DEPENDS
-    libc.src.math.fmaf
-    libc.src.__support.macros.properties.types
-)
-
-add_fp_unittest(
-  fmaf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fmaf16_test.cpp
-  HDRS
-    FmaTest.h
-  DEPENDS
-    libc.src.math.fmaf16
-    libc.src.__support.FPUtil.cast
-)
-
-add_fp_unittest(
-  fmabf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fmabf16_test.cpp
-  HDRS
-    FmaTest.h
-  DEPENDS
-    libc.src.math.fmabf16
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  fma_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fma_test.cpp
-  HDRS
-    FmaTest.h
-  DEPENDS
-    libc.src.math.fma
-    libc.src.__support.macros.properties.types
-)
-
-add_fp_unittest(
-  expm1_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    expm1_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.expm1
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  expm1f_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    expm1f_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.expm1f
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  expm1f16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    expm1f16_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.expm1f16
-    libc.src.__support.FPUtil.cast
-)
-
-add_fp_unittest(
-  log_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    log_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.log
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  logf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    logf_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.logf
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  logf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    logf16_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.logf16
-    libc.src.__support.FPUtil.cast
-)
-
-add_fp_unittest(
-  log_bf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    log_bf16_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.log_bf16
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  log2_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    log2_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.log2
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  log2f_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    log2f_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.log2f
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  log2f16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    log2f16_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.log2f16
-    libc.src.__support.FPUtil.cast
-)
-
-add_fp_unittest(
-  log10_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    log10_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.log10
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  log10f_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    log10f_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.log10f
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  log10f16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    log10f16_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.log10f16
-    libc.src.__support.FPUtil.cast
-)
-
-add_fp_unittest(
-  log1p_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    log1p_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.log1p
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  log1pf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    log1pf_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.log1pf
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  fmodf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fmodf_test.cpp
-  HDRS
-    FModTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.fmodf
-    libc.src.__support.FPUtil.fenv_impl
-  # FIXME: Currently fails on the GPU build.
-  UNIT_TEST_ONLY
-)
-
-add_fp_unittest(
-  fmod_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fmod_test.cpp
-  HDRS
-    FModTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.fmod
-    libc.src.__support.FPUtil.fenv_impl
-  # FIXME: Currently fails on the GPU build.
-  UNIT_TEST_ONLY
-)
-
-add_fp_unittest(
-  fmodl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fmodl_test.cpp
-  HDRS
-    FModTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.fmodl
-    libc.src.__support.FPUtil.fenv_impl
-  # FIXME: Currently fails on the GPU build.
-  UNIT_TEST_ONLY
-)
-
-add_fp_unittest(
-  fmodf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fmodf16_test.cpp
-  HDRS
-    FModTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.fmodf16
-    libc.src.__support.FPUtil.fenv_impl
-  # FIXME: Currently fails on the GPU build.
-  UNIT_TEST_ONLY
-)
-
-add_fp_unittest(
-  fmodf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fmodf128_test.cpp
-  HDRS
-    FModTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.fmodf128
-    libc.src.__support.FPUtil.fenv_impl
-  # FIXME: Currently fails on the GPU build.
-  UNIT_TEST_ONLY
-)
-
-add_fp_unittest(
-  fmodbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fmodbf16_test.cpp
-  HDRS
-    FModTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.fmodbf16
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.__support.FPUtil.fenv_impl
-  UNIT_TEST_ONLY
-)
-
-add_fp_unittest(
-  coshf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    coshf_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.coshf
-    libc.src.__support.CPP.array
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  coshf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    coshf16_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.coshf16
-    libc.src.__support.FPUtil.cast
-)
-
-add_fp_unittest(
-  sinhf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    sinhf_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.sinhf
-    libc.src.__support.CPP.array
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  sinhf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    sinhf16_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.sinhf16
-    libc.src.__support.FPUtil.cast
-)
-
-add_fp_unittest(
-  tanhf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    tanhf_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.tanhf
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  tanhf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    tanhf16_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.tanhf16
-    libc.src.__support.FPUtil.cast
-)
-
-add_fp_unittest(
-  atanhf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    atanhf_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.atanhf
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  atanhf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    atanhf16_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.atanhf16
-    libc.src.__support.FPUtil.cast
-)
-
-add_fp_unittest(
-  atanpif16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    atanpif16_test.cpp
-  DEPENDS
-    libc.src.math.atanpif16
-)
-
-add_fp_unittest(
-  asinhf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    asinhf_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.asinhf
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  asinhf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    asinhf16_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.asinhf16
-)
-
-add_fp_unittest(
-  asinpif16_test
-  NEED_MPFR
-  SUITE
-    libc-math-unittests
-  SRCS
-    asinpif16_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.asinpif16
-)
-
-add_fp_unittest(
-  acoshf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    acoshf_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.acoshf
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  acoshf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    acoshf16_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.acoshf16
-    libc.src.__support.FPUtil.cast
-)
-
-add_fp_unittest(
-  asinf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    asinf_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.asinf
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  asin_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    asin_test.cpp
-  DEPENDS
-    libc.src.math.asin
-)
-
-add_fp_unittest(
-  asinf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    asinf16_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.asinf16
-)
-
-add_fp_unittest(
-  acosf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    acosf_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.acosf
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  acos_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    acos_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.acos
-)
-
-add_fp_unittest(
-  acosf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    acosf16_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.acosf16
-)
-
-add_fp_unittest(
-  acospif16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    acospif16_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.acospif16
-)
-
-add_fp_unittest(
-  atanf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    atanf_test.cpp
-  DEPENDS
-    libc.src.math.atanf
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  atan_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    atan_test.cpp
-  DEPENDS
-    libc.src.math.atan
-)
-
-add_fp_unittest(
-  atanf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    atanf16_test.cpp
-  DEPENDS
-    libc.src.math.atanf16
-)
-
-add_fp_unittest(
-  atan2f_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    atan2f_test.cpp
-  DEPENDS
-    libc.src.math.atan2f
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  atan2_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    atan2_test.cpp
-  DEPENDS
-    libc.src.math.atan2
-)
-
-add_fp_unittest(
-  atan2f128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    atan2f128_test.cpp
-  DEPENDS
-    libc.src.math.atan2f128
-)
-
-add_fp_unittest(
-  scalbln_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    scalbln_test.cpp
-  HDRS
-    ScalbnTest.h
-  DEPENDS
-    libc.src.math.scalbln
-    libc.src.__support.CPP.limits
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.normal_float
-)
-
-add_fp_unittest(
-  scalblnf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    scalblnf_test.cpp
-  HDRS
-    ScalbnTest.h
-  DEPENDS
-    libc.src.math.scalblnf
-    libc.src.__support.CPP.limits
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.normal_float
-)
-
-add_fp_unittest(
-  scalblnl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    scalblnl_test.cpp
-  HDRS
-    ScalbnTest.h
-  DEPENDS
-    libc.src.math.scalblnl
-    libc.src.__support.CPP.limits
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.normal_float
-)
-
-add_fp_unittest(
-  scalblnf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    scalblnf16_test.cpp
-  HDRS
-    ScalbnTest.h
-  DEPENDS
-    libc.src.math.scalblnf16
-    libc.src.__support.CPP.limits
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.normal_float
-)
-
-add_fp_unittest(
-  scalblnf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    scalblnf128_test.cpp
-  HDRS
-    ScalbnTest.h
-  DEPENDS
-    libc.src.math.scalblnf128
-    libc.src.__support.CPP.limits
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.normal_float
-)
-
-add_fp_unittest(
-  scalblnbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    scalblnbf16_test.cpp
-  HDRS
-    ScalbnTest.h
-  DEPENDS
-    libc.src.math.scalblnbf16
-    libc.src.__support.CPP.limits
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.normal_float
-)
-
-add_fp_unittest(
-  scalbn_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    scalbn_test.cpp
-  HDRS
-    ScalbnTest.h
-  DEPENDS
-    libc.src.math.scalbn
-    libc.src.__support.CPP.limits
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.normal_float
-)
-
-add_fp_unittest(
-  scalbnf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    scalbnf_test.cpp
-  HDRS
-    ScalbnTest.h
-  DEPENDS
-    libc.src.math.scalbnf
-    libc.src.__support.CPP.limits
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.normal_float
-)
-
-add_fp_unittest(
-  scalbnl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    scalbnl_test.cpp
-  HDRS
-    ScalbnTest.h
-  DEPENDS
-    libc.src.math.scalbnl
-    libc.src.__support.CPP.limits
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.normal_float
-)
-
-add_fp_unittest(
-  scalbnf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    scalbnf16_test.cpp
-  HDRS
-    ScalbnTest.h
-  DEPENDS
-    libc.src.math.scalbnf16
-    libc.src.__support.CPP.limits
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.normal_float
-)
-
-add_fp_unittest(
-  scalbnf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    scalbnf128_test.cpp
-  HDRS
-    ScalbnTest.h
-  DEPENDS
-    libc.src.math.scalbnf128
-    libc.src.__support.CPP.limits
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.normal_float
-)
-
-add_fp_unittest(
-  scalbnbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    scalbnbf16_test.cpp
-  HDRS
-    ScalbnTest.h
-  DEPENDS
-    libc.src.math.scalbnbf16
-    libc.src.__support.CPP.limits
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.normal_float
-)
-
-add_fp_unittest(
-  erff_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    erff_test.cpp
-  DEPENDS
-    libc.src.math.erff
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  pow_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    pow_test.cpp
-  DEPENDS
-    libc.hdr.fenv_macros
-    libc.src.math.pow
-)
-
-add_fp_unittest(
-  powf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    powf_test.cpp
-  DEPENDS
-    libc.src.math.powf
-    libc.src.__support.FPUtil.fp_bits
-)
-
-add_fp_unittest(
-  totalorder_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    totalorder_test.cpp
-  HDRS
-    TotalOrderTest.h
-  DEPENDS
-    libc.src.math.totalorder
-)
-
-add_fp_unittest(
-  totalorderf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    totalorderf_test.cpp
-  HDRS
-    TotalOrderTest.h
-  DEPENDS
-    libc.src.math.totalorderf
-)
-
-add_fp_unittest(
-  totalorderl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    totalorderl_test.cpp
-  HDRS
-    TotalOrderTest.h
-  DEPENDS
-    libc.src.math.totalorderl
-)
-
-add_fp_unittest(
-  totalorderf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    totalorderf16_test.cpp
-  HDRS
-    TotalOrderTest.h
-  DEPENDS
-    libc.src.math.totalorderf16
-)
-
-add_fp_unittest(
-  totalorderf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    totalorderf128_test.cpp
-  HDRS
-    TotalOrderTest.h
-  DEPENDS
-    libc.src.math.totalorderf128
-)
-
-add_fp_unittest(
-  totalorderbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    totalorderbf16_test.cpp
-  HDRS
-    TotalOrderTest.h
-  DEPENDS
-    libc.src.math.totalorderbf16
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  totalordermag_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    totalordermag_test.cpp
-  HDRS
-    TotalOrderMagTest.h
-  DEPENDS
-    libc.src.math.totalordermag
-)
-
-add_fp_unittest(
-  totalordermagf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    totalordermagf_test.cpp
-  HDRS
-    TotalOrderMagTest.h
-  DEPENDS
-    libc.src.math.totalordermagf
-)
-
-add_fp_unittest(
-  totalordermagl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    totalordermagl_test.cpp
-  HDRS
-    TotalOrderMagTest.h
-  DEPENDS
-    libc.src.math.totalordermagl
-)
-
-add_fp_unittest(
-  totalordermagf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    totalordermagf16_test.cpp
-  HDRS
-    TotalOrderMagTest.h
-  DEPENDS
-    libc.src.math.totalordermagf16
-)
-
-add_fp_unittest(
-  totalordermagf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    totalordermagf128_test.cpp
-  HDRS
-    TotalOrderMagTest.h
-  DEPENDS
-    libc.src.math.totalordermagf128
-)
-
-add_fp_unittest(
-  totalordermagbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    totalordermagbf16_test.cpp
-  HDRS
-    TotalOrderMagTest.h
-  DEPENDS
-    libc.src.math.totalordermagbf16
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  getpayload_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    getpayload_test.cpp
-  HDRS
-    GetPayloadTest.h
-  DEPENDS
-    libc.src.math.getpayload
-)
-
-add_fp_unittest(
-  getpayloadf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    getpayloadf_test.cpp
-  HDRS
-    GetPayloadTest.h
-  DEPENDS
-    libc.src.math.getpayloadf
-)
-
-add_fp_unittest(
-  getpayloadl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    getpayloadl_test.cpp
-  HDRS
-    GetPayloadTest.h
-  DEPENDS
-    libc.src.math.getpayloadl
-)
-
-add_fp_unittest(
-  getpayloadf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    getpayloadf16_test.cpp
-  HDRS
-    GetPayloadTest.h
-  DEPENDS
-    libc.src.math.getpayloadf16
-)
-
-add_fp_unittest(
-  getpayloadf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    getpayloadf128_test.cpp
-  HDRS
-    GetPayloadTest.h
-  DEPENDS
-    libc.src.math.getpayloadf128
-)
-
-add_fp_unittest(
-  getpayloadbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    getpayloadbf16_test.cpp
-  HDRS
-    GetPayloadTest.h
-  DEPENDS
-    libc.src.math.getpayloadbf16
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  setpayload_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    setpayload_test.cpp
-  HDRS
-    SetPayloadTest.h
-  DEPENDS
-    libc.src.math.setpayload
-)
-
-add_fp_unittest(
-  setpayloadf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    setpayloadf_test.cpp
-  HDRS
-    SetPayloadTest.h
-  DEPENDS
-    libc.src.math.setpayloadf
-)
-
-add_fp_unittest(
-  setpayloadl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    setpayloadl_test.cpp
-  HDRS
-    SetPayloadTest.h
-  DEPENDS
-    libc.src.math.setpayloadl
-)
-
-add_fp_unittest(
-  setpayloadf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    setpayloadf16_test.cpp
-  HDRS
-    SetPayloadTest.h
-  DEPENDS
-    libc.src.math.setpayloadf16
-)
-
-add_fp_unittest(
-  setpayloadf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    setpayloadf128_test.cpp
-  HDRS
-    SetPayloadTest.h
-  DEPENDS
-    libc.src.math.setpayloadf128
-)
-
-add_fp_unittest(
-  setpayloadbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    setpayloadbf16_test.cpp
-  HDRS
-    SetPayloadTest.h
-  DEPENDS
-    libc.src.math.setpayloadbf16
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  setpayloadsig_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    setpayloadsig_test.cpp
-  HDRS
-    SetPayloadSigTest.h
-  DEPENDS
-    libc.src.math.setpayloadsig
-)
-
-add_fp_unittest(
-  setpayloadsigf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    setpayloadsigf_test.cpp
-  HDRS
-    SetPayloadSigTest.h
-  DEPENDS
-    libc.src.math.setpayloadsigf
-)
-
-add_fp_unittest(
-  setpayloadsigl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    setpayloadsigl_test.cpp
-  HDRS
-    SetPayloadSigTest.h
-  DEPENDS
-    libc.src.math.setpayloadsigl
-)
-
-add_fp_unittest(
-  setpayloadsigf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    setpayloadsigf16_test.cpp
-  HDRS
-    SetPayloadSigTest.h
-  DEPENDS
-    libc.src.math.setpayloadsigf16
-)
-
-add_fp_unittest(
-  setpayloadsigf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    setpayloadsigf128_test.cpp
-  HDRS
-    SetPayloadSigTest.h
-  DEPENDS
-    libc.src.math.setpayloadsigf128
-)
-
-add_fp_unittest(
-  setpayloadsigbf16_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    setpayloadsigbf16_test.cpp
-  HDRS
-    SetPayloadTest.h
-  DEPENDS
-    libc.src.math.setpayloadsigbf16
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  f16add_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    f16add_test.cpp
-  HDRS
-    AddTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.f16add
-    libc.src.__support.macros.properties.os
-)
-
-add_fp_unittest(
-  f16addf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    f16addf_test.cpp
-  HDRS
-    AddTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.f16addf
-    libc.src.__support.macros.properties.os
-)
-
-add_fp_unittest(
-  f16addl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    f16addl_test.cpp
-  HDRS
-    AddTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.f16addl
-    libc.src.__support.macros.properties.os
-)
-
-add_fp_unittest(
-  f16addf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    f16addf128_test.cpp
-  HDRS
-    AddTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.f16addf128
-    libc.src.__support.macros.properties.os
-)
-
-add_fp_unittest(
-  f16sub_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    f16sub_test.cpp
-  HDRS
-    SubTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.f16sub
-    libc.src.__support.macros.properties.os
-)
-
-add_fp_unittest(
-  f16subf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    f16subf_test.cpp
-  HDRS
-    SubTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.f16subf
-    libc.src.__support.macros.properties.os
-)
-
-add_fp_unittest(
-  f16subl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    f16subl_test.cpp
-  HDRS
-    SubTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.f16subl
-    libc.src.__support.macros.properties.os
-)
-
-add_fp_unittest(
-  f16subf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    f16subf128_test.cpp
-  HDRS
-    SubTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.f16subf128
-    libc.src.__support.macros.properties.os
-)
-
-add_fp_unittest(
-  f16div_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    f16div_test.cpp
-  HDRS
-    DivTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.f16div
-)
-
-add_fp_unittest(
-  f16divf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    f16divf_test.cpp
-  HDRS
-    DivTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.f16divf
-)
-
-add_fp_unittest(
-  f16divl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    f16divl_test.cpp
-  HDRS
-    DivTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.f16divl
-)
-
-add_fp_unittest(
-  f16divf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    f16divf128_test.cpp
-  HDRS
-    DivTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.f16divf128
-)
-
-add_fp_unittest(
-  f16fma_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    f16fma_test.cpp
-  HDRS
-    FmaTest.h
-  DEPENDS
-    libc.src.math.f16fma
-    libc.src.__support.macros.properties.types
-)
-
-add_fp_unittest(
-  f16fmaf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    f16fmaf_test.cpp
-  HDRS
-    FmaTest.h
-  DEPENDS
-    libc.src.math.f16fmaf
-    libc.src.__support.macros.properties.types
-)
-
-add_fp_unittest(
-  f16fmal_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    f16fmal_test.cpp
-  HDRS
-    FmaTest.h
-  DEPENDS
-    libc.src.math.f16fmal
-    libc.src.__support.macros.properties.types
-)
-
-add_fp_unittest(
-  f16fmaf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    f16fmaf128_test.cpp
-  HDRS
-    FmaTest.h
-  DEPENDS
-    libc.src.math.f16fmaf128
-    libc.src.__support.macros.properties.types
-)
-
-add_fp_unittest(
-  f16sqrt_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    f16sqrt_test.cpp
-  HDRS
-    SqrtTest.h
-  DEPENDS
-    libc.src.math.f16sqrt
-)
-
-add_fp_unittest(
-  f16sqrtf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    f16sqrtf_test.cpp
-  HDRS
-    SqrtTest.h
-  DEPENDS
-    libc.src.math.f16sqrtf
-)
-
-add_fp_unittest(
-  f16sqrtl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    f16sqrtl_test.cpp
-  HDRS
-    SqrtTest.h
-  DEPENDS
-    libc.src.math.f16sqrtl
-)
-
-add_fp_unittest(
-  f16sqrtf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    f16sqrtf128_test.cpp
-  HDRS
-    SqrtTest.h
-  DEPENDS
-    libc.src.math.f16sqrtf128
-)
-
-add_fp_unittest(
-  fdiv_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fdiv_test.cpp
-  HDRS
-    DivTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.fdiv
-)
-
-add_fp_unittest(
-  fdivl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fdivl_test.cpp
-  HDRS
-    DivTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.fdivl
-)
-
-add_fp_unittest(
-  fdivf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fdivf128_test.cpp
-  HDRS
-    DivTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.fdivf128
-)
-
-add_fp_unittest(
-  ffma_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    ffma_test.cpp
-  HDRS
-    FmaTest.h
-  DEPENDS
-    libc.src.math.ffma
-    libc.src.__support.macros.properties.types
-)
-
-add_fp_unittest(
-  ffmal_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    ffmal_test.cpp
-  HDRS
-    FmaTest.h
-  DEPENDS
-    libc.src.math.ffmal
-    libc.src.__support.macros.properties.types
-)
-
-add_fp_unittest(
-  ffmaf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    ffmaf128_test.cpp
-  HDRS
-    FmaTest.h
-  DEPENDS
-    libc.src.math.ffmaf128
-    libc.src.__support.macros.properties.types
-)
-
-add_fp_unittest(
-  fsqrt_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fsqrt_test.cpp
-  HDRS
-    SqrtTest.h
-  DEPENDS
-    libc.src.math.fsqrt
-)
-
-
-add_fp_unittest(
-  fsqrtl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fsqrtl_test.cpp
-  HDRS
-    SqrtTest.h
-  DEPENDS
-    libc.src.math.fsqrtl
-)
-
-add_fp_unittest(
-  fsqrtf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fsqrtf128_test.cpp
-  HDRS
-    SqrtTest.h
-  DEPENDS
-    libc.src.math.fsqrtf128
-)
-
-add_fp_unittest(
-  fsub_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fsub_test.cpp
-  HDRS
-    SubTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.fsub
-    libc.src.__support.macros.properties.os
-)
-
-add_fp_unittest(
-  fsubl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fsubl_test.cpp
-  HDRS
-    SubTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.fsubl
-    libc.src.__support.macros.properties.os
-)
-
-add_fp_unittest(
-  fsubf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    fsubf128_test.cpp
-  HDRS
-    SubTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.fsubf128
-    libc.src.__support.macros.properties.os
-)
-
-add_fp_unittest(
-  dsqrtl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    dsqrtl_test.cpp
-  HDRS
-    SqrtTest.h
-  DEPENDS
-    libc.src.math.dsqrtl
-)
-
-add_fp_unittest(
-  dsqrtf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    dsqrtf128_test.cpp
-  HDRS
-    SqrtTest.h
-  DEPENDS
-    libc.src.math.dsqrtf128
-)
-
-add_fp_unittest(
-  sin_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    sin_test.cpp
-  DEPENDS
-    libc.src.math.sin
-)
-
-add_fp_unittest(
-  cos_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    cos_test.cpp
-  DEPENDS
-    libc.src.math.cos
-)
-
-add_fp_unittest(
-  sincos_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    sincos_test.cpp
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.src.math.sincos
-)
-
-add_fp_unittest(
-  tan_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    tan_test.cpp
-  DEPENDS
-    libc.src.math.tan
-)
-
-add_fp_unittest(
-  cbrtf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    cbrtf_test.cpp
-  DEPENDS
-    libc.src.math.cbrtf
-)
-
-add_fp_unittest(
-  cbrt_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    cbrt_test.cpp
-  DEPENDS
-    libc.src.math.cbrt
-)
-
-add_fp_unittest(
-  dmull_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    dmull_test.cpp
-  HDRS
-    MulTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.__support.FPUtil.basic_operations
-    libc.src.math.dmull
-)
-
-add_fp_unittest(
-  f16mul_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    f16mul_test.cpp
-  HDRS
-    MulTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.__support.FPUtil.basic_operations
-    libc.src.math.f16mul
-)
-
-add_fp_unittest(
-  f16mulf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    f16mulf_test.cpp
-  HDRS
-    MulTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.__support.FPUtil.basic_operations
-    libc.src.math.f16mulf
-)
-
-add_fp_unittest(
-  f16mull_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    f16mull_test.cpp
-  HDRS
-    MulTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.__support.FPUtil.basic_operations
-    libc.src.math.f16mull
-)
-
-add_fp_unittest(
-  f16mulf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    f16mulf128_test.cpp
-  HDRS
-    MulTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.__support.FPUtil.basic_operations
-    libc.src.math.f16mulf128
-)
-
-add_fp_unittest(
-  daddl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    daddl_test.cpp
-  HDRS
-    AddTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.daddl
-    libc.src.__support.macros.properties.os
-)
-
-add_fp_unittest(
-  daddf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    daddf128_test.cpp
-  HDRS
-    AddTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.daddf128
-    libc.src.__support.macros.properties.os
-)
-
-add_fp_unittest(
-  ddivl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    ddivl_test.cpp
-  HDRS
-    DivTest.h
-  DEPENDS
-    libc.src.math.ddivl
-)
-
-add_fp_unittest(
-  ddivf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    ddivf128_test.cpp
-  HDRS
-    DivTest.h
-  DEPENDS
-    libc.src.math.ddivf128
-)
-
-add_fp_unittest(
-  bfloat16_add_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    bfloat16_add_test.cpp
-  HDRS
-    AddTest.h
-  DEPENDS
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.__support.FPUtil.generic.add_sub
-    libc.src.__support.macros.properties.os
-    libc.src.__support.macros.properties.types
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-)
-
-add_fp_unittest(
-  bfloat16_div_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    bfloat16_div_test.cpp
-  HDRS
-    DivTest.h
-  DEPENDS
-    libc.src.__support.FPUtil.bfloat16
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-)
-
-add_fp_unittest(
-  bfloat16_mul_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    bfloat16_mul_test.cpp
-  HDRS
-    MulTest.h
-  DEPENDS
-    libc.src.__support.FPUtil.basic_operations
-    libc.src.__support.FPUtil.bfloat16
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-)
-
-add_fp_unittest(
-  bfloat16_sub_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    bfloat16_sub_test.cpp
-  HDRS
-    SubTest.h
-  DEPENDS
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.__support.FPUtil.generic.add_sub
-    libc.src.__support.macros.properties.os
-    libc.src.__support.macros.properties.types
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-)
-
-add_fp_unittest(
-  add_same_type_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    add_same_type_test.cpp
-  HDRS
-    AddTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.__support.FPUtil.generic.add_sub
-    libc.src.__support.macros.properties.os
-    libc.src.__support.macros.properties.types
-)
-
-add_fp_unittest(
-  sub_same_type_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    sub_same_type_test.cpp
-  HDRS
-    SubTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.__support.FPUtil.generic.add_sub
-    libc.src.__support.macros.properties.os
-    libc.src.__support.macros.properties.types
-)
-
-add_fp_unittest(
-  bf16add_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    bf16add_test.cpp
-  HDRS
-    AddTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.bf16add
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.__support.macros.properties.os
-)
-
-add_fp_unittest(
-  bf16addf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    bf16addf_test.cpp
-  HDRS
-    AddTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.bf16addf
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.__support.macros.properties.os
-)
-
-add_fp_unittest(
-  bf16addl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    bf16addl_test.cpp
-  HDRS
-    AddTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.bf16addl
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.__support.macros.properties.os
-)
-
-add_fp_unittest(
-  bf16addf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    bf16addf128_test.cpp
-  HDRS
-    AddTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.bf16addf128
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.__support.macros.properties.os
-)
-
-add_fp_unittest(
-  bf16fma_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    bf16fma_test.cpp
-  HDRS
-    FmaTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.bf16fma
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  bf16fmaf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    bf16fmaf_test.cpp
-  HDRS
-    FmaTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.bf16fmaf
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  bf16fmal_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    bf16fmal_test.cpp
-  HDRS
-    FmaTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.bf16fmal
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  bf16fmaf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    bf16fmaf128_test.cpp
-  HDRS
-    FmaTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.bf16fmaf128
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  bf16div_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    bf16div_test.cpp
-  HDRS
-    DivTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.bf16div
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  bf16divf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    bf16divf_test.cpp
-  HDRS
-    DivTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.bf16divf
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  bf16divl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    bf16divl_test.cpp
-  HDRS
-    DivTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.bf16divl
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  bf16divf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    bf16divf128_test.cpp
-  HDRS
-    DivTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.bf16divf128
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  bf16mul_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    bf16mul_test.cpp
-  HDRS
-    MulTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.bf16mul
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  bf16mulf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    bf16mulf_test.cpp
-  HDRS
-    MulTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.bf16mulf
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  bf16mull_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    bf16mull_test.cpp
-  HDRS
-    MulTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.bf16mull
-    libc.src.__support.FPUtil.bfloat16
-)
-
-add_fp_unittest(
-  bf16mulf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    bf16mulf128_test.cpp
-  HDRS
-    MulTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.bf16mulf128
-    libc.src.__support.FPUtil.bfloat16
-)
-
-
-add_fp_unittest(
-  bf16sub_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    bf16sub_test.cpp
-  HDRS
-    SubTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.bf16sub
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.__support.macros.properties.os
-)
-
-add_fp_unittest(
-  bf16subf_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    bf16subf_test.cpp
-  HDRS
-    SubTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.bf16subf
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.__support.macros.properties.os
-)
-
-add_fp_unittest(
-  bf16subl_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    bf16subl_test.cpp
-  HDRS
-    SubTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.bf16subl
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.__support.macros.properties.os
-)
-
-add_fp_unittest(
-  bf16subf128_test
-  SUITE
-    libc-math-smoke-tests
-  SRCS
-    bf16subf128_test.cpp
-  HDRS
-    SubTest.h
-  DEPENDS
-    libc.hdr.errno_macros
-    libc.hdr.fenv_macros
-    libc.src.math.bf16subf128
-    libc.src.__support.FPUtil.bfloat16
-    libc.src.__support.macros.properties.os
-)
+add_custom_target(libc-math-smoke-tests)
+add_dependencies(libc-math-unittests libc-math-smoke-tests)
+
+add_fp_unittest(
+  cosf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    cosf_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.cosf
+)
+
+add_fp_unittest(
+  cosf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    cosf16_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.cosf16
+)
+
+add_fp_unittest(
+  cospif_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    cospif_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.cospif
+    libc.src.__support.CPP.array
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  cospif16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    cospif16_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.cospif16
+    libc.src.__support.FPUtil.cast
+)
+
+add_fp_unittest(
+  sinf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    sinf_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.sinf
+    libc.src.__support.CPP.array
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  sinf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    sinf16_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.sinf16
+    libc.src.__support.FPUtil.cast
+)
+
+add_fp_unittest(
+  sinpif_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    sinpif_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.sinpif
+    libc.src.__support.CPP.array
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  sinpif16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    sinpif16_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.sinpif16
+)
+
+add_fp_unittest(
+  sincosf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    sincosf_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.sincosf
+    libc.src.__support.CPP.array
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  tanf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    tanf_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.tanf
+    libc.src.__support.CPP.array
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  tanf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    tanf16_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.tanf16
+)
+
+add_fp_unittest(
+  tanpif_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    tanpif_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.tanpif
+)
+
+add_fp_unittest(
+  tanpif16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    tanpif16_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.tanpif16
+)
+
+add_fp_unittest(
+  fabs_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fabs_test.cpp
+  HDRS
+    FAbsTest.h
+  DEPENDS
+    libc.src.math.fabs
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fabsf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fabsf_test.cpp
+  HDRS
+    FAbsTest.h
+  DEPENDS
+    libc.src.math.fabsf
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fabsl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fabsl_test.cpp
+  HDRS
+    FAbsTest.h
+  DEPENDS
+    libc.src.math.fabsl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fabsf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fabsf16_test.cpp
+  HDRS
+    FAbsTest.h
+  DEPENDS
+    libc.src.math.fabsf16
+)
+
+add_fp_unittest(
+  fabsf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fabsf128_test.cpp
+  HDRS
+    FAbsTest.h
+  DEPENDS
+    libc.src.math.fabsf128
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fabsbf16_test
+  SUITE
+  libc-math-smoke-tests
+  SRCS
+    fabsbf16_test.cpp
+  HDRS
+    FAbsTest.h
+  DEPENDS
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.math.fabsbf16
+)
+
+add_fp_unittest(
+  fadd_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fadd_test.cpp
+  HDRS
+    AddTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.fadd
+    libc.src.__support.macros.properties.os
+)
+
+add_fp_unittest(
+  faddl_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    faddl_test.cpp
+  HDRS
+    AddTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.faddl
+    libc.src.__support.macros.properties.os
+)
+
+add_fp_unittest(
+  faddf128_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    faddf128_test.cpp
+  HDRS
+    AddTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.faddf128
+    libc.src.__support.macros.properties.os
+)
+
+add_fp_unittest(
+  trunc_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    trunc_test.cpp
+  HDRS
+    TruncTest.h
+  DEPENDS
+    libc.src.math.trunc
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  truncf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    truncf_test.cpp
+  HDRS
+    TruncTest.h
+  DEPENDS
+    libc.src.math.truncf
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  truncl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    truncl_test.cpp
+  HDRS
+    TruncTest.h
+  DEPENDS
+    libc.src.math.truncl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  truncf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    truncf16_test.cpp
+  HDRS
+    TruncTest.h
+  DEPENDS
+    libc.src.math.truncf16
+)
+
+add_fp_unittest(
+  truncf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    truncf128_test.cpp
+  HDRS
+    TruncTest.h
+  DEPENDS
+    libc.src.math.truncf128
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  truncbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    truncbf16_test.cpp
+  HDRS
+    TruncTest.h
+  DEPENDS
+    libc.src.math.truncbf16
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  canonicalize_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    canonicalize_test.cpp
+  HDRS
+    CanonicalizeTest.h
+  DEPENDS
+    libc.src.math.canonicalize
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.integer_literals
+)
+
+add_fp_unittest(
+  canonicalizef_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    canonicalizef_test.cpp
+  HDRS
+    CanonicalizeTest.h
+  DEPENDS
+    libc.src.math.canonicalizef
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.integer_literals
+)
+
+add_fp_unittest(
+  canonicalizef16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    canonicalizef16_test.cpp
+  HDRS
+    CanonicalizeTest.h
+  DEPENDS
+    libc.src.math.canonicalizef16
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.integer_literals
+)
+
+add_fp_unittest(
+  canonicalizef128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    canonicalizef128_test.cpp
+  HDRS
+    CanonicalizeTest.h
+  DEPENDS
+    libc.src.math.canonicalizef128
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.integer_literals
+)
+
+add_fp_unittest(
+  canonicalizel_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    canonicalizel_test.cpp
+  HDRS
+    CanonicalizeTest.h
+  DEPENDS
+    libc.src.math.canonicalizel
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.integer_literals
+)
+
+add_fp_unittest(
+  canonicalizebf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    canonicalizebf16_test.cpp
+  HDRS
+    CanonicalizeTest.h
+  DEPENDS
+    libc.src.math.canonicalizebf16
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.integer_literals
+)
+
+add_fp_unittest(
+  iscanonical_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    iscanonical_test.cpp
+  HDRS
+    IsCanonicalTest.h
+  DEPENDS
+    libc.src.math.iscanonical
+)
+
+add_fp_unittest(
+  iscanonicalf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    iscanonicalf_test.cpp
+  HDRS
+    IsCanonicalTest.h
+  DEPENDS
+    libc.src.math.iscanonicalf
+)
+
+add_fp_unittest(
+  iscanonicall_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    iscanonicall_test.cpp
+  HDRS
+    IsCanonicalTest.h
+  DEPENDS
+    libc.src.math.iscanonicall
+)
+
+add_fp_unittest(
+  iscanonicalf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    iscanonicalf16_test.cpp
+  HDRS
+    IsCanonicalTest.h
+  DEPENDS
+    libc.src.math.iscanonicalf16
+)
+
+add_fp_unittest(
+  iscanonicalf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    iscanonicalf128_test.cpp
+  HDRS
+    IsCanonicalTest.h
+  DEPENDS
+    libc.src.math.iscanonicalf128
+)
+
+add_fp_unittest(
+  iscanonicalbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    iscanonicalbf16_test.cpp
+  HDRS
+    IsCanonicalTest.h
+  DEPENDS
+    libc.src.math.iscanonicalbf16
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  ceil_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    ceil_test.cpp
+  HDRS
+    CeilTest.h
+  DEPENDS
+    libc.src.math.ceil
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  ceilf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    ceilf_test.cpp
+  HDRS
+    CeilTest.h
+  DEPENDS
+    libc.src.math.ceilf
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  ceill_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    ceill_test.cpp
+  HDRS
+    CeilTest.h
+  DEPENDS
+    libc.src.math.ceill
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  ceilf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    ceilf16_test.cpp
+  HDRS
+    CeilTest.h
+  DEPENDS
+    libc.src.math.ceilf16
+)
+
+add_fp_unittest(
+  ceilf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    ceilf128_test.cpp
+  HDRS
+    CeilTest.h
+  DEPENDS
+    libc.src.math.ceilf128
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  ceilbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    ceilbf16_test.cpp
+  HDRS
+    CeilTest.h
+  DEPENDS
+    libc.src.math.ceilbf16
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  dfmal_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    dfmal_test.cpp
+  HDRS
+    FmaTest.h
+  DEPENDS
+    libc.src.math.dfmal
+    libc.src.__support.macros.properties.types
+)
+
+add_fp_unittest(
+  dfmaf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    dfmaf128_test.cpp
+  HDRS
+    FmaTest.h
+  DEPENDS
+    libc.src.math.dfmaf128
+    libc.src.__support.macros.properties.types
+)
+
+add_fp_unittest(
+  dsubl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    dsubl_test.cpp
+  HDRS
+    SubTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.dsubl
+    libc.src.__support.macros.properties.os
+)
+
+add_fp_unittest(
+  dsubf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    dsubf128_test.cpp
+  HDRS
+    SubTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.dsubf128
+    libc.src.__support.macros.properties.os
+)
+
+add_fp_unittest(
+  floor_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    floor_test.cpp
+  HDRS
+    FloorTest.h
+  DEPENDS
+    libc.src.math.floor
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  floorf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    floorf_test.cpp
+  HDRS
+    FloorTest.h
+  DEPENDS
+    libc.src.math.floorf
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  floorl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    floorl_test.cpp
+  HDRS
+    FloorTest.h
+  DEPENDS
+    libc.src.math.floorl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  floorf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    floorf16_test.cpp
+  HDRS
+    FloorTest.h
+  DEPENDS
+    libc.src.math.floorf16
+)
+
+add_fp_unittest(
+  floorf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    floorf128_test.cpp
+  HDRS
+    FloorTest.h
+  DEPENDS
+    libc.src.math.floorf128
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  floorbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    floorbf16_test.cpp
+  HDRS
+    FloorTest.h
+  DEPENDS
+    libc.src.math.floorbf16
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  round_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    round_test.cpp
+  HDRS
+    RoundTest.h
+  DEPENDS
+    libc.src.math.round
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  roundf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    roundf_test.cpp
+  HDRS
+    RoundTest.h
+  DEPENDS
+    libc.src.math.roundf
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  roundl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    roundl_test.cpp
+  HDRS
+    RoundTest.h
+  DEPENDS
+    libc.src.math.roundl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  roundf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    roundf16_test.cpp
+  HDRS
+    RoundTest.h
+  DEPENDS
+    libc.src.math.roundf16
+)
+
+add_fp_unittest(
+  roundf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    roundf128_test.cpp
+  HDRS
+    RoundTest.h
+  DEPENDS
+    libc.src.math.roundf128
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  roundbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    roundbf16_test.cpp
+  HDRS
+    RoundTest.h
+  DEPENDS
+    libc.src.math.roundbf16
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  roundeven_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    roundeven_test.cpp
+  HDRS
+  RoundEvenTest.h
+  DEPENDS
+    libc.src.math.roundeven
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  roundevenf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    roundevenf_test.cpp
+  HDRS
+  RoundEvenTest.h
+  DEPENDS
+    libc.src.math.roundevenf
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  roundevenl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    roundevenl_test.cpp
+  HDRS
+  RoundEvenTest.h
+  DEPENDS
+    libc.src.math.roundevenl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  roundevenf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    roundevenf16_test.cpp
+  HDRS
+    RoundEvenTest.h
+  DEPENDS
+    libc.src.math.roundevenf16
+)
+
+add_fp_unittest(
+  roundevenf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    roundevenf128_test.cpp
+  HDRS
+  RoundEvenTest.h
+  DEPENDS
+    libc.src.math.roundevenf128
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  roundevenbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    roundevenbf16_test.cpp
+  HDRS
+    RoundEvenTest.h
+  DEPENDS
+    libc.src.math.roundevenbf16
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  lround_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    lround_test.cpp
+  HDRS
+    RoundToIntegerTest.h
+  DEPENDS
+    libc.src.errno.errno
+    libc.src.math.lround
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  lroundf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    lroundf_test.cpp
+  HDRS
+    RoundToIntegerTest.h
+  DEPENDS
+    libc.src.errno.errno
+    libc.src.math.lroundf
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  lroundl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    lroundl_test.cpp
+  HDRS
+    RoundToIntegerTest.h
+  DEPENDS
+    libc.src.errno.errno
+    libc.src.math.lroundl
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  lroundf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    lroundf16_test.cpp
+  HDRS
+    RoundToIntegerTest.h
+  DEPENDS
+    libc.src.errno.errno
+    libc.src.math.lroundf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  lroundf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    lroundf128_test.cpp
+  HDRS
+    RoundToIntegerTest.h
+  DEPENDS
+    libc.src.errno.errno
+    libc.src.math.lroundf128
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  lroundbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    lroundbf16_test.cpp
+  HDRS
+    RoundToIntegerTest.h
+  DEPENDS
+    libc.src.errno.errno
+    libc.src.math.lroundbf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  llround_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    llround_test.cpp
+  HDRS
+    RoundToIntegerTest.h
+  DEPENDS
+    libc.src.errno.errno
+    libc.src.math.llround
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  llroundf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    llroundf_test.cpp
+  HDRS
+    RoundToIntegerTest.h
+  DEPENDS
+    libc.src.errno.errno
+    libc.src.math.llroundf
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  llroundl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    llroundl_test.cpp
+  HDRS
+    RoundToIntegerTest.h
+  DEPENDS
+    libc.src.errno.errno
+    libc.src.math.llroundl
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  llroundf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    llroundf16_test.cpp
+  HDRS
+    RoundToIntegerTest.h
+  DEPENDS
+    libc.src.errno.errno
+    libc.src.math.llroundf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  llroundf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    llroundf128_test.cpp
+  HDRS
+    RoundToIntegerTest.h
+  DEPENDS
+    libc.src.errno.errno
+    libc.src.math.llroundf128
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  llroundbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    llroundbf16_test.cpp
+  HDRS
+    RoundToIntegerTest.h
+  DEPENDS
+    libc.src.errno.errno
+    libc.src.math.llroundbf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  rint_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    rint_test.cpp
+  HDRS
+    RIntTest.h
+  DEPENDS
+    libc.src.math.rint
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  rintf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    rintf_test.cpp
+  HDRS
+    RIntTest.h
+  DEPENDS
+    libc.src.math.rintf
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  rintl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    rintl_test.cpp
+  HDRS
+    RIntTest.h
+  DEPENDS
+    libc.src.math.rintl
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  rintf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    rintf16_test.cpp
+  HDRS
+    RIntTest.h
+  DEPENDS
+    libc.src.math.rintf16
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  rintf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    rintf128_test.cpp
+  HDRS
+    RIntTest.h
+  DEPENDS
+    libc.src.math.rintf128
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  rintbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    rintbf16_test.cpp
+  HDRS
+    RIntTest.h
+  DEPENDS
+    libc.src.math.rintbf16
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  lrint_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    lrint_test.cpp
+  HDRS
+    RoundToIntegerTest.h
+  DEPENDS
+    libc.src.errno.errno
+    libc.src.math.lrint
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  lrintf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    lrintf_test.cpp
+  HDRS
+    RoundToIntegerTest.h
+  DEPENDS
+    libc.src.errno.errno
+    libc.src.math.lrintf
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  lrintl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    lrintl_test.cpp
+  HDRS
+    RoundToIntegerTest.h
+  DEPENDS
+    libc.src.errno.errno
+    libc.src.math.lrintl
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  lrintf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    lrintf16_test.cpp
+  HDRS
+    RoundToIntegerTest.h
+  DEPENDS
+    libc.src.errno.errno
+    libc.src.math.lrintf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  lrintf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    lrintf128_test.cpp
+  HDRS
+    RoundToIntegerTest.h
+  DEPENDS
+    libc.src.errno.errno
+    libc.src.math.lrintf128
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  lrintbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    lrintbf16_test.cpp
+  HDRS
+    RoundToIntegerTest.h
+  DEPENDS
+    libc.src.errno.errno
+    libc.src.math.lrintbf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  llrint_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    llrint_test.cpp
+  HDRS
+    RoundToIntegerTest.h
+  DEPENDS
+    libc.src.errno.errno
+    libc.src.math.llrint
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  llrintf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    llrintf_test.cpp
+  HDRS
+    RoundToIntegerTest.h
+  DEPENDS
+    libc.src.errno.errno
+    libc.src.math.llrintf
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  llrintl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    llrintl_test.cpp
+  HDRS
+    RoundToIntegerTest.h
+  DEPENDS
+    libc.src.errno.errno
+    libc.src.math.llrintl
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  llrintf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    llrintf16_test.cpp
+  HDRS
+    RoundToIntegerTest.h
+  DEPENDS
+    libc.src.errno.errno
+    libc.src.math.llrintf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  llrintf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    llrintf128_test.cpp
+  HDRS
+    RoundToIntegerTest.h
+  DEPENDS
+    libc.src.errno.errno
+    libc.src.math.llrintf128
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  llrintbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    llrintbf16_test.cpp
+  HDRS
+    RoundToIntegerTest.h
+  DEPENDS
+    libc.src.errno.errno
+    libc.src.math.llrintbf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  exp_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    exp_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.exp
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  expf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    expf_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.expf
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  expf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    expf16_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.expf16
+    libc.src.__support.FPUtil.cast
+)
+
+add_fp_unittest(
+  exp2_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    exp2_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.exp2
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  exp2f_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    exp2f_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.exp2f
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  exp2f16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    exp2f16_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.exp2f16
+    libc.src.__support.FPUtil.cast
+)
+
+add_fp_unittest(
+  exp2m1f_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    exp2m1f_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.exp2m1f
+)
+
+add_fp_unittest(
+  exp2m1f16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    exp2m1f16_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.exp2m1f16
+    libc.src.__support.FPUtil.cast
+)
+
+add_fp_unittest(
+  exp10_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    exp10_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.exp10
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  exp10f_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    exp10f_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.exp10f
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  exp10f16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    exp10f16_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.exp10f16
+    libc.src.__support.FPUtil.cast
+)
+
+add_fp_unittest(
+  exp10m1f16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    exp10m1f16_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.exp10m1f16
+    libc.src.__support.FPUtil.cast
+)
+
+add_fp_unittest(
+  exp10m1f_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    exp10m1f_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.exp10m1f
+)
+
+add_fp_unittest(
+  copysign_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    copysign_test.cpp
+  HDRS
+    CopySignTest.h
+  DEPENDS
+    libc.src.math.copysign
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  copysignf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    copysignf_test.cpp
+  HDRS
+    CopySignTest.h
+  DEPENDS
+    libc.src.math.copysignf
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  copysignl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    copysignl_test.cpp
+  HDRS
+    CopySignTest.h
+  DEPENDS
+    libc.src.math.copysignl
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  copysignf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    copysignf16_test.cpp
+  HDRS
+    CopySignTest.h
+  DEPENDS
+    libc.src.math.copysignf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  copysignf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    copysignf128_test.cpp
+  HDRS
+    CopySignTest.h
+  DEPENDS
+    libc.src.math.copysignf128
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  copysignbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    copysignbf16_test.cpp
+  HDRS
+    CopySignTest.h
+  DEPENDS
+    libc.src.math.copysignbf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  frexp_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    frexp_test.cpp
+  HDRS
+    FrexpTest.h
+  DEPENDS
+    libc.src.math.frexp
+)
+
+add_fp_unittest(
+  frexpf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    frexpf_test.cpp
+  HDRS
+    FrexpTest.h
+  DEPENDS
+    libc.src.math.frexpf
+)
+
+add_fp_unittest(
+  frexpl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    frexpl_test.cpp
+  HDRS
+    FrexpTest.h
+  DEPENDS
+    libc.src.math.frexpl
+)
+
+add_fp_unittest(
+  frexpf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    frexpf16_test.cpp
+  HDRS
+    FrexpTest.h
+  DEPENDS
+    libc.src.math.frexpf16
+)
+
+add_fp_unittest(
+  frexpf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    frexpf128_test.cpp
+  HDRS
+    FrexpTest.h
+  DEPENDS
+    libc.src.math.frexpf128
+)
+
+add_fp_unittest(
+  frexpbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    frexpbf16_test.cpp
+  HDRS
+    FrexpTest.h
+  DEPENDS
+    libc.src.math.frexpbf16
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  fromfp_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fromfp_test.cpp
+  HDRS
+    FromfpTest.h
+  DEPENDS
+    libc.src.math.fromfp
+)
+
+add_fp_unittest(
+  fromfpf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fromfpf_test.cpp
+  HDRS
+    FromfpTest.h
+  DEPENDS
+    libc.src.math.fromfpf
+)
+
+add_fp_unittest(
+  fromfpl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fromfpl_test.cpp
+  HDRS
+    FromfpTest.h
+  DEPENDS
+    libc.src.math.fromfpl
+)
+
+add_fp_unittest(
+  fromfpf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fromfpf16_test.cpp
+  HDRS
+    FromfpTest.h
+  DEPENDS
+    libc.src.math.fromfpf16
+)
+
+add_fp_unittest(
+  fromfpf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fromfpf128_test.cpp
+  HDRS
+    FromfpTest.h
+  DEPENDS
+    libc.src.math.fromfpf128
+)
+
+add_fp_unittest(
+  fromfpbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fromfpbf16_test.cpp
+  HDRS
+    FromfpTest.h
+  DEPENDS
+    libc.src.math.fromfpbf16
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  fromfpx_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fromfpx_test.cpp
+  HDRS
+    FromfpxTest.h
+  DEPENDS
+    libc.src.math.fromfpx
+)
+
+add_fp_unittest(
+  fromfpxf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fromfpxf_test.cpp
+  HDRS
+    FromfpxTest.h
+  DEPENDS
+    libc.src.math.fromfpxf
+)
+
+add_fp_unittest(
+  fromfpxl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fromfpxl_test.cpp
+  HDRS
+    FromfpxTest.h
+  DEPENDS
+    libc.src.math.fromfpxl
+)
+
+add_fp_unittest(
+  fromfpxf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fromfpxf16_test.cpp
+  HDRS
+    FromfpxTest.h
+  DEPENDS
+    libc.src.math.fromfpxf16
+)
+
+add_fp_unittest(
+  fromfpxf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fromfpxf128_test.cpp
+  HDRS
+    FromfpxTest.h
+  DEPENDS
+    libc.src.math.fromfpxf128
+)
+
+add_fp_unittest(
+  fromfpxbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fromfpxbf16_test.cpp
+  HDRS
+    FromfpxTest.h
+  DEPENDS
+    libc.src.math.fromfpxbf16
+    libc.src.__support.FPUtil.bfloat16
+)
+
+
+add_fp_unittest(
+  ufromfp_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    ufromfp_test.cpp
+  HDRS
+    UfromfpTest.h
+  DEPENDS
+    libc.src.math.ufromfp
+)
+
+add_fp_unittest(
+  ufromfpf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    ufromfpf_test.cpp
+  HDRS
+    UfromfpTest.h
+  DEPENDS
+    libc.src.math.ufromfpf
+)
+
+add_fp_unittest(
+  ufromfpl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    ufromfpl_test.cpp
+  HDRS
+    UfromfpTest.h
+  DEPENDS
+    libc.src.math.ufromfpl
+)
+
+add_fp_unittest(
+  ufromfpf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    ufromfpf16_test.cpp
+  HDRS
+    UfromfpTest.h
+  DEPENDS
+    libc.src.math.ufromfpf16
+)
+
+add_fp_unittest(
+  ufromfpf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    ufromfpf128_test.cpp
+  HDRS
+    UfromfpTest.h
+  DEPENDS
+    libc.src.math.ufromfpf128
+)
+
+add_fp_unittest(
+  ufromfpbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    ufromfpbf16_test.cpp
+  HDRS
+    UfromfpTest.h
+  DEPENDS
+    libc.src.math.ufromfpbf16
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  ufromfpx_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    ufromfpx_test.cpp
+  HDRS
+    UfromfpxTest.h
+  DEPENDS
+    libc.src.math.ufromfpx
+)
+
+add_fp_unittest(
+  ufromfpxf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    ufromfpxf_test.cpp
+  HDRS
+    UfromfpxTest.h
+  DEPENDS
+    libc.src.math.ufromfpxf
+)
+
+add_fp_unittest(
+  ufromfpxl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    ufromfpxl_test.cpp
+  HDRS
+    UfromfpxTest.h
+  DEPENDS
+    libc.src.math.ufromfpxl
+)
+
+add_fp_unittest(
+  ufromfpxf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    ufromfpxf16_test.cpp
+  HDRS
+    UfromfpxTest.h
+  DEPENDS
+    libc.src.math.ufromfpxf16
+)
+
+add_fp_unittest(
+  ufromfpxf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    ufromfpxf128_test.cpp
+  HDRS
+    UfromfpxTest.h
+  DEPENDS
+    libc.src.math.ufromfpxf128
+)
+
+add_fp_unittest(
+  ufromfpxbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    ufromfpxbf16_test.cpp
+  HDRS
+    UfromfpxTest.h
+  DEPENDS
+    libc.src.math.ufromfpxbf16
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  ilogb_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    ilogb_test.cpp
+  HDRS
+    ILogbTest.h
+  DEPENDS
+    libc.src.math.ilogb
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.manipulation_functions
+)
+
+add_fp_unittest(
+  ilogbf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    ilogbf_test.cpp
+  HDRS
+    ILogbTest.h
+  DEPENDS
+    libc.src.math.ilogbf
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.manipulation_functions
+)
+
+add_fp_unittest(
+  ilogbl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    ilogbl_test.cpp
+  HDRS
+    ILogbTest.h
+  DEPENDS
+    libc.src.math.ilogbl
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.manipulation_functions
+)
+
+add_fp_unittest(
+  ilogbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    ilogbf16_test.cpp
+  HDRS
+    ILogbTest.h
+  DEPENDS
+    libc.src.math.ilogbf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.manipulation_functions
+)
+
+add_fp_unittest(
+  ilogbf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    ilogbf128_test.cpp
+  HDRS
+    ILogbTest.h
+  DEPENDS
+    libc.src.math.ilogbf128
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.manipulation_functions
+)
+
+add_fp_unittest(
+  ilogbbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    ilogbbf16_test.cpp
+  HDRS
+    ILogbTest.h
+  DEPENDS
+    libc.src.math.ilogbbf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.manipulation_functions
+)
+
+add_fp_unittest(
+  issignaling_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    issignaling_test.cpp
+  HDRS
+    IsSignalingTest.h
+  DEPENDS
+    libc.src.math.issignaling
+)
+
+add_fp_unittest(
+  issignalingf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    issignalingf_test.cpp
+  HDRS
+    IsSignalingTest.h
+  DEPENDS
+    libc.src.math.issignalingf
+)
+
+add_fp_unittest(
+  issignalingl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    issignalingl_test.cpp
+  HDRS
+    IsSignalingTest.h
+  DEPENDS
+    libc.src.math.issignalingl
+)
+
+add_fp_unittest(
+  issignalingf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    issignalingf16_test.cpp
+  HDRS
+    IsSignalingTest.h
+  DEPENDS
+    libc.src.math.issignalingf16
+)
+
+add_fp_unittest(
+  issignalingf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    issignalingf128_test.cpp
+  HDRS
+    IsSignalingTest.h
+  DEPENDS
+    libc.src.math.issignalingf128
+)
+
+add_fp_unittest(
+  issignalingbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    issignalingbf16_test.cpp
+  HDRS
+    IsSignalingTest.h
+  DEPENDS
+    libc.src.math.issignalingbf16
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  llogb_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    llogb_test.cpp
+  HDRS
+    ILogbTest.h
+  DEPENDS
+    libc.src.math.llogb
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.manipulation_functions
+)
+
+add_fp_unittest(
+  llogbf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    llogbf_test.cpp
+  HDRS
+    ILogbTest.h
+  DEPENDS
+    libc.src.math.llogbf
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.manipulation_functions
+)
+
+add_fp_unittest(
+  llogbl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    llogbl_test.cpp
+  HDRS
+    ILogbTest.h
+  DEPENDS
+    libc.src.math.llogbl
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.manipulation_functions
+)
+
+add_fp_unittest(
+  llogbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    llogbf16_test.cpp
+  HDRS
+    ILogbTest.h
+  DEPENDS
+    libc.src.math.llogbf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.manipulation_functions
+)
+
+add_fp_unittest(
+  llogbf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    llogbf128_test.cpp
+  HDRS
+    ILogbTest.h
+  DEPENDS
+    libc.src.math.llogbf128
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.manipulation_functions
+)
+
+add_fp_unittest(
+  llogbbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    llogbbf16_test.cpp
+  HDRS
+    ILogbTest.h
+  DEPENDS
+    libc.src.math.llogbbf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.manipulation_functions
+)
+
+add_fp_unittest(
+  ldexp_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    ldexp_test.cpp
+  HDRS
+    LdExpTest.h
+  DEPENDS
+    libc.src.math.ldexp
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.CPP.limits
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.normal_float
+)
+
+add_fp_unittest(
+  ldexpf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    ldexpf_test.cpp
+  HDRS
+    LdExpTest.h
+  DEPENDS
+    libc.src.math.ldexpf
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.CPP.limits
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.normal_float
+)
+
+add_fp_unittest(
+  ldexpl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    ldexpl_test.cpp
+  HDRS
+    LdExpTest.h
+  DEPENDS
+    libc.src.math.ldexpl
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.CPP.limits
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.normal_float
+)
+
+add_fp_unittest(
+  ldexpf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    ldexpf16_test.cpp
+  HDRS
+    LdExpTest.h
+  DEPENDS
+    libc.src.math.ldexpf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.CPP.limits
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.normal_float
+)
+
+add_fp_unittest(
+  ldexpf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    ldexpf128_test.cpp
+  HDRS
+    LdExpTest.h
+  DEPENDS
+    libc.src.math.ldexpf128
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.CPP.limits
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.normal_float
+)
+
+add_fp_unittest(
+  ldexpbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    ldexpbf16_test.cpp
+  HDRS
+    LdExpTest.h
+  DEPENDS
+    libc.src.math.ldexpbf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.CPP.limits
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.normal_float
+)
+
+add_fp_unittest(
+  logb_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    logb_test.cpp
+  HDRS
+    LogbTest.h
+  DEPENDS
+    libc.src.math.logb
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.manipulation_functions
+)
+
+add_fp_unittest(
+  logbf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    logbf_test.cpp
+  HDRS
+    LogbTest.h
+  DEPENDS
+    libc.src.math.logbf
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.manipulation_functions
+)
+
+add_fp_unittest(
+  logbl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    logbl_test.cpp
+  HDRS
+    LogbTest.h
+  DEPENDS
+    libc.src.math.logbl
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.manipulation_functions
+)
+
+add_fp_unittest(
+  logbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    logbf16_test.cpp
+  HDRS
+    LogbTest.h
+  DEPENDS
+    libc.src.math.logbf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.manipulation_functions
+)
+
+add_fp_unittest(
+  logbf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    logbf128_test.cpp
+  HDRS
+    LogbTest.h
+  DEPENDS
+    libc.src.math.logbf128
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.manipulation_functions
+)
+
+add_fp_unittest(
+  logbbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    logbbf16_test.cpp
+  HDRS
+    LogbTest.h
+  DEPENDS
+    libc.src.math.logbbf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.FPUtil.manipulation_functions
+)
+
+add_fp_unittest(
+  modf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    modf_test.cpp
+  HDRS
+    ModfTest.h
+  DEPENDS
+    libc.src.math.modf
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.nearest_integer_operations
+)
+
+add_fp_unittest(
+  modff_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    modff_test.cpp
+  HDRS
+    ModfTest.h
+  DEPENDS
+    libc.src.math.modff
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.nearest_integer_operations
+)
+
+add_fp_unittest(
+  modfl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    modfl_test.cpp
+  HDRS
+    ModfTest.h
+  DEPENDS
+    libc.src.math.modfl
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.nearest_integer_operations
+)
+
+add_fp_unittest(
+  modff16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    modff16_test.cpp
+  HDRS
+    ModfTest.h
+  DEPENDS
+    libc.src.math.modff16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.nearest_integer_operations
+)
+
+add_fp_unittest(
+  modff128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    modff128_test.cpp
+  HDRS
+    ModfTest.h
+  DEPENDS
+    libc.src.math.modff128
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.nearest_integer_operations
+)
+
+add_fp_unittest(
+  modfbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    modfbf16_test.cpp
+  HDRS
+    ModfTest.h
+  DEPENDS
+    libc.src.math.modfbf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.FPUtil.nearest_integer_operations
+)
+
+add_fp_unittest(
+  fdimf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fdimf_test.cpp
+  HDRS
+    FDimTest.h
+  DEPENDS
+    libc.src.math.fdimf
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fdim_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fdim_test.cpp
+  HDRS
+    FDimTest.h
+  DEPENDS
+    libc.src.math.fdim
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fdiml_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fdiml_test.cpp
+  HDRS
+    FDimTest.h
+  DEPENDS
+    libc.src.math.fdiml
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fdimf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fdimf16_test.cpp
+  HDRS
+    FDimTest.h
+  DEPENDS
+    libc.src.math.fdimf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fdimf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fdimf128_test.cpp
+  HDRS
+    FDimTest.h
+  DEPENDS
+    libc.src.math.fdimf128
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fdimbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fdimbf16_test.cpp
+  HDRS
+    FDimTest.h
+  DEPENDS
+    libc.src.math.fdimbf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fminf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fminf_test.cpp
+  HDRS
+    FMinTest.h
+  DEPENDS
+    libc.src.math.fminf
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fmin_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fmin_test.cpp
+  HDRS
+    FMinTest.h
+  DEPENDS
+    libc.src.math.fmin
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fminl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fminl_test.cpp
+  HDRS
+    FMinTest.h
+  DEPENDS
+    libc.src.math.fminl
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fminf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fminf128_test.cpp
+  HDRS
+    FMinTest.h
+  DEPENDS
+    libc.src.math.fminf128
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fminf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fminf16_test.cpp
+  HDRS
+    FMinTest.h
+  DEPENDS
+    libc.src.math.fminf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fminbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fminbf16_test.cpp
+  HDRS
+    FMinTest.h
+  DEPENDS
+    libc.src.math.fminbf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fmaxf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fmaxf_test.cpp
+  HDRS
+    FMaxTest.h
+  DEPENDS
+    libc.src.math.fmaxf
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fmax_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fmax_test.cpp
+  HDRS
+    FMaxTest.h
+  DEPENDS
+    libc.src.math.fmax
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fmaxl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fmaxl_test.cpp
+  HDRS
+    FMaxTest.h
+  DEPENDS
+    libc.src.math.fmaxl
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fmaxf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fmaxf128_test.cpp
+  HDRS
+    FMaxTest.h
+  DEPENDS
+    libc.src.math.fmaxf128
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fmaxf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fmaxf16_test.cpp
+  HDRS
+    FMaxTest.h
+  DEPENDS
+    libc.src.math.fmaxf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fmaxbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fmaxbf16_test.cpp
+  HDRS
+    FMaxTest.h
+  DEPENDS
+    libc.src.math.fmaxbf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fmaximuml_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fmaximuml_test.cpp
+  HDRS
+    FMaximumTest.h
+  DEPENDS
+    libc.src.math.fmaximuml
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fmaximumf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fmaximumf16_test.cpp
+  HDRS
+    FMaximumTest.h
+  DEPENDS
+    libc.src.math.fmaximumf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fmaximumf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fmaximumf128_test.cpp
+  HDRS
+    FMaximumTest.h
+  DEPENDS
+    libc.src.math.fmaximumf128
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fmaximum_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fmaximum_test.cpp
+  HDRS
+    FMaximumTest.h
+  DEPENDS
+    libc.src.math.fmaximum
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fmaximumf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fmaximumf_test.cpp
+  HDRS
+    FMaximumTest.h
+  DEPENDS
+    libc.src.math.fmaximumf
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fmaximum_numf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fmaximum_numf_test.cpp
+  HDRS
+    FMaximumNumTest.h
+  DEPENDS
+    libc.src.math.fmaximum_numf
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fmaximumbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fmaximumbf16_test.cpp
+  HDRS
+    FMaximumTest.h
+  DEPENDS
+    libc.src.math.fmaximumbf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fmaximum_num_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fmaximum_num_test.cpp
+  HDRS
+    FMaximumNumTest.h
+  DEPENDS
+    libc.src.math.fmaximum_num
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fmaximum_numl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fmaximum_numl_test.cpp
+  HDRS
+    FMaximumNumTest.h
+  DEPENDS
+    libc.src.math.fmaximum_numl
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fmaximum_numf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fmaximum_numf16_test.cpp
+  HDRS
+    FMaximumNumTest.h
+  DEPENDS
+    libc.src.math.fmaximum_numf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fmaximum_numf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fmaximum_numf128_test.cpp
+  HDRS
+    FMaximumNumTest.h
+  DEPENDS
+    libc.src.math.fmaximum_numf128
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fmaximum_numbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fmaximum_numbf16_test.cpp
+  HDRS
+    FMaximumTest.h
+  DEPENDS
+    libc.src.math.fmaximum_numbf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fmaximum_magf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fmaximum_magf_test.cpp
+  HDRS
+    FMaximumMagTest.h
+  DEPENDS
+    libc.src.math.fmaximum_magf
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fmaximum_mag_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fmaximum_mag_test.cpp
+  HDRS
+    FMaximumMagTest.h
+  DEPENDS
+    libc.src.math.fmaximum_mag
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fmaximum_magl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fmaximum_magl_test.cpp
+  HDRS
+    FMaximumMagTest.h
+  DEPENDS
+    libc.src.math.fmaximum_magl
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fmaximum_magf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fmaximum_magf16_test.cpp
+  HDRS
+    FMaximumMagTest.h
+  DEPENDS
+    libc.src.math.fmaximum_magf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fmaximum_magf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fmaximum_magf128_test.cpp
+  HDRS
+    FMaximumMagTest.h
+  DEPENDS
+    libc.src.math.fmaximum_magf128
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fmaximum_magbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fmaximum_magbf16_test.cpp
+  HDRS
+    FMaximumTest.h
+  DEPENDS
+    libc.src.math.fmaximum_magbf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fmaximum_mag_numf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fmaximum_mag_numf_test.cpp
+  HDRS
+    FMaximumMagNumTest.h
+  DEPENDS
+    libc.src.math.fmaximum_mag_numf
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fmaximum_mag_num_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fmaximum_mag_num_test.cpp
+  HDRS
+    FMaximumMagNumTest.h
+  DEPENDS
+    libc.src.math.fmaximum_mag_num
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fmaximum_mag_numl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fmaximum_mag_numl_test.cpp
+  HDRS
+    FMaximumMagNumTest.h
+  DEPENDS
+    libc.src.math.fmaximum_mag_numl
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fmaximum_mag_numf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fmaximum_mag_numf16_test.cpp
+  HDRS
+    FMaximumMagNumTest.h
+  DEPENDS
+    libc.src.math.fmaximum_mag_numf16
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fmaximum_mag_numf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fmaximum_mag_numf128_test.cpp
+  HDRS
+    FMaximumMagNumTest.h
+  DEPENDS
+    libc.src.math.fmaximum_mag_numf128
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fmaximum_mag_numbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fmaximum_mag_numbf16_test.cpp
+  HDRS
+    FMaximumTest.h
+  DEPENDS
+    libc.src.math.fmaximum_mag_numbf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fminimuml_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fminimuml_test.cpp
+  HDRS
+    FMinimumTest.h
+  DEPENDS
+    libc.src.math.fminimuml
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fminimumf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fminimumf16_test.cpp
+  HDRS
+    FMinimumTest.h
+  DEPENDS
+    libc.src.math.fminimumf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fminimumf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fminimumf128_test.cpp
+  HDRS
+    FMinimumTest.h
+  DEPENDS
+    libc.src.math.fminimumf128
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fminimum_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fminimum_test.cpp
+  HDRS
+    FMinimumTest.h
+  DEPENDS
+    libc.src.math.fminimum
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fminimumf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fminimumf_test.cpp
+  HDRS
+    FMinimumTest.h
+  DEPENDS
+    libc.src.math.fminimumf
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fminimumbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fminimumbf16_test.cpp
+  HDRS
+    FMaximumTest.h
+  DEPENDS
+    libc.src.math.fminimumbf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fminimum_numf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fminimum_numf_test.cpp
+  HDRS
+    FMinimumNumTest.h
+  DEPENDS
+    libc.src.math.fminimum_numf
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fminimum_num_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fminimum_num_test.cpp
+  HDRS
+    FMinimumNumTest.h
+  DEPENDS
+    libc.src.math.fminimum_num
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fminimum_numl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fminimum_numl_test.cpp
+  HDRS
+    FMinimumNumTest.h
+  DEPENDS
+    libc.src.math.fminimum_numl
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fminimum_numf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fminimum_numf16_test.cpp
+  HDRS
+    FMinimumNumTest.h
+  DEPENDS
+    libc.src.math.fminimum_numf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fminimum_numf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fminimum_numf128_test.cpp
+  HDRS
+    FMinimumNumTest.h
+  DEPENDS
+    libc.src.math.fminimum_numf128
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fminimum_numbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fminimum_numf16_test.cpp
+  HDRS
+    FMaximumTest.h
+  DEPENDS
+    libc.src.math.fminimum_numf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fminimum_magf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fminimum_magf_test.cpp
+  HDRS
+    FMinimumMagTest.h
+  DEPENDS
+    libc.src.math.fminimum_magf
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fminimum_mag_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fminimum_mag_test.cpp
+  HDRS
+    FMinimumMagTest.h
+  DEPENDS
+    libc.src.math.fminimum_mag
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fminimum_magl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fminimum_magl_test.cpp
+  HDRS
+    FMinimumMagTest.h
+  DEPENDS
+    libc.src.math.fminimum_magl
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fminimum_magf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fminimum_magf16_test.cpp
+  HDRS
+    FMinimumMagTest.h
+  DEPENDS
+    libc.src.math.fminimum_magf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fminimum_magf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fminimum_magf128_test.cpp
+  HDRS
+    FMinimumMagTest.h
+  DEPENDS
+    libc.src.math.fminimum_magf128
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fminimum_magbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fminimum_magbf16_test.cpp
+  HDRS
+    FMaximumTest.h
+  DEPENDS
+    libc.src.math.fminimum_magbf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fminimum_mag_numf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fminimum_mag_numf_test.cpp
+  HDRS
+    FMinimumMagNumTest.h
+  DEPENDS
+    libc.src.math.fminimum_mag_numf
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fminimum_mag_num_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fminimum_mag_num_test.cpp
+  HDRS
+    FMinimumMagNumTest.h
+  DEPENDS
+    libc.src.math.fminimum_mag_num
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fminimum_mag_numl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fminimum_mag_numl_test.cpp
+  HDRS
+    FMinimumMagNumTest.h
+  DEPENDS
+    libc.src.math.fminimum_mag_numl
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fminimum_mag_numf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fminimum_mag_numf16_test.cpp
+  HDRS
+    FMinimumMagNumTest.h
+  DEPENDS
+    libc.src.math.fminimum_mag_numf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fminimum_mag_numf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fminimum_mag_numf128_test.cpp
+  HDRS
+    FMinimumMagNumTest.h
+  DEPENDS
+    libc.src.math.fminimum_mag_numf128
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fminimum_mag_numbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fminimum_mag_numbf16_test.cpp
+  HDRS
+    FMaximumTest.h
+  DEPENDS
+    libc.src.math.fminimum_mag_numbf16
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fmul_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fmul_test.cpp
+  HDRS
+    MulTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.math.fmul
+)
+
+add_fp_unittest(
+  fmull_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fmull_test.cpp
+  HDRS
+    MulTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.math.fmull
+)
+
+add_fp_unittest(
+  sqrtf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    sqrtf_test.cpp
+  HDRS
+    SqrtTest.h
+  DEPENDS
+    libc.src.math.sqrtf
+)
+
+add_fp_unittest(
+  sqrt_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    sqrt_test.cpp
+  HDRS
+    SqrtTest.h
+  DEPENDS
+    libc.src.math.sqrt
+)
+
+add_fp_unittest(
+  sqrtl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    sqrtl_test.cpp
+  HDRS
+    SqrtTest.h
+  DEPENDS
+    libc.src.math.sqrtl
+)
+
+add_fp_unittest(
+  rsqrtf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    rsqrtf_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros  
+    libc.hdr.fenv_macros  
+    libc.src.math.rsqrtf 
+)
+
+add_fp_unittest(
+  rsqrtf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    rsqrtf16_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros  
+    libc.hdr.fenv_macros 
+    libc.src.math.rsqrtf16
+)
+
+add_fp_unittest(
+  sqrtf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    sqrtf16_test.cpp
+  HDRS
+    SqrtTest.h
+  DEPENDS
+    libc.src.math.sqrtf16
+)
+
+add_fp_unittest(
+  sqrtf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    sqrtf128_test.cpp
+  HDRS
+    SqrtTest.h
+  DEPENDS
+    libc.src.math.sqrtf128
+)
+
+add_fp_unittest(
+  sqrtbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    sqrtbf16_test.cpp
+  HDRS
+    SqrtTest.h
+  DEPENDS
+    libc.src.math.sqrtbf16
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  generic_sqrtf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    generic_sqrtf_test.cpp
+  HDRS
+    SqrtTest.h
+  DEPENDS
+    libc.src.__support.FPUtil.generic.sqrt
+  COMPILE_OPTIONS
+    ${libc_opt_high_flag}
+)
+
+add_fp_unittest(
+  generic_sqrt_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    generic_sqrt_test.cpp
+  HDRS
+    SqrtTest.h
+  DEPENDS
+    libc.src.__support.FPUtil.generic.sqrt
+  COMPILE_OPTIONS
+    ${libc_opt_high_flag}
+)
+
+add_fp_unittest(
+  generic_sqrtl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    generic_sqrtl_test.cpp
+  HDRS
+    SqrtTest.h
+  DEPENDS
+    libc.src.__support.FPUtil.generic.sqrt
+  COMPILE_OPTIONS
+    ${libc_opt_high_flag}
+)
+
+add_fp_unittest(
+  generic_sqrtf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    generic_sqrtf128_test.cpp
+  HDRS
+    SqrtTest.h
+  DEPENDS
+    # The dependency on sqrtf128 is used to disable the test when float128
+    # support is not available.
+    libc.src.math.sqrtf128
+    libc.src.__support.FPUtil.generic.sqrt
+  COMPILE_OPTIONS
+    ${libc_opt_high_flag}
+)
+
+add_fp_unittest(
+  remquof_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    remquof_test.cpp
+  HDRS
+    RemQuoTest.h
+  DEPENDS
+    libc.src.math.remquof
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  remquof128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    remquof128_test.cpp
+  HDRS
+    RemQuoTest.h
+  DEPENDS
+    libc.src.math.remquof128
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  remquo_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    remquo_test.cpp
+  HDRS
+    RemQuoTest.h
+  DEPENDS
+    libc.src.math.remquo
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  remquol_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    remquol_test.cpp
+  HDRS
+    RemQuoTest.h
+  DEPENDS
+    libc.src.math.remquol
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  remquof16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    remquof16_test.cpp
+  HDRS
+    RemQuoTest.h
+  DEPENDS
+    libc.src.math.remquof16
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  remquobf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    remquobf16_test.cpp
+  HDRS
+    RemQuoTest.h
+  DEPENDS
+    libc.src.math.remquobf16
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  hypotf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    hypotf_test.cpp
+  HDRS
+    HypotTest.h
+  DEPENDS
+    libc.src.math.hypotf
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.macros.properties.architectures
+)
+
+add_fp_unittest(
+  hypotf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    hypotf16_test.cpp
+  HDRS
+    HypotTest.h
+  DEPENDS
+    libc.src.math.hypotf16
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  hypot_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    hypot_test.cpp
+  HDRS
+    HypotTest.h
+  DEPENDS
+    libc.src.math.hypot
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.macros.properties.architectures
+)
+
+add_fp_unittest(
+  nanf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    nanf_test.cpp
+  DEPENDS
+    libc.hdr.signal_macros
+    libc.src.math.nanf
+    libc.src.__support.FPUtil.fp_bits
+  # FIXME: The nan tests currently have death tests, which aren't supported for
+  # hermetic tests.
+  UNIT_TEST_ONLY
+)
+
+add_fp_unittest(
+  nan_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    nan_test.cpp
+  DEPENDS
+    libc.hdr.signal_macros
+    libc.src.math.nan
+    libc.src.__support.FPUtil.fp_bits
+  # FIXME: The nan tests currently have death tests, which aren't supported for
+  # hermetic tests.
+  UNIT_TEST_ONLY
+)
+
+add_fp_unittest(
+  nanl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    nanl_test.cpp
+  DEPENDS
+    libc.hdr.signal_macros
+    libc.src.math.nanl
+    libc.src.__support.FPUtil.fp_bits
+  # FIXME: The nan tests currently have death tests, which aren't supported for
+  # hermetic tests.
+  UNIT_TEST_ONLY
+)
+
+add_fp_unittest(
+  nanf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    nanf16_test.cpp
+  DEPENDS
+    libc.hdr.signal_macros
+    libc.src.math.nanf16
+    libc.src.__support.FPUtil.fp_bits
+  # FIXME: The nan tests currently have death tests, which aren't supported for
+  # hermetic tests.
+  UNIT_TEST_ONLY
+)
+
+add_fp_unittest(
+  nanf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    nanf128_test.cpp
+  DEPENDS
+    libc.hdr.signal_macros
+    libc.src.math.nanf128
+    libc.src.__support.FPUtil.fp_bits
+  # FIXME: The nan tests currently have death tests, which aren't supported for
+  # hermetic tests.
+  UNIT_TEST_ONLY
+)
+
+add_fp_unittest(
+  nanbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    nanbf16_test.cpp
+  DEPENDS
+    libc.hdr.signal_macros
+    libc.src.math.nanbf16
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.FPUtil.fp_bits
+  # FIXME: The nan tests currently have death tests, which aren't supported for
+  # hermetic tests.
+  UNIT_TEST_ONLY
+)
+
+add_fp_unittest(
+  nearbyint_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    nearbyint_test.cpp
+  HDRS
+    NearbyIntTest.h
+  DEPENDS
+    libc.hdr.fenv_macros
+    libc.src.math.nearbyint
+)
+
+add_fp_unittest(
+  nearbyintf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    nearbyintf_test.cpp
+  HDRS
+    NearbyIntTest.h
+  DEPENDS
+    libc.hdr.fenv_macros
+    libc.src.math.nearbyintf
+)
+
+add_fp_unittest(
+  nearbyintl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    nearbyintl_test.cpp
+  HDRS
+    NearbyIntTest.h
+  DEPENDS
+    libc.hdr.fenv_macros
+    libc.src.math.nearbyintl
+)
+
+add_fp_unittest(
+  nearbyintf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    nearbyintf16_test.cpp
+  HDRS
+    NearbyIntTest.h
+  DEPENDS
+    libc.hdr.fenv_macros
+    libc.src.math.nearbyintf16
+)
+
+add_fp_unittest(
+  nearbyintf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    nearbyintf128_test.cpp
+  HDRS
+    NearbyIntTest.h
+  DEPENDS
+    libc.hdr.fenv_macros
+    libc.src.math.nearbyintf128
+)
+
+add_fp_unittest(
+  nearbyintbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    nearbyintbf16_test.cpp
+  HDRS
+    NearbyIntTest.h
+  DEPENDS
+    libc.hdr.fenv_macros
+    libc.src.math.nearbyintbf16
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  nextafter_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    nextafter_test.cpp
+  HDRS
+    NextAfterTest.h
+  DEPENDS
+    libc.hdr.fenv_macros
+    libc.src.math.nextafter
+    libc.src.__support.CPP.bit
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  nextafterf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    nextafterf_test.cpp
+  HDRS
+    NextAfterTest.h
+  DEPENDS
+    libc.hdr.fenv_macros
+    libc.src.math.nextafterf
+    libc.src.__support.CPP.bit
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  nextafterl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    nextafterl_test.cpp
+  HDRS
+    NextAfterTest.h
+  DEPENDS
+    libc.hdr.fenv_macros
+    libc.src.math.nextafterl
+    libc.src.__support.CPP.bit
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  nextafterf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    nextafterf16_test.cpp
+  HDRS
+    NextAfterTest.h
+  DEPENDS
+    libc.hdr.fenv_macros
+    libc.src.math.nextafterf16
+    libc.src.__support.CPP.bit
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  nextafterf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    nextafterf128_test.cpp
+  HDRS
+    NextAfterTest.h
+  DEPENDS
+    libc.hdr.fenv_macros
+    libc.src.math.nextafterf128
+    libc.src.__support.CPP.bit
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  nextafterbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    nextafterbf16_test.cpp
+  HDRS
+    NextAfterTest.h
+  DEPENDS
+    libc.hdr.fenv_macros
+    libc.src.math.nextafterbf16
+    libc.src.__support.CPP.bit
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+# FIXME: These tests are currently spurious for the GPU.
+if(NOT LIBC_TARGET_OS_IS_GPU)
+  add_fp_unittest(
+    nexttoward_test
+    SUITE
+      libc-math-smoke-tests
+    SRCS
+      nexttoward_test.cpp
+    HDRS
+      NextTowardTest.h
+    DEPENDS
+      libc.hdr.fenv_macros
+      libc.src.math.nexttoward
+      libc.src.__support.CPP.bit
+      libc.src.__support.FPUtil.fenv_impl
+      libc.src.__support.FPUtil.fp_bits
+  )
+
+  add_fp_unittest(
+    nexttowardf_test
+    SUITE
+      libc-math-smoke-tests
+    SRCS
+      nexttowardf_test.cpp
+    HDRS
+      NextTowardTest.h
+    DEPENDS
+      libc.hdr.fenv_macros
+      libc.src.math.nexttowardf
+      libc.src.__support.CPP.bit
+      libc.src.__support.FPUtil.fenv_impl
+      libc.src.__support.FPUtil.fp_bits
+  )
+endif()
+
+add_fp_unittest(
+  nexttowardl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    nexttowardl_test.cpp
+  HDRS
+    NextTowardTest.h
+  DEPENDS
+    libc.hdr.fenv_macros
+    libc.src.math.nexttowardl
+    libc.src.__support.CPP.bit
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  nexttowardf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    nexttowardf16_test.cpp
+  HDRS
+    NextTowardTest.h
+  DEPENDS
+    libc.hdr.fenv_macros
+    libc.src.math.nexttowardf16
+    libc.src.__support.CPP.bit
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  nexttowardbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    nexttowardbf16_test.cpp
+  HDRS
+    NextTowardTest.h
+  DEPENDS
+    libc.hdr.fenv_macros
+    libc.src.math.nexttowardbf16
+    libc.src.__support.CPP.bit
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  nextdown_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    nextdown_test.cpp
+  HDRS
+    NextDownTest.h
+  DEPENDS
+    libc.src.math.nextdown
+)
+
+add_fp_unittest(
+  nextdownf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    nextdownf_test.cpp
+  HDRS
+    NextDownTest.h
+  DEPENDS
+    libc.src.math.nextdownf
+)
+
+add_fp_unittest(
+  nextdownl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    nextdownl_test.cpp
+  HDRS
+    NextDownTest.h
+  DEPENDS
+    libc.src.math.nextdownl
+)
+
+add_fp_unittest(
+  nextdownf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    nextdownf16_test.cpp
+  HDRS
+    NextDownTest.h
+  DEPENDS
+    libc.src.math.nextdownf16
+)
+
+add_fp_unittest(
+  nextdownf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    nextdownf128_test.cpp
+  HDRS
+    NextDownTest.h
+  DEPENDS
+    libc.src.math.nextdownf128
+)
+
+add_fp_unittest(
+  nextdownbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    nextdownbf16_test.cpp
+  HDRS
+    NextDownTest.h
+  DEPENDS
+    libc.src.math.nextdownbf16
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  nextup_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    nextup_test.cpp
+  HDRS
+    NextUpTest.h
+  DEPENDS
+    libc.src.math.nextup
+)
+
+add_fp_unittest(
+  nextupf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    nextupf_test.cpp
+  HDRS
+    NextUpTest.h
+  DEPENDS
+    libc.src.math.nextupf
+)
+
+add_fp_unittest(
+  nextupl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    nextupl_test.cpp
+  HDRS
+    NextUpTest.h
+  DEPENDS
+    libc.src.math.nextupl
+)
+
+add_fp_unittest(
+  nextupf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    nextupf16_test.cpp
+  HDRS
+    NextUpTest.h
+  DEPENDS
+    libc.src.math.nextupf16
+)
+
+add_fp_unittest(
+  nextupf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    nextupf128_test.cpp
+  HDRS
+    NextUpTest.h
+  DEPENDS
+    libc.src.math.nextupf128
+)
+
+add_fp_unittest(
+  nextupbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    nextupbf16_test.cpp
+  HDRS
+    NextUpTest.h
+  DEPENDS
+    libc.src.math.nextupbf16
+    libc.src.__support.FPUtil.bfloat16
+)
+
+# TODO(lntue): The current implementation of fputil::general::fma<float> is only
+# correctly rounded for the default rounding mode round-to-nearest tie-to-even.
+add_fp_unittest(
+  fmaf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fmaf_test.cpp
+  HDRS
+    FmaTest.h
+  DEPENDS
+    libc.src.math.fmaf
+    libc.src.__support.macros.properties.types
+)
+
+add_fp_unittest(
+  fmaf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fmaf16_test.cpp
+  HDRS
+    FmaTest.h
+  DEPENDS
+    libc.src.math.fmaf16
+    libc.src.__support.FPUtil.cast
+)
+
+add_fp_unittest(
+  fmabf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fmabf16_test.cpp
+  HDRS
+    FmaTest.h
+  DEPENDS
+    libc.src.math.fmabf16
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  fma_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fma_test.cpp
+  HDRS
+    FmaTest.h
+  DEPENDS
+    libc.src.math.fma
+    libc.src.__support.macros.properties.types
+)
+
+add_fp_unittest(
+  expm1_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    expm1_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.expm1
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  expm1f_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    expm1f_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.expm1f
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  expm1f16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    expm1f16_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.expm1f16
+    libc.src.__support.FPUtil.cast
+)
+
+add_fp_unittest(
+  log_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    log_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.log
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  logf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    logf_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.logf
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  logf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    logf16_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.logf16
+    libc.src.__support.FPUtil.cast
+)
+
+add_fp_unittest(
+  log_bf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    log_bf16_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.log_bf16
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  log2_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    log2_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.log2
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  log2f_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    log2f_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.log2f
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  log2f16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    log2f16_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.log2f16
+    libc.src.__support.FPUtil.cast
+)
+
+add_fp_unittest(
+  log10_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    log10_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.log10
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  log10f_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    log10f_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.log10f
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  log10f16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    log10f16_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.log10f16
+    libc.src.__support.FPUtil.cast
+)
+
+add_fp_unittest(
+  log1p_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    log1p_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.log1p
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  log1pf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    log1pf_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.log1pf
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  fmodf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fmodf_test.cpp
+  HDRS
+    FModTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.fmodf
+    libc.src.__support.FPUtil.fenv_impl
+  # FIXME: Currently fails on the GPU build.
+  UNIT_TEST_ONLY
+)
+
+add_fp_unittest(
+  fmod_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fmod_test.cpp
+  HDRS
+    FModTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.fmod
+    libc.src.__support.FPUtil.fenv_impl
+  # FIXME: Currently fails on the GPU build.
+  UNIT_TEST_ONLY
+)
+
+add_fp_unittest(
+  fmodl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fmodl_test.cpp
+  HDRS
+    FModTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.fmodl
+    libc.src.__support.FPUtil.fenv_impl
+  # FIXME: Currently fails on the GPU build.
+  UNIT_TEST_ONLY
+)
+
+add_fp_unittest(
+  fmodf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fmodf16_test.cpp
+  HDRS
+    FModTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.fmodf16
+    libc.src.__support.FPUtil.fenv_impl
+  # FIXME: Currently fails on the GPU build.
+  UNIT_TEST_ONLY
+)
+
+add_fp_unittest(
+  fmodf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fmodf128_test.cpp
+  HDRS
+    FModTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.fmodf128
+    libc.src.__support.FPUtil.fenv_impl
+  # FIXME: Currently fails on the GPU build.
+  UNIT_TEST_ONLY
+)
+
+add_fp_unittest(
+  fmodbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fmodbf16_test.cpp
+  HDRS
+    FModTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.fmodbf16
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.FPUtil.fenv_impl
+  UNIT_TEST_ONLY
+)
+
+add_fp_unittest(
+  coshf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    coshf_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.coshf
+    libc.src.__support.CPP.array
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  coshf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    coshf16_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.coshf16
+    libc.src.__support.FPUtil.cast
+)
+
+add_fp_unittest(
+  sinhf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    sinhf_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.sinhf
+    libc.src.__support.CPP.array
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  sinhf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    sinhf16_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.sinhf16
+    libc.src.__support.FPUtil.cast
+)
+
+add_fp_unittest(
+  tanhf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    tanhf_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.tanhf
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  tanhf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    tanhf16_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.tanhf16
+    libc.src.__support.FPUtil.cast
+)
+
+add_fp_unittest(
+  atanhf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    atanhf_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.atanhf
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  atanhf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    atanhf16_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.atanhf16
+    libc.src.__support.FPUtil.cast
+)
+
+add_fp_unittest(
+  atanpif16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    atanpif16_test.cpp
+  DEPENDS
+    libc.src.math.atanpif16
+)
+
+add_fp_unittest(
+  asinhf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    asinhf_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.asinhf
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  asinhf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    asinhf16_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.asinhf16
+)
+
+add_fp_unittest(
+  asinpif16_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    asinpif16_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.asinpif16
+)
+
+add_fp_unittest(
+  acoshf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    acoshf_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.acoshf
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  acoshf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    acoshf16_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.acoshf16
+    libc.src.__support.FPUtil.cast
+)
+
+add_fp_unittest(
+  asinf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    asinf_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.asinf
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  asin_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    asin_test.cpp
+  DEPENDS
+    libc.src.math.asin
+)
+
+add_fp_unittest(
+  asinf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    asinf16_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.asinf16
+)
+
+add_fp_unittest(
+  acosf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    acosf_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.acosf
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  acos_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    acos_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.acos
+)
+
+add_fp_unittest(
+  acosf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    acosf16_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.acosf16
+)
+
+add_fp_unittest(
+  acospif16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    acospif16_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.acospif16
+)
+
+add_fp_unittest(
+  atanf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    atanf_test.cpp
+  DEPENDS
+    libc.src.math.atanf
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  atan_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    atan_test.cpp
+  DEPENDS
+    libc.src.math.atan
+)
+
+add_fp_unittest(
+  atanf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    atanf16_test.cpp
+  DEPENDS
+    libc.src.math.atanf16
+)
+
+add_fp_unittest(
+  atan2f_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    atan2f_test.cpp
+  DEPENDS
+    libc.src.math.atan2f
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  atan2_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    atan2_test.cpp
+  DEPENDS
+    libc.src.math.atan2
+)
+
+add_fp_unittest(
+  atan2f128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    atan2f128_test.cpp
+  DEPENDS
+    libc.src.math.atan2f128
+)
+
+add_fp_unittest(
+  scalbln_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    scalbln_test.cpp
+  HDRS
+    ScalbnTest.h
+  DEPENDS
+    libc.src.math.scalbln
+    libc.src.__support.CPP.limits
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.normal_float
+)
+
+add_fp_unittest(
+  scalblnf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    scalblnf_test.cpp
+  HDRS
+    ScalbnTest.h
+  DEPENDS
+    libc.src.math.scalblnf
+    libc.src.__support.CPP.limits
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.normal_float
+)
+
+add_fp_unittest(
+  scalblnl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    scalblnl_test.cpp
+  HDRS
+    ScalbnTest.h
+  DEPENDS
+    libc.src.math.scalblnl
+    libc.src.__support.CPP.limits
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.normal_float
+)
+
+add_fp_unittest(
+  scalblnf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    scalblnf16_test.cpp
+  HDRS
+    ScalbnTest.h
+  DEPENDS
+    libc.src.math.scalblnf16
+    libc.src.__support.CPP.limits
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.normal_float
+)
+
+add_fp_unittest(
+  scalblnf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    scalblnf128_test.cpp
+  HDRS
+    ScalbnTest.h
+  DEPENDS
+    libc.src.math.scalblnf128
+    libc.src.__support.CPP.limits
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.normal_float
+)
+
+add_fp_unittest(
+  scalblnbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    scalblnbf16_test.cpp
+  HDRS
+    ScalbnTest.h
+  DEPENDS
+    libc.src.math.scalblnbf16
+    libc.src.__support.CPP.limits
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.normal_float
+)
+
+add_fp_unittest(
+  scalbn_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    scalbn_test.cpp
+  HDRS
+    ScalbnTest.h
+  DEPENDS
+    libc.src.math.scalbn
+    libc.src.__support.CPP.limits
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.normal_float
+)
+
+add_fp_unittest(
+  scalbnf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    scalbnf_test.cpp
+  HDRS
+    ScalbnTest.h
+  DEPENDS
+    libc.src.math.scalbnf
+    libc.src.__support.CPP.limits
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.normal_float
+)
+
+add_fp_unittest(
+  scalbnl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    scalbnl_test.cpp
+  HDRS
+    ScalbnTest.h
+  DEPENDS
+    libc.src.math.scalbnl
+    libc.src.__support.CPP.limits
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.normal_float
+)
+
+add_fp_unittest(
+  scalbnf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    scalbnf16_test.cpp
+  HDRS
+    ScalbnTest.h
+  DEPENDS
+    libc.src.math.scalbnf16
+    libc.src.__support.CPP.limits
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.normal_float
+)
+
+add_fp_unittest(
+  scalbnf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    scalbnf128_test.cpp
+  HDRS
+    ScalbnTest.h
+  DEPENDS
+    libc.src.math.scalbnf128
+    libc.src.__support.CPP.limits
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.normal_float
+)
+
+add_fp_unittest(
+  scalbnbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    scalbnbf16_test.cpp
+  HDRS
+    ScalbnTest.h
+  DEPENDS
+    libc.src.math.scalbnbf16
+    libc.src.__support.CPP.limits
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.normal_float
+)
+
+add_fp_unittest(
+  erff_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    erff_test.cpp
+  DEPENDS
+    libc.src.math.erff
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  pow_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    pow_test.cpp
+  DEPENDS
+    libc.hdr.fenv_macros
+    libc.src.math.pow
+)
+
+add_fp_unittest(
+  powf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    powf_test.cpp
+  DEPENDS
+    libc.src.math.powf
+    libc.src.__support.FPUtil.fp_bits
+)
+
+add_fp_unittest(
+  totalorder_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    totalorder_test.cpp
+  HDRS
+    TotalOrderTest.h
+  DEPENDS
+    libc.src.math.totalorder
+)
+
+add_fp_unittest(
+  totalorderf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    totalorderf_test.cpp
+  HDRS
+    TotalOrderTest.h
+  DEPENDS
+    libc.src.math.totalorderf
+)
+
+add_fp_unittest(
+  totalorderl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    totalorderl_test.cpp
+  HDRS
+    TotalOrderTest.h
+  DEPENDS
+    libc.src.math.totalorderl
+)
+
+add_fp_unittest(
+  totalorderf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    totalorderf16_test.cpp
+  HDRS
+    TotalOrderTest.h
+  DEPENDS
+    libc.src.math.totalorderf16
+)
+
+add_fp_unittest(
+  totalorderf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    totalorderf128_test.cpp
+  HDRS
+    TotalOrderTest.h
+  DEPENDS
+    libc.src.math.totalorderf128
+)
+
+add_fp_unittest(
+  totalorderbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    totalorderbf16_test.cpp
+  HDRS
+    TotalOrderTest.h
+  DEPENDS
+    libc.src.math.totalorderbf16
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  totalordermag_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    totalordermag_test.cpp
+  HDRS
+    TotalOrderMagTest.h
+  DEPENDS
+    libc.src.math.totalordermag
+)
+
+add_fp_unittest(
+  totalordermagf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    totalordermagf_test.cpp
+  HDRS
+    TotalOrderMagTest.h
+  DEPENDS
+    libc.src.math.totalordermagf
+)
+
+add_fp_unittest(
+  totalordermagl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    totalordermagl_test.cpp
+  HDRS
+    TotalOrderMagTest.h
+  DEPENDS
+    libc.src.math.totalordermagl
+)
+
+add_fp_unittest(
+  totalordermagf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    totalordermagf16_test.cpp
+  HDRS
+    TotalOrderMagTest.h
+  DEPENDS
+    libc.src.math.totalordermagf16
+)
+
+add_fp_unittest(
+  totalordermagf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    totalordermagf128_test.cpp
+  HDRS
+    TotalOrderMagTest.h
+  DEPENDS
+    libc.src.math.totalordermagf128
+)
+
+add_fp_unittest(
+  totalordermagbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    totalordermagbf16_test.cpp
+  HDRS
+    TotalOrderMagTest.h
+  DEPENDS
+    libc.src.math.totalordermagbf16
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  getpayload_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    getpayload_test.cpp
+  HDRS
+    GetPayloadTest.h
+  DEPENDS
+    libc.src.math.getpayload
+)
+
+add_fp_unittest(
+  getpayloadf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    getpayloadf_test.cpp
+  HDRS
+    GetPayloadTest.h
+  DEPENDS
+    libc.src.math.getpayloadf
+)
+
+add_fp_unittest(
+  getpayloadl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    getpayloadl_test.cpp
+  HDRS
+    GetPayloadTest.h
+  DEPENDS
+    libc.src.math.getpayloadl
+)
+
+add_fp_unittest(
+  getpayloadf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    getpayloadf16_test.cpp
+  HDRS
+    GetPayloadTest.h
+  DEPENDS
+    libc.src.math.getpayloadf16
+)
+
+add_fp_unittest(
+  getpayloadf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    getpayloadf128_test.cpp
+  HDRS
+    GetPayloadTest.h
+  DEPENDS
+    libc.src.math.getpayloadf128
+)
+
+add_fp_unittest(
+  getpayloadbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    getpayloadbf16_test.cpp
+  HDRS
+    GetPayloadTest.h
+  DEPENDS
+    libc.src.math.getpayloadbf16
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  setpayload_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    setpayload_test.cpp
+  HDRS
+    SetPayloadTest.h
+  DEPENDS
+    libc.src.math.setpayload
+)
+
+add_fp_unittest(
+  setpayloadf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    setpayloadf_test.cpp
+  HDRS
+    SetPayloadTest.h
+  DEPENDS
+    libc.src.math.setpayloadf
+)
+
+add_fp_unittest(
+  setpayloadl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    setpayloadl_test.cpp
+  HDRS
+    SetPayloadTest.h
+  DEPENDS
+    libc.src.math.setpayloadl
+)
+
+add_fp_unittest(
+  setpayloadf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    setpayloadf16_test.cpp
+  HDRS
+    SetPayloadTest.h
+  DEPENDS
+    libc.src.math.setpayloadf16
+)
+
+add_fp_unittest(
+  setpayloadf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    setpayloadf128_test.cpp
+  HDRS
+    SetPayloadTest.h
+  DEPENDS
+    libc.src.math.setpayloadf128
+)
+
+add_fp_unittest(
+  setpayloadbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    setpayloadbf16_test.cpp
+  HDRS
+    SetPayloadTest.h
+  DEPENDS
+    libc.src.math.setpayloadbf16
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  setpayloadsig_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    setpayloadsig_test.cpp
+  HDRS
+    SetPayloadSigTest.h
+  DEPENDS
+    libc.src.math.setpayloadsig
+)
+
+add_fp_unittest(
+  setpayloadsigf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    setpayloadsigf_test.cpp
+  HDRS
+    SetPayloadSigTest.h
+  DEPENDS
+    libc.src.math.setpayloadsigf
+)
+
+add_fp_unittest(
+  setpayloadsigl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    setpayloadsigl_test.cpp
+  HDRS
+    SetPayloadSigTest.h
+  DEPENDS
+    libc.src.math.setpayloadsigl
+)
+
+add_fp_unittest(
+  setpayloadsigf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    setpayloadsigf16_test.cpp
+  HDRS
+    SetPayloadSigTest.h
+  DEPENDS
+    libc.src.math.setpayloadsigf16
+)
+
+add_fp_unittest(
+  setpayloadsigf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    setpayloadsigf128_test.cpp
+  HDRS
+    SetPayloadSigTest.h
+  DEPENDS
+    libc.src.math.setpayloadsigf128
+)
+
+add_fp_unittest(
+  setpayloadsigbf16_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    setpayloadsigbf16_test.cpp
+  HDRS
+    SetPayloadTest.h
+  DEPENDS
+    libc.src.math.setpayloadsigbf16
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  f16add_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    f16add_test.cpp
+  HDRS
+    AddTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.f16add
+    libc.src.__support.macros.properties.os
+)
+
+add_fp_unittest(
+  f16addf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    f16addf_test.cpp
+  HDRS
+    AddTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.f16addf
+    libc.src.__support.macros.properties.os
+)
+
+add_fp_unittest(
+  f16addl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    f16addl_test.cpp
+  HDRS
+    AddTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.f16addl
+    libc.src.__support.macros.properties.os
+)
+
+add_fp_unittest(
+  f16addf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    f16addf128_test.cpp
+  HDRS
+    AddTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.f16addf128
+    libc.src.__support.macros.properties.os
+)
+
+add_fp_unittest(
+  f16sub_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    f16sub_test.cpp
+  HDRS
+    SubTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.f16sub
+    libc.src.__support.macros.properties.os
+)
+
+add_fp_unittest(
+  f16subf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    f16subf_test.cpp
+  HDRS
+    SubTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.f16subf
+    libc.src.__support.macros.properties.os
+)
+
+add_fp_unittest(
+  f16subl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    f16subl_test.cpp
+  HDRS
+    SubTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.f16subl
+    libc.src.__support.macros.properties.os
+)
+
+add_fp_unittest(
+  f16subf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    f16subf128_test.cpp
+  HDRS
+    SubTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.f16subf128
+    libc.src.__support.macros.properties.os
+)
+
+add_fp_unittest(
+  f16div_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    f16div_test.cpp
+  HDRS
+    DivTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.f16div
+)
+
+add_fp_unittest(
+  f16divf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    f16divf_test.cpp
+  HDRS
+    DivTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.f16divf
+)
+
+add_fp_unittest(
+  f16divl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    f16divl_test.cpp
+  HDRS
+    DivTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.f16divl
+)
+
+add_fp_unittest(
+  f16divf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    f16divf128_test.cpp
+  HDRS
+    DivTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.f16divf128
+)
+
+add_fp_unittest(
+  f16fma_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    f16fma_test.cpp
+  HDRS
+    FmaTest.h
+  DEPENDS
+    libc.src.math.f16fma
+    libc.src.__support.macros.properties.types
+)
+
+add_fp_unittest(
+  f16fmaf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    f16fmaf_test.cpp
+  HDRS
+    FmaTest.h
+  DEPENDS
+    libc.src.math.f16fmaf
+    libc.src.__support.macros.properties.types
+)
+
+add_fp_unittest(
+  f16fmal_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    f16fmal_test.cpp
+  HDRS
+    FmaTest.h
+  DEPENDS
+    libc.src.math.f16fmal
+    libc.src.__support.macros.properties.types
+)
+
+add_fp_unittest(
+  f16fmaf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    f16fmaf128_test.cpp
+  HDRS
+    FmaTest.h
+  DEPENDS
+    libc.src.math.f16fmaf128
+    libc.src.__support.macros.properties.types
+)
+
+add_fp_unittest(
+  f16sqrt_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    f16sqrt_test.cpp
+  HDRS
+    SqrtTest.h
+  DEPENDS
+    libc.src.math.f16sqrt
+)
+
+add_fp_unittest(
+  f16sqrtf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    f16sqrtf_test.cpp
+  HDRS
+    SqrtTest.h
+  DEPENDS
+    libc.src.math.f16sqrtf
+)
+
+add_fp_unittest(
+  f16sqrtl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    f16sqrtl_test.cpp
+  HDRS
+    SqrtTest.h
+  DEPENDS
+    libc.src.math.f16sqrtl
+)
+
+add_fp_unittest(
+  f16sqrtf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    f16sqrtf128_test.cpp
+  HDRS
+    SqrtTest.h
+  DEPENDS
+    libc.src.math.f16sqrtf128
+)
+
+add_fp_unittest(
+  fdiv_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fdiv_test.cpp
+  HDRS
+    DivTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.fdiv
+)
+
+add_fp_unittest(
+  fdivl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fdivl_test.cpp
+  HDRS
+    DivTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.fdivl
+)
+
+add_fp_unittest(
+  fdivf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fdivf128_test.cpp
+  HDRS
+    DivTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.fdivf128
+)
+
+add_fp_unittest(
+  ffma_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    ffma_test.cpp
+  HDRS
+    FmaTest.h
+  DEPENDS
+    libc.src.math.ffma
+    libc.src.__support.macros.properties.types
+)
+
+add_fp_unittest(
+  ffmal_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    ffmal_test.cpp
+  HDRS
+    FmaTest.h
+  DEPENDS
+    libc.src.math.ffmal
+    libc.src.__support.macros.properties.types
+)
+
+add_fp_unittest(
+  ffmaf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    ffmaf128_test.cpp
+  HDRS
+    FmaTest.h
+  DEPENDS
+    libc.src.math.ffmaf128
+    libc.src.__support.macros.properties.types
+)
+
+add_fp_unittest(
+  fsqrt_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fsqrt_test.cpp
+  HDRS
+    SqrtTest.h
+  DEPENDS
+    libc.src.math.fsqrt
+)
+
+
+add_fp_unittest(
+  fsqrtl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fsqrtl_test.cpp
+  HDRS
+    SqrtTest.h
+  DEPENDS
+    libc.src.math.fsqrtl
+)
+
+add_fp_unittest(
+  fsqrtf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fsqrtf128_test.cpp
+  HDRS
+    SqrtTest.h
+  DEPENDS
+    libc.src.math.fsqrtf128
+)
+
+add_fp_unittest(
+  fsub_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fsub_test.cpp
+  HDRS
+    SubTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.fsub
+    libc.src.__support.macros.properties.os
+)
+
+add_fp_unittest(
+  fsubl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fsubl_test.cpp
+  HDRS
+    SubTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.fsubl
+    libc.src.__support.macros.properties.os
+)
+
+add_fp_unittest(
+  fsubf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fsubf128_test.cpp
+  HDRS
+    SubTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.fsubf128
+    libc.src.__support.macros.properties.os
+)
+
+add_fp_unittest(
+  dsqrtl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    dsqrtl_test.cpp
+  HDRS
+    SqrtTest.h
+  DEPENDS
+    libc.src.math.dsqrtl
+)
+
+add_fp_unittest(
+  dsqrtf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    dsqrtf128_test.cpp
+  HDRS
+    SqrtTest.h
+  DEPENDS
+    libc.src.math.dsqrtf128
+)
+
+add_fp_unittest(
+  sin_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    sin_test.cpp
+  DEPENDS
+    libc.src.math.sin
+)
+
+add_fp_unittest(
+  cos_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    cos_test.cpp
+  DEPENDS
+    libc.src.math.cos
+)
+
+add_fp_unittest(
+  sincos_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    sincos_test.cpp
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.src.math.sincos
+)
+
+add_fp_unittest(
+  tan_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    tan_test.cpp
+  DEPENDS
+    libc.src.math.tan
+)
+
+add_fp_unittest(
+  cbrtf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    cbrtf_test.cpp
+  DEPENDS
+    libc.src.math.cbrtf
+)
+
+add_fp_unittest(
+  cbrt_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    cbrt_test.cpp
+  DEPENDS
+    libc.src.math.cbrt
+)
+
+add_fp_unittest(
+  dmull_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    dmull_test.cpp
+  HDRS
+    MulTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.math.dmull
+)
+
+add_fp_unittest(
+  f16mul_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    f16mul_test.cpp
+  HDRS
+    MulTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.math.f16mul
+)
+
+add_fp_unittest(
+  f16mulf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    f16mulf_test.cpp
+  HDRS
+    MulTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.math.f16mulf
+)
+
+add_fp_unittest(
+  f16mull_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    f16mull_test.cpp
+  HDRS
+    MulTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.math.f16mull
+)
+
+add_fp_unittest(
+  f16mulf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    f16mulf128_test.cpp
+  HDRS
+    MulTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.math.f16mulf128
+)
+
+add_fp_unittest(
+  daddl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    daddl_test.cpp
+  HDRS
+    AddTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.daddl
+    libc.src.__support.macros.properties.os
+)
+
+add_fp_unittest(
+  daddf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    daddf128_test.cpp
+  HDRS
+    AddTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.daddf128
+    libc.src.__support.macros.properties.os
+)
+
+add_fp_unittest(
+  ddivl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    ddivl_test.cpp
+  HDRS
+    DivTest.h
+  DEPENDS
+    libc.src.math.ddivl
+)
+
+add_fp_unittest(
+  ddivf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    ddivf128_test.cpp
+  HDRS
+    DivTest.h
+  DEPENDS
+    libc.src.math.ddivf128
+)
+
+add_fp_unittest(
+  bfloat16_add_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    bfloat16_add_test.cpp
+  HDRS
+    AddTest.h
+  DEPENDS
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.FPUtil.generic.add_sub
+    libc.src.__support.macros.properties.os
+    libc.src.__support.macros.properties.types
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+)
+
+add_fp_unittest(
+  bfloat16_div_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    bfloat16_div_test.cpp
+  HDRS
+    DivTest.h
+  DEPENDS
+    libc.src.__support.FPUtil.bfloat16
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+)
+
+add_fp_unittest(
+  bfloat16_mul_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    bfloat16_mul_test.cpp
+  HDRS
+    MulTest.h
+  DEPENDS
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.bfloat16
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+)
+
+add_fp_unittest(
+  bfloat16_sub_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    bfloat16_sub_test.cpp
+  HDRS
+    SubTest.h
+  DEPENDS
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.FPUtil.generic.add_sub
+    libc.src.__support.macros.properties.os
+    libc.src.__support.macros.properties.types
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+)
+
+add_fp_unittest(
+  add_same_type_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    add_same_type_test.cpp
+  HDRS
+    AddTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.__support.FPUtil.generic.add_sub
+    libc.src.__support.macros.properties.os
+    libc.src.__support.macros.properties.types
+)
+
+add_fp_unittest(
+  sub_same_type_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    sub_same_type_test.cpp
+  HDRS
+    SubTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.__support.FPUtil.generic.add_sub
+    libc.src.__support.macros.properties.os
+    libc.src.__support.macros.properties.types
+)
+
+add_fp_unittest(
+  bf16add_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    bf16add_test.cpp
+  HDRS
+    AddTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.bf16add
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.macros.properties.os
+)
+
+add_fp_unittest(
+  bf16addf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    bf16addf_test.cpp
+  HDRS
+    AddTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.bf16addf
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.macros.properties.os
+)
+
+add_fp_unittest(
+  bf16addl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    bf16addl_test.cpp
+  HDRS
+    AddTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.bf16addl
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.macros.properties.os
+)
+
+add_fp_unittest(
+  bf16addf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    bf16addf128_test.cpp
+  HDRS
+    AddTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.bf16addf128
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.macros.properties.os
+)
+
+add_fp_unittest(
+  bf16fma_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    bf16fma_test.cpp
+  HDRS
+    FmaTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.bf16fma
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  bf16fmaf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    bf16fmaf_test.cpp
+  HDRS
+    FmaTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.bf16fmaf
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  bf16fmal_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    bf16fmal_test.cpp
+  HDRS
+    FmaTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.bf16fmal
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  bf16fmaf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    bf16fmaf128_test.cpp
+  HDRS
+    FmaTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.bf16fmaf128
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  bf16div_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    bf16div_test.cpp
+  HDRS
+    DivTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.bf16div
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  bf16divf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    bf16divf_test.cpp
+  HDRS
+    DivTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.bf16divf
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  bf16divl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    bf16divl_test.cpp
+  HDRS
+    DivTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.bf16divl
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  bf16divf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    bf16divf128_test.cpp
+  HDRS
+    DivTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.bf16divf128
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  bf16mul_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    bf16mul_test.cpp
+  HDRS
+    MulTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.bf16mul
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  bf16mulf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    bf16mulf_test.cpp
+  HDRS
+    MulTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.bf16mulf
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  bf16mull_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    bf16mull_test.cpp
+  HDRS
+    MulTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.bf16mull
+    libc.src.__support.FPUtil.bfloat16
+)
+
+add_fp_unittest(
+  bf16mulf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    bf16mulf128_test.cpp
+  HDRS
+    MulTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.bf16mulf128
+    libc.src.__support.FPUtil.bfloat16
+)
+
+
+add_fp_unittest(
+  bf16sub_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    bf16sub_test.cpp
+  HDRS
+    SubTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.bf16sub
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.macros.properties.os
+)
+
+add_fp_unittest(
+  bf16subf_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    bf16subf_test.cpp
+  HDRS
+    SubTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.bf16subf
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.macros.properties.os
+)
+
+add_fp_unittest(
+  bf16subl_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    bf16subl_test.cpp
+  HDRS
+    SubTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.bf16subl
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.macros.properties.os
+)
+
+add_fp_unittest(
+  bf16subf128_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    bf16subf128_test.cpp
+  HDRS
+    SubTest.h
+  DEPENDS
+    libc.hdr.errno_macros
+    libc.hdr.fenv_macros
+    libc.src.math.bf16subf128
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.macros.properties.os
+)

>From 5fc7d97a89c68b716511255e801509cd5d4ce82d Mon Sep 17 00:00:00 2001
From: Sukumarsawant <sawantsukumar at gmail.com>
Date: Sat, 14 Feb 2026 11:29:49 +0530
Subject: [PATCH 07/43] other than smoke test

---
 libc/test/src/math/fmabf16_test.cpp | 50 +++++++++++++++--------------
 libc/test/src/math/sqrt_test.cpp    | 26 +++++++--------
 2 files changed, 39 insertions(+), 37 deletions(-)

diff --git a/libc/test/src/math/fmabf16_test.cpp b/libc/test/src/math/fmabf16_test.cpp
index ae01948c21ca5..033d864d4aa8a 100644
--- a/libc/test/src/math/fmabf16_test.cpp
+++ b/libc/test/src/math/fmabf16_test.cpp
@@ -1,29 +1,31 @@
-// //===-- Exhaustive test for fmabf16 ---------------------------------------===//
-// //
-// // 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
-// //
-// //===----------------------------------------------------------------------===//
+//===-- Exhaustive test for fmabf16 ---------------------------------------===//
+//
+// 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 "src/__support/FPUtil/bfloat16.h"
-// #include "src/math/fmabf16.h"
-// #include "test/UnitTest/FPMatcher.h"
-// #include "test/UnitTest/Test.h"
-// #include "utils/MPFRWrapper/MPFRUtils.h"
+#include "src/__support/FPUtil/bfloat16.h"
+#include "src/math/fmabf16.h"
+#include "test/UnitTest/FPMatcher.h"
+#include "test/UnitTest/Test.h"
+#include "utils/MPFRWrapper/MPFRUtils.h"
 
-// using LlvmLibcFmabf16Test = LIBC_NAMESPACE::testing::FPTest<bfloat16>;
+using LlvmLibcFmabf16Test = LIBC_NAMESPACE::testing::FPTest<bfloat16>;
 
-// namespace mpfr = LIBC_NAMESPACE::testing::mpfr;
+namespace mpfr = LIBC_NAMESPACE::testing::mpfr;
 
-// // range: [0, inf]
-// static constexpr uint16_t POS_START = 0x0000U;
-// static constexpr uint16_t POS_STOP = 0x7f80U;
+// range: [0, inf]
+static constexpr uint16_t POS_START = 0x0000U;
+static constexpr uint16_t POS_STOP = 0x7f80U;
+
+// cover 
+// normal
+//subnormal 
+// NaN +-
+// inf +-
+// 0 +-
+
+// something better than smoke tests -> uses FmaTest.h 
 
-// TEST_F(LlvmLibcSqrtf16Test, PositiveRange) {
-//   for (uint16_t v = POS_START; v <= POS_STOP; ++v) {
-//     bfloat16 x = FPBits(v).get_val();
-//     EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Sqrt, x,
-//                                    LIBC_NAMESPACE::sqrtbf16(x), 0.5);
-//   }
-// }
diff --git a/libc/test/src/math/sqrt_test.cpp b/libc/test/src/math/sqrt_test.cpp
index 1551b31d6f715..3eebc38fe5f4d 100644
--- a/libc/test/src/math/sqrt_test.cpp
+++ b/libc/test/src/math/sqrt_test.cpp
@@ -1,13 +1,13 @@
-//===-- Unittests for sqrt ------------------------------------------------===//
-//
-// 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 "SqrtTest.h"
-
-#include "src/math/sqrt.h"
-
-LIST_SQRT_TESTS(double, LIBC_NAMESPACE::sqrt)
+//===-- Unittests for sqrt ------------------------------------------------===//
+//
+// 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 "SqrtTest.h"
+
+#include "src/math/sqrt.h"
+
+LIST_SQRT_TESTS(double, LIBC_NAMESPACE::sqrt)

>From 02dd2dcc7896a9c3626f19605e7413e4a91d6a70 Mon Sep 17 00:00:00 2001
From: Sukumarsawant <sawantsukumar at gmail.com>
Date: Sat, 21 Feb 2026 17:25:21 +0530
Subject: [PATCH 08/43] added exhaustive tests for fmabf16 (<2^32)

---
 libc/test/src/math/fmabf16_test.cpp  |   87 +-
 libc/utils/MPFRWrapper/MPFRUtils.cpp | 1696 +++++++++++++-------------
 2 files changed, 927 insertions(+), 856 deletions(-)

diff --git a/libc/test/src/math/fmabf16_test.cpp b/libc/test/src/math/fmabf16_test.cpp
index 033d864d4aa8a..ed2349f10e799 100644
--- a/libc/test/src/math/fmabf16_test.cpp
+++ b/libc/test/src/math/fmabf16_test.cpp
@@ -6,13 +6,14 @@
 //
 //===----------------------------------------------------------------------===//
 
+#include <vector>
 #include "src/__support/FPUtil/bfloat16.h"
 #include "src/math/fmabf16.h"
 #include "test/UnitTest/FPMatcher.h"
 #include "test/UnitTest/Test.h"
 #include "utils/MPFRWrapper/MPFRUtils.h"
 
-using LlvmLibcFmabf16Test = LIBC_NAMESPACE::testing::FPTest<bfloat16>;
+using LlvmLibcFmaBf16Test = LIBC_NAMESPACE::testing::FPTest<bfloat16>;
 
 namespace mpfr = LIBC_NAMESPACE::testing::mpfr;
 
@@ -20,12 +21,82 @@ namespace mpfr = LIBC_NAMESPACE::testing::mpfr;
 static constexpr uint16_t POS_START = 0x0000U;
 static constexpr uint16_t POS_STOP = 0x7f80U;
 
-// cover 
-// normal
-//subnormal 
-// NaN +-
-// inf +-
-// 0 +-
+// range: [-0, -inf]
+static constexpr uint16_t NEG_START = 0x8000U;
+static constexpr uint16_t NEG_STOP = 0xff80U; //-inf
 
-// something better than smoke tests -> uses FmaTest.h 
+//covers normal range since special cases covered in unit tests 
 
+
+
+TEST_F(LlvmLibcFmaBf16Test, PositiveRange) {
+  
+  std::vector<bfloat16> z_val = {
+      FPBits(0x0000).get_val(),
+      FPBits(0x8000).get_val(),
+      FPBits(0x3f80).get_val(),
+      FPBits(0xbf80).get_val(),
+      FPBits::min_subnormal().get_val(),
+      FPBits::max_normal().get_val(),
+      FPBits::inf().get_val(),
+      FPBits::quiet_nan().get_val()
+  };
+  for(bfloat16 z : z_val){
+    for (uint16_t v1 = POS_START; v1 <= POS_STOP; ++v1) {
+      for(uint16_t v2 = POS_START; v2<= POS_STOP; v2+=256) {
+      
+        bfloat16 x = FPBits(v1).get_val();
+        bfloat16 y = FPBits(v2).get_val();
+
+        mpfr::TernaryInput<bfloat16> input{x, y, z};
+
+        EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
+                                     LIBC_NAMESPACE::fmabf16(x, y, z), 0.5);
+      }  
+    }
+  }
+}
+
+TEST_F(LlvmLibcFmaBf16Test, NegativeRange) {
+  
+  std::vector<bfloat16> z_val = {
+      FPBits(0x0000).get_val(),
+      FPBits(0x8000).get_val(),
+      FPBits(0x3f80).get_val(),
+      FPBits(0xbf80).get_val(),
+      FPBits::min_subnormal().get_val(),
+      FPBits::max_normal().get_val(),
+      FPBits::inf().get_val(),
+      FPBits::quiet_nan().get_val()
+  };
+  for(bfloat16 z : z_val){
+    for (uint16_t v1 = NEG_START; v1 <= NEG_STOP; ++v1) {
+      for(uint16_t v2 = NEG_START; v2<= NEG_STOP; v2+=256) {
+      
+        bfloat16 x = FPBits(v1).get_val();
+        bfloat16 y = FPBits(v2).get_val();
+
+        mpfr::TernaryInput<bfloat16> input{x, y, z};
+
+        EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
+                                     LIBC_NAMESPACE::fmabf16(x, y, z), 0.5);
+      }  
+    }
+  }
+}
+TEST_F(LlvmLibcFmaBf16Test, CancellationTest) {
+
+  for (uint16_t v1 = 0; v1 <= 0xFFFF; v1 += 13) {
+    for (uint16_t v2 = 0; v2 <= 0xFFFF; v2 += 17) {
+
+      bfloat16 x = FPBits(v1).get_val();
+      bfloat16 y = FPBits(v2).get_val();
+      bfloat16 z = -(x * y);
+
+      mpfr::TernaryInput<bfloat16> input{x, y, z};
+
+      EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
+                                     LIBC_NAMESPACE::fmabf16(x, y, z), 0.5);
+  }
+}
+}
\ No newline at end of file
diff --git a/libc/utils/MPFRWrapper/MPFRUtils.cpp b/libc/utils/MPFRWrapper/MPFRUtils.cpp
index a7d307b47c3e8..98e4480543edb 100644
--- a/libc/utils/MPFRWrapper/MPFRUtils.cpp
+++ b/libc/utils/MPFRWrapper/MPFRUtils.cpp
@@ -1,848 +1,848 @@
-//===-- Utils which wrap MPFR ---------------------------------------------===//
-//
-// 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 "MPFRUtils.h"
-#include "MPCommon.h"
-
-#include "src/__support/CPP/array.h"
-#include "src/__support/CPP/stringstream.h"
-#include "src/__support/FPUtil/bfloat16.h"
-#include "src/__support/FPUtil/fpbits_str.h"
-#include "src/__support/macros/config.h"
-#include "src/__support/macros/properties/types.h"
-
-namespace LIBC_NAMESPACE_DECL {
-namespace testing {
-namespace mpfr {
-namespace internal {
-
-template <typename InputType>
-cpp::enable_if_t<cpp::is_floating_point_v<InputType>, MPFRNumber>
-unary_operation(Operation op, InputType input, unsigned int precision,
-                RoundingMode rounding) {
-  MPFRNumber mpfrInput(input, precision, rounding);
-  switch (op) {
-  case Operation::Abs:
-    return mpfrInput.abs();
-  case Operation::Acos:
-    return mpfrInput.acos();
-  case Operation::Acosh:
-    return mpfrInput.acosh();
-  case Operation::Acospi:
-    return mpfrInput.acospi();
-  case Operation::Asin:
-    return mpfrInput.asin();
-  case Operation::Asinh:
-    return mpfrInput.asinh();
-  case Operation::Asinpi:
-    return mpfrInput.asinpi();
-  case Operation::Atan:
-    return mpfrInput.atan();
-  case Operation::Atanh:
-    return mpfrInput.atanh();
-  case Operation::Atanpi:
-    return mpfrInput.atanpi();
-  case Operation::Cbrt:
-    return mpfrInput.cbrt();
-  case Operation::Ceil:
-    return mpfrInput.ceil();
-  case Operation::Cos:
-    return mpfrInput.cos();
-  case Operation::Cosh:
-    return mpfrInput.cosh();
-  case Operation::Cospi:
-    return mpfrInput.cospi();
-  case Operation::Erf:
-    return mpfrInput.erf();
-  case Operation::Exp:
-    return mpfrInput.exp();
-  case Operation::Exp2:
-    return mpfrInput.exp2();
-  case Operation::Exp2m1:
-    return mpfrInput.exp2m1();
-  case Operation::Exp10:
-    return mpfrInput.exp10();
-  case Operation::Exp10m1:
-    return mpfrInput.exp10m1();
-  case Operation::Expm1:
-    return mpfrInput.expm1();
-  case Operation::Floor:
-    return mpfrInput.floor();
-  case Operation::Log:
-    return mpfrInput.log();
-  case Operation::Log2:
-    return mpfrInput.log2();
-  case Operation::Log10:
-    return mpfrInput.log10();
-  case Operation::Log1p:
-    return mpfrInput.log1p();
-  case Operation::Mod2PI:
-    return mpfrInput.mod_2pi();
-  case Operation::ModPIOver2:
-    return mpfrInput.mod_pi_over_2();
-  case Operation::ModPIOver4:
-    return mpfrInput.mod_pi_over_4();
-  case Operation::Round:
-    return mpfrInput.round();
-  case Operation::RoundEven:
-    return mpfrInput.roundeven();
-  case Operation::Rsqrt:
-    return mpfrInput.rsqrt();
-  case Operation::Sin:
-    return mpfrInput.sin();
-  case Operation::Sinpi:
-    return mpfrInput.sinpi();
-  case Operation::Sinh:
-    return mpfrInput.sinh();
-  case Operation::Sqrt:
-    return mpfrInput.sqrt();
-  case Operation::Tan:
-    return mpfrInput.tan();
-  case Operation::Tanh:
-    return mpfrInput.tanh();
-  case Operation::Tanpi:
-    return mpfrInput.tanpi();
-  case Operation::Trunc:
-    return mpfrInput.trunc();
-  default:
-    __builtin_unreachable();
-  }
-}
-
-template <typename InputType>
-cpp::enable_if_t<cpp::is_floating_point_v<InputType>, MPFRNumber>
-unary_operation_two_outputs(Operation op, InputType input, int &output,
-                            unsigned int precision, RoundingMode rounding) {
-  MPFRNumber mpfrInput(input, precision, rounding);
-  switch (op) {
-  case Operation::Frexp:
-    return mpfrInput.frexp(output);
-  default:
-    __builtin_unreachable();
-  }
-}
-
-template <typename InputType>
-cpp::enable_if_t<cpp::is_floating_point_v<InputType>, MPFRNumber>
-binary_operation_one_output(Operation op, InputType x, InputType y,
-                            unsigned int precision, RoundingMode rounding) {
-  MPFRNumber inputX(x, precision, rounding);
-  MPFRNumber inputY(y, precision, rounding);
-  switch (op) {
-  case Operation::Add:
-    return inputX.add(inputY);
-  case Operation::Atan2:
-    return inputX.atan2(inputY);
-  case Operation::Div:
-    return inputX.div(inputY);
-  case Operation::Fmod:
-    return inputX.fmod(inputY);
-  case Operation::Hypot:
-    return inputX.hypot(inputY);
-  case Operation::Mul:
-    return inputX.mul(inputY);
-  case Operation::Pow:
-    return inputX.pow(inputY);
-  case Operation::Sub:
-    return inputX.sub(inputY);
-  default:
-    __builtin_unreachable();
-  }
-}
-
-template <typename InputType>
-cpp::enable_if_t<cpp::is_floating_point_v<InputType>, MPFRNumber>
-binary_operation_two_outputs(Operation op, InputType x, InputType y,
-                             int &output, unsigned int precision,
-                             RoundingMode rounding) {
-  MPFRNumber inputX(x, precision, rounding);
-  MPFRNumber inputY(y, precision, rounding);
-  switch (op) {
-  case Operation::RemQuo:
-    return inputX.remquo(inputY, output);
-  default:
-    __builtin_unreachable();
-  }
-}
-
-template <typename InputType>
-cpp::enable_if_t<cpp::is_floating_point_v<InputType>, MPFRNumber>
-ternary_operation_one_output(Operation op, InputType x, InputType y,
-                             InputType z, unsigned int precision,
-                             RoundingMode rounding) {
-  // For FMA function, we just need to compare with the mpfr_fma with the same
-  // precision as InputType.  Using higher precision as the intermediate results
-  // to compare might incorrectly fail due to double-rounding errors.
-  MPFRNumber inputX(x, precision, rounding);
-  MPFRNumber inputY(y, precision, rounding);
-  MPFRNumber inputZ(z, precision, rounding);
-  switch (op) {
-  case Operation::Fma:
-    return inputX.fma(inputY, inputZ);
-  default:
-    __builtin_unreachable();
-  }
-}
-
-// Remark: For all the explain_*_error functions, we will use std::stringstream
-// to build the complete error messages before sending it to the outstream `OS`
-// once at the end.  This will stop the error messages from interleaving when
-// the tests are running concurrently.
-template <typename InputType, typename OutputType>
-void explain_unary_operation_single_output_error(Operation op, InputType input,
-                                                 OutputType matchValue,
-                                                 double ulp_tolerance,
-                                                 RoundingMode rounding) {
-  unsigned int precision = get_precision<InputType>(ulp_tolerance);
-  MPFRNumber mpfrInput(input, precision);
-  MPFRNumber mpfr_result;
-  mpfr_result = unary_operation(op, input, precision, rounding);
-  MPFRNumber mpfrMatchValue(matchValue);
-  cpp::array<char, 1024> msg_buf;
-  cpp::StringStream msg(msg_buf);
-  msg << "Match value not within tolerance value of MPFR result:\n"
-      << "  Input decimal: " << mpfrInput.str() << '\n';
-  msg << "     Input bits: " << str(FPBits<InputType>(input)) << '\n';
-  msg << '\n' << "  Match decimal: " << mpfrMatchValue.str() << '\n';
-  msg << "     Match bits: " << str(FPBits<OutputType>(matchValue)) << '\n';
-  msg << '\n' << "    MPFR result: " << mpfr_result.str() << '\n';
-  msg << "   MPFR rounded: "
-      << str(FPBits<OutputType>(mpfr_result.as<OutputType>())) << '\n';
-  msg << '\n';
-  msg << "      ULP error: " << mpfr_result.ulp_as_mpfr_number(matchValue).str()
-      << '\n';
-  if (msg.overflow())
-    __builtin_unreachable();
-  tlog << msg.str();
-}
-
-template void explain_unary_operation_single_output_error(Operation op, float,
-                                                          float, double,
-                                                          RoundingMode);
-template void explain_unary_operation_single_output_error(Operation op, double,
-                                                          double, double,
-                                                          RoundingMode);
-template void explain_unary_operation_single_output_error(Operation op,
-                                                          long double,
-                                                          long double, double,
-                                                          RoundingMode);
-template void explain_unary_operation_single_output_error(Operation op, double,
-                                                          float, double,
-                                                          RoundingMode);
-template void explain_unary_operation_single_output_error(Operation op,
-                                                          long double, float,
-                                                          double, RoundingMode);
-template void explain_unary_operation_single_output_error(Operation op,
-                                                          long double, double,
-                                                          double, RoundingMode);
-
-#ifdef LIBC_TYPES_HAS_FLOAT16
-template void explain_unary_operation_single_output_error(Operation op, float16,
-                                                          float16, double,
-                                                          RoundingMode);
-template void explain_unary_operation_single_output_error(Operation op, float,
-                                                          float16, double,
-                                                          RoundingMode);
-template void explain_unary_operation_single_output_error(Operation op, double,
-                                                          float16, double,
-                                                          RoundingMode);
-template void explain_unary_operation_single_output_error(Operation op,
-                                                          long double, float16,
-                                                          double, RoundingMode);
-#ifdef LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE
-template void explain_unary_operation_single_output_error(Operation op,
-                                                          float128, float16,
-                                                          double, RoundingMode);
-#endif // LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE
-#endif // LIBC_TYPES_HAS_FLOAT16
-
-#ifdef LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE
-template void explain_unary_operation_single_output_error(Operation op,
-                                                          float128, float128,
-                                                          double, RoundingMode);
-template void explain_unary_operation_single_output_error(Operation op,
-                                                          float128, float,
-                                                          double, RoundingMode);
-template void explain_unary_operation_single_output_error(Operation op,
-                                                          float128, double,
-                                                          double, RoundingMode);
-template void explain_unary_operation_single_output_error(Operation op,
-                                                          float128, long double,
-                                                          double, RoundingMode);
-#endif // LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE
-
-template void explain_unary_operation_single_output_error(Operation op,
-                                                          bfloat16, bfloat16,
-                                                          double, RoundingMode);
-
-template <typename T>
-void explain_unary_operation_two_outputs_error(
-    Operation op, T input, const BinaryOutput<T> &libc_result,
-    double ulp_tolerance, RoundingMode rounding) {
-  unsigned int precision = get_precision<T>(ulp_tolerance);
-  MPFRNumber mpfrInput(input, precision);
-  int mpfrIntResult;
-  MPFRNumber mpfr_result = unary_operation_two_outputs(op, input, mpfrIntResult,
-                                                       precision, rounding);
-
-  if (mpfrIntResult != libc_result.i) {
-    tlog << "MPFR integral result: " << mpfrIntResult << '\n'
-         << "Libc integral result: " << libc_result.i << '\n';
-  } else {
-    tlog << "Integral result from libc matches integral result from MPFR.\n";
-  }
-
-  MPFRNumber mpfrMatchValue(libc_result.f);
-  tlog
-      << "Libc floating point result is not within tolerance value of the MPFR "
-      << "result.\n\n";
-
-  tlog << "            Input decimal: " << mpfrInput.str() << "\n\n";
-
-  tlog << "Libc floating point value: " << mpfrMatchValue.str() << '\n';
-  tlog << " Libc floating point bits: " << str(FPBits<T>(libc_result.f))
-       << '\n';
-  tlog << "\n\n";
-
-  tlog << "              MPFR result: " << mpfr_result.str() << '\n';
-  tlog << "             MPFR rounded: " << str(FPBits<T>(mpfr_result.as<T>()))
-       << '\n';
-  tlog << '\n'
-       << "                ULP error: "
-       << mpfr_result.ulp_as_mpfr_number(libc_result.f).str() << '\n';
-}
-
-template void explain_unary_operation_two_outputs_error<float>(
-    Operation, float, const BinaryOutput<float> &, double, RoundingMode);
-template void explain_unary_operation_two_outputs_error<double>(
-    Operation, double, const BinaryOutput<double> &, double, RoundingMode);
-template void explain_unary_operation_two_outputs_error<long double>(
-    Operation, long double, const BinaryOutput<long double> &, double,
-    RoundingMode);
-
-template <typename T>
-void explain_binary_operation_two_outputs_error(
-    Operation op, const BinaryInput<T> &input,
-    const BinaryOutput<T> &libc_result, double ulp_tolerance,
-    RoundingMode rounding) {
-  unsigned int precision = get_precision<T>(ulp_tolerance);
-  MPFRNumber mpfrX(input.x, precision);
-  MPFRNumber mpfrY(input.y, precision);
-  int mpfrIntResult;
-  MPFRNumber mpfr_result = binary_operation_two_outputs(
-      op, input.x, input.y, mpfrIntResult, precision, rounding);
-  MPFRNumber mpfrMatchValue(libc_result.f);
-
-  tlog << "Input decimal: x: " << mpfrX.str() << " y: " << mpfrY.str() << '\n'
-       << "MPFR integral result: " << mpfrIntResult << '\n'
-       << "Libc integral result: " << libc_result.i << '\n'
-       << "Libc floating point result: " << mpfrMatchValue.str() << '\n'
-       << "               MPFR result: " << mpfr_result.str() << '\n';
-  tlog << "Libc floating point result bits: " << str(FPBits<T>(libc_result.f))
-       << '\n';
-  tlog << "              MPFR rounded bits: "
-       << str(FPBits<T>(mpfr_result.as<T>())) << '\n';
-  tlog << "ULP error: " << mpfr_result.ulp_as_mpfr_number(libc_result.f).str()
-       << '\n';
-}
-
-template void explain_binary_operation_two_outputs_error<float>(
-    Operation, const BinaryInput<float> &, const BinaryOutput<float> &, double,
-    RoundingMode);
-template void explain_binary_operation_two_outputs_error<double>(
-    Operation, const BinaryInput<double> &, const BinaryOutput<double> &,
-    double, RoundingMode);
-template void explain_binary_operation_two_outputs_error<long double>(
-    Operation, const BinaryInput<long double> &,
-    const BinaryOutput<long double> &, double, RoundingMode);
-
-template <typename InputType, typename OutputType>
-void explain_binary_operation_one_output_error(
-    Operation op, const BinaryInput<InputType> &input, OutputType libc_result,
-    double ulp_tolerance, RoundingMode rounding) {
-  unsigned int precision = get_precision<InputType>(ulp_tolerance);
-  MPFRNumber mpfrX(input.x, precision);
-  MPFRNumber mpfrY(input.y, precision);
-  FPBits<InputType> xbits(input.x);
-  FPBits<InputType> ybits(input.y);
-  MPFRNumber mpfr_result =
-      binary_operation_one_output(op, input.x, input.y, precision, rounding);
-  MPFRNumber mpfrMatchValue(libc_result);
-
-  tlog << "Input decimal: x: " << mpfrX.str() << " y: " << mpfrY.str() << '\n';
-  tlog << "First input bits: " << str(FPBits<InputType>(input.x)) << '\n';
-  tlog << "Second input bits: " << str(FPBits<InputType>(input.y)) << '\n';
-
-  tlog << "Libc result: " << mpfrMatchValue.str() << '\n'
-       << "MPFR result: " << mpfr_result.str() << '\n';
-  tlog << "Libc floating point result bits: "
-       << str(FPBits<OutputType>(libc_result)) << '\n';
-  tlog << "              MPFR rounded bits: "
-       << str(FPBits<OutputType>(mpfr_result.as<OutputType>())) << '\n';
-  tlog << "ULP error: " << mpfr_result.ulp_as_mpfr_number(libc_result).str()
-       << '\n';
-}
-
-template void
-explain_binary_operation_one_output_error(Operation, const BinaryInput<float> &,
-                                          float, double, RoundingMode);
-template void explain_binary_operation_one_output_error(
-    Operation, const BinaryInput<double> &, float, double, RoundingMode);
-template void explain_binary_operation_one_output_error(
-    Operation, const BinaryInput<double> &, double, double, RoundingMode);
-template void explain_binary_operation_one_output_error(
-    Operation, const BinaryInput<long double> &, float, double, RoundingMode);
-template void explain_binary_operation_one_output_error(
-    Operation, const BinaryInput<long double> &, double, double, RoundingMode);
-template void
-explain_binary_operation_one_output_error(Operation,
-                                          const BinaryInput<long double> &,
-                                          long double, double, RoundingMode);
-#ifdef LIBC_TYPES_HAS_FLOAT16
-template void explain_binary_operation_one_output_error(
-    Operation, const BinaryInput<float16> &, float16, double, RoundingMode);
-template void
-explain_binary_operation_one_output_error(Operation, const BinaryInput<float> &,
-                                          float16, double, RoundingMode);
-template void explain_binary_operation_one_output_error(
-    Operation, const BinaryInput<double> &, float16, double, RoundingMode);
-template void explain_binary_operation_one_output_error(
-    Operation, const BinaryInput<long double> &, float16, double, RoundingMode);
-#endif
-#if defined(LIBC_TYPES_HAS_FLOAT128) &&                                        \
-    defined(LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE)
-template void explain_binary_operation_one_output_error(
-    Operation, const BinaryInput<float128> &, float128, double, RoundingMode);
-#endif
-template void explain_binary_operation_one_output_error(
-    Operation, const BinaryInput<bfloat16> &, bfloat16, double, RoundingMode);
-template void
-explain_binary_operation_one_output_error(Operation, const BinaryInput<float> &,
-                                          bfloat16, double, RoundingMode);
-template void explain_binary_operation_one_output_error(
-    Operation, const BinaryInput<double> &, bfloat16, double, RoundingMode);
-template void
-explain_binary_operation_one_output_error(Operation,
-                                          const BinaryInput<long double> &,
-                                          bfloat16, double, RoundingMode);
-#if defined(LIBC_TYPES_HAS_FLOAT128) &&                                        \
-    defined(LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE)
-template void explain_binary_operation_one_output_error(
-    Operation, const BinaryInput<float128> &, bfloat16, double, RoundingMode);
-#endif // defined(LIBC_TYPES_HAS_FLOAT128) &&
-       // defined(LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE)
-
-template <typename InputType, typename OutputType>
-void explain_ternary_operation_one_output_error(
-    Operation op, const TernaryInput<InputType> &input, OutputType libc_result,
-    double ulp_tolerance, RoundingMode rounding) {
-  unsigned int precision = get_precision<InputType>(ulp_tolerance);
-  MPFRNumber mpfrX(input.x, precision);
-  MPFRNumber mpfrY(input.y, precision);
-  MPFRNumber mpfrZ(input.z, precision);
-  FPBits<InputType> xbits(input.x);
-  FPBits<InputType> ybits(input.y);
-  FPBits<InputType> zbits(input.z);
-  MPFRNumber mpfr_result = ternary_operation_one_output(
-      op, input.x, input.y, input.z, precision, rounding);
-  MPFRNumber mpfrMatchValue(libc_result);
-
-  tlog << "Input decimal: x: " << mpfrX.str() << " y: " << mpfrY.str()
-       << " z: " << mpfrZ.str() << '\n';
-  tlog << " First input bits: " << str(FPBits<InputType>(input.x)) << '\n';
-  tlog << "Second input bits: " << str(FPBits<InputType>(input.y)) << '\n';
-  tlog << " Third input bits: " << str(FPBits<InputType>(input.z)) << '\n';
-
-  tlog << "Libc result: " << mpfrMatchValue.str() << '\n'
-       << "MPFR result: " << mpfr_result.str() << '\n';
-  tlog << "Libc floating point result bits: "
-       << str(FPBits<OutputType>(libc_result)) << '\n';
-  tlog << "              MPFR rounded bits: "
-       << str(FPBits<OutputType>(mpfr_result.as<OutputType>())) << '\n';
-  tlog << "ULP error: " << mpfr_result.ulp_as_mpfr_number(libc_result).str()
-       << '\n';
-}
-
-template void explain_ternary_operation_one_output_error(
-    Operation, const TernaryInput<float> &, float, double, RoundingMode);
-template void explain_ternary_operation_one_output_error(
-    Operation, const TernaryInput<double> &, float, double, RoundingMode);
-template void explain_ternary_operation_one_output_error(
-    Operation, const TernaryInput<double> &, double, double, RoundingMode);
-template void explain_ternary_operation_one_output_error(
-    Operation, const TernaryInput<long double> &, float, double, RoundingMode);
-template void explain_ternary_operation_one_output_error(
-    Operation, const TernaryInput<long double> &, double, double, RoundingMode);
-template void
-explain_ternary_operation_one_output_error(Operation,
-                                           const TernaryInput<long double> &,
-                                           long double, double, RoundingMode);
-
-#ifdef LIBC_TYPES_HAS_FLOAT16
-template void explain_ternary_operation_one_output_error(
-    Operation, const TernaryInput<float16> &, float16, double, RoundingMode);
-template void explain_ternary_operation_one_output_error(
-    Operation, const TernaryInput<float> &, float16, double, RoundingMode);
-template void explain_ternary_operation_one_output_error(
-    Operation, const TernaryInput<double> &, float16, double, RoundingMode);
-template void
-explain_ternary_operation_one_output_error(Operation,
-                                           const TernaryInput<long double> &,
-                                           float16, double, RoundingMode);
-#endif
-
-template void explain_ternary_operation_one_output_error(
-    Operation, const TernaryInput<float> &, bfloat16, double, RoundingMode);
-template void explain_ternary_operation_one_output_error(
-    Operation, const TernaryInput<double> &, bfloat16, double, RoundingMode);
-template void
-explain_ternary_operation_one_output_error(Operation,
-                                           const TernaryInput<long double> &,
-                                           bfloat16, double, RoundingMode);
-#if defined(LIBC_TYPES_HAS_FLOAT128) &&                                        \
-    defined(LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE)
-template void explain_ternary_operation_one_output_error(
-    Operation, const TernaryInput<float128> &, bfloat16, double, RoundingMode);
-#endif // defined(LIBC_TYPES_HAS_FLOAT128) &&
-       // defined(LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE)
-
-template <typename InputType, typename OutputType>
-bool compare_unary_operation_single_output(Operation op, InputType input,
-                                           OutputType libc_result,
-                                           double ulp_tolerance,
-                                           RoundingMode rounding) {
-  unsigned int precision = get_precision<InputType>(ulp_tolerance);
-  MPFRNumber mpfr_result;
-  mpfr_result = unary_operation(op, input, precision, rounding);
-  double ulp = mpfr_result.ulp(libc_result);
-  return (ulp <= ulp_tolerance);
-}
-
-template bool compare_unary_operation_single_output(Operation, float, float,
-                                                    double, RoundingMode);
-template bool compare_unary_operation_single_output(Operation, double, double,
-                                                    double, RoundingMode);
-template bool compare_unary_operation_single_output(Operation, long double,
-                                                    long double, double,
-                                                    RoundingMode);
-template bool compare_unary_operation_single_output(Operation, double, float,
-                                                    double, RoundingMode);
-template bool compare_unary_operation_single_output(Operation, long double,
-                                                    float, double,
-                                                    RoundingMode);
-template bool compare_unary_operation_single_output(Operation, long double,
-                                                    double, double,
-                                                    RoundingMode);
-#ifdef LIBC_TYPES_HAS_FLOAT16
-template bool compare_unary_operation_single_output(Operation, float16, float16,
-                                                    double, RoundingMode);
-template bool compare_unary_operation_single_output(Operation, float, float16,
-                                                    double, RoundingMode);
-template bool compare_unary_operation_single_output(Operation, double, float16,
-                                                    double, RoundingMode);
-template bool compare_unary_operation_single_output(Operation, long double,
-                                                    float16, double,
-                                                    RoundingMode);
-#ifdef LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE
-template bool compare_unary_operation_single_output(Operation, float128,
-                                                    float16, double,
-                                                    RoundingMode);
-#endif // LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE
-#endif // LIBC_TYPES_HAS_FLOAT16
-
-#ifdef LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE
-template bool compare_unary_operation_single_output(Operation, float128,
-                                                    float128, double,
-                                                    RoundingMode);
-template bool compare_unary_operation_single_output(Operation, float128, float,
-                                                    double, RoundingMode);
-template bool compare_unary_operation_single_output(Operation, float128, double,
-                                                    double, RoundingMode);
-template bool compare_unary_operation_single_output(Operation, float128,
-                                                    long double, double,
-                                                    RoundingMode);
-#endif // LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE
-template bool compare_unary_operation_single_output(Operation, bfloat16,
-                                                    bfloat16, double,
-                                                    RoundingMode);
-
-template <typename T>
-bool compare_unary_operation_two_outputs(Operation op, T input,
-                                         const BinaryOutput<T> &libc_result,
-                                         double ulp_tolerance,
-                                         RoundingMode rounding) {
-  int mpfrIntResult;
-  unsigned int precision = get_precision<T>(ulp_tolerance);
-  MPFRNumber mpfr_result = unary_operation_two_outputs(op, input, mpfrIntResult,
-                                                       precision, rounding);
-  double ulp = mpfr_result.ulp(libc_result.f);
-
-  if (mpfrIntResult != libc_result.i)
-    return false;
-
-  return (ulp <= ulp_tolerance);
-}
-
-template bool compare_unary_operation_two_outputs<float>(
-    Operation, float, const BinaryOutput<float> &, double, RoundingMode);
-template bool compare_unary_operation_two_outputs<double>(
-    Operation, double, const BinaryOutput<double> &, double, RoundingMode);
-template bool compare_unary_operation_two_outputs<long double>(
-    Operation, long double, const BinaryOutput<long double> &, double,
-    RoundingMode);
-
-template <typename T>
-bool compare_binary_operation_two_outputs(Operation op,
-                                          const BinaryInput<T> &input,
-                                          const BinaryOutput<T> &libc_result,
-                                          double ulp_tolerance,
-                                          RoundingMode rounding) {
-  int mpfrIntResult;
-  unsigned int precision = get_precision<T>(ulp_tolerance);
-  MPFRNumber mpfr_result = binary_operation_two_outputs(
-      op, input.x, input.y, mpfrIntResult, precision, rounding);
-  double ulp = mpfr_result.ulp(libc_result.f);
-
-  if (mpfrIntResult != libc_result.i) {
-    if (op == Operation::RemQuo) {
-      if ((0x7 & mpfrIntResult) != (0x7 & libc_result.i))
-        return false;
-    } else {
-      return false;
-    }
-  }
-
-  return (ulp <= ulp_tolerance);
-}
-
-template bool compare_binary_operation_two_outputs<float>(
-    Operation, const BinaryInput<float> &, const BinaryOutput<float> &, double,
-    RoundingMode);
-template bool compare_binary_operation_two_outputs<double>(
-    Operation, const BinaryInput<double> &, const BinaryOutput<double> &,
-    double, RoundingMode);
-template bool compare_binary_operation_two_outputs<long double>(
-    Operation, const BinaryInput<long double> &,
-    const BinaryOutput<long double> &, double, RoundingMode);
-
-template <typename InputType, typename OutputType>
-bool compare_binary_operation_one_output(Operation op,
-                                         const BinaryInput<InputType> &input,
-                                         OutputType libc_result,
-                                         double ulp_tolerance,
-                                         RoundingMode rounding) {
-  unsigned int precision = get_precision<InputType>(ulp_tolerance);
-  MPFRNumber mpfr_result =
-      binary_operation_one_output(op, input.x, input.y, precision, rounding);
-  double ulp = mpfr_result.ulp(libc_result);
-
-  return (ulp <= ulp_tolerance);
-}
-
-template bool compare_binary_operation_one_output(Operation,
-                                                  const BinaryInput<float> &,
-                                                  float, double, RoundingMode);
-template bool compare_binary_operation_one_output(Operation,
-                                                  const BinaryInput<double> &,
-                                                  double, double, RoundingMode);
-template bool
-compare_binary_operation_one_output(Operation, const BinaryInput<long double> &,
-                                    float, double, RoundingMode);
-template bool
-compare_binary_operation_one_output(Operation, const BinaryInput<long double> &,
-                                    double, double, RoundingMode);
-template bool
-compare_binary_operation_one_output(Operation, const BinaryInput<long double> &,
-                                    long double, double, RoundingMode);
-
-template bool compare_binary_operation_one_output(Operation,
-                                                  const BinaryInput<double> &,
-                                                  float, double, RoundingMode);
-#ifdef LIBC_TYPES_HAS_FLOAT16
-template bool compare_binary_operation_one_output(Operation,
-                                                  const BinaryInput<float16> &,
-                                                  float16, double,
-                                                  RoundingMode);
-template bool compare_binary_operation_one_output(Operation,
-                                                  const BinaryInput<float> &,
-                                                  float16, double,
-                                                  RoundingMode);
-template bool compare_binary_operation_one_output(Operation,
-                                                  const BinaryInput<double> &,
-                                                  float16, double,
-                                                  RoundingMode);
-template bool
-compare_binary_operation_one_output(Operation, const BinaryInput<long double> &,
-                                    float16, double, RoundingMode);
-#endif
-#if defined(LIBC_TYPES_HAS_FLOAT128) &&                                        \
-    defined(LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE)
-template bool compare_binary_operation_one_output(Operation,
-                                                  const BinaryInput<float128> &,
-                                                  float128, double,
-                                                  RoundingMode);
-#endif
-template bool compare_binary_operation_one_output(Operation,
-                                                  const BinaryInput<bfloat16> &,
-                                                  bfloat16, double,
-                                                  RoundingMode);
-
-template bool compare_binary_operation_one_output(Operation,
-                                                  const BinaryInput<float> &,
-                                                  bfloat16, double,
-                                                  RoundingMode);
-template bool compare_binary_operation_one_output(Operation,
-                                                  const BinaryInput<double> &,
-                                                  bfloat16, double,
-                                                  RoundingMode);
-template bool
-compare_binary_operation_one_output(Operation, const BinaryInput<long double> &,
-                                    bfloat16, double, RoundingMode);
-#if defined(LIBC_TYPES_HAS_FLOAT128) &&                                        \
-    defined(LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE)
-template bool compare_binary_operation_one_output(Operation,
-                                                  const BinaryInput<float128> &,
-                                                  bfloat16, double,
-                                                  RoundingMode);
-#endif // defined(LIBC_TYPES_HAS_FLOAT128) &&
-       // defined(LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE)
-template <typename InputType, typename OutputType>
-bool compare_ternary_operation_one_output(Operation op,
-                                          const TernaryInput<InputType> &input,
-                                          OutputType libc_result,
-                                          double ulp_tolerance,
-                                          RoundingMode rounding) {
-  unsigned int precision = get_precision<InputType>(ulp_tolerance);
-  MPFRNumber mpfr_result = ternary_operation_one_output(
-      op, input.x, input.y, input.z, precision, rounding);
-  double ulp = mpfr_result.ulp(libc_result);
-
-  return (ulp <= ulp_tolerance);
-}
-
-template bool compare_ternary_operation_one_output(Operation,
-                                                   const TernaryInput<float> &,
-                                                   float, double, RoundingMode);
-template bool compare_ternary_operation_one_output(Operation,
-                                                   const TernaryInput<double> &,
-                                                   float, double, RoundingMode);
-template bool compare_ternary_operation_one_output(Operation,
-                                                   const TernaryInput<double> &,
-                                                   double, double,
-                                                   RoundingMode);
-template bool compare_ternary_operation_one_output(
-    Operation, const TernaryInput<long double> &, float, double, RoundingMode);
-template bool compare_ternary_operation_one_output(
-    Operation, const TernaryInput<long double> &, double, double, RoundingMode);
-template bool
-compare_ternary_operation_one_output(Operation,
-                                     const TernaryInput<long double> &,
-                                     long double, double, RoundingMode);
-
-#ifdef LIBC_TYPES_HAS_FLOAT16
-template bool
-compare_ternary_operation_one_output(Operation, const TernaryInput<float16> &,
-                                     float16, double, RoundingMode);
-template bool compare_ternary_operation_one_output(Operation,
-                                                   const TernaryInput<float> &,
-                                                   float16, double,
-                                                   RoundingMode);
-template bool compare_ternary_operation_one_output(Operation,
-                                                   const TernaryInput<double> &,
-                                                   float16, double,
-                                                   RoundingMode);
-template bool
-compare_ternary_operation_one_output(Operation,
-                                     const TernaryInput<long double> &, float16,
-                                     double, RoundingMode);
-#endif
-
-template bool compare_ternary_operation_one_output(Operation,
-                                                   const TernaryInput<float> &,
-                                                   bfloat16, double,
-                                                   RoundingMode);
-template bool compare_ternary_operation_one_output(Operation,
-                                                   const TernaryInput<double> &,
-                                                   bfloat16, double,
-                                                   RoundingMode);
-template bool
-compare_ternary_operation_one_output(Operation,
-                                     const TernaryInput<long double> &,
-                                     bfloat16, double, RoundingMode);
-
-#if defined(LIBC_TYPES_HAS_FLOAT128) &&                                        \
-    defined(LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE)
-template bool
-compare_ternary_operation_one_output(Operation, const TernaryInput<float128> &,
-                                     bfloat16, double, RoundingMode);
-#endif // defined(LIBC_TYPES_HAS_FLOAT128) &&
-       // defined(LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE)
-
-} // namespace internal
-
-template <typename T> bool round_to_long(T x, long &result) {
-  MPFRNumber mpfr(x);
-  return mpfr.round_to_long(result);
-}
-
-template bool round_to_long<float>(float, long &);
-template bool round_to_long<double>(double, long &);
-template bool round_to_long<long double>(long double, long &);
-
-#ifdef LIBC_TYPES_HAS_FLOAT16
-template bool round_to_long<float16>(float16, long &);
-#endif // LIBC_TYPES_HAS_FLOAT16
-
-#ifdef LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE
-template bool round_to_long<float128>(float128, long &);
-#endif // LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE
-
-template bool round_to_long<bfloat16>(bfloat16, long &);
-
-template <typename T> bool round_to_long(T x, RoundingMode mode, long &result) {
-  MPFRNumber mpfr(x);
-  return mpfr.round_to_long(get_mpfr_rounding_mode(mode), result);
-}
-
-template bool round_to_long<float>(float, RoundingMode, long &);
-template bool round_to_long<double>(double, RoundingMode, long &);
-template bool round_to_long<long double>(long double, RoundingMode, long &);
-
-#ifdef LIBC_TYPES_HAS_FLOAT16
-template bool round_to_long<float16>(float16, RoundingMode, long &);
-#endif // LIBC_TYPES_HAS_FLOAT16
-
-#ifdef LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE
-template bool round_to_long<float128>(float128, RoundingMode, long &);
-#endif // LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE
-
-template bool round_to_long<bfloat16>(bfloat16, RoundingMode, long &);
-
-template <typename T> T round(T x, RoundingMode mode) {
-  MPFRNumber mpfr(x);
-  MPFRNumber result = mpfr.rint(get_mpfr_rounding_mode(mode));
-  return result.as<T>();
-}
-
-template float round<float>(float, RoundingMode);
-template double round<double>(double, RoundingMode);
-template long double round<long double>(long double, RoundingMode);
-
-#ifdef LIBC_TYPES_HAS_FLOAT16
-template float16 round<float16>(float16, RoundingMode);
-#endif // LIBC_TYPES_HAS_FLOAT16
-
-#ifdef LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE
-template float128 round<float128>(float128, RoundingMode);
-#endif // LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE
-
-template bfloat16 round<bfloat16>(bfloat16, RoundingMode);
-
-} // namespace mpfr
-} // namespace testing
-} // namespace LIBC_NAMESPACE_DECL
+//===-- Utils which wrap MPFR ---------------------------------------------===//
+//
+// 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 "MPFRUtils.h"
+#include "MPCommon.h"
+
+#include "src/__support/CPP/array.h"
+#include "src/__support/CPP/stringstream.h"
+#include "src/__support/FPUtil/bfloat16.h"
+#include "src/__support/FPUtil/fpbits_str.h"
+#include "src/__support/macros/config.h"
+#include "src/__support/macros/properties/types.h"
+
+namespace LIBC_NAMESPACE_DECL {
+namespace testing {
+namespace mpfr {
+namespace internal {
+
+template <typename InputType>
+cpp::enable_if_t<cpp::is_floating_point_v<InputType>, MPFRNumber>
+unary_operation(Operation op, InputType input, unsigned int precision,
+                RoundingMode rounding) {
+  MPFRNumber mpfrInput(input, precision, rounding);
+  switch (op) {
+  case Operation::Abs:
+    return mpfrInput.abs();
+  case Operation::Acos:
+    return mpfrInput.acos();
+  case Operation::Acosh:
+    return mpfrInput.acosh();
+  case Operation::Acospi:
+    return mpfrInput.acospi();
+  case Operation::Asin:
+    return mpfrInput.asin();
+  case Operation::Asinh:
+    return mpfrInput.asinh();
+  case Operation::Asinpi:
+    return mpfrInput.asinpi();
+  case Operation::Atan:
+    return mpfrInput.atan();
+  case Operation::Atanh:
+    return mpfrInput.atanh();
+  case Operation::Atanpi:
+    return mpfrInput.atanpi();
+  case Operation::Cbrt:
+    return mpfrInput.cbrt();
+  case Operation::Ceil:
+    return mpfrInput.ceil();
+  case Operation::Cos:
+    return mpfrInput.cos();
+  case Operation::Cosh:
+    return mpfrInput.cosh();
+  case Operation::Cospi:
+    return mpfrInput.cospi();
+  case Operation::Erf:
+    return mpfrInput.erf();
+  case Operation::Exp:
+    return mpfrInput.exp();
+  case Operation::Exp2:
+    return mpfrInput.exp2();
+  case Operation::Exp2m1:
+    return mpfrInput.exp2m1();
+  case Operation::Exp10:
+    return mpfrInput.exp10();
+  case Operation::Exp10m1:
+    return mpfrInput.exp10m1();
+  case Operation::Expm1:
+    return mpfrInput.expm1();
+  case Operation::Floor:
+    return mpfrInput.floor();
+  case Operation::Log:
+    return mpfrInput.log();
+  case Operation::Log2:
+    return mpfrInput.log2();
+  case Operation::Log10:
+    return mpfrInput.log10();
+  case Operation::Log1p:
+    return mpfrInput.log1p();
+  case Operation::Mod2PI:
+    return mpfrInput.mod_2pi();
+  case Operation::ModPIOver2:
+    return mpfrInput.mod_pi_over_2();
+  case Operation::ModPIOver4:
+    return mpfrInput.mod_pi_over_4();
+  case Operation::Round:
+    return mpfrInput.round();
+  case Operation::RoundEven:
+    return mpfrInput.roundeven();
+  case Operation::Rsqrt:
+    return mpfrInput.rsqrt();
+  case Operation::Sin:
+    return mpfrInput.sin();
+  case Operation::Sinpi:
+    return mpfrInput.sinpi();
+  case Operation::Sinh:
+    return mpfrInput.sinh();
+  case Operation::Sqrt:
+    return mpfrInput.sqrt();
+  case Operation::Tan:
+    return mpfrInput.tan();
+  case Operation::Tanh:
+    return mpfrInput.tanh();
+  case Operation::Tanpi:
+    return mpfrInput.tanpi();
+  case Operation::Trunc:
+    return mpfrInput.trunc();
+  default:
+    __builtin_unreachable();
+  }
+}
+
+template <typename InputType>
+cpp::enable_if_t<cpp::is_floating_point_v<InputType>, MPFRNumber>
+unary_operation_two_outputs(Operation op, InputType input, int &output,
+                            unsigned int precision, RoundingMode rounding) {
+  MPFRNumber mpfrInput(input, precision, rounding);
+  switch (op) {
+  case Operation::Frexp:
+    return mpfrInput.frexp(output);
+  default:
+    __builtin_unreachable();
+  }
+}
+
+template <typename InputType>
+cpp::enable_if_t<cpp::is_floating_point_v<InputType>, MPFRNumber>
+binary_operation_one_output(Operation op, InputType x, InputType y,
+                            unsigned int precision, RoundingMode rounding) {
+  MPFRNumber inputX(x, precision, rounding);
+  MPFRNumber inputY(y, precision, rounding);
+  switch (op) {
+  case Operation::Add:
+    return inputX.add(inputY);
+  case Operation::Atan2:
+    return inputX.atan2(inputY);
+  case Operation::Div:
+    return inputX.div(inputY);
+  case Operation::Fmod:
+    return inputX.fmod(inputY);
+  case Operation::Hypot:
+    return inputX.hypot(inputY);
+  case Operation::Mul:
+    return inputX.mul(inputY);
+  case Operation::Pow:
+    return inputX.pow(inputY);
+  case Operation::Sub:
+    return inputX.sub(inputY);
+  default:
+    __builtin_unreachable();
+  }
+}
+
+template <typename InputType>
+cpp::enable_if_t<cpp::is_floating_point_v<InputType>, MPFRNumber>
+binary_operation_two_outputs(Operation op, InputType x, InputType y,
+                             int &output, unsigned int precision,
+                             RoundingMode rounding) {
+  MPFRNumber inputX(x, precision, rounding);
+  MPFRNumber inputY(y, precision, rounding);
+  switch (op) {
+  case Operation::RemQuo:
+    return inputX.remquo(inputY, output);
+  default:
+    __builtin_unreachable();
+  }
+}
+
+template <typename InputType>
+cpp::enable_if_t<cpp::is_floating_point_v<InputType>, MPFRNumber>
+ternary_operation_one_output(Operation op, InputType x, InputType y,
+                             InputType z, unsigned int precision,
+                             RoundingMode rounding) {
+  // For FMA function, we just need to compare with the mpfr_fma with the same
+  // precision as InputType.  Using higher precision as the intermediate results
+  // to compare might incorrectly fail due to double-rounding errors.
+  MPFRNumber inputX(x, precision, rounding);
+  MPFRNumber inputY(y, precision, rounding);
+  MPFRNumber inputZ(z, precision, rounding);
+  switch (op) {
+  case Operation::Fma:
+    return inputX.fma(inputY, inputZ);
+  default:
+    __builtin_unreachable();
+  }
+}
+
+// Remark: For all the explain_*_error functions, we will use std::stringstream
+// to build the complete error messages before sending it to the outstream `OS`
+// once at the end.  This will stop the error messages from interleaving when
+// the tests are running concurrently.
+template <typename InputType, typename OutputType>
+void explain_unary_operation_single_output_error(Operation op, InputType input,
+                                                 OutputType matchValue,
+                                                 double ulp_tolerance,
+                                                 RoundingMode rounding) {
+  unsigned int precision = get_precision<InputType>(ulp_tolerance);
+  MPFRNumber mpfrInput(input, precision);
+  MPFRNumber mpfr_result;
+  mpfr_result = unary_operation(op, input, precision, rounding);
+  MPFRNumber mpfrMatchValue(matchValue);
+  cpp::array<char, 1024> msg_buf;
+  cpp::StringStream msg(msg_buf);
+  msg << "Match value not within tolerance value of MPFR result:\n"
+      << "  Input decimal: " << mpfrInput.str() << '\n';
+  msg << "     Input bits: " << str(FPBits<InputType>(input)) << '\n';
+  msg << '\n' << "  Match decimal: " << mpfrMatchValue.str() << '\n';
+  msg << "     Match bits: " << str(FPBits<OutputType>(matchValue)) << '\n';
+  msg << '\n' << "    MPFR result: " << mpfr_result.str() << '\n';
+  msg << "   MPFR rounded: "
+      << str(FPBits<OutputType>(mpfr_result.as<OutputType>())) << '\n';
+  msg << '\n';
+  msg << "      ULP error: " << mpfr_result.ulp_as_mpfr_number(matchValue).str()
+      << '\n';
+  if (msg.overflow())
+    __builtin_unreachable();
+  tlog << msg.str();
+}
+
+template void explain_unary_operation_single_output_error(Operation op, float,
+                                                          float, double,
+                                                          RoundingMode);
+template void explain_unary_operation_single_output_error(Operation op, double,
+                                                          double, double,
+                                                          RoundingMode);
+template void explain_unary_operation_single_output_error(Operation op,
+                                                          long double,
+                                                          long double, double,
+                                                          RoundingMode);
+template void explain_unary_operation_single_output_error(Operation op, double,
+                                                          float, double,
+                                                          RoundingMode);
+template void explain_unary_operation_single_output_error(Operation op,
+                                                          long double, float,
+                                                          double, RoundingMode);
+template void explain_unary_operation_single_output_error(Operation op,
+                                                          long double, double,
+                                                          double, RoundingMode);
+
+#ifdef LIBC_TYPES_HAS_FLOAT16
+template void explain_unary_operation_single_output_error(Operation op, float16,
+                                                          float16, double,
+                                                          RoundingMode);
+template void explain_unary_operation_single_output_error(Operation op, float,
+                                                          float16, double,
+                                                          RoundingMode);
+template void explain_unary_operation_single_output_error(Operation op, double,
+                                                          float16, double,
+                                                          RoundingMode);
+template void explain_unary_operation_single_output_error(Operation op,
+                                                          long double, float16,
+                                                          double, RoundingMode);
+#ifdef LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE
+template void explain_unary_operation_single_output_error(Operation op,
+                                                          float128, float16,
+                                                          double, RoundingMode);
+#endif // LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE
+#endif // LIBC_TYPES_HAS_FLOAT16
+
+#ifdef LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE
+template void explain_unary_operation_single_output_error(Operation op,
+                                                          float128, float128,
+                                                          double, RoundingMode);
+template void explain_unary_operation_single_output_error(Operation op,
+                                                          float128, float,
+                                                          double, RoundingMode);
+template void explain_unary_operation_single_output_error(Operation op,
+                                                          float128, double,
+                                                          double, RoundingMode);
+template void explain_unary_operation_single_output_error(Operation op,
+                                                          float128, long double,
+                                                          double, RoundingMode);
+#endif // LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE
+
+template void explain_unary_operation_single_output_error(Operation op,
+                                                          bfloat16, bfloat16,
+                                                          double, RoundingMode);
+
+template <typename T>
+void explain_unary_operation_two_outputs_error(
+    Operation op, T input, const BinaryOutput<T> &libc_result,
+    double ulp_tolerance, RoundingMode rounding) {
+  unsigned int precision = get_precision<T>(ulp_tolerance);
+  MPFRNumber mpfrInput(input, precision);
+  int mpfrIntResult;
+  MPFRNumber mpfr_result = unary_operation_two_outputs(op, input, mpfrIntResult,
+                                                       precision, rounding);
+
+  if (mpfrIntResult != libc_result.i) {
+    tlog << "MPFR integral result: " << mpfrIntResult << '\n'
+         << "Libc integral result: " << libc_result.i << '\n';
+  } else {
+    tlog << "Integral result from libc matches integral result from MPFR.\n";
+  }
+
+  MPFRNumber mpfrMatchValue(libc_result.f);
+  tlog
+      << "Libc floating point result is not within tolerance value of the MPFR "
+      << "result.\n\n";
+
+  tlog << "            Input decimal: " << mpfrInput.str() << "\n\n";
+
+  tlog << "Libc floating point value: " << mpfrMatchValue.str() << '\n';
+  tlog << " Libc floating point bits: " << str(FPBits<T>(libc_result.f))
+       << '\n';
+  tlog << "\n\n";
+
+  tlog << "              MPFR result: " << mpfr_result.str() << '\n';
+  tlog << "             MPFR rounded: " << str(FPBits<T>(mpfr_result.as<T>()))
+       << '\n';
+  tlog << '\n'
+       << "                ULP error: "
+       << mpfr_result.ulp_as_mpfr_number(libc_result.f).str() << '\n';
+}
+
+template void explain_unary_operation_two_outputs_error<float>(
+    Operation, float, const BinaryOutput<float> &, double, RoundingMode);
+template void explain_unary_operation_two_outputs_error<double>(
+    Operation, double, const BinaryOutput<double> &, double, RoundingMode);
+template void explain_unary_operation_two_outputs_error<long double>(
+    Operation, long double, const BinaryOutput<long double> &, double,
+    RoundingMode);
+
+template <typename T>
+void explain_binary_operation_two_outputs_error(
+    Operation op, const BinaryInput<T> &input,
+    const BinaryOutput<T> &libc_result, double ulp_tolerance,
+    RoundingMode rounding) {
+  unsigned int precision = get_precision<T>(ulp_tolerance);
+  MPFRNumber mpfrX(input.x, precision);
+  MPFRNumber mpfrY(input.y, precision);
+  int mpfrIntResult;
+  MPFRNumber mpfr_result = binary_operation_two_outputs(
+      op, input.x, input.y, mpfrIntResult, precision, rounding);
+  MPFRNumber mpfrMatchValue(libc_result.f);
+
+  tlog << "Input decimal: x: " << mpfrX.str() << " y: " << mpfrY.str() << '\n'
+       << "MPFR integral result: " << mpfrIntResult << '\n'
+       << "Libc integral result: " << libc_result.i << '\n'
+       << "Libc floating point result: " << mpfrMatchValue.str() << '\n'
+       << "               MPFR result: " << mpfr_result.str() << '\n';
+  tlog << "Libc floating point result bits: " << str(FPBits<T>(libc_result.f))
+       << '\n';
+  tlog << "              MPFR rounded bits: "
+       << str(FPBits<T>(mpfr_result.as<T>())) << '\n';
+  tlog << "ULP error: " << mpfr_result.ulp_as_mpfr_number(libc_result.f).str()
+       << '\n';
+}
+
+template void explain_binary_operation_two_outputs_error<float>(
+    Operation, const BinaryInput<float> &, const BinaryOutput<float> &, double,
+    RoundingMode);
+template void explain_binary_operation_two_outputs_error<double>(
+    Operation, const BinaryInput<double> &, const BinaryOutput<double> &,
+    double, RoundingMode);
+template void explain_binary_operation_two_outputs_error<long double>(
+    Operation, const BinaryInput<long double> &,
+    const BinaryOutput<long double> &, double, RoundingMode);
+
+template <typename InputType, typename OutputType>
+void explain_binary_operation_one_output_error(
+    Operation op, const BinaryInput<InputType> &input, OutputType libc_result,
+    double ulp_tolerance, RoundingMode rounding) {
+  unsigned int precision = get_precision<InputType>(ulp_tolerance);
+  MPFRNumber mpfrX(input.x, precision);
+  MPFRNumber mpfrY(input.y, precision);
+  FPBits<InputType> xbits(input.x);
+  FPBits<InputType> ybits(input.y);
+  MPFRNumber mpfr_result =
+      binary_operation_one_output(op, input.x, input.y, precision, rounding);
+  MPFRNumber mpfrMatchValue(libc_result);
+
+  tlog << "Input decimal: x: " << mpfrX.str() << " y: " << mpfrY.str() << '\n';
+  tlog << "First input bits: " << str(FPBits<InputType>(input.x)) << '\n';
+  tlog << "Second input bits: " << str(FPBits<InputType>(input.y)) << '\n';
+
+  tlog << "Libc result: " << mpfrMatchValue.str() << '\n'
+       << "MPFR result: " << mpfr_result.str() << '\n';
+  tlog << "Libc floating point result bits: "
+       << str(FPBits<OutputType>(libc_result)) << '\n';
+  tlog << "              MPFR rounded bits: "
+       << str(FPBits<OutputType>(mpfr_result.as<OutputType>())) << '\n';
+  tlog << "ULP error: " << mpfr_result.ulp_as_mpfr_number(libc_result).str()
+       << '\n';
+}
+
+template void
+explain_binary_operation_one_output_error(Operation, const BinaryInput<float> &,
+                                          float, double, RoundingMode);
+template void explain_binary_operation_one_output_error(
+    Operation, const BinaryInput<double> &, float, double, RoundingMode);
+template void explain_binary_operation_one_output_error(
+    Operation, const BinaryInput<double> &, double, double, RoundingMode);
+template void explain_binary_operation_one_output_error(
+    Operation, const BinaryInput<long double> &, float, double, RoundingMode);
+template void explain_binary_operation_one_output_error(
+    Operation, const BinaryInput<long double> &, double, double, RoundingMode);
+template void
+explain_binary_operation_one_output_error(Operation,
+                                          const BinaryInput<long double> &,
+                                          long double, double, RoundingMode);
+#ifdef LIBC_TYPES_HAS_FLOAT16
+template void explain_binary_operation_one_output_error(
+    Operation, const BinaryInput<float16> &, float16, double, RoundingMode);
+template void
+explain_binary_operation_one_output_error(Operation, const BinaryInput<float> &,
+                                          float16, double, RoundingMode);
+template void explain_binary_operation_one_output_error(
+    Operation, const BinaryInput<double> &, float16, double, RoundingMode);
+template void explain_binary_operation_one_output_error(
+    Operation, const BinaryInput<long double> &, float16, double, RoundingMode);
+#endif
+#if defined(LIBC_TYPES_HAS_FLOAT128) &&                                        \
+    defined(LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE)
+template void explain_binary_operation_one_output_error(
+    Operation, const BinaryInput<float128> &, float128, double, RoundingMode);
+#endif
+template void explain_binary_operation_one_output_error(
+    Operation, const BinaryInput<bfloat16> &, bfloat16, double, RoundingMode);
+template void
+explain_binary_operation_one_output_error(Operation, const BinaryInput<float> &,
+                                          bfloat16, double, RoundingMode);
+template void explain_binary_operation_one_output_error(
+    Operation, const BinaryInput<double> &, bfloat16, double, RoundingMode);
+template void
+explain_binary_operation_one_output_error(Operation,
+                                          const BinaryInput<long double> &,
+                                          bfloat16, double, RoundingMode);
+#if defined(LIBC_TYPES_HAS_FLOAT128) &&                                        \
+    defined(LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE)
+template void explain_binary_operation_one_output_error(
+    Operation, const BinaryInput<float128> &, bfloat16, double, RoundingMode);
+#endif // defined(LIBC_TYPES_HAS_FLOAT128) &&
+       // defined(LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE)
+
+template <typename InputType, typename OutputType>
+void explain_ternary_operation_one_output_error(
+    Operation op, const TernaryInput<InputType> &input, OutputType libc_result,
+    double ulp_tolerance, RoundingMode rounding) {
+  unsigned int precision = get_precision<InputType>(ulp_tolerance);
+  MPFRNumber mpfrX(input.x, precision);
+  MPFRNumber mpfrY(input.y, precision);
+  MPFRNumber mpfrZ(input.z, precision);
+  FPBits<InputType> xbits(input.x);
+  FPBits<InputType> ybits(input.y);
+  FPBits<InputType> zbits(input.z);
+  MPFRNumber mpfr_result = ternary_operation_one_output(
+      op, input.x, input.y, input.z, precision, rounding);
+  MPFRNumber mpfrMatchValue(libc_result);
+
+  tlog << "Input decimal: x: " << mpfrX.str() << " y: " << mpfrY.str()
+       << " z: " << mpfrZ.str() << '\n';
+  tlog << " First input bits: " << str(FPBits<InputType>(input.x)) << '\n';
+  tlog << "Second input bits: " << str(FPBits<InputType>(input.y)) << '\n';
+  tlog << " Third input bits: " << str(FPBits<InputType>(input.z)) << '\n';
+
+  tlog << "Libc result: " << mpfrMatchValue.str() << '\n'
+       << "MPFR result: " << mpfr_result.str() << '\n';
+  tlog << "Libc floating point result bits: "
+       << str(FPBits<OutputType>(libc_result)) << '\n';
+  tlog << "              MPFR rounded bits: "
+       << str(FPBits<OutputType>(mpfr_result.as<OutputType>())) << '\n';
+  tlog << "ULP error: " << mpfr_result.ulp_as_mpfr_number(libc_result).str()
+       << '\n';
+}
+
+template void explain_ternary_operation_one_output_error(
+    Operation, const TernaryInput<float> &, float, double, RoundingMode);
+template void explain_ternary_operation_one_output_error(
+    Operation, const TernaryInput<double> &, float, double, RoundingMode);
+template void explain_ternary_operation_one_output_error(
+    Operation, const TernaryInput<double> &, double, double, RoundingMode);
+template void explain_ternary_operation_one_output_error(
+    Operation, const TernaryInput<long double> &, float, double, RoundingMode);
+template void explain_ternary_operation_one_output_error(
+    Operation, const TernaryInput<long double> &, double, double, RoundingMode);
+template void
+explain_ternary_operation_one_output_error(Operation,
+                                           const TernaryInput<long double> &,
+                                           long double, double, RoundingMode);
+
+#ifdef LIBC_TYPES_HAS_FLOAT16
+template void explain_ternary_operation_one_output_error(
+    Operation, const TernaryInput<float16> &, float16, double, RoundingMode);
+template void explain_ternary_operation_one_output_error(
+    Operation, const TernaryInput<float> &, float16, double, RoundingMode);
+template void explain_ternary_operation_one_output_error(
+    Operation, const TernaryInput<double> &, float16, double, RoundingMode);
+template void
+explain_ternary_operation_one_output_error(Operation,
+                                           const TernaryInput<long double> &,
+                                           float16, double, RoundingMode);
+#endif
+
+template void explain_ternary_operation_one_output_error(
+    Operation, const TernaryInput<float> &, bfloat16, double, RoundingMode);
+template void explain_ternary_operation_one_output_error(
+    Operation, const TernaryInput<double> &, bfloat16, double, RoundingMode);
+template void
+explain_ternary_operation_one_output_error(Operation,
+                                           const TernaryInput<long double> &,
+                                           bfloat16, double, RoundingMode);
+#if defined(LIBC_TYPES_HAS_FLOAT128) &&                                        \
+    defined(LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE)
+template void explain_ternary_operation_one_output_error(
+    Operation, const TernaryInput<float128> &, bfloat16, double, RoundingMode);
+#endif // defined(LIBC_TYPES_HAS_FLOAT128) &&
+       // defined(LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE)
+
+template <typename InputType, typename OutputType>
+bool compare_unary_operation_single_output(Operation op, InputType input,
+                                           OutputType libc_result,
+                                           double ulp_tolerance,
+                                           RoundingMode rounding) {
+  unsigned int precision = get_precision<InputType>(ulp_tolerance);
+  MPFRNumber mpfr_result;
+  mpfr_result = unary_operation(op, input, precision, rounding);
+  double ulp = mpfr_result.ulp(libc_result);
+  return (ulp <= ulp_tolerance);
+}
+
+template bool compare_unary_operation_single_output(Operation, float, float,
+                                                    double, RoundingMode);
+template bool compare_unary_operation_single_output(Operation, double, double,
+                                                    double, RoundingMode);
+template bool compare_unary_operation_single_output(Operation, long double,
+                                                    long double, double,
+                                                    RoundingMode);
+template bool compare_unary_operation_single_output(Operation, double, float,
+                                                    double, RoundingMode);
+template bool compare_unary_operation_single_output(Operation, long double,
+                                                    float, double,
+                                                    RoundingMode);
+template bool compare_unary_operation_single_output(Operation, long double,
+                                                    double, double,
+                                                    RoundingMode);
+#ifdef LIBC_TYPES_HAS_FLOAT16
+template bool compare_unary_operation_single_output(Operation, float16, float16,
+                                                    double, RoundingMode);
+template bool compare_unary_operation_single_output(Operation, float, float16,
+                                                    double, RoundingMode);
+template bool compare_unary_operation_single_output(Operation, double, float16,
+                                                    double, RoundingMode);
+template bool compare_unary_operation_single_output(Operation, long double,
+                                                    float16, double,
+                                                    RoundingMode);
+#ifdef LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE
+template bool compare_unary_operation_single_output(Operation, float128,
+                                                    float16, double,
+                                                    RoundingMode);
+#endif // LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE
+#endif // LIBC_TYPES_HAS_FLOAT16
+
+#ifdef LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE
+template bool compare_unary_operation_single_output(Operation, float128,
+                                                    float128, double,
+                                                    RoundingMode);
+template bool compare_unary_operation_single_output(Operation, float128, float,
+                                                    double, RoundingMode);
+template bool compare_unary_operation_single_output(Operation, float128, double,
+                                                    double, RoundingMode);
+template bool compare_unary_operation_single_output(Operation, float128,
+                                                    long double, double,
+                                                    RoundingMode);
+#endif // LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE
+template bool compare_unary_operation_single_output(Operation, bfloat16,
+                                                    bfloat16, double,
+                                                    RoundingMode);
+
+template <typename T>
+bool compare_unary_operation_two_outputs(Operation op, T input,
+                                         const BinaryOutput<T> &libc_result,
+                                         double ulp_tolerance,
+                                         RoundingMode rounding) {
+  int mpfrIntResult;
+  unsigned int precision = get_precision<T>(ulp_tolerance);
+  MPFRNumber mpfr_result = unary_operation_two_outputs(op, input, mpfrIntResult,
+                                                       precision, rounding);
+  double ulp = mpfr_result.ulp(libc_result.f);
+
+  if (mpfrIntResult != libc_result.i)
+    return false;
+
+  return (ulp <= ulp_tolerance);
+}
+
+template bool compare_unary_operation_two_outputs<float>(
+    Operation, float, const BinaryOutput<float> &, double, RoundingMode);
+template bool compare_unary_operation_two_outputs<double>(
+    Operation, double, const BinaryOutput<double> &, double, RoundingMode);
+template bool compare_unary_operation_two_outputs<long double>(
+    Operation, long double, const BinaryOutput<long double> &, double,
+    RoundingMode);
+
+template <typename T>
+bool compare_binary_operation_two_outputs(Operation op,
+                                          const BinaryInput<T> &input,
+                                          const BinaryOutput<T> &libc_result,
+                                          double ulp_tolerance,
+                                          RoundingMode rounding) {
+  int mpfrIntResult;
+  unsigned int precision = get_precision<T>(ulp_tolerance);
+  MPFRNumber mpfr_result = binary_operation_two_outputs(
+      op, input.x, input.y, mpfrIntResult, precision, rounding);
+  double ulp = mpfr_result.ulp(libc_result.f);
+
+  if (mpfrIntResult != libc_result.i) {
+    if (op == Operation::RemQuo) {
+      if ((0x7 & mpfrIntResult) != (0x7 & libc_result.i))
+        return false;
+    } else {
+      return false;
+    }
+  }
+
+  return (ulp <= ulp_tolerance);
+}
+
+template bool compare_binary_operation_two_outputs<float>(
+    Operation, const BinaryInput<float> &, const BinaryOutput<float> &, double,
+    RoundingMode);
+template bool compare_binary_operation_two_outputs<double>(
+    Operation, const BinaryInput<double> &, const BinaryOutput<double> &,
+    double, RoundingMode);
+template bool compare_binary_operation_two_outputs<long double>(
+    Operation, const BinaryInput<long double> &,
+    const BinaryOutput<long double> &, double, RoundingMode);
+
+template <typename InputType, typename OutputType>
+bool compare_binary_operation_one_output(Operation op,
+                                         const BinaryInput<InputType> &input,
+                                         OutputType libc_result,
+                                         double ulp_tolerance,
+                                         RoundingMode rounding) {
+  unsigned int precision = get_precision<InputType>(ulp_tolerance);
+  MPFRNumber mpfr_result =
+      binary_operation_one_output(op, input.x, input.y, precision, rounding);
+  double ulp = mpfr_result.ulp(libc_result);
+
+  return (ulp <= ulp_tolerance);
+}
+
+template bool compare_binary_operation_one_output(Operation,
+                                                  const BinaryInput<float> &,
+                                                  float, double, RoundingMode);
+template bool compare_binary_operation_one_output(Operation,
+                                                  const BinaryInput<double> &,
+                                                  double, double, RoundingMode);
+template bool
+compare_binary_operation_one_output(Operation, const BinaryInput<long double> &,
+                                    float, double, RoundingMode);
+template bool
+compare_binary_operation_one_output(Operation, const BinaryInput<long double> &,
+                                    double, double, RoundingMode);
+template bool
+compare_binary_operation_one_output(Operation, const BinaryInput<long double> &,
+                                    long double, double, RoundingMode);
+
+template bool compare_binary_operation_one_output(Operation,
+                                                  const BinaryInput<double> &,
+                                                  float, double, RoundingMode);
+#ifdef LIBC_TYPES_HAS_FLOAT16
+template bool compare_binary_operation_one_output(Operation,
+                                                  const BinaryInput<float16> &,
+                                                  float16, double,
+                                                  RoundingMode);
+template bool compare_binary_operation_one_output(Operation,
+                                                  const BinaryInput<float> &,
+                                                  float16, double,
+                                                  RoundingMode);
+template bool compare_binary_operation_one_output(Operation,
+                                                  const BinaryInput<double> &,
+                                                  float16, double,
+                                                  RoundingMode);
+template bool
+compare_binary_operation_one_output(Operation, const BinaryInput<long double> &,
+                                    float16, double, RoundingMode);
+#endif
+#if defined(LIBC_TYPES_HAS_FLOAT128) &&                                        \
+    defined(LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE)
+template bool compare_binary_operation_one_output(Operation,
+                                                  const BinaryInput<float128> &,
+                                                  float128, double,
+                                                  RoundingMode);
+#endif
+template bool compare_binary_operation_one_output(Operation,
+                                                  const BinaryInput<bfloat16> &,
+                                                  bfloat16, double,
+                                                  RoundingMode);
+
+template bool compare_binary_operation_one_output(Operation,
+                                                  const BinaryInput<float> &,
+                                                  bfloat16, double,
+                                                  RoundingMode);
+template bool compare_binary_operation_one_output(Operation,
+                                                  const BinaryInput<double> &,
+                                                  bfloat16, double,
+                                                  RoundingMode);
+template bool
+compare_binary_operation_one_output(Operation, const BinaryInput<long double> &,
+                                    bfloat16, double, RoundingMode);
+#if defined(LIBC_TYPES_HAS_FLOAT128) &&                                        \
+    defined(LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE)
+template bool compare_binary_operation_one_output(Operation,
+                                                  const BinaryInput<float128> &,
+                                                  bfloat16, double,
+                                                  RoundingMode);
+#endif // defined(LIBC_TYPES_HAS_FLOAT128) &&
+       // defined(LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE)
+template <typename InputType, typename OutputType>
+bool compare_ternary_operation_one_output(Operation op,
+                                          const TernaryInput<InputType> &input,
+                                          OutputType libc_result,
+                                          double ulp_tolerance,
+                                          RoundingMode rounding) {
+  unsigned int precision = get_precision<InputType>(ulp_tolerance);
+  MPFRNumber mpfr_result = ternary_operation_one_output(
+      op, input.x, input.y, input.z, precision, rounding);
+  double ulp = mpfr_result.ulp(libc_result);
+
+  return (ulp <= ulp_tolerance);
+}
+
+template bool compare_ternary_operation_one_output(Operation,
+                                                   const TernaryInput<float> &,
+                                                   float, double, RoundingMode);
+template bool compare_ternary_operation_one_output(Operation,
+                                                   const TernaryInput<double> &,
+                                                   float, double, RoundingMode);
+template bool compare_ternary_operation_one_output(Operation,
+                                                   const TernaryInput<double> &,
+                                                   double, double,
+                                                   RoundingMode);
+template bool compare_ternary_operation_one_output(
+    Operation, const TernaryInput<long double> &, float, double, RoundingMode);
+template bool compare_ternary_operation_one_output(
+    Operation, const TernaryInput<long double> &, double, double, RoundingMode);
+template bool
+compare_ternary_operation_one_output(Operation,
+                                     const TernaryInput<long double> &,
+                                     long double, double, RoundingMode);
+
+#ifdef LIBC_TYPES_HAS_FLOAT16
+template bool
+compare_ternary_operation_one_output(Operation, const TernaryInput<float16> &,
+                                     float16, double, RoundingMode);
+template bool compare_ternary_operation_one_output(Operation,
+                                                   const TernaryInput<float> &,
+                                                   float16, double,
+                                                   RoundingMode);
+template bool compare_ternary_operation_one_output(Operation,
+                                                   const TernaryInput<double> &,
+                                                   float16, double,
+                                                   RoundingMode);
+template bool
+compare_ternary_operation_one_output(Operation,
+                                     const TernaryInput<long double> &, float16,
+                                     double, RoundingMode);
+#endif
+
+template bool compare_ternary_operation_one_output(Operation,
+                                                   const TernaryInput<float> &,
+                                                   bfloat16, double,
+                                                   RoundingMode);
+template bool compare_ternary_operation_one_output(Operation,
+                                                   const TernaryInput<double> &,
+                                                   bfloat16, double,
+                                                   RoundingMode);
+template bool
+compare_ternary_operation_one_output(Operation,
+                                     const TernaryInput<long double> &,
+                                     bfloat16, double, RoundingMode);
+
+#if defined(LIBC_TYPES_HAS_FLOAT128) &&                                        \
+    defined(LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE)
+template bool
+compare_ternary_operation_one_output(Operation, const TernaryInput<float128> &,
+                                     bfloat16, double, RoundingMode);
+#endif // defined(LIBC_TYPES_HAS_FLOAT128) &&
+       // defined(LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE)
+
+} // namespace internal
+
+template <typename T> bool round_to_long(T x, long &result) {
+  MPFRNumber mpfr(x);
+  return mpfr.round_to_long(result);
+}
+
+template bool round_to_long<float>(float, long &);
+template bool round_to_long<double>(double, long &);
+template bool round_to_long<long double>(long double, long &);
+
+#ifdef LIBC_TYPES_HAS_FLOAT16
+template bool round_to_long<float16>(float16, long &);
+#endif // LIBC_TYPES_HAS_FLOAT16
+
+#ifdef LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE
+template bool round_to_long<float128>(float128, long &);
+#endif // LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE
+
+template bool round_to_long<bfloat16>(bfloat16, long &);
+
+template <typename T> bool round_to_long(T x, RoundingMode mode, long &result) {
+  MPFRNumber mpfr(x);
+  return mpfr.round_to_long(get_mpfr_rounding_mode(mode), result);
+}
+
+template bool round_to_long<float>(float, RoundingMode, long &);
+template bool round_to_long<double>(double, RoundingMode, long &);
+template bool round_to_long<long double>(long double, RoundingMode, long &);
+
+#ifdef LIBC_TYPES_HAS_FLOAT16
+template bool round_to_long<float16>(float16, RoundingMode, long &);
+#endif // LIBC_TYPES_HAS_FLOAT16
+
+#ifdef LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE
+template bool round_to_long<float128>(float128, RoundingMode, long &);
+#endif // LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE
+
+template bool round_to_long<bfloat16>(bfloat16, RoundingMode, long &);
+
+template <typename T> T round(T x, RoundingMode mode) {
+  MPFRNumber mpfr(x);
+  MPFRNumber result = mpfr.rint(get_mpfr_rounding_mode(mode));
+  return result.as<T>();
+}
+
+template float round<float>(float, RoundingMode);
+template double round<double>(double, RoundingMode);
+template long double round<long double>(long double, RoundingMode);
+
+#ifdef LIBC_TYPES_HAS_FLOAT16
+template float16 round<float16>(float16, RoundingMode);
+#endif // LIBC_TYPES_HAS_FLOAT16
+
+#ifdef LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE
+template float128 round<float128>(float128, RoundingMode);
+#endif // LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE
+
+template bfloat16 round<bfloat16>(bfloat16, RoundingMode);
+
+} // namespace mpfr
+} // namespace testing
+} // namespace LIBC_NAMESPACE_DECL

>From 41295e02e34effe62e9a1564b60bb677969af84a Mon Sep 17 00:00:00 2001
From: Sukumarsawant <sawantsukumar at gmail.com>
Date: Sat, 21 Feb 2026 17:34:10 +0530
Subject: [PATCH 09/43] lf issue fixed

---
 libc/test/src/math/fmabf16_test.cpp  |   58 +-
 libc/utils/MPFRWrapper/MPFRUtils.cpp | 1696 +++++++++++++-------------
 2 files changed, 871 insertions(+), 883 deletions(-)

diff --git a/libc/test/src/math/fmabf16_test.cpp b/libc/test/src/math/fmabf16_test.cpp
index ed2349f10e799..431fa36864a57 100644
--- a/libc/test/src/math/fmabf16_test.cpp
+++ b/libc/test/src/math/fmabf16_test.cpp
@@ -6,12 +6,12 @@
 //
 //===----------------------------------------------------------------------===//
 
-#include <vector>
 #include "src/__support/FPUtil/bfloat16.h"
 #include "src/math/fmabf16.h"
 #include "test/UnitTest/FPMatcher.h"
 #include "test/UnitTest/Test.h"
 #include "utils/MPFRWrapper/MPFRUtils.h"
+#include <vector>
 
 using LlvmLibcFmaBf16Test = LIBC_NAMESPACE::testing::FPTest<bfloat16>;
 
@@ -25,62 +25,50 @@ static constexpr uint16_t POS_STOP = 0x7f80U;
 static constexpr uint16_t NEG_START = 0x8000U;
 static constexpr uint16_t NEG_STOP = 0xff80U; //-inf
 
-//covers normal range since special cases covered in unit tests 
-
-
+// covers normal range since special cases covered in unit tests
 
 TEST_F(LlvmLibcFmaBf16Test, PositiveRange) {
-  
+
   std::vector<bfloat16> z_val = {
-      FPBits(0x0000).get_val(),
-      FPBits(0x8000).get_val(),
-      FPBits(0x3f80).get_val(),
-      FPBits(0xbf80).get_val(),
-      FPBits::min_subnormal().get_val(),
-      FPBits::max_normal().get_val(),
-      FPBits::inf().get_val(),
-      FPBits::quiet_nan().get_val()
-  };
-  for(bfloat16 z : z_val){
+      FPBits(0x0000).get_val(),          FPBits(0x8000).get_val(),
+      FPBits(0x3f80).get_val(),          FPBits(0xbf80).get_val(),
+      FPBits::min_subnormal().get_val(), FPBits::max_normal().get_val(),
+      FPBits::inf().get_val(),           FPBits::quiet_nan().get_val()};
+  for (bfloat16 z : z_val) {
     for (uint16_t v1 = POS_START; v1 <= POS_STOP; ++v1) {
-      for(uint16_t v2 = POS_START; v2<= POS_STOP; v2+=256) {
-      
+      for (uint16_t v2 = POS_START; v2 <= POS_STOP; v2 += 256) {
+
         bfloat16 x = FPBits(v1).get_val();
         bfloat16 y = FPBits(v2).get_val();
 
         mpfr::TernaryInput<bfloat16> input{x, y, z};
 
         EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
-                                     LIBC_NAMESPACE::fmabf16(x, y, z), 0.5);
-      }  
+                                       LIBC_NAMESPACE::fmabf16(x, y, z), 0.5);
+      }
     }
   }
 }
 
 TEST_F(LlvmLibcFmaBf16Test, NegativeRange) {
-  
+
   std::vector<bfloat16> z_val = {
-      FPBits(0x0000).get_val(),
-      FPBits(0x8000).get_val(),
-      FPBits(0x3f80).get_val(),
-      FPBits(0xbf80).get_val(),
-      FPBits::min_subnormal().get_val(),
-      FPBits::max_normal().get_val(),
-      FPBits::inf().get_val(),
-      FPBits::quiet_nan().get_val()
-  };
-  for(bfloat16 z : z_val){
+      FPBits(0x0000).get_val(),          FPBits(0x8000).get_val(),
+      FPBits(0x3f80).get_val(),          FPBits(0xbf80).get_val(),
+      FPBits::min_subnormal().get_val(), FPBits::max_normal().get_val(),
+      FPBits::inf().get_val(),           FPBits::quiet_nan().get_val()};
+  for (bfloat16 z : z_val) {
     for (uint16_t v1 = NEG_START; v1 <= NEG_STOP; ++v1) {
-      for(uint16_t v2 = NEG_START; v2<= NEG_STOP; v2+=256) {
-      
+      for (uint16_t v2 = NEG_START; v2 <= NEG_STOP; v2 += 256) {
+
         bfloat16 x = FPBits(v1).get_val();
         bfloat16 y = FPBits(v2).get_val();
 
         mpfr::TernaryInput<bfloat16> input{x, y, z};
 
         EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
-                                     LIBC_NAMESPACE::fmabf16(x, y, z), 0.5);
-      }  
+                                       LIBC_NAMESPACE::fmabf16(x, y, z), 0.5);
+      }
     }
   }
 }
@@ -97,6 +85,6 @@ TEST_F(LlvmLibcFmaBf16Test, CancellationTest) {
 
       EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
                                      LIBC_NAMESPACE::fmabf16(x, y, z), 0.5);
+    }
   }
-}
 }
\ No newline at end of file
diff --git a/libc/utils/MPFRWrapper/MPFRUtils.cpp b/libc/utils/MPFRWrapper/MPFRUtils.cpp
index 98e4480543edb..a7d307b47c3e8 100644
--- a/libc/utils/MPFRWrapper/MPFRUtils.cpp
+++ b/libc/utils/MPFRWrapper/MPFRUtils.cpp
@@ -1,848 +1,848 @@
-//===-- Utils which wrap MPFR ---------------------------------------------===//
-//
-// 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 "MPFRUtils.h"
-#include "MPCommon.h"
-
-#include "src/__support/CPP/array.h"
-#include "src/__support/CPP/stringstream.h"
-#include "src/__support/FPUtil/bfloat16.h"
-#include "src/__support/FPUtil/fpbits_str.h"
-#include "src/__support/macros/config.h"
-#include "src/__support/macros/properties/types.h"
-
-namespace LIBC_NAMESPACE_DECL {
-namespace testing {
-namespace mpfr {
-namespace internal {
-
-template <typename InputType>
-cpp::enable_if_t<cpp::is_floating_point_v<InputType>, MPFRNumber>
-unary_operation(Operation op, InputType input, unsigned int precision,
-                RoundingMode rounding) {
-  MPFRNumber mpfrInput(input, precision, rounding);
-  switch (op) {
-  case Operation::Abs:
-    return mpfrInput.abs();
-  case Operation::Acos:
-    return mpfrInput.acos();
-  case Operation::Acosh:
-    return mpfrInput.acosh();
-  case Operation::Acospi:
-    return mpfrInput.acospi();
-  case Operation::Asin:
-    return mpfrInput.asin();
-  case Operation::Asinh:
-    return mpfrInput.asinh();
-  case Operation::Asinpi:
-    return mpfrInput.asinpi();
-  case Operation::Atan:
-    return mpfrInput.atan();
-  case Operation::Atanh:
-    return mpfrInput.atanh();
-  case Operation::Atanpi:
-    return mpfrInput.atanpi();
-  case Operation::Cbrt:
-    return mpfrInput.cbrt();
-  case Operation::Ceil:
-    return mpfrInput.ceil();
-  case Operation::Cos:
-    return mpfrInput.cos();
-  case Operation::Cosh:
-    return mpfrInput.cosh();
-  case Operation::Cospi:
-    return mpfrInput.cospi();
-  case Operation::Erf:
-    return mpfrInput.erf();
-  case Operation::Exp:
-    return mpfrInput.exp();
-  case Operation::Exp2:
-    return mpfrInput.exp2();
-  case Operation::Exp2m1:
-    return mpfrInput.exp2m1();
-  case Operation::Exp10:
-    return mpfrInput.exp10();
-  case Operation::Exp10m1:
-    return mpfrInput.exp10m1();
-  case Operation::Expm1:
-    return mpfrInput.expm1();
-  case Operation::Floor:
-    return mpfrInput.floor();
-  case Operation::Log:
-    return mpfrInput.log();
-  case Operation::Log2:
-    return mpfrInput.log2();
-  case Operation::Log10:
-    return mpfrInput.log10();
-  case Operation::Log1p:
-    return mpfrInput.log1p();
-  case Operation::Mod2PI:
-    return mpfrInput.mod_2pi();
-  case Operation::ModPIOver2:
-    return mpfrInput.mod_pi_over_2();
-  case Operation::ModPIOver4:
-    return mpfrInput.mod_pi_over_4();
-  case Operation::Round:
-    return mpfrInput.round();
-  case Operation::RoundEven:
-    return mpfrInput.roundeven();
-  case Operation::Rsqrt:
-    return mpfrInput.rsqrt();
-  case Operation::Sin:
-    return mpfrInput.sin();
-  case Operation::Sinpi:
-    return mpfrInput.sinpi();
-  case Operation::Sinh:
-    return mpfrInput.sinh();
-  case Operation::Sqrt:
-    return mpfrInput.sqrt();
-  case Operation::Tan:
-    return mpfrInput.tan();
-  case Operation::Tanh:
-    return mpfrInput.tanh();
-  case Operation::Tanpi:
-    return mpfrInput.tanpi();
-  case Operation::Trunc:
-    return mpfrInput.trunc();
-  default:
-    __builtin_unreachable();
-  }
-}
-
-template <typename InputType>
-cpp::enable_if_t<cpp::is_floating_point_v<InputType>, MPFRNumber>
-unary_operation_two_outputs(Operation op, InputType input, int &output,
-                            unsigned int precision, RoundingMode rounding) {
-  MPFRNumber mpfrInput(input, precision, rounding);
-  switch (op) {
-  case Operation::Frexp:
-    return mpfrInput.frexp(output);
-  default:
-    __builtin_unreachable();
-  }
-}
-
-template <typename InputType>
-cpp::enable_if_t<cpp::is_floating_point_v<InputType>, MPFRNumber>
-binary_operation_one_output(Operation op, InputType x, InputType y,
-                            unsigned int precision, RoundingMode rounding) {
-  MPFRNumber inputX(x, precision, rounding);
-  MPFRNumber inputY(y, precision, rounding);
-  switch (op) {
-  case Operation::Add:
-    return inputX.add(inputY);
-  case Operation::Atan2:
-    return inputX.atan2(inputY);
-  case Operation::Div:
-    return inputX.div(inputY);
-  case Operation::Fmod:
-    return inputX.fmod(inputY);
-  case Operation::Hypot:
-    return inputX.hypot(inputY);
-  case Operation::Mul:
-    return inputX.mul(inputY);
-  case Operation::Pow:
-    return inputX.pow(inputY);
-  case Operation::Sub:
-    return inputX.sub(inputY);
-  default:
-    __builtin_unreachable();
-  }
-}
-
-template <typename InputType>
-cpp::enable_if_t<cpp::is_floating_point_v<InputType>, MPFRNumber>
-binary_operation_two_outputs(Operation op, InputType x, InputType y,
-                             int &output, unsigned int precision,
-                             RoundingMode rounding) {
-  MPFRNumber inputX(x, precision, rounding);
-  MPFRNumber inputY(y, precision, rounding);
-  switch (op) {
-  case Operation::RemQuo:
-    return inputX.remquo(inputY, output);
-  default:
-    __builtin_unreachable();
-  }
-}
-
-template <typename InputType>
-cpp::enable_if_t<cpp::is_floating_point_v<InputType>, MPFRNumber>
-ternary_operation_one_output(Operation op, InputType x, InputType y,
-                             InputType z, unsigned int precision,
-                             RoundingMode rounding) {
-  // For FMA function, we just need to compare with the mpfr_fma with the same
-  // precision as InputType.  Using higher precision as the intermediate results
-  // to compare might incorrectly fail due to double-rounding errors.
-  MPFRNumber inputX(x, precision, rounding);
-  MPFRNumber inputY(y, precision, rounding);
-  MPFRNumber inputZ(z, precision, rounding);
-  switch (op) {
-  case Operation::Fma:
-    return inputX.fma(inputY, inputZ);
-  default:
-    __builtin_unreachable();
-  }
-}
-
-// Remark: For all the explain_*_error functions, we will use std::stringstream
-// to build the complete error messages before sending it to the outstream `OS`
-// once at the end.  This will stop the error messages from interleaving when
-// the tests are running concurrently.
-template <typename InputType, typename OutputType>
-void explain_unary_operation_single_output_error(Operation op, InputType input,
-                                                 OutputType matchValue,
-                                                 double ulp_tolerance,
-                                                 RoundingMode rounding) {
-  unsigned int precision = get_precision<InputType>(ulp_tolerance);
-  MPFRNumber mpfrInput(input, precision);
-  MPFRNumber mpfr_result;
-  mpfr_result = unary_operation(op, input, precision, rounding);
-  MPFRNumber mpfrMatchValue(matchValue);
-  cpp::array<char, 1024> msg_buf;
-  cpp::StringStream msg(msg_buf);
-  msg << "Match value not within tolerance value of MPFR result:\n"
-      << "  Input decimal: " << mpfrInput.str() << '\n';
-  msg << "     Input bits: " << str(FPBits<InputType>(input)) << '\n';
-  msg << '\n' << "  Match decimal: " << mpfrMatchValue.str() << '\n';
-  msg << "     Match bits: " << str(FPBits<OutputType>(matchValue)) << '\n';
-  msg << '\n' << "    MPFR result: " << mpfr_result.str() << '\n';
-  msg << "   MPFR rounded: "
-      << str(FPBits<OutputType>(mpfr_result.as<OutputType>())) << '\n';
-  msg << '\n';
-  msg << "      ULP error: " << mpfr_result.ulp_as_mpfr_number(matchValue).str()
-      << '\n';
-  if (msg.overflow())
-    __builtin_unreachable();
-  tlog << msg.str();
-}
-
-template void explain_unary_operation_single_output_error(Operation op, float,
-                                                          float, double,
-                                                          RoundingMode);
-template void explain_unary_operation_single_output_error(Operation op, double,
-                                                          double, double,
-                                                          RoundingMode);
-template void explain_unary_operation_single_output_error(Operation op,
-                                                          long double,
-                                                          long double, double,
-                                                          RoundingMode);
-template void explain_unary_operation_single_output_error(Operation op, double,
-                                                          float, double,
-                                                          RoundingMode);
-template void explain_unary_operation_single_output_error(Operation op,
-                                                          long double, float,
-                                                          double, RoundingMode);
-template void explain_unary_operation_single_output_error(Operation op,
-                                                          long double, double,
-                                                          double, RoundingMode);
-
-#ifdef LIBC_TYPES_HAS_FLOAT16
-template void explain_unary_operation_single_output_error(Operation op, float16,
-                                                          float16, double,
-                                                          RoundingMode);
-template void explain_unary_operation_single_output_error(Operation op, float,
-                                                          float16, double,
-                                                          RoundingMode);
-template void explain_unary_operation_single_output_error(Operation op, double,
-                                                          float16, double,
-                                                          RoundingMode);
-template void explain_unary_operation_single_output_error(Operation op,
-                                                          long double, float16,
-                                                          double, RoundingMode);
-#ifdef LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE
-template void explain_unary_operation_single_output_error(Operation op,
-                                                          float128, float16,
-                                                          double, RoundingMode);
-#endif // LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE
-#endif // LIBC_TYPES_HAS_FLOAT16
-
-#ifdef LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE
-template void explain_unary_operation_single_output_error(Operation op,
-                                                          float128, float128,
-                                                          double, RoundingMode);
-template void explain_unary_operation_single_output_error(Operation op,
-                                                          float128, float,
-                                                          double, RoundingMode);
-template void explain_unary_operation_single_output_error(Operation op,
-                                                          float128, double,
-                                                          double, RoundingMode);
-template void explain_unary_operation_single_output_error(Operation op,
-                                                          float128, long double,
-                                                          double, RoundingMode);
-#endif // LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE
-
-template void explain_unary_operation_single_output_error(Operation op,
-                                                          bfloat16, bfloat16,
-                                                          double, RoundingMode);
-
-template <typename T>
-void explain_unary_operation_two_outputs_error(
-    Operation op, T input, const BinaryOutput<T> &libc_result,
-    double ulp_tolerance, RoundingMode rounding) {
-  unsigned int precision = get_precision<T>(ulp_tolerance);
-  MPFRNumber mpfrInput(input, precision);
-  int mpfrIntResult;
-  MPFRNumber mpfr_result = unary_operation_two_outputs(op, input, mpfrIntResult,
-                                                       precision, rounding);
-
-  if (mpfrIntResult != libc_result.i) {
-    tlog << "MPFR integral result: " << mpfrIntResult << '\n'
-         << "Libc integral result: " << libc_result.i << '\n';
-  } else {
-    tlog << "Integral result from libc matches integral result from MPFR.\n";
-  }
-
-  MPFRNumber mpfrMatchValue(libc_result.f);
-  tlog
-      << "Libc floating point result is not within tolerance value of the MPFR "
-      << "result.\n\n";
-
-  tlog << "            Input decimal: " << mpfrInput.str() << "\n\n";
-
-  tlog << "Libc floating point value: " << mpfrMatchValue.str() << '\n';
-  tlog << " Libc floating point bits: " << str(FPBits<T>(libc_result.f))
-       << '\n';
-  tlog << "\n\n";
-
-  tlog << "              MPFR result: " << mpfr_result.str() << '\n';
-  tlog << "             MPFR rounded: " << str(FPBits<T>(mpfr_result.as<T>()))
-       << '\n';
-  tlog << '\n'
-       << "                ULP error: "
-       << mpfr_result.ulp_as_mpfr_number(libc_result.f).str() << '\n';
-}
-
-template void explain_unary_operation_two_outputs_error<float>(
-    Operation, float, const BinaryOutput<float> &, double, RoundingMode);
-template void explain_unary_operation_two_outputs_error<double>(
-    Operation, double, const BinaryOutput<double> &, double, RoundingMode);
-template void explain_unary_operation_two_outputs_error<long double>(
-    Operation, long double, const BinaryOutput<long double> &, double,
-    RoundingMode);
-
-template <typename T>
-void explain_binary_operation_two_outputs_error(
-    Operation op, const BinaryInput<T> &input,
-    const BinaryOutput<T> &libc_result, double ulp_tolerance,
-    RoundingMode rounding) {
-  unsigned int precision = get_precision<T>(ulp_tolerance);
-  MPFRNumber mpfrX(input.x, precision);
-  MPFRNumber mpfrY(input.y, precision);
-  int mpfrIntResult;
-  MPFRNumber mpfr_result = binary_operation_two_outputs(
-      op, input.x, input.y, mpfrIntResult, precision, rounding);
-  MPFRNumber mpfrMatchValue(libc_result.f);
-
-  tlog << "Input decimal: x: " << mpfrX.str() << " y: " << mpfrY.str() << '\n'
-       << "MPFR integral result: " << mpfrIntResult << '\n'
-       << "Libc integral result: " << libc_result.i << '\n'
-       << "Libc floating point result: " << mpfrMatchValue.str() << '\n'
-       << "               MPFR result: " << mpfr_result.str() << '\n';
-  tlog << "Libc floating point result bits: " << str(FPBits<T>(libc_result.f))
-       << '\n';
-  tlog << "              MPFR rounded bits: "
-       << str(FPBits<T>(mpfr_result.as<T>())) << '\n';
-  tlog << "ULP error: " << mpfr_result.ulp_as_mpfr_number(libc_result.f).str()
-       << '\n';
-}
-
-template void explain_binary_operation_two_outputs_error<float>(
-    Operation, const BinaryInput<float> &, const BinaryOutput<float> &, double,
-    RoundingMode);
-template void explain_binary_operation_two_outputs_error<double>(
-    Operation, const BinaryInput<double> &, const BinaryOutput<double> &,
-    double, RoundingMode);
-template void explain_binary_operation_two_outputs_error<long double>(
-    Operation, const BinaryInput<long double> &,
-    const BinaryOutput<long double> &, double, RoundingMode);
-
-template <typename InputType, typename OutputType>
-void explain_binary_operation_one_output_error(
-    Operation op, const BinaryInput<InputType> &input, OutputType libc_result,
-    double ulp_tolerance, RoundingMode rounding) {
-  unsigned int precision = get_precision<InputType>(ulp_tolerance);
-  MPFRNumber mpfrX(input.x, precision);
-  MPFRNumber mpfrY(input.y, precision);
-  FPBits<InputType> xbits(input.x);
-  FPBits<InputType> ybits(input.y);
-  MPFRNumber mpfr_result =
-      binary_operation_one_output(op, input.x, input.y, precision, rounding);
-  MPFRNumber mpfrMatchValue(libc_result);
-
-  tlog << "Input decimal: x: " << mpfrX.str() << " y: " << mpfrY.str() << '\n';
-  tlog << "First input bits: " << str(FPBits<InputType>(input.x)) << '\n';
-  tlog << "Second input bits: " << str(FPBits<InputType>(input.y)) << '\n';
-
-  tlog << "Libc result: " << mpfrMatchValue.str() << '\n'
-       << "MPFR result: " << mpfr_result.str() << '\n';
-  tlog << "Libc floating point result bits: "
-       << str(FPBits<OutputType>(libc_result)) << '\n';
-  tlog << "              MPFR rounded bits: "
-       << str(FPBits<OutputType>(mpfr_result.as<OutputType>())) << '\n';
-  tlog << "ULP error: " << mpfr_result.ulp_as_mpfr_number(libc_result).str()
-       << '\n';
-}
-
-template void
-explain_binary_operation_one_output_error(Operation, const BinaryInput<float> &,
-                                          float, double, RoundingMode);
-template void explain_binary_operation_one_output_error(
-    Operation, const BinaryInput<double> &, float, double, RoundingMode);
-template void explain_binary_operation_one_output_error(
-    Operation, const BinaryInput<double> &, double, double, RoundingMode);
-template void explain_binary_operation_one_output_error(
-    Operation, const BinaryInput<long double> &, float, double, RoundingMode);
-template void explain_binary_operation_one_output_error(
-    Operation, const BinaryInput<long double> &, double, double, RoundingMode);
-template void
-explain_binary_operation_one_output_error(Operation,
-                                          const BinaryInput<long double> &,
-                                          long double, double, RoundingMode);
-#ifdef LIBC_TYPES_HAS_FLOAT16
-template void explain_binary_operation_one_output_error(
-    Operation, const BinaryInput<float16> &, float16, double, RoundingMode);
-template void
-explain_binary_operation_one_output_error(Operation, const BinaryInput<float> &,
-                                          float16, double, RoundingMode);
-template void explain_binary_operation_one_output_error(
-    Operation, const BinaryInput<double> &, float16, double, RoundingMode);
-template void explain_binary_operation_one_output_error(
-    Operation, const BinaryInput<long double> &, float16, double, RoundingMode);
-#endif
-#if defined(LIBC_TYPES_HAS_FLOAT128) &&                                        \
-    defined(LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE)
-template void explain_binary_operation_one_output_error(
-    Operation, const BinaryInput<float128> &, float128, double, RoundingMode);
-#endif
-template void explain_binary_operation_one_output_error(
-    Operation, const BinaryInput<bfloat16> &, bfloat16, double, RoundingMode);
-template void
-explain_binary_operation_one_output_error(Operation, const BinaryInput<float> &,
-                                          bfloat16, double, RoundingMode);
-template void explain_binary_operation_one_output_error(
-    Operation, const BinaryInput<double> &, bfloat16, double, RoundingMode);
-template void
-explain_binary_operation_one_output_error(Operation,
-                                          const BinaryInput<long double> &,
-                                          bfloat16, double, RoundingMode);
-#if defined(LIBC_TYPES_HAS_FLOAT128) &&                                        \
-    defined(LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE)
-template void explain_binary_operation_one_output_error(
-    Operation, const BinaryInput<float128> &, bfloat16, double, RoundingMode);
-#endif // defined(LIBC_TYPES_HAS_FLOAT128) &&
-       // defined(LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE)
-
-template <typename InputType, typename OutputType>
-void explain_ternary_operation_one_output_error(
-    Operation op, const TernaryInput<InputType> &input, OutputType libc_result,
-    double ulp_tolerance, RoundingMode rounding) {
-  unsigned int precision = get_precision<InputType>(ulp_tolerance);
-  MPFRNumber mpfrX(input.x, precision);
-  MPFRNumber mpfrY(input.y, precision);
-  MPFRNumber mpfrZ(input.z, precision);
-  FPBits<InputType> xbits(input.x);
-  FPBits<InputType> ybits(input.y);
-  FPBits<InputType> zbits(input.z);
-  MPFRNumber mpfr_result = ternary_operation_one_output(
-      op, input.x, input.y, input.z, precision, rounding);
-  MPFRNumber mpfrMatchValue(libc_result);
-
-  tlog << "Input decimal: x: " << mpfrX.str() << " y: " << mpfrY.str()
-       << " z: " << mpfrZ.str() << '\n';
-  tlog << " First input bits: " << str(FPBits<InputType>(input.x)) << '\n';
-  tlog << "Second input bits: " << str(FPBits<InputType>(input.y)) << '\n';
-  tlog << " Third input bits: " << str(FPBits<InputType>(input.z)) << '\n';
-
-  tlog << "Libc result: " << mpfrMatchValue.str() << '\n'
-       << "MPFR result: " << mpfr_result.str() << '\n';
-  tlog << "Libc floating point result bits: "
-       << str(FPBits<OutputType>(libc_result)) << '\n';
-  tlog << "              MPFR rounded bits: "
-       << str(FPBits<OutputType>(mpfr_result.as<OutputType>())) << '\n';
-  tlog << "ULP error: " << mpfr_result.ulp_as_mpfr_number(libc_result).str()
-       << '\n';
-}
-
-template void explain_ternary_operation_one_output_error(
-    Operation, const TernaryInput<float> &, float, double, RoundingMode);
-template void explain_ternary_operation_one_output_error(
-    Operation, const TernaryInput<double> &, float, double, RoundingMode);
-template void explain_ternary_operation_one_output_error(
-    Operation, const TernaryInput<double> &, double, double, RoundingMode);
-template void explain_ternary_operation_one_output_error(
-    Operation, const TernaryInput<long double> &, float, double, RoundingMode);
-template void explain_ternary_operation_one_output_error(
-    Operation, const TernaryInput<long double> &, double, double, RoundingMode);
-template void
-explain_ternary_operation_one_output_error(Operation,
-                                           const TernaryInput<long double> &,
-                                           long double, double, RoundingMode);
-
-#ifdef LIBC_TYPES_HAS_FLOAT16
-template void explain_ternary_operation_one_output_error(
-    Operation, const TernaryInput<float16> &, float16, double, RoundingMode);
-template void explain_ternary_operation_one_output_error(
-    Operation, const TernaryInput<float> &, float16, double, RoundingMode);
-template void explain_ternary_operation_one_output_error(
-    Operation, const TernaryInput<double> &, float16, double, RoundingMode);
-template void
-explain_ternary_operation_one_output_error(Operation,
-                                           const TernaryInput<long double> &,
-                                           float16, double, RoundingMode);
-#endif
-
-template void explain_ternary_operation_one_output_error(
-    Operation, const TernaryInput<float> &, bfloat16, double, RoundingMode);
-template void explain_ternary_operation_one_output_error(
-    Operation, const TernaryInput<double> &, bfloat16, double, RoundingMode);
-template void
-explain_ternary_operation_one_output_error(Operation,
-                                           const TernaryInput<long double> &,
-                                           bfloat16, double, RoundingMode);
-#if defined(LIBC_TYPES_HAS_FLOAT128) &&                                        \
-    defined(LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE)
-template void explain_ternary_operation_one_output_error(
-    Operation, const TernaryInput<float128> &, bfloat16, double, RoundingMode);
-#endif // defined(LIBC_TYPES_HAS_FLOAT128) &&
-       // defined(LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE)
-
-template <typename InputType, typename OutputType>
-bool compare_unary_operation_single_output(Operation op, InputType input,
-                                           OutputType libc_result,
-                                           double ulp_tolerance,
-                                           RoundingMode rounding) {
-  unsigned int precision = get_precision<InputType>(ulp_tolerance);
-  MPFRNumber mpfr_result;
-  mpfr_result = unary_operation(op, input, precision, rounding);
-  double ulp = mpfr_result.ulp(libc_result);
-  return (ulp <= ulp_tolerance);
-}
-
-template bool compare_unary_operation_single_output(Operation, float, float,
-                                                    double, RoundingMode);
-template bool compare_unary_operation_single_output(Operation, double, double,
-                                                    double, RoundingMode);
-template bool compare_unary_operation_single_output(Operation, long double,
-                                                    long double, double,
-                                                    RoundingMode);
-template bool compare_unary_operation_single_output(Operation, double, float,
-                                                    double, RoundingMode);
-template bool compare_unary_operation_single_output(Operation, long double,
-                                                    float, double,
-                                                    RoundingMode);
-template bool compare_unary_operation_single_output(Operation, long double,
-                                                    double, double,
-                                                    RoundingMode);
-#ifdef LIBC_TYPES_HAS_FLOAT16
-template bool compare_unary_operation_single_output(Operation, float16, float16,
-                                                    double, RoundingMode);
-template bool compare_unary_operation_single_output(Operation, float, float16,
-                                                    double, RoundingMode);
-template bool compare_unary_operation_single_output(Operation, double, float16,
-                                                    double, RoundingMode);
-template bool compare_unary_operation_single_output(Operation, long double,
-                                                    float16, double,
-                                                    RoundingMode);
-#ifdef LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE
-template bool compare_unary_operation_single_output(Operation, float128,
-                                                    float16, double,
-                                                    RoundingMode);
-#endif // LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE
-#endif // LIBC_TYPES_HAS_FLOAT16
-
-#ifdef LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE
-template bool compare_unary_operation_single_output(Operation, float128,
-                                                    float128, double,
-                                                    RoundingMode);
-template bool compare_unary_operation_single_output(Operation, float128, float,
-                                                    double, RoundingMode);
-template bool compare_unary_operation_single_output(Operation, float128, double,
-                                                    double, RoundingMode);
-template bool compare_unary_operation_single_output(Operation, float128,
-                                                    long double, double,
-                                                    RoundingMode);
-#endif // LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE
-template bool compare_unary_operation_single_output(Operation, bfloat16,
-                                                    bfloat16, double,
-                                                    RoundingMode);
-
-template <typename T>
-bool compare_unary_operation_two_outputs(Operation op, T input,
-                                         const BinaryOutput<T> &libc_result,
-                                         double ulp_tolerance,
-                                         RoundingMode rounding) {
-  int mpfrIntResult;
-  unsigned int precision = get_precision<T>(ulp_tolerance);
-  MPFRNumber mpfr_result = unary_operation_two_outputs(op, input, mpfrIntResult,
-                                                       precision, rounding);
-  double ulp = mpfr_result.ulp(libc_result.f);
-
-  if (mpfrIntResult != libc_result.i)
-    return false;
-
-  return (ulp <= ulp_tolerance);
-}
-
-template bool compare_unary_operation_two_outputs<float>(
-    Operation, float, const BinaryOutput<float> &, double, RoundingMode);
-template bool compare_unary_operation_two_outputs<double>(
-    Operation, double, const BinaryOutput<double> &, double, RoundingMode);
-template bool compare_unary_operation_two_outputs<long double>(
-    Operation, long double, const BinaryOutput<long double> &, double,
-    RoundingMode);
-
-template <typename T>
-bool compare_binary_operation_two_outputs(Operation op,
-                                          const BinaryInput<T> &input,
-                                          const BinaryOutput<T> &libc_result,
-                                          double ulp_tolerance,
-                                          RoundingMode rounding) {
-  int mpfrIntResult;
-  unsigned int precision = get_precision<T>(ulp_tolerance);
-  MPFRNumber mpfr_result = binary_operation_two_outputs(
-      op, input.x, input.y, mpfrIntResult, precision, rounding);
-  double ulp = mpfr_result.ulp(libc_result.f);
-
-  if (mpfrIntResult != libc_result.i) {
-    if (op == Operation::RemQuo) {
-      if ((0x7 & mpfrIntResult) != (0x7 & libc_result.i))
-        return false;
-    } else {
-      return false;
-    }
-  }
-
-  return (ulp <= ulp_tolerance);
-}
-
-template bool compare_binary_operation_two_outputs<float>(
-    Operation, const BinaryInput<float> &, const BinaryOutput<float> &, double,
-    RoundingMode);
-template bool compare_binary_operation_two_outputs<double>(
-    Operation, const BinaryInput<double> &, const BinaryOutput<double> &,
-    double, RoundingMode);
-template bool compare_binary_operation_two_outputs<long double>(
-    Operation, const BinaryInput<long double> &,
-    const BinaryOutput<long double> &, double, RoundingMode);
-
-template <typename InputType, typename OutputType>
-bool compare_binary_operation_one_output(Operation op,
-                                         const BinaryInput<InputType> &input,
-                                         OutputType libc_result,
-                                         double ulp_tolerance,
-                                         RoundingMode rounding) {
-  unsigned int precision = get_precision<InputType>(ulp_tolerance);
-  MPFRNumber mpfr_result =
-      binary_operation_one_output(op, input.x, input.y, precision, rounding);
-  double ulp = mpfr_result.ulp(libc_result);
-
-  return (ulp <= ulp_tolerance);
-}
-
-template bool compare_binary_operation_one_output(Operation,
-                                                  const BinaryInput<float> &,
-                                                  float, double, RoundingMode);
-template bool compare_binary_operation_one_output(Operation,
-                                                  const BinaryInput<double> &,
-                                                  double, double, RoundingMode);
-template bool
-compare_binary_operation_one_output(Operation, const BinaryInput<long double> &,
-                                    float, double, RoundingMode);
-template bool
-compare_binary_operation_one_output(Operation, const BinaryInput<long double> &,
-                                    double, double, RoundingMode);
-template bool
-compare_binary_operation_one_output(Operation, const BinaryInput<long double> &,
-                                    long double, double, RoundingMode);
-
-template bool compare_binary_operation_one_output(Operation,
-                                                  const BinaryInput<double> &,
-                                                  float, double, RoundingMode);
-#ifdef LIBC_TYPES_HAS_FLOAT16
-template bool compare_binary_operation_one_output(Operation,
-                                                  const BinaryInput<float16> &,
-                                                  float16, double,
-                                                  RoundingMode);
-template bool compare_binary_operation_one_output(Operation,
-                                                  const BinaryInput<float> &,
-                                                  float16, double,
-                                                  RoundingMode);
-template bool compare_binary_operation_one_output(Operation,
-                                                  const BinaryInput<double> &,
-                                                  float16, double,
-                                                  RoundingMode);
-template bool
-compare_binary_operation_one_output(Operation, const BinaryInput<long double> &,
-                                    float16, double, RoundingMode);
-#endif
-#if defined(LIBC_TYPES_HAS_FLOAT128) &&                                        \
-    defined(LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE)
-template bool compare_binary_operation_one_output(Operation,
-                                                  const BinaryInput<float128> &,
-                                                  float128, double,
-                                                  RoundingMode);
-#endif
-template bool compare_binary_operation_one_output(Operation,
-                                                  const BinaryInput<bfloat16> &,
-                                                  bfloat16, double,
-                                                  RoundingMode);
-
-template bool compare_binary_operation_one_output(Operation,
-                                                  const BinaryInput<float> &,
-                                                  bfloat16, double,
-                                                  RoundingMode);
-template bool compare_binary_operation_one_output(Operation,
-                                                  const BinaryInput<double> &,
-                                                  bfloat16, double,
-                                                  RoundingMode);
-template bool
-compare_binary_operation_one_output(Operation, const BinaryInput<long double> &,
-                                    bfloat16, double, RoundingMode);
-#if defined(LIBC_TYPES_HAS_FLOAT128) &&                                        \
-    defined(LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE)
-template bool compare_binary_operation_one_output(Operation,
-                                                  const BinaryInput<float128> &,
-                                                  bfloat16, double,
-                                                  RoundingMode);
-#endif // defined(LIBC_TYPES_HAS_FLOAT128) &&
-       // defined(LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE)
-template <typename InputType, typename OutputType>
-bool compare_ternary_operation_one_output(Operation op,
-                                          const TernaryInput<InputType> &input,
-                                          OutputType libc_result,
-                                          double ulp_tolerance,
-                                          RoundingMode rounding) {
-  unsigned int precision = get_precision<InputType>(ulp_tolerance);
-  MPFRNumber mpfr_result = ternary_operation_one_output(
-      op, input.x, input.y, input.z, precision, rounding);
-  double ulp = mpfr_result.ulp(libc_result);
-
-  return (ulp <= ulp_tolerance);
-}
-
-template bool compare_ternary_operation_one_output(Operation,
-                                                   const TernaryInput<float> &,
-                                                   float, double, RoundingMode);
-template bool compare_ternary_operation_one_output(Operation,
-                                                   const TernaryInput<double> &,
-                                                   float, double, RoundingMode);
-template bool compare_ternary_operation_one_output(Operation,
-                                                   const TernaryInput<double> &,
-                                                   double, double,
-                                                   RoundingMode);
-template bool compare_ternary_operation_one_output(
-    Operation, const TernaryInput<long double> &, float, double, RoundingMode);
-template bool compare_ternary_operation_one_output(
-    Operation, const TernaryInput<long double> &, double, double, RoundingMode);
-template bool
-compare_ternary_operation_one_output(Operation,
-                                     const TernaryInput<long double> &,
-                                     long double, double, RoundingMode);
-
-#ifdef LIBC_TYPES_HAS_FLOAT16
-template bool
-compare_ternary_operation_one_output(Operation, const TernaryInput<float16> &,
-                                     float16, double, RoundingMode);
-template bool compare_ternary_operation_one_output(Operation,
-                                                   const TernaryInput<float> &,
-                                                   float16, double,
-                                                   RoundingMode);
-template bool compare_ternary_operation_one_output(Operation,
-                                                   const TernaryInput<double> &,
-                                                   float16, double,
-                                                   RoundingMode);
-template bool
-compare_ternary_operation_one_output(Operation,
-                                     const TernaryInput<long double> &, float16,
-                                     double, RoundingMode);
-#endif
-
-template bool compare_ternary_operation_one_output(Operation,
-                                                   const TernaryInput<float> &,
-                                                   bfloat16, double,
-                                                   RoundingMode);
-template bool compare_ternary_operation_one_output(Operation,
-                                                   const TernaryInput<double> &,
-                                                   bfloat16, double,
-                                                   RoundingMode);
-template bool
-compare_ternary_operation_one_output(Operation,
-                                     const TernaryInput<long double> &,
-                                     bfloat16, double, RoundingMode);
-
-#if defined(LIBC_TYPES_HAS_FLOAT128) &&                                        \
-    defined(LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE)
-template bool
-compare_ternary_operation_one_output(Operation, const TernaryInput<float128> &,
-                                     bfloat16, double, RoundingMode);
-#endif // defined(LIBC_TYPES_HAS_FLOAT128) &&
-       // defined(LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE)
-
-} // namespace internal
-
-template <typename T> bool round_to_long(T x, long &result) {
-  MPFRNumber mpfr(x);
-  return mpfr.round_to_long(result);
-}
-
-template bool round_to_long<float>(float, long &);
-template bool round_to_long<double>(double, long &);
-template bool round_to_long<long double>(long double, long &);
-
-#ifdef LIBC_TYPES_HAS_FLOAT16
-template bool round_to_long<float16>(float16, long &);
-#endif // LIBC_TYPES_HAS_FLOAT16
-
-#ifdef LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE
-template bool round_to_long<float128>(float128, long &);
-#endif // LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE
-
-template bool round_to_long<bfloat16>(bfloat16, long &);
-
-template <typename T> bool round_to_long(T x, RoundingMode mode, long &result) {
-  MPFRNumber mpfr(x);
-  return mpfr.round_to_long(get_mpfr_rounding_mode(mode), result);
-}
-
-template bool round_to_long<float>(float, RoundingMode, long &);
-template bool round_to_long<double>(double, RoundingMode, long &);
-template bool round_to_long<long double>(long double, RoundingMode, long &);
-
-#ifdef LIBC_TYPES_HAS_FLOAT16
-template bool round_to_long<float16>(float16, RoundingMode, long &);
-#endif // LIBC_TYPES_HAS_FLOAT16
-
-#ifdef LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE
-template bool round_to_long<float128>(float128, RoundingMode, long &);
-#endif // LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE
-
-template bool round_to_long<bfloat16>(bfloat16, RoundingMode, long &);
-
-template <typename T> T round(T x, RoundingMode mode) {
-  MPFRNumber mpfr(x);
-  MPFRNumber result = mpfr.rint(get_mpfr_rounding_mode(mode));
-  return result.as<T>();
-}
-
-template float round<float>(float, RoundingMode);
-template double round<double>(double, RoundingMode);
-template long double round<long double>(long double, RoundingMode);
-
-#ifdef LIBC_TYPES_HAS_FLOAT16
-template float16 round<float16>(float16, RoundingMode);
-#endif // LIBC_TYPES_HAS_FLOAT16
-
-#ifdef LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE
-template float128 round<float128>(float128, RoundingMode);
-#endif // LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE
-
-template bfloat16 round<bfloat16>(bfloat16, RoundingMode);
-
-} // namespace mpfr
-} // namespace testing
-} // namespace LIBC_NAMESPACE_DECL
+//===-- Utils which wrap MPFR ---------------------------------------------===//
+//
+// 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 "MPFRUtils.h"
+#include "MPCommon.h"
+
+#include "src/__support/CPP/array.h"
+#include "src/__support/CPP/stringstream.h"
+#include "src/__support/FPUtil/bfloat16.h"
+#include "src/__support/FPUtil/fpbits_str.h"
+#include "src/__support/macros/config.h"
+#include "src/__support/macros/properties/types.h"
+
+namespace LIBC_NAMESPACE_DECL {
+namespace testing {
+namespace mpfr {
+namespace internal {
+
+template <typename InputType>
+cpp::enable_if_t<cpp::is_floating_point_v<InputType>, MPFRNumber>
+unary_operation(Operation op, InputType input, unsigned int precision,
+                RoundingMode rounding) {
+  MPFRNumber mpfrInput(input, precision, rounding);
+  switch (op) {
+  case Operation::Abs:
+    return mpfrInput.abs();
+  case Operation::Acos:
+    return mpfrInput.acos();
+  case Operation::Acosh:
+    return mpfrInput.acosh();
+  case Operation::Acospi:
+    return mpfrInput.acospi();
+  case Operation::Asin:
+    return mpfrInput.asin();
+  case Operation::Asinh:
+    return mpfrInput.asinh();
+  case Operation::Asinpi:
+    return mpfrInput.asinpi();
+  case Operation::Atan:
+    return mpfrInput.atan();
+  case Operation::Atanh:
+    return mpfrInput.atanh();
+  case Operation::Atanpi:
+    return mpfrInput.atanpi();
+  case Operation::Cbrt:
+    return mpfrInput.cbrt();
+  case Operation::Ceil:
+    return mpfrInput.ceil();
+  case Operation::Cos:
+    return mpfrInput.cos();
+  case Operation::Cosh:
+    return mpfrInput.cosh();
+  case Operation::Cospi:
+    return mpfrInput.cospi();
+  case Operation::Erf:
+    return mpfrInput.erf();
+  case Operation::Exp:
+    return mpfrInput.exp();
+  case Operation::Exp2:
+    return mpfrInput.exp2();
+  case Operation::Exp2m1:
+    return mpfrInput.exp2m1();
+  case Operation::Exp10:
+    return mpfrInput.exp10();
+  case Operation::Exp10m1:
+    return mpfrInput.exp10m1();
+  case Operation::Expm1:
+    return mpfrInput.expm1();
+  case Operation::Floor:
+    return mpfrInput.floor();
+  case Operation::Log:
+    return mpfrInput.log();
+  case Operation::Log2:
+    return mpfrInput.log2();
+  case Operation::Log10:
+    return mpfrInput.log10();
+  case Operation::Log1p:
+    return mpfrInput.log1p();
+  case Operation::Mod2PI:
+    return mpfrInput.mod_2pi();
+  case Operation::ModPIOver2:
+    return mpfrInput.mod_pi_over_2();
+  case Operation::ModPIOver4:
+    return mpfrInput.mod_pi_over_4();
+  case Operation::Round:
+    return mpfrInput.round();
+  case Operation::RoundEven:
+    return mpfrInput.roundeven();
+  case Operation::Rsqrt:
+    return mpfrInput.rsqrt();
+  case Operation::Sin:
+    return mpfrInput.sin();
+  case Operation::Sinpi:
+    return mpfrInput.sinpi();
+  case Operation::Sinh:
+    return mpfrInput.sinh();
+  case Operation::Sqrt:
+    return mpfrInput.sqrt();
+  case Operation::Tan:
+    return mpfrInput.tan();
+  case Operation::Tanh:
+    return mpfrInput.tanh();
+  case Operation::Tanpi:
+    return mpfrInput.tanpi();
+  case Operation::Trunc:
+    return mpfrInput.trunc();
+  default:
+    __builtin_unreachable();
+  }
+}
+
+template <typename InputType>
+cpp::enable_if_t<cpp::is_floating_point_v<InputType>, MPFRNumber>
+unary_operation_two_outputs(Operation op, InputType input, int &output,
+                            unsigned int precision, RoundingMode rounding) {
+  MPFRNumber mpfrInput(input, precision, rounding);
+  switch (op) {
+  case Operation::Frexp:
+    return mpfrInput.frexp(output);
+  default:
+    __builtin_unreachable();
+  }
+}
+
+template <typename InputType>
+cpp::enable_if_t<cpp::is_floating_point_v<InputType>, MPFRNumber>
+binary_operation_one_output(Operation op, InputType x, InputType y,
+                            unsigned int precision, RoundingMode rounding) {
+  MPFRNumber inputX(x, precision, rounding);
+  MPFRNumber inputY(y, precision, rounding);
+  switch (op) {
+  case Operation::Add:
+    return inputX.add(inputY);
+  case Operation::Atan2:
+    return inputX.atan2(inputY);
+  case Operation::Div:
+    return inputX.div(inputY);
+  case Operation::Fmod:
+    return inputX.fmod(inputY);
+  case Operation::Hypot:
+    return inputX.hypot(inputY);
+  case Operation::Mul:
+    return inputX.mul(inputY);
+  case Operation::Pow:
+    return inputX.pow(inputY);
+  case Operation::Sub:
+    return inputX.sub(inputY);
+  default:
+    __builtin_unreachable();
+  }
+}
+
+template <typename InputType>
+cpp::enable_if_t<cpp::is_floating_point_v<InputType>, MPFRNumber>
+binary_operation_two_outputs(Operation op, InputType x, InputType y,
+                             int &output, unsigned int precision,
+                             RoundingMode rounding) {
+  MPFRNumber inputX(x, precision, rounding);
+  MPFRNumber inputY(y, precision, rounding);
+  switch (op) {
+  case Operation::RemQuo:
+    return inputX.remquo(inputY, output);
+  default:
+    __builtin_unreachable();
+  }
+}
+
+template <typename InputType>
+cpp::enable_if_t<cpp::is_floating_point_v<InputType>, MPFRNumber>
+ternary_operation_one_output(Operation op, InputType x, InputType y,
+                             InputType z, unsigned int precision,
+                             RoundingMode rounding) {
+  // For FMA function, we just need to compare with the mpfr_fma with the same
+  // precision as InputType.  Using higher precision as the intermediate results
+  // to compare might incorrectly fail due to double-rounding errors.
+  MPFRNumber inputX(x, precision, rounding);
+  MPFRNumber inputY(y, precision, rounding);
+  MPFRNumber inputZ(z, precision, rounding);
+  switch (op) {
+  case Operation::Fma:
+    return inputX.fma(inputY, inputZ);
+  default:
+    __builtin_unreachable();
+  }
+}
+
+// Remark: For all the explain_*_error functions, we will use std::stringstream
+// to build the complete error messages before sending it to the outstream `OS`
+// once at the end.  This will stop the error messages from interleaving when
+// the tests are running concurrently.
+template <typename InputType, typename OutputType>
+void explain_unary_operation_single_output_error(Operation op, InputType input,
+                                                 OutputType matchValue,
+                                                 double ulp_tolerance,
+                                                 RoundingMode rounding) {
+  unsigned int precision = get_precision<InputType>(ulp_tolerance);
+  MPFRNumber mpfrInput(input, precision);
+  MPFRNumber mpfr_result;
+  mpfr_result = unary_operation(op, input, precision, rounding);
+  MPFRNumber mpfrMatchValue(matchValue);
+  cpp::array<char, 1024> msg_buf;
+  cpp::StringStream msg(msg_buf);
+  msg << "Match value not within tolerance value of MPFR result:\n"
+      << "  Input decimal: " << mpfrInput.str() << '\n';
+  msg << "     Input bits: " << str(FPBits<InputType>(input)) << '\n';
+  msg << '\n' << "  Match decimal: " << mpfrMatchValue.str() << '\n';
+  msg << "     Match bits: " << str(FPBits<OutputType>(matchValue)) << '\n';
+  msg << '\n' << "    MPFR result: " << mpfr_result.str() << '\n';
+  msg << "   MPFR rounded: "
+      << str(FPBits<OutputType>(mpfr_result.as<OutputType>())) << '\n';
+  msg << '\n';
+  msg << "      ULP error: " << mpfr_result.ulp_as_mpfr_number(matchValue).str()
+      << '\n';
+  if (msg.overflow())
+    __builtin_unreachable();
+  tlog << msg.str();
+}
+
+template void explain_unary_operation_single_output_error(Operation op, float,
+                                                          float, double,
+                                                          RoundingMode);
+template void explain_unary_operation_single_output_error(Operation op, double,
+                                                          double, double,
+                                                          RoundingMode);
+template void explain_unary_operation_single_output_error(Operation op,
+                                                          long double,
+                                                          long double, double,
+                                                          RoundingMode);
+template void explain_unary_operation_single_output_error(Operation op, double,
+                                                          float, double,
+                                                          RoundingMode);
+template void explain_unary_operation_single_output_error(Operation op,
+                                                          long double, float,
+                                                          double, RoundingMode);
+template void explain_unary_operation_single_output_error(Operation op,
+                                                          long double, double,
+                                                          double, RoundingMode);
+
+#ifdef LIBC_TYPES_HAS_FLOAT16
+template void explain_unary_operation_single_output_error(Operation op, float16,
+                                                          float16, double,
+                                                          RoundingMode);
+template void explain_unary_operation_single_output_error(Operation op, float,
+                                                          float16, double,
+                                                          RoundingMode);
+template void explain_unary_operation_single_output_error(Operation op, double,
+                                                          float16, double,
+                                                          RoundingMode);
+template void explain_unary_operation_single_output_error(Operation op,
+                                                          long double, float16,
+                                                          double, RoundingMode);
+#ifdef LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE
+template void explain_unary_operation_single_output_error(Operation op,
+                                                          float128, float16,
+                                                          double, RoundingMode);
+#endif // LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE
+#endif // LIBC_TYPES_HAS_FLOAT16
+
+#ifdef LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE
+template void explain_unary_operation_single_output_error(Operation op,
+                                                          float128, float128,
+                                                          double, RoundingMode);
+template void explain_unary_operation_single_output_error(Operation op,
+                                                          float128, float,
+                                                          double, RoundingMode);
+template void explain_unary_operation_single_output_error(Operation op,
+                                                          float128, double,
+                                                          double, RoundingMode);
+template void explain_unary_operation_single_output_error(Operation op,
+                                                          float128, long double,
+                                                          double, RoundingMode);
+#endif // LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE
+
+template void explain_unary_operation_single_output_error(Operation op,
+                                                          bfloat16, bfloat16,
+                                                          double, RoundingMode);
+
+template <typename T>
+void explain_unary_operation_two_outputs_error(
+    Operation op, T input, const BinaryOutput<T> &libc_result,
+    double ulp_tolerance, RoundingMode rounding) {
+  unsigned int precision = get_precision<T>(ulp_tolerance);
+  MPFRNumber mpfrInput(input, precision);
+  int mpfrIntResult;
+  MPFRNumber mpfr_result = unary_operation_two_outputs(op, input, mpfrIntResult,
+                                                       precision, rounding);
+
+  if (mpfrIntResult != libc_result.i) {
+    tlog << "MPFR integral result: " << mpfrIntResult << '\n'
+         << "Libc integral result: " << libc_result.i << '\n';
+  } else {
+    tlog << "Integral result from libc matches integral result from MPFR.\n";
+  }
+
+  MPFRNumber mpfrMatchValue(libc_result.f);
+  tlog
+      << "Libc floating point result is not within tolerance value of the MPFR "
+      << "result.\n\n";
+
+  tlog << "            Input decimal: " << mpfrInput.str() << "\n\n";
+
+  tlog << "Libc floating point value: " << mpfrMatchValue.str() << '\n';
+  tlog << " Libc floating point bits: " << str(FPBits<T>(libc_result.f))
+       << '\n';
+  tlog << "\n\n";
+
+  tlog << "              MPFR result: " << mpfr_result.str() << '\n';
+  tlog << "             MPFR rounded: " << str(FPBits<T>(mpfr_result.as<T>()))
+       << '\n';
+  tlog << '\n'
+       << "                ULP error: "
+       << mpfr_result.ulp_as_mpfr_number(libc_result.f).str() << '\n';
+}
+
+template void explain_unary_operation_two_outputs_error<float>(
+    Operation, float, const BinaryOutput<float> &, double, RoundingMode);
+template void explain_unary_operation_two_outputs_error<double>(
+    Operation, double, const BinaryOutput<double> &, double, RoundingMode);
+template void explain_unary_operation_two_outputs_error<long double>(
+    Operation, long double, const BinaryOutput<long double> &, double,
+    RoundingMode);
+
+template <typename T>
+void explain_binary_operation_two_outputs_error(
+    Operation op, const BinaryInput<T> &input,
+    const BinaryOutput<T> &libc_result, double ulp_tolerance,
+    RoundingMode rounding) {
+  unsigned int precision = get_precision<T>(ulp_tolerance);
+  MPFRNumber mpfrX(input.x, precision);
+  MPFRNumber mpfrY(input.y, precision);
+  int mpfrIntResult;
+  MPFRNumber mpfr_result = binary_operation_two_outputs(
+      op, input.x, input.y, mpfrIntResult, precision, rounding);
+  MPFRNumber mpfrMatchValue(libc_result.f);
+
+  tlog << "Input decimal: x: " << mpfrX.str() << " y: " << mpfrY.str() << '\n'
+       << "MPFR integral result: " << mpfrIntResult << '\n'
+       << "Libc integral result: " << libc_result.i << '\n'
+       << "Libc floating point result: " << mpfrMatchValue.str() << '\n'
+       << "               MPFR result: " << mpfr_result.str() << '\n';
+  tlog << "Libc floating point result bits: " << str(FPBits<T>(libc_result.f))
+       << '\n';
+  tlog << "              MPFR rounded bits: "
+       << str(FPBits<T>(mpfr_result.as<T>())) << '\n';
+  tlog << "ULP error: " << mpfr_result.ulp_as_mpfr_number(libc_result.f).str()
+       << '\n';
+}
+
+template void explain_binary_operation_two_outputs_error<float>(
+    Operation, const BinaryInput<float> &, const BinaryOutput<float> &, double,
+    RoundingMode);
+template void explain_binary_operation_two_outputs_error<double>(
+    Operation, const BinaryInput<double> &, const BinaryOutput<double> &,
+    double, RoundingMode);
+template void explain_binary_operation_two_outputs_error<long double>(
+    Operation, const BinaryInput<long double> &,
+    const BinaryOutput<long double> &, double, RoundingMode);
+
+template <typename InputType, typename OutputType>
+void explain_binary_operation_one_output_error(
+    Operation op, const BinaryInput<InputType> &input, OutputType libc_result,
+    double ulp_tolerance, RoundingMode rounding) {
+  unsigned int precision = get_precision<InputType>(ulp_tolerance);
+  MPFRNumber mpfrX(input.x, precision);
+  MPFRNumber mpfrY(input.y, precision);
+  FPBits<InputType> xbits(input.x);
+  FPBits<InputType> ybits(input.y);
+  MPFRNumber mpfr_result =
+      binary_operation_one_output(op, input.x, input.y, precision, rounding);
+  MPFRNumber mpfrMatchValue(libc_result);
+
+  tlog << "Input decimal: x: " << mpfrX.str() << " y: " << mpfrY.str() << '\n';
+  tlog << "First input bits: " << str(FPBits<InputType>(input.x)) << '\n';
+  tlog << "Second input bits: " << str(FPBits<InputType>(input.y)) << '\n';
+
+  tlog << "Libc result: " << mpfrMatchValue.str() << '\n'
+       << "MPFR result: " << mpfr_result.str() << '\n';
+  tlog << "Libc floating point result bits: "
+       << str(FPBits<OutputType>(libc_result)) << '\n';
+  tlog << "              MPFR rounded bits: "
+       << str(FPBits<OutputType>(mpfr_result.as<OutputType>())) << '\n';
+  tlog << "ULP error: " << mpfr_result.ulp_as_mpfr_number(libc_result).str()
+       << '\n';
+}
+
+template void
+explain_binary_operation_one_output_error(Operation, const BinaryInput<float> &,
+                                          float, double, RoundingMode);
+template void explain_binary_operation_one_output_error(
+    Operation, const BinaryInput<double> &, float, double, RoundingMode);
+template void explain_binary_operation_one_output_error(
+    Operation, const BinaryInput<double> &, double, double, RoundingMode);
+template void explain_binary_operation_one_output_error(
+    Operation, const BinaryInput<long double> &, float, double, RoundingMode);
+template void explain_binary_operation_one_output_error(
+    Operation, const BinaryInput<long double> &, double, double, RoundingMode);
+template void
+explain_binary_operation_one_output_error(Operation,
+                                          const BinaryInput<long double> &,
+                                          long double, double, RoundingMode);
+#ifdef LIBC_TYPES_HAS_FLOAT16
+template void explain_binary_operation_one_output_error(
+    Operation, const BinaryInput<float16> &, float16, double, RoundingMode);
+template void
+explain_binary_operation_one_output_error(Operation, const BinaryInput<float> &,
+                                          float16, double, RoundingMode);
+template void explain_binary_operation_one_output_error(
+    Operation, const BinaryInput<double> &, float16, double, RoundingMode);
+template void explain_binary_operation_one_output_error(
+    Operation, const BinaryInput<long double> &, float16, double, RoundingMode);
+#endif
+#if defined(LIBC_TYPES_HAS_FLOAT128) &&                                        \
+    defined(LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE)
+template void explain_binary_operation_one_output_error(
+    Operation, const BinaryInput<float128> &, float128, double, RoundingMode);
+#endif
+template void explain_binary_operation_one_output_error(
+    Operation, const BinaryInput<bfloat16> &, bfloat16, double, RoundingMode);
+template void
+explain_binary_operation_one_output_error(Operation, const BinaryInput<float> &,
+                                          bfloat16, double, RoundingMode);
+template void explain_binary_operation_one_output_error(
+    Operation, const BinaryInput<double> &, bfloat16, double, RoundingMode);
+template void
+explain_binary_operation_one_output_error(Operation,
+                                          const BinaryInput<long double> &,
+                                          bfloat16, double, RoundingMode);
+#if defined(LIBC_TYPES_HAS_FLOAT128) &&                                        \
+    defined(LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE)
+template void explain_binary_operation_one_output_error(
+    Operation, const BinaryInput<float128> &, bfloat16, double, RoundingMode);
+#endif // defined(LIBC_TYPES_HAS_FLOAT128) &&
+       // defined(LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE)
+
+template <typename InputType, typename OutputType>
+void explain_ternary_operation_one_output_error(
+    Operation op, const TernaryInput<InputType> &input, OutputType libc_result,
+    double ulp_tolerance, RoundingMode rounding) {
+  unsigned int precision = get_precision<InputType>(ulp_tolerance);
+  MPFRNumber mpfrX(input.x, precision);
+  MPFRNumber mpfrY(input.y, precision);
+  MPFRNumber mpfrZ(input.z, precision);
+  FPBits<InputType> xbits(input.x);
+  FPBits<InputType> ybits(input.y);
+  FPBits<InputType> zbits(input.z);
+  MPFRNumber mpfr_result = ternary_operation_one_output(
+      op, input.x, input.y, input.z, precision, rounding);
+  MPFRNumber mpfrMatchValue(libc_result);
+
+  tlog << "Input decimal: x: " << mpfrX.str() << " y: " << mpfrY.str()
+       << " z: " << mpfrZ.str() << '\n';
+  tlog << " First input bits: " << str(FPBits<InputType>(input.x)) << '\n';
+  tlog << "Second input bits: " << str(FPBits<InputType>(input.y)) << '\n';
+  tlog << " Third input bits: " << str(FPBits<InputType>(input.z)) << '\n';
+
+  tlog << "Libc result: " << mpfrMatchValue.str() << '\n'
+       << "MPFR result: " << mpfr_result.str() << '\n';
+  tlog << "Libc floating point result bits: "
+       << str(FPBits<OutputType>(libc_result)) << '\n';
+  tlog << "              MPFR rounded bits: "
+       << str(FPBits<OutputType>(mpfr_result.as<OutputType>())) << '\n';
+  tlog << "ULP error: " << mpfr_result.ulp_as_mpfr_number(libc_result).str()
+       << '\n';
+}
+
+template void explain_ternary_operation_one_output_error(
+    Operation, const TernaryInput<float> &, float, double, RoundingMode);
+template void explain_ternary_operation_one_output_error(
+    Operation, const TernaryInput<double> &, float, double, RoundingMode);
+template void explain_ternary_operation_one_output_error(
+    Operation, const TernaryInput<double> &, double, double, RoundingMode);
+template void explain_ternary_operation_one_output_error(
+    Operation, const TernaryInput<long double> &, float, double, RoundingMode);
+template void explain_ternary_operation_one_output_error(
+    Operation, const TernaryInput<long double> &, double, double, RoundingMode);
+template void
+explain_ternary_operation_one_output_error(Operation,
+                                           const TernaryInput<long double> &,
+                                           long double, double, RoundingMode);
+
+#ifdef LIBC_TYPES_HAS_FLOAT16
+template void explain_ternary_operation_one_output_error(
+    Operation, const TernaryInput<float16> &, float16, double, RoundingMode);
+template void explain_ternary_operation_one_output_error(
+    Operation, const TernaryInput<float> &, float16, double, RoundingMode);
+template void explain_ternary_operation_one_output_error(
+    Operation, const TernaryInput<double> &, float16, double, RoundingMode);
+template void
+explain_ternary_operation_one_output_error(Operation,
+                                           const TernaryInput<long double> &,
+                                           float16, double, RoundingMode);
+#endif
+
+template void explain_ternary_operation_one_output_error(
+    Operation, const TernaryInput<float> &, bfloat16, double, RoundingMode);
+template void explain_ternary_operation_one_output_error(
+    Operation, const TernaryInput<double> &, bfloat16, double, RoundingMode);
+template void
+explain_ternary_operation_one_output_error(Operation,
+                                           const TernaryInput<long double> &,
+                                           bfloat16, double, RoundingMode);
+#if defined(LIBC_TYPES_HAS_FLOAT128) &&                                        \
+    defined(LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE)
+template void explain_ternary_operation_one_output_error(
+    Operation, const TernaryInput<float128> &, bfloat16, double, RoundingMode);
+#endif // defined(LIBC_TYPES_HAS_FLOAT128) &&
+       // defined(LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE)
+
+template <typename InputType, typename OutputType>
+bool compare_unary_operation_single_output(Operation op, InputType input,
+                                           OutputType libc_result,
+                                           double ulp_tolerance,
+                                           RoundingMode rounding) {
+  unsigned int precision = get_precision<InputType>(ulp_tolerance);
+  MPFRNumber mpfr_result;
+  mpfr_result = unary_operation(op, input, precision, rounding);
+  double ulp = mpfr_result.ulp(libc_result);
+  return (ulp <= ulp_tolerance);
+}
+
+template bool compare_unary_operation_single_output(Operation, float, float,
+                                                    double, RoundingMode);
+template bool compare_unary_operation_single_output(Operation, double, double,
+                                                    double, RoundingMode);
+template bool compare_unary_operation_single_output(Operation, long double,
+                                                    long double, double,
+                                                    RoundingMode);
+template bool compare_unary_operation_single_output(Operation, double, float,
+                                                    double, RoundingMode);
+template bool compare_unary_operation_single_output(Operation, long double,
+                                                    float, double,
+                                                    RoundingMode);
+template bool compare_unary_operation_single_output(Operation, long double,
+                                                    double, double,
+                                                    RoundingMode);
+#ifdef LIBC_TYPES_HAS_FLOAT16
+template bool compare_unary_operation_single_output(Operation, float16, float16,
+                                                    double, RoundingMode);
+template bool compare_unary_operation_single_output(Operation, float, float16,
+                                                    double, RoundingMode);
+template bool compare_unary_operation_single_output(Operation, double, float16,
+                                                    double, RoundingMode);
+template bool compare_unary_operation_single_output(Operation, long double,
+                                                    float16, double,
+                                                    RoundingMode);
+#ifdef LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE
+template bool compare_unary_operation_single_output(Operation, float128,
+                                                    float16, double,
+                                                    RoundingMode);
+#endif // LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE
+#endif // LIBC_TYPES_HAS_FLOAT16
+
+#ifdef LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE
+template bool compare_unary_operation_single_output(Operation, float128,
+                                                    float128, double,
+                                                    RoundingMode);
+template bool compare_unary_operation_single_output(Operation, float128, float,
+                                                    double, RoundingMode);
+template bool compare_unary_operation_single_output(Operation, float128, double,
+                                                    double, RoundingMode);
+template bool compare_unary_operation_single_output(Operation, float128,
+                                                    long double, double,
+                                                    RoundingMode);
+#endif // LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE
+template bool compare_unary_operation_single_output(Operation, bfloat16,
+                                                    bfloat16, double,
+                                                    RoundingMode);
+
+template <typename T>
+bool compare_unary_operation_two_outputs(Operation op, T input,
+                                         const BinaryOutput<T> &libc_result,
+                                         double ulp_tolerance,
+                                         RoundingMode rounding) {
+  int mpfrIntResult;
+  unsigned int precision = get_precision<T>(ulp_tolerance);
+  MPFRNumber mpfr_result = unary_operation_two_outputs(op, input, mpfrIntResult,
+                                                       precision, rounding);
+  double ulp = mpfr_result.ulp(libc_result.f);
+
+  if (mpfrIntResult != libc_result.i)
+    return false;
+
+  return (ulp <= ulp_tolerance);
+}
+
+template bool compare_unary_operation_two_outputs<float>(
+    Operation, float, const BinaryOutput<float> &, double, RoundingMode);
+template bool compare_unary_operation_two_outputs<double>(
+    Operation, double, const BinaryOutput<double> &, double, RoundingMode);
+template bool compare_unary_operation_two_outputs<long double>(
+    Operation, long double, const BinaryOutput<long double> &, double,
+    RoundingMode);
+
+template <typename T>
+bool compare_binary_operation_two_outputs(Operation op,
+                                          const BinaryInput<T> &input,
+                                          const BinaryOutput<T> &libc_result,
+                                          double ulp_tolerance,
+                                          RoundingMode rounding) {
+  int mpfrIntResult;
+  unsigned int precision = get_precision<T>(ulp_tolerance);
+  MPFRNumber mpfr_result = binary_operation_two_outputs(
+      op, input.x, input.y, mpfrIntResult, precision, rounding);
+  double ulp = mpfr_result.ulp(libc_result.f);
+
+  if (mpfrIntResult != libc_result.i) {
+    if (op == Operation::RemQuo) {
+      if ((0x7 & mpfrIntResult) != (0x7 & libc_result.i))
+        return false;
+    } else {
+      return false;
+    }
+  }
+
+  return (ulp <= ulp_tolerance);
+}
+
+template bool compare_binary_operation_two_outputs<float>(
+    Operation, const BinaryInput<float> &, const BinaryOutput<float> &, double,
+    RoundingMode);
+template bool compare_binary_operation_two_outputs<double>(
+    Operation, const BinaryInput<double> &, const BinaryOutput<double> &,
+    double, RoundingMode);
+template bool compare_binary_operation_two_outputs<long double>(
+    Operation, const BinaryInput<long double> &,
+    const BinaryOutput<long double> &, double, RoundingMode);
+
+template <typename InputType, typename OutputType>
+bool compare_binary_operation_one_output(Operation op,
+                                         const BinaryInput<InputType> &input,
+                                         OutputType libc_result,
+                                         double ulp_tolerance,
+                                         RoundingMode rounding) {
+  unsigned int precision = get_precision<InputType>(ulp_tolerance);
+  MPFRNumber mpfr_result =
+      binary_operation_one_output(op, input.x, input.y, precision, rounding);
+  double ulp = mpfr_result.ulp(libc_result);
+
+  return (ulp <= ulp_tolerance);
+}
+
+template bool compare_binary_operation_one_output(Operation,
+                                                  const BinaryInput<float> &,
+                                                  float, double, RoundingMode);
+template bool compare_binary_operation_one_output(Operation,
+                                                  const BinaryInput<double> &,
+                                                  double, double, RoundingMode);
+template bool
+compare_binary_operation_one_output(Operation, const BinaryInput<long double> &,
+                                    float, double, RoundingMode);
+template bool
+compare_binary_operation_one_output(Operation, const BinaryInput<long double> &,
+                                    double, double, RoundingMode);
+template bool
+compare_binary_operation_one_output(Operation, const BinaryInput<long double> &,
+                                    long double, double, RoundingMode);
+
+template bool compare_binary_operation_one_output(Operation,
+                                                  const BinaryInput<double> &,
+                                                  float, double, RoundingMode);
+#ifdef LIBC_TYPES_HAS_FLOAT16
+template bool compare_binary_operation_one_output(Operation,
+                                                  const BinaryInput<float16> &,
+                                                  float16, double,
+                                                  RoundingMode);
+template bool compare_binary_operation_one_output(Operation,
+                                                  const BinaryInput<float> &,
+                                                  float16, double,
+                                                  RoundingMode);
+template bool compare_binary_operation_one_output(Operation,
+                                                  const BinaryInput<double> &,
+                                                  float16, double,
+                                                  RoundingMode);
+template bool
+compare_binary_operation_one_output(Operation, const BinaryInput<long double> &,
+                                    float16, double, RoundingMode);
+#endif
+#if defined(LIBC_TYPES_HAS_FLOAT128) &&                                        \
+    defined(LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE)
+template bool compare_binary_operation_one_output(Operation,
+                                                  const BinaryInput<float128> &,
+                                                  float128, double,
+                                                  RoundingMode);
+#endif
+template bool compare_binary_operation_one_output(Operation,
+                                                  const BinaryInput<bfloat16> &,
+                                                  bfloat16, double,
+                                                  RoundingMode);
+
+template bool compare_binary_operation_one_output(Operation,
+                                                  const BinaryInput<float> &,
+                                                  bfloat16, double,
+                                                  RoundingMode);
+template bool compare_binary_operation_one_output(Operation,
+                                                  const BinaryInput<double> &,
+                                                  bfloat16, double,
+                                                  RoundingMode);
+template bool
+compare_binary_operation_one_output(Operation, const BinaryInput<long double> &,
+                                    bfloat16, double, RoundingMode);
+#if defined(LIBC_TYPES_HAS_FLOAT128) &&                                        \
+    defined(LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE)
+template bool compare_binary_operation_one_output(Operation,
+                                                  const BinaryInput<float128> &,
+                                                  bfloat16, double,
+                                                  RoundingMode);
+#endif // defined(LIBC_TYPES_HAS_FLOAT128) &&
+       // defined(LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE)
+template <typename InputType, typename OutputType>
+bool compare_ternary_operation_one_output(Operation op,
+                                          const TernaryInput<InputType> &input,
+                                          OutputType libc_result,
+                                          double ulp_tolerance,
+                                          RoundingMode rounding) {
+  unsigned int precision = get_precision<InputType>(ulp_tolerance);
+  MPFRNumber mpfr_result = ternary_operation_one_output(
+      op, input.x, input.y, input.z, precision, rounding);
+  double ulp = mpfr_result.ulp(libc_result);
+
+  return (ulp <= ulp_tolerance);
+}
+
+template bool compare_ternary_operation_one_output(Operation,
+                                                   const TernaryInput<float> &,
+                                                   float, double, RoundingMode);
+template bool compare_ternary_operation_one_output(Operation,
+                                                   const TernaryInput<double> &,
+                                                   float, double, RoundingMode);
+template bool compare_ternary_operation_one_output(Operation,
+                                                   const TernaryInput<double> &,
+                                                   double, double,
+                                                   RoundingMode);
+template bool compare_ternary_operation_one_output(
+    Operation, const TernaryInput<long double> &, float, double, RoundingMode);
+template bool compare_ternary_operation_one_output(
+    Operation, const TernaryInput<long double> &, double, double, RoundingMode);
+template bool
+compare_ternary_operation_one_output(Operation,
+                                     const TernaryInput<long double> &,
+                                     long double, double, RoundingMode);
+
+#ifdef LIBC_TYPES_HAS_FLOAT16
+template bool
+compare_ternary_operation_one_output(Operation, const TernaryInput<float16> &,
+                                     float16, double, RoundingMode);
+template bool compare_ternary_operation_one_output(Operation,
+                                                   const TernaryInput<float> &,
+                                                   float16, double,
+                                                   RoundingMode);
+template bool compare_ternary_operation_one_output(Operation,
+                                                   const TernaryInput<double> &,
+                                                   float16, double,
+                                                   RoundingMode);
+template bool
+compare_ternary_operation_one_output(Operation,
+                                     const TernaryInput<long double> &, float16,
+                                     double, RoundingMode);
+#endif
+
+template bool compare_ternary_operation_one_output(Operation,
+                                                   const TernaryInput<float> &,
+                                                   bfloat16, double,
+                                                   RoundingMode);
+template bool compare_ternary_operation_one_output(Operation,
+                                                   const TernaryInput<double> &,
+                                                   bfloat16, double,
+                                                   RoundingMode);
+template bool
+compare_ternary_operation_one_output(Operation,
+                                     const TernaryInput<long double> &,
+                                     bfloat16, double, RoundingMode);
+
+#if defined(LIBC_TYPES_HAS_FLOAT128) &&                                        \
+    defined(LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE)
+template bool
+compare_ternary_operation_one_output(Operation, const TernaryInput<float128> &,
+                                     bfloat16, double, RoundingMode);
+#endif // defined(LIBC_TYPES_HAS_FLOAT128) &&
+       // defined(LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE)
+
+} // namespace internal
+
+template <typename T> bool round_to_long(T x, long &result) {
+  MPFRNumber mpfr(x);
+  return mpfr.round_to_long(result);
+}
+
+template bool round_to_long<float>(float, long &);
+template bool round_to_long<double>(double, long &);
+template bool round_to_long<long double>(long double, long &);
+
+#ifdef LIBC_TYPES_HAS_FLOAT16
+template bool round_to_long<float16>(float16, long &);
+#endif // LIBC_TYPES_HAS_FLOAT16
+
+#ifdef LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE
+template bool round_to_long<float128>(float128, long &);
+#endif // LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE
+
+template bool round_to_long<bfloat16>(bfloat16, long &);
+
+template <typename T> bool round_to_long(T x, RoundingMode mode, long &result) {
+  MPFRNumber mpfr(x);
+  return mpfr.round_to_long(get_mpfr_rounding_mode(mode), result);
+}
+
+template bool round_to_long<float>(float, RoundingMode, long &);
+template bool round_to_long<double>(double, RoundingMode, long &);
+template bool round_to_long<long double>(long double, RoundingMode, long &);
+
+#ifdef LIBC_TYPES_HAS_FLOAT16
+template bool round_to_long<float16>(float16, RoundingMode, long &);
+#endif // LIBC_TYPES_HAS_FLOAT16
+
+#ifdef LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE
+template bool round_to_long<float128>(float128, RoundingMode, long &);
+#endif // LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE
+
+template bool round_to_long<bfloat16>(bfloat16, RoundingMode, long &);
+
+template <typename T> T round(T x, RoundingMode mode) {
+  MPFRNumber mpfr(x);
+  MPFRNumber result = mpfr.rint(get_mpfr_rounding_mode(mode));
+  return result.as<T>();
+}
+
+template float round<float>(float, RoundingMode);
+template double round<double>(double, RoundingMode);
+template long double round<long double>(long double, RoundingMode);
+
+#ifdef LIBC_TYPES_HAS_FLOAT16
+template float16 round<float16>(float16, RoundingMode);
+#endif // LIBC_TYPES_HAS_FLOAT16
+
+#ifdef LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE
+template float128 round<float128>(float128, RoundingMode);
+#endif // LIBC_TYPES_FLOAT128_IS_NOT_LONG_DOUBLE
+
+template bfloat16 round<bfloat16>(bfloat16, RoundingMode);
+
+} // namespace mpfr
+} // namespace testing
+} // namespace LIBC_NAMESPACE_DECL

>From 42c5ec9defa8aab7c0184ff6021a3259d083eea4 Mon Sep 17 00:00:00 2001
From: Sukumarsawant <sawantsukumar at gmail.com>
Date: Sat, 21 Feb 2026 18:04:45 +0530
Subject: [PATCH 10/43] lf2

---
 libc/test/src/math/sqrt_test.cpp | 26 +++++++++++++-------------
 1 file changed, 13 insertions(+), 13 deletions(-)

diff --git a/libc/test/src/math/sqrt_test.cpp b/libc/test/src/math/sqrt_test.cpp
index 3eebc38fe5f4d..1551b31d6f715 100644
--- a/libc/test/src/math/sqrt_test.cpp
+++ b/libc/test/src/math/sqrt_test.cpp
@@ -1,13 +1,13 @@
-//===-- Unittests for sqrt ------------------------------------------------===//
-//
-// 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 "SqrtTest.h"
-
-#include "src/math/sqrt.h"
-
-LIST_SQRT_TESTS(double, LIBC_NAMESPACE::sqrt)
+//===-- Unittests for sqrt ------------------------------------------------===//
+//
+// 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 "SqrtTest.h"
+
+#include "src/math/sqrt.h"
+
+LIST_SQRT_TESTS(double, LIBC_NAMESPACE::sqrt)

>From 9048a292d41c12687187f818599f372cd92c2604 Mon Sep 17 00:00:00 2001
From: Sukumarsawant <sawantsukumar at gmail.com>
Date: Sat, 21 Feb 2026 19:26:53 +0530
Subject: [PATCH 11/43] fixing CMAKE errors

---
 libc/src/math/generic/CMakeLists.txt | 2 +-
 libc/test/src/math/CMakeLists.txt    | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/libc/src/math/generic/CMakeLists.txt b/libc/src/math/generic/CMakeLists.txt
index 5768defa013ff..2caeeac0ed773 100644
--- a/libc/src/math/generic/CMakeLists.txt
+++ b/libc/src/math/generic/CMakeLists.txt
@@ -4554,7 +4554,7 @@ add_entrypoint_object(
   DEPENDS
     libc.src.__support.common
     libc.src.__support.FPUtil.bfloat16
-    libc.src.__support.FPUtil.FMA
+    libc.src.__support.FPUtil.fma
     libc.src.__support.macros.config
     libc.src.__support.macros.properties.types
 )
diff --git a/libc/test/src/math/CMakeLists.txt b/libc/test/src/math/CMakeLists.txt
index abfd40f98a29a..d6c622f979a1b 100644
--- a/libc/test/src/math/CMakeLists.txt
+++ b/libc/test/src/math/CMakeLists.txt
@@ -1994,7 +1994,7 @@ add_fp_unittest(
   DEPENDS
     libc.src.math.fmabf16
     libc.src.stdlib.rand
-    libc.src.stdlib.srandq
+    libc.src.stdlib.srand
     libc.src.__support.FPUtil.bfloat16
 )
 

>From 6d6f4532b56ccf72174622ffc6a4ec4088604dfc Mon Sep 17 00:00:00 2001
From: Sukumarsawant <sawantsukumar at gmail.com>
Date: Sun, 22 Feb 2026 17:56:00 +0530
Subject: [PATCH 12/43] testing for *= if req

---
 libc/src/__support/FPUtil/bfloat16.h | 247 ++++++++++++++-------------
 1 file changed, 126 insertions(+), 121 deletions(-)

diff --git a/libc/src/__support/FPUtil/bfloat16.h b/libc/src/__support/FPUtil/bfloat16.h
index 13e151208567d..7f340bcef1c89 100644
--- a/libc/src/__support/FPUtil/bfloat16.h
+++ b/libc/src/__support/FPUtil/bfloat16.h
@@ -1,121 +1,126 @@
-//===-- Definition of bfloat16 data type. -----------------------*- C++ -*-===//
-//
-// 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
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef LLVM_LIBC_SRC___SUPPORT_FPUTIL_BFLOAT16_H
-#define LLVM_LIBC_SRC___SUPPORT_FPUTIL_BFLOAT16_H
-
-#include "hdr/stdint_proxy.h"
-#include "src/__support/CPP/bit.h"
-#include "src/__support/CPP/type_traits.h"
-#include "src/__support/FPUtil/cast.h"
-#include "src/__support/FPUtil/comparison_operations.h"
-#include "src/__support/FPUtil/dyadic_float.h"
-#include "src/__support/FPUtil/generic/add_sub.h"
-#include "src/__support/FPUtil/generic/div.h"
-#include "src/__support/FPUtil/generic/mul.h"
-#include "src/__support/macros/config.h"
-#include "src/__support/macros/properties/types.h"
-
-namespace LIBC_NAMESPACE_DECL {
-namespace fputil {
-
-struct BFloat16 {
-  uint16_t bits;
-
-  LIBC_INLINE BFloat16() = default;
-
-  template <typename T>
-  LIBC_INLINE constexpr explicit BFloat16(T value)
-      : bits(static_cast<uint16_t>(0U)) {
-    if constexpr (cpp::is_floating_point_v<T>) {
-      bits = fputil::cast<bfloat16>(value).bits;
-    } else if constexpr (cpp::is_integral_v<T>) {
-      Sign sign = Sign::POS;
-
-      if constexpr (cpp::is_signed_v<T>) {
-        if (value < 0) {
-          sign = Sign::NEG;
-          value = -value;
-        }
-      }
-
-      fputil::DyadicFloat<cpp::numeric_limits<cpp::make_unsigned_t<T>>::digits>
-          xd(sign, 0, value);
-      bits = xd.template as<bfloat16, /*ShouldSignalExceptions=*/true>().bits;
-
-    } else if constexpr (cpp::is_convertible_v<T, BFloat16>) {
-      bits = value.operator BFloat16().bits;
-    } else {
-      bits = fputil::cast<bfloat16>(static_cast<float>(value)).bits;
-    }
-  }
-
-  template <cpp::enable_if_t<fputil::get_fp_type<float>() ==
-                                 fputil::FPType::IEEE754_Binary32,
-                             int> = 0>
-  LIBC_INLINE constexpr operator float() const {
-    uint32_t x_bits = static_cast<uint32_t>(bits) << 16U;
-    return cpp::bit_cast<float>(x_bits);
-  }
-
-  template <typename T, cpp::enable_if_t<cpp::is_integral_v<T>, int> = 0>
-  LIBC_INLINE constexpr explicit operator T() const {
-    return static_cast<T>(static_cast<float>(*this));
-  }
-
-  LIBC_INLINE bool operator==(BFloat16 other) const {
-    return fputil::equals(*this, other);
-  }
-
-  LIBC_INLINE bool operator!=(BFloat16 other) const {
-    return !fputil::equals(*this, other);
-  }
-
-  LIBC_INLINE bool operator<(BFloat16 other) const {
-    return fputil::less_than(*this, other);
-  }
-
-  LIBC_INLINE bool operator<=(BFloat16 other) const {
-    return fputil::less_than_or_equals(*this, other);
-  }
-
-  LIBC_INLINE bool operator>(BFloat16 other) const {
-    return fputil::greater_than(*this, other);
-  }
-
-  LIBC_INLINE bool operator>=(BFloat16 other) const {
-    return fputil::greater_than_or_equals(*this, other);
-  }
-
-  LIBC_INLINE constexpr BFloat16 operator-() const {
-    fputil::FPBits<bfloat16> result(*this);
-    result.set_sign(result.is_pos() ? Sign::NEG : Sign::POS);
-    return result.get_val();
-  }
-
-  LIBC_INLINE BFloat16 operator+(BFloat16 other) const {
-    return fputil::generic::add<BFloat16>(*this, other);
-  }
-
-  LIBC_INLINE BFloat16 operator-(BFloat16 other) const {
-    return fputil::generic::sub<BFloat16>(*this, other);
-  }
-
-  LIBC_INLINE BFloat16 operator*(BFloat16 other) const {
-    return fputil::generic::mul<bfloat16>(*this, other);
-  }
-
-  LIBC_INLINE BFloat16 operator/(BFloat16 other) const {
-    return fputil::generic::div<bfloat16>(*this, other);
-  }
-}; // struct BFloat16
-
-} // namespace fputil
-} // namespace LIBC_NAMESPACE_DECL
-
-#endif // LLVM_LIBC_SRC___SUPPORT_FPUTIL_BFLOAT16_H
+//===-- Definition of bfloat16 data type. -----------------------*- C++ -*-===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_LIBC_SRC___SUPPORT_FPUTIL_BFLOAT16_H
+#define LLVM_LIBC_SRC___SUPPORT_FPUTIL_BFLOAT16_H
+
+#include "hdr/stdint_proxy.h"
+#include "src/__support/CPP/bit.h"
+#include "src/__support/CPP/type_traits.h"
+#include "src/__support/FPUtil/cast.h"
+#include "src/__support/FPUtil/comparison_operations.h"
+#include "src/__support/FPUtil/dyadic_float.h"
+#include "src/__support/FPUtil/generic/add_sub.h"
+#include "src/__support/FPUtil/generic/div.h"
+#include "src/__support/FPUtil/generic/mul.h"
+#include "src/__support/macros/config.h"
+#include "src/__support/macros/properties/types.h"
+
+namespace LIBC_NAMESPACE_DECL {
+namespace fputil {
+
+struct BFloat16 {
+  uint16_t bits;
+
+  LIBC_INLINE BFloat16() = default;
+
+  template <typename T>
+  LIBC_INLINE constexpr explicit BFloat16(T value)
+      : bits(static_cast<uint16_t>(0U)) {
+    if constexpr (cpp::is_floating_point_v<T>) {
+      bits = fputil::cast<bfloat16>(value).bits;
+    } else if constexpr (cpp::is_integral_v<T>) {
+      Sign sign = Sign::POS;
+
+      if constexpr (cpp::is_signed_v<T>) {
+        if (value < 0) {
+          sign = Sign::NEG;
+          value = -value;
+        }
+      }
+
+      fputil::DyadicFloat<cpp::numeric_limits<cpp::make_unsigned_t<T>>::digits>
+          xd(sign, 0, value);
+      bits = xd.template as<bfloat16, /*ShouldSignalExceptions=*/true>().bits;
+
+    } else if constexpr (cpp::is_convertible_v<T, BFloat16>) {
+      bits = value.operator BFloat16().bits;
+    } else {
+      bits = fputil::cast<bfloat16>(static_cast<float>(value)).bits;
+    }
+  }
+
+  template <cpp::enable_if_t<fputil::get_fp_type<float>() ==
+                                 fputil::FPType::IEEE754_Binary32,
+                             int> = 0>
+  LIBC_INLINE constexpr operator float() const {
+    uint32_t x_bits = static_cast<uint32_t>(bits) << 16U;
+    return cpp::bit_cast<float>(x_bits);
+  }
+
+  template <typename T, cpp::enable_if_t<cpp::is_integral_v<T>, int> = 0>
+  LIBC_INLINE constexpr explicit operator T() const {
+    return static_cast<T>(static_cast<float>(*this));
+  }
+
+  LIBC_INLINE bool operator==(BFloat16 other) const {
+    return fputil::equals(*this, other);
+  }
+
+  LIBC_INLINE bool operator!=(BFloat16 other) const {
+    return !fputil::equals(*this, other);
+  }
+
+  LIBC_INLINE bool operator<(BFloat16 other) const {
+    return fputil::less_than(*this, other);
+  }
+
+  LIBC_INLINE bool operator<=(BFloat16 other) const {
+    return fputil::less_than_or_equals(*this, other);
+  }
+
+  LIBC_INLINE bool operator>(BFloat16 other) const {
+    return fputil::greater_than(*this, other);
+  }
+
+  LIBC_INLINE bool operator>=(BFloat16 other) const {
+    return fputil::greater_than_or_equals(*this, other);
+  }
+
+  LIBC_INLINE constexpr BFloat16 operator-() const {
+    fputil::FPBits<bfloat16> result(*this);
+    result.set_sign(result.is_pos() ? Sign::NEG : Sign::POS);
+    return result.get_val();
+  }
+
+  LIBC_INLINE BFloat16 operator+(BFloat16 other) const {
+    return fputil::generic::add<BFloat16>(*this, other);
+  }
+
+  LIBC_INLINE BFloat16 operator-(BFloat16 other) const {
+    return fputil::generic::sub<BFloat16>(*this, other);
+  }
+
+  LIBC_INLINE BFloat16 operator*(BFloat16 other) const {
+    return fputil::generic::mul<bfloat16>(*this, other);
+  }
+
+  LIBC_INLINE BFloat16 operator/(BFloat16 other) const {
+    return fputil::generic::div<bfloat16>(*this, other);
+  }
+
+  LIBC_INLINE BFloat16 &operator*=(const BFloat16 &other) {
+  *this = *this * other;
+  return *this;
+  }
+}; // struct BFloat16
+
+} // namespace fputil
+} // namespace LIBC_NAMESPACE_DECL
+
+#endif // LLVM_LIBC_SRC___SUPPORT_FPUTIL_BFLOAT16_H

>From 0c80d8ac06db4612db296063cee4ff34906cae9b Mon Sep 17 00:00:00 2001
From: Sukumarsawant <sawantsukumar at gmail.com>
Date: Sun, 22 Feb 2026 18:04:18 +0530
Subject: [PATCH 13/43] unsigned int

---
 libc/test/src/math/fmabf16_test.cpp | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/libc/test/src/math/fmabf16_test.cpp b/libc/test/src/math/fmabf16_test.cpp
index 431fa36864a57..190496dd4f577 100644
--- a/libc/test/src/math/fmabf16_test.cpp
+++ b/libc/test/src/math/fmabf16_test.cpp
@@ -30,8 +30,8 @@ static constexpr uint16_t NEG_STOP = 0xff80U; //-inf
 TEST_F(LlvmLibcFmaBf16Test, PositiveRange) {
 
   std::vector<bfloat16> z_val = {
-      FPBits(0x0000).get_val(),          FPBits(0x8000).get_val(),
-      FPBits(0x3f80).get_val(),          FPBits(0xbf80).get_val(),
+      FPBits(0x0000U).get_val(),          FPBits(0x8000U).get_val(),
+      FPBits(0x3f80U).get_val(),          FPBits(0xbf80U).get_val(),
       FPBits::min_subnormal().get_val(), FPBits::max_normal().get_val(),
       FPBits::inf().get_val(),           FPBits::quiet_nan().get_val()};
   for (bfloat16 z : z_val) {
@@ -53,8 +53,8 @@ TEST_F(LlvmLibcFmaBf16Test, PositiveRange) {
 TEST_F(LlvmLibcFmaBf16Test, NegativeRange) {
 
   std::vector<bfloat16> z_val = {
-      FPBits(0x0000).get_val(),          FPBits(0x8000).get_val(),
-      FPBits(0x3f80).get_val(),          FPBits(0xbf80).get_val(),
+      FPBits(0x0000U).get_val(),          FPBits(0x8000U).get_val(),
+      FPBits(0x3f80U).get_val(),          FPBits(0xbf80U).get_val(),
       FPBits::min_subnormal().get_val(), FPBits::max_normal().get_val(),
       FPBits::inf().get_val(),           FPBits::quiet_nan().get_val()};
   for (bfloat16 z : z_val) {

>From e8734a6e8ab80210dfc825c99bd5477127d4e97b Mon Sep 17 00:00:00 2001
From: Sukumarsawant <sawantsukumar at gmail.com>
Date: Sun, 22 Feb 2026 18:10:56 +0530
Subject: [PATCH 14/43] shifting to only checking +0 and -0 along with -x*y

---
 libc/test/src/math/fmabf16_test.cpp | 22 +++++++---------------
 1 file changed, 7 insertions(+), 15 deletions(-)

diff --git a/libc/test/src/math/fmabf16_test.cpp b/libc/test/src/math/fmabf16_test.cpp
index 190496dd4f577..c10df50c0ffc6 100644
--- a/libc/test/src/math/fmabf16_test.cpp
+++ b/libc/test/src/math/fmabf16_test.cpp
@@ -29,40 +29,32 @@ static constexpr uint16_t NEG_STOP = 0xff80U; //-inf
 
 TEST_F(LlvmLibcFmaBf16Test, PositiveRange) {
 
-  std::vector<bfloat16> z_val = {
-      FPBits(0x0000U).get_val(),          FPBits(0x8000U).get_val(),
-      FPBits(0x3f80U).get_val(),          FPBits(0xbf80U).get_val(),
-      FPBits::min_subnormal().get_val(), FPBits::max_normal().get_val(),
-      FPBits::inf().get_val(),           FPBits::quiet_nan().get_val()};
-  for (bfloat16 z : z_val) {
+  
     for (uint16_t v1 = POS_START; v1 <= POS_STOP; ++v1) {
       for (uint16_t v2 = POS_START; v2 <= POS_STOP; v2 += 256) {
 
         bfloat16 x = FPBits(v1).get_val();
         bfloat16 y = FPBits(v2).get_val();
-
+        bfloat16 z = FPBits(POS_START).get_val();
+        
         mpfr::TernaryInput<bfloat16> input{x, y, z};
 
         EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
                                        LIBC_NAMESPACE::fmabf16(x, y, z), 0.5);
       }
     }
-  }
+  
 }
 
 TEST_F(LlvmLibcFmaBf16Test, NegativeRange) {
 
-  std::vector<bfloat16> z_val = {
-      FPBits(0x0000U).get_val(),          FPBits(0x8000U).get_val(),
-      FPBits(0x3f80U).get_val(),          FPBits(0xbf80U).get_val(),
-      FPBits::min_subnormal().get_val(), FPBits::max_normal().get_val(),
-      FPBits::inf().get_val(),           FPBits::quiet_nan().get_val()};
-  for (bfloat16 z : z_val) {
+  bfloat16 z = 
     for (uint16_t v1 = NEG_START; v1 <= NEG_STOP; ++v1) {
       for (uint16_t v2 = NEG_START; v2 <= NEG_STOP; v2 += 256) {
 
         bfloat16 x = FPBits(v1).get_val();
         bfloat16 y = FPBits(v2).get_val();
+        bfloat16 z = FPBits(NEG_START).get_val();
 
         mpfr::TernaryInput<bfloat16> input{x, y, z};
 
@@ -70,7 +62,7 @@ TEST_F(LlvmLibcFmaBf16Test, NegativeRange) {
                                        LIBC_NAMESPACE::fmabf16(x, y, z), 0.5);
       }
     }
-  }
+  
 }
 TEST_F(LlvmLibcFmaBf16Test, CancellationTest) {
 

>From 05733ad19d623128d460ce4e2194a60164e88d51 Mon Sep 17 00:00:00 2001
From: Sukumarsawant <sawantsukumar at gmail.com>
Date: Sun, 22 Feb 2026 18:41:08 +0530
Subject: [PATCH 15/43] testing for special num

---
 libc/src/__support/FPUtil/generic/add_sub.h | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/libc/src/__support/FPUtil/generic/add_sub.h b/libc/src/__support/FPUtil/generic/add_sub.h
index b2e9d81f4774c..0d7aee37cee5e 100644
--- a/libc/src/__support/FPUtil/generic/add_sub.h
+++ b/libc/src/__support/FPUtil/generic/add_sub.h
@@ -96,11 +96,15 @@ add_or_sub(InType x, InType y) {
 
     if (x_bits.is_zero()) {
       if (y_bits.is_zero()) {
-        switch (quick_get_round()) {
-        case FE_DOWNWARD:
-          return OutFPBits::zero(Sign::NEG).get_val();
-        default:
-          return OutFPBits::zero(Sign::POS).get_val();
+        if (is_effectively_add) {
+          return OutFPBits::zero(x_bits.sign()).get_val();
+        } else {
+          switch (quick_get_round()) {
+          case FE_DOWNWARD:
+            return OutFPBits::zero(Sign::NEG).get_val();
+          default:
+            return OutFPBits::zero(Sign::POS).get_val();
+          }
         }
       }
 

>From 8442d0224ea214443d673a9dacd0ec588ec26ca0 Mon Sep 17 00:00:00 2001
From: Sukumarsawant <sawantsukumar at gmail.com>
Date: Sun, 22 Feb 2026 18:54:09 +0530
Subject: [PATCH 16/43] syn err

---
 libc/test/src/math/fmabf16_test.cpp | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/libc/test/src/math/fmabf16_test.cpp b/libc/test/src/math/fmabf16_test.cpp
index c10df50c0ffc6..a2241be0f568c 100644
--- a/libc/test/src/math/fmabf16_test.cpp
+++ b/libc/test/src/math/fmabf16_test.cpp
@@ -47,9 +47,7 @@ TEST_F(LlvmLibcFmaBf16Test, PositiveRange) {
 }
 
 TEST_F(LlvmLibcFmaBf16Test, NegativeRange) {
-
-  bfloat16 z = 
-    for (uint16_t v1 = NEG_START; v1 <= NEG_STOP; ++v1) {
+  for (uint16_t v1 = NEG_START; v1 <= NEG_STOP; ++v1) {
       for (uint16_t v2 = NEG_START; v2 <= NEG_STOP; v2 += 256) {
 
         bfloat16 x = FPBits(v1).get_val();
@@ -79,4 +77,4 @@ TEST_F(LlvmLibcFmaBf16Test, CancellationTest) {
                                      LIBC_NAMESPACE::fmabf16(x, y, z), 0.5);
     }
   }
-}
\ No newline at end of file
+}

>From 05d31a9303cf1be8c2861b501347f0b70b4c6a62 Mon Sep 17 00:00:00 2001
From: Sukumarsawant <sawantsukumar at gmail.com>
Date: Sun, 22 Feb 2026 19:03:41 +0530
Subject: [PATCH 17/43] testing terney for bfloat16-bfloat16

---
 libc/utils/MPFRWrapper/MPFRUtils.cpp | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/libc/utils/MPFRWrapper/MPFRUtils.cpp b/libc/utils/MPFRWrapper/MPFRUtils.cpp
index a7d307b47c3e8..22617c0ee3f99 100644
--- a/libc/utils/MPFRWrapper/MPFRUtils.cpp
+++ b/libc/utils/MPFRWrapper/MPFRUtils.cpp
@@ -496,6 +496,8 @@ explain_ternary_operation_one_output_error(Operation,
                                            float16, double, RoundingMode);
 #endif
 
+template void explain_ternary_operation_one_output_error(
+    Operation, const TernaryInput<bfloat16> &, bfloat16, double, RoundingMode);
 template void explain_ternary_operation_one_output_error(
     Operation, const TernaryInput<float> &, bfloat16, double, RoundingMode);
 template void explain_ternary_operation_one_output_error(
@@ -762,6 +764,10 @@ compare_ternary_operation_one_output(Operation,
                                      double, RoundingMode);
 #endif
 
+template bool compare_ternary_operation_one_output(Operation,
+                                                   const TernaryInput<bfloat16> &,
+                                                   bfloat16, double,
+                                                   RoundingMode);
 template bool compare_ternary_operation_one_output(Operation,
                                                    const TernaryInput<float> &,
                                                    bfloat16, double,

>From a5424ba1844853668d82654af87d00b463514861 Mon Sep 17 00:00:00 2001
From: Sukumarsawant <sawantsukumar at gmail.com>
Date: Sun, 22 Feb 2026 20:52:35 +0530
Subject: [PATCH 18/43] removed -x*y test ( to be added )

---
 libc/test/src/math/fmabf16_test.cpp | 20 +-------------------
 1 file changed, 1 insertion(+), 19 deletions(-)

diff --git a/libc/test/src/math/fmabf16_test.cpp b/libc/test/src/math/fmabf16_test.cpp
index a2241be0f568c..68ee2208beb1f 100644
--- a/libc/test/src/math/fmabf16_test.cpp
+++ b/libc/test/src/math/fmabf16_test.cpp
@@ -25,8 +25,6 @@ static constexpr uint16_t POS_STOP = 0x7f80U;
 static constexpr uint16_t NEG_START = 0x8000U;
 static constexpr uint16_t NEG_STOP = 0xff80U; //-inf
 
-// covers normal range since special cases covered in unit tests
-
 TEST_F(LlvmLibcFmaBf16Test, PositiveRange) {
 
   
@@ -61,20 +59,4 @@ TEST_F(LlvmLibcFmaBf16Test, NegativeRange) {
       }
     }
   
-}
-TEST_F(LlvmLibcFmaBf16Test, CancellationTest) {
-
-  for (uint16_t v1 = 0; v1 <= 0xFFFF; v1 += 13) {
-    for (uint16_t v2 = 0; v2 <= 0xFFFF; v2 += 17) {
-
-      bfloat16 x = FPBits(v1).get_val();
-      bfloat16 y = FPBits(v2).get_val();
-      bfloat16 z = -(x * y);
-
-      mpfr::TernaryInput<bfloat16> input{x, y, z};
-
-      EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
-                                     LIBC_NAMESPACE::fmabf16(x, y, z), 0.5);
-    }
-  }
-}
+}
\ No newline at end of file

>From 361e0136ad9971ca7ce5ec1937a150609ea403e4 Mon Sep 17 00:00:00 2001
From: Sukumarsawant <sawantsukumar at gmail.com>
Date: Mon, 23 Feb 2026 07:04:29 +0530
Subject: [PATCH 19/43] EOF

---
 libc/src/__support/FPUtil/bfloat16.h | 252 +++++++++++++--------------
 libc/test/src/math/fmabf16_test.cpp  |  35 ++++
 2 files changed, 161 insertions(+), 126 deletions(-)

diff --git a/libc/src/__support/FPUtil/bfloat16.h b/libc/src/__support/FPUtil/bfloat16.h
index 7f340bcef1c89..4629a3d950290 100644
--- a/libc/src/__support/FPUtil/bfloat16.h
+++ b/libc/src/__support/FPUtil/bfloat16.h
@@ -1,126 +1,126 @@
-//===-- Definition of bfloat16 data type. -----------------------*- C++ -*-===//
-//
-// 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
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef LLVM_LIBC_SRC___SUPPORT_FPUTIL_BFLOAT16_H
-#define LLVM_LIBC_SRC___SUPPORT_FPUTIL_BFLOAT16_H
-
-#include "hdr/stdint_proxy.h"
-#include "src/__support/CPP/bit.h"
-#include "src/__support/CPP/type_traits.h"
-#include "src/__support/FPUtil/cast.h"
-#include "src/__support/FPUtil/comparison_operations.h"
-#include "src/__support/FPUtil/dyadic_float.h"
-#include "src/__support/FPUtil/generic/add_sub.h"
-#include "src/__support/FPUtil/generic/div.h"
-#include "src/__support/FPUtil/generic/mul.h"
-#include "src/__support/macros/config.h"
-#include "src/__support/macros/properties/types.h"
-
-namespace LIBC_NAMESPACE_DECL {
-namespace fputil {
-
-struct BFloat16 {
-  uint16_t bits;
-
-  LIBC_INLINE BFloat16() = default;
-
-  template <typename T>
-  LIBC_INLINE constexpr explicit BFloat16(T value)
-      : bits(static_cast<uint16_t>(0U)) {
-    if constexpr (cpp::is_floating_point_v<T>) {
-      bits = fputil::cast<bfloat16>(value).bits;
-    } else if constexpr (cpp::is_integral_v<T>) {
-      Sign sign = Sign::POS;
-
-      if constexpr (cpp::is_signed_v<T>) {
-        if (value < 0) {
-          sign = Sign::NEG;
-          value = -value;
-        }
-      }
-
-      fputil::DyadicFloat<cpp::numeric_limits<cpp::make_unsigned_t<T>>::digits>
-          xd(sign, 0, value);
-      bits = xd.template as<bfloat16, /*ShouldSignalExceptions=*/true>().bits;
-
-    } else if constexpr (cpp::is_convertible_v<T, BFloat16>) {
-      bits = value.operator BFloat16().bits;
-    } else {
-      bits = fputil::cast<bfloat16>(static_cast<float>(value)).bits;
-    }
-  }
-
-  template <cpp::enable_if_t<fputil::get_fp_type<float>() ==
-                                 fputil::FPType::IEEE754_Binary32,
-                             int> = 0>
-  LIBC_INLINE constexpr operator float() const {
-    uint32_t x_bits = static_cast<uint32_t>(bits) << 16U;
-    return cpp::bit_cast<float>(x_bits);
-  }
-
-  template <typename T, cpp::enable_if_t<cpp::is_integral_v<T>, int> = 0>
-  LIBC_INLINE constexpr explicit operator T() const {
-    return static_cast<T>(static_cast<float>(*this));
-  }
-
-  LIBC_INLINE bool operator==(BFloat16 other) const {
-    return fputil::equals(*this, other);
-  }
-
-  LIBC_INLINE bool operator!=(BFloat16 other) const {
-    return !fputil::equals(*this, other);
-  }
-
-  LIBC_INLINE bool operator<(BFloat16 other) const {
-    return fputil::less_than(*this, other);
-  }
-
-  LIBC_INLINE bool operator<=(BFloat16 other) const {
-    return fputil::less_than_or_equals(*this, other);
-  }
-
-  LIBC_INLINE bool operator>(BFloat16 other) const {
-    return fputil::greater_than(*this, other);
-  }
-
-  LIBC_INLINE bool operator>=(BFloat16 other) const {
-    return fputil::greater_than_or_equals(*this, other);
-  }
-
-  LIBC_INLINE constexpr BFloat16 operator-() const {
-    fputil::FPBits<bfloat16> result(*this);
-    result.set_sign(result.is_pos() ? Sign::NEG : Sign::POS);
-    return result.get_val();
-  }
-
-  LIBC_INLINE BFloat16 operator+(BFloat16 other) const {
-    return fputil::generic::add<BFloat16>(*this, other);
-  }
-
-  LIBC_INLINE BFloat16 operator-(BFloat16 other) const {
-    return fputil::generic::sub<BFloat16>(*this, other);
-  }
-
-  LIBC_INLINE BFloat16 operator*(BFloat16 other) const {
-    return fputil::generic::mul<bfloat16>(*this, other);
-  }
-
-  LIBC_INLINE BFloat16 operator/(BFloat16 other) const {
-    return fputil::generic::div<bfloat16>(*this, other);
-  }
-
-  LIBC_INLINE BFloat16 &operator*=(const BFloat16 &other) {
-  *this = *this * other;
-  return *this;
-  }
-}; // struct BFloat16
-
-} // namespace fputil
-} // namespace LIBC_NAMESPACE_DECL
-
-#endif // LLVM_LIBC_SRC___SUPPORT_FPUTIL_BFLOAT16_H
+//===-- Definition of bfloat16 data type. -----------------------*- C++ -*-===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_LIBC_SRC___SUPPORT_FPUTIL_BFLOAT16_H
+#define LLVM_LIBC_SRC___SUPPORT_FPUTIL_BFLOAT16_H
+
+#include "hdr/stdint_proxy.h"
+#include "src/__support/CPP/bit.h"
+#include "src/__support/CPP/type_traits.h"
+#include "src/__support/FPUtil/cast.h"
+#include "src/__support/FPUtil/comparison_operations.h"
+#include "src/__support/FPUtil/dyadic_float.h"
+#include "src/__support/FPUtil/generic/add_sub.h"
+#include "src/__support/FPUtil/generic/div.h"
+#include "src/__support/FPUtil/generic/mul.h"
+#include "src/__support/macros/config.h"
+#include "src/__support/macros/properties/types.h"
+
+namespace LIBC_NAMESPACE_DECL {
+namespace fputil {
+
+struct BFloat16 {
+  uint16_t bits;
+
+  LIBC_INLINE BFloat16() = default;
+
+  template <typename T>
+  LIBC_INLINE constexpr explicit BFloat16(T value)
+      : bits(static_cast<uint16_t>(0U)) {
+    if constexpr (cpp::is_floating_point_v<T>) {
+      bits = fputil::cast<bfloat16>(value).bits;
+    } else if constexpr (cpp::is_integral_v<T>) {
+      Sign sign = Sign::POS;
+
+      if constexpr (cpp::is_signed_v<T>) {
+        if (value < 0) {
+          sign = Sign::NEG;
+          value = -value;
+        }
+      }
+
+      fputil::DyadicFloat<cpp::numeric_limits<cpp::make_unsigned_t<T>>::digits>
+          xd(sign, 0, value);
+      bits = xd.template as<bfloat16, /*ShouldSignalExceptions=*/true>().bits;
+
+    } else if constexpr (cpp::is_convertible_v<T, BFloat16>) {
+      bits = value.operator BFloat16().bits;
+    } else {
+      bits = fputil::cast<bfloat16>(static_cast<float>(value)).bits;
+    }
+  }
+
+  template <cpp::enable_if_t<fputil::get_fp_type<float>() ==
+                                 fputil::FPType::IEEE754_Binary32,
+                             int> = 0>
+  LIBC_INLINE constexpr operator float() const {
+    uint32_t x_bits = static_cast<uint32_t>(bits) << 16U;
+    return cpp::bit_cast<float>(x_bits);
+  }
+
+  template <typename T, cpp::enable_if_t<cpp::is_integral_v<T>, int> = 0>
+  LIBC_INLINE constexpr explicit operator T() const {
+    return static_cast<T>(static_cast<float>(*this));
+  }
+
+  LIBC_INLINE bool operator==(BFloat16 other) const {
+    return fputil::equals(*this, other);
+  }
+
+  LIBC_INLINE bool operator!=(BFloat16 other) const {
+    return !fputil::equals(*this, other);
+  }
+
+  LIBC_INLINE bool operator<(BFloat16 other) const {
+    return fputil::less_than(*this, other);
+  }
+
+  LIBC_INLINE bool operator<=(BFloat16 other) const {
+    return fputil::less_than_or_equals(*this, other);
+  }
+
+  LIBC_INLINE bool operator>(BFloat16 other) const {
+    return fputil::greater_than(*this, other);
+  }
+
+  LIBC_INLINE bool operator>=(BFloat16 other) const {
+    return fputil::greater_than_or_equals(*this, other);
+  }
+
+  LIBC_INLINE constexpr BFloat16 operator-() const {
+    fputil::FPBits<bfloat16> result(*this);
+    result.set_sign(result.is_pos() ? Sign::NEG : Sign::POS);
+    return result.get_val();
+  }
+
+  LIBC_INLINE BFloat16 operator+(BFloat16 other) const {
+    return fputil::generic::add<BFloat16>(*this, other);
+  }
+
+  LIBC_INLINE BFloat16 operator-(BFloat16 other) const {
+    return fputil::generic::sub<BFloat16>(*this, other);
+  }
+
+  LIBC_INLINE BFloat16 operator*(BFloat16 other) const {
+    return fputil::generic::mul<bfloat16>(*this, other);
+  }
+
+  LIBC_INLINE BFloat16 operator/(BFloat16 other) const {
+    return fputil::generic::div<bfloat16>(*this, other);
+  }
+
+  LIBC_INLINE BFloat16 &operator*=(const BFloat16 &other) {
+  *this = *this * other;
+  return *this;
+  }
+}; // struct BFloat16
+
+} // namespace fputil
+} // namespace LIBC_NAMESPACE_DECL
+
+#endif // LLVM_LIBC_SRC___SUPPORT_FPUTIL_BFLOAT16_H
diff --git a/libc/test/src/math/fmabf16_test.cpp b/libc/test/src/math/fmabf16_test.cpp
index 68ee2208beb1f..862f019122c15 100644
--- a/libc/test/src/math/fmabf16_test.cpp
+++ b/libc/test/src/math/fmabf16_test.cpp
@@ -59,4 +59,39 @@ TEST_F(LlvmLibcFmaBf16Test, NegativeRange) {
       }
     }
   
+}
+TEST_F(LlvmLibcFmaBf16Test, PositiveRange) {
+
+  
+    for (uint16_t v1 = POS_START; v1 <= POS_STOP; ++v1) {
+      for (uint16_t v2 = POS_START; v2 <= POS_STOP; v2 += 256) {
+
+        bfloat16 x = FPBits(v1).get_val();
+        bfloat16 y = FPBits(v2).get_val();
+        bfloat16 z = -(x * y);
+        
+        mpfr::TernaryInput<bfloat16> input{x, y, z};
+
+        EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
+                                       LIBC_NAMESPACE::fmabf16(x, y, z), 0.5);
+      }
+    }
+  
+}
+
+TEST_F(LlvmLibcFmaBf16Test, NegativeRange) {
+  for (uint16_t v1 = NEG_START; v1 <= NEG_STOP; ++v1) {
+      for (uint16_t v2 = NEG_START; v2 <= NEG_STOP; v2 += 256) {
+
+        bfloat16 x = FPBits(v1).get_val();
+        bfloat16 y = FPBits(v2).get_val();
+        bfloat16 z = -(x * y);
+
+        mpfr::TernaryInput<bfloat16> input{x, y, z};
+
+        EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
+                                       LIBC_NAMESPACE::fmabf16(x, y, z), 0.5);
+      }
+    }
+  
 }
\ No newline at end of file

>From 6b321fd23d92334be40a297eb593a59370191875 Mon Sep 17 00:00:00 2001
From: Sukumarsawant <sawantsukumar at gmail.com>
Date: Mon, 23 Feb 2026 07:12:47 +0530
Subject: [PATCH 20/43] test edit rm

---
 libc/test/src/math/fmabf16_test.cpp | 35 -----------------------------
 1 file changed, 35 deletions(-)

diff --git a/libc/test/src/math/fmabf16_test.cpp b/libc/test/src/math/fmabf16_test.cpp
index 862f019122c15..da5f6db2696cc 100644
--- a/libc/test/src/math/fmabf16_test.cpp
+++ b/libc/test/src/math/fmabf16_test.cpp
@@ -60,38 +60,3 @@ TEST_F(LlvmLibcFmaBf16Test, NegativeRange) {
     }
   
 }
-TEST_F(LlvmLibcFmaBf16Test, PositiveRange) {
-
-  
-    for (uint16_t v1 = POS_START; v1 <= POS_STOP; ++v1) {
-      for (uint16_t v2 = POS_START; v2 <= POS_STOP; v2 += 256) {
-
-        bfloat16 x = FPBits(v1).get_val();
-        bfloat16 y = FPBits(v2).get_val();
-        bfloat16 z = -(x * y);
-        
-        mpfr::TernaryInput<bfloat16> input{x, y, z};
-
-        EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
-                                       LIBC_NAMESPACE::fmabf16(x, y, z), 0.5);
-      }
-    }
-  
-}
-
-TEST_F(LlvmLibcFmaBf16Test, NegativeRange) {
-  for (uint16_t v1 = NEG_START; v1 <= NEG_STOP; ++v1) {
-      for (uint16_t v2 = NEG_START; v2 <= NEG_STOP; v2 += 256) {
-
-        bfloat16 x = FPBits(v1).get_val();
-        bfloat16 y = FPBits(v2).get_val();
-        bfloat16 z = -(x * y);
-
-        mpfr::TernaryInput<bfloat16> input{x, y, z};
-
-        EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
-                                       LIBC_NAMESPACE::fmabf16(x, y, z), 0.5);
-      }
-    }
-  
-}
\ No newline at end of file

>From fc12383401d53543a5b6852b4d3565b374dbb46e Mon Sep 17 00:00:00 2001
From: Sukumarsawant <sawantsukumar at gmail.com>
Date: Mon, 23 Feb 2026 11:39:27 +0530
Subject: [PATCH 21/43] chceking if its time limit constrain for ubuntu 24.04 (
 reduced to 2^16)

---
 libc/src/__support/FPUtil/bfloat16.h | 4 ++--
 libc/test/src/math/fmabf16_test.cpp  | 8 ++++----
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/libc/src/__support/FPUtil/bfloat16.h b/libc/src/__support/FPUtil/bfloat16.h
index 4629a3d950290..7d64b441bf9b2 100644
--- a/libc/src/__support/FPUtil/bfloat16.h
+++ b/libc/src/__support/FPUtil/bfloat16.h
@@ -115,8 +115,8 @@ struct BFloat16 {
   }
 
   LIBC_INLINE BFloat16 &operator*=(const BFloat16 &other) {
-  *this = *this * other;
-  return *this;
+    *this = *this * other;
+    return *this;
   }
 }; // struct BFloat16
 
diff --git a/libc/test/src/math/fmabf16_test.cpp b/libc/test/src/math/fmabf16_test.cpp
index da5f6db2696cc..4ebc029a72387 100644
--- a/libc/test/src/math/fmabf16_test.cpp
+++ b/libc/test/src/math/fmabf16_test.cpp
@@ -29,7 +29,7 @@ TEST_F(LlvmLibcFmaBf16Test, PositiveRange) {
 
   
     for (uint16_t v1 = POS_START; v1 <= POS_STOP; ++v1) {
-      for (uint16_t v2 = POS_START; v2 <= POS_STOP; v2 += 256) {
+      // for (uint16_t v2 = POS_START; v2 <= POS_STOP; v2 += 256) {
 
         bfloat16 x = FPBits(v1).get_val();
         bfloat16 y = FPBits(v2).get_val();
@@ -39,14 +39,14 @@ TEST_F(LlvmLibcFmaBf16Test, PositiveRange) {
 
         EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
                                        LIBC_NAMESPACE::fmabf16(x, y, z), 0.5);
-      }
+      // }
     }
   
 }
 
 TEST_F(LlvmLibcFmaBf16Test, NegativeRange) {
   for (uint16_t v1 = NEG_START; v1 <= NEG_STOP; ++v1) {
-      for (uint16_t v2 = NEG_START; v2 <= NEG_STOP; v2 += 256) {
+      // for (uint16_t v2 = NEG_START; v2 <= NEG_STOP; v2 += 256) {
 
         bfloat16 x = FPBits(v1).get_val();
         bfloat16 y = FPBits(v2).get_val();
@@ -57,6 +57,6 @@ TEST_F(LlvmLibcFmaBf16Test, NegativeRange) {
         EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
                                        LIBC_NAMESPACE::fmabf16(x, y, z), 0.5);
       }
-    }
+    // }
   
 }

>From 382b629112fd82c0bb5d57dcbd51a1f9df6e412c Mon Sep 17 00:00:00 2001
From: Sukumarsawant <sawantsukumar at gmail.com>
Date: Mon, 23 Feb 2026 11:49:01 +0530
Subject: [PATCH 22/43] continued prev

---
 libc/test/src/math/fmabf16_test.cpp | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/libc/test/src/math/fmabf16_test.cpp b/libc/test/src/math/fmabf16_test.cpp
index 4ebc029a72387..f57af0b6272a8 100644
--- a/libc/test/src/math/fmabf16_test.cpp
+++ b/libc/test/src/math/fmabf16_test.cpp
@@ -32,7 +32,7 @@ TEST_F(LlvmLibcFmaBf16Test, PositiveRange) {
       // for (uint16_t v2 = POS_START; v2 <= POS_STOP; v2 += 256) {
 
         bfloat16 x = FPBits(v1).get_val();
-        bfloat16 y = FPBits(v2).get_val();
+        bfloat16 y = FPBits(POS_START).get_val();
         bfloat16 z = FPBits(POS_START).get_val();
         
         mpfr::TernaryInput<bfloat16> input{x, y, z};
@@ -49,7 +49,7 @@ TEST_F(LlvmLibcFmaBf16Test, NegativeRange) {
       // for (uint16_t v2 = NEG_START; v2 <= NEG_STOP; v2 += 256) {
 
         bfloat16 x = FPBits(v1).get_val();
-        bfloat16 y = FPBits(v2).get_val();
+        bfloat16 y = FPBits(NEG_START).get_val();
         bfloat16 z = FPBits(NEG_START).get_val();
 
         mpfr::TernaryInput<bfloat16> input{x, y, z};

>From 9e11f3eb31e5ece533ac841ee69615221468137c Mon Sep 17 00:00:00 2001
From: Sukumarsawant <sawantsukumar at gmail.com>
Date: Mon, 23 Feb 2026 12:31:41 +0530
Subject: [PATCH 23/43] github CI passes for single bf16 input space - testing
 for 2 + 1 fixed

---
 libc/test/src/math/fmabf16_test.cpp | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/libc/test/src/math/fmabf16_test.cpp b/libc/test/src/math/fmabf16_test.cpp
index f57af0b6272a8..da5f6db2696cc 100644
--- a/libc/test/src/math/fmabf16_test.cpp
+++ b/libc/test/src/math/fmabf16_test.cpp
@@ -29,27 +29,27 @@ TEST_F(LlvmLibcFmaBf16Test, PositiveRange) {
 
   
     for (uint16_t v1 = POS_START; v1 <= POS_STOP; ++v1) {
-      // for (uint16_t v2 = POS_START; v2 <= POS_STOP; v2 += 256) {
+      for (uint16_t v2 = POS_START; v2 <= POS_STOP; v2 += 256) {
 
         bfloat16 x = FPBits(v1).get_val();
-        bfloat16 y = FPBits(POS_START).get_val();
+        bfloat16 y = FPBits(v2).get_val();
         bfloat16 z = FPBits(POS_START).get_val();
         
         mpfr::TernaryInput<bfloat16> input{x, y, z};
 
         EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
                                        LIBC_NAMESPACE::fmabf16(x, y, z), 0.5);
-      // }
+      }
     }
   
 }
 
 TEST_F(LlvmLibcFmaBf16Test, NegativeRange) {
   for (uint16_t v1 = NEG_START; v1 <= NEG_STOP; ++v1) {
-      // for (uint16_t v2 = NEG_START; v2 <= NEG_STOP; v2 += 256) {
+      for (uint16_t v2 = NEG_START; v2 <= NEG_STOP; v2 += 256) {
 
         bfloat16 x = FPBits(v1).get_val();
-        bfloat16 y = FPBits(NEG_START).get_val();
+        bfloat16 y = FPBits(v2).get_val();
         bfloat16 z = FPBits(NEG_START).get_val();
 
         mpfr::TernaryInput<bfloat16> input{x, y, z};
@@ -57,6 +57,6 @@ TEST_F(LlvmLibcFmaBf16Test, NegativeRange) {
         EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
                                        LIBC_NAMESPACE::fmabf16(x, y, z), 0.5);
       }
-    // }
+    }
   
 }

>From 2dfcd27d082f5b7fa4ae498e713dd23d7b596c69 Mon Sep 17 00:00:00 2001
From: Sukumarsawant <sawantsukumar at gmail.com>
Date: Mon, 23 Feb 2026 13:27:05 +0530
Subject: [PATCH 24/43] reducing the input space while checking proper cases at
 the same time + adding into math website

---
 libc/docs/headers/math/index.rst    |   2 +-
 libc/test/src/math/fmabf16_test.cpp | 122 +++++++++++++++++++++++++---
 2 files changed, 112 insertions(+), 12 deletions(-)

diff --git a/libc/docs/headers/math/index.rst b/libc/docs/headers/math/index.rst
index 51bb17ff8dab6..7bea9d2e614b0 100644
--- a/libc/docs/headers/math/index.rst
+++ b/libc/docs/headers/math/index.rst
@@ -309,7 +309,7 @@ Higher Math Functions
 +-----------+------------------+-----------------+------------------------+----------------------+------------------------+------------------------+------------------------+----------------------------+
 | expm1     | |check|          | |check|         |                        | |check|              |                        |                        | 7.12.6.6               | F.10.3.6                   |
 +-----------+------------------+-----------------+------------------------+----------------------+------------------------+------------------------+------------------------+----------------------------+
-| fma       | |check|          | |check|         |                        | |check|              |                        |                        | 7.12.13.1              | F.10.10.1                  |
+| fma       | |check|          | |check|         |                        | |check|              | |check|                |                        | 7.12.13.1              | F.10.10.1                  |
 +-----------+------------------+-----------------+------------------------+----------------------+------------------------+------------------------+------------------------+----------------------------+
 | f16sqrt   | |check|\*        | |check|\*       | |check|\*              | N/A                  | |check|                |                        | 7.12.14.6              | F.10.11                    |
 +-----------+------------------+-----------------+------------------------+----------------------+------------------------+------------------------+------------------------+----------------------------+
diff --git a/libc/test/src/math/fmabf16_test.cpp b/libc/test/src/math/fmabf16_test.cpp
index da5f6db2696cc..a95c38b6dfbac 100644
--- a/libc/test/src/math/fmabf16_test.cpp
+++ b/libc/test/src/math/fmabf16_test.cpp
@@ -11,7 +11,6 @@
 #include "test/UnitTest/FPMatcher.h"
 #include "test/UnitTest/Test.h"
 #include "utils/MPFRWrapper/MPFRUtils.h"
-#include <vector>
 
 using LlvmLibcFmaBf16Test = LIBC_NAMESPACE::testing::FPTest<bfloat16>;
 
@@ -23,39 +22,140 @@ static constexpr uint16_t POS_STOP = 0x7f80U;
 
 // range: [-0, -inf]
 static constexpr uint16_t NEG_START = 0x8000U;
-static constexpr uint16_t NEG_STOP = 0xff80U; //-inf
+static constexpr uint16_t NEG_STOP = 0xff80U;
+
+// subnormal range (positive)
+static constexpr uint16_t SUBNORM_POS_START = 0x0001U;
+static constexpr uint16_t SUBNORM_POS_STOP = 0x007FU;
+
+// subnormal range (negative)
+static constexpr uint16_t SUBNORM_NEG_START = 0x8001U;
+static constexpr uint16_t SUBNORM_NEG_STOP = 0x807FU;
+
+static constexpr uint16_t STEP = 256;
 
 TEST_F(LlvmLibcFmaBf16Test, PositiveRange) {
 
-  
-    for (uint16_t v1 = POS_START; v1 <= POS_STOP; ++v1) {
-      for (uint16_t v2 = POS_START; v2 <= POS_STOP; v2 += 256) {
+  const bfloat16 z_values[] = {zero, neg_zero, FPBits(0x3f80U).get_val(), FPBits(0xbf80U).get_val(), inf, neg_inf, min_normal, max_normal};
+    for (uint16_t v1 = POS_START; v1 <= POS_STOP; v1 += STEP) {
+      for (uint16_t v2 = POS_START; v2 <= POS_STOP; v2 += STEP) {
 
         bfloat16 x = FPBits(v1).get_val();
         bfloat16 y = FPBits(v2).get_val();
-        bfloat16 z = FPBits(POS_START).get_val();
         
+        for (bfloat16 z : z_values) {
         mpfr::TernaryInput<bfloat16> input{x, y, z};
 
         EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
                                        LIBC_NAMESPACE::fmabf16(x, y, z), 0.5);
+        }
+        mpfr::TernaryInput<bfloat16> input{x, y, -x*y};
+        EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
+                                         LIBC_NAMESPACE::fmabf16(x, y,- x*y), 0.5);
       }
     }
   
 }
 
 TEST_F(LlvmLibcFmaBf16Test, NegativeRange) {
-  for (uint16_t v1 = NEG_START; v1 <= NEG_STOP; ++v1) {
-      for (uint16_t v2 = NEG_START; v2 <= NEG_STOP; v2 += 256) {
+  const bfloat16 z_values[] = {zero, neg_zero, FPBits(0x3f80U).get_val(), FPBits(0xbf80U).get_val(), inf, neg_inf, min_normal, max_normal};
+  for (uint16_t v1 = NEG_START; v1 <= NEG_STOP; v1+= STEP) {
+      for (uint16_t v2 = NEG_START; v2 <= NEG_STOP; v2 += STEP) {
 
         bfloat16 x = FPBits(v1).get_val();
         bfloat16 y = FPBits(v2).get_val();
-        bfloat16 z = FPBits(NEG_START).get_val();
+        for (bfloat16 z : z_values) {  
+          mpfr::TernaryInput<bfloat16> input{x, y, z};
 
-        mpfr::TernaryInput<bfloat16> input{x, y, z};
+          EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
+                                         LIBC_NAMESPACE::fmabf16(x, y, z), 0.5);
+        }
+        mpfr::TernaryInput<bfloat16> input{x, y, -x*y};
+        EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
+                                         LIBC_NAMESPACE::fmabf16(x, y,- x*y), 0.5);
+      }
+    }
+  
+}
+TEST_F(LlvmLibcFmaBf16Test, OppositeSignRange) {
+  const bfloat16 z_values[] = {zero, neg_zero, FPBits(0x3f80U).get_val(), FPBits(0xbf80U).get_val(), inf, neg_inf, min_normal, max_normal};
+  for (uint16_t v1 = POS_START; v1 <= POS_STOP; v1+= STEP) {
+      for (uint16_t v2 = NEG_START; v2 <= NEG_STOP; v2 += STEP) {
 
+        bfloat16 x = FPBits(v1).get_val();
+        bfloat16 y = FPBits(v2).get_val();
+        for (bfloat16 z : z_values) {  
+          mpfr::TernaryInput<bfloat16> input{x, y, z};
+
+          EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
+                                         LIBC_NAMESPACE::fmabf16(x, y, z), 0.5);
+        }
+        mpfr::TernaryInput<bfloat16> input{x, y, -x*y};
         EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
-                                       LIBC_NAMESPACE::fmabf16(x, y, z), 0.5);
+                                         LIBC_NAMESPACE::fmabf16(x, y,- x*y), 0.5);
+      }
+    }
+  
+}
+
+TEST_F(LlvmLibcFmaBf16Test, SubnormalPositiveRange) {
+  const bfloat16 z_values[] = {zero, neg_zero, FPBits(0x3f80U).get_val(), FPBits(0xbf80U).get_val(), inf, neg_inf, min_normal, max_normal};
+  for (uint16_t v1 = SUBNORM_POS_START; v1 <= SUBNORM_POS_STOP; v1++) {
+      for (uint16_t v2 = SUBNORM_POS_START; v2 <= SUBNORM_POS_STOP; v2++) {
+
+        bfloat16 x = FPBits(v1).get_val();
+        bfloat16 y = FPBits(v2).get_val();
+        for (bfloat16 z : z_values) {  
+          mpfr::TernaryInput<bfloat16> input{x, y, z};
+
+          EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
+                                         LIBC_NAMESPACE::fmabf16(x, y, z), 0.5);
+        }
+        mpfr::TernaryInput<bfloat16> input{x, y, -x*y};
+        EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
+                                         LIBC_NAMESPACE::fmabf16(x, y,- x*y), 0.5);  
+      }
+    }
+  
+}
+
+TEST_F(LlvmLibcFmaBf16Test, SubnormalNegativeRange) {
+  const bfloat16 z_values[] = {zero, neg_zero, FPBits(0x3f80U).get_val(), FPBits(0xbf80U).get_val(), inf, neg_inf, min_normal, max_normal};
+  for (uint16_t v1 = SUBNORM_NEG_START; v1 <= SUBNORM_NEG_STOP; v1++) {
+      for (uint16_t v2 = SUBNORM_NEG_START; v2 <= SUBNORM_NEG_STOP; v2++) {
+
+        bfloat16 x = FPBits(v1).get_val();
+        bfloat16 y = FPBits(v2).get_val();
+        for (bfloat16 z : z_values) {  
+          mpfr::TernaryInput<bfloat16> input{x, y, z};
+
+          EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
+                                         LIBC_NAMESPACE::fmabf16(x, y, z), 0.5);
+        }
+        mpfr::TernaryInput<bfloat16> input{x, y, -x*y};
+        EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
+                                         LIBC_NAMESPACE::fmabf16(x, y,- x*y), 0.5);
+      }
+    }
+  
+}
+
+TEST_F(LlvmLibcFmaBf16Test, SpecialNumbers) {
+  const bfloat16 z_values[] = {zero, neg_zero, FPBits(0x3f80U).get_val(), FPBits(0xbf80U).get_val(), inf, neg_inf, min_normal, max_normal};
+  const bfloat16 x_values[] = {zero, neg_zero, FPBits(0x3f80U).get_val(), FPBits(0xbf80U).get_val(), inf, neg_inf, min_normal, max_normal};
+  const bfloat16 y_values[] = {zero, neg_zero, FPBits(0x3f80U).get_val(), FPBits(0xbf80U).get_val(), inf, neg_inf, min_normal, max_normal};
+
+  for (bfloat16 x : x_values) {
+      for (bfloat16 y : y_values) {
+        for (bfloat16 z : z_values) {  
+          mpfr::TernaryInput<bfloat16> input{x, y, z};
+
+          EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
+                                         LIBC_NAMESPACE::fmabf16(x, y, z), 0.5);
+        }
+        mpfr::TernaryInput<bfloat16> input{x, y, -x*y};
+        EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
+                                         LIBC_NAMESPACE::fmabf16(x, y,- x*y), 0.5);
       }
     }
   

>From 80cf903e261801d1509275e755f40118f7c92a6e Mon Sep 17 00:00:00 2001
From: Sukumarsawant <sawantsukumar at gmail.com>
Date: Mon, 23 Feb 2026 13:27:45 +0530
Subject: [PATCH 25/43] formatted

---
 libc/test/src/math/fmabf16_test.cpp | 216 +++++++++++++++++-----------
 1 file changed, 136 insertions(+), 80 deletions(-)

diff --git a/libc/test/src/math/fmabf16_test.cpp b/libc/test/src/math/fmabf16_test.cpp
index a95c38b6dfbac..f06670eb0f10b 100644
--- a/libc/test/src/math/fmabf16_test.cpp
+++ b/libc/test/src/math/fmabf16_test.cpp
@@ -36,127 +36,183 @@ static constexpr uint16_t STEP = 256;
 
 TEST_F(LlvmLibcFmaBf16Test, PositiveRange) {
 
-  const bfloat16 z_values[] = {zero, neg_zero, FPBits(0x3f80U).get_val(), FPBits(0xbf80U).get_val(), inf, neg_inf, min_normal, max_normal};
-    for (uint16_t v1 = POS_START; v1 <= POS_STOP; v1 += STEP) {
-      for (uint16_t v2 = POS_START; v2 <= POS_STOP; v2 += STEP) {
-
-        bfloat16 x = FPBits(v1).get_val();
-        bfloat16 y = FPBits(v2).get_val();
-        
-        for (bfloat16 z : z_values) {
+  const bfloat16 z_values[] = {zero,
+                               neg_zero,
+                               FPBits(0x3f80U).get_val(),
+                               FPBits(0xbf80U).get_val(),
+                               inf,
+                               neg_inf,
+                               min_normal,
+                               max_normal};
+  for (uint16_t v1 = POS_START; v1 <= POS_STOP; v1 += STEP) {
+    for (uint16_t v2 = POS_START; v2 <= POS_STOP; v2 += STEP) {
+
+      bfloat16 x = FPBits(v1).get_val();
+      bfloat16 y = FPBits(v2).get_val();
+
+      for (bfloat16 z : z_values) {
         mpfr::TernaryInput<bfloat16> input{x, y, z};
 
         EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
                                        LIBC_NAMESPACE::fmabf16(x, y, z), 0.5);
-        }
-        mpfr::TernaryInput<bfloat16> input{x, y, -x*y};
-        EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
-                                         LIBC_NAMESPACE::fmabf16(x, y,- x*y), 0.5);
       }
+      mpfr::TernaryInput<bfloat16> input{x, y, -x * y};
+      EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
+                                     LIBC_NAMESPACE::fmabf16(x, y, -x * y),
+                                     0.5);
     }
-  
+  }
 }
 
 TEST_F(LlvmLibcFmaBf16Test, NegativeRange) {
-  const bfloat16 z_values[] = {zero, neg_zero, FPBits(0x3f80U).get_val(), FPBits(0xbf80U).get_val(), inf, neg_inf, min_normal, max_normal};
-  for (uint16_t v1 = NEG_START; v1 <= NEG_STOP; v1+= STEP) {
-      for (uint16_t v2 = NEG_START; v2 <= NEG_STOP; v2 += STEP) {
-
-        bfloat16 x = FPBits(v1).get_val();
-        bfloat16 y = FPBits(v2).get_val();
-        for (bfloat16 z : z_values) {  
-          mpfr::TernaryInput<bfloat16> input{x, y, z};
-
-          EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
-                                         LIBC_NAMESPACE::fmabf16(x, y, z), 0.5);
-        }
-        mpfr::TernaryInput<bfloat16> input{x, y, -x*y};
+  const bfloat16 z_values[] = {zero,
+                               neg_zero,
+                               FPBits(0x3f80U).get_val(),
+                               FPBits(0xbf80U).get_val(),
+                               inf,
+                               neg_inf,
+                               min_normal,
+                               max_normal};
+  for (uint16_t v1 = NEG_START; v1 <= NEG_STOP; v1 += STEP) {
+    for (uint16_t v2 = NEG_START; v2 <= NEG_STOP; v2 += STEP) {
+
+      bfloat16 x = FPBits(v1).get_val();
+      bfloat16 y = FPBits(v2).get_val();
+      for (bfloat16 z : z_values) {
+        mpfr::TernaryInput<bfloat16> input{x, y, z};
+
         EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
-                                         LIBC_NAMESPACE::fmabf16(x, y,- x*y), 0.5);
+                                       LIBC_NAMESPACE::fmabf16(x, y, z), 0.5);
       }
+      mpfr::TernaryInput<bfloat16> input{x, y, -x * y};
+      EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
+                                     LIBC_NAMESPACE::fmabf16(x, y, -x * y),
+                                     0.5);
     }
-  
+  }
 }
 TEST_F(LlvmLibcFmaBf16Test, OppositeSignRange) {
-  const bfloat16 z_values[] = {zero, neg_zero, FPBits(0x3f80U).get_val(), FPBits(0xbf80U).get_val(), inf, neg_inf, min_normal, max_normal};
-  for (uint16_t v1 = POS_START; v1 <= POS_STOP; v1+= STEP) {
-      for (uint16_t v2 = NEG_START; v2 <= NEG_STOP; v2 += STEP) {
-
-        bfloat16 x = FPBits(v1).get_val();
-        bfloat16 y = FPBits(v2).get_val();
-        for (bfloat16 z : z_values) {  
-          mpfr::TernaryInput<bfloat16> input{x, y, z};
-
-          EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
-                                         LIBC_NAMESPACE::fmabf16(x, y, z), 0.5);
-        }
-        mpfr::TernaryInput<bfloat16> input{x, y, -x*y};
+  const bfloat16 z_values[] = {zero,
+                               neg_zero,
+                               FPBits(0x3f80U).get_val(),
+                               FPBits(0xbf80U).get_val(),
+                               inf,
+                               neg_inf,
+                               min_normal,
+                               max_normal};
+  for (uint16_t v1 = POS_START; v1 <= POS_STOP; v1 += STEP) {
+    for (uint16_t v2 = NEG_START; v2 <= NEG_STOP; v2 += STEP) {
+
+      bfloat16 x = FPBits(v1).get_val();
+      bfloat16 y = FPBits(v2).get_val();
+      for (bfloat16 z : z_values) {
+        mpfr::TernaryInput<bfloat16> input{x, y, z};
+
         EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
-                                         LIBC_NAMESPACE::fmabf16(x, y,- x*y), 0.5);
+                                       LIBC_NAMESPACE::fmabf16(x, y, z), 0.5);
       }
+      mpfr::TernaryInput<bfloat16> input{x, y, -x * y};
+      EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
+                                     LIBC_NAMESPACE::fmabf16(x, y, -x * y),
+                                     0.5);
     }
-  
+  }
 }
 
 TEST_F(LlvmLibcFmaBf16Test, SubnormalPositiveRange) {
-  const bfloat16 z_values[] = {zero, neg_zero, FPBits(0x3f80U).get_val(), FPBits(0xbf80U).get_val(), inf, neg_inf, min_normal, max_normal};
+  const bfloat16 z_values[] = {zero,
+                               neg_zero,
+                               FPBits(0x3f80U).get_val(),
+                               FPBits(0xbf80U).get_val(),
+                               inf,
+                               neg_inf,
+                               min_normal,
+                               max_normal};
   for (uint16_t v1 = SUBNORM_POS_START; v1 <= SUBNORM_POS_STOP; v1++) {
-      for (uint16_t v2 = SUBNORM_POS_START; v2 <= SUBNORM_POS_STOP; v2++) {
+    for (uint16_t v2 = SUBNORM_POS_START; v2 <= SUBNORM_POS_STOP; v2++) {
 
-        bfloat16 x = FPBits(v1).get_val();
-        bfloat16 y = FPBits(v2).get_val();
-        for (bfloat16 z : z_values) {  
-          mpfr::TernaryInput<bfloat16> input{x, y, z};
+      bfloat16 x = FPBits(v1).get_val();
+      bfloat16 y = FPBits(v2).get_val();
+      for (bfloat16 z : z_values) {
+        mpfr::TernaryInput<bfloat16> input{x, y, z};
 
-          EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
-                                         LIBC_NAMESPACE::fmabf16(x, y, z), 0.5);
-        }
-        mpfr::TernaryInput<bfloat16> input{x, y, -x*y};
         EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
-                                         LIBC_NAMESPACE::fmabf16(x, y,- x*y), 0.5);  
+                                       LIBC_NAMESPACE::fmabf16(x, y, z), 0.5);
       }
+      mpfr::TernaryInput<bfloat16> input{x, y, -x * y};
+      EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
+                                     LIBC_NAMESPACE::fmabf16(x, y, -x * y),
+                                     0.5);
     }
-  
+  }
 }
 
 TEST_F(LlvmLibcFmaBf16Test, SubnormalNegativeRange) {
-  const bfloat16 z_values[] = {zero, neg_zero, FPBits(0x3f80U).get_val(), FPBits(0xbf80U).get_val(), inf, neg_inf, min_normal, max_normal};
+  const bfloat16 z_values[] = {zero,
+                               neg_zero,
+                               FPBits(0x3f80U).get_val(),
+                               FPBits(0xbf80U).get_val(),
+                               inf,
+                               neg_inf,
+                               min_normal,
+                               max_normal};
   for (uint16_t v1 = SUBNORM_NEG_START; v1 <= SUBNORM_NEG_STOP; v1++) {
-      for (uint16_t v2 = SUBNORM_NEG_START; v2 <= SUBNORM_NEG_STOP; v2++) {
+    for (uint16_t v2 = SUBNORM_NEG_START; v2 <= SUBNORM_NEG_STOP; v2++) {
 
-        bfloat16 x = FPBits(v1).get_val();
-        bfloat16 y = FPBits(v2).get_val();
-        for (bfloat16 z : z_values) {  
-          mpfr::TernaryInput<bfloat16> input{x, y, z};
+      bfloat16 x = FPBits(v1).get_val();
+      bfloat16 y = FPBits(v2).get_val();
+      for (bfloat16 z : z_values) {
+        mpfr::TernaryInput<bfloat16> input{x, y, z};
 
-          EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
-                                         LIBC_NAMESPACE::fmabf16(x, y, z), 0.5);
-        }
-        mpfr::TernaryInput<bfloat16> input{x, y, -x*y};
         EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
-                                         LIBC_NAMESPACE::fmabf16(x, y,- x*y), 0.5);
+                                       LIBC_NAMESPACE::fmabf16(x, y, z), 0.5);
       }
+      mpfr::TernaryInput<bfloat16> input{x, y, -x * y};
+      EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
+                                     LIBC_NAMESPACE::fmabf16(x, y, -x * y),
+                                     0.5);
     }
-  
+  }
 }
 
 TEST_F(LlvmLibcFmaBf16Test, SpecialNumbers) {
-  const bfloat16 z_values[] = {zero, neg_zero, FPBits(0x3f80U).get_val(), FPBits(0xbf80U).get_val(), inf, neg_inf, min_normal, max_normal};
-  const bfloat16 x_values[] = {zero, neg_zero, FPBits(0x3f80U).get_val(), FPBits(0xbf80U).get_val(), inf, neg_inf, min_normal, max_normal};
-  const bfloat16 y_values[] = {zero, neg_zero, FPBits(0x3f80U).get_val(), FPBits(0xbf80U).get_val(), inf, neg_inf, min_normal, max_normal};
+  const bfloat16 z_values[] = {zero,
+                               neg_zero,
+                               FPBits(0x3f80U).get_val(),
+                               FPBits(0xbf80U).get_val(),
+                               inf,
+                               neg_inf,
+                               min_normal,
+                               max_normal};
+  const bfloat16 x_values[] = {zero,
+                               neg_zero,
+                               FPBits(0x3f80U).get_val(),
+                               FPBits(0xbf80U).get_val(),
+                               inf,
+                               neg_inf,
+                               min_normal,
+                               max_normal};
+  const bfloat16 y_values[] = {zero,
+                               neg_zero,
+                               FPBits(0x3f80U).get_val(),
+                               FPBits(0xbf80U).get_val(),
+                               inf,
+                               neg_inf,
+                               min_normal,
+                               max_normal};
 
   for (bfloat16 x : x_values) {
-      for (bfloat16 y : y_values) {
-        for (bfloat16 z : z_values) {  
-          mpfr::TernaryInput<bfloat16> input{x, y, z};
-
-          EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
-                                         LIBC_NAMESPACE::fmabf16(x, y, z), 0.5);
-        }
-        mpfr::TernaryInput<bfloat16> input{x, y, -x*y};
+    for (bfloat16 y : y_values) {
+      for (bfloat16 z : z_values) {
+        mpfr::TernaryInput<bfloat16> input{x, y, z};
+
         EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
-                                         LIBC_NAMESPACE::fmabf16(x, y,- x*y), 0.5);
+                                       LIBC_NAMESPACE::fmabf16(x, y, z), 0.5);
       }
+      mpfr::TernaryInput<bfloat16> input{x, y, -x * y};
+      EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
+                                     LIBC_NAMESPACE::fmabf16(x, y, -x * y),
+                                     0.5);
     }
-  
+  }
 }

>From 9faf46db93a97429c323b19d28073c9e51ac900f Mon Sep 17 00:00:00 2001
From: Sukumarsawant <sawantsukumar at gmail.com>
Date: Mon, 23 Feb 2026 13:35:59 +0530
Subject: [PATCH 26/43] uint32_t error fixed ( declar at top or static cast )

---
 libc/test/src/math/fmabf16_test.cpp | 33 +++++++++++++++--------------
 1 file changed, 17 insertions(+), 16 deletions(-)

diff --git a/libc/test/src/math/fmabf16_test.cpp b/libc/test/src/math/fmabf16_test.cpp
index f06670eb0f10b..3c6fe802bf447 100644
--- a/libc/test/src/math/fmabf16_test.cpp
+++ b/libc/test/src/math/fmabf16_test.cpp
@@ -32,14 +32,15 @@ static constexpr uint16_t SUBNORM_POS_STOP = 0x007FU;
 static constexpr uint16_t SUBNORM_NEG_START = 0x8001U;
 static constexpr uint16_t SUBNORM_NEG_STOP = 0x807FU;
 
+
 static constexpr uint16_t STEP = 256;
 
 TEST_F(LlvmLibcFmaBf16Test, PositiveRange) {
 
   const bfloat16 z_values[] = {zero,
                                neg_zero,
-                               FPBits(0x3f80U).get_val(),
-                               FPBits(0xbf80U).get_val(),
+                               FPBits(static_cast<uint16_t>(0x3f80U)).get_val(),
+                               FPBits(static_cast<uint16_t>(0xbf80U)).get_val(),
                                inf,
                                neg_inf,
                                min_normal,
@@ -67,8 +68,8 @@ TEST_F(LlvmLibcFmaBf16Test, PositiveRange) {
 TEST_F(LlvmLibcFmaBf16Test, NegativeRange) {
   const bfloat16 z_values[] = {zero,
                                neg_zero,
-                               FPBits(0x3f80U).get_val(),
-                               FPBits(0xbf80U).get_val(),
+                               FPBits(static_cast<uint16_t>(0x3f80U)).get_val(),
+                               FPBits(static_cast<uint16_t>(0xbf80U)).get_val(),
                                inf,
                                neg_inf,
                                min_normal,
@@ -94,8 +95,8 @@ TEST_F(LlvmLibcFmaBf16Test, NegativeRange) {
 TEST_F(LlvmLibcFmaBf16Test, OppositeSignRange) {
   const bfloat16 z_values[] = {zero,
                                neg_zero,
-                               FPBits(0x3f80U).get_val(),
-                               FPBits(0xbf80U).get_val(),
+                               FPBits(static_cast<uint16_t>(0x3f80U)).get_val(),
+                               FPBits(static_cast<uint16_t>(0xbf80U)).get_val(),
                                inf,
                                neg_inf,
                                min_normal,
@@ -122,8 +123,8 @@ TEST_F(LlvmLibcFmaBf16Test, OppositeSignRange) {
 TEST_F(LlvmLibcFmaBf16Test, SubnormalPositiveRange) {
   const bfloat16 z_values[] = {zero,
                                neg_zero,
-                               FPBits(0x3f80U).get_val(),
-                               FPBits(0xbf80U).get_val(),
+                               FPBits(static_cast<uint16_t>(0x3f80U)).get_val(),
+                               FPBits(static_cast<uint16_t>(0xbf80U)).get_val(),
                                inf,
                                neg_inf,
                                min_normal,
@@ -150,8 +151,8 @@ TEST_F(LlvmLibcFmaBf16Test, SubnormalPositiveRange) {
 TEST_F(LlvmLibcFmaBf16Test, SubnormalNegativeRange) {
   const bfloat16 z_values[] = {zero,
                                neg_zero,
-                               FPBits(0x3f80U).get_val(),
-                               FPBits(0xbf80U).get_val(),
+                               FPBits(static_cast<uint16_t>(0x3f80U)).get_val(),
+                               FPBits(static_cast<uint16_t>(0xbf80U)).get_val(),
                                inf,
                                neg_inf,
                                min_normal,
@@ -178,24 +179,24 @@ TEST_F(LlvmLibcFmaBf16Test, SubnormalNegativeRange) {
 TEST_F(LlvmLibcFmaBf16Test, SpecialNumbers) {
   const bfloat16 z_values[] = {zero,
                                neg_zero,
-                               FPBits(0x3f80U).get_val(),
-                               FPBits(0xbf80U).get_val(),
+                               FPBits(static_cast<uint16_t>(0x3f80U)).get_val(),
+                               FPBits(static_cast<uint16_t>(0xbf80U)).get_val(),
                                inf,
                                neg_inf,
                                min_normal,
                                max_normal};
   const bfloat16 x_values[] = {zero,
                                neg_zero,
-                               FPBits(0x3f80U).get_val(),
-                               FPBits(0xbf80U).get_val(),
+                               FPBits(static_cast<uint16_t>(0x3f80U)).get_val(),
+                               FPBits(static_cast<uint16_t>(0xbf80U)).get_val(),
                                inf,
                                neg_inf,
                                min_normal,
                                max_normal};
   const bfloat16 y_values[] = {zero,
                                neg_zero,
-                               FPBits(0x3f80U).get_val(),
-                               FPBits(0xbf80U).get_val(),
+                               FPBits(static_cast<uint16_t>(0x3f80U)).get_val(),
+                               FPBits(static_cast<uint16_t>(0xbf80U)).get_val(),
                                inf,
                                neg_inf,
                                min_normal,

>From c722295d51968df1f56c9a2be446221745532ad2 Mon Sep 17 00:00:00 2001
From: Sukumarsawant <sawantsukumar at gmail.com>
Date: Mon, 23 Feb 2026 13:48:25 +0530
Subject: [PATCH 27/43] testin without Normal range

---
 libc/test/src/math/fmabf16_test.cpp | 172 ++++++++++++++--------------
 1 file changed, 86 insertions(+), 86 deletions(-)

diff --git a/libc/test/src/math/fmabf16_test.cpp b/libc/test/src/math/fmabf16_test.cpp
index 3c6fe802bf447..bfbae70935edc 100644
--- a/libc/test/src/math/fmabf16_test.cpp
+++ b/libc/test/src/math/fmabf16_test.cpp
@@ -33,92 +33,92 @@ static constexpr uint16_t SUBNORM_NEG_START = 0x8001U;
 static constexpr uint16_t SUBNORM_NEG_STOP = 0x807FU;
 
 
-static constexpr uint16_t STEP = 256;
-
-TEST_F(LlvmLibcFmaBf16Test, PositiveRange) {
-
-  const bfloat16 z_values[] = {zero,
-                               neg_zero,
-                               FPBits(static_cast<uint16_t>(0x3f80U)).get_val(),
-                               FPBits(static_cast<uint16_t>(0xbf80U)).get_val(),
-                               inf,
-                               neg_inf,
-                               min_normal,
-                               max_normal};
-  for (uint16_t v1 = POS_START; v1 <= POS_STOP; v1 += STEP) {
-    for (uint16_t v2 = POS_START; v2 <= POS_STOP; v2 += STEP) {
-
-      bfloat16 x = FPBits(v1).get_val();
-      bfloat16 y = FPBits(v2).get_val();
-
-      for (bfloat16 z : z_values) {
-        mpfr::TernaryInput<bfloat16> input{x, y, z};
-
-        EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
-                                       LIBC_NAMESPACE::fmabf16(x, y, z), 0.5);
-      }
-      mpfr::TernaryInput<bfloat16> input{x, y, -x * y};
-      EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
-                                     LIBC_NAMESPACE::fmabf16(x, y, -x * y),
-                                     0.5);
-    }
-  }
-}
-
-TEST_F(LlvmLibcFmaBf16Test, NegativeRange) {
-  const bfloat16 z_values[] = {zero,
-                               neg_zero,
-                               FPBits(static_cast<uint16_t>(0x3f80U)).get_val(),
-                               FPBits(static_cast<uint16_t>(0xbf80U)).get_val(),
-                               inf,
-                               neg_inf,
-                               min_normal,
-                               max_normal};
-  for (uint16_t v1 = NEG_START; v1 <= NEG_STOP; v1 += STEP) {
-    for (uint16_t v2 = NEG_START; v2 <= NEG_STOP; v2 += STEP) {
-
-      bfloat16 x = FPBits(v1).get_val();
-      bfloat16 y = FPBits(v2).get_val();
-      for (bfloat16 z : z_values) {
-        mpfr::TernaryInput<bfloat16> input{x, y, z};
-
-        EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
-                                       LIBC_NAMESPACE::fmabf16(x, y, z), 0.5);
-      }
-      mpfr::TernaryInput<bfloat16> input{x, y, -x * y};
-      EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
-                                     LIBC_NAMESPACE::fmabf16(x, y, -x * y),
-                                     0.5);
-    }
-  }
-}
-TEST_F(LlvmLibcFmaBf16Test, OppositeSignRange) {
-  const bfloat16 z_values[] = {zero,
-                               neg_zero,
-                               FPBits(static_cast<uint16_t>(0x3f80U)).get_val(),
-                               FPBits(static_cast<uint16_t>(0xbf80U)).get_val(),
-                               inf,
-                               neg_inf,
-                               min_normal,
-                               max_normal};
-  for (uint16_t v1 = POS_START; v1 <= POS_STOP; v1 += STEP) {
-    for (uint16_t v2 = NEG_START; v2 <= NEG_STOP; v2 += STEP) {
-
-      bfloat16 x = FPBits(v1).get_val();
-      bfloat16 y = FPBits(v2).get_val();
-      for (bfloat16 z : z_values) {
-        mpfr::TernaryInput<bfloat16> input{x, y, z};
-
-        EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
-                                       LIBC_NAMESPACE::fmabf16(x, y, z), 0.5);
-      }
-      mpfr::TernaryInput<bfloat16> input{x, y, -x * y};
-      EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
-                                     LIBC_NAMESPACE::fmabf16(x, y, -x * y),
-                                     0.5);
-    }
-  }
-}
+static constexpr uint16_t STEP = 512;
+
+// TEST_F(LlvmLibcFmaBf16Test, PositiveRange) {
+
+//   const bfloat16 z_values[] = {zero,
+//                                neg_zero,
+//                                FPBits(static_cast<uint16_t>(0x3f80U)).get_val(),
+//                                FPBits(static_cast<uint16_t>(0xbf80U)).get_val(),
+//                                inf,
+//                                neg_inf,
+//                                min_normal,
+//                                max_normal};
+//   for (uint16_t v1 = POS_START; v1 <= POS_STOP; v1 += STEP) {
+//     for (uint16_t v2 = POS_START; v2 <= POS_STOP; v2 += STEP) {
+
+//       bfloat16 x = FPBits(v1).get_val();
+//       bfloat16 y = FPBits(v2).get_val();
+
+//       for (bfloat16 z : z_values) {
+//         mpfr::TernaryInput<bfloat16> input{x, y, z};
+
+//         EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
+//                                        LIBC_NAMESPACE::fmabf16(x, y, z), 0.5);
+//       }
+//       mpfr::TernaryInput<bfloat16> input{x, y, -x * y};
+//       EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
+//                                      LIBC_NAMESPACE::fmabf16(x, y, -x * y),
+//                                      0.5);
+//     }
+//   }
+// }
+
+// TEST_F(LlvmLibcFmaBf16Test, NegativeRange) {
+//   const bfloat16 z_values[] = {zero,
+//                                neg_zero,
+//                                FPBits(static_cast<uint16_t>(0x3f80U)).get_val(),
+//                                FPBits(static_cast<uint16_t>(0xbf80U)).get_val(),
+//                                inf,
+//                                neg_inf,
+//                                min_normal,
+//                                max_normal};
+//   for (uint16_t v1 = NEG_START; v1 <= NEG_STOP; v1 += STEP) {
+//     for (uint16_t v2 = NEG_START; v2 <= NEG_STOP; v2 += STEP) {
+
+//       bfloat16 x = FPBits(v1).get_val();
+//       bfloat16 y = FPBits(v2).get_val();
+//       for (bfloat16 z : z_values) {
+//         mpfr::TernaryInput<bfloat16> input{x, y, z};
+
+//         EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
+//                                        LIBC_NAMESPACE::fmabf16(x, y, z), 0.5);
+//       }
+//       mpfr::TernaryInput<bfloat16> input{x, y, -x * y};
+//       EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
+//                                      LIBC_NAMESPACE::fmabf16(x, y, -x * y),
+//                                      0.5);
+//     }
+//   }
+// }
+// TEST_F(LlvmLibcFmaBf16Test, OppositeSignRange) {
+//   const bfloat16 z_values[] = {zero,
+//                                neg_zero,
+//                                FPBits(static_cast<uint16_t>(0x3f80U)).get_val(),
+//                                FPBits(static_cast<uint16_t>(0xbf80U)).get_val(),
+//                                inf,
+//                                neg_inf,
+//                                min_normal,
+//                                max_normal};
+//   for (uint16_t v1 = POS_START; v1 <= POS_STOP; v1 += STEP) {
+//     for (uint16_t v2 = NEG_START; v2 <= NEG_STOP; v2 += STEP) {
+
+//       bfloat16 x = FPBits(v1).get_val();
+//       bfloat16 y = FPBits(v2).get_val();
+//       for (bfloat16 z : z_values) {
+//         mpfr::TernaryInput<bfloat16> input{x, y, z};
+
+//         EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
+//                                        LIBC_NAMESPACE::fmabf16(x, y, z), 0.5);
+//       }
+//       mpfr::TernaryInput<bfloat16> input{x, y, -x * y};
+//       EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
+//                                      LIBC_NAMESPACE::fmabf16(x, y, -x * y),
+//                                      0.5);
+//     }
+//   }
+// }
 
 TEST_F(LlvmLibcFmaBf16Test, SubnormalPositiveRange) {
   const bfloat16 z_values[] = {zero,

>From cc29d069998caa8b9d97a9f900aae1b9dfe7edcd Mon Sep 17 00:00:00 2001
From: Sukumarsawant <sawantsukumar at gmail.com>
Date: Mon, 23 Feb 2026 14:01:48 +0530
Subject: [PATCH 28/43] test

---
 libc/test/src/math/fmabf16_test.cpp | 88 -----------------------------
 1 file changed, 88 deletions(-)

diff --git a/libc/test/src/math/fmabf16_test.cpp b/libc/test/src/math/fmabf16_test.cpp
index bfbae70935edc..974a905bc1b22 100644
--- a/libc/test/src/math/fmabf16_test.cpp
+++ b/libc/test/src/math/fmabf16_test.cpp
@@ -32,94 +32,6 @@ static constexpr uint16_t SUBNORM_POS_STOP = 0x007FU;
 static constexpr uint16_t SUBNORM_NEG_START = 0x8001U;
 static constexpr uint16_t SUBNORM_NEG_STOP = 0x807FU;
 
-
-static constexpr uint16_t STEP = 512;
-
-// TEST_F(LlvmLibcFmaBf16Test, PositiveRange) {
-
-//   const bfloat16 z_values[] = {zero,
-//                                neg_zero,
-//                                FPBits(static_cast<uint16_t>(0x3f80U)).get_val(),
-//                                FPBits(static_cast<uint16_t>(0xbf80U)).get_val(),
-//                                inf,
-//                                neg_inf,
-//                                min_normal,
-//                                max_normal};
-//   for (uint16_t v1 = POS_START; v1 <= POS_STOP; v1 += STEP) {
-//     for (uint16_t v2 = POS_START; v2 <= POS_STOP; v2 += STEP) {
-
-//       bfloat16 x = FPBits(v1).get_val();
-//       bfloat16 y = FPBits(v2).get_val();
-
-//       for (bfloat16 z : z_values) {
-//         mpfr::TernaryInput<bfloat16> input{x, y, z};
-
-//         EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
-//                                        LIBC_NAMESPACE::fmabf16(x, y, z), 0.5);
-//       }
-//       mpfr::TernaryInput<bfloat16> input{x, y, -x * y};
-//       EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
-//                                      LIBC_NAMESPACE::fmabf16(x, y, -x * y),
-//                                      0.5);
-//     }
-//   }
-// }
-
-// TEST_F(LlvmLibcFmaBf16Test, NegativeRange) {
-//   const bfloat16 z_values[] = {zero,
-//                                neg_zero,
-//                                FPBits(static_cast<uint16_t>(0x3f80U)).get_val(),
-//                                FPBits(static_cast<uint16_t>(0xbf80U)).get_val(),
-//                                inf,
-//                                neg_inf,
-//                                min_normal,
-//                                max_normal};
-//   for (uint16_t v1 = NEG_START; v1 <= NEG_STOP; v1 += STEP) {
-//     for (uint16_t v2 = NEG_START; v2 <= NEG_STOP; v2 += STEP) {
-
-//       bfloat16 x = FPBits(v1).get_val();
-//       bfloat16 y = FPBits(v2).get_val();
-//       for (bfloat16 z : z_values) {
-//         mpfr::TernaryInput<bfloat16> input{x, y, z};
-
-//         EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
-//                                        LIBC_NAMESPACE::fmabf16(x, y, z), 0.5);
-//       }
-//       mpfr::TernaryInput<bfloat16> input{x, y, -x * y};
-//       EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
-//                                      LIBC_NAMESPACE::fmabf16(x, y, -x * y),
-//                                      0.5);
-//     }
-//   }
-// }
-// TEST_F(LlvmLibcFmaBf16Test, OppositeSignRange) {
-//   const bfloat16 z_values[] = {zero,
-//                                neg_zero,
-//                                FPBits(static_cast<uint16_t>(0x3f80U)).get_val(),
-//                                FPBits(static_cast<uint16_t>(0xbf80U)).get_val(),
-//                                inf,
-//                                neg_inf,
-//                                min_normal,
-//                                max_normal};
-//   for (uint16_t v1 = POS_START; v1 <= POS_STOP; v1 += STEP) {
-//     for (uint16_t v2 = NEG_START; v2 <= NEG_STOP; v2 += STEP) {
-
-//       bfloat16 x = FPBits(v1).get_val();
-//       bfloat16 y = FPBits(v2).get_val();
-//       for (bfloat16 z : z_values) {
-//         mpfr::TernaryInput<bfloat16> input{x, y, z};
-
-//         EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
-//                                        LIBC_NAMESPACE::fmabf16(x, y, z), 0.5);
-//       }
-//       mpfr::TernaryInput<bfloat16> input{x, y, -x * y};
-//       EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
-//                                      LIBC_NAMESPACE::fmabf16(x, y, -x * y),
-//                                      0.5);
-//     }
-//   }
-// }
-
 TEST_F(LlvmLibcFmaBf16Test, SubnormalPositiveRange) {
   const bfloat16 z_values[] = {zero,
                                neg_zero,

>From b7e6619c3acc04937bda589750e3e0054a17e409 Mon Sep 17 00:00:00 2001
From: Sukumarsawant <sawantsukumar at gmail.com>
Date: Mon, 23 Feb 2026 14:08:55 +0530
Subject: [PATCH 29/43] only for limited exhaust

---
 libc/test/src/math/fmabf16_test.cpp | 61 -----------------------------
 1 file changed, 61 deletions(-)

diff --git a/libc/test/src/math/fmabf16_test.cpp b/libc/test/src/math/fmabf16_test.cpp
index 974a905bc1b22..df49e7bbaf9de 100644
--- a/libc/test/src/math/fmabf16_test.cpp
+++ b/libc/test/src/math/fmabf16_test.cpp
@@ -32,83 +32,22 @@ static constexpr uint16_t SUBNORM_POS_STOP = 0x007FU;
 static constexpr uint16_t SUBNORM_NEG_START = 0x8001U;
 static constexpr uint16_t SUBNORM_NEG_STOP = 0x807FU;
 
-TEST_F(LlvmLibcFmaBf16Test, SubnormalPositiveRange) {
-  const bfloat16 z_values[] = {zero,
-                               neg_zero,
-                               FPBits(static_cast<uint16_t>(0x3f80U)).get_val(),
-                               FPBits(static_cast<uint16_t>(0xbf80U)).get_val(),
-                               inf,
-                               neg_inf,
-                               min_normal,
-                               max_normal};
-  for (uint16_t v1 = SUBNORM_POS_START; v1 <= SUBNORM_POS_STOP; v1++) {
-    for (uint16_t v2 = SUBNORM_POS_START; v2 <= SUBNORM_POS_STOP; v2++) {
-
-      bfloat16 x = FPBits(v1).get_val();
-      bfloat16 y = FPBits(v2).get_val();
-      for (bfloat16 z : z_values) {
-        mpfr::TernaryInput<bfloat16> input{x, y, z};
-
-        EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
-                                       LIBC_NAMESPACE::fmabf16(x, y, z), 0.5);
-      }
-      mpfr::TernaryInput<bfloat16> input{x, y, -x * y};
-      EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
-                                     LIBC_NAMESPACE::fmabf16(x, y, -x * y),
-                                     0.5);
-    }
-  }
-}
-
-TEST_F(LlvmLibcFmaBf16Test, SubnormalNegativeRange) {
-  const bfloat16 z_values[] = {zero,
-                               neg_zero,
-                               FPBits(static_cast<uint16_t>(0x3f80U)).get_val(),
-                               FPBits(static_cast<uint16_t>(0xbf80U)).get_val(),
-                               inf,
-                               neg_inf,
-                               min_normal,
-                               max_normal};
-  for (uint16_t v1 = SUBNORM_NEG_START; v1 <= SUBNORM_NEG_STOP; v1++) {
-    for (uint16_t v2 = SUBNORM_NEG_START; v2 <= SUBNORM_NEG_STOP; v2++) {
-
-      bfloat16 x = FPBits(v1).get_val();
-      bfloat16 y = FPBits(v2).get_val();
-      for (bfloat16 z : z_values) {
-        mpfr::TernaryInput<bfloat16> input{x, y, z};
-
-        EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
-                                       LIBC_NAMESPACE::fmabf16(x, y, z), 0.5);
-      }
-      mpfr::TernaryInput<bfloat16> input{x, y, -x * y};
-      EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
-                                     LIBC_NAMESPACE::fmabf16(x, y, -x * y),
-                                     0.5);
-    }
-  }
-}
 
 TEST_F(LlvmLibcFmaBf16Test, SpecialNumbers) {
   const bfloat16 z_values[] = {zero,
                                neg_zero,
-                               FPBits(static_cast<uint16_t>(0x3f80U)).get_val(),
-                               FPBits(static_cast<uint16_t>(0xbf80U)).get_val(),
                                inf,
                                neg_inf,
                                min_normal,
                                max_normal};
   const bfloat16 x_values[] = {zero,
                                neg_zero,
-                               FPBits(static_cast<uint16_t>(0x3f80U)).get_val(),
-                               FPBits(static_cast<uint16_t>(0xbf80U)).get_val(),
                                inf,
                                neg_inf,
                                min_normal,
                                max_normal};
   const bfloat16 y_values[] = {zero,
                                neg_zero,
-                               FPBits(static_cast<uint16_t>(0x3f80U)).get_val(),
-                               FPBits(static_cast<uint16_t>(0xbf80U)).get_val(),
                                inf,
                                neg_inf,
                                min_normal,

>From 6364d5e37c1e945232cebadcc8b1494be27a3afc Mon Sep 17 00:00:00 2001
From: Sukumarsawant <sawantsukumar at gmail.com>
Date: Mon, 23 Feb 2026 14:23:30 +0530
Subject: [PATCH 30/43] test

---
 libc/test/src/math/fmabf16_test.cpp | 25 +++----------------------
 1 file changed, 3 insertions(+), 22 deletions(-)

diff --git a/libc/test/src/math/fmabf16_test.cpp b/libc/test/src/math/fmabf16_test.cpp
index df49e7bbaf9de..76e62c80f88ba 100644
--- a/libc/test/src/math/fmabf16_test.cpp
+++ b/libc/test/src/math/fmabf16_test.cpp
@@ -34,24 +34,9 @@ static constexpr uint16_t SUBNORM_NEG_STOP = 0x807FU;
 
 
 TEST_F(LlvmLibcFmaBf16Test, SpecialNumbers) {
-  const bfloat16 z_values[] = {zero,
-                               neg_zero,
-                               inf,
-                               neg_inf,
-                               min_normal,
-                               max_normal};
-  const bfloat16 x_values[] = {zero,
-                               neg_zero,
-                               inf,
-                               neg_inf,
-                               min_normal,
-                               max_normal};
-  const bfloat16 y_values[] = {zero,
-                               neg_zero,
-                               inf,
-                               neg_inf,
-                               min_normal,
-                               max_normal};
+  const bfloat16 z_values[] = {zero, neg_zero, min_normal};
+  const bfloat16 x_values[] = {zero, neg_zero, min_normal};
+  const bfloat16 y_values[] = {zero, neg_zero, min_normal};
 
   for (bfloat16 x : x_values) {
     for (bfloat16 y : y_values) {
@@ -61,10 +46,6 @@ TEST_F(LlvmLibcFmaBf16Test, SpecialNumbers) {
         EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
                                        LIBC_NAMESPACE::fmabf16(x, y, z), 0.5);
       }
-      mpfr::TernaryInput<bfloat16> input{x, y, -x * y};
-      EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
-                                     LIBC_NAMESPACE::fmabf16(x, y, -x * y),
-                                     0.5);
     }
   }
 }

>From 4180589291211259e243a94253f3cb53f8fb686d Mon Sep 17 00:00:00 2001
From: Sukumarsawant <sawantsukumar at gmail.com>
Date: Mon, 23 Feb 2026 14:43:21 +0530
Subject: [PATCH 31/43] testing for max/min normal + special

---
 libc/test/src/math/fmabf16_test.cpp | 25 ++++++++++++++++++++++---
 1 file changed, 22 insertions(+), 3 deletions(-)

diff --git a/libc/test/src/math/fmabf16_test.cpp b/libc/test/src/math/fmabf16_test.cpp
index 76e62c80f88ba..df49e7bbaf9de 100644
--- a/libc/test/src/math/fmabf16_test.cpp
+++ b/libc/test/src/math/fmabf16_test.cpp
@@ -34,9 +34,24 @@ static constexpr uint16_t SUBNORM_NEG_STOP = 0x807FU;
 
 
 TEST_F(LlvmLibcFmaBf16Test, SpecialNumbers) {
-  const bfloat16 z_values[] = {zero, neg_zero, min_normal};
-  const bfloat16 x_values[] = {zero, neg_zero, min_normal};
-  const bfloat16 y_values[] = {zero, neg_zero, min_normal};
+  const bfloat16 z_values[] = {zero,
+                               neg_zero,
+                               inf,
+                               neg_inf,
+                               min_normal,
+                               max_normal};
+  const bfloat16 x_values[] = {zero,
+                               neg_zero,
+                               inf,
+                               neg_inf,
+                               min_normal,
+                               max_normal};
+  const bfloat16 y_values[] = {zero,
+                               neg_zero,
+                               inf,
+                               neg_inf,
+                               min_normal,
+                               max_normal};
 
   for (bfloat16 x : x_values) {
     for (bfloat16 y : y_values) {
@@ -46,6 +61,10 @@ TEST_F(LlvmLibcFmaBf16Test, SpecialNumbers) {
         EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
                                        LIBC_NAMESPACE::fmabf16(x, y, z), 0.5);
       }
+      mpfr::TernaryInput<bfloat16> input{x, y, -x * y};
+      EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
+                                     LIBC_NAMESPACE::fmabf16(x, y, -x * y),
+                                     0.5);
     }
   }
 }

>From f9040d730ef563dbbb0dff7ce34e1e5b9922534a Mon Sep 17 00:00:00 2001
From: Sukumarsawant <sawantsukumar at gmail.com>
Date: Mon, 23 Feb 2026 15:51:57 +0530
Subject: [PATCH 32/43] checking if adding condn for that specific test helps

---
 libc/src/__support/FPUtil/generic/FMA.h | 581 ++++++++++++------------
 libc/test/src/math/fmabf16_test.cpp     |   5 +-
 2 files changed, 296 insertions(+), 290 deletions(-)

diff --git a/libc/src/__support/FPUtil/generic/FMA.h b/libc/src/__support/FPUtil/generic/FMA.h
index bec312e44b1b1..2db280af94aaf 100644
--- a/libc/src/__support/FPUtil/generic/FMA.h
+++ b/libc/src/__support/FPUtil/generic/FMA.h
@@ -1,288 +1,293 @@
-//===-- Common header for FMA implementations -------------------*- C++ -*-===//
-//
-// 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
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef LLVM_LIBC_SRC___SUPPORT_FPUTIL_GENERIC_FMA_H
-#define LLVM_LIBC_SRC___SUPPORT_FPUTIL_GENERIC_FMA_H
-
-#include "src/__support/CPP/bit.h"
-#include "src/__support/CPP/limits.h"
-#include "src/__support/CPP/type_traits.h"
-#include "src/__support/FPUtil/BasicOperations.h"
-#include "src/__support/FPUtil/FPBits.h"
-#include "src/__support/FPUtil/cast.h"
-#include "src/__support/FPUtil/dyadic_float.h"
-#include "src/__support/FPUtil/rounding_mode.h"
-#include "src/__support/big_int.h"
-#include "src/__support/macros/attributes.h"   // LIBC_INLINE
-#include "src/__support/macros/config.h"
-#include "src/__support/macros/optimization.h" // LIBC_UNLIKELY
-
-#include "hdr/fenv_macros.h"
-
-namespace LIBC_NAMESPACE_DECL {
-namespace fputil {
-namespace generic {
-
-template <typename OutType, typename InType>
-LIBC_INLINE cpp::enable_if_t<cpp::is_floating_point_v<OutType> &&
-                                 cpp::is_floating_point_v<InType> &&
-                                 sizeof(OutType) <= sizeof(InType),
-                             OutType>
-fma(InType x, InType y, InType z);
-
-// TODO(lntue): Implement fmaf that is correctly rounded to all rounding modes.
-// The implementation below only is only correct for the default rounding mode,
-// round-to-nearest tie-to-even.
-template <> LIBC_INLINE float fma<float>(float x, float y, float z) {
-  // Product is exact.
-  double prod = static_cast<double>(x) * static_cast<double>(y);
-  double z_d = static_cast<double>(z);
-  double sum = prod + z_d;
-  fputil::FPBits<double> bit_prod(prod), bitz(z_d), bit_sum(sum);
-
-  if (!(bit_sum.is_inf_or_nan() || bit_sum.is_zero())) {
-    // Since the sum is computed in double precision, rounding might happen
-    // (for instance, when bitz.exponent > bit_prod.exponent + 5, or
-    // bit_prod.exponent > bitz.exponent + 40).  In that case, when we round
-    // the sum back to float, double rounding error might occur.
-    // A concrete example of this phenomenon is as follows:
-    //   x = y = 1 + 2^(-12), z = 2^(-53)
-    // The exact value of x*y + z is 1 + 2^(-11) + 2^(-24) + 2^(-53)
-    // So when rounding to float, fmaf(x, y, z) = 1 + 2^(-11) + 2^(-23)
-    // On the other hand, with the default rounding mode,
-    //   double(x*y + z) = 1 + 2^(-11) + 2^(-24)
-    // and casting again to float gives us:
-    //   float(double(x*y + z)) = 1 + 2^(-11).
-    //
-    // In order to correct this possible double rounding error, first we use
-    // Dekker's 2Sum algorithm to find t such that sum - t = prod + z exactly,
-    // assuming the (default) rounding mode is round-to-the-nearest,
-    // tie-to-even.  Moreover, t satisfies the condition that t < eps(sum),
-    // i.e., t.exponent < sum.exponent - 52. So if t is not 0, meaning rounding
-    // occurs when computing the sum, we just need to use t to adjust (any) last
-    // bit of sum, so that the sticky bits used when rounding sum to float are
-    // correct (when it matters).
-    fputil::FPBits<double> t(
-        (bit_prod.get_biased_exponent() >= bitz.get_biased_exponent())
-            ? ((bit_sum.get_val() - bit_prod.get_val()) - bitz.get_val())
-            : ((bit_sum.get_val() - bitz.get_val()) - bit_prod.get_val()));
-
-    // Update sticky bits if t != 0.0 and the least (52 - 23 - 1 = 28) bits are
-    // zero.
-    if (!t.is_zero() && ((bit_sum.get_mantissa() & 0xfff'ffffULL) == 0)) {
-      if (bit_sum.sign() != t.sign())
-        bit_sum.set_mantissa(bit_sum.get_mantissa() + 1);
-      else if (bit_sum.get_mantissa())
-        bit_sum.set_mantissa(bit_sum.get_mantissa() - 1);
-    }
-  }
-
-  return static_cast<float>(bit_sum.get_val());
-}
-
-namespace internal {
-
-// Extract the sticky bits and shift the `mantissa` to the right by
-// `shift_length`.
-template <typename T>
-LIBC_INLINE cpp::enable_if_t<is_unsigned_integral_or_big_int_v<T>, bool>
-shift_mantissa(int shift_length, T &mant) {
-  if (shift_length >= cpp::numeric_limits<T>::digits) {
-    mant = 0;
-    return true; // prod_mant is non-zero.
-  }
-  T mask = (T(1) << shift_length) - 1;
-  bool sticky_bits = (mant & mask) != 0;
-  mant >>= shift_length;
-  return sticky_bits;
-}
-
-} // namespace internal
-
-template <typename OutType, typename InType>
-LIBC_INLINE cpp::enable_if_t<cpp::is_floating_point_v<OutType> &&
-                                 cpp::is_floating_point_v<InType> &&
-                                 sizeof(OutType) <= sizeof(InType),
-                             OutType>
-fma(InType x, InType y, InType z) {
-  using OutFPBits = FPBits<OutType>;
-  using OutStorageType = typename OutFPBits::StorageType;
-  using InFPBits = FPBits<InType>;
-  using InStorageType = typename InFPBits::StorageType;
-
-  constexpr int IN_EXPLICIT_MANT_LEN = InFPBits::FRACTION_LEN + 1;
-  constexpr size_t PROD_LEN = 2 * IN_EXPLICIT_MANT_LEN;
-  constexpr size_t TMP_RESULT_LEN = cpp::bit_ceil(PROD_LEN + 1);
-  using TmpResultType = UInt<TMP_RESULT_LEN>;
-  using DyadicFloat = DyadicFloat<TMP_RESULT_LEN>;
-
-  InFPBits x_bits(x), y_bits(y), z_bits(z);
-
-  if (LIBC_UNLIKELY(x_bits.is_nan() || y_bits.is_nan() || z_bits.is_nan())) {
-    if (x_bits.is_nan() || y_bits.is_nan()) {
-      if (x_bits.is_signaling_nan() || y_bits.is_signaling_nan() ||
-          z_bits.is_signaling_nan())
-        raise_except_if_required(FE_INVALID);
-
-      if (x_bits.is_quiet_nan()) {
-        InStorageType x_payload = x_bits.get_mantissa();
-        x_payload >>= InFPBits::FRACTION_LEN - OutFPBits::FRACTION_LEN;
-        return OutFPBits::quiet_nan(x_bits.sign(),
-                                    static_cast<OutStorageType>(x_payload))
-            .get_val();
-      }
-
-      if (y_bits.is_quiet_nan()) {
-        InStorageType y_payload = y_bits.get_mantissa();
-        y_payload >>= InFPBits::FRACTION_LEN - OutFPBits::FRACTION_LEN;
-        return OutFPBits::quiet_nan(y_bits.sign(),
-                                    static_cast<OutStorageType>(y_payload))
-            .get_val();
-      }
-
-      if (z_bits.is_quiet_nan()) {
-        InStorageType z_payload = z_bits.get_mantissa();
-        z_payload >>= InFPBits::FRACTION_LEN - OutFPBits::FRACTION_LEN;
-        return OutFPBits::quiet_nan(z_bits.sign(),
-                                    static_cast<OutStorageType>(z_payload))
-            .get_val();
-      }
-
-      return OutFPBits::quiet_nan().get_val();
-    }
-  }
-
-  if (LIBC_UNLIKELY(x == 0 || y == 0 || z == 0))
-    return cast<OutType>(x * y + z);
-
-  int x_exp = 0;
-  int y_exp = 0;
-  int z_exp = 0;
-
-  // Denormal scaling = 2^(fraction length).
-  constexpr InStorageType IMPLICIT_MASK =
-      InFPBits::SIG_MASK - InFPBits::FRACTION_MASK;
-
-  constexpr InType DENORMAL_SCALING =
-      InFPBits::create_value(
-          Sign::POS, InFPBits::FRACTION_LEN + InFPBits::EXP_BIAS, IMPLICIT_MASK)
-          .get_val();
-
-  // Normalize denormal inputs.
-  if (LIBC_UNLIKELY(InFPBits(x).is_subnormal())) {
-    x_exp -= InFPBits::FRACTION_LEN;
-    x *= DENORMAL_SCALING;
-  }
-  if (LIBC_UNLIKELY(InFPBits(y).is_subnormal())) {
-    y_exp -= InFPBits::FRACTION_LEN;
-    y *= DENORMAL_SCALING;
-  }
-  if (LIBC_UNLIKELY(InFPBits(z).is_subnormal())) {
-    z_exp -= InFPBits::FRACTION_LEN;
-    z *= DENORMAL_SCALING;
-  }
-
-  x_bits = InFPBits(x);
-  y_bits = InFPBits(y);
-  z_bits = InFPBits(z);
-  const Sign z_sign = z_bits.sign();
-  Sign prod_sign = (x_bits.sign() == y_bits.sign()) ? Sign::POS : Sign::NEG;
-  x_exp += x_bits.get_biased_exponent();
-  y_exp += y_bits.get_biased_exponent();
-  z_exp += z_bits.get_biased_exponent();
-
-  if (LIBC_UNLIKELY(x_exp == InFPBits::MAX_BIASED_EXPONENT ||
-                    y_exp == InFPBits::MAX_BIASED_EXPONENT ||
-                    z_exp == InFPBits::MAX_BIASED_EXPONENT))
-    return cast<OutType>(x * y + z);
-
-  // Extract mantissa and append hidden leading bits.
-  InStorageType x_mant = x_bits.get_explicit_mantissa();
-  InStorageType y_mant = y_bits.get_explicit_mantissa();
-  TmpResultType z_mant = z_bits.get_explicit_mantissa();
-
-  // If the exponent of the product x*y > the exponent of z, then no extra
-  // precision beside the entire product x*y is needed.  On the other hand, when
-  // the exponent of z >= the exponent of the product x*y, the worst-case that
-  // we need extra precision is when there is cancellation and the most
-  // significant bit of the product is aligned exactly with the second most
-  // significant bit of z:
-  //      z :    10aa...a
-  // - prod :     1bb...bb....b
-  // In that case, in order to store the exact result, we need at least
-  //     (Length of prod) - (Fraction length of z)
-  //   = 2*(Length of input explicit mantissa) - (Fraction length of z) bits.
-  // Overall, before aligning the mantissas and exponents, we can simply left-
-  // shift the mantissa of z by that amount.  After that, it is enough to align
-  // the least significant bit, given that we keep track of the round and sticky
-  // bits after the least significant bit.
-
-  TmpResultType prod_mant = TmpResultType(x_mant) * y_mant;
-  int prod_lsb_exp =
-      x_exp + y_exp - (InFPBits::EXP_BIAS + 2 * InFPBits::FRACTION_LEN);
-
-  constexpr int RESULT_MIN_LEN = PROD_LEN - InFPBits::FRACTION_LEN;
-  z_mant <<= RESULT_MIN_LEN;
-  int z_lsb_exp = z_exp - (InFPBits::FRACTION_LEN + RESULT_MIN_LEN);
-  bool sticky_bits = false;
-  bool z_shifted = false;
-
-  // Align exponents.
-  if (prod_lsb_exp < z_lsb_exp) {
-    sticky_bits = internal::shift_mantissa(z_lsb_exp - prod_lsb_exp, prod_mant);
-    prod_lsb_exp = z_lsb_exp;
-  } else if (z_lsb_exp < prod_lsb_exp) {
-    z_shifted = true;
-    sticky_bits = internal::shift_mantissa(prod_lsb_exp - z_lsb_exp, z_mant);
-  }
-
-  // Perform the addition:
-  //   (-1)^prod_sign * prod_mant + (-1)^z_sign * z_mant.
-  // The final result will be stored in prod_sign and prod_mant.
-  if (prod_sign == z_sign) {
-    // Effectively an addition.
-    prod_mant += z_mant;
-  } else {
-    // Subtraction cases.
-    if (prod_mant >= z_mant) {
-      if (z_shifted && sticky_bits) {
-        // Add 1 more to the subtrahend so that the sticky bits remain
-        // positive. This would simplify the rounding logic.
-        ++z_mant;
-      }
-      prod_mant -= z_mant;
-    } else {
-      if (!z_shifted && sticky_bits) {
-        // Add 1 more to the subtrahend so that the sticky bits remain
-        // positive. This would simplify the rounding logic.
-        ++prod_mant;
-      }
-      prod_mant = z_mant - prod_mant;
-      prod_sign = z_sign;
-    }
-  }
-
-  if (prod_mant == 0) {
-    // When there is exact cancellation, i.e., x*y == -z exactly, return -0.0 if
-    // rounding downward and +0.0 for other rounding modes.
-    if (quick_get_round() == FE_DOWNWARD)
-      prod_sign = Sign::NEG;
-    else
-      prod_sign = Sign::POS;
-  }
-
-  DyadicFloat result(prod_sign, prod_lsb_exp - InFPBits::EXP_BIAS, prod_mant);
-  result.mantissa |= static_cast<unsigned int>(sticky_bits);
-  return result.template as<OutType, /*ShouldSignalExceptions=*/true>();
-}
-
-} // namespace generic
-} // namespace fputil
-} // namespace LIBC_NAMESPACE_DECL
-
-#endif // LLVM_LIBC_SRC___SUPPORT_FPUTIL_GENERIC_FMA_H
+//===-- Common header for FMA implementations -------------------*- C++ -*-===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_LIBC_SRC___SUPPORT_FPUTIL_GENERIC_FMA_H
+#define LLVM_LIBC_SRC___SUPPORT_FPUTIL_GENERIC_FMA_H
+
+#include "src/__support/CPP/bit.h"
+#include "src/__support/CPP/limits.h"
+#include "src/__support/CPP/type_traits.h"
+#include "src/__support/FPUtil/BasicOperations.h"
+#include "src/__support/FPUtil/FPBits.h"
+#include "src/__support/FPUtil/cast.h"
+#include "src/__support/FPUtil/dyadic_float.h"
+#include "src/__support/FPUtil/rounding_mode.h"
+#include "src/__support/big_int.h"
+#include "src/__support/macros/attributes.h"   // LIBC_INLINE
+#include "src/__support/macros/config.h"
+#include "src/__support/macros/optimization.h" // LIBC_UNLIKELY
+
+#include "hdr/fenv_macros.h"
+
+namespace LIBC_NAMESPACE_DECL {
+namespace fputil {
+namespace generic {
+
+template <typename OutType, typename InType>
+LIBC_INLINE cpp::enable_if_t<cpp::is_floating_point_v<OutType> &&
+                                 cpp::is_floating_point_v<InType> &&
+                                 sizeof(OutType) <= sizeof(InType),
+                             OutType>
+fma(InType x, InType y, InType z);
+
+// TODO(lntue): Implement fmaf that is correctly rounded to all rounding modes.
+// The implementation below only is only correct for the default rounding mode,
+// round-to-nearest tie-to-even.
+template <> LIBC_INLINE float fma<float>(float x, float y, float z) {
+  // Product is exact.
+  double prod = static_cast<double>(x) * static_cast<double>(y);
+  double z_d = static_cast<double>(z);
+  double sum = prod + z_d;
+  fputil::FPBits<double> bit_prod(prod), bitz(z_d), bit_sum(sum);
+
+  if (!(bit_sum.is_inf_or_nan() || bit_sum.is_zero())) {
+    // Since the sum is computed in double precision, rounding might happen
+    // (for instance, when bitz.exponent > bit_prod.exponent + 5, or
+    // bit_prod.exponent > bitz.exponent + 40).  In that case, when we round
+    // the sum back to float, double rounding error might occur.
+    // A concrete example of this phenomenon is as follows:
+    //   x = y = 1 + 2^(-12), z = 2^(-53)
+    // The exact value of x*y + z is 1 + 2^(-11) + 2^(-24) + 2^(-53)
+    // So when rounding to float, fmaf(x, y, z) = 1 + 2^(-11) + 2^(-23)
+    // On the other hand, with the default rounding mode,
+    //   double(x*y + z) = 1 + 2^(-11) + 2^(-24)
+    // and casting again to float gives us:
+    //   float(double(x*y + z)) = 1 + 2^(-11).
+    //
+    // In order to correct this possible double rounding error, first we use
+    // Dekker's 2Sum algorithm to find t such that sum - t = prod + z exactly,
+    // assuming the (default) rounding mode is round-to-the-nearest,
+    // tie-to-even.  Moreover, t satisfies the condition that t < eps(sum),
+    // i.e., t.exponent < sum.exponent - 52. So if t is not 0, meaning rounding
+    // occurs when computing the sum, we just need to use t to adjust (any) last
+    // bit of sum, so that the sticky bits used when rounding sum to float are
+    // correct (when it matters).
+    fputil::FPBits<double> t(
+        (bit_prod.get_biased_exponent() >= bitz.get_biased_exponent())
+            ? ((bit_sum.get_val() - bit_prod.get_val()) - bitz.get_val())
+            : ((bit_sum.get_val() - bitz.get_val()) - bit_prod.get_val()));
+
+    // Update sticky bits if t != 0.0 and the least (52 - 23 - 1 = 28) bits are
+    // zero.
+    if (!t.is_zero() && ((bit_sum.get_mantissa() & 0xfff'ffffULL) == 0)) {
+      if (bit_sum.sign() != t.sign())
+        bit_sum.set_mantissa(bit_sum.get_mantissa() + 1);
+      else if (bit_sum.get_mantissa())
+        bit_sum.set_mantissa(bit_sum.get_mantissa() - 1);
+    }
+  }
+
+  return static_cast<float>(bit_sum.get_val());
+}
+
+namespace internal {
+
+// Extract the sticky bits and shift the `mantissa` to the right by
+// `shift_length`.
+template <typename T>
+LIBC_INLINE cpp::enable_if_t<is_unsigned_integral_or_big_int_v<T>, bool>
+shift_mantissa(int shift_length, T &mant) {
+  if (shift_length >= cpp::numeric_limits<T>::digits) {
+    mant = 0;
+    return true; // prod_mant is non-zero.
+  }
+  T mask = (T(1) << shift_length) - 1;
+  bool sticky_bits = (mant & mask) != 0;
+  mant >>= shift_length;
+  return sticky_bits;
+}
+
+} // namespace internal
+
+template <typename OutType, typename InType>
+LIBC_INLINE cpp::enable_if_t<cpp::is_floating_point_v<OutType> &&
+                                 cpp::is_floating_point_v<InType> &&
+                                 sizeof(OutType) <= sizeof(InType),
+                             OutType>
+fma(InType x, InType y, InType z) {
+  using OutFPBits = FPBits<OutType>;
+  using OutStorageType = typename OutFPBits::StorageType;
+  using InFPBits = FPBits<InType>;
+  using InStorageType = typename InFPBits::StorageType;
+
+  constexpr int IN_EXPLICIT_MANT_LEN = InFPBits::FRACTION_LEN + 1;
+  constexpr size_t PROD_LEN = 2 * IN_EXPLICIT_MANT_LEN;
+  constexpr size_t TMP_RESULT_LEN = cpp::bit_ceil(PROD_LEN + 1);
+  using TmpResultType = UInt<TMP_RESULT_LEN>;
+  using DyadicFloat = DyadicFloat<TMP_RESULT_LEN>;
+
+  InFPBits x_bits(x), y_bits(y), z_bits(z);
+
+  if (LIBC_UNLIKELY(x_bits.is_nan() || y_bits.is_nan() || z_bits.is_nan())) {
+    if (x_bits.is_nan() || y_bits.is_nan()) {
+      if (x_bits.is_signaling_nan() || y_bits.is_signaling_nan() ||
+          z_bits.is_signaling_nan())
+        raise_except_if_required(FE_INVALID);
+
+      if (x_bits.is_quiet_nan()) {
+        InStorageType x_payload = x_bits.get_mantissa();
+        x_payload >>= InFPBits::FRACTION_LEN - OutFPBits::FRACTION_LEN;
+        return OutFPBits::quiet_nan(x_bits.sign(),
+                                    static_cast<OutStorageType>(x_payload))
+            .get_val();
+      }
+
+      if (y_bits.is_quiet_nan()) {
+        InStorageType y_payload = y_bits.get_mantissa();
+        y_payload >>= InFPBits::FRACTION_LEN - OutFPBits::FRACTION_LEN;
+        return OutFPBits::quiet_nan(y_bits.sign(),
+                                    static_cast<OutStorageType>(y_payload))
+            .get_val();
+      }
+
+      if (z_bits.is_quiet_nan()) {
+        InStorageType z_payload = z_bits.get_mantissa();
+        z_payload >>= InFPBits::FRACTION_LEN - OutFPBits::FRACTION_LEN;
+        return OutFPBits::quiet_nan(z_bits.sign(),
+                                    static_cast<OutStorageType>(z_payload))
+            .get_val();
+      }
+
+      return OutFPBits::quiet_nan().get_val();
+    }
+  }
+
+  if (LIBC_UNLIKELY(x == 0 || y == 0 || z == 0))
+    return cast<OutType>(x * y + z);
+
+  int x_exp = 0;
+  int y_exp = 0;
+  int z_exp = 0;
+
+  // Denormal scaling = 2^(fraction length).
+  constexpr InStorageType IMPLICIT_MASK =
+      InFPBits::SIG_MASK - InFPBits::FRACTION_MASK;
+
+  constexpr InType DENORMAL_SCALING =
+      InFPBits::create_value(
+          Sign::POS, InFPBits::FRACTION_LEN + InFPBits::EXP_BIAS, IMPLICIT_MASK)
+          .get_val();
+
+  // Normalize denormal inputs.
+  if (LIBC_UNLIKELY(InFPBits(x).is_subnormal())) {
+    x_exp -= InFPBits::FRACTION_LEN;
+    x *= DENORMAL_SCALING;
+  }
+  if (LIBC_UNLIKELY(InFPBits(y).is_subnormal())) {
+    y_exp -= InFPBits::FRACTION_LEN;
+    y *= DENORMAL_SCALING;
+  }
+  if (LIBC_UNLIKELY(InFPBits(z).is_subnormal())) {
+    z_exp -= InFPBits::FRACTION_LEN;
+    z *= DENORMAL_SCALING;
+  }
+
+  x_bits = InFPBits(x);
+  y_bits = InFPBits(y);
+  z_bits = InFPBits(z);
+  const Sign z_sign = z_bits.sign();
+  Sign prod_sign = (x_bits.sign() == y_bits.sign()) ? Sign::POS : Sign::NEG;
+  x_exp += x_bits.get_biased_exponent();
+  y_exp += y_bits.get_biased_exponent();
+  z_exp += z_bits.get_biased_exponent();
+
+  if (LIBC_UNLIKELY(x_exp != InFPBits::MAX_BIASED_EXPONENT &&
+                    y_exp != InFPBits::MAX_BIASED_EXPONENT &&
+                    z_bits.is_inf()))
+    return cast<OutType>(z);
+
+  if (LIBC_UNLIKELY(x_exp == InFPBits::MAX_BIASED_EXPONENT ||
+                    y_exp == InFPBits::MAX_BIASED_EXPONENT ||
+                    z_exp == InFPBits::MAX_BIASED_EXPONENT))
+    return cast<OutType>(x * y + z);
+
+  // Extract mantissa and append hidden leading bits.
+  InStorageType x_mant = x_bits.get_explicit_mantissa();
+  InStorageType y_mant = y_bits.get_explicit_mantissa();
+  TmpResultType z_mant = z_bits.get_explicit_mantissa();
+
+  // If the exponent of the product x*y > the exponent of z, then no extra
+  // precision beside the entire product x*y is needed.  On the other hand, when
+  // the exponent of z >= the exponent of the product x*y, the worst-case that
+  // we need extra precision is when there is cancellation and the most
+  // significant bit of the product is aligned exactly with the second most
+  // significant bit of z:
+  //      z :    10aa...a
+  // - prod :     1bb...bb....b
+  // In that case, in order to store the exact result, we need at least
+  //     (Length of prod) - (Fraction length of z)
+  //   = 2*(Length of input explicit mantissa) - (Fraction length of z) bits.
+  // Overall, before aligning the mantissas and exponents, we can simply left-
+  // shift the mantissa of z by that amount.  After that, it is enough to align
+  // the least significant bit, given that we keep track of the round and sticky
+  // bits after the least significant bit.
+
+  TmpResultType prod_mant = TmpResultType(x_mant) * y_mant;
+  int prod_lsb_exp =
+      x_exp + y_exp - (InFPBits::EXP_BIAS + 2 * InFPBits::FRACTION_LEN);
+
+  constexpr int RESULT_MIN_LEN = PROD_LEN - InFPBits::FRACTION_LEN;
+  z_mant <<= RESULT_MIN_LEN;
+  int z_lsb_exp = z_exp - (InFPBits::FRACTION_LEN + RESULT_MIN_LEN);
+  bool sticky_bits = false;
+  bool z_shifted = false;
+
+  // Align exponents.
+  if (prod_lsb_exp < z_lsb_exp) {
+    sticky_bits = internal::shift_mantissa(z_lsb_exp - prod_lsb_exp, prod_mant);
+    prod_lsb_exp = z_lsb_exp;
+  } else if (z_lsb_exp < prod_lsb_exp) {
+    z_shifted = true;
+    sticky_bits = internal::shift_mantissa(prod_lsb_exp - z_lsb_exp, z_mant);
+  }
+
+  // Perform the addition:
+  //   (-1)^prod_sign * prod_mant + (-1)^z_sign * z_mant.
+  // The final result will be stored in prod_sign and prod_mant.
+  if (prod_sign == z_sign) {
+    // Effectively an addition.
+    prod_mant += z_mant;
+  } else {
+    // Subtraction cases.
+    if (prod_mant >= z_mant) {
+      if (z_shifted && sticky_bits) {
+        // Add 1 more to the subtrahend so that the sticky bits remain
+        // positive. This would simplify the rounding logic.
+        ++z_mant;
+      }
+      prod_mant -= z_mant;
+    } else {
+      if (!z_shifted && sticky_bits) {
+        // Add 1 more to the subtrahend so that the sticky bits remain
+        // positive. This would simplify the rounding logic.
+        ++prod_mant;
+      }
+      prod_mant = z_mant - prod_mant;
+      prod_sign = z_sign;
+    }
+  }
+
+  if (prod_mant == 0) {
+    // When there is exact cancellation, i.e., x*y == -z exactly, return -0.0 if
+    // rounding downward and +0.0 for other rounding modes.
+    if (quick_get_round() == FE_DOWNWARD)
+      prod_sign = Sign::NEG;
+    else
+      prod_sign = Sign::POS;
+  }
+
+  DyadicFloat result(prod_sign, prod_lsb_exp - InFPBits::EXP_BIAS, prod_mant);
+  result.mantissa |= static_cast<unsigned int>(sticky_bits);
+  return result.template as<OutType, /*ShouldSignalExceptions=*/true>();
+}
+
+} // namespace generic
+} // namespace fputil
+} // namespace LIBC_NAMESPACE_DECL
+
+#endif // LLVM_LIBC_SRC___SUPPORT_FPUTIL_GENERIC_FMA_H
diff --git a/libc/test/src/math/fmabf16_test.cpp b/libc/test/src/math/fmabf16_test.cpp
index df49e7bbaf9de..e009330904364 100644
--- a/libc/test/src/math/fmabf16_test.cpp
+++ b/libc/test/src/math/fmabf16_test.cpp
@@ -61,9 +61,10 @@ TEST_F(LlvmLibcFmaBf16Test, SpecialNumbers) {
         EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
                                        LIBC_NAMESPACE::fmabf16(x, y, z), 0.5);
       }
-      mpfr::TernaryInput<bfloat16> input{x, y, -x * y};
+      bfloat16 neg_xy = -(x * y);
+      mpfr::TernaryInput<bfloat16> input{x, y, neg_xy};
       EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
-                                     LIBC_NAMESPACE::fmabf16(x, y, -x * y),
+                                     LIBC_NAMESPACE::fmabf16(x, y, neg_xy),
                                      0.5);
     }
   }

>From 7bf6c7c3626d4ee766089a72e7b23560ceb6e1ee Mon Sep 17 00:00:00 2001
From: Sukumarsawant <sawantsukumar at gmail.com>
Date: Mon, 23 Feb 2026 16:10:50 +0530
Subject: [PATCH 33/43] testing with all together ~ 2^20 input spc

---
 libc/test/src/math/fmabf16_test.cpp | 113 ++++++++++++++++++++++++++++
 1 file changed, 113 insertions(+)

diff --git a/libc/test/src/math/fmabf16_test.cpp b/libc/test/src/math/fmabf16_test.cpp
index e009330904364..878c5ecb02cba 100644
--- a/libc/test/src/math/fmabf16_test.cpp
+++ b/libc/test/src/math/fmabf16_test.cpp
@@ -32,6 +32,119 @@ static constexpr uint16_t SUBNORM_POS_STOP = 0x007FU;
 static constexpr uint16_t SUBNORM_NEG_START = 0x8001U;
 static constexpr uint16_t SUBNORM_NEG_STOP = 0x807FU;
 
+static constexpr uint16_t STEP = 512;
+
+TEST_F(LlvmLibcFmaBf16Test, PositiveRange) {
+
+  const bfloat16 z_values[] = {zero,
+                               neg_zero,
+                               FPBits(static_cast<uint16_t>(0x3f80U)).get_val(),
+                               FPBits(static_cast<uint16_t>(0xbf80U)).get_val(),
+                               inf,
+                               neg_inf,
+                               min_normal,
+                               max_normal};
+  for (uint16_t v1 = POS_START; v1 <= POS_STOP; v1 += STEP) {
+    for (uint16_t v2 = POS_START; v2 <= POS_STOP; v2 += STEP) {
+
+      bfloat16 x = FPBits(v1).get_val();
+      bfloat16 y = FPBits(v2).get_val();
+
+      for (bfloat16 z : z_values) {
+        mpfr::TernaryInput<bfloat16> input{x, y, z};
+
+        EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
+                                       LIBC_NAMESPACE::fmabf16(x, y, z), 0.5);
+      }
+      mpfr::TernaryInput<bfloat16> input{x, y, -x * y};
+      EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
+                                     LIBC_NAMESPACE::fmabf16(x, y, -x * y),
+                                     0.5);
+    }
+  }
+}
+
+TEST_F(LlvmLibcFmaBf16Test, NegativeRange) {
+  const bfloat16 z_values[] = {zero,
+                               neg_zero,
+                               FPBits(static_cast<uint16_t>(0x3f80U)).get_val(),
+                               FPBits(static_cast<uint16_t>(0xbf80U)).get_val(),
+                               inf,
+                               neg_inf,
+                               min_normal,
+                               max_normal};
+  for (uint16_t v1 = NEG_START; v1 <= NEG_STOP; v1 += STEP) {
+    for (uint16_t v2 = NEG_START; v2 <= NEG_STOP; v2 += STEP) {
+
+      bfloat16 x = FPBits(v1).get_val();
+      bfloat16 y = FPBits(v2).get_val();
+      for (bfloat16 z : z_values) {
+        mpfr::TernaryInput<bfloat16> input{x, y, z};
+
+        EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
+                                       LIBC_NAMESPACE::fmabf16(x, y, z), 0.5);
+      }
+      mpfr::TernaryInput<bfloat16> input{x, y, -x * y};
+      EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
+                                     LIBC_NAMESPACE::fmabf16(x, y, -x * y),
+                                     0.5);
+    }
+  }
+}
+TEST_F(LlvmLibcFmaBf16Test, OppositeSignRange) {
+  const bfloat16 z_values[] = {zero,
+                               neg_zero,
+                               FPBits(static_cast<uint16_t>(0x3f80U)).get_val(),
+                               FPBits(static_cast<uint16_t>(0xbf80U)).get_val(),
+                               inf,
+                               neg_inf,
+                               min_normal,
+                               max_normal};
+  for (uint16_t v1 = POS_START; v1 <= POS_STOP; v1 += STEP) {
+    for (uint16_t v2 = NEG_START; v2 <= NEG_STOP; v2 += STEP) {
+
+      bfloat16 x = FPBits(v1).get_val();
+      bfloat16 y = FPBits(v2).get_val();
+      for (bfloat16 z : z_values) {
+        mpfr::TernaryInput<bfloat16> input{x, y, z};
+
+        EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
+                                       LIBC_NAMESPACE::fmabf16(x, y, z), 0.5);
+      }
+      mpfr::TernaryInput<bfloat16> input{x, y, -x * y};
+      EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
+                                     LIBC_NAMESPACE::fmabf16(x, y, -x * y),
+                                     0.5);
+    }
+  }
+}
+
+TEST_F(LlvmLibcFmaBf16Test, SubnormalNegativeRange) {
+  const bfloat16 z_values[] = {zero,
+                               neg_zero,
+                               inf,
+                               neg_inf,
+                               min_normal,
+                               max_normal};
+  for (uint16_t v1 = SUBNORM_NEG_START; v1 <= SUBNORM_NEG_STOP; v1++) {
+    for (uint16_t v2 = SUBNORM_NEG_START; v2 <= SUBNORM_NEG_STOP; v2++) {
+
+      bfloat16 x = FPBits(v1).get_val();
+      bfloat16 y = FPBits(v2).get_val();
+      for (bfloat16 z : z_values) {
+        mpfr::TernaryInput<bfloat16> input{x, y, z};
+
+        EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
+                                       LIBC_NAMESPACE::fmabf16(x, y, z), 0.5);
+      }
+      mpfr::TernaryInput<bfloat16> input{x, y, -x * y};
+      EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
+                                     LIBC_NAMESPACE::fmabf16(x, y, -x * y),
+                                     0.5);
+    }
+  }
+}
+
 
 TEST_F(LlvmLibcFmaBf16Test, SpecialNumbers) {
   const bfloat16 z_values[] = {zero,

>From efae492524449c637f01a652d57b8edd031bc348 Mon Sep 17 00:00:00 2001
From: Sukumarsawant <sawantsukumar at gmail.com>
Date: Mon, 23 Feb 2026 16:29:56 +0530
Subject: [PATCH 34/43] 2^17

---
 libc/test/src/math/fmabf16_test.cpp | 29 +----------------------------
 1 file changed, 1 insertion(+), 28 deletions(-)

diff --git a/libc/test/src/math/fmabf16_test.cpp b/libc/test/src/math/fmabf16_test.cpp
index 878c5ecb02cba..97bc82dcd230c 100644
--- a/libc/test/src/math/fmabf16_test.cpp
+++ b/libc/test/src/math/fmabf16_test.cpp
@@ -32,7 +32,7 @@ static constexpr uint16_t SUBNORM_POS_STOP = 0x007FU;
 static constexpr uint16_t SUBNORM_NEG_START = 0x8001U;
 static constexpr uint16_t SUBNORM_NEG_STOP = 0x807FU;
 
-static constexpr uint16_t STEP = 512;
+static constexpr uint16_t STEP = 1024;
 
 TEST_F(LlvmLibcFmaBf16Test, PositiveRange) {
 
@@ -91,33 +91,6 @@ TEST_F(LlvmLibcFmaBf16Test, NegativeRange) {
     }
   }
 }
-TEST_F(LlvmLibcFmaBf16Test, OppositeSignRange) {
-  const bfloat16 z_values[] = {zero,
-                               neg_zero,
-                               FPBits(static_cast<uint16_t>(0x3f80U)).get_val(),
-                               FPBits(static_cast<uint16_t>(0xbf80U)).get_val(),
-                               inf,
-                               neg_inf,
-                               min_normal,
-                               max_normal};
-  for (uint16_t v1 = POS_START; v1 <= POS_STOP; v1 += STEP) {
-    for (uint16_t v2 = NEG_START; v2 <= NEG_STOP; v2 += STEP) {
-
-      bfloat16 x = FPBits(v1).get_val();
-      bfloat16 y = FPBits(v2).get_val();
-      for (bfloat16 z : z_values) {
-        mpfr::TernaryInput<bfloat16> input{x, y, z};
-
-        EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
-                                       LIBC_NAMESPACE::fmabf16(x, y, z), 0.5);
-      }
-      mpfr::TernaryInput<bfloat16> input{x, y, -x * y};
-      EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
-                                     LIBC_NAMESPACE::fmabf16(x, y, -x * y),
-                                     0.5);
-    }
-  }
-}
 
 TEST_F(LlvmLibcFmaBf16Test, SubnormalNegativeRange) {
   const bfloat16 z_values[] = {zero,

>From b1433347ff1df1de0703bdad576d164ebe5cde4d Mon Sep 17 00:00:00 2001
From: Sukumarsawant <sawantsukumar at gmail.com>
Date: Mon, 23 Feb 2026 16:36:17 +0530
Subject: [PATCH 35/43] testing for 2

---
 libc/test/src/math/fmabf16_test.cpp | 145 +++++++++++++++++-----------
 1 file changed, 86 insertions(+), 59 deletions(-)

diff --git a/libc/test/src/math/fmabf16_test.cpp b/libc/test/src/math/fmabf16_test.cpp
index 97bc82dcd230c..23727022a444b 100644
--- a/libc/test/src/math/fmabf16_test.cpp
+++ b/libc/test/src/math/fmabf16_test.cpp
@@ -32,65 +32,92 @@ static constexpr uint16_t SUBNORM_POS_STOP = 0x007FU;
 static constexpr uint16_t SUBNORM_NEG_START = 0x8001U;
 static constexpr uint16_t SUBNORM_NEG_STOP = 0x807FU;
 
-static constexpr uint16_t STEP = 1024;
-
-TEST_F(LlvmLibcFmaBf16Test, PositiveRange) {
-
-  const bfloat16 z_values[] = {zero,
-                               neg_zero,
-                               FPBits(static_cast<uint16_t>(0x3f80U)).get_val(),
-                               FPBits(static_cast<uint16_t>(0xbf80U)).get_val(),
-                               inf,
-                               neg_inf,
-                               min_normal,
-                               max_normal};
-  for (uint16_t v1 = POS_START; v1 <= POS_STOP; v1 += STEP) {
-    for (uint16_t v2 = POS_START; v2 <= POS_STOP; v2 += STEP) {
-
-      bfloat16 x = FPBits(v1).get_val();
-      bfloat16 y = FPBits(v2).get_val();
-
-      for (bfloat16 z : z_values) {
-        mpfr::TernaryInput<bfloat16> input{x, y, z};
-
-        EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
-                                       LIBC_NAMESPACE::fmabf16(x, y, z), 0.5);
-      }
-      mpfr::TernaryInput<bfloat16> input{x, y, -x * y};
-      EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
-                                     LIBC_NAMESPACE::fmabf16(x, y, -x * y),
-                                     0.5);
-    }
-  }
-}
-
-TEST_F(LlvmLibcFmaBf16Test, NegativeRange) {
-  const bfloat16 z_values[] = {zero,
-                               neg_zero,
-                               FPBits(static_cast<uint16_t>(0x3f80U)).get_val(),
-                               FPBits(static_cast<uint16_t>(0xbf80U)).get_val(),
-                               inf,
-                               neg_inf,
-                               min_normal,
-                               max_normal};
-  for (uint16_t v1 = NEG_START; v1 <= NEG_STOP; v1 += STEP) {
-    for (uint16_t v2 = NEG_START; v2 <= NEG_STOP; v2 += STEP) {
-
-      bfloat16 x = FPBits(v1).get_val();
-      bfloat16 y = FPBits(v2).get_val();
-      for (bfloat16 z : z_values) {
-        mpfr::TernaryInput<bfloat16> input{x, y, z};
-
-        EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
-                                       LIBC_NAMESPACE::fmabf16(x, y, z), 0.5);
-      }
-      mpfr::TernaryInput<bfloat16> input{x, y, -x * y};
-      EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
-                                     LIBC_NAMESPACE::fmabf16(x, y, -x * y),
-                                     0.5);
-    }
-  }
-}
+// static constexpr uint16_t STEP = 512;
+
+// TEST_F(LlvmLibcFmaBf16Test, PositiveRange) {
+
+//   const bfloat16 z_values[] = {zero,
+//                                neg_zero,
+//                                FPBits(static_cast<uint16_t>(0x3f80U)).get_val(),
+//                                FPBits(static_cast<uint16_t>(0xbf80U)).get_val(),
+//                                inf,
+//                                neg_inf,
+//                                min_normal,
+//                                max_normal};
+//   for (uint16_t v1 = POS_START; v1 <= POS_STOP; v1 += STEP) {
+//     for (uint16_t v2 = POS_START; v2 <= POS_STOP; v2 += STEP) {
+
+//       bfloat16 x = FPBits(v1).get_val();
+//       bfloat16 y = FPBits(v2).get_val();
+
+//       for (bfloat16 z : z_values) {
+//         mpfr::TernaryInput<bfloat16> input{x, y, z};
+
+//         EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
+//                                        LIBC_NAMESPACE::fmabf16(x, y, z), 0.5);
+//       }
+//       mpfr::TernaryInput<bfloat16> input{x, y, -x * y};
+//       EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
+//                                      LIBC_NAMESPACE::fmabf16(x, y, -x * y),
+//                                      0.5);
+//     }
+//   }
+// }
+
+// TEST_F(LlvmLibcFmaBf16Test, NegativeRange) {
+//   const bfloat16 z_values[] = {zero,
+//                                neg_zero,
+//                                FPBits(static_cast<uint16_t>(0x3f80U)).get_val(),
+//                                FPBits(static_cast<uint16_t>(0xbf80U)).get_val(),
+//                                inf,
+//                                neg_inf,
+//                                min_normal,
+//                                max_normal};
+//   for (uint16_t v1 = NEG_START; v1 <= NEG_STOP; v1 += STEP) {
+//     for (uint16_t v2 = NEG_START; v2 <= NEG_STOP; v2 += STEP) {
+
+//       bfloat16 x = FPBits(v1).get_val();
+//       bfloat16 y = FPBits(v2).get_val();
+//       for (bfloat16 z : z_values) {
+//         mpfr::TernaryInput<bfloat16> input{x, y, z};
+
+//         EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
+//                                        LIBC_NAMESPACE::fmabf16(x, y, z), 0.5);
+//       }
+//       mpfr::TernaryInput<bfloat16> input{x, y, -x * y};
+//       EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
+//                                      LIBC_NAMESPACE::fmabf16(x, y, -x * y),
+//                                      0.5);
+//     }
+//   }
+// }
+// TEST_F(LlvmLibcFmaBf16Test, OppositeSignRange) {
+//   const bfloat16 z_values[] = {zero,
+//                                neg_zero,
+//                                FPBits(static_cast<uint16_t>(0x3f80U)).get_val(),
+//                                FPBits(static_cast<uint16_t>(0xbf80U)).get_val(),
+//                                inf,
+//                                neg_inf,
+//                                min_normal,
+//                                max_normal};
+//   for (uint16_t v1 = POS_START; v1 <= POS_STOP; v1 += STEP) {
+//     for (uint16_t v2 = NEG_START; v2 <= NEG_STOP; v2 += STEP) {
+
+//       bfloat16 x = FPBits(v1).get_val();
+//       bfloat16 y = FPBits(v2).get_val();
+//       for (bfloat16 z : z_values) {
+//         mpfr::TernaryInput<bfloat16> input{x, y, z};
+
+//         EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
+//                                        LIBC_NAMESPACE::fmabf16(x, y, z), 0.5);
+//       }
+//       mpfr::TernaryInput<bfloat16> input{x, y, -x * y};
+//       EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
+//                                      LIBC_NAMESPACE::fmabf16(x, y, -x * y),
+//                                      0.5);
+//     }
+//   }
+// }
 
 TEST_F(LlvmLibcFmaBf16Test, SubnormalNegativeRange) {
   const bfloat16 z_values[] = {zero,

>From baba8795c964b89f29cbaecbe4dab49cd8906327 Mon Sep 17 00:00:00 2001
From: Sukumarsawant <sawantsukumar at gmail.com>
Date: Mon, 23 Feb 2026 17:00:23 +0530
Subject: [PATCH 36/43]  0 err

---
 libc/src/__support/FPUtil/generic/FMA.h | 586 ++++++++++++------------
 libc/test/src/math/fmabf16_test.cpp     |   5 +-
 2 files changed, 296 insertions(+), 295 deletions(-)

diff --git a/libc/src/__support/FPUtil/generic/FMA.h b/libc/src/__support/FPUtil/generic/FMA.h
index 2db280af94aaf..dc45957f80ff4 100644
--- a/libc/src/__support/FPUtil/generic/FMA.h
+++ b/libc/src/__support/FPUtil/generic/FMA.h
@@ -1,293 +1,293 @@
-//===-- Common header for FMA implementations -------------------*- C++ -*-===//
-//
-// 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
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef LLVM_LIBC_SRC___SUPPORT_FPUTIL_GENERIC_FMA_H
-#define LLVM_LIBC_SRC___SUPPORT_FPUTIL_GENERIC_FMA_H
-
-#include "src/__support/CPP/bit.h"
-#include "src/__support/CPP/limits.h"
-#include "src/__support/CPP/type_traits.h"
-#include "src/__support/FPUtil/BasicOperations.h"
-#include "src/__support/FPUtil/FPBits.h"
-#include "src/__support/FPUtil/cast.h"
-#include "src/__support/FPUtil/dyadic_float.h"
-#include "src/__support/FPUtil/rounding_mode.h"
-#include "src/__support/big_int.h"
-#include "src/__support/macros/attributes.h"   // LIBC_INLINE
-#include "src/__support/macros/config.h"
-#include "src/__support/macros/optimization.h" // LIBC_UNLIKELY
-
-#include "hdr/fenv_macros.h"
-
-namespace LIBC_NAMESPACE_DECL {
-namespace fputil {
-namespace generic {
-
-template <typename OutType, typename InType>
-LIBC_INLINE cpp::enable_if_t<cpp::is_floating_point_v<OutType> &&
-                                 cpp::is_floating_point_v<InType> &&
-                                 sizeof(OutType) <= sizeof(InType),
-                             OutType>
-fma(InType x, InType y, InType z);
-
-// TODO(lntue): Implement fmaf that is correctly rounded to all rounding modes.
-// The implementation below only is only correct for the default rounding mode,
-// round-to-nearest tie-to-even.
-template <> LIBC_INLINE float fma<float>(float x, float y, float z) {
-  // Product is exact.
-  double prod = static_cast<double>(x) * static_cast<double>(y);
-  double z_d = static_cast<double>(z);
-  double sum = prod + z_d;
-  fputil::FPBits<double> bit_prod(prod), bitz(z_d), bit_sum(sum);
-
-  if (!(bit_sum.is_inf_or_nan() || bit_sum.is_zero())) {
-    // Since the sum is computed in double precision, rounding might happen
-    // (for instance, when bitz.exponent > bit_prod.exponent + 5, or
-    // bit_prod.exponent > bitz.exponent + 40).  In that case, when we round
-    // the sum back to float, double rounding error might occur.
-    // A concrete example of this phenomenon is as follows:
-    //   x = y = 1 + 2^(-12), z = 2^(-53)
-    // The exact value of x*y + z is 1 + 2^(-11) + 2^(-24) + 2^(-53)
-    // So when rounding to float, fmaf(x, y, z) = 1 + 2^(-11) + 2^(-23)
-    // On the other hand, with the default rounding mode,
-    //   double(x*y + z) = 1 + 2^(-11) + 2^(-24)
-    // and casting again to float gives us:
-    //   float(double(x*y + z)) = 1 + 2^(-11).
-    //
-    // In order to correct this possible double rounding error, first we use
-    // Dekker's 2Sum algorithm to find t such that sum - t = prod + z exactly,
-    // assuming the (default) rounding mode is round-to-the-nearest,
-    // tie-to-even.  Moreover, t satisfies the condition that t < eps(sum),
-    // i.e., t.exponent < sum.exponent - 52. So if t is not 0, meaning rounding
-    // occurs when computing the sum, we just need to use t to adjust (any) last
-    // bit of sum, so that the sticky bits used when rounding sum to float are
-    // correct (when it matters).
-    fputil::FPBits<double> t(
-        (bit_prod.get_biased_exponent() >= bitz.get_biased_exponent())
-            ? ((bit_sum.get_val() - bit_prod.get_val()) - bitz.get_val())
-            : ((bit_sum.get_val() - bitz.get_val()) - bit_prod.get_val()));
-
-    // Update sticky bits if t != 0.0 and the least (52 - 23 - 1 = 28) bits are
-    // zero.
-    if (!t.is_zero() && ((bit_sum.get_mantissa() & 0xfff'ffffULL) == 0)) {
-      if (bit_sum.sign() != t.sign())
-        bit_sum.set_mantissa(bit_sum.get_mantissa() + 1);
-      else if (bit_sum.get_mantissa())
-        bit_sum.set_mantissa(bit_sum.get_mantissa() - 1);
-    }
-  }
-
-  return static_cast<float>(bit_sum.get_val());
-}
-
-namespace internal {
-
-// Extract the sticky bits and shift the `mantissa` to the right by
-// `shift_length`.
-template <typename T>
-LIBC_INLINE cpp::enable_if_t<is_unsigned_integral_or_big_int_v<T>, bool>
-shift_mantissa(int shift_length, T &mant) {
-  if (shift_length >= cpp::numeric_limits<T>::digits) {
-    mant = 0;
-    return true; // prod_mant is non-zero.
-  }
-  T mask = (T(1) << shift_length) - 1;
-  bool sticky_bits = (mant & mask) != 0;
-  mant >>= shift_length;
-  return sticky_bits;
-}
-
-} // namespace internal
-
-template <typename OutType, typename InType>
-LIBC_INLINE cpp::enable_if_t<cpp::is_floating_point_v<OutType> &&
-                                 cpp::is_floating_point_v<InType> &&
-                                 sizeof(OutType) <= sizeof(InType),
-                             OutType>
-fma(InType x, InType y, InType z) {
-  using OutFPBits = FPBits<OutType>;
-  using OutStorageType = typename OutFPBits::StorageType;
-  using InFPBits = FPBits<InType>;
-  using InStorageType = typename InFPBits::StorageType;
-
-  constexpr int IN_EXPLICIT_MANT_LEN = InFPBits::FRACTION_LEN + 1;
-  constexpr size_t PROD_LEN = 2 * IN_EXPLICIT_MANT_LEN;
-  constexpr size_t TMP_RESULT_LEN = cpp::bit_ceil(PROD_LEN + 1);
-  using TmpResultType = UInt<TMP_RESULT_LEN>;
-  using DyadicFloat = DyadicFloat<TMP_RESULT_LEN>;
-
-  InFPBits x_bits(x), y_bits(y), z_bits(z);
-
-  if (LIBC_UNLIKELY(x_bits.is_nan() || y_bits.is_nan() || z_bits.is_nan())) {
-    if (x_bits.is_nan() || y_bits.is_nan()) {
-      if (x_bits.is_signaling_nan() || y_bits.is_signaling_nan() ||
-          z_bits.is_signaling_nan())
-        raise_except_if_required(FE_INVALID);
-
-      if (x_bits.is_quiet_nan()) {
-        InStorageType x_payload = x_bits.get_mantissa();
-        x_payload >>= InFPBits::FRACTION_LEN - OutFPBits::FRACTION_LEN;
-        return OutFPBits::quiet_nan(x_bits.sign(),
-                                    static_cast<OutStorageType>(x_payload))
-            .get_val();
-      }
-
-      if (y_bits.is_quiet_nan()) {
-        InStorageType y_payload = y_bits.get_mantissa();
-        y_payload >>= InFPBits::FRACTION_LEN - OutFPBits::FRACTION_LEN;
-        return OutFPBits::quiet_nan(y_bits.sign(),
-                                    static_cast<OutStorageType>(y_payload))
-            .get_val();
-      }
-
-      if (z_bits.is_quiet_nan()) {
-        InStorageType z_payload = z_bits.get_mantissa();
-        z_payload >>= InFPBits::FRACTION_LEN - OutFPBits::FRACTION_LEN;
-        return OutFPBits::quiet_nan(z_bits.sign(),
-                                    static_cast<OutStorageType>(z_payload))
-            .get_val();
-      }
-
-      return OutFPBits::quiet_nan().get_val();
-    }
-  }
-
-  if (LIBC_UNLIKELY(x == 0 || y == 0 || z == 0))
-    return cast<OutType>(x * y + z);
-
-  int x_exp = 0;
-  int y_exp = 0;
-  int z_exp = 0;
-
-  // Denormal scaling = 2^(fraction length).
-  constexpr InStorageType IMPLICIT_MASK =
-      InFPBits::SIG_MASK - InFPBits::FRACTION_MASK;
-
-  constexpr InType DENORMAL_SCALING =
-      InFPBits::create_value(
-          Sign::POS, InFPBits::FRACTION_LEN + InFPBits::EXP_BIAS, IMPLICIT_MASK)
-          .get_val();
-
-  // Normalize denormal inputs.
-  if (LIBC_UNLIKELY(InFPBits(x).is_subnormal())) {
-    x_exp -= InFPBits::FRACTION_LEN;
-    x *= DENORMAL_SCALING;
-  }
-  if (LIBC_UNLIKELY(InFPBits(y).is_subnormal())) {
-    y_exp -= InFPBits::FRACTION_LEN;
-    y *= DENORMAL_SCALING;
-  }
-  if (LIBC_UNLIKELY(InFPBits(z).is_subnormal())) {
-    z_exp -= InFPBits::FRACTION_LEN;
-    z *= DENORMAL_SCALING;
-  }
-
-  x_bits = InFPBits(x);
-  y_bits = InFPBits(y);
-  z_bits = InFPBits(z);
-  const Sign z_sign = z_bits.sign();
-  Sign prod_sign = (x_bits.sign() == y_bits.sign()) ? Sign::POS : Sign::NEG;
-  x_exp += x_bits.get_biased_exponent();
-  y_exp += y_bits.get_biased_exponent();
-  z_exp += z_bits.get_biased_exponent();
-
-  if (LIBC_UNLIKELY(x_exp != InFPBits::MAX_BIASED_EXPONENT &&
-                    y_exp != InFPBits::MAX_BIASED_EXPONENT &&
-                    z_bits.is_inf()))
-    return cast<OutType>(z);
-
-  if (LIBC_UNLIKELY(x_exp == InFPBits::MAX_BIASED_EXPONENT ||
-                    y_exp == InFPBits::MAX_BIASED_EXPONENT ||
-                    z_exp == InFPBits::MAX_BIASED_EXPONENT))
-    return cast<OutType>(x * y + z);
-
-  // Extract mantissa and append hidden leading bits.
-  InStorageType x_mant = x_bits.get_explicit_mantissa();
-  InStorageType y_mant = y_bits.get_explicit_mantissa();
-  TmpResultType z_mant = z_bits.get_explicit_mantissa();
-
-  // If the exponent of the product x*y > the exponent of z, then no extra
-  // precision beside the entire product x*y is needed.  On the other hand, when
-  // the exponent of z >= the exponent of the product x*y, the worst-case that
-  // we need extra precision is when there is cancellation and the most
-  // significant bit of the product is aligned exactly with the second most
-  // significant bit of z:
-  //      z :    10aa...a
-  // - prod :     1bb...bb....b
-  // In that case, in order to store the exact result, we need at least
-  //     (Length of prod) - (Fraction length of z)
-  //   = 2*(Length of input explicit mantissa) - (Fraction length of z) bits.
-  // Overall, before aligning the mantissas and exponents, we can simply left-
-  // shift the mantissa of z by that amount.  After that, it is enough to align
-  // the least significant bit, given that we keep track of the round and sticky
-  // bits after the least significant bit.
-
-  TmpResultType prod_mant = TmpResultType(x_mant) * y_mant;
-  int prod_lsb_exp =
-      x_exp + y_exp - (InFPBits::EXP_BIAS + 2 * InFPBits::FRACTION_LEN);
-
-  constexpr int RESULT_MIN_LEN = PROD_LEN - InFPBits::FRACTION_LEN;
-  z_mant <<= RESULT_MIN_LEN;
-  int z_lsb_exp = z_exp - (InFPBits::FRACTION_LEN + RESULT_MIN_LEN);
-  bool sticky_bits = false;
-  bool z_shifted = false;
-
-  // Align exponents.
-  if (prod_lsb_exp < z_lsb_exp) {
-    sticky_bits = internal::shift_mantissa(z_lsb_exp - prod_lsb_exp, prod_mant);
-    prod_lsb_exp = z_lsb_exp;
-  } else if (z_lsb_exp < prod_lsb_exp) {
-    z_shifted = true;
-    sticky_bits = internal::shift_mantissa(prod_lsb_exp - z_lsb_exp, z_mant);
-  }
-
-  // Perform the addition:
-  //   (-1)^prod_sign * prod_mant + (-1)^z_sign * z_mant.
-  // The final result will be stored in prod_sign and prod_mant.
-  if (prod_sign == z_sign) {
-    // Effectively an addition.
-    prod_mant += z_mant;
-  } else {
-    // Subtraction cases.
-    if (prod_mant >= z_mant) {
-      if (z_shifted && sticky_bits) {
-        // Add 1 more to the subtrahend so that the sticky bits remain
-        // positive. This would simplify the rounding logic.
-        ++z_mant;
-      }
-      prod_mant -= z_mant;
-    } else {
-      if (!z_shifted && sticky_bits) {
-        // Add 1 more to the subtrahend so that the sticky bits remain
-        // positive. This would simplify the rounding logic.
-        ++prod_mant;
-      }
-      prod_mant = z_mant - prod_mant;
-      prod_sign = z_sign;
-    }
-  }
-
-  if (prod_mant == 0) {
-    // When there is exact cancellation, i.e., x*y == -z exactly, return -0.0 if
-    // rounding downward and +0.0 for other rounding modes.
-    if (quick_get_round() == FE_DOWNWARD)
-      prod_sign = Sign::NEG;
-    else
-      prod_sign = Sign::POS;
-  }
-
-  DyadicFloat result(prod_sign, prod_lsb_exp - InFPBits::EXP_BIAS, prod_mant);
-  result.mantissa |= static_cast<unsigned int>(sticky_bits);
-  return result.template as<OutType, /*ShouldSignalExceptions=*/true>();
-}
-
-} // namespace generic
-} // namespace fputil
-} // namespace LIBC_NAMESPACE_DECL
-
-#endif // LLVM_LIBC_SRC___SUPPORT_FPUTIL_GENERIC_FMA_H
+//===-- Common header for FMA implementations -------------------*- C++ -*-===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_LIBC_SRC___SUPPORT_FPUTIL_GENERIC_FMA_H
+#define LLVM_LIBC_SRC___SUPPORT_FPUTIL_GENERIC_FMA_H
+
+#include "src/__support/CPP/bit.h"
+#include "src/__support/CPP/limits.h"
+#include "src/__support/CPP/type_traits.h"
+#include "src/__support/FPUtil/BasicOperations.h"
+#include "src/__support/FPUtil/FPBits.h"
+#include "src/__support/FPUtil/cast.h"
+#include "src/__support/FPUtil/dyadic_float.h"
+#include "src/__support/FPUtil/rounding_mode.h"
+#include "src/__support/big_int.h"
+#include "src/__support/macros/attributes.h"   // LIBC_INLINE
+#include "src/__support/macros/config.h"
+#include "src/__support/macros/optimization.h" // LIBC_UNLIKELY
+
+#include "hdr/fenv_macros.h"
+
+namespace LIBC_NAMESPACE_DECL {
+namespace fputil {
+namespace generic {
+
+template <typename OutType, typename InType>
+LIBC_INLINE cpp::enable_if_t<cpp::is_floating_point_v<OutType> &&
+                                 cpp::is_floating_point_v<InType> &&
+                                 sizeof(OutType) <= sizeof(InType),
+                             OutType>
+fma(InType x, InType y, InType z);
+
+// TODO(lntue): Implement fmaf that is correctly rounded to all rounding modes.
+// The implementation below only is only correct for the default rounding mode,
+// round-to-nearest tie-to-even.
+template <> LIBC_INLINE float fma<float>(float x, float y, float z) {
+  // Product is exact.
+  double prod = static_cast<double>(x) * static_cast<double>(y);
+  double z_d = static_cast<double>(z);
+  double sum = prod + z_d;
+  fputil::FPBits<double> bit_prod(prod), bitz(z_d), bit_sum(sum);
+
+  if (!(bit_sum.is_inf_or_nan() || bit_sum.is_zero())) {
+    // Since the sum is computed in double precision, rounding might happen
+    // (for instance, when bitz.exponent > bit_prod.exponent + 5, or
+    // bit_prod.exponent > bitz.exponent + 40).  In that case, when we round
+    // the sum back to float, double rounding error might occur.
+    // A concrete example of this phenomenon is as follows:
+    //   x = y = 1 + 2^(-12), z = 2^(-53)
+    // The exact value of x*y + z is 1 + 2^(-11) + 2^(-24) + 2^(-53)
+    // So when rounding to float, fmaf(x, y, z) = 1 + 2^(-11) + 2^(-23)
+    // On the other hand, with the default rounding mode,
+    //   double(x*y + z) = 1 + 2^(-11) + 2^(-24)
+    // and casting again to float gives us:
+    //   float(double(x*y + z)) = 1 + 2^(-11).
+    //
+    // In order to correct this possible double rounding error, first we use
+    // Dekker's 2Sum algorithm to find t such that sum - t = prod + z exactly,
+    // assuming the (default) rounding mode is round-to-the-nearest,
+    // tie-to-even.  Moreover, t satisfies the condition that t < eps(sum),
+    // i.e., t.exponent < sum.exponent - 52. So if t is not 0, meaning rounding
+    // occurs when computing the sum, we just need to use t to adjust (any) last
+    // bit of sum, so that the sticky bits used when rounding sum to float are
+    // correct (when it matters).
+    fputil::FPBits<double> t(
+        (bit_prod.get_biased_exponent() >= bitz.get_biased_exponent())
+            ? ((bit_sum.get_val() - bit_prod.get_val()) - bitz.get_val())
+            : ((bit_sum.get_val() - bitz.get_val()) - bit_prod.get_val()));
+
+    // Update sticky bits if t != 0.0 and the least (52 - 23 - 1 = 28) bits are
+    // zero.
+    if (!t.is_zero() && ((bit_sum.get_mantissa() & 0xfff'ffffULL) == 0)) {
+      if (bit_sum.sign() != t.sign())
+        bit_sum.set_mantissa(bit_sum.get_mantissa() + 1);
+      else if (bit_sum.get_mantissa())
+        bit_sum.set_mantissa(bit_sum.get_mantissa() - 1);
+    }
+  }
+
+  return static_cast<float>(bit_sum.get_val());
+}
+
+namespace internal {
+
+// Extract the sticky bits and shift the `mantissa` to the right by
+// `shift_length`.
+template <typename T>
+LIBC_INLINE cpp::enable_if_t<is_unsigned_integral_or_big_int_v<T>, bool>
+shift_mantissa(int shift_length, T &mant) {
+  if (shift_length >= cpp::numeric_limits<T>::digits) {
+    mant = 0;
+    return true; // prod_mant is non-zero.
+  }
+  T mask = (T(1) << shift_length) - 1;
+  bool sticky_bits = (mant & mask) != 0;
+  mant >>= shift_length;
+  return sticky_bits;
+}
+
+} // namespace internal
+
+template <typename OutType, typename InType>
+LIBC_INLINE cpp::enable_if_t<cpp::is_floating_point_v<OutType> &&
+                                 cpp::is_floating_point_v<InType> &&
+                                 sizeof(OutType) <= sizeof(InType),
+                             OutType>
+fma(InType x, InType y, InType z) {
+  using OutFPBits = FPBits<OutType>;
+  using OutStorageType = typename OutFPBits::StorageType;
+  using InFPBits = FPBits<InType>;
+  using InStorageType = typename InFPBits::StorageType;
+
+  constexpr int IN_EXPLICIT_MANT_LEN = InFPBits::FRACTION_LEN + 1;
+  constexpr size_t PROD_LEN = 2 * IN_EXPLICIT_MANT_LEN;
+  constexpr size_t TMP_RESULT_LEN = cpp::bit_ceil(PROD_LEN + 1);
+  using TmpResultType = UInt<TMP_RESULT_LEN>;
+  using DyadicFloat = DyadicFloat<TMP_RESULT_LEN>;
+
+  InFPBits x_bits(x), y_bits(y), z_bits(z);
+
+  if (LIBC_UNLIKELY(x_bits.is_nan() || y_bits.is_nan() || z_bits.is_nan())) {
+    if (x_bits.is_nan() || y_bits.is_nan()) {
+      if (x_bits.is_signaling_nan() || y_bits.is_signaling_nan() ||
+          z_bits.is_signaling_nan())
+        raise_except_if_required(FE_INVALID);
+
+      if (x_bits.is_quiet_nan()) {
+        InStorageType x_payload = x_bits.get_mantissa();
+        x_payload >>= InFPBits::FRACTION_LEN - OutFPBits::FRACTION_LEN;
+        return OutFPBits::quiet_nan(x_bits.sign(),
+                                    static_cast<OutStorageType>(x_payload))
+            .get_val();
+      }
+
+      if (y_bits.is_quiet_nan()) {
+        InStorageType y_payload = y_bits.get_mantissa();
+        y_payload >>= InFPBits::FRACTION_LEN - OutFPBits::FRACTION_LEN;
+        return OutFPBits::quiet_nan(y_bits.sign(),
+                                    static_cast<OutStorageType>(y_payload))
+            .get_val();
+      }
+
+      if (z_bits.is_quiet_nan()) {
+        InStorageType z_payload = z_bits.get_mantissa();
+        z_payload >>= InFPBits::FRACTION_LEN - OutFPBits::FRACTION_LEN;
+        return OutFPBits::quiet_nan(z_bits.sign(),
+                                    static_cast<OutStorageType>(z_payload))
+            .get_val();
+      }
+
+      return OutFPBits::quiet_nan().get_val();
+    }
+  }
+
+  if (LIBC_UNLIKELY(x == 0 || y == 0 || z == 0))
+    return cast<OutType>(x * y + z);
+
+  int x_exp = 0;
+  int y_exp = 0;
+  int z_exp = 0;
+
+  // Denormal scaling = 2^(fraction length).
+  constexpr InStorageType IMPLICIT_MASK =
+      InFPBits::SIG_MASK - InFPBits::FRACTION_MASK;
+
+  constexpr InType DENORMAL_SCALING =
+      InFPBits::create_value(
+          Sign::POS, InFPBits::FRACTION_LEN + InFPBits::EXP_BIAS, IMPLICIT_MASK)
+          .get_val();
+
+  // Normalize denormal inputs.
+  if (LIBC_UNLIKELY(InFPBits(x).is_subnormal())) {
+    x_exp -= InFPBits::FRACTION_LEN;
+    x *= DENORMAL_SCALING;
+  }
+  if (LIBC_UNLIKELY(InFPBits(y).is_subnormal())) {
+    y_exp -= InFPBits::FRACTION_LEN;
+    y *= DENORMAL_SCALING;
+  }
+  if (LIBC_UNLIKELY(InFPBits(z).is_subnormal())) {
+    z_exp -= InFPBits::FRACTION_LEN;
+    z *= DENORMAL_SCALING;
+  }
+
+  x_bits = InFPBits(x);
+  y_bits = InFPBits(y);
+  z_bits = InFPBits(z);
+  const Sign z_sign = z_bits.sign();
+  Sign prod_sign = (x_bits.sign() == y_bits.sign()) ? Sign::POS : Sign::NEG;
+  x_exp += x_bits.get_biased_exponent();
+  y_exp += y_bits.get_biased_exponent();
+  z_exp += z_bits.get_biased_exponent();
+
+  if (LIBC_UNLIKELY(x_exp != InFPBits::MAX_BIASED_EXPONENT &&
+                    y_exp != InFPBits::MAX_BIASED_EXPONENT &&
+                    z_bits.is_inf()))
+    return cast<OutType>(z);
+
+  if (LIBC_UNLIKELY(x_exp == InFPBits::MAX_BIASED_EXPONENT ||
+                    y_exp == InFPBits::MAX_BIASED_EXPONENT ||
+                    z_exp == InFPBits::MAX_BIASED_EXPONENT))
+    return cast<OutType>(x * y + z);
+
+  // Extract mantissa and append hidden leading bits.
+  InStorageType x_mant = x_bits.get_explicit_mantissa();
+  InStorageType y_mant = y_bits.get_explicit_mantissa();
+  TmpResultType z_mant = z_bits.get_explicit_mantissa();
+
+  // If the exponent of the product x*y > the exponent of z, then no extra
+  // precision beside the entire product x*y is needed.  On the other hand, when
+  // the exponent of z >= the exponent of the product x*y, the worst-case that
+  // we need extra precision is when there is cancellation and the most
+  // significant bit of the product is aligned exactly with the second most
+  // significant bit of z:
+  //      z :    10aa...a
+  // - prod :     1bb...bb....b
+  // In that case, in order to store the exact result, we need at least
+  //     (Length of prod) - (Fraction length of z)
+  //   = 2*(Length of input explicit mantissa) - (Fraction length of z) bits.
+  // Overall, before aligning the mantissas and exponents, we can simply left-
+  // shift the mantissa of z by that amount.  After that, it is enough to align
+  // the least significant bit, given that we keep track of the round and sticky
+  // bits after the least significant bit.
+
+  TmpResultType prod_mant = TmpResultType(x_mant) * y_mant;
+  int prod_lsb_exp =
+      x_exp + y_exp - (InFPBits::EXP_BIAS + 2 * InFPBits::FRACTION_LEN);
+
+  constexpr int RESULT_MIN_LEN = PROD_LEN - InFPBits::FRACTION_LEN;
+  z_mant <<= RESULT_MIN_LEN;
+  int z_lsb_exp = z_exp - (InFPBits::FRACTION_LEN + RESULT_MIN_LEN);
+  bool sticky_bits = false;
+  bool z_shifted = false;
+
+  // Align exponents.
+  if (prod_lsb_exp < z_lsb_exp) {
+    sticky_bits = internal::shift_mantissa(z_lsb_exp - prod_lsb_exp, prod_mant);
+    prod_lsb_exp = z_lsb_exp;
+  } else if (z_lsb_exp < prod_lsb_exp) {
+    z_shifted = true;
+    sticky_bits = internal::shift_mantissa(prod_lsb_exp - z_lsb_exp, z_mant);
+  }
+
+  // Perform the addition:
+  //   (-1)^prod_sign * prod_mant + (-1)^z_sign * z_mant.
+  // The final result will be stored in prod_sign and prod_mant.
+  if (prod_sign == z_sign) {
+    // Effectively an addition.
+    prod_mant += z_mant;
+  } else {
+    // Subtraction cases.
+    if (prod_mant >= z_mant) {
+      if (z_shifted && sticky_bits) {
+        // Add 1 more to the subtrahend so that the sticky bits remain
+        // positive. This would simplify the rounding logic.
+        ++z_mant;
+      }
+      prod_mant -= z_mant;
+    } else {
+      if (!z_shifted && sticky_bits) {
+        // Add 1 more to the subtrahend so that the sticky bits remain
+        // positive. This would simplify the rounding logic.
+        ++prod_mant;
+      }
+      prod_mant = z_mant - prod_mant;
+      prod_sign = z_sign;
+    }
+  }
+
+  if (prod_mant == 0) {
+    // When there is exact cancellation, i.e., x*y == -z exactly, return -0.0 if
+    // rounding downward and +0.0 for other rounding modes.
+    if (quick_get_round() == FE_DOWNWARD)
+      prod_sign = Sign::NEG;
+    else
+      prod_sign = Sign::POS;
+  }
+
+  DyadicFloat result(prod_sign, prod_lsb_exp - InFPBits::EXP_BIAS, prod_mant);
+  result.mantissa |= static_cast<unsigned int>(sticky_bits);
+  return result.template as<OutType, /*ShouldSignalExceptions=*/true>();
+}
+
+} // namespace generic
+} // namespace fputil
+} // namespace LIBC_NAMESPACE_DECL
+
+#endif // LLVM_LIBC_SRC___SUPPORT_FPUTIL_GENERIC_FMA_H
diff --git a/libc/test/src/math/fmabf16_test.cpp b/libc/test/src/math/fmabf16_test.cpp
index 23727022a444b..9e576a80295a0 100644
--- a/libc/test/src/math/fmabf16_test.cpp
+++ b/libc/test/src/math/fmabf16_test.cpp
@@ -137,9 +137,10 @@ TEST_F(LlvmLibcFmaBf16Test, SubnormalNegativeRange) {
         EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
                                        LIBC_NAMESPACE::fmabf16(x, y, z), 0.5);
       }
-      mpfr::TernaryInput<bfloat16> input{x, y, -x * y};
+      bfloat16 neg_xy = -(x * y);
+      mpfr::TernaryInput<bfloat16> input{x, y, neg_xy};
       EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
-                                     LIBC_NAMESPACE::fmabf16(x, y, -x * y),
+                                     LIBC_NAMESPACE::fmabf16(x, y, neg_xy),
                                      0.5);
     }
   }

>From c63d72479a0dd2e788bdb75641b98cd60c0d0ab0 Mon Sep 17 00:00:00 2001
From: Sukumarsawant <sawantsukumar at gmail.com>
Date: Mon, 23 Feb 2026 17:15:03 +0530
Subject: [PATCH 37/43] final commit before PR

---
 libc/src/__support/FPUtil/generic/FMA.h |  5 +-
 libc/test/src/math/fmabf16_test.cpp     | 99 -------------------------
 2 files changed, 2 insertions(+), 102 deletions(-)

diff --git a/libc/src/__support/FPUtil/generic/FMA.h b/libc/src/__support/FPUtil/generic/FMA.h
index dc45957f80ff4..e9652cd30066a 100644
--- a/libc/src/__support/FPUtil/generic/FMA.h
+++ b/libc/src/__support/FPUtil/generic/FMA.h
@@ -18,7 +18,7 @@
 #include "src/__support/FPUtil/dyadic_float.h"
 #include "src/__support/FPUtil/rounding_mode.h"
 #include "src/__support/big_int.h"
-#include "src/__support/macros/attributes.h"   // LIBC_INLINE
+#include "src/__support/macros/attributes.h" // LIBC_INLINE
 #include "src/__support/macros/config.h"
 #include "src/__support/macros/optimization.h" // LIBC_UNLIKELY
 
@@ -197,8 +197,7 @@ fma(InType x, InType y, InType z) {
   z_exp += z_bits.get_biased_exponent();
 
   if (LIBC_UNLIKELY(x_exp != InFPBits::MAX_BIASED_EXPONENT &&
-                    y_exp != InFPBits::MAX_BIASED_EXPONENT &&
-                    z_bits.is_inf()))
+                    y_exp != InFPBits::MAX_BIASED_EXPONENT && z_bits.is_inf()))
     return cast<OutType>(z);
 
   if (LIBC_UNLIKELY(x_exp == InFPBits::MAX_BIASED_EXPONENT ||
diff --git a/libc/test/src/math/fmabf16_test.cpp b/libc/test/src/math/fmabf16_test.cpp
index 9e576a80295a0..408a17c49a2c5 100644
--- a/libc/test/src/math/fmabf16_test.cpp
+++ b/libc/test/src/math/fmabf16_test.cpp
@@ -16,109 +16,10 @@ using LlvmLibcFmaBf16Test = LIBC_NAMESPACE::testing::FPTest<bfloat16>;
 
 namespace mpfr = LIBC_NAMESPACE::testing::mpfr;
 
-// range: [0, inf]
-static constexpr uint16_t POS_START = 0x0000U;
-static constexpr uint16_t POS_STOP = 0x7f80U;
-
-// range: [-0, -inf]
-static constexpr uint16_t NEG_START = 0x8000U;
-static constexpr uint16_t NEG_STOP = 0xff80U;
-
-// subnormal range (positive)
-static constexpr uint16_t SUBNORM_POS_START = 0x0001U;
-static constexpr uint16_t SUBNORM_POS_STOP = 0x007FU;
-
 // subnormal range (negative)
 static constexpr uint16_t SUBNORM_NEG_START = 0x8001U;
 static constexpr uint16_t SUBNORM_NEG_STOP = 0x807FU;
 
-// static constexpr uint16_t STEP = 512;
-
-// TEST_F(LlvmLibcFmaBf16Test, PositiveRange) {
-
-//   const bfloat16 z_values[] = {zero,
-//                                neg_zero,
-//                                FPBits(static_cast<uint16_t>(0x3f80U)).get_val(),
-//                                FPBits(static_cast<uint16_t>(0xbf80U)).get_val(),
-//                                inf,
-//                                neg_inf,
-//                                min_normal,
-//                                max_normal};
-//   for (uint16_t v1 = POS_START; v1 <= POS_STOP; v1 += STEP) {
-//     for (uint16_t v2 = POS_START; v2 <= POS_STOP; v2 += STEP) {
-
-//       bfloat16 x = FPBits(v1).get_val();
-//       bfloat16 y = FPBits(v2).get_val();
-
-//       for (bfloat16 z : z_values) {
-//         mpfr::TernaryInput<bfloat16> input{x, y, z};
-
-//         EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
-//                                        LIBC_NAMESPACE::fmabf16(x, y, z), 0.5);
-//       }
-//       mpfr::TernaryInput<bfloat16> input{x, y, -x * y};
-//       EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
-//                                      LIBC_NAMESPACE::fmabf16(x, y, -x * y),
-//                                      0.5);
-//     }
-//   }
-// }
-
-// TEST_F(LlvmLibcFmaBf16Test, NegativeRange) {
-//   const bfloat16 z_values[] = {zero,
-//                                neg_zero,
-//                                FPBits(static_cast<uint16_t>(0x3f80U)).get_val(),
-//                                FPBits(static_cast<uint16_t>(0xbf80U)).get_val(),
-//                                inf,
-//                                neg_inf,
-//                                min_normal,
-//                                max_normal};
-//   for (uint16_t v1 = NEG_START; v1 <= NEG_STOP; v1 += STEP) {
-//     for (uint16_t v2 = NEG_START; v2 <= NEG_STOP; v2 += STEP) {
-
-//       bfloat16 x = FPBits(v1).get_val();
-//       bfloat16 y = FPBits(v2).get_val();
-//       for (bfloat16 z : z_values) {
-//         mpfr::TernaryInput<bfloat16> input{x, y, z};
-
-//         EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
-//                                        LIBC_NAMESPACE::fmabf16(x, y, z), 0.5);
-//       }
-//       mpfr::TernaryInput<bfloat16> input{x, y, -x * y};
-//       EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
-//                                      LIBC_NAMESPACE::fmabf16(x, y, -x * y),
-//                                      0.5);
-//     }
-//   }
-// }
-// TEST_F(LlvmLibcFmaBf16Test, OppositeSignRange) {
-//   const bfloat16 z_values[] = {zero,
-//                                neg_zero,
-//                                FPBits(static_cast<uint16_t>(0x3f80U)).get_val(),
-//                                FPBits(static_cast<uint16_t>(0xbf80U)).get_val(),
-//                                inf,
-//                                neg_inf,
-//                                min_normal,
-//                                max_normal};
-//   for (uint16_t v1 = POS_START; v1 <= POS_STOP; v1 += STEP) {
-//     for (uint16_t v2 = NEG_START; v2 <= NEG_STOP; v2 += STEP) {
-
-//       bfloat16 x = FPBits(v1).get_val();
-//       bfloat16 y = FPBits(v2).get_val();
-//       for (bfloat16 z : z_values) {
-//         mpfr::TernaryInput<bfloat16> input{x, y, z};
-
-//         EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
-//                                        LIBC_NAMESPACE::fmabf16(x, y, z), 0.5);
-//       }
-//       mpfr::TernaryInput<bfloat16> input{x, y, -x * y};
-//       EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Fma, input,
-//                                      LIBC_NAMESPACE::fmabf16(x, y, -x * y),
-//                                      0.5);
-//     }
-//   }
-// }
-
 TEST_F(LlvmLibcFmaBf16Test, SubnormalNegativeRange) {
   const bfloat16 z_values[] = {zero,
                                neg_zero,

>From 1e6f1a3f6b302f2d9f4016170972bcae7247680f Mon Sep 17 00:00:00 2001
From: Sukumarsawant <sawantsukumar at gmail.com>
Date: Mon, 23 Feb 2026 17:19:23 +0530
Subject: [PATCH 38/43] if change 1 needed

---
 libc/src/__support/FPUtil/generic/add_sub.h | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/libc/src/__support/FPUtil/generic/add_sub.h b/libc/src/__support/FPUtil/generic/add_sub.h
index 0d7aee37cee5e..c90268035d860 100644
--- a/libc/src/__support/FPUtil/generic/add_sub.h
+++ b/libc/src/__support/FPUtil/generic/add_sub.h
@@ -96,16 +96,16 @@ add_or_sub(InType x, InType y) {
 
     if (x_bits.is_zero()) {
       if (y_bits.is_zero()) {
-        if (is_effectively_add) {
-          return OutFPBits::zero(x_bits.sign()).get_val();
-        } else {
+        // if (is_effectively_add) {
+        //   return OutFPBits::zero(x_bits.sign()).get_val();
+        // } else {
           switch (quick_get_round()) {
           case FE_DOWNWARD:
             return OutFPBits::zero(Sign::NEG).get_val();
           default:
             return OutFPBits::zero(Sign::POS).get_val();
           }
-        }
+        // }
       }
 
       if constexpr (cpp::is_same_v<InType, bfloat16> &&

>From 30c9bde3e5ce12b34ad48f7839caa00705d4f26a Mon Sep 17 00:00:00 2001
From: Sukumarsawant <sawantsukumar at gmail.com>
Date: Mon, 23 Feb 2026 17:25:55 +0530
Subject: [PATCH 39/43] +0 -0 condn needed as gives output sign mismatch

---
 libc/src/__support/FPUtil/generic/add_sub.h | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/libc/src/__support/FPUtil/generic/add_sub.h b/libc/src/__support/FPUtil/generic/add_sub.h
index c90268035d860..0d7aee37cee5e 100644
--- a/libc/src/__support/FPUtil/generic/add_sub.h
+++ b/libc/src/__support/FPUtil/generic/add_sub.h
@@ -96,16 +96,16 @@ add_or_sub(InType x, InType y) {
 
     if (x_bits.is_zero()) {
       if (y_bits.is_zero()) {
-        // if (is_effectively_add) {
-        //   return OutFPBits::zero(x_bits.sign()).get_val();
-        // } else {
+        if (is_effectively_add) {
+          return OutFPBits::zero(x_bits.sign()).get_val();
+        } else {
           switch (quick_get_round()) {
           case FE_DOWNWARD:
             return OutFPBits::zero(Sign::NEG).get_val();
           default:
             return OutFPBits::zero(Sign::POS).get_val();
           }
-        // }
+        }
       }
 
       if constexpr (cpp::is_same_v<InType, bfloat16> &&

>From cfccbe2f9c2f370a1b11e1472f9c2ad88f0ae1f0 Mon Sep 17 00:00:00 2001
From: Sukumarsawant <sawantsukumar at gmail.com>
Date: Mon, 23 Feb 2026 17:49:09 +0530
Subject: [PATCH 40/43] format

---
 libc/src/math/generic/fmabf16.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libc/src/math/generic/fmabf16.cpp b/libc/src/math/generic/fmabf16.cpp
index 233dbc9089f9c..ab221dd19ac8d 100644
--- a/libc/src/math/generic/fmabf16.cpp
+++ b/libc/src/math/generic/fmabf16.cpp
@@ -7,9 +7,9 @@
 //===----------------------------------------------------------------------===//
 
 #include "src/math/fmabf16.h"
-#include "src/__support/common.h"
 #include "src/__support/FPUtil/FMA.h"
 #include "src/__support/FPUtil/bfloat16.h"
+#include "src/__support/common.h"
 #include "src/__support/macros/config.h"
 
 namespace LIBC_NAMESPACE_DECL {

>From a26bb5a8a0be348fbb5caf47222293238e6f3151 Mon Sep 17 00:00:00 2001
From: Sukumarsawant <sawantsukumar at gmail.com>
Date: Mon, 23 Feb 2026 17:58:13 +0530
Subject: [PATCH 41/43] formatted acc to gitac

---
 libc/test/src/math/fmabf16_test.cpp  | 32 +++++++---------------------
 libc/utils/MPFRWrapper/MPFRUtils.cpp |  7 +++---
 2 files changed, 11 insertions(+), 28 deletions(-)

diff --git a/libc/test/src/math/fmabf16_test.cpp b/libc/test/src/math/fmabf16_test.cpp
index 408a17c49a2c5..0b36b882c06e8 100644
--- a/libc/test/src/math/fmabf16_test.cpp
+++ b/libc/test/src/math/fmabf16_test.cpp
@@ -21,12 +21,8 @@ static constexpr uint16_t SUBNORM_NEG_START = 0x8001U;
 static constexpr uint16_t SUBNORM_NEG_STOP = 0x807FU;
 
 TEST_F(LlvmLibcFmaBf16Test, SubnormalNegativeRange) {
-  const bfloat16 z_values[] = {zero,
-                               neg_zero,
-                               inf,
-                               neg_inf,
-                               min_normal,
-                               max_normal};
+  const bfloat16 z_values[] = {zero,    neg_zero,   inf,
+                               neg_inf, min_normal, max_normal};
   for (uint16_t v1 = SUBNORM_NEG_START; v1 <= SUBNORM_NEG_STOP; v1++) {
     for (uint16_t v2 = SUBNORM_NEG_START; v2 <= SUBNORM_NEG_STOP; v2++) {
 
@@ -49,24 +45,12 @@ TEST_F(LlvmLibcFmaBf16Test, SubnormalNegativeRange) {
 
 
 TEST_F(LlvmLibcFmaBf16Test, SpecialNumbers) {
-  const bfloat16 z_values[] = {zero,
-                               neg_zero,
-                               inf,
-                               neg_inf,
-                               min_normal,
-                               max_normal};
-  const bfloat16 x_values[] = {zero,
-                               neg_zero,
-                               inf,
-                               neg_inf,
-                               min_normal,
-                               max_normal};
-  const bfloat16 y_values[] = {zero,
-                               neg_zero,
-                               inf,
-                               neg_inf,
-                               min_normal,
-                               max_normal};
+  const bfloat16 z_values[] = {zero,    neg_zero,   inf,
+                               neg_inf, min_normal, max_normal};
+  const bfloat16 x_values[] = {zero,    neg_zero,   inf,
+                               neg_inf, min_normal, max_normal};
+  const bfloat16 y_values[] = {zero,    neg_zero,   inf,
+                               neg_inf, min_normal, max_normal};
 
   for (bfloat16 x : x_values) {
     for (bfloat16 y : y_values) {
diff --git a/libc/utils/MPFRWrapper/MPFRUtils.cpp b/libc/utils/MPFRWrapper/MPFRUtils.cpp
index 22617c0ee3f99..4c5c891bcfe9a 100644
--- a/libc/utils/MPFRWrapper/MPFRUtils.cpp
+++ b/libc/utils/MPFRWrapper/MPFRUtils.cpp
@@ -764,10 +764,9 @@ compare_ternary_operation_one_output(Operation,
                                      double, RoundingMode);
 #endif
 
-template bool compare_ternary_operation_one_output(Operation,
-                                                   const TernaryInput<bfloat16> &,
-                                                   bfloat16, double,
-                                                   RoundingMode);
+template bool
+compare_ternary_operation_one_output(Operation, const TernaryInput<bfloat16> &,
+                                     bfloat16, double, RoundingMode);
 template bool compare_ternary_operation_one_output(Operation,
                                                    const TernaryInput<float> &,
                                                    bfloat16, double,

>From fc4d4845627165c802344e1e4433b4f9870d58c7 Mon Sep 17 00:00:00 2001
From: Sukumarsawant <sawantsukumar at gmail.com>
Date: Mon, 23 Feb 2026 18:06:20 +0530
Subject: [PATCH 42/43] line-space

---
 libc/test/src/math/fmabf16_test.cpp | 1 -
 1 file changed, 1 deletion(-)

diff --git a/libc/test/src/math/fmabf16_test.cpp b/libc/test/src/math/fmabf16_test.cpp
index 0b36b882c06e8..565225bcb71bf 100644
--- a/libc/test/src/math/fmabf16_test.cpp
+++ b/libc/test/src/math/fmabf16_test.cpp
@@ -43,7 +43,6 @@ TEST_F(LlvmLibcFmaBf16Test, SubnormalNegativeRange) {
   }
 }
 
-
 TEST_F(LlvmLibcFmaBf16Test, SpecialNumbers) {
   const bfloat16 z_values[] = {zero,    neg_zero,   inf,
                                neg_inf, min_normal, max_normal};

>From d260d1f1e1b4544e97e6bec68504d0d1218108fc Mon Sep 17 00:00:00 2001
From: Sukumarsawant <sawantsukumar at gmail.com>
Date: Mon, 23 Feb 2026 21:51:20 +0530
Subject: [PATCH 43/43] shifted (norm,norm,INF) condn + moved Bfloat16 *=
 operator

---
 libc/src/__support/FPUtil/bfloat16.h    |  5 -----
 libc/src/__support/FPUtil/generic/FMA.h | 11 ++++++-----
 2 files changed, 6 insertions(+), 10 deletions(-)

diff --git a/libc/src/__support/FPUtil/bfloat16.h b/libc/src/__support/FPUtil/bfloat16.h
index 7d64b441bf9b2..13e151208567d 100644
--- a/libc/src/__support/FPUtil/bfloat16.h
+++ b/libc/src/__support/FPUtil/bfloat16.h
@@ -113,11 +113,6 @@ struct BFloat16 {
   LIBC_INLINE BFloat16 operator/(BFloat16 other) const {
     return fputil::generic::div<bfloat16>(*this, other);
   }
-
-  LIBC_INLINE BFloat16 &operator*=(const BFloat16 &other) {
-    *this = *this * other;
-    return *this;
-  }
 }; // struct BFloat16
 
 } // namespace fputil
diff --git a/libc/src/__support/FPUtil/generic/FMA.h b/libc/src/__support/FPUtil/generic/FMA.h
index e9652cd30066a..e9023a8e09d5c 100644
--- a/libc/src/__support/FPUtil/generic/FMA.h
+++ b/libc/src/__support/FPUtil/generic/FMA.h
@@ -196,14 +196,15 @@ fma(InType x, InType y, InType z) {
   y_exp += y_bits.get_biased_exponent();
   z_exp += z_bits.get_biased_exponent();
 
-  if (LIBC_UNLIKELY(x_exp != InFPBits::MAX_BIASED_EXPONENT &&
-                    y_exp != InFPBits::MAX_BIASED_EXPONENT && z_bits.is_inf()))
-    return cast<OutType>(z);
-
   if (LIBC_UNLIKELY(x_exp == InFPBits::MAX_BIASED_EXPONENT ||
                     y_exp == InFPBits::MAX_BIASED_EXPONENT ||
-                    z_exp == InFPBits::MAX_BIASED_EXPONENT))
+                    z_exp == InFPBits::MAX_BIASED_EXPONENT)) {
+    if (LIBC_UNLIKELY(x_exp != InFPBits::MAX_BIASED_EXPONENT &&
+                      y_exp != InFPBits::MAX_BIASED_EXPONENT &&
+                      z_bits.is_inf()))
+      return cast<OutType>(z);
     return cast<OutType>(x * y + z);
+  }
 
   // Extract mantissa and append hidden leading bits.
   InStorageType x_mant = x_bits.get_explicit_mantissa();



More information about the libc-commits mailing list