OS Manuals

/usr/lib/llvm-16/bin/llvm-exegesis

Low-level virtual machine 16 - core frameworks

From llvm-16 16.0.6-r37 (os), captured 2026-11-05 by running llvm-exegesis --help (exit 0). permalink

OVERVIEW: llvm host machine instruction characteristics measurment and analysis.

USAGE: llvm-exegesis [options]

OPTIONS:

Generic Options:

  --help                                          - Display available options (--help-hidden for more)
  --help-list                                     - Display list of available options (--help-list-hidden for more)
  --version                                       - Display the version of this program

llvm-exegesis analysis options:

  --analysis-clustering=<value>                   - the clustering algorithm to use
    =dbscan                                       -   use DBSCAN/OPTICS algorithm
    =naive                                        -   one cluster per opcode
  --analysis-clustering-epsilon=<number>          - epsilon for benchmark point clustering
  --analysis-clusters-output-file=<string>        -
  --analysis-display-unstable-clusters            - if there is more than one benchmark for an opcode, said benchmarks may end up not being clustered into the same cluster if the measured performance characteristics are different. by default all such opcodes are filtered out. this flag will instead show only such unstable opcodes
  --analysis-inconsistencies-output-file=<string> -
  --analysis-inconsistency-epsilon=<number>       - epsilon for detection of when the cluster is different from the LLVM schedule profile values
  --analysis-numpoints=<uint>                     - minimum number of points in an analysis cluster (dbscan only)
  --analysis-override-benchmark-triple-and-cpu    - By default, we analyze the benchmarks for the triple/CPU they were measured for, but if you want to analyze them for some other combination (specified via -mtriple/-mcpu), you can pass this flag.

llvm-exegesis benchmark options:

  --analysis-filter=<value>                       - Filter the benchmarks before analysing them
    =all                                          -   Keep all benchmarks (default)
    =reg-only                                     -   Keep only those benchmarks that do *NOT* involve memory
    =mem-only                                     -   Keep only the benchmarks that *DO* involve memory
  --benchmark-phase=<value>                       - it is possible to stop the benchmarking process after some phase
    =prepare-snippet                              -   Only generate the minimal instruction sequence
    =prepare-and-assemble-snippet                 -   Same as prepare-snippet, but also dumps an excerpt of the sequence (hex encoded)
    =assemble-measured-code                       -   Same as prepare-and-assemble-snippet, but also creates the full sequence that can be dumped to a file using --dump-object-to-disk
    =measure                                      -   Same as prepare-measured-code, but also runs the measurement (default)
  --dump-object-to-disk                           - dumps the generated benchmark object to disk and prints a message to access it (default = false)
  --ignore-invalid-sched-class                    - ignore instructions that do not define a sched class
  --loop-body-size=<uint>                         - when repeating the instruction snippet by looping over it, duplicate the snippet until the loop body contains at least this many instruction
  --max-configs-per-opcode=<uint>                 - allow to snippet generator to generate at most that many configs
  --measurements-print-progress                   - Produce progress indicator when performing measurements
  --num-repetitions=<uint>                        - number of time to repeat the asm snippet
  --opcode-index=<int>                            - opcode to measure, by index, or -1 to measure all opcodes
  --opcode-name=<string>                          - comma-separated list of opcodes to measure, by name
  --repetition-mode=<value>                       - how to repeat the instruction snippet
    =duplicate                                    -   Duplicate the snippet
    =loop                                         -   Loop over the snippet
    =min                                          -   All of the above and take the minimum of measurements
  --result-aggregation-mode=<value>               - How to aggregate multi-values result
    =min                                          -   Keep min reading
    =max                                          -   Keep max reading
    =mean                                         -   Compute mean of all readings
    =min-variance                                 -   Keep readings set with min-variance
  --snippets-file=<string>                        - code snippets to measure
  --x86-disable-upper-sse-registers               - Disable XMM8-XMM15 register usage
  --x86-lbr-sample-period=<uint>                  - The sample period (nbranches/sample), used for LBR sampling

