GCC Middle and Back End API Reference
|
#include <double-int.h>
Static Public Member Functions | |
static double_int | from_uhwi (unsigned HOST_WIDE_INT cst) |
static double_int | from_shwi (HOST_WIDE_INT cst) |
static double_int | from_pair (HOST_WIDE_INT high, unsigned HOST_WIDE_INT low) |
static double_int | from_buffer (const unsigned char *buffer, int len) |
static double_int | mask (unsigned prec) |
static double_int | max_value (unsigned int prec, bool uns) |
static double_int | min_value (unsigned int prec, bool uns) |
Data Fields | |
unsigned HOST_WIDE_INT | low |
HOST_WIDE_INT | high |
A large integer is currently represented as a pair of HOST_WIDE_INTs. It therefore represents a number with precision of 2 * HOST_BITS_PER_WIDE_INT bits (it is however possible that the internal representation will change, if numbers with greater precision are needed, so the users should not rely on it). The representation does not contain any information about signedness of the represented value, so it can be used to represent both signed and unsigned numbers. For operations where the results depend on signedness (division, comparisons), it must be specified separately. For each such operation, there are three versions of the function -- double_int_op, that takes an extra UNS argument giving the signedness of the values, and double_int_sop and double_int_uop that stand for its specializations for signed and unsigned values. You may also represent with numbers in smaller precision using double_int. You however need to use double_int_ext (that fills in the bits of the number over the prescribed precision with zeros or with the sign bit) before operations that do not perform arithmetics modulo 2^precision (comparisons, division), and possibly before storing the results, if you want to keep them in some canonical form). In general, the signedness of double_int_ext should match the signedness of the operation. ??? The components of double_int differ in signedness mostly for historical reasons (they replace an older structure used to represent numbers with precision higher than HOST_WIDE_INT). It might be less confusing to have them both signed or both unsigned.
double_int double_int::add_with_sign | ( | double_int | b, |
bool | unsigned_p, | ||
bool * | overflow | ||
) | const |
Returns A + B. If the operation overflows according to UNSIGNED_P, *OVERFLOW is set to nonzero.
References add_double_with_sign(), high, and low.
Referenced by fold_div_compare(), int_const_binop_1(), plus_constant(), and pointer_may_wrap_p().
double_int double_int::alshift | ( | HOST_WIDE_INT | count, |
unsigned int | prec | ||
) | const |
Arithmetic shift A left by COUNT places keeping only PREC bits of result. Shift right if COUNT is negative.
References absu_hwi(), high, low, lshift_double(), and rshift_double().
Referenced by fixed_saturate1(), fixed_saturate2(), and simplify_const_binary_operation().
|
inline |
Returns A & ~B.
Referenced by bit_value_binop_1(), dump_lattice_value(), extract_range_from_binary_expr_1(), fold_binary_loc(), get_inner_reference(), simplify_bit_ops_using_ranges(), try_combine(), and valid_lattice_transition().
double_int double_int::arshift | ( | HOST_WIDE_INT | count, |
unsigned int | prec | ||
) | const |
Arithmetic shift A right by COUNT places keeping only PREC bits of result. Shift left if COUNT is negative.
References absu_hwi(), high, low, lshift_double(), and rshift_double().
Referenced by get_inner_reference(), and predict_iv_comparison().
int double_int::cmp | ( | double_int | b, |
bool | uns | ||
) | const |
Returns -1 if A < B, 0 if A == B and 1 if A > B. Signedness of the comparison is given by UNS.
References scmp(), and ucmp().
Referenced by bit_value_binop_1(), extract_range_from_binary_expr_1(), fold_array_ctor_reference(), fold_nonarray_ctor_reference(), int_fits_type_p(), max(), min(), quad_int_cmp(), and simplify_conversion_using_ranges().
double_int double_int::div | ( | double_int | b, |
bool | uns, | ||
unsigned | code | ||
) | const |
Returns A / B (computed as unsigned depending on UNS, and rounded as specified by CODE). CODE is enum tree_code in fact, but double_int.h must be included before tree.h.
References divmod(), and mod().
Referenced by choose_multiplier(), field_byte_offset(), round_up_to_align(), sdiv(), tree_fold_binomial(), and udiv().
double_int double_int::divmod | ( | double_int | b, |
bool | uns, | ||
unsigned | code, | ||
double_int * | mod | ||
) | const |
References div_and_round_double(), high, and low.
Referenced by div(), div_if_zero_remainder(), do_fixed_divide(), mod(), multiple_of(), predict_iv_comparison(), sdivmod(), and udivmod().
double_int double_int::divmod_with_overflow | ( | double_int | b, |
bool | uns, | ||
unsigned | code, | ||
double_int * | mod, | ||
bool * | overflow | ||
) | const |
Returns A / B (computed as unsigned depending on UNS, and rounded as specified by CODE). CODE is enum tree_code in fact, but double_int.h must be included before tree.h. The remainder after the division is stored to MOD.
References div_and_round_double(), high, and low.
Referenced by int_const_binop_1(), predict_iv_comparison(), and simplify_const_binary_operation().
double_int double_int::ext | ( | unsigned | prec, |
bool | uns | ||
) | const |
Clears the bits of CST over the precision PREC. If UNS is false, the bits outside of the precision are set to the sign bit (i.e., the PREC-th one), otherwise they are set to zero. This corresponds to returning the value represented by PREC lowermost bits of CST, with the given signedness.
References sext(), and zext().
Referenced by bit_value_binop_1(), bit_value_unop_1(), do_fixed_shift(), double_int_fits_to_tree_p(), double_int_to_tree(), extract_muldiv_1(), extract_range_from_binary_expr_1(), fold_array_ctor_reference(), fold_binary_loc(), force_fit_type_double(), mpz_get_double_int(), range_fits_type_p(), and simplify_conversion_using_ranges().
bool double_int::fits_hwi | ( | bool | uns | ) | const |
Returns true if CST fits in HOST_WIDE_INT if UNS is false, or in unsigned HOST_WIDE_INT if UNS is true.
References fits_shwi(), and fits_uhwi().
bool double_int::fits_shwi | ( | ) | const |
Returns true if CST fits in signed HOST_WIDE_INT.
References high, HOST_WIDE_INT, and low.
Referenced by copy_reference_ops_from_ref(), doloop_modify(), doloop_optimize(), estimated_loop_iterations_int(), fits_hwi(), fold_builtin_memory_op(), fold_const_aggregate_ref_1(), get_computation_cost_at(), get_constraint_for_ptr_offset(), get_inner_reference(), get_ref_base_and_extent(), max_loop_iterations_int(), most_expensive_mult_to_index(), phi_translate_1(), replace_mult_candidate(), stmt_kills_ref_p_1(), and valueize_refs_1().
|
inline |
Returns true if CST fits in unsigned HOST_WIDE_INT.
References high.
Referenced by addr_object_size(), array_size_for_constructor(), and fits_hwi().
|
static |
Construct from a buffer of length LEN. BUFFER will be read according to byte endianess and word endianess. Only the lower LEN bytes of the result are set; the remaining high bytes are cleared.
References high, HOST_BITS_PER_WIDE_INT, HOST_WIDE_INT, len, low, and offset.
Referenced by native_interpret_fixed(), and native_interpret_int().
|
inlinestatic |
Referenced by plus_constant(), and simplify_const_unary_operation().
|
inlinestatic |
Constructors and conversions.
Constructs double_int from integer CST. The bits over the precision of HOST_WIDE_INT are filled with the sign bit.
References high, HOST_WIDE_INT, and low.
Referenced by build_int_cst(), build_int_cst_type(), cgraph_add_thunk(), decide_peel_simple(), decide_unroll_constant_iterations(), decide_unroll_runtime_iterations(), decide_unroll_stupid(), doloop_optimize(), evaluate_stmt(), fold_builtin_memory_op(), forward_propagate_addr_expr_1(), get_inner_reference_aff(), get_loop_invariant_expr_id(), jump_function_from_stmt(), mem_loc_descriptor(), plus_constant(), predict_iv_comparison(), rtx_to_double_int(), simplify_binary_operation_1(), simplify_const_unary_operation(), stmt_kills_ref_p_1(), vect_do_peeling_for_alignment(), vect_do_peeling_for_loop_bound(), vn_reference_fold_indirect(), and vn_reference_maybe_forwprop_address().
|
inlinestatic |
Constructs double_int from unsigned integer CST. The bits over the precision of HOST_WIDE_INT are filled with zeros.
Referenced by add_ref_to_chain(), addr_object_size(), choose_multiplier(), convert_modes(), determine_roots_comp(), double_int_type_size_in_bits(), field_byte_offset(), fold_array_ctor_reference(), fold_binary_loc(), fold_builtin_object_size(), fold_nonarray_ctor_reference(), get_inner_reference(), get_ref_base_and_extent(), get_value_from_alignment(), iv_number_of_iterations(), lshift_value(), pointer_may_wrap_p(), remove_exits_and_undefined_stmts(), restructure_reference(), round_up_to_align(), simplify_const_unary_operation(), slsr_process_ref(), tree_fold_binomial(), tree_to_aff_combination(), unroll_loop_constant_iterations(), unroll_loop_runtime_iterations(), valid_initializer_p(), and vect_transform_loop().
|
inline |
Returns true if CST is minus one.
Referenced by add_elt_to_tree(), bit_value_assume_aligned(), bit_value_binop(), bit_value_unop(), ccp_lattice_meet(), get_value_from_alignment(), insert_initializers(), and replace_one_candidate().
|
inline |
Returns true if CST is negative.
References high.
Referenced by add_elt_to_tree(), addr_object_size(), aff_comb_cannot_overlap_p(), aff_combination_to_tree(), all_phi_incrs_profitable(), bit_value_binop_1(), cand_abs_increment(), create_add_on_incoming_edge(), derive_constant_upper_bound_ops(), dump_double_int(), extract_range_from_binary_expr_1(), fold_abs_const(), fold_convert_const_int_from_fixed(), get_inner_reference(), indirect_ref_may_alias_decl_p(), indirect_refs_may_alias_p(), int_fits_type_p(), mpz_set_double_int(), predict_iv_comparison(), record_increment(), register_edge_assert_for_2(), replace_mult_candidate(), and simplify_const_unary_operation().
|
inline |
Returns true if CST is one.
Referenced by add_elt_to_tree(), addr_to_parts(), aff_combination_add_elt(), aff_combination_scale(), create_mul_imm_cand(), insert_initializers(), move_fixed_address_to_symbol(), move_hint_to_base(), move_pointer_to_base(), and replace_one_candidate().
|
inline |
The operands of the following comparison functions must be processed with double_int_ext, if their precision is less than HOST_BITS_PER_DOUBLE_INT bits.
Returns true if CST is zero.
Referenced by addr_to_parts(), aff_combination_add_elt(), aff_combination_constant_multiple_p(), aff_combination_convert(), aff_combination_scale(), bit_value_binop_1(), ccp_fold_stmt(), constant_multiple_of(), create_add_on_incoming_edge(), create_add_ssa_cand(), create_phi_basis(), discover_iteration_bound_by_body_walk(), div_if_zero_remainder(), double_int_constant_multiple_p(), dump_double_int(), dump_lattice_value(), extract_range_from_binary_expr_1(), fold_binary_loc(), get_constant_value(), insert_initializers(), int_const_binop_1(), multiple_of(), n_of_executions_at_most(), number_of_iterations_ne_max(), predict_iv_comparison(), register_edge_assert_for_2(), replace_mult_candidate(), replace_one_candidate(), restructure_reference(), simplify_bit_ops_using_ranges(), and visit_cond_stmt().
double_int double_int::llshift | ( | HOST_WIDE_INT | count, |
unsigned int | prec | ||
) | const |
Logical shift A left by COUNT places keeping only PREC bits of result. Shift right if COUNT is negative.
References absu_hwi(), high, low, lshift_double(), and rshift_double().
Referenced by bit_value_binop_1(), do_fixed_divide(), do_fixed_multiply(), do_fixed_shift(), extract_range_from_binary_expr_1(), fixed_convert(), fixed_convert_from_int(), lrotate(), lshift_value(), mask_rtx(), register_edge_assert_for_2(), rrotate(), and try_combine().
double_int double_int::lrotate | ( | HOST_WIDE_INT | count, |
unsigned int | prec | ||
) | const |
Rotate A left by COUNT places keeping only PREC bits of result. Rotate right if COUNT is negative.
References llshift(), and lrshift().
Referenced by bit_value_binop_1(), int_const_binop_1(), and simplify_const_binary_operation().
double_int double_int::lrshift | ( | HOST_WIDE_INT | count, |
unsigned int | prec | ||
) | const |
Logical shift A right by COUNT places keeping only PREC bits of result. Shift left if COUNT is negative.
References absu_hwi(), high, low, lshift_double(), and rshift_double().
Referenced by lrotate(), rrotate(), and simplify_conversion_using_ranges().
double_int double_int::lshift | ( | HOST_WIDE_INT | count | ) | const |
Shift A left by COUNT places.
References count, high, HOST_BITS_PER_WIDE_INT, HOST_WIDE_INT, and low.
Referenced by do_fixed_divide(), do_fixed_multiply(), do_fixed_shift(), fixed_convert(), fold_convert_const_int_from_fixed(), get_inner_reference(), get_ref_base_and_extent(), indirect_ref_may_alias_decl_p(), indirect_refs_may_alias_p(), int_const_binop_1(), min_value(), and stmt_kills_ref_p_1().
double_int double_int::lshift | ( | HOST_WIDE_INT | count, |
unsigned int | prec, | ||
bool | arith | ||
) | const |
Shift A left by COUNT places keeping only PREC bits of result. Shift right if COUNT is negative. ARITH true specifies arithmetic shifting; otherwise use logical shift.
References absu_hwi(), high, low, lshift_double(), and rshift_double().
|
static |
Returns mask for PREC bits.
References high, HOST_BITS_PER_WIDE_INT, HOST_WIDE_INT, and low.
Referenced by assert_loop_rolls_lt(), bound_difference_of_offsetted_base(), bounds_add(), build_low_bits_mask(), combine_conversions(), expand_expr_real_2(), fold_binary_loc(), get_inner_reference(), get_type_static_bounds(), get_value_from_alignment(), mask_rtx(), max_value(), number_of_iterations_ne_max(), reduce_to_bit_field_precision(), register_edge_assert_for_2(), sext(), simplify_conversion_using_ranges(), try_combine(), and zext().
double_int double_int::max | ( | double_int | b, |
bool | uns | ||
) |
Compares two values A and B. Returns max value. Signedness of the comparison is given by UNS.
References cmp().
Referenced by extract_range_from_binary_expr_1(), and int_const_binop_1().
|
static |
Returns a maximum value for signed or unsigned integer of precision PREC.
References mask().
Referenced by extract_range_from_binary_expr_1(), and register_edge_assert_for_2().
double_int double_int::min | ( | double_int | b, |
bool | uns | ||
) |
Compares two values A and B. Returns mix value. Signedness of the comparison is given by UNS.
References cmp().
Referenced by extract_range_from_binary_expr_1(), and int_const_binop_1().
|
static |
Returns a minimum value for signed or unsigned integer of precision PREC.
References lshift().
Referenced by extract_range_from_binary_expr_1(), and register_edge_assert_for_2().
double_int double_int::mod | ( | double_int | b, |
bool | uns, | ||
unsigned | code | ||
) | const |
Returns A % B (computed as unsigned depending on UNS, and rounded as specified by CODE). CODE is enum tree_code in fact, but double_int.h must be included before tree.h.
References divmod().
Referenced by div(), number_of_iterations_ne_max(), smod(), and umod().
double_int double_int::mul_with_sign | ( | double_int | b, |
bool | unsigned_p, | ||
bool * | overflow | ||
) | const |
Returns A * B. If the operation overflows according to UNSIGNED_P, *OVERFLOW is set to nonzero.
References high, low, and mul_double_wide_with_sign().
Referenced by adjust_range_with_scev(), extract_muldiv_1(), fold_div_compare(), int_const_binop_1(), predict_iv_comparison(), and tree_fold_binomial().
bool double_int::multiple_of | ( | double_int | factor, |
bool | unsigned_p, | ||
double_int * | multiple | ||
) | const |
Return TRUE iff PRODUCT is an integral multiple of FACTOR, and return the multiple in *MULTIPLE. Otherwise return FALSE and leave *MULTIPLE unchanged.
References divmod(), and is_zero().
Referenced by create_add_imm_cand().
double_int double_int::neg_with_overflow | ( | bool * | overflow | ) | const |
References high, low, and neg_double().
Referenced by fold_abs_const(), and fold_negate_const().
|
inline |
|
inline |
|
inline |
double_int double_int::operator* | ( | double_int | b | ) | const |
double_int & double_int::operator*= | ( | double_int | b | ) |
double_int double_int::operator+ | ( | double_int | b | ) | const |
|
inline |
double_int & double_int::operator+= | ( | double_int | b | ) |
double_int double_int::operator- | ( | double_int | b | ) | const |
Returns A - B.
References high, low, and neg_double().
double_int double_int::operator- | ( | ) | const |
Returns -A.
References high, low, and neg_double().
|
inline |
double_int & double_int::operator-= | ( | double_int | b | ) |
Subtracts B from *this and returns a reference to *this.
References high, low, and neg_double().
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
Return number of set bits of CST.
References high, low, and popcount_hwi().
double_int double_int::rrotate | ( | HOST_WIDE_INT | count, |
unsigned int | prec | ||
) | const |
Rotate A rigth by COUNT places keeping only PREC bits of result. Rotate right if COUNT is negative.
References llshift(), and lrshift().
Referenced by int_const_binop_1(), and simplify_const_binary_operation().
double_int double_int::rshift | ( | HOST_WIDE_INT | count | ) | const |
Shift A right by COUNT places.
References count, high, HOST_BITS_PER_WIDE_INT, HOST_WIDE_INT, and low.
Referenced by bit_value_binop_1(), copy_reference_ops_from_ref(), fold_convert_const_int_from_fixed(), int_const_binop_1(), and simplify_const_binary_operation().
double_int double_int::rshift | ( | HOST_WIDE_INT | count, |
unsigned int | prec, | ||
bool | arith | ||
) | const |
Shift A right by COUNT places keeping only PREC bits of result. Shift left if COUNT is negative. ARITH true specifies arithmetic shifting; otherwise use logical shift.
References absu_hwi(), high, low, lshift_double(), and rshift_double().
int double_int::scmp | ( | double_int | b | ) | const |
Compares two signed values A and B. Returns -1 if A < B, 0 if A == B, and 1 if A > B.
Referenced by cmp(), order_drefs(), predict_iv_comparison(), smax(), and smin().
double_int double_int::sdiv | ( | double_int | b, |
unsigned | code | ||
) | const |
The same as double_int::div with UNS = false.
References div().
Referenced by search_for_addr_array().
double_int double_int::sdivmod | ( | double_int | b, |
unsigned | code, | ||
double_int * | mod | ||
) | const |
The same as double_int::divmod with UNS = false.
References divmod().
Referenced by constant_multiple_of(), and double_int_constant_multiple_p().
double_int double_int::set_bit | ( | unsigned | bitpos | ) | const |
Set BITPOS bit in A.
References high, HOST_BITS_PER_WIDE_INT, HOST_WIDE_INT, and low.
Referenced by choose_multiplier(), expand_absneg_bit(), expand_builtin_signbit(), expand_copysign_absneg(), expand_copysign_bit(), and simplify_binary_operation_1().
double_int double_int::sext | ( | unsigned | prec | ) | const |
The same as double_int::ext with UNS = false.
References high, HOST_BITS_PER_WIDE_INT, HOST_WIDE_INT, low, and mask().
Referenced by addr_for_mem_ref(), array_value_type(), assert_loop_rolls_lt(), constant_multiple_of(), derive_constant_upper_bound_ops(), double_int_ext_for_comb(), ext(), extract_range_from_binary_expr_1(), fixed_convert(), fixed_convert_from_int(), fixed_from_double_int(), fixed_saturate1(), fixed_saturate2(), get_constraint_for_ptr_offset(), get_inner_reference(), ipa_modify_call_arguments(), mem_ref_offset(), output_constructor_regular_field(), register_edge_assert_for_2(), size_low_cst(), split_to_var_and_offset(), vn_reference_fold_indirect(), and vn_reference_maybe_forwprop_address().
bool double_int::sgt | ( | double_int | b | ) | const |
Compares two signed values A and B for greater-than.
Referenced by fixed_saturate1(), fixed_saturate2(), record_increment(), and search_for_addr_array().
bool double_int::sle | ( | double_int | b | ) | const |
Compares two signed values A and B for less-than or equal-to.
Referenced by add_ref_to_chain(), and aff_comb_cannot_overlap_p().
bool double_int::slt | ( | double_int | b | ) | const |
Compares two signed values A and B for less-than.
Referenced by extract_range_from_binary_expr_1(), fixed_saturate1(), fixed_saturate2(), fold_array_ctor_reference(), fold_nonarray_ctor_reference(), record_increment(), and search_for_addr_array().
double_int double_int::smax | ( | double_int | b | ) |
Compares two signed values A and B. Returns max value.
References scmp().
Referenced by simplify_const_binary_operation().
double_int double_int::smin | ( | double_int | b | ) |
Compares two signed values A and B. Returns min value.
References scmp().
Referenced by simplify_const_binary_operation().
double_int double_int::smod | ( | double_int | b, |
unsigned | code | ||
) | const |
The same as double_int::mod with UNS = false.
References mod().
double_int double_int::sub_with_overflow | ( | double_int | b, |
bool * | overflow | ||
) | const |
Returns A - B. If the operation overflows via inconsistent sign bits, *OVERFLOW is set to nonzero.
References high, low, and neg_double().
Referenced by int_const_binop_1(), and predict_iv_comparison().
|
inline |
Returns value of CST as a signed number. CST must satisfy double_int::fits_signed.
References HOST_WIDE_INT, and low.
Referenced by add_const_value_attribute(), analyze_increments(), decide_peel_simple(), doloop_modify(), doloop_optimize(), estimated_loop_iterations_int(), field_byte_offset(), fold_const_aggregate_ref_1(), get_addr_base_and_unit_offset_1(), get_computation_cost_at(), get_inner_reference(), get_ref_base_and_extent(), loc_descriptor(), max_loop_iterations_int(), most_expensive_mult_to_index(), replace_mult_candidate(), and stmt_kills_ref_p_1().
|
inline |
Returns value of CST as an unsigned number. CST must satisfy double_int::fits_unsigned.
References low.
Referenced by addr_object_size(), fold_array_ctor_reference(), fold_nonarray_ctor_reference(), and predict_iv_comparison().
int double_int::trailing_zeros | ( | ) | const |
Count trailing zeros in A.
References ctz_hwi(), high, HOST_BITS_PER_WIDE_INT, HOST_WIDE_INT, and low.
Referenced by fold_binary_loc().
int double_int::ucmp | ( | double_int | b | ) | const |
Compares two unsigned values A and B. Returns -1 if A < B, 0 if A == B, and 1 if A > B.
References high, HOST_WIDE_INT, and low.
Referenced by cmp(), do_fixed_divide(), do_warn_aggressive_loop_optimizations(), quad_int_cmp(), umax(), and umin().
double_int double_int::udiv | ( | double_int | b, |
unsigned | code | ||
) | const |
The same as double_int::div with UNS = true.
References div().
Referenced by derive_constant_upper_bound_ops(), fold_array_ctor_reference(), restructure_reference(), unroll_loop_constant_iterations(), unroll_loop_runtime_iterations(), and vect_transform_loop().
double_int double_int::udivmod | ( | double_int | b, |
unsigned | code, | ||
double_int * | mod | ||
) | const |
The same as double_int::divmod with UNS = true.
References divmod().
bool double_int::ugt | ( | double_int | b | ) | const |
Compares two unsigned values A and B for greater-than.
References high, HOST_WIDE_INT, and low.
Referenced by derive_constant_upper_bound_ops(), estimated_stmt_executions(), field_byte_offset(), fixed_saturate1(), fixed_saturate2(), int_fits_type_p(), max_stmt_executions(), and may_eliminate_iv().
bool double_int::ule | ( | double_int | b | ) | const |
Compares two unsigned values A and B for less-than or equal-to.
References high, HOST_WIDE_INT, and low.
Referenced by add_ref_to_chain(), determine_roots_comp(), doloop_modify(), doloop_optimize(), remove_exits_and_undefined_stmts(), and unroll_loop_constant_iterations().
bool double_int::ult | ( | double_int | b | ) | const |
Compares two unsigned values A and B for less-than.
References high, HOST_WIDE_INT, and low.
Referenced by bound_index(), choose_multiplier(), decide_peel_simple(), decide_unroll_constant_iterations(), decide_unroll_runtime_iterations(), decide_unroll_stupid(), derive_constant_upper_bound_ops(), discover_iteration_bound_by_body_walk(), do_fixed_multiply(), double_int_cmp(), extract_range_from_binary_expr_1(), fixed_saturate2(), int_fits_type_p(), maybe_lower_iteration_bound(), record_estimate(), record_niter_bound(), remove_exits_and_undefined_stmts(), remove_redundant_iv_tests(), and tree_fold_binomial().
double_int double_int::umax | ( | double_int | b | ) |
Compares two unsigned values A and B. Returns max value.
References ucmp().
Referenced by simplify_const_binary_operation().
double_int double_int::umin | ( | double_int | b | ) |
Compares two unsigned values A and B. Returns min value.
References ucmp().
Referenced by simplify_const_binary_operation().
double_int double_int::umod | ( | double_int | b, |
unsigned | code | ||
) | const |
The same as double_int::mod with UNS = true.
References mod().
Referenced by restructure_reference().
double_int double_int::wide_mul_with_sign | ( | double_int | b, |
bool | unsigned_p, | ||
double_int * | higher, | ||
bool * | overflow | ||
) | const |
References high, low, and mul_double_wide_with_sign().
Referenced by extract_range_from_binary_expr_1(), and int_const_binop_1().
double_int double_int::zext | ( | unsigned | prec | ) | const |
The same as double_int::ext with UNS = true.
References high, low, and mask().
Referenced by array_value_type(), convert_modes(), ext(), extract_range_from_binary_expr_1(), fixed_from_double_int(), fixed_saturate1(), fixed_saturate2(), lshift_value(), and register_edge_assert_for_2().
HOST_WIDE_INT double_int::high |
Referenced by add_AT_double(), add_with_sign(), adjust_range_with_scev(), alshift(), and_not(), arshift(), build_low_bits_mask(), choose_multiplier(), compare_loc_operands(), div_if_zero_remainder(), divmod(), divmod_with_overflow(), do_fixed_add(), do_fixed_divide(), do_fixed_multiply(), do_fixed_shift(), double_int_split_digit(), double_int_to_tree(), dump_lattice_value(), dw_val_equal_p(), fits_shwi(), fits_uhwi(), fixed_convert(), fixed_convert_from_int(), fixed_saturate1(), fixed_saturate2(), fold_binary_loc(), fold_builtin_int_roundingfn(), fold_convert_const_int_from_real(), from_buffer(), from_pair(), from_shwi(), from_uhwi(), gcov_type_to_double_int(), get_addr_base_and_unit_offset_1(), get_fixed_sign_bit(), hash_loc_operands(), immed_double_int_const(), input_cfg(), insert_double(), int_const_binop_1(), int_fits_type_p(), is_minus_one(), is_negative(), is_one(), is_zero(), llshift(), lower_bound_in_type(), lrshift(), lshift(), mask(), mpz_get_double_int(), mpz_set_double_int(), mul_with_sign(), neg_with_overflow(), operator!=(), operator&(), operator*(), operator*=(), operator+(), operator+=(), operator-(), operator-=(), operator==(), operator^(), operator|(), operator~(), output_cfg(), output_die(), output_loc_operands(), pack_ts_fixed_cst_value_fields(), pointer_may_wrap_p(), popcount(), predict_iv_comparison(), print_die(), round_up_loc(), rshift(), rtx_to_double_int(), same_dw_val_p(), scmp(), set_bit(), sext(), sgt(), simplify_const_unary_operation(), sle(), slt(), sub_with_overflow(), trailing_zeros(), tree_fold_binomial(), ucmp(), ugt(), ule(), ult(), upper_bound_in_type(), wide_mul_with_sign(), zero_nonzero_bits_from_vr(), and zext().
unsigned HOST_WIDE_INT double_int::low |
Referenced by add_AT_double(), add_with_sign(), alshift(), and_not(), array_size_for_constructor(), arshift(), bit_value_assume_aligned(), build_low_bits_mask(), ccp_finalize(), choose_multiplier(), compare_loc_operands(), compute_complex_assign_jump_func(), copy_reference_ops_from_ref(), decode_addr_const(), div_if_zero_remainder(), divmod(), divmod_with_overflow(), do_fixed_divide(), do_fixed_multiply(), do_fixed_shift(), double_int_split_digit(), double_int_to_tree(), dump_lattice_value(), dw_val_equal_p(), expand_expr_real_1(), fits_shwi(), fixed_convert_from_int(), fixed_saturate1(), fixed_saturate2(), fold_binary_loc(), fold_builtin_int_roundingfn(), fold_builtin_memory_op(), fold_convert_const_int_from_real(), from_buffer(), from_pair(), from_shwi(), from_uhwi(), gcov_type_to_double_int(), get_ancestor_addr_info(), get_base_constructor(), get_constraint_for_ptr_offset(), get_fixed_sign_bit(), get_object_alignment_2(), hash_loc_operands(), immed_double_int_const(), indirect_ref_may_alias_decl_p(), indirect_refs_may_alias_p(), input_cfg(), insert_double(), int_const_binop_1(), int_fits_type_p(), ipa_modify_call_arguments(), is_minus_one(), is_one(), is_zero(), llshift(), lower_bound_in_type(), lrshift(), lshift(), mask(), mpz_get_double_int(), mpz_set_double_int(), mul_with_sign(), neg_with_overflow(), operator!=(), operator&(), operator*(), operator*=(), operator+(), operator+=(), operator-(), operator-=(), operator==(), operator^(), operator|(), operator~(), output_cfg(), output_constructor_regular_field(), output_die(), output_loc_operands(), pack_ts_fixed_cst_value_fields(), phi_translate_1(), pointer_may_wrap_p(), popcount(), print_die(), round_up_loc(), rshift(), rtx_to_double_int(), same_dw_val_p(), scmp(), set_bit(), sext(), sgt(), simplify_const_unary_operation(), size_low_cst(), sle(), slt(), sra_ipa_modify_expr(), sub_with_overflow(), to_shwi(), to_uhwi(), trailing_zeros(), tree_fold_binomial(), ucmp(), ugt(), ule(), ult(), upper_bound_in_type(), valueize_refs_1(), wide_mul_with_sign(), zero_nonzero_bits_from_vr(), and zext().