SADD8 |
Addition 8 bits signé |
| 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 parallèle d'octets avec des valeurs signés.
Remarques
- Addition parallèle sur des sous-parties d'un registre : L'instruction SADD8 effectue quatre additions signées indépendantes, chaque opération étant
réalisée sur des octets (8 bits) alignés dans les registres source. Cela permet un traitement vectoriel simple sur des données paquetées, sans recourir à des
instructions SIMD complexes.
- Travaille avec des valeurs signées : Contrairement à UADD8 qui opère sur des entiers non signés, SADD8 traite des entiers signés sur 8 bits, ce qui
signifie qu'elle prend en compte la représentation en complément à deux. Cela change complètement le comportement lors d'un dépassement, car il ne s'agit pas simplement
d'un débordement binaire classique.
- Pas de saturation implicite : Même si les additions sont signées, SADD8 ne réalise pas de saturation automatique. En cas de dépassement, le résultat
est tronqué dans le style classique du complément à deux. Cela impose une vigilance accrue lorsqu'on travaille avec des plages de valeurs sensibles, par exemple en
traitement d'image ou en audio.
- Utile pour le traitement de flux de données : Les opérations parallèles sur octets sont particulièrement utiles en traitement de signaux ou d'images,
où les pixels ou les échantillons sont souvent stockés dans des formats compacts. SADD8 permet ainsi de gagner en performance en traitant quatre valeurs simultanément.
- Instruction SIMD implicite : Bien que ce ne soit pas une instruction NEON ou SIMD au sens strict, SADD8 appartient à la famille "SIMD within a register".
Elle exploite les registres comme des conteneurs de sous-données homogènes, ce qui ouvre la voie à des optimisations sur des architectures sans unité vectorielle
dédiée.
- Combine les registres comme blocs de données : Plutôt que de considérer Rn et Rm comme des entiers uniques, SADD8 les traite comme des tableaux de 4 entiers
signés sur 8 bits. Cette vision « bloc » est utile dans les algorithmes où les données sont compactées pour améliorer la bande passante mémoire ou le parallélisme.
- Optimise certaines boucles algorithmiques : Dans les algorithmes de calcul répétitifs sur des tableaux (comme les filtres convolutifs, les additions
de déplacements,...), SADD8 permet de remplacer jusqu'à quatre additions séquentielles par une seule instruction, réduisant le nombre total d'instructions exécutées.
- Attention au mélange des types : Il est essentiel de s'assurer que les données présentes dans les registres sources sont bien des valeurs signées de
8 bits. Une mauvaise interprétation (par exemple l'usage de données non signées ou mal alignées) peut conduire à des résultats incohérents, voire à des erreurs
difficiles à tracer dans les calculs.
Dernière mise à jour : Dimanche, le 12 novembre 2017