i.MX515 ProjectARM Cortex A8 support into the LLVM Compilerin category Applications & Software
proposed by brunocardoso on 5th March 2009 (accepted on 2nd July 2010)
Project SummaryProposal: Improve the LLVM Compiler ARM back-end to support the Cortex A8 (v7
Why: LLVM is a compiler infrastructure aimed at providing aggressive
optimizations in the entire life of a program - compile time, link-time (particularly interprocedural), run-time and offline (i.e., after software is installed)). It also provides static back-ends for the X86, X86-64, PowerPC 32/64, ARM, Thumb, IA-64, Alpha, SPARC, MIPS and CellSPU architectures, a back-end which emits portable C code, and a Just-In-Time compiler for X86, X86-64, PowerPC 32/64 processors, and an emitter for MSIL. LLVM is an open source project (with its own license, very close to the MIT license) and is being used by companies such as Apple, AMD, Microchip (which recently contributed an experimental PIC-16 back-end), Sun, and Rapidmind. Given the back-ends LLVM supports, it's becoming a good compiler for embedded system, and i.MX515 could benefit from LLVM optimizations and also have other compiler as an option.
How: LLVM already has support for VFPv2, Thumb and ARMv6, the back-end improvement would require adding the ARMv7 instructions and support for VFPv3 and Thumb-2. The additions to the code generator can be tested with the llvm test suite which includes a lot of known benches and also with a lot of small test cases which only outputs the new features.
Background:Bruno Cardoso Lopes is a PhD student at University of Campinas,
Brazil. His academic research includes hardware simulation and code
compression. In the past he worked and had experience with embedded
systems, with drivers for Linux and FreeBSD. He's also an active
contributor to the open source compiler LLVM (Low Level Virtual
Machine), where he created and now maintains the MIPS back-end.
Project Blog Entries
posted by brunocardoso on 20th July 2010