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 *instruction_name = "DMUH";
35 int32_t ret;
36 uint32_t i, j;
37 struct timeval start, end;
38 double elapsed_time;
39
40 uint64_t b64_result[TEST_COUNT_TOTAL];
41 uint64_t b64_expect[TEST_COUNT_TOTAL] = {
42 0x0000000000000000ULL,
43 0x0000000000000000ULL,
44 0x0000000000000000ULL,
45 0xffffffffffffffffULL,
46 0x0000000000000000ULL,
47 0xffffffffffffffffULL,
48 0x0000000000000000ULL,
49 0xffffffffffffffffULL,
50 0x0000000000000000ULL,
51 0x0000000000000000ULL,
52 0x0000000000000000ULL,
53 0x0000000000000000ULL,
54 0x0000000000000000ULL,
55 0x0000000000000000ULL,
56 0x0000000000000000ULL,
57 0x0000000000000000ULL,
58 0x0000000000000000ULL,
59 0x0000000000000000ULL,
60 0x1c71c71c71c71c72ULL,
61 0xe38e38e38e38e38eULL,
62 0x1111111111111111ULL,
63 0xeeeeeeeeeeeeeeeeULL,
64 0x097b425ed097b426ULL,
65 0xf684bda12f684bdaULL,
66 0xffffffffffffffffULL,
67 0x0000000000000000ULL,
68 0xe38e38e38e38e38eULL,
69 0x1c71c71c71c71c71ULL,
70 0xeeeeeeeeeeeeeeeeULL,
71 0x1111111111111110ULL,
72 0xf684bda12f684bdaULL,
73 0x097b425ed097b425ULL,
74 0x0000000000000000ULL,
75 0x0000000000000000ULL,
76 0x1111111111111111ULL,
77 0xeeeeeeeeeeeeeeeeULL,
78 0x0a3d70a3d70a3d70ULL,
79 0xf5c28f5c28f5c28fULL,
80 0x05b05b05b05b05b0ULL,
81 0xfa4fa4fa4fa4fa4fULL,
82 0xffffffffffffffffULL,
83 0x0000000000000000ULL,
84 0xeeeeeeeeeeeeeeeeULL,
85 0x1111111111111110ULL,
86 0xf5c28f5c28f5c28fULL,
87 0x0a3d70a3d70a3d70ULL,
88 0xfa4fa4fa4fa4fa4fULL,
89 0x05b05b05b05b05b0ULL,
90 0x0000000000000000ULL,
91 0x0000000000000000ULL,
92 0x097b425ed097b426ULL,
93 0xf684bda12f684bdaULL,
94 0x05b05b05b05b05b0ULL,
95 0xfa4fa4fa4fa4fa4fULL,
96 0x0329161f9add3c0cULL,
97 0xfcd6e9e06522c3f3ULL,
98 0xffffffffffffffffULL,
99 0x0000000000000000ULL,
100 0xf684bda12f684bdaULL,
101 0x097b425ed097b425ULL,
102 0xfa4fa4fa4fa4fa4fULL,
103 0x05b05b05b05b05b0ULL,
104 0xfcd6e9e06522c3f3ULL,
105 0x0329161f9add3c0cULL,
106 0x37dbf4448b48bce3ULL,
107 0x01fd28a6ebd66e19ULL,
108 0x271290430f9643afULL,
109 0xcb89d38b96a86603ULL,
110 0x01fd28a6ebd66e19ULL,
111 0x00122100b25f881aULL,
112 0x016425c3dacd63e9ULL,
113 0xfe21cf6e9b332df5ULL,
114 0x271290430f9643afULL,
115 0x016425c3dacd63e9ULL,
116 0x1b549d7f3d46f8d3ULL,
117 0xdb4dd51d1b7c58f2ULL,
118 0xcb89d38b96a86603ULL,
119 0xfe21cf6e9b332df5ULL,
120 0xdb4dd51d1b7c58f2ULL,
121 0x31454bf2781d2c60ULL,
122 };
123
124 gettimeofday(&start, NULL);
125
126 for (i = 0; i < PATTERN_INPUTS_64_SHORT_COUNT; i++) {
127 for (j = 0; j < PATTERN_INPUTS_64_SHORT_COUNT; j++) {
128 do_mips64r6_DMUH(b64_pattern + i, b64_pattern + j,
129 b64_result + (PATTERN_INPUTS_64_SHORT_COUNT * i + j));
130 }
131 }
132
133 for (i = 0; i < RANDOM_INPUTS_64_SHORT_COUNT; i++) {
134 for (j = 0; j < RANDOM_INPUTS_64_SHORT_COUNT; j++) {
135 do_mips64r6_DMUH(b64_random + i, b64_random + j,
136 b64_result + (((PATTERN_INPUTS_64_SHORT_COUNT) *
137 (PATTERN_INPUTS_64_SHORT_COUNT)) +
138 RANDOM_INPUTS_64_SHORT_COUNT * i + j));
139 }
140 }
141
142 gettimeofday(&end, NULL);
143
144 elapsed_time = (end.tv_sec - start.tv_sec) * 1000.0;
145 elapsed_time += (end.tv_usec - start.tv_usec) / 1000.0;
146
147 ret = check_results_64(instruction_name, TEST_COUNT_TOTAL, elapsed_time,
148 b64_result, b64_expect);
149
150 return ret;
151}
152