blob: 2e0cffb711ef90dba89cbe1987b2cd08fb1627a1 [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
Yuanfang Chenf9ea86e2020-06-01 17:09:40 -070099 how to keep LLVM source code portable.
100
101:doc:`AdvancedBuilds`
102 This document describes more advanced build configurations.
DeForest Richardsedbb8952019-10-09 21:09:09 +0000103
DeForest Richards6d196512019-10-06 15:36:37 +0000104Optimizations
105-------------
DeForest Richards2605f8c2019-09-27 19:12:00 +0000106
DeForest Richards6d196512019-10-06 15:36:37 +0000107:doc:`WritingAnLLVMPass`
108 Information on how to write LLVM transformations and analyses.
DeForest Richards2605f8c2019-09-27 19:12:00 +0000109
DeForest Richardse3e66242019-09-05 17:30:52 +0000110:doc:`Passes`
111 A list of optimizations and analyses implemented in LLVM.
112
DeForest Richards38d16c12019-10-06 22:49:22 +0000113:doc:`StackSafetyAnalysis`
114 This document describes the design of the stack safety analysis of local
115 variables.
116
117:doc:`MergeFunctions`
118 Describes functions merging optimization.
119
120:doc:`AliasAnalysis`
121 Information on how to write a new alias analysis implementation or how to
122 use existing analyses.
123
DeForest Richardsedbb8952019-10-09 21:09:09 +0000124:doc:`MemorySSA`
125 Information about the MemorySSA utility in LLVM, as well as how to use it.
126
DeForest Richards6d196512019-10-06 15:36:37 +0000127:doc:`LoopTerminology`
128 A document describing Loops and associated terms as used in LLVM.
DeForest Richardse3e66242019-09-05 17:30:52 +0000129
DeForest Richards38d16c12019-10-06 22:49:22 +0000130:doc:`Vectorizers`
131 This document describes the current status of vectorization in LLVM.
132
133:doc:`LinkTimeOptimization`
134 This document describes the interface between LLVM intermodular optimizer
135 and the linker and its design
136
137:doc:`GoldPlugin`
138 How to build your programs with link-time optimization on Linux.
139
DeForest Richardse3e66242019-09-05 17:30:52 +0000140:doc:`Remarks`
DeForest Richards6d196512019-10-06 15:36:37 +0000141 A reference on the implementation of remarks in LLVM.
142
DeForest Richards38d16c12019-10-06 22:49:22 +0000143:doc:`Source Level Debugging with LLVM <SourceLevelDebugging>`
144 This document describes the design and philosophy behind the LLVM
145 source-level debugger.
146
DeForest Richards6d196512019-10-06 15:36:37 +0000147Code Generation
148---------------
149
150:doc:`WritingAnLLVMBackend`
151 Information on how to write LLVM backends for machine targets.
152
153:doc:`CodeGenerator`
154 The design and implementation of the LLVM code generator. Useful if you are
155 working on retargetting LLVM to a new architecture, designing a new codegen
156 pass, or enhancing existing components.
157
158:doc:`TableGen <TableGen/index>`
159 Describes the TableGen tool, which is used heavily by the LLVM code
160 generator.
161
DeForest Richards38d16c12019-10-06 22:49:22 +0000162===
163JIT
164===
165
166:doc:`MCJITDesignAndImplementation`
167 Describes the inner workings of MCJIT execution engine.
168
169:doc:`DebuggingJITedCode`
170 How to debug JITed code with GDB.
171
DeForest Richards6d196512019-10-06 15:36:37 +0000172Additional Topics
173-----------------
174
DeForest Richardsde0e3aa2019-10-06 16:10:11 +0000175:doc:`CommandLine`
176 Provides information on using the command line parsing library.
177
178:doc:`ExtendingLLVM`
179 Look here to see how to add instructions and intrinsics to LLVM.
180
DeForest Richards38d16c12019-10-06 22:49:22 +0000181:doc:`AddingConstrainedIntrinsics`
182 Gives the steps necessary when adding a new constrained math intrinsic
183 to LLVM.
184
DeForest Richards6d196512019-10-06 15:36:37 +0000185:doc:`HowToCrossCompileBuiltinsOnArm`
186 Notes on cross-building and testing the compiler-rt builtins for Arm.
187
DeForest Richards38d16c12019-10-06 22:49:22 +0000188:doc:`BigEndianNEON`
189 LLVM's support for generating NEON instructions on big endian ARM targets is
190 somewhat nonintuitive. This document explains the implementation and rationale.
191
192:doc:`CompileCudaWithLLVM`
193 LLVM support for CUDA.
194
DeForest Richards6d196512019-10-06 15:36:37 +0000195:doc:`NVPTXUsage`
196 This document describes using the NVPTX backend to compile GPU kernels.
197
198:doc:`AMDGPUUsage`
Tony1eac2c52020-04-14 00:55:43 -0400199 This document describes using the AMDGPU backend to compile GPU kernels.
200
Tony629467e2020-07-30 05:10:21 +0000201:doc:`AMDGPUDwarfExtensionsForHeterogeneousDebugging`
202 This document describes DWARF extensions to support heterogeneous debugging
Vedant Kumarb429a0f2020-05-15 17:13:18 -0700203 for targets such as the AMDGPU backend.