326 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py2; RUN: opt < %s -disable-output "-passes=print<scalar-evolution>" 2>&1 | FileCheck %s3 4; SCEV would take a long time to compute SCEV expressions for this IR. If SCEV5; finishes in < 1 second then the bug is fixed.6 7target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"8target triple = "x86_64--linux-gnu"9 10define void @smax(i32 %tmp3) {11; CHECK-LABEL: 'smax'12; CHECK-NEXT: Classifying expressions for: @smax13; CHECK-NEXT: %tmp5 = phi i64 [ %tmp62, %bb61 ], [ 0, %entry ]14; CHECK-NEXT: --> {0,+,1}<nuw><nsw><%bb4> U: [0,-9223372036854775808) S: [0,-9223372036854775808) Exits: <<Unknown>> LoopDispositions: { %bb4: Computable, %bb53: Invariant }15; CHECK-NEXT: %tmp6 = trunc i64 %tmp5 to i3216; CHECK-NEXT: --> {0,+,1}<%bb4> U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %bb4: Computable, %bb53: Invariant }17; CHECK-NEXT: %tmp7 = shl nsw i32 %tmp6, 818; CHECK-NEXT: --> {0,+,256}<%bb4> U: [0,-255) S: [-2147483648,2147483393) Exits: <<Unknown>> LoopDispositions: { %bb4: Computable, %bb53: Invariant }19; CHECK-NEXT: %tmp8 = sub nsw i32 %tmp3, %tmp720; CHECK-NEXT: --> {%tmp3,+,-256}<%bb4> U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %bb4: Computable, %bb53: Invariant }21; CHECK-NEXT: %tmp10 = select i1 %tmp9, i32 %tmp8, i32 25622; CHECK-NEXT: --> (256 smin {%tmp3,+,-256}<%bb4>) U: [-2147483648,257) S: [-2147483648,257) Exits: <<Unknown>> LoopDispositions: { %bb4: Computable, %bb53: Invariant }23; CHECK-NEXT: %tmp11 = add nsw i32 %tmp10, 124; CHECK-NEXT: --> (1 + (256 smin {%tmp3,+,-256}<%bb4>))<nsw> U: [-2147483647,258) S: [-2147483647,258) Exits: <<Unknown>> LoopDispositions: { %bb4: Computable, %bb53: Invariant }25; CHECK-NEXT: %tmp13 = select i1 %tmp12, i32 %tmp11, i32 %tmp826; CHECK-NEXT: --> ((1 + (256 smin {%tmp3,+,-256}<%bb4>))<nsw> smin {%tmp3,+,-256}<%bb4>) U: [-2147483648,258) S: [-2147483648,258) Exits: <<Unknown>> LoopDispositions: { %bb4: Computable, %bb53: Invariant }27; CHECK-NEXT: %tmp15 = select i1 %tmp14, i32 %tmp13, i32 25628; CHECK-NEXT: --> (256 smin (1 + (256 smin {%tmp3,+,-256}<%bb4>))<nsw> smin {%tmp3,+,-256}<%bb4>) U: [-2147483648,257) S: [-2147483648,257) Exits: <<Unknown>> LoopDispositions: { %bb4: Computable, %bb53: Invariant }29; CHECK-NEXT: %tmp16 = add nsw i32 %tmp15, 130; CHECK-NEXT: --> (1 + (256 smin (1 + (256 smin {%tmp3,+,-256}<%bb4>))<nsw> smin {%tmp3,+,-256}<%bb4>))<nsw> U: [-2147483647,258) S: [-2147483647,258) Exits: <<Unknown>> LoopDispositions: { %bb4: Computable, %bb53: Invariant }31; CHECK-NEXT: %tmp18 = select i1 %tmp17, i32 %tmp16, i32 %tmp832; CHECK-NEXT: --> ((1 + (256 smin (1 + (256 smin {%tmp3,+,-256}<%bb4>))<nsw> smin {%tmp3,+,-256}<%bb4>))<nsw> smin {%tmp3,+,-256}<%bb4>) U: [-2147483648,258) S: [-2147483648,258) Exits: <<Unknown>> LoopDispositions: { %bb4: Computable, %bb53: Invariant }33; CHECK-NEXT: %tmp20 = select i1 %tmp19, i32 %tmp18, i32 25634; CHECK-NEXT: --> (256 smin (1 + (256 smin (1 + (256 smin {%tmp3,+,-256}<%bb4>))<nsw> smin {%tmp3,+,-256}<%bb4>))<nsw> smin {%tmp3,+,-256}<%bb4>) U: [-2147483648,257) S: [-2147483648,257) Exits: <<Unknown>> LoopDispositions: { %bb4: Computable, %bb53: Invariant }35; CHECK-NEXT: %tmp21 = add nsw i32 %tmp20, 136; CHECK-NEXT: --> (1 + (256 smin (1 + (256 smin (1 + (256 smin {%tmp3,+,-256}<%bb4>))<nsw> smin {%tmp3,+,-256}<%bb4>))<nsw> smin {%tmp3,+,-256}<%bb4>))<nsw> U: [-2147483647,258) S: [-2147483647,258) Exits: <<Unknown>> LoopDispositions: { %bb4: Computable, %bb53: Invariant }37; CHECK-NEXT: %tmp23 = select i1 %tmp22, i32 %tmp21, i32 %tmp838; CHECK-NEXT: --> ((1 + (256 smin (1 + (256 smin (1 + (256 smin {%tmp3,+,-256}<%bb4>))<nsw> smin {%tmp3,+,-256}<%bb4>))<nsw> smin {%tmp3,+,-256}<%bb4>))<nsw> smin {%tmp3,+,-256}<%bb4>) U: [-2147483648,258) S: [-2147483648,258) Exits: <<Unknown>> LoopDispositions: { %bb4: Computable, %bb53: Invariant }39; CHECK-NEXT: %tmp25 = select i1 %tmp24, i32 %tmp23, i32 25640; CHECK-NEXT: --> (256 smin (1 + (256 smin (1 + (256 smin (1 + (256 smin {%tmp3,+,-256}<%bb4>))<nsw> smin {%tmp3,+,-256}<%bb4>))<nsw> smin {%tmp3,+,-256}<%bb4>))<nsw> smin {%tmp3,+,-256}<%bb4>) U: [-2147483648,257) S: [-2147483648,257) Exits: <<Unknown>> LoopDispositions: { %bb4: Computable, %bb53: Invariant }41; CHECK-NEXT: %tmp26 = add nsw i32 %tmp25, 142; CHECK-NEXT: --> (1 + (256 smin (1 + (256 smin (1 + (256 smin (1 + (256 smin {%tmp3,+,-256}<%bb4>))<nsw> smin {%tmp3,+,-256}<%bb4>))<nsw> smin {%tmp3,+,-256}<%bb4>))<nsw> smin {%tmp3,+,-256}<%bb4>))<nsw> U: [-2147483647,258) S: [-2147483647,258) Exits: <<Unknown>> LoopDispositions: { %bb4: Computable, %bb53: Invariant }43; CHECK-NEXT: %tmp28 = select i1 %tmp27, i32 %tmp26, i32 %tmp844; CHECK-NEXT: --> ((1 + (256 smin (1 + (256 smin (1 + (256 smin (1 + (256 smin {%tmp3,+,-256}<%bb4>))<nsw> smin {%tmp3,+,-256}<%bb4>))<nsw> smin {%tmp3,+,-256}<%bb4>))<nsw> smin {%tmp3,+,-256}<%bb4>))<nsw> smin {%tmp3,+,-256}<%bb4>) U: [-2147483648,258) S: [-2147483648,258) Exits: <<Unknown>> LoopDispositions: { %bb4: Computable, %bb53: Invariant }45; CHECK-NEXT: %tmp30 = select i1 %tmp29, i32 %tmp28, i32 25646; CHECK-NEXT: --> (256 smin (1 + (256 smin (1 + (256 smin (1 + (256 smin (1 + (256 smin {%tmp3,+,-256}<%bb4>))<nsw> smin {%tmp3,+,-256}<%bb4>))<nsw> smin {%tmp3,+,-256}<%bb4>))<nsw> smin {%tmp3,+,-256}<%bb4>))<nsw> smin {%tmp3,+,-256}<%bb4>) U: [-2147483648,257) S: [-2147483648,257) Exits: <<Unknown>> LoopDispositions: { %bb4: Computable, %bb53: Invariant }47; CHECK-NEXT: %tmp31 = add nsw i32 %tmp30, 148; CHECK-NEXT: --> (1 + (256 smin (1 + (256 smin (1 + (256 smin (1 + (256 smin (1 + (256 smin {%tmp3,+,-256}<%bb4>))<nsw> smin {%tmp3,+,-256}<%bb4>))<nsw> smin {%tmp3,+,-256}<%bb4>))<nsw> smin {%tmp3,+,-256}<%bb4>))<nsw> smin {%tmp3,+,-256}<%bb4>))<nsw> U: [-2147483647,258) S: [-2147483647,258) Exits: <<Unknown>> LoopDispositions: { %bb4: Computable, %bb53: Invariant }49; CHECK-NEXT: %tmp33 = select i1 %tmp32, i32 %tmp31, i32 %tmp850; CHECK-NEXT: --> ((1 + (256 smin (1 + (256 smin (1 + (256 smin (1 + (256 smin (1 + (256 smin {%tmp3,+,-256}<%bb4>))<nsw> smin {%tmp3,+,-256}<%bb4>))<nsw> smin {%tmp3,+,-256}<%bb4>))<nsw> smin {%tmp3,+,-256}<%bb4>))<nsw> smin {%tmp3,+,-256}<%bb4>))<nsw> smin {%tmp3,+,-256}<%bb4>) U: [-2147483648,258) S: [-2147483648,258) Exits: <<Unknown>> LoopDispositions: { %bb4: Computable, %bb53: Invariant }51; CHECK-NEXT: %tmp35 = select i1 %tmp34, i32 %tmp33, i32 25652; CHECK-NEXT: --> (256 smin (1 + (256 smin (1 + (256 smin (1 + (256 smin (1 + (256 smin (1 + (256 smin {%tmp3,+,-256}<%bb4>))<nsw> smin {%tmp3,+,-256}<%bb4>))<nsw> smin {%tmp3,+,-256}<%bb4>))<nsw> smin {%tmp3,+,-256}<%bb4>))<nsw> smin {%tmp3,+,-256}<%bb4>))<nsw> smin {%tmp3,+,-256}<%bb4>) U: [-2147483648,257) S: [-2147483648,257) Exits: <<Unknown>> LoopDispositions: { %bb4: Computable, %bb53: Invariant }53; CHECK-NEXT: %tmp36 = add nsw i32 %tmp35, 154; CHECK-NEXT: --> (1 + (256 smin (1 + (256 smin (1 + (256 smin (1 + (256 smin (1 + (256 smin (1 + (256 smin {%tmp3,+,-256}<%bb4>))<nsw> smin {%tmp3,+,-256}<%bb4>))<nsw> smin {%tmp3,+,-256}<%bb4>))<nsw> smin {%tmp3,+,-256}<%bb4>))<nsw> smin {%tmp3,+,-256}<%bb4>))<nsw> smin {%tmp3,+,-256}<%bb4>))<nsw> U: [-2147483647,258) S: [-2147483647,258) Exits: <<Unknown>> LoopDispositions: { %bb4: Computable, %bb53: Invariant }55; CHECK-NEXT: %tmp38 = select i1 %tmp37, i32 %tmp36, i32 %tmp856; CHECK-NEXT: --> ((1 + (256 smin (1 + (256 smin (1 + (256 smin (1 + (256 smin (1 + (256 smin (1 + (256 smin {%tmp3,+,-256}<%bb4>))<nsw> smin {%tmp3,+,-256}<%bb4>))<nsw> smin {%tmp3,+,-256}<%bb4>))<nsw> smin {%tmp3,+,-256}<%bb4>))<nsw> smin {%tmp3,+,-256}<%bb4>))<nsw> smin {%tmp3,+,-256}<%bb4>))<nsw> smin {%tmp3,+,-256}<%bb4>) U: [-2147483648,258) S: [-2147483648,258) Exits: <<Unknown>> LoopDispositions: { %bb4: Computable, %bb53: Invariant }57; CHECK-NEXT: %tmp40 = select i1 %tmp39, i32 %tmp38, i32 25658; CHECK-NEXT: --> (256 smin (1 + (256 smin (1 + (256 smin (1 + (256 smin (1 + (256 smin (1 + (256 smin (1 + (256 smin {%tmp3,+,-256}<%bb4>))<nsw> smin {%tmp3,+,-256}<%bb4>))<nsw> smin {%tmp3,+,-256}<%bb4>))<nsw> smin {%tmp3,+,-256}<%bb4>))<nsw> smin {%tmp3,+,-256}<%bb4>))<nsw> smin {%tmp3,+,-256}<%bb4>))<nsw> smin {%tmp3,+,-256}<%bb4>) U: [-2147483648,257) S: [-2147483648,257) Exits: <<Unknown>> LoopDispositions: { %bb4: Computable, %bb53: Invariant }59; CHECK-NEXT: %tmp41 = add nsw i32 %tmp40, 160; CHECK-NEXT: --> (1 + (256 smin (1 + (256 smin (1 + (256 smin (1 + (256 smin (1 + (256 smin (1 + (256 smin (1 + (256 smin {%tmp3,+,-256}<%bb4>))<nsw> smin {%tmp3,+,-256}<%bb4>))<nsw> smin {%tmp3,+,-256}<%bb4>))<nsw> smin {%tmp3,+,-256}<%bb4>))<nsw> smin {%tmp3,+,-256}<%bb4>))<nsw> smin {%tmp3,+,-256}<%bb4>))<nsw> smin {%tmp3,+,-256}<%bb4>))<nsw> U: [-2147483647,258) S: [-2147483647,258) Exits: <<Unknown>> LoopDispositions: { %bb4: Computable, %bb53: Invariant }61; CHECK-NEXT: %tmp43 = select i1 %tmp42, i32 %tmp41, i32 %tmp862; CHECK-NEXT: --> ((1 + (256 smin (1 + (256 smin (1 + (256 smin (1 + (256 smin (1 + (256 smin (1 + (256 smin (1 + (256 smin {%tmp3,+,-256}<%bb4>))<nsw> smin {%tmp3,+,-256}<%bb4>))<nsw> smin {%tmp3,+,-256}<%bb4>))<nsw> smin {%tmp3,+,-256}<%bb4>))<nsw> smin {%tmp3,+,-256}<%bb4>))<nsw> smin {%tmp3,+,-256}<%bb4>))<nsw> smin {%tmp3,+,-256}<%bb4>))<nsw> smin {%tmp3,+,-256}<%bb4>) U: [-2147483648,258) S: [-2147483648,258) Exits: <<Unknown>> LoopDispositions: { %bb4: Computable, %bb53: Invariant }63; CHECK-NEXT: %tmp44 = add nsw i32 %tmp10, 764; CHECK-NEXT: --> (7 + (256 smin {%tmp3,+,-256}<%bb4>))<nsw> U: [-2147483641,264) S: [-2147483641,264) Exits: <<Unknown>> LoopDispositions: { %bb4: Computable, %bb53: Invariant }65; CHECK-NEXT: %tmp46 = select i1 %tmp45, i32 %tmp43, i32 25666; CHECK-NEXT: --> (256 smin (1 + (256 smin (1 + (256 smin (1 + (256 smin (1 + (256 smin (1 + (256 smin (1 + (256 smin (1 + (256 smin {%tmp3,+,-256}<%bb4>))<nsw> smin {%tmp3,+,-256}<%bb4>))<nsw> smin {%tmp3,+,-256}<%bb4>))<nsw> smin {%tmp3,+,-256}<%bb4>))<nsw> smin {%tmp3,+,-256}<%bb4>))<nsw> smin {%tmp3,+,-256}<%bb4>))<nsw> smin {%tmp3,+,-256}<%bb4>))<nsw> smin {%tmp3,+,-256}<%bb4>) U: [-2147483648,257) S: [-2147483648,257) Exits: <<Unknown>> LoopDispositions: { %bb4: Computable, %bb53: Invariant }67; CHECK-NEXT: %tmp48 = select i1 %tmp47, i32 %tmp44, i32 %tmp4668; CHECK-NEXT: --> ((7 + (256 smin {%tmp3,+,-256}<%bb4>))<nsw> smax (256 smin (1 + (256 smin (1 + (256 smin (1 + (256 smin (1 + (256 smin (1 + (256 smin (1 + (256 smin (1 + (256 smin {%tmp3,+,-256}<%bb4>))<nsw> smin {%tmp3,+,-256}<%bb4>))<nsw> smin {%tmp3,+,-256}<%bb4>))<nsw> smin {%tmp3,+,-256}<%bb4>))<nsw> smin {%tmp3,+,-256}<%bb4>))<nsw> smin {%tmp3,+,-256}<%bb4>))<nsw> smin {%tmp3,+,-256}<%bb4>))<nsw> smin {%tmp3,+,-256}<%bb4>)) U: [-2147483641,264) S: [-2147483641,264) Exits: <<Unknown>> LoopDispositions: { %bb4: Computable, %bb53: Invariant }69; CHECK-NEXT: %tmp49 = ashr i32 %tmp48, 370; CHECK-NEXT: --> %tmp49 U: [-268435456,268435456) S: [-268435456,268435456) Exits: <<Unknown>> LoopDispositions: { %bb4: Variant, %bb53: Invariant }71; CHECK-NEXT: %tmp51 = select i1 %tmp50, i32 %tmp49, i32 072; CHECK-NEXT: --> (0 smax %tmp49) U: [0,268435456) S: [0,268435456) Exits: <<Unknown>> LoopDispositions: { %bb4: Variant, %bb53: Invariant }73; CHECK-NEXT: %tmp52 = zext i32 %tmp51 to i6474; CHECK-NEXT: --> (zext i32 (0 smax %tmp49) to i64) U: [0,268435456) S: [0,268435456) Exits: <<Unknown>> LoopDispositions: { %bb4: Variant, %bb53: Invariant }75; CHECK-NEXT: %tmp54 = phi i64 [ undef, %bb4 ], [ %tmp59, %bb53 ]76; CHECK-NEXT: --> {undef,+,1}<nsw><%bb53> U: full-set S: full-set Exits: (-1 + (zext i32 (0 smax %tmp49) to i64))<nsw> LoopDispositions: { %bb53: Computable, %bb4: Variant }77; CHECK-NEXT: %tmp55 = trunc i64 %tmp54 to i3278; CHECK-NEXT: --> {(trunc i64 undef to i32),+,1}<%bb53> U: full-set S: full-set Exits: (-1 + (0 smax %tmp49))<nsw> LoopDispositions: { %bb53: Computable, %bb4: Variant }79; CHECK-NEXT: %tmp56 = shl nsw i32 %tmp55, 380; CHECK-NEXT: --> {(8 * (trunc i64 undef to i32)),+,8}<%bb53> U: [0,-7) S: [-2147483648,2147483641) Exits: (-8 + (8 * (0 smax %tmp49))<nuw><nsw>)<nsw> LoopDispositions: { %bb53: Computable, %bb4: Variant }81; CHECK-NEXT: %tmp57 = sext i32 %tmp56 to i6482; CHECK-NEXT: --> (sext i32 {(8 * (trunc i64 undef to i32)),+,8}<%bb53> to i64) U: [0,-7) S: [-2147483648,2147483641) Exits: (-8 + (8 * (zext i32 (0 smax %tmp49) to i64))<nuw><nsw>)<nsw> LoopDispositions: { %bb53: Computable, %bb4: Variant }83; CHECK-NEXT: %tmp58 = getelementptr inbounds i8, ptr null, i64 %tmp5784; CHECK-NEXT: --> ((sext i32 {(8 * (trunc i64 undef to i32)),+,8}<%bb53> to i64) + null) U: [0,-7) S: [-2147483648,2147483641) Exits: (-8 + (8 * (zext i32 (0 smax %tmp49) to i64))<nuw><nsw> + null) LoopDispositions: { %bb53: Computable, %bb4: Variant }85; CHECK-NEXT: %tmp59 = add nsw i64 %tmp54, 186; CHECK-NEXT: --> {(1 + undef),+,1}<nsw><%bb53> U: full-set S: full-set Exits: (zext i32 (0 smax %tmp49) to i64) LoopDispositions: { %bb53: Computable, %bb4: Variant }87; CHECK-NEXT: %tmp62 = add nuw nsw i64 %tmp5, 188; CHECK-NEXT: --> {1,+,1}<nuw><%bb4> U: [1,0) S: [1,0) Exits: <<Unknown>> LoopDispositions: { %bb4: Computable, %bb53: Invariant }89; CHECK-NEXT: Determining loop execution counts for: @smax90; CHECK-NEXT: Loop %bb53: backedge-taken count is (-1 + (zext i32 (0 smax %tmp49) to i64) + (-1 * undef))91; CHECK-NEXT: Loop %bb53: constant max backedge-taken count is i64 -192; CHECK-NEXT: Loop %bb53: symbolic max backedge-taken count is (-1 + (zext i32 (0 smax %tmp49) to i64) + (-1 * undef))93; CHECK-NEXT: Loop %bb53: Trip multiple is 194; CHECK-NEXT: Loop %bb4: <multiple exits> Unpredictable backedge-taken count.95; CHECK-NEXT: Loop %bb4: Unpredictable constant max backedge-taken count.96; CHECK-NEXT: Loop %bb4: Unpredictable symbolic max backedge-taken count.97;98entry:99 br label %bb4100 101bb4:102 %tmp5 = phi i64 [ %tmp62, %bb61 ], [ 0, %entry ]103 %tmp6 = trunc i64 %tmp5 to i32104 %tmp7 = shl nsw i32 %tmp6, 8105 %tmp8 = sub nsw i32 %tmp3, %tmp7106 %tmp9 = icmp slt i32 %tmp8, 256107 %tmp10 = select i1 %tmp9, i32 %tmp8, i32 256108 %tmp11 = add nsw i32 %tmp10, 1109 %tmp12 = icmp sgt i32 %tmp8, %tmp11110 %tmp13 = select i1 %tmp12, i32 %tmp11, i32 %tmp8111 %tmp14 = icmp slt i32 %tmp13, 256112 %tmp15 = select i1 %tmp14, i32 %tmp13, i32 256113 %tmp16 = add nsw i32 %tmp15, 1114 %tmp17 = icmp sgt i32 %tmp8, %tmp16115 %tmp18 = select i1 %tmp17, i32 %tmp16, i32 %tmp8116 %tmp19 = icmp slt i32 %tmp18, 256117 %tmp20 = select i1 %tmp19, i32 %tmp18, i32 256118 %tmp21 = add nsw i32 %tmp20, 1119 %tmp22 = icmp sgt i32 %tmp8, %tmp21120 %tmp23 = select i1 %tmp22, i32 %tmp21, i32 %tmp8121 %tmp24 = icmp slt i32 %tmp23, 256122 %tmp25 = select i1 %tmp24, i32 %tmp23, i32 256123 %tmp26 = add nsw i32 %tmp25, 1124 %tmp27 = icmp sgt i32 %tmp8, %tmp26125 %tmp28 = select i1 %tmp27, i32 %tmp26, i32 %tmp8126 %tmp29 = icmp slt i32 %tmp28, 256127 %tmp30 = select i1 %tmp29, i32 %tmp28, i32 256128 %tmp31 = add nsw i32 %tmp30, 1129 %tmp32 = icmp sgt i32 %tmp8, %tmp31130 %tmp33 = select i1 %tmp32, i32 %tmp31, i32 %tmp8131 %tmp34 = icmp slt i32 %tmp33, 256132 %tmp35 = select i1 %tmp34, i32 %tmp33, i32 256133 %tmp36 = add nsw i32 %tmp35, 1134 %tmp37 = icmp sgt i32 %tmp8, %tmp36135 %tmp38 = select i1 %tmp37, i32 %tmp36, i32 %tmp8136 %tmp39 = icmp slt i32 %tmp38, 256137 %tmp40 = select i1 %tmp39, i32 %tmp38, i32 256138 %tmp41 = add nsw i32 %tmp40, 1139 %tmp42 = icmp sgt i32 %tmp8, %tmp41140 %tmp43 = select i1 %tmp42, i32 %tmp41, i32 %tmp8141 %tmp44 = add nsw i32 %tmp10, 7142 %tmp45 = icmp slt i32 %tmp43, 256143 %tmp46 = select i1 %tmp45, i32 %tmp43, i32 256144 %tmp47 = icmp sgt i32 %tmp44, %tmp46145 %tmp48 = select i1 %tmp47, i32 %tmp44, i32 %tmp46146 %tmp49 = ashr i32 %tmp48, 3147 %tmp50 = icmp sgt i32 %tmp49, 0148 %tmp51 = select i1 %tmp50, i32 %tmp49, i32 0149 %tmp52 = zext i32 %tmp51 to i64150 br label %bb53151 152bb53:153 %tmp54 = phi i64 [ undef, %bb4 ], [ %tmp59, %bb53 ]154 %tmp55 = trunc i64 %tmp54 to i32155 %tmp56 = shl nsw i32 %tmp55, 3156 %tmp57 = sext i32 %tmp56 to i64157 %tmp58 = getelementptr inbounds i8, ptr null, i64 %tmp57158 store i8 undef, ptr %tmp58, align 8159 %tmp59 = add nsw i64 %tmp54, 1160 %tmp60 = icmp eq i64 %tmp59, %tmp52161 br i1 %tmp60, label %bb61, label %bb53162 163bb61:164 %tmp62 = add nuw nsw i64 %tmp5, 1165 br label %bb4166}167 168 169define void @umax(i32 %tmp3) {170; CHECK-LABEL: 'umax'171; CHECK-NEXT: Classifying expressions for: @umax172; CHECK-NEXT: %tmp5 = phi i64 [ %tmp62, %bb61 ], [ 0, %entry ]173; CHECK-NEXT: --> {0,+,1}<nuw><nsw><%bb4> U: [0,-9223372036854775808) S: [0,-9223372036854775808) Exits: <<Unknown>> LoopDispositions: { %bb4: Computable, %bb53: Invariant }174; CHECK-NEXT: %tmp6 = trunc i64 %tmp5 to i32175; CHECK-NEXT: --> {0,+,1}<%bb4> U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %bb4: Computable, %bb53: Invariant }176; CHECK-NEXT: %tmp7 = shl nsw i32 %tmp6, 8177; CHECK-NEXT: --> {0,+,256}<%bb4> U: [0,-255) S: [-2147483648,2147483393) Exits: <<Unknown>> LoopDispositions: { %bb4: Computable, %bb53: Invariant }178; CHECK-NEXT: %tmp8 = sub nsw i32 %tmp3, %tmp7179; CHECK-NEXT: --> {%tmp3,+,-256}<%bb4> U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %bb4: Computable, %bb53: Invariant }180; CHECK-NEXT: %tmp10 = select i1 %tmp9, i32 %tmp8, i32 256181; CHECK-NEXT: --> (256 umin {%tmp3,+,-256}<%bb4>) U: [0,257) S: [0,257) Exits: <<Unknown>> LoopDispositions: { %bb4: Computable, %bb53: Invariant }182; CHECK-NEXT: %tmp11 = add nsw i32 %tmp10, 1183; CHECK-NEXT: --> (1 + (256 umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> U: [1,258) S: [1,258) Exits: <<Unknown>> LoopDispositions: { %bb4: Computable, %bb53: Invariant }184; CHECK-NEXT: %tmp13 = select i1 %tmp12, i32 %tmp11, i32 %tmp8185; CHECK-NEXT: --> ((1 + (256 umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> umin {%tmp3,+,-256}<%bb4>) U: [0,258) S: [0,258) Exits: <<Unknown>> LoopDispositions: { %bb4: Computable, %bb53: Invariant }186; CHECK-NEXT: %tmp15 = select i1 %tmp14, i32 %tmp13, i32 256187; CHECK-NEXT: --> (256 umin (1 + (256 umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> umin {%tmp3,+,-256}<%bb4>) U: [0,257) S: [0,257) Exits: <<Unknown>> LoopDispositions: { %bb4: Computable, %bb53: Invariant }188; CHECK-NEXT: %tmp16 = add nsw i32 %tmp15, 1189; CHECK-NEXT: --> (1 + (256 umin (1 + (256 umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> U: [1,258) S: [1,258) Exits: <<Unknown>> LoopDispositions: { %bb4: Computable, %bb53: Invariant }190; CHECK-NEXT: %tmp18 = select i1 %tmp17, i32 %tmp16, i32 %tmp8191; CHECK-NEXT: --> ((1 + (256 umin (1 + (256 umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> umin {%tmp3,+,-256}<%bb4>) U: [0,258) S: [0,258) Exits: <<Unknown>> LoopDispositions: { %bb4: Computable, %bb53: Invariant }192; CHECK-NEXT: %tmp20 = select i1 %tmp19, i32 %tmp18, i32 256193; CHECK-NEXT: --> (256 umin (1 + (256 umin (1 + (256 umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> umin {%tmp3,+,-256}<%bb4>) U: [0,257) S: [0,257) Exits: <<Unknown>> LoopDispositions: { %bb4: Computable, %bb53: Invariant }194; CHECK-NEXT: %tmp21 = add nsw i32 %tmp20, 1195; CHECK-NEXT: --> (1 + (256 umin (1 + (256 umin (1 + (256 umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> U: [1,258) S: [1,258) Exits: <<Unknown>> LoopDispositions: { %bb4: Computable, %bb53: Invariant }196; CHECK-NEXT: %tmp23 = select i1 %tmp22, i32 %tmp21, i32 %tmp8197; CHECK-NEXT: --> ((1 + (256 umin (1 + (256 umin (1 + (256 umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> umin {%tmp3,+,-256}<%bb4>) U: [0,258) S: [0,258) Exits: <<Unknown>> LoopDispositions: { %bb4: Computable, %bb53: Invariant }198; CHECK-NEXT: %tmp25 = select i1 %tmp24, i32 %tmp23, i32 256199; CHECK-NEXT: --> (256 umin (1 + (256 umin (1 + (256 umin (1 + (256 umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> umin {%tmp3,+,-256}<%bb4>) U: [0,257) S: [0,257) Exits: <<Unknown>> LoopDispositions: { %bb4: Computable, %bb53: Invariant }200; CHECK-NEXT: %tmp26 = add nsw i32 %tmp25, 1201; CHECK-NEXT: --> (1 + (256 umin (1 + (256 umin (1 + (256 umin (1 + (256 umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> U: [1,258) S: [1,258) Exits: <<Unknown>> LoopDispositions: { %bb4: Computable, %bb53: Invariant }202; CHECK-NEXT: %tmp28 = select i1 %tmp27, i32 %tmp26, i32 %tmp8203; CHECK-NEXT: --> ((1 + (256 umin (1 + (256 umin (1 + (256 umin (1 + (256 umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> umin {%tmp3,+,-256}<%bb4>) U: [0,258) S: [0,258) Exits: <<Unknown>> LoopDispositions: { %bb4: Computable, %bb53: Invariant }204; CHECK-NEXT: %tmp30 = select i1 %tmp29, i32 %tmp28, i32 256205; CHECK-NEXT: --> (256 umin (1 + (256 umin (1 + (256 umin (1 + (256 umin (1 + (256 umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> umin {%tmp3,+,-256}<%bb4>) U: [0,257) S: [0,257) Exits: <<Unknown>> LoopDispositions: { %bb4: Computable, %bb53: Invariant }206; CHECK-NEXT: %tmp31 = add nsw i32 %tmp30, 1207; CHECK-NEXT: --> (1 + (256 umin (1 + (256 umin (1 + (256 umin (1 + (256 umin (1 + (256 umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> U: [1,258) S: [1,258) Exits: <<Unknown>> LoopDispositions: { %bb4: Computable, %bb53: Invariant }208; CHECK-NEXT: %tmp33 = select i1 %tmp32, i32 %tmp31, i32 %tmp8209; CHECK-NEXT: --> ((1 + (256 umin (1 + (256 umin (1 + (256 umin (1 + (256 umin (1 + (256 umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> umin {%tmp3,+,-256}<%bb4>) U: [0,258) S: [0,258) Exits: <<Unknown>> LoopDispositions: { %bb4: Computable, %bb53: Invariant }210; CHECK-NEXT: %tmp35 = select i1 %tmp34, i32 %tmp33, i32 256211; CHECK-NEXT: --> (256 umin (1 + (256 umin (1 + (256 umin (1 + (256 umin (1 + (256 umin (1 + (256 umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> umin {%tmp3,+,-256}<%bb4>) U: [0,257) S: [0,257) Exits: <<Unknown>> LoopDispositions: { %bb4: Computable, %bb53: Invariant }212; CHECK-NEXT: %tmp36 = add nsw i32 %tmp35, 1213; CHECK-NEXT: --> (1 + (256 umin (1 + (256 umin (1 + (256 umin (1 + (256 umin (1 + (256 umin (1 + (256 umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> U: [1,258) S: [1,258) Exits: <<Unknown>> LoopDispositions: { %bb4: Computable, %bb53: Invariant }214; CHECK-NEXT: %tmp38 = select i1 %tmp37, i32 %tmp36, i32 %tmp8215; CHECK-NEXT: --> ((1 + (256 umin (1 + (256 umin (1 + (256 umin (1 + (256 umin (1 + (256 umin (1 + (256 umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> umin {%tmp3,+,-256}<%bb4>) U: [0,258) S: [0,258) Exits: <<Unknown>> LoopDispositions: { %bb4: Computable, %bb53: Invariant }216; CHECK-NEXT: %tmp40 = select i1 %tmp39, i32 %tmp38, i32 256217; CHECK-NEXT: --> (256 umin (1 + (256 umin (1 + (256 umin (1 + (256 umin (1 + (256 umin (1 + (256 umin (1 + (256 umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> umin {%tmp3,+,-256}<%bb4>) U: [0,257) S: [0,257) Exits: <<Unknown>> LoopDispositions: { %bb4: Computable, %bb53: Invariant }218; CHECK-NEXT: %tmp41 = add nsw i32 %tmp40, 1219; CHECK-NEXT: --> (1 + (256 umin (1 + (256 umin (1 + (256 umin (1 + (256 umin (1 + (256 umin (1 + (256 umin (1 + (256 umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> U: [1,258) S: [1,258) Exits: <<Unknown>> LoopDispositions: { %bb4: Computable, %bb53: Invariant }220; CHECK-NEXT: %tmp43 = select i1 %tmp42, i32 %tmp41, i32 %tmp8221; CHECK-NEXT: --> ((1 + (256 umin (1 + (256 umin (1 + (256 umin (1 + (256 umin (1 + (256 umin (1 + (256 umin (1 + (256 umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> umin {%tmp3,+,-256}<%bb4>) U: [0,258) S: [0,258) Exits: <<Unknown>> LoopDispositions: { %bb4: Computable, %bb53: Invariant }222; CHECK-NEXT: %tmp44 = add nsw i32 %tmp10, 7223; CHECK-NEXT: --> (7 + (256 umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> U: [7,264) S: [7,264) Exits: <<Unknown>> LoopDispositions: { %bb4: Computable, %bb53: Invariant }224; CHECK-NEXT: %tmp46 = select i1 %tmp45, i32 %tmp43, i32 256225; CHECK-NEXT: --> (256 umin (1 + (256 umin (1 + (256 umin (1 + (256 umin (1 + (256 umin (1 + (256 umin (1 + (256 umin (1 + (256 umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> umin {%tmp3,+,-256}<%bb4>) U: [0,257) S: [0,257) Exits: <<Unknown>> LoopDispositions: { %bb4: Computable, %bb53: Invariant }226; CHECK-NEXT: %tmp48 = select i1 %tmp47, i32 %tmp44, i32 %tmp46227; CHECK-NEXT: --> ((7 + (256 umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> umax (256 umin (1 + (256 umin (1 + (256 umin (1 + (256 umin (1 + (256 umin (1 + (256 umin (1 + (256 umin (1 + (256 umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> umin {%tmp3,+,-256}<%bb4>))<nuw><nsw> umin {%tmp3,+,-256}<%bb4>)) U: [7,264) S: [7,264) Exits: <<Unknown>> LoopDispositions: { %bb4: Computable, %bb53: Invariant }228; CHECK-NEXT: %tmp49 = ashr i32 %tmp48, 3229; CHECK-NEXT: --> %tmp49 U: [-268435456,268435456) S: [-268435456,268435456) Exits: <<Unknown>> LoopDispositions: { %bb4: Variant, %bb53: Invariant }230; CHECK-NEXT: %tmp51 = select i1 %tmp50, i32 %tmp49, i32 0231; CHECK-NEXT: --> %tmp49 U: [-268435456,268435456) S: [-268435456,268435456) Exits: <<Unknown>> LoopDispositions: { %bb4: Variant, %bb53: Invariant }232; CHECK-NEXT: %tmp52 = zext i32 %tmp51 to i64233; CHECK-NEXT: --> (zext i32 %tmp49 to i64) U: [0,4294967296) S: [0,4294967296) Exits: <<Unknown>> LoopDispositions: { %bb4: Variant, %bb53: Invariant }234; CHECK-NEXT: %tmp54 = phi i64 [ undef, %bb4 ], [ %tmp59, %bb53 ]235; CHECK-NEXT: --> {undef,+,1}<nsw><%bb53> U: full-set S: full-set Exits: (-1 + (zext i32 %tmp49 to i64))<nsw> LoopDispositions: { %bb53: Computable, %bb4: Variant }236; CHECK-NEXT: %tmp55 = trunc i64 %tmp54 to i32237; CHECK-NEXT: --> {(trunc i64 undef to i32),+,1}<%bb53> U: full-set S: full-set Exits: (-1 + %tmp49)<nsw> LoopDispositions: { %bb53: Computable, %bb4: Variant }238; CHECK-NEXT: %tmp56 = shl nsw i32 %tmp55, 3239; CHECK-NEXT: --> {(8 * (trunc i64 undef to i32)),+,8}<%bb53> U: [0,-7) S: [-2147483648,2147483641) Exits: (-8 + (8 * %tmp49)<nsw>) LoopDispositions: { %bb53: Computable, %bb4: Variant }240; CHECK-NEXT: %tmp57 = sext i32 %tmp56 to i64241; CHECK-NEXT: --> (sext i32 {(8 * (trunc i64 undef to i32)),+,8}<%bb53> to i64) U: [0,-7) S: [-2147483648,2147483641) Exits: (sext i32 (-8 + (8 * %tmp49)<nsw>) to i64) LoopDispositions: { %bb53: Computable, %bb4: Variant }242; CHECK-NEXT: %tmp58 = getelementptr inbounds i8, ptr null, i64 %tmp57243; CHECK-NEXT: --> ((sext i32 {(8 * (trunc i64 undef to i32)),+,8}<%bb53> to i64) + null) U: [0,-7) S: [-2147483648,2147483641) Exits: ((sext i32 (-8 + (8 * %tmp49)<nsw>) to i64) + null) LoopDispositions: { %bb53: Computable, %bb4: Variant }244; CHECK-NEXT: %tmp59 = add nsw i64 %tmp54, 1245; CHECK-NEXT: --> {(1 + undef),+,1}<nsw><%bb53> U: full-set S: full-set Exits: (zext i32 %tmp49 to i64) LoopDispositions: { %bb53: Computable, %bb4: Variant }246; CHECK-NEXT: %tmp62 = add nuw nsw i64 %tmp5, 1247; CHECK-NEXT: --> {1,+,1}<nuw><%bb4> U: [1,0) S: [1,0) Exits: <<Unknown>> LoopDispositions: { %bb4: Computable, %bb53: Invariant }248; CHECK-NEXT: Determining loop execution counts for: @umax249; CHECK-NEXT: Loop %bb53: backedge-taken count is (-1 + (zext i32 %tmp49 to i64) + (-1 * undef))250; CHECK-NEXT: Loop %bb53: constant max backedge-taken count is i64 -1251; CHECK-NEXT: Loop %bb53: symbolic max backedge-taken count is (-1 + (zext i32 %tmp49 to i64) + (-1 * undef))252; CHECK-NEXT: Loop %bb53: Trip multiple is 1253; CHECK-NEXT: Loop %bb4: <multiple exits> Unpredictable backedge-taken count.254; CHECK-NEXT: Loop %bb4: Unpredictable constant max backedge-taken count.255; CHECK-NEXT: Loop %bb4: Unpredictable symbolic max backedge-taken count.256;257entry:258 br label %bb4259 260bb4:261 %tmp5 = phi i64 [ %tmp62, %bb61 ], [ 0, %entry ]262 %tmp6 = trunc i64 %tmp5 to i32263 %tmp7 = shl nsw i32 %tmp6, 8264 %tmp8 = sub nsw i32 %tmp3, %tmp7265 %tmp9 = icmp ult i32 %tmp8, 256266 %tmp10 = select i1 %tmp9, i32 %tmp8, i32 256267 %tmp11 = add nsw i32 %tmp10, 1268 %tmp12 = icmp ugt i32 %tmp8, %tmp11269 %tmp13 = select i1 %tmp12, i32 %tmp11, i32 %tmp8270 %tmp14 = icmp ult i32 %tmp13, 256271 %tmp15 = select i1 %tmp14, i32 %tmp13, i32 256272 %tmp16 = add nsw i32 %tmp15, 1273 %tmp17 = icmp ugt i32 %tmp8, %tmp16274 %tmp18 = select i1 %tmp17, i32 %tmp16, i32 %tmp8275 %tmp19 = icmp ult i32 %tmp18, 256276 %tmp20 = select i1 %tmp19, i32 %tmp18, i32 256277 %tmp21 = add nsw i32 %tmp20, 1278 %tmp22 = icmp ugt i32 %tmp8, %tmp21279 %tmp23 = select i1 %tmp22, i32 %tmp21, i32 %tmp8280 %tmp24 = icmp ult i32 %tmp23, 256281 %tmp25 = select i1 %tmp24, i32 %tmp23, i32 256282 %tmp26 = add nsw i32 %tmp25, 1283 %tmp27 = icmp ugt i32 %tmp8, %tmp26284 %tmp28 = select i1 %tmp27, i32 %tmp26, i32 %tmp8285 %tmp29 = icmp ult i32 %tmp28, 256286 %tmp30 = select i1 %tmp29, i32 %tmp28, i32 256287 %tmp31 = add nsw i32 %tmp30, 1288 %tmp32 = icmp ugt i32 %tmp8, %tmp31289 %tmp33 = select i1 %tmp32, i32 %tmp31, i32 %tmp8290 %tmp34 = icmp ult i32 %tmp33, 256291 %tmp35 = select i1 %tmp34, i32 %tmp33, i32 256292 %tmp36 = add nsw i32 %tmp35, 1293 %tmp37 = icmp ugt i32 %tmp8, %tmp36294 %tmp38 = select i1 %tmp37, i32 %tmp36, i32 %tmp8295 %tmp39 = icmp ult i32 %tmp38, 256296 %tmp40 = select i1 %tmp39, i32 %tmp38, i32 256297 %tmp41 = add nsw i32 %tmp40, 1298 %tmp42 = icmp ugt i32 %tmp8, %tmp41299 %tmp43 = select i1 %tmp42, i32 %tmp41, i32 %tmp8300 %tmp44 = add nsw i32 %tmp10, 7301 %tmp45 = icmp ult i32 %tmp43, 256302 %tmp46 = select i1 %tmp45, i32 %tmp43, i32 256303 %tmp47 = icmp ugt i32 %tmp44, %tmp46304 %tmp48 = select i1 %tmp47, i32 %tmp44, i32 %tmp46305 %tmp49 = ashr i32 %tmp48, 3306 %tmp50 = icmp ugt i32 %tmp49, 0307 %tmp51 = select i1 %tmp50, i32 %tmp49, i32 0308 %tmp52 = zext i32 %tmp51 to i64309 br label %bb53310 311bb53:312 %tmp54 = phi i64 [ undef, %bb4 ], [ %tmp59, %bb53 ]313 %tmp55 = trunc i64 %tmp54 to i32314 %tmp56 = shl nsw i32 %tmp55, 3315 %tmp57 = sext i32 %tmp56 to i64316 %tmp58 = getelementptr inbounds i8, ptr null, i64 %tmp57317 store i8 undef, ptr %tmp58, align 8318 %tmp59 = add nsw i64 %tmp54, 1319 %tmp60 = icmp eq i64 %tmp59, %tmp52320 br i1 %tmp60, label %bb61, label %bb53321 322bb61:323 %tmp62 = add nuw nsw i64 %tmp5, 1324 br label %bb4325}326