Files
clang-p2996/llvm/tools/llvm-exegesis
Aiden Grossman e093bb9e5a Reland "[llvm-exegesis] Add support for pinning benchmarking process to a CPU (#85168)" (#109688)
This reverts commit 2cd20c2556.

This relands commit 9886788a8a.

This was causing more buildbot failures due to getcpu not being
available with glibc <=2.29. This patch fixes that by directly making
the syscall, assuming the syscall number macro is available.
2024-09-23 11:32:19 -07:00
..

llvm-exegesis

llvm-exegesis is a benchmarking tool that accepts or generates snippets and can measure characteristics of those snippets 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 all 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.