[polly] r185254 - TempScop: (Partial) Implement the printDetail function.

Hongbin Zheng etherzhhb at gmail.com
Tue Jul 2 18:34:11 PDT 2013


Hi tobi,


On Wed, Jul 3, 2013 at 12:21 AM, Tobias Grosser <tobias at grosser.es> wrote:

> On 06/29/2013 12:00 AM, Hongbin Zheng wrote:
>
>> Author: ether
>> Date: Sat Jun 29 02:00:14 2013
>> New Revision: 185254
>>
>> URL: http://llvm.org/viewvc/llvm-**project?rev=185254&view=rev<http://llvm.org/viewvc/llvm-project?rev=185254&view=rev>
>> Log:
>> TempScop: (Partial) Implement the printDetail function.
>>
>
> Thanks!
>
> Also, it would be nice to check the changes with clang-format before you
> commit them.
>
> If clang-format is in your path, you can just run 'make
> polly-check-format' (or 'make polly-update-format' to fix the formatting)
>
> Some comments inline.
>
> Cheers
> Tobias
>
>
>    void TempScop::printDetail(raw_**ostream &OS, ScalarEvolution *SE,
>>                              LoopInfo *LI, const Region *CurR,
>> -                           unsigned ind) const {}
>> +                           unsigned ind) const {
>> +
>> +  // FIXME: Print other details rather than memory accesses.
>> +  typedef Region::const_block_iterator bb_iterator;
>> +  for (bb_iterator I = CurR->block_begin(), E = CurR->block_end(); I !=
>> E; ++I){
>> +    BasicBlock *CurBlock = *I;
>> +
>> +    AccFuncMapType::const_iterator AccSetIt = AccFuncMap.find(CurBlock);
>> +
>> +    // Ignore trivial blocks that do not contain any memory access.
>> +    if (AccSetIt == AccFuncMap.end()) continue;
>>
>
> It would be nice to move this into a separate function that is also used
> in place of the Scop::isTrivialBB() function in ScopInfo.cpp.
>
Ok

>
> Such a patch is approved for commit. ;-)

Well, this patch is reviewed before, you said once I shorten the commit
message, it is ok to commit ;-)

>
>
>
>    void TempScopInfo::**buildScalarDependences(**Instruction *Inst,
>> Region *R) {
>>     // No need to translate these scalar dependences into polyhedral
>> form, because
>>
>> Added: polly/trunk/test/TempScop/**tempscop-printing.ll
>> URL: http://llvm.org/viewvc/llvm-**project/polly/trunk/test/**
>> TempScop/tempscop-printing.ll?**rev=185254&view=auto<http://llvm.org/viewvc/llvm-project/polly/trunk/test/TempScop/tempscop-printing.ll?rev=185254&view=auto>
>> ==============================**==============================**
>> ==================
>> --- polly/trunk/test/TempScop/**tempscop-printing.ll (added)
>> +++ polly/trunk/test/TempScop/**tempscop-printing.ll Sat Jun 29 02:00:14
>> 2013
>> @@ -0,0 +1,51 @@
>> +; RUN: opt %loadPolly -basicaa -polly-analyze-ir -analyze < %s |
>> FileCheck %s
>>
>
> It would be nice to run this also with -polly-codegen-scev enabled.

Ok

>
>  +
>> +; void f(long A[], int N, int *init_ptr) {
>> +;   long i, j;
>> +;
>> +;   for (i = 0; i < N; ++i) {
>> +;     init = *init_ptr;
>> +;     for (i = 0; i < N; ++i) {
>> +;       A[i] = init + 2;
>> +;     }
>> +;   }
>> +; }
>> +
>> +target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-**
>> i16:16:16-i32:32:32-i64:64:64-**f32:32:32-f64:64:64-v64:64:64-**
>> v128:128:128-a0:0:64-s0:64:64-**f80:128:128"
>> +target triple = "x86_64-unknown-linux-gnu"
>> +
>> +define void @f(i64* noalias %A, i64 %N, i64* noalias %init_ptr) nounwind
>> {
>> +entry:
>> +  br label %for.i
>> +
>> +for.i:
>> +  %indvar.i = phi i64 [ 0, %entry ], [ %indvar.i.next, %for.i.end ]
>> +  %indvar.i.next = add nsw i64 %indvar.i, 1
>> +  br label %entry.next
>> +
>> +entry.next:
>> +; CHECK: BB: entry.next
>> +  %init = load i64* %init_ptr
>> +; CHECK:  Read init_ptr[0]
>> +; CHECK:  Write init.s2a[0]
>> +  br label %for.j
>> +
>> +for.j:
>> +  %indvar.j = phi i64 [ 0, %entry.next ], [ %indvar.j.next, %for.j ]
>> +; CHECK: BB: for.j
>> +; CHECK: Read init.s2a[0]
>> +; CHECK: Write A[{0,+,8}<%for.j>]
>> +  %init_plus_two = add i64 %init, 2
>> +  %scevgep = getelementptr i64* %A, i64 %indvar.j
>> +  store i64 %init_plus_two, i64* %scevgep
>> +  %indvar.j.next = add nsw i64 %indvar.j, 1
>> +  %exitcond.j = icmp eq i64 %indvar.j.next, %N
>> +  br i1 %exitcond.j, label %for.i.end, label %for.j
>> +
>> +for.i.end:
>> +  %exitcond.i = icmp eq i64 %indvar.i.next, %N
>> +  br i1 %exitcond.i, label %return, label %for.i
>> +
>> +return:
>> +  ret void
>> +}
>>
>
> Overall a very nice well targeted test case!
>
> Thanks,
> Tobi
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20130703/bb39c428/attachment.html>


More information about the llvm-commits mailing list