1; RUN: opt %loadNPMPolly '-passes=print<polly-opt-isl>' -disable-output < %s | FileCheck %s --match-full-lines 2; 3; Apply two loop transformations. First partial, then full unrolling. 4; 5define void @func(ptr noalias nonnull %A) { 6entry: 7 br label %for 8 9for: 10 %j = phi i32 [0, %entry], [%j.inc, %inc] 11 %j.cmp = icmp slt i32 %j, 12 12 br i1 %j.cmp, label %body, label %exit 13 14 body: 15 store double 42.0, ptr %A 16 br label %inc 17 18inc: 19 %j.inc = add nuw nsw i32 %j, 1 20 br label %for, !llvm.loop !2 21 22exit: 23 br label %return 24 25return: 26 ret void 27} 28 29 30!2 = distinct !{!2, !4, !5, !6} 31!4 = !{!"llvm.loop.unroll.enable", i1 true} 32!5 = !{!"llvm.loop.unroll.count", i4 4} 33!6 = !{!"llvm.loop.unroll.followup_unrolled", !7} 34 35!7 = distinct !{!7, !8, !9} 36!8 = !{!"llvm.loop.unroll.enable", i1 true} 37!9 = !{!"llvm.loop.unroll.full"} 38 39 40; CHECK-LABEL: Printing analysis 'Polly - Optimize schedule of SCoP' for region: 'for => return' in function 'func': 41; CHECK: domain: "{ Stmt_body[i0] : 0 <= i0 <= 11 }" 42; CHECK sequence: 43; CHECK: - filter: "{ Stmt_body[i0] : 0 <= i0 <= 3 }" 44; CHECK sequence: 45; CHECK: - filter: "{ Stmt_body[0] }" 46; CHECK: - filter: "{ Stmt_body[i0] : (-1 + i0) mod 4 = 0 }" 47; CHECK: - filter: "{ Stmt_body[i0] : (2 + i0) mod 4 = 0 }" 48; CHECK: - filter: "{ Stmt_body[i0] : (1 + i0) mod 4 = 0 }" 49; CHECK sequence: 50; CHECK: - filter: "{ Stmt_body[i0] : 4 <= i0 <= 7 }" 51; CHECK sequence: 52; CHECK: - filter: "{ Stmt_body[4] }" 53; CHECK: - filter: "{ Stmt_body[i0] : (-1 + i0) mod 4 = 0 }" 54; CHECK: - filter: "{ Stmt_body[i0] : (2 + i0) mod 4 = 0 }" 55; CHECK: - filter: "{ Stmt_body[i0] : (1 + i0) mod 4 = 0 }" 56; CHECK sequence: 57; CHECK: - filter: "{ Stmt_body[i0] : 8 <= i0 <= 11 }" 58; CHECK sequence: 59; CHECK: - filter: "{ Stmt_body[8] }" 60; CHECK: - filter: "{ Stmt_body[i0] : (-1 + i0) mod 4 = 0 }" 61; CHECK: - filter: "{ Stmt_body[i0] : (2 + i0) mod 4 = 0 }" 62; CHECK: - filter: "{ Stmt_body[i0] : (1 + i0) mod 4 = 0 }" 63