[Patch][LoopInfo] Use CGLoopInfo to generate loop hints
Tyler Nowicki
tnowicki at apple.com
Wed Jun 24 16:25:22 PDT 2015
Hi Hal,
Here are the split patches.
Thanks,
Tyler
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-Rename-Vectorizer-to-Vectorize-and-VectorizeUnroll-t.patch
Type: application/octet-stream
Size: 7292 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20150624/042fa70d/attachment.obj>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0002-Moved-functionality-from-EmitCondBr-to-CGLoopInfo.patch
Type: application/octet-stream
Size: 35167 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20150624/042fa70d/attachment-0001.obj>
-------------- next part --------------
> On Jun 22, 2015, at 5:40 PM, Hal Finkel <hfinkel at anl.gov> wrote:
>
> Hi Tyler,
>
> - Type::getInt32Ty(Ctx), Attrs.VectorizerWidth))};
> + Type::getInt32Ty(Ctx), Attrs.VectorizeWidth))};
>
> Could you please factor out the renamings from the functional change?
>>>
>>> Hello,
>>>
>>> I noticed a problem with my implementation of #pragma clang loop
>>> vectorize(assume_safety). When it was specified on a loop other
>>> loop hints were lost. The problem is that CGLoopInfo attaches
>>> metadata a little bit differently than EmitCondBrHints in CGStmt.
>>> For do-loops CGLoopInfo attaches metadata to the br in the body
>>> block and for while and for loops, the inc block. EmitCondBrHints
>>> on the other hand always attaches data to the br in the cond
>>> block. When specifying assume_safety CGLoopInfo emits an empty
>>> llvm.loop metadata shadowing the metadata in the cond block. Loop
>>> transformations like rotate and unswitch would then eliminate the
>>> cond block.
>>>
>>> This patch unifies both approaches for adding metadata and modifies
>>> the existing safety tests to include non-assume_safety loop hints.
More information about the cfe-commits
mailing list