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 = "SRAV";
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 0xffffffffffffffffULL,
43 0xffffffffffffffffULL,
44 0xffffffffffffffffULL,
45 0xffffffffffffffffULL,
46 0xffffffffffffffffULL,
47 0xffffffffffffffffULL,
48 0xffffffffffffffffULL,
49 0xffffffffffffffffULL,
50 0x0000000000000000ULL,
51 0x0000000000000000ULL,
52 0x0000000000000000ULL,
53 0x0000000000000000ULL,
54 0x0000000000000000ULL,
55 0x0000000000000000ULL,
56 0x0000000000000000ULL,
57 0x0000000000000000ULL,
58 0xffffffffffffffffULL,
59 0xffffffffaaaaaaaaULL,
60 0xffffffffffeaaaaaULL,
61 0xfffffffffffffd55ULL,
62 0xfffffffffffaaaaaULL,
63 0xfffffffffffff555ULL,
64 0xfffffffffffeaaaaULL,
65 0xffffffffffffd555ULL,
66 0x0000000000000000ULL,
67 0x0000000055555555ULL,
68 0x0000000000155555ULL,
69 0x00000000000002aaULL,
70 0x0000000000055555ULL,
71 0x0000000000000aaaULL,
72 0x0000000000015555ULL,
73 0x0000000000002aaaULL,
74 0xffffffffffffffffULL,
75 0xffffffffccccccccULL,
76 0xfffffffffff33333ULL,
77 0xfffffffffffffe66ULL,
78 0xfffffffffffcccccULL,
79 0xfffffffffffff999ULL,
80 0xffffffffffff3333ULL,
81 0xffffffffffffe666ULL,
82 0x0000000000000000ULL,
83 0x0000000033333333ULL,
84 0x00000000000cccccULL,
85 0x0000000000000199ULL,
86 0x0000000000033333ULL,
87 0x0000000000000666ULL,
88 0x000000000000ccccULL,
89 0x0000000000001999ULL,
90 0xffffffffffffffffULL,
91 0xffffffff8e38e38eULL,
92 0xffffffffffe38e38ULL,
93 0xfffffffffffffc71ULL,
94 0xfffffffffff8e38eULL,
95 0xfffffffffffff1c7ULL,
96 0xfffffffffffe38e3ULL,
97 0xffffffffffffc71cULL,
98 0x0000000000000000ULL,
99 0x0000000071c71c71ULL,
100 0x00000000001c71c7ULL,
101 0x000000000000038eULL,
102 0x0000000000071c71ULL,
103 0x0000000000000e38ULL,
104 0x000000000001c71cULL,
105 0x00000000000038e3ULL,
106 0x0000000028625540ULL,
107 0x0000000000286255ULL,
108 0x0000000028625540ULL,
109 0x000000000000a189ULL,
110 0x000000004d93c708ULL,
111 0x00000000004d93c7ULL,
112 0x000000004d93c708ULL,
113 0x000000000001364fULL,
114 0xffffffffb9cf8b80ULL,
115 0xffffffffffb9cf8bULL,
116 0xffffffffb9cf8b80ULL,
117 0xfffffffffffee73eULL,
118 0x000000005e31e24eULL,
119 0x00000000005e31e2ULL,
120 0x000000005e31e24eULL,
121 0x00000000000178c7ULL,
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_SRAV(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_SRAV(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