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 = "MUHU";
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 0xffffffffaaaaaaa9ULL,
45 0x0000000055555554ULL,
46 0xffffffffcccccccbULL,
47 0x0000000033333332ULL,
48 0xffffffffe38e38e2ULL,
49 0x000000001c71c71bULL,
50 0x0000000000000000ULL,
51 0x0000000000000000ULL,
52 0x0000000000000000ULL,
53 0x0000000000000000ULL,
54 0x0000000000000000ULL,
55 0x0000000000000000ULL,
56 0x0000000000000000ULL,
57 0x0000000000000000ULL,
58 0xffffffffaaaaaaa9ULL,
59 0x0000000000000000ULL,
60 0x0000000071c71c70ULL,
61 0x0000000038e38e38ULL,
62 0xffffffff88888887ULL,
63 0x0000000022222221ULL,
64 0xffffffff97b425ecULL,
65 0x0000000012f684bdULL,
66 0x0000000055555554ULL,
67 0x0000000000000000ULL,
68 0x0000000038e38e38ULL,
69 0x000000001c71c71cULL,
70 0x0000000044444443ULL,
71 0x0000000011111110ULL,
72 0x000000004bda12f6ULL,
73 0x00000000097b425eULL,
74 0xffffffffcccccccbULL,
75 0x0000000000000000ULL,
76 0xffffffff88888887ULL,
77 0x0000000044444443ULL,
78 0xffffffffa3d70a3cULL,
79 0x0000000028f5c28fULL,
80 0xffffffffb60b60b4ULL,
81 0x0000000016c16c16ULL,
82 0x0000000033333332ULL,
83 0x0000000000000000ULL,
84 0x0000000022222221ULL,
85 0x0000000011111110ULL,
86 0x0000000028f5c28fULL,
87 0x000000000a3d70a3ULL,
88 0x000000002d82d82dULL,
89 0x0000000005b05b05ULL,
90 0xffffffffe38e38e2ULL,
91 0x0000000000000000ULL,
92 0xffffffff97b425ecULL,
93 0x000000004bda12f6ULL,
94 0xffffffffb60b60b4ULL,
95 0x000000002d82d82dULL,
96 0xffffffffca4587e5ULL,
97 0x000000001948b0fcULL,
98 0x000000001c71c71bULL,
99 0x0000000000000000ULL,
100 0x0000000012f684bdULL,
101 0x00000000097b425eULL,
102 0x0000000016c16c16ULL,
103 0x0000000005b05b05ULL,
104 0x000000001948b0fcULL,
105 0x000000000329161fULL,
106 0x0000000048b1c1dcULL,
107 0xffffffff86260fd6ULL,
108 0x000000005bd825b9ULL,
109 0x000000003bd8e9d8ULL,
110 0xffffffff86260fd6ULL,
111 0xfffffffff78e21c6ULL,
112 0xffffffffa97cd4d0ULL,
113 0x000000006e70e5bbULL,
114 0x000000005bd825b9ULL,
115 0xffffffffa97cd4d0ULL,
116 0x000000007409fad3ULL,
117 0x000000004b9ceb69ULL,
118 0x000000003bd8e9d8ULL,
119 0x000000006e70e5bbULL,
120 0x000000004b9ceb69ULL,
121 0x0000000031454bf2ULL,
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_MUHU(b64_pattern_se + i, b64_pattern_se + 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_MUHU(b64_random_se + i, b64_random_se + 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