mirror of
https://github.com/jart/cosmopolitan.git
synced 2024-05-09 23:22:41 +00:00
8bfd56b59e
Now that these functions are behind _COSMO_SOURCE there's no reason for having the ugly underscore anymore. To use these functions, you need to pass -mcosmo to cosmocc.
19 lines
587 B
C
19 lines
587 B
C
#ifdef _COSMO_SOURCE
|
|
#ifndef COSMOPOLITAN_LIBC_NEXGEN32E_BSR_H_
|
|
#define COSMOPOLITAN_LIBC_NEXGEN32E_BSR_H_
|
|
COSMOPOLITAN_C_START_
|
|
|
|
libcesque int bsr(int) pureconst;
|
|
libcesque int bsrl(long) pureconst;
|
|
libcesque int bsrll(long long) pureconst;
|
|
|
|
#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
|
|
#define bsr(x) (__builtin_clz(x) ^ (sizeof(int) * 8 - 1))
|
|
#define bsrl(x) (__builtin_clzl(x) ^ (sizeof(long) * 8 - 1))
|
|
#define bsrll(x) (__builtin_clzll(x) ^ (sizeof(long long) * 8 - 1))
|
|
#endif
|
|
|
|
COSMOPOLITAN_C_END_
|
|
#endif /* COSMOPOLITAN_LIBC_NEXGEN32E_BSR_H_ */
|
|
#endif /* _COSMO_SOURCE */
|