Share via


swapc (sm5 - asm)

Esegue uno scambio condizionale per componente dei valori tra due registri di input.

swapc dst0[.mask], dst1[.mask], src0[.swizzle], src1[.swizzle], src2[.swizzle]
Elemento Descrizione
dst0
[in] Registrarsi con maschere di scrittura arbitrarie nonempty. Deve essere diverso da dst1.
dst1
[in] Registrarsi con maschere di scrittura arbitrarie nonempty. Deve essere diverso da dst0.
src0
[in] Fornisce 4 condizioni. Un valore intero diverso da zero indica true.
src1
[in] Uno dei valori da scambiare.
src2
[in] Uno dei valori da scambiare.

Commenti

La codifica di questa istruzione tenta di esprimere in modo compatto più scambi condizionali paralleli di scalari in due registri a 4 componenti, con minore flessibilità nella disposizione delle coppie di numeri coinvolti nello scambio.

La scelta di registro e valore per src0, src1 e src2 non sono vincolati in qualsiasi modo, come movc.

La semantica di questa istruzione può essere descritta dalle operazioni equivalenti con l'istruzione movc . L'esempio peggiore è illustrato nell'esempio seguente, assicurandosi che i registri di destinazione non vengano aggiornati fino alla fine.

                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

È possibile scegliere come affrontare l'attività, se non direttamente. Ad esempio, lo stesso effetto può essere ottenuto da una sequenza di fino a 4 semplici scambi condizionali scalari o, come in precedenza, due istruzioni movc vettoriali, oltre a qualsiasi overhead per assicurarsi che i valori di origine non siano clobbered da operazioni precedenti in mezzo all'espansione.

Usare questa istruzione per l'ordinamento.

Questa istruzione si applica alle fasi dello shader seguenti:

Vertice Scafo Dominio Geometria Pixel Calcolo
X X X X X X

Modello minimo shader

Questa istruzione è supportata nei modelli di shader seguenti:

Modello di shader Supportato
Modello shader 5
Modello shader 4.1 no
Modello shader 4 no
Modello shader 3 (DirectX HLSL) no
Modello shader 2 (DirectX HLSL) no
Modello shader 1 (DirectX HLSL) no

Assembly modello shader 5 (DirectX HLSL)