GCC Middle and Back End API Reference
|
#include <pair-fusion.h>
Public Member Functions | |
pair_fusion () | |
virtual bool | fpsimd_op_p (rtx, machine_mode, bool) |
virtual bool | pair_operand_mode_ok_p (machine_mode mode)=0 |
virtual bool | pair_reg_operand_ok_p (bool load_p, rtx reg_op, machine_mode mode)=0 |
virtual int | pair_mem_alias_check_limit ()=0 |
virtual bool | should_handle_writeback (writeback_type which)=0 |
virtual bool | pair_mem_ok_with_policy (rtx base_mem, bool load_p)=0 |
virtual rtx | gen_pair (rtx *pats, rtx writeback, bool load_p)=0 |
virtual bool | pair_mem_insn_p (rtx_insn *insn, bool &load_p)=0 |
virtual bool | track_loads_p () |
virtual bool | track_stores_p () |
virtual bool | pair_mem_in_range_p (HOST_WIDE_INT offset)=0 |
virtual rtx | destructure_pair (rtx regs[2], rtx pattern, bool load_p)=0 |
virtual rtx | gen_promote_writeback_pair (rtx wb_effect, rtx mem, rtx regs[2], bool load_p)=0 |
void | process_block (rtl_ssa::bb_info *bb) |
rtl_ssa::insn_info * | find_trailing_add (rtl_ssa::insn_info *insns[2], const rtl_ssa::insn_range_info &pair_range, int initial_writeback, rtx *writeback_effect, rtl_ssa::def_info **add_def, rtl_ssa::def_info *base_def, poly_int64 initial_offset, unsigned access_size) |
int | get_viable_bases (rtl_ssa::insn_info *insns[2], vec< base_cand > &base_cands, rtx cand_mems[2], unsigned access_size, bool reversed) |
void | do_alias_analysis (rtl_ssa::insn_info *alias_hazards[4], alias_walker *walkers[4], bool load_p) |
void | try_promote_writeback (rtl_ssa::insn_info *insn, bool load_p) |
void | run () |
~pair_fusion () | |
pair_fusion::pair_fusion | ( | ) |
References calculate_dominance_info(), CDI_DOMINATORS, cfun, crtl, and df_analyze().
pair_fusion::~pair_fusion | ( | ) |
References CDI_DOMINATORS, cleanup_cfg(), crtl, and free_dominance_info().
Referenced by try_promote_writeback().
void pair_fusion::do_alias_analysis | ( | rtl_ssa::insn_info * | alias_hazards[4], |
alias_walker * | walkers[4], | ||
bool | load_p ) |
References alias_walker::advance(), i, alias_walker::insn(), and pair_mem_alias_check_limit().
Referenced by pair_fusion_bb_info::try_fuse_pair().
insn_info * pair_fusion::find_trailing_add | ( | rtl_ssa::insn_info * | insns[2], |
const rtl_ssa::insn_range_info & | pair_range, | ||
int | initial_writeback, | ||
rtx * | writeback_effect, | ||
rtl_ssa::def_info ** | add_def, | ||
rtl_ssa::def_info * | base_def, | ||
poly_int64 | initial_offset, | ||
unsigned | access_size ) |
References copy_rtx(), dump_file, gcc_assert, GET_CODE, i, INSN_P, insns, known_eq, latest_hazard_before(), offset, pair_mem_in_range_p(), PATTERN(), REG_P, REGNO, RTX_FRAME_RELATED_P, SET, strip_offset(), and XEXP.
Referenced by pair_fusion_bb_info::fuse_pair(), and try_promote_writeback().
Referenced by pair_fusion_bb_info::track_access().
Referenced by pair_fusion_bb_info::fuse_pair().
|
pure virtual |
Referenced by try_promote_writeback().
int pair_fusion::get_viable_bases | ( | rtl_ssa::insn_info * | insns[2], |
vec< base_cand > & | base_cands, | ||
rtx | cand_mems[2], | ||
unsigned | access_size, | ||
bool | reversed ) |
References dump_file, gcc_assert, GET_CODE, GET_RTX_CLASS, i, insns, poly_int< N, C >::is_constant(), pair_mem_in_range_p(), pair_mem_strip_offset(), REG_P, REGNO, reload_completed, RTX_AUTOINC, poly_int< N, C >::to_constant(), and XEXP.
Referenced by pair_fusion_bb_info::try_fuse_pair().
|
pure virtual |
Referenced by do_alias_analysis().
|
pure virtual |
Referenced by find_trailing_add(), and get_viable_bases().
Referenced by process_block().
Referenced by pair_fusion_bb_info::fuse_pair().
|
pure virtual |
Referenced by pair_fusion_bb_info::track_access().
|
pure virtual |
Referenced by pair_fusion_bb_info::track_access().
void pair_fusion::process_block | ( | rtl_ssa::bb_info * | bb | ) |
References ALL, pair_fusion_bb_info::cleanup_tombstones(), GET_CODE, INSN_P, MEM_P, pair_mem_insn_p(), PATTERN(), reload_completed, SET, should_handle_writeback(), pair_fusion_bb_info::track_access(), track_loads_p(), track_stores_p(), pair_fusion_bb_info::transform(), try_promote_writeback(), and XEXP.
Referenced by run().
void pair_fusion::run | ( | ) |
References crtl, process_block(), track_loads_p(), and track_stores_p().
|
pure virtual |
Referenced by pair_fusion_bb_info::fuse_pair(), process_block(), and pair_fusion_bb_info::track_access().
|
inlinevirtual |
Referenced by process_block(), and run().
|
inlinevirtual |
Referenced by process_block(), and run().
void pair_fusion::try_promote_writeback | ( | rtl_ssa::insn_info * | insn, |
bool | load_p ) |
References cancel_changes(), changes, confirm_change_group(), crtl, destructure_pair(), dump_file, find_trailing_add(), fixup_debug_uses_trailing_add(), gcc_assert, gcc_checking_assert, gen_promote_writeback_pair(), GET_MODE, GET_MODE_SIZE(), i, insns, MAY_HAVE_DEBUG_INSNS, MEM_P, NULL_RTX, offset, PATTERN(), REG_P, REGNO, strip_offset(), poly_int< N, C >::to_constant(), validate_unshare_change(), and XEXP.
Referenced by process_block().