[ORC] Add std::tuple support to SimplePackedSerialization.
[llvm-project.git] / llvm / docs / UserGuides.rst
blob43f52c3ce758f386e7d812920e0226be1feb16cd
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 <https://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    HowToBuildWindowsItaniumPrograms\r
37    HowToCrossCompileBuiltinsOnArm\r
38    HowToCrossCompileLLVM\r
39    HowToUpdateDebugInfo\r
40    LinkTimeOptimization\r
41    LoopTerminology\r
42    MarkdownQuickstartTemplate\r
43    MemorySSA\r
44    MergeFunctions\r
45    MCJITDesignAndImplementation\r
46    ORCv2\r
47    OpaquePointers\r
48    JITLink\r
49    NewPassManager\r
50    NVPTXUsage\r
51    Phabricator\r
52    Passes\r
53    ReportingGuide\r
54    Remarks\r
55    SourceLevelDebugging\r
56    StackSafetyAnalysis\r
57    SupportLibrary\r
58    TableGen/index\r
59    TableGenFundamentals\r
60    Vectorizers\r
61    WritingAnLLVMPass\r
62    WritingAnLLVMNewPMPass\r
63    WritingAnLLVMBackend\r
64    yaml2obj\r
66 Clang\r
67 -----\r
69 :doc:`HowToBuildOnARM`\r
70    Notes on building and testing LLVM/Clang on ARM.\r
72 :doc:`HowToBuildWithPGO`\r
73     Notes on building LLVM/Clang with PGO.\r
75 :doc:`HowToCrossCompileLLVM`\r
76    Notes on cross-building and testing LLVM/Clang.\r
78 `How to build the C, C++, ObjC, and ObjC++ front end`__\r
79    Instructions for building the clang front-end from source.\r
81    .. __: https://clang.llvm.org/get_started.html\r
83 :doc:`CoverageMappingFormat`\r
84   This describes the format and encoding used for LLVM’s code coverage mapping.\r
86 :doc:`CFIVerify`\r
87   A description of the verification tool for Control Flow Integrity.\r
89 LLVM Builds and Distributions\r
90 -----------------------------\r
92 :doc:`BuildingADistribution`\r
93   A best-practices guide for using LLVM's CMake build system to package and\r
94   distribute LLVM-based tools.\r
96 :doc:`CMake`\r
97    An addendum to the main Getting Started guide for those using the `CMake\r
98    build system <http://www.cmake.org>`_.\r
100 :doc:`Docker`\r
101    A reference for using Dockerfiles provided with LLVM.\r
103 :doc:`Support Library <SupportLibrary>`\r
104    This document describes the LLVM Support Library (``lib/Support``) and\r
105    how to keep LLVM source code portable.\r
107 :doc:`AdvancedBuilds`\r
108    This document describes more advanced build configurations.\r
110 Optimizations\r
111 -------------\r
113 :doc:`WritingAnLLVMPass`\r
114    Information on how to write LLVM transformations and analyses.\r
116 :doc:`WritingAnLLVMNewPMPass`\r
117    Information on how to write LLVM transformations under the new pass\r
118    manager.\r
120 :doc:`Passes`\r
121    A list of optimizations and analyses implemented in LLVM.\r
123 :doc:`StackSafetyAnalysis`\r
124   This document describes the design of the stack safety analysis of local\r
125   variables.\r
127 :doc:`MergeFunctions`\r
128   Describes functions merging optimization.\r
130 :doc:`AliasAnalysis`\r
131    Information on how to write a new alias analysis implementation or how to\r
132    use existing analyses.\r
134 :doc:`MemorySSA`\r
135    Information about the MemorySSA utility in LLVM, as well as how to use it.\r
137 :doc:`LoopTerminology`\r
138   A document describing Loops and associated terms as used in LLVM.\r
140 :doc:`Vectorizers`\r
141    This document describes the current status of vectorization in LLVM.\r
143 :doc:`LinkTimeOptimization`\r
144    This document describes the interface between LLVM intermodular optimizer\r
145    and the linker and its design\r
147 :doc:`GoldPlugin`\r
148    How to build your programs with link-time optimization on Linux.\r
150 :doc:`Remarks`\r
151    A reference on the implementation of remarks in LLVM.\r
153 :doc:`Source Level Debugging with LLVM <SourceLevelDebugging>`\r
154    This document describes the design and philosophy behind the LLVM\r
155    source-level debugger.\r
157 Code Generation\r
158 ---------------\r
160 :doc:`WritingAnLLVMBackend`\r
161    Information on how to write LLVM backends for machine targets.\r
163 :doc:`CodeGenerator`\r
164    The design and implementation of the LLVM code generator.  Useful if you are\r
165    working on retargetting LLVM to a new architecture, designing a new codegen\r
166    pass, or enhancing existing components.\r
168 :doc:`TableGen <TableGen/index>`\r
169    Describes the TableGen tool, which is used heavily by the LLVM code\r
170    generator.\r
172 ===\r
173 JIT\r
174 ===\r
176 :doc:`MCJITDesignAndImplementation`\r
177    Describes the inner workings of MCJIT execution engine.\r
179 :doc:`ORCv2`\r
180    Describes the design and implementation of the ORC APIs, including some\r
181    usage examples, and a guide for users transitioning from ORCv1 to ORCv2.\r
183 :doc:`JITLink`\r
184    Describes the design and APIs for the JITLink library, ORC's new JIT\r
185    linker.\r
187 :doc:`DebuggingJITedCode`\r
188    How to debug JITed code with GDB.\r
190 Additional Topics\r
191 -----------------\r
193 :doc:`CommandLine`\r
194   Provides information on using the command line parsing library.\r
196 :doc:`ExtendingLLVM`\r
197   Look here to see how to add instructions and intrinsics to LLVM.\r
199 :doc:`AddingConstrainedIntrinsics`\r
200    Gives the steps necessary when adding a new constrained math intrinsic\r
201    to LLVM.\r
203 :doc:`HowToBuildWindowsItaniumPrograms`\r
204    Notes on assembling a Windows Itanium enviroment.\r
206 :doc:`HowToCrossCompileBuiltinsOnArm`\r
207    Notes on cross-building and testing the compiler-rt builtins for Arm.\r
209 :doc:`BigEndianNEON`\r
210   LLVM's support for generating NEON instructions on big endian ARM targets is\r
211   somewhat nonintuitive. This document explains the implementation and rationale.\r
213 :doc:`CompileCudaWithLLVM`\r
214   LLVM support for CUDA.\r
216 :doc:`NVPTXUsage`\r
217    This document describes using the NVPTX backend to compile GPU kernels.\r
219 :doc:`AMDGPUUsage`\r
220    This document describes using the AMDGPU backend to compile GPU kernels.\r
222 :doc:`AMDGPUDwarfExtensionsForHeterogeneousDebugging`\r
223    This document describes DWARF extensions to support heterogeneous debugging\r
224    for targets such as the AMDGPU backend.\r