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