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 = "DSRLV";
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 0x0000000000000001ULL,
43 0xffffffffffffffffULL,
44 0x00000000003fffffULL,
45 0x000007ffffffffffULL,
46 0x000fffffffffffffULL,
47 0x0000000000001fffULL,
48 0x0003ffffffffffffULL,
49 0x0000000000007fffULL,
50 0x0000000000000000ULL,
51 0x0000000000000000ULL,
52 0x0000000000000000ULL,
53 0x0000000000000000ULL,
54 0x0000000000000000ULL,
55 0x0000000000000000ULL,
56 0x0000000000000000ULL,
57 0x0000000000000000ULL,
58 0x0000000000000001ULL,
59 0xaaaaaaaaaaaaaaaaULL,
60 0x00000000002aaaaaULL,
61 0x0000055555555555ULL,
62 0x000aaaaaaaaaaaaaULL,
63 0x0000000000001555ULL,
64 0x0002aaaaaaaaaaaaULL,
65 0x0000000000005555ULL,
66 0x0000000000000000ULL,
67 0x5555555555555555ULL,
68 0x0000000000155555ULL,
69 0x000002aaaaaaaaaaULL,
70 0x0005555555555555ULL,
71 0x0000000000000aaaULL,
72 0x0001555555555555ULL,
73 0x0000000000002aaaULL,
74 0x0000000000000001ULL,
75 0xccccccccccccccccULL,
76 0x0000000000333333ULL,
77 0x0000066666666666ULL,
78 0x000cccccccccccccULL,
79 0x0000000000001999ULL,
80 0x0003333333333333ULL,
81 0x0000000000006666ULL,
82 0x0000000000000000ULL,
83 0x3333333333333333ULL,
84 0x00000000000cccccULL,
85 0x0000019999999999ULL,
86 0x0003333333333333ULL,
87 0x0000000000000666ULL,
88 0x0000ccccccccccccULL,
89 0x0000000000001999ULL,
90 0x0000000000000001ULL,
91 0xe38e38e38e38e38eULL,
92 0x000000000038e38eULL,
93 0x0000071c71c71c71ULL,
94 0x000e38e38e38e38eULL,
95 0x0000000000001c71ULL,
96 0x00038e38e38e38e3ULL,
97 0x00000000000071c7ULL,
98 0x0000000000000000ULL,
99 0x1c71c71c71c71c71ULL,
100 0x0000000000071c71ULL,
101 0x000000e38e38e38eULL,
102 0x0001c71c71c71c71ULL,
103 0x000000000000038eULL,
104 0x000071c71c71c71cULL,
105 0x0000000000000e38ULL,
106 0x886ae6cc28625540ULL,
107 0x00886ae6cc286255ULL,
108 0x886ae6cc28625540ULL,
109 0x000221ab9b30a189ULL,
110 0xfbbe00634d93c708ULL,
111 0x00fbbe00634d93c7ULL,
112 0xfbbe00634d93c708ULL,
113 0x0003eef8018d364fULL,
114 0xac5aaeaab9cf8b80ULL,
115 0x00ac5aaeaab9cf8bULL,
116 0xac5aaeaab9cf8b80ULL,
117 0x0002b16abaaae73eULL,
118 0x704f164d5e31e24eULL,
119 0x00704f164d5e31e2ULL,
120 0x704f164d5e31e24eULL,
121 0x0001c13c593578c7ULL,
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_DSRLV(b64_pattern + i, b64_pattern + 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_DSRLV(b64_random + i, b64_random + 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