Je travaille en C/C++ en utilisant des built-ins. J'ai besoin de l'instruction lvd2x
pour charger des données non alignées dans un registre VMX. Il semble que lvd2x
est disponible sur les processeurs Power7 et Power8. GCC fournit le vec_vsx_ld
intégré pour effectuer la tâche. Selon IBM XL C/C++ for Linux, V13.1.5, chapitre 4, Améliorations ajouté dans la version 13.1.4:Y at-il un XL C intégré pour LXVD2X avant 13.1.4?
nouvelles fonctions intégrées
Voici vecteur GCC intégré des fonctions sont prises en charge:
- vec_vsx_ld
- ...
Le code est gardé pour XL C, donc je n'ai pas besoin des built-ins de GCC. Le problème est, je ne trouve pas intégré dans XL C pour lvd2x
:
#if defined(__xlc__) || defined(__xlC__)
uint8x16_p8 block = vec_vsx_ld(0, t);
#else
uint64x2_p8 block = (uint64x2_p8)vec_vsx_ld(0, t);
#endif
Le CCG compilez ferme fournit AIX avec XL C v13.1.3 (5725-C72, 5765-J07). Y at-il un XL C intégré pour LXVD2X avant 13.1.4? S'il y a un intégré, alors qu'est-ce que c'est? Si non, alors comment avons-nous accès à l'instruction?
(J'essaie d'éviter ASM et ASM inline Je ne connais pas assez le processeur pour l'écrire J'ai aussi eu une expérience assez désagréable, et je ne veux pas amplifier la douleur par essayant d'utiliser asm).
Q: Comment accéder à l'instruction (en utilisant GCC)? R: L'assemblage en ligne est un choix évident;) Pourquoi ne pas au moins * ESSAYER * ça? PS: Votre architecture est Power PC, correct? – paulsm4
@ paulsm4 - GCC va bien. J'en ai besoin pour le compilateur XL C d'IBM. – jww