On Mon, Sep 21, 2015 at 11:13 AM, Wei Mi <wmi at google.com> wrote:> I have the same worry as Philip and Hal that the new LoopExitValues > pass may increase some live range significantly in certain cases > because it reuses value cross outerloop iterations. Like the following > hypothetical case, the value reuse will create a live range living > across loop2, loop3, .... But we can add some simple logic to obviate > such case. >Thanks Wei. Can you please give your ideas about logic to catch abuse of live ranges?
I don't have a very good idea. What I originally thought was just to skip the case when live range cross loops. However, after a second thought, for the new live range living across loop2 loop3, because it has no reference in those loops, it will be splitted outside those loops if those loops have high reg pressures, so the key is to know whether the outer loop is hot enough and whether it has high reg pressure instead of loop2/loop3. In many cases we don't have precise information about loop hotness and loop reg pressure and have to guess. As Hal said, get the patch in first and see what benefit and regression we get, then think the next step, so that we can move forward. Thanks, Wei. On Mon, Sep 21, 2015 at 2:45 PM, Steve King <steve at metrokings.com> wrote:> On Mon, Sep 21, 2015 at 11:13 AM, Wei Mi <wmi at google.com> wrote: >> I have the same worry as Philip and Hal that the new LoopExitValues >> pass may increase some live range significantly in certain cases >> because it reuses value cross outerloop iterations. Like the following >> hypothetical case, the value reuse will create a live range living >> across loop2, loop3, .... But we can add some simple logic to obviate >> such case. >> > > Thanks Wei. Can you please give your ideas about logic to catch abuse > of live ranges?
Philip Reames via llvm-dev
2015-Sep-22 14:58 UTC
[llvm-dev] [RFC] New pass: LoopExitValues
On 09/21/2015 10:45 PM, Wei Mi via llvm-dev wrote:> I don't have a very good idea. What I originally thought was just to > skip the case when live range cross loops. However, after a second > thought, for the new live range living across loop2 loop3, because it > has no reference in those loops, it will be splitted outside those > loops if those loops have high reg pressures, so the key is to know > whether the outer loop is hot enough and whether it has high reg > pressure instead of loop2/loop3. In many cases we don't have precise > information about loop hotness and loop reg pressure and have to > guess. > > As Hal said, get the patch in first and see what benefit and > regression we get, then think the next step, so that we can move > forward.+1 to the last point here> > Thanks, > Wei. > > On Mon, Sep 21, 2015 at 2:45 PM, Steve King <steve at metrokings.com> wrote: >> On Mon, Sep 21, 2015 at 11:13 AM, Wei Mi <wmi at google.com> wrote: >>> I have the same worry as Philip and Hal that the new LoopExitValues >>> pass may increase some live range significantly in certain cases >>> because it reuses value cross outerloop iterations. Like the following >>> hypothetical case, the value reuse will create a live range living >>> across loop2, loop3, .... But we can add some simple logic to obviate >>> such case. >>> >> Thanks Wei. Can you please give your ideas about logic to catch abuse >> of live ranges? > _______________________________________________ > LLVM Developers mailing list > llvm-dev at lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev