1*26b32563SAleksandar Markovic /* 2*26b32563SAleksandar Markovic * Header file for test utilities 3*26b32563SAleksandar Markovic * 4*26b32563SAleksandar Markovic * Copyright (C) 2019 Wave Computing, Inc. 5*26b32563SAleksandar Markovic * Copyright (C) 2019 Aleksandar Markovic <amarkovic@wavecomp.com> 6*26b32563SAleksandar Markovic * 7*26b32563SAleksandar Markovic * This program is free software: you can redistribute it and/or modify 8*26b32563SAleksandar Markovic * it under the terms of the GNU General Public License as published by 9*26b32563SAleksandar Markovic * the Free Software Foundation, either version 2 of the License, or 10*26b32563SAleksandar Markovic * (at your option) any later version. 11*26b32563SAleksandar Markovic * 12*26b32563SAleksandar Markovic * This program is distributed in the hope that it will be useful, 13*26b32563SAleksandar Markovic * but WITHOUT ANY WARRANTY; without even the implied warranty of 14*26b32563SAleksandar Markovic * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15*26b32563SAleksandar Markovic * GNU General Public License for more details. 16*26b32563SAleksandar Markovic * 17*26b32563SAleksandar Markovic * You should have received a copy of the GNU General Public License 18*26b32563SAleksandar Markovic * along with this program. If not, see <https://www.gnu.org/licenses/>. 19*26b32563SAleksandar Markovic * 20*26b32563SAleksandar Markovic */ 21*26b32563SAleksandar Markovic 22*26b32563SAleksandar Markovic #ifndef TEST_UTILS_32_H 23*26b32563SAleksandar Markovic #define TEST_UTILS_32_H 24*26b32563SAleksandar Markovic 25*26b32563SAleksandar Markovic #include <stdio.h> 26*26b32563SAleksandar Markovic #include <stdint.h> 27*26b32563SAleksandar Markovic #include <inttypes.h> 28*26b32563SAleksandar Markovic #include <string.h> 29*26b32563SAleksandar Markovic 30*26b32563SAleksandar Markovic #define PRINT_RESULTS 0 31*26b32563SAleksandar Markovic 32*26b32563SAleksandar Markovic 33*26b32563SAleksandar Markovic static inline int32_t check_results_32(const char *instruction_name, 34*26b32563SAleksandar Markovic const uint32_t test_count, 35*26b32563SAleksandar Markovic const double elapsed_time, 36*26b32563SAleksandar Markovic const uint32_t *b32_result, 37*26b32563SAleksandar Markovic const uint32_t *b32_expect) 38*26b32563SAleksandar Markovic { 39*26b32563SAleksandar Markovic #if PRINT_RESULTS 40*26b32563SAleksandar Markovic uint32_t ii; 41*26b32563SAleksandar Markovic printf("\n"); 42*26b32563SAleksandar Markovic for (ii = 0; ii < test_count; ii++) { 43*26b32563SAleksandar Markovic uint64_t a; 44*26b32563SAleksandar Markovic memcpy(&a, (b32_result + ii), 8); 45*26b32563SAleksandar Markovic if (ii % 8 != 0) { 46*26b32563SAleksandar Markovic printf(" 0x%08lxULL,\n", a); 47*26b32563SAleksandar Markovic } else { 48*26b32563SAleksandar Markovic printf(" 0x%08lxULL, /* %3d */\n", 49*26b32563SAleksandar Markovic a, ii); 50*26b32563SAleksandar Markovic } 51*26b32563SAleksandar Markovic } 52*26b32563SAleksandar Markovic printf("\n"); 53*26b32563SAleksandar Markovic #endif 54*26b32563SAleksandar Markovic uint32_t i; 55*26b32563SAleksandar Markovic uint32_t pass_count = 0; 56*26b32563SAleksandar Markovic uint32_t fail_count = 0; 57*26b32563SAleksandar Markovic 58*26b32563SAleksandar Markovic printf("%s: ", instruction_name); 59*26b32563SAleksandar Markovic for (i = 0; i < test_count; i++) { 60*26b32563SAleksandar Markovic if (b32_result[i] == b32_expect[i]) { 61*26b32563SAleksandar Markovic pass_count++; 62*26b32563SAleksandar Markovic } else { 63*26b32563SAleksandar Markovic fail_count++; 64*26b32563SAleksandar Markovic } 65*26b32563SAleksandar Markovic } 66*26b32563SAleksandar Markovic 67*26b32563SAleksandar Markovic printf("PASS: %3d FAIL: %3d elapsed time: %5.2f ms\n", 68*26b32563SAleksandar Markovic pass_count, fail_count, elapsed_time); 69*26b32563SAleksandar Markovic 70*26b32563SAleksandar Markovic if (fail_count > 0) { 71*26b32563SAleksandar Markovic return -1; 72*26b32563SAleksandar Markovic } else { 73*26b32563SAleksandar Markovic return 0; 74*26b32563SAleksandar Markovic } 75*26b32563SAleksandar Markovic } 76*26b32563SAleksandar Markovic 77*26b32563SAleksandar Markovic 78*26b32563SAleksandar Markovic #endif 79