[LLVMdev] RFC: R600, a new backend for AMD GPUs
thomas.stellard at amd.com
Mon Mar 26 11:50:07 CDT 2012
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:
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.
More information about the LLVMdev