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 = "SRLV";
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 0x0000000000000001ULL,
45 0xffffffffffffffffULL,
46 0x00000000003fffffULL,
47 0x00000000000007ffULL,
48 0x00000000000fffffULL,
49 0x0000000000001fffULL,
50 0x000000000003ffffULL,
51 0x0000000000007fffULL,
52 0x0000000000000000ULL,
53 0x0000000000000000ULL,
54 0x0000000000000000ULL,
55 0x0000000000000000ULL,
56 0x0000000000000000ULL,
57 0x0000000000000000ULL,
58 0x0000000000000000ULL,
59 0x0000000000000000ULL,
60 0x0000000000000001ULL,
61 0xffffffffaaaaaaaaULL,
62 0x00000000002aaaaaULL,
63 0x0000000000000555ULL,
64 0x00000000000aaaaaULL,
65 0x0000000000001555ULL,
66 0x000000000002aaaaULL,
67 0x0000000000005555ULL,
68 0x0000000000000000ULL,
69 0x0000000055555555ULL,
70 0x0000000000155555ULL,
71 0x00000000000002aaULL,
72 0x0000000000055555ULL,
73 0x0000000000000aaaULL,
74 0x0000000000015555ULL,
75 0x0000000000002aaaULL,
76 0x0000000000000001ULL,
77 0xffffffffccccccccULL,
78 0x0000000000333333ULL,
79 0x0000000000000666ULL,
80 0x00000000000cccccULL,
81 0x0000000000001999ULL,
82 0x0000000000033333ULL,
83 0x0000000000006666ULL,
84 0x0000000000000000ULL,
85 0x0000000033333333ULL,
86 0x00000000000cccccULL,
87 0x0000000000000199ULL,
88 0x0000000000033333ULL,
89 0x0000000000000666ULL,
90 0x000000000000ccccULL,
91 0x0000000000001999ULL,
92 0x0000000000000001ULL,
93 0xffffffff8e38e38eULL,
94 0x0000000000238e38ULL,
95 0x0000000000000471ULL,
96 0x000000000008e38eULL,
97 0x00000000000011c7ULL,
98 0x00000000000238e3ULL,
99 0x000000000000471cULL,
100 0x0000000000000000ULL,
101 0x0000000071c71c71ULL,
102 0x00000000001c71c7ULL,
103 0x000000000000038eULL,
104 0x0000000000071c71ULL,
105 0x0000000000000e38ULL,
106 0x000000000001c71cULL,
107 0x00000000000038e3ULL,
108 0x0000000028625540ULL,
109 0x0000000000286255ULL,
110 0x0000000028625540ULL,
111 0x000000000000a189ULL,
112 0x000000004d93c708ULL,
113 0x00000000004d93c7ULL,
114 0x000000004d93c708ULL,
115 0x000000000001364fULL,
116 0xffffffffb9cf8b80ULL,
117 0x0000000000b9cf8bULL,
118 0xffffffffb9cf8b80ULL,
119 0x000000000002e73eULL,
120 0x000000005e31e24eULL,
121 0x00000000005e31e2ULL,
122 0x000000005e31e24eULL,
123 0x00000000000178c7ULL,
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_SRLV(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_SRLV(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