Forskare vid Technische UniversitĂ€t MĂŒnchen har publicerat verktyget TPDE och en compilerback-end baserad pĂ„ detta för LLVM â TPDE-LLVM, som möjliggör generering av maskinkod för arkitekturerna x86-64 och AArch64 baserat pĂ„ LLVM-IR mellanliggande kodrepresentation. Under tester visade det sig att TPDE-LLVM Ă€r 10-20 gĂ„nger snabbare Ă€n LLVM-back-end med optimeringslĂ€gen -O0 (kodgenerator utan optimeringar) med samma prestandanivĂ„ för den resulterande maskinkoden och en ökning av storleken med 10-30%. Projektets resultat har publicerats under Apache 2.0-licensen.
TPDE-LLVM Àr initialt inriktat pÄ att sÀkerstÀlla kompilering med minimala förseningar och en kvalitetsnivÄ som motsvarar bygglÀget utan optimeringar ("-O0"). Projektet tillhandahÄller ett verktyg för isolerat körande av tpde-llc, ett bibliotek för integration i applikationer (t.ex. för implementering av JIT-kompilatorfunktionalitet) och patchar för integration med Clang och Flang.

Projektet kan anvÀndas som en grundlÀggande kompileringkomponent för JIT eller för att skapa ooptimerade byggnader. TPDE-LLVM fokuserar enbart pÄ kompileringens hastighet och försöker inte konkurrera med LLVM:s optimerande back-end som Àr avsevÀrt lÄngsammare jÀmfört med TPDE-LLVM, men som kan generera snabbare och mer kompakt maskinkod (ungefÀr tvÄ gÄnger snabbare och hÀlften sÄ stor).
TPDE-LLVM anvÀnder tre steg för kodgenerering:
- Rengöring och förberedelse av LLVM:s mellanliggande representation;
- Analys av cykel- och variabelanvÀndningsinformation;
- Generering av maskinkod.

Det noteras att med författarna till TPDE Ă€r optimeringar redan tillagda i LLVM-versionerna 19 och 20, vilket har lett till en 18% ökning av prestandan för LLVM:s standardback-end pĂ„ x86-64-plattformen och 13% pĂ„ ARM64-plattformen. Enligt författarna till TPDE kan back-end för LLVM i framtiden sannolikt hastighetsökas med 10-20% med smĂ„ insatser, men vidare förbĂ€ttringar kommer att krĂ€va betydande förĂ€ndringar. Ăven med betydande omarbetningar Ă€r det osannolikt att den befintliga LLVM-back-end kan snabbas upp med 10 gĂ„nger.
I det nuvarande skedet av utvecklingen Àr ett av mÄlen för projektet TPDE att stödja mellanrepresentationen av koden LLVM, som genereras av Clang-frontenden i optimeringslÀgena "-O0" och "-O1". Bearbetning av mellanrepresentationen som skapades i lÀget "-O2" garanteras inte Àn pÄ grund av brist pÄ stöd i TPDE för vektoroperationer. Delvis stöds mellanliggande kod frÄn Flang och Rust-kompilatorn.
KĂ€lla: opennet.ru
