brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.2 KiB · 7126fb9 Raw
82 lines · plain
1; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom<scops>' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s2 3; void foo(long n, long m, long o, double A[n][m][o]) {4;   for (long i = 0; i < n-3; i++)5;     for (long j = 4; j < m; j++)6;       for (long k = 0; k < o-7; k++) {7;         A[i+3][j-4][k+7] = 1.0;8;         A[i][0][k] = 2.0;9;       }10; }11 12 13; CHECK: Arrays {14; CHECK:     double MemRef_A[*][%m][%o]; // Element size 815; CHECK: }16 17; CHECK: [m, o, n] -> { Stmt_for_body6[i0, i1, i2] -> MemRef_A[3 + i0, i1, 7 + i2] };18; CHECK: [m, o, n] -> { Stmt_for_body6[i0, i1, i2] -> MemRef_A[i0, 0, i2] };19 20target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"21 22; Function Attrs: nounwind uwtable23define void @foo(i64 %n, i64 %m, i64 %o, ptr nocapture %A) {24entry:25  %cmp35 = icmp sgt i64 %n, 026  br i1 %cmp35, label %for.cond1.preheader.lr.ph, label %for.end1827 28for.cond1.preheader.lr.ph:                        ; preds = %entry29  %cmp233 = icmp sgt i64 %m, 030  %cmp531 = icmp sgt i64 %o, 031  %0 = mul nuw i64 %o, %m32  br label %for.cond1.preheader33 34for.cond1.preheader:                              ; preds = %for.inc16, %for.cond1.preheader.lr.ph35  %i.036 = phi i64 [ 0, %for.cond1.preheader.lr.ph ], [ %inc17, %for.inc16 ]36  br i1 %cmp233, label %for.cond4.preheader.lr.ph, label %for.inc1637 38for.cond4.preheader.lr.ph:                        ; preds = %for.cond1.preheader39  %add7 = add nsw i64 %i.036, 340  %1 = mul nsw i64 %add7, %041  %add = add i64 %1, 742  %2 = mul nsw i64 %i.036, %043  br label %for.cond4.preheader44 45for.cond4.preheader:                              ; preds = %for.inc13, %for.cond4.preheader.lr.ph46  %j.034 = phi i64 [ 4, %for.cond4.preheader.lr.ph ], [ %inc14, %for.inc13 ]47  br i1 %cmp531, label %for.body6.lr.ph, label %for.inc1348 49for.body6.lr.ph:                                  ; preds = %for.cond4.preheader50  %sub = add nsw i64 %j.034, -451  %3 = mul nsw i64 %sub, %o52  %arrayidx.sum = add i64 %add, %353  br label %for.body654 55for.body6:                                        ; preds = %for.body6, %for.body6.lr.ph56  %k.032 = phi i64 [ 0, %for.body6.lr.ph ], [ %inc, %for.body6 ]57  %arrayidx8.sum = add i64 %arrayidx.sum, %k.03258  %arrayidx9 = getelementptr inbounds double, ptr %A, i64 %arrayidx8.sum59  store double 1.000000e+00, ptr %arrayidx9, align 860  %arrayidx10.sum = add i64 %k.032, %261  %arrayidx12 = getelementptr inbounds double, ptr %A, i64 %arrayidx10.sum62  store double 2.000000e+00, ptr %arrayidx12, align 863  %inc = add nsw i64 %k.032, 164  %osub = sub nsw i64 %o, 765  %exitcond = icmp eq i64 %inc, %osub66  br i1 %exitcond, label %for.inc13, label %for.body667 68for.inc13:                                        ; preds = %for.body6, %for.cond4.preheader69  %inc14 = add nsw i64 %j.034, 170  %exitcond37 = icmp eq i64 %inc14, %m71  br i1 %exitcond37, label %for.inc16, label %for.cond4.preheader72 73for.inc16:                                        ; preds = %for.inc13, %for.cond1.preheader74  %inc17 = add nsw i64 %i.036, 175  %nsub = sub nsw i64 %n, 376  %exitcond38 = icmp eq i64 %inc17, %nsub77  br i1 %exitcond38, label %for.end18, label %for.cond1.preheader78 79for.end18:                                        ; preds = %for.inc16, %entry80  ret void81}82