diff options
| author | Clement Courbet <courbet@google.com> | 2018-04-04 08:13:32 +0000 |
|---|---|---|
| committer | Clement Courbet <courbet@google.com> | 2018-04-04 08:13:32 +0000 |
| commit | 7287b2c1ec669791df8b1c704e2457338f6bee47 (patch) | |
| tree | 43bc8f285b995f2f9bae92ce122bf0425c55a718 /llvm/docs/CommandGuide | |
| parent | 4f98e0bc030dacf65af981968a8f4f8234f5f32f (diff) | |
| download | bcm5719-llvm-7287b2c1ec669791df8b1c704e2457338f6bee47.tar.gz bcm5719-llvm-7287b2c1ec669791df8b1c704e2457338f6bee47.zip | |
Add llvm-exegesis tool.
Summary:
[llvm-exegesis][RFC] Automatic Measurement of Instruction Latency/Uops
This is the code corresponding to the RFC "llvm-exegesis Automatic Measurement of Instruction Latency/Uops".
The RFC is available on the LLVM mailing lists as well as the following document
for easier reading:
https://docs.google.com/document/d/1QidaJMJUyQdRrFKD66vE1_N55whe0coQ3h1GpFzz27M/edit?usp=sharing
Subscribers: mgorny, gchatelet, orwant, llvm-commits
Differential Revision: https://reviews.llvm.org/D44519
llvm-svn: 329156
Diffstat (limited to 'llvm/docs/CommandGuide')
| -rw-r--r-- | llvm/docs/CommandGuide/index.rst | 1 | ||||
| -rw-r--r-- | llvm/docs/CommandGuide/llvm-exegesis.rst | 58 |
2 files changed, 59 insertions, 0 deletions
diff --git a/llvm/docs/CommandGuide/index.rst b/llvm/docs/CommandGuide/index.rst index d596667abcb..95efffdb656 100644 --- a/llvm/docs/CommandGuide/index.rst +++ b/llvm/docs/CommandGuide/index.rst @@ -53,5 +53,6 @@ Developer Tools tblgen lit llvm-build + llvm-exegesis llvm-pdbutil llvm-readobj diff --git a/llvm/docs/CommandGuide/llvm-exegesis.rst b/llvm/docs/CommandGuide/llvm-exegesis.rst new file mode 100644 index 00000000000..f14c4f7980a --- /dev/null +++ b/llvm/docs/CommandGuide/llvm-exegesis.rst @@ -0,0 +1,58 @@ +llvm-exegesis - LLVM Machine Instruction Benchmark +================================================== + +SYNOPSIS +-------- + +:program:`llvm-exegesis` [*options*] + +DESCRIPTION +----------- + +:program:`llvm-exegesis` is a benchmarking tool that uses information available +in LLVM to measure host machine instruction characteristics like latency or port +decomposition. + +Given an LLVM opcode name and a benchmarking mode, :program:`llvm-exegesis` +generates a code snippet that makes execution as serial (resp. as parallel) as +possible so that we can measure the latency (resp. uop decomposition) of the +instruction. +The code snippet is jitted and executed on the host subtarget. The time taken +(resp. resource usage) is measured using hardware performance counters. The +result is printed out as YAML to the standard output. + +The main goal of this tool is to automatically (in)validate the LLVM's TableDef +scheduling models. + +OPTIONS +------- + +.. option:: -help + + Print a summary of command line options. + +.. option:: -opcode-index=<LLVM opcode index> + + Specify the opcode to measure, by index. + Either `opcode-index` or `opcode-name` must be set. + +.. option:: -opcode-name=<LLVM opcode name> + + Specify the opcode to measure, by name. + Either `opcode-index` or `opcode-name` must be set. + +.. option:: -benchmark-mode=[Latency|Uops] + + Specify which characteristic of the opcode to measure. + +.. option:: -num-repetitions=<Number of repetition> + + Specify the number of repetitions of the asm snippet. + Higher values lead to more accurate measurements but lengthen the benchmark. + + +EXIT STATUS +----------- + +:program:`llvm-exegesis` returns 0 on success. Otherwise, an error message is +printed to standard error, and the tool returns a non 0 value. |

