IRILL - Research and Innovation on Free Software

LLVM on IBM POWER processors: a progress report


"LLVM on IBM POWER processors: a progress report"
by Ulrich Weigand - IBM,
on 2013-04-29 00:00:00
Download Webm format
Download MP4 format

Until recently, use of LLVM on IBM processors, in particular POWER, was not an issue of particular interest to IBM, and we were not directly involved in LLVM development. This situation changed significantly during the past year, as a result of more widespread use of LLVM, in particular its just-in-time compiler, as an essential component of widely used open-source and proprietary applications, and increased customer requests for LLVM capabilities on IBM platforms. This led to the decision to get actively involved with the LLVM community, and form a team within the IBM Linux Technology Center to help enable full support for LLVM on PowerLinux. Over the past several months, we have made significant progress towards that goal; in particular, the LLVM 3.2 release now bootstraps and passes all test suites on PowerLinux, and provides a working (MC) JIT implementation. In this presentation I plan to report on IBM's involvement with LLVM as described above and the work we've done so far, including various missing features that were contributed, like support for the JIT, the assembler parser and disassembler, full TLS support, medium and large code models, full ABI compatibility, and Altivec enhancements. I will also present methods we used to verify correctness of the port, and show some examples of the more interesting bugs we found and fixed in the process. As a long-time GCC developer with no prior experience with LLVM, I will also try to give some impressions on my "learning curve" with the LLVM design and code base, in particular from the perspective of a processor back-end: which parts were easy to get into, and what took significant effort getting used to. Finally, I will conclude by presenting ongoing work on features that are still missing to provide first-class support for POWER, and our plans for future continued involvement with LLVM.