1 .. _index-subsystem-docs:
\r
3 Subsystem Documentation
\r
4 =======================
\r
6 For API clients and LLVM developers.
\r
14 BlockFrequencyTerminology
\r
15 BranchWeightMetadata
\r
19 AddingConstrainedIntrinsics
\r
20 LinkTimeOptimization
\r
22 TableGenFundamentals
\r
29 SourceLevelDebugging
\r
31 WritingAnLLVMBackend
\r
40 CoverageMappingFormat
\r
53 SpeculativeLoadHardening
\r
56 DependenceGraphs/index
\r
58 :doc:`WritingAnLLVMPass`
\r
59 Information on how to write LLVM transformations and analyses.
\r
61 :doc:`WritingAnLLVMBackend`
\r
62 Information on how to write LLVM backends for machine targets.
\r
64 :doc:`CodeGenerator`
\r
65 The design and implementation of the LLVM code generator. Useful if you are
\r
66 working on retargetting LLVM to a new architecture, designing a new codegen
\r
67 pass, or enhancing existing components.
\r
69 :doc:`TableGen <TableGen/index>`
\r
70 Describes the TableGen tool, which is used heavily by the LLVM code
\r
73 :doc:`AliasAnalysis`
\r
74 Information on how to write a new alias analysis implementation or how to
\r
75 use existing analyses.
\r
78 Information about the MemorySSA utility in LLVM, as well as how to use it.
\r
80 :doc:`GarbageCollection`
\r
81 The interfaces source-language compilers should use for compiling GC'd
\r
84 :doc:`Source Level Debugging with LLVM <SourceLevelDebugging>`
\r
85 This document describes the design and philosophy behind the LLVM
\r
86 source-level debugger.
\r
89 This document describes the current status of vectorization in LLVM.
\r
91 :doc:`ExceptionHandling`
\r
92 This document describes the design and implementation of exception handling
\r
95 :doc:`AddingConstrainedIntrinsics`
\r
96 Gives the steps necessary when adding a new constrained math intrinsic
\r
100 Automatic bug finder and test-case reducer description and usage
\r
103 :doc:`BitCodeFormat`
\r
104 This describes the file format and encoding used for LLVM "bc" files.
\r
106 :doc:`Support Library <SupportLibrary>`
\r
107 This document describes the LLVM Support Library (``lib/Support``) and
\r
108 how to keep LLVM source code portable
\r
110 :doc:`LinkTimeOptimization`
\r
111 This document describes the interface between LLVM intermodular optimizer
\r
112 and the linker and its design
\r
115 How to build your programs with link-time optimization on Linux.
\r
117 :doc:`DebuggingJITedCode`
\r
118 How to debug JITed code with GDB.
\r
120 :doc:`MCJITDesignAndImplementation`
\r
121 Describes the inner workings of MCJIT execution engine.
\r
124 Describes the design and implementation of the ORC APIs, including some
\r
125 usage examples, and a guide for users transitioning from ORCv1 to ORCv2.
\r
127 :doc:`BranchWeightMetadata`
\r
128 Provides information about Branch Prediction Information.
\r
130 :doc:`BlockFrequencyTerminology`
\r
131 Provides information about terminology used in the ``BlockFrequencyInfo``
\r
134 :doc:`SegmentedStacks`
\r
135 This document describes segmented stacks and how they are used in LLVM.
\r
137 :doc:`MarkedUpDisassembly`
\r
138 This document describes the optional rich disassembly output syntax.
\r
140 :doc:`HowToUseAttributes`
\r
141 Answers some questions about the new Attributes infrastructure.
\r
144 This document describes using the NVPTX backend to compile GPU kernels.
\r
147 This document describes using the AMDGPU backend to compile GPU kernels.
\r
150 LLVM support for mapping instruction addresses to the location of
\r
151 values and allowing code to be patched.
\r
153 :doc:`BigEndianNEON`
\r
154 LLVM's support for generating NEON instructions on big endian ARM targets is
\r
155 somewhat nonintuitive. This document explains the implementation and rationale.
\r
157 :doc:`CoverageMappingFormat`
\r
158 This describes the format and encoding used for LLVM’s code coverage mapping.
\r
161 This describes a set of experimental extensions for garbage
\r
162 collection support.
\r
164 :doc:`MergeFunctions`
\r
165 Describes functions merging optimization.
\r
168 Description of the ``inalloca`` argument attribute.
\r
171 LLVM support for folding control flow into faulting machine instructions.
\r
173 :doc:`CompileCudaWithLLVM`
\r
174 LLVM support for CUDA.
\r
177 LLVM support for coroutines.
\r
180 This describes the prototype instruction selection replacement, GlobalISel.
\r
183 High-level documentation of how to use XRay in LLVM.
\r
186 An example of how to debug an application with XRay.
\r
188 :doc:`The Microsoft PDB File Format <PDB/index>`
\r
189 A detailed description of the Microsoft PDB (Program Database) file format.
\r
192 A description of the verification tool for Control Flow Integrity.
\r
194 :doc:`SpeculativeLoadHardening`
\r
195 A description of the Speculative Load Hardening mitigation for Spectre v1.
\r
197 :doc:`StackSafetyAnalysis`
\r
198 This document describes the design of the stack safety analysis of local
\r
201 :doc:`LoopTerminology`
\r
202 A document describing Loops and associated terms as used in LLVM.
\r
204 :doc:`Dependence Graphs <DependenceGraphs/index>`
\r
205 A description of the design of the various dependence graphs such as
\r
206 the DDG (Data Dependence Graph).
\r