llvm-capstone/llvm/examples
Praveen Velliengiri 3b1b56d3fb [ORCv2] - New Speculate Query Implementation
Summary:
This patch introduces, SequenceBBQuery - new heuristic to find likely next callable functions it tries to find the blocks with calls in order of execution sequence of Blocks.

It still uses BlockFrequencyAnalysis to find high frequency blocks. For a handful of hottest blocks (plan to customize), the algorithm traverse and discovered the caller blocks along the way to Entry Basic Block and Exit Basic Block. It uses Block Hint, to stop traversing the already visited blocks in both direction. It implicitly assumes that once the block is visited during discovering entry or exit nodes, revisiting them again does not add much. It also branch probability info (cached result) to traverse only hot edges (planned to customize) from hot blocks. Without BPI, the algorithm mostly return's all the blocks in the CFG with calls.

It also changes the heuristic queries, so they don't maintain states. Hence it is safe to call from multiple threads.

It also implements, new instrumentation to avoid jumping into JIT on every call to the function with the help _orc_speculate.decision.block and _orc_speculate.block.

"Speculator Registration Mechanism is also changed" - kudos to @lhames

Open to review, mostly looking to change implementation of SequeceBBQuery heuristics with good data structure choices.

Reviewers: lhames, dblaikie

Reviewed By: lhames

Subscribers: mgorny, hiraditya, mgrang, llvm-commits, lhames

Tags: #speculative_compilation_in_orc, #llvm

Differential Revision: https://reviews.llvm.org/D66399

llvm-svn: 370092
2019-08-27 18:23:36 +00:00
..
BrainF Rename F_{None,Text,Append} to OF_{None,Text,Append}. NFC 2019-08-05 05:43:48 +00:00
ExceptionDemo [llvm] Migrate llvm::make_unique to std::make_unique 2019-08-15 15:54:37 +00:00
Fibonacci [opaque pointer types] Add a FunctionCallee wrapper type, and use it. 2019-02-01 02:28:03 +00:00
HowToUseJIT [llvm] Migrate llvm::make_unique to std::make_unique 2019-08-15 15:54:37 +00:00
HowToUseLLJIT [llvm] Migrate llvm::make_unique to std::make_unique 2019-08-15 15:54:37 +00:00
Kaleidoscope [llvm] Migrate llvm::make_unique to std::make_unique 2019-08-15 15:54:37 +00:00
LLJITExamples [llvm] Migrate llvm::make_unique to std::make_unique 2019-08-15 15:54:37 +00:00
ModuleMaker
OCaml-Kaleidoscope
ParallelJIT [llvm] Migrate llvm::make_unique to std::make_unique 2019-08-15 15:54:37 +00:00
SpeculativeJIT [ORCv2] - New Speculate Query Implementation 2019-08-27 18:23:36 +00:00
CMakeLists.txt Speculative Compilation 2019-08-03 14:42:13 +00:00
LLVMBuild.txt