view test/compiler/6726999/Test.java @ 3237:399aa66d375e

Fixed a bug in which the valueEquals method was misused. The method does only check the equality of the node data and not full GVN equality by taking inputs and successors into account.
author Thomas Wuerthinger <thomas@wuerthinger.net>
date Wed, 27 Jul 2011 14:16:38 -0700
parents c18cbe5936b8
children
line wrap: on
line source

/*
 * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 *
 * This code is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License version 2 only, as
 * published by the Free Software Foundation.
 *
 * This code is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 * version 2 for more details (a copy is included in the LICENSE file that
 * accompanied this code).
 *
 * You should have received a copy of the GNU General Public License version
 * 2 along with this work; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 *
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
 * or visit www.oracle.com if you need additional information or have any
 * questions.
 *
 */

/*
 * @test
 * @bug 6726999
 * @summary nsk/stress/jck12a/jck12a010 assert(n != NULL,"Bad immediate dominator info.");
 * @run main/othervm -Xbatch -XX:CompileCommand=exclude,Test.dummy -XX:+AggressiveOpts Test
 */

import java.lang.reflect.Array;

class Point {
  int x;
  int y;
}

public class Test {

  void dummy() {
    // Empty method to verify correctness of DebugInfo.
    // Use -XX:CompileCommand=exclude,Test.dummy
  }

  int test0_0_0(int y) {
    int x = 3;
    Point p = new Point();
    dummy();
    p.x = x;
    p.y = 3 * x + y;
    return p.x * p.y;
  }

  int test0_0_1(int y) {
    int x = 3;
    Point p = null;
    dummy();
    p = new Point();
    dummy();
    p.x = x;
    p.y = 3 * x + y;
    return p.x * p.y;
  }

  int test0_0_2(int y) {
    int x = 3;
    Point p = new Point();
    dummy();
    p = new Point();
    dummy();
    p.x = x;
    p.y = 3 * x + y;
    return p.x * p.y;
  }

  int test0_0_3(int y) {
    int x = 3;
    Point p[] = new Point[1];
    p[0] = new Point();
    dummy();
    p[0].x = x;
    p[0].y = 3 * x + y;
    return p[0].x * p[0].y;
  }

  int test0_0_4(int y) {
    int x = 3;
    Point p[] = new Point[1];
    dummy();
    p[0] = new Point();
    dummy();
    p[0].x = x;
    p[0].y = 3 * x + y;
    return p[0].x * p[0].y;
  }

  int test0_0_5(int y) {
    int x = 3;
    Point p[] = new Point[1];
    dummy();
    p[0] = null;
    dummy();
    p[0] = new Point();
    dummy();
    p[0].x = x;
    p[0].y = 3 * x + y;
    return p[0].x * p[0].y;
  }

  int test0_0_6(int y) {
    int x = 3;
    Point p[] = new Point[1];
    p[0] = new Point();
    dummy();
    p[0] = new Point();
    dummy();
    p[0].x = x;
    p[0].y = 3 * x + y;
    return p[0].x * p[0].y;
  }

  int test0_1_3(int y) {
    int x = 3;
    Point p1 = new Point();
    dummy();
    Point p[] = new Point[1];
    p[0] = p1;
    dummy();
    p[0].x = x;
    p[0].y = 3 * x + y;
    return p[0].x * p[0].y;
  }

  int test0_1_4(int y) {
    int x = 3;
    Point p1 = new Point();
    dummy();
    Point p[] = new Point[1];
    dummy();
    p[0] = p1;
    dummy();
    p[0].x = x;
    p[0].y = 3 * x + y;
    return p[0].x * p[0].y;
  }

  int test0_1_5(int y) {
    int x = 3;
    Point p1 = new Point();
    dummy();
    Point p[] = new Point[1];
    dummy();
    p[0] = null;
    dummy();
    p[0] = p1;
    dummy();
    p[0].x = x;
    p[0].y = 3 * x + y;
    return p[0].x * p[0].y;
  }

  int test0_1_6(int y) {
    int x = 3;
    Point p1 = new Point();
    dummy();
    Point p2 = new Point();
    dummy();
    Point p[] = new Point[1];
    p[0] = p1;
    dummy();
    p[0] = p2;
    dummy();
    p[0].x = x;
    p[0].y = 3 * x + y;
    return p[0].x * p[0].y;
  }

  int test1_0_0(int y) {
    Point p = new Point();
    if ( (y & 1) == 1 ) {
      p = new Point();
    }
    int x = 3;
    p.x = x;
    p.y = 3 * x + y;
    dummy();
    return p.x * p.y;
  }

  int test1_0_1(int y) {
    Point p = null;
    if ( (y & 1) == 1 ) {
      p = new Point();
    }
    int x = 3;
    if ( p == null )
      return (3 * x + y) * x;
    p.x = x;
    p.y = 3 * x + y;
    dummy();
    return p.x * p.y;
  }

  int test1_0_2(int y) {
    Point p[] = new Point[1];
    if ( (y & 1) == 1 ) {
      p[0] = new Point();
    }
    int x = 3;
    if ( p[0] == null )
      return (3 * x + y) * x;
    p[0].x = x;
    p[0].y = 3 * x + y;
    dummy();
    return p[0].x * p[0].y;
  }

  int test1_0_3(int y) {
    Point p[] = new Point[1];
    p[0] = null;
    if ( (y & 1) == 1 ) {
      p[0] = new Point();
    }
    int x = 3;
    if ( p[0] == null )
      return (3 * x + y) * x;
    p[0].x = x;
    p[0].y = 3 * x + y;
    dummy();
    return p[0].x * p[0].y;
  }

