blob: 1643778360306c656b6897ab4d0217d1991785a1 [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 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
DeForest Richards38d16c12019-10-06 22:49:22 +000038 LinkTimeOptimization
39 LoopTerminology
DeForest Richardse3e66242019-09-05 17:30:52 +000040 MarkdownQuickstartTemplate
DeForest Richardsedbb8952019-10-09 21:09:09 +000041 MemorySSA
DeForest Richards38d16c12019-10-06 22:49:22 +000042 MergeFunctions
43 MCJITDesignAndImplementation
44 NVPTXUsage
DeForest Richardse3e66242019-09-05 17:30:52 +000045 Phabricator
DeForest Richardse3e66242019-09-05 17:30:52 +000046 Passes
DeForest Richardse3e66242019-09-05 17:30:52 +000047 ReportingGuide
DeForest Richardse3e66242019-09-05 17:30:52 +000048 Remarks
DeForest Richards38d16c12019-10-06 22:49:22 +000049 SourceLevelDebugging
DeForest Richardsedbb8952019-10-09 21:09:09 +000050 StackSafetyAnalysis
51 SupportLibrary
DeForest Richards38d16c12019-10-06 22:49:22 +000052 TableGen/index
53 TableGenFundamentals
54 Vectorizers
DeForest Richards6d196512019-10-06 15:36:37 +000055 WritingAnLLVMPass
56 WritingAnLLVMBackend
DeForest Richards38d16c12019-10-06 22:49:22 +000057 yaml2obj
DeForest Richardse3e66242019-09-05 17:30:52 +000058
DeForest Richards2605f8c2019-09-27 19:12:00 +000059Clang
DeForest Richards6d196512019-10-06 15:36:37 +000060-----
DeForest Richards2605f8c2019-09-27 19:12:00 +000061
DeForest Richardse3e66242019-09-05 17:30:52 +000062:doc:`HowToBuildOnARM`
63 Notes on building and testing LLVM/Clang on ARM.
64
65:doc:`HowToBuildWithPGO`
66 Notes on building LLVM/Clang with PGO.
67
DeForest Richardse3e66242019-09-05 17:30:52 +000068:doc:`HowToCrossCompileLLVM`
69 Notes on cross-building and testing LLVM/Clang.
70
DeForest Richards2605f8c2019-09-27 19:12:00 +000071`How to build the C, C++, ObjC, and ObjC++ front end`__
72 Instructions for building the clang front-end from source.
73
74 .. __: http://clang.llvm.org/get_started.html
75
DeForest Richards38d16c12019-10-06 22:49:22 +000076:doc:`CoverageMappingFormat`
77 This describes the format and encoding used for LLVM’s code coverage mapping.
78
DeForest Richards22373c52019-10-13 20:05:22 +000079:doc:`CFIVerify`
80 A description of the verification tool for Control Flow Integrity.
81
DeForest Richards6d196512019-10-06 15:36:37 +000082LLVM Builds and Distributions
83-----------------------------
84
85:doc:`BuildingADistribution`
86 A best-practices guide for using LLVM's CMake build system to package and
87 distribute LLVM-based tools.
88
89:doc:`CMake`
90 An addendum to the main Getting Started guide for those using the `CMake
91 build system <http://www.cmake.org>`_.
DeForest Richards2605f8c2019-09-27 19:12:00 +000092
93:doc:`Docker`
94 A reference for using Dockerfiles provided with LLVM.
95
DeForest Richardsedbb8952019-10-09 21:09:09 +000096:doc:`Support Library <SupportLibrary>`
97 This document describes the LLVM Support Library (``lib/Support``) and
98 how to keep LLVM source code portable
99
DeForest Richards6d196512019-10-06 15:36:37 +0000100Optimizations
101-------------
DeForest Richards2605f8c2019-09-27 19:12:00 +0000102
DeForest Richards6d196512019-10-06 15:36:37 +0000103:doc:`WritingAnLLVMPass`
104 Information on how to write LLVM transformations and analyses.
DeForest Richards2605f8c2019-09-27 19:12:00 +0000105
DeForest Richardse3e66242019-09-05 17:30:52 +0000106:doc:`Passes`
107 A list of optimizations and analyses implemented in LLVM.
108
DeForest Richards38d16c12019-10-06 22:49:22 +0000109:doc:`StackSafetyAnalysis`
110 This document describes the design of the stack safety analysis of local
111 variables.
112
113:doc:`MergeFunctions`
114 Describes functions merging optimization.
115
116:doc:`AliasAnalysis`
117 Information on how to write a new alias analysis implementation or how to
118 use existing analyses.
119
DeForest Richardsedbb8952019-10-09 21:09:09 +0000120:doc:`MemorySSA`
121 Information about the MemorySSA utility in LLVM, as well as how to use it.
122
DeForest Richards6d196512019-10-06 15:36:37 +0000123:doc:`LoopTerminology`
124 A document describing Loops and associated terms as used in LLVM.
DeForest Richardse3e66242019-09-05 17:30:52 +0000125
DeForest Richards38d16c12019-10-06 22:49:22 +0000126:doc:`Vectorizers`
127 This document describes the current status of vectorization in LLVM.
128
129:doc:`LinkTimeOptimization`
130 This document describes the interface between LLVM intermodular optimizer
131 and the linker and its design
132
133:doc:`GoldPlugin`
134 How to build your programs with link-time optimization on Linux.
135
DeForest Richardse3e66242019-09-05 17:30:52 +0000136:doc:`Remarks`
DeForest Richards6d196512019-10-06 15:36:37 +0000137 A reference on the implementation of remarks in LLVM.
138
DeForest Richards38d16c12019-10-06 22:49:22 +0000139:doc:`Source Level Debugging with LLVM <SourceLevelDebugging>`
140 This document describes the design and philosophy behind the LLVM
141 source-level debugger.
142
DeForest Richards6d196512019-10-06 15:36:37 +0000143Code Generation
144---------------
145
146:doc:`WritingAnLLVMBackend`
147 Information on how to write LLVM backends for machine targets.
148
149:doc:`CodeGenerator`
150 The design and implementation of the LLVM code generator. Useful if you are
151 working on retargetting LLVM to a new architecture, designing a new codegen
152 pass, or enhancing existing components.
153
154:doc:`TableGen <TableGen/index>`
155 Describes the TableGen tool, which is used heavily by the LLVM code
156 generator.
157
DeForest Richards38d16c12019-10-06 22:49:22 +0000158===
159JIT
160===
161
162:doc:`MCJITDesignAndImplementation`
163 Describes the inner workings of MCJIT execution engine.
164
165:doc:`DebuggingJITedCode`
166 How to debug JITed code with GDB.
167
DeForest Richards6d196512019-10-06 15:36:37 +0000168Additional Topics
169-----------------
170
DeForest Richardsde0e3aa2019-10-06 16:10:11 +0000171:doc:`CommandLine`
172 Provides information on using the command line parsing library.
173
174:doc:`ExtendingLLVM`
175 Look here to see how to add instructions and intrinsics to LLVM.
176
DeForest Richards38d16c12019-10-06 22:49:22 +0000177:doc:`AddingConstrainedIntrinsics`
178 Gives the steps necessary when adding a new constrained math intrinsic
179 to LLVM.
180
DeForest Richards6d196512019-10-06 15:36:37 +0000181:doc:`HowToCrossCompileBuiltinsOnArm`
182 Notes on cross-building and testing the compiler-rt builtins for Arm.
183
DeForest Richards38d16c12019-10-06 22:49:22 +0000184:doc:`BigEndianNEON`
185 LLVM's support for generating NEON instructions on big endian ARM targets is
186 somewhat nonintuitive. This document explains the implementation and rationale.
187
188:doc:`CompileCudaWithLLVM`
189 LLVM support for CUDA.
190
DeForest Richards6d196512019-10-06 15:36:37 +0000191:doc:`NVPTXUsage`
192 This document describes using the NVPTX backend to compile GPU kernels.
193
194:doc:`AMDGPUUsage`
195 This document describes using the AMDGPU backend to compile GPU kernels.