[libc-commits] [libc] 92a0168 - [libc] Enable more entrypoints for riscv (#102055)
via libc-commits
libc-commits at lists.llvm.org
Tue Aug 6 08:16:45 PDT 2024
Author: Mikhail R. Gadelha
Date: 2024-08-06T12:16:40-03:00
New Revision: 92a01683cb6633fa8b0b29128ab5937f022dd17c
URL: https://github.com/llvm/llvm-project/commit/92a01683cb6633fa8b0b29128ab5937f022dd17c
DIFF: https://github.com/llvm/llvm-project/commit/92a01683cb6633fa8b0b29128ab5937f022dd17c.diff
LOG: [libc] Enable more entrypoints for riscv (#102055)
This patch enables more entrypoints for riscv. The changes to the test cases are introduced to support rv32 which has long double but doesn't have int128
Added:
Modified:
libc/config/linux/riscv/entrypoints.txt
libc/test/src/math/smoke/SetPayloadTest.h
Removed:
################################################################################
diff --git a/libc/config/linux/riscv/entrypoints.txt b/libc/config/linux/riscv/entrypoints.txt
index 15a6827c040c7..51fe6f3522d72 100644
--- a/libc/config/linux/riscv/entrypoints.txt
+++ b/libc/config/linux/riscv/entrypoints.txt
@@ -576,8 +576,12 @@ if(LIBC_TYPES_HAS_FLOAT128)
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.fdimf128
libc.src.math.floorf128
@@ -617,6 +621,7 @@ if(LIBC_TYPES_HAS_FLOAT128)
libc.src.math.roundevenf128
libc.src.math.roundf128
libc.src.math.scalbnf128
+ libc.src.math.setpayloadf128
libc.src.math.sqrtf128
libc.src.math.totalorderf128
libc.src.math.totalordermagf128
diff --git a/libc/test/src/math/smoke/SetPayloadTest.h b/libc/test/src/math/smoke/SetPayloadTest.h
index 4b0dacf3e1544..4bea78f4230a9 100644
--- a/libc/test/src/math/smoke/SetPayloadTest.h
+++ b/libc/test/src/math/smoke/SetPayloadTest.h
@@ -33,7 +33,12 @@ class SetPayloadTestTemplate : public LIBC_NAMESPACE::testing::FEnvSafeTest {
EXPECT_EQ(1, func(&res, T(-1.0)));
EXPECT_EQ(1, func(&res, T(0x42.1p+0)));
EXPECT_EQ(1, func(&res, T(-0x42.1p+0)));
- EXPECT_EQ(1, func(&res, T(StorageType(1) << (FPBits::FRACTION_LEN - 1))));
+
+ FPBits nan_payload_bits = FPBits::one();
+ nan_payload_bits.set_biased_exponent(FPBits::FRACTION_LEN - 1 +
+ FPBits::EXP_BIAS);
+ T nan_payload = nan_payload_bits.get_val();
+ EXPECT_EQ(1, func(&res, nan_payload));
}
void testValidPayloads(SetPayloadFunc func) {
@@ -57,7 +62,15 @@ class SetPayloadTestTemplate : public LIBC_NAMESPACE::testing::FEnvSafeTest {
EXPECT_EQ(FPBits::quiet_nan(Sign::POS, 0x123).uintval(),
FPBits(res).uintval());
- EXPECT_EQ(0, func(&res, T(FPBits::FRACTION_MASK >> 1)));
+ // The following code is creating a NaN payload manually to prevent a
+ // conversion from BigInt to float128.
+ FPBits nan_payload_bits = FPBits::one();
+ nan_payload_bits.set_biased_exponent(FPBits::SIG_LEN - 2 +
+ FPBits::EXP_BIAS);
+ nan_payload_bits.set_mantissa(FPBits::SIG_MASK - 3);
+ T nan_payload = nan_payload_bits.get_val();
+
+ EXPECT_EQ(0, func(&res, nan_payload));
EXPECT_TRUE(FPBits(res).is_quiet_nan());
EXPECT_EQ(
FPBits::quiet_nan(Sign::POS, FPBits::FRACTION_MASK >> 1).uintval(),
More information about the libc-commits
mailing list