Lines Matching refs:a
38 struct tnum tnum_lshift(struct tnum a, u8 shift) in tnum_lshift() argument
40 return TNUM(a.value << shift, a.mask << shift); in tnum_lshift()
43 struct tnum tnum_rshift(struct tnum a, u8 shift) in tnum_rshift() argument
45 return TNUM(a.value >> shift, a.mask >> shift); in tnum_rshift()
48 struct tnum tnum_arshift(struct tnum a, u8 min_shift, u8 insn_bitness) in tnum_arshift() argument
56 return TNUM((u32)(((s32)a.value) >> min_shift), in tnum_arshift()
57 (u32)(((s32)a.mask) >> min_shift)); in tnum_arshift()
59 return TNUM((s64)a.value >> min_shift, in tnum_arshift()
60 (s64)a.mask >> min_shift); in tnum_arshift()
63 struct tnum tnum_add(struct tnum a, struct tnum b) in tnum_add() argument
67 sm = a.mask + b.mask; in tnum_add()
68 sv = a.value + b.value; in tnum_add()
71 mu = chi | a.mask | b.mask; in tnum_add()
75 struct tnum tnum_sub(struct tnum a, struct tnum b) in tnum_sub() argument
79 dv = a.value - b.value; in tnum_sub()
80 alpha = dv + a.mask; in tnum_sub()
83 mu = chi | a.mask | b.mask; in tnum_sub()
87 struct tnum tnum_neg(struct tnum a) in tnum_neg() argument
89 return tnum_sub(TNUM(0, 0), a); in tnum_neg()
92 struct tnum tnum_and(struct tnum a, struct tnum b) in tnum_and() argument
96 alpha = a.value | a.mask; in tnum_and()
98 v = a.value & b.value; in tnum_and()
102 struct tnum tnum_or(struct tnum a, struct tnum b) in tnum_or() argument
106 v = a.value | b.value; in tnum_or()
107 mu = a.mask | b.mask; in tnum_or()
111 struct tnum tnum_xor(struct tnum a, struct tnum b) in tnum_xor() argument
115 v = a.value ^ b.value; in tnum_xor()
116 mu = a.mask | b.mask; in tnum_xor()
137 struct tnum tnum_mul(struct tnum a, struct tnum b) in tnum_mul() argument
141 while (a.value || a.mask) { in tnum_mul()
143 if (a.value & 1) in tnum_mul()
146 else if (a.mask & 1) { in tnum_mul()
157 a = tnum_rshift(a, 1); in tnum_mul()
163 bool tnum_overlap(struct tnum a, struct tnum b) in tnum_overlap() argument
167 mu = ~a.mask & ~b.mask; in tnum_overlap()
168 return (a.value & mu) == (b.value & mu); in tnum_overlap()
174 struct tnum tnum_intersect(struct tnum a, struct tnum b) in tnum_intersect() argument
178 v = a.value | b.value; in tnum_intersect()
179 mu = a.mask & b.mask; in tnum_intersect()
188 struct tnum tnum_union(struct tnum a, struct tnum b) in tnum_union() argument
190 u64 v = a.value & b.value; in tnum_union()
191 u64 mu = (a.value ^ b.value) | a.mask | b.mask; in tnum_union()
196 struct tnum tnum_cast(struct tnum a, u8 size) in tnum_cast() argument
198 a.value &= (1ULL << (size * 8)) - 1; in tnum_cast()
199 a.mask &= (1ULL << (size * 8)) - 1; in tnum_cast()
200 return a; in tnum_cast()
203 bool tnum_is_aligned(struct tnum a, u64 size) in tnum_is_aligned() argument
207 return !((a.value | a.mask) & (size - 1)); in tnum_is_aligned()
210 bool tnum_in(struct tnum a, struct tnum b) in tnum_in() argument
212 if (b.mask & ~a.mask) in tnum_in()
214 b.value &= ~a.mask; in tnum_in()
215 return a.value == b.value; in tnum_in()
218 int tnum_sbin(char *str, size_t size, struct tnum a) in tnum_sbin() argument
224 if (a.mask & 1) in tnum_sbin()
226 else if (a.value & 1) in tnum_sbin()
231 a.mask >>= 1; in tnum_sbin()
232 a.value >>= 1; in tnum_sbin()
238 struct tnum tnum_subreg(struct tnum a) in tnum_subreg() argument
240 return tnum_cast(a, 4); in tnum_subreg()
243 struct tnum tnum_clear_subreg(struct tnum a) in tnum_clear_subreg() argument
245 return tnum_lshift(tnum_rshift(a, 32), 32); in tnum_clear_subreg()
253 struct tnum tnum_const_subreg(struct tnum a, u32 value) in tnum_const_subreg() argument
255 return tnum_with_subreg(a, tnum_const(value)); in tnum_const_subreg()
258 struct tnum tnum_bswap16(struct tnum a) in tnum_bswap16() argument
260 return TNUM(swab16(a.value & 0xFFFF), swab16(a.mask & 0xFFFF)); in tnum_bswap16()
263 struct tnum tnum_bswap32(struct tnum a) in tnum_bswap32() argument
265 return TNUM(swab32(a.value & 0xFFFFFFFF), swab32(a.mask & 0xFFFFFFFF)); in tnum_bswap32()
268 struct tnum tnum_bswap64(struct tnum a) in tnum_bswap64() argument
270 return TNUM(swab64(a.value), swab64(a.mask)); in tnum_bswap64()