diff options
author | Nicolas Geoffray <ngeoffray@google.com> | 2015-04-10 21:40:59 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2015-04-10 21:41:00 +0000 |
commit | 1b743777e6b6cec3387b0ee347b6a8a03779c345 (patch) | |
tree | 036c42dbf10d8c75de1326e16406a12191c704ce /compiler/utils | |
parent | cf69f8163d700be29a1732e7e229101c67a51803 (diff) | |
parent | f9aac1e9f442c2486cd54f045d43e15791601205 (diff) | |
download | android_art-1b743777e6b6cec3387b0ee347b6a8a03779c345.tar.gz android_art-1b743777e6b6cec3387b0ee347b6a8a03779c345.tar.bz2 android_art-1b743777e6b6cec3387b0ee347b6a8a03779c345.zip |
Merge "Revert "[optimizing] Improve x86 shifts""
Diffstat (limited to 'compiler/utils')
-rw-r--r-- | compiler/utils/x86/assembler_x86.cc | 70 | ||||
-rw-r--r-- | compiler/utils/x86/assembler_x86.h | 12 |
2 files changed, 13 insertions, 69 deletions
diff --git a/compiler/utils/x86/assembler_x86.cc b/compiler/utils/x86/assembler_x86.cc index f8bba07f84..51cc7acbd0 100644 --- a/compiler/utils/x86/assembler_x86.cc +++ b/compiler/utils/x86/assembler_x86.cc @@ -1285,62 +1285,32 @@ void X86Assembler::decl(const Address& address) { void X86Assembler::shll(Register reg, const Immediate& imm) { - EmitGenericShift(4, Operand(reg), imm); + EmitGenericShift(4, reg, imm); } void X86Assembler::shll(Register operand, Register shifter) { - EmitGenericShift(4, Operand(operand), shifter); -} - - -void X86Assembler::shll(const Address& address, const Immediate& imm) { - EmitGenericShift(4, address, imm); -} - - -void X86Assembler::shll(const Address& address, Register shifter) { - EmitGenericShift(4, address, shifter); + EmitGenericShift(4, operand, shifter); } void X86Assembler::shrl(Register reg, const Immediate& imm) { - EmitGenericShift(5, Operand(reg), imm); + EmitGenericShift(5, reg, imm); } void X86Assembler::shrl(Register operand, Register shifter) { - EmitGenericShift(5, Operand(operand), shifter); -} - - -void X86Assembler::shrl(const Address& address, const Immediate& imm) { - EmitGenericShift(5, address, imm); -} - - -void X86Assembler::shrl(const Address& address, Register shifter) { - EmitGenericShift(5, address, shifter); + EmitGenericShift(5, operand, shifter); } void X86Assembler::sarl(Register reg, const Immediate& imm) { - EmitGenericShift(7, Operand(reg), imm); + EmitGenericShift(7, reg, imm); } void X86Assembler::sarl(Register operand, Register shifter) { - EmitGenericShift(7, Operand(operand), shifter); -} - - -void X86Assembler::sarl(const Address& address, const Immediate& imm) { - EmitGenericShift(7, address, imm); -} - - -void X86Assembler::sarl(const Address& address, Register shifter) { - EmitGenericShift(7, address, shifter); + EmitGenericShift(7, operand, shifter); } @@ -1353,15 +1323,6 @@ void X86Assembler::shld(Register dst, Register src, Register shifter) { } -void X86Assembler::shld(Register dst, Register src, const Immediate& imm) { - AssemblerBuffer::EnsureCapacity ensured(&buffer_); - EmitUint8(0x0F); - EmitUint8(0xA4); - EmitRegisterOperand(src, dst); - EmitUint8(imm.value() & 0xFF); -} - - void X86Assembler::shrd(Register dst, Register src, Register shifter) { DCHECK_EQ(ECX, shifter); AssemblerBuffer::EnsureCapacity ensured(&buffer_); @@ -1371,15 +1332,6 @@ void X86Assembler::shrd(Register dst, Register src, Register shifter) { } -void X86Assembler::shrd(Register dst, Register src, const Immediate& imm) { - AssemblerBuffer::EnsureCapacity ensured(&buffer_); - EmitUint8(0x0F); - EmitUint8(0xAC); - EmitRegisterOperand(src, dst); - EmitUint8(imm.value() & 0xFF); -} - - void X86Assembler::negl(Register reg) { AssemblerBuffer::EnsureCapacity ensured(&buffer_); EmitUint8(0xF7); @@ -1663,28 +1615,28 @@ void X86Assembler::EmitLabelLink(Label* label) { void X86Assembler::EmitGenericShift(int reg_or_opcode, - const Operand& operand, + Register reg, const Immediate& imm) { AssemblerBuffer::EnsureCapacity ensured(&buffer_); CHECK(imm.is_int8()); if (imm.value() == 1) { EmitUint8(0xD1); - EmitOperand(reg_or_opcode, operand); + EmitOperand(reg_or_opcode, Operand(reg)); } else { EmitUint8(0xC1); - EmitOperand(reg_or_opcode, operand); + EmitOperand(reg_or_opcode, Operand(reg)); EmitUint8(imm.value() & 0xFF); } } void X86Assembler::EmitGenericShift(int reg_or_opcode, - const Operand& operand, + Register operand, Register shifter) { AssemblerBuffer::EnsureCapacity ensured(&buffer_); CHECK_EQ(shifter, ECX); EmitUint8(0xD3); - EmitOperand(reg_or_opcode, operand); + EmitOperand(reg_or_opcode, Operand(operand)); } static dwarf::Reg DWARFReg(Register reg) { diff --git a/compiler/utils/x86/assembler_x86.h b/compiler/utils/x86/assembler_x86.h index 37acb6ef16..f3675aeceb 100644 --- a/compiler/utils/x86/assembler_x86.h +++ b/compiler/utils/x86/assembler_x86.h @@ -429,20 +429,12 @@ class X86Assembler FINAL : public Assembler { void shll(Register reg, const Immediate& imm); void shll(Register operand, Register shifter); - void shll(const Address& address, const Immediate& imm); - void shll(const Address& address, Register shifter); void shrl(Register reg, const Immediate& imm); void shrl(Register operand, Register shifter); - void shrl(const Address& address, const Immediate& imm); - void shrl(const Address& address, Register shifter); void sarl(Register reg, const Immediate& imm); void sarl(Register operand, Register shifter); - void sarl(const Address& address, const Immediate& imm); - void sarl(const Address& address, Register shifter); void shld(Register dst, Register src, Register shifter); - void shld(Register dst, Register src, const Immediate& imm); void shrd(Register dst, Register src, Register shifter); - void shrd(Register dst, Register src, const Immediate& imm); void negl(Register reg); void notl(Register reg); @@ -627,8 +619,8 @@ class X86Assembler FINAL : public Assembler { void EmitLabelLink(Label* label); void EmitNearLabelLink(Label* label); - void EmitGenericShift(int rm, const Operand& operand, const Immediate& imm); - void EmitGenericShift(int rm, const Operand& operand, Register shifter); + void EmitGenericShift(int rm, Register reg, const Immediate& imm); + void EmitGenericShift(int rm, Register operand, Register shifter); DISALLOW_COPY_AND_ASSIGN(X86Assembler); }; |