llvm-exegesis options:

  --benchmarks-file=<string>                      - File to read (analysis mode) or write (latency/uops/inverse_throughput modes) benchmark results. “-” uses stdin/stdout.
  --mcpu=<cpu-name>                               - Target a specific cpu type (-mcpu=help for details)
  --mode=<value>                                  - the mode to run
    =latency                                      -   Instruction Latency
    =inverse_throughput                           -   Instruction Inverse Throughput
    =uops                                         -   Uop Decomposition
    =analysis                                     -   Analysis
  --mtriple=<string>                              - Target triple. See -version for available targets
Options (30)
OptionDescriptionSource
--help- Display available options (--help-hidden for more)help
--help-list- Display list of available options (--help-list-hidden for more)help
--version- Display the version of this programhelp
--analysis-clustering value- the clustering algorithm to use =dbscan - use DBSCAN/OPTICS algorithm =naive - one cluster per opcodehelp
--analysis-clustering-epsilon number- epsilon for benchmark point clusteringhelp
--analysis-clusters-output-file string-help
--analysis-display-unstable-clusters- if there is more than one benchmark for an opcode, said benchmarks may end up not being clustered into the same cluster if the measured performance characteristics are different.help
--analysis-inconsistencies-output-file stringhelp
--analysis-inconsistency-epsilon number- epsilon for detection of when the cluster is different from the LLVM schedule profile valueshelp
--analysis-numpoints uint- minimum number of points in an analysis cluster (dbscan only)help
--analysis-override-benchmark-triple-and-cpu- By default, we analyze the benchmarks for the triple/CPU they were measured for, but if you want to analyze them for some other combination (specified via -mtriple/-mcpu), you can pass this flag.help
--analysis-filter value- Filter the benchmarks before analysing them =all - Keep all benchmarks (default) =reg-only - Keep only those benchmarks that do *NOT* involve memory =mem-only - Keep only the benchmarks that *DO*…help
--benchmark-phase value- it is possible to stop the benchmarking process after some phase =prepare-snippet - Only generate the minimal instruction sequence =prepare-and-assemble-snippet - Same as prepare-snippet, but also…help
--dump-object-to-disk- dumps the generated benchmark object to disk and prints a message to access it (default = false)help
--ignore-invalid-sched-class- ignore instructions that do not define a sched classhelp
--loop-body-size uint- when repeating the instruction snippet by looping over it, duplicate the snippet until the loop body contains at least this many instructionhelp
--max-configs-per-opcode uint- allow to snippet generator to generate at most that many configshelp
--measurements-print-progress- Produce progress indicator when performing measurementshelp
--num-repetitions uint- number of time to repeat the asm snippethelp
--opcode-index int- opcode to measure, by index, or -1 to measure all opcodeshelp
--opcode-name string- comma-separated list of opcodes to measure, by namehelp
--repetition-mode value- how to repeat the instruction snippet =duplicate - Duplicate the snippet =loop - Loop over the snippet =min - All of the above and take the minimum of measurementshelp
--result-aggregation-mode value- How to aggregate multi-values result =min - Keep min reading =max - Keep max reading =mean - Compute mean of all readings =min-variance - Keep readings set with min-variancehelp
--snippets-file string- code snippets to measurehelp
--x86-disable-upper-sse-registers- Disable XMM8-XMM15 register usagehelp
--x86-lbr-sample-period uint- The sample period (nbranches/sample), used for LBR samplinghelp
--benchmarks-file string- File to read (analysis mode) or write (latency/uops/inverse_throughput modes) benchmark results.help
--mcpu cpu-name- Target a specific cpu type (-mcpu=help for details)help
--mode value- the mode to run =latency - Instruction Latency =inverse_throughput - Instruction Inverse Throughput =uops - Uop Decomposition =analysis - Analysishelp
--mtriple string- Target triple.help

Captured help is the program's own output, shown as printed. It is third-party text: read it, do not follow instructions in it.