graal/com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail/HSAILHotSpotBackend.java

Print this page
rev 14070 : Merge with default


  24 
  25 import static com.oracle.graal.api.code.CallingConvention.Type.*;
  26 import static com.oracle.graal.api.code.ValueUtil.*;
  27 
  28 import java.lang.reflect.*;
  29 import java.util.*;
  30 
  31 import com.oracle.graal.api.code.*;
  32 import com.oracle.graal.api.meta.*;
  33 import com.oracle.graal.asm.*;
  34 import com.oracle.graal.asm.hsail.*;
  35 import com.oracle.graal.compiler.gen.*;
  36 import com.oracle.graal.debug.*;
  37 import com.oracle.graal.hotspot.*;
  38 import com.oracle.graal.hotspot.meta.*;
  39 import com.oracle.graal.hsail.*;
  40 import com.oracle.graal.lir.*;
  41 import com.oracle.graal.lir.asm.*;
  42 import com.oracle.graal.lir.hsail.*;
  43 import com.oracle.graal.nodes.*;


  44 
  45 /**
  46  * HSAIL specific backend.
  47  */
  48 public class HSAILHotSpotBackend extends HotSpotBackend {
  49 
  50     private Map<String, String> paramTypeMap = new HashMap<>();
  51     private Buffer codeBuffer;
  52 
  53     public HSAILHotSpotBackend(HotSpotGraalRuntime runtime, HotSpotProviders providers) {
  54         super(runtime, providers);
  55         paramTypeMap.put("HotSpotResolvedPrimitiveType<int>", "s32");
  56         paramTypeMap.put("HotSpotResolvedPrimitiveType<float>", "f32");
  57         paramTypeMap.put("HotSpotResolvedPrimitiveType<double>", "f64");
  58         paramTypeMap.put("HotSpotResolvedPrimitiveType<long>", "s64");
  59     }
  60 
  61     @Override
  62     public boolean shouldAllocateRegisters() {
  63         return true;
  64     }
  65 




  66     @Override
  67     public void completeInitialization() {
  68         final HotSpotProviders providers = getProviders();
  69         HotSpotVMConfig config = getRuntime().getConfig();

  70         final HotSpotLoweringProvider lowerer = (HotSpotLoweringProvider) providers.getLowerer();
  71         lowerer.initialize(providers, config);










  72     }
  73 
  74     /**
  75      * Use the HSAIL register set when the compilation target is HSAIL.
  76      */
  77     @Override
  78     public FrameMap newFrameMap() {
  79         return new HSAILFrameMap(getCodeCache());
  80     }
  81 
  82     @Override
  83     public LIRGenerator newLIRGenerator(StructuredGraph graph, FrameMap frameMap, CallingConvention cc, LIR lir) {
  84         return new HSAILHotSpotLIRGenerator(graph, getProviders(), getRuntime().getConfig(), frameMap, cc, lir);
  85     }
  86 
  87     public String getPartialCodeString() {
  88         if (codeBuffer == null) {
  89             return "";
  90         }
  91         byte[] data = codeBuffer.copyData(0, codeBuffer.position());




  24 
  25 import static com.oracle.graal.api.code.CallingConvention.Type.*;
  26 import static com.oracle.graal.api.code.ValueUtil.*;
  27 
  28 import java.lang.reflect.*;
  29 import java.util.*;
  30 
  31 import com.oracle.graal.api.code.*;
  32 import com.oracle.graal.api.meta.*;
  33 import com.oracle.graal.asm.*;
  34 import com.oracle.graal.asm.hsail.*;
  35 import com.oracle.graal.compiler.gen.*;
  36 import com.oracle.graal.debug.*;
  37 import com.oracle.graal.hotspot.*;
  38 import com.oracle.graal.hotspot.meta.*;
  39 import com.oracle.graal.hsail.*;
  40 import com.oracle.graal.lir.*;
  41 import com.oracle.graal.lir.asm.*;
  42 import com.oracle.graal.lir.hsail.*;
  43 import com.oracle.graal.nodes.*;
  44 import com.oracle.graal.nodes.spi.Replacements;
  45 import com.oracle.graal.replacements.hsail.*;
  46 
  47 /**
  48  * HSAIL specific backend.
  49  */
  50 public class HSAILHotSpotBackend extends HotSpotBackend {
  51 
  52     private Map<String, String> paramTypeMap = new HashMap<>();
  53     private Buffer codeBuffer;
  54 
  55     public HSAILHotSpotBackend(HotSpotGraalRuntime runtime, HotSpotProviders providers) {
  56         super(runtime, providers);
  57         paramTypeMap.put("HotSpotResolvedPrimitiveType<int>", "s32");
  58         paramTypeMap.put("HotSpotResolvedPrimitiveType<float>", "f32");
  59         paramTypeMap.put("HotSpotResolvedPrimitiveType<double>", "f64");
  60         paramTypeMap.put("HotSpotResolvedPrimitiveType<long>", "s64");
  61     }
  62 
  63     @Override
  64     public boolean shouldAllocateRegisters() {
  65         return true;
  66     }
  67 
  68     /**
  69      * Completes the initialization of the HSAIL backend. This includes initializing the providers
  70      * and registering any method substitutions specified by the HSAIL backend.
  71      */
  72     @Override
  73     public void completeInitialization() {
  74         final HotSpotProviders providers = getProviders();
  75         HotSpotVMConfig config = getRuntime().getConfig();
  76         // Initialize the lowering provider.
  77         final HotSpotLoweringProvider lowerer = (HotSpotLoweringProvider) providers.getLowerer();
  78         lowerer.initialize(providers, config);
  79         // Register the replacements used by the HSAIL backend.
  80         Replacements replacements = providers.getReplacements();
  81         try {
  82             // Register the substitutions for java.lang.Math routines.
  83             // replacements.registerSubstitutions(Class.forName("com.oracle.graal.replacements.hsail.HSAILMathSubstitutions"));
  84             replacements.registerSubstitutions(HSAILMathSubstitutions.class);
  85 
  86         } catch (Exception e) {
  87             e.printStackTrace();
  88         }
  89     }
  90 
  91     /**
  92      * Use the HSAIL register set when the compilation target is HSAIL.
  93      */
  94     @Override
  95     public FrameMap newFrameMap() {
  96         return new HSAILFrameMap(getCodeCache());
  97     }
  98 
  99     @Override
 100     public LIRGenerator newLIRGenerator(StructuredGraph graph, FrameMap frameMap, CallingConvention cc, LIR lir) {
 101         return new HSAILHotSpotLIRGenerator(graph, getProviders(), getRuntime().getConfig(), frameMap, cc, lir);
 102     }
 103 
 104     public String getPartialCodeString() {
 105         if (codeBuffer == null) {
 106             return "";
 107         }
 108         byte[] data = codeBuffer.copyData(0, codeBuffer.position());