[llvm-dev] Outlining in JIT LLVM
Matthias Braun via llvm-dev
llvm-dev at lists.llvm.org
Thu Feb 16 11:54:50 PST 2017
Are you talking about Jessicas (in CC now) outlining patch? That implements a MachineModule pass, and outlines outline across an LLVM IR module.
I don't know how the LLVM JITs work and in what granularity they create modules. If you end up putting every function into an own module you probably won't see any outlining, if you JIT many functions at once coming from a single module you should get outlining across them.
> On Feb 16, 2017, at 8:51 AM, David Chisnall via llvm-dev <llvm-dev at lists.llvm.org> wrote:
> On 16 Feb 2017, at 16:17, David Blaikie via llvm-dev <llvm-dev at lists.llvm.org> wrote:
>> Optimization passes (any transformation to IR except splitting Modules) is performed by the general LLVM optimizations, not by ORC itself.
>> LLVM (in either the general optimization libraries, or in ORC) doesn't currently have an outlining pass, as far as I know. I know it's something people talk about doing/wanting, but I don't believe it's been attempted/implemented so far.
> The proposed outlining pass happens after lowering to machine instructions, as it’s easier to perform the matching there. Note; however, that it would be quite difficult to fit this into a JIT compilation flow. For latency, you typically wish to JIT as little as possible at a time (often single functions), yet for outlining to work well you must have multiple functions that contain duplication. It’s unclear how these two would compose.
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
More information about the llvm-dev