hanchenye-llvm-project/llvm/docs
Andrea Di Biagio 8b647dcf4b [llvm-mca] Report the number of dispatched micro opcodes in the DispatchStatistics view.
This patch introduces the following changes to the DispatchStatistics view:
 * DispatchStatistics now reports the number of dispatched opcodes instead of
   the number of dispatched instructions.
 * The "Dynamic Dispatch Stall Cycles" table now also reports the percentage of
   stall cycles against the total simulated cycles.

This change allows users to easily compare dispatch group sizes with the
processor DispatchWidth.
Before this change, it was difficult to correlate the two numbers, since
DispatchStatistics view reported numbers of instructions (instead of opcodes).
DispatchWidth defines the maximum size of a dispatch group in terms of number of
micro opcodes.

The other change introduced by this patch is related to how DispatchStage
generates "instruction dispatch" events.
In particular:
 * There can be multiple dispatch events associated with a same instruction
 * Each dispatch event now encapsulates the number of dispatched micro opcodes.

The number of micro opcodes declared by an instruction may exceed the processor
DispatchWidth. Therefore, we cannot assume that instructions are always fully
dispatched in a single cycle.
DispatchStage knows already how to handle instructions declaring a number of
opcodes bigger that DispatchWidth. However, DispatchStage always emitted a
single instruction dispatch event (during the first simulated dispatch cycle)
for instructions dispatched.

With this patch, DispatchStage now correctly notifies multiple dispatch events
for instructions that cannot be dispatched in a single cycle.

A few views had to be modified. Views can no longer assume that there can only
be one dispatch event per instruction.

Tests (and docs) have been updated.

Differential Revision: https://reviews.llvm.org/D51430

