diff options
author | Mark P Mendell <mark.p.mendell@intel.com> | 2015-04-29 14:56:17 +0000 |
---|---|---|
committer | Mark P Mendell <mark.p.mendell@intel.com> | 2015-05-04 14:14:32 +0000 |
commit | 7394569c9252b277710b2d7d3fc35fb0dd48fc4b (patch) | |
tree | 9ce2241c95d93e873c45416a2d17e2c4084d220b /compiler/utils/x86/assembler_x86.h | |
parent | 8a30bf23bcb1ad8d4ed9060ddbb27edbfd57a897 (diff) | |
download | android_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.h | 12 |
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); }; |