Mercurial > hg > graal-jvmci-8
changeset 21405:cdb5eda3a4b5
[SPARC] sign extend array compare length
author | Stefan Anzinger <stefan.anzinger@oracle.com> |
---|---|
date | Fri, 15 May 2015 23:03:42 +0200 |
parents | cfc632ba7689 |
children | b4aca5ec3f10 |
files | graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCArrayEqualsOp.java |
diffstat | 1 files changed, 2 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- 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);