findMSB
Keywords: findMSB, NVIDIA, NVIDIA Cg Toolkit, Cg Toolkit, Shader, Shader Programming, GPU Shader Programming, GPU Program

> ## Name

> findMSB - return the number of the most significant bit.

> ## Synopsis

>     int  findMSB(int  x)
>     int2 findMSB(int2 x)
>     int3 findMSB(int3 x)
>     int4 findMSB(int4 x)

>     int  findMSB(uint  x)
>     int2 findMSB(uint2 x)
>     int3 findMSB(uint3 x)
>     int4 findMSB(uint4 x)

> ## Parameters

> x
>   Bitfield to find MSB in.

> ## Description

> Returns the bit number of the most significant bit (value of 1) in the bitfield x. If the number is negative then the position of the first zero bit is returned. If no bits have the value 1 (or 0 in the negative case) then -1 is returned.

> ## Reference Implementation

> findMSB for an int bitfield can be implemented like this:

>     int findMSB(int x)
>     {
>       int i;
>       int mask;
>       int res = -1;
>       if (x < 0) x ~= x;
>       for(i = 0; i < 32; i++) {
>         mask = 0x80000000 >> i;
>         if (x & mask) {
>           res = 31 - i;
>           break;
>         }
>       }
>       return res;
>     }

> ## Profile Support

> findMSB is supported in gp5 and hlsl11 profiles.

> ## See Also

>       http://www.opengl.org/registry/specs/ARB/gpu_shader5.txt

> bitfieldExtract, bitfieldInsert, bitfieldReverse, bitCount and findLSB