RISC-V boosté avec le nouveau compilateur LLVM 16 open source
Le développement de puces RISC-V est accéléré de façon significative avec la dernière version du compilateur open source LLVM qui sous-tend de nombreux outils de l’industrie.
Pour la première fois, l’architecture dispose d’un guide de l’utilisateur pour la cible RISC-V afin de documenter l’état du support au sein de LLVM pour diverses extensions du jeu d’instructions RISC-V. LLVM prend actuellement entièrement en charge RV32I et RV64I. RV32E est pris en charge par les outils basés sur l’assembleur uniquement, tandis que RV128I n’est pas pris en charge.
Dans le même temps, le support des extensions non ratifiées Zbe, Zbf, Zbm, Zbp, Zbr et Zbt a été supprimée, tandis que le support a été ajouté pour les extensions expérimentales Zca, Zcd, Zcf, Zihintntl, Ztso et Zawrs. Il s’agit également de la première version où la vectorisation évolutive a été activée par défaut, ce qui facilite le développement de systèmes plus performants.
LLVM met à jour sa technologie de compilateur tous les six mois pour répondre aux exigences des développeurs.
L’un des principaux problèmes de RISC-V est l’utilisation d’extensions personnalisées qui peuvent conduire à la fragmentation de l’écosystème. Les extensions de fournisseur sont des extensions qui ne sont pas normalisées par RISC-V International, et sont plutôt définies par un fournisseur de matériel et correspondent à peu près à la définition d’une extension non standard de la section 1.3 du Volume I: spécification RISC-V Unprivileged ISA. LLVM a l’intention d’accepter à terme à la fois les extensions personnalisées et les extensions non conformes et l’inclusion d’une extension de fournisseur sera considérée au cas par cas.
L’optimisation de la branche avant courte bénéfique pour le SiFive Series 7 a été implémentée et un modèle de processeur Syntacore SCR1 a été ajouté.
Le projet LLVM
disponible à https://github.com/llvm/llvm-project
Le projet LLVM comporte de nombreux composants. Le cœur du projet s’appelle lui-même « LLVM ». Celui-ci contient tous les outils, bibliothèques et fichiers d’en-tête nécessaires pour traiter les représentations intermédiaires et les convertir en fichiers objets. Les outils incluent un assembleur, un désassembleur, un analyseur de bitcode et un optimiseur de bitcode. Les langages de type C utilisent l’interface Clang. Ce composant compile le code C, C++, Objective-C et Objective-C++ en bitcode LLVM – et à partir de là en fichiers objets, à l’aide de LLVM.
Les autres composants incluent : la bibliothèque standard libc++ C++ libc++ C++ standard library, l’éditeur de liens LLD LLD linker, et autres.
Liens utiles
Suivre ECInews sur Google news
discourse.llvm.org/t/llvm-16-0-0-release/69326