Lines Matching refs:precision
84 canonize (HOST_WIDE_INT *val, unsigned int len, unsigned int precision) in canonize() argument
86 unsigned int blocks_needed = BLOCKS_NEEDED (precision); in canonize()
97 if (len * HOST_BITS_PER_WIDE_INT > precision) in canonize()
98 val[len - 1] = top = sext_hwi (top, precision % HOST_BITS_PER_WIDE_INT); in canonize()
126 canonize_uhwi (HOST_WIDE_INT *val, unsigned int precision) in canonize_uhwi() argument
128 if (val[0] < 0 && precision > HOST_BITS_PER_WIDE_INT) in canonize_uhwi()
145 unsigned int xlen, unsigned int precision, bool need_canon) in from_array() argument
149 return need_canon ? canonize (val, xlen, precision) : xlen; in from_array()
159 unsigned int precision = buffer_len * BITS_PER_UNIT; in from_buffer() local
160 wide_int result = wide_int::create (precision); in from_buffer()
165 unsigned int len = BLOCKS_NEEDED (precision); in from_buffer()
200 result.set_len (canonize (val, len, precision)); in from_buffer()
316 wi::max_value (unsigned int precision, signop sgn) in max_value() argument
318 gcc_checking_assert (precision != 0); in max_value()
321 return shwi (-1, precision); in max_value()
325 return mask (precision - 1, false, precision); in max_value()
330 wi::min_value (unsigned int precision, signop sgn) in min_value() argument
332 gcc_checking_assert (precision != 0); in min_value()
334 return uhwi (0, precision); in min_value()
338 return wi::set_bit_in_zero (precision - 1, precision); in min_value()
354 unsigned int precision, signop sgn) in force_to_size() argument
356 unsigned int blocks_needed = BLOCKS_NEEDED (precision); in force_to_size()
361 if (precision > xprecision) in force_to_size()
386 len = canonize (val, len, precision); in force_to_size()
468 unsigned int precision, in lts_p_large() argument
473 unsigned int blocks_needed = BLOCKS_NEEDED (precision); in lts_p_large()
474 unsigned int small_prec = precision & (HOST_BITS_PER_WIDE_INT - 1); in lts_p_large()
506 unsigned int precision, in cmps_large() argument
511 unsigned int blocks_needed = BLOCKS_NEEDED (precision); in cmps_large()
512 unsigned int small_prec = precision & (HOST_BITS_PER_WIDE_INT - 1); in cmps_large()
543 unsigned int precision, in ltu_p_large() argument
548 unsigned int blocks_needed = BLOCKS_NEEDED (precision); in ltu_p_large()
549 unsigned int small_prec = precision & (HOST_BITS_PER_WIDE_INT - 1); in ltu_p_large()
570 unsigned int precision, in cmpu_large() argument
575 unsigned int blocks_needed = BLOCKS_NEEDED (precision); in cmpu_large()
576 unsigned int small_prec = precision & (HOST_BITS_PER_WIDE_INT - 1); in cmpu_large()
602 unsigned int xlen, unsigned int precision, unsigned int offset) in sext_large() argument
607 if (offset >= precision || len >= xlen) in sext_large()
621 return canonize (val, len, precision); in sext_large()
629 unsigned int xlen, unsigned int precision, unsigned int offset) in zext_large() argument
635 if (offset >= precision || (len >= xlen && xval[xlen - 1] >= 0)) in zext_large()
648 return canonize (val, len + 1, precision); in zext_large()
664 unsigned int precision = x.get_precision (); in insert() local
665 if (start >= precision) in insert()
668 gcc_checking_assert (precision >= width); in insert()
670 if (start + width >= precision) in insert()
671 width = precision - start; in insert()
673 mask = wi::shifted_mask (start, width, false, precision); in insert()
674 tmp = wi::lshift (wide_int::from (y, precision, UNSIGNED), start); in insert()
688 unsigned int xlen, unsigned int precision, unsigned int bit) in set_bit_large() argument
704 if (bit + 1 < precision && subbit == HOST_BITS_PER_WIDE_INT - 1) in set_bit_large()
713 return canonize (val, xlen, precision); in set_bit_large()
721 wide_int result = wide_int::create (precision); in bswap()
723 unsigned int len = BLOCKS_NEEDED (precision); in bswap()
730 gcc_assert ((precision & 0x7) == 0); in bswap()
736 for (s = 0; s < precision; s += 8) in bswap()
738 unsigned int d = precision - s - 8; in bswap()
752 result.set_len (canonize (val, len, precision)); in bswap()
1238 unsigned int in_len, unsigned int precision) in wi_pack() argument
1242 unsigned int blocks_needed = BLOCKS_NEEDED (precision); in wi_pack()
1257 return canonize (result, j, precision); in wi_pack()
1495 count = x.precision - x.len * HOST_BITS_PER_WIDE_INT; in popcount()
1890 unsigned int xlen, unsigned int precision, in lshift_large() argument
1898 unsigned int len = BLOCKS_NEEDED (precision); in lshift_large()
1919 return canonize (val, len, precision); in lshift_large()
1963 unsigned int precision, unsigned int shift) in lrshift_large() argument
1969 if (precision > xprecision - shift) in lrshift_large()
1981 return canonize (val, len, precision); in lrshift_large()
1990 unsigned int precision, unsigned int shift) in arshift_large() argument
1996 if (precision > xprecision - shift) in arshift_large()
2002 return canonize (val, len, precision); in arshift_large()
2010 int count = x.precision - x.len * HOST_BITS_PER_WIDE_INT; in clz()
2034 int count = x.precision - x.len * HOST_BITS_PER_WIDE_INT; in clrsb()
2062 return x.precision; in ctz()
2078 if (x.len * HOST_BITS_PER_WIDE_INT < x.precision && x.sign_mask () < 0) in exact_log2()
2095 if ((crux + 1) * HOST_BITS_PER_WIDE_INT > x.precision) in exact_log2()
2096 hwi = zext_hwi (hwi, x.precision % HOST_BITS_PER_WIDE_INT); in exact_log2()
2109 return x.precision - 1 - clz (x); in floor_log2()
2123 wi::only_sign_bit_p (const wide_int_ref &x, unsigned int precision) in only_sign_bit_p() argument
2125 return ctz (x) + 1 == int (precision); in only_sign_bit_p()
2132 return only_sign_bit_p (x, x.precision); in only_sign_bit_p()
2153 unsigned int precision = val.get_precision (); in round_down_for_mask() local
2154 wide_int lower_mask = wi::mask (precision - wi::clz (extra_bits), in round_down_for_mask()
2155 false, precision); in round_down_for_mask()
2178 unsigned int precision = val.get_precision (); in round_up_for_mask() local
2179 wide_int upper_mask = wi::mask (precision - wi::clz (extra_bits), in round_up_for_mask()
2180 true, precision); in round_up_for_mask()