63 lines · plain
1; RUN: opt %loadNPMPolly '-passes=polly-custom<scops>' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s2 3target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128"4 5define void @f(ptr %a, i64 %N) {6entry:7 br label %for8 9for:10 %indvar = phi i64 [ 0, %entry ], [ %indvar.next, %for.backedge ]11 br label %S112 13S1:14 %scevgep1 = getelementptr i64, ptr %a, i64 %indvar15 %val = load i64, ptr %scevgep1, align 816 br label %S217 18S2:19 %scevgep2 = getelementptr i64, ptr %a, i64 %indvar20 store i64 %val, ptr %scevgep2, align 821 br label %for.backedge22 23for.backedge:24 %indvar.next = add nsw i64 %indvar, 125 %exitcond = icmp eq i64 %indvar.next, %N26 br i1 %exitcond, label %return, label %for27 28return:29 ret void30}31 32 33; CHECK: Arrays {34; CHECK-NEXT: i64 MemRef_a[*]; // Element size 835; CHECK-NEXT: i64 MemRef_val; // Element size 836; CHECK-NEXT: }37;38; CHECK: Arrays (Bounds as pw_affs) {39; CHECK-NEXT: i64 MemRef_a[*]; // Element size 840; CHECK-NEXT: i64 MemRef_val; // Element size 841; CHECK-NEXT: }42;43; CHECK: Statements {44; CHECK-NEXT: Stmt_S145; CHECK-NEXT: Domain :=46; CHECK-NEXT: [N] -> { Stmt_S1[i0] : 0 <= i0 < N };47; CHECK-NEXT: Schedule :=48; CHECK-NEXT: [N] -> { Stmt_S1[i0] -> [i0, 0] };49; CHECK-NEXT: ReadAccess := [Reduction Type: NONE] [Scalar: 0]50; CHECK-NEXT: [N] -> { Stmt_S1[i0] -> MemRef_a[i0] };51; CHECK-NEXT: MustWriteAccess := [Reduction Type: NONE] [Scalar: 1]52; CHECK-NEXT: [N] -> { Stmt_S1[i0] -> MemRef_val[] };53; CHECK-NEXT: Stmt_S254; CHECK-NEXT: Domain :=55; CHECK-NEXT: [N] -> { Stmt_S2[i0] : 0 <= i0 < N };56; CHECK-NEXT: Schedule :=57; CHECK-NEXT: [N] -> { Stmt_S2[i0] -> [i0, 1] };58; CHECK-NEXT: MustWriteAccess := [Reduction Type: NONE] [Scalar: 0]59; CHECK-NEXT: [N] -> { Stmt_S2[i0] -> MemRef_a[i0] };60; CHECK-NEXT: ReadAccess := [Reduction Type: NONE] [Scalar: 1]61; CHECK-NEXT: [N] -> { Stmt_S2[i0] -> MemRef_val[] };62; CHECK-NEXT: }63