  int test1_0_4(int y) {
    Point p[] = new Point[1];
    p[0] = new Point();
    if ( (y & 1) == 1 ) {
      p[0] = new Point();
    }
    int x = 3;
    if ( p[0] == null )
      return (3 * x + y) * x;
    p[0].x = x;
    p[0].y = 3 * x + y;
    dummy();
    return p[0].x * p[0].y;
  }

  int test1_0_5(int y) {
    Point p[] = new Point[1];
    if ( (y & 1) == 1 ) {
      p[0] = new Point();
    } else {
      p[0] = null;
    }
    int x = 3;
    if ( p[0] == null )
      return (3 * x + y) * x;
    p[0].x = x;
    p[0].y = 3 * x + y;
    dummy();
    return p[0].x * p[0].y;
  }

  int test1_0_6(int y) {
    Point p[] = new Point[1];
    if ( (y & 1) == 1 ) {
      p[0] = new Point();
    } else {
      p[0] = new Point();
    }
    int x = 3;
    if ( p[0] == null )
      return (3 * x + y) * x;
    p[0].x = x;
    p[0].y = 3 * x + y;
    dummy();
    return p[0].x * p[0].y;
  }

  int test1_1_0(int y) {
    Point p = new Point();
    if ( (y & 1) == 1 ) {
      dummy();
      p = new Point();
      dummy();
    }
    int x = 3;
    p.x = x;
    p.y = 3 * x + y;
    dummy();
    return p.x * p.y;
  }

  int test1_1_1(int y) {
    Point p = null;
    if ( (y & 1) == 1 ) {
      dummy();
      p = new Point();
      dummy();
    }
    int x = 3;
    if ( p == null )
      return (3 * x + y) * x;
    p.x = x;
    p.y = 3 * x + y;
    dummy();
    return p.x * p.y;
  }

  int test1_1_2(int y) {
    Point p[] = new Point[1];
    if ( (y & 1) == 1 ) {
      dummy();
      p[0] = new Point();
      dummy();
    }
    int x = 3;
    if ( p[0] == null )
      return (3 * x + y) * x;
    p[0].x = x;
    p[0].y = 3 * x + y;
    dummy();
    return p[0].x * p[0].y;
  }

  int test1_1_3(int y) {
    Point p[] = new Point[1];
    dummy();
    p[0] = null;
    if ( (y & 1) == 1 ) {
      dummy();
      p[0] = new Point();
      dummy();
    }
    int x = 3;
    if ( p[0] == null )
      return (3 * x + y) * x;
    p[0].x = x;
    p[0].y = 3 * x + y;
    dummy();
    return p[0].x * p[0].y;
  }

  int test1_1_4(int y) {
    Point p[] = new Point[1];
    dummy();
    p[0] = new Point();
    if ( (y & 1) == 1 ) {
      dummy();
      p[0] = new Point();
      dummy();
    }
    int x = 3;
    if ( p[0] == null )
      return (3 * x + y) * x;
    p[0].x = x;
    p[0].y = 3 * x + y;
    dummy();
    return p[0].x * p[0].y;
  }

  int test1_1_5(int y) {
    Point p[] = new Point[1];
    if ( (y & 1) == 1 ) {
      dummy();
      p[0] = new Point();
      dummy();
    } else {
      dummy();
      p[0] = null;
      dummy();
    }
    int x = 3;
    if ( p[0] == null )
      return (3 * x + y) * x;
    p[0].x = x;
    p[0].y = 3 * x + y;
    dummy();
    return p[0].x * p[0].y;
  }

  int test1_1_6(int y) {
    Point p[] = new Point[1];
    if ( (y & 1) == 1 ) {
      dummy();
      p[0] = new Point();
      dummy();
    } else {
      dummy();
      p[0] = new Point();
      dummy();
    }
    int x = 3;
    if ( p[0] == null )
      return (3 * x + y) * x;
    p[0].x = x;
    p[0].y = 3 * x + y;
    dummy();
    return p[0].x * p[0].y;
  }

  int test1_2_0(int y) {
    Point p1 = new Point();
    dummy();
    Point p = new Point();
    if ( (y & 1) == 1 ) {
      dummy();
      p = p1;
      dummy();
    }
    int x = 3;
    p.x = x;
    p.y = 3 * x + y;
    dummy();
    return p.x * p.y;
  }

  int test1_2_1(int y) {
    Point p1 = new Point();
    dummy();
    Point p = null;
    if ( (y & 1) == 1 ) {
      dummy();
      p = p1;
      dummy();
    }
    int x = 3;
    if ( p == null )
      return (3 * x + y) * x;
    p.x = x;
    p.y = 3 * x + y;
    dummy();
    return p.x * p.y;
  }

  int test1_2_2(int y) {
    Point p1 = new Point();
    dummy();
    Point p[] = new Point[1];
    if ( (y & 1) == 1 ) {
      dummy();
      p[0] = p1;
      dummy();
    }
    int x = 3;
    if ( p[0] == null )
      return (3 * x + y) * x;
    p[0].x = x;
    p[0].y = 3 * x + y;
    dummy();
    return p[0].x * p[0].y;
  }

  int test1_2_3(int y) {
    Point p1 = new Point();
    dummy();
    Point p[] = new Point[1];
    dummy();
    p[0] = null;
    if ( (y & 1) == 1 ) {
      dummy();
      p[0] = p1;
      dummy();
    }
    int x = 3;
    if ( p[0] == null )
      return (3 * x + y) * x;
    p[0].x = x;
    p[0].y = 3 * x + y;
    dummy();
    return p[0].x * p[0].y;
  }

