LLVM 11.0은 Python 3 업데이트, RISC-V 개선 등을 포함합니다.

Llvm

XNUMX 개월 개발 후 LLVM 11.0 프로젝트의 새 버전 출시가 발표되었습니다. Python 3 업데이트, RISC-V의 실험 지침을 지원하는 패치 및 기타 많은 변경 사항과 같은 여러 개선 사항이 제공됩니다.

LLVM에 익숙하지 않은 사람들은 그것이 무엇인지 알아야합니다. GCC 호환 툴킷 (컴파일러, 최적화 프로그램 및 코드 생성기) 프로그램을 RISC와 유사한 비트 코드 중간 가상 명령어 (다단계 최적화 시스템이있는 저수준 가상 머신)로 컴파일합니다.

컴파일 시간을 최적화하도록 설계되었습니다., 바인딩 시간, 사용자가 정의하려는 프로그래밍 언어의 실행 시간. 원래 C 및 C ++를 컴파일하기 위해 구현되었습니다., LLVM의 언어 불가지론 적 설계 및 프로젝트 성공 그들은 다양한 언어를 낳았습니다.

생성 된 의사 코드는 JIT 컴파일러를 사용하여 프로그램 실행시 직접 기계 명령어로 변환 할 수 있습니다.

LLVM 11.0의 새로운 주요 기능

이 새 버전의 LLVM 11.0에서 빌드 시스템이 Python 3을 사용하도록 이동되었습니다.따라서 Python 3을 사용할 수없는 경우에는 Python 2를 사용하도록 롤백 옵션이 구현되므로 강제로 사용하지 않습니다.

속성 벡터 함수 -abi-variant가 추가되었습니다. 중간 표현 (IR)으로 스칼라 함수와 벡터 함수 간의 매핑 설명 벡터화 호출을 위해. 두 개의 개별 벡터 유형 인 llvm :: FixedVectorType 및 llvm :: ScalableVectorType이 llvm :: VectorType에서 추출됩니다.

정의되지 않은 동작은 정의되지 않은 분기이며 정의되지 않은 값에서 표준 라이브러리 함수로 전달됩니다.

memset / memcpy / memmove에서는 정의되지 않은 포인터를 전달할 수 있지만 크기가있는 매개 변수가 XNUMX 인 경우.

LLJIT는 LLJIT :: initialize 및 LLJIT :: deinitialize 메소드를 통해 정적 초기화를 수행하기위한 지원을 추가합니다.

추가 JITDylib에 정적 라이브러리를 추가하는 기능 StaticLibraryDefinitionGenerator 클래스를 사용합니다. ORCv2 용 C API (JIT 컴파일러 생성 용 API)가 추가되었습니다.

다양한 프로세서 아키텍처에 대한 지원 향상의 일환 :

  • 추가됨 Cortex-A34, Cortex-A77, Cortex-A78 및 Cortex-X1 프로세서 지원 AArch64 아키텍처의 백엔드에 있습니다. RMv8.2-ECV (Enhanced Counter Virtualization), ARMv16-FGT (Fine Grained Traps), ARMv16-AMU (Activity)를 포함한 ARMv8.6-BF8.6 (BFloat8.6) 및 ARMv8.6-A 확장이 구현되었습니다. 가상화 모니터링) 및 ARMv8.0-DGH (데이터 수집 힌트).
  • ARM 백엔드에서 Cortex-M55, Cortex-A77, Cortex-A78 및 Cortex-X1 프로세서에 대한 지원이 추가되었습니다. Armv8.6-A Matrix Multiply 및 RMv8.2-AA32BF16 BFloat16 확장을 구현했습니다.
  • PowerPC 백엔드에서 POWER10 프로세서에 대한 코드 생성 지원이 추가되었습니다. 루프 최적화가 개선되고 부동 소수점 연산에 대한 지원이 개선되었습니다.
  • 아키텍처 백엔드 RISC-V는 지원을 통해 패치를받을 수 있습니다. 아직 공식적으로 승인되지 않은 실험용 확장 지침 세트.

그 외에도 바인딩 기능을위한 코드 생성 기능이 제공됩니다. 벡터 SVE 명령어에 통합됩니다.

AVR 아키텍처의 백엔드는 실험 범주에서 기본 배포에 포함 된 안정된 범주로 이동되었습니다.

x86 백엔드 Intel AMX 및 TSXLDTRK 명령어를 지원합니다. LVI 공격에 대한 추가 보호 (부하 값 주입) 및 일반 예측 실행 부작용 억제 메커니즘도 구현되어 CPU에서 예측 실행으로 인한 공격을 차단합니다.

눈에 띄는 다른 변경 사항 중 :

  • SystemZ 아키텍처의 백엔드는 MemorySanitizer 및 LeakSanitizer에 대한 지원을 추가합니다.
  • Libc ++는 수학 상수 헤더 파일에 대한 지원을 추가합니다. .
  • LLD 링커의 확장 된 기능.
  • "–lto-emit-asm", "–lto-whole-program-visible", "–print-archive-stats", "–shuffle-section", "–thinlto-single -module 옵션 추가를 포함한 향상된 ELF 지원 ","–unique ","–rosegment ","–threads = N ".
  • 추적을 파일에 저장하는 "–time-trace"옵션을 추가 한 다음 Chrome에서 chrome : // trace 인터페이스를 통해 파싱 할 수 있습니다.
  • Go (llgo) 컴파일러가있는 인터페이스는 릴리스에서 제거되었으며 향후 재구성 될 수 있습니다.

최종적으로 그것에 대해 더 알고 싶다면 이 새 버전에 대해 확인할 수 있습니다. 다음 링크의 세부 사항.


코멘트를 남겨주세요

귀하의 이메일 주소는 공개되지 않습니다. 필수 필드가 표시되어 있습니다 *

*

*

  1. 데이터 책임자: AB Internet Networks 2008 SL
  2. 데이터의 목적 : 스팸 제어, 댓글 관리.
  3. 합법성 : 귀하의 동의
  4. 데이터 전달 : 법적 의무에 의한 경우를 제외하고 데이터는 제 XNUMX 자에게 전달되지 않습니다.
  5. 데이터 저장소 : Occentus Networks (EU)에서 호스팅하는 데이터베이스
  6. 권리 : 귀하는 언제든지 귀하의 정보를 제한, 복구 및 삭제할 수 있습니다.