ibfe (sm5 - asm)

给定数字中的位范围,将这些位移动到 LSB 并签名扩展该范围的 MSB。

ibfe dest[.mask], src0[.swizzle], src1[.swizzle], src2[.swizzle]
说明
dest
[in]操作结果的地址。
src0
[in]位域宽度。
src1
[in]位域偏移量。
src2
[in]要移动的值。

备注

src0 的 LSB 5 位提供位域宽度 (0-31) 。

src1 的 LSB 5 位提供位域偏移量 (0-31) 。

以下示例演示如何使用此指令。

        Given width, offset:
                if( width == 0 )
                {
                    dest = 0
                }
                else if( width + offset < 32 )
                {
                    shl dest, src2, 32-(width+offset)
                    ishr dest, dest, 32-width
                }
                else
                {
                    ishr dest, src2, offset
                }

使用此指令解压缩带符号整数或标志。

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

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

最小着色器模型

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

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

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