changeset 22691:54d85a1b4188

[SPARC] Remove SPARCCompare.ACMP
author Stefan Anzinger <stefan.anzinger@oracle.com>
date Fri, 18 Sep 2015 12:18:41 +0200
parents fd2a8e6da876
children f87ae6a74d88
files graal/com.oracle.graal.compiler.sparc/src/com/oracle/graal/compiler/sparc/SPARCLIRGenerator.java graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCCompare.java graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCControlFlow.java
diffstat 3 files changed, 4 insertions(+), 37 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.compiler.sparc/src/com/oracle/graal/compiler/sparc/SPARCLIRGenerator.java	Tue Aug 25 17:42:38 2015 +0200
+++ b/graal/com.oracle.graal.compiler.sparc/src/com/oracle/graal/compiler/sparc/SPARCLIRGenerator.java	Fri Sep 18 12:18:41 2015 +0200
@@ -93,7 +93,6 @@
 import static com.oracle.graal.lir.sparc.SPARCBitManipulationOp.IntrinsicOpcode.IPOPCNT;
 import static com.oracle.graal.lir.sparc.SPARCBitManipulationOp.IntrinsicOpcode.LBSR;
 import static com.oracle.graal.lir.sparc.SPARCBitManipulationOp.IntrinsicOpcode.LPOPCNT;
-import static com.oracle.graal.lir.sparc.SPARCCompare.ACMP;
 import static com.oracle.graal.lir.sparc.SPARCCompare.DCMP;
 import static com.oracle.graal.lir.sparc.SPARCCompare.FCMP;
 import static com.oracle.graal.lir.sparc.SPARCCompare.ICMP;
@@ -343,9 +342,6 @@
                 actualCmpKind = JavaKind.Int;
                 opcode = ICMP;
                 break;
-            case Object:
-                opcode = ACMP;
-                break;
             case Long:
                 opcode = LCMP;
                 break;
@@ -468,9 +464,6 @@
             case Long:
                 append(new CompareOp(LCMP, left, right));
                 break;
-            case Object:
-                append(new CompareOp(ACMP, left, right));
-                break;
             case Float:
                 append(new CompareOp(FCMP, left, right));
                 break;
--- a/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCCompare.java	Tue Aug 25 17:42:38 2015 +0200
+++ b/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCCompare.java	Fri Sep 18 12:18:41 2015 +0200
@@ -46,7 +46,6 @@
 public enum SPARCCompare {
     ICMP,
     LCMP,
-    ACMP,
     FCMP,
     DCMP;
 
@@ -96,9 +95,6 @@
                 case LCMP:
                     masm.cmp(asRegister(x, JavaKind.Long), asRegister(y, JavaKind.Long));
                     break;
-                case ACMP:
-                    masm.cmp(asRegister(x), asRegister(y));
-                    break;
                 case FCMP:
                     masm.fcmp(Fcc0, Fcmps, asRegister(x, JavaKind.Float), asRegister(y, JavaKind.Float));
                     break;
@@ -124,13 +120,9 @@
                     masm.cmp(asRegister(x, JavaKind.Long), imm);
                     break;
                 case ICMP:
-                    assert isSimm13(crb.asIntConst(y));
+                    assert isSimm13(imm);
                     masm.cmp(asRegister(x, JavaKind.Int), imm);
                     break;
-                case ACMP:
-                    assert imm == 0 : "Only null object constants are allowed in comparisons";
-                    masm.cmp(asRegister(x), 0);
-                    break;
                 default:
                     throw JVMCIError.shouldNotReachHere();
             }
--- a/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCControlFlow.java	Tue Aug 25 17:42:38 2015 +0200
+++ b/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCControlFlow.java	Fri Sep 18 12:18:41 2015 +0200
@@ -92,6 +92,7 @@
 import com.oracle.graal.asm.sparc.SPARCMacroAssembler.ScratchRegister;
 import com.oracle.graal.asm.sparc.SPARCMacroAssembler.Setx;
 import com.oracle.graal.compiler.common.calc.Condition;
+import com.oracle.graal.lir.ConstantValue;
 import com.oracle.graal.lir.LIRInstructionClass;
 import com.oracle.graal.lir.LabelRef;
 import com.oracle.graal.lir.Opcode;
@@ -239,9 +240,6 @@
          * @return true if the branch could be emitted
          */
         private boolean emitShortCompareBranch(CompilationResultBuilder crb, SPARCMacroAssembler masm) {
-            Value tmpValue;
-            Value actualX = x;
-            Value actualY = y;
             ConditionFlag actualConditionFlag = conditionFlag;
             Label actualTrueTarget = trueDestination.label();
             Label actualFalseTarget = falseDestination.label();
@@ -266,14 +264,7 @@
                     actualFalseTarget = tmpTarget;
                 }
             }
-            // Keep the constant on the right
-            if (isJavaConstant(actualX)) {
-                tmpValue = actualX;
-                actualX = actualY;
-                actualY = tmpValue;
-                actualConditionFlag = actualConditionFlag.mirror();
-            }
-            emitCBCond(masm, actualX, actualY, actualTrueTarget, actualConditionFlag);
+            emitCBCond(masm, x, y, actualTrueTarget, actualConditionFlag);
             if (needJump) {
                 masm.jmp(actualFalseTarget);
                 masm.nop();
@@ -295,22 +286,13 @@
                 case Long:
                     if (isJavaConstant(actualY)) {
                         JavaConstant c = asJavaConstant(actualY);
-                        assert NumUtil.is32bit(c.asLong());
+                        assert c.isNull() || NumUtil.is32bit(c.asLong());
                         int constantY = c.isNull() ? 0 : (int) c.asLong();
                         CBCOND.emit(masm, conditionFlag, true, asRegister(actualX, JavaKind.Long), constantY, actualTrueTarget);
                     } else {
                         CBCOND.emit(masm, conditionFlag, true, asRegister(actualX, JavaKind.Long), asRegister(actualY, JavaKind.Long), actualTrueTarget);
                     }
                     break;
-                case Object:
-                    if (isJavaConstant(actualY)) {
-                        // Object constant valid can only be null
-                        assert asJavaConstant(actualY).isNull();
-                        CBCOND.emit(masm, conditionFlag, true, asRegister(actualX), 0, actualTrueTarget);
-                    } else { // this is already loaded
-                        CBCOND.emit(masm, conditionFlag, true, asRegister(actualX), asRegister(actualY), actualTrueTarget);
-                    }
-                    break;
                 default:
                     JVMCIError.shouldNotReachHere();
             }