Radeon Gallium3D LLVM Now Uses VLIW Scheduler

Posted by Michael Larabel on June 21, 2012

With a commit this afternoon to Mesa, the R600 Gallium3D driver with the LLVM back-end is now using the performance-boosting VLIW scheduler.

With the R600g LLVM back-end the register pressure scheduler has now been replaced by the VLIW (Very Long Instruction Word) scheduler. The VLIW scheduler for supporting the Radeon HD 2000 through HD 6000 series graphics cards is far from being ideal in terms of being optimally efficient as it ignores some complicated instructions right now, but it should be an improvement over the status quo.

According to Tom Stellard, the AMD employee that has been working on open-source OpenCL as of late for Gallium3D, reports that switching to the new scheduler resulted in a 50% performance boost for a SHA1 compute shader test. However, he has yet to see the performance impact of the VLIW scheduler on complicated graphics shaders.

From the commit:
It's not optimal, but it's better than the register pressure scheduler that was previously being used. The VLIW scheduler currently ignores all the complicated instruction groups restrictions and just tries to fill the instruction groups with as many instructions as possible. Though, it does know enough not to put two trans only instructions in the same group.

We are able to ignore the instruction group restrictions in the LLVM backend, because the finalizer in r600_asm.c will fix any illegal instruction groups the backend generates.

Enabling the VLIW scheduler improved the run time for a sha1 compute shader by about 50%. I'm not sure what the impact will be for graphics shaders. I tested Lightsmark with the VLIW scheduler enabled and the framerate was about the same, but it might help apps that use really big shaders.
It looks like it's time for me to start some new R600g benchmarks!

Discuss this article in our forums, IRC channel, or email the author. You can also follow our content via RSS and on social networks like Facebook, Identi.ca, and Twitter (@Phoronix and @MichaelLarabel). Subscribe to Phoronix Premium to view our content without advertisements, view entire articles on a single page, and experience other benefits.
Latest Hardware Reviews
  1. Sumo Lounge Emperor
  2. Gallium3D Continues Improving OpenGL For Older Radeon GPUs
  3. 15-Way Open vs. Closed Source NVIDIA/AMD Linux GPU Comparison
  4. Nouveau vs. NVIDIA Linux Comparison Shows Shortcomings
Latest Software Articles
  1. Btrfs vs. EXT4 vs. XFS vs. F2FS On Linux 3.10
  2. AMD Radeon R600 GPU LLVM 3.3 Back-End Testing
  3. F2FS File-System Shows Regressions On Linux 3.10
  4. Previewing The Radeon Gallium3D Shader Optimizations
Latest Linux News
  1. FreeBSD Still Working On Next-Gen Package Manager
  2. DNF Still Advancing As Experimental Yum For Fedora
  3. Logitech Begins Supporting Linux Users
  4. Modern Intel Gallium3D Driver Still Being Toyed With
  5. Linux 3.10 Kernel Benchmarks On A Core i7 Laptop
  6. GCC 4.8.1 Compiler Due To Be Out Next Week
  7. Linux 3.10 Kernel Benchmarks For Intel Ivy Bridge
  8. Linux's "Ondemand" Governor Is No Longer Fit
  9. Firefox 22 Beta Enables WebRTC Support
  10. OpenSUSE 13.1 Milestone 1 Released
  11. DRM Graphics Driver Comes For Dove/Cubox
Latest Forum Talk
  1. Sumo Lounge Emperor
  2. KDE's Krita Ported To OpenGL 3.1, OpenGL ES 2.0
  3. DNF Still Advancing As Experimental Yum For Fedora
  4. FreeBSD Still Working On Next-Gen Package Manager
  5. Ubuntu 13.10 Likely Switching To Chromium Browser
  6. Logitech Begins Supporting Linux Users
  1. Computers
  2. Display Drivers
  3. Graphics Cards
  4. Motherboards
  5. Peripherals
  6. Processors
  7. Software
  8. Operating Systems
  9. All Articles
  1. Linux Benchmarking
  2. OpenBenchmarking.org
  3. Phoronix Test Suite