[LLVMdev] RFC: R600, a new backend for AMD GPUs

Tom Stellard thomas.stellard at amd.com
Mon Apr 9 07:16:21 PDT 2012


On Mon, Apr 09, 2012 at 09:37:37AM -0400, Tom Stellard wrote:
> On Mon, Mar 26, 2012 at 12:50:07PM -0400, Tom Stellard wrote:
> > Hi,
> > 
> > We've been working on an LLVM backend for the previous generation of AMD
> > GPUs (HD 2XXX - HD 6XXX) and we would like submit it for inclusion in the
> > main LLVM tree.  The latest code can be found in this git repository:
> > http://cgit.freedesktop.org/~tstellar/llvm/ in the r600-initial-review
> > branch or if you prefer you can download the entire tree with this link:
> > http://cgit.freedesktop.org/~tstellar/llvm/snapshot/llvm-r600-initial-review.tar.gz
> > The R600 backend is located in lib/Target/AMDIL
> > 
> > First, a brief description of the backend:
> > 
> > The r600 backend is being developed as a part of the Open Source compute
> > stack in Mesa (http://www.mesa3d.org/), which uses the Gallium API.
> > It uses large portions of the AMDIL backend which was open-sourced
> > last December and you'll notice the TargetMachine for this backend
> > (AMDGPUTargetMachine) is a sub-class of AMDILTargetMachine.  We are also
> > currently working on an LLVM backend for Southern Islands GPUs, and we
> > would like to get that code into the LLVM tree as well, once it has been
> > approved for release.  The Southern Islands backend will be used for
> > compute shaders and also graphics shaders in the AMD open source 3D driver.
> > 
> > One thing that I would like to point out is that all of the
> > code from the AMDIL backend is licensed under a BSD license with an
> > additional clause that deals with United States export laws (non-AMDIL
> > code is licensed with the University of Illinois Open Source License).
> > Will the LLVM project accept a backend with code licensed under this BSD
> > license?  We would prefer to keep this license, but if it isn't
> > acceptable, we can try to relicense it.
> > 
> > Second, I am looking for two categories of feedback for the r600 backend:
> > 
> > 1. What changes do I need to make to get the backend included in the LLVM tree.
> > 2. What changes can I make to improve the backend overall.
> > 
> > My top priority is to get the backend into the LLVM tree, so
> > when you provide feedback if you could be clear about what
> > changes are needed to get the backend into the tree versus what changes
> > are just general improvements, I would appreciate it.
> > 
> > Lastly, I did a very brief run through of the code to check the coding style,
> > but I know there are still some violations.  For example, a lot of the
> > file headers are missing file descriptions.  I didn't want to spend a
> > lot of time on coding style changes prior to the initial review in case
> > I was asked to make big changes to the code, so I will address these
> > issues once I have received an OK on the organization of the code.
> > However, please still point out coding style errors to me, and I'll be
> > sure to fix them during the final pass.
> > 
> > Looking forward to your feedback.
> > 
> > Thanks,
> > Tom Stellard
> > 
> 
> Has anyone had a chance to review this code yet?  What about the
> licensing issue?  Getting this backend included in LLVM is currently
> a blocker for the Mesa Open Source compute stack on AMD hardware as
> well as the Southern Islands Open Source 3D driver, so I would really
> appreciate it if someone could take a look at the code and let me know what
> is needed to get it upstream.

I've just received approval to relicense all the code under the
University of Illinois Open Source License, so this shouldn't be an
issue any more.

-Tom




More information about the llvm-dev mailing list