llvm-capstone/llvm/tools/llvm-exegesis
Aiden Grossman 7da7695839
[llvm-exegesis] Add additional validation counters (#76788)
This patch adds support for additional types of validation counters and
also adds mappings between these new validation counter types and
physical counters on the hardware for microarchitectures that I have the
ability to test on.
2024-01-23 00:06:46 -08:00
..
lib [llvm-exegesis] Add additional validation counters (#76788) 2024-01-23 00:06:46 -08:00
CMakeLists.txt Split out CodeGenTypes from CodeGen for LLT/MVT 2023-05-03 00:13:20 +09:00
llvm-exegesis.cpp [llvm-exegesis] Add additional validation counters (#76788) 2024-01-23 00:06:46 -08:00
README.md [Docs][llvm-exegesis] Add documentation for memory annotations 2023-07-18 10:23:07 -07:00

llvm-exegesis

llvm-exegesis is a benchmarking tool that accepts or assembles a snippet and can measure characteristics of that snippet by executing it while keeping track of performance counters.

Currently Supported Platforms

llvm-exegesis is quite platform-dependent and currently only supports a couple platform configurations for benchmarking. The limitations are listed below. Analysis mode in llvm-exegesis is supported on all platforms on which LLVM is.

Currently Supported Operating Systems for Benchmarking

Currently, llvm-exegesis only supports benchmarking on Linux. This is mainly due to a dependency on the Linux perf subsystem for reading performance counters.

The subprocess execution mode and memory annotations currently only supports Linux due to a heavy reliance on many Linux specific syscalls/syscall implementations.

Currently Supported Architectures for Benchmarking

Currently, using llvm-exegesis for benchmarking is supported on the following architectures:

  • x86
    • 64-bit only due to this being the only implemented calling convention in llvm-exegesis currently.
  • ARM
    • AArch64 only
  • MIPS
  • PowerPC (PowerPC64LE only)

Note that not benchmarking functionality is guaranteed to work on all platforms.

Memory annotations are currently only supported on 64-bit X86. There is no inherent limitations for porting memory annotations to other architectures, but parts of the test harness are implemented as MCJITed assembly that is generated in ./lib/X86/Target.cpp that would need to be implemented on other architectures to bring up support.