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 For Writing Database
database framework ?
SQL with JIT support ?
SQLite with LLVM JIT ?
mirror : http://repo.or.cz/sqlite.git
- LLVM for Concurrency
LLVM for lock-free
code suggestion
參考
LLVM
[Book] Getting Started with LLVM Core Libraries
[2014] LLVM: A Compilation Framework for Lifelong Program Analysis & Transformation