<div dir="ltr">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></div><div class="gmail_extra"><br><div class="gmail_quote">On Sat, Jan 21, 2017 at 2:19 AM, Quentin Colombet via llvm-dev <span dir="ltr"><<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi all,<br>
<br>
Following the thread from <a href="http://lists.llvm.org/pipermail/llvm-dev/2017-January/109029.html" rel="noreferrer" target="_blank">http://lists.llvm.org/<wbr>pipermail/llvm-dev/2017-<wbr>January/109029.html</a>, I am sending this email to give a status on GlobalISel progress and situation.<br>
<br>
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>
<br>
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">http://llvm.org/devmtg/2016-<wbr>11/#talk16</a>).<br>
<br>
Note: That does not mean the design is settle nor that we won’t change the APIs.<br>
Note: A lot of the things listed in this email is a reminder of what we said during the dev meeting talk.<br>
<br>
*** High Level View ***<br>
<br>
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>
<br>
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>
<br>
<br>
*** Per Pass Status ***<br>
<br>
** IRTranslator **<br>
<br>
Mostly done.<br>
<br>
* What’s Left? *<br>
<br>
Some instructions are not yet supported.<br>
<br>
<br>
** Legalizer **<br>
<br>
Core logic is present.<br>
<br>
* What’s Left? *<br>
<br>
- A lot of instructions are missing, in particular the vector ones.<br>
- Legalization of G_SEQUENCE/G_EXTRACT still up in the air for complex cases.<br>
<br>
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>
<br>
<br>
** RegBankSelect **<br>
<br>
- Core logic is present, no optimizations yet, or more accurately, the greedy mode is still pretty silly.<br>
- TableGen support for RegisterBanks description.<br>
<br>
* What’s Left *<br>
<br>
- TableGen the instruction mapping from the existing SDISel patterns.<br>
- Improve the optimization heuristic.<br>
<br>
<br>
** InstructionSelect **<br>
<br>
- Core logic present.<br>
- TableGen support for simple SDISel patterns (i.e., GISel reuses SDISel patterns)<br>
<br>
* What’s Left *<br>
<br>
- Teach TableGen how to reuse more complex patterns:<br>
— Patterns with combines in them (e.g., (mull (add)) => madd)<br>
— Patterns with complex patterns (e.g., SelectAddressModXR0)<br>
<br>
<br>
*** On Going Work ***<br>
<br>
- 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>
- Extend TableGen support to reuse more and more SDISel patterns.<br>
- ARM port.<br>
- AMDGPU port.<br>
- X86 port.<br>
<br>
If you have questions, don’t hesitate!<br>
<br>
Cheers,<br>
-Quentin<br>
<br>______________________________<wbr>_________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/llvm-dev</a><br>
<br></blockquote></div><br></div>