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/mem_intrin_main.cpp

Issue 1278173009: Inline memove for small constant sizes and refactor memcpy and memset. (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: Fix memmove and add tests Created 5 years, 4 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
1 /* crosstest.py --test=mem_intrin.cpp --driver=mem_intrin_main.cpp \ 1 /* crosstest.py --test=mem_intrin.cpp --driver=mem_intrin_main.cpp \
2 --prefix=Subzero_ --output=mem_intrin */ 2 --prefix=Subzero_ --output=mem_intrin */
3 3
4 #include <stdint.h> /* cstdint requires -std=c++0x or higher */ 4 #include <stdint.h> /* cstdint requires -std=c++0x or higher */
5 #include <cstdio> 5 #include <cstdio>
6 6
7 #include "mem_intrin.h" 7 #include "mem_intrin.h"
8 namespace Subzero_ { 8 namespace Subzero_ {
9 #include "mem_intrin.h" 9 #include "mem_intrin.h"
10 } 10 }
11 11
12 #define XSTR(s) STR(s) 12 #define XSTR(s) STR(s)
13 #define STR(s) #s 13 #define STR(s) #s
14 14
15 void testFixedLen(size_t &TotalTests, size_t &Passes, size_t &Failures) {
16 #define do_test_fixed(test_func) \
17 for (uint8_t init_val = 0; init_val < 100; ++init_val) { \
18 ++TotalTests; \
19 int llc_result = test_func(init_val); \
20 int sz_result = Subzero_::test_func(init_val); \
21 if (llc_result == sz_result) { \
22 ++Passes; \
23 } else { \
24 ++Failures; \
25 printf("Failure (%s): init_val=%d, llc=%d, sz=%d\n", STR(test_func), \
26 init_val, llc_result, sz_result); \
27 } \
28 }
29
30 do_test_fixed(memcpy_test_fixed_len);
31 do_test_fixed(memmove_test_fixed_len);
32 do_test_fixed(memset_test_fixed_len)
33 #undef do_test_fixed
34 }
35
36 void testVariableLen(size_t &TotalTests, size_t &Passes, size_t &Failures) { 15 void testVariableLen(size_t &TotalTests, size_t &Passes, size_t &Failures) {
37 uint8_t buf[256]; 16 uint8_t buf[256];
38 uint8_t buf2[256]; 17 uint8_t buf2[256];
39 #define do_test_variable(test_func) \ 18 #define do_test_variable(test_func) \
40 for (size_t len = 4; len < 128; ++len) { \ 19 for (size_t len = 4; len < 128; ++len) { \
41 for (uint8_t init_val = 0; init_val < 100; ++init_val) { \ 20 for (uint8_t init_val = 0; init_val < 100; ++init_val) { \
42 ++TotalTests; \ 21 ++TotalTests; \
43 int llc_result = test_func(buf, buf2, init_val, len); \ 22 int llc_result = test_func(buf, buf2, init_val, len); \
44 int sz_result = Subzero_::test_func(buf, buf2, init_val, len); \ 23 int sz_result = Subzero_::test_func(buf, buf2, init_val, len); \
45 if (llc_result == sz_result) { \ 24 if (llc_result == sz_result) { \
46 ++Passes; \ 25 ++Passes; \
47 } else { \ 26 } else { \
48 ++Failures; \ 27 ++Failures; \
49 printf("Failure (%s): init_val=%d, len=%d, llc=%d, sz=%d\n", \ 28 printf("Failure (%s): init_val=%d, len=%d, llc=%d, sz=%d\n", \
50 STR(test_func), init_val, len, llc_result, sz_result); \ 29 STR(test_func), init_val, len, llc_result, sz_result); \
51 } \ 30 } \
52 } \ 31 } \
53 } 32 }
54 33
55 do_test_variable(memcpy_test); 34 do_test_variable(memcpy_test);
56 do_test_variable(memmove_test); 35 do_test_variable(memmove_test);
57 do_test_variable(memset_test) 36 do_test_variable(memset_test)
58 #undef do_test_variable 37 #undef do_test_variable
59 } 38 }
60 39
40 void testFixedLen(size_t &TotalTests, size_t &Passes, size_t &Failures) {
41 #define do_test_fixed(test_func, NBYTES) \
42 for (uint8_t init_val = 0; init_val < 100; ++init_val) { \
43 ++TotalTests; \
44 int llc_result = test_func##_##NBYTES(init_val); \
45 int sz_result = Subzero_::test_func##_##NBYTES(init_val); \
46 if (llc_result == sz_result) { \
47 ++Passes; \
48 } else { \
49 ++Failures; \
50 printf("Failure (%s): init_val=%d, len=%d, llc=%d, sz=%d\n", \
51 STR(test_func), init_val, NBYTES, llc_result, sz_result); \
52 } \
53 }
54
55 #define do_all_test_fixed(NBYTES) \
56 do_test_fixed(memcpy_test_fixed_len, NBYTES); \
57 do_test_fixed(memmove_test_fixed_len, NBYTES); \
58 do_test_fixed(memset_test_fixed_len, NBYTES);
59
60 do_all_test_fixed(1);
61 do_all_test_fixed(2);
62 do_all_test_fixed(3);
63 do_all_test_fixed(4);
64 do_all_test_fixed(5);
65 do_all_test_fixed(6);
66 do_all_test_fixed(7);
67 do_all_test_fixed(8);
68 do_all_test_fixed(9);
69 do_all_test_fixed(10);
70 do_all_test_fixed(11);
71 do_all_test_fixed(12);
72 do_all_test_fixed(13);
73 do_all_test_fixed(14);
74 do_all_test_fixed(15);
75 do_all_test_fixed(16);
76 do_all_test_fixed(17);
77 do_all_test_fixed(18);
78 do_all_test_fixed(19);
79 do_all_test_fixed(20);
80 do_all_test_fixed(21);
81 do_all_test_fixed(22);
82 do_all_test_fixed(23);
83 do_all_test_fixed(24);
84 do_all_test_fixed(25);
85 do_all_test_fixed(26);
86 do_all_test_fixed(27);
87 do_all_test_fixed(28);
88 do_all_test_fixed(29);
89 do_all_test_fixed(30);
90 do_all_test_fixed(31);
91 do_all_test_fixed(32);
92 do_all_test_fixed(33);
93 do_all_test_fixed(34);
94 do_all_test_fixed(35);
95 do_all_test_fixed(36);
96 do_all_test_fixed(37);
97 do_all_test_fixed(38);
98 do_all_test_fixed(39);
99 do_all_test_fixed(40);
100 do_all_test_fixed(41);
101 do_all_test_fixed(42);
102 do_all_test_fixed(43);
103 do_all_test_fixed(44);
104 do_all_test_fixed(45);
105 do_all_test_fixed(46);
106 do_all_test_fixed(47);
107 do_all_test_fixed(48);
108 do_all_test_fixed(49);
109 do_all_test_fixed(50);
110 do_all_test_fixed(51);
111 do_all_test_fixed(52);
112 do_all_test_fixed(53);
113 do_all_test_fixed(54);
114 do_all_test_fixed(55);
115 do_all_test_fixed(56);
116 do_all_test_fixed(57);
117 do_all_test_fixed(58);
118 do_all_test_fixed(59);
119 do_all_test_fixed(60);
120 do_all_test_fixed(61);
121 do_all_test_fixed(62);
122 do_all_test_fixed(63);
123 do_all_test_fixed(64);
124 do_all_test_fixed(65);
125 do_all_test_fixed(66);
126 do_all_test_fixed(67);
127 do_all_test_fixed(68);
128 do_all_test_fixed(69);
129 do_all_test_fixed(70);
130 do_all_test_fixed(71);
131 do_all_test_fixed(72);
132 do_all_test_fixed(73);
133 do_all_test_fixed(74);
134 do_all_test_fixed(75);
135 do_all_test_fixed(76);
136 do_all_test_fixed(77);
137 do_all_test_fixed(78);
138 do_all_test_fixed(79);
139 do_all_test_fixed(80);
140 do_all_test_fixed(81);
141 do_all_test_fixed(82);
142 do_all_test_fixed(83);
143 do_all_test_fixed(84);
144 do_all_test_fixed(85);
145 do_all_test_fixed(86);
146 do_all_test_fixed(87);
147 do_all_test_fixed(88);
148 do_all_test_fixed(89);
149 do_all_test_fixed(90);
150 do_all_test_fixed(91);
151 do_all_test_fixed(92);
152 do_all_test_fixed(93);
153 do_all_test_fixed(94);
154 do_all_test_fixed(95);
155 do_all_test_fixed(96);
156 do_all_test_fixed(97);
157 do_all_test_fixed(98);
158 do_all_test_fixed(99);
159 do_all_test_fixed(100);
160 do_all_test_fixed(101);
161 do_all_test_fixed(102);
162 do_all_test_fixed(103);
163 do_all_test_fixed(104);
164 do_all_test_fixed(105);
165 do_all_test_fixed(106);
166 do_all_test_fixed(107);
167 do_all_test_fixed(108);
168 do_all_test_fixed(109);
169 do_all_test_fixed(110);
170 do_all_test_fixed(111);
171 do_all_test_fixed(112);
172 do_all_test_fixed(113);
173 do_all_test_fixed(114);
174 do_all_test_fixed(115);
175 do_all_test_fixed(116);
176 do_all_test_fixed(117);
177 do_all_test_fixed(118);
178 do_all_test_fixed(119);
179 do_all_test_fixed(120);
180 do_all_test_fixed(121);
181 do_all_test_fixed(122);
182 do_all_test_fixed(123);
183 do_all_test_fixed(124);
184 do_all_test_fixed(125);
185 do_all_test_fixed(126);
186 do_all_test_fixed(127);
187 do_all_test_fixed(128);
188 do_all_test_fixed(129);
189 do_all_test_fixed(130);
190 do_all_test_fixed(131);
191 do_all_test_fixed(132);
192 do_all_test_fixed(133);
193 do_all_test_fixed(134);
194 do_all_test_fixed(135);
195 do_all_test_fixed(136);
196 do_all_test_fixed(137);
197 do_all_test_fixed(138);
198 do_all_test_fixed(139);
199 do_all_test_fixed(140);
200 do_all_test_fixed(141);
201 do_all_test_fixed(142);
202 do_all_test_fixed(143);
203 do_all_test_fixed(144);
204 do_all_test_fixed(145);
205 do_all_test_fixed(146);
206 do_all_test_fixed(147);
207 do_all_test_fixed(148);
208 do_all_test_fixed(149);
209 do_all_test_fixed(150);
210 do_all_test_fixed(151);
211 do_all_test_fixed(152);
212 do_all_test_fixed(153);
213 do_all_test_fixed(154);
214 do_all_test_fixed(155);
215 do_all_test_fixed(156);
216 do_all_test_fixed(157);
217 do_all_test_fixed(158);
218 do_all_test_fixed(159);
219 do_all_test_fixed(160);
220 do_all_test_fixed(161);
221 do_all_test_fixed(162);
222 do_all_test_fixed(163);
223 do_all_test_fixed(164);
224 do_all_test_fixed(165);
225 do_all_test_fixed(166);
226 do_all_test_fixed(167);
227 do_all_test_fixed(168);
228 do_all_test_fixed(169);
229 do_all_test_fixed(170);
230 do_all_test_fixed(171);
231 do_all_test_fixed(172);
232 do_all_test_fixed(173);
233 do_all_test_fixed(174);
234 do_all_test_fixed(175);
235 do_all_test_fixed(176);
236 do_all_test_fixed(177);
237 do_all_test_fixed(178);
238 do_all_test_fixed(179);
239 do_all_test_fixed(180);
240 do_all_test_fixed(181);
241 do_all_test_fixed(182);
242 do_all_test_fixed(183);
243 do_all_test_fixed(184);
244 do_all_test_fixed(185);
245 do_all_test_fixed(186);
246 do_all_test_fixed(187);
247 do_all_test_fixed(188);
248 do_all_test_fixed(189);
249 do_all_test_fixed(190);
250 do_all_test_fixed(191);
251 do_all_test_fixed(192);
252 do_all_test_fixed(193);
253 do_all_test_fixed(194);
254 do_all_test_fixed(195);
255 do_all_test_fixed(196);
256 do_all_test_fixed(197);
257 do_all_test_fixed(198);
258 do_all_test_fixed(199);
259 do_all_test_fixed(200);
260 do_all_test_fixed(201);
261 do_all_test_fixed(202);
262 do_all_test_fixed(203);
263 do_all_test_fixed(204);
264 do_all_test_fixed(205);
265 do_all_test_fixed(206);
266 do_all_test_fixed(207);
267 do_all_test_fixed(208);
268 do_all_test_fixed(209);
269 do_all_test_fixed(210);
270 do_all_test_fixed(211);
271 do_all_test_fixed(212);
272 do_all_test_fixed(213);
273 do_all_test_fixed(214);
274 do_all_test_fixed(215);
275 do_all_test_fixed(216);
276 do_all_test_fixed(217);
277 do_all_test_fixed(218);
278 do_all_test_fixed(219);
279 do_all_test_fixed(220);
280 do_all_test_fixed(221);
281 do_all_test_fixed(222);
282 do_all_test_fixed(223);
283 do_all_test_fixed(224);
284 do_all_test_fixed(225);
285 do_all_test_fixed(226);
286 do_all_test_fixed(227);
287 do_all_test_fixed(228);
288 do_all_test_fixed(229);
289 do_all_test_fixed(230);
290 do_all_test_fixed(231);
291 do_all_test_fixed(232);
292 do_all_test_fixed(233);
293 do_all_test_fixed(234);
294 do_all_test_fixed(235);
295 do_all_test_fixed(236);
296 do_all_test_fixed(237);
297 do_all_test_fixed(238);
298 do_all_test_fixed(239);
299 do_all_test_fixed(240);
300 do_all_test_fixed(241);
301 do_all_test_fixed(242);
302 do_all_test_fixed(243);
303 do_all_test_fixed(244);
304 do_all_test_fixed(245);
305 do_all_test_fixed(246);
306 do_all_test_fixed(247);
307 do_all_test_fixed(248);
308 do_all_test_fixed(249);
309 do_all_test_fixed(250);
310 do_all_test_fixed(251);
311 do_all_test_fixed(252);
312 do_all_test_fixed(253);
313 do_all_test_fixed(254);
314 do_all_test_fixed(255);
315 do_all_test_fixed(256);
316
317 #undef do_test_fixed
318 #undef do_all_test_fixed
319 }
320
61 int main(int argc, char **argv) { 321 int main(int argc, char **argv) {
62 unsigned TotalTests = 0; 322 unsigned TotalTests = 0;
63 unsigned Passes = 0; 323 unsigned Passes = 0;
64 unsigned Failures = 0; 324 unsigned Failures = 0;
65 testFixedLen(TotalTests, Passes, Failures); 325 testFixedLen(TotalTests, Passes, Failures);
66 testVariableLen(TotalTests, Passes, Failures); 326 testVariableLen(TotalTests, Passes, Failures);
67 printf("TotalTests=%u Passes=%u Failures=%u\n", TotalTests, Passes, Failures); 327 printf("TotalTests=%u Passes=%u Failures=%u\n", TotalTests, Passes, Failures);
68 return Failures; 328 return Failures;
69 } 329 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698