Mercurial > hg > truffle
changeset 7909:afb56ecdb083
Fix usage and operand flags of AMD64BitManipulationOp.
author | Roland Schatz <roland.schatz@oracle.com> |
---|---|
date | Thu, 28 Feb 2013 15:29:46 +0100 |
parents | 775745294caa |
children | 748cb57f53cb |
files | graal/com.oracle.graal.compiler.amd64/src/com/oracle/graal/compiler/amd64/AMD64LIRGenerator.java graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64BitManipulationOp.java |
diffstat | 2 files changed, 11 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.compiler.amd64/src/com/oracle/graal/compiler/amd64/AMD64LIRGenerator.java Thu Feb 28 14:15:25 2013 +0100 +++ b/graal/com.oracle.graal.compiler.amd64/src/com/oracle/graal/compiler/amd64/AMD64LIRGenerator.java Thu Feb 28 15:29:46 2013 +0100 @@ -792,23 +792,23 @@ @Override public void emitBitCount(Variable result, Value value) { if (value.getKind().getStackKind() == Kind.Int) { - append(new AMD64BitManipulationOp(IPOPCNT, result, value)); + append(new AMD64BitManipulationOp(IPOPCNT, result, asAllocatable(value))); } else { - append(new AMD64BitManipulationOp(LPOPCNT, result, value)); + append(new AMD64BitManipulationOp(LPOPCNT, result, asAllocatable(value))); } } @Override public void emitBitScanForward(Variable result, Value value) { - append(new AMD64BitManipulationOp(BSF, result, value)); + append(new AMD64BitManipulationOp(BSF, result, asAllocatable(value))); } @Override public void emitBitScanReverse(Variable result, Value value) { if (value.getKind().getStackKind() == Kind.Int) { - append(new AMD64BitManipulationOp(IBSR, result, value)); + append(new AMD64BitManipulationOp(IBSR, result, asAllocatable(value))); } else { - append(new AMD64BitManipulationOp(LBSR, result, value)); + append(new AMD64BitManipulationOp(LBSR, result, asAllocatable(value))); } }
--- a/graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64BitManipulationOp.java Thu Feb 28 14:15:25 2013 +0100 +++ b/graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64BitManipulationOp.java Thu Feb 28 15:29:46 2013 +0100 @@ -24,7 +24,6 @@ import com.oracle.graal.amd64.*; import com.oracle.graal.api.code.*; -import com.oracle.graal.api.meta.*; import com.oracle.graal.asm.amd64.*; import com.oracle.graal.lir.asm.*; @@ -35,10 +34,10 @@ } @Opcode private final IntrinsicOpcode opcode; - @Def protected Value result; - @Use({OperandFlag.REG, OperandFlag.ADDR}) protected Value input; + @Def protected AllocatableValue result; + @Use({OperandFlag.REG, OperandFlag.STACK}) protected AllocatableValue input; - public AMD64BitManipulationOp(IntrinsicOpcode opcode, Value result, Value input) { + public AMD64BitManipulationOp(IntrinsicOpcode opcode, AllocatableValue result, AllocatableValue input) { this.opcode = opcode; this.result = result; this.input = input; @@ -47,8 +46,8 @@ @Override public void emitCode(TargetMethodAssembler tasm, AMD64MacroAssembler masm) { Register dst = ValueUtil.asIntReg(result); - if (ValueUtil.isAddress(input)) { - AMD64Address src = (AMD64Address) ValueUtil.asAddress(input); + if (ValueUtil.isRegister(input)) { + Register src = ValueUtil.asRegister(input); switch (opcode) { case IPOPCNT: masm.popcntl(dst, src); @@ -67,7 +66,7 @@ break; } } else { - Register src = ValueUtil.asRegister(input); + AMD64Address src = (AMD64Address) tasm.asAddress(input); switch (opcode) { case IPOPCNT: masm.popcntl(dst, src);