imm_atomic_iadd (sm5 - asm)
Ajout immédiat d’entier atomique à la mémoire. Retourne la valeur en mémoire avant l’ajout.
imm_atomic_iadd dst0[.single_component_mask], dst1, dstAddress[.swizzle], src0[.select_component] |
---|
Élément | Description |
---|---|
dst0 |
[in] Contient la valeur dans dst1 avant l’écriture. |
dst1 |
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] Naddress de la mémoire. |
src0 |
[in] Valeur à ajouter à dst1. |
Notes
Cette instruction effectue l’ajout d’un seul composant entier 32 bits de l’opérande src0 avec dst1 à 32 bits par adresse de composant dstAddress. Il n’est pas sensible à la signature.
Si dst1 est un u#, il a peut-être été déclaré comme brut, typé ou structuré. S’il est typé, il doit être déclaré comme UINT/SINT avec le format de ressource lié R32_UINT/_SINT.
Si dst1 a la valeur g#, il doit être déclaré comme brut ou structuré.
La valeur dans la mémoire dst1 avant l’ajout est retournée à dst0.
Le nombre de composants extraits de l’adresse est déterminé par la dimensionnalité de dst1.
L’ensemble de l’opération est effectué atomiquement.
Si l’appel du nuanceur est inactif, par exemple si le pixel a été ignoré plus tôt dans son exécution, ou si un appel de pixel/d’exemple n’existe que pour servir d’assistance à un pixel/échantillon réel pour les dérivés, cette instruction ne modifie pas du tout la mémoire dst1 , et la valeur retournée n’est pas définie.
L’adressage hors limites sur u# n’entraîne rien d’écrit en mémoire, sauf si l’u# est structuré et que le décalage d’octets dans le struct (deuxième composant de l’adresse) provoque l’accès hors limites, alors tout le contenu de l’UAV devient indéfini.
L’adressage hors limites sur u# ou g# entraîne le retour d’un résultat non défini au nuanceur dans dst0.
Cette instruction s’applique aux étapes suivantes du nuanceur :
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 du nuanceur pour le runtime Direct3D 11.1, 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 | Prise en charge |
---|---|
Modèle de nuanceur 5 | Oui |
Modèle de nuanceur 4.1 | non |
Modèle de nuanceur 4 | non |
Modèle de nuanceur 3 (DirectX HLSL) | non |
Shader Model 2 (DirectX HLSL) | non |
Modèle de nuanceur 1 (DirectX HLSL) | non |