provide fast versions of ffsl and flsl for i386; ffsll and flsll for amd64

Reviewed by:	jhb
MFC after:	10 days
X-MFC note:	consider thirdparty modules depending on these symbols
Sponsored by:	HybridCluster
This commit is contained in:
Andriy Gapon 2014-02-14 15:18:37 +00:00
parent cb03508f58
commit f25e50cf0b
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=261891
10 changed files with 39 additions and 5 deletions

View File

@ -154,6 +154,14 @@ ffsl(long mask)
return (mask == 0 ? mask : (int)bsfq((u_long)mask) + 1);
}
#define HAVE_INLINE_FFSLL
static __inline int
ffsll(long long mask)
{
return (ffsl((long)mask));
}
#define HAVE_INLINE_FLS
static __inline int
@ -170,6 +178,14 @@ flsl(long mask)
return (mask == 0 ? mask : (int)bsrq((u_long)mask) + 1);
}
#define HAVE_INLINE_FLSLL
static __inline int
flsll(long long mask)
{
return (flsl((long)mask));
}
#endif /* _KERNEL */
static __inline void

View File

@ -3025,7 +3025,6 @@ libkern/arc4random.c standard
libkern/bcd.c standard
libkern/bsearch.c standard
libkern/crc32.c standard
libkern/flsll.c standard
libkern/fnmatch.c standard
libkern/iconv.c optional libiconv
libkern/iconv_converter_if.m optional libiconv

View File

@ -89,6 +89,7 @@ libkern/divdi3.c standard
libkern/ffsl.c standard
libkern/fls.c standard
libkern/flsl.c standard
libkern/flsll.c standard
libkern/lshrdi3.c standard
libkern/moddi3.c standard
libkern/qdivrem.c standard

View File

@ -536,8 +536,7 @@ kern/kern_clocksource.c standard
kern/imgact_aout.c optional compat_aout
kern/imgact_gzip.c optional gzip
libkern/divdi3.c standard
libkern/ffsl.c standard
libkern/flsl.c standard
libkern/flsll.c standard
libkern/memmove.c standard
libkern/memset.c standard
libkern/moddi3.c standard

View File

@ -120,6 +120,7 @@ libkern/bcmp.c standard
libkern/ffsl.c standard
libkern/fls.c standard
libkern/flsl.c standard
libkern/flsll.c standard
libkern/ia64/__divdi3.S standard
libkern/ia64/__divsi3.S standard
libkern/ia64/__moddi3.S standard

View File

@ -56,6 +56,7 @@ kern/subr_dummy_vdso_tc.c standard
libkern/ffsl.c standard
libkern/fls.c standard
libkern/flsl.c standard
libkern/flsll.c standard
libkern/memmove.c standard
libkern/cmpdi2.c optional mips | mipsel
libkern/ucmpdi2.c optional mips | mipsel

View File

@ -208,8 +208,7 @@ kern/kern_clocksource.c standard
kern/imgact_aout.c optional compat_aout
kern/imgact_gzip.c optional gzip
libkern/divdi3.c standard
libkern/ffsl.c standard
libkern/flsl.c standard
libkern/flsll.c standard
libkern/memmove.c standard
libkern/memset.c standard
libkern/moddi3.c standard

View File

@ -80,6 +80,7 @@ libkern/ffs.c standard
libkern/ffsl.c standard
libkern/fls.c standard
libkern/flsl.c standard
libkern/flsll.c standard
libkern/lshrdi3.c optional powerpc
libkern/memmove.c standard
libkern/memset.c standard

View File

@ -68,6 +68,7 @@ libkern/ffs.c standard
libkern/ffsl.c standard
libkern/fls.c standard
libkern/flsl.c standard
libkern/flsll.c standard
libkern/memmove.c standard
sparc64/central/central.c optional central
sparc64/ebus/ebus.c optional ebus

View File

@ -184,6 +184,14 @@ ffs(int mask)
return (mask == 0 ? mask : (int)bsfl((u_int)mask) + 1);
}
#define HAVE_INLINE_FFSL
static __inline int
ffsl(long mask)
{
return (ffs((int)mask));
}
#define HAVE_INLINE_FLS
static __inline int
@ -192,6 +200,14 @@ fls(int mask)
return (mask == 0 ? mask : (int)bsrl((u_int)mask) + 1);
}
#define HAVE_INLINE_FLSL
static __inline int
flsl(long mask)
{
return (fls((int)mask));
}
#endif /* _KERNEL */
static __inline void