Sauf que le bytecode LLVM n'est pas indépendent de l'architechture.
Tous les pointeurs sont déjà convertis en 32 ou en 64 bits. Et les trucs comme sizeof() sont déjà calculer.
Sans même parler des instruction asm dans le code, ajoutons le fait que il y a l'étape du préprocesseur:
#if LITTLE_ENDIAN
Donc cet objectif me parraît impossible.
les optims spécifiques à son CPU (i386/i686, Altivec, SSE, armhf/armel, etc.)
Il y a effectivement beaucoup d'extensions de l'architecture x86_64 qui ne sont pas utilisées car le binaire doit être suffisamment générique.
Cepandent, il faut relativiser: Quel est le gain réel que l'on peut espérer ici ? en sachant que la vectorisation en général est assez difficile à faire par le compilateur, et que les bibliothèques bas niveau profitent déjà de ces optimisations grâces au intrinsics et une vérification au runtime.
Qu'en pensez-vous ?
Je pense que il y airais peut-être un avantage à distribuer du bytecode LLVM pour permettre de faire du Just In Time. Et ré-optimiser les parties de code fréquemment utilisée avec plus d'inlining et de caching et ce genre de choses.
[^] # Re: bitcode vs bytecode ?
Posté par Gof (site web personnel) . En réponse à la dépêche Rencontre des Développeurs LLVM 2012. Évalué à 10.
Sauf que le bytecode LLVM n'est pas indépendent de l'architechture.
Tous les pointeurs sont déjà convertis en 32 ou en 64 bits. Et les trucs comme sizeof() sont déjà calculer.
Sans même parler des instruction asm dans le code, ajoutons le fait que il y a l'étape du préprocesseur:
Donc cet objectif me parraît impossible.
Il y a effectivement beaucoup d'extensions de l'architecture x86_64 qui ne sont pas utilisées car le binaire doit être suffisamment générique.
Cepandent, il faut relativiser: Quel est le gain réel que l'on peut espérer ici ? en sachant que la vectorisation en général est assez difficile à faire par le compilateur, et que les bibliothèques bas niveau profitent déjà de ces optimisations grâces au intrinsics et une vérification au runtime.
Je pense que il y airais peut-être un avantage à distribuer du bytecode LLVM pour permettre de faire du Just In Time. Et ré-optimiser les parties de code fréquemment utilisée avec plus d'inlining et de caching et ce genre de choses.