bfi (sm5 - asm)

给定一个数字的 LSB 的位范围,请将该位数置于任何偏移量的另一个数字中。

bfi dest[.mask], src0[.swizzle], src1[.swizzle], src2[.swizzle], src3[.swizzle]
说明
dest
[in]结果的地址。
src0
[in]要从 src2 获取的位域宽度。
src1
[in]用于替换 src3 中的位的位域偏移量。
src2
[in]从中获取位的数目。
src3
[in]要替换的位数。

备注

Src0 的 LSB 5 位提供从 src2 获取的位域宽度 (0-31) 。

LSB 5 位 src1 提供位域偏移量 (0-31) 开始替换从 src3 读取的数字中的位。

Given width, offset:
                bitmask = (((1 << width)-1) << offset) & 0xffffffff
                dest = ((src2 << offset) & bitmask) | (src3 & ~bitmask)

此指令用于打包整数或标志。

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

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

最小着色器模型

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

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

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