brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.5 KiB · 9164959 Raw
145 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; CHECK: Low complexity assumption: {  : false }4;5; The IR is a modified version of the following C:6;7;    void f(int *A) {8;    Begin:9;      if (A[0] == 1 | A[1] == 1 | A[2] == 1 | A[3] == 1 | A[4] == 1 | A[5] == 1 |10;          A[6] == 1 | A[7] == 1 | A[8] == 1 | A[9] == 1 | A[10] == 1 | A[11] == 1 |11;          A[12] == 1 | A[13] == 1 | A[14] == 1 | A[15] == 1 | A[16] == 1 |12;          A[17] == 1 | A[18] == 1 | A[19] == 1 | A[20] == 1 | A[21] == 1 |13;          A[22] == 1 | A[23]) {14;        A[-1]++;15;      } else {16;        A[-1]--;17;      }18;    End:19;      return;20;    }21;22target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"23 24define void @f(ptr %A) {25entry:26  br label %Begin27 28Begin:                                            ; preds = %entry29  %tmp = load i32, ptr %A, align 430  %cmp = icmp eq i32 %tmp, 131  %arrayidx1 = getelementptr inbounds i32, ptr %A, i64 132  %tmp1 = load i32, ptr %arrayidx1, align 433  %cmp2 = icmp eq i32 %tmp1, 134  %or = or i1 %cmp, %cmp235  %arrayidx4 = getelementptr inbounds i32, ptr %A, i64 236  %tmp2 = load i32, ptr %arrayidx4, align 437  %cmp5 = icmp eq i32 %tmp2, 138  %or7 = or i1 %or, %cmp539  %arrayidx8 = getelementptr inbounds i32, ptr %A, i64 340  %tmp3 = load i32, ptr %arrayidx8, align 441  %cmp9 = icmp eq i32 %tmp3, 142  %or11 = or i1 %or7, %cmp943  %arrayidx12 = getelementptr inbounds i32, ptr %A, i64 444  %tmp4 = load i32, ptr %arrayidx12, align 445  %cmp13 = icmp eq i32 %tmp4, 146  %or15 = or i1 %or11, %cmp1347  %arrayidx16 = getelementptr inbounds i32, ptr %A, i64 548  %tmp5 = load i32, ptr %arrayidx16, align 449  %cmp17 = icmp eq i32 %tmp5, 150  %or19 = or i1 %or15, %cmp1751  %arrayidx20 = getelementptr inbounds i32, ptr %A, i64 652  %tmp6 = load i32, ptr %arrayidx20, align 453  %cmp21 = icmp eq i32 %tmp6, 154  %or23 = or i1 %or19, %cmp2155  %arrayidx24 = getelementptr inbounds i32, ptr %A, i64 756  %tmp7 = load i32, ptr %arrayidx24, align 457  %cmp25 = icmp eq i32 %tmp7, 158  %or27 = or i1 %or23, %cmp2559  %arrayidx28 = getelementptr inbounds i32, ptr %A, i64 860  %tmp8 = load i32, ptr %arrayidx28, align 461  %cmp29 = icmp eq i32 %tmp8, 162  %or31 = or i1 %or27, %cmp2963  %arrayidx32 = getelementptr inbounds i32, ptr %A, i64 964  %tmp9 = load i32, ptr %arrayidx32, align 465  %cmp33 = icmp eq i32 %tmp9, 166  %or35 = or i1 %or31, %cmp3367  %arrayidx36 = getelementptr inbounds i32, ptr %A, i64 1068  %tmp10 = load i32, ptr %arrayidx36, align 469  %cmp37 = icmp eq i32 %tmp10, 170  %or39 = or i1 %or35, %cmp3771  %arrayidx40 = getelementptr inbounds i32, ptr %A, i64 1172  %tmp11 = load i32, ptr %arrayidx40, align 473  %cmp41 = icmp eq i32 %tmp11, 174  %or43 = or i1 %or39, %cmp4175  %arrayidx44 = getelementptr inbounds i32, ptr %A, i64 1276  %tmp12 = load i32, ptr %arrayidx44, align 477  %cmp45 = icmp eq i32 %tmp12, 178  %or47 = or i1 %or43, %cmp4579  %arrayidx48 = getelementptr inbounds i32, ptr %A, i64 1380  %tmp13 = load i32, ptr %arrayidx48, align 481  %cmp49 = icmp eq i32 %tmp13, 182  %or51 = or i1 %or47, %cmp4983  %arrayidx52 = getelementptr inbounds i32, ptr %A, i64 1484  %tmp14 = load i32, ptr %arrayidx52, align 485  %cmp53 = icmp eq i32 %tmp14, 186  %or55 = or i1 %or51, %cmp5387  %arrayidx56 = getelementptr inbounds i32, ptr %A, i64 1588  %tmp15 = load i32, ptr %arrayidx56, align 489  %cmp57 = icmp eq i32 %tmp15, 190  %or59 = or i1 %or55, %cmp5791  %arrayidx60 = getelementptr inbounds i32, ptr %A, i64 1692  %tmp16 = load i32, ptr %arrayidx60, align 493  %cmp61 = icmp eq i32 %tmp16, 194  %or63 = or i1 %or59, %cmp6195  %arrayidx64 = getelementptr inbounds i32, ptr %A, i64 1796  %tmp17 = load i32, ptr %arrayidx64, align 497  %cmp65 = icmp eq i32 %tmp17, 198  %or67 = or i1 %or63, %cmp6599  %arrayidx68 = getelementptr inbounds i32, ptr %A, i64 18100  %tmp18 = load i32, ptr %arrayidx68, align 4101  %cmp69 = icmp eq i32 %tmp18, 1102  %or71 = or i1 %or67, %cmp69103  %arrayidx72 = getelementptr inbounds i32, ptr %A, i64 19104  %tmp19 = load i32, ptr %arrayidx72, align 4105  %cmp73 = icmp eq i32 %tmp19, 1106  %or75 = or i1 %or71, %cmp73107  %arrayidx76 = getelementptr inbounds i32, ptr %A, i64 20108  %tmp20 = load i32, ptr %arrayidx76, align 4109  %cmp77 = icmp eq i32 %tmp20, 1110  %or79 = or i1 %or75, %cmp77111  %arrayidx80 = getelementptr inbounds i32, ptr %A, i64 21112  %tmp21 = load i32, ptr %arrayidx80, align 4113  %cmp81 = icmp eq i32 %tmp21, 1114  %or83 = or i1 %or79, %cmp81115  %arrayidx84 = getelementptr inbounds i32, ptr %A, i64 22116  %tmp22 = load i32, ptr %arrayidx84, align 4117  %cmp85 = icmp eq i32 %tmp22, 1118  %or87 = or i1 %or83, %cmp85119  %arrayidx88 = getelementptr inbounds i32, ptr %A, i64 23120  %tmp23 = load i32, ptr %arrayidx88, align 4121  %cmp88 = icmp eq i32 %tmp23, 1122  %or89 = or i1 %or87, %cmp88123  br i1 %or89, label %if.else, label %if.then124 125if.then:                                          ; preds = %Begin126  %arrayidx90 = getelementptr inbounds i32, ptr %A, i64 -1127  %tmp24 = load i32, ptr %arrayidx90, align 4128  %inc = add nsw i32 %tmp24, 1129  store i32 %inc, ptr %arrayidx90, align 4130  br label %if.end131 132if.else:                                          ; preds = %Begin133  %arrayidx91 = getelementptr inbounds i32, ptr %A, i64 -1134  %tmp25 = load i32, ptr %arrayidx91, align 4135  %dec = add nsw i32 %tmp25, -1136  store i32 %dec, ptr %arrayidx91, align 4137  br label %if.end138 139if.end:                                           ; preds = %if.else, %if.then140  br label %End141 142End:                                              ; preds = %if.end143  ret void144}145