llvm-6502/lib/CodeGen
Chris Lattner cfa0f2edd3 Make the 2-address instruction lowering pass smarter in two ways:
1. If we are two-addressing a commutable instruction and the LHS is not the
   last use of the variable, see if the instruction is the last use of the
   RHS.  If so, commute the instruction, allowing us to avoid a
   register-register copy in many cases for common instructions like ADD, OR,
   AND, etc on X86.
2. If #1 doesn't hold, and if this is an instruction that also existing in
   3-address form, promote the instruction to a 3-address instruction to
   avoid the register-register copy.  We can do this for several common
   instructions in X86, including ADDrr, INC, DEC, etc.

This patch implements test/Regression/CodeGen/X86/commute-two-addr.ll,
overlap-add.ll, and overlap-shift.ll when I check in the X86 support for it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19245 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-02 02:34:12 +00:00
..
SelectionDAG
AsmPrinter.cpp
BranchFolding.cpp
IntrinsicLowering.cpp
LiveInterval.cpp Prevent accessing past the end of the intervals vector, this fixes 2004-12-04 01:22:09 +00:00
LiveInterval.h
LiveIntervalAnalysis.cpp For PR387:\ 2004-12-07 04:03:45 +00:00
LiveIntervalAnalysis.h For PR387:\ 2004-12-07 04:03:45 +00:00
LiveVariables.cpp
MachineBasicBlock.cpp
MachineCodeEmitter.cpp
MachineFunction.cpp
MachineInstr.cpp
Makefile
Passes.cpp
PHIElimination.cpp
PhysRegTracker.h
PrologEpilogInserter.cpp
RegAllocIterativeScan.cpp Move virtual method call out of loop 2004-12-15 07:04:32 +00:00
RegAllocLinearScan.cpp Move virtual method call out of loop 2004-12-15 07:04:32 +00:00
RegAllocLocal.cpp
RegAllocSimple.cpp
TwoAddressInstructionPass.cpp Make the 2-address instruction lowering pass smarter in two ways: 2005-01-02 02:34:12 +00:00
UnreachableBlockElim.cpp
VirtRegMap.cpp
VirtRegMap.h