disabling arithmetic nodes with memory operands

Venkatachalam, Vasanth Vasanth.Venkatachalam at amd.com
Wed May 29 13:06:01 PDT 2013


For an arithmetic test case involving doubles, Graal is generating a node for a double addition where one of the arguments is a stack slot.

Unlike x86, HSAIL doesn't support passing a stack slot or memory address as one of the arguments to an addition.
The HSAIL backend I've developed would have to load the value from the stack into a register first and do a register to register addition. Since this hasn't been implemented I get the exception below:

com.oracle.graal.graph.GraalInternalError: java.lang.ClassCastException: com.oracle.graal.api.code.StackSlot cannot be cast to com.oracle.graal.api.code.RegisterValue
       at lir instruction: xmm2|d = DADD (x: stack:240|d, ~y: stack:248|d)
       at com.oracle.graal.lir.LIR.emitOp(LIR.java:172)
       at com.oracle.graal.lir.LIR.emitBlock(LIR.java:161)
       at com.oracle.graal.lir.LIR.emitCode(LIR.java:147)
at com.oracle.graal.lir.hsail.HSAILArithmetic.emit(HSAILArithmetic.java:322)
at com.oracle.graal.lir.hsail.HSAILArithmetic$Op2Stack.emitCode(HSAILArithmetic.java:75)
       at com.oracle.graal.lir.hsail.HSAILLIRInstruction.emitCode(HSAILLIRInstruction.java:36)

Is there a switch that can be used to tell Graal not to generates nodes like the above, since we don't support them yet?


More information about the graal-dev mailing list