llvm-svn: 341055
2018-08-30 10:50:20 +00:00
..
CommandGuide [llvm-mca] Report the number of dispatched micro opcodes in the DispatchStatistics view. 2018-08-30 10:50:20 +00:00
Frontend
HistoricalNotes
PDB
Proposals
TableGen [TableGen] Add a general-purpose JSON backend. 2018-07-11 08:40:19 +00:00
_ocamldoc
_static
_templates
_themes/llvm-theme
tutorial [docs] Fix a typo in KaleidoscopeJIT tutorial 2018-05-08 18:43:27 +00:00
AMDGPUAsmGFX7.rst [AMDGPU][MC][DOC] Updated AMD GPU assembler description 2018-07-27 14:17:15 +00:00
AMDGPUAsmGFX8.rst [AMDGPU][MC][DOC] Updated AMD GPU assembler description 2018-07-27 14:17:15 +00:00
AMDGPUAsmGFX9.rst [AMDGPU][MC][DOC] Updated AMD GPU assembler description 2018-07-27 14:17:15 +00:00
AMDGPUOperandSyntax.rst [AMDGPU][MC][DOC] Updated AMD GPU assembler description 2018-07-27 14:17:15 +00:00
AMDGPUUsage.rst [docs] Turn of `nasm` highlighting for a code block. 2018-08-06 01:19:43 +00:00
ARM-BE-bitcastfail.png
ARM-BE-bitcastsuccess.png
ARM-BE-ld1.png
ARM-BE-ldr.png
AdvancedBuilds.rst
AliasAnalysis.rst [doc] Removed obsolete -count-aa from AliasAnalysis documentation 2018-04-23 13:45:28 +00:00
Atomics.rst
Benchmarking.rst
BigEndianNEON.rst
BitCodeFormat.rst Add the ShadowCallStack attribute 2018-04-03 20:10:40 +00:00
BlockFrequencyTerminology.rst
BranchWeightMetadata.rst
Bugpoint.rst Rename DEBUG macro to LLVM_DEBUG. 2018-05-14 12:53:11 +00:00
CFIVerify.rst [cfi-verify] Abort on unsupported targets 2018-07-16 15:26:44 +00:00
CMake.rst [benchmark] NFC: Turn benchmark ON on all non-Windows buildbots 2018-08-29 08:59:36 +00:00
CMakeLists.txt
CMakePrimer.rst
CodeGenerator.rst [NFC] fix trivial typos in documents 2018-06-15 05:10:09 +00:00
CodeOfConduct.rst
CodingStandards.rst [IR] Replace `isa<TerminatorInst>` with `isTerminator()`. 2018-08-26 09:51:22 +00:00
CommandLine.rst Rename DEBUG macro to LLVM_DEBUG. 2018-05-14 12:53:11 +00:00
CompileCudaWithLLVM.rst
CompilerWriterInfo.rst [docs] Update CompilerWriterInfo.rst for MIPS 2018-06-14 15:16:37 +00:00
Contributing.rst [Docs] Add LLVM for Grad Students to Contributing page. 2018-03-02 14:35:02 +00:00
Coroutines.rst [coroutines] Add support for llvm.coro.noop intrinsics 2018-04-02 16:55:12 +00:00
CoverageMappingFormat.rst
DebuggingJITedCode.rst
DeveloperPolicy.rst Update the coding standards and developer policy documentation surrounding whitespace. 2018-08-10 17:26:07 +00:00
Docker.rst Migrate dockerfiles to use multi-stage builds. 2018-03-26 15:12:30 +00:00
ExceptionHandling.rst [NFC] fix trivial typos in documents and comments 2018-04-12 05:53:20 +00:00
ExtendedIntegerResults.txt
ExtendingLLVM.rst
Extensions.rst MC: Implement support for new .addrsig and .addrsig_sym directives. 2018-07-17 22:17:18 +00:00
FAQ.rst
FaultMaps.rst
FuzzingLLVM.rst [docs] Try to clarify the FuzzingLLVM docs 2018-08-16 21:55:09 +00:00
GarbageCollection.rst Remove @brief commands from doxygen comments, too. 2018-05-01 16:10:38 +00:00
GetElementPtr.rst
GettingStarted.rst [doc] Fix Getting Started typo. 2018-07-30 15:14:24 +00:00
GettingStartedVS.rst
GlobalISel.rst
GoldPlugin.rst [docs][gold] Fix a typo 2018-08-21 21:00:54 +00:00
HowToAddABuilder.rst
HowToBuildOnARM.rst
HowToCrossCompileBuiltinsOnArm.rst
HowToCrossCompileLLVM.rst
HowToReleaseLLVM.rst
HowToSetUpLLVMStyleRTTI.rst
HowToSubmitABug.rst
HowToUseAttributes.rst
HowToUseInstrMappings.rst
InAlloca.rst
LLVMBuild.rst
LLVMBuild.txt
LangRef.rst LangRef: Clarify expected sNaN behavior for minnum/maxnum 2018-08-27 17:40:07 +00:00
Lexicon.rst Update the coding standards and developer policy documentation surrounding whitespace. 2018-08-10 17:26:07 +00:00
LibFuzzer.rst [libFuzzer] Update documentation regarding MSan. 2018-07-19 17:59:11 +00:00
LinkTimeOptimization.rst
MCJIT-creation.png
MCJIT-dyld-load.png
MCJIT-engine-builder.png
MCJIT-load-object.png
MCJIT-load.png
MCJIT-resolve-relocations.png
MCJITDesignAndImplementation.rst
MIRLangRef.rst [x86/MIR] Implement support for pre- and post-instruction symbols, as 2018-08-16 23:11:05 +00:00
Makefile.sphinx
MarkdownQuickstartTemplate.md [docs] Reinstate r337730 - Add support for Markdown documentation in 2018-08-06 00:38:31 +00:00
MarkedUpDisassembly.rst
MemorySSA.rst
MergeFunctions.rst Updating MergeFunctions.rst 2018-08-18 20:17:19 +00:00
NVPTXUsage.rst
OptBisect.rst [Docs] Remove hard tab character from code block in optbisect documentation 2018-07-27 06:54:13 +00:00
Packaging.rst
Passes.rst [UnJ] Document unroll and jam pass and loop metadata 2018-07-19 12:37:00 +00:00
Phabricator.rst
ProgrammersManual.rst ADT: Document advantages of SmallVector<T,0> over std::vector 2018-07-26 21:29:54 +00:00
Projects.rst
README.txt
ReleaseNotes.rst Clear release notes and update version 2018-08-01 13:58:00 +00:00
ReleaseProcess.rst
ReportingGuide.rst
ScudoHardenedAllocator.rst [docs] Scudo documentation minor update 2018-05-18 17:02:35 +00:00
SegmentedStacks.rst
SourceLevelDebugging.rst [docs] Fix a small typo in a debug info example 2018-08-21 01:43:03 +00:00
SpeculativeLoadHardening.md [x86/SLH] Add the design document for Speculative Load Hardening, 2018-07-18 14:05:14 +00:00
SphinxQuickstartTemplate.rst
StackMaps.rst
Statepoints.rst
SystemLibrary.rst s/LLVM_ON_WIN32/_WIN32/, llvm 2018-04-29 00:45:03 +00:00
TableGenFundamentals.rst
TestSuiteMakefileGuide.rst
TestingGuide.rst [llvm] Document "%T" as deprecated in TestingGuide.rst 2018-06-19 22:22:48 +00:00
TypeMetadata.rst
Vectorizers.rst
WritingAnLLVMBackend.rst
WritingAnLLVMPass.rst
XRay.rst [Docs] Update of Xray page 2018-07-26 04:44:31 +00:00
XRayExample.rst [XRay][docs] Chrome Trace Viewer Instructions 2018-08-28 17:36:30 +00:00
XRayFDRFormat.rst Tidy some language in the xray documentation. 2018-05-27 09:19:03 +00:00
YamlIO.rst [Docs] Fix LLVM_YAML_IS_DOCUMENT_LIST_VECTOR 2018-07-23 14:17:43 +00:00
conf.py Add a CommandGuide for llvm-objdump 2018-08-08 14:39:22 +00:00
doxygen-mainpage.dox
doxygen.cfg.in
gcc-loops.png
index.rst [docs] Reinstate r337730 - Add support for Markdown documentation in 2018-08-06 00:38:31 +00:00
linpack-pc.png
make.bat
re_format.7
speculative_load_hardening_microbenchmarks.png [x86/SLH] Add the design document for Speculative Load Hardening, 2018-07-18 14:05:14 +00:00
yaml2obj.rst

