Skip to content

Commit 6720ce7

Browse files
authored
[Docs][llvm-exegesis] Clarify AArch64 support (#114989)
Claiming AArch64 support for llvm-exegesis is a bit of a stretch in my opinion as only a couple of opcodes with GPR64 operands will work for snippet benchmarking, so I propose to clarify that AArch64 support is very experimental. Also added some clarifications about its libpfm4 dependency.
1 parent 490e58a commit 6720ce7

File tree

2 files changed

+20
-8
lines changed

2 files changed

+20
-8
lines changed

llvm/docs/CommandGuide/llvm-exegesis.rst

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,22 @@ snippets.
3333
SUPPORTED PLATFORMS
3434
-------------------
3535

36-
:program:`llvm-exegesis` currently only supports X86 (64-bit only), ARM (AArch64
37-
only), MIPS, and PowerPC (PowerPC64LE only) on Linux for benchmarking. Not all
38-
benchmarking functionality is guaranteed to work on every platform.
39-
:program:`llvm-exegesis` also has a separate analysis mode that is supported
40-
on every platform that LLVM is.
36+
:program:`llvm-exegesis` currently only supports X86 (64-bit only), ARM
37+
(AArch64 only, snippet generation is sparse), MIPS, and PowerPC (PowerPC64LE
38+
only) on Linux for benchmarking. Not all benchmarking functionality is
39+
guaranteed to work on every platform. :program:`llvm-exegesis` also has a
40+
separate analysis mode that is supported on every platform that LLVM is.
41+
42+
To enable benchmarking in llvm-exegesis, LLVM must be configured and built with
43+
`LLVM_ENABLE_LIBPFM` enabled, as :program:`llvm-exegesis` depends on libpfm4
44+
for accessing performance counters. Benchmarking may fail if the target CPU is
45+
unsupported by libpfm. This can be verified by setting `LIBPFM_VERBOSE` and
46+
`LIBPFM_DEBUG` environment variables to enable verbose or debug mode for
47+
libpfm. If libpfm is installed in a non-standard directory, LLVM can be
48+
configured to locate the necessary library and header files by setting
49+
`LIBRARY_PATH`, `C_INCLUDE_PATH`, and `CPLUS_INCLUDE_PATH` environment
50+
variables. Additionally, `LD_LIBRARY_PATH` should be set so that
51+
:program:`llvm-exegesis` can locate the libpfm library during execution.
4152

4253
SNIPPET ANNOTATIONS
4354
-------------------

llvm/tools/llvm-exegesis/README.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ Analysis mode in `llvm-exegesis` is supported on all platforms on which LLVM is.
1313
#### Currently Supported Operating Systems for Benchmarking
1414

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

1919
The subprocess execution mode and memory annotations currently only supports
2020
Linux due to a heavy reliance on many Linux specific syscalls/syscall
@@ -28,7 +28,8 @@ architectures:
2828
* 64-bit only due to this being the only implemented calling convention
2929
in `llvm-exegesis` currently.
3030
* ARM
31-
* AArch64 only
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.
3233
* MIPS
3334
* PowerPC (PowerPC64LE only)
3435

0 commit comments

Comments
 (0)