1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22#include <sys/time.h>
23#include <stdint.h>
24
25#include "../../../../include/wrappers_mips64r6.h"
26#include "../../../../include/test_inputs_64.h"
27#include "../../../../include/test_utils_64.h"
28
29#define TEST_COUNT_TOTAL (PATTERN_INPUTS_64_COUNT + RANDOM_INPUTS_64_COUNT)
30
31
32int32_t main(void)
33{
34 char *isa_ase_name = "mips64r6";
35 char *group_name = "Int Multiply";
36 char *instruction_name = "MUH";
37 int32_t ret;
38 uint32_t i, j;
39 struct timeval start, end;
40 double elapsed_time;
41
42 uint64_t b64_result[TEST_COUNT_TOTAL];
43 uint64_t b64_expect[TEST_COUNT_TOTAL] = {
44 0x0000000000000000ULL,
45 0x0000000000000000ULL,
46 0x0000000000000000ULL,
47 0xffffffffffffffffULL,
48 0x0000000000000000ULL,
49 0xffffffffffffffffULL,
50 0x0000000000000000ULL,
51 0xffffffffffffffffULL,
52 0x0000000000000000ULL,
53 0x0000000000000000ULL,
54 0x0000000000000000ULL,
55 0x0000000000000000ULL,
56 0x0000000000000000ULL,
57 0x0000000000000000ULL,
58 0x0000000000000000ULL,
59 0x0000000000000000ULL,
60 0x0000000000000000ULL,
61 0x0000000000000000ULL,
62 0x000000001c71c71cULL,
63 0xffffffffe38e38e3ULL,
64 0x0000000011111111ULL,
65 0xffffffffeeeeeeeeULL,
66 0x00000000097b425fULL,
67 0xfffffffff684bda1ULL,
68 0xffffffffffffffffULL,
69 0x0000000000000000ULL,
70 0xffffffffe38e38e3ULL,
71 0x000000001c71c71cULL,
72 0xffffffffeeeeeeeeULL,
73 0x0000000011111110ULL,
74 0xfffffffff684bda1ULL,
75 0x00000000097b425eULL,
76 0x0000000000000000ULL,
77 0x0000000000000000ULL,
78 0x0000000011111111ULL,
79 0xffffffffeeeeeeeeULL,
80 0x000000000a3d70a4ULL,
81 0xfffffffff5c28f5cULL,
82 0x0000000005b05b05ULL,
83 0xfffffffffa4fa4faULL,
84 0xffffffffffffffffULL,
85 0x0000000000000000ULL,
86 0xffffffffeeeeeeeeULL,
87 0x0000000011111110ULL,
88 0xfffffffff5c28f5cULL,
89 0x000000000a3d70a3ULL,
90 0xfffffffffa4fa4faULL,
91 0x0000000005b05b05ULL,
92 0x0000000000000000ULL,
93 0x0000000000000000ULL,
94 0x00000000097b425fULL,
95 0xfffffffff684bda1ULL,
96 0x0000000005b05b05ULL,
97 0xfffffffffa4fa4faULL,
98 0x000000000329161fULL,
99 0xfffffffffcd6e9e0ULL,
100 0xffffffffffffffffULL,
101 0x0000000000000000ULL,
102 0xfffffffff684bda1ULL,
103 0x00000000097b425eULL,
104 0xfffffffffa4fa4faULL,
105 0x0000000005b05b05ULL,
106 0xfffffffffcd6e9e0ULL,
107 0x000000000329161fULL,
108 0x0000000037dbf444ULL,
109 0x0000000001fd28a7ULL,
110 0x0000000027129043ULL,
111 0xffffffffcb89d38bULL,
112 0x0000000001fd28a7ULL,
113 0x0000000000122100ULL,
114 0x00000000016425c3ULL,
115 0xfffffffffe21cf6eULL,
116 0x0000000027129043ULL,
117 0x00000000016425c3ULL,
118 0x000000001b549d7fULL,
119 0xffffffffdb4dd51cULL,
120 0xffffffffcb89d38bULL,
121 0xfffffffffe21cf6eULL,
122 0xffffffffdb4dd51cULL,
123 0x0000000031454bf2ULL,
124 };
125
126 gettimeofday(&start, NULL);
127
128 for (i = 0; i < PATTERN_INPUTS_64_SHORT_COUNT; i++) {
129 for (j = 0; j < PATTERN_INPUTS_64_SHORT_COUNT; j++) {
130 do_mips64r6_MUH(b64_pattern_se + i, b64_pattern_se + j,
131 b64_result + (PATTERN_INPUTS_64_SHORT_COUNT * i + j));
132 }
133 }
134
135 for (i = 0; i < RANDOM_INPUTS_64_SHORT_COUNT; i++) {
136 for (j = 0; j < RANDOM_INPUTS_64_SHORT_COUNT; j++) {
137 do_mips64r6_MUH(b64_random_se + i, b64_random_se + j,
138 b64_result + (((PATTERN_INPUTS_64_SHORT_COUNT) *
139 (PATTERN_INPUTS_64_SHORT_COUNT)) +
140 RANDOM_INPUTS_64_SHORT_COUNT * i + j));
141 }
142 }
143
144 gettimeofday(&end, NULL);
145
146 elapsed_time = (end.tv_sec - start.tv_sec) * 1000.0;
147 elapsed_time += (end.tv_usec - start.tv_usec) / 1000.0;
148
149 ret = check_results_64(instruction_name, TEST_COUNT_TOTAL, elapsed_time,
150 b64_result, b64_expect);
151
152 return ret;
153}
154