on 2019/9/12 下午4:14, Richard Biener wrote: > On Wed, 11 Sep 2019, Kewen.Lin wrote: > >> Hi, >> >> Sorry for the late update. I've updated the words of target hooks part. >> >> Could someone help to review it? Thanks in advance! >> >> By the way, as previous emails in this thread, Bin has approved the IVOPTs >> part, while Segher has approved the rs6000 part. > > The target hooks part is OK. I guess we'll have to extend it eventually > in case other targets want to make use of it. >
Thanks Richard! Committed by r275713. Yes, it's enough when doloop IV costs zero or infinite for generic/address use, but if one target wants some other values, we may have to take it as one common cost shared for all generic/address uses. It's like IV candidate cost but not the same since it's only needed when doloop IV is used for generic/address uses, I guess it requires some changes in candidate set cost calculation. I chose to keep it simple at the first place, but radar on for any other target adoptions. Thanks, Kewen > Thanks, > Richard. > >> >> Thanks, >> Kewen >> >> ----- >> >> gcc/ChangeLog >> >> 2019-09-11 Kewen Lin <li...@gcc.gnu.org> >> >> PR middle-end/80791 >> * config/rs6000/rs6000.c (TARGET_HAVE_COUNT_REG_DECR_P): New macro. >> (TARGET_DOLOOP_COST_FOR_GENERIC): Likewise. >> (TARGET_DOLOOP_COST_FOR_ADDRESS): Likewise. >> * target.def (have_count_reg_decr_p): New hook. >> (doloop_cost_for_generic): Likewise. >> (doloop_cost_for_address): Likewise. >> * doc/tm.texi.in (TARGET_HAVE_COUNT_REG_DECR_P): Likewise. >> (TARGET_DOLOOP_COST_FOR_GENERIC): Likewise. >> (TARGET_DOLOOP_COST_FOR_ADDRESS): Likewise. >> * doc/tm.texi: Regenerate. >> * tree-ssa-loop-ivopts.c (comp_cost::operator+=): Consider infinite cost >> addend. >> (record_group): Init doloop_p. >> (add_candidate_1): Add optional argument doloop, change the handlings >> accordingly. >> (add_candidate): Likewise. >> (generic_predict_doloop_p): Update attribute. >> (force_expr_to_var_cost): Add costing for expressions COND_EXPR/LT_EXPR/ >> LE_EXPR/GT_EXPR/GE_EXPR/EQ_EXPR/NE_EXPR/UNORDERED_EXPR/ORDERED_EXPR/ >> UNLT_EXPR/UNLE_EXPR/UNGT_EXPR/UNGE_EXPR/UNEQ_EXPR/LTGT_EXPR/MAX_EXPR/ >> MIN_EXPR. >> (get_computation_cost): Update for doloop IV cand extra cost. >> (determine_group_iv_cost_cond): Update for doloop IV cand. >> (determine_iv_cost): Likewise. >> (ivopts_estimate_reg_pressure): Likewise. >> (may_eliminate_iv): Update handlings for doloop IV cand. >> (add_iv_candidate_for_doloop): New function. >> (find_iv_candidates): Call function add_iv_candidate_for_doloop. >> (iv_ca_set_no_cp): Update for doloop IV cand. >> (iv_ca_set_cp): Likewise. >> (iv_ca_dump): Dump register cost. >> (find_doloop_use): New function. >> (analyze_and_mark_doloop_use): Likewise. >> (tree_ssa_iv_optimize_loop): Call function analyze_and_mark_doloop_use. >> >> gcc/testsuite/ChangeLog >> >> 2019-09-11 Kewen Lin <li...@gcc.gnu.org> >> >> PR middle-end/80791 >> * gcc.dg/tree-ssa/ivopts-3.c: Adjust for doloop change. >> * gcc.dg/tree-ssa/ivopts-lt.c: Likewise. >> * gcc.dg/tree-ssa/pr32044.c: Likewise. >> >> >> on 2019/8/23 下午6:18, Segher Boessenkool wrote: >>> Hi! >>> >>> On Fri, Aug 23, 2019 at 05:43:32PM +0800, Bin.Cheng wrote: >>>> On Fri, Aug 23, 2019 at 4:27 PM Kewen.Lin <li...@linux.ibm.com> wrote: >>>> Not sure if non-ivopts parts are already approved? If so, the patch >>>> is okay with above issues addressed. >>> >>> The rs6000 part is fine. The target.def entries need some spell check >>> and copy-editing, but are obvious and trivial otherwise, and/or you can >>> approve it as ivopts maintainer. >>> >>>> Thanks very much for your time! >>> >>> And thank you as well Bin :-) >>> >>> >>> Segher >>> >> >