dmovc (sm5 – asm)

Movimentação condicional em termos de componente.

dmovc[_sat] dest[.mask], src0[.swizzle], [-]src1[_abs][.swizzle], [-]src2[_abs][.swizzle],
Item Descrição
Dest
[in] O destino de movimentação.
Se src0, dest = src1 else dest = src2.
src0
[in] Os componentes em que testar a condição.
src1
[in] Os componentes a serem movidos se a condição for verdadeira.
src2
[in] Os componentes a serem movidos se a condição for falsa.

Comentários

O exemplo a seguir mostra como usar esta instrução.

                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
                    }
                }

As máscaras válidas para dest são .xy, .zw, .xyzw.

Os swizzles válidos para src0 são qualquer coisa. Os dois primeiros componentes pós-swizzle são usados para recuar dois valores de condição de 32 bits.

Os swizzles válidos para src1 e src2 que contêm duplos são .xyzw, .xyxy, .zwxy, .zwzw. são .xy, .zw e .xyzw.

Os seguintes mapeamentos src abaixo são pós-swizzle:

  • dest é um vec2 duplo entre (x 32LSB, y 32MSB) e (z 32LSB, w 32MSB).
  • src0 é um vec2 de 32 bits/componente entre x e y (zw ignorado).
  • src1 é um vec2 duplo entre (x 32LSB, y 32MSB) e (z 32LSB, w 32MSB).
  • src2 é um vec2 duplo entre (x 32LSB, y 32MSB) e (z 32LSB, w 32MSB).

Os modificadores em src1 e src2, além de swizzle, pressupõem que os dados sejam duplos. A ausência de modificadores move dados sem alterar bits.

Esta instrução se aplica aos seguintes estágios de sombreador:

Vértice Casco Domínio Geometry Pixel Computação
X X X X X X

Modelo de sombreador mínimo

Esta instrução tem suporte nos seguintes modelos de sombreador:

Modelo de Sombreador Com suporte
Modelo de sombreador 5 sim
Modelo de sombreador 4.1 não
Modelo de sombreador 4 não
Modelo de Sombreador 3 (DirectX HLSL) não
Modelo de Sombreador 2 (DirectX HLSL) não
Modelo de Sombreador 1 (DirectX HLSL) não

Assembly do Modelo de Sombreador 5 (DirectX HLSL)