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