llvm-6502/lib/CodeGen
Chris Lattner 07cf14112d Physregs may hold multiple stack slot values at the same time. Keep track
of this, and use it to our advantage (bwahahah).  This allows us to eliminate another
60 instructions from smg2000 on PPC (probably significantly more on X86).  A common
old-new diff looks like this:

        stw r2, 3304(r1)
-       lwz r2, 3192(r1)
        stw r2, 3300(r1)
-       lwz r2, 3192(r1)
        stw r2, 3296(r1)
-       lwz r2, 3192(r1)
        stw r2, 3200(r1)
-       lwz r2, 3192(r1)
        stw r2, 3196(r1)
-       lwz r2, 3192(r1)
+       or r2, r2, r2
        stw r2, 3188(r1)

and

-       lwz r31, 604(r1)
-       lwz r13, 604(r1)
-       lwz r14, 604(r1)
-       lwz r15, 604(r1)
-       lwz r16, 604(r1)
-       lwz r30, 604(r1)
+       or r31, r30, r30
+       or r13, r30, r30
+       or r14, r30, r30
+       or r15, r30, r30
+       or r16, r30, r30
+       or r30, r30, r30

Removal of the R = R copies is coming next...


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25919 91177308-0d34-0410-b5e6-96231b3b80d8
2006-02-03 00:36:31 +00:00
..
SelectionDAG Turn any_extend nodes into zero_extend nodes when it allows us to remove an 2006-02-02 07:17:31 +00:00
AsmPrinter.cpp Implement smart printing of inline asm strings, handling variants and 2006-02-01 22:41:11 +00:00
BranchFolding.cpp Remove trailing whitespace 2005-04-21 22:36:52 +00:00
DwarfWriter.cpp Using bit size of integers instead of ambiguous "long" et all. 2006-01-27 20:31:25 +00:00
ELFWriter.cpp add these so I can be less naughty 2005-12-28 06:29:02 +00:00
IntrinsicLowering.cpp For PR411: 2006-01-16 21:12:35 +00:00
LiveInterval.cpp Fix LiveInterval::getOverlapingRanges to take things in the right order 2005-10-21 06:41:30 +00:00
LiveIntervalAnalysis.cpp Add explicit #includes of <iostream> 2006-01-22 23:41:00 +00:00
LiveVariables.cpp Add a LiveVariables::VarInfo::dump method 2006-01-04 05:40:30 +00:00
MachineBasicBlock.cpp Remove trailing whitespace 2005-04-21 22:36:52 +00:00
MachineCodeEmitter.cpp mixed-STL programs are big and nasty :( 2005-12-28 02:44:35 +00:00
MachineDebugInfo.cpp Fix build error that is apparently only a warning with some compilers. 2006-01-27 17:31:30 +00:00
MachineFunction.cpp Allow the specification of explicit alignments for constant pool entries. 2006-01-31 22:23:14 +00:00
MachineInstr.cpp Remove trailing whitespace 2005-04-21 22:36:52 +00:00
Makefile Change Library Names Not To Conflict With Others When Installed 2004-10-27 23:18:45 +00:00
Passes.cpp Alkis agrees that that iterative scan allocator isn't going to be worked on 2005-10-24 04:14:30 +00:00
PHIElimination.cpp Add support for targets (like Alpha) that have terminator instructions which 2006-01-04 07:12:21 +00:00
PhysRegTracker.h Improved PhysRegTracker interface. RegAlloc lazily allocates the register tracker using a std::auto_ptr 2004-02-23 06:10:13 +00:00
PrologEpilogInserter.cpp Always compute max align. 2005-11-06 17:43:20 +00:00
RegAllocLinearScan.cpp Add explicit #includes of <iostream> 2006-01-22 23:41:00 +00:00
RegAllocLocal.cpp Add explicit #includes of <iostream> 2006-01-22 23:41:00 +00:00
RegAllocSimple.cpp Add explicit #includes of <iostream> 2006-01-22 23:41:00 +00:00
TwoAddressInstructionPass.cpp Add explicit #includes of <iostream> 2006-01-22 23:41:00 +00:00
UnreachableBlockElim.cpp Remove trailing whitespace 2005-04-21 22:36:52 +00:00
VirtRegMap.cpp Physregs may hold multiple stack slot values at the same time. Keep track 2006-02-03 00:36:31 +00:00
VirtRegMap.h Remove trailing whitespace 2005-04-21 22:36:52 +00:00