llvm-6502/lib/CodeGen/SelectionDAG
Chris Lattner 53fbf2a8e8 As a pending queue data structure to keep track of instructions whose
operands have all issued, but whose results are not yet available.  This
allows us to compile:

int G;
int test(int A, int B, int* P) {
   return (G+A)*(B+1);
}

to:

_test:
        lis r2, ha16(L_G$non_lazy_ptr)
        addi r4, r4, 1
        lwz r2, lo16(L_G$non_lazy_ptr)(r2)
        lwz r2, 0(r2)
        add r2, r2, r3
        mullw r3, r2, r4
        blr

instead of this, which has a stall between the lis/lwz:

_test:
        lis r2, ha16(L_G$non_lazy_ptr)
        lwz r2, lo16(L_G$non_lazy_ptr)(r2)
        addi r4, r4, 1
        lwz r2, 0(r2)
        add r2, r2, r3
        mullw r3, r2, r4
        blr


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26716 91177308-0d34-0410-b5e6-96231b3b80d8
2006-03-12 00:38:57 +00:00
..
DAGCombiner.cpp Reinstate this now that the offending opposite xform has been removed. 2006-03-05 19:53:55 +00:00
LegalizeDAG.cpp revert the previous patch, didn't mean to check it in yet 2006-03-08 04:39:05 +00:00
Makefile Change Library Names Not To Conflict With Others When Installed 2004-10-27 23:18:45 +00:00
ScheduleDAG.cpp Move some simple-sched-specific instance vars to the simple scheduler. 2006-03-10 07:42:02 +00:00
ScheduleDAGList.cpp As a pending queue data structure to keep track of instructions whose 2006-03-12 00:38:57 +00:00
ScheduleDAGSimple.cpp Move simple-selector-specific types to the simple selector. 2006-03-10 07:51:18 +00:00
SelectionDAG.cpp Don't depend on the C99 copysign function, implement it ourselves. 2006-03-05 23:57:58 +00:00
SelectionDAGISel.cpp Added a parameter to control whether Constant::getStringValue() would chop 2006-03-10 23:52:03 +00:00
SelectionDAGPrinter.cpp print arbitrary constant pool entries 2006-03-05 09:38:03 +00:00
TargetLowering.cpp Do not fold (add (shl x, c1), (shl c2, c1)) -> (shl (add x, c2), c1), 2006-03-05 19:52:57 +00:00