; RUN: opt %loadPolly -polly-import-jscop-dir=%S -polly-import-jscop -polly-ast -polly-ast-detect-parallel -analyze < %s | FileCheck %s
;
; CHECK:    #pragma known-parallel reduction
; CHECK:    for (int c0 = 0; c0 <= 2; c0 += 1) {
; CHECK:      if (c0 == 2) {
; CHECK:        #pragma simd reduction
; CHECK:        for (int c1 = 1; c1 < 2 * n; c1 += 2)
; CHECK:          Stmt_S0(c1);
; CHECK:      } else if (c0 == 1) {
; CHECK:        #pragma simd
; CHECK:        for (int c1 = 0; c1 < 2 * n; c1 += 1)
; CHECK:          Stmt_S1(c1);
; CHECK:      } else
; CHECK:        #pragma simd reduction
; CHECK:        for (int c1 = -2 * n + 2; c1 <= 0; c1 += 2)
; CHECK:          Stmt_S0(-c1);
; CHECK:    }
;
;    void rmalrs2(int *A, long n) {
;      for (long i = 0; i < 2 * n; i++)
; S0:    A[0] += i;
;      for (long i = 0; i < 2 * n; i++)
; S1:    A[i + 1] = 1;
;    }
;
target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"

define void @rmalrs2(i32* %A, i32 %n) {
entry:
  br label %for.cond

for.cond:                                         ; preds = %for.inc, %entry
  %i.0 = phi i32 [ 0, %entry ], [ %inc, %for.inc ]
  %mul = shl nsw i32 %n, 1
  %cmp = icmp slt i32 %i.0, %mul
  br i1 %cmp, label %for.body, label %for.end

for.body:                                         ; preds = %for.cond
  br label %S0

S0:                                               ; preds = %for.body
  %tmp = load i32* %A, align 4
  %add = add nsw i32 %tmp, %i.0
  store i32 %add, i32* %A, align 4
  br label %for.inc

for.inc:                                          ; preds = %S0
  %inc = add nsw i32 %i.0, 1
  br label %for.cond

for.end:                                          ; preds = %for.cond
  br label %for.cond2

for.cond2:                                        ; preds = %for.inc8, %for.end
  %i1.0 = phi i32 [ 0, %for.end ], [ %inc9, %for.inc8 ]
  %mul3 = shl nsw i32 %n, 1
  %cmp4 = icmp slt i32 %i1.0, %mul3
  br i1 %cmp4, label %for.body5, label %for.end10

for.body5:                                        ; preds = %for.cond2
  br label %S1

S1:                                               ; preds = %for.body5
  %add6 = add nsw i32 %i1.0, 1
  %arrayidx7 = getelementptr inbounds i32* %A, i32 %add6
  store i32 1, i32* %arrayidx7, align 4
  br label %for.inc8

for.inc8:                                         ; preds = %S1
  %inc9 = add nsw i32 %i1.0, 1
  br label %for.cond2

for.end10:                                        ; preds = %for.cond2
  ret void
}

