brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.4 KiB · d6ff492 Raw
94 lines · plain
1; RUN: opt < %s -loop-reduce -S | FileCheck %s2 3target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128-ni:1"4 5; Check this completes sensibly. The sequence here is quick for scev to6; calculate, but creates a very large tree if recursed into, the same node7; being processed many times. I will also naturally have a setupcost of8; 0xffffffff, which LSR will treat as invalid.9; CHECK-LABEL: func10; CHECK: load i32, ptr %gep11 12define i32 @func(ptr %in) {13entry:14  %load = load i32, ptr %in, align 415  %a1 = add i32 %load, 116  %m1 = mul i32 %a1, %load17  %a2 = add i32 %m1, 118  %m2 = mul i32 %a2, %m119  %a3 = add i32 %m2, 120  %m3 = mul i32 %a3, %m221  %a4 = add i32 %m3, 122  %m4 = mul i32 %a4, %m323  %a5 = add i32 %m4, 124  %m5 = mul i32 %a5, %m425  %a6 = add i32 %m5, 126  %m6 = mul i32 %a6, %m527  %a7 = add i32 %m6, 128  %m7 = mul i32 %a7, %m629  %a8 = add i32 %m7, 130  %m8 = mul i32 %a8, %m731  %a9 = add i32 %m8, 132  %m9 = mul i32 %a9, %m833  %a10 = add i32 %m9, 134  %m10 = mul i32 %a10, %m935  %a11 = add i32 %m10, 136  %m11 = mul i32 %a11, %m1037  %a12 = add i32 %m11, 138  %m12 = mul i32 %a12, %m1139  %a13 = add i32 %m12, 140  %m13 = mul i32 %a13, %m1241  %a14 = add i32 %m13, 142  %m14 = mul i32 %a14, %m1343  %a15 = add i32 %m14, 144  %m15 = mul i32 %a15, %m1445  %a16 = add i32 %m15, 146  %m16 = mul i32 %a16, %m1547  %a17 = add i32 %m16, 148  %m17 = mul i32 %a17, %m1649  %a18 = add i32 %m17, 150  %m18 = mul i32 %a18, %m1751  %a19 = add i32 %m18, 152  %m19 = mul i32 %a19, %m1853  %a20 = add i32 %m19, 154  %m20 = mul i32 %a20, %m1955  %a21 = add i32 %m20, 156  %m21 = mul i32 %a21, %m2057  %a22 = add i32 %m21, 158  %m22 = mul i32 %a22, %m2159  %a23 = add i32 %m22, 160  %m23 = mul i32 %a23, %m2261  %a24 = add i32 %m23, 162  %m24 = mul i32 %a24, %m2363  %a25 = add i32 %m24, 164  %m25 = mul i32 %a25, %m2465  %a26 = add i32 %m25, 166  %m26 = mul i32 %a26, %m2567  %a27 = add i32 %m26, 168  %m27 = mul i32 %a27, %m2669  %a28 = add i32 %m27, 170  %m28 = mul i32 %a28, %m2771  %a29 = add i32 %m28, 172  %m29 = mul i32 %a29, %m2873  %a30 = add i32 %m29, 174  %m30 = mul i32 %a30, %m2975  %a31 = add i32 %m30, 176  %m31 = mul i32 %a31, %m3077  br label %loop78 79loop:80  %lp = phi i32 [ %m31, %entry ], [ %linc, %loop ]81  %0 = sext i32 %lp to i6482  %gep = getelementptr inbounds i32, ptr %in, i64 %083  %loopload = load i32, ptr %gep, align 484  store i32 0, ptr %gep, align 485  %linc = add i32 %lp, 186  %lcmp = icmp eq i32 %linc, 10087  br i1 %lcmp, label %exit, label %loop88 89exit:90  %ll = phi i32 [ %loopload, %loop ]91  ret i32 %ll92}93 94