Home | History | Annotate | Download | only in include

Lines Matching refs:bi

336 bmp_iter_set_init (bitmap_iterator *bi, const_bitmap map,
339 bi->elt1 = map->first;
340 bi->elt2 = NULL;
345 if (!bi->elt1)
347 bi->elt1 = &bitmap_zero_bits;
351 if (bi->elt1->indx >= start_bit / BITMAP_ELEMENT_ALL_BITS)
353 bi->elt1 = bi->elt1->next;
357 if (bi->elt1->indx != start_bit / BITMAP_ELEMENT_ALL_BITS)
358 start_bit = bi->elt1->indx * BITMAP_ELEMENT_ALL_BITS;
361 bi->word_no = start_bit / BITMAP_WORD_BITS % BITMAP_ELEMENT_WORDS;
362 bi->bits = bi->elt1->bits[bi->word_no];
363 bi->bits >>= start_bit % BITMAP_WORD_BITS;
369 start_bit += !bi->bits;
378 bmp_iter_and_init (bitmap_iterator *bi, const_bitmap map1, const_bitmap map2,
381 bi->elt1 = map1->first;
382 bi->elt2 = map2->first;
388 if (!bi->elt1)
390 bi->elt2 = NULL;
394 if (bi->elt1->indx >= start_bit / BITMAP_ELEMENT_ALL_BITS)
396 bi->elt1 = bi->elt1->next;
402 if (!bi->elt2)
404 bi->elt1 = bi->elt2 = &bitmap_zero_bits;
408 if (bi->elt2->indx >= bi->elt1->indx)
410 bi->elt2 = bi->elt2->next;
414 if (bi->elt1->indx == bi->elt2->indx)
418 if (bi->elt1->indx != start_bit / BITMAP_ELEMENT_ALL_BITS)
419 start_bit = bi->elt1->indx * BITMAP_ELEMENT_ALL_BITS;
421 bi->word_no = start_bit / BITMAP_WORD_BITS % BITMAP_ELEMENT_WORDS;
422 bi->bits = bi->elt1->bits[bi->word_no] & bi->elt2->bits[bi->word_no];
423 bi->bits >>= start_bit % BITMAP_WORD_BITS;
429 bi->word_no = BITMAP_ELEMENT_WORDS - 1;
430 bi->bits = 0;
437 start_bit += !bi->bits;
446 bmp_iter_and_compl_init (bitmap_iterator *bi,
450 bi->elt1 = map1->first;
451 bi->elt2 = map2->first;
456 if (!bi->elt1)
458 bi->elt1 = &bitmap_zero_bits;
462 if (bi->elt1->indx >= start_bit / BITMAP_ELEMENT_ALL_BITS)
464 bi->elt1 = bi->elt1->next;
468 while (bi->elt2 && bi->elt2->indx < bi->elt1->indx)
469 bi->elt2 = bi->elt2->next;
473 if (bi->elt1->indx != start_bit / BITMAP_ELEMENT_ALL_BITS)
474 start_bit = bi->elt1->indx * BITMAP_ELEMENT_ALL_BITS;
476 bi->word_no = start_bit / BITMAP_WORD_BITS % BITMAP_ELEMENT_WORDS;
477 bi->bits = bi->elt1->bits[bi->word_no];
478 if (bi->elt2 && bi->elt1->indx == bi->elt2->indx)
479 bi->bits &= ~bi->elt2->bits[bi->word_no];
480 bi->bits >>= start_bit % BITMAP_WORD_BITS;
486 start_bit += !bi->bits;
491 /* Advance to the next bit in BI. We don't advance to the next
495 bmp_iter_next (bitmap_iterator *bi, unsigned *bit_no)
497 bi->bits >>= 1;
501 /* Advance to first set bit in BI. */
504 bmp_iter_next_bit (bitmap_iterator * bi, unsigned *bit_no)
508 unsigned int n = __builtin_ctzl (bi->bits);
510 bi->bits >>= n;
514 while (!(bi->bits & 1))
516 bi->bits >>= 1;
527 bmp_iter_set (bitmap_iterator *bi, unsigned *bit_no)
530 if (bi->bits)
533 bmp_iter_next_bit (bi, bit_no);
542 bi->word_no++;
547 while (bi->word_no != BITMAP_ELEMENT_WORDS)
549 bi->bits = bi->elt1->bits[bi->word_no];
550 if (bi->bits)
553 bi->word_no++;
557 bi->elt1 = bi->elt1->next;
558 if (!bi->elt1)
560 *bit_no = bi->elt1->indx * BITMAP_ELEMENT_ALL_BITS;
561 bi->word_no = 0;
570 bmp_iter_and (bitmap_iterator *bi, unsigned *bit_no)
573 if (bi->bits)
576 bmp_iter_next_bit (bi, bit_no);
585 bi->word_no++;
590 while (bi->word_no != BITMAP_ELEMENT_WORDS)
592 bi->bits = bi->elt1->bits[bi->word_no] & bi->elt2->bits[bi->word_no];
593 if (bi->bits)
596 bi->word_no++;
606 bi->elt1 = bi->elt1->next;
607 if (!bi->elt1)
610 while (bi->elt1->indx < bi->elt2->indx);
614 while (bi->elt2->indx < bi->elt1->indx)
616 bi->elt2 = bi->elt2->next;
617 if (!bi->elt2)
621 while (bi->elt1->indx != bi->elt2->indx);
623 *bit_no = bi->elt1->indx * BITMAP_ELEMENT_ALL_BITS;
624 bi->word_no = 0;
633 bmp_iter_and_compl (bitmap_iterator *bi, unsigned *bit_no)
636 if (bi->bits)
639 bmp_iter_next_bit (bi, bit_no);
648 bi->word_no++;
653 while (bi->word_no != BITMAP_ELEMENT_WORDS)
655 bi->bits = bi->elt1->bits[bi->word_no];
656 if (bi->elt2 && bi->elt2->indx == bi->elt1->indx)
657 bi->bits &= ~bi->elt2->bits[bi->word_no];
658 if (bi->bits)
661 bi->word_no++;
665 bi->elt1 = bi->elt1->next;
666 if (!bi->elt1)
670 while (bi->elt2 && bi->elt2->indx < bi->elt1->indx)
671 bi->elt2 = bi->elt2->next;
673 *bit_no = bi->elt1->indx * BITMAP_ELEMENT_ALL_BITS;
674 bi->word_no = 0;