Des chercheurs de l'UniversitĂ© technique de Munich ont publiĂ© l'outil TPDE et le backend de compilateur basĂ© sur celui-ci pour LLVM â TPDE-LLVM, qui permet la gĂ©nĂ©ration de code machine pour les architectures x86-64 et AArch64 Ă partir de la reprĂ©sentation intermĂ©diaire du code LLVM-IR. Lors des tests, TPDE-LLVM s'est rĂ©vĂ©lĂ© 10 Ă 20 fois plus rapide que le backend LLVM -O0 (gĂ©nĂ©rateur de code sans optimisations) tout en maintenant le mĂȘme niveau de performance du code machine rĂ©sultant, avec une augmentation de la taille de 10 Ă 30 %. Les rĂ©sultats du projet sont publiĂ©s sous la licence Apache 2.0.
TPDE-LLVM est initialement destiné à garantir une compilation avec des délais minimaux et un niveau de qualité correspondant au mode de compilation sans optimisations (« -O0 »). Le projet propose un utilitaire pour exécuter tpde-llc de maniÚre isolée, une bibliothÚque pour intégration dans des applications (par exemple, pour implémenter la fonctionnalité de compilateur JIT) et des patchs pour intégrer avec Clang et Flang.

Le projet peut ĂȘtre utilisĂ© comme composant de compilation de base pour JIT ou pour crĂ©er des builds non optimisĂ©s. TPDE-LLVM se concentre uniquement sur la vitesse de compilation et ne cherche pas Ă rivaliser avec les backends optimisateurs de LLVM, qui, par rapport Ă TPDE-LLVM, fonctionnent considĂ©rablement plus lentement, mais permettent de gĂ©nĂ©rer un code machine plus rapide et plus compact (environ deux fois plus rapide et deux fois moins volumineux).
TPDE-LLVM utilise trois étapes pour la génération de code :
- Nettoyage et préparation de la représentation intermédiaire LLVM ;
- Analyse des informations sur les cycles et l'utilisation des variables ;
- Formation du code machine.

Il est notĂ© qu'avec l'implication des auteurs de TPDE, des optimisations ont dĂ©jĂ Ă©tĂ© ajoutĂ©es dans les branches LLVM 19 et 20, permettant d'accĂ©lĂ©rer le backend standard de LLVM de 18 % sur la plateforme x86-64 et de 13 % sur la plateforme ARM64. Selon les auteurs de TPDE, il sera possible Ă l'avenir d'accĂ©lĂ©rer le backend de LLVM de 10 Ă 20 % sans trop de difficultĂ©s, mais toute amĂ©lioration de la performance nĂ©cessitera des changements significatifs. MĂȘme avec une rĂ©vision majeure, il est peu probable que le backend existant de LLVM puisse ĂȘtre accĂ©lĂ©rĂ© de 10 fois.
à ce stade du développement, l'un des objectifs du projet TPDE est de garantir le support de la représentation intermédiaire LLVM, obtenue par le front-end Clang en modes d'optimisation « -O0 » et « -O1 ». Le traitement de la représentation intermédiaire créée en mode « -O2 » n'est pas encore garanti en raison de l'absence de support des opérations vectorielles dans TPDE. Un support partiel est assuré pour le code intermédiaire de Flang et du compilateur Rust.
Source : opennet.ru
