1; RUN: opt %loadPolly -polly-vectorizer=polly -polly-print-ast -disable-output < %s | FileCheck %s -check-prefix=AST 2; RUN: opt %loadPolly -polly-vectorizer=polly -polly-codegen -S < %s | FileCheck %s 3; 4; void foo(float *A) { 5; for (long i = 0; i < 16; i++) { 6; if (i % 2) 7; A[i] += 2; 8; if (i % 3) 9; A[i] += 3; 10; } 11; } 12; 13target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" 14 15; AST: #pragma simd 16; AST: #pragma known-parallel 17; AST: for (int c0 = 0; c0 <= 15; c0 += 1) { 18; AST: if ((c0 + 1) % 2 == 0) 19; AST: Stmt_bb4(c0); 20; AST: if (c0 % 3 >= 1) 21; AST: Stmt_bb11(c0); 22; AST: } 23 24; CHECK: polly.split_new_and_old 25 26define void @foo(float* %A) { 27bb: 28 br label %bb1 29 30bb1: ; preds = %bb16, %bb 31 %i.0 = phi i64 [ 0, %bb ], [ %tmp17, %bb16 ] 32 %exitcond = icmp ne i64 %i.0, 16 33 br i1 %exitcond, label %bb2, label %bb18 34 35bb2: ; preds = %bb1 36 %tmp = srem i64 %i.0, 2 37 %tmp3 = icmp eq i64 %tmp, 0 38 br i1 %tmp3, label %bb8, label %bb4 39 40bb4: ; preds = %bb2 41 %tmp5 = getelementptr inbounds float, float* %A, i64 %i.0 42 %tmp6 = load float, float* %tmp5, align 4 43 %tmp7 = fadd float %tmp6, 2.000000e+00 44 store float %tmp7, float* %tmp5, align 4 45 br label %bb8 46 47bb8: ; preds = %bb2, %bb4 48 %tmp9 = srem i64 %i.0, 3 49 %tmp10 = icmp eq i64 %tmp9, 0 50 br i1 %tmp10, label %bb15, label %bb11 51 52bb11: ; preds = %bb8 53 %tmp12 = getelementptr inbounds float, float* %A, i64 %i.0 54 %tmp13 = load float, float* %tmp12, align 4 55 %tmp14 = fadd float %tmp13, 3.000000e+00 56 store float %tmp14, float* %tmp12, align 4 57 br label %bb15 58 59bb15: ; preds = %bb8, %bb11 60 br label %bb16 61 62bb16: ; preds = %bb15 63 %tmp17 = add nsw i64 %i.0, 1 64 br label %bb1 65 66bb18: ; preds = %bb1 67 ret void 68} 69