mailing list of musl libc
 help / color / mirror / code / Atom feed
b42514dd1ad194dbf3ecc82e077eb93721c9583c blob 10795 bytes (raw)

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
 
#include <stdbit.h>
#include <stdbool.h>
#include "atomic.h"

#define a_clz a_clz_32
#define a_ctz a_ctz_32
#if ULONG_WIDTH == 32
#define a_clz_l a_clz_32
#define a_popcount_l a_popcount_32
#else
#define a_clz_l a_clz_64
#define a_popcount_l a_popcount_64
#endif
#define a_clz_ll a_clz_64
#define a_ctz_ll a_ctz_64

unsigned int stdc_count_ones_uc(unsigned char __val)       { return a_popcount_8(__val); }
unsigned int stdc_count_ones_us(unsigned short __val)      { return a_popcount_16(__val); }
unsigned int stdc_count_ones_ui(unsigned int __val)        { return a_popcount_32(__val); }
unsigned int stdc_count_ones_ul(unsigned long __val)       { return a_popcount_l(__val); }
unsigned int stdc_count_ones_ull(unsigned long long __val) { return a_popcount_64(__val); }

unsigned int stdc_count_zeros_uc(unsigned char __val)       { return stdc_count_ones_uc(~__val); }
unsigned int stdc_count_zeros_us(unsigned short __val)      { return stdc_count_ones_us(~__val); }
unsigned int stdc_count_zeros_ui(unsigned int __val)        { return stdc_count_ones_ui(~__val); }
unsigned int stdc_count_zeros_ul(unsigned long __val)       { return stdc_count_ones_ul(~__val); }
unsigned int stdc_count_zeros_ull(unsigned long long __val) { return stdc_count_ones_ull(~__val); }

unsigned int stdc_leading_zeros_uc(unsigned char __val)
{
	return __val
		? (a_clz(__val) - (UINT_WIDTH-UCHAR_WIDTH))
		: UCHAR_WIDTH;
}

unsigned int stdc_leading_zeros_us(unsigned short __val)
{
	return __val
		? (a_clz(__val) - (UINT_WIDTH-USHRT_WIDTH))
		: USHRT_WIDTH;
}

unsigned int stdc_leading_zeros_ui(unsigned int __val)        { return __val ? a_clz(__val) : UINT_WIDTH; }
unsigned int stdc_leading_zeros_ul(unsigned long __val)       { return __val ? a_clz_l(__val) : ULONG_WIDTH; }
unsigned int stdc_leading_zeros_ull(unsigned long long __val) { return __val ? a_clz_ll(__val) : ULLONG_WIDTH; }

unsigned int stdc_leading_ones_uc(unsigned char __val)       { return stdc_leading_zeros_uc(~__val); }
unsigned int stdc_leading_ones_us(unsigned short __val)      { return stdc_leading_zeros_us(~__val); }
unsigned int stdc_leading_ones_ui(unsigned int __val)        { return stdc_leading_zeros_ui(~__val); }
unsigned int stdc_leading_ones_ul(unsigned long __val)       { return stdc_leading_zeros_ul(~__val); }
unsigned int stdc_leading_ones_ull(unsigned long long __val) { return stdc_leading_zeros_ull(~__val); }

unsigned int stdc_trailing_zeros_uc(unsigned char __val)       { return __val ? a_ctz(__val) : UCHAR_WIDTH; }
unsigned int stdc_trailing_zeros_us(unsigned short __val)      { return __val ? a_ctz(__val) : USHRT_WIDTH; }
unsigned int stdc_trailing_zeros_ui(unsigned int __val)        { return __val ? a_ctz(__val) : UINT_WIDTH; }
unsigned int stdc_trailing_zeros_ul(unsigned long __val)       { return __val ? a_ctz_l(__val) : ULONG_WIDTH; }
unsigned int stdc_trailing_zeros_ull(unsigned long long __val) { return __val ? a_ctz_ll(__val) : ULLONG_WIDTH; }

unsigned int stdc_trailing_ones_uc(unsigned char __val)       { return stdc_trailing_zeros_uc(~__val); }
unsigned int stdc_trailing_ones_us(unsigned short __val)      { return stdc_trailing_zeros_us(~__val); }
unsigned int stdc_trailing_ones_ui(unsigned int __val)        { return stdc_trailing_zeros_ui(~__val); }
unsigned int stdc_trailing_ones_ul(unsigned long __val)       { return stdc_trailing_zeros_ul(~__val); }
unsigned int stdc_trailing_ones_ull(unsigned long long __val) { return stdc_trailing_zeros_ull(~__val); }

