[Alignment][NFC] Use Align with TargetLowering::setMinFunctionAlignment
[llvm-core.git] / docs / SubsystemDocumentation.rst
blob005d541ceb38cb1b0bb315af2b33467a1f8980d7
1 .. _index-subsystem-docs:\r
2 \r
3 Subsystem Documentation\r
4 =======================\r
5 \r
6 For API clients and LLVM developers.\r
7 \r
8 .. toctree::\r
9    :hidden:\r
11    AliasAnalysis\r
12    MemorySSA\r
13    BitCodeFormat\r
14    BlockFrequencyTerminology\r
15    BranchWeightMetadata\r
16    Bugpoint\r
17    BugpointRedesign\r
18    CodeGenerator\r
19    ExceptionHandling\r
20    AddingConstrainedIntrinsics\r
21    LinkTimeOptimization\r
22    SegmentedStacks\r
23    TableGenFundamentals\r
24    TableGen/index\r
25    DebuggingJITedCode\r
26    GoldPlugin\r
27    MarkedUpDisassembly\r
28    SystemLibrary\r
29    SupportLibrary\r
30    SourceLevelDebugging\r
31    Vectorizers\r
32    WritingAnLLVMBackend\r
33    GarbageCollection\r
34    WritingAnLLVMPass\r
35    HowToUseAttributes\r
36    NVPTXUsage\r
37    AMDGPUUsage\r
38    StackMaps\r
39    InAlloca\r
40    BigEndianNEON\r
41    CoverageMappingFormat\r
42    Statepoints\r
43    MergeFunctions\r
44    TypeMetadata\r
45    TransformMetadata\r
46    FaultMaps\r
47    MIRLangRef\r
48    Coroutines\r
49    GlobalISel\r
50    XRay\r
51    XRayExample\r
52    XRayFDRFormat\r
53    PDB/index\r
54    CFIVerify\r
55    SpeculativeLoadHardening\r
56    StackSafetyAnalysis\r
57    LoopTerminology\r
59 :doc:`WritingAnLLVMPass`\r
60    Information on how to write LLVM transformations and analyses.\r
62 :doc:`WritingAnLLVMBackend`\r
63    Information on how to write LLVM backends for machine targets.\r
65 :doc:`CodeGenerator`\r
66    The design and implementation of the LLVM code generator.  Useful if you are\r
67    working on retargetting LLVM to a new architecture, designing a new codegen\r
68    pass, or enhancing existing components.\r
70 :doc:`Machine IR (MIR) Format Reference Manual <MIRLangRef>`\r
71    A reference manual for the MIR serialization format, which is used to test\r
72    LLVM's code generation passes.\r
74 :doc:`TableGen <TableGen/index>`\r
75    Describes the TableGen tool, which is used heavily by the LLVM code\r
76    generator.\r
78 :doc:`AliasAnalysis`\r
79    Information on how to write a new alias analysis implementation or how to\r
80    use existing analyses.\r
82 :doc:`MemorySSA`\r
83    Information about the MemorySSA utility in LLVM, as well as how to use it.\r
85 :doc:`GarbageCollection`\r
86    The interfaces source-language compilers should use for compiling GC'd\r
87    programs.\r
89 :doc:`Source Level Debugging with LLVM <SourceLevelDebugging>`\r
90    This document describes the design and philosophy behind the LLVM\r
91    source-level debugger.\r
93 :doc:`Vectorizers`\r
94    This document describes the current status of vectorization in LLVM.\r
96 :doc:`ExceptionHandling`\r
97    This document describes the design and implementation of exception handling\r
98    in LLVM.\r
100 :doc:`AddingConstrainedIntrinsics`\r
101    Gives the steps necessary when adding a new constrained math intrinsic\r
102    to LLVM.\r
104 :doc:`Bugpoint`\r
105    Automatic bug finder and test-case reducer description and usage\r
106    information.\r
108 :doc:`BugpointRedesign`\r
109    Design doc for a redesign of the Bugpoint tool.\r
111 :doc:`BitCodeFormat`\r
112    This describes the file format and encoding used for LLVM "bc" files.\r
114 :doc:`Support Library <SupportLibrary>`\r
115    This document describes the LLVM Support Library (``lib/Support``) and\r
116    how to keep LLVM source code portable\r
118 :doc:`LinkTimeOptimization`\r
119    This document describes the interface between LLVM intermodular optimizer\r
120    and the linker and its design\r
122 :doc:`GoldPlugin`\r
123    How to build your programs with link-time optimization on Linux.\r
125 :doc:`DebuggingJITedCode`\r
126    How to debug JITed code with GDB.\r
128 :doc:`MCJITDesignAndImplementation`\r
129    Describes the inner workings of MCJIT execution engine.\r
131 :doc:`ORCv2`\r
132    Describes the design and implementation of the ORC APIs, including some\r
133    usage examples, and a guide for users transitioning from ORCv1 to ORCv2.\r
135 :doc:`BranchWeightMetadata`\r
136    Provides information about Branch Prediction Information.\r
138 :doc:`BlockFrequencyTerminology`\r
139    Provides information about terminology used in the ``BlockFrequencyInfo``\r
140    analysis pass.\r
142 :doc:`SegmentedStacks`\r
143    This document describes segmented stacks and how they are used in LLVM.\r
145 :doc:`MarkedUpDisassembly`\r
146    This document describes the optional rich disassembly output syntax.\r
148 :doc:`HowToUseAttributes`\r
149   Answers some questions about the new Attributes infrastructure.\r
151 :doc:`NVPTXUsage`\r
152    This document describes using the NVPTX backend to compile GPU kernels.\r
154 :doc:`AMDGPUUsage`\r
155    This document describes using the AMDGPU backend to compile GPU kernels.\r
157 :doc:`StackMaps`\r
158   LLVM support for mapping instruction addresses to the location of\r
159   values and allowing code to be patched.\r
161 :doc:`BigEndianNEON`\r
162   LLVM's support for generating NEON instructions on big endian ARM targets is\r
163   somewhat nonintuitive. This document explains the implementation and rationale.\r
165 :doc:`CoverageMappingFormat`\r
166   This describes the format and encoding used for LLVM’s code coverage mapping.\r
168 :doc:`Statepoints`\r
169   This describes a set of experimental extensions for garbage\r
170   collection support.\r
172 :doc:`MergeFunctions`\r
173   Describes functions merging optimization.\r
175 :doc:`InAlloca`\r
176   Description of the ``inalloca`` argument attribute.\r
178 :doc:`FaultMaps`\r
179   LLVM support for folding control flow into faulting machine instructions.\r
181 :doc:`CompileCudaWithLLVM`\r
182   LLVM support for CUDA.\r
184 :doc:`Coroutines`\r
185   LLVM support for coroutines.\r
187 :doc:`GlobalISel`\r
188   This describes the prototype instruction selection replacement, GlobalISel.\r
190 :doc:`XRay`\r
191   High-level documentation of how to use XRay in LLVM.\r
193 :doc:`XRayExample`\r
194   An example of how to debug an application with XRay.\r
196 :doc:`The Microsoft PDB File Format <PDB/index>`\r
197   A detailed description of the Microsoft PDB (Program Database) file format.\r
199 :doc:`CFIVerify`\r
200   A description of the verification tool for Control Flow Integrity.\r
202 :doc:`SpeculativeLoadHardening`\r
203   A description of the Speculative Load Hardening mitigation for Spectre v1.\r
205 :doc:`StackSafetyAnalysis`\r
206   This document describes the design of the stack safety analysis of local\r
207   variables.\r
209 :doc:`LoopTerminology`\r
210   A document describing Loops and associated terms as used in LLVM.