blob: 5c035d1717d6a984b97819cd9657b0f5859ebbc6 [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 Richards38d16c12019-10-06 22:49:22 +000040 MergeFunctions
41 MCJITDesignAndImplementation
42 NVPTXUsage
DeForest Richardse3e66242019-09-05 17:30:52 +000043 Phabricator
DeForest Richardse3e66242019-09-05 17:30:52 +000044 Passes
DeForest Richardse3e66242019-09-05 17:30:52 +000045 ReportingGuide
DeForest Richardse3e66242019-09-05 17:30:52 +000046 Remarks
DeForest Richards38d16c12019-10-06 22:49:22 +000047 StackSafetyAnalysis
48 SourceLevelDebugging
49 TableGen/index
50 TableGenFundamentals
51 Vectorizers
DeForest Richards6d196512019-10-06 15:36:37 +000052 WritingAnLLVMPass
53 WritingAnLLVMBackend
DeForest Richards38d16c12019-10-06 22:49:22 +000054 yaml2obj
DeForest Richardse3e66242019-09-05 17:30:52 +000055
DeForest Richards2605f8c2019-09-27 19:12:00 +000056Clang
DeForest Richards6d196512019-10-06 15:36:37 +000057-----
DeForest Richards2605f8c2019-09-27 19:12:00 +000058
DeForest Richardse3e66242019-09-05 17:30:52 +000059:doc:`HowToBuildOnARM`
60 Notes on building and testing LLVM/Clang on ARM.
61
62:doc:`HowToBuildWithPGO`
63 Notes on building LLVM/Clang with PGO.
64
DeForest Richardse3e66242019-09-05 17:30:52 +000065:doc:`HowToCrossCompileLLVM`
66 Notes on cross-building and testing LLVM/Clang.
67
DeForest Richards2605f8c2019-09-27 19:12:00 +000068`How to build the C, C++, ObjC, and ObjC++ front end`__
69 Instructions for building the clang front-end from source.
70
71 .. __: http://clang.llvm.org/get_started.html
72
DeForest Richards38d16c12019-10-06 22:49:22 +000073:doc:`CoverageMappingFormat`
74 This describes the format and encoding used for LLVM’s code coverage mapping.
75
DeForest Richards6d196512019-10-06 15:36:37 +000076LLVM Builds and Distributions
77-----------------------------
78
79:doc:`BuildingADistribution`
80 A best-practices guide for using LLVM's CMake build system to package and
81 distribute LLVM-based tools.
82
83:doc:`CMake`
84 An addendum to the main Getting Started guide for those using the `CMake
85 build system <http://www.cmake.org>`_.
DeForest Richards2605f8c2019-09-27 19:12:00 +000086
87:doc:`Docker`
88 A reference for using Dockerfiles provided with LLVM.
89
DeForest Richards6d196512019-10-06 15:36:37 +000090Optimizations
91-------------
DeForest Richards2605f8c2019-09-27 19:12:00 +000092
DeForest Richards6d196512019-10-06 15:36:37 +000093:doc:`WritingAnLLVMPass`
94 Information on how to write LLVM transformations and analyses.
DeForest Richards2605f8c2019-09-27 19:12:00 +000095
DeForest Richardse3e66242019-09-05 17:30:52 +000096:doc:`Passes`
97 A list of optimizations and analyses implemented in LLVM.
98
DeForest Richards38d16c12019-10-06 22:49:22 +000099:doc:`StackSafetyAnalysis`
100 This document describes the design of the stack safety analysis of local
101 variables.
102
103:doc:`MergeFunctions`
104 Describes functions merging optimization.
105
106:doc:`AliasAnalysis`
107 Information on how to write a new alias analysis implementation or how to
108 use existing analyses.
109
DeForest Richards6d196512019-10-06 15:36:37 +0000110:doc:`LoopTerminology`
111 A document describing Loops and associated terms as used in LLVM.
DeForest Richardse3e66242019-09-05 17:30:52 +0000112
DeForest Richards38d16c12019-10-06 22:49:22 +0000113:doc:`Vectorizers`
114 This document describes the current status of vectorization in LLVM.
115
116:doc:`LinkTimeOptimization`
117 This document describes the interface between LLVM intermodular optimizer
118 and the linker and its design
119
120:doc:`GoldPlugin`
121 How to build your programs with link-time optimization on Linux.
122
DeForest Richardse3e66242019-09-05 17:30:52 +0000123:doc:`Remarks`
DeForest Richards6d196512019-10-06 15:36:37 +0000124 A reference on the implementation of remarks in LLVM.
125
DeForest Richards38d16c12019-10-06 22:49:22 +0000126:doc:`Source Level Debugging with LLVM <SourceLevelDebugging>`
127 This document describes the design and philosophy behind the LLVM
128 source-level debugger.
129
DeForest Richards6d196512019-10-06 15:36:37 +0000130Code Generation
131---------------
132
133:doc:`WritingAnLLVMBackend`
134 Information on how to write LLVM backends for machine targets.
135
136:doc:`CodeGenerator`
137 The design and implementation of the LLVM code generator. Useful if you are
138 working on retargetting LLVM to a new architecture, designing a new codegen
139 pass, or enhancing existing components.
140
141:doc:`TableGen <TableGen/index>`
142 Describes the TableGen tool, which is used heavily by the LLVM code
143 generator.
144
DeForest Richards38d16c12019-10-06 22:49:22 +0000145===
146JIT
147===
148
149:doc:`MCJITDesignAndImplementation`
150 Describes the inner workings of MCJIT execution engine.
151
152:doc:`DebuggingJITedCode`
153 How to debug JITed code with GDB.
154
DeForest Richards6d196512019-10-06 15:36:37 +0000155Additional Topics
156-----------------
157
DeForest Richardsde0e3aa2019-10-06 16:10:11 +0000158:doc:`CommandLine`
159 Provides information on using the command line parsing library.
160
161:doc:`ExtendingLLVM`
162 Look here to see how to add instructions and intrinsics to LLVM.
163
DeForest Richards38d16c12019-10-06 22:49:22 +0000164:doc:`AddingConstrainedIntrinsics`
165 Gives the steps necessary when adding a new constrained math intrinsic
166 to LLVM.
167
DeForest Richards6d196512019-10-06 15:36:37 +0000168:doc:`HowToCrossCompileBuiltinsOnArm`
169 Notes on cross-building and testing the compiler-rt builtins for Arm.
170
DeForest Richards38d16c12019-10-06 22:49:22 +0000171:doc:`BigEndianNEON`
172 LLVM's support for generating NEON instructions on big endian ARM targets is
173 somewhat nonintuitive. This document explains the implementation and rationale.
174
175:doc:`CompileCudaWithLLVM`
176 LLVM support for CUDA.
177
DeForest Richards6d196512019-10-06 15:36:37 +0000178:doc:`NVPTXUsage`
179 This document describes using the NVPTX backend to compile GPU kernels.
180
181:doc:`AMDGPUUsage`
182 This document describes using the AMDGPU backend to compile GPU kernels.