53 lines · plain
1; RUN: opt %loadNPMPolly '-passes=polly-custom<scops>' -polly-print-scops -disable-output -polly-invariant-load-hoisting < %s 2>&1 | FileCheck %s2 3; Verify that a delinearized and a not delinearized access are not4; canonicalized.5 6; CHECK: Stmt_body17; CHECK-NEXT: Domain :=8; CHECK-NEXT: [n] -> { Stmt_body1[i0] : 0 <= i0 <= 1022 };9; CHECK-NEXT: Schedule :=10; CHECK-NEXT: [n] -> { Stmt_body1[i0] -> [i0, 0] };11; CHECK-NEXT: MustWriteAccess := [Reduction Type: NONE] [Scalar: 0]12; CHECK-NEXT: [n] -> { Stmt_body1[i0] -> MemRef_baseB[0] };13; CHECK-NEXT: Stmt_body214; CHECK-NEXT: Domain :=15; CHECK-NEXT: [n] -> { Stmt_body2[i0] : 0 <= i0 <= 1022 };16; CHECK-NEXT: Schedule :=17; CHECK-NEXT: [n] -> { Stmt_body2[i0] -> [i0, 1] };18; CHECK-NEXT: MustWriteAccess := [Reduction Type: NONE] [Scalar: 0]19; CHECK-NEXT: [n] -> { Stmt_body2[i0] -> MemRef_baseA[i0, i0] };20; CHECK-NEXT: }21 22 23define void @foo(ptr %A, i64 %n, i64 %m) {24start:25 br label %loop26 27loop:28 %indvar = phi i64 [0, %start], [%indvar.next, %latch]29 %indvar.next = add nsw i64 %indvar, 130 %icmp = icmp slt i64 %indvar.next, 102431 br i1 %icmp, label %body1, label %exit32 33body1:34 %baseB = load ptr, ptr %A35 store float 42.0, ptr %baseB36 br label %body237 38body2:39 %baseA = load ptr, ptr %A40 %offsetA = mul i64 %indvar, %n41 %offsetA2 = add i64 %offsetA, %indvar42 %ptrA = getelementptr float, ptr %baseA, i64 %offsetA243 store float 42.0, ptr %ptrA44 br label %latch45 46latch:47 br label %loop48 49exit:50 ret void51 52}53