LLVM 3.1 Will Enhance AVX & Bring AVX2 Support

In particular, LLVM 3.1 is poised to offer bug-fixes and overall improved support for Advanced Vector Extensions. AVX is the x86 instruction set extension that first appeared with Intel Sandy Bridge processors in early 2011 and then made their way to the AMD side with the Bulldozer launch.
GCC 4.6 offered AVX support that worked with the Sandy Bridge CPUs, but on the LLVM side they weren't as quick to adopt support for this new instruction set. As mentioned before. "Key points of the AVX ISA is expecting the vector data width to 256-bits, a new SIMD instruction format, and new data manipulation and arithmetic compute primitives. Simply put, AVX is meant to be another step forward for increasing the processor's performance and efficiency."
Within LLVM 3.1, there is "bug fixes and improved support for AVX1." However, that is not all.
Also coming in LLVM 3.1 will be preliminary support for AVX2. AVX2 is the second version of the Advanced Vector Extensions that will expand most AVX integer instructions to 256-bit, support three-operand bit manipulation and multiply, Gather support, vector shifts, and other new functionality. AVX2 isn't set to appear on any hardware until 2013 when Intel brings forth the Haswell processors (the next-generation Ivy Bridge CPUs are AVX1 still), so it's good to see the LLVM crew on top of their support game this time around and the AVX2 support will hopefully mature in LLVM over the next year.
Scanning the LLVM commit logs in the past month or two does show several AVX1/AVX2 related commits. The AVX1/AVX2 work is also mentioned in the very premature LLVM release notes page that's currently tracking LLVM 3.1 development.
On the GCC side there's also been early work towards supporting the AVX2 instruction set. Preliminary patches there have been floating around since August, among other AVX-related patches.
LLVM 3.1 will be released at some point in 2012.
Add A Comment