[InstCombine] Signed saturation tests. NFC
[llvm-core.git] / docs / UserGuides.rst
blob1643778360306c656b6897ab4d0217d1991785a1
1 User Guides\r
2 ===========\r
3 \r
4 NOTE: If you are a user who is only interested in using an LLVM-based compiler,\r
5 you should look into `Clang <http://clang.llvm.org>`_ instead. The\r
6 documentation here is intended for users who have a need to work with the\r
7 intermediate LLVM representation.\r
8 \r
9 .. contents::\r
10    :local:\r
12 .. toctree::\r
13    :hidden:\r
15    AddingConstrainedIntrinsics\r
16    AdvancedBuilds\r
17    AliasAnalysis\r
18    AMDGPUUsage\r
19    Benchmarking\r
20    BigEndianNEON\r
21    BuildingADistribution\r
22    CFIVerify\r
23    CMake\r
24    CMakePrimer\r
25    CodeGenerator\r
26    CodeOfConduct\r
27    CommandLine\r
28    CompileCudaWithLLVM\r
29    CoverageMappingFormat\r
30    DebuggingJITedCode\r
31    Docker\r
32    ExtendingLLVM\r
33    GoldPlugin\r
34    HowToBuildOnARM\r
35    HowToBuildWithPGO\r
36    HowToCrossCompileBuiltinsOnArm\r
37    HowToCrossCompileLLVM\r
38    LinkTimeOptimization\r
39    LoopTerminology\r
40    MarkdownQuickstartTemplate\r
41    MemorySSA\r
42    MergeFunctions\r
43    MCJITDesignAndImplementation\r
44    NVPTXUsage\r
45    Phabricator\r
46    Passes\r
47    ReportingGuide\r
48    Remarks\r
49    SourceLevelDebugging\r
50    StackSafetyAnalysis\r
51    SupportLibrary\r
52    TableGen/index\r
53    TableGenFundamentals\r
54    Vectorizers\r
55    WritingAnLLVMPass\r
56    WritingAnLLVMBackend\r
57    yaml2obj\r
59 Clang\r
60 -----\r
62 :doc:`HowToBuildOnARM`\r
63    Notes on building and testing LLVM/Clang on ARM.\r
65 :doc:`HowToBuildWithPGO`\r
66     Notes on building LLVM/Clang with PGO.\r
68 :doc:`HowToCrossCompileLLVM`\r
69    Notes on cross-building and testing LLVM/Clang.\r
71 `How to build the C, C++, ObjC, and ObjC++ front end`__\r
72    Instructions for building the clang front-end from source.\r
74    .. __: http://clang.llvm.org/get_started.html\r
76 :doc:`CoverageMappingFormat`\r
77   This describes the format and encoding used for LLVM’s code coverage mapping.\r
79 :doc:`CFIVerify`\r
80   A description of the verification tool for Control Flow Integrity.\r
82 LLVM Builds and Distributions\r
83 -----------------------------\r
85 :doc:`BuildingADistribution`\r
86   A best-practices guide for using LLVM's CMake build system to package and\r
87   distribute LLVM-based tools.\r
89 :doc:`CMake`\r
90    An addendum to the main Getting Started guide for those using the `CMake\r
91    build system <http://www.cmake.org>`_.\r
93 :doc:`Docker`\r
94    A reference for using Dockerfiles provided with LLVM.\r
96 :doc:`Support Library <SupportLibrary>`\r
97    This document describes the LLVM Support Library (``lib/Support``) and\r
98    how to keep LLVM source code portable\r
100 Optimizations\r
101 -------------\r
103 :doc:`WritingAnLLVMPass`\r
104    Information on how to write LLVM transformations and analyses.\r
106 :doc:`Passes`\r
107    A list of optimizations and analyses implemented in LLVM.\r
109 :doc:`StackSafetyAnalysis`\r
110   This document describes the design of the stack safety analysis of local\r
111   variables.\r
113 :doc:`MergeFunctions`\r
114   Describes functions merging optimization.\r
116 :doc:`AliasAnalysis`\r
117    Information on how to write a new alias analysis implementation or how to\r
118    use existing analyses.\r
120 :doc:`MemorySSA`\r
121    Information about the MemorySSA utility in LLVM, as well as how to use it.\r
123 :doc:`LoopTerminology`\r
124   A document describing Loops and associated terms as used in LLVM.\r
126 :doc:`Vectorizers`\r
127    This document describes the current status of vectorization in LLVM.\r
129 :doc:`LinkTimeOptimization`\r
130    This document describes the interface between LLVM intermodular optimizer\r
131    and the linker and its design\r
133 :doc:`GoldPlugin`\r
134    How to build your programs with link-time optimization on Linux.\r
136 :doc:`Remarks`\r
137    A reference on the implementation of remarks in LLVM.\r
139 :doc:`Source Level Debugging with LLVM <SourceLevelDebugging>`\r
140    This document describes the design and philosophy behind the LLVM\r
141    source-level debugger.\r
143 Code Generation\r
144 ---------------\r
146 :doc:`WritingAnLLVMBackend`\r
147    Information on how to write LLVM backends for machine targets.\r
149 :doc:`CodeGenerator`\r
150    The design and implementation of the LLVM code generator.  Useful if you are\r
151    working on retargetting LLVM to a new architecture, designing a new codegen\r
152    pass, or enhancing existing components.\r
154 :doc:`TableGen <TableGen/index>`\r
155    Describes the TableGen tool, which is used heavily by the LLVM code\r
156    generator.\r
158 ===\r
159 JIT\r
160 ===\r
162 :doc:`MCJITDesignAndImplementation`\r
163    Describes the inner workings of MCJIT execution engine.\r
165 :doc:`DebuggingJITedCode`\r
166    How to debug JITed code with GDB.\r
168 Additional Topics\r
169 -----------------\r
171 :doc:`CommandLine`\r
172   Provides information on using the command line parsing library.\r
174 :doc:`ExtendingLLVM`\r
175   Look here to see how to add instructions and intrinsics to LLVM.\r
177 :doc:`AddingConstrainedIntrinsics`\r
178    Gives the steps necessary when adding a new constrained math intrinsic\r
179    to LLVM.\r
181 :doc:`HowToCrossCompileBuiltinsOnArm`\r
182    Notes on cross-building and testing the compiler-rt builtins for Arm.\r
184 :doc:`BigEndianNEON`\r
185   LLVM's support for generating NEON instructions on big endian ARM targets is\r
186   somewhat nonintuitive. This document explains the implementation and rationale.\r
188 :doc:`CompileCudaWithLLVM`\r
189   LLVM support for CUDA.\r
191 :doc:`NVPTXUsage`\r
192    This document describes using the NVPTX backend to compile GPU kernels.\r
194 :doc:`AMDGPUUsage`\r
195    This document describes using the AMDGPU backend to compile GPU kernels.