1*57718be8SEnji CooperTesting with TEST_LENGTH = 32
2*57718be8SEnji Cooper
3*57718be8SEnji Coopertest _bit_byte, _bit_mask, and bitstr_size
4*57718be8SEnji Cooper  i   _bit_byte(i)   _bit_mask(i) bitstr_size(i)
5*57718be8SEnji Cooper  0              0              1              0
6*57718be8SEnji Cooper  1              0              2              1
7*57718be8SEnji Cooper  2              0              4              1
8*57718be8SEnji Cooper  3              0              8              1
9*57718be8SEnji Cooper  4              0             16              1
10*57718be8SEnji Cooper  5              0             32              1
11*57718be8SEnji Cooper  6              0             64              1
12*57718be8SEnji Cooper  7              0            128              1
13*57718be8SEnji Cooper  8              1              1              1
14*57718be8SEnji Cooper  9              1              2              2
15*57718be8SEnji Cooper 10              1              4              2
16*57718be8SEnji Cooper 11              1              8              2
17*57718be8SEnji Cooper 12              1             16              2
18*57718be8SEnji Cooper 13              1             32              2
19*57718be8SEnji Cooper 14              1             64              2
20*57718be8SEnji Cooper 15              1            128              2
21*57718be8SEnji Cooper 16              2              1              2
22*57718be8SEnji Cooper 17              2              2              3
23*57718be8SEnji Cooper 18              2              4              3
24*57718be8SEnji Cooper 19              2              8              3
25*57718be8SEnji Cooper 20              2             16              3
26*57718be8SEnji Cooper 21              2             32              3
27*57718be8SEnji Cooper 22              2             64              3
28*57718be8SEnji Cooper 23              2            128              3
29*57718be8SEnji Cooper 24              3              1              3
30*57718be8SEnji Cooper 25              3              2              4
31*57718be8SEnji Cooper 26              3              4              4
32*57718be8SEnji Cooper 27              3              8              4
33*57718be8SEnji Cooper 28              3             16              4
34*57718be8SEnji Cooper 29              3             32              4
35*57718be8SEnji Cooper 30              3             64              4
36*57718be8SEnji Cooper 31              3            128              4
37*57718be8SEnji Cooper
38*57718be8SEnji Coopertest bit_alloc, clearbits, bit_ffc, bit_ffs
39*57718be8SEnji Cooperbe:   0  -1 00000000000000000000000000000000
40*57718be8SEnji Cooperis:   0  -1 00000000000000000000000000000000
41*57718be8SEnji Cooper
42*57718be8SEnji Coopertest bit_set
43*57718be8SEnji Cooperbe:   1   0 10010010010010010010010010010010
44*57718be8SEnji Cooperis:   1   0 10010010010010010010010010010010
45*57718be8SEnji Cooper
46*57718be8SEnji Coopertest bit_clear
47*57718be8SEnji Cooperbe:   0   3 00010000010000010000010000010000
48*57718be8SEnji Cooperis:   0   3 00010000010000010000010000010000
49*57718be8SEnji Cooper
50*57718be8SEnji Coopertest bit_test using previous bitstring
51*57718be8SEnji Cooper  i    bit_test(i)
52*57718be8SEnji Cooper  0              0
53*57718be8SEnji Cooper  1              0
54*57718be8SEnji Cooper  2              0
55*57718be8SEnji Cooper  3              8
56*57718be8SEnji Cooper  4              0
57*57718be8SEnji Cooper  5              0
58*57718be8SEnji Cooper  6              0
59*57718be8SEnji Cooper  7              0
60*57718be8SEnji Cooper  8              0
61*57718be8SEnji Cooper  9              2
62*57718be8SEnji Cooper 10              0
63*57718be8SEnji Cooper 11              0
64*57718be8SEnji Cooper 12              0
65*57718be8SEnji Cooper 13              0
66*57718be8SEnji Cooper 14              0
67*57718be8SEnji Cooper 15            128
68*57718be8SEnji Cooper 16              0
69*57718be8SEnji Cooper 17              0
70*57718be8SEnji Cooper 18              0
71*57718be8SEnji Cooper 19              0
72*57718be8SEnji Cooper 20              0
73*57718be8SEnji Cooper 21             32
74*57718be8SEnji Cooper 22              0
75*57718be8SEnji Cooper 23              0
76*57718be8SEnji Cooper 24              0
77*57718be8SEnji Cooper 25              0
78*57718be8SEnji Cooper 26              0
79*57718be8SEnji Cooper 27              8
80*57718be8SEnji Cooper 28              0
81*57718be8SEnji Cooper 29              0
82*57718be8SEnji Cooper 30              0
83*57718be8SEnji Cooper 31              0
84*57718be8SEnji Cooper
85*57718be8SEnji Coopertest clearbits
86*57718be8SEnji Cooperbe:   0  -1 00000000000000000000000000000000
87*57718be8SEnji Cooperis:   0  -1 00000000000000000000000000000000
88*57718be8SEnji Cooper
89*57718be8SEnji Coopertest bit_nset and bit_nclear
90*57718be8SEnji Cooperbe:   0   1 01111111111111111111111111111110
91*57718be8SEnji Cooperis:   0   1 01111111111111111111111111111110
92*57718be8SEnji Cooperbe:   0   1 01000000000000000000000000000010
93*57718be8SEnji Cooperis:   0   1 01000000000000000000000000000010
94*57718be8SEnji Cooperbe:   0  -1 00000000000000000000000000000000
95*57718be8SEnji Cooperis:   0  -1 00000000000000000000000000000000
96*57718be8SEnji Cooperbe:  31   0 11111111111111111111111111111110
97*57718be8SEnji Cooperis:  31   0 11111111111111111111111111111110
98*57718be8SEnji Cooperbe:   0  -1 00000000000000000000000000000000
99*57718be8SEnji Cooperis:   0  -1 00000000000000000000000000000000
100*57718be8SEnji Cooper
101*57718be8SEnji Cooperfirst 1 bit should move right 1 position each line
102*57718be8SEnji Cooper  0  -1   0 11111111111111111111111111111111
103*57718be8SEnji Cooper  1   0   1 01111111111111111111111111111111
104*57718be8SEnji Cooper  2   0   2 00111111111111111111111111111111
105*57718be8SEnji Cooper  3   0   3 00011111111111111111111111111111
106*57718be8SEnji Cooper  4   0   4 00001111111111111111111111111111
107*57718be8SEnji Cooper  5   0   5 00000111111111111111111111111111
108*57718be8SEnji Cooper  6   0   6 00000011111111111111111111111111
109*57718be8SEnji Cooper  7   0   7 00000001111111111111111111111111
110*57718be8SEnji Cooper  8   0   8 00000000111111111111111111111111
111*57718be8SEnji Cooper  9   0   9 00000000011111111111111111111111
112*57718be8SEnji Cooper 10   0  10 00000000001111111111111111111111
113*57718be8SEnji Cooper 11   0  11 00000000000111111111111111111111
114*57718be8SEnji Cooper 12   0  12 00000000000011111111111111111111
115*57718be8SEnji Cooper 13   0  13 00000000000001111111111111111111
116*57718be8SEnji Cooper 14   0  14 00000000000000111111111111111111
117*57718be8SEnji Cooper 15   0  15 00000000000000011111111111111111
118*57718be8SEnji Cooper 16   0  16 00000000000000001111111111111111
119*57718be8SEnji Cooper 17   0  17 00000000000000000111111111111111
120*57718be8SEnji Cooper 18   0  18 00000000000000000011111111111111
121*57718be8SEnji Cooper 19   0  19 00000000000000000001111111111111
122*57718be8SEnji Cooper 20   0  20 00000000000000000000111111111111
123*57718be8SEnji Cooper 21   0  21 00000000000000000000011111111111
124*57718be8SEnji Cooper 22   0  22 00000000000000000000001111111111
125*57718be8SEnji Cooper 23   0  23 00000000000000000000000111111111
126*57718be8SEnji Cooper 24   0  24 00000000000000000000000011111111
127*57718be8SEnji Cooper 25   0  25 00000000000000000000000001111111
128*57718be8SEnji Cooper 26   0  26 00000000000000000000000000111111
129*57718be8SEnji Cooper 27   0  27 00000000000000000000000000011111
130*57718be8SEnji Cooper 28   0  28 00000000000000000000000000001111
131*57718be8SEnji Cooper 29   0  29 00000000000000000000000000000111
132*57718be8SEnji Cooper 30   0  30 00000000000000000000000000000011
133*57718be8SEnji Cooper 31   0  31 00000000000000000000000000000001
134*57718be8SEnji Cooper
135*57718be8SEnji Cooperfirst 0 bit should move right 1 position each line
136*57718be8SEnji Cooper  0   0  -1 00000000000000000000000000000000
137*57718be8SEnji Cooper  1   1   0 10000000000000000000000000000000
138*57718be8SEnji Cooper  2   2   0 11000000000000000000000000000000
139*57718be8SEnji Cooper  3   3   0 11100000000000000000000000000000
140*57718be8SEnji Cooper  4   4   0 11110000000000000000000000000000
141*57718be8SEnji Cooper  5   5   0 11111000000000000000000000000000
142*57718be8SEnji Cooper  6   6   0 11111100000000000000000000000000
143*57718be8SEnji Cooper  7   7   0 11111110000000000000000000000000
144*57718be8SEnji Cooper  8   8   0 11111111000000000000000000000000
145*57718be8SEnji Cooper  9   9   0 11111111100000000000000000000000
146*57718be8SEnji Cooper 10  10   0 11111111110000000000000000000000
147*57718be8SEnji Cooper 11  11   0 11111111111000000000000000000000
148*57718be8SEnji Cooper 12  12   0 11111111111100000000000000000000
149*57718be8SEnji Cooper 13  13   0 11111111111110000000000000000000
150*57718be8SEnji Cooper 14  14   0 11111111111111000000000000000000
151*57718be8SEnji Cooper 15  15   0 11111111111111100000000000000000
152*57718be8SEnji Cooper 16  16   0 11111111111111110000000000000000
153*57718be8SEnji Cooper 17  17   0 11111111111111111000000000000000
154*57718be8SEnji Cooper 18  18   0 11111111111111111100000000000000
155*57718be8SEnji Cooper 19  19   0 11111111111111111110000000000000
156*57718be8SEnji Cooper 20  20   0 11111111111111111111000000000000
157*57718be8SEnji Cooper 21  21   0 11111111111111111111100000000000
158*57718be8SEnji Cooper 22  22   0 11111111111111111111110000000000
159*57718be8SEnji Cooper 23  23   0 11111111111111111111111000000000
160*57718be8SEnji Cooper 24  24   0 11111111111111111111111100000000
161*57718be8SEnji Cooper 25  25   0 11111111111111111111111110000000
162*57718be8SEnji Cooper 26  26   0 11111111111111111111111111000000
163*57718be8SEnji Cooper 27  27   0 11111111111111111111111111100000
164*57718be8SEnji Cooper 28  28   0 11111111111111111111111111110000
165*57718be8SEnji Cooper 29  29   0 11111111111111111111111111111000
166*57718be8SEnji Cooper 30  30   0 11111111111111111111111111111100
167*57718be8SEnji Cooper 31  31   0 11111111111111111111111111111110
168*57718be8SEnji Cooper
169*57718be8SEnji Cooperfirst 0 bit should move left 1 position each line
170*57718be8SEnji Cooper  0  -1   0 11111111111111111111111111111111
171*57718be8SEnji Cooper  1  31   0 11111111111111111111111111111110
172*57718be8SEnji Cooper  2  30   0 11111111111111111111111111111100
173*57718be8SEnji Cooper  3  29   0 11111111111111111111111111111000
174*57718be8SEnji Cooper  4  28   0 11111111111111111111111111110000
175*57718be8SEnji Cooper  5  27   0 11111111111111111111111111100000
176*57718be8SEnji Cooper  6  26   0 11111111111111111111111111000000
177*57718be8SEnji Cooper  7  25   0 11111111111111111111111110000000
178*57718be8SEnji Cooper  8  24   0 11111111111111111111111100000000
179*57718be8SEnji Cooper  9  23   0 11111111111111111111111000000000
180*57718be8SEnji Cooper 10  22   0 11111111111111111111110000000000
181*57718be8SEnji Cooper 11  21   0 11111111111111111111100000000000
182*57718be8SEnji Cooper 12  20   0 11111111111111111111000000000000
183*57718be8SEnji Cooper 13  19   0 11111111111111111110000000000000
184*57718be8SEnji Cooper 14  18   0 11111111111111111100000000000000
185*57718be8SEnji Cooper 15  17   0 11111111111111111000000000000000
186*57718be8SEnji Cooper 16  16   0 11111111111111110000000000000000
187*57718be8SEnji Cooper 17  15   0 11111111111111100000000000000000
188*57718be8SEnji Cooper 18  14   0 11111111111111000000000000000000
189*57718be8SEnji Cooper 19  13   0 11111111111110000000000000000000
190*57718be8SEnji Cooper 20  12   0 11111111111100000000000000000000
191*57718be8SEnji Cooper 21  11   0 11111111111000000000000000000000
192*57718be8SEnji Cooper 22  10   0 11111111110000000000000000000000
193*57718be8SEnji Cooper 23   9   0 11111111100000000000000000000000
194*57718be8SEnji Cooper 24   8   0 11111111000000000000000000000000
195*57718be8SEnji Cooper 25   7   0 11111110000000000000000000000000
196*57718be8SEnji Cooper 26   6   0 11111100000000000000000000000000
197*57718be8SEnji Cooper 27   5   0 11111000000000000000000000000000
198*57718be8SEnji Cooper 28   4   0 11110000000000000000000000000000
199*57718be8SEnji Cooper 29   3   0 11100000000000000000000000000000
200*57718be8SEnji Cooper 30   2   0 11000000000000000000000000000000
201*57718be8SEnji Cooper 31   1   0 10000000000000000000000000000000
202*57718be8SEnji Cooper
203*57718be8SEnji Cooperfirst 1 bit should move left 1 position each line
204*57718be8SEnji Cooper  0   0  -1 00000000000000000000000000000000
205*57718be8SEnji Cooper  1   0  31 00000000000000000000000000000001
206*57718be8SEnji Cooper  2   0  30 00000000000000000000000000000011
207*57718be8SEnji Cooper  3   0  29 00000000000000000000000000000111
208*57718be8SEnji Cooper  4   0  28 00000000000000000000000000001111
209*57718be8SEnji Cooper  5   0  27 00000000000000000000000000011111
210*57718be8SEnji Cooper  6   0  26 00000000000000000000000000111111
211*57718be8SEnji Cooper  7   0  25 00000000000000000000000001111111
212*57718be8SEnji Cooper  8   0  24 00000000000000000000000011111111
213*57718be8SEnji Cooper  9   0  23 00000000000000000000000111111111
214*57718be8SEnji Cooper 10   0  22 00000000000000000000001111111111
215*57718be8SEnji Cooper 11   0  21 00000000000000000000011111111111
216*57718be8SEnji Cooper 12   0  20 00000000000000000000111111111111
217*57718be8SEnji Cooper 13   0  19 00000000000000000001111111111111
218*57718be8SEnji Cooper 14   0  18 00000000000000000011111111111111
219*57718be8SEnji Cooper 15   0  17 00000000000000000111111111111111
220*57718be8SEnji Cooper 16   0  16 00000000000000001111111111111111
221*57718be8SEnji Cooper 17   0  15 00000000000000011111111111111111
222*57718be8SEnji Cooper 18   0  14 00000000000000111111111111111111
223*57718be8SEnji Cooper 19   0  13 00000000000001111111111111111111
224*57718be8SEnji Cooper 20   0  12 00000000000011111111111111111111
225*57718be8SEnji Cooper 21   0  11 00000000000111111111111111111111
226*57718be8SEnji Cooper 22   0  10 00000000001111111111111111111111
227*57718be8SEnji Cooper 23   0   9 00000000011111111111111111111111
228*57718be8SEnji Cooper 24   0   8 00000000111111111111111111111111
229*57718be8SEnji Cooper 25   0   7 00000001111111111111111111111111
230*57718be8SEnji Cooper 26   0   6 00000011111111111111111111111111
231*57718be8SEnji Cooper 27   0   5 00000111111111111111111111111111
232*57718be8SEnji Cooper 28   0   4 00001111111111111111111111111111
233*57718be8SEnji Cooper 29   0   3 00011111111111111111111111111111
234*57718be8SEnji Cooper 30   0   2 00111111111111111111111111111111
235*57718be8SEnji Cooper 31   0   1 01111111111111111111111111111111
236*57718be8SEnji Cooper
237*57718be8SEnji Cooper0 bit should move right 1 position each line
238*57718be8SEnji Cooper  0   0   1 01111111111111111111111111111111
239*57718be8SEnji Cooper  1   1   0 10111111111111111111111111111111
240*57718be8SEnji Cooper  2   2   0 11011111111111111111111111111111
241*57718be8SEnji Cooper  3   3   0 11101111111111111111111111111111
242*57718be8SEnji Cooper  4   4   0 11110111111111111111111111111111
243*57718be8SEnji Cooper  5   5   0 11111011111111111111111111111111
244*57718be8SEnji Cooper  6   6   0 11111101111111111111111111111111
245*57718be8SEnji Cooper  7   7   0 11111110111111111111111111111111
246*57718be8SEnji Cooper  8   8   0 11111111011111111111111111111111
247*57718be8SEnji Cooper  9   9   0 11111111101111111111111111111111
248*57718be8SEnji Cooper 10  10   0 11111111110111111111111111111111
249*57718be8SEnji Cooper 11  11   0 11111111111011111111111111111111
250*57718be8SEnji Cooper 12  12   0 11111111111101111111111111111111
251*57718be8SEnji Cooper 13  13   0 11111111111110111111111111111111
252*57718be8SEnji Cooper 14  14   0 11111111111111011111111111111111
253*57718be8SEnji Cooper 15  15   0 11111111111111101111111111111111
254*57718be8SEnji Cooper 16  16   0 11111111111111110111111111111111
255*57718be8SEnji Cooper 17  17   0 11111111111111111011111111111111
256*57718be8SEnji Cooper 18  18   0 11111111111111111101111111111111
257*57718be8SEnji Cooper 19  19   0 11111111111111111110111111111111
258*57718be8SEnji Cooper 20  20   0 11111111111111111111011111111111
259*57718be8SEnji Cooper 21  21   0 11111111111111111111101111111111
260*57718be8SEnji Cooper 22  22   0 11111111111111111111110111111111
261*57718be8SEnji Cooper 23  23   0 11111111111111111111111011111111
262*57718be8SEnji Cooper 24  24   0 11111111111111111111111101111111
263*57718be8SEnji Cooper 25  25   0 11111111111111111111111110111111
264*57718be8SEnji Cooper 26  26   0 11111111111111111111111111011111
265*57718be8SEnji Cooper 27  27   0 11111111111111111111111111101111
266*57718be8SEnji Cooper 28  28   0 11111111111111111111111111110111
267*57718be8SEnji Cooper 29  29   0 11111111111111111111111111111011
268*57718be8SEnji Cooper 30  30   0 11111111111111111111111111111101
269*57718be8SEnji Cooper 31  31   0 11111111111111111111111111111110
270*57718be8SEnji Cooper
271*57718be8SEnji Cooper1 bit should move right 1 position each line
272*57718be8SEnji Cooper  0   1   0 10000000000000000000000000000000
273*57718be8SEnji Cooper  1   0   1 01000000000000000000000000000000
274*57718be8SEnji Cooper  2   0   2 00100000000000000000000000000000
275*57718be8SEnji Cooper  3   0   3 00010000000000000000000000000000
276*57718be8SEnji Cooper  4   0   4 00001000000000000000000000000000
277*57718be8SEnji Cooper  5   0   5 00000100000000000000000000000000
278*57718be8SEnji Cooper  6   0   6 00000010000000000000000000000000
279*57718be8SEnji Cooper  7   0   7 00000001000000000000000000000000
280*57718be8SEnji Cooper  8   0   8 00000000100000000000000000000000
281*57718be8SEnji Cooper  9   0   9 00000000010000000000000000000000
282*57718be8SEnji Cooper 10   0  10 00000000001000000000000000000000
283*57718be8SEnji Cooper 11   0  11 00000000000100000000000000000000
284*57718be8SEnji Cooper 12   0  12 00000000000010000000000000000000
285*57718be8SEnji Cooper 13   0  13 00000000000001000000000000000000
286*57718be8SEnji Cooper 14   0  14 00000000000000100000000000000000
287*57718be8SEnji Cooper 15   0  15 00000000000000010000000000000000
288*57718be8SEnji Cooper 16   0  16 00000000000000001000000000000000
289*57718be8SEnji Cooper 17   0  17 00000000000000000100000000000000
290*57718be8SEnji Cooper 18   0  18 00000000000000000010000000000000
291*57718be8SEnji Cooper 19   0  19 00000000000000000001000000000000
292*57718be8SEnji Cooper 20   0  20 00000000000000000000100000000000
293*57718be8SEnji Cooper 21   0  21 00000000000000000000010000000000
294*57718be8SEnji Cooper 22   0  22 00000000000000000000001000000000
295*57718be8SEnji Cooper 23   0  23 00000000000000000000000100000000
296*57718be8SEnji Cooper 24   0  24 00000000000000000000000010000000
297*57718be8SEnji Cooper 25   0  25 00000000000000000000000001000000
298*57718be8SEnji Cooper 26   0  26 00000000000000000000000000100000
299*57718be8SEnji Cooper 27   0  27 00000000000000000000000000010000
300*57718be8SEnji Cooper 28   0  28 00000000000000000000000000001000
301*57718be8SEnji Cooper 29   0  29 00000000000000000000000000000100
302*57718be8SEnji Cooper 30   0  30 00000000000000000000000000000010
303*57718be8SEnji Cooper 31   0  31 00000000000000000000000000000001
304