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

via llvm-commits llvm-commits at lists.llvm.org
Tue Mar 10 02:05:03 PDT 2026


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

>From 8cfad59c0f96fb371efa11fedaa6ee52d866e331 Mon Sep 17 00:00:00 2001
From: Sukumarsawant <sawantsukumar at gmail.com>
Date: Mon, 9 Feb 2026 13:15:49 +0530
Subject: [PATCH 1/4] Conflicts

---
 libc/config/baremetal/aarch64/entrypoints.txt |  933 +++
 libc/config/baremetal/arm/entrypoints.txt     |  944 +++
 libc/config/baremetal/riscv/entrypoints.txt   |  942 +++
 libc/config/darwin/aarch64/entrypoints.txt    |  748 ++
 libc/config/darwin/x86_64/entrypoints.txt     |  621 +-
 libc/config/gpu/amdgpu/entrypoints.txt        |  694 ++
 libc/config/gpu/nvptx/entrypoints.txt         |  696 ++
 libc/config/linux/aarch64/entrypoints.txt     | 1185 +++
 libc/config/linux/arm/entrypoints.txt         |  538 ++
 libc/config/linux/riscv/entrypoints.txt       | 1332 ++++
 libc/config/linux/x86_64/entrypoints.txt      | 1403 ++++
 libc/config/windows/entrypoints.txt           |  385 +
 libc/src/math/CMakeLists.txt                  |  646 ++
 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             | 3482 +++++++++
 libc/test/src/math/bf16mul_test.cpp           |   30 +-
 libc/test/src/math/fmabf16_test.cpp           |   29 +
 libc/test/src/math/smoke/CMakeLists.txt       | 6531 +++++++++++++++++
 libc/test/src/math/smoke/fmabf16_test.cpp     |   14 +
 22 files changed, 20904 insertions(+), 345 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 278e1f5afde70..32d8201d9c53c 100644
