<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="">Hi,<div class=""><br class=""></div><div class="">They made a documentation in that direction, this is still on going progress and we try to keep it current:</div><div class=""> <a href="http://llvm.org/docs/GlobalISel.html" class="">http://llvm.org/docs/GlobalISel.html</a></div><div class=""><br class=""></div><div class="">We plan to do a guide for targeting GISel, but we want the framework to settle a bit before starting to write that down.</div><div class=""><br class=""></div><div class="">Don’t hesitate to ask question around.</div><div class=""><br class=""></div><div class="">Cheers,</div><div class="">-Quentin<br class=""><div><blockquote type="cite" class=""><div class="">On Jan 21, 2017, at 2:37 AM, Nemanja Ivanovic <<a href="mailto:nemanja.i.ibm@gmail.com" class="">nemanja.i.ibm@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class="">Quentin, do you have some links you can share for guidance for those that might want to jump in to start preparing other targets for Global ISEL?<br class=""></div><div class="gmail_extra"><br class=""><div class="gmail_quote">On Sat, Jan 21, 2017 at 2:19 AM, Quentin Colombet via llvm-dev <span dir="ltr" class=""><<a href="mailto:llvm-dev@lists.llvm.org" target="_blank" class="">llvm-dev@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">Hi all,<br class="">
<br class="">
Following the thread from <a href="http://lists.llvm.org/pipermail/llvm-dev/2017-January/109029.html" rel="noreferrer" target="_blank" class="">http://lists.llvm.org/<wbr class="">pipermail/llvm-dev/2017-<wbr class="">January/109029.html</a>, I am sending this email to give a status on GlobalISel progress and situation.<br class="">
<br class="">
We are pushing GlobalISel from the state of prototype to a production quality framework. We welcome help with patches, reviews, feedbacks and so on.<br class="">
<br class="">
As explained during the last developer meeting, we are aiming at enabling GISel by default for AArch64 at -O0 for this year (See <a href="http://llvm.org/devmtg/2016-11/#talk16" rel="noreferrer" target="_blank" class="">http://llvm.org/devmtg/2016-<wbr class="">11/#talk16</a>).<br class="">
<br class="">
Note: That does not mean the design is settle nor that we won’t change the APIs.<br class="">
Note: A lot of the things listed in this email is a reminder of what we said during the dev meeting talk.<br class="">
<br class="">
*** High Level View ***<br class="">
<br class="">
As of r292481, we compile and run correctly with GISel (without fall back to SDISel) 63% of the LLVM test suite. If you are interested in detailed numbers, please see the attachments (courtesy of Kristof Beyls).<br class="">
<br class="">
Note: The compile time numbers are probably noisy (compiled in parallel on the same machine), and not relevant at this point of the project anyway.<br class="">
<br class="">
<br class="">
*** Per Pass Status ***<br class="">
<br class="">
** IRTranslator **<br class="">
<br class="">
Mostly done.<br class="">
<br class="">
* What’s Left? *<br class="">
<br class="">
Some instructions are not yet supported.<br class="">
<br class="">
<br class="">
** Legalizer **<br class="">
<br class="">
Core logic is present.<br class="">
<br class="">
* What’s Left? *<br class="">
<br class="">
- A lot of instructions are missing, in particular the vector ones.<br class="">
- Legalization of G_SEQUENCE/G_EXTRACT still up in the air for complex cases.<br class="">
<br class="">
Note: The lack of broad vector support is one on the reason we target O0, i.e., the vectorizer doesn’t run and we are less likely to hit the missing implementation.<br class="">
<br class="">
<br class="">
** RegBankSelect **<br class="">
<br class="">
- Core logic is present, no optimizations yet, or more accurately, the greedy mode is still pretty silly.<br class="">
- TableGen support for RegisterBanks description.<br class="">
<br class="">
* What’s Left *<br class="">
<br class="">
- TableGen the instruction mapping from the existing SDISel patterns.<br class="">
- Improve the optimization heuristic.<br class="">
<br class="">
<br class="">
** InstructionSelect **<br class="">
<br class="">
- Core logic present.<br class="">
- TableGen support for simple SDISel patterns (i.e., GISel reuses SDISel patterns)<br class="">
<br class="">
* What’s Left *<br class="">
<br class="">
- Teach TableGen how to reuse more complex patterns:<br class="">
— Patterns with combines in them (e.g., (mull (add)) => madd)<br class="">
— Patterns with complex patterns (e.g., SelectAddressModXR0)<br class="">
<br class="">
<br class="">
*** On Going Work ***<br class="">
<br class="">
- General approach: use AArch64 O0 on the LLVM test suite as a driving vehicle to guide what to support next in the various passes.<br class="">
- Extend TableGen support to reuse more and more SDISel patterns.<br class="">
- ARM port.<br class="">
- AMDGPU port.<br class="">
- X86 port.<br class="">
<br class="">
If you have questions, don’t hesitate!<br class="">
<br class="">
Cheers,<br class="">
-Quentin<br class="">
<br class="">______________________________<wbr class="">_________________<br class="">
LLVM Developers mailing list<br class="">
<a href="mailto:llvm-dev@lists.llvm.org" class="">llvm-dev@lists.llvm.org</a><br class="">
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank" class="">http://lists.llvm.org/cgi-bin/<wbr class="">mailman/listinfo/llvm-dev</a><br class="">
<br class=""></blockquote></div><br class=""></div>
</div></blockquote></div><br class=""></div></body></html>