diff options
| -rw-r--r-- | llvm/docs/ProgrammingDocumentation.rst | 75 | ||||
| -rw-r--r-- | llvm/docs/SubsystemDocumentation.rst | 210 | ||||
| -rw-r--r-- | llvm/docs/UserGuides.rst | 135 | ||||
| -rw-r--r-- | llvm/docs/index.rst | 428 |
4 files changed, 433 insertions, 415 deletions
diff --git a/llvm/docs/ProgrammingDocumentation.rst b/llvm/docs/ProgrammingDocumentation.rst new file mode 100644 index 00000000000..a5115089853 --- /dev/null +++ b/llvm/docs/ProgrammingDocumentation.rst @@ -0,0 +1,75 @@ +Programming Documentation
+=========================
+
+For developers of applications which use LLVM as a library.
+
+.. toctree::
+ :hidden:
+
+ Atomics
+ CodingStandards
+ CommandLine
+ CompilerWriterInfo
+ ExtendingLLVM
+ HowToSetUpLLVMStyleRTTI
+ ProgrammersManual
+ Extensions
+ LibFuzzer
+ FuzzingLLVM
+ ScudoHardenedAllocator
+ OptBisect
+ GwpAsan
+
+:doc:`LLVM Language Reference Manual <LangRef>`
+ Defines the LLVM intermediate representation and the assembly form of the
+ different nodes.
+
+:doc:`Atomics`
+ Information about LLVM's concurrency model.
+
+:doc:`ProgrammersManual`
+ Introduction to the general layout of the LLVM sourcebase, important classes
+ and APIs, and some tips & tricks.
+
+:doc:`Extensions`
+ LLVM-specific extensions to tools and formats LLVM seeks compatibility with.
+
+:doc:`CommandLine`
+ Provides information on using the command line parsing library.
+
+:doc:`CodingStandards`
+ Details the LLVM coding standards and provides useful information on writing
+ efficient C++ code.
+
+:doc:`HowToSetUpLLVMStyleRTTI`
+ How to make ``isa<>``, ``dyn_cast<>``, etc. available for clients of your
+ class hierarchy.
+
+:doc:`ExtendingLLVM`
+ Look here to see how to add instructions and intrinsics to LLVM.
+
+`Doxygen generated documentation <http://llvm.org/doxygen/>`_
+ (`classes <http://llvm.org/doxygen/inherits.html>`_)
+
+`Documentation for Go bindings <http://godoc.org/llvm.org/llvm/bindings/go/llvm>`_
+
+`Github Source Repository Browser <http://github.com/llvm/llvm-project//>`_
+ ..
+
+:doc:`CompilerWriterInfo`
+ A list of helpful links for compiler writers.
+
+:doc:`LibFuzzer`
+ A library for writing in-process guided fuzzers.
+
+:doc:`FuzzingLLVM`
+ Information on writing and using Fuzzers to find bugs in LLVM.
+
+:doc:`ScudoHardenedAllocator`
+ A library that implements a security-hardened `malloc()`.
+
+:doc:`OptBisect`
+ A command line option for debugging optimization-induced failures.
+
+:doc:`GwpAsan`
+ A sampled heap memory error detection toolkit designed for production use.
\ No newline at end of file diff --git a/llvm/docs/SubsystemDocumentation.rst b/llvm/docs/SubsystemDocumentation.rst new file mode 100644 index 00000000000..005d541ceb3 --- /dev/null +++ b/llvm/docs/SubsystemDocumentation.rst @@ -0,0 +1,210 @@ +.. _index-subsystem-docs:
+
+Subsystem Documentation
+=======================
+
+For API clients and LLVM developers.
+
+.. toctree::
+ :hidden:
+
+ AliasAnalysis
+ MemorySSA
+ BitCodeFormat
+ BlockFrequencyTerminology
+ BranchWeightMetadata
+ Bugpoint
+ BugpointRedesign
+ CodeGenerator
+ ExceptionHandling
+ AddingConstrainedIntrinsics
+ LinkTimeOptimization
+ SegmentedStacks
+ TableGenFundamentals
+ TableGen/index
+ DebuggingJITedCode
+ GoldPlugin
+ MarkedUpDisassembly
+ SystemLibrary
+ SupportLibrary
+ SourceLevelDebugging
+ Vectorizers
+ WritingAnLLVMBackend
+ GarbageCollection
+ WritingAnLLVMPass
+ HowToUseAttributes
+ NVPTXUsage
+ AMDGPUUsage
+ StackMaps
+ InAlloca
+ BigEndianNEON
+ CoverageMappingFormat
+ Statepoints
+ MergeFunctions
+ TypeMetadata
+ TransformMetadata
+ FaultMaps
+ MIRLangRef
+ Coroutines
+ GlobalISel
+ XRay
+ XRayExample
+ XRayFDRFormat
+ PDB/index
+ CFIVerify
+ SpeculativeLoadHardening
+ StackSafetyAnalysis
+ LoopTerminology
+
+:doc:`WritingAnLLVMPass`
+ Information on how to write LLVM transformations and analyses.
+
+:doc:`WritingAnLLVMBackend`
+ Information on how to write LLVM backends for machine targets.
+
+:doc:`CodeGenerator`
+ The design and implementation of the LLVM code generator. Useful if you are
+ working on retargetting LLVM to a new architecture, designing a new codegen
+ pass, or enhancing existing components.
+
+:doc:`Machine IR (MIR) Format Reference Manual <MIRLangRef>`
+ A reference manual for the MIR serialization format, which is used to test
+ LLVM's code generation passes.
+
+:doc:`TableGen <TableGen/index>`
+ Describes the TableGen tool, which is used heavily by the LLVM code
+ generator.
+
+:doc:`AliasAnalysis`
+ Information on how to write a new alias analysis implementation or how to
+ use existing analyses.
+
+:doc:`MemorySSA`
+ Information about the MemorySSA utility in LLVM, as well as how to use it.
+
+:doc:`GarbageCollection`
+ The interfaces source-language compilers should use for compiling GC'd
+ programs.
+
+:doc:`Source Level Debugging with LLVM <SourceLevelDebugging>`
+ This document describes the design and philosophy behind the LLVM
+ source-level debugger.
+
+:doc:`Vectorizers`
+ This document describes the current status of vectorization in LLVM.
+
+:doc:`ExceptionHandling`
+ This document describes the design and implementation of exception handling
+ in LLVM.
+
+:doc:`AddingConstrainedIntrinsics`
+ Gives the steps necessary when adding a new constrained math intrinsic
+ to LLVM.
+
+:doc:`Bugpoint`
+ Automatic bug finder and test-case reducer description and usage
+ information.
+
+:doc:`BugpointRedesign`
+ Design doc for a redesign of the Bugpoint tool.
+
+:doc:`BitCodeFormat`
+ This describes the file format and encoding used for LLVM "bc" files.
+
+:doc:`Support Library <SupportLibrary>`
+ This document describes the LLVM Support Library (``lib/Support``) and
+ how to keep LLVM source code portable
+
+:doc:`LinkTimeOptimization`
+ This document describes the interface between LLVM intermodular optimizer
+ and the linker and its design
+
+:doc:`GoldPlugin`
+ How to build your programs with link-time optimization on Linux.
+
+:doc:`DebuggingJITedCode`
+ How to debug JITed code with GDB.
+
+:doc:`MCJITDesignAndImplementation`
+ Describes the inner workings of MCJIT execution engine.
+
+:doc:`ORCv2`
+ Describes the design and implementation of the ORC APIs, including some
+ usage examples, and a guide for users transitioning from ORCv1 to ORCv2.
+
+:doc:`BranchWeightMetadata`
+ Provides information about Branch Prediction Information.
+
+:doc:`BlockFrequencyTerminology`
+ Provides information about terminology used in the ``BlockFrequencyInfo``
+ analysis pass.
+
+:doc:`SegmentedStacks`
+ This document describes segmented stacks and how they are used in LLVM.
+
+:doc:`MarkedUpDisassembly`
+ This document describes the optional rich disassembly output syntax.
+
+:doc:`HowToUseAttributes`
+ Answers some questions about the new Attributes infrastructure.
+
+:doc:`NVPTXUsage`
+ This document describes using the NVPTX backend to compile GPU kernels.
+
+:doc:`AMDGPUUsage`
+ This document describes using the AMDGPU backend to compile GPU kernels.
+
+:doc:`StackMaps`
+ LLVM support for mapping instruction addresses to the location of
+ values and allowing code to be patched.
+
+:doc:`BigEndianNEON`
+ LLVM's support for generating NEON instructions on big endian ARM targets is
+ somewhat nonintuitive. This document explains the implementation and rationale.
+
+:doc:`CoverageMappingFormat`
+ This describes the format and encoding used for LLVM’s code coverage mapping.
+
+:doc:`Statepoints`
+ This describes a set of experimental extensions for garbage
+ collection support.
+
+:doc:`MergeFunctions`
+ Describes functions merging optimization.
+
+:doc:`InAlloca`
+ Description of the ``inalloca`` argument attribute.
+
+:doc:`FaultMaps`
+ LLVM support for folding control flow into faulting machine instructions.
+
+:doc:`CompileCudaWithLLVM`
+ LLVM support for CUDA.
+
+:doc:`Coroutines`
+ LLVM support for coroutines.
+
+:doc:`GlobalISel`
+ This describes the prototype instruction selection replacement, GlobalISel.
+
+:doc:`XRay`
+ High-level documentation of how to use XRay in LLVM.
+
+:doc:`XRayExample`
+ An example of how to debug an application with XRay.
+
+:doc:`The Microsoft PDB File Format <PDB/index>`
+ A detailed description of the Microsoft PDB (Program Database) file format.
+
+:doc:`CFIVerify`
+ A description of the verification tool for Control Flow Integrity.
+
+:doc:`SpeculativeLoadHardening`
+ A description of the Speculative Load Hardening mitigation for Spectre v1.
+
+:doc:`StackSafetyAnalysis`
+ This document describes the design of the stack safety analysis of local
+ variables.
+
+:doc:`LoopTerminology`
+ A document describing Loops and associated terms as used in LLVM.
\ No newline at end of file diff --git a/llvm/docs/UserGuides.rst b/llvm/docs/UserGuides.rst new file mode 100644 index 00000000000..67a66d15fcc --- /dev/null +++ b/llvm/docs/UserGuides.rst @@ -0,0 +1,135 @@ +User Guides
+===========
+
+For those new to the LLVM system.
+
+NOTE: If you are a user who is only interested in using an LLVM-based compiler,
+you should look into `Clang <http://clang.llvm.org>`_ instead. The
+documentation here is intended for users who have a need to work with the
+intermediate LLVM representation.
+
+.. toctree::
+ :hidden:
+
+ CMake
+ CMakePrimer
+ AdvancedBuilds
+ HowToBuildOnARM
+ HowToBuildWithPGO
+ HowToCrossCompileBuiltinsOnArm
+ HowToCrossCompileLLVM
+ CommandGuide/index
+ GettingStarted
+ GettingStartedVS
+ FAQ
+ Lexicon
+ HowToAddABuilder
+ yaml2obj
+ HowToSubmitABug
+ SphinxQuickstartTemplate
+ MarkdownQuickstartTemplate
+ Phabricator
+ TestingGuide
+ tutorial/index
+ ReleaseNotes
+ Passes
+ YamlIO
+ GetElementPtr
+ Frontend/PerformanceTips
+ MCJITDesignAndImplementation
+ ORCv2
+ CodeOfConduct
+ CompileCudaWithLLVM
+ ReportingGuide
+ Benchmarking
+ Docker
+ BuildingADistribution
+ Remarks
+
+:doc:`GettingStarted`
+ Discusses how to get up and running quickly with the LLVM infrastructure.
+ Everything from unpacking and compilation of the distribution to execution
+ of some tools.
+
+:doc:`CMake`
+ An addendum to the main Getting Started guide for those using the `CMake
+ build system <http://www.cmake.org>`_.
+
+:doc:`HowToBuildOnARM`
+ Notes on building and testing LLVM/Clang on ARM.
+
+:doc:`HowToBuildWithPGO`
+ Notes on building LLVM/Clang with PGO.
+
+:doc:`HowToCrossCompileBuiltinsOnArm`
+ Notes on cross-building and testing the compiler-rt builtins for Arm.
+
+:doc:`HowToCrossCompileLLVM`
+ Notes on cross-building and testing LLVM/Clang.
+
+:doc:`GettingStartedVS`
+ An addendum to the main Getting Started guide for those using Visual Studio
+ on Windows.
+
+:doc:`tutorial/index`
+ Tutorials about using LLVM. Includes a tutorial about making a custom
+ language with LLVM.
+
+:doc:`LLVM Command Guide <CommandGuide/index>`
+ A reference manual for the LLVM command line utilities ("man" pages for LLVM
+ tools).
+
+:doc:`Passes`
+ A list of optimizations and analyses implemented in LLVM.
+
+:doc:`FAQ`
+ A list of common questions and problems and their solutions.
+
+:doc:`Release notes for the current release <ReleaseNotes>`
+ This describes new features, known bugs, and other limitations.
+
+:doc:`HowToSubmitABug`
+ Instructions for properly submitting information about any bugs you run into
+ in the LLVM system.
+
+:doc:`SphinxQuickstartTemplate`
+ A template + tutorial for writing new Sphinx documentation. It is meant
+ to be read in source form.
+
+:doc:`LLVM Testing Infrastructure Guide <TestingGuide>`
+ A reference manual for using the LLVM testing infrastructure.
+
+:doc:`TestSuiteGuide`
+ Describes how to compile and run the test-suite benchmarks.
+
+`How to build the C, C++, ObjC, and ObjC++ front end`__
+ Instructions for building the clang front-end from source.
+
+ .. __: http://clang.llvm.org/get_started.html
+
+:doc:`Lexicon`
+ Definition of acronyms, terms and concepts used in LLVM.
+
+:doc:`HowToAddABuilder`
+ Instructions for adding new builder to LLVM buildbot master.
+
+:doc:`YamlIO`
+ A reference guide for using LLVM's YAML I/O library.
+
+:doc:`GetElementPtr`
+ Answers to some very frequent questions about LLVM's most frequently
+ misunderstood instruction.
+
+:doc:`Frontend/PerformanceTips`
+ A collection of tips for frontend authors on how to generate IR
+ which LLVM is able to effectively optimize.
+
+:doc:`Docker`
+ A reference for using Dockerfiles provided with LLVM.
+
+:doc:`BuildingADistribution`
+ A best-practices guide for using LLVM's CMake build system to package and
+ distribute LLVM-based tools.
+
+:doc:`Remarks`
+ A reference on the implementation of remarks in LLVM.
\ No newline at end of file diff --git a/llvm/docs/index.rst b/llvm/docs/index.rst index afa9a133044..fdabf203dea 100644 --- a/llvm/docs/index.rst +++ b/llvm/docs/index.rst @@ -1,4 +1,4 @@ -Overview +About ======== .. warning:: @@ -50,428 +50,26 @@ Several introductory papers and presentations. `Publications mentioning LLVM <http://llvm.org/pubs>`_ .. -User Guides -=========== +Documentation +============= -For those new to the LLVM system. - -NOTE: If you are a user who is only interested in using an LLVM-based compiler, -you should look into `Clang <http://clang.llvm.org>`_ instead. The -documentation here is intended for users who have a need to work with the -intermediate LLVM representation. - -.. toctree:: - :hidden: - - CMake - CMakePrimer - AdvancedBuilds - HowToBuildOnARM - HowToBuildWithPGO - HowToCrossCompileBuiltinsOnArm - HowToCrossCompileLLVM - CommandGuide/index - GettingStarted - GettingStartedVS - FAQ - Lexicon - HowToAddABuilder - yaml2obj - HowToSubmitABug - SphinxQuickstartTemplate - MarkdownQuickstartTemplate - Phabricator - TestingGuide - tutorial/index - ReleaseNotes - Passes - YamlIO - GetElementPtr - Frontend/PerformanceTips - MCJITDesignAndImplementation - ORCv2 - CodeOfConduct - CompileCudaWithLLVM - ReportingGuide - Benchmarking - Docker - BuildingADistribution - Remarks - -:doc:`GettingStarted` - Discusses how to get up and running quickly with the LLVM infrastructure. - Everything from unpacking and compilation of the distribution to execution - of some tools. - -:doc:`CMake` - An addendum to the main Getting Started guide for those using the `CMake - build system <http://www.cmake.org>`_. - -:doc:`HowToBuildOnARM` - Notes on building and testing LLVM/Clang on ARM. - -:doc:`HowToBuildWithPGO` - Notes on building LLVM/Clang with PGO. - -:doc:`HowToCrossCompileBuiltinsOnArm` - Notes on cross-building and testing the compiler-rt builtins for Arm. - -:doc:`HowToCrossCompileLLVM` - Notes on cross-building and testing LLVM/Clang. - -:doc:`GettingStartedVS` - An addendum to the main Getting Started guide for those using Visual Studio - on Windows. - -:doc:`tutorial/index` - Tutorials about using LLVM. Includes a tutorial about making a custom - language with LLVM. - -:doc:`LLVM Command Guide <CommandGuide/index>` - A reference manual for the LLVM command line utilities ("man" pages for LLVM - tools). - -:doc:`Passes` - A list of optimizations and analyses implemented in LLVM. - -:doc:`FAQ` - A list of common questions and problems and their solutions. - -:doc:`Release notes for the current release <ReleaseNotes>` - This describes new features, known bugs, and other limitations. - -:doc:`HowToSubmitABug` - Instructions for properly submitting information about any bugs you run into - in the LLVM system. - -:doc:`SphinxQuickstartTemplate` - A template + tutorial for writing new Sphinx documentation. It is meant - to be read in source form. - -:doc:`LLVM Testing Infrastructure Guide <TestingGuide>` - A reference manual for using the LLVM testing infrastructure. - -:doc:`TestSuiteGuide` - Describes how to compile and run the test-suite benchmarks. - -`How to build the C, C++, ObjC, and ObjC++ front end`__ - Instructions for building the clang front-end from source. - - .. __: http://clang.llvm.org/get_started.html - -:doc:`Lexicon` - Definition of acronyms, terms and concepts used in LLVM. - -:doc:`HowToAddABuilder` - Instructions for adding new builder to LLVM buildbot master. - -:doc:`YamlIO` - A reference guide for using LLVM's YAML I/O library. - -:doc:`GetElementPtr` - Answers to some very frequent questions about LLVM's most frequently - misunderstood instruction. - -:doc:`Frontend/PerformanceTips` - A collection of tips for frontend authors on how to generate IR - which LLVM is able to effectively optimize. - -:doc:`Docker` - A reference for using Dockerfiles provided with LLVM. - -:doc:`BuildingADistribution` - A best-practices guide for using LLVM's CMake build system to package and - distribute LLVM-based tools. - -:doc:`Remarks` - A reference on the implementation of remarks in LLVM. - -Programming Documentation -========================= - -For developers of applications which use LLVM as a library. - -.. toctree:: - :hidden: - - Atomics - CodingStandards - CommandLine - CompilerWriterInfo - ExtendingLLVM - HowToSetUpLLVMStyleRTTI - ProgrammersManual - Extensions - LibFuzzer - FuzzingLLVM - ScudoHardenedAllocator - OptBisect - GwpAsan - -:doc:`LLVM Language Reference Manual <LangRef>` - Defines the LLVM intermediate representation and the assembly form of the - different nodes. - -:doc:`Atomics` - Information about LLVM's concurrency model. - -:doc:`ProgrammersManual` - Introduction to the general layout of the LLVM sourcebase, important classes - and APIs, and some tips & tricks. - -:doc:`Extensions` - LLVM-specific extensions to tools and formats LLVM seeks compatibility with. - -:doc:`CommandLine` - Provides information on using the command line parsing library. - -:doc:`CodingStandards` - Details the LLVM coding standards and provides useful information on writing - efficient C++ code. - -:doc:`HowToSetUpLLVMStyleRTTI` - How to make ``isa<>``, ``dyn_cast<>``, etc. available for clients of your - class hierarchy. - -:doc:`ExtendingLLVM` - Look here to see how to add instructions and intrinsics to LLVM. - -`Doxygen generated documentation <http://llvm.org/doxygen/>`_ - (`classes <http://llvm.org/doxygen/inherits.html>`_) - -`Documentation for Go bindings <http://godoc.org/llvm.org/llvm/bindings/go/llvm>`_ - -`Github Source Repository Browser <http://github.com/llvm/llvm-project//>`_ - .. - -:doc:`CompilerWriterInfo` - A list of helpful links for compiler writers. - -:doc:`LibFuzzer` - A library for writing in-process guided fuzzers. - -:doc:`FuzzingLLVM` - Information on writing and using Fuzzers to find bugs in LLVM. - -:doc:`ScudoHardenedAllocator` - A library that implements a security-hardened `malloc()`. - -:doc:`OptBisect` - A command line option for debugging optimization-induced failures. - -:doc:`GwpAsan` - A sampled heap memory error detection toolkit designed for production use. - -.. _index-subsystem-docs: - -Subsystem Documentation -======================= - -For API clients and LLVM developers. +Getting Started, How-tos, Developer Guides, and Tutorials. .. toctree:: :hidden: - AliasAnalysis - MemorySSA - BitCodeFormat - BlockFrequencyTerminology - BranchWeightMetadata - Bugpoint - BugpointRedesign - CodeGenerator - ExceptionHandling - AddingConstrainedIntrinsics - LinkTimeOptimization - SegmentedStacks - TableGenFundamentals - TableGen/index - DebuggingJITedCode - GoldPlugin - MarkedUpDisassembly - SystemLibrary - SupportLibrary - SourceLevelDebugging - Vectorizers - WritingAnLLVMBackend - GarbageCollection - WritingAnLLVMPass - HowToUseAttributes - NVPTXUsage - AMDGPUUsage - StackMaps - InAlloca - BigEndianNEON - CoverageMappingFormat - Statepoints - MergeFunctions - TypeMetadata - TransformMetadata - FaultMaps - MIRLangRef - Coroutines - GlobalISel - XRay - XRayExample - XRayFDRFormat - PDB/index - CFIVerify - SpeculativeLoadHardening - StackSafetyAnalysis - LoopTerminology - -:doc:`WritingAnLLVMPass` - Information on how to write LLVM transformations and analyses. - -:doc:`WritingAnLLVMBackend` - Information on how to write LLVM backends for machine targets. - -:doc:`CodeGenerator` - The design and implementation of the LLVM code generator. Useful if you are - working on retargetting LLVM to a new architecture, designing a new codegen - pass, or enhancing existing components. - -:doc:`Machine IR (MIR) Format Reference Manual <MIRLangRef>` - A reference manual for the MIR serialization format, which is used to test - LLVM's code generation passes. - -:doc:`TableGen <TableGen/index>` - Describes the TableGen tool, which is used heavily by the LLVM code - generator. - -:doc:`AliasAnalysis` - Information on how to write a new alias analysis implementation or how to - use existing analyses. - -:doc:`MemorySSA` - Information about the MemorySSA utility in LLVM, as well as how to use it. - -:doc:`GarbageCollection` - The interfaces source-language compilers should use for compiling GC'd - programs. - -:doc:`Source Level Debugging with LLVM <SourceLevelDebugging>` - This document describes the design and philosophy behind the LLVM - source-level debugger. - -:doc:`Vectorizers` - This document describes the current status of vectorization in LLVM. - -:doc:`ExceptionHandling` - This document describes the design and implementation of exception handling - in LLVM. - -:doc:`AddingConstrainedIntrinsics` - Gives the steps necessary when adding a new constrained math intrinsic - to LLVM. - -:doc:`Bugpoint` - Automatic bug finder and test-case reducer description and usage - information. - -:doc:`BugpointRedesign` - Design doc for a redesign of the Bugpoint tool. - -:doc:`BitCodeFormat` - This describes the file format and encoding used for LLVM "bc" files. - -:doc:`Support Library <SupportLibrary>` - This document describes the LLVM Support Library (``lib/Support``) and - how to keep LLVM source code portable - -:doc:`LinkTimeOptimization` - This document describes the interface between LLVM intermodular optimizer - and the linker and its design - -:doc:`GoldPlugin` - How to build your programs with link-time optimization on Linux. - -:doc:`DebuggingJITedCode` - How to debug JITed code with GDB. - -:doc:`MCJITDesignAndImplementation` - Describes the inner workings of MCJIT execution engine. - -:doc:`ORCv2` - Describes the design and implementation of the ORC APIs, including some - usage examples, and a guide for users transitioning from ORCv1 to ORCv2. - -:doc:`BranchWeightMetadata` - Provides information about Branch Prediction Information. - -:doc:`BlockFrequencyTerminology` - Provides information about terminology used in the ``BlockFrequencyInfo`` - analysis pass. - -:doc:`SegmentedStacks` - This document describes segmented stacks and how they are used in LLVM. - -:doc:`MarkedUpDisassembly` - This document describes the optional rich disassembly output syntax. - -:doc:`HowToUseAttributes` - Answers some questions about the new Attributes infrastructure. - -:doc:`NVPTXUsage` - This document describes using the NVPTX backend to compile GPU kernels. - -:doc:`AMDGPUUsage` - This document describes using the AMDGPU backend to compile GPU kernels. - -:doc:`StackMaps` - LLVM support for mapping instruction addresses to the location of - values and allowing code to be patched. - -:doc:`BigEndianNEON` - LLVM's support for generating NEON instructions on big endian ARM targets is - somewhat nonintuitive. This document explains the implementation and rationale. - -:doc:`CoverageMappingFormat` - This describes the format and encoding used for LLVM’s code coverage mapping. - -:doc:`Statepoints` - This describes a set of experimental extensions for garbage - collection support. - -:doc:`MergeFunctions` - Describes functions merging optimization. - -:doc:`InAlloca` - Description of the ``inalloca`` argument attribute. - -:doc:`FaultMaps` - LLVM support for folding control flow into faulting machine instructions. - -:doc:`CompileCudaWithLLVM` - LLVM support for CUDA. - -:doc:`Coroutines` - LLVM support for coroutines. - -:doc:`GlobalISel` - This describes the prototype instruction selection replacement, GlobalISel. - -:doc:`XRay` - High-level documentation of how to use XRay in LLVM. - -:doc:`XRayExample` - An example of how to debug an application with XRay. - -:doc:`The Microsoft PDB File Format <PDB/index>` - A detailed description of the Microsoft PDB (Program Database) file format. - -:doc:`CFIVerify` - A description of the verification tool for Control Flow Integrity. + Programming Documentation + Subsystem Documentation + User Guides -:doc:`SpeculativeLoadHardening` - A description of the Speculative Load Hardening mitigation for Spectre v1. +:doc:`UserGuides` + For those new to the LLVM system. -:doc:`StackSafetyAnalysis` - This document describes the design of the stack safety analysis of local - variables. +:doc:`ProgrammingDocumentation` + For developers of applications which use LLVM as a library. -:doc:`LoopTerminology` - A document describing Loops and associated terms as used in LLVM. +:doc:`SubsystemDocumentation` + For API clients and LLVM developers. Development Process Documentation ================================= |