unsigned int stdc_first_leading_zero_uc(unsigned char __val)       { return (UCHAR_WIDTH-stdc_leading_ones_uc(__val)); }
unsigned int stdc_first_leading_zero_us(unsigned short __val)      { return (USHRT_WIDTH-stdc_leading_ones_us(__val)); }
unsigned int stdc_first_leading_zero_ui(unsigned int __val)        { return (UINT_WIDTH-stdc_leading_ones_ui(__val)); }
unsigned int stdc_first_leading_zero_ul(unsigned long __val)       { return (ULONG_WIDTH-stdc_leading_ones_ul(__val)); }
unsigned int stdc_first_leading_zero_ull(unsigned long long __val) { return (ULLONG_WIDTH-stdc_leading_ones_ull(__val)); }

unsigned int stdc_first_leading_one_uc(unsigned char __val)       { return (UCHAR_WIDTH-stdc_leading_zeros_uc(__val)); }
unsigned int stdc_first_leading_one_us(unsigned short __val)      { return (USHRT_WIDTH-stdc_leading_zeros_us(__val)); }
unsigned int stdc_first_leading_one_ui(unsigned int __val)        { return (UINT_WIDTH-stdc_leading_zeros_ui(__val)); }
unsigned int stdc_first_leading_one_ul(unsigned long __val)       { return (ULONG_WIDTH-stdc_leading_zeros_ul(__val)); }
unsigned int stdc_first_leading_one_ull(unsigned long long __val) { return (ULLONG_WIDTH-stdc_leading_zeros_ull(__val)); }

unsigned int stdc_first_trailing_one_uc(unsigned char __val)       { return __val ? a_ctz(__val) : 0; }
unsigned int stdc_first_trailing_one_us(unsigned short __val)      { return __val ? a_ctz(__val) : 0; }
unsigned int stdc_first_trailing_one_ui(unsigned int __val)        { return __val ? a_ctz(__val) : 0; }
unsigned int stdc_first_trailing_one_ul(unsigned long __val)       { return __val ? a_ctz_l(__val) : 0; }
unsigned int stdc_first_trailing_one_ull(unsigned long long __val) { return __val ? a_ctz_ll(__val) : 0; }


unsigned int stdc_first_trailing_zero_uc(unsigned char __val)       { return  stdc_first_trailing_one_uc(~__val); }
unsigned int stdc_first_trailing_zero_us(unsigned short __val)      { return  stdc_first_trailing_one_us(~__val); }
unsigned int stdc_first_trailing_zero_ui(unsigned int __val)        { return  stdc_first_trailing_one_ui(~__val); }
unsigned int stdc_first_trailing_zero_ul(unsigned long __val)       { return  stdc_first_trailing_one_ul(~__val); }
unsigned int stdc_first_trailing_zero_ull(unsigned long long __val) { return  stdc_first_trailing_one_ull(~__val); }

_Bool stdc_has_single_bit_uc(unsigned char __s)       { return __s ? !(__s & (__s - 1)) : 0; }
_Bool stdc_has_single_bit_us(unsigned short __s)      { return __s ? !(__s & (__s - 1)) : 0; }
_Bool stdc_has_single_bit_ui(unsigned int __s)        { return __s ? !(__s & (__s - 1)) : 0; }
_Bool stdc_has_single_bit_ul(unsigned long __s)       { return __s ? !(__s & (__s - 1)) : 0; }
_Bool stdc_has_single_bit_ull(unsigned long long __s) { return __s ? !(__s & (__s - 1)) : 0; }

unsigned int stdc_bit_width_uc(unsigned char __val)       { return stdc_first_leading_one_uc(__val); }
unsigned int stdc_bit_width_us(unsigned short __val)      { return stdc_first_leading_one_us(__val); }
unsigned int stdc_bit_width_ui(unsigned int __val)        { return stdc_first_leading_one_ui(__val); }
unsigned int stdc_bit_width_ul(unsigned long __val)       { return stdc_first_leading_one_ul(__val); }
unsigned int stdc_bit_width_ull(unsigned long long __val) { return stdc_first_leading_one_ull(__val); }

unsigned char stdc_bit_floor_uc(unsigned char __val)            { return __val ? 1U<<(stdc_first_leading_one_uc(__val)-1) : 0U; }
unsigned short stdc_bit_floor_us(unsigned short __val)          { return __val ? 1U<<(stdc_first_leading_one_us(__val)-1) : 0U; }
unsigned int stdc_bit_floor_ui(unsigned int __val)              { return __val ? 1U<<(stdc_first_leading_one_ui(__val)-1) : 0U; }
unsigned long stdc_bit_floor_ul(unsigned long __val)            { return __val ? 1UL<<(stdc_first_leading_one_ul(__val)-1) : 0UL; }
unsigned long long stdc_bit_floor_ull(unsigned long long __val) { return __val ? 1ULL<<(stdc_first_leading_one_ull(__val)-1) : 0ULL; }

unsigned char stdc_bit_ceil_uc(unsigned char __val)
{
	return (__val & ((__val - 1)&UCHAR_MAX))
		? 1U<<stdc_first_leading_one_uc(__val)
		: __val;
}

unsigned short stdc_bit_ceil_us(unsigned short __val)
{
	return (__val & ((__val - 1)&USHRT_MAX))
		? 1U<<stdc_first_leading_one_us(__val)
		: __val;
}

