xref: /netbsd-src/common/lib/libc/string/ffsll.c (revision 235f3e57fd2459ebdbc6fa88e787c946b0d4ba35)
1*235f3e57Sriastradh /*	$NetBSD: ffsll.c,v 1.1 2024/11/01 18:35:12 riastradh Exp $	*/
2*235f3e57Sriastradh 
3*235f3e57Sriastradh /*-
4*235f3e57Sriastradh  * Copyright (c) 2024 The NetBSD Foundation, Inc.
5*235f3e57Sriastradh  * All rights reserved.
6*235f3e57Sriastradh  *
7*235f3e57Sriastradh  * Redistribution and use in source and binary forms, with or without
8*235f3e57Sriastradh  * modification, are permitted provided that the following conditions
9*235f3e57Sriastradh  * are met:
10*235f3e57Sriastradh  * 1. Redistributions of source code must retain the above copyright
11*235f3e57Sriastradh  *    notice, this list of conditions and the following disclaimer.
12*235f3e57Sriastradh  * 2. Redistributions in binary form must reproduce the above copyright
13*235f3e57Sriastradh  *    notice, this list of conditions and the following disclaimer in the
14*235f3e57Sriastradh  *    documentation and/or other materials provided with the distribution.
15*235f3e57Sriastradh  *
16*235f3e57Sriastradh  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
17*235f3e57Sriastradh  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
18*235f3e57Sriastradh  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19*235f3e57Sriastradh  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
20*235f3e57Sriastradh  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
21*235f3e57Sriastradh  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
22*235f3e57Sriastradh  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
23*235f3e57Sriastradh  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
24*235f3e57Sriastradh  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
25*235f3e57Sriastradh  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
26*235f3e57Sriastradh  * POSSIBILITY OF SUCH DAMAGE.
27*235f3e57Sriastradh  */
28*235f3e57Sriastradh 
29*235f3e57Sriastradh #include <sys/cdefs.h>
30*235f3e57Sriastradh __RCSID("$NetBSD: ffsll.c,v 1.1 2024/11/01 18:35:12 riastradh Exp $");
31*235f3e57Sriastradh 
32*235f3e57Sriastradh #include <sys/bitops.h>
33*235f3e57Sriastradh 
34*235f3e57Sriastradh #include <limits.h>
35*235f3e57Sriastradh #include <strings.h>
36*235f3e57Sriastradh 
37*235f3e57Sriastradh #undef	ffsll			/* paranoia */
38*235f3e57Sriastradh 
39*235f3e57Sriastradh int
40*235f3e57Sriastradh ffsll(long long x)
41*235f3e57Sriastradh {
42*235f3e57Sriastradh 
43*235f3e57Sriastradh 	__CTASSERT(CHAR_BIT*sizeof(x) == 64);
44*235f3e57Sriastradh 	return ffs64(x);
45*235f3e57Sriastradh }
46