<div dir="ltr"><div class="gmail_quote"><div dir="ltr"><div><p>Hi everyone,</p>
<p>I want to implement a modulo scheduling algorithm for a my VLIW backend and I would like to have your opinion about the best approach to do so.</p><p>I saw an early post which Jakob Stoklund Olesen suggested to implement the MS before LiveVariables/LiveIntervals/SlotIndex Passes, so I think I should take his advice. However, I want to try to reuse most of the work inside the framework to build the data dependence graph (DDG) for a Basic Block (loop in this case), therefore I was thinking on using the ScheduleDAGInstr Class to create that DAG with the SUnits for the instructions, because I would be able to have information about depth and height of each instruction on the BB. The problem is that the ScheduleDAGInstr class requires the LiveIntervals information in order to build the DAG associated with BB (when in PreRegAlloc)</p>
<ol>
<li>Is there any classes inside LLVM in order to create a Data Dependence Graph which does not require the use of LiveIntervals, and still work in the SSA form?</li><li>Is addMachineSSAOptimization the best option to place the aforementioned MS pass?</li><li>Any other advice that might help me with the implementation?</li></ol>
<p><br></p><p>Thank you in advance,</p>
<p>Tiago</p></div><span class="HOEnZb"><font color="#888888">-- <br><div><div dir="ltr"><div dir="ltr"><div style="color:rgb(136,136,136);font-family:arial,sans-serif;font-size:12.7273px;background-color:rgb(255,255,255)">Tiago Trevisan Jost<br></div></div></div></div>
</font></span></div>
</div><br>
</div>