On Thu, Oct 8, 2015 at 1:53 PM, Ajit Kumar Agarwal <ajit.kumar.agar...@xilinx.com> wrote: > > > -----Original Message----- > From: Bin.Cheng [mailto:amker.ch...@gmail.com] > Sent: Thursday, October 08, 2015 10:29 AM > To: Ajit Kumar Agarwal > Cc: GCC Patches; Vinod Kathail; Shail Aditya Gupta; Vidhumouli Hunsigida; > Nagaraju Mekala > Subject: Re: [RFC, Patch]: Optimized changes in the register used inside loop > for LICM and IVOPTS. > > On Thu, Oct 8, 2015 at 12:32 PM, Ajit Kumar Agarwal > <ajit.kumar.agar...@xilinx.com> wrote: >> Following Proposed: >> >> Changes are done in the Loop Invariant(LICM) at RTL level and also the >> Induction variable optimization based on SSA representation. >> The current logic used in LICM for register used inside the loops is >> changed. The Live Out of the loop latch node and the Live in of the >> destination of the exit nodes is used to set the Loops Liveness at the exit >> of the Loop. The register used is the number of live variables at the exit >> of the Loop calculated above. >> >> For Induction variable optimization on tree SSA representation, the >> register used logic is based on the number of phi nodes at the loop >> header to represent the liveness at the loop. Current Logic used only the >> number of phi nodes at the loop header. I have made changes to represent >> the phi operands also live at the loop. Thus number of phi operands also >> gets incremented in the number of registers used. > Hi, >>>For the GIMPLE IVO part, I don't think the change is reasonable enough. >>>IMHO, IVO fails to restrict iv number in some complex cases, your change >>>tries to >>rectify that by increasing register pressure irrespective to >>>out-of-ssa and coalescing. I think the original code models reg-pressure >>>better, what needs to be >>changed is how we compute cost from register >>>pressure and use that to restrict iv number. > > Considering the liveness with respect to all the phi arguments will not > increase the register pressure. It improves the heuristics for restricting > The IV that increases the register pressure. The cost model uses regs_used > and modelling the I think register pressure is increased along with regs_needed, doesn't matter if it will be canceled in estimate_reg_pressure_cost for both ends of cost comparison. Liveness with respect to the phi arguments measures > Better register pressure. I agree IV number should be controlled for some cases, but not by increasing `n' using phi argument number unconditionally. Considering summary reduction as an example, most likely the ssa names will be coalesced and held in single register. Furthermore, there is no reason to count phi node/arg number for floating point phi nodes.
> > Number of phi nodes in the loop header is not only the criteria for > regs_used, but the number of liveness with respect to loop should be > Criteria to measure appropriate register pressure. IMHO, it's hard to accurately track liveness info on SSA(PHI), because of coalescing etc. So could you give some examples/proof for this? Thanks, bin > > Thanks & Regards > Ajit