[llvm-bugs] machine scheduler bug

James Molloy via llvm-bugs llvm-bugs at lists.llvm.org
Mon Nov 16 08:08:01 PST 2015


Hi Alex,

The correct list for this is llvm-dev at lists.llvm<mailto:llvm-dev at lists.llvm>.org. I’d CC them but it’s probably best you just re-send your email there so it arrives with full context.

James
On 16 Nov 2015, at 11:04, Alex Turjan via llvm-bugs <llvm-bugs at lists.llvm.org<mailto:llvm-bugs at lists.llvm.org>> wrote:


Hi all,

I'm currently building a vliw port based on a llvm 3.5.0 from 2014, where I have enabled the MachineScheduler to run bottom up.

I see that there is an issue with respect to the moment when instructions move from pending to ready.

Namely instructions which should still be pending become ready too earlysuch that I end up with true dependent instructions being issued at the same cycle.I think the issue comes from ScheduleDAGMILive::schedule() function.

Inside it the updating of the queues happens before SchedImpl->schedNode(SU, IsTopNode) is being called while should have happened after.

See bellow the code fragment where perhaps the call from 1020 should be after line 1032:

1020: updateQueues(SU, IsTopNode);

   if (DFSResult) {

   unsigned SubtreeID = DFSResult->getSubtreeID(SU);

   if (!ScheduledTrees.test(SubtreeID)) {

      ScheduledTrees.set(SubtreeID);

      DFSResult->scheduleTree(SubtreeID);

      SchedImpl->scheduleTree(SubtreeID);

   }

}

// Notify the scheduling strategy after updating the DAG.

1032: SchedImpl->schedNode(SU, IsTopNode);


The MachineScheduler.cpp file that I use in my port you can see here:http://llvm.org/viewvc/llvm-project/llvm/branches/release_35/lib/CodeGen/MachineScheduler.cpp?revision=215011&view=markup

For oo machines the issue that I observe wont trigger a bug but in my case as im porting llvmto a vliw (where i produce bundles) instructions becoming ready too early leads to incorrect code. However for oo machines I think this issue may induce a performance
loss as less instructions that can be issued in parallel endup up next to each other.


thanks,

Alex

_______________________________________________
llvm-bugs mailing list
llvm-bugs at lists.llvm.org<mailto:llvm-bugs at lists.llvm.org>
http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs


________________________________

-- IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20151116/807adf4f/attachment.html>


More information about the llvm-bugs mailing list