  int test1_2_4(int y) {
    Point p1 = new Point();
    dummy();
    Point p2 = new Point();
    dummy();
    Point p[] = new Point[1];
    dummy();
    p[0] = p1;
    if ( (y & 1) == 1 ) {
      dummy();
      p[0] = p2;
      dummy();
    }
    int x = 3;
    if ( p[0] == null )
      return (3 * x + y) * x;
    p[0].x = x;
    p[0].y = 3 * x + y;
    dummy();
    return p[0].x * p[0].y;
  }

  int test1_2_5(int y) {
    Point p1 = new Point();
    dummy();
    Point p[] = new Point[1];
    if ( (y & 1) == 1 ) {
      dummy();
      p[0] = p1;
      dummy();
    } else {
      dummy();
      p[0] = null;
      dummy();
    }
    int x = 3;
    if ( p[0] == null )
      return (3 * x + y) * x;
    p[0].x = x;
    p[0].y = 3 * x + y;
    dummy();
    return p[0].x * p[0].y;
  }

  int test1_2_6(int y) {
    Point p1 = new Point();
    dummy();
    Point p2 = new Point();
    dummy();
    Point p[] = new Point[1];
    if ( (y & 1) == 1 ) {
      dummy();
      p[0] = p1;
      dummy();
    } else {
      dummy();
      p[0] = p2;
      dummy();
    }
    int x = 3;
    if ( p[0] == null )
      return (3 * x + y) * x;
    p[0].x = x;
    p[0].y = 3 * x + y;
    dummy();
    return p[0].x * p[0].y;
  }

  int test2_0_0(int y) {
    Point p = new Point();
    int lim = (y & 3);
    for (int i = 0; i < lim; i++) {
      p = new Point();
    }
    int x = 3;
    p.x = x;
    p.y = 3 * x + y;
    dummy();
    return p.x * p.y;
  }

  int test2_0_1(int y) {
    Point p = null;
    int lim = (y & 3);
    for (int i = 0; i < lim; i++) {
      p = new Point();
    }
    int x = 3;
    if ( p == null )
      return (3 * x + y) * x;
    p.x = x;
    p.y = 3 * x + y;
    dummy();
    return p.x * p.y;
  }

  int test2_0_2(int y) {
    Point p[] = new Point[3];
    int lim = (y & 3);
    for (int i = 0; i < lim; i++) {
      p[i] = new Point();
    }
    int x = 3;
    int j = (y & 1);
    if ( p[j] == null )
      return (3 * x + y) * x;
    p[j].x = x;
    p[j].y = 3 * x + y;
    dummy();
    return p[j].x * p[0].y;
  }

  int test2_0_3(int y) {
    Point p[] = new Point[3];
    int j = (y & 1);
    p[j] = null;
    int lim = (y & 3);
    for (int i = 0; i < lim; i++) {
      p[i] = new Point();
    }
    int x = 3;
    if ( p[j] == null )
      return (3 * x + y) * x;
    p[j].x = x;
    p[j].y = 3 * x + y;
    dummy();
    return p[j].x * p[0].y;
  }

  int test2_0_4(int y) {
    Point p[] = new Point[3];
    int j = (y & 1);
    p[j] = new Point();
    int lim = (y & 3);
    for (int i = 0; i < lim; i++) {
      p[i] = new Point();
    }
    int x = 3;
    if ( p[j] == null )
      return (3 * x + y) * x;
    p[j].x = x;
    p[j].y = 3 * x + y;
    dummy();
    return p[j].x * p[0].y;
  }

  int test2_0_5(int y) {
    Point p[] = new Point[3];
    int lim = (y & 3);
    for (int i = 0; i < lim; i++) {
      p[i] = new Point();
    }
    for (int i = 0; i < lim; i++) {
      p[i] = null;
    }
    int x = 3;
    int j = (y & 1);
    if ( p[j] == null )
      return (3 * x + y) * x;
    p[j].x = x;
    p[j].y = 3 * x + y;
    dummy();
    return p[j].x * p[0].y;
  }

  int test2_0_6(int y) {
    Point p[] = new Point[3];
    int lim = (y & 3);
    for (int i = 0; i < lim; i++) {
      p[i] = new Point();
    }
    for (int i = 0; i < lim; i++) {
      p[i] = new Point();
    }
    int x = 3;
    int j = (y & 1);
    if ( p[j] == null )
      return (3 * x + y) * x;
    p[j].x = x;
    p[j].y = 3 * x + y;
    dummy();
    return p[j].x * p[0].y;
  }

  int test2_1_0(int y) {
    Point p = new Point();
    int lim = (y & 3);
    for (int i = 0; i < lim; i++) {
      dummy();
      p = new Point();
      dummy();
    }
    int x = 3;
    p.x = x;
    p.y = 3 * x + y;
    dummy();
    return p.x * p.y;
  }

  int test2_1_1(int y) {
    Point p = null;
    int lim = (y & 3);
    for (int i = 0; i < lim; i++) {
      dummy();
      p = new Point();
      dummy();
    }
    int x = 3;
    if ( p == null )
      return (3 * x + y) * x;
    p.x = x;
    p.y = 3 * x + y;
    dummy();
    return p.x * p.y;
  }

  int test2_1_2(int y) {
    Point p[] = new Point[3];
    int lim = (y & 3);
    for (int i = 0; i < lim; i++) {
      dummy();
      p[i] = new Point();
      dummy();
    }
    int x = 3;
    int j = (y & 1);
    if ( p[j] == null )
      return (3 * x + y) * x;
    p[j].x = x;
    p[j].y = 3 * x + y;
    dummy();
    return p[j].x * p[0].y;
  }

