brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.3 KiB · 3bc504d Raw
106 lines · plain
1; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb -polly-optree-normalize-phi=true '-passes=polly-custom<optree>' -polly-print-optree -disable-output < %s | FileCheck %s -match-full-lines2 3target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"4 5define internal fastcc void @kernel_jacobi_1d(ptr noalias nocapture %A, ptr noalias nocapture %B) unnamed_addr {6entry:7  br label %entry.split8 9entry.split:                                      ; preds = %entry10  %arrayidx6.phi.trans.insert = getelementptr inbounds double, ptr %A, i64 111  %arrayidx21.phi.trans.insert = getelementptr inbounds double, ptr %B, i64 112  br label %for.body13 14for.body:                                         ; preds = %for.inc33, %entry.split15  %t.03 = phi i32 [ 0, %entry.split ], [ %inc34, %for.inc33 ]16  %.pre = load double, ptr %A, align 8, !tbaa !617  %.pre10 = load double, ptr %arrayidx6.phi.trans.insert, align 8, !tbaa !618  br label %for.body319 20for.body3:                                        ; preds = %for.body3, %for.body21  %0 = phi double [ %.pre10, %for.body ], [ %2, %for.body3 ]22  %1 = phi double [ %.pre, %for.body ], [ %0, %for.body3 ]23  %indvars.iv = phi i64 [ 1, %for.body ], [ %indvars.iv.next, %for.body3 ]24  %add = fadd double %1, %025  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 126  %arrayidx9 = getelementptr inbounds double, ptr %A, i64 %indvars.iv.next27  %2 = load double, ptr %arrayidx9, align 8, !tbaa !628  %add10 = fadd double %add, %229  %mul = fmul double %add10, 3.333300e-0130  %arrayidx12 = getelementptr inbounds double, ptr %B, i64 %indvars.iv31  store double %mul, ptr %arrayidx12, align 8, !tbaa !632  %exitcond = icmp eq i64 %indvars.iv.next, 333  br i1 %exitcond, label %for.end, label %for.body334 35for.end:                                          ; preds = %for.body336  %.pre11 = load double, ptr %B, align 8, !tbaa !637  %.pre12 = load double, ptr %arrayidx21.phi.trans.insert, align 8, !tbaa !638  br label %for.inc3339 40for.inc33:                                        ; preds = %for.body1641  %inc34 = add nuw nsw i32 %t.03, 142  %exitcond9 = icmp eq i32 %inc34, 243  br i1 %exitcond9, label %for.end35, label %for.body44 45for.end35:                                        ; preds = %for.inc3346  ret void47}48 49!llvm.module.flags = !{!0}50!llvm.ident = !{!1}51 52!0 = !{i32 1, !"wchar_size", i32 4}53!1 = !{!"clang version 6.0.0  (llvm/trunk 312874)"}54!2 = !{!3, !3, i64 0}55!3 = !{!"any pointer", !4, i64 0}56!4 = !{!"omnipotent char", !5, i64 0}57!5 = !{!"Simple C/C++ TBAA"}58!6 = !{!7, !7, i64 0}59!7 = !{!"double", !4, i64 0}60 61; CHECK: Statistics {62; CHECK:     Operand trees forwarded: 263; CHECK:     Statements with forwarded operand trees: 164; CHECK: }65 66; CHECK-NEXT: After statements {67; CHECK-NEXT:     Stmt_for_body68; CHECK-NEXT:             ReadAccess :=       [Reduction Type: NONE] [Scalar: 0]69; CHECK-NEXT:                 { Stmt_for_body[i0] -> MemRef_A[0] };70; CHECK-NEXT:             ReadAccess :=       [Reduction Type: NONE] [Scalar: 0]71; CHECK-NEXT:                 { Stmt_for_body[i0] -> MemRef_A[1] };72; CHECK-NEXT:             MustWriteAccess :=  [Reduction Type: NONE] [Scalar: 1]73; CHECK-NEXT:                 { Stmt_for_body[i0] -> MemRef1__phi[] };74; CHECK-NEXT:             MustWriteAccess :=  [Reduction Type: NONE] [Scalar: 1]75; CHECK-NEXT:                 { Stmt_for_body[i0] -> MemRef2__phi[] };76; CHECK-NEXT:             Instructions {77; CHECK-NEXT:                   %.pre = load double, ptr %A, align 8, !tbaa !278; CHECK-NEXT:                   %.pre10 = load double, ptr %arrayidx6.phi.trans.insert, align 8, !tbaa !279; CHECK-NEXT:             }80; CHECK-NEXT:     Stmt_for_body381; CHECK-NEXT:             MustWriteAccess :=  [Reduction Type: NONE] [Scalar: 1]82; CHECK-NEXT:                 { Stmt_for_body3[i0, i1] -> MemRef1__phi[] };83; CHECK-NEXT:             ReadAccess :=       [Reduction Type: NONE] [Scalar: 1]84; CHECK-NEXT:                 { Stmt_for_body3[i0, i1] -> MemRef1__phi[] };85; CHECK-NEXT:            new: { Stmt_for_body3[i0, i1] -> MemRef_A[1 + i1] };86; CHECK-NEXT:             MustWriteAccess :=  [Reduction Type: NONE] [Scalar: 1]87; CHECK-NEXT:                 { Stmt_for_body3[i0, i1] -> MemRef2__phi[] };88; CHECK-NEXT:             ReadAccess :=       [Reduction Type: NONE] [Scalar: 1]89; CHECK-NEXT:                 { Stmt_for_body3[i0, i1] -> MemRef2__phi[] };90; CHECK-NEXT:            new: { Stmt_for_body3[i0, i1] -> MemRef_A[i1] };91; CHECK-NEXT:             ReadAccess :=       [Reduction Type: NONE] [Scalar: 0]92; CHECK-NEXT:                 { Stmt_for_body3[i0, i1] -> MemRef_A[2 + i1] };93; CHECK-NEXT:             MustWriteAccess :=  [Reduction Type: NONE] [Scalar: 0]94; CHECK-NEXT:                 { Stmt_for_body3[i0, i1] -> MemRef_B[1 + i1] };95; CHECK-NEXT:             Instructions {96; CHECK-NEXT:                   %0 = phi double [ %.pre10, %for.body ], [ %2, %for.body3 ]97; CHECK-NEXT:                   %1 = phi double [ %.pre, %for.body ], [ %0, %for.body3 ]98; CHECK-NEXT:                   %add = fadd double %1, %099; CHECK-NEXT:                   %2 = load double, ptr %arrayidx9, align 8, !tbaa !2100; CHECK-NEXT:                   %add10 = fadd double %add, %2101; CHECK-NEXT:                   %mul = fmul double %add10, 3.333300e-01102; CHECK-NEXT:                   store double %mul, ptr %arrayidx12, align 8, !tbaa !2103; CHECK-NEXT:                   %exitcond = icmp eq i64 %indvars.iv.next, 3104; CHECK-NEXT:             }105; CHECK-NEXT: }106