brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.2 KiB · 7b55d9e Raw
78 lines · plain
1; RUN: opt %loadNPMPolly '-passes=polly-custom<optree>' -polly-print-optree -disable-output < %s | FileCheck %s -match-full-lines2;3; Move %v and %val to %bodyB, so %bodyA can be removed (by -polly-simplify)4;5; for (int j = 0; j < n; j += 1) {6; bodyA:7;   double val1 = 12.5 + 12.5;8;9; bodyB:10;   double val2 = 21.0 + 21.0;11;12; bodyC:13;   A[0] = val2;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      %val1 = fadd double 12.5, 12.527      br label %bodyB28 29    bodyB:30      %val2 = fadd double %val1, 21.031      br label %bodyC32 33    bodyC:34      store double %val2, ptr %A35      br label %inc36 37inc:38  %j.inc = add nuw nsw i32 %j, 139  br label %for40 41exit:42  br label %return43 44return:45  ret void46}47 48 49; CHECK: Statistics {50; CHECK:     Instructions copied: 351; CHECK:     Operand trees forwarded: 252; CHECK:     Statements with forwarded operand trees: 253; CHECK: }54 55; CHECK:      After statements {56; CHECK-NEXT:     Stmt_bodyA57; CHECK-NEXT:             MustWriteAccess :=  [Reduction Type: NONE] [Scalar: 1]58; CHECK-NEXT:                 [n] -> { Stmt_bodyA[i0] -> MemRef_val1[] };59; CHECK-NEXT:             Instructions {60; CHECK-NEXT:                   %val1 = fadd double 1.250000e+01, 1.250000e+0161; CHECK-NEXT:             }62; CHECK-NEXT:     Stmt_bodyB63; CHECK-NEXT:             MustWriteAccess :=  [Reduction Type: NONE] [Scalar: 1]64; CHECK-NEXT:                 [n] -> { Stmt_bodyB[i0] -> MemRef_val2[] };65; CHECK-NEXT:             Instructions {66; CHECK-NEXT:                   %val1 = fadd double 1.250000e+01, 1.250000e+0167; CHECK-NEXT:                   %val2 = fadd double %val1, 2.100000e+0168; CHECK-NEXT:             }69; CHECK-NEXT:     Stmt_bodyC70; CHECK-NEXT:             MustWriteAccess :=  [Reduction Type: NONE] [Scalar: 0]71; CHECK-NEXT:                 [n] -> { Stmt_bodyC[i0] -> MemRef_A[0] };72; CHECK-NEXT:             Instructions {73; CHECK-NEXT:                   %val1 = fadd double 1.250000e+01, 1.250000e+0174; CHECK-NEXT:                   %val2 = fadd double %val1, 2.100000e+0175; CHECK-NEXT:                   store double %val2, ptr %A, align 876; CHECK-NEXT:             }77; CHECK-NEXT: }78