Lines Matching refs:a

36 struct tnum tnum_lshift(struct tnum a, u8 shift)  in tnum_lshift()  argument
38 return TNUM(a.value << shift, a.mask << shift); in tnum_lshift()
41 struct tnum tnum_rshift(struct tnum a, u8 shift) in tnum_rshift() argument
43 return TNUM(a.value >> shift, a.mask >> shift); in tnum_rshift()
46 struct tnum tnum_arshift(struct tnum a, u8 min_shift) in tnum_arshift() argument
53 return TNUM((s64)a.value >> min_shift, (s64)a.mask >> min_shift); in tnum_arshift()
56 struct tnum tnum_add(struct tnum a, struct tnum b) in tnum_add() argument
60 sm = a.mask + b.mask; in tnum_add()
61 sv = a.value + b.value; in tnum_add()
64 mu = chi | a.mask | b.mask; in tnum_add()
68 struct tnum tnum_sub(struct tnum a, struct tnum b) in tnum_sub() argument
72 dv = a.value - b.value; in tnum_sub()
73 alpha = dv + a.mask; in tnum_sub()
76 mu = chi | a.mask | b.mask; in tnum_sub()
80 struct tnum tnum_and(struct tnum a, struct tnum b) in tnum_and() argument
84 alpha = a.value | a.mask; in tnum_and()
86 v = a.value & b.value; in tnum_and()
90 struct tnum tnum_or(struct tnum a, struct tnum b) in tnum_or() argument
94 v = a.value | b.value; in tnum_or()
95 mu = a.mask | b.mask; in tnum_or()
99 struct tnum tnum_xor(struct tnum a, struct tnum b) in tnum_xor() argument
103 v = a.value ^ b.value; in tnum_xor()
104 mu = a.mask | b.mask; in tnum_xor()
122 struct tnum tnum_mul(struct tnum a, struct tnum b) in tnum_mul() argument
127 pi = a.value * b.value; in tnum_mul()
128 acc = hma(TNUM(pi, 0), a.mask, b.mask | b.value); in tnum_mul()
129 return hma(acc, b.mask, a.value); in tnum_mul()
135 struct tnum tnum_intersect(struct tnum a, struct tnum b) in tnum_intersect() argument
139 v = a.value | b.value; in tnum_intersect()
140 mu = a.mask & b.mask; in tnum_intersect()
144 struct tnum tnum_cast(struct tnum a, u8 size) in tnum_cast() argument
146 a.value &= (1ULL << (size * 8)) - 1; in tnum_cast()
147 a.mask &= (1ULL << (size * 8)) - 1; in tnum_cast()
148 return a; in tnum_cast()
151 bool tnum_is_aligned(struct tnum a, u64 size) in tnum_is_aligned() argument
155 return !((a.value | a.mask) & (size - 1)); in tnum_is_aligned()
158 bool tnum_in(struct tnum a, struct tnum b) in tnum_in() argument
160 if (b.mask & ~a.mask) in tnum_in()
162 b.value &= ~a.mask; in tnum_in()
163 return a.value == b.value; in tnum_in()
166 int tnum_strn(char *str, size_t size, struct tnum a) in tnum_strn() argument
168 return snprintf(str, size, "(%#llx; %#llx)", a.value, a.mask); in tnum_strn()
172 int tnum_sbin(char *str, size_t size, struct tnum a) in tnum_sbin() argument
178 if (a.mask & 1) in tnum_sbin()
180 else if (a.value & 1) in tnum_sbin()
185 a.mask >>= 1; in tnum_sbin()
186 a.value >>= 1; in tnum_sbin()