AMD R600 LLVM GPU Back-End Gets Better
Among the patches that hit mesa-dev this week -- and there's also been some new patches already pulled into the LLVM code-base -- include:
- Initial scheduler code. "This is a skeleton for a pre-RA MachineInstr scheduler strategy. Currently it only tries to expose more parallelism for ALU instructions (this also makes the distribution of GPR channels more uniform and increases the chances of ALU instructions to be packed together in a single VLIW group). Also it tries to reduce clause switching by grouping instruction of the same kind (ALU/FETCH/CF) together."
- Support for 128-bit parameters.
- UBO support in the LLVM back-end for OpenGL Uniform Buffer Objects.
- Cleaned-up literal handling.
- TBO support a.k.a. OpenGL Texture Buffer Objects.
- Improved loop handling and various other R600 "structurizer" improvements.
There were also various other fixes and minor improvements to the R600 LLVM back-end. Earlier this month was when R600 LLVM indirect addressing support was finally introduced.
For more information on using the open-source Radeon OpenCL stack with Gallium3D, read Running OpenCL On The GPU With Gallium3D.
New benchmarks of the R600 LLVM back-end are forthcoming but until then are my R600 Gallium3D LLVM benchmarks from last year. Since then many improvements have been made.
This LLVM Radeon GPU back-end will officially introduced in LLVM 3.3 when released later this year.