summaryrefslogtreecommitdiffstats
path: root/compiler/utils/x86/assembler_x86.h
diff options
context:
space:
mode:
authorMark P Mendell <mark.p.mendell@intel.com>2015-04-29 14:56:17 +0000
committerMark P Mendell <mark.p.mendell@intel.com>2015-05-04 14:14:32 +0000
commit7394569c9252b277710b2d7d3fc35fb0dd48fc4b (patch)
tree9ce2241c95d93e873c45416a2d17e2c4084d220b /compiler/utils/x86/assembler_x86.h
parent8a30bf23bcb1ad8d4ed9060ddbb27edbfd57a897 (diff)
downloadandroid_art-7394569c9252b277710b2d7d3fc35fb0dd48fc4b.tar.gz
android_art-7394569c9252b277710b2d7d3fc35fb0dd48fc4b.tar.bz2
android_art-7394569c9252b277710b2d7d3fc35fb0dd48fc4b.zip
Revert "Revert "Revert "Revert "[optimizing] Improve x86 shifts""""
This reverts commit 2a7a1d7808f003bea908023ebd11eb442d2fca39. Fix the problem that a long long >> 63 got the wrong answer. The problem was that a shr was used instead of a sar. Change-Id: I0327f79c718016ddec9272a605fc50ec15ec4566
Diffstat (limited to 'compiler/utils/x86/assembler_x86.h')
-rw-r--r--compiler/utils/x86/assembler_x86.h12
1 files changed, 10 insertions, 2 deletions
diff --git a/compiler/utils/x86/assembler_x86.h b/compiler/utils/x86/assembler_x86.h
index 7fc8ef0815..946c96de71 100644
--- a/compiler/utils/x86/assembler_x86.h
+++ b/compiler/utils/x86/assembler_x86.h
@@ -430,12 +430,20 @@ 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);
@@ -620,8 +628,8 @@ class X86Assembler FINAL : public Assembler {
void EmitLabelLink(Label* label);
void EmitNearLabelLink(Label* label);
- void EmitGenericShift(int rm, Register reg, const Immediate& imm);
- void EmitGenericShift(int rm, Register operand, Register shifter);
+ void EmitGenericShift(int rm, const Operand& operand, const Immediate& imm);
+ void EmitGenericShift(int rm, const Operand& operand, Register shifter);
DISALLOW_COPY_AND_ASSIGN(X86Assembler);
};