  int test2_1_3(int y) {
    Point p[] = new Point[3];
    dummy();
    int j = (y & 1);
    p[j] = null;
    int lim = (y & 3);
    for (int i = 0; i < lim; i++) {
      dummy();
      p[i] = new Point();
      dummy();
    }
    int x = 3;
    if ( p[j] == null )
      return (3 * x + y) * x;
    p[j].x = x;
    p[j].y = 3 * x + y;
    dummy();
    return p[j].x * p[0].y;
  }

  int test2_1_4(int y) {
    Point p[] = new Point[3];
    dummy();
    int j = (y & 1);
    p[j] = new Point();
    int lim = (y & 3);
    for (int i = 0; i < lim; i++) {
      dummy();
      p[i] = new Point();
      dummy();
    }
    int x = 3;
    if ( p[j] == null )
      return (3 * x + y) * x;
    p[j].x = x;
    p[j].y = 3 * x + y;
    dummy();
    return p[j].x * p[0].y;
  }

  int test2_1_5(int y) {
    Point p[] = new Point[3];
    int lim = (y & 3);
    for (int i = 0; i < lim; i++) {
      dummy();
      p[i] = new Point();
      dummy();
    }
    for (int i = 0; i < lim; i++) {
      dummy();
      p[i] = null;
      dummy();
    }
    int x = 3;
    int j = (y & 1);
    if ( p[j] == null )
      return (3 * x + y) * x;
    p[j].x = x;
    p[j].y = 3 * x + y;
    dummy();
    return p[j].x * p[0].y;
  }

  int test2_1_6(int y) {
    Point p[] = new Point[3];
    int lim = (y & 3);
    for (int i = 0; i < lim; i++) {
      dummy();
      p[i] = new Point();
      dummy();
    }
    for (int i = 0; i < lim; i++) {
      dummy();
      p[i] = new Point();
      dummy();
    }
    int x = 3;
    int j = (y & 1);
    if ( p[j] == null )
      return (3 * x + y) * x;
    p[j].x = x;
    p[j].y = 3 * x + y;
    dummy();
    return p[j].x * p[0].y;
  }

  int test2_2_0(int y) {
    Point p1 = new Point();
    dummy();
    Point p = new Point();
    int lim = (y & 3);
    for (int i = 0; i < lim; i++) {
      dummy();
      p = p1;
      dummy();
    }
    int x = 3;
    p.x = x;
    p.y = 3 * x + y;
    dummy();
    return p.x * p.y;
  }

  int test2_2_1(int y) {
    Point p1 = new Point();
    dummy();
    Point p = null;
    int lim = (y & 3);
    for (int i = 0; i < lim; i++) {
      dummy();
      p = p1;
      dummy();
    }
    int x = 3;
    if ( p == null )
      return (3 * x + y) * x;
    p.x = x;
    p.y = 3 * x + y;
    dummy();
    return p.x * p.y;
  }

  int test2_2_2(int y) {
    Point p1 = new Point();
    dummy();
    Point p[] = new Point[3];
    int lim = (y & 3);
    for (int i = 0; i < lim; i++) {
      dummy();
      p[i] = p1;
      dummy();
    }
    int x = 3;
    int j = (y & 1);
    if ( p[j] == null )
      return (3 * x + y) * x;
    p[j].x = x;
    p[j].y = 3 * x + y;
    dummy();
    return p[j].x * p[0].y;
  }

  int test2_2_3(int y) {
    Point p1 = new Point();
    dummy();
    Point p[] = new Point[3];
    dummy();
    int j = (y & 1);
    p[j] = null;
    int lim = (y & 3);
    for (int i = 0; i < lim; i++) {
      dummy();
      p[i] = p1;
      dummy();
    }
    int x = 3;
    if ( p[j] == null )
      return (3 * x + y) * x;
    p[j].x = x;
    p[j].y = 3 * x + y;
    dummy();
    return p[j].x * p[0].y;
  }

  int test2_2_4(int y) {
    Point p1 = new Point();
    dummy();
    Point p2 = new Point();
    dummy();
    Point p[] = new Point[3];
    dummy();
    int j = (y & 1);
    p[j] = p1;
    int lim = (y & 3);
    for (int i = 0; i < lim; i++) {
      dummy();
      p[i] = p2;
      dummy();
    }
    int x = 3;
    if ( p[j] == null )
      return (3 * x + y) * x;
    p[j].x = x;
    p[j].y = 3 * x + y;
    dummy();
    return p[j].x * p[0].y;
  }

  int test2_2_5(int y) {
    Point p1 = new Point();
    dummy();
    Point p[] = new Point[3];
    int lim = (y & 3);
    for (int i = 0; i < lim; i++) {
      dummy();
      p[i] = p1;
      dummy();
    }
    for (int i = 0; i < lim; i++) {
      dummy();
      p[i] = null;
      dummy();
    }
    int x = 3;
    int j = (y & 1);
    if ( p[j] == null )
      return (3 * x + y) * x;
    p[j].x = x;
    p[j].y = 3 * x + y;
    dummy();
    return p[j].x * p[0].y;
  }

  int test2_2_6(int y) {
    Point p1 = new Point();
    dummy();
    Point p2 = new Point();
    dummy();
    Point p[] = new Point[3];
    int lim = (y & 3);
    for (int i = 0; i < lim; i++) {
      dummy();
      p[i] = p1;
      dummy();
    }
    for (int i = 0; i < lim; i++) {
      dummy();
      p[i] = p2;
      dummy();
    }
    int x = 3;
    int j = (y & 1);
    if ( p[j] == null )
      return (3 * x + y) * x;
    p[j].x = x;
    p[j].y = 3 * x + y;
    dummy();
    return p[j].x * p[0].y;
  }

