108 lines · plain
1; RUN: opt %loadNPMPolly '-passes=polly-custom<opt-isl;ast>' -polly-print-ast -disable-output < %s | FileCheck %s2;3; void jacobi1d(long T, long N, float *A, float *B) {4; long t, i, j;5; for (t = 0; t < T; t++) {6; for (i = 1; i < N - 1; i++)7; B[i] = 0.33333 * (A[i - 1] + A[i] + A[i + 1]);8; for (j = 1; j < N - 1; j++)9; A[j] = 0.33333 * (B[i - 1] + B[i] + B[i + 1]);10; }11; }12 13; Verify that we do not tile bands that have just a single dimension.14 15; CHECK: for (int c0 = 0; c0 < T; c0 += 1) {16; CHECK: for (int c1 = 0; c1 < N - 2; c1 += 1)17; CHECK: Stmt_for_body3(c0, c1);18; CHECK: for (int c1 = 0; c1 < N - 2; c1 += 1)19; CHECK: Stmt_for_body15(c0, c1);20; CHECK: }21 22target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"23 24define void @jacobi1d(i64 %T, i64 %N, ptr %A, ptr %B) {25entry:26 %tmp = add i64 %N, -127 %tmp1 = icmp sgt i64 %tmp, 128 %smax = select i1 %tmp1, i64 %tmp, i64 129 br label %for.cond30 31for.cond: ; preds = %for.inc30, %entry32 %t.0 = phi i64 [ 0, %entry ], [ %inc31, %for.inc30 ]33 %cmp = icmp slt i64 %t.0, %T34 br i1 %cmp, label %for.body, label %for.end3235 36for.body: ; preds = %for.cond37 br label %for.cond138 39for.cond1: ; preds = %for.inc, %for.body40 %i.0 = phi i64 [ 1, %for.body ], [ %inc, %for.inc ]41 %sub = add nsw i64 %N, -142 %cmp2 = icmp slt i64 %i.0, %sub43 br i1 %cmp2, label %for.body3, label %for.end44 45for.body3: ; preds = %for.cond146 %sub4 = add nsw i64 %i.0, -147 %arrayidx = getelementptr inbounds float, ptr %A, i64 %sub448 %tmp2 = load float, ptr %arrayidx, align 449 %arrayidx5 = getelementptr inbounds float, ptr %A, i64 %i.050 %tmp3 = load float, ptr %arrayidx5, align 451 %add = fadd float %tmp2, %tmp352 %add6 = add nuw nsw i64 %i.0, 153 %arrayidx7 = getelementptr inbounds float, ptr %A, i64 %add654 %tmp4 = load float, ptr %arrayidx7, align 455 %add8 = fadd float %add, %tmp456 %conv = fpext float %add8 to double57 %mul = fmul double %conv, 3.333300e-0158 %conv9 = fptrunc double %mul to float59 %arrayidx10 = getelementptr inbounds float, ptr %B, i64 %i.060 store float %conv9, ptr %arrayidx10, align 461 br label %for.inc62 63for.inc: ; preds = %for.body364 %inc = add nuw nsw i64 %i.0, 165 br label %for.cond166 67for.end: ; preds = %for.cond168 br label %for.cond1169 70for.cond11: ; preds = %for.inc27, %for.end71 %j.0 = phi i64 [ 1, %for.end ], [ %inc28, %for.inc27 ]72 %sub12 = add nsw i64 %N, -173 %cmp13 = icmp slt i64 %j.0, %sub1274 br i1 %cmp13, label %for.body15, label %for.end2975 76for.body15: ; preds = %for.cond1177 %sub16 = add nsw i64 %smax, -178 %arrayidx17 = getelementptr inbounds float, ptr %B, i64 %sub1679 %tmp5 = load float, ptr %arrayidx17, align 480 %arrayidx18 = getelementptr inbounds float, ptr %B, i64 %smax81 %tmp6 = load float, ptr %arrayidx18, align 482 %add19 = fadd float %tmp5, %tmp683 %add20 = add nsw i64 %smax, 184 %arrayidx21 = getelementptr inbounds float, ptr %B, i64 %add2085 %tmp7 = load float, ptr %arrayidx21, align 486 %add22 = fadd float %add19, %tmp787 %conv23 = fpext float %add22 to double88 %mul24 = fmul double %conv23, 3.333300e-0189 %conv25 = fptrunc double %mul24 to float90 %arrayidx26 = getelementptr inbounds float, ptr %A, i64 %j.091 store float %conv25, ptr %arrayidx26, align 492 br label %for.inc2793 94for.inc27: ; preds = %for.body1595 %inc28 = add nuw nsw i64 %j.0, 196 br label %for.cond1197 98for.end29: ; preds = %for.cond1199 br label %for.inc30100 101for.inc30: ; preds = %for.end29102 %inc31 = add nuw nsw i64 %t.0, 1103 br label %for.cond104 105for.end32: ; preds = %for.cond106 ret void107}108