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 de sélectionner les octets de chaque opérande en fonction de l'état des drapeaux GE de APSR.
Remarques
- Utilise les drapeaux GE pour la sélection : L'instruction SEL se base sur les quatre bits GE (Greater than or Equal) du registre APSR pour
décider quels octets proviennent de Rn et lesquels viennent de Rm. Ces bits sont généralement définis par des instructions SIMD comme SSUB8, UADD8,...
- Opération parallèle au niveau octet : Cette instruction effectue un traitement en parallèle sur les quatre octets du registre. Pour chaque octet, si
le bit GE correspondant est à 1, Rd reçoit l'octet de Rn, sinon celui de Rm. Cela la rend très efficace pour des filtrages conditionnels fins.
- Nécessite un contexte de mise à jour des bits GE : L'usage de SEL n'a de sens que si les bits GE ont été mis à jour auparavant par une instruction
appropriée. Sans cette mise à jour préalable, l'instruction peut produire un résultat imprévisible ou non pertinent.
- Utile pour le traitement SIMD conditionnel : Grâce à sa logique conditionnelle vectorisée, SEL est particulièrement adaptée à des scénarios SIMD
(Single Instruction, Multiple Data) où l'on veut combiner les résultats de deux opérations selon des critères établis auparavant.
- Optimise des traitements conditionnels : L'instruction évite l'usage de branches conditionnelles explicites, ce qui peut améliorer les performances en
réduisant le nombre de sauts et en maintenant un flux d'exécution linéaire dans le pipeline.
- Idéale pour l'algèbre conditionnelle sur octets : Elle peut servir à implémenter des fonctions de maximum conditionnel, sélection de masque, ou fusion
d'octets sans devoir coder de multiples instructions de test et de déplacement. Cela simplifie considérablement certains algorithmes de bas niveau.
- Peut être détournée pour manipuler des tableaux : Dans des cas avancés, SEL peut être utilisée pour sélectionner dynamiquement des éléments dans des
structures tabulaires codées en octets, comme des cartes de pixels ou des structures compressées, selon des critères bit à bit.
- Peut être source de confusion si les GE sont mal compris : Les développeurs peu familiers avec les drapeaux GE peuvent mal interpréter le fonctionnement
de SEL, croyant à tort qu'il s'agit d'une comparaison directe entre Rn et Rm. Cela peut entraîner des résultats erronés s'ils ne contrôlent pas les conditions de
sélection.
Dernière mise à jour : Dimanche, le 12 novembre 2017