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 perf-script trace created by Linux perf tool with `script`
  command(the raw perf.data should be profiled 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 Linux perf tool (it should be profiled
   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:: --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.

