brintos

brintos / llvm-project-archived public Read only

0
0
Text · 7.4 KiB · 7916c50 Raw
192 lines · plain
1; RUN: opt -passes='print<scalar-evolution>' -disable-output %s 2>&1 | FileCheck %s2 3; CHECK-LABEL: @test14; CHECK:       %add.lcssa.wide = phi i64 [ %indvars.iv.next, %do.body ]5; CHECK-NEXT:  -->  {1,+,1}<nuw><nsw><%do.body> U: [1,2147483648) S: [1,2147483648)6 7define i64 @test1(i32 signext %n, ptr %A) {8entry:9  %0 = sext i32 %n to i6410  br label %do.body11 12do.body:                                          ; preds = %do.body, %entry13  %indvars.iv = phi i64 [ %indvars.iv.next, %do.body ], [ 0, %entry ]14  %arrayidx = getelementptr inbounds float, ptr %A, i64 %indvars.iv15  store float 1.000000e+00, ptr %arrayidx, align 416  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 117  %cmp = icmp slt i64 %indvars.iv.next, %018  br i1 %cmp, label %do.body, label %do.end19 20do.end:                                           ; preds = %do.body21  %add.lcssa.wide = phi i64 [ %indvars.iv.next, %do.body ]22  ret i64 %add.lcssa.wide23}24 25; CHECK-LABEL: @test226; CHECK:      %tmp24 = phi i64 [ %tmp14, %bb22 ], [ %tmp14, %bb13 ]27; CHECK-NEXT: -->  {1,+,1}<nuw><nsw><%bb13> U: [1,9223372036854775807) S: [1,9223372036854775807) Exits: (-2 + %arg)28 29define void @test2(i64 %arg, ptr noalias %arg1) {30bb:31  %tmp = icmp slt i64 0, %arg32  br i1 %tmp, label %bb7, label %bb4833 34bb7:                                              ; preds = %bb35  br label %bb836 37bb8:                                              ; preds = %bb44, %bb738  %tmp9 = phi i64 [ 0, %bb7 ], [ %tmp45, %bb44 ]39  %tmp10 = add nsw i64 %arg, -140  %tmp11 = icmp slt i64 1, %tmp1041  br i1 %tmp11, label %bb12, label %bb4342 43bb12:                                             ; preds = %bb844  br label %bb1345 46bb13:                                             ; preds = %bb39, %bb1247  %tmp14 = phi i64 [ 1, %bb12 ], [ %tmp40, %bb39 ]48  %tmp15 = icmp slt i64 0, %arg49  br i1 %tmp15, label %bb16, label %bb2350 51bb16:                                             ; preds = %bb1352  br label %bb1753 54bb17:                                             ; preds = %bb19, %bb1655  %tmp18 = phi i64 [ 0, %bb16 ], [ %tmp20, %bb19 ]56  br label %bb1957 58bb19:                                             ; preds = %bb1759  %tmp20 = add nuw nsw i64 %tmp18, 160  %tmp21 = icmp slt i64 %tmp20, %arg61  br i1 %tmp21, label %bb17, label %bb2262 63bb22:                                             ; preds = %bb1964  br label %bb2365 66bb23:                                             ; preds = %bb22, %bb1367  %tmp24 = phi i64 [ %tmp14, %bb22 ], [ %tmp14, %bb13 ]68  %tmp25 = icmp slt i64 0, %arg69  br i1 %tmp25, label %bb26, label %bb3770 71bb26:                                             ; preds = %bb2372  br label %bb2773 74bb27:                                             ; preds = %bb33, %bb2675  %tmp28 = phi i64 [ 0, %bb26 ], [ %tmp34, %bb33 ]76  %tmp29 = mul nsw i64 %tmp9, %arg77  %tmp30 = getelementptr inbounds i32, ptr %arg1, i64 %tmp2478  %tmp31 = getelementptr inbounds i32, ptr %tmp30, i64 %tmp2979  %tmp32 = load i32, ptr %tmp31, align 480  br label %bb3381 82bb33:                                             ; preds = %bb2783  %tmp34 = add nuw nsw i64 %tmp28, 184  %tmp35 = icmp slt i64 %tmp34, %arg85  br i1 %tmp35, label %bb27, label %bb3686 87bb36:                                             ; preds = %bb3388  br label %bb3789 90bb37:                                             ; preds = %bb36, %bb2391  %tmp38 = phi i64 [ %tmp24, %bb36 ], [ %tmp24, %bb23 ]92  br label %bb3993 94bb39:                                             ; preds = %bb3795  %tmp40 = add nuw nsw i64 %tmp38, 196  %tmp41 = icmp slt i64 %tmp40, %tmp1097  br i1 %tmp41, label %bb13, label %bb4298 99bb42:                                             ; preds = %bb39100  br label %bb43101 102bb43:                                             ; preds = %bb42, %bb8103  br label %bb44104 105bb44:                                             ; preds = %bb43106  %tmp45 = add nuw nsw i64 %tmp9, 1107  %tmp46 = icmp slt i64 %tmp45, %arg108  br i1 %tmp46, label %bb8, label %bb47109 110bb47:                                             ; preds = %bb44111  br label %bb48112 113bb48:                                             ; preds = %bb47, %bb114  ret void115}116 117; CHECK-LABEL: @test3118 119; CHECK:      %tmp14 = phi i64 [ %tmp40, %bb39 ], [ 1, %bb8 ]120; CHECK-NEXT: --> {1,+,1}<nuw><nsw><%bb13> U: [1,9223372036854775807) S: [1,9223372036854775807)121; CHECK-SAME:      Exits: (-2 + %arg)       LoopDispositions: { %bb13: Computable, %bb8: Variant, %bb17_a: Invariant, %bb27: Invariant }122; CHECK:      %tmp18 = phi i64 [ %tmp20, %bb17 ], [ 0, %bb13 ]123; CHECK-NEXT: -->  {0,+,1}<nuw><nsw><%bb17_a> U: [0,9223372036854775807) S: [0,9223372036854775807)124; CHECK-SAME:      Exits: (-1 + %arg)       LoopDispositions: { %bb17_a: Computable, %bb13: Variant, %bb8: Variant }125 126; CHECK:      %tmp24 = phi i64 [ %tmp14, %bb13 ], [ %tmp14, %bb17 ]127; CHECK-NEXT: -->  {1,+,1}<nuw><nsw><%bb13> U: [1,9223372036854775807) S: [1,9223372036854775807)128; CHECK-SAME:      Exits: (-2 + %arg)       LoopDispositions: { %bb13: Computable, %bb8: Variant, %bb17_a: Invariant, %bb27: Invariant }129; CHECK:       %tmp28 = phi i64 [ %tmp34, %bb27 ], [ 0, %bb23 ]130; CHECK-NEXT:  -->  {0,+,1}<nuw><nsw><%bb27> U: [0,9223372036854775807) S: [0,9223372036854775807)131; CHECK-SAME:       Exits: (-1 + %arg)      LoopDispositions: { %bb27: Computable, %bb13: Variant, %bb8: Variant }132 133; CHECK:      %tmp38 = phi i64 [ %tmp24, %bb23 ], [ %tmp24, %bb27 ]134; CHECK-NEXT: --> {1,+,1}<nuw><nsw><%bb13> U: [1,9223372036854775807) S: [1,9223372036854775807)135; CHECK-SAME:      Exits: (-2 + %arg)       LoopDispositions: { %bb13: Computable, %bb8: Variant, %bb17_a: Invariant, %bb27: Invariant }136 137define void @test3(i64 %arg, ptr %arg1) {138bb:139  %tmp = icmp slt i64 0, %arg140  br i1 %tmp, label %bb8, label %bb48141 142bb8:                                              ; preds = %bb, %bb44143  %tmp9 = phi i64 [ %tmp45, %bb44 ], [ 0, %bb ]144  %tmp10 = add nsw i64 %arg, -1145  %tmp11 = icmp slt i64 1, %tmp10146  br i1 %tmp11, label %bb13, label %bb44147 148bb13:                                             ; preds = %bb8, %bb39149  %tmp14 = phi i64 [ %tmp40, %bb39 ], [ 1, %bb8 ]150  %tmp15 = icmp slt i64 0, %arg151  br i1 %tmp15, label %bb17_a, label %bb23152 153bb17_a:154  %tmp18 = phi i64 [ %tmp20, %bb17 ], [ 0, %bb13 ]155  %tmp20 = add nuw nsw i64 %tmp18, 1156 157  br label %bb17158 159bb17:                                             ; preds = %bb13, %bb17160  %tmp21 = icmp slt i64 %tmp20, %arg161  br i1 %tmp21, label %bb17_a, label %bb23162 163bb23:                                             ; preds = %bb17, %bb13164  %tmp24 = phi i64 [ %tmp14, %bb13 ], [ %tmp14, %bb17 ]165  %tmp25 = icmp slt i64 0, %arg166  br i1 %tmp25, label %bb27, label %bb39167 168bb27:                                             ; preds = %bb23, %bb27169  %tmp28 = phi i64 [ %tmp34, %bb27 ], [ 0, %bb23 ]170  %tmp29 = mul nsw i64 %tmp9, %arg171  %tmp30 = getelementptr inbounds i32, ptr %arg1, i64 %tmp24172  %tmp31 = getelementptr inbounds i32, ptr %tmp30, i64 %tmp29173  %tmp32 = load i32, ptr %tmp31, align 4174  %tmp34 = add nuw nsw i64 %tmp28, 1175  %tmp35 = icmp slt i64 %tmp34, %arg176  br i1 %tmp35, label %bb27, label %bb39177 178bb39:                                             ; preds = %bb23, %bb27179  %tmp38 = phi i64 [ %tmp24, %bb23 ], [ %tmp24, %bb27 ]180  %tmp40 = add nuw nsw i64 %tmp38, 1181  %tmp41 = icmp slt i64 %tmp40, %tmp10182  br i1 %tmp41, label %bb13, label %bb44183 184bb44:                                             ; preds = %bb8, %bb39185  %tmp45 = add nuw nsw i64 %tmp9, 1186  %tmp46 = icmp slt i64 %tmp45, %arg187  br i1 %tmp46, label %bb8, label %bb48188 189bb48:                                             ; preds = %bb44, %bb190  ret void191}192