[Qemu-devel] [PATCH v8 36/37] target/mips: tests/tcg: Add optional printing of more detailed failure info

Aleksandar Markovic posted 37 patches 6 years, 5 months ago
[Qemu-devel] [PATCH v8 36/37] target/mips: tests/tcg: Add optional printing of more detailed failure info
Posted by Aleksandar Markovic 6 years, 5 months ago
From: Aleksandar Markovic <amarkovic@wavecomp.com>

There is a need for printing input and output data for failure cases,
for debugging purpose. This is achieved by this patch, and only if a
preprocessor constant is manually set to 1. (Assumption is that the
need for such printout is relatively rare.)

Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com>
---
 tests/tcg/mips/include/test_utils_128.h | 23 ++++++++++++++++++++++-
 1 file changed, 22 insertions(+), 1 deletion(-)

diff --git a/tests/tcg/mips/include/test_utils_128.h b/tests/tcg/mips/include/test_utils_128.h
index 2fea610..0dd3868 100644
--- a/tests/tcg/mips/include/test_utils_128.h
+++ b/tests/tcg/mips/include/test_utils_128.h
@@ -27,7 +27,8 @@
 #include <inttypes.h>
 #include <string.h>
 
-#define PRINT_RESULTS 0
+#define PRINT_RESULTS    0
+#define PRINT_FAILURES   0
 
 
 static inline int32_t check_results_128(const char *isa_ase_name,
@@ -65,6 +66,26 @@ static inline int32_t check_results_128(const char *isa_ase_name,
             (b128_result[2 * i + 1] == b128_expect[2 * i + 1])) {
             pass_count++;
         } else {
+#if PRINT_FAILURES
+            uint32_t ii;
+            uint64_t a, b;
+
+            printf("\n");
+
+            printf("FAILURE for test case %d!\n", i);
+
+            memcpy(&a, (b128_expect + 2 * i), 8);
+            memcpy(&b, (b128_expect + 2 * i + 1), 8);
+            printf("Expected result : { 0x%016llxULL, 0x%016llxULL, },\n",
+                   a, b);
+
+            memcpy(&a, (b128_result + 2 * i), 8);
+            memcpy(&b, (b128_result + 2 * i + 1), 8);
+            printf("Actual result   : { 0x%016llxULL, 0x%016llxULL, },\n",
+                   a, b);
+
+            printf("\n");
+#endif
             fail_count++;
         }
     }
-- 
2.7.4


Re: [Qemu-devel] [EXTERNAL][PATCH v8 36/37] target/mips: tests/tcg: Add optional printing of more detailed failure info
Posted by Aleksandar Rikalo 6 years, 5 months ago
> From: Aleksandar Markovic <aleksandar.markovic@rt-rk.com>
> Sent: Monday, August 19, 2019 2:08 PM
> To: qemu-devel@nongnu.org <qemu-devel@nongnu.org>
> Cc: philmd@redhat.com <philmd@redhat.com>; Aleksandar Markovic <amarkovic@wavecomp.com>; Aleksandar Rikalo <arikalo@wavecomp.com>
> Subject: [EXTERNAL][PATCH v8 36/37] target/mips: tests/tcg: Add optional printing of more detailed failure info
>
> From: Aleksandar Markovic <amarkovic@wavecomp.com>
>
> There is a need for printing input and output data for failure cases,
> for debugging purpose. This is achieved by this patch, and only if a
> preprocessor constant is manually set to 1. (Assumption is that the
> need for such printout is relatively rare.)
>
> Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com>
> ---
>  tests/tcg/mips/include/test_utils_128.h | 23 ++++++++++++++++++++++-
>  1 file changed, 22 insertions(+), 1 deletion(-)
>
> diff --git a/tests/tcg/mips/include/test_utils_128.h b/tests/tcg/mips/include/test_utils_128.h
> index 2fea610..0dd3868 100644
> --- a/tests/tcg/mips/include/test_utils_128.h
> +++ b/tests/tcg/mips/include/test_utils_128.h
> @@ -27,7 +27,8 @@
>  #include <inttypes.h>
>  #include <string.h>
>
> -#define PRINT_RESULTS 0
> +#define PRINT_RESULTS    0
> +#define PRINT_FAILURES   0
>
>
>  static inline int32_t check_results_128(const char *isa_ase_name,
> @@ -65,6 +66,26 @@ static inline int32_t check_results_128(const char *isa_ase_name,
>              (b128_result[2 * i + 1] == b128_expect[2 * i + 1])) {
>              pass_count++;
>          } else {
> +#if PRINT_FAILURES
> +            uint32_t ii;
> +            uint64_t a, b;
> +
> +            printf("\n");
> +
> +            printf("FAILURE for test case %d!\n", i);
> +
> +            memcpy(&a, (b128_expect + 2 * i), 8);
> +            memcpy(&b, (b128_expect + 2 * i + 1), 8);
> +            printf("Expected result : { 0x%016llxULL, 0x%016llxULL, },\n",
> +                   a, b);
> +
> +            memcpy(&a, (b128_result + 2 * i), 8);
> +            memcpy(&b, (b128_result + 2 * i + 1), 8);
> +            printf("Actual result   : { 0x%016llxULL, 0x%016llxULL, },\n",
> +                   a, b);
> +
> +            printf("\n");
> +#endif
>              fail_count++;
>          }
>      }
> --
> 2.7.4

Reviewed-by: Aleksandar Rikalo <arikalo@wavecomp.com>