README.txt

LLVM Documentation
==================

LLVM's documentation is written in reStructuredText, a lightweight
plaintext markup language (file extension `.rst`). While the
reStructuredText documentation should be quite readable in source form, it
is mostly meant to be processed by the Sphinx documentation generation
system to create HTML pages which are hosted on <http://llvm.org/docs/> and
updated after every commit. Manpage output is also supported, see below.

If you instead would like to generate and view the HTML locally, install
Sphinx <http://sphinx-doc.org/> and then do:

    cd <build-dir>
    cmake -DLLVM_ENABLE_SPHINX=true -DSPHINX_OUTPUT_HTML=true <src-dir>
    make -j3 docs-llvm-html
    $BROWSER <build-dir>/docs//html/index.html

The mapping between reStructuredText files and generated documentation is
`docs/Foo.rst` <-> `<build-dir>/docs//html/Foo.html` <-> `http://llvm.org/docs/Foo.html`.

If you are interested in writing new documentation, you will want to read
`SphinxQuickstartTemplate.rst` which will get you writing documentation
very fast and includes examples of the most important reStructuredText
markup syntax.

Manpage Output
===============

Building the manpages is similar to building the HTML documentation. The
primary difference is to use the `man` makefile target, instead of the
default (which is `html`). Sphinx then produces the man pages in the
directory `<build-dir>/docs/man/`.

    cd <build-dir>
    cmake -DLLVM_ENABLE_SPHINX=true -DSPHINX_OUTPUT_MAN=true <src-dir>
    make -j3 docs-llvm-man
    man -l >build-dir>/docs/man/FileCheck.1

The correspondence between .rst files and man pages is
`docs/CommandGuide/Foo.rst` <-> `<build-dir>/docs//man/Foo.1`.
These .rst files are also included during HTML generation so they are also
viewable online (as noted above) at e.g.
`http://llvm.org/docs/CommandGuide/Foo.html`.

Checking links
==============

The reachability of external links in the documentation can be checked by
running:

    cd docs/
    make -f Makefile.sphinx linkcheck

Doxygen page Output
==============

Install doxygen <http://www.stack.nl/~dimitri/doxygen/download.html> and dot2tex <https://dot2tex.readthedocs.io/en/latest>.

    cd <build-dir>
    cmake -DLLVM_ENABLE_DOXYGEN=On <llvm-top-src-dir>
    make doxygen-llvm # for LLVM docs
    make doxygen-clang # for clang docs

It will generate html in
    
    <build-dir>/docs/doxygen/html # for LLVM docs
    <build-dir>/tools/clang/docs/doxygen/html # for clang docs