  public static void main(String args[]) {
    Test tsr    = new Test();
    Point p     = new Point();
    Point ptmp  = p;
    Class cls   = Point.class;
    int y = 0;
    for (int i=0; i<10000; i++) {
      y = tsr.test0_0_0(y);
      y = tsr.test0_0_0(y);
      y = tsr.test0_0_1(y);
      y = tsr.test0_0_1(y);
      y = tsr.test0_0_2(y);
      y = tsr.test0_0_2(y);
      y = tsr.test0_0_3(y);
      y = tsr.test0_0_3(y);
      y = tsr.test0_0_4(y);
      y = tsr.test0_0_4(y);
      y = tsr.test0_0_5(y);
      y = tsr.test0_0_5(y);
      y = tsr.test0_0_6(y);
      y = tsr.test0_0_6(y);

      y = tsr.test0_1_3(y);
      y = tsr.test0_1_3(y);
      y = tsr.test0_1_4(y);
      y = tsr.test0_1_4(y);
      y = tsr.test0_1_5(y);
      y = tsr.test0_1_5(y);
      y = tsr.test0_1_6(y);
      y = tsr.test0_1_6(y);

      y = tsr.test1_0_0(y&~1);
      y = tsr.test1_0_1(y&~1);
      y = tsr.test1_0_2(y&~1);
      y = tsr.test1_0_3(y&~1);
      y = tsr.test1_0_4(y&~1);
      y = tsr.test1_0_5(y&~1);
      y = tsr.test1_0_6(y&~1);
      y = tsr.test1_0_0((y&~1)+1);
      y = tsr.test1_0_1((y&~1)+1);
      y = tsr.test1_0_2((y&~1)+1);
      y = tsr.test1_0_3((y&~1)+1);
      y = tsr.test1_0_4((y&~1)+1);
      y = tsr.test1_0_5((y&~1)+1);
      y = tsr.test1_0_6((y&~1)+1);

      y = tsr.test1_1_0(y&~1);
      y = tsr.test1_1_1(y&~1);
      y = tsr.test1_1_2(y&~1);
      y = tsr.test1_1_3(y&~1);
      y = tsr.test1_1_4(y&~1);
      y = tsr.test1_1_5(y&~1);
      y = tsr.test1_1_6(y&~1);
      y = tsr.test1_1_0((y&~1)+1);
      y = tsr.test1_1_1((y&~1)+1);
      y = tsr.test1_1_2((y&~1)+1);
      y = tsr.test1_1_3((y&~1)+1);
      y = tsr.test1_1_4((y&~1)+1);
      y = tsr.test1_1_5((y&~1)+1);
      y = tsr.test1_1_6((y&~1)+1);

      y = tsr.test1_2_0(y&~1);
      y = tsr.test1_2_1(y&~1);
      y = tsr.test1_2_2(y&~1);
      y = tsr.test1_2_3(y&~1);
      y = tsr.test1_2_4(y&~1);
      y = tsr.test1_2_5(y&~1);
      y = tsr.test1_2_6(y&~1);
      y = tsr.test1_2_0((y&~1)+1);
      y = tsr.test1_2_1((y&~1)+1);
      y = tsr.test1_2_2((y&~1)+1);
      y = tsr.test1_2_3((y&~1)+1);
      y = tsr.test1_2_4((y&~1)+1);
      y = tsr.test1_2_5((y&~1)+1);
      y = tsr.test1_2_6((y&~1)+1);

      y = tsr.test2_0_0(y&~3);
      y = tsr.test2_0_1(y&~3);
      y = tsr.test2_0_2(y&~3);
      y = tsr.test2_0_3(y&~3);
      y = tsr.test2_0_4(y&~3);
      y = tsr.test2_0_5(y&~3);
      y = tsr.test2_0_6(y&~3);
      y = tsr.test2_0_0((y&~3)+3);
      y = tsr.test2_0_1((y&~3)+3);
      y = tsr.test2_0_2((y&~3)+3);
      y = tsr.test2_0_3((y&~3)+3);
      y = tsr.test2_0_4((y&~3)+3);
      y = tsr.test2_0_5((y&~3)+3);
      y = tsr.test2_0_6((y&~3)+3);

      y = tsr.test2_1_0(y&~3);
      y = tsr.test2_1_1(y&~3);
      y = tsr.test2_1_2(y&~3);
      y = tsr.test2_1_3(y&~3);
      y = tsr.test2_1_4(y&~3);
      y = tsr.test2_1_5(y&~3);
      y = tsr.test2_1_6(y&~3);
      y = tsr.test2_1_0((y&~3)+3);
      y = tsr.test2_1_1((y&~3)+3);
      y = tsr.test2_1_2((y&~3)+3);
      y = tsr.test2_1_3((y&~3)+3);
      y = tsr.test2_1_4((y&~3)+3);
      y = tsr.test2_1_5((y&~3)+3);
      y = tsr.test2_1_6((y&~3)+3);

      y = tsr.test2_2_0(y&~3);
      y = tsr.test2_2_1(y&~3);
      y = tsr.test2_2_2(y&~3);
      y = tsr.test2_2_3(y&~3);
      y = tsr.test2_2_4(y&~3);
      y = tsr.test2_2_5(y&~3);
      y = tsr.test2_2_6(y&~3);
      y = tsr.test2_2_0((y&~3)+3);
      y = tsr.test2_2_1((y&~3)+3);
      y = tsr.test2_2_2((y&~3)+3);
      y = tsr.test2_2_3((y&~3)+3);
      y = tsr.test2_2_4((y&~3)+3);
      y = tsr.test2_2_5((y&~3)+3);
      y = tsr.test2_2_6((y&~3)+3);

    }
    for (int i=0; i<10000; i++) {
      y = tsr.test0_0_0(y);
      y = tsr.test0_0_0(y);
      y = tsr.test0_0_1(y);
      y = tsr.test0_0_1(y);
      y = tsr.test0_0_2(y);
      y = tsr.test0_0_2(y);
      y = tsr.test0_0_3(y);
      y = tsr.test0_0_3(y);
      y = tsr.test0_0_4(y);
      y = tsr.test0_0_4(y);
      y = tsr.test0_0_5(y);
      y = tsr.test0_0_5(y);
      y = tsr.test0_0_6(y);
      y = tsr.test0_0_6(y);

      y = tsr.test0_1_3(y);
      y = tsr.test0_1_3(y);
      y = tsr.test0_1_4(y);
      y = tsr.test0_1_4(y);
      y = tsr.test0_1_5(y);
      y = tsr.test0_1_5(y);
      y = tsr.test0_1_6(y);
      y = tsr.test0_1_6(y);

      y = tsr.test1_0_0(y&~1);
      y = tsr.test1_0_1(y&~1);
      y = tsr.test1_0_2(y&~1);
      y = tsr.test1_0_3(y&~1);
      y = tsr.test1_0_4(y&~1);
      y = tsr.test1_0_5(y&~1);
      y = tsr.test1_0_6(y&~1);
      y = tsr.test1_0_0((y&~1)+1);
      y = tsr.test1_0_1((y&~1)+1);
      y = tsr.test1_0_2((y&~1)+1);
      y = tsr.test1_0_3((y&~1)+1);
      y = tsr.test1_0_4((y&~1)+1);
      y = tsr.test1_0_5((y&~1)+1);
      y = tsr.test1_0_6((y&~1)+1);

      y = tsr.test1_1_0(y&~1);
      y = tsr.test1_1_1(y&~1);
      y = tsr.test1_1_2(y&~1);
      y = tsr.test1_1_3(y&~1);
      y = tsr.test1_1_4(y&~1);
      y = tsr.test1_1_5(y&~1);
      y = tsr.test1_1_6(y&~1);
      y = tsr.test1_1_0((y&~1)+1);
      y = tsr.test1_1_1((y&~1)+1);
      y = tsr.test1_1_2((y&~1)+1);
      y = tsr.test1_1_3((y&~1)+1);
      y = tsr.test1_1_4((y&~1)+1);
      y = tsr.test1_1_5((y&~1)+1);
      y = tsr.test1_1_6((y&~1)+1);

      y = tsr.test1_2_0(y&~1);
      y = tsr.test1_2_1(y&~1);
      y = tsr.test1_2_2(y&~1);
      y = tsr.test1_2_3(y&~1);
      y = tsr.test1_2_4(y&~1);
      y = tsr.test1_2_5(y&~1);
      y = tsr.test1_2_6(y&~1);
      y = tsr.test1_2_0((y&~1)+1);
      y = tsr.test1_2_1((y&~1)+1);
      y = tsr.test1_2_2((y&~1)+1);
      y = tsr.test1_2_3((y&~1)+1);
      y = tsr.test1_2_4((y&~1)+1);
      y = tsr.test1_2_5((y&~1)+1);
      y = tsr.test1_2_6((y&~1)+1);

      y = tsr.test2_0_0(y&~3);
      y = tsr.test2_0_1(y&~3);
      y = tsr.test2_0_2(y&~3);
      y = tsr.test2_0_3(y&~3);
      y = tsr.test2_0_4(y&~3);
      y = tsr.test2_0_5(y&~3);
      y = tsr.test2_0_6(y&~3);
      y = tsr.test2_0_0((y&~3)+3);
      y = tsr.test2_0_1((y&~3)+3);
      y = tsr.test2_0_2((y&~3)+3);
      y = tsr.test2_0_3((y&~3)+3);
      y = tsr.test2_0_4((y&~3)+3);
      y = tsr.test2_0_5((y&~3)+3);
      y = tsr.test2_0_6((y&~3)+3);

      y = tsr.test2_1_0(y&~3);
      y = tsr.test2_1_1(y&~3);
      y = tsr.test2_1_2(y&~3);
      y = tsr.test2_1_3(y&~3);
      y = tsr.test2_1_4(y&~3);
      y = tsr.test2_1_5(y&~3);
      y = tsr.test2_1_6(y&~3);
      y = tsr.test2_1_0((y&~3)+3);
      y = tsr.test2_1_1((y&~3)+3);
      y = tsr.test2_1_2((y&~3)+3);
      y = tsr.test2_1_3((y&~3)+3);
      y = tsr.test2_1_4((y&~3)+3);
      y = tsr.test2_1_5((y&~3)+3);
      y = tsr.test2_1_6((y&~3)+3);

      y = tsr.test2_2_0(y&~3);
      y = tsr.test2_2_1(y&~3);
      y = tsr.test2_2_2(y&~3);
      y = tsr.test2_2_3(y&~3);
      y = tsr.test2_2_4(y&~3);
      y = tsr.test2_2_5(y&~3);
      y = tsr.test2_2_6(y&~3);
      y = tsr.test2_2_0((y&~3)+3);
      y = tsr.test2_2_1((y&~3)+3);
      y = tsr.test2_2_2((y&~3)+3);
      y = tsr.test2_2_3((y&~3)+3);
      y = tsr.test2_2_4((y&~3)+3);
      y = tsr.test2_2_5((y&~3)+3);
      y = tsr.test2_2_6((y&~3)+3);

    }
    for (int i=0; i<10000; i++) {
      y = tsr.test0_0_0(y);
      y = tsr.test0_0_0(y);
      y = tsr.test0_0_1(y);
      y = tsr.test0_0_1(y);
      y = tsr.test0_0_2(y);
      y = tsr.test0_0_2(y);
      y = tsr.test0_0_3(y);
      y = tsr.test0_0_3(y);
      y = tsr.test0_0_4(y);
      y = tsr.test0_0_4(y);
      y = tsr.test0_0_5(y);
      y = tsr.test0_0_5(y);
      y = tsr.test0_0_6(y);
      y = tsr.test0_0_6(y);

      y = tsr.test0_1_3(y);
      y = tsr.test0_1_3(y);
      y = tsr.test0_1_4(y);
      y = tsr.test0_1_4(y);
      y = tsr.test0_1_5(y);
      y = tsr.test0_1_5(y);
      y = tsr.test0_1_6(y);
      y = tsr.test0_1_6(y);

      y = tsr.test1_0_0(y&~1);
      y = tsr.test1_0_1(y&~1);
      y = tsr.test1_0_2(y&~1);
      y = tsr.test1_0_3(y&~1);
      y = tsr.test1_0_4(y&~1);
      y = tsr.test1_0_5(y&~1);
      y = tsr.test1_0_6(y&~1);
      y = tsr.test1_0_0((y&~1)+1);
      y = tsr.test1_0_1((y&~1)+1);
      y = tsr.test1_0_2((y&~1)+1);
      y = tsr.test1_0_3((y&~1)+1);
      y = tsr.test1_0_4((y&~1)+1);
      y = tsr.test1_0_5((y&~1)+1);
      y = tsr.test1_0_6((y&~1)+1);

      y = tsr.test1_1_0(y&~1);
      y = tsr.test1_1_1(y&~1);
      y = tsr.test1_1_2(y&~1);
      y = tsr.test1_1_3(y&~1);
      y = tsr.test1_1_4(y&~1);
      y = tsr.test1_1_5(y&~1);
      y = tsr.test1_1_6(y&~1);
      y = tsr.test1_1_0((y&~1)+1);
      y = tsr.test1_1_1((y&~1)+1);
      y = tsr.test1_1_2((y&~1)+1);
      y = tsr.test1_1_3((y&~1)+1);
      y = tsr.test1_1_4((y&~1)+1);
      y = tsr.test1_1_5((y&~1)+1);
      y = tsr.test1_1_6((y&~1)+1);

      y = tsr.test1_2_0(y&~1);
      y = tsr.test1_2_1(y&~1);
      y = tsr.test1_2_2(y&~1);
      y = tsr.test1_2_3(y&~1);
      y = tsr.test1_2_4(y&~1);
      y = tsr.test1_2_5(y&~1);
      y = tsr.test1_2_6(y&~1);
      y = tsr.test1_2_0((y&~1)+1);
      y = tsr.test1_2_1((y&~1)+1);
      y = tsr.test1_2_2((y&~1)+1);
      y = tsr.test1_2_3((y&~1)+1);
      y = tsr.test1_2_4((y&~1)+1);
      y = tsr.test1_2_5((y&~1)+1);
      y = tsr.test1_2_6((y&~1)+1);

      y = tsr.test2_0_0(y&~3);
      y = tsr.test2_0_1(y&~3);
      y = tsr.test2_0_2(y&~3);
      y = tsr.test2_0_3(y&~3);
      y = tsr.test2_0_4(y&~3);
      y = tsr.test2_0_5(y&~3);
      y = tsr.test2_0_6(y&~3);
      y = tsr.test2_0_0((y&~3)+3);
      y = tsr.test2_0_1((y&~3)+3);
      y = tsr.test2_0_2((y&~3)+3);
      y = tsr.test2_0_3((y&~3)+3);
      y = tsr.test2_0_4((y&~3)+3);
      y = tsr.test2_0_5((y&~3)+3);
      y = tsr.test2_0_6((y&~3)+3);

      y = tsr.test2_1_0(y&~3);
      y = tsr.test2_1_1(y&~3);
      y = tsr.test2_1_2(y&~3);
      y = tsr.test2_1_3(y&~3);
      y = tsr.test2_1_4(y&~3);
      y = tsr.test2_1_5(y&~3);
      y = tsr.test2_1_6(y&~3);
      y = tsr.test2_1_0((y&~3)+3);
      y = tsr.test2_1_1((y&~3)+3);
      y = tsr.test2_1_2((y&~3)+3);
      y = tsr.test2_1_3((y&~3)+3);
      y = tsr.test2_1_4((y&~3)+3);
      y = tsr.test2_1_5((y&~3)+3);
      y = tsr.test2_1_6((y&~3)+3);

      y = tsr.test2_2_0(y&~3);
      y = tsr.test2_2_1(y&~3);
      y = tsr.test2_2_2(y&~3);
      y = tsr.test2_2_3(y&~3);
      y = tsr.test2_2_4(y&~3);
      y = tsr.test2_2_5(y&~3);
      y = tsr.test2_2_6(y&~3);
      y = tsr.test2_2_0((y&~3)+3);
      y = tsr.test2_2_1((y&~3)+3);
      y = tsr.test2_2_2((y&~3)+3);
      y = tsr.test2_2_3((y&~3)+3);
      y = tsr.test2_2_4((y&~3)+3);
      y = tsr.test2_2_5((y&~3)+3);
      y = tsr.test2_2_6((y&~3)+3);

    }

    int z = 0;
    y = tsr.test0_0_0(0);
    System.out.println("After 'test0_0_0' y=" + y);
    y = tsr.test0_0_1(0);
    System.out.println("After 'test0_0_1' y=" + y);
    y = tsr.test0_0_2(0);
    System.out.println("After 'test0_0_2' y=" + y);
    y = tsr.test0_0_3(0);
    System.out.println("After 'test0_0_3' y=" + y);
    y = tsr.test0_0_4(0);
    System.out.println("After 'test0_0_4' y=" + y);
    y = tsr.test0_0_5(0);
    System.out.println("After 'test0_0_5' y=" + y);
    y = tsr.test0_0_6(0);
    System.out.println("After 'test0_0_6' y=" + y);
    y = tsr.test0_1_3(0);
    System.out.println("After 'test0_1_3' y=" + y);
    y = tsr.test0_1_4(0);
    System.out.println("After 'test0_1_4' y=" + y);
    y = tsr.test0_1_5(0);
    System.out.println("After 'test0_1_5' y=" + y);
    y = tsr.test0_1_6(0);
    System.out.println("After 'test0_1_6' y=" + y);

    y = tsr.test1_0_0(0);
    System.out.println("After 'test1_0_0' y=" + y);
    y = tsr.test1_0_1(0);
    System.out.println("After 'test1_0_1' y=" + y);
    y = tsr.test1_0_2(0);
    System.out.println("After 'test1_0_2' y=" + y);
    y = tsr.test1_0_3(0);
    System.out.println("After 'test1_0_3' y=" + y);
    y = tsr.test1_0_4(0);
    System.out.println("After 'test1_0_4' y=" + y);
    y = tsr.test1_0_5(0);
    System.out.println("After 'test1_0_5' y=" + y);
    y = tsr.test1_0_6(0);
    System.out.println("After 'test1_0_6' y=" + y);

    y = tsr.test1_1_0(0);
    System.out.println("After 'test1_1_0' y=" + y);
    y = tsr.test1_1_1(0);
    System.out.println("After 'test1_1_1' y=" + y);
    y = tsr.test1_1_2(0);
    System.out.println("After 'test1_1_2' y=" + y);
    y = tsr.test1_1_3(0);
    System.out.println("After 'test1_1_3' y=" + y);
    y = tsr.test1_1_4(0);
    System.out.println("After 'test1_1_4' y=" + y);
    y = tsr.test1_1_5(0);
    System.out.println("After 'test1_1_5' y=" + y);
    y = tsr.test1_1_6(0);
    System.out.println("After 'test1_1_6' y=" + y);

    y = tsr.test1_2_0(0);
    System.out.println("After 'test1_2_0' y=" + y);
    y = tsr.test1_2_1(0);
    System.out.println("After 'test1_2_1' y=" + y);
    y = tsr.test1_2_2(0);
    System.out.println("After 'test1_2_2' y=" + y);
    y = tsr.test1_2_3(0);
    System.out.println("After 'test1_2_3' y=" + y);
    y = tsr.test1_2_4(0);
    System.out.println("After 'test1_2_4' y=" + y);
    y = tsr.test1_2_5(0);
    System.out.println("After 'test1_2_5' y=" + y);
    y = tsr.test1_2_6(0);
    System.out.println("After 'test1_2_6' y=" + y);

    y = tsr.test2_0_0(0);
    System.out.println("After 'test2_0_0' y=" + y);
    y = tsr.test2_0_1(0);
    System.out.println("After 'test2_0_1' y=" + y);
    y = tsr.test2_0_2(0);
    System.out.println("After 'test2_0_2' y=" + y);
    y = tsr.test2_0_3(0);
    System.out.println("After 'test2_0_3' y=" + y);
    y = tsr.test2_0_4(0);
    System.out.println("After 'test2_0_4' y=" + y);
    y = tsr.test2_0_5(0);
    System.out.println("After 'test2_0_5' y=" + y);
    y = tsr.test2_0_6(0);
    System.out.println("After 'test2_0_6' y=" + y);

    y = tsr.test2_1_0(0);
    System.out.println("After 'test2_1_0' y=" + y);
    y = tsr.test2_1_1(0);
    System.out.println("After 'test2_1_1' y=" + y);
    y = tsr.test2_1_2(0);
    System.out.println("After 'test2_1_2' y=" + y);
    y = tsr.test2_1_3(0);
    System.out.println("After 'test2_1_3' y=" + y);
    y = tsr.test2_1_4(0);
    System.out.println("After 'test2_1_4' y=" + y);
    y = tsr.test2_1_5(0);
    System.out.println("After 'test2_1_5' y=" + y);
    y = tsr.test2_1_6(0);
    System.out.println("After 'test2_1_6' y=" + y);

    y = tsr.test2_2_0(0);
    System.out.println("After 'test2_2_0' y=" + y);
    y = tsr.test2_2_1(0);
    System.out.println("After 'test2_2_1' y=" + y);
    y = tsr.test2_2_2(0);
    System.out.println("After 'test2_2_2' y=" + y);
    y = tsr.test2_2_3(0);
    System.out.println("After 'test2_2_3' y=" + y);
    y = tsr.test2_2_4(0);
    System.out.println("After 'test2_2_4' y=" + y);
    y = tsr.test2_2_5(0);
    System.out.println("After 'test2_2_5' y=" + y);
    y = tsr.test2_2_6(0);
    System.out.println("After 'test2_2_6' y=" + y);

  }
}