diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2015-12-30 11:46:15 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2015-12-30 11:46:15 +0000 |
commit | dd58ef019b700900793a1eb48b52123db01b654e (patch) | |
tree | fcfbb4df56a744f4ddc6122c50521dd3f1c5e196 /docs/CommandGuide | |
parent | 2fe5752e3a7c345cdb59e869278d36af33c13fa4 (diff) |
Notes
Diffstat (limited to 'docs/CommandGuide')
-rw-r--r-- | docs/CommandGuide/index.rst | 1 | ||||
-rw-r--r-- | docs/CommandGuide/lit.rst | 5 | ||||
-rw-r--r-- | docs/CommandGuide/llc.rst | 6 | ||||
-rw-r--r-- | docs/CommandGuide/lli.rst | 168 | ||||
-rw-r--r-- | docs/CommandGuide/llvm-lib.rst | 31 | ||||
-rw-r--r-- | docs/CommandGuide/llvm-profdata.rst | 62 | ||||
-rw-r--r-- | docs/CommandGuide/llvm-symbolizer.rst | 16 |
7 files changed, 159 insertions, 130 deletions
diff --git a/docs/CommandGuide/index.rst b/docs/CommandGuide/index.rst index ed18cd048aa5..46db57f1c845 100644 --- a/docs/CommandGuide/index.rst +++ b/docs/CommandGuide/index.rst @@ -21,6 +21,7 @@ Basic Commands lli llvm-link llvm-ar + llvm-lib llvm-nm llvm-config llvm-diff diff --git a/docs/CommandGuide/lit.rst b/docs/CommandGuide/lit.rst index e820eef2faff..0ec14bb2236e 100644 --- a/docs/CommandGuide/lit.rst +++ b/docs/CommandGuide/lit.rst @@ -80,6 +80,11 @@ OUTPUT OPTIONS Show more information on test failures, for example the entire test output instead of just the test result. +.. option:: -a, --show-all + + Show more information about all tests, for example the entire test + commandline and output. + .. option:: --no-progress-bar Do not use curses based progress bar. diff --git a/docs/CommandGuide/llc.rst b/docs/CommandGuide/llc.rst index 8d5c9ce8f8a1..5094259f9f95 100644 --- a/docs/CommandGuide/llc.rst +++ b/docs/CommandGuide/llc.rst @@ -127,6 +127,12 @@ End-user Options implements an LLVM target. This will permit the target name to be used with the :option:`-march` option so that code can be generated for that target. +.. option:: -meabi=[default|gnu|4|5] + + Specify which EABI version should conform to. Valid EABI versions are *gnu*, + *4* and *5*. Default value (*default*) depends on the triple. + + Tuning/Configuration Options ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/docs/CommandGuide/lli.rst b/docs/CommandGuide/lli.rst index 502fbd609353..9da13ee47e0e 100644 --- a/docs/CommandGuide/lli.rst +++ b/docs/CommandGuide/lli.rst @@ -1,172 +1,127 @@ lli - directly execute programs from LLVM bitcode ================================================= - SYNOPSIS -------- - -**lli** [*options*] [*filename*] [*program args*] - +:program:`lli` [*options*] [*filename*] [*program args*] DESCRIPTION ----------- +:program:`lli` directly executes programs in LLVM bitcode format. It takes a program +in LLVM bitcode format and executes it using a just-in-time compiler or an +interpreter. -**lli** directly executes programs in LLVM bitcode format. It takes a program -in LLVM bitcode format and executes it using a just-in-time compiler, if one is -available for the current architecture, or an interpreter. **lli** takes all of -the same code generator options as llc|llc, but they are only effective when -**lli** is using the just-in-time compiler. +:program:`lli` is *not* an emulator. It will not execute IR of different architectures +and it can only interpret (or JIT-compile) for the host architecture. -If *filename* is not specified, then **lli** reads the LLVM bitcode for the +The JIT compiler takes the same arguments as other tools, like :program:`llc`, +but they don't necessarily work for the interpreter. + +If `filename` is not specified, then :program:`lli` reads the LLVM bitcode for the program from standard input. The optional *args* specified on the command line are passed to the program as arguments. - GENERAL OPTIONS --------------- - - -**-fake-argv0**\ =\ *executable* +.. option:: -fake-argv0=executable Override the ``argv[0]`` value passed into the executing program. - - -**-force-interpreter**\ =\ *{false,true}* +.. option:: -force-interpreter={false,true} If set to true, use the interpreter even if a just-in-time compiler is available for this architecture. Defaults to false. - - -**-help** +.. option:: -help Print a summary of command line options. +.. option:: -load=pluginfilename - -**-load**\ =\ *pluginfilename* - - Causes **lli** to load the plugin (shared object) named *pluginfilename* and use + Causes :program:`lli` to load the plugin (shared object) named *pluginfilename* and use it for optimization. - - -**-stats** +.. option:: -stats Print statistics from the code-generation passes. This is only meaningful for the just-in-time compiler, at present. - - -**-time-passes** +.. option:: -time-passes Record the amount of time needed for each code-generation pass and print it to standard error. +.. option:: -version - -**-version** - - Print out the version of **lli** and exit without doing anything else. - - - + Print out the version of :program:`lli` and exit without doing anything else. TARGET OPTIONS -------------- - - -**-mtriple**\ =\ *target triple* +.. option:: -mtriple=target triple Override the target triple specified in the input bitcode file with the specified string. This may result in a crash if you pick an architecture which is not compatible with the current system. - - -**-march**\ =\ *arch* +.. option:: -march=arch Specify the architecture for which to generate assembly, overriding the target encoded in the bitcode file. See the output of **llc -help** for a list of valid architectures. By default this is inferred from the target triple or autodetected to the current architecture. - - -**-mcpu**\ =\ *cpuname* +.. option:: -mcpu=cpuname Specify a specific chip in the current architecture to generate code for. By default this is inferred from the target triple and autodetected to the current architecture. For a list of available CPUs, use: **llvm-as < /dev/null | llc -march=xyz -mcpu=help** - - -**-mattr**\ =\ *a1,+a2,-a3,...* +.. option:: -mattr=a1,+a2,-a3,... Override or control specific attributes of the target, such as whether SIMD operations are enabled or not. The default set of attributes is set by the current CPU. For a list of available attributes, use: **llvm-as < /dev/null | llc -march=xyz -mattr=help** - - - FLOATING POINT OPTIONS ---------------------- - - -**-disable-excess-fp-precision** +.. option:: -disable-excess-fp-precision Disable optimizations that may increase floating point precision. - - -**-enable-no-infs-fp-math** +.. option:: -enable-no-infs-fp-math Enable optimizations that assume no Inf values. - - -**-enable-no-nans-fp-math** +.. option:: -enable-no-nans-fp-math Enable optimizations that assume no NAN values. +.. option:: -enable-unsafe-fp-math - -**-enable-unsafe-fp-math** - - Causes **lli** to enable optimizations that may decrease floating point + Causes :program:`lli` to enable optimizations that may decrease floating point precision. +.. option:: -soft-float - -**-soft-float** - - Causes **lli** to generate software floating point library calls instead of + Causes :program:`lli` to generate software floating point library calls instead of equivalent hardware instructions. - - - CODE GENERATION OPTIONS ----------------------- - - -**-code-model**\ =\ *model* +.. option:: -code-model=model Choose the code model from: - .. code-block:: perl default: Target default code model @@ -175,42 +130,30 @@ CODE GENERATION OPTIONS medium: Medium code model large: Large code model - - - -**-disable-post-RA-scheduler** +.. option:: -disable-post-RA-scheduler Disable scheduling after register allocation. - - -**-disable-spill-fusing** +.. option:: -disable-spill-fusing Disable fusing of spill code into instructions. - - -**-jit-enable-eh** +.. option:: -jit-enable-eh Exception handling should be enabled in the just-in-time compiler. - - -**-join-liveintervals** +.. option:: -join-liveintervals Coalesce copies (default=true). +.. option:: -nozero-initialized-in-bss + Don't place zero-initialized symbols into the BSS section. -**-nozero-initialized-in-bss** Don't place zero-initialized symbols into the BSS section. - - - -**-pre-RA-sched**\ =\ *scheduler* +.. option:: -pre-RA-sched=scheduler Instruction schedulers available (before register allocation): - .. code-block:: perl =default: Best scheduler for the target @@ -221,74 +164,51 @@ CODE GENERATION OPTIONS =list-tdrr: Top-down register reduction list scheduling =list-td: Top-down list scheduler -print-machineinstrs - Print generated machine code - - - -**-regalloc**\ =\ *allocator* +.. option:: -regalloc=allocator Register allocator to use (default=linearscan) - .. code-block:: perl =bigblock: Big-block register allocator =linearscan: linear scan register allocator =local - local register allocator =simple: simple register allocator - - - -**-relocation-model**\ =\ *model* +.. option:: -relocation-model=model Choose relocation model from: - .. code-block:: perl =default: Target default relocation model =static: Non-relocatable code =pic - Fully relocatable, position independent code =dynamic-no-pic: Relocatable external references, non-relocatable code - - - -**-spiller** +.. option:: -spiller Spiller to use (default=local) - .. code-block:: perl =simple: simple spiller =local: local spiller - - - -**-x86-asm-syntax**\ =\ *syntax* +.. option:: -x86-asm-syntax=syntax Choose style of code to emit from X86 backend: - .. code-block:: perl =att: Emit AT&T-style assembly =intel: Emit Intel-style assembly - - - - EXIT STATUS ----------- - -If **lli** fails to load the program, it will exit with an exit code of 1. +If :program:`lli` fails to load the program, it will exit with an exit code of 1. Otherwise, it will return the exit code of the program it executes. - SEE ALSO -------- - -llc|llc +:program:`llc` diff --git a/docs/CommandGuide/llvm-lib.rst b/docs/CommandGuide/llvm-lib.rst new file mode 100644 index 000000000000..ecd0a7db7e37 --- /dev/null +++ b/docs/CommandGuide/llvm-lib.rst @@ -0,0 +1,31 @@ +llvm-lib - LLVM lib.exe compatible library tool +=============================================== + + +SYNOPSIS +-------- + + +**llvm-lib** [/libpath:<path>] [/out:<output>] [/llvmlibthin] +[/ignore] [/machine] [/nologo] [files...] + + +DESCRIPTION +----------- + + +The **llvm-lib** command is intended to be a ``lib.exe`` compatible +tool. See https://msdn.microsoft.com/en-us/library/7ykb2k5f for the +general description. + +**llvm-lib** has the following extensions: + +* Bitcode files in symbol tables. + **llvm-lib** includes symbols from both bitcode files and regular + object files in the symbol table. + +* Creating thin archives. + The /llvmlibthin option causes **llvm-lib** to create thin archive + that contain only the symbol table and the header for the various + members. These files are much smaller, but are not compatible with + link.exe (lld can handle them). diff --git a/docs/CommandGuide/llvm-profdata.rst b/docs/CommandGuide/llvm-profdata.rst index 7053b7fa710e..74fe4ee9d219 100644 --- a/docs/CommandGuide/llvm-profdata.rst +++ b/docs/CommandGuide/llvm-profdata.rst @@ -28,7 +28,7 @@ MERGE SYNOPSIS ^^^^^^^^ -:program:`llvm-profdata merge` [*options*] [*filenames...*] +:program:`llvm-profdata merge` [*options*] [*filename...*] DESCRIPTION ^^^^^^^^^^^ @@ -37,6 +37,14 @@ DESCRIPTION generated by PGO instrumentation and merges them together into a single indexed profile data file. +By default profile data is merged without modification. This means that the +relative importance of each input file is proportional to the number of samples +or counts it contains. In general, the input from a longer training run will be +interpreted as relatively more important than a shorter run. Depending on the +nature of the training runs it may be useful to adjust the weight given to each +input file by using the ``-weighted-input`` option. + + OPTIONS ^^^^^^^ @@ -49,28 +57,63 @@ OPTIONS Specify the output file name. *Output* cannot be ``-`` as the resulting indexed profile data can't be written to standard output. +.. option:: -weighted-input=weight,filename + + Specify an input file name along with a weight. The profile counts of the input + file will be scaled (multiplied) by the supplied ``weight``, where where ``weight`` + is a decimal integer >= 1. Input files specified without using this option are + assigned a default weight of 1. Examples are shown below. + .. option:: -instr (default) Specify that the input profile is an instrumentation-based profile. .. option:: -sample - Specify that the input profile is a sample-based profile. When using - sample-based profiles, the format of the generated file can be generated - in one of three ways: + Specify that the input profile is a sample-based profile. + + The format of the generated file can be generated in one of three ways: .. option:: -binary (default) - Emit the profile using a binary encoding. + Emit the profile using a binary encoding. For instrumentation-based profile + the output format is the indexed binary format. .. option:: -text - Emit the profile in text mode. + Emit the profile in text mode. This option can also be used with both + sample-based and instrumentation-based profile. When this option is used + the profile will be dumped in the text format that is parsable by the profile + reader. .. option:: -gcc Emit the profile using GCC's gcov format (Not yet supported). +EXAMPLES +^^^^^^^^ +Basic Usage ++++++++++++ +Merge three profiles: + +:: + + llvm-profdata merge foo.profdata bar.profdata baz.profdata -output merged.profdata + +Weighted Input +++++++++++++++ +The input file `foo.profdata` is especially important, multiply its counts by 10: + +:: + + llvm-profdata merge -weighted-input=10,foo.profdata bar.profdata baz.profdata -output merged.profdata + +Exactly equivalent to the previous invocation (explicit form; useful for programmatic invocation): + +:: + + llvm-profdata merge -weighted-input=10,foo.profdata -weighted-input=1,bar.profdata -weighted-input=1,baz.profdata -output merged.profdata + .. program:: llvm-profdata show .. _profdata-show: @@ -121,6 +164,13 @@ OPTIONS Specify that the input profile is an instrumentation-based profile. +.. option:: -text + + Instruct the profile dumper to show profile counts in the text format of the + instrumentation-based profile data representation. By default, the profile + information is dumped in a more human readable form (also in text) with + annotations. + .. option:: -sample Specify that the input profile is a sample-based profile. diff --git a/docs/CommandGuide/llvm-symbolizer.rst b/docs/CommandGuide/llvm-symbolizer.rst index 96720e633f2f..ec4178e4e7ab 100644 --- a/docs/CommandGuide/llvm-symbolizer.rst +++ b/docs/CommandGuide/llvm-symbolizer.rst @@ -56,6 +56,14 @@ EXAMPLE foo(int) /tmp/a.cc:12 + $cat addr.txt + 0x40054d + $llvm-symbolizer -inlining -print-address -pretty-print -obj=addr.exe < addr.txt + 0x40054d: inc at /tmp/x.c:3:3 + (inlined by) main at /tmp/x.c:9:0 + $llvm-symbolizer -inlining -pretty-print -obj=addr.exe < addr.txt + inc at /tmp/x.c:3:3 + (inlined by) main at /tmp/x.c:9:0 OPTIONS ------- @@ -98,6 +106,14 @@ OPTIONS location, look for the debug info at the .dSYM path provided via the ``-dsym-hint`` flag. This flag can be used multiple times. +.. option:: -print-address + + Print address before the source code location. Defaults to false. + +.. option:: -pretty-print + + Print human readable output. If ``-inlining`` is specified, enclosing scope is + prefixed by (inlined by). Refer to listed examples. EXIT STATUS ----------- |