LLVM

(LLVM 用 reStructuredText 跟 Sphinx 在寫 Documentation)

Introduction

LLVM 是 Chris Lattner 於 2000 年在 UIUC 展開、發表於 2004 年的碩士論文專案, 原名為 「Low Level Virtual Machine」, 當中使用到的概念取自於 2003 年發表的論文 「 LLVA: A Low-level Virtual Instruction Set Architecture 」, 於 2004 年發表 LLVM 論文 「 LLVM: A Compilation Framework for Lifelong Program Analysis & Transformation 」, 後來由於發展不限於 Virtual Machine, 使用原名會造成誤解, 所以名稱改為 LLVM

LLVM 使用 University of Illinois/NCSA Open Source License 條款釋出, 使用 SVN 作為主要開發的版本工具, 每次新 release 即升一個小版號, 直到小版號超過九, 就升一次大版號。

Get Your LLVM

Release Prebuilt

LLVM Snapshot Builds

Autotools

CMake & Ninja

DragonEgg Plugin

Polly

polyhedral optimizer

LLVM Linker

lld

Register Allocation

llc

$ llc --version
LLVM (http://llvm.org/):
LLVM version 3.5.2
Optimized build.
Built Apr 23 2015 (08:23:12).
Default target: x86_64-unknown-linux-gnu
Host CPU: core-avx-i

Registered Targets:
    aarch64    - AArch64 (little endian)
    aarch64_be - AArch64 (big endian)
    arm        - ARM
    arm64      - AArch64 (little endian)
    arm64_be   - AArch64 (big endian)
    armeb      - ARM (big endian)
    cpp        - C++ backend
    hexagon    - Hexagon
    mips       - Mips
    mips64     - Mips64 [experimental]
    mips64el   - Mips64el [experimental]
    mipsel     - Mipsel
    msp430     - MSP430 [experimental]
    nvptx      - NVIDIA PTX 32-bit
    nvptx64    - NVIDIA PTX 64-bit
    ppc32      - PowerPC 32
    ppc64      - PowerPC 64
    ppc64le    - PowerPC 64 LE
    r600       - AMD GPUs HD2XXX-HD6XXX
    sparc      - Sparc
    sparcv9    - Sparc V9
    systemz    - SystemZ
    thumb      - Thumb
    thumbeb    - Thumb (big endian)
    x86        - 32-bit X86: Pentium-Pro and above
    x86-64     - 64-bit X86: EM64T and AMD64
    xcore      - XCore

Garbage Collection

LLVM Pass

Misc

Idea

參考

LLVM

Ninja