diff --git a/bench/abc/optimized/abcMerge.ll b/bench/abc/optimized/abcMerge.ll index 655042009b3..d8baf0933e3 100644 --- a/bench/abc/optimized/abcMerge.ll +++ b/bench/abc/optimized/abcMerge.ll @@ -2593,9 +2593,8 @@ Abc_Clock.exit: ; preds = %2, %9 br i1 %73, label %92, label %.critedge4.preheader 74: ; preds = %70 - %75 = add i32 %.val110, %.0145 - %76 = icmp sgt i32 %.val110, 0 - br i1 %76, label %.lr.ph140, label %.critedge4.preheader + %75 = icmp sgt i32 %.val110, 0 + br i1 %75, label %.lr.ph140, label %.critedge4.preheader .lr.ph140: ; preds = %74 %.val114 = load ptr, ptr %44, align 8, !tbaa !35 @@ -2604,10 +2603,8 @@ Abc_Clock.exit: ; preds = %2, %9 br label %81 .critedge4.preheader: ; preds = %81, %72, %74 - %.0145.pn = phi i32 [ %75, %74 ], [ %.0145, %72 ], [ %75, %81 ] - %78 = add i32 %.0145.pn, %.val107.pre - %79 = icmp sgt i32 %.val107.pre, 0 - br i1 %79, label %.lr.ph142, label %.critedge6 + %77 = icmp sgt i32 %.val107.pre, 0 + br i1 %77, label %.lr.ph142, label %.critedge6 .lr.ph142: ; preds = %.critedge4.preheader %.val113 = load ptr, ptr %48, align 8, !tbaa !35 @@ -2616,7 +2613,7 @@ Abc_Clock.exit: ; preds = %2, %9 br label %.critedge4 81: ; preds = %.lr.ph140, %81 - %indvars.iv149 = phi i64 [ 0, %.lr.ph140 ], [ %indvars.iv.next150, %81 ] + %indvars.iv149 = phi i64 [ 0, %.lr.ph140 ], [ %indvars.iv.next150, %79 ] %82 = getelementptr inbounds nuw ptr, ptr %.val114, i64 %indvars.iv149 %83 = load ptr, ptr %82, align 8, !tbaa !37 %.val94 = load i32, ptr %77, align 8, !tbaa !13 @@ -2640,6 +2637,8 @@ Abc_Clock.exit: ; preds = %2, %9 br i1 %exitcond158.not, label %.critedge6, label %.critedge4, !llvm.loop !71 .critedge6: ; preds = %.critedge4, %.critedge4.preheader + %86 = add i32 %.val110, %.0145 + %87 = add i32 %86, %.val107.pre %88 = load i32, ptr %53, align 4, !tbaa !72 %.not91 = icmp eq i32 %88, 0 br i1 %.not91, label %92, label %89 @@ -2653,7 +2652,7 @@ Abc_Clock.exit: ; preds = %2, %9 92: ; preds = %60, %54, %89, %.critedge6, %72, %63 %.val107.pre163 = phi i32 [ %.val107.pre162, %54 ], [ %.val107.pre162, %63 ], [ 0, %72 ], [ %.val107.pre, %89 ], [ %.val107.pre, %.critedge6 ], [ %.val107.pre162, %60 ] - %.1 = phi i32 [ %.0145, %54 ], [ %.0145, %63 ], [ %.0145, %72 ], [ %78, %89 ], [ %78, %.critedge6 ], [ %.0145, %60 ] + %.1 = phi i32 [ %.0145, %54 ], [ %.0145, %63 ], [ %.0145, %72 ], [ %87, %89 ], [ %87, %.critedge6 ], [ %.0145, %60 ] %indvars.iv.next160 = add nuw nsw i64 %indvars.iv159, 1 %93 = load ptr, ptr %13, align 8, !tbaa !34 %94 = getelementptr i8, ptr %93, i64 4 diff --git a/bench/abc/optimized/extraUtilDsd.ll b/bench/abc/optimized/extraUtilDsd.ll index 532278a23c2..71408cb7dc4 100644 --- a/bench/abc/optimized/extraUtilDsd.ll +++ b/bench/abc/optimized/extraUtilDsd.ll @@ -940,7 +940,6 @@ Vec_IntFill.exit.i.i: ; preds = %.lr.ph.i44.i.i, %Ve %93 = shl nsw i32 %92, 1 %94 = sext i32 %93 to i64 %95 = getelementptr inbounds i32, ptr %.val43.val.i.pre62.i, i64 %94 - %.val36.i.i = load i32, ptr %46, align 4, !tbaa !22 br label %.lr.ph.i45.i.i .lr.ph.i45.i.i: ; preds = %.lr.ph.i45.i.i, %.lr.ph.preheader.i.i.i @@ -958,6 +957,7 @@ Vec_IntFill.exit.i.i: ; preds = %.lr.ph.i44.i.i, %Ve br i1 %.not.i48.i.i, label %Hsh_IntManHash.exit.i.i, label %.lr.ph.i45.i.i, !llvm.loop !42 Hsh_IntManHash.exit.i.i: ; preds = %.lr.ph.i45.i.i + %.val36.i.i = load i32, ptr %46, align 4, !tbaa !22 %103 = mul i32 %102, 9 %104 = lshr i32 %103, 11 %105 = xor i32 %104, %103 @@ -974,16 +974,11 @@ Hsh_IntManHash.exit.i.i: ; preds = %.lr.ph.i45.i.i %.val34.i.i = load i32, ptr %56, align 4, !tbaa !33 %113 = sext i32 %.val34.i.i to i64 %114 = icmp slt i64 %indvars.iv.next.i.i, %113 - br i1 %114, label %.lr.ph.preheader.i.i.i, label %.lr.ph.preheader.i.i.i.loopexit.i, !llvm.loop !44 - -.lr.ph.preheader.i.i.i.loopexit.i: ; preds = %Hsh_IntManHash.exit.i.i - %.val.i50.i.pre.i = load i32, ptr %46, align 4, !tbaa !22 - br label %.lr.ph.preheader.i.i.i.i + br i1 %114, label %.lr.ph.preheader.i.i.i, label %.lr.ph.preheader.i.i.i.i, !llvm.loop !44 -.lr.ph.preheader.i.i.i.i: ; preds = %.lr.ph.preheader.i.i.i.loopexit.i, %Vec_IntFill.exit.i.i, %.lr.ph..lr.ph.preheader.i.i.i_crit_edge.i - %.val.i50.i.i = phi i32 [ %69, %Vec_IntFill.exit.i.i ], [ %.val38.i.i, %.lr.ph..lr.ph.preheader.i.i.i_crit_edge.i ], [ %.val.i50.i.pre.i, %.lr.ph.preheader.i.i.i.loopexit.i ] - %.val43.val.i.i = phi ptr [ %.val43.val.i.pre62.i, %Vec_IntFill.exit.i.i ], [ %.val43.val.i.pre.i, %.lr.ph..lr.ph.preheader.i.i.i_crit_edge.i ], [ %.val43.val.i.pre62.i, %.lr.ph.preheader.i.i.i.loopexit.i ] - %.val35.i59.i = phi i32 [ %.val3468.i.i, %Vec_IntFill.exit.i.i ], [ %.val35.i.i, %.lr.ph..lr.ph.preheader.i.i.i_crit_edge.i ], [ %.val34.i.i, %.lr.ph.preheader.i.i.i.loopexit.i ] +.lr.ph.preheader.i.i.i.i: ; preds = %Hsh_IntManHash.exit.i.i, %Vec_IntFill.exit.i.i, %.lr.ph..lr.ph.preheader.i.i.i_crit_edge.i + %.val.i50.i.i = phi ptr [ %.val43.val.i.pre62.i, %Vec_IntFill.exit.i.i ], [ %.val43.val.i.pre.i, %.lr.ph..lr.ph.preheader.i.i.i_crit_edge.i ], [ %.val43.val.i.pre62.i, %Hsh_IntManHash.exit.i.i ] + %.val43.val.i.i = phi i32 [ %.val3468.i.i, %Vec_IntFill.exit.i.i ], [ %.val35.i.i, %.lr.ph..lr.ph.preheader.i.i.i_crit_edge.i ], [ %.val34.i.i, %Hsh_IntManHash.exit.i.i ] %.idx.i = shl nuw nsw i64 %indvars.iv.i, 3 %115 = getelementptr inbounds nuw i8, ptr %.val43.val.i.i, i64 %.idx.i br label %.lr.ph.i.i.i.i @@ -1003,6 +998,7 @@ Hsh_IntManHash.exit.i.i: ; preds = %.lr.ph.i45.i.i br i1 %.not.i.i51.i.i, label %Hsh_IntManHash.exit.i.i.i, label %.lr.ph.i.i.i.i, !llvm.loop !42 Hsh_IntManHash.exit.i.i.i: ; preds = %.lr.ph.i.i.i.i + %.val.i50.i.i = load i32, ptr %46, align 4, !tbaa !22 %123 = mul i32 %122, 9 %124 = lshr i32 %123, 11 %125 = xor i32 %124, %123 diff --git a/bench/abc/optimized/giaMini.ll b/bench/abc/optimized/giaMini.ll index a749d7c8132..76d1f8ffcf5 100644 --- a/bench/abc/optimized/giaMini.ll +++ b/bench/abc/optimized/giaMini.ll @@ -6263,24 +6263,24 @@ define noalias noundef ptr @Gia_MiniAigProcessFile() local_unnamed_addr #1 { 9: ; preds = %0 call void @llvm.lifetime.start.p0(ptr nonnull %1) %10 = getelementptr inbounds nuw i8, ptr %1, i64 3 - br label %.outer.outer + br label %.outer ..loopexit_crit_edge: ; preds = %Vec_IntPush.exit br label %.outer.outer, !llvm.loop !151 -.outer.outer: ; preds = %..loopexit_crit_edge, %9 - %.pre.i22.ph = phi ptr [ %.pre.i24, %..loopexit_crit_edge ], [ %4, %9 ] - %.013.ph.ph = phi i32 [ %17, %..loopexit_crit_edge ], [ 0, %9 ] - %.012.ph.ph = phi i32 [ %14, %..loopexit_crit_edge ], [ 0, %9 ] +.outer.outer: ; preds = %..loopexit_crit_edge, %17 + %.pre.i22.ph = phi ptr [ %.pre.i24, %..loopexit_crit_edge ], [ %.013.ph, %17 ] + %11 = add nuw nsw i32 %.012.ph, 1 br label %.outer -.outer: ; preds = %.outer.outer, %16 - %.013.ph = phi i32 [ %17, %16 ], [ %.013.ph.ph, %.outer.outer ] - %.012.ph = phi i32 [ %14, %16 ], [ %.012.ph.ph, %.outer.outer ] - br label %11 +.outer: ; preds = %.outer.outer, %9 + %.013.ph = phi ptr [ %.pre.i23, %.loopexit ], [ %4, %9 ] + %.012.ph = phi i32 [ %11, %.loopexit ], [ 0, %9 ] + %.012.ph = phi i32 [ %15, %.loopexit ], [ 0, %9 ] + br label %12 11: ; preds = %.outer, %13 - %.012 = phi i32 [ %14, %13 ], [ %.012.ph, %.outer ] + %.012 = phi i32 [ %14, %14 ], [ %.012.ph, %.outer ] %12 = call ptr @fgets(ptr noundef nonnull %1, i32 noundef 1000, ptr noundef nonnull %6) %.not = icmp eq ptr %12, null br i1 %.not, label %45, label %13 @@ -6292,16 +6292,15 @@ define noalias noundef ptr @Gia_MiniAigProcessFile() local_unnamed_addr #1 { br i1 %.not15, label %16, label %11, !llvm.loop !151 16: ; preds = %13 - %17 = add nuw nsw i32 %.013.ph, 1 %18 = call ptr @strtok(ptr noundef nonnull %10, ptr noundef nonnull @.str.30) #25 %.not1618 = icmp eq ptr %18, null - br i1 %.not1618, label %.outer, label %.lr.ph, !llvm.loop !151 + br i1 %.not1618, label %.outer.outer, label %.lr.ph, !llvm.loop !151 .lr.ph: ; preds = %16 br label %19, !llvm.loop !151 19: ; preds = %.lr.ph, %Vec_IntPush.exit - %20 = phi ptr [ %.pre.i22.ph, %.lr.ph ], [ %.pre.i24, %Vec_IntPush.exit ] + %20 = phi ptr [ %.pre.i22, %.lr.ph ], [ %.pre.i24, %Vec_IntPush.exit ] %.019 = phi ptr [ %18, %.lr.ph ], [ %44, %Vec_IntPush.exit ] %21 = call i64 @strtol(ptr noundef nonnull captures(none) %.019, ptr noundef null, i32 noundef 10) #25 %22 = trunc i64 %21 to i32 diff --git a/bench/abseil-cpp/optimized/symbolize.ll b/bench/abseil-cpp/optimized/symbolize.ll index 4d60d14d0e6..f57a1c89900 100644 --- a/bench/abseil-cpp/optimized/symbolize.ll +++ b/bench/abseil-cpp/optimized/symbolize.ll @@ -2040,12 +2040,8 @@ _ZN4absl13base_internal8SpinLock6UnlockEv.exit.i.i: ; preds = %340, %336, %_ZN4a %362 = icmp eq ptr %361, null br i1 %362, label %.preheader60.i.i.i.preheader, label %371 -.preheader60.i.i.i.preheader: ; preds = %359 - %363 = getelementptr inbounds nuw ptr, ptr %357, i64 %.04067.i.i.i - br label %.preheader60.i.i.i - -.preheader60.i.i.i: ; preds = %.preheader60.i.i.i.preheader, %.preheader60.i.i.i - %.0.idx1.i.i.i.i = phi i64 [ %.0.add.i.i.i.i, %.preheader60.i.i.i ], [ 64, %.preheader60.i.i.i.preheader ] +.preheader60.i.i.i.preheader: ; preds = %359, %.preheader60.i.i.i + %.0.idx1.i.i.i.i = phi i64 [ %.0.add.i.i.i.i, %.preheader60.i.i.i ], [ 64, %359 ] %.0.ptr.i.i.i.i = getelementptr inbounds nuw i8, ptr %357, i64 %.0.idx1.i.i.i.i %364 = load i32, ptr %.0.ptr.i.i.i.i, align 4, !tbaa !10 %365 = add i32 %364, 1 @@ -2055,7 +2051,8 @@ _ZN4absl13base_internal8SpinLock6UnlockEv.exit.i.i: ; preds = %340, %336, %_ZN4a br i1 %.not.i.i78.i.i, label %_ZN4absl18debugging_internal12_GLOBAL__N_110Symbolizer10AgeSymbolsEPNS1_15SymbolCacheLineE.exit.i.i.i, label %.preheader60.i.i.i _ZN4absl18debugging_internal12_GLOBAL__N_110Symbolizer10AgeSymbolsEPNS1_15SymbolCacheLineE.exit.i.i.i: ; preds = %.preheader60.i.i.i - store ptr %0, ptr %363, align 8, !tbaa !32 + %365 = getelementptr inbounds nuw ptr, ptr %357, i64 %.04067.i.i.i + store ptr %0, ptr %365, align 8, !tbaa !32 %366 = call i64 @strlen(ptr noundef nonnull readonly dereferenceable(1) %71) #26 %367 = add i64 %366, 1 %368 = load atomic i64, ptr @_ZN4absl18debugging_internal12_GLOBAL__N_116g_sig_safe_arenaE acquire, align 8 diff --git a/bench/actix-rs/optimized/19s5ghr2x6s6bmh4.ll b/bench/actix-rs/optimized/19s5ghr2x6s6bmh4.ll index 617da1fae43..a2e9ca83c5d 100644 --- a/bench/actix-rs/optimized/19s5ghr2x6s6bmh4.ll +++ b/bench/actix-rs/optimized/19s5ghr2x6s6bmh4.ll @@ -1414,28 +1414,31 @@ define hidden void @"_ZN68_$LT$sha1..Sha1Core$u20$as$u20$digest..core_api..Fixed %13 = icmp ult i8 %11, 64 tail call void @llvm.assume(i1 %13) %14 = load i64, ptr %0, align 8, !noundef !4 - %15 = shl i64 %14, 9 - %16 = shl nuw nsw i64 %12, 3 - %17 = or disjoint i64 %15, %16 call void @llvm.lifetime.start.p0(ptr nonnull %9) %18 = getelementptr inbounds nuw i8, ptr %0, i64 8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(20) %9, ptr noundef nonnull align 8 dereferenceable(20) %18, i64 20, i1 false) - %19 = tail call i64 @llvm.bswap.i64(i64 %17) tail call void @llvm.experimental.noalias.scope.decl(metadata !191) %20 = getelementptr inbounds nuw i8, ptr %1, i64 %12 store i8 -128, ptr %20, align 1, !alias.scope !191, !noalias !194 %21 = icmp eq i8 %11, 63 - br i1 %21, label %._crit_edge.thread, label %._crit_edge + br i1 %21, label %._crit_edge, label %._crit_edge ._crit_edge: ; preds = %3 %22 = getelementptr i8, ptr %20, i64 1 %23 = xor i64 %12, 63 tail call void @llvm.memset.p0.i64(ptr align 1 %22, i8 0, i64 %23, i1 false), !noalias !197 + br label %._crit_edge + +._crit_edge: ; preds = %.lr.ph.preheader, %3 + %20 = shl i64 %14, 9 + %21 = shl nuw nsw i64 %12, 3 + %22 = or disjoint i64 %20, %21 + %23 = tail call i64 @llvm.bswap.i64(i64 %22) %24 = xor i64 %12, 56 %25 = icmp samesign ult i64 %24, 8 br i1 %25, label %._crit_edge.thread, label %34 -._crit_edge.thread: ; preds = %3, %._crit_edge +._crit_edge.thread: ; preds = %._crit_edge call void @_ZN4sha18compress8compress17hed9866f5faa45a82E(ptr noalias noundef nonnull align 4 dereferenceable(20) %9, ptr noalias noundef nonnull readonly align 1 dereferenceable(65) %1, i64 noundef 1) call void @llvm.lifetime.start.p0(ptr nonnull %8), !noalias !198 call void @llvm.lifetime.start.p0(ptr nonnull %7), !noalias !199 @@ -1473,14 +1476,14 @@ define hidden void @"_ZN68_$LT$sha1..Sha1Core$u20$as$u20$digest..core_api..Fixed call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(64) %8, ptr noundef nonnull align 8 dereferenceable(64) %7, i64 56, i1 false), !noalias !197 call void @llvm.lifetime.end.p0(ptr nonnull %7), !noalias !199 %33 = getelementptr inbounds nuw i8, ptr %8, i64 56 - store i64 %19, ptr %33, align 1, !alias.scope !202, !noalias !206 + store i64 %23, ptr %33, align 1, !alias.scope !202, !noalias !206 call void @_ZN4sha18compress8compress17hed9866f5faa45a82E(ptr noalias noundef nonnull align 4 dereferenceable(20) %9, ptr noalias noundef nonnull readonly align 1 dereferenceable(64) %8, i64 noundef 1) call void @llvm.lifetime.end.p0(ptr nonnull %8), !noalias !198 br label %_ZN4core4iter6traits8iterator8Iterator3zip17h3fa81f355e0d0856E.exit 34: ; preds = %._crit_edge %35 = getelementptr inbounds nuw i8, ptr %1, i64 56 - store i64 %19, ptr %35, align 1, !alias.scope !208, !noalias !212 + store i64 %23, ptr %35, align 1, !alias.scope !208, !noalias !212 call void @_ZN4sha18compress8compress17hed9866f5faa45a82E(ptr noalias noundef nonnull align 4 dereferenceable(20) %9, ptr noalias noundef nonnull readonly align 1 dereferenceable(65) %1, i64 noundef 1) br label %_ZN4core4iter6traits8iterator8Iterator3zip17h3fa81f355e0d0856E.exit diff --git a/bench/arrow/optimized/decimal.ll b/bench/arrow/optimized/decimal.ll index 61e5cd11c04..9b0371cf8ca 100644 --- a/bench/arrow/optimized/decimal.ll +++ b/bench/arrow/optimized/decimal.ll @@ -11963,19 +11963,10 @@ define internal fastcc void @_ZN5arrow12_GLOBAL__N_124Decimal256RealConversion17 .lr.ph45.split.preheader: ; preds = %._crit_edge %23 = getelementptr inbounds nuw i64, ptr %4, i64 %17 %24 = load i64, ptr %23, align 8, !tbaa !155 - %25 = sub nsw i32 64, %12 - %26 = zext nneg i32 %25 to i64 - %27 = shl i64 %24, %26 - %28 = icmp ne i64 %.0.lcssa, 0 - %29 = zext i1 %28 to i64 - %30 = zext nneg i32 %12 to i64 - %31 = lshr i64 %.0.lcssa, %30 - %32 = or i64 %31, %29 - %33 = or i64 %32, %27 - %34 = zext nneg i32 %12 to i64 - %35 = sub nsw i32 64, %12 - %36 = zext nneg i32 %35 to i64 - %37 = sext i32 %11 to i64 + %25 = zext nneg i32 %12 to i64 + %26 = sub nsw i32 64, %12 + %27 = zext nneg i32 %26 to i64 + %28 = sext i32 %11 to i64 %smax = tail call i32 @llvm.smax.i32(i32 %11, i32 3) %38 = add nuw nsw i32 %smax, 1 %wide.trip.count52 = zext nneg i32 %38 to i64 @@ -11992,18 +11983,30 @@ define internal fastcc void @_ZN5arrow12_GLOBAL__N_124Decimal256RealConversion17 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %5, ptr noundef nonnull align 8 dereferenceable(1) %scevgep, i64 %43, i1 false), !tbaa !155 br label %._crit_edge46 -._crit_edge46: ; preds = %56, %.lr.ph45.split.us.preheader - %.160 = phi i64 [ %.0.lcssa, %.lr.ph45.split.us.preheader ], [ %33, %56 ] +._crit_edge46.loopexit: ; preds = %56 + %35 = sub nsw i32 64, %12 + %36 = zext nneg i32 %35 to i64 + %37 = shl i64 %24, %36 + %38 = icmp ne i64 %.0.lcssa, 0 + %39 = zext i1 %38 to i64 + %40 = zext nneg i32 %12 to i64 + %41 = lshr i64 %.0.lcssa, %40 + %42 = or i64 %41, %39 + %43 = or i64 %42, %37 + br label %._crit_edge46 + +._crit_edge46: ; preds = %._crit_edge46.loopexit, %.lr.ph45.split.us.preheader + %.160 = phi i64 [ %.0.lcssa, %.lr.ph45.split.us.preheader ], [ %43, %._crit_edge46.loopexit ] call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(32) %5, i64 32, i1 false) %44 = icmp ugt i64 %.160, -9223372036854775808 br i1 %44, label %57, label %60 .lr.ph45.split: ; preds = %.lr.ph45.split.preheader, %56 - %indvars.iv49 = phi i64 [ %37, %.lr.ph45.split.preheader ], [ %indvars.iv.next50, %56 ] + %indvars.iv49 = phi i64 [ %28, %.lr.ph45.split.preheader ], [ %indvars.iv.next50, %56 ] %45 = getelementptr i64, ptr %4, i64 %indvars.iv49 %46 = load i64, ptr %45, align 8, !tbaa !155 - %47 = lshr i64 %46, %34 - %48 = sub nsw i64 %indvars.iv49, %37 + %47 = lshr i64 %46, %25 + %48 = sub nsw i64 %indvars.iv49, %28 %49 = getelementptr inbounds nuw i64, ptr %5, i64 %48 store i64 %47, ptr %49, align 8, !tbaa !155 %50 = icmp eq i64 %indvars.iv49, 3 @@ -12012,7 +12015,7 @@ define internal fastcc void @_ZN5arrow12_GLOBAL__N_124Decimal256RealConversion17 51: ; preds = %.lr.ph45.split %52 = getelementptr i8, ptr %45, i64 8 %53 = load i64, ptr %52, align 8, !tbaa !155 - %54 = shl i64 %53, %36 + %54 = shl i64 %53, %27 %55 = or i64 %54, %47 store i64 %55, ptr %49, align 8, !tbaa !155 br label %56 @@ -12020,7 +12023,7 @@ define internal fastcc void @_ZN5arrow12_GLOBAL__N_124Decimal256RealConversion17 56: ; preds = %.lr.ph45.split, %51 %indvars.iv.next50 = add nsw i64 %indvars.iv49, 1 %exitcond53.not = icmp eq i64 %indvars.iv.next50, %wide.trip.count52 - br i1 %exitcond53.not, label %._crit_edge46, label %.lr.ph45.split, !llvm.loop !483 + br i1 %exitcond53.not, label %._crit_edge46.loopexit, label %.lr.ph45.split, !llvm.loop !483 57: ; preds = %._crit_edge46 call void @llvm.lifetime.start.p0(ptr nonnull %6) diff --git a/bench/assimp/optimized/BlenderTessellator.ll b/bench/assimp/optimized/BlenderTessellator.ll index d435217bdf7..0a51123e5b6 100644 --- a/bench/assimp/optimized/BlenderTessellator.ll +++ b/bench/assimp/optimized/BlenderTessellator.ll @@ -1566,7 +1566,6 @@ declare void @_ZN6Assimp21BlenderBMeshConverter7AddFaceEiiii(ptr noundef nonnull ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: read) uwtable define hidden noundef float @_ZNK6Assimp21BlenderTessellatorP2T21FindLargestMatrixElemERK12aiMatrix3x3tIfE(ptr noundef nonnull readnone align 8 captures(none) dereferenceable(8) %0, ptr noundef nonnull readonly align 4 captures(none) dereferenceable(36) %1) local_unnamed_addr #11 align 2 { %3 = getelementptr inbounds nuw i8, ptr %1, i64 12 - %4 = getelementptr inbounds nuw i8, ptr %1, i64 24 br label %.preheader .preheader: ; preds = %.split.us, %2 @@ -1577,9 +1576,13 @@ define hidden noundef float @_ZNK6Assimp21BlenderTessellatorP2T21FindLargestMatr i32 1, label %_ZNK12aiMatrix3x3tIfEixEj.exit.us15 ] -_ZNK12aiMatrix3x3tIfEixEj.exit.us: ; preds = %.preheader, %_ZNK12aiMatrix3x3tIfEixEj.exit.us - %indvars.iv26 = phi i64 [ %indvars.iv.next27, %_ZNK12aiMatrix3x3tIfEixEj.exit.us ], [ 0, %.preheader ] - %.110.us = phi float [ %9, %_ZNK12aiMatrix3x3tIfEixEj.exit.us ], [ %.0919, %.preheader ] +_ZNK12aiMatrix3x3tIfEixEj.exit.us: ; preds = %.preheader + %4 = getelementptr inbounds nuw i8, ptr %1, i64 24 + br label %_ZNK12aiMatrix3x3tIfEixEj.exit.us + +_ZNK12aiMatrix3x3tIfEixEj.exit.us: ; preds = %_ZNK12aiMatrix3x3tIfEixEj.exit.us.preheader, %_ZNK12aiMatrix3x3tIfEixEj.exit.us + %indvars.iv26 = phi i64 [ 0, %_ZNK12aiMatrix3x3tIfEixEj.exit.us.preheader ], [ %indvars.iv.next27, %_ZNK12aiMatrix3x3tIfEixEj.exit.us ] + %.110.us = phi float [ %.0919, %_ZNK12aiMatrix3x3tIfEixEj.exit.us.preheader ], [ %9, %_ZNK12aiMatrix3x3tIfEixEj.exit.us ] %5 = getelementptr inbounds nuw float, ptr %4, i64 %indvars.iv26 %6 = load float, ptr %5, align 4 %7 = tail call noundef float @llvm.fabs.f32(float %6) @@ -1642,7 +1645,6 @@ define hidden void @_ZNK6Assimp21BlenderTessellatorP2T11ScaleMatrixERK12aiMatrix %12 = getelementptr inbounds nuw i8, ptr %0, i64 32 store float 1.000000e+00, ptr %12, align 4 %13 = getelementptr inbounds nuw i8, ptr %2, i64 12 - %14 = getelementptr inbounds nuw i8, ptr %2, i64 24 br label %.preheader .preheader: ; preds = %.split.us, %4 @@ -1652,8 +1654,12 @@ define hidden void @_ZNK6Assimp21BlenderTessellatorP2T11ScaleMatrixERK12aiMatrix i32 1, label %_ZNK12aiMatrix3x3tIfEixEj.exit.thread12.us ] -_ZNK12aiMatrix3x3tIfEixEj.exit.thread.us: ; preds = %.preheader, %_ZNK12aiMatrix3x3tIfEixEj.exit.thread.us - %indvars.iv25 = phi i64 [ %indvars.iv.next26, %_ZNK12aiMatrix3x3tIfEixEj.exit.thread.us ], [ 0, %.preheader ] +_ZNK12aiMatrix3x3tIfEixEj.exit.thread.us: ; preds = %.preheader + %14 = getelementptr inbounds nuw i8, ptr %2, i64 24 + br label %_ZNK12aiMatrix3x3tIfEixEj.exit.thread.us + +_ZNK12aiMatrix3x3tIfEixEj.exit.thread.us: ; preds = %_ZNK12aiMatrix3x3tIfEixEj.exit.thread.us.preheader, %_ZNK12aiMatrix3x3tIfEixEj.exit.thread.us + %indvars.iv25 = phi i64 [ 0, %_ZNK12aiMatrix3x3tIfEixEj.exit.thread.us.preheader ], [ %indvars.iv.next26, %_ZNK12aiMatrix3x3tIfEixEj.exit.thread.us ] %15 = getelementptr inbounds nuw float, ptr %14, i64 %indvars.iv25 %.pn.us = load float, ptr %15, align 4 %16 = fmul float %3, %.pn.us @@ -1711,9 +1717,9 @@ _ZNK12aiMatrix3x3tIfEixEj.exit.us.i.preheader: ; preds = %.preheader.i %5 = getelementptr inbounds nuw i8, ptr %1, i64 24 br label %_ZNK12aiMatrix3x3tIfEixEj.exit.us.i -_ZNK12aiMatrix3x3tIfEixEj.exit.us.i: ; preds = %_ZNK12aiMatrix3x3tIfEixEj.exit.us.i.preheader, %_ZNK12aiMatrix3x3tIfEixEj.exit.us.i - %indvars.iv26.i = phi i64 [ %indvars.iv.next27.i, %_ZNK12aiMatrix3x3tIfEixEj.exit.us.i ], [ 0, %_ZNK12aiMatrix3x3tIfEixEj.exit.us.i.preheader ] - %.110.us.i = phi float [ %10, %_ZNK12aiMatrix3x3tIfEixEj.exit.us.i ], [ %.0919.i, %_ZNK12aiMatrix3x3tIfEixEj.exit.us.i.preheader ] +_ZNK12aiMatrix3x3tIfEixEj.exit.us.i: ; preds = %_ZNK12aiMatrix3x3tIfEixEj.exit.us.i, %_ZNK12aiMatrix3x3tIfEixEj.exit.us.preheader.i + %indvars.iv26.i = phi i64 [ 0, %_ZNK12aiMatrix3x3tIfEixEj.exit.us.preheader.i ], [ %indvars.iv.next27.i, %_ZNK12aiMatrix3x3tIfEixEj.exit.us.i ] + %.110.us.i = phi float [ %.0919.i, %_ZNK12aiMatrix3x3tIfEixEj.exit.us.preheader.i ], [ %10, %_ZNK12aiMatrix3x3tIfEixEj.exit.us.i ] %6 = getelementptr inbounds nuw float, ptr %5, i64 %indvars.iv26.i %7 = load float, ptr %6, align 4 %8 = tail call noundef float @llvm.fabs.f32(float %7) @@ -2581,8 +2587,8 @@ define linkonce_odr void @_ZNSt6vectorIPN3p2t5PointESaIS2_EE17_M_default_appendE _ZSt6fill_nIPPN3p2t5PointEmS2_ET_S4_T0_RKT1_.exit.loopexit.i.i.i: ; preds = %19 %.idx.i.i.i.i.i = shl nuw nsw i64 %21, 3 - tail call void @llvm.memset.p0.i64(ptr align 8 %20, i8 0, i64 %.idx.i.i.i.i.i, i1 false) %23 = getelementptr inbounds nuw i8, ptr %20, i64 %.idx.i.i.i.i.i + tail call void @llvm.memset.p0.i64(ptr align 8 %20, i8 0, i64 %.idx.i.i.i.i.i, i1 false) br label %_ZSt27__uninitialized_default_n_aIPPN3p2t5PointEmS2_ET_S4_T0_RSaIT1_E.exit _ZSt27__uninitialized_default_n_aIPPN3p2t5PointEmS2_ET_S4_T0_RSaIT1_E.exit: ; preds = %19, %_ZSt6fill_nIPPN3p2t5PointEmS2_ET_S4_T0_RKT1_.exit.loopexit.i.i.i diff --git a/bench/assimp/optimized/MakeVerboseFormat.ll b/bench/assimp/optimized/MakeVerboseFormat.ll index e46e7a8d5d0..d20a01c0799 100644 --- a/bench/assimp/optimized/MakeVerboseFormat.ll +++ b/bench/assimp/optimized/MakeVerboseFormat.ll @@ -887,28 +887,29 @@ _ZNSt6vectorIjSaIjEEC2EmRKjRKS0_.exit: ; preds = %.noexc, %1 .lr.ph: ; preds = %13 %16 = getelementptr inbounds nuw i8, ptr %14, i64 8 - %.pre = load ptr, ptr %16, align 8 - %17 = zext i32 %15 to i64 - br label %19 + br label %20 -18: ; preds = %19 +18: ; preds = %20 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %.not = icmp samesign ult i64 %indvars.iv.next, %17 - br i1 %.not, label %19, label %.critedge, !llvm.loop !28 - -19: ; preds = %.lr.ph, %18 - %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %18 ] - %20 = getelementptr inbounds nuw i32, ptr %.pre, i64 %indvars.iv - %21 = load i32, ptr %20, align 4 - %22 = zext i32 %21 to i64 - %23 = getelementptr inbounds nuw i32, ptr %.sroa.025.0, i64 %22 + %18 = load i32, ptr %14, align 8 + %19 = zext i32 %18 to i64 + %.not = icmp samesign ult i64 %indvars.iv.next, %19 + br i1 %.not, label %20, label %.critedge, !llvm.loop !28 + +20: ; preds = %.lr.ph, %17 + %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %17 ] + %21 = load ptr, ptr %16, align 8 + %23 = getelementptr inbounds nuw i32, ptr %21, i64 %indvars.iv %24 = load i32, ptr %23, align 4 - %25 = add i32 %24, 1 - store i32 %25, ptr %23, align 4 - %26 = icmp eq i32 %25, 2 - br i1 %26, label %.critedge24.thread, label %18 - -.critedge: ; preds = %18, %13 + %24 = zext i32 %24 to i64 + %25 = getelementptr inbounds nuw i32, ptr %.sroa.025.0, i64 %24 + %26 = load i32, ptr %25, align 4 + %27 = add i32 %27, 1 + store i32 %27, ptr %25, align 4 + %28 = icmp eq i32 %27, 2 + br i1 %28, label %.critedge24.thread, label %17 + +.critedge: ; preds = %17, %13 %indvars.iv.next42 = add nuw nsw i64 %indvars.iv41, 1 %exitcond.not = icmp eq i64 %indvars.iv.next42, %wide.trip.count br i1 %exitcond.not, label %.critedge24, label %13, !llvm.loop !29 @@ -917,8 +918,8 @@ _ZNSt6vectorIjSaIjEEC2EmRKjRKS0_.exit: ; preds = %.noexc, %1 %.not.i.i.i = icmp eq ptr %.sroa.025.0, null br i1 %.not.i.i.i, label %_ZNSt6vectorIjSaIjEED2Ev.exit, label %.critedge24.thread -.critedge24.thread: ; preds = %19, %.critedge24 - %.not2232 = phi i1 [ true, %.critedge24 ], [ false, %19 ] +.critedge24.thread: ; preds = %20, %.critedge24 + %.not2232 = phi i1 [ true, %.critedge24 ], [ false, %20 ] %27 = ptrtoint ptr %.sroa.025.0 to i64 %28 = sub i64 %.sroa.11.0, %27 tail call void @_ZdlPvm(ptr noundef nonnull %.sroa.025.0, i64 noundef %28) #13 @@ -985,28 +986,29 @@ _ZNSt6vectorIjSaIjEEC2EmRKjRKS0_.exit.i: ; preds = %.noexc.i, %6 .lr.ph.i: ; preds = %22 %25 = getelementptr inbounds nuw i8, ptr %23, i64 8 - %.pre.i = load ptr, ptr %25, align 8 - %26 = zext i32 %24 to i64 - br label %28 + br label %29 -27: ; preds = %28 +27: ; preds = %29 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 - %exitcond.not = icmp eq i64 %indvars.iv.next.i, %26 - br i1 %exitcond.not, label %.critedge.i, label %28, !llvm.loop !28 - -28: ; preds = %27, %.lr.ph.i - %indvars.iv.i = phi i64 [ 0, %.lr.ph.i ], [ %indvars.iv.next.i, %27 ] - %29 = getelementptr inbounds nuw i32, ptr %.pre.i, i64 %indvars.iv.i - %30 = load i32, ptr %29, align 4 - %31 = zext i32 %30 to i64 - %32 = getelementptr inbounds nuw i32, ptr %.sroa.025.0.i, i64 %31 + %27 = load i32, ptr %23, align 8 + %28 = zext i32 %27 to i64 + %.not.i = icmp samesign ult i64 %indvars.iv.next.i, %28 + br i1 %.not.i, label %27, label %.critedge.i, !llvm.loop !28 + +29: ; preds = %26, %.lr.ph.i + %indvars.iv.i = phi i64 [ 0, %.lr.ph.i ], [ %indvars.iv.next.i, %26 ] + %28 = load ptr, ptr %25, align 8 + %32 = getelementptr inbounds nuw i32, ptr %30, i64 %indvars.iv.i %33 = load i32, ptr %32, align 4 - %34 = add i32 %33, 1 - store i32 %34, ptr %32, align 4 - %35 = icmp eq i32 %34, 2 - br i1 %35, label %_Z21IsMeshInVerboseFormatPK6aiMesh.exit, label %27 - -.critedge.i: ; preds = %27, %22 + %33 = zext i32 %33 to i64 + %34 = getelementptr inbounds nuw i32, ptr %.sroa.025.0.i, i64 %33 + %35 = load i32, ptr %34, align 4 + %36 = add i32 %35, 1 + store i32 %36, ptr %34, align 4 + %37 = icmp eq i32 %36, 2 + br i1 %37, label %_Z21IsMeshInVerboseFormatPK6aiMesh.exit, label %26 + +.critedge.i: ; preds = %26, %22 %indvars.iv.next42.i = add nuw nsw i64 %indvars.iv41.i, 1 %exitcond.not.i = icmp eq i64 %indvars.iv.next42.i, %wide.trip.count.i br i1 %exitcond.not.i, label %.critedge24.i, label %22, !llvm.loop !29 @@ -1016,16 +1018,16 @@ _ZNSt6vectorIjSaIjEEC2EmRKjRKS0_.exit.i: ; preds = %.noexc.i, %6 br i1 %.not.i.i.i.i, label %_Z21IsMeshInVerboseFormatPK6aiMesh.exit.thread, label %_Z21IsMeshInVerboseFormatPK6aiMesh.exit.thread9 _Z21IsMeshInVerboseFormatPK6aiMesh.exit.thread9: ; preds = %.critedge24.i - %36 = ptrtoint ptr %.sroa.025.0.i to i64 - %37 = sub i64 %.sroa.11.0.i, %36 - tail call void @_ZdlPvm(ptr noundef nonnull %.sroa.025.0.i, i64 noundef %37) #13 - %.pre = load i32, ptr %2, align 8 - br label %_Z21IsMeshInVerboseFormatPK6aiMesh.exit.thread - -_Z21IsMeshInVerboseFormatPK6aiMesh.exit: ; preds = %28 %38 = ptrtoint ptr %.sroa.025.0.i to i64 %39 = sub i64 %.sroa.11.0.i, %38 tail call void @_ZdlPvm(ptr noundef nonnull %.sroa.025.0.i, i64 noundef %39) #13 + %.pre = load i32, ptr %2, align 8 + br label %_Z21IsMeshInVerboseFormatPK6aiMesh.exit.thread + +_Z21IsMeshInVerboseFormatPK6aiMesh.exit: ; preds = %29 + %40 = ptrtoint ptr %.sroa.025.0.i to i64 + %41 = sub i64 %.sroa.11.0.i, %40 + tail call void @_ZdlPvm(ptr noundef nonnull %.sroa.025.0.i, i64 noundef %41) #13 br label %.loopexit _Z21IsMeshInVerboseFormatPK6aiMesh.exit.thread: ; preds = %.critedge24.i, %_Z21IsMeshInVerboseFormatPK6aiMesh.exit.thread9 diff --git a/bench/box2d/optimized/geometry.ll b/bench/box2d/optimized/geometry.ll index 39a02496356..e0d4c141618 100644 --- a/bench/box2d/optimized/geometry.ll +++ b/bench/box2d/optimized/geometry.ll @@ -146,8 +146,6 @@ define void @b2MakePolygon(ptr dead_on_unwind noalias writable sret(%struct.b2Po .lr.ph.i: ; preds = %._crit_edge %31 = add nsw i32 %.pr, -1 - %.sroa.0.0.vec.extract.i.i = extractelement <2 x float> %.sroa.013.0.copyload.i, i64 0 - %.sroa.0.4.vec.extract.i.i = extractelement <2 x float> %.sroa.013.0.copyload.i, i64 1 %wide.trip.count.i = zext nneg i32 %31 to i64 %.phi.trans.insert.i = getelementptr inbounds nuw i8, ptr %0, i64 8 %.pre.i = load <2 x float>, ptr %.phi.trans.insert.i, align 4 @@ -189,12 +187,17 @@ define void @b2MakePolygon(ptr dead_on_unwind noalias writable sret(%struct.b2Po %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, %wide.trip.count.i br i1 %exitcond.not.i, label %b2ComputePolygonCentroid.exit, label %32, !llvm.loop !23 -b2ComputePolygonCentroid.exit: ; preds = %32, %.._crit_edge_crit_edge.i - %52 = phi ptr [ %30, %.._crit_edge_crit_edge.i ], [ %28, %32 ] - %.sroa.01.4.vec.extract.i.pre-phi.i = phi float [ %.pre57.i, %.._crit_edge_crit_edge.i ], [ %.sroa.0.4.vec.extract.i.i, %32 ] - %.sroa.01.0.vec.extract.i.pre-phi.i = phi float [ %.pre56.i, %.._crit_edge_crit_edge.i ], [ %.sroa.0.0.vec.extract.i.i, %32 ] - %.0.lcssa.i = phi float [ 0.000000e+00, %.._crit_edge_crit_edge.i ], [ %51, %32 ] - %.sroa.022.0.lcssa.i = phi <2 x float> [ zeroinitializer, %.._crit_edge_crit_edge.i ], [ %.sroa.03.4.vec.insert.i.i, %32 ] +b2ComputePolygonCentroid.exit: ; preds = %32 + %.sroa.0.0.vec.extract.i.i = extractelement <2 x float> %.sroa.013.0.copyload.i, i64 0 + %.sroa.0.4.vec.extract.i.i = extractelement <2 x float> %.sroa.013.0.copyload.i, i64 1 + br label %b2ComputePolygonCentroid.exit + +b2ComputePolygonCentroid.exit:; preds = %b2ComputePolygonCentroid.exit, %.._crit_edge_crit_edge.i + %52 = phi ptr [ %30, %.._crit_edge_crit_edge.i ], [ %28, %b2ComputePolygonCentroid.exit.loopexit ] + %.sroa.01.4.vec.extract.i.pre-phi.i = phi float [ %.pre57.i, %.._crit_edge_crit_edge.i ], [ %.sroa.0.4.vec.extract.i.i, %b2ComputePolygonCentroid.exit.loopexit ] + %.sroa.01.0.vec.extract.i.pre-phi.i = phi float [ %.pre56.i, %.._crit_edge_crit_edge.i ], [ %.sroa.0.0.vec.extract.i.i, %b2ComputePolygonCentroid.exit.loopexit ] + %.0.lcssa.i = phi float [ 0.000000e+00, %.._crit_edge_crit_edge.i ], [ %51, %b2ComputePolygonCentroid.exit.loopexit ] + %.sroa.022.0.lcssa.i = phi <2 x float> [ zeroinitializer, %.._crit_edge_crit_edge.i ], [ %.sroa.03.4.vec.insert.i.i, %b2ComputePolygonCentroid.exit.loopexit ] %53 = fdiv float 1.000000e+00, %.0.lcssa.i %.sroa.022.0.vec.extract.i = extractelement <2 x float> %.sroa.022.0.lcssa.i, i64 0 %54 = fmul float %53, %.sroa.022.0.vec.extract.i @@ -408,8 +411,6 @@ define void @b2MakeOffsetRoundedPolygon(ptr dead_on_unwind noalias writable sret .lr.ph.i: ; preds = %._crit_edge %42 = add nsw i32 %.pr, -1 - %.sroa.0.0.vec.extract.i.i = extractelement <2 x float> %.sroa.013.0.copyload.i, i64 0 - %.sroa.0.4.vec.extract.i.i = extractelement <2 x float> %.sroa.013.0.copyload.i, i64 1 %wide.trip.count.i = zext nneg i32 %42 to i64 %.phi.trans.insert.i = getelementptr inbounds nuw i8, ptr %0, i64 8 %.pre.i = load <2 x float>, ptr %.phi.trans.insert.i, align 4 @@ -451,12 +452,17 @@ define void @b2MakeOffsetRoundedPolygon(ptr dead_on_unwind noalias writable sret %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, %wide.trip.count.i br i1 %exitcond.not.i, label %b2ComputePolygonCentroid.exit, label %43, !llvm.loop !23 -b2ComputePolygonCentroid.exit: ; preds = %43, %.._crit_edge_crit_edge.i - %63 = phi ptr [ %41, %.._crit_edge_crit_edge.i ], [ %39, %43 ] - %.sroa.01.4.vec.extract.i.pre-phi.i = phi float [ %.pre57.i, %.._crit_edge_crit_edge.i ], [ %.sroa.0.4.vec.extract.i.i, %43 ] - %.sroa.01.0.vec.extract.i.pre-phi.i = phi float [ %.pre56.i, %.._crit_edge_crit_edge.i ], [ %.sroa.0.0.vec.extract.i.i, %43 ] - %.0.lcssa.i = phi float [ 0.000000e+00, %.._crit_edge_crit_edge.i ], [ %62, %43 ] - %.sroa.022.0.lcssa.i = phi <2 x float> [ zeroinitializer, %.._crit_edge_crit_edge.i ], [ %.sroa.03.4.vec.insert.i.i, %43 ] +b2ComputePolygonCentroid.exit: ; preds = %43 + %.sroa.0.0.vec.extract.i.i = extractelement <2 x float> %.sroa.013.0.copyload.i, i64 0 + %.sroa.0.4.vec.extract.i.i = extractelement <2 x float> %.sroa.013.0.copyload.i, i64 1 + br label %b2ComputePolygonCentroid.exit + +b2ComputePolygonCentroid.exit:; preds = %b2ComputePolygonCentroid.exit, %.._crit_edge_crit_edge.i + %63 = phi ptr [ %41, %.._crit_edge_crit_edge.i ], [ %39, %b2ComputePolygonCentroid.exit.loopexit ] + %.sroa.01.4.vec.extract.i.pre-phi.i = phi float [ %.pre57.i, %.._crit_edge_crit_edge.i ], [ %.sroa.0.4.vec.extract.i.i, %b2ComputePolygonCentroid.exit.loopexit ] + %.sroa.01.0.vec.extract.i.pre-phi.i = phi float [ %.pre56.i, %.._crit_edge_crit_edge.i ], [ %.sroa.0.0.vec.extract.i.i, %b2ComputePolygonCentroid.exit.loopexit ] + %.0.lcssa.i = phi float [ 0.000000e+00, %.._crit_edge_crit_edge.i ], [ %62, %b2ComputePolygonCentroid.exit.loopexit ] + %.sroa.022.0.lcssa.i = phi <2 x float> [ zeroinitializer, %.._crit_edge_crit_edge.i ], [ %.sroa.03.4.vec.insert.i.i, %b2ComputePolygonCentroid.exit.loopexit ] %64 = fdiv float 1.000000e+00, %.0.lcssa.i %.sroa.022.0.vec.extract.i = extractelement <2 x float> %.sroa.022.0.lcssa.i, i64 0 %65 = fmul float %64, %.sroa.022.0.vec.extract.i @@ -1128,19 +1134,22 @@ b2Normalize.exit: ; preds = %71, %83 .lr.ph170: ; preds = %.loopexit.thread192, %.loopexit %.sroa.031.0.copyload194 = phi <2 x float> [ %.sroa.031.0.copyload193, %.loopexit.thread192 ], [ %.sroa.031.0.copyload, %.loopexit ] %96 = add nsw i32 %7, -1 - %.sroa.0.0.vec.extract.i124 = extractelement <2 x float> %.sroa.031.0.copyload194, i64 0 - %.sroa.0.4.vec.extract.i127 = extractelement <2 x float> %.sroa.031.0.copyload194, i64 1 %wide.trip.count180 = zext nneg i32 %96 to i64 %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %5, i64 8 %.pre = load <2 x float>, ptr %.phi.trans.insert, align 8 br label %113 -._crit_edge: ; preds = %113, %.loopexit.._crit_edge_crit_edge - %.sroa.01.4.vec.extract.i112.pre-phi = phi float [ %.pre188, %.loopexit.._crit_edge_crit_edge ], [ %.sroa.0.4.vec.extract.i127, %113 ] - %.sroa.01.0.vec.extract.i109.pre-phi = phi float [ %.pre187, %.loopexit.._crit_edge_crit_edge ], [ %.sroa.0.0.vec.extract.i124, %113 ] - %.096.lcssa = phi float [ 0.000000e+00, %.loopexit.._crit_edge_crit_edge ], [ %142, %113 ] - %.095.lcssa = phi float [ 0.000000e+00, %.loopexit.._crit_edge_crit_edge ], [ %125, %113 ] - %.sroa.039.0.lcssa = phi <2 x float> [ zeroinitializer, %.loopexit.._crit_edge_crit_edge ], [ %.sroa.03.4.vec.insert.i150, %113 ] +._crit_edge: ; preds = %113 + %.sroa.0.0.vec.extract.i124 = extractelement <2 x float> %.sroa.031.0.copyload194, i64 0 + %.sroa.0.4.vec.extract.i127 = extractelement <2 x float> %.sroa.031.0.copyload194, i64 1 + br label %._crit_edge + +._crit_edge:; preds = %._crit_edge, %.loopexit.._crit_edge_crit_edge + %.sroa.01.4.vec.extract.i112.pre-phi = phi float [ %.pre188, %.loopexit.._crit_edge_crit_edge ], [ %.sroa.0.4.vec.extract.i127, %._crit_edge.loopexit ] + %.sroa.01.0.vec.extract.i109.pre-phi = phi float [ %.pre187, %.loopexit.._crit_edge_crit_edge ], [ %.sroa.0.0.vec.extract.i124, %._crit_edge.loopexit ] + %.096.lcssa = phi float [ 0.000000e+00, %.loopexit.._crit_edge_crit_edge ], [ %142, %._crit_edge.loopexit ] + %.095.lcssa = phi float [ 0.000000e+00, %.loopexit.._crit_edge_crit_edge ], [ %125, %._crit_edge.loopexit ] + %.sroa.039.0.lcssa = phi <2 x float> [ zeroinitializer, %.loopexit.._crit_edge_crit_edge ], [ %.sroa.03.4.vec.insert.i150, %._crit_edge.loopexit ] %97 = fmul float %1, %.095.lcssa store float %97, ptr %4, align 8, !tbaa !46 %98 = fdiv float 1.000000e+00, %.095.lcssa diff --git a/bench/bullet3/optimized/MultiBodyTreeImpl.ll b/bench/bullet3/optimized/MultiBodyTreeImpl.ll index 6f87ae60b6e..2fb7198dbe8 100644 --- a/bench/bullet3/optimized/MultiBodyTreeImpl.ll +++ b/bench/bullet3/optimized/MultiBodyTreeImpl.ll @@ -5132,10 +5132,10 @@ define dso_local noundef range(i32 -1, 1) i32 @_ZN24btInverseDynamicsBullet313Mu %48 = getelementptr inbounds nuw i8, ptr %29, i64 624 %49 = getelementptr inbounds nuw i8, ptr %29, i64 648 %50 = load ptr, ptr %49, align 8 - %.promoted16.i = load i32, ptr %48, align 8 br i1 %45, label %.preheader.us.preheader.i, label %_ZN24btInverseDynamicsBullet35mat3xaSERKS0_.exit .preheader.us.preheader.i: ; preds = %.preheader.lr.ph.i + %.promoted16.i = load i32, ptr %48, align 8 %51 = zext nneg i32 %40 to i64 %wide.trip.count24.i = zext nneg i32 %43 to i64 br label %.preheader.us.i @@ -6751,9 +6751,6 @@ _ZN24btInverseDynamicsBullet3L20setThreeDoFJacobiansEiRNS_4vec3ES1_.exit: ; pred %1004 = fadd float %976, %995 %1005 = fadd float %982, %1000 %1006 = fadd float %988, %1003 - %.sroa.0.0.vec.insert.i258 = insertelement <2 x float> poison, float %1004, i64 0 - %.sroa.0.4.vec.insert.i259 = insertelement <2 x float> %.sroa.0.0.vec.insert.i258, float %1005, i64 1 - %.sroa.3.12.vec.insert.i260 = insertelement <2 x float> , float %1006, i64 0 %1007 = load float, ptr %946, align 4, !tbaa !62 %1008 = fmul float %996, %1007 %1009 = fmul float %992, %1007 @@ -6770,9 +6767,6 @@ _ZN24btInverseDynamicsBullet3L20setThreeDoFJacobiansEiRNS_4vec3ES1_.exit: ; pred %1020 = fsub float %1008, %1013 %1021 = fsub float %1009, %1016 %1022 = fsub float %1010, %1019 - %.sroa.0.0.vec.insert.i273 = insertelement <2 x float> poison, float %1020, i64 0 - %.sroa.0.4.vec.insert.i274 = insertelement <2 x float> %.sroa.0.0.vec.insert.i273, float %1021, i64 1 - %.sroa.3.12.vec.insert.i275 = insertelement <2 x float> , float %1022, i64 0 %1023 = fmul float %971, %1005 %1024 = call float @llvm.fmuladd.f32(float %969, float %1004, float %1023) %1025 = call noundef float @llvm.fmuladd.f32(float %975, float %1006, float %1024) @@ -6799,7 +6793,16 @@ _ZN24btInverseDynamicsBullet3L20setThreeDoFJacobiansEiRNS_4vec3ES1_.exit: ; pred %1040 = getelementptr inbounds nuw i32, ptr %1039, i64 %indvars.iv.next710 %1041 = load i32, ptr %1040, align 4, !tbaa !73 %1042 = icmp sgt i32 %1041, -1 - br i1 %1042, label %.lr.ph672, label %.loopexit631 + br i1 %1042, label %.lr.ph672.preheader, label %.loopexit631 + +.lr.ph672.preheader: ; preds = %._crit_edge659 + %.sroa.3.12.vec.insert.i275 = insertelement <2 x float> , float %1022, i64 0 + %.sroa.0.0.vec.insert.i273 = insertelement <2 x float> poison, float %1020, i64 0 + %.sroa.0.4.vec.insert.i274 = insertelement <2 x float> %.sroa.0.0.vec.insert.i273, float %1021, i64 1 + %.sroa.3.12.vec.insert.i260 = insertelement <2 x float> , float %1006, i64 0 + %.sroa.0.0.vec.insert.i258 = insertelement <2 x float> poison, float %1004, i64 0 + %.sroa.0.4.vec.insert.i259 = insertelement <2 x float> %.sroa.0.0.vec.insert.i258, float %1005, i64 1 + br label %.lr.ph672 .lr.ph658: ; preds = %_ZN24btInverseDynamicsBullet3L20setThreeDoFJacobiansEiRNS_4vec3ES1_.exit, %1110 %1043 = phi ptr [ %1111, %1110 ], [ %1035, %_ZN24btInverseDynamicsBullet3L20setThreeDoFJacobiansEiRNS_4vec3ES1_.exit ] @@ -6957,14 +6960,14 @@ _ZN24btInverseDynamicsBullet3L18setSixDoFJacobiansEiRNS_4vec3ES1_.exit283: ; pre %.not205.not = icmp sgt i32 %.0194657, %926 br i1 %.not205.not, label %.lr.ph658, label %._crit_edge659, !llvm.loop !196 -.lr.ph672: ; preds = %._crit_edge659, %._crit_edge664 - %1115 = phi ptr [ %1187, %._crit_edge664 ], [ %1039, %._crit_edge659 ] - %.0190670 = phi i32 [ %1189, %._crit_edge664 ], [ %1041, %._crit_edge659 ] - %.0191669 = phi i32 [ %.0190670, %._crit_edge664 ], [ %947, %._crit_edge659 ] - %.sroa.18394.0668 = phi <2 x float> [ %.sroa.18394.8.vec.insert, %._crit_edge664 ], [ %.sroa.3.12.vec.insert.i260, %._crit_edge659 ] - %.sroa.0371.0667 = phi <2 x float> [ %.sroa.0371.4.vec.insert, %._crit_edge664 ], [ %.sroa.0.4.vec.insert.i259, %._crit_edge659 ] - %.sroa.16354.0666 = phi <2 x float> [ %.sroa.3.12.vec.insert.i291, %._crit_edge664 ], [ %.sroa.3.12.vec.insert.i275, %._crit_edge659 ] - %.sroa.0333.0665 = phi <2 x float> [ %.sroa.0.4.vec.insert.i290, %._crit_edge664 ], [ %.sroa.0.4.vec.insert.i274, %._crit_edge659 ] +.lr.ph672: ; preds = %.lr.ph672.preheader, %._crit_edge664 + %1115 = phi ptr [ %1187, %._crit_edge664 ], [ %1039, %.lr.ph672.preheader ] + %.0190670 = phi i32 [ %1189, %._crit_edge664 ], [ %1041, %.lr.ph672.preheader ] + %.0191669 = phi i32 [ %.0190670, %._crit_edge664 ], [ %947, %.lr.ph672.preheader ] + %.sroa.18394.0668 = phi <2 x float> [ %.sroa.18394.8.vec.insert, %._crit_edge664 ], [ %.sroa.3.12.vec.insert.i260, %.lr.ph672.preheader ] + %.sroa.0371.0667 = phi <2 x float> [ %.sroa.0371.4.vec.insert, %._crit_edge664 ], [ %.sroa.0.4.vec.insert.i259, %.lr.ph672.preheader ] + %.sroa.16354.0666 = phi <2 x float> [ %.sroa.3.12.vec.insert.i291, %._crit_edge664 ], [ %.sroa.3.12.vec.insert.i275, %.lr.ph672.preheader ] + %.sroa.0333.0665 = phi <2 x float> [ %.sroa.0.4.vec.insert.i290, %._crit_edge664 ], [ %.sroa.0.4.vec.insert.i274, %.lr.ph672.preheader ] %1116 = load ptr, ptr %567, align 8, !tbaa !34 %1117 = sext i32 %.0191669 to i64 %1118 = getelementptr inbounds %"struct.btInverseDynamicsBullet3::RigidBody", ptr %1116, i64 %1117 @@ -9234,10 +9237,10 @@ define linkonce_odr dso_local void @_ZN24btInverseDynamicsBullet35mat3xC2ERKS0_( %22 = load ptr, ptr %21, align 8 %23 = getelementptr inbounds nuw i8, ptr %0, i64 16 %24 = load ptr, ptr %4, align 8 - %.promoted16.i = load i32, ptr %23, align 8 br i1 %20, label %.preheader.us.preheader.i, label %_ZN24btInverseDynamicsBullet35mat3xaSERKS0_.exit .preheader.us.preheader.i: ; preds = %.preheader.lr.ph.i + %.promoted16.i = load i32, ptr %23, align 8 %25 = zext nneg i32 %16 to i64 %wide.trip.count24.i = zext nneg i32 %18 to i64 br label %.preheader.us.i diff --git a/bench/casadi/optimized/einstein.ll b/bench/casadi/optimized/einstein.ll index a80b5837f99..f633454a522 100644 --- a/bench/casadi/optimized/einstein.ll +++ b/bench/casadi/optimized/einstein.ll @@ -10294,8 +10294,8 @@ _ZSt22__move_median_to_firstIN9__gnu_cxx17__normal_iteratorIPSt4pairIxxESt6vecto br label %55 55: ; preds = %68, %_ZSt22__move_median_to_firstIN9__gnu_cxx17__normal_iteratorIPSt4pairIxxESt6vectorIS3_SaIS3_EEEENS0_5__ops15_Iter_comp_iterIZN6casadi16einstein_processINSB_2MXEEExRKT_SG_SG_RKS5_IxSaIxEESK_SK_SK_SK_SK_RSI_SL_SL_SL_EUlRKS3_SN_E_EEEvSE_SE_SE_SE_T0_.exit - %.sroa.010.0.i = phi ptr [ %9, %_ZSt22__move_median_to_firstIN9__gnu_cxx17__normal_iteratorIPSt4pairIxxESt6vectorIS3_SaIS3_EEEENS0_5__ops15_Iter_comp_iterIZN6casadi16einstein_processINSB_2MXEEExRKT_SG_SG_RKS5_IxSaIxEESK_SK_SK_SK_SK_RSI_SL_SL_SL_EUlRKS3_SN_E_EEEvSE_SE_SE_SE_T0_.exit ], [ %61, %68 ] - %.sroa.0.0.i = phi ptr [ %1, %_ZSt22__move_median_to_firstIN9__gnu_cxx17__normal_iteratorIPSt4pairIxxESt6vectorIS3_SaIS3_EEEENS0_5__ops15_Iter_comp_iterIZN6casadi16einstein_processINSB_2MXEEExRKT_SG_SG_RKS5_IxSaIxEESK_SK_SK_SK_SK_RSI_SL_SL_SL_EUlRKS3_SN_E_EEEvSE_SE_SE_SE_T0_.exit ], [ %.sroa.0.1.i, %68 ] + %.sroa.010.0.i = phi ptr [ %9, %_ZSt22__move_median_to_firstIN9__gnu_cxx17__normal_iteratorIPSt4pairIxxESt6vectorIS3_SaIS3_EEEENS0_5__ops15_Iter_comp_iterIZN6casadi16einstein_processINSB_2MXEEExRKT_SG_SG_RKS5_IxSaIxEESK_SK_SK_SK_SK_RSI_SL_SL_SL_EUlRKS3_SN_E_EEEvSE_SE_SE_SE_T0_.exit ], [ %61, %67 ] + %.sroa.0.0.i = phi ptr [ %1, %_ZSt22__move_median_to_firstIN9__gnu_cxx17__normal_iteratorIPSt4pairIxxESt6vectorIS3_SaIS3_EEEENS0_5__ops15_Iter_comp_iterIZN6casadi16einstein_processINSB_2MXEEExRKT_SG_SG_RKS5_IxSaIxEESK_SK_SK_SK_SK_RSI_SL_SL_SL_EUlRKS3_SN_E_EEEvSE_SE_SE_SE_T0_.exit ], [ %.sroa.0.1.i, %67 ] %56 = load i64, ptr %54, align 8, !tbaa !101 br label %57 @@ -10307,12 +10307,8 @@ _ZSt22__move_median_to_firstIN9__gnu_cxx17__normal_iteratorIPSt4pairIxxESt6vecto %61 = getelementptr inbounds nuw i8, ptr %.sroa.010.1.i, i64 16 br i1 %60, label %57, label %.preheader.i.preheader, !llvm.loop !196 -.preheader.i.preheader: ; preds = %57 - %62 = getelementptr inbounds nuw i8, ptr %.sroa.010.1.i, i64 8 - br label %.preheader.i - -.preheader.i: ; preds = %.preheader.i.preheader, %.preheader.i - %.sroa.0.0.pn.i = phi ptr [ %.sroa.0.1.i, %.preheader.i ], [ %.sroa.0.0.i, %.preheader.i.preheader ] +.preheader.i.preheader: ; preds = %57, %.preheader.i + %.sroa.0.0.pn.i = phi ptr [ %.sroa.0.1.i, %.preheader.i ], [ %.sroa.0.0.i, %57 ] %.sroa.0.1.i = getelementptr inbounds i8, ptr %.sroa.0.0.pn.i, i64 -16 %63 = getelementptr inbounds i8, ptr %.sroa.0.0.pn.i, i64 -8 %64 = load i64, ptr %63, align 8, !tbaa !101 @@ -10325,13 +10321,14 @@ _ZSt22__move_median_to_firstIN9__gnu_cxx17__normal_iteratorIPSt4pairIxxESt6vecto 68: ; preds = %66 %69 = getelementptr inbounds i8, ptr %.sroa.0.0.pn.i, i64 -8 + %69 = getelementptr inbounds nuw i8, ptr %.sroa.010.1.i, i64 8 %70 = load i64, ptr %.sroa.010.1.i, align 8, !tbaa !49 %71 = load i64, ptr %.sroa.0.1.i, align 8, !tbaa !49 store i64 %71, ptr %.sroa.010.1.i, align 8, !tbaa !49 store i64 %70, ptr %.sroa.0.1.i, align 8, !tbaa !49 - %72 = load i64, ptr %62, align 8, !tbaa !49 + %72 = load i64, ptr %69, align 8, !tbaa !49 %73 = load i64, ptr %69, align 8, !tbaa !49 - store i64 %73, ptr %62, align 8, !tbaa !49 + store i64 %73, ptr %69, align 8, !tbaa !49 store i64 %72, ptr %69, align 8, !tbaa !49 br label %55, !llvm.loop !198 @@ -10840,8 +10837,8 @@ define linkonce_odr void @_ZNSt6vectorIxSaIxEE17_M_default_appendEm(ptr noundef _ZSt6fill_nIPxmxET_S1_T0_RKT1_.exit.loopexit.i.i.i: ; preds = %19 %.idx.i.i.i.i.i = shl nuw nsw i64 %21, 3 - tail call void @llvm.memset.p0.i64(ptr align 8 %20, i8 0, i64 %.idx.i.i.i.i.i, i1 false), !tbaa !49 %23 = getelementptr inbounds nuw i8, ptr %20, i64 %.idx.i.i.i.i.i + tail call void @llvm.memset.p0.i64(ptr align 8 %20, i8 0, i64 %.idx.i.i.i.i.i, i1 false), !tbaa !49 br label %_ZSt27__uninitialized_default_n_aIPxmxET_S1_T0_RSaIT1_E.exit _ZSt27__uninitialized_default_n_aIPxmxET_S1_T0_RSaIT1_E.exit: ; preds = %19, %_ZSt6fill_nIPxmxET_S1_T0_RKT1_.exit.loopexit.i.i.i diff --git a/bench/ceres/optimized/program.ll b/bench/ceres/optimized/program.ll index 71b0baf30e4..fd9064c470a 100644 --- a/bench/ceres/optimized/program.ll +++ b/bench/ceres/optimized/program.ll @@ -2563,18 +2563,17 @@ _ZNK5ceres8internal7Program34MaxScratchDoublesNeededForEvaluateEv.exit: ; preds store double 0.000000e+00, ptr %2, align 8, !tbaa !109 %24 = getelementptr inbounds nuw i8, ptr %0, i64 48 %25 = load ptr, ptr %24, align 8, !tbaa !3 - %26 = icmp ne ptr %25, null - %27 = load ptr, ptr %0, align 8, !tbaa !19 - %28 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %29 = load ptr, ptr %28, align 8, !tbaa !19 - %.not154171 = icmp eq ptr %27, %29 + %26 = load ptr, ptr %0, align 8, !tbaa !19 + %27 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %28 = load ptr, ptr %27, align 8, !tbaa !19 + %.not154171 = icmp eq ptr %26, %28 br i1 %.not154171, label %.preheader, label %.lr.ph .preheader: ; preds = %.lr.ph, %_ZNK5ceres8internal7Program34MaxScratchDoublesNeededForEvaluateEv.exit %30 = load ptr, ptr %16, align 8, !tbaa !137 %31 = load ptr, ptr %14, align 8, !tbaa !138 %.not79176.not = icmp eq ptr %30, %31 - br i1 %.not79176.not, label %.thread145.thread, label %.lr.ph180 + br i1 %.not79176.not, label %.thread145.thread, label %.lr.ph180.preheader .thread145.thread: ; preds = %.preheader %.pre196 = ptrtoint ptr %30 to i64 @@ -2583,20 +2582,24 @@ _ZNK5ceres8internal7Program34MaxScratchDoublesNeededForEvaluateEv.exit: ; preds %.pre201 = ashr exact i64 %.pre199, 3 br label %148 +.lr.ph180.preheader: ; preds = %.preheader + %31 = icmp ne ptr %25, null + br label %.lr.ph180 + .lr.ph: ; preds = %_ZNK5ceres8internal7Program34MaxScratchDoublesNeededForEvaluateEv.exit, %.lr.ph - %.sroa.0121.0172 = phi ptr [ %34, %.lr.ph ], [ %27, %_ZNK5ceres8internal7Program34MaxScratchDoublesNeededForEvaluateEv.exit ] + %.sroa.0121.0172 = phi ptr [ %34, %.lr.ph ], [ %26, %_ZNK5ceres8internal7Program34MaxScratchDoublesNeededForEvaluateEv.exit ] %32 = load ptr, ptr %.sroa.0121.0172, align 8, !tbaa !20 %33 = getelementptr inbounds nuw i8, ptr %32, i64 40 store i32 -1, ptr %33, align 8, !tbaa !134 %34 = getelementptr inbounds nuw i8, ptr %.sroa.0121.0172, i64 8 - %.not154 = icmp eq ptr %34, %29 + %.not154 = icmp eq ptr %34, %28 br i1 %.not154, label %.preheader, label %.lr.ph -.lr.ph180: ; preds = %.preheader, %136 - %indvars.iv193 = phi i64 [ %indvars.iv.next194, %136 ], [ 0, %.preheader ] - %35 = phi ptr [ %138, %136 ], [ %31, %.preheader ] - %.068179 = phi i32 [ %.270142, %136 ], [ 0, %.preheader ] - %.073178 = phi i1 [ %.174141, %136 ], [ %26, %.preheader ] +.lr.ph180: ; preds = %.lr.ph180.preheader, %136 + %indvars.iv193 = phi i64 [ 0, %.lr.ph180.preheader ], [ %indvars.iv.next194, %136 ] + %35 = phi ptr [ %30, %.lr.ph180.preheader ], [ %138, %136 ] + %.068179 = phi i32 [ 0, %.lr.ph180.preheader ], [ %.270142, %136 ] + %.073178 = phi i1 [ %31, %.lr.ph180.preheader ], [ %.174141, %136 ] %36 = getelementptr inbounds nuw ptr, ptr %35, i64 %indvars.iv193 %37 = load ptr, ptr %36, align 8, !tbaa !118 %38 = load ptr, ptr %37, align 8, !tbaa !120 @@ -2898,7 +2901,7 @@ _ZNSt6vectorIPN5ceres8internal13ResidualBlockESaIS3_EE6resizeEm.exit: ; preds = _ZNSt6vectorIPdSaIS0_EE5clearEv.exit: ; preds = %_ZNSt6vectorIPN5ceres8internal13ResidualBlockESaIS3_EE6resizeEm.exit, %158 %159 = phi ptr [ %157, %_ZNSt6vectorIPN5ceres8internal13ResidualBlockESaIS3_EE6resizeEm.exit ], [ %155, %158 ] %160 = load ptr, ptr %0, align 8, !tbaa !19 - %161 = load ptr, ptr %28, align 8, !tbaa !19 + %161 = load ptr, ptr %27, align 8, !tbaa !19 %.not155182 = icmp eq ptr %160, %161 br i1 %.not155182, label %_ZNSt6vectorIPN5ceres8internal14ParameterBlockESaIS3_EE6resizeEm.exit, label %.lr.ph185 @@ -2907,7 +2910,7 @@ _ZNSt6vectorIPdSaIS0_EE5clearEv.exit: ; preds = %_ZNSt6vectorIPN5cer br label %178 ._crit_edge186: ; preds = %_ZNSt6vectorIPdSaIS0_EE9push_backEOS0_.exit - %.pre = load ptr, ptr %28, align 8, !tbaa !53 + %.pre = load ptr, ptr %27, align 8, !tbaa !53 %.pre195 = load ptr, ptr %0, align 8, !tbaa !52 %163 = sext i32 %.146 to i64 %164 = ptrtoint ptr %.pre to i64 @@ -2932,7 +2935,7 @@ _ZNSt6vectorIPdSaIS0_EE5clearEv.exit: ; preds = %_ZNSt6vectorIPN5cer br i1 %.not.i.i100, label %_ZNSt6vectorIPN5ceres8internal14ParameterBlockESaIS3_EE6resizeEm.exit, label %175 175: ; preds = %173 - store ptr %174, ptr %28, align 8, !tbaa !53 + store ptr %174, ptr %27, align 8, !tbaa !53 br label %_ZNSt6vectorIPN5ceres8internal14ParameterBlockESaIS3_EE6resizeEm.exit 176: ; preds = %146 @@ -3050,7 +3053,7 @@ _ZNSt6vectorIPN5ceres8internal14ParameterBlockESaIS3_EE6resizeEm.exit: ; preds = %221 = sub i64 %219, %220 %222 = and i64 %221, 34359738360 %223 = icmp eq i64 %222, 0 - %224 = load ptr, ptr %28, align 8, !tbaa !53 + %224 = load ptr, ptr %27, align 8, !tbaa !53 %225 = load ptr, ptr %0, align 8, !tbaa !52 %226 = ptrtoint ptr %224 to i64 %227 = ptrtoint ptr %225 to i64 @@ -8114,8 +8117,8 @@ define linkonce_odr hidden void @_ZNSt6vectorIPN5ceres8internal13ResidualBlockES _ZSt6fill_nIPPN5ceres8internal13ResidualBlockEmS3_ET_S5_T0_RKT1_.exit.loopexit.i.i.i: ; preds = %19 %.idx.i.i.i.i.i = shl nuw nsw i64 %21, 3 - tail call void @llvm.memset.p0.i64(ptr align 8 %20, i8 0, i64 %.idx.i.i.i.i.i, i1 false), !tbaa !118 %23 = getelementptr inbounds nuw i8, ptr %20, i64 %.idx.i.i.i.i.i + tail call void @llvm.memset.p0.i64(ptr align 8 %20, i8 0, i64 %.idx.i.i.i.i.i, i1 false), !tbaa !118 br label %_ZSt27__uninitialized_default_n_aIPPN5ceres8internal13ResidualBlockEmS3_ET_S5_T0_RSaIT1_E.exit _ZSt27__uninitialized_default_n_aIPPN5ceres8internal13ResidualBlockEmS3_ET_S5_T0_RSaIT1_E.exit: ; preds = %19, %_ZSt6fill_nIPPN5ceres8internal13ResidualBlockEmS3_ET_S5_T0_RKT1_.exit.loopexit.i.i.i @@ -8216,8 +8219,8 @@ define linkonce_odr hidden void @_ZNSt6vectorIPN5ceres8internal14ParameterBlockE _ZSt6fill_nIPPN5ceres8internal14ParameterBlockEmS3_ET_S5_T0_RKT1_.exit.loopexit.i.i.i: ; preds = %19 %.idx.i.i.i.i.i = shl nuw nsw i64 %21, 3 - tail call void @llvm.memset.p0.i64(ptr align 8 %20, i8 0, i64 %.idx.i.i.i.i.i, i1 false), !tbaa !20 %23 = getelementptr inbounds nuw i8, ptr %20, i64 %.idx.i.i.i.i.i + tail call void @llvm.memset.p0.i64(ptr align 8 %20, i8 0, i64 %.idx.i.i.i.i.i, i1 false), !tbaa !20 br label %_ZSt27__uninitialized_default_n_aIPPN5ceres8internal14ParameterBlockEmS3_ET_S5_T0_RSaIT1_E.exit _ZSt27__uninitialized_default_n_aIPPN5ceres8internal14ParameterBlockEmS3_ET_S5_T0_RSaIT1_E.exit: ; preds = %19, %_ZSt6fill_nIPPN5ceres8internal14ParameterBlockEmS3_ET_S5_T0_RKT1_.exit.loopexit.i.i.i diff --git a/bench/ceres/optimized/schur_eliminator.ll b/bench/ceres/optimized/schur_eliminator.ll index 542c558d1c1..dde4200c977 100644 --- a/bench/ceres/optimized/schur_eliminator.ll +++ b/bench/ceres/optimized/schur_eliminator.ll @@ -1768,24 +1768,21 @@ define linkonce_odr hidden void @_ZN4absl12lts_2024011618container_internal10btr %13 = icmp eq i8 %12, 0 br i1 %13, label %.loopexit.sink.split, label %.lr.ph.preheader -.lr.ph.preheader: ; preds = %10 - %14 = load ptr, ptr %0, align 8, !tbaa !120 - br label %.lr.ph - -.lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph - %.04963 = phi ptr [ %16, %.lr.ph ], [ %0, %.lr.ph.preheader ] - %15 = getelementptr inbounds nuw i8, ptr %.04963, i64 256 - %16 = load ptr, ptr %15, align 8, !tbaa !120 - %17 = getelementptr i8, ptr %16, i64 11 - %18 = load i8, ptr %17, align 1, !tbaa !124 - %.not.i = icmp eq i8 %18, 0 +.lr.ph.preheader: ; preds = %10, %.lr.ph + %.04963 = phi ptr [ %15, %.lr.ph ], [ %0, %10 ] + %14 = getelementptr inbounds nuw i8, ptr %.04963, i64 256 + %15 = load ptr, ptr %14, align 8, !tbaa !120 + %16 = getelementptr i8, ptr %15, i64 11 + %17 = load i8, ptr %16, align 1, !tbaa !124 + %.not.i = icmp eq i8 %17, 0 br i1 %.not.i, label %.lr.ph, label %._crit_edge, !llvm.loop !125 ._crit_edge: ; preds = %.lr.ph - %19 = getelementptr i8, ptr %16, i64 8 + %18 = load ptr, ptr %0, align 8, !tbaa !120 + %19 = getelementptr i8, ptr %15, i64 8 %20 = load i8, ptr %19, align 1, !tbaa !124 %21 = zext i8 %20 to i64 - %22 = load ptr, ptr %16, align 8, !tbaa !120 + %22 = load ptr, ptr %15, align 8, !tbaa !120 br label %23 23: ; preds = %.backedge, %._crit_edge @@ -1843,7 +1840,7 @@ define linkonce_odr hidden void @_ZN4absl12lts_2024011618container_internal10btr %47 = load i8, ptr %46, align 1, !tbaa !124 %48 = load ptr, ptr %.3, align 8, !tbaa !120 tail call void @_ZdlPvm(ptr noundef nonnull %.3, i64 noundef 504) #21 - %49 = icmp eq ptr %48, %14 + %49 = icmp eq ptr %48, %18 br i1 %49, label %.loopexit, label %50 50: ; preds = %.preheader58 diff --git a/bench/clamav/optimized/encname.ll b/bench/clamav/optimized/encname.ll index 1370fad54dc..a7909585ad0 100644 --- a/bench/clamav/optimized/encname.ll +++ b/bench/clamav/optimized/encname.ll @@ -60,7 +60,7 @@ define void @_ZN14EncodeFileName6DecodeEPcmPhmPwm(ptr noundef nonnull align 8 ca %28 = phi i8 [ %25, %22 ], [ %20, %18 ] %.2 = phi i64 [ %23, %22 ], [ %.1107, %18 ] %29 = lshr i8 %28, 6 - switch i8 %29, label %default.unreachable121 [ + switch i8 %29, label %default.unreachable120 [ i8 0, label %30 i8 1, label %38 i8 2, label %47 @@ -133,11 +133,10 @@ define void @_ZN14EncodeFileName6DecodeEPcmPhmPwm(ptr noundef nonnull align 8 ca br i1 %.not89, label %68, label %.critedge2 68: ; preds = %67 - %69 = add nuw i64 %.2, 2 - %70 = getelementptr inbounds nuw i8, ptr %3, i64 %63 - %71 = load i8, ptr %70, align 1, !tbaa !9 - %72 = icmp ult i64 %.076106, %invariant.umin - br i1 %72, label %.lr.ph.preheader, label %.critedge2 + %69 = getelementptr inbounds nuw i8, ptr %3, i64 %63 + %70 = load i8, ptr %69, align 1, !tbaa !9 + %71 = icmp ult i64 %.076106, %invariant.umin + br i1 %71, label %.lr.ph.preheader, label %.critedge2.loopexit96 .lr.ph.preheader: ; preds = %68 %73 = and i32 %66, 127 @@ -149,7 +148,7 @@ define void @_ZN14EncodeFileName6DecodeEPcmPhmPwm(ptr noundef nonnull align 8 ca %.37999 = phi i64 [ %81, %.lr.ph ], [ %.076106, %.lr.ph.preheader ] %75 = getelementptr inbounds nuw i8, ptr %1, i64 %.37999 %76 = load i8, ptr %75, align 1, !tbaa !9 - %.narrow = add i8 %76, %71 + %.narrow = add i8 %76, %70 %77 = zext i8 %.narrow to i32 %78 = or disjoint i32 %13, %77 %79 = getelementptr inbounds nuw i32, ptr %5, i64 %.37999 @@ -187,9 +186,14 @@ define void @_ZN14EncodeFileName6DecodeEPcmPhmPwm(ptr noundef nonnull align 8 ca default.unreachable121: ; preds = %26 unreachable -.critedge2: ; preds = %.lr.ph, %.lr.ph104, %68, %84, %67, %61, %47, %38, %30, %49, %39, %31 - %.177 = phi i64 [ %.076106, %30 ], [ %36, %31 ], [ %.076106, %38 ], [ %45, %39 ], [ %.076106, %47 ], [ %58, %49 ], [ %.076106, %61 ], [ %.076106, %67 ], [ %.076106, %84 ], [ %.076106, %68 ], [ %92, %.lr.ph104 ], [ %81, %.lr.ph ] - %.3 = phi i64 [ %.2, %30 ], [ %32, %31 ], [ %.2, %38 ], [ %40, %39 ], [ %.2, %47 ], [ %60, %49 ], [ %.2, %61 ], [ %63, %67 ], [ %63, %84 ], [ %69, %68 ], [ %63, %.lr.ph104 ], [ %69, %.lr.ph ] +.critedge2: ; preds = %.lr.ph, %68 + %.177 = phi i64 [ %.076106, %68 ], [ %80, %.lr.ph ] + %94 = add nuw i64 %.2, 2 + br label %.critedge2 + +.critedge2: ; preds = %.lr.ph104, %83, %.critedge2.loopexit96, %67, %61, %47, %38, %30, %49, %39, %31 + %.177 = phi i64 [ %.076106, %30 ], [ %36, %31 ], [ %.076106, %38 ], [ %45, %39 ], [ %.076106, %47 ], [ %58, %49 ], [ %.076106, %61 ], [ %.076106, %67 ], [ %.379.lcssa, %.critedge2.loopexit96 ], [ %.076106, %83 ], [ %91, %.lr.ph104 ] + %.3 = phi i64 [ %.2, %30 ], [ %32, %31 ], [ %.2, %38 ], [ %40, %39 ], [ %.2, %47 ], [ %60, %49 ], [ %.2, %61 ], [ %63, %67 ], [ %94, %.critedge2.loopexit96 ], [ %63, %83 ], [ %63, %.lr.ph104 ] %95 = shl i8 %28, 2 store i8 %95, ptr %0, align 8, !tbaa !3 %96 = add i32 %27, -2 diff --git a/bench/cmake/optimized/archive_cmdline.ll b/bench/cmake/optimized/archive_cmdline.ll index 684c8ca7670..6929322edf6 100644 --- a/bench/cmake/optimized/archive_cmdline.ll +++ b/bench/cmake/optimized/archive_cmdline.ll @@ -9,20 +9,23 @@ target triple = "x86_64-pc-linux-gnu" define dso_local range(i32 -30, 1) i32 @__archive_cmdline_parse(ptr noundef captures(none) %0, ptr noundef %1) local_unnamed_addr #0 { %3 = alloca %struct.archive_string, align 8 call void @llvm.lifetime.start.p0(ptr nonnull %3) - %4 = getelementptr inbounds nuw i8, ptr %3, i64 8 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %3, i8 0, i64 24, i1 false) br label %5 5: ; preds = %5, %2 - %.028.i = phi ptr [ %1, %2 ], [ %7, %5 ] + %.028.i = phi ptr [ %1, %2 ], [ %7, %4 ] %6 = load i8, ptr %.028.i, align 1, !tbaa !4 %cond.i = icmp eq i8 %6, 32 %7 = getelementptr inbounds nuw i8, ptr %.028.i, i64 1 br i1 %cond.i, label %5, label %.critedge.i, !llvm.loop !7 -.critedge.i: ; preds = %5, %28 - %8 = phi i8 [ %.pr.i, %28 ], [ %6, %5 ] - %.129.i = phi ptr [ %.331.i, %28 ], [ %.028.i, %5 ] +.critedge.i: ; preds = %5 + %7 = getelementptr inbounds nuw i8, ptr %3, i64 8 + br label %.critedge.i + +.critedge.i: ; preds = %.critedge.i.preheader, %28 + %8 = phi i8 [ %.pr.i, %28 ], [ %5, %.critedge.i.preheader ] + %.129.i = phi ptr [ %.331.i, %28 ], [ %.028.i, %.critedge.i.preheader ] switch i8 %8, label %.sink.split.i [ i8 0, label %get_argument.exit i8 32, label %get_argument.exit @@ -98,7 +101,7 @@ get_argument.exit: ; preds = %.critedge.i, %.crit %31 = ptrtoint ptr %1 to i64 %32 = sub i64 %30, %31 %33 = icmp slt i64 %32, 0 - %34 = load i64, ptr %4, align 8 + %34 = load i64, ptr %7, align 8 %35 = icmp eq i64 %34, 0 %or.cond = select i1 %33, i1 true, i1 %35 br i1 %or.cond, label %cmdline_set_path.exit, label %36 @@ -152,7 +155,7 @@ get_argument.exit: ; preds = %.critedge.i, %.crit 69: ; preds = %cmdline_add_arg.exit57, %64 %.020 = phi ptr [ %68, %64 ], [ %102, %cmdline_add_arg.exit57 ] - store i64 0, ptr %4, align 8, !tbaa !23 + store i64 0, ptr %7, align 8, !tbaa !23 br label %70 70: ; preds = %70, %69 @@ -248,7 +251,7 @@ get_argument.exit55: ; preds = %.critedge.i33, %.cr 101: ; preds = %99 %102 = getelementptr inbounds nuw i8, ptr %.020, i64 %97 - %103 = load i64, ptr %4, align 8, !tbaa !23 + %103 = load i64, ptr %7, align 8, !tbaa !23 %104 = icmp eq i64 %103, 0 br i1 %104, label %105, label %108 diff --git a/bench/cpp-httplib/optimized/httplib.ll b/bench/cpp-httplib/optimized/httplib.ll index 825c6d926e0..97501844f94 100644 --- a/bench/cpp-httplib/optimized/httplib.ll +++ b/bench/cpp-httplib/optimized/httplib.ll @@ -120677,28 +120677,29 @@ define linkonce_odr void @_ZNSt8seed_seq8generateIPjEEvT_S2_(ptr noundef nonnull %32 = sub i64 %12, %31 %33 = lshr i64 %32, 1 %34 = add nuw i64 %33, %31 - %35 = add nsw i64 %19, 1 - %.sroa.speculated = tail call i64 @llvm.umax.i64(i64 %35, i64 %12) - %36 = trunc i64 %19 to i32 - %37 = add i32 %36, 1371501266 - %38 = getelementptr inbounds nuw i32, ptr %1, i64 %33 - %39 = load i32, ptr %38, align 4, !tbaa !3 - %40 = add i32 %39, 1371501266 - store i32 %40, ptr %38, align 4, !tbaa !3 - %41 = getelementptr inbounds nuw i32, ptr %1, i64 %34 - %42 = load i32, ptr %41, align 4, !tbaa !3 - %43 = add i32 %42, %37 - store i32 %43, ptr %41, align 4, !tbaa !3 - store i32 %37, ptr %1, align 4, !tbaa !3 + %35 = trunc i64 %19 to i32 + %36 = add i32 %35, 1371501266 + %37 = getelementptr inbounds nuw i32, ptr %1, i64 %33 + %38 = load i32, ptr %37, align 4, !tbaa !3 + %39 = add i32 %38, 1371501266 + store i32 %39, ptr %37, align 4, !tbaa !3 + %40 = getelementptr inbounds nuw i32, ptr %1, i64 %34 + %41 = load i32, ptr %40, align 4, !tbaa !3 + %42 = add i32 %41, %36 + store i32 %42, ptr %40, align 4, !tbaa !3 + store i32 %36, ptr %1, align 4, !tbaa !3 %.not130 = icmp eq ptr %14, %15 br i1 %.not130, label %.preheader129, label %.lr.ph.preheader .lr.ph.preheader: ; preds = %30 - %umax = tail call i64 @llvm.umax.i64(i64 %35, i64 2) + %43 = add nsw i64 %19, 1 + %umax = tail call i64 @llvm.umax.i64(i64 %43, i64 2) br label %.lr.ph .preheader129: ; preds = %.lr.ph, %30 - %44 = icmp ugt i64 %12, %35 + %.pre-phi = phi i64 [ 1, %30 ], [ %43, %.lr.ph ] + %.sroa.speculated = tail call i64 @llvm.umax.i64(i64 %.pre-phi, i64 %12) + %44 = icmp ugt i64 %12, %.pre-phi br i1 %44, label %.lr.ph133, label %.preheader .lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph @@ -120743,7 +120744,7 @@ define linkonce_odr void @_ZNSt8seed_seq8generateIPjEEvT_S2_(ptr noundef nonnull br i1 %74, label %.lr.ph135, label %.loopexit .lr.ph133: ; preds = %.preheader129, %.lr.ph133 - %.0114132 = phi i64 [ %99, %.lr.ph133 ], [ %35, %.preheader129 ] + %.0114132 = phi i64 [ %99, %.lr.ph133 ], [ %.pre-phi, %.preheader129 ] %75 = urem i64 %.0114132, %12 %76 = add i64 %.0114132, %33 %77 = urem i64 %76, %12 diff --git a/bench/cvc5/optimized/resolution_proofs_util.ll b/bench/cvc5/optimized/resolution_proofs_util.ll index 4a560602d59..b31ec956726 100644 --- a/bench/cvc5/optimized/resolution_proofs_util.ll +++ b/bench/cvc5/optimized/resolution_proofs_util.ll @@ -9613,8 +9613,8 @@ _ZNSt4pairIN4cvc58internal12NodeTemplateILb1EEEmED2Ev.exit.i: ; preds = %._ZNSt4 br label %"_ZSt22__move_median_to_firstIN9__gnu_cxx17__normal_iteratorIPSt4pairIN4cvc58internal12NodeTemplateILb1EEEmESt6vectorIS7_SaIS7_EEEENS0_5__ops15_Iter_comp_iterIZNS4_5proof21eliminateCrowdingLitsEPNS4_11NodeManagerEbRKS9_IS6_SaIS6_EESL_SL_SL_PNS4_7CDProofEPNS4_16ProofNodeManagerEE3$_0EEEvT_SS_SS_SS_T0_.exit.i" "_ZSt22__move_median_to_firstIN9__gnu_cxx17__normal_iteratorIPSt4pairIN4cvc58internal12NodeTemplateILb1EEEmESt6vectorIS7_SaIS7_EEEENS0_5__ops15_Iter_comp_iterIZNS4_5proof21eliminateCrowdingLitsEPNS4_11NodeManagerEbRKS9_IS6_SaIS6_EESL_SL_SL_PNS4_7CDProofEPNS4_16ProofNodeManagerEE3$_0EEEvT_SS_SS_SS_T0_.exit.i": ; preds = %"_ZSt22__move_median_to_firstIN9__gnu_cxx17__normal_iteratorIPSt4pairIN4cvc58internal12NodeTemplateILb1EEEmESt6vectorIS7_SaIS7_EEEENS0_5__ops15_Iter_comp_iterIZNS4_5proof21eliminateCrowdingLitsEPNS4_11NodeManagerEbRKS9_IS6_SaIS6_EESL_SL_SL_PNS4_7CDProofEPNS4_16ProofNodeManagerEE3$_0EEEvT_SS_SS_SS_T0_.exit.i.preheader", %235 - %.sroa.012.0.i.i = phi ptr [ %229, %235 ], [ %13, %"_ZSt22__move_median_to_firstIN9__gnu_cxx17__normal_iteratorIPSt4pairIN4cvc58internal12NodeTemplateILb1EEEmESt6vectorIS7_SaIS7_EEEENS0_5__ops15_Iter_comp_iterIZNS4_5proof21eliminateCrowdingLitsEPNS4_11NodeManagerEbRKS9_IS6_SaIS6_EESL_SL_SL_PNS4_7CDProofEPNS4_16ProofNodeManagerEE3$_0EEEvT_SS_SS_SS_T0_.exit.i.preheader" ] - %.sroa.0.0.i.i = phi ptr [ %.sroa.0.1.i.i, %235 ], [ %storemerge2964, %"_ZSt22__move_median_to_firstIN9__gnu_cxx17__normal_iteratorIPSt4pairIN4cvc58internal12NodeTemplateILb1EEEmESt6vectorIS7_SaIS7_EEEENS0_5__ops15_Iter_comp_iterIZNS4_5proof21eliminateCrowdingLitsEPNS4_11NodeManagerEbRKS9_IS6_SaIS6_EESL_SL_SL_PNS4_7CDProofEPNS4_16ProofNodeManagerEE3$_0EEEvT_SS_SS_SS_T0_.exit.i.preheader" ] + %.sroa.012.0.i.i = phi ptr [ %229, %234 ], [ %13, %"_ZSt22__move_median_to_firstIN9__gnu_cxx17__normal_iteratorIPSt4pairIN4cvc58internal12NodeTemplateILb1EEEmESt6vectorIS7_SaIS7_EEEENS0_5__ops15_Iter_comp_iterIZNS4_5proof21eliminateCrowdingLitsEPNS4_11NodeManagerEbRKS9_IS6_SaIS6_EESL_SL_SL_PNS4_7CDProofEPNS4_16ProofNodeManagerEE3$_0EEEvT_SS_SS_SS_T0_.exit.i.preheader" ] + %.sroa.0.0.i.i = phi ptr [ %.sroa.0.1.i.i, %234 ], [ %storemerge2964, %"_ZSt22__move_median_to_firstIN9__gnu_cxx17__normal_iteratorIPSt4pairIN4cvc58internal12NodeTemplateILb1EEEmESt6vectorIS7_SaIS7_EEEENS0_5__ops15_Iter_comp_iterIZNS4_5proof21eliminateCrowdingLitsEPNS4_11NodeManagerEbRKS9_IS6_SaIS6_EESL_SL_SL_PNS4_7CDProofEPNS4_16ProofNodeManagerEE3$_0EEEvT_SS_SS_SS_T0_.exit.i.preheader" ] %.val1.i.i13.i = load i64, ptr %15, align 8, !tbaa !74 br label %226 @@ -9626,12 +9626,8 @@ _ZNSt4pairIN4cvc58internal12NodeTemplateILb1EEEmED2Ev.exit.i: ; preds = %._ZNSt4 %229 = getelementptr inbounds nuw i8, ptr %.sroa.012.1.i.i, i64 16 br i1 %228, label %226, label %.preheader.i.i.preheader, !llvm.loop !229 -.preheader.i.i.preheader: ; preds = %226 - %230 = getelementptr i8, ptr %.sroa.012.1.i.i, i64 8 - br label %.preheader.i.i - -.preheader.i.i: ; preds = %.preheader.i.i.preheader, %.preheader.i.i - %.sroa.0.0.pn.i.i = phi ptr [ %.sroa.0.1.i.i, %.preheader.i.i ], [ %.sroa.0.0.i.i, %.preheader.i.i.preheader ] +.preheader.i.i.preheader: ; preds = %226, %.preheader.i.i + %.sroa.0.0.pn.i.i = phi ptr [ %.sroa.0.1.i.i, %.preheader.i.i ], [ %.sroa.0.0.i.i, %226 ] %.sroa.0.1.i.i = getelementptr inbounds i8, ptr %.sroa.0.0.pn.i.i, i64 -16 %231 = getelementptr i8, ptr %.sroa.0.0.pn.i.i, i64 -8 %.val1.i9.i.i = load i64, ptr %231, align 8, !tbaa !74 @@ -9644,10 +9640,11 @@ _ZNSt4pairIN4cvc58internal12NodeTemplateILb1EEEmED2Ev.exit.i: ; preds = %._ZNSt4 235: ; preds = %233 %236 = getelementptr i8, ptr %.sroa.0.0.pn.i.i, i64 -8 + %236 = getelementptr i8, ptr %.sroa.012.1.i.i, i64 8 tail call void @_ZSt4swapIN4cvc58internal12NodeTemplateILb1EEEENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS7_ESt18is_move_assignableIS7_EEE5valueEvE4typeERS7_SG_(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.012.1.i.i, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.0.1.i.i) - %237 = load i64, ptr %230, align 8, !tbaa !69 + %237 = load i64, ptr %236, align 8, !tbaa !69 %238 = load i64, ptr %236, align 8, !tbaa !69 - store i64 %238, ptr %230, align 8, !tbaa !69 + store i64 %238, ptr %236, align 8, !tbaa !69 store i64 %237, ptr %236, align 8, !tbaa !69 br label %"_ZSt22__move_median_to_firstIN9__gnu_cxx17__normal_iteratorIPSt4pairIN4cvc58internal12NodeTemplateILb1EEEmESt6vectorIS7_SaIS7_EEEENS0_5__ops15_Iter_comp_iterIZNS4_5proof21eliminateCrowdingLitsEPNS4_11NodeManagerEbRKS9_IS6_SaIS6_EESL_SL_SL_PNS4_7CDProofEPNS4_16ProofNodeManagerEE3$_0EEEvT_SS_SS_SS_T0_.exit.i", !llvm.loop !231 diff --git a/bench/cvc5/optimized/sygus_grammar_red.ll b/bench/cvc5/optimized/sygus_grammar_red.ll index 4da9f5d918f..123bad5b03c 100644 --- a/bench/cvc5/optimized/sygus_grammar_red.ll +++ b/bench/cvc5/optimized/sygus_grammar_red.ll @@ -1555,11 +1555,7 @@ _ZN4cvc58internal11Cvc5ostreamlsEPFRSoS2_E.exit316: ; preds = %_ZNSt6vectorIN4cv _ZNSt8_Rb_treeIN4cvc58internal12NodeTemplateILb1EEESt4pairIKS3_jESt10_Select1stIS6_ESt4lessIS3_ESaIS6_EE14_M_lower_boundEPSt13_Rb_tree_nodeIS6_EPSt18_Rb_tree_node_baseRS5_.exit.i.i: ; preds = %687 %693 = icmp eq ptr %.19.i.i.i, %106 - br i1 %693, label %_ZNSt8_Rb_treeIN4cvc58internal12NodeTemplateILb1EEESt4pairIKS3_jESt10_Select1stIS6_ESt4lessIS3_ESaIS6_EE14_M_lower_boundEPSt13_Rb_tree_nodeIS6_EPSt18_Rb_tree_node_baseRS5_.exit.i.i..lr.ph.i.i.i.i407_crit_edge, label %_ZNSt3mapIN4cvc58internal12NodeTemplateILb1EEEjSt4lessIS3_ESaISt4pairIKS3_jEEE4findERS7_.exit - -_ZNSt8_Rb_treeIN4cvc58internal12NodeTemplateILb1EEESt4pairIKS3_jESt10_Select1stIS6_ESt4lessIS3_ESaIS6_EE14_M_lower_boundEPSt13_Rb_tree_nodeIS6_EPSt18_Rb_tree_node_baseRS5_.exit.i.i..lr.ph.i.i.i.i407_crit_edge: ; preds = %_ZNSt8_Rb_treeIN4cvc58internal12NodeTemplateILb1EEESt4pairIKS3_jESt10_Select1stIS6_ESt4lessIS3_ESaIS6_EE14_M_lower_boundEPSt13_Rb_tree_nodeIS6_EPSt18_Rb_tree_node_baseRS5_.exit.i.i - %.pre664 = load i32, ptr %14, align 4, !tbaa !11 - br label %.lr.ph.i.i.i.i407 + br i1 %693, label %.lr.ph.i.i.i.i407.preheader, label %_ZNSt3mapIN4cvc58internal12NodeTemplateILb1EEEjSt4lessIS3_ESaISt4pairIKS3_jEEE4findERS7_.exit _ZNSt3mapIN4cvc58internal12NodeTemplateILb1EEEjSt4lessIS3_ESaISt4pairIKS3_jEEE4findERS7_.exit: ; preds = %_ZNSt8_Rb_treeIN4cvc58internal12NodeTemplateILb1EEESt4pairIKS3_jESt10_Select1stIS6_ESt4lessIS3_ESaIS6_EE14_M_lower_boundEPSt13_Rb_tree_nodeIS6_EPSt18_Rb_tree_node_baseRS5_.exit.i.i %694 = getelementptr inbounds nuw i8, ptr %.19.i.i.i, i64 32 @@ -1567,40 +1563,40 @@ _ZNSt3mapIN4cvc58internal12NodeTemplateILb1EEEjSt4lessIS3_ESaISt4pairIKS3_jEEE4f %696 = load i64, ptr %695, align 8 %697 = and i64 %696, 1099511627775 %698 = icmp samesign ult i64 %686, %697 - %.pre665 = load i32, ptr %14, align 4, !tbaa !11 - br i1 %698, label %.lr.ph.i.i.i.i407, label %699 + br i1 %698, label %.lr.ph.i.i.i.i407.preheader, label %699 + +.lr.ph.i.i.i.i407.preheader: ; preds = %_ZNSt8_Rb_treeIN4cvc58internal12NodeTemplateILb1EEESt4pairIKS3_jESt10_Select1stIS6_ESt4lessIS3_ESaIS6_EE14_M_lower_boundEPSt13_Rb_tree_nodeIS6_EPSt18_Rb_tree_node_baseRS5_.exit.i.i, %699, %_ZNSt3mapIN4cvc58internal12NodeTemplateILb1EEEjSt4lessIS3_ESaISt4pairIKS3_jEEE4findERS7_.exit + br label %.lr.ph.i.i.i.i407 699: ; preds = %_ZNSt3mapIN4cvc58internal12NodeTemplateILb1EEEjSt4lessIS3_ESaISt4pairIKS3_jEEE4findERS7_.exit %700 = getelementptr inbounds nuw i8, ptr %.19.i.i.i, i64 40 %701 = load i32, ptr %700, align 8, !tbaa !73 - %.not = icmp eq i32 %701, %.pre665 - br i1 %.not, label %.lr.ph.i.i.i.i407, label %_ZN4cvc58internal11Cvc5ostreamlsEPFRSoS2_E.exit405 + %702 = load i32, ptr %14, align 4, !tbaa !11 + %.not = icmp eq i32 %701, %702 + br i1 %.not, label %.lr.ph.i.i.i.i407.preheader, label %_ZN4cvc58internal11Cvc5ostreamlsEPFRSoS2_E.exit405 702: ; preds = %.noexc525, %.critedge.i416 %703 = landingpad { ptr, i32 } cleanup br label %.body527 -.lr.ph.i.i.i.i407: ; preds = %_ZNSt8_Rb_treeIN4cvc58internal12NodeTemplateILb1EEESt4pairIKS3_jESt10_Select1stIS6_ESt4lessIS3_ESaIS6_EE14_M_lower_boundEPSt13_Rb_tree_nodeIS6_EPSt18_Rb_tree_node_baseRS5_.exit.i.i..lr.ph.i.i.i.i407_crit_edge, %699, %_ZNSt3mapIN4cvc58internal12NodeTemplateILb1EEEjSt4lessIS3_ESaISt4pairIKS3_jEEE4findERS7_.exit - %704 = phi i32 [ %.pre664, %_ZNSt8_Rb_treeIN4cvc58internal12NodeTemplateILb1EEESt4pairIKS3_jESt10_Select1stIS6_ESt4lessIS3_ESaIS6_EE14_M_lower_boundEPSt13_Rb_tree_nodeIS6_EPSt18_Rb_tree_node_baseRS5_.exit.i.i..lr.ph.i.i.i.i407_crit_edge ], [ %.pre665, %699 ], [ %.pre665, %_ZNSt3mapIN4cvc58internal12NodeTemplateILb1EEEjSt4lessIS3_ESaISt4pairIKS3_jEEE4findERS7_.exit ] - br label %705 - -705: ; preds = %705, %.lr.ph.i.i.i.i407 - %.012.i.i.i.i408 = phi ptr [ %682, %.lr.ph.i.i.i.i407 ], [ %.1.i.i.i.i413, %705 ] - %.0811.i.i.i.i409 = phi ptr [ %106, %.lr.ph.i.i.i.i407 ], [ %.19.i.i.i.i410, %705 ] - %706 = getelementptr inbounds nuw i8, ptr %.012.i.i.i.i408, i64 32 - %707 = load ptr, ptr %706, align 8, !tbaa !32 - %708 = load i64, ptr %707, align 8 - %709 = and i64 %708, 1099511627775 - %710 = icmp samesign ult i64 %709, %686 - %.19.i.i.i.i410 = select i1 %710, ptr %.0811.i.i.i.i409, ptr %.012.i.i.i.i408 - %.1.in.v.i.i.i.i411 = select i1 %710, i64 24, i64 16 +.lr.ph.i.i.i.i407: ; preds = %.lr.ph.i.i.i.i407.preheader, %.lr.ph.i.i.i.i407 + %704 = phi ptr [ %.1.i.i.i.i413, %.lr.ph.i.i.i.i407 ], [ %682, %.lr.ph.i.i.i.i407.preheader ] + %.0811.i.i.i.i409 = phi ptr [ %.19.i.i.i.i410, %.lr.ph.i.i.i.i407 ], [ %106, %.lr.ph.i.i.i.i407.preheader ] + %705 = getelementptr inbounds nuw i8, ptr %.012.i.i.i.i408, i64 32 + %706 = load ptr, ptr %705, align 8, !tbaa !32 + %707 = load i64, ptr %706, align 8 + %708 = and i64 %707, 1099511627775 + %709 = icmp samesign ult i64 %708, %686 + %.19.i.i.i.i410 = select i1 %709, ptr %.0811.i.i.i.i409, ptr %703 + %.1.in.v.i.i.i.i411 = select i1 %709, i64 24, i64 16 %.1.in.i.i.i.i412 = getelementptr inbounds nuw i8, ptr %.012.i.i.i.i408, i64 %.1.in.v.i.i.i.i411 %.1.i.i.i.i413 = load ptr, ptr %.1.in.i.i.i.i412, align 8, !tbaa !28 %.not.i.i.i.i414 = icmp eq ptr %.1.i.i.i.i413, null - br i1 %.not.i.i.i.i414, label %_ZNSt3mapIN4cvc58internal12NodeTemplateILb1EEEjSt4lessIS3_ESaISt4pairIKS3_jEEE11lower_boundERS7_.exit.i, label %705, !llvm.loop !72 + br i1 %.not.i.i.i.i414, label %_ZNSt3mapIN4cvc58internal12NodeTemplateILb1EEEjSt4lessIS3_ESaISt4pairIKS3_jEEE11lower_boundERS7_.exit.i, label %.lr.ph.i.i.i.i407, !llvm.loop !72 -_ZNSt3mapIN4cvc58internal12NodeTemplateILb1EEEjSt4lessIS3_ESaISt4pairIKS3_jEEE11lower_boundERS7_.exit.i: ; preds = %705 +_ZNSt3mapIN4cvc58internal12NodeTemplateILb1EEEjSt4lessIS3_ESaISt4pairIKS3_jEEE11lower_boundERS7_.exit.i: ; preds = %.lr.ph.i.i.i.i407 + %710 = load i32, ptr %14, align 4, !tbaa !11 %711 = icmp eq ptr %.19.i.i.i.i410, %106 br i1 %711, label %.critedge.i416, label %712 @@ -1613,7 +1609,7 @@ _ZNSt3mapIN4cvc58internal12NodeTemplateILb1EEEjSt4lessIS3_ESaISt4pairIKS3_jEEE11 br i1 %717, label %.critedge.i416, label %755 .critedge.i416: ; preds = %.critedge.thread631, %712, %_ZNSt3mapIN4cvc58internal12NodeTemplateILb1EEEjSt4lessIS3_ESaISt4pairIKS3_jEEE11lower_boundERS7_.exit.i - %718 = phi i32 [ %704, %712 ], [ %704, %_ZNSt3mapIN4cvc58internal12NodeTemplateILb1EEEjSt4lessIS3_ESaISt4pairIKS3_jEEE11lower_boundERS7_.exit.i ], [ %683, %.critedge.thread631 ] + %718 = phi i32 [ %710, %712 ], [ %710, %_ZNSt3mapIN4cvc58internal12NodeTemplateILb1EEEjSt4lessIS3_ESaISt4pairIKS3_jEEE11lower_boundERS7_.exit.i ], [ %683, %.critedge.thread631 ] %.08.lcssa.i.i.i11.i417 = phi ptr [ %.19.i.i.i.i410, %712 ], [ %.19.i.i.i.i410, %_ZNSt3mapIN4cvc58internal12NodeTemplateILb1EEEjSt4lessIS3_ESaISt4pairIKS3_jEEE11lower_boundERS7_.exit.i ], [ %106, %.critedge.thread631 ] call void @llvm.lifetime.start.p0(ptr nonnull %6) store ptr %.sroa.0595.0659, ptr %6, align 8, !tbaa !70 @@ -1710,7 +1706,7 @@ _ZNSt8_Rb_treeIN4cvc58internal12NodeTemplateILb1EEESt4pairIKS3_jESt10_Select1stI br label %755 755: ; preds = %.noexc418, %712 - %756 = phi i32 [ %718, %.noexc418 ], [ %704, %712 ] + %756 = phi i32 [ %718, %.noexc418 ], [ %710, %712 ] %.sroa.06.0.i415 = phi ptr [ %.sroa.0.010.i523, %.noexc418 ], [ %.19.i.i.i.i410, %712 ] %757 = getelementptr inbounds nuw i8, ptr %.sroa.06.0.i415, i64 40 store i32 %756, ptr %757, align 4, !tbaa !11 @@ -1932,7 +1928,7 @@ _ZNSt6vectorIiSaIiEE9push_backEOi.exit: ; preds = %123, %_ZNSt6vectorI br label %.body527 .body527: ; preds = %.loopexit640, %.loopexit.split-lp641, %702, %739, %560, %677, %678 - %.pn121.pn.pn = phi { ptr, i32 } [ %679, %678 ], [ %.pn121, %677 ], [ %561, %560 ], [ %703, %702 ], [ %740, %739 ], [ %lpad.loopexit642, %.loopexit640 ], [ %lpad.loopexit.split-lp643, %.loopexit.split-lp641 ] + %.pn121.pn.pn = phi { ptr, i32 } [ %679, %678 ], [ %.pn121, %677 ], [ %561, %560 ], [ %703, %703 ], [ %740, %739 ], [ %lpad.loopexit642, %.loopexit640 ], [ %lpad.loopexit.split-lp643, %.loopexit.split-lp641 ] call void @_ZNSt6vectorIN4cvc58internal12NodeTemplateILb1EEESaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %24) #22 call void @llvm.lifetime.end.p0(ptr nonnull %24) br label %838 diff --git a/bench/darktable/optimized/CrwDecompressor.ll b/bench/darktable/optimized/CrwDecompressor.ll index 8c66defb432..171d8a0e772 100644 --- a/bench/darktable/optimized/CrwDecompressor.ll +++ b/bench/darktable/optimized/CrwDecompressor.ll @@ -2403,8 +2403,8 @@ define linkonce_odr hidden void @_ZNSt6vectorIjSaIjEE17_M_default_appendEm(ptr n _ZSt6fill_nIPjmjET_S1_T0_RKT1_.exit.loopexit.i.i.i: ; preds = %19 %.idx.i.i.i.i.i = shl nuw nsw i64 %21, 2 - tail call void @llvm.memset.p0.i64(ptr align 4 %20, i8 0, i64 %.idx.i.i.i.i.i, i1 false), !tbaa !17 %23 = getelementptr inbounds nuw i8, ptr %20, i64 %.idx.i.i.i.i.i + tail call void @llvm.memset.p0.i64(ptr align 4 %20, i8 0, i64 %.idx.i.i.i.i.i, i1 false), !tbaa !17 br label %_ZSt27__uninitialized_default_n_aIPjmjET_S1_T0_RSaIT1_E.exit _ZSt27__uninitialized_default_n_aIPjmjET_S1_T0_RSaIT1_E.exit: ; preds = %19, %_ZSt6fill_nIPjmjET_S1_T0_RKT1_.exit.loopexit.i.i.i @@ -2610,7 +2610,6 @@ _ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_15BitStreamerJPEGEE8get call void @llvm.lifetime.end.p0(ptr nonnull %.sroa.0.i) call void @llvm.lifetime.start.p0(ptr nonnull %3) store i64 %.sroa.0.0..sroa.0.0..i, ptr %3, align 8 - %.sroa.0.0.copyload.i = load i64, ptr %0, align 8 br label %.lr.ph.i.i .lr.ph.i.i: ; preds = %.lr.ph.i.i, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_15BitStreamerJPEGEE8getInputEv.exit @@ -2628,6 +2627,7 @@ _ZSt10accumulateIPSt4bytebZN8rawspeed15BitStreamerJPEG9fillCacheESt5arrayIS0_Lm8 br i1 %35, label %37, label %.preheader.i .preheader.i: ; preds = %_ZSt10accumulateIPSt4bytebZN8rawspeed15BitStreamerJPEG9fillCacheESt5arrayIS0_Lm8EEEUlbS0_E_ET0_T_S8_S7_T1_.exit.i + %.promoted66.i = load i64, ptr %0, align 8, !tbaa !153 %36 = zext nneg i32 %5 to i64 br label %46 @@ -2638,7 +2638,8 @@ _ZSt10accumulateIPSt4bytebZN8rawspeed15BitStreamerJPEG9fillCacheESt5arrayIS0_Lm8 %41 = sub nuw nsw i32 32, %5 %42 = zext nneg i32 %41 to i64 %43 = shl nuw i64 %40, %42 - %44 = or i64 %43, %.sroa.0.0.copyload.i + %.sroa.0.0.copyload.i = load i64, ptr %0, align 8 + %44 = or i64 %.sroa.0.0.copyload.i, %43 %45 = add nuw nsw i32 %5, 32 store i64 %44, ptr %0, align 8 store i32 %45, ptr %4, align 8 @@ -2648,7 +2649,7 @@ _ZSt10accumulateIPSt4bytebZN8rawspeed15BitStreamerJPEG9fillCacheESt5arrayIS0_Lm8 %indvars.iv.i = phi i64 [ %36, %.preheader.i ], [ %indvars.iv.next.i, %68 ] %.01970.i = phi i32 [ 0, %.preheader.i ], [ %69, %68 ] %.02169.i = phi i32 [ 0, %.preheader.i ], [ %70, %68 ] - %47 = phi i64 [ %.sroa.0.0.copyload.i, %.preheader.i ], [ %55, %68 ] + %47 = phi i64 [ %.promoted66.i, %.preheader.i ], [ %55, %68 ] %48 = zext nneg i32 %.01970.i to i64 %49 = getelementptr inbounds nuw i8, ptr %3, i64 %48 %50 = load i8, ptr %49, align 1, !tbaa !100 @@ -3418,8 +3419,8 @@ define linkonce_odr hidden void @_ZNSt6vectorIiSaIiEE17_M_default_appendEm(ptr n _ZSt6fill_nIPimiET_S1_T0_RKT1_.exit.loopexit.i.i.i: ; preds = %19 %.idx.i.i.i.i.i = shl nuw nsw i64 %21, 2 - tail call void @llvm.memset.p0.i64(ptr align 4 %20, i8 0, i64 %.idx.i.i.i.i.i, i1 false), !tbaa !17 %23 = getelementptr inbounds nuw i8, ptr %20, i64 %.idx.i.i.i.i.i + tail call void @llvm.memset.p0.i64(ptr align 4 %20, i8 0, i64 %.idx.i.i.i.i.i, i1 false), !tbaa !17 br label %_ZSt27__uninitialized_default_n_aIPimiET_S1_T0_RSaIT1_E.exit _ZSt27__uninitialized_default_n_aIPimiET_S1_T0_RSaIT1_E.exit: ; preds = %19, %_ZSt6fill_nIPimiET_S1_T0_RKT1_.exit.loopexit.i.i.i diff --git a/bench/darktable/optimized/introspection_temperature.ll b/bench/darktable/optimized/introspection_temperature.ll index cb7a265f91f..7e6962ac04e 100644 --- a/bench/darktable/optimized/introspection_temperature.ll +++ b/bench/darktable/optimized/introspection_temperature.ll @@ -2044,45 +2044,48 @@ _temp2mul.exit134: ; preds = %.preheader.i.i130 %217 = load double, ptr %104, align 8, !tbaa !189 %218 = fptrunc reassoc nsz arcp contract afn double %217 to float %219 = load double, ptr %17, align 8, !tbaa !188 - %220 = fptrunc reassoc nsz arcp contract afn double %219 to float - %221 = fptrunc reassoc nsz arcp contract afn double %213 to float - %222 = load double, ptr %105, align 8, !tbaa !189 - %223 = fptrunc reassoc nsz arcp contract afn double %222 to float + %220 = load double, ptr %105, align 8, !tbaa !189 call void @llvm.lifetime.start.p0(ptr nonnull %18) call void @llvm.lifetime.start.p0(ptr nonnull %19) br label %224 224: ; preds = %224, %204 - %.01.i.i = phi i64 [ 0, %204 ], [ %237, %224 ] + %.01.i.i = phi i64 [ 0, %204 ], [ %234, %221 ] %225 = getelementptr inbounds nuw float, ptr @dt_XYZ_to_Rec709_D65.xyz_to_srgb_transposed, i64 %.01.i.i + %223 = load float, ptr %222, align 4, !tbaa !6 + %224 = fmul reassoc nsz arcp contract afn float %223, %215 + %225 = getelementptr inbounds nuw float, ptr getelementptr inbounds nuw (i8, ptr @dt_XYZ_to_Rec709_D65.xyz_to_srgb_transposed, i64 16), i64 %.01.i.i %226 = load float, ptr %225, align 4, !tbaa !6 - %227 = fmul reassoc nsz arcp contract afn float %226, %215 - %228 = getelementptr inbounds nuw float, ptr getelementptr inbounds nuw (i8, ptr @dt_XYZ_to_Rec709_D65.xyz_to_srgb_transposed, i64 16), i64 %.01.i.i - %229 = load float, ptr %228, align 4, !tbaa !6 - %230 = fmul reassoc nsz arcp contract afn float %229, %216 - %231 = fadd reassoc nsz arcp contract afn float %230, %227 - %232 = getelementptr inbounds nuw float, ptr getelementptr inbounds nuw (i8, ptr @dt_XYZ_to_Rec709_D65.xyz_to_srgb_transposed, i64 32), i64 %.01.i.i - %233 = load float, ptr %232, align 4, !tbaa !6 - %234 = fmul reassoc nsz arcp contract afn float %233, %218 - %235 = fadd reassoc nsz arcp contract afn float %231, %234 - %236 = getelementptr inbounds nuw float, ptr %18, i64 %.01.i.i - store float %235, ptr %236, align 4, !tbaa !6 - %237 = add nuw nsw i64 %.01.i.i, 1 - %exitcond.not.i.i135 = icmp eq i64 %237, 4 - br i1 %exitcond.not.i.i135, label %dt_XYZ_to_Rec709_D65.exit, label %224 - -dt_XYZ_to_Rec709_D65.exit: ; preds = %224, %dt_XYZ_to_Rec709_D65.exit - %.01.i.i136 = phi i64 [ %250, %dt_XYZ_to_Rec709_D65.exit ], [ 0, %224 ] + %227 = fmul reassoc nsz arcp contract afn float %226, %216 + %228 = fadd reassoc nsz arcp contract afn float %227, %224 + %229 = getelementptr inbounds nuw float, ptr getelementptr inbounds nuw (i8, ptr @dt_XYZ_to_Rec709_D65.xyz_to_srgb_transposed, i64 32), i64 %.01.i.i + %230 = load float, ptr %229, align 4, !tbaa !6 + %231 = fmul reassoc nsz arcp contract afn float %230, %218 + %232 = fadd reassoc nsz arcp contract afn float %228, %231 + %233 = getelementptr inbounds nuw float, ptr %18, i64 %.01.i.i + store float %232, ptr %233, align 4, !tbaa !6 + %234 = add nuw nsw i64 %.01.i.i, 1 + %exitcond.not.i.i135 = icmp eq i64 %234, 4 + br i1 %exitcond.not.i.i135, label %dt_XYZ_to_Rec709_D65.exit.preheader, label %224 + +dt_XYZ_to_Rec709_D65.exit.preheader:; preds = %224 + %235 = fptrunc reassoc nsz arcp contract afn double %219 to float + %236 = fptrunc reassoc nsz arcp contract afn double %213 to float + %237 = fptrunc reassoc nsz arcp contract afn double %220 to float + br label %dt_XYZ_to_Rec709_D65.exit + +dt_XYZ_to_Rec709_D65.exit: ; preds = %dt_XYZ_to_Rec709_D65.exit.preheader, %dt_XYZ_to_Rec709_D65.exit + %.01.i.i136 = phi i64 [ %250, %dt_XYZ_to_Rec709_D65.exit ], [ 0, %dt_XYZ_to_Rec709_D65.exit.preheader ] %238 = getelementptr inbounds nuw float, ptr @dt_XYZ_to_Rec709_D65.xyz_to_srgb_transposed, i64 %.01.i.i136 %239 = load float, ptr %238, align 4, !tbaa !6 - %240 = fmul reassoc nsz arcp contract afn float %239, %220 + %240 = fmul reassoc nsz arcp contract afn float %239, %235 %241 = getelementptr inbounds nuw float, ptr getelementptr inbounds nuw (i8, ptr @dt_XYZ_to_Rec709_D65.xyz_to_srgb_transposed, i64 16), i64 %.01.i.i136 %242 = load float, ptr %241, align 4, !tbaa !6 - %243 = fmul reassoc nsz arcp contract afn float %242, %221 + %243 = fmul reassoc nsz arcp contract afn float %242, %236 %244 = fadd reassoc nsz arcp contract afn float %243, %240 %245 = getelementptr inbounds nuw float, ptr getelementptr inbounds nuw (i8, ptr @dt_XYZ_to_Rec709_D65.xyz_to_srgb_transposed, i64 32), i64 %.01.i.i136 %246 = load float, ptr %245, align 4, !tbaa !6 - %247 = fmul reassoc nsz arcp contract afn float %246, %223 + %247 = fmul reassoc nsz arcp contract afn float %246, %237 %248 = fadd reassoc nsz arcp contract afn float %244, %247 %249 = getelementptr inbounds nuw float, ptr %19, i64 %.01.i.i136 store float %248, ptr %249, align 4, !tbaa !6 @@ -4973,16 +4976,16 @@ define internal fastcc void @_temperature_to_XYZ(ptr dead_on_unwind noalias nonn br i1 %exitcond.not.i, label %_spectrum_to_XYZ.exit, label %9 _spectrum_to_XYZ.exit: ; preds = %9 - %40 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %41 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %40 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %41 = getelementptr inbounds nuw i8, ptr %0, i64 16 %42 = tail call reassoc nsz arcp contract afn double @llvm.maxnum.f64(double %30, double %34) %43 = tail call reassoc nsz arcp contract afn double @llvm.maxnum.f64(double %42, double %38) %44 = fdiv reassoc nsz arcp contract afn double %30, %43 store double %44, ptr %0, align 8, !tbaa !188, !alias.scope !221 %45 = fdiv reassoc nsz arcp contract afn double %34, %43 - store double %45, ptr %41, align 8, !tbaa !180, !alias.scope !221 + store double %45, ptr %40, align 8, !tbaa !180, !alias.scope !221 %46 = fdiv reassoc nsz arcp contract afn double %38, %43 - store double %46, ptr %40, align 8, !tbaa !189, !alias.scope !221 + store double %46, ptr %41, align 8, !tbaa !189, !alias.scope !221 br label %99 47: ; preds = %2 @@ -5044,16 +5047,16 @@ _spectrum_to_XYZ.exit: ; preds = %9 br i1 %exitcond.not.i7, label %_spectrum_to_XYZ.exit8, label %49 _spectrum_to_XYZ.exit8: ; preds = %49 - %92 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %93 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %92 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %93 = getelementptr inbounds nuw i8, ptr %0, i64 16 %94 = call reassoc nsz arcp contract afn double @llvm.maxnum.f64(double %82, double %86) %95 = call reassoc nsz arcp contract afn double @llvm.maxnum.f64(double %94, double %90) %96 = fdiv reassoc nsz arcp contract afn double %82, %95 store double %96, ptr %0, align 8, !tbaa !188, !alias.scope !228 %97 = fdiv reassoc nsz arcp contract afn double %86, %95 - store double %97, ptr %93, align 8, !tbaa !180, !alias.scope !228 + store double %97, ptr %92, align 8, !tbaa !180, !alias.scope !228 %98 = fdiv reassoc nsz arcp contract afn double %90, %95 - store double %98, ptr %92, align 8, !tbaa !189, !alias.scope !228 + store double %98, ptr %93, align 8, !tbaa !189, !alias.scope !228 br label %99 99: ; preds = %_spectrum_to_XYZ.exit8, %_spectrum_to_XYZ.exit diff --git a/bench/duckdb/optimized/ub_duckdb_core_functions_string.ll b/bench/duckdb/optimized/ub_duckdb_core_functions_string.ll index c4a4b6d5440..9c31a777b0c 100644 --- a/bench/duckdb/optimized/ub_duckdb_core_functions_string.ll +++ b/bench/duckdb/optimized/ub_duckdb_core_functions_string.ll @@ -62653,6 +62653,7 @@ _ZNSt6vectorImSaImEE17_S_check_init_lenEmRKS0_.exit.i.i.i.i.i: ; preds = %22 %27 = getelementptr inbounds nuw i64, ptr %26, i64 %24 %28 = getelementptr inbounds nuw i8, ptr %11, i64 16 store ptr %27, ptr %28, align 8, !tbaa !1595 + %29 = getelementptr inbounds nuw i8, ptr %26, i64 %25 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %26, i8 0, i64 %25, i1 false), !tbaa !84 %29 = icmp ult i32 %17, 13 %30 = getelementptr inbounds nuw i8, ptr %13, i64 4 @@ -62660,9 +62661,8 @@ _ZNSt6vectorImSaImEE17_S_check_init_lenEmRKS0_.exit.i.i.i.i.i: ; preds = %22 %32 = icmp ult i32 %19, 13 %33 = getelementptr inbounds nuw i8, ptr %14, i64 4 %34 = select i1 %32, ptr %33, ptr %3 - %35 = getelementptr inbounds nuw i8, ptr %26, i64 %25 %36 = getelementptr inbounds nuw i8, ptr %11, i64 8 - store ptr %35, ptr %36, align 8, !tbaa !1596 + store ptr %29, ptr %36, align 8, !tbaa !1596 call void @llvm.lifetime.start.p0(ptr nonnull %12) %37 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %25) #27 to label %.noexc60.i.i.i unwind label %42 @@ -62672,8 +62672,8 @@ _ZNSt6vectorImSaImEE17_S_check_init_lenEmRKS0_.exit.i.i.i.i.i: ; preds = %22 %38 = getelementptr inbounds nuw i64, ptr %37, i64 %24 %39 = getelementptr inbounds nuw i8, ptr %12, i64 16 store ptr %38, ptr %39, align 8, !tbaa !1595 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %37, i8 0, i64 %25, i1 false), !tbaa !84 %40 = getelementptr inbounds nuw i8, ptr %37, i64 %25 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %37, i8 0, i64 %25, i1 false), !tbaa !84 %41 = getelementptr inbounds nuw i8, ptr %12, i64 8 store ptr %40, ptr %41, align 8, !tbaa !1596 br label %44 @@ -80844,8 +80844,8 @@ define linkonce_odr void @_ZNSt6vectorImSaImEE17_M_default_appendEm(ptr noundef _ZSt6fill_nIPmmmET_S1_T0_RKT1_.exit.loopexit.i.i.i: ; preds = %19 %.idx.i.i.i.i.i = shl nuw nsw i64 %21, 3 - tail call void @llvm.memset.p0.i64(ptr align 8 %20, i8 0, i64 %.idx.i.i.i.i.i, i1 false), !tbaa !84 %23 = getelementptr inbounds nuw i8, ptr %20, i64 %.idx.i.i.i.i.i + tail call void @llvm.memset.p0.i64(ptr align 8 %20, i8 0, i64 %.idx.i.i.i.i.i, i1 false), !tbaa !84 br label %_ZSt27__uninitialized_default_n_aIPmmmET_S1_T0_RSaIT1_E.exit _ZSt27__uninitialized_default_n_aIPmmmET_S1_T0_RSaIT1_E.exit: ; preds = %19, %_ZSt6fill_nIPmmmET_S1_T0_RKT1_.exit.loopexit.i.i.i @@ -120036,34 +120036,34 @@ define linkonce_odr void @_ZN10duckdb_fmt2v68internal24handle_cstring_type_specI br label %74 12: ; preds = %2 - %13 = load ptr, ptr %1, align 8, !tbaa !2493 - %14 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %15 = load ptr, ptr %14, align 8, !tbaa !2096 - %16 = ptrtoint ptr %15 to i64 - %17 = getelementptr inbounds nuw i8, ptr %13, i64 16 - %18 = load ptr, ptr %17, align 8, !tbaa !2038 - br label %19 + %13 = getelementptr inbounds nuw i8, ptr %1, i64 8 + %14 = load ptr, ptr %13, align 8, !tbaa !2096 + %15 = ptrtoint ptr %14 to i64 + br label %16 19: ; preds = %19, %12 - %.03.i.i.i.i = phi i64 [ %16, %12 ], [ %21, %19 ] - %.0.i.i.i.i = phi i32 [ 0, %12 ], [ %20, %19 ] + %.03.i.i.i.i = phi i64 [ %15, %12 ], [ %21, %16 ] + %.0.i.i.i.i = phi i32 [ 0, %12 ], [ %20, %16 ] %20 = add nuw nsw i32 %.0.i.i.i.i, 1 %21 = lshr i64 %.03.i.i.i.i, 4 %.not.i.i.i.i = icmp ult i64 %.03.i.i.i.i, 16 br i1 %.not.i.i.i.i, label %_ZN10duckdb_fmt2v68internal12count_digitsILj4EmEEiT0_.exit.i.i.i, label %19, !llvm.loop !2227 _ZN10duckdb_fmt2v68internal12count_digitsILj4EmEEiT0_.exit.i.i.i: ; preds = %19 + %19 = load ptr, ptr %1, align 8, !tbaa !2493 + %20 = getelementptr inbounds nuw i8, ptr %19, i64 16 + %21 = load ptr, ptr %20, align 8, !tbaa !2038 call void @llvm.lifetime.start.p0(ptr nonnull %3) - store i64 %16, ptr %3, align 8, !tbaa !2494 + store i64 %15, ptr %3, align 8, !tbaa !2494 %22 = getelementptr inbounds nuw i8, ptr %3, i64 8 store i32 %20, ptr %22, align 8, !tbaa !2496 - %.not.i.i.i = icmp eq ptr %18, null + %.not.i.i.i = icmp eq ptr %21, null br i1 %.not.i.i.i, label %23, label %48 23: ; preds = %_ZN10duckdb_fmt2v68internal12count_digitsILj4EmEEiT0_.exit.i.i.i %24 = add nuw i32 %.0.i.i.i.i, 3 %25 = zext i32 %24 to i64 - %.sroa.0.0.copyload.i.i.i.i.i = load ptr, ptr %13, align 8 + %.sroa.0.0.copyload.i.i.i.i.i = load ptr, ptr %19, align 8 %26 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.copyload.i.i.i.i.i, i64 16 %27 = load i64, ptr %26, align 8, !tbaa !2015 %28 = add i64 %27, %25 @@ -120092,7 +120092,7 @@ _ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE7reserveEm.exit br label %42 42: ; preds = %42, %_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE7reserveEm.exit.i.i.i - %.09.i.i.i.i.i = phi i64 [ %16, %_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE7reserveEm.exit.i.i.i ], [ %47, %42 ] + %.09.i.i.i.i.i = phi i64 [ %15, %_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE7reserveEm.exit.i.i.i ], [ %47, %42 ] %.0.i.i.i.i.i = phi ptr [ %41, %_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE7reserveEm.exit.i.i.i ], [ %46, %42 ] %43 = and i64 %.09.i.i.i.i.i, 15 %44 = getelementptr inbounds nuw i8, ptr @_ZN10duckdb_fmt2v68internal10basic_dataIvE10hex_digitsE, i64 %43 @@ -120105,7 +120105,7 @@ _ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE7reserveEm.exit 48: ; preds = %_ZN10duckdb_fmt2v68internal12count_digitsILj4EmEEiT0_.exit.i.i.i call void @llvm.lifetime.start.p0(ptr nonnull %4) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(20) %4, ptr noundef nonnull align 4 dereferenceable(20) %18, i64 20, i1 false), !tbaa.struct !2065 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(20) %4, ptr noundef nonnull align 4 dereferenceable(20) %21, i64 20, i1 false), !tbaa.struct !2065 %49 = getelementptr inbounds nuw i8, ptr %4, i64 9 %50 = load i8, ptr %49, align 1 %51 = and i8 %50, 15 @@ -120118,7 +120118,7 @@ _ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE7reserveEm.exit br label %55 55: ; preds = %53, %48 - call void @_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE12write_paddedIRNS5_14pointer_writerImEEEEvRKNS0_18basic_format_specsIcEEOT_(ptr noundef nonnull align 8 dereferenceable(24) %13, ptr noundef nonnull align 4 dereferenceable(17) %4, ptr noundef nonnull align 8 dereferenceable(16) %3) + call void @_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE12write_paddedIRNS5_14pointer_writerImEEEEvRKNS0_18basic_format_specsIcEEOT_(ptr noundef nonnull align 8 dereferenceable(24) %19, ptr noundef nonnull align 4 dereferenceable(17) %4, ptr noundef nonnull align 8 dereferenceable(16) %3) call void @llvm.lifetime.end.p0(ptr nonnull %4) br label %_ZN10duckdb_fmt2v68internal18arg_formatter_baseINS0_12buffer_rangeIcEENS1_13error_handlerEE20cstring_spec_handler10on_pointerEv.exit @@ -120570,28 +120570,27 @@ define linkonce_odr ptr @_ZN10duckdb_fmt2v68internal18arg_formatter_baseINS0_12b call void @llvm.lifetime.start.p0(ptr nonnull %5) call void @_ZN10duckdb_fmt2v68internal23check_pointer_type_specIcNS1_13error_handlerEEEvT_OT0_(i8 noundef signext %10, ptr noundef nonnull align 1 dereferenceable(1) %5) call void @llvm.lifetime.end.p0(ptr nonnull %5) - %.pr = load ptr, ptr %6, align 8, !tbaa !2038 br label %11 11: ; preds = %8, %2 - %12 = phi ptr [ %.pr, %8 ], [ null, %2 ] - %13 = ptrtoint ptr %1 to i64 - br label %14 - -14: ; preds = %14, %11 - %.03.i.i.i = phi i64 [ %13, %11 ], [ %16, %14 ] - %.0.i.i.i = phi i32 [ 0, %11 ], [ %15, %14 ] - %15 = add nuw nsw i32 %.0.i.i.i, 1 - %16 = lshr i64 %.03.i.i.i, 4 + %12 = ptrtoint ptr %1 to i64 + br label %13 + +13: ; preds = %13, %11 + %.03.i.i.i = phi i64 [ %12, %11 ], [ %15, %13 ] + %.03.i.i.i = phi i32 [ 0, %11 ], [ %14, %13 ] + %14 = add nuw nsw i32 %.0.i.i.i, 1 + %15 = lshr i64 %.03.i.i.i, 4 %.not.i.i.i = icmp ult i64 %.03.i.i.i, 16 - br i1 %.not.i.i.i, label %_ZN10duckdb_fmt2v68internal12count_digitsILj4EmEEiT0_.exit.i.i, label %14, !llvm.loop !2227 + br i1 %.not.i.i.i, label %_ZN10duckdb_fmt2v68internal12count_digitsILj4EmEEiT0_.exit.i.i, label %13, !llvm.loop !2227 -_ZN10duckdb_fmt2v68internal12count_digitsILj4EmEEiT0_.exit.i.i: ; preds = %14 +_ZN10duckdb_fmt2v68internal12count_digitsILj4EmEEiT0_.exit.i.i: ; preds = %13 + %16 = load ptr, ptr %6, align 8, !tbaa !2038 call void @llvm.lifetime.start.p0(ptr nonnull %3) - store i64 %13, ptr %3, align 8, !tbaa !2494 + store i64 %12, ptr %3, align 8, !tbaa !2494 %17 = getelementptr inbounds nuw i8, ptr %3, i64 8 - store i32 %15, ptr %17, align 8, !tbaa !2496 - %.not.i.i = icmp eq ptr %12, null + store i32 %14, ptr %17, align 8, !tbaa !2496 + %.not.i.i = icmp eq ptr %16, null br i1 %.not.i.i, label %18, label %43 18: ; preds = %_ZN10duckdb_fmt2v68internal12count_digitsILj4EmEEiT0_.exit.i.i @@ -120621,12 +120620,12 @@ _ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE7reserveEm.exit store i8 48, ptr %32, align 1, !tbaa !65 %34 = getelementptr inbounds nuw i8, ptr %32, i64 2 store i8 120, ptr %33, align 1, !tbaa !65 - %35 = zext nneg i32 %15 to i64 + %35 = zext nneg i32 %14 to i64 %36 = getelementptr inbounds nuw i8, ptr %34, i64 %35 br label %37 37: ; preds = %37, %_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE7reserveEm.exit.i.i - %.09.i.i.i.i = phi i64 [ %13, %_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE7reserveEm.exit.i.i ], [ %42, %37 ] + %.09.i.i.i.i = phi i64 [ %12, %_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE7reserveEm.exit.i.i ], [ %42, %37 ] %.0.i.i.i.i = phi ptr [ %36, %_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE7reserveEm.exit.i.i ], [ %41, %37 ] %38 = and i64 %.09.i.i.i.i, 15 %39 = getelementptr inbounds nuw i8, ptr @_ZN10duckdb_fmt2v68internal10basic_dataIvE10hex_digitsE, i64 %38 @@ -120639,7 +120638,7 @@ _ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE7reserveEm.exit 43: ; preds = %_ZN10duckdb_fmt2v68internal12count_digitsILj4EmEEiT0_.exit.i.i call void @llvm.lifetime.start.p0(ptr nonnull %4) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(20) %4, ptr noundef nonnull align 4 dereferenceable(20) %12, i64 20, i1 false), !tbaa.struct !2065 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(20) %4, ptr noundef nonnull align 4 dereferenceable(20) %16, i64 20, i1 false), !tbaa.struct !2065 %44 = getelementptr inbounds nuw i8, ptr %4, i64 9 %45 = load i8, ptr %44, align 1 %46 = and i8 %45, 15 diff --git a/bench/eastl/optimized/BenchmarkTupleVector.ll b/bench/eastl/optimized/BenchmarkTupleVector.ll index c94648633c8..adb05d63676 100644 --- a/bench/eastl/optimized/BenchmarkTupleVector.ll +++ b/bench/eastl/optimized/BenchmarkTupleVector.ll @@ -4989,12 +4989,8 @@ while.cond.i.i: ; preds = %while.cond.i.i, %fo %inc.i.i.i = add i64 %first.sroa.0.1.i.i, 1 br i1 %cmp.i.i.i.i14, label %while.cond.i.i, label %while.cond3.i.i.preheader, !llvm.loop !124 -while.cond3.i.i.preheader: ; preds = %while.cond.i.i - %arrayidx2.i.i.i.i.le = getelementptr inbounds i64, ptr %first.coerce1, i64 %first.sroa.0.1.i.i - br label %while.cond3.i.i - -while.cond3.i.i: ; preds = %while.cond3.i.i.preheader, %while.cond3.i.i - %last.sroa.0.1.in.i.i = phi i64 [ %last.sroa.0.1.i.i, %while.cond3.i.i ], [ %last.sroa.0.0.i.i, %while.cond3.i.i.preheader ] +while.cond3.i.i.preheader: ; preds = %while.cond.i.i, %while.cond3.i.i + %last.sroa.0.1.in.i.i = phi i64 [ %last.sroa.0.1.i.i, %while.cond3.i.i ], [ %last.sroa.0.0.i.i, %while.cond.i.i ] %last.sroa.0.1.i.i = add i64 %last.sroa.0.1.in.i.i, -1 %arrayidx2.i.i3.i.i = getelementptr inbounds i64, ptr %storemerge32, i64 %last.sroa.0.1.i.i %7 = load i64, ptr %arrayidx2.i.i3.i.i, align 8 @@ -5007,6 +5003,7 @@ while.end8.i.i: ; preds = %while.cond3.i.i if.end.i.i: ; preds = %while.end8.i.i %arrayidx2.i.i3.i.i.le = getelementptr inbounds i64, ptr %storemerge32, i64 %last.sroa.0.1.i.i + %arrayidx2.i.i.i.i.le = getelementptr inbounds i64, ptr %first.coerce1, i64 %first.sroa.0.1.i.i store i64 %7, ptr %arrayidx2.i.i.i.i.le, align 8 store i64 %6, ptr %arrayidx2.i.i3.i.i.le, align 8 br label %for.cond.i.i, !llvm.loop !126 @@ -5837,8 +5834,8 @@ while.end13.i.i: ; preds = %while.cond6.i.i br i1 %cmp.i6.not.i.i, label %if.end.i.i, label %_ZN5eastl13get_partitionIN9__gnu_cxx17__normal_iteratorIPNS_5tupleIJm13PaddingStructEEESt6vectorIS5_SaIS5_EEEES5_ZN12_GLOBAL__N_113TestTupleSortIS9_EEvRN2EA4StdC9StopwatchERT_EUlSH_T0_E_EESH_SH_SH_RKSJ_T1_.exit if.end.i.i: ; preds = %while.end13.i.i - %add.ptr.i.i.i.i.le.i.i = getelementptr inbounds nuw i8, ptr %first.sroa.0.1.i.i, i64 8 %add.ptr.i.i.i.i3.le.i.i = getelementptr inbounds i8, ptr %last.sroa.0.0.pn.i.i, i64 -56 + %add.ptr.i.i.i.i.le.i.i = getelementptr inbounds nuw i8, ptr %first.sroa.0.1.i.i, i64 8 store i64 %7, ptr %first.sroa.0.1.i.i, align 8 store i64 %6, ptr %last.sroa.0.1.i.i, align 8 call void @llvm.lifetime.start.p0(ptr nonnull %temp.sroa.0.i.i.i.i.i.i.i.i.i.i) @@ -6162,12 +6159,8 @@ while.cond.i.i: ; preds = %while.cond.i.i, %fo %inc.i.i.i = add i64 %inc.i16.i.i, 1 br i1 %cmp.i.i.i22, label %while.cond.i.i, label %while.cond4.i.i.preheader, !llvm.loop !156 -while.cond4.i.i.preheader: ; preds = %while.cond.i.i - %arrayidx2.i.i.i.i.le = getelementptr inbounds i64, ptr %agg.tmp.sroa.2.0.copyload, i64 %inc.i16.i.i - br label %while.cond4.i.i - -while.cond4.i.i: ; preds = %while.cond4.i.i.preheader, %while.cond4.i.i - %storemerge.in.i.i = phi i64 [ %storemerge.i.i, %while.cond4.i.i ], [ %storemerge.lcssa1922.i.i, %while.cond4.i.i.preheader ] +while.cond4.i.i.preheader: ; preds = %while.cond.i.i, %while.cond4.i.i + %storemerge.in.i.i = phi i64 [ %storemerge.i.i, %while.cond4.i.i ], [ %storemerge.lcssa1922.i.i, %while.cond.i.i ] %storemerge.i.i = add i64 %storemerge.in.i.i, -1 %arrayidx2.i.i3.i.i = getelementptr inbounds i64, ptr %agg.tmp.sroa.2.0.copyload50, i64 %storemerge.i.i %agg.tmp6.val.val.i.i = load i64, ptr %arrayidx2.i.i3.i.i, align 8, !noalias !153 @@ -6180,6 +6173,7 @@ while.end10.i.i: ; preds = %while.cond4.i.i if.end.i.i: ; preds = %while.end10.i.i %arrayidx2.i.i3.i.i.le = getelementptr inbounds i64, ptr %agg.tmp.sroa.2.0.copyload50, i64 %storemerge.i.i + %arrayidx2.i.i.i.i.le = getelementptr inbounds i64, ptr %agg.tmp.sroa.2.0.copyload, i64 %inc.i16.i.i call void @llvm.lifetime.start.p0(ptr nonnull %temp.sroa.2.i.i.i.i) %arrayidx6.i.i.i.i.i.i = getelementptr inbounds %struct.PaddingStruct, ptr %agg.tmp.sroa.3.0.copyload, i64 %inc.i16.i.i call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %temp.sroa.2.i.i.i.i, ptr noundef nonnull align 1 dereferenceable(56) %arrayidx6.i.i.i.i.i.i, i64 56, i1 false), !noalias !153 diff --git a/bench/eastl/optimized/TestSList.ll b/bench/eastl/optimized/TestSList.ll index e70116dcac3..f11204d72b9 100644 --- a/bench/eastl/optimized/TestSList.ll +++ b/bench/eastl/optimized/TestSList.ll @@ -4174,19 +4174,16 @@ _ZN5eastl9SListBaseIiNS_9allocatorEE10DoFreeNodeEPNS_9SListNodeIiEE.exit.i.i6450 %cmp.not.i.i6453 = icmp eq ptr %344, null br i1 %cmp.not.i.i6453, label %_ZN5eastl9SListBaseIiNS_9allocatorEE10DoFreeNodeEPNS_9SListNodeIiEE.exit.i.i.i5873.preheader, label %_ZN5eastl9SListBaseIiNS_9allocatorEE10DoFreeNodeEPNS_9SListNodeIiEE.exit.i.i6450, !llvm.loop !9 -invoke.cont1158: ; preds = %call.i.i.i.i.i.i.noexc.i2275 - %ref.tmp1149.sroa.0.0.ref.tmp1149.sroa.0.0.ref.tmp1149.sroa.0.0.ref.tmp1149.sroa.0.0. = load ptr, ptr %ref.tmp1149.sroa.0, align 8 - br label %while.body.i.i.i2283 - -while.body.i.i.i2283: ; preds = %invoke.cont1158, %while.body.i.i.i2283 - %n.05.i.i.i2284 = phi i32 [ %inc.i.i.i2286, %while.body.i.i.i2283 ], [ 0, %invoke.cont1158 ] - %pNode.addr.04.i.i.i2285 = phi ptr [ %345, %while.body.i.i.i2283 ], [ %list11134.sroa.0.0.list11134.sroa.0.0.list11134.sroa.0.0.list11134.sroa.0.0., %invoke.cont1158 ] +invoke.cont1158: ; preds = %call.i.i.i.i.i.i.noexc.i2275, %invoke.cont1158 + %n.05.i.i.i2284 = phi i32 [ %inc.i.i.i2286, %while.body.i.i.i2283 ], [ 0, %call.i.i.i.i.i.i.noexc.i2275 ] + %pNode.addr.04.i.i.i2285 = phi ptr [ %345, %while.body.i.i.i2283 ], [ %list11134.sroa.0.0.list11134.sroa.0.0.list11134.sroa.0.0.list11134.sroa.0.0., %call.i.i.i.i.i.i.noexc.i2275 ] %inc.i.i.i2286 = add i32 %n.05.i.i.i2284, 1 %345 = load ptr, ptr %pNode.addr.04.i.i.i2285, align 8 %tobool.not.i.i.i2287 = icmp eq ptr %345, null br i1 %tobool.not.i.i.i2287, label %_ZNK5eastl5slistIiNS_9allocatorEE4sizeEv.exit.i2289, label %while.body.i.i.i2283, !llvm.loop !10 _ZNK5eastl5slistIiNS_9allocatorEE4sizeEv.exit.i2289: ; preds = %while.body.i.i.i2283 + %ref.tmp1149.sroa.0.0.ref.tmp1149.sroa.0.0.ref.tmp1149.sroa.0.0.ref.tmp1149.sroa.0.0. = load ptr, ptr %ref.tmp1149.sroa.0, align 8 %346 = zext i32 %inc.i.i.i2286 to i64 %tobool.not3.i.i4.i2291 = icmp eq ptr %ref.tmp1149.sroa.0.0.ref.tmp1149.sroa.0.0.ref.tmp1149.sroa.0.0.ref.tmp1149.sroa.0.0., null br i1 %tobool.not3.i.i4.i2291, label %_ZNK5eastl5slistIiNS_9allocatorEE4sizeEv.exit12.i2298, label %while.body.i.i5.i2292 @@ -4296,19 +4293,16 @@ _ZN5eastl9SListBaseIiNS_9allocatorEE10DoFreeNodeEPNS_9SListNodeIiEE.exit.i.i6458 %cmp.not.i.i6461 = icmp eq ptr %359, null br i1 %cmp.not.i.i6461, label %_ZN5eastl9SListBaseIiNS_9allocatorEE10DoFreeNodeEPNS_9SListNodeIiEE.exit.i.i.i5873.preheader, label %_ZN5eastl9SListBaseIiNS_9allocatorEE10DoFreeNodeEPNS_9SListNodeIiEE.exit.i.i6458, !llvm.loop !9 -invoke.cont1183: ; preds = %call.i.i.i.i.i.i.noexc.i2341 - %ref.tmp1174.sroa.0.0.ref.tmp1174.sroa.0.0.ref.tmp1174.sroa.0.0.ref.tmp1174.sroa.0.0. = load ptr, ptr %ref.tmp1174.sroa.0, align 8 - br label %while.body.i.i.i2350 - -while.body.i.i.i2350: ; preds = %invoke.cont1183, %while.body.i.i.i2350 - %n.05.i.i.i2351 = phi i32 [ %inc.i.i.i2353, %while.body.i.i.i2350 ], [ 0, %invoke.cont1183 ] - %pNode.addr.04.i.i.i2352 = phi ptr [ %360, %while.body.i.i.i2350 ], [ %list11134.sroa.0.0.list11134.sroa.0.0.list11134.sroa.0.0.list11134.sroa.0.0., %invoke.cont1183 ] +invoke.cont1183: ; preds = %call.i.i.i.i.i.i.noexc.i2341, %invoke.cont1183 + %n.05.i.i.i2351 = phi i32 [ %inc.i.i.i2353, %while.body.i.i.i2350 ], [ 0, %call.i.i.i.i.i.i.noexc.i2341 ] + %pNode.addr.04.i.i.i2352 = phi ptr [ %360, %while.body.i.i.i2350 ], [ %list11134.sroa.0.0.list11134.sroa.0.0.list11134.sroa.0.0.list11134.sroa.0.0., %call.i.i.i.i.i.i.noexc.i2341 ] %inc.i.i.i2353 = add i32 %n.05.i.i.i2351, 1 %360 = load ptr, ptr %pNode.addr.04.i.i.i2352, align 8 %tobool.not.i.i.i2354 = icmp eq ptr %360, null br i1 %tobool.not.i.i.i2354, label %_ZNK5eastl5slistIiNS_9allocatorEE4sizeEv.exit.i2356, label %while.body.i.i.i2350, !llvm.loop !10 _ZNK5eastl5slistIiNS_9allocatorEE4sizeEv.exit.i2356: ; preds = %while.body.i.i.i2350 + %ref.tmp1174.sroa.0.0.ref.tmp1174.sroa.0.0.ref.tmp1174.sroa.0.0.ref.tmp1174.sroa.0.0. = load ptr, ptr %ref.tmp1174.sroa.0, align 8 %361 = zext i32 %inc.i.i.i2353 to i64 %tobool.not3.i.i4.i2358 = icmp eq ptr %ref.tmp1174.sroa.0.0.ref.tmp1174.sroa.0.0.ref.tmp1174.sroa.0.0.ref.tmp1174.sroa.0.0., null br i1 %tobool.not3.i.i4.i2358, label %_ZNK5eastl5slistIiNS_9allocatorEE4sizeEv.exit12.i2365, label %while.body.i.i5.i2359 @@ -4418,19 +4412,16 @@ _ZN5eastl9SListBaseIiNS_9allocatorEE10DoFreeNodeEPNS_9SListNodeIiEE.exit.i.i6466 %cmp.not.i.i6469 = icmp eq ptr %374, null br i1 %cmp.not.i.i6469, label %_ZN5eastl9SListBaseIiNS_9allocatorEE10DoFreeNodeEPNS_9SListNodeIiEE.exit.i.i.i5873.preheader, label %_ZN5eastl9SListBaseIiNS_9allocatorEE10DoFreeNodeEPNS_9SListNodeIiEE.exit.i.i6466, !llvm.loop !9 -invoke.cont1208: ; preds = %call.i.i.i.i.i.i.noexc.i2408 - %ref.tmp1199.sroa.0.0.ref.tmp1199.sroa.0.0.ref.tmp1199.sroa.0.0.ref.tmp1199.sroa.0.0. = load ptr, ptr %ref.tmp1199.sroa.0, align 8 - br label %while.body.i.i.i2417 - -while.body.i.i.i2417: ; preds = %invoke.cont1208, %while.body.i.i.i2417 - %n.05.i.i.i2418 = phi i32 [ %inc.i.i.i2420, %while.body.i.i.i2417 ], [ 0, %invoke.cont1208 ] - %pNode.addr.04.i.i.i2419 = phi ptr [ %375, %while.body.i.i.i2417 ], [ %list11134.sroa.0.0.list11134.sroa.0.0.list11134.sroa.0.0.list11134.sroa.0.0., %invoke.cont1208 ] +invoke.cont1208: ; preds = %call.i.i.i.i.i.i.noexc.i2408, %invoke.cont1208 + %n.05.i.i.i2418 = phi i32 [ %inc.i.i.i2420, %while.body.i.i.i2417 ], [ 0, %call.i.i.i.i.i.i.noexc.i2408 ] + %pNode.addr.04.i.i.i2419 = phi ptr [ %375, %while.body.i.i.i2417 ], [ %list11134.sroa.0.0.list11134.sroa.0.0.list11134.sroa.0.0.list11134.sroa.0.0., %call.i.i.i.i.i.i.noexc.i2408 ] %inc.i.i.i2420 = add i32 %n.05.i.i.i2418, 1 %375 = load ptr, ptr %pNode.addr.04.i.i.i2419, align 8 %tobool.not.i.i.i2421 = icmp eq ptr %375, null br i1 %tobool.not.i.i.i2421, label %_ZNK5eastl5slistIiNS_9allocatorEE4sizeEv.exit.i2423, label %while.body.i.i.i2417, !llvm.loop !10 _ZNK5eastl5slistIiNS_9allocatorEE4sizeEv.exit.i2423: ; preds = %while.body.i.i.i2417 + %ref.tmp1199.sroa.0.0.ref.tmp1199.sroa.0.0.ref.tmp1199.sroa.0.0.ref.tmp1199.sroa.0.0. = load ptr, ptr %ref.tmp1199.sroa.0, align 8 %376 = zext i32 %inc.i.i.i2420 to i64 %tobool.not3.i.i4.i2425 = icmp eq ptr %ref.tmp1199.sroa.0.0.ref.tmp1199.sroa.0.0.ref.tmp1199.sroa.0.0.ref.tmp1199.sroa.0.0., null br i1 %tobool.not3.i.i4.i2425, label %_ZNK5eastl5slistIiNS_9allocatorEE4sizeEv.exit12.i2432, label %while.body.i.i5.i2426 diff --git a/bench/eastl/optimized/TestVectorMap.ll b/bench/eastl/optimized/TestVectorMap.ll index 3042351f78d..307c0f65fd6 100644 --- a/bench/eastl/optimized/TestVectorMap.ll +++ b/bench/eastl/optimized/TestVectorMap.ll @@ -9707,9 +9707,6 @@ if.then.i.i1735: store i32 %add62, ptr %nErrorCount, align 4 %call.i.i.i.i1739 = tail call noundef ptr @_ZnamPKcijS0_i(i64 noundef 8, ptr noundef null, i32 noundef 0, i32 noundef 0, ptr noundef null, i32 noundef 0) store i64 0, ptr %call.i.i.i.i1739, align 4 - %incdec.ptr25.i = getelementptr inbounds nuw i8, ptr %call.i.i.i.i1739, i64 8 - %sub.ptr.lhs.cast.i.i.i.i.i.i19 = ptrtoint ptr %incdec.ptr25.i to i64 - %sub.ptr.rhs.cast.i.i.i.i.i.i20 = ptrtoint ptr %call.i.i.i.i1739 to i64 br label %while.body.i.i.i.i26 common.resume: ; preds = %_ZN5eastl4pairINS_12basic_stringIcNS_9allocatorEEEiED2Ev.exit1648, %_ZN5eastl4pairINS_12basic_stringIcNS_9allocatorEEEiED2Ev.exit1678, %_ZN5eastl4pairINS_12basic_stringIcNS_9allocatorEEEiED2Ev.exit1708, %_ZN5eastl4pairINS_12basic_stringIcNS_9allocatorEEEiED2Ev.exit1720, %lpad73, %ehcleanup149, %ehcleanup207, %ehcleanup300, %ehcleanup402, %lpad461, %lpad527, %_ZN5eastl9allocator10deallocateEPvm.exit.i.i.i136, %lpad92, %delete.notnull.i.i.i.i.i.i @@ -9732,6 +9729,9 @@ while.body.i.i.i.i26: ; preds = %if.then.i.i1735, %w br i1 %cmp.i.i.i.i37, label %while.body.i.i.i.i26, label %if.then.i.i1765, !llvm.loop !37 if.then.i.i1765: ; preds = %while.body.i.i.i.i26 + %incdec.ptr25.i = getelementptr inbounds nuw i8, ptr %call.i.i.i.i1739, i64 8 + %sub.ptr.lhs.cast.i.i.i.i.i.i19 = ptrtoint ptr %incdec.ptr25.i to i64 + %sub.ptr.rhs.cast.i.i.i.i.i.i20 = ptrtoint ptr %call.i.i.i.i1739 to i64 %cmp3.not.i.i.i.i = icmp eq ptr %first.addr.1.i.i.i.i36, %incdec.ptr25.i %sub.ptr.lhs.cast.i1756 = ptrtoint ptr %first.addr.1.i.i.i.i36 to i64 %sub.ptr.sub.i1758 = sub i64 %sub.ptr.lhs.cast.i1756, %sub.ptr.rhs.cast.i.i.i.i.i.i20 @@ -160763,20 +160763,17 @@ for.cond: ; preds = %if.end9, %if.end3 %incdec.ptr5.ptr = getelementptr inbounds i8, ptr %__last, i64 %__i.0.add %1 = load i32, ptr %incdec.ptr5.ptr, align 8 %cmp.i.i = icmp slt i32 %1, %0 - br i1 %cmp.i.i, label %while.cond.preheader, label %if.end9 - -while.cond.preheader: ; preds = %for.cond - %__i.0.ptr.le = getelementptr inbounds i8, ptr %__last, i64 %__i.0.idx - br label %while.cond + br i1 %cmp.i.i, label %while.cond, label %if.end9 -while.cond: ; preds = %while.cond.preheader, %while.cond - %__j.0 = phi ptr [ %incdec.ptr7, %while.cond ], [ %__last, %while.cond.preheader ] +while.cond: ; preds = %for.cond, %while.cond + %__j.0 = phi ptr [ %incdec.ptr7, %while.cond ], [ %__last, %for.cond ] %incdec.ptr7 = getelementptr inbounds i8, ptr %__j.0, i64 -24 %2 = load i32, ptr %incdec.ptr7, align 8 %cmp.i.i16 = icmp slt i32 %1, %2 br i1 %cmp.i.i16, label %while.end, label %while.cond, !llvm.loop !6478 while.end: ; preds = %while.cond + %__i.0.ptr.le = getelementptr inbounds i8, ptr %__last, i64 %__i.0.idx %mbThrowOnCopy3.i.i.i = getelementptr inbounds i8, ptr %__i.0.ptr.le, i64 -20 %3 = load i8, ptr %mbThrowOnCopy3.i.i.i, align 4 %frombool.i.i.i = and i8 %3, 1 diff --git a/bench/faiss/optimized/IndexPQ.ll b/bench/faiss/optimized/IndexPQ.ll index bdac298046f..b7b797f0c39 100644 --- a/bench/faiss/optimized/IndexPQ.ll +++ b/bench/faiss/optimized/IndexPQ.ll @@ -2147,8 +2147,8 @@ _ZNSt6vectorIlSaIlEE17_S_check_init_lenEmRKS0_.exit.i: ; preds = %67 _ZSt6fill_nIPlmlET_S1_T0_RKT1_.exit.loopexit.i.i.i.i.i: ; preds = %.noexc71 %.idx.i.i.i.i.i.i.i = shl nuw nsw i64 %83, 3 - tail call void @llvm.memset.p0.i64(ptr align 8 %82, i8 0, i64 %.idx.i.i.i.i.i.i.i, i1 false), !tbaa !41 %85 = getelementptr inbounds nuw i8, ptr %82, i64 %.idx.i.i.i.i.i.i.i + tail call void @llvm.memset.p0.i64(ptr align 8 %82, i8 0, i64 %.idx.i.i.i.i.i.i.i, i1 false), !tbaa !41 br label %86 _ZNSt12_Vector_baseIfSaIfEEC2EmRKS0_.exit.thread.i: ; preds = %_ZNSt6vectorIlSaIlEE17_S_check_init_lenEmRKS0_.exit.i @@ -2177,8 +2177,8 @@ _ZNSt12_Vector_baseIfSaIfEEC2EmRKS0_.exit.thread.i: ; preds = %_ZNSt6vectorIlSaI _ZSt6fill_nIPfmfET_S1_T0_RKT1_.exit.loopexit.i.i.i.i.i: ; preds = %.noexc76 %.idx.i.i.i.i.i.i.i73 = shl nuw nsw i64 %83, 2 - tail call void @llvm.memset.p0.i64(ptr align 4 %92, i8 0, i64 %.idx.i.i.i.i.i.i.i73, i1 false), !tbaa !94 %93 = getelementptr inbounds nuw i8, ptr %92, i64 %.idx.i.i.i.i.i.i.i73 + tail call void @llvm.memset.p0.i64(ptr align 4 %92, i8 0, i64 %.idx.i.i.i.i.i.i.i73, i1 false), !tbaa !94 br label %94 94: ; preds = %_ZSt6fill_nIPfmfET_S1_T0_RKT1_.exit.loopexit.i.i.i.i.i, %.noexc76, %_ZNSt12_Vector_baseIfSaIfEEC2EmRKS0_.exit.thread.i @@ -3009,8 +3009,8 @@ define linkonce_odr void @_ZNSt6vectorIfSaIfEE17_M_default_appendEm(ptr noundef _ZSt6fill_nIPfmfET_S1_T0_RKT1_.exit.loopexit.i.i.i: ; preds = %19 %.idx.i.i.i.i.i = shl nuw nsw i64 %21, 2 - tail call void @llvm.memset.p0.i64(ptr align 4 %20, i8 0, i64 %.idx.i.i.i.i.i, i1 false), !tbaa !94 %23 = getelementptr inbounds nuw i8, ptr %20, i64 %.idx.i.i.i.i.i + tail call void @llvm.memset.p0.i64(ptr align 4 %20, i8 0, i64 %.idx.i.i.i.i.i, i1 false), !tbaa !94 br label %_ZSt27__uninitialized_default_n_aIPfmfET_S1_T0_RSaIT1_E.exit _ZSt27__uninitialized_default_n_aIPfmfET_S1_T0_RSaIT1_E.exit: ; preds = %19, %_ZSt6fill_nIPfmfET_S1_T0_RKT1_.exit.loopexit.i.i.i @@ -3500,9 +3500,10 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %22, % br i1 %68, label %.lr.ph.i, label %._crit_edge.i ._crit_edge.i.loopexit: ; preds = %.lr.ph.i - %69 = zext nneg i32 %67 to i64 - %70 = getelementptr i8, ptr %.sroa.034.046, i64 %69 - %scevgep61 = getelementptr i8, ptr %70, i64 1 + %scevgep = getelementptr i8, ptr %.sroa.034.046, i64 2 + %69 = add nsw i32 %67, -1 + %70 = zext i32 %69 to i64 + %scevgep61 = getelementptr i8, ptr %scevgep, i64 %70 br label %._crit_edge.i ._crit_edge.i: ; preds = %._crit_edge.i.loopexit, %62 @@ -3573,9 +3574,10 @@ _ZN5faiss16PQDecoderGeneric6decodeEv.exit: ; preds = %._crit_edge.i, %81, br i1 %104, label %.lr.ph.i26, label %._crit_edge.i22 ._crit_edge.i22.loopexit: ; preds = %.lr.ph.i26 - %105 = zext nneg i32 %103 to i64 - %106 = getelementptr i8, ptr %.sroa.0.050, i64 %105 - %scevgep63 = getelementptr i8, ptr %106, i64 1 + %scevgep62 = getelementptr i8, ptr %.sroa.0.050, i64 2 + %105 = add nsw i32 %103, -1 + %106 = zext i32 %105 to i64 + %scevgep63 = getelementptr i8, ptr %scevgep62, i64 %106 br label %._crit_edge.i22 ._crit_edge.i22: ; preds = %._crit_edge.i22.loopexit, %98 @@ -4449,11 +4451,11 @@ _ZN5faiss19maxheap_replace_topIfEEvmPT_PlS1_l.exit.us.i.i.i: ; preds = %98 br i1 %108, label %109, label %156 109: ; preds = %.lr.ph10.split.i.i.i - %110 = add i64 %.0374.i.i.i, 1 br i1 %71, label %.lr.ph.i.i.i, label %._crit_edge.i.i.i ._crit_edge.i.i.i: ; preds = %.lr.ph.i.i.i, %109 %.034.lcssa.i.i.i = phi float [ 0.000000e+00, %109 ], [ %118, %.lr.ph.i.i.i ] + %110 = add i64 %.0374.i.i.i, 1 %111 = load float, ptr %54, align 4, !tbaa !94 %112 = fcmp olt float %.034.lcssa.i.i.i, %111 br i1 %112, label %.lr.ph.i.i.i.i.i, label %156 @@ -4672,11 +4674,11 @@ _ZN5faiss19maxheap_replace_topIfEEvmPT_PlS1_l.exit.us.i.i103.i: ; preds = %194 br i1 %205, label %206, label %253 206: ; preds = %.lr.ph10.split.i.i68.i - %207 = add i64 %.0374.i.i71.i, 1 br i1 %165, label %.lr.ph.i.i90.i, label %._crit_edge.i.i75.i ._crit_edge.i.i75.i: ; preds = %.lr.ph.i.i90.i, %206 %.034.lcssa.i.i76.i = phi float [ 0.000000e+00, %206 ], [ %215, %.lr.ph.i.i90.i ] + %207 = add i64 %.0374.i.i71.i, 1 %208 = load float, ptr %54, align 4, !tbaa !94 %209 = fcmp olt float %.034.lcssa.i.i76.i, %208 br i1 %209, label %.lr.ph.i.i.i.i77.i, label %253 @@ -4819,11 +4821,11 @@ _ZN5faiss19maxheap_replace_topIfEEvmPT_PlS1_l.exit.loopexit.i.i84.i: ; preds = % br i1 %280, label %281, label %329 281: ; preds = %269 - %282 = add i64 %.0374.i.i128.i, 1 br i1 %263, label %.lr.ph.i.i144.i, label %._crit_edge.i.i131.i ._crit_edge.i.i131.i: ; preds = %.lr.ph.i.i144.i, %281 %.034.lcssa.i.i132.i = phi float [ 0.000000e+00, %281 ], [ %290, %.lr.ph.i.i144.i ] + %282 = add i64 %.0374.i.i128.i, 1 %283 = load float, ptr %54, align 4, !tbaa !94 %284 = fcmp olt float %.034.lcssa.i.i132.i, %283 br i1 %284, label %292, label %329 @@ -4976,11 +4978,11 @@ _ZN5faiss19maxheap_replace_topIfEEvmPT_PlS1_l.exit.i.i.i: ; preds = %321, %_ZN5f br i1 %365, label %366, label %414 366: ; preds = %349 - %367 = add i64 %.03742.i.i.i, 1 br i1 %343, label %.lr.ph.i.i172.i, label %._crit_edge.i.i157.i ._crit_edge.i.i157.i: ; preds = %.lr.ph.i.i172.i, %366 %.034.lcssa.i.i158.i = phi float [ 0.000000e+00, %366 ], [ %375, %.lr.ph.i.i172.i ] + %367 = add i64 %.03742.i.i.i, 1 %368 = load float, ptr %54, align 4, !tbaa !94 %369 = fcmp olt float %.034.lcssa.i.i158.i, %368 br i1 %369, label %377, label %414 @@ -5142,11 +5144,11 @@ _ZN5faiss19maxheap_replace_topIfEEvmPT_PlS1_l.exit.i.i166.i: ; preds = %406, %_Z br i1 %459, label %460, label %508 460: ; preds = %436 - %461 = add i64 %.03742.i.i184.i, 1 br i1 %430, label %.lr.ph.i.i203.i, label %._crit_edge.i.i188.i ._crit_edge.i.i188.i: ; preds = %.lr.ph.i.i203.i, %460 %.034.lcssa.i.i189.i = phi float [ 0.000000e+00, %460 ], [ %469, %.lr.ph.i.i203.i ] + %461 = add i64 %.03742.i.i184.i, 1 %462 = load float, ptr %54, align 4, !tbaa !94 %463 = fcmp olt float %.034.lcssa.i.i189.i, %462 br i1 %463, label %471, label %508 @@ -5340,11 +5342,11 @@ _ZN5faiss19maxheap_replace_topIfEEvmPT_PlS1_l.exit.i.i197.i: ; preds = %500, %_Z br i1 %585, label %586, label %634 586: ; preds = %538 - %587 = add i64 %.03742.i.i217.i, 1 br i1 %532, label %.lr.ph.i.i236.i, label %._crit_edge.i.i221.i ._crit_edge.i.i221.i: ; preds = %.lr.ph.i.i236.i, %586 %.034.lcssa.i.i222.i = phi float [ 0.000000e+00, %586 ], [ %595, %.lr.ph.i.i236.i ] + %587 = add i64 %.03742.i.i217.i, 1 %588 = load float, ptr %54, align 4, !tbaa !94 %589 = fcmp olt float %.034.lcssa.i.i222.i, %588 br i1 %589, label %597, label %634 @@ -5562,11 +5564,11 @@ _ZN5faiss19maxheap_replace_topIfEEvmPT_PlS1_l.exit.us.i.i275.i: ; preds = %668 br i1 %676, label %677, label %724 677: ; preds = %.lr.ph48.split.i.i.i - %678 = add i64 %.03742.i.i250.i, 1 br i1 %645, label %.lr.ph.i.i268.i, label %._crit_edge.i.i253.i ._crit_edge.i.i253.i: ; preds = %.lr.ph.i.i268.i, %677 %.034.lcssa.i.i254.i = phi float [ 0.000000e+00, %677 ], [ %686, %.lr.ph.i.i268.i ] + %678 = add i64 %.03742.i.i250.i, 1 %679 = load float, ptr %54, align 4, !tbaa !94 %680 = fcmp olt float %.034.lcssa.i.i254.i, %679 br i1 %680, label %.lr.ph.i.i.i.i255.i, label %724 @@ -5727,11 +5729,11 @@ _ZN5faiss24dispatch_HammingComputerINS_12_GLOBAL__N_125Run_polysemous_inner_loop br i1 %755, label %756, label %804 756: ; preds = %743 - %757 = add i64 %.0374.i, 1 br i1 %738, label %.lr.ph.i, label %._crit_edge.i ._crit_edge.i: ; preds = %.lr.ph.i, %756 %.034.lcssa.i = phi float [ 0.000000e+00, %756 ], [ %765, %.lr.ph.i ] + %757 = add i64 %.0374.i, 1 %758 = load float, ptr %54, align 4, !tbaa !94 %759 = fcmp olt float %.034.lcssa.i, %758 br i1 %759, label %767, label %804 @@ -5897,11 +5899,11 @@ _ZN5faiss12_GLOBAL__N_121polysemous_inner_loopINS_19GenHammingComputer8EEEmPKNS_ br i1 %847, label %848, label %896 848: ; preds = %822 - %849 = add i64 %.0374.i61, 1 br i1 %817, label %.lr.ph.i80, label %._crit_edge.i65 ._crit_edge.i65: ; preds = %.lr.ph.i80, %848 %.034.lcssa.i66 = phi float [ 0.000000e+00, %848 ], [ %857, %.lr.ph.i80 ] + %849 = add i64 %.0374.i61, 1 %850 = load float, ptr %54, align 4, !tbaa !94 %851 = fcmp olt float %.034.lcssa.i66, %850 br i1 %851, label %859, label %896 @@ -6097,11 +6099,11 @@ _ZN5faiss12_GLOBAL__N_121polysemous_inner_loopINS_20GenHammingComputer16EEEmPKNS br i1 %971, label %972, label %1020 972: ; preds = %920 - %973 = add i64 %.03742.i, 1 br i1 %915, label %.lr.ph.i108, label %._crit_edge.i93 ._crit_edge.i93: ; preds = %.lr.ph.i108, %972 %.034.lcssa.i94 = phi float [ 0.000000e+00, %972 ], [ %981, %.lr.ph.i108 ] + %973 = add i64 %.03742.i, 1 %974 = load float, ptr %54, align 4, !tbaa !94 %975 = fcmp olt float %.034.lcssa.i94, %974 br i1 %975, label %983, label %1020 @@ -6277,11 +6279,11 @@ _ZNK5faiss20GenHammingComputerM87hammingEPKh.exit.i: ; preds = %.lr.ph.i.i, %104 br i1 %1060, label %1061, label %1109 1061: ; preds = %_ZNK5faiss20GenHammingComputerM87hammingEPKh.exit.i - %1062 = add i64 %.03742.i120, 1 br i1 %1038, label %.lr.ph.i138, label %._crit_edge.i123 ._crit_edge.i123: ; preds = %.lr.ph.i138, %1061 %.034.lcssa.i124 = phi float [ 0.000000e+00, %1061 ], [ %1070, %.lr.ph.i138 ] + %1062 = add i64 %.03742.i120, 1 %1063 = load float, ptr %54, align 4, !tbaa !94 %1064 = fcmp olt float %.034.lcssa.i124, %1063 br i1 %1064, label %1072, label %1109 @@ -9592,8 +9594,8 @@ define linkonce_odr void @_ZNSt6vectorIPN5faiss5IndexESaIS2_EE17_M_default_appen _ZSt6fill_nIPPN5faiss5IndexEmS2_ET_S4_T0_RKT1_.exit.loopexit.i.i.i: ; preds = %19 %.idx.i.i.i.i.i = shl nuw nsw i64 %21, 3 - tail call void @llvm.memset.p0.i64(ptr align 8 %20, i8 0, i64 %.idx.i.i.i.i.i, i1 false), !tbaa !118 %23 = getelementptr inbounds nuw i8, ptr %20, i64 %.idx.i.i.i.i.i + tail call void @llvm.memset.p0.i64(ptr align 8 %20, i8 0, i64 %.idx.i.i.i.i.i, i1 false), !tbaa !118 br label %_ZSt27__uninitialized_default_n_aIPPN5faiss5IndexEmS2_ET_S4_T0_RSaIT1_E.exit _ZSt27__uninitialized_default_n_aIPPN5faiss5IndexEmS2_ET_S4_T0_RSaIT1_E.exit: ; preds = %19, %_ZSt6fill_nIPPN5faiss5IndexEmS2_ET_S4_T0_RKT1_.exit.loopexit.i.i.i diff --git a/bench/ffmpeg/optimized/aeval.ll b/bench/ffmpeg/optimized/aeval.ll index 977a0a9f1ad..01184667696 100644 --- a/bench/ffmpeg/optimized/aeval.ll +++ b/bench/ffmpeg/optimized/aeval.ll @@ -307,23 +307,24 @@ define internal i32 @activate(ptr noundef readonly captures(none) %0) #1 { %45 = getelementptr inbounds nuw i8, ptr %38, i64 96 %46 = load i32, ptr %43, align 8, !tbaa !30 %47 = icmp sgt i32 %46, 0 - %.pre = load i64, ptr %8, align 8, !tbaa !32 br i1 %47, label %.lr.ph66.split.preheader, label %.lr.ph66.split.us .lr.ph66.split.preheader: ; preds = %.lr.ph66 %wide.trip.count = zext nneg i32 %.0 to i64 + %.pre = load i64, ptr %8, align 8, !tbaa !32 br label %.lr.ph66.split .lr.ph66.split.us: ; preds = %.lr.ph66 - %48 = load i32, ptr %10, align 8, !tbaa !44 - %49 = sitofp i32 %48 to double - %50 = add nsw i32 %.0, -1 - %51 = zext nneg i32 %50 to i64 - %52 = add i64 %.pre, %51 - %53 = add i64 %52, 1 - %54 = uitofp i64 %52 to double - %55 = fdiv nsz double %54, %49 - store i64 %53, ptr %8, align 8, !tbaa !32 + %48 = load i64, ptr %8, align 8, !tbaa !32 + %48 = add nsw i32 %.0, -1 + %49 = zext nneg i32 %48 to i64 + %50 = add i64 %48, %49 + %52 = add i64 %50, 1 + %52 = load i32, ptr %10, align 8, !tbaa !44 + %53 = sitofp i32 %52 to double + %54 = uitofp i64 %50 to double + %55 = fdiv nsz double %54, %53 + store i64 %51, ptr %8, align 8, !tbaa !32 store double %54, ptr %41, align 8, !tbaa !59 store double %55, ptr %42, align 8, !tbaa !59 br label %._crit_edge67 @@ -525,9 +526,6 @@ define internal fastcc i32 @parse_channel_expressions(ptr noundef %0, i32 nounde %16 = load ptr, ptr %15, align 8, !tbaa !25 %17 = load ptr, ptr %16, align 8, !tbaa !26 %18 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %17, ptr noundef nonnull dereferenceable(6) @.str.2) #10 - %.not77 = icmp eq i32 %18, 0 - %spec.select = select i1 %.not77, ptr @aeval_func1, ptr null - %spec.select80 = select i1 %.not77, ptr @aeval_func1_names, ptr null %19 = getelementptr inbounds nuw i8, ptr %5, i64 56 %20 = load i32, ptr %19, align 8, !tbaa !30 %21 = icmp sgt i32 %20, 0 @@ -554,6 +552,9 @@ define internal fastcc i32 @parse_channel_expressions(ptr noundef %0, i32 nounde br i1 %31, label %23, label %._crit_edge, !llvm.loop !78 ._crit_edge: ; preds = %23, %14 + %.not77 = icmp eq i32 %18, 0 + %spec.select = select i1 %.not77, ptr @aeval_func1, ptr null + %spec.select80 = select i1 %.not77, ptr @aeval_func1_names, ptr null %32 = getelementptr inbounds nuw i8, ptr %5, i64 80 tail call void @av_freep(ptr noundef nonnull %32) #11 store i32 0, ptr %19, align 8, !tbaa !30 @@ -744,13 +745,13 @@ define internal i32 @filter_frame(ptr noundef readonly captures(none) %0, ptr no .lr.ph47: ; preds = %28 %31 = getelementptr inbounds nuw i8, ptr %7, i64 112 - %32 = getelementptr inbounds nuw i8, ptr %7, i64 120 - %33 = getelementptr inbounds nuw i8, ptr %7, i64 128 - %34 = getelementptr inbounds nuw i8, ptr %0, i64 64 - %35 = getelementptr inbounds nuw i8, ptr %7, i64 152 - %36 = getelementptr inbounds nuw i8, ptr %0, i64 76 - %37 = getelementptr inbounds nuw i8, ptr %1, i64 96 - %38 = getelementptr inbounds nuw i8, ptr %7, i64 168 + %32 = getelementptr inbounds nuw i8, ptr %7, i64 128 + %33 = getelementptr inbounds nuw i8, ptr %0, i64 64 + %34 = getelementptr inbounds nuw i8, ptr %7, i64 152 + %35 = getelementptr inbounds nuw i8, ptr %0, i64 76 + %36 = getelementptr inbounds nuw i8, ptr %1, i64 96 + %37 = getelementptr inbounds nuw i8, ptr %7, i64 168 + %38 = getelementptr inbounds nuw i8, ptr %7, i64 120 %39 = getelementptr inbounds nuw i8, ptr %10, i64 76 %40 = getelementptr inbounds nuw i8, ptr %7, i64 80 %41 = getelementptr inbounds nuw i8, ptr %13, i64 96 @@ -762,21 +763,21 @@ define internal i32 @filter_frame(ptr noundef readonly captures(none) %0, ptr no %43 = phi i64 [ %.pre, %.lr.ph47 ], [ %77, %._crit_edge ] %indvars.iv53 = phi i64 [ 0, %.lr.ph47 ], [ %indvars.iv.next54, %._crit_edge ] %44 = uitofp i64 %43 to double - store double %44, ptr %33, align 8, !tbaa !59 + store double %44, ptr %32, align 8, !tbaa !59 %45 = trunc nuw nsw i64 %indvars.iv53 to i32 %46 = uitofp nneg i32 %45 to double - %47 = load i32, ptr %34, align 8, !tbaa !75 + %47 = load i32, ptr %33, align 8, !tbaa !75 %48 = sitofp i32 %47 to double %49 = fdiv nsz double %46, %48 %50 = fadd nsz double %29, %49 - store double %50, ptr %35, align 8, !tbaa !59 - %51 = load i32, ptr %36, align 4, !tbaa !76 + store double %50, ptr %34, align 8, !tbaa !59 + %51 = load i32, ptr %35, align 4, !tbaa !76 %52 = icmp sgt i32 %51, 0 br i1 %52, label %.lr.ph, label %.preheader .lr.ph: ; preds = %42 - %53 = load ptr, ptr %37, align 8, !tbaa !61 - %54 = load ptr, ptr %38, align 8, !tbaa !81 + %53 = load ptr, ptr %36, align 8, !tbaa !61 + %54 = load ptr, ptr %37, align 8, !tbaa !81 %wide.trip.count = zext nneg i32 %51 to i64 br label %57 @@ -801,11 +802,11 @@ define internal i32 @filter_frame(ptr noundef readonly captures(none) %0, ptr no %indvars.iv50 = phi i64 [ %indvars.iv.next51, %.lr.ph44 ], [ 0, %.preheader ] %63 = trunc nuw nsw i64 %indvars.iv50 to i32 %64 = uitofp nneg i32 %63 to double - store double %64, ptr %32, align 8, !tbaa !59 + store double %64, ptr %38, align 8, !tbaa !59 %65 = load ptr, ptr %40, align 8, !tbaa !33 %66 = getelementptr inbounds nuw ptr, ptr %65, i64 %indvars.iv50 %67 = load ptr, ptr %66, align 8, !tbaa !34 - %68 = tail call nsz double @av_expr_eval(ptr noundef %67, ptr noundef nonnull %32, ptr noundef nonnull %7) #11 + %68 = tail call nsz double @av_expr_eval(ptr noundef %67, ptr noundef nonnull %38, ptr noundef nonnull %7) #11 %69 = load ptr, ptr %41, align 8, !tbaa !61 %70 = getelementptr inbounds nuw ptr, ptr %69, i64 %indvars.iv50 %71 = load ptr, ptr %70, align 8, !tbaa !66 diff --git a/bench/ffmpeg/optimized/jpegxl_parser.ll b/bench/ffmpeg/optimized/jpegxl_parser.ll index da217f25ded..db941fb2ca2 100644 --- a/bench/ffmpeg/optimized/jpegxl_parser.ll +++ b/bench/ffmpeg/optimized/jpegxl_parser.ll @@ -4089,12 +4089,11 @@ read_vlc_prefix.exit.thread: ; preds = %441 %470 = add i32 %460, 2 %471 = call i32 @llvm.umin.i32(i32 %450, i32 %470) store i32 %471, ptr %26, align 8, !tbaa !65 - %472 = add nuw nsw i32 %469, 1 - %473 = getelementptr inbounds nuw i8, ptr %443, i64 20 - %474 = load i32, ptr %473, align 4, !tbaa !117 - %.not.i.i.i = icmp eq i32 %474, 0 - %475 = sub i32 32, %474 - %476 = lshr i32 -1, %475 + %472 = getelementptr inbounds nuw i8, ptr %443, i64 20 + %473 = load i32, ptr %472, align 4, !tbaa !117 + %.not.i.i.i = icmp eq i32 %473, 0 + %474 = sub i32 32, %473 + %475 = lshr i32 -1, %474 br i1 %.not.i.i.i, label %get_bitsz.exit.us.preheader.i.i, label %.split.i.i get_bitsz.exit.us.preheader.i.i: ; preds = %462 @@ -4103,15 +4102,18 @@ get_bitsz.exit.us.preheader.i.i: ; preds = %462 %narrow.i.i = add nuw nsw i32 %478, 2 %479 = zext nneg i32 %narrow.i.i to i64 call void @llvm.memset.p0.i64(ptr noundef nonnull align 2 dereferenceable(1) %11, i8 0, i64 %479, i1 false), !tbaa !122 + %.pre.i.i = add nuw nsw i32 %469, 1 br label %.split32.us.i.i .split.i.i: ; preds = %462 - %wide.trip.count.i.i = zext nneg i32 %472 to i64 + %479 = add nuw nsw i32 %469, 1 + %wide.trip.count.i.i = zext nneg i32 %479 to i64 br label %get_bitsz.exit.i.i .split32.us.i.i: ; preds = %get_bitsz.exit.i.i, %get_bitsz.exit.us.preheader.i.i + %.pre-phi.i.i = phi i32 [ %.pre.i.i, %get_bitsz.exit.us.preheader.i.i ], [ %479, %get_bitsz.exit.i.i ] %480 = phi i32 [ %471, %get_bitsz.exit.us.preheader.i.i ], [ %491, %get_bitsz.exit.i.i ] - %481 = icmp eq i32 %472, 4 + %481 = icmp eq i32 %.pre-phi.i.i, 4 br i1 %481, label %.thread.i.i, label %505 get_bitsz.exit.i.i: ; preds = %get_bitsz.exit.i.i, %.split.i.i @@ -4123,8 +4125,8 @@ get_bitsz.exit.i.i: ; preds = %get_bitsz.exit.i.i, %486 = load i32, ptr %485, align 1, !tbaa !28 %487 = and i32 %482, 7 %488 = lshr i32 %486, %487 - %489 = and i32 %488, %476 - %490 = add i32 %482, %474 + %489 = and i32 %488, %475 + %490 = add i32 %482, %473 %491 = call i32 @llvm.umin.i32(i32 %450, i32 %490) store i32 %491, ptr %26, align 8, !tbaa !65 %492 = trunc i32 %489 to i16 @@ -4242,7 +4244,7 @@ get_bitsz.exit.i.i: ; preds = %get_bitsz.exit.i.i, %.024.i.i = phi i32 [ 1, %515 ], [ 1, %511 ], [ 2, %520 ], [ 2, %516 ], [ 3, %525 ], [ 3, %521 ], [ 2, %.loopexit.i.i ] %535 = getelementptr inbounds nuw i8, ptr %443, i64 24 %536 = load ptr, ptr %372, align 8, !tbaa !81 - %537 = call i32 @ff_vlc_init_from_lengths(ptr noundef nonnull %535, i32 noundef %.024.i.i, i32 noundef %472, ptr noundef nonnull %10, i32 noundef 1, ptr noundef nonnull %11, i32 noundef 2, i32 noundef 2, i32 noundef 0, i32 noundef 12, ptr noundef %536) #11 + %537 = call i32 @ff_vlc_init_from_lengths(ptr noundef nonnull %535, i32 noundef %.024.i.i, i32 noundef %.pre-phi.i.i, ptr noundef nonnull %10, i32 noundef 1, ptr noundef nonnull %11, i32 noundef 2, i32 noundef 2, i32 noundef 0, i32 noundef 12, ptr noundef %536) #11 br label %read_simple_vlc_prefix.exit.i default.unreachable.i.i: ; preds = %505 diff --git a/bench/ffmpeg/optimized/silk.ll b/bench/ffmpeg/optimized/silk.ll index 6d0f1aa845b..dcdd03b9acd 100644 --- a/bench/ffmpeg/optimized/silk.ll +++ b/bench/ffmpeg/optimized/silk.ll @@ -1001,30 +1001,38 @@ define internal fastcc void @silk_decode_frame(ptr noundef captures(none) %0, pt ._crit_edge.i.i: ; preds = %.lr.ph.i.i, %.preheader185.i.i %.0150.lcssa.i.i = phi i32 [ 0, %.preheader185.i.i ], [ %303, %.lr.ph.i.i ] - %304 = sext i32 %spec.select176.i.i to i64 - %305 = getelementptr inbounds i16, ptr %263, i64 %304 - %306 = load i16, ptr %305, align 2, !tbaa !36 - %307 = lshr i16 %306, 1 - %308 = zext nneg i16 %307 to i32 - %309 = add nuw nsw i32 %.0150.lcssa.i.i, %308 - %310 = icmp sgt i32 %131, %spec.select176.i.i - br i1 %310, label %.lr.ph196.i.i, label %._crit_edge197.i.i - -.lr.ph196.i.i: ; preds = %._crit_edge.i.i, %.lr.ph196.i.i - %indvars.iv218.i.i = phi i64 [ %indvars.iv.next219.i.i, %.lr.ph196.i.i ], [ %wide.trip.count.i, %._crit_edge.i.i ] - %.0149194.i.i = phi i32 [ %314, %.lr.ph196.i.i ], [ 32768, %._crit_edge.i.i ] - %311 = getelementptr inbounds i16, ptr %263, i64 %indvars.iv218.i.i - %312 = load i16, ptr %311, align 2, !tbaa !36 - %313 = zext i16 %312 to i32 - %314 = sub nsw i32 %.0149194.i.i, %313 + %304 = icmp sgt i32 %131, %spec.select176.i.i + br i1 %304, label %.lr.ph196.preheader.i.i, label %._crit_edge.._crit_edge197_crit_edge.i.i + +._crit_edge.._crit_edge197_crit_edge.i.i:; preds = %._crit_edge.i.i + %308 = zext nneg i32 %spec.select176.i.i to i64 + br label %._crit_edge197.i.i + +.lr.ph196.preheader.i.i:; preds = %._crit_edge.i.i + %305 = sext i32 %spec.select176.i.i to i64 + br label %.lr.ph196.i.i + +.lr.ph196.i.i: ; preds = %.lr.ph196.i.i, %.lr.ph196.preheader.i.i + %indvars.iv218.i.i = phi i64 [ %wide.trip.count.i, %.lr.ph196.preheader.i.i ], [ %indvars.iv.next219.i.i, %.lr.ph196.i.i ] + %.0149194.i.i = phi i32 [ 32768, %.lr.ph196.preheader.i.i ], [ %309, %.lr.ph196.i.i ] + %306 = getelementptr inbounds i16, ptr %263, i64 %indvars.iv218.i.i + %307 = load i16, ptr %306, align 2, !tbaa !36 + %308 = zext i16 %307 to i32 + %309 = sub nsw i32 %.0149194.i.i, %308 %indvars.iv.next219.i.i = add nsw i64 %indvars.iv218.i.i, -1 - %315 = icmp sgt i64 %indvars.iv.next219.i.i, %304 + %315 = icmp sgt i64 %indvars.iv.next219.i.i, %305 br i1 %315, label %.lr.ph196.i.i, label %._crit_edge197.i.i, !llvm.loop !49 -._crit_edge197.i.i: ; preds = %.lr.ph196.i.i, %._crit_edge.i.i - %.0149.lcssa.i.i = phi i32 [ 32768, %._crit_edge.i.i ], [ %314, %.lr.ph196.i.i ] - %316 = sub nsw i32 %.0149.lcssa.i.i, %308 - %317 = getelementptr i16, ptr %15, i64 %304 +._crit_edge197.i.i: ; preds = %.lr.ph196.i.i, %._crit_edge.._crit_edge197_crit_edge.i.i + %.0149.lcssa.i.i = phi i64 [ %308, %._crit_edge.._crit_edge197_crit_edge.i.i ], [ %305, %.lr.ph196.i.i ] + %.0149.lcssa.i.i = phi i32 [ 32768, %._crit_edge.._crit_edge197_crit_edge.i.i ], [ %309, %.lr.ph196.i.i ] + %317 = getelementptr inbounds i16, ptr %263, i64 %.0149.lcssa.i.i + %312 = load i16, ptr %311, align 2, !tbaa !36 + %313 = lshr i16 %312, 1 + %314 = zext nneg i16 %313 to i32 + %315 = add nuw nsw i32 %.0150.lcssa.i.i, %314 + %316 = sub nsw i32 %.0149.lcssa.i.i, %314 + %317 = getelementptr i16, ptr %15, i64 %.pre-phi.i.i %318 = getelementptr i8, ptr %317, i64 -2 %319 = load i16, ptr %318, align 2, !tbaa !36 %320 = sext i16 %319 to i32 @@ -1034,12 +1042,12 @@ define internal fastcc void @silk_decode_frame(ptr noundef captures(none) %0, pt %324 = ashr i32 %323, 1 %325 = and i32 %323, 1 %326 = add nsw i32 %324, %325 - %327 = tail call i32 @llvm.smax.i32(i32 %309, i32 %326) + %327 = tail call i32 @llvm.smax.i32(i32 %315, i32 %326) %..i.i = tail call i32 @llvm.smin.i32(i32 %316, i32 %327) %328 = trunc i32 %..i.i to i16 - %329 = sub i16 %328, %307 + %329 = sub i16 %328, %313 store i16 %329, ptr %318, align 2, !tbaa !36 - %330 = add i16 %329, %306 + %330 = add i16 %329, %312 store i16 %330, ptr %317, align 2, !tbaa !36 br label %331 diff --git a/bench/flac/optimized/options.ll b/bench/flac/optimized/options.ll index 62137b4385d..5a320718ecb 100644 --- a/bench/flac/optimized/options.ll +++ b/bench/flac/optimized/options.ll @@ -538,9 +538,6 @@ find_shorthand_operation.exit105.tail: ; preds = %find_shorthand_oper store i32 %154, ptr %64, align 8, !tbaa !31 %155 = load ptr, ptr %142, align 8, !tbaa !34 %156 = load i32, ptr %140, align 8, !tbaa !33 - %157 = add i32 %156, -1 - %158 = zext i32 %157 to i64 - %159 = getelementptr inbounds nuw %struct.Operation, ptr %155, i64 %158 call void @llvm.lifetime.end.p0(ptr nonnull %4) %.not.i122 = icmp ne i32 %156, 0 call void @llvm.assume(i1 %.not.i122) @@ -559,9 +556,16 @@ find_shorthand_operation.exit105.tail: ; preds = %find_shorthand_oper %164 = icmp eq i32 %163, 27 br i1 %164, label %find_shorthand_operation.exit121, label %.lr.ph176 -find_shorthand_operation.exit121: ; preds = %.lr.ph.i115, %.lr.ph176, %.lr.ph.i123 - %.045 = phi ptr [ %155, %.lr.ph.i123 ], [ %162, %.lr.ph176 ], [ %146, %.lr.ph.i115 ] - %.0 = phi ptr [ %159, %.lr.ph.i123 ], [ %159, %.lr.ph176 ], [ %150, %.lr.ph.i115 ] +find_shorthand_operation.exit121: ; preds = %.lr.ph176, %.lr.ph.i123 + %.045 = phi ptr [ %155, %.lr.ph.i123 ], [ %162, %.lr.ph176 ] + %162 = add i32 %156, -1 + %163 = zext i32 %162 to i64 + %164 = getelementptr inbounds nuw %struct.Operation, ptr %155, i64 %163 + br label %find_shorthand_operation.exit121 + +find_shorthand_operation.exit121: ; preds = %.lr.ph.i115, %find_shorthand_operation.exit121.loopexit + %.045 = phi ptr [ %.lcssa, %find_shorthand_operation.exit121.loopexit ], [ %146, %.lr.ph.i115 ] + %.0 = phi ptr [ %164, %find_shorthand_operation.exit121.loopexit ], [ %150, %.lr.ph.i115 ] %165 = getelementptr inbounds nuw i8, ptr %.0, i64 8 %166 = getelementptr inbounds nuw i8, ptr %.045, i64 16 store ptr %165, ptr %166, align 8, !tbaa !38 diff --git a/bench/folly/optimized/Random.ll b/bench/folly/optimized/Random.ll index 632431a97d5..61cfefebd0d 100644 --- a/bench/folly/optimized/Random.ll +++ b/bench/folly/optimized/Random.ll @@ -3940,11 +3940,6 @@ define linkonce_odr noundef ptr @_ZN5folly17atomic_grow_arrayINS_12SynchronizedI store i64 %1, ptr %24, align 8, !tbaa !152 store ptr %4, ptr %23, align 16, !tbaa !168 %25 = getelementptr inbounds nuw i8, ptr %23, i64 16 - %26 = getelementptr inbounds nuw ptr, ptr %25, i64 %1 - %27 = ptrtoint ptr %26 to i64 - %28 = add i64 %27, 15 - %29 = and i64 %28, -16 - %30 = inttoptr i64 %29 to ptr %.not56 = icmp eq i64 %9, 0 br i1 %.not56, label %.preheader49, label %.lr.ph @@ -3957,7 +3952,7 @@ define linkonce_odr noundef ptr @_ZN5folly17atomic_grow_arrayINS_12SynchronizedI br i1 %32, label %.lr.ph55, label %_ZN5folly6detail14ScopeGuardImplIZNS_17atomic_grow_arrayINS_12SynchronizedINS_18threadlocal_detail14ThreadEntrySetENS_15SharedMutexImplILb0EvSt6atomicNS_24SharedMutexPolicyDefaultEEEEENS_32atomic_grow_array_policy_defaultISA_EEE9new_arrayEmRPNSD_5arrayEEUlvE_Lb1EED2Ev.exit 33: ; preds = %.lr.ph, %33 - %.03950 = phi i64 [ 0, %.lr.ph ], [ %37, %33 ] + %.03950 = phi i64 [ 0, %.lr.ph ], [ %37, %28 ] %34 = getelementptr inbounds nuw ptr, ptr %31, i64 %.03950 %35 = load ptr, ptr %34, align 8, !tbaa !90 %36 = getelementptr inbounds nuw ptr, ptr %25, i64 %.03950 @@ -3972,6 +3967,11 @@ define linkonce_odr noundef ptr @_ZN5folly17atomic_grow_arrayINS_12SynchronizedI %scevgep = getelementptr i8, ptr %39, i64 16 %40 = sub i64 %10, %38 tail call void @llvm.memset.p0.i64(ptr align 8 %scevgep, i8 0, i64 %40, i1 false), !tbaa !90 + %36 = getelementptr inbounds nuw ptr, ptr %25, i64 %1 + %37 = ptrtoint ptr %36 to i64 + %38 = add i64 %37, 15 + %39 = and i64 %38, -16 + %40 = inttoptr i64 %39 to ptr %41 = getelementptr inbounds nuw i8, ptr %0, i64 8 br label %42 @@ -3985,7 +3985,7 @@ define linkonce_odr noundef ptr @_ZN5folly17atomic_grow_arrayINS_12SynchronizedI .critedge: ; preds = %42 %45 = sub nuw i64 %.03754, %9 - %46 = getelementptr inbounds nuw %"struct.folly::Synchronized", ptr %30, i64 %45 + %46 = getelementptr inbounds nuw %"struct.folly::Synchronized", ptr %40, i64 %45 %47 = getelementptr inbounds nuw i8, ptr %46, i64 24 %48 = getelementptr inbounds nuw i8, ptr %46, i64 72 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(88) %46, i8 0, i64 88, i1 false), !alias.scope !221 @@ -5073,28 +5073,29 @@ define linkonce_odr void @_ZNSt8seed_seq8generateIPjEEvT_S2_(ptr noundef nonnull %32 = sub i64 %12, %31 %33 = lshr i64 %32, 1 %34 = add nuw i64 %33, %31 - %35 = add nsw i64 %19, 1 - %.sroa.speculated = tail call i64 @llvm.umax.i64(i64 %35, i64 %12) - %36 = trunc i64 %19 to i32 - %37 = add i32 %36, 1371501266 - %38 = getelementptr inbounds nuw i32, ptr %1, i64 %33 - %39 = load i32, ptr %38, align 4, !tbaa !64 - %40 = add i32 %39, 1371501266 - store i32 %40, ptr %38, align 4, !tbaa !64 - %41 = getelementptr inbounds nuw i32, ptr %1, i64 %34 - %42 = load i32, ptr %41, align 4, !tbaa !64 - %43 = add i32 %42, %37 - store i32 %43, ptr %41, align 4, !tbaa !64 - store i32 %37, ptr %1, align 4, !tbaa !64 + %35 = trunc i64 %19 to i32 + %36 = add i32 %35, 1371501266 + %37 = getelementptr inbounds nuw i32, ptr %1, i64 %33 + %38 = load i32, ptr %37, align 4, !tbaa !64 + %39 = add i32 %38, 1371501266 + store i32 %39, ptr %37, align 4, !tbaa !64 + %40 = getelementptr inbounds nuw i32, ptr %1, i64 %39 + %41 = load i32, ptr %40, align 4, !tbaa !64 + %42 = add i32 %41, %36 + store i32 %42, ptr %40, align 4, !tbaa !64 + store i32 %36, ptr %1, align 4, !tbaa !64 %.not130 = icmp eq ptr %14, %15 br i1 %.not130, label %.preheader129, label %.lr.ph.preheader .lr.ph.preheader: ; preds = %30 - %umax = tail call i64 @llvm.umax.i64(i64 %35, i64 2) + %43 = add nsw i64 %19, 1 + %umax = tail call i64 @llvm.umax.i64(i64 %43, i64 2) br label %.lr.ph .preheader129: ; preds = %.lr.ph, %30 - %44 = icmp ugt i64 %12, %35 + %.pre-phi = phi i64 [ 1, %35 ], [ %43, %.lr.ph ] + %.sroa.speculated = tail call i64 @llvm.umax.i64(i64 %.pre-phi, i64 %12) + %44 = icmp ugt i64 %12, %.pre-phi br i1 %44, label %.lr.ph133, label %.preheader .lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph @@ -5139,7 +5140,7 @@ define linkonce_odr void @_ZNSt8seed_seq8generateIPjEEvT_S2_(ptr noundef nonnull br i1 %74, label %.lr.ph135, label %.loopexit .lr.ph133: ; preds = %.preheader129, %.lr.ph133 - %.0114132 = phi i64 [ %99, %.lr.ph133 ], [ %35, %.preheader129 ] + %.0114132 = phi i64 [ %99, %.lr.ph133 ], [ %.pre-phi, %.preheader129 ] %75 = urem i64 %.0114132, %12 %76 = add i64 %.0114132, %33 %77 = urem i64 %76, %12 diff --git a/bench/freetype/optimized/truetype.ll b/bench/freetype/optimized/truetype.ll index 454a1afc624..173c452af14 100644 --- a/bench/freetype/optimized/truetype.ll +++ b/bench/freetype/optimized/truetype.ll @@ -21958,7 +21958,7 @@ define internal fastcc i32 @tt_face_load_loca(ptr noundef %0, ptr noundef %1) un 11: ; preds = %2 %.not = icmp eq i32 %7, 0 - br i1 %.not, label %12, label %71 + br i1 %.not, label %12, label %75 12: ; preds = %11 %13 = getelementptr inbounds nuw i8, ptr %0, i64 240 @@ -21983,7 +21983,7 @@ define internal fastcc i32 @tt_face_load_loca(ptr noundef %0, ptr noundef %1) un %23 = load ptr, ptr %4, align 8, !tbaa !453 %24 = call i32 %23(ptr noundef nonnull %0, i64 noundef 1819239265, ptr noundef %1, ptr noundef nonnull %3) #22 %.not65 = icmp eq i32 %24, 0 - br i1 %.not65, label %25, label %71 + br i1 %.not65, label %25, label %75 25: ; preds = %22 %26 = getelementptr inbounds nuw i8, ptr %0, i64 390 @@ -22008,74 +22008,80 @@ define internal fastcc i32 @tt_face_load_loca(ptr noundef %0, ptr noundef %1) un %38 = load i64, ptr %37, align 8, !tbaa !283 %39 = add i64 %38, 1 %40 = icmp ult i64 %35, %39 - br i1 %40, label %41, label %67 + br i1 %40, label %41, label %71 41: ; preds = %33 - %42 = shl i64 %39, %29 - %43 = getelementptr inbounds nuw i8, ptr %0, i64 296 - %44 = load ptr, ptr %43, align 8, !tbaa !808 - %45 = getelementptr inbounds nuw i8, ptr %0, i64 288 - %46 = load i16, ptr %45, align 8, !tbaa !806 - %47 = zext i16 %46 to i64 - %.idx = shl nuw nsw i64 %47, 5 - %48 = getelementptr inbounds nuw i8, ptr %44, i64 %.idx - %49 = call i64 @FT_Stream_Pos(ptr noundef %1) #22 - %.not76 = icmp eq i16 %46, 0 + %42 = getelementptr inbounds nuw i8, ptr %0, i64 296 + %43 = load ptr, ptr %42, align 8, !tbaa !808 + %44 = getelementptr inbounds nuw i8, ptr %0, i64 288 + %45 = load i16, ptr %44, align 8, !tbaa !806 + %46 = zext i16 %45 to i64 + %.idx = shl nuw nsw i64 %46, 5 + %47 = getelementptr inbounds nuw i8, ptr %43, i64 %.idx + %48 = call i64 @FT_Stream_Pos(ptr noundef %1) #22 + %.not76 = icmp eq i16 %45, 0 br i1 %.not76, label %._crit_edge.thread, label %.lr.ph +._crit_edge.thread: ; preds = %41 + %49 = shl i64 %39, %29 + br label %59 + .lr.ph: ; preds = %41, %.lr.ph %.05374 = phi i8 [ %.1, %.lr.ph ], [ 0, %41 ] %.05473 = phi i64 [ %.155, %.lr.ph ], [ 2147483647, %41 ] - %.05672 = phi ptr [ %55, %.lr.ph ], [ %44, %41 ] + %.05672 = phi ptr [ %55, %.lr.ph ], [ %43, %41 ] %50 = getelementptr inbounds nuw i8, ptr %.05672, i64 16 %51 = load i64, ptr %50, align 8, !tbaa !822 - %52 = sub nsw i64 %51, %49 + %52 = sub nsw i64 %51, %48 %53 = icmp sgt i64 %52, 0 %54 = icmp slt i64 %52, %.05473 %or.cond71 = select i1 %53, i1 %54, i1 false %.155 = select i1 %or.cond71, i64 %52, i64 %.05473 %.1 = select i1 %or.cond71, i8 1, i8 %.05374 %55 = getelementptr inbounds nuw i8, ptr %.05672, i64 32 - %56 = icmp ult ptr %55, %48 + %56 = icmp ult ptr %55, %47 br i1 %56, label %.lr.ph, label %._crit_edge, !llvm.loop !823 ._crit_edge: ; preds = %.lr.ph %57 = icmp eq i8 %.1, 0 - br i1 %57, label %._crit_edge.thread, label %61 - -._crit_edge.thread: ; preds = %41, %._crit_edge - %58 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %59 = load i64, ptr %58, align 8, !tbaa !824 - %60 = sub nsw i64 %59, %49 - br label %61 - -61: ; preds = %._crit_edge.thread, %._crit_edge - %.2 = phi i64 [ %.155, %._crit_edge ], [ %60, %._crit_edge.thread ] - %.not69 = icmp ugt i64 %42, %.2 - br i1 %.not69, label %65, label %62 - -62: ; preds = %61 - %63 = load i64, ptr %37, align 8, !tbaa !283 - %64 = add i64 %63, 1 - store i64 %64, ptr %36, align 8, !tbaa !93 - store i64 %42, ptr %3, align 8, !tbaa !223 - br label %67 + %58 = shl i64 %39, %29 + br i1 %57, label %59, label %64 + +59: ; preds = %._crit_edge.thread, %._crit_edge + %60 = phi i64 [ %49, %._crit_edge.thread ], [ %58, %._crit_edge ] + %61 = getelementptr inbounds nuw i8, ptr %1, i64 8 + %62 = load i64, ptr %61, align 8, !tbaa !824 + %63 = sub nsw i64 %62, %48 + br label %64 + +64:; preds = %59, %._crit_edge + %65 = phi i64 [ %58, %._crit_edge ], [ %60, %59 ] + %.2 = phi i64 [ %.155, %._crit_edge ], [ %63, %59 ] + %.not69 = icmp ugt i64 %65, %.2 + br i1 %.not69, label %69, label %66 + +66:; preds = %64 + %67 = load i64, ptr %37, align 8, !tbaa !283 + %68 = add i64 %67, 1 + store i64 %68, ptr %36, align 8, !tbaa !93 + store i64 %65, ptr %3, align 8, !tbaa !223 + br label %71 -65: ; preds = %61 +65: ; preds = %64 %66 = load i64, ptr %36, align 8, !tbaa !93 %spec.select = call i64 @llvm.usub.sat.i64(i64 %66, i64 1) store i64 %spec.select, ptr %37, align 8, !tbaa !283 %.pre = load i64, ptr %3, align 8, !tbaa !223 - br label %67 - -67: ; preds = %62, %65, %33 - %68 = phi i64 [ %42, %62 ], [ %.pre, %65 ], [ %34, %33 ] - %69 = getelementptr inbounds nuw i8, ptr %0, i64 1280 - %70 = call i32 @FT_Stream_ExtractFrame(ptr noundef %1, i64 noundef %68, ptr noundef nonnull %69) #22 br label %71 -71: ; preds = %22, %67, %11 - %.0 = phi i32 [ %70, %67 ], [ %7, %11 ], [ 144, %22 ] +71: ; preds = %66, %69, %33 + %.0 = phi i64 [ %65, %66 ], [ %.pre, %69 ], [ %34, %33 ] + %73 = getelementptr inbounds nuw i8, ptr %0, i64 1280 + %74 = call i32 @FT_Stream_ExtractFrame(ptr noundef %1, i64 noundef %72, ptr noundef nonnull %73) #22 + br label %75 + +75: ; preds = %22, %71, %11 + %.0 = phi i32 [ %74, %71 ], [ %7, %11 ], [ 144, %22 ] call void @llvm.lifetime.end.p0(ptr nonnull %3) ret i32 %.0 } diff --git a/bench/git/optimized/pack-redundant.ll b/bench/git/optimized/pack-redundant.ll index 439da21f692..6f3e62219b1 100644 --- a/bench/git/optimized/pack-redundant.ll +++ b/bench/git/optimized/pack-redundant.ll @@ -2077,43 +2077,35 @@ pack_set_bytecount.exit: ; preds = %._crit_edge378.thre ._crit_edge383: ; preds = %686 %.b40 = load i1, ptr @verbose, align 4 - br i1 %.b40, label %699, label %714 + br i1 %.b40, label %pack_set_bytecount.exit216, label %714 ._crit_edge383.thread: ; preds = %.lr.ph382 %.b40564 = load i1, ptr @verbose, align 4 - br i1 %.b40564, label %.lr.ph.i210.preheader, label %.lr.ph.i218.preheader - -699: ; preds = %._crit_edge383 - %700 = load ptr, ptr @stderr, align 8, !tbaa !11 - br label %pack_set_bytecount.exit216 - -.lr.ph.i210.preheader: ; preds = %._crit_edge383.thread - %701 = load ptr, ptr @stderr, align 8, !tbaa !11 - br label %.lr.ph.i210 - -.lr.ph.i210: ; preds = %.lr.ph.i210.preheader, %.lr.ph.i210 - %.09.i211 = phi i64 [ %709, %.lr.ph.i210 ], [ 0, %.lr.ph.i210.preheader ] - %.068.i212 = phi ptr [ %710, %.lr.ph.i210 ], [ %688, %.lr.ph.i210.preheader ] - %702 = getelementptr inbounds nuw i8, ptr %.068.i212, i64 8 - %703 = load ptr, ptr %702, align 8, !tbaa !74 - %704 = getelementptr inbounds nuw i8, ptr %703, i64 48 + br i1 %.b40564, label %.lr.ph.i210, label %.lr.ph.i218.preheader + +699: ; preds = %._crit_edge383.thread, %699 + %.09.i211 = phi i64 [ %706, %.lr.ph.i210 ], [ 0, %._crit_edge383.thread ] + %.068.i212 = phi ptr [ %707, %.lr.ph.i210 ], [ %688, %._crit_edge383.thread ] + %699 = getelementptr inbounds nuw i8, ptr %.068.i212, i64 8 + %700 = load ptr, ptr %699, align 8, !tbaa !74 + %701 = getelementptr inbounds nuw i8, ptr %700, i64 48 + %702 = load i64, ptr %701, align 8, !tbaa !91 + %703 = add nsw i64 %702, %.09.i211 + %704 = getelementptr inbounds nuw i8, ptr %700, i64 64 %705 = load i64, ptr %704, align 8, !tbaa !91 - %706 = add nsw i64 %705, %.09.i211 - %707 = getelementptr inbounds nuw i8, ptr %703, i64 64 - %708 = load i64, ptr %707, align 8, !tbaa !91 - %709 = add i64 %706, %708 - %710 = load ptr, ptr %.068.i212, align 8, !tbaa !30 - %.not.i213 = icmp eq ptr %710, null + %706 = add i64 %703, %705 + %707 = load ptr, ptr %.068.i212, align 8, !tbaa !30 + %.not.i213 = icmp eq ptr %707, null br i1 %.not.i213, label %pack_set_bytecount.exit216.loopexit, label %.lr.ph.i210, !llvm.loop !92 pack_set_bytecount.exit216.loopexit: ; preds = %.lr.ph.i210 - %711 = lshr i64 %709, 20 + %711 = lshr i64 %706, 20 br label %pack_set_bytecount.exit216 -pack_set_bytecount.exit216: ; preds = %699, %pack_set_bytecount.exit216.loopexit - %712 = phi ptr [ %700, %699 ], [ %701, %pack_set_bytecount.exit216.loopexit ] - %.0.lcssa.i215 = phi i64 [ 0, %699 ], [ %711, %pack_set_bytecount.exit216.loopexit ] - %713 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %712, ptr noundef nonnull @.str.17, i64 noundef %.0.lcssa.i215) #18 +pack_set_bytecount.exit216: ; preds = %._crit_edge383, %pack_set_bytecount.exit216.loopexit + %712 = phi i64 [ %708, %pack_set_bytecount.exit216.loopexit ], [ 0, %._crit_edge383 ] + %709 = load ptr, ptr @stderr, align 8, !tbaa !11 + %713 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %709, ptr noundef nonnull @.str.17, i64 noundef %.0.lcssa.i215) #18 br label %714 714: ; preds = %pack_set_bytecount.exit216, %._crit_edge383 diff --git a/bench/git/optimized/submodule.ll b/bench/git/optimized/submodule.ll index 8602671f39a..234aad8de64 100644 --- a/bench/git/optimized/submodule.ll +++ b/bench/git/optimized/submodule.ll @@ -602,7 +602,6 @@ declare ptr @string_list_insert(ptr noundef, ptr noundef) local_unnamed_addr #1 ; Function Attrs: nounwind uwtable define dso_local i32 @register_all_submodule_odb_as_alternates() local_unnamed_addr #0 { %1 = load i64, ptr getelementptr inbounds nuw (i8, ptr @added_submodule_odb_paths, i64 8), align 8, !tbaa !52 - %2 = trunc i64 %1 to i32 %.not10 = icmp eq i64 %1, 0 br i1 %.not10, label %._crit_edge.thread, label %.lr.ph @@ -618,7 +617,8 @@ define dso_local i32 @register_all_submodule_odb_as_alternates() local_unnamed_a br i1 %7, label %.lr.ph, label %._crit_edge, !llvm.loop !58 ._crit_edge: ; preds = %.lr.ph - %.not = icmp eq i32 %2, 0 + %7 = trunc i64 %1 to i32 + %.not = icmp eq i32 %7, 0 br i1 %.not, label %._crit_edge.thread, label %8 8: ; preds = %._crit_edge @@ -636,7 +636,8 @@ define dso_local i32 @register_all_submodule_odb_as_alternates() local_unnamed_a unreachable ._crit_edge.thread: ; preds = %0, %8, %._crit_edge - ret i32 %2 + %13 = phi i32 [ %7, %8 ], [ 0, %._crit_edge ], [ 0, %0 ] + ret i32 %13 } declare void @add_to_alternates_memory(ptr noundef) local_unnamed_addr #1 diff --git a/bench/gromacs/optimized/enerdata_utils.ll b/bench/gromacs/optimized/enerdata_utils.ll index af8fe74e10d..d5dedb06c90 100644 --- a/bench/gromacs/optimized/enerdata_utils.ll +++ b/bench/gromacs/optimized/enerdata_utils.ll @@ -95,8 +95,8 @@ _ZNSt6vectorIdSaIdEE17_S_check_init_lenEmRKS0_.exit.i: ; preds = %5 _ZSt6fill_nIPdmdET_S1_T0_RKT1_.exit.loopexit.i.i.i.i.i: ; preds = %.noexc23 %.idx.i.i.i.i.i.i.i = shl nuw nsw i64 %27, 3 - tail call void @llvm.memset.p0.i64(ptr align 8 %26, i8 0, i64 %.idx.i.i.i.i.i.i.i, i1 false), !tbaa !26 %29 = getelementptr inbounds nuw i8, ptr %26, i64 %.idx.i.i.i.i.i.i.i + tail call void @llvm.memset.p0.i64(ptr align 8 %26, i8 0, i64 %.idx.i.i.i.i.i.i.i, i1 false), !tbaa !26 br label %31 .thread38: ; preds = %_ZNSt6vectorIdSaIdEE17_S_check_init_lenEmRKS0_.exit.i @@ -274,52 +274,55 @@ _ZNSt6vectorIdSaIdEE17_S_check_init_lenEmRKS0_.exit.i: ; preds = %10 .lr.ph: ; preds = %_ZNSt6vectorIdSaIdEE17_S_check_init_lenEmRKS0_.exit.i %15 = shl nuw nsw i64 %13, 3 %16 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %15) #20 - %17 = getelementptr inbounds nuw double, ptr %16, i64 %13 store double 0.000000e+00, ptr %16, align 8, !tbaa !26 %18 = getelementptr i8, ptr %16, i64 8 %.idx.i.i.i.i.i.i.i = add nsw i64 %15, -8 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %18, i8 0, i64 %.idx.i.i.i.i.i.i.i, i1 false), !tbaa !26 - %19 = getelementptr i8, ptr %16, i64 %15 - %20 = ptrtoint ptr %17 to i64 - %21 = getelementptr inbounds nuw i8, ptr %1, i64 16 - %22 = load ptr, ptr %21, align 8, !tbaa !23 - %23 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %24 = load ptr, ptr %23, align 8, !tbaa !24 - %25 = getelementptr inbounds nuw i8, ptr %1, i64 40 - %26 = load ptr, ptr %25, align 8, !tbaa !28 - %27 = getelementptr inbounds nuw i8, ptr %24, i64 8 - %28 = load ptr, ptr %27, align 8, !tbaa !22 - %29 = load ptr, ptr %24, align 8, !tbaa !23 - %30 = ptrtoint ptr %28 to i64 - %31 = ptrtoint ptr %29 to i64 - %32 = sub i64 %30, %31 - %33 = lshr exact i64 %32, 3 - %34 = add nuw nsw i64 %33, 4294967295 - %35 = and i64 %34, 4294967295 - %36 = zext nneg i32 %11 to i64 + %19 = getelementptr inbounds nuw i8, ptr %1, i64 16 + %19 = load ptr, ptr %18, align 8, !tbaa !23 + %21 = getelementptr inbounds nuw i8, ptr %1, i64 8 + %22 = load ptr, ptr %21, align 8, !tbaa !24 + %23 = getelementptr inbounds nuw i8, ptr %1, i64 40 + %24 = load ptr, ptr %23, align 8, !tbaa !28 + %25 = getelementptr inbounds nuw i8, ptr %21, i64 8 + %26 = load ptr, ptr %25, align 8, !tbaa !22 + %26 = load ptr, ptr %21, align 8, !tbaa !23 + %27 = ptrtoint ptr %25 to i64 + %28 = ptrtoint ptr %26 to i64 + %29 = sub i64 %27, %28 + %30 = lshr exact i64 %29, 3 + %31 = add nuw nsw i64 %30, 4294967295 + %32 = and i64 %31, 4294967295 + %33 = zext nneg i32 %11 to i64 %wide.trip.count = zext nneg i32 %11 to i64 - %invariant.gep = getelementptr inbounds nuw double, ptr %16, i64 %36 + %invariant.gep = getelementptr inbounds nuw double, ptr %16, i64 %33 br label %37 -._crit_edge: ; preds = %_ZL11composeDhdliRKN3gmx16EnumerationArrayI34FreeEnergyPerturbationCouplingTypeSt6vectorIdSaIdEELS1_7EEERKNS0_IS1_dLS1_7EEE.exit, %_ZNSt6vectorIdSaIdEE17_S_check_init_lenEmRKS0_.exit.i - %.0.i.i.i.i.i104 = phi ptr [ null, %_ZNSt6vectorIdSaIdEE17_S_check_init_lenEmRKS0_.exit.i ], [ %19, %_ZL11composeDhdliRKN3gmx16EnumerationArrayI34FreeEnergyPerturbationCouplingTypeSt6vectorIdSaIdEELS1_7EEERKNS0_IS1_dLS1_7EEE.exit ] - %.sroa.058.0101 = phi ptr [ null, %_ZNSt6vectorIdSaIdEE17_S_check_init_lenEmRKS0_.exit.i ], [ %16, %_ZL11composeDhdliRKN3gmx16EnumerationArrayI34FreeEnergyPerturbationCouplingTypeSt6vectorIdSaIdEELS1_7EEERKNS0_IS1_dLS1_7EEE.exit ] - %.sroa.17.0100 = phi i64 [ 0, %_ZNSt6vectorIdSaIdEE17_S_check_init_lenEmRKS0_.exit.i ], [ %20, %_ZL11composeDhdliRKN3gmx16EnumerationArrayI34FreeEnergyPerturbationCouplingTypeSt6vectorIdSaIdEELS1_7EEERKNS0_IS1_dLS1_7EEE.exit ] +._crit_edge: ; preds = %_ZL11composeDhdliRKN3gmx16EnumerationArrayI34FreeEnergyPerturbationCouplingTypeSt6vectorIdSaIdEELS1_7EEERKNS0_IS1_dLS1_7EEE.exit + %34 = getelementptr inbounds nuw double, ptr %16, i64 %13 + %35 = getelementptr i8, ptr %16, i64 %15 + %36 = ptrtoint ptr %34 to i64 + br label %._crit_edge + +._crit_edge: ; preds = %._crit_edge.loopexit, %_ZNSt6vectorIdSaIdEE17_S_check_init_lenEmRKS0_.exit.i + %.0.i.i.i.i.i104 = phi ptr [ null, %_ZNSt6vectorIdSaIdEE17_S_check_init_lenEmRKS0_.exit.i ], [ %35, %._crit_edge.loopexit ] + %.sroa.058.0101 = phi ptr [ null, %_ZNSt6vectorIdSaIdEE17_S_check_init_lenEmRKS0_.exit.i ], [ %16, %._crit_edge.loopexit ] + %.sroa.17.0100 = phi i64 [ 0, %_ZNSt6vectorIdSaIdEE17_S_check_init_lenEmRKS0_.exit.i ], [ %36, %._crit_edge.loopexit ] %.not = icmp eq ptr %2, null br i1 %.not, label %101, label %90 37: ; preds = %.lr.ph, %_ZL11composeDhdliRKN3gmx16EnumerationArrayI34FreeEnergyPerturbationCouplingTypeSt6vectorIdSaIdEELS1_7EEERKNS0_IS1_dLS1_7EEE.exit %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %_ZL11composeDhdliRKN3gmx16EnumerationArrayI34FreeEnergyPerturbationCouplingTypeSt6vectorIdSaIdEELS1_7EEERKNS0_IS1_dLS1_7EEE.exit ] %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %38 = getelementptr inbounds nuw double, ptr %22, i64 %indvars.iv.next + %38 = getelementptr inbounds nuw double, ptr %19, i64 %indvars.iv.next %39 = load double, ptr %38, align 8, !tbaa !26 - %40 = load double, ptr %22, align 8, !tbaa !26 + %40 = load double, ptr %19, align 8, !tbaa !26 %41 = fsub double %39, %40 %42 = getelementptr inbounds nuw double, ptr %16, i64 %indvars.iv store double %41, ptr %42, align 8, !tbaa !26 - %43 = getelementptr inbounds nuw %"struct.gmx::EnumerationArray.5", ptr %26, i64 %indvars.iv.next + %43 = getelementptr inbounds nuw %"struct.gmx::EnumerationArray.5", ptr %23, i64 %indvars.iv.next %44 = icmp eq i64 %indvars.iv, 0 - %45 = icmp eq i64 %indvars.iv, %35 + %45 = icmp eq i64 %indvars.iv, %32 br i1 %44, label %.split.us.i, label %.split.i .split.us.i: ; preds = %37 @@ -338,7 +341,7 @@ _ZNSt6vectorIdSaIdEE17_S_check_init_lenEmRKS0_.exit.i: ; preds = %10 .split.us.split.i: ; preds = %.split.us.i, %.split.us.split.i %indvars.iv61.i = phi i64 [ %indvars.iv.next62.i, %.split.us.split.i ], [ 0, %.split.us.i ] %.041.us.i = phi double [ %59, %.split.us.split.i ], [ 0.000000e+00, %.split.us.i ] - %49 = getelementptr inbounds nuw %"class.std::vector", ptr %24, i64 %indvars.iv61.i + %49 = getelementptr inbounds nuw %"class.std::vector", ptr %21, i64 %indvars.iv61.i %50 = load ptr, ptr %49, align 8, !tbaa !23 %51 = getelementptr i8, ptr %50, i64 8 %52 = load double, ptr %51, align 8, !tbaa !26 @@ -360,9 +363,9 @@ _ZNSt6vectorIdSaIdEE17_S_check_init_lenEmRKS0_.exit.i: ; preds = %10 .split.split.us.i: ; preds = %.split.i, %.split.split.us.i %indvars.iv58.i = phi i64 [ %indvars.iv.next59.i, %.split.split.us.i ], [ 0, %.split.i ] %.041.us44.i = phi double [ %71, %.split.split.us.i ], [ 0.000000e+00, %.split.i ] - %60 = getelementptr inbounds nuw %"class.std::vector", ptr %24, i64 %indvars.iv58.i + %60 = getelementptr inbounds nuw %"class.std::vector", ptr %21, i64 %indvars.iv58.i %61 = load ptr, ptr %60, align 8, !tbaa !23 - %62 = getelementptr double, ptr %61, i64 %35 + %62 = getelementptr double, ptr %61, i64 %32 %63 = load double, ptr %62, align 8, !tbaa !26 %64 = getelementptr i8, ptr %62, i64 -8 %65 = load double, ptr %64, align 8, !tbaa !26 @@ -380,7 +383,7 @@ _ZNSt6vectorIdSaIdEE17_S_check_init_lenEmRKS0_.exit.i: ; preds = %10 .split.split.i: ; preds = %.split.i, %.split.split.i %indvars.iv.i = phi i64 [ %indvars.iv.next.i, %.split.split.i ], [ 0, %.split.i ] %.041.i = phi double [ %89, %.split.split.i ], [ 0.000000e+00, %.split.i ] - %72 = getelementptr inbounds nuw %"class.std::vector", ptr %24, i64 %indvars.iv.i + %72 = getelementptr inbounds nuw %"class.std::vector", ptr %21, i64 %indvars.iv.i %73 = load ptr, ptr %72, align 8, !tbaa !23 %74 = getelementptr double, ptr %73, i64 %indvars.iv %75 = load double, ptr %74, align 8, !tbaa !26 @@ -962,8 +965,8 @@ define linkonce_odr void @_ZNSt6vectorIfSaIfEE17_M_default_appendEm(ptr noundef _ZSt6fill_nIPfmfET_S1_T0_RKT1_.exit.loopexit.i.i.i: ; preds = %19 %.idx.i.i.i.i.i = shl nuw nsw i64 %21, 2 - tail call void @llvm.memset.p0.i64(ptr align 4 %20, i8 0, i64 %.idx.i.i.i.i.i, i1 false), !tbaa !68 %23 = getelementptr inbounds nuw i8, ptr %20, i64 %.idx.i.i.i.i.i + tail call void @llvm.memset.p0.i64(ptr align 4 %20, i8 0, i64 %.idx.i.i.i.i.i, i1 false), !tbaa !68 br label %_ZSt27__uninitialized_default_n_aIPfmfET_S1_T0_RSaIT1_E.exit _ZSt27__uninitialized_default_n_aIPfmfET_S1_T0_RSaIT1_E.exit: ; preds = %19, %_ZSt6fill_nIPfmfET_S1_T0_RKT1_.exit.loopexit.i.i.i diff --git a/bench/gromacs/optimized/gmx_bar.ll b/bench/gromacs/optimized/gmx_bar.ll index 38617005133..597f50a95ee 100644 --- a/bench/gromacs/optimized/gmx_bar.ll +++ b/bench/gromacs/optimized/gmx_bar.ll @@ -2863,8 +2863,8 @@ _ZNSt10filesystem7__cxx114pathD2Ev.exit.i: ; preds = %_ZNSt10filesystem7_ %1024 = getelementptr inbounds nuw i8, ptr %1018, i64 24 br label %.preheader89.i -.loopexit84.i: ; preds = %.loopexit.i, %.loopexit86.i - %.156.lcssa.i = phi double [ %.055392.i, %.loopexit86.i ], [ %.459.i, %.loopexit.i ] +.loopexit84.i: ; preds = %1756, %.loopexit86.i + %.156.lcssa.i = phi double [ %.055392.i, %.loopexit86.i ], [ %.459.i, %1756 ] %1025 = invoke noundef zeroext i1 @_Z6do_enxP9ener_fileP10t_enxframe(ptr noundef %1009, ptr noundef nonnull %1017) to label %.noexc315 unwind label %.loopexit.split-lp709.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit @@ -3562,14 +3562,14 @@ _ZL15lambda_vec_samePK12lambda_vec_tS1_.exit.thread.i: ; preds = %1241, %.prehea %1279 = icmp sgt i32 %1278, 0 br i1 %1279, label %.lr.ph382.i, label %.loopexit84.i -.lr.ph382.i: ; preds = %.loopexit86.i, %.loopexit.i - %indvars.iv581.i = phi i64 [ %indvars.iv.next582.i, %.loopexit.i ], [ 0, %.loopexit86.i ] - %.0169379.i = phi i32 [ %.3172.i, %.loopexit.i ], [ 0, %.loopexit86.i ] - %.156378.i = phi double [ %.459.i, %.loopexit.i ], [ %.055392.i, %.loopexit86.i ] +.lr.ph382.i: ; preds = %.loopexit86.i, %1756 + %indvars.iv581.i = phi i64 [ %indvars.iv.next582.i, %1756 ], [ 0, %.loopexit86.i ] + %.0169379.i = phi i32 [ %.3172.i, %1756 ], [ 0, %.loopexit86.i ] + %.156378.i = phi double [ %.459.i, %1756 ], [ %.055392.i, %.loopexit86.i ] %1280 = load ptr, ptr %1021, align 8, !tbaa !143 %1281 = getelementptr inbounds nuw %struct.t_enxblock, ptr %1280, i64 %indvars.iv581.i %1282 = load i32, ptr %1281, align 8, !tbaa !144 - switch i32 %1282, label %.loopexit.i [ + switch i32 %1282, label %1756 [ i32 6, label %1283 i32 5, label %1559 ] @@ -3581,7 +3581,7 @@ _ZL15lambda_vec_samePK12lambda_vec_tS1_.exit.thread.i: ; preds = %1241, %.prehea %1287 = load ptr, ptr %1286, align 8, !tbaa !157 %1288 = load i32, ptr %1287, align 4, !tbaa !4 %or.cond7.i = icmp ult i32 %1288, 2 - br i1 %or.cond7.i, label %1289, label %.loopexit.i + br i1 %or.cond7.i, label %1289, label %1756 1289: ; preds = %1283 %1290 = sext i32 %.0169379.i to i64 @@ -4157,7 +4157,7 @@ _ZL15lambda_vec_samePK12lambda_vec_tS1_.exit.thread.i.i: ; preds = %1388, %_ZL15 1557: ; preds = %1553, %._crit_edge.i.i290 %1558 = add nsw i32 %.0169379.i, 1 - br label %.loopexit.i + br label %1756 1559: ; preds = %.lr.ph382.i %1560 = getelementptr inbounds nuw i8, ptr %1281, i64 8 @@ -4168,7 +4168,7 @@ _ZL15lambda_vec_samePK12lambda_vec_tS1_.exit.thread.i.i: ; preds = %1388, %_ZL15 %1565 = load i64, ptr %1564, align 8, !tbaa !170 %1566 = and i64 %1565, 4294967294 %or.cond9.i = icmp eq i64 %1566, 0 - br i1 %or.cond9.i, label %1567, label %.loopexit.i + br i1 %or.cond9.i, label %1567, label %1756 1567: ; preds = %1559 %1568 = load ptr, ptr %41, align 8, !tbaa !50 @@ -4598,7 +4598,6 @@ _ZL15lambda_vec_copyP12lambda_vec_tPKS_.exit.i228.i: ; preds = %1618, %.noexc356 .thread.i268: ; preds = %1589 call void @llvm.lifetime.end.p0(ptr nonnull %31) - %1743 = add nsw i32 %.0169379.i, 1 br label %.loopexit.i 1744: ; preds = %1741 @@ -4612,18 +4611,22 @@ _ZL15lambda_vec_copyP12lambda_vec_tPKS_.exit.i228.i: ; preds = %1618, %.noexc356 %1750 = load ptr, ptr %1664, align 8, !tbaa !98 %1751 = getelementptr inbounds ptr, ptr %.167.i, i64 %1746 store ptr %1750, ptr %1751, align 8, !tbaa !80 - %1752 = add nsw i32 %.0169379.i, 1 - %1753 = sitofp i64 %1745 to double - %1754 = call double @llvm.fmuladd.f64(double %1753, double %.1166.i, double %.1168.i) - %1755 = fcmp ogt double %1754, %.156378.i - %.358.ph.i = select i1 %1755, double %1754, double %.156378.i - %1756 = load ptr, ptr %95, align 8, !tbaa !29 - invoke fastcc void @_ZL30lambda_data_list_insert_sampleP13lambda_data_tP9samples_t(ptr noundef %1756, ptr noundef nonnull %1598) + %1751 = sitofp i64 %1744 to double + %1752 = call double @llvm.fmuladd.f64(double %1751, double %.1166.i, double %.1168.i) + %1753 = fcmp ogt double %1752, %.156378.i + %.358.ph.i = select i1 %1753, double %1752, double %.156378.i + %1754 = load ptr, ptr %95, align 8, !tbaa !29 + invoke fastcc void @_ZL30lambda_data_list_insert_sampleP13lambda_data_tP9samples_t(ptr noundef %1754, ptr noundef nonnull %1598) to label %.loopexit.i unwind label %.loopexit.split-lp709.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit -.loopexit.i: ; preds = %1744, %.thread.i268, %1559, %1557, %1283, %.lr.ph382.i - %.459.i = phi double [ %.156378.i, %.lr.ph382.i ], [ %.257.i, %1557 ], [ %.156378.i, %1283 ], [ %.156378.i, %1559 ], [ %.156378.i, %.thread.i268 ], [ %.358.ph.i, %1744 ] - %.3172.i = phi i32 [ %.0169379.i, %.lr.ph382.i ], [ %1558, %1557 ], [ %.0169379.i, %1283 ], [ %.0169379.i, %1559 ], [ %1743, %.thread.i268 ], [ %1752, %1744 ] +.loopexit.i: ; preds = %1744, %.thread.i268 + %.459.i = phi double [ %.156378.i, %.thread.i268 ], [ %.358.ph.i, %1743 ] + %1755 = add nsw i32 %.0169379.i, 1 + br label %1756 + +1756: ; preds = %.loopexit.i, %1559, %1557, %1283, %.lr.ph382.i + %.459.i = phi double [ %.156378.i, %.lr.ph382.i ], [ %.257.i, %1557 ], [ %.156378.i, %1283 ], [ %.156378.i, %1559 ], [ %.35876663.i, %.loopexit.i ] + %.3172.i = phi i32 [ %.0169379.i, %.lr.ph382.i ], [ %1558, %1557 ], [ %.0169379.i, %1283 ], [ %.0169379.i, %1559 ], [ %1755, %.loopexit.i ] %indvars.iv.next582.i = add nuw nsw i64 %indvars.iv581.i, 1 %1757 = load i32, ptr %1020, align 8, !tbaa !139 %1758 = sext i32 %1757 to i64 @@ -4680,7 +4683,7 @@ _ZL15lambda_vec_copyP12lambda_vec_tPKS_.exit.i228.i: ; preds = %1618, %.noexc356 br i1 %1775, label %.lr.ph.i246.i.preheader, label %_ZL16lambda_vec_printPK12lambda_vec_tPcb.exit.i255 .lr.ph.i246.i.preheader: ; preds = %1774, %.thread663.i - %.229.i.i258.ph = phi ptr [ %252, %.thread663.i ], [ %54, %1774 ] + %.229.i.i258.ph = phi ptr [ %252, %.thread664.i ], [ %54, %1774 ] br label %.lr.ph.i246.i .lr.ph.i246.i: ; preds = %.lr.ph.i246.i.preheader, %1790 @@ -6159,8 +6162,8 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit140.i: ; preds = % _ZSt6fill_nIPimiET_S1_T0_RKT1_.exit.loopexit.i.i.i.i204.i: ; preds = %2318 %.idx.i.i.i.i.i.i205.i = shl nuw nsw i64 %2320, 2 - call void @llvm.memset.p0.i64(ptr align 4 %2319, i8 0, i64 %.idx.i.i.i.i.i.i205.i, i1 false), !tbaa !4 %2322 = getelementptr inbounds nuw i8, ptr %2319, i64 %.idx.i.i.i.i.i.i205.i + call void @llvm.memset.p0.i64(ptr align 4 %2319, i8 0, i64 %.idx.i.i.i.i.i.i205.i, i1 false), !tbaa !4 br label %_ZNSt6vectorIiSaIiEE6resizeEm.exit.i.i 2323: ; preds = %2310 @@ -6265,8 +6268,8 @@ _ZNSt6vectorIiSaIiEE6resizeEm.exit.i.i: ; preds = %2339, %_ZNSt12_Vect _ZSt6fill_nIPimiET_S1_T0_RKT1_.exit.loopexit.i.i.i.i.i: ; preds = %2368 %.idx.i.i.i.i.i.i.i = shl nuw nsw i64 %2370, 2 - call void @llvm.memset.p0.i64(ptr align 4 %2369, i8 0, i64 %.idx.i.i.i.i.i.i.i, i1 false), !tbaa !4 %2372 = getelementptr inbounds nuw i8, ptr %2369, i64 %.idx.i.i.i.i.i.i.i + call void @llvm.memset.p0.i64(ptr align 4 %2369, i8 0, i64 %.idx.i.i.i.i.i.i.i, i1 false), !tbaa !4 br label %_ZNSt6vectorIiSaIiEE6resizeEm.exit222.i.i 2373: ; preds = %2360 diff --git a/bench/gromacs/optimized/make_ndx.ll b/bench/gromacs/optimized/make_ndx.ll index 1e2dd535bb4..db65fb3269e 100644 --- a/bench/gromacs/optimized/make_ndx.ll +++ b/bench/gromacs/optimized/make_ndx.ll @@ -5757,11 +5757,10 @@ sub_1: ; preds = %_ZL12parse_stringPP 245: ; preds = %241 %246 = load i32, ptr %12, align 4, !tbaa !4 %247 = tail call fastcc noundef i32 @_ZL17select_chainnamesPK7t_atomsiN3gmx8ArrayRefIPcEEPiS6_(ptr noundef %2, i32 noundef %246, ptr %243, ptr noundef %4, ptr noundef %5) - %248 = icmp ne i32 %247, 0 - %249 = load ptr, ptr %243, align 8, !tbaa !21 - %250 = tail call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %6, ptr noundef nonnull dereferenceable(1) @.str.135, ptr noundef %249) #28 - %251 = icmp sgt i32 %246, 1 - br i1 %251, label %.lr.ph220.preheader, label %_ZL10make_gnameiN3gmx8ArrayRefIPcEES1_.exit + %248 = load ptr, ptr %243, align 8, !tbaa !21 + %249 = tail call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %6, ptr noundef nonnull dereferenceable(1) @.str.135, ptr noundef %248) #28 + %250 = icmp sgt i32 %246, 1 + br i1 %250, label %.lr.ph220.preheader, label %_ZL10make_gnameiN3gmx8ArrayRefIPcEES1_.exit .lr.ph220.preheader: ; preds = %245 %wide.trip.count = zext nneg i32 %246 to i64 @@ -5776,8 +5775,12 @@ sub_1: ; preds = %_ZL12parse_stringPP %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count br i1 %exitcond.not, label %_ZL10make_gnameiN3gmx8ArrayRefIPcEES1_.exit, label %.lr.ph220, !llvm.loop !130 -_ZL10make_gnameiN3gmx8ArrayRefIPcEES1_.exit: ; preds = %.lr.ph.i163, %.lr.ph.i158, %.lr.ph220, %245, %176, %157, %_ZL18select_atomnumbersPPcPK7t_atomsiPiS4_S_.exit, %205, %226, %234, %218, %_ZL10copy_groupN3gmx8ArrayRefIKiEEPiS3_.exit - %.0133.shrunk = phi i1 [ true, %_ZL10copy_groupN3gmx8ArrayRefIKiEEPiS3_.exit ], [ %153, %_ZL18select_atomnumbersPPcPK7t_atomsiPiS4_S_.exit ], [ %207, %205 ], [ %222, %218 ], [ %230, %226 ], [ %237, %234 ], [ %160, %157 ], [ %179, %176 ], [ %248, %245 ], [ %248, %.lr.ph220 ], [ %160, %.lr.ph.i158 ], [ %179, %.lr.ph.i163 ] +_ZL10make_gnameiN3gmx8ArrayRefIPcEES1_.exit: ; preds = %.lr.ph220, %245 + %254 = icmp ne i32 %247, 0 + br label %_ZL10make_gnameiN3gmx8ArrayRefIPcEES1_.exit + +_ZL10make_gnameiN3gmx8ArrayRefIPcEES1_.exit: ; preds = %.lr.ph.i163, %.lr.ph.i158, %_ZL10make_gnameiN3gmx8ArrayRefIPcEES1_.exit.loopexit, %176, %157, %_ZL18select_atomnumbersPPcPK7t_atomsiPiS4_S_.exit, %205, %226, %234, %218, %_ZL10copy_groupN3gmx8ArrayRefIKiEEPiS3_.exit + %.0133.shrunk = phi i1 [ true, %_ZL10copy_groupN3gmx8ArrayRefIKiEEPiS3_.exit ], [ %153, %_ZL18select_atomnumbersPPcPK7t_atomsiPiS4_S_.exit ], [ %207, %205 ], [ %222, %218 ], [ %230, %226 ], [ %237, %234 ], [ %160, %157 ], [ %179, %176 ], [ %254, %_ZL10make_gnameiN3gmx8ArrayRefIPcEES1_.exit.loopexit ], [ %160, %.lr.ph.i158 ], [ %179, %.lr.ph.i163 ] %or.cond3 = and i1 %21, %.0133.shrunk br i1 %or.cond3, label %255, label %_ZL10make_gnameiN3gmx8ArrayRefIPcEES1_.exit.thread diff --git a/bench/hermes/optimized/DebugInfo.ll b/bench/hermes/optimized/DebugInfo.ll index c49b4635feb..8117b932830 100644 --- a/bench/hermes/optimized/DebugInfo.ll +++ b/bench/hermes/optimized/DebugInfo.ll @@ -3168,10 +3168,6 @@ for.body.preheader: ; preds = %entry %_M_finish.i = getelementptr inbounds nuw i8, ptr %this, i64 152 %0 = load ptr, ptr %_M_finish.i, align 8 %1 = load ptr, ptr %textifiedCallees_, align 8 - %sub.ptr.lhs.cast.i = ptrtoint ptr %0 to i64 - %sub.ptr.rhs.cast.i = ptrtoint ptr %1 to i64 - %sub.ptr.sub.i = sub i64 %sub.ptr.lhs.cast.i, %sub.ptr.rhs.cast.i - %conv = trunc i64 %sub.ptr.sub.i to i32 tail call void @_ZN6hermes18appendSignedLEB128ERSt6vectorIhSaIhEEl(ptr noundef nonnull align 8 dereferenceable(24) %textifiedCallees_, i64 noundef %textifiedCallees.coerce1) #16 %add.ptr.i.idx = shl nsw i64 %textifiedCallees.coerce1, 4 %add.ptr.i = getelementptr inbounds i8, ptr %textifiedCallees.coerce0, i64 %add.ptr.i.idx @@ -3187,10 +3183,17 @@ for.body: ; preds = %for.body.preheader, tail call void @_ZN6hermes3hbc18DebugInfoGenerator12appendStringERSt6vectorIhSaIhEENS_10IdentifierE(ptr noundef nonnull align 8 dereferenceable(216) %this, ptr noundef nonnull align 8 dereferenceable(24) %textifiedCallees_, ptr %agg.tmp.sroa.0.0.copyload) %incdec.ptr = getelementptr inbounds nuw i8, ptr %__begin1.011, i64 16 %cmp.not = icmp eq ptr %incdec.ptr, %add.ptr.i - br i1 %cmp.not, label %return, label %for.body + br i1 %cmp.not, label %return.loopexit, label %for.body + +return.loopexit: ; preds = %for.body + %sub.ptr.lhs.cast.i = ptrtoint ptr %0 to i64 + %sub.ptr.rhs.cast.i = ptrtoint ptr %1 to i64 + %sub.ptr.sub.i = sub i64 %sub.ptr.lhs.cast.i, %sub.ptr.rhs.cast.i + %conv = trunc i64 %sub.ptr.sub.i to i32 + br label %return -return: ; preds = %for.body, %entry - %retval.0 = phi i32 [ 0, %entry ], [ %conv, %for.body ] +return: ; preds = %return.loopexit, %entry + %retval.0 = phi i32 [ 0, %entry ], [ %conv, %return.loopexit ] ret i32 %retval.0 } @@ -3230,7 +3233,6 @@ cond.end: ; preds = %if.end, %cond.false %conv20.in = phi i64 [ %sub.ptr.sub.i16, %cond.false ], [ %sub.ptr.sub.i, %if.end ] %scopeDescData_18 = phi ptr [ %scopeDescData_12, %cond.false ], [ %scopeDescData_, %if.end ] %cond = phi i64 [ %5, %cond.false ], [ 4294967295, %if.end ] - %conv20 = trunc i64 %conv20.in to i32 tail call void @_ZN6hermes18appendSignedLEB128ERSt6vectorIhSaIhEEl(ptr noundef nonnull align 8 dereferenceable(24) %scopeDescData_18, i64 noundef %cond) #16 %6 = and i16 %flags.coerce, 1 %7 = lshr i16 %flags.coerce, 7 @@ -3242,7 +3244,7 @@ cond.end: ; preds = %if.end, %cond.false %add.ptr.i.idx = shl nsw i64 %names.coerce1, 3 %add.ptr.i = getelementptr inbounds i8, ptr %names.coerce0, i64 %add.ptr.i.idx %cmp.not23 = icmp eq i64 %names.coerce1, 0 - br i1 %cmp.not23, label %return, label %for.body + br i1 %cmp.not23, label %return.loopexit, label %for.body for.body: ; preds = %cond.end, %for.body %__begin1.024 = phi ptr [ %incdec.ptr, %for.body ], [ %names.coerce0, %cond.end ] @@ -3250,10 +3252,14 @@ for.body: ; preds = %cond.end, %for.body tail call void @_ZN6hermes3hbc18DebugInfoGenerator12appendStringERSt6vectorIhSaIhEENS_10IdentifierE(ptr noundef nonnull align 8 dereferenceable(216) %this, ptr noundef nonnull align 8 dereferenceable(24) %scopeDescData_18, ptr %name.sroa.0.0.copyload) %incdec.ptr = getelementptr inbounds nuw i8, ptr %__begin1.024, i64 8 %cmp.not = icmp eq ptr %incdec.ptr, %add.ptr.i - br i1 %cmp.not, label %return, label %for.body + br i1 %cmp.not, label %return.loopexit, label %for.body + +return.loopexit: ; preds = %for.body, %cond.end + %conv20 = trunc i64 %conv20.in to i32 + br label %return -return: ; preds = %for.body, %cond.end, %land.lhs.true - %retval.0 = phi i32 [ 0, %land.lhs.true ], [ %conv20, %cond.end ], [ %conv20, %for.body ] +return: ; preds = %return.loopexit, %land.lhs.true + %retval.0 = phi i32 [ 0, %land.lhs.true ], [ %conv20, %return.loopexit ] ret i32 %retval.0 } diff --git a/bench/hermes/optimized/ISel.ll b/bench/hermes/optimized/ISel.ll index 3209533e7d6..f92c6e0788c 100644 --- a/bench/hermes/optimized/ISel.ll +++ b/bench/hermes/optimized/ISel.ll @@ -57193,12 +57193,8 @@ while.cond1.i.i: ; preds = %while.cond1.i.i, %w %incdec.ptr.i.i = getelementptr inbounds nuw i8, ptr %__first.addr.1.i.i, i64 48 br i1 %cmp.i.i.i10.i, label %while.cond1.i.i, label %while.cond4.i.i.preheader, !llvm.loop !109 -while.cond4.i.i.preheader: ; preds = %while.cond1.i.i - %66 = getelementptr i8, ptr %__first.addr.1.i.i, i64 8 - br label %while.cond4.i.i - -while.cond4.i.i: ; preds = %while.cond4.i.i.preheader, %while.cond4.i.i - %__last.addr.0.pn.i.i = phi ptr [ %__last.addr.1.i.i, %while.cond4.i.i ], [ %__last.addr.0.i.i, %while.cond4.i.i.preheader ] +while.cond4.i.i.preheader: ; preds = %while.cond1.i.i, %while.cond4.i.i + %__last.addr.0.pn.i.i = phi ptr [ %__last.addr.1.i.i, %while.cond4.i.i ], [ %__last.addr.0.i.i, %while.cond1.i.i ] %__last.addr.1.i.i = getelementptr inbounds i8, ptr %__last.addr.0.pn.i.i, i64 -48 %67 = getelementptr i8, ptr %__last.addr.0.pn.i.i, i64 -40 %__last.addr.1.val.i.i = load i32, ptr %67, align 8 @@ -57211,9 +57207,10 @@ while.end8.i.i: ; preds = %while.cond4.i.i if.end.i.i: ; preds = %while.end8.i.i %68 = getelementptr i8, ptr %__last.addr.0.pn.i.i, i64 -40 + %68 = getelementptr i8, ptr %__first.addr.1.i.i, i64 8 call void @llvm.lifetime.start.p0(ptr nonnull %__tmp.sroa.2.i.i.i9.i) %69 = load ptr, ptr %__first.addr.1.i.i, align 8 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %__tmp.sroa.2.i.i.i9.i, ptr noundef nonnull align 8 dereferenceable(16) %66, i64 16, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %__tmp.sroa.2.i.i.i9.i, ptr noundef nonnull align 8 dereferenceable(16) %68, i64 16, i1 false) %table3.i.i.i.i.i.i12.i = getelementptr inbounds nuw i8, ptr %__first.addr.1.i.i, i64 24 %70 = load ptr, ptr %table3.i.i.i.i.i.i12.i, align 8 %_M_finish3.i.i.i.i.i.i.i.i.i.i13.i = getelementptr inbounds nuw i8, ptr %__first.addr.1.i.i, i64 32 @@ -57223,7 +57220,7 @@ if.end.i.i: ; preds = %while.end8.i.i tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %table3.i.i.i.i.i.i12.i, i8 0, i64 24, i1 false) %73 = load ptr, ptr %__last.addr.1.i.i, align 8 store ptr %73, ptr %__first.addr.1.i.i, align 8 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %66, ptr noundef nonnull align 8 dereferenceable(40) %68, i64 16, i1 false) + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %68, ptr noundef nonnull align 8 dereferenceable(40) %68, i64 16, i1 false) %table3.i.i.i6.i.i.i15.i = getelementptr inbounds i8, ptr %__last.addr.0.pn.i.i, i64 -24 %74 = load ptr, ptr %table3.i.i.i6.i.i.i15.i, align 8 store ptr %74, ptr %table3.i.i.i.i.i.i12.i, align 8 diff --git a/bench/hermes/optimized/ProfileAnalyzer.ll b/bench/hermes/optimized/ProfileAnalyzer.ll index 2cb1cbfe4b9..024c015b1ae 100644 --- a/bench/hermes/optimized/ProfileAnalyzer.ll +++ b/bench/hermes/optimized/ProfileAnalyzer.ll @@ -14918,12 +14918,8 @@ while.cond3.i.i: ; preds = %while.cond3.i.i, %w %incdec.ptr.i.i.i = getelementptr inbounds nuw i8, ptr %__first.sroa.0.1.i.i, i64 16 br i1 %cmp.i.i.i7.i, label %while.cond3.i.i, label %while.cond10.i.i.preheader, !llvm.loop !337 -while.cond10.i.i.preheader: ; preds = %while.cond3.i.i - %42 = getelementptr i8, ptr %__first.sroa.0.1.i.i, i64 8 - br label %while.cond10.i.i - -while.cond10.i.i: ; preds = %while.cond10.i.i.preheader, %while.cond10.i.i - %__last.sroa.0.0.pn.i.i = phi ptr [ %__last.sroa.0.1.i.i, %while.cond10.i.i ], [ %__last.sroa.0.0.i.i, %while.cond10.i.i.preheader ] +while.cond10.i.i.preheader: ; preds = %while.cond3.i.i, %while.cond10.i.i + %__last.sroa.0.0.pn.i.i = phi ptr [ %__last.sroa.0.1.i.i, %while.cond10.i.i ], [ %__last.sroa.0.0.i.i, %while.cond3.i.i ] %__last.sroa.0.1.i.i = getelementptr inbounds i8, ptr %__last.sroa.0.0.pn.i.i, i64 -16 %43 = getelementptr i8, ptr %__last.sroa.0.0.pn.i.i, i64 -8 %call3.val.i3.i.i = load i64, ptr %43, align 8 @@ -14936,13 +14932,14 @@ while.end18.i.i: ; preds = %while.cond10.i.i if.end.i.i: ; preds = %while.end18.i.i %44 = getelementptr i8, ptr %__last.sroa.0.0.pn.i.i, i64 -8 + %44 = getelementptr i8, ptr %__first.sroa.0.1.i.i, i64 8 %45 = load i8, ptr %__first.sroa.0.1.i.i, align 1 %46 = load i8, ptr %__last.sroa.0.1.i.i, align 1 store i8 %46, ptr %__first.sroa.0.1.i.i, align 1 store i8 %45, ptr %__last.sroa.0.1.i.i, align 1 - %47 = load i64, ptr %42, align 8 + %47 = load i64, ptr %44, align 8 %48 = load i64, ptr %44, align 8 - store i64 %48, ptr %42, align 8 + store i64 %48, ptr %44, align 8 store i64 %47, ptr %44, align 8 br label %while.body.i.i6, !llvm.loop !339 @@ -15842,12 +15839,8 @@ while.cond3.i.i: ; preds = %while.cond3.i.i, %w %incdec.ptr.i.i.i = getelementptr inbounds nuw i8, ptr %__first.sroa.0.1.i.i, i64 80 br i1 %cmp.i.i.i7.i, label %while.cond3.i.i, label %while.cond10.i.i.preheader, !llvm.loop !355 -while.cond10.i.i.preheader: ; preds = %while.cond3.i.i - %74 = getelementptr i8, ptr %__first.sroa.0.1.i.i, i64 8 - br label %while.cond10.i.i - -while.cond10.i.i: ; preds = %while.cond10.i.i.preheader, %while.cond10.i.i - %__last.sroa.0.0.pn.i.i = phi ptr [ %__last.sroa.0.1.i.i, %while.cond10.i.i ], [ %__last.sroa.0.0.i.i, %while.cond10.i.i.preheader ] +while.cond10.i.i.preheader: ; preds = %while.cond3.i.i, %while.cond10.i.i + %__last.sroa.0.0.pn.i.i = phi ptr [ %__last.sroa.0.1.i.i, %while.cond10.i.i ], [ %__last.sroa.0.0.i.i, %while.cond3.i.i ] %__last.sroa.0.1.i.i = getelementptr inbounds i8, ptr %__last.sroa.0.0.pn.i.i, i64 -80 %75 = getelementptr i8, ptr %__last.sroa.0.0.pn.i.i, i64 -72 %call3.val.i3.i.i = load i64, ptr %75, align 8 @@ -15860,11 +15853,12 @@ while.end18.i.i: ; preds = %while.cond10.i.i if.end.i.i: ; preds = %while.end18.i.i %76 = getelementptr i8, ptr %__last.sroa.0.0.pn.i.i, i64 -72 + %76 = getelementptr i8, ptr %__first.sroa.0.1.i.i, i64 8 %77 = load i32, ptr %__first.sroa.0.1.i.i, align 4 %78 = load i32, ptr %__last.sroa.0.1.i.i, align 4 store i32 %78, ptr %__first.sroa.0.1.i.i, align 4 store i32 %77, ptr %__last.sroa.0.1.i.i, align 4 - tail call void @_ZSt4swapIN6hermes25FunctionRuntimeStatisticsEENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS5_ESt18is_move_assignableIS5_EEE5valueEvE4typeERS5_SE_(ptr noundef nonnull align 8 dereferenceable(72) %74, ptr noundef nonnull align 8 dereferenceable(72) %76) #20 + tail call void @_ZSt4swapIN6hermes25FunctionRuntimeStatisticsEENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS5_ESt18is_move_assignableIS5_EEE5valueEvE4typeERS5_SE_(ptr noundef nonnull align 8 dereferenceable(72) %76, ptr noundef nonnull align 8 dereferenceable(72) %76) #20 br label %while.body.i.i5, !llvm.loop !357 "_ZSt27__unguarded_partition_pivotIN9__gnu_cxx17__normal_iteratorIPSt4pairIjN6hermes25FunctionRuntimeStatisticsEESt6vectorIS5_SaIS5_EEEENS0_5__ops15_Iter_comp_iterIZNS3_15ProfileAnalyzer17dumpFunctionStatsEvE3$_1EEET_SG_SG_T0_.exit": ; preds = %while.end18.i.i diff --git a/bench/jq/optimized/regerror.ll b/bench/jq/optimized/regerror.ll index 9df10b0154d..c22abe08fda 100644 --- a/bench/jq/optimized/regerror.ll +++ b/bench/jq/optimized/regerror.ll @@ -744,9 +744,9 @@ define dso_local void @onig_snprintf_with_pattern(ptr noundef %0, i32 noundef %1 %25 = getelementptr inbounds nuw i8, ptr %2, i64 88 br label %26 -26: ; preds = %.lr.ph98, %.loopexit65 - %.05197 = phi ptr [ %22, %.lr.ph98 ], [ %.4, %.loopexit65 ] - %.05396 = phi ptr [ %3, %.lr.ph98 ], [ %.356, %.loopexit65 ] +26: ; preds = %.lr.ph98, %.loopexit66 + %.05197 = phi ptr [ %22, %.lr.ph98 ], [ %.4, %.loopexit66 ] + %.05396 = phi ptr [ %3, %.lr.ph98 ], [ %.356, %.loopexit66 ] %27 = load ptr, ptr %2, align 8, !tbaa !19 %28 = call i32 %27(ptr noundef %.05396) #9 %.not = icmp eq i32 %28, 1 @@ -761,10 +761,10 @@ define dso_local void @onig_snprintf_with_pattern(ptr noundef %0, i32 noundef %1 br i1 %33, label %.preheader, label %.preheader68 .preheader68: ; preds = %29 - br i1 %34, label %.lr.ph75, label %.loopexit65 + br i1 %34, label %.lr.ph75, label %.loopexit66 .preheader: ; preds = %29 - br i1 %34, label %.lr.ph81, label %.loopexit65 + br i1 %34, label %.lr.ph81, label %.loopexit66 .lr.ph81: ; preds = %.preheader, %.lr.ph81 %.15280 = phi ptr [ %38, %.lr.ph81 ], [ %.05197, %.preheader ] @@ -776,19 +776,19 @@ define dso_local void @onig_snprintf_with_pattern(ptr noundef %0, i32 noundef %1 %38 = getelementptr inbounds nuw i8, ptr %.15280, i64 1 store i8 %37, ptr %.15280, align 1, !tbaa !18 %39 = icmp samesign ugt i32 %.05878, 1 - br i1 %39, label %.lr.ph81, label %.loopexit65, !llvm.loop !23 + br i1 %39, label %.lr.ph81, label %.loopexit66, !llvm.loop !23 .loopexit: ; preds = %.lr.ph, %.lr.ph75 %.3.lcssa = phi ptr [ %.274, %.lr.ph75 ], [ %52, %.lr.ph ] - %40 = icmp samesign ugt i32 %.in, 1 - br i1 %40, label %.lr.ph75, label %.loopexit65, !llvm.loop !24 + %40 = getelementptr inbounds nuw i8, ptr %.25573, i64 1 + %41 = icmp samesign ugt i32 %.in, 1 + br i1 %41, label %.lr.ph75, label %.loopexit66, !llvm.loop !24 .lr.ph75: ; preds = %.preheader68, %.loopexit %.in = phi i32 [ %41, %.loopexit ], [ %31, %.preheader68 ] %.274 = phi ptr [ %.3.lcssa, %.loopexit ], [ %.05197, %.preheader68 ] - %.25573 = phi ptr [ %42, %.loopexit ], [ %.05396, %.preheader68 ] + %.25573 = phi ptr [ %40, %.loopexit ], [ %.05396, %.preheader68 ] %41 = add nsw i32 %.in, -1 - %42 = getelementptr inbounds nuw i8, ptr %.25573, i64 1 %43 = load i8, ptr %.25573, align 1, !tbaa !18 %44 = zext i8 %43 to i32 %45 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %7, i64 noundef 5, ptr noundef nonnull @.str.83, i32 noundef %44) #9 @@ -826,7 +826,7 @@ define dso_local void @onig_snprintf_with_pattern(ptr noundef %0, i32 noundef %1 %58 = call i32 %57(ptr noundef nonnull %56) #9 %.584 = getelementptr inbounds nuw i8, ptr %.05197, i64 1 %59 = icmp sgt i32 %58, 0 - br i1 %59, label %.lr.ph88, label %.loopexit65 + br i1 %59, label %.lr.ph88, label %.loopexit66 .lr.ph88: ; preds = %55, %.lr.ph88 %.587 = phi ptr [ %.5, %.lr.ph88 ], [ %.584, %55 ] @@ -838,7 +838,7 @@ define dso_local void @onig_snprintf_with_pattern(ptr noundef %0, i32 noundef %1 store i8 %62, ptr %.587, align 1, !tbaa !18 %.5 = getelementptr inbounds nuw i8, ptr %.587, i64 1 %63 = icmp samesign ugt i32 %.26085, 1 - br i1 %63, label %.lr.ph88, label %.loopexit65, !llvm.loop !26 + br i1 %63, label %.lr.ph88, label %.loopexit66, !llvm.loop !26 64: ; preds = %53 %65 = getelementptr inbounds nuw i8, ptr %.05197, i64 1 @@ -847,7 +847,7 @@ define dso_local void @onig_snprintf_with_pattern(ptr noundef %0, i32 noundef %1 %67 = load i8, ptr %.05396, align 1, !tbaa !18 %68 = getelementptr inbounds nuw i8, ptr %.05197, i64 2 store i8 %67, ptr %65, align 1, !tbaa !18 - br label %.loopexit65 + br label %.loopexit66 69: ; preds = %53 %70 = zext i8 %54 to i32 @@ -865,16 +865,15 @@ define dso_local void @onig_snprintf_with_pattern(ptr noundef %0, i32 noundef %1 br i1 %.not64, label %78, label %90 78: ; preds = %73 - %79 = getelementptr inbounds nuw i8, ptr %.05396, i64 1 - %80 = load i8, ptr %.05396, align 1, !tbaa !18 - %81 = zext i8 %80 to i32 - %82 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %7, i64 noundef 5, ptr noundef nonnull @.str.83, i32 noundef %81) #9 - %83 = call i32 @onigenc_str_bytelen_null(ptr noundef nonnull @OnigEncodingASCII, ptr noundef nonnull %7) #9 - %84 = icmp sgt i32 %83, 0 - br i1 %84, label %.lr.ph94.preheader, label %.loopexit65 + %79 = load i8, ptr %.05396, align 1, !tbaa !18 + %80 = zext i8 %79 to i32 + %81 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %7, i64 noundef 5, ptr noundef nonnull @.str.83, i32 noundef %80) #9 + %82 = call i32 @onigenc_str_bytelen_null(ptr noundef nonnull @OnigEncodingASCII, ptr noundef nonnull %7) #9 + %83 = icmp sgt i32 %82, 0 + br i1 %83, label %.lr.ph94.preheader, label %.loopexit65 .lr.ph94.preheader: ; preds = %78 - %85 = zext nneg i32 %83 to i64 + %85 = zext nneg i32 %82 to i64 %86 = getelementptr i8, ptr %7, i64 %85 %scevgep108 = getelementptr i8, ptr %86, i64 -1 br label %.lr.ph94 @@ -894,16 +893,21 @@ define dso_local void @onig_snprintf_with_pattern(ptr noundef %0, i32 noundef %1 %92 = load i8, ptr %.05396, align 1, !tbaa !18 %93 = getelementptr inbounds nuw i8, ptr %.05197, i64 1 store i8 %92, ptr %.05197, align 1, !tbaa !18 - br label %.loopexit65 + br label %.loopexit66 -.loopexit65: ; preds = %.loopexit, %.lr.ph81, %.lr.ph88, %.lr.ph94, %.preheader68, %.preheader, %55, %78, %90, %64 - %.356 = phi ptr [ %66, %64 ], [ %91, %90 ], [ %79, %78 ], [ %56, %55 ], [ %.05396, %.preheader ], [ %.05396, %.preheader68 ], [ %79, %.lr.ph94 ], [ %61, %.lr.ph88 ], [ %36, %.lr.ph81 ], [ %42, %.loopexit ] - %.4 = phi ptr [ %68, %64 ], [ %93, %90 ], [ %.05197, %78 ], [ %.584, %55 ], [ %.05197, %.preheader ], [ %.05197, %.preheader68 ], [ %89, %.lr.ph94 ], [ %.5, %.lr.ph88 ], [ %38, %.lr.ph81 ], [ %.3.lcssa, %.loopexit ] +.loopexit65: ; preds = %.lr.ph94, %78 + %.356 = phi ptr [ %.05197, %78 ], [ %88, %.lr.ph94 ] + %93 = getelementptr inbounds nuw i8, ptr %.05396, i64 1 + br label %.loopexit66 + +.loopexit66: ; preds = %.loopexit, %.lr.ph81, %.lr.ph88, %.preheader68, %.preheader, %55, %.loopexit65, %89, %64 + %.356 = phi ptr [ %66, %64 ], [ %90, %89 ], [ %93, %.loopexit65 ], [ %56, %55 ], [ %.05396, %.preheader ], [ %.05396, %.preheader68 ], [ %61, %.lr.ph88 ], [ %36, %.lr.ph81 ], [ %40, %.loopexit ] + %.4 = phi ptr [ %68, %64 ], [ %92, %89 ], [ %.6.lcssa, %.loopexit65 ], [ %.584, %55 ], [ %.05197, %.preheader ], [ %.05197, %.preheader68 ], [ %.5, %.lr.ph88 ], [ %38, %.lr.ph81 ], [ %.3.lcssa, %.loopexit ] %94 = icmp ult ptr %.356, %4 br i1 %94, label %26, label %._crit_edge, !llvm.loop !29 -._crit_edge: ; preds = %.loopexit65, %19 - %.051.lcssa = phi ptr [ %22, %19 ], [ %.4, %.loopexit65 ] +._crit_edge: ; preds = %.loopexit66, %19 + %.051.lcssa = phi ptr [ %22, %19 ], [ %.4, %.loopexit66 ] %95 = getelementptr inbounds nuw i8, ptr %.051.lcssa, i64 1 store i8 47, ptr %.051.lcssa, align 1, !tbaa !18 store i8 0, ptr %95, align 1, !tbaa !18 diff --git a/bench/just-rs/optimized/1uppz7l1e89fp8n7.ll b/bench/just-rs/optimized/1uppz7l1e89fp8n7.ll index 53f85129206..6fcb9f552d0 100644 --- a/bench/just-rs/optimized/1uppz7l1e89fp8n7.ll +++ b/bench/just-rs/optimized/1uppz7l1e89fp8n7.ll @@ -3731,7 +3731,7 @@ define internal fastcc void @_ZN6digest11FixedOutput14finalize_fixed17h6acff55bd unreachable common.resume: ; preds = %27, %50, %19 - %common.resume.op = phi { ptr, i32 } [ %20, %19 ], [ %28, %27 ], [ %51, %50 ] + %common.resume.op = phi { ptr, i32 } [ %20, %19 ], [ %28, %27 ], [ %51, %51 ] resume { ptr, i32 } %common.resume.op "_ZN110_$LT$generic_array..GenericArray$LT$T$C$N$GT$$u20$as$u20$generic_array..sequence..GenericSequence$LT$T$GT$$GT$8generate17h08aed7605298457dE.exit": ; preds = %2 @@ -3787,25 +3787,28 @@ common.resume: ; preds = %27, %50, %19 call void @llvm.assume(i1 %34) %35 = getelementptr inbounds nuw i8, ptr %15, i64 32 %36 = load i64, ptr %35, align 8, !alias.scope !940, !noalias !941, !noundef !4 - %37 = shl i64 %36, 9 - %38 = shl nuw nsw i64 %33, 3 - %39 = or disjoint i64 %37, %38 - %40 = call i64 @llvm.bswap.i64(i64 %39) call void @llvm.experimental.noalias.scope.decl(metadata !942) %41 = getelementptr inbounds nuw i8, ptr %23, i64 %33 store i8 -128, ptr %41, align 1, !alias.scope !945, !noalias !946 %42 = icmp eq i8 %32, 63 - br i1 %42, label %._crit_edge.thread.i.i.i, label %._crit_edge.i.i.i + br i1 %42, label %._crit_edge.i.i.i, label %._crit_edge.i.i.i ._crit_edge.i.i.i: ; preds = %"_ZN110_$LT$generic_array..GenericArray$LT$T$C$N$GT$$u20$as$u20$generic_array..sequence..GenericSequence$LT$T$GT$$GT$8generate17h08aed7605298457dE.exit.i.i" %43 = getelementptr i8, ptr %41, i64 1 %44 = xor i64 %33, 63 call void @llvm.memset.p0.i64(ptr align 1 %43, i8 0, i64 %44, i1 false), !alias.scope !938, !noalias !949 + br label %._crit_edge.i.i.i + +._crit_edge.i.i.i: ; preds = %.lr.ph.preheader.i.i.i, %"_ZN110_$LT$generic_array..GenericArray$LT$T$C$N$GT$$u20$as$u20$generic_array..sequence..GenericSequence$LT$T$GT$$GT$8generate17h08aed7605298457dE.exit.i.i" + %41 = shl i64 %36, 9 + %42 = shl nuw nsw i64 %33, 3 + %43 = or disjoint i64 %41, %42 + %44 = call i64 @llvm.bswap.i64(i64 %43) %45 = xor i64 %33, 56 %46 = icmp samesign ult i64 %45, 8 br i1 %46, label %._crit_edge.thread.i.i.i, label %55 -._crit_edge.thread.i.i.i: ; preds = %._crit_edge.i.i.i, %"_ZN110_$LT$generic_array..GenericArray$LT$T$C$N$GT$$u20$as$u20$generic_array..sequence..GenericSequence$LT$T$GT$$GT$8generate17h08aed7605298457dE.exit.i.i" +._crit_edge.thread.i.i.i: ; preds = %._crit_edge.i.i.i call void @_ZN4sha26sha25611compress25617h59f6893dd7c729b0E(ptr noalias noundef nonnull align 8 dereferenceable(112) %15, ptr noalias noundef nonnull readonly align 1 dereferenceable(65) %23, i64 noundef 1), !noalias !950 call void @llvm.lifetime.start.p0(ptr nonnull %7), !noalias !951 call void @llvm.lifetime.start.p0(ptr nonnull %6), !noalias !952 @@ -3840,14 +3843,14 @@ common.resume: ; preds = %27, %50, %19 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(64) %7, ptr noundef nonnull align 8 dereferenceable(64) %6, i64 56, i1 false), !noalias !956 call void @llvm.lifetime.end.p0(ptr nonnull %6), !noalias !952 %54 = getelementptr inbounds nuw i8, ptr %7, i64 56 - store i64 %40, ptr %54, align 1, !alias.scope !957, !noalias !961 + store i64 %44, ptr %54, align 1, !alias.scope !957, !noalias !961 call void @_ZN4sha26sha25611compress25617h59f6893dd7c729b0E(ptr noalias noundef nonnull align 8 dereferenceable(112) %15, ptr noalias noundef nonnull readonly align 1 dereferenceable(64) %7, i64 noundef 1), !noalias !950 call void @llvm.lifetime.end.p0(ptr nonnull %7), !noalias !951 br label %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17h1c602a7b6d57ccd6E.exit.i.i.i.preheader" 55: ; preds = %._crit_edge.i.i.i %56 = getelementptr inbounds nuw i8, ptr %15, i64 96 - store i64 %40, ptr %56, align 8, !alias.scope !963, !noalias !967 + store i64 %44, ptr %56, align 8, !alias.scope !963, !noalias !967 call void @_ZN4sha26sha25611compress25617h59f6893dd7c729b0E(ptr noalias noundef nonnull align 8 dereferenceable(112) %15, ptr noalias noundef nonnull readonly align 1 dereferenceable(65) %23, i64 noundef 1), !noalias !950 br label %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17h1c602a7b6d57ccd6E.exit.i.i.i.preheader" diff --git a/bench/lean4/optimized/equiv_manager.ll b/bench/lean4/optimized/equiv_manager.ll index 1788c096cec..a4466d78006 100644 --- a/bench/lean4/optimized/equiv_manager.ll +++ b/bench/lean4/optimized/equiv_manager.ll @@ -149,25 +149,22 @@ define hidden void @_ZN4lean13equiv_manager5mergeEjj(ptr noundef nonnull readonl %.not.i = icmp eq i32 %8, %.08.i br i1 %.not.i, label %_ZN4lean13equiv_manager4findEj.exit.preheader, label %5 -_ZN4lean13equiv_manager4findEj.exit.preheader: ; preds = %5 - %9 = getelementptr inbounds nuw %"struct.lean::equiv_manager::node", ptr %4, i64 %6 - br label %_ZN4lean13equiv_manager4findEj.exit - -_ZN4lean13equiv_manager4findEj.exit: ; preds = %_ZN4lean13equiv_manager4findEj.exit.preheader, %_ZN4lean13equiv_manager4findEj.exit - %.08.i20 = phi i32 [ %12, %_ZN4lean13equiv_manager4findEj.exit ], [ %2, %_ZN4lean13equiv_manager4findEj.exit.preheader ] - %10 = zext i32 %.08.i20 to i64 - %11 = getelementptr inbounds nuw %"struct.lean::equiv_manager::node", ptr %4, i64 %10 - %12 = load i32, ptr %11, align 4, !tbaa !11 - %.not.i21 = icmp eq i32 %12, %.08.i20 +_ZN4lean13equiv_manager4findEj.exit.preheader: ; preds = %5, %_ZN4lean13equiv_manager4findEj.exit + %.08.i20 = phi i32 [ %11, %_ZN4lean13equiv_manager4findEj.exit ], [ %2, %5 ] + %9 = zext i32 %.08.i20 to i64 + %10 = getelementptr inbounds nuw %"struct.lean::equiv_manager::node", ptr %4, i64 %9 + %11 = load i32, ptr %10, align 4, !tbaa !11 + %.not.i21 = icmp eq i32 %11, %.08.i20 br i1 %.not.i21, label %_ZN4lean13equiv_manager4findEj.exit22, label %_ZN4lean13equiv_manager4findEj.exit _ZN4lean13equiv_manager4findEj.exit22: ; preds = %_ZN4lean13equiv_manager4findEj.exit - %13 = getelementptr inbounds nuw %"struct.lean::equiv_manager::node", ptr %4, i64 %10 + %13 = getelementptr inbounds nuw %"struct.lean::equiv_manager::node", ptr %4, i64 %6 + %13 = getelementptr inbounds nuw %"struct.lean::equiv_manager::node", ptr %4, i64 %9 %.not = icmp eq i32 %.08.i, %.08.i20 br i1 %.not, label %25, label %14 14: ; preds = %_ZN4lean13equiv_manager4findEj.exit22 - %15 = getelementptr inbounds nuw i8, ptr %9, i64 4 + %15 = getelementptr inbounds nuw i8, ptr %12, i64 4 %16 = load i32, ptr %15, align 4, !tbaa !14 %17 = getelementptr inbounds nuw i8, ptr %13, i64 4 %18 = load i32, ptr %17, align 4, !tbaa !14 @@ -175,7 +172,7 @@ _ZN4lean13equiv_manager4findEj.exit22: ; preds = %_ZN4lean13equiv_man br i1 %19, label %20, label %21 20: ; preds = %14 - store i32 %.08.i20, ptr %9, align 4, !tbaa !11 + store i32 %.08.i20, ptr %12, align 4, !tbaa !11 br label %25 21: ; preds = %14 @@ -761,25 +758,22 @@ _ZN4leaneqERKNS_3natES2_.exit69: ; preds = %141 %.not.i.i = icmp eq i32 %177, %.08.i.i br i1 %.not.i.i, label %_ZN4lean13equiv_manager4findEj.exit.i.preheader, label %174 -_ZN4lean13equiv_manager4findEj.exit.i.preheader: ; preds = %174 - %178 = getelementptr inbounds nuw %"struct.lean::equiv_manager::node", ptr %173, i64 %175 - br label %_ZN4lean13equiv_manager4findEj.exit.i - -_ZN4lean13equiv_manager4findEj.exit.i: ; preds = %_ZN4lean13equiv_manager4findEj.exit.i.preheader, %_ZN4lean13equiv_manager4findEj.exit.i - %.08.i20.i = phi i32 [ %181, %_ZN4lean13equiv_manager4findEj.exit.i ], [ %.08.i61, %_ZN4lean13equiv_manager4findEj.exit.i.preheader ] - %179 = zext i32 %.08.i20.i to i64 - %180 = getelementptr inbounds nuw %"struct.lean::equiv_manager::node", ptr %173, i64 %179 - %181 = load i32, ptr %180, align 4, !tbaa !11 - %.not.i21.i = icmp eq i32 %181, %.08.i20.i +_ZN4lean13equiv_manager4findEj.exit.i.preheader: ; preds = %174, %_ZN4lean13equiv_manager4findEj.exit.i + %.08.i20.i = phi i32 [ %180, %_ZN4lean13equiv_manager4findEj.exit.i ], [ %.08.i61, %174 ] + %178 = zext i32 %.08.i20.i to i64 + %179 = getelementptr inbounds nuw %"struct.lean::equiv_manager::node", ptr %173, i64 %178 + %180 = load i32, ptr %179, align 4, !tbaa !11 + %.not.i21.i = icmp eq i32 %180, %.08.i20.i br i1 %.not.i21.i, label %_ZN4lean13equiv_manager4findEj.exit22.i, label %_ZN4lean13equiv_manager4findEj.exit.i _ZN4lean13equiv_manager4findEj.exit22.i: ; preds = %_ZN4lean13equiv_manager4findEj.exit.i - %182 = getelementptr inbounds nuw %"struct.lean::equiv_manager::node", ptr %173, i64 %179 + %182 = getelementptr inbounds nuw %"struct.lean::equiv_manager::node", ptr %173, i64 %175 + %182 = getelementptr inbounds nuw %"struct.lean::equiv_manager::node", ptr %173, i64 %178 %.not.i70 = icmp eq i32 %.08.i.i, %.08.i20.i br i1 %.not.i70, label %_ZN4leaneqERKNS_3natES2_.exit, label %183 183: ; preds = %_ZN4lean13equiv_manager4findEj.exit22.i - %184 = getelementptr inbounds nuw i8, ptr %178, i64 4 + %184 = getelementptr inbounds nuw i8, ptr %181, i64 4 %185 = load i32, ptr %184, align 4, !tbaa !14 %186 = getelementptr inbounds nuw i8, ptr %182, i64 4 %187 = load i32, ptr %186, align 4, !tbaa !14 @@ -787,7 +781,7 @@ _ZN4lean13equiv_manager4findEj.exit22.i: ; preds = %_ZN4lean13equiv_man br i1 %188, label %189, label %190 189: ; preds = %183 - store i32 %.08.i20.i, ptr %178, align 4, !tbaa !11 + store i32 %.08.i20.i, ptr %181, align 4, !tbaa !11 br label %_ZN4leaneqERKNS_3natES2_.exit 190: ; preds = %183 @@ -889,25 +883,22 @@ define hidden void @_ZN4lean13equiv_manager9add_equivERKNS_4exprES3_(ptr noundef %.not.i.i = icmp eq i32 %10, %.08.i.i br i1 %.not.i.i, label %_ZN4lean13equiv_manager4findEj.exit.i.preheader, label %7 -_ZN4lean13equiv_manager4findEj.exit.i.preheader: ; preds = %7 - %11 = getelementptr inbounds nuw %"struct.lean::equiv_manager::node", ptr %6, i64 %8 - br label %_ZN4lean13equiv_manager4findEj.exit.i - -_ZN4lean13equiv_manager4findEj.exit.i: ; preds = %_ZN4lean13equiv_manager4findEj.exit.i.preheader, %_ZN4lean13equiv_manager4findEj.exit.i - %.08.i20.i = phi i32 [ %14, %_ZN4lean13equiv_manager4findEj.exit.i ], [ %5, %_ZN4lean13equiv_manager4findEj.exit.i.preheader ] - %12 = zext i32 %.08.i20.i to i64 - %13 = getelementptr inbounds nuw %"struct.lean::equiv_manager::node", ptr %6, i64 %12 - %14 = load i32, ptr %13, align 4, !tbaa !11 - %.not.i21.i = icmp eq i32 %14, %.08.i20.i +_ZN4lean13equiv_manager4findEj.exit.i.preheader: ; preds = %7, %_ZN4lean13equiv_manager4findEj.exit.i + %.08.i20.i = phi i32 [ %13, %_ZN4lean13equiv_manager4findEj.exit.i ], [ %5, %7 ] + %11 = zext i32 %.08.i20.i to i64 + %12 = getelementptr inbounds nuw %"struct.lean::equiv_manager::node", ptr %6, i64 %11 + %13 = load i32, ptr %13, align 4, !tbaa !11 + %.not.i21.i = icmp eq i32 %13, %.08.i20.i br i1 %.not.i21.i, label %_ZN4lean13equiv_manager4findEj.exit22.i, label %_ZN4lean13equiv_manager4findEj.exit.i _ZN4lean13equiv_manager4findEj.exit22.i: ; preds = %_ZN4lean13equiv_manager4findEj.exit.i - %15 = getelementptr inbounds nuw %"struct.lean::equiv_manager::node", ptr %6, i64 %12 + %15 = getelementptr inbounds nuw %"struct.lean::equiv_manager::node", ptr %6, i64 %8 + %15 = getelementptr inbounds nuw %"struct.lean::equiv_manager::node", ptr %6, i64 %11 %.not.i = icmp eq i32 %.08.i.i, %.08.i20.i br i1 %.not.i, label %_ZN4lean13equiv_manager5mergeEjj.exit, label %16 16: ; preds = %_ZN4lean13equiv_manager4findEj.exit22.i - %17 = getelementptr inbounds nuw i8, ptr %11, i64 4 + %17 = getelementptr inbounds nuw i8, ptr %14, i64 4 %18 = load i32, ptr %17, align 4, !tbaa !14 %19 = getelementptr inbounds nuw i8, ptr %15, i64 4 %20 = load i32, ptr %19, align 4, !tbaa !14 @@ -915,7 +906,7 @@ _ZN4lean13equiv_manager4findEj.exit22.i: ; preds = %_ZN4lean13equiv_man br i1 %21, label %22, label %23 22: ; preds = %16 - store i32 %.08.i20.i, ptr %11, align 4, !tbaa !11 + store i32 %.08.i20.i, ptr %14, align 4, !tbaa !11 br label %_ZN4lean13equiv_manager5mergeEjj.exit 23: ; preds = %16 diff --git a/bench/libcxx/optimized/abi_tag_on_virtual.ll b/bench/libcxx/optimized/abi_tag_on_virtual.ll index 9fd0db88e77..82611a0b714 100644 --- a/bench/libcxx/optimized/abi_tag_on_virtual.ll +++ b/bench/libcxx/optimized/abi_tag_on_virtual.ll @@ -1361,20 +1361,16 @@ _ZN5clang12ast_matchers8internal7MatcherINS_13CXXMethodDeclEED2Ev.exit: ; preds .lr.ph.i.i.i.i.preheader.i.i: ; preds = %54 %58 = mul nuw nsw i64 %2, 24 %59 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %58) #19 - to label %.noexc3.i unwind label %71 + to label %.lr.ph.i.i.i.i.i.i unwind label %71 -.noexc3.i: ; preds = %.lr.ph.i.i.i.i.preheader.i.i - %60 = getelementptr inbounds nuw %"class.clang::ast_matchers::internal::DynTypedMatcher", ptr %59, i64 %2 - br label %.lr.ph.i.i.i.i.i.i - -.lr.ph.i.i.i.i.i.i: ; preds = %_ZSt10_ConstructIN5clang12ast_matchers8internal15DynTypedMatcherEJRKNS2_7MatcherINS0_13CXXMethodDeclEEEEEvPT_DpOT0_.exit.i.i.i.i.i.i, %.noexc3.i - %.012.i.i.i.i.i.i = phi ptr [ %69, %_ZSt10_ConstructIN5clang12ast_matchers8internal15DynTypedMatcherEJRKNS2_7MatcherINS0_13CXXMethodDeclEEEEEvPT_DpOT0_.exit.i.i.i.i.i.i ], [ %59, %.noexc3.i ] - %.sroa.08.011.i.i.i.i.i.i = phi ptr [ %68, %_ZSt10_ConstructIN5clang12ast_matchers8internal15DynTypedMatcherEJRKNS2_7MatcherINS0_13CXXMethodDeclEEEEEvPT_DpOT0_.exit.i.i.i.i.i.i ], [ %1, %.noexc3.i ] - %61 = load ptr, ptr %.sroa.08.011.i.i.i.i.i.i, align 8, !tbaa !91 +.noexc3.i: ; preds = %.lr.ph.i.i.i.i.preheader.i.i, %_ZSt10_ConstructIN5clang12ast_matchers8internal15DynTypedMatcherEJRKNS2_7MatcherINS0_13CXXMethodDeclEEEEEvPT_DpOT0_.exit.i.i.i.i.i.i + %.012.i.i.i.i.i.i = phi ptr [ %68, %_ZSt10_ConstructIN5clang12ast_matchers8internal15DynTypedMatcherEJRKNS2_7MatcherINS0_13CXXMethodDeclEEEEEvPT_DpOT0_.exit.i.i.i.i.i.i ], [ %59, %.lr.ph.i.i.i.i.preheader.i.i ] + %.sroa.08.011.i.i.i.i.i.i = phi ptr [ %67, %_ZSt10_ConstructIN5clang12ast_matchers8internal15DynTypedMatcherEJRKNS2_7MatcherINS0_13CXXMethodDeclEEEEEvPT_DpOT0_.exit.i.i.i.i.i.i ], [ %1, %.lr.ph.i.i.i.i.preheader.i.i ] + %60 = load ptr, ptr %.sroa.08.011.i.i.i.i.i.i, align 8, !tbaa !91 tail call void @llvm.experimental.noalias.scope.decl(metadata !99) - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.012.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(24) %61, i64 12, i1 false) + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.012.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(24) %60, i64 12, i1 false) %62 = getelementptr inbounds nuw i8, ptr %.012.i.i.i.i.i.i, i64 16 - %63 = getelementptr inbounds nuw i8, ptr %61, i64 16 + %63 = getelementptr inbounds nuw i8, ptr %60, i64 16 %64 = load ptr, ptr %63, align 8, !tbaa !39, !noalias !99 store ptr %64, ptr %62, align 8, !tbaa !39, !alias.scope !99 %.not.i.i.i.i.i.i.i.i.i.i.i = icmp eq ptr %64, null @@ -1397,6 +1393,7 @@ _ZSt10_ConstructIN5clang12ast_matchers8internal15DynTypedMatcherEJRKNS2_7Matcher br label %.body .loopexit: ; preds = %_ZSt10_ConstructIN5clang12ast_matchers8internal15DynTypedMatcherEJRKNS2_7MatcherINS0_13CXXMethodDeclEEEEEvPT_DpOT0_.exit.i.i.i.i.i.i + %72 = getelementptr inbounds nuw %"class.clang::ast_matchers::internal::DynTypedMatcher", ptr %59, i64 %2 %73 = getelementptr inbounds nuw i8, ptr %6, i64 8 call void @llvm.lifetime.start.p0(ptr nonnull %7) call void @llvm.lifetime.start.p0(ptr nonnull %8) @@ -1405,7 +1402,7 @@ _ZSt10_ConstructIN5clang12ast_matchers8internal15DynTypedMatcherEJRKNS2_7Matcher store ptr %69, ptr %74, align 8, !tbaa !88 %75 = getelementptr inbounds nuw i8, ptr %9, i64 16 %76 = getelementptr inbounds nuw i8, ptr %6, i64 16 - store ptr %60, ptr %75, align 8, !tbaa !90 + store ptr %72, ptr %75, align 8, !tbaa !90 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %6, i8 0, i64 24, i1 false) invoke void @_ZN5clang12ast_matchers8internal15DynTypedMatcher17constructVariadicENS2_16VariadicOperatorENS_11ASTNodeKindESt6vectorIS2_SaIS2_EE(ptr dead_on_unwind nonnull writable sret(%"class.clang::ast_matchers::internal::DynTypedMatcher") align 8 %8, i32 noundef 0, i32 118, ptr noundef nonnull %9) to label %77 unwind label %139 @@ -1599,7 +1596,7 @@ _ZN5clang12ast_matchers8internal15DynTypedMatcherD2Ev.exit39: ; preds = %149, %1 br label %.body .body: ; preds = %71, %_ZN5clang12ast_matchers8internal15DynTypedMatcherD2Ev.exit39 - %.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %_ZN5clang12ast_matchers8internal15DynTypedMatcherD2Ev.exit39 ], [ %72, %71 ] + %.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %_ZN5clang12ast_matchers8internal15DynTypedMatcherD2Ev.exit39 ], [ %72, %70 ] call void @llvm.lifetime.end.p0(ptr nonnull %6) br label %common.resume diff --git a/bench/libcxx/optimized/header_exportable_declarations.ll b/bench/libcxx/optimized/header_exportable_declarations.ll index dc3369b330d..332664272ee 100644 --- a/bench/libcxx/optimized/header_exportable_declarations.ll +++ b/bench/libcxx/optimized/header_exportable_declarations.ll @@ -8133,20 +8133,16 @@ _ZN5clang12ast_matchers8internal7MatcherINS_10FriendDeclEED2Ev.exit: ; preds = % .lr.ph.i.i.i.i.preheader.i.i: ; preds = %54 %58 = mul nuw nsw i64 %2, 24 %59 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %58) #25 - to label %.noexc3.i unwind label %71 + to label %.lr.ph.i.i.i.i.i.i unwind label %71 -.noexc3.i: ; preds = %.lr.ph.i.i.i.i.preheader.i.i - %60 = getelementptr inbounds nuw %"class.clang::ast_matchers::internal::DynTypedMatcher", ptr %59, i64 %2 - br label %.lr.ph.i.i.i.i.i.i - -.lr.ph.i.i.i.i.i.i: ; preds = %_ZSt10_ConstructIN5clang12ast_matchers8internal15DynTypedMatcherEJRKNS2_7MatcherINS0_10FriendDeclEEEEEvPT_DpOT0_.exit.i.i.i.i.i.i, %.noexc3.i - %.012.i.i.i.i.i.i = phi ptr [ %69, %_ZSt10_ConstructIN5clang12ast_matchers8internal15DynTypedMatcherEJRKNS2_7MatcherINS0_10FriendDeclEEEEEvPT_DpOT0_.exit.i.i.i.i.i.i ], [ %59, %.noexc3.i ] - %.sroa.08.011.i.i.i.i.i.i = phi ptr [ %68, %_ZSt10_ConstructIN5clang12ast_matchers8internal15DynTypedMatcherEJRKNS2_7MatcherINS0_10FriendDeclEEEEEvPT_DpOT0_.exit.i.i.i.i.i.i ], [ %1, %.noexc3.i ] - %61 = load ptr, ptr %.sroa.08.011.i.i.i.i.i.i, align 8, !tbaa !321 +.noexc3.i: ; preds = %.lr.ph.i.i.i.i.preheader.i.i, %_ZSt10_ConstructIN5clang12ast_matchers8internal15DynTypedMatcherEJRKNS2_7MatcherINS0_10FriendDeclEEEEEvPT_DpOT0_.exit.i.i.i.i.i.i + %.012.i.i.i.i.i.i = phi ptr [ %68, %_ZSt10_ConstructIN5clang12ast_matchers8internal15DynTypedMatcherEJRKNS2_7MatcherINS0_10FriendDeclEEEEEvPT_DpOT0_.exit.i.i.i.i.i.i ], [ %59, %.lr.ph.i.i.i.i.preheader.i.i ] + %.sroa.08.011.i.i.i.i.i.i = phi ptr [ %67, %_ZSt10_ConstructIN5clang12ast_matchers8internal15DynTypedMatcherEJRKNS2_7MatcherINS0_10FriendDeclEEEEEvPT_DpOT0_.exit.i.i.i.i.i.i ], [ %1, %.lr.ph.i.i.i.i.preheader.i.i ] + %60 = load ptr, ptr %.sroa.08.011.i.i.i.i.i.i, align 8, !tbaa !321 tail call void @llvm.experimental.noalias.scope.decl(metadata !323) - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.012.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(24) %61, i64 12, i1 false) + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.012.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(24) %60, i64 12, i1 false) %62 = getelementptr inbounds nuw i8, ptr %.012.i.i.i.i.i.i, i64 16 - %63 = getelementptr inbounds nuw i8, ptr %61, i64 16 + %63 = getelementptr inbounds nuw i8, ptr %60, i64 16 %64 = load ptr, ptr %63, align 8, !tbaa !165, !noalias !323 store ptr %64, ptr %62, align 8, !tbaa !165, !alias.scope !323 %.not.i.i.i.i.i.i.i.i.i.i.i = icmp eq ptr %64, null @@ -8169,6 +8165,7 @@ _ZSt10_ConstructIN5clang12ast_matchers8internal15DynTypedMatcherEJRKNS2_7Matcher br label %.body .loopexit: ; preds = %_ZSt10_ConstructIN5clang12ast_matchers8internal15DynTypedMatcherEJRKNS2_7MatcherINS0_10FriendDeclEEEEEvPT_DpOT0_.exit.i.i.i.i.i.i + %72 = getelementptr inbounds nuw %"class.clang::ast_matchers::internal::DynTypedMatcher", ptr %59, i64 %2 %73 = getelementptr inbounds nuw i8, ptr %6, i64 8 call void @llvm.lifetime.start.p0(ptr nonnull %7) call void @llvm.lifetime.start.p0(ptr nonnull %8) @@ -8177,7 +8174,7 @@ _ZSt10_ConstructIN5clang12ast_matchers8internal15DynTypedMatcherEJRKNS2_7Matcher store ptr %69, ptr %74, align 8, !tbaa !230 %75 = getelementptr inbounds nuw i8, ptr %9, i64 16 %76 = getelementptr inbounds nuw i8, ptr %6, i64 16 - store ptr %60, ptr %75, align 8, !tbaa !232 + store ptr %72, ptr %75, align 8, !tbaa !232 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %6, i8 0, i64 24, i1 false) invoke void @_ZN5clang12ast_matchers8internal15DynTypedMatcher17constructVariadicENS2_16VariadicOperatorENS_11ASTNodeKindESt6vectorIS2_SaIS2_EE(ptr dead_on_unwind nonnull writable sret(%"class.clang::ast_matchers::internal::DynTypedMatcher") align 8 %8, i32 noundef 0, i32 175, ptr noundef nonnull %9) to label %77 unwind label %139 @@ -8371,7 +8368,7 @@ _ZN5clang12ast_matchers8internal15DynTypedMatcherD2Ev.exit39: ; preds = %149, %1 br label %.body .body: ; preds = %71, %_ZN5clang12ast_matchers8internal15DynTypedMatcherD2Ev.exit39 - %.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %_ZN5clang12ast_matchers8internal15DynTypedMatcherD2Ev.exit39 ], [ %72, %71 ] + %.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %_ZN5clang12ast_matchers8internal15DynTypedMatcherD2Ev.exit39 ], [ %72, %70 ] call void @llvm.lifetime.end.p0(ptr nonnull %6) br label %common.resume @@ -8799,20 +8796,16 @@ _ZN5clang12ast_matchers8internal7MatcherINS_9NamedDeclEED2Ev.exit: ; preds = %_Z .lr.ph.i.i.i.i.preheader.i.i: ; preds = %54 %58 = mul nuw nsw i64 %2, 24 %59 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %58) #25 - to label %.noexc3.i unwind label %71 - -.noexc3.i: ; preds = %.lr.ph.i.i.i.i.preheader.i.i - %60 = getelementptr inbounds nuw %"class.clang::ast_matchers::internal::DynTypedMatcher", ptr %59, i64 %2 - br label %.lr.ph.i.i.i.i.i.i + to label %.lr.ph.i.i.i.i.i.i unwind label %71 -.lr.ph.i.i.i.i.i.i: ; preds = %_ZSt10_ConstructIN5clang12ast_matchers8internal15DynTypedMatcherEJRKNS2_7MatcherINS0_9NamedDeclEEEEEvPT_DpOT0_.exit.i.i.i.i.i.i, %.noexc3.i - %.012.i.i.i.i.i.i = phi ptr [ %69, %_ZSt10_ConstructIN5clang12ast_matchers8internal15DynTypedMatcherEJRKNS2_7MatcherINS0_9NamedDeclEEEEEvPT_DpOT0_.exit.i.i.i.i.i.i ], [ %59, %.noexc3.i ] - %.sroa.08.011.i.i.i.i.i.i = phi ptr [ %68, %_ZSt10_ConstructIN5clang12ast_matchers8internal15DynTypedMatcherEJRKNS2_7MatcherINS0_9NamedDeclEEEEEvPT_DpOT0_.exit.i.i.i.i.i.i ], [ %1, %.noexc3.i ] - %61 = load ptr, ptr %.sroa.08.011.i.i.i.i.i.i, align 8, !tbaa !327 +.noexc3.i: ; preds = %.lr.ph.i.i.i.i.preheader.i.i, %_ZSt10_ConstructIN5clang12ast_matchers8internal15DynTypedMatcherEJRKNS2_7MatcherINS0_9NamedDeclEEEEEvPT_DpOT0_.exit.i.i.i.i.i.i + %.012.i.i.i.i.i.i = phi ptr [ %68, %_ZSt10_ConstructIN5clang12ast_matchers8internal15DynTypedMatcherEJRKNS2_7MatcherINS0_9NamedDeclEEEEEvPT_DpOT0_.exit.i.i.i.i.i.i ], [ %59, %.lr.ph.i.i.i.i.preheader.i.i ] + %.sroa.08.011.i.i.i.i.i.i = phi ptr [ %67, %_ZSt10_ConstructIN5clang12ast_matchers8internal15DynTypedMatcherEJRKNS2_7MatcherINS0_9NamedDeclEEEEEvPT_DpOT0_.exit.i.i.i.i.i.i ], [ %1, %.lr.ph.i.i.i.i.preheader.i.i ] + %60 = load ptr, ptr %.sroa.08.011.i.i.i.i.i.i, align 8, !tbaa !327 tail call void @llvm.experimental.noalias.scope.decl(metadata !347) - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.012.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(24) %61, i64 12, i1 false) + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.012.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(24) %60, i64 12, i1 false) %62 = getelementptr inbounds nuw i8, ptr %.012.i.i.i.i.i.i, i64 16 - %63 = getelementptr inbounds nuw i8, ptr %61, i64 16 + %63 = getelementptr inbounds nuw i8, ptr %60, i64 16 %64 = load ptr, ptr %63, align 8, !tbaa !165, !noalias !347 store ptr %64, ptr %62, align 8, !tbaa !165, !alias.scope !347 %.not.i.i.i.i.i.i.i.i.i.i.i = icmp eq ptr %64, null @@ -8835,6 +8828,7 @@ _ZSt10_ConstructIN5clang12ast_matchers8internal15DynTypedMatcherEJRKNS2_7Matcher br label %.body .loopexit: ; preds = %_ZSt10_ConstructIN5clang12ast_matchers8internal15DynTypedMatcherEJRKNS2_7MatcherINS0_9NamedDeclEEEEEvPT_DpOT0_.exit.i.i.i.i.i.i + %72 = getelementptr inbounds nuw %"class.clang::ast_matchers::internal::DynTypedMatcher", ptr %59, i64 %2 %73 = getelementptr inbounds nuw i8, ptr %6, i64 8 call void @llvm.lifetime.start.p0(ptr nonnull %7) call void @llvm.lifetime.start.p0(ptr nonnull %8) @@ -8843,7 +8837,7 @@ _ZSt10_ConstructIN5clang12ast_matchers8internal15DynTypedMatcherEJRKNS2_7Matcher store ptr %69, ptr %74, align 8, !tbaa !230 %75 = getelementptr inbounds nuw i8, ptr %9, i64 16 %76 = getelementptr inbounds nuw i8, ptr %6, i64 16 - store ptr %60, ptr %75, align 8, !tbaa !232 + store ptr %72, ptr %75, align 8, !tbaa !232 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %6, i8 0, i64 24, i1 false) invoke void @_ZN5clang12ast_matchers8internal15DynTypedMatcher17constructVariadicENS2_16VariadicOperatorENS_11ASTNodeKindESt6vectorIS2_SaIS2_EE(ptr dead_on_unwind nonnull writable sret(%"class.clang::ast_matchers::internal::DynTypedMatcher") align 8 %8, i32 noundef 0, i32 96, ptr noundef nonnull %9) to label %77 unwind label %139 @@ -9037,7 +9031,7 @@ _ZN5clang12ast_matchers8internal15DynTypedMatcherD2Ev.exit39: ; preds = %149, %1 br label %.body .body: ; preds = %71, %_ZN5clang12ast_matchers8internal15DynTypedMatcherD2Ev.exit39 - %.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %_ZN5clang12ast_matchers8internal15DynTypedMatcherD2Ev.exit39 ], [ %72, %71 ] + %.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %_ZN5clang12ast_matchers8internal15DynTypedMatcherD2Ev.exit39 ], [ %72, %70 ] call void @llvm.lifetime.end.p0(ptr nonnull %6) br label %common.resume diff --git a/bench/libigl/optimized/comb_frame_field.ll b/bench/libigl/optimized/comb_frame_field.ll index ec9388a51d9..2724b85aa5e 100644 --- a/bench/libigl/optimized/comb_frame_field.ll +++ b/bench/libigl/optimized/comb_frame_field.ll @@ -514,7 +514,6 @@ _ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE6resizeEll.exi ._crit_edge.i: ; preds = %.preheader.us.i.i.i.i.i.i.i.i.i.i.i.i %53 = icmp eq i64 %46, 3 - %spec.select = zext i1 %53 to i64 %spec.select325 = select i1 %53, i64 0, i64 %46 %spec.select.sroa.sel.idx.sroa.sel.idx = select i1 %53, i64 8, i64 0 %spec.select.sroa.sel.idx.sroa.sel = getelementptr inbounds nuw i8, ptr %12, i64 %spec.select.sroa.sel.idx.sroa.sel.idx @@ -533,11 +532,15 @@ _ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE6resizeEll.exi store double %59, ptr %55, align 8, !tbaa !15 %60 = add nuw nsw i64 %.05.i.i.i.i.i.i.i.i.i.i.i, 1 %exitcond.not.i.i.i.i.i.i.i.i.i.i.i = icmp eq i64 %60, %46 - br i1 %exitcond.not.i.i.i.i.i.i.i.i.i.i.i, label %._crit_edge.i.thread, label %.lr.ph.i.i.i.i.i.i.i.i.i.i.i, !llvm.loop !59 + br i1 %exitcond.not.i.i.i.i.i.i.i.i.i.i.i, label %._crit_edge.i.thread.loopexit, label %.lr.ph.i.i.i.i.i.i.i.i.i.i.i, !llvm.loop !59 + +._crit_edge.i.thread.loopexit: ; preds = %.lr.ph.i.i.i.i.i.i.i.i.i.i.i + %spec.select = zext i1 %53 to i64 + br label %._crit_edge.i.thread -._crit_edge.i.thread: ; preds = %.lr.ph.i.i.i.i.i.i.i.i.i.i.i, %41 - %61 = phi i64 [ %46, %41 ], [ %spec.select325, %.lr.ph.i.i.i.i.i.i.i.i.i.i.i ] - %.sroa.7295.0307 = phi i64 [ 0, %41 ], [ %spec.select, %.lr.ph.i.i.i.i.i.i.i.i.i.i.i ] +._crit_edge.i.thread: ; preds = %._crit_edge.i.thread.loopexit, %41 + %61 = phi i64 [ %46, %41 ], [ %spec.select325, %._crit_edge.i.thread.loopexit ] + %.sroa.7295.0307 = phi i64 [ 0, %41 ], [ %spec.select, %._crit_edge.i.thread.loopexit ] %62 = add nsw i64 %61, %46 %63 = load ptr, ptr %3, align 8, !tbaa !50, !noalias !60 %64 = getelementptr inbounds nuw double, ptr %63, i64 %43 diff --git a/bench/libigl/optimized/hausdorff.ll b/bench/libigl/optimized/hausdorff.ll index 51c51892350..11aa621ebaa 100644 --- a/bench/libigl/optimized/hausdorff.ll +++ b/bench/libigl/optimized/hausdorff.ll @@ -5683,13 +5683,16 @@ _ZNKSt6vectorISt4pairIN4CGAL7Point_3INS1_16Simple_cartesianIdEEEEN9__gnu_cxx17__ br i1 %.not.i.i.i33.i, label %.lr.ph76, label %.lr.ph.i.i.i30.i, !llvm.loop !460 .lr.ph76: ; preds = %.lr.ph.i.i.i30.i - %199 = getelementptr inbounds nuw i8, ptr %195, i64 %191 - %200 = load ptr, ptr %8, align 8, !tbaa !376 + %199 = load ptr, ptr %8, align 8, !tbaa !376 br label %234 -.preheader: ; preds = %234, %186 - %.sroa.13.0113 = phi ptr [ null, %186 ], [ %199, %234 ] - %.sroa.037.0112 = phi ptr [ null, %186 ], [ %195, %234 ] +.preheader: ; preds = %234 + %200 = getelementptr inbounds nuw i8, ptr %195, i64 %191 + br label %.preheader + +.preheader: ; preds = %.preheader.loopexit, %186 + %.sroa.13.0113 = phi ptr [ null, %186 ], [ %200, %.preheader.loopexit ] + %.sroa.037.0112 = phi ptr [ null, %186 ], [ %195, %.preheader.loopexit ] %201 = getelementptr inbounds nuw i8, ptr %0, i64 152 %202 = getelementptr inbounds nuw i8, ptr %0, i64 120 %203 = load ptr, ptr %201, align 8, !tbaa !407 @@ -5734,7 +5737,7 @@ _ZNK5boost9container3dtl14deque_iteratorIPN4CGAL17Kd_tree_leaf_nodeINS3_21Search 234: ; preds = %.lr.ph76, %234 %.01875 = phi i64 [ 0, %.lr.ph76 ], [ %241, %234 ] - %235 = getelementptr inbounds nuw ptr, ptr %200, i64 %.01875 + %235 = getelementptr inbounds nuw ptr, ptr %199, i64 %.01875 %236 = load ptr, ptr %235, align 8, !tbaa !398 %237 = getelementptr inbounds nuw %"struct.std::pair", ptr %195, i64 %.01875 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %237, ptr noundef nonnull align 8 dereferenceable(32) %236, i64 24, i1 false) @@ -8689,8 +8692,8 @@ define linkonce_odr dso_local void @_ZNSt6vectorIdSaIdEE17_M_default_appendEm(pt _ZSt6fill_nIPdmdET_S1_T0_RKT1_.exit.loopexit.i.i.i: ; preds = %19 %.idx.i.i.i.i.i = shl nuw nsw i64 %21, 3 - tail call void @llvm.memset.p0.i64(ptr align 8 %20, i8 0, i64 %.idx.i.i.i.i.i, i1 false), !tbaa !16 %23 = getelementptr inbounds nuw i8, ptr %20, i64 %.idx.i.i.i.i.i + tail call void @llvm.memset.p0.i64(ptr align 8 %20, i8 0, i64 %.idx.i.i.i.i.i, i1 false), !tbaa !16 br label %_ZSt27__uninitialized_default_n_aIPdmdET_S1_T0_RSaIT1_E.exit _ZSt27__uninitialized_default_n_aIPdmdET_S1_T0_RSaIT1_E.exit: ; preds = %19, %_ZSt6fill_nIPdmdET_S1_T0_RKT1_.exit.loopexit.i.i.i @@ -9130,10 +9133,10 @@ define linkonce_odr dso_local void @_ZSt16__introsort_loopIN9__gnu_cxx17__normal %21 = load double, ptr %20, align 8, !tbaa !578 %22 = fcmp olt double %21, %18 %23 = getelementptr inbounds nuw i8, ptr %.sroa.014.1.us.us.i.i.us, i64 16 - br i1 %22, label %19, label %.preheader.split.us.us.i.i.preheader.us, !llvm.loop !587 + br i1 %22, label %19, label %.preheader.split.us.us.i.i.us, !llvm.loop !587 -.preheader.split.us.us.i.i.us: ; preds = %.preheader.split.us.us.i.i.preheader.us, %.preheader.split.us.us.i.i.us - %.sroa.011.0.pn.us.us.i.i.us = phi ptr [ %.sroa.011.1.us.us.i.i.us, %.preheader.split.us.us.i.i.us ], [ %.sroa.011.0.us.i.i.us, %.preheader.split.us.us.i.i.preheader.us ] +.preheader.split.us.us.i.i.us: ; preds = %19, %.preheader.split.us.us.i.i.us + %.sroa.011.0.pn.us.us.i.i.us = phi ptr [ %.sroa.011.1.us.us.i.i.us, %.preheader.split.us.us.i.i.us ], [ %.sroa.011.0.us.i.i.us, %19 ] %.sroa.011.1.us.us.i.i.us = getelementptr inbounds i8, ptr %.sroa.011.0.pn.us.us.i.i.us, i64 -16 %24 = getelementptr inbounds i8, ptr %.sroa.011.0.pn.us.us.i.i.us, i64 -8 %25 = load double, ptr %24, align 8, !tbaa !578 @@ -9146,18 +9149,15 @@ define linkonce_odr dso_local void @_ZSt16__introsort_loopIN9__gnu_cxx17__normal 28: ; preds = %.split20.us.us.i.i.us %29 = getelementptr inbounds i8, ptr %.sroa.011.0.pn.us.us.i.i.us, i64 -8 - %30 = load ptr, ptr %.sroa.014.1.us.us.i.i.us, align 8, !tbaa !398 - %31 = load ptr, ptr %.sroa.011.1.us.us.i.i.us, align 8, !tbaa !398 - store ptr %31, ptr %.sroa.014.1.us.us.i.i.us, align 8, !tbaa !398 - store ptr %30, ptr %.sroa.011.1.us.us.i.i.us, align 8, !tbaa !398 - store double %25, ptr %32, align 8, !tbaa !16 + %30 = getelementptr inbounds nuw i8, ptr %.sroa.014.1.us.us.i.i.us, i64 8 + %31 = load ptr, ptr %.sroa.014.1.us.us.i.i.us, align 8, !tbaa !398 + %32 = load ptr, ptr %.sroa.011.1.us.us.i.i.us, align 8, !tbaa !398 + store ptr %32, ptr %.sroa.014.1.us.us.i.i.us, align 8, !tbaa !398 + store ptr %31, ptr %.sroa.011.1.us.us.i.i.us, align 8, !tbaa !398 + store double %25, ptr %30, align 8, !tbaa !16 store double %21, ptr %29, align 8, !tbaa !16 br label %.split.us.us.i.i.us, !llvm.loop !589 -.preheader.split.us.us.i.i.preheader.us: ; preds = %19 - %32 = getelementptr inbounds nuw i8, ptr %.sroa.014.1.us.us.i.i.us, i64 8 - br label %.preheader.split.us.us.i.i.us - _ZSt27__unguarded_partition_pivotIN9__gnu_cxx17__normal_iteratorIPSt4pairIPKS2_IN4CGAL7Point_3INS3_16Simple_cartesianIdEEEENS1_IPNS3_10Triangle_3IS6_EESt6vectorIS9_SaIS9_EEEEEdESB_ISI_SaISI_EEEENS0_5__ops15_Iter_comp_iterINS3_8internal17K_neighbor_searchINS3_21Search_traits_adapterISF_NS3_26First_of_pair_property_mapISF_EENS3_13AABB_traits_3IS6_NS3_25AABB_triangle_primitive_3IS6_SE_St17integral_constantIbLb0EEEENS3_7DefaultEEEEENS3_16Distance_adapterISF_ST_NS3_18Euclidean_distanceIS10_EEEENS3_16Sliding_midpointIS11_NS3_15Plane_separatorIdEEEENS3_7Kd_treeIS11_S19_SW_IbLb1EESX_EEE15Distance_largerEEEET_S1G_S1G_T0_.exit.loopexit.us: ; preds = %.split20.us.us.i.i.us %33 = add nsw i64 %.036.us, -1 tail call void @_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPSt4pairIPKS2_IN4CGAL7Point_3INS3_16Simple_cartesianIdEEEENS1_IPNS3_10Triangle_3IS6_EESt6vectorIS9_SaIS9_EEEEEdESB_ISI_SaISI_EEEElNS0_5__ops15_Iter_comp_iterINS3_8internal17K_neighbor_searchINS3_21Search_traits_adapterISF_NS3_26First_of_pair_property_mapISF_EENS3_13AABB_traits_3IS6_NS3_25AABB_triangle_primitive_3IS6_SE_St17integral_constantIbLb0EEEENS3_7DefaultEEEEENS3_16Distance_adapterISF_ST_NS3_18Euclidean_distanceIS10_EEEENS3_16Sliding_midpointIS11_NS3_15Plane_separatorIdEEEENS3_7Kd_treeIS11_S19_SW_IbLb1EESX_EEE15Distance_largerEEEEvT_S1G_T0_T1_(ptr nonnull %.sroa.014.1.us.us.i.i.us, ptr %storemerge35.us, i64 noundef %33, i8 %.fr33.i.i) @@ -9217,8 +9217,8 @@ _ZSt27__unguarded_partition_pivotIN9__gnu_cxx17__normal_iteratorIPSt4pairIPKS2_I br label %.split.i.i .split.i.i: ; preds = %.split.i.i.preheader, %66 - %.sroa.011.0.i.i = phi ptr [ %.sroa.011.1.i.i, %66 ], [ %storemerge35, %.split.i.i.preheader ] - %.sroa.014.0.i.i = phi ptr [ %60, %66 ], [ %10, %.split.i.i.preheader ] + %.sroa.011.0.i.i = phi ptr [ %.sroa.011.1.i.i, %65 ], [ %storemerge35, %.split.i.i.preheader ] + %.sroa.014.0.i.i = phi ptr [ %60, %65 ], [ %10, %.split.i.i.preheader ] %55 = load double, ptr %12, align 8, !tbaa !578 br label %56 @@ -9228,14 +9228,10 @@ _ZSt27__unguarded_partition_pivotIN9__gnu_cxx17__normal_iteratorIPSt4pairIPKS2_I %58 = load double, ptr %57, align 8, !tbaa !578 %59 = fcmp olt double %55, %58 %60 = getelementptr inbounds nuw i8, ptr %.sroa.014.1.i.i, i64 16 - br i1 %59, label %56, label %.preheader.split.i.i.preheader, !llvm.loop !587 - -.preheader.split.i.i.preheader: ; preds = %56 - %61 = getelementptr inbounds nuw i8, ptr %.sroa.014.1.i.i, i64 8 - br label %.preheader.split.i.i + br i1 %59, label %56, label %.preheader.split.i.i, !llvm.loop !587 -.preheader.split.i.i: ; preds = %.preheader.split.i.i.preheader, %.preheader.split.i.i - %.sroa.011.0.pn.i.i = phi ptr [ %.sroa.011.1.i.i, %.preheader.split.i.i ], [ %.sroa.011.0.i.i, %.preheader.split.i.i.preheader ] +.preheader.split.i.i: ; preds = %56, %.preheader.split.i.i + %.sroa.011.0.pn.i.i = phi ptr [ %.sroa.011.1.i.i, %.preheader.split.i.i ], [ %.sroa.011.0.i.i, %56 ] %.sroa.011.1.i.i = getelementptr inbounds i8, ptr %.sroa.011.0.pn.i.i, i64 -16 %62 = getelementptr inbounds i8, ptr %.sroa.011.0.pn.i.i, i64 -8 %63 = load double, ptr %62, align 8, !tbaa !578 @@ -9248,11 +9244,12 @@ _ZSt27__unguarded_partition_pivotIN9__gnu_cxx17__normal_iteratorIPSt4pairIPKS2_I 66: ; preds = %.split20.i.i %67 = getelementptr inbounds i8, ptr %.sroa.011.0.pn.i.i, i64 -8 + %67 = getelementptr inbounds nuw i8, ptr %.sroa.014.1.i.i, i64 8 %68 = load ptr, ptr %.sroa.014.1.i.i, align 8, !tbaa !398 %69 = load ptr, ptr %.sroa.011.1.i.i, align 8, !tbaa !398 store ptr %69, ptr %.sroa.014.1.i.i, align 8, !tbaa !398 store ptr %68, ptr %.sroa.011.1.i.i, align 8, !tbaa !398 - store double %63, ptr %61, align 8, !tbaa !16 + store double %63, ptr %67, align 8, !tbaa !16 store double %58, ptr %67, align 8, !tbaa !16 br label %.split.i.i, !llvm.loop !589 diff --git a/bench/libphonenumber/optimized/generate_geocoding_data.ll b/bench/libphonenumber/optimized/generate_geocoding_data.ll index 49cd1920dcf..2f755ab2aaf 100644 --- a/bench/libphonenumber/optimized/generate_geocoding_data.ll +++ b/bench/libphonenumber/optimized/generate_geocoding_data.ll @@ -6652,24 +6652,21 @@ define linkonce_odr dso_local void @_ZN4absl7debian218container_internal10btree_ %13 = icmp eq i8 %12, 0 br i1 %13, label %.loopexit.sink.split, label %.lr.ph.preheader -.lr.ph.preheader: ; preds = %10 - %14 = load ptr, ptr %0, align 8, !tbaa !129 - br label %.lr.ph - -.lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph - %.04964 = phi ptr [ %16, %.lr.ph ], [ %0, %.lr.ph.preheader ] - %15 = getelementptr inbounds nuw i8, ptr %.04964, i64 256 - %16 = load ptr, ptr %15, align 8, !tbaa !129 - %17 = getelementptr inbounds nuw i8, ptr %16, i64 11 - %18 = load i8, ptr %17, align 1, !tbaa !16 - %.not56 = icmp eq i8 %18, 0 +.lr.ph.preheader: ; preds = %10, %.lr.ph + %.04964 = phi ptr [ %15, %.lr.ph ], [ %0, %10 ] + %14 = getelementptr inbounds nuw i8, ptr %.04964, i64 256 + %15 = load ptr, ptr %14, align 8, !tbaa !129 + %16 = getelementptr inbounds nuw i8, ptr %15, i64 11 + %17 = load i8, ptr %16, align 1, !tbaa !16 + %.not56 = icmp eq i8 %17, 0 br i1 %.not56, label %.lr.ph, label %._crit_edge, !llvm.loop !245 ._crit_edge: ; preds = %.lr.ph - %19 = getelementptr inbounds nuw i8, ptr %16, i64 8 + %18 = load ptr, ptr %0, align 8, !tbaa !129 + %19 = getelementptr inbounds nuw i8, ptr %15, i64 8 %20 = load i8, ptr %19, align 1, !tbaa !16 %21 = zext i8 %20 to i32 - %22 = load ptr, ptr %16, align 8, !tbaa !129 + %22 = load ptr, ptr %15, align 8, !tbaa !129 br label %23 23: ; preds = %.backedge, %._crit_edge @@ -6728,7 +6725,7 @@ define linkonce_odr dso_local void @_ZN4absl7debian218container_internal10btree_ %48 = load i8, ptr %47, align 1, !tbaa !16 %49 = load ptr, ptr %.3, align 8, !tbaa !129 tail call void @_ZdlPvm(ptr noundef nonnull %.3, i64 noundef 752) #28 - %50 = icmp eq ptr %49, %14 + %50 = icmp eq ptr %49, %18 br i1 %50, label %.loopexit, label %51 51: ; preds = %.preheader59 @@ -6807,24 +6804,21 @@ _ZN4absl7debian218container_internal10btree_nodeINS1_10map_paramsIiNSt7__cxx1112 %27 = icmp eq i8 %6, 0 br i1 %27, label %.loopexit.sink.split, label %.lr.ph.preheader -.lr.ph.preheader: ; preds = %26 - %28 = load ptr, ptr %0, align 8, !tbaa !64 - br label %.lr.ph - -.lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph - %.04982 = phi ptr [ %30, %.lr.ph ], [ %0, %.lr.ph.preheader ] - %29 = getelementptr inbounds nuw i8, ptr %.04982, i64 256 - %30 = load ptr, ptr %29, align 8, !tbaa !64 - %31 = getelementptr inbounds nuw i8, ptr %30, i64 11 - %32 = load i8, ptr %31, align 1, !tbaa !16 - %.not74 = icmp eq i8 %32, 0 +.lr.ph.preheader: ; preds = %26, %.lr.ph + %.04982 = phi ptr [ %29, %.lr.ph ], [ %0, %26 ] + %28 = getelementptr inbounds nuw i8, ptr %.04982, i64 256 + %29 = load ptr, ptr %28, align 8, !tbaa !64 + %30 = getelementptr inbounds nuw i8, ptr %29, i64 11 + %31 = load i8, ptr %30, align 1, !tbaa !16 + %.not74 = icmp eq i8 %31, 0 br i1 %.not74, label %.lr.ph, label %._crit_edge, !llvm.loop !250 ._crit_edge: ; preds = %.lr.ph - %33 = getelementptr inbounds nuw i8, ptr %30, i64 8 + %33 = load ptr, ptr %0, align 8, !tbaa !64 + %33 = getelementptr inbounds nuw i8, ptr %29, i64 8 %34 = load i8, ptr %33, align 1, !tbaa !16 %35 = zext i8 %34 to i32 - %36 = load ptr, ptr %30, align 8, !tbaa !64 + %36 = load ptr, ptr %29, align 8, !tbaa !64 br label %37 37: ; preds = %.backedge, %._crit_edge @@ -6943,7 +6937,7 @@ _ZN4absl7debian218container_internal13common_paramsIiSt4lessIiESaISt4pairIKiNSt7 _ZN4absl7debian218container_internal10btree_nodeINS1_10map_paramsIiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIiESaISt4pairIKiS9_EELi256ELb0EEEE15value_destroy_nEhhPSF_.exit72: ; preds = %_ZN4absl7debian218container_internal13common_paramsIiSt4lessIiESaISt4pairIKiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEELi256ELb0ENS1_15map_slot_policyIiSC_EEE7destroyEPSE_PNS1_13map_slot_typeIiSC_EE.exit.i69, %.preheader77 tail call void @_ZdlPvm(ptr noundef nonnull %.3, i64 noundef 312) #28 - %92 = icmp eq ptr %80, %28 + %92 = icmp eq ptr %80, %32 br i1 %92, label %.loopexit, label %93 93: ; preds = %_ZN4absl7debian218container_internal10btree_nodeINS1_10map_paramsIiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIiESaISt4pairIKiS9_EELi256ELb0EEEE15value_destroy_nEhhPSF_.exit72 @@ -7097,12 +7091,8 @@ _ZN4absl7debian218container_internal10btree_nodeINS1_10map_paramsINSt7__cxx1112b %31 = icmp eq i8 %6, 0 br i1 %31, label %.loopexit.sink.split, label %.lr.ph.preheader -.lr.ph.preheader: ; preds = %30 - %32 = load ptr, ptr %0, align 8, !tbaa !139 - br label %.lr.ph - -.lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph - %.04988 = phi ptr [ %34, %.lr.ph ], [ %0, %.lr.ph.preheader ] +.lr.ph: ; preds = %30, %.lr.ph.preheader + %.04988 = phi ptr [ %34, %.lr.ph ], [ %0, %30 ] %33 = getelementptr inbounds nuw i8, ptr %.04988, i64 272 %34 = load ptr, ptr %33, align 8, !tbaa !139 %35 = getelementptr inbounds nuw i8, ptr %34, i64 11 @@ -7111,7 +7101,8 @@ _ZN4absl7debian218container_internal10btree_nodeINS1_10map_paramsINSt7__cxx1112b br i1 %.not80, label %.lr.ph, label %._crit_edge, !llvm.loop !259 ._crit_edge: ; preds = %.lr.ph - %37 = getelementptr inbounds nuw i8, ptr %34, i64 8 + %36 = load ptr, ptr %0, align 8, !tbaa !139 + %37 = getelementptr inbounds nuw i8, ptr %33, i64 8 %38 = load i8, ptr %37, align 1, !tbaa !16 %39 = zext i8 %38 to i32 %40 = load ptr, ptr %34, align 8, !tbaa !139 @@ -7256,7 +7247,7 @@ _ZN4absl7debian218container_internal13common_paramsINSt7__cxx1112basic_stringIcS _ZN4absl7debian218container_internal10btree_nodeINS1_10map_paramsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES9_St4lessIS9_ESaISt4pairIKS9_S9_EELi256ELb0EEEE15value_destroy_nEhhPSF_.exit78: ; preds = %_ZN4absl7debian218container_internal13common_paramsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIS8_ESaISt4pairIKS8_S8_EELi256ELb0ENS1_15map_slot_policyIS8_S8_EEE7destroyEPSE_PNS1_13map_slot_typeIS8_S8_EE.exit.i74, %.preheader83 tail call void @_ZdlPvm(ptr noundef nonnull %.3, i64 noundef 312) #28 - %105 = icmp eq ptr %88, %32 + %105 = icmp eq ptr %88, %36 br i1 %105, label %.loopexit, label %106 106: ; preds = %_ZN4absl7debian218container_internal10btree_nodeINS1_10map_paramsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES9_St4lessIS9_ESaISt4pairIKS9_S9_EELi256ELb0EEEE15value_destroy_nEhhPSF_.exit78 diff --git a/bench/libquic/optimized/bio.ll b/bench/libquic/optimized/bio.ll index eb6a09ea2a9..2a4eef344c2 100644 --- a/bench/libquic/optimized/bio.ll +++ b/bench/libquic/optimized/bio.ll @@ -1340,39 +1340,36 @@ define hidden range(i32 0, 2) i32 @BIO_read_asn1(ptr noundef %0, ptr noundef cap %.not70 = icmp eq i32 %71, %21 br i1 %.not70, label %.lr.ph.preheader, label %bio_read_all.exit.thread -.lr.ph.preheader: ; preds = %69 - %72 = add nuw nsw i64 %22, 2 - br label %.lr.ph - -.lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph - %indvars.iv = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next, %.lr.ph ] - %.05788 = phi i32 [ 0, %.lr.ph.preheader ], [ %78, %.lr.ph ] - %73 = shl i32 %.05788, 8 - %74 = getelementptr inbounds nuw i8, ptr %5, i64 %indvars.iv - %75 = getelementptr inbounds nuw i8, ptr %74, i64 2 - %76 = load i8, ptr %75, align 1, !tbaa !41 - %77 = zext i8 %76 to i32 - %78 = or disjoint i32 %73, %77 +.lr.ph.preheader: ; preds = %69, %.lr.ph + %indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph ], [ 0, %69 ] + %.05788 = phi i32 [ %77, %.lr.ph ], [ 0, %69 ] + %72 = shl i32 %.05788, 8 + %73 = getelementptr inbounds nuw i8, ptr %5, i64 %indvars.iv + %74 = getelementptr inbounds nuw i8, ptr %73, i64 2 + %75 = load i8, ptr %74, align 1, !tbaa !41 + %76 = zext i8 %75 to i32 + %77 = or disjoint i32 %72, %76 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %22 br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !42 ._crit_edge: ; preds = %.lr.ph - %79 = icmp ult i32 %78, 128 + %79 = icmp ult i32 %77, 128 br i1 %79, label %bio_read_all.exit.thread, label %bio_read_all.exit bio_read_all.exit: ; preds = %._crit_edge + %79 = add nuw nsw i64 %22, 2 %80 = shl i8 %11, 3 %81 = zext i8 %80 to i32 %82 = add nsw i32 %81, -8 - %83 = lshr i32 %78, %82 + %83 = lshr i32 %77, %82 %.not77 = icmp eq i32 %83, 0 - %84 = zext i32 %78 to i64 + %84 = zext i32 %77 to i64 br i1 %.not77, label %bio_read_all.exit.thread, label %85 85: ; preds = %bio_read_all.exit, %17 %.061 = phi i64 [ %18, %17 ], [ %84, %bio_read_all.exit ] - %.059 = phi i64 [ 2, %17 ], [ %72, %bio_read_all.exit ] + %.059 = phi i64 [ 2, %17 ], [ %79, %bio_read_all.exit ] %86 = add nuw nsw i64 %.059, %.061 %87 = icmp ugt i64 %86, %3 %88 = icmp samesign ugt i64 %.061, 2147483647 diff --git a/bench/libsodium/optimized/core_ed25519.ll b/bench/libsodium/optimized/core_ed25519.ll index 469f95a2550..388cf1bc4e9 100644 --- a/bench/libsodium/optimized/core_ed25519.ll +++ b/bench/libsodium/optimized/core_ed25519.ll @@ -156,23 +156,20 @@ define dso_local range(i32 -1, 1) i32 @crypto_core_ed25519_from_string(ptr nound %.not.i = icmp eq i32 %8, 0 br i1 %.not.i, label %.preheader.preheader.i, label %_string_to_points.exit -.preheader.preheader.i: ; preds = %5 - %9 = getelementptr inbounds nuw i8, ptr %6, i64 48 - br label %10 - -10: ; preds = %10, %.preheader.preheader.i - %.022.i = phi i64 [ 0, %.preheader.preheader.i ], [ %15, %10 ] - %11 = sub nuw nsw i64 47, %.022.i - %12 = getelementptr i8, ptr %7, i64 %11 - %13 = load i8, ptr %12, align 1 - %14 = getelementptr i8, ptr %6, i64 %.022.i - store i8 %13, ptr %14, align 1 - %15 = add nuw nsw i64 %.022.i, 1 - %exitcond.not.i = icmp eq i64 %15, 48 - br i1 %exitcond.not.i, label %_string_to_points.exit.loopexit, label %10, !llvm.loop !4 - -_string_to_points.exit.loopexit: ; preds = %10 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %9, i8 noundef 0, i64 noundef range(i64 64, 17) 16, i1 noundef false) #6 +.preheader.preheader.i: ; preds = %5, %.preheader.preheader.i + %.022.i = phi i64 [ %13, %.preheader.preheader.i ], [ 0, %5 ] + %9 = sub nuw nsw i64 47, %.022.i + %10 = getelementptr i8, ptr %7, i64 %9 + %11 = load i8, ptr %10, align 1 + %12 = getelementptr i8, ptr %6, i64 %.022.i + store i8 %11, ptr %12, align 1 + %13 = add nuw nsw i64 %.022.i, 1 + %exitcond.not.i = icmp eq i64 %13, 48 + br i1 %exitcond.not.i, label %_string_to_points.exit.loopexit, label %.preheader.preheader.i, !llvm.loop !4 + +_string_to_points.exit.loopexit:; preds = %.preheader.preheader.i + %14 = getelementptr inbounds nuw i8, ptr %6, i64 48 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %14, i8 noundef 0, i64 noundef range(i64 64, 17) 16, i1 noundef false) #6 call void @_sodium_ge25519_from_hash(ptr noundef nonnull %0, ptr noundef nonnull %6) #6 br label %_string_to_points.exit diff --git a/bench/libwebp/optimized/picture_psnr_enc.ll b/bench/libwebp/optimized/picture_psnr_enc.ll index 2d0c56152ac..eeea3b958e4 100644 --- a/bench/libwebp/optimized/picture_psnr_enc.ll +++ b/bench/libwebp/optimized/picture_psnr_enc.ll @@ -179,12 +179,9 @@ define internal double @AccumulateSSE(ptr noundef %0, i32 noundef %1, ptr nounde ; Function Attrs: nounwind uwtable define internal double @AccumulateSSIM(ptr noundef %0, i32 noundef %1, ptr noundef %2, i32 noundef %3, i32 noundef %4, i32 noundef %5) unnamed_addr #0 { - %7 = tail call i32 @llvm.smin.i32(i32 %4, i32 3) - %8 = add i32 %4, -4 - %9 = tail call i32 @llvm.smin.i32(i32 %5, i32 3) - %10 = add i32 %5, -4 - %11 = icmp sgt i32 %5, 0 - br i1 %11, label %.preheader96.lr.ph, label %.preheader95 + %7 = tail call i32 @llvm.smin.i32(i32 %5, i32 3) + %8 = icmp sgt i32 %5, 0 + br i1 %8, label %.preheader96.lr.ph, label %.preheader95 .preheader96.lr.ph: ; preds = %6 %12 = icmp sgt i32 %4, 0 @@ -196,10 +193,10 @@ define internal double @AccumulateSSIM(ptr noundef %0, i32 noundef %1, ptr nound br label %13 13: ; preds = %.preheader96.us, %13 - %.098.us = phi i32 [ 0, %.preheader96.us ], [ %17, %13 ] - %.18397.us = phi double [ %.08299.us, %.preheader96.us ], [ %16, %13 ] + %.098.us = phi i32 [ 0, %.preheader96.us ], [ %17, %10 ] + %.18397.us = phi double [ %.08299.us, %.preheader96.us ], [ %16, %10 ] %14 = load ptr, ptr @VP8SSIMGetClipped, align 8, !tbaa !14 - %15 = tail call double %14(ptr noundef %0, i32 noundef %1, ptr noundef %2, i32 noundef %3, i32 noundef %.098.us, i32 noundef %.079100.us, i32 noundef %4, i32 noundef %5) #6 + %15 = tail call double %11(ptr noundef %0, i32 noundef %1, ptr noundef %2, i32 noundef %3, i32 noundef %.098.us, i32 noundef %.079100.us, i32 noundef %4, i32 noundef %5) #6 %16 = fadd double %.18397.us, %15 %17 = add nuw nsw i32 %.098.us, 1 %exitcond.not = icmp eq i32 %17, %4 @@ -207,13 +204,16 @@ define internal double @AccumulateSSIM(ptr noundef %0, i32 noundef %1, ptr nound ._crit_edge.us: ; preds = %13 %18 = add nuw nsw i32 %.079100.us, 1 - %exitcond141.not = icmp eq i32 %18, %9 + %exitcond141.not = icmp eq i32 %18, %7 br i1 %exitcond141.not, label %.preheader95, label %.preheader96.us, !llvm.loop !18 .preheader95: ; preds = %._crit_edge.us, %.preheader96.lr.ph, %6 %.082.lcssa = phi double [ 0.000000e+00, %6 ], [ 0.000000e+00, %.preheader96.lr.ph ], [ %16, %._crit_edge.us ] - %.079.lcssa = phi i32 [ 0, %6 ], [ %9, %.preheader96.lr.ph ], [ %9, %._crit_edge.us ] - %19 = icmp slt i32 %.079.lcssa, %10 + %.079.lcssa = phi i32 [ 0, %6 ], [ %7, %.preheader96.lr.ph ], [ %7, %._crit_edge.us ] + %16 = tail call i32 @llvm.smin.i32(i32 %4, i32 3) + %17 = add i32 %4, -4 + %18 = add nsw i32 %5, -4 + %19 = icmp slt i32 %.079.lcssa, %18 br i1 %19, label %.preheader94.lr.ph, label %.preheader91 .preheader94.lr.ph: ; preds = %.preheader95 @@ -221,7 +221,7 @@ define internal double @AccumulateSSIM(ptr noundef %0, i32 noundef %1, ptr nound %21 = sext i32 %.079.lcssa to i64 %22 = sext i32 %3 to i64 %23 = sext i32 %1 to i64 - %wide.trip.count = zext i32 %8 to i64 + %wide.trip.count = zext i32 %17 to i64 br label %.preheader94 .preheader94: ; preds = %.preheader94.lr.ph, %._crit_edge @@ -233,17 +233,19 @@ define internal double @AccumulateSSIM(ptr noundef %0, i32 noundef %1, ptr nound %24 = trunc nsw i64 %indvars.iv146 to i32 br label %.lr.ph -.preheader91: ; preds = %._crit_edge, %.preheader95 - %.284.lcssa = phi double [ %.082.lcssa, %.preheader95 ], [ %.5.lcssa, %._crit_edge ] - %.180.lcssa = phi i32 [ %.079.lcssa, %.preheader95 ], [ %10, %._crit_edge ] - %25 = icmp slt i32 %.180.lcssa, %5 +.preheader91: ; preds = %.preheader95 + %25 = icmp slt i32 %.079.lcssa, %5 + br i1 %25, label %.preheader.lr.ph, label %._crit_edge127 + +.preheader.lr.ph: ; preds = %._crit_edge, %.preheader91 + %.180.lcssa163 = phi i32 [ %.079.lcssa, %.preheader91 ], [ %18, %._crit_edge ] + %.284.lcssa162 = phi double [ %.082.lcssa, %.preheader91 ], [ %.5.lcssa, %._crit_edge ] %26 = icmp sgt i32 %4, 0 - %or.cond = and i1 %25, %26 - br i1 %or.cond, label %.preheader.us, label %._crit_edge127 + br i1 %26, label %.preheader.us, label %._crit_edge127 -.preheader.us: ; preds = %.preheader91, %._crit_edge123.us - %.281126.us = phi i32 [ %32, %._crit_edge123.us ], [ %.180.lcssa, %.preheader91 ] - %.6125.us = phi double [ %30, %._crit_edge123.us ], [ %.284.lcssa, %.preheader91 ] +.preheader.us: ; preds = %.preheader.lr.ph, %._crit_edge123.us + %.281126.us = phi i32 [ %32, %._crit_edge123.us ], [ %.180.lcssa163, %.preheader.lr.ph ] + %.6125.us = phi double [ %30, %._crit_edge123.us ], [ %.284.lcssa162, %.preheader.lr.ph ] br label %27 27: ; preds = %.preheader.us, %27 @@ -263,8 +265,8 @@ define internal double @AccumulateSSIM(ptr noundef %0, i32 noundef %1, ptr nound .preheader93: ; preds = %.lr.ph, %.preheader94 %.385.lcssa = phi double [ %.284116, %.preheader94 ], [ %40, %.lr.ph ] - %.1.lcssa = phi i32 [ 0, %.preheader94 ], [ %7, %.lr.ph ] - %33 = icmp slt i32 %.1.lcssa, %8 + %.1.lcssa = phi i32 [ 0, %.preheader94 ], [ %16, %.lr.ph ] + %33 = icmp slt i32 %.1.lcssa, %17 br i1 %33, label %.lr.ph109, label %.preheader92 .lr.ph109: ; preds = %.preheader93 @@ -283,12 +285,12 @@ define internal double @AccumulateSSIM(ptr noundef %0, i32 noundef %1, ptr nound %39 = tail call double %38(ptr noundef %0, i32 noundef %1, ptr noundef %2, i32 noundef %3, i32 noundef %.1105, i32 noundef %24, i32 noundef %4, i32 noundef %5) #6 %40 = fadd double %.385104, %39 %41 = add nuw nsw i32 %.1105, 1 - %exitcond142.not = icmp eq i32 %41, %7 + %exitcond142.not = icmp eq i32 %41, %16 br i1 %exitcond142.not, label %.preheader93, label %.lr.ph, !llvm.loop !21 .preheader92: ; preds = %44, %.preheader93 %.486.lcssa = phi double [ %.385.lcssa, %.preheader93 ], [ %48, %44 ] - %.2.lcssa = phi i32 [ %.1.lcssa, %.preheader93 ], [ %8, %44 ] + %.2.lcssa = phi i32 [ %.1.lcssa, %.preheader93 ], [ %17, %44 ] %42 = icmp slt i32 %.2.lcssa, %4 br i1 %42, label %.lr.ph114.preheader, label %._crit_edge @@ -323,11 +325,11 @@ define internal double @AccumulateSSIM(ptr noundef %0, i32 noundef %1, ptr nound %.5.lcssa = phi double [ %.486.lcssa, %.preheader92 ], [ %51, %.lr.ph114 ] %indvars.iv.next147 = add nsw i64 %indvars.iv146, 1 %lftr.wideiv = trunc i64 %indvars.iv.next147 to i32 - %exitcond149.not = icmp eq i32 %10, %lftr.wideiv - br i1 %exitcond149.not, label %.preheader91, label %.preheader94, !llvm.loop !24 + %exitcond149.not = icmp eq i32 %18, %lftr.wideiv + br i1 %exitcond149.not, label %.preheader.lr.ph, label %.preheader94, !llvm.loop !24 -._crit_edge127: ; preds = %._crit_edge123.us, %.preheader91 - %.6.lcssa = phi double [ %.284.lcssa, %.preheader91 ], [ %30, %._crit_edge123.us ] +._crit_edge127: ; preds = %._crit_edge123.us, %.preheader.lr.ph, %.preheader91 + %.6.lcssa = phi double [ %.082.lcssa, %.preheader91 ], [ %.284.lcssa162, %.preheader.lr.ph ], [ %30, %._crit_edge123.us ] ret double %.6.lcssa } diff --git a/bench/libwebp/optimized/webpinfo.ll b/bench/libwebp/optimized/webpinfo.ll index 1ddc6e2754b..d62e2cf111f 100644 --- a/bench/libwebp/optimized/webpinfo.ll +++ b/bench/libwebp/optimized/webpinfo.ll @@ -2466,41 +2466,38 @@ LLGetBits.exit49: ; preds = %45 %68 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %67, ptr noundef nonnull @.str.16, ptr noundef nonnull @.str.83) #13 br label %97 -69: ; preds = %LLGetBits.exit49 - %70 = getelementptr inbounds nuw i8, ptr %.16.val, i64 4 - %71 = load i8, ptr %70, align 1, !tbaa !38 - %72 = lshr i8 %71, 4 - %73 = and i8 %72, 1 - %74 = zext nneg i8 %73 to i32 - br label %75 - -75: ; preds = %69, %75 - %76 = phi i32 [ 0, %69 ], [ %88, %75 ] - %77 = phi i64 [ 29, %69 ], [ %79, %75 ] - %.01619.i56 = phi i32 [ 0, %69 ], [ %89, %75 ] - %78 = lshr i64 %77, 3 - %79 = add nuw nsw i64 %77, 1 - %80 = getelementptr inbounds nuw i8, ptr %20, i64 %78 - %81 = load i8, ptr %80, align 1, !tbaa !38 - %82 = zext i8 %81 to i32 - %83 = trunc i64 %77 to i32 - %84 = and i32 %83, 7 - %85 = lshr i32 %82, %84 - %86 = and i32 %85, 1 - %87 = shl nuw nsw i32 %86, %.01619.i56 - %88 = or i32 %87, %76 - %89 = add nuw nsw i32 %.01619.i56, 1 - %exitcond48.not = icmp eq i32 %89, 3 - br i1 %exitcond48.not, label %.critedge, label %75, !llvm.loop !48 - -.critedge: ; preds = %75 +69: ; preds = %LLGetBits.exit49, %69 + %69 = phi i32 [ %81, %.preheader ], [ 0, %LLGetBits.exit49 ] + %70 = phi i64 [ %72, %.preheader ], [ 29, %LLGetBits.exit49 ] + %.01619.i56 = phi i32 [ %82, %.preheader ], [ 0, %LLGetBits.exit49 ] + %71 = lshr i64 %70, 3 + %72 = add nuw nsw i64 %70, 1 + %73 = getelementptr inbounds nuw i8, ptr %20, i64 %71 + %74 = load i8, ptr %73, align 1, !tbaa !38 + %75 = zext i8 %74 to i32 + %76 = trunc i64 %70 to i32 + %77 = and i32 %76, 7 + %78 = lshr i32 %75, %77 + %79 = and i32 %78, 1 + %80 = shl nuw nsw i32 %79, %.01619.i56 + %81 = or i32 %80, %69 + %82 = add nuw nsw i32 %.01619.i56, 1 + %exitcond48.not = icmp eq i32 %82, 3 + br i1 %exitcond48.not, label %.critedge, label %69, !llvm.loop !48 + +.critedge:; preds = %69 + %83 = getelementptr inbounds nuw i8, ptr %.16.val, i64 4 + %84 = load i8, ptr %83, align 1, !tbaa !38 + %85 = lshr i8 %84, 4 + %86 = and i8 %85, 1 + %87 = zext nneg i8 %86 to i32 store i64 32, ptr %2, align 8, !tbaa !20 %90 = add nsw i32 %35, 1 %91 = add nsw i32 %55, 1 %92 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.85, i32 noundef %90) %93 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.86, i32 noundef %91) - %94 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.87, i32 noundef %74) - %95 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.88, i32 noundef %88) + %94 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.87, i32 noundef %87) + %95 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.88, i32 noundef %81) %96 = call fastcc i32 @ParseLosslessTransform(ptr noundef %0, ptr noundef nonnull %20, i64 noundef %21, ptr noundef %2) br label %97 diff --git a/bench/lief/optimized/gcm.ll b/bench/lief/optimized/gcm.ll index e957b994806..da84f47f94a 100644 --- a/bench/lief/optimized/gcm.ll +++ b/bench/lief/optimized/gcm.ll @@ -242,21 +242,16 @@ define hidden i32 @mbedtls_gcm_starts(ptr noundef %0, i32 noundef %1, ptr nounde store i8 1, ptr %14, align 1, !tbaa !14 br label %34 -.lr.ph62.preheader: ; preds = %7 - %15 = shl nuw i64 %3, 3 - %16 = tail call i64 @llvm.bswap.i64(i64 %15) - br label %.lr.ph62 - -.lr.ph62: ; preds = %.lr.ph62.preheader, %mbedtls_xor.exit - %.04061 = phi i64 [ %30, %mbedtls_xor.exit ], [ %3, %.lr.ph62.preheader ] - %.04160 = phi ptr [ %31, %mbedtls_xor.exit ], [ %2, %.lr.ph62.preheader ] - %17 = tail call i64 @llvm.umin.i64(i64 %.04061, i64 16) +.lr.ph62.preheader: ; preds = %7, %mbedtls_xor.exit + %.04061 = phi i64 [ %28, %mbedtls_xor.exit ], [ %3, %7 ] + %.04160 = phi ptr [ %31, %mbedtls_xor.exit ], [ %2, %7 ] + %15 = tail call i64 @llvm.umin.i64(i64 %.04061, i64 16) %.not.i55 = icmp ult i64 %.04061, 8 br i1 %.not.i55, label %.preheader54, label %.lr.ph .preheader54: ; preds = %.lr.ph, %.lr.ph62 %.0.i.lcssa = phi i64 [ 0, %.lr.ph62 ], [ %19, %.lr.ph ] - %18 = icmp samesign ult i64 %.0.i.lcssa, %17 + %18 = icmp samesign ult i64 %.0.i.lcssa, %15 br i1 %18, label %.lr.ph58, label %mbedtls_xor.exit .lr.ph: ; preds = %.lr.ph62, %.lr.ph @@ -269,32 +264,34 @@ define hidden i32 @mbedtls_gcm_starts(ptr noundef %0, i32 noundef %1, ptr nounde %22 = xor i64 %.0.copyload.i51, %.0.copyload.i52 store i64 %22, ptr %20, align 1 %23 = add nuw nsw i64 %19, 8 - %.not.i = icmp samesign ugt i64 %23, %17 + %.not.i = icmp samesign ugt i64 %23, %15 br i1 %.not.i, label %.preheader54, label %.lr.ph, !llvm.loop !21 .lr.ph58: ; preds = %.preheader54, %.lr.ph58 - %.1.i57 = phi i64 [ %29, %.lr.ph58 ], [ %.0.i.lcssa, %.preheader54 ] + %.1.i57 = phi i64 [ %27, %.lr.ph58 ], [ %.0.i.lcssa, %.preheader54 ] %24 = getelementptr inbounds nuw i8, ptr %8, i64 %.1.i57 + %23 = load i8, ptr %22, align 1, !tbaa !14 + %24 = getelementptr inbounds nuw i8, ptr %.04160, i64 %.1.i57 %25 = load i8, ptr %24, align 1, !tbaa !14 - %26 = getelementptr inbounds nuw i8, ptr %.04160, i64 %.1.i57 - %27 = load i8, ptr %26, align 1, !tbaa !14 - %28 = xor i8 %27, %25 - store i8 %28, ptr %24, align 1, !tbaa !14 - %29 = add nuw nsw i64 %.1.i57, 1 - %exitcond.not = icmp eq i64 %29, %17 + %26 = xor i8 %25, %23 + store i8 %26, ptr %22, align 1, !tbaa !14 + %27 = add nuw nsw i64 %.1.i57, 1 + %exitcond.not = icmp eq i64 %27, %15 br i1 %exitcond.not, label %mbedtls_xor.exit, label %.lr.ph58, !llvm.loop !22 mbedtls_xor.exit: ; preds = %.lr.ph58, %.preheader54 tail call fastcc void @gcm_mult(ptr noundef nonnull %0, ptr noundef nonnull %8, ptr noundef nonnull %8) - %30 = sub i64 %.04061, %17 - %31 = getelementptr inbounds nuw i8, ptr %.04160, i64 %17 + %30 = sub i64 %.04061, %15 + %31 = getelementptr inbounds nuw i8, ptr %.04160, i64 %15 %.not44 = icmp eq i64 %30, 0 br i1 %.not44, label %.preheader53, label %.lr.ph62, !llvm.loop !23 .preheader53: ; preds = %mbedtls_xor.exit + %30 = shl nuw i64 %3, 3 + %31 = tail call i64 @llvm.bswap.i64(i64 %30) %32 = getelementptr inbounds nuw i8, ptr %0, i64 392 %.0.copyload.i50.c = load i64, ptr %32, align 1 - %33 = xor i64 %16, %.0.copyload.i50.c + %33 = xor i64 %31, %.0.copyload.i50.c store i64 %33, ptr %32, align 1 tail call fastcc void @gcm_mult(ptr noundef nonnull %0, ptr noundef nonnull %8, ptr noundef nonnull %8) br label %34 diff --git a/bench/linux/optimized/alps.ll b/bench/linux/optimized/alps.ll index b9833bfbea1..05571dcd7ef 100644 --- a/bench/linux/optimized/alps.ll +++ b/bench/linux/optimized/alps.ll @@ -5236,7 +5236,6 @@ define internal noundef range(i32 -1, 2) i32 @alps_decode_packet_v7(ptr noundef %82 = select i1 %80, i1 %81, i1 false %spec.store.select = select i1 %82, i16 0, i16 %67 store i16 %spec.store.select, ptr %57, align 2 - %spec.select6 = select i1 %82, i16 0, i16 %67 %83 = xor i16 %51, 2047 store i16 %83, ptr %52, align 2 %84 = xor i16 %78, 2032 @@ -5286,13 +5285,17 @@ define internal noundef range(i32 -1, 2) i32 @alps_decode_packet_v7(ptr noundef %111 = phi i32 [ %109, %108 ], [ %100, %104 ] %112 = add nuw nsw i64 %99, 1 %113 = icmp eq i64 %112, 4 - br i1 %113, label %.loopexit, label %98, !llvm.loop !24 + br i1 %113, label %.loopexit.loopexit, label %98, !llvm.loop !24 + +.loopexit.loopexit: ; preds = %110 + %spec.select6 = select i1 %82, i16 0, i16 %67 + br label %.loopexit -.loopexit: ; preds = %110, %.thread3 - %114 = phi i16 [ %85, %.thread3 ], [ %spec.select6, %110 ] - %115 = phi i16 [ %93, %.thread3 ], [ %84, %110 ] - %116 = phi i16 [ %91, %.thread3 ], [ %83, %110 ] - %117 = phi i32 [ %97, %.thread3 ], [ %111, %110 ] +.loopexit: ; preds = %.loopexit.loopexit, %.thread3 + %114 = phi i16 [ %85, %.thread3 ], [ %spec.select6, %.loopexit.loopexit ] + %115 = phi i16 [ %93, %.thread3 ], [ %84, %.loopexit.loopexit ] + %116 = phi i16 [ %91, %.thread3 ], [ %83, %.loopexit.loopexit ] + %117 = phi i32 [ %97, %.thread3 ], [ %111, %.loopexit.loopexit ] %118 = getelementptr inbounds nuw i8, ptr %0, i64 8 store i32 %117, ptr %118, align 4 %119 = load i8, ptr %1, align 1 diff --git a/bench/linux/optimized/chan.ll b/bench/linux/optimized/chan.ll index 0cf10555966..13f8b876812 100644 --- a/bench/linux/optimized/chan.ll +++ b/bench/linux/optimized/chan.ll @@ -1206,7 +1206,7 @@ define dso_local noundef range(i32 -22, 1) i32 @ieee80211_link_unreserve_chanctx %33 = getelementptr inbounds nuw i8, ptr %4, i64 64 %34 = load i32, ptr %33, align 8 %35 = icmp eq i32 %34, 2 - br i1 %35, label %36, label %62 + br i1 %35, label %36, label %64 36: ; preds = %32 %37 = getelementptr inbounds nuw i8, ptr %4, i64 72 @@ -1265,30 +1265,27 @@ define dso_local noundef range(i32 -22, 1) i32 @ieee80211_link_unreserve_chanctx tail call void @kvfree_call_rcu(ptr noundef nonnull %61, ptr noundef nonnull %4) #13 br label %85 -62: ; preds = %32 - %63 = load ptr, ptr %5, align 8 - br label %64 - -64: ; preds = %64, %62 - %65 = phi i32 [ 0, %62 ], [ %69, %64 ] - %66 = phi ptr [ %14, %62 ], [ %67, %64 ] +64: ; preds = %32, %64 + %65 = phi i32 [ %66, %.preheader7 ], [ 0, %32 ] + %66 = phi ptr [ %64, %.preheader7 ], [ %14, %32 ] %67 = load ptr, ptr %66, align 8 %68 = icmp eq ptr %67, %14 %69 = add i32 %65, 1 br i1 %68, label %.preheader, label %64, !llvm.loop !6 .preheader: ; preds = %64, %.preheader - %70 = phi i32 [ %74, %.preheader ], [ 0, %64 ] - %71 = phi ptr [ %72, %.preheader ], [ %22, %64 ] + %70 = phi i32 [ %74, %.preheader ], [ 0, %.preheader7 ] + %71 = phi ptr [ %72, %.preheader ], [ %22, %.preheader7 ] %72 = load ptr, ptr %71, align 8 %73 = icmp eq ptr %72, %22 %74 = add i32 %70, 1 br i1 %73, label %75, label %.preheader, !llvm.loop !9 75: ; preds = %.preheader - %76 = sub i32 0, %65 - %77 = icmp eq i32 %70, %76 - br i1 %77, label %79, label %78, !prof !32 + %73 = load ptr, ptr %5, align 8 + %74 = sub i32 0, %62 + %75 = icmp eq i32 %70, %74 + br i1 %75, label %77, label %76, !prof !32 78: ; preds = %75 tail call void asm sideeffect "3009: nop\0A\09.pushsection .discard.instr_begin\0A\09.long 3009b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 3009) #13, !srcloc !87 @@ -1304,13 +1301,13 @@ define dso_local noundef range(i32 -22, 1) i32 @ieee80211_link_unreserve_chanctx store ptr %81, ptr %83, align 8 store volatile ptr %82, ptr %81, align 8 store ptr inttoptr (i64 -2401263026318606046 to ptr), ptr %80, align 8 - tail call fastcc void @ieee80211_del_chanctx(ptr noundef %63, ptr noundef nonnull %4) + tail call fastcc void @ieee80211_del_chanctx(ptr noundef %73, ptr noundef nonnull %4) %84 = getelementptr inbounds nuw i8, ptr %4, i64 16 tail call void @kvfree_call_rcu(ptr noundef nonnull %84, ptr noundef nonnull %4) #13 br label %85 85: ; preds = %79, %52, %40, %29, %7 - %86 = phi i32 [ -22, %7 ], [ -22, %40 ], [ 0, %52 ], [ 0, %79 ], [ 0, %29 ] + %86 = phi i32 [ -22, %7 ], [ -22, %40 ], [ 0, %52 ], [ 0, %77 ], [ 0, %29 ] ret i32 %86 } diff --git a/bench/linux/optimized/xfrm_policy.ll b/bench/linux/optimized/xfrm_policy.ll index e146bde6e36..97dd936ac78 100644 --- a/bench/linux/optimized/xfrm_policy.ll +++ b/bench/linux/optimized/xfrm_policy.ll @@ -8825,73 +8825,69 @@ define internal void @xfrm_confirm_neigh(ptr noundef %0, ptr noundef %1) #1 alig %3 = getelementptr inbounds nuw i8, ptr %0, i64 32 %4 = load ptr, ptr %3, align 8 %5 = icmp eq ptr %4, null - br i1 %5, label %6, label %13 + br i1 %5, label %6, label %.thread2 6: ; preds = %2 %7 = getelementptr inbounds nuw i8, ptr %0, i64 56 %8 = load i16, ptr %7, align 8 %9 = and i16 %8, 64 %10 = icmp eq i16 %9, 0 - br i1 %10, label %.thread, label %.thread2 + br i1 %10, label %.thread, label %.thread.sink.split -.thread2: ; preds = %6 - %11 = getelementptr inbounds nuw i8, ptr %0, i64 240 - %12 = load ptr, ptr %11, align 8 - br label %.thread - -13: ; preds = %2 - %14 = getelementptr inbounds nuw i8, ptr %0, i64 240 +.thread2: ; preds = %2, %36 + %11 = phi ptr [ %38, %35 ], [ %4, %2 ] + %12 = phi ptr [ %36, %35 ], [ %1, %2 ] + %13 = phi ptr [ %15, %35 ], [ %0, %2 ] + %14 = getelementptr inbounds nuw i8, ptr %13, i64 232 %15 = load ptr, ptr %14, align 8 - br label %16 + %16 = getelementptr inbounds nuw i8, ptr %11, i64 220 + %17 = load i8, ptr %16, align 4 + %18 = icmp eq i8 %17, 0 + br i1 %18, label %35, label %19, !llvm.loop !87 -16: ; preds = %13, %41 - %17 = phi ptr [ %44, %41 ], [ %4, %13 ] - %18 = phi ptr [ %42, %41 ], [ %1, %13 ] - %19 = phi ptr [ %21, %41 ], [ %0, %13 ] - %20 = getelementptr inbounds nuw i8, ptr %19, i64 232 +16: ; preds = %.thread2 + %20 = getelementptr inbounds nuw i8, ptr %11, i64 696 %21 = load ptr, ptr %20, align 8 - %22 = getelementptr inbounds nuw i8, ptr %17, i64 220 - %23 = load i8, ptr %22, align 4 - %24 = icmp eq i8 %23, 0 - br i1 %24, label %41, label %25, !llvm.loop !87 + %22 = getelementptr inbounds nuw i8, ptr %21, i64 9 + %23 = load i8, ptr %22, align 1 + %24 = zext i8 %23 to i32 + %25 = and i32 %24, 8 + %26 = icmp eq i32 %25, 0 + br i1 %26, label %30, label %27 25: ; preds = %16 - %26 = getelementptr inbounds nuw i8, ptr %17, i64 696 + %26 = getelementptr inbounds nuw i8, ptr %11, i64 400 %27 = load ptr, ptr %26, align 8 - %28 = getelementptr inbounds nuw i8, ptr %27, i64 9 - %29 = load i8, ptr %28, align 1 - %30 = zext i8 %29 to i32 - %31 = and i32 %30, 8 - %32 = icmp eq i32 %31, 0 - br i1 %32, label %36, label %33 + br label %36 -33: ; preds = %25 - %34 = getelementptr inbounds nuw i8, ptr %17, i64 400 - %35 = load ptr, ptr %34, align 8 - br label %41 +33: ; preds = %19 + %31 = and i32 %24, 4 + %32 = icmp eq i32 %31, 0 + %33 = getelementptr inbounds nuw i8, ptr %11, i64 80 + %34 = select i1 %32, ptr %33, ptr %12 + br label %35 -36: ; preds = %25 - %37 = and i32 %30, 4 - %38 = icmp eq i32 %37, 0 - %39 = getelementptr inbounds nuw i8, ptr %17, i64 80 - %40 = select i1 %38, ptr %39, ptr %18 - br label %41 +36: ; preds = %30, %25, %.thread2 + %36 = phi ptr [ %12, %.preheader ], [ %29, %27 ], [ %34, %30 ] + %37 = getelementptr inbounds nuw i8, ptr %15, i64 32 + %38 = load ptr, ptr %37, align 8 + %39 = icmp eq ptr %38, null + br i1 %39, label %41, label %.thread2 -41: ; preds = %36, %33, %16 - %42 = phi ptr [ %18, %16 ], [ %35, %33 ], [ %40, %36 ] - %43 = getelementptr inbounds nuw i8, ptr %21, i64 32 +41: ; preds = %36, %6 + %42 = phi ptr [ %1, %6 ], [ %36, %35 ] + %43 = getelementptr inbounds nuw i8, ptr %0, i64 240 %44 = load ptr, ptr %43, align 8 - %45 = icmp eq ptr %44, null - br i1 %45, label %.thread, label %16 + br label %.thread -.thread: ; preds = %41, %6, %.thread2 - %46 = phi ptr [ %12, %.thread2 ], [ %0, %6 ], [ %15, %41 ] - %47 = phi ptr [ %1, %.thread2 ], [ %1, %6 ], [ %42, %41 ] +.thread: ; preds = %41, %6 + %46 = phi ptr [ %0, %6 ], [ %41, %.thread.sink.split ] + %47 = phi ptr [ %1, %6 ], [ %42, %.thread.sink.split ] %48 = getelementptr inbounds nuw i8, ptr %46, i64 8 %49 = load ptr, ptr %48, align 8 %50 = getelementptr inbounds nuw i8, ptr %49, i64 112 %51 = load ptr, ptr %50, align 16 - tail call void %51(ptr noundef %46, ptr noundef %47) #22 + tail call void %47(ptr noundef %46, ptr noundef %47) #22 ret void } diff --git a/bench/llvm/optimized/AsmMatcherEmitter.ll b/bench/llvm/optimized/AsmMatcherEmitter.ll index 6090e05d3df..1c496baf176 100644 --- a/bench/llvm/optimized/AsmMatcherEmitter.ll +++ b/bench/llvm/optimized/AsmMatcherEmitter.ll @@ -20888,18 +20888,15 @@ _ZN4llvm11raw_ostreamlsEPKc.exit3262: ; preds = %9633, %9635 %.val617 = load ptr, ptr %627, align 8, !tbaa !146 %.val618 = load ptr, ptr %628, align 8, !tbaa !146 %9638 = icmp eq ptr %.val617, %.val618 - br i1 %9638, label %_ZL24emitCustomOperandParsingRN4llvm11raw_ostreamERNS_13CodeGenTargetERKN12_GLOBAL__N_114AsmMatcherInfoENS_9StringRefERKNS_19StringToOffsetTableEjjbRKNS_6RecordE.exit, label %.lr.ph.i3263.preheader + br i1 %9638, label %_ZL24emitCustomOperandParsingRN4llvm11raw_ostreamERNS_13CodeGenTargetERKN12_GLOBAL__N_114AsmMatcherInfoENS_9StringRefERKNS_19StringToOffsetTableEjjbRKNS_6RecordE.exit, label %.lr.ph.i3263 -.lr.ph.i3263.preheader: ; preds = %_ZN4llvm11raw_ostreamlsEPKc.exit3262 +.lr.ph.i3263.preheader: ; preds = %.lr.ph.i3263 %9639 = load ptr, ptr %4470, align 8, !tbaa !381 %9640 = load ptr, ptr %57, align 8, !tbaa !383 %9641 = ptrtoint ptr %9639 to i64 %9642 = ptrtoint ptr %9640 to i64 %9643 = sub i64 %9641, %9642 %9644 = sdiv exact i64 %9643, 24 - br label %.lr.ph.i3263 - -._crit_edge.i3265: ; preds = %.lr.ph.i3263 %9645 = zext i32 %10086 to i64 %9646 = load ptr, ptr %256, align 8, !tbaa !141 %9647 = load ptr, ptr %258, align 8, !tbaa !145 @@ -21747,9 +21744,9 @@ _ZN4llvm11raw_ostreamlsEPKc.exit304.i: ; preds = %10078, %10076 %10084 = getelementptr inbounds nuw i8, ptr %54, i64 8 br label %10193 -.lr.ph.i3263: ; preds = %.lr.ph.i3263.preheader, %.lr.ph.i3263 - %.0632.i = phi i32 [ %10086, %.lr.ph.i3263 ], [ 0, %.lr.ph.i3263.preheader ] - %.sroa.0612.0631.i = phi ptr [ %10087, %.lr.ph.i3263 ], [ %.val617, %.lr.ph.i3263.preheader ] +.lr.ph.i3263: ; preds = %_ZN4llvm11raw_ostreamlsEPKc.exit3262, %.lr.ph.i3263 + %.0632.i = phi i32 [ %10086, %.lr.ph.i3263 ], [ 0, %_ZN4llvm11raw_ostreamlsEPKc.exit3262 ] + %.sroa.0612.0631.i = phi ptr [ %10087, %.lr.ph.i3263 ], [ %.val617, %_ZN4llvm11raw_ostreamlsEPKc.exit3262 ] %10085 = load i32, ptr %.sroa.0612.0631.i, align 8, !tbaa !471 %10086 = or i32 %10085, %.0632.i %10087 = getelementptr inbounds nuw i8, ptr %.sroa.0612.0631.i, i64 24 diff --git a/bench/llvm/optimized/DwarfCompileUnit.ll b/bench/llvm/optimized/DwarfCompileUnit.ll index 6cee5765f13..5486613eba7 100644 --- a/bench/llvm/optimized/DwarfCompileUnit.ll +++ b/bench/llvm/optimized/DwarfCompileUnit.ll @@ -4575,10 +4575,13 @@ _ZN4llvm13SmallDenseSetIPNS_11DbgVariableELj8ENS_12DenseMapInfoIS2_vEEEC2Ev.exit br i1 %.not.i.i.i.i.i29.i, label %_ZN4llvm13SmallDenseSetIPNS_11DbgVariableELj8ENS_12DenseMapInfoIS2_vEEEC2Ev.exit30.i, label %.lr.ph.i.i.i.i.i25.i, !llvm.loop !790 _ZN4llvm13SmallDenseSetIPNS_11DbgVariableELj8ENS_12DenseMapInfoIS2_vEEEC2Ev.exit30.i: ; preds = %.lr.ph.i.i.i.i.i25.i - %.phi.trans.insert.i.i.ptr.i = getelementptr inbounds nuw i8, ptr %12, i64 8 - %.phi.trans.insert3.i.i.i = getelementptr inbounds nuw i8, ptr %12, i64 16 %.not2026.i = icmp eq i32 %.val47, 0 - br i1 %.not2026.i, label %.critedge.i, label %.lr.ph.i + br i1 %.not2026.i, label %.preheader.thread.i, label %.lr.ph.i + +.preheader.thread.i: ; preds = %_ZN4llvm13SmallDenseSetIPNS_11DbgVariableELj8ENS_12DenseMapInfoIS2_vEEEC2Ev.exit30.i + %.phi.trans.insert.i.i.ptr96.i = getelementptr inbounds nuw i8, ptr %12, i64 8 + %.phi.trans.insert3.i.i97.i = getelementptr inbounds nuw i8, ptr %12, i64 16 + br label %.critedge.i .lr.ph.i: ; preds = %_ZN4llvm13SmallDenseSetIPNS_11DbgVariableELj8ENS_12DenseMapInfoIS2_vEEEC2Ev.exit30.i %42 = zext i32 %.val47 to i64 @@ -4588,6 +4591,8 @@ _ZN4llvm13SmallDenseSetIPNS_11DbgVariableELj8ENS_12DenseMapInfoIS2_vEEEC2Ev.exit br label %51 .preheader.i: ; preds = %_ZN4llvm23SmallVectorTemplateBaseINS_14PointerIntPairIPNS_11DbgVariableELj1EjNS_21PointerLikeTypeTraitsIS3_EENS_18PointerIntPairInfoIS3_Lj1ES5_EEEELb1EE9push_backES8_.exit.i + %.phi.trans.insert.i.i.ptr.i = getelementptr inbounds nuw i8, ptr %12, i64 8 + %.phi.trans.insert3.i.i.i = getelementptr inbounds nuw i8, ptr %12, i64 16 %.not.i31.i = icmp eq i32 %68, 0 br i1 %.not.i31.i, label %.critedge.i, label %.lr.ph33.i @@ -5458,7 +5463,9 @@ _ZN4llvm13SmallDenseMapIPKNS_15DILocalVariableEPNS_11DbgVariableELj4ENS_12DenseM %465 = icmp eq ptr %464, %36 br i1 %465, label %_ZL13sortLocalVarsRN4llvm15SmallVectorImplIPNS_11DbgVariableEEE.exit, label %_ZN4llvm11SmallVectorIPNS_11DbgVariableELj8EED2Ev.exit.sink.split.i -.critedge.i: ; preds = %.backedge.i, %.preheader.i, %_ZN4llvm13SmallDenseSetIPNS_11DbgVariableELj8ENS_12DenseMapInfoIS2_vEEEC2Ev.exit30.i +.critedge.i: ; preds = %.backedge.i, %.preheader.i, %.preheader.thread.i + %.phi.trans.insert3.i.i100.i = phi ptr [ %.phi.trans.insert3.i.i97.i, %.preheader.thread.i ], [ %.phi.trans.insert3.i.i.i, %.preheader.i ], [ %.phi.trans.insert3.i.i.i, %.backedge.i ] + %.phi.trans.insert.i.i.ptr99.i = phi ptr [ %.phi.trans.insert.i.i.ptr96.i, %.preheader.thread.i ], [ %.phi.trans.insert.i.i.ptr.i, %.preheader.i ], [ %.phi.trans.insert.i.i.ptr.i, %.backedge.i ] %466 = load i32, ptr %14, align 8, !noalias !776 %467 = and i32 %466, 1 %.not.i.i.i50.i = icmp eq i32 %467, 0 @@ -5499,8 +5506,8 @@ _ZN4llvm6detail12DenseSetImplIPNS_11DbgVariableENS_13SmallDenseMapIS3_NS0_13Dens br i1 %.not.i.i54.i, label %486, label %_ZN4llvm13SmallDenseMapIPKNS_15DILocalVariableEPNS_11DbgVariableELj4ENS_12DenseMapInfoIS3_vEENS_6detail12DenseMapPairIS3_S5_EEED2Ev.exit55.i 486: ; preds = %_ZN4llvm6detail12DenseSetImplIPNS_11DbgVariableENS_13SmallDenseMapIS3_NS0_13DenseSetEmptyELj8ENS_12DenseMapInfoIS3_vEENS0_12DenseSetPairIS3_EEEES7_ED2Ev.exit53.i - %487 = load ptr, ptr %.phi.trans.insert.i.i.ptr.i, align 8, !tbaa !818, !noalias !776 - %488 = load i32, ptr %.phi.trans.insert3.i.i.i, align 8, !tbaa !821, !noalias !776 + %487 = load ptr, ptr %.phi.trans.insert.i.i.ptr99.i, align 8, !tbaa !818, !noalias !776 + %488 = load i32, ptr %.phi.trans.insert3.i.i100.i, align 8, !tbaa !821, !noalias !776 %489 = zext i32 %488 to i64 %490 = shl nuw nsw i64 %489, 4 call void @_ZN4llvm17deallocate_bufferEPvmm(ptr noundef %487, i64 noundef %490, i64 noundef 8) #26 diff --git a/bench/lodepng/optimized/lodepng_util.ll b/bench/lodepng/optimized/lodepng_util.ll index edbcc2716de..f776f7bd64e 100644 --- a/bench/lodepng/optimized/lodepng_util.ll +++ b/bench/lodepng/optimized/lodepng_util.ll @@ -5912,8 +5912,8 @@ define internal fastcc noundef float @_ZN7lodepngL12lodepng_powfEff(float nounde %43 = select i1 %41, float %42, float %0 br label %common.ret231 -common.ret231: ; preds = %120, %._crit_edge160.thread, %67, %64, %60, %57, %55, %40, %28, %33, %31, %5, %2, %97, %50, %19, %14, %44 - %common.ret231.op = phi float [ %47, %44 ], [ %101, %97 ], [ %15, %14 ], [ %., %19 ], [ %52, %50 ], [ 1.000000e+00, %2 ], [ %0, %5 ], [ %30, %28 ], [ %35, %33 ], [ 0x7FF8000000000000, %31 ], [ %43, %40 ], [ %59, %57 ], [ 0.000000e+00, %55 ], [ 1.000000e+00, %60 ], [ %70, %67 ], [ 0.000000e+00, %64 ], [ %125, %120 ], [ %129, %._crit_edge160.thread ] +common.ret231: ; preds = %122, %._crit_edge160.thread, %67, %64, %60, %57, %55, %40, %28, %33, %31, %5, %2, %97, %50, %19, %14, %44 + %common.ret231.op = phi float [ %47, %44 ], [ %101, %97 ], [ %15, %14 ], [ %., %19 ], [ %52, %50 ], [ 1.000000e+00, %2 ], [ %0, %5 ], [ %30, %28 ], [ %35, %33 ], [ 0x7FF8000000000000, %31 ], [ %43, %40 ], [ %59, %57 ], [ 0.000000e+00, %55 ], [ 1.000000e+00, %60 ], [ %70, %67 ], [ 0.000000e+00, %64 ], [ %127, %122 ], [ %133, %128 ] ret float %common.ret231.op 44: ; preds = %38 @@ -6052,10 +6052,8 @@ common.ret231: ; preds = %120, %._crit_edge16 %106 = tail call float @llvm.fmuladd.f32(float %105, float 0x3F7714C020000000, float 0x3FB2A62F00000000) %107 = tail call float @llvm.fmuladd.f32(float %105, float %106, float 0x3FDABCE160000000) %108 = tail call float @llvm.fmuladd.f32(float %105, float %107, float 1.000000e+00) - %109 = tail call float @llvm.fmuladd.f32(float %105, float 0x3F9810C360000000, float 0xBFD19FAA20000000) - %110 = tail call float @llvm.fmuladd.f32(float %105, float %109, float 1.000000e+00) - %111 = icmp slt i32 %103, -30 - br i1 %111, label %.lr.ph154, label %.preheader + %109 = icmp slt i32 %103, -30 + br i1 %109, label %.lr.ph154, label %.preheader .preheader: ; preds = %102 %112 = icmp sgt i32 %103, 30 @@ -6077,27 +6075,35 @@ common.ret231: ; preds = %120, %._crit_edge16 %118 = icmp samesign ugt i32 %.2158, 61 br i1 %118, label %.lr.ph159, label %._crit_edge160.thread, !llvm.loop !141 +._crit_edge160.thread: ; preds = %.lr.ph159 + %117 = tail call float @llvm.fmuladd.f32(float %105, float 0x3F9810C360000000, float 0xBFD19FAA20000000) + %118 = tail call float @llvm.fmuladd.f32(float %105, float %117, float 1.000000e+00) + br label %128 + ._crit_edge160: ; preds = %.lr.ph154, %.preheader %.1115.lcssa = phi float [ %108, %.preheader ], [ %113, %.lr.ph154 ] %.2.lcssa = phi i32 [ %103, %.preheader ], [ %114, %.lr.ph154 ] - %119 = icmp slt i32 %.2.lcssa, 0 - br i1 %119, label %120, label %._crit_edge160.thread - -120: ; preds = %._crit_edge160 - %121 = sub nsw i32 0, %.2.lcssa - %122 = shl nuw nsw i32 1, %121 - %123 = uitofp nneg i32 %122 to float - %124 = fmul float %110, %123 - %125 = fdiv float %.1115.lcssa, %124 + %119 = tail call float @llvm.fmuladd.f32(float %105, float 0x3F9810C360000000, float 0xBFD19FAA20000000) + %120 = tail call float @llvm.fmuladd.f32(float %105, float %119, float 1.000000e+00) + %121 = icmp slt i32 %.2.lcssa, 0 + br i1 %121, label %122, label %._crit_edge160.thread + +122:; preds = %._crit_edge160 + %123 = sub nsw i32 0, %.2.lcssa + %124 = shl nuw nsw i32 1, %123 + %125 = uitofp nneg i32 %124 to float + %126 = fmul float %120, %125 + %127 = fdiv float %.1115.lcssa, %126 br label %common.ret231 -._crit_edge160.thread: ; preds = %.lr.ph159, %._crit_edge160 - %.2.lcssa186 = phi i32 [ %.2.lcssa, %._crit_edge160 ], [ %117, %.lr.ph159 ] - %.1115.lcssa185 = phi float [ %.1115.lcssa, %._crit_edge160 ], [ %116, %.lr.ph159 ] - %126 = shl nuw nsw i32 1, %.2.lcssa186 - %127 = uitofp nneg i32 %126 to float - %128 = fmul float %.1115.lcssa185, %127 - %129 = fdiv float %128, %110 +._crit_edge160.thread: ; preds = %._crit_edge160.thread, %._crit_edge160 + %.2.lcssa186 = phi float [ %118, %._crit_edge160.thread ], [ %120, %._crit_edge160 ] + %.1115.lcssa185 = phi i32 [ %115, %._crit_edge160.thread ], [ %.2.lcssa, %._crit_edge160 ] + %.1115.lcssa185 = phi float [ %114, %._crit_edge160.thread ], [ %.1115.lcssa, %._crit_edge160 ] + %130 = shl nuw nsw i32 1, %.2.lcssa186 + %131 = uitofp nneg i32 %130 to float + %132 = fmul float %.1115.lcssa185, %131 + %133 = fdiv float %132, %129 br label %common.ret231 } diff --git a/bench/luajit/optimized/lj_ctype.ll b/bench/luajit/optimized/lj_ctype.ll index 281451b59bd..657ebaf2a39 100644 --- a/bench/luajit/optimized/lj_ctype.ll +++ b/bench/luajit/optimized/lj_ctype.ll @@ -426,9 +426,6 @@ define hidden i32 @lj_ctype_vlsize(ptr noundef readonly captures(none) %0, ptr n br i1 %5, label %6, label %ctype_raw.exit 6: ; preds = %3 - %7 = getelementptr inbounds nuw i8, ptr %1, i64 4 - %8 = load i32, ptr %7, align 4, !tbaa !29 - %9 = zext i32 %8 to i64 %.017.in.in23 = getelementptr inbounds nuw i8, ptr %1, i64 8 %.017.in24 = load i16, ptr %.017.in.in23, align 8, !tbaa !32 %.not25 = icmp eq i16 %.017.in24, 0 @@ -462,9 +459,15 @@ define hidden i32 @lj_ctype_vlsize(ptr noundef readonly captures(none) %0, ptr n %17 = and i32 %15, 65535 br i1 %16, label %._crit_edge, label %ctype_raw.exit, !llvm.loop !39 -ctype_raw.exit: ; preds = %._crit_edge, %3 - %18 = phi i32 [ %4, %3 ], [ %15, %._crit_edge ] - %.019 = phi i64 [ 0, %3 ], [ %9, %._crit_edge ] +ctype_raw.exit: ; preds = %._crit_edge + %15 = getelementptr inbounds nuw i8, ptr %1, i64 4 + %16 = load i32, ptr %15, align 4, !tbaa !29 + %17 = zext i32 %16 to i64 + br label %ctype_raw.exit + +ctype_raw.exit: ; preds = %ctype_raw.exit.loopexit, %3 + %18 = phi i32 [ %4, %3 ], [ %12, %ctype_raw.exit.loopexit ] + %.019 = phi i64 [ 0, %3 ], [ %17, %ctype_raw.exit.loopexit ] br label %19 19: ; preds = %19, %ctype_raw.exit diff --git a/bench/luau/optimized/Parser.ll b/bench/luau/optimized/Parser.ll index 11d7522e7b8..ea021141026 100644 --- a/bench/luau/optimized/Parser.ll +++ b/bench/luau/optimized/Parser.ll @@ -3980,7 +3980,7 @@ _ZNSt6vectorIN4Luau6Parser8FunctionESaIS2_EE9push_backERKS2_.exit: ; preds = %_Z 119: ; preds = %111 %120 = invoke noalias noundef nonnull dereferenceable(1244) ptr @_Znwm(i64 noundef 1244) #33 - to label %.noexc95 unwind label %258 + to label %.lr.ph.i.i.i.i.i.i.i.i.i.i.preheader unwind label %258 .noexc95: ; preds = %119 call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1244) %120, i8 0, i64 1244, i1 false), !tbaa !4 @@ -4003,13 +4003,19 @@ _ZNSt6vectorIN4Luau6Parser8FunctionESaIS2_EE9push_backERKS2_.exit: ; preds = %_Z %127 = ptrtoint ptr %126 to i64 %128 = sub i64 %127, %116 %129 = icmp ult i64 %128, 1244 - br i1 %129, label %130, label %_ZSt6fill_nIPjmjET_S1_T0_RKT1_.exit.i + br i1 %129, label %131, label %130 130: ; preds = %124 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1244) %114, i8 0, i64 1244, i1 false), !tbaa !4 + %130 = getelementptr inbounds nuw i8, ptr %114, i64 1244 + %.not.i.i92 = icmp eq ptr %126, %130 + br i1 %.not.i.i92, label %_ZNSt6vectorIjSaIjEE6assignEmRKj.exit, label %141 + +131: ; preds = %124 %.not5.i.i.i.i.i = icmp eq ptr %114, %126 br i1 %.not5.i.i.i.i.i, label %_ZSt4fillIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEjEvT_S7_RKT0_.exit.i, label %.lr.ph.i.i.i.i.i93.preheader -.lr.ph.i.i.i.i.i93.preheader: ; preds = %130 +.lr.ph.i.i.i.i.i93.preheader: ; preds = %131 %131 = add i64 %127, -4 %132 = sub i64 %131, %116 %133 = and i64 %132, -4 @@ -4017,29 +4023,23 @@ _ZNSt6vectorIN4Luau6Parser8FunctionESaIS2_EE9push_backERKS2_.exit: ; preds = %_Z call void @llvm.memset.p0.i64(ptr align 4 %114, i8 0, i64 %134, i1 false), !tbaa !4 br label %_ZSt4fillIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEjEvT_S7_RKT0_.exit.i -_ZSt4fillIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEjEvT_S7_RKT0_.exit.i: ; preds = %.lr.ph.i.i.i.i.i93.preheader, %130 - %135 = add i64 %116, 1240 - %136 = sub i64 %135, %127 - %137 = and i64 %136, -4 - %138 = add i64 %137, 4 - call void @llvm.memset.p0.i64(ptr align 4 %126, i8 0, i64 %138, i1 false), !tbaa !4 +_ZSt4fillIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEjEvT_S7_RKT0_.exit.i: ; preds = %.lr.ph.i.i.i.i.i93.preheader, %131 %.idx.i.i.i.i.i.i = sub nuw nsw i64 1244, %128 %139 = getelementptr inbounds nuw i8, ptr %126, i64 %.idx.i.i.i.i.i.i - store ptr %139, ptr %125, align 8, !tbaa !261 + %137 = add i64 %116, 1240 + %138 = sub i64 %137, %127 + %139 = and i64 %138, -4 + %140 = add i64 %139, 4 + call void @llvm.memset.p0.i64(ptr align 4 %126, i8 0, i64 %140, i1 false), !tbaa !4 + store ptr %136, ptr %125, align 8, !tbaa !261 br label %_ZNSt6vectorIjSaIjEE6assignEmRKj.exit -_ZSt6fill_nIPjmjET_S1_T0_RKT1_.exit.i: ; preds = %124 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1244) %114, i8 0, i64 1244, i1 false), !tbaa !4 - %140 = getelementptr inbounds nuw i8, ptr %114, i64 1244 - %.not.i.i92 = icmp eq ptr %126, %140 - br i1 %.not.i.i92, label %_ZNSt6vectorIjSaIjEE6assignEmRKj.exit, label %141 - -141: ; preds = %_ZSt6fill_nIPjmjET_S1_T0_RKT1_.exit.i - store ptr %140, ptr %125, align 8, !tbaa !261 +_ZSt6fill_nIPjmjET_S1_T0_RKT1_.exit.i: ; preds = %130 + store ptr %130, ptr %125, align 8, !tbaa !261 br label %_ZNSt6vectorIjSaIjEE6assignEmRKj.exit -_ZNSt6vectorIjSaIjEE6assignEmRKj.exit: ; preds = %.noexc95, %123, %_ZSt4fillIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEjEvT_S7_RKT0_.exit.i, %_ZSt6fill_nIPjmjET_S1_T0_RKT1_.exit.i, %141 - %142 = phi ptr [ %120, %.noexc95 ], [ %.pre, %123 ], [ %114, %_ZSt4fillIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEjEvT_S7_RKT0_.exit.i ], [ %114, %_ZSt6fill_nIPjmjET_S1_T0_RKT1_.exit.i ], [ %114, %141 ] +_ZNSt6vectorIjSaIjEE6assignEmRKj.exit: ; preds = %.noexc95, %123, %_ZSt4fillIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEjEvT_S7_RKT0_.exit.i, %130, %_ZSt6fill_nIPjmjET_S1_T0_RKT1_.exit.i + %142 = phi ptr [ %120, %.lr.ph.i.i.i.i.i.i.i.i.i.i.preheader ], [ %.pre, %123 ], [ %114, %_ZSt4fillIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEjEvT_S7_RKT0_.exit.i ], [ %114, %.lr.ph.i.i.i.i12.i.preheader ], [ %114, %141 ] store i32 1, ptr %142, align 4, !tbaa !4 invoke void @_ZN4Luau5Lexer15setSkipCommentsEb(ptr noundef nonnull align 8 dereferenceable(120) %19, i1 noundef zeroext true) to label %143 unwind label %89 @@ -15390,11 +15390,11 @@ define dso_local range(i64 0, -4294967294) i64 @_ZN4Luau6Parser17validateAttribu 13: ; preds = %._crit_edge tail call void (ptr, ptr, ptr, ...) @_ZN4Luau6Parser6reportERKNS_8LocationEPKcz(ptr noundef nonnull align 8 dereferenceable(1072) %0, ptr noundef nonnull align 4 dereferenceable(16) %12, ptr noundef nonnull @.str.132) - br label %.loopexit + br label %38 14: ; preds = %._crit_edge tail call void (ptr, ptr, ptr, ...) @_ZN4Luau6Parser6reportERKNS_8LocationEPKcz(ptr noundef nonnull align 8 dereferenceable(1072) %0, ptr noundef nonnull align 4 dereferenceable(16) %12, ptr noundef nonnull @.str.133, ptr noundef nonnull %1) - br label %.loopexit + br label %38 15: ; preds = %.lr.ph %16 = getelementptr inbounds nuw %"struct.Luau::AttributeEntry", ptr @_ZN4Luau17kAttributeEntriesE, i64 %indvars.iv @@ -15433,12 +15433,15 @@ define dso_local range(i64 0, -4294967294) i64 @_ZN4Luau6Parser17validateAttribu %.not30 = icmp eq ptr %35, %26 br i1 %.not30, label %.loopexit, label %28 -.loopexit: ; preds = %34, %15, %13, %14 - %.02229 = phi i32 [ undef, %13 ], [ undef, %14 ], [ %18, %15 ], [ %18, %34 ] - %.126 = phi i64 [ 0, %13 ], [ 0, %14 ], [ 1, %15 ], [ 1, %34 ] - %.sroa.221.0.insert.ext = zext i32 %.02229 to i64 - %.sroa.221.0.insert.shift = shl nuw i64 %.sroa.221.0.insert.ext, 32 - %.sroa.020.0.insert.insert = or disjoint i64 %.sroa.221.0.insert.shift, %.126 +.loopexit: ; preds = %34, %15 + %36 = zext i32 %18 to i64 + %37 = shl nuw i64 %36, 32 + br label %38 + +38:; preds = %.loopexit, %13, %14 + %.02229 = phi i64 [ 0, %13 ], [ 0, %14 ], [ %37, %.loopexit ] + %.126 = phi i64 [ 0, %13 ], [ 0, %14 ], [ 1, %.loopexit ] + %.sroa.020.0.insert.insert = or disjoint i64 %.02229, %.126 ret i64 %.sroa.020.0.insert.insert } @@ -32369,8 +32372,8 @@ define linkonce_odr dso_local void @_ZNSt6vectorIPN4Luau8AstLocalESaIS2_EE17_M_d _ZSt6fill_nIPPN4Luau8AstLocalEmS2_ET_S4_T0_RKT1_.exit.loopexit.i.i.i: ; preds = %19 %.idx.i.i.i.i.i = shl nuw nsw i64 %21, 3 - tail call void @llvm.memset.p0.i64(ptr align 8 %20, i8 0, i64 %.idx.i.i.i.i.i, i1 false), !tbaa !72 %23 = getelementptr inbounds nuw i8, ptr %20, i64 %.idx.i.i.i.i.i + tail call void @llvm.memset.p0.i64(ptr align 8 %20, i8 0, i64 %.idx.i.i.i.i.i, i1 false), !tbaa !72 br label %_ZSt27__uninitialized_default_n_aIPPN4Luau8AstLocalEmS2_ET_S4_T0_RSaIT1_E.exit _ZSt27__uninitialized_default_n_aIPPN4Luau8AstLocalEmS2_ET_S4_T0_RSaIT1_E.exit: ; preds = %19, %_ZSt6fill_nIPPN4Luau8AstLocalEmS2_ET_S4_T0_RKT1_.exit.loopexit.i.i.i diff --git a/bench/meshlab/optimized/filter_sdfgpu.ll b/bench/meshlab/optimized/filter_sdfgpu.ll index 69259577726..827b6cd9d02 100644 --- a/bench/meshlab/optimized/filter_sdfgpu.ll +++ b/bench/meshlab/optimized/filter_sdfgpu.ll @@ -4298,14 +4298,13 @@ _ZNKSt6vectorIN3vcg6Point3IfEESaIS2_EE12_M_check_lenEmPKc.exit.i.i: ; preds = %1 to label %.lr.ph.i unwind label %267 .lr.ph.i: ; preds = %_ZNKSt6vectorIN3vcg6Point3IfEESaIS2_EE12_M_check_lenEmPKc.exit.i.i - %176 = getelementptr inbounds nuw %"class.vcg::Point3", ptr %175, i64 %170 - %177 = uitofp nneg i32 %49 to float - %178 = fpext float %177 to double + %176 = uitofp nneg i32 %49 to float + %177 = fpext float %176 to double %wide.trip.count.i = zext nneg i32 %49 to i64 br label %179 179: ; preds = %179, %.lr.ph.i - %indvars.iv.i = phi i64 [ 0, %.lr.ph.i ], [ %indvars.iv.next.i, %179 ] + %indvars.iv.i = phi i64 [ 0, %.lr.ph.i ], [ %indvars.iv.next.i, %178 ] %180 = trunc nuw nsw i64 %indvars.iv.i to i32 %181 = uitofp nneg i32 %180 to float %182 = fdiv float %181, 0x3FF9E377A0000000 @@ -4317,7 +4316,7 @@ _ZNKSt6vectorIN3vcg6Point3IfEESaIS2_EE12_M_check_lenEmPKc.exit.i.i: ; preds = %1 %188 = shl i32 %180, 1 %189 = or disjoint i32 %188, 1 %190 = uitofp nneg i32 %189 to double - %191 = fdiv double %190, %178 + %191 = fdiv double %190, %177 %192 = fsub double 1.000000e+00, %191 %193 = fptrunc double %192 to float %194 = fneg float %193 @@ -4339,11 +4338,15 @@ _ZNKSt6vectorIN3vcg6Point3IfEESaIS2_EE12_M_check_lenEmPKc.exit.i.i: ; preds = %1 store float %193, ptr %.sroa.22.0..sroa_idx.i, align 4 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, %wide.trip.count.i - br i1 %exitcond.not.i, label %_ZN3vcg9GenNormalIfE9FibonacciEiRSt6vectorINS_6Point3IfEESaIS4_EE.exit, label %179, !llvm.loop !29 + br i1 %exitcond.not.i, label %_ZN3vcg9GenNormalIfE9FibonacciEiRSt6vectorINS_6Point3IfEESaIS4_EE.exit.loopexit, label %179, !llvm.loop !29 -_ZN3vcg9GenNormalIfE9FibonacciEiRSt6vectorINS_6Point3IfEESaIS4_EE.exit: ; preds = %179, %169 - %.sroa.0154.2224 = phi ptr [ null, %169 ], [ %175, %179 ] - %.sroa.11.0221 = phi ptr [ null, %169 ], [ %176, %179 ] +_ZN3vcg9GenNormalIfE9FibonacciEiRSt6vectorINS_6Point3IfEESaIS4_EE.exit.loopexit: ; preds = %178 + %202 = getelementptr inbounds nuw %"class.vcg::Point3", ptr %175, i64 %170 + br label %_ZN3vcg9GenNormalIfE9FibonacciEiRSt6vectorINS_6Point3IfEESaIS4_EE.exit + +_ZN3vcg9GenNormalIfE9FibonacciEiRSt6vectorINS_6Point3IfEESaIS4_EE.exit: ; preds = %_ZN3vcg9GenNormalIfE9FibonacciEiRSt6vectorINS_6Point3IfEESaIS4_EE.exit.loopexit, %169 + %.sroa.0154.2224 = phi ptr [ null, %169 ], [ %175, %_ZN3vcg9GenNormalIfE9FibonacciEiRSt6vectorINS_6Point3IfEESaIS4_EE.exit.loopexit ] + %.sroa.11.0221 = phi ptr [ null, %169 ], [ %202, %_ZN3vcg9GenNormalIfE9FibonacciEiRSt6vectorINS_6Point3IfEESaIS4_EE.exit.loopexit ] %203 = load ptr, ptr %1, align 8 %204 = getelementptr i8, ptr %203, i64 -32 %205 = load i64, ptr %204, align 8 @@ -9628,8 +9631,8 @@ _ZNSt6vectorIP8CVertexOSaIS1_EE17_S_check_init_lenEmRKS2_.exit.i: ; preds = %16 _ZSt6fill_nIPP8CVertexOmS1_ET_S3_T0_RKT1_.exit.loopexit.i.i.i.i.i: ; preds = %.noexc74 %.idx.i.i.i.i.i.i.i = shl nuw nsw i64 %27, 3 - call void @llvm.memset.p0.i64(ptr align 8 %26, i8 0, i64 %.idx.i.i.i.i.i.i.i, i1 false) %29 = getelementptr inbounds nuw i8, ptr %26, i64 %.idx.i.i.i.i.i.i.i + call void @llvm.memset.p0.i64(ptr align 8 %26, i8 0, i64 %.idx.i.i.i.i.i.i.i, i1 false) br label %.lr.ph.preheader .lr.ph.preheader: ; preds = %.noexc74, %_ZSt6fill_nIPP8CVertexOmS1_ET_S3_T0_RKT1_.exit.loopexit.i.i.i.i.i @@ -10511,9 +10514,9 @@ _ZNSt6vectorIbSaIbEEC2EmRKbRKS0_.exit: ; preds = %7, %2 %98 = icmp ugt i64 %97, -9223372036854775808 %storemerge.idx.i.i.i.i.i44 = select i1 %98, i64 -8, i64 0 %storemerge.i.i.i.i.i45 = getelementptr inbounds i8, ptr %96, i64 %storemerge.idx.i.i.i.i.i44 - %storemerge.i.i.i.i.i45.promoted = load i64, ptr %storemerge.i.i.i.i.i45, align 8 %99 = and i64 %94, 63 %100 = shl nuw i64 1, %99 + %storemerge.i.i.i.i.i45.promoted = load i64, ptr %storemerge.i.i.i.i.i45, align 8 %101 = or i64 %storemerge.i.i.i.i.i45.promoted, %100 store i64 %101, ptr %storemerge.i.i.i.i.i45, align 8 br label %102 @@ -15498,8 +15501,8 @@ define linkonce_odr void @_ZNSt6vectorIiSaIiEE17_M_default_appendEm(ptr noundef _ZSt6fill_nIPimiET_S1_T0_RKT1_.exit.loopexit.i.i.i: ; preds = %19 %.idx.i.i.i.i.i = shl nuw nsw i64 %21, 2 - tail call void @llvm.memset.p0.i64(ptr align 4 %20, i8 0, i64 %.idx.i.i.i.i.i, i1 false) %23 = getelementptr inbounds nuw i8, ptr %20, i64 %.idx.i.i.i.i.i + tail call void @llvm.memset.p0.i64(ptr align 4 %20, i8 0, i64 %.idx.i.i.i.i.i, i1 false) br label %_ZSt27__uninitialized_default_n_aIPimiET_S1_T0_RSaIT1_E.exit _ZSt27__uninitialized_default_n_aIPimiET_S1_T0_RSaIT1_E.exit: ; preds = %19, %_ZSt6fill_nIPimiET_S1_T0_RKT1_.exit.loopexit.i.i.i @@ -15815,8 +15818,8 @@ define linkonce_odr void @_ZNSt6vectorIfSaIfEE17_M_default_appendEm(ptr noundef _ZSt6fill_nIPfmfET_S1_T0_RKT1_.exit.loopexit.i.i.i: ; preds = %19 %.idx.i.i.i.i.i = shl nuw nsw i64 %21, 2 - tail call void @llvm.memset.p0.i64(ptr align 4 %20, i8 0, i64 %.idx.i.i.i.i.i, i1 false) %23 = getelementptr inbounds nuw i8, ptr %20, i64 %.idx.i.i.i.i.i + tail call void @llvm.memset.p0.i64(ptr align 4 %20, i8 0, i64 %.idx.i.i.i.i.i, i1 false) br label %_ZSt27__uninitialized_default_n_aIPfmfET_S1_T0_RSaIT1_E.exit _ZSt27__uninitialized_default_n_aIPfmfET_S1_T0_RSaIT1_E.exit: ; preds = %19, %_ZSt6fill_nIPfmfET_S1_T0_RKT1_.exit.loopexit.i.i.i diff --git a/bench/minetest/optimized/CGUIEnvironment.ll b/bench/minetest/optimized/CGUIEnvironment.ll index 26b1f02908e..b141079231e 100644 --- a/bench/minetest/optimized/CGUIEnvironment.ll +++ b/bench/minetest/optimized/CGUIEnvironment.ll @@ -7794,12 +7794,8 @@ _ZNK9__gnu_cxx5__ops15_Iter_less_iterclINS_17__normal_iteratorIPN3irr3gui15CGUIE %incdec.ptr.i.i.i = getelementptr inbounds nuw i8, ptr %__first.sroa.0.1.i.i, i64 72 br i1 %cmp.i.i.i.i.i.i.i, label %while.cond3.i.i, label %while.cond10.i.i.preheader, !llvm.loop !193 -while.cond10.i.i.preheader: ; preds = %_ZNK9__gnu_cxx5__ops15_Iter_less_iterclINS_17__normal_iteratorIPN3irr3gui15CGUIEnvironment5SFontESt6vectorIS7_SaIS7_EEEESC_EEbT_T0_.exit.i.i - %_M_string_length.i.i.i.i.i.i.i.i.i.le = getelementptr inbounds nuw i8, ptr %__first.sroa.0.1.i.i, i64 40 - br label %while.cond10.i.i - -while.cond10.i.i: ; preds = %while.cond10.i.i.preheader, %_ZNK9__gnu_cxx5__ops15_Iter_less_iterclINS_17__normal_iteratorIPN3irr3gui15CGUIEnvironment5SFontESt6vectorIS7_SaIS7_EEEESC_EEbT_T0_.exit43.i.i - %__last.sroa.0.0.pn.i.i = phi ptr [ %__last.sroa.0.1.i.i, %_ZNK9__gnu_cxx5__ops15_Iter_less_iterclINS_17__normal_iteratorIPN3irr3gui15CGUIEnvironment5SFontESt6vectorIS7_SaIS7_EEEESC_EEbT_T0_.exit43.i.i ], [ %__last.sroa.0.0.i.i, %while.cond10.i.i.preheader ] +while.cond10.i.i.preheader: ; preds = %_ZNK9__gnu_cxx5__ops15_Iter_less_iterclINS_17__normal_iteratorIPN3irr3gui15CGUIEnvironment5SFontESt6vectorIS7_SaIS7_EEEESC_EEbT_T0_.exit.i.i, %_ZNK9__gnu_cxx5__ops15_Iter_less_iterclINS_17__normal_iteratorIPN3irr3gui15CGUIEnvironment5SFontESt6vectorIS7_SaIS7_EEEESC_EEbT_T0_.exit43.i.i + %__last.sroa.0.0.pn.i.i = phi ptr [ %__last.sroa.0.1.i.i, %_ZNK9__gnu_cxx5__ops15_Iter_less_iterclINS_17__normal_iteratorIPN3irr3gui15CGUIEnvironment5SFontESt6vectorIS7_SaIS7_EEEESC_EEbT_T0_.exit43.i.i ], [ %__last.sroa.0.0.i.i, %_ZNK9__gnu_cxx5__ops15_Iter_less_iterclINS_17__normal_iteratorIPN3irr3gui15CGUIEnvironment5SFontESt6vectorIS7_SaIS7_EEEESC_EEbT_T0_.exit.i.i ] %__last.sroa.0.1.i.i = getelementptr inbounds i8, ptr %__last.sroa.0.0.pn.i.i, i64 -72 %_M_string_length.i10.i.i.i.i.i.i28.i.i = getelementptr inbounds i8, ptr %__last.sroa.0.0.pn.i.i, i64 -32 %6 = load i64, ptr %_M_string_length.i10.i.i.i.i.i.i28.i.i, align 8, !tbaa !29 @@ -7828,6 +7824,7 @@ _ZNK9__gnu_cxx5__ops15_Iter_less_iterclINS_17__normal_iteratorIPN3irr3gui15CGUIE br i1 %cmp.i.i.i.i.i37.i.i, label %while.cond10.i.i, label %while.end18.i.i, !llvm.loop !194 while.end18.i.i: ; preds = %_ZNK9__gnu_cxx5__ops15_Iter_less_iterclINS_17__normal_iteratorIPN3irr3gui15CGUIEnvironment5SFontESt6vectorIS7_SaIS7_EEEESC_EEbT_T0_.exit43.i.i + %_M_string_length.i.i.i.i.i.i.i.i.i.le = getelementptr inbounds nuw i8, ptr %__first.sroa.0.1.i.i, i64 40 %cmp.i.i.i = icmp ult ptr %__first.sroa.0.1.i.i, %__last.sroa.0.1.i.i br i1 %cmp.i.i.i, label %if.end.i.i, label %_ZSt27__unguarded_partition_pivotIN9__gnu_cxx17__normal_iteratorIPN3irr3gui15CGUIEnvironment5SFontESt6vectorIS5_SaIS5_EEEENS0_5__ops15_Iter_less_iterEET_SD_SD_T0_.exit @@ -9123,12 +9120,8 @@ _ZNK9__gnu_cxx5__ops15_Iter_less_iterclINS_17__normal_iteratorIPN3irr3gui15CGUIE %incdec.ptr.i.i.i = getelementptr inbounds nuw i8, ptr %__first.sroa.0.1.i.i, i64 72 br i1 %cmp.i.i.i.i.i.i.i, label %while.cond3.i.i, label %while.cond10.i.i.preheader, !llvm.loop !205 -while.cond10.i.i.preheader: ; preds = %_ZNK9__gnu_cxx5__ops15_Iter_less_iterclINS_17__normal_iteratorIPN3irr3gui15CGUIEnvironment11SSpriteBankESt6vectorIS7_SaIS7_EEEESC_EEbT_T0_.exit.i.i - %_M_string_length.i.i.i.i.i.i.i.i.i.le = getelementptr inbounds nuw i8, ptr %__first.sroa.0.1.i.i, i64 40 - br label %while.cond10.i.i - -while.cond10.i.i: ; preds = %while.cond10.i.i.preheader, %_ZNK9__gnu_cxx5__ops15_Iter_less_iterclINS_17__normal_iteratorIPN3irr3gui15CGUIEnvironment11SSpriteBankESt6vectorIS7_SaIS7_EEEESC_EEbT_T0_.exit43.i.i - %__last.sroa.0.0.pn.i.i = phi ptr [ %__last.sroa.0.1.i.i, %_ZNK9__gnu_cxx5__ops15_Iter_less_iterclINS_17__normal_iteratorIPN3irr3gui15CGUIEnvironment11SSpriteBankESt6vectorIS7_SaIS7_EEEESC_EEbT_T0_.exit43.i.i ], [ %__last.sroa.0.0.i.i, %while.cond10.i.i.preheader ] +while.cond10.i.i.preheader: ; preds = %_ZNK9__gnu_cxx5__ops15_Iter_less_iterclINS_17__normal_iteratorIPN3irr3gui15CGUIEnvironment11SSpriteBankESt6vectorIS7_SaIS7_EEEESC_EEbT_T0_.exit.i.i, %_ZNK9__gnu_cxx5__ops15_Iter_less_iterclINS_17__normal_iteratorIPN3irr3gui15CGUIEnvironment11SSpriteBankESt6vectorIS7_SaIS7_EEEESC_EEbT_T0_.exit43.i.i + %__last.sroa.0.0.pn.i.i = phi ptr [ %__last.sroa.0.1.i.i, %_ZNK9__gnu_cxx5__ops15_Iter_less_iterclINS_17__normal_iteratorIPN3irr3gui15CGUIEnvironment11SSpriteBankESt6vectorIS7_SaIS7_EEEESC_EEbT_T0_.exit43.i.i ], [ %__last.sroa.0.0.i.i, %_ZNK9__gnu_cxx5__ops15_Iter_less_iterclINS_17__normal_iteratorIPN3irr3gui15CGUIEnvironment11SSpriteBankESt6vectorIS7_SaIS7_EEEESC_EEbT_T0_.exit.i.i ] %__last.sroa.0.1.i.i = getelementptr inbounds i8, ptr %__last.sroa.0.0.pn.i.i, i64 -72 %_M_string_length.i10.i.i.i.i.i.i28.i.i = getelementptr inbounds i8, ptr %__last.sroa.0.0.pn.i.i, i64 -32 %6 = load i64, ptr %_M_string_length.i10.i.i.i.i.i.i28.i.i, align 8, !tbaa !29 @@ -9157,6 +9150,7 @@ _ZNK9__gnu_cxx5__ops15_Iter_less_iterclINS_17__normal_iteratorIPN3irr3gui15CGUIE br i1 %cmp.i.i.i.i.i37.i.i, label %while.cond10.i.i, label %while.end18.i.i, !llvm.loop !206 while.end18.i.i: ; preds = %_ZNK9__gnu_cxx5__ops15_Iter_less_iterclINS_17__normal_iteratorIPN3irr3gui15CGUIEnvironment11SSpriteBankESt6vectorIS7_SaIS7_EEEESC_EEbT_T0_.exit43.i.i + %_M_string_length.i.i.i.i.i.i.i.i.i.le = getelementptr inbounds nuw i8, ptr %__first.sroa.0.1.i.i, i64 40 %cmp.i.i.i = icmp ult ptr %__first.sroa.0.1.i.i, %__last.sroa.0.1.i.i br i1 %cmp.i.i.i, label %if.end.i.i, label %_ZSt27__unguarded_partition_pivotIN9__gnu_cxx17__normal_iteratorIPN3irr3gui15CGUIEnvironment11SSpriteBankESt6vectorIS5_SaIS5_EEEENS0_5__ops15_Iter_less_iterEET_SD_SD_T0_.exit diff --git a/bench/minetest/optimized/CMeshCache.ll b/bench/minetest/optimized/CMeshCache.ll index 5f5d4cc1dcc..498217cfd33 100644 --- a/bench/minetest/optimized/CMeshCache.ll +++ b/bench/minetest/optimized/CMeshCache.ll @@ -3493,12 +3493,8 @@ _ZNK9__gnu_cxx5__ops15_Iter_less_iterclINS_17__normal_iteratorIPN3irr5scene10CMe %incdec.ptr.i.i.i = getelementptr inbounds nuw i8, ptr %__first.sroa.0.1.i.i, i64 72 br i1 %cmp.i.i.i.i.i.i.i, label %while.cond3.i.i, label %while.cond10.i.i.preheader, !llvm.loop !78 -while.cond10.i.i.preheader: ; preds = %_ZNK9__gnu_cxx5__ops15_Iter_less_iterclINS_17__normal_iteratorIPN3irr5scene10CMeshCache9MeshEntryESt6vectorIS7_SaIS7_EEEESC_EEbT_T0_.exit.i.i - %_M_string_length.i.i.i.i.i.i.i.i.i.le = getelementptr inbounds nuw i8, ptr %__first.sroa.0.1.i.i, i64 40 - br label %while.cond10.i.i - -while.cond10.i.i: ; preds = %while.cond10.i.i.preheader, %_ZNK9__gnu_cxx5__ops15_Iter_less_iterclINS_17__normal_iteratorIPN3irr5scene10CMeshCache9MeshEntryESt6vectorIS7_SaIS7_EEEESC_EEbT_T0_.exit43.i.i - %__last.sroa.0.0.pn.i.i = phi ptr [ %__last.sroa.0.1.i.i, %_ZNK9__gnu_cxx5__ops15_Iter_less_iterclINS_17__normal_iteratorIPN3irr5scene10CMeshCache9MeshEntryESt6vectorIS7_SaIS7_EEEESC_EEbT_T0_.exit43.i.i ], [ %__last.sroa.0.0.i.i, %while.cond10.i.i.preheader ] +while.cond10.i.i.preheader: ; preds = %_ZNK9__gnu_cxx5__ops15_Iter_less_iterclINS_17__normal_iteratorIPN3irr5scene10CMeshCache9MeshEntryESt6vectorIS7_SaIS7_EEEESC_EEbT_T0_.exit.i.i, %_ZNK9__gnu_cxx5__ops15_Iter_less_iterclINS_17__normal_iteratorIPN3irr5scene10CMeshCache9MeshEntryESt6vectorIS7_SaIS7_EEEESC_EEbT_T0_.exit43.i.i + %__last.sroa.0.0.pn.i.i = phi ptr [ %__last.sroa.0.1.i.i, %_ZNK9__gnu_cxx5__ops15_Iter_less_iterclINS_17__normal_iteratorIPN3irr5scene10CMeshCache9MeshEntryESt6vectorIS7_SaIS7_EEEESC_EEbT_T0_.exit43.i.i ], [ %__last.sroa.0.0.i.i, %_ZNK9__gnu_cxx5__ops15_Iter_less_iterclINS_17__normal_iteratorIPN3irr5scene10CMeshCache9MeshEntryESt6vectorIS7_SaIS7_EEEESC_EEbT_T0_.exit.i.i ] %__last.sroa.0.1.i.i = getelementptr inbounds i8, ptr %__last.sroa.0.0.pn.i.i, i64 -72 %_M_string_length.i10.i.i.i.i.i.i28.i.i = getelementptr inbounds i8, ptr %__last.sroa.0.0.pn.i.i, i64 -32 %6 = load i64, ptr %_M_string_length.i10.i.i.i.i.i.i28.i.i, align 8, !tbaa !21 @@ -3527,6 +3523,7 @@ _ZNK9__gnu_cxx5__ops15_Iter_less_iterclINS_17__normal_iteratorIPN3irr5scene10CMe br i1 %cmp.i.i.i.i.i37.i.i, label %while.cond10.i.i, label %while.end18.i.i, !llvm.loop !79 while.end18.i.i: ; preds = %_ZNK9__gnu_cxx5__ops15_Iter_less_iterclINS_17__normal_iteratorIPN3irr5scene10CMeshCache9MeshEntryESt6vectorIS7_SaIS7_EEEESC_EEbT_T0_.exit43.i.i + %_M_string_length.i.i.i.i.i.i.i.i.i.le = getelementptr inbounds nuw i8, ptr %__first.sroa.0.1.i.i, i64 40 %cmp.i.i.i = icmp ult ptr %__first.sroa.0.1.i.i, %__last.sroa.0.1.i.i br i1 %cmp.i.i.i, label %if.end.i.i, label %_ZSt27__unguarded_partition_pivotIN9__gnu_cxx17__normal_iteratorIPN3irr5scene10CMeshCache9MeshEntryESt6vectorIS5_SaIS5_EEEENS0_5__ops15_Iter_less_iterEET_SD_SD_T0_.exit diff --git a/bench/minetest/optimized/COpenGLDriver.ll b/bench/minetest/optimized/COpenGLDriver.ll index 16a73c28a4c..8d5981d20ff 100644 --- a/bench/minetest/optimized/COpenGLDriver.ll +++ b/bench/minetest/optimized/COpenGLDriver.ll @@ -17271,15 +17271,8 @@ if.end: %6 = trunc nuw i64 %5 to i32 br i1 %cmp.not, label %if.then6, label %if.end17 -if.then6: ; preds = %if.end - %ScreenSize = getelementptr inbounds nuw i8, ptr %this, i64 320 - %7 = load i32, ptr %ScreenSize, align 8 - %Height10 = getelementptr inbounds nuw i8, ptr %this, i64 324 - %8 = load i32, ptr %Height10, align 4 - br label %while.cond.i - -while.cond.i: ; preds = %while.cond.i, %if.then6 - %i.0.i = phi i32 [ %shl.i, %while.cond.i ], [ 1, %if.then6 ] +if.then6: ; preds = %if.end, %if.then6 + %i.0.i = phi i32 [ %shl.i, %while.cond.i ], [ 1, %if.end ] %cmp.i34 = icmp ult i32 %i.0.i, %4 %shl.i = shl i32 %i.0.i, 1 br i1 %cmp.i34, label %while.cond.i, label %while.cond10.i, !llvm.loop !452 @@ -17291,6 +17284,10 @@ while.cond10.i: ; preds = %while.cond.i, %whil br i1 %cmp11.i, label %while.cond10.i, label %_ZNK3irr4core11dimension2dIjE14getOptimalSizeEbbbj.exit, !llvm.loop !453 _ZNK3irr4core11dimension2dIjE14getOptimalSizeEbbbj.exit: ; preds = %while.cond10.i + %ScreenSize = getelementptr inbounds nuw i8, ptr %this, i64 320 + %7 = load i32, ptr %ScreenSize, align 8 + %Height10 = getelementptr inbounds nuw i8, ptr %this, i64 324 + %8 = load i32, ptr %Height10, align 4 %9 = tail call i32 @llvm.umin.i32(i32 %7, i32 %4) %10 = tail call i32 @llvm.umin.i32(i32 %6, i32 %8) %cmp20.not.i = icmp eq i32 %j.0.i, %6 @@ -17614,15 +17611,8 @@ if.end: store i32 %sideLen, ptr %destSize.sroa_idx, align 4, !tbaa !129 br i1 %cmp.not, label %if.then6, label %if.end17 -if.then6: ; preds = %if.end - %ScreenSize = getelementptr inbounds nuw i8, ptr %this, i64 320 - %3 = load i32, ptr %ScreenSize, align 8, !tbaa !129 - %Height10 = getelementptr inbounds nuw i8, ptr %this, i64 324 - %4 = load i32, ptr %Height10, align 4, !tbaa !129 - br label %while.cond.i - -while.cond.i: ; preds = %while.cond.i, %if.then6 - %i.0.i = phi i32 [ %shl.i, %while.cond.i ], [ 1, %if.then6 ] +if.then6: ; preds = %if.end, %if.then6 + %i.0.i = phi i32 [ %shl.i, %while.cond.i ], [ 1, %if.end ] %cmp.i31 = icmp ult i32 %i.0.i, %sideLen %shl.i = shl i32 %i.0.i, 1 br i1 %cmp.i31, label %while.cond.i, label %while.cond10.i, !llvm.loop !452 @@ -17634,6 +17624,10 @@ while.cond10.i: ; preds = %while.cond.i, %whil br i1 %cmp11.i, label %while.cond10.i, label %_ZNK3irr4core11dimension2dIjE14getOptimalSizeEbbbj.exit, !llvm.loop !453 _ZNK3irr4core11dimension2dIjE14getOptimalSizeEbbbj.exit: ; preds = %while.cond10.i + %ScreenSize = getelementptr inbounds nuw i8, ptr %this, i64 320 + %3 = load i32, ptr %ScreenSize, align 8, !tbaa !129 + %Height10 = getelementptr inbounds nuw i8, ptr %this, i64 324 + %4 = load i32, ptr %Height10, align 4, !tbaa !129 %.sroa.speculated61 = tail call i32 @llvm.umin.i32(i32 %3, i32 %sideLen) %.sroa.speculated = tail call i32 @llvm.umin.i32(i32 %4, i32 %sideLen) %cmp20.not.i = icmp eq i32 %j.0.i, %sideLen diff --git a/bench/mold/optimized/cmdline.cc.X86_64.ll b/bench/mold/optimized/cmdline.cc.X86_64.ll index bb8593969ae..58f91a77111 100644 --- a/bench/mold/optimized/cmdline.cc.X86_64.ll +++ b/bench/mold/optimized/cmdline.cc.X86_64.ll @@ -52741,10 +52741,9 @@ _ZNSt12_Vector_baseINSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS0_ _ZNSt12_Vector_baseINSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS0_12basic_stringIcSt11char_traitsIcESaIcEEEEEEESaISC_EEC2EmRKSD_.exit.i: ; preds = %14 %18 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %10) #32 store ptr %18, ptr %3, align 8, !tbaa !530 - %19 = getelementptr inbounds nuw i8, ptr %3, i64 8 - %20 = getelementptr inbounds nuw i8, ptr %18, i64 %10 - %21 = getelementptr inbounds nuw i8, ptr %3, i64 16 - store ptr %20, ptr %21, align 8, !tbaa !532 + %19 = getelementptr inbounds nuw i8, ptr %18, i64 %10 + %20 = getelementptr inbounds nuw i8, ptr %3, i64 16 + store ptr %19, ptr %20, align 8, !tbaa !532 br label %.lr.ph.i.i.i.i.i .lr.ph.i.i.i.i.i: ; preds = %_ZNSt12_Vector_baseINSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS0_12basic_stringIcSt11char_traitsIcESaIcEEEEEEESaISC_EEC2EmRKSD_.exit.i, %.lr.ph.i.i.i.i.i @@ -52756,10 +52755,14 @@ _ZNSt12_Vector_baseINSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS0_ %24 = icmp eq ptr %22, %6 br i1 %24, label %_ZNSt6vectorINSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS0_12basic_stringIcSt11char_traitsIcESaIcEEEEEEESaISC_EEC2ERKSE_.exit, label %.lr.ph.i.i.i.i.i, !llvm.loop !1540 -_ZNSt6vectorINSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS0_12basic_stringIcSt11char_traitsIcESaIcEEEEEEESaISC_EEC2ERKSE_.exit: ; preds = %.lr.ph.i.i.i.i.i, %_ZNSt12_Vector_baseINSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS0_12basic_stringIcSt11char_traitsIcESaIcEEEEEEESaISC_EEC2EmRKSD_.exit.i.thread - %25 = phi ptr [ %13, %_ZNSt12_Vector_baseINSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS0_12basic_stringIcSt11char_traitsIcESaIcEEEEEEESaISC_EEC2EmRKSD_.exit.i.thread ], [ %21, %.lr.ph.i.i.i.i.i ] - %26 = phi ptr [ %11, %_ZNSt12_Vector_baseINSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS0_12basic_stringIcSt11char_traitsIcESaIcEEEEEEESaISC_EEC2EmRKSD_.exit.i.thread ], [ %19, %.lr.ph.i.i.i.i.i ] - %.0.lcssa.i.i.i.i.i = phi ptr [ null, %_ZNSt12_Vector_baseINSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS0_12basic_stringIcSt11char_traitsIcESaIcEEEEEEESaISC_EEC2EmRKSD_.exit.i.thread ], [ %23, %.lr.ph.i.i.i.i.i ] +_ZNSt6vectorINSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS0_12basic_stringIcSt11char_traitsIcESaIcEEEEEEESaISC_EEC2ERKSE_.exit: ; preds = %.lr.ph.i.i.i.i.i + %24 = getelementptr inbounds nuw i8, ptr %3, i64 8 + br label %_ZNSt6vectorINSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS0_12basic_stringIcSt11char_traitsIcESaIcEEEEEEESaISC_EEC2ERKSE_.exit + +_ZNSt6vectorINSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS0_12basic_stringIcSt11char_traitsIcESaIcEEEEEEESaISC_EEC2ERKSE_.exit: ; preds = %_ZNSt6vectorINSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS0_12basic_stringIcSt11char_traitsIcESaIcEEEEEEESaISC_EEC2ERKSE_.exit.loopexit, %_ZNSt12_Vector_baseINSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS0_12basic_stringIcSt11char_traitsIcESaIcEEEEEEESaISC_EEC2EmRKSD_.exit.i.thread + %25 = phi ptr [ %13, %_ZNSt12_Vector_baseINSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS0_12basic_stringIcSt11char_traitsIcESaIcEEEEEEESaISC_EEC2EmRKSD_.exit.i.thread ], [ %20, %_ZNSt6vectorINSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS0_12basic_stringIcSt11char_traitsIcESaIcEEEEEEESaISC_EEC2ERKSE_.exit.loopexit ] + %26 = phi ptr [ %11, %_ZNSt12_Vector_baseINSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS0_12basic_stringIcSt11char_traitsIcESaIcEEEEEEESaISC_EEC2EmRKSD_.exit.i.thread ], [ %24, %_ZNSt6vectorINSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS0_12basic_stringIcSt11char_traitsIcESaIcEEEEEEESaISC_EEC2ERKSE_.exit.loopexit ] + %.0.lcssa.i.i.i.i.i = phi ptr [ null, %_ZNSt12_Vector_baseINSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS0_12basic_stringIcSt11char_traitsIcESaIcEEEEEEESaISC_EEC2EmRKSD_.exit.i.thread ], [ %22, %_ZNSt6vectorINSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS0_12basic_stringIcSt11char_traitsIcESaIcEEEEEEESaISC_EEC2ERKSE_.exit.loopexit ] store ptr %.0.lcssa.i.i.i.i.i, ptr %26, align 8, !tbaa !1534 call void @llvm.lifetime.start.p0(ptr nonnull %4) %27 = getelementptr inbounds nuw i8, ptr %0, i64 24 @@ -54085,10 +54088,9 @@ _ZNSt12_Vector_baseINSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS0_ _ZNSt12_Vector_baseINSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS0_12basic_stringIcSt11char_traitsIcESaIcEEEEEEESaISC_EEC2EmRKSD_.exit.i: ; preds = %14 %18 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %10) #32 store ptr %18, ptr %3, align 8, !tbaa !530 - %19 = getelementptr inbounds nuw i8, ptr %3, i64 8 - %20 = getelementptr inbounds nuw i8, ptr %18, i64 %10 - %21 = getelementptr inbounds nuw i8, ptr %3, i64 16 - store ptr %20, ptr %21, align 8, !tbaa !532 + %19 = getelementptr inbounds nuw i8, ptr %18, i64 %10 + %20 = getelementptr inbounds nuw i8, ptr %3, i64 16 + store ptr %19, ptr %20, align 8, !tbaa !532 br label %.lr.ph.i.i.i.i.i .lr.ph.i.i.i.i.i: ; preds = %_ZNSt12_Vector_baseINSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS0_12basic_stringIcSt11char_traitsIcESaIcEEEEEEESaISC_EEC2EmRKSD_.exit.i, %.lr.ph.i.i.i.i.i @@ -54100,10 +54102,14 @@ _ZNSt12_Vector_baseINSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS0_ %24 = icmp eq ptr %22, %6 br i1 %24, label %_ZNSt6vectorINSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS0_12basic_stringIcSt11char_traitsIcESaIcEEEEEEESaISC_EEC2ERKSE_.exit, label %.lr.ph.i.i.i.i.i, !llvm.loop !1540 -_ZNSt6vectorINSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS0_12basic_stringIcSt11char_traitsIcESaIcEEEEEEESaISC_EEC2ERKSE_.exit: ; preds = %.lr.ph.i.i.i.i.i, %_ZNSt12_Vector_baseINSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS0_12basic_stringIcSt11char_traitsIcESaIcEEEEEEESaISC_EEC2EmRKSD_.exit.i.thread - %25 = phi ptr [ %13, %_ZNSt12_Vector_baseINSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS0_12basic_stringIcSt11char_traitsIcESaIcEEEEEEESaISC_EEC2EmRKSD_.exit.i.thread ], [ %21, %.lr.ph.i.i.i.i.i ] - %26 = phi ptr [ %11, %_ZNSt12_Vector_baseINSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS0_12basic_stringIcSt11char_traitsIcESaIcEEEEEEESaISC_EEC2EmRKSD_.exit.i.thread ], [ %19, %.lr.ph.i.i.i.i.i ] - %.0.lcssa.i.i.i.i.i = phi ptr [ null, %_ZNSt12_Vector_baseINSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS0_12basic_stringIcSt11char_traitsIcESaIcEEEEEEESaISC_EEC2EmRKSD_.exit.i.thread ], [ %23, %.lr.ph.i.i.i.i.i ] +_ZNSt6vectorINSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS0_12basic_stringIcSt11char_traitsIcESaIcEEEEEEESaISC_EEC2ERKSE_.exit: ; preds = %.lr.ph.i.i.i.i.i + %24 = getelementptr inbounds nuw i8, ptr %3, i64 8 + br label %_ZNSt6vectorINSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS0_12basic_stringIcSt11char_traitsIcESaIcEEEEEEESaISC_EEC2ERKSE_.exit + +_ZNSt6vectorINSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS0_12basic_stringIcSt11char_traitsIcESaIcEEEEEEESaISC_EEC2ERKSE_.exit: ; preds = %_ZNSt6vectorINSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS0_12basic_stringIcSt11char_traitsIcESaIcEEEEEEESaISC_EEC2ERKSE_.exit.loopexit, %_ZNSt12_Vector_baseINSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS0_12basic_stringIcSt11char_traitsIcESaIcEEEEEEESaISC_EEC2EmRKSD_.exit.i.thread + %25 = phi ptr [ %13, %_ZNSt12_Vector_baseINSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS0_12basic_stringIcSt11char_traitsIcESaIcEEEEEEESaISC_EEC2EmRKSD_.exit.i.thread ], [ %20, %_ZNSt6vectorINSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS0_12basic_stringIcSt11char_traitsIcESaIcEEEEEEESaISC_EEC2ERKSE_.exit.loopexit ] + %26 = phi ptr [ %11, %_ZNSt12_Vector_baseINSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS0_12basic_stringIcSt11char_traitsIcESaIcEEEEEEESaISC_EEC2EmRKSD_.exit.i.thread ], [ %24, %_ZNSt6vectorINSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS0_12basic_stringIcSt11char_traitsIcESaIcEEEEEEESaISC_EEC2ERKSE_.exit.loopexit ] + %.0.lcssa.i.i.i.i.i = phi ptr [ null, %_ZNSt12_Vector_baseINSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS0_12basic_stringIcSt11char_traitsIcESaIcEEEEEEESaISC_EEC2EmRKSD_.exit.i.thread ], [ %22, %_ZNSt6vectorINSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS0_12basic_stringIcSt11char_traitsIcESaIcEEEEEEESaISC_EEC2ERKSE_.exit.loopexit ] store ptr %.0.lcssa.i.i.i.i.i, ptr %26, align 8, !tbaa !1534 call void @llvm.lifetime.start.p0(ptr nonnull %4) %27 = getelementptr inbounds nuw i8, ptr %0, i64 24 @@ -57447,10 +57453,9 @@ _ZNSt12_Vector_baseINSt7__cxx119sub_matchIPKcEESaIS4_EEC2EmRKS5_.exit.i.thread: _ZNSt12_Vector_baseINSt7__cxx119sub_matchIPKcEESaIS4_EEC2EmRKS5_.exit.i: ; preds = %14 %18 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %10) #32 store ptr %18, ptr %3, align 8, !tbaa !596 - %19 = getelementptr inbounds nuw i8, ptr %3, i64 8 - %20 = getelementptr inbounds nuw i8, ptr %18, i64 %10 - %21 = getelementptr inbounds nuw i8, ptr %3, i64 16 - store ptr %20, ptr %21, align 8, !tbaa !598 + %19 = getelementptr inbounds nuw i8, ptr %18, i64 %10 + %20 = getelementptr inbounds nuw i8, ptr %3, i64 16 + store ptr %19, ptr %20, align 8, !tbaa !598 br label %.lr.ph.i.i.i.i.i .lr.ph.i.i.i.i.i: ; preds = %_ZNSt12_Vector_baseINSt7__cxx119sub_matchIPKcEESaIS4_EEC2EmRKS5_.exit.i, %.lr.ph.i.i.i.i.i @@ -57462,10 +57467,14 @@ _ZNSt12_Vector_baseINSt7__cxx119sub_matchIPKcEESaIS4_EEC2EmRKS5_.exit.i: ; preds %24 = icmp eq ptr %22, %6 br i1 %24, label %_ZNSt6vectorINSt7__cxx119sub_matchIPKcEESaIS4_EEC2ERKS6_.exit, label %.lr.ph.i.i.i.i.i, !llvm.loop !1645 -_ZNSt6vectorINSt7__cxx119sub_matchIPKcEESaIS4_EEC2ERKS6_.exit: ; preds = %.lr.ph.i.i.i.i.i, %_ZNSt12_Vector_baseINSt7__cxx119sub_matchIPKcEESaIS4_EEC2EmRKS5_.exit.i.thread - %25 = phi ptr [ %13, %_ZNSt12_Vector_baseINSt7__cxx119sub_matchIPKcEESaIS4_EEC2EmRKS5_.exit.i.thread ], [ %21, %.lr.ph.i.i.i.i.i ] - %26 = phi ptr [ %11, %_ZNSt12_Vector_baseINSt7__cxx119sub_matchIPKcEESaIS4_EEC2EmRKS5_.exit.i.thread ], [ %19, %.lr.ph.i.i.i.i.i ] - %.0.lcssa.i.i.i.i.i = phi ptr [ null, %_ZNSt12_Vector_baseINSt7__cxx119sub_matchIPKcEESaIS4_EEC2EmRKS5_.exit.i.thread ], [ %23, %.lr.ph.i.i.i.i.i ] +_ZNSt6vectorINSt7__cxx119sub_matchIPKcEESaIS4_EEC2ERKS6_.exit: ; preds = %.lr.ph.i.i.i.i.i + %24 = getelementptr inbounds nuw i8, ptr %3, i64 8 + br label %_ZNSt6vectorINSt7__cxx119sub_matchIPKcEESaIS4_EEC2ERKS6_.exit + +_ZNSt6vectorINSt7__cxx119sub_matchIPKcEESaIS4_EEC2ERKS6_.exit: ; preds = %_ZNSt6vectorINSt7__cxx119sub_matchIPKcEESaIS4_EEC2ERKS6_.exit.loopexit, %_ZNSt12_Vector_baseINSt7__cxx119sub_matchIPKcEESaIS4_EEC2EmRKS5_.exit.i.thread + %25 = phi ptr [ %13, %_ZNSt12_Vector_baseINSt7__cxx119sub_matchIPKcEESaIS4_EEC2EmRKS5_.exit.i.thread ], [ %20, %_ZNSt6vectorINSt7__cxx119sub_matchIPKcEESaIS4_EEC2ERKS6_.exit.loopexit ] + %26 = phi ptr [ %11, %_ZNSt12_Vector_baseINSt7__cxx119sub_matchIPKcEESaIS4_EEC2EmRKS5_.exit.i.thread ], [ %24, %_ZNSt6vectorINSt7__cxx119sub_matchIPKcEESaIS4_EEC2ERKS6_.exit.loopexit ] + %.0.lcssa.i.i.i.i.i = phi ptr [ null, %_ZNSt12_Vector_baseINSt7__cxx119sub_matchIPKcEESaIS4_EEC2EmRKS5_.exit.i.thread ], [ %22, %_ZNSt6vectorINSt7__cxx119sub_matchIPKcEESaIS4_EEC2ERKS6_.exit.loopexit ] store ptr %.0.lcssa.i.i.i.i.i, ptr %26, align 8, !tbaa !1639 call void @llvm.lifetime.start.p0(ptr nonnull %4) %27 = getelementptr inbounds nuw i8, ptr %0, i64 24 @@ -58736,10 +58745,9 @@ _ZNSt12_Vector_baseINSt7__cxx119sub_matchIPKcEESaIS4_EEC2EmRKS5_.exit.i.thread: _ZNSt12_Vector_baseINSt7__cxx119sub_matchIPKcEESaIS4_EEC2EmRKS5_.exit.i: ; preds = %14 %18 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %10) #32 store ptr %18, ptr %3, align 8, !tbaa !596 - %19 = getelementptr inbounds nuw i8, ptr %3, i64 8 - %20 = getelementptr inbounds nuw i8, ptr %18, i64 %10 - %21 = getelementptr inbounds nuw i8, ptr %3, i64 16 - store ptr %20, ptr %21, align 8, !tbaa !598 + %19 = getelementptr inbounds nuw i8, ptr %18, i64 %10 + %20 = getelementptr inbounds nuw i8, ptr %3, i64 16 + store ptr %19, ptr %20, align 8, !tbaa !598 br label %.lr.ph.i.i.i.i.i .lr.ph.i.i.i.i.i: ; preds = %_ZNSt12_Vector_baseINSt7__cxx119sub_matchIPKcEESaIS4_EEC2EmRKS5_.exit.i, %.lr.ph.i.i.i.i.i @@ -58751,10 +58759,14 @@ _ZNSt12_Vector_baseINSt7__cxx119sub_matchIPKcEESaIS4_EEC2EmRKS5_.exit.i: ; preds %24 = icmp eq ptr %22, %6 br i1 %24, label %_ZNSt6vectorINSt7__cxx119sub_matchIPKcEESaIS4_EEC2ERKS6_.exit, label %.lr.ph.i.i.i.i.i, !llvm.loop !1645 -_ZNSt6vectorINSt7__cxx119sub_matchIPKcEESaIS4_EEC2ERKS6_.exit: ; preds = %.lr.ph.i.i.i.i.i, %_ZNSt12_Vector_baseINSt7__cxx119sub_matchIPKcEESaIS4_EEC2EmRKS5_.exit.i.thread - %25 = phi ptr [ %13, %_ZNSt12_Vector_baseINSt7__cxx119sub_matchIPKcEESaIS4_EEC2EmRKS5_.exit.i.thread ], [ %21, %.lr.ph.i.i.i.i.i ] - %26 = phi ptr [ %11, %_ZNSt12_Vector_baseINSt7__cxx119sub_matchIPKcEESaIS4_EEC2EmRKS5_.exit.i.thread ], [ %19, %.lr.ph.i.i.i.i.i ] - %.0.lcssa.i.i.i.i.i = phi ptr [ null, %_ZNSt12_Vector_baseINSt7__cxx119sub_matchIPKcEESaIS4_EEC2EmRKS5_.exit.i.thread ], [ %23, %.lr.ph.i.i.i.i.i ] +_ZNSt6vectorINSt7__cxx119sub_matchIPKcEESaIS4_EEC2ERKS6_.exit: ; preds = %.lr.ph.i.i.i.i.i + %24 = getelementptr inbounds nuw i8, ptr %3, i64 8 + br label %_ZNSt6vectorINSt7__cxx119sub_matchIPKcEESaIS4_EEC2ERKS6_.exit + +_ZNSt6vectorINSt7__cxx119sub_matchIPKcEESaIS4_EEC2ERKS6_.exit: ; preds = %_ZNSt6vectorINSt7__cxx119sub_matchIPKcEESaIS4_EEC2ERKS6_.exit.loopexit, %_ZNSt12_Vector_baseINSt7__cxx119sub_matchIPKcEESaIS4_EEC2EmRKS5_.exit.i.thread + %25 = phi ptr [ %13, %_ZNSt12_Vector_baseINSt7__cxx119sub_matchIPKcEESaIS4_EEC2EmRKS5_.exit.i.thread ], [ %20, %_ZNSt6vectorINSt7__cxx119sub_matchIPKcEESaIS4_EEC2ERKS6_.exit.loopexit ] + %26 = phi ptr [ %11, %_ZNSt12_Vector_baseINSt7__cxx119sub_matchIPKcEESaIS4_EEC2EmRKS5_.exit.i.thread ], [ %24, %_ZNSt6vectorINSt7__cxx119sub_matchIPKcEESaIS4_EEC2ERKS6_.exit.loopexit ] + %.0.lcssa.i.i.i.i.i = phi ptr [ null, %_ZNSt12_Vector_baseINSt7__cxx119sub_matchIPKcEESaIS4_EEC2EmRKS5_.exit.i.thread ], [ %22, %_ZNSt6vectorINSt7__cxx119sub_matchIPKcEESaIS4_EEC2ERKS6_.exit.loopexit ] store ptr %.0.lcssa.i.i.i.i.i, ptr %26, align 8, !tbaa !1639 call void @llvm.lifetime.start.p0(ptr nonnull %4) %27 = getelementptr inbounds nuw i8, ptr %0, i64 24 diff --git a/bench/mold/optimized/multi-glob.ll b/bench/mold/optimized/multi-glob.ll index f101ce07b08..5532e9c8d01 100644 --- a/bench/mold/optimized/multi-glob.ll +++ b/bench/mold/optimized/multi-glob.ll @@ -27646,10 +27646,9 @@ _ZNSt12_Vector_baseINSt7__cxx119sub_matchIPKcEESaIS4_EEC2EmRKS5_.exit.i.thread: _ZNSt12_Vector_baseINSt7__cxx119sub_matchIPKcEESaIS4_EEC2EmRKS5_.exit.i: ; preds = %14 %18 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %10) #28 store ptr %18, ptr %3, align 8, !tbaa !51 - %19 = getelementptr inbounds nuw i8, ptr %3, i64 8 - %20 = getelementptr inbounds nuw i8, ptr %18, i64 %10 - %21 = getelementptr inbounds nuw i8, ptr %3, i64 16 - store ptr %20, ptr %21, align 8, !tbaa !54 + %19 = getelementptr inbounds nuw i8, ptr %18, i64 %10 + %20 = getelementptr inbounds nuw i8, ptr %3, i64 16 + store ptr %19, ptr %20, align 8, !tbaa !54 br label %.lr.ph.i.i.i.i.i .lr.ph.i.i.i.i.i: ; preds = %_ZNSt12_Vector_baseINSt7__cxx119sub_matchIPKcEESaIS4_EEC2EmRKS5_.exit.i, %.lr.ph.i.i.i.i.i @@ -27661,10 +27660,14 @@ _ZNSt12_Vector_baseINSt7__cxx119sub_matchIPKcEESaIS4_EEC2EmRKS5_.exit.i: ; preds %24 = icmp eq ptr %22, %6 br i1 %24, label %_ZNSt6vectorINSt7__cxx119sub_matchIPKcEESaIS4_EEC2ERKS6_.exit, label %.lr.ph.i.i.i.i.i, !llvm.loop !803 -_ZNSt6vectorINSt7__cxx119sub_matchIPKcEESaIS4_EEC2ERKS6_.exit: ; preds = %.lr.ph.i.i.i.i.i, %_ZNSt12_Vector_baseINSt7__cxx119sub_matchIPKcEESaIS4_EEC2EmRKS5_.exit.i.thread - %25 = phi ptr [ %13, %_ZNSt12_Vector_baseINSt7__cxx119sub_matchIPKcEESaIS4_EEC2EmRKS5_.exit.i.thread ], [ %21, %.lr.ph.i.i.i.i.i ] - %26 = phi ptr [ %11, %_ZNSt12_Vector_baseINSt7__cxx119sub_matchIPKcEESaIS4_EEC2EmRKS5_.exit.i.thread ], [ %19, %.lr.ph.i.i.i.i.i ] - %.0.lcssa.i.i.i.i.i = phi ptr [ null, %_ZNSt12_Vector_baseINSt7__cxx119sub_matchIPKcEESaIS4_EEC2EmRKS5_.exit.i.thread ], [ %23, %.lr.ph.i.i.i.i.i ] +_ZNSt6vectorINSt7__cxx119sub_matchIPKcEESaIS4_EEC2ERKS6_.exit: ; preds = %.lr.ph.i.i.i.i.i + %24 = getelementptr inbounds nuw i8, ptr %3, i64 8 + br label %_ZNSt6vectorINSt7__cxx119sub_matchIPKcEESaIS4_EEC2ERKS6_.exit + +_ZNSt6vectorINSt7__cxx119sub_matchIPKcEESaIS4_EEC2ERKS6_.exit: ; preds = %_ZNSt6vectorINSt7__cxx119sub_matchIPKcEESaIS4_EEC2ERKS6_.exit.loopexit, %_ZNSt12_Vector_baseINSt7__cxx119sub_matchIPKcEESaIS4_EEC2EmRKS5_.exit.i.thread + %25 = phi ptr [ %13, %_ZNSt12_Vector_baseINSt7__cxx119sub_matchIPKcEESaIS4_EEC2EmRKS5_.exit.i.thread ], [ %20, %_ZNSt6vectorINSt7__cxx119sub_matchIPKcEESaIS4_EEC2ERKS6_.exit.loopexit ] + %26 = phi ptr [ %11, %_ZNSt12_Vector_baseINSt7__cxx119sub_matchIPKcEESaIS4_EEC2EmRKS5_.exit.i.thread ], [ %24, %_ZNSt6vectorINSt7__cxx119sub_matchIPKcEESaIS4_EEC2ERKS6_.exit.loopexit ] + %.0.lcssa.i.i.i.i.i = phi ptr [ null, %_ZNSt12_Vector_baseINSt7__cxx119sub_matchIPKcEESaIS4_EEC2EmRKS5_.exit.i.thread ], [ %22, %_ZNSt6vectorINSt7__cxx119sub_matchIPKcEESaIS4_EEC2ERKS6_.exit.loopexit ] store ptr %.0.lcssa.i.i.i.i.i, ptr %26, align 8, !tbaa !797 call void @llvm.lifetime.start.p0(ptr nonnull %4) %27 = getelementptr inbounds nuw i8, ptr %0, i64 24 @@ -28941,10 +28944,9 @@ _ZNSt12_Vector_baseINSt7__cxx119sub_matchIPKcEESaIS4_EEC2EmRKS5_.exit.i.thread: _ZNSt12_Vector_baseINSt7__cxx119sub_matchIPKcEESaIS4_EEC2EmRKS5_.exit.i: ; preds = %14 %18 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %10) #28 store ptr %18, ptr %3, align 8, !tbaa !51 - %19 = getelementptr inbounds nuw i8, ptr %3, i64 8 - %20 = getelementptr inbounds nuw i8, ptr %18, i64 %10 - %21 = getelementptr inbounds nuw i8, ptr %3, i64 16 - store ptr %20, ptr %21, align 8, !tbaa !54 + %19 = getelementptr inbounds nuw i8, ptr %18, i64 %10 + %20 = getelementptr inbounds nuw i8, ptr %3, i64 16 + store ptr %19, ptr %20, align 8, !tbaa !54 br label %.lr.ph.i.i.i.i.i .lr.ph.i.i.i.i.i: ; preds = %_ZNSt12_Vector_baseINSt7__cxx119sub_matchIPKcEESaIS4_EEC2EmRKS5_.exit.i, %.lr.ph.i.i.i.i.i @@ -28956,10 +28958,14 @@ _ZNSt12_Vector_baseINSt7__cxx119sub_matchIPKcEESaIS4_EEC2EmRKS5_.exit.i: ; preds %24 = icmp eq ptr %22, %6 br i1 %24, label %_ZNSt6vectorINSt7__cxx119sub_matchIPKcEESaIS4_EEC2ERKS6_.exit, label %.lr.ph.i.i.i.i.i, !llvm.loop !803 -_ZNSt6vectorINSt7__cxx119sub_matchIPKcEESaIS4_EEC2ERKS6_.exit: ; preds = %.lr.ph.i.i.i.i.i, %_ZNSt12_Vector_baseINSt7__cxx119sub_matchIPKcEESaIS4_EEC2EmRKS5_.exit.i.thread - %25 = phi ptr [ %13, %_ZNSt12_Vector_baseINSt7__cxx119sub_matchIPKcEESaIS4_EEC2EmRKS5_.exit.i.thread ], [ %21, %.lr.ph.i.i.i.i.i ] - %26 = phi ptr [ %11, %_ZNSt12_Vector_baseINSt7__cxx119sub_matchIPKcEESaIS4_EEC2EmRKS5_.exit.i.thread ], [ %19, %.lr.ph.i.i.i.i.i ] - %.0.lcssa.i.i.i.i.i = phi ptr [ null, %_ZNSt12_Vector_baseINSt7__cxx119sub_matchIPKcEESaIS4_EEC2EmRKS5_.exit.i.thread ], [ %23, %.lr.ph.i.i.i.i.i ] +_ZNSt6vectorINSt7__cxx119sub_matchIPKcEESaIS4_EEC2ERKS6_.exit: ; preds = %.lr.ph.i.i.i.i.i + %24 = getelementptr inbounds nuw i8, ptr %3, i64 8 + br label %_ZNSt6vectorINSt7__cxx119sub_matchIPKcEESaIS4_EEC2ERKS6_.exit + +_ZNSt6vectorINSt7__cxx119sub_matchIPKcEESaIS4_EEC2ERKS6_.exit: ; preds = %_ZNSt6vectorINSt7__cxx119sub_matchIPKcEESaIS4_EEC2ERKS6_.exit.loopexit, %_ZNSt12_Vector_baseINSt7__cxx119sub_matchIPKcEESaIS4_EEC2EmRKS5_.exit.i.thread + %25 = phi ptr [ %13, %_ZNSt12_Vector_baseINSt7__cxx119sub_matchIPKcEESaIS4_EEC2EmRKS5_.exit.i.thread ], [ %20, %_ZNSt6vectorINSt7__cxx119sub_matchIPKcEESaIS4_EEC2ERKS6_.exit.loopexit ] + %26 = phi ptr [ %11, %_ZNSt12_Vector_baseINSt7__cxx119sub_matchIPKcEESaIS4_EEC2EmRKS5_.exit.i.thread ], [ %24, %_ZNSt6vectorINSt7__cxx119sub_matchIPKcEESaIS4_EEC2ERKS6_.exit.loopexit ] + %.0.lcssa.i.i.i.i.i = phi ptr [ null, %_ZNSt12_Vector_baseINSt7__cxx119sub_matchIPKcEESaIS4_EEC2EmRKS5_.exit.i.thread ], [ %22, %_ZNSt6vectorINSt7__cxx119sub_matchIPKcEESaIS4_EEC2ERKS6_.exit.loopexit ] store ptr %.0.lcssa.i.i.i.i.i, ptr %26, align 8, !tbaa !797 call void @llvm.lifetime.start.p0(ptr nonnull %4) %27 = getelementptr inbounds nuw i8, ptr %0, i64 24 diff --git a/bench/ncnn/optimized/fold.ll b/bench/ncnn/optimized/fold.ll index 6a7a5ba7492..223897dbc79 100644 --- a/bench/ncnn/optimized/fold.ll +++ b/bench/ncnn/optimized/fold.ll @@ -580,41 +580,41 @@ define internal void @_ZNK4ncnn4Fold7forwardERKNS_3MatERS1_RKNS_6OptionE.omp_out %24 = load ptr, ptr %3, align 8, !tbaa !45 %25 = getelementptr inbounds nuw i8, ptr %3, i64 44 %26 = load i32, ptr %25, align 4, !tbaa !50 - %27 = sext i32 %26 to i64 - %28 = getelementptr inbounds nuw i8, ptr %3, i64 16 - %29 = load i64, ptr %28, align 8, !tbaa !40 - %factor.op.mul = mul i64 %29, %27 - %30 = getelementptr inbounds nuw i8, ptr %5, i64 44 - %31 = load i32, ptr %30, align 4, !tbaa !50, !noalias !60 - %32 = getelementptr inbounds nuw i8, ptr %5, i64 48 - %33 = load i32, ptr %32, align 8, !tbaa !37, !noalias !60 - %34 = getelementptr inbounds nuw i8, ptr %5, i64 52 - %35 = load i32, ptr %34, align 4, !tbaa !51, !noalias !60 - %36 = load ptr, ptr %5, align 8, !tbaa !45, !noalias !60 - %37 = getelementptr inbounds nuw i8, ptr %5, i64 64 - %38 = load i64, ptr %37, align 8, !tbaa !42, !noalias !60 - %39 = getelementptr inbounds nuw i8, ptr %5, i64 16 - %40 = load i64, ptr %39, align 8, !tbaa !40, !noalias !60 - %factor.op.mul86 = mul i64 %38, %40 - %41 = sext i32 %31 to i64 - %42 = sext i32 %33 to i64 - %43 = mul nsw i64 %42, %41 - %44 = mul i64 %40, %43 - %45 = add i64 %44, 15 - %46 = and i64 %45, -16 - %47 = udiv i64 %46, %40 - %48 = getelementptr inbounds nuw i8, ptr %5, i64 40 - %49 = load i32, ptr %48, align 8, !tbaa !49, !noalias !60 - %50 = icmp eq i32 %49, 4 - %spec.select = select i1 %50, i64 %43, i64 %47 - %51 = trunc i64 %spec.select to i32 - %52 = mul i32 %35, %51 - %53 = icmp sgt i32 %52, 0 + %27 = getelementptr inbounds nuw i8, ptr %3, i64 16 + %28 = load i64, ptr %27, align 8, !tbaa !40 + %29 = getelementptr inbounds nuw i8, ptr %5, i64 44 + %30 = load i32, ptr %29, align 4, !tbaa !50, !noalias !60 + %30 = getelementptr inbounds nuw i8, ptr %5, i64 48 + %31 = load i32, ptr %30, align 8, !tbaa !37, !noalias !60 + %32 = getelementptr inbounds nuw i8, ptr %5, i64 52 + %33 = load i32, ptr %32, align 4, !tbaa !51, !noalias !60 + %35 = load ptr, ptr %5, align 8, !tbaa !45, !noalias !60 + %36 = getelementptr inbounds nuw i8, ptr %5, i64 64 + %36 = load i64, ptr %36, align 8, !tbaa !42, !noalias !60 + %37 = getelementptr inbounds nuw i8, ptr %5, i64 16 + %38 = load i64, ptr %37, align 8, !tbaa !40, !noalias !60 + %factor.op.mul = mul i64 %36, %39 + %40 = sext i32 %30 to i64 + %41 = sext i32 %32 to i64 + %42 = mul nsw i64 %41, %40 + %43 = mul i64 %39, %42 + %44 = add i64 %43, 15 + %45 = and i64 %44, -16 + %46 = udiv i64 %45, %39 + %47 = getelementptr inbounds nuw i8, ptr %5, i64 40 + %48 = load i32, ptr %47, align 8, !tbaa !49, !noalias !60 + %49 = icmp eq i32 %48, 4 + %spec.select = select i1 %49, i64 %42, i64 %46 + %50 = trunc i64 %spec.select to i32 + %51 = mul i32 %34, %50 + %52 = icmp sgt i32 %51, 0 + %53 = sext i32 %26 to i64 + %factor.op.mul86 = mul i64 %28, %53 %54 = getelementptr inbounds nuw i8, ptr %6, i64 212 %55 = load i32, ptr %54, align 4, !tbaa !26 %56 = icmp sgt i32 %55, 0 %57 = getelementptr inbounds nuw i8, ptr %6, i64 220 - %58 = mul i64 %40, %41 + %58 = mul i64 %39, %40 %59 = getelementptr inbounds nuw i8, ptr %6, i64 216 %60 = getelementptr inbounds nuw i8, ptr %6, i64 224 br i1 %56, label %.noexc.lr.ph.split.us, label %.noexc.lr.ph.split @@ -629,14 +629,14 @@ define internal void @_ZNK4ncnn4Fold7forwardERKNS_3MatERS1_RKNS_6OptionE.omp_out %64 = load i32, ptr %57, align 4, !tbaa !28 %65 = load i32, ptr %59, align 8, !tbaa !27 %66 = sext i32 %22 to i64 - %67 = zext i32 %52 to i64 + %67 = zext i32 %51 to i64 %68 = shl nuw nsw i64 %67, 2 %69 = sext i32 %65 to i64 %70 = sext i32 %64 to i64 %71 = sext i32 %23 to i64 %72 = add nsw i32 %21, 1 %73 = sub i32 %72, %22 - %factor.op.mul155 = mul i64 %factor.op.mul, %71 + %factor.op.mul155 = mul i64 %factor.op.mul86, %71 %wide.trip.count136 = zext nneg i32 %55 to i64 %factor.op.mul154 = mul i64 %58, %70 %wide.trip.count = zext nneg i32 %62 to i64 @@ -645,23 +645,26 @@ define internal void @_ZNK4ncnn4Fold7forwardERKNS_3MatERS1_RKNS_6OptionE.omp_out .noexc.us.us: ; preds = %_ZN4ncnn3Mat4fillEf.exit._ZN4ncnn3MatD2Ev.exit_crit_edge.split.us.us.us, %.noexc.lr.ph.split.us.split.us %indvars.iv138 = phi i64 [ %indvars.iv.next139, %_ZN4ncnn3Mat4fillEf.exit._ZN4ncnn3MatD2Ev.exit_crit_edge.split.us.us.us ], [ %66, %.noexc.lr.ph.split.us.split.us ] %indvar126 = phi i64 [ %indvar.next127, %_ZN4ncnn3Mat4fillEf.exit._ZN4ncnn3MatD2Ev.exit_crit_edge.split.us.us.us ], [ 0, %.noexc.lr.ph.split.us.split.us ] - %.reass156 = mul i64 %indvars.iv138, %factor.op.mul155 - %74 = getelementptr inbounds nuw i8, ptr %24, i64 %.reass156 - %.reass87.us.us = mul i64 %factor.op.mul86, %indvars.iv138 - %75 = getelementptr inbounds nuw i8, ptr %36, i64 %.reass87.us.us - br i1 %53, label %.lr.ph.us.us.preheader, label %_ZN4ncnn3Mat4fillEf.exit.preheader.us.us + %.reass156 = mul i64 %factor.op.mul, %indvars.iv138 + %74 = getelementptr inbounds nuw i8, ptr %35, i64 %.reass156 + br i1 %52, label %.lr.ph.us.us.preheader, label %_ZN4ncnn3Mat4fillEf.exit.preheader.us.us .lr.ph.us.us.preheader: ; preds = %.noexc.us.us %76 = add i64 %indvar126, %66 - %77 = mul i64 %factor.op.mul86, %76 - %scevgep128 = getelementptr i8, ptr %36, i64 %77 + %77 = mul i64 %factor.op.mul, %76 + %scevgep128 = getelementptr i8, ptr %35, i64 %77 call void @llvm.memset.p0.i64(ptr align 4 %scevgep128, i8 0, i64 %68, i1 false), !tbaa !63 br label %_ZN4ncnn3Mat4fillEf.exit.preheader.us.us _ZN4ncnn3Mat4fillEf.exit.preheader.us.us: ; preds = %.lr.ph.us.us.preheader, %.noexc.us.us %78 = load i32, ptr %7, align 4 %79 = icmp sgt i32 %78, 0 - br i1 %79, label %.preheader52.us.us.us.us, label %_ZN4ncnn3Mat4fillEf.exit._ZN4ncnn3MatD2Ev.exit_crit_edge.split.us.us.us + br i1 %79, label %.preheader52.us.us.us.us.preheader, label %_ZN4ncnn3Mat4fillEf.exit._ZN4ncnn3MatD2Ev.exit_crit_edge.split.us.us.us + +.preheader52.us.us.us.us.preheader: ; preds = %_ZN4ncnn3Mat4fillEf.exit.preheader.us.us + %.reass156 = mul i64 %indvars.iv138, %factor.op.mul155 + %79 = getelementptr inbounds nuw i8, ptr %24, i64 %.reass156 + br label %.preheader52.us.us.us.us _ZN4ncnn3Mat4fillEf.exit._ZN4ncnn3MatD2Ev.exit_crit_edge.split.us.us.us: ; preds = %._crit_edge.split.us.us.us.us.us, %_ZN4ncnn3Mat4fillEf.exit.preheader.us.us %indvars.iv.next139 = add nsw i64 %indvars.iv138, 1 @@ -670,11 +673,11 @@ _ZN4ncnn3Mat4fillEf.exit._ZN4ncnn3MatD2Ev.exit_crit_edge.split.us.us.us: ; preds %exitcond142.not = icmp eq i32 %73, %lftr.wideiv141 br i1 %exitcond142.not, label %._crit_edge, label %.noexc.us.us -.preheader52.us.us.us.us: ; preds = %_ZN4ncnn3Mat4fillEf.exit.preheader.us.us, %._crit_edge.split.us.us.us.us.us - %indvars.iv133 = phi i64 [ %indvars.iv.next134, %._crit_edge.split.us.us.us.us.us ], [ 0, %_ZN4ncnn3Mat4fillEf.exit.preheader.us.us ] - %.03975.us.us.us.us = phi ptr [ %.us-phi.us.us.us.us, %._crit_edge.split.us.us.us.us.us ], [ %74, %_ZN4ncnn3Mat4fillEf.exit.preheader.us.us ] +.preheader52.us.us.us.us: ; preds = %.preheader52.us.us.us.us.preheader, %._crit_edge.split.us.us.us.us.us + %indvars.iv133 = phi i64 [ 0, %.preheader52.us.us.us.us.preheader ], [ %indvars.iv.next134, %._crit_edge.split.us.us.us.us.us ] + %.03975.us.us.us.us = phi ptr [ %79, %.preheader52.us.us.us.us.preheader ], [ %.us-phi.us.us.us.us, %._crit_edge.split.us.us.us.us.us ] %.reass = mul i64 %indvars.iv133, %factor.op.mul154 - %80 = getelementptr inbounds nuw i8, ptr %75, i64 %.reass + %80 = getelementptr inbounds nuw i8, ptr %74, i64 %.reass %81 = load i32, ptr %8, align 4 %82 = icmp sgt i32 %81, 0 %83 = load i32, ptr %9, align 4 @@ -731,11 +734,11 @@ _ZN4ncnn3Mat4fillEf.exit._ZN4ncnn3MatD2Ev.exit_crit_edge.split.us.us.us: ; preds br i1 %exitcond132.not, label %._crit_edge.split.us.us.us.us.us, label %.preheader.lr.ph.us.us.us.us.us.us, !llvm.loop !69 .noexc.lr.ph.split.us.split: ; preds = %.noexc.lr.ph.split.us - br i1 %53, label %.noexc.us.us105.preheader, label %._crit_edge + br i1 %52, label %.noexc.us.us105.preheader, label %._crit_edge .noexc.us.us105.preheader: ; preds = %.noexc.lr.ph.split.us.split %98 = sext i32 %22 to i64 - %99 = zext nneg i32 %52 to i64 + %99 = zext nneg i32 %51 to i64 %100 = shl nuw nsw i64 %99, 2 %101 = add nsw i32 %21, 1 %102 = sub i32 %101, %22 @@ -744,8 +747,8 @@ _ZN4ncnn3Mat4fillEf.exit._ZN4ncnn3MatD2Ev.exit_crit_edge.split.us.us.us: ; preds .noexc.us.us105: ; preds = %.noexc.us.us105.preheader, %.noexc.us.us105 %indvar121 = phi i64 [ 0, %.noexc.us.us105.preheader ], [ %indvar.next122, %.noexc.us.us105 ] %103 = add i64 %indvar121, %98 - %104 = mul i64 %factor.op.mul86, %103 - %scevgep123 = getelementptr i8, ptr %36, i64 %104 + %104 = mul i64 %factor.op.mul, %103 + %scevgep123 = getelementptr i8, ptr %35, i64 %104 call void @llvm.memset.p0.i64(ptr align 4 %scevgep123, i8 0, i64 %100, i1 false), !tbaa !63 %indvar.next122 = add nuw nsw i64 %indvar121, 1 %lftr.wideiv124 = trunc i64 %indvar.next122 to i32 @@ -753,11 +756,11 @@ _ZN4ncnn3Mat4fillEf.exit._ZN4ncnn3MatD2Ev.exit_crit_edge.split.us.us.us: ; preds br i1 %exitcond125.not, label %._crit_edge, label %.noexc.us.us105 .noexc.lr.ph.split: ; preds = %.noexc.lr.ph - br i1 %53, label %.noexc.us96.preheader, label %._crit_edge + br i1 %52, label %.noexc.us96.preheader, label %._crit_edge .noexc.us96.preheader: ; preds = %.noexc.lr.ph.split %105 = sext i32 %22 to i64 - %106 = zext nneg i32 %52 to i64 + %106 = zext nneg i32 %51 to i64 %107 = shl nuw nsw i64 %106, 2 %108 = add nsw i32 %21, 1 %109 = sub i32 %108, %22 @@ -766,8 +769,8 @@ _ZN4ncnn3Mat4fillEf.exit._ZN4ncnn3MatD2Ev.exit_crit_edge.split.us.us.us: ; preds .noexc.us96: ; preds = %.noexc.us96.preheader, %.noexc.us96 %indvar = phi i64 [ 0, %.noexc.us96.preheader ], [ %indvar.next, %.noexc.us96 ] %110 = add i64 %indvar, %105 - %111 = mul i64 %factor.op.mul86, %110 - %scevgep = getelementptr i8, ptr %36, i64 %111 + %111 = mul i64 %factor.op.mul, %110 + %scevgep = getelementptr i8, ptr %35, i64 %111 call void @llvm.memset.p0.i64(ptr align 4 %scevgep, i8 0, i64 %107, i1 false), !tbaa !63 %indvar.next = add nuw nsw i64 %indvar, 1 %lftr.wideiv = trunc i64 %indvar.next to i32 diff --git a/bench/nghttp2/optimized/nghttp2_hd.ll b/bench/nghttp2/optimized/nghttp2_hd.ll index 8a157455e6f..63003a8320d 100644 --- a/bench/nghttp2/optimized/nghttp2_hd.ll +++ b/bench/nghttp2/optimized/nghttp2_hd.ll @@ -801,9 +801,9 @@ emit_table_size.exit.thread: ; preds = %count_encoded_lengt br label %._crit_edge.i.i ._crit_edge.i.i: ; preds = %._crit_edge.i.i.loopexit, %32 - %.011.i131626.i = phi i64 [ 2, %32 ], [ %37, %._crit_edge.i.i.loopexit ] - %.025.lcssa.i.i = phi i64 [ %23, %32 ], [ %35, %._crit_edge.i.i.loopexit ] - %.024.lcssa.i.i = phi ptr [ %.02428.i.i, %32 ], [ %.024.i.i, %._crit_edge.i.i.loopexit ] + %.011.i131626.i = phi i64 [ 2, %32 ], [ %37, %._crit_edge.i.loopexit.i ] + %.025.lcssa.i.i = phi i64 [ %23, %32 ], [ %35, %._crit_edge.i.loopexit.i ] + %.024.lcssa.i.i = phi ptr [ %.02428.i.i, %32 ], [ %.024.i.i, %._crit_edge.i.loopexit.i ] %38 = trunc nuw nsw i64 %.025.lcssa.i.i to i8 store i8 %38, ptr %.024.lcssa.i.i, align 1, !tbaa !11 br label %emit_table_size.exit @@ -878,9 +878,9 @@ emit_table_size.exit56.thread: ; preds = %count_encoded_lengt br label %._crit_edge.i.i39 ._crit_edge.i.i39: ; preds = %._crit_edge.i.i39.loopexit, %53 - %.011.i131626.i40 = phi i64 [ 2, %53 ], [ %58, %._crit_edge.i.i39.loopexit ] - %.025.lcssa.i.i41 = phi i64 [ %44, %53 ], [ %56, %._crit_edge.i.i39.loopexit ] - %.024.lcssa.i.i42 = phi ptr [ %.02428.i.i38, %53 ], [ %.024.i.i55, %._crit_edge.i.i39.loopexit ] + %.011.i131626.i40 = phi i64 [ 2, %53 ], [ %58, %._crit_edge.i.loopexit.i56 ] + %.025.lcssa.i.i41 = phi i64 [ %44, %53 ], [ %56, %._crit_edge.i.loopexit.i56 ] + %.024.lcssa.i.i42 = phi ptr [ %.02428.i.i38, %53 ], [ %.024.i.i55, %._crit_edge.i.loopexit.i56 ] %59 = trunc nuw nsw i64 %.025.lcssa.i.i41 to i8 store i8 %59, ptr %.024.lcssa.i.i42, align 1, !tbaa !11 br label %emit_table_size.exit56 @@ -932,8 +932,8 @@ emit_table_size.exit56: ; preds = %50, %._crit_edge.i. br i1 %.not.i.i, label %name_hash.exit.thread.i, label %.lr.ph.i.i57 .lr.ph.i.i57: ; preds = %82, %.lr.ph.i.i57 - %.014.i.i = phi i64 [ %88, %.lr.ph.i.i57 ], [ 0, %82 ] - %.01213.i.i = phi i32 [ %87, %.lr.ph.i.i57 ], [ -2128831035, %82 ] + %.014.i.i = phi i64 [ %88, %.lr.ph.i.i58 ], [ 0, %82 ] + %.01213.i.i = phi i32 [ %87, %.lr.ph.i.i58 ], [ -2128831035, %82 ] %83 = getelementptr inbounds nuw i8, ptr %77, i64 %.014.i.i %84 = load i8, ptr %83, align 1, !tbaa !11 %85 = zext i8 %84 to i32 @@ -968,7 +968,7 @@ name_hash.exit.i: ; preds = %91, %89 br i1 %99, label %hd_deflate_decide_indexing.exit.i, label %name_hash.exit.thread.i name_hash.exit.thread.i: ; preds = %.lr.ph.i.i57, %96, %name_hash.exit.i, %82 - %.05983.i = phi i32 [ %.059.i, %name_hash.exit.i ], [ %.059.i, %96 ], [ -2128831035, %82 ], [ %87, %.lr.ph.i.i57 ] + %.05983.i = phi i32 [ %.059.i, %name_hash.exit.i ], [ %.059.i, %96 ], [ -2128831035, %82 ], [ %87, %.lr.ph.i.i58 ] %100 = getelementptr inbounds nuw i8, ptr %75, i64 32 %101 = load i8, ptr %100, align 8, !tbaa !88 %102 = and i8 %101, 1 @@ -1276,9 +1276,9 @@ count_encoded_length.exit.i.i: ; preds = %.lr.ph.i.i78.i br label %._crit_edge.i.i.i ._crit_edge.i.i.i: ; preds = %._crit_edge.i.i.loopexit.i, %216 - %.011.i131626.i.i = phi i64 [ 2, %216 ], [ %221, %._crit_edge.i.i.loopexit.i ] - %.025.lcssa.i.i.i = phi i64 [ %206, %216 ], [ %219, %._crit_edge.i.i.loopexit.i ] - %.024.lcssa.i.i.i = phi ptr [ %.02428.i.i.i, %216 ], [ %.024.i.i.i, %._crit_edge.i.i.loopexit.i ] + %.011.i131626.i.i = phi i64 [ 2, %216 ], [ %221, %._crit_edge.i.loopexit.i.i ] + %.025.lcssa.i.i.i = phi i64 [ %206, %216 ], [ %219, %._crit_edge.i.loopexit.i.i ] + %.024.lcssa.i.i.i = phi ptr [ %.02428.i.i.i, %216 ], [ %.024.i.i.i, %._crit_edge.i.loopexit.i.i ] %222 = trunc nuw nsw i64 %.025.lcssa.i.i.i to i8 store i8 %222, ptr %.024.lcssa.i.i.i, align 1, !tbaa !11 br label %encode_length.exit.i.i @@ -1430,7 +1430,7 @@ deflate_nv.exit: ; preds = %emit_indexed_block. br i1 %.not35, label %72, label %.thread .thread: ; preds = %263, %pack_first_byte.exit.i.i, %255, %deflate_nv.exit, %.thread.i, %emit_table_size.exit56.thread, %emit_table_size.exit56, %emit_table_size.exit.thread, %emit_table_size.exit - %.1 = phi i32 [ -523, %emit_table_size.exit56.thread ], [ %.fr, %emit_table_size.exit56 ], [ -523, %emit_table_size.exit.thread ], [ %39, %emit_table_size.exit ], [ %.1.ph.i, %.thread.i ], [ -523, %255 ], [ %262, %pack_first_byte.exit.i.i ], [ %266, %263 ], [ %.057.i, %deflate_nv.exit ] + %.1 = phi i32 [ -523, %emit_table_size.exit57.thread ], [ %.fr, %emit_table_size.exit57 ], [ -523, %emit_table_size.exit.thread ], [ %39, %emit_table_size.exit ], [ %.1.ph.i, %.thread.i ], [ -523, %255 ], [ %262, %pack_first_byte.exit.i.i ], [ %266, %263 ], [ %.057.i, %deflate_nv.exit ] store i8 1, ptr %9, align 4, !tbaa !78 br label %.loopexit @@ -3419,9 +3419,9 @@ count_encoded_length.exit.i: ; preds = %.lr.ph.i.i br label %._crit_edge.i.i ._crit_edge.i.i: ; preds = %._crit_edge.i.i.loopexit, %15 - %.011.i131626.i = phi i64 [ 2, %15 ], [ %20, %._crit_edge.i.i.loopexit ] - %.025.lcssa.i.i = phi i64 [ %6, %15 ], [ %18, %._crit_edge.i.i.loopexit ] - %.024.lcssa.i.i = phi ptr [ %.02428.i.i, %15 ], [ %.024.i.i, %._crit_edge.i.i.loopexit ] + %.011.i131626.i = phi i64 [ 2, %15 ], [ %20, %._crit_edge.i.loopexit.i ] + %.025.lcssa.i.i = phi i64 [ %6, %15 ], [ %18, %._crit_edge.i.loopexit.i ] + %.024.lcssa.i.i = phi ptr [ %.02428.i.i, %15 ], [ %.024.i.i, %._crit_edge.i.loopexit.i ] %21 = trunc nuw nsw i64 %.025.lcssa.i.i to i8 store i8 %21, ptr %.024.lcssa.i.i, align 1, !tbaa !11 br label %encode_length.exit.i @@ -4528,9 +4528,8 @@ count_encoded_length.exit: ; preds = %.lr.ph.i br label %._crit_edge.i .lr.ph.i33.preheader: ; preds = %count_encoded_length.exit - %20 = add nuw nsw i64 %.016.i, 2 - %21 = select i1 %.not, i8 -1, i8 127 - store i8 %21, ptr %4, align 16, !tbaa !11 + %20 = select i1 %.not, i8 -1, i8 127 + store i8 %20, ptr %4, align 16, !tbaa !11 %.02428.i48 = getelementptr inbounds nuw i8, ptr %4, i64 1 br label %.lr.ph.i33 @@ -4545,10 +4544,14 @@ count_encoded_length.exit: ; preds = %.lr.ph.i %25 = icmp ugt i64 %.02529.i, 16383 br i1 %25, label %.lr.ph.i33, label %._crit_edge.i, !llvm.loop !80 -._crit_edge.i: ; preds = %.lr.ph.i33, %18 - %.011.i353849 = phi i64 [ 2, %18 ], [ %20, %.lr.ph.i33 ] - %.025.lcssa.i = phi i64 [ %8, %18 ], [ %24, %.lr.ph.i33 ] - %.024.lcssa.i = phi ptr [ %.02428.i, %18 ], [ %.024.i, %.lr.ph.i33 ] +._crit_edge.i: ; preds = %.lr.ph.i33 + %25 = add nuw nsw i64 %.016.i, 2 + br label %._crit_edge.i + +._crit_edge.i: ; preds = %._crit_edge.i.loopexit, %18 + %.011.i353849 = phi i64 [ 2, %18 ], [ %25, %._crit_edge.i.loopexit ] + %.025.lcssa.i = phi i64 [ %8, %18 ], [ %23, %._crit_edge.i.loopexit ] + %.024.lcssa.i = phi ptr [ %.02428.i, %18 ], [ %.024.i, %._crit_edge.i.loopexit ] %26 = trunc nuw nsw i64 %.025.lcssa.i to i8 store i8 %26, ptr %.024.lcssa.i, align 1, !tbaa !11 br label %encode_length.exit diff --git a/bench/node/optimized/libnode.node_buffer.ll b/bench/node/optimized/libnode.node_buffer.ll index 327ed6e858e..a82509bf421 100644 --- a/bench/node/optimized/libnode.node_buffer.ll +++ b/bench/node/optimized/libnode.node_buffer.ll @@ -15951,7 +15951,6 @@ return: ; preds = %for.body, %for.inc4 ; Function Attrs: mustprogress nounwind uwtable define linkonce_odr dso_local void @_ZN4node12stringsearch12StringSearchItE23PopulateBoyerMooreTableEv(ptr noundef nonnull align 8 dereferenceable(3072) %this) local_unnamed_addr #3 comdat align 2 { entry: - %pattern_ = getelementptr inbounds nuw i8, ptr %this, i64 3032 %length_.i = getelementptr inbounds nuw i8, ptr %this, i64 3040 %0 = load i64, ptr %length_.i, align 8 %start_ = getelementptr inbounds nuw i8, ptr %this, i64 3064 @@ -15960,8 +15959,6 @@ entry: %good_suffix_shift_table_ = getelementptr inbounds nuw i8, ptr %this, i64 1024 %idx.neg = sub i64 0, %1 %add.ptr = getelementptr inbounds i32, ptr %good_suffix_shift_table_, i64 %idx.neg - %suffix_table_ = getelementptr inbounds nuw i8, ptr %this, i64 2028 - %add.ptr6 = getelementptr inbounds i32, ptr %suffix_table_, i64 %idx.neg %cmp86 = icmp ult i64 %1, %0 br i1 %cmp86, label %for.body.lr.ph, label %for.end @@ -15978,6 +15975,8 @@ for.body: ; preds = %for.body.lr.ph, %fo br i1 %exitcond.not, label %if.end, label %for.body, !llvm.loop !35 for.end: ; preds = %entry + %suffix_table_ = getelementptr inbounds nuw i8, ptr %this, i64 2028 + %add.ptr6 = getelementptr inbounds i32, ptr %suffix_table_, i64 %idx.neg %arrayidx7 = getelementptr inbounds i32, ptr %add.ptr, i64 %0 store i32 1, ptr %arrayidx7, align 4 %2 = trunc i64 %0 to i32 @@ -15987,14 +15986,17 @@ for.end: ; preds = %entry br label %if.end98 if.end: ; preds = %for.body - %arrayidx7103 = getelementptr inbounds i32, ptr %add.ptr, i64 %0 - store i32 1, ptr %arrayidx7103, align 4 - %add104 = add i64 %0, 1 - %conv8105 = trunc i64 %add104 to i32 - %arrayidx9106 = getelementptr inbounds i32, ptr %add.ptr6, i64 %0 - store i32 %conv8105, ptr %arrayidx9106, align 4 + %arrayidx7103 = getelementptr inbounds nuw i8, ptr %this, i64 3032 + %suffix_table_104 = getelementptr inbounds nuw i8, ptr %this, i64 2028 + %add.ptr6105 = getelementptr inbounds i32, ptr %suffix_table_104, i64 %idx.neg + %arrayidx7106 = getelementptr inbounds i32, ptr %add.ptr, i64 %0 + store i32 1, ptr %arrayidx7106, align 4 + %add107 = add i64 %0, 1 + %conv8108 = trunc i64 %add107 to i32 + %arrayidx9109 = getelementptr inbounds i32, ptr %add.ptr6105, i64 %0 + store i32 %conv8108, ptr %arrayidx9109, align 4 %sub12 = add i64 %0, -1 - %3 = load ptr, ptr %pattern_, align 8 + %3 = load ptr, ptr %pattern_103, align 8 %is_forward_.i = getelementptr inbounds nuw i8, ptr %this, i64 3048 %4 = load i8, ptr %is_forward_.i, align 8 %tobool.i = trunc i8 %4 to i1 @@ -16008,9 +16010,9 @@ if.end: ; preds = %for.body while.body: ; preds = %if.end, %if.end74 %i15.095 = phi i64 [ %0, %if.end ], [ %i15.1, %if.end74 ] - %suffix.094 = phi i64 [ %add104, %if.end ], [ %suffix.2, %if.end74 ] + %suffix.094 = phi i64 [ %add107, %if.end ], [ %suffix.2, %if.end74 ] %sub18 = add i64 %i15.095, -1 - %7 = load ptr, ptr %pattern_, align 8 + %7 = load ptr, ptr %pattern_103, align 8 %8 = load i8, ptr %is_forward_.i, align 8 %tobool.i68 = trunc i8 %8 to i1 %9 = load i64, ptr %length_.i, align 8 @@ -16024,7 +16026,7 @@ while.body: ; preds = %if.end, %if.end74 land.rhs: ; preds = %while.body, %if.end36 %suffix.189 = phi i64 [ %conv38, %if.end36 ], [ %suffix.094, %while.body ] %sub24 = add i64 %suffix.189, -1 - %11 = load ptr, ptr %pattern_, align 8 + %11 = load ptr, ptr %pattern_103, align 8 %12 = load i8, ptr %is_forward_.i, align 8 %tobool.i74 = trunc i8 %12 to i1 %13 = load i64, ptr %length_.i, align 8 @@ -16049,7 +16051,7 @@ if.then32: ; preds = %while.body28 br label %if.end36 if.end36: ; preds = %if.then32, %while.body28 - %arrayidx37 = getelementptr inbounds i32, ptr %add.ptr6, i64 %suffix.189 + %arrayidx37 = getelementptr inbounds i32, ptr %add.ptr6105, i64 %suffix.189 %16 = load i32, ptr %arrayidx37, align 4 %conv38 = sext i32 %16 to i64 %cmp21.not = icmp ult i64 %0, %conv38 @@ -16059,7 +16061,7 @@ while.end: ; preds = %land.rhs, %if.end36 %suffix.1.lcssa = phi i64 [ %suffix.094, %while.body ], [ %conv38, %if.end36 ], [ %suffix.189, %land.rhs ] %dec = add i64 %suffix.1.lcssa, -1 %conv39 = trunc i64 %dec to i32 - %arrayidx41 = getelementptr inbounds i32, ptr %add.ptr6, i64 %sub18 + %arrayidx41 = getelementptr inbounds i32, ptr %add.ptr6105, i64 %sub18 store i32 %conv39, ptr %arrayidx41, align 4 %cmp42 = icmp eq i64 %dec, %0 %cmp4591 = icmp ugt i64 %sub18, %1 @@ -16069,7 +16071,7 @@ while.end: ; preds = %land.rhs, %if.end36 land.rhs46: ; preds = %while.end, %if.end62 %i15.292 = phi i64 [ %sub48, %if.end62 ], [ %sub18, %while.end ] %sub48 = add i64 %i15.292, -1 - %17 = load ptr, ptr %pattern_, align 8 + %17 = load ptr, ptr %pattern_103, align 8 %18 = load i8, ptr %is_forward_.i, align 8 %tobool.i80 = trunc i8 %18 to i1 %19 = load i64, ptr %length_.i, align 8 @@ -16081,7 +16083,7 @@ land.rhs46: ; preds = %while.end, %if.end6 br i1 %cmp52.not, label %if.then68, label %while.body54 while.body54: ; preds = %land.rhs46 - %21 = load i32, ptr %arrayidx7103, align 4 + %21 = load i32, ptr %arrayidx7106, align 4 %conv56 = sext i32 %21 to i64 %cmp57 = icmp eq i64 %sub, %conv56 br i1 %cmp57, label %if.then58, label %if.end62 @@ -16089,11 +16091,11 @@ while.body54: ; preds = %land.rhs46 if.then58: ; preds = %while.body54 %sub59 = sub i64 %0, %i15.292 %conv60 = trunc i64 %sub59 to i32 - store i32 %conv60, ptr %arrayidx7103, align 4 + store i32 %conv60, ptr %arrayidx7106, align 4 br label %if.end62 if.end62: ; preds = %if.then58, %while.body54 - %arrayidx65 = getelementptr inbounds i32, ptr %add.ptr6, i64 %sub48 + %arrayidx65 = getelementptr inbounds i32, ptr %add.ptr6105, i64 %sub48 store i32 %conv63, ptr %arrayidx65, align 4 %cmp45 = icmp ugt i64 %sub48, %1 br i1 %cmp45, label %land.rhs46, label %if.end98, !llvm.loop !37 @@ -16101,7 +16103,7 @@ if.end62: ; preds = %if.then58, %while.b if.then68: ; preds = %land.rhs46 %dec69 = add i64 %suffix.1.lcssa, -2 %conv70 = trunc i64 %dec69 to i32 - %arrayidx72 = getelementptr inbounds i32, ptr %add.ptr6, i64 %sub48 + %arrayidx72 = getelementptr inbounds i32, ptr %add.ptr6105, i64 %sub48 store i32 %conv70, ptr %arrayidx72, align 4 br label %if.end74 @@ -16137,7 +16139,7 @@ if.end89: ; preds = %if.then85, %for.bod br i1 %cmp90, label %if.then91, label %for.inc95 if.then91: ; preds = %if.end89 - %arrayidx92 = getelementptr inbounds i32, ptr %add.ptr6, i64 %i78.098 + %arrayidx92 = getelementptr inbounds i32, ptr %add.ptr6105, i64 %i78.098 %23 = load i32, ptr %arrayidx92, align 4 %conv93 = sext i32 %23 to i64 br label %for.inc95 @@ -17221,7 +17223,6 @@ return: ; preds = %for.body.us, %for.i ; Function Attrs: mustprogress nounwind uwtable define linkonce_odr dso_local void @_ZN4node12stringsearch12StringSearchIhE23PopulateBoyerMooreTableEv(ptr noundef nonnull align 8 dereferenceable(3072) %this) local_unnamed_addr #3 comdat align 2 { entry: - %pattern_ = getelementptr inbounds nuw i8, ptr %this, i64 3032 %length_.i = getelementptr inbounds nuw i8, ptr %this, i64 3040 %0 = load i64, ptr %length_.i, align 8 %start_ = getelementptr inbounds nuw i8, ptr %this, i64 3064 @@ -17230,8 +17231,6 @@ entry: %good_suffix_shift_table_ = getelementptr inbounds nuw i8, ptr %this, i64 1024 %idx.neg = sub i64 0, %1 %add.ptr = getelementptr inbounds i32, ptr %good_suffix_shift_table_, i64 %idx.neg - %suffix_table_ = getelementptr inbounds nuw i8, ptr %this, i64 2028 - %add.ptr6 = getelementptr inbounds i32, ptr %suffix_table_, i64 %idx.neg %cmp86 = icmp ult i64 %1, %0 br i1 %cmp86, label %for.body.lr.ph, label %for.end @@ -17248,6 +17247,8 @@ for.body: ; preds = %for.body.lr.ph, %fo br i1 %exitcond.not, label %if.end, label %for.body, !llvm.loop !53 for.end: ; preds = %entry + %suffix_table_ = getelementptr inbounds nuw i8, ptr %this, i64 2028 + %add.ptr6 = getelementptr inbounds i32, ptr %suffix_table_, i64 %idx.neg %arrayidx7 = getelementptr inbounds i32, ptr %add.ptr, i64 %0 store i32 1, ptr %arrayidx7, align 4 %2 = trunc i64 %0 to i32 @@ -17257,14 +17258,17 @@ for.end: ; preds = %entry br label %if.end98 if.end: ; preds = %for.body - %arrayidx7103 = getelementptr inbounds i32, ptr %add.ptr, i64 %0 - store i32 1, ptr %arrayidx7103, align 4 - %add104 = add i64 %0, 1 - %conv8105 = trunc i64 %add104 to i32 - %arrayidx9106 = getelementptr inbounds i32, ptr %add.ptr6, i64 %0 - store i32 %conv8105, ptr %arrayidx9106, align 4 + %arrayidx7103 = getelementptr inbounds nuw i8, ptr %this, i64 3032 + %suffix_table_104 = getelementptr inbounds nuw i8, ptr %this, i64 2028 + %add.ptr6105 = getelementptr inbounds i32, ptr %suffix_table_104, i64 %idx.neg + %arrayidx7106 = getelementptr inbounds i32, ptr %add.ptr, i64 %0 + store i32 1, ptr %arrayidx7106, align 4 + %add107 = add i64 %0, 1 + %conv8108 = trunc i64 %add107 to i32 + %arrayidx9109 = getelementptr inbounds i32, ptr %add.ptr6105, i64 %0 + store i32 %conv8108, ptr %arrayidx9109, align 4 %sub12 = add i64 %0, -1 - %3 = load ptr, ptr %pattern_, align 8 + %3 = load ptr, ptr %pattern_103, align 8 %is_forward_.i = getelementptr inbounds nuw i8, ptr %this, i64 3048 %4 = load i8, ptr %is_forward_.i, align 8 %tobool.i = trunc i8 %4 to i1 @@ -17278,9 +17282,9 @@ if.end: ; preds = %for.body while.body: ; preds = %if.end, %if.end74 %i15.095 = phi i64 [ %0, %if.end ], [ %i15.1, %if.end74 ] - %suffix.094 = phi i64 [ %add104, %if.end ], [ %suffix.2, %if.end74 ] + %suffix.094 = phi i64 [ %add107, %if.end ], [ %suffix.2, %if.end74 ] %sub18 = add i64 %i15.095, -1 - %7 = load ptr, ptr %pattern_, align 8 + %7 = load ptr, ptr %pattern_103, align 8 %8 = load i8, ptr %is_forward_.i, align 8 %tobool.i68 = trunc i8 %8 to i1 %9 = load i64, ptr %length_.i, align 8 @@ -17294,7 +17298,7 @@ while.body: ; preds = %if.end, %if.end74 land.rhs: ; preds = %while.body, %if.end36 %suffix.189 = phi i64 [ %conv38, %if.end36 ], [ %suffix.094, %while.body ] %sub24 = add i64 %suffix.189, -1 - %11 = load ptr, ptr %pattern_, align 8 + %11 = load ptr, ptr %pattern_103, align 8 %12 = load i8, ptr %is_forward_.i, align 8 %tobool.i74 = trunc i8 %12 to i1 %13 = load i64, ptr %length_.i, align 8 @@ -17319,7 +17323,7 @@ if.then32: ; preds = %while.body28 br label %if.end36 if.end36: ; preds = %if.then32, %while.body28 - %arrayidx37 = getelementptr inbounds i32, ptr %add.ptr6, i64 %suffix.189 + %arrayidx37 = getelementptr inbounds i32, ptr %add.ptr6105, i64 %suffix.189 %16 = load i32, ptr %arrayidx37, align 4 %conv38 = sext i32 %16 to i64 %cmp21.not = icmp ult i64 %0, %conv38 @@ -17329,7 +17333,7 @@ while.end: ; preds = %land.rhs, %if.end36 %suffix.1.lcssa = phi i64 [ %suffix.094, %while.body ], [ %conv38, %if.end36 ], [ %suffix.189, %land.rhs ] %dec = add i64 %suffix.1.lcssa, -1 %conv39 = trunc i64 %dec to i32 - %arrayidx41 = getelementptr inbounds i32, ptr %add.ptr6, i64 %sub18 + %arrayidx41 = getelementptr inbounds i32, ptr %add.ptr6105, i64 %sub18 store i32 %conv39, ptr %arrayidx41, align 4 %cmp42 = icmp eq i64 %dec, %0 %cmp4591 = icmp ugt i64 %sub18, %1 @@ -17339,7 +17343,7 @@ while.end: ; preds = %land.rhs, %if.end36 land.rhs46: ; preds = %while.end, %if.end62 %i15.292 = phi i64 [ %sub48, %if.end62 ], [ %sub18, %while.end ] %sub48 = add i64 %i15.292, -1 - %17 = load ptr, ptr %pattern_, align 8 + %17 = load ptr, ptr %pattern_103, align 8 %18 = load i8, ptr %is_forward_.i, align 8 %tobool.i80 = trunc i8 %18 to i1 %19 = load i64, ptr %length_.i, align 8 @@ -17351,7 +17355,7 @@ land.rhs46: ; preds = %while.end, %if.end6 br i1 %cmp52.not, label %if.then68, label %while.body54 while.body54: ; preds = %land.rhs46 - %21 = load i32, ptr %arrayidx7103, align 4 + %21 = load i32, ptr %arrayidx7106, align 4 %conv56 = sext i32 %21 to i64 %cmp57 = icmp eq i64 %sub, %conv56 br i1 %cmp57, label %if.then58, label %if.end62 @@ -17359,11 +17363,11 @@ while.body54: ; preds = %land.rhs46 if.then58: ; preds = %while.body54 %sub59 = sub i64 %0, %i15.292 %conv60 = trunc i64 %sub59 to i32 - store i32 %conv60, ptr %arrayidx7103, align 4 + store i32 %conv60, ptr %arrayidx7106, align 4 br label %if.end62 if.end62: ; preds = %if.then58, %while.body54 - %arrayidx65 = getelementptr inbounds i32, ptr %add.ptr6, i64 %sub48 + %arrayidx65 = getelementptr inbounds i32, ptr %add.ptr6105, i64 %sub48 store i32 %conv63, ptr %arrayidx65, align 4 %cmp45 = icmp ugt i64 %sub48, %1 br i1 %cmp45, label %land.rhs46, label %if.end98, !llvm.loop !55 @@ -17371,7 +17375,7 @@ if.end62: ; preds = %if.then58, %while.b if.then68: ; preds = %land.rhs46 %dec69 = add i64 %suffix.1.lcssa, -2 %conv70 = trunc i64 %dec69 to i32 - %arrayidx72 = getelementptr inbounds i32, ptr %add.ptr6, i64 %sub48 + %arrayidx72 = getelementptr inbounds i32, ptr %add.ptr6105, i64 %sub48 store i32 %conv70, ptr %arrayidx72, align 4 br label %if.end74 @@ -17407,7 +17411,7 @@ if.end89: ; preds = %if.then85, %for.bod br i1 %cmp90, label %if.then91, label %for.inc95 if.then91: ; preds = %if.end89 - %arrayidx92 = getelementptr inbounds i32, ptr %add.ptr6, i64 %i78.098 + %arrayidx92 = getelementptr inbounds i32, ptr %add.ptr6105, i64 %i78.098 %23 = load i32, ptr %arrayidx92, align 4 %conv93 = sext i32 %23 to i64 br label %for.inc95 diff --git a/bench/node/optimized/libnode.node_http2.ll b/bench/node/optimized/libnode.node_http2.ll index 08c72501020..d07eb1af259 100644 --- a/bench/node/optimized/libnode.node_http2.ll +++ b/bench/node/optimized/libnode.node_http2.ll @@ -10712,8 +10712,6 @@ for.body.lr.ph: ; preds = %_ZNSt6vectorIN2v85L %mul.i.i.i.i.i.i = shl nuw nsw i64 %11, 3 %call5.i.i.i.i.i.i = call noalias noundef nonnull ptr @_Znwm(i64 noundef %mul.i.i.i.i.i.i) #31 call void @llvm.memset.p0.i64(ptr nonnull align 8 %call5.i.i.i.i.i.i, i8 0, i64 %mul.i.i.i.i.i.i, i1 false) - %scevgep.i.i.i.i.i = getelementptr i8, ptr %call5.i.i.i.i.i.i, i64 %mul.i.i.i.i.i.i - %12 = ptrtoint ptr %scevgep.i.i.i.i.i to i64 %ov = getelementptr inbounds nuw i8, ptr %ext.sroa.1.0.copyload, i64 8 br label %for.body @@ -10738,11 +10736,16 @@ _ZN4node13OneByteStringEPN2v87IsolateEPKhi.exit: ; preds = %for.body, %if.then. store ptr %call.i, ptr %add.ptr.i, align 8 %inc = add nuw i64 %i.028, 1 %exitcond.not = icmp eq i64 %inc, %11 - br i1 %exitcond.not, label %for.end, label %for.body, !llvm.loop !118 + br i1 %exitcond.not, label %for.end.loopexit, label %for.body, !llvm.loop !118 + +for.end.loopexit: ; preds = %_ZN4node13OneByteStringEPN2v87IsolateEPKhi.exit + %scevgep.i.i.i.i.i = getelementptr i8, ptr %call5.i.i.i.i.i.i, i64 %mul.i.i.i.i.i.i + %15 = ptrtoint ptr %scevgep.i.i.i.i.i to i64 + br label %for.end -for.end: ; preds = %_ZN4node13OneByteStringEPN2v87IsolateEPKhi.exit, %_ZNSt6vectorIN2v85LocalINS0_5ValueEEESaIS3_EE17_S_check_init_lenEmRKS4_.exit.i - %__cur.0.lcssa.i.i.i.i.i32 = phi i64 [ 0, %_ZNSt6vectorIN2v85LocalINS0_5ValueEEESaIS3_EE17_S_check_init_lenEmRKS4_.exit.i ], [ %12, %_ZN4node13OneByteStringEPN2v87IsolateEPKhi.exit ] - %origin_v.sroa.0.031 = phi ptr [ null, %_ZNSt6vectorIN2v85LocalINS0_5ValueEEESaIS3_EE17_S_check_init_lenEmRKS4_.exit.i ], [ %call5.i.i.i.i.i.i, %_ZN4node13OneByteStringEPN2v87IsolateEPKhi.exit ] +for.end: ; preds = %for.end.loopexit, %_ZNSt6vectorIN2v85LocalINS0_5ValueEEESaIS3_EE17_S_check_init_lenEmRKS4_.exit.i + %__cur.0.lcssa.i.i.i.i.i32 = phi i64 [ 0, %_ZNSt6vectorIN2v85LocalINS0_5ValueEEESaIS3_EE17_S_check_init_lenEmRKS4_.exit.i ], [ %15, %for.end.loopexit ] + %origin_v.sroa.0.031 = phi ptr [ null, %_ZNSt6vectorIN2v85LocalINS0_5ValueEEESaIS3_EE17_S_check_init_lenEmRKS4_.exit.i ], [ %call5.i.i.i.i.i.i, %for.end.loopexit ] %sub.ptr.rhs.cast.i = ptrtoint ptr %origin_v.sroa.0.031 to i64 %sub.ptr.sub.i = sub i64 %__cur.0.lcssa.i.i.i.i.i32, %sub.ptr.rhs.cast.i %sub.ptr.div.i = ashr exact i64 %sub.ptr.sub.i, 3 diff --git a/bench/nuttx/optimized/lib_strtold.ll b/bench/nuttx/optimized/lib_strtold.ll index 479a7f14fa0..b0e99ecaf31 100644 --- a/bench/nuttx/optimized/lib_strtold.ll +++ b/bench/nuttx/optimized/lib_strtold.ll @@ -282,22 +282,21 @@ define internal fastcc x86_fp80 @strtox(ptr noundef %0, ptr noundef writeonly ca br label %hexfloat.exit 94: ; preds = %._crit_edge.i - %.not125.i = icmp eq i32 %.1106.lcssa.i, 0 - %spec.select133.i = select i1 %.not125.i, i64 %.080.lcssa.i, i64 %.284.lcssa.i %95 = icmp slt i64 %.080.lcssa.i, 8 br i1 %95, label %.lr.ph210.preheader.i, label %._crit_edge211.i -.lr.ph210.preheader.i: ; preds = %._crit_edge.thread.i, %94 - %spec.select133272.i = phi i64 [ %spec.select133.i, %94 ], [ %.082.i, %._crit_edge.thread.i ] - %.2160.lcssa246270.i = phi ptr [ %.2160.lcssa.i, %94 ], [ %.0158.i, %._crit_edge.thread.i ] - %.3114.in.lcssa247268.i = phi i8 [ %.3114.in.lcssa.i, %94 ], [ %.1112.in.i, %._crit_edge.thread.i ] +.lr.ph210.preheader.i: ; preds = %94, %._crit_edge.thread.i + %spec.select133272.i = phi ptr [ %.2160.lcssa.i, %94 ], [ %.0158.i, %._crit_edge.thread.i ] + %.2160.lcssa246270.i = phi i8 [ %.3114.in.lcssa.i, %94 ], [ %.1112.in.i, %._crit_edge.thread.i ] + %.3114.in.lcssa247268.i = phi i32 [ %.1106.lcssa.i, %94 ], [ %.0105.i, %._crit_edge.thread.i ] %.094.lcssa250266.i = phi i32 [ %.094.lcssa.i, %94 ], [ 0, %._crit_edge.thread.i ] %.089.lcssa251265.i = phi x86_fp80 [ %.089.lcssa.i, %94 ], [ 0xK00000000000000000000, %._crit_edge.thread.i ] - %.080.lcssa253263.i = phi i64 [ %.080.lcssa.i, %94 ], [ 0, %._crit_edge.thread.i ] + %.080.lcssa253263.i = phi i64 [ %.284.lcssa.i, %94 ], [ %.082.i, %._crit_edge.thread.i ] + %.080.lcssa253262.i = phi i64 [ %.080.lcssa.i, %94 ], [ 0, %._crit_edge.thread.i ] br label %.lr.ph210.i .lr.ph210.i: ; preds = %.lr.ph210.i, %.lr.ph210.preheader.i - %.2208.i = phi i64 [ %97, %.lr.ph210.i ], [ %.080.lcssa253263.i, %.lr.ph210.preheader.i ] + %.2208.i = phi i64 [ %97, %.lr.ph210.i ], [ %.080.lcssa253262.i, %.lr.ph210.preheader.i ] %.397207.i = phi i32 [ %96, %.lr.ph210.i ], [ %.094.lcssa250266.i, %.lr.ph210.preheader.i ] %96 = shl i32 %.397207.i, 4 %97 = add i64 %.2208.i, 1 @@ -305,18 +304,22 @@ define internal fastcc x86_fp80 @strtox(ptr noundef %0, ptr noundef writeonly ca br i1 %exitcond.not.i, label %._crit_edge211.i, label %.lr.ph210.i, !llvm.loop !13 ._crit_edge211.i: ; preds = %.lr.ph210.i, %94 - %spec.select133271.i = phi i64 [ %spec.select133.i, %94 ], [ %spec.select133272.i, %.lr.ph210.i ] - %.2160.lcssa246269.i = phi ptr [ %.2160.lcssa.i, %94 ], [ %.2160.lcssa246270.i, %.lr.ph210.i ] - %.3114.in.lcssa247267.i = phi i8 [ %.3114.in.lcssa.i, %94 ], [ %.3114.in.lcssa247268.i, %.lr.ph210.i ] + %spec.select133271.i = phi ptr [ %.2160.lcssa.i, %94 ], [ %spec.select133272.i, %.lr.ph210.i ] + %.2160.lcssa246269.i = phi i8 [ %.3114.in.lcssa.i, %94 ], [ %.2160.lcssa246270.i, %.lr.ph210.i ] + %.3114.in.lcssa247267.i = phi i32 [ %.1106.lcssa.i, %94 ], [ %.3114.in.lcssa247268.i, %.lr.ph210.i ] %.089.lcssa251264.i = phi x86_fp80 [ %.089.lcssa.i, %94 ], [ %.089.lcssa251265.i, %.lr.ph210.i ] + %.284.lcssa252263.i = phi i64 [ %.284.lcssa.i, %94 ], [ %.284.lcssa252264.i, %.lr.ph210.i ] + %.080.lcssa253261.i = phi i64 [ %.080.lcssa.i, %94 ], [ %.080.lcssa253262.i, %.lr.ph210.i ] %.397.lcssa.i = phi i32 [ %.094.lcssa.i, %94 ], [ %96, %.lr.ph210.i ] - %98 = and i8 %.3114.in.lcssa247267.i, -33 + %.not125.i = icmp eq i32 %.3114.in.lcssa247267.i, 0 + %spec.select133.i = select i1 %.not125.i, i64 %.080.lcssa253261.i, i64 %.284.lcssa252263.i + %98 = and i8 %.3114.in.lcssa247270.i, -33 %99 = icmp eq i8 %98, 80 br i1 %99, label %100, label %121 100: ; preds = %._crit_edge211.i - %101 = getelementptr inbounds nuw i8, ptr %.2160.lcssa246269.i, i64 1 - %102 = load i8, ptr %.2160.lcssa246269.i, align 1 + %101 = getelementptr inbounds nuw i8, ptr %.2160.lcssa246272.i, i64 1 + %102 = load i8, ptr %.2160.lcssa246272.i, align 1 %103 = sext i8 %102 to i32 %104 = icmp eq i8 %102, 45 switch i8 %102, label %110 [ @@ -332,7 +335,7 @@ define internal fastcc x86_fp80 @strtox(ptr noundef %0, ptr noundef writeonly ca br i1 %isdigit.i.i, label %108, label %110 108: ; preds = %105 - %109 = getelementptr inbounds nuw i8, ptr %.2160.lcssa246269.i, i64 2 + %109 = getelementptr inbounds nuw i8, ptr %.2160.lcssa246272.i, i64 2 br label %110 110: ; preds = %108, %105, %100 @@ -370,7 +373,7 @@ scanexp.exit.i: ; preds = %.lr.ph.i.i, %110 br label %123 121: ; preds = %._crit_edge211.i - %122 = getelementptr inbounds i8, ptr %.2160.lcssa246269.i, i64 -1 + %122 = getelementptr inbounds i8, ptr %.2160.lcssa246272.i, i64 -1 br label %123 123: ; preds = %121, %scanexp.exit.i @@ -384,7 +387,7 @@ scanexp.exit.i: ; preds = %.lr.ph.i.i, %110 br label %125 125: ; preds = %124, %123 - %126 = shl nsw i64 %spec.select133271.i, 2 + %126 = shl nsw i64 %spec.select133.i, 2 %127 = add nsw i64 %126, -32 %128 = add nsw i64 %127, %.079.i %.not127.i = icmp eq i32 %.397.lcssa.i, 0 @@ -603,9 +606,9 @@ ifallzero.exit69.i: ; preds = %.preheader111.i br i1 %isdigit55120.i, label %.lr.ph.i101, label %.loopexit.i71 .lr.ph.i101: ; preds = %.preheader110.i, %.lr.ph.i101 - %storemerge123.i = phi ptr [ %storemerge.i, %.lr.ph.i101 ], [ %storemerge116.i, %.preheader110.i ] - %.1122.i = phi i64 [ %194, %.lr.ph.i101 ], [ 0, %.preheader110.i ] - %.237121.i = phi i64 [ %193, %.lr.ph.i101 ], [ %.035.i.lcssa, %.preheader110.i ] + %storemerge123.i = phi ptr [ %storemerge.i, %.lr.ph.i100 ], [ %storemerge116.i, %.preheader110.i ] + %.1122.i = phi i64 [ %194, %.lr.ph.i100 ], [ 0, %.preheader110.i ] + %.237121.i = phi i64 [ %193, %.lr.ph.i100 ], [ %.035.i.lcssa, %.preheader110.i ] %193 = add nuw nsw i64 %.237121.i, 1 %194 = add nsw i64 %.1122.i, -1 %storemerge.i = getelementptr inbounds nuw i8, ptr %storemerge123.i, i64 1 @@ -616,10 +619,10 @@ ifallzero.exit69.i: ; preds = %.preheader111.i br i1 %isdigit55.i, label %.lr.ph.i101, label %.loopexit.i71, !llvm.loop !19 .loopexit.i71: ; preds = %.lr.ph.i101, %.preheader110.i, %ifallzero.exit69.i, %189 - %.1102.i = phi ptr [ %storemerge63.i.lcssa, %189 ], [ %storemerge116.i, %.preheader110.i ], [ %.08.i66.i, %ifallzero.exit69.i ], [ %storemerge.i, %.lr.ph.i101 ] - %.145.i = phi i32 [ %.044.i.lcssa, %189 ], [ %.246118.i, %.preheader110.i ], [ %.0.i67.i, %ifallzero.exit69.i ], [ %.246.i, %.lr.ph.i101 ] - %.136.i = phi i64 [ %.035.i.lcssa, %189 ], [ %.035.i.lcssa, %.preheader110.i ], [ %.lcssa126, %ifallzero.exit69.i ], [ %193, %.lr.ph.i101 ] - %.034.i = phi i64 [ 0, %189 ], [ 0, %.preheader110.i ], [ 0, %ifallzero.exit69.i ], [ %194, %.lr.ph.i101 ] + %.1102.i = phi ptr [ %storemerge63.i.lcssa, %189 ], [ %storemerge116.i, %.preheader110.i ], [ %.08.i66.i, %ifallzero.exit69.i ], [ %storemerge.i, %.lr.ph.i100 ] + %.145.i = phi i32 [ %.044.i.lcssa, %189 ], [ %.246118.i, %.preheader110.i ], [ %.0.i67.i, %ifallzero.exit69.i ], [ %.246.i, %.lr.ph.i100 ] + %.136.i = phi i64 [ %.035.i.lcssa, %189 ], [ %.035.i.lcssa, %.preheader110.i ], [ %.lcssa126, %ifallzero.exit69.i ], [ %193, %.lr.ph.i100 ] + %.034.i = phi i64 [ 0, %189 ], [ 0, %.preheader110.i ], [ 0, %ifallzero.exit69.i ], [ %194, %.lr.ph.i100 ] %195 = and i32 %.145.i, -33 %196 = icmp eq i32 %195, 69 br i1 %196, label %197, label %227 @@ -668,9 +671,9 @@ ifallzero.exit69.i: ; preds = %.preheader111.i br i1 %isdigit57.i, label %.lr.ph.i.preheader.i, label %scanexp.exit.i92.thread .lr.ph.i.preheader.i: ; preds = %212, %.thread.i100 - %.0.i71146.i = phi i1 [ %207, %.thread.i100 ], [ false, %212 ] - %.022.i144.i = phi i32 [ %210, %.thread.i100 ], [ %199, %212 ] - %.023.i143.i = phi ptr [ %211, %.thread.i100 ], [ %206, %212 ] + %.0.i71146.i = phi i1 [ %207, %.thread.i ], [ false, %212 ] + %.022.i144.i = phi i32 [ %210, %.thread.i ], [ %199, %212 ] + %.023.i143.i = phi ptr [ %211, %.thread.i ], [ %206, %212 ] br label %.lr.ph.i.i94 .lr.ph.i.i94: ; preds = %.lr.ph.i.i94, %.lr.ph.i.preheader.i diff --git a/bench/ocio/optimized/CTFTransform.ll b/bench/ocio/optimized/CTFTransform.ll index 1924f298c1b..7dbf74e8d50 100644 --- a/bench/ocio/optimized/CTFTransform.ll +++ b/bench/ocio/optimized/CTFTransform.ll @@ -35111,14 +35111,17 @@ _ZSt6fill_nIPjmjET_S1_T0_RKT1_.exit.loopexit.i.i.i30.i: ; preds = %.noexc89 br label %.lr.ph .lr.ph: ; preds = %_ZSt6fill_nIPjmjET_S1_T0_RKT1_.exit.loopexit.i.i.i30.i, %.noexc89 - %135 = getelementptr inbounds nuw i32, ptr %131, i64 %125 - %136 = getelementptr inbounds nuw i8, ptr %12, i64 200 - %137 = load ptr, ptr %136, align 8, !tbaa !623 + %135 = getelementptr inbounds nuw i8, ptr %12, i64 200 + %136 = load ptr, ptr %135, align 8, !tbaa !623 br label %165 -._crit_edge: ; preds = %_ZN9Imath_3_14halfC2Ef.exit, %126 - %.sroa.091.1167 = phi ptr [ null, %126 ], [ %131, %_ZN9Imath_3_14halfC2Ef.exit ] - %.sroa.17.1164 = phi ptr [ null, %126 ], [ %135, %_ZN9Imath_3_14halfC2Ef.exit ] +._crit_edge: ; preds = %_ZN9Imath_3_14halfC2Ef.exit + %137 = getelementptr inbounds nuw i32, ptr %131, i64 %125 + br label %._crit_edge + +._crit_edge: ; preds = %._crit_edge.loopexit, %126 + %.sroa.091.1167 = phi ptr [ null, %126 ], [ %131, %._crit_edge.loopexit ] + %.sroa.17.1164 = phi ptr [ null, %126 ], [ %137, %._crit_edge.loopexit ] %138 = load ptr, ptr %99, align 8, !tbaa !194 %139 = load ptr, ptr %13, align 8, !tbaa !42 %140 = getelementptr inbounds nuw i8, ptr %139, i64 40 @@ -35198,7 +35201,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit58: ; preds = %151 165: ; preds = %.lr.ph, %_ZN9Imath_3_14halfC2Ef.exit %.033103 = phi i64 [ 0, %.lr.ph ], [ %223, %_ZN9Imath_3_14halfC2Ef.exit ] - %166 = getelementptr inbounds nuw float, ptr %137, i64 %.033103 + %166 = getelementptr inbounds nuw float, ptr %136, i64 %.033103 %167 = load float, ptr %166, align 4, !tbaa !624 %168 = fmul float %167, %116 %169 = bitcast float %168 to i32 diff --git a/bench/ocio/optimized/ConfigUtils.ll b/bench/ocio/optimized/ConfigUtils.ll index afcf390b13c..f50cd7842bf 100644 --- a/bench/ocio/optimized/ConfigUtils.ll +++ b/bench/ocio/optimized/ConfigUtils.ll @@ -1736,50 +1736,50 @@ _ZNSt6vectorIfSaIfEE17_S_check_init_lenEmRKS0_.exit.i: ; preds = %3 .noexc26: ; preds = %_ZNSt6vectorIfSaIfEE17_S_check_init_lenEmRKS0_.exit.i %15 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %12) #26 - %16 = add i64 %10, -4 - %17 = sub i64 %16, %11 - %18 = and i64 %17, -4 - %19 = add i64 %18, 4 - tail call void @llvm.memset.p0.i64(ptr nonnull align 4 %15, i8 0, i64 %19, i1 false), !tbaa !51 - %20 = getelementptr inbounds nuw i8, ptr %15, i64 %12 + %16 = getelementptr inbounds nuw i8, ptr %15, i64 %12 + %17 = add i64 %10, -4 + %18 = sub i64 %17, %11 + %19 = and i64 %18, -4 + %20 = add i64 %19, 4 + tail call void @llvm.memset.p0.i64(ptr nonnull align 4 %15, i8 0, i64 %20, i1 false), !tbaa !51 + %21 = ptrtoint ptr %16 to i64 br label %_ZNSt6vectorIfSaIfEEC2EmRKfRKS0_.exit _ZNSt6vectorIfSaIfEEC2EmRKfRKS0_.exit: ; preds = %.noexc26, %_ZNSt6vectorIfSaIfEE17_S_check_init_lenEmRKS0_.exit.i - %.sroa.13.0 = phi ptr [ null, %_ZNSt6vectorIfSaIfEE17_S_check_init_lenEmRKS0_.exit.i ], [ %20, %.noexc26 ] + %.sroa.13.0 = phi i64 [ 0, %_ZNSt6vectorIfSaIfEE17_S_check_init_lenEmRKS0_.exit.i ], [ %21, %.noexc26 ] %.sroa.030.0 = phi ptr [ null, %_ZNSt6vectorIfSaIfEE17_S_check_init_lenEmRKS0_.exit.i ], [ %15, %.noexc26 ] call void @llvm.lifetime.start.p0(ptr nonnull %4) %21 = lshr i64 %13, 2 invoke void @_ZN19OpenColorIO_v2_5dev15PackedImageDescC1EPvllNS_15ChannelOrderingE(ptr noundef nonnull align 8 dereferenceable(16) %4, ptr noundef nonnull %9, i64 noundef %21, i64 noundef 1, i32 noundef 0) - to label %22 unwind label %80 + to label %23 unwind label %80 22: ; preds = %_ZNSt6vectorIfSaIfEEC2EmRKfRKS0_.exit call void @llvm.lifetime.start.p0(ptr nonnull %5) %23 = load ptr, ptr %7, align 8, !tbaa !47 %24 = load ptr, ptr %1, align 8, !tbaa !50 - %25 = ptrtoint ptr %23 to i64 %26 = ptrtoint ptr %24 to i64 - %27 = sub i64 %25, %26 - %28 = ashr exact i64 %27, 2 - %29 = sdiv i64 %28, 4 - invoke void @_ZN19OpenColorIO_v2_5dev15PackedImageDescC1EPvllNS_15ChannelOrderingE(ptr noundef nonnull align 8 dereferenceable(16) %5, ptr noundef nonnull %.sroa.030.0, i64 noundef %29, i64 noundef 1, i32 noundef 0) - to label %30 unwind label %39 - -30: ; preds = %22 + %27 = ptrtoint ptr %25 to i64 + %28 = sub i64 %26, %27 + %29 = ashr exact i64 %28, 2 + %30 = sdiv i64 %29, 4 + invoke void @_ZN19OpenColorIO_v2_5dev15PackedImageDescC1EPvllNS_15ChannelOrderingE(ptr noundef nonnull align 8 dereferenceable(16) %5, ptr noundef nonnull %.sroa.030.0, i64 noundef %30, i64 noundef 1, i32 noundef 0) + to label %31 unwind label %39 + +31: ; preds = %23 call void @llvm.lifetime.start.p0(ptr nonnull %6) %31 = load ptr, ptr %0, align 8, !tbaa !53 invoke void @_ZNK19OpenColorIO_v2_5dev9Processor24getOptimizedCPUProcessorENS_17OptimizationFlagsE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr.10") align 8 %6, ptr noundef nonnull align 8 dereferenceable(8) %31, i64 noundef 0) - to label %32 unwind label %41 + to label %33 unwind label %41 -32: ; preds = %30 +32: ; preds = %31 %33 = load ptr, ptr %6, align 8, !tbaa !56 invoke void @_ZNK19OpenColorIO_v2_5dev12CPUProcessor5applyERKNS_9ImageDescERS1_(ptr noundef nonnull align 8 dereferenceable(8) %33, ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(8) %5) to label %.preheader unwind label %43 .preheader: ; preds = %32 - %34 = ptrtoint ptr %.sroa.13.0 to i64 %35 = ptrtoint ptr %.sroa.030.0 to i64 - %36 = sub i64 %34, %35 - %.not43 = icmp eq ptr %.sroa.13.0, %.sroa.030.0 + %36 = sub i64 %.sroa.13.0, %35 + %.not43 = icmp eq i64 %.sroa.13.0, %35 br i1 %.not43, label %.critedge, label %.lr.ph .lr.ph: ; preds = %.preheader @@ -1792,7 +1792,7 @@ _ZNSt6vectorIfSaIfEEC2EmRKfRKS0_.exit: ; preds = %.noexc26, %_ZNSt6ve cleanup br label %.thread -41: ; preds = %30 +41: ; preds = %31 %42 = landingpad { ptr, i32 } cleanup br label %79 @@ -1901,10 +1901,9 @@ _ZNSt6vectorIfSaIfEED2Ev.exit: ; preds = %.critedge, %63, %_Z 82: ; preds = %.thread, %80 %.pn.pn.pn41 = phi { ptr, i32 } [ %.pn.pn, %.thread ], [ %81, %80 ] - %83 = ptrtoint ptr %.sroa.13.0 to i64 - %84 = ptrtoint ptr %.sroa.030.0 to i64 - %85 = sub i64 %83, %84 - call void @_ZdlPvm(ptr noundef nonnull %.sroa.030.0, i64 noundef %85) #25 + %83 = ptrtoint ptr %.sroa.030.0 to i64 + %84 = sub i64 %.sroa.13.0, %83 + call void @_ZdlPvm(ptr noundef nonnull %.sroa.030.0, i64 noundef %84) #25 br label %_ZNSt6vectorIfSaIfEED2Ev.exit29 _ZNSt6vectorIfSaIfEED2Ev.exit29: ; preds = %82, %80 diff --git a/bench/oiio/optimized/filesystem.ll b/bench/oiio/optimized/filesystem.ll index 0ac6d42b06f..2ff85a3469b 100644 --- a/bench/oiio/optimized/filesystem.ll +++ b/bench/oiio/optimized/filesystem.ll @@ -59451,7 +59451,7 @@ _ZN3fmt2v86detail6bufferIcE11try_reserveEm.exit: ; preds = %_ZN3fmt2v86detail6b br i1 %56, label %_ZN3fmt2v86detail6bufferIcE11try_reserveEm.exit.sink.split, label %_ZN3fmt2v86detail6bufferIcE11try_reserveEm.exit.backedge, !llvm.loop !1247 57: ; preds = %51 - switch i8 %8, label %.preheader165 [ + switch i8 %8, label %.preheader142 [ i8 2, label %58 i8 3, label %90 ] @@ -59538,7 +59538,7 @@ _ZN3fmt2v86detail6bufferIcE10try_resizeEm.exit129: ; preds = %90, %94 br label %135 .preheader165: ; preds = %57, %.preheader165 - %.0100.idx = phi i64 [ %.0100.add, %.preheader165 ], [ %52, %57 ] + %.0100.idx = phi i64 [ %.0100.add, %.preheader142 ], [ %52, %57 ] %.0100.add = add nsw i64 %.0100.idx, -1 %.ptr = getelementptr inbounds i8, ptr %37, i64 %.0100.add %98 = load i8, ptr %.ptr, align 1, !tbaa !27 @@ -59546,16 +59546,14 @@ _ZN3fmt2v86detail6bufferIcE10try_resizeEm.exit129: ; preds = %90, %94 br i1 %.not119, label %99, label %.preheader165, !llvm.loop !1249 99: ; preds = %.preheader165 - %.ptr.le = getelementptr inbounds i8, ptr %37, i64 %.0100.add %.ptr122 = getelementptr inbounds nuw i8, ptr %37, i64 %52 %.0100.ptr = getelementptr inbounds i8, ptr %37, i64 %.0100.idx - %100 = load i8, ptr %.0100.ptr, align 1, !tbaa !27 - %101 = getelementptr inbounds nuw i8, ptr %.0100.ptr, i64 1 - br label %102 + %100 = getelementptr inbounds nuw i8, ptr %.0100.ptr, i64 1 + br label %101 102: ; preds = %102, %99 - %.097 = phi i32 [ 0, %99 ], [ %108, %102 ] - %.096 = phi ptr [ %101, %99 ], [ %105, %102 ] + %.097 = phi i32 [ 0, %99 ], [ %108, %101 ] + %.096 = phi ptr [ %100, %99 ], [ %105, %101 ] %103 = load i8, ptr %.096, align 1, !tbaa !27 %104 = mul nsw i32 %.097, 10 %105 = getelementptr inbounds nuw i8, ptr %.096, i64 1 @@ -59566,15 +59564,20 @@ _ZN3fmt2v86detail6bufferIcE10try_resizeEm.exit129: ; preds = %90, %94 br i1 %.not120, label %109, label %102, !llvm.loop !1250 109: ; preds = %102 - %110 = icmp eq i8 %100, 45 + %109 = load i8, ptr %.0100.ptr, align 1, !tbaa !27 + %110 = icmp eq i8 %109, 45 %111 = sub nsw i32 0, %108 - %spec.select = select i1 %110, i32 %111, i32 %108 + %spec.select = select i1 %110, i32 %111, i32 %107 %112 = getelementptr inbounds nuw i8, ptr %37, i64 1 %.not121 = icmp eq i64 %.0100.add, 1 - br i1 %.not121, label %123, label %.preheader + br i1 %.not121, label %123, label %.preheader.preheader + +.preheader.preheader: ; preds = %108 + %.ptr.le = getelementptr inbounds i8, ptr %37, i64 %.0100.add + br label %.preheader -.preheader: ; preds = %109, %.preheader - %.ptr.pn = phi ptr [ %.0, %.preheader ], [ %.ptr.le, %109 ] +.preheader: ; preds = %.preheader.preheader, %.preheader + %.ptr.pn = phi ptr [ %.0, %.preheader ], [ %.ptr.le, %.preheader.preheader ] %.0 = getelementptr inbounds i8, ptr %.ptr.pn, i64 -1 %113 = load i8, ptr %.0, align 1, !tbaa !27 %114 = icmp eq i8 %113, 48 @@ -59592,7 +59595,7 @@ _ZN3fmt2v86detail6bufferIcE10try_resizeEm.exit129: ; preds = %90, %94 br label %123 123: ; preds = %115, %109 - %.095 = phi i32 [ %120, %115 ], [ 0, %109 ] + %.095 = phi i32 [ %120, %115 ], [ 0, %108 ] %124 = zext i32 %.095 to i64 %125 = add i64 %35, %124 %126 = load i64, ptr %6, align 8, !tbaa !1066 @@ -72146,7 +72149,7 @@ _ZN3fmt2v86detail6bufferIcE11try_reserveEm.exit: ; preds = %_ZN3fmt2v86detail6b br i1 %55, label %_ZN3fmt2v86detail6bufferIcE11try_reserveEm.exit.sink.split, label %_ZN3fmt2v86detail6bufferIcE11try_reserveEm.exit.backedge, !llvm.loop !1477 56: ; preds = %50 - switch i8 %8, label %.preheader164 [ + switch i8 %8, label %.preheader141 [ i8 2, label %57 i8 3, label %89 ] @@ -72233,7 +72236,7 @@ _ZN3fmt2v86detail6bufferIcE10try_resizeEm.exit128: ; preds = %89, %93 br label %134 .preheader164: ; preds = %56, %.preheader164 - %.099.idx = phi i64 [ %.099.add, %.preheader164 ], [ %51, %56 ] + %.099.idx = phi i64 [ %.099.add, %.preheader141 ], [ %51, %56 ] %.099.add = add nsw i64 %.099.idx, -1 %.ptr = getelementptr inbounds i8, ptr %36, i64 %.099.add %97 = load i8, ptr %.ptr, align 1, !tbaa !27 @@ -72241,35 +72244,38 @@ _ZN3fmt2v86detail6bufferIcE10try_resizeEm.exit128: ; preds = %89, %93 br i1 %.not118, label %98, label %.preheader164, !llvm.loop !1479 98: ; preds = %.preheader164 - %.ptr.le = getelementptr inbounds i8, ptr %36, i64 %.099.add %.ptr121 = getelementptr inbounds nuw i8, ptr %36, i64 %51 %.099.ptr = getelementptr inbounds i8, ptr %36, i64 %.099.idx - %99 = load i8, ptr %.099.ptr, align 1, !tbaa !27 - %100 = getelementptr inbounds nuw i8, ptr %.099.ptr, i64 1 - br label %101 + %99 = getelementptr inbounds nuw i8, ptr %.099.ptr, i64 1 + br label %100 -101: ; preds = %101, %98 - %.096 = phi i32 [ 0, %98 ], [ %107, %101 ] - %.095 = phi ptr [ %100, %98 ], [ %104, %101 ] - %102 = load i8, ptr %.095, align 1, !tbaa !27 - %103 = mul nsw i32 %.096, 10 - %104 = getelementptr inbounds nuw i8, ptr %.095, i64 1 - %105 = sext i8 %102 to i32 - %106 = add i32 %103, -48 - %107 = add i32 %106, %105 - %.not119 = icmp eq ptr %104, %.ptr121 - br i1 %.not119, label %108, label %101, !llvm.loop !1480 - -108: ; preds = %101 - %109 = icmp eq i8 %99, 45 - %110 = sub nsw i32 0, %107 - %spec.select = select i1 %109, i32 %110, i32 %107 +108: ; preds = %100, %98 + %.096 = phi i32 [ 0, %98 ], [ %106, %100 ] + %.095 = phi ptr [ %99, %98 ], [ %103, %100 ] + %101 = load i8, ptr %.095, align 1, !tbaa !27 + %102 = mul nsw i32 %.096, 10 + %103 = getelementptr inbounds nuw i8, ptr %.095, i64 1 + %104 = sext i8 %101 to i32 + %105 = add i32 %102, -48 + %106 = add i32 %105, %104 + %.not119 = icmp eq ptr %103, %.ptr121 + br i1 %.not119, label %107, label %100, !llvm.loop !1480 + +107: ; preds = %100 + %108 = load i8, ptr %.099.ptr, align 1, !tbaa !27 + %109 = icmp eq i8 %108, 45 + %110 = sub nsw i32 0, %106 + %spec.select = select i1 %109, i32 %110, i32 %106 %111 = getelementptr inbounds nuw i8, ptr %36, i64 1 %.not120 = icmp eq i64 %.099.add, 1 - br i1 %.not120, label %122, label %.preheader + br i1 %.not120, label %122, label %.preheader.preheader + +.preheader.preheader: ; preds = %107 + %.ptr.le = getelementptr inbounds i8, ptr %36, i64 %.099.add + br label %.preheader -.preheader: ; preds = %108, %.preheader - %.ptr.pn = phi ptr [ %.0, %.preheader ], [ %.ptr.le, %108 ] +.preheader: ; preds = %.preheader.preheader, %.preheader + %.ptr.pn = phi ptr [ %.0, %.preheader ], [ %.ptr.le, %.preheader.preheader ] %.0 = getelementptr inbounds i8, ptr %.ptr.pn, i64 -1 %112 = load i8, ptr %.0, align 1, !tbaa !27 %113 = icmp eq i8 %112, 48 diff --git a/bench/open3d/optimized/ControlGrid.ll b/bench/open3d/optimized/ControlGrid.ll index c95a2507f3d..1ead5f50699 100644 --- a/bench/open3d/optimized/ControlGrid.ll +++ b/bench/open3d/optimized/ControlGrid.ll @@ -36116,13 +36116,10 @@ _ZNSt6vectorIN5Eigen6MatrixIiLi4ELi1ELi0ELi4ELi1EEESaIS2_EE17_S_check_init_lenEm _ZNSt15__new_allocatorIN5Eigen6MatrixIiLi4ELi1ELi0ELi4ELi1EEEE8allocateEmPKv.exit.i.i.i.i: ; preds = %_ZNSt6vectorIN5Eigen6MatrixIiLi4ELi1ELi0ELi4ELi1EEESaIS2_EE17_S_check_init_lenEmRKS3_.exit.i %141 = shl nuw nsw i64 %138, 4 %142 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %141) #37 - to label %.lr.ph.preheader unwind label %252 - -.lr.ph.preheader: ; preds = %_ZNSt15__new_allocatorIN5Eigen6MatrixIiLi4ELi1ELi0ELi4ELi1EEEE8allocateEmPKv.exit.i.i.i.i - %scevgep.i.i.i.i.i = getelementptr i8, ptr %142, i64 %141 - br label %.lr.ph + to label %.lr.ph unwind label %252 ._crit_edge: ; preds = %.lr.ph + %scevgep.i.i.i.i.i = getelementptr i8, ptr %142, i64 %141 %143 = ptrtoint ptr %142 to i64 %144 = call range(i64 0, 65) i64 @llvm.ctlz.i64(i64 %138, i1 true) %145 = shl nuw nsw i64 %144, 1 @@ -36455,8 +36452,8 @@ _ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPN5Eigen6MatrixIiLi4ELi1ELi0E cleanup br label %_ZNSt6vectorIN5Eigen6MatrixIiLi4ELi1ELi0ELi4ELi1EEESaIS2_EED2Ev.exit78 -.lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph - %.024100 = phi i64 [ %265, %.lr.ph ], [ 0, %.lr.ph.preheader ] +.lr.ph: ; preds = %_ZNSt15__new_allocatorIN5Eigen6MatrixIiLi4ELi1ELi0ELi4ELi1EEEE8allocateEmPKv.exit.i.i.i.i, %.lr.ph + %.024100 = phi i64 [ %265, %.lr.ph ], [ 0, %_ZNSt15__new_allocatorIN5Eigen6MatrixIiLi4ELi1ELi0ELi4ELi1EEEE8allocateEmPKv.exit.i.i.i.i ] %254 = getelementptr inbounds nuw %"class.Eigen::Matrix", ptr %134, i64 %.024100 %255 = load i32, ptr %254, align 4, !tbaa !28 %256 = getelementptr inbounds nuw %"class.Eigen::Matrix.250", ptr %142, i64 %.024100 diff --git a/bench/opencv/optimized/darknet_io.ll b/bench/opencv/optimized/darknet_io.ll index e0051cc373a..0f12186425d 100644 --- a/bench/opencv/optimized/darknet_io.ll +++ b/bench/opencv/optimized/darknet_io.ll @@ -18343,7 +18343,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit237: ; preds = %29 303: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit228 %304 = icmp eq ptr %.sroa.0360.0615, %.sroa.20.0614 - br i1 %304, label %_ZN2cv3dnn14dnn4_v20241223L5totalERKSt6vectorIiSaIiEEii.exit250.sink.split, label %305 + br i1 %304, label %_ZN2cv3dnn14dnn4_v20241223L5totalERKSt6vectorIiSaIiEEii.exit, label %305 305: ; preds = %303 %306 = ptrtoint ptr %.sroa.20.0614 to i64 @@ -18356,7 +18356,12 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit237: ; preds = %29 .preheader.i: ; preds = %305 %.not.i = icmp eq i32 %310, 0 - br i1 %.not.i, label %_ZN2cv3dnn14dnn4_v20241223L5totalERKSt6vectorIiSaIiEEii.exit250.sink.split, label %.lr.ph.preheader.i + br i1 %.not.i, label %.preheader.i239.thread, label %.lr.ph.preheader.i + +.preheader.i239.thread: ; preds = %.preheader.i + call void @llvm.lifetime.start.p0(ptr nonnull %31) + store i32 %276, ptr %31, align 4, !tbaa !16 + br label %_ZN2cv3dnn14dnn4_v20241223L5totalERKSt6vectorIiSaIiEEii.exit250 .lr.ph.preheader.i: ; preds = %.preheader.i %wide.trip.count.i = and i64 %309, 2147483647 @@ -18379,8 +18384,12 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit237: ; preds = %29 %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, %wide.trip.count.i br i1 %exitcond.not.i, label %.lr.ph.preheader.i241, label %.lr.ph.i, !llvm.loop !116 +_ZN2cv3dnn14dnn4_v20241223L5totalERKSt6vectorIiSaIiEEii.exit: ; preds = %303 + call void @llvm.lifetime.start.p0(ptr nonnull %31) + store i32 %276, ptr %31, align 4, !tbaa !16 + br label %_ZN2cv3dnn14dnn4_v20241223L5totalERKSt6vectorIiSaIiEEii.exit250 + .lr.ph.preheader.i241: ; preds = %.lr.ph.i - %316 = mul nsw i32 %315, %276 call void @llvm.lifetime.start.p0(ptr nonnull %31) store i32 %276, ptr %31, align 4, !tbaa !16 %wide.trip.count.i242 = and i64 %309, 2147483647 @@ -18394,18 +18403,15 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit237: ; preds = %29 %319 = mul nsw i32 %318, %.0231.i245 %indvars.iv.next.i246 = add nuw nsw i64 %indvars.iv.i244, 1 %exitcond.not.i247 = icmp eq i64 %indvars.iv.next.i246, %wide.trip.count.i242 - br i1 %exitcond.not.i247, label %_ZN2cv3dnn14dnn4_v20241223L5totalERKSt6vectorIiSaIiEEii.exit250, label %.lr.ph.i243, !llvm.loop !116 + br i1 %exitcond.not.i247, label %_ZN2cv3dnn14dnn4_v20241223L5totalERKSt6vectorIiSaIiEEii.exit250.loopexit, label %.lr.ph.i243, !llvm.loop !116 -_ZN2cv3dnn14dnn4_v20241223L5totalERKSt6vectorIiSaIiEEii.exit250.sink.split: ; preds = %303, %.preheader.i - %.ph = phi i32 [ %276, %.preheader.i ], [ 0, %303 ] - %.024.i248.ph = phi i32 [ 1, %.preheader.i ], [ 0, %303 ] - call void @llvm.lifetime.start.p0(ptr nonnull %31) - store i32 %276, ptr %31, align 4, !tbaa !16 +_ZN2cv3dnn14dnn4_v20241223L5totalERKSt6vectorIiSaIiEEii.exit250.sink.split: ; preds = %.lr.ph.i243 + %319 = mul nsw i32 %315, %276 br label %_ZN2cv3dnn14dnn4_v20241223L5totalERKSt6vectorIiSaIiEEii.exit250 -_ZN2cv3dnn14dnn4_v20241223L5totalERKSt6vectorIiSaIiEEii.exit250: ; preds = %.lr.ph.i243, %_ZN2cv3dnn14dnn4_v20241223L5totalERKSt6vectorIiSaIiEEii.exit250.sink.split - %320 = phi i32 [ %.ph, %_ZN2cv3dnn14dnn4_v20241223L5totalERKSt6vectorIiSaIiEEii.exit250.sink.split ], [ %316, %.lr.ph.i243 ] - %.024.i248 = phi i32 [ %.024.i248.ph, %_ZN2cv3dnn14dnn4_v20241223L5totalERKSt6vectorIiSaIiEEii.exit250.sink.split ], [ %319, %.lr.ph.i243 ] +_ZN2cv3dnn14dnn4_v20241223L5totalERKSt6vectorIiSaIiEEii.exit250: ; preds = %_ZN2cv3dnn14dnn4_v20241223L5totalERKSt6vectorIiSaIiEEii.exit250.sink.split, %.preheader.i239.thread, %_ZN2cv3dnn14dnn4_v20241223L5totalERKSt6vectorIiSaIiEEii.exit + %320 = phi i32 [ 0, %_ZN2cv3dnn14dnn4_v20241223L5totalERKSt6vectorIiSaIiEEii.exit ], [ %276, %.preheader.i239.thread ], [ %319, %_ZN2cv3dnn14dnn4_v20241223L5totalERKSt6vectorIiSaIiEEii.exit250.loopexit ] + %.024.i248 = phi i32 [ 0, %_ZN2cv3dnn14dnn4_v20241223L5totalERKSt6vectorIiSaIiEEii.exit ], [ 1, %.preheader.i239.thread ], [ %318, %_ZN2cv3dnn14dnn4_v20241223L5totalERKSt6vectorIiSaIiEEii.exit250.loopexit ] store i32 %.024.i248, ptr %114, align 4, !tbaa !16 invoke void @_ZN2cv3Mat6createEiPKii(ptr noundef nonnull align 8 dereferenceable(96) %15, i32 noundef 2, ptr noundef nonnull %31, i32 noundef 5) to label %321 unwind label %322 @@ -25874,8 +25880,8 @@ define linkonce_odr void @_ZNSt6vectorIiSaIiEE17_M_default_appendEm(ptr noundef _ZSt6fill_nIPimiET_S1_T0_RKT1_.exit.loopexit.i.i.i: ; preds = %19 %.idx.i.i.i.i.i = shl nuw nsw i64 %21, 2 - tail call void @llvm.memset.p0.i64(ptr align 4 %20, i8 0, i64 %.idx.i.i.i.i.i, i1 false), !tbaa !16 %23 = getelementptr inbounds nuw i8, ptr %20, i64 %.idx.i.i.i.i.i + tail call void @llvm.memset.p0.i64(ptr align 4 %20, i8 0, i64 %.idx.i.i.i.i.i, i1 false), !tbaa !16 br label %_ZSt27__uninitialized_default_n_aIPimiET_S1_T0_RSaIT1_E.exit _ZSt27__uninitialized_default_n_aIPimiET_S1_T0_RSaIT1_E.exit: ; preds = %19, %_ZSt6fill_nIPimiET_S1_T0_RKT1_.exit.loopexit.i.i.i diff --git a/bench/opencv/optimized/lrn_layer.ll b/bench/opencv/optimized/lrn_layer.ll index 04422d36a15..07d91460cb5 100644 --- a/bench/opencv/optimized/lrn_layer.ll +++ b/bench/opencv/optimized/lrn_layer.ll @@ -1884,7 +1884,6 @@ define linkonce_odr hidden noundef i64 @_ZNK2cv3dnn12LRNLayerImpl8getFLOPSERKSt6 br i1 %exitcond108.not, label %.lr.ph.i39.us.preheader, label %.lr.ph.i.us, !llvm.loop !78 .lr.ph.i39.us.preheader: ; preds = %.lr.ph.i.us - %40 = mul nsw i32 %39, %28 %wide.trip.count109 = and i64 %35, 2147483647 br label %.lr.ph.i39.us @@ -1898,9 +1897,13 @@ define linkonce_odr hidden noundef i64 @_ZNK2cv3dnn12LRNLayerImpl8getFLOPSERKSt6 %exitcond110.not = icmp eq i64 %indvars.iv.next.i42.us, %wide.trip.count109 br i1 %exitcond110.not, label %_ZN2cv3dnn14dnn4_v20241223L5totalERKSt6vectorIiSaIiEEii.exit43.us, label %.lr.ph.i39.us, !llvm.loop !78 -_ZN2cv3dnn14dnn4_v20241223L5totalERKSt6vectorIiSaIiEEii.exit43.us: ; preds = %.lr.ph.i39.us, %.preheader.i.us, %.lr.ph.split.us - %44 = phi i32 [ 0, %.lr.ph.split.us ], [ %28, %.preheader.i.us ], [ %40, %.lr.ph.i39.us ] - %.024.i37.us = phi i32 [ 0, %.lr.ph.split.us ], [ 1, %.preheader.i.us ], [ %43, %.lr.ph.i39.us ] +_ZN2cv3dnn14dnn4_v20241223L5totalERKSt6vectorIiSaIiEEii.exit43.us: ; preds = %.lr.ph.i39.us + %43 = mul nsw i32 %39, %28 + br label %_ZN2cv3dnn14dnn4_v20241223L5totalERKSt6vectorIiSaIiEEii.exit43.us + +_ZN2cv3dnn14dnn4_v20241223L5totalERKSt6vectorIiSaIiEEii.exit43.us: ; preds = %_ZN2cv3dnn14dnn4_v20241223L5totalERKSt6vectorIiSaIiEEii.exit43.us.loopexit, %.preheader.i.us, %.lr.ph.split.us + %44 = phi i32 [ 0, %.lr.ph.split.us ], [ %28, %.preheader.i.us ], [ %43, %_ZN2cv3dnn14dnn4_v20241223L5totalERKSt6vectorIiSaIiEEii.exit43.us.loopexit ] + %.024.i37.us = phi i32 [ 0, %.lr.ph.split.us ], [ 1, %.preheader.i.us ], [ %42, %_ZN2cv3dnn14dnn4_v20241223L5totalERKSt6vectorIiSaIiEEii.exit43.us.loopexit ] %45 = shl nsw i32 %26, 2 %46 = mul nsw i32 %45, %.024.i37.us %47 = add nsw i32 %46, %44 diff --git a/bench/opencv/optimized/perf_norm.ll b/bench/opencv/optimized/perf_norm.ll index a972d613daa..a9e6d9ee0d0 100644 --- a/bench/opencv/optimized/perf_norm.ll +++ b/bench/opencv/optimized/perf_norm.ll @@ -32527,25 +32527,22 @@ define internal fastcc void @_ZN7testing8internal16UniversalPrinterIN11opencv_te %indvars.iv.next.i.i = add nsw i64 %indvars.iv.i.i, 1 br i1 %or.cond.i.i, label %.critedge.i.i, label %.preheader.i.i.preheader, !llvm.loop !853 -.preheader.i.i.preheader: ; preds = %.critedge.i.i - %12 = getelementptr inbounds i8, ptr @.str.114, i64 %indvars.iv.i.i - br label %.preheader.i.i - -.preheader.i.i: ; preds = %.preheader.i.i.preheader, %.preheader.i.i - %indvars.iv29.i.i = phi i64 [ %indvars.iv.next30.i.i, %.preheader.i.i ], [ %indvars.iv.i.i, %.preheader.i.i.preheader ] - %13 = getelementptr inbounds i8, ptr @.str.114, i64 %indvars.iv29.i.i - %14 = load i8, ptr %13, align 1, !tbaa !14 - %15 = sext i8 %14 to i32 - %16 = call i32 @isspace(i32 noundef %15) #36 - %.not50.i.i = icmp eq i32 %16, 0 - %17 = icmp ne i8 %14, 44 - %or.cond53.not10.i.i = and i1 %17, %.not50.i.i - %18 = icmp ne i64 %indvars.iv29.i.i, 99 - %or.cond56.i.i = and i1 %18, %or.cond53.not10.i.i +.preheader.i.i.preheader: ; preds = %.critedge.i.i, %.preheader.i.i + %indvars.iv29.i.i = phi i64 [ %indvars.iv.next30.i.i, %.preheader.i.i ], [ %indvars.iv.i.i, %.critedge.i.i ] + %12 = getelementptr inbounds i8, ptr @.str.114, i64 %indvars.iv29.i.i + %13 = load i8, ptr %12, align 1, !tbaa !14 + %14 = sext i8 %13 to i32 + %15 = call i32 @isspace(i32 noundef %14) #36 + %.not50.i.i = icmp eq i32 %15, 0 + %16 = icmp ne i8 %13, 44 + %or.cond53.not10.i.i = and i1 %16, %.not50.i.i + %17 = icmp ne i64 %indvars.iv29.i.i, 99 + %or.cond56.i.i = and i1 %17, %or.cond53.not10.i.i %indvars.iv.next30.i.i = add nsw i64 %indvars.iv29.i.i, 1 br i1 %or.cond56.i.i, label %.preheader.i.i, label %.critedge55.i.i, !llvm.loop !854 .critedge55.i.i: ; preds = %.preheader.i.i + %18 = getelementptr inbounds i8, ptr @.str.114, i64 %indvars.iv.i.i %19 = getelementptr inbounds nuw i32, ptr @__const._ZNK11opencv_test12_GLOBAL__N_18NormType7PrintToEPSo.vals, i64 %indvars.iv32.i.i %20 = load i32, ptr %19, align 4, !tbaa !245 %21 = and i32 %20, %.03625.i.i @@ -32591,7 +32588,7 @@ define internal fastcc void @_ZN7testing8internal16UniversalPrinterIN11opencv_te br label %36 35: ; preds = %._crit_edge.i.i.i.i - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %33, ptr nonnull align 1 %12, i64 %gepdiff.i.i, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %33, ptr nonnull align 1 %18, i64 %gepdiff.i.i, i1 false) br label %36 36: ; preds = %35, %34, %._crit_edge.i.i.i.i diff --git a/bench/openexr/optimized/ImfImage.ll b/bench/openexr/optimized/ImfImage.ll index cafbe2633e2..0be3648fbc4 100644 --- a/bench/openexr/optimized/ImfImage.ll +++ b/bench/openexr/optimized/ImfImage.ll @@ -1037,7 +1037,7 @@ define void @_ZN7Imf_3_45Image6resizeERKN9Imath_3_23BoxINS1_4Vec2IiEEEENS_9Level %66 = add nuw nsw i32 %.069.i.i.i, 1 %67 = lshr i32 %.078.i.i.i, 1 %68 = icmp samesign ugt i32 %.078.i.i.i, 3 - br i1 %68, label %.lr.ph.i6.i.i, label %.lr.ph.i6.i.i53.preheader, !llvm.loop !55 + br i1 %68, label %.lr.ph.i6.i.i, label %.lr.ph.i6.i.i53, !llvm.loop !55 69: ; preds = %45 %70 = getelementptr inbounds nuw i8, ptr %1, i64 8 @@ -1098,29 +1098,20 @@ _ZN7Imf_3_412_GLOBAL__N_117computeNumXLevelsERKN9Imath_3_23BoxINS1_4Vec2IiEEEENS _ZN7Imf_3_412_GLOBAL__N_117computeNumXLevelsERKN9Imath_3_23BoxINS1_4Vec2IiEEEENS_9LevelModeENS_17LevelRoundingModeE.exit: ; preds = %45 br label %_ZN7Imf_3_412_GLOBAL__N_117computeNumYLevelsERKN9Imath_3_23BoxINS1_4Vec2IiEEEENS_9LevelModeENS_17LevelRoundingModeE.exit -.lr.ph.i.i.i62.preheader: ; preds = %.lr.ph.i.i.i - %96 = add nuw nsw i32 %.06.i.i.i, 2 - br label %.lr.ph.i.i.i62 - -.lr.ph.i.i.i62: ; preds = %.lr.ph.i.i.i62.preheader, %.lr.ph.i.i.i62 - %.06.i.i.i63 = phi i32 [ %97, %.lr.ph.i.i.i62 ], [ 0, %.lr.ph.i.i.i62.preheader ] - %.045.i.i.i64 = phi i32 [ %98, %.lr.ph.i.i.i62 ], [ %.sroa.speculated.i, %.lr.ph.i.i.i62.preheader ] - %97 = add nuw nsw i32 %.06.i.i.i63, 1 - %98 = lshr i32 %.045.i.i.i64, 1 - %99 = icmp samesign ugt i32 %.045.i.i.i64, 3 - br i1 %99, label %.lr.ph.i.i.i62, label %_ZN7Imf_3_412_GLOBAL__N_19roundLog2EiNS_17LevelRoundingModeE.exit.i60, !llvm.loop !54 - -.lr.ph.i6.i.i53.preheader: ; preds = %.lr.ph.i6.i.i - %100 = add nuw nsw i32 %spec.select.i.i.i, %66 - %101 = add nuw nsw i32 %100, 1 - br label %.lr.ph.i6.i.i53 - -.lr.ph.i6.i.i53: ; preds = %.lr.ph.i6.i.i53.preheader, %.lr.ph.i6.i.i53 - %.010.i.i.i54 = phi i32 [ %spec.select.i.i.i58, %.lr.ph.i6.i.i53 ], [ 0, %.lr.ph.i6.i.i53.preheader ] - %.069.i.i.i55 = phi i32 [ %103, %.lr.ph.i6.i.i53 ], [ 0, %.lr.ph.i6.i.i53.preheader ] - %.078.i.i.i56 = phi i32 [ %104, %.lr.ph.i6.i.i53 ], [ %.sroa.speculated.i, %.lr.ph.i6.i.i53.preheader ] - %102 = and i32 %.078.i.i.i56, 1 - %.not.i.i.i57 = icmp eq i32 %102, 0 +.lr.ph.i.i.i62.preheader: ; preds = %.lr.ph.i.i.i, %.lr.ph.i.i.i62 + %.06.i.i.i63 = phi i32 [ %96, %.lr.ph.i.i.i62 ], [ 0, %.lr.ph.i.i.i ] + %.045.i.i.i64 = phi i32 [ %97, %.lr.ph.i.i.i62 ], [ %.sroa.speculated.i, %.lr.ph.i.i.i ] + %96 = add nuw nsw i32 %.06.i.i.i63, 1 + %97 = lshr i32 %.045.i.i.i64, 1 + %98 = icmp samesign ugt i32 %.045.i.i.i64, 3 + br i1 %98, label %.lr.ph.i.i.i62, label %_ZN7Imf_3_412_GLOBAL__N_19roundLog2EiNS_17LevelRoundingModeE.exit.i60.loopexit, !llvm.loop !54 + +.lr.ph.i6.i.i53:; preds = %.lr.ph.i6.i.i, %.lr.ph.i6.i.i53 + %.010.i.i.i54 = phi i32 [ %spec.select.i.i.i58, %.lr.ph.i6.i.i53 ], [ 0, %.lr.ph.i6.i.i ] + %.069.i.i.i55 = phi i32 [ %100, %.lr.ph.i6.i.i53 ], [ 0, %.lr.ph.i6.i.i ] + %.078.i.i.i56 = phi i32 [ %101, %.lr.ph.i6.i.i53 ], [ %.sroa.speculated.i, %.lr.ph.i6.i.i ] + %99 = and i32 %.078.i.i.i56, 1 + %.not.i.i.i57 = icmp eq i32 %99, 0 %spec.select.i.i.i58 = select i1 %.not.i.i.i57, i32 %.010.i.i.i54, i32 1 %103 = add nuw nsw i32 %.069.i.i.i55, 1 %104 = lshr i32 %.078.i.i.i56, 1 @@ -1128,12 +1119,18 @@ _ZN7Imf_3_412_GLOBAL__N_117computeNumXLevelsERKN9Imath_3_23BoxINS1_4Vec2IiEEEENS br i1 %105, label %.lr.ph.i6.i.i53, label %._crit_edge.loopexit.i.i.i59, !llvm.loop !55 ._crit_edge.loopexit.i.i.i59: ; preds = %.lr.ph.i6.i.i53 - %106 = add nuw nsw i32 %spec.select.i.i.i58, %103 + %106 = add nuw nsw i32 %spec.select.i.i.i, %66 + %104 = add nuw nsw i32 %103, 1 + %105 = add nuw nsw i32 %spec.select.i.i.i58, %100 br label %_ZN7Imf_3_412_GLOBAL__N_19roundLog2EiNS_17LevelRoundingModeE.exit.i60 -_ZN7Imf_3_412_GLOBAL__N_19roundLog2EiNS_17LevelRoundingModeE.exit.i60: ; preds = %.lr.ph.i.i.i62, %46, %64, %60, %._crit_edge.loopexit.i.i.i59 - %107 = phi i32 [ %101, %._crit_edge.loopexit.i.i.i59 ], [ 1, %60 ], [ 1, %64 ], [ 2, %46 ], [ %96, %.lr.ph.i.i.i62 ] - %.0.i.i61 = phi i32 [ %106, %._crit_edge.loopexit.i.i.i59 ], [ 0, %60 ], [ 0, %64 ], [ 1, %46 ], [ %97, %.lr.ph.i.i.i62 ] +_ZN7Imf_3_412_GLOBAL__N_19roundLog2EiNS_17LevelRoundingModeE.exit.i60: ; preds = %.lr.ph.i.i.i62 + %106 = add nuw nsw i32 %.06.i.i.i, 2 + br label %_ZN7Imf_3_412_GLOBAL__N_19roundLog2EiNS_17LevelRoundingModeE.exit.i60 + +_ZN7Imf_3_412_GLOBAL__N_19roundLog2EiNS_17LevelRoundingModeE.exit.i60: ; preds = %46, %_ZN7Imf_3_412_GLOBAL__N_19roundLog2EiNS_17LevelRoundingModeE.exit.i60.loopexit, %64, %60, %._crit_edge.loopexit.i.i.i59 + %107 = phi i32 [ %104, %._crit_edge.loopexit.i.i.i59 ], [ 1, %60 ], [ 1, %64 ], [ %106, %_ZN7Imf_3_412_GLOBAL__N_19roundLog2EiNS_17LevelRoundingModeE.exit.i60.loopexit ], [ 2, %46 ] + %.0.i.i61 = phi i32 [ %105, %._crit_edge.loopexit.i.i.i59 ], [ 0, %60 ], [ 0, %64 ], [ %96, %_ZN7Imf_3_412_GLOBAL__N_19roundLog2EiNS_17LevelRoundingModeE.exit.i60.loopexit ], [ 1, %46 ] %108 = add nsw i32 %.0.i.i61, 1 br label %_ZN7Imf_3_412_GLOBAL__N_117computeNumYLevelsERKN9Imath_3_23BoxINS1_4Vec2IiEEEENS_9LevelModeENS_17LevelRoundingModeE.exit diff --git a/bench/openexr/optimized/internal_piz.ll b/bench/openexr/optimized/internal_piz.ll index f1c124bbec4..9a32fb39f5e 100644 --- a/bench/openexr/optimized/internal_piz.ll +++ b/bench/openexr/optimized/internal_piz.ll @@ -35,16 +35,14 @@ define hidden i32 @internal_exr_apply_piz(ptr noundef %0) local_unnamed_addr #0 20: ; preds = %15 %21 = load ptr, ptr %16, align 8, !tbaa !16 - %22 = getelementptr inbounds nuw i8, ptr %21, i64 %6 - %23 = getelementptr inbounds nuw i8, ptr %22, i64 8192 - %24 = getelementptr inbounds nuw i8, ptr %0, i64 104 - %25 = getelementptr inbounds nuw i8, ptr %0, i64 44 - %26 = load i32, ptr %25, align 4, !tbaa !17 - %27 = icmp sgt i32 %26, 0 - br i1 %27, label %.lr.ph198, label %._crit_edge199 + %22 = getelementptr inbounds nuw i8, ptr %0, i64 104 + %23 = getelementptr inbounds nuw i8, ptr %0, i64 44 + %24 = load i32, ptr %23, align 4, !tbaa !17 + %25 = icmp sgt i32 %24, 0 + br i1 %25, label %.lr.ph198, label %._crit_edge199 .lr.ph198: ; preds = %20 - %28 = load ptr, ptr %24, align 8, !tbaa !18 + %28 = load ptr, ptr %22, align 8, !tbaa !18 %29 = getelementptr inbounds nuw i8, ptr %0, i64 40 %30 = getelementptr inbounds nuw i8, ptr %0, i64 16 %31 = getelementptr inbounds nuw i8, ptr %0, i64 8 @@ -52,19 +50,21 @@ define hidden i32 @internal_exr_apply_piz(ptr noundef %0) local_unnamed_addr #0 br label %87 ._crit_edge199: ; preds = %._crit_edge, %20 + %30 = getelementptr inbounds nuw i8, ptr %21, i64 %6 + %31 = getelementptr inbounds nuw i8, ptr %30, i64 8192 %32 = load ptr, ptr %10, align 8, !tbaa !20 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(8192) %22, i8 0, i64 8192, i1 false), !tbaa !21 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(8192) %30, i8 0, i64 8192, i1 false), !tbaa !21 %.not38.i = icmp ult i64 %8, 2 br i1 %.not38.i, label %._crit_edge.i, label %.lr.ph.i ._crit_edge.loopexit.i: ; preds = %.lr.ph.i - %.pre.i = load i8, ptr %22, align 1, !tbaa !21 + %.pre.i = load i8, ptr %30, align 1, !tbaa !21 %33 = and i8 %.pre.i, -2 br label %._crit_edge.i ._crit_edge.i: ; preds = %._crit_edge.loopexit.i, %._crit_edge199 %34 = phi i8 [ %33, %._crit_edge.loopexit.i ], [ 0, %._crit_edge199 ] - store i8 %34, ptr %22, align 1, !tbaa !21 + store i8 %34, ptr %30, align 1, !tbaa !21 br label %46 .lr.ph.i: ; preds = %._crit_edge199, %.lr.ph.i @@ -75,7 +75,7 @@ define hidden i32 @internal_exr_apply_piz(ptr noundef %0) local_unnamed_addr #0 %38 = shl nuw nsw i16 1, %37 %39 = lshr i16 %36, 3 %40 = zext nneg i16 %39 to i64 - %41 = getelementptr inbounds nuw i8, ptr %22, i64 %40 + %41 = getelementptr inbounds nuw i8, ptr %30, i64 %40 %42 = load i8, ptr %41, align 1, !tbaa !21 %43 = trunc nuw i16 %38 to i8 %44 = or i8 %42, %43 @@ -88,7 +88,7 @@ define hidden i32 @internal_exr_apply_piz(ptr noundef %0) local_unnamed_addr #0 %indvars.iv.i = phi i64 [ 0, %._crit_edge.i ], [ %indvars.iv.next.i, %46 ] %.02836.i = phi i16 [ 0, %._crit_edge.i ], [ %.1.i, %46 ] %.02935.i = phi i16 [ 8191, %._crit_edge.i ], [ %.2.i, %46 ] - %47 = getelementptr inbounds nuw i8, ptr %22, i64 %indvars.iv.i + %47 = getelementptr inbounds nuw i8, ptr %30, i64 %indvars.iv.i %48 = load i8, ptr %47, align 1, !tbaa !21 %.not.i = icmp eq i8 %48, 0 %49 = trunc nuw nsw i64 %indvars.iv.i to i16 @@ -110,7 +110,7 @@ bitmapFromData.exit: ; preds = %46, %63 %52 = trunc nuw nsw i64 %indvars.iv.i165 to i32 %53 = lshr i64 %indvars.iv.i165, 3 %54 = and i64 %53, 536870911 - %55 = getelementptr inbounds nuw i8, ptr %22, i64 %54 + %55 = getelementptr inbounds nuw i8, ptr %30, i64 %54 %56 = load i8, ptr %55, align 1, !tbaa !21 %57 = zext i8 %56 to i32 %58 = and i32 %52, 7 @@ -126,7 +126,7 @@ bitmapFromData.exit: ; preds = %46, %63 63: ; preds = %61, %51 %.01112.sink.i = phi i16 [ %.01112.i, %61 ], [ 0, %51 ] %.1.i167 = phi i16 [ %62, %61 ], [ %.01112.i, %51 ] - %64 = getelementptr inbounds nuw i16, ptr %23, i64 %indvars.iv.i165 + %64 = getelementptr inbounds nuw i16, ptr %31, i64 %indvars.iv.i165 store i16 %.01112.sink.i, ptr %64, align 2, !tbaa !22 %indvars.iv.next.i168 = add nuw nsw i64 %indvars.iv.i165, 1 %exitcond.not.i169 = icmp eq i64 %indvars.iv.next.i168, 65536 @@ -167,7 +167,7 @@ forwardLutFromBitmap.exit: ; preds = %63 %73 = getelementptr inbounds nuw i16, ptr %2, i64 %indvars.iv.i173 %74 = load i16, ptr %73, align 2, !tbaa !22, !noalias !32 %75 = zext i16 %74 to i64 - %76 = getelementptr inbounds nuw i16, ptr %23, i64 %75 + %76 = getelementptr inbounds nuw i16, ptr %31, i64 %75 %77 = load i16, ptr %76, align 2, !tbaa !22, !alias.scope !27, !noalias !30 store i16 %77, ptr %73, align 2, !tbaa !22, !noalias !32 %indvars.iv.next.i174 = add nuw nsw i64 %indvars.iv.i173, 1 @@ -179,7 +179,7 @@ forwardLutFromBitmap.exit: ; preds = %63 %78 = getelementptr inbounds nuw i16, ptr %.019.lcssa34.i, i64 %.024.i %79 = load i16, ptr %78, align 2, !tbaa !22, !alias.scope !30, !noalias !27 %80 = zext i16 %79 to i64 - %81 = getelementptr inbounds nuw i16, ptr %23, i64 %80 + %81 = getelementptr inbounds nuw i16, ptr %31, i64 %80 %82 = load i16, ptr %81, align 2, !tbaa !22, !alias.scope !27, !noalias !30 store i16 %82, ptr %78, align 2, !tbaa !22, !alias.scope !30, !noalias !27 %83 = add nuw nsw i64 %.024.i, 1 @@ -194,7 +194,7 @@ applyLut.exit: ; preds = %.lr.ph25.i, %.prehe br i1 %86, label %349, label %130 87: ; preds = %.lr.ph198, %._crit_edge - %88 = phi i32 [ %26, %.lr.ph198 ], [ %95, %._crit_edge ] + %88 = phi i32 [ %24, %.lr.ph198 ], [ %95, %._crit_edge ] %89 = phi i16 [ %.pre, %.lr.ph198 ], [ %96, %._crit_edge ] %90 = phi i16 [ %.pre, %.lr.ph198 ], [ %97, %._crit_edge ] %.0139196 = phi i32 [ 0, %.lr.ph198 ], [ %98, %._crit_edge ] @@ -210,7 +210,7 @@ applyLut.exit: ; preds = %.lr.ph25.i, %.prehe br label %.lr.ph ._crit_edge.loopexit: ; preds = %126 - %.pre224 = load i32, ptr %25, align 4, !tbaa !17 + %.pre224 = load i32, ptr %23, align 4, !tbaa !17 br label %._crit_edge ._crit_edge: ; preds = %._crit_edge.loopexit, %87 @@ -299,7 +299,7 @@ applyLut.exit: ; preds = %.lr.ph25.i, %.prehe 138: ; preds = %133 %139 = add nuw nsw i64 %134, 1 %140 = zext nneg i16 %.2.i to i64 - %141 = getelementptr inbounds nuw i8, ptr %22, i64 %140 + %141 = getelementptr inbounds nuw i8, ptr %30, i64 %140 tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %132, ptr noundef nonnull align 1 dereferenceable(1) %141, i64 %139, i1 false) %142 = getelementptr inbounds nuw i8, ptr %132, i64 %139 %143 = add nuw nsw i64 %134, 9 @@ -647,7 +647,7 @@ wav_2D_encode.exit.loopexit: ; preds = %.loopexit.i 335: ; preds = %331 %336 = load ptr, ptr %4, align 8, !tbaa !3 - %337 = load ptr, ptr %24, align 8, !tbaa !18 + %337 = load ptr, ptr %22, align 8, !tbaa !18 call void @llvm.memcpy.p0.p0.i64(ptr align 1 %336, ptr align 1 %337, i64 %8, i1 false) br label %347 @@ -664,7 +664,7 @@ wav_2D_encode.exit.loopexit: ; preds = %.loopexit.i 344: ; preds = %338 %345 = load ptr, ptr %4, align 8, !tbaa !3 - %346 = load ptr, ptr %24, align 8, !tbaa !18 + %346 = load ptr, ptr %22, align 8, !tbaa !18 call void @llvm.memcpy.p0.p0.i64(ptr align 1 %345, ptr align 1 %346, i64 %8, i1 false) br label %347 @@ -913,11 +913,15 @@ reverseLutFromBitmap.exit: ; preds = %.preheader.i, %.lr. %91 = sdiv i8 %90, 2 %92 = sext i8 %91 to i32 %93 = icmp sgt i8 %90, 1 - %94 = mul i32 %86, %92 - br i1 %93, label %.lr.ph, label %._crit_edge + br i1 %93, label %.lr.ph, label %.._crit_edge_crit_edge + +.._crit_edge_crit_edge: ; preds = %82 + %.pre211 = mul i32 %86, %92 + br label %._crit_edge .lr.ph: ; preds = %82 %95 = tail call i32 @llvm.smin.i32(i32 %86, i32 %88) + %95 = mul i32 %86, %92 %wide.trip.count = zext nneg i32 %92 to i64 br label %102 @@ -925,9 +929,10 @@ reverseLutFromBitmap.exit: ; preds = %.preheader.i, %.lr. %.pre = load i16, ptr %71, align 8, !tbaa !64 br label %._crit_edge -._crit_edge: ; preds = %82, %._crit_edge.loopexit - %96 = phi i16 [ %.pre, %._crit_edge.loopexit ], [ %83, %82 ] - %97 = mul i32 %94, %88 +._crit_edge: ; preds = %.._crit_edge_crit_edge, %._crit_edge.loopexit + %96 = phi i32 [ %.pre211, %.._crit_edge_crit_edge ], [ %95, %._crit_edge.loopexit ] + %96 = phi i16 [ %83, %.._crit_edge_crit_edge ], [ %.pre, %._crit_edge.loopexit ] + %97 = mul i32 %.pre-phi, %88 %98 = sext i32 %97 to i64 %99 = getelementptr inbounds i16, ptr %.0149178, i64 %98 %indvars.iv.next203 = add nuw nsw i64 %indvars.iv202, 1 @@ -959,7 +964,7 @@ reverseLutFromBitmap.exit: ; preds = %.preheader.i, %.lr. %.1137.i = phi i32 [ %220, %.loopexit.i ], [ %107, %.lr.ph139.preheader.i ] %.091136.i = phi i32 [ %.1137.i, %.loopexit.i ], [ %109, %.lr.ph139.preheader.i ] %110 = sub nsw i32 %88, %.091136.i - %111 = mul nsw i32 %110, %94 + %111 = mul nsw i32 %110, %95 %112 = sext i32 %111 to i64 %.idx.i = shl nsw i64 %112, 1 %113 = getelementptr inbounds i8, ptr %106, i64 %.idx.i @@ -969,8 +974,8 @@ reverseLutFromBitmap.exit: ; preds = %.preheader.i, %.lr. br i1 %.not95125.i, label %._crit_edge130.i, label %.lr.ph129.i .lr.ph129.i: ; preds = %.lr.ph139.i - %116 = mul nsw i32 %.091136.i, %94 - %117 = mul nsw i32 %.1137.i, %94 + %116 = mul nsw i32 %.091136.i, %95 + %117 = mul nsw i32 %.1137.i, %95 %118 = sub nsw i32 %86, %.091136.i %119 = mul nsw i32 %118, %92 %120 = sext i32 %119 to i64 diff --git a/bench/openjdk/optimized/jcphuff.ll b/bench/openjdk/optimized/jcphuff.ll index f93d242dda3..8eba8fb8e65 100644 --- a/bench/openjdk/optimized/jcphuff.ll +++ b/bench/openjdk/optimized/jcphuff.ll @@ -331,8 +331,6 @@ define internal noundef i32 @encode_mcu_DC_first(ptr noundef %0, ptr noundef rea %46 = load i32, ptr %45, align 4 %47 = sub nsw i32 %44, %46 store i32 %44, ptr %45, align 4 - %.lobit = ashr i32 %47, 31 - %.055 = add nsw i32 %.lobit, %47 %.not6264 = icmp eq i32 %44, %46 br i1 %.not6264, label %._crit_edge.thread, label %.lr.ph.preheader @@ -349,6 +347,8 @@ define internal noundef i32 @encode_mcu_DC_first(ptr noundef %0, ptr noundef rea br i1 %.not62, label %._crit_edge, label %.lr.ph, !llvm.loop !8 ._crit_edge: ; preds = %.lr.ph + %.lobit = ashr i32 %47, 31 + %.055 = add nsw i32 %.lobit, %47 %50 = icmp samesign ugt i32 %.05665, 10 br i1 %50, label %51, label %._crit_edge.thread @@ -362,13 +362,14 @@ define internal noundef i32 @encode_mcu_DC_first(ptr noundef %0, ptr noundef rea br label %._crit_edge.thread ._crit_edge.thread: ; preds = %34, %51, %._crit_edge - %.056.lcssa75 = phi i32 [ %48, %51 ], [ %48, %._crit_edge ], [ 0, %34 ] + %.056.lcssa75 = phi i32 [ %.055, %51 ], [ %.055, %._crit_edge ], [ 0, %34 ] + %.056.lcssa77 = phi i32 [ %48, %51 ], [ %48, %._crit_edge ], [ 0, %34 ] %56 = getelementptr inbounds nuw i8, ptr %41, i64 20 %57 = load i32, ptr %56, align 4 %58 = load i32, ptr %31, align 8 %.not.i = icmp eq i32 %58, 0 %59 = sext i32 %57 to i64 - %60 = zext nneg i32 %.056.lcssa75 to i64 + %60 = zext nneg i32 %.056.lcssa77 to i64 br i1 %.not.i, label %67, label %61 61: ; preds = %._crit_edge.thread @@ -393,11 +394,11 @@ define internal noundef i32 @encode_mcu_DC_first(ptr noundef %0, ptr noundef rea br label %emit_symbol.exit emit_symbol.exit: ; preds = %61, %67 - %.not63 = icmp eq i32 %.056.lcssa75, 0 + %.not63 = icmp eq i32 %.056.lcssa77, 0 br i1 %.not63, label %77, label %76 76: ; preds = %emit_symbol.exit - tail call fastcc void @emit_bits(ptr noundef nonnull %4, i32 noundef %.055, i32 noundef %.056.lcssa75) + tail call fastcc void @emit_bits(ptr noundef nonnull %4, i32 noundef %.05578, i32 noundef %.056.lcssa77) br label %77 77: ; preds = %emit_symbol.exit, %76 diff --git a/bench/openmpi/optimized/bfrop_base_macro_backers.ll b/bench/openmpi/optimized/bfrop_base_macro_backers.ll index 0bba5a36975..5d4921b7e4b 100644 --- a/bench/openmpi/optimized/bfrop_base_macro_backers.ll +++ b/bench/openmpi/optimized/bfrop_base_macro_backers.ll @@ -1190,11 +1190,7 @@ pmix_bfrops_base_tma_argv_append_nosize.exit.i: ; preds = %33, %31 %41 = load ptr, ptr %3, align 8, !tbaa !16 %42 = load ptr, ptr %41, align 8, !tbaa !12 %.not6.i = icmp eq ptr %42, null - br i1 %.not6.i, label %.preheader.i.i35.thread.i, label %.lr.ph.i - -.preheader.i.i35.thread.i: ; preds = %39 - %43 = load ptr, ptr %5, align 8, !tbaa !12 - br label %pmix_bfrops_base_tma_argv_count.exit.i41.i + br i1 %.not6.i, label %pmix_bfrops_base_tma_argv_count.exit.i41.i, label %.lr.ph.i 44: ; preds = %.lr.ph.i %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 @@ -1204,8 +1200,8 @@ pmix_bfrops_base_tma_argv_append_nosize.exit.i: ; preds = %33, %31 br i1 %.not.i, label %.preheader.i.i35.i, label %.lr.ph.i, !llvm.loop !24 .lr.ph.i: ; preds = %39, %44 - %indvars.iv.i = phi i64 [ %indvars.iv.next.i, %44 ], [ 0, %39 ] - %47 = phi ptr [ %46, %44 ], [ %42, %39 ] + %indvars.iv.i = phi i64 [ %indvars.iv.next.i, %43 ], [ 0, %39 ] + %47 = phi ptr [ %46, %43 ], [ %42, %39 ] %48 = call i32 @strncmp(ptr noundef nonnull %47, ptr noundef nonnull %37, i64 noundef %40) #42 %49 = icmp eq i32 %48, 0 br i1 %49, label %50, label %44 @@ -1225,22 +1221,18 @@ pmix_bfrops_base_tma_argv_append_nosize.exit.i: ; preds = %33, %31 call void @free(ptr noundef nonnull %37) #44 br label %.thread.i -.preheader.i.i35.i: ; preds = %44 - %56 = load ptr, ptr %5, align 8, !tbaa !12 - br label %.lr.ph.i.i37.i - -.lr.ph.i.i37.i: ; preds = %.lr.ph.i.i37.i, %.preheader.i.i35.i - %.03.i.i38.i = phi i32 [ %57, %.lr.ph.i.i37.i ], [ 0, %.preheader.i.i35.i ] - %.062.i.i39.i = phi ptr [ %58, %.lr.ph.i.i37.i ], [ %41, %.preheader.i.i35.i ] - %57 = add nuw nsw i32 %.03.i.i38.i, 1 - %58 = getelementptr inbounds nuw i8, ptr %.062.i.i39.i, i64 8 - %59 = load ptr, ptr %58, align 8, !tbaa !12 - %.not.i.i40.i = icmp eq ptr %59, null +.preheader.i.i35.i: ; preds = %44, %.lr.ph.i.i37.i + %.03.i.i38.i = phi i32 [ %55, %.lr.ph.i.i37.i ], [ 0, %43 ] + %.062.i.i39.i = phi ptr [ %56, %.lr.ph.i.i37.i ], [ %41, %43 ] + %55 = add nuw nsw i32 %.03.i.i38.i, 1 + %56 = getelementptr inbounds nuw i8, ptr %.062.i.i39.i, i64 8 + %57 = load ptr, ptr %56, align 8, !tbaa !12 + %.not.i.i40.i = icmp eq ptr %57, null br i1 %.not.i.i40.i, label %pmix_bfrops_base_tma_argv_count.exit.i41.i, label %.lr.ph.i.i37.i, !llvm.loop !15 -pmix_bfrops_base_tma_argv_count.exit.i41.i: ; preds = %.lr.ph.i.i37.i, %.preheader.i.i35.thread.i - %60 = phi ptr [ %43, %.preheader.i.i35.thread.i ], [ %56, %.lr.ph.i.i37.i ] - %.07.i.i42.i = phi i32 [ 0, %.preheader.i.i35.thread.i ], [ %57, %.lr.ph.i.i37.i ] +pmix_bfrops_base_tma_argv_count.exit.i41.i: ; preds = %.lr.ph.i.i37.i, %39 + %60 = phi i32 [ 0, %39 ], [ %55, %.lr.ph.i.i37.i ] + %58 = load ptr, ptr %5, align 8, !tbaa !12 %61 = add nsw i32 %.07.i.i42.i, 2 %62 = sext i32 %61 to i64 %63 = shl nsw i64 %62, 3 @@ -1250,7 +1242,7 @@ pmix_bfrops_base_tma_argv_count.exit.i41.i: ; preds = %.lr.ph.i.i37.i, %.p br i1 %65, label %pmix_bfrops_base_tma_argv_append_nosize.exit46.i, label %66 66: ; preds = %pmix_bfrops_base_tma_argv_count.exit.i41.i - %67 = call noalias ptr @strdup(ptr noundef readonly %60) #44 + %67 = call noalias ptr @strdup(ptr noundef readonly %58) #44 %68 = sext i32 %.07.i.i42.i to i64 %69 = getelementptr inbounds ptr, ptr %64, i64 %68 store ptr %67, ptr %69, align 8, !tbaa !12 @@ -1268,8 +1260,8 @@ pmix_bfrops_base_tma_argv_append_nosize.exit46.i: ; preds = %71, %66, %pmix_bfro br label %.thread.i .thread.i: ; preds = %pmix_bfrops_base_tma_argv_append_nosize.exit46.i, %55, %51, %35 - %.sink24.i = phi ptr [ %6, %51 ], [ %5, %55 ], [ %5, %pmix_bfrops_base_tma_argv_append_nosize.exit46.i ], [ %5, %35 ] - %.2.i = phi i32 [ 0, %51 ], [ -11, %55 ], [ 0, %pmix_bfrops_base_tma_argv_append_nosize.exit46.i ], [ -29, %35 ] + %.sink24.i = phi ptr [ %6, %50 ], [ %5, %54 ], [ %5, %pmix_bfrops_base_tma_argv_append_nosize.exit46.i ], [ %5, %35 ] + %.2.i = phi i32 [ 0, %50 ], [ -11, %54 ], [ 0, %pmix_bfrops_base_tma_argv_append_nosize.exit46.i ], [ -29, %35 ] %74 = load ptr, ptr %.sink24.i, align 8, !tbaa !12 call void @free(ptr noundef %74) #44 call void @llvm.lifetime.end.p0(ptr nonnull %6) @@ -1281,7 +1273,7 @@ pmix_bfrops_base_tma_argv_append_nosize.exit46.i: ; preds = %71, %66, %pmix_bfro br label %pmix_bfrops_base_tma_setenv.exit pmix_bfrops_base_tma_setenv.exit: ; preds = %4, %14, %16, %75 - %.027.i = phi i32 [ %.1.i, %75 ], [ -27, %4 ], [ 0, %16 ], [ 0, %14 ] + %.027.i = phi i32 [ %.1.i, %73 ], [ -27, %4 ], [ 0, %16 ], [ 0, %14 ] ret i32 %.027.i } diff --git a/bench/openspiel/optimized/dynamic_routing_utils.ll b/bench/openspiel/optimized/dynamic_routing_utils.ll index 70e461ddb55..9f995c81132 100644 --- a/bench/openspiel/optimized/dynamic_routing_utils.ll +++ b/bench/openspiel/optimized/dynamic_routing_utils.ll @@ -8334,24 +8334,21 @@ _ZN4absl7debian218container_internal10btree_nodeINS1_10map_paramsINSt7__cxx1112b %33 = icmp eq i8 %6, 0 br i1 %33, label %.loopexit.sink.split, label %.lr.ph.preheader -.lr.ph.preheader: ; preds = %32 - %34 = load ptr, ptr %0, align 8 - br label %.lr.ph - -.lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph - %.04994 = phi ptr [ %36, %.lr.ph ], [ %0, %.lr.ph.preheader ] - %35 = getelementptr inbounds nuw i8, ptr %.04994, i64 240 - %36 = load ptr, ptr %35, align 8 - %37 = getelementptr inbounds nuw i8, ptr %36, i64 11 - %38 = load i8, ptr %37, align 1 - %.not86 = icmp eq i8 %38, 0 +.lr.ph.preheader: ; preds = %32, %.lr.ph + %.04994 = phi ptr [ %35, %.lr.ph ], [ %0, %32 ] + %34 = getelementptr inbounds nuw i8, ptr %.04994, i64 240 + %35 = load ptr, ptr %34, align 8 + %36 = getelementptr inbounds nuw i8, ptr %35, i64 11 + %37 = load i8, ptr %36, align 1 + %.not86 = icmp eq i8 %37, 0 br i1 %.not86, label %.lr.ph, label %._crit_edge, !llvm.loop !117 ._crit_edge: ; preds = %.lr.ph - %39 = getelementptr inbounds nuw i8, ptr %36, i64 8 + %38 = load ptr, ptr %0, align 8 + %39 = getelementptr inbounds nuw i8, ptr %35, i64 8 %40 = load i8, ptr %39, align 1 %41 = zext i8 %40 to i32 - %42 = load ptr, ptr %36, align 8 + %42 = load ptr, ptr %35, align 8 br label %43 43: ; preds = %.backedge, %._crit_edge @@ -8512,7 +8509,7 @@ _ZN4absl7debian218container_internal13common_paramsINSt7__cxx1112basic_stringIcS _ZN4absl7debian218container_internal10btree_nodeINS1_10map_paramsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS9_SaIS9_EESt4lessIS9_ESaISt4pairIKS9_SC_EELi256ELb0EEEE15value_destroy_nEhhPSI_.exit84: ; preds = %_ZN4absl7debian218container_internal13common_paramsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIS8_ESaISt4pairIKS8_St6vectorIS8_SaIS8_EEEELi256ELb0ENS1_15map_slot_policyIS8_SF_EEE7destroyEPSH_PNS1_13map_slot_typeIS8_SF_EE.exit.i82, %.preheader89 tail call void @_ZdlPvm(ptr noundef nonnull %.3, i64 noundef 280) #26 - %110 = icmp eq ptr %92, %34 + %110 = icmp eq ptr %92, %38 br i1 %110, label %.loopexit, label %111 111: ; preds = %_ZN4absl7debian218container_internal10btree_nodeINS1_10map_paramsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS9_SaIS9_EESt4lessIS9_ESaISt4pairIKS9_SC_EELi256ELb0EEEE15value_destroy_nEhhPSI_.exit84 diff --git a/bench/openssl/optimized/asn_mime.ll b/bench/openssl/optimized/asn_mime.ll index 0764c724942..5600488253c 100644 --- a/bench/openssl/optimized/asn_mime.ll +++ b/bench/openssl/optimized/asn_mime.ll @@ -560,28 +560,30 @@ asn1_write_micalg.exit: ; preds = %54, %68, %29, %.loo %92 = call i32 @SMIME_crlf_copy(ptr noundef nonnull %2, ptr noundef %91, i32 noundef %3) %93 = load ptr, ptr %83, align 8, !tbaa !32 %94 = call i32 %93(i32 noundef 13, ptr noundef nonnull %11, ptr noundef nonnull %7, ptr noundef nonnull %12) #6 - %.inv.i = icmp sgt i32 %94, 0 - %.1.i98 = select i1 %.inv.i, i32 %92, i32 0 %95 = load ptr, ptr %87, align 8, !tbaa !38 %.not2526.i = icmp eq ptr %95, %0 - br i1 %.not2526.i, label %asn1_output_data.exit, label %.lr.ph.i99 + br i1 %.not2526.i, label %.loopexit.i, label %.lr.ph.i99 .lr.ph.i99: ; preds = %90, %.lr.ph.i99 - %96 = phi ptr [ %97, %.lr.ph.i99 ], [ %95, %90 ] + %96 = phi ptr [ %97, %.lr.ph.i98 ], [ %95, %90 ] %97 = call ptr @BIO_pop(ptr noundef %96) #6 %98 = load ptr, ptr %87, align 8, !tbaa !38 %99 = call i32 @BIO_free(ptr noundef %98) #6 store ptr %97, ptr %87, align 8, !tbaa !38 %.not25.i = icmp eq ptr %97, %0 - br i1 %.not25.i, label %asn1_output_data.exit, label %.lr.ph.i99, !llvm.loop !39 + br i1 %.not25.i, label %.loopexit.i, label %.lr.ph.i99, !llvm.loop !39 + +.loopexit.i: ; preds = %.lr.ph.i98, %90 + %.inv.i = icmp sgt i32 %94, 0 + br i1 %.inv.i, label %asn1_output_data.exit, label %asn1_output_data.exit.thread -asn1_output_data.exit.thread: ; preds = %85, %86 +asn1_output_data.exit.thread: ; preds = %85, %86, %.loopexit.i call void @llvm.lifetime.end.p0(ptr nonnull %12) call void @llvm.lifetime.end.p0(ptr nonnull %11) br label %130 -asn1_output_data.exit: ; preds = %.lr.ph.i99, %79, %90 - %.018.i = phi i32 [ %80, %79 ], [ %.1.i98, %90 ], [ %.1.i98, %.lr.ph.i99 ] +asn1_output_data.exit: ; preds = %.loopexit.i, %79 + %.018.i = phi i32 [ %80, %79 ], [ %92, %.loopexit.i ] call void @llvm.lifetime.end.p0(ptr nonnull %12) call void @llvm.lifetime.end.p0(ptr nonnull %11) %.not97 = icmp eq i32 %.018.i, 0 diff --git a/bench/openusd/optimized/write.ll b/bench/openusd/optimized/write.ll index 3a88e65d375..9dbb0efb3cb 100644 --- a/bench/openusd/optimized/write.ll +++ b/bench/openusd/optimized/write.ll @@ -5588,20 +5588,18 @@ define internal fastcc ptr @avifImageCopyAndPad(ptr noundef %0, i32 noundef %1, %29 = tail call i32 @avifImagePlaneRowBytes(ptr noundef nonnull %4, i32 noundef %.081109) #13 %30 = tail call i32 @avifImagePlaneWidth(ptr noundef nonnull %4, i32 noundef %.081109) #13 %31 = tail call i32 @avifImagePlaneHeight(ptr noundef nonnull %4, i32 noundef %.081109) #13 - %32 = zext i32 %30 to i64 - %33 = shl i64 %32, %20 %.not110 = icmp eq i32 %25, 0 br i1 %.not110, label %.preheader94, label %.lr.ph100 .lr.ph100: ; preds = %21 %34 = icmp ugt i32 %30, %24 %35 = add i32 %24, -1 + %34 = zext i32 %33 to i64 + %35 = sub i32 %30, %24 %36 = zext i32 %35 to i64 - %37 = sub i32 %30, %24 - %38 = zext i32 %37 to i64 - %39 = zext i32 %23 to i64 - %40 = zext i32 %29 to i64 - br i1 %34, label %.lr.ph100.split.us, label %.lr.ph100.split + %37 = zext i32 %23 to i64 + %38 = zext i32 %29 to i64 + br i1 %32, label %.lr.ph100.split.us, label %.lr.ph100.split .lr.ph100.split.us: ; preds = %.lr.ph100 br i1 %.not93, label %.lr.ph100.split.us.split.us, label %.preheader.us.us @@ -5612,41 +5610,47 @@ define internal fastcc ptr @avifImageCopyAndPad(ptr noundef %0, i32 noundef %1, %.08397.us.us = phi ptr [ %45, %.lr.ph100.split.us.split.us ], [ %28, %.lr.ph100.split.us ] tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %.08397.us.us, ptr align 1 %.08298.us.us, i64 %27, i1 false) %41 = getelementptr inbounds nuw i8, ptr %.08397.us.us, i64 %26 - %42 = getelementptr inbounds nuw i8, ptr %.08397.us.us, i64 %36 + %42 = getelementptr inbounds nuw i8, ptr %.08397.us.us, i64 %34 %43 = load i8, ptr %42, align 1 - tail call void @llvm.memset.p0.i64(ptr align 1 %41, i8 %43, i64 %38, i1 false) - %44 = getelementptr inbounds nuw i8, ptr %.08298.us.us, i64 %39 - %45 = getelementptr inbounds nuw i8, ptr %.08397.us.us, i64 %40 + tail call void @llvm.memset.p0.i64(ptr align 1 %41, i8 %43, i64 %36, i1 false) + %44 = getelementptr inbounds nuw i8, ptr %.08298.us.us, i64 %37 + %45 = getelementptr inbounds nuw i8, ptr %.08397.us.us, i64 %38 %46 = add nuw i32 %.08099.us.us, 1 %exitcond121.not = icmp eq i32 %46, %25 br i1 %exitcond121.not, label %.preheader94, label %.lr.ph100.split.us.split.us, !llvm.loop !50 -.preheader.us.us: ; preds = %.lr.ph100.split.us, %..loopexit_crit_edge.us.us - %.08099.us.us102 = phi i32 [ %52, %..loopexit_crit_edge.us.us ], [ 0, %.lr.ph100.split.us ] - %.08298.us.us103 = phi ptr [ %50, %..loopexit_crit_edge.us.us ], [ %22, %.lr.ph100.split.us ] - %.08397.us.us104 = phi ptr [ %51, %..loopexit_crit_edge.us.us ], [ %28, %.lr.ph100.split.us ] +.preheader.us.us: ; preds = %.lr.ph100.split.us + %wide.trip.count = zext i32 %30 to i64 + br label %.preheader.us.us + +.preheader.us.us: ; preds = %.preheader.us.us.preheader, %..loopexit_crit_edge.us.us + %.08099.us.us102 = phi i32 [ %50, %..loopexit_crit_edge.us.us ], [ 0, %.preheader.us.us.preheader ] + %.08298.us.us103 = phi ptr [ %48, %..loopexit_crit_edge.us.us ], [ %22, %.preheader.us.us.preheader ] + %.08397.us.us104 = phi ptr [ %49, %..loopexit_crit_edge.us.us ], [ %28, %.preheader.us.us.preheader ] tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %.08397.us.us104, ptr align 1 %.08298.us.us103, i64 %27, i1 false) - %47 = getelementptr inbounds nuw i16, ptr %.08397.us.us104, i64 %36 + %47 = getelementptr inbounds nuw i16, ptr %.08397.us.us104, i64 %34 %.pre = load i16, ptr %47, align 2 br label %48 48: ; preds = %.preheader.us.us, %48 - %indvars.iv = phi i64 [ %26, %.preheader.us.us ], [ %indvars.iv.next, %48 ] + %indvars.iv = phi i64 [ %26, %.preheader.us.us ], [ %indvars.iv.next, %46 ] %49 = getelementptr inbounds nuw i16, ptr %.08397.us.us104, i64 %indvars.iv store i16 %.pre, ptr %49, align 2 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %exitcond119.not = icmp eq i64 %indvars.iv.next, %32 + %exitcond119.not = icmp eq i64 %indvars.iv.next, %wide.trip.count br i1 %exitcond119.not, label %..loopexit_crit_edge.us.us, label %48, !llvm.loop !51 ..loopexit_crit_edge.us.us: ; preds = %48 - %50 = getelementptr inbounds nuw i8, ptr %.08298.us.us103, i64 %39 - %51 = getelementptr inbounds nuw i8, ptr %.08397.us.us104, i64 %40 + %50 = getelementptr inbounds nuw i8, ptr %.08298.us.us103, i64 %37 + %51 = getelementptr inbounds nuw i8, ptr %.08397.us.us104, i64 %38 %52 = add nuw i32 %.08099.us.us102, 1 %exitcond120.not = icmp eq i32 %52, %25 br i1 %exitcond120.not, label %.preheader94, label %.preheader.us.us, !llvm.loop !50 .preheader94: ; preds = %.lr.ph100.split, %..loopexit_crit_edge.us.us, %.lr.ph100.split.us.split.us, %21 %.083.lcssa = phi ptr [ %28, %21 ], [ %45, %.lr.ph100.split.us.split.us ], [ %51, %..loopexit_crit_edge.us.us ], [ %57, %.lr.ph100.split ] + %51 = zext i32 %30 to i64 + %52 = shl i64 %51, %20 %53 = icmp ult i32 %25, %31 br i1 %53, label %.lr.ph, label %._crit_edge @@ -5660,8 +5664,8 @@ define internal fastcc ptr @avifImageCopyAndPad(ptr noundef %0, i32 noundef %1, %.08298 = phi ptr [ %56, %.lr.ph100.split ], [ %22, %.lr.ph100 ] %.08397 = phi ptr [ %57, %.lr.ph100.split ], [ %28, %.lr.ph100 ] tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %.08397, ptr align 1 %.08298, i64 %27, i1 false) - %56 = getelementptr inbounds nuw i8, ptr %.08298, i64 %39 - %57 = getelementptr inbounds nuw i8, ptr %.08397, i64 %40 + %56 = getelementptr inbounds nuw i8, ptr %.08298, i64 %37 + %57 = getelementptr inbounds nuw i8, ptr %.08397, i64 %38 %58 = add nuw i32 %.08099, 1 %exitcond.not = icmp eq i32 %58, %25 br i1 %exitcond.not, label %.preheader94, label %.lr.ph100.split, !llvm.loop !50 @@ -5670,7 +5674,7 @@ define internal fastcc ptr @avifImageCopyAndPad(ptr noundef %0, i32 noundef %1, %.0108 = phi i32 [ %25, %.lr.ph ], [ %62, %59 ] %.1107 = phi ptr [ %.083.lcssa, %.lr.ph ], [ %61, %59 ] %60 = getelementptr inbounds i8, ptr %.1107, i64 %55 - tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %.1107, ptr align 1 %60, i64 %33, i1 false) + tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %.1107, ptr align 1 %60, i64 %52, i1 false) %61 = getelementptr inbounds nuw i8, ptr %.1107, i64 %54 %62 = add nuw i32 %.0108, 1 %exitcond122.not = icmp eq i32 %62, %31 diff --git a/bench/php/optimized/var_unserializer.ll b/bench/php/optimized/var_unserializer.ll index deccc27bca1..b1307dd2269 100644 --- a/bench/php/optimized/var_unserializer.ll +++ b/bench/php/optimized/var_unserializer.ll @@ -1538,28 +1538,25 @@ parse_uiv.exit715: ; preds = %.lr.ph.i711 call void @llvm.lifetime.start.p0(ptr nonnull %10) br i1 %.not589, label %zend_string_release_ex.exit655, label %.lr.ph.i718.preheader -.lr.ph.i718.preheader: ; preds = %411 - %413 = icmp eq i8 %29, 67 - br label %.lr.ph.i718 - -.lr.ph.i718: ; preds = %.lr.ph.i718.preheader, %.lr.ph.i718 - %414 = phi i8 [ %420, %.lr.ph.i718 ], [ %77, %.lr.ph.i718.preheader ] - %.012.i719 = phi i64 [ %418, %.lr.ph.i718 ], [ 0, %.lr.ph.i718.preheader ] - %.0811.i720 = phi ptr [ %419, %.lr.ph.i718 ], [ %76, %.lr.ph.i718.preheader ] - %415 = mul i64 %.012.i719, 10 - %416 = and i8 %414, 15 - %417 = zext nneg i8 %416 to i64 - %418 = add i64 %415, %417 - %419 = getelementptr inbounds nuw i8, ptr %.0811.i720, i64 1 - %420 = load i8, ptr %419, align 1, !tbaa !46 - %421 = add i8 %420, -48 - %or.cond.i721 = icmp ult i8 %421, 10 +.lr.ph.i718.preheader: ; preds = %411, %.lr.ph.i718 + %413 = phi i8 [ %419, %.lr.ph.i718 ], [ %77, %411 ] + %.012.i719 = phi i64 [ %417, %.lr.ph.i718 ], [ 0, %411 ] + %.0811.i720 = phi ptr [ %418, %.lr.ph.i718 ], [ %76, %411 ] + %414 = mul i64 %.012.i719, 10 + %415 = and i8 %413, 15 + %416 = zext nneg i8 %415 to i64 + %417 = add i64 %414, %416 + %418 = getelementptr inbounds nuw i8, ptr %.0811.i720, i64 1 + %419 = load i8, ptr %418, align 1, !tbaa !46 + %420 = add i8 %419, -48 + %or.cond.i721 = icmp ult i8 %420, 10 br i1 %or.cond.i721, label %.lr.ph.i718, label %parse_uiv.exit722 parse_uiv.exit722: ; preds = %.lr.ph.i718 + %421 = icmp eq i8 %29, 67 %422 = ptrtoint ptr %412 to i64 %423 = sub i64 %30, %422 - %424 = add i64 %418, -1 + %424 = add i64 %417, -1 %or.cond.not = icmp ult i64 %424, %423 br i1 %or.cond.not, label %426, label %425 @@ -1568,7 +1565,7 @@ parse_uiv.exit722: ; preds = %.lr.ph.i718 br label %zend_string_release_ex.exit655 426: ; preds = %parse_uiv.exit722 - %427 = getelementptr inbounds nuw i8, ptr %412, i64 %418 + %427 = getelementptr inbounds nuw i8, ptr %412, i64 %417 store ptr %427, ptr %7, align 8, !tbaa !104 %428 = load i8, ptr %427, align 1, !tbaa !46 %.not624 = icmp eq i8 %428, 34 @@ -1597,7 +1594,7 @@ parse_uiv.exit722: ; preds = %.lr.ph.i718 436: ; preds = %434 %437 = load ptr, ptr @zend_string_init_interned, align 8, !tbaa !105 - %438 = tail call ptr %437(ptr noundef nonnull %412, i64 noundef %418, i1 noundef zeroext false) #16 + %438 = tail call ptr %437(ptr noundef nonnull %412, i64 noundef %417, i1 noundef zeroext false) #16 %439 = load ptr, ptr %3, align 8, !tbaa !41 %440 = getelementptr inbounds nuw i8, ptr %439, i64 24 %441 = load ptr, ptr %440, align 8, !tbaa !100 @@ -2018,7 +2015,7 @@ zend_string_release_ex.exit669: ; preds = %608, %611, %616 br label %zend_string_release_ex.exit655 647: ; preds = %629 - br i1 %413, label %648, label %662 + br i1 %421, label %648, label %662 648: ; preds = %647 %649 = call fastcc i32 @object_custom(ptr noundef %0, ptr noundef nonnull %1, ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull %.1527.ph) @@ -2877,28 +2874,25 @@ zval_ptr_dtor_str.exit702: ; preds = %987, %982, %980, %9 %1034 = icmp eq i8 %1033, 59 br i1 %1034, label %sub_0, label %zend_string_release_ex.exit691 -.lr.ph.i747.preheader: ; preds = %407 - %1035 = getelementptr inbounds nuw i8, ptr %248, i64 3 - br label %.lr.ph.i747 - -.lr.ph.i747: ; preds = %.lr.ph.i747.preheader, %.lr.ph.i747 - %1036 = phi i8 [ %1042, %.lr.ph.i747 ], [ %138, %.lr.ph.i747.preheader ] - %.012.i748 = phi i64 [ %1040, %.lr.ph.i747 ], [ 0, %.lr.ph.i747.preheader ] - %.0811.i749 = phi ptr [ %1041, %.lr.ph.i747 ], [ %137, %.lr.ph.i747.preheader ] - %1037 = mul i64 %.012.i748, 10 - %1038 = and i8 %1036, 15 - %1039 = zext nneg i8 %1038 to i64 - %1040 = add i64 %1037, %1039 - %1041 = getelementptr inbounds nuw i8, ptr %.0811.i749, i64 1 - %1042 = load i8, ptr %1041, align 1, !tbaa !46 - %1043 = add i8 %1042, -48 - %or.cond.i750 = icmp ult i8 %1043, 10 +.lr.ph.i747.preheader: ; preds = %407, %.lr.ph.i747 + %1035 = phi i8 [ %1041, %.lr.ph.i747 ], [ %138, %407 ] + %.012.i748 = phi i64 [ %1039, %.lr.ph.i747 ], [ 0, %407 ] + %.0811.i749 = phi ptr [ %1040, %.lr.ph.i747 ], [ %137, %407 ] + %1036 = mul i64 %.012.i748, 10 + %1037 = and i8 %1035, 15 + %1038 = zext nneg i8 %1037 to i64 + %1039 = add i64 %1036, %1038 + %1040 = getelementptr inbounds nuw i8, ptr %.0811.i749, i64 1 + %1041 = load i8, ptr %1040, align 1, !tbaa !46 + %1042 = add i8 %1041, -48 + %or.cond.i750 = icmp ult i8 %1042, 10 br i1 %or.cond.i750, label %.lr.ph.i747, label %parse_uiv.exit751 parse_uiv.exit751: ; preds = %.lr.ph.i747 - %1044 = ptrtoint ptr %1035 to i64 + %1043 = getelementptr inbounds nuw i8, ptr %248, i64 3 + %1044 = ptrtoint ptr %1043 to i64 %1045 = sub i64 %30, %1044 - %1046 = icmp ult i64 %1045, %1040 + %1046 = icmp ult i64 %1045, %1039 br i1 %1046, label %1047, label %parse_uiv.exit751.thread 1047: ; preds = %parse_uiv.exit751 @@ -2906,7 +2900,7 @@ parse_uiv.exit751: ; preds = %.lr.ph.i747 br label %zend_string_release_ex.exit691 parse_uiv.exit751.thread: ; preds = %parse_uiv.exit751 - %1048 = getelementptr inbounds nuw i8, ptr %1035, i64 %1040 + %1048 = getelementptr inbounds nuw i8, ptr %1043, i64 %1039 %1049 = load i8, ptr %1048, align 1, !tbaa !46 %.not591 = icmp eq i8 %1049, 34 br i1 %.not591, label %1051, label %1050 @@ -2933,7 +2927,7 @@ parse_uiv.exit751.thread: ; preds = %parse_uiv.exit751 1057: ; preds = %1055 %1058 = load ptr, ptr @zend_string_init_existing_interned, align 8, !tbaa !105 - %1059 = tail call ptr %1058(ptr noundef nonnull %1035, i64 noundef %1040, i1 noundef zeroext false) #16 + %1059 = tail call ptr %1058(ptr noundef nonnull %1043, i64 noundef %1039, i1 noundef zeroext false) #16 store ptr %1059, ptr %0, align 8, !tbaa !46 %1060 = getelementptr inbounds nuw i8, ptr %1059, i64 4 %1061 = load i32, ptr %1060, align 4, !tbaa !46 @@ -2945,11 +2939,11 @@ parse_uiv.exit751.thread: ; preds = %parse_uiv.exit751 br label %zend_string_release_ex.exit691 1065: ; preds = %1055 - %1066 = icmp ugt i64 %1040, 1 + %1066 = icmp ugt i64 %1039, 1 br i1 %1066, label %zend_string_alloc.exit, label %1075 zend_string_alloc.exit: ; preds = %1065 - %1067 = and i64 %1040, -8 + %1067 = and i64 %1039, -8 %1068 = add i64 %1067, 32 %1069 = tail call noalias ptr @_emalloc(i64 noundef %1068) #15 store i32 1, ptr %1069, align 4, !tbaa !63 @@ -2958,15 +2952,15 @@ zend_string_alloc.exit: ; preds = %1065 %1071 = getelementptr inbounds nuw i8, ptr %1069, i64 8 store i64 0, ptr %1071, align 8, !tbaa !129 %1072 = getelementptr inbounds nuw i8, ptr %1069, i64 16 - store i64 %1040, ptr %1072, align 8, !tbaa !131 + store i64 %1039, ptr %1072, align 8, !tbaa !131 %1073 = getelementptr inbounds nuw i8, ptr %1069, i64 24 - tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %1073, ptr nonnull align 1 %1035, i64 %1040, i1 false) - %1074 = getelementptr inbounds nuw i8, ptr %1073, i64 %1040 + tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %1073, ptr nonnull align 1 %1043, i64 %1039, i1 false) + %1074 = getelementptr inbounds nuw i8, ptr %1073, i64 %1039 store i8 0, ptr %1074, align 1, !tbaa !46 br label %zend_string_init_fast.exit 1075: ; preds = %1065 - %1076 = icmp eq i64 %1040, 0 + %1076 = icmp eq i64 %1039, 0 br i1 %1076, label %1077, label %1079 1077: ; preds = %1075 @@ -2974,7 +2968,7 @@ zend_string_alloc.exit: ; preds = %1065 br label %zend_string_init_fast.exit 1079: ; preds = %1075 - %1080 = load i8, ptr %1035, align 1, !tbaa !46 + %1080 = load i8, ptr %1043, align 1, !tbaa !46 %1081 = zext i8 %1080 to i64 %1082 = getelementptr inbounds nuw ptr, ptr @zend_one_char_string, i64 %1081 %1083 = load ptr, ptr %1082, align 8, !tbaa !58 diff --git a/bench/postgres/optimized/gistbuild.ll b/bench/postgres/optimized/gistbuild.ll index c2d1bc16d2f..cd3d0babe15 100644 --- a/bench/postgres/optimized/gistbuild.ll +++ b/bench/postgres/optimized/gistbuild.ll @@ -726,11 +726,7 @@ RelationGetSmgr.exit: ; preds = %94, %99 %103 = phi ptr [ %.pre.i, %99 ], [ %97, %94 ] %104 = call i32 @smgrnblocks(ptr noundef %103, i32 noundef 0) #9 %105 = icmp ult i32 %95, %104 - br i1 %105, label %RelationGetSmgr.exit._crit_edge35, label %RelationGetSmgr.exit._crit_edge - -RelationGetSmgr.exit._crit_edge35: ; preds = %RelationGetSmgr.exit - %.pre36 = load i64, ptr %15, align 8 - br label %112 + br i1 %105, label %112, label %RelationGetSmgr.exit._crit_edge RelationGetSmgr.exit._crit_edge: ; preds = %RelationGetSmgr.exit %.pre = load i32, ptr %24, align 8 @@ -746,31 +742,22 @@ RelationGetSmgr.exit._crit_edge: ; preds = %RelationGetSmgr.exi %111 = icmp sgt i64 %110, 4095 br i1 %111, label %112, label %gistInitBuffering.exit -112: ; preds = %RelationGetSmgr.exit._crit_edge35, %109 - %113 = phi i64 [ %.pre36, %RelationGetSmgr.exit._crit_edge35 ], [ %110, %109 ] - %114 = load ptr, ptr %5, align 8 - %115 = getelementptr inbounds nuw i8, ptr %5, i64 24 - %116 = load i64, ptr %115, align 8 - %117 = sub i64 8148, %116 - %118 = load i64, ptr %21, align 8 - %119 = sitofp i64 %118 to double - %120 = sitofp i64 %113 to double - %121 = fdiv double %119, %120 - %122 = fptoui double %121 to i64 - %123 = getelementptr inbounds nuw i8, ptr %114, i64 64 - %124 = load ptr, ptr %123, align 8 - %125 = load i32, ptr %124, align 8 - %126 = icmp sgt i32 %125, 0 - br i1 %126, label %.lr.ph.preheader.i, label %._crit_edge.i +112: ; preds = %109, %RelationGetSmgr.exit + %113 = load ptr, ptr %5, align 8 + %114 = getelementptr inbounds nuw i8, ptr %113, i64 64 + %115 = load ptr, ptr %114, align 8 + %116 = load i32, ptr %115, align 8 + %117 = icmp sgt i32 %116, 0 + br i1 %117, label %.lr.ph.preheader.i, label %._crit_edge.i .lr.ph.preheader.i: ; preds = %112 - %wide.trip.count.i = zext nneg i32 %125 to i64 + %wide.trip.count.i = zext nneg i32 %116 to i64 br label %.lr.ph.i .lr.ph.i: ; preds = %.lr.ph.i, %.lr.ph.preheader.i %indvars.iv.i = phi i64 [ 0, %.lr.ph.preheader.i ], [ %indvars.iv.next.i, %.lr.ph.i ] %.03848.i = phi i64 [ 8, %.lr.ph.preheader.i ], [ %.1.i, %.lr.ph.i ] - %127 = getelementptr inbounds nuw %struct.CompactAttribute, ptr %124, i64 %indvars.iv.i + %127 = getelementptr inbounds nuw %struct.CompactAttribute, ptr %115, i64 %indvars.iv.i %128 = getelementptr inbounds nuw i8, ptr %127, i64 28 %129 = load i16, ptr %128, align 4 %130 = icmp slt i16 %129, 0 @@ -783,9 +770,18 @@ RelationGetSmgr.exit._crit_edge: ; preds = %RelationGetSmgr.exi ._crit_edge.i: ; preds = %.lr.ph.i, %112 %.038.lcssa.i = phi i64 [ 8, %112 ], [ %.1.i, %.lr.ph.i ] - %131 = udiv i64 %117, %122 + %122 = getelementptr inbounds nuw i8, ptr %5, i64 24 + %123 = load i64, ptr %122, align 8 + %124 = sub i64 8148, %123 + %125 = load i64, ptr %21, align 8 + %126 = sitofp i64 %125 to double + %127 = load i64, ptr %15, align 8 + %128 = sitofp i64 %127 to double + %129 = fdiv double %126, %128 + %130 = fptoui double %129 to i64 + %131 = udiv i64 %124, %130 %132 = uitofp i64 %131 to double - %133 = udiv i64 %117, %.038.lcssa.i + %133 = udiv i64 %124, %.038.lcssa.i %134 = uitofp i64 %133 to double %135 = fsub double 1.000000e+00, %132 br label %136 @@ -832,8 +828,8 @@ select.unfold.i: ; preds = %148, %136 br label %gistInitBuffering.exit 161: ; preds = %select.unfold.i - %162 = uitofp i64 %117 to double - %163 = fdiv double %162, %121 + %162 = uitofp i64 %124 to double + %163 = fdiv double %162, %129 %164 = uitofp nneg i32 %154 to double %165 = call double @pow(double noundef %163, double noundef %164) #9 br label %166 @@ -841,7 +837,7 @@ select.unfold.i: ; preds = %148, %136 166: ; preds = %188, %161 %.015.i.i = phi i32 [ 0, %161 ], [ %197, %188 ] %.014.i.i = phi i32 [ 0, %161 ], [ %198, %188 ] - %167 = call i32 @ReadBuffer(ptr noundef %114, i32 noundef %.015.i.i) #9 + %167 = call i32 @ReadBuffer(ptr noundef %113, i32 noundef %.015.i.i) #9 call void @LockBuffer(i32 noundef %167, i32 noundef 1) #9 %168 = icmp slt i32 %167, 0 br i1 %168, label %169, label %175 diff --git a/bench/postgres/optimized/gistscan.ll b/bench/postgres/optimized/gistscan.ll index d5e851b03e7..79421164fd7 100644 --- a/bench/postgres/optimized/gistscan.ll +++ b/bench/postgres/optimized/gistscan.ll @@ -151,12 +151,15 @@ define dso_local void @gistrescan(ptr noundef %0, ptr noundef readonly captures( .lr.ph.preheader: ; preds = %27 %narrow = add nuw i16 %38, 1 - %42 = zext i16 %narrow to i32 %wide.trip.count = zext i16 %narrow to i64 br label %.lr.ph -.preheader: ; preds = %.lr.ph, %27 - %.0109.lcssa = phi i32 [ 1, %27 ], [ %42, %.lr.ph ] +.preheader: ; preds = %.lr.ph + %42 = zext i16 %narrow to i32 + br label %.preheader + +.preheader: ; preds = %.preheader.loopexit, %27 + %.0109.lcssa = phi i32 [ 1, %27 ], [ %42, %.preheader.loopexit ] %.not119128 = icmp sgt i32 %.0109.lcssa, %34 br i1 %.not119128, label %._crit_edge, label %.lr.ph130.preheader diff --git a/bench/postgres/optimized/preptlist.ll b/bench/postgres/optimized/preptlist.ll index d9b11d4ea75..3862482334d 100644 --- a/bench/postgres/optimized/preptlist.ll +++ b/bench/postgres/optimized/preptlist.ll @@ -617,14 +617,17 @@ list_head.exit: ; preds = %3, %4 %13 = getelementptr i8, ptr %1, i64 4 %14 = getelementptr i8, ptr %1, i64 16 %narrow = add nuw i16 %11, 1 - %15 = zext i16 %narrow to i32 %wide.trip.count = zext i16 %narrow to i64 br label %18 -select.unfold.preheader: ; preds = %68, %list_head.exit - %.050.lcssa = phi i32 [ 1, %list_head.exit ], [ %15, %68 ] - %.047.lcssa = phi ptr [ %7, %list_head.exit ], [ %.14861, %68 ] - %.044.lcssa = phi ptr [ null, %list_head.exit ], [ %69, %68 ] +select.unfold.preheader: ; preds = %68 + %15 = zext i16 %narrow to i32 + br label %select.unfold.preheader + +select.unfold.preheader: ; preds = %select.unfold.preheader.loopexit, %list_head.exit + %.050.lcssa = phi i32 [ 1, %list_head.exit ], [ %15, %select.unfold.preheader.loopexit ] + %.047.lcssa = phi ptr [ %7, %list_head.exit ], [ %.14861, %select.unfold.preheader.loopexit ] + %.044.lcssa = phi ptr [ null, %list_head.exit ], [ %69, %select.unfold.preheader.loopexit ] %.not5270 = icmp eq ptr %.047.lcssa, null br i1 %.not5270, label %select.unfold._crit_edge, label %.lr.ph74 diff --git a/bench/proxygen/optimized/HTTP2PriorityQueue.ll b/bench/proxygen/optimized/HTTP2PriorityQueue.ll index 5ed5d55f474..39df53665ab 100644 --- a/bench/proxygen/optimized/HTTP2PriorityQueue.ll +++ b/bench/proxygen/optimized/HTTP2PriorityQueue.ll @@ -8539,12 +8539,8 @@ while.cond3.i.i: ; preds = %while.cond3.i.i, %w %incdec.ptr.i.i.i = getelementptr inbounds nuw i8, ptr %__first.sroa.0.1.i.i, i64 16 br i1 %cmp.i.i.i7.i, label %while.cond3.i.i, label %while.cond10.i.i.preheader, !llvm.loop !63 -while.cond10.i.i.preheader: ; preds = %while.cond3.i.i - %42 = getelementptr i8, ptr %__first.sroa.0.1.i.i, i64 8 - br label %while.cond10.i.i - -while.cond10.i.i: ; preds = %while.cond10.i.i.preheader, %while.cond10.i.i - %__last.sroa.0.0.pn.i.i = phi ptr [ %__last.sroa.0.1.i.i, %while.cond10.i.i ], [ %__last.sroa.0.0.i.i, %while.cond10.i.i.preheader ] +while.cond10.i.i.preheader: ; preds = %while.cond3.i.i, %while.cond10.i.i + %__last.sroa.0.0.pn.i.i = phi ptr [ %__last.sroa.0.1.i.i, %while.cond10.i.i ], [ %__last.sroa.0.0.i.i, %while.cond3.i.i ] %__last.sroa.0.1.i.i = getelementptr inbounds i8, ptr %__last.sroa.0.0.pn.i.i, i64 -16 %43 = getelementptr i8, ptr %__last.sroa.0.0.pn.i.i, i64 -8 %call3.val.i3.i.i = load double, ptr %43, align 8 @@ -8557,13 +8553,14 @@ while.end18.i.i: ; preds = %while.cond10.i.i if.end.i.i: ; preds = %while.end18.i.i %44 = getelementptr i8, ptr %__last.sroa.0.0.pn.i.i, i64 -8 + %44 = getelementptr i8, ptr %__first.sroa.0.1.i.i, i64 8 %45 = load ptr, ptr %__first.sroa.0.1.i.i, align 8 %46 = load ptr, ptr %__last.sroa.0.1.i.i, align 8 store ptr %46, ptr %__first.sroa.0.1.i.i, align 8 store ptr %45, ptr %__last.sroa.0.1.i.i, align 8 - %47 = load double, ptr %42, align 8 + %47 = load double, ptr %44, align 8 %48 = load double, ptr %44, align 8 - store double %48, ptr %42, align 8 + store double %48, ptr %44, align 8 store double %47, ptr %44, align 8 br label %while.body.i.i6, !llvm.loop !65 diff --git a/bench/qemu/optimized/tcg.ll b/bench/qemu/optimized/tcg.ll index 9d104dd2c3c..95170124f00 100644 --- a/bench/qemu/optimized/tcg.ll +++ b/bench/qemu/optimized/tcg.ll @@ -10495,7 +10495,7 @@ la_reset_pref.exit295: ; preds = %48 %218 = getelementptr inbounds nuw i8, ptr %217, i64 40 %219 = load i64, ptr %218, align 8 %220 = icmp eq i64 %219, 1 - br i1 %220, label %221, label %.loopexit356.thread + br i1 %220, label %221, label %.lr.ph383 221: ; preds = %214 %222 = getelementptr inbounds nuw i8, ptr %.0217398, i64 32 @@ -10516,7 +10516,7 @@ la_reset_pref.exit295: ; preds = %48 %233 = getelementptr inbounds nuw i8, ptr %.0217398, i64 64 %234 = load i64, ptr %233, align 8 store i64 %234, ptr %231, align 8 - br label %.loopexit356.thread + br label %.lr.ph383 235: ; preds = %48, %48 br label %236 @@ -10529,7 +10529,7 @@ la_reset_pref.exit295: ; preds = %48 %240 = getelementptr inbounds nuw i8, ptr %239, i64 40 %241 = load i64, ptr %240, align 8 %242 = icmp eq i64 %241, 1 - br i1 %242, label %243, label %.loopexit356.thread + br i1 %242, label %243, label %.lr.ph383 243: ; preds = %236 %244 = getelementptr inbounds nuw i8, ptr %.0217398, i64 32 @@ -10550,7 +10550,7 @@ la_reset_pref.exit295: ; preds = %48 %255 = getelementptr inbounds nuw i8, ptr %.0217398, i64 56 %256 = load i64, ptr %255, align 8 store i64 %256, ptr %253, align 8 - br label %.loopexit356.thread + br label %.lr.ph383 257: ; preds = %48 %258 = getelementptr inbounds nuw i8, ptr %57, i64 9 @@ -10589,27 +10589,17 @@ la_reset_pref.exit295: ; preds = %48 tail call void @tcg_op_remove(ptr noundef %0, ptr noundef nonnull %.0217398) br label %.thread -.loopexit356.thread: ; preds = %228, %214, %250, %236 - %.0223.ph = phi i32 [ %55, %236 ], [ %.1239, %250 ], [ %55, %214 ], [ %.0238, %228 ] - %.0222.shrunk.ph = phi i8 [ 2, %236 ], [ 1, %250 ], [ 2, %214 ], [ 1, %228 ] - %.0221.shrunk.ph = phi i8 [ 2, %236 ], [ 2, %250 ], [ 4, %214 ], [ 2, %228 ] - %.0221472 = zext nneg i8 %.0221.shrunk.ph to i32 - br label %.lr.ph383 - .loopexit356: ; preds = %269, %257 - %.0221 = zext i8 %259 to i32 %.not406 = icmp eq i8 %261, 0 br i1 %.not406, label %._crit_edge384, label %.lr.ph383 -.lr.ph383: ; preds = %.loopexit356.thread, %.loopexit356 - %.0221482 = phi i32 [ %.0221472, %.loopexit356.thread ], [ %.0221, %.loopexit356 ] - %.0221.shrunk478 = phi i8 [ %.0221.shrunk.ph, %.loopexit356.thread ], [ %259, %.loopexit356 ] - %.0222.shrunk476 = phi i8 [ %.0222.shrunk.ph, %.loopexit356.thread ], [ %261, %.loopexit356 ] - %.0223474 = phi i32 [ %.0223.ph, %.loopexit356.thread ], [ %55, %.loopexit356 ] - %.0222480 = zext i8 %.0222.shrunk476 to i32 +.lr.ph383: ; preds = %236, %250, %214, %228, %.loopexit356 + %.0221482 = phi i8 [ %259, %.loopexit356 ], [ 2, %236 ], [ 2, %250 ], [ 4, %214 ], [ 2, %228 ] + %.0221.shrunk478 = phi i8 [ %261, %.loopexit356 ], [ 2, %236 ], [ 1, %250 ], [ 2, %214 ], [ 1, %228 ] + %.0222.shrunk476 = phi i32 [ %55, %.loopexit356 ], [ %55, %236 ], [ %.1239, %250 ], [ %55, %214 ], [ %.0238, %228 ] %275 = getelementptr inbounds nuw i8, ptr %.0217398, i64 32 %276 = getelementptr inbounds nuw i8, ptr %.0217398, i64 24 - %wide.trip.count445 = zext i8 %.0222.shrunk476 to i64 + %wide.trip.count445 = zext i8 %.0222.shrunk475 to i64 br label %277 277: ; preds = %.lr.ph383, %la_reset_pref.exit297 @@ -10652,16 +10642,17 @@ la_reset_pref.exit297: ; preds = %277, %282 br i1 %exitcond446.not, label %._crit_edge384.loopexit, label %277, !llvm.loop !72 ._crit_edge384.loopexit: ; preds = %la_reset_pref.exit297 - %297 = zext i8 %.0222.shrunk476 to i64 + %297 = zext i8 %.0222.shrunk475 to i32 + %297 = zext i8 %.0222.shrunk475 to i64 br label %._crit_edge384 ._crit_edge384: ; preds = %._crit_edge384.loopexit, %.loopexit356 - %.0221483 = phi i32 [ %.0221, %.loopexit356 ], [ %.0221482, %._crit_edge384.loopexit ] - %.0222481 = phi i32 [ 0, %.loopexit356 ], [ %.0222480, %._crit_edge384.loopexit ] - %.0221.shrunk479 = phi i8 [ %259, %.loopexit356 ], [ %.0221.shrunk478, %._crit_edge384.loopexit ] - %.0222.shrunk477 = phi i64 [ 0, %.loopexit356 ], [ %297, %._crit_edge384.loopexit ] - %.0223475 = phi i32 [ %55, %.loopexit356 ], [ %.0223474, %._crit_edge384.loopexit ] + %.0221483 = phi i32 [ 0, %.loopexit356 ], [ %.0222479, %._crit_edge384.loopexit ] + %.0222481 = phi i8 [ %259, %.loopexit356 ], [ %.0221482, %._crit_edge384.loopexit ] + %.0221.shrunk479 = phi i64 [ 0, %.loopexit356 ], [ %297, %._crit_edge384.loopexit ] + %.0222.shrunk477 = phi i32 [ %55, %.loopexit356 ], [ %.0223473, %._crit_edge384.loopexit ] %.8233.lcssa = phi i32 [ 0, %.loopexit356 ], [ %.10235, %._crit_edge384.loopexit ] + %.0221 = zext i8 %.0221.shrunk478 to i32 %298 = getelementptr inbounds nuw i8, ptr %57, i64 12 %299 = load i8, ptr %298, align 4 %300 = zext i8 %299 to i32 @@ -10921,8 +10912,8 @@ la_global_sync.exit337: ; preds = %382, %368 br i1 %exitcond.not.i344, label %la_func_end.exit313, label %.lr.ph.i339, !llvm.loop !68 la_func_end.exit313: ; preds = %la_reset_pref.exit16.i301, %347, %la_reset_pref.exit.i325, %403, %384, %350, %la_global_sync.exit.i, %.preheader.i298, %366, %la_global_sync.exit337 - %404 = add nuw nsw i32 %.0222481, %.0221483 - %.not407 = icmp eq i8 %.0221.shrunk479, 0 + %404 = add nuw nsw i32 %.0222480, %.0221 + %.not407 = icmp eq i8 %.0221.shrunk478, 0 br i1 %.not407, label %._crit_edge393, label %.lr.ph388 .lr.ph388: ; preds = %la_func_end.exit313 @@ -10936,7 +10927,7 @@ la_func_end.exit313: ; preds = %la_reset_pref.exit1 br label %420 409: ; preds = %.lr.ph388, %409 - %indvars.iv447 = phi i64 [ %.0222.shrunk477, %.lr.ph388 ], [ %indvars.iv.next448, %409 ] + %indvars.iv447 = phi i64 [ %.0222.shrunk476, %.lr.ph388 ], [ %indvars.iv.next448, %409 ] %.11386 = phi i32 [ %.8233.lcssa, %.lr.ph388 ], [ %.12, %409 ] %410 = getelementptr inbounds nuw i64, ptr %405, i64 %indvars.iv447 %411 = load i64, ptr %410, align 8 @@ -10954,7 +10945,7 @@ la_func_end.exit313: ; preds = %la_reset_pref.exit1 br i1 %419, label %409, label %.lr.ph392, !llvm.loop !75 420: ; preds = %.lr.ph392, %436 - %indvars.iv450 = phi i64 [ %.0222.shrunk477, %.lr.ph392 ], [ %indvars.iv.next451, %436 ] + %indvars.iv450 = phi i64 [ %.0222.shrunk476, %.lr.ph392 ], [ %indvars.iv.next451, %436 ] %421 = getelementptr inbounds nuw i64, ptr %407, i64 %indvars.iv450 %422 = load i64, ptr %421, align 8 %423 = inttoptr i64 %422 to ptr @@ -10985,7 +10976,7 @@ la_func_end.exit313: ; preds = %la_reset_pref.exit1 ._crit_edge393: ; preds = %436, %la_func_end.exit313 %.11.lcssa485 = phi i32 [ %.8233.lcssa, %la_func_end.exit313 ], [ %.12, %436 ] - switch i32 %.0223475, label %450 [ + switch i32 %.0223474, label %450 [ i32 5, label %438 i32 63, label %438 ] @@ -11022,7 +11013,7 @@ la_func_end.exit313: ; preds = %la_reset_pref.exit1 br label %455 455: ; preds = %.lr.ph396, %478 - %indvars.iv453 = phi i64 [ %.0222.shrunk477, %.lr.ph396 ], [ %indvars.iv.next454, %478 ] + %indvars.iv453 = phi i64 [ %.0222.shrunk476, %.lr.ph396 ], [ %indvars.iv.next454, %478 ] %456 = getelementptr inbounds nuw %struct.TCGArgConstraint, ptr %451, i64 %indvars.iv453 %457 = getelementptr inbounds nuw i64, ptr %452, i64 %indvars.iv453 %458 = load i64, ptr %457, align 8 diff --git a/bench/qemu/optimized/virtio.ll b/bench/qemu/optimized/virtio.ll index bcd2f0b1f2e..293e7ade75f 100644 --- a/bench/qemu/optimized/virtio.ll +++ b/bench/qemu/optimized/virtio.ll @@ -3636,7 +3636,7 @@ virtio_queue_packed_empty_rcu.exit.i: ; preds = %59, %57 132: ; preds = %129 %133 = add i32 %.1112.us.i, 1 %134 = icmp eq i32 %133, %.082165.i - br i1 %134, label %.loopexit, label %virtqueue_packed_read_next_desc.exit.us.i + br i1 %134, label %.split131.us.i, label %virtqueue_packed_read_next_desc.exit.us.i virtqueue_packed_read_next_desc.exit.us.i: ; preds = %132 call fastcc void @vring_packed_desc_read(ptr noundef nonnull %14, ptr noundef nonnull %.081166.i, i32 noundef %133, i1 noundef zeroext false) @@ -3701,26 +3701,23 @@ virtqueue_packed_read_next_desc.exit.i: ; preds = %.thread13.i.i, %.th %.pre = load i16, ptr %89, align 2 br label %.split.i, !llvm.loop !28 -.split131.us.i: ; preds = %157 - %164 = load i16, ptr %87, align 4 - br label %.loopexit - -.loopexit: ; preds = %132, %.split131.us.i - %165 = phi i32 [ %155, %.split131.us.i ], [ 1, %132 ] - %166 = phi i16 [ %164, %.split131.us.i ], [ %88, %132 ] +.split131.us.i: ; preds = %157, %132 + %164 = phi i1 [ true, %132 ], [ false, %157 ] + %165 = phi i32 [ 1, %132 ], [ %155, %157 ] + %166 = load i16, ptr %87, align 4 %167 = load i32, ptr %10, align 4 %168 = load i32, ptr %11, align 4 %169 = call fastcc ptr @virtqueue_alloc_element(i64 noundef %1, i32 noundef %167, i32 noundef %168) %.not136.i = icmp eq i32 %167, 0 br i1 %.not136.i, label %.preheader.i, label %.lr.ph.i -.lr.ph.i: ; preds = %.loopexit +.lr.ph.i: ; preds = %.split131.us.i %170 = getelementptr inbounds nuw i8, ptr %169, i64 32 %171 = getelementptr inbounds nuw i8, ptr %169, i64 48 %wide.trip.count.i = zext i32 %167 to i64 br label %174 -.preheader.i: ; preds = %174, %.loopexit +.preheader.i: ; preds = %174, %.split131.us.i %.not137.i = icmp eq i32 %168, 0 br i1 %.not137.i, label %._crit_edge.i, label %.lr.ph135.i @@ -3764,7 +3761,8 @@ virtqueue_packed_read_next_desc.exit.i: ; preds = %.thread13.i.i, %.th br i1 %exitcond149.not.i, label %._crit_edge.i, label %182, !llvm.loop !30 ._crit_edge.i: ; preds = %182, %.preheader.i - %193 = zext i16 %166 to i32 + %spec.select.i = select i1 %164, i16 %88, i16 %166 + %193 = zext i16 %spec.select.i to i32 store i32 %193, ptr %169, align 8 %194 = getelementptr inbounds nuw i8, ptr %169, i64 8 store i32 %165, ptr %194, align 8 diff --git a/bench/quantlib/optimized/fftengine.ll b/bench/quantlib/optimized/fftengine.ll index bf728631c8e..755236c9647 100644 --- a/bench/quantlib/optimized/fftengine.ll +++ b/bench/quantlib/optimized/fftengine.ll @@ -4972,8 +4972,8 @@ _ZNSt6vectorIdSaIdEE17_S_check_init_lenEmRKS0_.exit.i: ; preds = %entry if.end.i.i.i.i.i.i.i: ; preds = %_ZNSt6vectorIdSaIdEE17_S_check_init_lenEmRKS0_.exit.i %add.ptr.idx.i.i.i.i.i.i.i = shl nuw nsw i64 %sub.i.i.i.i.i, 3 - tail call void @llvm.memset.p0.i64(ptr align 8 %incdec.ptr.i.i.i.i.i, i8 0, i64 %add.ptr.idx.i.i.i.i.i.i.i, i1 false), !tbaa !149 %add.ptr.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %incdec.ptr.i.i.i.i.i, i64 %add.ptr.idx.i.i.i.i.i.i.i + tail call void @llvm.memset.p0.i64(ptr align 8 %incdec.ptr.i.i.i.i.i, i8 0, i64 %add.ptr.idx.i.i.i.i.i.i.i, i1 false), !tbaa !149 br label %if.then.i.i.i.i.i21 if.then.i.i.i.i.i21: ; preds = %_ZNSt6vectorIdSaIdEE17_S_check_init_lenEmRKS0_.exit.i, %if.end.i.i.i.i.i.i.i @@ -4996,8 +4996,8 @@ call5.i.i.i.i2.i.i.noexc36: ; preds = %if.then.i.i.i.i.i21 if.end.i.i.i.i.i.i.i28: ; preds = %call5.i.i.i.i2.i.i.noexc36 %add.ptr.idx.i.i.i.i.i.i.i29 = shl nuw nsw i64 %sub.i.i.i.i.i, 3 - tail call void @llvm.memset.p0.i64(ptr align 8 %incdec.ptr.i.i.i.i.i25, i8 0, i64 %add.ptr.idx.i.i.i.i.i.i.i29, i1 false), !tbaa !149 %add.ptr.i.i.i.i.i.i.i30 = getelementptr inbounds nuw i8, ptr %incdec.ptr.i.i.i.i.i25, i64 %add.ptr.idx.i.i.i.i.i.i.i29 + tail call void @llvm.memset.p0.i64(ptr align 8 %incdec.ptr.i.i.i.i.i25, i8 0, i64 %add.ptr.idx.i.i.i.i.i.i.i29, i1 false), !tbaa !149 br label %invoke.cont4 invoke.cont4: ; preds = %if.end.i.i.i.i.i.i.i28, %call5.i.i.i.i2.i.i.noexc36 @@ -8274,9 +8274,12 @@ entry: %sub.ptr.rhs.cast.i = ptrtoint ptr %1 to i64 %sub.ptr.sub.i = sub i64 %sub.ptr.lhs.cast.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i = ashr exact i64 %sub.ptr.sub.i, 3 - %shl = shl nuw i64 1, %sub.ptr.div.i %cmp.i.not93 = icmp eq ptr %inBegin.coerce, %inEnd.coerce - br i1 %cmp.i.not93, label %for.cond36.preheader, label %for.body.lr.ph + br i1 %cmp.i.not93, label %do.body.thread, label %for.body.lr.ph + +do.body.thread: ; preds = %entry + %shl113 = shl nuw i64 1, %sub.ptr.div.i + br label %for.cond36.preheader for.body.lr.ph: ; preds = %entry %cmp5.not.i = icmp eq ptr %0, %1 @@ -8318,10 +8321,12 @@ _ZN8QuantLib20FastFourierTransform11bit_reverseEmm.exit.loopexit: ; preds = %for do.body: ; preds = %_ZN8QuantLib20FastFourierTransform11bit_reverseEmm.exit.loopexit, %for.body.us %i.0.lcssa = phi i64 [ %inc.us, %for.body.us ], [ %inc, %_ZN8QuantLib20FastFourierTransform11bit_reverseEmm.exit.loopexit ] + %shl = shl nuw i64 1, %sub.ptr.div.i %cmp.not = icmp ugt i64 %i.0.lcssa, %shl br i1 %cmp.not, label %if.then, label %for.cond36.preheader -for.cond36.preheader: ; preds = %entry, %do.body +for.cond36.preheader: ; preds = %do.body.thread, %do.body + %shl115 = phi i64 [ %shl113, %do.body.thread ], [ %shl, %do.body ] %cmp37.not102 = icmp eq ptr %0, %1 br i1 %cmp37.not102, label %for.cond.cleanup, label %for.body38.lr.ph @@ -8487,7 +8492,7 @@ for.cond51.preheader: ; preds = %for.cond51.preheade %j.0101 = phi i64 [ %inc91, %_ZNSt7complexIdEmLIdEERS0_RKS_IT_E.exit ], [ 0, %for.cond51.preheader.preheader ] %w.sroa.6.0100 = phi double [ %imag_mul_phi.i, %_ZNSt7complexIdEmLIdEERS0_RKS_IT_E.exit ], [ 0.000000e+00, %for.cond51.preheader.preheader ] %w.sroa.0.099 = phi double [ %real_mul_phi.i, %_ZNSt7complexIdEmLIdEERS0_RKS_IT_E.exit ], [ 1.000000e+00, %for.cond51.preheader.preheader ] - %cmp5296 = icmp ult i64 %j.0101, %shl + %cmp5296 = icmp ult i64 %j.0101, %shl115 br i1 %cmp5296, label %for.body54, label %for.cond.cleanup53 for.cond.cleanup49: ; preds = %_ZNSt7complexIdEmLIdEERS0_RKS_IT_E.exit, %for.body38 @@ -8563,7 +8568,7 @@ _ZStmlIdESt7complexIT_ERKS2_S4_.exit: ; preds = %for.body54, %comple store double %sub.r.i.i, ptr %add.ptr.i47, align 8 store double %sub.i.i.i, ptr %_M_value.imagp.i.i.i, align 8, !tbaa !33 %add = add nuw i64 %k.097, %shl39 - %cmp52 = icmp ult i64 %add, %shl + %cmp52 = icmp ult i64 %add, %shl115 br i1 %cmp52, label %for.body54, label %for.cond.cleanup53, !llvm.loop !219 unreachable: ; preds = %invoke.cont24 @@ -8608,8 +8613,8 @@ if.then.i.i.i.i.i: ; preds = %_ZNSt6vectorIdSaIdE if.end.i.i.i.i.i.i.i: ; preds = %if.then.i.i.i.i.i %add.ptr.idx.i.i.i.i.i.i.i = shl nuw nsw i64 %sub.i.i.i.i.i, 3 - tail call void @llvm.memset.p0.i64(ptr align 8 %incdec.ptr.i.i.i.i.i, i8 0, i64 %add.ptr.idx.i.i.i.i.i.i.i, i1 false), !tbaa !149 %add.ptr.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %incdec.ptr.i.i.i.i.i, i64 %add.ptr.idx.i.i.i.i.i.i.i + tail call void @llvm.memset.p0.i64(ptr align 8 %incdec.ptr.i.i.i.i.i, i8 0, i64 %add.ptr.idx.i.i.i.i.i.i.i, i1 false), !tbaa !149 br label %invoke.cont invoke.cont: ; preds = %_ZNSt6vectorIdSaIdEE17_S_check_init_lenEmRKS0_.exit.i, %if.end.i.i.i.i.i.i.i, %if.then.i.i.i.i.i @@ -8655,8 +8660,8 @@ call5.i.i.i.i2.i.i.noexc28: ; preds = %if.then.i.i.i.i.i14 if.end.i.i.i.i.i.i.i20: ; preds = %call5.i.i.i.i2.i.i.noexc28 %add.ptr.idx.i.i.i.i.i.i.i21 = shl nuw nsw i64 %sub.i.i.i.i.i18, 3 - tail call void @llvm.memset.p0.i64(ptr align 8 %incdec.ptr.i.i.i.i.i17, i8 0, i64 %add.ptr.idx.i.i.i.i.i.i.i21, i1 false), !tbaa !149 %add.ptr.i.i.i.i.i.i.i22 = getelementptr inbounds nuw i8, ptr %incdec.ptr.i.i.i.i.i17, i64 %add.ptr.idx.i.i.i.i.i.i.i21 + tail call void @llvm.memset.p0.i64(ptr align 8 %incdec.ptr.i.i.i.i.i17, i8 0, i64 %add.ptr.idx.i.i.i.i.i.i.i21, i1 false), !tbaa !149 br label %invoke.cont5 invoke.cont5: ; preds = %_ZNSt6vectorIdSaIdEE17_S_check_init_lenEmRKS0_.exit.i12, %if.end.i.i.i.i.i.i.i20, %call5.i.i.i.i2.i.i.noexc28 diff --git a/bench/quantlib/optimized/garch.ll b/bench/quantlib/optimized/garch.ll index 1e51ff4db7d..e1fad26e2c5 100644 --- a/bench/quantlib/optimized/garch.ll +++ b/bench/quantlib/optimized/garch.ll @@ -889,8 +889,8 @@ call5.i.i.i.i2.i.i.noexc: ; preds = %if.then.i.i.i.i.i if.end.i.i.i.i.i.i.i: ; preds = %call5.i.i.i.i2.i.i.noexc %add.ptr.idx.i.i.i.i.i.i.i = shl nuw nsw i64 %sub.i.i.i.i.i, 3 - tail call void @llvm.memset.p0.i64(ptr align 8 %incdec.ptr.i.i.i.i.i, i8 0, i64 %add.ptr.idx.i.i.i.i.i.i.i, i1 false), !tbaa !21 %add.ptr.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %incdec.ptr.i.i.i.i.i, i64 %add.ptr.idx.i.i.i.i.i.i.i + tail call void @llvm.memset.p0.i64(ptr align 8 %incdec.ptr.i.i.i.i.i, i8 0, i64 %add.ptr.idx.i.i.i.i.i.i.i, i1 false), !tbaa !21 br label %invoke.cont71 invoke.cont71: ; preds = %if.end.i.i.i.i.i.i.i, %call5.i.i.i.i2.i.i.noexc @@ -4283,8 +4283,8 @@ if.then.i.i.i.i.i: ; preds = %_ZNSt6vectorIdSaIdE if.end.i.i.i.i.i.i.i: ; preds = %if.then.i.i.i.i.i %add.ptr.idx.i.i.i.i.i.i.i = shl nuw nsw i64 %sub.i.i.i.i.i, 3 - tail call void @llvm.memset.p0.i64(ptr align 8 %incdec.ptr.i.i.i.i.i, i8 0, i64 %add.ptr.idx.i.i.i.i.i.i.i, i1 false), !tbaa !21 %add.ptr.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %incdec.ptr.i.i.i.i.i, i64 %add.ptr.idx.i.i.i.i.i.i.i + tail call void @llvm.memset.p0.i64(ptr align 8 %incdec.ptr.i.i.i.i.i, i8 0, i64 %add.ptr.idx.i.i.i.i.i.i.i, i1 false), !tbaa !21 br label %for.body.i.preheader invoke.cont: ; preds = %_ZNSt6vectorIdSaIdEE17_S_check_init_lenEmRKS0_.exit.i @@ -4638,8 +4638,8 @@ if.then.i.i.i.i.i: ; preds = %_ZNSt6vectorIdSaIdE if.end.i.i.i.i.i.i.i: ; preds = %if.then.i.i.i.i.i %add.ptr.idx.i.i.i.i.i.i.i = shl nuw nsw i64 %sub.i.i.i.i.i, 3 - tail call void @llvm.memset.p0.i64(ptr align 8 %incdec.ptr.i.i.i.i.i, i8 0, i64 %add.ptr.idx.i.i.i.i.i.i.i, i1 false), !tbaa !21 %add.ptr.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %incdec.ptr.i.i.i.i.i, i64 %add.ptr.idx.i.i.i.i.i.i.i + tail call void @llvm.memset.p0.i64(ptr align 8 %incdec.ptr.i.i.i.i.i, i8 0, i64 %add.ptr.idx.i.i.i.i.i.i.i, i1 false), !tbaa !21 br label %for.body.i.preheader invoke.cont: ; preds = %_ZNSt6vectorIdSaIdEE17_S_check_init_lenEmRKS0_.exit.i @@ -4868,10 +4868,6 @@ _ZSt4fillIPddEvT_S1_RKT0_.exit: ; preds = %for.body.i.i.i.preh %_M_finish.i = getelementptr inbounds nuw i8, ptr %2, i64 8 %3 = load ptr, ptr %_M_finish.i, align 8, !tbaa !48 %4 = load ptr, ptr %2, align 8, !tbaa !50 - %sub.ptr.lhs.cast.i = ptrtoint ptr %3 to i64 - %sub.ptr.rhs.cast.i = ptrtoint ptr %4 to i64 - %sub.ptr.sub.i = sub i64 %sub.ptr.lhs.cast.i, %sub.ptr.rhs.cast.i - %sub.ptr.div.i = ashr exact i64 %sub.ptr.sub.i, 3 %cmp.i.not31 = icmp eq ptr %4, %3 br i1 %cmp.i.not31, label %for.cond.cleanup, label %for.body.lr.ph @@ -4887,6 +4883,10 @@ for.body.lr.ph: ; preds = %_ZSt4fillIPddEvT_S1 br label %for.body for.cond.cleanup: ; preds = %for.body, %_ZSt4fillIPddEvT_S1_RKT0_.exit + %sub.ptr.lhs.cast.i = ptrtoint ptr %3 to i64 + %sub.ptr.rhs.cast.i = ptrtoint ptr %4 to i64 + %sub.ptr.sub.i = sub i64 %sub.ptr.lhs.cast.i, %sub.ptr.rhs.cast.i + %sub.ptr.div.i = ashr exact i64 %sub.ptr.sub.i, 3 %conv = uitofp i64 %sub.ptr.div.i to double %mul = fmul double %conv, 2.000000e+00 br i1 %cmp.not3.i.i.i, label %"_ZSt9transformIPdS0_ZNK8QuantLib12_GLOBAL__N_119Garch11CostFunction8gradientERNS1_5ArrayERKS4_E3$_0ET0_T_SA_S9_T1_.exit", label %for.body.i @@ -4951,10 +4951,6 @@ _ZSt4fillIPddEvT_S1_RKT0_.exit: ; preds = %for.body.i.i.i.preh %_M_finish.i = getelementptr inbounds nuw i8, ptr %2, i64 8 %3 = load ptr, ptr %_M_finish.i, align 8, !tbaa !48 %4 = load ptr, ptr %2, align 8, !tbaa !50 - %sub.ptr.lhs.cast.i = ptrtoint ptr %3 to i64 - %sub.ptr.rhs.cast.i = ptrtoint ptr %4 to i64 - %sub.ptr.sub.i = sub i64 %sub.ptr.lhs.cast.i, %sub.ptr.rhs.cast.i - %sub.ptr.div.i = ashr exact i64 %sub.ptr.sub.i, 3 %cmp.i.not36 = icmp eq ptr %4, %3 br i1 %cmp.i.not36, label %for.cond.cleanup, label %for.body.lr.ph @@ -4971,6 +4967,10 @@ for.body.lr.ph: ; preds = %_ZSt4fillIPddEvT_S1 for.cond.cleanup: ; preds = %for.body, %_ZSt4fillIPddEvT_S1_RKT0_.exit %retval3.0.lcssa = phi double [ 0.000000e+00, %_ZSt4fillIPddEvT_S1_RKT0_.exit ], [ %add17, %for.body ] + %sub.ptr.lhs.cast.i = ptrtoint ptr %3 to i64 + %sub.ptr.rhs.cast.i = ptrtoint ptr %4 to i64 + %sub.ptr.sub.i = sub i64 %sub.ptr.lhs.cast.i, %sub.ptr.rhs.cast.i + %sub.ptr.div.i = ashr exact i64 %sub.ptr.sub.i, 3 %conv = uitofp i64 %sub.ptr.div.i to double %mul = fmul double %conv, 2.000000e+00 br i1 %cmp.not3.i.i.i, label %"_ZSt9transformIPdS0_ZNK8QuantLib12_GLOBAL__N_119Garch11CostFunction16valueAndGradientERNS1_5ArrayERKS4_E3$_0ET0_T_SA_S9_T1_.exit", label %for.body.i @@ -6724,8 +6724,8 @@ _ZNSt6vectorIdSaIdEE17_S_check_init_lenEmRKS0_.exit.i: ; preds = %entry if.end.i.i.i.i.i.i.i: ; preds = %_ZNSt6vectorIdSaIdEE17_S_check_init_lenEmRKS0_.exit.i %add.ptr.idx.i.i.i.i.i.i.i = shl nuw nsw i64 %sub.i.i.i.i.i, 3 - tail call void @llvm.memset.p0.i64(ptr align 8 %incdec.ptr.i.i.i.i.i, i8 0, i64 %add.ptr.idx.i.i.i.i.i.i.i, i1 false), !tbaa !21 %add.ptr.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %incdec.ptr.i.i.i.i.i, i64 %add.ptr.idx.i.i.i.i.i.i.i + tail call void @llvm.memset.p0.i64(ptr align 8 %incdec.ptr.i.i.i.i.i, i8 0, i64 %add.ptr.idx.i.i.i.i.i.i.i, i1 false), !tbaa !21 br label %if.then.i.i.i.i.i21 if.then.i.i.i.i.i21: ; preds = %_ZNSt6vectorIdSaIdEE17_S_check_init_lenEmRKS0_.exit.i, %if.end.i.i.i.i.i.i.i @@ -6748,8 +6748,8 @@ call5.i.i.i.i2.i.i.noexc36: ; preds = %if.then.i.i.i.i.i21 if.end.i.i.i.i.i.i.i28: ; preds = %call5.i.i.i.i2.i.i.noexc36 %add.ptr.idx.i.i.i.i.i.i.i29 = shl nuw nsw i64 %sub.i.i.i.i.i, 3 - tail call void @llvm.memset.p0.i64(ptr align 8 %incdec.ptr.i.i.i.i.i25, i8 0, i64 %add.ptr.idx.i.i.i.i.i.i.i29, i1 false), !tbaa !21 %add.ptr.i.i.i.i.i.i.i30 = getelementptr inbounds nuw i8, ptr %incdec.ptr.i.i.i.i.i25, i64 %add.ptr.idx.i.i.i.i.i.i.i29 + tail call void @llvm.memset.p0.i64(ptr align 8 %incdec.ptr.i.i.i.i.i25, i8 0, i64 %add.ptr.idx.i.i.i.i.i.i.i29, i1 false), !tbaa !21 br label %invoke.cont4 invoke.cont4: ; preds = %if.end.i.i.i.i.i.i.i28, %call5.i.i.i.i2.i.i.noexc36 @@ -6867,9 +6867,12 @@ entry: %sub.ptr.rhs.cast.i = ptrtoint ptr %1 to i64 %sub.ptr.sub.i = sub i64 %sub.ptr.lhs.cast.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i = ashr exact i64 %sub.ptr.sub.i, 3 - %shl = shl nuw i64 1, %sub.ptr.div.i %cmp.i.not94 = icmp eq ptr %inBegin.coerce, %inEnd.coerce - br i1 %cmp.i.not94, label %for.cond37.preheader, label %for.body.lr.ph + br i1 %cmp.i.not94, label %do.body.thread, label %for.body.lr.ph + +do.body.thread: ; preds = %entry + %shl114 = shl nuw i64 1, %sub.ptr.div.i + br label %for.cond37.preheader for.body.lr.ph: ; preds = %entry %cmp5.not.i = icmp eq ptr %0, %1 @@ -6893,7 +6896,6 @@ for.body.us: ; preds = %for.body.us, %for.b for.body: ; preds = %for.body.lr.ph, %_ZN8QuantLib20FastFourierTransform11bit_reverseEmm.exit.loopexit %i.096 = phi i64 [ %inc, %_ZN8QuantLib20FastFourierTransform11bit_reverseEmm.exit.loopexit ], [ 0, %for.body.lr.ph ] %inBegin.sroa.0.095 = phi ptr [ %incdec.ptr.i, %_ZN8QuantLib20FastFourierTransform11bit_reverseEmm.exit.loopexit ], [ %inBegin.coerce, %for.body.lr.ph ] - %3 = load double, ptr %inBegin.sroa.0.095, align 8, !tbaa !21 br label %for.body.i for.body.i: ; preds = %for.body, %for.body.i @@ -6909,6 +6911,7 @@ for.body.i: ; preds = %for.body, %for.body br i1 %exitcond.not.i, label %_ZN8QuantLib20FastFourierTransform11bit_reverseEmm.exit.loopexit, label %for.body.i, !llvm.loop !122 _ZN8QuantLib20FastFourierTransform11bit_reverseEmm.exit.loopexit: ; preds = %for.body.i + %3 = load double, ptr %inBegin.sroa.0.095, align 8, !tbaa !21 %add.ptr.i = getelementptr inbounds %"class.std::complex", ptr %out.coerce, i64 %or.i %_M_value.imagp.i = getelementptr inbounds nuw i8, ptr %add.ptr.i, i64 8 store double %3, ptr %add.ptr.i, align 8 @@ -6920,10 +6923,12 @@ _ZN8QuantLib20FastFourierTransform11bit_reverseEmm.exit.loopexit: ; preds = %for do.body: ; preds = %_ZN8QuantLib20FastFourierTransform11bit_reverseEmm.exit.loopexit, %for.body.us %i.0.lcssa = phi i64 [ %inc.us, %for.body.us ], [ %inc, %_ZN8QuantLib20FastFourierTransform11bit_reverseEmm.exit.loopexit ] + %shl = shl nuw i64 1, %sub.ptr.div.i %cmp.not = icmp ugt i64 %i.0.lcssa, %shl br i1 %cmp.not, label %if.then, label %for.cond37.preheader -for.cond37.preheader: ; preds = %entry, %do.body +for.cond37.preheader: ; preds = %do.body.thread, %do.body + %shl116 = phi i64 [ %shl114, %do.body.thread ], [ %shl, %do.body ] %cmp38.not103 = icmp eq ptr %0, %1 br i1 %cmp38.not103, label %for.cond.cleanup, label %for.body39.lr.ph @@ -7089,7 +7094,7 @@ for.cond52.preheader: ; preds = %for.cond52.preheade %j.0102 = phi i64 [ %inc92, %_ZNSt7complexIdEmLIdEERS0_RKS_IT_E.exit ], [ 0, %for.cond52.preheader.preheader ] %w.sroa.6.0101 = phi double [ %imag_mul_phi.i, %_ZNSt7complexIdEmLIdEERS0_RKS_IT_E.exit ], [ 0.000000e+00, %for.cond52.preheader.preheader ] %w.sroa.0.0100 = phi double [ %real_mul_phi.i, %_ZNSt7complexIdEmLIdEERS0_RKS_IT_E.exit ], [ 1.000000e+00, %for.cond52.preheader.preheader ] - %cmp5397 = icmp ult i64 %j.0102, %shl + %cmp5397 = icmp ult i64 %j.0102, %shl116 br i1 %cmp5397, label %for.body55, label %for.cond.cleanup54 for.cond.cleanup50: ; preds = %_ZNSt7complexIdEmLIdEERS0_RKS_IT_E.exit, %for.body39 @@ -7165,7 +7170,7 @@ _ZStmlIdESt7complexIT_ERKS2_S4_.exit: ; preds = %for.body55, %comple store double %sub.r.i.i, ptr %add.ptr.i48, align 8 store double %sub.i.i.i, ptr %_M_value.imagp.i.i.i, align 8, !tbaa !54 %add = add nuw i64 %k.098, %shl40 - %cmp53 = icmp ult i64 %add, %shl + %cmp53 = icmp ult i64 %add, %shl116 br i1 %cmp53, label %for.body55, label %for.cond.cleanup54, !llvm.loop !126 unreachable: ; preds = %invoke.cont25 @@ -7190,9 +7195,12 @@ entry: %sub.ptr.rhs.cast.i = ptrtoint ptr %1 to i64 %sub.ptr.sub.i = sub i64 %sub.ptr.lhs.cast.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i = ashr exact i64 %sub.ptr.sub.i, 3 - %shl = shl nuw i64 1, %sub.ptr.div.i %cmp.not94 = icmp eq ptr %inBegin, %inEnd - br i1 %cmp.not94, label %for.cond33.preheader, label %for.body.lr.ph + br i1 %cmp.not94, label %do.body.thread, label %for.body.lr.ph + +do.body.thread: ; preds = %entry + %shl114 = shl nuw i64 1, %sub.ptr.div.i + br label %for.cond33.preheader for.body.lr.ph: ; preds = %entry %cmp5.not.i = icmp eq ptr %0, %1 @@ -7216,7 +7224,6 @@ for.body.us: ; preds = %for.body.us, %for.b for.body: ; preds = %for.body.lr.ph, %_ZN8QuantLib20FastFourierTransform11bit_reverseEmm.exit.loopexit %inBegin.addr.096 = phi ptr [ %incdec.ptr, %_ZN8QuantLib20FastFourierTransform11bit_reverseEmm.exit.loopexit ], [ %inBegin, %for.body.lr.ph ] %i.095 = phi i64 [ %inc, %_ZN8QuantLib20FastFourierTransform11bit_reverseEmm.exit.loopexit ], [ 0, %for.body.lr.ph ] - %3 = load double, ptr %inBegin.addr.096, align 8, !tbaa !21 br label %for.body.i for.body.i: ; preds = %for.body, %for.body.i @@ -7232,6 +7239,7 @@ for.body.i: ; preds = %for.body, %for.body br i1 %exitcond.not.i, label %_ZN8QuantLib20FastFourierTransform11bit_reverseEmm.exit.loopexit, label %for.body.i, !llvm.loop !122 _ZN8QuantLib20FastFourierTransform11bit_reverseEmm.exit.loopexit: ; preds = %for.body.i + %3 = load double, ptr %inBegin.addr.096, align 8, !tbaa !21 %add.ptr.i = getelementptr inbounds %"class.std::complex", ptr %out.coerce, i64 %or.i %_M_value.imagp.i = getelementptr inbounds nuw i8, ptr %add.ptr.i, i64 8 store double %3, ptr %add.ptr.i, align 8 @@ -7243,10 +7251,12 @@ _ZN8QuantLib20FastFourierTransform11bit_reverseEmm.exit.loopexit: ; preds = %for do.body: ; preds = %_ZN8QuantLib20FastFourierTransform11bit_reverseEmm.exit.loopexit, %for.body.us %i.0.lcssa = phi i64 [ %inc.us, %for.body.us ], [ %inc, %_ZN8QuantLib20FastFourierTransform11bit_reverseEmm.exit.loopexit ] + %shl = shl nuw i64 1, %sub.ptr.div.i %cmp7.not = icmp ugt i64 %i.0.lcssa, %shl br i1 %cmp7.not, label %if.then, label %for.cond33.preheader -for.cond33.preheader: ; preds = %entry, %do.body +for.cond33.preheader: ; preds = %do.body.thread, %do.body + %shl116 = phi i64 [ %shl114, %do.body.thread ], [ %shl, %do.body ] %cmp34.not103 = icmp eq ptr %0, %1 br i1 %cmp34.not103, label %for.cond.cleanup, label %for.body35.lr.ph @@ -7412,7 +7422,7 @@ for.cond48.preheader: ; preds = %for.cond48.preheade %j.0102 = phi i64 [ %inc88, %_ZNSt7complexIdEmLIdEERS0_RKS_IT_E.exit ], [ 0, %for.cond48.preheader.preheader ] %w.sroa.6.0101 = phi double [ %imag_mul_phi.i, %_ZNSt7complexIdEmLIdEERS0_RKS_IT_E.exit ], [ 0.000000e+00, %for.cond48.preheader.preheader ] %w.sroa.0.0100 = phi double [ %real_mul_phi.i, %_ZNSt7complexIdEmLIdEERS0_RKS_IT_E.exit ], [ 1.000000e+00, %for.cond48.preheader.preheader ] - %cmp4997 = icmp ult i64 %j.0102, %shl + %cmp4997 = icmp ult i64 %j.0102, %shl116 br i1 %cmp4997, label %for.body51, label %for.cond.cleanup50 for.cond.cleanup46: ; preds = %_ZNSt7complexIdEmLIdEERS0_RKS_IT_E.exit, %for.body35 @@ -7488,7 +7498,7 @@ _ZStmlIdESt7complexIT_ERKS2_S4_.exit: ; preds = %for.body51, %comple store double %sub.r.i.i, ptr %add.ptr.i50, align 8 store double %sub.i.i.i, ptr %_M_value.imagp.i.i.i, align 8, !tbaa !54 %add = add nuw i64 %k.098, %shl36 - %cmp49 = icmp ult i64 %add, %shl + %cmp49 = icmp ult i64 %add, %shl116 br i1 %cmp49, label %for.body51, label %for.cond.cleanup50, !llvm.loop !130 unreachable: ; preds = %invoke.cont21 diff --git a/bench/rocksdb/optimized/compaction_job.ll b/bench/rocksdb/optimized/compaction_job.ll index 422ea26e451..c0903d6a03b 100644 --- a/bench/rocksdb/optimized/compaction_job.ll +++ b/bench/rocksdb/optimized/compaction_job.ll @@ -34658,12 +34658,8 @@ _ZN7rocksdb11TableReader6AnchorD2Ev.exit14.i: ; preds = %_ZN7rocksdb11TableR %216 = getelementptr inbounds nuw i8, ptr %.sroa.016.1.i.i, i64 40 br i1 %215, label %209, label %.preheader.i.i.preheader, !llvm.loop !1574 -.preheader.i.i.preheader: ; preds = %209 - %217 = getelementptr i8, ptr %.sroa.016.1.i.i, i64 8 - br label %.preheader.i.i - -.preheader.i.i: ; preds = %.preheader.i.i.preheader, %.preheader.i.i - %.sroa.013.0.pn.i.i = phi ptr [ %.sroa.013.1.i.i, %.preheader.i.i ], [ %.sroa.013.0.i.i, %.preheader.i.i.preheader ] +.preheader.i.i.preheader: ; preds = %209, %.preheader.i.i + %.sroa.013.0.pn.i.i = phi ptr [ %.sroa.013.1.i.i, %.preheader.i.i ], [ %.sroa.013.0.i.i, %209 ] %.sroa.013.1.i.i = getelementptr inbounds i8, ptr %.sroa.013.0.pn.i.i, i64 -40 %.val1.i9.i.i = load ptr, ptr %0, align 8, !tbaa !11 %.val2.i10.i.i = load i64, ptr %40, align 8, !tbaa !309 @@ -34679,13 +34675,14 @@ _ZN7rocksdb11TableReader6AnchorD2Ev.exit14.i: ; preds = %_ZN7rocksdb11TableR %219 = load ptr, ptr %3, align 8, !tbaa !17 %220 = getelementptr inbounds nuw i8, ptr %219, i64 232 %221 = load ptr, ptr %220, align 8 - %222 = call noundef i32 %221(ptr noundef nonnull align 8 dereferenceable(48) %3, ptr noundef nonnull align 8 dereferenceable(16) %8, i1 noundef zeroext true, ptr noundef nonnull align 8 dereferenceable(16) %9, i1 noundef zeroext true) + %222 = call noundef i32 %220(ptr noundef nonnull align 8 dereferenceable(48) %3, ptr noundef nonnull align 8 dereferenceable(16) %8, i1 noundef zeroext true, ptr noundef nonnull align 8 dereferenceable(16) %9, i1 noundef zeroext true) %223 = icmp slt i32 %222, 0 call void @llvm.lifetime.end.p0(ptr nonnull %9) call void @llvm.lifetime.end.p0(ptr nonnull %8) br i1 %223, label %.preheader.i.i, label %224, !llvm.loop !1575 224: ; preds = %.preheader.i.i + %224 = getelementptr i8, ptr %.sroa.016.1.i.i, i64 8 %225 = getelementptr i8, ptr %.sroa.013.0.pn.i.i, i64 -32 %226 = icmp ult ptr %.sroa.016.1.i.i, %.sroa.013.1.i.i br i1 %226, label %227, label %"_ZSt27__unguarded_partition_pivotIN9__gnu_cxx17__normal_iteratorIPN7rocksdb11TableReader6AnchorESt6vectorIS4_SaIS4_EEEENS0_5__ops15_Iter_comp_iterIZNS2_13CompactionJob26GenSubcompactionBoundariesEvE3$_0EEET_SF_SF_T0_.exit" @@ -34699,7 +34696,7 @@ _ZN7rocksdb11TableReader6AnchorD2Ev.exit14.i: ; preds = %_ZN7rocksdb11TableR br i1 %230, label %231, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i15 231: ; preds = %227 - %232 = load i64, ptr %217, align 8, !tbaa !309 + %232 = load i64, ptr %224, align 8, !tbaa !309 %233 = icmp ult i64 %232, 16 call void @llvm.assume(i1 %233) %234 = add nuw nsw i64 %232, 1 @@ -34710,14 +34707,14 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i store ptr %228, ptr %5, align 8, !tbaa !11 %235 = load i64, ptr %229, align 8, !tbaa !16 store i64 %235, ptr %45, align 8, !tbaa !16 - %.pre.i17 = load i64, ptr %217, align 8, !tbaa !309 + %.pre.i17 = load i64, ptr %224, align 8, !tbaa !309 br label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i4.i18 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i4.i18: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i15, %231 %236 = phi i64 [ %.pre.i17, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i15 ], [ %232, %231 ] store i64 %236, ptr %46, align 8, !tbaa !309 store ptr %229, ptr %.sroa.016.1.i.i, align 8, !tbaa !11 - store i64 0, ptr %217, align 8, !tbaa !309 + store i64 0, ptr %224, align 8, !tbaa !309 store i8 0, ptr %229, align 8, !tbaa !16 %237 = getelementptr inbounds nuw i8, ptr %.sroa.016.1.i.i, i64 32 %238 = load i64, ptr %237, align 8, !tbaa !589 @@ -34747,7 +34744,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i4. _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit.i.i.i24: ; preds = %247, %245, %242 %248 = load i64, ptr %225, align 8, !tbaa !309 - store i64 %248, ptr %217, align 8, !tbaa !309 + store i64 %248, ptr %224, align 8, !tbaa !309 %249 = getelementptr inbounds nuw i8, ptr %229, i64 %248 store i8 0, ptr %249, align 1, !tbaa !16 %.pre.i.i.i25 = load ptr, ptr %.sroa.013.1.i.i, align 8, !tbaa !11 @@ -34756,7 +34753,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit.i.i.i2 250: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i4.i18 store ptr %239, ptr %.sroa.016.1.i.i, align 8, !tbaa !11 %251 = load i64, ptr %225, align 8, !tbaa !309 - store i64 %251, ptr %217, align 8, !tbaa !309 + store i64 %251, ptr %224, align 8, !tbaa !309 %252 = load i64, ptr %240, align 8, !tbaa !16 store i64 %252, ptr %229, align 8, !tbaa !16 store ptr %240, ptr %.sroa.013.1.i.i, align 8, !tbaa !11 diff --git a/bench/rocksdb/optimized/fs_on_demand.ll b/bench/rocksdb/optimized/fs_on_demand.ll index 3e8e041f45c..428aa2b5ee7 100644 --- a/bench/rocksdb/optimized/fs_on_demand.ll +++ b/bench/rocksdb/optimized/fs_on_demand.ll @@ -9501,12 +9501,8 @@ _ZN9__gnu_cxx5__ops15_Iter_comp_iterIZN7rocksdb18OnDemandFileSystem25GetChildren %155 = getelementptr inbounds nuw i8, ptr %.sroa.023.1.i.i, i64 48 br i1 %154, label %149, label %.preheader.i.i.preheader, !llvm.loop !235 -.preheader.i.i.preheader: ; preds = %_ZN9__gnu_cxx5__ops15_Iter_comp_iterIZN7rocksdb18OnDemandFileSystem25GetChildrenFileAttributesERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS2_9IOOptionsEPSt6vectorINS2_3Env14FileAttributesESaISH_EEPNS2_14IODebugContextEE19FileAttributeSorterEclINS_17__normal_iteratorIPSH_SJ_EESS_EEbT_T0_.exit.i20.i - %156 = getelementptr i8, ptr %.sroa.023.1.i.i, i64 8 - br label %.preheader.i.i - -.preheader.i.i: ; preds = %.preheader.i.i.preheader, %_ZN9__gnu_cxx5__ops15_Iter_comp_iterIZN7rocksdb18OnDemandFileSystem25GetChildrenFileAttributesERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS2_9IOOptionsEPSt6vectorINS2_3Env14FileAttributesESaISH_EEPNS2_14IODebugContextEE19FileAttributeSorterEclINS_17__normal_iteratorIPSH_SJ_EESS_EEbT_T0_.exit20.i.i - %.sroa.0.0.pn.i.i = phi ptr [ %.sroa.0.1.i.i, %_ZN9__gnu_cxx5__ops15_Iter_comp_iterIZN7rocksdb18OnDemandFileSystem25GetChildrenFileAttributesERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS2_9IOOptionsEPSt6vectorINS2_3Env14FileAttributesESaISH_EEPNS2_14IODebugContextEE19FileAttributeSorterEclINS_17__normal_iteratorIPSH_SJ_EESS_EEbT_T0_.exit20.i.i ], [ %.sroa.0.0.i.i, %.preheader.i.i.preheader ] +.preheader.i.i.preheader: ; preds = %_ZN9__gnu_cxx5__ops15_Iter_comp_iterIZN7rocksdb18OnDemandFileSystem25GetChildrenFileAttributesERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS2_9IOOptionsEPSt6vectorINS2_3Env14FileAttributesESaISH_EEPNS2_14IODebugContextEE19FileAttributeSorterEclINS_17__normal_iteratorIPSH_SJ_EESS_EEbT_T0_.exit.i20.i, %_ZN9__gnu_cxx5__ops15_Iter_comp_iterIZN7rocksdb18OnDemandFileSystem25GetChildrenFileAttributesERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS2_9IOOptionsEPSt6vectorINS2_3Env14FileAttributesESaISH_EEPNS2_14IODebugContextEE19FileAttributeSorterEclINS_17__normal_iteratorIPSH_SJ_EESS_EEbT_T0_.exit20.i.i + %.sroa.0.0.pn.i.i = phi ptr [ %.sroa.0.1.i.i, %_ZN9__gnu_cxx5__ops15_Iter_comp_iterIZN7rocksdb18OnDemandFileSystem25GetChildrenFileAttributesERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS2_9IOOptionsEPSt6vectorINS2_3Env14FileAttributesESaISH_EEPNS2_14IODebugContextEE19FileAttributeSorterEclINS_17__normal_iteratorIPSH_SJ_EESS_EEbT_T0_.exit20.i.i ], [ %.sroa.0.0.i.i, %_ZN9__gnu_cxx5__ops15_Iter_comp_iterIZN7rocksdb18OnDemandFileSystem25GetChildrenFileAttributesERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS2_9IOOptionsEPSt6vectorINS2_3Env14FileAttributesESaISH_EEPNS2_14IODebugContextEE19FileAttributeSorterEclINS_17__normal_iteratorIPSH_SJ_EESS_EEbT_T0_.exit.i20.i ] %.sroa.0.1.i.i = getelementptr inbounds i8, ptr %.sroa.0.0.pn.i.i, i64 -48 %157 = getelementptr i8, ptr %.sroa.0.0.pn.i.i, i64 -40 %.val3.i9.i.i = load i64, ptr %157, align 8, !tbaa !12 @@ -9534,6 +9530,7 @@ _ZN9__gnu_cxx5__ops15_Iter_comp_iterIZN7rocksdb18OnDemandFileSystem25GetChildren br i1 %161, label %.preheader.i.i, label %162, !llvm.loop !236 162: ; preds = %_ZN9__gnu_cxx5__ops15_Iter_comp_iterIZN7rocksdb18OnDemandFileSystem25GetChildrenFileAttributesERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS2_9IOOptionsEPSt6vectorINS2_3Env14FileAttributesESaISH_EEPNS2_14IODebugContextEE19FileAttributeSorterEclINS_17__normal_iteratorIPSH_SJ_EESS_EEbT_T0_.exit20.i.i + %162 = getelementptr i8, ptr %.sroa.023.1.i.i, i64 8 %163 = getelementptr i8, ptr %.sroa.0.0.pn.i.i, i64 -40 %164 = icmp ult ptr %.sroa.023.1.i.i, %.sroa.0.1.i.i br i1 %164, label %165, label %_ZSt27__unguarded_partition_pivotIN9__gnu_cxx17__normal_iteratorIPN7rocksdb3Env14FileAttributesESt6vectorIS4_SaIS4_EEEENS0_5__ops15_Iter_comp_iterIZNS2_18OnDemandFileSystem25GetChildrenFileAttributesERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS2_9IOOptionsEPS8_PNS2_14IODebugContextEE19FileAttributeSorterEEET_ST_ST_T0_.exit @@ -9557,14 +9554,14 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i store ptr %166, ptr %4, align 8, !tbaa !4 %172 = load i64, ptr %167, align 8, !tbaa !18 store i64 %172, ptr %16, align 8, !tbaa !18 - %.pre.i19 = load i64, ptr %156, align 8, !tbaa !12 + %.pre.i19 = load i64, ptr %162, align 8, !tbaa !12 br label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i4.i20 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i4.i20: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i17, %169 %173 = phi i64 [ %.pre.i19, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i17 ], [ %.val1.i.i14.i, %169 ] store i64 %173, ptr %17, align 8, !tbaa !12 store ptr %167, ptr %.sroa.023.1.i.i, align 8, !tbaa !4 - store i64 0, ptr %156, align 8, !tbaa !12 + store i64 0, ptr %162, align 8, !tbaa !12 store i8 0, ptr %167, align 8, !tbaa !18 %174 = getelementptr inbounds nuw i8, ptr %.sroa.023.1.i.i, i64 32 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(9) %18, ptr noundef nonnull align 8 dereferenceable(9) %174, i64 9, i1 false) @@ -9593,7 +9590,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i4. _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit.i.i.i26: ; preds = %183, %181, %178 %184 = load i64, ptr %163, align 8, !tbaa !12 - store i64 %184, ptr %156, align 8, !tbaa !12 + store i64 %184, ptr %162, align 8, !tbaa !12 %185 = getelementptr inbounds nuw i8, ptr %167, i64 %184 store i8 0, ptr %185, align 1, !tbaa !18 %.pre.i.i.i27 = load ptr, ptr %.sroa.0.1.i.i, align 8, !tbaa !4 @@ -9602,7 +9599,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit.i.i.i2 186: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i4.i20 store ptr %175, ptr %.sroa.023.1.i.i, align 8, !tbaa !4 %187 = load i64, ptr %163, align 8, !tbaa !12 - store i64 %187, ptr %156, align 8, !tbaa !12 + store i64 %187, ptr %162, align 8, !tbaa !12 %188 = load i64, ptr %176, align 8, !tbaa !18 store i64 %188, ptr %167, align 8, !tbaa !18 store ptr %176, ptr %.sroa.0.1.i.i, align 8, !tbaa !4 diff --git a/bench/rocksdb/optimized/import_column_family_job.ll b/bench/rocksdb/optimized/import_column_family_job.ll index d81902b1653..8508835b9c3 100644 --- a/bench/rocksdb/optimized/import_column_family_job.ll +++ b/bench/rocksdb/optimized/import_column_family_job.ll @@ -16864,12 +16864,8 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i %264 = getelementptr inbounds nuw i8, ptr %.sroa.016.1.i.i, i64 64 br i1 %263, label %253, label %.preheader.i.i.preheader, !llvm.loop !788 -.preheader.i.i.preheader: ; preds = %253 - %265 = getelementptr i8, ptr %.sroa.016.1.i.i, i64 8 - br label %.preheader.i.i - -.preheader.i.i: ; preds = %.preheader.i.i.preheader, %.preheader.i.i - %.sroa.013.0.pn.i.i = phi ptr [ %.sroa.013.1.i.i, %.preheader.i.i ], [ %.sroa.013.0.i.i, %.preheader.i.i.preheader ] +.preheader.i.i.preheader: ; preds = %253, %.preheader.i.i + %.sroa.013.0.pn.i.i = phi ptr [ %.sroa.013.1.i.i, %.preheader.i.i ], [ %.sroa.013.0.i.i, %253 ] %.sroa.013.1.i.i = getelementptr inbounds i8, ptr %.sroa.013.0.pn.i.i, i64 -64 %.val.val.i16.i = load ptr, ptr %30, align 8, !tbaa !97 %266 = getelementptr i8, ptr %.val.val.i16.i, i64 72 @@ -16891,13 +16887,14 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i %271 = load ptr, ptr %268, align 8, !tbaa !171 %272 = getelementptr inbounds nuw i8, ptr %271, i64 16 %273 = load ptr, ptr %272, align 8 - %274 = call noundef i32 %273(ptr noundef nonnull align 8 dereferenceable(8) %268, ptr noundef nonnull align 8 dereferenceable(16) %8, ptr noundef nonnull align 8 dereferenceable(16) %9) + %274 = call noundef i32 %272(ptr noundef nonnull align 8 dereferenceable(8) %268, ptr noundef nonnull align 8 dereferenceable(16) %8, ptr noundef nonnull align 8 dereferenceable(16) %9) %275 = icmp slt i32 %274, 0 call void @llvm.lifetime.end.p0(ptr nonnull %9) call void @llvm.lifetime.end.p0(ptr nonnull %8) br i1 %275, label %.preheader.i.i, label %276, !llvm.loop !789 276: ; preds = %.preheader.i.i + %276 = getelementptr i8, ptr %.sroa.016.1.i.i, i64 8 %277 = getelementptr i8, ptr %.sroa.013.0.pn.i.i, i64 -56 %278 = icmp ult ptr %.sroa.016.1.i.i, %.sroa.013.1.i.i br i1 %278, label %279, label %"_ZSt27__unguarded_partition_pivotIN9__gnu_cxx17__normal_iteratorIPN7rocksdb21ImportColumnFamilyJob26ColumnFamilyIngestFileInfoESt6vectorIS4_SaIS4_EEEENS0_5__ops15_Iter_comp_iterIZNS3_7PrepareEmPNS2_12SuperVersionEE3$_0EEET_SG_SG_T0_.exit" @@ -16911,7 +16908,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i br i1 %282, label %283, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i14 283: ; preds = %279 - %284 = load i64, ptr %265, align 8, !tbaa !22 + %284 = load i64, ptr %276, align 8, !tbaa !22 %285 = icmp ult i64 %284, 16 call void @llvm.assume(i1 %285) %286 = add nuw nsw i64 %284, 1 @@ -16922,14 +16919,14 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i store ptr %280, ptr %5, align 8, !tbaa !11 %287 = load i64, ptr %281, align 8, !tbaa !16 store i64 %287, ptr %47, align 8, !tbaa !16 - %.pre.i16 = load i64, ptr %265, align 8, !tbaa !22 + %.pre.i16 = load i64, ptr %276, align 8, !tbaa !22 br label %_ZN7rocksdb11InternalKeyC2EOS0_.exit.i.i17 _ZN7rocksdb11InternalKeyC2EOS0_.exit.i.i17: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i14, %283 %288 = phi i64 [ %.pre.i16, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i14 ], [ %284, %283 ] store i64 %288, ptr %48, align 8, !tbaa !22 store ptr %281, ptr %.sroa.016.1.i.i, align 8, !tbaa !11 - store i64 0, ptr %265, align 8, !tbaa !22 + store i64 0, ptr %276, align 8, !tbaa !22 store i8 0, ptr %281, align 8, !tbaa !16 %289 = getelementptr inbounds nuw i8, ptr %.sroa.016.1.i.i, i64 32 store ptr %50, ptr %49, align 8, !tbaa !21 @@ -16995,7 +16992,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.threa _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit.i.i.i41: ; preds = %311, %309, %306 %312 = load i64, ptr %277, align 8, !tbaa !22 - store i64 %312, ptr %265, align 8, !tbaa !22 + store i64 %312, ptr %276, align 8, !tbaa !22 %313 = load ptr, ptr %.sroa.016.1.i.i, align 8, !tbaa !11 %314 = getelementptr inbounds nuw i8, ptr %313, i64 %312 store i8 0, ptr %314, align 1, !tbaa !16 @@ -17005,7 +17002,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit.i.i.i4 .thread.i.i.i44: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i43 store ptr %303, ptr %.sroa.016.1.i.i, align 8, !tbaa !11 %315 = load i64, ptr %277, align 8, !tbaa !22 - store i64 %315, ptr %265, align 8, !tbaa !22 + store i64 %315, ptr %276, align 8, !tbaa !22 %316 = load i64, ptr %304, align 8, !tbaa !16 store i64 %316, ptr %281, align 8, !tbaa !16 br label %321 @@ -17014,7 +17011,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit24.thr %317 = load i64, ptr %281, align 8, !tbaa !16 store ptr %303, ptr %.sroa.016.1.i.i, align 8, !tbaa !11 %318 = load i64, ptr %277, align 8, !tbaa !22 - store i64 %318, ptr %265, align 8, !tbaa !22 + store i64 %318, ptr %276, align 8, !tbaa !22 %319 = load i64, ptr %304, align 8, !tbaa !16 store i64 %319, ptr %281, align 8, !tbaa !16 %.not.i.i.i30 = icmp eq ptr %301, null diff --git a/bench/ruby/optimized/bignum.ll b/bench/ruby/optimized/bignum.ll index cec072f98e5..a7c39a670be 100644 --- a/bench/ruby/optimized/bignum.ll +++ b/bench/ruby/optimized/bignum.ll @@ -16743,11 +16743,10 @@ BIGNUM_DIGITS.exit: ; preds = %29, %33 br i1 %46, label %84, label %47 47: ; preds = %38 - %48 = icmp sgt i64 %45, 54 + %48 = icmp slt i64 %45, 55 %49 = add nsw i64 %45, -54 %50 = lshr i64 %49, 5 - %.055 = select i1 %48, i64 %49, i64 0 - %.054 = select i1 %48, i64 %50, i64 0 + %.055 = select i1 %48, i64 0, i64 %50 %51 = add i64 %.0.i70, -1 %52 = icmp sgt i64 %51, %.054 br i1 %52, label %.lr.ph, label %._crit_edge @@ -16768,11 +16767,10 @@ BIGNUM_DIGITS.exit: ; preds = %29, %33 %.lcssa = phi i64 [ %51, %47 ], [ %.054, %.lr.ph ] %60 = getelementptr i32, ptr %.0.i67, i64 %.lcssa %61 = load i32, ptr %60, align 4, !tbaa !18 - %.not60 = icmp eq i64 %.055, 0 - br i1 %.not60, label %.loopexit, label %62 + br i1 %48, label %.loopexit, label %62 62: ; preds = %._crit_edge - %63 = trunc i64 %.055 to i32 + %63 = trunc nuw nsw i64 %49 to i32 %64 = and i32 %63, 31 %65 = shl nuw i32 1, %64 %66 = and i32 %61, %65 diff --git a/bench/ruby/optimized/regerror.ll b/bench/ruby/optimized/regerror.ll index c893ed2ea0b..416447d3eaa 100644 --- a/bench/ruby/optimized/regerror.ll +++ b/bench/ruby/optimized/regerror.ll @@ -664,9 +664,9 @@ define dso_local void @onig_vsnprintf_with_pattern(ptr noundef %0, i32 noundef % %27 = getelementptr inbounds nuw i8, ptr %2, i64 88 br label %28 -28: ; preds = %.lr.ph122, %.loopexit89 - %.071121 = phi ptr [ %23, %.lr.ph122 ], [ %.4, %.loopexit89 ] - %.073120 = phi ptr [ %3, %.lr.ph122 ], [ %.376, %.loopexit89 ] +28: ; preds = %.lr.ph122, %.loopexit90 + %.071121 = phi ptr [ %23, %.lr.ph122 ], [ %.4, %.loopexit90 ] + %.073120 = phi ptr [ %3, %.lr.ph122 ], [ %.376, %.loopexit90 ] %29 = call i32 @onigenc_mbclen(ptr noundef %.073120, ptr noundef nonnull %4, ptr noundef %2) #8 %.not = icmp eq i32 %29, 1 br i1 %.not, label %59, label %30 @@ -690,10 +690,10 @@ define dso_local void @onig_vsnprintf_with_pattern(ptr noundef %0, i32 noundef % br i1 %39, label %.preheader, label %.preheader92 .preheader92: ; preds = %36 - br i1 %40, label %.lr.ph99, label %.loopexit89 + br i1 %40, label %.lr.ph99, label %.loopexit90 .preheader: ; preds = %36 - br i1 %40, label %.lr.ph105, label %.loopexit89 + br i1 %40, label %.lr.ph105, label %.loopexit90 .lr.ph105: ; preds = %.preheader, %.lr.ph105 %.172104 = phi ptr [ %44, %.lr.ph105 ], [ %.071121, %.preheader ] @@ -705,19 +705,19 @@ define dso_local void @onig_vsnprintf_with_pattern(ptr noundef %0, i32 noundef % %44 = getelementptr i8, ptr %.172104, i64 1 store i8 %43, ptr %.172104, align 1, !tbaa !21 %45 = icmp samesign ugt i32 %.078102, 1 - br i1 %45, label %.lr.ph105, label %.loopexit89, !llvm.loop !30 + br i1 %45, label %.lr.ph105, label %.loopexit90, !llvm.loop !30 .loopexit: ; preds = %.lr.ph, %.lr.ph99 %.3.lcssa = phi ptr [ %.298, %.lr.ph99 ], [ %58, %.lr.ph ] - %46 = icmp samesign ugt i32 %.in, 1 - br i1 %46, label %.lr.ph99, label %.loopexit89, !llvm.loop !31 + %46 = getelementptr i8, ptr %.27597, i64 1 + %47 = icmp samesign ugt i32 %.in, 1 + br i1 %47, label %.lr.ph99, label %.loopexit90, !llvm.loop !31 .lr.ph99: ; preds = %.preheader92, %.loopexit %.in = phi i32 [ %47, %.loopexit ], [ %38, %.preheader92 ] %.298 = phi ptr [ %.3.lcssa, %.loopexit ], [ %.071121, %.preheader92 ] - %.27597 = phi ptr [ %48, %.loopexit ], [ %.073120, %.preheader92 ] + %.27597 = phi ptr [ %46, %.loopexit ], [ %.073120, %.preheader92 ] %47 = add nsw i32 %.in, -1 - %48 = getelementptr i8, ptr %.27597, i64 1 %49 = load i8, ptr %.27597, align 1, !tbaa !21 %50 = zext i8 %49 to i32 %51 = call i32 (ptr, i64, ptr, ...) @ruby_snprintf(ptr noundef nonnull %8, i64 noundef 5, ptr noundef nonnull @.str.66, i32 noundef %50) #8 @@ -762,7 +762,7 @@ define dso_local void @onig_vsnprintf_with_pattern(ptr noundef %0, i32 noundef % .thread: ; preds = %66 %.5108141 = getelementptr i8, ptr %.071121, i64 1 - br label %.loopexit89 + br label %.loopexit90 68: ; preds = %61 %69 = call i32 @onigenc_mbclen(ptr noundef %62, ptr noundef nonnull %4, ptr noundef nonnull %2) #8 @@ -772,7 +772,7 @@ select.unfold: ; preds = %66, %68 %70 = phi i32 [ %69, %68 ], [ %63, %66 ] %.5108 = getelementptr i8, ptr %.071121, i64 1 %71 = icmp sgt i32 %70, 0 - br i1 %71, label %.lr.ph112, label %.loopexit89 + br i1 %71, label %.lr.ph112, label %.loopexit90 .lr.ph112: ; preds = %select.unfold, %.lr.ph112 %.5111 = phi ptr [ %.5, %.lr.ph112 ], [ %.5108, %select.unfold ] @@ -784,7 +784,7 @@ select.unfold: ; preds = %66, %68 store i8 %74, ptr %.5111, align 1, !tbaa !21 %.5 = getelementptr i8, ptr %.5111, i64 1 %75 = icmp samesign ugt i32 %.280109, 1 - br i1 %75, label %.lr.ph112, label %.loopexit89, !llvm.loop !33 + br i1 %75, label %.lr.ph112, label %.loopexit90, !llvm.loop !33 76: ; preds = %59 %77 = getelementptr i8, ptr %.071121, i64 1 @@ -793,7 +793,7 @@ select.unfold: ; preds = %66, %68 %79 = load i8, ptr %.073120, align 1, !tbaa !21 %80 = getelementptr i8, ptr %.071121, i64 2 store i8 %79, ptr %77, align 1, !tbaa !21 - br label %.loopexit89 + br label %.loopexit90 81: ; preds = %59 %82 = zext i8 %60 to i32 @@ -819,16 +819,15 @@ select.unfold: ; preds = %66, %68 br i1 %.not88, label %107, label %95 95: ; preds = %90, %85 - %96 = getelementptr i8, ptr %.073120, i64 1 - %97 = load i8, ptr %.073120, align 1, !tbaa !21 - %98 = zext i8 %97 to i32 - %99 = call i32 (ptr, i64, ptr, ...) @ruby_snprintf(ptr noundef nonnull %8, i64 noundef 5, ptr noundef nonnull @.str.66, i32 noundef %98) #8 - %100 = call i32 @onigenc_str_bytelen_null(ptr noundef nonnull @OnigEncodingASCII, ptr noundef nonnull %8) #8 - %101 = icmp sgt i32 %100, 0 - br i1 %101, label %.lr.ph118.preheader, label %.loopexit89 + %96 = load i8, ptr %.073120, align 1, !tbaa !21 + %97 = zext i8 %96 to i32 + %98 = call i32 (ptr, i64, ptr, ...) @ruby_snprintf(ptr noundef nonnull %8, i64 noundef 5, ptr noundef nonnull @.str.66, i32 noundef %97) #8 + %99 = call i32 @onigenc_str_bytelen_null(ptr noundef nonnull @OnigEncodingASCII, ptr noundef nonnull %8) #8 + %100 = icmp sgt i32 %99, 0 + br i1 %100, label %.lr.ph118.preheader, label %.loopexit89 .lr.ph118.preheader: ; preds = %95 - %102 = zext nneg i32 %100 to i64 + %102 = zext nneg i32 %99 to i64 %103 = getelementptr i8, ptr %8, i64 %102 %scevgep132 = getelementptr i8, ptr %103, i64 -1 br label %.lr.ph118 @@ -848,16 +847,21 @@ select.unfold: ; preds = %66, %68 %109 = load i8, ptr %.073120, align 1, !tbaa !21 %110 = getelementptr i8, ptr %.071121, i64 1 store i8 %109, ptr %.071121, align 1, !tbaa !21 - br label %.loopexit89 + br label %.loopexit90 -.loopexit89: ; preds = %.loopexit, %.lr.ph105, %.lr.ph112, %.lr.ph118, %.thread, %.preheader92, %.preheader, %select.unfold, %95, %107, %76 - %.376 = phi ptr [ %78, %76 ], [ %108, %107 ], [ %96, %95 ], [ %62, %select.unfold ], [ %.073120, %.preheader ], [ %.073120, %.preheader92 ], [ %62, %.thread ], [ %96, %.lr.ph118 ], [ %73, %.lr.ph112 ], [ %42, %.lr.ph105 ], [ %48, %.loopexit ] - %.4 = phi ptr [ %80, %76 ], [ %110, %107 ], [ %.071121, %95 ], [ %.5108, %select.unfold ], [ %.071121, %.preheader ], [ %.071121, %.preheader92 ], [ %.5108141, %.thread ], [ %106, %.lr.ph118 ], [ %.5, %.lr.ph112 ], [ %44, %.lr.ph105 ], [ %.3.lcssa, %.loopexit ] +.loopexit89: ; preds = %.lr.ph118, %95 + %.376 = phi ptr [ %.071121, %95 ], [ %105, %.lr.ph118 ] + %110 = getelementptr i8, ptr %.073120, i64 1 + br label %.loopexit90 + +.loopexit90: ; preds = %.loopexit, %.lr.ph105, %.lr.ph112, %.thread, %.preheader92, %.preheader, %select.unfold, %.loopexit89, %106, %76 + %.376 = phi ptr [ %78, %76 ], [ %107, %106 ], [ %110, %.loopexit89 ], [ %62, %select.unfold ], [ %.073120, %.preheader ], [ %.073120, %.preheader92 ], [ %62, %.thread ], [ %73, %.lr.ph112 ], [ %42, %.lr.ph105 ], [ %46, %.loopexit ] + %.4 = phi ptr [ %80, %76 ], [ %109, %106 ], [ %.6.lcssa, %.loopexit89 ], [ %.5108, %select.unfold ], [ %.071121, %.preheader ], [ %.071121, %.preheader92 ], [ %.5108140, %.thread ], [ %.5, %.lr.ph112 ], [ %44, %.lr.ph105 ], [ %.3.lcssa, %.loopexit ] %111 = icmp ult ptr %.376, %4 br i1 %111, label %28, label %._crit_edge, !llvm.loop !36 -._crit_edge: ; preds = %.loopexit89, %19 - %.071.lcssa = phi ptr [ %23, %19 ], [ %.4, %.loopexit89 ] +._crit_edge: ; preds = %.loopexit90, %19 + %.071.lcssa = phi ptr [ %23, %19 ], [ %.4, %.loopexit90 ] %112 = getelementptr i8, ptr %.071.lcssa, i64 1 store i8 47, ptr %.071.lcssa, align 1, !tbaa !21 store i8 0, ptr %112, align 1, !tbaa !21 diff --git a/bench/ruff-rs/optimized/8lgogilf7vbskewz0a9izgnge.ll b/bench/ruff-rs/optimized/8lgogilf7vbskewz0a9izgnge.ll index ce7a250a2ee..ba47966ad22 100644 --- a/bench/ruff-rs/optimized/8lgogilf7vbskewz0a9izgnge.ll +++ b/bench/ruff-rs/optimized/8lgogilf7vbskewz0a9izgnge.ll @@ -2866,25 +2866,22 @@ _ZN6memchr4arch3all6twoway6Finder3new17h6ed313fa298207a2E.exit92.i: ; preds = %. %168 = icmp ugt i64 %3, %167 br i1 %168, label %169, label %.invoke140 -169: ; preds = %166 - %170 = getelementptr inbounds nuw i8, ptr %2, i64 %167 - %171 = load i8, ptr %170, align 1, !alias.scope !348, !noalias !355, !noundef !3 - br label %.lr.ph.i.i93.i - -.lr.ph.i.i93.i: ; preds = %.lr.ph.i.i93.i, %169 - %.sroa.03.05.i.i94.i = phi ptr [ %172, %.lr.ph.i.i93.i ], [ %2, %169 ] - %.sroa.01.04.i.i95.i = phi i64 [ %177, %.lr.ph.i.i93.i ], [ 0, %169 ] - %172 = getelementptr inbounds nuw i8, ptr %.sroa.03.05.i.i94.i, i64 1 - %173 = load i8, ptr %.sroa.03.05.i.i94.i, align 1, !alias.scope !401, !noalias !406, !noundef !3 - %174 = and i8 %173, 63 - %175 = zext nneg i8 %174 to i64 - %176 = shl nuw i64 1, %175 - %177 = or i64 %176, %.sroa.01.04.i.i95.i - %178 = icmp eq ptr %172, %18 - br i1 %178, label %_ZN6memchr4arch3all6twoway6Finder3new17h6ed313fa298207a2E.exit102.i, label %.lr.ph.i.i93.i +169: ; preds = %166, %169 + %.sroa.03.05.i.i94.i = phi ptr [ %169, %.lr.ph.i.i93.i ], [ %2, %166 ] + %.sroa.01.04.i.i95.i = phi i64 [ %174, %.lr.ph.i.i93.i ], [ 0, %166 ] + %169 = getelementptr inbounds nuw i8, ptr %.sroa.03.05.i.i94.i, i64 1 + %170 = load i8, ptr %.sroa.03.05.i.i94.i, align 1, !alias.scope !401, !noalias !406, !noundef !3 + %171 = and i8 %170, 63 + %172 = zext nneg i8 %171 to i64 + %173 = shl nuw i64 1, %172 + %174 = or i64 %173, %.sroa.01.04.i.i95.i + %175 = icmp eq ptr %169, %18 + br i1 %175, label %_ZN6memchr4arch3all6twoway6Finder3new17h6ed313fa298207a2E.exit102.i, label %169 _ZN6memchr4arch3all6twoway6Finder3new17h6ed313fa298207a2E.exit102.i: ; preds = %.lr.ph.i.i93.i - %179 = invoke { i64, i64 } @_ZN6memchr4arch3all6twoway6Suffix7forward17h352e97df1f22ad20E(ptr noalias noundef nonnull readonly align 1 %2, i64 noundef range(i64 2, 0) %3, i1 noundef zeroext false) + %176 = getelementptr inbounds nuw i8, ptr %2, i64 %167 + %177 = load i8, ptr %176, align 1, !alias.scope !348, !noalias !355, !noundef !3 + %178 = invoke { i64, i64 } @_ZN6memchr4arch3all6twoway6Suffix7forward17h352e97df1f22ad20E(ptr noalias noundef nonnull readonly align 1 %2, i64 noundef range(i64 2, 0) %3, i1 noundef zeroext false) to label %.noexc25 unwind label %.loopexit.split-lp .noexc25: ; preds = %_ZN6memchr4arch3all6twoway6Finder3new17h6ed313fa298207a2E.exit102.i @@ -2892,11 +2889,11 @@ _ZN6memchr4arch3all6twoway6Finder3new17h6ed313fa298207a2E.exit102.i: ; preds = % to label %.noexc26 unwind label %.loopexit.split-lp .noexc26: ; preds = %.noexc25 + %180 = extractvalue { i64, i64 } %178, 0 %181 = extractvalue { i64, i64 } %179, 0 - %182 = extractvalue { i64, i64 } %180, 0 - %183 = icmp ugt i64 %181, %182 - %..i96.i = select i1 %183, { i64, i64 } %179, { i64, i64 } %180 - %.6.i97.i = call i64 @llvm.umax.i64(i64 %181, i64 %182) + %182 = icmp ugt i64 %180, %181 + %..i96.i = select i1 %182, { i64, i64 } %178, { i64, i64 } %179 + %.6.i97.i = call i64 @llvm.umax.i64(i64 %180, i64 %181) %.sroa.01.0.i98.i = extractvalue { i64, i64 } %..i96.i, 1 %184 = invoke { i64, i64 } @_ZN6memchr4arch3all6twoway5Shift7forward17hd496435b8bd87621E(ptr noalias noundef nonnull readonly align 1 %2, i64 noundef range(i64 2, 0) %3, i64 noundef %.sroa.01.0.i98.i, i64 noundef %.6.i97.i) to label %.noexc27 unwind label %.loopexit.split-lp @@ -2910,12 +2907,12 @@ _ZN6memchr4arch3all6twoway6Finder3new17h6ed313fa298207a2E.exit102.i: ; preds = % %.sroa.3.sroa.0.i.sroa.7.71.vec.extract = extractelement <16 x i8> %.sroa.3.sroa.0.i.sroa.7.31.copyload, i64 8 %.sroa.3.sroa.0.i.sroa.7.72.vec.extract = extractelement <16 x i8> %.sroa.3.sroa.0.i.sroa.7.31.copyload, i64 9 %.sroa.3.sroa.0.i.sroa.7.73.vec.extract = shufflevector <16 x i8> %.sroa.3.sroa.0.i.sroa.7.31.copyload, <16 x i8> poison, <6 x i32> + %187 = bitcast i64 %184 to <8 x i8> + %.sroa.0.0.vec.expand30 = shufflevector <8 x i8> %187, <8 x i8> poison, <16 x i32> %188 = bitcast i64 %185 to <8 x i8> - %.sroa.0.0.vec.expand30 = shufflevector <8 x i8> %188, <8 x i8> poison, <16 x i32> - %189 = bitcast i64 %186 to <8 x i8> - %.sroa.0.8.vec.expand41 = shufflevector <8 x i8> %189, <8 x i8> poison, <16 x i32> + %.sroa.0.0.vec.expand30 = shufflevector <8 x i8> %188, <8 x i8> poison, <16 x i32> %.sroa.0.8.vecblend42 = shufflevector <16 x i8> %.sroa.0.0.vec.expand30, <16 x i8> %.sroa.0.8.vec.expand41, <16 x i32> - %.sroa.14.16.vec.insert52 = insertelement <2 x i64> poison, i64 %177, i64 0 + %.sroa.14.16.vec.insert52 = insertelement <2 x i64> poison, i64 %174, i64 0 %.sroa.14.24.vec.insert58 = insertelement <2 x i64> %.sroa.14.16.vec.insert52, i64 %.6.i97.i, i64 1 br label %_ZN6memchr6memmem8searcher8Searcher3new17ha2f4f6f930ca3d54E.exit @@ -2936,39 +2933,39 @@ _ZN6memchr4arch3all6twoway6Finder3new17h6ed313fa298207a2E.exit102.i: ; preds = % 191: ; preds = %.loopexit.split-lp, %.loopexit %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] invoke void @"_ZN4core3ptr42drop_in_place$LT$memchr..cow..CowBytes$GT$17ha8d40aeb3e087d19E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %12) #21 - to label %195 unwind label %193 + to label %194 unwind label %193 _ZN6memchr6memmem8searcher8Searcher3new17ha2f4f6f930ca3d54E.exit: ; preds = %190, %.noexc27, %.noexc24, %.noexc21, %.noexc18, %111, %.noexc15, %4 - %.sroa.35.sroa.5.1 = phi <6 x i8> [ undef, %190 ], [ undef, %111 ], [ undef, %.noexc21 ], [ undef, %.noexc18 ], [ %.sroa.414.i.sroa.5.0.copyload, %.noexc27 ], [ undef, %.noexc24 ], [ %.sroa.414.i.sroa.9.sroa.5.0.copyload, %.noexc15 ], [ undef, %4 ] - %.sroa.35.sroa.0.1 = phi i8 [ undef, %190 ], [ undef, %111 ], [ undef, %.noexc21 ], [ undef, %.noexc18 ], [ %.sroa.414.i.sroa.0.0.copyload, %.noexc27 ], [ undef, %.noexc24 ], [ %.sroa.414.i.sroa.9.sroa.0.0.copyload, %.noexc15 ], [ undef, %4 ] - %.sroa.35.sroa.6.1 = phi <16 x i8> [ undef, %190 ], [ undef, %111 ], [ undef, %.noexc21 ], [ undef, %.noexc18 ], [ %.sroa.414.i.sroa.6.0.copyload, %.noexc27 ], [ undef, %.noexc24 ], [ %.sroa.414.i.sroa.9.sroa.6.0.copyload, %.noexc15 ], [ undef, %4 ] - %.sroa.35.sroa.7.1 = phi i64 [ undef, %190 ], [ undef, %111 ], [ undef, %.noexc21 ], [ undef, %.noexc18 ], [ %.sroa.414.i.sroa.7.0.copyload, %.noexc27 ], [ undef, %.noexc24 ], [ %.sroa.414.i.sroa.9.sroa.7.0.copyload, %.noexc15 ], [ undef, %4 ] - %.sroa.35.sroa.8.1 = phi i8 [ undef, %190 ], [ undef, %111 ], [ undef, %.noexc21 ], [ undef, %.noexc18 ], [ %.sroa.414.i.sroa.8.0.copyload, %.noexc27 ], [ undef, %.noexc24 ], [ %.sroa.414.i.sroa.9.sroa.8.0.copyload, %.noexc15 ], [ undef, %4 ] - %.sroa.35.sroa.9.sroa.0.1 = phi i8 [ undef, %190 ], [ undef, %111 ], [ undef, %.noexc21 ], [ undef, %.noexc18 ], [ %.sroa.414.i.sroa.9.sroa.0.0.copyload, %.noexc27 ], [ undef, %.noexc24 ], [ %.sroa.414.i.sroa.9.sroa.9.sroa.0.0.copyload, %.noexc15 ], [ undef, %4 ] - %.sroa.35.sroa.9.sroa.5.1 = phi <6 x i8> [ undef, %190 ], [ undef, %111 ], [ undef, %.noexc21 ], [ undef, %.noexc18 ], [ %.sroa.414.i.sroa.9.sroa.5.0.copyload, %.noexc27 ], [ undef, %.noexc24 ], [ %.sroa.414.i.sroa.9.sroa.9.sroa.5.0.copyload, %.noexc15 ], [ undef, %4 ] - %.sroa.34.sroa.6.1 = phi i64 [ undef, %190 ], [ undef, %111 ], [ undef, %.noexc21 ], [ undef, %.noexc18 ], [ %.sroa.3.sroa.0.i.sroa.13.31.copyload, %.noexc27 ], [ undef, %.noexc24 ], [ %.sroa.414.i.sroa.7.0.copyload, %.noexc15 ], [ undef, %4 ] - %.sroa.34.sroa.5.1 = phi <16 x i8> [ undef, %190 ], [ undef, %111 ], [ undef, %.noexc21 ], [ undef, %.noexc18 ], [ %.sroa.3.sroa.0.i.sroa.12.31.copyload, %.noexc27 ], [ undef, %.noexc24 ], [ %.sroa.414.i.sroa.6.0.copyload, %.noexc15 ], [ undef, %4 ] - %.sroa.34.sroa.0.1 = phi <6 x i8> [ undef, %190 ], [ undef, %111 ], [ undef, %.noexc21 ], [ undef, %.noexc18 ], [ %.sroa.3.sroa.0.i.sroa.7.73.vec.extract, %.noexc27 ], [ undef, %.noexc24 ], [ %.sroa.414.i.sroa.5.0.copyload, %.noexc15 ], [ undef, %4 ] - %.sroa.35.sroa.9.sroa.6.1 = phi <16 x i8> [ undef, %190 ], [ undef, %111 ], [ undef, %.noexc21 ], [ undef, %.noexc18 ], [ %.sroa.414.i.sroa.9.sroa.6.0.copyload, %.noexc27 ], [ undef, %.noexc24 ], [ %.sroa.414.i.sroa.9.sroa.9.sroa.6.0.copyload, %.noexc15 ], [ undef, %4 ] - %.sroa.35.sroa.9.sroa.7.1 = phi i64 [ undef, %190 ], [ undef, %111 ], [ undef, %.noexc21 ], [ undef, %.noexc18 ], [ %.sroa.414.i.sroa.9.sroa.7.0.copyload, %.noexc27 ], [ undef, %.noexc24 ], [ undef, %.noexc15 ], [ undef, %4 ] - %.sroa.35.sroa.9.sroa.8.1 = phi i8 [ undef, %190 ], [ undef, %111 ], [ undef, %.noexc21 ], [ undef, %.noexc18 ], [ %.sroa.414.i.sroa.9.sroa.8.0.copyload, %.noexc27 ], [ undef, %.noexc24 ], [ undef, %.noexc15 ], [ undef, %4 ] - %.sroa.35.sroa.9.sroa.9.sroa.0.1 = phi i8 [ undef, %190 ], [ undef, %111 ], [ undef, %.noexc21 ], [ undef, %.noexc18 ], [ %.sroa.414.i.sroa.9.sroa.9.sroa.0.0.copyload, %.noexc27 ], [ undef, %.noexc24 ], [ undef, %.noexc15 ], [ undef, %4 ] - %.sroa.35.sroa.9.sroa.9.sroa.4.1 = phi <6 x i8> [ undef, %190 ], [ undef, %111 ], [ undef, %.noexc21 ], [ undef, %.noexc18 ], [ %.sroa.414.i.sroa.9.sroa.9.sroa.5.0.copyload, %.noexc27 ], [ undef, %.noexc24 ], [ undef, %.noexc15 ], [ undef, %4 ] - %.sroa.35.sroa.9.sroa.9.sroa.5.1 = phi <16 x i8> [ undef, %190 ], [ undef, %111 ], [ undef, %.noexc21 ], [ undef, %.noexc18 ], [ %.sroa.414.i.sroa.9.sroa.9.sroa.6.0.copyload, %.noexc27 ], [ undef, %.noexc24 ], [ undef, %.noexc15 ], [ undef, %4 ] - %.sroa.58.1 = phi ptr [ @_ZN6memchr6memmem8searcher22searcher_kind_one_byte17h09d1ecefd6f5e2f3E, %190 ], [ @_ZN6memchr6memmem8searcher18searcher_kind_sse217hc896f6216e1a88afE, %111 ], [ @_ZN6memchr6memmem8searcher36searcher_kind_two_way_with_prefilter17h8a9a01608269aee6E, %.noexc21 ], [ @_ZN6memchr6memmem8searcher21searcher_kind_two_way17h29f2dc1bc2d8e2beE, %.noexc18 ], [ @_ZN6memchr6memmem8searcher36searcher_kind_two_way_with_prefilter17h8a9a01608269aee6E, %.noexc27 ], [ @_ZN6memchr6memmem8searcher21searcher_kind_two_way17h29f2dc1bc2d8e2beE, %.noexc24 ], [ @_ZN6memchr6memmem8searcher18searcher_kind_avx217h48f76ad3d87d9ebcE, %.noexc15 ], [ @_ZN6memchr6memmem8searcher19searcher_kind_empty17h58786030d1639991E, %4 ] - %.sroa.50.1 = phi i32 [ %.sroa.6.1.i.i, %190 ], [ %.sroa.6.1.i.i, %111 ], [ %.sroa.6.1.i.i, %.noexc21 ], [ %.sroa.6.1.i.i, %.noexc18 ], [ %.sroa.6.1.i.i, %.noexc27 ], [ %.sroa.6.1.i.i, %.noexc24 ], [ %.sroa.6.1.i.i, %.noexc15 ], [ 1, %4 ] - %.sroa.4267.1 = phi i32 [ %.sroa.0.1.i.i, %190 ], [ %.sroa.0.1.i.i, %111 ], [ %.sroa.0.1.i.i, %.noexc21 ], [ %.sroa.0.1.i.i, %.noexc18 ], [ %.sroa.0.1.i.i, %.noexc27 ], [ %.sroa.0.1.i.i, %.noexc24 ], [ %.sroa.0.1.i.i, %.noexc15 ], [ 0, %4 ] - %.sroa.40.1 = phi i8 [ undef, %190 ], [ undef, %111 ], [ %45, %.noexc21 ], [ undef, %.noexc18 ], [ %.sroa.3.sroa.4.31.copyload.i, %.noexc27 ], [ undef, %.noexc24 ], [ undef, %.noexc15 ], [ undef, %4 ] - %.sroa.38.1 = phi i8 [ undef, %190 ], [ undef, %111 ], [ %102, %.noexc21 ], [ undef, %.noexc18 ], [ %171, %.noexc27 ], [ undef, %.noexc24 ], [ undef, %.noexc15 ], [ undef, %4 ] - %.sroa.36.1 = phi ptr [ undef, %190 ], [ undef, %111 ], [ @_ZN6memchr6memmem8searcher19prefilter_kind_sse217hbc1795ef8ebac677E, %.noexc21 ], [ undef, %.noexc18 ], [ @_ZN6memchr6memmem8searcher19prefilter_kind_avx217hb9c01199f42749acE, %.noexc27 ], [ undef, %.noexc24 ], [ undef, %.noexc15 ], [ undef, %4 ] - %.sroa.3466.1 = phi i8 [ undef, %190 ], [ undef, %111 ], [ undef, %.noexc21 ], [ undef, %.noexc18 ], [ %.sroa.3.sroa.4.31.copyload.i, %.noexc27 ], [ undef, %.noexc24 ], [ %.sroa.414.i.sroa.8.0.copyload, %.noexc15 ], [ undef, %4 ] - %.sroa.32.1 = phi i8 [ undef, %190 ], [ undef, %111 ], [ %44, %.noexc21 ], [ undef, %.noexc18 ], [ %.sroa.3.sroa.0.i.sroa.7.72.vec.extract, %.noexc27 ], [ undef, %.noexc24 ], [ %.sroa.414.i.sroa.0.0.copyload, %.noexc15 ], [ undef, %4 ] - %.sroa.30.1 = phi i8 [ undef, %190 ], [ undef, %111 ], [ %45, %.noexc21 ], [ undef, %.noexc18 ], [ %.sroa.3.sroa.0.i.sroa.7.71.vec.extract, %.noexc27 ], [ undef, %.noexc24 ], [ %.sroa.3.sroa.4.31.copyload.i, %.noexc15 ], [ undef, %4 ] - %.sroa.29.1 = phi i64 [ undef, %190 ], [ undef, %111 ], [ %.sroa.0.0.sroa.speculated.i1.i.i, %.noexc21 ], [ undef, %.noexc18 ], [ %.sroa.3.sroa.0.i.sroa.7.63.vec.extract.extract, %.noexc27 ], [ undef, %.noexc24 ], [ %.sroa.3.sroa.0.i.sroa.13.31.copyload, %.noexc15 ], [ undef, %4 ] - %.sroa.28.1 = phi <16 x i8> [ undef, %190 ], [ undef, %111 ], [ %.sroa.01.15.vec.insert.i.i3.i.i, %.noexc21 ], [ undef, %.noexc18 ], [ %187, %.noexc27 ], [ undef, %.noexc24 ], [ %.sroa.3.sroa.0.i.sroa.12.31.copyload, %.noexc15 ], [ undef, %4 ] - %.sroa.23.1 = phi <16 x i8> [ undef, %190 ], [ %.sroa.23.41.vec.insert, %111 ], [ %.sroa.01.15.vec.insert.i.i.i.i, %.noexc21 ], [ undef, %.noexc18 ], [ %.sroa.3.sroa.0.i.sroa.2.31.copyload, %.noexc27 ], [ undef, %.noexc24 ], [ %.sroa.3.sroa.0.i.sroa.7.31.copyload, %.noexc15 ], [ undef, %4 ] - %.sroa.14.1 = phi <2 x i64> [ undef, %190 ], [ %112, %111 ], [ %.sroa.14.24.vec.insert62, %.noexc21 ], [ %.sroa.14.24.vec.insert60, %.noexc18 ], [ %.sroa.14.24.vec.insert58, %.noexc27 ], [ %.sroa.14.24.vec.insert, %.noexc24 ], [ %.sroa.3.sroa.0.i.sroa.5.31.copyload, %.noexc15 ], [ undef, %4 ] - %.sroa.0.1 = phi <16 x i8> [ %.sroa.0.0.vec.insert, %190 ], [ %.sroa.01.15.vec.insert.i.i.i.i, %111 ], [ %.sroa.0.8.vecblend48, %.noexc21 ], [ %.sroa.0.8.vecblend45, %.noexc18 ], [ %.sroa.0.8.vecblend42, %.noexc27 ], [ %.sroa.0.8.vecblend, %.noexc24 ], [ %.sroa.3.sroa.0.i.sroa.2.31.copyload, %.noexc15 ], [ undef, %4 ] + %.sroa.35.sroa.5.1 = phi <6 x i8> [ undef, %189 ], [ undef, %111 ], [ undef, %.noexc21 ], [ undef, %.noexc18 ], [ %.sroa.414.i.sroa.5.0.copyload, %.noexc27 ], [ undef, %.noexc24 ], [ %.sroa.414.i.sroa.9.sroa.5.0.copyload, %.noexc15 ], [ undef, %4 ] + %.sroa.35.sroa.0.1 = phi i8 [ undef, %189 ], [ undef, %111 ], [ undef, %.noexc21 ], [ undef, %.noexc18 ], [ %.sroa.414.i.sroa.0.0.copyload, %.noexc27 ], [ undef, %.noexc24 ], [ %.sroa.414.i.sroa.9.sroa.0.0.copyload, %.noexc15 ], [ undef, %4 ] + %.sroa.35.sroa.6.1 = phi <16 x i8> [ undef, %189 ], [ undef, %111 ], [ undef, %.noexc21 ], [ undef, %.noexc18 ], [ %.sroa.414.i.sroa.6.0.copyload, %.noexc27 ], [ undef, %.noexc24 ], [ %.sroa.414.i.sroa.9.sroa.6.0.copyload, %.noexc15 ], [ undef, %4 ] + %.sroa.35.sroa.7.1 = phi i64 [ undef, %189 ], [ undef, %111 ], [ undef, %.noexc21 ], [ undef, %.noexc18 ], [ %.sroa.414.i.sroa.7.0.copyload, %.noexc27 ], [ undef, %.noexc24 ], [ %.sroa.414.i.sroa.9.sroa.7.0.copyload, %.noexc15 ], [ undef, %4 ] + %.sroa.35.sroa.8.1 = phi i8 [ undef, %189 ], [ undef, %111 ], [ undef, %.noexc21 ], [ undef, %.noexc18 ], [ %.sroa.414.i.sroa.8.0.copyload, %.noexc27 ], [ undef, %.noexc24 ], [ %.sroa.414.i.sroa.9.sroa.8.0.copyload, %.noexc15 ], [ undef, %4 ] + %.sroa.35.sroa.9.sroa.0.1 = phi i8 [ undef, %189 ], [ undef, %111 ], [ undef, %.noexc21 ], [ undef, %.noexc18 ], [ %.sroa.414.i.sroa.9.sroa.0.0.copyload, %.noexc27 ], [ undef, %.noexc24 ], [ %.sroa.414.i.sroa.9.sroa.9.sroa.0.0.copyload, %.noexc15 ], [ undef, %4 ] + %.sroa.35.sroa.9.sroa.5.1 = phi <6 x i8> [ undef, %189 ], [ undef, %111 ], [ undef, %.noexc21 ], [ undef, %.noexc18 ], [ %.sroa.414.i.sroa.9.sroa.5.0.copyload, %.noexc27 ], [ undef, %.noexc24 ], [ %.sroa.414.i.sroa.9.sroa.9.sroa.5.0.copyload, %.noexc15 ], [ undef, %4 ] + %.sroa.34.sroa.6.1 = phi i64 [ undef, %189 ], [ undef, %111 ], [ undef, %.noexc21 ], [ undef, %.noexc18 ], [ %.sroa.3.sroa.0.i.sroa.13.31.copyload, %.noexc27 ], [ undef, %.noexc24 ], [ %.sroa.414.i.sroa.7.0.copyload, %.noexc15 ], [ undef, %4 ] + %.sroa.34.sroa.5.1 = phi <16 x i8> [ undef, %189 ], [ undef, %111 ], [ undef, %.noexc21 ], [ undef, %.noexc18 ], [ %.sroa.3.sroa.0.i.sroa.12.31.copyload, %.noexc27 ], [ undef, %.noexc24 ], [ %.sroa.414.i.sroa.6.0.copyload, %.noexc15 ], [ undef, %4 ] + %.sroa.34.sroa.0.1 = phi <6 x i8> [ undef, %189 ], [ undef, %111 ], [ undef, %.noexc21 ], [ undef, %.noexc18 ], [ %.sroa.3.sroa.0.i.sroa.7.73.vec.extract, %.noexc27 ], [ undef, %.noexc24 ], [ %.sroa.414.i.sroa.5.0.copyload, %.noexc15 ], [ undef, %4 ] + %.sroa.35.sroa.9.sroa.6.1 = phi <16 x i8> [ undef, %189 ], [ undef, %111 ], [ undef, %.noexc21 ], [ undef, %.noexc18 ], [ %.sroa.414.i.sroa.9.sroa.6.0.copyload, %.noexc27 ], [ undef, %.noexc24 ], [ %.sroa.414.i.sroa.9.sroa.9.sroa.6.0.copyload, %.noexc15 ], [ undef, %4 ] + %.sroa.35.sroa.9.sroa.7.1 = phi i64 [ undef, %189 ], [ undef, %111 ], [ undef, %.noexc21 ], [ undef, %.noexc18 ], [ %.sroa.414.i.sroa.9.sroa.7.0.copyload, %.noexc27 ], [ undef, %.noexc24 ], [ undef, %.noexc15 ], [ undef, %4 ] + %.sroa.35.sroa.9.sroa.8.1 = phi i8 [ undef, %189 ], [ undef, %111 ], [ undef, %.noexc21 ], [ undef, %.noexc18 ], [ %.sroa.414.i.sroa.9.sroa.8.0.copyload, %.noexc27 ], [ undef, %.noexc24 ], [ undef, %.noexc15 ], [ undef, %4 ] + %.sroa.35.sroa.9.sroa.9.sroa.0.1 = phi i8 [ undef, %189 ], [ undef, %111 ], [ undef, %.noexc21 ], [ undef, %.noexc18 ], [ %.sroa.414.i.sroa.9.sroa.9.sroa.0.0.copyload, %.noexc27 ], [ undef, %.noexc24 ], [ undef, %.noexc15 ], [ undef, %4 ] + %.sroa.35.sroa.9.sroa.9.sroa.4.1 = phi <6 x i8> [ undef, %189 ], [ undef, %111 ], [ undef, %.noexc21 ], [ undef, %.noexc18 ], [ %.sroa.414.i.sroa.9.sroa.9.sroa.5.0.copyload, %.noexc27 ], [ undef, %.noexc24 ], [ undef, %.noexc15 ], [ undef, %4 ] + %.sroa.35.sroa.9.sroa.9.sroa.5.1 = phi <16 x i8> [ undef, %189 ], [ undef, %111 ], [ undef, %.noexc21 ], [ undef, %.noexc18 ], [ %.sroa.414.i.sroa.9.sroa.9.sroa.6.0.copyload, %.noexc27 ], [ undef, %.noexc24 ], [ undef, %.noexc15 ], [ undef, %4 ] + %.sroa.58.1 = phi ptr [ @_ZN6memchr6memmem8searcher22searcher_kind_one_byte17h09d1ecefd6f5e2f3E, %189 ], [ @_ZN6memchr6memmem8searcher18searcher_kind_sse217hc896f6216e1a88afE, %111 ], [ @_ZN6memchr6memmem8searcher36searcher_kind_two_way_with_prefilter17h8a9a01608269aee6E, %.noexc21 ], [ @_ZN6memchr6memmem8searcher21searcher_kind_two_way17h29f2dc1bc2d8e2beE, %.noexc18 ], [ @_ZN6memchr6memmem8searcher36searcher_kind_two_way_with_prefilter17h8a9a01608269aee6E, %.noexc27 ], [ @_ZN6memchr6memmem8searcher21searcher_kind_two_way17h29f2dc1bc2d8e2beE, %.noexc24 ], [ @_ZN6memchr6memmem8searcher18searcher_kind_avx217h48f76ad3d87d9ebcE, %.noexc15 ], [ @_ZN6memchr6memmem8searcher19searcher_kind_empty17h58786030d1639991E, %4 ] + %.sroa.50.1 = phi i32 [ %.sroa.6.1.i.i, %189 ], [ %.sroa.6.1.i.i, %111 ], [ %.sroa.6.1.i.i, %.noexc21 ], [ %.sroa.6.1.i.i, %.noexc18 ], [ %.sroa.6.1.i.i, %.noexc27 ], [ %.sroa.6.1.i.i, %.noexc24 ], [ %.sroa.6.1.i.i, %.noexc15 ], [ 1, %4 ] + %.sroa.4267.1 = phi i32 [ %.sroa.0.1.i.i, %189 ], [ %.sroa.0.1.i.i, %111 ], [ %.sroa.0.1.i.i, %.noexc21 ], [ %.sroa.0.1.i.i, %.noexc18 ], [ %.sroa.0.1.i.i, %.noexc27 ], [ %.sroa.0.1.i.i, %.noexc24 ], [ %.sroa.0.1.i.i, %.noexc15 ], [ 0, %4 ] + %.sroa.40.1 = phi i8 [ undef, %189 ], [ undef, %111 ], [ %45, %.noexc21 ], [ undef, %.noexc18 ], [ %.sroa.3.sroa.4.31.copyload.i, %.noexc27 ], [ undef, %.noexc24 ], [ undef, %.noexc15 ], [ undef, %4 ] + %.sroa.38.1 = phi i8 [ undef, %189 ], [ undef, %111 ], [ %102, %.noexc21 ], [ undef, %.noexc18 ], [ %177, %.noexc27 ], [ undef, %.noexc24 ], [ undef, %.noexc15 ], [ undef, %4 ] + %.sroa.36.1 = phi ptr [ undef, %189 ], [ undef, %111 ], [ @_ZN6memchr6memmem8searcher19prefilter_kind_sse217hbc1795ef8ebac677E, %.noexc21 ], [ undef, %.noexc18 ], [ @_ZN6memchr6memmem8searcher19prefilter_kind_avx217hb9c01199f42749acE, %.noexc27 ], [ undef, %.noexc24 ], [ undef, %.noexc15 ], [ undef, %4 ] + %.sroa.3466.1 = phi i8 [ undef, %189 ], [ undef, %111 ], [ undef, %.noexc21 ], [ undef, %.noexc18 ], [ %.sroa.3.sroa.4.31.copyload.i, %.noexc27 ], [ undef, %.noexc24 ], [ %.sroa.414.i.sroa.8.0.copyload, %.noexc15 ], [ undef, %4 ] + %.sroa.32.1 = phi i8 [ undef, %189 ], [ undef, %111 ], [ %44, %.noexc21 ], [ undef, %.noexc18 ], [ %.sroa.3.sroa.0.i.sroa.7.72.vec.extract, %.noexc27 ], [ undef, %.noexc24 ], [ %.sroa.414.i.sroa.0.0.copyload, %.noexc15 ], [ undef, %4 ] + %.sroa.30.1 = phi i8 [ undef, %189 ], [ undef, %111 ], [ %45, %.noexc21 ], [ undef, %.noexc18 ], [ %.sroa.3.sroa.0.i.sroa.7.71.vec.extract, %.noexc27 ], [ undef, %.noexc24 ], [ %.sroa.3.sroa.4.31.copyload.i, %.noexc15 ], [ undef, %4 ] + %.sroa.29.1 = phi i64 [ undef, %189 ], [ undef, %111 ], [ %.sroa.0.0.sroa.speculated.i1.i.i, %.noexc21 ], [ undef, %.noexc18 ], [ %.sroa.3.sroa.0.i.sroa.7.63.vec.extract.extract, %.noexc27 ], [ undef, %.noexc24 ], [ %.sroa.3.sroa.0.i.sroa.13.31.copyload, %.noexc15 ], [ undef, %4 ] + %.sroa.28.1 = phi <16 x i8> [ undef, %189 ], [ undef, %111 ], [ %.sroa.01.15.vec.insert.i.i3.i.i, %.noexc21 ], [ undef, %.noexc18 ], [ %187, %.noexc27 ], [ undef, %.noexc24 ], [ %.sroa.3.sroa.0.i.sroa.12.31.copyload, %.noexc15 ], [ undef, %4 ] + %.sroa.23.1 = phi <16 x i8> [ undef, %189 ], [ %.sroa.23.41.vec.insert, %111 ], [ %.sroa.01.15.vec.insert.i.i.i.i, %.noexc21 ], [ undef, %.noexc18 ], [ %.sroa.3.sroa.0.i.sroa.2.31.copyload, %.noexc27 ], [ undef, %.noexc24 ], [ %.sroa.3.sroa.0.i.sroa.7.31.copyload, %.noexc15 ], [ undef, %4 ] + %.sroa.14.1 = phi <2 x i64> [ undef, %189 ], [ %112, %111 ], [ %.sroa.14.24.vec.insert62, %.noexc21 ], [ %.sroa.14.24.vec.insert60, %.noexc18 ], [ %.sroa.14.24.vec.insert58, %.noexc27 ], [ %.sroa.14.24.vec.insert, %.noexc24 ], [ %.sroa.3.sroa.0.i.sroa.5.31.copyload, %.noexc15 ], [ undef, %4 ] + %.sroa.0.1 = phi <16 x i8> [ %.sroa.0.0.vec.insert, %189 ], [ %.sroa.01.15.vec.insert.i.i.i.i, %111 ], [ %.sroa.0.8.vecblend48, %.noexc21 ], [ %.sroa.0.8.vecblend45, %.noexc18 ], [ %.sroa.0.8.vecblend42, %.noexc27 ], [ %.sroa.0.8.vecblend, %.noexc24 ], [ %.sroa.3.sroa.0.i.sroa.2.31.copyload, %.noexc15 ], [ undef, %4 ] %192 = getelementptr inbounds nuw i8, ptr %0, i64 256 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 32 dereferenceable(24) %192, ptr noundef nonnull align 8 dereferenceable(24) %12, i64 24, i1 false) store <16 x i8> %.sroa.0.1, ptr %0, align 32 diff --git a/bench/spike/optimized/htif_pthread.ll b/bench/spike/optimized/htif_pthread.ll index c6bfa7d0d74..850a4f3df11 100644 --- a/bench/spike/optimized/htif_pthread.ll +++ b/bench/spike/optimized/htif_pthread.ll @@ -1133,9 +1133,6 @@ _ZStplRKSt15_Deque_iteratorIcRcPcEl.exit.thread128: ; preds = %134 %.idx129 = and i64 %137, 144115188075855864 %138 = getelementptr inbounds nuw i8, ptr %126, i64 %.idx129 %139 = load ptr, ptr %138, align 8, !tbaa !98, !noalias !211 - %140 = getelementptr inbounds nuw i8, ptr %139, i64 512 - %141 = and i64 %132, 511 - %142 = getelementptr inbounds nuw i8, ptr %139, i64 %141 br label %.lr.ph.i.i _ZStplRKSt15_Deque_iteratorIcRcPcEl.exit: ; preds = %125 @@ -1156,11 +1153,17 @@ _ZStplRKSt15_Deque_iteratorIcRcPcEl.exit: ; preds = %125 %151 = icmp ult ptr %150, %138 br i1 %151, label %.lr.ph.i.i, label %_ZNSt5dequeIcSaIcEE17_M_erase_at_beginESt15_Deque_iteratorIcRcPcE.exit, !llvm.loop !99 -_ZNSt5dequeIcSaIcEE17_M_erase_at_beginESt15_Deque_iteratorIcRcPcE.exit: ; preds = %.lr.ph.i.i, %_ZStplRKSt15_Deque_iteratorIcRcPcEl.exit, %_ZStplRKSt15_Deque_iteratorIcRcPcEl.exit.thread - %storemerge.i.i81 = phi ptr [ %136, %_ZStplRKSt15_Deque_iteratorIcRcPcEl.exit.thread ], [ %148, %_ZStplRKSt15_Deque_iteratorIcRcPcEl.exit ], [ %142, %.lr.ph.i.i ] - %.sroa.642.080 = phi ptr [ %126, %_ZStplRKSt15_Deque_iteratorIcRcPcEl.exit.thread ], [ %144, %_ZStplRKSt15_Deque_iteratorIcRcPcEl.exit ], [ %138, %.lr.ph.i.i ] - %.sroa.441.079 = phi ptr [ %127, %_ZStplRKSt15_Deque_iteratorIcRcPcEl.exit.thread ], [ %146, %_ZStplRKSt15_Deque_iteratorIcRcPcEl.exit ], [ %140, %.lr.ph.i.i ] - %.sroa.240.078 = phi ptr [ %129, %_ZStplRKSt15_Deque_iteratorIcRcPcEl.exit.thread ], [ %145, %_ZStplRKSt15_Deque_iteratorIcRcPcEl.exit ], [ %139, %.lr.ph.i.i ] +_ZNSt5dequeIcSaIcEE17_M_erase_at_beginESt15_Deque_iteratorIcRcPcE.exit: ; preds = %.lr.ph.i.i + %149 = getelementptr inbounds nuw i8, ptr %139, i64 512 + %150 = and i64 %132, 511 + %151 = getelementptr inbounds nuw i8, ptr %139, i64 %150 + br label %_ZNSt5dequeIcSaIcEE17_M_erase_at_beginESt15_Deque_iteratorIcRcPcE.exit + +_ZNSt5dequeIcSaIcEE17_M_erase_at_beginESt15_Deque_iteratorIcRcPcE.exit: ; preds = %_ZNSt5dequeIcSaIcEE17_M_erase_at_beginESt15_Deque_iteratorIcRcPcE.exit.loopexit, %_ZStplRKSt15_Deque_iteratorIcRcPcEl.exit, %_ZStplRKSt15_Deque_iteratorIcRcPcEl.exit.thread + %storemerge.i.i81 = phi ptr [ %136, %_ZStplRKSt15_Deque_iteratorIcRcPcEl.exit.thread ], [ %145, %_ZStplRKSt15_Deque_iteratorIcRcPcEl.exit ], [ %151, %_ZNSt5dequeIcSaIcEE17_M_erase_at_beginESt15_Deque_iteratorIcRcPcE.exit.loopexit ] + %.sroa.642.080 = phi ptr [ %126, %_ZStplRKSt15_Deque_iteratorIcRcPcEl.exit.thread ], [ %141, %_ZStplRKSt15_Deque_iteratorIcRcPcEl.exit ], [ %138, %_ZNSt5dequeIcSaIcEE17_M_erase_at_beginESt15_Deque_iteratorIcRcPcE.exit.loopexit ] + %.sroa.441.079 = phi ptr [ %127, %_ZStplRKSt15_Deque_iteratorIcRcPcEl.exit.thread ], [ %143, %_ZStplRKSt15_Deque_iteratorIcRcPcEl.exit ], [ %149, %_ZNSt5dequeIcSaIcEE17_M_erase_at_beginESt15_Deque_iteratorIcRcPcE.exit.loopexit ] + %.sroa.240.078 = phi ptr [ %129, %_ZStplRKSt15_Deque_iteratorIcRcPcEl.exit.thread ], [ %142, %_ZStplRKSt15_Deque_iteratorIcRcPcEl.exit ], [ %139, %_ZNSt5dequeIcSaIcEE17_M_erase_at_beginESt15_Deque_iteratorIcRcPcE.exit.loopexit ] store ptr %storemerge.i.i81, ptr %27, align 8, !tbaa !98 store ptr %.sroa.240.078, ptr %29, align 8, !tbaa !98 store ptr %.sroa.441.079, ptr %30, align 8, !tbaa !98 @@ -1238,9 +1241,6 @@ _ZStmiRKSt15_Deque_iteratorIcRcPcEl.exit.thread130: ; preds = %168 %.idx90131 = and i64 %179, -8 %180 = getelementptr inbounds i8, ptr %169, i64 %.idx90131 %181 = load ptr, ptr %180, align 8, !tbaa !98, !noalias !229 - %182 = getelementptr inbounds nuw i8, ptr %181, i64 512 - %183 = and i64 %174, 511 - %184 = getelementptr inbounds nuw i8, ptr %181, i64 %183 br label %.lr.ph.i.i6 _ZStmiRKSt15_Deque_iteratorIcRcPcEl.exit: ; preds = %176 @@ -1261,11 +1261,17 @@ _ZStmiRKSt15_Deque_iteratorIcRcPcEl.exit: ; preds = %176 %192 = icmp ult ptr %.06.i.i7, %169 br i1 %192, label %.lr.ph.i.i6, label %_ZNSt5dequeIcSaIcEE15_M_erase_at_endESt15_Deque_iteratorIcRcPcE.exit, !llvm.loop !99 -_ZNSt5dequeIcSaIcEE15_M_erase_at_endESt15_Deque_iteratorIcRcPcE.exit: ; preds = %.lr.ph.i.i6, %_ZStmiRKSt15_Deque_iteratorIcRcPcEl.exit, %_ZStmiRKSt15_Deque_iteratorIcRcPcEl.exit.thread - %storemerge.i.i.i89 = phi ptr [ %178, %_ZStmiRKSt15_Deque_iteratorIcRcPcEl.exit.thread ], [ %190, %_ZStmiRKSt15_Deque_iteratorIcRcPcEl.exit ], [ %184, %.lr.ph.i.i6 ] - %.sroa.616.088 = phi ptr [ %169, %_ZStmiRKSt15_Deque_iteratorIcRcPcEl.exit.thread ], [ %186, %_ZStmiRKSt15_Deque_iteratorIcRcPcEl.exit ], [ %180, %.lr.ph.i.i6 ] - %.sroa.415.087 = phi ptr [ %172, %_ZStmiRKSt15_Deque_iteratorIcRcPcEl.exit.thread ], [ %188, %_ZStmiRKSt15_Deque_iteratorIcRcPcEl.exit ], [ %182, %.lr.ph.i.i6 ] - %.sroa.2.086 = phi ptr [ %170, %_ZStmiRKSt15_Deque_iteratorIcRcPcEl.exit.thread ], [ %187, %_ZStmiRKSt15_Deque_iteratorIcRcPcEl.exit ], [ %181, %.lr.ph.i.i6 ] +_ZNSt5dequeIcSaIcEE15_M_erase_at_endESt15_Deque_iteratorIcRcPcE.exit: ; preds = %.lr.ph.i.i6 + %190 = getelementptr inbounds nuw i8, ptr %181, i64 512 + %191 = and i64 %174, 511 + %192 = getelementptr inbounds nuw i8, ptr %181, i64 %191 + br label %_ZNSt5dequeIcSaIcEE15_M_erase_at_endESt15_Deque_iteratorIcRcPcE.exit + +_ZNSt5dequeIcSaIcEE15_M_erase_at_endESt15_Deque_iteratorIcRcPcE.exit: ; preds = %_ZNSt5dequeIcSaIcEE15_M_erase_at_endESt15_Deque_iteratorIcRcPcE.exit.loopexit, %_ZStmiRKSt15_Deque_iteratorIcRcPcEl.exit, %_ZStmiRKSt15_Deque_iteratorIcRcPcEl.exit.thread + %storemerge.i.i.i89 = phi ptr [ %178, %_ZStmiRKSt15_Deque_iteratorIcRcPcEl.exit.thread ], [ %187, %_ZStmiRKSt15_Deque_iteratorIcRcPcEl.exit ], [ %192, %_ZNSt5dequeIcSaIcEE15_M_erase_at_endESt15_Deque_iteratorIcRcPcE.exit.loopexit ] + %.sroa.616.088 = phi ptr [ %169, %_ZStmiRKSt15_Deque_iteratorIcRcPcEl.exit.thread ], [ %183, %_ZStmiRKSt15_Deque_iteratorIcRcPcEl.exit ], [ %180, %_ZNSt5dequeIcSaIcEE15_M_erase_at_endESt15_Deque_iteratorIcRcPcE.exit.loopexit ] + %.sroa.415.087 = phi ptr [ %172, %_ZStmiRKSt15_Deque_iteratorIcRcPcEl.exit.thread ], [ %185, %_ZStmiRKSt15_Deque_iteratorIcRcPcEl.exit ], [ %190, %_ZNSt5dequeIcSaIcEE15_M_erase_at_endESt15_Deque_iteratorIcRcPcE.exit.loopexit ] + %.sroa.2.086 = phi ptr [ %170, %_ZStmiRKSt15_Deque_iteratorIcRcPcEl.exit.thread ], [ %184, %_ZStmiRKSt15_Deque_iteratorIcRcPcEl.exit ], [ %181, %_ZNSt5dequeIcSaIcEE15_M_erase_at_endESt15_Deque_iteratorIcRcPcE.exit.loopexit ] store ptr %storemerge.i.i.i89, ptr %92, align 8, !tbaa !98 store ptr %.sroa.2.086, ptr %101, align 8, !tbaa !98 store ptr %.sroa.415.087, ptr %153, align 8, !tbaa !98 diff --git a/bench/spike/optimized/processor.ll b/bench/spike/optimized/processor.ll index 68bced48088..98a418feb68 100644 --- a/bench/spike/optimized/processor.ll +++ b/bench/spike/optimized/processor.ll @@ -384,21 +384,19 @@ _ZNSoC1EPSt15basic_streambufIcSt11char_traitsIcEE.exit: ; preds = %9 %73 = getelementptr inbounds nuw i8, ptr %0, i64 56 tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %72, ptr noundef nonnull align 8 dereferenceable(24) %73, i64 24, i1 false) %74 = getelementptr inbounds nuw i8, ptr %0, i64 4328 - %75 = getelementptr inbounds nuw i8, ptr %0, i64 4376 - %76 = getelementptr inbounds nuw i8, ptr %0, i64 4400 - %77 = getelementptr inbounds nuw i8, ptr %0, i64 4424 - %78 = getelementptr inbounds nuw i8, ptr %0, i64 4472 + %75 = getelementptr inbounds nuw i8, ptr %0, i64 4424 + %76 = getelementptr inbounds nuw i8, ptr %0, i64 4472 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(96) %74, i8 0, i64 96, i1 false) - store ptr %78, ptr %77, align 8, !tbaa !174 + store ptr %76, ptr %75, align 8, !tbaa !174 %79 = getelementptr inbounds nuw i8, ptr %0, i64 4432 store i64 1, ptr %79, align 8, !tbaa !175 %80 = getelementptr inbounds nuw i8, ptr %0, i64 4440 %81 = getelementptr inbounds nuw i8, ptr %0, i64 4456 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %78, i8 0, i64 16, i1 false) + store float 1.000000e+00, ptr %79, align 8, !tbaa !138 + %80 = getelementptr inbounds nuw i8, ptr %0, i64 4464 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %80, i8 0, i64 16, i1 false) - store float 1.000000e+00, ptr %81, align 8, !tbaa !138 - %82 = getelementptr inbounds nuw i8, ptr %0, i64 4464 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %82, i8 0, i64 16, i1 false) - br label %83 + br label %81 83: ; preds = %_ZN20opcode_cache_entry_tC2Ev.exit, %70 %.idx = phi i64 [ 4480, %70 ], [ %.add, %_ZN20opcode_cache_entry_tC2Ev.exit ] @@ -408,7 +406,7 @@ _ZNSoC1EPSt15basic_streambufIcSt11char_traitsIcEE.exit: ; preds = %9 br label %85 85: ; preds = %85, %83 - %.04.i.i = phi i64 [ 0, %83 ], [ %87, %85 ] + %.04.i.i = phi i64 [ 0, %81 ], [ %87, %83 ] %86 = getelementptr inbounds nuw ptr, ptr %84, i64 %.04.i.i store ptr @_ZN11insn_desc_t19illegal_instructionE, ptr %86, align 8, !tbaa !177 %87 = add nuw nsw i64 %.04.i.i, 1 @@ -421,6 +419,8 @@ _ZN20opcode_cache_entry_tC2Ev.exit: ; preds = %85 br i1 %88, label %89, label %83 89: ; preds = %_ZN20opcode_cache_entry_tC2Ev.exit + %88 = getelementptr inbounds nuw i8, ptr %0, i64 4376 + %89 = getelementptr inbounds nuw i8, ptr %0, i64 4400 %90 = getelementptr inbounds nuw i8, ptr %0, i64 266560 store i64 1, ptr %90, align 8, !tbaa !180 %91 = getelementptr inbounds nuw i8, ptr %0, i64 266576 @@ -817,8 +817,8 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i br label %_ZN14entropy_sourceD2Ev.exit _ZN14entropy_sourceD2Ev.exit: ; preds = %231, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i - call void @_ZNSt13unordered_mapImmSt4hashImESt8equal_toImESaISt4pairIKmmEEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %77) #39 - %236 = load ptr, ptr %76, align 8, !tbaa !225 + call void @_ZNSt13unordered_mapImmSt4hashImESt8equal_toImESaISt4pairIKmmEEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %75) #39 + %236 = load ptr, ptr %89, align 8, !tbaa !225 %.not.i.i.i = icmp eq ptr %236, null br i1 %.not.i.i.i, label %_ZNSt6vectorI11insn_desc_tSaIS0_EED2Ev.exit, label %237 @@ -832,7 +832,7 @@ _ZN14entropy_sourceD2Ev.exit: ; preds = %231, %_ZNKSt7__cxx1 br label %_ZNSt6vectorI11insn_desc_tSaIS0_EED2Ev.exit _ZNSt6vectorI11insn_desc_tSaIS0_EED2Ev.exit: ; preds = %_ZN14entropy_sourceD2Ev.exit, %237 - %243 = load ptr, ptr %75, align 8, !tbaa !225 + %243 = load ptr, ptr %88, align 8, !tbaa !225 %.not.i.i.i50 = icmp eq ptr %243, null br i1 %.not.i.i.i50, label %_ZNSt6vectorI11insn_desc_tSaIS0_EED2Ev.exit51, label %244 @@ -112791,8 +112791,8 @@ define internal fastcc void @"_ZSt16__introsort_loopIN9__gnu_cxx17__normal_itera br label %"_ZSt22__move_median_to_firstIN9__gnu_cxx17__normal_iteratorIPSt4pairImmESt6vectorIS3_SaIS3_EEEENS0_5__ops15_Iter_comp_iterIZN11processor_tD1EvE3$_0EEEvT_SE_SE_SE_T0_.exit.i" "_ZSt22__move_median_to_firstIN9__gnu_cxx17__normal_iteratorIPSt4pairImmESt6vectorIS3_SaIS3_EEEENS0_5__ops15_Iter_comp_iterIZN11processor_tD1EvE3$_0EEEvT_SE_SE_SE_T0_.exit.i": ; preds = %"_ZSt22__move_median_to_firstIN9__gnu_cxx17__normal_iteratorIPSt4pairImmESt6vectorIS3_SaIS3_EEEENS0_5__ops15_Iter_comp_iterIZN11processor_tD1EvE3$_0EEEvT_SE_SE_SE_T0_.exit.i.preheader", %165 - %.sroa.013.0.i.i = phi ptr [ %160, %165 ], [ %9, %"_ZSt22__move_median_to_firstIN9__gnu_cxx17__normal_iteratorIPSt4pairImmESt6vectorIS3_SaIS3_EEEENS0_5__ops15_Iter_comp_iterIZN11processor_tD1EvE3$_0EEEvT_SE_SE_SE_T0_.exit.i.preheader" ] - %.sroa.0.0.i.i = phi ptr [ %.sroa.0.1.i.i, %165 ], [ %storemerge25, %"_ZSt22__move_median_to_firstIN9__gnu_cxx17__normal_iteratorIPSt4pairImmESt6vectorIS3_SaIS3_EEEENS0_5__ops15_Iter_comp_iterIZN11processor_tD1EvE3$_0EEEvT_SE_SE_SE_T0_.exit.i.preheader" ] + %.sroa.013.0.i.i = phi ptr [ %160, %164 ], [ %9, %"_ZSt22__move_median_to_firstIN9__gnu_cxx17__normal_iteratorIPSt4pairImmESt6vectorIS3_SaIS3_EEEENS0_5__ops15_Iter_comp_iterIZN11processor_tD1EvE3$_0EEEvT_SE_SE_SE_T0_.exit.i.preheader" ] + %.sroa.0.0.i.i = phi ptr [ %.sroa.0.1.i.i, %164 ], [ %storemerge25, %"_ZSt22__move_median_to_firstIN9__gnu_cxx17__normal_iteratorIPSt4pairImmESt6vectorIS3_SaIS3_EEEENS0_5__ops15_Iter_comp_iterIZN11processor_tD1EvE3$_0EEEvT_SE_SE_SE_T0_.exit.i.preheader" ] %.val1.i.i13.i = load i64, ptr %11, align 8, !tbaa !285 br label %157 @@ -112802,14 +112802,10 @@ define internal fastcc void @"_ZSt16__introsort_loopIN9__gnu_cxx17__normal_itera %.val.i.i14.i = load i64, ptr %158, align 8, !tbaa !285 %159 = icmp ult i64 %.val.i.i14.i, %.val1.i.i13.i %160 = getelementptr i8, ptr %.sroa.013.1.i.i, i64 16 - br i1 %159, label %157, label %.preheader.i.i.preheader, !llvm.loop !391 - -.preheader.i.i.preheader: ; preds = %157 - %161 = getelementptr i8, ptr %.sroa.013.1.i.i, i64 8 - br label %.preheader.i.i + br i1 %159, label %157, label %.preheader.i.i, !llvm.loop !391 -.preheader.i.i: ; preds = %.preheader.i.i.preheader, %.preheader.i.i - %.sroa.0.0.pn.i.i = phi ptr [ %.sroa.0.1.i.i, %.preheader.i.i ], [ %.sroa.0.0.i.i, %.preheader.i.i.preheader ] +.preheader.i.i: ; preds = %157, %.preheader.i.i + %.sroa.0.0.pn.i.i = phi ptr [ %.sroa.0.1.i.i, %.preheader.i.i ], [ %.sroa.0.0.i.i, %157 ] %.sroa.0.1.i.i = getelementptr inbounds i8, ptr %.sroa.0.0.pn.i.i, i64 -16 %162 = getelementptr i8, ptr %.sroa.0.0.pn.i.i, i64 -8 %.val1.i10.i.i = load i64, ptr %162, align 8, !tbaa !285 @@ -112822,13 +112818,14 @@ define internal fastcc void @"_ZSt16__introsort_loopIN9__gnu_cxx17__normal_itera 165: ; preds = %164 %166 = getelementptr i8, ptr %.sroa.0.0.pn.i.i, i64 -8 + %166 = getelementptr i8, ptr %.sroa.013.1.i.i, i64 8 %167 = load i64, ptr %.sroa.013.1.i.i, align 8, !tbaa !176 %168 = load i64, ptr %.sroa.0.1.i.i, align 8, !tbaa !176 store i64 %168, ptr %.sroa.013.1.i.i, align 8, !tbaa !176 store i64 %167, ptr %.sroa.0.1.i.i, align 8, !tbaa !176 - %169 = load i64, ptr %161, align 8, !tbaa !176 + %169 = load i64, ptr %166, align 8, !tbaa !176 %170 = load i64, ptr %166, align 8, !tbaa !176 - store i64 %170, ptr %161, align 8, !tbaa !176 + store i64 %170, ptr %166, align 8, !tbaa !176 store i64 %169, ptr %166, align 8, !tbaa !176 br label %"_ZSt22__move_median_to_firstIN9__gnu_cxx17__normal_iteratorIPSt4pairImmESt6vectorIS3_SaIS3_EEEENS0_5__ops15_Iter_comp_iterIZN11processor_tD1EvE3$_0EEEvT_SE_SE_SE_T0_.exit.i", !llvm.loop !393 diff --git a/bench/sundials/optimized/sunlinsol_spfgmr.ll b/bench/sundials/optimized/sunlinsol_spfgmr.ll index 0c960b0b89e..d47536929ff 100644 --- a/bench/sundials/optimized/sunlinsol_spfgmr.ll +++ b/bench/sundials/optimized/sunlinsol_spfgmr.ll @@ -413,9 +413,9 @@ switch.edge: br label %.preheader307 .preheader307: ; preds = %._crit_edge350, %.preheader307.lr.ph - %.0258355 = phi double [ %65, %.preheader307.lr.ph ], [ %178, %._crit_edge350 ] + %.0258355 = phi double [ %65, %.preheader307.lr.ph ], [ %177, %._crit_edge350 ] %.0260354 = phi double [ %65, %.preheader307.lr.ph ], [ %.3, %._crit_edge350 ] - %.0270353 = phi i32 [ 0, %.preheader307.lr.ph ], [ %181, %._crit_edge350 ] + %.0270353 = phi i32 [ 0, %.preheader307.lr.ph ], [ %180, %._crit_edge350 ] %.0271352 = phi i32 [ 0, %.preheader307.lr.ph ], [ %.2273, %._crit_edge350 ] br i1 %69, label %._crit_edge316.thread, label %.preheader.us @@ -654,11 +654,7 @@ switch.edge: ._crit_edge339: ; preds = %.preheader306 store double 1.000000e+00, ptr %22, align 8, !tbaa !59 %.not302341 = icmp slt i32 %.2273, 0 - br i1 %.not302341, label %._crit_edge345.thread, label %.lr.ph344.preheader - -._crit_edge345.thread: ; preds = %._crit_edge339 - %166 = tail call double @llvm.fabs.f64(double %.0258355) - br label %._crit_edge350 + br i1 %.not302341, label %._crit_edge350, label %.lr.ph344.preheader .lr.ph344.preheader: ; preds = %._crit_edge339.thread, %._crit_edge339 %167 = phi double [ %165, %._crit_edge339.thread ], [ %.0258355, %._crit_edge339 ] @@ -676,12 +672,11 @@ switch.edge: br i1 %exitcond400.not, label %._crit_edge345, label %.lr.ph344 ._crit_edge345: ; preds = %.lr.ph344 - %171 = tail call double @llvm.fabs.f64(double %167) %wide.trip.count405 = zext i32 %146 to i64 br label %.lr.ph349 .lr.ph349: ; preds = %._crit_edge345, %.lr.ph349 - %indvars.iv401 = phi i64 [ 0, %._crit_edge345 ], [ %indvars.iv.next402, %.lr.ph349 ] + %indvars.iv401 = phi i64 [ 0, %.lr.ph349.preheader ], [ %indvars.iv.next402, %.lr.ph349 ] %172 = getelementptr inbounds nuw double, ptr %22, i64 %indvars.iv401 %173 = load double, ptr %172, align 8, !tbaa !59 %174 = getelementptr inbounds nuw double, ptr %41, i64 %indvars.iv401 @@ -694,11 +689,12 @@ switch.edge: %exitcond406.not = icmp eq i64 %indvars.iv.next402, %wide.trip.count405 br i1 %exitcond406.not, label %._crit_edge350, label %.lr.ph349 -._crit_edge350: ; preds = %.lr.ph349, %._crit_edge345.thread - %178 = phi double [ %166, %._crit_edge345.thread ], [ %171, %.lr.ph349 ] - %179 = load ptr, ptr %12, align 8, !tbaa !58 - %180 = tail call i32 @N_VLinearCombination(i32 noundef %146, ptr noundef nonnull %41, ptr noundef nonnull %43, ptr noundef %179) #12 - %181 = add nuw nsw i32 %.0270353, 1 +._crit_edge350: ; preds = %.lr.ph349, %._crit_edge339 + %178 = phi double [ %.0258355, %._crit_edge339 ], [ %167, %.lr.ph349 ] + %177 = tail call double @llvm.fabs.f64(double %178) + %178 = load ptr, ptr %12, align 8, !tbaa !58 + %179 = tail call i32 @N_VLinearCombination(i32 noundef %146, ptr noundef nonnull %41, ptr noundef nonnull %43, ptr noundef %178) #12 + %180 = add nuw nsw i32 %.0270353, 1 br label %.preheader307 ._crit_edge356: ; preds = %153 @@ -727,7 +723,7 @@ switch.edge: br label %188 188: ; preds = %._crit_edge356.thread, %187, %152, %137, %118, %101, %92, %67, %50 - %.sink = phi i32 [ 802, %._crit_edge356.thread ], [ 801, %187 ], [ 0, %152 ], [ -811, %137 ], [ 807, %118 ], [ %103, %101 ], [ %94, %92 ], [ 0, %67 ], [ %52, %50 ] + %.sink = phi i32 [ 802, %._crit_edge356.thread ], [ 801, %186 ], [ 0, %152 ], [ -811, %137 ], [ 807, %118 ], [ %103, %101 ], [ %94, %92 ], [ 0, %67 ], [ %52, %50 ] %189 = load ptr, ptr %0, align 8, !tbaa !26 %190 = getelementptr inbounds nuw i8, ptr %189, i64 32 store i32 %.sink, ptr %190, align 8, !tbaa !27 diff --git a/bench/syn/optimized/ofvfd67uyaewjlc.ll b/bench/syn/optimized/ofvfd67uyaewjlc.ll index e666b4571c2..bace5721587 100644 --- a/bench/syn/optimized/ofvfd67uyaewjlc.ll +++ b/bench/syn/optimized/ofvfd67uyaewjlc.ll @@ -3787,21 +3787,14 @@ _ZN3syn6buffer6Cursor11ignore_none17h8ff9d6e421d536b3E.llvm.1271834235494842624. %16 = getelementptr inbounds nuw i8, ptr %.sroa.0.1, i64 4 %17 = load i32, ptr %16, align 4, !range !640, !noundef !9 %18 = icmp eq i32 %17, 39 - br i1 %18, label %19, label %20 + br i1 %18, label %19, label %25 19: ; preds = %15, %_ZN3syn6buffer6Cursor11ignore_none17h8ff9d6e421d536b3E.llvm.1271834235494842624.exit store i32 1114112, ptr %0, align 8 br label %29 -20: ; preds = %15 - %21 = getelementptr inbounds nuw i8, ptr %.sroa.0.1, i64 12 - %22 = load i8, ptr %21, align 4, !range !444, !noundef !9 - %23 = getelementptr inbounds nuw i8, ptr %.sroa.0.1, i64 8 - %24 = load i32, ptr %23, align 4, !noundef !9 - br label %25 - -25: ; preds = %25, %20 - %.pn.i = phi ptr [ %.sroa.0.1, %20 ], [ %.0.i.i, %25 ] +25: ; preds = %15, %25 + %.pn.i = phi ptr [ %.0.i.i, %.preheader ], [ %.sroa.0.1, %15 ] %.0.i.i = getelementptr inbounds nuw i8, ptr %.pn.i, i64 40 %26 = load i32, ptr %.0.i.i, align 8, !range !233, !noundef !9 %27 = icmp ne i32 %26, 4 @@ -3810,11 +3803,15 @@ _ZN3syn6buffer6Cursor11ignore_none17h8ff9d6e421d536b3E.llvm.1271834235494842624. br i1 %or.cond.i.i, label %_ZN3syn6buffer6Cursor17bump_ignore_group17h7d42b7a38641a99cE.llvm.1271834235494842624.exit, label %25 _ZN3syn6buffer6Cursor17bump_ignore_group17h7d42b7a38641a99cE.llvm.1271834235494842624.exit: ; preds = %25 + %23 = getelementptr inbounds nuw i8, ptr %.sroa.0.1, i64 12 + %24 = load i8, ptr %23, align 4, !range !444, !noundef !9 + %25 = getelementptr inbounds nuw i8, ptr %.sroa.0.1, i64 8 + %26 = load i32, ptr %25, align 4, !noundef !9 store i32 %17, ptr %0, align 8 %.sroa.0.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 4 - store i32 %24, ptr %.sroa.0.sroa.4.0..sroa_idx, align 4 + store i32 %26, ptr %.sroa.0.sroa.4.0..sroa_idx, align 4 %.sroa.0.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i8 %22, ptr %.sroa.0.sroa.5.0..sroa_idx, align 8 + store i8 %24, ptr %.sroa.0.sroa.5.0..sroa_idx, align 8 %.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 16 store ptr %.0.i.i, ptr %.sroa.4.0..sroa_idx, align 8 %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 24 @@ -4474,8 +4471,6 @@ default.unreachable62: ; preds = %3 %.sroa.8.0 = phi i32 [ %.sroa.4.0, %"_ZN62_$LT$proc_macro2..imp..Group$u20$as$u20$core..clone..Clone$GT$5clone17ha9e1492a000ae487E.llvm.1271834235494842624.exit" ], [ %55, %49 ], [ %.sroa.026.sroa.5.0, %"_ZN64_$LT$proc_macro2..imp..Literal$u20$as$u20$core..clone..Clone$GT$5clone17he46c9d8993ac83a1E.llvm.1271834235494842624.exit" ], [ %45, %39 ], [ %.sroa.7.0.copyload, %46 ] %.sroa.9.0 = phi i8 [ %.sroa.6.0.extract.trunc, %"_ZN62_$LT$proc_macro2..imp..Group$u20$as$u20$core..clone..Clone$GT$5clone17ha9e1492a000ae487E.llvm.1271834235494842624.exit" ], [ %53, %49 ], [ %.sroa.627.sroa.0.0, %"_ZN64_$LT$proc_macro2..imp..Literal$u20$as$u20$core..clone..Clone$GT$5clone17he46c9d8993ac83a1E.llvm.1271834235494842624.exit" ], [ %43, %39 ], [ %.sroa.934.0.copyload, %46 ] %.0 = phi i64 [ %34, %"_ZN62_$LT$proc_macro2..imp..Group$u20$as$u20$core..clone..Clone$GT$5clone17ha9e1492a000ae487E.llvm.1271834235494842624.exit" ], [ 1, %49 ], [ 1, %"_ZN64_$LT$proc_macro2..imp..Literal$u20$as$u20$core..clone..Clone$GT$5clone17he46c9d8993ac83a1E.llvm.1271834235494842624.exit" ], [ 1, %39 ], [ 1, %46 ] - %.sroa.11.sroa.4.sroa.0.0.insert.ext = zext i8 %.sroa.11.sroa.4.sroa.0.0 to i32 - %.sroa.11.sroa.4.sroa.0.0.insert.insert = or i32 %.sroa.11.sroa.4.sroa.4.sroa.0.0, %.sroa.11.sroa.4.sroa.0.0.insert.ext %73 = getelementptr inbounds { i32, [9 x i32] }, ptr %1, i64 %.0 br label %74 @@ -4489,6 +4484,8 @@ default.unreachable62: ; preds = %3 br i1 %or.cond.i, label %79, label %74 79: ; preds = %74 + %.sroa.11.sroa.4.sroa.0.0.insert.ext = zext i8 %.sroa.11.sroa.4.sroa.0.0 to i32 + %.sroa.11.sroa.4.sroa.0.0.insert.insert = or i32 %.sroa.11.sroa.4.sroa.4.sroa.0.0, %.sroa.11.sroa.4.sroa.0.0.insert.ext store i64 %.sroa.07.0, ptr %0, align 8 %.sroa.04.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 store i32 %.sroa.59.0, ptr %.sroa.04.sroa.4.0..sroa_idx, align 8 diff --git a/bench/vcpkg/optimized/commands.depend-info.ll b/bench/vcpkg/optimized/commands.depend-info.ll index 9bc3f404d06..ce5de56d124 100644 --- a/bench/vcpkg/optimized/commands.depend-info.ll +++ b/bench/vcpkg/optimized/commands.depend-info.ll @@ -16008,12 +16008,8 @@ _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.thread.i.i.i.i.i22.i: ; preds = %_ZNS %256 = getelementptr inbounds nuw i8, ptr %.sroa.023.1.i.i, i64 120 br i1 %255, label %250, label %.preheader.i.i.preheader, !llvm.loop !541 -.preheader.i.i.preheader: ; preds = %"_ZN9__gnu_cxx5__ops15_Iter_comp_iterIZN5vcpkg28command_depend_info_and_exitERKNS2_17VcpkgCmdArgumentsERKNS2_10VcpkgPathsENS2_7TripletES9_E3$_2EclINS_17__normal_iteratorIPNS2_17PackageDependInfoESt6vectorISE_SaISE_EEEESJ_EEbT_T0_.exit.i20.i" - %257 = getelementptr i8, ptr %.sroa.023.1.i.i, i64 8 - br label %.preheader.i.i - -.preheader.i.i: ; preds = %.preheader.i.i.preheader, %"_ZN9__gnu_cxx5__ops15_Iter_comp_iterIZN5vcpkg28command_depend_info_and_exitERKNS2_17VcpkgCmdArgumentsERKNS2_10VcpkgPathsENS2_7TripletES9_E3$_2EclINS_17__normal_iteratorIPNS2_17PackageDependInfoESt6vectorISE_SaISE_EEEESJ_EEbT_T0_.exit20.i.i" - %.sroa.0.0.pn.i.i = phi ptr [ %.sroa.0.1.i.i, %"_ZN9__gnu_cxx5__ops15_Iter_comp_iterIZN5vcpkg28command_depend_info_and_exitERKNS2_17VcpkgCmdArgumentsERKNS2_10VcpkgPathsENS2_7TripletES9_E3$_2EclINS_17__normal_iteratorIPNS2_17PackageDependInfoESt6vectorISE_SaISE_EEEESJ_EEbT_T0_.exit20.i.i" ], [ %.sroa.0.0.i.i, %.preheader.i.i.preheader ] +.preheader.i.i.preheader: ; preds = %"_ZN9__gnu_cxx5__ops15_Iter_comp_iterIZN5vcpkg28command_depend_info_and_exitERKNS2_17VcpkgCmdArgumentsERKNS2_10VcpkgPathsENS2_7TripletES9_E3$_2EclINS_17__normal_iteratorIPNS2_17PackageDependInfoESt6vectorISE_SaISE_EEEESJ_EEbT_T0_.exit.i20.i", %"_ZN9__gnu_cxx5__ops15_Iter_comp_iterIZN5vcpkg28command_depend_info_and_exitERKNS2_17VcpkgCmdArgumentsERKNS2_10VcpkgPathsENS2_7TripletES9_E3$_2EclINS_17__normal_iteratorIPNS2_17PackageDependInfoESt6vectorISE_SaISE_EEEESJ_EEbT_T0_.exit20.i.i" + %.sroa.0.0.pn.i.i = phi ptr [ %.sroa.0.1.i.i, %"_ZN9__gnu_cxx5__ops15_Iter_comp_iterIZN5vcpkg28command_depend_info_and_exitERKNS2_17VcpkgCmdArgumentsERKNS2_10VcpkgPathsENS2_7TripletES9_E3$_2EclINS_17__normal_iteratorIPNS2_17PackageDependInfoESt6vectorISE_SaISE_EEEESJ_EEbT_T0_.exit20.i.i" ], [ %.sroa.0.0.i.i, %"_ZN9__gnu_cxx5__ops15_Iter_comp_iterIZN5vcpkg28command_depend_info_and_exitERKNS2_17VcpkgCmdArgumentsERKNS2_10VcpkgPathsENS2_7TripletES9_E3$_2EclINS_17__normal_iteratorIPNS2_17PackageDependInfoESt6vectorISE_SaISE_EEEESJ_EEbT_T0_.exit.i20.i" ] %.sroa.0.1.i.i = getelementptr inbounds i8, ptr %.sroa.0.0.pn.i.i, i64 -120 %258 = getelementptr i8, ptr %.sroa.0.0.pn.i.i, i64 -112 %.val3.i9.i.i = load i64, ptr %258, align 8, !tbaa !15 @@ -16041,6 +16037,7 @@ _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.thread.i.i.i.i16.i.i: ; preds = %_ZNS br i1 %262, label %.preheader.i.i, label %263, !llvm.loop !542 263: ; preds = %"_ZN9__gnu_cxx5__ops15_Iter_comp_iterIZN5vcpkg28command_depend_info_and_exitERKNS2_17VcpkgCmdArgumentsERKNS2_10VcpkgPathsENS2_7TripletES9_E3$_2EclINS_17__normal_iteratorIPNS2_17PackageDependInfoESt6vectorISE_SaISE_EEEESJ_EEbT_T0_.exit20.i.i" + %263 = getelementptr i8, ptr %.sroa.023.1.i.i, i64 8 %264 = getelementptr i8, ptr %.sroa.0.0.pn.i.i, i64 -112 %265 = icmp ult ptr %.sroa.023.1.i.i, %.sroa.0.1.i.i br i1 %265, label %266, label %"_ZSt27__unguarded_partition_pivotIN9__gnu_cxx17__normal_iteratorIPN5vcpkg17PackageDependInfoESt6vectorIS3_SaIS3_EEEENS0_5__ops15_Iter_comp_iterIZNS2_28command_depend_info_and_exitERKNS2_17VcpkgCmdArgumentsERKNS2_10VcpkgPathsENS2_7TripletESH_E3$_2EEET_SK_SK_T0_.exit" @@ -16064,14 +16061,14 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i store ptr %267, ptr %4, align 8, !tbaa !12 %273 = load i64, ptr %268, align 8, !tbaa !14 store i64 %273, ptr %16, align 8, !tbaa !14 - %.pre.i19 = load i64, ptr %257, align 8, !tbaa !15 + %.pre.i19 = load i64, ptr %263, align 8, !tbaa !15 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit.i.i20 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit.i.i20: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i17, %270 %274 = phi i64 [ %.pre.i19, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i17 ], [ %.val1.i.i14.i, %270 ] store i64 %274, ptr %17, align 8, !tbaa !15 store ptr %268, ptr %.sroa.023.1.i.i, align 8, !tbaa !12 - store i64 0, ptr %257, align 8, !tbaa !15 + store i64 0, ptr %263, align 8, !tbaa !15 store i8 0, ptr %268, align 8, !tbaa !14 %275 = getelementptr inbounds nuw i8, ptr %.sroa.023.1.i.i, i64 32 %276 = load i32, ptr %275, align 8, !tbaa !143 @@ -16164,7 +16161,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.threa _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit.i.i42: ; preds = %314, %312, %309 %315 = load i64, ptr %264, align 8, !tbaa !15 - store i64 %315, ptr %257, align 8, !tbaa !15 + store i64 %315, ptr %263, align 8, !tbaa !15 %316 = load ptr, ptr %.sroa.023.1.i.i, align 8, !tbaa !12 %317 = getelementptr inbounds nuw i8, ptr %316, i64 %315 store i8 0, ptr %317, align 1, !tbaa !14 @@ -16174,7 +16171,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit.i.i42: .thread.i.i45: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i44 store ptr %306, ptr %.sroa.023.1.i.i, align 8, !tbaa !12 %318 = load i64, ptr %264, align 8, !tbaa !15 - store i64 %318, ptr %257, align 8, !tbaa !15 + store i64 %318, ptr %263, align 8, !tbaa !15 %319 = load i64, ptr %307, align 8, !tbaa !14 store i64 %319, ptr %268, align 8, !tbaa !14 br label %324 @@ -16183,7 +16180,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit24.thr %320 = load i64, ptr %268, align 8, !tbaa !14 store ptr %306, ptr %.sroa.023.1.i.i, align 8, !tbaa !12 %321 = load i64, ptr %264, align 8, !tbaa !15 - store i64 %321, ptr %257, align 8, !tbaa !15 + store i64 %321, ptr %263, align 8, !tbaa !15 %322 = load i64, ptr %307, align 8, !tbaa !14 store i64 %322, ptr %268, align 8, !tbaa !14 %.not.i.i29 = icmp eq ptr %304, null @@ -18003,12 +18000,8 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit.i4.i: ; preds %238 = getelementptr inbounds nuw i8, ptr %.sroa.012.1.i.i, i64 120 br i1 %237, label %235, label %.preheader.i.i.preheader, !llvm.loop !552 -.preheader.i.i.preheader: ; preds = %235 - %239 = getelementptr i8, ptr %.sroa.012.1.i.i, i64 32 - br label %.preheader.i.i - -.preheader.i.i: ; preds = %.preheader.i.i.preheader, %.preheader.i.i - %.sroa.0.0.pn.i.i = phi ptr [ %.sroa.0.1.i.i, %.preheader.i.i ], [ %.sroa.0.0.i.i, %.preheader.i.i.preheader ] +.preheader.i.i: ; preds = %235, %.preheader.i.i.preheader + %.sroa.0.0.pn.i.i = phi ptr [ %.sroa.0.1.i.i, %.preheader.i.i ], [ %.sroa.0.0.i.i, %235 ] %.sroa.0.1.i.i = getelementptr inbounds i8, ptr %.sroa.0.0.pn.i.i, i64 -120 %240 = getelementptr i8, ptr %.sroa.0.0.pn.i.i, i64 -88 %.val1.i9.i.i = load i32, ptr %240, align 8, !tbaa !143 @@ -18016,6 +18009,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit.i4.i: ; preds br i1 %241, label %.preheader.i.i, label %242, !llvm.loop !553 242: ; preds = %.preheader.i.i + %242 = getelementptr i8, ptr %.sroa.012.1.i.i, i64 32 %243 = getelementptr i8, ptr %.sroa.0.0.pn.i.i, i64 -88 %244 = icmp ult ptr %.sroa.012.1.i.i, %.sroa.0.1.i.i br i1 %244, label %245, label %"_ZSt27__unguarded_partition_pivotIN9__gnu_cxx17__normal_iteratorIPN5vcpkg17PackageDependInfoESt6vectorIS3_SaIS3_EEEENS0_5__ops15_Iter_comp_iterIZNS2_28command_depend_info_and_exitERKNS2_17VcpkgCmdArgumentsERKNS2_10VcpkgPathsENS2_7TripletESH_E3$_4EEET_SK_SK_T0_.exit" @@ -18052,7 +18046,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit.i.i19: ; preds store ptr %247, ptr %.sroa.012.1.i.i, align 8, !tbaa !12 store i64 0, ptr %256, align 8, !tbaa !15 store i8 0, ptr %247, align 8, !tbaa !14 - %257 = load i32, ptr %239, align 8, !tbaa !143 + %257 = load i32, ptr %242, align 8, !tbaa !143 store i32 %257, ptr %18, align 8, !tbaa !143 %258 = getelementptr inbounds nuw i8, ptr %.sroa.012.1.i.i, i64 40 %259 = load ptr, ptr %258, align 8, !tbaa !261 @@ -18185,7 +18179,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_.exit.i29: ; preds = store i64 0, ptr %310, align 8, !tbaa !15 store i8 0, ptr %309, align 1, !tbaa !14 %311 = load i32, ptr %243, align 8, !tbaa !143 - store i32 %311, ptr %239, align 8, !tbaa !143 + store i32 %311, ptr %242, align 8, !tbaa !143 %312 = getelementptr inbounds i8, ptr %.sroa.0.0.pn.i.i, i64 -80 %313 = load ptr, ptr %262, align 8, !tbaa !158 %.not5.i.i47 = icmp eq ptr %313, null @@ -19792,12 +19786,8 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit.i4.i: ; preds %238 = getelementptr inbounds nuw i8, ptr %.sroa.012.1.i.i, i64 120 br i1 %237, label %235, label %.preheader.i.i.preheader, !llvm.loop !562 -.preheader.i.i.preheader: ; preds = %235 - %239 = getelementptr i8, ptr %.sroa.012.1.i.i, i64 32 - br label %.preheader.i.i - -.preheader.i.i: ; preds = %.preheader.i.i.preheader, %.preheader.i.i - %.sroa.0.0.pn.i.i = phi ptr [ %.sroa.0.1.i.i, %.preheader.i.i ], [ %.sroa.0.0.i.i, %.preheader.i.i.preheader ] +.preheader.i.i: ; preds = %235, %.preheader.i.i.preheader + %.sroa.0.0.pn.i.i = phi ptr [ %.sroa.0.1.i.i, %.preheader.i.i ], [ %.sroa.0.0.i.i, %235 ] %.sroa.0.1.i.i = getelementptr inbounds i8, ptr %.sroa.0.0.pn.i.i, i64 -120 %240 = getelementptr i8, ptr %.sroa.0.0.pn.i.i, i64 -88 %.val1.i9.i.i = load i32, ptr %240, align 8, !tbaa !143 @@ -19805,6 +19795,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit.i4.i: ; preds br i1 %241, label %.preheader.i.i, label %242, !llvm.loop !563 242: ; preds = %.preheader.i.i + %242 = getelementptr i8, ptr %.sroa.012.1.i.i, i64 32 %243 = getelementptr i8, ptr %.sroa.0.0.pn.i.i, i64 -88 %244 = icmp ult ptr %.sroa.012.1.i.i, %.sroa.0.1.i.i br i1 %244, label %245, label %"_ZSt27__unguarded_partition_pivotIN9__gnu_cxx17__normal_iteratorIPN5vcpkg17PackageDependInfoESt6vectorIS3_SaIS3_EEEENS0_5__ops15_Iter_comp_iterIZNS2_28command_depend_info_and_exitERKNS2_17VcpkgCmdArgumentsERKNS2_10VcpkgPathsENS2_7TripletESH_E3$_3EEET_SK_SK_T0_.exit" @@ -19841,7 +19832,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit.i.i19: ; preds store ptr %247, ptr %.sroa.012.1.i.i, align 8, !tbaa !12 store i64 0, ptr %256, align 8, !tbaa !15 store i8 0, ptr %247, align 8, !tbaa !14 - %257 = load i32, ptr %239, align 8, !tbaa !143 + %257 = load i32, ptr %242, align 8, !tbaa !143 store i32 %257, ptr %18, align 8, !tbaa !143 %258 = getelementptr inbounds nuw i8, ptr %.sroa.012.1.i.i, i64 40 %259 = load ptr, ptr %258, align 8, !tbaa !261 @@ -19974,7 +19965,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_.exit.i29: ; preds = store i64 0, ptr %310, align 8, !tbaa !15 store i8 0, ptr %309, align 1, !tbaa !14 %311 = load i32, ptr %243, align 8, !tbaa !143 - store i32 %311, ptr %239, align 8, !tbaa !143 + store i32 %311, ptr %242, align 8, !tbaa !143 %312 = getelementptr inbounds i8, ptr %.sroa.0.0.pn.i.i, i64 -80 %313 = load ptr, ptr %262, align 8, !tbaa !158 %.not5.i.i47 = icmp eq ptr %313, null diff --git a/bench/wasmtime-rs/optimized/yijsgxkf5yj6ls1.ll b/bench/wasmtime-rs/optimized/yijsgxkf5yj6ls1.ll index 96ffbcb828d..6eb191771a9 100644 --- a/bench/wasmtime-rs/optimized/yijsgxkf5yj6ls1.ll +++ b/bench/wasmtime-rs/optimized/yijsgxkf5yj6ls1.ll @@ -742,8 +742,6 @@ define hidden void @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$6resize17ha8b63f23e43f6130E" br i1 %17, label %.lr.ph.i, label %._crit_edge.thread.i .lr.ph.i: ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h0dd776e98067f090E.exit.i" - %18 = add i64 %8, -1 - %19 = add i64 %18, %13 %switch = icmp eq i8 %.sroa.0.0.copyload, 7 br label %20 @@ -764,9 +762,14 @@ define hidden void @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$6resize17ha8b63f23e43f6130E" "_ZN71_$LT$cranelift_codegen..ir..pcc..Fact$u20$as$u20$core..clone..Clone$GT$5clone17h6e7d016d1ebd55c4E.exit.i.i": ; preds = %20 br label %"_ZN68_$LT$core..option..Option$LT$T$GT$$u20$as$u20$core..clone..Clone$GT$5clone17heef0267abda4737fE.exit.i" -._crit_edge.thread.i: ; preds = %"_ZN68_$LT$core..option..Option$LT$T$GT$$u20$as$u20$core..clone..Clone$GT$5clone17heef0267abda4737fE.exit.i", %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h0dd776e98067f090E.exit.i" - %.0.lcssa57.i = phi ptr [ %16, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h0dd776e98067f090E.exit.i" ], [ %23, %"_ZN68_$LT$core..option..Option$LT$T$GT$$u20$as$u20$core..clone..Clone$GT$5clone17heef0267abda4737fE.exit.i" ] - %storemerge.lcssa56.i = phi i64 [ %13, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h0dd776e98067f090E.exit.i" ], [ %19, %"_ZN68_$LT$core..option..Option$LT$T$GT$$u20$as$u20$core..clone..Clone$GT$5clone17heef0267abda4737fE.exit.i" ] +._crit_edge.thread.i: ; preds = %"_ZN68_$LT$core..option..Option$LT$T$GT$$u20$as$u20$core..clone..Clone$GT$5clone17heef0267abda4737fE.exit.i" + %20 = add i64 %8, -1 + %21 = add i64 %20, %13 + br label %._crit_edge.thread.i + +._crit_edge.thread.i: ; preds = %._crit_edge.thread.i.loopexit, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h0dd776e98067f090E.exit.i" + %.0.lcssa57.i = phi ptr [ %16, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h0dd776e98067f090E.exit.i" ], [ %23, %._crit_edge.thread.i.loopexit ] + %storemerge.lcssa56.i = phi i64 [ %13, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h0dd776e98067f090E.exit.i" ], [ %21, %._crit_edge.thread.i.loopexit ] store i8 %.sroa.0.0.copyload, ptr %.0.lcssa57.i, align 8 %.sroa.5.0..0.lcssa57.i.sroa_idx = getelementptr inbounds nuw i8, ptr %.0.lcssa57.i, i64 1 store i8 %.sroa.5.0.copyload, ptr %.sroa.5.0..0.lcssa57.i.sroa_idx, align 1 @@ -788,14 +791,14 @@ define hidden void @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$6resize17ha8b63f23e43f6130E" br label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$8truncate17h8b07dfd81abea041E.llvm.1718329805141733722.exit" "_ZN68_$LT$core..option..Option$LT$T$GT$$u20$as$u20$core..clone..Clone$GT$5clone17heef0267abda4737fE.exit.i": ; preds = %20, %"_ZN71_$LT$cranelift_codegen..ir..pcc..Fact$u20$as$u20$core..clone..Clone$GT$5clone17h6e7d016d1ebd55c4E.exit.i.i" - %.sroa.11.1.i = phi i32 [ %.sroa.11.022.i, %20 ], [ %.sroa.13.0.copyload, %"_ZN71_$LT$cranelift_codegen..ir..pcc..Fact$u20$as$u20$core..clone..Clone$GT$5clone17h6e7d016d1ebd55c4E.exit.i.i" ] - %.sroa.10.1.i = phi i32 [ %.sroa.10.023.i, %20 ], [ %.sroa.12.0.copyload, %"_ZN71_$LT$cranelift_codegen..ir..pcc..Fact$u20$as$u20$core..clone..Clone$GT$5clone17h6e7d016d1ebd55c4E.exit.i.i" ] - %.sroa.9.1.i = phi i64 [ %.sroa.9.024.i, %20 ], [ %.sroa.11.0.copyload, %"_ZN71_$LT$cranelift_codegen..ir..pcc..Fact$u20$as$u20$core..clone..Clone$GT$5clone17h6e7d016d1ebd55c4E.exit.i.i" ] - %.sroa.8.1.i = phi i64 [ %.sroa.8.025.i, %20 ], [ %.sroa.8.0.copyload, %"_ZN71_$LT$cranelift_codegen..ir..pcc..Fact$u20$as$u20$core..clone..Clone$GT$5clone17h6e7d016d1ebd55c4E.exit.i.i" ] - %.sroa.7.1.i = phi i32 [ %.sroa.7.026.i, %20 ], [ %.sroa.7.0.copyload, %"_ZN71_$LT$cranelift_codegen..ir..pcc..Fact$u20$as$u20$core..clone..Clone$GT$5clone17h6e7d016d1ebd55c4E.exit.i.i" ] - %.sroa.6.1.i = phi i16 [ %.sroa.6.027.i, %20 ], [ %.sroa.6.0.copyload, %"_ZN71_$LT$cranelift_codegen..ir..pcc..Fact$u20$as$u20$core..clone..Clone$GT$5clone17h6e7d016d1ebd55c4E.exit.i.i" ] - %.sroa.517.1.i = phi i8 [ %.sroa.517.028.i, %20 ], [ %.sroa.5.0.copyload, %"_ZN71_$LT$cranelift_codegen..ir..pcc..Fact$u20$as$u20$core..clone..Clone$GT$5clone17h6e7d016d1ebd55c4E.exit.i.i" ] - %.sroa.12.1.i = phi i64 [ %.sroa.12.029.i, %20 ], [ %.sroa.14.0.copyload, %"_ZN71_$LT$cranelift_codegen..ir..pcc..Fact$u20$as$u20$core..clone..Clone$GT$5clone17h6e7d016d1ebd55c4E.exit.i.i" ] + %.sroa.11.1.i = phi i32 [ %.sroa.11.022.i, %18 ], [ %.sroa.13.0.copyload, %"_ZN71_$LT$cranelift_codegen..ir..pcc..Fact$u20$as$u20$core..clone..Clone$GT$5clone17h6e7d016d1ebd55c4E.exit.i.i" ] + %.sroa.10.1.i = phi i32 [ %.sroa.10.023.i, %18 ], [ %.sroa.12.0.copyload, %"_ZN71_$LT$cranelift_codegen..ir..pcc..Fact$u20$as$u20$core..clone..Clone$GT$5clone17h6e7d016d1ebd55c4E.exit.i.i" ] + %.sroa.9.1.i = phi i64 [ %.sroa.9.024.i, %18 ], [ %.sroa.11.0.copyload, %"_ZN71_$LT$cranelift_codegen..ir..pcc..Fact$u20$as$u20$core..clone..Clone$GT$5clone17h6e7d016d1ebd55c4E.exit.i.i" ] + %.sroa.8.1.i = phi i64 [ %.sroa.8.025.i, %18 ], [ %.sroa.8.0.copyload, %"_ZN71_$LT$cranelift_codegen..ir..pcc..Fact$u20$as$u20$core..clone..Clone$GT$5clone17h6e7d016d1ebd55c4E.exit.i.i" ] + %.sroa.7.1.i = phi i32 [ %.sroa.7.026.i, %18 ], [ %.sroa.7.0.copyload, %"_ZN71_$LT$cranelift_codegen..ir..pcc..Fact$u20$as$u20$core..clone..Clone$GT$5clone17h6e7d016d1ebd55c4E.exit.i.i" ] + %.sroa.6.1.i = phi i16 [ %.sroa.6.027.i, %18 ], [ %.sroa.6.0.copyload, %"_ZN71_$LT$cranelift_codegen..ir..pcc..Fact$u20$as$u20$core..clone..Clone$GT$5clone17h6e7d016d1ebd55c4E.exit.i.i" ] + %.sroa.517.1.i = phi i8 [ %.sroa.517.028.i, %18 ], [ %.sroa.5.0.copyload, %"_ZN71_$LT$cranelift_codegen..ir..pcc..Fact$u20$as$u20$core..clone..Clone$GT$5clone17h6e7d016d1ebd55c4E.exit.i.i" ] + %.sroa.12.1.i = phi i64 [ %.sroa.12.029.i, %18 ], [ %.sroa.14.0.copyload, %"_ZN71_$LT$cranelift_codegen..ir..pcc..Fact$u20$as$u20$core..clone..Clone$GT$5clone17h6e7d016d1ebd55c4E.exit.i.i" ] store i8 %.sroa.0.0.copyload, ptr %.032.i, align 8, !noalias !111 %.sroa.517.0..0.sroa_idx.i = getelementptr inbounds nuw i8, ptr %.032.i, i64 1 store i8 %.sroa.517.1.i, ptr %.sroa.517.0..0.sroa_idx.i, align 1, !noalias !111 diff --git a/bench/wireshark/optimized/packet-cops.ll b/bench/wireshark/optimized/packet-cops.ll index e535d1bbcdb..ddaca59b70f 100644 --- a/bench/wireshark/optimized/packet-cops.ll +++ b/bench/wireshark/optimized/packet-cops.ll @@ -2475,23 +2475,24 @@ define internal fastcc void @dissect_cops_pr_objects(ptr noundef %0, ptr noundef %98 = shl nuw nsw i64 %97, 2 %99 = call noalias ptr @wmem_alloc(ptr noundef %95, i64 noundef %98) #10 store ptr %99, ptr %11, align 8 - %100 = zext i32 %.035.lcssa.i.i to i64 - %101 = getelementptr i32, ptr %99, i64 %100 - %102 = zext i32 %91 to i64 - %103 = getelementptr i32, ptr %101, i64 %102 %.not57.i.i = icmp eq i32 %91, 0 br i1 %.not57.i.i, label %._crit_edge49.i.i, label %.lr.ph48.preheader.i.i .lr.ph48.preheader.i.i: ; preds = %._crit_edge.i.i - %104 = shl nuw nsw i64 %102, 2 - call void @llvm.memcpy.p0.p0.i64(ptr align 4 %99, ptr nonnull readonly align 4 %88, i64 %104, i1 false) + %100 = zext i32 %91 to i64 + %101 = shl nuw nsw i64 %100, 2 + call void @llvm.memcpy.p0.p0.i64(ptr align 4 %99, ptr nonnull readonly align 4 %88, i64 %101, i1 false) br label %._crit_edge49.i.i ._crit_edge49.i.i: ; preds = %.lr.ph48.preheader.i.i, %._crit_edge.i.i + %.pre-phi.i.i = phi i64 [ %100, %.lr.ph48.preheader.i.i ], [ 0, %._crit_edge.i.i ] + %102 = zext i32 %.035.lcssa.i.i to i64 + %103 = getelementptr i32, ptr %99, i64 %102 + %104 = getelementptr i32, ptr %103, i64 %.pre-phi.i.i br i1 %.not56.i.i, label %redecode_oid.exit.i, label %.lr.ph54.preheader.i.i .lr.ph54.preheader.i.i: ; preds = %._crit_edge49.i.i - %105 = getelementptr i32, ptr %99, i64 %102 + %105 = getelementptr i32, ptr %99, i64 %.pre-phi.i.i %wide.trip.count66.i.i = zext i32 %89 to i64 br label %.lr.ph54.i.i @@ -2509,7 +2510,7 @@ define internal fastcc void @dissect_cops_pr_objects(ptr noundef %0, ptr noundef br i1 %.not.i.i, label %112, label %117 112: ; preds = %.lr.ph54.i.i - %113 = icmp ult ptr %.03751.i.i, %103 + %113 = icmp ult ptr %.03751.i.i, %104 br i1 %113, label %115, label %114 114: ; preds = %112 diff --git a/bench/wireshark/optimized/packet-smb.ll b/bench/wireshark/optimized/packet-smb.ll index 61a1518aced..f33e4d6a992 100644 --- a/bench/wireshark/optimized/packet-smb.ll +++ b/bench/wireshark/optimized/packet-smb.ll @@ -22722,9 +22722,8 @@ define internal fastcc i32 @TimeZoneFaster(i64 noundef range(i64 -2147483648, 64 %41 = getelementptr inbounds nuw i8, ptr %39, i64 8 store i64 %.050, ptr %41, align 8 store i64 %.050, ptr %39, align 8 - %42 = add i64 %.050, 15768000 - %43 = icmp sgt i64 %.050, -9223372036839011409 - br i1 %43, label %.lr.ph64.preheader, label %.preheader + %42 = icmp sgt i64 %.050, -9223372036839011409 + br i1 %42, label %.lr.ph64.preheader, label %.preheader .lr.ph64.preheader: ; preds = %35 %44 = add i64 %.050, -15768000 @@ -22740,7 +22739,11 @@ define internal fastcc i32 @TimeZoneFaster(i64 noundef range(i64 -2147483648, 64 %46 = phi i64 [ %.pre72, %.preheader.loopexit ], [ %.050, %35 ] %47 = add i64 %.050, 15764400 %48 = icmp sgt i64 %47, %46 - br i1 %48, label %.lr.ph66, label %.loopexit + br i1 %48, label %.lr.ph66.preheader, label %.loopexit + +.lr.ph66.preheader: ; preds = %.preheader + %48 = add i64 %.050, 15768000 + br label %.lr.ph66 .lr.ph64: ; preds = %.lr.ph64.preheader, %62 %49 = phi i64 [ %63, %62 ], [ %.050, %.lr.ph64.preheader ] @@ -22781,9 +22784,9 @@ define internal fastcc i32 @TimeZoneFaster(i64 noundef range(i64 -2147483648, 64 %65 = icmp slt i64 %64, %63 br i1 %65, label %.lr.ph64, label %.preheader.loopexit, !llvm.loop !28 -.lr.ph66: ; preds = %.preheader, %79 - %66 = phi i64 [ %80, %79 ], [ %46, %.preheader ] - %.065 = phi i64 [ %.1, %79 ], [ %42, %.preheader ] +.lr.ph66: ; preds = %.lr.ph66.preheader, %79 + %66 = phi i64 [ %80, %79 ], [ %46, %.lr.ph66.preheader ] + %.065 = phi i64 [ %.1, %79 ], [ %48, %.lr.ph66.preheader ] %67 = sub i64 %.065, %66 %68 = icmp sgt i64 %67, 1209600 br i1 %68, label %69, label %71 diff --git a/bench/wireshark/optimized/to_str.ll b/bench/wireshark/optimized/to_str.ll index 2be45aa1717..812b8477009 100644 --- a/bench/wireshark/optimized/to_str.ll +++ b/bench/wireshark/optimized/to_str.ll @@ -631,14 +631,10 @@ declare void @display_epoch_time(ptr noundef, i64 noundef, ptr noundef, i32 noun ; Function Attrs: null_pointer_is_valid sspstrong uwtable define noalias noundef ptr @decode_bits_in_field(ptr noundef %0, i32 noundef %1, i32 noundef %2, i64 noundef %3, i32 noundef %4) local_unnamed_addr #0 { - %6 = tail call i32 @llvm.smin.i32(i32 %2, i32 64) - %7 = add i32 %6, -1 - %8 = zext nneg i32 %7 to i64 - %9 = shl nuw i64 1, %8 - %10 = add i32 %1, %2 - %11 = sub i32 0, %10 + %6 = add i32 %1, %2 + %7 = sub i32 0, %6 %.not71 = icmp slt i32 %4, 0 - %.0.in = select i1 %.not71, i32 %11, i32 %1 + %.0.in = select i1 %.not71, i32 %7, i32 %1 %.0 = and i32 %.0.in, 7 %12 = tail call noalias dereferenceable_or_null(320) ptr @wmem_alloc0(ptr noundef %0, i64 noundef 320) #9 %.not = icmp eq i32 %.0, 0 @@ -646,8 +642,15 @@ define noalias noundef ptr @decode_bits_in_field(ptr noundef %0, i32 noundef %1, .preheader72: ; preds = %19, %5 %.054.lcssa = phi i32 [ 0, %5 ], [ %22, %19 ] - %13 = icmp sgt i32 %2, 0 - br i1 %13, label %.lr.ph80, label %.preheader + %9 = tail call i32 @llvm.smin.i32(i32 %2, i32 64) + %10 = icmp sgt i32 %2, 0 + br i1 %10, label %.lr.ph80.preheader, label %.preheader + +.lr.ph80.preheader: ; preds = %.preheader72 + %11 = add nsw i32 %9, -1 + %12 = zext nneg i32 %11 to i64 + %13 = shl nuw i64 1, %12 + br label %.lr.ph80 .lr.ph: ; preds = %5, %19 %.05474 = phi i32 [ %22, %19 ], [ 0, %5 ] @@ -676,7 +679,7 @@ define noalias noundef ptr @decode_bits_in_field(ptr noundef %0, i32 noundef %1, br i1 %exitcond.not, label %.preheader72, label %.lr.ph, !llvm.loop !6 .preheader.loopexit: ; preds = %37 - %24 = add nuw nsw i32 %6, %.0 + %24 = add nuw nsw i32 %9, %.0 br label %.preheader .preheader: ; preds = %.preheader.loopexit, %.preheader72 @@ -686,11 +689,11 @@ define noalias noundef ptr @decode_bits_in_field(ptr noundef %0, i32 noundef %1, %.not5883 = icmp eq i32 %25, 0 br i1 %.not5883, label %._crit_edge, label %.lr.ph86 -.lr.ph80: ; preds = %.preheader72, %37 - %.05279 = phi i64 [ %42, %37 ], [ %9, %.preheader72 ] - %.05378 = phi i32 [ %43, %37 ], [ 0, %.preheader72 ] - %.277 = phi i32 [ %.5, %37 ], [ %.054.lcssa, %.preheader72 ] - %.15676 = phi i32 [ %38, %37 ], [ %.0, %.preheader72 ] +.lr.ph80: ; preds = %.lr.ph80.preheader, %37 + %.05279 = phi i64 [ %42, %37 ], [ %13, %.lr.ph80.preheader ] + %.05378 = phi i32 [ %43, %37 ], [ 0, %.lr.ph80.preheader ] + %.277 = phi i32 [ %.5, %37 ], [ %.054.lcssa, %.lr.ph80.preheader ] + %.15676 = phi i32 [ %38, %37 ], [ %.0, %.lr.ph80.preheader ] %.not61 = icmp ne i32 %.15676, 0 %26 = and i32 %.15676, 3 %.not62 = icmp eq i32 %26, 0 @@ -730,7 +733,7 @@ define noalias noundef ptr @decode_bits_in_field(ptr noundef %0, i32 noundef %1, %.5 = add i32 %.4, 1 %42 = lshr i64 %.05279, 1 %43 = add nuw nsw i32 %.05378, 1 - %exitcond89.not = icmp eq i32 %43, %6 + %exitcond89.not = icmp eq i32 %43, %9 br i1 %exitcond89.not, label %.preheader.loopexit, label %.lr.ph80, !llvm.loop !8 .lr.ph86: ; preds = %.preheader, %49 diff --git a/bench/wolfssl/optimized/pwdbased.ll b/bench/wolfssl/optimized/pwdbased.ll index 978980f28e5..203d11de032 100644 --- a/bench/wolfssl/optimized/pwdbased.ll +++ b/bench/wolfssl/optimized/pwdbased.ll @@ -475,14 +475,18 @@ define i32 @wc_PKCS12_PBKDF_ex(ptr noundef writeonly captures(address_is_null) % %.0124 = phi ptr [ %12, %34 ], [ %48, %46 ] %51 = zext nneg i32 %.fr145 to i64 %52 = getelementptr inbounds nuw i8, ptr %.0124, i64 %51 - %53 = zext i32 %38 to i64 - %54 = getelementptr inbounds nuw i8, ptr %52, i64 %53 - %55 = trunc i32 %8 to i8 - call void @llvm.memset.p0.i64(ptr nonnull align 1 %.0124, i8 %55, i64 %51, i1 false) + %53 = trunc i32 %8 to i8 + call void @llvm.memset.p0.i64(ptr nonnull align 1 %.0124, i8 %53, i64 %51, i1 false) %.not190 = icmp eq i32 %36, %37 - br i1 %.not190, label %.preheader175, label %.lr.ph + br i1 %.not190, label %.preheader175, label %.lr.ph.preheader + +.lr.ph.preheader: ; preds = %50 + %54 = zext i32 %38 to i64 + br label %.lr.ph .preheader175: ; preds = %.lr.ph, %50 + %.pre-phi = phi i64 [ 0, %50 ], [ %54, %.lr.ph ] + %55 = getelementptr inbounds nuw i8, ptr %52, i64 %.pre-phi %.not191 = icmp eq i32 %40, %41 br i1 %.not191, label %.preheader173, label %.lr.ph178.preheader @@ -490,8 +494,8 @@ define i32 @wc_PKCS12_PBKDF_ex(ptr noundef writeonly captures(address_is_null) % %56 = zext i32 %42 to i64 br label %.lr.ph178 -.lr.ph: ; preds = %50, %.lr.ph - %indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph ], [ 0, %50 ] +.lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph + %indvars.iv = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next, %.lr.ph ] %57 = trunc nuw i64 %indvars.iv to i32 %58 = urem i32 %57, %4 %59 = zext nneg i32 %58 to i64 @@ -500,7 +504,7 @@ define i32 @wc_PKCS12_PBKDF_ex(ptr noundef writeonly captures(address_is_null) % %62 = getelementptr inbounds nuw i8, ptr %52, i64 %indvars.iv store i8 %61, ptr %62, align 1, !tbaa !11 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %63 = icmp samesign ult i64 %indvars.iv.next, %53 + %63 = icmp samesign ult i64 %indvars.iv.next, %54 br i1 %63, label %.lr.ph, label %.preheader175, !llvm.loop !14 .preheader173: ; preds = %.lr.ph178, %.preheader175 @@ -520,15 +524,15 @@ define i32 @wc_PKCS12_PBKDF_ex(ptr noundef writeonly captures(address_is_null) % %68 = zext nneg i32 %67 to i64 %69 = getelementptr inbounds nuw i8, ptr %1, i64 %68 %70 = load i8, ptr %69, align 1, !tbaa !11 - %71 = getelementptr inbounds nuw i8, ptr %54, i64 %indvars.iv195 + %71 = getelementptr inbounds nuw i8, ptr %55, i64 %indvars.iv195 store i8 %70, ptr %71, align 1, !tbaa !11 %indvars.iv.next196 = add nuw nsw i64 %indvars.iv195, 1 %72 = icmp samesign ult i64 %indvars.iv.next196, %56 br i1 %72, label %.lr.ph178, label %.preheader173, !llvm.loop !15 73: ; preds = %.lr.ph186, %.thread159.thread218 - %.0119185 = phi ptr [ %0, %.lr.ph186 ], [ %137, %.thread159.thread218 ] - %.0122184 = phi i32 [ %6, %.lr.ph186 ], [ %138, %.thread159.thread218 ] + %.0119185 = phi ptr [ %0, %.lr.ph186 ], [ %137, %.thread159.thread219 ] + %.0122184 = phi i32 [ %6, %.lr.ph186 ], [ %138, %.thread159.thread219 ] call void @llvm.lifetime.start.p0(ptr nonnull %11) %74 = call i32 @wc_HashTypeConvert(i32 noundef %7) #6 %75 = call i32 @wc_HashInit(ptr noundef nonnull %11, i32 noundef %74) #6 @@ -700,7 +704,7 @@ DoPKCS12Hash.exit: ; preds = %73, %._crit_edge.i br label %.thread164 .thread164: ; preds = %.thread159.thread218, %DoPKCS12Hash.exit, %.thread164.sink.split, %.preheader173 - %.1127 = phi i32 [ %.fr145, %.preheader173 ], [ %.1127.ph, %.thread164.sink.split ], [ %.5220, %.thread159.thread218 ], [ %.0.i, %DoPKCS12Hash.exit ] + %.1127 = phi i32 [ %.fr145, %.preheader173 ], [ %.1127.ph, %.thread164.sink.split ], [ %.5220, %.thread159.thread219 ], [ %.0.i, %DoPKCS12Hash.exit ] br i1 %45, label %141, label %140 140: ; preds = %.thread164 diff --git a/bench/xgboost/optimized/version.ll b/bench/xgboost/optimized/version.ll index 4ea0c4bb8f8..286bf0613af 100644 --- a/bench/xgboost/optimized/version.ll +++ b/bench/xgboost/optimized/version.ll @@ -1270,16 +1270,11 @@ define void @_ZN7xgboost7Version4SaveEPNS_4JsonE(ptr noundef readonly captures(n call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %3, i8 0, i64 24, i1 false) %25 = getelementptr inbounds nuw i8, ptr %4, i64 24 %26 = invoke noalias noundef nonnull dereferenceable(24) ptr @_Znwm(i64 noundef 24) #35 - to label %.noexc unwind label %117 + to label %.lr.ph.i.i.i.i.i.i unwind label %117 -.noexc: ; preds = %20 - %27 = getelementptr inbounds nuw i8, ptr %26, i64 24 - %28 = getelementptr inbounds nuw i8, ptr %3, i64 16 - br label %.lr.ph.i.i.i.i.i.i - -.lr.ph.i.i.i.i.i.i: ; preds = %_ZSt10_ConstructIN7xgboost4JsonEJRKS1_EEvPT_DpOT0_.exit.i.i.i.i.i.i, %.noexc - %.015.i.i.i.i.i.i = phi ptr [ %33, %_ZSt10_ConstructIN7xgboost4JsonEJRKS1_EEvPT_DpOT0_.exit.i.i.i.i.i.i ], [ %26, %.noexc ] - %.01214.i.i.i.i.i.i.idx = phi i64 [ %.01214.i.i.i.i.i.i.add, %_ZSt10_ConstructIN7xgboost4JsonEJRKS1_EEvPT_DpOT0_.exit.i.i.i.i.i.i ], [ 0, %.noexc ] +.noexc: ; preds = %20, %_ZSt10_ConstructIN7xgboost4JsonEJRKS1_EEvPT_DpOT0_.exit.i.i.i.i.i.i + %.015.i.i.i.i.i.i = phi ptr [ %31, %_ZSt10_ConstructIN7xgboost4JsonEJRKS1_EEvPT_DpOT0_.exit.i.i.i.i.i.i ], [ %26, %20 ] + %.01214.i.i.i.i.i.i.idx = phi i64 [ %.01214.i.i.i.i.i.i.add, %_ZSt10_ConstructIN7xgboost4JsonEJRKS1_EEvPT_DpOT0_.exit.i.i.i.i.i.i ], [ 0, %20 ] %.01214.i.i.i.i.i.i.ptr = getelementptr inbounds nuw i8, ptr %4, i64 %.01214.i.i.i.i.i.i.idx %29 = load ptr, ptr %.01214.i.i.i.i.i.i.ptr, align 8, !tbaa !3 store ptr %29, ptr %.015.i.i.i.i.i.i, align 8, !tbaa !3 @@ -1298,6 +1293,8 @@ _ZSt10_ConstructIN7xgboost4JsonEJRKS1_EEvPT_DpOT0_.exit.i.i.i.i.i.i: ; preds = % br i1 %.not.i.i.i.i.i.i, label %._crit_edge.i.i, label %.lr.ph.i.i.i.i.i.i, !llvm.loop !54 ._crit_edge.i.i: ; preds = %_ZSt10_ConstructIN7xgboost4JsonEJRKS1_EEvPT_DpOT0_.exit.i.i.i.i.i.i + %32 = getelementptr inbounds nuw i8, ptr %26, i64 24 + %33 = getelementptr inbounds nuw i8, ptr %3, i64 16 %34 = getelementptr inbounds nuw i8, ptr %3, i64 8 %35 = getelementptr inbounds nuw i8, ptr %2, i64 8 store i32 0, ptr %35, align 8, !tbaa !45 @@ -1309,7 +1306,7 @@ _ZSt10_ConstructIN7xgboost4JsonEJRKS1_EEvPT_DpOT0_.exit.i.i.i.i.i.i: ; preds = % %38 = getelementptr inbounds nuw i8, ptr %2, i64 32 store ptr %33, ptr %38, align 8, !tbaa !23 %39 = getelementptr inbounds nuw i8, ptr %2, i64 40 - store ptr %27, ptr %39, align 8, !tbaa !55 + store ptr %32, ptr %39, align 8, !tbaa !55 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %3, i8 0, i64 24, i1 false) call void @llvm.lifetime.start.p0(ptr nonnull %5) %40 = getelementptr inbounds nuw i8, ptr %5, i64 16 @@ -1455,7 +1452,7 @@ _ZSt8_DestroyIPN7xgboost4JsonES1_EvT_S3_RSaIT0_E.exit.i: ; preds = %_ZSt8_Destro br i1 %.not.i.i.i, label %_ZNSt6vectorIN7xgboost4JsonESaIS1_EED2Ev.exit.preheader, label %95 95: ; preds = %_ZSt8_DestroyIPN7xgboost4JsonES1_EvT_S3_RSaIT0_E.exit.i - %96 = load ptr, ptr %28, align 8, !tbaa !55 + %96 = load ptr, ptr %33, align 8, !tbaa !55 %97 = ptrtoint ptr %96 to i64 %98 = ptrtoint ptr %94 to i64 %99 = sub i64 %97, %98 diff --git a/bench/yalantinglibs/optimized/test_messages_proto3.pb.ll b/bench/yalantinglibs/optimized/test_messages_proto3.pb.ll index ad5b51f2cf5..d7c85a138c6 100644 --- a/bench/yalantinglibs/optimized/test_messages_proto3.pb.ll +++ b/bench/yalantinglibs/optimized/test_messages_proto3.pb.ll @@ -52190,11 +52190,14 @@ if.end254: ; preds = %for.end234, %for.en %total_size.17 = phi i64 [ %add253, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit656 ], [ %total_size.16.lcssa, %for.end247 ], [ %total_size.16.lcssa, %for.end234 ] %_repeated_nested_enum_cached_byte_size_ = getelementptr inbounds nuw i8, ptr %this, i64 440 store atomic i32 %conv.i657.pre-phi, ptr %_repeated_nested_enum_cached_byte_size_ monotonic, align 8 - %add257 = add i64 %total_size.17, %data_size235.0.lcssa3502 %repeated_foreign_enum_.i = getelementptr inbounds nuw i8, ptr %this, i64 448 %call.i658 = tail call noundef i32 @_ZNK6google8protobuf13RepeatedFieldIiE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %repeated_foreign_enum_.i) %cmp2633098.not = icmp eq i32 %call.i658, 0 - br i1 %cmp2633098.not, label %if.end277, label %for.body264 + br i1 %cmp2633098.not, label %for.end270.thread, label %for.body264 + +for.end270.thread: ; preds = %if.end254 + %add2573505 = add i64 %total_size.17, %data_size235.0.lcssa3502 + br label %if.end277 for.body264: ; preds = %if.end254, %_ZN6google8protobuf8internal14WireFormatLite8EnumSizeEi.exit670 %data_size258.03100 = phi i64 [ %add267, %_ZN6google8protobuf8internal14WireFormatLite8EnumSizeEi.exit670 ], [ 0, %if.end254 ] @@ -52222,6 +52225,7 @@ _ZN6google8protobuf8internal14WireFormatLite8EnumSizeEi.exit670: ; preds = %for. br i1 %exitcond3297.not, label %for.end270, label %for.body264, !llvm.loop !601 for.end270: ; preds = %_ZN6google8protobuf8internal14WireFormatLite8EnumSizeEi.exit670 + %add257 = add i64 %total_size.17, %data_size235.0.lcssa3502 %cmp271.not = icmp eq i64 %add267, 0 br i1 %cmp271.not, label %if.end277, label %if.then272 @@ -52246,10 +52250,10 @@ _ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit680: ; preds = %if. %add276 = add i64 %retval.0.i.i679, %add257 br label %if.end277 -if.end277: ; preds = %if.end254, %for.end270, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit680 - %data_size258.0.lcssa3506 = phi i64 [ %add267, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit680 ], [ 0, %for.end270 ], [ 0, %if.end254 ] - %conv.i681.pre-phi = phi i32 [ %conv273, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit680 ], [ 0, %for.end270 ], [ 0, %if.end254 ] - %total_size.18 = phi i64 [ %add276, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit680 ], [ %add257, %for.end270 ], [ %add257, %if.end254 ] +if.end277: ; preds = %for.end270, %for.end270.thread, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit680 + %data_size258.0.lcssa3506 = phi i64 [ %add267, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit680 ], [ 0, %for.end270.thread ], [ 0, %for.end270 ] + %conv.i681.pre-phi = phi i32 [ %conv273, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit680 ], [ 0, %for.end270.thread ], [ 0, %for.end270 ] + %total_size.18 = phi i64 [ %add276, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit680 ], [ %add2573505, %for.end270.thread ], [ %add257, %for.end270 ] %_repeated_foreign_enum_cached_byte_size_ = getelementptr inbounds nuw i8, ptr %this, i64 464 store atomic i32 %conv.i681.pre-phi, ptr %_repeated_foreign_enum_cached_byte_size_ monotonic, align 8 %add280 = add i64 %total_size.18, %data_size258.0.lcssa3506 @@ -54651,11 +54655,14 @@ if.end866: ; preds = %_ZN6google8protobuf %total_size.52 = phi i64 [ %add865, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1689 ], [ %add854, %if.end851 ] %_packed_bool_cached_byte_size_ = getelementptr inbounds nuw i8, ptr %this, i64 2648 store atomic i32 %call.i1679, ptr %_packed_bool_cached_byte_size_ monotonic, align 8 - %add869 = add i64 %total_size.52, %conv858 %packed_nested_enum_.i = getelementptr inbounds nuw i8, ptr %this, i64 2656 %call.i1691 = call noundef i32 @_ZNK6google8protobuf13RepeatedFieldIiE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %packed_nested_enum_.i) %cmp8753167.not = icmp eq i32 %call.i1691, 0 - br i1 %cmp8753167.not, label %if.end889, label %for.body876 + br i1 %cmp8753167.not, label %for.end882.thread, label %for.body876 + +for.end882.thread: ; preds = %if.end866 + %add8693511 = add i64 %total_size.52, %conv858 + br label %if.end889 for.body876: ; preds = %if.end866, %_ZN6google8protobuf8internal14WireFormatLite8EnumSizeEi.exit1703 %data_size870.03169 = phi i64 [ %add879, %_ZN6google8protobuf8internal14WireFormatLite8EnumSizeEi.exit1703 ], [ 0, %if.end866 ] @@ -54683,6 +54690,7 @@ _ZN6google8protobuf8internal14WireFormatLite8EnumSizeEi.exit1703: ; preds = %for br i1 %exitcond3300.not, label %for.end882, label %for.body876, !llvm.loop !794 for.end882: ; preds = %_ZN6google8protobuf8internal14WireFormatLite8EnumSizeEi.exit1703 + %add869 = add i64 %total_size.52, %conv858 %cmp883.not = icmp eq i64 %add879, 0 br i1 %cmp883.not, label %if.end889, label %if.then884 @@ -54707,71 +54715,51 @@ _ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1713: ; preds = %if %add888 = add i64 %retval.0.i.i1712, %add869 br label %if.end889 -if.end889: ; preds = %if.end866, %for.end882, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1713 - %data_size870.0.lcssa3510 = phi i64 [ %add879, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1713 ], [ 0, %for.end882 ], [ 0, %if.end866 ] - %conv.i1714.pre-phi = phi i32 [ %conv885, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1713 ], [ 0, %for.end882 ], [ 0, %if.end866 ] - %total_size.53 = phi i64 [ %add888, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1713 ], [ %add869, %for.end882 ], [ %add869, %if.end866 ] +if.end889: ; preds = %for.end882, %for.end882.thread, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1713 + %data_size870.0.lcssa3510 = phi i64 [ %add879, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1713 ], [ 0, %for.end882.thread ], [ 0, %for.end882 ] + %conv.i1714.pre-phi = phi i32 [ %conv885, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1713 ], [ 0, %for.end882.thread ], [ 0, %for.end882 ] + %total_size.53 = phi i64 [ %add888, %_ZN6google8protobuf8internal14WireFormatLite9Int32SizeEi.exit1713 ], [ %add8693511, %for.end882.thread ], [ %add869, %for.end882 ] %_packed_nested_enum_cached_byte_size_ = getelementptr inbounds nuw i8, ptr %this, i64 2672 store atomic i32 %conv.i1714.pre-phi, ptr %_packed_nested_enum_cached_byte_size_ monotonic, align 8 %unpacked_int32_ = getelementptr inbounds nuw i8, ptr %this, i64 2680 %call894 = call noundef i64 @_ZN6google8protobuf8internal14WireFormatLite9Int32SizeERKNS0_13RepeatedFieldIiEE(ptr noundef nonnull align 8 dereferenceable(16) %unpacked_int32_) %call.i1715 = call noundef i32 @_ZNK6google8protobuf13RepeatedFieldIiE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %unpacked_int32_) - %conv.i1716 = zext i32 %call.i1715 to i64 %unpacked_int64_ = getelementptr inbounds nuw i8, ptr %this, i64 2696 %call901 = call noundef i64 @_ZN6google8protobuf8internal14WireFormatLite9Int64SizeERKNS0_13RepeatedFieldIlEE(ptr noundef nonnull align 8 dereferenceable(16) %unpacked_int64_) %call.i1717 = call noundef i32 @_ZNK6google8protobuf13RepeatedFieldIlE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %unpacked_int64_) - %conv.i1718 = zext i32 %call.i1717 to i64 %unpacked_uint32_ = getelementptr inbounds nuw i8, ptr %this, i64 2712 %call908 = call noundef i64 @_ZN6google8protobuf8internal14WireFormatLite10UInt32SizeERKNS0_13RepeatedFieldIjEE(ptr noundef nonnull align 8 dereferenceable(16) %unpacked_uint32_) %call.i1719 = call noundef i32 @_ZNK6google8protobuf13RepeatedFieldIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %unpacked_uint32_) - %conv.i1720 = zext i32 %call.i1719 to i64 %unpacked_uint64_ = getelementptr inbounds nuw i8, ptr %this, i64 2728 %call915 = call noundef i64 @_ZN6google8protobuf8internal14WireFormatLite10UInt64SizeERKNS0_13RepeatedFieldImEE(ptr noundef nonnull align 8 dereferenceable(16) %unpacked_uint64_) %call.i1721 = call noundef i32 @_ZNK6google8protobuf13RepeatedFieldImE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %unpacked_uint64_) - %conv.i1722 = zext i32 %call.i1721 to i64 %unpacked_sint32_ = getelementptr inbounds nuw i8, ptr %this, i64 2744 %call922 = call noundef i64 @_ZN6google8protobuf8internal14WireFormatLite10SInt32SizeERKNS0_13RepeatedFieldIiEE(ptr noundef nonnull align 8 dereferenceable(16) %unpacked_sint32_) %call.i1723 = call noundef i32 @_ZNK6google8protobuf13RepeatedFieldIiE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %unpacked_sint32_) - %conv.i1724 = zext i32 %call.i1723 to i64 %unpacked_sint64_ = getelementptr inbounds nuw i8, ptr %this, i64 2760 %call929 = call noundef i64 @_ZN6google8protobuf8internal14WireFormatLite10SInt64SizeERKNS0_13RepeatedFieldIlEE(ptr noundef nonnull align 8 dereferenceable(16) %unpacked_sint64_) %call.i1725 = call noundef i32 @_ZNK6google8protobuf13RepeatedFieldIlE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %unpacked_sint64_) - %conv.i1726 = zext i32 %call.i1725 to i64 %unpacked_fixed32_.i = getelementptr inbounds nuw i8, ptr %this, i64 2776 %call.i1727 = call noundef i32 @_ZNK6google8protobuf13RepeatedFieldIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %unpacked_fixed32_.i) - %conv938 = zext i32 %call.i1727 to i64 %call.i1729 = call noundef i32 @_ZNK6google8protobuf13RepeatedFieldIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %unpacked_fixed32_.i) - %conv.i1730 = zext i32 %call.i1729 to i64 %unpacked_fixed64_.i = getelementptr inbounds nuw i8, ptr %this, i64 2792 %call.i1731 = call noundef i32 @_ZNK6google8protobuf13RepeatedFieldImE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %unpacked_fixed64_.i) - %conv948 = zext i32 %call.i1731 to i64 %call.i1733 = call noundef i32 @_ZNK6google8protobuf13RepeatedFieldImE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %unpacked_fixed64_.i) - %conv.i1734 = zext i32 %call.i1733 to i64 %unpacked_sfixed32_.i = getelementptr inbounds nuw i8, ptr %this, i64 2808 %call.i1735 = call noundef i32 @_ZNK6google8protobuf13RepeatedFieldIiE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %unpacked_sfixed32_.i) - %conv958 = zext i32 %call.i1735 to i64 %call.i1737 = call noundef i32 @_ZNK6google8protobuf13RepeatedFieldIiE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %unpacked_sfixed32_.i) - %conv.i1738 = zext i32 %call.i1737 to i64 %unpacked_sfixed64_.i = getelementptr inbounds nuw i8, ptr %this, i64 2824 %call.i1739 = call noundef i32 @_ZNK6google8protobuf13RepeatedFieldIlE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %unpacked_sfixed64_.i) - %conv968 = zext i32 %call.i1739 to i64 %call.i1741 = call noundef i32 @_ZNK6google8protobuf13RepeatedFieldIlE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %unpacked_sfixed64_.i) - %conv.i1742 = zext i32 %call.i1741 to i64 %unpacked_float_.i = getelementptr inbounds nuw i8, ptr %this, i64 2840 %call.i1743 = call noundef i32 @_ZNK6google8protobuf13RepeatedFieldIfE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %unpacked_float_.i) - %conv978 = zext i32 %call.i1743 to i64 %call.i1745 = call noundef i32 @_ZNK6google8protobuf13RepeatedFieldIfE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %unpacked_float_.i) - %conv.i1746 = zext i32 %call.i1745 to i64 %unpacked_double_.i = getelementptr inbounds nuw i8, ptr %this, i64 2856 %call.i1747 = call noundef i32 @_ZNK6google8protobuf13RepeatedFieldIdE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %unpacked_double_.i) - %conv988 = zext i32 %call.i1747 to i64 %call.i1749 = call noundef i32 @_ZNK6google8protobuf13RepeatedFieldIdE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %unpacked_double_.i) - %conv.i1750 = zext i32 %call.i1749 to i64 %unpacked_bool_.i = getelementptr inbounds nuw i8, ptr %this, i64 2872 %call.i1751 = call noundef i32 @_ZNK6google8protobuf13RepeatedFieldIbE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %unpacked_bool_.i) - %conv998 = zext i32 %call.i1751 to i64 %call.i1753 = call noundef i32 @_ZNK6google8protobuf13RepeatedFieldIbE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %unpacked_bool_.i) - %conv.i1754 = zext i32 %call.i1753 to i64 %unpacked_nested_enum_.i = getelementptr inbounds nuw i8, ptr %this, i64 2888 %call.i1755 = call noundef i32 @_ZNK6google8protobuf13RepeatedFieldIiE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %unpacked_nested_enum_.i) %cmp10103171.not = icmp eq i32 %call.i1755, 0 @@ -54804,6 +54792,26 @@ _ZN6google8protobuf8internal14WireFormatLite8EnumSizeEi.exit1767: ; preds = %for for.end1017: ; preds = %_ZN6google8protobuf8internal14WireFormatLite8EnumSizeEi.exit1767, %if.end889 %data_size1005.0.lcssa = phi i64 [ 0, %if.end889 ], [ %add1014, %_ZN6google8protobuf8internal14WireFormatLite8EnumSizeEi.exit1767 ] + %conv.i1716 = zext i32 %call.i1715 to i64 + %conv.i1718 = zext i32 %call.i1717 to i64 + %conv.i1720 = zext i32 %call.i1719 to i64 + %conv.i1722 = zext i32 %call.i1721 to i64 + %conv.i1724 = zext i32 %call.i1723 to i64 + %conv.i1726 = zext i32 %call.i1725 to i64 + %conv938 = zext i32 %call.i1727 to i64 + %conv.i1730 = zext i32 %call.i1729 to i64 + %conv948 = zext i32 %call.i1731 to i64 + %conv.i1734 = zext i32 %call.i1733 to i64 + %conv958 = zext i32 %call.i1735 to i64 + %conv.i1738 = zext i32 %call.i1737 to i64 + %conv968 = zext i32 %call.i1739 to i64 + %conv.i1742 = zext i32 %call.i1741 to i64 + %conv978 = zext i32 %call.i1743 to i64 + %conv.i1746 = zext i32 %call.i1745 to i64 + %conv988 = zext i32 %call.i1747 to i64 + %conv.i1750 = zext i32 %call.i1749 to i64 + %conv998 = zext i32 %call.i1751 to i64 + %conv.i1754 = zext i32 %call.i1753 to i64 %conv1018 = zext i32 %call.i1755 to i64 %current_size_.i.i.i1768 = getelementptr inbounds nuw i8, ptr %this, i64 2912 %423 = load i32, ptr %current_size_.i.i.i1768, align 8 @@ -127313,8 +127321,8 @@ if.then: ; preds = %entry %scevgep = getelementptr i8, ptr %__first, i64 8 br label %for.body.i -for.body.i: ; preds = %for.inc.i, %if.then - %__i.015.i.idx = phi i64 [ 8, %if.then ], [ %__i.015.i.add, %for.inc.i ] +for.body.i: ; preds = %if.then, %for.inc.i + %__i.015.i.idx = phi i64 [ %__i.015.i.add, %for.inc.i ], [ 8, %for.body.i.preheader ] %__i.015.i.ptr = getelementptr inbounds nuw i8, ptr %__first, i64 %__i.015.i.idx %0 = load ptr, ptr %__i.015.i.ptr, align 8 %1 = load ptr, ptr %__first, align 8 @@ -128019,8 +128027,8 @@ if.then: ; preds = %entry %scevgep = getelementptr i8, ptr %__first, i64 8 br label %for.body.i -for.body.i: ; preds = %for.inc.i, %if.then - %__i.015.i.idx = phi i64 [ 8, %if.then ], [ %__i.015.i.add, %for.inc.i ] +for.body.i: ; preds = %if.then, %for.inc.i + %__i.015.i.idx = phi i64 [ %__i.015.i.add, %for.inc.i ], [ 8, %for.body.i.preheader ] %__i.015.i.ptr = getelementptr inbounds nuw i8, ptr %__first, i64 %__i.015.i.idx %0 = load ptr, ptr %__i.015.i.ptr, align 8 %1 = load ptr, ptr %__first, align 8 @@ -128725,8 +128733,8 @@ if.then: ; preds = %entry %scevgep = getelementptr i8, ptr %__first, i64 8 br label %for.body.i -for.body.i: ; preds = %for.inc.i, %if.then - %__i.015.i.idx = phi i64 [ 8, %if.then ], [ %__i.015.i.add, %for.inc.i ] +for.body.i: ; preds = %if.then, %for.inc.i + %__i.015.i.idx = phi i64 [ %__i.015.i.add, %for.inc.i ], [ 8, %for.body.i.preheader ] %__i.015.i.ptr = getelementptr inbounds nuw i8, ptr %__first, i64 %__i.015.i.idx %0 = load ptr, ptr %__i.015.i.ptr, align 8 %1 = load ptr, ptr %__first, align 8 @@ -129431,8 +129439,8 @@ if.then: ; preds = %entry %scevgep = getelementptr i8, ptr %__first, i64 8 br label %for.body.i -for.body.i: ; preds = %for.inc.i, %if.then - %__i.015.i.idx = phi i64 [ 8, %if.then ], [ %__i.015.i.add, %for.inc.i ] +for.body.i: ; preds = %if.then, %for.inc.i + %__i.015.i.idx = phi i64 [ %__i.015.i.add, %for.inc.i ], [ 8, %for.body.i.preheader ] %__i.015.i.ptr = getelementptr inbounds nuw i8, ptr %__first, i64 %__i.015.i.idx %0 = load ptr, ptr %__i.015.i.ptr, align 8 %1 = load ptr, ptr %__first, align 8 @@ -130137,8 +130145,8 @@ if.then: ; preds = %entry %scevgep = getelementptr i8, ptr %__first, i64 8 br label %for.body.i -for.body.i: ; preds = %for.inc.i, %if.then - %__i.015.i.idx = phi i64 [ 8, %if.then ], [ %__i.015.i.add, %for.inc.i ] +for.body.i: ; preds = %if.then, %for.inc.i + %__i.015.i.idx = phi i64 [ %__i.015.i.add, %for.inc.i ], [ 8, %for.body.i.preheader ] %__i.015.i.ptr = getelementptr inbounds nuw i8, ptr %__first, i64 %__i.015.i.idx %0 = load ptr, ptr %__i.015.i.ptr, align 8 %1 = load ptr, ptr %__first, align 8 diff --git a/bench/yosys/optimized/mutate.ll b/bench/yosys/optimized/mutate.ll index 111c6ab2f5e..ac8277bcc20 100644 --- a/bench/yosys/optimized/mutate.ll +++ b/bench/yosys/optimized/mutate.ll @@ -9568,8 +9568,8 @@ _ZNSt6vectorIiSaIiEE5clearEv.exit.i1453: ; preds = %417 _ZSt22__uninitialized_move_aIPiS0_SaIiEET0_T_S3_S2_RT1_.exit69.thread.i1762: ; preds = %468 %.idx.i.i.i.i.i.i1752 = shl nuw nsw i64 %469, 2 - call void @llvm.memset.p0.i64(ptr align 4 %461, i8 -1, i64 %.idx.i.i.i.i.i.i1752, i1 false), !tbaa !63 %474 = getelementptr inbounds nuw i8, ptr %461, i64 %.idx.i.i.i.i.i.i1752 + call void @llvm.memset.p0.i64(ptr align 4 %461, i8 -1, i64 %.idx.i.i.i.i.i.i1752, i1 false), !tbaa !63 store ptr %474, ptr %70, align 8, !tbaa !188 br label %_ZNSt6vectorIiSaIiEE6resizeEmRKi.exit.i1454 @@ -10132,8 +10132,8 @@ _ZNSt6vectorIiSaIiEE5clearEv.exit.i: ; preds = %642 _ZSt22__uninitialized_move_aIPiS0_SaIiEET0_T_S3_S2_RT1_.exit69.thread.i: ; preds = %692 %.idx.i.i.i.i.i.i = shl nuw nsw i64 %693, 2 - call void @llvm.memset.p0.i64(ptr align 4 %685, i8 -1, i64 %.idx.i.i.i.i.i.i, i1 false), !tbaa !63 %698 = getelementptr inbounds nuw i8, ptr %685, i64 %.idx.i.i.i.i.i.i + call void @llvm.memset.p0.i64(ptr align 4 %685, i8 -1, i64 %.idx.i.i.i.i.i.i, i1 false), !tbaa !63 store ptr %698, ptr %79, align 8, !tbaa !188 br label %_ZNSt6vectorIiSaIiEE6resizeEmRKi.exit.i @@ -10748,8 +10748,8 @@ _ZNSt6vectorIiSaIiEE5clearEv.exit.i1248: ; preds = %892 _ZSt22__uninitialized_move_aIPiS0_SaIiEET0_T_S3_S2_RT1_.exit69.thread.i1490: ; preds = %943 %.idx.i.i.i.i.i.i1480 = shl nuw nsw i64 %944, 2 - call void @llvm.memset.p0.i64(ptr align 4 %936, i8 -1, i64 %.idx.i.i.i.i.i.i1480, i1 false), !tbaa !63 %949 = getelementptr inbounds nuw i8, ptr %936, i64 %.idx.i.i.i.i.i.i1480 + call void @llvm.memset.p0.i64(ptr align 4 %936, i8 -1, i64 %.idx.i.i.i.i.i.i1480, i1 false), !tbaa !63 store ptr %949, ptr %70, align 8, !tbaa !188 br label %_ZNSt6vectorIiSaIiEE6resizeEmRKi.exit.i1249 @@ -12368,8 +12368,8 @@ _ZNSt6vectorIiSaIiEE5clearEv.exit.i1297: ; preds = %.loopexit2044 _ZSt22__uninitialized_move_aIPiS0_SaIiEET0_T_S3_S2_RT1_.exit69.thread.i1554: ; preds = %1697 %.idx.i.i.i.i.i.i1544 = shl nuw nsw i64 %1698, 2 - call void @llvm.memset.p0.i64(ptr align 4 %1690, i8 -1, i64 %.idx.i.i.i.i.i.i1544, i1 false), !tbaa !63 %1703 = getelementptr inbounds nuw i8, ptr %1690, i64 %.idx.i.i.i.i.i.i1544 + call void @llvm.memset.p0.i64(ptr align 4 %1690, i8 -1, i64 %.idx.i.i.i.i.i.i1544, i1 false), !tbaa !63 store ptr %1703, ptr %108, align 8, !tbaa !188 br label %_ZNSt6vectorIiSaIiEE6resizeEmRKi.exit.i1298 @@ -12809,8 +12809,8 @@ _ZNSt6vectorIiSaIiEE5clearEv.exit.i1321: ; preds = %1847 _ZSt22__uninitialized_move_aIPiS0_SaIiEET0_T_S3_S2_RT1_.exit69.thread.i1606: ; preds = %1897 %.idx.i.i.i.i.i.i1596 = shl nuw nsw i64 %1898, 2 - call void @llvm.memset.p0.i64(ptr align 4 %1890, i8 -1, i64 %.idx.i.i.i.i.i.i1596, i1 false), !tbaa !63 %1903 = getelementptr inbounds nuw i8, ptr %1890, i64 %.idx.i.i.i.i.i.i1596 + call void @llvm.memset.p0.i64(ptr align 4 %1890, i8 -1, i64 %.idx.i.i.i.i.i.i1596, i1 false), !tbaa !63 store ptr %1903, ptr %70, align 8, !tbaa !188 br label %_ZNSt6vectorIiSaIiEE6resizeEmRKi.exit.i1322 @@ -13222,8 +13222,8 @@ _ZNSt6vectorIiSaIiEE5clearEv.exit.i1125: ; preds = %2037 _ZSt22__uninitialized_move_aIPiS0_SaIiEET0_T_S3_S2_RT1_.exit69.thread.i1358: ; preds = %2089 %.idx.i.i.i.i.i.i1348 = shl nuw nsw i64 %2090, 2 - call void @llvm.memset.p0.i64(ptr align 4 %2082, i8 -1, i64 %.idx.i.i.i.i.i.i1348, i1 false), !tbaa !63 %2095 = getelementptr inbounds nuw i8, ptr %2082, i64 %.idx.i.i.i.i.i.i1348 + call void @llvm.memset.p0.i64(ptr align 4 %2082, i8 -1, i64 %.idx.i.i.i.i.i.i1348, i1 false), !tbaa !63 store ptr %2095, ptr %79, align 8, !tbaa !188 br label %_ZNSt6vectorIiSaIiEE6resizeEmRKi.exit.i1126 @@ -13722,8 +13722,8 @@ _ZNSt6vectorIiSaIiEE5clearEv.exit.i1399: ; preds = %.loopexit2040 _ZSt22__uninitialized_move_aIPiS0_SaIiEET0_T_S3_S2_RT1_.exit69.thread.i1658: ; preds = %2307 %.idx.i.i.i.i.i.i1648 = shl nuw nsw i64 %2308, 2 - call void @llvm.memset.p0.i64(ptr align 4 %2300, i8 -1, i64 %.idx.i.i.i.i.i.i1648, i1 false), !tbaa !63 %2313 = getelementptr inbounds nuw i8, ptr %2300, i64 %.idx.i.i.i.i.i.i1648 + call void @llvm.memset.p0.i64(ptr align 4 %2300, i8 -1, i64 %.idx.i.i.i.i.i.i1648, i1 false), !tbaa !63 store ptr %2313, ptr %108, align 8, !tbaa !188 br label %_ZNSt6vectorIiSaIiEE6resizeEmRKi.exit.i1400 @@ -14215,8 +14215,8 @@ _ZNSt6vectorIiSaIiEE5clearEv.exit.i1426: ; preds = %.loopexit2036 _ZSt22__uninitialized_move_aIPiS0_SaIiEET0_T_S3_S2_RT1_.exit69.thread.i1710: ; preds = %2533 %.idx.i.i.i.i.i.i1700 = shl nuw nsw i64 %2534, 2 - call void @llvm.memset.p0.i64(ptr align 4 %2526, i8 -1, i64 %.idx.i.i.i.i.i.i1700, i1 false), !tbaa !63 %2539 = getelementptr inbounds nuw i8, ptr %2526, i64 %.idx.i.i.i.i.i.i1700 + call void @llvm.memset.p0.i64(ptr align 4 %2526, i8 -1, i64 %.idx.i.i.i.i.i.i1700, i1 false), !tbaa !63 store ptr %2539, ptr %123, align 8, !tbaa !188 br label %_ZNSt6vectorIiSaIiEE6resizeEmRKi.exit.i1427 @@ -25563,8 +25563,8 @@ _ZNSt6vectorIiSaIiEE5clearEv.exit.i950: ; preds = %1775, %1772 _ZSt22__uninitialized_move_aIPiS0_SaIiEET0_T_S3_S2_RT1_.exit69.thread.i1138: ; preds = %1810 %.idx.i.i.i.i.i.i1128 = shl nuw nsw i64 %1811, 2 - call void @llvm.memset.p0.i64(ptr align 4 %1803, i8 -1, i64 %.idx.i.i.i.i.i.i1128, i1 false), !tbaa !63 %1816 = getelementptr inbounds nuw i8, ptr %1803, i64 %.idx.i.i.i.i.i.i1128 + call void @llvm.memset.p0.i64(ptr align 4 %1803, i8 -1, i64 %.idx.i.i.i.i.i.i1128, i1 false), !tbaa !63 store ptr %1816, ptr %132, align 8, !tbaa !188 br label %_ZNSt6vectorIiSaIiEE6resizeEmRKi.exit.i953 @@ -26170,8 +26170,8 @@ _ZNSt6vectorIiSaIiEE5clearEv.exit.i: ; preds = %2025, %_ZNSt6vector _ZSt22__uninitialized_move_aIPiS0_SaIiEET0_T_S3_S2_RT1_.exit69.thread.i: ; preds = %2061 %.idx.i.i.i.i.i.i = shl nuw nsw i64 %2062, 2 - call void @llvm.memset.p0.i64(ptr align 4 %2054, i8 -1, i64 %.idx.i.i.i.i.i.i, i1 false), !tbaa !63 %2067 = getelementptr inbounds nuw i8, ptr %2054, i64 %.idx.i.i.i.i.i.i + call void @llvm.memset.p0.i64(ptr align 4 %2054, i8 -1, i64 %.idx.i.i.i.i.i.i, i1 false), !tbaa !63 store ptr %2067, ptr %132, align 8, !tbaa !188 br label %_ZNSt6vectorIiSaIiEE6resizeEmRKi.exit.i @@ -27129,8 +27129,8 @@ _ZNSt6vectorIiSaIiEE5clearEv.exit.i1179: ; preds = %.loopexit1642 _ZSt22__uninitialized_move_aIPiS0_SaIiEET0_T_S3_S2_RT1_.exit69.thread.i1315: ; preds = %2434 %.idx.i.i.i.i.i.i1305 = shl nuw nsw i64 %2435, 2 - call void @llvm.memset.p0.i64(ptr align 4 %2427, i8 -1, i64 %.idx.i.i.i.i.i.i1305, i1 false), !tbaa !63 %2440 = getelementptr inbounds nuw i8, ptr %2427, i64 %.idx.i.i.i.i.i.i1305 + call void @llvm.memset.p0.i64(ptr align 4 %2427, i8 -1, i64 %.idx.i.i.i.i.i.i1305, i1 false), !tbaa !63 store ptr %2440, ptr %165, align 8, !tbaa !188 br label %_ZNSt6vectorIiSaIiEE6resizeEmRKi.exit.i1180 @@ -27525,8 +27525,8 @@ _ZNSt6vectorIiSaIiEE5clearEv.exit.i1196: ; preds = %.loopexit1640 _ZSt22__uninitialized_move_aIPiS0_SaIiEET0_T_S3_S2_RT1_.exit69.thread.i1367: ; preds = %2628 %.idx.i.i.i.i.i.i1357 = shl nuw nsw i64 %2629, 2 - call void @llvm.memset.p0.i64(ptr align 4 %2621, i8 -1, i64 %.idx.i.i.i.i.i.i1357, i1 false), !tbaa !63 %2634 = getelementptr inbounds nuw i8, ptr %2621, i64 %.idx.i.i.i.i.i.i1357 + call void @llvm.memset.p0.i64(ptr align 4 %2621, i8 -1, i64 %.idx.i.i.i.i.i.i1357, i1 false), !tbaa !63 store ptr %2634, ptr %165, align 8, !tbaa !188 br label %_ZNSt6vectorIiSaIiEE6resizeEmRKi.exit.i1197 @@ -28114,8 +28114,8 @@ _ZNSt6vectorIiSaIiEE5clearEv.exit.i1223: ; preds = %.loopexit1638 _ZSt22__uninitialized_move_aIPiS0_SaIiEET0_T_S3_S2_RT1_.exit69.thread.i1419: ; preds = %2892 %.idx.i.i.i.i.i.i1409 = shl nuw nsw i64 %2893, 2 - call void @llvm.memset.p0.i64(ptr align 4 %2885, i8 -1, i64 %.idx.i.i.i.i.i.i1409, i1 false), !tbaa !63 %2898 = getelementptr inbounds nuw i8, ptr %2885, i64 %.idx.i.i.i.i.i.i1409 + call void @llvm.memset.p0.i64(ptr align 4 %2885, i8 -1, i64 %.idx.i.i.i.i.i.i1409, i1 false), !tbaa !63 store ptr %2898, ptr %165, align 8, !tbaa !188 br label %_ZNSt6vectorIiSaIiEE6resizeEmRKi.exit.i1224 @@ -28508,8 +28508,8 @@ _ZNSt6vectorIiSaIiEE5clearEv.exit.i1250: ; preds = %.loopexit _ZSt22__uninitialized_move_aIPiS0_SaIiEET0_T_S3_S2_RT1_.exit69.thread.i1471: ; preds = %3087 %.idx.i.i.i.i.i.i1461 = shl nuw nsw i64 %3088, 2 - call void @llvm.memset.p0.i64(ptr align 4 %3080, i8 -1, i64 %.idx.i.i.i.i.i.i1461, i1 false), !tbaa !63 %3093 = getelementptr inbounds nuw i8, ptr %3080, i64 %.idx.i.i.i.i.i.i1461 + call void @llvm.memset.p0.i64(ptr align 4 %3080, i8 -1, i64 %.idx.i.i.i.i.i.i1461, i1 false), !tbaa !63 store ptr %3093, ptr %165, align 8, !tbaa !188 br label %_ZNSt6vectorIiSaIiEE6resizeEmRKi.exit.i1251 @@ -47536,8 +47536,8 @@ _ZNSt6vectorIiSaIiEE5clearEv.exit.i.i.i.i.i: ; preds = %55, %_ZNSt6vectorIN _ZSt22__uninitialized_move_aIPiS0_SaIiEET0_T_S3_S2_RT1_.exit69.thread.i.i.i.i.i: ; preds = %90 %.idx.i.i.i.i.i.i.i.i.i.i = shl nuw nsw i64 %91, 2 - tail call void @llvm.memset.p0.i64(ptr align 4 %83, i8 -1, i64 %.idx.i.i.i.i.i.i.i.i.i.i, i1 false), !tbaa !63 %97 = getelementptr inbounds nuw i8, ptr %83, i64 %.idx.i.i.i.i.i.i.i.i.i.i + tail call void @llvm.memset.p0.i64(ptr align 4 %83, i8 -1, i64 %.idx.i.i.i.i.i.i.i.i.i.i, i1 false), !tbaa !63 store ptr %97, ptr %56, align 8, !tbaa !188 br label %_ZNSt6vectorIiSaIiEE6resizeEmRKi.exit.i.i.i.i.i @@ -49155,8 +49155,8 @@ _ZNSt6vectorIiSaIiEE5clearEv.exit.i.i.i.i.i: ; preds = %58, %_ZNSt6vectorIN _ZSt22__uninitialized_move_aIPiS0_SaIiEET0_T_S3_S2_RT1_.exit69.thread.i.i.i.i.i: ; preds = %93 %.idx.i.i.i.i.i.i.i.i.i.i = shl nuw nsw i64 %94, 2 - tail call void @llvm.memset.p0.i64(ptr align 4 %86, i8 -1, i64 %.idx.i.i.i.i.i.i.i.i.i.i, i1 false), !tbaa !63 %100 = getelementptr inbounds nuw i8, ptr %86, i64 %.idx.i.i.i.i.i.i.i.i.i.i + tail call void @llvm.memset.p0.i64(ptr align 4 %86, i8 -1, i64 %.idx.i.i.i.i.i.i.i.i.i.i, i1 false), !tbaa !63 store ptr %100, ptr %59, align 8, !tbaa !188 br label %_ZNSt6vectorIiSaIiEE6resizeEmRKi.exit.i.i.i.i.i @@ -51004,8 +51004,8 @@ _ZNSt6vectorIiSaIiEE5clearEv.exit.i.i.i.i.i: ; preds = %64, %_ZNSt6vectorIN _ZSt22__uninitialized_move_aIPiS0_SaIiEET0_T_S3_S2_RT1_.exit69.thread.i.i.i.i.i: ; preds = %99 %.idx.i.i.i.i.i.i.i.i.i.i = shl nuw nsw i64 %100, 2 - call void @llvm.memset.p0.i64(ptr align 4 %92, i8 -1, i64 %.idx.i.i.i.i.i.i.i.i.i.i, i1 false), !tbaa !63 %106 = getelementptr inbounds nuw i8, ptr %92, i64 %.idx.i.i.i.i.i.i.i.i.i.i + call void @llvm.memset.p0.i64(ptr align 4 %92, i8 -1, i64 %.idx.i.i.i.i.i.i.i.i.i.i, i1 false), !tbaa !63 store ptr %106, ptr %65, align 8, !tbaa !188 br label %_ZNSt6vectorIiSaIiEE6resizeEmRKi.exit.i.i.i.i.i @@ -53035,14 +53035,10 @@ _ZN9__gnu_cxx5__ops15_Iter_comp_iterIZN5Yosys7hashlib4poolINSt7__cxx1112basic_st %.0.i.i.i.i.i.i.i = phi i32 [ %36, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i.i.i.i ], [ %.0.i6.i.i.i.i.i.i.i, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.thread.i.i.i.i.i.i.i ] %38 = icmp slt i32 %.0.i.i.i.i.i.i.i, 0 %39 = getelementptr inbounds nuw i8, ptr %.sroa.019.1.i.i, i64 40 - br i1 %38, label %30, label %.preheader.i.i.preheader, !llvm.loop !696 - -.preheader.i.i.preheader: ; preds = %_ZN9__gnu_cxx5__ops15_Iter_comp_iterIZN5Yosys7hashlib4poolINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS3_8hash_opsISA_EEE4sortISt4lessISA_EEEvT_EUlRKNSD_7entry_tESK_E_EclINS_17__normal_iteratorIPSI_St6vectorISI_SaISI_EEEEST_EEbSH_T0_.exit.i.i - %40 = getelementptr inbounds nuw i8, ptr %.sroa.019.1.i.i, i64 8 - br label %.preheader.i.i + br i1 %38, label %30, label %.preheader.i.i, !llvm.loop !696 -.preheader.i.i: ; preds = %.preheader.i.i.preheader, %_ZN9__gnu_cxx5__ops15_Iter_comp_iterIZN5Yosys7hashlib4poolINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS3_8hash_opsISA_EEE4sortISt4lessISA_EEEvT_EUlRKNSD_7entry_tESK_E_EclINS_17__normal_iteratorIPSI_St6vectorISI_SaISI_EEEEST_EEbSH_T0_.exit16.i.i - %.sroa.0.0.pn.i.i = phi ptr [ %.sroa.0.1.i.i, %_ZN9__gnu_cxx5__ops15_Iter_comp_iterIZN5Yosys7hashlib4poolINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS3_8hash_opsISA_EEE4sortISt4lessISA_EEEvT_EUlRKNSD_7entry_tESK_E_EclINS_17__normal_iteratorIPSI_St6vectorISI_SaISI_EEEEST_EEbSH_T0_.exit16.i.i ], [ %.sroa.0.0.i.i, %.preheader.i.i.preheader ] +.preheader.i.i: ; preds = %_ZN9__gnu_cxx5__ops15_Iter_comp_iterIZN5Yosys7hashlib4poolINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS3_8hash_opsISA_EEE4sortISt4lessISA_EEEvT_EUlRKNSD_7entry_tESK_E_EclINS_17__normal_iteratorIPSI_St6vectorISI_SaISI_EEEEST_EEbSH_T0_.exit.i.i, %_ZN9__gnu_cxx5__ops15_Iter_comp_iterIZN5Yosys7hashlib4poolINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS3_8hash_opsISA_EEE4sortISt4lessISA_EEEvT_EUlRKNSD_7entry_tESK_E_EclINS_17__normal_iteratorIPSI_St6vectorISI_SaISI_EEEEST_EEbSH_T0_.exit16.i.i + %.sroa.0.0.pn.i.i = phi ptr [ %.sroa.0.1.i.i, %_ZN9__gnu_cxx5__ops15_Iter_comp_iterIZN5Yosys7hashlib4poolINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS3_8hash_opsISA_EEE4sortISt4lessISA_EEEvT_EUlRKNSD_7entry_tESK_E_EclINS_17__normal_iteratorIPSI_St6vectorISI_SaISI_EEEEST_EEbSH_T0_.exit16.i.i ], [ %.sroa.0.0.i.i, %_ZN9__gnu_cxx5__ops15_Iter_comp_iterIZN5Yosys7hashlib4poolINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS3_8hash_opsISA_EEE4sortISt4lessISA_EEEvT_EUlRKNSD_7entry_tESK_E_EclINS_17__normal_iteratorIPSI_St6vectorISI_SaISI_EEEEST_EEbSH_T0_.exit.i.i ] %.sroa.0.1.i.i = getelementptr inbounds i8, ptr %.sroa.0.0.pn.i.i, i64 -40 %41 = getelementptr inbounds i8, ptr %.sroa.0.0.pn.i.i, i64 -32 %42 = load i64, ptr %41, align 8, !tbaa !31 @@ -53070,6 +53066,7 @@ _ZN9__gnu_cxx5__ops15_Iter_comp_iterIZN5Yosys7hashlib4poolINSt7__cxx1112basic_st br i1 %48, label %.preheader.i.i, label %49, !llvm.loop !697 49: ; preds = %_ZN9__gnu_cxx5__ops15_Iter_comp_iterIZN5Yosys7hashlib4poolINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS3_8hash_opsISA_EEE4sortISt4lessISA_EEEvT_EUlRKNSD_7entry_tESK_E_EclINS_17__normal_iteratorIPSI_St6vectorISI_SaISI_EEEEST_EEbSH_T0_.exit16.i.i + %49 = getelementptr inbounds nuw i8, ptr %.sroa.019.1.i.i, i64 8 %50 = getelementptr inbounds i8, ptr %.sroa.0.0.pn.i.i, i64 -32 %51 = icmp ult ptr %.sroa.019.1.i.i, %.sroa.0.1.i.i br i1 %51, label %52, label %_ZSt27__unguarded_partition_pivotIN9__gnu_cxx17__normal_iteratorIPN5Yosys7hashlib4poolINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS3_8hash_opsISA_EEE7entry_tESt6vectorISE_SaISE_EEEENS0_5__ops15_Iter_comp_iterIZNSD_4sortISt4lessISA_EEEvT_EUlRKSE_SR_E_EEESP_SP_SP_T0_.exit @@ -53093,14 +53090,14 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i store ptr %53, ptr %4, align 8, !tbaa !54 %59 = load i64, ptr %54, align 8, !tbaa !32 store i64 %59, ptr %13, align 8, !tbaa !32 - %.pre.i = load i64, ptr %40, align 8, !tbaa !31 + %.pre.i = load i64, ptr %49, align 8, !tbaa !31 br label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i4.i _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i4.i: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i, %56 %60 = phi i64 [ %.pre.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i ], [ %32, %56 ] store i64 %60, ptr %14, align 8, !tbaa !31 store ptr %54, ptr %.sroa.019.1.i.i, align 8, !tbaa !54 - store i64 0, ptr %40, align 8, !tbaa !31 + store i64 0, ptr %49, align 8, !tbaa !31 store i8 0, ptr %54, align 8, !tbaa !32 %61 = getelementptr inbounds nuw i8, ptr %.sroa.019.1.i.i, i64 32 %62 = load i32, ptr %61, align 8, !tbaa !238 @@ -53130,7 +53127,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i4. _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit.i.i.i: ; preds = %71, %69, %66 %72 = load i64, ptr %50, align 8, !tbaa !31 - store i64 %72, ptr %40, align 8, !tbaa !31 + store i64 %72, ptr %49, align 8, !tbaa !31 %73 = getelementptr inbounds nuw i8, ptr %54, i64 %72 store i8 0, ptr %73, align 1, !tbaa !32 %.pre.i.i.i = load ptr, ptr %.sroa.0.1.i.i, align 8, !tbaa !54 @@ -53139,7 +53136,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit.i.i.i: 74: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i4.i store ptr %63, ptr %.sroa.019.1.i.i, align 8, !tbaa !54 %75 = load i64, ptr %50, align 8, !tbaa !31 - store i64 %75, ptr %40, align 8, !tbaa !31 + store i64 %75, ptr %49, align 8, !tbaa !31 %76 = load i64, ptr %64, align 8, !tbaa !32 store i64 %76, ptr %54, align 8, !tbaa !32 store ptr %64, ptr %.sroa.0.1.i.i, align 8, !tbaa !54 diff --git a/bench/yosys/optimized/register.ll b/bench/yosys/optimized/register.ll index 4d06030635f..036ff6ac5d7 100644 --- a/bench/yosys/optimized/register.ll +++ b/bench/yosys/optimized/register.ll @@ -86256,12 +86256,8 @@ _ZN9__gnu_cxx5__ops15_Iter_comp_iterIZN5Yosys7hashlib4dictINSt7__cxx1112basic_st %43 = getelementptr inbounds nuw i8, ptr %.sroa.019.1.i.i, i64 64 br i1 %42, label %34, label %.preheader.i.i.preheader, !llvm.loop !537 -.preheader.i.i.preheader: ; preds = %_ZN9__gnu_cxx5__ops15_Iter_comp_iterIZN5Yosys7hashlib4dictINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISA_SaISA_EENS3_8hash_opsISA_EEE4sortISt4lessISA_EEEvT_EUlRKNSG_7entry_tESN_E_EclINS_17__normal_iteratorIPSL_SB_ISL_SaISL_EEEESV_EEbSK_T0_.exit.i.i - %44 = getelementptr inbounds nuw i8, ptr %.sroa.019.1.i.i, i64 8 - br label %.preheader.i.i - -.preheader.i.i: ; preds = %.preheader.i.i.preheader, %_ZN9__gnu_cxx5__ops15_Iter_comp_iterIZN5Yosys7hashlib4dictINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISA_SaISA_EENS3_8hash_opsISA_EEE4sortISt4lessISA_EEEvT_EUlRKNSG_7entry_tESN_E_EclINS_17__normal_iteratorIPSL_SB_ISL_SaISL_EEEESV_EEbSK_T0_.exit16.i.i - %.sroa.0.0.pn.i.i = phi ptr [ %.sroa.0.1.i.i, %_ZN9__gnu_cxx5__ops15_Iter_comp_iterIZN5Yosys7hashlib4dictINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISA_SaISA_EENS3_8hash_opsISA_EEE4sortISt4lessISA_EEEvT_EUlRKNSG_7entry_tESN_E_EclINS_17__normal_iteratorIPSL_SB_ISL_SaISL_EEEESV_EEbSK_T0_.exit16.i.i ], [ %.sroa.0.0.i.i, %.preheader.i.i.preheader ] +.preheader.i.i.preheader: ; preds = %_ZN9__gnu_cxx5__ops15_Iter_comp_iterIZN5Yosys7hashlib4dictINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISA_SaISA_EENS3_8hash_opsISA_EEE4sortISt4lessISA_EEEvT_EUlRKNSG_7entry_tESN_E_EclINS_17__normal_iteratorIPSL_SB_ISL_SaISL_EEEESV_EEbSK_T0_.exit.i.i, %_ZN9__gnu_cxx5__ops15_Iter_comp_iterIZN5Yosys7hashlib4dictINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISA_SaISA_EENS3_8hash_opsISA_EEE4sortISt4lessISA_EEEvT_EUlRKNSG_7entry_tESN_E_EclINS_17__normal_iteratorIPSL_SB_ISL_SaISL_EEEESV_EEbSK_T0_.exit16.i.i + %.sroa.0.0.pn.i.i = phi ptr [ %.sroa.0.1.i.i, %_ZN9__gnu_cxx5__ops15_Iter_comp_iterIZN5Yosys7hashlib4dictINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISA_SaISA_EENS3_8hash_opsISA_EEE4sortISt4lessISA_EEEvT_EUlRKNSG_7entry_tESN_E_EclINS_17__normal_iteratorIPSL_SB_ISL_SaISL_EEEESV_EEbSK_T0_.exit16.i.i ], [ %.sroa.0.0.i.i, %_ZN9__gnu_cxx5__ops15_Iter_comp_iterIZN5Yosys7hashlib4dictINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISA_SaISA_EENS3_8hash_opsISA_EEE4sortISt4lessISA_EEEvT_EUlRKNSG_7entry_tESN_E_EclINS_17__normal_iteratorIPSL_SB_ISL_SaISL_EEEESV_EEbSK_T0_.exit.i.i ] %.sroa.0.1.i.i = getelementptr inbounds i8, ptr %.sroa.0.0.pn.i.i, i64 -64 %45 = getelementptr inbounds i8, ptr %.sroa.0.0.pn.i.i, i64 -56 %46 = load i64, ptr %45, align 8, !tbaa !30 @@ -86289,6 +86285,7 @@ _ZN9__gnu_cxx5__ops15_Iter_comp_iterIZN5Yosys7hashlib4dictINSt7__cxx1112basic_st br i1 %52, label %.preheader.i.i, label %53, !llvm.loop !538 53: ; preds = %_ZN9__gnu_cxx5__ops15_Iter_comp_iterIZN5Yosys7hashlib4dictINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISA_SaISA_EENS3_8hash_opsISA_EEE4sortISt4lessISA_EEEvT_EUlRKNSG_7entry_tESN_E_EclINS_17__normal_iteratorIPSL_SB_ISL_SaISL_EEEESV_EEbSK_T0_.exit16.i.i + %53 = getelementptr inbounds nuw i8, ptr %.sroa.019.1.i.i, i64 8 %54 = getelementptr inbounds i8, ptr %.sroa.0.0.pn.i.i, i64 -56 %55 = icmp ult ptr %.sroa.019.1.i.i, %.sroa.0.1.i.i br i1 %55, label %56, label %_ZSt27__unguarded_partition_pivotIN9__gnu_cxx17__normal_iteratorIPN5Yosys7hashlib4dictINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISA_SaISA_EENS3_8hash_opsISA_EEE7entry_tESB_ISH_SaISH_EEEENS0_5__ops15_Iter_comp_iterIZNSG_4sortISt4lessISA_EEEvT_EUlRKSH_ST_E_EEESR_SR_SR_T0_.exit @@ -86312,14 +86309,14 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i store ptr %57, ptr %4, align 8, !tbaa !19 %63 = load i64, ptr %58, align 8, !tbaa !23 store i64 %63, ptr %14, align 8, !tbaa !23 - %.pre.i = load i64, ptr %44, align 8, !tbaa !30 + %.pre.i = load i64, ptr %53, align 8, !tbaa !30 br label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i42 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i42: ; preds = %60, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i %64 = phi i64 [ %36, %60 ], [ %.pre.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i ] store i64 %64, ptr %15, align 8, !tbaa !30 store ptr %58, ptr %.sroa.019.1.i.i, align 8, !tbaa !19 - store i64 0, ptr %44, align 8, !tbaa !30 + store i64 0, ptr %53, align 8, !tbaa !30 store i8 0, ptr %58, align 8, !tbaa !23 %65 = getelementptr inbounds nuw i8, ptr %.sroa.019.1.i.i, i64 32 %66 = load ptr, ptr %65, align 8, !tbaa !15 @@ -86359,7 +86356,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i42 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit.i.i40: ; preds = %81, %79, %76 %82 = load i64, ptr %54, align 8, !tbaa !30 - store i64 %82, ptr %44, align 8, !tbaa !30 + store i64 %82, ptr %53, align 8, !tbaa !30 %83 = getelementptr inbounds nuw i8, ptr %58, i64 %82 store i8 0, ptr %83, align 1, !tbaa !23 %.pre.i.i41 = load ptr, ptr %.sroa.0.1.i.i, align 8, !tbaa !19 @@ -86368,7 +86365,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit.i.i40: 84: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i42 store ptr %73, ptr %.sroa.019.1.i.i, align 8, !tbaa !19 %85 = load i64, ptr %54, align 8, !tbaa !30 - store i64 %85, ptr %44, align 8, !tbaa !30 + store i64 %85, ptr %53, align 8, !tbaa !30 %86 = load i64, ptr %74, align 8, !tbaa !23 store i64 %86, ptr %58, align 8, !tbaa !23 store ptr %74, ptr %.sroa.0.1.i.i, align 8, !tbaa !19 diff --git a/bench/yyjson/optimized/yyjson.ll b/bench/yyjson/optimized/yyjson.ll index 43fb9560ab5..f9352867a27 100644 --- a/bench/yyjson/optimized/yyjson.ll +++ b/bench/yyjson/optimized/yyjson.ll @@ -37547,7 +37547,7 @@ size_align_up.exit649.i: ; preds = %1210, %1211 %.sink = phi i1 [ %2442, %write_indent.exit795 ], [ %1228, %1224 ] %.0.i793.lcssa.sink5266 = phi ptr [ %.0.i793.lcssa, %write_indent.exit795 ], [ %1223, %1224 ] %.0482.i.sink = phi ptr [ %.0482.i, %write_indent.exit795 ], [ %0, %1224 ] - %.01079.ph.ph = phi i64 [ %2504, %write_indent.exit795 ], [ %1231, %1224 ] + %.01079.ph.ph = phi i64 [ %2506, %write_indent.exit795 ], [ %1231, %1224 ] %.0556.i.ph.ph = phi i64 [ %2507, %write_indent.exit795 ], [ 1, %1224 ] %.0545.i.ph.ph = phi i64 [ %.5550.i, %write_indent.exit795 ], [ %1222, %1224 ] %.0526.i.ph.ph = phi ptr [ %2499, %write_indent.exit795 ], [ %1225, %1224 ] @@ -39810,8 +39810,6 @@ size_align_up.exit641.i: ; preds = %2475 %2501 = shl i64 %.01079, 1 %2502 = or disjoint i64 %2501, %2500 store i64 %2502, ptr %2499, align 8, !tbaa !217 - %2503 = zext i1 %2442 to i64 - %2504 = shl nuw nsw i64 %2476, %2503 %.not.i79425513378 = icmp eq i64 %.0556.i.ph, 0 %.not.i7942551 = select i1 %.not583.i, i1 true, i1 %.not.i79425513378 br i1 %.not.i7942551, label %write_indent.exit795, label %select.unfold1222 @@ -39827,6 +39825,8 @@ select.unfold1222: ; preds = %2498, %select.unfol write_indent.exit795: ; preds = %select.unfold1222, %2498 %.0.i793.lcssa = phi ptr [ %.10494.i, %2498 ], [ %2506, %select.unfold1222 ] + %2505 = zext i1 %2442 to i64 + %2506 = shl nuw nsw i64 %2476, %2505 %2507 = add i64 %.0556.i.ph, 1 br label %.outer1490.sink.split @@ -45266,7 +45266,7 @@ get_enc_table_with_flag.exit.i34: ; preds = %1212, %1211 .outer1029.sink.split.sink.split: ; preds = %write_indent.exit818.i, %1222 %.sink4816 = phi ptr [ %1235, %1222 ], [ %2521, %write_indent.exit818.i ] %.0617.ph.ph.ph = phi i8 [ %1227, %1222 ], [ %2483, %write_indent.exit818.i ] - %.0616.ph.ph.ph = phi i64 [ %1230, %1222 ], [ %2513, %write_indent.exit818.i ] + %.0616.ph.ph.ph = phi i64 [ %1230, %1222 ], [ %2515, %write_indent.exit818.i ] %.0614.ph.ph.ph = phi ptr [ %0, %1222 ], [ %.0487.i, %write_indent.exit818.i ] %.0561.i.ph.ph.ph = phi i64 [ 1, %1222 ], [ %2516, %write_indent.exit818.i ] %.0550.i.ph.ph.ph = phi i64 [ %1220, %1222 ], [ %.5555.i, %write_indent.exit818.i ] @@ -45294,7 +45294,7 @@ get_enc_table_with_flag.exit.i34: ; preds = %1212, %1211 .outer1029.sink.split: ; preds = %.outer1029.sink.split.preheader, %write_indent.exit818.i %.pn592.i.sink = phi ptr [ %2521, %write_indent.exit818.i ], [ %.pn592.i.sink.ph, %.outer1029.sink.split.preheader ] %.0617.ph.ph = phi i8 [ %2483, %write_indent.exit818.i ], [ %.0617.ph.ph.ph5229, %.outer1029.sink.split.preheader ] - %.0616.ph.ph = phi i64 [ %2513, %write_indent.exit818.i ], [ %.0616.ph.ph.ph5230, %.outer1029.sink.split.preheader ] + %.0616.ph.ph = phi i64 [ %2515, %write_indent.exit818.i ], [ %.0616.ph.ph.ph5230, %.outer1029.sink.split.preheader ] %.0614.ph.ph = phi ptr [ %.0487.i, %write_indent.exit818.i ], [ %.0614.ph.ph.ph5231, %.outer1029.sink.split.preheader ] %.0561.i.ph.ph = phi i64 [ %2516, %write_indent.exit818.i ], [ %.0561.i.ph.ph.ph5232, %.outer1029.sink.split.preheader ] %.0550.i.ph.ph = phi i64 [ %.5555.i, %write_indent.exit818.i ], [ %.0550.i.ph.ph.ph5233, %.outer1029.sink.split.preheader ] @@ -47558,8 +47558,6 @@ write_indent.exit822.i: ; preds = %select.unfold753, % store i64 %2510, ptr %2507, align 8, !tbaa !219 %2511 = getelementptr inbounds i8, ptr %.9540.i, i64 -8 store ptr %.0614.ph, ptr %2511, align 8, !tbaa !221 - %2512 = zext i1 %2447 to i64 - %2513 = shl nuw nsw i64 %2482, %2512 %.not.i817.i20922925 = icmp eq i64 %.0561.i.ph, 0 %.not.i817.i2092 = select i1 %.not588.i, i1 true, i1 %.not.i817.i20922925 br i1 %.not.i817.i2092, label %write_indent.exit818.i, label %select.unfold761 @@ -47575,6 +47573,8 @@ select.unfold761: ; preds = %2506, %select.unfol write_indent.exit818.i: ; preds = %select.unfold761, %2506 %.0.i816.i.lcssa = phi ptr [ %.10499.i, %2506 ], [ %2515, %select.unfold761 ] + %2514 = zext i1 %2447 to i64 + %2515 = shl nuw nsw i64 %2482, %2514 %2516 = add i64 %.0561.i.ph, 1 %2517 = select i1 %2447, i8 123, i8 91 %2518 = getelementptr inbounds nuw i8, ptr %.0.i816.i.lcssa, i64 1 @@ -50561,20 +50561,19 @@ define dso_local ptr @yyjson_mut_write_opts(ptr noundef readonly captures(addres br i1 %.not, label %yyjson_mut_doc_estimated_val_num.exit, label %6, !prof !4 6: ; preds = %5 - %7 = load ptr, ptr %0, align 8, !tbaa !72 - %8 = getelementptr inbounds nuw i8, ptr %0, i64 80 - %9 = getelementptr inbounds nuw i8, ptr %0, i64 112 - %.0.i10 = load ptr, ptr %9, align 8, !tbaa !222 + %7 = getelementptr inbounds nuw i8, ptr %0, i64 80 + %8 = getelementptr inbounds nuw i8, ptr %0, i64 112 + %.0.i10 = load ptr, ptr %8, align 8, !tbaa !222 %.not.i11 = icmp eq ptr %.0.i10, null - br i1 %.not.i11, label %yyjson_mut_doc_estimated_val_num.exit, label %.lr.ph + br i1 %.not.i11, label %yyjson_mut_doc_estimated_val_num.exit.loopexit, label %.lr.ph .lr.ph: ; preds = %6 %10 = getelementptr inbounds nuw i8, ptr %0, i64 88 br label %11 11: ; preds = %.lr.ph, %25 - %.0.i13 = phi ptr [ %.0.i10, %.lr.ph ], [ %.0.i, %25 ] - %.010.i12 = phi i64 [ 0, %.lr.ph ], [ %.1.i, %25 ] + %.0.i13 = phi ptr [ %.0.i10, %.lr.ph ], [ %.0.i, %24 ] + %.010.i12 = phi i64 [ 0, %.lr.ph ], [ %.1.i, %24 ] %12 = getelementptr inbounds nuw i8, ptr %.0.i13, i64 8 %13 = load i64, ptr %12, align 8, !tbaa !58 %14 = udiv i64 %13, 24 @@ -50585,23 +50584,28 @@ define dso_local ptr @yyjson_mut_write_opts(ptr noundef readonly captures(addres 18: ; preds = %11 %19 = load ptr, ptr %10, align 8, !tbaa !223 - %20 = load ptr, ptr %8, align 8, !tbaa !224 + %20 = load ptr, ptr %7, align 8, !tbaa !224 + %20 = ptrtoint ptr %18 to i64 %21 = ptrtoint ptr %19 to i64 - %22 = ptrtoint ptr %20 to i64 - %23 = sub i64 %21, %22 - %.neg.i = sdiv exact i64 %23, -24 - %24 = add i64 %.neg.i, %16 + %22 = sub i64 %20, %21 + %.neg.i = sdiv exact i64 %22, -24 + %23 = add i64 %.neg.i, %15 br label %25 25: ; preds = %18, %11 - %.1.i = phi i64 [ %24, %18 ], [ %16, %11 ] + %.1.i = phi i64 [ %23, %17 ], [ %16, %10 ] %.0.i = load ptr, ptr %.0.i13, align 8, !tbaa !222 %.not.i = icmp eq ptr %.0.i, null - br i1 %.not.i, label %yyjson_mut_doc_estimated_val_num.exit, label %11, !llvm.loop !225 + br i1 %.not.i, label %yyjson_mut_doc_estimated_val_num.exit.loopexit, label %11, !llvm.loop !225 -yyjson_mut_doc_estimated_val_num.exit: ; preds = %25, %6, %5 - %.08 = phi ptr [ null, %5 ], [ %7, %6 ], [ %7, %25 ] - %.0 = phi i64 [ 0, %5 ], [ 0, %6 ], [ %.1.i, %25 ] +yyjson_mut_doc_estimated_val_num.exit.loopexit: ; preds = %24, %6 + %.010.i.lcssa = phi i64 [ 0, %6 ], [ %.1.i, %24 ] + %25 = load ptr, ptr %0, align 8, !tbaa !72 + br label %yyjson_mut_doc_estimated_val_num.exit + +yyjson_mut_doc_estimated_val_num.exit: ; preds = %yyjson_mut_doc_estimated_val_num.exit.loopexit, %5 + %.08 = phi ptr [ null, %5 ], [ %25, %yyjson_mut_doc_estimated_val_num.exit.loopexit ] + %.0 = phi i64 [ 0, %5 ], [ %.010.i.lcssa, %yyjson_mut_doc_estimated_val_num.exit.loopexit ] %26 = tail call fastcc ptr @yyjson_mut_write_opts_impl(ptr noundef %.08, i64 noundef %.0, i32 noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4) ret ptr %26 } diff --git a/bench/z3/optimized/sat_probing.ll b/bench/z3/optimized/sat_probing.ll index b2763bff6db..d94864fe04c 100644 --- a/bench/z3/optimized/sat_probing.ll +++ b/bench/z3/optimized/sat_probing.ll @@ -2359,23 +2359,26 @@ _ZN6vectorISt4pairIN3sat7literalES2_ELb0EjE3endEv.exit: ; preds = %174 190: ; preds = %.lr.ph119, %_ZN10union_findI22union_find_default_ctxE5mergeEjj.exit90 %.041118 = phi ptr [ %175, %.lr.ph119 ], [ %290, %_ZN10union_findI22union_find_default_ctxE5mergeEjj.exit90 ] %191 = load i32, ptr %.041118, align 4, !tbaa !52 - %192 = getelementptr inbounds nuw i8, ptr %.041118, i64 4 - %193 = load i32, ptr %192, align 4, !tbaa !52 - %194 = load ptr, ptr %163, align 8, !tbaa !61 - br label %195 - -195: ; preds = %195, %190 - %.08.i.i = phi i32 [ %191, %190 ], [ %198, %195 ] - %196 = zext i32 %.08.i.i to i64 - %197 = getelementptr inbounds nuw i32, ptr %194, i64 %196 + %192 = load ptr, ptr %163, align 8, !tbaa !61 + br label %193 + +193:; preds = %193, %190 + %.08.i.i = phi i32 [ %191, %190 ], [ %196, %193 ] + %194 = zext i32 %.08.i.i to i64 + %195 = getelementptr inbounds nuw i32, ptr %192, i64 %194 + %196 = load i32, ptr %195, align 4, !tbaa !52 + %.not.i.i70 = icmp eq i32 %196, %.08.i.i + br i1 %.not.i.i70, label %_ZNK10union_findI22union_find_default_ctxE4findEj.exit.i.preheader, label %193 + +_ZNK10union_findI22union_find_default_ctxE4findEj.exit.i.preheader: ; preds = %193 + %197 = getelementptr inbounds nuw i8, ptr %.041118, i64 4 %198 = load i32, ptr %197, align 4, !tbaa !52 - %.not.i.i70 = icmp eq i32 %198, %.08.i.i - br i1 %.not.i.i70, label %_ZNK10union_findI22union_find_default_ctxE4findEj.exit.i, label %195 + br label %_ZNK10union_findI22union_find_default_ctxE4findEj.exit.i -_ZNK10union_findI22union_find_default_ctxE4findEj.exit.i: ; preds = %195, %_ZNK10union_findI22union_find_default_ctxE4findEj.exit.i - %.08.i2.i = phi i32 [ %201, %_ZNK10union_findI22union_find_default_ctxE4findEj.exit.i ], [ %193, %195 ] +_ZNK10union_findI22union_find_default_ctxE4findEj.exit.i: ; preds = %_ZNK10union_findI22union_find_default_ctxE4findEj.exit.i.preheader, %_ZNK10union_findI22union_find_default_ctxE4findEj.exit.i + %.08.i2.i = phi i32 [ %201, %_ZNK10union_findI22union_find_default_ctxE4findEj.exit.i ], [ %198, %_ZNK10union_findI22union_find_default_ctxE4findEj.exit.i.preheader ] %199 = zext i32 %.08.i2.i to i64 - %200 = getelementptr inbounds nuw i32, ptr %194, i64 %199 + %200 = getelementptr inbounds nuw i32, ptr %192, i64 %199 %201 = load i32, ptr %200, align 4, !tbaa !52 %.not.i3.i = icmp eq i32 %201, %.08.i2.i br i1 %.not.i3.i, label %_ZNK10union_findI22union_find_default_ctxE4findEj.exit4.i, label %_ZNK10union_findI22union_find_default_ctxE4findEj.exit.i @@ -2386,7 +2389,7 @@ _ZNK10union_findI22union_find_default_ctxE4findEj.exit4.i: ; preds = %_ZNK10unio .noexc.i: ; preds = %_ZNK10union_findI22union_find_default_ctxE4findEj.exit4.i %203 = load ptr, ptr %182, align 8, !tbaa !61 - %204 = getelementptr inbounds nuw i32, ptr %203, i64 %196 + %204 = getelementptr inbounds nuw i32, ptr %203, i64 %194 %205 = load i32, ptr %204, align 4, !tbaa !52 %206 = getelementptr inbounds nuw i32, ptr %203, i64 %199 %207 = load i32, ptr %206, align 4, !tbaa !52 @@ -2394,7 +2397,7 @@ _ZNK10union_findI22union_find_default_ctxE4findEj.exit4.i: ; preds = %_ZNK10unio %spec.select.i = select i1 %208, i32 %.08.i.i, i32 %.08.i2.i %spec.select30.i = select i1 %208, i32 %.08.i2.i, i32 %.08.i.i %209 = zext i32 %spec.select30.i to i64 - %210 = getelementptr inbounds nuw i32, ptr %194, i64 %209 + %210 = getelementptr inbounds nuw i32, ptr %192, i64 %209 store i32 %spec.select.i, ptr %210, align 4, !tbaa !52 %211 = getelementptr inbounds nuw i32, ptr %203, i64 %209 %212 = load i32, ptr %211, align 4, !tbaa !52 @@ -2456,7 +2459,7 @@ _ZNK10union_findI22union_find_default_ctxE4findEj.exit4.i: ; preds = %_ZNK10unio br label %_ZN10union_findI22union_find_default_ctxE5mergeEjj.exit _ZN10union_findI22union_find_default_ctxE5mergeEjj.exit: ; preds = %234, %_ZNK10union_findI22union_find_default_ctxE4findEj.exit4.i - %241 = phi ptr [ %.pre, %234 ], [ %194, %_ZNK10union_findI22union_find_default_ctxE4findEj.exit4.i ] + %241 = phi ptr [ %.pre, %234 ], [ %192, %_ZNK10union_findI22union_find_default_ctxE4findEj.exit4.i ] %242 = xor i32 %191, 1 br label %243 @@ -2469,7 +2472,7 @@ _ZN10union_findI22union_find_default_ctxE5mergeEjj.exit: ; preds = %234, %_ZNK10 br i1 %.not.i.i74, label %_ZNK10union_findI22union_find_default_ctxE4findEj.exit.i76.preheader, label %243 _ZNK10union_findI22union_find_default_ctxE4findEj.exit.i76.preheader: ; preds = %243 - %247 = xor i32 %193, 1 + %247 = xor i32 %198, 1 br label %_ZNK10union_findI22union_find_default_ctxE4findEj.exit.i76 _ZNK10union_findI22union_find_default_ctxE4findEj.exit.i76: ; preds = %_ZNK10union_findI22union_find_default_ctxE4findEj.exit.i76.preheader, %_ZNK10union_findI22union_find_default_ctxE4findEj.exit.i76 diff --git a/scripts/setup_pre_commit_patch.sh b/scripts/setup_pre_commit_patch.sh index c8d0fce0bf7..5f6c63eed58 100755 --- a/scripts/setup_pre_commit_patch.sh +++ b/scripts/setup_pre_commit_patch.sh @@ -2,7 +2,7 @@ set -euo pipefail shopt -s inherit_errexit -export GITHUB_PATCH_ID="/llvm-project/commit/" +export GITHUB_PATCH_ID=llvm/llvm-project/pull/157559 export COMPTIME_MODE=0 export STAT_MODE=0 export STAT_NAME=""