swapc (sm5 - asm)

執行兩個輸入暫存器之間值的元件型條件式交換。

swapc dst0[.mask], dst1[.mask], src0[.swizzle], src1[.swizzle], src2[.swizzle]
項目 描述
dst0
[in]使用任意無空寫入遮罩註冊。 必須與 dst1不同。
dst1
[in]使用任意無空寫入遮罩註冊。 必須與 dst0不同。
src0
[in]提供 4 個條件。 非零整數值表示 true
src1
[in]要交換的其中一個值。
src2
[in]要交換的其中一個值。

備註

此指令的編碼方式會嘗試在兩個 4 元件暫存器之間精簡表達多個平行條件式交換,並稍微彈性地排列涉及交換的數位組。

src0src1 和 src2的註冊和值選擇不受限制,例如movc

您可以使用 movc 指令的對等作業來描述此指令的語意。 下列範例顯示最差的情況,請確定目的地暫存器在結束之前不會更新。

                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

您可以選擇如何直接處理工作。 例如,相同效果可以透過最多 4 個簡單純量條件交換的序列來達成,或如上所示,兩個向量 movc 指令,再加上任何額外負荷,以確保先前作業在擴充時不會雜亂來源值。

使用此指令進行排序。

本指示適用于下列著色器階段:

頂點 船體 網域 幾何形狀 像素 計算
X X X X X X

最小著色器模型

下列著色器模型中支援此指示:

著色器模型 支援
著色器模型 5
著色器模型 4.1
著色器模型 4
著色器模型 3 (DirectX HLSL)
著色器模型 2 (DirectX HLSL)
著色器模型 1 (DirectX HLSL)

著色器模型 5 元件 (DirectX HLSL)