Alex Bradbury via llvm-dev
2016-Feb-15 16:02 UTC
[llvm-dev] Details on JavaScriptCore's new B3 JIT, replacing their LLVM JIT
A great blog post has just gone up about JavascriptCore's new B3 JIT. https://webkit.org/blog/5852/introducing-the-b3-jit-compiler/ This replaces LLVM as the low-level optimisation layer of the FTL JIT. They currently achieve roughly 5x faster compile time than LLVM while achieving roughly the same generated code quality for their workloads. I'm sharing as I thought some parts of the design may be interesting to other LLVM devs, including the use of Check opcodes ("like a marriage between a Branch and a Patchpoint") and the backwards greedy pattern matching for lowering from B3 to Air. Alex
Owen Anderson via llvm-dev
2016-Feb-15 17:49 UTC
[llvm-dev] Details on JavaScriptCore's new B3 JIT, replacing their LLVM JIT
> On Feb 15, 2016, at 8:02 AM, Alex Bradbury via llvm-dev <llvm-dev at lists.llvm.org> wrote: > > the backwards greedy > pattern matching for lowering from B3 to Air.This part, at least, is isomorphic to the greedy matching algorithms used by SelectionDAG and FastISel. —Owen -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20160215/e509d692/attachment.html>
Philip Reames via llvm-dev
2016-Feb-17 23:46 UTC
[llvm-dev] Details on JavaScriptCore's new B3 JIT, replacing their LLVM JIT
FYI, Sanjoy just started a discussion on what a "check"-like construct might look like in LLVM over in the thread "RFC: Add guard intrinsics to LLVM". To avoid confusion, it's worth calling out that the predicate is reversed in Sanjoy's proposal from how it's described in the b3 post. Philip On 02/15/2016 08:02 AM, Alex Bradbury via llvm-dev wrote:> A great blog post has just gone up about JavascriptCore's new B3 JIT. > https://webkit.org/blog/5852/introducing-the-b3-jit-compiler/ > > This replaces LLVM as the low-level optimisation layer of the FTL JIT. > They currently achieve roughly 5x faster compile time than LLVM while > achieving roughly the same generated code quality for their workloads. > > I'm sharing as I thought some parts of the design may be interesting > to other LLVM devs, including the use of Check opcodes ("like a > marriage between a Branch and a Patchpoint") and the backwards greedy > pattern matching for lowering from B3 to Air. > > Alex > _______________________________________________ > LLVM Developers mailing list > llvm-dev at lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev