# HG changeset patch # User Stefan Anzinger # Date 1431723822 -7200 # Node ID cdb5eda3a4b595df723029641b604363f00f4f2a # Parent cfc632ba768981db82723bbf6f26298641ab44cc [SPARC] sign extend array compare length diff -r cfc632ba7689 -r cdb5eda3a4b5 graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCArrayEqualsOp.java --- a/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCArrayEqualsOp.java Fri May 15 14:48:18 2015 +0200 +++ b/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCArrayEqualsOp.java Fri May 15 23:03:42 2015 +0200 @@ -133,6 +133,7 @@ * Emits code that uses 8-byte vector compares. */ private void emit8ByteCompare(SPARCMacroAssembler masm, Register result, Register array1, Register array2, Register length, Label trueLabel, Label falseLabel) { + assert lengthValue.getPlatformKind().equals(Kind.Int); Label loop = new Label(); Label compareTail = new Label(); Label compareTailCorrectVectorEnd = new Label(); @@ -142,6 +143,7 @@ boolean hasCBcond = masm.hasFeature(CPUFeature.CBCOND); + masm.sra(length, 0, length); masm.and(result, VECTOR_SIZE - 1, result); // tail count (in bytes) masm.andcc(length, ~(VECTOR_SIZE - 1), length); // vector count (in bytes) masm.bpcc(ConditionFlag.Equal, NOT_ANNUL, compareTail, CC.Xcc, PREDICT_NOT_TAKEN);