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 Swap";
36 char *instruction_name = "DBITSWAP";
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 0xffffffffffffffffULL,
45 0x0000000000000000ULL,
46 0x5555555555555555ULL,
47 0xaaaaaaaaaaaaaaaaULL,
48 0x3333333333333333ULL,
49 0xccccccccccccccccULL,
50 0xc7711cc7711cc771ULL,
51 0x388ee3388ee3388eULL,
52 0x0f0f0f0f0f0f0f0fULL,
53 0xf0f0f0f0f0f0f0f0ULL,
54 0x1f7cf0c1071f7cf0ULL,
55 0xe0830f3ef8e0830fULL,
56 0x3ff0033ff0033ff0ULL,
57 0xc00ffcc00ffcc00fULL,
58 0x7fc01ff007fc017fULL,
59 0x803fe00ff803fe80ULL,
60 0xff00ff00ff00ff00ULL,
61 0x00ff00ff00ff00ffULL,
62 0xff01fc07f01fc07fULL,
63 0x00fe03f80fe03f80ULL,
64 0xff03f03f00ff03f0ULL,
65 0x00fc0fc0ff00fc0fULL,
66 0xff07c0ff01f07f00ULL,
67 0x00f83f00fe0f80ffULL,
68 0xff0f00ff0f00ff0fULL,
69 0x00f0ff00f0ff00f0ULL,
70 0xff1f00fc7f00f0ffULL,
71 0x00e0ff0380ff0f00ULL,
72 0xff3f00f0ff0300ffULL,
73 0x00c0ff0f00fcff00ULL,
74 0xff7f00c0ff1f00f0ULL,
75 0x0080ff3f00e0ff0fULL,
76 0xffff0000ffff0000ULL,
77 0x0000ffff0000ffffULL,
78 0xffff0100fcff0700ULL,
79 0x0000feff0300f8ffULL,
80 0xffff0300f0ff3f00ULL,
81 0x0000fcff0f00c0ffULL,
82 0xffff0700c0ffff01ULL,
83 0x0000f8ff3f0000feULL,
84 0xffff0f0000ffff0fULL,
85 0x0000f0ffff0000f0ULL,
86 0xffff1f0000fcff7fULL,
87 0x0000e0ffff030080ULL,
88 0xffff3f0000f0ffffULL,
89 0x0000c0ffff0f0000ULL,
90 0xffff7f0000c0ffffULL,
91 0x000080ffff3f0000ULL,
92 0xffffff000000ffffULL,
93 0x000000ffffff0000ULL,
94 0xffffff010000fcffULL,
95 0x000000feffff0300ULL,
96 0xffffff030000f0ffULL,
97 0x000000fcffff0f00ULL,
98 0xffffff070000c0ffULL,
99 0x000000f8ffff3f00ULL,
100 0xffffff0f000000ffULL,
101 0x000000f0ffffff00ULL,
102 0xffffff1f000000fcULL,
103 0x000000e0ffffff03ULL,
104 0xffffff3f000000f0ULL,
105 0x000000c0ffffff0fULL,
106 0xffffff7f000000c0ULL,
107 0x00000080ffffff3fULL,
108 0x115667331446aa02ULL,
109 0xdf7d00c6b2c9e310ULL,
110 0x355a75559df3d101ULL,
111 0x0ef268b27a8c4772ULL,
112 0x9d49d63ebef5421aULL,
113 0x0be47d91ff50749fULL,
114 0x1ddc1a60a6533d52ULL,
115 0x3ff1c40f5965ed41ULL,
116 0x047890b36a756792ULL,
117 0xa53e9bc8a69ba7ebULL,
118 0x45176faf93d363d8ULL,
119 0x15394f8f8c152675ULL,
120 0x67281c97654a5750ULL,
121 0x2952acbf98c48615ULL,
122 0x620c42c6447def39ULL,
123 0xd15ae5454f9a7bb5ULL,
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_DBITSWAP(b64_pattern + i, b64_result + i);
131 } else {
132 do_mips64r6_DBITSWAP(b64_random + (i - PATTERN_INPUTS_64_COUNT),
133 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