summaryrefslogtreecommitdiffstats
path: root/compiler/utils
diff options
context:
space:
mode:
authorNicolas Geoffray <ngeoffray@google.com>2015-04-10 21:40:59 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2015-04-10 21:41:00 +0000
commit1b743777e6b6cec3387b0ee347b6a8a03779c345 (patch)
tree036c42dbf10d8c75de1326e16406a12191c704ce /compiler/utils
parentcf69f8163d700be29a1732e7e229101c67a51803 (diff)
parentf9aac1e9f442c2486cd54f045d43e15791601205 (diff)
downloadandroid_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.cc70
-rw-r--r--compiler/utils/x86/assembler_x86.h12
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);
};