[Codegen] Alter the default promotion for saturating adds and subs
[llvm-complete.git] / docs / UserGuides.rst
blobabaa98cc9e7e793c765093140c5cac9570be8271
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    CMake\r
23    CMakePrimer\r
24    CodeGenerator\r
25    CodeOfConduct\r
26    CommandLine\r
27    CompileCudaWithLLVM\r
28    CoverageMappingFormat\r
29    DebuggingJITedCode\r
30    Docker\r
31    ExtendingLLVM\r
32    GoldPlugin\r
33    HowToBuildOnARM\r
34    HowToBuildWithPGO\r
35    HowToCrossCompileBuiltinsOnArm\r
36    HowToCrossCompileLLVM\r
37    LinkTimeOptimization\r
38    LoopTerminology\r
39    MarkdownQuickstartTemplate\r
40    MemorySSA\r
41    MergeFunctions\r
42    MCJITDesignAndImplementation\r
43    NVPTXUsage\r
44    Phabricator\r
45    Passes\r
46    ReportingGuide\r
47    Remarks\r
48    SourceLevelDebugging\r
49    StackSafetyAnalysis\r
50    SupportLibrary\r
51    TableGen/index\r
52    TableGenFundamentals\r
53    Vectorizers\r
54    WritingAnLLVMPass\r
55    WritingAnLLVMBackend\r
56    yaml2obj\r
58 Clang\r
59 -----\r
61 :doc:`HowToBuildOnARM`\r
62    Notes on building and testing LLVM/Clang on ARM.\r
64 :doc:`HowToBuildWithPGO`\r
65     Notes on building LLVM/Clang with PGO.\r
67 :doc:`HowToCrossCompileLLVM`\r
68    Notes on cross-building and testing LLVM/Clang.\r
70 `How to build the C, C++, ObjC, and ObjC++ front end`__\r
71    Instructions for building the clang front-end from source.\r
73    .. __: http://clang.llvm.org/get_started.html\r
75 :doc:`CoverageMappingFormat`\r
76   This describes the format and encoding used for LLVM’s code coverage mapping.\r
78 LLVM Builds and Distributions\r
79 -----------------------------\r
81 :doc:`BuildingADistribution`\r
82   A best-practices guide for using LLVM's CMake build system to package and\r
83   distribute LLVM-based tools.\r
85 :doc:`CMake`\r
86    An addendum to the main Getting Started guide for those using the `CMake\r
87    build system <http://www.cmake.org>`_.\r
89 :doc:`Docker`\r
90    A reference for using Dockerfiles provided with LLVM.\r
92 :doc:`Support Library <SupportLibrary>`\r
93    This document describes the LLVM Support Library (``lib/Support``) and\r
94    how to keep LLVM source code portable\r
96 Optimizations\r
97 -------------\r
99 :doc:`WritingAnLLVMPass`\r
100    Information on how to write LLVM transformations and analyses.\r
102 :doc:`Passes`\r
103    A list of optimizations and analyses implemented in LLVM.\r
105 :doc:`StackSafetyAnalysis`\r
106   This document describes the design of the stack safety analysis of local\r
107   variables.\r
109 :doc:`MergeFunctions`\r
110   Describes functions merging optimization.\r
112 :doc:`AliasAnalysis`\r
113    Information on how to write a new alias analysis implementation or how to\r
114    use existing analyses.\r
116 :doc:`MemorySSA`\r
117    Information about the MemorySSA utility in LLVM, as well as how to use it.\r
119 :doc:`LoopTerminology`\r
120   A document describing Loops and associated terms as used in LLVM.\r
122 :doc:`Vectorizers`\r
123    This document describes the current status of vectorization in LLVM.\r
125 :doc:`LinkTimeOptimization`\r
126    This document describes the interface between LLVM intermodular optimizer\r
127    and the linker and its design\r
129 :doc:`GoldPlugin`\r
130    How to build your programs with link-time optimization on Linux.\r
132 :doc:`Remarks`\r
133    A reference on the implementation of remarks in LLVM.\r
135 :doc:`Source Level Debugging with LLVM <SourceLevelDebugging>`\r
136    This document describes the design and philosophy behind the LLVM\r
137    source-level debugger.\r
139 Code Generation\r
140 ---------------\r
142 :doc:`WritingAnLLVMBackend`\r
143    Information on how to write LLVM backends for machine targets.\r
145 :doc:`CodeGenerator`\r
146    The design and implementation of the LLVM code generator.  Useful if you are\r
147    working on retargetting LLVM to a new architecture, designing a new codegen\r
148    pass, or enhancing existing components.\r
150 :doc:`TableGen <TableGen/index>`\r
151    Describes the TableGen tool, which is used heavily by the LLVM code\r
152    generator.\r
154 ===\r
155 JIT\r
156 ===\r
158 :doc:`MCJITDesignAndImplementation`\r
159    Describes the inner workings of MCJIT execution engine.\r
161 :doc:`DebuggingJITedCode`\r
162    How to debug JITed code with GDB.\r
164 Additional Topics\r
165 -----------------\r
167 :doc:`CommandLine`\r
168   Provides information on using the command line parsing library.\r
170 :doc:`ExtendingLLVM`\r
171   Look here to see how to add instructions and intrinsics to LLVM.\r
173 :doc:`AddingConstrainedIntrinsics`\r
174    Gives the steps necessary when adding a new constrained math intrinsic\r
175    to LLVM.\r
177 :doc:`HowToCrossCompileBuiltinsOnArm`\r
178    Notes on cross-building and testing the compiler-rt builtins for Arm.\r
180 :doc:`BigEndianNEON`\r
181   LLVM's support for generating NEON instructions on big endian ARM targets is\r
182   somewhat nonintuitive. This document explains the implementation and rationale.\r
184 :doc:`CompileCudaWithLLVM`\r
185   LLVM support for CUDA.\r
187 :doc:`NVPTXUsage`\r
188    This document describes using the NVPTX backend to compile GPU kernels.\r
190 :doc:`AMDGPUUsage`\r
191    This document describes using the AMDGPU backend to compile GPU kernels.