For months Stellard has been working on an LLVM back-end for the Radeon Gallium3D driver as they worked to bring up OpenCL support over their open-source graphics driver. They now have Radeon Gallium3D OpenCL working and are working towards mainlining the respective components.
This back-end does leverage the AMD IL code generator for LLVM that was open-sourced last December. This R600 LLVM back-end for R600 through Northern Islands GPUs is now in a state for including into upstream LLVM, Tom Stellard believes. "The r600 backend is being developed as a part of the Open Source compute stack in Mesa, 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."
In Tom's email this morning to LLVM developers he also mentions:
- They are currently working on an LLVM back-end for their GCN-based Radeon HD 7000 "Southern Islands" GPUs and are also looking to get that into LLVM as soon as possible when the code has been cleared for release.
- All of AMD's code for this is under a BSD license, but the AMD IL code has a clause concerning US export laws for where this can be utilized. AMD hopes this won't cause a problem for integration into the LLVM tree.
- Tom is wondering about any other steps to land this R600 back-end in LLVM or what other changes are required. "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."
This email announcing the R600 LLVM back-end for inclusion was just sent minutes ago, so there's not yet any responses from the upstream LLVM developers. Hopefully they will be willing to take this R600 back-end soon since LLVM 3.1 is set for release in May.
In terms of the rest of the OpenCL Gallium3D stack, thanks to the work by AMD as well as those within the Nouveau driver camp, the open-source OpenGL support is on approach for landing in mainline. The first of the Gallium3D OpenCL infrastructure patches were sent into the mailing list last week. The Clover (OpenCL) state tracker also needs to land. But what's not yet ready for merging at the moment is the actual R600g and Nouveau driver implementations of the Gallium3D compute infrastructure. The driver-specific portions of the GPGPU computing code is still considered immature at this point -- years after the OpenCL 1.0 specification was ratified.