brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.0 KiB · 14fb8d8 Raw
81 lines · plain
1; RUN: opt %loadNPMPolly '-passes=polly-custom<optree>' -polly-print-optree -disable-output < %s | FileCheck %s -match-full-lines2;3; Synthesizable values defined outside of a loop can be used4; inside the loop.5;6; for (int j = 0; j < n; j += 1) {7; bodyA:8;   double val = j;9;10;   for (int i = 0; i < n; i += 1) {11; bodyB:12;     A[0] = val;13;   }14; }15;16define void @func(i32 %n, ptr noalias nonnull %A) {17entry:18  br label %for19 20for:21  %j = phi i32 [0, %entry], [%j.inc, %inc]22  %j.cmp = icmp slt i32 %j, %n23  br i1 %j.cmp, label %bodyA, label %exit24 25    bodyA:26      %val = sitofp i32 %j to double27      br label %inner.for28 29 30    inner.for:31      %i = phi i32 [0, %bodyA], [%i.inc, %inner.inc]32      %i.cmp = icmp slt i32 %i, %n33      br i1 %i.cmp, label %bodyB, label %inner.exit34 35 36        bodyB:37          store double %val, ptr %A38          br label %inner.inc39 40 41    inner.inc:42      %i.inc = add nuw nsw i32 %i, 143      br label %inner.for44 45    inner.exit:46      br label %inc47 48inc:49  %j.inc = add nuw nsw i32 %j, 150  br label %for51 52exit:53  br label %return54 55return:56  ret void57}58 59 60; CHECK: Statistics {61; CHECK:     Instructions copied: 162; CHECK:     Operand trees forwarded: 163; CHECK:     Statements with forwarded operand trees: 164; CHECK: }65 66; CHECK:      After statements {67; CHECK-NEXT:     Stmt_bodyA68; CHECK-NEXT:             MustWriteAccess :=  [Reduction Type: NONE] [Scalar: 1]69; CHECK-NEXT:                 [n] -> { Stmt_bodyA[i0] -> MemRef_val[] };70; CHECK-NEXT:             Instructions {71; CHECK-NEXT:                   %val = sitofp i32 %j to double72; CHECK-NEXT:             }73; CHECK-NEXT:     Stmt_bodyB74; CHECK-NEXT:             MustWriteAccess :=  [Reduction Type: NONE] [Scalar: 0]75; CHECK-NEXT:                 [n] -> { Stmt_bodyB[i0, i1] -> MemRef_A[0] };76; CHECK-NEXT:             Instructions {77; CHECK-NEXT:                   %val = sitofp i32 %j to double78; CHECK-NEXT:                   store double %val, ptr %A, align 879; CHECK-NEXT:             }80; CHECK-NEXT: }81