[Patch][LoopInfo] Use CGLoopInfo to generate loop hints

Tyler Nowicki tnowicki at apple.com
Thu Jul 2 10:27:00 PDT 2015


Hi,

Could I get a review of these patches?

Thanks,

Tyler

> On Jun 24, 2015, at 4:25 PM, Tyler Nowicki <tnowicki at apple.com> wrote:
> 
> Hi Hal,
> 
> Here are the split patches.
> 
> Thanks,
> 
> Tyler
> 
> <0001-Rename-Vectorizer-to-Vectorize-and-VectorizeUnroll-t.patch><0002-Moved-functionality-from-EmitCondBr-to-CGLoopInfo.patch>
> 
>> 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