[LLVMdev] Scheduler Roadmap

Andrew Trick atrick at apple.com
Fri May 11 12:13:24 PDT 2012


Thanks for helping explain the infrastructure. One ammendment...

On May 11, 2012, at 11:28 AM, Sergei Larin <slarin at codeaurora.org> wrote:
> [Larin, Sergei] Kind of. Once bundles are finalized, bundle header become a
> new "super instructions", and if a pass does not need to look at individual
> (MI) instructions, there will not be any difference for it. But if a pass
> need to deal with individual MIs, things get interesting. For one, we lack
> API for moving/adding/removing individual MIs to/from finalized bundles. We
> also lack API to move MIs between BBs in presence of bundles. Live Intervals
> obviously do not work with bundles... 
>  Two, semantics (dependencies) within a bundle are parallel (think { r0 =
> r1; r1 = r0 } in serial vs. parallel semantics) and if a pass needs to
> "understand" it, it will need to be "taught" how to do it. This is where
> incremental rebundling might come in handy. Fortunately we currently do
> bundling fairly late, so it is not an issue yet.

LiveIntervals should work for your bundles by giving each instruction in the bundle the same slot index. Regalloc should do the right thing. There's a proof-of-concept API in LiveIntervalAnalyses, handleMoveIntoBundle(), that you should try to use. As I was saying in my last message, we may want to improve that API as you actually start testing it.

-Andy
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20120511/d37d45f9/attachment.html>


More information about the llvm-dev mailing list