Date: Wed, 17 Dec 2025 10:44:11 +0000 From: Li-Wen Hsu <lwhsu@FreeBSD.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org Cc: Siva Mahadevan <me@svmhdvn.name> Subject: git: a9b1650f90f4 - main - lib/msun/tests: Add REQUIRE_ variants of test-utils macros Message-ID: <6942897b.a266.62b75094@gitrepo.freebsd.org>
index | next in thread | raw e-mail
The branch main has been updated by lwhsu: URL: https://cgit.FreeBSD.org/src/commit/?id=a9b1650f90f4dbc62baa52b395082b1714b6cbf3 commit a9b1650f90f4dbc62baa52b395082b1714b6cbf3 Author: Siva Mahadevan <me@svmhdvn.name> AuthorDate: 2025-10-08 20:38:47 +0000 Commit: Li-Wen Hsu <lwhsu@FreeBSD.org> CommitDate: 2025-12-17 10:43:14 +0000 lib/msun/tests: Add REQUIRE_ variants of test-utils macros Signed-off-by: Siva Mahadevan <me@svmhdvn.name> MFC after: 3 days Sponsored by: The FreeBSD Foundation Pull Request: https://github.com/freebsd/freebsd-src/pull/1871 --- lib/msun/tests/test-utils.h | 45 ++++++++++++++++++++++++++++++--------------- 1 file changed, 30 insertions(+), 15 deletions(-) diff --git a/lib/msun/tests/test-utils.h b/lib/msun/tests/test-utils.h index 0a926551639c..984833605fe8 100644 --- a/lib/msun/tests/test-utils.h +++ b/lib/msun/tests/test-utils.h @@ -144,21 +144,20 @@ fpequal_tol(long double x, long double y, long double tol, return (ret); } -#define CHECK_FPEQUAL(x, y) CHECK_FPEQUAL_CS(x, y, true) - -#define CHECK_FPEQUAL_CS(x, y, checksign) do { \ +#define _fpequal_cs(atf_variant, x, y, checksign) do { \ long double _x = x; \ long double _y = y; \ - ATF_CHECK_MSG(fpequal_cs(_x, _y, checksign), \ + ATF_##atf_variant##_MSG(fpequal_cs(_x, _y, checksign), \ "%s (%.25Lg) ~= %s (%.25Lg)", #x, _x, #y, _y); \ } while (0) -#define CHECK_FPEQUAL_TOL(x, y, tol, flags) do { \ +#define _fpequal_tol(atf_variant, x, y, tol, flags) do { \ long double _x = x; \ long double _y = y; \ bool eq = fpequal_tol(_x, _y, tol, flags); \ long double _diff = eq ? 0.0L : fabsl(_x - _y); \ - ATF_CHECK_MSG(eq, "%s (%.25Lg) ~= %s (%.25Lg), diff=%Lg, maxdiff=%Lg,", \ + ATF_##atf_variant##_MSG(eq, \ + "%s (%.25Lg) ~= %s (%.25Lg), diff=%Lg, maxdiff=%Lg,", \ #x, _x, #y, _y, _diff, fabsl(_y * tol)); \ } while (0) @@ -170,32 +169,48 @@ cfpequal(long double complex d1, long double complex d2) fpequal_cs(cimagl(d1), cimagl(d2), true)); } -#define CHECK_CFPEQUAL_CS(x, y, checksign) do { \ +#define _cfpequal_cs(atf_variant, x, y, checksign) do { \ long double _x = x; \ long double _y = y; \ bool equal_cs = \ fpequal_cs(creal(_x), creal(_y), (checksign & CS_REAL) != 0) && \ fpequal_cs(cimag(_x), cimag(_y), (checksign & CS_IMAG) != 0); \ - ATF_CHECK_MSG(equal_cs, "%s (%Lg + %Lg I) ~= %s (%Lg + %Lg I)", \ + ATF_##atf_variant##_MSG(equal_cs, \ + "%s (%Lg + %Lg I) ~= %s (%Lg + %Lg I)", \ #x, creall(_x), cimagl(_x), #y, creall(_y), cimagl(_y)); \ } while (0) -#define CHECK_CFPEQUAL_TOL(x, y, tol, flags) do { \ +#define _cfpequal_tol(atf_variant, x, y, tol, flags) do { \ long double _x = x; \ long double _y = y; \ bool equal_tol = (fpequal_tol(creal(_x), creal(_y), tol, flags) && \ fpequal_tol(cimag(_x), cimag(_y), tol, flags)); \ - ATF_CHECK_MSG(equal_tol, "%s (%Lg + %Lg I) ~= %s (%Lg + %Lg I)", \ + ATF_##atf_variant##_MSG(equal_tol, \ + "%s (%Lg + %Lg I) ~= %s (%Lg + %Lg I)", \ #x, creall(_x), cimagl(_x), #y, creall(_y), cimagl(_y)); \ } while (0) -#define CHECK_FP_EXCEPTIONS(excepts, exceptmask) \ - ATF_CHECK_EQ_MSG((excepts), fetestexcept(exceptmask), \ - "unexpected exception flags: got %#x not %#x", \ +#define _fp_exceptions(atf_variant, excepts, exceptmask) \ + ATF_##atf_variant##_EQ_MSG((excepts), fetestexcept(exceptmask), \ + "unexpected exception flags: got %#x not %#x", \ fetestexcept(exceptmask), (excepts)) -#define CHECK_FP_EXCEPTIONS_MSG(excepts, exceptmask, fmt, ...) \ - ATF_CHECK_EQ_MSG((excepts), fetestexcept(exceptmask), \ +#define _fp_exceptions_msg(atf_variant, excepts, exceptmask, fmt, ...) \ + ATF_##atf_variant##_EQ_MSG((excepts), fetestexcept(exceptmask), \ "unexpected exception flags: got %#x not %#x " fmt, \ fetestexcept(exceptmask), (excepts), __VA_ARGS__) +#define CHECK_FP_EXCEPTIONS(excepts, exceptmask) _fp_exceptions(CHECK, excepts, exceptmask) +#define CHECK_FP_EXCEPTIONS_MSG(excepts, exceptmask, fmt, ...) _fp_exceptions_msg(CHECK, excepts, exceptmask, fmt, __VA_ARGS__) +#define CHECK_CFPEQUAL_TOL(x, y, tol, flags) _cfpequal_tol(CHECK, x, y, tol, flags) +#define CHECK_CFPEQUAL_CS(x, y, checksign) _cfpequal_cs(CHECK, x, y, checksign) +#define CHECK_FPEQUAL(x, y) _fpequal_cs(CHECK, x, y, true) +#define CHECK_FPEQUAL_TOL(x, y, tol, flags) _fpequal_tol(CHECK, x, y, tol, flags) + +#define REQUIRE_FP_EXCEPTIONS(excepts, exceptmask) _fp_exceptions(REQUIRE, excepts, exceptmask) +#define REQUIRE_FP_EXCEPTIONS_MSG(excepts, exceptmask, fmt, ...) _fp_exceptions_msg(REQUIRE, excepts, exceptmask, fmt, __VA_ARGS__) +#define REQUIRE_CFPEQUAL_TOL(x, y, tol, flags) _cfpequal_tol(REQUIRE, x, y, tol, flags) +#define REQUIRE_CFPEQUAL_CS(x, y, checksign) _cfpequal_cs(REQUIRE, x, y, checksign) +#define REQUIRE_FPEQUAL(x, y) _fpequal_cs(REQUIRE, x, y, true) +#define REQUIRE_FPEQUAL_TOL(x, y, tol, flags) _fpequal_tol(REQUIRE, x, y, tol, flags) + #endif /* _TEST_UTILS_H_ */help
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?6942897b.a266.62b75094>
