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 = "Shift";
36 char *instruction_name = "DSRAV";
37 int32_t ret;
38 uint32_t i, j;
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 0xffffffffffffffffULL,
46 0xffffffffffffffffULL,
47 0xffffffffffffffffULL,
48 0xffffffffffffffffULL,
49 0xffffffffffffffffULL,
50 0xffffffffffffffffULL,
51 0xffffffffffffffffULL,
52 0x0000000000000000ULL,
53 0x0000000000000000ULL,
54 0x0000000000000000ULL,
55 0x0000000000000000ULL,
56 0x0000000000000000ULL,
57 0x0000000000000000ULL,
58 0x0000000000000000ULL,
59 0x0000000000000000ULL,
60 0xffffffffffffffffULL,
61 0xaaaaaaaaaaaaaaaaULL,
62 0xffffffffffeaaaaaULL,
63 0xfffffd5555555555ULL,
64 0xfffaaaaaaaaaaaaaULL,
65 0xfffffffffffff555ULL,
66 0xfffeaaaaaaaaaaaaULL,
67 0xffffffffffffd555ULL,
68 0x0000000000000000ULL,
69 0x5555555555555555ULL,
70 0x0000000000155555ULL,
71 0x000002aaaaaaaaaaULL,
72 0x0005555555555555ULL,
73 0x0000000000000aaaULL,
74 0x0001555555555555ULL,
75 0x0000000000002aaaULL,
76 0xffffffffffffffffULL,
77 0xccccccccccccccccULL,
78 0xfffffffffff33333ULL,
79 0xfffffe6666666666ULL,
80 0xfffcccccccccccccULL,
81 0xfffffffffffff999ULL,
82 0xffff333333333333ULL,
83 0xffffffffffffe666ULL,
84 0x0000000000000000ULL,
85 0x3333333333333333ULL,
86 0x00000000000cccccULL,
87 0x0000019999999999ULL,
88 0x0003333333333333ULL,
89 0x0000000000000666ULL,
90 0x0000ccccccccccccULL,
91 0x0000000000001999ULL,
92 0xffffffffffffffffULL,
93 0xe38e38e38e38e38eULL,
94 0xfffffffffff8e38eULL,
95 0xffffff1c71c71c71ULL,
96 0xfffe38e38e38e38eULL,
97 0xfffffffffffffc71ULL,
98 0xffff8e38e38e38e3ULL,
99 0xfffffffffffff1c7ULL,
100 0x0000000000000000ULL,
101 0x1c71c71c71c71c71ULL,
102 0x0000000000071c71ULL,
103 0x000000e38e38e38eULL,
104 0x0001c71c71c71c71ULL,
105 0x000000000000038eULL,
106 0x000071c71c71c71cULL,
107 0x0000000000000e38ULL,
108 0x886ae6cc28625540ULL,
109 0xff886ae6cc286255ULL,
110 0x886ae6cc28625540ULL,
111 0xfffe21ab9b30a189ULL,
112 0xfbbe00634d93c708ULL,
113 0xfffbbe00634d93c7ULL,
114 0xfbbe00634d93c708ULL,
115 0xffffeef8018d364fULL,
116 0xac5aaeaab9cf8b80ULL,
117 0xffac5aaeaab9cf8bULL,
118 0xac5aaeaab9cf8b80ULL,
119 0xfffeb16abaaae73eULL,
120 0x704f164d5e31e24eULL,
121 0x00704f164d5e31e2ULL,
122 0x704f164d5e31e24eULL,
123 0x0001c13c593578c7ULL,
124 };
125
126 gettimeofday(&start, NULL);
127
128 for (i = 0; i < PATTERN_INPUTS_64_SHORT_COUNT; i++) {
129 for (j = 0; j < PATTERN_INPUTS_64_SHORT_COUNT; j++) {
130 do_mips64r6_DSRAV(b64_pattern + i, b64_pattern + j,
131 b64_result + (PATTERN_INPUTS_64_SHORT_COUNT * i + j));
132 }
133 }
134
135 for (i = 0; i < RANDOM_INPUTS_64_SHORT_COUNT; i++) {
136 for (j = 0; j < RANDOM_INPUTS_64_SHORT_COUNT; j++) {
137 do_mips64r6_DSRAV(b64_random + i, b64_random + j,
138 b64_result + (((PATTERN_INPUTS_64_SHORT_COUNT) *
139 (PATTERN_INPUTS_64_SHORT_COUNT)) +
140 RANDOM_INPUTS_64_SHORT_COUNT * i + j));
141 }
142 }
143
144 gettimeofday(&end, NULL);
145
146 elapsed_time = (end.tv_sec - start.tv_sec) * 1000.0;
147 elapsed_time += (end.tv_usec - start.tv_usec) / 1000.0;
148
149 ret = check_results_64(instruction_name, TEST_COUNT_TOTAL, elapsed_time,
150 b64_result, b64_expect);
151
152 return ret;
153}
154