#include "config.h"#include "system.h"#include "toplev.h"#include "rtl.h"#include "tree.h"#include "tm_p.h"#include "flags.h"#include "insn-config.h"#include "expr.h"#include "optabs.h"#include "real.h"#include "recog.h"#include "langhooks.h"

Go to the source code of this file.
Data Types | |
| type | algorithm |
Defines | |
| #define | SLOW_UNALIGNED_ACCESS(MODE, ALIGN) STRICT_ALIGNMENT |
| #define | MAX_BITS_PER_WORD BITS_PER_WORD |
| #define | HAVE_insv 0 |
| #define | CODE_FOR_insv CODE_FOR_nothing |
| #define | gen_insv(a, b, c, d) NULL_RTX |
| #define | HAVE_extv 0 |
| #define | CODE_FOR_extv CODE_FOR_nothing |
| #define | gen_extv(a, b, c, d) NULL_RTX |
| #define | HAVE_extzv 0 |
| #define | CODE_FOR_extzv CODE_FOR_nothing |
| #define | gen_extzv(a, b, c, d) NULL_RTX |
| #define | EXACT_POWER_OF_2_OR_ZERO_P(x) (((x) & ((x) - 1)) == 0) |
Enumerations | |
| enum | alg_code { alg_zero, alg_m, alg_shift, alg_add_t_m2, alg_sub_t_m2, alg_add_factor, alg_sub_factor, alg_add_t2_m, alg_sub_t2_m, alg_add, alg_subtract, alg_factor, alg_shiftop, alg_zero, alg_m, alg_shift, alg_add_t_m2, alg_sub_t_m2, alg_add_factor, alg_sub_factor, alg_add_t2_m, alg_sub_t2_m, alg_add, alg_subtract, alg_factor, alg_shiftop, alg_unknown, alg_zero, alg_m, alg_shift, alg_add_t_m2, alg_sub_t_m2, alg_add_factor, alg_sub_factor, alg_add_t2_m, alg_sub_t2_m, alg_unknown, alg_zero, alg_m, alg_shift, alg_add_t_m2, alg_sub_t_m2, alg_add_factor, alg_sub_factor, alg_add_t2_m, alg_sub_t2_m, alg_impossible } |
Functions/Subroutines | |
| static void store_fixed_bit_field | PARAMS ((rtx, unsigned HOST_WIDE_INT, unsigned HOST_WIDE_INT, unsigned HOST_WIDE_INT, rtx)) |
| static void store_split_bit_field | PARAMS ((rtx, unsigned HOST_WIDE_INT, unsigned HOST_WIDE_INT, rtx)) |
| static rtx extract_fixed_bit_field | PARAMS ((enum machine_mode, rtx, unsigned HOST_WIDE_INT, unsigned HOST_WIDE_INT, unsigned HOST_WIDE_INT, rtx, int)) |
| static rtx mask_rtx | PARAMS ((enum machine_mode, int, int, int)) |
| static rtx lshift_value | PARAMS ((enum machine_mode, rtx, int, int)) |
| static rtx extract_split_bit_field | PARAMS ((rtx, unsigned HOST_WIDE_INT, unsigned HOST_WIDE_INT, int)) |
| static void do_cmp_and_jump | PARAMS ((rtx, rtx, enum rtx_code, enum machine_mode, rtx)) |
| void | init_expmed () |
| rtx | negate_rtx (enum machine_mode mode, rtx x) |
| enum machine_mode | mode_for_extraction (enum extraction_pattern pattern, int opno) |
| rtx | store_bit_field (rtx str_rtx, unsigned HOST_WIDE_INT bitsize, unsigned HOST_WIDE_INT bitnum, enum machine_mode fieldmode, rtx value, HOST_WIDE_INT total_size) |
| static void | store_fixed_bit_field (rtx op0, unsigned HOST_WIDE_INT offset, unsigned HOST_WIDE_INT bitsize, unsigned HOST_WIDE_INT bitpos, rtx value) |
| static void | store_split_bit_field (rtx op0, unsigned HOST_WIDE_INT bitsize, unsigned HOST_WIDE_INT bitpos, rtx value) |
| rtx | extract_bit_field (rtx str_rtx, unsigned HOST_WIDE_INT bitsize, unsigned HOST_WIDE_INT bitnum, int unsignedp, rtx target, enum machine_mode mode, enum machine_mode tmode, HOST_WIDE_INT total_size) |
| static rtx | extract_fixed_bit_field (enum machine_mode tmode, rtx op0, unsigned HOST_WIDE_INT offset, unsigned HOST_WIDE_INT bitsize, unsigned HOST_WIDE_INT bitpos, rtx target, int unsignedp) |
| static rtx | mask_rtx (enum machine_mode mode, int bitpos, int bitsize, int complement) |
| static rtx | lshift_value (enum machine_mode mode, rtx value, int bitpos, int bitsize) |
| static rtx | extract_split_bit_field (rtx op0, unsigned HOST_WIDE_INT bitsize, unsigned HOST_WIDE_INT bitpos, int unsignedp) |
| void | expand_inc (rtx target, rtx inc) |
| void | expand_dec (rtx target, rtx dec) |
| rtx | expand_shift (enum tree_code code, enum machine_mode mode, rtx shifted, tree amount, rtx target, int unsignedp) |
| static void synth_mult | PARAMS ((struct algorithm *, unsigned HOST_WIDE_INT, int)) |
| static unsigned HOST_WIDE_INT choose_multiplier | PARAMS ((unsigned HOST_WIDE_INT, int, int, unsigned HOST_WIDE_INT *, int *, int *)) |
| static unsigned HOST_WIDE_INT invert_mod2n | PARAMS ((unsigned HOST_WIDE_INT, int)) |
| static void | synth_mult (struct algorithm *alg_out, unsigned HOST_WIDE_INT t, int cost_limit) |
| rtx | expand_mult (enum machine_mode mode, rtx op0, rtx op1, rtx target, int unsignedp) |
| int | ceil_log2 (unsigned HOST_WIDE_INT x) |
| static unsigned HOST_WIDE_INT | choose_multiplier (unsigned HOST_WIDE_INT d, int n, int precision, unsigned HOST_WIDE_INT *multiplier_ptr, int *post_shift_ptr, int *lgup_ptr) |
| static unsigned HOST_WIDE_INT | invert_mod2n (unsigned HOST_WIDE_INT x, int n) |
| rtx | expand_mult_highpart_adjust (enum machine_mode mode, rtx adj_operand, rtx op0, rtx op1, rtx target, int unsignedp) |
| rtx | expand_mult_highpart (enum machine_mode mode, rtx op0, unsigned HOST_WIDE_INT cnst1, rtx target, int unsignedp, int max_cost) |
| rtx | expand_divmod (int rem_flag, enum tree_code code, enum machine_mode mode, rtx op0, rtx op1, rtx target, int unsignedp) |
| tree | make_tree (tree type, rtx x) |
| bool | const_mult_add_overflow_p (rtx x, rtx mult, rtx add, enum machine_mode mode, int unsignedp) |
| rtx | expand_mult_add (rtx x, rtx target, rtx mult, rtx add, enum machine_mode mode, int unsignedp) |
| rtx | expand_and (enum machine_mode mode, rtx op0, rtx op1, rtx target) |
| rtx | emit_store_flag (rtx target, enum rtx_code code, rtx op0, rtx op1, enum machine_mode mode, int unsignedp, int normalizep) |
| rtx | emit_store_flag_force (rtx target, enum rtx_code code, rtx op0, rtx op1, enum machine_mode mode, int unsignedp, int normalizep) |
| static void | do_cmp_and_jump (rtx arg1, rtx arg2, enum rtx_code op, enum machine_mode mode, rtx label) |
Variables | |
| static int | sdiv_pow2_cheap |
| static int | smod_pow2_cheap |
| static int | add_cost |
| static int | negate_cost |
| static int | zero_cost |
| static int | shift_cost [MAX_BITS_PER_WORD] |
| static int | shiftadd_cost [MAX_BITS_PER_WORD] |
| static int | shiftsub_cost [MAX_BITS_PER_WORD] |
| static int | mul_cost [NUM_MACHINE_MODES] |
| static int | div_cost [NUM_MACHINE_MODES] |
| static int | mul_widen_cost [NUM_MACHINE_MODES] |
| static int | mul_highpart_cost [NUM_MACHINE_MODES] |
| #define CODE_FOR_extv CODE_FOR_nothing |
Definition at line 88 of file expmed.c.
Referenced by extract_bit_field(), and mode_for_extraction().
| #define CODE_FOR_extzv CODE_FOR_nothing |
Definition at line 93 of file expmed.c.
Referenced by extract_bit_field(), and mode_for_extraction().
| #define CODE_FOR_insv CODE_FOR_nothing |
| #define EXACT_POWER_OF_2_OR_ZERO_P | ( | x | ) | (((x) & ((x) - 1)) == 0) |
Definition at line 84 of file expmed.c.
Referenced by emit_move_sequence(), gen_insv(), and store_bit_field().
| #define HAVE_extv 0 |
Definition at line 87 of file expmed.c.
Referenced by extract_bit_field(), and mode_for_extraction().
| #define HAVE_extzv 0 |
Definition at line 92 of file expmed.c.
Referenced by extract_bit_field(), and mode_for_extraction().
| #define HAVE_insv 0 |
| #define SLOW_UNALIGNED_ACCESS | ( | MODE, | |||
| ALIGN | ) | STRICT_ALIGNMENT |
| enum alg_code |
| int ceil_log2 | ( | unsigned HOST_WIDE_INT | x | ) |
Definition at line 2579 of file expmed.c.
Referenced by choose_multiplier(), ideal_phi_node_len(), and tree_ssa_dominator_optimize().
| static unsigned HOST_WIDE_INT choose_multiplier | ( | unsigned HOST_WIDE_INT | d, | |
| int | n, | |||
| int | precision, | |||
| unsigned HOST_WIDE_INT * | multiplier_ptr, | |||
| int * | post_shift_ptr, | |||
| int * | lgup_ptr | |||
| ) | [static] |
Definition at line 2603 of file expmed.c.
References abort, ceil_log2(), div_and_round_double(), HOST_BITS_PER_WIDE_INT, HOST_WIDE_INT, nl, and pow().
Referenced by expand_divmod().
| bool const_mult_add_overflow_p | ( | rtx | x, | |
| rtx | mult, | |||
| rtx | add, | |||
| enum machine_mode | mode, | |||
| int | unsignedp | |||
| ) |
| static void do_cmp_and_jump | ( | rtx | arg1, | |
| rtx | arg2, | |||
| enum rtx_code | op, | |||
| enum machine_mode | mode, | |||
| rtx | label | |||
| ) | [static] |
Definition at line 4758 of file expmed.c.
References abort, can_compare_p(), ccp_jump, const0_rtx, do_jump_by_parts_equality_rtx(), do_jump_by_parts_greater_rtx(), emit_cmp_and_jump_insns(), emit_label(), EQ, GE, gen_label_rtx(), GET_MODE, GET_MODE_CLASS, GT, LT, MODE_INT, NE, and NULL_RTX.
Referenced by expand_divmod(), expand_sdiv_pow2(), and expand_smod_pow2().
| rtx emit_store_flag | ( | rtx | target, | |
| enum rtx_code | code, | |||
| rtx | op0, | |||
| rtx | op1, | |||
| enum machine_mode | mode, | |||
| int | unsignedp, | |||
| int | normalizep | |||
| ) |
Definition at line 4273 of file expmed.c.
Referenced by do_store_flag(), emit_store_flag(), emit_store_flag_force(), expand_divmod(), expand_sdiv_pow2(), expand_smod_pow2(), ix86_expand_int_movcc(), noce_emit_store_flag(), and noce_try_sign_mask().
| rtx emit_store_flag_force | ( | rtx | target, | |
| enum rtx_code | code, | |||
| rtx | op0, | |||
| rtx | op1, | |||
| enum machine_mode | mode, | |||
| int | unsignedp, | |||
| int | normalizep | |||
| ) |
Definition at line 4713 of file expmed.c.
Referenced by expand_binop(), and ia64_expand_compare_and_swap().
| rtx expand_and | ( | enum machine_mode | mode, | |
| rtx | op0, | |||
| rtx | op1, | |||
| rtx | target | |||
| ) |
Definition at line 4239 of file expmed.c.
Referenced by alpha_initialize_trampoline(), do_store_flag(), emit_store_flag(), expand_builtin_extract_return_addr(), expand_expr(), expand_expr_real_1(), expand_mult_highpart_adjust(), optimize_bitfield_assignment_op(), reduce_to_bit_field_precision(), sparc_initialize_trampoline(), and store_field().
| rtx expand_divmod | ( | int | rem_flag, | |
| enum tree_code | code, | |||
| enum machine_mode | mode, | |||
| rtx | op0, | |||
| rtx | op1, | |||
| rtx | target, | |||
| int | unsignedp | |||
| ) |
Definition at line 2951 of file expmed.c.
Referenced by allocate_dynamic_stack_space(), expand_binop(), expand_cmplxdiv_straight(), expand_cmplxdiv_wide(), expand_divmod(), expand_expr(), expand_expr_real_1(), expand_vector_binop(), force_operand(), and round_push().
Definition at line 1876 of file expmed.c.
Referenced by check_dbra_loop(), emit_move_sequence(), expand_divmod(), and expand_sdiv_pow2().
| rtx expand_mult | ( | enum machine_mode | mode, | |
| rtx | op0, | |||
| rtx | op1, | |||
| rtx | target, | |||
| int | unsignedp | |||
| ) |
Definition at line 2347 of file expmed.c.
Referenced by allocate_dynamic_stack_space(), builtin_memset_gen_str(), expand_complex_abs(), expand_divmod(), expand_expr(), expand_expr_real_1(), expand_mult_highpart(), expand_powi_1(), extract_force_align_mem_bit_field(), force_operand(), multiply_by_cost(), product_cheap_p(), and round_push().
Definition at line 4215 of file expmed.c.
Referenced by gen_add_mult(), iv_add_mult_cost(), and maybe_eliminate_biv_1().
| rtx expand_mult_highpart | ( | enum machine_mode | mode, | |
| rtx | op0, | |||
| unsigned HOST_WIDE_INT | cnst1, | |||
| rtx | target, | |||
| int | unsignedp, | |||
| int | max_cost | |||
| ) |
Definition at line 2774 of file expmed.c.
References abort, BITS_PER_WORD, build_int_2, CODE_FOR_nothing, convert_modes(), convert_to_mode(), expand_binop(), expand_mult(), expand_mult_highpart_adjust(), expand_shift(), force_reg(), gen_highpart(), gen_int_mode(), gen_reg_rtx(), GET_MODE_BITSIZE, GET_MODE_WIDER_MODE, HOST_BITS_PER_WIDE_INT, HOST_WIDE_INT, immed_double_const(), NULL_RTX, optab, OPTAB_DIRECT, OPTAB_WIDEN, size, smul_highpart_optab, smul_optab, smul_widen_optab, umul_highpart_optab, umul_widen_optab, and word_mode.
Referenced by expand_divmod().
| rtx expand_mult_highpart_adjust | ( | enum machine_mode | mode, | |
| rtx | adj_operand, | |||
| rtx | op0, | |||
| rtx | op1, | |||
| rtx | target, | |||
| int | unsignedp | |||
| ) |
Definition at line 2737 of file expmed.c.
Referenced by expand_expr(), expand_expr_real_1(), expand_mult_highpart(), and expand_mult_highpart_optab().
| rtx expand_shift | ( | enum tree_code | code, | |
| enum machine_mode | mode, | |||
| rtx | shifted, | |||
| tree | amount, | |||
| rtx | target, | |||
| int | unsignedp | |||
| ) |
Definition at line 1907 of file expmed.c.
Referenced by alpha_initialize_trampoline(), assign_parm_setup_block(), convert_move(), do_store_flag(), emit_group_load_1(), emit_group_store(), emit_store_flag(), expand_abs(), expand_abs_nojump(), expand_builtin_signbit(), expand_divmod(), expand_expr(), expand_expr_real_1(), expand_float(), expand_mult(), expand_mult_const(), expand_mult_highpart(), expand_mult_highpart_adjust(), expand_sdiv_pow2(), expand_shift(), extract_bit_field(), extract_fixed_bit_field(), extract_high_half(), extract_split_bit_field(), load_register_parameters(), move_block_from_reg(), optimize_bitfield_assignment_op(), reduce_to_bit_field_precision(), romp_initialize_trampoline(), sparc_initialize_trampoline(), store_field(), and store_fixed_bit_field().
| rtx extract_bit_field | ( | rtx | str_rtx, | |
| unsigned HOST_WIDE_INT | bitsize, | |||
| unsigned HOST_WIDE_INT | bitnum, | |||
| int | unsignedp, | |||
| rtx | target, | |||
| enum machine_mode | mode, | |||
| enum machine_mode | tmode, | |||
| HOST_WIDE_INT | total_size | |||
| ) |
Definition at line 1014 of file expmed.c.
References abort, adjust_address, BIGGEST_ALIGNMENT, bitpos(), BITS_BIG_ENDIAN, BITS_PER_UNIT, BITS_PER_WORD, build_int_2, byte_mode, BYTES_BIG_ENDIAN, CODE_FOR_extv, CODE_FOR_extzv, const0_rtx, convert_to_mode(), copy_to_reg(), delete_insns_since(), emit_insn(), emit_move_insn(), EP_extv, EP_extzv, expand_shift(), extract_fixed_bit_field(), flag_force_mem, force_reg(), gen_extv, gen_extzv, GEN_INT, gen_lowpart, gen_reg_rtx(), gen_rtx_CLOBBER, gen_rtx_SUBREG(), get_best_mode(), GET_CODE, get_last_insn(), GET_MODE, GET_MODE_BITSIZE, GET_MODE_CLASS, GET_MODE_SIZE, HAVE_extv, HAVE_extzv, HOST_WIDE_INT, i, int, int_mode_for_mode(), last, MAX, MEM, MEM_ALIGN, MEM_VOLATILE_P, MIN, mode_for_extraction(), mode_for_size(), MODE_INT, MODE_PARTIAL_INT, NULL_RTX, offset, operand_subword(), protect_from_queue(), REG, set_mem_alias_set(), set_mem_expr(), shallow_copy_rtx, SLOW_UNALIGNED_ACCESS, SUBREG_BYTE, SUBREG_REG, TRULY_NOOP_TRUNCATION, UNITS_PER_WORD, VECTOR_MODE_P, volatile_ok, word_mode, and WORDS_BIG_ENDIAN.
Referenced by copy_blkmode_from_reg(), emit_group_load(), emit_group_load_1(), expand_builtin_signbit(), expand_expr(), expand_expr_real_1(), expand_return(), expand_vector_binop(), expand_vector_unop(), extract_bit_field(), purge_addressof_1(), read_complex_part(), store_field(), and store_unaligned_arguments_into_pseudos().
| static rtx extract_fixed_bit_field | ( | enum machine_mode | tmode, | |
| rtx | op0, | |||
| unsigned HOST_WIDE_INT | offset, | |||
| unsigned HOST_WIDE_INT | bitsize, | |||
| unsigned HOST_WIDE_INT | bitpos, | |||
| rtx | target, | |||
| int | unsignedp | |||
| ) | [static] |
Definition at line 1570 of file expmed.c.
References adjust_address, and_optab, BITS_PER_UNIT, BITS_PER_WORD, build_int_2, BYTES_BIG_ENDIAN, convert_to_mode(), expand_binop(), expand_shift(), extract_split_bit_field(), force_reg(), get_best_mode(), GET_CLASS_NARROWEST_MODE, GET_CODE, GET_MODE, GET_MODE_BITSIZE, GET_MODE_WIDER_MODE, mask_rtx(), MEM_ALIGN, MEM_VOLATILE_P, mode, MODE_INT, OPTAB_LIB_WIDEN, REG, REG_FUNCTION_VALUE_P, and word_mode.
Referenced by extract_bit_field(), extract_split_bit_field(), and store_split_bit_field().
| static rtx extract_split_bit_field | ( | rtx | op0, | |
| unsigned HOST_WIDE_INT | bitsize, | |||
| unsigned HOST_WIDE_INT | bitpos, | |||
| int | unsignedp | |||
| ) | [static] |
Definition at line 1774 of file expmed.c.
References BITS_PER_UNIT, BITS_PER_WORD, build_int_2, BYTES_BIG_ENDIAN, expand_binop(), expand_shift(), extract_fixed_bit_field(), first, GET_CODE, GET_MODE, HOST_WIDE_INT, ior_optab, MEM_ALIGN, MIN, NULL_RTX, offset, operand_subword_force(), OPTAB_LIB_WIDEN, REG, result, SUBREG_BYTE, SUBREG_REG, UNITS_PER_WORD, and word_mode.
Referenced by extract_fixed_bit_field().
| static unsigned HOST_WIDE_INT invert_mod2n | ( | unsigned HOST_WIDE_INT | x, | |
| int | n | |||
| ) | [static] |
Definition at line 2700 of file expmed.c.
References HOST_BITS_PER_WIDE_INT, HOST_WIDE_INT, and is::y.
Referenced by expand_divmod().
| static rtx lshift_value | ( | enum machine_mode | mode, | |
| rtx | value, | |||
| int | bitpos, | |||
| int | bitsize | |||
| ) | [static] |
Definition at line 1741 of file expmed.c.
References high, HOST_BITS_PER_WIDE_INT, HOST_WIDE_INT, immed_double_const(), INTVAL, and low.
Referenced by store_fixed_bit_field().
Definition at line 4043 of file expmed.c.
Referenced by alpha_va_start(), assign_parm_setup_reg(), assign_parms(), clear_storage_via_libcall(), clipper_va_start(), const_mult_add_overflow_p(), d30v_expand_builtin_va_start(), emit_block_move_via_libcall(), emit_library_call_value_1(), expand_asm_operands(), expand_call(), expand_expr(), expand_mult_add(), expand_shift(), force_const_mem(), frv_expand_builtin_va_start(), i860_va_arg(), i860_va_start(), i960_va_start(), initialize_argument_information(), ix86_va_start(), m68hc11_expand_builtin_va_start(), m88k_va_start(), make_tree(), mips_va_start(), rs6000_va_start(), s390_va_start(), sh_va_arg(), sh_va_start(), std_expand_builtin_va_start(), store_constructor(), store_expr(), xstormy16_expand_builtin_va_start(), xtensa_va_arg(), and xtensa_va_start().
| static rtx mask_rtx | ( | enum machine_mode | mode, | |
| int | bitpos, | |||
| int | bitsize, | |||
| int | complement | |||
| ) | [static] |
Definition at line 1702 of file expmed.c.
References HOST_BITS_PER_WIDE_INT, HOST_WIDE_INT, and immed_double_const().
Referenced by extract_fixed_bit_field(), shl_and_length(), simplify_shift_const(), simplify_shift_const_1(), and store_fixed_bit_field().
| enum machine_mode mode_for_extraction | ( | enum extraction_pattern | pattern, | |
| int | opno | |||
| ) |
Definition at line 229 of file expmed.c.
Referenced by extract_bit_field(), fixup_var_refs_1(), make_extraction(), simplify_comparison(), store_bit_field(), and validate_replace_rtx_1().
| rtx negate_rtx | ( | enum machine_mode | mode, | |
| rtx | x | |||
| ) |
Definition at line 212 of file expmed.c.
Referenced by expand_binop(), expand_builtin_apply(), expand_expr(), expand_expr_real_1(), force_operand(), legitimize_operands(), and push_block().
| static unsigned HOST_WIDE_INT invert_mod2n PARAMS | ( | (unsigned HOST_WIDE_INT, int) | ) | [static] |
| static unsigned HOST_WIDE_INT choose_multiplier PARAMS | ( | (unsigned HOST_WIDE_INT, int, int, unsigned HOST_WIDE_INT *, int *, int *) | ) | [static] |
| static rtx extract_split_bit_field PARAMS | ( | (rtx, unsigned HOST_WIDE_INT, unsigned HOST_WIDE_INT, int) | ) | [static] |
| static rtx lshift_value PARAMS | ( | (enum machine_mode, rtx, int, int) | ) | [static] |
| static rtx mask_rtx PARAMS | ( | (enum machine_mode, int, int, int) | ) | [static] |
| static rtx extract_fixed_bit_field PARAMS | ( | (enum machine_mode, rtx, unsigned HOST_WIDE_INT, unsigned HOST_WIDE_INT, unsigned HOST_WIDE_INT, rtx, int) | ) | [static] |
| static void store_split_bit_field PARAMS | ( | (rtx, unsigned HOST_WIDE_INT, unsigned HOST_WIDE_INT, rtx) | ) | [static] |
| static void store_fixed_bit_field PARAMS | ( | (rtx, unsigned HOST_WIDE_INT, unsigned HOST_WIDE_INT, unsigned HOST_WIDE_INT, rtx) | ) | [static] |
| rtx store_bit_field | ( | rtx | str_rtx, | |
| unsigned HOST_WIDE_INT | bitsize, | |||
| unsigned HOST_WIDE_INT | bitnum, | |||
| enum machine_mode | fieldmode, | |||
| rtx | value, | |||
| HOST_WIDE_INT | total_size | |||
| ) |
Definition at line 292 of file expmed.c.
References abort, adjust_address, BIGGEST_ALIGNMENT, bitpos(), BITS_BIG_ENDIAN, BITS_PER_UNIT, BITS_PER_WORD, byte_mode, BYTES_BIG_ENDIAN, CODE_FOR_insv, CODE_FOR_nothing, CONST, CONSTANT_P, convert_to_mode(), copy_to_mode_reg(), copy_to_reg(), delete_insns_since(), emit_insn(), emit_move_insn(), EP_insv, flag_force_mem, force_not_mem(), force_reg(), GEN_FCN, gen_insv, GEN_INT, gen_int_mode(), gen_lowpart, gen_rtx_SUBREG(), generating_concat_p, get_best_mode(), GET_CODE, get_last_insn(), GET_MODE, GET_MODE_BITSIZE, GET_MODE_CLASS, GET_MODE_SIZE, HAVE_insv, HOST_WIDE_INT, i, int, int_mode_for_mode(), INTVAL, last, MAX, MEM, MEM_ALIGN, MEM_VOLATILE_P, MIN, mode_for_extraction(), mode_for_size(), MODE_INT, MODE_PARTIAL_INT, movstrict_optab, offset, operand_subword_force(), protect_from_queue(), REG, set_mem_alias_set(), set_mem_expr(), shallow_copy_rtx, simplify_gen_subreg(), simplify_subreg(), SLOW_UNALIGNED_ACCESS, smallest_mode_for_size(), store_fixed_bit_field(), SUBREG_BYTE, SUBREG_REG, tmp, UNITS_PER_WORD, volatile_ok, word_mode, and WORDS_BIG_ENDIAN.
Referenced by copy_blkmode_from_reg(), emit_group_store(), expand_return(), expand_vector_binop(), expand_vector_unop(), noce_emit_move_insn(), purge_addressof_1(), s390_expand_atomic(), s390_expand_cs_hqi(), store_bit_field(), store_field(), store_unaligned_arguments_into_pseudos(), and write_complex_part().
| static void store_fixed_bit_field | ( | rtx | op0, | |
| unsigned HOST_WIDE_INT | offset, | |||
| unsigned HOST_WIDE_INT | bitsize, | |||
| unsigned HOST_WIDE_INT | bitpos, | |||
| rtx | value | |||
| ) | [static] |
Definition at line 707 of file expmed.c.
References abort, adjust_address, and_optab, BITS_PER_UNIT, BITS_PER_WORD, build_int_2, BYTES_BIG_ENDIAN, convert_to_mode(), emit_move_insn(), expand_binop(), expand_shift(), flag_force_mem, gen_lowpart, get_best_mode(), GET_CODE, GET_MODE, GET_MODE_BITSIZE, GET_MODE_SIZE, HOST_BITS_PER_WIDE_INT, HOST_WIDE_INT, INTVAL, ior_optab, lshift_value(), mask_rtx(), MEM_ALIGN, MEM_VOLATILE_P, mode, NULL_RTX, OPTAB_LIB_WIDEN, REG, store_split_bit_field(), and word_mode.
Referenced by store_bit_field(), and store_split_bit_field().
| static void store_split_bit_field | ( | rtx | op0, | |
| unsigned HOST_WIDE_INT | bitsize, | |||
| unsigned HOST_WIDE_INT | bitpos, | |||
| rtx | value | |||
| ) | [static] |
Definition at line 873 of file expmed.c.
References ADDRESSOF, BITS_PER_UNIT, BITS_PER_WORD, BYTES_BIG_ENDIAN, CONSTANT_P, copy_to_reg(), extract_fixed_bit_field(), force_reg(), GEN_INT, gen_lowpart_common(), GET_CODE, GET_MODE, GET_MODE_BITSIZE, HOST_WIDE_INT, INTVAL, MEM, MEM_ALIGN, MIN, NULL_RTX, offset, operand_subword_force(), REG, store_fixed_bit_field(), SUBREG_BYTE, SUBREG_REG, UNITS_PER_WORD, and word_mode.
Referenced by store_fixed_bit_field().
| static void synth_mult | ( | struct algorithm * | alg_out, | |
| unsigned HOST_WIDE_INT | t, | |||
| int | cost_limit | |||
| ) | [static] |
Definition at line 2100 of file expmed.c.
References alg_add_factor, alg_add_t2_m, alg_add_t_m2, alg_m, alg_shift, alg_sub_factor, alg_sub_t2_m, alg_sub_t_m2, alg_zero, alloca, BITS_PER_WORD, algorithm::cost, d, exact_log2, floor_log2, HOST_WIDE_INT, algorithm::log, MAX_BITS_PER_WORD, memcpy, MIN, algorithm::op, algorithm::ops, q, and x.
Referenced by choose_mult_variant(), expand_mult(), and synth_mult().
int add_cost [static] |
Definition at line 99 of file expmed.c.
Referenced by arm_rtx_costs(), choose_mult_variant(), determine_iv_cost(), difference_cost(), expand_divmod(), expand_mult_highpart(), expand_mult_highpart_optab(), expand_shift(), force_expr_to_var_cost(), force_var_cost(), get_address_cost(), get_computation_cost_at(), init_expmed(), loop_giv_reduce_benefit(), ptr_difference_cost(), and synth_mult().
int div_cost[NUM_MACHINE_MODES] [static] |
int mul_cost[NUM_MACHINE_MODES] [static] |
Definition at line 103 of file expmed.c.
Referenced by expand_divmod(), expand_mult_highpart_optab(), and init_expmed().
int mul_highpart_cost[NUM_MACHINE_MODES] [static] |
Definition at line 106 of file expmed.c.
Referenced by expand_mult_highpart_optab(), and init_expmed().
int mul_widen_cost[NUM_MACHINE_MODES] [static] |
Definition at line 105 of file expmed.c.
Referenced by expand_mult_highpart_optab(), and init_expmed().
int negate_cost [static] |
int sdiv_pow2_cheap [static] |
int shift_cost[MAX_BITS_PER_WORD] [static] |
Definition at line 100 of file expmed.c.
Referenced by expand_divmod(), expand_mult_highpart(), expand_mult_highpart_optab(), expand_sdiv_pow2(), expand_shift(), init_expmed(), and synth_mult().
int shiftadd_cost[MAX_BITS_PER_WORD] [static] |
int shiftsub_cost[MAX_BITS_PER_WORD] [static] |
int smod_pow2_cheap [static] |
int zero_cost [static] |
1.5.6