LLVM 11.0 přichází s aktualizací na Python 3, vylepšeními pro RISC-V a dalšími

LLVM

Po šesti měsících vývoje bylo představeno uvedení nového vydání projektu LLVM 11.0 ve kterém je představeno několik vylepšení, jako je aktualizace Pythonu 3, opravy podporující experimentální pokyny v RISC-V a mnoho dalších změn.

Pro ty, kteří LLVM neznají, by měli vědět, co to je sada nástrojů vyhovujících GCC (kompilátory, optimalizátory a generátory kódu), který kompiluje programy do RISC podobných bitových kódů mezilehlých virtuálních instrukcí (nízkoúrovňový virtuální stroj s víceúrovňovým optimalizačním systémem).

Je navržen tak, aby optimalizoval čas kompilace, čas vazby, čas provedení v libovolném programovacím jazyce, který chce uživatel definovat. Původně implementováno pro kompilaci C a C ++, Agnostický design jazyka LLVM a úspěch projektu vytvořili širokou škálu jazyků.

Vygenerovaný pseudokód lze převést pomocí kompilátoru JIT na strojové pokyny přímo v době provádění programu.

Hlavní nové funkce LLVM 11.0

V této nové verzi LLVM 11.0 systém sestavení byl přesunut, aby používal Python 3Použití Pythonu 3 proto není vynucené, protože v případě, že není k dispozici, je implementována možnost vrácení zpět pro použití Pythonu 2.

Atribut byla přidána vektorová funkce-abi-varianta na střední zastoupení (IR) popsat mapování mezi skalárními a vektorovými funkcemi pro vektorizační volání. Dva samostatné vektorové typy, llvm :: FixedVectorType a llvm :: ScalableVectorType, jsou extrahovány z llvm :: VectorType.

Nedefinované chování je nedefinované větvení a předávání z nedefinovaných hodnot standardním knihovním funkcím.

V memset / memcpy / memmove je povoleno předávat nedefinované ukazatele, ale pokud je parametr s velikostí roven nule.

LLJIT přidává podporu pro statické inicializace pomocí metod LLJIT :: initialize a LLJIT :: deinitialize.

Přidáno schopnost přidávat statické knihovny do JITDylib pomocí třídy StaticLibraryDefinitionGenerator. Přidáno C API pro ORCv2 (API pro vytváření překladačů JIT).

Na straně zlepšení podpory pro různé architektury procesorů:

  • Přidané podpora procesorů Cortex-A34, Cortex-A77, Cortex-A78 a Cortex-X1 v backend architektury AArch64. Byly implementovány rozšíření ARMv8.2-BF16 (BFloat16) a ARMv8.6-A, včetně RMv8.6-ECV (Enhanced Counter Virtualization), ARMv8.6-FGT (Fine Grained Traps), ARMv8.6-AMU (aktivita Virtualizace monitorů) a ARMv8.0-DGH (nápověda pro sběr dat).
  • Přidána podpora pro procesory Cortex-M55, Cortex-A77, Cortex-A78 a Cortex-X1 na back-end ARM. Implementováno rozšíření Armv8.6-A Matrix Multiply a RMv8.2-AA32BF16 BFloat16.
  • Přidaná podpora pro generování kódu pro procesory POWER10 v back-endu PowerPC. Vylepšená optimalizace smyčky a vylepšená podpora operací s plovoucí desetinnou čárkou.
  • Backend architektury RISC-V může přijímat patche s podporou pro experimentální sady rozšířených instrukcí, které dosud nebyly oficiálně schváleny.

Kromě toho je k dispozici schopnost generovat kód pro vazebné funkce integrovaný do vektorových SVE instrukcí.

Backend pro architekturu AVR byl přesunut z experimentální kategorie do stabilních součástí základní distribuce.

Back-end x86 podporuje pokyny Intel AMX a TSXLDTRK. Přidaná ochrana proti útokům LVI (Load Value Injection) a obecný mechanismus potlačení nežádoucích účinků spekulativního provedení byl také implementován k blokování útoků způsobených spekulativním prováděním operací na CPU.

Z dalších změn, které vynikají:

  • Backend pro architekturu SystemZ přidává podporu pro MemorySanitizer a LeakSanitizer.
  • Libc ++ přidává podporu pro soubor záhlaví matematické konstanty .
  • Rozšířené možnosti linkeru LLD.
  • Vylepšená podpora ELF, včetně přidaných možností „–lto-emit-asm“, „–lto-celý-program-viditelný“, „–print-archive-stats“, „–shuffle-section“, „–thinlto-single -module "," –Unique "," –segment "," –threads = N ".
  • Přidána možnost „–time-trace“ pro uložení trasování do souboru, který lze poté analyzovat prostřednictvím rozhraní chrome: // trace v prohlížeči Chrome.
  • Rozhraní s překladačem Go (llgo) bylo z vydání odstraněno a může být v budoucnu restrukturalizováno.

Konečně pokud o tom chcete vědět víc o této nové verzi můžete zkontrolovat podrobnosti v následujícím odkazu.


Zanechte svůj komentář

Vaše e-mailová adresa nebude zveřejněna. Povinné položky jsou označeny *

*

*

  1. Za data odpovídá: AB Internet Networks 2008 SL
  2. Účel údajů: Ovládací SPAM, správa komentářů.
  3. Legitimace: Váš souhlas
  4. Sdělování údajů: Údaje nebudou sděleny třetím osobám, s výjimkou zákonných povinností.
  5. Úložiště dat: Databáze hostovaná společností Occentus Networks (EU)
  6. Práva: Vaše údaje můžete kdykoli omezit, obnovit a odstranit.