1*7dd7cddfSDavid du Colombier #include "cc.h" 2*7dd7cddfSDavid du Colombier 3*7dd7cddfSDavid du Colombier Bits bor(Bits a,Bits b)4*7dd7cddfSDavid du Colombierbor(Bits a, Bits b) 5*7dd7cddfSDavid du Colombier { 6*7dd7cddfSDavid du Colombier Bits c; 7*7dd7cddfSDavid du Colombier int i; 8*7dd7cddfSDavid du Colombier 9*7dd7cddfSDavid du Colombier for(i=0; i<BITS; i++) 10*7dd7cddfSDavid du Colombier c.b[i] = a.b[i] | b.b[i]; 11*7dd7cddfSDavid du Colombier return c; 12*7dd7cddfSDavid du Colombier } 13*7dd7cddfSDavid du Colombier 14*7dd7cddfSDavid du Colombier Bits band(Bits a,Bits b)15*7dd7cddfSDavid du Colombierband(Bits a, Bits b) 16*7dd7cddfSDavid du Colombier { 17*7dd7cddfSDavid du Colombier Bits c; 18*7dd7cddfSDavid du Colombier int i; 19*7dd7cddfSDavid du Colombier 20*7dd7cddfSDavid du Colombier for(i=0; i<BITS; i++) 21*7dd7cddfSDavid du Colombier c.b[i] = a.b[i] & b.b[i]; 22*7dd7cddfSDavid du Colombier return c; 23*7dd7cddfSDavid du Colombier } 24*7dd7cddfSDavid du Colombier 25*7dd7cddfSDavid du Colombier /* 26*7dd7cddfSDavid du Colombier Bits 27*7dd7cddfSDavid du Colombier bnot(Bits a) 28*7dd7cddfSDavid du Colombier { 29*7dd7cddfSDavid du Colombier Bits c; 30*7dd7cddfSDavid du Colombier int i; 31*7dd7cddfSDavid du Colombier 32*7dd7cddfSDavid du Colombier for(i=0; i<BITS; i++) 33*7dd7cddfSDavid du Colombier c.b[i] = ~a.b[i]; 34*7dd7cddfSDavid du Colombier return c; 35*7dd7cddfSDavid du Colombier } 36*7dd7cddfSDavid du Colombier */ 37*7dd7cddfSDavid du Colombier 38*7dd7cddfSDavid du Colombier int bany(Bits * a)39*7dd7cddfSDavid du Colombierbany(Bits *a) 40*7dd7cddfSDavid du Colombier { 41*7dd7cddfSDavid du Colombier int i; 42*7dd7cddfSDavid du Colombier 43*7dd7cddfSDavid du Colombier for(i=0; i<BITS; i++) 44*7dd7cddfSDavid du Colombier if(a->b[i]) 45*7dd7cddfSDavid du Colombier return 1; 46*7dd7cddfSDavid du Colombier return 0; 47*7dd7cddfSDavid du Colombier } 48*7dd7cddfSDavid du Colombier 49*7dd7cddfSDavid du Colombier int beq(Bits a,Bits b)50*7dd7cddfSDavid du Colombierbeq(Bits a, Bits b) 51*7dd7cddfSDavid du Colombier { 52*7dd7cddfSDavid du Colombier int i; 53*7dd7cddfSDavid du Colombier 54*7dd7cddfSDavid du Colombier for(i=0; i<BITS; i++) 55*7dd7cddfSDavid du Colombier if(a.b[i] != b.b[i]) 56*7dd7cddfSDavid du Colombier return 0; 57*7dd7cddfSDavid du Colombier return 1; 58*7dd7cddfSDavid du Colombier } 59*7dd7cddfSDavid du Colombier 60*7dd7cddfSDavid du Colombier int bnum(Bits a)61*7dd7cddfSDavid du Colombierbnum(Bits a) 62*7dd7cddfSDavid du Colombier { 63*7dd7cddfSDavid du Colombier int i; 64*7dd7cddfSDavid du Colombier long b; 65*7dd7cddfSDavid du Colombier 66*7dd7cddfSDavid du Colombier for(i=0; i<BITS; i++) 67*7dd7cddfSDavid du Colombier if(b = a.b[i]) 68*7dd7cddfSDavid du Colombier return 32*i + bitno(b); 69*7dd7cddfSDavid du Colombier diag(Z, "bad in bnum"); 70*7dd7cddfSDavid du Colombier return 0; 71*7dd7cddfSDavid du Colombier } 72*7dd7cddfSDavid du Colombier 73*7dd7cddfSDavid du Colombier Bits blsh(uint n)74*7dd7cddfSDavid du Colombierblsh(uint n) 75*7dd7cddfSDavid du Colombier { 76*7dd7cddfSDavid du Colombier Bits c; 77*7dd7cddfSDavid du Colombier 78*7dd7cddfSDavid du Colombier c = zbits; 79*7dd7cddfSDavid du Colombier c.b[n/32] = 1L << (n%32); 80*7dd7cddfSDavid du Colombier return c; 81*7dd7cddfSDavid du Colombier } 82*7dd7cddfSDavid du Colombier 83*7dd7cddfSDavid du Colombier int bset(Bits a,uint n)84*7dd7cddfSDavid du Colombierbset(Bits a, uint n) 85*7dd7cddfSDavid du Colombier { 86*7dd7cddfSDavid du Colombier if(a.b[n/32] & (1L << (n%32))) 87*7dd7cddfSDavid du Colombier return 1; 88*7dd7cddfSDavid du Colombier return 0; 89*7dd7cddfSDavid du Colombier } 90