| DeForest Richards | e3e6624 | 2019-09-05 17:30:52 +0000 | [diff] [blame] | 1 | User Guides | 
|  | 2 | =========== | 
|  | 3 |  | 
| DeForest Richards | e3e6624 | 2019-09-05 17:30:52 +0000 | [diff] [blame] | 4 | NOTE: If you are a user who is only interested in using an LLVM-based compiler, | 
| Sylvestre Ledru | 72fd103 | 2020-03-22 22:42:03 +0100 | [diff] [blame] | 5 | you should look into `Clang <https://clang.llvm.org>`_ instead. The | 
| DeForest Richards | e3e6624 | 2019-09-05 17:30:52 +0000 | [diff] [blame] | 6 | documentation here is intended for users who have a need to work with the | 
|  | 7 | intermediate LLVM representation. | 
|  | 8 |  | 
| DeForest Richards | 6d19651 | 2019-10-06 15:36:37 +0000 | [diff] [blame] | 9 | .. contents:: | 
|  | 10 | :local: | 
|  | 11 |  | 
| DeForest Richards | e3e6624 | 2019-09-05 17:30:52 +0000 | [diff] [blame] | 12 | .. toctree:: | 
|  | 13 | :hidden: | 
|  | 14 |  | 
| DeForest Richards | 38d16c1 | 2019-10-06 22:49:22 +0000 | [diff] [blame] | 15 | AddingConstrainedIntrinsics | 
|  | 16 | AdvancedBuilds | 
|  | 17 | AliasAnalysis | 
|  | 18 | AMDGPUUsage | 
|  | 19 | Benchmarking | 
|  | 20 | BigEndianNEON | 
|  | 21 | BuildingADistribution | 
| DeForest Richards | 22373c5 | 2019-10-13 20:05:22 +0000 | [diff] [blame] | 22 | CFIVerify | 
| DeForest Richards | e3e6624 | 2019-09-05 17:30:52 +0000 | [diff] [blame] | 23 | CMake | 
|  | 24 | CMakePrimer | 
| DeForest Richards | 38d16c1 | 2019-10-06 22:49:22 +0000 | [diff] [blame] | 25 | CodeGenerator | 
|  | 26 | CodeOfConduct | 
|  | 27 | CommandLine | 
|  | 28 | CompileCudaWithLLVM | 
|  | 29 | CoverageMappingFormat | 
|  | 30 | DebuggingJITedCode | 
|  | 31 | Docker | 
|  | 32 | ExtendingLLVM | 
|  | 33 | GoldPlugin | 
| DeForest Richards | e3e6624 | 2019-09-05 17:30:52 +0000 | [diff] [blame] | 34 | HowToBuildOnARM | 
|  | 35 | HowToBuildWithPGO | 
|  | 36 | HowToCrossCompileBuiltinsOnArm | 
|  | 37 | HowToCrossCompileLLVM | 
| Vedant Kumar | b429a0f | 2020-05-15 17:13:18 -0700 | [diff] [blame] | 38 | HowToUpdateDebugInfo | 
| DeForest Richards | 38d16c1 | 2019-10-06 22:49:22 +0000 | [diff] [blame] | 39 | LinkTimeOptimization | 
|  | 40 | LoopTerminology | 
| DeForest Richards | e3e6624 | 2019-09-05 17:30:52 +0000 | [diff] [blame] | 41 | MarkdownQuickstartTemplate | 
| DeForest Richards | edbb895 | 2019-10-09 21:09:09 +0000 | [diff] [blame] | 42 | MemorySSA | 
| DeForest Richards | 38d16c1 | 2019-10-06 22:49:22 +0000 | [diff] [blame] | 43 | MergeFunctions | 
|  | 44 | MCJITDesignAndImplementation | 
|  | 45 | NVPTXUsage | 
| DeForest Richards | e3e6624 | 2019-09-05 17:30:52 +0000 | [diff] [blame] | 46 | Phabricator | 
| DeForest Richards | e3e6624 | 2019-09-05 17:30:52 +0000 | [diff] [blame] | 47 | Passes | 
| DeForest Richards | e3e6624 | 2019-09-05 17:30:52 +0000 | [diff] [blame] | 48 | ReportingGuide | 
| DeForest Richards | e3e6624 | 2019-09-05 17:30:52 +0000 | [diff] [blame] | 49 | Remarks | 
| DeForest Richards | 38d16c1 | 2019-10-06 22:49:22 +0000 | [diff] [blame] | 50 | SourceLevelDebugging | 
| DeForest Richards | edbb895 | 2019-10-09 21:09:09 +0000 | [diff] [blame] | 51 | StackSafetyAnalysis | 
|  | 52 | SupportLibrary | 
| DeForest Richards | 38d16c1 | 2019-10-06 22:49:22 +0000 | [diff] [blame] | 53 | TableGen/index | 
|  | 54 | TableGenFundamentals | 
|  | 55 | Vectorizers | 
| DeForest Richards | 6d19651 | 2019-10-06 15:36:37 +0000 | [diff] [blame] | 56 | WritingAnLLVMPass | 
|  | 57 | WritingAnLLVMBackend | 
| DeForest Richards | 38d16c1 | 2019-10-06 22:49:22 +0000 | [diff] [blame] | 58 | yaml2obj | 
| DeForest Richards | e3e6624 | 2019-09-05 17:30:52 +0000 | [diff] [blame] | 59 |  | 
| DeForest Richards | 2605f8c | 2019-09-27 19:12:00 +0000 | [diff] [blame] | 60 | Clang | 
| DeForest Richards | 6d19651 | 2019-10-06 15:36:37 +0000 | [diff] [blame] | 61 | ----- | 
| DeForest Richards | 2605f8c | 2019-09-27 19:12:00 +0000 | [diff] [blame] | 62 |  | 
| DeForest Richards | e3e6624 | 2019-09-05 17:30:52 +0000 | [diff] [blame] | 63 | :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 Richards | e3e6624 | 2019-09-05 17:30:52 +0000 | [diff] [blame] | 69 | :doc:`HowToCrossCompileLLVM` | 
|  | 70 | Notes on cross-building and testing LLVM/Clang. | 
|  | 71 |  | 
| DeForest Richards | 2605f8c | 2019-09-27 19:12:00 +0000 | [diff] [blame] | 72 | `How to build the C, C++, ObjC, and ObjC++ front end`__ | 
|  | 73 | Instructions for building the clang front-end from source. | 
|  | 74 |  | 
| Sylvestre Ledru | 72fd103 | 2020-03-22 22:42:03 +0100 | [diff] [blame] | 75 | .. __: https://clang.llvm.org/get_started.html | 
| DeForest Richards | 2605f8c | 2019-09-27 19:12:00 +0000 | [diff] [blame] | 76 |  | 
| DeForest Richards | 38d16c1 | 2019-10-06 22:49:22 +0000 | [diff] [blame] | 77 | :doc:`CoverageMappingFormat` | 
|  | 78 | This describes the format and encoding used for LLVM’s code coverage mapping. | 
|  | 79 |  | 
| DeForest Richards | 22373c5 | 2019-10-13 20:05:22 +0000 | [diff] [blame] | 80 | :doc:`CFIVerify` | 
|  | 81 | A description of the verification tool for Control Flow Integrity. | 
|  | 82 |  | 
| DeForest Richards | 6d19651 | 2019-10-06 15:36:37 +0000 | [diff] [blame] | 83 | LLVM 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 Richards | 2605f8c | 2019-09-27 19:12:00 +0000 | [diff] [blame] | 93 |  | 
|  | 94 | :doc:`Docker` | 
|  | 95 | A reference for using Dockerfiles provided with LLVM. | 
|  | 96 |  | 
| DeForest Richards | edbb895 | 2019-10-09 21:09:09 +0000 | [diff] [blame] | 97 | :doc:`Support Library <SupportLibrary>` | 
|  | 98 | This document describes the LLVM Support Library (``lib/Support``) and | 
| Yuanfang Chen | f9ea86e | 2020-06-01 17:09:40 -0700 | [diff] [blame^] | 99 | how to keep LLVM source code portable. | 
|  | 100 |  | 
|  | 101 | :doc:`AdvancedBuilds` | 
|  | 102 | This document describes more advanced build configurations. | 
| DeForest Richards | edbb895 | 2019-10-09 21:09:09 +0000 | [diff] [blame] | 103 |  | 
| DeForest Richards | 6d19651 | 2019-10-06 15:36:37 +0000 | [diff] [blame] | 104 | Optimizations | 
|  | 105 | ------------- | 
| DeForest Richards | 2605f8c | 2019-09-27 19:12:00 +0000 | [diff] [blame] | 106 |  | 
| DeForest Richards | 6d19651 | 2019-10-06 15:36:37 +0000 | [diff] [blame] | 107 | :doc:`WritingAnLLVMPass` | 
|  | 108 | Information on how to write LLVM transformations and analyses. | 
| DeForest Richards | 2605f8c | 2019-09-27 19:12:00 +0000 | [diff] [blame] | 109 |  | 
| DeForest Richards | e3e6624 | 2019-09-05 17:30:52 +0000 | [diff] [blame] | 110 | :doc:`Passes` | 
|  | 111 | A list of optimizations and analyses implemented in LLVM. | 
|  | 112 |  | 
| DeForest Richards | 38d16c1 | 2019-10-06 22:49:22 +0000 | [diff] [blame] | 113 | :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 Richards | edbb895 | 2019-10-09 21:09:09 +0000 | [diff] [blame] | 124 | :doc:`MemorySSA` | 
|  | 125 | Information about the MemorySSA utility in LLVM, as well as how to use it. | 
|  | 126 |  | 
| DeForest Richards | 6d19651 | 2019-10-06 15:36:37 +0000 | [diff] [blame] | 127 | :doc:`LoopTerminology` | 
|  | 128 | A document describing Loops and associated terms as used in LLVM. | 
| DeForest Richards | e3e6624 | 2019-09-05 17:30:52 +0000 | [diff] [blame] | 129 |  | 
| DeForest Richards | 38d16c1 | 2019-10-06 22:49:22 +0000 | [diff] [blame] | 130 | :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 Richards | e3e6624 | 2019-09-05 17:30:52 +0000 | [diff] [blame] | 140 | :doc:`Remarks` | 
| DeForest Richards | 6d19651 | 2019-10-06 15:36:37 +0000 | [diff] [blame] | 141 | A reference on the implementation of remarks in LLVM. | 
|  | 142 |  | 
| DeForest Richards | 38d16c1 | 2019-10-06 22:49:22 +0000 | [diff] [blame] | 143 | :doc:`Source Level Debugging with LLVM <SourceLevelDebugging>` | 
|  | 144 | This document describes the design and philosophy behind the LLVM | 
|  | 145 | source-level debugger. | 
|  | 146 |  | 
| DeForest Richards | 6d19651 | 2019-10-06 15:36:37 +0000 | [diff] [blame] | 147 | Code 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 Richards | 38d16c1 | 2019-10-06 22:49:22 +0000 | [diff] [blame] | 162 | === | 
|  | 163 | JIT | 
|  | 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 Richards | 6d19651 | 2019-10-06 15:36:37 +0000 | [diff] [blame] | 172 | Additional Topics | 
|  | 173 | ----------------- | 
|  | 174 |  | 
| DeForest Richards | de0e3aa | 2019-10-06 16:10:11 +0000 | [diff] [blame] | 175 | :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 Richards | 38d16c1 | 2019-10-06 22:49:22 +0000 | [diff] [blame] | 181 | :doc:`AddingConstrainedIntrinsics` | 
|  | 182 | Gives the steps necessary when adding a new constrained math intrinsic | 
|  | 183 | to LLVM. | 
|  | 184 |  | 
| DeForest Richards | 6d19651 | 2019-10-06 15:36:37 +0000 | [diff] [blame] | 185 | :doc:`HowToCrossCompileBuiltinsOnArm` | 
|  | 186 | Notes on cross-building and testing the compiler-rt builtins for Arm. | 
|  | 187 |  | 
| DeForest Richards | 38d16c1 | 2019-10-06 22:49:22 +0000 | [diff] [blame] | 188 | :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 Richards | 6d19651 | 2019-10-06 15:36:37 +0000 | [diff] [blame] | 195 | :doc:`NVPTXUsage` | 
|  | 196 | This document describes using the NVPTX backend to compile GPU kernels. | 
|  | 197 |  | 
|  | 198 | :doc:`AMDGPUUsage` | 
| Tony | 1eac2c5 | 2020-04-14 00:55:43 -0400 | [diff] [blame] | 199 | This document describes using the AMDGPU backend to compile GPU kernels. | 
|  | 200 |  | 
|  | 201 | :doc:`AMDGPUDwarfProposalForHeterogeneousDebugging` | 
|  | 202 | This document describes a DWARF proposal to support heterogeneous debugging | 
| Vedant Kumar | b429a0f | 2020-05-15 17:13:18 -0700 | [diff] [blame] | 203 | for targets such as the AMDGPU backend. |