<p><br>
On May 28, 2012 6:44 AM, "Tom Stellard" <<a href="mailto:thomas.stellard@amd.com">thomas.stellard@amd.com</a>> wrote:<br>
><br>
> On Fri, May 25, 2012 at 02:37:26PM -0700, Justin Holewinski wrote:<br>
> > Hi Tom,<br>
> ><br>
> > I have a higher-level question regarding this back-end.  If I have an LLVM<br>
> > IR module and run it through this back-end, it seems like the only output<br>
> > option is a binary format.  Is this a device binary, or another<br>
> > intermediate format?<br>
> ><br>
> > If the input LLVM IR module was a compute kernel, how would I go about<br>
> > executing it on an AMD GPU?  Can I use the APP SDK to load the binary,<br>
> > perhaps through the CAL interfaces?  How about the OpenCL binary interface?<br>
> ><br>
><br>
> Hi Justin,<br>
><br>
> The binary produced by this backend is meant to be consumed by AMD's Open<br>
> Source 3D/Compute drivers which are part of the Mesa3D[1] project.  The<br>
> backend is integrated into the driver, so you don't need to compile<br>
> shaders offline.  Currently we are using the backend for graphics and<br>
> compute shaders in our r600g driver (HD2xxx-HD6xxx GPUs) and for graphics<br>
> in our radeonsi (HD7xxx GPUs).  In the future we will use it for compute<br>
> shaders on radensi too.<br>
><br>
> In order to use the backend for graphics on r600g, you need to build<br>
> Mesa with the --enable-r600-llvm-compiler option.  For compute the<br>
> installation instructions are here:<br>
> <a href="http://dri.freedesktop.org/wiki/GalliumCompute">http://dri.freedesktop.org/wiki/GalliumCompute</a><br>
><br>
> We're working hard to get everything upstream into LLVM to so we can<br>
> have compute shaders working out of the box, so our users don't need to<br>
> manually apply patches.</p>
<p>Okay, so there is no way to use the backend to produce loadable compute kernels for the proprietary drivers, or on Mac/windows?</p>
<p>><br>
> Let me know if you have any other questions.<br>
><br>
> -Tom<br>
><br>
> [1] <a href="http://www.mesa3d.org/">http://www.mesa3d.org/</a><br>
><br>
> > On Tue, Apr 24, 2012 at 2:52 PM, Tom Stellard <<a href="mailto:tstellar@gmail.com">tstellar@gmail.com</a>> wrote:<br>
> ><br>
> > > On Mon, Mar 26, 2012 at 12:50:07PM -0400, Tom Stellard wrote:<br>
> > > > 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/">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>
> > > ><br>
> > > <a href="http://cgit.freedesktop.org/~tstellar/llvm/snapshot/llvm-r600-initial-review.tar.gz">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/">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<br>
> > > 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<br>
> > > 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<br>
> > > 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>
> > > 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>
> > ><br>
> > > -Tom<br>
> > > _______________________________________________<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">http://llvm.cs.uiuc.edu</a><br>
> > > <a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev">http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</a><br>
> > ><br>
> ><br>
> ><br>
> ><br>
> > --<br>
> ><br>
> > Thanks,<br>
> ><br>
> > Justin Holewinski<br>
><br>
</p>