firstbit (sm5 - asm)

Finds the first bit set in a number, either from LSB or MSB.

firstbit{_hi|_lo|_shi} dest[.mask], src0[.swizzle]

 

ItemDescription

dest

[in] The integer position of the first bit set in src0 starting from the LSB for firstbit_lo or MSB for firstbit_hi.

src0

[in] The input integer.

 

Remarks

This operation returns the integer position of the first bit set in the 32-bit input starting from the LSB for firstbit_lo or MSB for firstbit_hi. For example firstbit_lo on 0x00000001 returns 0. firstbit_hi on 0x10000000 returns 3.

firstbit_shi (s for signed) returns the first 0 from the MSB if the number is negative; otherwise it returns the first 1 from the MSB.

All variants of the instruction return ~0 (0xffffffff in 32-bit register) if no match is found.

Use this instruction to quickly enumerate set bits in a bitfield, or find the largest power of 2 in a number.

This instruction applies to the following shader stages:

VertexHullDomainGeometryPixelCompute
XX X XXX

 

Mimimum Shader Model

This instruction is supported in the following shader models:

Shader ModelSupported
Shader Model 5 yes
Shader Model 4.1 no
Shader Model 4 no
Shader Model 3 (DirectX HLSL) no
Shader Model 2 (DirectX HLSL) no
Shader Model 1 (DirectX HLSL) no

 

Related topics

Shader Model 5 Assembly (DirectX HLSL)

 

 

Show: