Linaro Developers Plan ARM LLVM Improvements
Last week at Linaro Connect Asia 2013, aside from talking about OpenGL ES 3.0 improvements, there were also sessions about improving LLVM ARM support.
The Toolchain Working Group started playing with LLVM optimizations and other improvements to this compiler infrastructure in January. They've made some progress so far, but plans were revealed for a lot more.
The LLVM team goals within the Linaro Toolchain Working Group are to improve performance for 32-bit and 64-bit ARM (both AArch32 and AArch64) and supporting the community. The performance work is mostly focused upon back-end work while there's some mid-end work involved too.
Some of the "community" work they have been doing is providing build bots / continuous integration support for LLVM on ARM, investigating and fixing ARM-specific issues, reviewing patches that affect ARM, and helping to organize LLVM social events.
Some of the performance optimization work already done by the Linaro group is ensuring good ARM coverage for the LLVM auto-vectorizer that will be enabled by default for LLVM 3.3.
They ensured ARM support will be there from day one, added a cost model infrastructure for ARM Target Transform Info, generic alias analysis for global structure members, and other related vectorization work.
Work that's coming up in the next few months for the team is introducing ARM Cortex-A15 LLVM build bots and AArch64 build bots. On the performance side they will continue to support the vectorization work and provide enhanced benchmark coverage and reporting.
Work targeting this summer and beyond is a possible LLVM Integrated Assembler for ARM to replace GCC CAS, zero-cost exception handling on ARM, better cross-compiler support, possible big.LITTLE work on LLVM, and then looking at other LLVM-related areas like OpenCL and LLVMpipe and Android's RenderScript.
Available from this ARM LLVM session were these PDF slides.
Another separate Linaro Connect Asia 2013 conference was about optimizing LLVMpipe for ARM. As noted on the conference web-site, this was partially inspired by my previous writings on the topic of Gallium3D's LLVMpipe being in a poor state for non-x86_64 platforms. It looks like some Gallium3D/LLVMpipe improvements for ARM will come, but not in the near-term.