unsigned int stdc_bit_ceil_ui(unsigned int __val)
{
	return (__val & (__val - 1))
		? 1ULL<<stdc_first_leading_one_ui(__val)
		: __val;
}

unsigned long stdc_bit_ceil_ul(unsigned long __val)
{
	return (__val & (__val - 1))
		? (__val > ULONG_MAX/2 ? 0UL : 1UL<<stdc_first_leading_one_ul(__val))
		: __val;
}

unsigned long long stdc_bit_ceil_ull(unsigned long long __val)
{
	return (__val & (__val - 1))
		? (__val > ULLONG_MAX/2 ? 0ULL : 1ULL<<stdc_first_leading_one_ull(__val))
		: __val;
}

unsigned int __leading_zeros_u128(unsigned long long __lo, unsigned long long __hi)
{
	unsigned int __r = stdc_leading_zeros_ull(__hi);
	if (__r == 64) __r += stdc_leading_zeros_ull(__lo);
	return __r;
}

unsigned int __leading_ones_u128(unsigned long long __lo, unsigned long long __hi)
{
	unsigned int __r = stdc_leading_ones_ull(__hi);
	if (__r == 64) __r += stdc_leading_ones_ull(__lo);
	return __r;
}

unsigned int __trailing_zeros_u128(unsigned long long __lo, unsigned long long __hi)
{
	unsigned int __r = stdc_trailing_zeros_ull(__lo);
	if (__r == 64) __r += stdc_trailing_zeros_ull(__hi);
	return __r;
}

unsigned int __trailing_ones_u128(unsigned long long __lo, unsigned long long __hi)
{
	unsigned int __r = stdc_trailing_ones_ull(__lo);
	if (__r == 64) __r += stdc_trailing_ones_ull(__hi);
	return __r;
}

unsigned int __first_leading_zero_u128(unsigned long long __lo, unsigned long long __hi)
{
	unsigned int __r = stdc_first_leading_zero_ull(__hi);
	if (__r) __r += 64;
	else __r = stdc_first_leading_zero_ull(__lo);
	return __r;
}

unsigned int __first_leading_one_u128(unsigned long long __lo, unsigned long long __hi)
{
	unsigned int __r = stdc_first_leading_one_ull(__hi);
	if (__r) __r += 64;
	else __r = stdc_first_leading_one_ull(__lo);
	return __r;
}

unsigned int __first_trailing_zero_u128(unsigned long long __lo, unsigned long long __hi)
{
	unsigned int __r = stdc_first_trailing_zero_ull(__lo);
	if (!__r) __r = 64+stdc_first_trailing_zero_ull(__hi);
	return __r;
}

unsigned int __first_trailing_one_u128(unsigned long long __lo, unsigned long long __hi)
{
	unsigned int __r = stdc_first_trailing_one_ull(__lo);
	if (!__r) __r = 64+stdc_first_trailing_one_ull(__hi);
	return __r;
}

unsigned int __count_zeros_u128(unsigned long long __lo, unsigned long long __hi)
{
	return stdc_count_zeros_ull(__lo) + stdc_count_zeros_ull(__hi);
}

int __count_ones_u128(unsigned long long __lo, unsigned long long __hi)
{
	return stdc_count_ones_ull(__lo) + stdc_count_ones_ull(__hi);
}

_Bool __has_single_bit_u128(unsigned long long __lo, unsigned long long __hi)
{
	return __count_ones_u128(__lo, __hi) == 1;
}

void __bit_floor_u128(unsigned long long __lohi[2])
{
	__lohi[1] = stdc_bit_floor_ull(__lohi[1]);
	__lohi[0] = __lohi[1] ? 0ULL : stdc_bit_floor_ull(__lohi[0]);
}

void __bit_ceil_u128(unsigned long long __lohi[2])
{
	if (__lohi[1]) {
		__lohi[0] = 0ULL;
		__lohi[1] = stdc_bit_ceil_ull(__lohi[1]);
	} else {
		if (__lohi[0] > (1ULL << 63)) __lohi[1] = 1ULL;
		__lohi[0] = stdc_bit_ceil_ull(__lohi[0]);
	}
}
debug log:

solving b42514dd ...
found b42514dd in https://inbox.vuxu.org/musl/6cf62f9e770900a2225fff53056a63bf8927cd23.1685538619.git.Jens.Gustedt@inria.fr/

applying [1/1] https://inbox.vuxu.org/musl/6cf62f9e770900a2225fff53056a63bf8927cd23.1685538619.git.Jens.Gustedt@inria.fr/
diff --git a/src/stdbit/stdbit.c b/src/stdbit/stdbit.c
new file mode 100644
index 00000000..b42514dd

Checking patch src/stdbit/stdbit.c...
Applied patch src/stdbit/stdbit.c cleanly.

index at:
100644 b42514dd1ad194dbf3ecc82e077eb93721c9583c	src/stdbit/stdbit.c

Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/musl/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).