1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-19 02:52:53 +02:00
llvm-mirror/lib/ExecutionEngine
Lang Hames 460e0b8ba2 [MCJIT] Profile the code generated by MCJIT engine using Intel VTune profiler
Patch by Elena Kovanova. Thanks Elena!

Problem:

LLVM already has a feature to profile the JIT-compiled code with VTune. This is
done using Intel JIT Profiling API (https://github.com/intel/ittapi). Function
information is captured by VTune as soon as the function is JIT-compiled. We
tried to use the same approach to report the function information generated by
the MCJIT engine – read parsing the debug information for in-memory ELF module
and report it using JIT API. As the results, we figured out that it did not work
properly for the following cases: inline functions, the functions located in
multiple source files, the functions having several bodies (address ranges).

Solution:

To overcome limitations described above, we have introduced new APIs as a part
of Intel ITT APIs to report the entire in-memory ELF module to be further
processed as regular ELF binaries with debug information.

This patch

1. Switches LLVM to open source version of Intel ITT/JIT APIs
(https://github.com/intel/ittapi) to keep it always up to date.

2. Adds support of profiling the code generated by MCJIT engine using Intel
VTune profiler

Another separate patch will get rid of obsolete Intel ITT APIs stuff, having
LLVM already switched to https://github.com/intel/ittapi.

Differential Revision: https://reviews.llvm.org/D86435
2020-11-16 19:28:14 +11:00
..
IntelJITEvents [MCJIT] Profile the code generated by MCJIT engine using Intel VTune profiler 2020-11-16 19:28:14 +11:00
Interpreter llvmbuildectomy - replace llvm-build by plain cmake 2020-11-13 10:35:24 +01:00
JITLink llvmbuildectomy - replace llvm-build by plain cmake 2020-11-13 10:35:24 +01:00
MCJIT llvmbuildectomy - replace llvm-build by plain cmake 2020-11-13 10:35:24 +01:00
OProfileJIT llvmbuildectomy - replace llvm-build by plain cmake 2020-11-13 10:35:24 +01:00
Orc llvmbuildectomy - remove conflict file 2020-11-13 15:56:05 +01:00
PerfJITEvents llvmbuildectomy - replace llvm-build by plain cmake 2020-11-13 10:35:24 +01:00
RuntimeDyld llvmbuildectomy - replace llvm-build by plain cmake 2020-11-13 10:35:24 +01:00
CMakeLists.txt llvmbuildectomy - replace llvm-build by plain cmake 2020-11-13 10:35:24 +01:00
ExecutionEngine.cpp [ORC] Remove OrcV1 APIs. 2020-10-18 21:02:44 -07:00
ExecutionEngineBindings.cpp [MCJIT] Check for RuntimeDyld errors in MCJIT::finalizeLoadedModules. 2020-03-13 13:58:41 -07:00
GDBRegistrationListener.cpp Replace llvm::MutexGuard/UniqueLock with their standard equivalents 2019-08-07 10:57:25 +00:00
SectionMemoryManager.cpp Do not map read-only data memory sections with EXECUTE flags. 2020-08-05 10:51:48 +02:00
TargetSelect.cpp [ExecutionEngine] Re-enable FastISel for non-iOS arm targets. 2020-01-11 10:49:59 -08:00