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
20 AddingConstrainedIntrinsics
\r
21 LinkTimeOptimization
\r
23 TableGenFundamentals
\r
30 SourceLevelDebugging
\r
32 WritingAnLLVMBackend
\r
41 CoverageMappingFormat
\r
55 SpeculativeLoadHardening
\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
78 :doc:`AliasAnalysis`
\r
79 Information on how to write a new alias analysis implementation or how to
\r
80 use existing analyses.
\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
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
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
100 :doc:`AddingConstrainedIntrinsics`
\r
101 Gives the steps necessary when adding a new constrained math intrinsic
\r
105 Automatic bug finder and test-case reducer description and usage
\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
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
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
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
152 This document describes using the NVPTX backend to compile GPU kernels.
\r
155 This document describes using the AMDGPU backend to compile GPU kernels.
\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
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
176 Description of the ``inalloca`` argument attribute.
\r
179 LLVM support for folding control flow into faulting machine instructions.
\r
181 :doc:`CompileCudaWithLLVM`
\r
182 LLVM support for CUDA.
\r
185 LLVM support for coroutines.
\r
188 This describes the prototype instruction selection replacement, GlobalISel.
\r
191 High-level documentation of how to use XRay in LLVM.
\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
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
209 :doc:`LoopTerminology`
\r
210 A document describing Loops and associated terms as used in LLVM.