blob: 49bd327f47dec2b1e5d82cb9feab0e98fcf74fe1 [file] [log] [blame]
Daniel Dunbar21e993c2012-04-19 16:31:37 +00001Overview
2========
3
Daniel Dunbar21e993c2012-04-19 16:31:37 +00004The LLVM compiler infrastructure supports a wide range of projects, from
5industrial strength compilers to specialized JIT applications to small
6research projects.
7
8Similarly, documentation is broken down into several high-level groupings
Benjamin Kramerd9b0b022012-06-02 10:20:22 +00009targeted at different audiences:
Daniel Dunbar21e993c2012-04-19 16:31:37 +000010
Sean Silva31da4392013-01-20 02:19:36 +000011LLVM Design & Overview
12======================
Daniel Dunbar21e993c2012-04-19 16:31:37 +000013
Sean Silva31da4392013-01-20 02:19:36 +000014Several introductory papers and presentations.
Daniel Dunbar21e993c2012-04-19 16:31:37 +000015
16.. toctree::
Sean Silva31da4392013-01-20 02:19:36 +000017 :hidden:
Daniel Dunbar21e993c2012-04-19 16:31:37 +000018
Sean Silva31da4392013-01-20 02:19:36 +000019 LangRef
Sean Silva31da4392013-01-20 02:19:36 +000020
Sean Silva52878db2013-01-20 02:19:42 +000021:doc:`LangRef`
Sean Silva31da4392013-01-20 02:19:36 +000022 Defines the LLVM intermediate representation.
23
Sean Silva52878db2013-01-20 02:19:42 +000024`Introduction to the LLVM Compiler`__
Sean Silva31da4392013-01-20 02:19:36 +000025 Presentation providing a users introduction to LLVM.
26
Sean Silva52878db2013-01-20 02:19:42 +000027 .. __: http://llvm.org/pubs/2008-10-04-ACAT-LLVM-Intro.html
Sean Silva31da4392013-01-20 02:19:36 +000028
Sean Silva52878db2013-01-20 02:19:42 +000029`Intro to LLVM`__
Sean Silva31da4392013-01-20 02:19:36 +000030 Book chapter providing a compiler hacker's introduction to LLVM.
31
Sean Silva52878db2013-01-20 02:19:42 +000032 .. __: http://www.aosabook.org/en/llvm.html
Sean Silva31da4392013-01-20 02:19:36 +000033
Sean Silva52878db2013-01-20 02:19:42 +000034
35`LLVM: A Compilation Framework for Lifelong Program Analysis & Transformation`__
Sean Silva31da4392013-01-20 02:19:36 +000036 Design overview.
37
Sean Silva52878db2013-01-20 02:19:42 +000038 .. __: http://llvm.org/pubs/2004-01-30-CGO-LLVM.html
Sean Silva31da4392013-01-20 02:19:36 +000039
Sean Silva52878db2013-01-20 02:19:42 +000040`LLVM: An Infrastructure for Multi-Stage Optimization`__
Sean Silva31da4392013-01-20 02:19:36 +000041 More details (quite old now).
42
Sean Silva52878db2013-01-20 02:19:42 +000043 .. __: http://llvm.org/pubs/2002-12-LattnerMSThesis.html
Sean Silva31da4392013-01-20 02:19:36 +000044
Sean Silva52878db2013-01-20 02:19:42 +000045`Publications mentioning LLVM <http://llvm.org/pubs>`_
46 ..
Sean Silva31da4392013-01-20 02:19:36 +000047
48User Guides
49===========
50
51For those new to the LLVM system.
52
53NOTE: If you are a user who is only interested in using LLVM-based
54compilers, you should look into `Clang <http://clang.llvm.org>`_ or
55`DragonEgg <http://dragonegg.llvm.org>`_ instead. The documentation here is
56intended for users who have a need to work with the intermediate LLVM
57representation.
58
59.. toctree::
60 :hidden:
61
62 CMake
Chris Bienemanae143ce42016-04-29 20:34:54 +000063 CMakePrimer
Chris Bienemaneceee132016-03-18 21:57:51 +000064 AdvancedBuilds
Sean Silva31da4392013-01-20 02:19:36 +000065 HowToBuildOnARM
George Burgess IV151762552018-10-26 20:56:03 +000066 HowToBuildWithPGO
Peter Smith51bcf5f2017-11-07 09:40:05 +000067 HowToCrossCompileBuiltinsOnArm
Renato Golin82169472013-09-08 20:44:48 +000068 HowToCrossCompileLLVM
Sean Silva31da4392013-01-20 02:19:36 +000069 CommandGuide/index
Sean Silva31da4392013-01-20 02:19:36 +000070 GettingStarted
71 GettingStartedVS
72 FAQ
73 Lexicon
Sean Silva31da4392013-01-20 02:19:36 +000074 HowToAddABuilder
75 yaml2obj
76 HowToSubmitABug
77 SphinxQuickstartTemplate
Chandler Carruthd78e4342018-08-06 00:38:31 +000078 MarkdownQuickstartTemplate
Sean Silva31da4392013-01-20 02:19:36 +000079 Phabricator
80 TestingGuide
81 tutorial/index
82 ReleaseNotes
83 Passes
84 YamlIO
Sean Silvacad9b9c2013-03-30 15:32:50 +000085 GetElementPtr
Philip Reamesb16dac52015-02-27 23:14:50 +000086 Frontend/PerformanceTips
Sean Silva07746812013-09-09 19:09:00 +000087 MCJITDesignAndImplementation
Chandler Carruth348a2322016-06-30 20:27:54 +000088 CodeOfConduct
Jingyue Wu69662672015-11-10 22:35:47 +000089 CompileCudaWithLLVM
Chandler Carruth348a2322016-06-30 20:27:54 +000090 ReportingGuide
Rafael Espindola01c176b2017-05-24 16:39:12 +000091 Benchmarking
Ilya Biryukov83aa9ad2017-06-30 09:46:45 +000092 Docker
Sean Silva31da4392013-01-20 02:19:36 +000093
Sean Silva52878db2013-01-20 02:19:42 +000094:doc:`GettingStarted`
Sean Silva31da4392013-01-20 02:19:36 +000095 Discusses how to get up and running quickly with the LLVM infrastructure.
96 Everything from unpacking and compilation of the distribution to execution
97 of some tools.
98
Sean Silva52878db2013-01-20 02:19:42 +000099:doc:`CMake`
Sean Silva31da4392013-01-20 02:19:36 +0000100 An addendum to the main Getting Started guide for those using the `CMake
101 build system <http://www.cmake.org>`_.
102
Sean Silva52878db2013-01-20 02:19:42 +0000103:doc:`HowToBuildOnARM`
Sean Silva31da4392013-01-20 02:19:36 +0000104 Notes on building and testing LLVM/Clang on ARM.
105
George Burgess IV151762552018-10-26 20:56:03 +0000106:doc:`HowToBuildWithPGO`
107 Notes on building LLVM/Clang with PGO.
108
Peter Smith51bcf5f2017-11-07 09:40:05 +0000109:doc:`HowToCrossCompileBuiltinsOnArm`
110 Notes on cross-building and testing the compiler-rt builtins for Arm.
111
Renato Golin82169472013-09-08 20:44:48 +0000112:doc:`HowToCrossCompileLLVM`
113 Notes on cross-building and testing LLVM/Clang.
114
Sean Silva52878db2013-01-20 02:19:42 +0000115:doc:`GettingStartedVS`
Sean Silva31da4392013-01-20 02:19:36 +0000116 An addendum to the main Getting Started guide for those using Visual Studio
117 on Windows.
118
Sean Silva52878db2013-01-20 02:19:42 +0000119:doc:`tutorial/index`
Sean Silva31da4392013-01-20 02:19:36 +0000120 Tutorials about using LLVM. Includes a tutorial about making a custom
121 language with LLVM.
122
Sean Silva52878db2013-01-20 02:19:42 +0000123:doc:`LLVM Command Guide <CommandGuide/index>`
Sean Silva31da4392013-01-20 02:19:36 +0000124 A reference manual for the LLVM command line utilities ("man" pages for LLVM
125 tools).
126
Sean Silva52878db2013-01-20 02:19:42 +0000127:doc:`Passes`
Sean Silva31da4392013-01-20 02:19:36 +0000128 A list of optimizations and analyses implemented in LLVM.
129
Sean Silva52878db2013-01-20 02:19:42 +0000130:doc:`FAQ`
Sean Silva31da4392013-01-20 02:19:36 +0000131 A list of common questions and problems and their solutions.
132
Sean Silva52878db2013-01-20 02:19:42 +0000133:doc:`Release notes for the current release <ReleaseNotes>`
Sean Silva31da4392013-01-20 02:19:36 +0000134 This describes new features, known bugs, and other limitations.
135
Sean Silva52878db2013-01-20 02:19:42 +0000136:doc:`HowToSubmitABug`
Sean Silva31da4392013-01-20 02:19:36 +0000137 Instructions for properly submitting information about any bugs you run into
138 in the LLVM system.
Sean Silva31da4392013-01-20 02:19:36 +0000139
Sean Silva52878db2013-01-20 02:19:42 +0000140:doc:`SphinxQuickstartTemplate`
Sean Silva31da4392013-01-20 02:19:36 +0000141 A template + tutorial for writing new Sphinx documentation. It is meant
142 to be read in source form.
143
Sean Silva52878db2013-01-20 02:19:42 +0000144:doc:`LLVM Testing Infrastructure Guide <TestingGuide>`
Sean Silva31da4392013-01-20 02:19:36 +0000145 A reference manual for using the LLVM testing infrastructure.
146
Matthias Braun64a07d92018-08-31 21:47:01 +0000147:doc:`TestSuiteGuide`
148 Describes how to compile and run the test-suite benchmarks.
149
Sean Silva52878db2013-01-20 02:19:42 +0000150`How to build the C, C++, ObjC, and ObjC++ front end`__
Sean Silva31da4392013-01-20 02:19:36 +0000151 Instructions for building the clang front-end from source.
152
Sean Silva52878db2013-01-20 02:19:42 +0000153 .. __: http://clang.llvm.org/get_started.html
Sean Silva31da4392013-01-20 02:19:36 +0000154
Sean Silva52878db2013-01-20 02:19:42 +0000155:doc:`Lexicon`
Sean Silva31da4392013-01-20 02:19:36 +0000156 Definition of acronyms, terms and concepts used in LLVM.
157
Sean Silva52878db2013-01-20 02:19:42 +0000158:doc:`HowToAddABuilder`
Sean Silva31da4392013-01-20 02:19:36 +0000159 Instructions for adding new builder to LLVM buildbot master.
160
Sean Silva52878db2013-01-20 02:19:42 +0000161:doc:`YamlIO`
Sean Silva31da4392013-01-20 02:19:36 +0000162 A reference guide for using LLVM's YAML I/O library.
163
Sean Silvacad9b9c2013-03-30 15:32:50 +0000164:doc:`GetElementPtr`
165 Answers to some very frequent questions about LLVM's most frequently
166 misunderstood instruction.
167
Philip Reamesb16dac52015-02-27 23:14:50 +0000168:doc:`Frontend/PerformanceTips`
Vlad Tsyrklevichbbb32802017-09-20 20:38:14 +0000169 A collection of tips for frontend authors on how to generate IR
Philip Reamesb16dac52015-02-27 23:14:50 +0000170 which LLVM is able to effectively optimize.
171
Ilya Biryukov83aa9ad2017-06-30 09:46:45 +0000172:doc:`Docker`
173 A reference for using Dockerfiles provided with LLVM.
174
Philip Reamesb16dac52015-02-27 23:14:50 +0000175
Sean Silva31da4392013-01-20 02:19:36 +0000176Programming Documentation
177=========================
178
179For developers of applications which use LLVM as a library.
180
181.. toctree::
182 :hidden:
183
184 Atomics
185 CodingStandards
186 CommandLine
187 CompilerWriterInfo
188 ExtendingLLVM
189 HowToSetUpLLVMStyleRTTI
190 ProgrammersManual
Nico Rieck18d49ac2013-04-10 23:28:17 +0000191 Extensions
Kostya Serebryany35064572015-03-30 23:05:30 +0000192 LibFuzzer
Justin Bogner89b77ce2017-10-12 01:44:24 +0000193 FuzzingLLVM
Kostya Serebryany994c5592016-06-07 23:13:54 +0000194 ScudoHardenedAllocator
Andrew Kaylorbc94ace2016-08-26 23:11:48 +0000195 OptBisect
Sean Silva31da4392013-01-20 02:19:36 +0000196
Sean Silva52878db2013-01-20 02:19:42 +0000197:doc:`LLVM Language Reference Manual <LangRef>`
Sean Silva31da4392013-01-20 02:19:36 +0000198 Defines the LLVM intermediate representation and the assembly form of the
199 different nodes.
200
Sean Silva52878db2013-01-20 02:19:42 +0000201:doc:`Atomics`
Sean Silva31da4392013-01-20 02:19:36 +0000202 Information about LLVM's concurrency model.
203
Sean Silva52878db2013-01-20 02:19:42 +0000204:doc:`ProgrammersManual`
Sean Silva31da4392013-01-20 02:19:36 +0000205 Introduction to the general layout of the LLVM sourcebase, important classes
206 and APIs, and some tips & tricks.
207
Nico Rieck18d49ac2013-04-10 23:28:17 +0000208:doc:`Extensions`
209 LLVM-specific extensions to tools and formats LLVM seeks compatibility with.
210
Sean Silva52878db2013-01-20 02:19:42 +0000211:doc:`CommandLine`
Sean Silva31da4392013-01-20 02:19:36 +0000212 Provides information on using the command line parsing library.
213
Sean Silva52878db2013-01-20 02:19:42 +0000214:doc:`CodingStandards`
Sean Silva31da4392013-01-20 02:19:36 +0000215 Details the LLVM coding standards and provides useful information on writing
216 efficient C++ code.
217
Sean Silva52878db2013-01-20 02:19:42 +0000218:doc:`HowToSetUpLLVMStyleRTTI`
Sean Silva31da4392013-01-20 02:19:36 +0000219 How to make ``isa<>``, ``dyn_cast<>``, etc. available for clients of your
220 class hierarchy.
221
Sean Silva52878db2013-01-20 02:19:42 +0000222:doc:`ExtendingLLVM`
Sean Silva31da4392013-01-20 02:19:36 +0000223 Look here to see how to add instructions and intrinsics to LLVM.
224
Sean Silva52878db2013-01-20 02:19:42 +0000225`Doxygen generated documentation <http://llvm.org/doxygen/>`_
Sean Silva31da4392013-01-20 02:19:36 +0000226 (`classes <http://llvm.org/doxygen/inherits.html>`_)
Sean Silva31da4392013-01-20 02:19:36 +0000227
Peter Collingbourne0ba9a7e2015-01-13 18:49:42 +0000228`Documentation for Go bindings <http://godoc.org/llvm.org/llvm/bindings/go/llvm>`_
229
James Y Knight8986b312019-01-14 22:27:32 +0000230`Github Source Repository Browser <http://github.com/llvm/llvm-project//>`_
Sean Silva52878db2013-01-20 02:19:42 +0000231 ..
Sean Silva31da4392013-01-20 02:19:36 +0000232
Sean Silva52878db2013-01-20 02:19:42 +0000233:doc:`CompilerWriterInfo`
Sean Silva31da4392013-01-20 02:19:36 +0000234 A list of helpful links for compiler writers.
235
Kostya Serebryany35064572015-03-30 23:05:30 +0000236:doc:`LibFuzzer`
237 A library for writing in-process guided fuzzers.
238
Justin Bogner89b77ce2017-10-12 01:44:24 +0000239:doc:`FuzzingLLVM`
240 Information on writing and using Fuzzers to find bugs in LLVM.
241
Kostya Serebryany994c5592016-06-07 23:13:54 +0000242:doc:`ScudoHardenedAllocator`
243 A library that implements a security-hardened `malloc()`.
244
Andrew Kaylorbc94ace2016-08-26 23:11:48 +0000245:doc:`OptBisect`
246 A command line option for debugging optimization-induced failures.
247
Florian Hahn98977ed2018-01-04 17:12:21 +0000248.. _index-subsystem-docs:
249
Sean Silva31da4392013-01-20 02:19:36 +0000250Subsystem Documentation
251=======================
252
253For API clients and LLVM developers.
254
255.. toctree::
256 :hidden:
257
258 AliasAnalysis
George Burgess IV6058aba2016-08-17 00:17:29 +0000259 MemorySSA
Sean Silva31da4392013-01-20 02:19:36 +0000260 BitCodeFormat
Duncan P. N. Exon Smith23a60332014-04-11 23:21:07 +0000261 BlockFrequencyTerminology
Sean Silva31da4392013-01-20 02:19:36 +0000262 BranchWeightMetadata
263 Bugpoint
264 CodeGenerator
265 ExceptionHandling
266 LinkTimeOptimization
267 SegmentedStacks
268 TableGenFundamentals
Renato Golin16259372014-03-20 16:08:34 +0000269 TableGen/index
Sean Silva31da4392013-01-20 02:19:36 +0000270 DebuggingJITedCode
271 GoldPlugin
272 MarkedUpDisassembly
273 SystemLibrary
Kristina Brookscd4dcda2018-09-18 18:05:38 +0000274 SupportLibrary
Sean Silva31da4392013-01-20 02:19:36 +0000275 SourceLevelDebugging
276 Vectorizers
277 WritingAnLLVMBackend
278 GarbageCollection
279 WritingAnLLVMPass
Joe Abbey0013a5d2013-02-12 11:45:22 +0000280 HowToUseAttributes
Justin Holewinski531ebc82013-03-30 16:41:14 +0000281 NVPTXUsage
Tom Stellard953c6812015-06-13 03:28:10 +0000282 AMDGPUUsage
Andrew Tricke97b1322013-12-24 02:57:25 +0000283 StackMaps
Sean Silvaaede1c92014-03-02 00:21:42 +0000284 InAlloca
James Molloy85918042014-05-12 15:13:39 +0000285 BigEndianNEON
Alex Lorenze3cea5f2014-08-19 17:05:58 +0000286 CoverageMappingFormat
Matt Arsenault99eff502014-12-03 18:35:11 +0000287 Statepoints
Stepan Dyatkovskiy49126402014-12-10 17:42:01 +0000288 MergeFunctions
Peter Collingbournedba91462016-06-24 21:21:32 +0000289 TypeMetadata
Michael Kruse9a395de2018-12-12 17:32:52 +0000290 TransformMetadata
Sanjoy Dasdeca6722015-06-15 19:38:15 +0000291 FaultMaps
Alex Lorenz32dcc282015-08-06 22:55:19 +0000292 MIRLangRef
David Majnemere48bbc42016-07-23 04:05:08 +0000293 Coroutines
Ahmed Bougachabbf0c3a2016-11-04 17:57:34 +0000294 GlobalISel
Dean Michael Berrisf70da782016-11-09 00:24:58 +0000295 XRay
Dean Michael Berris8cefdcb2017-03-31 02:51:19 +0000296 XRayExample
Keith Wyss630a4ac2017-08-02 21:47:27 +0000297 XRayFDRFormat
Zachary Turnerab792ca2016-11-10 19:24:21 +0000298 PDB/index
Vlad Tsyrklevichbbb32802017-09-20 20:38:14 +0000299 CFIVerify
Chandler Carruthd78e4342018-08-06 00:38:31 +0000300 SpeculativeLoadHardening
Vitaly Bukad305cea2018-11-26 23:16:07 +0000301 StackSafetyAnalysis
Sean Silva31da4392013-01-20 02:19:36 +0000302
Sean Silva52878db2013-01-20 02:19:42 +0000303:doc:`WritingAnLLVMPass`
Sean Silva31da4392013-01-20 02:19:36 +0000304 Information on how to write LLVM transformations and analyses.
305
Sean Silva52878db2013-01-20 02:19:42 +0000306:doc:`WritingAnLLVMBackend`
Sean Silva31da4392013-01-20 02:19:36 +0000307 Information on how to write LLVM backends for machine targets.
308
Sean Silva52878db2013-01-20 02:19:42 +0000309:doc:`CodeGenerator`
Sean Silva31da4392013-01-20 02:19:36 +0000310 The design and implementation of the LLVM code generator. Useful if you are
311 working on retargetting LLVM to a new architecture, designing a new codegen
312 pass, or enhancing existing components.
313
Alex Lorenz32dcc282015-08-06 22:55:19 +0000314:doc:`Machine IR (MIR) Format Reference Manual <MIRLangRef>`
315 A reference manual for the MIR serialization format, which is used to test
316 LLVM's code generation passes.
317
Sean Silvaba9e79f2014-04-07 22:42:53 +0000318:doc:`TableGen <TableGen/index>`
Sean Silva31da4392013-01-20 02:19:36 +0000319 Describes the TableGen tool, which is used heavily by the LLVM code
320 generator.
321
Sean Silva52878db2013-01-20 02:19:42 +0000322:doc:`AliasAnalysis`
Sean Silva31da4392013-01-20 02:19:36 +0000323 Information on how to write a new alias analysis implementation or how to
324 use existing analyses.
325
George Burgess IV6058aba2016-08-17 00:17:29 +0000326:doc:`MemorySSA`
327 Information about the MemorySSA utility in LLVM, as well as how to use it.
328
Sean Silva52878db2013-01-20 02:19:42 +0000329:doc:`GarbageCollection`
Sean Silva31da4392013-01-20 02:19:36 +0000330 The interfaces source-language compilers should use for compiling GC'd
331 programs.
332
Sean Silva52878db2013-01-20 02:19:42 +0000333:doc:`Source Level Debugging with LLVM <SourceLevelDebugging>`
Sean Silva31da4392013-01-20 02:19:36 +0000334 This document describes the design and philosophy behind the LLVM
335 source-level debugger.
336
Sean Silva52878db2013-01-20 02:19:42 +0000337:doc:`Vectorizers`
Sean Silva31da4392013-01-20 02:19:36 +0000338 This document describes the current status of vectorization in LLVM.
339
Sean Silva52878db2013-01-20 02:19:42 +0000340:doc:`ExceptionHandling`
Sean Silva31da4392013-01-20 02:19:36 +0000341 This document describes the design and implementation of exception handling
342 in LLVM.
343
Sean Silva52878db2013-01-20 02:19:42 +0000344:doc:`Bugpoint`
Sean Silva31da4392013-01-20 02:19:36 +0000345 Automatic bug finder and test-case reducer description and usage
346 information.
347
Sean Silva52878db2013-01-20 02:19:42 +0000348:doc:`BitCodeFormat`
Sean Silva31da4392013-01-20 02:19:36 +0000349 This describes the file format and encoding used for LLVM "bc" files.
350
Kristina Brookscd4dcda2018-09-18 18:05:38 +0000351:doc:`Support Library <SupportLibrary>`
352 This document describes the LLVM Support Library (``lib/Support``) and
Sean Silva31da4392013-01-20 02:19:36 +0000353 how to keep LLVM source code portable
354
Sean Silva52878db2013-01-20 02:19:42 +0000355:doc:`LinkTimeOptimization`
Sean Silva31da4392013-01-20 02:19:36 +0000356 This document describes the interface between LLVM intermodular optimizer
357 and the linker and its design
358
Sean Silva52878db2013-01-20 02:19:42 +0000359:doc:`GoldPlugin`
Sean Silva31da4392013-01-20 02:19:36 +0000360 How to build your programs with link-time optimization on Linux.
361
Sean Silva52878db2013-01-20 02:19:42 +0000362:doc:`DebuggingJITedCode`
Sean Silva31da4392013-01-20 02:19:36 +0000363 How to debug JITed code with GDB.
364
Andrew Kaylor23dcb182013-08-21 22:15:09 +0000365:doc:`MCJITDesignAndImplementation`
366 Describes the inner workings of MCJIT execution engine.
367
Sean Silva52878db2013-01-20 02:19:42 +0000368:doc:`BranchWeightMetadata`
Sean Silva31da4392013-01-20 02:19:36 +0000369 Provides information about Branch Prediction Information.
370
Duncan P. N. Exon Smith23a60332014-04-11 23:21:07 +0000371:doc:`BlockFrequencyTerminology`
372 Provides information about terminology used in the ``BlockFrequencyInfo``
373 analysis pass.
374
Sean Silva52878db2013-01-20 02:19:42 +0000375:doc:`SegmentedStacks`
Sean Silva31da4392013-01-20 02:19:36 +0000376 This document describes segmented stacks and how they are used in LLVM.
377
Sean Silva52878db2013-01-20 02:19:42 +0000378:doc:`MarkedUpDisassembly`
Sean Silva31da4392013-01-20 02:19:36 +0000379 This document describes the optional rich disassembly output syntax.
380
Joe Abbey0013a5d2013-02-12 11:45:22 +0000381:doc:`HowToUseAttributes`
382 Answers some questions about the new Attributes infrastructure.
Sean Silva31da4392013-01-20 02:19:36 +0000383
Justin Holewinski531ebc82013-03-30 16:41:14 +0000384:doc:`NVPTXUsage`
Tony Tye69865532017-06-06 20:31:59 +0000385 This document describes using the NVPTX backend to compile GPU kernels.
Justin Holewinski531ebc82013-03-30 16:41:14 +0000386
Tom Stellard953c6812015-06-13 03:28:10 +0000387:doc:`AMDGPUUsage`
Tony Tye69865532017-06-06 20:31:59 +0000388 This document describes using the AMDGPU backend to compile GPU kernels.
Tom Stellard19cb35b2014-11-14 14:08:00 +0000389
Andrew Tricke97b1322013-12-24 02:57:25 +0000390:doc:`StackMaps`
391 LLVM support for mapping instruction addresses to the location of
392 values and allowing code to be patched.
Justin Holewinski531ebc82013-03-30 16:41:14 +0000393
James Molloy85918042014-05-12 15:13:39 +0000394:doc:`BigEndianNEON`
395 LLVM's support for generating NEON instructions on big endian ARM targets is
396 somewhat nonintuitive. This document explains the implementation and rationale.
397
Alex Lorenze3cea5f2014-08-19 17:05:58 +0000398:doc:`CoverageMappingFormat`
399 This describes the format and encoding used for LLVM’s code coverage mapping.
James Molloy85918042014-05-12 15:13:39 +0000400
Matt Arsenault99eff502014-12-03 18:35:11 +0000401:doc:`Statepoints`
402 This describes a set of experimental extensions for garbage
403 collection support.
404
Stepan Dyatkovskiy49126402014-12-10 17:42:01 +0000405:doc:`MergeFunctions`
406 Describes functions merging optimization.
407
Sean Silva54a61372015-02-04 20:51:19 +0000408:doc:`InAlloca`
409 Description of the ``inalloca`` argument attribute.
410
Sanjoy Dasdeca6722015-06-15 19:38:15 +0000411:doc:`FaultMaps`
412 LLVM support for folding control flow into faulting machine instructions.
413
Jingyue Wu69662672015-11-10 22:35:47 +0000414:doc:`CompileCudaWithLLVM`
415 LLVM support for CUDA.
416
David Majnemere48bbc42016-07-23 04:05:08 +0000417:doc:`Coroutines`
418 LLVM support for coroutines.
419
Ahmed Bougachabbf0c3a2016-11-04 17:57:34 +0000420:doc:`GlobalISel`
421 This describes the prototype instruction selection replacement, GlobalISel.
422
Dean Michael Berrisf70da782016-11-09 00:24:58 +0000423:doc:`XRay`
424 High-level documentation of how to use XRay in LLVM.
425
Dean Michael Berris21463ca2017-03-30 23:46:36 +0000426:doc:`XRayExample`
427 An example of how to debug an application with XRay.
428
Zachary Turnerab792ca2016-11-10 19:24:21 +0000429:doc:`The Microsoft PDB File Format <PDB/index>`
430 A detailed description of the Microsoft PDB (Program Database) file format.
431
Vlad Tsyrklevichbbb32802017-09-20 20:38:14 +0000432:doc:`CFIVerify`
433 A description of the verification tool for Control Flow Integrity.
434
Chandler Carruthd78e4342018-08-06 00:38:31 +0000435:doc:`SpeculativeLoadHardening`
436 A description of the Speculative Load Hardening mitigation for Spectre v1.
437
Vitaly Bukad305cea2018-11-26 23:16:07 +0000438:doc:`StackSafetyAnalysis`
439 This document describes the design of the stack safety analysis of local
440 variables.
441
Sean Silva31da4392013-01-20 02:19:36 +0000442Development Process Documentation
443=================================
444
Sean Silva31da4392013-01-20 02:19:36 +0000445Information about LLVM's development process.
446
447.. toctree::
448 :hidden:
449
Florian Hahn98977ed2018-01-04 17:12:21 +0000450 Contributing
Sean Silvaa6a22232013-03-30 15:32:47 +0000451 DeveloperPolicy
Sean Silva31da4392013-01-20 02:19:36 +0000452 Projects
453 LLVMBuild
454 HowToReleaseLLVM
Sean Silvaae702242013-01-28 21:28:10 +0000455 Packaging
Sean Silva07746812013-09-09 19:09:00 +0000456 ReleaseProcess
Adrian Prantl17dfc382014-10-03 20:17:32 +0000457 Phabricator
Kristof Beyls1f633af2018-11-07 08:49:36 +0000458 BugLifeCycle
Sean Silva31da4392013-01-20 02:19:36 +0000459
Florian Hahn98977ed2018-01-04 17:12:21 +0000460:doc:`Contributing`
461 An overview on how to contribute to LLVM.
462
Sean Silvaa6a22232013-03-30 15:32:47 +0000463:doc:`DeveloperPolicy`
464 The LLVM project's policy towards developers and their contributions.
465
Sean Silva52878db2013-01-20 02:19:42 +0000466:doc:`Projects`
Sean Silva31da4392013-01-20 02:19:36 +0000467 How-to guide and templates for new projects that *use* the LLVM
468 infrastructure. The templates (directory organization, Makefiles, and test
469 tree) allow the project code to be located outside (or inside) the ``llvm/``
470 tree, while using LLVM header files and libraries.
471
Sean Silva52878db2013-01-20 02:19:42 +0000472:doc:`LLVMBuild`
Sean Silva31da4392013-01-20 02:19:36 +0000473 Describes the LLVMBuild organization and files used by LLVM to specify
474 component descriptions.
475
Sean Silva52878db2013-01-20 02:19:42 +0000476:doc:`HowToReleaseLLVM`
Sean Silva31da4392013-01-20 02:19:36 +0000477 This is a guide to preparing LLVM releases. Most developers can ignore it.
478
Renato Golinfe4716f2013-05-28 10:32:55 +0000479:doc:`ReleaseProcess`
Jyoti Allur72db9e52014-09-26 06:59:15 +0000480 This is a guide to validate a new release, during the release process. Most developers can ignore it.
Renato Golinfe4716f2013-05-28 10:32:55 +0000481
Sean Silvaae702242013-01-28 21:28:10 +0000482:doc:`Packaging`
483 Advice on packaging LLVM into a distribution.
484
Adrian Prantl17dfc382014-10-03 20:17:32 +0000485:doc:`Phabricator`
486 Describes how to use the Phabricator code review tool hosted on
487 http://reviews.llvm.org/ and its command line interface, Arcanist.
488
Kristof Beyls1f633af2018-11-07 08:49:36 +0000489:doc:`BugLifeCycle`
490 Describes how bugs are reported, triaged and closed.
491
Sean Silvabd1aecb2013-03-30 15:32:51 +0000492Community
493=========
494
495LLVM has a thriving community of friendly and helpful developers.
496The two primary communication mechanisms in the LLVM community are mailing
497lists and IRC.
498
Sean Silva31da4392013-01-20 02:19:36 +0000499Mailing Lists
Sean Silvabd1aecb2013-03-30 15:32:51 +0000500-------------
Sean Silva31da4392013-01-20 02:19:36 +0000501
502If you can't find what you need in these docs, try consulting the mailing
503lists.
504
Tanya Lattner377a9842015-08-05 03:51:17 +0000505`Developer's List (llvm-dev)`__
Sean Silva31da4392013-01-20 02:19:36 +0000506 This list is for people who want to be included in technical discussions of
507 LLVM. People post to this list when they have questions about writing code
508 for or using the LLVM tools. It is relatively low volume.
509
Tanya Lattner377a9842015-08-05 03:51:17 +0000510 .. __: http://lists.llvm.org/mailman/listinfo/llvm-dev
Sean Silva31da4392013-01-20 02:19:36 +0000511
Sean Silvafb7aa392013-03-30 15:33:01 +0000512`Commits Archive (llvm-commits)`__
Sean Silva31da4392013-01-20 02:19:36 +0000513 This list contains all commit messages that are made when LLVM developers
Sean Silva6ef362a2013-03-30 15:33:02 +0000514 commit code changes to the repository. It also serves as a forum for
515 patch review (i.e. send patches here). It is useful for those who want to
516 stay on the bleeding edge of LLVM development. This list is very high
517 volume.
Sean Silva31da4392013-01-20 02:19:36 +0000518
Tanya Lattner377a9842015-08-05 03:51:17 +0000519 .. __: http://lists.llvm.org/pipermail/llvm-commits/
Sean Silva31da4392013-01-20 02:19:36 +0000520
Tanya Lattner377a9842015-08-05 03:51:17 +0000521`Bugs & Patches Archive (llvm-bugs)`__
Sean Silva6ef362a2013-03-30 15:33:02 +0000522 This list gets emailed every time a bug is opened and closed. It is
Tanya Lattner377a9842015-08-05 03:51:17 +0000523 higher volume than the LLVM-dev list.
Sean Silva13585652013-03-30 15:32:54 +0000524
Tanya Lattner377a9842015-08-05 03:51:17 +0000525 .. __: http://lists.llvm.org/pipermail/llvm-bugs/
Sean Silva13585652013-03-30 15:32:54 +0000526
Sean Silvafb7aa392013-03-30 15:33:01 +0000527`Test Results Archive (llvm-testresults)`__
Sean Silva31da4392013-01-20 02:19:36 +0000528 A message is automatically sent to this list by every active nightly tester
529 when it completes. As such, this list gets email several times each day,
530 making it a high volume list.
531
Tanya Lattner377a9842015-08-05 03:51:17 +0000532 .. __: http://lists.llvm.org/pipermail/llvm-testresults/
Sean Silva52878db2013-01-20 02:19:42 +0000533
Sean Silvafb7aa392013-03-30 15:33:01 +0000534`LLVM Announcements List (llvm-announce)`__
Sean Silva13585652013-03-30 15:32:54 +0000535 This is a low volume list that provides important announcements regarding
536 LLVM. It gets email about once a month.
537
Tanya Lattner377a9842015-08-05 03:51:17 +0000538 .. __: http://lists.llvm.org/mailman/listinfo/llvm-announce
Sean Silva13585652013-03-30 15:32:54 +0000539
Sean Silvabd1aecb2013-03-30 15:32:51 +0000540IRC
541---
542
543Users and developers of the LLVM project (including subprojects such as Clang)
544can be found in #llvm on `irc.oftc.net <irc://irc.oftc.net/llvm>`_.
545
546This channel has several bots.
547
548* Buildbot reporters
549
550 * llvmbb - Bot for the main LLVM buildbot master.
551 http://lab.llvm.org:8011/console
552 * bb-chapuni - An individually run buildbot master. http://bb.pgr.jp/console
553 * smooshlab - Apple's internal buildbot master.
554
555* robot - Bugzilla linker. %bug <number>
556
557* clang-bot - A `geordi <http://www.eelis.net/geordi/>`_ instance running
558 near-trunk clang instead of gcc.
559
Renato Golin0aa76a92016-07-20 09:38:04 +0000560Community wide proposals
561------------------------
562
563Proposals for massive changes in how the community behaves and how the work flow
564can be better.
565
566.. toctree::
567 :hidden:
568
569 CodeOfConduct
Mehdi Aminid6afe382016-10-12 23:02:02 +0000570 Proposals/GitHubMove
Michael Kruse39f6fac2018-10-23 19:46:29 +0000571 Proposals/TestSuite
Ayal Zaks98be03e2017-05-29 15:36:23 +0000572 Proposals/VectorizationPlan
Renato Golin0aa76a92016-07-20 09:38:04 +0000573
574:doc:`CodeOfConduct`
575 Proposal to adopt a code of conduct on the LLVM social spaces (lists, events,
576 IRC, etc).
577
Mehdi Aminid6afe382016-10-12 23:02:02 +0000578:doc:`Proposals/GitHubMove`
Renato Golin0aa76a92016-07-20 09:38:04 +0000579 Proposal to move from SVN/Git to GitHub.
580
Michael Kruse39f6fac2018-10-23 19:46:29 +0000581:doc:`Proposals/TestSuite`
582 Proposals for additional benchmarks/programs for llvm's test-suite.
583
Ayal Zaks98be03e2017-05-29 15:36:23 +0000584:doc:`Proposals/VectorizationPlan`
585 Proposal to model the process and upgrade the infrastructure of LLVM's Loop Vectorizer.
Sean Silvabd1aecb2013-03-30 15:32:51 +0000586
Daniel Dunbar21e993c2012-04-19 16:31:37 +0000587Indices and tables
588==================
589
590* :ref:`genindex`
591* :ref:`search`