hanchenye-llvm-project/llvm/docs
James Molloy 90111f79f9 [SDAG] Introduce a new BITREVERSE node along with a corresponding LLVM intrinsic
Several backends have instructions to reverse the order of bits in an integer. Conceptually matching such patterns is similar to @llvm.bswap, and it was mentioned in http://reviews.llvm.org/D14234 that it would be best if these patterns were matched in InstCombine instead of reimplemented in every different target.

This patch introduces an intrinsic @llvm.bitreverse.i* that operates similarly to @llvm.bswap. For plumbing purposes there is also a new ISD node ISD::BITREVERSE, with simple expansion and promotion support.

The intention is that InstCombine's BSWAP detection logic will be extended to support BITREVERSE too, and @llvm.bitreverse intrinsics emitted (if the backend supports lowering it efficiently).

llvm-svn: 252878
2015-11-12 12:29:09 +00:00
..
CommandGuide Fix docs build break for revision r252798 2015-11-11 22:14:58 +00:00
Frontend [docs][PerformanceTips] Add text on allocas and alignment 2015-09-10 17:03:10 +00:00
HistoricalNotes
TableGen Rename all references to old mailing lists to new lists.llvm.org address. 2015-08-05 03:51:17 +00:00
_ocamldoc [OCaml] Use a nicer style for documentation than OCaml default. 2015-07-17 06:37:59 +00:00
_static
_templates
_themes/llvm-theme
tutorial Update tutorial for debug info IR change. 2015-11-05 22:55:44 +00:00
AMDGPUUsage.rst AMDGPU/SI: Update amd_kernel_code_t definition and add assembler support 2015-06-26 21:58:31 +00:00
ARM-BE-bitcastfail.png
ARM-BE-bitcastsuccess.png
ARM-BE-ld1.png
ARM-BE-ldr.png
AliasAnalysis.rst [PM/AA] Remove the AliasDebugger pass. 2015-08-12 22:54:47 +00:00
Atomics.rst [CodeGen] Refactor TLI/AtomicExpand interface to make LLSC explicit. 2015-09-11 17:08:28 +00:00
BigEndianNEON.rst
BitCodeFormat.rst Fix typos. 2015-09-12 01:17:08 +00:00
BitSets.rst Re-apply r247080 with order of evaluation fix. 2015-09-08 22:49:35 +00:00
BlockFrequencyTerminology.rst
BranchWeightMetadata.rst Fix typos. 2015-09-12 01:17:08 +00:00
Bugpoint.rst
BuildingLLVMWithAutotools.rst Deprecate Autoconf 2015-11-09 21:54:55 +00:00
CMake.rst [CMake] Adding LLVM_CREATE_XCODE_TOOLCHAIN to the CMake documentation page. 2015-10-15 20:12:08 +00:00
CMakeLists.txt Doxygen: add build option to use svg instead of png files for graphs 2015-08-17 23:24:17 +00:00
CodeGenerator.rst [bpf] add documentation and instruction set description 2015-08-14 22:00:45 +00:00
CodingStandards.rst Disable Visual C++ 2013 Debug mode assert on null pointer in some STL algorithms, 2015-08-21 17:31:03 +00:00
CommandLine.rst Add missing underlines for a docs section. NFC 2015-07-24 00:29:50 +00:00
CompileCudaWithLLVM.rst [doc] Compile CUDA with LLVM 2015-11-10 22:35:47 +00:00
CompilerWriterInfo.rst R600 -> AMDGPU rename 2015-06-13 03:28:10 +00:00
CoverageMappingFormat.rst Fix Sphinx error about duplicate label in CommandLine.rst:1560 and CoverageMappingFormat.rst 2015-07-14 23:29:53 +00:00
DebuggingJITedCode.rst
DeveloperPolicy.rst Describe the process better. 2015-08-06 22:03:54 +00:00
Dummy.html
ExceptionHandling.rst [docs] Fix typo in catchret example 2015-09-08 22:28:38 +00:00
ExtendedIntegerResults.txt
ExtendingLLVM.rst [WinEH] Add llvm.eh.exceptionpointer intrinsic 2015-09-03 09:15:32 +00:00
Extensions.rst
FAQ.rst
FaultMaps.rst [FaultMaps] Let the frontend pre-select implicit null check candidates. 2015-06-30 21:22:32 +00:00
GarbageCollection.rst
GetElementPtr.rst
GettingStarted.rst Update GettingStarted docs list of LLVM_TARGETS_TO_BUILD to match cmake. 2015-08-05 20:55:53 +00:00
GettingStartedVS.rst
GoldPlugin.rst
HowToAddABuilder.rst
HowToBuildOnARM.rst [Docs] Change ARM build info to CMake 2015-11-06 18:39:34 +00:00
HowToCrossCompileLLVM.rst
HowToReleaseLLVM.rst docs: Add information about helper scripts to HowToReleaseLLVM page 2015-07-31 01:02:35 +00:00
HowToSetUpLLVMStyleRTTI.rst
HowToSubmitABug.rst
HowToUseAttributes.rst
HowToUseInstrMappings.rst
InAlloca.rst
LLVMBuild.rst
LLVMBuild.txt
LangRef.rst [SDAG] Introduce a new BITREVERSE node along with a corresponding LLVM intrinsic 2015-11-12 12:29:09 +00:00
Lexicon.rst [docs] Document "LGTM" in the lexicon. 2015-06-04 20:28:09 +00:00
LibFuzzer.rst [libFuzzer] better links 2015-11-11 05:25:24 +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 MIRLangRef: Add documentation for the subregister indices. 2015-09-08 11:39:47 +00:00
Makefile Doxygen: add build option to use svg instead of png files for graphs 2015-08-17 23:24:17 +00:00
Makefile.sphinx
MakefileGuide.rst
MarkedUpDisassembly.rst
MergeFunctions.rst
NVPTXUsage.rst [docs] fix the declarations of the llvm.nvvm.ptr.gen.to.* intrinsics 2015-05-29 22:18:03 +00:00
Packaging.rst
Passes.rst
Phabricator.rst docs: Fix typo in Phabricator.rst 2015-08-06 16:57:49 +00:00
ProgrammersManual.rst docs: Stop using DEBUG() without DEBUG_TYPE in the ProgrammersManual 2015-10-15 18:17:44 +00:00
Projects.rst Rename all references to old mailing lists to new lists.llvm.org address. 2015-08-05 03:51:17 +00:00
README.txt Test Commit - Corrected spelling in README.txt. 2015-08-12 23:56:50 +00:00
ReleaseNotes.rst Deprecate Autoconf 2015-11-09 21:54:55 +00:00
ReleaseProcess.rst
SegmentedStacks.rst
SourceLevelDebugging.rst docs: Document function-attached metadata and IR changes from r252219. 2015-11-06 02:41:02 +00:00
SphinxQuickstartTemplate.rst
StackMaps.rst List supported architectures for StackMap section and related intrinsics 2015-07-16 21:10:46 +00:00
Statepoints.rst Fix typos. 2015-09-12 01:17:08 +00:00
SystemLibrary.rst
TableGenFundamentals.rst
TestSuiteMakefileGuide.rst
TestingGuide.rst
Vectorizers.rst
WritingAnLLVMBackend.rst
WritingAnLLVMPass.rst Fix another reference to in-source builds 2015-10-23 17:42:51 +00:00
YamlIO.rst
conf.py Docs: keep copyright years up-to-date. 2015-08-12 18:27:23 +00:00
doxygen.cfg.in Doxygen: add build option to use svg instead of png files for graphs 2015-08-17 23:24:17 +00:00
doxygen.intro
gcc-loops.png
index.rst [doc] Compile CUDA with LLVM 2015-11-10 22:35:47 +00:00
linpack-pc.png
make.bat
re_format.7
yaml2obj.rst Summary: 2015-07-28 16:18:17 +00:00

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 docs/
    make -f Makefile.sphinx
    $BROWSER _build/html/index.html

The mapping between reStructuredText files and generated documentation is
`docs/Foo.rst` <-> `_build/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/man/`.

    cd docs/
    make -f Makefile.sphinx man
    man -l _build/man/FileCheck.1

The correspondence between .rst files and man pages is
`docs/CommandGuide/Foo.rst` <-> `_build/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