1 /* Test memcmp/strncmp builtin expansion for compilation and proper execution. */
2 /* { dg-do run } */
3 /* { dg-options "-O2" } */
4 /* { dg-require-effective-target ptr32plus } */
5 /* { dg-timeout-factor 2 } */
6
7 #include <stdio.h>
8 #include <stdlib.h>
9 #include <string.h>
10 #include <stdint.h>
11
12 #define STR1(X) #X
13 #define STR2(X) STR1(X)
14
15 int lib_memcmp(const void *a, const void *b, size_t n)
16 asm(STR2(__USER_LABEL_PREFIX__) "memcmp");
17 int lib_strncmp(const char *a, const char *b, size_t n)
18 asm(STR2(__USER_LABEL_PREFIX__) "strncmp");
19
20 #ifndef NRAND
21 #ifdef TEST_ALL
22 #define NRAND 10000
23 #else
24 #define NRAND 500
25 #endif
26 #endif
27 #ifndef TZONE
28 #ifdef TEST_ALL
29 #define TZONE 16
30 #else
31 #define TZONE 8
32 #endif
33 #endif
34
35 #define MAX_SZ 600
36
37 #define DEF_RS(ALIGN) \
38 static void test_memcmp_runtime_size_ ## ALIGN (const char *str1, \
39 const char *str2, \
40 size_t sz, int expect) \
41 { \
42 char three[8192] __attribute__ ((aligned (4096))); \
43 char four[8192] __attribute__ ((aligned (4096))); \
44 char *a, *b; \
45 int i,j,a1,a2,r; \
46 for (j = 0; j < 2; j++) \
47 { \
48 for (i = 0; i < 2; i++) \
49 { \
50 a = three+i*ALIGN+j*(4096-2*i*ALIGN); \
51 b = four+i*ALIGN+j*(4096-2*i*ALIGN); \
52 memcpy(a,str1,sz); \
53 memcpy(b,str2,sz); \
54 r = memcmp(a,b,sz); \
55 if ( r < 0 && !(expect < 0) ) abort(); \
56 if ( r > 0 && !(expect > 0) ) abort(); \
57 if ( r == 0 && !(expect == 0) ) abort(); \
58 } \
59 } \
60 }
61
62 DEF_RS(1)
63 DEF_RS(2)
64 DEF_RS(4)
65 DEF_RS(8)
66 DEF_RS(16)
67
68 static void test_memcmp_runtime_size (const char *str1, const char *str2,
69 size_t sz, int expect)
70 {
71 char three[8192] __attribute__ ((aligned (4096)));
72 char four[8192] __attribute__ ((aligned (4096)));
73 char *a, *b;
74 int i,j,a1,a2,r;
75 test_memcmp_runtime_size_1 (str1,str2,sz,expect);
76 test_memcmp_runtime_size_2 (str1,str2,sz,expect);
77 test_memcmp_runtime_size_4 (str1,str2,sz,expect);
78 test_memcmp_runtime_size_8 (str1,str2,sz,expect);
79 test_memcmp_runtime_size_16 (str1,str2,sz,expect);
80 for (j = 0; j < 2; j++)
81 {
82 for (i = 0; i < 2; i++)
83 {
84 for (a1=0; a1 < 2*sizeof(void *); a1++)
85 {
86 a = three+i*a1+j*(4096-2*i*a1);
87 memcpy(a,str1,sz);
88 for (a2=0; a2 < 2*sizeof(void *); a2++)
89 {
90 b = four+i*a2+j*(4096-2*i*a2);
91 memcpy(b,str2,sz);
92 r = memcmp(a,b,sz);
93 if ( r < 0 && !(expect < 0) ) abort();
94 if ( r > 0 && !(expect > 0) ) abort();
95 if ( r == 0 && !(expect == 0) ) abort();
96 }
97 }
98 }
99 }
100 }
101
102 static void test_driver_memcmp (void (test_memcmp)(const char *, const char *, int),
103 void (test_strncmp)(const char *, const char *, int),
104 size_t sz, int align)
105 {
106 char buf1[MAX_SZ*2+TZONE],buf2[MAX_SZ*2+TZONE];
107 size_t test_sz = (sz<MAX_SZ)?sz:MAX_SZ;
108 size_t diff_pos, zero_pos;
109 uint32_t e;
110 int i,j,l;
111 for(l=0;l<sz;l++) {
112 for(i=0;i<NRAND/sz;i++) {
113 for(j=0;j<l;j++) {
114 buf1[j] = rand() & 0xff;
115 buf2[j] = buf1[j];
116 }
117 for(j=l;j<sz;j++) {
118 buf1[j] = rand() & 0xff;
119 buf2[j] = rand() & 0xff;
120 }
121 e = lib_memcmp(buf1,buf2,sz);
122 (*test_memcmp)(buf1,buf2,e);
123 test_memcmp_runtime_size (buf1, buf2, sz, e);
124 e = lib_strncmp(buf1,buf2,sz);
125 (*test_strncmp)(buf1,buf2,e);
126 }
127 }
128 for(diff_pos = ((test_sz>TZONE)?(test_sz-TZONE):0); diff_pos < test_sz+TZONE; diff_pos++)
129 for(zero_pos = ((test_sz>TZONE)?(test_sz-TZONE):0); zero_pos < test_sz+TZONE; zero_pos++)
130 {
131 memset(buf1, 'A', 2*test_sz);
132 memset(buf2, 'A', 2*test_sz);
133 buf2[diff_pos] = 'B';
134 buf1[zero_pos] = 0;
135 buf2[zero_pos] = 0;
136 e = lib_memcmp(buf1,buf2,sz);
137 (*test_memcmp)(buf1,buf2,e);
138 (*test_memcmp)(buf2,buf1,-e);
139 (*test_memcmp)(buf2,buf2,0);
140 test_memcmp_runtime_size (buf1, buf2, sz, e);
141 test_memcmp_runtime_size (buf2, buf1, sz, -e);
142 e = lib_strncmp(buf1,buf2,sz);
143 (*test_strncmp)(buf1,buf2,e);
144 (*test_strncmp)(buf2,buf1,-e);
145 (*test_strncmp)(buf2,buf2,0);
146 /* differing length: */
147 buf2[diff_pos] = 0;
148 e = lib_memcmp(buf1,buf2,sz);
149 (*test_memcmp)(buf1,buf2,e);
150 test_memcmp_runtime_size (buf1, buf2, sz, e);
151 e = lib_strncmp(buf1,buf2,sz);
152 (*test_strncmp)(buf1,buf2,e);
153 memset(buf2+diff_pos,'B',sizeof(buf2)-diff_pos);
154 buf2[zero_pos] = 0;
155 e = lib_memcmp(buf1,buf2,sz);
156 (*test_memcmp)(buf1,buf2,e);
157 (*test_memcmp)(buf2,buf1,-e);
158 test_memcmp_runtime_size (buf1, buf2, sz, e);
159 test_memcmp_runtime_size (buf2, buf1, sz, -e);
160 e = lib_strncmp(buf1,buf2,sz);
161 (*test_strncmp)(buf1,buf2,e);
162 (*test_strncmp)(buf2,buf1,-e);
163 }
164 }
165
166 #define RUN_TEST(SZ, ALIGN) test_driver_memcmp (test_memcmp_ ## SZ ## _ ## ALIGN, test_strncmp_ ## SZ ## _ ## ALIGN, SZ, ALIGN);
167
168 #define DEF_TEST(SZ, ALIGN) \
169 static void test_memcmp_ ## SZ ## _ ## ALIGN (const char *str1, const char *str2, int expect) \
170 { \
171 char three[8192] __attribute__ ((aligned (4096))); \
172 char four[8192] __attribute__ ((aligned (4096))); \
173 char *a, *b; \
174 int i,j,r; \
175 for (j = 0; j < 2; j++) \
176 { \
177 for (i = 0; i < 2; i++) \
178 { \
179 a = three+i*ALIGN+j*(4096-2*i*ALIGN); \
180 b = four+i*ALIGN+j*(4096-2*i*ALIGN); \
181 memcpy(a,str1,SZ); \
182 memcpy(b,str2,SZ); \
183 r = memcmp(a,b,SZ); \
184 if ( r < 0 && !(expect < 0) ) abort(); \
185 if ( r > 0 && !(expect > 0) ) abort(); \
186 if ( r == 0 && !(expect == 0) ) abort(); \
187 } \
188 } \
189 } \
190 static void test_strncmp_ ## SZ ## _ ## ALIGN (const char *str1, const char *str2, int expect) \
191 { \
192 char three[8192] __attribute__ ((aligned (4096))); \
193 char four[8192] __attribute__ ((aligned (4096))); \
194 char *a, *b; \
195 int i,j,r; \
196 for (j = 0; j < 2; j++) \
197 { \
198 for (i = 0; i < 2; i++) \
199 { \
200 a = three+i*ALIGN+j*(4096-2*i*ALIGN); \
201 b = four+i*ALIGN+j*(4096-2*i*ALIGN); \
202 memcpy(a,str1,SZ); \
203 memcpy(b,str2,SZ); \
204 r = strncmp(a,b,SZ); \
205 if ( r < 0 && !(expect < 0) ) abort(); \
206 if ( r > 0 && !(expect > 0) ) abort(); \
207 if ( r == 0 && !(expect == 0) ) abort(); \
208 } \
209 } \
210 }
211
212 #ifdef TEST_ALL
213 DEF_TEST(1,1)
214 DEF_TEST(1,2)
215 DEF_TEST(1,4)
216 DEF_TEST(1,8)
217 DEF_TEST(1,16)
218 DEF_TEST(2,1)
219 DEF_TEST(2,2)
220 DEF_TEST(2,4)
221 DEF_TEST(2,8)
222 DEF_TEST(2,16)
223 DEF_TEST(3,1)
224 DEF_TEST(3,2)
225 DEF_TEST(3,4)
226 DEF_TEST(3,8)
227 DEF_TEST(3,16)
228 DEF_TEST(4,1)
229 DEF_TEST(4,2)
230 DEF_TEST(4,4)
231 DEF_TEST(4,8)
232 DEF_TEST(4,16)
233 DEF_TEST(5,1)
234 DEF_TEST(5,2)
235 DEF_TEST(5,4)
236 DEF_TEST(5,8)
237 DEF_TEST(5,16)
238 DEF_TEST(6,1)
239 DEF_TEST(6,2)
240 DEF_TEST(6,4)
241 DEF_TEST(6,8)
242 DEF_TEST(6,16)
243 DEF_TEST(7,1)
244 DEF_TEST(7,2)
245 DEF_TEST(7,4)
246 DEF_TEST(7,8)
247 DEF_TEST(7,16)
248 DEF_TEST(8,1)
249 DEF_TEST(8,2)
250 DEF_TEST(8,4)
251 DEF_TEST(8,8)
252 DEF_TEST(8,16)
253 DEF_TEST(9,1)
254 DEF_TEST(9,2)
255 DEF_TEST(9,4)
256 DEF_TEST(9,8)
257 DEF_TEST(9,16)
258 DEF_TEST(10,1)
259 DEF_TEST(10,2)
260 DEF_TEST(10,4)
261 DEF_TEST(10,8)
262 DEF_TEST(10,16)
263 DEF_TEST(11,1)
264 DEF_TEST(11,2)
265 DEF_TEST(11,4)
266 DEF_TEST(11,8)
267 DEF_TEST(11,16)
268 DEF_TEST(12,1)
269 DEF_TEST(12,2)
270 DEF_TEST(12,4)
271 DEF_TEST(12,8)
272 DEF_TEST(12,16)
273 DEF_TEST(13,1)
274 DEF_TEST(13,2)
275 DEF_TEST(13,4)
276 DEF_TEST(13,8)
277 DEF_TEST(13,16)
278 DEF_TEST(14,1)
279 DEF_TEST(14,2)
280 DEF_TEST(14,4)
281 DEF_TEST(14,8)
282 DEF_TEST(14,16)
283 DEF_TEST(15,1)
284 DEF_TEST(15,2)
285 DEF_TEST(15,4)
286 DEF_TEST(15,8)
287 DEF_TEST(15,16)
288 DEF_TEST(16,1)
289 DEF_TEST(16,2)
290 DEF_TEST(16,4)
291 DEF_TEST(16,8)
292 DEF_TEST(16,16)
293 DEF_TEST(17,1)
294 DEF_TEST(17,2)
295 DEF_TEST(17,4)
296 DEF_TEST(17,8)
297 DEF_TEST(17,16)
298 DEF_TEST(18,1)
299 DEF_TEST(18,2)
300 DEF_TEST(18,4)
301 DEF_TEST(18,8)
302 DEF_TEST(18,16)
303 DEF_TEST(19,1)
304 DEF_TEST(19,2)
305 DEF_TEST(19,4)
306 DEF_TEST(19,8)
307 DEF_TEST(19,16)
308 DEF_TEST(20,1)
309 DEF_TEST(20,2)
310 DEF_TEST(20,4)
311 DEF_TEST(20,8)
312 DEF_TEST(20,16)
313 DEF_TEST(21,1)
314 DEF_TEST(21,2)
315 DEF_TEST(21,4)
316 DEF_TEST(21,8)
317 DEF_TEST(21,16)
318 DEF_TEST(22,1)
319 DEF_TEST(22,2)
320 DEF_TEST(22,4)
321 DEF_TEST(22,8)
322 DEF_TEST(22,16)
323 DEF_TEST(23,1)
324 DEF_TEST(23,2)
325 DEF_TEST(23,4)
326 DEF_TEST(23,8)
327 DEF_TEST(23,16)
328 DEF_TEST(24,1)
329 DEF_TEST(24,2)
330 DEF_TEST(24,4)
331 DEF_TEST(24,8)
332 DEF_TEST(24,16)
333 DEF_TEST(25,1)
334 DEF_TEST(25,2)
335 DEF_TEST(25,4)
336 DEF_TEST(25,8)
337 DEF_TEST(25,16)
338 DEF_TEST(26,1)
339 DEF_TEST(26,2)
340 DEF_TEST(26,4)
341 DEF_TEST(26,8)
342 DEF_TEST(26,16)
343 DEF_TEST(27,1)
344 DEF_TEST(27,2)
345 DEF_TEST(27,4)
346 DEF_TEST(27,8)
347 DEF_TEST(27,16)
348 DEF_TEST(28,1)
349 DEF_TEST(28,2)
350 DEF_TEST(28,4)
351 DEF_TEST(28,8)
352 DEF_TEST(28,16)
353 DEF_TEST(29,1)
354 DEF_TEST(29,2)
355 DEF_TEST(29,4)
356 DEF_TEST(29,8)
357 DEF_TEST(29,16)
358 DEF_TEST(30,1)
359 DEF_TEST(30,2)
360 DEF_TEST(30,4)
361 DEF_TEST(30,8)
362 DEF_TEST(30,16)
363 DEF_TEST(31,1)
364 DEF_TEST(31,2)
365 DEF_TEST(31,4)
366 DEF_TEST(31,8)
367 DEF_TEST(31,16)
368 DEF_TEST(32,1)
369 DEF_TEST(32,2)
370 DEF_TEST(32,4)
371 DEF_TEST(32,8)
372 DEF_TEST(32,16)
373 DEF_TEST(33,1)
374 DEF_TEST(33,2)
375 DEF_TEST(33,4)
376 DEF_TEST(33,8)
377 DEF_TEST(33,16)
378 DEF_TEST(34,1)
379 DEF_TEST(34,2)
380 DEF_TEST(34,4)
381 DEF_TEST(34,8)
382 DEF_TEST(34,16)
383 DEF_TEST(35,1)
384 DEF_TEST(35,2)
385 DEF_TEST(35,4)
386 DEF_TEST(35,8)
387 DEF_TEST(35,16)
388 DEF_TEST(36,1)
389 DEF_TEST(36,2)
390 DEF_TEST(36,4)
391 DEF_TEST(36,8)
392 DEF_TEST(36,16)
393 DEF_TEST(37,1)
394 DEF_TEST(37,2)
395 DEF_TEST(37,4)
396 DEF_TEST(37,8)
397 DEF_TEST(37,16)
398 DEF_TEST(38,1)
399 DEF_TEST(38,2)
400 DEF_TEST(38,4)
401 DEF_TEST(38,8)
402 DEF_TEST(38,16)
403 DEF_TEST(39,1)
404 DEF_TEST(39,2)
405 DEF_TEST(39,4)
406 DEF_TEST(39,8)
407 DEF_TEST(39,16)
408 DEF_TEST(40,1)
409 DEF_TEST(40,2)
410 DEF_TEST(40,4)
411 DEF_TEST(40,8)
412 DEF_TEST(40,16)
413 DEF_TEST(41,1)
414 DEF_TEST(41,2)
415 DEF_TEST(41,4)
416 DEF_TEST(41,8)
417 DEF_TEST(41,16)
418 DEF_TEST(42,1)
419 DEF_TEST(42,2)
420 DEF_TEST(42,4)
421 DEF_TEST(42,8)
422 DEF_TEST(42,16)
423 DEF_TEST(43,1)
424 DEF_TEST(43,2)
425 DEF_TEST(43,4)
426 DEF_TEST(43,8)
427 DEF_TEST(43,16)
428 DEF_TEST(44,1)
429 DEF_TEST(44,2)
430 DEF_TEST(44,4)
431 DEF_TEST(44,8)
432 DEF_TEST(44,16)
433 DEF_TEST(45,1)
434 DEF_TEST(45,2)
435 DEF_TEST(45,4)
436 DEF_TEST(45,8)
437 DEF_TEST(45,16)
438 DEF_TEST(46,1)
439 DEF_TEST(46,2)
440 DEF_TEST(46,4)
441 DEF_TEST(46,8)
442 DEF_TEST(46,16)
443 DEF_TEST(47,1)
444 DEF_TEST(47,2)
445 DEF_TEST(47,4)
446 DEF_TEST(47,8)
447 DEF_TEST(47,16)
448 DEF_TEST(48,1)
449 DEF_TEST(48,2)
450 DEF_TEST(48,4)
451 DEF_TEST(48,8)
452 DEF_TEST(48,16)
453 DEF_TEST(49,1)
454 DEF_TEST(49,2)
455 DEF_TEST(49,4)
456 DEF_TEST(49,8)
457 DEF_TEST(49,16)
458 DEF_TEST(100,1)
459 DEF_TEST(100,2)
460 DEF_TEST(100,4)
461 DEF_TEST(100,8)
462 DEF_TEST(100,16)
463 DEF_TEST(191,1)
464 DEF_TEST(192,1)
465 DEF_TEST(193,1)
466 DEF_TEST(200,1)
467 DEF_TEST(400,1)
468 #else
469 DEF_TEST(1,1)
470 DEF_TEST(2,1)
471 DEF_TEST(3,1)
472 DEF_TEST(4,1)
473 DEF_TEST(5,1)
474 DEF_TEST(5,8)
475 DEF_TEST(6,1)
476 DEF_TEST(6,4)
477 DEF_TEST(6,8)
478 DEF_TEST(7,1)
479 DEF_TEST(7,2)
480 DEF_TEST(7,4)
481 DEF_TEST(7,8)
482 DEF_TEST(8,1)
483 DEF_TEST(9,1)
484 DEF_TEST(16,1)
485 DEF_TEST(32,1)
486 DEF_TEST(33,8)
487 DEF_TEST(49,1)
488 #endif
489
490 int
491 main(int argc, char **argv)
492 {
493 #ifdef TEST_ALL
494 RUN_TEST(1,1)
495 RUN_TEST(1,2)
496 RUN_TEST(1,4)
497 RUN_TEST(1,8)
498 RUN_TEST(1,16)
499 RUN_TEST(2,1)
500 RUN_TEST(2,2)
501 RUN_TEST(2,4)
502 RUN_TEST(2,8)
503 RUN_TEST(2,16)
504 RUN_TEST(3,1)
505 RUN_TEST(3,2)
506 RUN_TEST(3,4)
507 RUN_TEST(3,8)
508 RUN_TEST(3,16)
509 RUN_TEST(4,1)
510 RUN_TEST(4,2)
511 RUN_TEST(4,4)
512 RUN_TEST(4,8)
513 RUN_TEST(4,16)
514 RUN_TEST(5,1)
515 RUN_TEST(5,2)
516 RUN_TEST(5,4)
517 RUN_TEST(5,8)
518 RUN_TEST(5,16)
519 RUN_TEST(6,1)
520 RUN_TEST(6,2)
521 RUN_TEST(6,4)
522 RUN_TEST(6,8)
523 RUN_TEST(6,16)
524 RUN_TEST(7,1)
525 RUN_TEST(7,2)
526 RUN_TEST(7,4)
527 RUN_TEST(7,8)
528 RUN_TEST(7,16)
529 RUN_TEST(8,1)
530 RUN_TEST(8,2)
531 RUN_TEST(8,4)
532 RUN_TEST(8,8)
533 RUN_TEST(8,16)
534 RUN_TEST(9,1)
535 RUN_TEST(9,2)
536 RUN_TEST(9,4)
537 RUN_TEST(9,8)
538 RUN_TEST(9,16)
539 RUN_TEST(10,1)
540 RUN_TEST(10,2)
541 RUN_TEST(10,4)
542 RUN_TEST(10,8)
543 RUN_TEST(10,16)
544 RUN_TEST(11,1)
545 RUN_TEST(11,2)
546 RUN_TEST(11,4)
547 RUN_TEST(11,8)
548 RUN_TEST(11,16)
549 RUN_TEST(12,1)
550 RUN_TEST(12,2)
551 RUN_TEST(12,4)
552 RUN_TEST(12,8)
553 RUN_TEST(12,16)
554 RUN_TEST(13,1)
555 RUN_TEST(13,2)
556 RUN_TEST(13,4)
557 RUN_TEST(13,8)
558 RUN_TEST(13,16)
559 RUN_TEST(14,1)
560 RUN_TEST(14,2)
561 RUN_TEST(14,4)
562 RUN_TEST(14,8)
563 RUN_TEST(14,16)
564 RUN_TEST(15,1)
565 RUN_TEST(15,2)
566 RUN_TEST(15,4)
567 RUN_TEST(15,8)
568 RUN_TEST(15,16)
569 RUN_TEST(16,1)
570 RUN_TEST(16,2)
571 RUN_TEST(16,4)
572 RUN_TEST(16,8)
573 RUN_TEST(16,16)
574 RUN_TEST(17,1)
575 RUN_TEST(17,2)
576 RUN_TEST(17,4)
577 RUN_TEST(17,8)
578 RUN_TEST(17,16)
579 RUN_TEST(18,1)
580 RUN_TEST(18,2)
581 RUN_TEST(18,4)
582 RUN_TEST(18,8)
583 RUN_TEST(18,16)
584 RUN_TEST(19,1)
585 RUN_TEST(19,2)
586 RUN_TEST(19,4)
587 RUN_TEST(19,8)
588 RUN_TEST(19,16)
589 RUN_TEST(20,1)
590 RUN_TEST(20,2)
591 RUN_TEST(20,4)
592 RUN_TEST(20,8)
593 RUN_TEST(20,16)
594 RUN_TEST(21,1)
595 RUN_TEST(21,2)
596 RUN_TEST(21,4)
597 RUN_TEST(21,8)
598 RUN_TEST(21,16)
599 RUN_TEST(22,1)
600 RUN_TEST(22,2)
601 RUN_TEST(22,4)
602 RUN_TEST(22,8)
603 RUN_TEST(22,16)
604 RUN_TEST(23,1)
605 RUN_TEST(23,2)
606 RUN_TEST(23,4)
607 RUN_TEST(23,8)
608 RUN_TEST(23,16)
609 RUN_TEST(24,1)
610 RUN_TEST(24,2)
611 RUN_TEST(24,4)
612 RUN_TEST(24,8)
613 RUN_TEST(24,16)
614 RUN_TEST(25,1)
615 RUN_TEST(25,2)
616 RUN_TEST(25,4)
617 RUN_TEST(25,8)
618 RUN_TEST(25,16)
619 RUN_TEST(26,1)
620 RUN_TEST(26,2)
621 RUN_TEST(26,4)
622 RUN_TEST(26,8)
623 RUN_TEST(26,16)
624 RUN_TEST(27,1)
625 RUN_TEST(27,2)
626 RUN_TEST(27,4)
627 RUN_TEST(27,8)
628 RUN_TEST(27,16)
629 RUN_TEST(28,1)
630 RUN_TEST(28,2)
631 RUN_TEST(28,4)
632 RUN_TEST(28,8)
633 RUN_TEST(28,16)
634 RUN_TEST(29,1)
635 RUN_TEST(29,2)
636 RUN_TEST(29,4)
637 RUN_TEST(29,8)
638 RUN_TEST(29,16)
639 RUN_TEST(30,1)
640 RUN_TEST(30,2)
641 RUN_TEST(30,4)
642 RUN_TEST(30,8)
643 RUN_TEST(30,16)
644 RUN_TEST(31,1)
645 RUN_TEST(31,2)
646 RUN_TEST(31,4)
647 RUN_TEST(31,8)
648 RUN_TEST(31,16)
649 RUN_TEST(32,1)
650 RUN_TEST(32,2)
651 RUN_TEST(32,4)
652 RUN_TEST(32,8)
653 RUN_TEST(32,16)
654 RUN_TEST(33,1)
655 RUN_TEST(33,2)
656 RUN_TEST(33,4)
657 RUN_TEST(33,8)
658 RUN_TEST(33,16)
659 RUN_TEST(34,1)
660 RUN_TEST(34,2)
661 RUN_TEST(34,4)
662 RUN_TEST(34,8)
663 RUN_TEST(34,16)
664 RUN_TEST(35,1)
665 RUN_TEST(35,2)
666 RUN_TEST(35,4)
667 RUN_TEST(35,8)
668 RUN_TEST(35,16)
669 RUN_TEST(36,1)
670 RUN_TEST(36,2)
671 RUN_TEST(36,4)
672 RUN_TEST(36,8)
673 RUN_TEST(36,16)
674 RUN_TEST(37,1)
675 RUN_TEST(37,2)
676 RUN_TEST(37,4)
677 RUN_TEST(37,8)
678 RUN_TEST(37,16)
679 RUN_TEST(38,1)
680 RUN_TEST(38,2)
681 RUN_TEST(38,4)
682 RUN_TEST(38,8)
683 RUN_TEST(38,16)
684 RUN_TEST(39,1)
685 RUN_TEST(39,2)
686 RUN_TEST(39,4)
687 RUN_TEST(39,8)
688 RUN_TEST(39,16)
689 RUN_TEST(40,1)
690 RUN_TEST(40,2)
691 RUN_TEST(40,4)
692 RUN_TEST(40,8)
693 RUN_TEST(40,16)
694 RUN_TEST(41,1)
695 RUN_TEST(41,2)
696 RUN_TEST(41,4)
697 RUN_TEST(41,8)
698 RUN_TEST(41,16)
699 RUN_TEST(42,1)
700 RUN_TEST(42,2)
701 RUN_TEST(42,4)
702 RUN_TEST(42,8)
703 RUN_TEST(42,16)
704 RUN_TEST(43,1)
705 RUN_TEST(43,2)
706 RUN_TEST(43,4)
707 RUN_TEST(43,8)
708 RUN_TEST(43,16)
709 RUN_TEST(44,1)
710 RUN_TEST(44,2)
711 RUN_TEST(44,4)
712 RUN_TEST(44,8)
713 RUN_TEST(44,16)
714 RUN_TEST(45,1)
715 RUN_TEST(45,2)
716 RUN_TEST(45,4)
717 RUN_TEST(45,8)
718 RUN_TEST(45,16)
719 RUN_TEST(46,1)
720 RUN_TEST(46,2)
721 RUN_TEST(46,4)
722 RUN_TEST(46,8)
723 RUN_TEST(46,16)
724 RUN_TEST(47,1)
725 RUN_TEST(47,2)
726 RUN_TEST(47,4)
727 RUN_TEST(47,8)
728 RUN_TEST(47,16)
729 RUN_TEST(48,1)
730 RUN_TEST(48,2)
731 RUN_TEST(48,4)
732 RUN_TEST(48,8)
733 RUN_TEST(48,16)
734 RUN_TEST(49,1)
735 RUN_TEST(49,2)
736 RUN_TEST(49,4)
737 RUN_TEST(49,8)
738 RUN_TEST(49,16)
739 RUN_TEST(100,1)
740 RUN_TEST(100,2)
741 RUN_TEST(100,4)
742 RUN_TEST(100,8)
743 RUN_TEST(100,16)
744 RUN_TEST(191,1)
745 RUN_TEST(192,1)
746 RUN_TEST(193,1)
747 RUN_TEST(200,1)
748 RUN_TEST(400,1)
749 #else
750 RUN_TEST(1,1)
751 RUN_TEST(2,1)
752 RUN_TEST(3,1)
753 RUN_TEST(4,1)
754 RUN_TEST(5,1)
755 RUN_TEST(5,8)
756 RUN_TEST(6,1)
757 RUN_TEST(6,4)
758 RUN_TEST(6,8)
759 RUN_TEST(7,1)
760 RUN_TEST(7,2)
761 RUN_TEST(7,4)
762 RUN_TEST(7,8)
763 RUN_TEST(8,1)
764 RUN_TEST(9,1)
765 RUN_TEST(16,1)
766 RUN_TEST(32,1)
767 RUN_TEST(33,8)
768 RUN_TEST(49,1)
769 #endif
770 }