LLVM 11.0 saapuu päivittämällä Python 3, parannuksia RISC-V: lle ja muilla

llvm

Kuuden kuukauden kehityksen jälkeen LLVM 11.0 -projektin uuden version julkaisu on esitetty jossa esitetään useita parannuksia, kuten päivitys Python 3: een, korjaustiedostot, jotka tukevat RISC-V: n kokeellisia ohjeita, ja monia muita muutoksia.

Niille, joille LLVM ei ole tuttu, heidän tulisi tietää, mikä se on GCC-yhteensopiva työkalupakki (kääntäjät, optimoijat ja koodigeneraattorit), joka kokoaa ohjelmat RISC: n kaltaisiksi bittikoodin välituotteiksi (matalan tason virtuaalikone, jossa on monitasoinen optimointijärjestelmä)

Se on suunniteltu optimoimaan kokoamisaika, sidonta-aika, suoritusaika millä tahansa ohjelmointikielellä, jonka käyttäjä haluaa määritellä. Alun perin toteutettu C: n ja C ++: n kokoamiseksi, LLVM: n kieliagnostiikka ja projektimenestys he ovat synnyttäneet monenlaisia ​​kieliä.

Luotu pseudokoodi voidaan muuntaa JIT-kääntäjän avulla koneohjeiksi suoraan ohjelman suorituksen yhteydessä.

LLVM 11.0: n tärkeimmät uudet ominaisuudet

Tässä uudessa versiossa LLVM 11.0 koontijärjestelmä on siirretty käyttämään Python 3: taSellaisena Python 3: n käyttöä ei pakoteta, koska siinä tapauksessa, että sitä ei ole käytettävissä, palautusvaihtoehto toteutetaan Python 2: n käyttämiseksi.

Attribuutti vektori-funktio-abi-variantti on lisätty väliesitykseen (IR) kuvaamaan skalaari- ja vektorifunktioiden välistä kartoitusta vektorointikutsuihin. Kaksi erillistä vektorityyppiä, llvm :: FixedVectorType ja llvm :: ScalableVectorType, puretaan llvm: stä: VectorType.

Määrittelemätön käyttäytyminen on undef-pohjaista haarautumista ja siirtymistä määrittelemättömistä arvoista kirjaston vakiotoimintoihin.

Kohdassa memset / memcpy / memmove on sallittua siirtää määrittelemättömiä osoittimia, mutta jos parametrin koko on nolla.

LLJIT lisää staattisten alustusten tuen LLJIT :: Initialize- ja LLJIT :: deinitialize -menetelmien avulla.

Lisätty kyky lisätä staattisia kirjastoja JITDylibiin käyttämällä StaticLibraryDefinitionGenerator-luokkaa. Lisätty C API ORCv2: lle (API JIT-kääntäjien luomiseen).

Eri prosessoriarkkitehtuurien tuen parantaminen:

  • Lisätty tuki Cortex-A34-, Cortex-A77-, Cortex-A78- ja Cortex-X1-prosessoreille AArch64-arkkitehtuurin taustalla. ARMv8.2-BF16 (BFloat16) ja ARMv8.6-A -laajennukset on otettu käyttöön, mukaan lukien RMv8.6-ECV (Enhanced Counter Virtualization), ARMv8.6-FGT (Fine Grained Traps), ARMv8.6-AMU (Activity) Monitoroi virtualisointia) ja ARMv8.0-DGH (tiedonkeruu vihje).
  • Lisätty tuki Cortex-M55-, Cortex-A77-, Cortex-A78- ja Cortex-X1-prosessoreille ARM-taustalla. Toteutti Armv8.6-A Matrix Multiply- ja RMv8.2-AA32BF16 BFloat16 -laajennukset.
  • Lisätty tuki koodinmuodostukselle POWER10-prosessoreille PowerPC-taustalla. Parannetut silmukan optimoinnit ja parempi tuki liukulukuoperaatioille.
  • Arkkitehtuurin taustaosa RISC-V voi vastaanottaa korjaustiedostoja tuella kokeellisille laajennetuille käskyjoukoille, joita ei ole vielä virallisesti hyväksytty.

Sen lisäksi tarjotaan mahdollisuus tuottaa koodi sidontatoimintoja varten integroitu vektori SVE-ohjeisiin.

AVR-arkkitehtuurin taustajärjestelmä on siirretty kokeiluluokasta vakaana, joka sisältyy perusjakaumaan.

X86-taustakuva tukee Intel AMX- ja TSXLDTRK-ohjeita. Lisätty suoja LVI-hyökkäyksiä vastaan (Load Value Injection) ja yleinen spekulatiivisen suorituksen sivuvaikutusten estämismekanismi otettiin käyttöön myös estämään hyökkäyksiä, jotka aiheutuvat suorittimen spekulatiivisesta suorituksesta.

Muista erottuvista muutoksista:

  • SystemZ-arkkitehtuurin taustajärjestelmä lisää tuen MemorySanitizerille ja LeakSanitizerille.
  • Libc ++ lisää matemaattisen vakiotunnistetiedoston tuen .
  • LLD-linkittimen laajennetut ominaisuudet.
  • Parannettu ELF-tuki, mukaan lukien lisätyt vaihtoehdot "–lto-emit-asm", "–lto-koko-ohjelma-näkyvä", "–tulosta-arkisto-tilastot", "–shuffle-section", "–thinlto-single -moduuli "," - ainutlaatuinen "," - segmentti "," - säikeet = N ".
  • Lisätty "-time-trace" -vaihtoehto jäljityksen tallentamiseksi tiedostoon, joka voidaan sitten jäsentää Chromen chrome: // trace -rajapinnan kautta.
  • Käyttöliittymä Go (llgo) -kääntäjän kanssa on poistettu julkaisusta, ja sitä voidaan mahdollisesti muuttaa tulevaisuudessa.

Vihdoin jos haluat tietää enemmän siitä tästä uudesta versiosta, voit tarkistaa yksityiskohdat seuraavassa linkissä.


Ole ensimmäinen kommentti

Jätä kommentti

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *

*

*

  1. Vastaa tiedoista: AB Internet Networks 2008 SL
  2. Tietojen tarkoitus: Roskapostin hallinta, kommenttien hallinta.
  3. Laillistaminen: Suostumuksesi
  4. Tietojen välittäminen: Tietoja ei luovuteta kolmansille osapuolille muutoin kuin lain nojalla.
  5. Tietojen varastointi: Occentus Networks (EU) isännöi tietokantaa
  6. Oikeudet: Voit milloin tahansa rajoittaa, palauttaa ja poistaa tietojasi.