Lines Matching refs:range
218 struct range { struct
222 static void snprintf_range(enum num_t t, struct strbuf *sb, struct range x) in snprintf_range() argument
234 static void print_range(enum num_t t, struct range x, const char *sfx) in print_range()
242 static const struct range unkn[] = {
249 static struct range unkn_subreg(enum num_t t) in unkn_subreg()
260 static struct range range(enum num_t t, u64 a, u64 b) in range() function
263 case U64: return (struct range){ (u64)a, (u64)b }; in range()
264 case U32: return (struct range){ (u32)a, (u32)b }; in range()
265 case S64: return (struct range){ (s64)a, (s64)b }; in range()
266 case S32: return (struct range){ (u32)(s32)a, (u32)(s32)b }; in range()
276 static bool range_eq(struct range x, struct range y) in range_eq()
281 static struct range range_cast_to_s32(struct range x) in range_cast_to_s32()
289 return range(S32, a, b); in range_cast_to_s32()
301 return range(S32, a, b); in range_cast_to_s32()
307 static struct range range_cast_u64(enum num_t to_t, struct range x) in range_cast_u64()
317 return range(U32, a, b); in range_cast_u64()
321 return range(S64, a, b); in range_cast_u64()
328 static struct range range_cast_s64(enum num_t to_t, struct range x) in range_cast_s64()
337 return range(U64, a, b); in range_cast_s64()
341 return range(U32, a, b); in range_cast_s64()
350 static struct range range_cast_u32(enum num_t to_t, struct range x) in range_cast_u32()
358 return range(to_t, a, b); in range_cast_u32()
362 return range_cast_to_s32(range(U32, a, b)); in range_cast_u32()
367 static struct range range_cast_s32(enum num_t to_t, struct range x) in range_cast_s32()
377 return range(to_t, a, b); in range_cast_s32()
389 static struct range range_cast(enum num_t from_t, enum num_t to_t, struct range from) in range_cast()
411 static bool is_valid_range(enum num_t t, struct range x) in is_valid_range()
425 static struct range range_improve(enum num_t t, struct range old, struct range new) in range_improve()
427 return range(t, max_t(t, old.a, new.a), min_t(t, old.b, new.b)); in range_improve()
430 static struct range range_refine(enum num_t x_t, struct range x, enum num_t y_t, struct range y) in range_refine()
432 struct range y_cast; in range_refine()
455 struct range x_swap; in range_refine()
462 x_swap = range(x_t, swap_low32(x.a, y_cast.a), swap_low32(x.b, y_cast.b)); in range_refine()
471 return range(x_t, x.a, y.b); in range_refine()
473 return range(x_t, y.a, x.b); in range_refine()
476 return range(x_t, y.a, x.b); in range_refine()
478 return range(x_t, x.a, y.b); in range_refine()
523 static bool range_canbe_op(enum num_t t, struct range x, struct range y, enum op op) in range_canbe_op()
552 static bool range_always_op(enum num_t t, struct range x, struct range y, enum op op) in range_always_op()
563 static bool range_never_op(enum num_t t, struct range x, struct range y, enum op op) in range_never_op()
573 static int range_branch_taken_op(enum num_t t, struct range x, struct range y, enum op op) in range_branch_taken_op()
589 static void range_cond(enum num_t t, struct range x, struct range y, in range_cond()
590 enum op op, struct range *newx, struct range *newy) in range_cond()
600 *newx = range(t, x.a, min_t(t, x.b, y.b - 1)); in range_cond()
601 *newy = range(t, max_t(t, x.a + 1, y.a), y.b); in range_cond()
604 *newx = range(t, x.a, min_t(t, x.b, y.b)); in range_cond()
605 *newy = range(t, max_t(t, x.a, y.a), y.b); in range_cond()
608 *newx = range(t, max_t(t, x.a, y.a + 1), x.b); in range_cond()
609 *newy = range(t, y.a, min_t(t, x.b - 1, y.b)); in range_cond()
612 *newx = range(t, max_t(t, x.a, y.a), x.b); in range_cond()
613 *newy = range(t, y.a, min_t(t, x.b, y.b)); in range_cond()
616 *newx = range(t, max_t(t, x.a, y.a), min_t(t, x.b, y.b)); in range_cond()
617 *newy = range(t, max_t(t, x.a, y.a), min_t(t, x.b, y.b)); in range_cond()
623 *newx = range(t, x.a, x.b); in range_cond()
624 *newy = range(t, y.a + 1, y.b); in range_cond()
627 *newx = range(t, x.a, x.b); in range_cond()
628 *newy = range(t, y.a, y.b - 1); in range_cond()
631 *newx = range(t, x.a + 1, x.b); in range_cond()
632 *newy = range(t, y.a, y.b); in range_cond()
635 *newx = range(t, x.a, x.b - 1); in range_cond()
636 *newy = range(t, y.a, y.b); in range_cond()
639 *newx = range(t, x.a, x.b); in range_cond()
640 *newy = range(t, y.a, y.b); in range_cond()
654 struct range r[4]; /* indexed by enum num_t: U64, U32, S64, S32 */
679 static void print_refinement(enum num_t s_t, struct range src, in print_refinement()
680 enum num_t d_t, struct range old, struct range new, in print_refinement()
691 static void reg_state_refine(struct reg_state *r, enum num_t t, struct range x, const char *ctx) in reg_state_refine()
694 struct range old; in reg_state_refine()
735 rs->r[tt] = tt == t ? range(t, val, val) : unkn[tt]; in reg_state_set_const()
747 struct range z1, z2; in reg_state_cond()
851 static int load_range_cmp_prog(struct range x, struct range y, enum op op, in load_range_cmp_prog()
1091 reg->r[t] = range(t, sval, sval); in parse_reg_state()
1196 static bool assert_range_eq(enum num_t t, struct range x, struct range y, in assert_range_eq()
1262 struct range x, struct range y, enum op op, in sim_case()
1281 struct range z = t_is_32(init_t) ? unkn_subreg(t) : unkn[t]; in sim_case()
1360 struct range *uranges, *sranges;
1361 struct range *usubranges, *ssubranges;
1381 struct range x;
1382 struct range y;
1400 struct range x, struct range y, enum op op) in verify_case_op()
1466 struct range x, struct range y, bool is_subtest) in verify_case_opt()
1520 struct range x, struct range y) in verify_case()
1642 snprintf_range(U64, sb1, range(U64, ctx->uvals[i], ctx->uvals[j])); in gen_ranges()
1643 snprintf_range(S64, sb2, range(S64, ctx->svals[i], ctx->svals[j])); in gen_ranges()
1661 ctx->uranges[cnt] = range(U64, ctx->uvals[i], ctx->uvals[j]); in gen_ranges()
1662 ctx->sranges[cnt] = range(S64, ctx->svals[i], ctx->svals[j]); in gen_ranges()
1675 snprintf_range(U32, sb1, range(U32, ctx->usubvals[i], ctx->usubvals[j])); in gen_ranges()
1676 snprintf_range(S32, sb2, range(S32, ctx->ssubvals[i], ctx->ssubvals[j])); in gen_ranges()
1694 ctx->usubranges[cnt] = range(U32, ctx->usubvals[i], ctx->usubvals[j]); in gen_ranges()
1695 ctx->ssubranges[cnt] = range(S32, ctx->ssubvals[i], ctx->ssubvals[j]); in gen_ranges()
1767 struct range rconst; in validate_gen_range_vs_const_64()
1768 const struct range *ranges; in validate_gen_range_vs_const_64()
1788 rconst = range(init_t, vals[i], vals[i]); in validate_gen_range_vs_const_64()
1806 struct range rconst; in validate_gen_range_vs_const_32()
1807 const struct range *ranges; in validate_gen_range_vs_const_32()
1827 rconst = range(init_t, vals[i], vals[i]); in validate_gen_range_vs_const_32()
1845 const struct range *ranges; in validate_gen_range_vs_range()
1967 static struct range rand_range(enum num_t t) in rand_range()
1971 return range(t, min_t(t, x, y), max_t(t, x, y)); in rand_range()
1977 struct range range1, range2; in validate_rand_ranges()
2007 range2 = range(init_t, t, t); in validate_rand_ranges()