svn commit: r357273 - head/tests/sys/sys
Conrad Meyer
cem at FreeBSD.org
Wed Jan 29 22:37:02 UTC 2020
Author: cem
Date: Wed Jan 29 22:37:01 2020
New Revision: 357273
URL: https://svnweb.freebsd.org/changeset/base/357273
Log:
Revert r357246
I have no idea what this code is trying to do, leave it be.
Reported by: lwhsu
Modified:
head/tests/sys/sys/qmath_test.c
Modified: head/tests/sys/sys/qmath_test.c
==============================================================================
--- head/tests/sys/sys/qmath_test.c Wed Jan 29 21:41:45 2020 (r357272)
+++ head/tests/sys/sys/qmath_test.c Wed Jan 29 22:37:01 2020 (r357273)
@@ -47,7 +47,25 @@
#define QTEST_QITRUNC(q, iv) ((iv) >> Q_RPSHFT(q))
#define QTEST_FFACTOR 32.0
-#define GENRAND(a) arc4random_buf((a), sizeof(*(a)))
+#define bitsperrand 31
+#define GENRAND(a, lb, ub) \
+({ \
+ int _rembits; \
+ do { \
+ _rembits = Q_BITSPERBASEUP(ub) + Q_LTZ(lb); \
+ *(a) = (__typeof(*(a)))0; \
+ while (_rembits > 0) { \
+ *(a) |= (((uint64_t)random()) & \
+ ((1ULL << (_rembits > bitsperrand ? \
+ bitsperrand : _rembits)) - 1)); \
+ *(a) <<= (_rembits - (_rembits > bitsperrand ? \
+ bitsperrand : _rembits)); \
+ _rembits -= bitsperrand; \
+ } \
+ *(a) += lb; \
+ } while (*(a) < (lb) || (uint64_t)*(a) > (ub)); \
+ *(a); \
+})
/*
* Smoke tests for basic qmath operations, such as initialization
@@ -195,9 +213,11 @@ ATF_TC_BODY(qmulq_s64q, tc)
#endif
int error;
+ srandomdev();
+
for (int i = 0; i < 10;) {
- GENRAND(&a_s64q);
- GENRAND(&b_s64q);
+ GENRAND(&a_s64q, INT64_MIN, UINT64_MAX);
+ GENRAND(&b_s64q, INT64_MIN, UINT64_MAX);
/*
* XXX: We cheat a bit, to stand any chance of multiplying
@@ -258,9 +278,12 @@ ATF_TC_BODY(qdivq_s64q, tc)
if (atf_tc_get_config_var_as_bool_wd(tc, "ci", false))
atf_tc_skip("https://bugs.freebsd.org/240219");
+
+ srandomdev();
+
for (int i = 0; i < 10; i++) {
- GENRAND(&a_s64q);
- GENRAND(&b_s64q);
+ GENRAND(&a_s64q, INT64_MIN, UINT64_MAX);
+ GENRAND(&b_s64q, INT64_MIN, UINT64_MAX);
/*
* XXXLAS: Until Qmath handles precision normalisation, only
* test with equal precision.
@@ -301,9 +324,11 @@ ATF_TC_BODY(qaddq_s64q, tc)
double a_dbl, b_dbl, r_dbl, maxe_dbl, delta_dbl;
int error;
+ srandomdev();
+
for (int i = 0; i < 10;) {
- GENRAND(&a_s64q);
- GENRAND(&b_s64q);
+ GENRAND(&a_s64q, INT64_MIN, UINT64_MAX);
+ GENRAND(&b_s64q, INT64_MIN, UINT64_MAX);
/*
* XXXLAS: Until Qmath handles precision normalisation, only
* test with equal precision.
@@ -347,9 +372,11 @@ ATF_TC_BODY(qsubq_s64q, tc)
double a_dbl, b_dbl, r_dbl, maxe_dbl, delta_dbl;
int error;
+ srandomdev();
+
for (int i = 0; i < 10; i++) {
- GENRAND(&a_s64q);
- GENRAND(&b_s64q);
+ GENRAND(&a_s64q, INT64_MIN, UINT64_MAX);
+ GENRAND(&b_s64q, INT64_MIN, UINT64_MAX);
/*
* XXXLAS: Until Qmath handles precision normalisation, only
* test with equal precision.
@@ -391,9 +418,11 @@ ATF_TC_BODY(qfraci_s64q, tc)
int64_t a_int, b_int;
int error;
+ srandomdev();
+
for (int i = 0; i < 10;) {
- GENRAND(&a_s64q);
- GENRAND(&b_s64q);
+ GENRAND(&a_s64q, INT64_MIN, UINT64_MAX);
+ GENRAND(&b_s64q, INT64_MIN, UINT64_MAX);
/*
* XXXLAS: Until Qmath handles precision normalisation, only
* test with equal precision.
@@ -436,9 +465,11 @@ ATF_TC_BODY(qmuli_s64q, tc)
int64_t a_int, b_int;
int error;
+ srandomdev();
+
for (int i = 0; i < 10;) {
- GENRAND(&a_s64q);
- GENRAND(&b_s64q);
+ GENRAND(&a_s64q, INT64_MIN, UINT64_MAX);
+ GENRAND(&b_s64q, INT64_MIN, UINT64_MAX);
/*
* XXXLAS: Until Qmath handles precision normalisation, only
* test with equal precision.
@@ -481,9 +512,11 @@ ATF_TC_BODY(qaddi_s64q, tc)
int64_t a_int, b_int;
int error;
+ srandomdev();
+
for (int i = 0; i < 10;) {
- GENRAND(&a_s64q);
- GENRAND(&b_s64q);
+ GENRAND(&a_s64q, INT64_MIN, UINT64_MAX);
+ GENRAND(&b_s64q, INT64_MIN, UINT64_MAX);
/*
* XXXLAS: Until Qmath handles precision normalisation, only
* test with equal precision.
@@ -530,9 +563,11 @@ ATF_TC_BODY(qsubi_s64q, tc)
int64_t a_int, b_int;
int error;
+ srandomdev();
+
for (int i = 0; i < 10; i++) {
- GENRAND(&a_s64q);
- GENRAND(&b_s64q);
+ GENRAND(&a_s64q, INT64_MIN, UINT64_MAX);
+ GENRAND(&b_s64q, INT64_MIN, UINT64_MAX);
/*
* XXXLAS: Until Qmath handles precision normalisation, only
* test with equal precision.
More information about the svn-src-all
mailing list