LLVM
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
LLVM은 2000년 일리노이 대학교 어배너-섐페인에서 시작된 프로젝트로, 정적 및 동적 프로그래밍 언어에 대한 동적 컴파일 기술 연구를 위한 인프라로 개발되었다. 현재는 컴파일러 인프라를 제공하는 프로젝트로 발전하여, 중간 표현(IR), 디버거, C++ 표준 라이브러리 등을 포함한다. LLVM은 다양한 프로그래밍 언어의 컴파일을 지원하며, 여러 벤더들이 LLVM을 기반으로 자체적으로 튜닝된 포크를 출시하고 있다.
더 읽어볼만한 페이지
- 가상 머신 - V8 (자바스크립트 엔진)
V8은 구글이 개발한 오픈 소스 자바스크립트 엔진으로, 자바스크립트 코드 실행 속도 향상을 위해 여러 컴파일러를 거쳐 크롬, 노드.js 등에서 활용된다. - 가상 머신 - X86 가상화
X86 가상화는 x86 아키텍처 기반 시스템에서 가상 머신을 구현하는 기술로, 소프트웨어 기반 가상화와 하드웨어 지원 가상화로 나뉘며, CPU 제조사의 가상화 확장 기술을 활용하여 가상 머신의 성능을 향상시킨다. - C 프로그래밍 언어 - C (프로그래밍 언어)
C는 하드웨어 제어와 이식성이 뛰어난 고급 절차적 프로그래밍 언어로서, 다양한 분야에서 사용되며 후속 언어에 영향을 주었고, 성능과 효율성이 높지만 안전성 문제 개선이 필요한 언어이다. - C 프로그래밍 언어 - 헤더 파일
헤더 파일은 프로그래밍 언어에서 코드 재사용성, 모듈화, 컴파일 시간 단축에 기여하며 함수 프로토타입, 변수 선언 등을 포함하고 `#include` 지시어로 소스 코드에 포함되어 사용되는 파일이다. - 컴파일러 - 바이너리 재컴파일러
- 컴파일러 - 링커 (컴퓨팅)
링커는 여러 모듈로 된 목적 파일을 결합해 실행 가능한 프로그램을 만들고, 정적/동적 링킹으로 라이브러리를 연결하며, 심볼 해결 및 재배치로 변수와 함수를 메모리 주소에 연결하는 소프트웨어 도구이다.
| LLVM - [IT 관련 정보]에 관한 문서 | |
|---|---|
| 기본 정보 | |
![]() | |
| 개발자 | 크리스 래트너, 비크람 아드베 |
| 개발 그룹 | LLVM 개발자 그룹 |
| 출시일 | 2003년 |
| 최신 안정 버전 | '' |
| 최신 안정 버전 출시일 | '' |
| 최신 미리보기 버전 | '' |
| 최신 미리보기 버전 출시일 | '' |
| 프로그래밍 언어 | C++ |
| 운영 체제 | 크로스 플랫폼 |
| 장르 | 컴파일러 |
| 라이선스 | 아파치 라이선스 2.0 (LLVM 예외 포함, v9.0.0 이후) 레거시 라이선스: UIUC (BSD 스타일) |
| 웹사이트 | LLVM 공식 웹사이트 |
| 추가 정보 | |
| 참고 자료 | The LLVM Compiler Infrastructure Project LLVM Language Reference Manual Announcing LLILC - A new LLVM-based Compiler for .NET Mono LLVM The Architecture of Open Source Applications Clasp LDC LLVM-based Delphi Compilers MovForth The Flang Compiler Rapid What's the Difference Between LabVIEW 2017 and LabVIEW NXG? NI LabVIEW Compiler: Under the Hood Khronos Officially Announces Its LLVM/SPIR-V Translator What is JIT compilation? Features Code Generation - Guide to Rustc Development Compiling Scala to LLVM Scala Native LLVMCodegen |
2. 역사
LLVM 프로젝트는 2000년 일리노이 대학교 어배너-섐페인에서 비크람 아드베(Vikram Adve)와 크리스 래트너(Chris Lattner)의 주도로 시작되었다. LLVM은 원래 정적 및 동적 프로그래밍 언어에 대한 동적 컴파일 기술을 연구하기 위한 인프라로 개발되었다.[2] 2005년, 애플은 래트너를 영입하여 자사 개발 시스템에 LLVM을 도입하기 시작했으며,[24] 2011년부터 Xcode 4를 통해 macOS 및 iOS용 개발 도구의 핵심 구성 요소가 되었다.[25]
2006년, 래트너는 Clang이라는 새로운 프로젝트를 시작했다. Clang 프런트엔드와 LLVM 백엔드의 조합은 Clang/LLVM 또는 단순히 Clang이라고 불린다.
원래 ''LLVM''이라는 이름은 ''Low Level Virtual Machine''의 두문자어였다. 그러나 LLVM 프로젝트는 현재 대부분의 개발자들이 가상 머신이라고 생각하는 것과는 거의 관련이 없는 우산형 프로젝트로 발전하면서, 이 두문자어는 혼란스럽고 부적절해졌다. 2011년부터 LLVM은 더 이상 공식적인 약자가 아니며,[26] LLVM 우산형 프로젝트에 적용되는 브랜드가 되었다.[27]
컴퓨팅 기계 협회는 2012년 ACM 소프트웨어 시스템 상을 비크람 아드베, 크리스 래트너, 그리고 에반 청(Evan Cheng)에게 수여했다.[31]
이 프로젝트는 원래 UIUC 라이선스로 제공되었다. 2019년 v9.0.0 출시 이후,[32] LLVM은 LLVM 예외를 포함한 아파치 라이선스 2.0으로 재 라이선스되었다.[2]
2. 1. 주요 개발자
비크람 아드베(Vikram Adve)는 일리노이 대학교 어배너-섐페인에서 크리스 래트너(Chris Lattner)와 함께 2000년에 LLVM 프로젝트를 시작했으며,[2] 2012년 컴퓨팅 기계 협회로부터 ACM 소프트웨어 시스템 상을 받았다.[31]크리스 래트너(Chris Lattner)는 LLVM의 핵심 개발자이자 Clang 컴파일러 개발 주도자이다.[24] 2005년 애플에 고용되어 LLVM 시스템 개발을 이끌었으며,[24] 비크람 아드베와 함께 2012년 ACM 소프트웨어 시스템 상을 받았다.[31]
3. 특징
LLVM은 컴파일러 시스템의 중간 계층을 제공하며, 중간 표현(IR) 코드를 받아 최적화한 후 대상 플랫폼에 맞는 어셈블리 언어 코드로 변환한다. GNU 컴파일러 모음(GCC) 도구 모음에서 IR을 받아들여 기존 컴파일러 프런트 엔드와 함께 사용할 수 있다.[35]
LLVM은 언어 독립적인 명령 집합과 타입 시스템을 지원한다.[5] 각 명령은 정적 단일 할당 형태(SSA)로 표현되어, 각 변수는 한 번 할당된 후 고정되므로 변수 간 종속성 분석이 단순화된다. 코드는 정적으로 컴파일되거나, 자바처럼 Just-in-time 컴파일(JIT)을 통해 기계 코드로 컴파일될 수 있다.
LLVM 타입 시스템은 정수, 부동 소수점 숫자 같은 기본 타입과 포인터, 배열, 벡터, 구조체, 함수 등 다섯 가지 파생 타입으로 구성된다. C++ 클래스처럼 구체적인 언어의 타입은 이러한 기본 타입을 결합하여 표현된다.
LLVM JIT 컴파일러는 런타임에 불필요한 정적 분기를 최적화할 수 있으며, Mac OS X Leopard(v10.5)의 OpenGL 파이프라인에서 누락된 하드웨어 기능을 지원하는 데 사용된다.[36]
MLIR(Multi-Level IR)은 특정 용도에 맞게 LLVM IR을 확장하기 위한 방언을 만드는 시도이며, LLVM IR 자체도 "llvm" 방언이 된다.[76]
4. 구성 요소
LLVM은 여러 구성 요소를 포함하는 프로젝트이다.
Clang, 드래곤에그(dragonegg), Flang, Polygeist, Torch-MLIR 등 다양한 프론트엔드를 제공한다.
LLVM의 핵심은 중간 표현(IR)이며, 저수준 프로그래밍 언어와 유사하다. IR은 대상의 세부 사항을 추상화하는 강력한 타입의 축소 명령 집합 컴퓨터(RISC) 명령어 집합이다. LLVM은 사람이 읽을 수 있는 어셈블리 형식, 메모리 내 형식, 비트코드 형식의 세 가지 IR 형태를 지원한다.
LLVM은 다양한 명령어 집합을 지원하는 백엔드를 제공한다. 버전 3.4를 기준으로, ARM, 퀄컴 헥사곤, MIPS, 엔비디아 병렬 스레드 실행(PTX), 파워PC, AMD 테라스케일[101], AMD 그래픽스 코어 넥스트(GCN), SPARC, z/아키텍처, x86/x86-64, XCore를 포함한 수많은 명령어 집합을 지원한다.[102]
lld 하위 프로젝트를 통해 LLVM용 내장형, 플랫폼 독립적인 링커를 제공한다.
LLVM은 자체적인 C++ 표준 라이브러리인 libc++(libc++)를 제공한다.[61]
4. 1. 프론트엔드
LLVM은 다양한 프로그래밍 언어를 지원하기 위해 여러 프론트엔드를 제공한다. 주요 프론트엔드로는 Clang, 드래곤에그(dragonegg), Flang, Polygeist, Torch-MLIR 등이 있다.특히, Clang은 C, C++, Objective-C를 지원하는 새로운 컴파일러로, 주로 애플의 지원을 받으며 발전해왔다. Clang은 GCC 시스템의 C/Objective-C 컴파일러를 통합 개발 환경(IDE)과 더 쉽게 통합하고 멀티스레딩에 대한 더 광범위한 지원을 제공하는 시스템으로 대체하는 것을 목표로 한다. OpenMP 지시문에 대한 지원은 릴리스 3.8부터 Clang에 포함되었다.[44]
'''Flang'''은 LLVM 프로젝트의 FORTRAN 컴파일러이다. 기존 Flang은 NVIDIA의 nvfortran(구 The Portland Group의 pgfortran)의 파생이었지만, f18 프로젝트로 개발된 차세대 Flang은 C++17과 MLIR 등의 새로운 기술을 채용하고 있다.[91]
'''Torch-MLIR'''는 기계 학습에 사용되는 PyTorch용 컴파일러이다. 원래는 npcomp였으며,[92] NumPy 컴파일러였다.
'''Polygeist'''는 기존 LLVM IR 대신 MLIR을 사용하는 실험적인 C/C++ 컴파일러이다. MLIR을 사용함으로써 다면체 최적화가 가능해졌다.[93] C/C++에서 CUDA로의 컴파일도 가능하다.
4. 1. 1. 지원 프로그래밍 언어
LLVM은 GCC 스택의 기존 코드 발생기를 대체할 목적으로 작성되었으며[98], GCC 프론트엔드 중 다수가 이것과 함께 동작하도록 수정되었다. LLVM은 현재 다양한 프론트엔드를 사용하여 에이다, C, C++, D, 델파이, 포트란, 하스켈, 오브젝티브-C, 스위프트의 컴파일을 지원하고 있으며, 일부는 GNU 컴파일러 모음(GCC)의 4.0.1 및 4.2에서 가져온 것이다.LLVM은 현재 다양한 프론트엔드를 사용하여 에이다, C, C++, D, 델파이, 포트란, 하스켈, 줄리아, 오브젝티브-C, 러스트, 스위프트의 컴파일을 지원한다.
4. 2. 중간 표현 (IR)
LLVM의 핵심은 중간 표현(IR)이며, 어셈블리어와 비슷한 저수준 프로그래밍 언어이다. IR은 대상의 대부분의 세부 사항을 추상화하는 강력한 타입의 축소 명령 집합 컴퓨터(RISC) 명령어 집합이다. 예를 들어, 호출 규칙은 명시적 인수를 가진 `call` 및 `ret` 명령어를 통해 추상화된다. 또한, 고정된 레지스터 집합 대신 IR은 %0, %1 등과 같은 무한한 임시 변수 집합을 사용한다. LLVM은 세 가지 동등한 형태의 IR을 지원하는데, 다음과 같다.사람이 읽을 수 있는 IR 형식의 간단한 "Hello, world!" 프로그램 예시는 다음과 같다.
@.str = internal constant [14 x i8] c"Hello, world\0A\00"
declare i32 @printf(ptr, ...)
define i32 @main(i32 %argc, ptr %argv) nounwind {
entry:
%tmp1 = getelementptr [14 x i8], ptr @.str, i32 0, i32 0
%tmp2 = call i32 (ptr, ...) @printf( ptr %tmp1 ) nounwind
ret i32 0
}
LLVM은 언어 독립적인 명령어 집합과 형식 시스템을 갖추고 있다. 명령의 대부분은 3-어드레스 코드 형식과 유사하며, 각 명령은 정적 단일 대입 형식이다. 즉, 변수(타입이 있는 레지스터)는 한 번 할당되면 그 후 변경되지 않는다. 따라서 변수 간의 종속성 분석이 단순화된다.
형 변환은 어떤 형식이라도 명시적으로 `cast` 명령을 사용하여 수행된다. LLVM의 기본 형식은 다수의 고정 길이의 정수이고, 파생 형식으로 포인터, 배열, 벡터, 구조체, 함수의 5가지가 존재한다. 구체적인 언어에서의 형식은 LLVM에서 지원하는 형식들을 결합하여 표현한다. 예를 들면, C++의 클래스는 구조체와 함수와 함수에 대한 포인터의 배열을 함께 사용하여 표현된다.
4. 2. 1. MLIR
MLIR(Multi-Level IR)은 특정 용도에 맞게 LLVM IR을 확장하기 위한 방언(Dialect)을 만드는 시도이다. MLIR에서 LLVM IR 자체도 "llvm" 방언이 된다.[76]여러 아키텍처 고유의 SIMD/Single instruction, multiple threads|SIMT영어 명령어 또한 방언이 되는데, 여기에는 다음이 포함된다.[77][78]
- x86 아키텍처를 위한 "x86vector" 방언 및 "amx" 방언
- ARM 아키텍처를 위한 "arm_neon" 방언 및 "arm_sve" 방언
- NVIDIA GPU 아키텍처(PTX)를 위한 "nvvm" 방언
- AMD GPU 아키텍처를 위한 "rocdl" 방언
기타 MLIR 방언은 다음과 같다.
- OpenMP를 위한 "omp" 방언[79]
- OpenACC를 위한 "acc" 방언[80]
- CUDA 및 OpenCL 등을 위한 "gpu" 방언[81]
- Vulkan 및 OpenCL에 사용되는 중간 언어 Standard Portable Intermediate Representation|SPIR-V영어를 위한 SPIR-V 방언[82]
또한 고도의 벡터/행렬 연산 등 기계 학습에 사용되는 다양한 방언(TOSA 방언, vector 방언, Linalg 방언, affine 방언 등)도 존재한다. 외부 정의 방언도 있으며, 그 중 하나인 구글의 TensorFlow 프로젝트에 의한 MHLO 방언은 TensorFlow뿐만 아니라 JAX[83] 및 Torch-MLIR[84] 등 널리 사용되게 되었다. 그 후 구글은 다른 빅 테크 기업과 함께 OpenXLA 프로젝트를 시작했고,[85] 그 OpenXLA는 TensorFlow에서 독립된 것으로서 StableHLO 방언의 개발을 시작했다.[86]
PyTorch 2.0의 TorchDynamo의 표준 백엔드 "TorchInductor"에서 사용되는 OpenAI Triton[87]은 2.0에서 백엔드를 MLIR로 이전했으며,[88] 거기서 독자적인 Triton 방언 및 TritonGPU 방언을 사용하고 있다.[89]
4. 3. 백엔드
LLVM은 다양한 명령어 집합을 지원하는 백엔드를 제공한다. 버전 3.4를 기준으로, LLVM은 ARM, 퀄컴 헥사곤, MIPS, 엔비디아 병렬 스레드 실행(PTX), 파워PC, AMD 테라스케일[101], AMD 그래픽스 코어 넥스트(GCN), SPARC, z/아키텍처, x86/x86-64, XCore를 포함한 수많은 명령어 집합을 지원한다.[102] 대부분의 기능은 x86/x86-64, z/아키텍처, ARM, 파워PC에서 사용할 수 있다.[102]LLVM은 완전한 컴파일러 시스템의 중간 계층을 제공하여, 컴파일러로부터 중간 표현(IR) 코드를 받아 최적화된 IR을 생성하고, 대상 플랫폼에 맞는 어셈블리 언어 코드로 변환 및 링크할 수 있다. LLVM은 GNU 컴파일러 모음(GCC) 도구 모음에서 IR을 받아들일 수 있어, 해당 프로젝트를 위해 작성된 광범위한 기존 컴파일러 프런트 엔드와 함께 사용할 수 있다.
LLVM은 컴파일 시점, 링크 시점 또는 런타임에 재배치 가능한 기계 코드를 생성할 수 있다.
LLVM은 언어 독립적인 명령 집합과 타입 시스템을 지원한다.[5] 각 명령은 정적 단일 할당 형태(SSA)로 표현되어, 각 변수는 한 번 할당된 후 고정된다. LLVM은 Just-in-time 컴파일(JIT)을 통해 IR에서 기계 코드로 늦게 컴파일되도록 할 수 있다. 타입 시스템은 정수나 부동 소수점 숫자와 같은 기본 타입과 다섯 개의 파생 타입(포인터, 배열, 벡터, 구조체, 함수)으로 구성된다.
LLVM JIT 컴파일러는 런타임에 프로그램에서 불필요한 정적 분기를 최적화할 수 있다. 이 기능은 Mac OS X Leopard(v10.5)의 OpenGL 파이프라인에서 누락된 하드웨어 기능을 지원하는 데 사용된다.[36]
2011년에는 GCC로 컴파일된 프로그램이 평균적으로 LLVM보다 10% 더 뛰어난 성능을 보였다.[38][39] 2013년, phoronix는 LLVM이 GCC를 따라잡아, 거의 동일한 성능의 바이너리를 컴파일한다고 보고했다.[40]
LLVM은 16버전부터 IA-32, x86-64, ARM, 퀄컴 헥사곤, LoongArch, M68K, MIPS, 엔비디아 병렬 스레드 실행(PTX, LLVM 문서에서는 ''NVPTX''라고도 함), PowerPC, AMD 테라스케일,[52] 가장 최근의 AMD GPU (LLVM 문서에서는 ''AMDGPU''라고도 함),[53] SPARC, z/아키텍처(LLVM 문서에서는 ''SystemZ''라고도 함), XCore 등 명령어 집합을 다양하게 지원한다.
RISC-V는 버전 7부터 지원된다.
LLVM은 또한 WebAssembly를 대상으로 지원하여, 컴파일된 프로그램이 구글 크롬/크로미움, 파이어폭스, 마이크로소프트 엣지, 애플 사파리 또는 WAVM과 같은 WebAssembly 지원 환경에서 실행될 수 있도록 한다.
LLVM 머신 코드(MC) 서브 프로젝트는 텍스트 형식과 머신 코드 간에 머신 명령어를 변환하기 위한 LLVM의 프레임워크이다. 이전에는 LLVM이 시스템 어셈블러 또는 툴체인이 제공하는 어셈블러에 의존하여 어셈블리를 머신 코드로 변환했다. LLVM MC의 통합 어셈블러는 IA-32, x86-64, ARM 및 ARM64를 포함한 대부분의 LLVM 타겟을 지원한다.
LLVM은 플랫폼에 의존하지 않는 중간 표현인 LLVM-IR을 생성하고, LLVM-IR을 특정 머신의 기계어 등으로 변환한다. LLVM-IR 단계에서 언어나 플랫폼과 독립적인 최적화를 수행한다. 이 방법을 통해 LLVM은 언어와 아키텍처 모두에서 독립적이며, 각기 특화된 프로그래밍 언어 고유의 모듈과 머신용 코드 생성 부분을 준비하여 다양한 언어 아키텍처에 대응한다.
4. 4. 링커 (lld)
lld 하위 프로젝트는 LLVM용 내장형, 플랫폼 독립적인 링커를 개발하려는 시도이다.[58] lld는 타사 링커에 대한 의존성을 제거하는 것을 목표로 한다. 2017년 5월 현재 lld는 ELF, PE/COFF, Mach-O, 그리고 WebAssembly를 지원하며, 완성도는 이 순서로 낮아진다.[59] lld는 두 가지 버전의 GNU ld보다 빠르다.GNU 링커와 달리 lld는 링크 타임 최적화(LTO)를 기본적으로 지원한다. 이는 링커 플러그인을 사용하지 않아 더 빠른 코드 생성을 가능하게 하지만, 다른 형태의 LTO와의 상호 운용성을 제한한다.[60]
4. 5. 표준 라이브러리
LLVM은 자체적인 C++ 표준 라이브러리인 libc++(libc++)를 제공한다.[61] libc++는 MIT 라이선스와 UIUC 라이선스로 이중 라이선스되었다가, v9.0.0부터 아파치 라이선스 2.0으로 LLVM 예외와 함께 재 라이선스되었다.[2] LLVM은 C 표준 라이브러리 musl의 대안이기도 하다.[99]5. 관련 기술 및 파생 프로젝트
LLVM은 다양한 관련 기술 및 파생 프로젝트를 가지고 있다.
- Polly: 폴리토프 모델을 사용하여 캐시 지역성 최적화, 자동 병렬화 및 자동 벡터화를 구현한다.[62]
- LLDB: LLVM 프로젝트의 디버거이다.
LLVM을 기반으로 한 다양한 파생 프로젝트들은 아래 표와 같다.
| 프로젝트명 | 설명 |
|---|---|
| AMD 최적화 C/C++ 컴파일러(AMD Optimizing C/C++ Compiler) | AMD의 LLVM, Clang 및 Flang 기반 컴파일러이다.[64] |
| Xcode | 애플의 오픈 소스 포크이다.[65] |
| Arm Compiler | Arm은 베어 메탈 개발을 위한 Arm Compiler for Embedded 및 고성능 컴퓨팅 시장을 위한 Arm Compiler for Linux를 포함하여 여러 LLVM 기반 툴체인을 제공한다.[64] |
| Flang | 개발 중인 포트란 프로젝트이다.[64] |
| IBM C/C++ 및 Fortran 컴파일러 | IBM의 LLVM 기반 컴파일러이다.[66] |
| 인텔(Intel) 인텔 C++ 컴파일러(Intel C++ Compiler) | 인텔의 차세대 컴파일러이다.[67] |
| Kitsune | 로스앨러모스 국립 연구소의 LLVM 8 병렬 컴퓨팅 포크이다.[68] |
| NVVM CUDA 컴파일러 | Nvidia의 LLVM 기반 컴파일러이다. NVVM 컴파일러는 백엔드 섹션에서 언급된 "NVPTX" 백엔드와는 별개이지만, 둘 다 Nvidia GPU용 PTX 코드를 생성한다.[69] |
| PlayStation 4 SDK | 2013년부터 소니(Sony)는 PlayStation 4 콘솔의 소프트웨어 개발 키트(SDK)에서 LLVM의 기본 프런트 엔드 Clang 컴파일러를 사용하고 있다.[70] |
5. 1. Polly
Polly는 폴리토프 모델을 사용하여 캐시 지역성 최적화, 자동 병렬화 및 자동 벡터화를 구현한다.[62]5. 2. 디버거 (LLDB)
LLDB는 LLVM 프로젝트의 디버거이다.5. 3. 파생 프로젝트
| 프로젝트명 | 설명 |
|---|---|
| AMD 최적화 C/C++ 컴파일러(AMD Optimizing C/C++ Compiler) | AMD의 LLVM, Clang 및 Flang 기반 컴파일러이다.[64] |
| Xcode | 애플의 오픈 소스 포크이다.[65] |
| Arm Compiler | Arm은 베어 메탈 개발을 위한 Arm Compiler for Embedded 및 고성능 컴퓨팅 시장을 위한 Arm Compiler for Linux를 포함하여 여러 LLVM 기반 툴체인을 제공한다.[64] |
| Flang | 개발 중인 포트란 프로젝트이다.[64] |
| IBM C/C++ 및 Fortran 컴파일러 | IBM의 LLVM 기반 컴파일러이다.[66] |
| 인텔(Intel) 인텔 C++ 컴파일러(Intel C++ Compiler) | 인텔의 차세대 컴파일러이다.[67] |
| Kitsune | 로스앨러모스 국립 연구소의 LLVM 8 병렬 컴퓨팅 포크이다.[68] |
| NVVM CUDA 컴파일러 | Nvidia의 LLVM 기반 컴파일러이다.[69] NVVM 컴파일러는 백엔드 섹션에서 언급된 "NVPTX" 백엔드와는 별개이지만, 둘 다 Nvidia GPU용 PTX 코드를 생성한다. |
| PlayStation 4 SDK | 2013년부터 소니(Sony)는 PlayStation 4 콘솔의 소프트웨어 개발 키트(SDK)에서 LLVM의 기본 프런트 엔드 Clang 컴파일러를 사용하고 있다.[70] |
6. 버전 역사
| 버전 | 출시일 |
|---|---|
| 11.0.0 | 2020-10-12 |
| 10.0.0 | 2020-03-24 |
| 9.0.0 | 2019-09-19 |
| 8.0.0 | 2019-03-20 |
| 7.0.0 | 2018-09-19 |
| 6.0.1 | 2018-07-05 |
| 5.0.2 | 2018-05-16 |
| 6.0.0 | 2018-03-08 |
| 5.0.1 | 2017-12-21 |
| 5.0.0 | 2017-09-07 |
| 4.0.1 | 2017-07-04 |
| 4.0.0 | 2017-03-13 |
| 3.9.1 | 2016-12-23 |
| 3.9.0 | 2016-09-02 |
| 3.8.1 | 2016-07-11 |
| 3.8.0 | 2016-03-08 |
| 3.7.1 | 2016-01-05 |
| 3.7.0 | 2015-09-01 |
| 3.6.2 | 2015-07-16 |
| 3.6.1 | 2015-05-26 |
| 3.6.0 | 2015-02-27 |
| 3.5.2 | 2015-04-02 |
| 3.5.1 | 2015-01-20 |
| 3.5.0 | 2014-09-03 |
| 3.4.2 | 2014-06-19 |
| 3.4.1 | 2014-05-07 |
| 3.4.0 | 2014-01-02 |
| 3.3 | 2013-06-17 |
| 3.2 | 2012-12-20 |
| 3.1 | 2012-05-22 |
| 3.0 | 2011-12-01 |
| 2.9 | 2011-04-06 |
| 2.8 | 2010-10-05 |
| 2.7 | 2010-04-27 |
| 2.6 | 2009-10-23 |
| 2.5 | 2009-03-02 |
| 2.4 | 2008-11-09 |
| 2.3 | 2008-06-09 |
| 2.2 | 2008-02-11 |
| 2.1 | 2007-09-26 |
| 2.0 | 2007-05-23 |
| 1.9 | 2006-11-19 |
| 1.8 | 2006-08-09 |
| 1.7 | 2006-04-20 |
| 1.6 | 2005-11-08 |
| 1.5 | 2005-05-18 |
| 1.4 | 2004-12-09 |
| 1.3 | 2004-08-13 |
| 1.2 | 2004-03-19 |
| 1.1 | 2003-12-17 |
| 1.0 | 2003-10-24 |
참조
[1]
웹사이트
LLVM Logo
https://llvm.org/Log[...]
[2]
웹사이트
LICENSE.TXT
https://releases.llv[...]
llvm.org
2019-09-24
[3]
웹사이트
LLVM Developer Policy — LLVM 20.0.0git documentation
https://llvm.org/doc[...]
2024-11-09
[4]
웹사이트
The LLVM Compiler Infrastructure Project
http://llvm.org/
2016-03-11
[5]
웹사이트
LLVM Language Reference Manual
http://llvm.org/docs[...]
2019-06-09
[6]
웹사이트
Announcing LLILC - A new LLVM-based Compiler for .NET
https://web.archive.[...]
2020-09-12
[7]
웹사이트
Mono LLVM
http://www.mono-proj[...]
2013-03-10
[8]
서적
The Architecture of Open Source Applications
http://www.aosabook.[...]
[9]
웹사이트
Clasp
https://clasp-develo[...]
Clasp Developers
2024-12-02
[10]
웹사이트
LDC
https://wiki.dlang.o[...]
2024-12-02
[11]
웹사이트
LLVM-based Delphi Compilers
https://docwiki.emba[...]
Embarcadero
2024-11-26
[12]
웹사이트
MovForth
https://github.com/r[...]
2021-11-28
[13]
웹사이트
The Flang Compiler
https://flang.llvm.o[...]
LLVM Project
2024-12-02
[14]
웹사이트
Rapid
https://rapid.sinyax[...]
2024-11-22
[15]
웹사이트
What's the Difference Between LabVIEW 2017 and LabVIEW NXG?
http://www.electroni[...]
2017-05-23
[16]
웹사이트
NI LabVIEW Compiler: Under the Hood
https://www.ni.com/e[...]
[17]
뉴스
Khronos Officially Announces Its LLVM/SPIR-V Translator
https://www.phoronix[...]
2018-04-11
[18]
웹사이트
32.1. What is JIT compilation?
https://www.postgres[...]
2021-01-25
[19]
웹사이트
Features
http://www.rubymotio[...]
Scratchwork Development LLC
2017-06-17
[20]
웹사이트
Code Generation - Guide to Rustc Development
https://rustc-dev-gu[...]
2023-01-04
[21]
웹사이트
Compiling Scala to LLVM
http://www.infoq.com[...]
2013-02-19
[22]
웹사이트
Scala Native
https://scala-native[...]
2023-11-26
[23]
웹사이트
LLVMCodegen
http://mlton.org/LLV[...]
2024-11-26
[24]
간행물
mkspecs and patches for LLVM compile of Qt4
https://web.archive.[...]
2012-01-27
[25]
웹사이트
Developer Tools Overview
https://developer.ap[...]
Apple
[26]
간행물
The name of LLVM
http://lists.llvm.or[...]
2016-03-02
[27]
서적
The architecture of open source applications
Lulu.com
2011-06-01
[28]
웹사이트
'"libc++" C++ Standard Library'
http://libcxx.llvm.o[...]
[29]
웹사이트
The LLVM Foundation
http://blog.llvm.org[...]
2014-04-03
[30]
웹사이트
Board of Directors
https://foundation.l[...]
2024-03-19
[31]
웹사이트
ACM Software System Award
https://awards.acm.o[...]
ACM
[32]
웹사이트
"[llvm-announce] LLVM 9.0.0 Release"
https://lists.llvm.o[...]
2019-09-19
[33]
웹사이트
Relicensing Long Tail
https://foundation.l[...]
2022-11-11
[34]
웹사이트
LLVM relicensing - long tail
https://docs.google.[...]
LLVM Project
2022-11-27
[35]
웹사이트
⚙ D156286 [docs] Bump minimum GCC version to 7.5
https://reviews.llvm[...]
2023-07-28
[36]
메일링리스트
A cool use of LLVM at Apple: the OpenGL stack
http://lists.llvm.or[...]
2016-03-01
[37]
뉴스
GNOME Shell Works Without GPU Driver Support
https://www.phoronix[...]
phoronix
2011-11-06
[38]
웹사이트
SPEC2000: Comparison of LLVM-2.9 and GCC4.6.1 on x86
http://vmakarov.fedo[...]
2011-10-03
[39]
웹사이트
SPEC2000: Comparison of LLVM-2.9 and GCC4.6.1 on x86_64
http://vmakarov.fedo[...]
2011-10-03
[40]
웹사이트
LLVM/Clang 3.2 Compiler Competing With GCC
https://www.phoronix[...]
2013-03-31
[41]
Conference
Architecture For a Next-Generation GCC
http://llvm.org/pubs[...]
2009-09-06
[42]
웹사이트
LLVM Compiler Overview
https://developer.ap[...]
[43]
웹사이트
Xcode 5 Release Notes
https://developer.ap[...]
[44]
웹사이트
Clang 3.8 Release Notes
http://llvm.org/rele[...]
2016-08-24
[45]
웹사이트
Compiling Haskell To LLVM
http://www.cs.uu.nl/[...]
2009-02-22
[46]
웹사이트
LLVM Project Blog: The Glasgow Haskell Compiler and LLVM
http://blog.llvm.org[...]
2010-08-13
[47]
웹사이트
LLVM Language Reference Manual
https://llvm.org/doc[...]
2023-01-10
[48]
웹사이트
Wordcode: more target independent LLVM bitcode
https://llvm.org/dev[...]
2019-12-01
[49]
웹사이트
PNaCl: Portable Native Client Executables
http://nativeclient.[...]
2012-04-25
[50]
웹사이트
MLIR
https://mlir.llvm.or[...]
2022-06-07
[51]
웹사이트
Dialects - MLIR
https://mlir.llvm.or[...]
2022-06-07
[52]
메일링리스트
"[LLVMdev] RFC: R600, a new backend for AMD GPUs"
http://lists.llvm.or[...]
2012-03-26
[53]
웹사이트
User Guide for AMDGPU Backend — LLVM 15.0.0git documentation
https://llvm.org/doc[...]
[54]
문서
Target-specific Implementation Notes: Target Feature Matrix
http://llvm.org/docs[...]
[55]
웹사이트
Remove the mblaze backend from llvm
https://github.com/l[...]
2020-01-26
[56]
웹사이트
Remove the Alpha backend.
https://github.com/l[...]
2020-01-26
[57]
웹사이트
"[Nios2] Remove Nios2 backend"
https://github.com/l[...]
2020-01-26
[58]
웹사이트
lld - The LLVM Linker
http://lld.llvm.org/
The LLVM Project
2017-05-10
[59]
웹사이트
WebAssembly lld port
https://lld.llvm.org[...]
[60]
웹사이트
42446 – lld can't handle gcc LTO files
https://bugs.llvm.or[...]
[61]
웹사이트
'"libc++" C++ Standard Library'
http://libcxx.llvm.o[...]
[62]
웹사이트
Polly - Polyhedral optimizations for LLVM
https://polly.llvm.o[...]
[63]
웹사이트
llvm-libc: An ISO C-conformant Standard Library — libc 15.0.0git documentation
https://libc.llvm.or[...]
2022-07-18
[64]
웹사이트
Clang Language Extensions
https://clang.llvm.o[...]
[65]
웹사이트
apple/llvm-project
https://github.com/a[...]
Apple
2020-09-05
[66]
웹사이트
IBM C/C++ and Fortran compilers to adopt LLVM open source infrastructure
https://developer.ib[...]
2022-07-29
[67]
웹사이트
Intel C/C++ compilers complete adoption of LLVM
https://www.intel.co[...]
2021-08-17
[68]
웹사이트
lanl/kitsune
https://github.com/l[...]
Los Alamos National Laboratory
2020-02-27
[69]
웹사이트
NVVM IR Specification 1.5
https://docs.nvidia.[...]
[70]
citation
Developer Toolchain for ps4
http://llvm.org/devm[...]
2015-02-24
[71]
서적
The Architecture of Open Source Applications
Amy Brown, Greg Wilson
2012-03-15
[72]
웹사이트
LICENSE.TXT
https://releases.llv[...]
llvm.org
2019-09-24
[73]
웹사이트
The LLVM Compiler Infrastructure Project
http://llvm.org/
2019-01-16
[74]
웹사이트
The LLVM Compiler Infrastructure Project
http://llvm.org/
2019-01-16
[75]
문서
The University of Illinois/NCSA Open Source License (NCSA) - Open Source Initiative
http://www.opensourc[...]
[76]
문서
'llvm' Dialect
https://mlir.llvm.or[...]
LLVM Project
[77]
논문
Composable and Modular Code Generation in MLIR
https://arxiv.org/pd[...]
Google
2022
[78]
논문
IRDL: An IR Definition Language for SSA Compilers
https://grosser.scie[...]
Mathieu Fehrら
2022
[79]
문서
'omp' Dialect
https://mlir.llvm.or[...]
LLVM Project
[80]
문서
'acc' Dialect
https://mlir.llvm.or[...]
LLVM Project
[81]
문서
'gpu' Dialect
https://mlir.llvm.or[...]
LLVM Project
[82]
문서
SPIR-V Dialect
https://mlir.llvm.or[...]
LLVM Project
[83]
문서
Change log - jaxlib 0.1.76 (Jan 27, 2022)
https://jax.readthed[...]
Google
[84]
문서
Torch-MLIR
https://mlir.llvm.or[...]
Sean Silva、Anush Elangovan
2021
[85]
뉴스
Google reveals what’s next for Cloud AI
https://venturebeat.[...]
VentureBeat
2022-10-11
[86]
문서
Open source collaborations and key partnerships to help accelerate AI innovation
https://cloud.google[...]
Google
2022-10-12
[87]
문서
PyTorch 2.0
https://pytorch.org/[...]
PyTorch Foundation
[88]
문서
Triton - Changelog
https://github.com/o[...]
OpenAI
[89]
문서
Towards Agile Development of Efficient Deep Learning Operators
https://www.jokeren.[...]
Keren Zhou & Philippe Tillet
[90]
문서
New LLVM C Front-end (Steve Naroff)
http://llvm.org/devm[...]
[91]
문서
OpenMP in Flang : An Intro
https://www.openmp.o[...]
ARM
2022
[92]
문서
Torch-MLIR
https://mlir.llvm.or[...]
Sean Silva、Anush Elangovan
2021
[93]
논문
Polygeist: Raising C to Polyhedral MLIR
William S. Mosesら
2021
[94]
웹인용
The LLVM Compiler Infrastructure Project
http://llvm.org/
2012-03-06
[95]
웹인용
LLVM: Frequently Asked Questions
http://llvm.org/docs[...]
2012-03-06
[96]
문서
Java 바이트 코드와 MSIL 프런트 엔드, CPython 프런트 엔드, 그래프 컬러링 레지스터 할당 모듈 등에 이용할 수 있다.
[97]
웹인용
A cool use of LLVM at Apple: the OpenGL stack
http://lists.cs.uiuc[...]
2008-10-26
[98]
간행물
Architecture For a Next-Generation GCC
http://llvm.org/pubs[...]
2009-09-06
[99]
문서
http://llvm.org/rele[...]
[100]
문서
For the full documentation, refer to
http://llvm.org/docs[...]
[101]
메일링
"[LLVMdev] RFC: R600, a new backend for AMD GPUs"
http://lists.llvm.or[...]
2012-03-26
[102]
문서
Target-specific Implementation Notes: Target Feature Matrix
http://llvm.org/docs[...]
[103]
문서
http://llvm.org/rele[...]
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com
