diff --git a/bench/cmake/optimized/zstd_ldm.ll b/bench/cmake/optimized/zstd_ldm.ll index 63e83872119..feeded8933a 100644 --- a/bench/cmake/optimized/zstd_ldm.ll +++ b/bench/cmake/optimized/zstd_ldm.ll @@ -382,15 +382,15 @@ define dso_local range(i64 -119, 1) i64 @ZSTD_ldm_generateSequences(ptr noundef %9 = load i32, ptr %8, align 4, !tbaa !9 %10 = shl nuw i32 1, %9 %11 = getelementptr inbounds nuw i8, ptr %3, i64 %4 + %.not = icmp eq i64 %4, 0 + br i1 %.not, label %.critedge, label %.lr.ph + +.lr.ph: ; preds = %5 %12 = lshr i64 %4, 20 %13 = and i64 %4, 1048575 %14 = icmp ne i64 %13, 0 %15 = zext i1 %14 to i64 %16 = add nuw nsw i64 %12, %15 - %.not = icmp eq i64 %16, 0 - br i1 %.not, label %.critedge, label %.lr.ph - -.lr.ph: ; preds = %5 %17 = getelementptr inbounds nuw i8, ptr %1, i64 24 %18 = getelementptr inbounds nuw i8, ptr %1, i64 32 %19 = getelementptr inbounds nuw i8, ptr %0, i64 48 @@ -408,6 +408,7 @@ define dso_local range(i64 -119, 1) i64 @ZSTD_ldm_generateSequences(ptr noundef %31 = getelementptr i8, ptr %2, i64 16 %32 = getelementptr inbounds nuw i8, ptr %6, i64 8 %33 = getelementptr i8, ptr %0, i64 56 + %umax = tail call i64 @llvm.umax.i64(i64 %16, i64 1) %.pre = load i64, ptr %17, align 8, !tbaa !36 br label %34 @@ -1284,7 +1285,7 @@ ZSTD_ldm_generateSequences_internal.exit._crit_edge: ; preds = %ZSTD_ldm_generat 413: ; preds = %405, %411 %.15778 = phi i64 [ %.0.i69, %405 ], [ %412, %411 ] %414 = add nuw nsw i64 %.05588, 1 - %exitcond.not = icmp eq i64 %414, %16 + %exitcond.not = icmp eq i64 %414, %umax br i1 %exitcond.not, label %.critedge, label %34, !llvm.loop !67 .critedge: ; preds = %413, %34, %ZSTD_ldm_generateSequences_internal.exit, %5, %ZSTD_ldm_generateSequences_internal.exit.thread72 @@ -1899,6 +1900,9 @@ declare i32 @llvm.umax.i32(i32, i32) #11 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i32 @llvm.usub.sat.i32(i32, i32) #11 +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare i64 @llvm.umax.i64(i64, i64) #11 + attributes #0 = { mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: readwrite) uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: read) uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #2 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } diff --git a/bench/duckdb/optimized/bignum.ll b/bench/duckdb/optimized/bignum.ll index af916c24557..ab4443da5c2 100644 --- a/bench/duckdb/optimized/bignum.ll +++ b/bench/duckdb/optimized/bignum.ll @@ -1542,12 +1542,10 @@ define hidden noundef range(i32 -16, 1) i32 @mbedtls_mpi_read_binary(ptr noundef %17 = getelementptr inbounds nuw i8, ptr %16, i64 %14 tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %17, ptr align 1 %1, i64 %2, i1 false) %18 = load ptr, ptr %15, align 8, !tbaa !11 - %19 = icmp eq i64 %8, 0 - %20 = getelementptr i64, ptr %18, i64 %8 - %.01214.i = getelementptr i8, ptr %20, i64 -8 + %19 = getelementptr i64, ptr %18, i64 %8 + %20 = getelementptr i8, ptr %19, i64 -8 %.not15.i = icmp ugt ptr %18, %.01214.i - %or.cond.i = or i1 %19, %.not15.i - br i1 %or.cond.i, label %_ZL21mpi_bigendian_to_hostPmm.exit, label %.lr.ph.i + br i1 %.not15.i, label %_ZL21mpi_bigendian_to_hostPmm.exit, label %.lr.ph.i .lr.ph.i: ; preds = %12, %.lr.ph.i %.01217.i = phi ptr [ %.012.i, %.lr.ph.i ], [ %.01214.i, %12 ] @@ -5978,12 +5976,10 @@ define hidden noundef i32 @mbedtls_mpi_fill_random(ptr noundef captures(address_ 30: ; preds = %17 %31 = load ptr, ptr %20, align 8, !tbaa !11 - %32 = icmp eq i64 %9, 0 - %33 = getelementptr i64, ptr %31, i64 %9 - %.01214.i.i = getelementptr i8, ptr %33, i64 -8 + %32 = getelementptr i64, ptr %31, i64 %9 + %33 = getelementptr i8, ptr %32, i64 -8 %.not15.i.i = icmp ugt ptr %31, %.01214.i.i - %or.cond.i.i = or i1 %32, %.not15.i.i - br i1 %or.cond.i.i, label %_ZL24mpi_fill_random_internalP11mbedtls_mpimPFiPvPhmES1_.exit, label %.lr.ph.i.i + br i1 %.not15.i.i, label %_ZL24mpi_fill_random_internalP11mbedtls_mpimPFiPvPhmES1_.exit, label %.lr.ph.i.i .lr.ph.i.i: ; preds = %30, %.lr.ph.i.i %.01217.i.i = phi ptr [ %.012.i.i, %.lr.ph.i.i ], [ %.01214.i.i, %30 ] diff --git a/bench/duckdb/optimized/ub_duckdb_storage_compression_roaring.ll b/bench/duckdb/optimized/ub_duckdb_storage_compression_roaring.ll index 361cc641003..585cd39b6e1 100644 --- a/bench/duckdb/optimized/ub_duckdb_storage_compression_roaring.ll +++ b/bench/duckdb/optimized/ub_duckdb_storage_compression_roaring.ll @@ -7741,25 +7741,26 @@ _ZNSt6vectorImSaImEE11_S_relocateEPmS2_S2_RS0_.exit.i: ; preds = %63, %.noexc34 call void @_ZdlPv(ptr noundef nonnull %50) #29 br label %_ZNSt6vectorImSaImEE7reserveEm.exit.thread -_ZNSt6vectorImSaImEE7reserveEm.exit.thread: ; preds = %_ZNSt6vectorImSaImEE11_S_relocateEPmS2_S2_RS0_.exit.i, %64 +_ZNSt6vectorImSaImEE7reserveEm.exit.thread: ; preds = %64, %_ZNSt6vectorImSaImEE11_S_relocateEPmS2_S2_RS0_.exit.i store ptr %61, ptr %11, align 8, !tbaa !198 %65 = getelementptr inbounds nuw i8, ptr %61, i64 %59 store ptr %65, ptr %56, align 8, !tbaa !450 %66 = getelementptr inbounds nuw i64, ptr %61, i64 %spec.select store ptr %66, ptr %48, align 8, !tbaa !449 - br label %.lr.ph + br label %_ZNSt6vectorImSaImEE7reserveEm.exit -_ZNSt6vectorImSaImEE7reserveEm.exit: ; preds = %47 - %.not79 = icmp eq i64 %spec.select, 0 +_ZNSt6vectorImSaImEE7reserveEm.exit: ; preds = %_ZNSt6vectorImSaImEE7reserveEm.exit.thread, %47 + %.not79 = icmp eq i64 %34, 0 br i1 %.not79, label %._crit_edge, label %.lr.ph -.lr.ph: ; preds = %_ZNSt6vectorImSaImEE7reserveEm.exit.thread, %_ZNSt6vectorImSaImEE7reserveEm.exit +.lr.ph: ; preds = %_ZNSt6vectorImSaImEE7reserveEm.exit %67 = getelementptr inbounds nuw i8, ptr %4, i64 24 %68 = getelementptr inbounds nuw i8, ptr %4, i64 16 %69 = getelementptr inbounds nuw i8, ptr %4, i64 8 %70 = getelementptr inbounds nuw i8, ptr %0, i64 160 %71 = getelementptr inbounds nuw i8, ptr %0, i64 168 %72 = getelementptr inbounds nuw i8, ptr %0, i64 184 + %umax = call i64 @llvm.umax.i64(i64 %spec.select, i64 1) br label %77 ._crit_edge: ; preds = %_ZN6duckdb7roaring16RoaringScanState10SkipVectorERKNS0_17ContainerMetadataE.exit, %_ZNSt6vectorImSaImEE7reserveEm.exit @@ -8037,7 +8038,7 @@ _ZN6duckdb7roaring16RoaringScanState10SkipVectorERKNS0_17ContainerMetadataE.exit %.0.i.i = phi i64 [ %.1.i.i, %160 ], [ %.2.i.i, %166 ], [ 256, %_ZNSt6vectorImSaImEE9push_backERKm.exit ] %171 = add i64 %.0.i.i, %.1 %172 = add nuw nsw i64 %.078, 1 - %exitcond.not = icmp eq i64 %172, %spec.select + %exitcond.not = icmp eq i64 %172, %umax br i1 %exitcond.not, label %._crit_edge, label %77, !llvm.loop !456 173: ; preds = %.loopexit, %.loopexit.split-lp, %75 diff --git a/bench/graphviz/optimized/comp.ll b/bench/graphviz/optimized/comp.ll index 84843631618..7667ac318ee 100644 --- a/bench/graphviz/optimized/comp.ll +++ b/bench/graphviz/optimized/comp.ll @@ -39,26 +39,18 @@ define noalias noundef ptr @findCComp(ptr noundef %0, ptr noundef writeonly capt %15 = icmp ne i32 %14, 0 %16 = zext i1 %15 to i64 %17 = add nuw nsw i64 %13, %16 - %.not.i.i = icmp eq i64 %17, 0 - br i1 %.not.i.i, label %.thread.i.i, label %19 + %18 = tail call noalias ptr @calloc(i64 noundef %17, i64 noundef 1) #15 + %19 = icmp eq ptr %18, null + br i1 %19, label %20, label %bitarray_new.exit .thread.i.i: ; preds = %12 - %18 = tail call noalias ptr @calloc(i64 noundef 0, i64 noundef 1) #15 - br label %bitarray_new.exit - -19: ; preds = %12 - %20 = tail call noalias ptr @calloc(i64 noundef %17, i64 noundef 1) #15 - %21 = icmp eq ptr %20, null - br i1 %21, label %22, label %bitarray_new.exit - -22: ; preds = %19 - %23 = load ptr, ptr @stderr, align 8, !tbaa !3 - %24 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %23, ptr noundef nonnull @.str.4, i64 noundef %17) #16 + %21 = load ptr, ptr @stderr, align 8, !tbaa !3 + %22 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %21, ptr noundef nonnull @.str.4, i64 noundef %17) #16 tail call fastcc void @graphviz_exit() #17 unreachable -bitarray_new.exit: ; preds = %3, %.thread.i.i, %19 - %.sroa.0.0.i = phi ptr [ null, %3 ], [ %18, %.thread.i.i ], [ %20, %19 ] +bitarray_new.exit: ; preds = %3, %12 + %.sroa.0.0.i = phi ptr [ null, %3 ], [ %18, %12 ] store ptr %.sroa.0.0.i, ptr %8, align 8 %25 = getelementptr inbounds nuw i8, ptr %8, i64 8 store i64 %10, ptr %25, align 8 @@ -87,14 +79,14 @@ agxblen.exit.i.i: ; preds = %31 36: ; preds = %31 %37 = getelementptr inbounds nuw i8, ptr %7, i64 8 + %36 = load i64, ptr %35, align 8, !tbaa !38 + %37 = getelementptr inbounds nuw i8, ptr %7, i64 16 %38 = load i64, ptr %37, align 8, !tbaa !38 - %39 = getelementptr inbounds nuw i8, ptr %7, i64 16 - %40 = load i64, ptr %39, align 8, !tbaa !38 br label %agxbsizeof.exit.i.i agxbsizeof.exit.i.i: ; preds = %36, %agxblen.exit.i.i - %.0.i20.i.i = phi i64 [ %38, %36 ], [ %35, %agxblen.exit.i.i ] - %.0.i14.i.i = phi i64 [ %40, %36 ], [ 31, %agxblen.exit.i.i ] + %.0.i20.i.i = phi i64 [ %36, %34 ], [ %35, %agxblen.exit.i.i ] + %.0.i14.i.i = phi i64 [ %38, %34 ], [ 31, %agxblen.exit.i.i ] %.not.i5.i = icmp ult i64 %.0.i20.i.i, %.0.i14.i.i br i1 %.not.i5.i, label %42, label %41 @@ -104,7 +96,7 @@ agxbsizeof.exit.i.i: ; preds = %36, %agxblen.exit.i br label %42 42: ; preds = %41, %agxbsizeof.exit.i.i - %.val.i15.i.i = phi i8 [ %.val.i15.pre.i.i, %41 ], [ %.val.i, %agxbsizeof.exit.i.i ] + %.val.i15.i.i = phi i8 [ %.val.i15.pre.i.i, %39 ], [ %.val.i, %agxbsizeof.exit.i.i ] %.not.i16.i.i = icmp eq i8 %.val.i15.i.i, -1 br i1 %.not.i16.i.i, label %48, label %43 @@ -130,7 +122,7 @@ agxbsizeof.exit.i.i: ; preds = %36, %agxblen.exit.i br label %agxbputc.exit.i agxbputc.exit.i: ; preds = %48, %43 - %.val.i8.pr.i = phi i8 [ %.val.i6.pr.i, %48 ], [ %47, %43 ] + %.val.i8.pr.i = phi i8 [ %.val.i6.pr.i, %46 ], [ %47, %41 ] %.not.i7.i = icmp eq i8 %.val.i8.pr.i, -1 br i1 %.not.i7.i, label %55, label %agxbclear.exit.thread.i @@ -145,7 +137,7 @@ agxbclear.exit.thread.i: ; preds = %agxbputc.exit.i, %3 br label %agxbuse.exit agxbuse.exit: ; preds = %agxbclear.exit.thread.i, %55 - %58 = phi ptr [ %57, %55 ], [ %7, %agxbclear.exit.thread.i ] + %58 = phi ptr [ %57, %53 ], [ %7, %agxbclear.exit.thread.i ] %59 = call ptr @agsubg(ptr noundef nonnull %0, ptr noundef %58, i32 noundef 1) #14 %60 = call ptr @agbindrec(ptr noundef %59, ptr noundef nonnull @.str.1, i32 noundef 400, i32 noundef 1) #14 %61 = call noalias dereferenceable_or_null(64) ptr @calloc(i64 noundef 1, i64 noundef 64) #15 @@ -161,19 +153,19 @@ agxbuse.exit: ; preds = %agxbclear.exit.thre gv_alloc.exit: ; preds = %agxbuse.exit %66 = getelementptr inbounds nuw i8, ptr %59, i64 16 %67 = load ptr, ptr %66, align 8, !tbaa !8 + %66 = getelementptr inbounds nuw i8, ptr %65, i64 160 + store ptr %59, ptr %66, align 8, !tbaa !14 + store ptr %28, ptr %59, align 8, !tbaa !34 + %67 = load ptr, ptr %24, align 8, !tbaa !8 %68 = getelementptr inbounds nuw i8, ptr %67, i64 160 - store ptr %61, ptr %68, align 8, !tbaa !14 - store ptr %30, ptr %61, align 8, !tbaa !34 - %69 = load ptr, ptr %26, align 8, !tbaa !8 - %70 = getelementptr inbounds nuw i8, ptr %69, i64 160 - %71 = load ptr, ptr %70, align 8, !tbaa !14 - %72 = getelementptr inbounds nuw i8, ptr %71, i64 8 - %73 = load i32, ptr %72, align 8, !tbaa !39 - %74 = getelementptr inbounds nuw i8, ptr %61, i64 8 - store i32 %73, ptr %74, align 8, !tbaa !39 - %75 = getelementptr inbounds nuw i8, ptr %30, i64 8 - %76 = load ptr, ptr %75, align 8, !tbaa !40 - %.not78129 = icmp eq ptr %76, null + %69 = load ptr, ptr %68, align 8, !tbaa !14 + %70 = getelementptr inbounds nuw i8, ptr %69, i64 8 + %69 = load i32, ptr %70, align 8, !tbaa !39 + %70 = getelementptr inbounds nuw i8, ptr %59, i64 8 + store i32 %69, ptr %70, align 8, !tbaa !41 + %72 = getelementptr inbounds nuw i8, ptr %28, i64 8 + %73 = load ptr, ptr %72, align 8, !tbaa !40 + %.not78129 = icmp eq ptr %74, null br i1 %.not78129, label %.loopexit, label %.lr.ph .lr.ph: ; preds = %gv_alloc.exit @@ -181,8 +173,8 @@ gv_alloc.exit: ; preds = %agxbuse.exit br label %78 78: ; preds = %.lr.ph, %96 - %79 = phi ptr [ %76, %.lr.ph ], [ %99, %96 ] - %.066130 = phi ptr [ %30, %.lr.ph ], [ %97, %96 ] + %79 = phi ptr [ %74, %.lr.ph ], [ %99, %94 ] + %.066130 = phi ptr [ %30, %.lr.ph ], [ %97, %94 ] %80 = getelementptr inbounds nuw i8, ptr %79, i64 16 %81 = load ptr, ptr %80, align 8, !tbaa !8 %82 = getelementptr inbounds nuw i8, ptr %81, i64 164 @@ -218,8 +210,8 @@ gv_alloc.exit: ; preds = %agxbuse.exit br i1 %.not78, label %.loopexit, label %78, !llvm.loop !49 .loopexit: ; preds = %96, %gv_alloc.exit, %bitarray_new.exit - %.069 = phi ptr [ null, %bitarray_new.exit ], [ %59, %gv_alloc.exit ], [ %59, %96 ] - %.067 = phi i64 [ 0, %bitarray_new.exit ], [ 1, %gv_alloc.exit ], [ 1, %96 ] + %.069 = phi ptr [ null, %bitarray_new.exit ], [ %59, %gv_alloc.exit ], [ %59, %94 ] + %.067 = phi i64 [ 0, %bitarray_new.exit ], [ 1, %gv_alloc.exit ], [ 1, %94 ] %100 = call ptr @agfstnode(ptr noundef %0) #14 %.not79131 = icmp eq ptr %100, null br i1 %.not79131, label %._crit_edge, label %.lr.ph136 @@ -232,10 +224,10 @@ gv_alloc.exit: ; preds = %agxbuse.exit br label %105 105: ; preds = %.lr.ph136, %161 - %.0135 = phi i32 [ 0, %.lr.ph136 ], [ %.1, %161 ] - %.064134 = phi ptr [ %100, %.lr.ph136 ], [ %162, %161 ] - %.168133 = phi i64 [ %.067, %.lr.ph136 ], [ %.2, %161 ] - %.170132 = phi ptr [ %.069, %.lr.ph136 ], [ %.271, %161 ] + %.0135 = phi i32 [ 0, %.lr.ph136 ], [ %.1, %159 ] + %.064134 = phi ptr [ %100, %.lr.ph136 ], [ %162, %159 ] + %.168133 = phi i64 [ %.067, %.lr.ph136 ], [ %.2, %159 ] + %.170132 = phi ptr [ %.069, %.lr.ph136 ], [ %.271, %159 ] %106 = getelementptr inbounds nuw i8, ptr %.064134, i64 16 %107 = load ptr, ptr %106, align 8, !tbaa !8 %108 = getelementptr inbounds nuw i8, ptr %107, i64 164 @@ -291,8 +283,8 @@ agxblen.exit.i.i102: ; preds = %125 br label %agxbsizeof.exit.i.i91 agxbsizeof.exit.i.i91: ; preds = %131, %agxblen.exit.i.i102 - %.0.i20.i.i92 = phi i64 [ %132, %131 ], [ %130, %agxblen.exit.i.i102 ] - %.0.i14.i.i93 = phi i64 [ %133, %131 ], [ 31, %agxblen.exit.i.i102 ] + %.0.i20.i.i92 = phi i64 [ %132, %129 ], [ %130, %agxblen.exit.i.i102 ] + %.0.i14.i.i93 = phi i64 [ %133, %129 ], [ 31, %agxblen.exit.i.i102 ] %.not.i5.i94 = icmp ult i64 %.0.i20.i.i92, %.0.i14.i.i93 br i1 %.not.i5.i94, label %135, label %134 @@ -302,7 +294,7 @@ agxbsizeof.exit.i.i91: ; preds = %131, %agxblen.exit. br label %135 135: ; preds = %134, %agxbsizeof.exit.i.i91 - %.val.i15.i.i96 = phi i8 [ %.val.i15.pre.i.i95, %134 ], [ %.val.i89, %agxbsizeof.exit.i.i91 ] + %.val.i15.i.i96 = phi i8 [ %.val.i15.pre.i.i95, %132 ], [ %.val.i89, %agxbsizeof.exit.i.i91 ] %.not.i16.i.i97 = icmp eq i8 %.val.i15.i.i96, -1 br i1 %.not.i16.i.i97, label %141, label %136 @@ -327,7 +319,7 @@ agxbsizeof.exit.i.i91: ; preds = %131, %agxblen.exit. br label %agxbputc.exit.i98 agxbputc.exit.i98: ; preds = %141, %136 - %.val.i8.pr.i99 = phi i8 [ %.val.i6.pr.i101, %141 ], [ %140, %136 ] + %.val.i8.pr.i99 = phi i8 [ %.val.i6.pr.i101, %139 ], [ %140, %134 ] %.not.i7.i100 = icmp eq i8 %.val.i8.pr.i99, -1 br i1 %.not.i7.i100, label %147, label %agxbclear.exit.thread.i90 @@ -341,7 +333,7 @@ agxbclear.exit.thread.i90: ; preds = %agxbputc.exit.i98, br label %agxbuse.exit103 agxbuse.exit103: ; preds = %agxbclear.exit.thread.i90, %147 - %149 = phi ptr [ %148, %147 ], [ %7, %agxbclear.exit.thread.i90 ] + %149 = phi ptr [ %148, %145 ], [ %7, %agxbclear.exit.thread.i90 ] %150 = call ptr @agsubg(ptr noundef %0, ptr noundef %149, i32 noundef 1) #14 %151 = call ptr @agbindrec(ptr noundef %150, ptr noundef nonnull @.str.1, i32 noundef 400, i32 noundef 1) #14 %152 = call noalias dereferenceable_or_null(64) ptr @calloc(i64 noundef 1, i64 noundef 64) #15 @@ -362,23 +354,23 @@ gv_alloc.exit104: ; preds = %agxbuse.exit103 br label %160 160: ; preds = %gv_alloc.exit104, %124 - %.372 = phi ptr [ %.170132, %124 ], [ %150, %gv_alloc.exit104 ] - %.3 = phi i64 [ %.168133, %124 ], [ %127, %gv_alloc.exit104 ] + %.372 = phi ptr [ %.170132, %122 ], [ %150, %gv_alloc.exit104 ] + %.3 = phi i64 [ %.168133, %122 ], [ %127, %gv_alloc.exit104 ] call fastcc void @dfs(ptr noundef %0, ptr noundef nonnull %.064134, ptr noundef nonnull %.372, ptr noundef %8) br label %161 161: ; preds = %121, %105, %160 - %.271 = phi ptr [ %.170132, %105 ], [ %.170132, %121 ], [ %.372, %160 ] - %.2 = phi i64 [ %.168133, %105 ], [ %.168133, %121 ], [ %.3, %160 ] - %.1 = phi i32 [ %.0135, %105 ], [ %.0135, %121 ], [ 1, %160 ] + %.271 = phi ptr [ %.170132, %103 ], [ %.170132, %119 ], [ %.372, %158 ] + %.2 = phi i64 [ %.168133, %103 ], [ %.168133, %119 ], [ %.3, %158 ] + %.1 = phi i32 [ %.0135, %103 ], [ %.0135, %119 ], [ 1, %158 ] %162 = call ptr @agnxtnode(ptr noundef %0, ptr noundef nonnull %.064134) #14 %.not79 = icmp eq ptr %162, null br i1 %.not79, label %._crit_edge, label %105, !llvm.loop !52 ._crit_edge: ; preds = %161, %.loopexit - %.170.lcssa = phi ptr [ %.069, %.loopexit ], [ %.271, %161 ] - %.168.lcssa = phi i64 [ %.067, %.loopexit ], [ %.2, %161 ] - %.0.lcssa = phi i32 [ 0, %.loopexit ], [ %.1, %161 ] + %.170.lcssa = phi ptr [ %.069, %.loopexit ], [ %.271, %159 ] + %.168.lcssa = phi i64 [ %.067, %.loopexit ], [ %.2, %159 ] + %.0.lcssa = phi i32 [ 0, %.loopexit ], [ %.1, %159 ] %.not80 = icmp eq ptr %.170.lcssa, null br i1 %.not80, label %165, label %163 @@ -399,8 +391,8 @@ gv_alloc.exit104: ; preds = %agxbuse.exit103 br label %171 171: ; preds = %.lr.ph143, %223 - %.165141 = phi ptr [ %166, %.lr.ph143 ], [ %224, %223 ] - %.4140 = phi i64 [ %.168.lcssa, %.lr.ph143 ], [ %.5, %223 ] + %.165141 = phi ptr [ %166, %.lr.ph143 ], [ %224, %221 ] + %.4140 = phi i64 [ %.168.lcssa, %.lr.ph143 ], [ %.5, %221 ] %172 = getelementptr inbounds nuw i8, ptr %.165141, i64 16 %173 = load ptr, ptr %172, align 8, !tbaa !8 %174 = getelementptr inbounds nuw i8, ptr %173, i64 164 @@ -446,8 +438,8 @@ agxblen.exit.i.i119: ; preds = %187 br label %agxbsizeof.exit.i.i108 agxbsizeof.exit.i.i108: ; preds = %193, %agxblen.exit.i.i119 - %.0.i20.i.i109 = phi i64 [ %194, %193 ], [ %192, %agxblen.exit.i.i119 ] - %.0.i14.i.i110 = phi i64 [ %195, %193 ], [ 31, %agxblen.exit.i.i119 ] + %.0.i20.i.i109 = phi i64 [ %194, %191 ], [ %192, %agxblen.exit.i.i119 ] + %.0.i14.i.i110 = phi i64 [ %195, %191 ], [ 31, %agxblen.exit.i.i119 ] %.not.i5.i111 = icmp ult i64 %.0.i20.i.i109, %.0.i14.i.i110 br i1 %.not.i5.i111, label %197, label %196 @@ -457,7 +449,7 @@ agxbsizeof.exit.i.i108: ; preds = %193, %agxblen.exit. br label %197 197: ; preds = %196, %agxbsizeof.exit.i.i108 - %.val.i15.i.i113 = phi i8 [ %.val.i15.pre.i.i112, %196 ], [ %.val.i106, %agxbsizeof.exit.i.i108 ] + %.val.i15.i.i113 = phi i8 [ %.val.i15.pre.i.i112, %194 ], [ %.val.i106, %agxbsizeof.exit.i.i108 ] %.not.i16.i.i114 = icmp eq i8 %.val.i15.i.i113, -1 br i1 %.not.i16.i.i114, label %203, label %198 @@ -482,7 +474,7 @@ agxbsizeof.exit.i.i108: ; preds = %193, %agxblen.exit. br label %agxbputc.exit.i115 agxbputc.exit.i115: ; preds = %203, %198 - %.val.i8.pr.i116 = phi i8 [ %.val.i6.pr.i118, %203 ], [ %202, %198 ] + %.val.i8.pr.i116 = phi i8 [ %.val.i6.pr.i118, %201 ], [ %202, %196 ] %.not.i7.i117 = icmp eq i8 %.val.i8.pr.i116, -1 br i1 %.not.i7.i117, label %209, label %agxbclear.exit.thread.i107 @@ -496,7 +488,7 @@ agxbclear.exit.thread.i107: ; preds = %agxbputc.exit.i115, br label %agxbuse.exit120 agxbuse.exit120: ; preds = %agxbclear.exit.thread.i107, %209 - %211 = phi ptr [ %210, %209 ], [ %7, %agxbclear.exit.thread.i107 ] + %211 = phi ptr [ %210, %207 ], [ %7, %agxbclear.exit.thread.i107 ] %212 = call ptr @agsubg(ptr noundef %0, ptr noundef %211, i32 noundef 1) #14 %213 = call ptr @agbindrec(ptr noundef %212, ptr noundef nonnull @.str.1, i32 noundef 400, i32 noundef 1) #14 %214 = call noalias dereferenceable_or_null(64) ptr @calloc(i64 noundef 1, i64 noundef 64) #15 @@ -519,13 +511,13 @@ gv_alloc.exit121: ; preds = %agxbuse.exit120 br label %223 223: ; preds = %171, %gv_alloc.exit121 - %.5 = phi i64 [ %.4140, %171 ], [ %189, %gv_alloc.exit121 ] + %.5 = phi i64 [ %.4140, %169 ], [ %189, %gv_alloc.exit121 ] %224 = call ptr @agnxtnode(ptr noundef %0, ptr noundef nonnull %.165141) #14 %.not81 = icmp eq ptr %224, null br i1 %.not81, label %._crit_edge144, label %171, !llvm.loop !53 ._crit_edge144: ; preds = %223, %165 - %.4.lcssa = phi i64 [ %.168.lcssa, %165 ], [ %.5, %223 ] + %.4.lcssa = phi i64 [ %.168.lcssa, %163 ], [ %.5, %221 ] %225 = load i64, ptr %25, align 8, !tbaa !54 %226 = icmp ugt i64 %225, 64 br i1 %226, label %227, label %bitarray_reset.exit @@ -597,7 +589,7 @@ agxbfree.exit: ; preds = %bitarray_reset.exit unreachable gv_calloc.exit: ; preds = %.thread.i, %244 - %251 = phi ptr [ %239, %.thread.i ], [ %245, %244 ] + %251 = phi ptr [ %239, %.thread.i ], [ %245, %242 ] %252 = call ptr @agfstsubg(ptr noundef %0) #14 %.not84146 = icmp eq ptr %252, null br i1 %.not84146, label %._crit_edge150, label %.lr.ph149 diff --git a/bench/graphviz/optimized/neatoinit.ll b/bench/graphviz/optimized/neatoinit.ll index 5d8593af154..286907b8529 100644 --- a/bench/graphviz/optimized/neatoinit.ll +++ b/bench/graphviz/optimized/neatoinit.ll @@ -2513,26 +2513,18 @@ gv_calloc.exit106.i: ; preds = %124, %.thread.i105. %177 = icmp ne i32 %176, 0 %178 = zext i1 %177 to i64 %179 = add nuw nsw i64 %175, %178 - %.not.i.i.i.i = icmp eq i64 %179, 0 - br i1 %.not.i.i.i.i, label %.thread.i.i.i.i, label %181 + %180 = call noalias ptr @calloc(i64 noundef %179, i64 noundef 1) #23 + %181 = icmp eq ptr %180, null + br i1 %181, label %182, label %bitarray_new.exit.i.i .thread.i.i.i.i: ; preds = %174 - %180 = call noalias ptr @calloc(i64 noundef 0, i64 noundef 1) #23 - br label %bitarray_new.exit.i.i - -181: ; preds = %174 - %182 = call noalias ptr @calloc(i64 noundef %179, i64 noundef 1) #23 - %183 = icmp eq ptr %182, null - br i1 %183, label %184, label %bitarray_new.exit.i.i - -184: ; preds = %181 - %185 = load ptr, ptr @stderr, align 8, !tbaa !32, !noalias !143 - %186 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %185, ptr noundef nonnull @.str.21, i64 noundef %179) #24, !noalias !143 + %183 = load ptr, ptr @stderr, align 8, !tbaa !32, !noalias !143 + %184 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %183, ptr noundef nonnull @.str.21, i64 noundef %179) #24, !noalias !143 call fastcc void @graphviz_exit() #25 unreachable -bitarray_new.exit.i.i: ; preds = %181, %.thread.i.i.i.i, %170 - %.sroa.0.0.i.i.i = phi ptr [ null, %170 ], [ %180, %.thread.i.i.i.i ], [ %182, %181 ] +bitarray_new.exit.i.i: ; preds = %174, %170 + %.sroa.0.0.i.i.i = phi ptr [ null, %170 ], [ %180, %174 ] store ptr %.sroa.0.0.i.i.i, ptr %7, align 8, !noalias !143 %187 = getelementptr inbounds nuw i8, ptr %7, i64 8 store i64 %172, ptr %187, align 8, !noalias !143 @@ -2586,9 +2578,9 @@ bitarray_new.exit.i.i: ; preds = %181, %.thread.i.i.i unreachable gv_calloc.exit58.i.i: ; preds = %203, %.thread.i57.i.i - %.sroa.9.0.i = phi i32 [ 0, %.thread.i57.i.i ], [ %spec.select.i.i, %203 ] - %.sroa.15.0.i = phi ptr [ %201, %.thread.i57.i.i ], [ %195, %203 ] - %210 = phi ptr [ %202, %.thread.i57.i.i ], [ %204, %203 ] + %.sroa.9.0.i = phi i32 [ 0, %.thread.i57.i.i ], [ %spec.select.i.i, %201 ] + %.sroa.15.0.i = phi ptr [ %201, %.thread.i57.i.i ], [ %195, %201 ] + %210 = phi ptr [ %202, %.thread.i57.i.i ], [ %204, %201 ] %211 = call ptr @agfstsubg(ptr noundef %0) #22, !noalias !143 %.not5194.i.i = icmp eq ptr %211, null br i1 %.not5194.i.i, label %._crit_edge100.i.i, label %.lr.ph99.i.i @@ -2638,7 +2630,7 @@ gv_calloc.exit58.i.i: ; preds = %203, %.thread.i57.i unreachable gv_calloc.exit63.i.i: ; preds = %223, %.thread.i62.i.i - %230 = phi ptr [ %218, %.thread.i62.i.i ], [ %224, %223 ] + %230 = phi ptr [ %218, %.thread.i62.i.i ], [ %224, %221 ] %231 = getelementptr inbounds nuw i8, ptr %.04697.i.i, i64 8 store ptr %230, ptr %.04697.i.i, align 8, !tbaa !134, !noalias !143 %232 = call ptr @agfstnode(ptr noundef nonnull %.15095.i.i) #22, !noalias !143 @@ -2654,8 +2646,8 @@ gv_calloc.exit63.i.i: ; preds = %223, %.thread.i62.i br i1 %.not5382.i.i, label %bitarray_set.exit.i.i, label %.lr.ph86.i.i .lr.ph86.i.i: ; preds = %.lr.ph93.i.i, %237 - %.084.i.i = phi i32 [ %238, %237 ], [ 0, %.lr.ph93.i.i ] - %.03883.i.i = phi ptr [ %239, %237 ], [ %233, %.lr.ph93.i.i ] + %.084.i.i = phi i32 [ %238, %235 ], [ 0, %.lr.ph93.i.i ] + %.03883.i.i = phi ptr [ %239, %235 ], [ %233, %.lr.ph93.i.i ] %234 = load i32, ptr %.03883.i.i, align 8, !noalias !143 %235 = load i32, ptr %.04891.i.i, align 8, !noalias !143 %.unshifted.i.i = xor i32 %235, %234 @@ -2669,7 +2661,7 @@ gv_calloc.exit63.i.i: ; preds = %223, %.thread.i62.i br i1 %.not53.i.i, label %bitarray_set.exit.i.i, label %.lr.ph86.i.i, !llvm.loop !147 bitarray_set.exit.i.i: ; preds = %237, %.lr.ph86.i.i, %.lr.ph93.i.i - %.0.lcssa.i.i = phi i32 [ 0, %.lr.ph93.i.i ], [ %.084.i.i, %.lr.ph86.i.i ], [ %238, %237 ] + %.0.lcssa.i.i = phi i32 [ 0, %.lr.ph93.i.i ], [ %.084.i.i, %.lr.ph86.i.i ], [ %238, %235 ] %240 = getelementptr inbounds nuw i8, ptr %.03992.i.i, i64 4 store i32 %.0.lcssa.i.i, ptr %.03992.i.i, align 4, !tbaa !53, !noalias !143 %241 = load i64, ptr %187, align 8, !tbaa !148, !noalias !143 @@ -2723,7 +2715,7 @@ bitarray_set.exit.i.i: ; preds = %237, %.lr.ph86.i.i, unreachable gv_calloc.exit68.i.i: ; preds = %257, %.thread.i67.i.i - %264 = phi ptr [ %256, %.thread.i67.i.i ], [ %258, %257 ] + %264 = phi ptr [ %256, %.thread.i67.i.i ], [ %258, %255 ] %265 = sext i32 %.sroa.17.2.i to i64 %.not.i69.i.i = icmp eq i32 %.sroa.17.2.i, 0 br i1 %.not.i69.i.i, label %.thread.i72.i.i, label %267 @@ -2755,7 +2747,7 @@ gv_calloc.exit68.i.i: ; preds = %257, %.thread.i67.i unreachable gv_calloc.exit73.i.i: ; preds = %271, %.thread.i72.i.i - %278 = phi ptr [ %266, %.thread.i72.i.i ], [ %272, %271 ] + %278 = phi ptr [ %266, %.thread.i72.i.i ], [ %272, %269 ] %279 = call i32 @agnnodes(ptr noundef %1) #22, !noalias !143 %280 = icmp sgt i32 %279, 0 %.pre106.i.i = load i64, ptr %187, align 8, !tbaa !148, !noalias !143 @@ -2769,8 +2761,8 @@ gv_calloc.exit73.i.i: ; preds = %271, %.thread.i72.i br label %284 284: ; preds = %297, %.lr.ph103.i.i - %.041102.i.i = phi i32 [ 0, %.lr.ph103.i.i ], [ %.142.i.i, %297 ] - %.043101.i.i = phi i32 [ 0, %.lr.ph103.i.i ], [ %298, %297 ] + %.041102.i.i = phi i32 [ 0, %.lr.ph103.i.i ], [ %.142.i.i, %295 ] + %.043101.i.i = phi i32 [ 0, %.lr.ph103.i.i ], [ %298, %295 ] call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %6), !noalias !143 store ptr %281, ptr %6, align 8, !noalias !143 store i64 %.pre106.i.i, ptr %282, align 8, !noalias !143 @@ -2794,7 +2786,7 @@ gv_calloc.exit73.i.i: ; preds = %271, %.thread.i72.i br label %297 297: ; preds = %293, %284 - %.142.i.i = phi i32 [ %.041102.i.i, %284 ], [ %294, %293 ] + %.142.i.i = phi i32 [ %.041102.i.i, %282 ], [ %294, %291 ] %298 = add nuw nsw i32 %.043101.i.i, 1 %299 = call i32 @agnnodes(ptr noundef %1) #22, !noalias !143 %300 = icmp slt i32 %298, %299 @@ -2886,7 +2878,7 @@ gv_calloc.exit112.i: ; preds = %cluster_map.exit.i 330: ; preds = %329, %326, %324, %318, %316 %331 = load i32, ptr %4, align 8, !tbaa !161 %332 = getelementptr inbounds nuw i8, ptr %10, i64 16 - switch i32 %331, label %343 [ + switch i32 %331, label %341 [ i32 17, label %333 i32 16, label %338 ] @@ -2928,32 +2920,32 @@ gv_calloc.exit112.i: ; preds = %cluster_map.exit.i call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %11) #22 %345 = trunc i8 %.sroa.5.0.copyload.i to i1 %346 = fdiv double %.sroa.0.0.copyload.i, 7.200000e+01 + %345 = fmul double %344, 2.000000e+00 + %346 = fdiv double %.sroa.4.0.copyload.i, 7.200000e+01 %347 = fmul double %346, 2.000000e+00 - %348 = fdiv double %.sroa.4.0.copyload.i, 7.200000e+01 - %349 = fmul double %348, 2.000000e+00 - %350 = select i1 %345, double %347, double 0x3FBC71C71C71C71C - %351 = select i1 %345, double %349, double 0x3FBC71C71C71C71C - %352 = getelementptr inbounds nuw i8, ptr %10, i64 24 - store double %350, ptr %352, align 8, !tbaa !164 - %353 = getelementptr inbounds nuw i8, ptr %10, i64 32 - store double %351, ptr %353, align 8, !tbaa !165 - %354 = load i8, ptr @Verbose, align 1, !tbaa !42 - %.not99.i = icmp eq i8 %354, 0 - br i1 %.not99.i, label %358, label %355 - -355: ; preds = %344 - %356 = load ptr, ptr @stderr, align 8, !tbaa !32 - %357 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %356, ptr noundef nonnull @.str.71, double noundef %350, double noundef %351) #24 - br label %358 - -358: ; preds = %355, %344 - %359 = call ptr @agfstnode(ptr noundef %1) #22 - %.not100145.i = icmp eq ptr %359, null + %348 = select i1 %343, double %345, double 0x3FBC71C71C71C71C + %349 = select i1 %343, double %347, double 0x3FBC71C71C71C71C + %350 = getelementptr inbounds nuw i8, ptr %10, i64 24 + store double %348, ptr %350, align 8, !tbaa !164 + %352 = getelementptr inbounds nuw i8, ptr %10, i64 32 + store double %349, ptr %352, align 8, !tbaa !165 + %352 = load i8, ptr @Verbose, align 1, !tbaa !42 + %.not99.i = icmp eq i8 %352, 0 + br i1 %.not99.i, label %356, label %353 + +353: ; preds = %342 + %354 = load ptr, ptr @stderr, align 8, !tbaa !32 + %355 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %354, ptr noundef nonnull @.str.71, double noundef %348, double noundef %349) #24 + br label %356 + +356:; preds = %353, %342 + %357 = call ptr @agfstnode(ptr noundef %1) #22 + %.not100145.i = icmp eq ptr %357, null br i1 %.not100145.i, label %._crit_edge150.i, label %.lr.ph149.i -.lr.ph149.i: ; preds = %358, %.lr.ph149.i - %.084147.i = phi i64 [ %369, %.lr.ph149.i ], [ 0, %358 ] - %.085146.i = phi ptr [ %368, %.lr.ph149.i ], [ %359, %358 ] +.lr.ph149.i: ; preds = %356, %.lr.ph149.i + %.084147.i = phi i64 [ %369, %.lr.ph149.i ], [ 0, %356 ] + %.085146.i = phi ptr [ %368, %.lr.ph149.i ], [ %357, %356 ] %360 = getelementptr inbounds nuw i8, ptr %.085146.i, i64 16 %361 = load ptr, ptr %360, align 8, !tbaa !3 %362 = getelementptr inbounds nuw i8, ptr %361, i64 48 @@ -2969,7 +2961,7 @@ gv_calloc.exit112.i: ; preds = %cluster_map.exit.i %.not100.i = icmp eq ptr %368, null br i1 %.not100.i, label %._crit_edge150.i, label %.lr.ph149.i, !llvm.loop !168 -._crit_edge150.i: ; preds = %.lr.ph149.i, %358 +._crit_edge150.i: ; preds = %.lr.ph149.i, %356 %370 = load ptr, ptr %9, align 8, !tbaa !142 %371 = load i16, ptr @Ndim, align 2, !tbaa !43 %372 = zext i16 %371 to i32 @@ -3001,8 +2993,8 @@ freeClusterData.exit.i: ; preds = %376, %._crit_edge15 br label %384 384: ; preds = %378, %freeClusterData.exit.i, %164 - %385 = phi ptr [ %379, %378 ], [ %165, %164 ], [ %370, %freeClusterData.exit.i ] - %.1.i = phi i32 [ %383, %378 ], [ %169, %164 ], [ %374, %freeClusterData.exit.i ] + %385 = phi ptr [ %379, %376 ], [ %165, %164 ], [ %370, %freeClusterData.exit.i ] + %.1.i = phi i32 [ %383, %376 ], [ %169, %164 ], [ %374, %freeClusterData.exit.i ] %386 = icmp slt i32 %.1.i, 0 br i1 %386, label %387, label %389 @@ -3016,7 +3008,7 @@ freeClusterData.exit.i: ; preds = %376, %._crit_edge15 br i1 %.not101155.i, label %majorization.exit, label %.lr.ph158.i .lr.ph158.i: ; preds = %389, %._crit_edge154.i - %.186156.i = phi ptr [ %399, %._crit_edge154.i ], [ %390, %389 ] + %.186156.i = phi ptr [ %399, %._crit_edge154.i ], [ %390, %387 ] %391 = load i16, ptr @Ndim, align 2, !tbaa !43 %.not159.i = icmp eq i16 %391, 0 br i1 %.not159.i, label %._crit_edge154.i, label %.lr.ph153.i @@ -3038,7 +3030,7 @@ freeClusterData.exit.i: ; preds = %376, %._crit_edge15 br i1 %.not101.i, label %majorization.exit, label %.lr.ph158.i, !llvm.loop !170 400: ; preds = %400, %.lr.ph153.i - %indvars.iv163.i = phi i64 [ 0, %.lr.ph153.i ], [ %indvars.iv.next164.i, %400 ] + %indvars.iv163.i = phi i64 [ 0, %.lr.ph153.i ], [ %indvars.iv.next164.i, %398 ] %401 = getelementptr inbounds nuw ptr, ptr %133, i64 %indvars.iv163.i %402 = load ptr, ptr %401, align 8, !tbaa !135 %403 = getelementptr inbounds double, ptr %402, i64 %396 diff --git a/bench/graphviz/optimized/spring_electrical.ll b/bench/graphviz/optimized/spring_electrical.ll index a5077e50d24..40b58078ad2 100644 --- a/bench/graphviz/optimized/spring_electrical.ll +++ b/bench/graphviz/optimized/spring_electrical.ll @@ -857,26 +857,18 @@ define internal fastcc void @beautify_leaves(i32 noundef range(i32 1, -214748364 %17 = icmp ne i32 %16, 0 %18 = zext i1 %17 to i64 %19 = add nuw nsw i64 %15, %18 - %.not.i.i = icmp eq i64 %19, 0 - br i1 %.not.i.i, label %.thread.i.i, label %21 + %20 = tail call noalias ptr @calloc(i64 noundef range(i64 -2147483648, 2305843009213693953) %19, i64 noundef 1) #22 + %21 = icmp eq ptr %20, null + br i1 %21, label %22, label %bitarray_new.exit .thread.i.i: ; preds = %14 - %20 = tail call noalias ptr @calloc(i64 noundef 0, i64 noundef 1) #22 - br label %bitarray_new.exit - -21: ; preds = %14 - %22 = tail call noalias ptr @calloc(i64 noundef range(i64 -2147483648, 2305843009213693953) %19, i64 noundef 1) #22 - %23 = icmp eq ptr %22, null - br i1 %23, label %24, label %bitarray_new.exit - -24: ; preds = %21 - %25 = load ptr, ptr @stderr, align 8, !tbaa !3 - %26 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %25, ptr noundef nonnull @.str.26, i64 noundef %19) #23 + %23 = load ptr, ptr @stderr, align 8, !tbaa !3 + %24 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %23, ptr noundef nonnull @.str.26, i64 noundef %19) #23 tail call fastcc void @graphviz_exit() #24 unreachable -bitarray_new.exit: ; preds = %3, %.thread.i.i, %21 - %.sroa.0.0.i = phi ptr [ null, %3 ], [ %20, %.thread.i.i ], [ %22, %21 ] +bitarray_new.exit: ; preds = %3, %14 + %.sroa.0.0.i = phi ptr [ null, %3 ], [ %20, %14 ] store ptr %.sroa.0.0.i, ptr %6, align 8 %27 = getelementptr inbounds nuw i8, ptr %6, i64 8 store i64 %12, ptr %27, align 8 @@ -890,24 +882,24 @@ bitarray_new.exit: ; preds = %3, %.thread.i.i, %2 br label %31 31: ; preds = %.lr.ph108, %155 - %indvars.iv112 = phi i64 [ 0, %.lr.ph108 ], [ %indvars.iv.next113, %155 ] + %indvars.iv112 = phi i64 [ 0, %.lr.ph108 ], [ %indvars.iv.next113, %153 ] %indvars.iv.next113 = add nuw nsw i64 %indvars.iv112, 1 %32 = getelementptr inbounds nuw i32, ptr %9, i64 %indvars.iv.next113 + %31 = load i32, ptr %30, align 4, !tbaa !36 + %32 = getelementptr inbounds nuw i32, ptr %9, i64 %indvars.iv112 %33 = load i32, ptr %32, align 4, !tbaa !36 - %34 = getelementptr inbounds nuw i32, ptr %9, i64 %indvars.iv112 - %35 = load i32, ptr %34, align 4, !tbaa !36 - %36 = sub nsw i32 %33, %35 - %.not = icmp eq i32 %36, 1 - br i1 %.not, label %37, label %155 - -37: ; preds = %31 - %38 = load ptr, ptr %6, align 8 - %39 = load i64, ptr %27, align 8 + %34 = sub nsw i32 %31, %33 + %.not = icmp eq i32 %34, 1 + br i1 %.not, label %35, label %153 + +35: ; preds = %31 + %36 = load ptr, ptr %6, align 8 + %37 = load i64, ptr %25, align 8 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %5) - store ptr %38, ptr %5, align 8 - store i64 %39, ptr %29, align 8 - %40 = icmp ult i64 %39, 65 - %.0.i = select i1 %40, ptr %5, ptr %38 + store ptr %36, ptr %5, align 8 + store i64 %37, ptr %29, align 8 + %40 = icmp ult i64 %37, 65 + %.0.i = select i1 %40, ptr %5, ptr %36 %41 = lshr i64 %indvars.iv112, 3 %42 = getelementptr inbounds nuw i8, ptr %.0.i, i64 %41 %43 = load i8, ptr %42, align 1, !tbaa !56 @@ -920,15 +912,15 @@ bitarray_new.exit: ; preds = %3, %.thread.i.i, %2 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) br i1 %.not85, label %49, label %155 -49: ; preds = %37 - %50 = sext i32 %35 to i64 +49: ; preds = %35 + %50 = sext i32 %33 to i64 %51 = getelementptr inbounds i32, ptr %11, i64 %50 %52 = load i32, ptr %51, align 4, !tbaa !36 %53 = sext i32 %52 to i64 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) - store ptr %38, ptr %4, align 8 - store i64 %39, ptr %30, align 8 - %.0.i61 = select i1 %40, ptr %4, ptr %38 + store ptr %36, ptr %4, align 8 + store i64 %37, ptr %30, align 8 + %.0.i61 = select i1 %40, ptr %4, ptr %36 %54 = lshr i64 %53, 3 %55 = getelementptr inbounds nuw i8, ptr %.0.i61, i64 %54 %56 = load i8, ptr %55, align 1, !tbaa !56 @@ -941,7 +933,7 @@ bitarray_new.exit: ; preds = %3, %.thread.i.i, %2 br i1 %.not86, label %bitarray_set.exit, label %155 bitarray_set.exit: ; preds = %49 - %spec.select = select i1 %40, ptr %6, ptr %38 + %spec.select = select i1 %40, ptr %6, ptr %36 %61 = trunc i32 %52 to i8 %62 = and i8 %61, 7 %63 = shl nuw i8 1, %62 @@ -950,24 +942,24 @@ bitarray_set.exit: ; preds = %49 %66 = or i8 %65, %63 store i8 %66, ptr %64, align 1, !tbaa !56 %67 = getelementptr inbounds i32, ptr %9, i64 %53 + %66 = load i32, ptr %65, align 4, !tbaa !36 + %67 = getelementptr i8, ptr %65, i64 4 %68 = load i32, ptr %67, align 4, !tbaa !36 - %69 = getelementptr i8, ptr %67, i64 4 - %70 = load i32, ptr %69, align 4, !tbaa !36 - %71 = icmp slt i32 %68, %70 - br i1 %71, label %.lr.ph.preheader, label %._crit_edge106 + %69 = icmp slt i32 %66, %68 + br i1 %69, label %.lr.ph.preheader, label %._crit_edge106 .lr.ph.preheader: ; preds = %bitarray_set.exit - %72 = sext i32 %68 to i64 + %72 = sext i32 %66 to i64 br label %.lr.ph .lr.ph: ; preds = %.lr.ph.preheader, %125 - %73 = phi i32 [ %70, %.lr.ph.preheader ], [ %126, %125 ] - %indvars.iv = phi i64 [ %72, %.lr.ph.preheader ], [ %indvars.iv.next, %125 ] - %.05697 = phi double [ 0.000000e+00, %.lr.ph.preheader ], [ %.1, %125 ] - %.sroa.21.295 = phi i64 [ 0, %.lr.ph.preheader ], [ %.sroa.21.3, %125 ] - %.sroa.14.294 = phi i64 [ 0, %.lr.ph.preheader ], [ %.sroa.14.3, %125 ] - %.sroa.9.293 = phi i64 [ 0, %.lr.ph.preheader ], [ %.sroa.9.3, %125 ] - %.sroa.0.292 = phi ptr [ null, %.lr.ph.preheader ], [ %.sroa.0.3, %125 ] + %73 = phi i32 [ %68, %.lr.ph.preheader ], [ %126, %123 ] + %indvars.iv = phi i64 [ %72, %.lr.ph.preheader ], [ %indvars.iv.next, %123 ] + %.05697 = phi double [ 0.000000e+00, %.lr.ph.preheader ], [ %.1, %123 ] + %.sroa.21.295 = phi i64 [ 0, %.lr.ph.preheader ], [ %.sroa.21.3, %123 ] + %.sroa.14.294 = phi i64 [ 0, %.lr.ph.preheader ], [ %.sroa.14.3, %123 ] + %.sroa.9.293 = phi i64 [ 0, %.lr.ph.preheader ], [ %.sroa.9.3, %123 ] + %.sroa.0.292 = phi ptr [ null, %.lr.ph.preheader ], [ %.sroa.0.3, %123 ] %74 = getelementptr inbounds i32, ptr %11, i64 %indvars.iv %75 = load i32, ptr %74, align 4, !tbaa !36 %76 = sext i32 %75 to i64 @@ -1031,7 +1023,7 @@ bitarray_set.exit64: ; preds = %.lr.ph br label %ints_append.exit 117: ; preds = %101, %98 - %.2.i.ph.i = phi i32 [ 34, %98 ], [ 12, %101 ] + %.2.i.ph.i = phi i32 [ 34, %96 ], [ 12, %99 ] %118 = load ptr, ptr @stderr, align 8, !tbaa !3 %119 = tail call ptr @strerror(i32 noundef %.2.i.ph.i) #25 %120 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %118, ptr noundef nonnull @.str.27, ptr noundef %119) #23 @@ -1039,15 +1031,15 @@ bitarray_set.exit64: ; preds = %.lr.ph unreachable ints_append.exit: ; preds = %105, %111, %bitarray_set.exit64 - %.sroa.0.4 = phi ptr [ %.sroa.0.292, %bitarray_set.exit64 ], [ %103, %111 ], [ %103, %105 ] - %.sroa.9.5 = phi i64 [ %.sroa.9.293, %bitarray_set.exit64 ], [ %113, %111 ], [ %.sroa.9.293, %105 ] - %.sroa.21.4 = phi i64 [ %.sroa.21.295, %bitarray_set.exit64 ], [ %spec.select.i.i, %111 ], [ %spec.select.i.i, %105 ] + %.sroa.0.4 = phi ptr [ %.sroa.0.292, %bitarray_set.exit64 ], [ %103, %109 ], [ %103, %103 ] + %.sroa.9.5 = phi i64 [ %.sroa.9.293, %bitarray_set.exit64 ], [ %113, %109 ], [ %.sroa.9.293, %103 ] + %.sroa.21.4 = phi i64 [ %.sroa.21.295, %bitarray_set.exit64 ], [ %spec.select.i.i, %109 ], [ %spec.select.i.i, %103 ] %121 = add i64 %.sroa.9.5, %.sroa.14.294 %122 = urem i64 %121, %.sroa.21.4 %123 = getelementptr inbounds nuw i32, ptr %.sroa.0.4, i64 %122 store i32 %96, ptr %123, align 4, !tbaa !36 %124 = add i64 %.sroa.14.294, 1 - %.pre = load i32, ptr %69, align 4, !tbaa !36 + %.pre = load i32, ptr %67, align 4, !tbaa !36 br label %125 125: ; preds = %.lr.ph, %ints_append.exit @@ -1079,13 +1071,13 @@ ints_append.exit: ; preds = %105, %111, %bitarra br label %138 ._crit_edge106: ; preds = %138, %bitarray_set.exit, %._crit_edge - %.sroa.0.2.lcssa123132 = phi ptr [ %.sroa.0.3, %._crit_edge ], [ null, %bitarray_set.exit ], [ %.sroa.0.3, %138 ] + %.sroa.0.2.lcssa123132 = phi ptr [ %.sroa.0.3, %._crit_edge ], [ null, %bitarray_set.exit ], [ %.sroa.0.3, %136 ] tail call void @free(ptr noundef %.sroa.0.2.lcssa123132) #25 br label %155 138: ; preds = %.lr.ph105, %138 - %.0103 = phi i64 [ 0, %.lr.ph105 ], [ %154, %138 ] - %.054102 = phi double [ 1.000000e-01, %.lr.ph105 ], [ %153, %138 ] + %.0103 = phi i64 [ 0, %.lr.ph105 ], [ %154, %136 ] + %.054102 = phi double [ 1.000000e-01, %.lr.ph105 ], [ %153, %136 ] %139 = add i64 %.0103, %.sroa.9.3 %140 = urem i64 %139, %.sroa.21.3 %141 = getelementptr inbounds nuw i32, ptr %.sroa.0.3, i64 %140 @@ -1107,7 +1099,7 @@ ints_append.exit: ; preds = %105, %111, %bitarra %exitcond.not = icmp eq i64 %154, %.sroa.14.3 br i1 %exitcond.not, label %._crit_edge106, label %138, !llvm.loop !62 -155: ; preds = %49, %._crit_edge106, %37, %31 +155: ; preds = %49, %._crit_edge106, %35, %31 %exitcond115.not = icmp eq i64 %indvars.iv.next113, %wide.trip.count br i1 %exitcond115.not, label %._crit_edge109.loopexit, label %31, !llvm.loop !63 diff --git a/bench/hyperscan/optimized/dfa_min.ll b/bench/hyperscan/optimized/dfa_min.ll index 493589324ea..4ef9ad0f2a4 100644 --- a/bench/hyperscan/optimized/dfa_min.ll +++ b/bench/hyperscan/optimized/dfa_min.ll @@ -6395,15 +6395,15 @@ define linkonce_odr hidden void @_ZNK3ue215partitioned_setItE16find_overlappingE %9 = ptrtoint ptr %7 to i64 %10 = sub i64 %8, %9 %11 = sdiv exact i64 %10, 24 + %.not.i = icmp eq ptr %6, %7 + br i1 %.not.i, label %23, label %_ZNKSt6vectorImSaImEE12_M_check_lenEmPKc.exit.i + +_ZNKSt6vectorImSaImEE12_M_check_lenEmPKc.exit.i: ; preds = %3 %12 = lshr i64 %11, 6 %13 = and i64 %11, 63 %14 = icmp ne i64 %13, 0 %15 = zext i1 %14 to i64 %16 = add nuw nsw i64 %12, %15 - %.not.i = icmp eq i64 %16, 0 - br i1 %.not.i, label %23, label %_ZNKSt6vectorImSaImEE12_M_check_lenEmPKc.exit.i - -_ZNKSt6vectorImSaImEE12_M_check_lenEmPKc.exit.i: ; preds = %3 %17 = shl nuw nsw i64 %16, 3 %18 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %17) #22 store i64 0, ptr %18, align 8 @@ -6576,12 +6576,11 @@ _ZNK5boost14dynamic_bitsetImSaImEE10find_firstEv.exit: ; preds = %65, %_ZN5boost %76 = getelementptr inbounds nuw i8, ptr %2, i64 8 %77 = getelementptr inbounds nuw i8, ptr %2, i64 16 %78 = add nsw i64 %11, -1 - %79 = icmp eq ptr %6, %7 %.pre = load ptr, ptr %76, align 8 br label %93 80: ; preds = %.lr.ph, %80 - %.sroa.088.0105 = phi ptr [ %24, %.lr.ph ], [ %91, %80 ] + %.sroa.088.0105 = phi ptr [ %24, %.lr.ph ], [ %91, %79 ] %81 = load i16, ptr %.sroa.088.0105, align 2 %82 = zext i16 %81 to i64 %83 = getelementptr inbounds nuw i64, ptr %28, i64 %82 @@ -6692,9 +6691,9 @@ _ZNSt6vectorImSaImEE17_M_realloc_insertIJRKmEEEvN9__gnu_cxx17__normal_iteratorIP br label %_ZNSt6vectorImSaImEE9push_backERKm.exit _ZNSt6vectorImSaImEE9push_backERKm.exit: ; preds = %_ZNSt6vectorImSaImEE17_M_realloc_insertIJRKmEEEvN9__gnu_cxx17__normal_iteratorIPmS1_EEDpOT_.exit.i, %96 - %119 = phi ptr [ %116, %_ZNSt6vectorImSaImEE17_M_realloc_insertIJRKmEEEvN9__gnu_cxx17__normal_iteratorIPmS1_EEDpOT_.exit.i ], [ %98, %96 ] + %119 = phi ptr [ %116, %_ZNSt6vectorImSaImEE17_M_realloc_insertIJRKmEEEvN9__gnu_cxx17__normal_iteratorIPmS1_EEDpOT_.exit.i ], [ %98, %95 ] %120 = icmp uge i64 %storemerge123, %78 - %or.cond.i = or i1 %79, %120 + %or.cond.i = or i1 %.not.i, %120 br i1 %or.cond.i, label %._crit_edge125, label %121 121: ; preds = %_ZNSt6vectorImSaImEE9push_backERKm.exit @@ -6714,9 +6713,9 @@ _ZNSt6vectorImSaImEE9push_backERKm.exit: ; preds = %_ZNSt6vectorImSaImE br i1 %.not17.i.i.i.i, label %_ZN5boost6detail10lowest_bitImEEiT_.exit.i, label %select.unfold.i.i.i.i select.unfold.i.i.i.i: ; preds = %128, %select.unfold.i.i.i.i - %.020.i.i.i.i = phi i64 [ %spec.select16.i.i.i.i, %select.unfold.i.i.i.i ], [ %129, %128 ] - %.0919.i.i.i.i = phi i32 [ %spec.select15.i.i.i.i, %select.unfold.i.i.i.i ], [ 0, %128 ] - %.01118.i.i.i.i = phi i32 [ %132, %select.unfold.i.i.i.i ], [ 32, %128 ] + %.020.i.i.i.i = phi i64 [ %spec.select16.i.i.i.i, %select.unfold.i.i.i.i ], [ %129, %127 ] + %.0919.i.i.i.i = phi i32 [ %spec.select15.i.i.i.i, %select.unfold.i.i.i.i ], [ 0, %127 ] + %.01118.i.i.i.i = phi i32 [ %132, %select.unfold.i.i.i.i ], [ 32, %127 ] %130 = zext nneg i32 %.01118.i.i.i.i to i64 %131 = lshr i64 %.020.i.i.i.i, %130 %.not13.i.i.i.i = icmp eq i64 %131, 0 @@ -6732,7 +6731,7 @@ _ZN5boost6detail10lowest_bitImEEiT_.exit.loopexit.i: ; preds = %select.unfold.i. br label %_ZN5boost6detail10lowest_bitImEEiT_.exit.i _ZN5boost6detail10lowest_bitImEEiT_.exit.i: ; preds = %_ZN5boost6detail10lowest_bitImEEiT_.exit.loopexit.i, %128 - %.09.lcssa.i.i.i.i = phi i64 [ 0, %128 ], [ %134, %_ZN5boost6detail10lowest_bitImEEiT_.exit.loopexit.i ] + %.09.lcssa.i.i.i.i = phi i64 [ 0, %127 ], [ %134, %_ZN5boost6detail10lowest_bitImEEiT_.exit.loopexit.i ] %135 = add i64 %.09.lcssa.i.i.i.i, %122 br label %_ZNK5boost14dynamic_bitsetImSaImEE9find_nextEm.exit @@ -6745,8 +6744,8 @@ _ZN5boost6detail10lowest_bitImEEiT_.exit.i: ; preds = %_ZN5boost6detail10l br i1 %140, label %.lr.ph.i.i.i.i72, label %._crit_edge.i.i.i.i46 .lr.ph.i.i.i.i72: ; preds = %136, %151 - %.052.i.i.i.i73 = phi i64 [ %153, %151 ], [ %139, %136 ] - %.sroa.032.051.i.i.i.i74 = phi ptr [ %152, %151 ], [ %gep, %136 ] + %.052.i.i.i.i73 = phi i64 [ %153, %150 ], [ %139, %135 ] + %.sroa.032.051.i.i.i.i74 = phi ptr [ %152, %150 ], [ %gep, %135 ] %141 = load i64, ptr %.sroa.032.051.i.i.i.i74, align 8 %.not9.i75 = icmp eq i64 %141, 0 br i1 %.not9.i75, label %142, label %_ZSt7find_ifIN9__gnu_cxx17__normal_iteratorIPKmSt6vectorImSaImEEEEPFbmEET_SA_SA_T0_.exit.i52 @@ -6781,8 +6780,8 @@ _ZN5boost6detail10lowest_bitImEEiT_.exit.i: ; preds = %_ZN5boost6detail10l br label %._crit_edge.i.i.i.i46 ._crit_edge.i.i.i.i46: ; preds = %._crit_edge.loopexit.i.i.i.i82, %136 - %.pre-phi58.i.i.i.i47 = phi i64 [ %.pre57.i.i.i.i84, %._crit_edge.loopexit.i.i.i.i82 ], [ %138, %136 ] - %.sroa.032.0.lcssa.i.i.i.i48 = phi ptr [ %152, %._crit_edge.loopexit.i.i.i.i82 ], [ %gep, %136 ] + %.pre-phi58.i.i.i.i47 = phi i64 [ %.pre57.i.i.i.i84, %._crit_edge.loopexit.i.i.i.i82 ], [ %138, %135 ] + %.sroa.032.0.lcssa.i.i.i.i48 = phi ptr [ %152, %._crit_edge.loopexit.i.i.i.i82 ], [ %gep, %135 ] %155 = ashr exact i64 %.pre-phi58.i.i.i.i47, 3 switch i64 %155, label %_ZSt7find_ifIN9__gnu_cxx17__normal_iteratorIPKmSt6vectorImSaImEEEEPFbmEET_SA_SA_T0_.exit.i52 [ i64 3, label %156 @@ -6800,7 +6799,7 @@ _ZN5boost6detail10lowest_bitImEEiT_.exit.i: ; preds = %_ZN5boost6detail10l br label %160 160: ; preds = %158, %._crit_edge.i.i.i.i46 - %.sroa.032.1.i.i.i.i69 = phi ptr [ %159, %158 ], [ %.sroa.032.0.lcssa.i.i.i.i48, %._crit_edge.i.i.i.i46 ] + %.sroa.032.1.i.i.i.i69 = phi ptr [ %159, %157 ], [ %.sroa.032.0.lcssa.i.i.i.i48, %._crit_edge.i.i.i.i46 ] %161 = load i64, ptr %.sroa.032.1.i.i.i.i69, align 8 %.not14.i70 = icmp eq i64 %161, 0 br i1 %.not14.i70, label %162, label %_ZSt7find_ifIN9__gnu_cxx17__normal_iteratorIPKmSt6vectorImSaImEEEEPFbmEET_SA_SA_T0_.exit.i52 @@ -6810,7 +6809,7 @@ _ZN5boost6detail10lowest_bitImEEiT_.exit.i: ; preds = %_ZN5boost6detail10l br label %164 164: ; preds = %162, %._crit_edge.i.i.i.i46 - %.sroa.032.2.i.i.i.i49 = phi ptr [ %163, %162 ], [ %.sroa.032.0.lcssa.i.i.i.i48, %._crit_edge.i.i.i.i46 ] + %.sroa.032.2.i.i.i.i49 = phi ptr [ %163, %161 ], [ %.sroa.032.0.lcssa.i.i.i.i48, %._crit_edge.i.i.i.i46 ] %165 = load i64, ptr %.sroa.032.2.i.i.i.i49, align 8 %.not15.i50 = icmp eq i64 %165, 0 %spec.select.i.i.i.i51 = select i1 %.not15.i50, ptr %.sroa.13.0, ptr %.sroa.032.2.i.i.i.i49 @@ -6829,7 +6828,7 @@ _ZSt7find_ifIN9__gnu_cxx17__normal_iteratorIPKmSt6vectorImSaImEEEEPFbmEET_SA_SA_ br label %_ZSt7find_ifIN9__gnu_cxx17__normal_iteratorIPKmSt6vectorImSaImEEEEPFbmEET_SA_SA_T0_.exit.i52 _ZSt7find_ifIN9__gnu_cxx17__normal_iteratorIPKmSt6vectorImSaImEEEEPFbmEET_SA_SA_T0_.exit.i52: ; preds = %.lr.ph.i.i.i.i72, %_ZSt7find_ifIN9__gnu_cxx17__normal_iteratorIPKmSt6vectorImSaImEEEEPFbmEET_SA_SA_T0_.exit.i52.loopexit.split.loop.exit, %_ZSt7find_ifIN9__gnu_cxx17__normal_iteratorIPKmSt6vectorImSaImEEEEPFbmEET_SA_SA_T0_.exit.i52.loopexit.split.loop.exit151, %_ZSt7find_ifIN9__gnu_cxx17__normal_iteratorIPKmSt6vectorImSaImEEEEPFbmEET_SA_SA_T0_.exit.i52.loopexit.split.loop.exit153, %164, %160, %156, %._crit_edge.i.i.i.i46 - %.sroa.08.0.in.sroa.speculated.i.i.i.i53 = phi ptr [ %.sroa.032.0.lcssa.i.i.i.i48, %156 ], [ %.sroa.032.1.i.i.i.i69, %160 ], [ %.sroa.13.0, %._crit_edge.i.i.i.i46 ], [ %spec.select.i.i.i.i51, %164 ], [ %166, %_ZSt7find_ifIN9__gnu_cxx17__normal_iteratorIPKmSt6vectorImSaImEEEEPFbmEET_SA_SA_T0_.exit.i52.loopexit.split.loop.exit ], [ %167, %_ZSt7find_ifIN9__gnu_cxx17__normal_iteratorIPKmSt6vectorImSaImEEEEPFbmEET_SA_SA_T0_.exit.i52.loopexit.split.loop.exit151 ], [ %168, %_ZSt7find_ifIN9__gnu_cxx17__normal_iteratorIPKmSt6vectorImSaImEEEEPFbmEET_SA_SA_T0_.exit.i52.loopexit.split.loop.exit153 ], [ %.sroa.032.051.i.i.i.i74, %.lr.ph.i.i.i.i72 ] + %.sroa.08.0.in.sroa.speculated.i.i.i.i53 = phi ptr [ %.sroa.032.0.lcssa.i.i.i.i48, %155 ], [ %.sroa.032.1.i.i.i.i69, %159 ], [ %.sroa.13.0, %._crit_edge.i.i.i.i46 ], [ %spec.select.i.i.i.i51, %163 ], [ %166, %_ZSt7find_ifIN9__gnu_cxx17__normal_iteratorIPKmSt6vectorImSaImEEEEPFbmEET_SA_SA_T0_.exit.i52.loopexit.split.loop.exit ], [ %167, %_ZSt7find_ifIN9__gnu_cxx17__normal_iteratorIPKmSt6vectorImSaImEEEEPFbmEET_SA_SA_T0_.exit.i52.loopexit.split.loop.exit151 ], [ %168, %_ZSt7find_ifIN9__gnu_cxx17__normal_iteratorIPKmSt6vectorImSaImEEEEPFbmEET_SA_SA_T0_.exit.i52.loopexit.split.loop.exit153 ], [ %.sroa.032.051.i.i.i.i74, %.lr.ph.i.i.i.i72 ] %169 = ptrtoint ptr %.sroa.08.0.in.sroa.speculated.i.i.i.i53 to i64 %170 = sub i64 %169, %30 %.not.i54 = icmp ult i64 %170, %31 @@ -6845,9 +6844,9 @@ _ZSt7find_ifIN9__gnu_cxx17__normal_iteratorIPKmSt6vectorImSaImEEEEPFbmEET_SA_SA_ br i1 %.not17.i.i.i.i57, label %_ZN5boost6detail10lowest_bitImEEiT_.exit.i67, label %select.unfold.i.i.i.i58 select.unfold.i.i.i.i58: ; preds = %171, %select.unfold.i.i.i.i58 - %.020.i.i.i.i59 = phi i64 [ %spec.select16.i.i.i.i64, %select.unfold.i.i.i.i58 ], [ %175, %171 ] - %.0919.i.i.i.i60 = phi i32 [ %spec.select15.i.i.i.i63, %select.unfold.i.i.i.i58 ], [ 0, %171 ] - %.01118.i.i.i.i61 = phi i32 [ %178, %select.unfold.i.i.i.i58 ], [ 32, %171 ] + %.020.i.i.i.i59 = phi i64 [ %spec.select16.i.i.i.i64, %select.unfold.i.i.i.i58 ], [ %175, %170 ] + %.0919.i.i.i.i60 = phi i32 [ %spec.select15.i.i.i.i63, %select.unfold.i.i.i.i58 ], [ 0, %170 ] + %.01118.i.i.i.i61 = phi i32 [ %178, %select.unfold.i.i.i.i58 ], [ 32, %170 ] %176 = zext nneg i32 %.01118.i.i.i.i61 to i64 %177 = lshr i64 %.020.i.i.i.i59, %176 %.not13.i.i.i.i62 = icmp eq i64 %177, 0 @@ -6863,7 +6862,7 @@ _ZN5boost6detail10lowest_bitImEEiT_.exit.loopexit.i66: ; preds = %select.unfold. br label %_ZN5boost6detail10lowest_bitImEEiT_.exit.i67 _ZN5boost6detail10lowest_bitImEEiT_.exit.i67: ; preds = %_ZN5boost6detail10lowest_bitImEEiT_.exit.loopexit.i66, %171 - %.09.lcssa.i.i.i.i68 = phi i64 [ 0, %171 ], [ %180, %_ZN5boost6detail10lowest_bitImEEiT_.exit.loopexit.i66 ] + %.09.lcssa.i.i.i.i68 = phi i64 [ 0, %170 ], [ %180, %_ZN5boost6detail10lowest_bitImEEiT_.exit.loopexit.i66 ] %181 = add i64 %.09.lcssa.i.i.i.i68, %172 br label %_ZNK5boost14dynamic_bitsetImSaImEE9find_nextEm.exit diff --git a/bench/hyperscan/optimized/mcclellancompile.ll b/bench/hyperscan/optimized/mcclellancompile.ll index 774f844f12d..f414ac91de7 100644 --- a/bench/hyperscan/optimized/mcclellancompile.ll +++ b/bench/hyperscan/optimized/mcclellancompile.ll @@ -2654,6 +2654,10 @@ _ZNSt5queueItSt5dequeItSaItEEEC2IS2_vEEv.exit.i: ; preds = %_ZN3ue212_GLOBAL__N %261 = getelementptr inbounds nuw i8, ptr %259, i64 24 %262 = load ptr, ptr %261, align 8 %263 = load ptr, ptr %260, align 8 + %.not.i30.i = icmp eq ptr %262, %263 + br i1 %.not.i30.i, label %279, label %_ZNKSt6vectorImSaImEE12_M_check_lenEmPKc.exit.i.i + +_ZNKSt6vectorImSaImEE12_M_check_lenEmPKc.exit.i.i: ; preds = %_ZNSt5queueItSt5dequeItSaItEEEC2IS2_vEEv.exit.i %264 = ptrtoint ptr %262 to i64 %265 = ptrtoint ptr %263 to i64 %266 = sub i64 %264, %265 @@ -2663,10 +2667,6 @@ _ZNSt5queueItSt5dequeItSaItEEEC2IS2_vEEv.exit.i: ; preds = %_ZN3ue212_GLOBAL__N %270 = icmp ne i64 %269, 0 %271 = zext i1 %270 to i64 %272 = add nuw nsw i64 %268, %271 - %.not.i30.i = icmp eq i64 %272, 0 - br i1 %.not.i30.i, label %279, label %_ZNKSt6vectorImSaImEE12_M_check_lenEmPKc.exit.i.i - -_ZNKSt6vectorImSaImEE12_M_check_lenEmPKc.exit.i.i: ; preds = %_ZNSt5queueItSt5dequeItSaItEEEC2IS2_vEEv.exit.i %273 = shl nuw nsw i64 %272, 3 %274 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %273) #23 to label %.noexc158.i unwind label %_ZNSt6vectorImSaImEED2Ev.exit.i.i diff --git a/bench/hyperscan/optimized/ng_mcclellan.ll b/bench/hyperscan/optimized/ng_mcclellan.ll index 12b7b18fa0a..f1e57b0bad2 100644 --- a/bench/hyperscan/optimized/ng_mcclellan.ll +++ b/bench/hyperscan/optimized/ng_mcclellan.ll @@ -2680,16 +2680,15 @@ _ZNSt6vectorIN3ue29CharReachESaIS1_EED2Ev.exit.i.i: ; preds = %344, %_ZN3ue2L10p 348: ; preds = %_ZNSt6vectorIN3ue29CharReachESaIS1_EED2Ev.exit.i.i, %_ZNSt6vectorIN3ue29CharReachESaIS1_EED2Ev.exit.i.i, %_ZNSt6vectorIN3ue29CharReachESaIS1_EED2Ev.exit.i.i call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %18) #25 %349 = load i32, ptr %49, align 8 - %.fr.i.i = freeze i32 %349 - %350 = zext i32 %.fr.i.i to i64 + %350 = zext i32 %349 to i64 %351 = getelementptr inbounds nuw i8, ptr %18, i64 24 - %352 = add nuw nsw i64 %350, 63 - %353 = lshr i64 %352, 6 - %.not.i38.i.i = icmp eq i32 %.fr.i.i, 0 + %.not.i38.i.i = icmp eq i32 %349, 0 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %18, i8 0, i64 24, i1 false) br i1 %.not.i38.i.i, label %364, label %_ZNKSt6vectorImSaImEE12_M_check_lenEmPKc.exit.i.i.i _ZNKSt6vectorImSaImEE12_M_check_lenEmPKc.exit.i.i.i: ; preds = %348 + %352 = add nuw nsw i64 %350, 63 + %353 = lshr i64 %352, 6 %354 = getelementptr inbounds nuw i8, ptr %18, i64 8 %355 = getelementptr inbounds nuw i8, ptr %18, i64 16 %356 = shl nuw nsw i64 %353, 3 @@ -4194,13 +4193,13 @@ _ZNSt6vectorIN3ue29CharReachESaIS1_EED2Ev.exit.i.i98: ; preds = %928, %_ZN3ue2L1 %933 = load i32, ptr %545, align 8 %934 = zext i32 %933 to i64 %935 = getelementptr inbounds nuw i8, ptr %13, i64 24 - %936 = add nuw nsw i64 %934, 63 - %937 = lshr i64 %936, 6 %.not.i101.i.i = icmp eq i32 %933, 0 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %13, i8 0, i64 24, i1 false) br i1 %.not.i101.i.i, label %948, label %_ZNKSt6vectorImSaImEE12_M_check_lenEmPKc.exit.i.i.i99 _ZNKSt6vectorImSaImEE12_M_check_lenEmPKc.exit.i.i.i99: ; preds = %932 + %936 = add nuw nsw i64 %934, 63 + %937 = lshr i64 %936, 6 %938 = getelementptr inbounds nuw i8, ptr %13, i64 8 %939 = getelementptr inbounds nuw i8, ptr %13, i64 16 %940 = shl nuw nsw i64 %937, 3 diff --git a/bench/hyperscan/optimized/ng_misc_opt.ll b/bench/hyperscan/optimized/ng_misc_opt.ll index 09e84daba68..7cf6b6ef01c 100644 --- a/bench/hyperscan/optimized/ng_misc_opt.ll +++ b/bench/hyperscan/optimized/ng_misc_opt.ll @@ -8824,17 +8824,17 @@ _ZNSt15__allocated_ptrISaISt23_Sp_counted_ptr_inplaceISt6vectorIhSaIhEESaIvELN9_ call void @llvm.memset.p0.i64(ptr align 1 %26, i8 0, i64 %32, i1 false), !noalias !749 %33 = load i64, ptr %5, align 8 %34 = getelementptr inbounds nuw i8, ptr %0, i64 72 - %35 = lshr i64 %33, 6 - %36 = and i64 %33, 63 - %37 = icmp ne i64 %36, 0 - %38 = zext i1 %37 to i64 - %39 = add nuw nsw i64 %35, %38 - %.not.i = icmp eq i64 %39, 0 + %.not.i = icmp eq i64 %33, 0 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %34, i8 0, i64 32, i1 false) br i1 %.not.i, label %45, label %40 40: ; preds = %25 - invoke void @_ZNSt6vectorImSaImEE17_M_default_appendEm(ptr noundef nonnull align 8 dereferenceable(32) %34, i64 noundef %39) + %36 = lshr i64 %33, 6 + %37 = and i64 %33, 63 + %38 = icmp ne i64 %37, 0 + %39 = zext i1 %38 to i64 + %40 = add nuw nsw i64 %36, %39 + invoke void @_ZNSt6vectorImSaImEE17_M_default_appendEm(ptr noundef nonnull align 8 dereferenceable(32) %34, i64 noundef %40) to label %45 unwind label %41 41: ; preds = %40 diff --git a/bench/influxdb-rs/optimized/1qfvsl8a7jfomqbf.ll b/bench/influxdb-rs/optimized/1qfvsl8a7jfomqbf.ll index be8bd803fda..b809e37a8bd 100644 --- a/bench/influxdb-rs/optimized/1qfvsl8a7jfomqbf.ll +++ b/bench/influxdb-rs/optimized/1qfvsl8a7jfomqbf.ll @@ -56,8 +56,6 @@ target triple = "x86_64-unknown-linux-gnu" @anon.3a573e31fa13f546b6d503667aff8f01.62 = private unnamed_addr constant <{ [121 x i8] }> <{ [121 x i8] c"/home/dtcxzyw/.cargo/registry/src/mirrors.tuna.tsinghua.edu.cn-2eab394af869c8a2/arrow-buffer-50.0.0/src/buffer/mutable.rs" }>, align 1 @anon.3a573e31fa13f546b6d503667aff8f01.63 = private unnamed_addr constant <{ ptr, [16 x i8] }> <{ ptr @anon.3a573e31fa13f546b6d503667aff8f01.62, [16 x i8] c"y\00\00\00\00\00\00\00I\00\00\00C\00\00\00" }>, align 8 @anon.3a573e31fa13f546b6d503667aff8f01.66 = private unnamed_addr constant <{ ptr, [16 x i8] }> <{ ptr @anon.3a573e31fa13f546b6d503667aff8f01.60, [16 x i8] c"x\00\00\00\00\00\00\00R\00\00\00\05\00\00\00" }>, align 8 -@anon.3a573e31fa13f546b6d503667aff8f01.69 = private unnamed_addr constant <{ [122 x i8] }> <{ [122 x i8] c"/home/dtcxzyw/.cargo/registry/src/mirrors.tuna.tsinghua.edu.cn-2eab394af869c8a2/arrow-buffer-50.0.0/src/builder/boolean.rs" }>, align 1 -@anon.3a573e31fa13f546b6d503667aff8f01.71 = private unnamed_addr constant <{ ptr, [16 x i8] }> <{ ptr @anon.3a573e31fa13f546b6d503667aff8f01.69, [16 x i8] c"z\00\00\00\00\00\00\00\A2\00\00\00<\00\00\00" }>, align 8 @anon.3a573e31fa13f546b6d503667aff8f01.72 = private unnamed_addr constant <{ [24 x i8] }> <{ [24 x i8] c"Array expects DataType::" }>, align 1 @anon.3a573e31fa13f546b6d503667aff8f01.73 = private unnamed_addr constant <{ ptr, [8 x i8], ptr, [8 x i8], ptr, [8 x i8] }> <{ ptr @anon.3a573e31fa13f546b6d503667aff8f01.11, [8 x i8] zeroinitializer, ptr @anon.3a573e31fa13f546b6d503667aff8f01.11, [8 x i8] zeroinitializer, ptr @anon.3a573e31fa13f546b6d503667aff8f01.72, [8 x i8] c"\18\00\00\00\00\00\00\00" }>, align 8 @anon.3a573e31fa13f546b6d503667aff8f01.74 = private unnamed_addr constant <{ ptr, [16 x i8] }> <{ ptr @anon.3a573e31fa13f546b6d503667aff8f01.19, [16 x i8] c"z\00\00\00\00\00\00\00\EC\01\00\00\09\00\00\00" }>, align 8 @@ -744,15 +742,15 @@ _ZN12arrow_buffer6buffer7mutable13MutableBuffer13with_capacity17h599cdfd44654158 48: ; preds = %_ZN12arrow_buffer6buffer7mutable13MutableBuffer13with_capacity17h599cdfd446541586E.llvm.12936710431969675094.exit invoke void @_ZN12arrow_buffer7builder7boolean20BooleanBufferBuilder13append_buffer17hbe88d65e20dd880fE(ptr noalias noundef nonnull align 8 dereferenceable(40) %9, ptr noalias noundef nonnull readonly align 8 dereferenceable(40) %45) - to label %76 unwind label %49 + to label %75 unwind label %49 -49: ; preds = %122, %_ZN12arrow_buffer6buffer7mutable13MutableBuffer11into_buffer17hb20936623a6c6fedE.exit.i, %.thread29, %58, %97, %48 +49: ; preds = %122, %_ZN12arrow_buffer6buffer7mutable13MutableBuffer11into_buffer17hb20936623a6c6fedE.exit.i, %58, %97, %48 %50 = landingpad { ptr, i32 } cleanup br label %.body .body: ; preds = %91, %49 - %eh.lpad-body = phi { ptr, i32 } [ %50, %49 ], [ %92, %91 ] + %eh.lpad-body = phi { ptr, i32 } [ %50, %49 ], [ %92, %90 ] invoke void @"_ZN86_$LT$arrow_buffer..buffer..mutable..MutableBuffer$u20$as$u20$core..ops..drop..Drop$GT$4drop17h88adb87742f498e4E"(ptr noalias noundef nonnull align 8 dereferenceable(40) %9) to label %"_ZN4core3ptr73drop_in_place$LT$arrow_buffer..builder..boolean..BooleanBufferBuilder$GT$17h29fb1d42be871d16E.exit" unwind label %129 @@ -763,11 +761,11 @@ _ZN12arrow_buffer6buffer7mutable13MutableBuffer13with_capacity17h599cdfd44654158 %54 = zext i1 %53 to i64 %55 = add nuw nsw i64 %51, %54 %.not = icmp eq i64 %55, 0 - br i1 %.not, label %.thread, label %56 + br i1 %.not, label %65, label %56 56: ; preds = %._crit_edge.i %57 = icmp samesign ugt i64 %55, %37 - br i1 %57, label %58, label %62 + br i1 %57, label %58, label %_ZN12arrow_buffer6buffer7mutable13MutableBuffer7reserve17h7e5b055f3d43f39bE.llvm.12936710431969675094.exit.i 58: ; preds = %56 %59 = add nuw nsw i64 %55, 63 @@ -780,41 +778,33 @@ _ZN12arrow_buffer6buffer7mutable13MutableBuffer13with_capacity17h599cdfd44654158 .noexc22: ; preds = %58 %.pre18.i = load i64, ptr %.sroa.6.0..sroa_idx, align 8, !alias.scope !83 %.pre = load ptr, ptr %.sroa.528.0..sroa_idx, align 8, !alias.scope !83 - br label %62 + br label %_ZN12arrow_buffer6buffer7mutable13MutableBuffer7reserve17h7e5b055f3d43f39bE.llvm.12936710431969675094.exit.i + +_ZN12arrow_buffer6buffer7mutable13MutableBuffer7reserve17h7e5b055f3d43f39bE.llvm.12936710431969675094.exit.i: ; preds = %.noexc22, %56 + %62 = phi ptr [ %.0.i, %56 ], [ %.pre, %.noexc22 ] + %63 = phi i64 [ 0, %56 ], [ %.pre18.i, %.noexc22 ] + %64 = getelementptr inbounds i8, ptr %62, i64 %63 + call void @llvm.memset.p0.i64(ptr nonnull align 1 %64, i8 -1, i64 %55, i1 false) + br label %65 -62: ; preds = %56, %.noexc22 - %63 = phi ptr [ %.0.i, %56 ], [ %.pre, %.noexc22 ] - %64 = phi i64 [ 0, %56 ], [ %.pre18.i, %.noexc22 ] - %65 = getelementptr inbounds i8, ptr %63, i64 %64 - call void @llvm.memset.p0.i64(ptr nonnull align 1 %65, i8 -1, i64 %55, i1 false) +62: ; preds = %_ZN12arrow_buffer6buffer7mutable13MutableBuffer7reserve17h7e5b055f3d43f39bE.llvm.12936710431969675094.exit.i, %._crit_edge.i store i64 %55, ptr %.sroa.6.0..sroa_idx, align 8, !alias.scope !83 %66 = icmp eq i64 %52, 0 - br i1 %66, label %_ZN12arrow_buffer7builder7boolean20BooleanBufferBuilder8append_n17hae7f67c3f4b88995E.exit, label %68 - -.thread: ; preds = %._crit_edge.i - %67 = icmp eq i64 %52, 0 - br i1 %67, label %_ZN12arrow_buffer7builder7boolean20BooleanBufferBuilder8append_n17hae7f67c3f4b88995E.exit, label %.thread29 - -.thread29: ; preds = %.thread - invoke void @_ZN4core9panicking5panic17h195fc2a96298d4c3E(ptr noalias noundef nonnull readonly align 1 @anon.3a573e31fa13f546b6d503667aff8f01.18.llvm.12936710431969675094, i64 noundef 43, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.3a573e31fa13f546b6d503667aff8f01.71) #32 - to label %.noexc23 unwind label %49 - -.noexc23: ; preds = %.thread29 - unreachable - -68: ; preds = %62 - %69 = load ptr, ptr %.sroa.528.0..sroa_idx, align 8, !alias.scope !83, !nonnull !4 - %70 = add nsw i64 %55, -1 - %71 = getelementptr inbounds nuw [0 x i8], ptr %69, i64 0, i64 %70 - %72 = trunc nuw nsw i64 %52 to i8 - %notmask16.i = shl nsw i8 -1, %72 - %73 = xor i8 %notmask16.i, -1 - %74 = load i8, ptr %71, align 1, !noundef !4 - %75 = and i8 %74, %73 - store i8 %75, ptr %71, align 1 + br i1 %66, label %_ZN12arrow_buffer7builder7boolean20BooleanBufferBuilder8append_n17hae7f67c3f4b88995E.exit, label %67 + +.thread: ; preds = %65 + %68 = trunc nuw nsw i64 %52 to i8 + %notmask16.i = shl nsw i8 -1, %68 + %69 = xor i8 %notmask16.i, -1 + %70 = load ptr, ptr %.sroa.527.0..sroa_idx, align 8, !alias.scope !83, !nonnull !4 + %71 = add nsw i64 %55, -1 + %72 = getelementptr inbounds nuw [0 x i8], ptr %70, i64 0, i64 %71 + %73 = load i8, ptr %72, align 1, !noundef !4 + %74 = and i8 %73, %69 + store i8 %74, ptr %72, align 1 br label %_ZN12arrow_buffer7builder7boolean20BooleanBufferBuilder8append_n17hae7f67c3f4b88995E.exit -_ZN12arrow_buffer7builder7boolean20BooleanBufferBuilder8append_n17hae7f67c3f4b88995E.exit: ; preds = %.thread, %62, %68 +_ZN12arrow_buffer7builder7boolean20BooleanBufferBuilder8append_n17hae7f67c3f4b88995E.exit: ; preds = %62, %67 store i64 %33, ptr %44, align 8, !alias.scope !83 br label %76 @@ -894,12 +884,12 @@ _ZN12arrow_buffer6buffer7mutable13MutableBuffer11into_buffer17hb20936623a6c6fedE %96 = getelementptr inbounds nuw i8, ptr %6, i64 16 store i64 %.sroa.68.0.copyload.i, ptr %96, align 8, !alias.scope !92, !noalias !103 invoke void @_ZN12arrow_buffer6buffer7boolean13BooleanBuffer3new17hb61e88c67471e6baE(ptr noalias noundef nonnull sret({ { ptr, ptr, i64 }, i64, i64 }) align 8 captures(none) dereferenceable(40) %7, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(24) %6, i64 noundef 0, i64 noundef %84) - to label %97 unwind label %49 + to label %96 unwind label %49 97: ; preds = %_ZN12arrow_buffer6buffer7mutable13MutableBuffer11into_buffer17hb20936623a6c6fedE.exit.i call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6), !noalias !91 invoke void @"_ZN130_$LT$arrow_buffer..buffer..null..NullBuffer$u20$as$u20$core..convert..From$LT$arrow_buffer..buffer..boolean..BooleanBuffer$GT$$GT$4from17h9e49cc6f18f24971E"(ptr noalias noundef nonnull sret({ { { ptr, ptr, i64 }, i64, i64 }, i64 }) align 8 captures(none) dereferenceable(48) %8, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(40) %7) - to label %98 unwind label %49 + to label %97 unwind label %49 98: ; preds = %97 call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %7) @@ -910,8 +900,8 @@ _ZN12arrow_buffer6buffer7mutable13MutableBuffer11into_buffer17hb20936623a6c6fedE br label %"_ZN4core6option19Option$LT$$RF$T$GT$6cloned17h94d15cf511857d9aE.exit" 99: ; preds = %.lr.ph, %106 - %.sroa.0.038 = phi ptr [ %78, %.lr.ph ], [ %100, %106 ] - %.sroa.7.037 = phi i64 [ 0, %.lr.ph ], [ %101, %106 ] + %.sroa.0.038 = phi ptr [ %78, %.lr.ph ], [ %100, %105 ] + %.sroa.7.037 = phi i64 [ 0, %.lr.ph ], [ %101, %105 ] %100 = getelementptr inbounds nuw i8, ptr %.sroa.0.038, i64 4 %101 = add nuw nsw i64 %.sroa.7.037, 1 %102 = load i32, ptr %.sroa.0.038, align 4, !noundef !4 @@ -953,7 +943,7 @@ _ZN12arrow_buffer6buffer7mutable13MutableBuffer11into_buffer17hb20936623a6c6fedE 122: ; preds = %119 invoke void @_ZN4core9panicking18panic_bounds_check17h326a19b32dc06d6dE(i64 noundef %120, i64 noundef %.val21, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.3a573e31fa13f546b6d503667aff8f01.66) #32 - to label %.noexc26 unwind label %49 + to label %.noexc25 unwind label %49 .noexc26: ; preds = %122 unreachable diff --git a/bench/lief/optimized/bignum_core.ll b/bench/lief/optimized/bignum_core.ll index 95a521a4a14..402d441792c 100644 --- a/bench/lief/optimized/bignum_core.ll +++ b/bench/lief/optimized/bignum_core.ll @@ -1254,7 +1254,7 @@ define hidden i32 @mbedtls_mpi_core_fill_random(ptr noundef %0, i64 noundef %1, br i1 %.not, label %20, label %mbedtls_mpi_core_bigendian_to_host.exit 20: ; preds = %12 - %21 = icmp eq i64 %10, 0 + %21 = icmp eq i64 %2, 0 %22 = getelementptr i64, ptr %0, i64 %10 %.01214.i = getelementptr i8, ptr %22, i64 -8 %.not15.i = icmp ugt ptr %0, %.01214.i diff --git a/bench/miniaudio/optimized/unity.ll b/bench/miniaudio/optimized/unity.ll index 94c29511642..23ed934b702 100644 --- a/bench/miniaudio/optimized/unity.ll +++ b/bench/miniaudio/optimized/unity.ll @@ -3077,49 +3077,44 @@ define range(i32 -4, 1) i32 @ma_slot_allocator_alloc(ptr noundef captures(addres .preheader59: ; preds = %.preheader60, %53 %7 = phi i1 [ true, %.preheader60 ], [ false, %53 ] %8 = load i32, ptr %5, align 4, !tbaa !60 - %9 = lshr i32 %8, 5 - %10 = and i32 %8, 31 - %.not.i65 = icmp ne i32 %10, 0 - %11 = zext i1 %.not.i65 to i32 - %12 = or i32 %9, %11 - %.not69 = icmp eq i32 %12, 0 - br i1 %.not69, label %._crit_edge, label %.preheader58 - -.preheader58: ; preds = %.preheader59, %44 - %indvars.iv = phi i64 [ %indvars.iv.next, %44 ], [ 0, %.preheader59 ] - br label %13 + %.not69 = icmp eq i32 %8, 0 + br i1 %.not69, label %.thread54, label %13 -13: ; preds = %.preheader58, %ma_ffs_32.exit - %14 = load ptr, ptr %0, align 8, !tbaa !58 - %15 = getelementptr inbounds nuw %struct.ma_slot_allocator_group, ptr %14, i64 %indvars.iv - %16 = load atomic i32, ptr %15 seq_cst, align 4 - %17 = icmp eq i32 %16, -1 - br i1 %17, label %44, label %.preheader - -.preheader: ; preds = %13, %20 - %.08.i = phi i32 [ %21, %20 ], [ 0, %13 ] - %18 = shl nuw i32 1, %.08.i - %19 = and i32 %18, %16 - %.not.i46.not = icmp eq i32 %19, 0 - br i1 %.not.i46.not, label %ma_ffs_32.exit, label %20 - -20: ; preds = %.preheader - %21 = add nuw nsw i32 %.08.i, 1 - %exitcond.not.i = icmp eq i32 %21, 32 +13: ; preds = %.preheader59, %40 + %indvars.iv = phi i64 [ %indvars.iv.next, %40 ], [ 0, %.preheader59 ] + br label %9 + +9:; preds = %13, %ma_ffs_32.exit + %10 = load ptr, ptr %0, align 8, !tbaa !58 + %11 = getelementptr inbounds nuw %struct.ma_slot_allocator_group, ptr %10, i64 %indvars.iv + %12 = load atomic i32, ptr %11 seq_cst, align 4 + %13 = icmp eq i32 %12, -1 + br i1 %13, label %40, label %.preheader + +.preheader:; preds = %9, %16 + %.08.i = phi i32 [ %17, %16 ], [ 0, %9 ] + %14 = shl nuw i32 1, %.08.i + %15 = and i32 %14, %12 + %.not.i46.not = icmp eq i32 %15, 0 + br i1 %.not.i46.not, label %ma_ffs_32.exit, label %16 + +16: ; preds = %.preheader + %17 = add nuw nsw i32 %.08.i, 1 + %exitcond.not.i = icmp eq i32 %17, 32 br i1 %exitcond.not.i, label %.ma_ffs_32.exit_crit_edge, label %.preheader, !llvm.loop !62 -.ma_ffs_32.exit_crit_edge: ; preds = %20 +.ma_ffs_32.exit_crit_edge: ; preds = %16 br label %ma_ffs_32.exit, !llvm.loop !62 ma_ffs_32.exit: ; preds = %.preheader, %.ma_ffs_32.exit_crit_edge %.0.lcssa.i = phi i32 [ 32, %.ma_ffs_32.exit_crit_edge ], [ %.08.i, %.preheader ] %22 = shl nuw i32 1, %.0.lcssa.i - %23 = or i32 %22, %16 + %23 = or i32 %22, %12 %24 = load ptr, ptr %0, align 8, !tbaa !58 %25 = getelementptr inbounds nuw %struct.ma_slot_allocator_group, ptr %24, i64 %indvars.iv - %26 = cmpxchg volatile ptr %25, i32 %16, i32 %23 seq_cst seq_cst, align 4 + %26 = cmpxchg volatile ptr %25, i32 %12, i32 %23 seq_cst seq_cst, align 4 %27 = extractvalue { i32, i1 } %26, 1 - br i1 %27, label %28, label %13 + br i1 %27, label %28, label %9 28: ; preds = %ma_ffs_32.exit %29 = trunc nuw nsw i64 %indvars.iv to i32 @@ -3144,7 +3139,7 @@ ma_ffs_32.exit: ; preds = %.preheader, %.ma_ff store i64 %43, ptr %1, align 8, !tbaa !63 br label %.thread54 -44: ; preds = %13 +44: ; preds = %9 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %45 = load i32, ptr %5, align 4, !tbaa !60 %46 = lshr i32 %45, 5 @@ -3156,18 +3151,17 @@ ma_ffs_32.exit: ; preds = %.preheader, %.ma_ff %50 = icmp samesign ult i64 %indvars.iv.next, %49 br i1 %50, label %.preheader58, label %._crit_edge, !llvm.loop !65 -._crit_edge: ; preds = %44, %.preheader59 - %.lcssa = phi i32 [ %8, %.preheader59 ], [ %45, %44 ] - %51 = load i32, ptr %6, align 8, !tbaa !66 - %52 = icmp ult i32 %51, %.lcssa - br i1 %52, label %53, label %.thread54 +._crit_edge: ; preds = %44 + %47 = load i32, ptr %6, align 8, !tbaa !66 + %52 = icmp ult i32 %47, %41 + br i1 %52, label %49, label %.thread54 -53: ; preds = %._crit_edge +49: ; preds = %._crit_edge tail call void asm sideeffect "pause", "~{dirflag},~{fpsr},~{flags}"() #66, !srcloc !39 br i1 %7, label %.preheader59, label %.thread54, !llvm.loop !67 -.thread54: ; preds = %._crit_edge, %53, %34, %28, %2 - %.0 = phi i32 [ -2, %2 ], [ -4, %28 ], [ 0, %34 ], [ -4, %53 ], [ -4, %._crit_edge ] +.thread54: ; preds = %.preheader59, %._crit_edge, %53, %34, %28, %2 + %.0 = phi i32 [ -2, %2 ], [ -4, %28 ], [ 0, %30 ], [ -4, %53 ], [ -4, %._crit_edge ], [ -4, %.preheader59 ] ret i32 %.0 } @@ -3422,38 +3416,33 @@ ma_semaphore_init.exit: ; preds = %56, %59, %52, %33 %62 = getelementptr inbounds nuw i8, ptr %2, i64 136 br label %.preheader59.i -.preheader59.i: ; preds = %108, %ma_semaphore_init.exit - %63 = phi i1 [ true, %ma_semaphore_init.exit ], [ false, %108 ] +.preheader59.i: ; preds = %104, %ma_semaphore_init.exit + %63 = phi i1 [ true, %ma_semaphore_init.exit ], [ false, %104 ] %64 = load i32, ptr %48, align 4, !tbaa !60 - %65 = lshr i32 %64, 5 - %66 = and i32 %64, 31 - %.not.i65.i = icmp ne i32 %66, 0 - %67 = zext i1 %.not.i65.i to i32 - %68 = or i32 %65, %67 - %.not69.i = icmp eq i32 %68, 0 - br i1 %.not69.i, label %._crit_edge.i, label %.preheader58.i - -.preheader58.i: ; preds = %.preheader59.i, %99 - %indvars.iv.i = phi i64 [ %indvars.iv.next.i, %99 ], [ 0, %.preheader59.i ] - br label %69 + %.not69.i = icmp eq i32 %64, 0 + br i1 %.not69.i, label %ma_slot_allocator_alloc.exit, label %15 + +69: ; preds = %.preheader59.i, %95 + %indvars.iv.i = phi i64 [ %indvars.iv.next.i, %95 ], [ 0, %.preheader59.i ] + br label %65 -69: ; preds = %ma_ffs_32.exit.i, %.preheader58.i +65:; preds = %ma_ffs_32.exit.i, %15 %70 = load ptr, ptr %31, align 8, !tbaa !58 - %71 = getelementptr inbounds nuw %struct.ma_slot_allocator_group, ptr %70, i64 %indvars.iv.i - %72 = load atomic i32, ptr %71 seq_cst, align 4 - %73 = icmp eq i32 %72, -1 - br i1 %73, label %99, label %.preheader.i - -.preheader.i: ; preds = %69, %76 - %.08.i.i = phi i32 [ %77, %76 ], [ 0, %69 ] - %74 = shl nuw i32 1, %.08.i.i - %75 = and i32 %74, %72 - %.not.i46.not.i = icmp eq i32 %75, 0 - br i1 %.not.i46.not.i, label %ma_ffs_32.exit.i, label %76 - -76: ; preds = %.preheader.i - %77 = add nuw nsw i32 %.08.i.i, 1 - %exitcond.not.i.i = icmp eq i32 %77, 32 + %67 = getelementptr inbounds nuw %struct.ma_slot_allocator_group, ptr %66, i64 %indvars.iv.i + %68 = load atomic i32, ptr %67 seq_cst, align 4 + %73 = icmp eq i32 %76, -1 + br i1 %69, label %95, label %.preheader.i + +.preheader.i:; preds = %65, %72 + %.08.i.i = phi i32 [ %73, %72 ], [ 0, %65 ] + %70 = shl nuw i32 1, %.08.i.i + %71 = and i32 %70, %68 + %.not.i46.not.i = icmp eq i32 %71, 0 + br i1 %.not.i46.not.i, label %ma_ffs_32.exit.i, label %72 + +72: ; preds = %.preheader.i + %73 = add nuw nsw i32 %.08.i.i, 1 + %exitcond.not.i.i = icmp eq i32 %73, 32 br i1 %exitcond.not.i.i, label %.ma_ffs_32.exit_crit_edge.i, label %.preheader.i, !llvm.loop !62 .ma_ffs_32.exit_crit_edge.i: ; preds = %76 @@ -3503,17 +3492,16 @@ ma_ffs_32.exit.i: ; preds = %.preheader.i, %.ma_ %105 = icmp samesign ult i64 %indvars.iv.next.i, %104 br i1 %105, label %.preheader58.i, label %._crit_edge.i, !llvm.loop !65 -._crit_edge.i: ; preds = %99, %.preheader59.i - %.lcssa.i = phi i32 [ %64, %.preheader59.i ], [ %100, %99 ] - %106 = load i32, ptr %62, align 8, !tbaa !66 - %107 = icmp ult i32 %106, %.lcssa.i - br i1 %107, label %108, label %ma_slot_allocator_alloc.exit +._crit_edge.i: ; preds = %95 + %102 = load i32, ptr %62, align 8, !tbaa !66 + %103 = icmp ult i32 %102, %96 + br i1 %103, label %104, label %ma_slot_allocator_alloc.exit -108: ; preds = %._crit_edge.i +104: ; preds = %._crit_edge.i tail call void asm sideeffect "pause", "~{dirflag},~{fpsr},~{flags}"() #66, !srcloc !39 br i1 %63, label %.preheader59.i, label %ma_slot_allocator_alloc.exit, !llvm.loop !67 -ma_slot_allocator_alloc.exit: ; preds = %._crit_edge.i, %108, %84, %90 +ma_slot_allocator_alloc.exit: ; preds = %.preheader59.i, %._crit_edge.i, %104, %84, %90 %109 = load ptr, ptr %30, align 8, !tbaa !79 %110 = load i64, ptr %61, align 8, !tbaa !80 %111 = and i64 %110, 65535 @@ -3712,35 +3700,30 @@ define range(i32 -4, 1) i32 @ma_job_queue_post(ptr noundef %0, ptr noundef reado .preheader59.i: ; preds = %45, %5 %9 = phi i1 [ true, %5 ], [ false, %45 ] %10 = load i32, ptr %7, align 4, !tbaa !60 - %11 = lshr i32 %10, 5 - %12 = and i32 %10, 31 - %.not.i65.i = icmp ne i32 %12, 0 - %13 = zext i1 %.not.i65.i to i32 - %14 = or i32 %11, %13 - %.not69.i = icmp eq i32 %14, 0 - br i1 %.not69.i, label %._crit_edge.i, label %.preheader58.i - -.preheader58.i: ; preds = %.preheader59.i, %36 - %indvars.iv.i = phi i64 [ %indvars.iv.next.i, %36 ], [ 0, %.preheader59.i ] - br label %15 + %.not69.i = icmp eq i32 %10, 0 + br i1 %.not69.i, label %ma_slot_allocator_alloc.exit.thread, label %73 -15: ; preds = %ma_ffs_32.exit.i, %.preheader58.i - %16 = load ptr, ptr %6, align 8, !tbaa !58 - %17 = getelementptr inbounds nuw %struct.ma_slot_allocator_group, ptr %16, i64 %indvars.iv.i - %18 = load atomic i32, ptr %17 seq_cst, align 4 - %19 = icmp eq i32 %18, -1 - br i1 %19, label %36, label %.preheader.i - -.preheader.i: ; preds = %15, %22 - %.08.i.i = phi i32 [ %23, %22 ], [ 0, %15 ] - %20 = shl nuw i32 1, %.08.i.i - %21 = and i32 %20, %18 - %.not.i46.not.i = icmp eq i32 %21, 0 +15: ; preds = %.preheader59.i, %32 + %indvars.iv.i = phi i64 [ %indvars.iv.next.i, %32 ], [ 0, %.preheader59.i ] + br label %11 + +11:; preds = %ma_ffs_32.exit.i, %15 + %12 = load ptr, ptr %6, align 8, !tbaa !58 + %13 = getelementptr inbounds nuw %struct.ma_slot_allocator_group, ptr %12, i64 %indvars.iv.i + %14 = load atomic i32, ptr %13 seq_cst, align 4 + %15 = icmp eq i32 %14, -1 + br i1 %15, label %32, label %.preheader.i + +.preheader.i:; preds = %11, %18 + %.08.i.i = phi i32 [ %19, %22 ], [ 0, %11 ] + %16 = shl nuw i32 1, %.08.i.i + %17 = and i32 %16, %14 + %.not.i46.not.i = icmp eq i32 %17, 0 br i1 %.not.i46.not.i, label %ma_ffs_32.exit.i, label %22 -22: ; preds = %.preheader.i - %23 = add nuw nsw i32 %.08.i.i, 1 - %exitcond.not.i.i = icmp eq i32 %23, 32 +18: ; preds = %.preheader.i + %19 = add nuw nsw i32 %.08.i.i, 1 + %exitcond.not.i.i = icmp eq i32 %19, 32 br i1 %exitcond.not.i.i, label %.ma_ffs_32.exit_crit_edge.i, label %.preheader.i, !llvm.loop !62 .ma_ffs_32.exit_crit_edge.i: ; preds = %22 @@ -3749,23 +3732,23 @@ define range(i32 -4, 1) i32 @ma_job_queue_post(ptr noundef %0, ptr noundef reado ma_ffs_32.exit.i: ; preds = %.preheader.i, %.ma_ffs_32.exit_crit_edge.i %.0.lcssa.i.i = phi i32 [ 32, %.ma_ffs_32.exit_crit_edge.i ], [ %.08.i.i, %.preheader.i ] %24 = shl nuw i32 1, %.0.lcssa.i.i - %25 = or i32 %24, %18 + %25 = or i32 %24, %14 %26 = load ptr, ptr %6, align 8, !tbaa !58 %27 = getelementptr inbounds nuw %struct.ma_slot_allocator_group, ptr %26, i64 %indvars.iv.i - %28 = cmpxchg volatile ptr %27, i32 %18, i32 %25 seq_cst seq_cst, align 4 + %28 = cmpxchg volatile ptr %27, i32 %14, i32 %25 seq_cst seq_cst, align 4 %29 = extractvalue { i32, i1 } %28, 1 - br i1 %29, label %30, label %15 + br i1 %29, label %30, label %11 -30: ; preds = %ma_ffs_32.exit.i - %31 = trunc nuw nsw i64 %indvars.iv.i to i32 - %32 = atomicrmw add ptr %8, i32 1 seq_cst, align 8 - %33 = shl i32 %31, 5 - %34 = add i32 %.0.lcssa.i.i, %33 - %35 = load i32, ptr %7, align 4, !tbaa !60 - %.not.i = icmp ult i32 %34, %35 - br i1 %.not.i, label %46, label %ma_slot_allocator_alloc.exit.thread +36: ; preds = %ma_ffs_32.exit.i + %27 = trunc nuw nsw i64 %indvars.iv.i to i32 + %28 = atomicrmw add ptr %8, i32 1 seq_cst, align 8 + %29 = shl i32 %27, 5 + %30 = add i32 %.0.lcssa.i.i, %29 + %31 = load i32, ptr %7, align 4, !tbaa !60 + %.not.i = icmp ult i32 %30, %31 + br i1 %.not.i, label %42, label %ma_slot_allocator_alloc.exit.thread -36: ; preds = %15 +32: ; preds = %11 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %37 = load i32, ptr %7, align 4, !tbaa !60 %38 = lshr i32 %37, 5 @@ -3777,20 +3760,19 @@ ma_ffs_32.exit.i: ; preds = %.preheader.i, %.ma_ %42 = icmp samesign ult i64 %indvars.iv.next.i, %41 br i1 %42, label %.preheader58.i, label %._crit_edge.i, !llvm.loop !65 -._crit_edge.i: ; preds = %36, %.preheader59.i - %.lcssa.i = phi i32 [ %10, %.preheader59.i ], [ %37, %36 ] - %43 = load i32, ptr %8, align 8, !tbaa !66 - %44 = icmp ult i32 %43, %.lcssa.i - br i1 %44, label %45, label %ma_slot_allocator_alloc.exit.thread +._crit_edge.i: ; preds = %36 + %39 = load i32, ptr %8, align 8, !tbaa !66 + %40 = icmp ult i32 %39, %33 + br i1 %40, label %41, label %ma_slot_allocator_alloc.exit.thread -45: ; preds = %._crit_edge.i +41: ; preds = %._crit_edge.i tail call void asm sideeffect "pause", "~{dirflag},~{fpsr},~{flags}"() #66, !srcloc !39 br i1 %9, label %.preheader59.i, label %ma_slot_allocator_alloc.exit.thread, !llvm.loop !67 46: ; preds = %30 %47 = getelementptr inbounds nuw i8, ptr %0, i64 128 %48 = load ptr, ptr %47, align 8, !tbaa !59 - %49 = zext i32 %34 to i64 + %49 = zext i32 %30 to i64 %50 = getelementptr inbounds nuw i32, ptr %48, i64 %49 %51 = load i32, ptr %50, align 4, !tbaa !3 %52 = add i32 %51, 1 @@ -3876,31 +3858,31 @@ ma_spinlock_lock.exit: ; preds = %.loopexit.i, %46 .backedge: ; preds = %97, %91, %78 br label %78 -102: ; preds = %91 - %103 = and i64 %79, -4294967296 - %104 = add i64 %103, 4294967296 - %105 = or disjoint i64 %104, %49 - %106 = cmpxchg volatile ptr %77, i64 %79, i64 %105 seq_cst seq_cst, align 8 - store atomic volatile i32 0, ptr %68 release, align 4 - %107 = load i32, ptr %0, align 8, !tbaa !77 - %108 = and i32 %107, 1 - %109 = icmp eq i32 %108, 0 - br i1 %109, label %110, label %ma_slot_allocator_alloc.exit.thread - -110: ; preds = %102 - %111 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %112 = getelementptr inbounds nuw i8, ptr %0, i64 32 - %113 = tail call i32 @pthread_mutex_lock(ptr noundef nonnull %112) #66 - %114 = load i32, ptr %111, align 8, !tbaa !41 - %115 = add nsw i32 %114, 1 - store i32 %115, ptr %111, align 8, !tbaa !41 - %116 = getelementptr inbounds nuw i8, ptr %0, i64 72 - %117 = tail call i32 @pthread_cond_signal(ptr noundef nonnull %116) #66 - %118 = tail call i32 @pthread_mutex_unlock(ptr noundef nonnull %112) #66 +110: ; preds = %91 + %103 = and i64 %75, -4294967296 + %100 = add i64 %103, 4294967296 + %101 = or disjoint i64 %100, %45 + %102 = cmpxchg volatile ptr %73, i64 %75, i64 %101 seq_cst seq_cst, align 8 + store atomic volatile i32 0, ptr %64 release, align 4 + %103 = load i32, ptr %0, align 8, !tbaa !77 + %104 = and i32 %103, 1 + %105 = icmp eq i32 %104, 0 + br i1 %105, label %110, label %ma_slot_allocator_alloc.exit.thread + +106: ; preds = %98 + %107 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %108 = getelementptr inbounds nuw i8, ptr %0, i64 32 + %109 = tail call i32 @pthread_mutex_lock(ptr noundef nonnull %108) #66 + %110 = load i32, ptr %107, align 8, !tbaa !41 + %111 = add nsw i32 %110, 1 + store i32 %111, ptr %107, align 8, !tbaa !41 + %112 = getelementptr inbounds nuw i8, ptr %0, i64 72 + %113 = tail call i32 @pthread_cond_signal(ptr noundef nonnull %112) #66 + %114 = tail call i32 @pthread_mutex_unlock(ptr noundef nonnull %108) #66 br label %ma_slot_allocator_alloc.exit.thread -ma_slot_allocator_alloc.exit.thread: ; preds = %._crit_edge.i, %45, %30, %102, %110, %2 - %.0 = phi i32 [ -2, %2 ], [ 0, %110 ], [ 0, %102 ], [ -4, %30 ], [ -4, %45 ], [ -4, %._crit_edge.i ] +ma_slot_allocator_alloc.exit.thread: ; preds = %.preheader59.i, %._crit_edge.i, %45, %30, %102, %110, %2 + %.0 = phi i32 [ -2, %2 ], [ 0, %110 ], [ 0, %102 ], [ -4, %30 ], [ -4, %45 ], [ -4, %._crit_edge.i ], [ -4, %.preheader59.i ] ret i32 %.0 } diff --git a/bench/pola-rs/optimized/1rsrmy2r4dk76n6ayk75n7qe2.ll b/bench/pola-rs/optimized/1rsrmy2r4dk76n6ayk75n7qe2.ll index ae910497dd2..777659bafc5 100644 --- a/bench/pola-rs/optimized/1rsrmy2r4dk76n6ayk75n7qe2.ll +++ b/bench/pola-rs/optimized/1rsrmy2r4dk76n6ayk75n7qe2.ll @@ -36254,11 +36254,12 @@ define hidden void @_ZN14polars_parquet5arrow4read11deserialize12nested_utils20c %42 = load i64, ptr %14, align 8, !alias.scope !2819, !noalias !2816, !noundef !6 %43 = icmp ult i64 %42, 4611686018427387904 call void @llvm.assume(i1 %43) - %.not14.i = icmp eq i64 %39, 0 + %.not14.i = icmp eq i64 %34, 0 br i1 %.not14.i, label %"_ZN14polars_parquet7parquet8encoding9bitpacked6decode16Decoder$LT$T$GT$12collect_into17h100b9982af42f8ffE.exit", label %.lr.ph.i .lr.ph.i: ; preds = %33 %44 = getelementptr i16, ptr %41, i64 %42 + %umax.i = call i64 @llvm.umax.i64(i64 %39, i64 1) br label %45 ._crit_edge.loopexit.i: ; preds = %_ZN14polars_parquet7parquet8encoding9bitpacked6decode11decode_pack17hc429c7ce337bba3dE.exit.i @@ -36317,11 +36318,11 @@ define hidden void @_ZN14polars_parquet5arrow4read11deserialize12nested_utils20c _ZN14polars_parquet7parquet8encoding9bitpacked6decode11decode_pack17hc429c7ce337bba3dE.exit.i: ; preds = %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17h4455f0d8d4d9664dE.exit.i.i", %59 %63 = getelementptr i8, ptr %.sroa.03.012.i, i64 32 - %exitcond.not.i = icmp eq i64 %46, %39 + %exitcond.not.i = icmp eq i64 %46, %umax.i br i1 %exitcond.not.i, label %._crit_edge.loopexit.i, label %45 "_ZN14polars_parquet7parquet8encoding9bitpacked6decode16Decoder$LT$T$GT$12collect_into17h100b9982af42f8ffE.exit": ; preds = %33, %._crit_edge.loopexit.i - %64 = phi i64 [ %.pre18.i, %._crit_edge.loopexit.i ], [ %34, %33 ] + %64 = phi i64 [ %.pre18.i, %._crit_edge.loopexit.i ], [ 0, %33 ] %65 = phi i64 [ %.pre.i, %._crit_edge.loopexit.i ], [ %42, %33 ] %66 = icmp ult i64 %65, 4611686018427387904 call void @llvm.assume(i1 %66) diff --git a/bench/pola-rs/optimized/byas2yzy27h8nly1lm4ekoo5u.ll b/bench/pola-rs/optimized/byas2yzy27h8nly1lm4ekoo5u.ll index 14a00dd9d7e..ee89f11a8dd 100644 --- a/bench/pola-rs/optimized/byas2yzy27h8nly1lm4ekoo5u.ll +++ b/bench/pola-rs/optimized/byas2yzy27h8nly1lm4ekoo5u.ll @@ -39147,7 +39147,7 @@ define internal fastcc void @"_ZN14polars_parquet7parquet8encoding9bitpacked6dec %15 = load i64, ptr %14, align 8, !noundef !3 %16 = icmp ult i64 %15, 2305843009213693952 tail call void @llvm.assume(i1 %16) - %.not = icmp eq i64 %10, 0 + %.not = icmp eq i64 %5, 0 br i1 %.not, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %2 @@ -39161,6 +39161,7 @@ define internal fastcc void @"_ZN14polars_parquet7parquet8encoding9bitpacked6dec %23 = shl i64 %22, 2 %24 = and i64 %23, 2305843009213693948 %.promoted16 = load i64, ptr %18, align 8, !alias.scope !3184 + %umax = tail call i64 @llvm.umax.i64(i64 %10, i64 1) br label %28 ._crit_edge.loopexit: ; preds = %_ZN14polars_parquet7parquet8encoding9bitpacked6decode11decode_pack17he3b20eb4ee3e3a12E.exit @@ -39227,7 +39228,7 @@ define internal fastcc void @"_ZN14polars_parquet7parquet8encoding9bitpacked6dec _ZN14polars_parquet7parquet8encoding9bitpacked6decode11decode_pack17he3b20eb4ee3e3a12E.exit: ; preds = %41, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17h4455f0d8d4d9664dE.exit.i" %45 = getelementptr i8, ptr %.sroa.03.014, i64 128 - %exitcond.not = icmp eq i64 %31, %10 + %exitcond.not = icmp eq i64 %31, %umax br i1 %exitcond.not, label %._crit_edge.loopexit, label %28 } diff --git a/bench/raylib/optimized/raudio.ll b/bench/raylib/optimized/raudio.ll index d9aeae46275..0563c9b03b9 100644 --- a/bench/raylib/optimized/raudio.ll +++ b/bench/raylib/optimized/raudio.ll @@ -3066,49 +3066,44 @@ define hidden range(i32 -4, 1) i32 @ma_slot_allocator_alloc(ptr noundef captures %6 = getelementptr inbounds nuw i8, ptr %0, i64 16 br label %.preheader59 -.preheader59: ; preds = %.preheader60, %56 - %7 = phi i1 [ true, %.preheader60 ], [ false, %56 ] +.preheader59: ; preds = %.preheader60, %52 + %7 = phi i1 [ true, %.preheader60 ], [ false, %52 ] %8 = load i32, ptr %5, align 4 - %9 = lshr i32 %8, 5 - %10 = and i32 %8, 31 - %.not.i65 = icmp ne i32 %10, 0 - %11 = zext i1 %.not.i65 to i32 - %12 = or i32 %9, %11 - %.not69 = icmp eq i32 %12, 0 - br i1 %.not69, label %._crit_edge, label %.preheader58 - -.preheader58: ; preds = %.preheader59, %47 - %indvars.iv = phi i64 [ %indvars.iv.next, %47 ], [ 0, %.preheader59 ] - br label %13 + %.not69 = icmp eq i32 %8, 0 + br i1 %.not69, label %.thread54, label %13 -13: ; preds = %.preheader58, %ma_ffs_32.exit - %14 = load ptr, ptr %0, align 8 - %15 = getelementptr inbounds nuw %struct.ma_slot_allocator_group, ptr %14, i64 %indvars.iv - %16 = load atomic i32, ptr %15 seq_cst, align 4 - %17 = icmp eq i32 %16, -1 - br i1 %17, label %47, label %.preheader - -.preheader: ; preds = %13, %20 - %.08.i = phi i32 [ %21, %20 ], [ 0, %13 ] - %18 = shl nuw i32 1, %.08.i - %19 = and i32 %18, %16 - %.not.i46.not = icmp eq i32 %19, 0 - br i1 %.not.i46.not, label %ma_ffs_32.exit, label %20 - -20: ; preds = %.preheader - %21 = add nuw nsw i32 %.08.i, 1 - %exitcond.not.i = icmp eq i32 %21, 32 +13: ; preds = %.preheader59, %43 + %indvars.iv = phi i64 [ %indvars.iv.next, %43 ], [ 0, %.preheader59 ] + br label %9 + +9:; preds = %13, %ma_ffs_32.exit + %10 = load ptr, ptr %0, align 8 + %11 = getelementptr inbounds nuw %struct.ma_slot_allocator_group, ptr %10, i64 %indvars.iv + %12 = load atomic i32, ptr %11 seq_cst, align 4 + %13 = icmp eq i32 %12, -1 + br i1 %13, label %43, label %.preheader + +.preheader:; preds = %9, %16 + %.08.i = phi i32 [ %17, %16 ], [ 0, %9 ] + %14 = shl nuw i32 1, %.08.i + %15 = and i32 %14, %12 + %.not.i46.not = icmp eq i32 %15, 0 + br i1 %.not.i46.not, label %ma_ffs_32.exit, label %16 + +16: ; preds = %.preheader + %17 = add nuw nsw i32 %.08.i, 1 + %exitcond.not.i = icmp eq i32 %17, 32 br i1 %exitcond.not.i, label %ma_ffs_32.exit, label %.preheader -ma_ffs_32.exit: ; preds = %.preheader, %20 - %.0.lcssa.i = phi i32 [ 32, %20 ], [ %.08.i, %.preheader ] +ma_ffs_32.exit: ; preds = %.preheader, %16 + %.0.lcssa.i = phi i32 [ 32, %16 ], [ %.08.i, %.preheader ] %22 = shl nuw i32 1, %.0.lcssa.i - %23 = or i32 %22, %16 + %23 = or i32 %22, %12 %24 = load ptr, ptr %0, align 8 %25 = getelementptr inbounds nuw %struct.ma_slot_allocator_group, ptr %24, i64 %indvars.iv - %26 = cmpxchg volatile ptr %25, i32 %16, i32 %23 seq_cst seq_cst, align 4 + %26 = cmpxchg volatile ptr %25, i32 %12, i32 %23 seq_cst seq_cst, align 4 %27 = extractvalue { i32, i1 } %26, 1 - br i1 %27, label %28, label %13 + br i1 %27, label %28, label %9 28: ; preds = %ma_ffs_32.exit %29 = trunc nuw nsw i64 %indvars.iv to i32 @@ -3124,19 +3119,19 @@ ma_ffs_32.exit: ; preds = %.preheader, %20 %36 = load ptr, ptr %35, align 8 %37 = zext i32 %32 to i64 %38 = getelementptr inbounds nuw i32, ptr %36, i64 %37 + %35 = load i32, ptr %34, align 4 + %36 = add i32 %35, 1 + store i32 %36, ptr %34, align 4 + %37 = load ptr, ptr %31, align 8 + %38 = getelementptr inbounds nuw i32, ptr %37, i64 %33 %39 = load i32, ptr %38, align 4 - %40 = add i32 %39, 1 - store i32 %40, ptr %38, align 4 - %41 = load ptr, ptr %35, align 8 - %42 = getelementptr inbounds nuw i32, ptr %41, i64 %37 - %43 = load i32, ptr %42, align 4 - %44 = zext i32 %43 to i64 - %45 = shl nuw i64 %44, 32 - %46 = or disjoint i64 %45, %37 - store i64 %46, ptr %1, align 8 + %40 = zext i32 %39 to i64 + %41 = shl nuw i64 %40, 32 + %42 = or disjoint i64 %41, %33 + store i64 %42, ptr %1, align 8 br label %.thread54 -47: ; preds = %13 +47: ; preds = %9 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %48 = load i32, ptr %5, align 4 %49 = lshr i32 %48, 5 @@ -3148,18 +3143,17 @@ ma_ffs_32.exit: ; preds = %.preheader, %20 %53 = icmp samesign ult i64 %indvars.iv.next, %52 br i1 %53, label %.preheader58, label %._crit_edge -._crit_edge: ; preds = %47, %.preheader59 - %.lcssa = phi i32 [ %8, %.preheader59 ], [ %48, %47 ] - %54 = load i32, ptr %6, align 8 - %55 = icmp ult i32 %54, %.lcssa - br i1 %55, label %56, label %.thread54 +._crit_edge: ; preds = %47 + %50 = load i32, ptr %6, align 8 + %51 = icmp ult i32 %50, %48 + br i1 %51, label %52, label %.thread54 -56: ; preds = %._crit_edge +52: ; preds = %._crit_edge tail call void asm sideeffect "pause", "~{dirflag},~{fpsr},~{flags}"() #71, !srcloc !3 br i1 %7, label %.preheader59, label %.thread54 -.thread54: ; preds = %._crit_edge, %56, %34, %28, %2 - %.0 = phi i32 [ -2, %2 ], [ -4, %28 ], [ 0, %34 ], [ -4, %56 ], [ -4, %._crit_edge ] +.thread54: ; preds = %.preheader59, %._crit_edge, %52, %34, %28, %2 + %.0 = phi i32 [ -2, %2 ], [ -4, %28 ], [ 0, %34 ], [ -4, %52 ], [ -4, %._crit_edge ], [ -4, %.preheader59 ] ret i32 %.0 } @@ -3414,20 +3408,15 @@ ma_semaphore_init.exit: ; preds = %57, %60, %53, %34 %63 = getelementptr inbounds nuw i8, ptr %2, i64 136 br label %.preheader59.i -.preheader59.i: ; preds = %112, %ma_semaphore_init.exit - %64 = phi i1 [ true, %ma_semaphore_init.exit ], [ false, %112 ] +.preheader59.i: ; preds = %108, %ma_semaphore_init.exit + %64 = phi i1 [ true, %ma_semaphore_init.exit ], [ false, %108 ] %65 = load i32, ptr %49, align 4 - %66 = lshr i32 %65, 5 - %67 = and i32 %65, 31 - %.not.i65.i = icmp ne i32 %67, 0 - %68 = zext i1 %.not.i65.i to i32 - %69 = or i32 %66, %68 - %.not69.i = icmp eq i32 %69, 0 - br i1 %.not69.i, label %._crit_edge.i, label %.preheader58.i - -.preheader58.i: ; preds = %.preheader59.i, %103 - %indvars.iv.i = phi i64 [ %indvars.iv.next.i, %103 ], [ 0, %.preheader59.i ] - br label %70 + %.not69.i = icmp eq i32 %65, 0 + br i1 %.not69.i, label %ma_slot_allocator_alloc.exit, label %15 + +15:; preds = %.preheader59.i, %103 + %indvars.iv.i = phi i64 [ %indvars.iv.next.i, %99 ], [ 0, %.preheader59.i ] + br label %66 70: ; preds = %ma_ffs_32.exit.i, %.preheader58.i %71 = load ptr, ptr %32, align 8 @@ -3437,7 +3426,7 @@ ma_semaphore_init.exit: ; preds = %57, %60, %53, %34 br i1 %74, label %103, label %.preheader.i .preheader.i: ; preds = %70, %77 - %.08.i.i = phi i32 [ %78, %77 ], [ 0, %70 ] + %.08.i.i = phi i32 [ %78, %77 ], [ 0, %66 ] %75 = shl nuw i32 1, %.08.i.i %76 = and i32 %75, %73 %.not.i46.not.i = icmp eq i32 %76, 0 @@ -3471,15 +3460,15 @@ ma_ffs_32.exit.i: ; preds = %.preheader.i, %77 %92 = load ptr, ptr %48, align 8 %93 = zext i32 %89 to i64 %94 = getelementptr inbounds nuw i32, ptr %92, i64 %93 + %91 = load i32, ptr %90, align 4 + %92 = add i32 %91, 1 + store i32 %92, ptr %90, align 4 + %93 = load ptr, ptr %48, align 8 + %94 = getelementptr inbounds nuw i32, ptr %93, i64 %89 %95 = load i32, ptr %94, align 4 - %96 = add i32 %95, 1 - store i32 %96, ptr %94, align 4 - %97 = load ptr, ptr %48, align 8 - %98 = getelementptr inbounds nuw i32, ptr %97, i64 %93 - %99 = load i32, ptr %98, align 4 - %100 = zext i32 %99 to i64 - %101 = shl nuw i64 %100, 32 - %102 = or disjoint i64 %101, %93 + %96 = zext i32 %95 to i64 + %97 = shl nuw i64 %96, 32 + %98 = or disjoint i64 %97, %89 store i64 %102, ptr %62, align 8 br label %ma_slot_allocator_alloc.exit @@ -3495,17 +3484,16 @@ ma_ffs_32.exit.i: ; preds = %.preheader.i, %77 %109 = icmp samesign ult i64 %indvars.iv.next.i, %108 br i1 %109, label %.preheader58.i, label %._crit_edge.i -._crit_edge.i: ; preds = %103, %.preheader59.i - %.lcssa.i = phi i32 [ %65, %.preheader59.i ], [ %104, %103 ] - %110 = load i32, ptr %63, align 8 - %111 = icmp ult i32 %110, %.lcssa.i - br i1 %111, label %112, label %ma_slot_allocator_alloc.exit +._crit_edge.i: ; preds = %103 + %106 = load i32, ptr %63, align 8 + %107 = icmp ult i32 %106, %100 + br i1 %107, label %108, label %ma_slot_allocator_alloc.exit -112: ; preds = %._crit_edge.i +108: ; preds = %._crit_edge.i tail call void asm sideeffect "pause", "~{dirflag},~{fpsr},~{flags}"() #71, !srcloc !3 br i1 %64, label %.preheader59.i, label %ma_slot_allocator_alloc.exit -ma_slot_allocator_alloc.exit: ; preds = %._crit_edge.i, %112, %85, %91 +ma_slot_allocator_alloc.exit: ; preds = %.preheader59.i, %._crit_edge.i, %108, %85, %91 %113 = load ptr, ptr %30, align 8 %114 = load i64, ptr %62, align 8 %115 = and i64 %114, 65535 @@ -3702,49 +3690,44 @@ define hidden range(i32 -4, 1) i32 @ma_job_queue_post(ptr noundef %0, ptr nounde %8 = getelementptr inbounds nuw i8, ptr %0, i64 136 br label %.preheader59.i -.preheader59.i: ; preds = %45, %5 - %9 = phi i1 [ true, %5 ], [ false, %45 ] +.preheader59.i: ; preds = %41, %5 + %9 = phi i1 [ true, %5 ], [ false, %41 ] %10 = load i32, ptr %7, align 4 - %11 = lshr i32 %10, 5 - %12 = and i32 %10, 31 - %.not.i65.i = icmp ne i32 %12, 0 - %13 = zext i1 %.not.i65.i to i32 - %14 = or i32 %11, %13 - %.not69.i = icmp eq i32 %14, 0 - br i1 %.not69.i, label %._crit_edge.i, label %.preheader58.i - -.preheader58.i: ; preds = %.preheader59.i, %36 - %indvars.iv.i = phi i64 [ %indvars.iv.next.i, %36 ], [ 0, %.preheader59.i ] - br label %15 + %.not69.i = icmp eq i32 %10, 0 + br i1 %.not69.i, label %ma_slot_allocator_alloc.exit.thread, label %.preheader58.i -15: ; preds = %ma_ffs_32.exit.i, %.preheader58.i - %16 = load ptr, ptr %6, align 8 - %17 = getelementptr inbounds nuw %struct.ma_slot_allocator_group, ptr %16, i64 %indvars.iv.i - %18 = load atomic i32, ptr %17 seq_cst, align 4 - %19 = icmp eq i32 %18, -1 - br i1 %19, label %36, label %.preheader.i - -.preheader.i: ; preds = %15, %22 - %.08.i.i = phi i32 [ %23, %22 ], [ 0, %15 ] - %20 = shl nuw i32 1, %.08.i.i - %21 = and i32 %20, %18 - %.not.i46.not.i = icmp eq i32 %21, 0 +15: ; preds = %.preheader59.i, %32 + %indvars.iv.i = phi i64 [ %indvars.iv.next.i, %32 ], [ 0, %.preheader59.i ] + br label %11 + +11:; preds = %ma_ffs_32.exit.i, %15 + %12 = load ptr, ptr %6, align 8 + %13 = getelementptr inbounds nuw %struct.ma_slot_allocator_group, ptr %12, i64 %indvars.iv.i + %14 = load atomic i32, ptr %13 seq_cst, align 4 + %15 = icmp eq i32 %14, -1 + br i1 %15, label %32, label %.preheader.i + +.preheader.i:; preds = %11, %18 + %.08.i.i = phi i32 [ %19, %22 ], [ 0, %11 ] + %16 = shl nuw i32 1, %.08.i.i + %17 = and i32 %16, %14 + %.not.i46.not.i = icmp eq i32 %17, 0 br i1 %.not.i46.not.i, label %ma_ffs_32.exit.i, label %22 -22: ; preds = %.preheader.i - %23 = add nuw nsw i32 %.08.i.i, 1 - %exitcond.not.i.i = icmp eq i32 %23, 32 +18: ; preds = %.preheader.i + %19 = add nuw nsw i32 %.08.i.i, 1 + %exitcond.not.i.i = icmp eq i32 %19, 32 br i1 %exitcond.not.i.i, label %ma_ffs_32.exit.i, label %.preheader.i ma_ffs_32.exit.i: ; preds = %.preheader.i, %22 %.0.lcssa.i.i = phi i32 [ 32, %22 ], [ %.08.i.i, %.preheader.i ] %24 = shl nuw i32 1, %.0.lcssa.i.i - %25 = or i32 %24, %18 + %25 = or i32 %24, %14 %26 = load ptr, ptr %6, align 8 %27 = getelementptr inbounds nuw %struct.ma_slot_allocator_group, ptr %26, i64 %indvars.iv.i - %28 = cmpxchg volatile ptr %27, i32 %18, i32 %25 seq_cst seq_cst, align 4 + %28 = cmpxchg volatile ptr %27, i32 %14, i32 %25 seq_cst seq_cst, align 4 %29 = extractvalue { i32, i1 } %28, 1 - br i1 %29, label %30, label %15 + br i1 %29, label %30, label %11 30: ; preds = %ma_ffs_32.exit.i %31 = trunc nuw nsw i64 %indvars.iv.i to i32 @@ -3755,7 +3738,7 @@ ma_ffs_32.exit.i: ; preds = %.preheader.i, %22 %.not.i = icmp ult i32 %34, %35 br i1 %.not.i, label %46, label %ma_slot_allocator_alloc.exit.thread -36: ; preds = %15 +36: ; preds = %11 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %37 = load i32, ptr %7, align 4 %38 = lshr i32 %37, 5 @@ -3767,13 +3750,12 @@ ma_ffs_32.exit.i: ; preds = %.preheader.i, %22 %42 = icmp samesign ult i64 %indvars.iv.next.i, %41 br i1 %42, label %.preheader58.i, label %._crit_edge.i -._crit_edge.i: ; preds = %36, %.preheader59.i - %.lcssa.i = phi i32 [ %10, %.preheader59.i ], [ %37, %36 ] - %43 = load i32, ptr %8, align 8 - %44 = icmp ult i32 %43, %.lcssa.i - br i1 %44, label %45, label %ma_slot_allocator_alloc.exit.thread +._crit_edge.i: ; preds = %36 + %39 = load i32, ptr %8, align 8 + %40 = icmp ult i32 %39, %33 + br i1 %40, label %41, label %ma_slot_allocator_alloc.exit.thread -45: ; preds = %._crit_edge.i +41: ; preds = %._crit_edge.i tail call void asm sideeffect "pause", "~{dirflag},~{fpsr},~{flags}"() #71, !srcloc !3 br i1 %9, label %.preheader59.i, label %ma_slot_allocator_alloc.exit.thread @@ -3782,35 +3764,35 @@ ma_ffs_32.exit.i: ; preds = %.preheader.i, %22 %48 = load ptr, ptr %47, align 8 %49 = zext i32 %34 to i64 %50 = getelementptr inbounds nuw i32, ptr %48, i64 %49 + %47 = load i32, ptr %46, align 4 + %48 = add i32 %47, 1 + store i32 %48, ptr %46, align 4 + %49 = load ptr, ptr %43, align 8 + %50 = getelementptr inbounds nuw i32, ptr %49, i64 %45 %51 = load i32, ptr %50, align 4 - %52 = add i32 %51, 1 - store i32 %52, ptr %50, align 4 - %53 = load ptr, ptr %47, align 8 - %54 = getelementptr inbounds nuw i32, ptr %53, i64 %49 - %55 = load i32, ptr %54, align 4 - %56 = zext i32 %55 to i64 - %57 = shl nuw i64 %56, 32 - %58 = or disjoint i64 %57, %49 - %59 = getelementptr inbounds nuw i8, ptr %0, i64 160 - %60 = load ptr, ptr %59, align 8 - %61 = and i32 %34, 65535 - %62 = zext nneg i32 %61 to i64 - %63 = getelementptr inbounds nuw %struct.ma_job, ptr %60, i64 %62 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(104) %63, ptr noundef nonnull align 8 dereferenceable(104) %1, i64 104, i1 false) - %64 = load ptr, ptr %59, align 8 - %65 = getelementptr inbounds nuw %struct.ma_job, ptr %64, i64 %62 - store i64 %58, ptr %65, align 8 - %66 = load i16, ptr %1, align 8 - %67 = load ptr, ptr %59, align 8 - %68 = getelementptr inbounds nuw %struct.ma_job, ptr %67, i64 %62 - store i16 %66, ptr %68, align 8 - %69 = load ptr, ptr %59, align 8 - %70 = getelementptr inbounds nuw %struct.ma_job, ptr %69, i64 %62, i32 1 - store i64 -1, ptr %70, align 8 - %71 = getelementptr inbounds nuw i8, ptr %0, i64 168 - %72 = atomicrmw volatile xchg ptr %71, i32 1 acquire, align 4 - %73 = icmp eq i32 %72, 0 - br i1 %73, label %ma_spinlock_lock.exit, label %.preheader.i37 + %52 = zext i32 %51 to i64 + %53 = shl nuw i64 %52, 32 + %54 = or disjoint i64 %53, %45 + %54 = getelementptr inbounds nuw i8, ptr %0, i64 160 + %55 = load ptr, ptr %54, align 8 + %57 = and i32 %30, 65535 + %58 = zext nneg i32 %57 to i64 + %59 = getelementptr inbounds nuw %struct.ma_job, ptr %56, i64 %58 + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(104) %59, ptr noundef nonnull align 8 dereferenceable(104) %1, i64 104, i1 false) + %60 = load ptr, ptr %55, align 8 + %61 = getelementptr inbounds nuw %struct.ma_job, ptr %60, i64 %58 + store i64 %54, ptr %61, align 8 + %62 = load i16, ptr %1, align 8 + %63 = load ptr, ptr %55, align 8 + %64 = getelementptr inbounds nuw %struct.ma_job, ptr %63, i64 %58 + store i16 %62, ptr %64, align 8 + %65 = load ptr, ptr %55, align 8 + %66 = getelementptr inbounds nuw %struct.ma_job, ptr %65, i64 %58, i32 1 + store i64 -1, ptr %66, align 8 + %68 = getelementptr inbounds nuw i8, ptr %0, i64 168 + %68 = atomicrmw volatile xchg ptr %68, i32 1 acquire, align 4 + %69 = icmp eq i32 %68, 0 + br i1 %69, label %81, label %.preheader.i37 .loopexit.i: ; preds = %.lr.ph.i, %.preheader.i37 %74 = atomicrmw volatile xchg ptr %71, i32 1 acquire, align 4 @@ -3828,30 +3810,30 @@ ma_ffs_32.exit.i: ; preds = %.preheader.i, %22 %79 = icmp eq i32 %78, 1 br i1 %79, label %.lr.ph.i, label %.loopexit.i -ma_spinlock_lock.exit: ; preds = %.loopexit.i, %46 +81: ; preds = %.loopexit.i, %42 %80 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %invariant.op = or disjoint i64 %49, 4294967296 - br label %81 + %invariant.op = or disjoint i64 %45, 4294967296 + br label %85 -81: ; preds = %.backedge, %ma_spinlock_lock.exit +91: ; preds = %.backedge, %81 %82 = load atomic i64, ptr %80 seq_cst, align 8 - %83 = load ptr, ptr %59, align 8 - %84 = and i64 %82, 65535 - %85 = getelementptr inbounds nuw %struct.ma_job, ptr %83, i64 %84, i32 1 - %86 = load atomic i64, ptr %85 seq_cst, align 8 - %87 = load atomic i64, ptr %80 seq_cst, align 8 - %88 = xor i64 %87, %82 - %89 = and i64 %88, -4294901761 - %90 = icmp eq i64 %89, 0 - br i1 %90, label %91, label %.backedge - -91: ; preds = %81 - %92 = and i64 %86, 65535 - %93 = icmp eq i64 %92, 65535 - br i1 %93, label %94, label %100 + %79 = load ptr, ptr %55, align 8 + %80 = and i64 %78, 65535 + %81 = getelementptr inbounds nuw %struct.ma_job, ptr %79, i64 %80, i32 1 + %82 = load atomic i64, ptr %81 seq_cst, align 8 + %83 = load atomic i64, ptr %76 seq_cst, align 8 + %84 = xor i64 %83, %78 + %85 = and i64 %84, -4294901761 + %86 = icmp eq i64 %85, 0 + br i1 %86, label %87, label %.backedge + +87: ; preds = %77 + %88 = and i64 %82, 65535 + %89 = icmp eq i64 %88, 65535 + br i1 %89, label %90, label %96 94: ; preds = %91 - %95 = load ptr, ptr %59, align 8 + %95 = load ptr, ptr %55, align 8 %96 = getelementptr inbounds nuw %struct.ma_job, ptr %95, i64 %84, i32 1 %97 = and i64 %86, -4294967296 %.reass = add i64 %97, %invariant.op @@ -3869,31 +3851,31 @@ ma_spinlock_lock.exit: ; preds = %.loopexit.i, %46 .backedge: ; preds = %100, %94, %81 br label %81 -105: ; preds = %94 - %106 = and i64 %82, -4294967296 - %107 = add i64 %106, 4294967296 - %108 = or disjoint i64 %107, %49 - %109 = cmpxchg volatile ptr %80, i64 %82, i64 %108 seq_cst seq_cst, align 8 - store atomic volatile i32 0, ptr %71 release, align 4 - %110 = load i32, ptr %0, align 8 - %111 = and i32 %110, 1 - %112 = icmp eq i32 %111, 0 - br i1 %112, label %113, label %ma_slot_allocator_alloc.exit.thread - -113: ; preds = %105 - %114 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %115 = getelementptr inbounds nuw i8, ptr %0, i64 32 - %116 = tail call i32 @pthread_mutex_lock(ptr noundef nonnull %115) #71 - %117 = load i32, ptr %114, align 8 - %118 = add nsw i32 %117, 1 - store i32 %118, ptr %114, align 8 - %119 = getelementptr inbounds nuw i8, ptr %0, i64 72 - %120 = tail call i32 @pthread_cond_signal(ptr noundef nonnull %119) #71 - %121 = tail call i32 @pthread_mutex_unlock(ptr noundef nonnull %115) #71 +101: ; preds = %90 + %102 = and i64 %78, -4294967296 + %103 = add i64 %102, 4294967296 + %104 = or disjoint i64 %103, %45 + %105 = cmpxchg volatile ptr %76, i64 %78, i64 %104 seq_cst seq_cst, align 8 + store atomic volatile i32 0, ptr %67 release, align 4 + %106 = load i32, ptr %0, align 8 + %107 = and i32 %106, 1 + %108 = icmp eq i32 %107, 0 + br i1 %108, label %109, label %ma_slot_allocator_alloc.exit.thread + +105: ; preds = %101 + %110 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %111 = getelementptr inbounds nuw i8, ptr %0, i64 32 + %112 = tail call i32 @pthread_mutex_lock(ptr noundef nonnull %111) #71 + %113 = load i32, ptr %110, align 8 + %114 = add nsw i32 %113, 1 + store i32 %114, ptr %110, align 8 + %115 = getelementptr inbounds nuw i8, ptr %0, i64 72 + %116 = tail call i32 @pthread_cond_signal(ptr noundef nonnull %115) #71 + %117 = tail call i32 @pthread_mutex_unlock(ptr noundef nonnull %111) #71 br label %ma_slot_allocator_alloc.exit.thread -ma_slot_allocator_alloc.exit.thread: ; preds = %._crit_edge.i, %45, %30, %105, %113, %2 - %.0 = phi i32 [ -2, %2 ], [ 0, %113 ], [ 0, %105 ], [ -4, %30 ], [ -4, %45 ], [ -4, %._crit_edge.i ] +ma_slot_allocator_alloc.exit.thread: ; preds = %.preheader59.i, %._crit_edge.i, %41, %30, %105, %113, %2 + %.0 = phi i32 [ -2, %2 ], [ 0, %113 ], [ 0, %105 ], [ -4, %30 ], [ -4, %41 ], [ -4, %._crit_edge.i ], [ -4, %.preheader59.i ] ret i32 %.0 } diff --git a/bench/wireshark/optimized/packet-bmc.ll b/bench/wireshark/optimized/packet-bmc.ll index 431a8c13930..8ed08ed5f28 100644 --- a/bench/wireshark/optimized/packet-bmc.ll +++ b/bench/wireshark/optimized/packet-bmc.ll @@ -150,19 +150,23 @@ define internal i32 @dissect_bmc(ptr noundef %0, ptr noundef %1, ptr noundef %2, %43 = add nuw nsw i32 %41, 3 %44 = load i32, ptr @ett_bmc_message_description, align 4 %45 = call ptr @proto_tree_add_subtree(ptr noundef %12, ptr noundef %18, i32 noundef %43, i32 noundef 0, i32 noundef %44, ptr noundef nonnull %5, ptr noundef nonnull @.str.45) - %.not15.i = icmp eq i8 %spec.select.i, 0 + %.not15.i = icmp eq i8 %35, 0 br i1 %.not15.i, label %._crit_edge8.i, label %.preheader.i -.preheader.i: ; preds = %32, %._crit_edge.i - %.07.i = phi i32 [ %.1.lcssa.i, %._crit_edge.i ], [ %43, %32 ] - %.0846.i = phi i8 [ %.185.lcssa.i, %._crit_edge.i ], [ 1, %32 ] - %.0875.i = phi i32 [ %60, %._crit_edge.i ], [ 0, %32 ] +.preheader.i: ; preds = %32 + %46 = call i32 @llvm.umax.i32(i32 %41, i32 1) + br label %.preheader.i + +.preheader.i: ; preds = %._crit_edge.i, %.preheader.preheader.i + %.07.i = phi i32 [ %.1.lcssa.i, %._crit_edge.i ], [ %43, %.preheader.preheader.i ] + %.0846.i = phi i8 [ %.185.lcssa.i, %._crit_edge.i ], [ 1, %.preheader.preheader.i ] + %.0875.i = phi i32 [ %61, %._crit_edge.i ], [ 0, %.preheader.preheader.i ] %.not931.i = icmp ugt i8 %.0846.i, %35 br i1 %.not931.i, label %._crit_edge.i, label %.lr.ph.i .lr.ph.i: ; preds = %.preheader.i, %58 - %.13.i = phi i32 [ %.2.i, %58 ], [ %.07.i, %.preheader.i ] - %.1852.i = phi i8 [ %59, %58 ], [ %.0846.i, %.preheader.i ] + %.13.i = phi i32 [ %.2.i, %59 ], [ %.07.i, %.preheader.i ] + %.1852.i = phi i8 [ %59, %59 ], [ %.0846.i, %.preheader.i ] %46 = zext i8 %.1852.i to i32 %47 = call zeroext i8 @tvb_get_uint8(ptr noundef %18, i32 noundef %.13.i) %48 = load i32, ptr @hf_bmc_message_description_type, align 4 @@ -171,7 +175,7 @@ define internal i32 @dissect_bmc(ptr noundef %0, ptr noundef %1, ptr noundef %2, %51 = call ptr (ptr, i32, ptr, i32, i32, i32, ptr, ...) @proto_tree_add_uint_format(ptr noundef %45, i32 noundef %48, ptr noundef %18, i32 noundef %.13.i, i32 noundef 1, i32 noundef %49, ptr noundef nonnull @.str.46, i32 noundef %46, ptr noundef %50, i32 noundef %49) %52 = add i32 %.13.i, 1 %53 = and i8 %47, -5 - switch i8 %53, label %58 [ + switch i8 %53, label %59 [ i8 1, label %.sink.split.i i8 0, label %54 ] @@ -180,9 +184,9 @@ define internal i32 @dissect_bmc(ptr noundef %0, ptr noundef %1, ptr noundef %2, br label %.sink.split.i .sink.split.i: ; preds = %54, %.lr.ph.i - %hf_bmc_message_id.sink.i = phi ptr [ @hf_bmc_offset_to_ctch_bs_index_of_first_transmission, %54 ], [ @hf_bmc_message_id, %.lr.ph.i ] - %.sink20.i = phi i32 [ 1, %54 ], [ 2, %.lr.ph.i ] - %.sink.i = phi i32 [ 2, %54 ], [ 3, %.lr.ph.i ] + %hf_bmc_message_id.sink.i = phi ptr [ @hf_bmc_offset_to_ctch_bs_index_of_first_transmission, %55 ], [ @hf_bmc_message_id, %.lr.ph.i ] + %.sink20.i = phi i32 [ 1, %55 ], [ 2, %.lr.ph.i ] + %.sink.i = phi i32 [ 2, %55 ], [ 3, %.lr.ph.i ] %55 = load i32, ptr %hf_bmc_message_id.sink.i, align 4 %56 = call ptr @proto_tree_add_item(ptr noundef %45, i32 noundef %55, ptr noundef %18, i32 noundef %52, i32 noundef %.sink20.i, i32 noundef 0) %57 = add i32 %.sink.i, %.13.i @@ -195,11 +199,11 @@ define internal i32 @dissect_bmc(ptr noundef %0, ptr noundef %1, ptr noundef %2, br i1 %.not93.i, label %._crit_edge.i, label %.lr.ph.i, !llvm.loop !6 ._crit_edge.i: ; preds = %58, %.preheader.i - %.185.lcssa.i = phi i8 [ %.0846.i, %.preheader.i ], [ %59, %58 ] - %.1.lcssa.i = phi i32 [ %.07.i, %.preheader.i ], [ %.2.i, %58 ] + %.185.lcssa.i = phi i8 [ %.0846.i, %.preheader.i ], [ %59, %59 ] + %.1.lcssa.i = phi i32 [ %.07.i, %.preheader.i ], [ %.2.i, %59 ] %60 = add nuw nsw i32 %.0875.i, 1 - %61 = icmp samesign ult i32 %60, %41 - br i1 %61, label %.preheader.i, label %._crit_edge8.i, !llvm.loop !8 + %61 = icmp eq i32 %60, %46 + br i1 %61, label %._crit_edge8.i, label %.preheader.i, !llvm.loop !8 ._crit_edge8.i: ; preds = %._crit_edge.i, %32 %.0.lcssa.i = phi i32 [ %43, %32 ], [ %.1.lcssa.i, %._crit_edge.i ] @@ -337,10 +341,14 @@ declare void @proto_item_set_len(ptr noundef, i32 noundef) local_unnamed_addr #1 ; Function Attrs: null_pointer_is_valid declare i32 @tvb_reported_length_remaining(ptr noundef, i32 noundef) local_unnamed_addr #1 +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare i32 @llvm.umax.i32(i32, i32) #3 + attributes #0 = { null_pointer_is_valid sspstrong uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "probe-stack"="inline-asm" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { null_pointer_is_valid "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #2 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } -attributes #3 = { nounwind } +attributes #3 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } +attributes #4 = { nounwind } !llvm.module.flags = !{!0, !1, !2, !3, !4, !5} diff --git a/bench/wolfssl/optimized/random.ll b/bench/wolfssl/optimized/random.ll index f4292ef997c..53bf2ba7388 100644 --- a/bench/wolfssl/optimized/random.ll +++ b/bench/wolfssl/optimized/random.ll @@ -909,13 +909,13 @@ define internal fastcc range(i32 0, 3) i32 @Hash_DRBG_Generate(ptr noundef %0, p %19 = zext i1 %.not.i to i32 %20 = add nuw nsw i32 %17, %19 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(55) %4, ptr noundef nonnull readonly align 1 dereferenceable(55) %16, i64 55, i1 false) - %.not10.i = icmp eq i32 %20, 0 - br i1 %.not10.i, label %.lr.ph29.preheader.i.i, label %.lr.ph.i + %umax.i = tail call i32 @llvm.umax.i32(i32 %20, i32 1) + br label %.lr.ph.i -.lr.ph.i: ; preds = %15, %array_add_one.exit.i - %.0217.i = phi i32 [ %43, %array_add_one.exit.i ], [ 0, %15 ] - %.0236.i = phi ptr [ %.124.i, %array_add_one.exit.i ], [ %1, %15 ] - %.0255.i = phi i32 [ %.126.i, %array_add_one.exit.i ], [ %2, %15 ] +.lr.ph.i: ; preds = %array_add_one.exit.i, %15 + %.0217.i = phi i32 [ 0, %15 ], [ %43, %array_add_one.exit.i ] + %.0236.i = phi ptr [ %1, %15 ], [ %.124.i, %array_add_one.exit.i ] + %.0255.i = phi i32 [ %2, %15 ], [ %.126.i, %array_add_one.exit.i ] %21 = call i32 @wc_InitSha256(ptr noundef nonnull %6) #9 %22 = icmp eq i32 %21, 0 br i1 %22, label %23, label %.thread2.i @@ -948,7 +948,7 @@ define internal fastcc range(i32 0, 3) i32 @Hash_DRBG_Generate(ptr noundef %0, p br label %33 33: ; preds = %33, %32 - %.06.i.i = phi i32 [ 54, %32 ], [ %38, %33 ] + %.06.i.i = phi i32 [ 54, %33 ], [ %38, %34 ] %34 = zext nneg i32 %.06.i.i to i64 %35 = getelementptr inbounds nuw i8, ptr %4, i64 %34 %36 = load i8, ptr %35, align 1, !tbaa !15 @@ -971,14 +971,14 @@ array_add_one.exit.loopexit.i: ; preds = %33 br label %array_add_one.exit.i array_add_one.exit.i: ; preds = %array_add_one.exit.loopexit.i, %39, %29 - %.126.i = phi i32 [ 0, %39 ], [ 0, %29 ], [ %41, %array_add_one.exit.loopexit.i ] - %.124.i = phi ptr [ %.0236.i, %39 ], [ %.0236.i, %29 ], [ %42, %array_add_one.exit.loopexit.i ] + %.126.i = phi i32 [ 0, %40 ], [ 0, %30 ], [ %41, %array_add_one.exit.loopexit.i ] + %.124.i = phi ptr [ %.0236.i, %40 ], [ %.0236.i, %30 ], [ %42, %array_add_one.exit.loopexit.i ] %43 = add nuw nsw i32 %.0217.i, 1 - %exitcond.not.i = icmp eq i32 %43, %20 + %exitcond.not.i = icmp eq i32 %43, %umax.i br i1 %exitcond.not.i, label %.lr.ph29.preheader.i.i, label %.lr.ph.i, !llvm.loop !31 -.lr.ph29.preheader.i.i: ; preds = %array_add_one.exit.i, %26, %.thread2.i, %15 - %44 = phi i1 [ false, %.thread2.i ], [ false, %15 ], [ %28, %26 ], [ %28, %array_add_one.exit.i ] +.lr.ph29.preheader.i.i: ; preds = %array_add_one.exit.i, %26, %.thread2.i + %44 = phi i1 [ false, %.thread2.i ], [ %28, %27 ], [ %28, %array_add_one.exit.i ] br label %.lr.ph29.i.i .lr.ph29.i.i: ; preds = %.lr.ph29.i.i, %.lr.ph29.preheader.i.i @@ -1051,8 +1051,8 @@ Hash_gen.exit: ; preds = %.lr.ph35.i.i br i1 %70, label %.preheader, label %.lr.ph.i24, !llvm.loop !32 .lr.ph.i24: ; preds = %.preheader, %.lr.ph.i24 - %indvars.iv42.i = phi i64 [ %indvars.iv.next43.i, %.lr.ph.i24 ], [ 22, %.preheader ] - %.136.i = phi i16 [ %76, %.lr.ph.i24 ], [ %69, %.preheader ] + %indvars.iv42.i = phi i64 [ %indvars.iv.next43.i, %.lr.ph.i ], [ 22, %.preheader ] + %.136.i = phi i16 [ %76, %.lr.ph.i ], [ %69, %.preheader ] %71 = getelementptr inbounds nuw i8, ptr %16, i64 %indvars.iv42.i %72 = load i8, ptr %71, align 1, !tbaa !15 %73 = zext i8 %72 to i16 @@ -1069,9 +1069,9 @@ array_add.exit: ; preds = %.lr.ph.i24 br label %78 78: ; preds = %78, %array_add.exit - %indvars.iv38.i27 = phi i64 [ 55, %array_add.exit ], [ %indvars.iv.next39.i30, %78 ] - %indvars.iv.i28 = phi i64 [ 54, %array_add.exit ], [ %indvars.iv.next.i31, %78 ] - %.034.i29 = phi i16 [ 0, %array_add.exit ], [ %88, %78 ] + %indvars.iv38.i27 = phi i64 [ 55, %array_add.exit ], [ %indvars.iv.next39.i30, %79 ] + %indvars.iv.i28 = phi i64 [ 54, %array_add.exit ], [ %indvars.iv.next.i31, %79 ] + %.034.i29 = phi i16 [ 0, %array_add.exit ], [ %88, %79 ] %indvars.iv.next39.i30 = add nsw i64 %indvars.iv38.i27, -1 %79 = getelementptr inbounds i8, ptr %16, i64 %indvars.iv.i28 %80 = load i8, ptr %79, align 1, !tbaa !15 @@ -1094,9 +1094,9 @@ array_add.exit40: ; preds = %78 br label %91 91: ; preds = %91, %array_add.exit40 - %indvars.iv38.i42 = phi i64 [ 4, %array_add.exit40 ], [ %indvars.iv.next39.i45, %91 ] - %indvars.iv.i43 = phi i64 [ 54, %array_add.exit40 ], [ %indvars.iv.next.i46, %91 ] - %.034.i44 = phi i16 [ 0, %array_add.exit40 ], [ %101, %91 ] + %indvars.iv38.i42 = phi i64 [ 4, %array_add.exit39 ], [ %indvars.iv.next39.i45, %92 ] + %indvars.iv.i43 = phi i64 [ 54, %array_add.exit39 ], [ %indvars.iv.next.i46, %92 ] + %.034.i44 = phi i16 [ 0, %array_add.exit39 ], [ %101, %92 ] %indvars.iv.next39.i45 = add nsw i64 %indvars.iv38.i42, -1 %92 = getelementptr inbounds i8, ptr %16, i64 %indvars.iv.i43 %93 = load i8, ptr %92, align 1, !tbaa !15 @@ -1114,8 +1114,8 @@ array_add.exit40: ; preds = %78 br i1 %102, label %91, label %.lr.ph.i50, !llvm.loop !32 .lr.ph.i50: ; preds = %91, %.lr.ph.i50 - %indvars.iv42.i51 = phi i64 [ %indvars.iv.next43.i53, %.lr.ph.i50 ], [ 50, %91 ] - %.136.i52 = phi i16 [ %108, %.lr.ph.i50 ], [ %101, %91 ] + %indvars.iv42.i51 = phi i64 [ %indvars.iv.next43.i53, %.lr.ph.i49 ], [ 50, %92 ] + %.136.i52 = phi i16 [ %108, %.lr.ph.i49 ], [ %101, %92 ] %103 = getelementptr inbounds nuw i8, ptr %16, i64 %indvars.iv42.i51 %104 = load i8, ptr %103, align 1, !tbaa !15 %105 = zext i8 %104 to i16 @@ -1128,14 +1128,14 @@ array_add.exit40: ; preds = %78 br i1 %.not.i54, label %array_add.exit55, label %.lr.ph.i50, !llvm.loop !33 array_add.exit55: ; preds = %.lr.ph.i50, %.critedge23.thread, %.critedge23 - %109 = phi i32 [ 1, %.critedge23.thread ], [ 1, %.critedge23 ], [ 0, %.lr.ph.i50 ] + %109 = phi i32 [ 1, %.critedge23.thread ], [ 1, %.critedge23 ], [ 0, %.lr.ph.i49 ] %110 = load i32, ptr %0, align 8, !tbaa !17 %111 = add i32 %110, 1 store i32 %111, ptr %0, align 8, !tbaa !17 br label %.lr.ph29.preheader.i .lr.ph29.preheader.i: ; preds = %Hash_gen.exit, %array_add.exit55 - %.0 = phi i32 [ %109, %array_add.exit55 ], [ 1, %Hash_gen.exit ] + %.0 = phi i32 [ %109, %array_add.exit54 ], [ 1, %Hash_gen.exit ] br label %.lr.ph29.i .lr.ph29.i: ; preds = %.lr.ph29.i, %.lr.ph29.preheader.i @@ -1591,6 +1591,9 @@ declare i32 @llvm.bswap.i32(i32) #8 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i32 @llvm.umin.i32(i32, i32) #8 +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare i32 @llvm.umax.i32(i32, i32) #8 + attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { nofree norecurse nosync nounwind memory(argmem: read) uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #2 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } diff --git a/bench/yalantinglibs/optimized/channel.ll b/bench/yalantinglibs/optimized/channel.ll index b4fbb346c57..ef827e0ab03 100644 --- a/bench/yalantinglibs/optimized/channel.ll +++ b/bench/yalantinglibs/optimized/channel.ll @@ -74928,7 +74928,7 @@ _ZN10moodycamel15ConcurrentQueueISt10unique_ptrIN7cinatra16coro_http_clientESt14 %add.i = add nuw nsw i64 %div3.i, %conv.i %initialBlockPoolSize.i.i = getelementptr inbounds nuw i8, ptr %this, i64 32 store i64 %add.i, ptr %initialBlockPoolSize.i.i, align 8 - %cmp.i.i = icmp eq i64 %add.i, 0 + %cmp.i.i = icmp eq i64 %reserve_size, 0 br i1 %cmp.i.i, label %if.then.i.i, label %if.end.i.i if.then.i.i: ; preds = %_ZN10moodycamel15ConcurrentQueueISt10unique_ptrIN7cinatra16coro_http_clientESt14default_deleteIS3_EENS_28ConcurrentQueueDefaultTraitsEE39populate_initial_implicit_producer_hashEv.exit.i @@ -74944,14 +74944,14 @@ if.end.i.i: ; preds = %_ZN10moodycamel15Co for.body.i.i.i: ; preds = %if.end.i.i, %for.body.i.i.i %i.07.i.i.i = phi i64 [ %inc.i.i.i, %for.body.i.i.i ], [ 0, %if.end.i.i ] - %add.ptr.i.i.i = getelementptr inbounds nuw %"struct.moodycamel::ConcurrentQueue>::Block", ptr %call.i.i.i.i.i, i64 %i.07.i.i.i + %add.ptr.i.i.i = getelementptr inbounds %"struct.moodycamel::ConcurrentQueue>::Block", ptr %call.i.i.i.i.i, i64 %i.07.i.i.i %next.i.i.i.i = getelementptr inbounds nuw i8, ptr %add.ptr.i.i.i, i64 256 %freeListNext.i.i.i.i = getelementptr inbounds nuw i8, ptr %add.ptr.i.i.i, i64 312 store ptr null, ptr %freeListNext.i.i.i.i, align 8 %dynamicallyAllocated.i.i.i.i = getelementptr inbounds nuw i8, ptr %add.ptr.i.i.i, i64 320 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(52) %next.i.i.i.i, i8 0, i64 52, i1 false) store i8 1, ptr %dynamicallyAllocated.i.i.i.i, align 8 - %inc.i.i.i = add nuw nsw i64 %i.07.i.i.i, 1 + %inc.i.i.i = add nuw i64 %i.07.i.i.i, 1 %cmp1.not.i.i.i = icmp eq i64 %inc.i.i.i, %add.i br i1 %cmp1.not.i.i.i, label %for.body.preheader.i.i, label %for.body.i.i.i, !llvm.loop !768 @@ -75031,14 +75031,14 @@ if.end.i.i27: ; preds = %_ZN10moodycamel15Co for.body.i.i.i31: ; preds = %if.end.i.i27, %for.body.i.i.i31 %i.07.i.i.i32 = phi i64 [ %inc.i.i.i37, %for.body.i.i.i31 ], [ 0, %if.end.i.i27 ] - %add.ptr.i.i.i33 = getelementptr inbounds nuw %"struct.moodycamel::ConcurrentQueue>::Block", ptr %call.i.i.i.i.i29, i64 %i.07.i.i.i32 + %add.ptr.i.i.i33 = getelementptr inbounds %"struct.moodycamel::ConcurrentQueue>::Block", ptr %call.i.i.i.i.i29, i64 %i.07.i.i.i32 %next.i.i.i.i34 = getelementptr inbounds nuw i8, ptr %add.ptr.i.i.i33, i64 256 %freeListNext.i.i.i.i35 = getelementptr inbounds nuw i8, ptr %add.ptr.i.i.i33, i64 312 store ptr null, ptr %freeListNext.i.i.i.i35, align 8 %dynamicallyAllocated.i.i.i.i36 = getelementptr inbounds nuw i8, ptr %add.ptr.i.i.i33, i64 320 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(52) %next.i.i.i.i34, i8 0, i64 52, i1 false) store i8 1, ptr %dynamicallyAllocated.i.i.i.i36, align 8 - %inc.i.i.i37 = add nuw nsw i64 %i.07.i.i.i32, 1 + %inc.i.i.i37 = add nuw i64 %i.07.i.i.i32, 1 %cmp1.not.i.i.i38 = icmp eq i64 %inc.i.i.i37, %add.i br i1 %cmp1.not.i.i.i38, label %for.body.preheader.i.i39, label %for.body.i.i.i31, !llvm.loop !768 diff --git a/scripts/setup_pre_commit_patch.sh b/scripts/setup_pre_commit_patch.sh index c5409e09ef4..57063aa1007 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/143683 export COMPTIME_MODE=0 # Please rebase manually