mirror of
https://github.com/opnsense/src.git
synced 2026-05-28 04:12:45 -04:00
illumos compat: use flsl/flsll for highbit/highbit64
This is a micro optimization. The upstream code uses the binary search. Differential Revision: https://reviews.freebsd.org/D2839 Reviewed by: delphij, mav MFC after: 15 days
This commit is contained in:
parent
8fe344fa48
commit
1fa1d4a651
1 changed files with 15 additions and 0 deletions
|
|
@ -32,6 +32,13 @@
|
|||
|
||||
#include <sys/param.h>
|
||||
#include <sys/isa_defs.h>
|
||||
#ifdef __FreeBSD__
|
||||
#ifdef _KERNEL
|
||||
#include <machine/cpufunc.h>
|
||||
#else
|
||||
#include <strings.h>
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
|
|
@ -382,6 +389,9 @@ extern unsigned char bcd_to_byte[256];
|
|||
static __inline int
|
||||
highbit(ulong_t i)
|
||||
{
|
||||
#ifdef __FreeBSD__
|
||||
return (flsl(i));
|
||||
#else
|
||||
register int h = 1;
|
||||
|
||||
if (i == 0)
|
||||
|
|
@ -407,6 +417,7 @@ highbit(ulong_t i)
|
|||
h += 1;
|
||||
}
|
||||
return (h);
|
||||
#endif
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
@ -416,6 +427,9 @@ highbit(ulong_t i)
|
|||
static __inline int
|
||||
highbit64(uint64_t i)
|
||||
{
|
||||
#ifdef __FreeBSD__
|
||||
return (flsll(i));
|
||||
#else
|
||||
int h = 1;
|
||||
|
||||
if (i == 0)
|
||||
|
|
@ -439,6 +453,7 @@ highbit64(uint64_t i)
|
|||
h += 1;
|
||||
}
|
||||
return (h);
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
|
|
|||
Loading…
Reference in a new issue