1; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py 2; RUN: opt < %s -disable-output "-passes=print<scalar-evolution>" 2>&1 | FileCheck %s 3 4; SCEV would take a long time to compute SCEV expressions for this IR. If SCEV 5; 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: @smax 13; 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 i32 16; 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, 8 18; 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, %tmp7 20; 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 256 22; 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, 1 24; 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 %tmp8 26; 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 256 28; 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, 1 30; 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 %tmp8 32; 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 256 34; 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, 1 36; 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 %tmp8 38; 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 256 40; 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, 1 42; 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 %tmp8 44; 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 256 46; 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, 1 48; 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 %tmp8 50; 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 256 52; 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, 1 54; 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 %tmp8 56; 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 256 58; 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, 1 60; 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 %tmp8 62; 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, 7 64; 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 256 66; 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 %tmp46 68; 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, 3 70; 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 0 72; 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 i64 74; 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 i32 78; 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, 3 80; 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 i64 82; 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 %tmp57 84; 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, 1 86; 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, 1 88; 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: @smax 90; 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 -1 92; 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 1 94; 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 %bb4 100 101bb4: 102 %tmp5 = phi i64 [ %tmp62, %bb61 ], [ 0, %entry ] 103 %tmp6 = trunc i64 %tmp5 to i32 104 %tmp7 = shl nsw i32 %tmp6, 8 105 %tmp8 = sub nsw i32 %tmp3, %tmp7 106 %tmp9 = icmp slt i32 %tmp8, 256 107 %tmp10 = select i1 %tmp9, i32 %tmp8, i32 256 108 %tmp11 = add nsw i32 %tmp10, 1 109 %tmp12 = icmp sgt i32 %tmp8, %tmp11 110 %tmp13 = select i1 %tmp12, i32 %tmp11, i32 %tmp8 111 %tmp14 = icmp slt i32 %tmp13, 256 112 %tmp15 = select i1 %tmp14, i32 %tmp13, i32 256 113 %tmp16 = add nsw i32 %tmp15, 1 114 %tmp17 = icmp sgt i32 %tmp8, %tmp16 115 %tmp18 = select i1 %tmp17, i32 %tmp16, i32 %tmp8 116 %tmp19 = icmp slt i32 %tmp18, 256 117 %tmp20 = select i1 %tmp19, i32 %tmp18, i32 256 118 %tmp21 = add nsw i32 %tmp20, 1 119 %tmp22 = icmp sgt i32 %tmp8, %tmp21 120 %tmp23 = select i1 %tmp22, i32 %tmp21, i32 %tmp8 121 %tmp24 = icmp slt i32 %tmp23, 256 122 %tmp25 = select i1 %tmp24, i32 %tmp23, i32 256 123 %tmp26 = add nsw i32 %tmp25, 1 124 %tmp27 = icmp sgt i32 %tmp8, %tmp26 125 %tmp28 = select i1 %tmp27, i32 %tmp26, i32 %tmp8 126 %tmp29 = icmp slt i32 %tmp28, 256 127 %tmp30 = select i1 %tmp29, i32 %tmp28, i32 256 128 %tmp31 = add nsw i32 %tmp30, 1 129 %tmp32 = icmp sgt i32 %tmp8, %tmp31 130 %tmp33 = select i1 %tmp32, i32 %tmp31, i32 %tmp8 131 %tmp34 = icmp slt i32 %tmp33, 256 132 %tmp35 = select i1 %tmp34, i32 %tmp33, i32 256 133 %tmp36 = add nsw i32 %tmp35, 1 134 %tmp37 = icmp sgt i32 %tmp8, %tmp36 135 %tmp38 = select i1 %tmp37, i32 %tmp36, i32 %tmp8 136 %tmp39 = icmp slt i32 %tmp38, 256 137 %tmp40 = select i1 %tmp39, i32 %tmp38, i32 256 138 %tmp41 = add nsw i32 %tmp40, 1 139 %tmp42 = icmp sgt i32 %tmp8, %tmp41 140 %tmp43 = select i1 %tmp42, i32 %tmp41, i32 %tmp8 141 %tmp44 = add nsw i32 %tmp10, 7 142 %tmp45 = icmp slt i32 %tmp43, 256 143 %tmp46 = select i1 %tmp45, i32 %tmp43, i32 256 144 %tmp47 = icmp sgt i32 %tmp44, %tmp46 145 %tmp48 = select i1 %tmp47, i32 %tmp44, i32 %tmp46 146 %tmp49 = ashr i32 %tmp48, 3 147 %tmp50 = icmp sgt i32 %tmp49, 0 148 %tmp51 = select i1 %tmp50, i32 %tmp49, i32 0 149 %tmp52 = zext i32 %tmp51 to i64 150 br label %bb53 151 152bb53: 153 %tmp54 = phi i64 [ undef, %bb4 ], [ %tmp59, %bb53 ] 154 %tmp55 = trunc i64 %tmp54 to i32 155 %tmp56 = shl nsw i32 %tmp55, 3 156 %tmp57 = sext i32 %tmp56 to i64 157 %tmp58 = getelementptr inbounds i8, ptr null, i64 %tmp57 158 store i8 undef, ptr %tmp58, align 8 159 %tmp59 = add nsw i64 %tmp54, 1 160 %tmp60 = icmp eq i64 %tmp59, %tmp52 161 br i1 %tmp60, label %bb61, label %bb53 162 163bb61: 164 %tmp62 = add nuw nsw i64 %tmp5, 1 165 br label %bb4 166} 167 168 169define void @umax(i32 %tmp3) { 170; CHECK-LABEL: 'umax' 171; CHECK-NEXT: Classifying expressions for: @umax 172; 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 i32 175; 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, 8 177; 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, %tmp7 179; 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 256 181; 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, 1 183; 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 %tmp8 185; 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 256 187; 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, 1 189; 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 %tmp8 191; 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 256 193; 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, 1 195; 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 %tmp8 197; 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 256 199; 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, 1 201; 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 %tmp8 203; 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 256 205; 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, 1 207; 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 %tmp8 209; 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 256 211; 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, 1 213; 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 %tmp8 215; 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 256 217; 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, 1 219; 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 %tmp8 221; 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, 7 223; 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 256 225; 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 %tmp46 227; 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, 3 229; 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 0 231; CHECK-NEXT: --> %tmp49 U: [-268435456,268435456) S: [-268435456,268435456) Exits: <<Unknown>> LoopDispositions: { %bb4: Variant, %bb53: Invariant } 232; CHECK-NEXT: %tmp52 = zext i32 %tmp51 to i64 233; 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 i32 237; 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, 3 239; 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 i64 241; 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 %tmp57 243; 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, 1 245; 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, 1 247; 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: @umax 249; 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 -1 251; 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 1 253; 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 %bb4 259 260bb4: 261 %tmp5 = phi i64 [ %tmp62, %bb61 ], [ 0, %entry ] 262 %tmp6 = trunc i64 %tmp5 to i32 263 %tmp7 = shl nsw i32 %tmp6, 8 264 %tmp8 = sub nsw i32 %tmp3, %tmp7 265 %tmp9 = icmp ult i32 %tmp8, 256 266 %tmp10 = select i1 %tmp9, i32 %tmp8, i32 256 267 %tmp11 = add nsw i32 %tmp10, 1 268 %tmp12 = icmp ugt i32 %tmp8, %tmp11 269 %tmp13 = select i1 %tmp12, i32 %tmp11, i32 %tmp8 270 %tmp14 = icmp ult i32 %tmp13, 256 271 %tmp15 = select i1 %tmp14, i32 %tmp13, i32 256 272 %tmp16 = add nsw i32 %tmp15, 1 273 %tmp17 = icmp ugt i32 %tmp8, %tmp16 274 %tmp18 = select i1 %tmp17, i32 %tmp16, i32 %tmp8 275 %tmp19 = icmp ult i32 %tmp18, 256 276 %tmp20 = select i1 %tmp19, i32 %tmp18, i32 256 277 %tmp21 = add nsw i32 %tmp20, 1 278 %tmp22 = icmp ugt i32 %tmp8, %tmp21 279 %tmp23 = select i1 %tmp22, i32 %tmp21, i32 %tmp8 280 %tmp24 = icmp ult i32 %tmp23, 256 281 %tmp25 = select i1 %tmp24, i32 %tmp23, i32 256 282 %tmp26 = add nsw i32 %tmp25, 1 283 %tmp27 = icmp ugt i32 %tmp8, %tmp26 284 %tmp28 = select i1 %tmp27, i32 %tmp26, i32 %tmp8 285 %tmp29 = icmp ult i32 %tmp28, 256 286 %tmp30 = select i1 %tmp29, i32 %tmp28, i32 256 287 %tmp31 = add nsw i32 %tmp30, 1 288 %tmp32 = icmp ugt i32 %tmp8, %tmp31 289 %tmp33 = select i1 %tmp32, i32 %tmp31, i32 %tmp8 290 %tmp34 = icmp ult i32 %tmp33, 256 291 %tmp35 = select i1 %tmp34, i32 %tmp33, i32 256 292 %tmp36 = add nsw i32 %tmp35, 1 293 %tmp37 = icmp ugt i32 %tmp8, %tmp36 294 %tmp38 = select i1 %tmp37, i32 %tmp36, i32 %tmp8 295 %tmp39 = icmp ult i32 %tmp38, 256 296 %tmp40 = select i1 %tmp39, i32 %tmp38, i32 256 297 %tmp41 = add nsw i32 %tmp40, 1 298 %tmp42 = icmp ugt i32 %tmp8, %tmp41 299 %tmp43 = select i1 %tmp42, i32 %tmp41, i32 %tmp8 300 %tmp44 = add nsw i32 %tmp10, 7 301 %tmp45 = icmp ult i32 %tmp43, 256 302 %tmp46 = select i1 %tmp45, i32 %tmp43, i32 256 303 %tmp47 = icmp ugt i32 %tmp44, %tmp46 304 %tmp48 = select i1 %tmp47, i32 %tmp44, i32 %tmp46 305 %tmp49 = ashr i32 %tmp48, 3 306 %tmp50 = icmp ugt i32 %tmp49, 0 307 %tmp51 = select i1 %tmp50, i32 %tmp49, i32 0 308 %tmp52 = zext i32 %tmp51 to i64 309 br label %bb53 310 311bb53: 312 %tmp54 = phi i64 [ undef, %bb4 ], [ %tmp59, %bb53 ] 313 %tmp55 = trunc i64 %tmp54 to i32 314 %tmp56 = shl nsw i32 %tmp55, 3 315 %tmp57 = sext i32 %tmp56 to i64 316 %tmp58 = getelementptr inbounds i8, ptr null, i64 %tmp57 317 store i8 undef, ptr %tmp58, align 8 318 %tmp59 = add nsw i64 %tmp54, 1 319 %tmp60 = icmp eq i64 %tmp59, %tmp52 320 br i1 %tmp60, label %bb61, label %bb53 321 322bb61: 323 %tmp62 = add nuw nsw i64 %tmp5, 1 324 br label %bb4 325} 326