Awesome!  So what's stopping this from being committed as an experimental back-end?<br><br><div class="gmail_quote">On Mon, Sep 10, 2012 at 10:13 AM, Tom Stellard <span dir="ltr"><<a href="mailto:tom@stellard.net" target="_blank">tom@stellard.net</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">On Sun, Sep 09, 2012 at 01:15:50PM -0400, Justin Holewinski wrote:<br>
> The back-end builds fine for me!<br>
><br>
> I haven't done extensive testing, but it looks like there is some issue<br>
> with the way registers are defined.  In text output, I am getting<br>
> placeholders instead of actual numbers:<br>
><br>
> jholewinski@rapture [R600]$ llc -march=r600 -mcpu=redwood <<br>
> llvm.AMDGPU.pow.ll<br>
> .text<br>
> ; BB#0:<br>
> LOG_IEEE T#Index#.#Chan, T#Index#.#Chan (Pred_sel_off)<br>
> MUL NON-IEEE T#Index#.#Chan, T#Index#.#Chan, T#Index#.#Chan<br>
> EXP_IEEE T#Index#.#Chan, T#Index#.#Chan (Pred_sel_off)<br>
> RETURN<br>
><br>
><br>
<br>
</div>Hi Justin,<br>
<br>
Thanks for taking the time to test this out.  It looks like I made a<br>
mistake when I updated the R600RegisterInfo.td files.  I've attached a<br>
few patches that should fix this issue and others I noticed while going<br>
through the code.  I also changed the tests to check the register names.<br>
These patches can also be found in my r600-review-v9 branch.<br>
<span class="HOEnZb"><font color="#888888"><br>
-Tom<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
<br>
> On Fri, Sep 7, 2012 at 4:35 PM, Tom Stellard <<a href="mailto:tom@stellard.net">tom@stellard.net</a>> wrote:<br>
><br>
> > Hi,<br>
> ><br>
> > Attached is a patch with an updated version of the R600/SI backend.  The<br>
> > same code can also be found in the r600-review-v9 branch here:<br>
> > <a href="http://cgit.freedesktop.org/~tstellar/llvm/" target="_blank">http://cgit.freedesktop.org/~tstellar/llvm/</a><br>
> ><br>
> > Changes since last week's version include:<br>
> >  +  Lots of fixes and new features for Southern Islands GPUs.<br>
> >  +  The *RegisterInfo.td files have been updated to use newer features<br>
> >     of tablegen and they no longer need to be generated with perl<br>
> >     scripts. This change reduces the size of the patch by around ~100kb.<br>
> ><br>
> > I'm still hoping to get this accepted as an experimental backend, and I<br>
> > look forward to your comments.<br>
> ><br>
> > Thanks,<br>
> > Tom Stellard<br>
> ><br>
> ><br>
> > On Fri, Aug 31, 2012 at 03:18:17PM -0400, Tom Stellard wrote:<br>
> > > Hi,<br>
> > ><br>
> > > I've attached a patch with an updated version of the R600/SI backend.<br>
> > > This time I've squashed all the changes into a single patch and used a<br>
> > > format that is compatible with svn for easier testing/reviewing.<br>
> > ><br>
> > > Since the last version, I've fixed some build errors caused by recent<br>
> > > tablegen changes, and I've also gone through and fixed all the<br>
> > > errors caused by setting InstrInfo.guessInstructionProperties = 0.<br>
> > ><br>
> > > If you prefer git, this code can also be found in the r600-review-v8<br>
> > > branch here: <a href="http://cgit.freedesktop.org/~tstellar/llvm/" target="_blank">http://cgit.freedesktop.org/~tstellar/llvm/</a><br>
> > ><br>
> > > I'm still interested in getting this code into the main tree as an<br>
> > > experimental target, so I'd appreciate any feedback on whether or not<br>
> > > this backend is ready to be accepted as an experimental target.<br>
> > ><br>
> > > Thanks,<br>
> > > Tom Stellard<br>
> > ><br>
> > > On Mon, Aug 27, 2012 at 02:46:06PM +0000, Tom Stellard wrote:<br>
> > > ><br>
> > > > Hi,<br>
> > > ><br>
> > > > Here is an updated version of the R600/SI backend that I would like to<br>
> > > > be considered for inclusion in the LLVM main tree as an experimental[1]<br>
> > > > target.<br>
> > > ><br>
> > > > Changes since the last version include:<br>
> > > >   + Added AsmPrinter<br>
> > > >   + Converted Tests to use AsmPrinter<br>
> > > >   + Replaced CodeEmitters with MCCodeEmitters<br>
> > > >   + Removed all uses of MachineOperands flags<br>
> > > >   + Enabled the If Conversion pass on R600<br>
> > > >   + Various clean ups and bug fixes.<br>
> > > ><br>
> > > > For more information about the backend, here are some frequently asked<br>
> > > > questions:<br>
> > > ><br>
> > > > ++ What is the R600/SI backend?<br>
> > > ><br>
> > > >   The R600/SI backend is a code generator for AMD GPUs and supports<br>
> > > >   the HD2XXX-HD7XXX GPU models.  It is currently being used by the<br>
> > > >   Open Source graphics drivers for AMD GPUs in the Mesa[2] project as<br>
> > > >   a compiler backend for graphics and compute shaders.<br>
> > > ><br>
> > > > ++ How will the R600/SI backend benefit LLVM?<br>
> > > ><br>
> > > >   The R600/SI backend is a native code generator for GPUs.  There are<br>
> > > >   very few completely Open Source compiler backends for GPUs, so<br>
> > > >   adding this backend to LLVM will give the project a leg up over other<br>
> > > >   compiler projects and help attract the attention of researchers and<br>
> > > >   new developers.<br>
> > > ><br>
> > > > ++ Why do the R600/SI developers want this code in the main LLVM tree?<br>
> > > ><br>
> > > >   The main reason for this is to reduce the maintenance burden on<br>
> > > >   developers so they have more time to spend improving the backend and<br>
> > > >   core LLVM code.  Supporting multiple versions of LLVM in the Mesa<br>
> > > >   tree will require a lot of ugly ifdefs, and it will be very difficult<br>
> > > >   to take advantage of new features in Tablegen.  Also, changes to the<br>
> > > >   backend will require testing against at least two version of LLVM.<br>
> > > >   Moving the backend code into the main LLVM tree will allow the<br>
> > > >   backend to evolve with the rest of the project and remove these<br>
> > > >   extra burdens from developers.<br>
> > > ><br>
> > > > ++ What is the planned development model for the R600/SI backend?<br>
> > > ><br>
> > > >   If accepted into the main tree, all development on the R600/SI will<br>
> > be based<br>
> > > >   on the public LLVM tree.  The backend has been Open Source from the<br>
> > beginning<br>
> > > >   and there are no private internal trees.  All code developed for<br>
> > this backend<br>
> > > >   is pushed to the public tree as soon as it is ready.<br>
> > > ><br>
> > > > Looking forward to you comments.<br>
> > > ><br>
> > > > Thanks,<br>
> > > > Tom Stellard<br>
> > > ><br>
> > > > [1] <a href="http://lists.cs.uiuc.edu/pipermail/llvmdev/2012-July/051929.html" target="_blank">http://lists.cs.uiuc.edu/pipermail/llvmdev/2012-July/051929.html</a><br>
> > > > [2] <a href="http://www.mesa3d.org" target="_blank">http://www.mesa3d.org</a><br>
> > > > _______________________________________________<br>
> > > > llvm-commits mailing list<br>
> > > > <a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
> > > > <a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
> ><br>
> ><br>
> > _______________________________________________<br>
> > llvm-commits mailing list<br>
> > <a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
> > <a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
> ><br>
> ><br>
><br>
><br>
> --<br>
><br>
> Thanks,<br>
><br>
> Justin Holewinski<br>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br><br><div>Thanks,</div><div><br></div><div>Justin Holewinski</div><br>