brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.9 KiB · 456edb0 Raw
140 lines · plain
1; RUN: opt %loadNPMPolly -pass-remarks-analysis=polly-scops '-passes=polly-custom<scops>' -polly-print-scops -polly-invariant-load-hoisting=true -disable-output < %s 2>&1 | FileCheck %s2;3; This test case has an SCEVSMax expression with a very high arity. The4; piecewise affine function we would create for it would have a huge amount of5; conjuncts, thus it would take a lot of time creating and handling it.6;7; This ensures we bail out for really complex expressions:8;9; CHECK: Low complexity assumption: {  : false }10;11target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"12 13; Function Attrs: norecurse nounwind14define i32 @foo(ptr nocapture readonly %src1, ptr nocapture readonly %src2, ptr nocapture %score, ptr nocapture %max, i32 %n) {15entry:16  %cmp33 = icmp sgt i32 %n, 017  br i1 %cmp33, label %for.body.preheader, label %for.body7.preheader18 19for.body.preheader:                               ; preds = %entry20  br label %for.body21 22for.body7.preheader.loopexit:                     ; preds = %for.body23  br label %for.body7.preheader24 25for.body7.preheader:                              ; preds = %for.body7.preheader.loopexit, %entry26  %0 = load i32, ptr %score, align 4, !tbaa !327  %cmp9 = icmp sgt i32 %0, -128  %.scoreMax.0 = select i1 %cmp9, i32 %0, i32 -129  %arrayidx8.1 = getelementptr inbounds i32, ptr %score, i32 130  %1 = load i32, ptr %arrayidx8.1, align 4, !tbaa !331  %cmp9.1 = icmp sgt i32 %1, %.scoreMax.032  %.scoreMax.0.1 = select i1 %cmp9.1, i32 %1, i32 %.scoreMax.033  %arrayidx8.2 = getelementptr inbounds i32, ptr %score, i32 234  %2 = load i32, ptr %arrayidx8.2, align 4, !tbaa !335  %cmp9.2 = icmp sgt i32 %2, %.scoreMax.0.136  %.scoreMax.0.2 = select i1 %cmp9.2, i32 %2, i32 %.scoreMax.0.137  %arrayidx8.3 = getelementptr inbounds i32, ptr %score, i32 338  %3 = load i32, ptr %arrayidx8.3, align 4, !tbaa !339  %cmp9.3 = icmp sgt i32 %3, %.scoreMax.0.240  %.scoreMax.0.3 = select i1 %cmp9.3, i32 %3, i32 %.scoreMax.0.241  %arrayidx8.4 = getelementptr inbounds i32, ptr %score, i32 442  %4 = load i32, ptr %arrayidx8.4, align 4, !tbaa !343  %cmp9.4 = icmp sgt i32 %4, %.scoreMax.0.344  %.scoreMax.0.4 = select i1 %cmp9.4, i32 %4, i32 %.scoreMax.0.345  %arrayidx8.5 = getelementptr inbounds i32, ptr %score, i32 546  %5 = load i32, ptr %arrayidx8.5, align 4, !tbaa !347  %cmp9.5 = icmp sgt i32 %5, %.scoreMax.0.448  %.scoreMax.0.5 = select i1 %cmp9.5, i32 %5, i32 %.scoreMax.0.449  %arrayidx8.6 = getelementptr inbounds i32, ptr %score, i32 650  %6 = load i32, ptr %arrayidx8.6, align 4, !tbaa !351  %cmp9.6 = icmp sgt i32 %6, %.scoreMax.0.552  %.scoreMax.0.6 = select i1 %cmp9.6, i32 %6, i32 %.scoreMax.0.553  %arrayidx8.7 = getelementptr inbounds i32, ptr %score, i32 754  %7 = load i32, ptr %arrayidx8.7, align 4, !tbaa !355  %cmp9.7 = icmp sgt i32 %7, %.scoreMax.0.656  %.scoreMax.0.7 = select i1 %cmp9.7, i32 %7, i32 %.scoreMax.0.657  %arrayidx8.8 = getelementptr inbounds i32, ptr %score, i32 858  %8 = load i32, ptr %arrayidx8.8, align 4, !tbaa !359  %cmp9.8 = icmp sgt i32 %8, %.scoreMax.0.760  %.scoreMax.0.8 = select i1 %cmp9.8, i32 %8, i32 %.scoreMax.0.761  %arrayidx8.9 = getelementptr inbounds i32, ptr %score, i32 962  %9 = load i32, ptr %arrayidx8.9, align 4, !tbaa !363  %cmp9.9 = icmp sgt i32 %9, %.scoreMax.0.864  %.scoreMax.0.9 = select i1 %cmp9.9, i32 %9, i32 %.scoreMax.0.865  %arrayidx8.10 = getelementptr inbounds i32, ptr %score, i32 1066  %10 = load i32, ptr %arrayidx8.10, align 4, !tbaa !367  %cmp9.10 = icmp sgt i32 %10, %.scoreMax.0.968  %.scoreMax.0.10 = select i1 %cmp9.10, i32 %10, i32 %.scoreMax.0.969  %arrayidx8.11 = getelementptr inbounds i32, ptr %score, i32 1170  %11 = load i32, ptr %arrayidx8.11, align 4, !tbaa !371  %cmp9.11 = icmp sgt i32 %11, %.scoreMax.0.1072  %.scoreMax.0.11 = select i1 %cmp9.11, i32 %11, i32 %.scoreMax.0.1073  %arrayidx8.12 = getelementptr inbounds i32, ptr %score, i32 1274  %12 = load i32, ptr %arrayidx8.12, align 4, !tbaa !375  %cmp9.12 = icmp sgt i32 %12, %.scoreMax.0.1176  %.scoreMax.0.12 = select i1 %cmp9.12, i32 %12, i32 %.scoreMax.0.1177  %arrayidx8.13 = getelementptr inbounds i32, ptr %score, i32 1378  %13 = load i32, ptr %arrayidx8.13, align 4, !tbaa !379  %cmp9.13 = icmp sgt i32 %13, %.scoreMax.0.1280  %.scoreMax.0.13 = select i1 %cmp9.13, i32 %13, i32 %.scoreMax.0.1281  %arrayidx8.14 = getelementptr inbounds i32, ptr %score, i32 1482  %14 = load i32, ptr %arrayidx8.14, align 4, !tbaa !383  %cmp9.14 = icmp sgt i32 %14, %.scoreMax.0.1384  %.scoreMax.0.14 = select i1 %cmp9.14, i32 %14, i32 %.scoreMax.0.1385  %arrayidx8.15 = getelementptr inbounds i32, ptr %score, i32 1586  %15 = load i32, ptr %arrayidx8.15, align 4, !tbaa !387  %cmp9.15 = icmp sgt i32 %15, %.scoreMax.0.1488  %.scoreMax.0.15 = select i1 %cmp9.15, i32 %15, i32 %.scoreMax.0.1489  %arrayidx8.16 = getelementptr inbounds i32, ptr %score, i32 1690  %16 = load i32, ptr %arrayidx8.16, align 4, !tbaa !391  %cmp9.16 = icmp sgt i32 %16, %.scoreMax.0.1592  %.scoreMax.0.16 = select i1 %cmp9.16, i32 %16, i32 %.scoreMax.0.1593  %arrayidx8.17 = getelementptr inbounds i32, ptr %score, i32 1794  %17 = load i32, ptr %arrayidx8.17, align 4, !tbaa !395  %cmp9.17 = icmp sgt i32 %17, %.scoreMax.0.1696  %.scoreMax.0.17 = select i1 %cmp9.17, i32 %17, i32 %.scoreMax.0.1697  %arrayidx8.18 = getelementptr inbounds i32, ptr %score, i32 1898  %18 = load i32, ptr %arrayidx8.18, align 4, !tbaa !399  %cmp9.18 = icmp sgt i32 %18, %.scoreMax.0.17100  %.scoreMax.0.18 = select i1 %cmp9.18, i32 %18, i32 %.scoreMax.0.17101  %arrayidx8.19 = getelementptr inbounds i32, ptr %score, i32 19102  %19 = load i32, ptr %arrayidx8.19, align 4, !tbaa !3103  %cmp9.19 = icmp sgt i32 %19, %.scoreMax.0.18104  %.scoreMax.0.19 = select i1 %cmp9.19, i32 %19, i32 %.scoreMax.0.18105  %cmp14 = icmp eq i32 %.scoreMax.0.19, -1106  br i1 %cmp14, label %cleanup, label %if.end16107 108for.body:                                         ; preds = %for.body.preheader, %for.body109  %i.034 = phi i32 [ %inc, %for.body ], [ 0, %for.body.preheader ]110  %arrayidx = getelementptr inbounds i32, ptr %src1, i32 %i.034111  %20 = load i32, ptr %arrayidx, align 4, !tbaa !3112  %arrayidx1 = getelementptr inbounds i32, ptr %src2, i32 %i.034113  %21 = load i32, ptr %arrayidx1, align 4, !tbaa !3114  %add = add nsw i32 %21, %20115  %arrayidx2 = getelementptr inbounds i32, ptr %score, i32 %i.034116  store i32 %add, ptr %arrayidx2, align 4, !tbaa !3117  %inc = add nuw nsw i32 %i.034, 1118  %exitcond = icmp eq i32 %inc, %n119  br i1 %exitcond, label %for.body7.preheader.loopexit, label %for.body120 121if.end16:                                         ; preds = %for.body7.preheader122  store i32 %.scoreMax.0.19, ptr %max, align 4, !tbaa !3123  br label %cleanup124 125cleanup:                                          ; preds = %for.body7.preheader, %if.end16126  %retval.0 = phi i32 [ 1, %if.end16 ], [ 0, %for.body7.preheader ]127  ret i32 %retval.0128}129 130!llvm.module.flags = !{!0, !1}131!llvm.ident = !{!2}132 133!0 = !{i32 1, !"wchar_size", i32 4}134!1 = !{i32 1, !"min_enum_size", i32 4}135!2 = !{!"clang version 3.9.0"}136!3 = !{!4, !4, i64 0}137!4 = !{!"int", !5, i64 0}138!5 = !{!"omnipotent char", !6, i64 0}139!6 = !{!"Simple C/C++ TBAA"}140