| # llvm-profgen - LLVM SPGO profile generation tool |
| |
| :::{program} llvm-profgen |
| ::: |
| |
| ## SYNOPSIS |
| |
| {program}`llvm-profgen` \[*commands*\] \[*options*\] |
| |
| ## DESCRIPTION |
| |
| The {program}`llvm-profgen` utility generates a profile data file |
| from given perf script data files for sample-based profile guided |
| optimization(SPGO). |
| |
| ## COMMANDS |
| |
| At least one of the following commands are required: |
| |
| :::{option} --perfscript=<string[,string,...]> |
| Path of a trace created by the Linux `perf script` command. For LBR or BRBE |
| input, the raw perf data must contain branch stacks, for example from recording |
| with `-b`. |
| ::: |
| |
| :::{option} --etm=<string> |
| Path of the ETM trace file created by ARM CoreSight trace tools. |
| Requires the OpenCSD library version 1.5.4 or higher to be enabled during the build. |
| ::: |
| |
| :::{option} --perfdata=<perfdata>, --pd |
| Path of raw perf data created by the Linux perf tool. For LBR or BRBE input, it |
| must contain branch stacks, for example from recording with `-b`. |
| ::: |
| |
| :::{option} --unsymbolized-profile=<unsymbolized profile>, --up |
| Path of the unsymbolized profile created by `llvm-profgen` with |
| `--skip-symbolization`. |
| ::: |
| |
| :::{option} --llvm-sample-profile=<llvm sample profile> |
| Path of the LLVM sample profile. |
| ::: |
| |
| :::{note} |
| Only one of `--perfscript`, `--perfdata`, `--unsymbolized-profile`, |
| `--llvm-sample-profile`, or `--etm` may be specified at a time. |
| ::: |
| |
| :::{option} --binary=<string[,string,...]> |
| Path of the input profiled binary files. |
| ::: |
| |
| :::{option} --output=<string> |
| Path of the output profile file. |
| ::: |
| |
| ## OPTIONS |
| |
| {program}`llvm-profgen` supports the following options: |
| |
| :::{option} --format=[text|binary|extbinary|compbinary|gcc] |
| Specify the format of the generated profile. Supported \<format> are `text`, |
| `binary`, `extbinary`, `compbinary`, `gcc`, see `llvm-profdata` for more |
| descriptions of the format. |
| ::: |
| |
| :::{option} --show-mmap-events |
| Print mmap events. |
| ::: |
| |
| :::{option} --warn-not-symbolized |
| Warn when an address covered by a recorded mmap range cannot be symbolized. |
| ::: |
| |
| :::{option} --show-disassembly |
| Print disassembled code. |
| ::: |
| |
| :::{option} --x86-asm-syntax=[att|intel] |
| Specify whether to print assembly code in AT&T syntax (the default) or Intel |
| syntax. |
| ::: |
| |
| :::{option} --debug-binary=<debug-binary> |
| Path of debug info binary. `llvm-profgen` will load the DWARF info from |
| it instead of the executable binary. |
| ::: |
| |
| :::{option} --target-triple=<triple> |
| Override the target triple for the binary. This is useful for ETM trace |
| decoding to specify the correct Arm M-profile target. |
| ::: |
| |
| :::{option} --pid |
| Process Id for the profiled executable binary. |
| ::: |
| |
| :::{option} --output=<output> |
| Path of the output profile file. |
| ::: |
| |
| :::{option} --data-access-perftrace=<data-access-perftrace> |
| File path of a Linux perf raw trace (generated by `perf report -D`) |
| consisting of memory access events. |
| ::: |
| |