Displaying 7 results from an estimated 7 matches for "preschedulenodeswithmultipleuses".
2013 Aug 21
2
[LLVMdev] PrescheduleNodesWithMultipleUses() causing failure in PickNodeToScheduleBottomUp() ???
Hi,
I have reasoned through and believe the problem is with the PrescheduleNodesWithMultipleUses.
Take the following DAG (arrow to predecessor):
Destroy Destroy
^ ^
| |
| |
SetUp----->PredSU <-----SU
^ ^ ^
| | |
| | |
-----------...
2013 Aug 21
0
[LLVMdev] PrescheduleNodesWithMultipleUses() causing failure in PickNodeToScheduleBottomUp() ???
Here is a bit more data.
After PrescheduleNodesWithMultipleUses has been run, the following Predecessor/Successor links are 'dumpAll'ed.
(I attach the full dumpAll before & after "Prescheduling SU #7 next to PredSU #4 to guide scheduling in the presence of multiple uses")
SU(3)
Predecessors:
val SU(5): Latency=1
ch SU(7): Latency...
2013 Aug 20
2
[LLVMdev] PrescheduleNodesWithMultipleUses() causing failure in PickNodeToScheduleBottomUp() ???
...::TargetRegisterClass* llvm::TargetRegisterInfo::getMinimalPhysRegClass(unsigned int, llvm::EVT) const: Assertion `BestRC && "Couldn't find the register class"' failed.
The interesting thing about this failure is that the Predecessor/Successor of two nodes was changed by PrescheduleNodesWithMultipleUses().
If they were not, the AvailableQueue would have had nodes, and all would have been fine.
I am quite uneasy over how PrescheduleNodesWithMultipleUses() has changed the Predecessor/Successor.
It seems to have changed the DAG into something impossible to schedule - I need to look more carefully to...
2013 Aug 22
0
[LLVMdev] PrescheduleNodesWithMultipleUses() causing failure in PickNodeToScheduleBottomUp() ???
...'Destroy' & 'SetUp' the wrong way around!
Robert
________________________________
From: llvmdev-bounces at cs.uiuc.edu [llvmdev-bounces at cs.uiuc.edu] on behalf of Robert Lytton [robert at xmos.com]
Sent: 21 August 2013 18:34
To: llvmdev at cs.uiuc.edu
Subject: Re: [LLVMdev] PrescheduleNodesWithMultipleUses() causing failure in PickNodeToScheduleBottomUp() ???
Hi,
I have reasoned through and believe the problem is with the PrescheduleNodesWithMultipleUses.
Take the following DAG (arrow to predecessor):
Destroy Destroy
^ ^
| |
|...
2013 Aug 22
0
[LLVMdev] PrescheduleNodesWithMultipleUses() causing failure in PickNodeToScheduleBottomUp() ???
On Thu, Aug 22, 2013 at 4:15 AM, Robert Lytton <robert at xmos.com> wrote:
>
>
> Outstanding issues
> ============
>
> 1. Is it too aggressive in searching predecessors and successors?
> Should the algorithm give up and assume the worst if the depth of
> search reaches a predefined limit?
>
> 2. Should the initial search for 'SetUp1' and
2013 Aug 21
1
[LLVMdev] PrescheduleNodesWithMultipleUses() probable mistake.
...Unit.
Robert
diff --git a/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp b/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp
index f5fe168..6e888da
--- a/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp
+++ b/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp
@@ -2850,7 +2850,7 @@ void RegReductionPQBase::PrescheduleNodesWithMultipleUses() {
continue;
// Avoid prescheduling to copies from virtual registers, which don't behave
// like other nodes from the perspective of scheduling heuristics.
- if (SDNode *N = SU->getNode())
+ if (SDNode *N = PredSU->getNode())
if (N->getOpcode() == ISD::Co...
2013 Aug 22
2
[LLVMdev] PrescheduleNodesWithMultipleUses() causing failure in PickNodeToScheduleBottomUp() ???
Hi
I have brought everything together in this email.
The problem
========
Take the following DAG (arrow to predecessor):
SetUp2 SetUp1
^ ^
| |
| |
Destroy2---->PredSU <----SU
^ ^ ^
| | |
| | |
----------- | ---------