Replace assert() by a CHECK() macro printing one TAP line per check,
so a failure no longer aborts the remaining ones. Select the TAP
protocol in the meson setup.

Signed-off-by: Philippe Mathieu-Daudé <[email protected]>
---
 tests/tcg/mips64/octeon-insns.c | 76 +++++++++++++++++++--------------
 tests/tcg/mips64/meson.build    |  1 +
 2 files changed, 45 insertions(+), 32 deletions(-)

diff --git a/tests/tcg/mips64/octeon-insns.c b/tests/tcg/mips64/octeon-insns.c
index 6fffc8201034..2c4fe8f58875 100644
--- a/tests/tcg/mips64/octeon-insns.c
+++ b/tests/tcg/mips64/octeon-insns.c
@@ -4,8 +4,17 @@
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
-#include <assert.h>
 #include <stdint.h>
+#include <stdio.h>
+
+static int tests, failures;
+
+#define CHECK(cond) \
+    do { \
+        int ok_ = !!(cond); \
+        printf("%s %d - %s\n", ok_ ? "ok" : "not ok", ++tests, #cond); \
+        failures += !ok_; \
+    } while (0)
 
 static uint64_t octeon_baddu(uint64_t rs, uint64_t rt)
 {
@@ -385,36 +394,39 @@ static uint64_t octeon_rdhwr31_non_decreasing(void)
 
 int main(void)
 {
-    assert(octeon_baddu(0x123, 0x0f0) == 0x13);
-    assert(octeon_dmul(0x12345678, 0x10) == 0x123456780);
-    assert(octeon_dpop(0xf0f0f0f0f0f0f0f0ULL) == 32);
-    assert(octeon_seq(0xabc, 0xabc) == 1);
-    assert(octeon_seq(0xabc, 0xdef) == 0);
-    assert(octeon_sne(0xabc, 0xabc) == 0);
-    assert(octeon_sne(0xabc, 0xdef) == 1);
-    assert(octeon_qmac_lo(0x0003000000000000ULL, 2, 1) == 13);
-    assert(octeon_qmacs_state(1, 1, 0x7ffffffe) == 0x17fffffffULL);
-    assert(octeon_qmacs_state(0x8000, 0x8000, 0) == 0x17fffffffULL);
-    assert(octeon_vmulu(5, 7, 11) == 46);
-    assert(octeon_vmm0(5, 13, 7, 11) == 59);
-    assert(octeon_vmm0_zeroes_mpl1() == 0);
-    assert(octeon_mtp0_zeroes_p1() == 0);
-    assert(octeon_cop2_key0_readback(0x1122334455667788ULL) ==
-           0x1122334455667788ULL);
-    assert(octeon_cop2_key2_readback(0x8877665544332211ULL) ==
-           0x8877665544332211ULL);
-    assert(octeon_cop2_key3_readback(0x0102030405060708ULL) ==
-           0x0102030405060708ULL);
-    assert(octeon_cop2_keylength_readback(0xa5) == 1);
-    assert(octeon_cop2_hsh_dat0_readback(0x0102030405060708ULL) ==
-           0x0102030405060708ULL);
-    assert(octeon_cop2_crc_len_readback(0xb5) == 5);
-    assert(octeon_cop2_crc_poly_reflect_readback(0x12345678) == 0x482c6a1e);
-    assert(octeon_cop2_gfm_mul_reflect_write_readback(
-               0x0123456789abcdefULL) == 0xf7b3d591e6a2c480ULL);
-    assert(octeon_cop2_gfm_mul_reflect_readback(
-               0xfedcba9876543210ULL) == 0x084c2a6e195d3b7fULL);
-    assert(octeon_rdhwr31_non_decreasing());
+    printf("TAP version 14\n");
+    CHECK(octeon_baddu(0x123, 0x0f0) == 0x13);
+    CHECK(octeon_dmul(0x12345678, 0x10) == 0x123456780);
+    CHECK(octeon_dpop(0xf0f0f0f0f0f0f0f0ULL) == 32);
+    CHECK(octeon_seq(0xabc, 0xabc) == 1);
+    CHECK(octeon_seq(0xabc, 0xdef) == 0);
+    CHECK(octeon_sne(0xabc, 0xabc) == 0);
+    CHECK(octeon_sne(0xabc, 0xdef) == 1);
+    CHECK(octeon_qmac_lo(0x0003000000000000ULL, 2, 1) == 13);
+    CHECK(octeon_qmacs_state(1, 1, 0x7ffffffe) == 0x17fffffffULL);
+    CHECK(octeon_qmacs_state(0x8000, 0x8000, 0) == 0x17fffffffULL);
+    CHECK(octeon_vmulu(5, 7, 11) == 46);
+    CHECK(octeon_vmm0(5, 13, 7, 11) == 59);
+    CHECK(octeon_vmm0_zeroes_mpl1() == 0);
+    CHECK(octeon_mtp0_zeroes_p1() == 0);
+    CHECK(octeon_cop2_key0_readback(0x1122334455667788ULL) ==
+          0x1122334455667788ULL);
+    CHECK(octeon_cop2_key2_readback(0x8877665544332211ULL) ==
+          0x8877665544332211ULL);
+    CHECK(octeon_cop2_key3_readback(0x0102030405060708ULL) ==
+          0x0102030405060708ULL);
+    CHECK(octeon_cop2_keylength_readback(0xa5) == 1);
+    CHECK(octeon_cop2_hsh_dat0_readback(0x0102030405060708ULL) ==
+          0x0102030405060708ULL);
+    CHECK(octeon_cop2_crc_len_readback(0xb5) == 5);
+    CHECK(octeon_cop2_crc_poly_reflect_readback(0x12345678) == 0x482c6a1e);
+    CHECK(octeon_cop2_gfm_mul_reflect_write_readback(
+              0x0123456789abcdefULL) == 0xf7b3d591e6a2c480ULL);
+    CHECK(octeon_cop2_gfm_mul_reflect_readback(
+              0xfedcba9876543210ULL) == 0x084c2a6e195d3b7fULL);
+    CHECK(octeon_rdhwr31_non_decreasing());
 
-    return 0;
+    printf("1..%d\n", tests);
+
+    return failures ? 1 : 0;
 }
diff --git a/tests/tcg/mips64/meson.build b/tests/tcg/mips64/meson.build
index c80a3716f559..3b895a169758 100644
--- a/tests/tcg/mips64/meson.build
+++ b/tests/tcg/mips64/meson.build
@@ -5,6 +5,7 @@ tests += tcg_tests['multiarch-linux-user']['tests']
 tests += {
   '../mips64/octeon-insns.c': {
     'qemu_args': ['-cpu', 'Octeon68XX'],
+    'protocol': 'tap',
   },
 }
 
-- 
2.55.0


Reply via email to