[libc-commits] [libc] [libc][math][NFC] Remove global scope constants declaration in math tests (PR #69558)
via libc-commits
libc-commits at lists.llvm.org
Wed Oct 18 21:18:26 PDT 2023
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-libc
Author: None (lntue)
<details>
<summary>Changes</summary>
Clean up usage of `DECLARE_SPECIAL_CONSTANTS` in global scope.
---
Patch is 75.82 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/69558.diff
67 Files Affected:
- (modified) libc/src/__support/FPUtil/FPBits.h (+20-18)
- (modified) libc/test/UnitTest/FPMatcher.h (+10)
- (modified) libc/test/src/math/acosf_test.cpp (+4-6)
- (modified) libc/test/src/math/acoshf_test.cpp (+6-8)
- (modified) libc/test/src/math/asinf_test.cpp (+4-6)
- (modified) libc/test/src/math/asinhf_test.cpp (+6-8)
- (modified) libc/test/src/math/atanf_test.cpp (+4-6)
- (modified) libc/test/src/math/atanhf_test.cpp (+4-6)
- (modified) libc/test/src/math/cos_test.cpp (+3-3)
- (modified) libc/test/src/math/cosf_test.cpp (+5-7)
- (modified) libc/test/src/math/coshf_test.cpp (+5-7)
- (modified) libc/test/src/math/erff_test.cpp (+5-5)
- (modified) libc/test/src/math/exp10_test.cpp (+5-5)
- (modified) libc/test/src/math/exp10f_test.cpp (+7-7)
- (modified) libc/test/src/math/exp2_test.cpp (+5-5)
- (modified) libc/test/src/math/exp2f_test.cpp (+7-7)
- (modified) libc/test/src/math/exp_test.cpp (+5-5)
- (modified) libc/test/src/math/expf_test.cpp (+7-7)
- (modified) libc/test/src/math/explogxf_test.cpp (+5-5)
- (modified) libc/test/src/math/expm1_test.cpp (+4-4)
- (modified) libc/test/src/math/expm1f_test.cpp (+7-7)
- (modified) libc/test/src/math/inv_trigf_utils_test.cpp (+4-4)
- (modified) libc/test/src/math/log10_test.cpp (+6-6)
- (modified) libc/test/src/math/log10f_test.cpp (+5-5)
- (modified) libc/test/src/math/log1p_test.cpp (+6-6)
- (modified) libc/test/src/math/log1pf_test.cpp (+5-5)
- (modified) libc/test/src/math/log2_test.cpp (+6-6)
- (modified) libc/test/src/math/log2f_test.cpp (+5-5)
- (modified) libc/test/src/math/log_test.cpp (+6-6)
- (modified) libc/test/src/math/logf_test.cpp (+5-5)
- (modified) libc/test/src/math/sin_test.cpp (+3-3)
- (modified) libc/test/src/math/sincosf_test.cpp (+6-7)
- (modified) libc/test/src/math/sinf_test.cpp (+7-8)
- (modified) libc/test/src/math/sinhf_test.cpp (+6-8)
- (modified) libc/test/src/math/smoke/acosf_test.cpp (+2-4)
- (modified) libc/test/src/math/smoke/acoshf_test.cpp (+2-4)
- (modified) libc/test/src/math/smoke/asinf_test.cpp (+2-4)
- (modified) libc/test/src/math/smoke/asinhf_test.cpp (+2-4)
- (modified) libc/test/src/math/smoke/atanf_test.cpp (+2-4)
- (modified) libc/test/src/math/smoke/atanhf_test.cpp (+2-4)
- (modified) libc/test/src/math/smoke/cosf_test.cpp (+2-4)
- (modified) libc/test/src/math/smoke/coshf_test.cpp (+3-5)
- (modified) libc/test/src/math/smoke/erff_test.cpp (+2-4)
- (modified) libc/test/src/math/smoke/exp10_test.cpp (+2-4)
- (modified) libc/test/src/math/smoke/exp10f_test.cpp (+3-3)
- (modified) libc/test/src/math/smoke/exp2_test.cpp (+2-4)
- (modified) libc/test/src/math/smoke/exp2f_test.cpp (+3-3)
- (modified) libc/test/src/math/smoke/exp_test.cpp (+2-4)
- (modified) libc/test/src/math/smoke/expf_test.cpp (+3-3)
- (modified) libc/test/src/math/smoke/expm1_test.cpp (+2-6)
- (modified) libc/test/src/math/smoke/expm1f_test.cpp (+3-3)
- (modified) libc/test/src/math/smoke/log10_test.cpp (+2-4)
- (modified) libc/test/src/math/smoke/log10f_test.cpp (+2-2)
- (modified) libc/test/src/math/smoke/log1p_test.cpp (+2-4)
- (modified) libc/test/src/math/smoke/log1pf_test.cpp (+2-2)
- (modified) libc/test/src/math/smoke/log2_test.cpp (+2-4)
- (modified) libc/test/src/math/smoke/log2f_test.cpp (+2-2)
- (modified) libc/test/src/math/smoke/log_test.cpp (+2-4)
- (modified) libc/test/src/math/smoke/logf_test.cpp (+2-2)
- (modified) libc/test/src/math/smoke/sincosf_test.cpp (+2-4)
- (modified) libc/test/src/math/smoke/sinf_test.cpp (+2-4)
- (modified) libc/test/src/math/smoke/sinhf_test.cpp (+4-6)
- (modified) libc/test/src/math/smoke/tanf_test.cpp (+2-4)
- (modified) libc/test/src/math/smoke/tanhf_test.cpp (+2-4)
- (modified) libc/test/src/math/tan_test.cpp (+3-3)
- (modified) libc/test/src/math/tanf_test.cpp (+6-7)
- (modified) libc/test/src/math/tanhf_test.cpp (+4-6)
``````````diff
diff --git a/libc/src/__support/FPUtil/FPBits.h b/libc/src/__support/FPUtil/FPBits.h
index 8d3b87c70e3c0e1..b423ba41f11c4be 100644
--- a/libc/src/__support/FPUtil/FPBits.h
+++ b/libc/src/__support/FPUtil/FPBits.h
@@ -51,23 +51,23 @@ template <typename T> struct FPBits {
UIntType bits;
- LIBC_INLINE void set_mantissa(UIntType mantVal) {
+ LIBC_INLINE constexpr void set_mantissa(UIntType mantVal) {
mantVal &= (FloatProp::MANTISSA_MASK);
bits &= ~(FloatProp::MANTISSA_MASK);
bits |= mantVal;
}
- LIBC_INLINE UIntType get_mantissa() const {
+ LIBC_INLINE constexpr UIntType get_mantissa() const {
return bits & FloatProp::MANTISSA_MASK;
}
- LIBC_INLINE void set_unbiased_exponent(UIntType expVal) {
+ LIBC_INLINE constexpr void set_unbiased_exponent(UIntType expVal) {
expVal = (expVal << (FloatProp::MANTISSA_WIDTH)) & FloatProp::EXPONENT_MASK;
bits &= ~(FloatProp::EXPONENT_MASK);
bits |= expVal;
}
- LIBC_INLINE uint16_t get_unbiased_exponent() const {
+ LIBC_INLINE constexpr uint16_t get_unbiased_exponent() const {
return uint16_t((bits & FloatProp::EXPONENT_MASK) >>
(FloatProp::MANTISSA_WIDTH));
}
@@ -81,13 +81,13 @@ template <typename T> struct FPBits {
(FloatProp::MANTISSA_MASK & bits);
}
- LIBC_INLINE void set_sign(bool signVal) {
+ LIBC_INLINE constexpr void set_sign(bool signVal) {
bits |= FloatProp::SIGN_MASK;
if (!signVal)
bits -= FloatProp::SIGN_MASK;
}
- LIBC_INLINE bool get_sign() const {
+ LIBC_INLINE constexpr bool get_sign() const {
return (bits & FloatProp::SIGN_MASK) != 0;
}
@@ -118,13 +118,15 @@ template <typename T> struct FPBits {
LIBC_INLINE constexpr T get_val() const { return cpp::bit_cast<T>(bits); }
- LIBC_INLINE void set_val(T value) { bits = cpp::bit_cast<UIntType>(value); }
+ LIBC_INLINE constexpr void set_val(T value) {
+ bits = cpp::bit_cast<UIntType>(value);
+ }
- LIBC_INLINE explicit operator T() const { return get_val(); }
+ LIBC_INLINE constexpr explicit operator T() const { return get_val(); }
- LIBC_INLINE UIntType uintval() const { return bits; }
+ LIBC_INLINE constexpr UIntType uintval() const { return bits; }
- LIBC_INLINE int get_exponent() const {
+ LIBC_INLINE constexpr int get_exponent() const {
return int(get_unbiased_exponent()) - EXPONENT_BIAS;
}
@@ -134,7 +136,7 @@ template <typename T> struct FPBits {
// values are calculated from the exponent, since just subtracting the bias
// will give a slightly incorrect result. Additionally, zero has an exponent
// of zero, and that should actually be treated as zero.
- LIBC_INLINE int get_explicit_exponent() const {
+ LIBC_INLINE constexpr int get_explicit_exponent() const {
const int unbiased_exp = int(get_unbiased_exponent());
if (is_zero()) {
return 0;
@@ -145,25 +147,25 @@ template <typename T> struct FPBits {
}
}
- LIBC_INLINE bool is_zero() const {
+ LIBC_INLINE constexpr bool is_zero() const {
// Remove sign bit by shift
return (bits << 1) == 0;
}
- LIBC_INLINE bool is_inf() const {
+ LIBC_INLINE constexpr bool is_inf() const {
return (bits & FloatProp::EXP_MANT_MASK) == FloatProp::EXPONENT_MASK;
}
- LIBC_INLINE bool is_nan() const {
+ LIBC_INLINE constexpr bool is_nan() const {
return (bits & FloatProp::EXP_MANT_MASK) > FloatProp::EXPONENT_MASK;
}
- LIBC_INLINE bool is_quiet_nan() const {
+ LIBC_INLINE constexpr bool is_quiet_nan() const {
return (bits & FloatProp::EXP_MANT_MASK) ==
(FloatProp::EXPONENT_MASK | FloatProp::QUIET_NAN_MASK);
}
- LIBC_INLINE bool is_inf_or_nan() const {
+ LIBC_INLINE constexpr bool is_inf_or_nan() const {
return (bits & FloatProp::EXPONENT_MASK) == FloatProp::EXPONENT_MASK;
}
@@ -226,8 +228,8 @@ template <typename T> struct FPBits {
return result;
}
- LIBC_INLINE static FPBits<T> create_value(bool sign, UIntType unbiased_exp,
- UIntType mantissa) {
+ LIBC_INLINE static constexpr FPBits<T>
+ create_value(bool sign, UIntType unbiased_exp, UIntType mantissa) {
FPBits<T> result;
result.set_sign(sign);
result.set_unbiased_exponent(unbiased_exp);
diff --git a/libc/test/UnitTest/FPMatcher.h b/libc/test/UnitTest/FPMatcher.h
index fb60916a0402f05..14c8a85ba7ad480 100644
--- a/libc/test/UnitTest/FPMatcher.h
+++ b/libc/test/UnitTest/FPMatcher.h
@@ -59,6 +59,16 @@ template <TestCond C, typename T> FPMatcher<T, C> getMatcher(T expectedValue) {
return FPMatcher<T, C>(expectedValue);
}
+template <typename T> struct FPTest : public Test {
+ using FPBits = LIBC_NAMESPACE::fputil::FPBits<T>;
+ using UIntType = typename FPBits::UIntType;
+ static constexpr T zero = T(FPBits::zero());
+ static constexpr T neg_zero = T(FPBits::neg_zero());
+ static constexpr T aNaN = T(FPBits::build_quiet_nan(1));
+ static constexpr T inf = T(FPBits::inf());
+ static constexpr T neg_inf = T(FPBits::neg_inf());
+};
+
} // namespace testing
} // namespace LIBC_NAMESPACE
diff --git a/libc/test/src/math/acosf_test.cpp b/libc/test/src/math/acosf_test.cpp
index cb1a07448b471fc..409cf2bc891332f 100644
--- a/libc/test/src/math/acosf_test.cpp
+++ b/libc/test/src/math/acosf_test.cpp
@@ -17,13 +17,11 @@
#include <errno.h>
#include <stdint.h>
-using FPBits = LIBC_NAMESPACE::fputil::FPBits<float>;
-
namespace mpfr = LIBC_NAMESPACE::testing::mpfr;
-DECLARE_SPECIAL_CONSTANTS(float)
+using LlvmLibcAcosfTest = LIBC_NAMESPACE::testing::FPTest<float>;
-TEST(LlvmLibcAcosfTest, SpecialNumbers) {
+TEST_F(LlvmLibcAcosfTest, SpecialNumbers) {
libc_errno = 0;
EXPECT_FP_EQ_ALL_ROUNDING(aNaN, LIBC_NAMESPACE::acosf(aNaN));
@@ -45,7 +43,7 @@ TEST(LlvmLibcAcosfTest, SpecialNumbers) {
EXPECT_MATH_ERRNO(EDOM);
}
-TEST(LlvmLibcAcosfTest, InFloatRange) {
+TEST_F(LlvmLibcAcosfTest, InFloatRange) {
constexpr uint32_t COUNT = 100'000;
constexpr uint32_t STEP = UINT32_MAX / COUNT;
for (uint32_t i = 0, v = 0; i <= COUNT; ++i, v += STEP) {
@@ -57,7 +55,7 @@ TEST(LlvmLibcAcosfTest, InFloatRange) {
}
}
-TEST(LlvmLibcAcosfTest, SpecificBitPatterns) {
+TEST_F(LlvmLibcAcosfTest, SpecificBitPatterns) {
constexpr int N = 13;
constexpr uint32_t INPUTS[N] = {
0x3f000000, // x = 0.5f
diff --git a/libc/test/src/math/acoshf_test.cpp b/libc/test/src/math/acoshf_test.cpp
index 846f5033fb39a09..fe8d76918d486b2 100644
--- a/libc/test/src/math/acoshf_test.cpp
+++ b/libc/test/src/math/acoshf_test.cpp
@@ -17,13 +17,11 @@
#include <errno.h>
#include <stdint.h>
-using FPBits_t = LIBC_NAMESPACE::fputil::FPBits<float>;
+using LlvmLibcAcoshfTest = LIBC_NAMESPACE::testing::FPTest<float>;
namespace mpfr = LIBC_NAMESPACE::testing::mpfr;
-DECLARE_SPECIAL_CONSTANTS(float)
-
-TEST(LlvmLibcAcoshfTest, SpecialNumbers) {
+TEST_F(LlvmLibcAcoshfTest, SpecialNumbers) {
libc_errno = 0;
EXPECT_FP_EQ_ALL_ROUNDING(aNaN, LIBC_NAMESPACE::acoshf(aNaN));
@@ -42,11 +40,11 @@ TEST(LlvmLibcAcoshfTest, SpecialNumbers) {
EXPECT_MATH_ERRNO(EDOM);
}
-TEST(LlvmLibcAcoshfTest, InFloatRange) {
+TEST_F(LlvmLibcAcoshfTest, InFloatRange) {
constexpr uint32_t COUNT = 100'000;
constexpr uint32_t STEP = UINT32_MAX / COUNT;
for (uint32_t i = 0, v = 0; i <= COUNT; ++i, v += STEP) {
- float x = float(FPBits_t(v));
+ float x = float(FPBits(v));
if (isnan(x) || isinf(x))
continue;
ASSERT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Acosh, x,
@@ -54,7 +52,7 @@ TEST(LlvmLibcAcoshfTest, InFloatRange) {
}
}
-TEST(LlvmLibcAcoshfTest, SpecificBitPatterns) {
+TEST_F(LlvmLibcAcoshfTest, SpecificBitPatterns) {
constexpr int N = 12;
constexpr uint32_t INPUTS[N] = {
0x3f800000, // x = 1.0f
@@ -72,7 +70,7 @@ TEST(LlvmLibcAcoshfTest, SpecificBitPatterns) {
};
for (int i = 0; i < N; ++i) {
- float x = float(FPBits_t(INPUTS[i]));
+ float x = float(FPBits(INPUTS[i]));
EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Acosh, x,
LIBC_NAMESPACE::acoshf(x), 0.5);
}
diff --git a/libc/test/src/math/asinf_test.cpp b/libc/test/src/math/asinf_test.cpp
index 49dcd38e82bf59d..db9dd0d78404aad 100644
--- a/libc/test/src/math/asinf_test.cpp
+++ b/libc/test/src/math/asinf_test.cpp
@@ -18,13 +18,11 @@
#include <errno.h>
#include <stdint.h>
-using FPBits = LIBC_NAMESPACE::fputil::FPBits<float>;
+using LlvmLibcAsinfTest = LIBC_NAMESPACE::testing::FPTest<float>;
namespace mpfr = LIBC_NAMESPACE::testing::mpfr;
-DECLARE_SPECIAL_CONSTANTS(float)
-
-TEST(LlvmLibcAsinfTest, SpecialNumbers) {
+TEST_F(LlvmLibcAsinfTest, SpecialNumbers) {
libc_errno = 0;
EXPECT_FP_EQ_ALL_ROUNDING(aNaN, LIBC_NAMESPACE::asinf(aNaN));
@@ -43,7 +41,7 @@ TEST(LlvmLibcAsinfTest, SpecialNumbers) {
EXPECT_MATH_ERRNO(EDOM);
}
-TEST(LlvmLibcAsinfTest, InFloatRange) {
+TEST_F(LlvmLibcAsinfTest, InFloatRange) {
constexpr uint32_t COUNT = 100'000;
constexpr uint32_t STEP = UINT32_MAX / COUNT;
for (uint32_t i = 0, v = 0; i <= COUNT; ++i, v += STEP) {
@@ -55,7 +53,7 @@ TEST(LlvmLibcAsinfTest, InFloatRange) {
}
}
-TEST(LlvmLibcAsinfTest, SpecificBitPatterns) {
+TEST_F(LlvmLibcAsinfTest, SpecificBitPatterns) {
constexpr int N = 11;
constexpr uint32_t INPUTS[N] = {
0x3f000000, // x = 0.5f
diff --git a/libc/test/src/math/asinhf_test.cpp b/libc/test/src/math/asinhf_test.cpp
index 0bbd5db031e079f..2afb5b3a9ff8d22 100644
--- a/libc/test/src/math/asinhf_test.cpp
+++ b/libc/test/src/math/asinhf_test.cpp
@@ -17,13 +17,11 @@
#include <errno.h>
#include <stdint.h>
-using FPBits_t = LIBC_NAMESPACE::fputil::FPBits<float>;
+using LlvmLibcAsinhfTest = LIBC_NAMESPACE::testing::FPTest<float>;
namespace mpfr = LIBC_NAMESPACE::testing::mpfr;
-DECLARE_SPECIAL_CONSTANTS(float)
-
-TEST(LlvmLibcAsinhfTest, SpecialNumbers) {
+TEST_F(LlvmLibcAsinhfTest, SpecialNumbers) {
libc_errno = 0;
EXPECT_FP_EQ_ALL_ROUNDING(aNaN, LIBC_NAMESPACE::asinhf(aNaN));
@@ -42,11 +40,11 @@ TEST(LlvmLibcAsinhfTest, SpecialNumbers) {
EXPECT_MATH_ERRNO(0);
}
-TEST(LlvmLibcAsinhfTest, InFloatRange) {
+TEST_F(LlvmLibcAsinhfTest, InFloatRange) {
constexpr uint32_t COUNT = 1'001;
constexpr uint32_t STEP = UINT32_MAX / COUNT;
for (uint32_t i = 0, v = 0; i <= COUNT; ++i, v += STEP) {
- float x = float(FPBits_t(v));
+ float x = float(FPBits(v));
if (isnan(x) || isinf(x))
continue;
ASSERT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Asinh, x,
@@ -56,7 +54,7 @@ TEST(LlvmLibcAsinhfTest, InFloatRange) {
}
}
-TEST(LlvmLibcAsinhfTest, SpecificBitPatterns) {
+TEST_F(LlvmLibcAsinhfTest, SpecificBitPatterns) {
constexpr int N = 11;
constexpr uint32_t INPUTS[N] = {
0x45abaf26, // |x| = 0x1.575e4cp12f
@@ -73,7 +71,7 @@ TEST(LlvmLibcAsinhfTest, SpecificBitPatterns) {
};
for (int i = 0; i < N; ++i) {
- float x = float(FPBits_t(INPUTS[i]));
+ float x = float(FPBits(INPUTS[i]));
EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Asinh, x,
LIBC_NAMESPACE::asinhf(x), 0.5);
EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Asinh, -x,
diff --git a/libc/test/src/math/atanf_test.cpp b/libc/test/src/math/atanf_test.cpp
index c7eab7b66872396..cd4f7b89ee282e8 100644
--- a/libc/test/src/math/atanf_test.cpp
+++ b/libc/test/src/math/atanf_test.cpp
@@ -19,13 +19,11 @@
#include <initializer_list>
-using FPBits = LIBC_NAMESPACE::fputil::FPBits<float>;
+using LlvmLibcAtanfTest = LIBC_NAMESPACE::testing::FPTest<float>;
namespace mpfr = LIBC_NAMESPACE::testing::mpfr;
-DECLARE_SPECIAL_CONSTANTS(float)
-
-TEST(LlvmLibcAtanfTest, SpecialNumbers) {
+TEST_F(LlvmLibcAtanfTest, SpecialNumbers) {
libc_errno = 0;
LIBC_NAMESPACE::fputil::clear_except(FE_ALL_EXCEPT);
EXPECT_FP_EQ_ALL_ROUNDING(aNaN, LIBC_NAMESPACE::atanf(aNaN));
@@ -43,7 +41,7 @@ TEST(LlvmLibcAtanfTest, SpecialNumbers) {
EXPECT_MATH_ERRNO(0);
}
-TEST(LlvmLibcAtanfTest, InFloatRange) {
+TEST_F(LlvmLibcAtanfTest, InFloatRange) {
constexpr uint32_t COUNT = 100'000;
const uint32_t STEP = FPBits(inf).uintval() / COUNT;
for (uint32_t i = 0, v = 0; i <= COUNT; ++i, v += STEP) {
@@ -56,7 +54,7 @@ TEST(LlvmLibcAtanfTest, InFloatRange) {
}
// For small values, tanh(x) is x.
-TEST(LlvmLibcAtanfTest, SpecialValues) {
+TEST_F(LlvmLibcAtanfTest, SpecialValues) {
for (uint32_t v : {0x3d8d6b23U, 0x3feefcfbU, 0xbd8d6b23U, 0xbfeefcfbU,
0x7F800000U, 0xFF800000U}) {
float x = float(FPBits(v));
diff --git a/libc/test/src/math/atanhf_test.cpp b/libc/test/src/math/atanhf_test.cpp
index c1a8d1997187728..f62830ac9d4ef78 100644
--- a/libc/test/src/math/atanhf_test.cpp
+++ b/libc/test/src/math/atanhf_test.cpp
@@ -17,13 +17,11 @@
#include <errno.h>
#include <stdint.h>
-using FPBits = LIBC_NAMESPACE::fputil::FPBits<float>;
+using LlvmLibcAtanhfTest = LIBC_NAMESPACE::testing::FPTest<float>;
namespace mpfr = LIBC_NAMESPACE::testing::mpfr;
-DECLARE_SPECIAL_CONSTANTS(float)
-
-TEST(LlvmLibcAtanhfTest, SpecialNumbers) {
+TEST_F(LlvmLibcAtanhfTest, SpecialNumbers) {
libc_errno = 0;
LIBC_NAMESPACE::fputil::clear_except(FE_ALL_EXCEPT);
EXPECT_FP_EQ_ALL_ROUNDING(aNaN, LIBC_NAMESPACE::atanhf(aNaN));
@@ -85,7 +83,7 @@ TEST(LlvmLibcAtanhfTest, SpecialNumbers) {
EXPECT_MATH_ERRNO(EDOM);
}
-TEST(LlvmLibcAtanhfTest, InFloatRange) {
+TEST_F(LlvmLibcAtanhfTest, InFloatRange) {
constexpr uint32_t COUNT = 100'000;
const uint32_t STEP = FPBits(1.0f).uintval() / COUNT;
for (uint32_t i = 0, v = 0; i <= COUNT; ++i, v += STEP) {
@@ -98,7 +96,7 @@ TEST(LlvmLibcAtanhfTest, InFloatRange) {
}
// For small values, atanh(x) is x.
-TEST(LlvmLibcAtanhfTest, SmallValues) {
+TEST_F(LlvmLibcAtanhfTest, SmallValues) {
float x = float(FPBits(uint32_t(0x17800000)));
float result = LIBC_NAMESPACE::atanhf(x);
EXPECT_MPFR_MATCH(mpfr::Operation::Atanh, x, result, 0.5);
diff --git a/libc/test/src/math/cos_test.cpp b/libc/test/src/math/cos_test.cpp
index 6d8aeaf2230dae9..738d66034f18d21 100644
--- a/libc/test/src/math/cos_test.cpp
+++ b/libc/test/src/math/cos_test.cpp
@@ -13,11 +13,11 @@
#include <math.h>
-namespace mpfr = LIBC_NAMESPACE::testing::mpfr;
+using LlvmLibcCosTest = LIBC_NAMESPACE::testing::FPTest<double>;
-DECLARE_SPECIAL_CONSTANTS(double)
+namespace mpfr = LIBC_NAMESPACE::testing::mpfr;
-TEST(LlvmLibccosTest, Range) {
+TEST_F(LlvmLibcCosTest, Range) {
static constexpr double _2pi = 6.283185307179586;
constexpr UIntType COUNT = 100'000;
constexpr UIntType STEP = UIntType(-1) / COUNT;
diff --git a/libc/test/src/math/cosf_test.cpp b/libc/test/src/math/cosf_test.cpp
index 7b2fdf9f1b6bffa..5a16520439af07e 100644
--- a/libc/test/src/math/cosf_test.cpp
+++ b/libc/test/src/math/cosf_test.cpp
@@ -19,13 +19,11 @@
#include <stdint.h>
using LIBC_NAMESPACE::testing::SDCOMP26094_VALUES;
-using FPBits = LIBC_NAMESPACE::fputil::FPBits<float>;
+using LlvmLibcCosfTest = LIBC_NAMESPACE::testing::FPTest<float>;
namespace mpfr = LIBC_NAMESPACE::testing::mpfr;
-DECLARE_SPECIAL_CONSTANTS(float)
-
-TEST(LlvmLibcCosfTest, SpecialNumbers) {
+TEST_F(LlvmLibcCosfTest, SpecialNumbers) {
libc_errno = 0;
EXPECT_FP_EQ(aNaN, LIBC_NAMESPACE::cosf(aNaN));
@@ -44,7 +42,7 @@ TEST(LlvmLibcCosfTest, SpecialNumbers) {
EXPECT_MATH_ERRNO(EDOM);
}
-TEST(LlvmLibcCosfTest, InFloatRange) {
+TEST_F(LlvmLibcCosfTest, InFloatRange) {
constexpr uint32_t COUNT = 100'000;
constexpr uint32_t STEP = UINT32_MAX / COUNT;
for (uint32_t i = 0, v = 0; i <= COUNT; ++i, v += STEP) {
@@ -56,7 +54,7 @@ TEST(LlvmLibcCosfTest, InFloatRange) {
}
}
-TEST(LlvmLibcCosfTest, SpecificBitPatterns) {
+TEST_F(LlvmLibcCosfTest, SpecificBitPatterns) {
constexpr int N = 42;
constexpr uint32_t INPUTS[N] = {
0x3f06'0a92U, // x = pi/6
@@ -114,7 +112,7 @@ TEST(LlvmLibcCosfTest, SpecificBitPatterns) {
// SDCOMP-26094: check cosf in the cases for which the range reducer
// returns values furthest beyond its nominal upper bound of pi/4.
-TEST(LlvmLibcCosfTest, SDCOMP_26094) {
+TEST_F(LlvmLibcCosfTest, SDCOMP_26094) {
for (uint32_t v : SDCOMP26094_VALUES) {
float x = float(FPBits(v));
ASSERT_MPFR_MATCH(mpfr::Operation::Cos, x, LIBC_NAMESPACE::cosf(x), 0.5);
diff --git a/libc/test/src/math/coshf_test.cpp b/libc/test/src/math/coshf_test.cpp
index f45f35ad3ea0585..797cfec566ac821 100644
--- a/libc/test/src/math/coshf_test.cpp
+++ b/libc/test/src/math/coshf_test.cpp
@@ -18,13 +18,11 @@
#include <errno.h>
#include <stdint.h>
-using FPBits = LIBC_NAMESPACE::fputil::FPBits<float>;
+using LlvmLibcCoshfTest = LIBC_NAMESPACE::testing::FPTest<float>;
namespace mpfr = LIBC_NAMESPACE::testing::mpfr;
-DECLARE_SPECIAL_CONSTANTS(float)
-
-TEST(LlvmLibcCoshfTest, SpecialNumbers) {
+TEST_F(LlvmLibcCoshfTest, SpecialNumbers) {
libc_errno = 0;
EXPECT_FP_EQ(aNaN, LIBC_NAMESPACE::coshf(aNaN));
@@ -43,7 +41,7 @@ TEST(LlvmLibcCoshfTest, SpecialNumbers) {
EXPECT_MATH_ERRNO(0);
}
-TEST(LlvmLibcCoshfTest, Overflow) {
+TEST_F(LlvmLibcCoshfTest, Overflow) {
libc_errno = 0;
EXPECT_FP_EQ_WITH_EXCEPTION(
inf, LIBC_NAMESPACE::coshf(float(FPBits(0x7f7fffffU))), FE_OVERFLOW);
@@ -58,7 +56,7 @@ TEST(LlvmLibcCoshfTest, Overflow) {
EXPECT_MATH_ERRNO(ERANGE);
}
-TEST(LlvmLibcCoshfTest, InFloatRange) {
+TEST_F(LlvmLibcCoshfTest, InFloatRange) {
constexpr uint32_t COUNT = 100'000;
constexpr uint32_t STEP = UINT32_MAX / COUNT;
for (uint32_t i = 0, v = 0; i <= COUNT; ++i, v += STEP) {
@@ -69,7 +67,7 @@ TEST(LlvmLibcCoshfTest, InFloatRange) {
}
}
-TEST(LlvmLibcCoshfTest, SmallValues) {
+TEST_F(LlvmLibcCoshfTest, SmallValues) {
float x = float(FPBits(0x17800000U));
float result = LIBC_NAMESPACE::coshf(x);
EXPECT_MPFR_MATCH(mpfr::Operation::Cosh, x, result, 0.5);
diff --git a/libc/test/src/math/erff_test.cpp b/libc/test/src/math/erff_test.cpp
index 3cb24778d96a151..933f77c0b5a67d2 100644
--- a/libc/test/src/math/erff_test.cpp
+++ b/libc/test/src/math/erff_test.cpp
@@ -16,12 +16,12 @@
#include <errno.h>
#include <stdint.h>
+using LlvmLibcErffTest = LIBC_NAMESPACE::testing::FPTest<float>;
+
namespace mpfr = LIBC_NAMESPACE::testing::mpfr;
using LIBC_NAMESPACE::testing::tlog;
-DECLARE_SPECIAL_CONSTANTS(float)
-
-TEST(LlvmLibcErffTest, SpecialNumbers) {
+TEST_F(LlvmLibcErffTest, SpecialNumbers) {
EXPECT_FP_EQ_ALL_ROUNDING(aNaN, LIBC_NAMESPACE::erff(aNaN));
EXPECT_FP_EQ_ALL_ROUNDING(1.0f, LIBC_NAMESPACE::erff(inf));
EXPECT_FP_EQ_ALL_ROUNDING(-1.0f, LIBC_NAMESPACE::erff(neg_inf));
@@ -29,7 +29,7 @@ TEST(LlvmLibcErffTest, SpecialNumbers) {
EXPECT_FP_EQ_ALL_ROUNDING(neg_zero, LIBC_NAMESPACE::erff(neg_zero));
}
-TEST(LlvmLibcErffTest, TrickyInputs) {
+TEST_F(LlvmLibcErffTest, TrickyInputs) {
constexpr int N = 2;
constexpr uint32_t INPUTS[N] = {
0x3f65'9229U, // |x| = 0x1.cb2452p-1f
@@ -44,7 +44,7 @@ TEST(LlvmLibcErffTest, TrickyInputs) {
}
}
-TEST(LlvmLibcErffTest, InFloatRange) {
+TEST_F(LlvmLibcErffTest, InFloatRange) {
constexpr uint32_t COUNT = 234561;
constexpr uint32_t START = 0; // 0
constexpr uint32_t STOP = 0x4080'0000U; // 4.0f
diff --git a/libc/test/src/math/exp10_test.cpp b/libc/test/src/math/exp10_test.cpp
index 86d902eaad306b2..ec3925846dba4b1 100644
--- a/libc/test/src/math/exp10_test.cpp
+++ b/libc/test/src/math/exp10_test.cpp
@@ -17,12 +17,12 @@
#include <errno.h>
#include <stdint.h>
+using LlvmLibcExp10Test = LIBC_NAMESPACE::testing::FPTest<double>;
+
namespace mpfr = LIBC_NAMESPACE::testing::mpfr;
using LIBC_NAMESPACE::testing::tlog;
-DECLARE_SPECIAL_CONSTANTS(double)
-
-TEST(LlvmLibcExp10Test, SpecialNumbers) {
+TEST_F(LlvmLibcExp10Test, SpecialNumbers) {
EXPECT_FP_EQ(aNaN, LIBC_NAMESPACE::exp10(aNaN));
EXPECT_FP_EQ(inf, LIBC_NAMESPACE::exp10(inf));
EXPECT_FP_EQ_ALL_ROUNDING(zero, LIBC_NAMESPACE::exp10(neg_inf));
@@ -34,7 +34,7 @@ TEST(LlvmLibcExp10Test, SpecialNumbers) {
EXPECT_FP_EQ_ALL_ROUNDING(1.0, LIBC_NAMESPACE::exp10(-0.0));
}
-TEST(LlvmLibcExp10Test, TrickyInputs) {
+TEST_F(LlvmLibcExp10Test, TrickyInputs) {
constexpr int N = 41;
constexpr uint64_t INPUTS[N] = {
0x40033093317082F8, 0x3FD79289C6E6A5C0,
@@ -85,7 +85,7 @@ TEST(LlvmLibcExp10Test, TrickyInputs) {
}
}
-TEST(LlvmLibcExp10Test, InDoubleRange) {
+TEST_F(LlvmLibcExp10Test, InDoubleRange) {
constexpr uint64_t COUNT = 1'231;
uint64_t START =...
[truncated]
``````````
</details>
https://github.com/llvm/llvm-project/pull/69558
More information about the libc-commits
mailing list