77 lines · plain
1; RUN: opt %loadNPMPolly '-passes=polly-custom<import-jscop;ast>' -polly-print-ast -polly-ast-detect-parallel -disable-output < %s | FileCheck %s2;3; CHECK: #pragma known-parallel reduction4; CHECK: for (int c0 = 0; c0 <= 2; c0 += 1) {5; CHECK: if (c0 == 2) {6; CHECK: #pragma simd reduction7; CHECK: for (int c1 = 1; c1 < 2 * n; c1 += 2)8; CHECK: Stmt_S0(c1);9; CHECK: } else if (c0 == 1) {10; CHECK: #pragma simd11; CHECK: for (int c1 = 0; c1 < 2 * n; c1 += 1)12; CHECK: Stmt_S1(c1);13; CHECK: } else14; CHECK: #pragma simd reduction15; CHECK: for (int c1 = -2 * n + 2; c1 <= 0; c1 += 2)16; CHECK: Stmt_S0(-c1);17; CHECK: }18;19; void rmalrs2(int *A, long n) {20; for (long i = 0; i < 2 * n; i++)21; S0: A[0] += i;22; for (long i = 0; i < 2 * n; i++)23; S1: A[i + 1] = 1;24; }25;26target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"27 28define void @rmalrs2(ptr %A, i32 %n) {29entry:30 br label %for.cond31 32for.cond: ; preds = %for.inc, %entry33 %i.0 = phi i32 [ 0, %entry ], [ %inc, %for.inc ]34 %mul = shl nsw i32 %n, 135 %cmp = icmp slt i32 %i.0, %mul36 br i1 %cmp, label %for.body, label %for.end37 38for.body: ; preds = %for.cond39 br label %S040 41S0: ; preds = %for.body42 %tmp = load i32, ptr %A, align 443 %add = add nsw i32 %tmp, %i.044 store i32 %add, ptr %A, align 445 br label %for.inc46 47for.inc: ; preds = %S048 %inc = add nsw i32 %i.0, 149 br label %for.cond50 51for.end: ; preds = %for.cond52 br label %for.cond253 54for.cond2: ; preds = %for.inc8, %for.end55 %i1.0 = phi i32 [ 0, %for.end ], [ %inc9, %for.inc8 ]56 %mul3 = shl nsw i32 %n, 157 %cmp4 = icmp slt i32 %i1.0, %mul358 br i1 %cmp4, label %for.body5, label %for.end1059 60for.body5: ; preds = %for.cond261 br label %S162 63S1: ; preds = %for.body564 %add6 = add nsw i32 %i1.0, 165 %arrayidx7 = getelementptr inbounds i32, ptr %A, i32 %add666 store i32 1, ptr %arrayidx7, align 467 br label %for.inc868 69for.inc8: ; preds = %S170 %inc9 = add nsw i32 %i1.0, 171 br label %for.cond272 73for.end10: ; preds = %for.cond274 ret void75}76 77