3. ASIA 2013 (LCA13)
www.linaro.org
LLVM – What is it?
Low Level Virtual Machine (not Virtualisation!)
http://llvm.org/
Compiler and Code Generation Framework
Not one project but many
LLVM core: Libraries, optimizations, back-ends
Clang: C/C++ front-end
Libc++: C++ STL
Compiler-rt: Run-time libraries
Dragon egg: GCC back-end (ie. Using GCC's front-end)
LLDB: Symbolic debugger, using JIT, disassembler, Clang's AST
Polly: Auto-parallelism using polyhedral model
Etc...
5. ASIA 2013 (LCA13)
www.linaro.org
LLVM Team Goals
Improve Performance on AArch32 and AArch64
Mostly back-end focused
Will do mid-end work where appropriate
Front-end agnostic
Support the Community
Support the Continuous Integration infrastructure
Investigate and fix ARM specific issues as they arise
Review patches that affect ARM on the short/medium term
Help organize LLVM social events and conferences
6. ASIA 2013 (LCA13)
www.linaro.org
Build Bots
Linaro have contributed to the LLVM Community Build Farm:
A PandaBoard for testing
http://lab.llvm.org:8011/builders/clang-native-arm-cortex-a9
Fine tuning improved performance and build time 10-fold
A ChromeBook for benchmarking
http://lab.llvm.org:8011/builders/clang-native-arm-lnt
http://llvm.org/perf/db_default/v4/nts/machine/10
Proposed a GsoC project to get better reports from LNT Perf DB
Working on an old (non-Linaro) ARMv5 bot
http://lab.llvm.org:8011/builders/llvm-armv5-linux
Commits are being tested on ARM boards immediately
Build breakages noticed within hours, some fixed independently
ARM bot is now recognized as always-green
Continuous work to keep it green is lower than fixing bugs after weeks
of it being introduced
7. ASIA 2013 (LCA13)
www.linaro.org
Auto-vectorisation
LLVM 3.3 will have auto-vectorization enabled by default
Making sure ARM support is enabled from day 1
Overnight testing with vectorizer enabled
Internal testing on micro-benchmarks
Discussing with the community
Working on the vectorizer to understand infrastructure
Added cost model infrastructure to ARM Target Transform Info
Added generic alias analysis for global structure members
Discussions about some problems with cost model
8. ASIA 2013 (LCA13)
www.linaro.org
What's next (March - July)
Build Bots
Re-introduce A15 buildbots
Increase number of LNT A15 buildbots
Add AArch64 build-bots
Performance
Continue supporting vectorization work
Update cost model tables
Cross-check Loop and BasicBlock vectorizers
Enhance cost model to account for side-effects
Enhance benchmark coverage and reporting
More LNT bots
Better reporting, warning system
Fine-tune LNT benchmarks for ARM
9. ASIA 2013 (LCA13)
www.linaro.org
What's Next (July onwards)
What's of interest to the room...
LLVM Integrated Assembler?
Use it instead of GAS for ELF emission
Re-enable GAS for Gnu-specific behaviour
Zero-Cost Exception Handling?
Only basic examples work on ARM
SjLj works on Darwin
Cross-compilation infrastructure?
Command-line options nightmare!
Will GsoC project proposal be taken?
Study big.LITTLE impact?
Discussion about IFUNC support in LLVM
OpenCL? LLVMpipe? Renderscript?
We're front-end agnostic, but IR produced by them is different
How important is it for that IR to run efficiently on NEON?
10. More about Linaro Connect: www.linaro.org/connect/
More about Linaro: www.linaro.org/about/
More about Linaro engineering: www.linaro.org/engineering/
ASIA 2013 (LCA13)