blob: 0b91b3cbe66d05688bd3898f1d4ae9fda0d83b70 [file] [log] [blame]
DeForest Richardse3e66242019-09-05 17:30:52 +00001User Guides
2===========
3
DeForest Richardse3e66242019-09-05 17:30:52 +00004NOTE: If you are a user who is only interested in using an LLVM-based compiler,
Sylvestre Ledru72fd1032020-03-22 22:42:03 +01005you should look into `Clang <https://clang.llvm.org>`_ instead. The
DeForest Richardse3e66242019-09-05 17:30:52 +00006documentation here is intended for users who have a need to work with the
7intermediate LLVM representation.
8
DeForest Richards6d196512019-10-06 15:36:37 +00009.. contents::
10 :local:
11
DeForest Richardse3e66242019-09-05 17:30:52 +000012.. toctree::
13 :hidden:
14
DeForest Richards38d16c12019-10-06 22:49:22 +000015 AddingConstrainedIntrinsics
16 AdvancedBuilds
17 AliasAnalysis
18 AMDGPUUsage
19 Benchmarking
20 BigEndianNEON
21 BuildingADistribution
DeForest Richards22373c52019-10-13 20:05:22 +000022 CFIVerify
DeForest Richardse3e66242019-09-05 17:30:52 +000023 CMake
24 CMakePrimer
DeForest Richards38d16c12019-10-06 22:49:22 +000025 CodeGenerator
26 CodeOfConduct
27 CommandLine
28 CompileCudaWithLLVM
29 CoverageMappingFormat
30 DebuggingJITedCode
31 Docker
32 ExtendingLLVM
33 GoldPlugin
DeForest Richardse3e66242019-09-05 17:30:52 +000034 HowToBuildOnARM
35 HowToBuildWithPGO
36 HowToCrossCompileBuiltinsOnArm
37 HowToCrossCompileLLVM
Vedant Kumarb429a0f2020-05-15 17:13:18 -070038 HowToUpdateDebugInfo
DeForest Richards38d16c12019-10-06 22:49:22 +000039 LinkTimeOptimization
40 LoopTerminology
DeForest Richardse3e66242019-09-05 17:30:52 +000041 MarkdownQuickstartTemplate
DeForest Richardsedbb8952019-10-09 21:09:09 +000042 MemorySSA
DeForest Richards38d16c12019-10-06 22:49:22 +000043 MergeFunctions
44 MCJITDesignAndImplementation
45 NVPTXUsage
DeForest Richardse3e66242019-09-05 17:30:52 +000046 Phabricator
DeForest Richardse3e66242019-09-05 17:30:52 +000047 Passes
DeForest Richardse3e66242019-09-05 17:30:52 +000048 ReportingGuide
DeForest Richardse3e66242019-09-05 17:30:52 +000049 Remarks
DeForest Richards38d16c12019-10-06 22:49:22 +000050 SourceLevelDebugging
DeForest Richardsedbb8952019-10-09 21:09:09 +000051 StackSafetyAnalysis
52 SupportLibrary
DeForest Richards38d16c12019-10-06 22:49:22 +000053 TableGen/index
54 TableGenFundamentals
55 Vectorizers
DeForest Richards6d196512019-10-06 15:36:37 +000056 WritingAnLLVMPass
57 WritingAnLLVMBackend
DeForest Richards38d16c12019-10-06 22:49:22 +000058 yaml2obj
DeForest Richardse3e66242019-09-05 17:30:52 +000059
DeForest Richards2605f8c2019-09-27 19:12:00 +000060Clang
DeForest Richards6d196512019-10-06 15:36:37 +000061-----
DeForest Richards2605f8c2019-09-27 19:12:00 +000062
DeForest Richardse3e66242019-09-05 17:30:52 +000063:doc:`HowToBuildOnARM`
64 Notes on building and testing LLVM/Clang on ARM.
65
66:doc:`HowToBuildWithPGO`
67 Notes on building LLVM/Clang with PGO.
68
DeForest Richardse3e66242019-09-05 17:30:52 +000069:doc:`HowToCrossCompileLLVM`
70 Notes on cross-building and testing LLVM/Clang.
71
DeForest Richards2605f8c2019-09-27 19:12:00 +000072`How to build the C, C++, ObjC, and ObjC++ front end`__
73 Instructions for building the clang front-end from source.
74
Sylvestre Ledru72fd1032020-03-22 22:42:03 +010075 .. __: https://clang.llvm.org/get_started.html
DeForest Richards2605f8c2019-09-27 19:12:00 +000076
DeForest Richards38d16c12019-10-06 22:49:22 +000077:doc:`CoverageMappingFormat`
78 This describes the format and encoding used for LLVM’s code coverage mapping.
79
DeForest Richards22373c52019-10-13 20:05:22 +000080:doc:`CFIVerify`
81 A description of the verification tool for Control Flow Integrity.
82
DeForest Richards6d196512019-10-06 15:36:37 +000083LLVM Builds and Distributions
84-----------------------------
85
86:doc:`BuildingADistribution`
87 A best-practices guide for using LLVM's CMake build system to package and
88 distribute LLVM-based tools.
89
90:doc:`CMake`
91 An addendum to the main Getting Started guide for those using the `CMake
92 build system <http://www.cmake.org>`_.
DeForest Richards2605f8c2019-09-27 19:12:00 +000093
94:doc:`Docker`
95 A reference for using Dockerfiles provided with LLVM.
96
DeForest Richardsedbb8952019-10-09 21:09:09 +000097:doc:`Support Library <SupportLibrary>`
98 This document describes the LLVM Support Library (``lib/Support``) and
99 how to keep LLVM source code portable
100
DeForest Richards6d196512019-10-06 15:36:37 +0000101Optimizations
102-------------
DeForest Richards2605f8c2019-09-27 19:12:00 +0000103
DeForest Richards6d196512019-10-06 15:36:37 +0000104:doc:`WritingAnLLVMPass`
105 Information on how to write LLVM transformations and analyses.
DeForest Richards2605f8c2019-09-27 19:12:00 +0000106
DeForest Richardse3e66242019-09-05 17:30:52 +0000107:doc:`Passes`
108 A list of optimizations and analyses implemented in LLVM.
109
DeForest Richards38d16c12019-10-06 22:49:22 +0000110:doc:`StackSafetyAnalysis`
111 This document describes the design of the stack safety analysis of local
112 variables.
113
114:doc:`MergeFunctions`
115 Describes functions merging optimization.
116
117:doc:`AliasAnalysis`
118 Information on how to write a new alias analysis implementation or how to
119 use existing analyses.
120
DeForest Richardsedbb8952019-10-09 21:09:09 +0000121:doc:`MemorySSA`
122 Information about the MemorySSA utility in LLVM, as well as how to use it.
123
DeForest Richards6d196512019-10-06 15:36:37 +0000124:doc:`LoopTerminology`
125 A document describing Loops and associated terms as used in LLVM.
DeForest Richardse3e66242019-09-05 17:30:52 +0000126
DeForest Richards38d16c12019-10-06 22:49:22 +0000127:doc:`Vectorizers`
128 This document describes the current status of vectorization in LLVM.
129
130:doc:`LinkTimeOptimization`
131 This document describes the interface between LLVM intermodular optimizer
132 and the linker and its design
133
134:doc:`GoldPlugin`
135 How to build your programs with link-time optimization on Linux.
136
DeForest Richardse3e66242019-09-05 17:30:52 +0000137:doc:`Remarks`
DeForest Richards6d196512019-10-06 15:36:37 +0000138 A reference on the implementation of remarks in LLVM.
139
DeForest Richards38d16c12019-10-06 22:49:22 +0000140:doc:`Source Level Debugging with LLVM <SourceLevelDebugging>`
141 This document describes the design and philosophy behind the LLVM
142 source-level debugger.
143
DeForest Richards6d196512019-10-06 15:36:37 +0000144Code Generation
145---------------
146
147:doc:`WritingAnLLVMBackend`
148 Information on how to write LLVM backends for machine targets.
149
150:doc:`CodeGenerator`
151 The design and implementation of the LLVM code generator. Useful if you are
152 working on retargetting LLVM to a new architecture, designing a new codegen
153 pass, or enhancing existing components.
154
155:doc:`TableGen <TableGen/index>`
156 Describes the TableGen tool, which is used heavily by the LLVM code
157 generator.
158
DeForest Richards38d16c12019-10-06 22:49:22 +0000159===
160JIT
161===
162
163:doc:`MCJITDesignAndImplementation`
164 Describes the inner workings of MCJIT execution engine.
165
166:doc:`DebuggingJITedCode`
167 How to debug JITed code with GDB.
168
DeForest Richards6d196512019-10-06 15:36:37 +0000169Additional Topics
170-----------------
171
DeForest Richardsde0e3aa2019-10-06 16:10:11 +0000172:doc:`CommandLine`
173 Provides information on using the command line parsing library.
174
175:doc:`ExtendingLLVM`
176 Look here to see how to add instructions and intrinsics to LLVM.
177
DeForest Richards38d16c12019-10-06 22:49:22 +0000178:doc:`AddingConstrainedIntrinsics`
179 Gives the steps necessary when adding a new constrained math intrinsic
180 to LLVM.
181
DeForest Richards6d196512019-10-06 15:36:37 +0000182:doc:`HowToCrossCompileBuiltinsOnArm`
183 Notes on cross-building and testing the compiler-rt builtins for Arm.
184
DeForest Richards38d16c12019-10-06 22:49:22 +0000185:doc:`BigEndianNEON`
186 LLVM's support for generating NEON instructions on big endian ARM targets is
187 somewhat nonintuitive. This document explains the implementation and rationale.
188
189:doc:`CompileCudaWithLLVM`
190 LLVM support for CUDA.
191
DeForest Richards6d196512019-10-06 15:36:37 +0000192:doc:`NVPTXUsage`
193 This document describes using the NVPTX backend to compile GPU kernels.
194
195:doc:`AMDGPUUsage`
Tony1eac2c52020-04-14 00:55:43 -0400196 This document describes using the AMDGPU backend to compile GPU kernels.
197
198:doc:`AMDGPUDwarfProposalForHeterogeneousDebugging`
199 This document describes a DWARF proposal to support heterogeneous debugging
Vedant Kumarb429a0f2020-05-15 17:13:18 -0700200 for targets such as the AMDGPU backend.