[libc-commits] [libc] e312add - [libc] Modify NaN/payload functions for emulated float128 type (#221946)
via libc-commits
libc-commits at lists.llvm.org
Sat Oct 24 13:18:16 PDT 2026
Author: Popie
Date: 2026-10-24T20:18:09Z
New Revision: e312addd710b80a4dd14389b71c649594fccedd0
URL: https://github.com/llvm/llvm-project/commit/e312addd710b80a4dd14389b71c649594fccedd0
DIFF: https://github.com/llvm/llvm-project/commit/e312addd710b80a4dd14389b71c649594fccedd0.diff
LOG: [libc] Modify NaN/payload functions for emulated float128 type (#221946)
Updated `nanf128`, `getpayloadf128`, `setpayloadf128`, and
`setpayloadsigf128` for emulated `float128`, including shared headers,
entrypoints, CMake/Bazel dependencies, wrappers, and tests.
closes #221574
Added:
Modified:
libc/config/baremetal/aarch64/entrypoints.txt
libc/config/baremetal/arm/entrypoints.txt
libc/config/baremetal/riscv/entrypoints.txt
libc/config/darwin/aarch64/entrypoints.txt
libc/config/freebsd/x86_64/entrypoints.txt
libc/config/gpu/amdgpu/entrypoints.txt
libc/config/gpu/nvptx/entrypoints.txt
libc/config/linux/aarch64/entrypoints.txt
libc/config/linux/arm/entrypoints.txt
libc/config/linux/riscv/entrypoints.txt
libc/config/linux/x86_64/entrypoints.txt
libc/config/windows/entrypoints.txt
libc/shared/math/getpayloadf128.h
libc/shared/math/nanf128.h
libc/shared/math/setpayloadf128.h
libc/shared/math/setpayloadsigf128.h
libc/src/__support/math/CMakeLists.txt
libc/src/__support/math/getpayloadf128.h
libc/src/__support/math/nanf128.h
libc/src/__support/math/setpayloadf128.h
libc/src/__support/math/setpayloadsigf128.h
libc/src/math/generic/CMakeLists.txt
libc/src/math/generic/getpayloadf128.cpp
libc/src/math/generic/nanf128.cpp
libc/src/math/generic/setpayloadf128.cpp
libc/src/math/generic/setpayloadsigf128.cpp
libc/src/math/getpayloadf128.h
libc/src/math/nanf128.h
libc/src/math/setpayloadf128.h
libc/src/math/setpayloadsigf128.h
libc/test/shared/CMakeLists.txt
libc/test/shared/shared_math_constexpr_test.cpp
libc/test/shared/shared_math_test.cpp
libc/test/src/math/smoke/CMakeLists.txt
libc/test/src/math/smoke/getpayloadf128_test.cpp
libc/test/src/math/smoke/nanf128_test.cpp
libc/test/src/math/smoke/setpayloadf128_test.cpp
libc/test/src/math/smoke/setpayloadsigf128_test.cpp
utils/bazel/llvm-project-overlay/libc/BUILD.bazel
utils/bazel/llvm-project-overlay/libc/test/src/math/smoke/BUILD.bazel
Removed:
################################################################################
diff --git a/libc/config/baremetal/aarch64/entrypoints.txt b/libc/config/baremetal/aarch64/entrypoints.txt
index 7ec212d8709692..0202bc7a2dc56b 100644
--- a/libc/config/baremetal/aarch64/entrypoints.txt
+++ b/libc/config/baremetal/aarch64/entrypoints.txt
@@ -486,6 +486,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fsubl
libc.src.math.getpayload
libc.src.math.getpayloadf
+ libc.src.math.getpayloadf128
libc.src.math.getpayloadl
libc.src.math.hypot
libc.src.math.hypotf
@@ -543,6 +544,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.modfl
libc.src.math.nan
libc.src.math.nanf
+ libc.src.math.nanf128
libc.src.math.nanl
libc.src.math.nearbyint
libc.src.math.nearbyintf
@@ -588,9 +590,11 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.scalbnl
libc.src.math.setpayload
libc.src.math.setpayloadf
+ libc.src.math.setpayloadf128
libc.src.math.setpayloadl
libc.src.math.setpayloadsig
libc.src.math.setpayloadsigf
+ libc.src.math.setpayloadsigf128
libc.src.math.setpayloadsigl
libc.src.math.sin
libc.src.math.sincos
@@ -782,13 +786,11 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.fromfpxf128
libc.src.math.fsqrtf128
libc.src.math.fsubf128
- libc.src.math.getpayloadf128
libc.src.math.ilogbf128
libc.src.math.ldexpf128
libc.src.math.llogbf128
libc.src.math.logbf128
libc.src.math.modff128
- libc.src.math.nanf128
libc.src.math.nextafterf128
libc.src.math.nextdownf128
libc.src.math.nextupf128
@@ -796,8 +798,6 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.remquof128
libc.src.math.scalblnf128
libc.src.math.scalbnf128
- libc.src.math.setpayloadf128
- libc.src.math.setpayloadsigf128
libc.src.math.totalorderf128
libc.src.math.totalordermagf128
libc.src.math.ufromfpf128
diff --git a/libc/config/baremetal/arm/entrypoints.txt b/libc/config/baremetal/arm/entrypoints.txt
index 779d9fc23b28e8..b7322502d570d4 100644
--- a/libc/config/baremetal/arm/entrypoints.txt
+++ b/libc/config/baremetal/arm/entrypoints.txt
@@ -498,6 +498,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fsubl
libc.src.math.getpayload
libc.src.math.getpayloadf
+ libc.src.math.getpayloadf128
libc.src.math.getpayloadl
libc.src.math.hypot
libc.src.math.hypotf
@@ -555,6 +556,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.modfl
libc.src.math.nan
libc.src.math.nanf
+ libc.src.math.nanf128
libc.src.math.nanl
libc.src.math.nearbyint
libc.src.math.nearbyintf
@@ -600,9 +602,11 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.scalbnl
libc.src.math.setpayload
libc.src.math.setpayloadf
+ libc.src.math.setpayloadf128
libc.src.math.setpayloadl
libc.src.math.setpayloadsig
libc.src.math.setpayloadsigf
+ libc.src.math.setpayloadsigf128
libc.src.math.setpayloadsigl
libc.src.math.sin
libc.src.math.sincos
@@ -793,13 +797,11 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.fromfpxf128
libc.src.math.fsqrtf128
libc.src.math.fsubf128
- libc.src.math.getpayloadf128
libc.src.math.ilogbf128
libc.src.math.ldexpf128
libc.src.math.llogbf128
libc.src.math.logbf128
libc.src.math.modff128
- libc.src.math.nanf128
libc.src.math.nextafterf128
libc.src.math.nextdownf128
libc.src.math.nextupf128
@@ -807,8 +809,6 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.remquof128
libc.src.math.scalblnf128
libc.src.math.scalbnf128
- libc.src.math.setpayloadf128
- libc.src.math.setpayloadsigf128
libc.src.math.totalorderf128
libc.src.math.totalordermagf128
libc.src.math.ufromfpf128
diff --git a/libc/config/baremetal/riscv/entrypoints.txt b/libc/config/baremetal/riscv/entrypoints.txt
index b847a2bb1f47f0..7e68a3c374249d 100644
--- a/libc/config/baremetal/riscv/entrypoints.txt
+++ b/libc/config/baremetal/riscv/entrypoints.txt
@@ -489,6 +489,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fsubl
libc.src.math.getpayload
libc.src.math.getpayloadf
+ libc.src.math.getpayloadf128
libc.src.math.getpayloadl
libc.src.math.hypot
libc.src.math.hypotf
@@ -546,6 +547,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.modfl
libc.src.math.nan
libc.src.math.nanf
+ libc.src.math.nanf128
libc.src.math.nanl
libc.src.math.nearbyint
libc.src.math.nearbyintf
@@ -591,9 +593,11 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.scalbnl
libc.src.math.setpayload
libc.src.math.setpayloadf
+ libc.src.math.setpayloadf128
libc.src.math.setpayloadl
libc.src.math.setpayloadsig
libc.src.math.setpayloadsigf
+ libc.src.math.setpayloadsigf128
libc.src.math.setpayloadsigl
libc.src.math.sin
libc.src.math.sincos
@@ -785,13 +789,11 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.fromfpxf128
libc.src.math.fsqrtf128
libc.src.math.fsubf128
- libc.src.math.getpayloadf128
libc.src.math.ilogbf128
libc.src.math.ldexpf128
libc.src.math.llogbf128
libc.src.math.logbf128
libc.src.math.modff128
- libc.src.math.nanf128
libc.src.math.nextafterf128
libc.src.math.nextdownf128
libc.src.math.nextupf128
@@ -799,8 +801,6 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.remquof128
libc.src.math.scalblnf128
libc.src.math.scalbnf128
- libc.src.math.setpayloadf128
- libc.src.math.setpayloadsigf128
libc.src.math.totalorderf128
libc.src.math.totalordermagf128
libc.src.math.ufromfpf128
diff --git a/libc/config/darwin/aarch64/entrypoints.txt b/libc/config/darwin/aarch64/entrypoints.txt
index 5600b82ad3410b..c0ce5870c862ec 100644
--- a/libc/config/darwin/aarch64/entrypoints.txt
+++ b/libc/config/darwin/aarch64/entrypoints.txt
@@ -307,6 +307,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fsubl
libc.src.math.getpayload
libc.src.math.getpayloadf
+ libc.src.math.getpayloadf128
libc.src.math.getpayloadl
libc.src.math.hypot
libc.src.math.hypotf
@@ -364,6 +365,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.modfl
libc.src.math.nan
libc.src.math.nanf
+ libc.src.math.nanf128
libc.src.math.nanl
libc.src.math.nearbyint
libc.src.math.nearbyintf
@@ -409,9 +411,11 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.scalbnl
libc.src.math.setpayload
libc.src.math.setpayloadf
+ libc.src.math.setpayloadf128
libc.src.math.setpayloadl
libc.src.math.setpayloadsig
libc.src.math.setpayloadsigf
+ libc.src.math.setpayloadsigf128
libc.src.math.setpayloadsigl
libc.src.math.sin
libc.src.math.sincos
@@ -604,13 +608,11 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.fromfpxf128
libc.src.math.fsqrtf128
libc.src.math.fsubf128
- libc.src.math.getpayloadf128
libc.src.math.ilogbf128
libc.src.math.ldexpf128
libc.src.math.llogbf128
libc.src.math.logbf128
libc.src.math.modff128
- libc.src.math.nanf128
libc.src.math.nextafterf128
libc.src.math.nextdownf128
libc.src.math.nextupf128
@@ -618,8 +620,6 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.remquof128
libc.src.math.scalblnf128
libc.src.math.scalbnf128
- libc.src.math.setpayloadf128
- libc.src.math.setpayloadsigf128
libc.src.math.totalorderf128
libc.src.math.totalordermagf128
libc.src.math.ufromfpf128
diff --git a/libc/config/freebsd/x86_64/entrypoints.txt b/libc/config/freebsd/x86_64/entrypoints.txt
index 8f6c178301c2f2..42d52b3ebc6c2c 100644
--- a/libc/config/freebsd/x86_64/entrypoints.txt
+++ b/libc/config/freebsd/x86_64/entrypoints.txt
@@ -267,6 +267,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.modfl
libc.src.math.nan
libc.src.math.nanf
+ libc.src.math.nanf128
libc.src.math.nanl
libc.src.math.nearbyint
libc.src.math.nearbyintf
@@ -347,6 +348,7 @@ list(APPEND TARGET_LIBM_ENTRYPOINTS
libc.src.math.fsqrtl
libc.src.math.getpayload
libc.src.math.getpayloadf
+ libc.src.math.getpayloadf128
libc.src.math.getpayloadl
libc.src.math.iscanonical
libc.src.math.iscanonicalf
@@ -371,9 +373,11 @@ list(APPEND TARGET_LIBM_ENTRYPOINTS
libc.src.math.roundevenl
libc.src.math.setpayload
libc.src.math.setpayloadf
+ libc.src.math.setpayloadf128
libc.src.math.setpayloadl
libc.src.math.setpayloadsig
libc.src.math.setpayloadsigf
+ libc.src.math.setpayloadsigf128
libc.src.math.setpayloadsigl
libc.src.math.sincos
libc.src.math.sinpif
@@ -537,13 +541,11 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.fromfpxf128
libc.src.math.fsqrtf128
libc.src.math.fsubf128
- libc.src.math.getpayloadf128
libc.src.math.ilogbf128
libc.src.math.ldexpf128
libc.src.math.llogbf128
libc.src.math.logbf128
libc.src.math.modff128
- libc.src.math.nanf128
libc.src.math.nextafterf128
libc.src.math.nextdownf128
libc.src.math.nextupf128
@@ -551,8 +553,6 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.remquof128
libc.src.math.scalblnf128
libc.src.math.scalbnf128
- libc.src.math.setpayloadf128
- libc.src.math.setpayloadsigf128
libc.src.math.totalorderf128
libc.src.math.totalordermagf128
libc.src.math.ufromfpf128
diff --git a/libc/config/gpu/amdgpu/entrypoints.txt b/libc/config/gpu/amdgpu/entrypoints.txt
index 2eaef608e9a7ac..ffbcc4b1672403 100644
--- a/libc/config/gpu/amdgpu/entrypoints.txt
+++ b/libc/config/gpu/amdgpu/entrypoints.txt
@@ -428,6 +428,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fsubl
libc.src.math.getpayload
libc.src.math.getpayloadf
+ libc.src.math.getpayloadf128
libc.src.math.getpayloadl
libc.src.math.hypot
libc.src.math.hypotf
@@ -481,6 +482,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.modfl
libc.src.math.nan
libc.src.math.nanf
+ libc.src.math.nanf128
libc.src.math.nanl
libc.src.math.nearbyint
libc.src.math.nearbyintf
@@ -526,9 +528,11 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.scalbnl
libc.src.math.setpayload
libc.src.math.setpayloadf
+ libc.src.math.setpayloadf128
libc.src.math.setpayloadl
libc.src.math.setpayloadsig
libc.src.math.setpayloadsigf
+ libc.src.math.setpayloadsigf128
libc.src.math.setpayloadsigl
libc.src.math.sin
libc.src.math.sincos
diff --git a/libc/config/gpu/nvptx/entrypoints.txt b/libc/config/gpu/nvptx/entrypoints.txt
index 79d0c733ec3c01..ff31536073543e 100644
--- a/libc/config/gpu/nvptx/entrypoints.txt
+++ b/libc/config/gpu/nvptx/entrypoints.txt
@@ -425,6 +425,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fsubl
libc.src.math.getpayload
libc.src.math.getpayloadf
+ libc.src.math.getpayloadf128
libc.src.math.getpayloadl
libc.src.math.hypot
libc.src.math.hypotf
@@ -478,6 +479,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.modfl
libc.src.math.nan
libc.src.math.nanf
+ libc.src.math.nanf128
libc.src.math.nanl
libc.src.math.nearbyint
libc.src.math.nearbyintf
@@ -523,9 +525,11 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.scalbnl
libc.src.math.setpayload
libc.src.math.setpayloadf
+ libc.src.math.setpayloadf128
libc.src.math.setpayloadl
libc.src.math.setpayloadsig
libc.src.math.setpayloadsigf
+ libc.src.math.setpayloadsigf128
libc.src.math.setpayloadsigl
libc.src.math.sin
libc.src.math.sincos
diff --git a/libc/config/linux/aarch64/entrypoints.txt b/libc/config/linux/aarch64/entrypoints.txt
index ae4d060ad2e65c..b193733a02dc5f 100644
--- a/libc/config/linux/aarch64/entrypoints.txt
+++ b/libc/config/linux/aarch64/entrypoints.txt
@@ -724,6 +724,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fsubl
libc.src.math.getpayload
libc.src.math.getpayloadf
+ libc.src.math.getpayloadf128
libc.src.math.getpayloadl
libc.src.math.hypot
libc.src.math.hypotf
@@ -781,6 +782,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.modfl
libc.src.math.nan
libc.src.math.nanf
+ libc.src.math.nanf128
libc.src.math.nanl
libc.src.math.nearbyint
libc.src.math.nearbyintf
@@ -826,9 +828,11 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.scalbnl
libc.src.math.setpayload
libc.src.math.setpayloadf
+ libc.src.math.setpayloadf128
libc.src.math.setpayloadl
libc.src.math.setpayloadsig
libc.src.math.setpayloadsigf
+ libc.src.math.setpayloadsigf128
libc.src.math.setpayloadsigl
libc.src.math.sin
libc.src.math.sincos
@@ -1014,13 +1018,11 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.fromfpxf128
libc.src.math.fsqrtf128
libc.src.math.fsubf128
- libc.src.math.getpayloadf128
libc.src.math.ilogbf128
libc.src.math.ldexpf128
libc.src.math.llogbf128
libc.src.math.logbf128
libc.src.math.modff128
- libc.src.math.nanf128
libc.src.math.nextafterf128
libc.src.math.nextdownf128
libc.src.math.nextupf128
@@ -1028,8 +1030,6 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.remquof128
libc.src.math.scalblnf128
libc.src.math.scalbnf128
- libc.src.math.setpayloadf128
- libc.src.math.setpayloadsigf128
libc.src.math.totalorderf128
libc.src.math.totalordermagf128
libc.src.math.ufromfpf128
diff --git a/libc/config/linux/arm/entrypoints.txt b/libc/config/linux/arm/entrypoints.txt
index e35ca9c7211ab3..8c7ebf61d5786d 100644
--- a/libc/config/linux/arm/entrypoints.txt
+++ b/libc/config/linux/arm/entrypoints.txt
@@ -513,6 +513,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fsubl
libc.src.math.getpayload
libc.src.math.getpayloadf
+ libc.src.math.getpayloadf128
libc.src.math.getpayloadl
libc.src.math.hypot
libc.src.math.hypotf
@@ -561,6 +562,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.modfl
libc.src.math.nan
libc.src.math.nanf
+ libc.src.math.nanf128
libc.src.math.nanl
libc.src.math.nearbyint
libc.src.math.nearbyintf
@@ -603,9 +605,11 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.scalbnl
libc.src.math.setpayload
libc.src.math.setpayloadf
+ libc.src.math.setpayloadf128
libc.src.math.setpayloadl
libc.src.math.setpayloadsig
libc.src.math.setpayloadsigf
+ libc.src.math.setpayloadsigf128
libc.src.math.setpayloadsigl
libc.src.math.sin
libc.src.math.sincos
diff --git a/libc/config/linux/riscv/entrypoints.txt b/libc/config/linux/riscv/entrypoints.txt
index f8906e3adbfd30..273b865173bcec 100644
--- a/libc/config/linux/riscv/entrypoints.txt
+++ b/libc/config/linux/riscv/entrypoints.txt
@@ -785,6 +785,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fsubl
libc.src.math.getpayload
libc.src.math.getpayloadf
+ libc.src.math.getpayloadf128
libc.src.math.getpayloadl
libc.src.math.hypot
libc.src.math.hypotf
@@ -842,6 +843,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.modfl
libc.src.math.nan
libc.src.math.nanf
+ libc.src.math.nanf128
libc.src.math.nanl
libc.src.math.nearbyint
libc.src.math.nearbyintf
@@ -887,9 +889,11 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.scalbnl
libc.src.math.setpayload
libc.src.math.setpayloadf
+ libc.src.math.setpayloadf128
libc.src.math.setpayloadl
libc.src.math.setpayloadsig
libc.src.math.setpayloadsigf
+ libc.src.math.setpayloadsigf128
libc.src.math.setpayloadsigl
libc.src.math.sin
libc.src.math.sincos
@@ -1092,13 +1096,11 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.fromfpxf128
libc.src.math.fsqrtf128
libc.src.math.fsubf128
- libc.src.math.getpayloadf128
libc.src.math.ilogbf128
libc.src.math.ldexpf128
libc.src.math.llogbf128
libc.src.math.logbf128
libc.src.math.modff128
- libc.src.math.nanf128
libc.src.math.nextafterf128
libc.src.math.nextdownf128
libc.src.math.nextupf128
@@ -1106,8 +1108,6 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.remquof128
libc.src.math.scalblnf128
libc.src.math.scalbnf128
- libc.src.math.setpayloadf128
- libc.src.math.setpayloadsigf128
libc.src.math.totalorderf128
libc.src.math.totalordermagf128
libc.src.math.ufromfpf128
diff --git a/libc/config/linux/x86_64/entrypoints.txt b/libc/config/linux/x86_64/entrypoints.txt
index 5d67548617ea5b..1769cfbfaa9b43 100644
--- a/libc/config/linux/x86_64/entrypoints.txt
+++ b/libc/config/linux/x86_64/entrypoints.txt
@@ -807,6 +807,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fsubl
libc.src.math.getpayload
libc.src.math.getpayloadf
+ libc.src.math.getpayloadf128
libc.src.math.getpayloadl
libc.src.math.hypot
libc.src.math.hypotf
@@ -864,6 +865,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.modfl
libc.src.math.nan
libc.src.math.nanf
+ libc.src.math.nanf128
libc.src.math.nanl
libc.src.math.nearbyint
libc.src.math.nearbyintf
@@ -909,9 +911,11 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.scalbnl
libc.src.math.setpayload
libc.src.math.setpayloadf
+ libc.src.math.setpayloadf128
libc.src.math.setpayloadl
libc.src.math.setpayloadsig
libc.src.math.setpayloadsigf
+ libc.src.math.setpayloadsigf128
libc.src.math.setpayloadsigl
libc.src.math.sin
libc.src.math.sincos
@@ -1114,13 +1118,11 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.fromfpxf128
libc.src.math.fsqrtf128
libc.src.math.fsubf128
- libc.src.math.getpayloadf128
libc.src.math.ilogbf128
libc.src.math.ldexpf128
libc.src.math.llogbf128
libc.src.math.logbf128
libc.src.math.modff128
- libc.src.math.nanf128
libc.src.math.nextafterf128
libc.src.math.nextdownf128
libc.src.math.nextupf128
@@ -1128,8 +1130,6 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.remquof128
libc.src.math.scalblnf128
libc.src.math.scalbnf128
- libc.src.math.setpayloadf128
- libc.src.math.setpayloadsigf128
libc.src.math.totalorderf128
libc.src.math.totalordermagf128
libc.src.math.ufromfpf128
diff --git a/libc/config/windows/entrypoints.txt b/libc/config/windows/entrypoints.txt
index 1712b2ad26fda4..e0477cbf5a6f00 100644
--- a/libc/config/windows/entrypoints.txt
+++ b/libc/config/windows/entrypoints.txt
@@ -300,6 +300,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.modfl
libc.src.math.nan
libc.src.math.nanf
+ libc.src.math.nanf128
libc.src.math.nanl
libc.src.math.nearbyint
libc.src.math.nearbyintf
@@ -396,6 +397,7 @@ list(APPEND TARGET_LIBM_ENTRYPOINTS
libc.src.math.fromfpbf16
libc.src.math.fromfpxbf16
libc.src.math.getpayloadbf16
+ libc.src.math.getpayloadf128
libc.src.math.hypotbf16
libc.src.math.ilogbbf16
libc.src.math.iscanonicalbf16
@@ -423,7 +425,9 @@ list(APPEND TARGET_LIBM_ENTRYPOINTS
libc.src.math.scalblnbf16
libc.src.math.scalbnbf16
libc.src.math.setpayloadbf16
+ libc.src.math.setpayloadf128
libc.src.math.setpayloadsigbf16
+ libc.src.math.setpayloadsigf128
libc.src.math.sqrtbf16
libc.src.math.tanbf16
libc.src.math.truncbf16
diff --git a/libc/shared/math/getpayloadf128.h b/libc/shared/math/getpayloadf128.h
index 1a3845e631a8b6..e1f2d0faedbcb2 100644
--- a/libc/shared/math/getpayloadf128.h
+++ b/libc/shared/math/getpayloadf128.h
@@ -1,18 +1,19 @@
-//===-- Shared getpayloadf128 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
//
//===----------------------------------------------------------------------===//
+///
+/// \file
+/// Shared getpayloadf128 function.
+///
+//===----------------------------------------------------------------------===//
#ifndef LLVM_LIBC_SHARED_MATH_GETPAYLOADF128_H
#define LLVM_LIBC_SHARED_MATH_GETPAYLOADF128_H
-#include "include/llvm-libc-types/float128.h"
-
-#ifdef LIBC_TYPES_HAS_NATIVE_FLOAT128
-
#include "shared/libc_common.h"
#include "src/__support/math/getpayloadf128.h"
@@ -24,6 +25,4 @@ using math::getpayloadf128;
} // namespace shared
} // namespace LIBC_NAMESPACE_DECL
-#endif // LIBC_TYPES_HAS_NATIVE_FLOAT128
-
#endif // LLVM_LIBC_SHARED_MATH_GETPAYLOADF128_H
diff --git a/libc/shared/math/nanf128.h b/libc/shared/math/nanf128.h
index 313b6ed6234c52..9d80936c14c282 100644
--- a/libc/shared/math/nanf128.h
+++ b/libc/shared/math/nanf128.h
@@ -1,18 +1,19 @@
-//===-- Shared nanf128 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
//
//===----------------------------------------------------------------------===//
+///
+/// \file
+/// Shared nanf128 function.
+///
+//===----------------------------------------------------------------------===//
#ifndef LLVM_LIBC_SHARED_MATH_NANF128_H
#define LLVM_LIBC_SHARED_MATH_NANF128_H
-#include "include/llvm-libc-types/float128.h"
-
-#ifdef LIBC_TYPES_HAS_NATIVE_FLOAT128
-
#include "shared/libc_common.h"
#include "src/__support/math/nanf128.h"
@@ -24,6 +25,4 @@ using math::nanf128;
} // namespace shared
} // namespace LIBC_NAMESPACE_DECL
-#endif // LIBC_TYPES_HAS_NATIVE_FLOAT128
-
#endif // LLVM_LIBC_SHARED_MATH_NANF128_H
diff --git a/libc/shared/math/setpayloadf128.h b/libc/shared/math/setpayloadf128.h
index a1f889e89ed394..ceb339e80ac4f7 100644
--- a/libc/shared/math/setpayloadf128.h
+++ b/libc/shared/math/setpayloadf128.h
@@ -1,18 +1,19 @@
-//===-- Shared setpayloadf128 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
//
//===----------------------------------------------------------------------===//
+///
+/// \file
+/// Shared setpayloadf128 function.
+///
+//===----------------------------------------------------------------------===//
#ifndef LLVM_LIBC_SHARED_MATH_SETPAYLOADF128_H
#define LLVM_LIBC_SHARED_MATH_SETPAYLOADF128_H
-#include "include/llvm-libc-types/float128.h"
-
-#ifdef LIBC_TYPES_HAS_NATIVE_FLOAT128
-
#include "shared/libc_common.h"
#include "src/__support/math/setpayloadf128.h"
@@ -24,6 +25,4 @@ using math::setpayloadf128;
} // namespace shared
} // namespace LIBC_NAMESPACE_DECL
-#endif // LIBC_TYPES_HAS_NATIVE_FLOAT128
-
#endif // LLVM_LIBC_SHARED_MATH_SETPAYLOADF128_H
diff --git a/libc/shared/math/setpayloadsigf128.h b/libc/shared/math/setpayloadsigf128.h
index 3169b610ccb4d5..92f17abd033a26 100644
--- a/libc/shared/math/setpayloadsigf128.h
+++ b/libc/shared/math/setpayloadsigf128.h
@@ -1,18 +1,19 @@
-//===-- Shared setpayloadsigf128 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
//
//===----------------------------------------------------------------------===//
+///
+/// \file
+/// Shared setpayloadsigf128 function.
+///
+//===----------------------------------------------------------------------===//
#ifndef LLVM_LIBC_SHARED_MATH_SETPAYLOADSIGF128_H
#define LLVM_LIBC_SHARED_MATH_SETPAYLOADSIGF128_H
-#include "include/llvm-libc-types/float128.h"
-
-#ifdef LIBC_TYPES_HAS_NATIVE_FLOAT128
-
#include "shared/libc_common.h"
#include "src/__support/math/setpayloadsigf128.h"
@@ -24,6 +25,4 @@ using math::setpayloadsigf128;
} // namespace shared
} // namespace LIBC_NAMESPACE_DECL
-#endif // LIBC_TYPES_HAS_NATIVE_FLOAT128
-
#endif // LLVM_LIBC_SHARED_MATH_SETPAYLOADSIGF128_H
diff --git a/libc/src/__support/math/CMakeLists.txt b/libc/src/__support/math/CMakeLists.txt
index c0751d7e15f102..400e5e2d6aeaa8 100644
--- a/libc/src/__support/math/CMakeLists.txt
+++ b/libc/src/__support/math/CMakeLists.txt
@@ -2181,10 +2181,10 @@ add_header_library(
HDRS
nanf128.h
DEPENDS
- libc.include.llvm-libc-types.float128
+ libc.src.__support.FPUtil.float128
+ libc.src.__support.libc_errno
libc.src.__support.macros.config
libc.src.__support.str_to_float
- libc.src.__support.libc_errno
)
add_header_library(
@@ -3957,8 +3957,8 @@ add_header_library(
HDRS
getpayloadf128.h
DEPENDS
- libc.include.llvm-libc-types.float128
libc.src.__support.FPUtil.basic_operations
+ libc.src.__support.FPUtil.float128
libc.src.__support.macros.config
)
@@ -5036,8 +5036,8 @@ add_header_library(
HDRS
setpayloadf128.h
DEPENDS
- libc.include.llvm-libc-types.float128
libc.src.__support.FPUtil.basic_operations
+ libc.src.__support.FPUtil.float128
libc.src.__support.macros.config
)
@@ -5093,8 +5093,8 @@ add_header_library(
HDRS
setpayloadsigf128.h
DEPENDS
- libc.include.llvm-libc-types.float128
libc.src.__support.FPUtil.basic_operations
+ libc.src.__support.FPUtil.float128
libc.src.__support.macros.config
)
diff --git a/libc/src/__support/math/getpayloadf128.h b/libc/src/__support/math/getpayloadf128.h
index aed53ee4adbce9..b162f227b11cf6 100644
--- a/libc/src/__support/math/getpayloadf128.h
+++ b/libc/src/__support/math/getpayloadf128.h
@@ -1,32 +1,34 @@
-//===-- Implementation header for getpayloadf128 ----------------*- 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
//
//===----------------------------------------------------------------------===//
+///
+/// \file
+/// Implementation header for getpayloadf128.
+///
+//===----------------------------------------------------------------------===//
#ifndef LLVM_LIBC_SRC___SUPPORT_MATH_GETPAYLOADF128_H
#define LLVM_LIBC_SRC___SUPPORT_MATH_GETPAYLOADF128_H
-#include "include/llvm-libc-types/float128.h"
-
-#ifdef LIBC_TYPES_HAS_NATIVE_FLOAT128
-
#include "src/__support/FPUtil/BasicOperations.h"
+#include "src/__support/FPUtil/float128.h"
#include "src/__support/macros/config.h"
namespace LIBC_NAMESPACE_DECL {
namespace math {
-LIBC_INLINE constexpr float128 getpayloadf128(const float128 *x) {
+using LIBC_NAMESPACE::fputil::Float128;
+
+LIBC_INLINE constexpr Float128 getpayloadf128(const Float128 *x) {
return fputil::getpayload(*x);
}
} // namespace math
} // namespace LIBC_NAMESPACE_DECL
-#endif // LIBC_TYPES_HAS_NATIVE_FLOAT128
-
#endif // LLVM_LIBC_SRC___SUPPORT_MATH_GETPAYLOADF128_H
diff --git a/libc/src/__support/math/nanf128.h b/libc/src/__support/math/nanf128.h
index 5cc1010939d3c6..4aaad176059f9b 100644
--- a/libc/src/__support/math/nanf128.h
+++ b/libc/src/__support/math/nanf128.h
@@ -1,18 +1,20 @@
-//===-- Implementation header for nanf128 -----------------------*- 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
//
//===----------------------------------------------------------------------===//
+///
+/// \file
+/// Implementation header for nanf128.
+///
+//===----------------------------------------------------------------------===//
#ifndef LLVM_LIBC_SRC___SUPPORT_MATH_NANF128_H
#define LLVM_LIBC_SRC___SUPPORT_MATH_NANF128_H
-#include "include/llvm-libc-types/float128.h"
-
-#ifdef LIBC_TYPES_HAS_NATIVE_FLOAT128
-
+#include "src/__support/FPUtil/float128.h"
#include "src/__support/libc_errno.h"
#include "src/__support/macros/config.h"
#include "src/__support/str_to_float.h"
@@ -20,8 +22,10 @@
namespace LIBC_NAMESPACE_DECL {
namespace math {
-LIBC_INLINE constexpr float128 nanf128(const char *arg) {
- auto result = internal::strtonan<float128>(arg);
+using LIBC_NAMESPACE::fputil::Float128;
+
+LIBC_INLINE constexpr Float128 nanf128(const char *arg) {
+ auto result = internal::strtonan<Float128>(arg);
if (result.has_error())
libc_errno = result.error;
return result.value;
@@ -30,6 +34,4 @@ LIBC_INLINE constexpr float128 nanf128(const char *arg) {
} // namespace math
} // namespace LIBC_NAMESPACE_DECL
-#endif // LIBC_TYPES_HAS_NATIVE_FLOAT128
-
#endif // LLVM_LIBC_SRC___SUPPORT_MATH_NANF128_H
diff --git a/libc/src/__support/math/setpayloadf128.h b/libc/src/__support/math/setpayloadf128.h
index 4e022d8ec91d40..8feeef8b9fa9cc 100644
--- a/libc/src/__support/math/setpayloadf128.h
+++ b/libc/src/__support/math/setpayloadf128.h
@@ -1,32 +1,34 @@
-//===-- Implementation header for setpayloadf128 ----------------*- 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
//
//===----------------------------------------------------------------------===//
+///
+/// \file
+/// Implementation header for setpayloadf128.
+///
+//===----------------------------------------------------------------------===//
#ifndef LLVM_LIBC_SRC___SUPPORT_MATH_SETPAYLOADF128_H
#define LLVM_LIBC_SRC___SUPPORT_MATH_SETPAYLOADF128_H
-#include "include/llvm-libc-types/float128.h"
-
-#ifdef LIBC_TYPES_HAS_NATIVE_FLOAT128
-
#include "src/__support/FPUtil/BasicOperations.h"
+#include "src/__support/FPUtil/float128.h"
#include "src/__support/macros/config.h"
namespace LIBC_NAMESPACE_DECL {
namespace math {
-LIBC_INLINE constexpr int setpayloadf128(float128 *res, float128 pl) {
+using LIBC_NAMESPACE::fputil::Float128;
+
+LIBC_INLINE constexpr int setpayloadf128(Float128 *res, Float128 pl) {
return static_cast<int>(fputil::setpayload</*IsSignaling=*/false>(*res, pl));
}
} // namespace math
} // namespace LIBC_NAMESPACE_DECL
-#endif // LIBC_TYPES_HAS_NATIVE_FLOAT128
-
#endif // LLVM_LIBC_SRC___SUPPORT_MATH_SETPAYLOADF128_H
diff --git a/libc/src/__support/math/setpayloadsigf128.h b/libc/src/__support/math/setpayloadsigf128.h
index c9bd9498cfb744..bb7ca8afc0d718 100644
--- a/libc/src/__support/math/setpayloadsigf128.h
+++ b/libc/src/__support/math/setpayloadsigf128.h
@@ -1,32 +1,34 @@
-//===-- Implementation header for setpayloadsigf128 -------------*- 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
//
//===----------------------------------------------------------------------===//
+///
+/// \file
+/// Implementation header for setpayloadsigf128.
+///
+//===----------------------------------------------------------------------===//
#ifndef LLVM_LIBC_SRC___SUPPORT_MATH_SETPAYLOADSIGF128_H
#define LLVM_LIBC_SRC___SUPPORT_MATH_SETPAYLOADSIGF128_H
-#include "include/llvm-libc-types/float128.h"
-
-#ifdef LIBC_TYPES_HAS_NATIVE_FLOAT128
-
#include "src/__support/FPUtil/BasicOperations.h"
+#include "src/__support/FPUtil/float128.h"
#include "src/__support/macros/config.h"
namespace LIBC_NAMESPACE_DECL {
namespace math {
-LIBC_INLINE constexpr int setpayloadsigf128(float128 *res, float128 pl) {
+using LIBC_NAMESPACE::fputil::Float128;
+
+LIBC_INLINE constexpr int setpayloadsigf128(Float128 *res, Float128 pl) {
return static_cast<int>(fputil::setpayload</*IsSignaling=*/true>(*res, pl));
}
} // namespace math
} // namespace LIBC_NAMESPACE_DECL
-#endif // LIBC_TYPES_HAS_NATIVE_FLOAT128
-
#endif // LLVM_LIBC_SRC___SUPPORT_MATH_SETPAYLOADSIGF128_H
diff --git a/libc/src/math/generic/CMakeLists.txt b/libc/src/math/generic/CMakeLists.txt
index 13cb65ff37e0b5..b4b2465b384b10 100644
--- a/libc/src/math/generic/CMakeLists.txt
+++ b/libc/src/math/generic/CMakeLists.txt
@@ -3190,6 +3190,7 @@ add_entrypoint_object(
HDRS
../nanf128.h
DEPENDS
+ libc.src.__support.CPP.bit
libc.src.__support.math.nanf128
)
@@ -4417,6 +4418,7 @@ add_entrypoint_object(
HDRS
../getpayloadf128.h
DEPENDS
+ libc.src.__support.CPP.bit
libc.src.__support.math.getpayloadf128
)
@@ -4477,6 +4479,7 @@ add_entrypoint_object(
HDRS
../setpayloadf128.h
DEPENDS
+ libc.src.__support.CPP.bit
libc.src.__support.math.setpayloadf128
)
@@ -4537,6 +4540,7 @@ add_entrypoint_object(
HDRS
../setpayloadsigf128.h
DEPENDS
+ libc.src.__support.CPP.bit
libc.src.__support.math.setpayloadsigf128
)
diff --git a/libc/src/math/generic/getpayloadf128.cpp b/libc/src/math/generic/getpayloadf128.cpp
index ba2b1cf798f3b9..f74d1529508fb5 100644
--- a/libc/src/math/generic/getpayloadf128.cpp
+++ b/libc/src/math/generic/getpayloadf128.cpp
@@ -1,18 +1,27 @@
-//===-- Implementation of getpayloadf128 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
//
//===----------------------------------------------------------------------===//
+///
+/// \file
+/// Implementation of getpayloadf128 function.
+///
+//===----------------------------------------------------------------------===//
#include "src/math/getpayloadf128.h"
+#include "src/__support/CPP/bit.h"
#include "src/__support/math/getpayloadf128.h"
namespace LIBC_NAMESPACE_DECL {
+using LIBC_NAMESPACE::fputil::Float128;
+
LLVM_LIBC_FUNCTION(float128, getpayloadf128, (const float128 *x)) {
- return math::getpayloadf128(x);
+ return cpp::bit_cast<float128>(
+ math::getpayloadf128(cpp::bit_cast<const Float128 *>(x)));
}
} // namespace LIBC_NAMESPACE_DECL
diff --git a/libc/src/math/generic/nanf128.cpp b/libc/src/math/generic/nanf128.cpp
index 04cb5cf03cc745..6acf4fe8a08298 100644
--- a/libc/src/math/generic/nanf128.cpp
+++ b/libc/src/math/generic/nanf128.cpp
@@ -1,18 +1,24 @@
-//===-- Implementation of nanf128 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
//
//===----------------------------------------------------------------------===//
+///
+/// \file
+/// Implementation of nanf128 function.
+///
+//===----------------------------------------------------------------------===//
#include "src/math/nanf128.h"
+#include "src/__support/CPP/bit.h"
#include "src/__support/math/nanf128.h"
namespace LIBC_NAMESPACE_DECL {
LLVM_LIBC_FUNCTION(float128, nanf128, (const char *arg)) {
- return math::nanf128(arg);
+ return cpp::bit_cast<float128>(math::nanf128(arg));
}
} // namespace LIBC_NAMESPACE_DECL
diff --git a/libc/src/math/generic/setpayloadf128.cpp b/libc/src/math/generic/setpayloadf128.cpp
index 83a3218688a999..c8834261e58610 100644
--- a/libc/src/math/generic/setpayloadf128.cpp
+++ b/libc/src/math/generic/setpayloadf128.cpp
@@ -1,18 +1,27 @@
-//===-- Implementation of setpayloadf128 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
//
//===----------------------------------------------------------------------===//
+///
+/// \file
+/// Implementation of setpayloadf128 function.
+///
+//===----------------------------------------------------------------------===//
#include "src/math/setpayloadf128.h"
+#include "src/__support/CPP/bit.h"
#include "src/__support/math/setpayloadf128.h"
namespace LIBC_NAMESPACE_DECL {
+using LIBC_NAMESPACE::fputil::Float128;
+
LLVM_LIBC_FUNCTION(int, setpayloadf128, (float128 * res, float128 pl)) {
- return math::setpayloadf128(res, pl);
+ return math::setpayloadf128(cpp::bit_cast<Float128 *>(res),
+ cpp::bit_cast<Float128>(pl));
}
} // namespace LIBC_NAMESPACE_DECL
diff --git a/libc/src/math/generic/setpayloadsigf128.cpp b/libc/src/math/generic/setpayloadsigf128.cpp
index a3972286767b52..dd930ece97752e 100644
--- a/libc/src/math/generic/setpayloadsigf128.cpp
+++ b/libc/src/math/generic/setpayloadsigf128.cpp
@@ -1,18 +1,27 @@
-//===-- Implementation of setpayloadsigf128 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
//
//===----------------------------------------------------------------------===//
+///
+/// \file
+/// Implementation of setpayloadsigf128 function.
+///
+//===----------------------------------------------------------------------===//
#include "src/math/setpayloadsigf128.h"
+#include "src/__support/CPP/bit.h"
#include "src/__support/math/setpayloadsigf128.h"
namespace LIBC_NAMESPACE_DECL {
+using LIBC_NAMESPACE::fputil::Float128;
+
LLVM_LIBC_FUNCTION(int, setpayloadsigf128, (float128 * res, float128 pl)) {
- return math::setpayloadsigf128(res, pl);
+ return math::setpayloadsigf128(cpp::bit_cast<Float128 *>(res),
+ cpp::bit_cast<Float128>(pl));
}
} // namespace LIBC_NAMESPACE_DECL
diff --git a/libc/src/math/getpayloadf128.h b/libc/src/math/getpayloadf128.h
index 7ebb4290d4f8a3..bed0870f74b95b 100644
--- a/libc/src/math/getpayloadf128.h
+++ b/libc/src/math/getpayloadf128.h
@@ -1,19 +1,29 @@
-//===-- Implementation header for getpayloadf128 ----------------*- 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
//
//===----------------------------------------------------------------------===//
+///
+/// \file
+/// Implementation header for getpayloadf128.
+///
+//===----------------------------------------------------------------------===//
#ifndef LLVM_LIBC_SRC_MATH_GETPAYLOADF128_H
#define LLVM_LIBC_SRC_MATH_GETPAYLOADF128_H
+#include "src/__support/FPUtil/float128.h"
#include "src/__support/macros/config.h"
#include "src/__support/macros/properties/types.h"
namespace LIBC_NAMESPACE_DECL {
+#ifndef LIBC_TYPES_HAS_NATIVE_FLOAT128
+using float128 = LIBC_NAMESPACE::fputil::Float128;
+#endif // LIBC_TYPES_HAS_NATIVE_FLOAT128
+
float128 getpayloadf128(const float128 *x);
} // namespace LIBC_NAMESPACE_DECL
diff --git a/libc/src/math/nanf128.h b/libc/src/math/nanf128.h
index 1c1323adcd7812..13dc64c4d8afe5 100644
--- a/libc/src/math/nanf128.h
+++ b/libc/src/math/nanf128.h
@@ -1,19 +1,29 @@
-//===-- Implementation header for nanf128 -----------------------*- 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
//
//===----------------------------------------------------------------------===//
+///
+/// \file
+/// Implementation header for nanf128.
+///
+//===----------------------------------------------------------------------===//
#ifndef LLVM_LIBC_SRC_MATH_NANF128_H
#define LLVM_LIBC_SRC_MATH_NANF128_H
+#include "src/__support/FPUtil/float128.h"
#include "src/__support/macros/config.h"
#include "src/__support/macros/properties/types.h"
namespace LIBC_NAMESPACE_DECL {
+#ifndef LIBC_TYPES_HAS_NATIVE_FLOAT128
+using float128 = LIBC_NAMESPACE::fputil::Float128;
+#endif // LIBC_TYPES_HAS_NATIVE_FLOAT128
+
float128 nanf128(const char *arg);
} // namespace LIBC_NAMESPACE_DECL
diff --git a/libc/src/math/setpayloadf128.h b/libc/src/math/setpayloadf128.h
index e46aef38256db6..4ade6153a29c55 100644
--- a/libc/src/math/setpayloadf128.h
+++ b/libc/src/math/setpayloadf128.h
@@ -1,19 +1,29 @@
-//===-- Implementation header for setpayloadf128 ----------------*- 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
//
//===----------------------------------------------------------------------===//
+///
+/// \file
+/// Implementation header for setpayloadf128.
+///
+//===----------------------------------------------------------------------===//
#ifndef LLVM_LIBC_SRC_MATH_SETPAYLOADF128_H
#define LLVM_LIBC_SRC_MATH_SETPAYLOADF128_H
+#include "src/__support/FPUtil/float128.h"
#include "src/__support/macros/config.h"
#include "src/__support/macros/properties/types.h"
namespace LIBC_NAMESPACE_DECL {
+#ifndef LIBC_TYPES_HAS_NATIVE_FLOAT128
+using float128 = LIBC_NAMESPACE::fputil::Float128;
+#endif // LIBC_TYPES_HAS_NATIVE_FLOAT128
+
int setpayloadf128(float128 *res, float128 pl);
} // namespace LIBC_NAMESPACE_DECL
diff --git a/libc/src/math/setpayloadsigf128.h b/libc/src/math/setpayloadsigf128.h
index 4e036b9c8ba007..eaf1a5d94dcead 100644
--- a/libc/src/math/setpayloadsigf128.h
+++ b/libc/src/math/setpayloadsigf128.h
@@ -1,19 +1,29 @@
-//===-- Implementation header for setpayloadsigf128 -------------*- 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
//
//===----------------------------------------------------------------------===//
+///
+/// \file
+/// Implementation header for setpayloadsigf128.
+///
+//===----------------------------------------------------------------------===//
#ifndef LLVM_LIBC_SRC_MATH_SETPAYLOADSIGF128_H
#define LLVM_LIBC_SRC_MATH_SETPAYLOADSIGF128_H
+#include "src/__support/FPUtil/float128.h"
#include "src/__support/macros/config.h"
#include "src/__support/macros/properties/types.h"
namespace LIBC_NAMESPACE_DECL {
+#ifndef LIBC_TYPES_HAS_NATIVE_FLOAT128
+using float128 = LIBC_NAMESPACE::fputil::Float128;
+#endif // LIBC_TYPES_HAS_NATIVE_FLOAT128
+
int setpayloadsigf128(float128 *res, float128 pl);
} // namespace LIBC_NAMESPACE_DECL
diff --git a/libc/test/shared/CMakeLists.txt b/libc/test/shared/CMakeLists.txt
index cde49cd6e3c73d..eff5bea2970fd1 100644
--- a/libc/test/shared/CMakeLists.txt
+++ b/libc/test/shared/CMakeLists.txt
@@ -790,6 +790,12 @@ else()
libc.src.__support.math.setpayloadf128
libc.src.__support.math.setpayloadf16
libc.src.__support.math.setpayloadl
+ libc.src.__support.math.setpayloadsig
+ libc.src.__support.math.setpayloadsigbf16
+ libc.src.__support.math.setpayloadsigf
+ libc.src.__support.math.setpayloadsigf128
+ libc.src.__support.math.setpayloadsigf16
+ libc.src.__support.math.setpayloadsigl
libc.src.__support.math.sqrtl
libc.src.__support.math.trunc
libc.src.__support.math.truncbf16
diff --git a/libc/test/shared/shared_math_constexpr_test.cpp b/libc/test/shared/shared_math_constexpr_test.cpp
index ec7f99a9ff40c0..6ca32979bddbde 100644
--- a/libc/test/shared/shared_math_constexpr_test.cpp
+++ b/libc/test/shared/shared_math_constexpr_test.cpp
@@ -453,6 +453,25 @@ static_assert(Float128(0.0) ==
LIBC_NAMESPACE::shared::roundf128(Float128(0.0)));
static_assert(Float128(0.0) ==
LIBC_NAMESPACE::shared::truncf128(Float128(0.0)));
+static_assert(Float128(-1.0) == [] {
+ Float128 getpayload_x = Float128(0.0);
+ return LIBC_NAMESPACE::shared::getpayloadf128(&getpayload_x);
+}());
+static_assert(1 == [] {
+ const char arg{};
+ return LIBC_NAMESPACE::fputil::FPBits<Float128>(
+ LIBC_NAMESPACE::shared::nanf128(&arg))
+ .is_nan();
+}());
+static_assert(0 == [] {
+ Float128 setpayload_x = Float128(0.0);
+ return LIBC_NAMESPACE::shared::setpayloadf128(&setpayload_x, Float128(0.0));
+}());
+static_assert(1 == [] {
+ Float128 setpayloadsigf128_x = Float128(0.0);
+ return LIBC_NAMESPACE::shared::setpayloadsigf128(&setpayloadsigf128_x,
+ Float128(0.0));
+}());
//===----------------------------------------------------------------------===//
// Native Float128 Tests
@@ -482,10 +501,6 @@ static_assert(float128(0.0) ==
LIBC_NAMESPACE::shared::fromfpf128(float128(0.0), 0, 32));
static_assert(float128(0.0) ==
LIBC_NAMESPACE::shared::fromfpxf128(float128(0.0), 0, 32));
-static_assert(float128(-1.0) == [] {
- float128 getpayload_x = float128(0.0);
- return LIBC_NAMESPACE::shared::getpayloadf128(&getpayload_x);
-}());
static_assert(float128(0.0) ==
LIBC_NAMESPACE::shared::ufromfpf128(float128(0.0), 0, 32));
static_assert(float128(0.0) ==
@@ -516,15 +531,6 @@ static_assert(float128(0.0) ==
LIBC_NAMESPACE::shared::scalblnf128(float128(0.0), 0.0));
static_assert(float128(0.0) ==
LIBC_NAMESPACE::shared::scalbnf128(float128(0.0), 0.0));
-static_assert(0 == [] {
- float128 setpayload_x = float128(0.0);
- return LIBC_NAMESPACE::shared::setpayloadf128(&setpayload_x, float128(0.0));
-}());
-static_assert(1 == [] {
- float128 setpayloadsig_x = float128(0.0);
- return LIBC_NAMESPACE::shared::setpayloadsigf128(&setpayloadsig_x,
- float128(0.0));
-}());
static_assert(0.0f ==
LIBC_NAMESPACE::shared::fmulf128(float128(0.0), float128(0.0)));
static_assert(0.0f ==
@@ -532,12 +538,6 @@ static_assert(0.0f ==
static_assert(float128(0.0) ==
LIBC_NAMESPACE::shared::nextafterf128(float128(0.0),
float128(0.0)));
-static_assert(1 == [] {
- const char arg{};
- return LIBC_NAMESPACE::fputil::FPBits<float128>(
- LIBC_NAMESPACE::shared::nanf128(&arg))
- .is_nan();
-}());
#endif // LIBC_TYPES_HAS_NATIVE_FLOAT128
diff --git a/libc/test/shared/shared_math_test.cpp b/libc/test/shared/shared_math_test.cpp
index d0581b5dababa9..68b562c48931aa 100644
--- a/libc/test/shared/shared_math_test.cpp
+++ b/libc/test/shared/shared_math_test.cpp
@@ -583,6 +583,8 @@ TEST(LlvmLibcSharedMathTest, AllLongDouble) {
// Emulated float128 tests
TEST(LlvmLibcSharedMathTest, AllEmuFloat128) {
+ using FPBits = LIBC_NAMESPACE::fputil::FPBits<Float128>;
+
EXPECT_FP_EQ(Float128(0.0),
LIBC_NAMESPACE::shared::atan2f128(Float128(0.0), Float128(0.0)));
EXPECT_FP_EQ(Float128(0.0), LIBC_NAMESPACE::shared::ceilf128(Float128(0.0)));
@@ -612,6 +614,11 @@ TEST(LlvmLibcSharedMathTest, AllEmuFloat128) {
Float128(0.0), Float128(0.0)));
EXPECT_FP_EQ(Float128(0.0), LIBC_NAMESPACE::shared::fminimum_numf128(
Float128(0.0), Float128(0.0)));
+
+ Float128 getpayloadf128_x = Float128(0.0);
+ EXPECT_FP_EQ(Float128(-1.0),
+ LIBC_NAMESPACE::shared::getpayloadf128(&getpayloadf128_x));
+
EXPECT_EQ(1, LIBC_NAMESPACE::shared::iscanonicalf128(Float128(0.0)));
EXPECT_EQ(0, LIBC_NAMESPACE::shared::isnanf128(Float128(0.0)));
EXPECT_EQ(0, LIBC_NAMESPACE::shared::issignalingf128(Float128(0.0)));
@@ -619,12 +626,25 @@ TEST(LlvmLibcSharedMathTest, AllEmuFloat128) {
EXPECT_EQ(0LL, LIBC_NAMESPACE::shared::llroundf128(Float128(0.0)));
EXPECT_EQ(0L, LIBC_NAMESPACE::shared::lrintf128(Float128(0.0)));
EXPECT_EQ(0L, LIBC_NAMESPACE::shared::lroundf128(Float128(0.0)));
+
+ EXPECT_TRUE(FPBits(LIBC_NAMESPACE::shared::nanf128("")).is_nan());
+
EXPECT_FP_EQ(Float128(0.0),
LIBC_NAMESPACE::shared::nearbyintf128(Float128(0.0)));
EXPECT_FP_EQ(Float128(0.0), LIBC_NAMESPACE::shared::rintf128(Float128(0.0)));
EXPECT_FP_EQ(Float128(0.0),
LIBC_NAMESPACE::shared::roundevenf128(Float128(0.0)));
EXPECT_FP_EQ(Float128(0.0), LIBC_NAMESPACE::shared::roundf128(Float128(0.0)));
+
+ Float128 setpayloadf128_res = Float128(0.0);
+ EXPECT_EQ(0, LIBC_NAMESPACE::shared::setpayloadf128(&setpayloadf128_res,
+ Float128(0.0)));
+
+ Float128 setpayloadsigf128_res = Float128(0.0);
+ EXPECT_EQ(1, LIBC_NAMESPACE::shared::setpayloadsigf128(&setpayloadsigf128_res,
+ Float128(0.0)));
+ EXPECT_FP_EQ(Float128(0.0), setpayloadsigf128_res);
+
EXPECT_FP_EQ(Float128(1.0), LIBC_NAMESPACE::shared::sqrtf128(Float128(1.0)));
EXPECT_FP_EQ(Float128(0.0), LIBC_NAMESPACE::shared::truncf128(Float128(0.0)));
}
@@ -683,20 +703,6 @@ TEST(LlvmLibcSharedMathTest, AllFloat128) {
LIBC_NAMESPACE::shared::faddf128(float128(0.0), float128(0.0)));
EXPECT_FP_EQ(1.0f,
LIBC_NAMESPACE::shared::fdivf128(float128(1.0), float128(1.0)));
-
- float128 getpayloadf128_x = float128(0.0);
- EXPECT_FP_EQ(float128(-1.0),
- LIBC_NAMESPACE::shared::getpayloadf128(&getpayloadf128_x));
-
- float128 setpayloadf128_res = float128(0.0);
- EXPECT_EQ(0, LIBC_NAMESPACE::shared::setpayloadf128(&setpayloadf128_res,
- float128(0.0)));
-
- float128 setpayloadsigf128_res = float128(0.0);
- EXPECT_EQ(1, LIBC_NAMESPACE::shared::setpayloadsigf128(&setpayloadsigf128_res,
- float128(0.0)));
- EXPECT_FP_EQ(float128(0.0), setpayloadsigf128_res);
-
float128 neg_min_denormal = FPBits::min_subnormal(Sign::NEG).get_val();
EXPECT_FP_EQ(neg_min_denormal,
LIBC_NAMESPACE::shared::nextdownf128(float128(0.0)));
@@ -756,7 +762,6 @@ TEST(LlvmLibcSharedMathTest, AllFloat128) {
LIBC_NAMESPACE::shared::fsubf128(float128(0.0), float128(0.0)));
EXPECT_FP_EQ(0x0p+0f,
LIBC_NAMESPACE::shared::fmulf128(float128(0.0), float128(0.0)));
- EXPECT_TRUE(FPBits(LIBC_NAMESPACE::shared::nanf128("")).is_nan());
}
#endif // LIBC_TYPES_HAS_NATIVE_FLOAT128
diff --git a/libc/test/src/math/smoke/CMakeLists.txt b/libc/test/src/math/smoke/CMakeLists.txt
index 76caeef863e342..d68eb7786e3b58 100644
--- a/libc/test/src/math/smoke/CMakeLists.txt
+++ b/libc/test/src/math/smoke/CMakeLists.txt
@@ -3941,9 +3941,10 @@ add_fp_unittest(
SRCS
nanf128_test.cpp
DEPENDS
+ libc.src.__support.FPUtil.float128
+ libc.src.__support.FPUtil.fp_bits
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.
)
@@ -5584,6 +5585,7 @@ add_fp_unittest(
HDRS
GetPayloadTest.h
DEPENDS
+ libc.src.__support.FPUtil.float128
libc.src.math.getpayloadf128
)
@@ -5657,6 +5659,7 @@ add_fp_unittest(
HDRS
SetPayloadTest.h
DEPENDS
+ libc.src.__support.FPUtil.float128
libc.src.math.setpayloadf128
)
@@ -5730,6 +5733,7 @@ add_fp_unittest(
HDRS
SetPayloadSigTest.h
DEPENDS
+ libc.src.__support.FPUtil.float128
libc.src.math.setpayloadsigf128
)
diff --git a/libc/test/src/math/smoke/getpayloadf128_test.cpp b/libc/test/src/math/smoke/getpayloadf128_test.cpp
index 77304abfbbc0a9..f6c7dddb5c3e2f 100644
--- a/libc/test/src/math/smoke/getpayloadf128_test.cpp
+++ b/libc/test/src/math/smoke/getpayloadf128_test.cpp
@@ -1,13 +1,23 @@
-//===-- Unittests for getpayloadf128 --------------------------------------===//
+//===----------------------------------------------------------------------===//
//
// 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
//
//===----------------------------------------------------------------------===//
+///
+/// \file
+/// Unittests for getpayloadf128.
+///
+//===----------------------------------------------------------------------===//
#include "GetPayloadTest.h"
+#include "src/__support/FPUtil/float128.h"
#include "src/math/getpayloadf128.h"
+#ifndef LIBC_TYPES_HAS_NATIVE_FLOAT128
+using float128 = LIBC_NAMESPACE::fputil::Float128;
+#endif // LIBC_TYPES_HAS_NATIVE_FLOAT128
+
LIST_GETPAYLOAD_TESTS(Getpayloadf128, float128, LIBC_NAMESPACE::getpayloadf128)
diff --git a/libc/test/src/math/smoke/nanf128_test.cpp b/libc/test/src/math/smoke/nanf128_test.cpp
index 40b347de25f7a9..7c3fbafe2198ab 100644
--- a/libc/test/src/math/smoke/nanf128_test.cpp
+++ b/libc/test/src/math/smoke/nanf128_test.cpp
@@ -1,19 +1,29 @@
-//===-- Unittests for nanf128 ---------------------------------------------===//
+//===----------------------------------------------------------------------===//
//
// 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
//
//===----------------------------------------------------------------------===//
+///
+/// \file
+/// Unittests for nanf128.
+///
+//===----------------------------------------------------------------------===//
#include "hdr/signal_macros.h"
#include "src/__support/FPUtil/FPBits.h"
+#include "src/__support/FPUtil/float128.h"
#include "src/__support/uint128.h"
#include "src/math/nanf128.h"
#include "test/UnitTest/FEnvSafeTest.h"
#include "test/UnitTest/FPMatcher.h"
#include "test/UnitTest/Test.h"
+#ifndef LIBC_TYPES_HAS_NATIVE_FLOAT128
+using float128 = LIBC_NAMESPACE::fputil::Float128;
+#endif // LIBC_TYPES_HAS_NATIVE_FLOAT128
+
class LlvmLibcNanf128Test : public LIBC_NAMESPACE::testing::FEnvSafeTest {
public:
using FPBits128 = LIBC_NAMESPACE::fputil::FPBits<float128>;
diff --git a/libc/test/src/math/smoke/setpayloadf128_test.cpp b/libc/test/src/math/smoke/setpayloadf128_test.cpp
index 3e386972980e13..031c7627effdcf 100644
--- a/libc/test/src/math/smoke/setpayloadf128_test.cpp
+++ b/libc/test/src/math/smoke/setpayloadf128_test.cpp
@@ -1,13 +1,23 @@
-//===-- Unittests for setpayloadf128 --------------------------------------===//
+//===----------------------------------------------------------------------===//
//
// 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
//
//===----------------------------------------------------------------------===//
+///
+/// \file
+/// Unittests for setpayloadf128.
+///
+//===----------------------------------------------------------------------===//
#include "SetPayloadTest.h"
+#include "src/__support/FPUtil/float128.h"
#include "src/math/setpayloadf128.h"
+#ifndef LIBC_TYPES_HAS_NATIVE_FLOAT128
+using float128 = LIBC_NAMESPACE::fputil::Float128;
+#endif // LIBC_TYPES_HAS_NATIVE_FLOAT128
+
LIST_SETPAYLOAD_TESTS(Setpayloadf128, float128, LIBC_NAMESPACE::setpayloadf128)
diff --git a/libc/test/src/math/smoke/setpayloadsigf128_test.cpp b/libc/test/src/math/smoke/setpayloadsigf128_test.cpp
index 90f2a2aef9569f..c623b45b4c3903 100644
--- a/libc/test/src/math/smoke/setpayloadsigf128_test.cpp
+++ b/libc/test/src/math/smoke/setpayloadsigf128_test.cpp
@@ -1,14 +1,24 @@
-//===-- Unittests for setpayloadsigf128 -----------------------------------===//
+//===----------------------------------------------------------------------===//
//
// 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
//
//===----------------------------------------------------------------------===//
+///
+/// \file
+/// Unittests for setpayloadsigf128.
+///
+//===----------------------------------------------------------------------===//
#include "SetPayloadSigTest.h"
+#include "src/__support/FPUtil/float128.h"
#include "src/math/setpayloadsigf128.h"
+#ifndef LIBC_TYPES_HAS_NATIVE_FLOAT128
+using float128 = LIBC_NAMESPACE::fputil::Float128;
+#endif // LIBC_TYPES_HAS_NATIVE_FLOAT128
+
LIST_SETPAYLOADSIG_TESTS(Setpayloadsigf128, float128,
LIBC_NAMESPACE::setpayloadsigf128)
diff --git a/utils/bazel/llvm-project-overlay/libc/BUILD.bazel b/utils/bazel/llvm-project-overlay/libc/BUILD.bazel
index 210e2e1eb4a09a..0e74580b1f84ba 100644
--- a/utils/bazel/llvm-project-overlay/libc/BUILD.bazel
+++ b/utils/bazel/llvm-project-overlay/libc/BUILD.bazel
@@ -5934,8 +5934,8 @@ libc_support_library(
hdrs = ["src/__support/math/setpayloadf128.h"],
deps = [
":__support_fputil_basic_operations",
+ ":__support_fputil_float128",
":__support_macros_config",
- ":llvm_libc_types_float128",
],
)
@@ -5991,8 +5991,8 @@ libc_support_library(
hdrs = ["src/__support/math/setpayloadsigf128.h"],
deps = [
":__support_fputil_basic_operations",
+ ":__support_fputil_float128",
":__support_macros_config",
- ":llvm_libc_types_float128",
],
)
@@ -8083,10 +8083,10 @@ libc_support_library(
name = "__support_math_nanf128",
hdrs = ["src/__support/math/nanf128.h"],
deps = [
+ ":__support_fputil_float128",
":__support_libc_errno",
":__support_macros_config",
":__support_str_to_float",
- ":llvm_libc_types_float128",
],
)
@@ -9836,8 +9836,8 @@ libc_support_library(
hdrs = ["src/__support/math/getpayloadf128.h"],
deps = [
":__support_fputil_basic_operations",
+ ":__support_fputil_float128",
":__support_macros_config",
- ":llvm_libc_types_float128",
],
)
@@ -14209,6 +14209,8 @@ libc_math_function(
libc_math_function(
name = "getpayloadf128",
additional_deps = [
+ ":__support_cpp_bit",
+ ":__support_fputil_float128",
":__support_math_getpayloadf128",
],
)
@@ -14745,6 +14747,8 @@ libc_math_function(
libc_math_function(
name = "nanf128",
additional_deps = [
+ ":__support_cpp_bit",
+ ":__support_fputil_float128",
":__support_math_nanf128",
],
)
@@ -15320,6 +15324,8 @@ libc_math_function(
libc_math_function(
name = "setpayloadf128",
additional_deps = [
+ ":__support_cpp_bit",
+ ":__support_fputil_float128",
":__support_math_setpayloadf128",
],
)
@@ -15362,6 +15368,8 @@ libc_math_function(
libc_math_function(
name = "setpayloadsigf128",
additional_deps = [
+ ":__support_cpp_bit",
+ ":__support_fputil_float128",
":__support_math_setpayloadsigf128",
],
)
diff --git a/utils/bazel/llvm-project-overlay/libc/test/src/math/smoke/BUILD.bazel b/utils/bazel/llvm-project-overlay/libc/test/src/math/smoke/BUILD.bazel
index 238b2852e4cc6c..dad78bc78a3545 100644
--- a/utils/bazel/llvm-project-overlay/libc/test/src/math/smoke/BUILD.bazel
+++ b/utils/bazel/llvm-project-overlay/libc/test/src/math/smoke/BUILD.bazel
@@ -1275,6 +1275,9 @@ math_test(
math_test(
name = "getpayloadf128",
hdrs = ["GetPayloadTest.h"],
+ deps = [
+ "//libc:__support_fputil_float128",
+ ],
)
math_test(
@@ -1650,7 +1653,13 @@ math_test(
hdrs = ["ModfTest.h"],
)
-# TODO: add nan tests.
+math_test(
+ name = "nanf128",
+ deps = [
+ "//libc:__support_fputil_float128",
+ "//libc:hdr_signal_macros",
+ ],
+)
math_test(
name = "nearbyint",
@@ -2100,6 +2109,9 @@ math_test(
math_test(
name = "setpayloadf128",
hdrs = ["SetPayloadTest.h"],
+ deps = [
+ "//libc:__support_fputil_float128",
+ ],
)
math_test(
@@ -2133,6 +2145,9 @@ math_test(
math_test(
name = "setpayloadsigf128",
hdrs = ["SetPayloadSigTest.h"],
+ deps = [
+ "//libc:__support_fputil_float128",
+ ],
)
math_test(
More information about the libc-commits
mailing list