Hi Kewen, On Wed, Jun 19, 2019 at 07:47:34PM +0800, Kewen.Lin wrote: > +/* Return true if count register for branch is supported. */ > + > +static bool > +rs6000_have_count_reg_decr_p () > +{ > + return flag_branch_on_count_reg; > +}
rs6000 unconditionally supports these instructions, not just when that flag is set. If you need to look at the flag, the *caller* of this new hook should, not every implementation of the hook. So just "return true" here? > DEFHOOK > +(have_count_reg_decr_p, > + "Return true if the target supports hardware count register for decrement\n\ > +and branch.\n\ > +The default version of this hook returns false.", > + bool, (void), > + hook_bool_void_false) Is it important here that you cannot use that register as a GPR, that any use of it is expensive because it has to be moved to/from a GPR? The doc should say something like that; a little more context, what the hook is meant to be used for. > +/* For doloop use, if the algothrim selects some candidate which invalid for > + later rewrite, fix it up with bind_cand. */ "algorithm", "which is invalid". > +/* Find doloop comparison use and set its related bind_cand. We adjust the > + doloop use group cost against various IV cands, it's possible to assign > + some cost like zero rather than original inifite cost. The point is to "infinite" Looks good :-) Segher