blob: abaa98cc9e7e793c765093140c5cac9570be8271 [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,
5you should look into `Clang <http://clang.llvm.org>`_ instead. The
6documentation 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 Richardse3e66242019-09-05 17:30:52 +000022 CMake
23 CMakePrimer
DeForest Richards38d16c12019-10-06 22:49:22 +000024 CodeGenerator
25 CodeOfConduct
26 CommandLine
27 CompileCudaWithLLVM
28 CoverageMappingFormat
29 DebuggingJITedCode
30 Docker
31 ExtendingLLVM
32 GoldPlugin
DeForest Richardse3e66242019-09-05 17:30:52 +000033 HowToBuildOnARM
34 HowToBuildWithPGO
35 HowToCrossCompileBuiltinsOnArm
36 HowToCrossCompileLLVM
DeForest Richards38d16c12019-10-06 22:49:22 +000037 LinkTimeOptimization
38 LoopTerminology
DeForest Richardse3e66242019-09-05 17:30:52 +000039 MarkdownQuickstartTemplate
DeForest Richardsedbb8952019-10-09 21:09:09 +000040 MemorySSA
DeForest Richards38d16c12019-10-06 22:49:22 +000041 MergeFunctions
42 MCJITDesignAndImplementation
43 NVPTXUsage
DeForest Richardse3e66242019-09-05 17:30:52 +000044 Phabricator
DeForest Richardse3e66242019-09-05 17:30:52 +000045 Passes
DeForest Richardse3e66242019-09-05 17:30:52 +000046 ReportingGuide
DeForest Richardse3e66242019-09-05 17:30:52 +000047 Remarks
DeForest Richards38d16c12019-10-06 22:49:22 +000048 SourceLevelDebugging
DeForest Richardsedbb8952019-10-09 21:09:09 +000049 StackSafetyAnalysis
50 SupportLibrary
DeForest Richards38d16c12019-10-06 22:49:22 +000051 TableGen/index
52 TableGenFundamentals
53 Vectorizers
DeForest Richards6d196512019-10-06 15:36:37 +000054 WritingAnLLVMPass
55 WritingAnLLVMBackend
DeForest Richards38d16c12019-10-06 22:49:22 +000056 yaml2obj
DeForest Richardse3e66242019-09-05 17:30:52 +000057
DeForest Richards2605f8c2019-09-27 19:12:00 +000058Clang
DeForest Richards6d196512019-10-06 15:36:37 +000059-----
DeForest Richards2605f8c2019-09-27 19:12:00 +000060
DeForest Richardse3e66242019-09-05 17:30:52 +000061:doc:`HowToBuildOnARM`
62 Notes on building and testing LLVM/Clang on ARM.
63
64:doc:`HowToBuildWithPGO`
65 Notes on building LLVM/Clang with PGO.
66
DeForest Richardse3e66242019-09-05 17:30:52 +000067:doc:`HowToCrossCompileLLVM`
68 Notes on cross-building and testing LLVM/Clang.
69
DeForest Richards2605f8c2019-09-27 19:12:00 +000070`How to build the C, C++, ObjC, and ObjC++ front end`__
71 Instructions for building the clang front-end from source.
72
73 .. __: http://clang.llvm.org/get_started.html
74
DeForest Richards38d16c12019-10-06 22:49:22 +000075:doc:`CoverageMappingFormat`
76 This describes the format and encoding used for LLVM’s code coverage mapping.
77
DeForest Richards6d196512019-10-06 15:36:37 +000078LLVM Builds and Distributions
79-----------------------------
80
81:doc:`BuildingADistribution`
82 A best-practices guide for using LLVM's CMake build system to package and
83 distribute LLVM-based tools.
84
85:doc:`CMake`
86 An addendum to the main Getting Started guide for those using the `CMake
87 build system <http://www.cmake.org>`_.
DeForest Richards2605f8c2019-09-27 19:12:00 +000088
89:doc:`Docker`
90 A reference for using Dockerfiles provided with LLVM.
91
DeForest Richardsedbb8952019-10-09 21:09:09 +000092:doc:`Support Library <SupportLibrary>`
93 This document describes the LLVM Support Library (``lib/Support``) and
94 how to keep LLVM source code portable
95
DeForest Richards6d196512019-10-06 15:36:37 +000096Optimizations
97-------------
DeForest Richards2605f8c2019-09-27 19:12:00 +000098
DeForest Richards6d196512019-10-06 15:36:37 +000099:doc:`WritingAnLLVMPass`
100 Information on how to write LLVM transformations and analyses.
DeForest Richards2605f8c2019-09-27 19:12:00 +0000101
DeForest Richardse3e66242019-09-05 17:30:52 +0000102:doc:`Passes`
103 A list of optimizations and analyses implemented in LLVM.
104
DeForest Richards38d16c12019-10-06 22:49:22 +0000105:doc:`StackSafetyAnalysis`
106 This document describes the design of the stack safety analysis of local
107 variables.
108
109:doc:`MergeFunctions`
110 Describes functions merging optimization.
111
112:doc:`AliasAnalysis`
113 Information on how to write a new alias analysis implementation or how to
114 use existing analyses.
115
DeForest Richardsedbb8952019-10-09 21:09:09 +0000116:doc:`MemorySSA`
117 Information about the MemorySSA utility in LLVM, as well as how to use it.
118
DeForest Richards6d196512019-10-06 15:36:37 +0000119:doc:`LoopTerminology`
120 A document describing Loops and associated terms as used in LLVM.
DeForest Richardse3e66242019-09-05 17:30:52 +0000121
DeForest Richards38d16c12019-10-06 22:49:22 +0000122:doc:`Vectorizers`
123 This document describes the current status of vectorization in LLVM.
124
125:doc:`LinkTimeOptimization`
126 This document describes the interface between LLVM intermodular optimizer
127 and the linker and its design
128
129:doc:`GoldPlugin`
130 How to build your programs with link-time optimization on Linux.
131
DeForest Richardse3e66242019-09-05 17:30:52 +0000132:doc:`Remarks`
DeForest Richards6d196512019-10-06 15:36:37 +0000133 A reference on the implementation of remarks in LLVM.
134
DeForest Richards38d16c12019-10-06 22:49:22 +0000135:doc:`Source Level Debugging with LLVM <SourceLevelDebugging>`
136 This document describes the design and philosophy behind the LLVM
137 source-level debugger.
138
DeForest Richards6d196512019-10-06 15:36:37 +0000139Code Generation
140---------------
141
142:doc:`WritingAnLLVMBackend`
143 Information on how to write LLVM backends for machine targets.
144
145:doc:`CodeGenerator`
146 The design and implementation of the LLVM code generator. Useful if you are
147 working on retargetting LLVM to a new architecture, designing a new codegen
148 pass, or enhancing existing components.
149
150:doc:`TableGen <TableGen/index>`
151 Describes the TableGen tool, which is used heavily by the LLVM code
152 generator.
153
DeForest Richards38d16c12019-10-06 22:49:22 +0000154===
155JIT
156===
157
158:doc:`MCJITDesignAndImplementation`
159 Describes the inner workings of MCJIT execution engine.
160
161:doc:`DebuggingJITedCode`
162 How to debug JITed code with GDB.
163
DeForest Richards6d196512019-10-06 15:36:37 +0000164Additional Topics
165-----------------
166
DeForest Richardsde0e3aa2019-10-06 16:10:11 +0000167:doc:`CommandLine`
168 Provides information on using the command line parsing library.
169
170:doc:`ExtendingLLVM`
171 Look here to see how to add instructions and intrinsics to LLVM.
172
DeForest Richards38d16c12019-10-06 22:49:22 +0000173:doc:`AddingConstrainedIntrinsics`
174 Gives the steps necessary when adding a new constrained math intrinsic
175 to LLVM.
176
DeForest Richards6d196512019-10-06 15:36:37 +0000177:doc:`HowToCrossCompileBuiltinsOnArm`
178 Notes on cross-building and testing the compiler-rt builtins for Arm.
179
DeForest Richards38d16c12019-10-06 22:49:22 +0000180:doc:`BigEndianNEON`
181 LLVM's support for generating NEON instructions on big endian ARM targets is
182 somewhat nonintuitive. This document explains the implementation and rationale.
183
184:doc:`CompileCudaWithLLVM`
185 LLVM support for CUDA.
186
DeForest Richards6d196512019-10-06 15:36:37 +0000187:doc:`NVPTXUsage`
188 This document describes using the NVPTX backend to compile GPU kernels.
189
190:doc:`AMDGPUUsage`
191 This document describes using the AMDGPU backend to compile GPU kernels.