Partager via


swapc (sm5 - asm)

Effectue un échange conditionnel au niveau des composants des valeurs entre deux registres d’entrée.

swapc dst0[.mask], dst1[.mask], src0[.swizzle], src1[.swizzle], src2[.swizzle]
Élément Description
dst0
[in] Inscrivez-vous avec des masques d’écriture non vide arbitraires. Doit être différent de dst1.
dst1
[in] Inscrivez-vous avec des masques d’écriture non vide arbitraires. Doit être différent de dst0.
src0
[in] Fournit 4 conditions. Une valeur entière différente de zéro signifie true.
src1
[in] Une des valeurs à échanger.
src2
[in] Une des valeurs à échanger.

Remarques

L’encodage de cette instruction tente d’exprimer de manière compacte plusieurs échanges conditionnels parallèles de scalaires sur deux registres à 4 composants, avec une flexibilité mineure dans l’organisation des paires de nombres impliquées dans l’échange.

Le choix du registre et de la valeur pour src0, src1 et src2 ne sont aucunement contraints, comme movc.

La sémantique de cette instruction peut être décrite par les opérations équivalentes avec l’instruction movc . Le pire cas est illustré dans l’exemple suivant, ce qui garantit que les registres de destination ne sont pas mis à jour avant la fin.

                swapc dst0[.mask], 
                      dst1[.mask],
                      src0[.swizzle],
                      src1[.swizzle],
                      src2[.swizzle]

                expands to:

                movc temp[dst0 s mask], 
                     src0[.swizzle], 
                     src2[.swizzle], src1[.swizzle]

                movc dst1[.mask], 
                     src0[.swizzle], 
                     src1[.swizzle], src2[.swizzle]

                mov  dst0.mask, temp

Vous pouvez choisir comment vous attaquer à la tâche, si ce n’est pas directement. Par exemple, le même effet peut être obtenu par une séquence de jusqu’à 4 échanges conditionnels scalaires simples, ou comme ci-dessus, deux instructions movc vectorielles, plus toute surcharge pour s’assurer que les valeurs sources ne sont pas clobées par des opérations antérieures au milieu de l’expansion.

Utilisez cette instruction pour le tri.

Cette instruction s’applique aux étapes de nuanceur suivantes :

Sommet Coque Domain Géométrie Pixel Compute
X X X X X X

Modèle de nuanceur minimal

Cette instruction est prise en charge dans les modèles de nuanceur suivants :

Modèle de nuanceur Pris en charge
Modèle de nuanceur 5 Oui
Modèle de nuanceur 4.1 Non
Modèle de nuanceur 4 Non
Nuanceur modèle 3 (DirectX HLSL) Non
Nuanceur modèle 2 (DirectX HLSL) Non
Nuanceur modèle 1 (DirectX HLSL) Non

Assembly de modèle de nuanceur 5 (DirectX HLSL)