diff --git a/lib/dns/qp.c b/lib/dns/qp.c index 3f10bd04a4..aa717c1301 100644 --- a/lib/dns/qp.c +++ b/lib/dns/qp.c @@ -495,10 +495,10 @@ static dns_qpcell_t next_capacity(uint32_t prev_capacity, uint32_t size) { /* * Request size was floored at 2 because builtin_clz used to be 0. - * We keep this behavior because ISC_LEADING_ZEROS(0) = 32. + * We keep this behavior because stdc_leading_zeros(0) = 32. */ size = ISC_MAX3(size, prev_capacity, 2U); - uint32_t log2 = 32U - ISC_LEADING_ZEROS(size - 1U); + uint32_t log2 = 32U - stdc_leading_zeros(size - 1U); return 1U << ISC_CLAMP(log2, QP_CHUNK_LOG_MIN, QP_CHUNK_LOG_MAX); } diff --git a/lib/dns/qp_p.h b/lib/dns/qp_p.h index a5dce44d84..ef9f1e3362 100644 --- a/lib/dns/qp_p.h +++ b/lib/dns/qp_p.h @@ -753,7 +753,7 @@ static inline dns_qpweight_t branch_count_bitmap_before(dns_qpnode_t *n, dns_qpshift_t bit) { uint64_t mask = (1ULL << bit) - 1 - TAG_MASK; uint64_t bitmap = branch_index(n) & mask; - return (dns_qpweight_t)ISC_POPCOUNT(bitmap); + return (dns_qpweight_t)stdc_count_zeros(bitmap); } /* diff --git a/lib/dns/rpz.c b/lib/dns/rpz.c index 3333478e20..8827a00c3c 100644 --- a/lib/dns/rpz.c +++ b/lib/dns/rpz.c @@ -1094,7 +1094,7 @@ diff_keys(const dns_rpz_cidr_key_t *key1, dns_rpz_prefix_t prefix1, for (i = 0; bit < maxbit; i++, bit += DNS_RPZ_CIDR_WORD_BITS) { delta = key1->w[i] ^ key2->w[i]; if (delta != 0) { - bit += ISC_LEADING_ZEROS(delta); + bit += stdc_leading_zeros(delta); break; } } diff --git a/lib/isc/histo.c b/lib/isc/histo.c index 25febb55c9..aac7081db6 100644 --- a/lib/isc/histo.c +++ b/lib/isc/histo.c @@ -181,7 +181,7 @@ static inline uint value_to_key(const isc_histo_t *hg, uint64_t value) { /* ensure that denormal numbers are all in chunk zero */ uint64_t chunked = value | CHUNKSIZE(hg); - int clz = ISC_LEADING_ZEROS(chunked); + int clz = stdc_leading_zeros(chunked); /* actually 1 less than the exponent except for denormals */ uint exponent = 63 - hg->sigbits - clz; /* mantissa has leading bit set except for denormals */ diff --git a/lib/isc/include/isc/bit.h b/lib/isc/include/isc/bit.h index 2af9798bad..1f532be63d 100644 --- a/lib/isc/include/isc/bit.h +++ b/lib/isc/include/isc/bit.h @@ -19,26 +19,16 @@ #include #include -#ifndef __has_header -#define __has_header(x) 0 -#endif - #if __has_header() #include -#define ISC_POPCOUNT(x) stdc_count_zeros(x) -#define ISC_LEADING_ZEROS(x) stdc_leading_zeros(x) -#define ISC_TRAILING_ZEROS(x) stdc_trailing_zeros(x) -#define ISC_LEADING_ONES(x) stdc_leading_ones(x) -#define ISC_TRAILING_ONES(x) stdc_trailing_ones(x) - #else /* __has_header() */ #ifdef HAVE_BUILTIN_POPCOUNTG -#define ISC_POPCOUNT(x) __builtin_popcountg(x) +#define stdc_count_zeros(x) __builtin_popcountg(x) #else /* HAVE_BUILTIN_POPCOUNTG */ -#define ISC_POPCOUNT(x) \ +#define stdc_count_zeros(x) \ _Generic((x), \ unsigned int: __builtin_popcount, \ unsigned long: __builtin_popcountl, \ @@ -46,9 +36,9 @@ #endif /* HAVE_BUILTIN_POPCOUNTG */ #ifdef HAVE_BUILTIN_CLZG -#define ISC_LEADING_ZEROS(x) __builtin_clzg(x, (int)(sizeof(x) * 8)) +#define stdc_leading_zeros(x) __builtin_clzg(x, (int)(sizeof(x) * 8)) #else /* HAVE_BUILTIN_CLZG */ -#define ISC_LEADING_ZEROS(x) \ +#define stdc_leading_zeros(x) \ (((x) == 0) ? (sizeof(x) * 8) \ : _Generic((x), \ unsigned int: __builtin_clz, \ @@ -57,9 +47,9 @@ #endif /* HAVE_BUILTIN_CLZG */ #ifdef HAVE_BUILTIN_CTZG -#define ISC_TRAILING_ZEROS(x) __builtin_ctzg(x, (int)sizeof(x) * 8) +#define stdc_trailing_zeros(x) __builtin_ctzg(x, (int)sizeof(x) * 8) #else /* HAVE_BUILTIN_CTZG */ -#define ISC_TRAILING_ZEROS(x) \ +#define stdc_trailing_zeros(x) \ (((x) == 0) ? (sizeof(x) * 8) \ : _Generic((x), \ unsigned int: __builtin_ctz, \ @@ -67,8 +57,8 @@ unsigned long long: __builtin_ctzll)(x)) #endif /* HAVE_BUILTIN_CTZG */ -#define ISC_LEADING_ONES(x) ISC_LEADING_ZEROS(~(x)) -#define ISC_TRAILING_ONES(x) ISC_TRAILING_ZEROS(~(x)) +#define stdc_leading_ones(x) stdc_leading_zeros(~(x)) +#define stdc_trailing_ones(x) stdc_trailing_zeros(~(x)) #endif /* __has_header() */ diff --git a/lib/isc/include/isc/util.h b/lib/isc/include/isc/util.h index 971f21dc1e..95d93fd332 100644 --- a/lib/isc/include/isc/util.h +++ b/lib/isc/include/isc/util.h @@ -35,6 +35,10 @@ #define __has_feature(x) 0 #endif /* if !defined(__has_feature) */ +#ifndef __has_header +#define __has_header(x) 0 +#endif + /*** *** General Macros. ***/