changeset 7906:0c7615691812

Disallow directly storing constants in PTX.
author Roland Schatz <roland.schatz@oracle.com>
date Thu, 28 Feb 2013 14:15:24 +0100
parents 38a597987357
children ea1c2bed2bfa
files graal/com.oracle.graal.compiler.ptx/src/com/oracle/graal/compiler/ptx/PTXLIRGenerator.java graal/com.oracle.graal.lir.ptx/src/com/oracle/graal/lir/ptx/PTXMove.java
diffstat 2 files changed, 25 insertions(+), 44 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.compiler.ptx/src/com/oracle/graal/compiler/ptx/PTXLIRGenerator.java	Thu Feb 28 14:15:24 2013 +0100
+++ b/graal/com.oracle.graal.compiler.ptx/src/com/oracle/graal/compiler/ptx/PTXLIRGenerator.java	Thu Feb 28 14:15:24 2013 +0100
@@ -156,7 +156,7 @@
     @Override
     public void emitStore(Kind kind, Value base, int displacement, Value index, int scale, Value inputVal, boolean canTrap) {
         PTXAddress storeAddress = prepareAddress(kind, base, displacement, index, scale);
-        Value input = load(inputVal);
+        Variable input = load(inputVal);
         append(new StoreOp(storeAddress, input, canTrap ? state() : null));
     }
 
--- a/graal/com.oracle.graal.lir.ptx/src/com/oracle/graal/lir/ptx/PTXMove.java	Thu Feb 28 14:15:24 2013 +0100
+++ b/graal/com.oracle.graal.lir.ptx/src/com/oracle/graal/lir/ptx/PTXMove.java	Thu Feb 28 14:15:24 2013 +0100
@@ -132,14 +132,25 @@
 
         @Override
         public void emitCode(TargetMethodAssembler tasm, PTXAssembler masm) {
-            load(tasm, masm, result, address, state);
+            Register a = asRegister(address.getBase());
+            long immOff = address.getDisplacement();
+            switch (address.getKind()) {
+                case Int:
+                    masm.ld_global_s32(asRegister(result), a, immOff);
+                    break;
+                case Object:
+                    masm.ld_global_u32(asRegister(result), a, immOff);
+                    break;
+                default:
+                    throw GraalInternalError.shouldNotReachHere();
+            }
         }
     }
 
     public static class StoreOp extends PTXLIRInstruction {
 
         @Use({ADDR}) protected PTXAddress address;
-        @Use({REG, CONST}) protected Value input;
+        @Use({REG}) protected Value input;
         @State protected LIRFrameState state;
 
         public StoreOp(PTXAddress address, Value input, LIRFrameState state) {
@@ -150,7 +161,17 @@
 
         @Override
         public void emitCode(TargetMethodAssembler tasm, PTXAssembler masm) {
-            store(tasm, masm, address, input, state);
+            Register a = asRegister(address.getBase());
+            long immOff = address.getDisplacement();
+
+            assert isRegister(input);
+            switch (address.getKind()) {
+                case Int:
+                    masm.st_global_s32(a, immOff, asRegister(input));
+                    break;
+                default:
+                    throw GraalInternalError.shouldNotReachHere();
+            }
         }
     }
 
@@ -255,46 +276,6 @@
     }
 
     @SuppressWarnings("unused")
-    public static void load(TargetMethodAssembler tasm, PTXAssembler masm, Value result, PTXAddress loadAddr, LIRFrameState info) {
-        Register a = asRegister(loadAddr.getBase());
-        long immOff = loadAddr.getDisplacement();
-        switch (loadAddr.getKind()) {
-            case Int:
-                masm.ld_global_s32(asRegister(result), a, immOff);
-                break;
-            case Object:
-                masm.ld_global_u32(asRegister(result), a, immOff);
-                break;
-            default:
-                throw GraalInternalError.shouldNotReachHere();
-        }
-    }
-
-    @SuppressWarnings("unused")
-    public static void store(TargetMethodAssembler tasm, PTXAssembler masm, PTXAddress storeAddr, Value input, LIRFrameState info) {
-        Register a = asRegister(storeAddr.getBase());
-        long immOff = storeAddr.getDisplacement();
-        if (isRegister(input)) {
-            switch (storeAddr.getKind()) {
-                case Int:
-                    masm.st_global_s32(a, immOff, asRegister(input));
-                    break;
-                default:
-                    throw GraalInternalError.shouldNotReachHere();
-            }
-        } else if (isConstant(input)) {
-            Constant c = (Constant) input;
-            switch (storeAddr.getKind()) {
-                default:
-                    throw GraalInternalError.shouldNotReachHere();
-            }
-
-        } else {
-            throw GraalInternalError.shouldNotReachHere();
-        }
-    }
-
-    @SuppressWarnings("unused")
     protected static void compareAndSwap(TargetMethodAssembler tasm, PTXAssembler masm, Value result, PTXAddress address, Value cmpValue, Value newValue) {
         throw new InternalError("NYI");
     }