brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.2 KiB · e39e7b5 Raw
66 lines · plain
1; RUN: opt %loadNPMPolly '-passes=polly-custom<optree>' -polly-print-optree -disable-output < %s | FileCheck %s -match-full-lines2;3; Move operand tree without duplicating values used multiple times.4;5define void @func(i32 %n, ptr noalias nonnull %A) {6entry:7  br label %for8 9for:10  %j = phi i32 [0, %entry], [%j.inc, %inc]11  %j.cmp = icmp slt i32 %j, %n12  br i1 %j.cmp, label %bodyA, label %exit13 14    bodyA:15      %val1 = fadd double 12.5, 12.516      %val2 = fadd double %val1, %val117      %val3 = fadd double %val2, %val218      %val4 = fadd double %val3, %val319      %val5 = fadd double %val4, %val420      br label %bodyB21 22    bodyB:23      store double %val5, ptr %A24      br label %inc25 26inc:27  %j.inc = add nuw nsw i32 %j, 128  br label %for29 30exit:31  br label %return32 33return:34  ret void35}36 37 38; CHECK: Statistics {39; CHECK:     Instructions copied: 540; CHECK:     Operand trees forwarded: 141; CHECK: }42 43; CHECK:      After statements {44; CHECK-NEXT:     Stmt_bodyA45; CHECK-NEXT:             MustWriteAccess :=  [Reduction Type: NONE] [Scalar: 1]46; CHECK-NEXT:                 [n] -> { Stmt_bodyA[i0] -> MemRef_val5[] };47; CHECK-NEXT:             Instructions {48; CHECK-NEXT:                   %val1 = fadd double 1.250000e+01, 1.250000e+0149; CHECK-NEXT:                   %val2 = fadd double %val1, %val150; CHECK-NEXT:                   %val3 = fadd double %val2, %val251; CHECK-NEXT:                   %val4 = fadd double %val3, %val352; CHECK-NEXT:                   %val5 = fadd double %val4, %val453; CHECK-NEXT:             }54; CHECK-NEXT:     Stmt_bodyB55; CHECK-NEXT:             MustWriteAccess :=  [Reduction Type: NONE] [Scalar: 0]56; CHECK-NEXT:                 [n] -> { Stmt_bodyB[i0] -> MemRef_A[0] };57; CHECK-NEXT:             Instructions {58; CHECK-NEXT:                   %val1 = fadd double 1.250000e+01, 1.250000e+0159; CHECK-NEXT:                   %val2 = fadd double %val1, %val160; CHECK-NEXT:                   %val3 = fadd double %val2, %val261; CHECK-NEXT:                   %val4 = fadd double %val3, %val362; CHECK-NEXT:                   %val5 = fadd double %val4, %val463; CHECK-NEXT:                   store double %val5, ptr %A, align 864; CHECK-NEXT:             }65; CHECK-NEXT: }66