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、src1 和 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 指令)以及任何开销来实现相同的效果,以确保源值不会在扩展期间被早期操作占用。
使用此说明进行排序。
此指令适用于以下着色器阶段:
顶点 | 外壳 | 域 | Geometry | 像素 | 计算 |
---|---|---|---|---|---|
X | X | X | X | X | X |
最小着色器模型
以下着色器模型中支持此指令:
着色器模型 | 支持 |
---|---|
着色器模型 5 | 是 |
着色器模型 4.1 | 否 |
着色器模型 4 | 否 |
着色器模型 3 (DirectX HLSL) | 否 |
着色器模型 2 (DirectX HLSL) | 否 |
着色器模型 1 (DirectX HLSL) | 否 |