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 |