[ARM] Identity shuffles are legal
[llvm-complete.git] / docs / SubsystemDocumentation.rst
blob69764cbd2822ab94c84bdb993102b17928a69073
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    CodeGenerator\r
18    ExceptionHandling\r
19    AddingConstrainedIntrinsics\r
20    LinkTimeOptimization\r
21    SegmentedStacks\r
22    TableGenFundamentals\r
23    TableGen/index\r
24    DebuggingJITedCode\r
25    GoldPlugin\r
26    MarkedUpDisassembly\r
27    SystemLibrary\r
28    SupportLibrary\r
29    SourceLevelDebugging\r
30    Vectorizers\r
31    WritingAnLLVMBackend\r
32    GarbageCollection\r
33    WritingAnLLVMPass\r
34    HowToUseAttributes\r
35    StackMaps\r
36    InAlloca\r
37    BigEndianNEON\r
38    CoverageMappingFormat\r
39    Statepoints\r
40    MergeFunctions\r
41    TypeMetadata\r
42    TransformMetadata\r
43    FaultMaps\r
44    Coroutines\r
45    GlobalISel\r
46    XRay\r
47    XRayExample\r
48    XRayFDRFormat\r
49    PDB/index\r
50    CFIVerify\r
51    SpeculativeLoadHardening\r
52    StackSafetyAnalysis\r
53    LoopTerminology\r
54    DependenceGraphs/index\r
56 :doc:`WritingAnLLVMPass`\r
57    Information on how to write LLVM transformations and analyses.\r
59 :doc:`WritingAnLLVMBackend`\r
60    Information on how to write LLVM backends for machine targets.\r
62 :doc:`CodeGenerator`\r
63    The design and implementation of the LLVM code generator.  Useful if you are\r
64    working on retargetting LLVM to a new architecture, designing a new codegen\r
65    pass, or enhancing existing components.\r
67 :doc:`TableGen <TableGen/index>`\r
68    Describes the TableGen tool, which is used heavily by the LLVM code\r
69    generator.\r
71 :doc:`AliasAnalysis`\r
72    Information on how to write a new alias analysis implementation or how to\r
73    use existing analyses.\r
75 :doc:`MemorySSA`\r
76    Information about the MemorySSA utility in LLVM, as well as how to use it.\r
78 :doc:`Source Level Debugging with LLVM <SourceLevelDebugging>`\r
79    This document describes the design and philosophy behind the LLVM\r
80    source-level debugger.\r
82 :doc:`Vectorizers`\r
83    This document describes the current status of vectorization in LLVM.\r
85 :doc:`ExceptionHandling`\r
86    This document describes the design and implementation of exception handling\r
87    in LLVM.\r
89 :doc:`AddingConstrainedIntrinsics`\r
90    Gives the steps necessary when adding a new constrained math intrinsic\r
91    to LLVM.\r
93 :doc:`Bugpoint`\r
94    Automatic bug finder and test-case reducer description and usage\r
95    information.\r
97 :doc:`BitCodeFormat`\r
98    This describes the file format and encoding used for LLVM "bc" files.\r
100 :doc:`Support Library <SupportLibrary>`\r
101    This document describes the LLVM Support Library (``lib/Support``) and\r
102    how to keep LLVM source code portable\r
104 :doc:`LinkTimeOptimization`\r
105    This document describes the interface between LLVM intermodular optimizer\r
106    and the linker and its design\r
108 :doc:`GoldPlugin`\r
109    How to build your programs with link-time optimization on Linux.\r
111 :doc:`DebuggingJITedCode`\r
112    How to debug JITed code with GDB.\r
114 :doc:`MCJITDesignAndImplementation`\r
115    Describes the inner workings of MCJIT execution engine.\r
117 :doc:`ORCv2`\r
118    Describes the design and implementation of the ORC APIs, including some\r
119    usage examples, and a guide for users transitioning from ORCv1 to ORCv2.\r
121 :doc:`BranchWeightMetadata`\r
122    Provides information about Branch Prediction Information.\r
124 :doc:`BlockFrequencyTerminology`\r
125    Provides information about terminology used in the ``BlockFrequencyInfo``\r
126    analysis pass.\r
128 :doc:`SegmentedStacks`\r
129    This document describes segmented stacks and how they are used in LLVM.\r
131 :doc:`MarkedUpDisassembly`\r
132    This document describes the optional rich disassembly output syntax.\r
134 :doc:`HowToUseAttributes`\r
135   Answers some questions about the new Attributes infrastructure.\r
137 :doc:`StackMaps`\r
138   LLVM support for mapping instruction addresses to the location of\r
139   values and allowing code to be patched.\r
141 :doc:`BigEndianNEON`\r
142   LLVM's support for generating NEON instructions on big endian ARM targets is\r
143   somewhat nonintuitive. This document explains the implementation and rationale.\r
145 :doc:`CoverageMappingFormat`\r
146   This describes the format and encoding used for LLVM’s code coverage mapping.\r
148 :doc:`MergeFunctions`\r
149   Describes functions merging optimization.\r
151 :doc:`InAlloca`\r
152   Description of the ``inalloca`` argument attribute.\r
154 :doc:`FaultMaps`\r
155   LLVM support for folding control flow into faulting machine instructions.\r
157 :doc:`CompileCudaWithLLVM`\r
158   LLVM support for CUDA.\r
160 :doc:`Coroutines`\r
161   LLVM support for coroutines.\r
163 :doc:`GlobalISel`\r
164   This describes the prototype instruction selection replacement, GlobalISel.\r
166 :doc:`XRay`\r
167   High-level documentation of how to use XRay in LLVM.\r
169 :doc:`XRayExample`\r
170   An example of how to debug an application with XRay.\r
172 :doc:`The Microsoft PDB File Format <PDB/index>`\r
173   A detailed description of the Microsoft PDB (Program Database) file format.\r
175 :doc:`CFIVerify`\r
176   A description of the verification tool for Control Flow Integrity.\r
178 :doc:`SpeculativeLoadHardening`\r
179   A description of the Speculative Load Hardening mitigation for Spectre v1.\r
181 :doc:`StackSafetyAnalysis`\r
182   This document describes the design of the stack safety analysis of local\r
183   variables.\r
185 :doc:`LoopTerminology`\r
186   A document describing Loops and associated terms as used in LLVM.\r
188 :doc:`Dependence Graphs <DependenceGraphs/index>`\r
189   A description of the design of the various dependence graphs such as\r
190   the DDG (Data Dependence Graph).\r
192 ==================\r
193 Garbage Collection\r
194 ==================\r
196 :doc:`GarbageCollection`\r
197    The interfaces source-language compilers should use for compiling GC'd\r
198    programs.\r
200 :doc:`Statepoints`\r
201   This describes a set of experimental extensions for garbage\r
202   collection support.\r