# HG changeset patch # User twisti # Date 1389327251 28800 # Node ID 40e81cba9e086edbdfc014e8f55b8b9d6b8ce819 # Parent 7737fbb055b0923288a47e8bfe0cc4f9c908fd2e renamed movzx/movsx instructions; removed duplicate movswl; added movzbl diff -r 7737fbb055b0 -r 40e81cba9e08 graal/com.oracle.graal.asm.amd64/src/com/oracle/graal/asm/amd64/AMD64Assembler.java --- a/graal/com.oracle.graal.asm.amd64/src/com/oracle/graal/asm/amd64/AMD64Assembler.java Thu Jan 09 20:04:55 2014 -0800 +++ b/graal/com.oracle.graal.asm.amd64/src/com/oracle/graal/asm/amd64/AMD64Assembler.java Thu Jan 09 20:14:11 2014 -0800 @@ -787,7 +787,6 @@ emitByte(0x70 | cc.getValue()); emitByte((int) ((disp - shortSize) & 0xFF)); } else { - l.addPatchAt(codeBuffer.position()); emitByte(0x70 | cc.getValue()); emitByte(0); @@ -1021,14 +1020,14 @@ } } - public final void movsxb(Register dst, AMD64Address src) { + public final void movsbl(Register dst, AMD64Address src) { prefix(src, dst); emitByte(0x0F); emitByte(0xBE); emitOperandHelper(dst, src); } - public final void movsxb(Register dst, Register src) { + public final void movsbl(Register dst, Register src) { int encode = prefixAndEncode(dst.encoding, src.encoding, true); emitByte(0x0F); emitByte(0xBE); @@ -1098,20 +1097,13 @@ emitOperandHelper(dst, src); } - public final void movsxw(Register dst, Register src) { + public final void movswl(Register dst, Register src) { int encode = prefixAndEncode(dst.encoding, src.encoding); emitByte(0x0F); emitByte(0xBF); emitByte(0xC0 | encode); } - public final void movsxw(Register dst, AMD64Address src) { - prefix(src, dst); - emitByte(0x0F); - emitByte(0xBF); - emitOperandHelper(dst, src); - } - public final void movw(AMD64Address dst, int imm16) { emitByte(0x66); // switch to 16-bit mode prefix(dst); @@ -1127,7 +1119,14 @@ emitOperandHelper(src, dst); } - public final void movzxl(Register dst, AMD64Address src) { + public final void movzbl(Register dst, AMD64Address src) { + prefix(src, dst); + emitByte(0x0F); + emitByte(0xB6); + emitOperandHelper(dst, src); + } + + public final void movzwl(Register dst, AMD64Address src) { prefix(src, dst); emitByte(0x0F); emitByte(0xB7); diff -r 7737fbb055b0 -r 40e81cba9e08 graal/com.oracle.graal.asm.amd64/src/com/oracle/graal/asm/amd64/AMD64MacroAssembler.java --- a/graal/com.oracle.graal.asm.amd64/src/com/oracle/graal/asm/amd64/AMD64MacroAssembler.java Thu Jan 09 20:04:55 2014 -0800 +++ b/graal/com.oracle.graal.asm.amd64/src/com/oracle/graal/asm/amd64/AMD64MacroAssembler.java Thu Jan 09 20:14:11 2014 -0800 @@ -168,7 +168,7 @@ } public final void signExtendShort(Register reg) { - movsxw(reg, reg); + movswl(reg, reg); } public void movflt(Register dst, Register src) { diff -r 7737fbb055b0 -r 40e81cba9e08 graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64Arithmetic.java --- a/graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64Arithmetic.java Thu Jan 09 20:04:55 2014 -0800 +++ b/graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64Arithmetic.java Thu Jan 09 20:14:11 2014 -0800 @@ -496,10 +496,10 @@ break; case I2B: - masm.movsxb(asIntReg(dst), asIntReg(src)); + masm.movsbl(asIntReg(dst), asIntReg(src)); break; case I2S: - masm.movsxw(asIntReg(dst), asIntReg(src)); + masm.movswl(asIntReg(dst), asIntReg(src)); break; case I2L: masm.movslq(asLongReg(dst), asIntReg(src)); @@ -756,10 +756,10 @@ break; case I2B: - masm.movsxb(asIntReg(dst), (AMD64Address) crb.asIntAddr(src)); + masm.movsbl(asIntReg(dst), (AMD64Address) crb.asIntAddr(src)); break; case I2S: - masm.movsxw(asIntReg(dst), (AMD64Address) crb.asIntAddr(src)); + masm.movswl(asIntReg(dst), (AMD64Address) crb.asIntAddr(src)); break; case I2L: masm.movslq(asLongReg(dst), (AMD64Address) crb.asIntAddr(src)); diff -r 7737fbb055b0 -r 40e81cba9e08 graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64CharArrayEqualsOp.java --- a/graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64CharArrayEqualsOp.java Thu Jan 09 20:04:55 2014 -0800 +++ b/graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64CharArrayEqualsOp.java Thu Jan 09 20:14:11 2014 -0800 @@ -145,8 +145,8 @@ masm.bind(compareChar); masm.testl(result, 0x2); // tail char masm.jccb(ConditionFlag.Zero, trueLabel); - masm.movzxl(temp, new AMD64Address(array1, 0)); - masm.movzxl(length, new AMD64Address(array2, 0)); + masm.movzwl(temp, new AMD64Address(array1, 0)); + masm.movzwl(length, new AMD64Address(array2, 0)); masm.cmpl(temp, length); masm.jccb(ConditionFlag.NotEqual, falseLabel); diff -r 7737fbb055b0 -r 40e81cba9e08 graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64Move.java --- a/graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64Move.java Thu Jan 09 20:04:55 2014 -0800 +++ b/graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64Move.java Thu Jan 09 20:14:11 2014 -0800 @@ -140,10 +140,10 @@ switch (kind) { case Boolean: case Byte: - masm.movsxb(asRegister(result), address.toAddress()); + masm.movsbl(asRegister(result), address.toAddress()); break; case Char: - masm.movzxl(asRegister(result), address.toAddress()); + masm.movzwl(asRegister(result), address.toAddress()); break; case Short: masm.movswl(asRegister(result), address.toAddress());