1/*
2 * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 */
23
24/*
25 * @test
26 * @bug 6726999
27 * @summary nsk/stress/jck12a/jck12a010 assert(n != NULL,"Bad immediate dominator info.");
28 *
29 * @run main/othervm -Xbatch -XX:+AggressiveOpts
30 *      -XX:CompileCommand=exclude,compiler.escapeAnalysis.Test6726999::dummy
31 *      compiler.escapeAnalysis.Test6726999
32 */
33
34package compiler.escapeAnalysis;
35
36public class Test6726999 {
37    static class Point {
38        int x;
39        int y;
40    }
41
42    void dummy() {
43        // Empty method to verify correctness of DebugInfo.
44        // Use -XX:CompileCommand=exclude,Test.dummy
45    }
46
47    int test0_0_0(int y) {
48        int x = 3;
49        Point p = new Point();
50        dummy();
51        p.x = x;
52        p.y = 3 * x + y;
53        return p.x * p.y;
54    }
55
56    int test0_0_1(int y) {
57        int x = 3;
58        Point p = null;
59        dummy();
60        p = new Point();
61        dummy();
62        p.x = x;
63        p.y = 3 * x + y;
64        return p.x * p.y;
65    }
66
67    int test0_0_2(int y) {
68        int x = 3;
69        Point p = new Point();
70        dummy();
71        p = new Point();
72        dummy();
73        p.x = x;
74        p.y = 3 * x + y;
75        return p.x * p.y;
76    }
77
78    int test0_0_3(int y) {
79        int x = 3;
80        Point p[] = new Point[1];
81        p[0] = new Point();
82        dummy();
83        p[0].x = x;
84        p[0].y = 3 * x + y;
85        return p[0].x * p[0].y;
86    }
87
88    int test0_0_4(int y) {
89        int x = 3;
90        Point p[] = new Point[1];
91        dummy();
92        p[0] = new Point();
93        dummy();
94        p[0].x = x;
95        p[0].y = 3 * x + y;
96        return p[0].x * p[0].y;
97    }
98
99    int test0_0_5(int y) {
100        int x = 3;
101        Point p[] = new Point[1];
102        dummy();
103        p[0] = null;
104        dummy();
105        p[0] = new Point();
106        dummy();
107        p[0].x = x;
108        p[0].y = 3 * x + y;
109        return p[0].x * p[0].y;
110    }
111
112    int test0_0_6(int y) {
113        int x = 3;
114        Point p[] = new Point[1];
115        p[0] = new Point();
116        dummy();
117        p[0] = new Point();
118        dummy();
119        p[0].x = x;
120        p[0].y = 3 * x + y;
121        return p[0].x * p[0].y;
122    }
123
124    int test0_1_3(int y) {
125        int x = 3;
126        Point p1 = new Point();
127        dummy();
128        Point p[] = new Point[1];
129        p[0] = p1;
130        dummy();
131        p[0].x = x;
132        p[0].y = 3 * x + y;
133        return p[0].x * p[0].y;
134    }
135
136    int test0_1_4(int y) {
137        int x = 3;
138        Point p1 = new Point();
139        dummy();
140        Point p[] = new Point[1];
141        dummy();
142        p[0] = p1;
143        dummy();
144        p[0].x = x;
145        p[0].y = 3 * x + y;
146        return p[0].x * p[0].y;
147    }
148
149    int test0_1_5(int y) {
150        int x = 3;
151        Point p1 = new Point();
152        dummy();
153        Point p[] = new Point[1];
154        dummy();
155        p[0] = null;
156        dummy();
157        p[0] = p1;
158        dummy();
159        p[0].x = x;
160        p[0].y = 3 * x + y;
161        return p[0].x * p[0].y;
162    }
163
164    int test0_1_6(int y) {
165        int x = 3;
166        Point p1 = new Point();
167        dummy();
168        Point p2 = new Point();
169        dummy();
170        Point p[] = new Point[1];
171        p[0] = p1;
172        dummy();
173        p[0] = p2;
174        dummy();
175        p[0].x = x;
176        p[0].y = 3 * x + y;
177        return p[0].x * p[0].y;
178    }
179
180    int test1_0_0(int y) {
181        Point p = new Point();
182        if ((y & 1) == 1) {
183            p = new Point();
184        }
185        int x = 3;
186        p.x = x;
187        p.y = 3 * x + y;
188        dummy();
189        return p.x * p.y;
190    }
191
192    int test1_0_1(int y) {
193        Point p = null;
194        if ((y & 1) == 1) {
195            p = new Point();
196        }
197        int x = 3;
198        if (p == null)
199            return (3 * x + y) * x;
200        p.x = x;
201        p.y = 3 * x + y;
202        dummy();
203        return p.x * p.y;
204    }
205
206    int test1_0_2(int y) {
207        Point p[] = new Point[1];
208        if ((y & 1) == 1) {
209            p[0] = new Point();
210        }
211        int x = 3;
212        if (p[0] == null)
213            return (3 * x + y) * x;
214        p[0].x = x;
215        p[0].y = 3 * x + y;
216        dummy();
217        return p[0].x * p[0].y;
218    }
219
220    int test1_0_3(int y) {
221        Point p[] = new Point[1];
222        p[0] = null;
223        if ((y & 1) == 1) {
224            p[0] = new Point();
225        }
226        int x = 3;
227        if (p[0] == null)
228            return (3 * x + y) * x;
229        p[0].x = x;
230        p[0].y = 3 * x + y;
231        dummy();
232        return p[0].x * p[0].y;
233    }
234
235    int test1_0_4(int y) {
236        Point p[] = new Point[1];
237        p[0] = new Point();
238        if ((y & 1) == 1) {
239            p[0] = new Point();
240        }
241        int x = 3;
242        if (p[0] == null)
243            return (3 * x + y) * x;
244        p[0].x = x;
245        p[0].y = 3 * x + y;
246        dummy();
247        return p[0].x * p[0].y;
248    }
249
250    int test1_0_5(int y) {
251        Point p[] = new Point[1];
252        if ((y & 1) == 1) {
253            p[0] = new Point();
254        } else {
255            p[0] = null;
256        }
257        int x = 3;
258        if (p[0] == null)
259            return (3 * x + y) * x;
260        p[0].x = x;
261        p[0].y = 3 * x + y;
262        dummy();
263        return p[0].x * p[0].y;
264    }
265
266    int test1_0_6(int y) {
267        Point p[] = new Point[1];
268        if ((y & 1) == 1) {
269            p[0] = new Point();
270        } else {
271            p[0] = new Point();
272        }
273        int x = 3;
274        if (p[0] == null)
275            return (3 * x + y) * x;
276        p[0].x = x;
277        p[0].y = 3 * x + y;
278        dummy();
279        return p[0].x * p[0].y;
280    }
281
282    int test1_1_0(int y) {
283        Point p = new Point();
284        if ((y & 1) == 1) {
285            dummy();
286            p = new Point();
287            dummy();
288        }
289        int x = 3;
290        p.x = x;
291        p.y = 3 * x + y;
292        dummy();
293        return p.x * p.y;
294    }
295
296    int test1_1_1(int y) {
297        Point p = null;
298        if ((y & 1) == 1) {
299            dummy();
300            p = new Point();
301            dummy();
302        }
303        int x = 3;
304        if (p == null)
305            return (3 * x + y) * x;
306        p.x = x;
307        p.y = 3 * x + y;
308        dummy();
309        return p.x * p.y;
310    }
311
312    int test1_1_2(int y) {
313        Point p[] = new Point[1];
314        if ((y & 1) == 1) {
315            dummy();
316            p[0] = new Point();
317            dummy();
318        }
319        int x = 3;
320        if (p[0] == null)
321            return (3 * x + y) * x;
322        p[0].x = x;
323        p[0].y = 3 * x + y;
324        dummy();
325        return p[0].x * p[0].y;
326    }
327
328    int test1_1_3(int y) {
329        Point p[] = new Point[1];
330        dummy();
331        p[0] = null;
332        if ((y & 1) == 1) {
333            dummy();
334            p[0] = new Point();
335            dummy();
336        }
337        int x = 3;
338        if (p[0] == null)
339            return (3 * x + y) * x;
340        p[0].x = x;
341        p[0].y = 3 * x + y;
342        dummy();
343        return p[0].x * p[0].y;
344    }
345
346    int test1_1_4(int y) {
347        Point p[] = new Point[1];
348        dummy();
349        p[0] = new Point();
350        if ((y & 1) == 1) {
351            dummy();
352            p[0] = new Point();
353            dummy();
354        }
355        int x = 3;
356        if (p[0] == null)
357            return (3 * x + y) * x;
358        p[0].x = x;
359        p[0].y = 3 * x + y;
360        dummy();
361        return p[0].x * p[0].y;
362    }
363
364    int test1_1_5(int y) {
365        Point p[] = new Point[1];
366        if ((y & 1) == 1) {
367            dummy();
368            p[0] = new Point();
369            dummy();
370        } else {
371            dummy();
372            p[0] = null;
373            dummy();
374        }
375        int x = 3;
376        if (p[0] == null)
377            return (3 * x + y) * x;
378        p[0].x = x;
379        p[0].y = 3 * x + y;
380        dummy();
381        return p[0].x * p[0].y;
382    }
383
384    int test1_1_6(int y) {
385        Point p[] = new Point[1];
386        if ((y & 1) == 1) {
387            dummy();
388            p[0] = new Point();
389            dummy();
390        } else {
391            dummy();
392            p[0] = new Point();
393            dummy();
394        }
395        int x = 3;
396        if (p[0] == null)
397            return (3 * x + y) * x;
398        p[0].x = x;
399        p[0].y = 3 * x + y;
400        dummy();
401        return p[0].x * p[0].y;
402    }
403
404    int test1_2_0(int y) {
405        Point p1 = new Point();
406        dummy();
407        Point p = new Point();
408        if ((y & 1) == 1) {
409            dummy();
410            p = p1;
411            dummy();
412        }
413        int x = 3;
414        p.x = x;
415        p.y = 3 * x + y;
416        dummy();
417        return p.x * p.y;
418    }
419
420    int test1_2_1(int y) {
421        Point p1 = new Point();
422        dummy();
423        Point p = null;
424        if ((y & 1) == 1) {
425            dummy();
426            p = p1;
427            dummy();
428        }
429        int x = 3;
430        if (p == null)
431            return (3 * x + y) * x;
432        p.x = x;
433        p.y = 3 * x + y;
434        dummy();
435        return p.x * p.y;
436    }
437
438    int test1_2_2(int y) {
439        Point p1 = new Point();
440        dummy();
441        Point p[] = new Point[1];
442        if ((y & 1) == 1) {
443            dummy();
444            p[0] = p1;
445            dummy();
446        }
447        int x = 3;
448        if (p[0] == null)
449            return (3 * x + y) * x;
450        p[0].x = x;
451        p[0].y = 3 * x + y;
452        dummy();
453        return p[0].x * p[0].y;
454    }
455
456    int test1_2_3(int y) {
457        Point p1 = new Point();
458        dummy();
459        Point p[] = new Point[1];
460        dummy();
461        p[0] = null;
462        if ((y & 1) == 1) {
463            dummy();
464            p[0] = p1;
465            dummy();
466        }
467        int x = 3;
468        if (p[0] == null)
469            return (3 * x + y) * x;
470        p[0].x = x;
471        p[0].y = 3 * x + y;
472        dummy();
473        return p[0].x * p[0].y;
474    }
475
476    int test1_2_4(int y) {
477        Point p1 = new Point();
478        dummy();
479        Point p2 = new Point();
480        dummy();
481        Point p[] = new Point[1];
482        dummy();
483        p[0] = p1;
484        if ((y & 1) == 1) {
485            dummy();
486            p[0] = p2;
487            dummy();
488        }
489        int x = 3;
490        if (p[0] == null)
491            return (3 * x + y) * x;
492        p[0].x = x;
493        p[0].y = 3 * x + y;
494        dummy();
495        return p[0].x * p[0].y;
496    }
497
498    int test1_2_5(int y) {
499        Point p1 = new Point();
500        dummy();
501        Point p[] = new Point[1];
502        if ((y & 1) == 1) {
503            dummy();
504            p[0] = p1;
505            dummy();
506        } else {
507            dummy();
508            p[0] = null;
509            dummy();
510        }
511        int x = 3;
512        if (p[0] == null)
513            return (3 * x + y) * x;
514        p[0].x = x;
515        p[0].y = 3 * x + y;
516        dummy();
517        return p[0].x * p[0].y;
518    }
519
520    int test1_2_6(int y) {
521        Point p1 = new Point();
522        dummy();
523        Point p2 = new Point();
524        dummy();
525        Point p[] = new Point[1];
526        if ((y & 1) == 1) {
527            dummy();
528            p[0] = p1;
529            dummy();
530        } else {
531            dummy();
532            p[0] = p2;
533            dummy();
534        }
535        int x = 3;
536        if (p[0] == null)
537            return (3 * x + y) * x;
538        p[0].x = x;
539        p[0].y = 3 * x + y;
540        dummy();
541        return p[0].x * p[0].y;
542    }
543
544    int test2_0_0(int y) {
545        Point p = new Point();
546        int lim = (y & 3);
547        for (int i = 0; i < lim; i++) {
548            p = new Point();
549        }
550        int x = 3;
551        p.x = x;
552        p.y = 3 * x + y;
553        dummy();
554        return p.x * p.y;
555    }
556
557    int test2_0_1(int y) {
558        Point p = null;
559        int lim = (y & 3);
560        for (int i = 0; i < lim; i++) {
561            p = new Point();
562        }
563        int x = 3;
564        if (p == null)
565            return (3 * x + y) * x;
566        p.x = x;
567        p.y = 3 * x + y;
568        dummy();
569        return p.x * p.y;
570    }
571
572    int test2_0_2(int y) {
573        Point p[] = new Point[3];
574        int lim = (y & 3);
575        for (int i = 0; i < lim; i++) {
576            p[i] = new Point();
577        }
578        int x = 3;
579        int j = (y & 1);
580        if (p[j] == null)
581            return (3 * x + y) * x;
582        p[j].x = x;
583        p[j].y = 3 * x + y;
584        dummy();
585        return p[j].x * p[0].y;
586    }
587
588    int test2_0_3(int y) {
589        Point p[] = new Point[3];
590        int j = (y & 1);
591        p[j] = null;
592        int lim = (y & 3);
593        for (int i = 0; i < lim; i++) {
594            p[i] = new Point();
595        }
596        int x = 3;
597        if (p[j] == null)
598            return (3 * x + y) * x;
599        p[j].x = x;
600        p[j].y = 3 * x + y;
601        dummy();
602        return p[j].x * p[0].y;
603    }
604
605    int test2_0_4(int y) {
606        Point p[] = new Point[3];
607        int j = (y & 1);
608        p[j] = new Point();
609        int lim = (y & 3);
610        for (int i = 0; i < lim; i++) {
611            p[i] = new Point();
612        }
613        int x = 3;
614        if (p[j] == null)
615            return (3 * x + y) * x;
616        p[j].x = x;
617        p[j].y = 3 * x + y;
618        dummy();
619        return p[j].x * p[0].y;
620    }
621
622    int test2_0_5(int y) {
623        Point p[] = new Point[3];
624        int lim = (y & 3);
625        for (int i = 0; i < lim; i++) {
626            p[i] = new Point();
627        }
628        for (int i = 0; i < lim; i++) {
629            p[i] = null;
630        }
631        int x = 3;
632        int j = (y & 1);
633        if (p[j] == null)
634            return (3 * x + y) * x;
635        p[j].x = x;
636        p[j].y = 3 * x + y;
637        dummy();
638        return p[j].x * p[0].y;
639    }
640
641    int test2_0_6(int y) {
642        Point p[] = new Point[3];
643        int lim = (y & 3);
644        for (int i = 0; i < lim; i++) {
645            p[i] = new Point();
646        }
647        for (int i = 0; i < lim; i++) {
648            p[i] = new Point();
649        }
650        int x = 3;
651        int j = (y & 1);
652        if (p[j] == null)
653            return (3 * x + y) * x;
654        p[j].x = x;
655        p[j].y = 3 * x + y;
656        dummy();
657        return p[j].x * p[0].y;
658    }
659
660    int test2_1_0(int y) {
661        Point p = new Point();
662        int lim = (y & 3);
663        for (int i = 0; i < lim; i++) {
664            dummy();
665            p = new Point();
666            dummy();
667        }
668        int x = 3;
669        p.x = x;
670        p.y = 3 * x + y;
671        dummy();
672        return p.x * p.y;
673    }
674
675    int test2_1_1(int y) {
676        Point p = null;
677        int lim = (y & 3);
678        for (int i = 0; i < lim; i++) {
679            dummy();
680            p = new Point();
681            dummy();
682        }
683        int x = 3;
684        if (p == null)
685            return (3 * x + y) * x;
686        p.x = x;
687        p.y = 3 * x + y;
688        dummy();
689        return p.x * p.y;
690    }
691
692    int test2_1_2(int y) {
693        Point p[] = new Point[3];
694        int lim = (y & 3);
695        for (int i = 0; i < lim; i++) {
696            dummy();
697            p[i] = new Point();
698            dummy();
699        }
700        int x = 3;
701        int j = (y & 1);
702        if (p[j] == null)
703            return (3 * x + y) * x;
704        p[j].x = x;
705        p[j].y = 3 * x + y;
706        dummy();
707        return p[j].x * p[0].y;
708    }
709
710    int test2_1_3(int y) {
711        Point p[] = new Point[3];
712        dummy();
713        int j = (y & 1);
714        p[j] = null;
715        int lim = (y & 3);
716        for (int i = 0; i < lim; i++) {
717            dummy();
718            p[i] = new Point();
719            dummy();
720        }
721        int x = 3;
722        if (p[j] == null)
723            return (3 * x + y) * x;
724        p[j].x = x;
725        p[j].y = 3 * x + y;
726        dummy();
727        return p[j].x * p[0].y;
728    }
729
730    int test2_1_4(int y) {
731        Point p[] = new Point[3];
732        dummy();
733        int j = (y & 1);
734        p[j] = new Point();
735        int lim = (y & 3);
736        for (int i = 0; i < lim; i++) {
737            dummy();
738            p[i] = new Point();
739            dummy();
740        }
741        int x = 3;
742        if (p[j] == null)
743            return (3 * x + y) * x;
744        p[j].x = x;
745        p[j].y = 3 * x + y;
746        dummy();
747        return p[j].x * p[0].y;
748    }
749
750    int test2_1_5(int y) {
751        Point p[] = new Point[3];
752        int lim = (y & 3);
753        for (int i = 0; i < lim; i++) {
754            dummy();
755            p[i] = new Point();
756            dummy();
757        }
758        for (int i = 0; i < lim; i++) {
759            dummy();
760            p[i] = null;
761            dummy();
762        }
763        int x = 3;
764        int j = (y & 1);
765        if (p[j] == null)
766            return (3 * x + y) * x;
767        p[j].x = x;
768        p[j].y = 3 * x + y;
769        dummy();
770        return p[j].x * p[0].y;
771    }
772
773    int test2_1_6(int y) {
774        Point p[] = new Point[3];
775        int lim = (y & 3);
776        for (int i = 0; i < lim; i++) {
777            dummy();
778            p[i] = new Point();
779            dummy();
780        }
781        for (int i = 0; i < lim; i++) {
782            dummy();
783            p[i] = new Point();
784            dummy();
785        }
786        int x = 3;
787        int j = (y & 1);
788        if (p[j] == null)
789            return (3 * x + y) * x;
790        p[j].x = x;
791        p[j].y = 3 * x + y;
792        dummy();
793        return p[j].x * p[0].y;
794    }
795
796    int test2_2_0(int y) {
797        Point p1 = new Point();
798        dummy();
799        Point p = new Point();
800        int lim = (y & 3);
801        for (int i = 0; i < lim; i++) {
802            dummy();
803            p = p1;
804            dummy();
805        }
806        int x = 3;
807        p.x = x;
808        p.y = 3 * x + y;
809        dummy();
810        return p.x * p.y;
811    }
812
813    int test2_2_1(int y) {
814        Point p1 = new Point();
815        dummy();
816        Point p = null;
817        int lim = (y & 3);
818        for (int i = 0; i < lim; i++) {
819            dummy();
820            p = p1;
821            dummy();
822        }
823        int x = 3;
824        if (p == null)
825            return (3 * x + y) * x;
826        p.x = x;
827        p.y = 3 * x + y;
828        dummy();
829        return p.x * p.y;
830    }
831
832    int test2_2_2(int y) {
833        Point p1 = new Point();
834        dummy();
835        Point p[] = new Point[3];
836        int lim = (y & 3);
837        for (int i = 0; i < lim; i++) {
838            dummy();
839            p[i] = p1;
840            dummy();
841        }
842        int x = 3;
843        int j = (y & 1);
844        if (p[j] == null)
845            return (3 * x + y) * x;
846        p[j].x = x;
847        p[j].y = 3 * x + y;
848        dummy();
849        return p[j].x * p[0].y;
850    }
851
852    int test2_2_3(int y) {
853        Point p1 = new Point();
854        dummy();
855        Point p[] = new Point[3];
856        dummy();
857        int j = (y & 1);
858        p[j] = null;
859        int lim = (y & 3);
860        for (int i = 0; i < lim; i++) {
861            dummy();
862            p[i] = p1;
863            dummy();
864        }
865        int x = 3;
866        if (p[j] == null)
867            return (3 * x + y) * x;
868        p[j].x = x;
869        p[j].y = 3 * x + y;
870        dummy();
871        return p[j].x * p[0].y;
872    }
873
874    int test2_2_4(int y) {
875        Point p1 = new Point();
876        dummy();
877        Point p2 = new Point();
878        dummy();
879        Point p[] = new Point[3];
880        dummy();
881        int j = (y & 1);
882        p[j] = p1;
883        int lim = (y & 3);
884        for (int i = 0; i < lim; i++) {
885            dummy();
886            p[i] = p2;
887            dummy();
888        }
889        int x = 3;
890        if (p[j] == null)
891            return (3 * x + y) * x;
892        p[j].x = x;
893        p[j].y = 3 * x + y;
894        dummy();
895        return p[j].x * p[0].y;
896    }
897
898    int test2_2_5(int y) {
899        Point p1 = new Point();
900        dummy();
901        Point p[] = new Point[3];
902        int lim = (y & 3);
903        for (int i = 0; i < lim; i++) {
904            dummy();
905            p[i] = p1;
906            dummy();
907        }
908        for (int i = 0; i < lim; i++) {
909            dummy();
910            p[i] = null;
911            dummy();
912        }
913        int x = 3;
914        int j = (y & 1);
915        if (p[j] == null)
916            return (3 * x + y) * x;
917        p[j].x = x;
918        p[j].y = 3 * x + y;
919        dummy();
920        return p[j].x * p[0].y;
921    }
922
923    int test2_2_6(int y) {
924        Point p1 = new Point();
925        dummy();
926        Point p2 = new Point();
927        dummy();
928        Point p[] = new Point[3];
929        int lim = (y & 3);
930        for (int i = 0; i < lim; i++) {
931            dummy();
932            p[i] = p1;
933            dummy();
934        }
935        for (int i = 0; i < lim; i++) {
936            dummy();
937            p[i] = p2;
938            dummy();
939        }
940        int x = 3;
941        int j = (y & 1);
942        if (p[j] == null)
943            return (3 * x + y) * x;
944        p[j].x = x;
945        p[j].y = 3 * x + y;
946        dummy();
947        return p[j].x * p[0].y;
948    }
949
950    public static void main(String args[]) {
951        Test6726999 tsr = new Test6726999();
952        Point p = new Point();
953        Point ptmp = p;
954        Class cls = Point.class;
955        int y = 0;
956        for (int i = 0; i < 10000; i++) {
957            y = tsr.test0_0_0(y);
958            y = tsr.test0_0_0(y);
959            y = tsr.test0_0_1(y);
960            y = tsr.test0_0_1(y);
961            y = tsr.test0_0_2(y);
962            y = tsr.test0_0_2(y);
963            y = tsr.test0_0_3(y);
964            y = tsr.test0_0_3(y);
965            y = tsr.test0_0_4(y);
966            y = tsr.test0_0_4(y);
967            y = tsr.test0_0_5(y);
968            y = tsr.test0_0_5(y);
969            y = tsr.test0_0_6(y);
970            y = tsr.test0_0_6(y);
971
972            y = tsr.test0_1_3(y);
973            y = tsr.test0_1_3(y);
974            y = tsr.test0_1_4(y);
975            y = tsr.test0_1_4(y);
976            y = tsr.test0_1_5(y);
977            y = tsr.test0_1_5(y);
978            y = tsr.test0_1_6(y);
979            y = tsr.test0_1_6(y);
980
981            y = tsr.test1_0_0(y & ~1);
982            y = tsr.test1_0_1(y & ~1);
983            y = tsr.test1_0_2(y & ~1);
984            y = tsr.test1_0_3(y & ~1);
985            y = tsr.test1_0_4(y & ~1);
986            y = tsr.test1_0_5(y & ~1);
987            y = tsr.test1_0_6(y & ~1);
988            y = tsr.test1_0_0((y & ~1) + 1);
989            y = tsr.test1_0_1((y & ~1) + 1);
990            y = tsr.test1_0_2((y & ~1) + 1);
991            y = tsr.test1_0_3((y & ~1) + 1);
992            y = tsr.test1_0_4((y & ~1) + 1);
993            y = tsr.test1_0_5((y & ~1) + 1);
994            y = tsr.test1_0_6((y & ~1) + 1);
995
996            y = tsr.test1_1_0(y & ~1);
997            y = tsr.test1_1_1(y & ~1);
998            y = tsr.test1_1_2(y & ~1);
999            y = tsr.test1_1_3(y & ~1);
1000            y = tsr.test1_1_4(y & ~1);
1001            y = tsr.test1_1_5(y & ~1);
1002            y = tsr.test1_1_6(y & ~1);
1003            y = tsr.test1_1_0((y & ~1) + 1);
1004            y = tsr.test1_1_1((y & ~1) + 1);
1005            y = tsr.test1_1_2((y & ~1) + 1);
1006            y = tsr.test1_1_3((y & ~1) + 1);
1007            y = tsr.test1_1_4((y & ~1) + 1);
1008            y = tsr.test1_1_5((y & ~1) + 1);
1009            y = tsr.test1_1_6((y & ~1) + 1);
1010
1011            y = tsr.test1_2_0(y & ~1);
1012            y = tsr.test1_2_1(y & ~1);
1013            y = tsr.test1_2_2(y & ~1);
1014            y = tsr.test1_2_3(y & ~1);
1015            y = tsr.test1_2_4(y & ~1);
1016            y = tsr.test1_2_5(y & ~1);
1017            y = tsr.test1_2_6(y & ~1);
1018            y = tsr.test1_2_0((y & ~1) + 1);
1019            y = tsr.test1_2_1((y & ~1) + 1);
1020            y = tsr.test1_2_2((y & ~1) + 1);
1021            y = tsr.test1_2_3((y & ~1) + 1);
1022            y = tsr.test1_2_4((y & ~1) + 1);
1023            y = tsr.test1_2_5((y & ~1) + 1);
1024            y = tsr.test1_2_6((y & ~1) + 1);
1025
1026            y = tsr.test2_0_0(y & ~3);
1027            y = tsr.test2_0_1(y & ~3);
1028            y = tsr.test2_0_2(y & ~3);
1029            y = tsr.test2_0_3(y & ~3);
1030            y = tsr.test2_0_4(y & ~3);
1031            y = tsr.test2_0_5(y & ~3);
1032            y = tsr.test2_0_6(y & ~3);
1033            y = tsr.test2_0_0((y & ~3) + 3);
1034            y = tsr.test2_0_1((y & ~3) + 3);
1035            y = tsr.test2_0_2((y & ~3) + 3);
1036            y = tsr.test2_0_3((y & ~3) + 3);
1037            y = tsr.test2_0_4((y & ~3) + 3);
1038            y = tsr.test2_0_5((y & ~3) + 3);
1039            y = tsr.test2_0_6((y & ~3) + 3);
1040
1041            y = tsr.test2_1_0(y & ~3);
1042            y = tsr.test2_1_1(y & ~3);
1043            y = tsr.test2_1_2(y & ~3);
1044            y = tsr.test2_1_3(y & ~3);
1045            y = tsr.test2_1_4(y & ~3);
1046            y = tsr.test2_1_5(y & ~3);
1047            y = tsr.test2_1_6(y & ~3);
1048            y = tsr.test2_1_0((y & ~3) + 3);
1049            y = tsr.test2_1_1((y & ~3) + 3);
1050            y = tsr.test2_1_2((y & ~3) + 3);
1051            y = tsr.test2_1_3((y & ~3) + 3);
1052            y = tsr.test2_1_4((y & ~3) + 3);
1053            y = tsr.test2_1_5((y & ~3) + 3);
1054            y = tsr.test2_1_6((y & ~3) + 3);
1055
1056            y = tsr.test2_2_0(y & ~3);
1057            y = tsr.test2_2_1(y & ~3);
1058            y = tsr.test2_2_2(y & ~3);
1059            y = tsr.test2_2_3(y & ~3);
1060            y = tsr.test2_2_4(y & ~3);
1061            y = tsr.test2_2_5(y & ~3);
1062            y = tsr.test2_2_6(y & ~3);
1063            y = tsr.test2_2_0((y & ~3) + 3);
1064            y = tsr.test2_2_1((y & ~3) + 3);
1065            y = tsr.test2_2_2((y & ~3) + 3);
1066            y = tsr.test2_2_3((y & ~3) + 3);
1067            y = tsr.test2_2_4((y & ~3) + 3);
1068            y = tsr.test2_2_5((y & ~3) + 3);
1069            y = tsr.test2_2_6((y & ~3) + 3);
1070
1071        }
1072        for (int i = 0; i < 10000; i++) {
1073            y = tsr.test0_0_0(y);
1074            y = tsr.test0_0_0(y);
1075            y = tsr.test0_0_1(y);
1076            y = tsr.test0_0_1(y);
1077            y = tsr.test0_0_2(y);
1078            y = tsr.test0_0_2(y);
1079            y = tsr.test0_0_3(y);
1080            y = tsr.test0_0_3(y);
1081            y = tsr.test0_0_4(y);
1082            y = tsr.test0_0_4(y);
1083            y = tsr.test0_0_5(y);
1084            y = tsr.test0_0_5(y);
1085            y = tsr.test0_0_6(y);
1086            y = tsr.test0_0_6(y);
1087
1088            y = tsr.test0_1_3(y);
1089            y = tsr.test0_1_3(y);
1090            y = tsr.test0_1_4(y);
1091            y = tsr.test0_1_4(y);
1092            y = tsr.test0_1_5(y);
1093            y = tsr.test0_1_5(y);
1094            y = tsr.test0_1_6(y);
1095            y = tsr.test0_1_6(y);
1096
1097            y = tsr.test1_0_0(y & ~1);
1098            y = tsr.test1_0_1(y & ~1);
1099            y = tsr.test1_0_2(y & ~1);
1100            y = tsr.test1_0_3(y & ~1);
1101            y = tsr.test1_0_4(y & ~1);
1102            y = tsr.test1_0_5(y & ~1);
1103            y = tsr.test1_0_6(y & ~1);
1104            y = tsr.test1_0_0((y & ~1) + 1);
1105            y = tsr.test1_0_1((y & ~1) + 1);
1106            y = tsr.test1_0_2((y & ~1) + 1);
1107            y = tsr.test1_0_3((y & ~1) + 1);
1108            y = tsr.test1_0_4((y & ~1) + 1);
1109            y = tsr.test1_0_5((y & ~1) + 1);
1110            y = tsr.test1_0_6((y & ~1) + 1);
1111
1112            y = tsr.test1_1_0(y & ~1);
1113            y = tsr.test1_1_1(y & ~1);
1114            y = tsr.test1_1_2(y & ~1);
1115            y = tsr.test1_1_3(y & ~1);
1116            y = tsr.test1_1_4(y & ~1);
1117            y = tsr.test1_1_5(y & ~1);
1118            y = tsr.test1_1_6(y & ~1);
1119            y = tsr.test1_1_0((y & ~1) + 1);
1120            y = tsr.test1_1_1((y & ~1) + 1);
1121            y = tsr.test1_1_2((y & ~1) + 1);
1122            y = tsr.test1_1_3((y & ~1) + 1);
1123            y = tsr.test1_1_4((y & ~1) + 1);
1124            y = tsr.test1_1_5((y & ~1) + 1);
1125            y = tsr.test1_1_6((y & ~1) + 1);
1126
1127            y = tsr.test1_2_0(y & ~1);
1128            y = tsr.test1_2_1(y & ~1);
1129            y = tsr.test1_2_2(y & ~1);
1130            y = tsr.test1_2_3(y & ~1);
1131            y = tsr.test1_2_4(y & ~1);
1132            y = tsr.test1_2_5(y & ~1);
1133            y = tsr.test1_2_6(y & ~1);
1134            y = tsr.test1_2_0((y & ~1) + 1);
1135            y = tsr.test1_2_1((y & ~1) + 1);
1136            y = tsr.test1_2_2((y & ~1) + 1);
1137            y = tsr.test1_2_3((y & ~1) + 1);
1138            y = tsr.test1_2_4((y & ~1) + 1);
1139            y = tsr.test1_2_5((y & ~1) + 1);
1140            y = tsr.test1_2_6((y & ~1) + 1);
1141
1142            y = tsr.test2_0_0(y & ~3);
1143            y = tsr.test2_0_1(y & ~3);
1144            y = tsr.test2_0_2(y & ~3);
1145            y = tsr.test2_0_3(y & ~3);
1146            y = tsr.test2_0_4(y & ~3);
1147            y = tsr.test2_0_5(y & ~3);
1148            y = tsr.test2_0_6(y & ~3);
1149            y = tsr.test2_0_0((y & ~3) + 3);
1150            y = tsr.test2_0_1((y & ~3) + 3);
1151            y = tsr.test2_0_2((y & ~3) + 3);
1152            y = tsr.test2_0_3((y & ~3) + 3);
1153            y = tsr.test2_0_4((y & ~3) + 3);
1154            y = tsr.test2_0_5((y & ~3) + 3);
1155            y = tsr.test2_0_6((y & ~3) + 3);
1156
1157            y = tsr.test2_1_0(y & ~3);
1158            y = tsr.test2_1_1(y & ~3);
1159            y = tsr.test2_1_2(y & ~3);
1160            y = tsr.test2_1_3(y & ~3);
1161            y = tsr.test2_1_4(y & ~3);
1162            y = tsr.test2_1_5(y & ~3);
1163            y = tsr.test2_1_6(y & ~3);
1164            y = tsr.test2_1_0((y & ~3) + 3);
1165            y = tsr.test2_1_1((y & ~3) + 3);
1166            y = tsr.test2_1_2((y & ~3) + 3);
1167            y = tsr.test2_1_3((y & ~3) + 3);
1168            y = tsr.test2_1_4((y & ~3) + 3);
1169            y = tsr.test2_1_5((y & ~3) + 3);
1170            y = tsr.test2_1_6((y & ~3) + 3);
1171
1172            y = tsr.test2_2_0(y & ~3);
1173            y = tsr.test2_2_1(y & ~3);
1174            y = tsr.test2_2_2(y & ~3);
1175            y = tsr.test2_2_3(y & ~3);
1176            y = tsr.test2_2_4(y & ~3);
1177            y = tsr.test2_2_5(y & ~3);
1178            y = tsr.test2_2_6(y & ~3);
1179            y = tsr.test2_2_0((y & ~3) + 3);
1180            y = tsr.test2_2_1((y & ~3) + 3);
1181            y = tsr.test2_2_2((y & ~3) + 3);
1182            y = tsr.test2_2_3((y & ~3) + 3);
1183            y = tsr.test2_2_4((y & ~3) + 3);
1184            y = tsr.test2_2_5((y & ~3) + 3);
1185            y = tsr.test2_2_6((y & ~3) + 3);
1186
1187        }
1188        for (int i = 0; i < 10000; i++) {
1189            y = tsr.test0_0_0(y);
1190            y = tsr.test0_0_0(y);
1191            y = tsr.test0_0_1(y);
1192            y = tsr.test0_0_1(y);
1193            y = tsr.test0_0_2(y);
1194            y = tsr.test0_0_2(y);
1195            y = tsr.test0_0_3(y);
1196            y = tsr.test0_0_3(y);
1197            y = tsr.test0_0_4(y);
1198            y = tsr.test0_0_4(y);
1199            y = tsr.test0_0_5(y);
1200            y = tsr.test0_0_5(y);
1201            y = tsr.test0_0_6(y);
1202            y = tsr.test0_0_6(y);
1203
1204            y = tsr.test0_1_3(y);
1205            y = tsr.test0_1_3(y);
1206            y = tsr.test0_1_4(y);
1207            y = tsr.test0_1_4(y);
1208            y = tsr.test0_1_5(y);
1209            y = tsr.test0_1_5(y);
1210            y = tsr.test0_1_6(y);
1211            y = tsr.test0_1_6(y);
1212
1213            y = tsr.test1_0_0(y & ~1);
1214            y = tsr.test1_0_1(y & ~1);
1215            y = tsr.test1_0_2(y & ~1);
1216            y = tsr.test1_0_3(y & ~1);
1217            y = tsr.test1_0_4(y & ~1);
1218            y = tsr.test1_0_5(y & ~1);
1219            y = tsr.test1_0_6(y & ~1);
1220            y = tsr.test1_0_0((y & ~1) + 1);
1221            y = tsr.test1_0_1((y & ~1) + 1);
1222            y = tsr.test1_0_2((y & ~1) + 1);
1223            y = tsr.test1_0_3((y & ~1) + 1);
1224            y = tsr.test1_0_4((y & ~1) + 1);
1225            y = tsr.test1_0_5((y & ~1) + 1);
1226            y = tsr.test1_0_6((y & ~1) + 1);
1227
1228            y = tsr.test1_1_0(y & ~1);
1229            y = tsr.test1_1_1(y & ~1);
1230            y = tsr.test1_1_2(y & ~1);
1231            y = tsr.test1_1_3(y & ~1);
1232            y = tsr.test1_1_4(y & ~1);
1233            y = tsr.test1_1_5(y & ~1);
1234            y = tsr.test1_1_6(y & ~1);
1235            y = tsr.test1_1_0((y & ~1) + 1);
1236            y = tsr.test1_1_1((y & ~1) + 1);
1237            y = tsr.test1_1_2((y & ~1) + 1);
1238            y = tsr.test1_1_3((y & ~1) + 1);
1239            y = tsr.test1_1_4((y & ~1) + 1);
1240            y = tsr.test1_1_5((y & ~1) + 1);
1241            y = tsr.test1_1_6((y & ~1) + 1);
1242
1243            y = tsr.test1_2_0(y & ~1);
1244            y = tsr.test1_2_1(y & ~1);
1245            y = tsr.test1_2_2(y & ~1);
1246            y = tsr.test1_2_3(y & ~1);
1247            y = tsr.test1_2_4(y & ~1);
1248            y = tsr.test1_2_5(y & ~1);
1249            y = tsr.test1_2_6(y & ~1);
1250            y = tsr.test1_2_0((y & ~1) + 1);
1251            y = tsr.test1_2_1((y & ~1) + 1);
1252            y = tsr.test1_2_2((y & ~1) + 1);
1253            y = tsr.test1_2_3((y & ~1) + 1);
1254            y = tsr.test1_2_4((y & ~1) + 1);
1255            y = tsr.test1_2_5((y & ~1) + 1);
1256            y = tsr.test1_2_6((y & ~1) + 1);
1257
1258            y = tsr.test2_0_0(y & ~3);
1259            y = tsr.test2_0_1(y & ~3);
1260            y = tsr.test2_0_2(y & ~3);
1261            y = tsr.test2_0_3(y & ~3);
1262            y = tsr.test2_0_4(y & ~3);
1263            y = tsr.test2_0_5(y & ~3);
1264            y = tsr.test2_0_6(y & ~3);
1265            y = tsr.test2_0_0((y & ~3) + 3);
1266            y = tsr.test2_0_1((y & ~3) + 3);
1267            y = tsr.test2_0_2((y & ~3) + 3);
1268            y = tsr.test2_0_3((y & ~3) + 3);
1269            y = tsr.test2_0_4((y & ~3) + 3);
1270            y = tsr.test2_0_5((y & ~3) + 3);
1271            y = tsr.test2_0_6((y & ~3) + 3);
1272
1273            y = tsr.test2_1_0(y & ~3);
1274            y = tsr.test2_1_1(y & ~3);
1275            y = tsr.test2_1_2(y & ~3);
1276            y = tsr.test2_1_3(y & ~3);
1277            y = tsr.test2_1_4(y & ~3);
1278            y = tsr.test2_1_5(y & ~3);
1279            y = tsr.test2_1_6(y & ~3);
1280            y = tsr.test2_1_0((y & ~3) + 3);
1281            y = tsr.test2_1_1((y & ~3) + 3);
1282            y = tsr.test2_1_2((y & ~3) + 3);
1283            y = tsr.test2_1_3((y & ~3) + 3);
1284            y = tsr.test2_1_4((y & ~3) + 3);
1285            y = tsr.test2_1_5((y & ~3) + 3);
1286            y = tsr.test2_1_6((y & ~3) + 3);
1287
1288            y = tsr.test2_2_0(y & ~3);
1289            y = tsr.test2_2_1(y & ~3);
1290            y = tsr.test2_2_2(y & ~3);
1291            y = tsr.test2_2_3(y & ~3);
1292            y = tsr.test2_2_4(y & ~3);
1293            y = tsr.test2_2_5(y & ~3);
1294            y = tsr.test2_2_6(y & ~3);
1295            y = tsr.test2_2_0((y & ~3) + 3);
1296            y = tsr.test2_2_1((y & ~3) + 3);
1297            y = tsr.test2_2_2((y & ~3) + 3);
1298            y = tsr.test2_2_3((y & ~3) + 3);
1299            y = tsr.test2_2_4((y & ~3) + 3);
1300            y = tsr.test2_2_5((y & ~3) + 3);
1301            y = tsr.test2_2_6((y & ~3) + 3);
1302
1303        }
1304
1305        int z = 0;
1306        y = tsr.test0_0_0(0);
1307        System.out.println("After 'test0_0_0' y=" + y);
1308        y = tsr.test0_0_1(0);
1309        System.out.println("After 'test0_0_1' y=" + y);
1310        y = tsr.test0_0_2(0);
1311        System.out.println("After 'test0_0_2' y=" + y);
1312        y = tsr.test0_0_3(0);
1313        System.out.println("After 'test0_0_3' y=" + y);
1314        y = tsr.test0_0_4(0);
1315        System.out.println("After 'test0_0_4' y=" + y);
1316        y = tsr.test0_0_5(0);
1317        System.out.println("After 'test0_0_5' y=" + y);
1318        y = tsr.test0_0_6(0);
1319        System.out.println("After 'test0_0_6' y=" + y);
1320        y = tsr.test0_1_3(0);
1321        System.out.println("After 'test0_1_3' y=" + y);
1322        y = tsr.test0_1_4(0);
1323        System.out.println("After 'test0_1_4' y=" + y);
1324        y = tsr.test0_1_5(0);
1325        System.out.println("After 'test0_1_5' y=" + y);
1326        y = tsr.test0_1_6(0);
1327        System.out.println("After 'test0_1_6' y=" + y);
1328
1329        y = tsr.test1_0_0(0);
1330        System.out.println("After 'test1_0_0' y=" + y);
1331        y = tsr.test1_0_1(0);
1332        System.out.println("After 'test1_0_1' y=" + y);
1333        y = tsr.test1_0_2(0);
1334        System.out.println("After 'test1_0_2' y=" + y);
1335        y = tsr.test1_0_3(0);
1336        System.out.println("After 'test1_0_3' y=" + y);
1337        y = tsr.test1_0_4(0);
1338        System.out.println("After 'test1_0_4' y=" + y);
1339        y = tsr.test1_0_5(0);
1340        System.out.println("After 'test1_0_5' y=" + y);
1341        y = tsr.test1_0_6(0);
1342        System.out.println("After 'test1_0_6' y=" + y);
1343
1344        y = tsr.test1_1_0(0);
1345        System.out.println("After 'test1_1_0' y=" + y);
1346        y = tsr.test1_1_1(0);
1347        System.out.println("After 'test1_1_1' y=" + y);
1348        y = tsr.test1_1_2(0);
1349        System.out.println("After 'test1_1_2' y=" + y);
1350        y = tsr.test1_1_3(0);
1351        System.out.println("After 'test1_1_3' y=" + y);
1352        y = tsr.test1_1_4(0);
1353        System.out.println("After 'test1_1_4' y=" + y);
1354        y = tsr.test1_1_5(0);
1355        System.out.println("After 'test1_1_5' y=" + y);
1356        y = tsr.test1_1_6(0);
1357        System.out.println("After 'test1_1_6' y=" + y);
1358
1359        y = tsr.test1_2_0(0);
1360        System.out.println("After 'test1_2_0' y=" + y);
1361        y = tsr.test1_2_1(0);
1362        System.out.println("After 'test1_2_1' y=" + y);
1363        y = tsr.test1_2_2(0);
1364        System.out.println("After 'test1_2_2' y=" + y);
1365        y = tsr.test1_2_3(0);
1366        System.out.println("After 'test1_2_3' y=" + y);
1367        y = tsr.test1_2_4(0);
1368        System.out.println("After 'test1_2_4' y=" + y);
1369        y = tsr.test1_2_5(0);
1370        System.out.println("After 'test1_2_5' y=" + y);
1371        y = tsr.test1_2_6(0);
1372        System.out.println("After 'test1_2_6' y=" + y);
1373
1374        y = tsr.test2_0_0(0);
1375        System.out.println("After 'test2_0_0' y=" + y);
1376        y = tsr.test2_0_1(0);
1377        System.out.println("After 'test2_0_1' y=" + y);
1378        y = tsr.test2_0_2(0);
1379        System.out.println("After 'test2_0_2' y=" + y);
1380        y = tsr.test2_0_3(0);
1381        System.out.println("After 'test2_0_3' y=" + y);
1382        y = tsr.test2_0_4(0);
1383        System.out.println("After 'test2_0_4' y=" + y);
1384        y = tsr.test2_0_5(0);
1385        System.out.println("After 'test2_0_5' y=" + y);
1386        y = tsr.test2_0_6(0);
1387        System.out.println("After 'test2_0_6' y=" + y);
1388
1389        y = tsr.test2_1_0(0);
1390        System.out.println("After 'test2_1_0' y=" + y);
1391        y = tsr.test2_1_1(0);
1392        System.out.println("After 'test2_1_1' y=" + y);
1393        y = tsr.test2_1_2(0);
1394        System.out.println("After 'test2_1_2' y=" + y);
1395        y = tsr.test2_1_3(0);
1396        System.out.println("After 'test2_1_3' y=" + y);
1397        y = tsr.test2_1_4(0);
1398        System.out.println("After 'test2_1_4' y=" + y);
1399        y = tsr.test2_1_5(0);
1400        System.out.println("After 'test2_1_5' y=" + y);
1401        y = tsr.test2_1_6(0);
1402        System.out.println("After 'test2_1_6' y=" + y);
1403
1404        y = tsr.test2_2_0(0);
1405        System.out.println("After 'test2_2_0' y=" + y);
1406        y = tsr.test2_2_1(0);
1407        System.out.println("After 'test2_2_1' y=" + y);
1408        y = tsr.test2_2_2(0);
1409        System.out.println("After 'test2_2_2' y=" + y);
1410        y = tsr.test2_2_3(0);
1411        System.out.println("After 'test2_2_3' y=" + y);
1412        y = tsr.test2_2_4(0);
1413        System.out.println("After 'test2_2_4' y=" + y);
1414        y = tsr.test2_2_5(0);
1415        System.out.println("After 'test2_2_5' y=" + y);
1416        y = tsr.test2_2_6(0);
1417        System.out.println("After 'test2_2_6' y=" + y);
1418
1419    }
1420}
1421