swapc (sm5 – asm)

Führt einen komponentenbasierten bedingten Austausch der Werte zwischen zwei Eingaberegistern durch.

swapc dst0[.mask], dst1[.mask], src0[.swizzle], src1[.swizzle], src2[.swizzle]
Element BESCHREIBUNG
dst0
[in] Registrieren Sie sich mit willkürlichen, nicht erlösenden Schreibmasken. Muss sich von dst1 unterscheiden.
dst1
[in] Registrieren Sie sich mit willkürlichen, nicht erlösenden Schreibmasken. Muss sich von dst0 unterscheiden.
src0
[in] Stellt vier Bedingungen bereit. Ein ganzzahliger Wert ohne Zero bedeutet true.
src1
[in] Einer der zu tauschenden Werte.
src2
[in] Einer der zu tauschenden Werte.

Hinweise

Die Codierung dieser Anweisung versucht, mehrere parallele bedingte Tausche von Skalaren über zwei 4-Komponenten-Register kompakt auszudrücken, wobei die Anordnung der Zahlenpaare, die am Austausch beteiligt sind, geringfügig flexibel ist.

Die Auswahl von Register und Wert für src0, src1 und src2 ist wie movc in keiner Weise eingeschränkt.

Die Semantik dieser Anweisung kann durch die entsprechenden Vorgänge mit der movc-Anweisung beschrieben werden. Der schlechteste Fall wird im folgenden Beispiel gezeigt, indem Sie sicherstellen, dass Zielregister bis zum Ende nicht aktualisiert werden.

                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

Sie können auswählen, wie Sie die Aufgabe angehen möchten, wenn nicht direkt. Beispielsweise kann der gleiche Effekt durch eine Sequenz von bis zu 4 einfachen skalaren bedingten Swaps oder wie oben, zwei Vektor-Movc-Anweisungen und zusätzlichem Mehraufwand erzielt werden, um sicherzustellen, dass die Quellwerte nicht durch frühere Vorgänge in der Mitte der Erweiterung geklebt werden.

Verwenden Sie diese Anweisung zum Sortieren.

Diese Anweisung gilt für die folgenden Shaderphasen:

Scheitelpunkt Hull Domain Geometrie Pixel Compute
X X X X X X

Minimales Shadermodell

Diese Anweisung wird in den folgenden Shadermodellen unterstützt:

Shadermodell Unterstützt
Shadermodell 5 ja
Shadermodell 4.1 Nein
Shadermodell 4 Nein
Shadermodell 3 (DirectX HLSL) Nein
Shadermodell 2 (DirectX HLSL) Nein
Shadermodell 1 (DirectX HLSL) Nein

Shadermodell 5-Assembly (DirectX HLSL)