diff options
| author | Evan Cheng <evan.cheng@apple.com> | 2010-07-25 18:59:43 +0000 |
|---|---|---|
| committer | Evan Cheng <evan.cheng@apple.com> | 2010-07-25 18:59:43 +0000 |
| commit | 8ae3ecad2bbf6449111e863625c25b190c15cf6a (patch) | |
| tree | d168fb4bb8fb52b6d13dda59a847b431ac6c9b25 /llvm/lib | |
| parent | 29b8e3d91c04de69e01c9392d994a1bd698a54ed (diff) | |
| download | bcm5719-llvm-8ae3ecad2bbf6449111e863625c25b190c15cf6a.tar.gz bcm5719-llvm-8ae3ecad2bbf6449111e863625c25b190c15cf6a.zip | |
Add comments.
llvm-svn: 109383
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp b/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp index 25e5b0ee4c0..cb69314348b 100644 --- a/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp @@ -965,7 +965,8 @@ namespace { template<class SF> class RegReductionPriorityQueue; - /// Sorting functions for the Available queue. + /// bu_ls_rr_sort - Priority function for bottom up register pressure + // reduction scheduler. struct bu_ls_rr_sort : public std::binary_function<SUnit*, SUnit*, bool> { RegReductionPriorityQueue<bu_ls_rr_sort> *SPQ; bu_ls_rr_sort(RegReductionPriorityQueue<bu_ls_rr_sort> *spq) : SPQ(spq) {} @@ -974,6 +975,8 @@ namespace { bool operator()(const SUnit* left, const SUnit* right) const; }; + // td_ls_rr_sort - Priority function for top down register pressure reduction + // scheduler. struct td_ls_rr_sort : public std::binary_function<SUnit*, SUnit*, bool> { RegReductionPriorityQueue<td_ls_rr_sort> *SPQ; td_ls_rr_sort(RegReductionPriorityQueue<td_ls_rr_sort> *spq) : SPQ(spq) {} @@ -982,6 +985,7 @@ namespace { bool operator()(const SUnit* left, const SUnit* right) const; }; + // src_ls_rr_sort - Priority function for source order scheduler. struct src_ls_rr_sort : public std::binary_function<SUnit*, SUnit*, bool> { RegReductionPriorityQueue<src_ls_rr_sort> *SPQ; src_ls_rr_sort(RegReductionPriorityQueue<src_ls_rr_sort> *spq) @@ -992,6 +996,7 @@ namespace { bool operator()(const SUnit* left, const SUnit* right) const; }; + // hybrid_ls_rr_sort - Priority function for hybrid scheduler. struct hybrid_ls_rr_sort : public std::binary_function<SUnit*, SUnit*, bool> { RegReductionPriorityQueue<hybrid_ls_rr_sort> *SPQ; hybrid_ls_rr_sort(RegReductionPriorityQueue<hybrid_ls_rr_sort> *spq) @@ -1002,6 +1007,8 @@ namespace { bool operator()(const SUnit* left, const SUnit* right) const; }; + // ilp_ls_rr_sort - Priority function for ILP (instruction level parallelism) + // scheduler. struct ilp_ls_rr_sort : public std::binary_function<SUnit*, SUnit*, bool> { RegReductionPriorityQueue<ilp_ls_rr_sort> *SPQ; ilp_ls_rr_sort(RegReductionPriorityQueue<ilp_ls_rr_sort> *spq) @@ -1313,7 +1320,9 @@ namespace { } } - if (SU->NumSuccs && N->getOpcode() != ISD::CopyToReg) { + // Check for isMachineOpcode() as PrescheduleNodesWithMultipleUses() + // may transfer data dependencies to CopyToReg. + if (SU->NumSuccs && N->isMachineOpcode()) { unsigned NumDefs = TII->get(N->getMachineOpcode()).getNumDefs(); for (unsigned i = 0; i != NumDefs; ++i) { EVT VT = N->getValueType(i); @@ -1394,7 +1403,9 @@ namespace { } } - if (SU->NumSuccs && N->getOpcode() != ISD::CopyToReg) { + // Check for isMachineOpcode() as PrescheduleNodesWithMultipleUses() + // may transfer data dependencies to CopyToReg. + if (SU->NumSuccs && N->isMachineOpcode()) { unsigned NumDefs = TII->get(N->getMachineOpcode()).getNumDefs(); for (unsigned i = NumDefs, e = N->getNumValues(); i != e; ++i) { EVT VT = N->getValueType(i); @@ -1609,7 +1620,8 @@ bool ilp_ls_rr_sort::operator()(const SUnit *left, else if (LExcess < RExcess) return false; } else { - // Low register pressure situation, schedule for ILP. + // Low register pressure situation, schedule to maximize instruction level + // parallelism. if (left->NumPreds > right->NumPreds) return false; else if (left->NumPreds < right->NumPreds) |

