Date: Sun, 8 Dec 2019 04:36:43 +0000 (UTC) From: Justin Hibbits <jhibbits@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r355521 - in head: stand/powerpc/kboot sys/conf sys/powerpc/include Message-ID: <201912080436.xB84ahxV022820@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: jhibbits Date: Sun Dec 8 04:36:42 2019 New Revision: 355521 URL: https://svnweb.freebsd.org/changeset/base/355521 Log: powerpc: Use builtins for fls/flsl Summary: There's no need to use the fallback fls() and flsl() libkern functions when the PowerISA includes instructions that already do the bulk of the work. Take advantage of this through the GCC builtins __builtin_clz() and __builtin_clzl(). Reviewed by: luporl Differential Revision: https://reviews.freebsd.org/D22340 Modified: head/stand/powerpc/kboot/main.c head/sys/conf/files.powerpc head/sys/powerpc/include/cpufunc.h Modified: head/stand/powerpc/kboot/main.c ============================================================================== --- head/stand/powerpc/kboot/main.c Sun Dec 8 04:19:05 2019 (r355520) +++ head/stand/powerpc/kboot/main.c Sun Dec 8 04:36:42 2019 (r355521) @@ -31,7 +31,6 @@ __FBSDID("$FreeBSD$"); #include <sys/param.h> #include <fdt_platform.h> -#define _KERNEL #include <machine/cpufunc.h> #include "bootstrap.h" #include "host_syscall.h" Modified: head/sys/conf/files.powerpc ============================================================================== --- head/sys/conf/files.powerpc Sun Dec 8 04:19:05 2019 (r355520) +++ head/sys/conf/files.powerpc Sun Dec 8 04:36:42 2019 (r355521) @@ -88,8 +88,6 @@ libkern/divdi3.c optional powerpc | powerpcspe libkern/ffs.c standard libkern/ffsl.c standard libkern/ffsll.c standard -libkern/fls.c standard -libkern/flsl.c standard libkern/flsll.c standard libkern/lshrdi3.c optional powerpc | powerpcspe libkern/memcmp.c standard Modified: head/sys/powerpc/include/cpufunc.h ============================================================================== --- head/sys/powerpc/include/cpufunc.h Sun Dec 8 04:19:05 2019 (r355520) +++ head/sys/powerpc/include/cpufunc.h Sun Dec 8 04:36:42 2019 (r355521) @@ -212,6 +212,20 @@ get_pcpu(void) return (ret); } +#define HAVE_INLINE_FLS +static __inline __pure2 int +fls(int mask) +{ + return (mask ? 32 - __builtin_clz(mask) : 0); +} + +#define HAVE_INLINE_FLSL +static __inline __pure2 int +flsl(long mask) +{ + return (mask ? (8 * sizeof(long) - __builtin_clzl(mask)) : 0); +} + /* "NOP" operations to signify priorities to the kernel. */ static __inline void nop_prio_vlow(void)
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201912080436.xB84ahxV022820>