GCC Middle and Back End API Reference
|
#include "mode-classes.def"
Go to the source code of this file.
Data Structures | |
struct | mode_traits< T > |
struct | mode_traits< machine_mode > |
class | opt_mode< T > |
struct | pod_mode< T > |
class | scalar_int_mode |
class | scalar_float_mode |
class | scalar_mode |
class | complex_mode |
class | fixed_size_mode |
class | bit_field_mode_iterator |
struct | int_n_data_t |
Namespaces | |
namespace | mode_iterator |
Typedefs | |
typedef opt_mode< machine_mode > | opt_machine_mode |
Enumerations | |
enum | mode_class { MODE_CLASSES , MAX_MODE_CLASS } |
Functions | |
template<typename T > | |
bool | is_a (machine_mode m) |
template<typename T , typename U > | |
bool | is_a (const opt_mode< U > &m) |
template<typename T > | |
T | as_a (machine_mode m) |
template<typename T , typename U > | |
T | as_a (const opt_mode< U > &m) |
template<typename T > | |
opt_mode< T > | dyn_cast (machine_mode m) |
template<typename T , typename U > | |
opt_mode< T > | dyn_cast (const opt_mode< U > &m) |
template<typename T , typename U > | |
bool | is_a (machine_mode m, U *result) |
ALWAYS_INLINE poly_uint16 | mode_to_bytes (machine_mode mode) |
ALWAYS_INLINE poly_uint16 | mode_to_bits (machine_mode mode) |
ALWAYS_INLINE poly_uint16 | mode_to_precision (machine_mode mode) |
ALWAYS_INLINE scalar_mode | mode_to_inner (machine_mode mode) |
ALWAYS_INLINE unsigned char | mode_to_unit_size (machine_mode mode) |
ALWAYS_INLINE unsigned short | mode_to_unit_precision (machine_mode mode) |
ALWAYS_INLINE poly_uint16 | mode_to_nunits (machine_mode mode) |
ALWAYS_INLINE poly_uint16 | GET_MODE_SIZE (machine_mode mode) |
template<typename T > | |
ALWAYS_INLINE if_poly< typenameT::measurement_type >::type | GET_MODE_SIZE (const T &mode) |
template<typename T > | |
ALWAYS_INLINE if_nonpoly< typenameT::measurement_type >::type | GET_MODE_SIZE (const T &mode) |
ALWAYS_INLINE poly_uint16 | GET_MODE_BITSIZE (machine_mode mode) |
template<typename T > | |
ALWAYS_INLINE if_poly< typenameT::measurement_type >::type | GET_MODE_BITSIZE (const T &mode) |
template<typename T > | |
ALWAYS_INLINE if_nonpoly< typenameT::measurement_type >::type | GET_MODE_BITSIZE (const T &mode) |
ALWAYS_INLINE poly_uint16 | GET_MODE_PRECISION (machine_mode mode) |
template<typename T > | |
ALWAYS_INLINE if_poly< typenameT::measurement_type >::type | GET_MODE_PRECISION (const T &mode) |
template<typename T > | |
ALWAYS_INLINE if_nonpoly< typenameT::measurement_type >::type | GET_MODE_PRECISION (const T &mode) |
ALWAYS_INLINE poly_uint16 | GET_MODE_NUNITS (machine_mode mode) |
template<typename T > | |
ALWAYS_INLINE if_poly< typenameT::measurement_type >::type | GET_MODE_NUNITS (const T &mode) |
template<typename T > | |
ALWAYS_INLINE if_nonpoly< typenameT::measurement_type >::type | GET_MODE_NUNITS (const T &mode) |
template<typename T > | |
ALWAYS_INLINE opt_mode< T > | GET_MODE_NEXT_MODE (const T &m) |
template<typename T > | |
ALWAYS_INLINE opt_mode< T > | GET_MODE_WIDER_MODE (const T &m) |
template<typename T > | |
ALWAYS_INLINE opt_mode< T > | GET_MODE_2XWIDER_MODE (const T &m) |
opt_machine_mode | mode_for_size (poly_uint64, enum mode_class, int) |
opt_scalar_int_mode | int_mode_for_size (poly_uint64 size, int limit) |
opt_scalar_float_mode | float_mode_for_size (poly_uint64 size) |
opt_scalar_float_mode | decimal_float_mode_for_size (unsigned int size) |
opt_machine_mode | smallest_mode_for_size (poly_uint64, enum mode_class) |
opt_scalar_int_mode | smallest_int_mode_for_size (poly_uint64 size) |
opt_scalar_int_mode | int_mode_for_mode (machine_mode) |
opt_machine_mode | bitwise_mode_for_mode (machine_mode) |
opt_machine_mode | mode_for_vector (scalar_mode, poly_uint64) |
opt_machine_mode | related_vector_mode (machine_mode, scalar_mode, poly_uint64=0) |
opt_machine_mode | related_int_vector_mode (machine_mode) |
bool | get_best_mode (int, int, poly_uint64, poly_uint64, unsigned int, unsigned HOST_WIDE_INT, bool, scalar_int_mode *) |
unsigned | get_mode_alignment (machine_mode) |
template<typename T > | |
T | get_narrowest_mode (T mode) |
void | init_adjust_machine_modes (void) |
bool | HWI_COMPUTABLE_MODE_P (machine_mode mode) |
bool | HWI_COMPUTABLE_MODE_P (scalar_int_mode mode) |
template<typename T > | |
bool | is_int_mode (machine_mode mode, T *int_mode) |
template<typename T > | |
bool | is_float_mode (machine_mode mode, T *float_mode) |
template<typename T > | |
bool | is_complex_int_mode (machine_mode mode, T *cmode) |
template<typename T > | |
bool | is_complex_float_mode (machine_mode mode, T *cmode) |
bool | is_narrower_int_mode (machine_mode mode, scalar_int_mode limit) |
template<typename T > | |
void | mode_iterator::start (opt_mode< T > *iter, enum mode_class mclass) |
void | mode_iterator::start (machine_mode *iter, enum mode_class mclass) |
template<typename T > | |
bool | mode_iterator::iterate_p (opt_mode< T > *iter) |
bool | mode_iterator::iterate_p (machine_mode *iter) |
template<typename T > | |
void | mode_iterator::get_next (opt_mode< T > *iter) |
void | mode_iterator::get_next (machine_mode *iter) |
template<typename T > | |
void | mode_iterator::get_known_next (T *iter) |
template<typename T > | |
void | mode_iterator::get_wider (opt_mode< T > *iter) |
void | mode_iterator::get_wider (machine_mode *iter) |
template<typename T > | |
void | mode_iterator::get_known_wider (T *iter) |
template<typename T > | |
void | mode_iterator::get_2xwider (opt_mode< T > *iter) |
void | mode_iterator::get_2xwider (machine_mode *iter) |
template<typename T > | |
void | gt_ggc_mx (pod_mode< T > *) |
template<typename T > | |
void | gt_pch_nx (pod_mode< T > *) |
template<typename T > | |
void | gt_pch_nx (pod_mode< T > *, gt_pointer_operator, void *) |
Variables | |
CONST_MODE_SIZE poly_uint16 | mode_size [NUM_MACHINE_MODES] |
CONST_MODE_PRECISION poly_uint16 | mode_precision [NUM_MACHINE_MODES] |
const unsigned short | mode_inner [NUM_MACHINE_MODES] |
CONST_MODE_NUNITS poly_uint16 | mode_nunits [NUM_MACHINE_MODES] |
CONST_MODE_UNIT_SIZE unsigned char | mode_unit_size [NUM_MACHINE_MODES] |
const unsigned short | mode_unit_precision [NUM_MACHINE_MODES] |
const unsigned short | mode_next [NUM_MACHINE_MODES] |
const unsigned short | mode_wider [NUM_MACHINE_MODES] |
const unsigned short | mode_2xwider [NUM_MACHINE_MODES] |
const char *const | mode_name [NUM_MACHINE_MODES] |
const unsigned char | mode_class [NUM_MACHINE_MODES] |
CONST_MODE_IBIT unsigned char | mode_ibit [NUM_MACHINE_MODES] |
CONST_MODE_FBIT unsigned char | mode_fbit [NUM_MACHINE_MODES] |
CONST_MODE_MASK unsigned HOST_WIDE_INT | mode_mask_array [NUM_MACHINE_MODES] |
const unsigned short | mode_complex [NUM_MACHINE_MODES] |
CONST_MODE_BASE_ALIGN unsigned short | mode_base_align [NUM_MACHINE_MODES] |
const unsigned short | class_narrowest_mode [MAX_MODE_CLASS] |
scalar_int_mode | byte_mode |
scalar_int_mode | word_mode |
scalar_int_mode | ptr_mode |
bool | int_n_enabled_p [NUM_INT_N_ENTS] |
const int_n_data_t | int_n_data [NUM_INT_N_ENTS] |
#define ACCUM_MODE_P | ( | MODE | ) |
Nonzero if MODE is a scalar/vector accum mode.
#define ALL_ACCUM_MODE_P | ( | MODE | ) |
Nonzero if MODE is a scalar/vector accum or uaccum mode.
Referenced by fixed_from_string().
#define ALL_FIXED_POINT_MODE_P | ( | MODE | ) |
Nonzero if MODE is a scalar/vector fract, ufract, accum or uaccum mode.
Referenced by emit_move_insn_1(), expand_expr_real_2(), gen_fixed_libfunc(), gen_fract_conv_libfunc(), gen_fractuns_conv_libfunc(), gen_int_fixed_libfunc(), gen_int_fp_fixed_libfunc(), gen_satfract_conv_libfunc(), gen_satfractuns_conv_libfunc(), make_range_step(), and prepare_cmp_insn().
#define ALL_FRACT_MODE_P | ( | MODE | ) |
Nonzero if MODE is a scalar/vector fract or ufract mode.
Referenced by fixed_from_string(), fold_plusminus_mult_expr(), and avail_exprs_stack::simplify_binary_operation().
#define ALL_SCALAR_ACCUM_MODE_P | ( | MODE | ) |
Nonzero if MODE is a scalar accum or uaccum mode.
Referenced by build_minus_one_cst(), build_one_cst(), and convert_to_fixed().
#define ALL_SCALAR_FIXED_POINT_MODE_P | ( | MODE | ) |
Nonzero if MODE is a scalar fract, ufract, accum or uaccum mode.
Referenced by convert_mode_scalar(), and native_decode_rtx().
#define ALL_SCALAR_FRACT_MODE_P | ( | MODE | ) |
Nonzero if MODE is a scalar fract or ufract mode.
#define CLASS_HAS_WIDER_MODES_P | ( | CLASS | ) |
Nonzero if CLASS modes can be widened.
Referenced by expand_binop(), expand_twoval_binop(), expand_twoval_unop(), and expand_unop().
#define COMPLEX_MODE_P | ( | MODE | ) |
Nonzero if MODE is a complex mode.
Referenced by bitwise_mode_for_mode(), bitwise_type_for_mode(), clear_storage_hints(), emit_group_load_1(), emit_group_store(), emit_move_insn_1(), expand_assignment(), expand_debug_expr(), expand_expr_real_1(), extract_integral_bit_field(), flip_storage_order(), fold_const_call_1(), fold_const_call_1(), complex_mode::includes_p(), track_loc_p(), and validate_subreg().
#define DECIMAL_FLOAT_MODE_P | ( | MODE | ) |
Nonzero if MODE is a decimal floating point mode.
Referenced by base_type_die(), build_real(), convert_mode_scalar(), expand_BITINTTOFLOAT(), expand_builtin_issignaling(), expand_fix(), expand_FLOATTOBITINT(), fold_builtin_fpclassify(), fold_builtin_interclass_mathfn(), gen_const_vector(), gen_fp_libfunc(), gen_fp_to_int_conv_libfunc(), gen_int_fp_fixed_libfunc(), gen_int_fp_libfunc(), gen_int_fp_signed_fixed_libfunc(), gen_int_to_fp_conv_libfunc(), gen_interclass_conv_libfunc(), gen_intraclass_conv_libfunc(), gen_intv_fp_libfunc(), gen_ufloat_conv_libfunc(), real_minus_onep(), real_onep(), real_zerop(), record_edge_info(), simplify_context::simplify_binary_operation_1(), simplify_context::simplify_unary_operation_1(), and try_special_add_to_ops().
#define DEF_MODE_CLASS | ( | M | ) |
Mode classes.
#define FLOAT_MODE_P | ( | MODE | ) |
Nonzero if MODE is a floating-point mode.
Referenced by analyze_insn_to_expand_var(), apply_distributive_law(), avoid_type_punning_on_regs(), bb_estimate_probability_locally(), combine_simplify_rtx(), comparison_code_valid_for_mode(), cse_insn(), cselib_lookup_mem(), distribute_and_simplify_rtx(), do_compare_rtx_and_jump(), emit_store_flag_force(), expand_debug_expr(), expand_debug_source_expr(), expand_field_assignment(), expand_one_cmpl_abs_nojump(), fill_slots_from_thread(), find_decomposable_subregs(), find_moveable_pseudos(), flip_storage_order(), fold_rtx(), force_operand(), gimple_fold_builtin_memory_op(), hash_scan_set(), known_cond(), may_trap_p_1(), rtx_writer::print_rtx(), print_value(), record_jump_cond(), record_store(), simple_mem(), simplify_context::simplify_binary_operation_1(), simplify_if_then_else(), simplify_immed_subreg(), try_combine(), and validate_subreg().
#define FOR_EACH_2XWIDER_MODE | ( | ITERATOR, | |
START ) |
Make ITERATOR iterate over modes in the same class as MODE, in order of increasing width, and with each mode being twice the width of the previous mode. Start at the mode that is two times wider than START, or don't iterate at all if there is no such mode.
Referenced by supportable_indirect_convert_operation(), and vectorizable_conversion().
#define FOR_EACH_MODE | ( | ITERATOR, | |
START, | |||
END ) |
Make ITERATOR iterate over all the modes in the range [START, END), in order of increasing width.
Referenced by find_widening_optab_handler_and_mode(), and init_num_sign_bit_copies_in_rep().
#define FOR_EACH_MODE_FROM | ( | ITERATOR, | |
START ) |
Make ITERATOR iterate over START and all non-narrower modes in the same class, in order of increasing width.
Referenced by bitwise_mode_for_size(), convert_mode_scalar(), copy_blkmode_to_reg(), expand_builtin_strlen(), expand_divmod(), expand_fix(), expand_float(), expand_parity(), expand_sfix_optab(), extract_bit_field_1(), get_best_extraction_insn(), mode_for_vector(), target_supports_divmod_p(), and type_for_widest_vector_mode().
#define FOR_EACH_MODE_IN_CLASS | ( | ITERATOR, | |
CLASS ) |
Make ITERATOR iterate over all the modes in mode class CLASS, from narrowest to widest.
Referenced by alignment_for_piecewise_move(), choose_hard_reg_mode(), copy_blkmode_to_reg(), do_compile(), emit_block_move_via_pattern(), extract_fixed_bit_field_1(), find_bitfield_repr_type(), find_shift_sequence(), finish_bitfield_representative(), gen_memset_value_from_prev(), hard_function_value(), init_derived_machine_modes(), init_emit_once(), init_expr_target(), init_num_sign_bit_copies_in_rep(), long_double_as_float128(), mode_for_size(), omp_clause_aligned_alignment(), prepare_cmp_insn(), set_storage_via_setmem(), op_by_pieces_d::smallest_fixed_size_mode_for_size(), smallest_mode_for_size(), vect_verify_full_masking(), vect_verify_full_masking_avx512(), vect_verify_loop_lens(), and widest_fixed_size_mode_for_size().
#define FOR_EACH_MODE_UNTIL | ( | ITERATOR, | |
END ) |
Make ITERATOR iterate over modes in the range [NARROWEST, END) in order of increasing width, where NARROWEST is the narrowest mode in END's class.
Referenced by compress_float_constant(), init_expr_target(), init_num_sign_bit_copies_in_rep(), move2add_use_add2_insn(), new_cselib_val(), simplify_compare_const(), and simplify_comparison().
#define FOR_EACH_NEXT_MODE | ( | ITERATOR, | |
START ) |
Make ITERATOR iterate over modes in the same class as MODE, in order of non-decreasing width. Start at next such mode after START, or don't iterate at all if there is no such mode.
#define FOR_EACH_WIDER_MODE | ( | ITERATOR, | |
START ) |
Make ITERATOR iterate over modes in the same class as MODE, in order of increasing width. Start at the first mode wider than START, or don't iterate at all if there is no wider mode.
Referenced by cse_insn(), cselib_record_sets(), expand_binop(), expand_twoval_binop(), expand_twoval_unop(), expand_unop(), expression_expensive_p(), prepare_call_arguments(), simplify_comparison(), vt_add_function_parameter(), widen_bswap(), and widen_leading().
#define FOR_EACH_WIDER_MODE_FROM | ( | ITERATOR, | |
START ) |
Make ITERATOR iterate over START and all wider modes in the same class, in order of strictly increasing width.
Referenced by emit_store_flag_1(), expression_expensive_p(), prepare_cmp_insn(), and prepare_float_lib_cmp().
#define FRACT_MODE_P | ( | MODE | ) |
Nonzero if MODE is a scalar/vector fract mode.
#define GET_CLASS_NARROWEST_MODE | ( | CLASS | ) |
Referenced by lto_input_mode_table(), mode_iterator::start(), and mode_iterator::start().
#define GET_MODE_ALIGNMENT | ( | MODE | ) |
Referenced by adjust_address_1(), align_local_variable(), alignment_for_piecewise_move(), alter_reg(), apply_args_size(), apply_result_size(), asan_emit_stack_protection(), assign_parm_adjust_stack_rtl(), assign_parm_setup_reg(), assign_parm_setup_stack(), assign_parms(), assign_stack_local_1(), build_constant_desc(), by_pieces_ninsns(), can_store_by_pieces(), compute_array_mode(), compute_record_mode(), copy_blkmode_from_reg(), default_static_rtx_alignment(), default_vector_alignment(), emit_group_load_1(), emit_group_store(), emit_move_insn(), emit_push_insn(), expand_assignment(), expand_builtin_apply(), expand_builtin_apply_args_1(), expand_builtin_init_descriptor(), expand_builtin_return(), expand_expr_real_1(), expand_one_ssa_partition(), expand_one_var(), expand_stack_vars(), expand_used_vars(), fill_vector_of_new_param_types(), finalize_type_size(), fold_builtin_atomic_always_lock_free(), gen_reg_rtx(), get_best_mode(), get_builtin_sync_mem(), get_stack_local_alignment(), gimple_fold_builtin_memory_op(), init_emit_regs(), initialize_sizetypes(), insert_restore(), insert_save(), layout_decl(), layout_type(), lower_oacc_reductions(), make_extraction(), may_be_unaligned_p(), bit_field_mode_iterator::next_mode(), offsettable_address_addr_space_p(), output_constant(), compare_by_pieces_d::prepare_mode(), move_by_pieces_d::prepare_mode(), store_by_pieces_d::prepare_mode(), result_vector(), set_parm_rtl(), simple_mem_bitfield_p(), simplify_operand_subreg(), simplify_context::simplify_subreg(), spill_slot_alignment(), store_constructor_field(), store_field(), and validate_subreg().
#define GET_MODE_CLASS | ( | MODE | ) |
Referenced by add_const_value_attribute(), assemble_integer(), assign_parm_setup_reg(), bitwise_mode_for_mode(), build_vector_type_for_mode(), can_mult_highpart_p(), canon_condition(), canonicalize_condition(), cc_in_cond(), combine_simplify_rtx(), compare_and_jump_seq(), compute_can_copy(), compute_record_mode(), const_double_operand(), const_vec_series_p_1(), contains_ccmode_rtx_p(), convert_mode_scalar(), cse_insn(), default_scalar_mode_supported_p(), default_secondary_memory_needed_mode(), do_jump_1(), do_SUBST(), emit_cmp_and_jump_insn_1(), emit_move_complex(), emit_move_insn_1(), emit_push_insn(), emit_store_flag(), emit_store_flag_1(), emit_store_flag_force(), expand_abs(), expand_abs_nojump(), expand_binop(), expand_complex_libcall(), expand_debug_expr(), expand_divmod(), expand_expr_real_1(), expand_expr_real_2(), expand_mult(), expand_parity(), expand_speculation_safe_value(), expand_twoval_binop(), expand_twoval_unop(), expand_unop(), expand_vec_perm_1(), expmed_mode_index(), extract_bit_field_1(), extract_low_bits(), rtx_vector_builder::find_cached_value(), find_cc_set(), find_comparison_args(), find_sets_in_insn(), find_split_point(), find_widening_optab_handler_and_mode(), fold_rtx(), force_to_mode(), gen_extend_conv_libfunc(), gen_fp_libfunc(), gen_fp_to_int_conv_libfunc(), gen_fract_conv_libfunc(), gen_fractuns_conv_libfunc(), gen_int_fp_fixed_libfunc(), gen_int_fp_libfunc(), gen_int_fp_signed_fixed_libfunc(), gen_int_to_fp_conv_libfunc(), gen_int_to_fp_nondecimal_conv_libfunc(), gen_intv_fp_libfunc(), gen_memset_value_from_prev(), gen_reg_rtx(), gen_satfract_conv_libfunc(), gen_satfractuns_conv_libfunc(), gen_trunc_conv_libfunc(), general_operand(), get_narrowest_mode(), get_stored_val(), get_supported_else_vals(), hash_rtx(), immediate_operand(), scalar_mode::includes_p(), init_derived_machine_modes(), init_emit_once(), init_expmed_one_conv(), init_expmed_one_mode(), int_mode_for_mode(), invariant_p(), is_complex_float_mode(), is_complex_int_mode(), is_float_mode(), is_int_mode(), layout_decl(), loc_descriptor(), lto_input_mode_table(), lto_write_mode_table(), mode_for_vector(), move_plus_up(), mul_highpart_cost_ptr(), mul_widen_cost_ptr(), native_decode_vector_rtx(), native_encode_rtx(), noce_emit_cmove(), noce_get_condition(), nonzero_bits1(), omp_clause_aligned_alignment(), omp_max_vf(), output_constant_pool_2(), precompute_arguments(), prepare_call_arguments(), prepare_cmp_insn(), record_value_for_reg(), reg_nonzero_bits_for_combine(), reg_subword_p(), replace_reg_with_saved_mem(), reversed_comparison_code_parts(), safe_predicate_mode(), simple_move(), simple_reg_p(), simplify_context::simplify_binary_operation_1(), simplify_comparison(), simplify_const_relational_operation(), simplify_const_unary_operation(), simplify_if_then_else(), simplify_immed_subreg(), simplify_context::simplify_relational_operation(), simplify_set(), simplify_shift_const_1(), simplify_context::simplify_subreg(), simplify_subreg_concatn(), simplify_subreg_regno(), simplify_context::simplify_unary_operation_1(), simplify_vector_constructor(), split_double(), store_constructor(), store_expr(), store_field(), store_integral_bit_field(), try_combine(), update_rsp_from_reg_equal(), vec_perm_indices_to_rtx(), vect_get_loop_mask(), vect_set_loop_condition_partial_vectors_avx512(), vect_verify_full_masking_avx512(), and vt_add_function_parameter().
#define GET_MODE_COMPLEX_MODE | ( | MODE | ) |
Referenced by expand_doubleword_mod(), and layout_type().
#define GET_MODE_FBIT | ( | MODE | ) |
Referenced by check_real_for_fixed_mode(), do_fixed_add(), do_fixed_divide(), do_fixed_multiply(), do_fixed_neg(), do_fixed_shift(), fixed_convert(), fixed_convert_from_int(), fixed_convert_from_real(), fixed_from_double_int(), fixed_from_string(), fixed_isneg(), fixed_saturate1(), fixed_saturate2(), fixed_to_decimal(), fold_convert_const_int_from_fixed(), init_emit_once(), lto_input_mode_table(), lto_write_mode_table(), and real_convert_from_fixed().
#define GET_MODE_IBIT | ( | MODE | ) |
Referenced by check_real_for_fixed_mode(), do_fixed_add(), do_fixed_divide(), do_fixed_multiply(), do_fixed_neg(), do_fixed_shift(), fixed_convert(), fixed_convert_from_int(), fixed_convert_from_real(), fixed_from_double_int(), fixed_from_string(), fixed_isneg(), fixed_saturate1(), fixed_saturate2(), lto_input_mode_table(), and lto_write_mode_table().
#define GET_MODE_INNER | ( | MODE | ) |
Return the mode of the basic parts of MODE. For vector modes this is the mode of the vector elements. For complex modes it is the mode of the real and imaginary parts. For other modes it is MODE itself.
Referenced by add_const_value_attribute(), rtx_vector_builder::allow_steps_p(), rtx_vector_builder::apply_step(), assign_parm_setup_reg(), assign_parms_unsplit_complex(), avoid_type_punning_on_regs(), bitwise_mode_for_mode(), bitwise_mode_for_size(), bitwise_type_for_mode(), builtin_memset_gen_str(), builtin_memset_read_str(), can_open_code_p(), can_vec_set_var_idx_p(), carry_backpropagate(), clear_storage_hints(), const_vec_series_p_1(), const_vector_elt(), const_vector_from_tree(), const_vector_int_elt(), const_vector_mask_from_tree(), cse_insn(), emit_move_complex(), emit_move_complex_push(), exact_int_to_float_conversion_p(), expand_abs_nojump(), expand_absneg_bit(), expand_arith_overflow_result_store(), expand_assignment(), expand_binop(), expand_debug_expr(), expand_expr_real_1(), expand_expr_real_2(), expand_mult_const(), expand_rotate_as_vec_perm(), expand_shift_1(), expand_unop(), expand_vec_series_expr(), expand_vec_set_optab_fn(), expand_vector_broadcast(), ext_dce_process_sets(), ext_dce_process_uses(), extract_bit_field_1(), rtx_vector_builder::find_cached_value(), find_widening_optab_handler_and_mode(), flip_storage_order(), fold_const_call_1(), fold_const_call_1(), gen_const_vec_series(), gen_const_vector(), gen_reg_rtx(), init_emit_once(), loc_descriptor(), lto_input_mode_table(), lto_write_mode_table(), maybe_legitimize_operand(), mode_for_vector(), native_decode_vector_rtx(), native_encode_rtx(), output_constant_pool_2(), plus_constant(), qimode_for_vec_perm(), read_complex_part(), related_int_vector_mode(), selector_fits_mode_p(), simplify_context::simplify_binary_operation_1(), simplify_context::simplify_binary_operation_series(), simplify_const_binary_operation(), simplify_const_unary_operation(), simplify_const_vector_subreg(), simplify_context::simplify_gen_vec_select(), simplify_shift_const_1(), simplify_context::simplify_subreg(), simplify_subreg_concatn(), simplify_context::simplify_unary_operation_1(), op_by_pieces_d::smallest_fixed_size_mode_for_size(), rtx_vector_builder::step(), store_bit_field_1(), store_constructor(), subreg_get_info(), supportable_indirect_convert_operation(), supportable_widening_operation(), synth_mult(), type_for_widest_vector_mode(), validate_pattern(), validate_subreg(), vec_perm_indices_to_rtx(), vect_analyze_loop_1(), vect_chooses_same_modes_p(), vect_slp_region(), vectorizable_load(), widest_fixed_size_mode_for_size(), and write_complex_part().
#define GET_MODE_MASK | ( | MODE | ) |
Referenced by can_vec_perm_var_p(), canonicalize_condition(), carry_backpropagate(), clear_storage(), combine_set_extension(), combine_simplify_rtx(), determine_block_size(), do_negate(), do_plus_minus(), doloop_simplify_count(), emit_block_move(), emit_block_move_via_pattern(), expand_compound_operation(), expand_mult_const(), expand_vec_perm_var(), expand_vector_divmod(), expmed_mult_highpart(), ext_dce_process_sets(), ext_dce_process_uses(), force_int_to_mode(), force_to_mode(), iv_number_of_iterations(), loc_list_from_tree_1(), low_bitmask_len(), make_compound_operation_int(), make_extraction(), make_field_assignment(), mem_loc_descriptor(), merge_outer_ops(), minmax_loc_descriptor(), move2add_use_add2_insn(), native_encode_rtx(), noce_try_bitop(), nonzero_bits(), nonzero_bits1(), num_sign_bit_copies1(), output_constant_pool_2(), prepare_cmp_insn(), record_dead_and_set_regs_1(), record_promoted_value(), reg_nonzero_bits_for_combine(), rotate_loc_descriptor(), scompare_loc_descriptor_narrow(), selector_fits_mode_p(), set_nonzero_bits_and_sign_copies(), set_storage_via_setmem(), sign_extend_short_imm(), simplify_and_const_int_1(), simplify_context::simplify_binary_operation_1(), simplify_compare_const(), simplify_comparison(), simplify_const_relational_operation(), simplify_if_then_else(), simplify_shift_const_1(), simplify_context::simplify_truncation(), simplify_context::simplify_unary_operation_1(), synth_mult(), try_combine(), try_widen_shift_mode(), ucompare_loc_descriptor(), update_reg_equal_equiv_notes(), val_signbit_p(), vect_recog_divmod_pattern(), and vectorizable_operation().
#define GET_MODE_NAME | ( | MODE | ) |
Referenced by build_common_builtin_nodes(), compute_costs(), compute_splitting_shift(), debug_optab_libfuncs(), debug_reload_to_stream(), debug_value_data(), dump_choices(), dump_iv_info(), dump_shift_choices(), expand_BITINTTOFLOAT(), expand_FLOATTOBITINT(), find_mode(), flip_storage_order(), gen_exp(), gen_interclass_conv_libfunc(), gen_intraclass_conv_libfunc(), gen_libfunc(), gen_rtx_scratch(), generate_reduction_builtin_1(), get_mode_token(), initialize_iterators(), lto_write_mode_table(), match_pattern(), match_rtx(), output_operand_data(), output_peephole2_scratches(), print_node(), print_parameter_value(), rtx_writer::print_rtx(), print_value(), replace_read(), simplify_compare_const(), split_reg(), validate_pattern(), validate_value_data(), vect_analyze_loop(), vect_analyze_loop_1(), vect_joust_loop_vinfos(), vect_lanes_optab_supported_p(), vect_slp_region(), vect_transform_loop(), and write_test_expr().
#define GET_MODE_UNIT_BITSIZE | ( | MODE | ) |
Referenced by bitwise_type_for_mode(), choose_mult_variant(), combine_simplify_rtx(), default_shift_truncation_mask(), expand_assignment(), expand_debug_expr(), expand_debug_source_expr(), expand_mult(), extract_bit_field_1(), fold_rtx(), init_expmed_one_mode(), shift_amt_for_vec_perm_mask(), simplify_context::simplify_binary_operation_1(), simplify_shift_const_1(), and verify_gimple_assign_ternary().
#define GET_MODE_UNIT_PRECISION | ( | MODE | ) |
Referenced by choose_mult_variant(), combine_simplify_rtx(), convert_move(), exact_int_to_float_conversion_p(), expand_debug_expr(), expand_debug_source_expr(), expand_float(), extract_bit_field_1(), fold_binary_loc(), fold_rtx(), mode_can_transfer_bits(), reverse_rotate_by_imm_p(), simplify_context::simplify_binary_operation_1(), simplify_rotate_op(), simplify_shift_const_1(), simplify_context::simplify_truncation(), simplify_context::simplify_unary_operation_1(), and supportable_convert_operation().
#define GET_MODE_UNIT_SIZE | ( | MODE | ) |
Get the size in bytes or bits of the basic parts of an object of mode MODE.
Referenced by add_const_value_attribute(), add_equal_note(), base_alias_check(), can_duplicate_and_interleave_p(), can_vec_perm_const_p(), can_vec_perm_var_p(), check_load_store_for_partial_vectors(), combine_reaching_defs(), expand_unop(), expand_vec_perm_const(), expand_vec_perm_var(), extract_bit_field_1(), gen_highpart(), loc_descriptor(), mem_loc_descriptor(), merge_def_and_ext(), native_encode_rtx(), preferred_mem_scale_factor(), set_noop_p(), set_reg_attrs_for_decl_rtl(), simplify_context::simplify_subreg(), simplify_context::simplify_unary_operation_1(), transform_ifelse(), validate_subreg(), vectorizable_load(), vectorizable_store(), and widened_mode().
#define INTEGRAL_MODE_P | ( | MODE | ) |
Nonzero if MODE is an integral mode.
Referenced by calculate_equiv_gains(), combine_simplify_rtx(), comparison_code_valid_for_mode(), default_secondary_memory_needed_mode(), expand_mult(), find_moveable_pseudos(), force_operand(), gen_int_fixed_libfunc(), gen_int_fp_fixed_libfunc(), gen_int_fp_libfunc(), gen_int_fp_signed_fixed_libfunc(), gen_int_signed_fixed_libfunc(), gen_int_unsigned_fixed_libfunc(), get_related_vectype_for_scalar_type(), promote_function_mode(), simplify_context::simplify_binary_operation_1(), simplify_const_relational_operation(), simplify_context::simplify_relational_operation_1(), and try_combine().
#define MACHINE_MODE_BITSIZE 16 |
The MACHINE_MODE_BITSIZE should be exactly aligned with the type of the machine_mode array in the machmode.h and genmodes.cc. For example as below. +------------------------+-------+ | MACHINE_MODE_BITSIZE | 16 | +------------------------+-------+ | mode_inter[] | short | | mode_next[] | short | | mode_wider[] | short | | mode_2xwider[] | short | | mode_complex[] | short | | class_narrowest_mode[] | short | +------------------------+-------+
Referenced by subreg_shape::unique_id().
#define MACRO_MODE | ( | MODE | ) |
Wrapper for mode arguments to target macros, so that if a target doesn't need polynomial-sized modes, its header file can continue to treat everything as fixed_size_mode. This should go away once macros are moved to target hooks. It shouldn't be used in other contexts.
Referenced by base_reg_class(), default_class_max_nregs(), default_libcall_value(), default_memory_move_cost(), default_register_move_cost(), default_secondary_reload(), and ok_for_base_p_1().
#define NARROWEST_INT_MODE |
The narrowest full integer mode available on the target.
Referenced by alignment_for_piecewise_move(), push_block(), simplify_using_ranges::simplify_float_conversion_using_ranges(), and widest_fixed_size_mode_for_size().
#define ONLY_FIXED_SIZE_MODES 0 |
Always treat machine modes as fixed-size while compiling code specific to targets that have no variable-size modes.
#define OPAQUE_MODE_P | ( | MODE | ) |
Nonzero if MODE is opaque.
Referenced by find_moveable_pseudos(), and verify_opaque_type().
#define SCALAR_ACCUM_MODE_P | ( | MODE | ) |
Nonzero if MODE is a scalar accum mode.
Referenced by mode_for_vector(), and type_for_widest_vector_mode().
#define SCALAR_FLOAT_MODE_P | ( | MODE | ) |
Nonzero if MODE is a scalar floating point mode.
Referenced by add_const_value_attribute(), assign_parm_setup_stack(), canonicalize_condition(), convert_float_to_wider_int(), convert_mode_scalar(), convert_wider_int_to_float(), default_unspec_may_trap_p(), do_compare_rtx_and_jump(), do_compile(), emit_move_insn(), expand_call(), expand_expr_real_1(), expand_value_return(), find_comparison_args(), find_equiv_reg(), fold_const_call_1(), fold_const_call_1(), fold_const_call_1(), fold_rtx(), gen_lowpart_common(), general_operand(), scalar_float_mode::includes_p(), loc_descriptor(), mem_loc_descriptor(), mode_for_vector(), precompute_register_parameters(), prepare_cmp_insn(), relational_result(), simplify_context::simplify_binary_operation_1(), simplify_const_binary_operation(), simplify_const_relational_operation(), simplify_const_unary_operation(), and type_for_widest_vector_mode().
#define SCALAR_FRACT_MODE_P | ( | MODE | ) |
Nonzero if MODE is a scalar fract mode.
Referenced by mode_for_vector(), and type_for_widest_vector_mode().
#define SCALAR_INT_MODE_P | ( | MODE | ) |
Nonzero if MODE is a scalar integral mode.
Referenced by add_mask_else_and_len_args(), address_operand(), assign_parm_setup_stack(), avoid_type_punning_on_regs(), canonicalize_comparison(), change_zero_ext(), combine_instructions(), constrain_operands(), convert_extracted_bit_field(), convert_float_to_wider_int(), convert_wider_int_to_float(), create_new_invariant(), cse_insn(), do_compare_rtx_and_jump(), do_store_flag(), emit_group_load_1(), emit_group_store(), expand_call(), expand_debug_expr(), expand_expr_divmod(), expand_expr_real_1(), expand_expr_real_2(), expand_fn_using_insn(), expand_mult(), expand_mult_const(), expand_shift_1(), expand_unop(), expand_value_return(), expand_vector_comparison(), expand_vector_condition(), expand_widen_pattern_expr(), extract_bit_field_1(), find_args_size_adjust(), fold_const_call_1(), fold_const_call_1(), force_to_mode(), gen_lowpart_for_combine(), gen_lowpart_or_truncate(), get_related_vectype_for_scalar_type(), gimplify_expr(), HWI_COMPUTABLE_MODE_P(), if_then_else_cond(), implies_p(), scalar_int_mode::includes_p(), lra_substitute_pseudo(), mem_loc_descriptor(), narrowing_initializer_constant_valid_p(), noce_emit_store_flag(), precompute_register_parameters(), relational_result(), reload_cse_move2add_invalidate(), resolve_simple_move(), reverse_op(), rtl_for_decl_location(), simple_move(), simplify_context::simplify_binary_operation_1(), simplify_operand_subreg(), simplify_context::simplify_relational_operation_1(), simplify_set(), simplify_context::simplify_subreg(), simplify_context::simplify_truncation(), store_constructor(), store_expr(), supportable_narrowing_operation(), supportable_widening_operation(), trunc_int_for_mode(), try_const_anchors(), type_strictly_matches_mode_p(), vectorizable_load(), vectorizable_simd_clone_call(), and vectorizable_store().
#define SCALAR_UACCUM_MODE_P | ( | MODE | ) |
Nonzero if MODE is a scalar uaccum mode.
Referenced by mode_for_vector(), and type_for_widest_vector_mode().
#define SCALAR_UFRACT_MODE_P | ( | MODE | ) |
Nonzero if MODE is a scalar ufract mode.
Referenced by mode_for_vector(), and type_for_widest_vector_mode().
#define SIGNED_FIXED_POINT_MODE_P | ( | MODE | ) |
Nonzero if MODE is a scalar/vector fract or accum mode.
Referenced by check_real_for_fixed_mode(), fixed_convert(), fixed_convert_from_int(), fixed_from_string(), fixed_isneg(), fold_convert_const_int_from_fixed(), gen_int_fp_signed_fixed_libfunc(), gen_int_signed_fixed_libfunc(), gen_signed_fixed_libfunc(), and init_emit_once().
#define SIGNED_SCALAR_FIXED_POINT_MODE_P | ( | MODE | ) |
Nonzero if MODE is a scalar fract or accum mode.
Referenced by fixed_from_double_int().
#define TRULY_NOOP_TRUNCATION_MODES_P | ( | MODE1, | |
MODE2 ) |
Referenced by assign_parm_setup_block(), combine_simplify_rtx(), convert_mode_scalar(), convert_modes(), expand_binop(), expand_parity(), expand_unop(), extract_bit_field_as_subreg(), extract_bit_field_using_extv(), find_shift_sequence(), gen_lowpart_general(), gen_lowpart_or_truncate(), get_best_extraction_insn(), make_extraction(), notreg_cost(), record_truncated_value(), reg_truncated_to_mode(), simplify_context::simplify_unary_operation_1(), and store_bit_field_using_insv().
#define UACCUM_MODE_P | ( | MODE | ) |
Nonzero if MODE is a scalar/vector uaccum mode.
#define UFRACT_MODE_P | ( | MODE | ) |
Nonzero if MODE is a scalar/vector ufract mode.
#define UNSIGNED_FIXED_POINT_MODE_P | ( | MODE | ) |
Nonzero if MODE is a scalar/vector ufract or uaccum mode.
Referenced by do_fixed_add(), do_fixed_divide(), do_fixed_multiply(), do_fixed_neg(), do_fixed_shift(), fixed_compare(), fixed_convert(), fixed_convert_from_int(), fixed_convert_from_real(), fixed_from_string(), fixed_saturate1(), fixed_saturate2(), fixed_to_decimal(), gen_int_unsigned_fixed_libfunc(), gen_unsigned_fixed_libfunc(), and real_convert_from_fixed().
#define UNSIGNED_SCALAR_FIXED_POINT_MODE_P | ( | MODE | ) |
Nonzero if MODE is a scalar ufract or uaccum mode.
Referenced by fixed_from_double_int().
#define VECTOR_MODE_P | ( | MODE | ) |
Nonzero if MODE is a vector mode.
Referenced by add_removable_extension(), bitwise_mode_for_mode(), bitwise_type_for_mode(), build_truth_vector_type_for(), build_truth_vector_type_for_mode(), builtin_memset_gen_str(), builtin_memset_read_str(), by_pieces_mode_supported_p(), can_duplicate_and_interleave_p(), can_store_by_pieces(), can_vec_extract(), can_vec_extract_var_idx_p(), can_vec_mask_load_store_p(), can_vec_perm_const_p(), can_vec_perm_var_p(), can_vec_set_var_idx_p(), check_load_store_for_partial_vectors(), comparison_code_valid_for_mode(), convert_modes(), convert_move(), default_vectorize_related_mode(), expand_absneg_bit(), expand_binop_directly(), expand_expr_real_1(), expand_expr_real_2(), expand_shift_1(), expand_vector_broadcast(), expand_vector_conversion(), expand_vector_operation(), expand_vector_operations_1(), expand_vector_scalar_condition(), expand_vector_ubsan_overflow(), expand_while_optab_fn(), extract_bit_field_1(), find_widening_optab_handler_and_mode(), fold_rtx(), gen_memset_value_from_prev(), get_absneg_bit_mode(), get_compute_type(), get_inner_reference(), get_len_load_store_mode(), get_related_vectype_for_scalar_type(), get_stored_val(), gimple_expand_vec_cond_expr(), ifcvt_can_use_mask_load_store(), known_cond(), maybe_legitimize_operand(), native_decode_rtx(), process_alt_operands(), related_int_vector_mode(), related_vector_mode(), relational_result(), rtl_for_decl_init(), signed_or_unsigned_type_for(), simplify_context::simplify_binary_operation_1(), simplify_const_binary_operation(), simplify_const_unary_operation(), simplify_context::simplify_gen_vec_select(), simplify_context::simplify_merge_mask(), simplify_context::simplify_subreg(), simplify_subreg_concatn(), simplify_context::simplify_ternary_operation(), simplify_context::simplify_unary_operation_1(), simplify_vector_constructor(), store_bit_field_1(), store_constructor(), supportable_convert_operation(), supportable_half_widening_operation(), supportable_widening_operation(), supported_vec_convert_optab(), type_strictly_matches_mode_p(), undistribute_bitref_for_vector(), validate_pattern(), validate_subreg(), vec_duplicate_p(), vect_analyze_loop_1(), vect_chooses_same_modes_p(), vect_create_epilog_for_reduction(), vect_emulated_vector_p(), vect_get_vector_types_for_stmt(), vect_grouped_load_supported(), vect_grouped_store_supported(), vect_model_reduction_cost(), vect_recog_bool_pattern(), vect_recog_cond_store_pattern(), vect_slp_region(), vect_synth_mult_by_constant(), vector_type_mode(), vector_vector_composition_type(), vectorizable_load(), vectorizable_shift(), vectorizable_store(), and vectorized_internal_fn_supported_p().
typedef opt_mode<machine_mode> opt_machine_mode |
Machine mode definitions for GCC; included by rtl.h and tree.h. Copyright (C) 1991-2024 Free Software Foundation, Inc. This file is part of GCC. GCC is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version. GCC is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with GCC; see the file COPYING3. If not see <http://www.gnu.org/licenses/>.
enum mode_class |
References as_a(), and opt_mode< T >::else_void().
Assert that mode M has type T, and return it in that form.
References gcc_checking_assert.
Referenced by as_a().
|
extern |
Find a mode that can be used for efficient bitwise operations on MODE, if one exists.
References COMPLEX_MODE_P, gcc_checking_assert, GET_MODE_BITSIZE(), GET_MODE_CLASS, GET_MODE_INNER, have_regs_of_mode, int_mode_for_mode(), is_a(), MAX_FIXED_MODE_SIZE, maybe_gt, mode_for_size(), targetm, and VECTOR_MODE_P.
Referenced by bitwise_type_for_mode().
|
inline |
Likewise for MODE_DECIMAL_FLOAT.
References dyn_cast(), and mode_for_size().
References dyn_cast(), and opt_mode< T >::else_void().
Convert M to an opt_mode<T>.
References T.
Referenced by decimal_float_mode_for_size(), dyn_cast(), float_mode_for_size(), int_mode_for_size(), and smallest_int_mode_for_size().
|
inline |
Return the machine mode to use for a MODE_FLOAT of SIZE bits, if one exists.
References dyn_cast(), and mode_for_size().
Referenced by layout_type().
|
extern |
Find the best mode to use to access a bit field.
Find the best machine mode to use when referencing a bit field of length BITSIZE bits starting at BITPOS. BITREGION_START is the bit position of the first bit in this sequence of bit fields. BITREGION_END is the last bit in this sequence. If these two fields are non-zero, we should restrict the memory access to that range. Otherwise, we are allowed to touch any adjacent non bit-fields. The chosen mode must have no more than LARGEST_MODE_BITSIZE bits. INT_MAX is a suitable value for LARGEST_MODE_BITSIZE if the caller doesn't want to apply a specific limit. If no mode meets all these conditions, we return VOIDmode. The underlying object is known to be aligned to a boundary of ALIGN bits. If VOLATILEP is false and SLOW_BYTE_ACCESS is false, we return the smallest mode meeting these conditions. If VOLATILEP is false and SLOW_BYTE_ACCESS is true, we return the largest mode (but a mode no wider than UNITS_PER_WORD) that meets all the conditions. If VOLATILEP is true the narrow_volatile_bitfields target hook is used to decide which of the above modes should be used.
References GET_MODE_ALIGNMENT, GET_MODE_BITSIZE(), bit_field_mode_iterator::next_mode(), and bit_field_mode_iterator::prefer_smaller_modes().
Referenced by extract_fixed_bit_field(), fold_truth_andor_1(), optimize_bit_field_compare(), optimize_bitfield_assignment_op(), store_bit_field(), and store_fixed_bit_field().
ALWAYS_INLINE opt_mode< T > GET_MODE_2XWIDER_MODE | ( | const T & | m | ) |
For scalars, this is a mode with twice the precision. For vectors, this is a mode with the same inner mode but with twice the elements.
References mode_2xwider.
Referenced by expand_binop(), expand_expr_real_2(), expand_mul_overflow(), mode_iterator::get_2xwider(), mode_iterator::get_2xwider(), init_lower_subreg(), and init_sync_libfuncs_1().
|
extern |
Return the alignment of MODE. This will be bounded by 1 and BIGGEST_ALIGNMENT.
References MAX, MIN, and mode_base_align.
Referenced by emit_move_complex().
ALWAYS_INLINE if_poly< typenameT::measurement_type >::type GET_MODE_BITSIZE | ( | const T & | mode | ) |
References mode_to_bits().
ALWAYS_INLINE if_nonpoly< typenameT::measurement_type >::type GET_MODE_BITSIZE | ( | const T & | mode | ) |
References poly_int< N, C >::coeffs, and mode_to_bits().
ALWAYS_INLINE poly_uint16 GET_MODE_BITSIZE | ( | machine_mode | mode | ) |
Get the size in bits of an object of mode MODE.
References mode_to_bits().
Referenced by adjust_bit_field_mem_for_reg(), alter_reg(), ao_ref_init_from_vn_reference(), append_pattern_def_seq(), tree_switch_conversion::switch_conversion::array_value_type(), assign_parm_setup_reg(), avoid_type_punning_on_regs(), bitwise_mode_for_mode(), bitwise_mode_for_size(), bswap_loc_descriptor(), build_common_tree_nodes(), build_index_vector(), build_vector_type_for_mode(), calculate_table_based_CRC(), can_duplicate_and_interleave_p(), can_mult_highpart_p(), can_vec_extract(), canonicalize_address_mult(), canonicalize_iv_subregs(), carry_backpropagate(), clz_loc_descriptor(), compute_record_mode(), convert_mode_scalar(), convert_modes(), convert_move(), copy_blkmode_from_reg(), copy_blkmode_to_reg(), dead_debug_insert_temp(), default_secondary_memory_needed_mode(), delegitimize_mem_from_attrs(), do_compare_and_jump(), emit_block_cmp_via_loop(), emit_block_move_via_loop(), emit_block_move_via_oriented_loop(), emit_block_move_via_pattern(), emit_cstore(), emit_group_store(), emit_move_insn_1(), emit_store_flag_1(), emit_store_flag_int(), expand_absneg_bit(), expand_assignment(), expand_binop(), expand_builtin_issignaling(), expand_builtin_signbit(), expand_copysign_absneg(), expand_copysign_bit(), expand_debug_expr(), expand_divmod(), expand_doubleword_clz_ctz_ffs(), expand_expr_addr_expr_1(), expand_expr_real_1(), expand_expr_real_2(), expand_field_assignment(), expand_fix(), expand_float(), expand_function_end(), expand_misaligned_mem_ref(), expand_mult_highpart_adjust(), expand_omp_atomic(), expand_sdiv_pow2(), expand_shift_1(), expand_single_bit_test(), expand_smod_pow2(), expand_twoval_binop_libfunc(), expand_unop(), expand_vector_comparison(), expand_vector_condition(), expmed_mult_highpart(), expmed_mult_highpart_optab(), ext_dce_process_sets(), ext_dce_process_uses(), extract_bit_field(), extract_bit_field_1(), extract_bit_field_as_subreg(), extract_bit_field_using_extv(), extract_fixed_bit_field_1(), extract_high_half(), extract_integral_bit_field(), extract_low_bits(), find_bitfield_repr_type(), find_reloads(), find_shift_sequence(), finish_bitfield_representative(), fixed_from_double_int(), fold_nonarray_ctor_reference(), fold_truth_andor_1(), frame_offset_overflow(), gen_int_libfunc(), generate_reflecting_code_standard(), get_best_mode(), get_inner_reference(), get_ref_base_and_extent(), get_related_vectype_for_scalar_type(), get_section_anchor(), get_shiftadd_cost(), get_stored_val(), gimple_fold_builtin_memory_op(), gimple_fold_builtin_memset(), group_limit(), strlen_pass::handle_builtin_memcmp(), immed_double_const(), init_derived_machine_modes(), instrument_bool_enum_load(), instrument_si_overflow(), int_mode_for_mode(), iv_number_of_iterations(), iv_subreg(), layout_type(), loc_list_from_tree_1(), lowpart_bit_field_p(), make_compound_operation_int(), make_extraction(), match_arith_overflow(), maybe_optimize_mod_cmp(), maybe_optimize_pow2p_mod_cmp(), mem_loc_descriptor(), merge_ranges(), mergeable_constant_section(), mergeable_string_section(), mode_can_transfer_bits(), mode_for_vector(), narrow_bit_field_mem(), native_decode_rtx(), native_encode_fixed(), bit_field_mode_iterator::next_mode(), noce_emit_move_insn(), noce_try_bitop(), optimize_atomic_compare_exchange_p(), optimize_bit_field_compare(), optimize_bitfield_assignment_op(), optimize_range_tests_to_bit_test(), output_constant_pool_1(), output_constant_pool_2(), predicate_statements(), prepare_call_arguments(), prepare_cmp_insn(), read_complex_part(), replace_reg_with_saved_mem(), rotate_loc_descriptor(), scompare_loc_descriptor_narrow(), set_storage_via_setmem(), shift_return_value(), signed_or_unsigned_type_for(), simd_clone_adjust(), simd_clone_adjust_argument_types(), simd_clone_adjust_return_type(), simple_mem_bitfield_p(), simple_move(), simplify_and_const_int_1(), simplify_context::simplify_binary_operation_1(), simplify_comparison(), simplify_shift_const_1(), simplify_context::simplify_subreg(), simplify_context::simplify_truncation(), simplify_while_replacing(), store_bit_field(), store_bit_field_1(), store_bit_field_using_insv(), store_constructor(), store_expr(), store_field(), store_fixed_bit_field(), store_fixed_bit_field_1(), store_integral_bit_field(), store_split_bit_field(), strict_volatile_bitfield_p(), supportable_indirect_convert_operation(), synth_mult(), try_casesi(), ubsan_encode_value(), undistribute_bitref_for_vector(), unextend(), validate_test_and_branch(), vect_determine_mask_precision(), vect_lanes_optab_supported_p(), vect_recog_cast_forwprop_pattern(), vect_recog_divmod_pattern(), vect_truncate_gather_scatter_offset(), vect_verify_full_masking(), vect_verify_full_masking_avx512(), vect_verify_loop_lens(), vector_type_mode(), vector_vector_composition_type(), vectorizable_conversion(), vectorizable_operation(), vectorizable_simd_clone_call(), vectorizable_store(), verify_gimple_assign_ternary(), verify_types_in_gimple_reference(), widen_bswap(), and write_complex_part().
ALWAYS_INLINE opt_mode< T > GET_MODE_NEXT_MODE | ( | const T & | m | ) |
Get the next natural mode (not narrower, eg, QI -> HI -> SI -> DI -> TI or HF -> BF -> SF -> DF -> XF -> TF).
References mode_next.
Referenced by mode_iterator::get_known_next(), mode_iterator::get_next(), and mode_iterator::get_next().
ALWAYS_INLINE if_poly< typenameT::measurement_type >::type GET_MODE_NUNITS | ( | const T & | mode | ) |
References mode_to_nunits().
ALWAYS_INLINE if_nonpoly< typenameT::measurement_type >::type GET_MODE_NUNITS | ( | const T & | mode | ) |
References poly_int< N, C >::coeffs, and mode_to_nunits().
ALWAYS_INLINE poly_uint16 GET_MODE_NUNITS | ( | machine_mode | mode | ) |
Get the number of units in an object of mode MODE. This is 2 for complex modes and the number of elements for vector modes.
References mode_to_nunits().
Referenced by rtx_vector_builder::build(), build_vector_type_for_mode(), can_duplicate_and_interleave_p(), can_mult_highpart_p(), can_vec_perm_var_p(), expand_binop_directly(), expand_mult_highpart(), expand_vec_perm_const(), expand_vec_perm_var(), expand_vector_broadcast(), find_sets_in_insn(), gen_rtx_CONST_VECTOR(), gimple_fold_partial_load_store_mem_ref(), have_whole_vector_shift(), lto_input_mode_table(), lto_write_mode_table(), may_trap_p_1(), maybe_swap_commutative_operands(), mode_can_transfer_bits(), mode_for_vector(), native_decode_rtx(), native_decode_vector_rtx(), native_encode_rtx(), rtx_vector_builder::new_vector(), omp_max_vf(), output_constant_pool_2(), rtx_writer::print_rtx_operand_codes_E_and_V(), related_int_vector_mode(), rtx_vector_builder::shape_nelts(), shift_amt_for_vec_perm_mask(), simplify_context::simplify_binary_operation_1(), simplify_const_binary_operation(), simplify_const_unary_operation(), simplify_const_vector_byte_offset(), simplify_const_vector_subreg(), simplify_context::simplify_merge_mask(), simplify_context::simplify_subreg(), simplify_context::simplify_ternary_operation(), simplify_context::simplify_unary_operation_1(), subreg_get_info(), type_for_widest_vector_mode(), validate_pattern(), vec_perm_indices_to_rtx(), vec_series_highpart_p(), vec_series_lowpart_p(), vect_create_epilog_for_reduction(), vect_grouped_load_supported(), and vect_grouped_store_supported().
ALWAYS_INLINE if_poly< typenameT::measurement_type >::type GET_MODE_PRECISION | ( | const T & | mode | ) |
References mode_to_precision().
ALWAYS_INLINE if_nonpoly< typenameT::measurement_type >::type GET_MODE_PRECISION | ( | const T & | mode | ) |
References poly_int< N, C >::coeffs, and mode_to_precision().
ALWAYS_INLINE poly_uint16 GET_MODE_PRECISION | ( | machine_mode | mode | ) |
Get the number of value bits of an object of mode MODE.
References mode_to_precision().
Referenced by add_const_value_attribute(), add_mask_else_and_len_args(), adjust_mems(), avoid_type_punning_on_regs(), bitint_precision_kind(), build_common_tree_nodes(), build_truth_vector_type_for_mode(), can_atomic_load_p(), canonicalize_condition(), canonicalize_loop_ivs(), change_zero_ext(), clear_padding_bitint_needs_padding_p(), clear_padding_type(), clz_loc_descriptor(), combine_reaching_defs(), combine_simplify_rtx(), compute_record_mode(), convert_debug_memory_address(), convert_mode_scalar(), convert_modes(), convert_move(), convert_mult_to_widen(), convert_plusminus_to_widen(), convert_to_integer_1(), cse_insn(), cselib_record_sets(), default_scalar_mode_supported_p(), desired_pro_or_demotion_p(), do_compare_rtx_and_jump(), do_fixed_divide(), do_fixed_multiply(), do_fixed_shift(), do_store_flag(), do_tablejump(), doloop_modify(), doloop_optimize(), tree_switch_conversion::jump_table_cluster::emit(), emit_cstore(), expand_abs_nojump(), expand_absneg_bit(), expand_addsub_overflow(), expand_arith_overflow(), expand_arith_overflow_result_store(), expand_assignment(), expand_atomic_load(), expand_atomic_store(), expand_binop(), expand_builtin_signbit(), expand_clrsb_using_clz(), expand_compound_operation(), expand_copysign_absneg(), expand_copysign_bit(), expand_ctz(), expand_debug_expr(), expand_expr_real_1(), expand_expr_real_2(), expand_ffs(), expand_field_assignment(), expand_fix(), expand_float(), expand_fn_using_insn(), expand_mul_overflow(), expand_mult_const(), expand_one_cmpl_abs_nojump(), expand_shift_1(), expand_smod_pow2(), expand_ubsan_result_store(), expand_unop(), expand_vector_comparison(), expand_vector_condition(), extended_count(), extract_bit_field_1(), find_base_term(), find_base_value(), find_bitfield_repr_type(), find_split_point(), find_widening_optab_handler_and_mode(), finish_bitfield_representative(), fixed_convert_from_real(), fixed_from_string(), fixed_to_decimal(), flip_storage_order(), force_int_to_mode(), gen_extend_conv_libfunc(), gen_int_mode(), gen_trunc_conv_libfunc(), get_last_value(), get_mode_bounds(), wi::int_traits< rtx_mode_t >::get_precision(), gimple_fold_builtin_memset(), hwasan_truncate_to_tag_size(), HWI_COMPUTABLE_MODE_P(), if_then_else_cond(), immed_wide_int_const(), immed_wide_int_const_1(), init_expmed_one_conv(), init_num_sign_bit_copies_in_rep(), initialize_sizetypes(), instrument_bool_enum_load(), int_fits_type_p(), is_narrower_int_mode(), iv_number_of_iterations(), layout_type(), load_extend_op(), lsb_bitfield_op_p(), lto_input_mode_table(), lto_write_mode_table(), make_compound_operation_int(), make_extraction(), make_field_assignment(), mask_rtx(), wi::max_value(), wi::min_value(), mode_for_size(), mode_signbit_p(), native_decode_rtx(), native_decode_vector_rtx(), native_encode_int(), native_encode_rtx(), native_interpret_int(), bit_field_mode_iterator::next_mode(), nonzero_bits1(), num_sign_bit_copies1(), optimize_range_tests_diff(), optimize_range_tests_xor(), output_constant(), output_constant_pool_2(), paradoxical_subreg_p(), partial_subreg_p(), prefer_and_bit_test(), process_regs_for_copy(), real_convert_from_fixed(), record_dead_and_set_regs_1(), reduce_to_bit_field_precision(), reg_nonzero_bits_for_combine(), reg_num_sign_bit_copies_for_combine(), wi::shwi(), sign_extend_short_imm(), simplify_context::simplify_binary_operation_1(), simplify_compare_const(), simplify_comparison(), simplify_const_binary_operation(), simplify_const_relational_operation(), simplify_const_unary_operation(), simplify_const_vector_byte_offset(), simplify_const_vector_subreg(), simplify_using_ranges::simplify_float_conversion_using_ranges(), simplify_if_then_else(), simplify_operand_subreg(), simplify_context::simplify_relational_operation_1(), simplify_rotate_op(), simplify_set(), simplify_shift_const_1(), simplify_context::simplify_subreg(), simplify_context::simplify_ternary_operation(), simplify_context::simplify_truncation(), simplify_context::simplify_unary_operation_1(), simplify_while_replacing(), smallest_mode_for_size(), split_reg(), store_bit_field_1(), store_constructor(), store_expr(), trunc_int_for_mode(), try_combine(), try_widen_shift_mode(), type_has_mode_precision_p(), update_rsp_from_reg_equal(), use_narrower_mode(), use_narrower_mode_test(), val_signbit_known_clear_p(), val_signbit_known_set_p(), val_signbit_p(), vect_create_epilog_for_reduction(), vect_recog_rotate_pattern(), vectorizable_load(), vectorizable_reduction(), verify_gimple_assign_unary(), widen_bswap(), and widen_leading().
ALWAYS_INLINE if_poly< typenameT::measurement_type >::type GET_MODE_SIZE | ( | const T & | mode | ) |
References mode_to_bytes().
ALWAYS_INLINE if_nonpoly< typenameT::measurement_type >::type GET_MODE_SIZE | ( | const T & | mode | ) |
References poly_int< N, C >::coeffs, and mode_to_bytes().
ALWAYS_INLINE poly_uint16 GET_MODE_SIZE | ( | machine_mode | mode | ) |
Get the size in bytes of an object of mode MODE.
References mode_to_bytes().
Referenced by add_autoinc_candidates(), add_const_value_attribute(), add_pseudo_to_slot(), adjust_bit_field_mem_for_reg(), adjust_mems(), alignment_for_piecewise_move(), alter_reg(), anti_adjust_stack_and_probe_stack_clash(), apply_args_size(), apply_result_size(), tree_switch_conversion::switch_conversion::array_value_type(), asan_emit_stack_protection(), assemble_real(), assign_mem_slot(), assign_parm_find_stack_rtl(), assign_parm_remove_parallels(), assign_parm_setup_block(), assign_parm_setup_block_p(), assign_parm_setup_reg(), assign_parm_setup_stack(), assign_parms_unsplit_complex(), assign_stack_local_1(), assign_stack_slot_num_and_sort_pseudos(), autoinc_split(), avoid_constant_pool_reference(), build_def_use(), builtin_memset_gen_str(), builtin_memset_read_str(), by_pieces_ninsns(), c_readstr(), calculate_table_based_CRC(), can_duplicate_and_interleave_p(), can_store_by_pieces(), can_vec_extract(), check_mem_read_rtx(), check_sibcall_argument_overlap_1(), choose_hard_reg_mode(), choose_reload_regs(), cleanup_auto_inc_dec(), clear_storage_hints(), coalesced_pseudo_reg_slot_compare(), combine_stack_adjustments_for_block(), complex_word_subreg_p(), concat_loc_descriptor(), concatn_loc_descriptor(), convert_descriptor_to_mode(), convert_memory_address_addr_space_1(), convert_mode_scalar(), convert_mult_to_widen(), convert_plusminus_to_widen(), convert_to_integer_1(), copy_blkmode_from_reg(), copy_blkmode_to_reg(), cse_insn(), cselib_hash_rtx(), cselib_lookup_1(), cselib_subst_to_values(), curr_insn_transform(), decompose(), default_class_max_nregs(), default_function_arg_padding(), default_hard_regno_nregs(), default_vectorize_related_mode(), df_word_lr_mark_ref(), discover_nonconstant_array_refs_r(), do_jump_by_parts_equality_rtx(), do_jump_by_parts_greater_rtx(), do_jump_by_parts_zero_rtx(), do_tablejump(), drop_writeback(), dwarf2out_frame_debug_cfa_offset(), dwarf2out_frame_debug_expr(), dwf_cfa_reg(), eliminate_regs_1(), elimination_effects(), emit_group_load_1(), emit_group_store(), emit_library_call_value_1(), emit_move_complex(), emit_move_complex_push(), emit_move_insn(), emit_move_multi_word(), emit_move_resolve_push(), emit_note_insn_var_location(), emit_push_insn(), emit_stack_save(), emit_store_flag_1(), emit_store_flag_int(), equiv_constant(), estimate_move_cost(), expand_absneg_bit(), expand_assignment(), expand_binop(), expand_builtin_apply(), expand_builtin_apply_args_1(), expand_builtin_issignaling(), expand_builtin_longjmp(), expand_builtin_nonlocal_goto(), expand_builtin_return(), expand_builtin_return_addr(), expand_builtin_setjmp_setup(), expand_builtin_signbit(), expand_builtin_strub_leave(), expand_builtin_update_setjmp_buf(), expand_call(), expand_clobber(), expand_compound_operation(), expand_copysign_absneg(), expand_copysign_bit(), expand_debug_expr(), expand_DIVMOD(), expand_expr_real_1(), expand_expr_real_2(), expand_function_start(), expand_ifn_atomic_compare_exchange_into_call(), expand_mult_highpart(), expand_rotate_as_vec_perm(), expand_shift_1(), expand_twoval_binop_libfunc(), expand_unop(), expand_value_return(), expand_vec_perm_var(), expression_expensive_p(), ext_dce_process_sets(), extract_bit_field_1(), extract_integral_bit_field(), extract_muldiv_1(), final_addr_vec_align(), find_args_size_adjust(), find_bitfield_repr_type(), find_dummy_reload(), find_inc_amount(), find_reloads(), find_reloads_subreg_address(), find_shift_sequence(), fold_read_from_constant_string(), for_each_inc_dec_find_inc_dec(), force_const_mem(), force_reload_address(), gen_highpart(), gen_lowpart_common(), gen_lowpart_for_combine(), gen_lowpart_general(), gen_memset_value_from_prev(), get_absneg_bit_mode(), get_address_cost_ainc(), get_arg_pointer_save_area(), get_best_extraction_insn(), get_biv_step_1(), get_call_args(), get_len_load_store_mode(), get_nl_goto_field(), get_related_vectype_for_scalar_type(), get_reload_reg(), get_same_sized_vectype(), get_secondary_mem(), get_stored_val(), get_subreg_tracking_sizes(), op_by_pieces_d::get_usable_mode(), gimple_fold_builtin_memset(), group_limit(), strlen_pass::handle_builtin_memcmp(), hard_function_value(), init_emit_regs(), init_one_dwarf_reg_size(), init_return_column_size(), initialize_sizetypes(), inline_string_cmp(), insert_float(), interesting_mode_p(), ira_create_allocno_objects(), ira_reuse_stack_slot(), ira_sort_regnos_for_alter_reg(), iv_add(), layout_type(), load_register_parameters(), loc_descriptor(), loc_list_from_tree_1(), locate_and_pad_parm(), long_double_as_float128(), lower_oacc_reductions(), lra_constraint_offset(), lra_constraints(), lra_spill(), lra_update_biggest_mode(), lto_input_mode_table(), lto_write_mode_table(), make_compound_operation_int(), make_extraction(), mark_not_eliminable(), maybe_mode_change(), mem_loc_descriptor(), mergeable_string_section(), minmax_loc_descriptor(), multiple_reg_loc_descriptor(), narrowing_initializer_constant_valid_p(), native_decode_rtx(), native_encode_complex(), native_encode_fixed(), native_encode_int(), native_encode_real(), native_encode_rtx(), native_encode_vector_part(), native_interpret_complex(), native_interpret_expr(), native_interpret_fixed(), native_interpret_int(), native_interpret_real(), new_cselib_val(), nonoverlapping_memrefs_p(), notreg_cost(), offset_within_block_p(), offsettable_address_addr_space_p(), omp_clause_aligned_alignment(), operand_subword(), operands_match_p(), optimize_atomic_compare_exchange_p(), optimize_constant_pool(), output_constant(), output_constant_pool_2(), output_object_block(), pad_below(), pair_mem_strip_offset(), place_block_symbol(), precompute_register_parameters(), prepare_call_arguments(), process_addr_reg(), process_alt_operands(), function_arg_info::promoted_size_in_bytes(), pseudo_reg_slot_compare(), push_operand(), vn_walk_cb_data::push_partial_def(), push_reload(), qimode_for_vec_perm(), read_complex_part(), read_modify_subreg_p(), recompute_pool_offsets(), record_operand_costs(), record_store(), record_subregs_of_mode(), remove_invalid_subreg_refs(), resolve_shift_zext(), resolve_simple_move(), result_vector(), rotate_loc_descriptor(), rtl_for_decl_init(), rtl_for_decl_location(), rtx_addr_can_trap_p_1(), rtx_cost(), op_by_pieces_d::run(), scompare_loc_descriptor(), scompare_loc_descriptor_narrow(), setup_save_areas(), shorten_branches(), simd_clone_init_simd_arrays(), simplify_context::simplify_binary_operation_1(), simplify_compare_const(), simplify_comparison(), simplify_gen_subreg_concatn(), simplify_context::simplify_gen_vec_select(), simplify_immed_subreg(), simplify_operand_subreg(), simplify_context::simplify_relational_operation_1(), simplify_rotate_op(), simplify_set(), simplify_shift_const_1(), simplify_context::simplify_subreg(), simplify_context::simplify_truncation(), simplify_vector_constructor(), simplify_while_replacing(), sjlj_emit_dispatch_table(), op_by_pieces_d::smallest_fixed_size_mode_for_size(), store_bit_field_1(), store_bit_field_using_insv(), store_constructor(), store_integral_bit_field(), store_one_arg(), store_split_bit_field(), string_cst_read_str(), subreg_get_info(), subreg_highpart_offset(), subreg_lowpart_offset(), subreg_lsb_1(), subreg_offset_from_lsb(), supportable_indirect_convert_operation(), pair_fusion_bb_info::track_access(), pair_fusion_bb_info::track_via_mem_expr(), true_dependence_1(), try_merge(), pair_fusion::try_promote_writeback(), function_arg_info::type_size_in_bytes(), ubsan_encode_value(), ucompare_loc_descriptor(), undefined_operand_subword_p(), undistribute_bitref_for_vector(), valid_multiword_target_p(), validate_subreg(), vect_build_slp_tree_2(), vect_enhance_data_refs_alignment(), vect_slp_region(), vect_supportable_dr_alignment(), vect_transform_loops(), vector_alignment_reachable_p(), vectorizable_assignment(), vectorizable_conversion(), vectorizable_load(), vectorizable_operation(), vectorizable_reduction(), vectorizable_simd_clone_call(), verify_gimple_assign_binary(), verify_gimple_assign_ternary(), verify_gimple_assign_unary(), vn_reference_lookup_3(), widen_memory_access(), widen_operand(), widest_fixed_size_mode_for_size(), word_dce_process_block(), write_complex_part(), and write_dependence_p().
ALWAYS_INLINE opt_mode< T > GET_MODE_WIDER_MODE | ( | const T & | m | ) |
Get the next wider mode (eg, QI -> HI -> SI -> DI -> TI or { HF, BF } -> SF -> DF -> XF -> TF). This is similar to GET_MODE_NEXT_MODE, but while GET_MODE_NEXT_MODE can include mode that have the same precision (e.g. GET_MODE_NEXT_MODE (HFmode) can be BFmode even when both have the same precision), this one will skip those. And always VOIDmode for modes whose class is !CLASS_HAS_WIDER_MODES_P.
References mode_wider.
Referenced by tree_switch_conversion::switch_conversion::array_value_type(), can_compare_p(), can_mult_highpart_p(), convert_mult_to_widen(), convert_plusminus_to_widen(), emit_note_insn_var_location(), expand_binop(), expmed_mult_highpart(), expmed_mult_highpart_optab(), extract_high_half(), find_widening_optab_handler_and_mode(), mode_iterator::get_known_wider(), mode_iterator::get_wider(), mode_iterator::get_wider(), init_expmed_one_mode(), init_num_sign_bit_copies_in_rep(), lto_input_mode_table(), make_extraction(), bit_field_mode_iterator::next_mode(), and simplify_using_ranges::simplify_float_conversion_using_ranges().
Return the narrowest mode in T's class.
References class_narrowest_mode, and GET_MODE_CLASS.
Referenced by tree_switch_conversion::switch_conversion::array_value_type().
void gt_pch_nx | ( | pod_mode< T > * | , |
gt_pointer_operator | , | ||
void * | ) |
|
inline |
Return true if MODE is a scalar integer mode that fits in a HOST_WIDE_INT.
References HOST_BITS_PER_WIDE_INT, mode_to_precision(), and SCALAR_INT_MODE_P.
Referenced by combine_set_extension(), combine_simplify_rtx(), exact_int_to_float_conversion_p(), expand_compound_operation(), expand_divmod(), expand_expr_real_2(), expand_fix(), expand_widening_mult(), expmed_mult_highpart(), extended_count(), find_split_point(), force_int_to_mode(), if_then_else_cond(), low_bitmask_len(), make_extraction(), record_promoted_value(), record_value_for_reg(), set_nonzero_bits_and_sign_copies(), simplify_context::simplify_binary_operation_1(), simplify_compare_const(), simplify_comparison(), simplify_const_relational_operation(), simplify_if_then_else(), simplify_logical(), simplify_set(), simplify_shift_const_1(), simplify_context::simplify_ternary_operation(), simplify_context::simplify_unary_operation_1(), try_widen_shift_mode(), update_reg_equal_equiv_notes(), update_rsp_from_reg_equal(), and vt_add_function_parameter().
|
inline |
References GET_MODE_PRECISION(), and HOST_BITS_PER_WIDE_INT.
|
extern |
Target-dependent machine mode initialization - in insn-modes.cc.
Referenced by do_compile().
|
extern |
Return an integer mode of exactly the same size as MODE, if one exists.
References as_a(), gcc_unreachable, GET_MODE_BITSIZE(), GET_MODE_CLASS, and int_mode_for_size().
Referenced by bitwise_mode_for_mode(), convert_extracted_bit_field(), convert_float_to_wider_int(), convert_wider_int_to_float(), emit_group_load_1(), emit_group_store(), emit_move_via_integer(), expand_builtin_issignaling(), expand_builtin_signbit(), expand_copysign_absneg(), expand_copysign_bit(), expand_debug_expr(), extract_bit_field_1(), extract_integral_bit_field(), extract_low_bits(), gen_lowpart_for_combine(), gen_lowpart_or_truncate(), get_absneg_bit_mode(), get_stored_val(), ifcvt_can_use_mask_load_store(), prepare_call_arguments(), related_int_vector_mode(), resolve_simple_move(), store_bit_field_1(), and store_integral_bit_field().
|
inline |
Return the machine mode to use for a MODE_INT of SIZE bits, if one exists. If LIMIT is nonzero, modes wider than MAX_FIXED_MODE_SIZE will not be used.
References dyn_cast(), and mode_for_size().
Referenced by alignment_for_piecewise_move(), alter_reg(), assign_parm_setup_block(), can_duplicate_and_interleave_p(), can_vec_extract(), combine_instructions(), compute_argument_addresses(), convert_mode_scalar(), copy_blkmode_from_reg(), do_jump(), emit_block_cmp_via_loop(), emit_block_move_via_loop(), emit_block_move_via_oriented_loop(), emit_library_call_value_1(), expand_builtin_atomic_clear(), expand_builtin_atomic_test_and_set(), expand_builtin_issignaling(), expand_builtin_powi(), expand_DEFERRED_INIT(), expand_expr_real_1(), expand_field_assignment(), expand_ifn_atomic_compare_exchange(), expand_mul_overflow(), expand_vector_parallel(), flip_storage_order(), fold_builtin_atomic_always_lock_free(), gen_int_shift_amount(), gen_lowpart_common(), get_builtin_sync_mode(), gimple_fold_builtin_memory_op(), strlen_pass::handle_builtin_memcmp(), init_optabs(), int_mode_for_mode(), is_widening_mult_rhs_p(), layout_type(), make_extraction(), mem_loc_descriptor(), mode_for_vector(), output_constant_pool_2(), set_builtin_user_assembler_name(), simple_move(), simplify_comparison(), simplify_shift_const_1(), simplify_context::simplify_subreg(), simplify_context::simplify_unary_operation_1(), store_one_arg(), supportable_indirect_convert_operation(), vect_lanes_optab_supported_p(), vector_type_mode(), vector_vector_composition_type(), and vectorizable_store().
References opt_mode< T >::else_void().
Return true if mode M has type T.
Referenced by is_narrower_int_mode().
Return true if mode M has type T, storing it as a T in *RESULT if so.
References T.
Return true if MODE has class MODE_COMPLEX_FLOAT, storing it as a complex_mode in *CMODE if so.
References GET_MODE_CLASS.
Return true if MODE has class MODE_COMPLEX_INT, storing it as a complex_mode in *CMODE if so.
References GET_MODE_CLASS.
Referenced by expand_function_end().
Return true if MODE has class MODE_FLOAT, storing it as a scalar_float_mode in *FLOAT_MODE if so.
References GET_MODE_CLASS.
Referenced by expand_omp_atomic(), and get_related_vectype_for_scalar_type().
Return true if MODE has class MODE_INT, storing it as a scalar_int_mode in *INT_MODE if so.
References GET_MODE_CLASS.
Referenced by add_const_value_attribute(), combine_simplify_rtx(), convert_modes(), cse_insn(), cselib_lookup_1(), do_compare_rtx_and_jump(), do_jump_1(), emit_store_flag(), emit_store_flag_1(), expand_abs_nojump(), expand_binop(), expand_DIVMOD(), expand_expr_real_1(), expand_omp_atomic(), expand_one_cmpl_abs_nojump(), expand_unop(), find_split_point(), fold_read_from_constant_string(), gen_int_libfunc(), get_call_args(), get_related_vectype_for_scalar_type(), mode_signbit_p(), new_cselib_val(), notreg_cost(), rtl_for_decl_init(), simplify_comparison(), simplify_const_unary_operation(), simplify_if_then_else(), simplify_context::simplify_relational_operation_1(), simplify_set(), simplify_shift_const_1(), store_field(), val_signbit_known_clear_p(), val_signbit_known_set_p(), val_signbit_p(), and vector_type_mode().
|
inline |
Return true if MODE is a scalar integer mode with a precision smaller than LIMIT's precision.
References GET_MODE_PRECISION(), and is_a().
Referenced by expand_fix(), expand_float(), and rotate_loc_descriptor().
|
extern |
Return a machine mode of class MCLASS with SIZE bits of precision, if one exists. The mode may have padding bits as well the SIZE value bits. If LIMIT is nonzero, disregard modes wider than MAX_FIXED_MODE_SIZE.
References FOR_EACH_MODE_IN_CLASS, GET_MODE_PRECISION(), i, int_n_data, int_n_enabled_p, known_eq, int_n_data_t::m, MAX_FIXED_MODE_SIZE, and maybe_gt.
Referenced by assemble_integer(), bitwise_mode_for_mode(), bitwise_mode_for_size(), decimal_float_mode_for_size(), default_secondary_memory_needed_mode(), extract_bit_field_1(), float_mode_for_size(), init_derived_machine_modes(), int_mode_for_size(), make_accum_type(), make_fract_type(), mode_for_size_tree(), replace_reg_with_saved_mem(), and simplify_subreg_concatn().
|
extern |
Find a mode that is suitable for representing a vector with NUNITS elements of mode INNERMODE, if one exists. The returned mode can be either an integer mode or a vector mode.
References FOR_EACH_MODE_FROM, GET_MODE_BITSIZE(), GET_MODE_CLASS, GET_MODE_INNER, GET_MODE_NUNITS(), have_regs_of_mode, int_mode_for_size(), known_eq, SCALAR_ACCUM_MODE_P, SCALAR_FLOAT_MODE_P, SCALAR_FRACT_MODE_P, SCALAR_UACCUM_MODE_P, SCALAR_UFRACT_MODE_P, and targetm.
Referenced by default_vectorize_related_mode(), get_related_vectype_for_scalar_type(), layout_type(), lto_read_tree_1(), simplify_vector_constructor(), and undistribute_bitref_for_vector().
ALWAYS_INLINE poly_uint16 mode_to_bits | ( | machine_mode | mode | ) |
Return the base GET_MODE_BITSIZE value for MODE.
References mode_to_bytes().
Referenced by GET_MODE_BITSIZE(), and GET_MODE_BITSIZE().
ALWAYS_INLINE poly_uint16 mode_to_bytes | ( | machine_mode | mode | ) |
Return the base GET_MODE_SIZE value for MODE.
References mode_size.
Referenced by GET_MODE_SIZE(), GET_MODE_SIZE(), fixed_size_mode::includes_p(), and mode_to_bits().
ALWAYS_INLINE scalar_mode mode_to_inner | ( | machine_mode | mode | ) |
Return the base GET_MODE_INNER value for MODE.
References mode_inner.
ALWAYS_INLINE poly_uint16 mode_to_nunits | ( | machine_mode | mode | ) |
Return the base GET_MODE_NUNITS value for MODE.
References mode_nunits.
Referenced by GET_MODE_NUNITS(), and GET_MODE_NUNITS().
ALWAYS_INLINE poly_uint16 mode_to_precision | ( | machine_mode | mode | ) |
Return the base GET_MODE_PRECISION value for MODE.
References mode_precision.
Referenced by GET_MODE_PRECISION(), GET_MODE_PRECISION(), and HWI_COMPUTABLE_MODE_P().
ALWAYS_INLINE unsigned short mode_to_unit_precision | ( | machine_mode | mode | ) |
Return the base GET_MODE_UNIT_PRECISION value for MODE.
References mode_unit_precision.
ALWAYS_INLINE unsigned char mode_to_unit_size | ( | machine_mode | mode | ) |
Return the base GET_MODE_UNIT_SIZE value for MODE.
References mode_unit_size.
|
extern |
If a piece of code is using vector mode VECTOR_MODE and also wants to operate on integer vectors with the same element size and number of elements, return the vector mode it should use. Return an empty opt_machine_mode if there is no supported vector mode with the required properties. Unlike mode_for_vector. any returned mode is guaranteed to satisfy both VECTOR_MODE_P and targetm.vector_mode_supported_p.
References gcc_assert, GET_MODE_INNER, GET_MODE_NUNITS(), int_mode_for_mode(), related_vector_mode(), and VECTOR_MODE_P.
Referenced by default_get_mask_mode(), expand_vec_perm_1(), expand_vec_perm_const(), get_absneg_bit_mode(), and signed_or_unsigned_type_for().
|
extern |
If a piece of code is using vector mode VECTOR_MODE and also wants to operate on elements of mode ELEMENT_MODE, return the vector mode it should use for those elements. If NUNITS is nonzero, ensure that the mode has exactly NUNITS elements, otherwise pick whichever vector size pairs the most naturally with VECTOR_MODE; this may mean choosing a mode with a different size and/or number of elements, depending on what the target prefers. Return an empty opt_machine_mode if there is no supported vector mode with the required properties. Unlike mode_for_vector. any returned mode is guaranteed to satisfy both VECTOR_MODE_P and targetm.vector_mode_supported_p.
References element_mode(), gcc_assert, targetm, and VECTOR_MODE_P.
Referenced by can_vec_extract(), can_vec_mask_load_store_p(), extract_bit_field_1(), get_len_load_store_mode(), get_related_vectype_for_scalar_type(), omp_clause_aligned_alignment(), qimode_for_vec_perm(), related_int_vector_mode(), vect_analyze_loop_1(), vect_chooses_same_modes_p(), vect_slp_region(), vector_vector_composition_type(), vectorizable_store(), and vectorized_internal_fn_supported_p().
|
inline |
Find the narrowest integer mode that contains at least SIZE bits, if such a mode exists.
References dyn_cast(), and smallest_mode_for_size().
Referenced by canonicalize_loop_ivs(), convert_mode_scalar(), copy_blkmode_to_reg(), emit_block_move_via_oriented_loop(), expand_arith_overflow(), expand_debug_expr(), expand_twoval_binop_libfunc(), find_shift_sequence(), get_best_extraction_insn(), get_gcov_type(), get_gcov_unsigned_t(), initialize_sizetypes(), layout_type(), make_extraction(), op_by_pieces_d::smallest_fixed_size_mode_for_size(), store_field(), and store_integral_bit_field().
|
extern |
Return the narrowest mode of class MCLASS that contains at least SIZE bits, if such a mode exists.
References FOR_EACH_MODE_IN_CLASS, GET_MODE_PRECISION(), i, int_n_data, int_n_enabled_p, known_ge, known_lt, and int_n_data_t::m.
Referenced by smallest_int_mode_for_size().
|
extern |
Define the integer modes whose sizes are BITS_PER_UNIT and BITS_PER_WORD and the mode whose class is Pmode and whose size is POINTER_SIZE.
Commonly used modes.
Referenced by get_traditional_extraction_insn(), init_derived_machine_modes(), and set_storage_via_setmem().
|
extern |
For each class, get the narrowest mode in that class.
Referenced by get_narrowest_mode().
|
extern |
|
extern |
This is also in tree.h. genmodes.cc guarantees the're sorted from smallest bitsize to largest bitsize.
Referenced by do_compile(), find_bitfield_repr_type(), gimple_signed_or_unsigned_type(), initialize_sizetypes(), lhd_type_for_size(), mode_for_size(), and smallest_mode_for_size().
|
extern |
Referenced by GET_MODE_2XWIDER_MODE().
|
extern |
Determine alignment, 1<=result<=BIGGEST_ALIGNMENT.
Referenced by get_mode_alignment().
|
extern |
Get the general kind of object that mode MODE represents (integer, floating, complex, etc.)
|
extern |
Get the complex mode from the component mode.
|
extern |
Get the number of fractional bits of an object of mode MODE.
|
extern |
Get the number of integral bits of an object of mode MODE.
|
extern |
Referenced by mode_to_inner().
|
extern |
Get a bitmask containing 1 for all bits in a word that fit within mode MODE.
|
extern |
Get the name of mode MODE as a string.
Referenced by pair_fusion_bb_info::track_access(), pair_fusion_bb_info::track_via_mem_expr(), and write_predicate_expr().
|
extern |
Referenced by GET_MODE_NEXT_MODE().
|
extern |
Referenced by mode_to_nunits().
|
extern |
Referenced by mode_to_precision().
|
extern |
Referenced by emit_move_multi_word(), expand_expr_real_1(), mode_to_bytes(), record_operand_costs(), and rtx_cost().
|
extern |
Referenced by mode_to_unit_precision().
|
extern |
Referenced by mode_to_unit_size().
|
extern |
Referenced by GET_MODE_WIDER_MODE().
|
extern |
Referenced by asan_emit_allocas_unpoison(), asan_emit_stack_protection(), default_addr_space_pointer_mode(), default_emit_call_builtin___clear_cache(), default_valid_pointer_mode(), emit_block_op_via_libcall(), expand_asan_emit_allocas_unpoison(), expand_atomic_compare_and_swap(), expand_atomic_fetch_op(), expand_BITINTTOFLOAT(), expand_builtin_adjust_descriptor(), expand_builtin_alloca(), expand_builtin_apply(), expand_builtin_eh_copy_values(), expand_builtin_eh_pointer(), expand_builtin_extend_pointer(), expand_builtin_frob_return_addr(), expand_builtin_init_descriptor(), expand_builtin_memory_copy_args(), expand_builtin_memset_args(), expand_builtin_next_arg(), expand_builtin_sincos(), expand_builtin_stack_address(), expand_builtin_strncpy(), expand_builtin_strub_enter(), expand_builtin_strub_leave(), expand_builtin_strub_update(), expand_DIVMODBITINT(), expand_dw2_landing_pad_for_region(), expand_expr_addr_expr(), expand_expr_real_2(), expand_FLOATTOBITINT(), expand_HWASAN_ALLOCA_UNPOISON(), expand_HWASAN_MARK(), expand_HWASAN_SET_TAG(), expand_MULBITINT(), expand_omp_atomic_mutex(), expand_omp_atomic_pipeline(), fold_builtin_memcmp(), get_memory_rtx(), get_nl_goto_field(), get_section_anchor(), gimple_fold_builtin_memory_op(), gimple_load_first_char(), strlen_pass::handle_builtin_memcmp(), hwasan_emit_prologue(), hwasan_emit_untag_frame(), init_derived_machine_modes(), maybe_emit_call_builtin___clear_cache(), maybe_emit_sync_lock_test_and_set(), mem_loc_descriptor(), nonzero_bits1(), num_sign_bit_copies1(), prepare_call_address(), process_addr_reg(), push_block(), set_stack_check_libfunc(), simplify_context::simplify_unary_operation_1(), sjlj_emit_dispatch_table(), sjlj_emit_function_enter(), stack_protect_epilogue(), try_store_by_multiple_pieces(), and verify_gimple_assign_unary().
|
extern |
Referenced by adjust_bit_field_mem_for_reg(), anti_adjust_stack_and_probe_stack_clash(), assign_parm_setup_block(), build_word_mode_vector_type(), can_assign_to_reg_without_clobbers_p(), can_decompose_p(), compute_costs(), compute_splitting_shift(), convert_mode_scalar(), copy_blkmode_from_reg(), copy_blkmode_to_reg(), create_new_invariant(), decompose_register(), default_emutls_var_fields(), default_libgcc_cmp_return_mode(), default_libgcc_shift_count_mode(), default_preferred_simd_mode(), default_unwind_word_mode(), desired_pro_or_demotion_p(), do_jump_by_parts_equality_rtx(), do_jump_by_parts_greater_rtx(), do_jump_by_parts_zero_rtx(), do_output_reload(), doloop_optimize(), tree_switch_conversion::bit_test_cluster::emit(), emit_block_cmp_via_loop(), emit_block_move_via_loop(), emit_library_call_value_1(), emit_push_insn(), emit_stack_probe(), emit_store_flag_1(), emit_store_flag_force(), emit_store_flag_int(), emutls_common_1(), equiv_constant(), expand_binop(), expand_builtin_signbit(), expand_copysign_absneg(), expand_copysign_bit(), expand_debug_expr(), expand_DIVMOD(), expand_doubleword_bswap(), expand_doubleword_clz_ctz_ffs(), expand_doubleword_mod(), expand_doubleword_mult(), expand_doubleword_parity(), expand_doubleword_popcount(), expand_doubleword_shift(), expand_doubleword_shift_condmove(), expand_expr_real_2(), expand_SET_EDOM(), expand_subword_shift(), expand_superword_shift(), expand_unop(), expand_vector_parallel(), expression_expensive_p(), extract_high_half(), extract_integral_bit_field(), extract_split_bit_field(), find_decomposable_shift_zext(), find_decomposable_subregs(), find_if_header(), find_reloads_address_1(), force_const_mem(), get_absneg_bit_mode(), get_optab_extraction_insn(), get_traditional_extraction_insn(), strlen_pass::handle_builtin_memcmp(), init_caller_save(), init_derived_machine_modes(), init_expr_target(), init_lower_subreg(), init_reg_modes_target(), load_register_parameters(), lshift_cheap_p(), make_extraction(), mem_loc_descriptor(), move_block_from_reg(), move_block_to_reg(), operand_subword(), optimize_range_tests_to_bit_test(), push_reload(), reload_cse_regs_1(), reload_cse_simplify_operands(), reload_cse_simplify_set(), replace_read(), resolve_clobber(), resolve_shift_zext(), resolve_simple_move(), setup_prohibited_mode_move_regs(), simplify_and_const_int_1(), simplify_context::simplify_binary_operation_1(), simplify_const_binary_operation(), simplify_context::simplify_subreg(), simplify_while_replacing(), store_constructor(), store_integral_bit_field(), store_split_bit_field(), store_unaligned_arguments_into_pseudos(), try_combine(), valid_multiword_target_p(), validate_subreg(), and vectorizable_operation().