LLVM 11.0 saabub koos Python 3 värskenduse, RISC-V täiustustega ja muuga

LLVM

Pärast kuut kuud arengut esitletud on projekti LLVM 11.0 uue väljaande turule toomist milles esitatakse mitu täiustust, näiteks Python 3 värskendus, plaastrid RISC-V eksperimentaalsete juhiste toetamiseks ja paljud muud muudatused.

Neile, kellele LLVM pole tuttav, peaksid nad teadma, mis see on GCC-ga ühilduv tööriistakomplekt (kompilaatorid, optimeerijad ja koodigeneraatorid), mis kompileerib programmid RISC-laadseteks bittkoodi vahepealseteks virtuaalseteks juhisteks (madala taseme virtuaalne masin koos mitmetasandilise optimeerimissüsteemiga).

See on loodud kompileerimisaja optimeerimiseks, sidumisaeg, täitmisaeg mis tahes programmeerimiskeeles, mida kasutaja soovib määratleda. Algselt rakendati C ja C ++ kompileerimiseks, LLVMi keele agnostiline kujundus ja projekti edu nad on sünnitanud väga erinevaid keeli.

Loodud pseudokoodi saab JIT-kompilaatori abil teisendada masina juhisteks otse programmi täitmise ajal.

LLVM 11.0 peamised uued funktsioonid

Selles LLVM 11.0 uues versioonis ehitussüsteem on teisaldatud Python 3 kasutamiseksSeetõttu ei ole Python 3 kasutamine sunnitud, kuna juhul, kui see pole saadaval, rakendatakse Python 2 kasutamiseks tagasivõtmise võimalus.

Atribuut lisatud on vektor-funktsioon-abi-variant keskmise esinduseni (IR) skalaar- ja vektorfunktsioonide kaardistamise kirjeldamiseks vektoriseerimiskutsete jaoks. Kaks eraldi vektoritüüpi, llvm :: FixedVectorType ja llvm :: ScalableVectorType, eraldatakse llvm :: VectorType-st.

Määratlemata käitumine on undef-põhine hargnemine ja üleminek määratlemata väärtustest tavapärastesse raamatukogu funktsioonidesse.

Memset / memcpy / memmove on lubatud edasi anda määratlemata kursoreid, kuid kui suurusega parameeter on võrdne nulliga.

LLJIT lisab staatiliste initsialiseerimiste tuge LLJIT :: initsialiseerimise ja LLJIT :: deinitialiseerimise meetodite kaudu.

Lisatud võime lisada staatilisi teeke JITDylibi kasutades klassi StaticLibraryDefinitionGenerator. Lisatud C API ORCv2 jaoks (API JIT-kompilaatorite loomiseks).

Erinevate protsessorite arhitektuuride toetamise parandamine:

  • Lisatud tugi protsessoritele Cortex-A34, Cortex-A77, Cortex-A78 ja Cortex-X1 AArch64 arhitektuuri taustaprogrammis. Rakendatud on laiendused ARMv8.2-BF16 (BFloat16) ja ARMv8.6-A, sealhulgas RMv8.6-ECV (täiustatud loenduri virtualiseerimine), ARMv8.6-FGT (peeneteralised lõksud), ARMv8.6-AMU (tegevus Jälgib virtualiseerimist) ja ARMv8.0-DGH (andmekogumise vihje).
  • Lisatud ARM-i taustaprogrammile Cortex-M55, Cortex-A77, Cortex-A78 ja Cortex-X1 protsessorite tugi. Rakendas Armv8.6-A Matrix Multiply ja RMv8.2-AA32BF16 BFloat16 laiendusi.
  • Lisati PowerPC taustaprogrammi POWER10 protsessorite koodide genereerimise tugi. Parem silmusoptimeerimine ja parem tugi ujukomaoperatsioonidele.
  • Arhitektuuri taustaprogramm RISC-V saab toega plaastreid vastu võtta eksperimentaalsete laiendatud juhendikomplektide jaoks, mis pole veel ametlikult heaks kiidetud.

Lisaks sellele pakutakse võimalust sidumisfunktsioonide jaoks koodi genereerida integreeritud vektor SVE-juhistega.

AVR-arhitektuuri taustaprogramm on viidud eksperimentaalsest kategooriast stabiilsetesse, mis sisalduvad baasjaotuses.

X86 taustaprogramm toetab Intel AMX ja TSXLDTRK juhiseid. Lisatud kaitse LVI rünnakute eest (Load Value Injection) ja üldist spekulatiivse täitmise kõrvaltoimete summutamise mehhanismi rakendati ka protsessori spekulatiivse täitmise põhjustatud rünnakute blokeerimiseks.

Muudest silmapaistvatest muudatustest:

  • SystemZ-arhitektuuri taustaprogramm lisab tugi MemorySanitizerile ja LeakSanitizerile.
  • Libc ++ lisab matemaatika konstantse päisefaili toe .
  • LLD linkeri laiendatud võimalused.
  • Täiustatud ELF-i tugi, sealhulgas lisatud valikud "–lto-emit-asm", "–lto-kogu-programm-nähtav", "–print-arhiivistatistika", "-jaotussektsioon", "-thinlto-üksikmoodul "," - ainulaadne "," - segment "," - niidid = N ".
  • Lisati jäljend faili salvestamiseks "–time-trace", mida saab seejärel sõeluda Chrome'i liidese chrome: // trace kaudu.
  • Go (llgo) kompilaatoriga liides on versioonilt eemaldatud ja seda võidakse tulevikus ümber korraldada.

Lõpuks kui soovite selle kohta rohkem teada saada selle uue versiooni kohta saate vaadata üksikasjad järgmisel lingil.


Jäta oma kommentaar

Sinu e-postiaadressi ei avaldata. Kohustuslikud väljad on tähistatud *

*

*

  1. Andmete eest vastutav: AB Internet Networks 2008 SL
  2. Andmete eesmärk: Rämpsposti kontrollimine, kommentaaride haldamine.
  3. Seadustamine: teie nõusolek
  4. Andmete edastamine: andmeid ei edastata kolmandatele isikutele, välja arvatud juriidilise kohustuse alusel.
  5. Andmete salvestamine: andmebaas, mida haldab Occentus Networks (EL)
  6. Õigused: igal ajal saate oma teavet piirata, taastada ja kustutada.