swapc (SM5-ASM)

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

swapc dest0 [ . Mask ] , dest1 [ . Mask ] , src0 [ . Swizzle ] , src1 [ . Swizzle ] , src2 [ . Swizzle]
Élément Description
dest0
[dans ] Register avec des masques d’écriture non vides arbitraires. Doit être différent de dest1.
dest1
[dans ] Register avec des masques d’écriture non vides arbitraires. Doit être différent de dest0.
src0
[dans ] fournit 4 conditions. Une valeur entière différente de zéro signifie true.
src1
[dans l' ] une des valeurs à permuter.
src2
[dans l' ] une des valeurs à permuter.

Notes

L’encodage de cette instruction tente d’exprimer compactement plusieurs swaps conditionnels parallèles de scalaires dans des registres de composants de 2 4, avec une flexibilité mineure dans la disposition des paires de nombres impliquées dans l’échange.

Le choix du Registre et de la valeur pour src0, src1 et src2 sont sans contrainte, comme MOVC.

La sémantique de cette instruction peut être décrite par les opérations équivalentes à l’aide de l’instruction MOVC . Le pire cas est illustré dans l’exemple suivant, en s’assurant que les registres de destination ne sont pas mis à jour jusqu’à la fin.

                swapc dest0[.mask], 
                      dest1[.mask],
                      src0[.swizzle],
                      src1[.swizzle],
                      src2[.swizzle]

                expands to:

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

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

                mov  dest0.mask, temp

Vous pouvez choisir le mode de traitement de la tâche, si ce n’est pas direct. Par exemple, le même effet peut être obtenu à l’aide d’une séquence allant jusqu’à 4 swaps conditionnels scalaires simples ou, comme ci-dessus, deux instructions MOVC de vecteurs, plus toute surcharge pour s’assurer que les valeurs sources ne sont pas écrasées par des opérations antérieures au milieu de l’expansion.

Utilisez cette instruction pour le tri.

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

Sommet Forme 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 Prise en charge
Shader, modèle 5 Oui
Modèle de nuanceur 4,1 non
Nuanceur modèle 4 non
Shader Model 3 (DirectX HLSL) non
Shader Model 2 (DirectX HLSL) non
Shader Model 1 (DirectX HLSL) non

Assembly modèle 5 du nuanceur (DirectX HLSL)