QASX |
Addition et échange |
| ARM |
Syntaxe
Paramètres
| Nom |
Description |
| cond |
Ce paramètre optionnel permet d'indiquer le code de condition |
| Rd |
Ce paramètre permet d'indiquer le registre de destination. |
| Rn |
Ce paramètre permet d'indiquer le registre contenant le premier opérande. |
| Rm |
Ce paramètre permet d'indiquer le registre contenant le deuxième opérande. |
Description
Cette instruction permet d'effectuer une addition de saturation de parallèle et soustraction de demi-mots avec échange.
Remarques
- Opération mixte avec échange de demi-mots : L'instruction QASX effectue deux opérations en parallèle sur des demi-mots (16 bits), mais avec une
particularité : elle échange la partie haute et basse du registre Rm. Ensuite, elle réalise une addition saturée sur la partie basse et une soustraction saturée
sur la partie haute. Cela permet de traiter deux types d'opérations simultanément.
- Utilisation dans les algorithmes de traitement vectoriel : Ce type d'opération est très utile dans les algorithmes SIMD (Single Instruction, Multiple Data),
comme dans les calculs d'image, de vidéo ou d'audio, où deux données 16 bits sont souvent entreposées dans un seul registre de 32 bits. QASX optimise ces traitements
en effectuant deux calculs à la fois, tout en gérant la saturation automatiquement.
- Saturation intégrée pour éviter les dépassements : Chaque opération (addition et soustraction) est protégée par une saturation arithmétique. Si le
résultat dépasse les bornes des entiers 16 bits signés (-32768 à 32767), il est clampé à la limite correspondante. Cela évite les débordements, qui peuvent générer des
erreurs graves dans les calculs.
- Mise à jour du drapeau de saturation Q : Comme pour les autres instructions de la famille Q, un dépassement de saturation active le drapeau Q dans le
registre d'état CPSR. Ce comportement permet au programme de détecter les cas où l'intégrité numérique du calcul a été altérée, et éventuellement de réagir en
conséquence.
- Échange automatique des moitiés du second opérande : La transformation particulière de QASX vient de l'échange des moitiés du registre Rm. C'est une
différence notable par rapport à d'autres instructions SIMD classiques, car cet échange permet de croiser les opérations et de traiter des structures de données
spécifiques (par exemple, des vecteurs ou des échantillons entrelacés).
- Complément logique des instructions QADD16, QSUB16,... : QASX appartient à une famille d'instructions SIMD saturées incluant QADD16,
QSUB16, QSAX, SHADD16, etc. Ensemble, elles permettent de concevoir des traitements vectoriels complexes et très performants en exploitant les capacités parallèles
de l'architecture ARM avec saturation contrôlée.
- Exécution conditionnelle pour un contrôle fin : Comme beaucoup d'instructions ARM, QASX peut être utilisée avec un suffixe conditionnel {cond}. Cela
permet de l'exécuter uniquement si certaines conditions sur les drapeaux du CPSR sont remplies, évitant des instructions de branchement, et maintenant une exécution
fluide et optimisée.
- Instruction spécifique aux architectures avec SIMD : QASX nécessite une architecture ARMv6 ou ARMv7 avec extension SIMD activée. Elle n'est pas
disponible sur les architectures plus simples comme ARMv5 ou certains Cortex-M (M0, M3). Il est donc crucial de vérifier la compatibilité matérielle avant d'intégrer
cette instruction dans un programme.
Dernière mise à jour : Dimanche, le 12 novembre 2017