Partager via


dmovc (sm5 - asm)

Déplacement conditionnel au niveau des composants.

dmovc[_sat] dest[.mask], src0[.swizzle], [-]src1[_abs][.swizzle], [-]src2[_abs][.swizzle],
Élément Description
Dest
[in] Destination de déplacement.
Si src0, alors dest = src1 else dest = src2.
src0
[in] Composants sur ant ant tester la condition.
src1
[in] Composants à déplacer si la condition est vraie.
src2
[in] Composants à déplacer si la condition est false.

Notes

L’exemple suivant montre comment utiliser cette instruction.

                if(the dest mask contains .xy)
                {
                    if(the first 32-bit component of src0, post-swizzle, 
                       has any bit set)
                    {
                        copy the first double from src1 (post swizzle)
                        into dest.xy
                    }
                    else
                    {
                        copy the first double from src2 (post swizzle)
                        into dest.xy
                    }
                }
                if(the dest mask contains .zw)
                {
                    if(the second 32-bit component of src0, post-swizzle, 
                       has any bit set)
                    {
                        copy the second double from src1 (post swizzle)
                        into dest.zw
                    }
                    else
                    {
                        copy the second double from src2 (post swizzle)
                        into dest.zw
                    }
                }

Les masques valides pour dest sont .xy, .zw, .xyzw.

Les swizzles valides pour src0 sont n’importe quoi. Les deux premiers composants post-swizzle sont utilisés pour mettre en retrait deux valeurs de condition 32 bits.

Les swizzles valides pour src1 et src2 contenant des doubles sont .xyzw, .xyxy, .zwxy, .zwzw. sont .xy, .zw et .xyzw.

Les mappages src suivants ci-dessous sont post-swizzle :

  • dest est un double vec2 across (x 32LSB, y 32MSB) et (z 32LSB, w 32MSB).
  • src0 est un vec2 32 bits/composant sur x et y (zw ignoré).
  • src1 est un double vec2 across (x 32LSB, y 32MSB) et (z 32LSB, w 32MSB).
  • src2 est un double vec2 across (x 32LSB, y 32MSB) et (z 32LSB, w 32MSB).

Les modificateurs sur src1 et src2, autres que swizzle, supposent que les données sont doubles. L’absence de modificateurs déplace les données sans modifier les bits.

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)