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 = "DCLZ";
35 int32_t ret;
36 uint32_t i;
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 0x0000000000000040ULL,
44 0x0000000000000000ULL,
45 0x0000000000000001ULL,
46 0x0000000000000000ULL,
47 0x0000000000000002ULL,
48 0x0000000000000000ULL,
49 0x0000000000000003ULL,
50 0x0000000000000000ULL,
51 0x0000000000000004ULL,
52 0x0000000000000000ULL,
53 0x0000000000000005ULL,
54 0x0000000000000000ULL,
55 0x0000000000000006ULL,
56 0x0000000000000000ULL,
57 0x0000000000000007ULL,
58 0x0000000000000000ULL,
59 0x0000000000000008ULL,
60 0x0000000000000000ULL,
61 0x0000000000000009ULL,
62 0x0000000000000000ULL,
63 0x000000000000000aULL,
64 0x0000000000000000ULL,
65 0x000000000000000bULL,
66 0x0000000000000000ULL,
67 0x000000000000000cULL,
68 0x0000000000000000ULL,
69 0x000000000000000dULL,
70 0x0000000000000000ULL,
71 0x000000000000000eULL,
72 0x0000000000000000ULL,
73 0x000000000000000fULL,
74 0x0000000000000000ULL,
75 0x0000000000000010ULL,
76 0x0000000000000000ULL,
77 0x0000000000000011ULL,
78 0x0000000000000000ULL,
79 0x0000000000000012ULL,
80 0x0000000000000000ULL,
81 0x0000000000000013ULL,
82 0x0000000000000000ULL,
83 0x0000000000000014ULL,
84 0x0000000000000000ULL,
85 0x0000000000000015ULL,
86 0x0000000000000000ULL,
87 0x0000000000000016ULL,
88 0x0000000000000000ULL,
89 0x0000000000000017ULL,
90 0x0000000000000000ULL,
91 0x0000000000000018ULL,
92 0x0000000000000000ULL,
93 0x0000000000000019ULL,
94 0x0000000000000000ULL,
95 0x000000000000001aULL,
96 0x0000000000000000ULL,
97 0x000000000000001bULL,
98 0x0000000000000000ULL,
99 0x000000000000001cULL,
100 0x0000000000000000ULL,
101 0x000000000000001dULL,
102 0x0000000000000000ULL,
103 0x000000000000001eULL,
104 0x0000000000000000ULL,
105 0x000000000000001fULL,
106 0x0000000000000000ULL,
107 0x0000000000000000ULL,
108 0x0000000000000000ULL,
109 0x0000000000000001ULL,
110 0x0000000000000000ULL,
111 0x0000000000000000ULL,
112 0x0000000000000000ULL,
113 0x0000000000000000ULL,
114 0x0000000000000002ULL,
115 0x0000000000000000ULL,
116 0x0000000000000000ULL,
117 0x0000000000000000ULL,
118 0x0000000000000000ULL,
119 0x0000000000000000ULL,
120 0x0000000000000001ULL,
121 0x0000000000000000ULL,
122 };
123
124 gettimeofday(&start, NULL);
125
126 for (i = 0; i < TEST_COUNT_TOTAL; i++) {
127 if (i < PATTERN_INPUTS_64_COUNT) {
128 do_mips64r6_DCLZ(b64_pattern + i, b64_result + i);
129 } else {
130 do_mips64r6_DCLZ(b64_random + (i - PATTERN_INPUTS_64_COUNT),
131 b64_result + i);
132 }
133 }
134
135 gettimeofday(&end, NULL);
136
137 elapsed_time = (end.tv_sec - start.tv_sec) * 1000.0;
138 elapsed_time += (end.tv_usec - start.tv_usec) / 1000.0;
139
140 ret = check_results_64(instruction_name, TEST_COUNT_TOTAL, elapsed_time,
141 b64_result, b64_expect);
142
143 return ret;
144}
145