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()));
}
}
}
}