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 分量寄存器之间紧凑地表达标量的多个并行条件交换,在交换所涉及的数字对的排列方面具有较小的灵活性。

src0、src1src2 的寄存器和值的选择不受任何限制,例如 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 指令)以及任何开销来实现相同的效果,以确保源值不会在扩展期间被早期操作占用。

使用此说明进行排序。

此指令适用于以下着色器阶段:

顶点 外壳 Geometry 像素 计算
X X X X X X

最小着色器模型

以下着色器模型中支持此指令:

着色器模型 支持
着色器模型 5
着色器模型 4.1
着色器模型 4
着色器模型 3 (DirectX HLSL)
着色器模型 2 (DirectX HLSL)
着色器模型 1 (DirectX HLSL)

着色器模型 5 程序集 (DirectX HLSL)