[AMDGPU][True16][CodeGen] true16 codegen pattern for v_med3_u/i16 (#121850)
[llvm-project.git] / llvm / tools / llvm-exegesis / README.md
blobdeb0f230f032fe6cab170f541ca6166d25679e54
1 # llvm-exegesis
3 `llvm-exegesis` is a benchmarking tool that accepts or generates snippets and
4 can measure characteristics of those snippets by executing it while keeping track
5 of performance counters.
7 ### Currently Supported Platforms
9 `llvm-exegesis` is quite platform-dependent and currently only supports a couple
10 platform configurations for benchmarking. The limitations are listed below.
11 Analysis mode in `llvm-exegesis` is supported on all platforms on which LLVM is.
13 #### Currently Supported Operating Systems for Benchmarking
15 Currently, `llvm-exegesis`  only supports benchmarking on Linux. This is mainly
16 due to a dependency on the Linux perf subsystem for reading
17 performance counters.
19 The subprocess execution mode and memory annotations currently only supports
20 Linux due to a heavy reliance on many Linux specific syscalls/syscall
21 implementations.
23 #### Currently Supported Architectures for Benchmarking
25 Currently, using `llvm-exegesis` for benchmarking is supported on the following
26 architectures:
27 * x86
28   * 64-bit only due to this being the only implemented calling convention
29     in `llvm-exegesis` currently.
30 * ARM
31   * Very experimental AArch64 support only: most opcodes probably won't work as
32     e.g. pseudo instructions and most register classes are not supported.
33 * MIPS
34 * PowerPC (PowerPC64LE only)
36 Note that not all benchmarking functionality is guaranteed to work on all platforms.
38 Memory annotations are currently only supported on 64-bit X86. There is no
39 inherent limitations for porting memory annotations to other architectures, but
40 parts of the test harness are implemented as MCJITed assembly that is generated
41 in `./lib/X86/Target.cpp` that would need to be implemented on other architectures
42 to bring up support.