Lines Matching refs:wi
55 return wi::max_value (TYPE_PRECISION (type) , TYPE_SIGN (type));
63 return wi::min_value (TYPE_PRECISION (type) , TYPE_SIGN (type));
111 return wi::le_p (wmin, 0, sign) && wi::ge_p (wmax, 0, sign);
120 return wmin == wmax && wi::eq_p (wmin, wi::zero (prec));
148 widest_int rh_range = wi::sub (widest_int::from (rh_ub, TYPE_SIGN (type)),
150 widest_int lh_range = wi::sub (widest_int::from (lh_ub, TYPE_SIGN (type)),
318 if (wi::cmp (tmin, tmax, sgn) < 0)
321 if (wi::cmp (tmax, tem, sgn) > 0)
327 if (covers || wi::cmp (tmin, tmax, sgn) > 0)
344 wi::overflow_type min_ovf = wi::OVF_NONE,
345 wi::overflow_type max_ovf = wi::OVF_NONE)
353 if (prec == 1 && wi::ne_p (wmax, wmin))
363 if ((min_ovf != wi::OVF_NONE) == (max_ovf != wi::OVF_NONE))
369 if (wi::gt_p (tmin, tmax, sgn))
379 if ((min_ovf == wi::OVF_UNDERFLOW && max_ovf == wi::OVF_NONE)
380 || (max_ovf == wi::OVF_OVERFLOW && min_ovf == wi::OVF_NONE))
390 if ((min_ovf == wi::OVF_OVERFLOW && max_ovf == wi::OVF_OVERFLOW)
391 || (min_ovf == wi::OVF_UNDERFLOW && max_ovf == wi::OVF_UNDERFLOW))
399 if (min_ovf == wi::OVF_UNDERFLOW)
400 new_lb = wi::min_value (prec, sgn);
401 else if (min_ovf == wi::OVF_OVERFLOW)
402 new_lb = wi::max_value (prec, sgn);
406 if (max_ovf == wi::OVF_UNDERFLOW)
407 new_ub = wi::min_value (prec, sgn);
408 else if (max_ovf == wi::OVF_OVERFLOW)
409 new_ub = wi::max_value (prec, sgn);
428 if (wi::gt_p (new_lb, new_ub, s))
441 return int_range<1> (type, wi::one (prec), wi::one (prec));
450 return int_range<1> (type, wi::zero (prec), wi::zero (prec));
459 return int_range<1> (type, wi::zero (prec), wi::one (prec));
571 wi::eq_p (op1.lower_bound (), op1.upper_bound ())
572 && wi::eq_p (op2.lower_bound (), op2.upper_bound ()))
574 if (wi::eq_p (op1.lower_bound (), op2.upper_bound()))
604 if (wi::eq_p (op2.lower_bound(), op2.upper_bound()))
680 if (wi::eq_p (op1.lower_bound (), op1.upper_bound ())
681 && wi::eq_p (op2.lower_bound (), op2.upper_bound ()))
683 if (wi::ne_p (op1.lower_bound (), op2.upper_bound()))
713 if (wi::eq_p (op2.lower_bound(), op2.upper_bound()))
748 wi::overflow_type ov;
754 lim = wi::add (val, -1, sgn, &ov);
756 lim = wi::sub (val, 1, sgn, &ov);
778 wi::overflow_type ov;
784 lim = wi::sub (val, -1, sgn, &ov);
786 lim = wi::add (val, 1, sgn, &ov);
851 if (wi::lt_p (op1.upper_bound (), op2.lower_bound (), sign))
853 else if (!wi::lt_p (op1.lower_bound (), op2.upper_bound (), sign))
953 if (wi::le_p (op1.upper_bound (), op2.lower_bound (), sign))
955 else if (!wi::le_p (op1.lower_bound (), op2.upper_bound (), sign))
1055 if (wi::gt_p (op1.lower_bound (), op2.upper_bound (), sign))
1057 else if (!wi::gt_p (op1.upper_bound (), op2.lower_bound (), sign))
1156 if (wi::ge_p (op1.lower_bound (), op2.upper_bound (), sign))
1158 else if (!wi::ge_p (op1.upper_bound (), op2.lower_bound (), sign))
1245 wi::overflow_type ovf1, ovf2;
1254 wi::add (op1.lower_bound (), op2.lower_bound (), sign, &ovf1);
1255 wi::add (op1.upper_bound (), op2.upper_bound (), sign, &ovf2);
1258 ovf1 = ovf2 = wi::OVF_NONE;
1264 if (wi::gt_p (op2.lower_bound (), wi::zero (prec), sign))
1266 if (wi::ge_p (op2.lower_bound (), wi::zero (prec), sign))
1270 if (wi::lt_p (op2.upper_bound (), wi::zero (prec), sign))
1272 if (wi::le_p (op2.upper_bound (), wi::zero (prec), sign))
1279 if (wi::gt_p (op2.lower_bound (), wi::zero (prec), sign))
1281 if (wi::ge_p (op2.lower_bound (), wi::zero (prec), sign))
1285 if (wi::lt_p (op2.upper_bound (), wi::zero (prec), sign))
1287 if (wi::le_p (op2.upper_bound (), wi::zero (prec), sign))
1313 wi::overflow_type ov_lb, ov_ub;
1315 wide_int new_lb = wi::add (lh_lb, rh_lb, s, &ov_lb);
1316 wide_int new_ub = wi::add (lh_ub, rh_ub, s, &ov_ub);
1367 wi::overflow_type ov_lb, ov_ub;
1369 wide_int new_lb = wi::sub (lh_lb, rh_ub, s, &ov_lb);
1370 wide_int new_ub = wi::sub (lh_ub, rh_lb, s, &ov_ub);
1393 rel_range = int_range<2> (type, wi::zero (prec), wi::zero (prec));
1395 rel_range = int_range<2> (type, wi::zero (prec), wi::zero (prec),
1405 rel_range = int_range<2> (type, wi::zero (prec), wi::zero (prec),
1418 rel_range = int_range<2> (type, wi::one (prec),
1419 wi::max_value (prec, sgn));
1423 rel_range = int_range<2> (type, wi::zero (prec),
1424 wi::max_value (prec, sgn));
1428 rel_range = int_range<2> (type, wi::min_value (prec, sgn),
1429 wi::minus_one (prec));
1433 rel_range = int_range<2> (type, wi::min_value (prec, sgn),
1434 wi::zero (prec));
1509 wide_int new_lb = wi::min (lh_lb, rh_lb, s);
1510 wide_int new_ub = wi::min (lh_ub, rh_ub, s);
1531 wide_int new_lb = wi::max (lh_lb, rh_lb, s);
1532 wide_int new_ub = wi::max (lh_ub, rh_ub, s);
1583 if (wi::eq_p (lh_lb, lh_ub))
1587 if (wi::eq_p (rh_lb, rh_ub))
1591 if (wi::eq_p (lh_lb, lh_ub))
1598 if (wi::gt_p (cp1, cp2, sign))
1600 if (wi::gt_p (cp3, cp4, sign))
1604 wide_int res_lb = wi::min (cp1, cp3, sign);
1605 wide_int res_ub = wi::max (cp2, cp4, sign);
1661 wi::overflow_type overflow = wi::OVF_NONE;
1663 res = wi::mul (w0, w1, sign, &overflow);
1669 res = wi::max_value (w0.get_precision (), sign);
1671 res = wi::min_value (w0.get_precision (), sign);
1704 widest2_int sizem1 = wi::mask <widest2_int> (prec, false);
1710 if (wi::ltu_p (size, min0 + max0))
1715 if (wi::ltu_p (size, min1 + max1))
1745 if (wi::geu_p (prod2, sizem1))
1779 wi::overflow_type overflow = wi::OVF_NONE;
1790 res = wi::div_trunc (w0, w1, sign, &overflow);
1793 res = wi::div_floor (w0, w1, sign, &overflow);
1796 res = wi::div_round (w0, w1, sign, &overflow);
1799 res = wi::div_ceil (w0, w1, sign, &overflow);
1808 res = wi::max_value (w0.get_precision (), sign);
1846 if (wi::neg_p (divisor_min, sign))
1848 divisor_min, wi::minus_one (prec));
1853 if (wi::gt_p (divisor_max, wi::zero (prec), sign))
1857 wi::one (prec), divisor_max);
1955 && wi::ge_p (op1.lower_bound (), 0, TYPE_SIGN (op1.type ()))
1956 && wi::ge_p (op2.lower_bound (), 0, TYPE_SIGN (op2.type ())))
1981 wide_int tmp = wi::set_bit_in_zero (shift, TYPE_PRECISION (type));
2012 if (wi::eq_p (rh_ub, rh_lb) && wi::eq_p (rh_ub, 0))
2018 wide_int bound = wi::set_bit_in_zero (bound_shift, prec);
2027 if (wi::ltu_p (lh_ub, low_bound))
2034 else if (wi::ltu_p (high_bound, lh_lb))
2048 if (wi::lts_p (lh_ub, high_bound)
2049 && wi::lts_p (low_bound, lh_lb))
2070 if (wi::neg_p (w1))
2075 res = wi::rshift (w0, -w1, sign);
2078 res = wi::lshift (w0, w1);
2098 wide_int shift = wi::to_wide (shift_amount);
2099 if (wi::lt_p (shift, 0, SIGNED))
2101 if (wi::ge_p (shift, wi::uhwi (TYPE_PRECISION (type),
2137 wide_int up_mask = wi::mask (low_bits, true, TYPE_PRECISION (utype));
2138 wide_int new_ub = wi::bit_or (up_mask, tmp_range.upper_bound ());
2139 wide_int new_lb = wi::set_bit (tmp_range.lower_bound (), low_bits);
2165 if (wi::ge_p (wi::to_wide (shift),
2166 wi::uhwi (prec, TYPE_PRECISION (TREE_TYPE (shift))),
2169 if (wi::to_wide (shift) == 0)
2219 if (wi::neg_p (w1))
2220 res = wi::lshift (w0, -w1);
2226 res = wi::rshift (w0, w1, sign);
2294 wide_int domain_min = wi::to_wide (vrp_val_min (range.type ()));
2295 wide_int domain_max = wi::to_wide (vrp_val_max (range.type ()));
2297 return (wi::le_p (min, domain_max, domain_sign)
2298 && wi::le_p (max, domain_max, domain_sign)
2299 && wi::ge_p (min, domain_min, domain_sign)
2300 && wi::ge_p (max, domain_min, domain_sign));
2324 if (wi::rshift (wi::sub (inner_ub, inner_lb),
2325 wi::uhwi (outer_prec, TYPE_PRECISION (inner.type ())),
2417 wide_int lim = wi::set_bit_in_zero (TYPE_PRECISION (lhs_type),
2419 r = int_range<1> (type, lim, wi::max_value (TYPE_PRECISION (type),
2425 lim = wi::mask (TYPE_PRECISION (lhs_type), true,
2442 wide_int min_val = wi::min_value (TYPE_PRECISION (type), SIGNED);
2446 wi::min_value (TYPE_PRECISION (type),
2508 if ((wi::eq_p (lh.lower_bound (), 0) && wi::eq_p (lh.upper_bound (), 0))
2509 || (wi::eq_p (lh.lower_bound (), 0) && wi::eq_p (rh.upper_bound (), 0)))
2586 wide_int x = wi::to_wide (mask);
2587 return wi::ge_p (x, 0, TYPE_SIGN (op.type ()));
2605 int leading_zeros = wi::clz (mask);
2619 wide_int one = wi::one (prec);
2621 if (wi::bit_and (mask, wi::lshift (one, wi::uhwi (i, prec))) == 0)
2679 if (wi::eq_p (rh_lb, rh_ub))
2685 else if (wi::eq_p (lh_lb, lh_ub))
2707 if (wi::eq_p (w, 0))
2711 n = wi::ctz (w);
2712 w = ~(w | wi::mask (n, false, w.get_precision ()));
2713 if (wi::eq_p (w, 0))
2716 m = wi::ctz (w) - n;
2718 wide_int new_mask = wi::mask (m + n, true, w.get_precision ());
2725 res_lb = wi::bit_and (lower_bound, mask);
2726 res_ub = wi::bit_and (upper_bound, mask);
2730 res_lb = wi::bit_or (lower_bound, mask);
2731 res_ub = wi::bit_or (upper_bound, mask);
2738 if (code == BIT_IOR_EXPR && wi::ne_p (mask, 0))
2765 if (wi::eq_p (lb, ub))
2767 else if (wi::ge_p (lb, 0, sign) || wi::lt_p (ub, 0, sign))
2774 wide_int mask = wi::mask (wi::floor_log2 (xor_mask), false,
2777 mustbe_nonzero = wi::bit_and_not (mustbe_nonzero, mask);
2782 maybe_nonzero = wi::minus_one (lb.get_precision ());
2783 mustbe_nonzero = wi::zero (lb.get_precision ());
2811 if (wi::lt_p (lh_ub, 0, sign) && wi::lt_p (rh_ub, 0, sign))
2813 new_ub = wi::min (new_ub, lh_ub, sign);
2814 new_ub = wi::min (new_ub, rh_ub, sign);
2819 if (wi::ge_p (lh_lb, 0, sign))
2820 new_ub = wi::min (new_ub, lh_ub, sign);
2821 if (wi::ge_p (rh_lb, 0, sign))
2822 new_ub = wi::min (new_ub, rh_ub, sign);
2825 if (wi::gt_p (new_lb, new_ub, sign))
2827 wide_int sign_bit = wi::set_bit_in_zero (prec - 1, prec);
2829 && ((wi::eq_p (lh_lb, lh_ub)
2830 && !wi::cmps (lh_lb, sign_bit))
2831 || (wi::eq_p (rh_lb, rh_ub)
2832 && !wi::cmps (rh_lb, sign_bit))))
2834 new_lb = wi::min_value (prec, sign);
2835 new_ub = wi::zero (prec);
2839 if (wi::gt_p (new_lb, new_ub,sign))
2869 bool cst2n = wi::neg_p (cst2v, TYPE_SIGN (type));
2872 sgnbit = wi::set_bit_in_zero (nprec - 1, nprec);
2874 sgnbit = wi::zero (nprec);
2896 maxv = wi::mask (nprec - (cst2n ? 1 : 0), false, nprec);
3072 if (wi::ge_p (lh_lb, 0, sign)
3073 && wi::ge_p (rh_lb, 0, sign))
3075 new_lb = wi::max (new_lb, lh_lb, sign);
3076 new_lb = wi::max (new_lb, rh_lb, sign);
3081 if (wi::lt_p (lh_ub, 0, sign))
3082 new_lb = wi::max (new_lb, lh_lb, sign);
3083 if (wi::lt_p (rh_ub, 0, sign))
3084 new_lb = wi::max (new_lb, rh_lb, sign);
3086 if (wi::gt_p (new_lb, new_ub, sign))
3089 if (wi::gt_p (lh_lb, 0, sign)
3090 || wi::gt_p (rh_lb, 0, sign)
3091 || wi::lt_p (lh_ub, 0, sign)
3092 || wi::lt_p (rh_ub, 0, sign))
3172 = (wi::bit_and_not (mustbe_nonzero_lh, maybe_nonzero_rh)
3173 | wi::bit_and_not (mustbe_nonzero_rh, maybe_nonzero_lh));
3179 if (wi::lt_p (new_lb, 0, sign) || wi::ge_p (new_ub, 0, sign))
3299 wi::overflow_type ov = wi::OVF_NONE;
3300 tmp = wi::mod_trunc (lh_lb, rh_lb, sign, &ov);
3301 if (ov == wi::OVF_NONE)
3313 new_ub = wi::smax (new_ub, tmp);
3317 new_lb = wi::zero (prec);
3322 if (wi::gts_p (tmp, 0))
3323 tmp = wi::zero (prec);
3324 new_lb = wi::smax (new_lb, tmp);
3327 if (sign == SIGNED && wi::neg_p (tmp))
3328 tmp = wi::zero (prec);
3329 new_ub = wi::min (new_ub, tmp, sign);
3344 if (wi::gt_p (lhs.lower_bound (), 0, sign))
3346 r = value_range (type, lhs.lower_bound (), wi::max_value (prec, sign));
3350 if (wi::lt_p (lhs.upper_bound (), 0, sign))
3352 r = value_range (type, wi::min_value (prec, sign), lhs.upper_bound ());
3369 if (wi::gt_p (lhs.lower_bound (), 0, sign))
3372 r = value_range (type, wi::neg (lhs.lower_bound ()),
3374 else if (wi::lt_p (lhs.lower_bound (), wi::max_value (prec, sign),
3377 wi::max_value (prec, sign));
3383 if (wi::lt_p (lhs.upper_bound (), 0, sign))
3385 if (wi::gt_p (lhs.upper_bound (), wi::min_value (prec, sign), sign))
3387 wi::neg (lhs.upper_bound ()), VR_ANTI_RANGE);
3477 int_range<1> minusone (type, wi::minus_one (TYPE_PRECISION (type)),
3478 wi::minus_one (TYPE_PRECISION (type)));
3612 if (sign == UNSIGNED || wi::ge_p (lh_lb, 0, sign))
3620 wide_int min_value = wi::min_value (prec, sign);
3621 wide_int max_value = wi::max_value (prec, sign);
3622 if (!TYPE_OVERFLOW_UNDEFINED (type) && wi::eq_p (lh_lb, min_value))
3630 if (wi::eq_p (lh_lb, min_value))
3634 if (wi::eq_p (lh_ub, min_value))
3642 min = wi::abs (lh_lb);
3644 if (wi::eq_p (lh_ub, min_value))
3647 max = wi::abs (lh_ub);
3651 if (wi::le_p (lh_lb, 0, sign) && wi::ge_p (lh_ub, 0, sign))
3653 if (wi::gt_p (min, max, sign))
3655 min = wi::zero (prec);
3660 if (wi::gt_p (min, max, sign))
3667 if (wi::gt_p (min, max, sign))
3669 min = wi::zero (prec);
3700 wide_int min_value = wi::min_value (TYPE_PRECISION (type), TYPE_SIGN (type));
3702 if (!TYPE_OVERFLOW_UNDEFINED (type) && wi::eq_p (lb, min_value))
3725 if (wi::ges_p (lh_lb, 0))
3732 new_lb = wi::abs (lh_lb);
3733 new_ub = wi::abs (lh_ub);
3737 if (wi::ges_p (lh_ub, 0))
3739 if (wi::gtu_p (new_lb, new_ub))
3741 new_lb = wi::zero (TYPE_PRECISION (type));
3887 || !wi::sign_mask (rh_ub)))
4178 ASSERT_TRUE (r1.lower_bound () == wi::to_wide (minshort)
4179 && r1.upper_bound() == wi::to_wide (maxshort));