--- /dev/null
+Programming Documentation\r
+=========================\r
+\r
+For developers of applications which use LLVM as a library.\r
+\r
+.. toctree::\r
+ :hidden:\r
+\r
+ Atomics\r
+ CommandLine\r
+ ExtendingLLVM\r
+ HowToSetUpLLVMStyleRTTI\r
+ ProgrammersManual\r
+ Extensions\r
+ LibFuzzer\r
+ FuzzingLLVM\r
+ ScudoHardenedAllocator\r
+ OptBisect\r
+ GwpAsan\r
+\r
+:doc:`Atomics`\r
+ Information about LLVM's concurrency model.\r
+\r
+:doc:`ProgrammersManual`\r
+ Introduction to the general layout of the LLVM sourcebase, important classes\r
+ and APIs, and some tips & tricks.\r
+\r
+:doc:`Extensions`\r
+ LLVM-specific extensions to tools and formats LLVM seeks compatibility with.\r
+\r
+:doc:`CommandLine`\r
+ Provides information on using the command line parsing library.\r
+\r
+:doc:`HowToSetUpLLVMStyleRTTI`\r
+ How to make ``isa<>``, ``dyn_cast<>``, etc. available for clients of your\r
+ class hierarchy.\r
+\r
+:doc:`ExtendingLLVM`\r
+ Look here to see how to add instructions and intrinsics to LLVM.\r
+\r
+:doc:`LibFuzzer`\r
+ A library for writing in-process guided fuzzers.\r
+\r
+:doc:`FuzzingLLVM`\r
+ Information on writing and using Fuzzers to find bugs in LLVM.\r
+\r
+:doc:`ScudoHardenedAllocator`\r
+ A library that implements a security-hardened `malloc()`.\r
+\r
+:doc:`OptBisect`\r
+ A command line option for debugging optimization-induced failures.\r
+\r
+:doc:`GwpAsan`\r
+ A sampled heap memory error detection toolkit designed for production use.
\ No newline at end of file
--- /dev/null
+.. _index-subsystem-docs:\r
+\r
+Subsystem Documentation\r
+=======================\r
+\r
+For API clients and LLVM developers.\r
+\r
+.. toctree::\r
+ :hidden:\r
+\r
+ AliasAnalysis\r
+ MemorySSA\r
+ BitCodeFormat\r
+ BlockFrequencyTerminology\r
+ BranchWeightMetadata\r
+ Bugpoint\r
+ CodeGenerator\r
+ ExceptionHandling\r
+ AddingConstrainedIntrinsics\r
+ LinkTimeOptimization\r
+ SegmentedStacks\r
+ TableGenFundamentals\r
+ TableGen/index\r
+ DebuggingJITedCode\r
+ GoldPlugin\r
+ MarkedUpDisassembly\r
+ SystemLibrary\r
+ SupportLibrary\r
+ SourceLevelDebugging\r
+ Vectorizers\r
+ WritingAnLLVMBackend\r
+ GarbageCollection\r
+ WritingAnLLVMPass\r
+ HowToUseAttributes\r
+ NVPTXUsage\r
+ AMDGPUUsage\r
+ StackMaps\r
+ InAlloca\r
+ BigEndianNEON\r
+ CoverageMappingFormat\r
+ Statepoints\r
+ MergeFunctions\r
+ TypeMetadata\r
+ TransformMetadata\r
+ FaultMaps\r
+ Coroutines\r
+ GlobalISel\r
+ XRay\r
+ XRayExample\r
+ XRayFDRFormat\r
+ PDB/index\r
+ CFIVerify\r
+ SpeculativeLoadHardening\r
+ StackSafetyAnalysis\r
+ LoopTerminology\r
+ DependenceGraphs/index\r
+\r
+:doc:`WritingAnLLVMPass`\r
+ Information on how to write LLVM transformations and analyses.\r
+\r
+:doc:`WritingAnLLVMBackend`\r
+ Information on how to write LLVM backends for machine targets.\r
+\r
+:doc:`CodeGenerator`\r
+ The design and implementation of the LLVM code generator. Useful if you are\r
+ working on retargetting LLVM to a new architecture, designing a new codegen\r
+ pass, or enhancing existing components.\r
+\r
+:doc:`TableGen <TableGen/index>`\r
+ Describes the TableGen tool, which is used heavily by the LLVM code\r
+ generator.\r
+\r
+:doc:`AliasAnalysis`\r
+ Information on how to write a new alias analysis implementation or how to\r
+ use existing analyses.\r
+\r
+:doc:`MemorySSA`\r
+ Information about the MemorySSA utility in LLVM, as well as how to use it.\r
+\r
+:doc:`GarbageCollection`\r
+ The interfaces source-language compilers should use for compiling GC'd\r
+ programs.\r
+\r
+:doc:`Source Level Debugging with LLVM <SourceLevelDebugging>`\r
+ This document describes the design and philosophy behind the LLVM\r
+ source-level debugger.\r
+\r
+:doc:`Vectorizers`\r
+ This document describes the current status of vectorization in LLVM.\r
+\r
+:doc:`ExceptionHandling`\r
+ This document describes the design and implementation of exception handling\r
+ in LLVM.\r
+\r
+:doc:`AddingConstrainedIntrinsics`\r
+ Gives the steps necessary when adding a new constrained math intrinsic\r
+ to LLVM.\r
+\r
+:doc:`Bugpoint`\r
+ Automatic bug finder and test-case reducer description and usage\r
+ information.\r
+\r
+:doc:`BitCodeFormat`\r
+ This describes the file format and encoding used for LLVM "bc" files.\r
+\r
+:doc:`Support Library <SupportLibrary>`\r
+ This document describes the LLVM Support Library (``lib/Support``) and\r
+ how to keep LLVM source code portable\r
+\r
+:doc:`LinkTimeOptimization`\r
+ This document describes the interface between LLVM intermodular optimizer\r
+ and the linker and its design\r
+\r
+:doc:`GoldPlugin`\r
+ How to build your programs with link-time optimization on Linux.\r
+\r
+:doc:`DebuggingJITedCode`\r
+ How to debug JITed code with GDB.\r
+\r
+:doc:`MCJITDesignAndImplementation`\r
+ Describes the inner workings of MCJIT execution engine.\r
+\r
+:doc:`ORCv2`\r
+ Describes the design and implementation of the ORC APIs, including some\r
+ usage examples, and a guide for users transitioning from ORCv1 to ORCv2.\r
+\r
+:doc:`BranchWeightMetadata`\r
+ Provides information about Branch Prediction Information.\r
+\r
+:doc:`BlockFrequencyTerminology`\r
+ Provides information about terminology used in the ``BlockFrequencyInfo``\r
+ analysis pass.\r
+\r
+:doc:`SegmentedStacks`\r
+ This document describes segmented stacks and how they are used in LLVM.\r
+\r
+:doc:`MarkedUpDisassembly`\r
+ This document describes the optional rich disassembly output syntax.\r
+\r
+:doc:`HowToUseAttributes`\r
+ Answers some questions about the new Attributes infrastructure.\r
+\r
+:doc:`NVPTXUsage`\r
+ This document describes using the NVPTX backend to compile GPU kernels.\r
+\r
+:doc:`AMDGPUUsage`\r
+ This document describes using the AMDGPU backend to compile GPU kernels.\r
+\r
+:doc:`StackMaps`\r
+ LLVM support for mapping instruction addresses to the location of\r
+ values and allowing code to be patched.\r
+\r
+:doc:`BigEndianNEON`\r
+ LLVM's support for generating NEON instructions on big endian ARM targets is\r
+ somewhat nonintuitive. This document explains the implementation and rationale.\r
+\r
+:doc:`CoverageMappingFormat`\r
+ This describes the format and encoding used for LLVM’s code coverage mapping.\r
+\r
+:doc:`Statepoints`\r
+ This describes a set of experimental extensions for garbage\r
+ collection support.\r
+\r
+:doc:`MergeFunctions`\r
+ Describes functions merging optimization.\r
+\r
+:doc:`InAlloca`\r
+ Description of the ``inalloca`` argument attribute.\r
+\r
+:doc:`FaultMaps`\r
+ LLVM support for folding control flow into faulting machine instructions.\r
+\r
+:doc:`CompileCudaWithLLVM`\r
+ LLVM support for CUDA.\r
+\r
+:doc:`Coroutines`\r
+ LLVM support for coroutines.\r
+\r
+:doc:`GlobalISel`\r
+ This describes the prototype instruction selection replacement, GlobalISel.\r
+\r
+:doc:`XRay`\r
+ High-level documentation of how to use XRay in LLVM.\r
+\r
+:doc:`XRayExample`\r
+ An example of how to debug an application with XRay.\r
+\r
+:doc:`The Microsoft PDB File Format <PDB/index>`\r
+ A detailed description of the Microsoft PDB (Program Database) file format.\r
+\r
+:doc:`CFIVerify`\r
+ A description of the verification tool for Control Flow Integrity.\r
+\r
+:doc:`SpeculativeLoadHardening`\r
+ A description of the Speculative Load Hardening mitigation for Spectre v1.\r
+\r
+:doc:`StackSafetyAnalysis`\r
+ This document describes the design of the stack safety analysis of local\r
+ variables.\r
+\r
+:doc:`LoopTerminology`\r
+ A document describing Loops and associated terms as used in LLVM.\r
+\r
+:doc:`Dependence Graphs <DependenceGraphs/index>`\r
+ A description of the design of the various dependence graphs such as\r
+ the DDG (Data Dependence Graph).\r