Lines Matching refs:min

53 	if (!is_err_ptr(drange->min))  in get_err_pointer_str()
56 if (drange->min.value == drange->max.value) in get_err_pointer_str()
57 snprintf(buf, sizeof(buf), "(%lld)", drange->min.value); in get_err_pointer_str()
59 snprintf(buf, sizeof(buf), "(%lld)-(%lld)", drange->min.value, drange->max.value); in get_err_pointer_str()
80 sval_to_str(prev_drange->min), in show_rl()
81 sval_to_str(sval_type_max(prev_drange->min.type))); in show_rl()
90 } else if (sval_cmp(tmp->min, tmp->max) == 0) { in show_rl()
92 sval_to_str(tmp->min)); in show_rl()
95 sval_to_str(tmp->min), in show_rl()
132 static int truncates_nicely(struct symbol *type, sval_t min, sval_t max) in truncates_nicely() argument
137 if (type_is_fp(min.type) && !type_is_fp(type)) in truncates_nicely()
140 if (bits >= type_bits(min.type)) in truncates_nicely()
144 return (min.uvalue & mask) == (max.uvalue & mask); in truncates_nicely()
147 static void add_range_t(struct symbol *type, struct range_list **rl, sval_t min, sval_t max) in add_range_t() argument
150 if (sval_cmp(min, max) == 0) { in add_range_t()
151 add_range(rl, sval_cast(type, min), sval_cast(type, max)); in add_range_t()
156 if (sval_fits(type, min) && sval_fits(type, max)) { in add_range_t()
157 add_range(rl, sval_cast(type, min), sval_cast(type, max)); in add_range_t()
161 if (truncates_nicely(type, min, max)) { in add_range_t()
162 add_range(rl, sval_cast(type, min), sval_cast(type, max)); in add_range_t()
172 if (sval_too_big(type, min) || sval_too_big(type, max)) { in add_range_t()
178 if (sval_is_negative(min) && type_unsigned(type)) { in add_range_t()
189 min = sval_cast(type, min); in add_range_t()
190 add_range(rl, min, max); in add_range_t()
195 if (!sval_is_negative(sval_cast(type, min))) { in add_range_t()
196 add_range(rl, sval_cast(type, min), sval_type_max(type)); in add_range_t()
197 min = sval_type_min(type); in add_range_t()
199 min = sval_cast(type, min); in add_range_t()
202 add_range(rl, min, max); in add_range_t()
205 add_range(rl, sval_cast(type, min), sval_cast(type, max)); in add_range_t()
353 sval_t min, max; in filter_by_comparison() local
364 min = sval_type_min(cast_type); in filter_by_comparison()
385 ret_rl = remove_range(left_orig, min, sub_one(rl_min(right_orig))); in filter_by_comparison()
389 ret_rl = remove_range(left_orig, min, rl_min(right_orig)); in filter_by_comparison()
536 sval_t prev_min, min, max; in str_to_rl_helper() local
540 min = sval_type_min(type); in str_to_rl_helper()
545 if (sval_cmp(min, sval_type_min(type)) != 0) in str_to_rl_helper()
546 min = max; in str_to_rl_helper()
548 add_range_t(type, &rl_tmp, min, max); in str_to_rl_helper()
553 min = parse_val(0, call, type, c, &c); in str_to_rl_helper()
554 if (!sval_fits(type, min)) in str_to_rl_helper()
555 min = sval_type_min(type); in str_to_rl_helper()
556 max = min; in str_to_rl_helper()
560 add_range_t(type, &rl_tmp, min, min); in str_to_rl_helper()
564 add_range_t(type, &rl_tmp, min, min); in str_to_rl_helper()
569 min = prev_min; in str_to_rl_helper()
571 add_range_t(type, &rl_tmp, min, max); in str_to_rl_helper()
588 add_range_t(type, &rl_tmp, min, max); in str_to_rl_helper()
594 add_range_t(type, &rl_tmp, min, max); in str_to_rl_helper()
666 if (!sval_fits(type, tmp->min)) in rl_is_sane()
670 if (sval_cmp(tmp->min, tmp->max) > 0) in rl_is_sane()
702 if (sval_is_min(drange->min) && sval_is_max(drange->max)) in is_whole_rl()
718 if (sval_cmp(drange->min, valid_ptr_min_sval) == 0 && in is_unknown_ptr()
733 if (sval_unsigned(drange->min) && in is_whole_rl_non_zero()
734 drange->min.value == 1 && in is_whole_rl_non_zero()
737 if (!sval_is_min(drange->min) || drange->max.value != -1) in is_whole_rl_non_zero()
740 if (drange->min.value != 1 || !sval_is_max(drange->max)) in is_whole_rl_non_zero()
755 return drange->min; in rl_min()
773 sval_t min, max; in rl_to_sval() local
778 min = rl_min(rl); in rl_to_sval()
780 if (sval_cmp(min, max) != 0) in rl_to_sval()
782 *sval = min; in rl_to_sval()
793 static struct data_range *alloc_range_helper_sval(sval_t min, sval_t max, int perm) in alloc_range_helper_sval() argument
801 ret->min = min; in alloc_range_helper_sval()
806 struct data_range *alloc_range(sval_t min, sval_t max) in alloc_range() argument
808 return alloc_range_helper_sval(min, max, 0); in alloc_range()
811 struct data_range *alloc_range_perm(sval_t min, sval_t max) in alloc_range_perm() argument
813 return alloc_range_helper_sval(min, max, 1); in alloc_range_perm()
816 struct range_list *alloc_rl(sval_t min, sval_t max) in alloc_rl() argument
820 if (sval_cmp(min, max) > 0) in alloc_rl()
821 return alloc_whole_rl(min.type); in alloc_rl()
823 add_range(&rl, min, max); in alloc_rl()
837 static bool collapse_pointer_rl(struct range_list **rl, sval_t min, sval_t max) in collapse_pointer_rl() argument
857 if (!type_is_ptr(min.type)) in collapse_pointer_rl()
863 if (!is_err_ptr(tmp->min)) in collapse_pointer_rl()
870 if (sval_cmp(tmp->min, valid_ptr_min_sval) >= 0 && in collapse_pointer_rl()
874 add_range(&new_rl, tmp->min, tmp->max); in collapse_pointer_rl()
877 add_range(&new_rl, min, max); in collapse_pointer_rl()
887 void add_range(struct range_list **list, sval_t min, sval_t max) in add_range() argument
907 if (*list && rl_type(*list) != min.type) { in add_range()
909 min = sval_cast(rl_type(*list), min); in add_range()
911 } else if (min.type->type == SYM_PTR) { in add_range()
912 *list = cast_rl(min.type, *list); in add_range()
913 } else if (type_bits(rl_type(*list)) >= type_bits(min.type)) { in add_range()
914 min = sval_cast(rl_type(*list), min); in add_range()
917 *list = cast_rl(min.type, *list); in add_range()
921 if (sval_cmp(min, max) > 0) { in add_range()
922 min = sval_type_min(min.type); in add_range()
923 max = sval_type_max(min.type); in add_range()
926 if (collapse_pointer_rl(list, min, max)) in add_range()
938 if (!sval_is_max(max) && max.value + 1 == tmp->min.value) { in add_range()
946 if (sval_cmp(max, tmp->min) < 0) in add_range()
961 if (!sval_is_max(max) && max.value + 1 == tmp->min.value) { in add_range()
963 new = alloc_range(min, tmp->max); in add_range()
967 if (sval_cmp(max, tmp->min) < 0) { /* new range entirely below */ in add_range()
968 new = alloc_range(min, max); in add_range()
972 if (sval_cmp(min, tmp->min) < 0) { /* new range partially below */ in add_range()
977 new = alloc_range(min, max); in add_range()
985 if (sval_cmp(min, tmp->max) <= 0) { /* new range partially above */ in add_range()
986 min = tmp->min; in add_range()
987 new = alloc_range(min, max); in add_range()
992 if (!sval_is_min(min) && min.value - 1 == tmp->max.value) { in add_range()
994 new = alloc_range(tmp->min, max); in add_range()
1003 new = alloc_range(min, max); in add_range()
1028 new = alloc_range_perm(tmp->min, tmp->max); in clone_rl_permanent()
1040 add_range(&ret, tmp->min, tmp->max); in rl_union()
1043 add_range(&ret, tmp->min, tmp->max); in rl_union()
1048 struct range_list *remove_range(struct range_list *list, sval_t min, sval_t max) in remove_range() argument
1056 min = sval_cast(rl_type(list), min); in remove_range()
1058 if (sval_cmp(min, max) > 0) { in remove_range()
1059 sval_t tmp = min; in remove_range()
1060 min = max; in remove_range()
1065 if (sval_cmp(tmp->max, min) < 0) { in remove_range()
1066 add_range(&ret, tmp->min, tmp->max); in remove_range()
1069 if (sval_cmp(tmp->min, max) > 0) { in remove_range()
1070 add_range(&ret, tmp->min, tmp->max); in remove_range()
1073 if (sval_cmp(tmp->min, min) >= 0 && sval_cmp(tmp->max, max) <= 0) in remove_range()
1075 if (sval_cmp(tmp->min, min) >= 0) { in remove_range()
1079 min.value--; in remove_range()
1080 add_range(&ret, tmp->min, min); in remove_range()
1082 min.value--; in remove_range()
1084 add_range(&ret, tmp->min, min); in remove_range()
1097 if (sval_cmp(one->min, two->min) != 0) in ranges_equiv()
1133 if (sval_cmp(left->min, right->max) < 0) in true_comparison_range()
1138 if (sval_cmp(left->min, right->max) <= 0) in true_comparison_range()
1142 if (sval_cmp(left->max, right->min) < 0) in true_comparison_range()
1144 if (sval_cmp(left->min, right->max) > 0) in true_comparison_range()
1149 if (sval_cmp(left->max, right->min) >= 0) in true_comparison_range()
1154 if (sval_cmp(left->max, right->min) > 0) in true_comparison_range()
1158 if (sval_cmp(left->min, left->max) != 0) in true_comparison_range()
1160 if (sval_cmp(right->min, right->max) != 0) in true_comparison_range()
1162 if (sval_cmp(left->min, right->min) != 0) in true_comparison_range()
1185 if (sval_cmp(left->max, right->min) >= 0) in false_comparison_range_sval()
1190 if (sval_cmp(left->max, right->min) > 0) in false_comparison_range_sval()
1194 if (sval_cmp(left->min, left->max) != 0) in false_comparison_range_sval()
1196 if (sval_cmp(right->min, right->max) != 0) in false_comparison_range_sval()
1198 if (sval_cmp(left->min, right->min) != 0) in false_comparison_range_sval()
1203 if (sval_cmp(left->min, right->max) < 0) in false_comparison_range_sval()
1208 if (sval_cmp(left->min, right->max) <= 0) in false_comparison_range_sval()
1212 if (sval_cmp(left->max, right->min) < 0) in false_comparison_range_sval()
1214 if (sval_cmp(left->min, right->max) > 0) in false_comparison_range_sval()
1366 if (sval_cmp(tmp->min, sval) <= 0 && in rl_has_sval()
1413 sval_t min, max; in rl_truncate_cast() local
1422 min = tmp->min; in rl_truncate_cast()
1425 min.uvalue = tmp->min.uvalue & ((1ULL << type_bits(type)) - 1); in rl_truncate_cast()
1428 if (sval_cmp(min, max) > 0) { in rl_truncate_cast()
1429 min = sval_cast(type, min); in rl_truncate_cast()
1432 add_range_t(type, &ret, min, max); in rl_truncate_cast()
1457 if (type != tmp->min.type || type != tmp->max.type) in rl_type_consistent()
1469 sval_t min = { .type = &bool_ctype }; in cast_to_bool() local
1473 if (tmp->min.value || tmp->max.value) in cast_to_bool()
1475 if (sval_is_negative(tmp->min) && in cast_to_bool()
1478 if (tmp->min.value == 0 || in cast_to_bool()
1481 if (sval_is_negative(tmp->min) && in cast_to_bool()
1487 min.value = 1; in cast_to_bool()
1491 add_range(&ret, min, max); in cast_to_bool()
1514 add_range_t(type, &ret, tmp->min, tmp->max); in cast_rl()
1528 rl = remove_range(rl, tmp->min, tmp->max); in rl_filter()
1546 if (sval_cmp(one->max, two->min) < 0) { in do_intersection()
1550 if (sval_cmp(one->min, two->min) < 0 && sval_cmp(one->max, two->max) <= 0) { in do_intersection()
1551 add_range(&ret, two->min, one->max); in do_intersection()
1555 if (sval_cmp(one->min, two->min) >= 0 && sval_cmp(one->max, two->max) <= 0) { in do_intersection()
1556 add_range(&ret, one->min, one->max); in do_intersection()
1560 if (sval_cmp(one->min, two->min) < 0 && sval_cmp(one->max, two->max) > 0) { in do_intersection()
1561 add_range(&ret, two->min, two->max); in do_intersection()
1565 if (sval_cmp(one->min, two->max) <= 0 && sval_cmp(one->max, two->max) > 0) { in do_intersection()
1566 add_range(&ret, one->min, two->max); in do_intersection()
1570 if (sval_cmp(one->min, two->max) <= 0) { in do_intersection()
1641 if (sval_is_positive(tmp->min)) in get_neg_rl()
1644 new = alloc_range(tmp->min, tmp->max); in get_neg_rl()
1646 add_range(&ret, new->min, new->max); in get_neg_rl()
1649 add_range(&ret, tmp->min, tmp->max); in get_neg_rl()
1669 if (sval_is_positive(tmp->min)) { in get_pos_rl()
1670 add_range(&ret, tmp->min, tmp->max); in get_pos_rl()
1673 new = alloc_range(tmp->min, tmp->max); in get_pos_rl()
1674 new->min.value = 0; in get_pos_rl()
1675 add_range(&ret, new->min, new->max); in get_pos_rl()
1684 sval_t min, max; in divide_rl_helper() local
1700 min = sval_binop(rl_min(left), '/', right_max); in divide_rl_helper()
1702 return alloc_rl(min, max); in divide_rl_helper()
1757 sval_t min, max; in handle_add_mult_rl() local
1764 min = sval_binop(rl_min(left), op, rl_min(right)); in handle_add_mult_rl()
1770 return alloc_rl(min, max); in handle_add_mult_rl()
1777 sval_t min, max; in handle_sub_rl() local
1796 min = sval_type_min(type); in handle_sub_rl()
1807 if (sval_cmp(tmp, min) > 0) in handle_sub_rl()
1808 min = tmp; in handle_sub_rl()
1811 (min.value != 0 && sval_cmp(res_ll, min) >= 0)) { in handle_sub_rl()
1826 if (sval_is_min(min) && sval_is_max(max)) in handle_sub_rl()
1829 return alloc_rl(min, max); in handle_sub_rl()
1845 sval_t min, max; in handle_OR_rl() local
1857 min.type = max.type = &ullong_ctype; in handle_OR_rl()
1858 min.uvalue = left_min | right_min; in handle_OR_rl()
1861 return cast_rl(rl_type(left), alloc_rl(min, max)); in handle_OR_rl()
1901 sval_t min, max, zero; in handle_AND_rl() local
1910 min = sval_lowest_set_bit(max); in handle_AND_rl()
1912 rl = alloc_rl(min, max); in handle_AND_rl()
1927 sval_t shift, min, max; in handle_lshift() local
1944 min = tmp->min; in handle_lshift()
1947 if (min.value == 0 || max.value > sval_type_max(max.type).uvalue >> shift.uvalue) in handle_lshift()
1949 if (min.value == 0 && max.value == 0) in handle_lshift()
1951 if (min.value == 0) in handle_lshift()
1952 min.value = 1; in handle_lshift()
1953 min = sval_binop(min, SPECIAL_LEFTSHIFT, shift); in handle_lshift()
1955 add_range(&ret, min, max); in handle_lshift()
1971 sval_t shift, min, max; in handle_rshift() local
1979 min = sval_binop(tmp->min, SPECIAL_RIGHTSHIFT, shift); in handle_rshift()
1981 add_range(&ret, min, max); in handle_rshift()
2069 sval_t min, max; in split_comparison_rl() local
2071 min = sval_type_min(rl_type(left_orig)); in split_comparison_rl()
2084 left_false = remove_range(left_orig, min, sub_one(rl_min(right_orig))); in split_comparison_rl()
2087 right_true = remove_range(right_orig, min, rl_min(left_orig)); in split_comparison_rl()
2095 left_false = remove_range(left_orig, min, rl_min(right_orig)); in split_comparison_rl()
2098 right_true = remove_range(right_orig, min, sub_one(rl_min(left_orig))); in split_comparison_rl()
2118 left_true = remove_range(left_orig, min, sub_one(rl_min(right_orig))); in split_comparison_rl()
2123 right_false = remove_range(right_orig, min, rl_min(left_orig)); in split_comparison_rl()
2132 left_true = remove_range(left_orig, min, rl_min(right_orig)); in split_comparison_rl()
2138 right_false = remove_range(right_orig, min, sub_one(rl_min(left_orig))); in split_comparison_rl()