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 = "Logic";
36 char *instruction_name = "XOR";
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 0x8000000000000000ULL,
45 0xffffffffffffffffULL,
46 0xfffffc0000000000ULL,
47 0xffffffffffe00000ULL,
48 0xfffffffffffff000ULL,
49 0xfff8000000000000ULL,
50 0xffffffffffffc000ULL,
51 0xfffe000000000000ULL,
52 0x0000000000000000ULL,
53 0x0000000000000000ULL,
54 0x0000000000000000ULL,
55 0x0000000000000000ULL,
56 0x0000000000000000ULL,
57 0x0000000000000000ULL,
58 0x0000000000000000ULL,
59 0x0000000000000000ULL,
60 0x0000000000000000ULL,
61 0xaaaaaaaaaaaaaaaaULL,
62 0xaaaaa80000000000ULL,
63 0x5555555555400000ULL,
64 0xaaaaaaaaaaaaa000ULL,
65 0x5550000000000000ULL,
66 0xaaaaaaaaaaaa8000ULL,
67 0x5554000000000000ULL,
68 0x8000000000000000ULL,
69 0x5555555555555555ULL,
70 0x5555540000000000ULL,
71 0xaaaaaaaaaaa00000ULL,
72 0x5555555555555000ULL,
73 0xaaa8000000000000ULL,
74 0x5555555555554000ULL,
75 0xaaaa000000000000ULL,
76 0x0000000000000000ULL,
77 0xccccccccccccccccULL,
78 0x3333300000000000ULL,
79 0x9999999999800000ULL,
80 0xccccccccccccc000ULL,
81 0x6660000000000000ULL,
82 0x3333333333330000ULL,
83 0x9998000000000000ULL,
84 0x8000000000000000ULL,
85 0x3333333333333333ULL,
86 0xcccccc0000000000ULL,
87 0x6666666666600000ULL,
88 0x3333333333333000ULL,
89 0x9998000000000000ULL,
90 0xccccccccccccc000ULL,
91 0x6666000000000000ULL,
92 0x0000000000000000ULL,
93 0xe38e38e38e38e38eULL,
94 0xe38e380000000000ULL,
95 0x1c71c71c71c00000ULL,
96 0xe38e38e38e38e000ULL,
97 0x1c70000000000000ULL,
98 0x8e38e38e38e38000ULL,
99 0xc71c000000000000ULL,
100 0x8000000000000000ULL,
101 0x1c71c71c71c71c71ULL,
102 0x1c71c40000000000ULL,
103 0xe38e38e38e200000ULL,
104 0x1c71c71c71c71000ULL,
105 0xe388000000000000ULL,
106 0x71c71c71c71c4000ULL,
107 0x38e2000000000000ULL,
108 0x886ae6cc28625540ULL,
109 0x6ae6cc2862554000ULL,
110 0x886ae6cc28625540ULL,
111 0xb9b30a1895500000ULL,
112 0xfbbe00634d93c708ULL,
113 0xbe00634d93c70800ULL,
114 0xfbbe00634d93c708ULL,
115 0x8018d364f1c20000ULL,
116 0xac5aaeaab9cf8b80ULL,
117 0x5aaeaab9cf8b8000ULL,
118 0xac5aaeaab9cf8b80ULL,
119 0xabaaae73e2e00000ULL,
120 0x704f164d5e31e24eULL,
121 0x4f164d5e31e24e00ULL,
122 0x704f164d5e31e24eULL,
123 0xc593578c78938000ULL,
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_XOR(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_XOR(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