LLVM 11.0 tiba dengan kemas kini ke Python 3, penambahbaikan untuk RISC-V dan banyak lagi

LLVM

Selepas enam bulan pembangunan pelancaran projek LLVM 11.0 edisi baru telah dibentangkan di mana beberapa penambahbaikan disajikan, seperti kemas kini ke Python 3, tambalan untuk menyokong arahan eksperimen dalam RISC-V dan banyak perubahan lain.

Bagi mereka yang tidak biasa dengan LLVM, mereka harus tahu apa itu alatan yang mematuhi GCC (penyusun, pengoptimum, dan penjana kod) yang menyusun program ke dalam arahan maya antara kod bit seperti RISC (mesin maya tahap rendah dengan sistem pengoptimuman pelbagai peringkat)

Ia direka untuk mengoptimumkan masa penyusunan, masa mengikat, masa pelaksanaan dalam bahasa pengaturcaraan apa pun yang ingin ditentukan oleh pengguna. Pada asalnya dilaksanakan untuk menyusun C dan C ++, Reka bentuk agnostik bahasa LLVM, dan kejayaan projek mereka telah menghasilkan pelbagai bahasa.

Pseudocode yang dihasilkan dapat ditukar menggunakan pengkompil JIT menjadi arahan mesin secara langsung pada masa pelaksanaan program.

Ciri baru utama LLVM 11.0

Dalam versi baru LLVM 11.0 ini sistem binaan telah dipindahkan untuk menggunakan Python 3Dengan demikian penggunaan Python 3 tidak dipaksa, kerana jika tidak tersedia, pilihan rollback dilaksanakan untuk menggunakan Python 2.

Atribut vektor-fungsi-abi-varian telah ditambahkan kepada perwakilan perantaraan (IR) untuk menerangkan pemetaan antara fungsi skalar dan vektor untuk panggilan vektorisasi. Dua jenis vektor yang berasingan, llvm :: FixedVectorType dan llvm :: ScalableVectorType, diekstrak dari llvm :: VectorType.

Tingkah laku tidak ditentukan adalah percabangan berasaskan undef dan beralih dari nilai yang tidak ditentukan ke fungsi pustaka standard.

Dalam memset / memcpy / memmove, ia dibenarkan melewati penunjuk yang tidak ditentukan, tetapi jika parameter dengan ukurannya sama dengan sifar.

LLJIT menambah sokongan untuk melakukan inisialisasi statik melalui kaedah LLJIT :: inisialisasi dan LLJIT :: deinitialize.

Menambah keupayaan untuk menambah perpustakaan statik ke JITDylib menggunakan kelas StaticLibraryDefinitionGenerator. Menambah C API untuk ORCv2 (API untuk membuat penyusun JIT).

Untuk meningkatkan sokongan untuk arkitek pemproses yang berbeza:

  • Ditambah sokongan untuk pemproses Cortex-A34, Cortex-A77, Cortex-A78 dan Cortex-X1 pada latar seni bina AArch64. Sambungan ARMv8.2-BF16 (BFloat16) dan ARMv8.6-A telah dilaksanakan, termasuk RMv8.6-ECV (Enhanced Counter Virtualization), ARMv8.6-FGT (Fine Grained Traps), ARMv8.6-AMU (Activity Memantau virtualisasi) dan ARMv8.0-DGH (petunjuk pengumpulan data).
  • Menambah sokongan untuk pemproses Cortex-M55, Cortex-A77, Cortex-A78, dan Cortex-X1 pada backend ARM. Melaksanakan sambungan Armv8.6-A Matrix Multiply dan RMv8.2-AA32BF16 BFloat16.
  • Menambah sokongan untuk penjanaan kod untuk pemproses POWER10 di backend PowerPC. Pengoptimuman gelung yang lebih baik dan sokongan yang lebih baik untuk operasi titik terapung.
  • Latar belakang seni bina RISC-V dapat menerima tambalan dengan sokongan untuk set arahan lanjutan eksperimen yang belum diluluskan secara rasmi.

Selain itu, keupayaan untuk menghasilkan kod untuk fungsi mengikat disediakan bersepadu dengan arahan vektor SVE.

Bahagian belakang untuk seni bina AVR telah dipindahkan dari kategori eksperimen ke yang stabil yang termasuk dalam pengedaran asas.

Bahagian belakang x86 menyokong arahan Intel AMX dan TSXLDTRK. Menambah perlindungan terhadap serangan LVI (Load Value Injection) dan mekanisme penekanan kesan sampingan eksekusi spekulatif umum juga dilaksanakan untuk menyekat serangan yang disebabkan oleh pelaksanaan operasi spekulatif pada CPU.

Perubahan lain yang menonjol:

  • Latar belakang untuk seni bina SystemZ menambah sokongan untuk MemorySanitizer dan LeakSanitizer.
  • Libc ++ menambah sokongan untuk fail tajuk tetap matematik .
  • Keupayaan lanjutan penghubung LLD.
  • Sokongan ELF yang ditingkatkan, termasuk pilihan tambahan "–lto-emit-asm", "–lto-whole-program-visible", "–print-archive-stats", "–shuffle-section", "–thinlto-single -module "," –Unique "," –rosegment "," –threads = N ".
  • Menambah pilihan "–time-trace" untuk menyimpan jejak ke fail, yang kemudian dapat diuraikan melalui chrome: // trace interface di Chrome.
  • Antaramuka dengan penyusun Go (llgo) telah dikeluarkan dari pelepasan dan mungkin disusun semula pada masa akan datang.

Akhirnya sekiranya anda ingin mengetahui lebih lanjut mengenainya mengenai versi baru ini, anda boleh menyemak perinciannya di pautan berikut.


Tinggalkan komen anda

Alamat email anda tidak akan disiarkan. Ruangan yang diperlukan ditanda dengan *

*

*

  1. Bertanggungjawab untuk data: AB Internet Networks 2008 SL
  2. Tujuan data: Mengendalikan SPAM, pengurusan komen.
  3. Perundangan: Persetujuan anda
  4. Komunikasi data: Data tidak akan disampaikan kepada pihak ketiga kecuali dengan kewajiban hukum.
  5. Penyimpanan data: Pangkalan data yang dihoskan oleh Occentus Networks (EU)
  6. Hak: Pada bila-bila masa anda boleh menghadkan, memulihkan dan menghapus maklumat anda.