--- /dev/null 2013-04-05 13:29:42.000000000 -0400 +++ new/graal/com.oracle.graal.compiler.ptx.test/src/com/oracle/graal/compiler/ptx/test/ControlTest.java 2013-04-05 13:29:42.000000000 -0400 @@ -0,0 +1,115 @@ +/* + * Copyright (c) 2011, 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. + */ +package com.oracle.graal.compiler.ptx.test; + +import org.junit.Test; + +import java.lang.reflect.Method; + +public class ControlTest extends PTXCompilerBase { + + @Test + public void testControl() { + compile("testFor2I"); + compile("testWhile2I"); + // compile("testSwitch1I"); + // compile("testIfThen1Z"); + compile("testStatic"); + // compile("testSync"); + // compile("testSyncObject"); + } + + public static int testFor2I(int a, int b) { + int indexed = 0; + for (int i = a; i < b; i++) { + indexed++; + } + return indexed; + } + + public static int testWhile2I(int a, int b) { + int indexed = 0; + while (a < b) { + indexed++; + } + return indexed; + } + + /* + * NYI - PTXLIRGenerator.emitSequentialSwitch + * + * public static int testSwitch1I(int a) { + * switch (a) { + * case 1: + * return 2; + * case 2: + * return 3; + * default: + * return 4; + * } + * } + */ + + /* + * NYI - PTXControlFlow + * + * public static int testIfThen1Z(boolean a) { + * if (a) { + * return 2; + * } else { + * return 3; + * } + * } + */ + + @SuppressWarnings("unused") + private static Object foo = null; + + public static boolean testStatic(Object o) { + foo = o; + return true; + } + + /* + * Throws ClassCastException - PTXLIRGenerator not HotSpotLIRGenerator as there + * is no com.oracle.graal.hotspot.ptx yet. + * + * public static synchronized void testSync() { + * } + * + * public static void testSyncObject(Object o) { + * synchronized (o) { + * } + * } + */ + + public static void main(String[] args) { + ControlTest test = new ControlTest(); + for (Method m : ControlTest.class.getMethods()) { + String name = m.getName(); + if (m.getAnnotation(Test.class) == null && name.startsWith("test")) { + System.out.println(name + ": \n" + new String(test.compile(name).getTargetCode())); + } + } + } +}