changeset 22825:c7753ef3467e

Update to latest jvmci version
author Stefan Anzinger <stefan.anzinger@oracle.com>
date Thu, 15 Oct 2015 11:58:34 +0200
parents 7efb735091c5
children b3fdc3758e07
files graal/com.oracle.graal.asm.sparc/src/com/oracle/graal/asm/sparc/SPARCAssembler.java graal/com.oracle.graal.asm.sparc/src/com/oracle/graal/asm/sparc/SPARCMacroAssembler.java graal/com.oracle.graal.compiler.sparc/src/com/oracle/graal/compiler/sparc/SPARCArithmeticLIRGenerator.java graal/com.oracle.graal.compiler.sparc/src/com/oracle/graal/compiler/sparc/SPARCLIRGenerator.java graal/com.oracle.graal.compiler.sparc/src/com/oracle/graal/compiler/sparc/SPARCLIRKindTool.java graal/com.oracle.graal.compiler.sparc/src/com/oracle/graal/compiler/sparc/SPARCNodeMatchRules.java graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotBackend.java graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotBackendFactory.java graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotCRuntimeCallEpilogueOp.java graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotCRuntimeCallPrologueOp.java graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotJumpToExceptionHandlerOp.java graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotLIRGenerator.java graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotNodeLIRBuilder.java graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotPatchReturnAddressOp.java graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotStrategySwitchOp.java graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCArithmetic.java graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCBitManipulationOp.java graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCByteSwapOp.java graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCControlFlow.java graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCFrameMap.java graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCMove.java mx.graal/suite.py
diffstat 22 files changed, 171 insertions(+), 134 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.asm.sparc/src/com/oracle/graal/asm/sparc/SPARCAssembler.java	Wed Oct 14 15:18:44 2015 -0700
+++ b/graal/com.oracle.graal.asm.sparc/src/com/oracle/graal/asm/sparc/SPARCAssembler.java	Thu Oct 15 11:58:34 2015 +0200
@@ -119,14 +119,14 @@
 import static com.oracle.graal.asm.sparc.SPARCAssembler.Ops.ArithOp;
 import static com.oracle.graal.asm.sparc.SPARCAssembler.Ops.LdstOp;
 import static java.lang.String.format;
-import static jdk.vm.ci.sparc.SPARC.INSTRUCTION_SIZE;
+import static jdk.vm.ci.sparc.SPARC.CPU;
+import static jdk.vm.ci.sparc.SPARC.FPUd;
+import static jdk.vm.ci.sparc.SPARC.FPUs;
 import static jdk.vm.ci.sparc.SPARC.g0;
-import static jdk.vm.ci.sparc.SPARC.isCPURegister;
-import static jdk.vm.ci.sparc.SPARC.isDoubleFloatRegister;
-import static jdk.vm.ci.sparc.SPARC.isSingleFloatRegister;
-import static jdk.vm.ci.sparc.SPARC.r15;
-import static jdk.vm.ci.sparc.SPARC.r2;
-import static jdk.vm.ci.sparc.SPARC.r5;
+import static jdk.vm.ci.sparc.SPARC.g2;
+import static jdk.vm.ci.sparc.SPARC.g5;
+import static jdk.vm.ci.sparc.SPARC.g7;
+import static jdk.vm.ci.sparc.SPARC.o7;
 
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -163,6 +163,16 @@
         super(target);
     }
 
+    /**
+     * Size of an SPARC assembler instruction in Bytes.
+     */
+    public static final int INSTRUCTION_SIZE = 4;
+
+    /**
+     * Size in bytes which are cleared by stxa %g0, [%rd] ASI_ST_BLKINIT_PRIMARY.
+     */
+    public static final int BLOCK_ZERO_LENGTH = 64;
+
     public static final int CCR_ICC_SHIFT = 0;
     public static final int CCR_XCC_SHIFT = 4;
     public static final int CCR_V_SHIFT = 1;
