Share via


atomic_cmp_store (sm5 - asm)

Atomic comparez et écrivez dans la mémoire.

atomic_cmp_store dest, dstAddress[.swizzle], src0[.select_component], src1[.select_component]
Élément Description
Dest
[in] Composants à comparer avec src0. Cette valeur doit être une vue d’accès non ordonnée (UAV) (u#). Dans le nuanceur de calcul, il peut également s’agir de la mémoire partagée du groupe de threads (g#).
dstAddress
[in] Adresse mémoire.
src0
[in] Valeur 32 bits à comparer à dest.
src1
[in] Valeur à écrire en mémoire si les valeurs comparées sont identiques.

Remarques

Cette instruction effectue une comparaison de valeur 32 bits de composant unique de l’opérande src0 avec dest à 32 bits par adresse de composant dstAddress.

Si les valeurs comparées sont identiques, la valeur 32 bits à composant unique dans src1 est écrite dans la mémoire de destination. Sinon, la destination n’est pas modifiée.

L’ensemble de l’opération de comparaison et d’écriture est effectuée de manière atomique.

Si dest est un u#, il peut être déclaré comme brut, typé ou structuré. S’il est tapé, il doit être déclaré comme UINT/SINT avec le format de ressource lié R32_UINT/_SINT.

Si dest a la valeur g#, il doit être déclaré comme brut ou structuré.

Le nombre de composants extraits de l’adresse est déterminé par la dimensionnalité de dest u# ou g#.

Rien n’est retourné au nuanceur.

Si l’appel du nuanceur est inactif, par exemple si le pixel a été ignoré précédemment dans son exécution, ou si une instruction pixel/exemple ne modifie pas la mémoire dest du tout (en mode silencieux).

L’adressage hors limites sur u# entraîne l’écriture de rien dans la mémoire, sauf si l’u# est structuré et que le décalage d’octet dans le struct (deuxième composant de l’adresse) entraîne l’accès hors limites, alors le contenu entier de l’UAV devient non défini.

Les limites de l’adressage sur g# (les limites de ce g# particulier, par opposition à toute la mémoire partagée) entraînent l’indisponibilité de tout le contenu de toute la mémoire partagée.

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

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

Étant donné que les UAV sont disponibles à toutes les étapes du nuanceur pour Direct3D 11.1, cette instruction s’applique à toutes les étapes de nuanceur pour le runtime Direct3D 11.1, qui est disponible à partir de Windows 8.

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)