Hi Tom,<div><br></div><div>I have a higher-level question regarding this back-end.  If I have an LLVM IR module and run it through this back-end, it seems like the only output option is a binary format.  Is this a device binary, or another intermediate format?</div>
<div><br></div><div>If the input LLVM IR module was a compute kernel, how would I go about executing it on an AMD GPU?  Can I use the APP SDK to load the binary, perhaps through the CAL interfaces?  How about the OpenCL binary interface?<br>
<br><div class="gmail_quote">On Tue, Apr 24, 2012 at 2:52 PM, Tom Stellard <span dir="ltr"><<a href="mailto:tstellar@gmail.com" target="_blank">tstellar@gmail.com</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 Mon, Mar 26, 2012 at 12:50:07PM -0400, Tom Stellard wrote:<br>
</div><div><div class="h5">> Hi,<br>
><br>
> We've been working on an LLVM backend for the previous generation of AMD<br>
> GPUs (HD 2XXX - HD 6XXX) and we would like submit it for inclusion in the<br>
> main LLVM tree.  The latest code can be found in this git repository:<br>
> <a href="http://cgit.freedesktop.org/~tstellar/llvm/" target="_blank">http://cgit.freedesktop.org/~tstellar/llvm/</a> in the r600-initial-review<br>
> branch or if you prefer you can download the entire tree with this link:<br>
> <a href="http://cgit.freedesktop.org/~tstellar/llvm/snapshot/llvm-r600-initial-review.tar.gz" target="_blank">http://cgit.freedesktop.org/~tstellar/llvm/snapshot/llvm-r600-initial-review.tar.gz</a><br>
> The R600 backend is located in lib/Target/AMDIL<br>
><br>
> First, a brief description of the backend:<br>
><br>
> The r600 backend is being developed as a part of the Open Source compute<br>
> stack in Mesa (<a href="http://www.mesa3d.org/" target="_blank">http://www.mesa3d.org/</a>), which uses the Gallium API.<br>
> It uses large portions of the AMDIL backend which was open-sourced<br>
> last December and you'll notice the TargetMachine for this backend<br>
> (AMDGPUTargetMachine) is a sub-class of AMDILTargetMachine.  We are also<br>
> currently working on an LLVM backend for Southern Islands GPUs, and we<br>
> would like to get that code into the LLVM tree as well, once it has been<br>
> approved for release.  The Southern Islands backend will be used for<br>
> compute shaders and also graphics shaders in the AMD open source 3D driver.<br>
><br>
> One thing that I would like to point out is that all of the<br>
> code from the AMDIL backend is licensed under a BSD license with an<br>
> additional clause that deals with United States export laws (non-AMDIL<br>
> code is licensed with the University of Illinois Open Source License).<br>
> Will the LLVM project accept a backend with code licensed under this BSD<br>
> license?  We would prefer to keep this license, but if it isn't<br>
> acceptable, we can try to relicense it.<br>
><br>
> Second, I am looking for two categories of feedback for the r600 backend:<br>
><br>
> 1. What changes do I need to make to get the backend included in the LLVM tree.<br>
> 2. What changes can I make to improve the backend overall.<br>
><br>
> My top priority is to get the backend into the LLVM tree, so<br>
> when you provide feedback if you could be clear about what<br>
> changes are needed to get the backend into the tree versus what changes<br>
> are just general improvements, I would appreciate it.<br>
><br>
> Lastly, I did a very brief run through of the code to check the coding style,<br>
> but I know there are still some violations.  For example, a lot of the<br>
> file headers are missing file descriptions.  I didn't want to spend a<br>
> lot of time on coding style changes prior to the initial review in case<br>
> I was asked to make big changes to the code, so I will address these<br>
> issues once I have received an OK on the organization of the code.<br>
> However, please still point out coding style errors to me, and I'll be<br>
> sure to fix them during the final pass.<br>
><br>
> Looking forward to your feedback.<br>
><br>
<br>
</div></div>Hi,<br>
<br>
Based on some feedback I received on IRC today, it sounds like this<br>
is just too much code to review at once.  I'm going to try to strip<br>
the R600 backend down to the bare minimum that is needed for our Mesa<br>
drivers and then repost the code to the list.  Hopefully, this will make it<br>
easier for people to review.<br>
<span class="HOEnZb"><font color="#888888"><br>
-Tom<br>
</font></span><div class="HOEnZb"><div class="h5">_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:LLVMdev@cs.uiuc.edu">LLVMdev@cs.uiuc.edu</a>         <a href="http://llvm.cs.uiuc.edu" target="_blank">http://llvm.cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</a><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>
</div>