@@ -621,7 +631,7 @@
         }
 
         public static CC forKind(PlatformKind kind) {
-            if (kind.equals(SPARCKind.DWORD)) {
+            if (kind.equals(SPARCKind.XWORD)) {
                 return Xcc;
             } else if (kind.equals(SPARCKind.WORD)) {
                 return Icc;
@@ -1630,6 +1640,31 @@
         }
     }
 
+    public static boolean isCPURegister(Register... regs) {
+        for (Register reg : regs) {
+            if (!isCPURegister(reg)) {
+                return false;
+            }
+        }
+        return true;
+    }
+
+    public static boolean isCPURegister(Register r) {
+        return r.getRegisterCategory().equals(CPU);
+    }
+
+    public static boolean isGlobalRegister(Register r) {
+        return isCPURegister(r) && g0.number <= r.number && r.number <= g7.number;
+    }
+
+    public static boolean isSingleFloatRegister(Register r) {
+        return r.getRegisterCategory().equals(FPUs);
+    }
+
+    public static boolean isDoubleFloatRegister(Register r) {
+        return r.getRegisterCategory().equals(FPUd);
+    }
+
     public boolean hasFeature(CPUFeature feature) {
         return ((SPARC) this.target.arch).features.contains(feature);
     }
@@ -2309,7 +2344,7 @@
     // A.44 Read State Register
 
     public void rdpc(Register rd) {
-        op3(Rd, r5, g0, rd);
+        op3(Rd, g5, g0, rd);
     }
 
     public void restore(Register rs1, Register rs2, Register rd) {
@@ -2423,11 +2458,11 @@
     }
 
     public void wrccr(Register rs1, Register rs2) {
-        op3(Wr, rs1, rs2, r2);
+        op3(Wr, rs1, rs2, g2);
     }
 
     public void wrccr(Register rs1, int simm13) {
-        op3(Wr, rs1, simm13, r2);
+        op3(Wr, rs1, simm13, g2);
     }
 
     public void xor(Register rs1, Register rs2, Register rd) {
@@ -2499,7 +2534,7 @@
     }
 
     public void ld(SPARCAddress src, Register dst, int bytes, boolean signExtend) {
-        if (SPARC.isCPURegister(dst)) {
+        if (isCPURegister(dst)) {
             if (signExtend) {
                 switch (bytes) {
                     case 1:
@@ -2535,10 +2570,10 @@
                         throw new InternalError();
                 }
             }
-        } else if (SPARC.isDoubleFloatRegister(dst) && bytes == 8) {
+        } else if (isDoubleFloatRegister(dst) && bytes == 8) {
             assert !signExtend;
             ld(Lddf, src, dst);
-        } else if (SPARC.isSingleFloatRegister(dst) && bytes == 4) {
+        } else if (isSingleFloatRegister(dst) && bytes == 4) {
             assert !signExtend;
             ld(Ldf, src, dst);
         } else {
@@ -2547,7 +2582,7 @@
     }
 
     public void st(Register src, SPARCAddress dst, int bytes) {
-        if (SPARC.isCPURegister(src)) {
+        if (isCPURegister(src)) {
             switch (bytes) {
                 case 1:
                     st(Stb, src, dst);
@@ -2564,9 +2599,9 @@
                 default:
                     throw new InternalError(Integer.toString(bytes));
             }
-        } else if (SPARC.isDoubleFloatRegister(src) && bytes == 8) {
+        } else if (isDoubleFloatRegister(src) && bytes == 8) {
             st(Stdf, src, dst);
-        } else if (SPARC.isSingleFloatRegister(src) && bytes == 4) {
+        } else if (isSingleFloatRegister(src) && bytes == 4) {
             st(Stf, src, dst);
         } else {
             throw new InternalError(String.format("src: %s dst: %s bytes: %d", src, dst, bytes));
@@ -2599,17 +2634,17 @@
     }
 
     public void ldxa(Register rs1, Register rs2, Register rd, Asi asi) {
-        assert SPARC.isCPURegister(rs1, rs2, rd) : format("%s %s %s", rs1, rs2, rd);
+        assert isCPURegister(rs1, rs2, rd) : format("%s %s %s", rs1, rs2, rd);
         ld(Ldxa, new SPARCAddress(rs1, rs2), rd, asi);
     }
 
     public void lduwa(Register rs1, Register rs2, Register rd, Asi asi) {
-        assert SPARC.isCPURegister(rs1, rs2, rd) : format("%s %s %s", rs1, rs2, rd);
+        assert isCPURegister(rs1, rs2, rd) : format("%s %s %s", rs1, rs2, rd);
         ld(Lduwa, new SPARCAddress(rs1, rs2), rd, asi);
     }
 
     public void stxa(Register rd, Register rs1, Register rs2, Asi asi) {
-        assert SPARC.isCPURegister(rs1, rs2, rd) : format("%s %s %s", rs1, rs2, rd);
+        assert isCPURegister(rs1, rs2, rd) : format("%s %s %s", rs1, rs2, rd);
         ld(Stxa, new SPARCAddress(rs1, rs2), rd, asi);
     }
 
@@ -2648,7 +2683,7 @@
     }
 
     public void membar(int barriers) {
-        op3(Membar, r15, barriers, g0);
+        op3(Membar, o7, barriers, g0);
     }
 
     public void casa(Register rs1, Register rs2, Register rd, Asi asi) {
--- a/graal/com.oracle.graal.asm.sparc/src/com/oracle/graal/asm/sparc/SPARCMacroAssembler.java	Wed Oct 14 15:18:44 2015 -0700
+++ b/graal/com.oracle.graal.asm.sparc/src/com/oracle/graal/asm/sparc/SPARCMacroAssembler.java	Thu Oct 15 11:58:34 2015 +0200
@@ -32,7 +32,6 @@
 import static jdk.vm.ci.sparc.SPARC.g0;
 import static jdk.vm.ci.sparc.SPARC.g3;
 import static jdk.vm.ci.sparc.SPARC.i7;
-import static jdk.vm.ci.sparc.SPARC.isCPURegister;
 import static jdk.vm.ci.sparc.SPARC.o7;
 
 import java.util.function.Consumer;
@@ -40,7 +39,6 @@
 import jdk.vm.ci.code.Register;
 import jdk.vm.ci.code.RegisterConfig;
 import jdk.vm.ci.code.TargetDescription;
-import jdk.vm.ci.sparc.SPARC;
 import jdk.vm.ci.sparc.SPARC.CPUFeature;
 
 import com.oracle.graal.asm.AbstractAddress;
@@ -423,7 +421,7 @@
                 int positionBefore = position();
                 delaySlotInstruction.run();
                 int positionAfter = position();
-                assert positionBefore - positionAfter > SPARC.INSTRUCTION_SIZE : "Emitted more than one instruction into delay slot";
+                assert positionBefore - positionAfter > INSTRUCTION_SIZE : "Emitted more than one instruction into delay slot";
             } else {
                 nop();
             }
@@ -449,7 +447,7 @@
                 int positionBefore = position();
                 delaySlotInstruction.run();
                 int positionAfter = position();
-                assert positionBefore - positionAfter > SPARC.INSTRUCTION_SIZE : "Emitted more than one instruction into delay slot";
+                assert positionBefore - positionAfter > INSTRUCTION_SIZE : "Emitted more than one instruction into delay slot";
             } else {
                 nop();
             }
--- a/graal/com.oracle.graal.compiler.sparc/src/com/oracle/graal/compiler/sparc/SPARCArithmeticLIRGenerator.java	Wed Oct 14 15:18:44 2015 -0700
+++ b/graal/com.oracle.graal.compiler.sparc/src/com/oracle/graal/compiler/sparc/SPARCArithmeticLIRGenerator.java	Thu Oct 15 11:58:34 2015 +0200
@@ -59,7 +59,7 @@
 import static jdk.vm.ci.meta.JavaConstant.forLong;
 import static jdk.vm.ci.sparc.SPARC.g0;
 import static jdk.vm.ci.sparc.SPARCKind.DOUBLE;
-import static jdk.vm.ci.sparc.SPARCKind.DWORD;
+import static jdk.vm.ci.sparc.SPARCKind.XWORD;
 import static jdk.vm.ci.sparc.SPARCKind.SINGLE;
 import static jdk.vm.ci.sparc.SPARCKind.WORD;
 import jdk.vm.ci.common.JVMCIError;
@@ -124,7 +124,7 @@
     @Override
     public Variable emitBitScanReverse(Value operand) {
         Variable result = getLIRGen().newVariable(LIRKind.combine(operand).changeType(SPARCKind.WORD));
-        if (operand.getPlatformKind() == SPARCKind.DWORD) {
+        if (operand.getPlatformKind() == SPARCKind.XWORD) {
             getLIRGen().append(new SPARCBitManipulationOp(LBSR, result, getLIRGen().asAllocatable(operand), getLIRGen()));
         } else {
             getLIRGen().append(new SPARCBitManipulationOp(IBSR, result, getLIRGen().asAllocatable(operand), getLIRGen()));
@@ -261,7 +261,7 @@
         if (isNumericInteger(aKind)) {
             if (setFlags) {
                 Variable result = getLIRGen().newVariable(LIRKind.combine(a, b));
-                if (aKind == DWORD) {
+                if (aKind == XWORD) {
                     getLIRGen().append(new SPARCLMulccOp(result, getLIRGen().load(a), getLIRGen().load(b), getLIRGen()));
                 } else if (aKind == WORD) {
                     getLIRGen().append(new SPARCIMulccOp(result, getLIRGen().load(a), getLIRGen().load(b)));
@@ -285,7 +285,7 @@
             case WORD:
                 opcode = MulHigh.IMUL;
                 break;
-            case DWORD:
+            case XWORD:
                 opcode = MulHigh.LMUL;
                 break;
             default:
@@ -302,7 +302,7 @@
                 Value bExtended = emitBinary(LIRKind.combine(b), Srl, b, 0);
                 Value result = emitBinary(LIRKind.combine(a, b), Mulx, aExtended, bExtended);
                 return emitBinary(LIRKind.combine(a, b), Srax, result, WORD.getSizeInBits());
-            case DWORD:
+            case XWORD:
                 return emitBinary(LIRKind.combine(a, b), UMulxhi, a, b);
             default:
                 throw JVMCIError.shouldNotReachHere();
@@ -351,7 +351,7 @@
                 q3 = emitBinary(q2.getLIRKind(), Op3s.Mulx, q2, b);
                 result = emitSub(q1, q3, false);
                 break;
-            case DWORD:
+            case XWORD:
                 aLoaded = getLIRGen().load(a); // Reuse the loaded value
                 q1 = emitBinary(result.getLIRKind(), Sdivx, aLoaded, b, state);
                 q2 = emitBinary(result.getLIRKind(), Mulx, q1, b);
@@ -393,7 +393,7 @@
             case WORD:
                 opcode = Rem.IUREM;
                 break;
-            case DWORD:
+            case XWORD:
                 opcode = Rem.LUREM;
                 break;
             default:
@@ -413,7 +413,7 @@
                 actualA = emitZeroExtend(actualA, 32, 64);
                 actualB = emitZeroExtend(actualB, 32, 64);
                 break;
-            case DWORD:
+            case XWORD:
                 break;
             default:
                 throw JVMCIError.shouldNotReachHere();
@@ -448,7 +448,7 @@
             case WORD:
                 op = Op3s.Sll;
                 break;
-            case DWORD:
+            case XWORD:
                 op = Op3s.Sllx;
                 break;
             default:
@@ -466,7 +466,7 @@
             case WORD:
                 op = Op3s.Sra;
                 break;
-            case DWORD:
+            case XWORD:
                 op = Op3s.Srax;
                 break;
             default:
@@ -484,7 +484,7 @@
             case WORD:
                 op = Op3s.Srl;
                 break;
-            case DWORD:
+            case XWORD:
                 op = Op3s.Srlx;
                 break;
             default:
@@ -547,7 +547,7 @@
             case F2L: {
                 AllocatableValue convertedDoubleReg = getLIRGen().newVariable(LIRKind.combine(input).changeType(DOUBLE));
                 getLIRGen().append(new SPARCArithmetic.FloatConvertOp(FloatConvertOp.FloatConvert.F2L, input, convertedDoubleReg));
-                AllocatableValue convertedLongReg = getLIRGen().newVariable(LIRKind.combine(convertedDoubleReg).changeType(DWORD));
+                AllocatableValue convertedLongReg = getLIRGen().newVariable(LIRKind.combine(convertedDoubleReg).changeType(XWORD));
                 moveBetweenFpGp(convertedLongReg, convertedDoubleReg);
                 result = convertedLongReg;
                 break;
@@ -563,7 +563,7 @@
             case D2L: {
                 AllocatableValue convertedDoubleReg = getLIRGen().newVariable(LIRKind.combine(input).changeType(DOUBLE));
                 getLIRGen().append(new SPARCArithmetic.FloatConvertOp(FloatConvertOp.FloatConvert.D2L, input, convertedDoubleReg));
-                AllocatableValue convertedLongReg = getLIRGen().newVariable(LIRKind.combine(convertedDoubleReg).changeType(DWORD));
+                AllocatableValue convertedLongReg = getLIRGen().newVariable(LIRKind.combine(convertedDoubleReg).changeType(XWORD));
                 moveBetweenFpGp(convertedLongReg, convertedDoubleReg);
                 result = convertedLongReg;
                 break;
@@ -586,14 +586,14 @@
         if (getLIRGen().getArchitecture().getFeatures().contains(CPUFeature.VIS3)) {
             tempSlot = AllocatableValue.ILLEGAL;
         } else {
-            tempSlot = getLIRGen().getTempSlot(LIRKind.value(DWORD));
+            tempSlot = getLIRGen().getTempSlot(LIRKind.value(XWORD));
         }
         getLIRGen().append(new MoveFpGp(dst, src, tempSlot));
     }
 
     @Override
     public Value emitNarrow(Value inputVal, int bits) {
-        if (inputVal.getPlatformKind() == DWORD && bits <= 32) {
+        if (inputVal.getPlatformKind() == XWORD && bits <= 32) {
             LIRKind resultKind = LIRKind.combine(inputVal).changeType(WORD);
             Variable result = getLIRGen().newVariable(resultKind);
             getLIRGen().emitMove(result, inputVal);
@@ -605,11 +605,11 @@
 
     @Override
     public Value emitSignExtend(Value inputVal, int fromBits, int toBits) {
-        assert fromBits <= toBits && toBits <= DWORD.getSizeInBits();
+        assert fromBits <= toBits && toBits <= XWORD.getSizeInBits();
         LIRKind shiftKind = LIRKind.value(WORD);
-        LIRKind resultKind = LIRKind.combine(inputVal).changeType(toBits > 32 ? DWORD : WORD);
+        LIRKind resultKind = LIRKind.combine(inputVal).changeType(toBits > 32 ? XWORD : WORD);
         Value result;
-        int shiftCount = DWORD.getSizeInBits() - fromBits;
+        int shiftCount = XWORD.getSizeInBits() - fromBits;
         if (fromBits == toBits) {
             result = inputVal;
         } else if (isJavaConstant(inputVal)) {
@@ -621,11 +621,11 @@
                 constant = javaConstant.asLong();
             }
             return new ConstantValue(resultKind, JavaConstant.forLong((constant << shiftCount) >> shiftCount));
-        } else if (fromBits == WORD.getSizeInBits() && toBits == DWORD.getSizeInBits()) {
+        } else if (fromBits == WORD.getSizeInBits() && toBits == XWORD.getSizeInBits()) {
             result = getLIRGen().newVariable(resultKind);
             getLIRGen().append(new SPARCOP3Op(Sra, inputVal, SPARC.g0.asValue(LIRKind.value(WORD)), result));
         } else {
-            Variable tmp = getLIRGen().newVariable(resultKind.changeType(DWORD));
+            Variable tmp = getLIRGen().newVariable(resultKind.changeType(XWORD));
             result = getLIRGen().newVariable(resultKind);
             getLIRGen().append(new SPARCOP3Op(Sllx, inputVal, new ConstantValue(shiftKind, JavaConstant.forInt(shiftCount)), tmp));
             getLIRGen().append(new SPARCOP3Op(Srax, tmp, new ConstantValue(shiftKind, JavaConstant.forInt(shiftCount)), result));
@@ -639,11 +639,11 @@
         if (fromBits == toBits) {
             return inputVal;
         }
-        Variable result = getLIRGen().newVariable(LIRKind.combine(inputVal).changeType(toBits > WORD.getSizeInBits() ? DWORD : WORD));
+        Variable result = getLIRGen().newVariable(LIRKind.combine(inputVal).changeType(toBits > WORD.getSizeInBits() ? XWORD : WORD));
         if (fromBits == 32) {
             getLIRGen().append(new SPARCOP3Op(Srl, inputVal, g0.asValue(), result));
         } else {
-            Value mask = getLIRGen().emitConstant(LIRKind.value(DWORD), forLong(mask(fromBits)));
+            Value mask = getLIRGen().emitConstant(LIRKind.value(XWORD), forLong(mask(fromBits)));
             getLIRGen().append(new SPARCOP3Op(And, inputVal, mask, result));
         }
         return result;
--- a/graal/com.oracle.graal.compiler.sparc/src/com/oracle/graal/compiler/sparc/SPARCLIRGenerator.java	Wed Oct 14 15:18:44 2015 -0700
+++ b/graal/com.oracle.graal.compiler.sparc/src/com/oracle/graal/compiler/sparc/SPARCLIRGenerator.java	Thu Oct 15 11:58:34 2015 +0200
@@ -33,7 +33,7 @@
 import static com.oracle.graal.lir.LIRValueUtil.asJavaConstant;
 import static com.oracle.graal.lir.LIRValueUtil.isJavaConstant;
 import static jdk.vm.ci.code.ValueUtil.isStackSlotValue;
-import static jdk.vm.ci.sparc.SPARCKind.DWORD;
+import static jdk.vm.ci.sparc.SPARCKind.XWORD;
 import static jdk.vm.ci.sparc.SPARCKind.SINGLE;
 import jdk.vm.ci.code.CallingConvention;
 import jdk.vm.ci.code.StackSlotValue;
@@ -160,7 +160,7 @@
                 return JavaConstant.forShort((short) dead);
             case WORD:
                 return JavaConstant.forInt((int) dead);
-            case DWORD:
+            case XWORD:
                 return JavaConstant.forLong(dead);
             case SINGLE:
             case V32_BYTE:
@@ -430,10 +430,10 @@
         int compareBytes = cmpKind.getSizeInBytes();
         // SPARC compares 32 or 64 bits
         if (compareBytes < left.getPlatformKind().getSizeInBytes()) {
-            left = arithmeticLIRGen.emitSignExtend(left, compareBytes * 8, DWORD.getSizeInBytes() * 8);
+            left = arithmeticLIRGen.emitSignExtend(left, compareBytes * 8, XWORD.getSizeInBytes() * 8);
         }
         if (compareBytes < right.getPlatformKind().getSizeInBytes()) {
-            right = arithmeticLIRGen.emitSignExtend(right, compareBytes * 8, DWORD.getSizeInBytes() * 8);
+            right = arithmeticLIRGen.emitSignExtend(right, compareBytes * 8, XWORD.getSizeInBytes() * 8);
         }
         append(SPARCOP3Op.newBinaryVoid(Subcc, left, right));
         return mirrored;
@@ -545,12 +545,12 @@
 
     public void emitNullCheck(Value address, LIRFrameState state) {
         PlatformKind kind = address.getPlatformKind();
-        assert kind == DWORD : address + " - " + kind + " not an object!";
+        assert kind == XWORD : address + " - " + kind + " not an object!";
         append(new NullCheckOp(asAddressValue(address), state));
     }
 
     public void emitLoadConstantTableBase() {
-        constantTableBase = newVariable(LIRKind.value(DWORD));
+        constantTableBase = newVariable(LIRKind.value(XWORD));
         int nextPosition = getResult().getLIR().getLIRforBlock(getCurrentBlock()).size();
         NoOp placeHolder = append(new NoOp(getCurrentBlock(), nextPosition));
         loadConstantTableBaseOp = new SPARCLoadConstantTableBaseOp(constantTableBase, placeHolder);
--- a/graal/com.oracle.graal.compiler.sparc/src/com/oracle/graal/compiler/sparc/SPARCLIRKindTool.java	Wed Oct 14 15:18:44 2015 -0700
+++ b/graal/com.oracle.graal.compiler.sparc/src/com/oracle/graal/compiler/sparc/SPARCLIRKindTool.java	Thu Oct 15 11:58:34 2015 +0200
@@ -39,7 +39,7 @@
             return LIRKind.value(SPARCKind.WORD);
         } else {
             assert bits <= 64;
-            return LIRKind.value(SPARCKind.DWORD);
+            return LIRKind.value(SPARCKind.XWORD);
         }
     }
 
@@ -55,10 +55,10 @@
     }
 
     public LIRKind getObjectKind() {
-        return LIRKind.reference(SPARCKind.DWORD);
+        return LIRKind.reference(SPARCKind.XWORD);
     }
 
     public LIRKind getWordKind() {
-        return LIRKind.value(SPARCKind.DWORD);
+        return LIRKind.value(SPARCKind.XWORD);
     }
 }
--- a/graal/com.oracle.graal.compiler.sparc/src/com/oracle/graal/compiler/sparc/SPARCNodeMatchRules.java	Wed Oct 14 15:18:44 2015 -0700
+++ b/graal/com.oracle.graal.compiler.sparc/src/com/oracle/graal/compiler/sparc/SPARCNodeMatchRules.java	Thu Oct 15 11:58:34 2015 +0200
@@ -24,7 +24,7 @@
 package com.oracle.graal.compiler.sparc;
 
 import static jdk.vm.ci.sparc.SPARCKind.BYTE;
-import static jdk.vm.ci.sparc.SPARCKind.DWORD;
+import static jdk.vm.ci.sparc.SPARCKind.XWORD;
 import static jdk.vm.ci.sparc.SPARCKind.HWORD;
 import static jdk.vm.ci.sparc.SPARCKind.WORD;
 import jdk.vm.ci.common.JVMCIError;
@@ -65,7 +65,7 @@
         if (fromBits == toBits) {
             return null;
         } else if (toBits > WORD.getSizeInBits()) {
-            toKind = DWORD;
+            toKind = XWORD;
         } else if (toBits > HWORD.getSizeInBits()) {
             toKind = WORD;
         } else if (toBits > BYTE.getSizeInBits()) {
@@ -99,7 +99,7 @@
         if (fromBits == toBits) {
             return null;
         } else if (toBits > WORD.getSizeInBits()) {
-            toKind = DWORD;
+            toKind = XWORD;
         } else if (toBits > HWORD.getSizeInBits()) {
             toKind = WORD;
         } else if (toBits > BYTE.getSizeInBits()) {
--- a/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotBackend.java	Wed Oct 14 15:18:44 2015 -0700
+++ b/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotBackend.java	Thu Oct 15 11:58:34 2015 +0200
@@ -22,6 +22,7 @@
  */
 package com.oracle.graal.hotspot.sparc;
 
+import static com.oracle.graal.asm.sparc.SPARCAssembler.isGlobalRegister;
 import static com.oracle.graal.asm.sparc.SPARCAssembler.Annul.NOT_ANNUL;
 import static com.oracle.graal.asm.sparc.SPARCAssembler.BranchPredict.PREDICT_NOT_TAKEN;
 import static com.oracle.graal.asm.sparc.SPARCAssembler.CC.Xcc;
@@ -33,7 +34,6 @@
 import static jdk.vm.ci.hotspot.HotSpotVMConfig.config;
 import static jdk.vm.ci.sparc.SPARC.g0;
 import static jdk.vm.ci.sparc.SPARC.g5;
-import static jdk.vm.ci.sparc.SPARC.isGlobalRegister;
 import static jdk.vm.ci.sparc.SPARC.sp;
 
 import java.lang.reflect.Field;
--- a/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotBackendFactory.java	Wed Oct 14 15:18:44 2015 -0700
+++ b/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotBackendFactory.java	Thu Oct 15 11:58:34 2015 +0200
@@ -128,7 +128,8 @@
     private static Value[] createNativeABICallerSaveRegisters(HotSpotVMConfig config, RegisterConfig regConfig) {
         Set<Register> callerSavedRegisters = new HashSet<>();
         Collections.addAll(callerSavedRegisters, regConfig.getCalleeSaveRegisters());
-        Collections.addAll(callerSavedRegisters, SPARC.fpuRegisters);
+        Collections.addAll(callerSavedRegisters, SPARC.fpusRegisters);
+        Collections.addAll(callerSavedRegisters, SPARC.fpudRegisters);
         callerSavedRegisters.add(SPARC.g1);
         callerSavedRegisters.add(SPARC.g4);
         callerSavedRegisters.add(SPARC.g5);
--- a/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotCRuntimeCallEpilogueOp.java	Wed Oct 14 15:18:44 2015 -0700
+++ b/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotCRuntimeCallEpilogueOp.java	Thu Oct 15 11:58:34 2015 +0200
@@ -25,7 +25,7 @@
 import static com.oracle.graal.lir.LIRInstruction.OperandFlag.REG;
 import static com.oracle.graal.lir.LIRInstruction.OperandFlag.STACK;
 import static jdk.vm.ci.sparc.SPARC.g0;
-import static jdk.vm.ci.sparc.SPARCKind.DWORD;
+import static jdk.vm.ci.sparc.SPARCKind.XWORD;
 import jdk.vm.ci.code.Register;
 import jdk.vm.ci.meta.LIRKind;
 import jdk.vm.ci.meta.Value;
@@ -63,7 +63,7 @@
     public void emitCode(CompilationResultBuilder crb, SPARCMacroAssembler masm) {
 
         // Restore the thread register when coming back from the runtime.
-        SPARCMove.move(crb, masm, thread.asValue(LIRKind.value(DWORD)), threadTemp, SPARCDelayedControlTransfer.DUMMY);
+        SPARCMove.move(crb, masm, thread.asValue(LIRKind.value(XWORD)), threadTemp, SPARCDelayedControlTransfer.DUMMY);
 
         // Reset last Java frame, last Java PC and flags.
         masm.stx(g0, new SPARCAddress(thread, threadLastJavaSpOffset));
--- a/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotCRuntimeCallPrologueOp.java	Wed Oct 14 15:18:44 2015 -0700
+++ b/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotCRuntimeCallPrologueOp.java	Thu Oct 15 11:58:34 2015 +0200
@@ -26,7 +26,7 @@
 import static com.oracle.graal.lir.LIRInstruction.OperandFlag.STACK;
 import static jdk.vm.ci.code.ValueUtil.asRegister;
 import static jdk.vm.ci.sparc.SPARC.STACK_BIAS;
-import static jdk.vm.ci.sparc.SPARCKind.DWORD;
+import static jdk.vm.ci.sparc.SPARCKind.XWORD;
 import jdk.vm.ci.code.Register;
 import jdk.vm.ci.meta.AllocatableValue;
 import jdk.vm.ci.meta.LIRKind;
@@ -69,6 +69,6 @@
         masm.stx(scratchRegister, new SPARCAddress(thread, threadLastJavaSpOffset));
 
         // Save the thread register when calling out to the runtime.
-        SPARCMove.move(crb, masm, threadTemp, thread.asValue(LIRKind.value(DWORD)), getDelayedControlTransfer());
+        SPARCMove.move(crb, masm, threadTemp, thread.asValue(LIRKind.value(XWORD)), getDelayedControlTransfer());
     }
 }
--- a/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotJumpToExceptionHandlerOp.java	Wed Oct 14 15:18:44 2015 -0700
+++ b/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotJumpToExceptionHandlerOp.java	Thu Oct 15 11:58:34 2015 +0200
@@ -56,7 +56,7 @@
 
     @Override
     public void emitCode(CompilationResultBuilder crb, SPARCMacroAssembler masm) {
-        Register addrRegister = asRegister(address, SPARCKind.DWORD);
+        Register addrRegister = asRegister(address, SPARCKind.XWORD);
         masm.jmp(addrRegister);
         masm.restoreWindow();
     }
--- a/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotLIRGenerator.java	Wed Oct 14 15:18:44 2015 -0700
+++ b/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotLIRGenerator.java	Thu Oct 15 11:58:34 2015 +0200
@@ -66,7 +66,7 @@
 import static jdk.vm.ci.sparc.SPARC.g3;
 import static jdk.vm.ci.sparc.SPARC.g4;
 import static jdk.vm.ci.sparc.SPARC.g5;
-import static jdk.vm.ci.sparc.SPARCKind.DWORD;
+import static jdk.vm.ci.sparc.SPARCKind.XWORD;
 import static jdk.vm.ci.sparc.SPARCKind.WORD;
 
 import java.util.Map;
@@ -214,7 +214,7 @@
         if (linkage.destroysRegisters() || hotspotLinkage.needsJavaFrameAnchor()) {
             HotSpotRegistersProvider registers = getProviders().getRegisters();
             Register thread = registers.getThreadRegister();
-            Value threadTemp = newVariable(LIRKind.value(SPARCKind.DWORD));
+            Value threadTemp = newVariable(LIRKind.value(SPARCKind.XWORD));
             Register stackPointer = registers.getStackPointerRegister();
             Variable spScratch = newVariable(LIRKind.value(target().arch.getWordKind()));
             append(new SPARCHotSpotCRuntimeCallPrologueOp(config.threadLastJavaSpOffset(), thread, stackPointer, threadTemp, spScratch));
@@ -384,7 +384,7 @@
     @Override
     public Value emitCompress(Value pointer, CompressEncoding encoding, boolean nonNull) {
         LIRKind inputKind = pointer.getLIRKind();
-        assert inputKind.getPlatformKind() == DWORD : inputKind;
+        assert inputKind.getPlatformKind() == XWORD : inputKind;
         if (inputKind.isReference(0)) {
             // oop
             Variable result = newVariable(LIRKind.reference(WORD));
@@ -395,7 +395,7 @@
             Variable result = newVariable(LIRKind.value(WORD));
             AllocatableValue base = Value.ILLEGAL;
             if (encoding.base != 0) {
-                base = emitLoadConstant(LIRKind.value(DWORD), JavaConstant.forLong(encoding.base));
+                base = emitLoadConstant(LIRKind.value(XWORD), JavaConstant.forLong(encoding.base));
             }
             append(new SPARCHotSpotMove.CompressPointer(result, asAllocatable(pointer), base, encoding, nonNull));
             return result;
@@ -408,15 +408,15 @@
         assert inputKind.getPlatformKind() == WORD;
         if (inputKind.isReference(0)) {
             // oop
-            Variable result = newVariable(LIRKind.reference(DWORD));
+            Variable result = newVariable(LIRKind.reference(XWORD));
             append(new SPARCHotSpotMove.UncompressPointer(result, asAllocatable(pointer), getProviders().getRegisters().getHeapBaseRegister().asValue(), encoding, nonNull));
             return result;
         } else {
             // metaspace pointer
-            Variable result = newVariable(LIRKind.value(DWORD));
+            Variable result = newVariable(LIRKind.value(XWORD));
             AllocatableValue base = Value.ILLEGAL;
             if (encoding.base != 0) {
-                base = emitLoadConstant(LIRKind.value(DWORD), JavaConstant.forLong(encoding.base));
+                base = emitLoadConstant(LIRKind.value(XWORD), JavaConstant.forLong(encoding.base));
             }
             append(new SPARCHotSpotMove.UncompressPointer(result, asAllocatable(pointer), base, encoding, nonNull));
             return result;
--- a/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotNodeLIRBuilder.java	Wed Oct 14 15:18:44 2015 -0700
+++ b/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotNodeLIRBuilder.java	Thu Oct 15 11:58:34 2015 +0200
@@ -71,7 +71,7 @@
 
     @Override
     protected DebugInfoBuilder createDebugInfoBuilder(StructuredGraph graph, NodeValueMap nodeValueMap) {
-        HotSpotLockStack lockStack = new HotSpotLockStack(gen.getResult().getFrameMapBuilder(), LIRKind.value(SPARCKind.DWORD));
+        HotSpotLockStack lockStack = new HotSpotLockStack(gen.getResult().getFrameMapBuilder(), LIRKind.value(SPARCKind.XWORD));
         return new HotSpotDebugInfoBuilder(nodeValueMap, lockStack);
     }
 
--- a/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotPatchReturnAddressOp.java	Wed Oct 14 15:18:44 2015 -0700
+++ b/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotPatchReturnAddressOp.java	Thu Oct 15 11:58:34 2015 +0200
@@ -25,7 +25,7 @@
 import static com.oracle.graal.lir.LIRInstruction.OperandFlag.REG;
 import static jdk.vm.ci.code.ValueUtil.asRegister;
 import static jdk.vm.ci.sparc.SPARC.i7;
-import static jdk.vm.ci.sparc.SPARCKind.DWORD;
+import static jdk.vm.ci.sparc.SPARCKind.XWORD;
 import jdk.vm.ci.code.Register;
 import jdk.vm.ci.meta.AllocatableValue;
 
@@ -53,7 +53,7 @@
 
     @Override
     public void emitCode(CompilationResultBuilder crb, SPARCMacroAssembler masm) {
-        Register addrRegister = asRegister(address, DWORD);
+        Register addrRegister = asRegister(address, XWORD);
         masm.sub(addrRegister, SPARCAssembler.PC_RETURN_OFFSET, i7);
     }
 }
--- a/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotStrategySwitchOp.java	Wed Oct 14 15:18:44 2015 -0700
+++ b/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotStrategySwitchOp.java	Thu Oct 15 11:58:34 2015 +0200
@@ -23,6 +23,7 @@
 package com.oracle.graal.hotspot.sparc;
 
 import static com.oracle.graal.asm.sparc.SPARCAssembler.CBCOND;
+import static com.oracle.graal.asm.sparc.SPARCAssembler.INSTRUCTION_SIZE;
 import static com.oracle.graal.asm.sparc.SPARCAssembler.Annul.ANNUL;
 import static com.oracle.graal.asm.sparc.SPARCAssembler.BranchPredict.PREDICT_TAKEN;
 import static com.oracle.graal.lir.sparc.SPARCMove.loadFromConstantTable;
@@ -33,7 +34,6 @@
 import jdk.vm.ci.meta.AllocatableValue;
 import jdk.vm.ci.meta.Constant;
 import jdk.vm.ci.meta.Value;
-import jdk.vm.ci.sparc.SPARC;
 import jdk.vm.ci.sparc.SPARC.CPUFeature;
 
 import com.oracle.graal.asm.Assembler.LabelHint;
@@ -70,7 +70,7 @@
                 LabelHint hint = requestHint(masm, target);
 
                 // Load constant takes one instruction
-                int cbCondPosition = masm.position() + SPARC.INSTRUCTION_SIZE;
+                int cbCondPosition = masm.position() + INSTRUCTION_SIZE;
                 boolean canUseShortBranch = masm.hasFeature(CPUFeature.CBCOND) && SPARCControlFlow.isShortBranch(masm, cbCondPosition, hint, target);
 
                 Register scratchRegister = asRegister(scratch);
--- a/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCArithmetic.java	Wed Oct 14 15:18:44 2015 -0700
+++ b/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCArithmetic.java	Thu Oct 15 11:58:34 2015 +0200
@@ -42,7 +42,7 @@
 import static jdk.vm.ci.code.ValueUtil.isRegister;
 import static jdk.vm.ci.sparc.SPARC.g0;
 import static jdk.vm.ci.sparc.SPARCKind.DOUBLE;
-import static jdk.vm.ci.sparc.SPARCKind.DWORD;
+import static jdk.vm.ci.sparc.SPARCKind.XWORD;
 import static jdk.vm.ci.sparc.SPARCKind.SINGLE;
 import static jdk.vm.ci.sparc.SPARCKind.WORD;
 import jdk.vm.ci.code.Register;
@@ -169,10 +169,10 @@
                 switch (opcode) {
                     case LUREM:
                         crb.recordImplicitException(masm.position(), state);
-                        masm.udivx(asRegister(x, DWORD), crb.asIntConst(y), asRegister(scratch1, DWORD));
-                        masm.mulx(asRegister(scratch1, DWORD), crb.asIntConst(y), asRegister(scratch2, DWORD));
+                        masm.udivx(asRegister(x, XWORD), crb.asIntConst(y), asRegister(scratch1, XWORD));
+                        masm.mulx(asRegister(scratch1, XWORD), crb.asIntConst(y), asRegister(scratch2, XWORD));
                         getDelayedControlTransfer().emitControlTransfer(crb, masm);
-                        masm.sub(asRegister(x, DWORD), asRegister(scratch2, DWORD), asRegister(result, DWORD));
+                        masm.sub(asRegister(x, XWORD), asRegister(scratch2, XWORD), asRegister(result, XWORD));
                         break;
                     case IUREM:
                         JVMCIError.unimplemented();
@@ -185,16 +185,16 @@
                 switch (opcode) {
                     case LUREM:
                         if (isJavaConstant(x)) {
-                            new Setx(crb.asLongConst(x), asRegister(scratch2, DWORD), false).emit(masm);
+                            new Setx(crb.asLongConst(x), asRegister(scratch2, XWORD), false).emit(masm);
                             xLeft = scratch2;
                         }
-                        assert !asRegister(xLeft, DWORD).equals(asRegister(scratch1, DWORD));
-                        assert !asRegister(y, DWORD).equals(asRegister(scratch1, DWORD));
+                        assert !asRegister(xLeft, XWORD).equals(asRegister(scratch1, XWORD));
+                        assert !asRegister(y, XWORD).equals(asRegister(scratch1, XWORD));
                         crb.recordImplicitException(masm.position(), state);
-                        masm.udivx(asRegister(xLeft, DWORD), asRegister(y, DWORD), asRegister(scratch1, DWORD));
-                        masm.mulx(asRegister(scratch1, DWORD), asRegister(y, DWORD), asRegister(scratch1, DWORD));
+                        masm.udivx(asRegister(xLeft, XWORD), asRegister(y, XWORD), asRegister(scratch1, XWORD));
+                        masm.mulx(asRegister(scratch1, XWORD), asRegister(y, XWORD), asRegister(scratch1, XWORD));
                         getDelayedControlTransfer().emitControlTransfer(crb, masm);
-                        masm.sub(asRegister(xLeft, DWORD), asRegister(scratch1, DWORD), asRegister(result, DWORD));
+                        masm.sub(asRegister(xLeft, XWORD), asRegister(scratch1, XWORD), asRegister(result, XWORD));
                         break;
                     case IUREM:
                         assert !asRegister(result, WORD).equals(asRegister(scratch1, WORD));
@@ -270,21 +270,21 @@
         @Override
         public void emitCode(CompilationResultBuilder crb, SPARCMacroAssembler masm) {
             Label noOverflow = new Label();
-            masm.mulx(asRegister(x, DWORD), asRegister(y, DWORD), asRegister(result, DWORD));
+            masm.mulx(asRegister(x, XWORD), asRegister(y, XWORD), asRegister(result, XWORD));
 
             // Calculate the upper 64 bit signed := (umulxhi product - (x{63}&y + y{63}&x))
-            masm.umulxhi(asRegister(x, DWORD), asRegister(y, DWORD), asRegister(scratch1, DWORD));
-            masm.srax(asRegister(x, DWORD), 63, asRegister(scratch2, DWORD));
-            masm.and(asRegister(scratch2, DWORD), asRegister(y, DWORD), asRegister(scratch2, DWORD));
-            masm.sub(asRegister(scratch1, DWORD), asRegister(scratch2, DWORD), asRegister(scratch1, DWORD));
+            masm.umulxhi(asRegister(x, XWORD), asRegister(y, XWORD), asRegister(scratch1, XWORD));
+            masm.srax(asRegister(x, XWORD), 63, asRegister(scratch2, XWORD));
+            masm.and(asRegister(scratch2, XWORD), asRegister(y, XWORD), asRegister(scratch2, XWORD));
+            masm.sub(asRegister(scratch1, XWORD), asRegister(scratch2, XWORD), asRegister(scratch1, XWORD));
 
-            masm.srax(asRegister(y, DWORD), 63, asRegister(scratch2, DWORD));
-            masm.and(asRegister(scratch2, DWORD), asRegister(x, DWORD), asRegister(scratch2, DWORD));
-            masm.sub(asRegister(scratch1, DWORD), asRegister(scratch2, DWORD), asRegister(scratch1, DWORD));
+            masm.srax(asRegister(y, XWORD), 63, asRegister(scratch2, XWORD));
+            masm.and(asRegister(scratch2, XWORD), asRegister(x, XWORD), asRegister(scratch2, XWORD));
+            masm.sub(asRegister(scratch1, XWORD), asRegister(scratch2, XWORD), asRegister(scratch1, XWORD));
 
             // Now construct the lower half and compare
-            masm.srax(asRegister(result, DWORD), 63, asRegister(scratch2, DWORD));
-            masm.cmp(asRegister(scratch1, DWORD), asRegister(scratch2, DWORD));
+            masm.srax(asRegister(result, XWORD), 63, asRegister(scratch2, XWORD));
+            masm.cmp(asRegister(scratch1, XWORD), asRegister(scratch2, XWORD));
             masm.bpcc(Equal, NOT_ANNUL, noOverflow, Xcc, PREDICT_TAKEN);
             masm.nop();
             masm.wrccr(g0, 1 << (CCR_XCC_SHIFT + CCR_V_SHIFT));
@@ -327,16 +327,16 @@
                     masm.srax(asRegister(result, WORD), 32, asRegister(result, WORD));
                     break;
                 case LMUL:
-                    assert !asRegister(scratch, DWORD).equals(asRegister(result, DWORD));
-                    masm.umulxhi(asRegister(x, DWORD), asRegister(y, DWORD), asRegister(result, DWORD));
+                    assert !asRegister(scratch, XWORD).equals(asRegister(result, XWORD));
+                    masm.umulxhi(asRegister(x, XWORD), asRegister(y, XWORD), asRegister(result, XWORD));
 
-                    masm.srlx(asRegister(x, DWORD), 63, asRegister(scratch, DWORD));
-                    masm.mulx(asRegister(scratch, DWORD), asRegister(y, DWORD), asRegister(scratch, DWORD));
-                    masm.sub(asRegister(result, DWORD), asRegister(scratch, DWORD), asRegister(result, DWORD));
+                    masm.srlx(asRegister(x, XWORD), 63, asRegister(scratch, XWORD));
+                    masm.mulx(asRegister(scratch, XWORD), asRegister(y, XWORD), asRegister(scratch, XWORD));
+                    masm.sub(asRegister(result, XWORD), asRegister(scratch, XWORD), asRegister(result, XWORD));
 
-                    masm.srlx(asRegister(y, DWORD), 63, asRegister(scratch, DWORD));
-                    masm.mulx(asRegister(scratch, DWORD), asRegister(x, DWORD), asRegister(scratch, DWORD));
-                    masm.sub(asRegister(result, DWORD), asRegister(scratch, DWORD), asRegister(result, DWORD));
+                    masm.srlx(asRegister(y, XWORD), 63, asRegister(scratch, XWORD));
+                    masm.mulx(asRegister(scratch, XWORD), asRegister(x, XWORD), asRegister(scratch, XWORD));
+                    masm.sub(asRegister(result, XWORD), asRegister(scratch, XWORD), asRegister(result, XWORD));
                     break;
                 default:
                     throw JVMCIError.shouldNotReachHere();
--- a/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCBitManipulationOp.java	Wed Oct 14 15:18:44 2015 -0700
+++ b/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCBitManipulationOp.java	Thu Oct 15 11:58:34 2015 +0200
@@ -26,7 +26,7 @@
 import static jdk.vm.ci.code.ValueUtil.asRegister;
 import static jdk.vm.ci.code.ValueUtil.isRegister;
 import static jdk.vm.ci.sparc.SPARC.g0;
-import static jdk.vm.ci.sparc.SPARCKind.DWORD;
+import static jdk.vm.ci.sparc.SPARCKind.XWORD;
 import static jdk.vm.ci.sparc.SPARCKind.WORD;
 import jdk.vm.ci.code.Register;
 import jdk.vm.ci.common.JVMCIError;
@@ -82,7 +82,7 @@
                         masm.andn(dst, src, dst);
                         masm.srl(dst, g0, dst);
                         masm.popc(dst, dst);
-                    } else if (tkind == DWORD) {
+                    } else if (tkind == XWORD) {
                         masm.sub(src, 1, dst);
                         masm.andn(dst, src, dst);
                         masm.popc(dst, dst);
@@ -112,7 +112,7 @@
                 }
                 case LBSR: {
                     PlatformKind lkind = input.getPlatformKind();
-                    assert lkind == DWORD;
+                    assert lkind == XWORD;
                     Register tmp = asRegister(scratch);
                     assert !tmp.equals(dst);
                     masm.srlx(src, 1, tmp);
--- a/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCByteSwapOp.java	Wed Oct 14 15:18:44 2015 -0700
+++ b/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCByteSwapOp.java	Thu Oct 15 11:58:34 2015 +0200
@@ -27,7 +27,7 @@
 import static com.oracle.graal.lir.LIRInstruction.OperandFlag.STACK;
 import static com.oracle.graal.lir.LIRInstruction.OperandFlag.UNINITIALIZED;
 import static jdk.vm.ci.code.ValueUtil.asRegister;
-import static jdk.vm.ci.sparc.SPARCKind.DWORD;
+import static jdk.vm.ci.sparc.SPARCKind.XWORD;
 import static jdk.vm.ci.sparc.SPARCKind.WORD;
 import jdk.vm.ci.code.Register;
 import jdk.vm.ci.code.StackSlotValue;
@@ -58,8 +58,8 @@
         super(TYPE, SIZE);
         this.result = result;
         this.input = input;
-        this.tmpSlot = tool.getResult().getFrameMapBuilder().allocateSpillSlot(LIRKind.value(DWORD));
-        this.tempIndex = tool.newVariable(LIRKind.value(DWORD));
+        this.tmpSlot = tool.getResult().getFrameMapBuilder().allocateSpillSlot(LIRKind.value(XWORD));
+        this.tempIndex = tool.newVariable(LIRKind.value(XWORD));
     }
 
     @Override
@@ -67,7 +67,7 @@
         SPARCAddress addr = (SPARCAddress) crb.asAddress(tmpSlot);
         SPARCMove.emitStore(input, addr, result.getPlatformKind(), SPARCDelayedControlTransfer.DUMMY, null, crb, masm);
         if (addr.getIndex().equals(Register.None)) {
-            Register tempReg = ValueUtil.asRegister(tempIndex, DWORD);
+            Register tempReg = ValueUtil.asRegister(tempIndex, XWORD);
             new SPARCMacroAssembler.Setx(addr.getDisplacement(), tempReg, false).emit(masm);
             addr = new SPARCAddress(addr.getBase(), tempReg);
         }
@@ -76,8 +76,8 @@
             case WORD:
                 masm.lduwa(addr.getBase(), addr.getIndex(), asRegister(result, WORD), Asi.ASI_PRIMARY_LITTLE);
                 break;
-            case DWORD:
-                masm.ldxa(addr.getBase(), addr.getIndex(), asRegister(result, DWORD), Asi.ASI_PRIMARY_LITTLE);
+            case XWORD:
+                masm.ldxa(addr.getBase(), addr.getIndex(), asRegister(result, XWORD), Asi.ASI_PRIMARY_LITTLE);
                 break;
             default:
                 throw JVMCIError.shouldNotReachHere();
--- a/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCControlFlow.java	Wed Oct 14 15:18:44 2015 -0700
+++ b/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCControlFlow.java	Thu Oct 15 11:58:34 2015 +0200
@@ -23,6 +23,7 @@
 package com.oracle.graal.lir.sparc;
 
 import static com.oracle.graal.asm.sparc.SPARCAssembler.CBCOND;
+import static com.oracle.graal.asm.sparc.SPARCAssembler.INSTRUCTION_SIZE;
 import static com.oracle.graal.asm.sparc.SPARCAssembler.isSimm10;
 import static com.oracle.graal.asm.sparc.SPARCAssembler.isSimm11;
 import static com.oracle.graal.asm.sparc.SPARCAssembler.isSimm13;
@@ -67,7 +68,7 @@
 import static jdk.vm.ci.code.ValueUtil.asRegister;
 import static jdk.vm.ci.sparc.SPARC.CPU;
 import static jdk.vm.ci.sparc.SPARC.g0;
-import static jdk.vm.ci.sparc.SPARCKind.DWORD;
+import static jdk.vm.ci.sparc.SPARCKind.XWORD;
 import static jdk.vm.ci.sparc.SPARCKind.WORD;
 
 import java.util.ArrayList;
@@ -83,7 +84,6 @@
 import jdk.vm.ci.meta.JavaConstant;
 import jdk.vm.ci.meta.PlatformKind;
 import jdk.vm.ci.meta.Value;
-import jdk.vm.ci.sparc.SPARC;
 import jdk.vm.ci.sparc.SPARC.CPUFeature;
 import jdk.vm.ci.sparc.SPARCKind;
 
@@ -140,7 +140,7 @@
     public static final class CompareBranchOp extends SPARCBlockEndOp implements SPARCDelayedControlTransfer {
         public static final LIRInstructionClass<CompareBranchOp> TYPE = LIRInstructionClass.create(CompareBranchOp.class);
         public static final SizeEstimate SIZE = SizeEstimate.create(3);
-        static final EnumSet<SPARCKind> SUPPORTED_KINDS = EnumSet.of(DWORD, WORD);
+        static final EnumSet<SPARCKind> SUPPORTED_KINDS = EnumSet.of(XWORD, WORD);
 
         @Use({REG}) protected Value x;
         @Use({REG, CONST}) protected Value y;
@@ -282,7 +282,7 @@
 
         private void emitCBCond(SPARCMacroAssembler masm, Value actualX, Value actualY, Label actualTrueTarget, ConditionFlag cFlag) {
             PlatformKind xKind = actualX.getPlatformKind();
-            boolean isLong = kind == SPARCKind.DWORD;
+            boolean isLong = kind == SPARCKind.XWORD;
             if (isJavaConstant(actualY)) {
                 JavaConstant c = asJavaConstant(actualY);
                 long constantY = c.isNull() ? 0 : c.asLong();
@@ -512,7 +512,7 @@
                 boolean isShortConstant = isSimm5(constant);
                 int cbCondPosition = masm.position();
                 if (!isShortConstant) { // Load constant takes one instruction
-                    cbCondPosition += SPARC.INSTRUCTION_SIZE;
+                    cbCondPosition += INSTRUCTION_SIZE;
                 }
                 boolean canUseShortBranch = masm.hasFeature(CPUFeature.CBCOND) && isShortBranch(masm, cbCondPosition, hint, target);
                 if (bits != null && canUseShortBranch) {
@@ -586,7 +586,7 @@
         @Override
         public void emitCode(CompilationResultBuilder crb, SPARCMacroAssembler masm) {
             Register value = asRegister(index, SPARCKind.WORD);
-            Register scratchReg = asRegister(scratch, SPARCKind.DWORD);
+            Register scratchReg = asRegister(scratch, SPARCKind.XWORD);
 
             // Compare index against jump table bounds
             int highKey = lowKey + targets.length - 1;
--- a/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCFrameMap.java	Wed Oct 14 15:18:44 2015 -0700
+++ b/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCFrameMap.java	Thu Oct 15 11:58:34 2015 +0200
@@ -110,7 +110,7 @@
      */
     @Override
     public int spillSlotSize(LIRKind kind) {
-        return Math.max(kind.getPlatformKind().getSizeInBytes(), SPARC.MEMORY_ACCESS_ALIGN);
+        return kind.getPlatformKind().getSizeInBytes();
     }
 
     @Override
@@ -131,6 +131,6 @@
 
     public StackSlot allocateDeoptimizationRescueSlot() {
         assert spillSize == initialSpillSize : "Deoptimization rescue slot must be the first stack slot";
-        return allocateSpillSlot(LIRKind.value(SPARCKind.DWORD));
+        return allocateSpillSlot(LIRKind.value(SPARCKind.XWORD));
     }
 }
--- a/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCMove.java	Wed Oct 14 15:18:44 2015 -0700
+++ b/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCMove.java	Thu Oct 15 11:58:34 2015 +0200
@@ -23,7 +23,10 @@
 package com.oracle.graal.lir.sparc;
 
 import static com.oracle.graal.asm.sparc.SPARCAssembler.MEMBAR_STORE_LOAD;
+import static com.oracle.graal.asm.sparc.SPARCAssembler.isCPURegister;
+import static com.oracle.graal.asm.sparc.SPARCAssembler.isDoubleFloatRegister;
 import static com.oracle.graal.asm.sparc.SPARCAssembler.isSimm13;
+import static com.oracle.graal.asm.sparc.SPARCAssembler.isSingleFloatRegister;
 import static com.oracle.graal.lir.LIRInstruction.OperandFlag.COMPOSITE;
 import static com.oracle.graal.lir.LIRInstruction.OperandFlag.HINT;
 import static com.oracle.graal.lir.LIRInstruction.OperandFlag.ILLEGAL;
@@ -39,7 +42,7 @@
 import static jdk.vm.ci.code.ValueUtil.isStackSlot;
 import static jdk.vm.ci.sparc.SPARC.g0;
 import static jdk.vm.ci.sparc.SPARCKind.DOUBLE;
-import static jdk.vm.ci.sparc.SPARCKind.DWORD;
+import static jdk.vm.ci.sparc.SPARCKind.XWORD;
 import static jdk.vm.ci.sparc.SPARCKind.SINGLE;
 import static jdk.vm.ci.sparc.SPARCKind.WORD;
 
@@ -222,7 +225,7 @@
                 if (inputKind == WORD) {
                     masm.movxtod(asRegister(input, WORD), asRegister(result, DOUBLE));
                 } else {
-                    masm.movxtod(asRegister(input, DWORD), asRegister(result, DOUBLE));
+                    masm.movxtod(asRegister(input, XWORD), asRegister(result, DOUBLE));
                 }
             } else if (inputKind == SINGLE) {
                 if (resultKind == WORD) {
@@ -231,8 +234,8 @@
                     masm.movstouw(asRegister(input, SINGLE), asRegister(result, WORD));
                 }
             } else if (inputKind == DOUBLE) {
-                if (resultKind == DWORD) {
-                    masm.movdtox(asRegister(input, DOUBLE), asRegister(result, DWORD));
+                if (resultKind == XWORD) {
+                    masm.movdtox(asRegister(input, DOUBLE), asRegister(result, XWORD));
                 } else {
                     throw JVMCIError.shouldNotReachHere();
                 }
@@ -321,7 +324,7 @@
         @Override
         public void emitCode(CompilationResultBuilder crb, SPARCMacroAssembler masm) {
             SPARCAddress address = addressValue.toAddress();
-            loadEffectiveAddress(crb, masm, address, asRegister(result, DWORD), getDelayedControlTransfer());
+            loadEffectiveAddress(crb, masm, address, asRegister(result, XWORD), getDelayedControlTransfer());
         }
     }
 
@@ -448,7 +451,7 @@
         @Override
         public void emitCode(CompilationResultBuilder crb, SPARCMacroAssembler masm) {
             SPARCAddress address = (SPARCAddress) crb.asAddress(slot);
-            loadEffectiveAddress(crb, masm, address, asRegister(result, DWORD), getDelayedControlTransfer());
+            loadEffectiveAddress(crb, masm, address, asRegister(result, XWORD), getDelayedControlTransfer());
         }
     }
 
@@ -593,11 +596,11 @@
             return;
         }
         delaySlotLir.emitControlTransfer(crb, masm);
-        if (SPARC.isCPURegister(src) && SPARC.isCPURegister(dst)) {
+        if (isCPURegister(src) && isCPURegister(dst)) {
             masm.mov(src, dst);
-        } else if (SPARC.isSingleFloatRegister(src) && SPARC.isSingleFloatRegister(dst)) {
+        } else if (isSingleFloatRegister(src) && isSingleFloatRegister(dst)) {
             masm.fsrc2s(src, dst);
-        } else if (SPARC.isDoubleFloatRegister(src) && SPARC.isDoubleFloatRegister(dst)) {
+        } else if (isDoubleFloatRegister(src) && isDoubleFloatRegister(dst)) {
             masm.fsrc2d(src, dst);
         } else {
             throw JVMCIError.shouldNotReachHere(String.format("Trying to move between register domains src: %s dst: %s", src, dst));
@@ -716,7 +719,7 @@
             case WORD:
                 masm.cas(asRegister(address), asRegister(cmpValue), asRegister(newValue));
                 break;
-            case DWORD:
+            case XWORD:
                 masm.casx(asRegister(address), asRegister(cmpValue), asRegister(newValue));
                 break;
             default:
--- a/mx.graal/suite.py	Wed Oct 14 15:18:44 2015 -0700
+++ b/mx.graal/suite.py	Thu Oct 15 11:58:34 2015 +0200
@@ -6,7 +6,7 @@
     "suites": [
             {
                "name" : "jvmci",
-               "version" : "c278790fa252e7e4d8eeecc560fa7a24cdf82651",
+               "version" : "5ba5ff0fda9ebb97467026749ca64d4bb0385152",
                "urls" : [
                     {"url" : "http://lafo.ssw.uni-linz.ac.at/hg/graal-jvmci-8", "kind" : "hg"},
                     {"url" : "https://curio.ssw.jku.at/nexus/content/repositories/snapshots", "kind" : "binary"},