LLVM 11.0 prichádza s aktualizáciou na Python 3, vylepšeniami pre RISC-V a ďalšími

Llvm

Po šiestich mesiacoch vývoja bolo predstavené uvedenie nového vydania projektu LLVM 11.0 v ktorých je predstavených niekoľko vylepšení, ako napríklad aktualizácia Pythonu 3, opravy podporujúce experimentálne pokyny v RISC-V a mnoho ďalších zmien.

Pre tých, ktorí LLVM nepoznajú, by mali vedieť, čo to je sada nástrojov vyhovujúcich GCC (kompilátory, optimalizátory a generátory kódu), ktorý kompiluje programy do prostredných virtuálnych inštrukcií bitového kódu podobných RISC (nízkoúrovňový virtuálny stroj s viacúrovňovým optimalizačným systémom).

Je navrhnutý tak, aby optimalizoval čas kompilácie, čas väzby, čas vykonania v ľubovoľnom programovacom jazyku, ktorý chce používateľ definovať. Pôvodne implementované na kompiláciu C a C ++, Agnostický dizajn jazyka LLVM a úspešnosť projektu plodili širokú škálu jazykov.

Vygenerovaný pseudokód je možné previesť pomocou kompilátora JIT na strojové pokyny priamo v čase vykonania programu.

Hlavné nové funkcie LLVM 11.0

V tejto novej verzii LLVM 11.0 systém zostavenia bol presunutý na použitie Pythonu 3Používanie Pythonu 3 ako také nie je vynútené, pretože v prípade, že nie je k dispozícii, je implementovaná možnosť vrátenia späť na použitie Pythonu 2.

Atribút bol pridaný vektor-funkcia-abi-variant na stredné zastúpenie (IR) opísať mapovanie medzi skalárnymi a vektorovými funkciami pre volania vektorizácie. Dva samostatné vektorové typy, llvm :: FixedVectorType a llvm :: ScalableVectorType, sú extrahované z llvm :: VectorType.

Nedefinované správanie je nedefinované vetvenie a prechod z nedefinovaných hodnôt na štandardné funkcie knižnice.

V memset / memcpy / memmove je povolené odovzdávať nedefinované ukazovatele, ale ak je parameter s veľkosťou rovný nule.

LLJIT pridáva podporu pre vykonávanie statických inicializácií prostredníctvom metód LLJIT :: initialize a LLJIT :: deinitialize.

Pridané schopnosť pridávať statické knižnice do JITDylib pomocou triedy StaticLibraryDefinitionGenerator. Pridané C API pre ORCv2 (API pre vytváranie kompilátorov JIT).

Na strane vylepšenia podpory pre rôzne architektúry procesorov:

  • Pridané podpora procesorov Cortex-A34, Cortex-A77, Cortex-A78 a Cortex-X1 v pozadí architektúry AArch64. Boli implementované rozšírenia ARMv8.2-BF16 (BFloat16) a ARMv8.6-A, vrátane RMv8.6-ECV (Enhanced Counter Virtualization), ARMv8.6-FGT (Fine Grained Traps), ARMv8.6-AMU (aktivita Virtualizácia monitorov) a ARMv8.0-DGH (náznak zhromažďovania údajov).
  • Pridaná podpora pre procesory Cortex-M55, Cortex-A77, Cortex-A78 a Cortex-X1 na back-ende ARM. Implementované rozšírenia Armv8.6-A Matrix Multiply a RMv8.2-AA32BF16 BFloat16.
  • Pridaná podpora pre generovanie kódu pre procesory POWER10 v backende PowerPC. Vylepšená optimalizácia slučiek a vylepšená podpora operácií s pohyblivou rádovou čiarkou.
  • Backend architektúry RISC-V môže prijímať patche s podporou pre experimentálne rozšírené inštrukčné sady, ktoré ešte neboli oficiálne schválené.

Okrem toho je poskytnutá schopnosť generovať kód pre väzobné funkcie integrované do vektorových pokynov SVE.

Backend pre architektúru AVR bol presunutý z experimentálnej kategórie do stabilných, ktoré sú zahrnuté v základnej distribúcii.

Backend x86 podporuje pokyny Intel AMX a TSXLDTRK. Pridaná ochrana proti útokom LVI (Load Value Injection) a všeobecný mechanizmus potlačenia vedľajších účinkov špekulatívneho vykonania bol implementovaný aj na blokovanie útokov spôsobených špekulatívnym vykonávaním operácií na CPU.

Z ďalších zmien, ktoré vynikajú:

  • Backend pre architektúru SystemZ pridáva podporu pre MemorySanitizer a LeakSanitizer.
  • Libc ++ pridáva podporu pre matematický konštantný hlavičkový súbor .
  • Rozšírené možnosti linkera LLD.
  • Vylepšená podpora ELF vrátane pridaných možností „–lto-emit-asm“, „–lto-celý-program-viditeľný“, „–print-archív-štatistiky“, „–shuffle-oddiel“, „–thinlto-single -module "," –Unique "," –rozdiel "," –vlákna = N ".
  • Pridaná možnosť „–time-trace“ na uloženie trasovania do súboru, ktorý je potom možné analyzovať prostredníctvom rozhrania chrome: // trace v prehliadači Chrome.
  • Rozhranie s kompilátorom Go (llgo) bolo z vydania odstránené a v budúcnosti môže byť reštrukturalizované.

Konečne ak o tom chcete vedieť viac o tejto novej verzii si môžete skontrolovať podrobnosti v nasledujúcom odkaze.


Zanechajte svoj komentár

Vaša e-mailová adresa nebude zverejnená. Povinné položky sú označené *

*

*

  1. Za údaje zodpovedá: AB Internet Networks 2008 SL
  2. Účel údajov: Kontrolný SPAM, správa komentárov.
  3. Legitimácia: Váš súhlas
  4. Oznamovanie údajov: Údaje nebudú poskytnuté tretím stranám, iba ak to vyplýva zo zákona.
  5. Ukladanie dát: Databáza hostená spoločnosťou Occentus Networks (EU)
  6. Práva: Svoje údaje môžete kedykoľvek obmedziť, obnoviť a vymazať.