[libc-commits] [libc] 36b6f48 - [libc] Add conversion tests between emulated and native f128 (#213422)
via libc-commits
libc-commits at lists.llvm.org
Sat Aug 1 07:07:02 PDT 2026
Author: Zorojuro
Date: 2026-08-01T19:36:57+05:30
New Revision: 36b6f48f88914b83acbadcb0c310d292c7304fc3
URL: https://github.com/llvm/llvm-project/commit/36b6f48f88914b83acbadcb0c310d292c7304fc3
DIFF: https://github.com/llvm/llvm-project/commit/36b6f48f88914b83acbadcb0c310d292c7304fc3.diff
LOG: [libc] Add conversion tests between emulated and native f128 (#213422)
Adds conversion tests between emulated and native float128 type, which
would be later used in f128 functions .
Added:
Modified:
libc/test/src/__support/FPUtil/CMakeLists.txt
libc/test/src/__support/FPUtil/float128_test.cpp
Removed:
################################################################################
diff --git a/libc/test/src/__support/FPUtil/CMakeLists.txt b/libc/test/src/__support/FPUtil/CMakeLists.txt
index cab95df0e709c..87fd10aaacd90 100644
--- a/libc/test/src/__support/FPUtil/CMakeLists.txt
+++ b/libc/test/src/__support/FPUtil/CMakeLists.txt
@@ -49,6 +49,7 @@ add_fp_unittest(
libc.hdr.limits_macros
libc.src.__support.FPUtil.fenv_impl
libc.src.__support.FPUtil.float128
+ libc.src.__support.macros.properties.types
)
# TODO: Temporally disable bfloat16 test until MPCommon target is updated
diff --git a/libc/test/src/__support/FPUtil/float128_test.cpp b/libc/test/src/__support/FPUtil/float128_test.cpp
index 5ca7e0e5a7d90..306bcc8f31bc4 100644
--- a/libc/test/src/__support/FPUtil/float128_test.cpp
+++ b/libc/test/src/__support/FPUtil/float128_test.cpp
@@ -9,6 +9,7 @@
#include "hdr/limits_macros.h"
#include "src/__support/FPUtil/FEnvImpl.h"
#include "src/__support/FPUtil/float128.h"
+#include "src/__support/macros/properties/types.h"
#include "test/UnitTest/FPMatcher.h"
#include "test/UnitTest/Test.h"
@@ -142,3 +143,25 @@ TEST(LlvmLibcFloat128Test, FromIntegralTypes) {
ASSERT_EQ(static_cast<unsigned>(Float128(2147483648.0)), 2147483648U);
EXPECT_EQ(LIBC_NAMESPACE::fputil::test_except(FE_INVALID), 0);
}
+
+#ifdef LIBC_TYPES_HAS_FLOAT128
+TEST(LlvmLibcFloat128Test, NativeFloat128Conversion) {
+ // native to emulated float128
+ ASSERT_TRUE(Float128(static_cast<float128>(0.0)) == Float128(0.0));
+ ASSERT_TRUE(Float128(static_cast<float128>(1.5)) == Float128(1.5));
+ ASSERT_TRUE(Float128(static_cast<float128>(-1.5)) == Float128(-1.5));
+ ASSERT_TRUE(Float128(static_cast<float128>(1e300)) == Float128(1e300));
+
+ // emulated to native float128
+ ASSERT_TRUE(static_cast<float128>(Float128(0.0)) ==
+ static_cast<float128>(0.0));
+ ASSERT_TRUE(static_cast<float128>(Float128(3.14)) ==
+ static_cast<float128>(3.14));
+ ASSERT_TRUE(static_cast<float128>(Float128(-3.14)) ==
+ static_cast<float128>(-3.14));
+ ASSERT_TRUE(static_cast<float128>(FPBits::inf(Sign::POS).get_val()) ==
+ static_cast<float128>(FPBits::inf(Sign::POS).get_val()));
+ ASSERT_TRUE(static_cast<float128>(Float128(1e-300)) ==
+ static_cast<float128>(1e-300));
+}
+#endif // LIBC_TYPES_HAS_FLOAT128
More information about the libc-commits
mailing list