[PATCH][LoopStrengthReduce] Don't trim a formula that uses a subset of required registers
Adam Nemet
anemet at apple.com
Fri Apr 25 14:10:48 PDT 2014
On Apr 25, 2014, at 1:39 PM, Andrew Trick <atrick at apple.com> wrote:
>
> On Apr 18, 2014, at 1:13 PM, Adam Nemet <anemet at apple.com> wrote:
>
>> Ping
>>
>> On Apr 10, 2014, at 9:12 PM, Adam Nemet <anemet at apple.com> wrote:
>>
>>> Consider this use from the new testcase:
>>>
>>> LSR Use: Kind=ICmpZero, Offsets={0}, widest fixup type: i32
>>> reg({1000,+,-1}<nw><%for.body>)
>>> -3003 + reg({3,+,3}<nw><%for.body>)
>>> -1001 + reg({1,+,1}<nuw><nsw><%for.body>)
>>> -1000 + reg({0,+,1}<nw><%for.body>)
>>> -3000 + reg({0,+,3}<nuw><%for.body>)
>>> reg({-1000,+,1}<nw><%for.body>)
>>> reg({-3000,+,3}<nsw><%for.body>)
>>>
>>> This is the last use we consider for a solution in SolveRecurse, so CurRegs is
>>> a large set. (CurRegs is the set of registers that are needed by the
>>> previously visited uses in the in-progress solution.)
>>>
>>> ReqRegs is {
>>> {3,+,3}<nw><%for.body>,
>>> {1,+,1}<nuw><nsw><%for.body>
>>> }
>>>
>>> This is the intersection of the regs used by any of the formulas for the
>>> current use and CurRegs.
>>>
>>> Now, the code requires a formula to contain *all* these regs (the comment is
>>> simply wrong), otherwise the formula is immediately disqualified. Obviously,
>>> no formula for this use contains two regs so they will each get disqualified.
>>>
>>> The fix modifies the check to allow the formula in this case. The idea is
>>> that neither of these formulae is introducing any new registers which is the
>>> point of this early pruning as far as I understand.
>>>
>>> In terms of set arithmetic, we now allow formulas whose used regs are a subset
>>> of the required regs not just the other way around.
>>>
>>> There are few more loops in the test-suite that are now successfully LSRed. I
>>> have benchmarked those and found very minimal change.
>>>
>>> Fixes <rdar://problem/13965777>
>
> Adam,
>
> This fix looks great to me! Please go ahead and commit.
Thanks, Andy. This is r207271.
Adam
>
> Thanks,
> -Andy
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20140425/e3365a8f/attachment.html>
More information about the llvm-commits
mailing list