Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(364)

Side by Side Diff: crosstest/test_icmp_main.cpp

Issue 265703002: Add Om1 lowering with no optimizations (Closed) Base URL: https://gerrit.chromium.org/gerrit/p/native_client/pnacl-subzero.git@master
Patch Set: Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // abtest.py --test=test_icmp.cpp --driver=test_icmp_main.cpp --prefix=Subzero_ --output=test_icmp
2
3 #include <stdio.h>
4 #include <stdint.h>
5
6 #include "test_icmp.h"
7 namespace Subzero_ {
8 #include "test_icmp.h"
9 }
10
11 int main(int argc, char **argv) {
12 static unsigned Values[] = {
13 0x0, 0x1, 0x7ffffffe, 0x7fffffff,
14 0x80000000, 0x80000001, 0xfffffffe, 0xffffffff,
15 0x7e, 0x7f, 0x80, 0x81, 0xfe, 0xff, 0x100, 0x101,
16 0x7ffe, 0x7fff, 0x8000, 0x8001, 0xfffe, 0xffff, 0x10000, 0x10001,
17 };
18 const static unsigned NumValues = sizeof(Values) / sizeof(*Values);
19
20 typedef bool (*FuncType8)(uint8_t, uint8_t);
21 static struct {
22 const char *Name;
23 FuncType8 FuncSz;
24 FuncType8 FuncLlc;
25 } Func8[] = { { "icmpEq8Bool", (FuncType8)Subzero_::icmpEq8Bool,
26 (FuncType8)icmpEq8Bool },
27 { "icmpNe8Bool", (FuncType8)Subzero_::icmpNe8Bool,
28 (FuncType8)icmpNe8Bool },
29 { "icmpSgt8Bool", (FuncType8)Subzero_::icmpSgt8Bool,
30 (FuncType8)icmpSgt8Bool },
31 { "icmpUgt8Bool", (FuncType8)Subzero_::icmpUgt8Bool,
32 (FuncType8)icmpUgt8Bool },
33 { "icmpSge8Bool", (FuncType8)Subzero_::icmpSge8Bool,
34 (FuncType8)icmpSge8Bool },
35 { "icmpUge8Bool", (FuncType8)Subzero_::icmpUge8Bool,
36 (FuncType8)icmpUge8Bool },
37 { "icmpSlt8Bool", (FuncType8)Subzero_::icmpSlt8Bool,
38 (FuncType8)icmpSlt8Bool },
39 { "icmpUlt8Bool", (FuncType8)Subzero_::icmpUlt8Bool,
40 (FuncType8)icmpUlt8Bool },
41 { "icmpSle8Bool", (FuncType8)Subzero_::icmpSle8Bool,
42 (FuncType8)icmpSle8Bool },
43 { "icmpUle8Bool", (FuncType8)Subzero_::icmpUle8Bool,
44 (FuncType8)icmpUle8Bool }, };
45 const static unsigned NumFunc8 = sizeof(Func8) / sizeof(*Func8);
46
47 typedef bool (*FuncType16)(uint16_t, uint16_t);
48 static struct {
49 const char *Name;
50 FuncType16 FuncSz;
51 FuncType16 FuncLlc;
52 } Func16[] = { { "icmpEq16Bool", (FuncType16)Subzero_::icmpEq16Bool,
53 (FuncType16)icmpEq16Bool },
54 { "icmpNe16Bool", (FuncType16)Subzero_::icmpNe16Bool,
55 (FuncType16)icmpNe16Bool },
56 { "icmpSgt16Bool", (FuncType16)Subzero_::icmpSgt16Bool,
57 (FuncType16)icmpSgt16Bool },
58 { "icmpUgt16Bool", (FuncType16)Subzero_::icmpUgt16Bool,
59 (FuncType16)icmpUgt16Bool },
60 { "icmpSge16Bool", (FuncType16)Subzero_::icmpSge16Bool,
61 (FuncType16)icmpSge16Bool },
62 { "icmpUge16Bool", (FuncType16)Subzero_::icmpUge16Bool,
63 (FuncType16)icmpUge16Bool },
64 { "icmpSlt16Bool", (FuncType16)Subzero_::icmpSlt16Bool,
65 (FuncType16)icmpSlt16Bool },
66 { "icmpUlt16Bool", (FuncType16)Subzero_::icmpUlt16Bool,
67 (FuncType16)icmpUlt16Bool },
68 { "icmpSle16Bool", (FuncType16)Subzero_::icmpSle16Bool,
69 (FuncType16)icmpSle16Bool },
70 { "icmpUle16Bool", (FuncType16)Subzero_::icmpUle16Bool,
71 (FuncType16)icmpUle16Bool }, };
72 const static unsigned NumFunc16 = sizeof(Func16) / sizeof(*Func16);
73
74 typedef bool (*FuncType32)(uint32_t, uint32_t);
75 static struct {
76 const char *Name;
77 FuncType32 FuncSz;
78 FuncType32 FuncLlc;
79 } Func32[] = { { "icmpEq32Bool", (FuncType32)Subzero_::icmpEq32Bool,
80 (FuncType32)icmpEq32Bool },
81 { "icmpNe32Bool", (FuncType32)Subzero_::icmpNe32Bool,
82 (FuncType32)icmpNe32Bool },
83 { "icmpSgt32Bool", (FuncType32)Subzero_::icmpSgt32Bool,
84 (FuncType32)icmpSgt32Bool },
85 { "icmpUgt32Bool", (FuncType32)Subzero_::icmpUgt32Bool,
86 (FuncType32)icmpUgt32Bool },
87 { "icmpSge32Bool", (FuncType32)Subzero_::icmpSge32Bool,
88 (FuncType32)icmpSge32Bool },
89 { "icmpUge32Bool", (FuncType32)Subzero_::icmpUge32Bool,
90 (FuncType32)icmpUge32Bool },
91 { "icmpSlt32Bool", (FuncType32)Subzero_::icmpSlt32Bool,
92 (FuncType32)icmpSlt32Bool },
93 { "icmpUlt32Bool", (FuncType32)Subzero_::icmpUlt32Bool,
94 (FuncType32)icmpUlt32Bool },
95 { "icmpSle32Bool", (FuncType32)Subzero_::icmpSle32Bool,
96 (FuncType32)icmpSle32Bool },
97 { "icmpUle32Bool", (FuncType32)Subzero_::icmpUle32Bool,
98 (FuncType32)icmpUle32Bool }, };
99 const static unsigned NumFunc32 = sizeof(Func32) / sizeof(*Func32);
100
101 typedef bool (*FuncType64)(uint64_t, uint64_t);
102 static struct {
103 const char *Name;
104 FuncType64 FuncSz;
105 FuncType64 FuncLlc;
106 } Func64[] = { { "icmpEq64Bool", (FuncType64)Subzero_::icmpEq64Bool,
107 (FuncType64)icmpEq64Bool },
108 { "icmpNe64Bool", (FuncType64)Subzero_::icmpNe64Bool,
109 (FuncType64)icmpNe64Bool },
110 { "icmpSgt64Bool", (FuncType64)Subzero_::icmpSgt64Bool,
111 (FuncType64)icmpSgt64Bool },
112 { "icmpUgt64Bool", (FuncType64)Subzero_::icmpUgt64Bool,
113 (FuncType64)icmpUgt64Bool },
114 { "icmpSge64Bool", (FuncType64)Subzero_::icmpSge64Bool,
115 (FuncType64)icmpSge64Bool },
116 { "icmpUge64Bool", (FuncType64)Subzero_::icmpUge64Bool,
117 (FuncType64)icmpUge64Bool },
118 { "icmpSlt64Bool", (FuncType64)Subzero_::icmpSlt64Bool,
119 (FuncType64)icmpSlt64Bool },
120 { "icmpUlt64Bool", (FuncType64)Subzero_::icmpUlt64Bool,
121 (FuncType64)icmpUlt64Bool },
122 { "icmpSle64Bool", (FuncType64)Subzero_::icmpSle64Bool,
123 (FuncType64)icmpSle64Bool },
124 { "icmpUle64Bool", (FuncType64)Subzero_::icmpUle64Bool,
125 (FuncType64)icmpUle64Bool }, };
126 const static unsigned NumFunc64 = sizeof(Func64) / sizeof(*Func64);
127
128 bool ResultSz, ResultLlc;
129
130 unsigned TotalTests = 0;
131 unsigned Passes = 0;
132 unsigned Failures = 0;
133
134 for (unsigned f = 0; f < NumFunc8; ++f) {
135 for (unsigned i = 0; i < NumValues; ++i) {
136 for (unsigned j = 0; j < NumValues; ++j) {
137 ++TotalTests;
138 ResultSz = Func8[f].FuncSz(Values[i], Values[j]);
139 ResultLlc = Func8[f].FuncLlc(Values[i], Values[j]);
140 if (ResultSz == ResultLlc) {
141 ++Passes;
142 } else {
143 ++Failures;
144 printf("%s(0x%08x, 0x%08x): sz=%d llc=%d\n", Func8[f].Name,
145 Values[i], Values[j], ResultSz, ResultLlc);
146 }
147 }
148 }
149 }
150
151 for (unsigned f = 0; f < NumFunc16; ++f) {
152 for (unsigned i = 0; i < NumValues; ++i) {
153 for (unsigned j = 0; j < NumValues; ++j) {
154 ++TotalTests;
155 ResultSz = Func16[f].FuncSz(Values[i], Values[j]);
156 ResultLlc = Func16[f].FuncLlc(Values[i], Values[j]);
157 if (ResultSz == ResultLlc) {
158 ++Passes;
159 } else {
160 ++Failures;
161 printf("%s(0x%08x, 0x%08x): sz=%d llc=%d\n", Func16[f].Name,
162 Values[i], Values[j], ResultSz, ResultLlc);
163 }
164 }
165 }
166 }
167
168 for (unsigned f = 0; f < NumFunc32; ++f) {
169 for (unsigned i = 0; i < NumValues; ++i) {
170 for (unsigned j = 0; j < NumValues; ++j) {
171 ++TotalTests;
172 ResultSz = Func32[f].FuncSz(Values[i], Values[j]);
173 ResultLlc = Func32[f].FuncLlc(Values[i], Values[j]);
174 if (ResultSz == ResultLlc) {
175 ++Passes;
176 } else {
177 ++Failures;
178 printf("%s(0x%08x, 0x%08x): sz=%d llc=%d\n", Func32[f].Name,
179 Values[i], Values[j], ResultSz, ResultLlc);
180 }
181 }
182 }
183 }
184
185 for (unsigned f = 0; f < NumFunc64; ++f) {
186 for (unsigned iLo = 0; iLo < NumValues; ++iLo) {
187 for (unsigned iHi = 0; iHi < NumValues; ++iHi) {
188 for (unsigned jLo = 0; jLo < NumValues; ++jLo) {
189 for (unsigned jHi = 0; jHi < NumValues; ++jHi) {
190 uint64_t Value1 = (((uint64_t)Values[iHi]) << 32) + Values[iLo];
191 uint64_t Value2 = (((uint64_t)Values[jHi]) << 32) + Values[jLo];
192 ++TotalTests;
193 ResultLlc = Func64[f].FuncLlc(Value1, Value2);
194 ResultSz = Func64[f].FuncSz(Value1, Value2);
195 if (ResultSz == ResultLlc) {
196 ++Passes;
197 } else {
198 ++Failures;
199 printf("%s(0x%016llx, 0x%016llx): sz=%d llc=%d\n", Func64[f].Name,
200 Value1, Value2, ResultSz, ResultLlc);
201 }
202 }
203 }
204 }
205 }
206 }
207 printf("TotalTests=%u Passes=%u Failures=%u\n", TotalTests, Passes, Failures);
208 return Failures;
209 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698