<div dir="ltr"><div>Thanks. That is useful but I am too immature to even get it kick started. I am a beginner and I would like first understand what files I need to change to build my scheduler. Just a simple scheduler and one step at a time. I am reading Tanya's MS thesis about SMS but I am not sure if SchedInfo is right way now. Moreover, what role TargetSchedule.t play? We need a beginner guide to leverage LLVM's scheduler infra.</div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Apr 27, 2021 at 1:31 AM Krzysztof Parzyszek via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">





<div style="overflow-wrap: break-word;" lang="EN-US">
<div class="gmail-m_-7441965275631383922WordSection1">
<p class="MsoNormal">The way we do it for Hexagon is that we have our own specialization of the MachineScheduler pass, followed by a packetizer pass.  Actually, we run two schedulers: machine scheduler, and post-RA scheduler, but that doesn’t change much conceptually. 
 In the scheduler passes we don’t form instruction packets, at least not explicitly.  We do some sort of a simulation of “what if we were forming packets right now” type of thing, maximizing packetization opportunities ahead of time, before the packetization
 itself, hoping that enough of it will prevail.<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">Finally, near the end of the post-RA passes we do run the DFAPacketizer pass which forms the actual packets (i.e. “bundles” in LLVM terminology).  The DFA packetizer relies on tables that are generated out of your target’s td files describing
 your processor’s resources (some of which the standard scheduler uses as well).<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">If you’re starting from scratch, I’d get the packetizer working first.<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal"><span style="font-size:9pt;font-family:Consolas">-- </span>
<span style="font-size:9pt;font-family:Consolas"><u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8pt;font-family:Consolas">Krzysztof Parzyszek 
<a href="mailto:kparzysz@quicinc.com" target="_blank"><span style="color:rgb(5,99,193)">kparzysz@quicinc.com</span></a>   AI tools development<u></u><u></u></span></p>
<p class="MsoNormal"><u></u> <u></u></p>
<div style="border-color:rgb(225,225,225) currentcolor currentcolor;border-style:solid none none;border-width:1pt medium medium;padding:3pt 0in 0in">
<p class="MsoNormal"><b>From:</b> llvm-dev <<a href="mailto:llvm-dev-bounces@lists.llvm.org" target="_blank">llvm-dev-bounces@lists.llvm.org</a>> <b>On Behalf Of
</b>jeniffer lesley via llvm-dev<br>
<b>Sent:</b> Monday, April 26, 2021 1:33 PM<br>
<b>To:</b> llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>><br>
<b>Subject:</b> [EXT] [llvm-dev] How to get started with VLIW scheduler?<u></u><u></u></p>
</div>
<p class="MsoNormal"><u></u> <u></u></p>
<div>
<div>
<p class="MsoNormal">Hi,<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">I am building a toy target to teach at a university but I am not well aware of LLVM's scheduler infrastructure. My target is VLIW, 1 Load, 1 Store and 2 ALUs. ALUs can perform almost all common mathematical operations.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">Where do I start building a scheduler for it? I watched a couple of videos from the LLVM dev meeting but what is the current way of building a new scheduler? Is there a .rst page out there which I missed reading?<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">Thanks.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">Jeni.<u></u><u></u></p>
</div>
</div>
</div>
</div>

_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a><br>
<a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><br>
</blockquote></div>