r.mem, r.mem_ovf ? '!' : ' ');
}
-void wvtest_pass(bool cond, const char* str)
+void wvtest_pass(bool cond, const char* file, int line, const char* str)
{
- printf("! %s %s\n", str, cond ? "ok" : "FAILURE");
+ printf("! %s:%d %s %s\n", file, line, str, cond ? "ok" : "FAILURE");
}
-#define WVPASS(cond) wvtest_pass(cond, #cond)
+#define WVPASS(cond) wvtest_pass(cond, __FILE__, __LINE__, #cond)
#define MGTEST(timeout_us, mem_budget, flags, code) \
({ \
struct mg_ret r;
for (uint64_t flags = 0; flags < 4; flags++) {
compute_kernel(1); /* warm up */
+
+ ///////////////////////////////////////////////////////
r = MGTEST(5000, 10000, flags, compute_kernel(1000));
- WVPASS(!r.mem_ovf);
+ WVPASS(!r.time_ovf);
+ WVPASS(r.time > 900);
+
+ r = MGTEST(500, 10000, flags, compute_kernel(1000));
+ WVPASS(r.time_ovf);
WVPASS(r.time > 900);
- MGTEST(500, 10000, flags, compute_kernel(1000));
- MGTEST(5000, 10000, flags, compute_kernel(2000));
- MGTEST(500, 10000, flags, compute_kernel(2000));
-
- MGTEST(100000, 500000, flags, read_memory(100000));
- MGTEST(100000, 50000, flags, read_memory(100000));
- MGTEST(100000, 500000, flags, read_memory_rnd(100000));
- MGTEST(100000, 50000, flags, read_memory_rnd(100000));
- MGTEST(100000, 500000, flags, write_memory(100000));
- MGTEST(100000, 50000, flags, write_memory(100000));
-
- MGTEST(100000, 5000000, flags, read_memory(1000000));
- MGTEST(100000, 500000, flags, read_memory(1000000));
- MGTEST(100000, 5000000, flags, read_memory_rnd(1000000));
- MGTEST(100000, 500000, flags, read_memory_rnd(1000000));
- MGTEST(100000, 5000000, flags, write_memory(1000000));
- MGTEST(100000, 500000, flags, write_memory(1000000));
+
+ r = MGTEST(5000, 10000, flags, compute_kernel(2000));
+ WVPASS(!r.time_ovf);
+ WVPASS(r.time > 1900);
+
+ r = MGTEST(500, 10000, flags, compute_kernel(2000));
+ WVPASS(r.time_ovf);
+ WVPASS(r.time > 1900);
+
+ ///////////////////////////////////////////////////////
+ r = MGTEST(100000, 500000, flags, read_memory(100000));
+ WVPASS(!r.mem_ovf);
+ WVPASS(r.mem >= 100000);
+
+ r = MGTEST(100000, 50000, flags, read_memory(100000));
+ WVPASS(r.mem_ovf);
+ WVPASS(r.mem >= 100000);
+
+ r = MGTEST(100000, 500000, flags, read_memory_rnd(100000));
+ WVPASS(!r.mem_ovf);
+ WVPASS(r.mem >= 100000);
+
+ r = MGTEST(100000, 50000, flags, read_memory_rnd(100000));
+ WVPASS(r.mem_ovf);
+ WVPASS(r.mem >= 100000);
+
+ r = MGTEST(100000, 500000, flags, write_memory(100000));
+ WVPASS(!r.mem_ovf);
+ WVPASS(r.mem >= 100000);
+
+ r = MGTEST(100000, 50000, flags, write_memory(100000));
+ WVPASS(r.mem_ovf);
+ WVPASS(r.mem >= 100000);
+
+
+ ///////////////////////////////////////////////////////
+ r = MGTEST(100000, 5000000, flags, read_memory(1000000));
+ WVPASS(!r.mem_ovf);
+ WVPASS(r.mem >= 100000);
+
+ r = MGTEST(100000, 500000, flags, read_memory(1000000));
+ WVPASS(r.mem_ovf);
+ WVPASS(r.mem >= 100000);
+
+ r = MGTEST(100000, 5000000, flags, read_memory_rnd(1000000));
+ WVPASS(!r.mem_ovf);
+ WVPASS(r.mem >= 100000);
+
+ r = MGTEST(100000, 500000, flags, read_memory_rnd(1000000));
+ WVPASS(r.mem_ovf);
+ WVPASS(r.mem >= 100000);
+
+ r = MGTEST(100000, 5000000, flags, write_memory(1000000));
+ WVPASS(!r.mem_ovf);
+ WVPASS(r.mem >= 100000);
+
+ r = MGTEST(100000, 500000, flags, write_memory(1000000));
+ WVPASS(r.mem_ovf);
+ WVPASS(r.mem >= 100000);
printf("\n");
}