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 = "BITSWAP";
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 0xffffffffffffffffULL,
43 0x0000000000000000ULL,
44 0x0000000055555555ULL,
45 0xffffffffaaaaaaaaULL,
46 0x0000000033333333ULL,
47 0xffffffffccccccccULL,
48 0x00000000711cc771ULL,
49 0xffffffff8ee3388eULL,
50 0x000000000f0f0f0fULL,
51 0xfffffffff0f0f0f0ULL,
52 0x00000000071f7cf0ULL,
53 0xfffffffff8e0830fULL,
54 0xfffffffff0033ff0ULL,
55 0x000000000ffcc00fULL,
56 0x0000000007fc017fULL,
57 0xfffffffff803fe80ULL,
58 0xffffffffff00ff00ULL,
59 0x0000000000ff00ffULL,
60 0xfffffffff01fc07fULL,
61 0x000000000fe03f80ULL,
62 0x0000000000ff03f0ULL,
63 0xffffffffff00fc0fULL,
64 0x0000000001f07f00ULL,
65 0xfffffffffe0f80ffULL,
66 0x000000000f00ff0fULL,
67 0xfffffffff0ff00f0ULL,
68 0x000000007f00f0ffULL,
69 0xffffffff80ff0f00ULL,
70 0xffffffffff0300ffULL,
71 0x0000000000fcff00ULL,
72 0xffffffffff1f00f0ULL,
73 0x0000000000e0ff0fULL,
74 0xffffffffffff0000ULL,
75 0x000000000000ffffULL,
76 0xfffffffffcff0700ULL,
77 0x000000000300f8ffULL,
78 0xfffffffff0ff3f00ULL,
79 0x000000000f00c0ffULL,
80 0xffffffffc0ffff01ULL,
81 0x000000003f0000feULL,
82 0x0000000000ffff0fULL,
83 0xffffffffff0000f0ULL,
84 0x0000000000fcff7fULL,
85 0xffffffffff030080ULL,
86 0x0000000000f0ffffULL,
87 0xffffffffff0f0000ULL,
88 0x0000000000c0ffffULL,
89 0xffffffffff3f0000ULL,
90 0x000000000000ffffULL,
91 0xffffffffffff0000ULL,
92 0x000000000000fcffULL,
93 0xffffffffffff0300ULL,
94 0x000000000000f0ffULL,
95 0xffffffffffff0f00ULL,
96 0x000000000000c0ffULL,
97 0xffffffffffff3f00ULL,
98 0x00000000000000ffULL,
99 0xffffffffffffff00ULL,
100 0x00000000000000fcULL,
101 0xffffffffffffff03ULL,
102 0x00000000000000f0ULL,
103 0xffffffffffffff0fULL,
104 0x00000000000000c0ULL,
105 0xffffffffffffff3fULL,
106 0x000000001446aa02ULL,
107 0xffffffffb2c9e310ULL,
108 0xffffffff9df3d101ULL,
109 0x000000007a8c4772ULL,
110 0xffffffffbef5421aULL,
111 0xffffffffff50749fULL,
112 0xffffffffa6533d52ULL,
113 0x000000005965ed41ULL,
114 0x000000006a756792ULL,
115 0xffffffffa69ba7ebULL,
116 0xffffffff93d363d8ULL,
117 0xffffffff8c152675ULL,
118 0x00000000654a5750ULL,
119 0xffffffff98c48615ULL,
120 0x00000000447def39ULL,
121 0x000000004f9a7bb5ULL,
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_BITSWAP(b64_pattern + i, b64_result + i);
129 } else {
130 do_mips64r6_BITSWAP(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