replaced char* by idents, minor fix in Firm codegen for call
[libfirm] / ir / adt / bitset_std.h
1
2 #ifdef BITSET_USE_STD
3
4 #include "bitfiddle.h"
5
6 typedef unsigned bitset_unit_t;
7
8 #define _bitset_inside_set(unit,bit) *(unit) |= (1 << (bit))
9 #define _bitset_inside_clear(unit,bit) *(unit) &= ~(1 << (bit))
10 #define _bitset_inside_flip(unit,bit) *(unit) ^= ~(1 << (bit))
11
12 #define _bitset_inside_nlz(unit) (nlz(*unit))
13 #define _bitset_inside_ntz(unit) (32 - nlz(~(*unit) & ((*unit) - 1)))
14 #define _bitset_inside_nto(unit) nlz(~(*unit))
15 #define _bitset_inside_nlo(unit) (32 - nlz((*unit) & (~(*unit) - 1)))
16
17 #define _bitset_inside_pop(unit) (popcnt(*unit))
18
19 #define _bitset_inside_and(tgt,src) (*(tgt) &= *(src))
20 #define _bitset_inside_andnot(tgt,src) (*(tgt) &= ~(*(src)))
21 #define _bitset_inside_or(tgt,src) (*(tgt) |= *(src))
22 #define _bitset_inside_xor(tgt,src) (*(tgt) ^= *(src))
23
24 #endif