--- a/libc/config/baremetal/aarch64/entrypoints.txt
+++ b/libc/config/baremetal/aarch64/entrypoints.txt
@@ -935,3 +935,936 @@ 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 955dc643586e9..03dacfdc97df9 100644
--- a/libc/config/baremetal/arm/entrypoints.txt
+++ b/libc/config/baremetal/arm/entrypoints.txt
@@ -947,3 +947,947 @@ 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 472792e48fa01..43e713ede585b 100644
--- a/libc/config/baremetal/riscv/entrypoints.txt
+++ b/libc/config/baremetal/riscv/entrypoints.txt
@@ -942,3 +942,945 @@ 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 051ab45f450fa..082afc196356d 100644
--- a/libc/config/darwin/aarch64/entrypoints.txt
+++ b/libc/config/darwin/aarch64/entrypoints.txt
@@ -748,3 +748,751 @@ 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 a65b6f0274fd8..c8a22b8aaf25c 100644
--- a/libc/config/gpu/amdgpu/entrypoints.txt
+++ b/libc/config/gpu/amdgpu/entrypoints.txt
@@ -693,3 +693,697 @@ 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 fee0038c88cc0..c557b751c5b6e 100644
--- a/libc/config/gpu/nvptx/entrypoints.txt
+++ b/libc/config/gpu/nvptx/entrypoints.txt
@@ -695,3 +695,699 @@ 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 bdca0baf478c7..609e85bebc9d6 100644
--- a/libc/config/linux/aarch64/entrypoints.txt
+++ b/libc/config/linux/aarch64/entrypoints.txt
@@ -1194,3 +1194,1188 @@ set(TARGET_LLVMLIBC_ENTRYPOINTS
   ${TARGET_LIBM_ENTRYPOINTS}
   ${TARGET_LIBMVEC_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 3d3e77d826b06..9c298499fda36 100644
--- a/libc/config/linux/arm/entrypoints.txt
+++ b/libc/config/linux/arm/entrypoints.txt
@@ -538,3 +538,541 @@ 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 13343dea76fe3..7c0eee0a1f1e2 100644
--- a/libc/config/linux/riscv/entrypoints.txt
+++ b/libc/config/linux/riscv/entrypoints.txt
@@ -1332,3 +1332,1335 @@ 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 24df7e63e3ebf..1ae4f0f31cbb0 100644
--- a/libc/config/linux/x86_64/entrypoints.txt
+++ b/libc/config/linux/x86_64/entrypoints.txt
@@ -1416,3 +1416,1406 @@ set(TARGET_LLVMLIBC_ENTRYPOINTS
   ${TARGET_LIBM_ENTRYPOINTS}
   ${TARGET_LIBMVEC_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 f777fc6c94bc2..7f5913a1cce3c 100644
--- a/libc/config/windows/entrypoints.txt
+++ b/libc/config/windows/entrypoints.txt
@@ -384,3 +384,388 @@ set(TARGET_LLVMLIBC_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 e617950368994..21620d9cf89da 100644
--- a/libc/src/math/CMakeLists.txt
+++ b/libc/src/math/CMakeLists.txt
@@ -645,3 +645,649 @@ 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 418cf85b84a20..9f31dc934da46 100644
--- a/libc/src/math/generic/CMakeLists.txt
+++ b/libc/src/math/generic/CMakeLists.txt
@@ -4361,6 +4361,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 73b5ebf5a856e..82fdc874b36f5 100644
--- a/libc/test/src/math/CMakeLists.txt
+++ b/libc/test/src/math/CMakeLists.txt
@@ -3501,3 +3501,3485 @@ 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 3d52873c40bb8..92a8ccbd6f6da 100644
--- a/libc/test/src/math/smoke/CMakeLists.txt
+++ b/libc/test/src/math/smoke/CMakeLists.txt
@@ -6487,6 +6487,6537 @@ add_fp_unittest(
 )
 
 
+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
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 a3d72527fb8d824757a4f283f1139159a49ef4de Mon Sep 17 00:00:00 2001
From: Sukumarsawant <sawantsukumar at gmail.com>
Date: Mon, 9 Feb 2026 18:46:46 +0530
Subject: [PATCH 2/4] chore: resolved conflicts with add_sub

crlf-lf 2

crlf-lf

crlf->lf 4

crl->lf 5

other than smoke test

added exhaustive tests for fmabf16 (<2^32)

lf issue fixed

lf2

fixing CMAKE errors

unsigned int

shifting to only checking +0 and -0 along with -x*y

testing for special num

syn err

testing terney for bfloat16-bfloat16

removed -x*y test ( to be added )

EOF

test edit rm

chceking if its time limit constrain for ubuntu 24.04 ( reduced to 2^16)

continued prev

github CI passes for single bf16 input space - testing for 2 + 1 fixed

reducing the input space while checking proper cases at the same time + adding into math website

formatted

uint32_t error fixed ( declar at top or static cast )

testin without Normal range

test

only for limited exhaust

test

testing for max/min normal + special

checking if adding condn for that specific test helps

testing with all together ~ 2^20 input spc

2^17

testing for 2

 0 err

final commit before PR

if change 1 needed

+0 -0 condn needed as gives output sign mismatch

format

formatted acc to gitac

line-space

shifted (norm,norm,INF) condn + moved Bfloat16 *= operator

fixed a blank space

[CHANGE] some nits and constexpr

fixed math index.rst reflecting bfloat support for fma

removed static

formatted

ordered CMAKE according to entrypoints (only reordered for fmabf16 ) + redundancy removed

formatted

reflected requested changes & added exhaustive test

entrypoints conflicts resolved

conflicts
---
 libc/config/baremetal/aarch64/entrypoints.txt |  932 ---
 libc/config/baremetal/arm/entrypoints.txt     |  943 ---
 libc/config/baremetal/riscv/entrypoints.txt   |  941 ---
 libc/config/darwin/aarch64/entrypoints.txt    |  747 --
 libc/config/darwin/x86_64/entrypoints.txt     |  622 +-
 libc/config/gpu/amdgpu/entrypoints.txt        |  693 --
 libc/config/gpu/nvptx/entrypoints.txt         |  695 --
 libc/config/linux/aarch64/entrypoints.txt     | 1186 +--
 libc/config/linux/arm/entrypoints.txt         |  537 --
 libc/config/linux/riscv/entrypoints.txt       | 1331 ----
 libc/config/linux/x86_64/entrypoints.txt      | 1404 +---
 libc/config/windows/entrypoints.txt           |  384 -
 libc/docs/headers/math/index.rst              |    2 +-
 libc/src/__support/FPUtil/generic/FMA.h       |    7 +-
 libc/src/math/CMakeLists.txt                  |  647 +-
 libc/src/math/ffmal.h                         |   40 +-
 libc/src/math/generic/CMakeLists.txt          |   22 +-
 libc/src/math/generic/fmabf16.cpp             |    2 +-
 libc/test/src/math/CMakeLists.txt             | 3496 +--------
 libc/test/src/math/bf16mul_test.cpp           |   30 +-
 libc/test/src/math/exhaustive/CMakeLists.txt  |   17 +
 .../test/src/math/exhaustive/fmabf16_test.cpp |  105 +
 libc/test/src/math/fmabf16_test.cpp           |   95 +-
 libc/test/src/math/smoke/CMakeLists.txt       | 6544 +----------------
 libc/utils/MPFRWrapper/MPFRUtils.cpp          |    5 +
 25 files changed, 588 insertions(+), 20839 deletions(-)
 create mode 100644 libc/test/src/math/exhaustive/fmabf16_test.cpp

diff --git a/libc/config/baremetal/aarch64/entrypoints.txt b/libc/config/baremetal/aarch64/entrypoints.txt
index 32d8201d9c53c..6564999e22455 100644
--- a/libc/config/baremetal/aarch64/entrypoints.txt
+++ b/libc/config/baremetal/aarch64/entrypoints.txt
@@ -399,938 +399,6 @@ set(TARGET_LIBM_ENTRYPOINTS
     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
diff --git a/libc/config/baremetal/arm/entrypoints.txt b/libc/config/baremetal/arm/entrypoints.txt
index 03dacfdc97df9..d33f00da90eaa 100644
--- a/libc/config/baremetal/arm/entrypoints.txt
+++ b/libc/config/baremetal/arm/entrypoints.txt
@@ -403,949 +403,6 @@ set(TARGET_LIBM_ENTRYPOINTS
     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
diff --git a/libc/config/baremetal/riscv/entrypoints.txt b/libc/config/baremetal/riscv/entrypoints.txt
index 43e713ede585b..8fb8df24c8274 100644
--- a/libc/config/baremetal/riscv/entrypoints.txt
+++ b/libc/config/baremetal/riscv/entrypoints.txt
@@ -398,947 +398,6 @@ set(TARGET_LIBM_ENTRYPOINTS
     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
diff --git a/libc/config/darwin/aarch64/entrypoints.txt b/libc/config/darwin/aarch64/entrypoints.txt
index 082afc196356d..16594168a72f7 100644
--- a/libc/config/darwin/aarch64/entrypoints.txt
+++ b/libc/config/darwin/aarch64/entrypoints.txt
@@ -213,753 +213,6 @@ set(TARGET_LIBM_ENTRYPOINTS
     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
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 c8a22b8aaf25c..bf5844a2d0279 100644
--- a/libc/config/gpu/amdgpu/entrypoints.txt
+++ b/libc/config/gpu/amdgpu/entrypoints.txt
@@ -339,699 +339,6 @@ set(TARGET_LIBM_ENTRYPOINTS
     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
diff --git a/libc/config/gpu/nvptx/entrypoints.txt b/libc/config/gpu/nvptx/entrypoints.txt
index c557b751c5b6e..42f96930128b8 100644
--- a/libc/config/gpu/nvptx/entrypoints.txt
+++ b/libc/config/gpu/nvptx/entrypoints.txt
@@ -339,701 +339,6 @@ set(TARGET_LIBM_ENTRYPOINTS
     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
diff --git a/libc/config/linux/aarch64/entrypoints.txt b/libc/config/linux/aarch64/entrypoints.txt
index 609e85bebc9d6..e4702a4f132f3 100644
--- a/libc/config/linux/aarch64/entrypoints.txt
+++ b/libc/config/linux/aarch64/entrypoints.txt
@@ -478,6 +478,7 @@ set(TARGET_LIBM_ENTRYPOINTS
     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
@@ -1194,1188 +1195,3 @@ set(TARGET_LLVMLIBC_ENTRYPOINTS
   ${TARGET_LIBM_ENTRYPOINTS}
   ${TARGET_LIBMVEC_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 9c298499fda36..8d5b23602c982 100644
--- a/libc/config/linux/arm/entrypoints.txt
+++ b/libc/config/linux/arm/entrypoints.txt
@@ -303,543 +303,6 @@ set(TARGET_LIBM_ENTRYPOINTS
     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
diff --git a/libc/config/linux/riscv/entrypoints.txt b/libc/config/linux/riscv/entrypoints.txt
index 7c0eee0a1f1e2..017ee5482cf0b 100644
--- a/libc/config/linux/riscv/entrypoints.txt
+++ b/libc/config/linux/riscv/entrypoints.txt
@@ -487,1337 +487,6 @@ set(TARGET_LIBM_ENTRYPOINTS
     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
diff --git a/libc/config/linux/x86_64/entrypoints.txt b/libc/config/linux/x86_64/entrypoints.txt
index 1ae4f0f31cbb0..91da16aadcb04 100644
--- a/libc/config/linux/x86_64/entrypoints.txt
+++ b/libc/config/linux/x86_64/entrypoints.txt
@@ -532,6 +532,7 @@ set(TARGET_LIBM_ENTRYPOINTS
     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
@@ -1416,1406 +1417,3 @@ set(TARGET_LLVMLIBC_ENTRYPOINTS
   ${TARGET_LIBM_ENTRYPOINTS}
   ${TARGET_LIBMVEC_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 7f5913a1cce3c..ff25130b7e09d 100644
--- a/libc/config/windows/entrypoints.txt
+++ b/libc/config/windows/entrypoints.txt
@@ -183,390 +183,6 @@ set(TARGET_LIBM_ENTRYPOINTS
     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
diff --git a/libc/docs/headers/math/index.rst b/libc/docs/headers/math/index.rst
index e8b3fe63b2a6c..4fe7bb4f81978 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/src/__support/FPUtil/generic/FMA.h b/libc/src/__support/FPUtil/generic/FMA.h
index bec312e44b1b1..9ca6d5f594c94 100644
--- a/libc/src/__support/FPUtil/generic/FMA.h
+++ b/libc/src/__support/FPUtil/generic/FMA.h
@@ -198,8 +198,13 @@ fma(InType x, InType y, InType 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();
diff --git a/libc/src/math/CMakeLists.txt b/libc/src/math/CMakeLists.txt
index 21620d9cf89da..1285890ef2f74 100644
--- a/libc/src/math/CMakeLists.txt
+++ b/libc/src/math/CMakeLists.txt
@@ -228,6 +228,7 @@ add_math_entrypoint_object(floorf128)
 add_math_entrypoint_object(floorbf16)
 
 add_math_entrypoint_object(fma)
+add_math_entrypoint_object(fmabf16)
 add_math_entrypoint_object(fmaf)
 add_math_entrypoint_object(fmaf16)
 
@@ -645,649 +646,3 @@ 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
diff --git a/libc/src/math/generic/CMakeLists.txt b/libc/src/math/generic/CMakeLists.txt
index 9f31dc934da46..77200921d982d 100644
--- a/libc/src/math/generic/CMakeLists.txt
+++ b/libc/src/math/generic/CMakeLists.txt
@@ -4362,27 +4362,27 @@ add_entrypoint_object(
 )
 
 add_entrypoint_object(
-  fmabf16
+  fma
   SRCS
-    fmabf16.cpp
+    fma.cpp
   HDRS
-    ../fmabf16.h
+    ../fma.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
+    libc.src.__support.FPUtil.fma
 )
 
 add_entrypoint_object(
-  fma
+  fmabf16
   SRCS
-    fma.cpp
+    fmabf16.cpp
   HDRS
-    ../fma.h
+    ../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(
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 {
diff --git a/libc/test/src/math/CMakeLists.txt b/libc/test/src/math/CMakeLists.txt
index 82fdc874b36f5..e8e80487de9f2 100644
--- a/libc/test/src/math/CMakeLists.txt
+++ b/libc/test/src/math/CMakeLists.txt
@@ -2012,6 +2012,20 @@ add_fp_unittest(
     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.__support.FPUtil.bfloat16
+    libc.src.math.fmabf16
+)
+
 add_fp_unittest(
   tan_test
   NEED_MPFR
@@ -3501,3485 +3515,3 @@ 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 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/exhaustive/CMakeLists.txt b/libc/test/src/math/exhaustive/CMakeLists.txt
index a21e208312c56..66c183b736d92 100644
--- a/libc/test/src/math/exhaustive/CMakeLists.txt
+++ b/libc/test/src/math/exhaustive/CMakeLists.txt
@@ -293,6 +293,23 @@ add_fp_unittest(
     -lpthread
 )
 
+add_fp_unittest(
+  fmabf16_test
+  NO_RUN_POSTBUILD
+  NEED_MPFR
+  SUITE
+    libc_math_exhaustive_tests
+  SRCS
+    fmabf16_test.cpp
+  DEPENDS
+    .exhaustive_test
+    libc.src.math.fmabf16
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.bfloat16
+  LINK_LIBRARIES
+    -lpthread
+)
+
 add_fp_unittest(
   logf_test
   NO_RUN_POSTBUILD
diff --git a/libc/test/src/math/exhaustive/fmabf16_test.cpp b/libc/test/src/math/exhaustive/fmabf16_test.cpp
new file mode 100644
index 0000000000000..dce60d0594108
--- /dev/null
+++ b/libc/test/src/math/exhaustive/fmabf16_test.cpp
@@ -0,0 +1,105 @@
+//===-- 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;
+
+// Normal range: [+0, +int]
+static constexpr uint16_t POS_START = 0x0000U;
+static constexpr uint16_t POS_STOP = 0x7f80U;
+
+// Normal range: [-0, -int]
+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;
+
+TEST_F(LlvmLibcFmaBf16Test, NormalPositiveRange) {
+  constexpr bfloat16 VALUES[] = {zero,    neg_zero,   inf,
+                                 neg_inf, min_normal, max_normal};
+  for (uint16_t v1 = POS_START; v1 <= POS_STOP; v1++) {
+    for (uint16_t v2 = v1; v2 <= POS_STOP; v2++) {
+
+      bfloat16 x = FPBits(v1).get_val();
+      bfloat16 y = FPBits(v2).get_val();
+      for (const bfloat16 &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);
+      }
+    }
+  }
+}
+
+TEST_F(LlvmLibcFmaBf16Test, NormalNegativeRange) {
+  constexpr bfloat16 VALUES[] = {zero,    neg_zero,   inf,
+                                 neg_inf, min_normal, max_normal};
+  for (uint16_t v1 = NEG_START; v1 <= NEG_STOP; v1++) {
+    for (uint16_t v2 = v1; v2 <= NEG_STOP; v2++) {
+
+      bfloat16 x = FPBits(v1).get_val();
+      bfloat16 y = FPBits(v2).get_val();
+      for (const bfloat16 &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);
+      }
+    }
+  }
+}
+
+TEST_F(LlvmLibcFmaBf16Test, SubnormalNegativeRange) {
+  constexpr bfloat16 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 = v1; v2 <= SUBNORM_NEG_STOP; v2++) {
+
+      bfloat16 x = FPBits(v1).get_val();
+      bfloat16 y = FPBits(v2).get_val();
+      for (const bfloat16 &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);
+      }
+    }
+  }
+}
+
+TEST_F(LlvmLibcFmaBf16Test, SubnormalPositiveRange) {
+  constexpr bfloat16 VALUES[] = {zero,    neg_zero,   inf,
+                                 neg_inf, min_normal, max_normal};
+  for (uint16_t v1 = SUBNORM_POS_START; v1 <= SUBNORM_POS_STOP; v1++) {
+    for (uint16_t v2 = v1; v2 <= SUBNORM_POS_STOP; v2++) {
+
+      bfloat16 x = FPBits(v1).get_val();
+      bfloat16 y = FPBits(v2).get_val();
+      for (const bfloat16 &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);
+      }
+    }
+  }
+}
diff --git a/libc/test/src/math/fmabf16_test.cpp b/libc/test/src/math/fmabf16_test.cpp
index ae01948c21ca5..4b7a9e90b7226 100644
--- a/libc/test/src/math/fmabf16_test.cpp
+++ b/libc/test/src/math/fmabf16_test.cpp
@@ -1,29 +1,66 @@
-// //===-- 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);
-//   }
-// }
+//===-- 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;
+
+// subnormal range (negative)
+static constexpr uint16_t SUBNORM_NEG_START = 0x8001U;
+static constexpr uint16_t SUBNORM_NEG_STOP = 0x807FU;
+
+TEST_F(LlvmLibcFmaBf16Test, SubnormalNegativeRange) {
+  constexpr 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 = v1; v2 <= SUBNORM_NEG_STOP; v2++) {
+
+      bfloat16 x = FPBits(v1).get_val();
+      bfloat16 y = FPBits(v2).get_val();
+      for (const 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);
+      }
+      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, neg_xy),
+                                     0.5);
+    }
+  }
+}
+
+TEST_F(LlvmLibcFmaBf16Test, SpecialNumbers) {
+  constexpr bfloat16 VALUES[] = {zero,    neg_zero,   inf,
+                                 neg_inf, min_normal, max_normal};
+  for (size_t i = 0; i < 6; ++i) {
+    for (size_t j = i; j < 6; ++j) {
+      bfloat16 x = VALUES[i];
+      bfloat16 y = VALUES[j];
+      for (const bfloat16 &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);
+      }
+      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, neg_xy),
+                                     0.5);
+    }
+  }
+}
diff --git a/libc/test/src/math/smoke/CMakeLists.txt b/libc/test/src/math/smoke/CMakeLists.txt
index 92a8ccbd6f6da..b2d2e33fa5128 100644
--- a/libc/test/src/math/smoke/CMakeLists.txt
+++ b/libc/test/src/math/smoke/CMakeLists.txt
@@ -4281,6 +4281,19 @@ add_fp_unittest(
     libc.src.__support.macros.properties.types
 )
 
+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(
   expm1_test
   SUITE
@@ -6487,6537 +6500,6 @@ add_fp_unittest(
 )
 
 
-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
diff --git a/libc/utils/MPFRWrapper/MPFRUtils.cpp b/libc/utils/MPFRWrapper/MPFRUtils.cpp
index a7d307b47c3e8..4c5c891bcfe9a 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,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<float> &,
                                                    bfloat16, double,

>From 0b64c4896e1682b81864c1f7be9b7b911efd6d45 Mon Sep 17 00:00:00 2001
From: Sukumarsawant <sawantsukumar at gmail.com>
Date: Tue, 10 Mar 2026 13:22:15 +0530
Subject: [PATCH 3/4] chore: make the function header-only

cmake

removed

removed

clang
---
 libc/shared/math.h                            |   1 +
 libc/shared/math/fmabf16.h                    |  23 ++++
 libc/src/__support/math/CMakeLists.txt        |  11 ++
 libc/src/__support/math/fmabf16.h             |  27 +++++
 libc/src/math/generic/CMakeLists.txt          |   6 +-
 libc/src/math/generic/fmabf16.cpp             |   7 +-
 libc/test/shared/CMakeLists.txt               |   1 +
 libc/test/shared/shared_math_test.cpp         |   3 +
 libc/test/src/math/CMakeLists.txt             |   9 +-
 libc/test/src/math/exhaustive/CMakeLists.txt  |  17 ---
 .../test/src/math/exhaustive/fmabf16_test.cpp | 105 ------------------
 libc/test/src/math/fmabf16_test.cpp           |   2 +-
 libc/test/src/math/smoke/CMakeLists.txt       |   1 +
 .../llvm-project-overlay/libc/BUILD.bazel     |  18 +++
 14 files changed, 93 insertions(+), 138 deletions(-)
 create mode 100644 libc/shared/math/fmabf16.h
 create mode 100644 libc/src/__support/math/fmabf16.h
 delete mode 100644 libc/test/src/math/exhaustive/fmabf16_test.cpp

diff --git a/libc/shared/math.h b/libc/shared/math.h
index ede0ebd5371ac..bd70a8335a96f 100644
--- a/libc/shared/math.h
+++ b/libc/shared/math.h
@@ -132,6 +132,7 @@
 #include "math/floorf128.h"
 #include "math/floorf16.h"
 #include "math/floorl.h"
+#include "math/fmabf16.h"
 #include "math/fmax.h"
 #include "math/fmaxbf16.h"
 #include "math/fmaxf.h"
diff --git a/libc/shared/math/fmabf16.h b/libc/shared/math/fmabf16.h
new file mode 100644
index 0000000000000..c9c467706c1c7
--- /dev/null
+++ b/libc/shared/math/fmabf16.h
@@ -0,0 +1,23 @@
+//===-- Shared fmabf16 function ---------------------------------*- 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_SHARED_MATH_FMABF16_H
+#define LLVM_LIBC_SHARED_MATH_FMABF16_H
+
+#include "shared/libc_common.h"
+#include "src/__support/math/fmabf16.h"
+
+namespace LIBC_NAMESPACE_DECL {
+namespace shared {
+
+using math::fmabf16;
+
+} // namespace shared
+} // namespace LIBC_NAMESPACE_DECL
+
+#endif // LLVM_LIBC_SHARED_MATH_FMABF16_H
diff --git a/libc/src/__support/math/CMakeLists.txt b/libc/src/__support/math/CMakeLists.txt
index 0df8262cfb5f2..edf4d7635d85e 100644
--- a/libc/src/__support/math/CMakeLists.txt
+++ b/libc/src/__support/math/CMakeLists.txt
@@ -1235,6 +1235,17 @@ add_header_library(
     libc.src.__support.macros.config
 )
 
+add_header_library(
+  fmabf16
+  HDRS
+    fmabf16.h
+  DEPENDS
+    libc.src.__support.FPUtil.fma
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.common
+    libc.src.__support.macros.config
+)
+
 add_header_library(
   floor
   HDRS
diff --git a/libc/src/__support/math/fmabf16.h b/libc/src/__support/math/fmabf16.h
new file mode 100644
index 0000000000000..f69de4bbd9842
--- /dev/null
+++ b/libc/src/__support/math/fmabf16.h
@@ -0,0 +1,27 @@
+//===-- 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___SUPPORT_MATH_FMABF16_H
+#define LLVM_LIBC_SRC___SUPPORT_MATH_FMABF16_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 {
+namespace math {
+
+LIBC_INLINE bfloat16 fmabf16(bfloat16 x, bfloat16 y, bfloat16 z) {
+  return fputil::fma<bfloat16>(x, y, z);
+}
+
+} // namespace math
+} // namespace LIBC_NAMESPACE_DECL
+
+#endif // LLVM_LIBC_SRC___SUPPORT_MATH_FMAXBF16_H
diff --git a/libc/src/math/generic/CMakeLists.txt b/libc/src/math/generic/CMakeLists.txt
index 77200921d982d..d6a2091d819f5 100644
--- a/libc/src/math/generic/CMakeLists.txt
+++ b/libc/src/math/generic/CMakeLists.txt
@@ -4378,11 +4378,7 @@ add_entrypoint_object(
   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
+    libc.src.__support.math.fmabf16
 )
 
 add_entrypoint_object(
diff --git a/libc/src/math/generic/fmabf16.cpp b/libc/src/math/generic/fmabf16.cpp
index ab221dd19ac8d..495817ce1bd6d 100644
--- a/libc/src/math/generic/fmabf16.cpp
+++ b/libc/src/math/generic/fmabf16.cpp
@@ -7,15 +7,12 @@
 //===----------------------------------------------------------------------===//
 
 #include "src/math/fmabf16.h"
-#include "src/__support/FPUtil/FMA.h"
-#include "src/__support/FPUtil/bfloat16.h"
-#include "src/__support/common.h"
-#include "src/__support/macros/config.h"
+#include "src/__support/math/fmabf16.h"
 
 namespace LIBC_NAMESPACE_DECL {
 
 LLVM_LIBC_FUNCTION(bfloat16, fmabf16, (bfloat16 x, bfloat16 y, bfloat16 z)) {
-  return fputil::fma<bfloat16>(x, y, z);
+  return math::fmabf16(x, y, z);
 }
 
 } // namespace LIBC_NAMESPACE_DECL
diff --git a/libc/test/shared/CMakeLists.txt b/libc/test/shared/CMakeLists.txt
index c90e5687d8c33..73da792b75f45 100644
--- a/libc/test/shared/CMakeLists.txt
+++ b/libc/test/shared/CMakeLists.txt
@@ -129,6 +129,7 @@ add_fp_unittest(
     libc.src.__support.math.floorf128
     libc.src.__support.math.floorf16
     libc.src.__support.math.floorl
+    libc.src.__support.math.fmabf16
     libc.src.__support.math.fmax
     libc.src.__support.math.fmaxbf16
     libc.src.__support.math.fmaxf
diff --git a/libc/test/shared/shared_math_test.cpp b/libc/test/shared/shared_math_test.cpp
index 17045ce5edfdb..c2fa5f1eadd57 100644
--- a/libc/test/shared/shared_math_test.cpp
+++ b/libc/test/shared/shared_math_test.cpp
@@ -427,6 +427,9 @@ TEST(LlvmLibcSharedMathTest, AllBFloat16) {
   EXPECT_FP_EQ(bfloat16(0.0), LIBC_NAMESPACE::shared::floorbf16(bfloat16(0.0)));
   EXPECT_FP_EQ(bfloat16(0.0),
                LIBC_NAMESPACE::shared::fdimbf16(bfloat16(0.0), bfloat16(0.0)));
+  EXPECT_FP_EQ(bfloat16(10.0),
+               LIBC_NAMESPACE::shared::fmabf16(bfloat16(2.0), bfloat16(3.0),
+                                               bfloat16(4.0)));
   EXPECT_FP_EQ(bfloat16(0.0),
                LIBC_NAMESPACE::shared::fmaxbf16(bfloat16(0.0), bfloat16(0.0)));
 
diff --git a/libc/test/src/math/CMakeLists.txt b/libc/test/src/math/CMakeLists.txt
index e8e80487de9f2..a36538775d7d9 100644
--- a/libc/test/src/math/CMakeLists.txt
+++ b/libc/test/src/math/CMakeLists.txt
@@ -2013,17 +2013,16 @@ add_fp_unittest(
 )
 
 add_fp_unittest(
-  fma_test
+  fmabf16_test
   NEED_MPFR
   SUITE
     libc-math-unittests
   SRCS
-    fma_test.cpp
-  HDRS
-    FmaTest.h
+    fmabf16_test.cpp
   DEPENDS
-    libc.src.__support.FPUtil.bfloat16
     libc.src.math.fmabf16
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.bfloat16
 )
 
 add_fp_unittest(
diff --git a/libc/test/src/math/exhaustive/CMakeLists.txt b/libc/test/src/math/exhaustive/CMakeLists.txt
index 66c183b736d92..a21e208312c56 100644
--- a/libc/test/src/math/exhaustive/CMakeLists.txt
+++ b/libc/test/src/math/exhaustive/CMakeLists.txt
@@ -293,23 +293,6 @@ add_fp_unittest(
     -lpthread
 )
 
-add_fp_unittest(
-  fmabf16_test
-  NO_RUN_POSTBUILD
-  NEED_MPFR
-  SUITE
-    libc_math_exhaustive_tests
-  SRCS
-    fmabf16_test.cpp
-  DEPENDS
-    .exhaustive_test
-    libc.src.math.fmabf16
-    libc.src.__support.FPUtil.fp_bits
-    libc.src.__support.FPUtil.bfloat16
-  LINK_LIBRARIES
-    -lpthread
-)
-
 add_fp_unittest(
   logf_test
   NO_RUN_POSTBUILD
diff --git a/libc/test/src/math/exhaustive/fmabf16_test.cpp b/libc/test/src/math/exhaustive/fmabf16_test.cpp
deleted file mode 100644
index dce60d0594108..0000000000000
--- a/libc/test/src/math/exhaustive/fmabf16_test.cpp
+++ /dev/null
@@ -1,105 +0,0 @@
-//===-- 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;
-
-// Normal range: [+0, +int]
-static constexpr uint16_t POS_START = 0x0000U;
-static constexpr uint16_t POS_STOP = 0x7f80U;
-
-// Normal range: [-0, -int]
-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;
-
-TEST_F(LlvmLibcFmaBf16Test, NormalPositiveRange) {
-  constexpr bfloat16 VALUES[] = {zero,    neg_zero,   inf,
-                                 neg_inf, min_normal, max_normal};
-  for (uint16_t v1 = POS_START; v1 <= POS_STOP; v1++) {
-    for (uint16_t v2 = v1; v2 <= POS_STOP; v2++) {
-
-      bfloat16 x = FPBits(v1).get_val();
-      bfloat16 y = FPBits(v2).get_val();
-      for (const bfloat16 &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);
-      }
-    }
-  }
-}
-
-TEST_F(LlvmLibcFmaBf16Test, NormalNegativeRange) {
-  constexpr bfloat16 VALUES[] = {zero,    neg_zero,   inf,
-                                 neg_inf, min_normal, max_normal};
-  for (uint16_t v1 = NEG_START; v1 <= NEG_STOP; v1++) {
-    for (uint16_t v2 = v1; v2 <= NEG_STOP; v2++) {
-
-      bfloat16 x = FPBits(v1).get_val();
-      bfloat16 y = FPBits(v2).get_val();
-      for (const bfloat16 &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);
-      }
-    }
-  }
-}
-
-TEST_F(LlvmLibcFmaBf16Test, SubnormalNegativeRange) {
-  constexpr bfloat16 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 = v1; v2 <= SUBNORM_NEG_STOP; v2++) {
-
-      bfloat16 x = FPBits(v1).get_val();
-      bfloat16 y = FPBits(v2).get_val();
-      for (const bfloat16 &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);
-      }
-    }
-  }
-}
-
-TEST_F(LlvmLibcFmaBf16Test, SubnormalPositiveRange) {
-  constexpr bfloat16 VALUES[] = {zero,    neg_zero,   inf,
-                                 neg_inf, min_normal, max_normal};
-  for (uint16_t v1 = SUBNORM_POS_START; v1 <= SUBNORM_POS_STOP; v1++) {
-    for (uint16_t v2 = v1; v2 <= SUBNORM_POS_STOP; v2++) {
-
-      bfloat16 x = FPBits(v1).get_val();
-      bfloat16 y = FPBits(v2).get_val();
-      for (const bfloat16 &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);
-      }
-    }
-  }
-}
diff --git a/libc/test/src/math/fmabf16_test.cpp b/libc/test/src/math/fmabf16_test.cpp
index 4b7a9e90b7226..f89016a0ab868 100644
--- a/libc/test/src/math/fmabf16_test.cpp
+++ b/libc/test/src/math/fmabf16_test.cpp
@@ -1,4 +1,4 @@
-//===-- Exhaustive test for fmabf16 ---------------------------------------===//
+//===-- Unit 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.
diff --git a/libc/test/src/math/smoke/CMakeLists.txt b/libc/test/src/math/smoke/CMakeLists.txt
index b2d2e33fa5128..d3fb57e645ba3 100644
--- a/libc/test/src/math/smoke/CMakeLists.txt
+++ b/libc/test/src/math/smoke/CMakeLists.txt
@@ -4292,6 +4292,7 @@ add_fp_unittest(
   DEPENDS
     libc.src.math.fmabf16
     libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.FPUtil.fp_bits
 )
 
 add_fp_unittest(
diff --git a/utils/bazel/llvm-project-overlay/libc/BUILD.bazel b/utils/bazel/llvm-project-overlay/libc/BUILD.bazel
index c4ce8adee3e47..3bf8de6bfabb4 100644
--- a/utils/bazel/llvm-project-overlay/libc/BUILD.bazel
+++ b/utils/bazel/llvm-project-overlay/libc/BUILD.bazel
@@ -3991,6 +3991,17 @@ libc_support_library(
     ],
 )
 
+libc_support_library(
+    name = "__support_math_fmabf16",
+    hdrs = ["src/__support/math/fmabf16.h"],
+    deps = [
+        ":__support_common",
+        ":__support_fputil_bfloat16",
+        ":__support_fputil_fma",
+        ":__support_macros_config",
+    ],
+)
+
 libc_support_library(
     name = "__support_math_fmax",
     hdrs = ["src/__support/math/fmax.h"],
@@ -6774,6 +6785,13 @@ libc_math_function(
     ],
 )
 
+libc_math_function(
+    name = "fmabf16",
+    additional_deps = [
+        ":__support_math_fmabf16",
+    ],
+)
+
 libc_math_function(
     name = "fmax",
     additional_deps = [

>From a9ac1763343d7d64993c17efe5f44ba776b6ae67 Mon Sep 17 00:00:00 2001
From: Sukumarsawant <sawantsukumar at gmail.com>
Date: Tue, 10 Mar 2026 14:29:23 +0530
Subject: [PATCH 4/4] feat: added Exhaustive tests for fmabf16

feat: added Exhaustive tests for fmabf16

clang
---
 libc/test/src/math/exhaustive/CMakeLists.txt  | 17 ++++++
 .../test/src/math/exhaustive/fmabf16_test.cpp | 61 +++++++++++++++++++
 2 files changed, 78 insertions(+)
 create mode 100644 libc/test/src/math/exhaustive/fmabf16_test.cpp

diff --git a/libc/test/src/math/exhaustive/CMakeLists.txt b/libc/test/src/math/exhaustive/CMakeLists.txt
index a21e208312c56..66c183b736d92 100644
--- a/libc/test/src/math/exhaustive/CMakeLists.txt
+++ b/libc/test/src/math/exhaustive/CMakeLists.txt
@@ -293,6 +293,23 @@ add_fp_unittest(
     -lpthread
 )
 
+add_fp_unittest(
+  fmabf16_test
+  NO_RUN_POSTBUILD
+  NEED_MPFR
+  SUITE
+    libc_math_exhaustive_tests
+  SRCS
+    fmabf16_test.cpp
+  DEPENDS
+    .exhaustive_test
+    libc.src.math.fmabf16
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.bfloat16
+  LINK_LIBRARIES
+    -lpthread
+)
+
 add_fp_unittest(
   logf_test
   NO_RUN_POSTBUILD
diff --git a/libc/test/src/math/exhaustive/fmabf16_test.cpp b/libc/test/src/math/exhaustive/fmabf16_test.cpp
new file mode 100644
index 0000000000000..3c5fec1bcbb34
--- /dev/null
+++ b/libc/test/src/math/exhaustive/fmabf16_test.cpp
@@ -0,0 +1,61 @@
+//===-- 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;
+
+// Normal range: [+0, +int]
+static constexpr uint16_t POS_START = 0x0000U;
+static constexpr uint16_t POS_STOP = 0x7f80U;
+
+// Normal range: [-0, -int]
+static constexpr uint16_t NEG_START = 0x8000U;
+static constexpr uint16_t NEG_STOP = 0xff80U;
+
+TEST_F(LlvmLibcFmaBf16Test, PositiveRange) {
+  constexpr bfloat16 VALUES[] = {zero,    neg_zero,   inf,
+                                 neg_inf, min_normal, max_normal};
+  for (uint16_t v1 = POS_START; v1 <= POS_STOP; v1++) {
+    for (uint16_t v2 = v1; v2 <= POS_STOP; v2++) {
+
+      bfloat16 x = FPBits(v1).get_val();
+      bfloat16 y = FPBits(v2).get_val();
+      for (const bfloat16 &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);
+      }
+    }
+  }
+}
+
+TEST_F(LlvmLibcFmaBf16Test, NegativeRange) {
+  constexpr bfloat16 VALUES[] = {zero,    neg_zero,   inf,
+                                 neg_inf, min_normal, max_normal};
+  for (uint16_t v1 = NEG_START; v1 <= NEG_STOP; v1++) {
+    for (uint16_t v2 = v1; v2 <= NEG_STOP; v2++) {
+
+      bfloat16 x = FPBits(v1).get_val();
+      bfloat16 y = FPBits(v2).get_val();
+      for (const bfloat16 &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);
+      }
+    }
+  }
+}



More information about the llvm-commits mailing list