1 /* 2 * Copyright (c) 2025 Robert Clausecker <fuz@FreeBSD.org> 3 * 4 * SPDX-License-Identifier: BSD-2-Clause 5 */ 6 7 #define FUNCSTEM stdc_first_leading_one 8 #define MKREFFUNC(name, type) \ 9 static unsigned \ 10 name(type value) \ 11 { \ 12 type bit = 1; \ 13 unsigned pos = 1; \ 14 \ 15 if (value == 0) \ 16 return (0); \ 17 \ 18 while ((type)(bit << 1) != 0) \ 19 bit <<= 1; \ 20 \ 21 while ((bit & value) == 0) { \ 22 bit >>= 1; \ 23 pos++; \ 24 } \ 25 \ 26 return (pos); \ 27 } 28 29 #include "stdbit-test-framework.c" 30