/* * libgcc/__clzsi2.c * * Returns the leading number of 0 bits in the argument */ #include #include uint32_t __clzsi2(uint32_t v) { int p = 31; if (v & 0xffff0000) { p -= 16; v >>= 16; } if (v & 0xff00) { p -= 8; v >>= 8; } if (v & 0xf0) { p -= 4; v >>= 4; } if (v & 0xc) { p -= 2; v >>= 2; } if (v & 0x2) { p -= 1; v >>= 1; } return p; }