User Guides

    • Building a Distribution of LLVM
    • A best-practices guide for using LLVM’s CMake build system to package anddistribute LLVM-based tools.
    • An addendum to the main Getting Started guide for those using the CMakebuild system.
    • A reference for using Dockerfiles provided with LLVM.
    • This document describes the LLVM Support Library () andhow to keep LLVM source code portable
    • Writing an LLVM Pass
    • Information on how to write LLVM transformations and analyses.
    • A list of optimizations and analyses implemented in LLVM.
    • Stack Safety Analysis
    • This document describes the design of the stack safety analysis of localvariables.
    • Describes functions merging optimization.
    • LLVM Alias Analysis Infrastructure
    • Information on how to write a new alias analysis implementation or how touse existing analyses.
    • Information about the MemorySSA utility in LLVM, as well as how to use it.
    • LLVM Loop Terminology (and Canonical Forms)
    • A document describing Loops and associated terms as used in LLVM.
    • This document describes the current status of vectorization in LLVM.
    • LLVM Link Time Optimization: Design and Implementation
    • This document describes the interface between LLVM intermodular optimizerand the linker and its design
    • How to build your programs with link-time optimization on Linux.
    • Remarks
    • A reference on the implementation of remarks in LLVM.
    • Writing an LLVM Backend
    • Information on how to write LLVM backends for machine targets.
    • The design and implementation of the LLVM code generator. Useful if you areworking on retargetting LLVM to a new architecture, designing a new codegenpass, or enhancing existing components.
    • TableGen
    • Describes the TableGen tool, which is used heavily by the LLVM codegenerator.

    How to debug JITed code with GDB.

    • Provides information on using the command line parsing library.
    • Extending LLVM: Adding instructions, intrinsics, types, etc.
    • Look here to see how to add instructions and intrinsics to LLVM.
    • Gives the steps necessary when adding a new constrained math intrinsicto LLVM.
    • How to Cross Compile Compiler-rt Builtins For Arm
    • Notes on cross-building and testing the compiler-rt builtins for Arm.
    • LLVM’s support for generating NEON instructions on big endian ARM targets issomewhat nonintuitive. This document explains the implementation and rationale.
    • Compiling CUDA with clang
    • LLVM support for CUDA.
    • This document describes using the NVPTX backend to compile GPU kernels.
    • This document describes using the AMDGPU backend to compile GPU kernels.