graal/com.oracle.graal.compiler.ptx.test/src/com/oracle/graal/compiler/ptx/test/BasicPTXTest.java

Print this page
rev 8592 : Graal PTX enhancements

*** 20,96 **** * or visit www.oracle.com if you need additional information or have any * questions. */ package com.oracle.graal.compiler.ptx.test; ! import org.junit.*; - import com.oracle.graal.api.code.*; - import com.oracle.graal.api.meta.*; - import com.oracle.graal.api.runtime.*; - import com.oracle.graal.compiler.*; - import com.oracle.graal.compiler.ptx.*; - import com.oracle.graal.compiler.test.*; - import com.oracle.graal.debug.*; - import com.oracle.graal.java.*; - import com.oracle.graal.nodes.*; - import com.oracle.graal.nodes.type.*; - import com.oracle.graal.phases.*; - import com.oracle.graal.phases.PhasePlan.*; - import com.oracle.graal.ptx.*; /** * Test class for small Java methods compiled to PTX kernels. */ ! public class BasicPTXTest extends GraalCompilerTest { @Test public void testAdd() { ! test("testAddSnippet"); } public static int testAddSnippet(int a) { return a + 1; } @Test public void testArray() { ! test("testArraySnippet"); } public static int testArraySnippet(int[] array) { return array[0]; } ! private CompilationResult test(String snippet) { ! StructuredGraph graph = parse(snippet); ! Debug.dump(graph, "Graph"); ! TargetDescription target = new TargetDescription(new PTX(), true, 1, 0, true); ! PTXBackend ptxBackend = new PTXBackend(Graal.getRequiredCapability(CodeCacheProvider.class), target); ! PhasePlan phasePlan = new PhasePlan(); ! GraphBuilderPhase graphBuilderPhase = new GraphBuilderPhase(runtime, GraphBuilderConfiguration.getDefault(), OptimisticOptimizations.NONE); ! phasePlan.addPhase(PhasePosition.AFTER_PARSING, graphBuilderPhase); ! phasePlan.addPhase(PhasePosition.AFTER_PARSING, new PTXPhase()); ! new PTXPhase().apply(graph); ! CompilationResult result = GraalCompiler.compileMethod(runtime, ptxBackend, target, graph.method(), graph, null, phasePlan, OptimisticOptimizations.NONE, new SpeculationLog()); ! return result; ! } ! ! private static class PTXPhase extends Phase { ! ! @Override ! protected void run(StructuredGraph graph) { ! for (LocalNode local : graph.getNodes(LocalNode.class)) { ! if (local.kind() == Kind.Object) { ! local.setStamp(StampFactory.declaredNonNull(local.objectStamp().type())); ! } } } - - } - - public static void main(String[] args) { - BasicPTXTest basicPTXTest = new BasicPTXTest(); - System.out.println("testAddSnippet: \n" + new String(basicPTXTest.test("testAddSnippet").getTargetCode())); - System.out.println("testArraySnippet: \n" + new String(basicPTXTest.test("testArraySnippet").getTargetCode())); } } --- 20,62 ---- * or visit www.oracle.com if you need additional information or have any * questions. */ package com.oracle.graal.compiler.ptx.test; ! import java.lang.reflect.Method; ! ! import org.junit.Test; /** * Test class for small Java methods compiled to PTX kernels. */ ! public class BasicPTXTest extends PTXCompilerBase { @Test public void testAdd() { ! compile("testAddSnippet"); } public static int testAddSnippet(int a) { return a + 1; } @Test public void testArray() { ! compile("testArraySnippet"); } public static int testArraySnippet(int[] array) { return array[0]; } ! public static void main(String[] args) { ! BasicPTXTest test = new BasicPTXTest(); ! for (Method m : BasicPTXTest.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())); } } } }