Microsoft's .NET Team Continues Making Progress On An LLVM Compiler
Written by Michael Larabel inCompiler on 19 October 2015 at 09:01 AM EDT.Add A Comment
Earlier this year Microsoft announced an LLVM-based .NET compiler was entering development, LLILC. Six months later, LLILC continues making progress.
The .NET team has published a six month retrospective of LLILC . It's a very lengthy read for those interested in low-level compiler details.
Here's some key takeaways:
Our ambition is to make LLILC a high-performance JIT - by which we mean, LLILC can quickly produce decent quality code. We’re aware that the common wisdom is that LLVM may not be lean enough to make this possible, but our intention is to see how far we can push things. Our current measurements show LLILC to be approximately 4x slower than our production RyuJit when LLILC is in conservative GC mode, and even slower than this when we enable precise GC. We haven’t spent much time looking at this yet, and we don’t have much experience in figuring out how to make LLVM run faster, so we have a lot to learn here.
The flip side of throughput is that the code the jit produces must be of reasonable quality. For a first-tier JIT optimizations must be carefully considered since time is of the essence. We currently haven’t tried enabling much of LLVM’s optimization capabilities and don’t yet know what the time vs size and quality tradeoffs will look like. As an initial data point, LLILC code is about 2x larger than RyuJit’s code. We should be able to be much more competitive with some basic cleanup opts.
The Microsoft engineer concluded, "LLILC has made great strides in the past six months, but there are big challenges ahead in our quest to make it a first-class code generator for the CoreCLR. LLVM - both code and community - has been a pleasure to work with so far, and we look forward to ongoing fruitful collaboration."
Microsoft getting involved in LLVM has been just one of many exciting open-source/Linux Microsoft announcements so far this year.Add A Comment