dmovc (sm5 - asm)

Déplacement conditionnel avec les composants.

dmovc[_sat] dest[.mask], src0[.swizzle], [-]src1[_abs][.swizzle], [-]src2[_abs][.swizzle],
Élément Description
Dest
[in] Destination de déplacement.
Si src0, puis destsrc1 = else destsrc2 = .
src0
[in] Composants à tester par rapport à 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 tout. 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 sur (x 32LSB, y 32MSB) et (z 32LSB, w 32MSB).
  • src0 est un vec2 bits/composant vec2 sur x et y (zw ignoré).
  • src1 est un double vec2 sur (x 32LSB, y 32MSB) et (z 32LSB, w 32MSB).
  • src2 est un double vec2 sur (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 nuanceurs 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
Nuanceur Modèle 3 (DirectX HLSL) non
Nuanceur modèle 2 (DirectX HLSL) non
Nuanceur modèle 1 (DirectX HLSL) non

Assembly nuanceur 5 (DirectX HLSL)