swapc (sm5 – asm)

Executa uma troca condicional em termos de componente dos valores entre dois registros de entrada.

swapc dst0[.mask], dst1[.mask], src0[.swizzle], src1[.swizzle], src2[.swizzle]
Item Descrição
dst0
[in] Registre-se com máscaras de gravação nãompty arbitrárias. Deve ser diferente de dst1.
dst1
[in] Registre-se com máscaras de gravação nãompty arbitrárias. Deve ser diferente de dst0.
src0
[in] Fornece 4 condições. Um valor inteiro diferente de zero significa true.
src1
[in] Um dos valores a serem trocados.
src2
[in] Um dos valores a serem trocados.

Comentários

A codificação desta instrução tenta expressar compactamente várias trocas condicionais paralelas de escalares em dois registros de 4 componentes, com pequena flexibilidade na disposição dos pares de números envolvidos na troca.

A escolha do registro e do valor para src0, src1 e src2 é irrestrita de qualquer maneira, como movc.

A semântica dessa instrução pode ser descrita pelas operações equivalentes com a instrução movc . O pior caso é mostrado no exemplo a seguir, certificando-se de que os registros de destino não sejam atualizados até o final.

                swapc dst0[.mask], 
                      dst1[.mask],
                      src0[.swizzle],
                      src1[.swizzle],
                      src2[.swizzle]

                expands to:

                movc temp[dst0 s mask], 
                     src0[.swizzle], 
                     src2[.swizzle], src1[.swizzle]

                movc dst1[.mask], 
                     src0[.swizzle], 
                     src1[.swizzle], src2[.swizzle]

                mov  dst0.mask, temp

Você pode escolher como lidar com a tarefa, se não diretamente. Por exemplo, o mesmo efeito pode ser obtido por uma sequência de até 4 trocas condicionais escalares simples ou, como acima, duas instruções de movc vetor, além de qualquer sobrecarga para garantir que os valores de origem não sejam bloqueados por operações anteriores no meio da expansão.

Use esta instrução para classificação.

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)