<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class="">Interesting,</div><div class=""><br class=""></div><div class="">I don't think the document is in a shape for documentation that ships with llvm. Just some points:</div><div class=""><br class=""></div><div class="">- The document keeps jumping between general register allocation concepts, general llvm concepts and code snippets of llvms register allocators. It's hard to follow which is which.</div><div class="">- The basic concepts would need better and more in-depth descriptions, just to give some topics:</div><div class="">   - How does the basic program representation work, MachineInstr, MachineOperand (esp. the register kind with the undef, dead and kill flags), subregisters, subregisterindexes, register classes, how we express most constraints with register classes, virtual registers how register are encoded in unsigneds, a proper description of register units, what't does it mean if a register is reserved or allocatable, pristine registers, lanemasks, ...</div><div class="">   - How does the liveness representation work: What is a Segment, a VNInfo, a SlotIndex, how can we maintain SSA form in the liveness info (and why do we do that)</div><div class="">   - How do all the regalloc related passes in llvm play together: PhiElimination, TwoAddress, RegisterCoalescer, RegAllocXXX, VirtRegRewriter</div><div class=""><br class=""></div><div class="">On the other hand I applaud going through the work and actually writing something down, this will surely help other people who just want to get started with the matter. Maybe there is a way to get this up onto the llvm blog (who maintains that)?</div><div class=""><br class=""></div><div class="">- Matthias</div><div class=""><br class=""></div><div><blockquote type="cite" class=""><div class="">On Feb 9, 2016, at 6:18 PM, Sean Silva via llvm-commits <<a href="mailto:llvm-commits@lists.llvm.org" class="">llvm-commits@lists.llvm.org</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class="">Matthias, it's rare that we get a substantial piece of documentation like this. Can you take a look at the content?</div><div class="gmail_extra"><br class=""><div class="gmail_quote">On Fri, Feb 5, 2016 at 3:50 PM, Natanael Ramos via llvm-commits <span dir="ltr" class=""><<a href="mailto:llvm-commits@lists.llvm.org" target="_blank" class="">llvm-commits@lists.llvm.org</a>></span> wrote:<br class=""><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr" class=""><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">Hello<br class=""><br class=""></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">My name is Natanael Ramos, I'm a  student of bachelor degree on Computer Science Course, here on Brazil.<br class=""><br class=""></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">Recently I have worked with LLVM for my undergraduate thesis (I don't really know how is called in other countries, here is called <span lang="en" class=""><span class="">Completion of course work</span></span>), in my work I have implemented an register allocator using LLVM and have tested him with the built-in allocators in LLVM (Probably I'll publish a paper soon, if all goes as expected).<br class=""><br class=""></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">As another product of my work, I have created a tutorial of how to write an LLVM register allocator, extending the RegAllocBase interface, this tutorial is based on my understanding of the LLVM framework for working with the register allocation pass.<br class=""><br class=""></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">The tutorial have been written in reStructuredText following the LLVM instructions and orientations (<a href="http://www.llvm.org/docs/SphinxQuickstartTemplate.html" target="_blank" class="">http://www.llvm.org/docs/SphinxQuickstartTemplate.html</a>). As it's suggested, I'm sending the tutorial to this mailing list<span lang="en" class=""><span class=""> in order to</span> <span class="">contribute to the community</span> <span class="">of</span> <span class="">developers,</span> <span class="">which</span> <span class="">use</span> <span class="">LLLVM.<br class=""><br class=""></span></span></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><span lang="en" class=""><span class="">Any suggestions, please let me know.<span class="HOEnZb"><font color="#888888" class=""><br class=""></font></span></span></span></div><span class="HOEnZb"><font color="#888888" class=""><div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><span lang="en" class=""><span class=""></span></span></div><br class="">-- <br class=""><div class="">Natanael Ramos <br class="">Membro do corpo discente de Ciência da Computação pelo Instituto Federal de <br class="">Minas Gerais - Campus Formiga<br class=""><br class=""></div>
</font></span></div>
<br class="">_______________________________________________<br class="">
llvm-commits mailing list<br class="">
<a href="mailto:llvm-commits@lists.llvm.org" class="">llvm-commits@lists.llvm.org</a><br class="">
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank" class="">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br class="">
<br class=""></blockquote></div><br class=""></div>
_______________________________________________<br class="">llvm-commits mailing list<br class=""><a href="mailto:llvm-commits@lists.llvm.org" class="">llvm-commits@lists.llvm.org</a><br class="">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits<br class=""></div></blockquote></div><br class=""></body></html>