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