diff options
author | Manman Ren <mren@apple.com> | 2012-06-01 19:49:33 +0000 |
---|---|---|
committer | Manman Ren <mren@apple.com> | 2012-06-01 19:49:33 +0000 |
commit | 73c2f7f5ed767a6fc062fd198551be902b7b7d5b (patch) | |
tree | 0e7ddc57a166cd5f076eac14c404412061d88d0f /lib/Target/X86/X86InstrInfo.h | |
parent | 68f25571e759c1fcf2da206109647259f49f7416 (diff) | |
download | llvm-73c2f7f5ed767a6fc062fd198551be902b7b7d5b.tar.gz llvm-73c2f7f5ed767a6fc062fd198551be902b7b7d5b.tar.bz2 llvm-73c2f7f5ed767a6fc062fd198551be902b7b7d5b.tar.xz |
X86: peephole optimization to remove cmp instruction
This patch will optimize the following:
sub r1, r3
cmp r3, r1 or cmp r1, r3
bge L1
TO
sub r1, r3
bge L1 or ble L1
If the branch instruction can use flag from "sub", then we can eliminate
the "cmp" instruction.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157831 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/X86/X86InstrInfo.h')
-rw-r--r-- | lib/Target/X86/X86InstrInfo.h | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/lib/Target/X86/X86InstrInfo.h b/lib/Target/X86/X86InstrInfo.h index 088c49f629..8289d437b7 100644 --- a/lib/Target/X86/X86InstrInfo.h +++ b/lib/Target/X86/X86InstrInfo.h @@ -367,6 +367,12 @@ public: virtual bool OptimizeSubInstr(MachineInstr *SubInstr, const MachineRegisterInfo *MRI) const; + virtual bool AnalyzeCompare(const MachineInstr *MI, unsigned &SrcReg, + int &CmpMask, int &CmpValue) const; + virtual bool OptimizeCompareInstr(MachineInstr *CmpInstr, unsigned SrcReg, + int CmpMask, int CmpValue, + const MachineRegisterInfo *MRI) const; + private: MachineInstr * convertToThreeAddressWithLEA(unsigned MIOpc, MachineFunction::iterator &MFI, |