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 = "DMUHU";
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 0xfffffffffffffffeULL,
43 0x0000000000000000ULL,
44 0xaaaaaaaaaaaaaaa9ULL,
45 0x5555555555555554ULL,
46 0xcccccccccccccccbULL,
47 0x3333333333333332ULL,
48 0xe38e38e38e38e38dULL,
49 0x1c71c71c71c71c70ULL,
50 0x0000000000000000ULL,
51 0x0000000000000000ULL,
52 0x0000000000000000ULL,
53 0x0000000000000000ULL,
54 0x0000000000000000ULL,
55 0x0000000000000000ULL,
56 0x0000000000000000ULL,
57 0x0000000000000000ULL,
58 0xaaaaaaaaaaaaaaa9ULL,
59 0x0000000000000000ULL,
60 0x71c71c71c71c71c6ULL,
61 0x38e38e38e38e38e3ULL,
62 0x8888888888888887ULL,
63 0x2222222222222221ULL,
64 0x97b425ed097b425eULL,
65 0x12f684bda12f684bULL,
66 0x5555555555555554ULL,
67 0x0000000000000000ULL,
68 0x38e38e38e38e38e3ULL,
69 0x1c71c71c71c71c71ULL,
70 0x4444444444444443ULL,
71 0x1111111111111110ULL,
72 0x4bda12f684bda12fULL,
73 0x097b425ed097b425ULL,
74 0xcccccccccccccccbULL,
75 0x0000000000000000ULL,
76 0x8888888888888887ULL,
77 0x4444444444444443ULL,
78 0xa3d70a3d70a3d708ULL,
79 0x28f5c28f5c28f5c2ULL,
80 0xb60b60b60b60b60aULL,
81 0x16c16c16c16c16c0ULL,
82 0x3333333333333332ULL,
83 0x0000000000000000ULL,
84 0x2222222222222221ULL,
85 0x1111111111111110ULL,
86 0x28f5c28f5c28f5c2ULL,
87 0x0a3d70a3d70a3d70ULL,
88 0x2d82d82d82d82d82ULL,
89 0x05b05b05b05b05b0ULL,
90 0xe38e38e38e38e38dULL,
91 0x0000000000000000ULL,
92 0x97b425ed097b425eULL,
93 0x4bda12f684bda12fULL,
94 0xb60b60b60b60b60aULL,
95 0x2d82d82d82d82d82ULL,
96 0xca4587e6b74f0328ULL,
97 0x1948b0fcd6e9e064ULL,
98 0x1c71c71c71c71c70ULL,
99 0x0000000000000000ULL,
100 0x12f684bda12f684bULL,
101 0x097b425ed097b425ULL,
102 0x16c16c16c16c16c0ULL,
103 0x05b05b05b05b05b0ULL,
104 0x1948b0fcd6e9e064ULL,
105 0x0329161f9add3c0cULL,
106 0x48b1c1dcdc0d6763ULL,
107 0x86260fd661cc8a61ULL,
108 0x5bd825b9f1c8246fULL,
109 0x3bd8e9d8f4da4851ULL,
110 0x86260fd661cc8a61ULL,
111 0xf78e21c74d87162aULL,
112 0xa97cd4d1e230b671ULL,
113 0x6e70e5bbf9651043ULL,
114 0x5bd825b9f1c8246fULL,
115 0xa97cd4d1e230b671ULL,
116 0x7409fad4b0e60fd3ULL,
117 0x4b9ceb6a79ae3b40ULL,
118 0x3bd8e9d8f4da4851ULL,
119 0x6e70e5bbf9651043ULL,
120 0x4b9ceb6a79ae3b40ULL,
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_DMUHU(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_DMUHU(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