diff --git a/bench/boost/optimized/get_turns_linear_linear_geo.ll b/bench/boost/optimized/get_turns_linear_linear_geo.ll index 6f7b40bd621..0b88bab21fd 100644 --- a/bench/boost/optimized/get_turns_linear_linear_geo.ll +++ b/bench/boost/optimized/get_turns_linear_linear_geo.ll @@ -167032,9 +167032,10 @@ _ZNK5boost8geometry6detail9get_turns29unique_sub_range_from_sectionILb0ENS0_7sec %87 = load i8, ptr %50, align 2, !tbaa !3080, !range !17, !noundef !18 %88 = load i8, ptr %64, align 1, !tbaa !3082, !range !17, !noundef !18 %brmerge.i101 = or i8 %85, %84 - %brmerge5.i102 = or i8 %88, %87 - %or.cond.i103 = and i8 %brmerge5.i102, %brmerge.i101 - %or.cond.i = trunc nuw i8 %or.cond.i103 to i1 + %brmerge.i = icmp ne i8 %89, 0 + %90 = or i8 %brmerge.i99, %87 + %brmerge5.i = icmp ne i8 %90, 0 + %or.cond.i = and i1 %brmerge.i, %brmerge5.i %.0.i = select i1 %or.cond.i, i32 3, i32 4 %89 = select i1 %38, i32 2, i32 0 %90 = select i1 %24, i32 1, i32 %89 @@ -168792,9 +168793,10 @@ _ZNK5boost8geometry6detail9get_turns29unique_sub_range_from_sectionILb0ENS0_7sec %86 = load i8, ptr %50, align 2, !tbaa !3080, !range !17, !noundef !18 %87 = load i8, ptr %64, align 1, !tbaa !3082, !range !17, !noundef !18 %brmerge.i99 = or i8 %84, %83 - %brmerge5.i100 = or i8 %87, %86 - %or.cond.i101 = and i8 %brmerge5.i100, %brmerge.i99 - %or.cond.i = trunc nuw i8 %or.cond.i101 to i1 + %brmerge.i = icmp ne i8 %88, 0 + %89 = or i8 %87, %86 + %brmerge5.i = icmp ne i8 %brmerge.i101, 0 + %or.cond.i = and i1 %brmerge.i, %brmerge5.i %.0.i = select i1 %or.cond.i, i32 3, i32 4 %88 = select i1 %38, i32 2, i32 0 %89 = select i1 %24, i32 1, i32 %88 diff --git a/bench/boost/optimized/sym_difference_linear_linear.ll b/bench/boost/optimized/sym_difference_linear_linear.ll index 2d986857ce0..5fe19947ff4 100644 --- a/bench/boost/optimized/sym_difference_linear_linear.ll +++ b/bench/boost/optimized/sym_difference_linear_linear.ll @@ -201434,9 +201434,10 @@ _ZNK5boost8geometry6detail9get_turns29unique_sub_range_from_sectionILb0ENS0_7sec %87 = load i8, ptr %50, align 2, !tbaa !3763, !range !17, !noundef !18 %88 = load i8, ptr %64, align 1, !tbaa !3765, !range !17, !noundef !18 %brmerge.i101 = or i8 %85, %84 - %brmerge5.i102 = or i8 %88, %87 - %or.cond.i103 = and i8 %brmerge5.i102, %brmerge.i101 - %or.cond.i = trunc nuw i8 %or.cond.i103 to i1 + %brmerge.i = icmp ne i8 %89, 0 + %90 = or i8 %brmerge.i99, %87 + %brmerge5.i = icmp ne i8 %90, 0 + %or.cond.i = and i1 %brmerge.i, %brmerge5.i %.0.i = select i1 %or.cond.i, i32 3, i32 4 %89 = select i1 %38, i32 2, i32 0 %90 = select i1 %24, i32 1, i32 %89 @@ -202503,9 +202504,10 @@ _ZNK5boost8geometry6detail9get_turns29unique_sub_range_from_sectionILb0ENS0_7sec %86 = load i8, ptr %50, align 2, !tbaa !3763, !range !17, !noundef !18 %87 = load i8, ptr %64, align 1, !tbaa !3765, !range !17, !noundef !18 %brmerge.i99 = or i8 %84, %83 - %brmerge5.i100 = or i8 %87, %86 - %or.cond.i101 = and i8 %brmerge5.i100, %brmerge.i99 - %or.cond.i = trunc nuw i8 %or.cond.i101 to i1 + %brmerge.i = icmp ne i8 %88, 0 + %89 = or i8 %87, %86 + %brmerge5.i = icmp ne i8 %brmerge.i101, 0 + %or.cond.i = and i1 %brmerge.i, %brmerge5.i %.0.i = select i1 %or.cond.i, i32 3, i32 4 %88 = select i1 %38, i32 2, i32 0 %89 = select i1 %24, i32 1, i32 %88 diff --git a/bench/box2d/optimized/imgui.ll b/bench/box2d/optimized/imgui.ll index 9a1e1d1be84..518a23cdd9c 100644 --- a/bench/box2d/optimized/imgui.ll +++ b/bench/box2d/optimized/imgui.ll @@ -58120,13 +58120,10 @@ _ZN5ImGui10GetKeyDataE8ImGuiKey.exit: ; preds = %6, %switch.hole_che br i1 %20, label %_ZN5ImGui12TestKeyOwnerE8ImGuiKeyj.exit, label %21 21: ; preds = %17 - %22 = and i32 %1, 254 - %.not = icmp ne i32 %22, 0 - %23 = fcmp oeq float %19, 0.000000e+00 - %.tr = trunc i32 %1 to i1 - %spec.select.narrow = or i1 %.not, %.tr - %.not34 = xor i1 %spec.select.narrow, true - %or.cond = or i1 %23, %.not34 + %22 = fcmp oeq float %19, 0.000000e+00 + %23 = and i32 %1, 255 + %spec.select.narrow.not = icmp eq i32 %23, 0 + %or.cond = or i1 %spec.select.narrow.not, %22 br i1 %or.cond, label %106, label %24 24: ; preds = %21 @@ -58283,7 +58280,7 @@ _ZN5ImGui10GetKeyDataE8ImGuiKey.exit.i: ; preds = %43, %switch.hole_ch br i1 %.231.shrunk, label %107, label %_ZN5ImGui12TestKeyOwnerE8ImGuiKeyj.exit 106: ; preds = %79, %21 - %.029 = phi i1 [ %23, %21 ], [ %.0.i, %79 ] + %.029 = phi i1 [ %22, %21 ], [ %.0.i, %79 ] br i1 %.029, label %107, label %_ZN5ImGui12TestKeyOwnerE8ImGuiKeyj.exit 107: ; preds = %101, %105, %106 diff --git a/bench/c3c/optimized/sema_expr.ll b/bench/c3c/optimized/sema_expr.ll index 5e1a7f5a840..ca082cdd1c1 100644 --- a/bench/c3c/optimized/sema_expr.ll +++ b/bench/c3c/optimized/sema_expr.ll @@ -6713,11 +6713,9 @@ define internal fastcc i32 @range_const_len(ptr noundef readonly captures(none) %43 = tail call i64 @int_to_i64(ptr noundef nonnull byval(%struct.Int) align 8 %40) #12 %44 = trunc i64 %43 to i32 %45 = load i8, ptr %0, align 4 - %46 = trunc i8 %45 to i1 - %47 = and i8 %45, 2 - %.not27 = icmp ne i8 %47, 0 - %or.cond.not = and i1 %.not27, %46 - br i1 %or.cond.not, label %48, label %50 + %46 = and i8 %45, 3 + %or.cond.not = icmp eq i8 %46, 3 + br i1 %or.cond.not, label %47, label %50 48: ; preds = %42 %reass.sub = sub i32 %44, %26 diff --git a/bench/clamav/optimized/others.ll b/bench/clamav/optimized/others.ll index 834f985a7a3..b1d116e3ba2 100644 --- a/bench/clamav/optimized/others.ll +++ b/bench/clamav/optimized/others.ll @@ -2725,10 +2725,9 @@ cli_virus_found_cb.exit: ; preds = %30, %25, %23 56: ; preds = %53, %39, %cli_virus_found_cb.exit %57 = phi i32 [ %.pre43, %53 ], [ %37, %39 ], [ %37, %cli_virus_found_cb.exit ] %58 = and i32 %57, 1 - %.not35 = icmp ne i32 %58, 0 - %trunc = trunc nuw i32 %2 to i1 - %or.cond.not = select i1 %.not35, i1 true, i1 %trunc - br i1 %or.cond.not, label %61, label %59 + %58 = or i32 %58, %2 + %or.cond = icmp eq i32 %58, 0 + br i1 %or.cond, label %59, label %61 59: ; preds = %56 %60 = getelementptr inbounds nuw i8, ptr %0, i64 185 diff --git a/bench/darktable/optimized/decoders_dcraw.ll b/bench/darktable/optimized/decoders_dcraw.ll index 41fc2828723..ca5753d6bf9 100644 --- a/bench/darktable/optimized/decoders_dcraw.ll +++ b/bench/darktable/optimized/decoders_dcraw.ll @@ -7073,11 +7073,8 @@ _ZNSt6vectorIhSaIhEED2Ev.exit: ; preds = %_ZNSt6vectorIhSaIhE %invariant.gep117 = getelementptr inbounds nuw i16, ptr %122, i64 %128 %invariant.gep119 = getelementptr inbounds nuw i16, ptr %122, i64 %128 %invariant.gep121 = getelementptr inbounds nuw i16, ptr %122, i64 %127 - %129 = add nsw i64 %wide.trip.count103, -1 - %130 = trunc i64 %129 to i1 - %131 = icmp ugt i64 %129, 1 - %132 = or i1 %131, %130 - br i1 %132, label %.ph.lver.orig, label %.ph + %.not131 = icmp eq i16 %115, 2 + br i1 %.not131, label %.ph, label %.ph.lver.orig .ph.lver.orig: ; preds = %.lver.check, %.ph.lver.orig %indvars.iv100.lver.orig = phi i64 [ %indvars.iv.next101.lver.orig, %.ph.lver.orig ], [ 0, %.lver.check ] @@ -7154,7 +7151,7 @@ _ZNSt6vectorIhSaIhEED2Ev.exit: ; preds = %_ZNSt6vectorIhSaIhE %exitcond104.not = icmp eq i64 %indvars.iv.next101, %wide.trip.count103 br i1 %exitcond104.not, label %._crit_edge76, label %156, !llvm.loop !208 -._crit_edge76: ; preds = %156, %.ph.lver.orig +._crit_edge76: ; preds = %.ph.lver.orig, %152 %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %2, i64 8 %.pre = load double, ptr %.phi.trans.insert, align 8, !tbaa !207 %.pre105 = load double, ptr %2, align 16, !tbaa !207 diff --git a/bench/darktable/optimized/identify_tools.ll b/bench/darktable/optimized/identify_tools.ll index e0a23b17167..e2b81bf4413 100644 --- a/bench/darktable/optimized/identify_tools.ll +++ b/bench/darktable/optimized/identify_tools.ll @@ -208,11 +208,8 @@ define noundef float @_ZN6LibRaw10find_greenEiiii(ptr noundef nonnull readonly a %wide.trip.count93 = and i64 %54, 4294967295 %.pre95 = load i16, ptr %6, align 16, !tbaa !80 %.pre96 = load i16, ptr %55, align 16, !tbaa !80 - %56 = add nsw i64 %wide.trip.count93, -1 - %57 = trunc i64 %56 to i1 - %58 = icmp ugt i64 %56, 1 - %59 = or i1 %58, %57 - br i1 %59, label %.ph.lver.orig, label %.ph + %.not115 = icmp eq i16 %51, 2 + br i1 %.not115, label %.ph, label %.ph.lver.orig .ph.lver.orig: ; preds = %.lver.check, %.ph.lver.orig %60 = phi i16 [ %64, %.ph.lver.orig ], [ %.pre96, %.lver.check ] @@ -262,7 +259,7 @@ define noundef float @_ZN6LibRaw10find_greenEiiii(ptr noundef nonnull readonly a %88 = load ptr, ptr %85, align 8, !tbaa !71 %89 = getelementptr inbounds nuw i8, ptr %88, i64 32 %90 = load ptr, ptr %89, align 8 - %91 = tail call noundef i32 %90(ptr noundef nonnull align 8 dereferenceable(8) %85, i64 noundef %87, i32 noundef 0) + %91 = tail call noundef i32 %86(ptr noundef nonnull align 8 dereferenceable(8) %85, i64 noundef %87, i32 noundef 0) %92 = load i16, ptr %8, align 2, !tbaa !78 %.not74 = icmp eq i16 %92, 0 br i1 %.not74, label %._crit_edge.split, label %.lr.ph @@ -338,7 +335,7 @@ define noundef float @_ZN6LibRaw10find_greenEiiii(ptr noundef nonnull readonly a %exitcond94.not = icmp eq i64 %indvars.iv.next91, %wide.trip.count93 br i1 %exitcond94.not, label %._crit_edge, label %105, !llvm.loop !84 -._crit_edge: ; preds = %105, %.ph.lver.orig +._crit_edge: ; preds = %.ph.lver.orig, %101 %.pre97 = load double, ptr %7, align 16, !tbaa !74 %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %7, i64 8 %.pre98 = load double, ptr %.phi.trans.insert, align 8 diff --git a/bench/delta-rs/optimized/2n0ez5zuwgs53clg.ll b/bench/delta-rs/optimized/2n0ez5zuwgs53clg.ll index a45bb0771c8..fff6fc2d141 100644 --- a/bench/delta-rs/optimized/2n0ez5zuwgs53clg.ll +++ b/bench/delta-rs/optimized/2n0ez5zuwgs53clg.ll @@ -64762,8 +64762,8 @@ define internal fastcc noundef zeroext i1 @"_ZN64_$LT$sqlparser..ast..ListAgg$u2 br i1 %39, label %40, label %.critedge 40: ; preds = %38 - %or.cond.i = trunc nuw i8 %26 to i1 - br i1 %or.cond.i, label %41, label %.thread12 + %or.cond.not.i = icmp eq i8 %26, 0 + br i1 %or.cond.not.i, label %.thread12, label %41 41: ; preds = %40 %42 = getelementptr inbounds nuw i8, ptr %0, i64 32 diff --git a/bench/graphviz/optimized/compile.ll b/bench/graphviz/optimized/compile.ll index ebf4dcfc12e..dc474bbdefc 100644 --- a/bench/graphviz/optimized/compile.ll +++ b/bench/graphviz/optimized/compile.ll @@ -242,17 +242,14 @@ define noalias noundef ptr @compileProg(ptr noundef readonly captures(none) %0, 8: ; preds = %3 %9 = trunc i8 %2 to i1 - %.not75 = xor i1 %9, true %10 = and i8 %2, 2 %.not63 = icmp eq i8 %10, 0 - %or.cond76 = and i1 %.not63, %.not75 - %11 = and i8 %2, 4 - %.not64 = icmp eq i8 %11, 0 - %or.cond77 = select i1 %or.cond76, i1 %.not64, i1 false + %or.cond76 = and i8 %2, 7 + %or.cond77 = icmp ne i8 %11, 0 %.str.8..str.7.i = select i1 %.not63, ptr @.str.8, ptr @.str.7 %.str.10..str.9.i = select i1 %.not63, ptr @.str.10, ptr @.str.9 %.0.i = select i1 %9, ptr %.str.8..str.7.i, ptr %.str.10..str.9.i - %.060 = select i1 %or.cond77, ptr null, ptr %.0.i + %.060 = select i1 %or.cond77, ptr %.0.i, ptr null %12 = tail call noalias dereferenceable_or_null(136) ptr @calloc(i64 noundef 1, i64 noundef 136) #24 %.not.i = icmp eq ptr %12, null br i1 %.not.i, label %initDisc.exit.thread, label %13 @@ -736,9 +733,9 @@ mkBlock.exit: ; preds = %180, %181 store i32 4, ptr @codePhase, align 4, !tbaa !43 %194 = getelementptr inbounds nuw i8, ptr %0, i64 64 %195 = load ptr, ptr %194, align 8, !tbaa !79 - %196 = icmp eq ptr %195, null - %or.cond.not = select i1 %196, i1 %or.cond77, i1 false - br i1 %or.cond.not, label %204, label %197 + %196 = icmp ne ptr %195, null + %or.cond.not = select i1 %196, i1 true, i1 %or.cond77 + br i1 %or.cond.not, label %197, label %204 197: ; preds = %.thread91 store i64 29, ptr getelementptr inbounds nuw (i8, ptr @symbols, i64 32), align 16, !tbaa !58 diff --git a/bench/gromacs/optimized/lincs.ll b/bench/gromacs/optimized/lincs.ll index 2efaba89ed4..e761f6d6e22 100644 --- a/bench/gromacs/optimized/lincs.ll +++ b/bench/gromacs/optimized/lincs.ll @@ -9232,7 +9232,8 @@ _ZN3gmxL19calc_dist_iter_simdEiiNS_8ArrayRefIKN12_GLOBAL__N_18AtomPairEEEPA3_KfP 699: ; preds = %698, %._crit_edge116.i %700 = icmp ne ptr %115, %117 - %brmerge.i = or i1 %48, %54 + %brmerge.i = or i8 %53, %47 + %brmerge.i = icmp ne i8 %701, 0 %or.cond.i = and i1 %brmerge.i, %700 br i1 %or.cond.i, label %701, label %.loopexit100.i diff --git a/bench/grpc/optimized/client_authority_filter.ll b/bench/grpc/optimized/client_authority_filter.ll index b2e87033bf4..b3c1c8cd32c 100644 --- a/bench/grpc/optimized/client_authority_filter.ll +++ b/bench/grpc/optimized/client_authority_filter.ll @@ -934,12 +934,9 @@ declare noundef nonnull align 8 dereferenceable(128) ptr @_ZN9grpc_core11Channel ; Function Attrs: mustprogress uwtable define internal noundef zeroext i1 @_ZN9grpc_core12_GLOBAL__N_126NeedsClientAuthorityFilterERKNS_11ChannelArgsE(ptr noundef nonnull align 8 dereferenceable(8) %0) #3 personality ptr @__gxx_personality_v0 { %2 = tail call i16 @_ZNK9grpc_core11ChannelArgs7GetBoolESt17basic_string_viewIcSt11char_traitsIcEE(ptr noundef nonnull align 8 dereferenceable(8) %0, i64 36, ptr nonnull @.str.7) - %3 = and i16 %2, 256 - %.not = icmp ne i16 %3, 0 - %4 = trunc i16 %2 to i1 - %.0.i = and i1 %.not, %4 - %5 = xor i1 %.0.i, true - ret i1 %5 + %3 = and i16 %2, 257 + %.not = icmp ne i16 %3, 257 + ret i1 %.0.i } ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(readwrite, argmem: none, inaccessiblemem: none) uwtable diff --git a/bench/grpc/optimized/compression_filter.ll b/bench/grpc/optimized/compression_filter.ll index df4f351bb37..f61cc680cd4 100644 --- a/bench/grpc/optimized/compression_filter.ll +++ b/bench/grpc/optimized/compression_filter.ll @@ -645,36 +645,32 @@ define void @_ZN9grpc_core18ChannelCompressionC2ERKNS_11ChannelArgsE(ptr noundef store i8 %12, ptr %11, align 4 %13 = getelementptr inbounds nuw i8, ptr %0, i64 21 %14 = tail call i16 @_ZNK9grpc_core11ChannelArgs7GetBoolESt17basic_string_viewIcSt11char_traitsIcEE(ptr noundef nonnull align 8 dereferenceable(8) %1, i64 28, ptr nonnull @.str) - %15 = and i16 %14, 256 - %.not24 = icmp eq i16 %15, 0 - %16 = trunc i16 %14 to i1 - %.0.i8 = or i1 %.not24, %16 - %17 = zext i1 %.0.i8 to i8 - store i8 %17, ptr %13, align 1, !tbaa !32 - %18 = getelementptr inbounds nuw i8, ptr %0, i64 22 - %19 = tail call i16 @_ZNK9grpc_core11ChannelArgs7GetBoolESt17basic_string_viewIcSt11char_traitsIcEE(ptr noundef nonnull align 8 dereferenceable(8) %1, i64 30, ptr nonnull @.str.3) - %20 = and i16 %19, 256 - %.not25 = icmp eq i16 %20, 0 - %21 = trunc i16 %19 to i1 - %.0.i12 = or i1 %.not25, %21 - %22 = zext i1 %.0.i12 to i8 - store i8 %22, ptr %18, align 2, !tbaa !33 - %23 = load i32, ptr %8, align 8, !tbaa !31 - %24 = tail call noundef zeroext i1 @_ZNK9grpc_core23CompressionAlgorithmSet5IsSetE26grpc_compression_algorithm(ptr noundef nonnull align 1 dereferenceable(1) %11, i32 noundef %23) - br i1 %24, label %34, label %25 - -25: ; preds = %2 + %15 = and i16 %14, 257 + %.not24 = icmp ne i16 %15, 256 + %16 = zext i1 %.not24 to i8 + store i8 %16, ptr %13, align 1, !tbaa !32 + %17 = getelementptr inbounds nuw i8, ptr %0, i64 22 + %18 = tail call i16 @_ZNK9grpc_core11ChannelArgs7GetBoolESt17basic_string_viewIcSt11char_traitsIcEE(ptr noundef nonnull align 8 dereferenceable(8) %1, i64 32, ptr nonnull @.str.3) + %19 = and i16 %18, 257 + %.0.i12 = icmp ne i16 %19, 256 + %20 = zext i1 %.0.i12 to i8 + store i8 %20, ptr %17, align 2, !tbaa !33 + %21 = load i32, ptr %8, align 8, !tbaa !31 + %22 = tail call noundef zeroext i1 @_ZNK9grpc_core23CompressionAlgorithmSet5IsSetE26grpc_compression_algorithm(ptr noundef nonnull align 1 dereferenceable(1) %11, i32 noundef %21) + br i1 %22, label %32, label %23 + +23:; preds = %2 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #34 %26 = load i32, ptr %8, align 8, !tbaa !31 %27 = call i32 @grpc_compression_algorithm_name(i32 noundef %26, ptr noundef nonnull %3) %.not = icmp eq i32 %27, 0 br i1 %.not, label %28, label %29 -28: ; preds = %25 +28: ; preds = %23 store ptr @.str.4, ptr %3, align 8, !tbaa !34 br label %29 -29: ; preds = %28, %25 +29: ; preds = %28, %23 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) #34 call void @_ZN4absl12lts_2024072212log_internal10LogMessageC1EPKciNS2_8ErrorTagE(ptr noundef nonnull align 8 dereferenceable(16) %4, ptr noundef nonnull @.str.5, i32 noundef 97) #35 invoke void @_ZN4absl12lts_2024072212log_internal10LogMessage19CopyToEncodedBufferILNS2_10StringTypeE0EEEvSt17basic_string_viewIcSt11char_traitsIcEE(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 30, ptr nonnull @.str.6) diff --git a/bench/grpc/optimized/fault_injection_service_config_parser.ll b/bench/grpc/optimized/fault_injection_service_config_parser.ll index 2be21188054..7700d1b3b40 100644 --- a/bench/grpc/optimized/fault_injection_service_config_parser.ll +++ b/bench/grpc/optimized/fault_injection_service_config_parser.ll @@ -1052,11 +1052,9 @@ define void @_ZN9grpc_core33FaultInjectionServiceConfigParser20ParsePerMethodPar %6 = alloca %"class.std::unique_ptr.60", align 8 %7 = alloca %"class.grpc_core::JsonArgs", align 8 %8 = tail call i16 @_ZNK9grpc_core11ChannelArgs7GetBoolESt17basic_string_viewIcSt11char_traitsIcEE(ptr noundef nonnull align 8 dereferenceable(8) %2, i64 49, ptr nonnull @.str.18) - %9 = and i16 %8, 256 - %.not = icmp ne i16 %9, 0 - %10 = trunc i16 %8 to i1 - %.0.i = and i1 %.not, %10 - br i1 %.0.i, label %12, label %11 + %9 = and i16 %8, 257 + %.not = icmp eq i16 %9, 257 + br i1 %.not, label %11, label %10 11: ; preds = %5 store ptr null, ptr %0, align 8, !tbaa !51 @@ -1070,7 +1068,7 @@ define void @_ZN9grpc_core33FaultInjectionServiceConfigParser20ParsePerMethodPar store ptr null, ptr %6, align 8, !tbaa !57, !alias.scope !54 %13 = load ptr, ptr @_ZN9grpc_core19NoDestructSingletonINS_11json_detail10AutoLoaderISt10unique_ptrINS_32FaultInjectionMethodParsedConfigESt14default_deleteIS4_EEEEE6value_E, align 8, !tbaa !4, !noalias !54 %14 = load ptr, ptr %13, align 8, !noalias !54 - invoke void %14(ptr noundef nonnull align 8 dereferenceable(8) @_ZN9grpc_core19NoDestructSingletonINS_11json_detail10AutoLoaderISt10unique_ptrINS_32FaultInjectionMethodParsedConfigESt14default_deleteIS4_EEEEE6value_E, ptr noundef nonnull align 8 dereferenceable(56) %3, ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 %6, ptr noundef %4) + invoke void %13(ptr noundef nonnull align 8 dereferenceable(8) @_ZN9grpc_core19NoDestructSingletonINS_11json_detail10AutoLoaderISt10unique_ptrINS_32FaultInjectionMethodParsedConfigESt14default_deleteIS4_EEEEE6value_E, ptr noundef nonnull align 8 dereferenceable(56) %3, ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 %6, ptr noundef %4) to label %_ZNSt10unique_ptrIN9grpc_core32FaultInjectionMethodParsedConfigESt14default_deleteIS1_EED2Ev.exit unwind label %15 15: ; preds = %12 @@ -1084,7 +1082,7 @@ _ZNKSt14default_deleteIN9grpc_core32FaultInjectionMethodParsedConfigEEclEPS1_.ex %18 = load ptr, ptr %17, align 8, !tbaa !4 %19 = getelementptr inbounds nuw i8, ptr %18, i64 8 %20 = load ptr, ptr %19, align 8 - call void %20(ptr noundef nonnull align 8 dereferenceable(32) %17) #21 + call void %19(ptr noundef nonnull align 8 dereferenceable(32) %17) #21 br label %_ZNSt10unique_ptrIN9grpc_core32FaultInjectionMethodParsedConfigESt14default_deleteIS1_EED2Ev.exit.i _ZNSt10unique_ptrIN9grpc_core32FaultInjectionMethodParsedConfigESt14default_deleteIS1_EED2Ev.exit.i: ; preds = %_ZNKSt14default_deleteIN9grpc_core32FaultInjectionMethodParsedConfigEEclEPS1_.exit.i.i, %15 diff --git a/bench/grpc/optimized/http_server_filter.ll b/bench/grpc/optimized/http_server_filter.ll index 3fc07e504e3..5d2f2a54315 100644 --- a/bench/grpc/optimized/http_server_filter.ll +++ b/bench/grpc/optimized/http_server_filter.ll @@ -1099,26 +1099,22 @@ define void @_ZN9grpc_core16HttpServerFilter4Call24OnServerTrailingMetadataER19g define void @_ZN9grpc_core16HttpServerFilter6CreateERKNS_11ChannelArgsENS_10FilterArgsE(ptr dead_on_unwind noalias writable writeonly sret(%"class.absl::lts_20240722::StatusOr") align 8 captures(none) initializes((0, 16)) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef readnone byval(%"class.grpc_core::FilterArgs") align 8 captures(none) %2) local_unnamed_addr #4 align 2 personality ptr @__gxx_personality_v0 { _ZNSt10unique_ptrIN9grpc_core16HttpServerFilterESt14default_deleteIS1_EED2Ev.exit: %3 = tail call i16 @_ZNK9grpc_core11ChannelArgs7GetBoolESt17basic_string_viewIcSt11char_traitsIcEE(ptr noundef nonnull align 8 dereferenceable(8) %1, i64 23, ptr nonnull @.str.11) - %4 = and i16 %3, 256 - %.not = icmp eq i16 %4, 0 - %5 = trunc i16 %3 to i1 - %.0.i = or i1 %.not, %5 - %6 = zext i1 %.0.i to i8 - %7 = tail call i16 @_ZNK9grpc_core11ChannelArgs7GetBoolESt17basic_string_viewIcSt11char_traitsIcEE(ptr noundef nonnull align 8 dereferenceable(8) %1, i64 88, ptr nonnull @.str.12) - %8 = and i16 %7, 256 - %.not20 = icmp ne i16 %8, 0 - %9 = trunc i16 %7 to i1 - %.0.i6 = and i1 %.not20, %9 - %10 = zext i1 %.0.i6 to i8 - %11 = tail call noalias noundef nonnull dereferenceable(16) ptr @_Znwm(i64 noundef 16) #28, !noalias !128 - store ptr getelementptr inbounds nuw inrange(-16, 48) (i8, ptr @_ZTVN9grpc_core16HttpServerFilterE, i64 16), ptr %11, align 8, !tbaa !112, !noalias !128 - %12 = getelementptr inbounds nuw i8, ptr %11, i64 8 - store i8 %6, ptr %12, align 8, !tbaa !92, !noalias !128 - %13 = getelementptr inbounds nuw i8, ptr %11, i64 9 - store i8 %10, ptr %13, align 1, !tbaa !7, !noalias !128 - %14 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %15 = ptrtoint ptr %11 to i64 - store i64 %15, ptr %14, align 8, !tbaa !131 + %4 = and i16 %3, 257 + %.not = icmp ne i16 %4, 256 + %5 = zext i1 %.0.i to i8 + %6 = tail call i16 @_ZNK9grpc_core11ChannelArgs7GetBoolESt17basic_string_viewIcSt11char_traitsIcEE(ptr noundef nonnull align 8 dereferenceable(8) %1, i64 88, ptr nonnull @.str.12) + %7 = and i16 %6, 257 + %.0.i6 = icmp eq i16 %7, 257 + %8 = zext i1 %.0.i6 to i8 + %9 = tail call noalias noundef nonnull dereferenceable(16) ptr @_Znwm(i64 noundef 16) #28, !noalias !128 + store ptr getelementptr inbounds nuw inrange(-16, 48) (i8, ptr @_ZTVN9grpc_core16HttpServerFilterE, i64 16), ptr %9, align 8, !tbaa !112, !noalias !128 + %10 = getelementptr inbounds nuw i8, ptr %9, i64 8 + store i8 %5, ptr %10, align 8, !tbaa !92, !noalias !128 + %11 = getelementptr inbounds nuw i8, ptr %9, i64 9 + store i8 %8, ptr %11, align 1, !tbaa !7, !noalias !128 + %12 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %13 = ptrtoint ptr %9 to i64 + store i64 %13, ptr %12, align 8, !tbaa !131 store i64 1, ptr %0, align 8, !tbaa !133 ret void } @@ -2171,26 +2167,22 @@ define linkonce_odr void @_ZN9grpc_core21promise_filter_detail29ChannelFilterWit _ZNSt10unique_ptrIN9grpc_core16HttpServerFilterESt14default_deleteIS1_EED2Ev.exit.i: ; preds = %3 %8 = getelementptr inbounds nuw i8, ptr %2, i64 8 %9 = tail call i16 @_ZNK9grpc_core11ChannelArgs7GetBoolESt17basic_string_viewIcSt11char_traitsIcEE(ptr noundef nonnull align 8 dereferenceable(8) %8, i64 23, ptr nonnull @.str.11), !noalias !197 - %10 = and i16 %9, 256 - %.not.i = icmp eq i16 %10, 0 - %11 = trunc i16 %9 to i1 - %.0.i.i = or i1 %.not.i, %11 - %12 = zext i1 %.0.i.i to i8 - %13 = tail call i16 @_ZNK9grpc_core11ChannelArgs7GetBoolESt17basic_string_viewIcSt11char_traitsIcEE(ptr noundef nonnull align 8 dereferenceable(8) %8, i64 88, ptr nonnull @.str.12), !noalias !197 - %14 = and i16 %13, 256 - %.not20.i = icmp ne i16 %14, 0 - %15 = trunc i16 %13 to i1 - %.0.i6.i = and i1 %.not20.i, %15 - %16 = zext i1 %.0.i6.i to i8 - %17 = tail call noalias noundef nonnull dereferenceable(16) ptr @_Znwm(i64 noundef 16) #28, !noalias !200 - store ptr getelementptr inbounds nuw inrange(-16, 48) (i8, ptr @_ZTVN9grpc_core16HttpServerFilterE, i64 16), ptr %17, align 8, !tbaa !112, !noalias !200 - %18 = getelementptr inbounds nuw i8, ptr %17, i64 8 - store i8 %12, ptr %18, align 8, !tbaa !92, !noalias !200 - %19 = getelementptr inbounds nuw i8, ptr %17, i64 9 - store i8 %16, ptr %19, align 1, !tbaa !7, !noalias !200 - %20 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %21 = load ptr, ptr %20, align 8, !tbaa !158 - store ptr %17, ptr %21, align 8, !tbaa !131 + %10 = and i16 %9, 257 + %.not.i = icmp ne i16 %10, 256 + %11 = zext i1 %.0.i.i to i8 + %12 = tail call i16 @_ZNK9grpc_core11ChannelArgs7GetBoolESt17basic_string_viewIcSt11char_traitsIcEE(ptr noundef nonnull align 8 dereferenceable(8) %8, i64 88, ptr nonnull @.str.12), !noalias !197 + %13 = and i16 %12, 257 + %.0.i6.i = icmp eq i16 %13, 257 + %14 = zext i1 %.0.i6.i to i8 + %15 = tail call noalias noundef nonnull dereferenceable(16) ptr @_Znwm(i64 noundef 16) #28, !noalias !200 + store ptr getelementptr inbounds nuw inrange(-16, 48) (i8, ptr @_ZTVN9grpc_core16HttpServerFilterE, i64 16), ptr %15, align 8, !tbaa !112, !noalias !200 + %16 = getelementptr inbounds nuw i8, ptr %15, i64 8 + store i8 %11, ptr %16, align 8, !tbaa !92, !noalias !200 + %17 = getelementptr inbounds nuw i8, ptr %15, i64 9 + store i8 %14, ptr %17, align 1, !tbaa !7, !noalias !200 + %18 = getelementptr inbounds nuw i8, ptr %1, i64 8 + %19 = load ptr, ptr %18, align 8, !tbaa !158 + store ptr %15, ptr %19, align 8, !tbaa !131 store i64 1, ptr %0, align 8, !tbaa !133, !alias.scope !203 ret void } diff --git a/bench/grpc/optimized/retry_service_config.ll b/bench/grpc/optimized/retry_service_config.ll index c5572e79b3d..9a3a3cfe37d 100644 --- a/bench/grpc/optimized/retry_service_config.ll +++ b/bench/grpc/optimized/retry_service_config.ll @@ -2716,10 +2716,8 @@ define linkonce_odr void @_ZN9grpc_core15JsonChannelArgsD0Ev(ptr noundef nonnull define linkonce_odr noundef zeroext i1 @_ZNK9grpc_core15JsonChannelArgs9IsEnabledESt17basic_string_viewIcSt11char_traitsIcEE(ptr noundef nonnull align 8 dereferenceable(16) %0, i64 %1, ptr %2) unnamed_addr #3 comdat align 2 { %4 = getelementptr inbounds nuw i8, ptr %0, i64 8 %5 = tail call i16 @_ZNK9grpc_core11ChannelArgs7GetBoolESt17basic_string_viewIcSt11char_traitsIcEE(ptr noundef nonnull align 8 dereferenceable(8) %4, i64 %1, ptr %2) - %6 = and i16 %5, 256 - %.not = icmp ne i16 %6, 0 - %7 = trunc i16 %5 to i1 - %.0.i = and i1 %.not, %7 + %6 = and i16 %5, 257 + %.not = icmp eq i16 %6, 257 ret i1 %.0.i } diff --git a/bench/grpc/optimized/tcp_connect_handshaker.ll b/bench/grpc/optimized/tcp_connect_handshaker.ll index fd943244bb0..93858c29556 100644 --- a/bench/grpc/optimized/tcp_connect_handshaker.ll +++ b/bench/grpc/optimized/tcp_connect_handshaker.ll @@ -1229,13 +1229,11 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit43: ; preds = %_ZN to label %118 unwind label %145 118: ; preds = %116 - %119 = and i16 %117, 256 - %.not = icmp ne i16 %119, 0 - %120 = trunc i16 %117 to i1 - %.0.i = and i1 %.not, %120 - %121 = getelementptr inbounds nuw i8, ptr %0, i64 112 - %122 = zext i1 %.0.i to i8 - store i8 %122, ptr %121, align 16, !tbaa !55 + %119 = and i16 %117, 257 + %.not = icmp eq i16 %119, 257 + %120 = getelementptr inbounds nuw i8, ptr %0, i64 112 + %121 = zext i1 %.not to i8 + store i8 %121, ptr %120, align 16, !tbaa !55 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #25 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #25 invoke void @_ZNK9grpc_core11ChannelArgs6RemoveESt17basic_string_viewIcSt11char_traitsIcEE(ptr dead_on_unwind nonnull writable sret(%"class.grpc_core::ChannelArgs") align 8 %14, ptr noundef nonnull align 8 dereferenceable(8) %33, i64 45, ptr nonnull @.str.8) diff --git a/bench/grpc/optimized/tls_security_connector.ll b/bench/grpc/optimized/tls_security_connector.ll index ae37fa29d7b..ae5ae3dd8ea 100644 --- a/bench/grpc/optimized/tls_security_connector.ll +++ b/bench/grpc/optimized/tls_security_connector.ll @@ -8033,25 +8033,22 @@ define void @_ZN9grpc_core26TlsServerSecurityConnector27TlsServerCertificateWatc %39 = trunc nuw i8 %38 to i1 %40 = getelementptr inbounds nuw i8, ptr %29, i64 128 %41 = load i8, ptr %40, align 8, !tbaa !80, !range !113, !noundef !114 - %42 = trunc nuw i8 %41 to i1 - %brmerge.demorgan40 = and i8 %36, %33 - %brmerge.demorgan = trunc nuw i8 %brmerge.demorgan40 to i1 - %brmerge = xor i1 %brmerge.demorgan, true - %43 = xor i1 %42, true - %brmerge2941 = and i1 %39, %43 - %or.cond = or i1 %brmerge2941, %brmerge - %44 = and i1 %39, %42 - %45 = xor i1 %44, true - %brmerge33 = or i1 %34, %45 - %or.cond39 = and i1 %or.cond, %brmerge33 - br i1 %or.cond39, label %58, label %46 - -46: ; preds = %28 - %47 = invoke noundef i32 @_ZN9grpc_core26TlsServerSecurityConnector29UpdateHandshakerFactoryLockedEv(ptr noundef nonnull align 8 dereferenceable(192) %29) - to label %48 unwind label %51 - -48: ; preds = %46 - %.not17 = icmp eq i32 %47, 0 + %42 = and i8 %36, %33 + %brmerge.demorgan.not = icmp eq i8 %42, 0 + %43 = and i8 %41, %38 + %.not = icmp eq i8 %43, 0 + %brmerge2940 = and i1 %.not, %39 + %or.cond = or i1 %brmerge.demorgan.not, %brmerge2940 + %or.cond = or i1 %.not, %34 + %44 = and i1 %brmerge33, %or.cond + br i1 %44, label %56, label %44 + +44:; preds = %28 + %45 = invoke noundef i32 @_ZN9grpc_core26TlsServerSecurityConnector29UpdateHandshakerFactoryLockedEv(ptr noundef nonnull align 8 dereferenceable(192) %29) + to label %46 unwind label %49 + +48: ; preds = %44 + %.not17 = icmp eq i32 %45, 0 br i1 %.not17, label %58, label %49 49: ; preds = %48 @@ -8068,7 +8065,7 @@ _ZN4absl12lts_2024072212log_internal10LogMessagelsILi34EEERS2_RAT__Kc.exit: ; pr call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) #28 br label %58 -51: ; preds = %46 +51: ; preds = %44 %52 = landingpad { ptr, i32 } cleanup br label %62 diff --git a/bench/harfbuzz/optimized/hb-subset-plan.ll b/bench/harfbuzz/optimized/hb-subset-plan.ll index 50064d35954..912ae05514a 100644 --- a/bench/harfbuzz/optimized/hb-subset-plan.ll +++ b/bench/harfbuzz/optimized/hb-subset-plan.ll @@ -12700,166 +12700,146 @@ _ZN23hb_subset_accelerator_t6createEP9hb_face_tRK8hb_map_tRK8hb_set_tb.exit: ; p %4314 = phi i8 [ %4312, %_ZN23hb_subset_accelerator_t6createEP9hb_face_tRK8hb_map_tRK8hb_set_tb.exit ], [ 1, %4296 ] %4315 = load i8, ptr %105, align 8, !tbaa !44, !range !31, !noundef !32 %4316 = and i8 %4314, %4315 - %4317 = trunc nuw i8 %4316 to i1 + %4317 = icmp ne i8 %4316, 0 %4318 = load i32, ptr %111, align 8, !tbaa !262 %4319 = load i32, ptr %112, align 8, !tbaa !262 %4320 = or i32 %4319, %4318 %4321 = icmp sgt i32 %4320, -1 - %4322 = and i1 %4321, %4317 + %4322 = and i1 %4317, %4321 %4323 = load i8, ptr %114, align 8, !tbaa !44, !range !31, !noundef !32 - %4324 = trunc nuw i8 %4323 to i1 - %4325 = and i1 %4322, %4324 - %4326 = load i8, ptr %121, align 8, !tbaa !44, !range !31, !noundef !32 - %4327 = trunc nuw i8 %4326 to i1 - %4328 = and i1 %4325, %4327 - %4329 = load i8, ptr %128, align 8, !tbaa !44, !range !31, !noundef !32 - %4330 = trunc nuw i8 %4329 to i1 - %4331 = and i1 %4328, %4330 - %4332 = load i8, ptr %135, align 8, !tbaa !44, !range !31, !noundef !32 - %4333 = trunc nuw i8 %4332 to i1 - %4334 = and i1 %4331, %4333 - %4335 = load i8, ptr %142, align 8, !tbaa !44, !range !31, !noundef !32 - %4336 = trunc nuw i8 %4335 to i1 - %4337 = and i1 %4334, %4336 - %4338 = load i8, ptr %149, align 8, !tbaa !44, !range !31, !noundef !32 - %4339 = trunc nuw i8 %4338 to i1 - %4340 = and i1 %4337, %4339 - %4341 = load i8, ptr %156, align 8, !tbaa !44, !range !31, !noundef !32 - %4342 = trunc nuw i8 %4341 to i1 - %4343 = and i1 %4340, %4342 - %4344 = load i8, ptr %165, align 8, !tbaa !163, !range !31, !noundef !32 - %4345 = trunc nuw i8 %4344 to i1 - %4346 = and i1 %4343, %4345 - %4347 = load i8, ptr %169, align 8, !tbaa !44, !range !31, !noundef !32 - %4348 = trunc nuw i8 %4347 to i1 - %4349 = and i1 %4346, %4348 - %4350 = load i8, ptr %176, align 8, !tbaa !44, !range !31, !noundef !32 - %4351 = trunc nuw i8 %4350 to i1 - %4352 = and i1 %4349, %4351 - %4353 = load i8, ptr %183, align 8, !tbaa !44, !range !31, !noundef !32 - %4354 = trunc nuw i8 %4353 to i1 - %4355 = and i1 %4352, %4354 - %4356 = load i8, ptr %190, align 8, !tbaa !44, !range !31, !noundef !32 - %4357 = trunc nuw i8 %4356 to i1 - %4358 = and i1 %4355, %4357 - %4359 = load i8, ptr %199, align 8, !tbaa !163, !range !31, !noundef !32 - %4360 = trunc nuw i8 %4359 to i1 - %4361 = and i1 %4358, %4360 - %4362 = load i8, ptr %205, align 8, !tbaa !163, !range !31, !noundef !32 - %4363 = trunc nuw i8 %4362 to i1 - %4364 = and i1 %4361, %4363 - %4365 = load i8, ptr %211, align 8, !tbaa !163, !range !31, !noundef !32 - %4366 = trunc nuw i8 %4365 to i1 - %4367 = and i1 %4364, %4366 - %4368 = load i8, ptr %217, align 8, !tbaa !164, !range !31, !noundef !32 - %4369 = trunc nuw i8 %4368 to i1 - %4370 = and i1 %4367, %4369 - %4371 = load i8, ptr %223, align 8, !tbaa !164, !range !31, !noundef !32 - %4372 = trunc nuw i8 %4371 to i1 - %4373 = and i1 %4370, %4372 - %4374 = load i8, ptr %229, align 8, !tbaa !163, !range !31, !noundef !32 - %4375 = trunc nuw i8 %4374 to i1 - %4376 = and i1 %4373, %4375 - %4377 = load i8, ptr %235, align 8, !tbaa !163, !range !31, !noundef !32 - %4378 = trunc nuw i8 %4377 to i1 - %4379 = and i1 %4376, %4378 - %4380 = load i8, ptr %241, align 8, !tbaa !166, !range !31, !noundef !32 - %4381 = trunc nuw i8 %4380 to i1 - %4382 = and i1 %4379, %4381 - %4383 = load i8, ptr %247, align 8, !tbaa !166, !range !31, !noundef !32 - %4384 = trunc nuw i8 %4383 to i1 - %4385 = and i1 %4382, %4384 - %4386 = load i8, ptr %253, align 8, !tbaa !168, !range !31, !noundef !32 - %4387 = trunc nuw i8 %4386 to i1 - %4388 = and i1 %4385, %4387 - %4389 = load i8, ptr %259, align 8, !tbaa !168, !range !31, !noundef !32 - %4390 = trunc nuw i8 %4389 to i1 - %4391 = and i1 %4388, %4390 - %4392 = load i8, ptr %263, align 8, !tbaa !44, !range !31, !noundef !32 - %4393 = trunc nuw i8 %4392 to i1 - %4394 = and i1 %4391, %4393 - %4395 = load i8, ptr %270, align 8, !tbaa !44, !range !31, !noundef !32 - %4396 = trunc nuw i8 %4395 to i1 - %4397 = and i1 %4394, %4396 - %4398 = load i8, ptr %279, align 8, !tbaa !170, !range !31, !noundef !32 - %4399 = trunc nuw i8 %4398 to i1 - %4400 = and i1 %4397, %4399 - %4401 = load i8, ptr %285, align 8, !tbaa !170, !range !31, !noundef !32 - %4402 = trunc nuw i8 %4401 to i1 - %4403 = and i1 %4400, %4402 - %4404 = load i8, ptr %291, align 8, !tbaa !163, !range !31, !noundef !32 + %4324 = load i8, ptr %121, align 8, !tbaa !44, !range !31, !noundef !32 + %4325 = and i8 %4324, %4323 + %4326 = icmp ne i8 %4325, 0 + %4327 = and i1 %4322, %4326 + %4328 = load i8, ptr %128, align 8, !tbaa !44, !range !31, !noundef !32 + %4329 = load i8, ptr %135, align 8, !tbaa !44, !range !31, !noundef !32 + %4330 = and i8 %4329, %4328 + %4331 = icmp ne i8 %4330, 0 + %4332 = and i1 %4327, %4331 + %4333 = load i8, ptr %142, align 8, !tbaa !44, !range !31, !noundef !32 + %4334 = load i8, ptr %149, align 8, !tbaa !44, !range !31, !noundef !32 + %4335 = and i8 %4334, %4333 + %4336 = icmp ne i8 %4335, 0 + %4337 = and i1 %4332, %4336 + %4338 = load i8, ptr %156, align 8, !tbaa !44, !range !31, !noundef !32 + %4339 = load i8, ptr %165, align 8, !tbaa !163, !range !31, !noundef !32 + %4340 = and i8 %4339, %4338 + %4341 = icmp ne i8 %4340, 0 + %4342 = and i1 %4337, %4341 + %4343 = load i8, ptr %169, align 8, !tbaa !44, !range !31, !noundef !32 + %4344 = load i8, ptr %176, align 8, !tbaa !44, !range !31, !noundef !32 + %4345 = and i8 %4344, %4343 + %4346 = icmp ne i8 %4345, 0 + %4347 = and i1 %4342, %4346 + %4348 = load i8, ptr %183, align 8, !tbaa !44, !range !31, !noundef !32 + %4349 = load i8, ptr %190, align 8, !tbaa !44, !range !31, !noundef !32 + %4350 = and i8 %4349, %4348 + %4351 = icmp ne i8 %4350, 0 + %4352 = and i1 %4347, %4351 + %4353 = load i8, ptr %199, align 8, !tbaa !163, !range !31, !noundef !32 + %4354 = load i8, ptr %205, align 8, !tbaa !163, !range !31, !noundef !32 + %4355 = and i8 %4354, %4353 + %4356 = icmp ne i8 %4355, 0 + %4357 = and i1 %4352, %4356 + %4358 = load i8, ptr %211, align 8, !tbaa !163, !range !31, !noundef !32 + %4359 = load i8, ptr %217, align 8, !tbaa !164, !range !31, !noundef !32 + %4360 = and i8 %4359, %4358 + %4361 = icmp ne i8 %4360, 0 + %4362 = and i1 %4357, %4361 + %4363 = load i8, ptr %223, align 8, !tbaa !164, !range !31, !noundef !32 + %4364 = load i8, ptr %229, align 8, !tbaa !163, !range !31, !noundef !32 + %4365 = and i8 %4364, %4363 + %4366 = icmp ne i8 %4365, 0 + %4367 = and i1 %4362, %4366 + %4368 = load i8, ptr %235, align 8, !tbaa !163, !range !31, !noundef !32 + %4369 = load i8, ptr %241, align 8, !tbaa !166, !range !31, !noundef !32 + %4370 = and i8 %4369, %4368 + %4371 = icmp ne i8 %4370, 0 + %4372 = and i1 %4367, %4371 + %4373 = load i8, ptr %247, align 8, !tbaa !166, !range !31, !noundef !32 + %4374 = load i8, ptr %253, align 8, !tbaa !168, !range !31, !noundef !32 + %4375 = and i8 %4374, %4373 + %4376 = icmp ne i8 %4375, 0 + %4377 = and i1 %4372, %4376 + %4378 = load i8, ptr %259, align 8, !tbaa !168, !range !31, !noundef !32 + %4379 = load i8, ptr %263, align 8, !tbaa !44, !range !31, !noundef !32 + %4380 = and i8 %4379, %4378 + %4381 = icmp ne i8 %4380, 0 + %4382 = and i1 %4377, %4381 + %4383 = load i8, ptr %270, align 8, !tbaa !44, !range !31, !noundef !32 + %4384 = load i8, ptr %279, align 8, !tbaa !170, !range !31, !noundef !32 + %4385 = and i8 %4384, %4383 + %4386 = icmp ne i8 %4385, 0 + %4387 = and i1 %4382, %4386 + %4388 = load i8, ptr %285, align 8, !tbaa !170, !range !31, !noundef !32 + %4389 = load i8, ptr %291, align 8, !tbaa !163, !range !31, !noundef !32 + %4390 = and i8 %4389, %4388 + %4391 = icmp ne i8 %4390, 0 + %4392 = and i1 %4387, %4391 + %4393 = load i8, ptr %297, align 8, !tbaa !163, !range !31, !noundef !32 + %4394 = trunc nuw i8 %4393 to i1 + %4395 = and i1 %4392, %4394 + %4396 = load i32, ptr %300, align 8, !tbaa !485 + %4397 = icmp sgt i32 %4396, -1 + %4398 = and i1 %4395, %4397 + %4399 = load i8, ptr %304, align 8, !tbaa !172, !range !31, !noundef !32 + %4400 = load i8, ptr %310, align 8, !tbaa !163, !range !31, !noundef !32 + %4401 = and i8 %4400, %4399 + %4402 = icmp ne i8 %4401, 0 + %4403 = and i1 %4398, %4402 + %4404 = load i8, ptr %316, align 8, !tbaa !172, !range !31, !noundef !32 %4405 = trunc nuw i8 %4404 to i1 %4406 = and i1 %4403, %4405 - %4407 = load i8, ptr %297, align 8, !tbaa !163, !range !31, !noundef !32 - %4408 = trunc nuw i8 %4407 to i1 + %4407 = load i32, ptr %319, align 8, !tbaa !485 + %4408 = icmp sgt i32 %4407, -1 %4409 = and i1 %4406, %4408 - %4410 = load i32, ptr %300, align 8, !tbaa !485 - %4411 = icmp sgt i32 %4410, -1 - %4412 = and i1 %4409, %4411 - %4413 = load i8, ptr %304, align 8, !tbaa !172, !range !31, !noundef !32 - %4414 = trunc nuw i8 %4413 to i1 - %4415 = and i1 %4412, %4414 - %4416 = load i8, ptr %310, align 8, !tbaa !163, !range !31, !noundef !32 - %4417 = trunc nuw i8 %4416 to i1 - %4418 = and i1 %4415, %4417 - %4419 = load i8, ptr %316, align 8, !tbaa !172, !range !31, !noundef !32 - %4420 = trunc nuw i8 %4419 to i1 - %4421 = and i1 %4418, %4420 - %4422 = load i32, ptr %319, align 8, !tbaa !485 - %4423 = icmp sgt i32 %4422, -1 - %4424 = and i1 %4421, %4423 - %4425 = load i8, ptr %323, align 8, !tbaa !174, !range !31, !noundef !32 - %4426 = trunc nuw i8 %4425 to i1 - %4427 = and i1 %4424, %4426 - %4428 = load i8, ptr %329, align 8, !tbaa !176, !range !31, !noundef !32 - %4429 = trunc nuw i8 %4428 to i1 + %4410 = load i8, ptr %323, align 8, !tbaa !174, !range !31, !noundef !32 + %4411 = load i8, ptr %329, align 8, !tbaa !176, !range !31, !noundef !32 + %4412 = and i8 %4411, %4410 + %4413 = icmp ne i8 %4412, 0 + %4414 = and i1 %4409, %4413 + %4415 = load i32, ptr %332, align 8, !tbaa !241 + %4416 = icmp sgt i32 %4415, -1 + %4417 = and i1 %4414, %4416 + %4418 = load i8, ptr %336, align 8, !tbaa !176, !range !31, !noundef !32 + %4419 = load i8, ptr %342, align 8, !tbaa !178, !range !31, !noundef !32 + %4420 = and i8 %4419, %4418 + %4421 = icmp ne i8 %4420, 0 + %4422 = and i1 %4417, %4421 + %4423 = load i8, ptr %348, align 8, !tbaa !163, !range !31, !noundef !32 + %4424 = load i8, ptr %354, align 8, !tbaa !163, !range !31, !noundef !32 + %4425 = and i8 %4424, %4423 + %4426 = icmp ne i8 %4425, 0 + %4427 = and i1 %4422, %4426 + %4428 = load i32, ptr %357, align 8, !tbaa !252 + %4429 = icmp sgt i32 %4428, -1 %4430 = and i1 %4427, %4429 - %4431 = load i32, ptr %332, align 8, !tbaa !241 - %4432 = icmp sgt i32 %4431, -1 - %4433 = and i1 %4430, %4432 - %4434 = load i8, ptr %336, align 8, !tbaa !176, !range !31, !noundef !32 - %4435 = trunc nuw i8 %4434 to i1 - %4436 = and i1 %4433, %4435 - %4437 = load i8, ptr %342, align 8, !tbaa !178, !range !31, !noundef !32 - %4438 = trunc nuw i8 %4437 to i1 - %4439 = and i1 %4436, %4438 - %4440 = load i8, ptr %348, align 8, !tbaa !163, !range !31, !noundef !32 - %4441 = trunc nuw i8 %4440 to i1 - %4442 = and i1 %4439, %4441 - %4443 = load i8, ptr %354, align 8, !tbaa !163, !range !31, !noundef !32 - %4444 = trunc nuw i8 %4443 to i1 - %4445 = and i1 %4442, %4444 - %4446 = load i32, ptr %357, align 8, !tbaa !252 - %4447 = icmp sgt i32 %4446, -1 + %4431 = load i8, ptr %361, align 8, !tbaa !172, !range !31, !noundef !32 + %4432 = load i8, ptr %367, align 8, !tbaa !172, !range !31, !noundef !32 + %4433 = and i8 %4432, %4431 + %4434 = icmp ne i8 %4433, 0 + %4435 = and i1 %4430, %4434 + %4436 = load i32, ptr %370, align 8, !tbaa !252 + %4437 = load i32, ptr %371, align 8, !tbaa !252 + %4438 = or i32 %4437, %4436 + %4439 = icmp sgt i32 %4438, -1 + %4440 = and i1 %4435, %4439 + %4441 = load i8, ptr %375, align 8, !tbaa !180, !range !31, !noundef !32 + %4442 = load i8, ptr %379, align 8, !tbaa !44, !range !31, !noundef !32 + %4443 = and i8 %4442, %4441 + %4444 = icmp ne i8 %4443, 0 + %4445 = and i1 %4440, %4444 + %4446 = load i8, ptr %388, align 8, !tbaa !172, !range !31, !noundef !32 + %4447 = trunc nuw i8 %4446 to i1 %4448 = and i1 %4445, %4447 - %4449 = load i8, ptr %361, align 8, !tbaa !172, !range !31, !noundef !32 - %4450 = trunc nuw i8 %4449 to i1 + %4449 = load i32, ptr %391, align 8, !tbaa !485 + %4450 = icmp sgt i32 %4449, -1 %4451 = and i1 %4448, %4450 - %4452 = load i8, ptr %367, align 8, !tbaa !172, !range !31, !noundef !32 - %4453 = trunc nuw i8 %4452 to i1 - %4454 = and i1 %4451, %4453 - %4455 = load i32, ptr %370, align 8, !tbaa !252 - %4456 = load i32, ptr %371, align 8, !tbaa !252 - %4457 = or i32 %4456, %4455 - %4458 = icmp sgt i32 %4457, -1 - %4459 = and i1 %4454, %4458 - %4460 = load i8, ptr %375, align 8, !tbaa !180, !range !31, !noundef !32 - %4461 = trunc nuw i8 %4460 to i1 - %4462 = and i1 %4459, %4461 - %4463 = load i8, ptr %379, align 8, !tbaa !44, !range !31, !noundef !32 - %4464 = trunc nuw i8 %4463 to i1 - %4465 = and i1 %4462, %4464 - %4466 = load i8, ptr %388, align 8, !tbaa !172, !range !31, !noundef !32 - %4467 = trunc nuw i8 %4466 to i1 - %4468 = and i1 %4465, %4467 - %4469 = load i32, ptr %391, align 8, !tbaa !485 - %4470 = icmp sgt i32 %4469, -1 - %4471 = and i1 %4468, %4470 - %4472 = zext i1 %4471 to i8 + %4452 = zext i1 %4451 to i8 br label %.sink.split .sink.split: ; preds = %4313, %_ZL30_create_old_gid_to_new_gid_mapPK9hb_face_tbPK8hb_set_tPK8hb_map_tPS5_S8_P11hb_vector_tI9hb_pair_tIjjELb1EEPj.exit.thread - %.sink = phi i8 [ 0, %_ZL30_create_old_gid_to_new_gid_mapPK9hb_face_tbPK8hb_set_tPK8hb_map_tPS5_S8_P11hb_vector_tI9hb_pair_tIjjELb1EEPj.exit.thread ], [ %4472, %4313 ] + %.sink = phi i8 [ 0, %_ZL30_create_old_gid_to_new_gid_mapPK9hb_face_tbPK8hb_set_tPK8hb_map_tPS5_S8_P11hb_vector_tI9hb_pair_tIjjELb1EEPj.exit.thread ], [ %4452, %4313 ] store i8 %.sink, ptr %398, align 8, !tbaa !187 br label %4473 diff --git a/bench/hdf5/optimized/H5EA.ll b/bench/hdf5/optimized/H5EA.ll index 54f3786db6f..900323b58f2 100644 --- a/bench/hdf5/optimized/H5EA.ll +++ b/bench/hdf5/optimized/H5EA.ll @@ -577,6 +577,7 @@ define internal fastcc range(i32 -1, 1) i32 @H5EA__lookup_elmt(ptr noundef reado br label %.thread354 31: ; preds = %25, %17 + %.0274 = phi i8 [ 0, %17 ], [ 1, %25 ] %32 = call ptr @H5EA__iblock_protect(ptr noundef nonnull %10, i32 noundef %3) #5 %33 = icmp eq ptr %32, null br i1 %33, label %34, label %39 @@ -984,7 +985,7 @@ define internal fastcc range(i32 -1, 1) i32 @H5EA__lookup_elmt(ptr noundef reado %.0249372 = phi ptr [ null, %34 ], [ null, %27 ], [ null, %.thread ], [ null, %111 ], [ null, %92 ], [ null, %139 ], [ null, %269 ], [ null, %284 ], [ null, %.thread325 ], [ null, %182 ], [ null, %166 ], [ null, %231 ], [ %241, %255 ], [ null, %243 ] %.0254370 = phi i32 [ 0, %34 ], [ 0, %27 ], [ 0, %.thread ], [ %.1255, %111 ], [ %.1255, %92 ], [ %.5259, %139 ], [ %.5259, %269 ], [ %.5259, %284 ], [ 0, %.thread325 ], [ %.5259, %182 ], [ %.5259, %166 ], [ %.5259, %231 ], [ %.5259, %255 ], [ %.5259, %243 ] %.0260368 = phi i32 [ 0, %34 ], [ 0, %27 ], [ 0, %.thread ], [ 0, %111 ], [ 0, %92 ], [ 0, %139 ], [ %.4264, %269 ], [ %.4264, %284 ], [ 0, %.thread325 ], [ 2, %182 ], [ 0, %166 ], [ %.4264, %231 ], [ %.6266, %255 ], [ %.6266, %243 ] - %.1275366 = phi i1 [ %.not, %34 ], [ false, %27 ], [ %.not, %.thread ], [ %.not, %111 ], [ %.not, %92 ], [ %.not, %139 ], [ %.not, %269 ], [ %.not, %284 ], [ %.not, %.thread325 ], [ %.not, %182 ], [ %.not, %166 ], [ %.not, %231 ], [ %.not, %255 ], [ %.not, %243 ] + %.1275366 = phi i8 [ %.0274, %34 ], [ 0, %27 ], [ %.0274, %.thread ], [ %.0274, %111 ], [ %.0274, %92 ], [ %.0274, %139 ], [ %.0274, %269 ], [ %.0274, %284 ], [ %.0274, %.thread325 ], [ %.0274, %182 ], [ %.0274, %166 ], [ %.0274, %231 ], [ %.0274, %255 ], [ %.0274, %243 ] store ptr null, ptr %4, align 8, !tbaa !41 br label %.thread381.sink.split @@ -998,7 +999,7 @@ define internal fastcc range(i32 -1, 1) i32 @H5EA__lookup_elmt(ptr noundef reado %.0249371.ph = phi ptr [ null, %289 ], [ %241, %260 ], [ null, %116 ], [ null, %44 ], [ %.0249372, %.thread354 ] %.0254369.ph = phi i32 [ %.5259, %289 ], [ %.5259, %260 ], [ %.1255, %116 ], [ 0, %44 ], [ %.0254370, %.thread354 ] %.0260367.ph = phi i32 [ %.4264, %289 ], [ %.6266, %260 ], [ 0, %116 ], [ 0, %44 ], [ %.0260368, %.thread354 ] - %.1275365.ph = phi i1 [ %.not, %289 ], [ %.not, %260 ], [ %.not, %116 ], [ %.not, %44 ], [ %.1275366, %.thread354 ] + %.1275365.ph = phi i8 [ %.0274, %289 ], [ %.0274, %260 ], [ %.0274, %116 ], [ %.0274, %44 ], [ %.1275366, %.thread354 ] %.1278363.ph = phi i32 [ 0, %289 ], [ 0, %260 ], [ 0, %116 ], [ 0, %44 ], [ -1, %.thread354 ] store ptr %.sink423, ptr %5, align 8, !tbaa !42 store i64 %.sink, ptr %6, align 8, !tbaa !11 @@ -1012,12 +1013,12 @@ define internal fastcc range(i32 -1, 1) i32 @H5EA__lookup_elmt(ptr noundef reado %.0249371 = phi ptr [ null, %23 ], [ null, %73 ], [ null, %154 ], [ null, %125 ], [ null, %226 ], [ %.0249371.ph, %.thread381.sink.split ] %.0254369 = phi i32 [ 0, %23 ], [ 0, %73 ], [ %.5259, %154 ], [ 0, %125 ], [ %.5259, %226 ], [ %.0254369.ph, %.thread381.sink.split ] %.0260367 = phi i32 [ 0, %23 ], [ 0, %73 ], [ 0, %154 ], [ 0, %125 ], [ %.4264, %226 ], [ %.0260367.ph, %.thread381.sink.split ] - %.1275365 = phi i1 [ false, %23 ], [ %.not, %73 ], [ %.not, %154 ], [ %.not, %125 ], [ %.not, %226 ], [ %.1275365.ph, %.thread381.sink.split ] + %.1275365 = phi i8 [ 0, %23 ], [ %.0274, %73 ], [ %.0274, %154 ], [ %.0274, %125 ], [ %.0274, %226 ], [ %.1275365.ph, %.thread381.sink.split ] %.1278363 = phi i32 [ 0, %23 ], [ 0, %73 ], [ 0, %154 ], [ 0, %125 ], [ 0, %226 ], [ %.1278363.ph, %.thread381.sink.split ] %292 = load i8, ptr %9, align 1, !tbaa !3, !range !7, !noundef !8 - %293 = trunc nuw i8 %292 to i1 - %294 = or i1 %.1275365, %293 - br i1 %294, label %295, label %302 + %293 = or i8 %292, %.1275365 + %.not421 = icmp eq i8 %293, 0 + br i1 %.not421, label %301, label %294 295: ; preds = %.thread381 %296 = call i32 @H5EA__hdr_modified(ptr noundef nonnull %10) #5 diff --git a/bench/hdf5/optimized/H5FDcore.ll b/bench/hdf5/optimized/H5FDcore.ll index f4d4dd75d04..a37ec5aae4f 100644 --- a/bench/hdf5/optimized/H5FDcore.ll +++ b/bench/hdf5/optimized/H5FDcore.ll @@ -1272,23 +1272,22 @@ H5FD__core_get_default_config.exit: ; preds = %45, %43, %41, %36 %261 = getelementptr inbounds nuw i8, ptr %114, i64 224 store ptr null, ptr %261, align 8, !tbaa !56 %262 = load i8, ptr %129, align 8, !tbaa !18, !range !7, !noundef !8 - %263 = trunc nuw i8 %262 to i1 - %264 = trunc nuw i8 %256 to i1 - %265 = icmp ne i64 %259, 0 - %266 = select i1 %263, i1 %264, i1 false - %or.cond259 = select i1 %266, i1 %265, i1 false - br i1 %or.cond259, label %267, label %.thread253 - -267: ; preds = %.thread245 - %268 = call ptr @H5SL_create(i32 noundef 1, ptr noundef null) #18 - store ptr %268, ptr %261, align 8, !tbaa !56 - %269 = icmp eq ptr %268, null - br i1 %269, label %.critedge228, label %.thread253 - -.critedge228: ; preds = %267 - %270 = load i64, ptr @H5E_SLIST_g, align 8, !tbaa !10 - %271 = load i64, ptr @H5E_CANTCREATE_g, align 8, !tbaa !10 - %272 = call i32 (ptr, ptr, i32, i64, i64, ptr, ...) @H5E_printf_stack(ptr noundef nonnull @.str.1, ptr noundef nonnull @__func__.H5FD__core_open, i32 noundef 942, i64 noundef %270, i64 noundef %271, ptr noundef nonnull @.str.33) #18 + %263 = icmp ne i64 %259, 0 + %264 = and i8 %262, %256 + %265 = icmp ne i8 %264, 0 + %266 = select i1 %265, i1 %263, i1 false + br i1 %or.cond259, label %266, label %.thread253 + +266: ; preds = %.thread245 + %267 = call ptr @H5SL_create(i32 noundef 1, ptr noundef null) #18 + store ptr %267, ptr %261, align 8, !tbaa !56 + %268 = icmp eq ptr %267, null + br i1 %268, label %.critedge228, label %.thread253 + +.critedge228: ; preds = %266 + %269 = load i64, ptr @H5E_SLIST_g, align 8, !tbaa !10 + %270 = load i64, ptr @H5E_CANTCREATE_g, align 8, !tbaa !10 + %271 = call i32 (ptr, ptr, i32, i64, i64, ptr, ...) @H5E_printf_stack(ptr noundef nonnull @.str.1, ptr noundef nonnull @__func__.H5FD__core_open, i32 noundef 942, i64 noundef %269, i64 noundef %270, ptr noundef nonnull @.str.33) #18 br label %.thread249 .thread249: ; preds = %143, %.critedge228, %183, %242, %191, %.thread, %223, %.thread232 @@ -1310,8 +1309,8 @@ H5FD__core_get_default_config.exit: ; preds = %45, %43, %41, %36 %284 = call ptr @H5MM_xfree(ptr noundef nonnull %114) #18 br label %.thread253 -.thread253: ; preds = %267, %19, %85, %78, %65, %116, %106, %99, %56, %32, %25, %.thread245, %4, %277 - %.0 = phi ptr [ null, %277 ], [ null, %4 ], [ %114, %.thread245 ], [ null, %19 ], [ null, %85 ], [ null, %78 ], [ null, %65 ], [ null, %116 ], [ null, %106 ], [ null, %99 ], [ null, %56 ], [ null, %32 ], [ null, %25 ], [ %114, %267 ] +.thread253: ; preds = %266, %19, %85, %78, %65, %116, %106, %99, %56, %32, %25, %.thread245, %4, %277 + %.0 = phi ptr [ null, %277 ], [ null, %4 ], [ %114, %.thread245 ], [ null, %19 ], [ null, %85 ], [ null, %78 ], [ null, %65 ], [ null, %116 ], [ null, %106 ], [ null, %99 ], [ null, %56 ], [ null, %32 ], [ null, %25 ], [ %114, %266 ] call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %6) #18 call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %5) #18 ret ptr %.0 diff --git a/bench/hdf5/optimized/H5Tconv_vlen.ll b/bench/hdf5/optimized/H5Tconv_vlen.ll index e286cfef1b6..3cd0b181fcb 100644 --- a/bench/hdf5/optimized/H5Tconv_vlen.ll +++ b/bench/hdf5/optimized/H5Tconv_vlen.ll @@ -939,6 +939,7 @@ define range(i32 -1, 1) i32 @H5T__conv_vlen(ptr noundef readonly %0, ptr noundef %.0344565 = phi ptr [ %.4348.ph, %.loopexit ], [ %.4348.ph, %.thread520 ], [ %.1345, %223 ], [ null, %216 ], [ null, %203 ], [ %.1345, %227 ], [ %.4348.ph, %.lr.ph964 ], [ %.5349, %475 ] %.0364563 = phi ptr [ %.3367.ph, %.loopexit ], [ %.3367.ph, %.thread520 ], [ null, %223 ], [ null, %216 ], [ null, %203 ], [ null, %227 ], [ %.3367.ph, %.lr.ph964 ], [ %.4368, %475 ] %.0376559.shrunk = phi i1 [ %.not457, %.loopexit ], [ %.not457, %.thread520 ], [ false, %223 ], [ false, %216 ], [ false, %203 ], [ %.not457, %227 ], [ %.not457, %.lr.ph964 ], [ %.not457, %475 ] + %.0376559 = zext i1 %.0376559.shrunk to i8 %493 = icmp sgt i64 %.1411, -1 br i1 %493, label %494, label %.thread532.thread.thread @@ -946,7 +947,7 @@ define range(i32 -1, 1) i32 @H5T__conv_vlen(ptr noundef readonly %0, ptr noundef %.0413551694 = phi ptr [ %151, %.thread532.thread.thread677 ], [ %.1414, %.thread532.thread ] %.0410553693 = phi i64 [ %182, %.thread532.thread.thread677 ], [ %.1411, %.thread532.thread ] %.0407555692 = phi i64 [ %189, %.thread532.thread.thread677 ], [ %.1408, %.thread532.thread ] - %.0376559691 = phi i1 [ false, %.thread532.thread.thread677 ], [ %.0376559.shrunk, %.thread532.thread ] + %.0376559691 = phi i8 [ 0, %.thread532.thread.thread677 ], [ %.0376559, %.thread532.thread ] %.0374561690 = phi i8 [ 0, %.thread532.thread.thread677 ], [ %.1375, %.thread532.thread ] %.0364563689 = phi ptr [ null, %.thread532.thread.thread677 ], [ %.0364563, %.thread532.thread ] %.0344565688 = phi ptr [ null, %.thread532.thread.thread677 ], [ %.0344565, %.thread532.thread ] @@ -970,7 +971,7 @@ define range(i32 -1, 1) i32 @H5T__conv_vlen(ptr noundef readonly %0, ptr noundef %.0344565604721 = phi ptr [ %.0344565, %.thread532.thread.thread ], [ null, %184 ], [ null, %171 ], [ null, %153 ], [ null, %143 ] %.0364563606720 = phi ptr [ %.0364563, %.thread532.thread.thread ], [ null, %184 ], [ null, %171 ], [ null, %153 ], [ null, %143 ] %.0374561608719 = phi i8 [ %.1375, %.thread532.thread.thread ], [ 0, %184 ], [ 0, %171 ], [ 0, %153 ], [ 0, %143 ] - %.0376559610718 = phi i1 [ %.0376559.shrunk, %.thread532.thread.thread ], [ false, %184 ], [ false, %171 ], [ false, %153 ], [ false, %143 ] + %.0376559610718 = phi i8 [ %.0376559, %.thread532.thread.thread ], [ 0, %184 ], [ 0, %171 ], [ 0, %153 ], [ 0, %143 ] %.0407555612717 = phi i64 [ %.1408, %.thread532.thread.thread ], [ -1, %184 ], [ -1, %171 ], [ -1, %153 ], [ -1, %143 ] %.0413551614716 = phi ptr [ %.1414, %.thread532.thread.thread ], [ %151, %184 ], [ %151, %171 ], [ null, %153 ], [ null, %143 ] %.0415549615715 = phi ptr [ %.1416, %.thread532.thread.thread ], [ %123, %184 ], [ %123, %171 ], [ %123, %153 ], [ %123, %143 ] @@ -987,7 +988,7 @@ define range(i32 -1, 1) i32 @H5T__conv_vlen(ptr noundef readonly %0, ptr noundef 507: ; preds = %.thread532.thread.thread, %503, %.thread532.thread.thread.thread705, %494, %497 %.0413551613 = phi ptr [ %.0413551694, %497 ], [ %.0413551694, %494 ], [ %.0413551614716, %503 ], [ %.0413551614716, %.thread532.thread.thread.thread705 ], [ %.1414, %.thread532.thread.thread ] %.0407555611 = phi i64 [ %.0407555692, %497 ], [ %.0407555692, %494 ], [ %.0407555612717, %503 ], [ %.0407555612717, %.thread532.thread.thread.thread705 ], [ %.1408, %.thread532.thread.thread ] - %.0376559609 = phi i1 [ %.0376559691, %497 ], [ %.0376559691, %494 ], [ %.0376559610718, %503 ], [ %.0376559610718, %.thread532.thread.thread.thread705 ], [ %.0376559.shrunk, %.thread532.thread.thread ] + %.0376559609 = phi i8 [ %.0376559691, %497 ], [ %.0376559691, %494 ], [ %.0376559610718, %503 ], [ %.0376559610718, %.thread532.thread.thread.thread705 ], [ %.0376559, %.thread532.thread.thread ] %.0374561607 = phi i8 [ %.0374561690, %497 ], [ %.0374561690, %494 ], [ %.0374561608719, %503 ], [ %.0374561608719, %.thread532.thread.thread.thread705 ], [ %.1375, %.thread532.thread.thread ] %.0364563605 = phi ptr [ %.0364563689, %497 ], [ %.0364563689, %494 ], [ %.0364563606720, %503 ], [ %.0364563606720, %.thread532.thread.thread.thread705 ], [ %.0364563, %.thread532.thread.thread ] %.0344565603 = phi ptr [ %.0344565688, %497 ], [ %.0344565688, %494 ], [ %.0344565604721, %503 ], [ %.0344565604721, %.thread532.thread.thread.thread705 ], [ %.0344565, %.thread532.thread.thread ] @@ -1023,10 +1024,11 @@ define range(i32 -1, 1) i32 @H5T__conv_vlen(ptr noundef readonly %0, ptr noundef .thread644: ; preds = %516, %520, %517, %509, %512 %.12 = phi i32 [ -1, %512 ], [ %.11, %509 ], [ -1, %520 ], [ %.11, %517 ], [ %.11, %516 ] - %524 = trunc nuw i8 %.0374561607 to i1 - %525 = select i1 %.0376559609, i1 %524, i1 false - %.not470741 = icmp eq ptr %.0364563605, null - %.not470 = select i1 %525, i1 true, i1 %.not470741 + %524 = and i8 %.0374561607, 1 + %525 = and i8 %524, %.0376559609 + %.not470741 = icmp ne i8 %525, 0 + %.not470742 = icmp eq ptr %.0364563605, null + %.not470 = select i1 %.not741, i1 true, i1 %.not470742 br i1 %.not470, label %528, label %526 526: ; preds = %.thread644 diff --git a/bench/icu/optimized/numparse_affixes.ll b/bench/icu/optimized/numparse_affixes.ll index 7e2b10d71d6..0c17f3c8cac 100644 --- a/bench/icu/optimized/numparse_affixes.ll +++ b/bench/icu/optimized/numparse_affixes.ll @@ -2717,9 +2717,10 @@ _ZN12_GLOBAL__N_16equalsEPKN6icu_778numparse4impl19AffixPatternMatcherES5_.exit. call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(20) %215, ptr noundef nonnull align 8 dereferenceable(20) %42, i64 20, i1 false) call void @_ZN6icu_778numparse4impl18NumberParseMatcherD2Ev(ptr noundef nonnull align 8 dereferenceable(28) %12) #19 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #19 - %or.cond = and i1 %20, %133 - %or.cond3 = and i1 %or.cond, %187 - br i1 %or.cond3, label %216, label %_ZN12_GLOBAL__N_16equalsEPKN6icu_778numparse4impl19AffixPatternMatcherES5_.exit141.thread + %or.cond = and i8 %186, %132 + %217 = icmp ne i8 %or.cond, 0 + %or.cond3 = and i1 %20, %217 + br i1 %or.cond3, label %218, label %_ZN12_GLOBAL__N_16equalsEPKN6icu_778numparse4impl19AffixPatternMatcherES5_.exit141.thread 216: ; preds = %212 %217 = icmp ne ptr %.287, null @@ -2845,7 +2846,7 @@ _ZN12_GLOBAL__N_16equalsEPKN6icu_778numparse4impl19AffixPatternMatcherES5_.exit1 %247 = load ptr, ptr %2, align 8, !tbaa !15 %248 = getelementptr inbounds nuw i8, ptr %247, i64 16 %249 = load ptr, ptr %248, align 8 - invoke void %249(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %246) + invoke void %251(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %246) to label %250 unwind label %251 250: ; preds = %.lr.ph diff --git a/bench/image-rs/optimized/1clnprdgqfw2q9lq.ll b/bench/image-rs/optimized/1clnprdgqfw2q9lq.ll index b33bc65d57f..ff59158def9 100644 --- a/bench/image-rs/optimized/1clnprdgqfw2q9lq.ll +++ b/bench/image-rs/optimized/1clnprdgqfw2q9lq.ll @@ -22711,20 +22711,18 @@ define hidden void @"_ZN3exr5block6reader15Reader$LT$R$GT$18read_from_buffered17 %.sroa.497.0..sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %11, i64 4 store i8 %38, ptr %.sroa.497.0..sroa_idx.i.i, align 4, !noalias !4732 %45 = icmp eq i8 %38, 2 - %46 = lshr i32 %.sroa.5.032.ph.i.i.i, 12 - %47 = lshr i32 %.sroa.5.032.ph.i.i.i, 11 - br i1 %45, label %48, label %55 + br i1 %45, label %46, label %55 48: ; preds = %36 + %47 = lshr exact i32 %.sroa.667.sroa.0.sroa.8.0.insert.shift80.i.i, 16 + %48 = lshr i32 %.sroa.5.032.ph.i.i.i, 12 %49 = trunc i32 %39 to i1 - br i1 %49, label %50, label %_ZN3exr4meta12Requirements8validate17h8724cd3e22c90bddE.exit.i.i + %50 = or i32 %47, %48 + %brmerge.not9.i.i.i = icmp ne i32 %50, 0 + %or.cond.not.i.i = select i1 %49, i1 %brmerge.not9.i.i.i, i1 false + br i1 %or.cond.not.i.i, label %55, label %_ZN3exr4meta12Requirements8validate17h8724cd3e22c90bddE.exit.i.i -50: ; preds = %48 - %brmerge9.i156.i.i = or i32 %47, %46 - %brmerge.i.i.i = trunc i32 %brmerge9.i156.i.i to i1 - br i1 %brmerge.i.i.i, label %55, label %_ZN3exr4meta12Requirements8validate17h8724cd3e22c90bddE.exit.i.i - -_ZN3exr4meta12Requirements8validate17h8724cd3e22c90bddE.exit.i.i: ; preds = %50, %48 +_ZN3exr4meta12Requirements8validate17h8724cd3e22c90bddE.exit.i.i: ; preds = %48 call void @llvm.lifetime.start.p0(i64 4288, ptr nonnull %10), !noalias !4732 invoke void @_ZN3exr4meta6header6Header8read_all17h7dfd89fdf9673848E(ptr noalias noundef nonnull sret({ i64, [535 x i64] }) align 8 captures(none) dereferenceable(4288) %10, ptr noalias noundef nonnull align 8 dereferenceable(48) %14, ptr noalias noundef nonnull readonly align 1 dereferenceable(5) %11, i1 noundef zeroext %16) to label %.noexc21 unwind label %105 @@ -22751,13 +22749,13 @@ _ZN3exr4meta12Requirements8validate17h8724cd3e22c90bddE.exit.i.i: ; preds = %50, %.sroa.15.sroa.10.0.extract.trunc63.i = trunc nuw i64 %.sroa.15.sroa.10.0.extract.shift62.i to i24 br label %55 -55: ; preds = %54, %50, %36, %33, %.noexc20 - %.sroa.15.sroa.10.0.i = phi i24 [ %.sroa.15.sroa.10.0.extract.trunc63.i, %54 ], [ -8388608, %33 ], [ %.sroa.8.i.sroa.5.0.copyload.i.i, %.noexc20 ], [ -8388608, %50 ], [ -8388608, %36 ] - %.sroa.15.sroa.9.0.i = phi i8 [ %.sroa.15.sroa.9.0.extract.trunc55.i, %54 ], [ 0, %33 ], [ %.sroa.8.i.sroa.0.0.copyload.i.i, %.noexc20 ], [ 0, %50 ], [ 0, %36 ] - %.sroa.15.sroa.0.0.i = phi i32 [ %.sroa.15.sroa.0.0.extract.trunc48.i, %54 ], [ 0, %33 ], [ %.sroa.5.0.copyload.i.i.i, %.noexc20 ], [ 0, %50 ], [ 0, %36 ] - %.sroa.23.0.i = phi i64 [ %.sroa.719.i.sroa.10.0.copyload86.i, %54 ], [ 26, %33 ], [ %.sroa.8.i.sroa.7.0.copyload.i.i, %.noexc20 ], [ 18, %50 ], [ 46, %36 ] - %.sroa.20.0.i = phi ptr [ %.sroa.719.i.sroa.8.0.copyload84.i, %54 ], [ @anon.485243c0b6e0c52e847d698bbee735f0.15, %33 ], [ %.sroa.8.i.sroa.6.0.copyload.i.i, %.noexc20 ], [ @anon.485243c0b6e0c52e847d698bbee735f0.16, %50 ], [ @anon.485243c0b6e0c52e847d698bbee735f0.17, %36 ] - %.sroa.829.0.i = phi i64 [ %.sroa.719.i.sroa.0.0.copyload80.i, %54 ], [ 1, %33 ], [ %.sroa.0.0.copyload.i.i.i, %.noexc20 ], [ 2, %50 ], [ 1, %36 ] +55: ; preds = %54, %46, %36, %33, %.noexc20 + %.sroa.15.sroa.10.0.i = phi i24 [ %.sroa.15.sroa.10.0.extract.trunc63.i, %54 ], [ -8388608, %33 ], [ %.sroa.8.i.sroa.5.0.copyload.i.i, %.noexc20 ], [ -8388608, %46 ], [ -8388608, %36 ] + %.sroa.15.sroa.9.0.i = phi i8 [ %.sroa.15.sroa.9.0.extract.trunc55.i, %54 ], [ 0, %33 ], [ %.sroa.8.i.sroa.0.0.copyload.i.i, %.noexc20 ], [ 0, %46 ], [ 0, %36 ] + %.sroa.15.sroa.0.0.i = phi i32 [ %.sroa.15.sroa.0.0.extract.trunc48.i, %54 ], [ 0, %33 ], [ %.sroa.5.0.copyload.i.i.i, %.noexc20 ], [ 0, %46 ], [ 0, %36 ] + %.sroa.23.0.i = phi i64 [ %.sroa.719.i.sroa.10.0.copyload86.i, %54 ], [ 26, %33 ], [ %.sroa.8.i.sroa.7.0.copyload.i.i, %.noexc20 ], [ 18, %46 ], [ 46, %36 ] + %.sroa.20.0.i = phi ptr [ %.sroa.719.i.sroa.8.0.copyload84.i, %54 ], [ @anon.485243c0b6e0c52e847d698bbee735f0.15, %33 ], [ %.sroa.8.i.sroa.6.0.copyload.i.i, %.noexc20 ], [ @anon.485243c0b6e0c52e847d698bbee735f0.16, %46 ], [ @anon.485243c0b6e0c52e847d698bbee735f0.17, %36 ] + %.sroa.829.0.i = phi i64 [ %.sroa.719.i.sroa.0.0.copyload80.i, %54 ], [ 1, %33 ], [ %.sroa.0.0.copyload.i.i.i, %.noexc20 ], [ 2, %46 ], [ 1, %36 ] call void @llvm.lifetime.end.p0(i64 5, ptr nonnull %11), !noalias !4732 br label %68 @@ -23182,20 +23180,18 @@ define hidden void @"_ZN3exr5block6reader15Reader$LT$R$GT$18read_from_buffered17 %.sroa.497.0..sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %10, i64 4 store i8 %37, ptr %.sroa.497.0..sroa_idx.i.i, align 4, !noalias !4808 %44 = icmp eq i8 %37, 2 - %45 = lshr i32 %.sroa.5.032.ph.i.i.i, 12 - %46 = lshr i32 %.sroa.5.032.ph.i.i.i, 11 - br i1 %44, label %47, label %54 + br i1 %44, label %45, label %54 47: ; preds = %35 + %46 = lshr exact i32 %.sroa.667.sroa.0.sroa.8.0.insert.shift80.i.i, 16 + %47 = lshr i32 %.sroa.5.032.ph.i.i.i, 12 %48 = trunc i32 %38 to i1 - br i1 %48, label %49, label %_ZN3exr4meta12Requirements8validate17h8724cd3e22c90bddE.exit.i.i - -49: ; preds = %47 - %brmerge9.i156.i.i = or i32 %46, %45 - %brmerge.i.i.i = trunc i32 %brmerge9.i156.i.i to i1 - br i1 %brmerge.i.i.i, label %54, label %_ZN3exr4meta12Requirements8validate17h8724cd3e22c90bddE.exit.i.i + %49 = or i32 %48, %47 + %brmerge.not9.i.i.i = icmp ne i32 %49, 0 + %or.cond.not.i.i = select i1 %48, i1 %brmerge.not9.i.i.i, i1 false + br i1 %or.cond.not.i.i, label %54, label %_ZN3exr4meta12Requirements8validate17h8724cd3e22c90bddE.exit.i.i -_ZN3exr4meta12Requirements8validate17h8724cd3e22c90bddE.exit.i.i: ; preds = %49, %47 +_ZN3exr4meta12Requirements8validate17h8724cd3e22c90bddE.exit.i.i: ; preds = %47 call void @llvm.lifetime.start.p0(i64 4288, ptr nonnull %9), !noalias !4808 invoke void @_ZN3exr4meta6header6Header8read_all17hb2bb52394676cf53E(ptr noalias noundef nonnull sret({ i64, [535 x i64] }) align 8 captures(none) dereferenceable(4288) %9, ptr noalias noundef nonnull align 8 dereferenceable(72) %13, ptr noalias noundef nonnull readonly align 1 dereferenceable(5) %10, i1 noundef zeroext %15) to label %.noexc21 unwind label %104 @@ -23222,13 +23218,13 @@ _ZN3exr4meta12Requirements8validate17h8724cd3e22c90bddE.exit.i.i: ; preds = %49, %.sroa.15.sroa.10.0.extract.trunc63.i = trunc nuw i64 %.sroa.15.sroa.10.0.extract.shift62.i to i24 br label %54 -54: ; preds = %53, %49, %35, %32, %.noexc20 - %.sroa.15.sroa.10.0.i = phi i24 [ %.sroa.15.sroa.10.0.extract.trunc63.i, %53 ], [ -8388608, %32 ], [ %.sroa.8.i.sroa.5.0.copyload.i.i, %.noexc20 ], [ -8388608, %49 ], [ -8388608, %35 ] - %.sroa.15.sroa.9.0.i = phi i8 [ %.sroa.15.sroa.9.0.extract.trunc55.i, %53 ], [ 0, %32 ], [ %.sroa.8.i.sroa.0.0.copyload.i.i, %.noexc20 ], [ 0, %49 ], [ 0, %35 ] - %.sroa.15.sroa.0.0.i = phi i32 [ %.sroa.15.sroa.0.0.extract.trunc48.i, %53 ], [ 0, %32 ], [ %.sroa.5.0.copyload.i.i.i, %.noexc20 ], [ 0, %49 ], [ 0, %35 ] - %.sroa.23.0.i = phi i64 [ %.sroa.719.i.sroa.10.0.copyload86.i, %53 ], [ 26, %32 ], [ %.sroa.8.i.sroa.7.0.copyload.i.i, %.noexc20 ], [ 18, %49 ], [ 46, %35 ] - %.sroa.20.0.i = phi ptr [ %.sroa.719.i.sroa.8.0.copyload84.i, %53 ], [ @anon.485243c0b6e0c52e847d698bbee735f0.15, %32 ], [ %.sroa.8.i.sroa.6.0.copyload.i.i, %.noexc20 ], [ @anon.485243c0b6e0c52e847d698bbee735f0.16, %49 ], [ @anon.485243c0b6e0c52e847d698bbee735f0.17, %35 ] - %.sroa.829.0.i = phi i64 [ %.sroa.719.i.sroa.0.0.copyload80.i, %53 ], [ 1, %32 ], [ %.sroa.0.0.copyload.i.i.i, %.noexc20 ], [ 2, %49 ], [ 1, %35 ] +54: ; preds = %53, %45, %35, %32, %.noexc20 + %.sroa.15.sroa.10.0.i = phi i24 [ %.sroa.15.sroa.10.0.extract.trunc63.i, %53 ], [ -8388608, %32 ], [ %.sroa.8.i.sroa.5.0.copyload.i.i, %.noexc20 ], [ -8388608, %45 ], [ -8388608, %35 ] + %.sroa.15.sroa.9.0.i = phi i8 [ %.sroa.15.sroa.9.0.extract.trunc55.i, %53 ], [ 0, %32 ], [ %.sroa.8.i.sroa.0.0.copyload.i.i, %.noexc20 ], [ 0, %45 ], [ 0, %35 ] + %.sroa.15.sroa.0.0.i = phi i32 [ %.sroa.15.sroa.0.0.extract.trunc48.i, %53 ], [ 0, %32 ], [ %.sroa.5.0.copyload.i.i.i, %.noexc20 ], [ 0, %45 ], [ 0, %35 ] + %.sroa.23.0.i = phi i64 [ %.sroa.719.i.sroa.10.0.copyload86.i, %53 ], [ 26, %32 ], [ %.sroa.8.i.sroa.7.0.copyload.i.i, %.noexc20 ], [ 18, %45 ], [ 46, %35 ] + %.sroa.20.0.i = phi ptr [ %.sroa.719.i.sroa.8.0.copyload84.i, %53 ], [ @anon.485243c0b6e0c52e847d698bbee735f0.15, %32 ], [ %.sroa.8.i.sroa.6.0.copyload.i.i, %.noexc20 ], [ @anon.485243c0b6e0c52e847d698bbee735f0.16, %45 ], [ @anon.485243c0b6e0c52e847d698bbee735f0.17, %35 ] + %.sroa.829.0.i = phi i64 [ %.sroa.719.i.sroa.0.0.copyload80.i, %53 ], [ 1, %32 ], [ %.sroa.0.0.copyload.i.i.i, %.noexc20 ], [ 2, %45 ], [ 1, %35 ] call void @llvm.lifetime.end.p0(i64 5, ptr nonnull %10), !noalias !4808 br label %67 diff --git a/bench/image-rs/optimized/30755d6iao7ojcvl.ll b/bench/image-rs/optimized/30755d6iao7ojcvl.ll index 40d4ceb69af..f4a5f5ae09b 100644 --- a/bench/image-rs/optimized/30755d6iao7ojcvl.ll +++ b/bench/image-rs/optimized/30755d6iao7ojcvl.ll @@ -1099,21 +1099,20 @@ define hidden void @"_ZN3gif7encoder16Encoder$LT$W$GT$15write_extension17hb6c705 %.sroa.6.0.extract.trunc = trunc nuw i48 %.sroa.6.0.extract.shift to i16 %.sroa.4.sroa.0.0.extract.trunc = trunc i48 %.sroa.5.0.extract.shift to i8 %9 = trunc i48 %2 to i1 - %10 = and i48 %2, 4294901760 - %11 = icmp eq i48 %10, 0 - %or.cond = and i1 %11, %9 - %12 = icmp eq i16 %.sroa.6.0.extract.trunc, 0 - %or.cond7 = select i1 %or.cond, i1 %12, i1 false - br i1 %or.cond7, label %21, label %13 - -13: ; preds = %3 + %10 = and i48 %2, 4294901761 + %11 = icmp eq i48 %10, 1 + %11 = icmp eq i16 %.sroa.6.0.extract.trunc, 0 + %or.cond7 = select i1 %or.cond, i1 %11, i1 false + br i1 %or.cond7, label %21, label %12 + +12: ; preds = %3 tail call void @llvm.experimental.noalias.scope.decl(metadata !176) %14 = getelementptr inbounds nuw i8, ptr %1, i64 24 %15 = load ptr, ptr %14, align 8, !alias.scope !176, !noundef !13 %16 = icmp eq ptr %15, null br i1 %16, label %35, label %17 -17: ; preds = %13 +17: ; preds = %12 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4), !noalias !179 call void @_ZN3std2io5error14repr_bitpacked11decode_repr17hd96ac60c1dd9bdefE.llvm.9832446184049035033(ptr noalias noundef nonnull sret({ i8, [15 x i8] }) align 8 captures(none) dereferenceable(16) %4, ptr noundef nonnull inttoptr (i64 154618822659 to ptr)), !noalias !179 %18 = load i8, ptr %4, align 8, !range !159, !alias.scope !186, !noalias !179, !noundef !13 @@ -1160,7 +1159,7 @@ define hidden void @"_ZN3gif7encoder16Encoder$LT$W$GT$15write_extension17hb6c705 %34 = icmp eq ptr %33, null br i1 %34, label %36, label %37 -35: ; preds = %13 +35: ; preds = %12 store i8 1, ptr %0, align 8 %.sroa.4183.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 store ptr inttoptr (i64 154618822659 to ptr), ptr %.sroa.4183.0..sroa_idx, align 8 diff --git a/bench/just-rs/optimized/2sblcsgax6v4zfcc.ll b/bench/just-rs/optimized/2sblcsgax6v4zfcc.ll index 9c3ad3a214a..33143c4c8b2 100644 --- a/bench/just-rs/optimized/2sblcsgax6v4zfcc.ll +++ b/bench/just-rs/optimized/2sblcsgax6v4zfcc.ll @@ -10311,10 +10311,11 @@ define hidden noundef zeroext i1 @"_ZN4just6recipe15Recipe$LT$D$GT$7enabled17hd9 26: ; preds = %24, %22 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %1), !noalias !1578 - %.demorgan = and i1 %trunc.i, %trunc.i15 - %27 = and i1 %trunc.i8, %trunc.i22 - %28 = xor i1 %27, true - %29 = or i1 %.demorgan, %28 + %.demorgan = and i64 %19, %11 + %.demorgan.not = icmp ne i64 %27, 0 + %28 = and i64 %23, %15 + %.not = icmp eq i64 %28, 0 + %29 = or i1 %.demorgan.not, %.not br label %"_ZN5alloc11collections5btree3map25BTreeMap$LT$K$C$V$C$A$GT$3get17ha5cdde376751ca9eE.exit28" "_ZN5alloc11collections5btree3map25BTreeMap$LT$K$C$V$C$A$GT$3get17ha5cdde376751ca9eE.exit28": ; preds = %.critedge, %26 diff --git a/bench/lief/optimized/QNXStack.ll b/bench/lief/optimized/QNXStack.ll index 211fa27b5d4..6aef5a25b63 100644 --- a/bench/lief/optimized/QNXStack.ll +++ b/bench/lief/optimized/QNXStack.ll @@ -560,12 +560,9 @@ define noundef i32 @_ZNK4LIEF3ELF8QNXStack15stack_allocatedEv(ptr noundef nonnul ; Function Attrs: mustprogress nounwind uwtable define noundef zeroext i1 @_ZNK4LIEF3ELF8QNXStack13is_executableEv(ptr noundef nonnull align 8 dereferenceable(104) %0) local_unnamed_addr #0 align 2 { %2 = tail call i64 @_ZNK4LIEF3ELF4Note7read_atIbEEN2tl8expectedIT_11lief_errorsEEm(ptr noundef nonnull align 8 dereferenceable(104) %0, i64 noundef 8) #21 - %3 = and i64 %2, 4294967296 - %.not = icmp eq i64 %3, 0 - %4 = trunc i64 %2 to i1 - %5 = or i1 %.not, %4 - %6 = xor i1 %5, true - ret i1 %6 + %3 = and i64 %2, 4294967297 + %.not = icmp eq i64 %3, 4294967296 + ret i1 %.not } declare hidden i64 @_ZNK4LIEF3ELF4Note7read_atIbEEN2tl8expectedIT_11lief_errorsEEm(ptr noundef nonnull align 8 dereferenceable(104), i64 noundef) local_unnamed_addr #2 @@ -824,13 +821,10 @@ _ZN3fmt3v107vformatB5cxx11ENS0_17basic_string_viewIcEENS0_17basic_format_argsINS %91 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) %58, ptr noundef %89, i64 noundef %90) #21 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %15) #21 %92 = call i64 @_ZNK4LIEF3ELF4Note7read_atIbEEN2tl8expectedIT_11lief_errorsEEm(ptr noundef nonnull align 8 dereferenceable(104) %0, i64 noundef 8) #21 - %93 = and i64 %92, 4294967296 - %.not.i26 = icmp eq i64 %93, 0 - %94 = trunc i64 %92 to i1 - %95 = or i1 %.not.i26, %94 - %96 = xor i1 %95, true + %93 = and i64 %92, 4294967297 + %.not.i26 = icmp eq i64 %93, 4294967296 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %10) #21, !noalias !54 - %.sroa.03.0.insert.ext.i27 = zext i1 %96 to i64 + %.sroa.03.0.insert.ext.i27 = zext i1 %.not.i26 to i64 store i64 %.sroa.03.0.insert.ext.i27, ptr %10, align 16, !noalias !54 call void @llvm.experimental.noalias.scope.decl(metadata !57) call void @llvm.lifetime.start.p0(i64 536, ptr nonnull %4) #21, !noalias !57 @@ -908,12 +902,12 @@ _ZN3fmt3v109to_stringIcLm500EEENSt7__cxx1112basic_stringIT_St11char_traitsIS4_ES _ZN3fmt3v107vformatB5cxx11ENS0_17basic_string_viewIcEENS0_17basic_format_argsINS0_20basic_format_contextINS0_8appenderEcEEEE.exit32: ; preds = %_ZN3fmt3v109to_stringIcLm500EEENSt7__cxx1112basic_stringIT_St11char_traitsIS4_ESaIS4_EEERKNS0_19basic_memory_bufferIS4_XT0_ES7_EE.exit.i30, %122 call void @llvm.lifetime.end.p0(i64 536, ptr nonnull %4) #21, !noalias !57 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #21, !noalias !54 + %121 = load ptr, ptr %15, align 8, !tbaa !41 + %122 = load i64, ptr %115, align 8, !tbaa !43 + %123 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) %91, ptr noundef %121, i64 noundef %122) #21 %124 = load ptr, ptr %15, align 8, !tbaa !41 - %125 = load i64, ptr %118, align 8, !tbaa !43 - %126 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) %91, ptr noundef %124, i64 noundef %125) #21 - %127 = load ptr, ptr %15, align 8, !tbaa !41 - %128 = icmp eq ptr %127, %104 - br i1 %128, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i + %125 = icmp eq ptr %124, %104 + br i1 %125, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i: ; preds = %_ZN3fmt3v107vformatB5cxx11ENS0_17basic_string_viewIcEENS0_17basic_format_argsINS0_20basic_format_contextINS0_8appenderEcEEEE.exit32 %129 = load i64, ptr %118, align 8, !tbaa !43 @@ -924,7 +918,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.threa _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i: ; preds = %_ZN3fmt3v107vformatB5cxx11ENS0_17basic_string_viewIcEENS0_17basic_format_argsINS0_20basic_format_contextINS0_8appenderEcEEEE.exit32 %131 = load i64, ptr %104, align 8, !tbaa !11 %132 = add i64 %131, 1 - call void @_ZdlPvm(ptr noundef %127, i64 noundef %132) #23 + call void @_ZdlPvm(ptr noundef %124, i64 noundef %132) #23 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i diff --git a/bench/llama.cpp/optimized/llama-vocab.ll b/bench/llama.cpp/optimized/llama-vocab.ll index e29368f4397..ebe4f452cd0 100644 --- a/bench/llama.cpp/optimized/llama-vocab.ll +++ b/bench/llama.cpp/optimized/llama-vocab.ll @@ -22651,12 +22651,13 @@ define linkonce_odr void @_ZN25llm_tokenizer_ugm_session9normalizeERKNSt7__cxx11 %45 = trunc nuw i8 %44 to i1 %not. = xor i1 %42, true %. = select i1 %not., i1 %45, i1 false - %.91 = select i1 %42, i1 %45, i1 false - %46 = getelementptr inbounds nuw i8, ptr %39, i64 81 - %47 = load i8, ptr %46, align 1, !tbaa !342, !range !125, !noundef !126 - %48 = trunc nuw i8 %47 to i1 - %49 = load i64, ptr %9, align 8, !tbaa !11 - %.not82 = icmp eq i64 %49, 0 + %46 = and i8 %41, %44 + %.91.not = icmp eq i8 %46, 0 + %47 = getelementptr inbounds nuw i8, ptr %39, i64 81 + %48 = load i8, ptr %47, align 1, !tbaa !342, !range !125, !noundef !126 + %49 = trunc nuw i8 %48 to i1 + %50 = load i64, ptr %9, align 8, !tbaa !11 + %.not82 = icmp eq i64 %50, 0 br i1 %.not82, label %._crit_edge81, label %.lr.ph80 .lr.ph80: ; preds = %.critedge @@ -22667,7 +22668,7 @@ define linkonce_odr void @_ZN25llm_tokenizer_ugm_session9normalizeERKNSt7__cxx11 br label %54 ._crit_edge81: ; preds = %._crit_edge, %.critedge - br i1 %.91, label %101, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendERKS4_.exit61 + br i1 %.91.not, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendERKS4_.exit61, label %102 54: ; preds = %.lr.ph80, %._crit_edge %.03278 = phi i64 [ 0, %.lr.ph80 ], [ %57, %._crit_edge ] @@ -22688,7 +22689,7 @@ define linkonce_odr void @_ZN25llm_tokenizer_ugm_session9normalizeERKNSt7__cxx11 %56 = load i64, ptr %53, align 8, !tbaa !422 %57 = add i64 %56, %.03278 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) #29 - %58 = icmp ult i64 %57, %49 + %58 = icmp ult i64 %57, %50 br i1 %58, label %54, label %._crit_edge81, !llvm.loop !423 59: ; preds = %54 @@ -22704,23 +22705,23 @@ define linkonce_odr void @_ZN25llm_tokenizer_ugm_session9normalizeERKNSt7__cxx11 %62 = getelementptr inbounds nuw i8, ptr %61, i64 %.03174 %63 = load i8, ptr %62, align 1, !tbaa !14 %.not = icmp ne i8 %63, 32 - br i1 %.not, label %64, label %89 - -64: ; preds = %.lr.ph - br i1 %.173, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendERKS4_.exit, label %65 + br i1 %.not, label %65, label %89 -65: ; preds = %64 - br i1 %., label %66, label %67 +65: ; preds = %.lr.ph + br i1 %.173, label %79, label %66 66: ; preds = %65 + br i1 %., label %67, label %68 + +67: ; preds = %66 %.not48 = xor i1 %.13672, true - %brmerge = or i1 %48, %.not48 + %brmerge = or i1 %49, %.not48 br i1 %brmerge, label %68, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendERKS4_.exit -67: ; preds = %65 - br i1 %48, label %68, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendERKS4_.exit +67: ; preds = %66 + br i1 %49, label %68, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendERKS4_.exit -68: ; preds = %66, %67 +68: ; preds = %67, %67 %69 = load i64, ptr %51, align 8, !tbaa !11 %70 = load i64, ptr %7, align 8, !tbaa !11 %71 = sub i64 4611686018427387903, %70 @@ -22749,27 +22750,27 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKcm.exit.i: ; pred cleanup br label %100 -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendERKS4_.exit: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKcm.exit.i, %66, %67, %64 - %.237 = phi i1 [ %.13672, %64 ], [ %.13672, %67 ], [ true, %66 ], [ true, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKcm.exit.i ] - %75 = load i64, ptr %7, align 8, !tbaa !11 - %76 = add i64 %75, 1 - %77 = load ptr, ptr %2, align 8, !tbaa !72 - %78 = icmp eq ptr %77, %52 - br i1 %78, label %79, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i - -79: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendERKS4_.exit - %80 = icmp ult i64 %75, 16 - call void @llvm.assume(i1 %80) +79: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKcm.exit.i, %67, %68, %65 + %.237 = phi i1 [ %.13672, %65 ], [ %.13672, %68 ], [ true, %67 ], [ true, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKcm.exit.i ] + %76 = load i64, ptr %7, align 8, !tbaa !11 + %77 = add i64 %76, 1 + %78 = load ptr, ptr %2, align 8, !tbaa !72 + %79 = icmp eq ptr %78, %53 + br i1 %79, label %80, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i + +80: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendERKS4_.exit + %81 = icmp ult i64 %76, 16 + call void @llvm.assume(i1 %81) br label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i: ; preds = %79, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendERKS4_.exit +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i: ; preds = %80, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendERKS4_.exit %81 = load i64, ptr %52, align 8 - %82 = select i1 %78, i64 15, i64 %81 - %83 = icmp ugt i64 %76, %82 + %82 = select i1 %79, i64 15, i64 %81 + %83 = icmp ugt i64 %77, %82 br i1 %83, label %84, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc.exit 84: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i - invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_mutateEmmPKcm(ptr noundef nonnull align 8 dereferenceable(32) %2, i64 noundef %75, i64 noundef 0, ptr noundef null, i64 noundef 1) + invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_mutateEmmPKcm(ptr noundef nonnull align 8 dereferenceable(32) %2, i64 noundef %76, i64 noundef 0, ptr noundef null, i64 noundef 1) to label %.noexc53 unwind label %.loopexit .noexc53: ; preds = %84 @@ -22777,17 +22778,17 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i: ; pred br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc.exit _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc.exit: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i, %.noexc53 - %85 = phi ptr [ %.pre.i, %.noexc53 ], [ %77, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i ] - %86 = getelementptr inbounds nuw i8, ptr %85, i64 %75 + %85 = phi ptr [ %.pre.i, %.noexc53 ], [ %78, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i ] + %86 = getelementptr inbounds nuw i8, ptr %85, i64 %76 store i8 %63, ptr %86, align 1, !tbaa !14 - store i64 %76, ptr %7, align 8, !tbaa !11 + store i64 %77, ptr %7, align 8, !tbaa !11 %87 = load ptr, ptr %2, align 8, !tbaa !72 - %88 = getelementptr inbounds nuw i8, ptr %87, i64 %76 + %88 = getelementptr inbounds nuw i8, ptr %87, i64 %77 store i8 0, ptr %88, align 1, !tbaa !14 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendERKS4_.exit57 89: ; preds = %.lr.ph - br i1 %48, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendERKS4_.exit57, label %90 + br i1 %49, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendERKS4_.exit57, label %90 90: ; preds = %89 %91 = load i64, ptr %51, align 8, !tbaa !11 diff --git a/bench/llvm/optimized/CodeGenDAGPatterns.ll b/bench/llvm/optimized/CodeGenDAGPatterns.ll index 101b5699436..2605fca72f0 100644 --- a/bench/llvm/optimized/CodeGenDAGPatterns.ll +++ b/bench/llvm/optimized/CodeGenDAGPatterns.ll @@ -14791,8 +14791,6 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc.exit342: ; preds = % %1284 = load ptr, ptr %1283, align 8, !tbaa !127 %1285 = call noundef zeroext i1 @_ZNK4llvm6Record20getValueAsBitOrUnsetENS_9StringRefERb(ptr noundef nonnull align 8 dereferenceable(192) %1284, ptr nonnull @.str.78, i64 12, ptr noundef nonnull align 1 dereferenceable(1) %9) #31 %1286 = load i8, ptr %9, align 1, !tbaa !256, !range !111, !noundef !78 - %1287 = trunc nuw i8 %1286 to i1 - %.0.demorgan.i.i343 = or i1 %1285, %1287 call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %9) #31 call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %8) #31 %1288 = load ptr, ptr %1, align 8, !tbaa !254 @@ -14800,9 +14798,10 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc.exit342: ; preds = % %1290 = load ptr, ptr %1289, align 8, !tbaa !127 %1291 = call noundef zeroext i1 @_ZNK4llvm6Record20getValueAsBitOrUnsetENS_9StringRefERb(ptr noundef nonnull align 8 dereferenceable(192) %1290, ptr nonnull @.str.78, i64 12, ptr noundef nonnull align 1 dereferenceable(1) %8) #31 %1292 = load i8, ptr %8, align 1, !tbaa !256, !range !111, !noundef !78 - %1293 = trunc nuw i8 %1292 to i1 call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %8) #31 - %1294 = or i1 %.0.demorgan.i.i343, %1293 + %1294 = or i8 %1291, %1286 + %1293 = icmp ne i8 %1292, 0 + %1294 = or i1 %1285, %1293 %1295 = xor i1 %1294, true %1296 = and i1 %1291, %1295 br i1 %1296, label %1297, label %1308 diff --git a/bench/llvm/optimized/LiteralSupport.ll b/bench/llvm/optimized/LiteralSupport.ll index c82d0f85b35..c2b18976d1e 100644 --- a/bench/llvm/optimized/LiteralSupport.ll +++ b/bench/llvm/optimized/LiteralSupport.ll @@ -3519,10 +3519,10 @@ _ZNK4llvm9StringRef11starts_withES0_.exit.thread99: ; preds = %_ZNK4llvm9StringR ] _ZN4llvmeqENS_9StringRefES0_.exit.i.i.i: ; preds = %10 - switch i8 %lhsc, label %_ZN4llvm12StringSwitchIbbE5CasesENS_13StringLiteralES2_b.exit.fold.split [ - i8 104, label %_ZN4llvm12StringSwitchIbbE5CasesENS_13StringLiteralES2_b.exit - i8 115, label %_ZN4llvm12StringSwitchIbbE5CasesENS_13StringLiteralES2_b.exit - i8 105, label %_ZN4llvm12StringSwitchIbbE5CasesENS_13StringLiteralES2_b.exit + switch i8 %lhsc, label %_ZNK4llvm9StringRef11starts_withES0_.exit7.thread100.fold.split [ + i8 104, label %_ZNK4llvm9StringRef11starts_withES0_.exit7.thread100 + i8 115, label %_ZNK4llvm9StringRef11starts_withES0_.exit7.thread100 + i8 105, label %_ZNK4llvm9StringRef11starts_withES0_.exit7.thread100 i8 100, label %_ZN4llvm12StringSwitchIbbE8CaseImplERbNS_13StringLiteralE.exit19.sink.split.i.i i8 121, label %_ZN4llvm12StringSwitchIbbE8CaseImplERbNS_13StringLiteralE.exit19.sink.split.i.i ] @@ -3530,57 +3530,46 @@ _ZN4llvmeqENS_9StringRefES0_.exit.i.i.i: ; preds = %10 _ZN4llvmeqENS_9StringRefES0_.exit.i17.i.i: ; preds = %10 %bcmp.i.i18.i.i = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(3) %1, ptr noundef nonnull dereferenceable(3) @.str.3, i64 3) %11 = icmp eq i32 %bcmp.i.i18.i.i, 0 - br i1 %11, label %_ZN4llvm12StringSwitchIbbE5CasesENS_13StringLiteralES2_b.exit, label %.thread162 + br i1 %11, label %_ZNK4llvm9StringRef11starts_withES0_.exit7.thread100, label %.thread162 _ZN4llvmeqENS_9StringRefES0_.exit.i.i.i22: ; preds = %10 %bcmp.i.i.i.i23 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(2) %1, ptr noundef nonnull dereferenceable(2) @.str.5, i64 2) %12 = icmp eq i32 %bcmp.i.i.i.i23, 0 - br i1 %12, label %_ZN4llvm12StringSwitchIbbE5CasesENS_13StringLiteralES2_b.exit, label %_ZN4llvmeqENS_9StringRefES0_.exit.i17.i.i20 + br i1 %12, label %_ZNK4llvm9StringRef11starts_withES0_.exit7.thread100, label %_ZN4llvmeqENS_9StringRefES0_.exit.i17.i.i20 _ZN4llvmeqENS_9StringRefES0_.exit.i17.i.i20: ; preds = %_ZN4llvmeqENS_9StringRefES0_.exit.i.i.i22 %bcmp.i.i18.i.i21 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(2) %1, ptr noundef nonnull dereferenceable(2) @.str.6, i64 2) %13 = icmp eq i32 %bcmp.i.i18.i.i21, 0 - br i1 %13, label %_ZN4llvm12StringSwitchIbbE5CasesENS_13StringLiteralES2_b.exit, label %_ZN4llvmeqENS_9StringRefES0_.exit.i28.i.i17 + br i1 %13, label %_ZNK4llvm9StringRef11starts_withES0_.exit7.thread100, label %_ZN4llvmeqENS_9StringRefES0_.exit.i28.i.i17 _ZN4llvmeqENS_9StringRefES0_.exit.i28.i.i17: ; preds = %_ZN4llvmeqENS_9StringRefES0_.exit.i17.i.i20 %bcmp.i.i29.i.i18 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(2) %1, ptr noundef nonnull dereferenceable(2) @.str.7, i64 2) %14 = icmp eq i32 %bcmp.i.i29.i.i18, 0 - br i1 %14, label %_ZN4llvm12StringSwitchIbbE5CasesENS_13StringLiteralES2_b.exit, label %_ZN4llvmeqENS_9StringRefES0_.exit.i.i.i39 + br i1 %14, label %_ZNK4llvm9StringRef11starts_withES0_.exit7.thread100, label %_ZN4llvmeqENS_9StringRefES0_.exit.i.i.i39 _ZN4llvmeqENS_9StringRefES0_.exit.i.i.i39: ; preds = %_ZN4llvmeqENS_9StringRefES0_.exit.i28.i.i17 %bcmp.i.i.i.i40 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(2) %1, ptr noundef nonnull dereferenceable(2) @.str.8, i64 2) %15 = icmp eq i32 %bcmp.i.i.i.i40, 0 - br i1 %15, label %_ZN4llvm12StringSwitchIbbE5CasesENS_13StringLiteralES2_b.exit, label %_ZN4llvmeqENS_9StringRefES0_.exit.i28.i.i34 + br i1 %15, label %_ZNK4llvm9StringRef11starts_withES0_.exit7.thread100, label %_ZN4llvmeqENS_9StringRefES0_.exit.i28.i.i34 _ZN4llvmeqENS_9StringRefES0_.exit.i28.i.i34: ; preds = %_ZN4llvmeqENS_9StringRefES0_.exit.i.i.i39 %bcmp.i.i29.i.i35 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(2) %1, ptr noundef nonnull dereferenceable(2) @.str.10, i64 2) %16 = icmp eq i32 %bcmp.i.i29.i.i35, 0 - %spec.select = select i1 %16, i16 257, i16 0 - br label %_ZN4llvm12StringSwitchIbbE5CasesENS_13StringLiteralES2_b.exit + br label %_ZNK4llvm9StringRef11starts_withES0_.exit7.thread100 .thread162: ; preds = %10, %_ZN4llvmeqENS_9StringRefES0_.exit.i17.i.i - br label %_ZN4llvm12StringSwitchIbbE5CasesENS_13StringLiteralES2_b.exit + br label %_ZNK4llvm9StringRef11starts_withES0_.exit7.thread100 _ZN4llvm12StringSwitchIbbE8CaseImplERbNS_13StringLiteralE.exit19.sink.split.i.i: ; preds = %_ZN4llvmeqENS_9StringRefES0_.exit.i.i.i, %_ZN4llvmeqENS_9StringRefES0_.exit.i.i.i %17 = and i64 %4, 32768 %18 = icmp ne i64 %17, 0 - %.sroa.0.0.insert.ext.i17.i.i = zext i1 %18 to i16 - %.sroa.0.0.insert.insert.i18.i.i = or disjoint i16 %.sroa.0.0.insert.ext.i17.i.i, 256 - br label %_ZN4llvm12StringSwitchIbbE5CasesENS_13StringLiteralES2_b.exit - -_ZN4llvm12StringSwitchIbbE5CasesENS_13StringLiteralES2_b.exit.fold.split: ; preds = %_ZN4llvmeqENS_9StringRefES0_.exit.i.i.i - br label %_ZN4llvm12StringSwitchIbbE5CasesENS_13StringLiteralES2_b.exit - -_ZN4llvm12StringSwitchIbbE5CasesENS_13StringLiteralES2_b.exit: ; preds = %_ZN4llvmeqENS_9StringRefES0_.exit.i.i.i, %_ZN4llvmeqENS_9StringRefES0_.exit.i.i.i, %_ZN4llvmeqENS_9StringRefES0_.exit.i.i.i, %_ZN4llvm12StringSwitchIbbE5CasesENS_13StringLiteralES2_b.exit.fold.split, %_ZN4llvmeqENS_9StringRefES0_.exit.i17.i.i, %_ZN4llvmeqENS_9StringRefES0_.exit.i28.i.i34, %_ZN4llvmeqENS_9StringRefES0_.exit.i.i.i39, %_ZN4llvmeqENS_9StringRefES0_.exit.i.i.i22, %_ZN4llvmeqENS_9StringRefES0_.exit.i17.i.i20, %_ZN4llvmeqENS_9StringRefES0_.exit.i28.i.i17, %.thread162, %_ZN4llvm12StringSwitchIbbE8CaseImplERbNS_13StringLiteralE.exit19.sink.split.i.i - %.sroa.12.3 = phi i16 [ %.sroa.0.0.insert.insert.i18.i.i, %_ZN4llvm12StringSwitchIbbE8CaseImplERbNS_13StringLiteralE.exit19.sink.split.i.i ], [ 0, %.thread162 ], [ 257, %_ZN4llvmeqENS_9StringRefES0_.exit.i28.i.i17 ], [ 257, %_ZN4llvmeqENS_9StringRefES0_.exit.i17.i.i20 ], [ 257, %_ZN4llvmeqENS_9StringRefES0_.exit.i.i.i22 ], [ 257, %_ZN4llvmeqENS_9StringRefES0_.exit.i.i.i39 ], [ %spec.select, %_ZN4llvmeqENS_9StringRefES0_.exit.i28.i.i34 ], [ 257, %_ZN4llvmeqENS_9StringRefES0_.exit.i.i.i ], [ 257, %_ZN4llvmeqENS_9StringRefES0_.exit.i17.i.i ], [ 257, %_ZN4llvmeqENS_9StringRefES0_.exit.i.i.i ], [ 257, %_ZN4llvmeqENS_9StringRefES0_.exit.i.i.i ], [ 0, %_ZN4llvm12StringSwitchIbbE5CasesENS_13StringLiteralES2_b.exit.fold.split ] - %19 = and i16 %.sroa.12.3, 256 - %20 = icmp ne i16 %19, 0 - %21 = trunc i16 %.sroa.12.3 to i1 - %.0.i = and i1 %20, %21 br label %_ZNK4llvm9StringRef11starts_withES0_.exit7.thread100 -_ZNK4llvm9StringRef11starts_withES0_.exit7.thread100: ; preds = %_ZNK4llvm9StringRef11starts_withES0_.exit.thread, %_ZNK4llvm9StringRef11starts_withES0_.exit.thread99, %_ZNK4llvm9StringRef11starts_withES0_.exit7, %3, %_ZN4llvm12StringSwitchIbbE5CasesENS_13StringLiteralES2_b.exit - %.0 = phi i1 [ %.0.i, %_ZN4llvm12StringSwitchIbbE5CasesENS_13StringLiteralES2_b.exit ], [ false, %3 ], [ true, %_ZNK4llvm9StringRef11starts_withES0_.exit7 ], [ false, %_ZNK4llvm9StringRef11starts_withES0_.exit.thread99 ], [ true, %_ZNK4llvm9StringRef11starts_withES0_.exit.thread ] +_ZNK4llvm9StringRef11starts_withES0_.exit7.thread100: ; preds = %_ZN4llvmeqENS_9StringRefES0_.exit.i.i.i + br label %_ZNK4llvm9StringRef11starts_withES0_.exit7.thread100 + +_ZNK4llvm9StringRef11starts_withES0_.exit7.thread100: ; preds = %_ZN4llvmeqENS_9StringRefES0_.exit.i.i.i, %_ZN4llvmeqENS_9StringRefES0_.exit.i.i.i, %_ZN4llvmeqENS_9StringRefES0_.exit.i.i.i, %_ZNK4llvm9StringRef11starts_withES0_.exit7.thread100.fold.split, %_ZN4llvm12StringSwitchIbbE8CaseImplERbNS_13StringLiteralE.exit19.sink.split.i.i, %.thread162, %_ZN4llvmeqENS_9StringRefES0_.exit.i28.i.i17, %_ZN4llvmeqENS_9StringRefES0_.exit.i17.i.i20, %_ZN4llvmeqENS_9StringRefES0_.exit.i.i.i22, %_ZN4llvmeqENS_9StringRefES0_.exit.i.i.i39, %_ZN4llvmeqENS_9StringRefES0_.exit.i28.i.i34, %_ZN4llvmeqENS_9StringRefES0_.exit.i17.i.i, %_ZNK4llvm9StringRef11starts_withES0_.exit.thread, %_ZNK4llvm9StringRef11starts_withES0_.exit.thread99, %_ZNK4llvm9StringRef11starts_withES0_.exit7, %3 + %.0 = phi i1 [ false, %3 ], [ true, %_ZNK4llvm9StringRef11starts_withES0_.exit7 ], [ false, %_ZNK4llvm9StringRef11starts_withES0_.exit.thread99 ], [ true, %_ZNK4llvm9StringRef11starts_withES0_.exit.thread ], [ %18, %_ZN4llvm12StringSwitchIbbE8CaseImplERbNS_13StringLiteralE.exit19.sink.split.i.i ], [ false, %.thread162 ], [ true, %_ZN4llvmeqENS_9StringRefES0_.exit.i28.i.i17 ], [ true, %_ZN4llvmeqENS_9StringRefES0_.exit.i17.i.i20 ], [ true, %_ZN4llvmeqENS_9StringRefES0_.exit.i.i.i22 ], [ true, %_ZN4llvmeqENS_9StringRefES0_.exit.i.i.i39 ], [ %16, %_ZN4llvmeqENS_9StringRefES0_.exit.i28.i.i34 ], [ true, %_ZN4llvmeqENS_9StringRefES0_.exit.i.i.i ], [ true, %_ZN4llvmeqENS_9StringRefES0_.exit.i17.i.i ], [ true, %_ZN4llvmeqENS_9StringRefES0_.exit.i.i.i ], [ true, %_ZN4llvmeqENS_9StringRefES0_.exit.i.i.i ], [ false, %_ZNK4llvm9StringRef11starts_withES0_.exit7.thread100.fold.split ] ret i1 %.0 } diff --git a/bench/llvm/optimized/MemoryOpRemark.ll b/bench/llvm/optimized/MemoryOpRemark.ll index 39c2d399a90..47d1d16ab30 100644 --- a/bench/llvm/optimized/MemoryOpRemark.ll +++ b/bench/llvm/optimized/MemoryOpRemark.ll @@ -2576,24 +2576,21 @@ _ZL10nameOrNonePKN4llvm5ValueE.exit64.thread: ; preds = %221 store ptr %232, ptr %10, align 8, !tbaa !139, !alias.scope !157 %.sroa.4.0..sroa_idx.i62 = getelementptr inbounds nuw i8, ptr %10, i64 8 store i64 %233, ptr %.sroa.4.0..sroa_idx.i62, align 8, !tbaa !49, !alias.scope !157 - %234 = getelementptr inbounds nuw i8, ptr %10, i64 16 - store i8 1, ptr %234, align 8, !tbaa !132, !alias.scope !157 - %235 = getelementptr inbounds nuw i8, ptr %10, i64 24 - store i64 %spec.select, ptr %235, align 8 - %.sroa.4.0..sroa_idx88 = getelementptr inbounds nuw i8, ptr %10, i64 32 - store i8 %225, ptr %.sroa.4.0..sroa_idx88, align 8 - br label %238 - -_ZL10nameOrNonePKN4llvm5ValueE.exit64: ; preds = %221 - %236 = getelementptr inbounds nuw i8, ptr %10, i64 16 - store i8 0, ptr %236, align 8, !tbaa !132, !alias.scope !157 - %237 = getelementptr inbounds nuw i8, ptr %10, i64 24 - store i64 %spec.select, ptr %237, align 8 + br label %_ZL10nameOrNonePKN4llvm5ValueE.exit64 + +_ZL10nameOrNonePKN4llvm5ValueE.exit64:; preds = %221, %231 + %.sink.i63 = phi i8 [ 1, %231 ], [ 0, %221 ] + %.sroa.4.0..sroa_idx88 = getelementptr inbounds nuw i8, ptr %10, i64 16 + store i8 %.sink.i63, ptr %.sroa.4.0..sroa_idx88, align 8, !tbaa !132, !alias.scope !157 + %236 = getelementptr inbounds nuw i8, ptr %10, i64 24 + store i64 %spec.select, ptr %236, align 8 %.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %10, i64 32 store i8 %225, ptr %.sroa.4.0..sroa_idx, align 8 - br i1 %226, label %238, label %264 + %237 = or i8 %.sink.i63, %225 + %.not78 = icmp eq i8 %237, 0 + br i1 %.not78, label %264, label %238 -238: ; preds = %_ZL10nameOrNonePKN4llvm5ValueE.exit64.thread, %_ZL10nameOrNonePKN4llvm5ValueE.exit64 +238: ; preds = %_ZL10nameOrNonePKN4llvm5ValueE.exit64 %239 = getelementptr inbounds nuw i8, ptr %2, i64 8 %240 = load i32, ptr %239, align 8, !tbaa !129 %241 = zext i32 %240 to i64 diff --git a/bench/llvm/optimized/PPMacroExpansion.ll b/bench/llvm/optimized/PPMacroExpansion.ll index 8e3d6b71850..51e385f8776 100644 --- a/bench/llvm/optimized/PPMacroExpansion.ll +++ b/bench/llvm/optimized/PPMacroExpansion.ll @@ -20671,14 +20671,13 @@ _ZN4llvmeqENS_9StringRefES0_.exit.i.i2033: ; preds = %_ZN4llvm12StringSwi _ZN4llvmeqENS_9StringRefES0_.exit.thread.i.i2035: ; preds = %_ZN4llvmeqENS_9StringRefES0_.exit.i.i2033 %488 = lshr i64 %485, 36 %489 = trunc i64 %488 to i16 + %.sroa.0.0.insert.insert.i.i2037 = or i16 %489, 256 br label %_ZN4llvm12StringSwitchIbbE4CaseENS_13StringLiteralEb.exit2038 _ZN4llvm12StringSwitchIbbE4CaseENS_13StringLiteralEb.exit2038: ; preds = %_ZN4llvm12StringSwitchIbbE4CaseENS_13StringLiteralEb.exit2028, %_ZN4llvmeqENS_9StringRefES0_.exit.i.i2033, %_ZN4llvmeqENS_9StringRefES0_.exit.thread.i.i2035 - %.pre-phi = phi i16 [ %486, %_ZN4llvm12StringSwitchIbbE4CaseENS_13StringLiteralEb.exit2028 ], [ 0, %_ZN4llvmeqENS_9StringRefES0_.exit.i.i2033 ], [ 256, %_ZN4llvmeqENS_9StringRefES0_.exit.thread.i.i2035 ] - %.sroa.380.187 = phi i16 [ %.sroa.380.186, %_ZN4llvm12StringSwitchIbbE4CaseENS_13StringLiteralEb.exit2028 ], [ %.sroa.380.186, %_ZN4llvmeqENS_9StringRefES0_.exit.i.i2033 ], [ %489, %_ZN4llvmeqENS_9StringRefES0_.exit.thread.i.i2035 ] - %490 = icmp ne i16 %.pre-phi, 0 - %491 = trunc i16 %.sroa.380.187 to i1 - %.0.i2039 = and i1 %490, %491 + %.pre-phi = phi i16 [ %.sroa.380.186, %_ZN4llvm12StringSwitchIbbE4CaseENS_13StringLiteralEb.exit2028 ], [ %.sroa.0.0.insert.insert.i.i2037, %_ZN4llvmeqENS_9StringRefES0_.exit.thread.i.i2035 ], [ %.sroa.380.186, %_ZN4llvmeqENS_9StringRefES0_.exit.i.i2033 ] + %490 = and i16 %.pre-phi, 257 + %490 = icmp eq i16 %490, 257 ret i1 %.0.i2039 } @@ -21479,20 +21478,17 @@ _ZN4llvmeqENS_9StringRefES0_.exit.i.i442.i.i: ; preds = %155 %bcmp.i.i.i443.i.i = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(35) %.sroa.0720.0733.i.i, ptr noundef nonnull dereferenceable(35) @.str.280, i64 35) %157 = icmp eq i32 %bcmp.i.i.i443.i.i, 0 %spec.select1131.i.i = select i1 %157, i16 %.sroa.0.0.insert.ext.i.i445.i.i, i16 %.sroa.94.43.i.i - %.pre.i.i = and i16 %spec.select1131.i.i, 256 br label %_ZN4llvm12StringSwitchIbbE4CaseENS_13StringLiteralEb.exit447.i.i _ZN4llvm12StringSwitchIbbE4CaseENS_13StringLiteralEb.exit447.i.i: ; preds = %_ZN4llvmeqENS_9StringRefES0_.exit.i.i442.i.i, %155 - %.pre-phi.i.i = phi i16 [ %.pre.i.i, %_ZN4llvmeqENS_9StringRefES0_.exit.i.i442.i.i ], [ %156, %155 ] - %.sroa.94.44.i.i = phi i16 [ %spec.select1131.i.i, %_ZN4llvmeqENS_9StringRefES0_.exit.i.i442.i.i ], [ %.sroa.94.43.i.i, %155 ] - %158 = icmp ne i16 %.pre-phi.i.i, 0 - %159 = trunc i16 %.sroa.94.44.i.i to i1 - %.0.i.i.i = and i1 %158, %159 - %160 = zext i1 %.0.i.i.i to i32 + %.pre-phi.i.i = phi i16 [ %.sroa.94.43.i.i, %155 ], [ %spec.select1131.i.i, %_ZN4llvmeqENS_9StringRefES0_.exit.i.i442.i.i ] + %158 = and i16 %.pre-phi.i.i, 257 + %158 = icmp eq i16 %158, 257 + %159 = zext i1 %.0.i.i.i to i32 br label %"_ZZN5clang12Preprocessor18ExpandBuiltinMacroERNS_5TokenEENK3$_1clES2_Rb.exit" "_ZZN5clang12Preprocessor18ExpandBuiltinMacroERNS_5TokenEENK3$_1clES2_Rb.exit": ; preds = %3, %6, %15, %_ZN4llvm12StringSwitchIbbE4CaseENS_13StringLiteralEb.exit447.i.i - %161 = phi i32 [ 0, %3 ], [ %160, %_ZN4llvm12StringSwitchIbbE4CaseENS_13StringLiteralEb.exit447.i.i ], [ 1, %6 ], [ 0, %15 ] + %161 = phi i32 [ 0, %3 ], [ %159, %_ZN4llvm12StringSwitchIbbE4CaseENS_13StringLiteralEb.exit447.i.i ], [ 1, %6 ], [ 0, %15 ] ret i32 %161 } @@ -21808,15 +21804,13 @@ _ZN4llvmeqENS_9StringRefES0_.exit.i.i84.i: ; preds = %_ZN4llvm12StringSwi _ZN4llvm12StringSwitchIbbE4CaseENS_13StringLiteralEb.exit87.i: ; preds = %_ZN4llvmeqENS_9StringRefES0_.exit.i.i84.i, %_ZN4llvm12StringSwitchIbbE4CaseENS_13StringLiteralEb.exit79.i, %_ZN4llvm12StringSwitchIbbE4CaseENS_13StringLiteralEb.exit79.thread.i, %_ZN4llvmeqENS_9StringRefES0_.exit.i.i76.i, %_ZN4llvmeqENS_9StringRefES0_.exit.i.i68.i, %_ZN4llvmeqENS_9StringRefES0_.exit.i.i60.i, %_ZN4llvmeqENS_9StringRefES0_.exit.i.i52.i, %.thread158.i, %_ZN4llvmeqENS_9StringRefES0_.exit.i.i44.i %.sroa.2226.8.i = phi i16 [ %.sroa.2226.5.i, %_ZN4llvm12StringSwitchIbbE4CaseENS_13StringLiteralEb.exit79.i ], [ 257, %_ZN4llvmeqENS_9StringRefES0_.exit.i.i44.i ], [ 257, %_ZN4llvmeqENS_9StringRefES0_.exit.i.i52.i ], [ 257, %_ZN4llvmeqENS_9StringRefES0_.exit.i.i60.i ], [ 257, %_ZN4llvmeqENS_9StringRefES0_.exit.i.i68.i ], [ 257, %_ZN4llvmeqENS_9StringRefES0_.exit.i.i76.i ], [ 0, %.thread158.i ], [ %spec.select.i, %_ZN4llvmeqENS_9StringRefES0_.exit.i.i84.i ], [ %.sroa.2226.5179.ph.i, %_ZN4llvm12StringSwitchIbbE4CaseENS_13StringLiteralEb.exit79.thread.i ] - %78 = and i16 %.sroa.2226.8.i, 256 - %79 = icmp ne i16 %78, 0 - %80 = trunc i16 %.sroa.2226.8.i to i1 - %.0.i88.i = and i1 %79, %80 - %81 = zext i1 %.0.i88.i to i32 + %78 = and i16 %.sroa.2226.8.i, 257 + %79 = icmp eq i16 %78, 257 + %79 = zext i1 %.0.i88.i to i32 br label %"_ZZN5clang12Preprocessor18ExpandBuiltinMacroERNS_5TokenEENK3$_2clES2_Rb.exit" "_ZZN5clang12Preprocessor18ExpandBuiltinMacroERNS_5TokenEENK3$_2clES2_Rb.exit": ; preds = %3, %6, %6, %14, %22, %30, %_ZN4llvm9StringRefC2EPKc.exit.i, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %54, %_ZNK4llvm9StringRef11starts_withES0_.exit.i, %_ZN4llvm12StringSwitchIbbE4CaseENS_13StringLiteralEb.exit87.i - %.0.i = phi i32 [ %53, %_ZN4llvm9StringRefC2EPKc.exit.i ], [ %37, %30 ], [ %29, %22 ], [ %21, %14 ], [ %81, %_ZN4llvm12StringSwitchIbbE4CaseENS_13StringLiteralEb.exit87.i ], [ 0, %3 ], [ 1, %_ZNK4llvm9StringRef11starts_withES0_.exit.i ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 201802, %6 ], [ 201802, %6 ] + %.0.i = phi i32 [ %53, %_ZN4llvm9StringRefC2EPKc.exit.i ], [ %37, %30 ], [ %29, %22 ], [ %21, %14 ], [ %79, %_ZN4llvm12StringSwitchIbbE4CaseENS_13StringLiteralEb.exit87.i ], [ 0, %3 ], [ 1, %_ZNK4llvm9StringRef11starts_withES0_.exit.i ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 1, %54 ], [ 201802, %6 ], [ 201802, %6 ] ret i32 %.0.i } diff --git a/bench/llvm/optimized/Process.ll b/bench/llvm/optimized/Process.ll index c0e8ba20a56..32062017356 100644 --- a/bench/llvm/optimized/Process.ll +++ b/bench/llvm/optimized/Process.ll @@ -1531,10 +1531,8 @@ _ZNK4llvm9StringRef9ends_withES0_.exit.i.i: ; preds = %_ZNK4llvm9StringRef _ZN4llvm12StringSwitchIbbE8EndsWithENS_13StringLiteralEb.exit.i: ; preds = %_ZN4llvm12StringSwitchIbbE10StartsWithENS_13StringLiteralEb.exit32.i, %_ZNK4llvm9StringRef9ends_withES0_.exit.i.i, %_ZNK4llvm9StringRef11starts_withES0_.exit.i35.i, %_ZNK4llvm9StringRef11starts_withES0_.exit.i29.i, %_ZNK4llvm9StringRef11starts_withES0_.exit.i23.i, %_ZNK4llvm9StringRef11starts_withES0_.exit.i.i %.sroa.20.7.i = phi i16 [ 257, %_ZNK4llvm9StringRef11starts_withES0_.exit.i.i ], [ 257, %_ZNK4llvm9StringRef11starts_withES0_.exit.i23.i ], [ 257, %_ZNK4llvm9StringRef11starts_withES0_.exit.i29.i ], [ %.mux.i, %_ZNK4llvm9StringRef11starts_withES0_.exit.i35.i ], [ %spec.select144.i, %_ZNK4llvm9StringRef9ends_withES0_.exit.i.i ], [ %.sroa.20.4150.i, %_ZN4llvm12StringSwitchIbbE10StartsWithENS_13StringLiteralEb.exit32.i ] - %20 = and i16 %.sroa.20.7.i, 256 - %21 = icmp ne i16 %20, 0 - %22 = trunc i16 %.sroa.20.7.i to i1 - %.0.i.i = and i1 %21, %22 + %20 = and i16 %.sroa.20.7.i, 257 + %21 = icmp eq i16 %20, 257 br label %_ZL17terminalHasColorsv.exit _ZL17terminalHasColorsv.exit: ; preds = %_ZN4llvm12StringSwitchIbbE8EndsWithENS_13StringLiteralEb.exit.i, %3, %1 diff --git a/bench/llvm/optimized/RemarkLinker.ll b/bench/llvm/optimized/RemarkLinker.ll index 2df145e59c2..9c5bf6710b5 100644 --- a/bench/llvm/optimized/RemarkLinker.ll +++ b/bench/llvm/optimized/RemarkLinker.ll @@ -2795,9 +2795,10 @@ _ZN4llvmltENS_9StringRefES0_.exit20.thread: ; preds = %.thread.i.i19, %_ZN %17 = load i8, ptr %16, align 8, !tbaa !241, !range !75, !noundef !76 %18 = trunc nuw i8 %17 to i1 %.not.i = xor i1 %15, true - %19 = select i1 %15, i1 %18, i1 false + %19 = and i8 %17, %14 + %.not44.i = icmp eq i8 %19, 0 %.mux.i = select i1 %.not.i, i1 %18, i1 false - br i1 %19, label %20, label %_ZNSt15__tuple_compareISt5tupleIJN4llvm9StringRefES2_St8optionalINS1_7remarks14RemarkLocationEEEES7_Lm2ELm3EE6__lessERKS7_SA_.exit + br i1 %.not44.i, label %_ZNSt15__tuple_compareISt5tupleIJN4llvm9StringRefES2_St8optionalINS1_7remarks14RemarkLocationEEEES7_Lm2ELm3EE6__lessERKS7_SA_.exit, label %20 20: ; preds = %_ZN4llvmltENS_9StringRefES0_.exit20.thread %21 = getelementptr inbounds nuw i8, ptr %0, i64 16 diff --git a/bench/llvm/optimized/ScalarEvolutionExpander.ll b/bench/llvm/optimized/ScalarEvolutionExpander.ll index cd0886bb771..a6577f5474f 100644 --- a/bench/llvm/optimized/ScalarEvolutionExpander.ll +++ b/bench/llvm/optimized/ScalarEvolutionExpander.ll @@ -3270,11 +3270,9 @@ _ZN4llvm8dyn_castINS_25OverflowingBinaryOperatorENS_11InstructionEEEDcPT0_.exit. %407 = call noundef ptr @_ZN4llvm8Constant12getNullValueEPNS_4TypeE(ptr noundef %406) #19 %408 = load ptr, ptr %384, align 8, !tbaa !161 %409 = call i16 @_ZN4llvm23isImpliedByDomConditionENS_12CmpPredicateEPKNS_5ValueES3_PKNS_11InstructionERKNS_10DataLayoutE(i64 39, ptr noundef nonnull %404, ptr noundef %407, ptr noundef nonnull %386, ptr noundef nonnull align 8 dereferenceable(496) %408) #19 - %410 = and i16 %409, 256 - %.not174 = icmp ne i16 %410, 0 - %411 = trunc i16 %409 to i1 - %.0.i = and i1 %.not174, %411 - br i1 %.0.i, label %412, label %413 + %410 = and i16 %409, 257 + %.not174 = icmp eq i16 %410, 257 + br i1 %.0.i, label %412, label %412 412: ; preds = %402 call void @_ZN4llvm11Instruction9setNonNegEb(ptr noundef nonnull align 8 dereferenceable(72) %386, i1 noundef zeroext true) #19 diff --git a/bench/llvm/optimized/SemaDeclCXX.ll b/bench/llvm/optimized/SemaDeclCXX.ll index c981e1df3f2..954e88ee44d 100644 --- a/bench/llvm/optimized/SemaDeclCXX.ll +++ b/bench/llvm/optimized/SemaDeclCXX.ll @@ -122711,9 +122711,11 @@ _ZNK5clang8SemaBase21SemaDiagnosticBuilderlsINS_15DeclarationNameEvEERKS1_OT_.ex br i1 %.old116, label %450, label %.thread252 450: ; preds = %447, %449, %448 - %451 = select i1 %425, i1 %428, i1 false - %.mux = select i1 %451, i32 2, i32 0 - br i1 %425, label %452, label %.thread247 + %451 = and i8 %427, %424 + %.not263.not = icmp eq i8 %451, 0 + %brmerge258.not = icmp eq i8 %424, 0 + %.mux = select i1 %.not263.not, i32 0, i32 2 + br i1 %brmerge258.not, label %.thread247, label %452 .thread247: ; preds = %450, %445 br label %452 diff --git a/bench/llvm/optimized/StackSafetyAnalysis.ll b/bench/llvm/optimized/StackSafetyAnalysis.ll index 0187b3773cf..d387221c622 100644 --- a/bench/llvm/optimized/StackSafetyAnalysis.ll +++ b/bench/llvm/optimized/StackSafetyAnalysis.ll @@ -13847,38 +13847,34 @@ _ZN12_GLOBAL__N_124StackSafetyLocalAnalysis16getSCEVAsPointerEPN4llvm5ValueE.exi %72 = call noundef ptr @_ZN4llvm15ScalarEvolution12getMinusSCEVEPKNS_4SCEVES3_NS1_11NoWrapFlagsEj(ptr noundef nonnull align 8 dereferenceable(1344) %67, ptr noundef %70, ptr noundef %71, i32 noundef 0, i32 noundef 0) #27 %73 = load ptr, ptr %53, align 8, !tbaa !557 %74 = call i16 @_ZN4llvm15ScalarEvolution19evaluatePredicateAtENS_12CmpPredicateEPKNS_4SCEVES4_PKNS_11InstructionE(ptr noundef nonnull align 8 dereferenceable(1344) %73, i64 39, ptr noundef nonnull %55, ptr noundef %66, ptr noundef %10) #27 - %75 = and i16 %74, 256 - %.not51 = icmp ne i16 %75, 0 - %76 = trunc i16 %74 to i1 - %.0.i28 = and i1 %.not51, %76 - br i1 %.0.i28, label %77, label %82 - -77: ; preds = %57 - %78 = load ptr, ptr %53, align 8, !tbaa !557 - %79 = call i16 @_ZN4llvm15ScalarEvolution19evaluatePredicateAtENS_12CmpPredicateEPKNS_4SCEVES4_PKNS_11InstructionE(ptr noundef nonnull align 8 dereferenceable(1344) %78, i64 41, ptr noundef nonnull %55, ptr noundef %72, ptr noundef %10) #27 - %80 = and i16 %79, 256 - %.not52 = icmp ne i16 %80, 0 - %81 = trunc i16 %79 to i1 - %.0.i32 = and i1 %.not52, %81 - br label %82 - -82: ; preds = %77, %57 - %83 = phi i1 [ false, %57 ], [ %.0.i32, %77 ] - %84 = getelementptr inbounds nuw i8, ptr %5, i64 24 - %85 = load i32, ptr %84, align 8, !tbaa !186 - %86 = icmp ugt i32 %85, 64 - br i1 %86, label %87, label %_ZN4llvm5APIntD2Ev.exit.i - -87: ; preds = %82 - %88 = load ptr, ptr %68, align 8, !tbaa !81 - %89 = icmp eq ptr %88, null - br i1 %89, label %_ZN4llvm5APIntD2Ev.exit.i, label %90 - -90: ; preds = %87 - call void @_ZdaPv(ptr noundef nonnull %88) #28 + %75 = and i16 %74, 257 + %.not51 = icmp eq i16 %75, 257 + br i1 %.0.i28, label %76, label %80 + +76:; preds = %57 + %77 = load ptr, ptr %53, align 8, !tbaa !557 + %78 = call i16 @_ZN4llvm15ScalarEvolution19evaluatePredicateAtENS_12CmpPredicateEPKNS_4SCEVES4_PKNS_11InstructionE(ptr noundef nonnull align 8 dereferenceable(1344) %77, i64 41, ptr noundef nonnull %55, ptr noundef %72, ptr noundef %10) #27 + %79 = and i16 %78, 257 + %.0.i32 = icmp eq i16 %79, 257 + br label %80 + +80:; preds = %76, %57 + %81 = phi i1 [ false, %57 ], [ %.0.i32, %76 ] + %82 = getelementptr inbounds nuw i8, ptr %5, i64 24 + %83 = load i32, ptr %82, align 8, !tbaa !186 + %84 = icmp ugt i32 %83, 64 + br i1 %84, label %85, label %_ZN4llvm5APIntD2Ev.exit.i + +85:; preds = %80 + %86 = load ptr, ptr %68, align 8, !tbaa !81 + %87 = icmp eq ptr %86, null + br i1 %87, label %_ZN4llvm5APIntD2Ev.exit.i, label %88 + +88:; preds = %85 + call void @_ZdaPv(ptr noundef nonnull %86) #28 br label %_ZN4llvm5APIntD2Ev.exit.i -_ZN4llvm5APIntD2Ev.exit.i: ; preds = %90, %87, %82 +_ZN4llvm5APIntD2Ev.exit.i: ; preds = %88, %85, %80 %91 = getelementptr inbounds nuw i8, ptr %5, i64 8 %92 = load i32, ptr %91, align 8, !tbaa !186 %93 = icmp ugt i32 %92, 64 @@ -13898,7 +13894,7 @@ _ZN4llvm13ConstantRangeD2Ev.exit: ; preds = %_ZN4llvm5APIntD2Ev. br label %_ZN12_GLOBAL__N_124StackSafetyLocalAnalysis16getSCEVAsPointerEPN4llvm5ValueE.exit27.thread _ZN12_GLOBAL__N_124StackSafetyLocalAnalysis16getSCEVAsPointerEPN4llvm5ValueE.exit27.thread: ; preds = %_ZNK4llvm4Type22getPointerAddressSpaceEv.exit.i25, %_ZN4llvm13ConstantRangeD2Ev.exit, %52, %_ZN12_GLOBAL__N_124StackSafetyLocalAnalysis16getSCEVAsPointerEPN4llvm5ValueE.exit27, %6, %4 - %.0 = phi i1 [ true, %4 ], [ false, %6 ], [ false, %_ZN12_GLOBAL__N_124StackSafetyLocalAnalysis16getSCEVAsPointerEPN4llvm5ValueE.exit27 ], [ %83, %_ZN4llvm13ConstantRangeD2Ev.exit ], [ false, %52 ], [ false, %_ZNK4llvm4Type22getPointerAddressSpaceEv.exit.i25 ] + %.0 = phi i1 [ true, %4 ], [ false, %6 ], [ false, %_ZN12_GLOBAL__N_124StackSafetyLocalAnalysis16getSCEVAsPointerEPN4llvm5ValueE.exit27 ], [ %81, %_ZN4llvm13ConstantRangeD2Ev.exit ], [ false, %52 ], [ false, %_ZNK4llvm4Type22getPointerAddressSpaceEv.exit.i25 ] ret i1 %.0 } diff --git a/bench/luau/optimized/Simplify.ll b/bench/luau/optimized/Simplify.ll index 78075410883..e5c65cf3665 100644 --- a/bench/luau/optimized/Simplify.ll +++ b/bench/luau/optimized/Simplify.ll @@ -1749,8 +1749,8 @@ _ZN4Luau3getINS_13SingletonTypeEEEPKT_PKNS_4TypeE.exit.i: ; preds = %63 br i1 %73, label %74, label %.critedge.thread.i 74: ; preds = %._crit_edge.i, %_ZN4Luau3getINS_13PrimitiveTypeEEEPKT_PKNS_4TypeE.exit.i - %.153.ph.i = phi i1 [ true, %_ZN4Luau3getINS_13PrimitiveTypeEEEPKT_PKNS_4TypeE.exit.i ], [ false, %._crit_edge.i ] - %.248.ph.i = phi i1 [ false, %_ZN4Luau3getINS_13PrimitiveTypeEEEPKT_PKNS_4TypeE.exit.i ], [ true, %._crit_edge.i ] + %.153.ph.i = phi i8 [ 1, %_ZN4Luau3getINS_13PrimitiveTypeEEEPKT_PKNS_4TypeE.exit.i ], [ 0, %._crit_edge.i ] + %.248.ph.i = phi i8 [ 0, %_ZN4Luau3getINS_13PrimitiveTypeEEEPKT_PKNS_4TypeE.exit.i ], [ 1, %._crit_edge.i ] %75 = load i64, ptr %18, align 8, !tbaa !14 %76 = icmp eq i64 %75, 0 br i1 %76, label %_ZN4Luau12TypeIteratorINS_9UnionTypeEE7advanceEv.exit.i.i, label %.lr.ph.i.i.i @@ -1924,8 +1924,8 @@ _ZN4Luau3getINS_13SingletonTypeEEEPKT_PKNS_4TypeE.exit124.i: ; preds = %148 br i1 %158, label %159, label %.critedge.thread.i 159: ; preds = %._crit_edge176.i, %_ZN4Luau3getINS_13PrimitiveTypeEEEPKT_PKNS_4TypeE.exit122.i - %.355.ph.i = phi i1 [ true, %_ZN4Luau3getINS_13PrimitiveTypeEEEPKT_PKNS_4TypeE.exit122.i ], [ %.153.ph.i, %._crit_edge176.i ] - %.551.ph.i = phi i1 [ %.248.ph.i, %_ZN4Luau3getINS_13PrimitiveTypeEEEPKT_PKNS_4TypeE.exit122.i ], [ true, %._crit_edge176.i ] + %.355.ph.i = phi i8 [ 1, %_ZN4Luau3getINS_13PrimitiveTypeEEEPKT_PKNS_4TypeE.exit122.i ], [ %.153.ph.i, %._crit_edge176.i ] + %.551.ph.i = phi i8 [ %.248.ph.i, %_ZN4Luau3getINS_13PrimitiveTypeEEEPKT_PKNS_4TypeE.exit122.i ], [ 1, %._crit_edge176.i ] %160 = load i64, ptr %18, align 8, !tbaa !14 %161 = icmp eq i64 %160, 0 br i1 %161, label %_ZN4Luau12TypeIteratorINS_9UnionTypeEE7advanceEv.exit.i133.i, label %.lr.ph.i.i129.i @@ -2036,9 +2036,7 @@ _ZN4Luau12TypeIteratorINS_9UnionTypeEED2Ev.exit138.i: ; preds = %216, %213 %220 = shl i64 %219, 4 call void @_ZdlPvm(ptr noundef %217, i64 noundef %220) #24 call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %5) #23 - %221 = and i1 %.355.ph.i, %.551.ph.i - %spec.select.i = and i1 %221, %.0.i.i.i - br label %.critedge.thread.i + br i1 %.0.i.i.i, label %223, label %.critedge.thread.i 222: ; preds = %_ZN4Luau12TypeIteratorINS_9UnionTypeEEppEv.exit136.i %223 = landingpad { ptr, i32 } @@ -2046,16 +2044,22 @@ _ZN4Luau12TypeIteratorINS_9UnionTypeEED2Ev.exit138.i: ; preds = %216, %213 call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %5) #23 br label %.loopexit.split-lp.i -.critedge.thread.i: ; preds = %_ZN4Luau12TypeIteratorINS_9UnionTypeEED2Ev.exit138.i, %._crit_edge176.i, %_ZN4Luau3getINS_13SingletonTypeEEEPKT_PKNS_4TypeE.exit124.i, %_ZN4Luau3getINS_13PrimitiveTypeEEEPKT_PKNS_4TypeE.exit122.i, %148, %147, %_ZN4Luau12TypeIteratorINS_9UnionTypeEED2Ev.exit113.i, %._crit_edge.i, %_ZN4Luau3getINS_13SingletonTypeEEEPKT_PKNS_4TypeE.exit.i, %_ZN4Luau3getINS_13PrimitiveTypeEEEPKT_PKNS_4TypeE.exit.i, %63, %62, %_ZN4Luau12TypeIteratorINS_9UnionTypeEED2Ev.exit.i - %.1.i = phi i1 [ false, %_ZN4Luau12TypeIteratorINS_9UnionTypeEED2Ev.exit.i ], [ false, %_ZN4Luau12TypeIteratorINS_9UnionTypeEED2Ev.exit113.i ], [ false, %._crit_edge.i ], [ false, %._crit_edge176.i ], [ false, %62 ], [ false, %147 ], [ %spec.select.i, %_ZN4Luau12TypeIteratorINS_9UnionTypeEED2Ev.exit138.i ], [ false, %_ZN4Luau3getINS_13PrimitiveTypeEEEPKT_PKNS_4TypeE.exit.i ], [ false, %_ZN4Luau3getINS_13PrimitiveTypeEEEPKT_PKNS_4TypeE.exit122.i ], [ false, %63 ], [ false, %148 ], [ false, %_ZN4Luau3getINS_13SingletonTypeEEEPKT_PKNS_4TypeE.exit.i ], [ false, %_ZN4Luau3getINS_13SingletonTypeEEEPKT_PKNS_4TypeE.exit124.i ] - %224 = getelementptr inbounds nuw i8, ptr %2, i64 32 - %225 = load ptr, ptr %224, align 8, !tbaa !23 - %.not.i.i.i139.i = icmp eq ptr %225, null - br i1 %.not.i.i.i139.i, label %_ZN4Luau12TypeIteratorINS_9UnionTypeEED2Ev.exit140.i, label %226 +.critedge.thread.i: ; preds = %_ZN4Luau12TypeIteratorINS_9UnionTypeEED2Ev.exit138.i + %224 = and i8 %.355.ph.i, 1 + %225 = and i8 %224, %.551.ph.i + %226 = icmp ne i8 %225, 0 + br label %.critedge.thread.i + +.critedge.thread.i: ; preds = %223, %_ZN4Luau12TypeIteratorINS_9UnionTypeEED2Ev.exit138.i, %._crit_edge176.i, %_ZN4Luau3getINS_13SingletonTypeEEEPKT_PKNS_4TypeE.exit124.i, %_ZN4Luau3getINS_13PrimitiveTypeEEEPKT_PKNS_4TypeE.exit122.i, %148, %147, %_ZN4Luau12TypeIteratorINS_9UnionTypeEED2Ev.exit113.i, %._crit_edge.i, %_ZN4Luau3getINS_13SingletonTypeEEEPKT_PKNS_4TypeE.exit.i, %_ZN4Luau3getINS_13PrimitiveTypeEEEPKT_PKNS_4TypeE.exit.i, %63, %62, %_ZN4Luau12TypeIteratorINS_9UnionTypeEED2Ev.exit.i + %.1.i = phi i1 [ false, %_ZN4Luau12TypeIteratorINS_9UnionTypeEED2Ev.exit.i ], [ %226, %223 ], [ false, %_ZN4Luau12TypeIteratorINS_9UnionTypeEED2Ev.exit113.i ], [ false, %_ZN4Luau12TypeIteratorINS_9UnionTypeEED2Ev.exit138.i ], [ false, %._crit_edge.i ], [ false, %._crit_edge176.i ], [ false, %62 ], [ false, %147 ], [ false, %_ZN4Luau3getINS_13PrimitiveTypeEEEPKT_PKNS_4TypeE.exit.i ], [ false, %_ZN4Luau3getINS_13PrimitiveTypeEEEPKT_PKNS_4TypeE.exit122.i ], [ false, %63 ], [ false, %148 ], [ false, %_ZN4Luau3getINS_13SingletonTypeEEEPKT_PKNS_4TypeE.exit.i ], [ false, %_ZN4Luau3getINS_13SingletonTypeEEEPKT_PKNS_4TypeE.exit124.i ] + %227 = getelementptr inbounds nuw i8, ptr %2, i64 32 + %228 = load ptr, ptr %227, align 8, !tbaa !23 + %.not.i.i.i139.i = icmp eq ptr %228, null + br i1 %.not.i.i.i139.i, label %_ZN4Luau12TypeIteratorINS_9UnionTypeEED2Ev.exit140.i, label %229 226: ; preds = %.critedge.thread.i - call void @_ZdlPv(ptr noundef nonnull %225) #23 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %224, i8 0, i64 16, i1 false) + call void @_ZdlPv(ptr noundef nonnull %228) #23 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %227, i8 0, i64 16, i1 false) br label %_ZN4Luau12TypeIteratorINS_9UnionTypeEED2Ev.exit140.i _ZN4Luau12TypeIteratorINS_9UnionTypeEED2Ev.exit140.i: ; preds = %226, %.critedge.thread.i diff --git a/bench/luau/optimized/Type.ll b/bench/luau/optimized/Type.ll index b1d559819b7..b99e2ff2f3c 100644 --- a/bench/luau/optimized/Type.ll +++ b/bench/luau/optimized/Type.ll @@ -8835,47 +8835,45 @@ _ZNKSt4lessISt4pairIPKvS2_EEclERKS3_S6_.exit.i.i.i: ; preds = %24 %41 = getelementptr inbounds nuw i8, ptr %1, i64 48 %42 = getelementptr inbounds nuw i8, ptr %1, i64 64 %43 = load i8, ptr %42, align 8, !tbaa !269, !range !119, !noundef !118 - %44 = trunc nuw i8 %43 to i1 - %45 = getelementptr inbounds nuw i8, ptr %2, i64 48 - %46 = getelementptr inbounds nuw i8, ptr %2, i64 64 - %47 = load i8, ptr %46, align 8, !tbaa !269, !range !119, !noundef !118 - %48 = trunc nuw i8 %47 to i1 - %49 = xor i1 %44, %48 - br i1 %49, label %_ZN4Luau7areSeenERSt3setISt4pairIPKvS3_ESt4lessIS4_ESaIS4_EES3_S3_.exit.thread, label %50 - -50: ; preds = %40 - %brmerge.demorgan = and i1 %44, %48 - br i1 %brmerge.demorgan, label %51, label %61 - -51: ; preds = %50 - %52 = load ptr, ptr %41, align 8, !tbaa !297 - %53 = load ptr, ptr %45, align 8, !tbaa !297 - %54 = call noundef zeroext i1 @_ZN4Luau8areEqualERSt3setISt4pairIPKvS3_ESt4lessIS4_ESaIS4_EERKNS_4TypeESC_(ptr noundef nonnull align 8 dereferenceable(48) %0, ptr noundef nonnull align 8 dereferenceable(400) %52, ptr noundef nonnull align 8 dereferenceable(400) %53) - br i1 %54, label %55, label %_ZN4Luau7areSeenERSt3setISt4pairIPKvS3_ESt4lessIS4_ESaIS4_EES3_S3_.exit.thread - -55: ; preds = %51 - %56 = getelementptr inbounds nuw i8, ptr %1, i64 56 - %57 = load ptr, ptr %56, align 8, !tbaa !299 - %58 = getelementptr inbounds nuw i8, ptr %2, i64 56 - %59 = load ptr, ptr %58, align 8, !tbaa !299 - %60 = call noundef zeroext i1 @_ZN4Luau8areEqualERSt3setISt4pairIPKvS3_ESt4lessIS4_ESaIS4_EERKNS_4TypeESC_(ptr noundef nonnull align 8 dereferenceable(48) %0, ptr noundef nonnull align 8 dereferenceable(400) %57, ptr noundef nonnull align 8 dereferenceable(400) %59) - br i1 %60, label %61, label %_ZN4Luau7areSeenERSt3setISt4pairIPKvS3_ESt4lessIS4_ESaIS4_EES3_S3_.exit.thread - -61: ; preds = %50, %55 - %62 = getelementptr inbounds nuw i8, ptr %1, i64 24 + %44 = getelementptr inbounds nuw i8, ptr %2, i64 48 + %45 = getelementptr inbounds nuw i8, ptr %2, i64 64 + %46 = load i8, ptr %45, align 8, !tbaa !269, !range !119, !noundef !118 + %.not35 = icmp eq i8 %43, %46 + br i1 %.not35, label %47, label %_ZN4Luau7areSeenERSt3setISt4pairIPKvS3_ESt4lessIS4_ESaIS4_EES3_S3_.exit.thread + +47:; preds = %40 + %brmerge.demorgan.not = icmp eq i8 %43, 0 + br i1 %brmerge.demorgan.not, label %58, label %.lr.ph.preheader + +.lr.ph.preheader: ; preds = %47 + %49 = load ptr, ptr %41, align 8, !tbaa !297 + %66 = load ptr, ptr %44, align 8, !tbaa !297 + %51 = call noundef zeroext i1 @_ZN4Luau8areEqualERSt3setISt4pairIPKvS3_ESt4lessIS4_ESaIS4_EERKNS_4TypeESC_(ptr noundef nonnull align 8 dereferenceable(48) %0, ptr noundef nonnull align 8 dereferenceable(400) %49, ptr noundef nonnull align 8 dereferenceable(400) %50) + br i1 %51, label %52, label %_ZN4Luau7areSeenERSt3setISt4pairIPKvS3_ESt4lessIS4_ESaIS4_EES3_S3_.exit.thread + +52: ; preds = %48 + %53 = getelementptr inbounds nuw i8, ptr %1, i64 56 + %54 = load ptr, ptr %53, align 8, !tbaa !299 + %55 = getelementptr inbounds nuw i8, ptr %2, i64 56 + %56 = load ptr, ptr %55, align 8, !tbaa !299 + %57 = call noundef zeroext i1 @_ZN4Luau8areEqualERSt3setISt4pairIPKvS3_ESt4lessIS4_ESaIS4_EERKNS_4TypeESC_(ptr noundef nonnull align 8 dereferenceable(48) %0, ptr noundef nonnull align 8 dereferenceable(400) %54, ptr noundef nonnull align 8 dereferenceable(400) %56) + br i1 %57, label %58, label %_ZN4Luau7areSeenERSt3setISt4pairIPKvS3_ESt4lessIS4_ESaIS4_EES3_S3_.exit.thread + +58: ; preds = %47, %52 + %59 = getelementptr inbounds nuw i8, ptr %1, i64 24 + %60 = load ptr, ptr %59, align 8, !tbaa !266 + %61 = getelementptr inbounds nuw i8, ptr %1, i64 8 + %.not3638 = icmp eq ptr %60, %61 + br i1 %.not3638, label %_ZN4Luau7areSeenERSt3setISt4pairIPKvS3_ESt4lessIS4_ESaIS4_EES3_S3_.exit.thread, label %.lr.ph.preheader + +.lr.ph.preheader: ; preds = %58 + %62 = getelementptr inbounds nuw i8, ptr %2, i64 24 %63 = load ptr, ptr %62, align 8, !tbaa !266 - %64 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %.not3537 = icmp eq ptr %63, %64 - br i1 %.not3537, label %_ZN4Luau7areSeenERSt3setISt4pairIPKvS3_ESt4lessIS4_ESaIS4_EES3_S3_.exit.thread, label %.lr.ph.preheader - -.lr.ph.preheader: ; preds = %61 - %65 = getelementptr inbounds nuw i8, ptr %2, i64 24 - %66 = load ptr, ptr %65, align 8, !tbaa !266 br label %.lr.ph .lr.ph: ; preds = %.lr.ph.preheader, %83 - %.sroa.027.039 = phi ptr [ %84, %83 ], [ %63, %.lr.ph.preheader ] - %.sroa.024.038 = phi ptr [ %85, %83 ], [ %66, %.lr.ph.preheader ] + %.sroa.027.039 = phi ptr [ %84, %83 ], [ %60, %.lr.ph.preheader ] + %.sroa.024.038 = phi ptr [ %85, %83 ], [ %63, %.lr.ph.preheader ] %67 = getelementptr inbounds nuw i8, ptr %.sroa.027.039, i64 32 %68 = getelementptr inbounds nuw i8, ptr %.sroa.024.038, i64 32 %69 = getelementptr inbounds nuw i8, ptr %.sroa.027.039, i64 40 @@ -8907,11 +8905,11 @@ _ZStneIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EESA_.exit. 83: ; preds = %_ZStneIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EESA_.exit.thread32 %84 = call noundef ptr @_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base(ptr noundef nonnull %.sroa.027.039) #37 %85 = call noundef ptr @_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base(ptr noundef nonnull %.sroa.024.038) #37 - %.not35 = icmp eq ptr %84, %64 + %.not35 = icmp eq ptr %84, %61 br i1 %.not35, label %_ZN4Luau7areSeenERSt3setISt4pairIPKvS3_ESt4lessIS4_ESaIS4_EES3_S3_.exit.thread, label %.lr.ph, !llvm.loop !300 -_ZN4Luau7areSeenERSt3setISt4pairIPKvS3_ESt4lessIS4_ESaIS4_EES3_S3_.exit.thread: ; preds = %.lr.ph, %83, %_ZStneIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EESA_.exit.thread32, %_ZStneIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EESA_.exit, %61, %24, %_ZNKSt4lessISt4pairIPKvS2_EEclERKS3_S6_.exit.i.i.i, %3, %55, %51, %40, %35, %28 - %.0 = phi i1 [ false, %28 ], [ false, %35 ], [ false, %40 ], [ false, %51 ], [ false, %55 ], [ true, %3 ], [ true, %_ZNKSt4lessISt4pairIPKvS2_EEclERKS3_S6_.exit.i.i.i ], [ true, %24 ], [ true, %61 ], [ false, %.lr.ph ], [ true, %83 ], [ false, %_ZStneIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EESA_.exit.thread32 ], [ false, %_ZStneIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EESA_.exit ] +_ZN4Luau7areSeenERSt3setISt4pairIPKvS3_ESt4lessIS4_ESaIS4_EES3_S3_.exit.thread: ; preds = %.lr.ph, %83, %_ZStneIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EESA_.exit.thread32, %_ZStneIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EESA_.exit, %58, %24, %_ZNKSt4lessISt4pairIPKvS2_EEclERKS3_S6_.exit.i.i.i, %3, %52, %.lr.ph.preheader, %40, %35, %28 + %.0 = phi i1 [ false, %28 ], [ false, %35 ], [ false, %40 ], [ false, %48 ], [ false, %52 ], [ true, %3 ], [ true, %_ZNKSt4lessISt4pairIPKvS2_EEclERKS3_S6_.exit.i.i.i ], [ true, %24 ], [ true, %58 ], [ false, %.lr.ph ], [ true, %83 ], [ false, %_ZStneIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EESA_.exit.thread32 ], [ false, %_ZStneIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EESA_.exit ] ret i1 %.0 } diff --git a/bench/luau/optimized/TypeFunctionRuntime.ll b/bench/luau/optimized/TypeFunctionRuntime.ll index 1947648ccd4..93acbf0fead 100644 --- a/bench/luau/optimized/TypeFunctionRuntime.ll +++ b/bench/luau/optimized/TypeFunctionRuntime.ll @@ -11800,100 +11800,98 @@ _ZN4Luau15seenSetContainsERSt3setISt4pairIPKvS3_ESt4lessIS4_ESaIS4_EES3_S3_.exit %36 = getelementptr inbounds nuw i8, ptr %1, i64 48 %37 = getelementptr inbounds nuw i8, ptr %1, i64 64 %38 = load i8, ptr %37, align 8, !tbaa !113, !range !101, !noundef !102 - %39 = trunc nuw i8 %38 to i1 - %40 = getelementptr inbounds nuw i8, ptr %2, i64 48 - %41 = getelementptr inbounds nuw i8, ptr %2, i64 64 - %42 = load i8, ptr %41, align 8, !tbaa !113, !range !101, !noundef !102 - %43 = trunc nuw i8 %42 to i1 - %44 = xor i1 %39, %43 - br i1 %44, label %_ZN4Luau15seenSetContainsERSt3setISt4pairIPKvS3_ESt4lessIS4_ESaIS4_EES3_S3_.exit.thread, label %45 - -45: ; preds = %35 - %brmerge.demorgan = and i1 %39, %43 - br i1 %brmerge.demorgan, label %46, label %56 - -46: ; preds = %45 - %47 = load ptr, ptr %36, align 8, !tbaa !115 - %48 = load ptr, ptr %40, align 8, !tbaa !115 - %49 = call noundef zeroext i1 @_ZN4Luau8areEqualERSt3setISt4pairIPKvS3_ESt4lessIS4_ESaIS4_EERKNS_16TypeFunctionTypeESC_(ptr noundef nonnull align 8 dereferenceable(48) %0, ptr noundef nonnull align 8 dereferenceable(152) %47, ptr noundef nonnull align 8 dereferenceable(152) %48) - br i1 %49, label %50, label %_ZN4Luau15seenSetContainsERSt3setISt4pairIPKvS3_ESt4lessIS4_ESaIS4_EES3_S3_.exit.thread - -50: ; preds = %46 - %51 = getelementptr inbounds nuw i8, ptr %1, i64 56 + %39 = getelementptr inbounds nuw i8, ptr %2, i64 48 + %40 = getelementptr inbounds nuw i8, ptr %2, i64 64 + %41 = load i8, ptr %40, align 8, !tbaa !113, !range !101, !noundef !102 + %.not48 = icmp eq i8 %38, %41 + br i1 %.not48, label %42, label %_ZN4Luau15seenSetContainsERSt3setISt4pairIPKvS3_ESt4lessIS4_ESaIS4_EES3_S3_.exit.thread + +42: ; preds = %35 + %brmerge.demorgan.not = icmp eq i8 %38, 0 + br i1 %brmerge.demorgan.not, label %53, label %43 + +43: ; preds = %42 + %44 = load ptr, ptr %36, align 8, !tbaa !115 + %45 = load ptr, ptr %39, align 8, !tbaa !115 + %46 = call noundef zeroext i1 @_ZN4Luau8areEqualERSt3setISt4pairIPKvS3_ESt4lessIS4_ESaIS4_EERKNS_16TypeFunctionTypeESC_(ptr noundef nonnull align 8 dereferenceable(48) %0, ptr noundef nonnull align 8 dereferenceable(152) %44, ptr noundef nonnull align 8 dereferenceable(152) %45) + br i1 %46, label %47, label %_ZN4Luau15seenSetContainsERSt3setISt4pairIPKvS3_ESt4lessIS4_ESaIS4_EES3_S3_.exit.thread + +47:; preds = %43 + %48 = getelementptr inbounds nuw i8, ptr %1, i64 56 + %49 = load ptr, ptr %48, align 8, !tbaa !117 + %51 = getelementptr inbounds nuw i8, ptr %2, i64 56 %52 = load ptr, ptr %51, align 8, !tbaa !117 - %53 = getelementptr inbounds nuw i8, ptr %2, i64 56 - %54 = load ptr, ptr %53, align 8, !tbaa !117 - %55 = call noundef zeroext i1 @_ZN4Luau8areEqualERSt3setISt4pairIPKvS3_ESt4lessIS4_ESaIS4_EERKNS_16TypeFunctionTypeESC_(ptr noundef nonnull align 8 dereferenceable(48) %0, ptr noundef nonnull align 8 dereferenceable(152) %52, ptr noundef nonnull align 8 dereferenceable(152) %54) - br i1 %55, label %56, label %_ZN4Luau15seenSetContainsERSt3setISt4pairIPKvS3_ESt4lessIS4_ESaIS4_EES3_S3_.exit.thread - -56: ; preds = %45, %50 - %57 = getelementptr inbounds nuw i8, ptr %1, i64 24 + %52 = call noundef zeroext i1 @_ZN4Luau8areEqualERSt3setISt4pairIPKvS3_ESt4lessIS4_ESaIS4_EERKNS_16TypeFunctionTypeESC_(ptr noundef nonnull align 8 dereferenceable(48) %0, ptr noundef nonnull align 8 dereferenceable(152) %49, ptr noundef nonnull align 8 dereferenceable(152) %51) + br i1 %52, label %53, label %_ZN4Luau15seenSetContainsERSt3setISt4pairIPKvS3_ESt4lessIS4_ESaIS4_EES3_S3_.exit.thread + +53:; preds = %42, %47 + %54 = getelementptr inbounds nuw i8, ptr %1, i64 24 + %55 = load ptr, ptr %54, align 8, !tbaa !64 + %57 = getelementptr inbounds nuw i8, ptr %1, i64 8 + %.not4950 = icmp eq ptr %55, %56 + br i1 %.not4950, label %_ZN4Luau15seenSetContainsERSt3setISt4pairIPKvS3_ESt4lessIS4_ESaIS4_EES3_S3_.exit.thread, label %.lr.ph.preheader + +.lr.ph.preheader: ; preds = %53 + %57 = getelementptr inbounds nuw i8, ptr %2, i64 24 %58 = load ptr, ptr %57, align 8, !tbaa !64 - %59 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %.not4849 = icmp eq ptr %58, %59 - br i1 %.not4849, label %_ZN4Luau15seenSetContainsERSt3setISt4pairIPKvS3_ESt4lessIS4_ESaIS4_EES3_S3_.exit.thread, label %.lr.ph.preheader - -.lr.ph.preheader: ; preds = %56 - %60 = getelementptr inbounds nuw i8, ptr %2, i64 24 - %61 = load ptr, ptr %60, align 8, !tbaa !64 br label %.lr.ph -.lr.ph: ; preds = %.lr.ph.preheader, %91 - %.sroa.031.051 = phi ptr [ %92, %91 ], [ %58, %.lr.ph.preheader ] - %.sroa.022.050 = phi ptr [ %93, %91 ], [ %61, %.lr.ph.preheader ] +.lr.ph: ; preds = %.lr.ph.preheader, %88 + %.sroa.031.051 = phi ptr [ %89, %88 ], [ %55, %.lr.ph.preheader ] + %.sroa.022.050 = phi ptr [ %90, %88 ], [ %58, %.lr.ph.preheader ] %62 = getelementptr inbounds nuw i8, ptr %.sroa.031.051, i64 64 %63 = getelementptr inbounds nuw i8, ptr %.sroa.031.051, i64 72 + %61 = load i8, ptr %60, align 8, !tbaa !110, !range !101, !noundef !102 + %62 = trunc nuw i8 %61 to i1 + %63 = getelementptr inbounds nuw i8, ptr %.sroa.022.051, i64 72 %64 = load i8, ptr %63, align 8, !tbaa !110, !range !101, !noundef !102 %65 = trunc nuw i8 %64 to i1 - %66 = getelementptr inbounds nuw i8, ptr %.sroa.022.050, i64 72 - %67 = load i8, ptr %66, align 8, !tbaa !110, !range !101, !noundef !102 - %68 = trunc nuw i8 %67 to i1 - br i1 %65, label %69, label %70 - -69: ; preds = %.lr.ph - br i1 %68, label %71, label %_ZN4Luau15seenSetContainsERSt3setISt4pairIPKvS3_ESt4lessIS4_ESaIS4_EES3_S3_.exit.thread + br i1 %62, label %66, label %67 -70: ; preds = %.lr.ph - br i1 %68, label %_ZN4Luau15seenSetContainsERSt3setISt4pairIPKvS3_ESt4lessIS4_ESaIS4_EES3_S3_.exit.thread, label %76 +66:; preds = %.lr.ph + br i1 %65, label %68, label %_ZN4Luau15seenSetContainsERSt3setISt4pairIPKvS3_ESt4lessIS4_ESaIS4_EES3_S3_.exit.thread -71: ; preds = %69 - %72 = getelementptr inbounds nuw i8, ptr %.sroa.022.050, i64 64 - %73 = load ptr, ptr %62, align 8, !tbaa !29 - %74 = load ptr, ptr %72, align 8, !tbaa !29 - %75 = call noundef zeroext i1 @_ZN4Luau8areEqualERSt3setISt4pairIPKvS3_ESt4lessIS4_ESaIS4_EERKNS_16TypeFunctionTypeESC_(ptr noundef nonnull align 8 dereferenceable(48) %0, ptr noundef nonnull align 8 dereferenceable(152) %73, ptr noundef nonnull align 8 dereferenceable(152) %74) - br i1 %75, label %76, label %_ZN4Luau15seenSetContainsERSt3setISt4pairIPKvS3_ESt4lessIS4_ESaIS4_EES3_S3_.exit.thread +69: ; preds = %.lr.ph + br i1 %65, label %_ZN4Luau15seenSetContainsERSt3setISt4pairIPKvS3_ESt4lessIS4_ESaIS4_EES3_S3_.exit.thread, label %73 -76: ; preds = %70, %71 - %77 = getelementptr inbounds nuw i8, ptr %.sroa.031.051, i64 80 - %78 = getelementptr inbounds nuw i8, ptr %.sroa.031.051, i64 88 +70: ; preds = %66 + %69 = getelementptr inbounds nuw i8, ptr %.sroa.022.051, i64 64 + %70 = load ptr, ptr %59, align 8, !tbaa !29 + %71 = load ptr, ptr %69, align 8, !tbaa !29 + %72 = call noundef zeroext i1 @_ZN4Luau8areEqualERSt3setISt4pairIPKvS3_ESt4lessIS4_ESaIS4_EERKNS_16TypeFunctionTypeESC_(ptr noundef nonnull align 8 dereferenceable(48) %0, ptr noundef nonnull align 8 dereferenceable(152) %70, ptr noundef nonnull align 8 dereferenceable(152) %71) + br i1 %72, label %73, label %_ZN4Luau15seenSetContainsERSt3setISt4pairIPKvS3_ESt4lessIS4_ESaIS4_EES3_S3_.exit.thread + +73:; preds = %69, %70 + %74 = getelementptr inbounds nuw i8, ptr %.sroa.031.052, i64 80 + %75 = getelementptr inbounds nuw i8, ptr %.sroa.031.052, i64 88 + %76 = load i8, ptr %75, align 8, !tbaa !110, !range !101, !noundef !102 + %77 = trunc nuw i8 %76 to i1 + %78 = getelementptr inbounds nuw i8, ptr %.sroa.022.051, i64 88 %79 = load i8, ptr %78, align 8, !tbaa !110, !range !101, !noundef !102 %80 = trunc nuw i8 %79 to i1 - %81 = getelementptr inbounds nuw i8, ptr %.sroa.022.050, i64 88 - %82 = load i8, ptr %81, align 8, !tbaa !110, !range !101, !noundef !102 - %83 = trunc nuw i8 %82 to i1 - br i1 %80, label %84, label %85 - -84: ; preds = %76 - br i1 %83, label %86, label %_ZN4Luau15seenSetContainsERSt3setISt4pairIPKvS3_ESt4lessIS4_ESaIS4_EES3_S3_.exit.thread - -85: ; preds = %76 - br i1 %83, label %_ZN4Luau15seenSetContainsERSt3setISt4pairIPKvS3_ESt4lessIS4_ESaIS4_EES3_S3_.exit.thread, label %91 - -86: ; preds = %84 - %87 = getelementptr inbounds nuw i8, ptr %.sroa.022.050, i64 80 - %88 = load ptr, ptr %77, align 8, !tbaa !29 - %89 = load ptr, ptr %87, align 8, !tbaa !29 - %90 = call noundef zeroext i1 @_ZN4Luau8areEqualERSt3setISt4pairIPKvS3_ESt4lessIS4_ESaIS4_EERKNS_16TypeFunctionTypeESC_(ptr noundef nonnull align 8 dereferenceable(48) %0, ptr noundef nonnull align 8 dereferenceable(152) %88, ptr noundef nonnull align 8 dereferenceable(152) %89) - br i1 %90, label %91, label %_ZN4Luau15seenSetContainsERSt3setISt4pairIPKvS3_ESt4lessIS4_ESaIS4_EES3_S3_.exit.thread + br i1 %77, label %81, label %82 + +91: ; preds = %73 + br i1 %80, label %83, label %_ZN4Luau15seenSetContainsERSt3setISt4pairIPKvS3_ESt4lessIS4_ESaIS4_EES3_S3_.exit.thread + +_ZN4Luau15seenSetContainsERSt3setISt4pairIPKvS3_ESt4lessIS4_ESaIS4_EES3_S3_.exit.thread: ; preds = %73 + br i1 %80, label %_ZN4Luau15seenSetContainsERSt3setISt4pairIPKvS3_ESt4lessIS4_ESaIS4_EES3_S3_.exit.thread, label %88 + +83: ; preds = %81 + %84 = getelementptr inbounds nuw i8, ptr %.sroa.022.051, i64 80 + %85 = load ptr, ptr %74, align 8, !tbaa !29 + %86 = load ptr, ptr %84, align 8, !tbaa !29 + %87 = call noundef zeroext i1 @_ZN4Luau8areEqualERSt3setISt4pairIPKvS3_ESt4lessIS4_ESaIS4_EERKNS_16TypeFunctionTypeESC_(ptr noundef nonnull align 8 dereferenceable(48) %0, ptr noundef nonnull align 8 dereferenceable(152) %85, ptr noundef nonnull align 8 dereferenceable(152) %86) + br i1 %87, label %88, label %_ZN4Luau15seenSetContainsERSt3setISt4pairIPKvS3_ESt4lessIS4_ESaIS4_EES3_S3_.exit.thread -91: ; preds = %85, %86 - %92 = call noundef ptr @_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base(ptr noundef nonnull %.sroa.031.051) #32 - %93 = call noundef ptr @_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base(ptr noundef nonnull %.sroa.022.050) #32 - %.not48 = icmp eq ptr %92, %59 - br i1 %.not48, label %_ZN4Luau15seenSetContainsERSt3setISt4pairIPKvS3_ESt4lessIS4_ESaIS4_EES3_S3_.exit.thread, label %.lr.ph, !llvm.loop !134 +88: ; preds = %82, %83 + %89 = call noundef ptr @_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base(ptr noundef nonnull %.sroa.031.052) #32 + %90 = call noundef ptr @_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base(ptr noundef nonnull %.sroa.022.051) #32 + %.not49 = icmp eq ptr %89, %56 + br i1 %.not49, label %_ZN4Luau15seenSetContainsERSt3setISt4pairIPKvS3_ESt4lessIS4_ESaIS4_EES3_S3_.exit.thread, label %.lr.ph, !llvm.loop !134 -_ZN4Luau15seenSetContainsERSt3setISt4pairIPKvS3_ESt4lessIS4_ESaIS4_EES3_S3_.exit.thread: ; preds = %91, %86, %84, %85, %71, %69, %70, %56, %3, %_ZN4Luau15seenSetContainsERSt3setISt4pairIPKvS3_ESt4lessIS4_ESaIS4_EES3_S3_.exit.thread42, %50, %46, %35, %29 - %.0 = phi i1 [ false, %29 ], [ false, %35 ], [ false, %46 ], [ false, %50 ], [ true, %_ZN4Luau15seenSetContainsERSt3setISt4pairIPKvS3_ESt4lessIS4_ESaIS4_EES3_S3_.exit.thread42 ], [ true, %3 ], [ true, %56 ], [ true, %91 ], [ false, %86 ], [ false, %84 ], [ false, %85 ], [ false, %71 ], [ false, %69 ], [ false, %70 ] +_ZN4Luau15seenSetContainsERSt3setISt4pairIPKvS3_ESt4lessIS4_ESaIS4_EES3_S3_.exit.thread: ; preds = %88, %83, %81, %82, %68, %66, %67, %53, %3, %_ZN4Luau15seenSetContainsERSt3setISt4pairIPKvS3_ESt4lessIS4_ESaIS4_EES3_S3_.exit.thread42, %47, %43, %35, %29 + %.0 = phi i1 [ false, %29 ], [ false, %35 ], [ false, %43 ], [ false, %47 ], [ true, %_ZN4Luau15seenSetContainsERSt3setISt4pairIPKvS3_ESt4lessIS4_ESaIS4_EES3_S3_.exit.thread42 ], [ true, %3 ], [ true, %53 ], [ true, %88 ], [ false, %83 ], [ false, %81 ], [ false, %82 ], [ false, %68 ], [ false, %66 ], [ false, %67 ] ret i1 %.0 } diff --git a/bench/mitsuba3/optimized/hdrfilm.ll b/bench/mitsuba3/optimized/hdrfilm.ll index 6e33459f6c2..30b1cdc5627 100644 --- a/bench/mitsuba3/optimized/hdrfilm.ll +++ b/bench/mitsuba3/optimized/hdrfilm.ll @@ -1871,17 +1871,21 @@ define weak_odr void @_ZN7mitsuba7HDRFilmIfN5drjit6MatrixINS_8SpectrumIfLm4EEELm .critedge: %5 = alloca %"struct.mitsuba::Point.17", align 4 %6 = load i32, ptr %2, align 4 - %7 = getelementptr inbounds nuw i8, ptr %2, i64 4 - %8 = load i32, ptr %7, align 4 - %9 = or i32 %8, %6 + %7 = icmp eq i32 %6, 0 + %8 = getelementptr inbounds nuw i8, ptr %2, i64 4 + %9 = load i32, ptr %8, align 4 %.016.lcssa.i.i = icmp eq i32 %9, 0 - %10 = tail call noalias noundef nonnull dereferenceable(152) ptr @_Znwm(i64 noundef 152) #32 - %11 = getelementptr inbounds nuw i8, ptr %1, i64 24 - %12 = select i1 %.016.lcssa.i.i, ptr %11, ptr %2 - %13 = getelementptr inbounds nuw i8, ptr %1, i64 32 - %14 = load i64, ptr %13, align 8 - %.sroa.0.0.extract.trunc = trunc i64 %14 to i32 - %.sroa.3.0.extract.shift = lshr i64 %14, 32 + %.sroa.2.0.insert.shift = select i1 %10, i16 256, i16 0 + %.sroa.050.0.insert.ext = zext i1 %7 to i16 + %.sroa.050.0.insert.insert = or disjoint i16 %.sroa.2.0.insert.shift, %.sroa.050.0.insert.ext + %.016.lcssa.i.i = icmp eq i16 %.sroa.050.0.insert.insert, 257 + %11 = tail call noalias noundef nonnull dereferenceable(152) ptr @_Znwm(i64 noundef 152) #32 + %12 = getelementptr inbounds nuw i8, ptr %1, i64 24 + %13 = select i1 %.016.lcssa.i.i, ptr %12, ptr %2 + %14 = getelementptr inbounds nuw i8, ptr %1, i64 32 + %15 = load i64, ptr %14, align 8 + %.sroa.0.0.extract.trunc = trunc i64 %15 to i32 + %.sroa.3.0.extract.shift = lshr i64 %15, 32 %.sroa.3.0.extract.trunc = trunc nuw i64 %.sroa.3.0.extract.shift to i32 %.sroa.3.0 = select i1 %.016.lcssa.i.i, i32 %.sroa.3.0.extract.trunc, i32 0 %.sroa.0.0 = select i1 %.016.lcssa.i.i, i32 %.sroa.0.0.extract.trunc, i32 0 @@ -1892,29 +1896,29 @@ define weak_odr void @_ZN7mitsuba7HDRFilmIfN5drjit6MatrixINS_8SpectrumIfLm4EEELm %17 = getelementptr inbounds nuw i8, ptr %1, i64 136 %18 = load ptr, ptr %17, align 8 %19 = load ptr, ptr %16, align 8 - %20 = ptrtoint ptr %18 to i64 %21 = ptrtoint ptr %19 to i64 - %22 = sub i64 %20, %21 - %23 = sdiv exact i64 %22, 24 - %24 = trunc i64 %23 to i32 - %25 = getelementptr inbounds nuw i8, ptr %1, i64 48 - %26 = load ptr, ptr %25, align 8 - %27 = getelementptr inbounds nuw i8, ptr %1, i64 76 - %28 = load i8, ptr %27, align 4 - %29 = trunc i8 %28 to i1 - invoke void @_ZN7mitsuba10ImageBlockIfN5drjit6MatrixINS_8SpectrumIfLm4EEELm4EEEEC1ERKNS_6VectorIjLm2EEERKNS_5PointIiLm2EEEjPKNS_20ReconstructionFilterIfS5_EEbbbbbb(ptr noundef nonnull align 8 dereferenceable(149) %10, ptr noundef nonnull align 4 dereferenceable(8) %12, ptr noundef nonnull align 4 dereferenceable(8) %5, i32 noundef %24, ptr noundef %26, i1 noundef zeroext %4, i1 noundef zeroext %3, i1 noundef zeroext false, i1 noundef zeroext %29, i1 noundef zeroext false, i1 noundef zeroext false) - to label %30 unwind label %33 - -30: ; preds = %.critedge - store ptr %10, ptr %0, align 8 - %31 = getelementptr inbounds nuw i8, ptr %10, i64 8 - %32 = atomicrmw add ptr %31, i32 1 seq_cst, align 4 + %22 = ptrtoint ptr %20 to i64 + %23 = sub i64 %21, %22 + %24 = sdiv exact i64 %23, 24 + %25 = trunc i64 %24 to i32 + %26 = getelementptr inbounds nuw i8, ptr %1, i64 48 + %27 = load ptr, ptr %26, align 8 + %28 = getelementptr inbounds nuw i8, ptr %1, i64 76 + %29 = load i8, ptr %28, align 4 + %30 = trunc i8 %29 to i1 + invoke void @_ZN7mitsuba10ImageBlockIfN5drjit6MatrixINS_8SpectrumIfLm4EEELm4EEEEC1ERKNS_6VectorIjLm2EEERKNS_5PointIiLm2EEEjPKNS_20ReconstructionFilterIfS5_EEbbbbbb(ptr noundef nonnull align 8 dereferenceable(149) %11, ptr noundef nonnull align 4 dereferenceable(8) %13, ptr noundef nonnull align 4 dereferenceable(8) %5, i32 noundef %25, ptr noundef %27, i1 noundef zeroext %4, i1 noundef zeroext %3, i1 noundef zeroext false, i1 noundef zeroext %30, i1 noundef zeroext false, i1 noundef zeroext false) + to label %31 unwind label %34 + +31:; preds = %.critedge + store ptr %11, ptr %0, align 8 + %32 = getelementptr inbounds nuw i8, ptr %11, i64 8 + %33 = atomicrmw add ptr %32, i32 1 seq_cst, align 4 ret void 33: ; preds = %.critedge %34 = landingpad { ptr, i32 } cleanup - call void @_ZdlPv(ptr noundef nonnull %10) #31 + call void @_ZdlPv(ptr noundef nonnull %11) #31 resume { ptr, i32 } %34 } diff --git a/bench/mitsuba3/optimized/imageblock.ll b/bench/mitsuba3/optimized/imageblock.ll index e25166fcf91..216172d6fc0 100644 --- a/bench/mitsuba3/optimized/imageblock.ll +++ b/bench/mitsuba3/optimized/imageblock.ll @@ -379,7 +379,10 @@ define weak_odr void @_ZN7mitsuba10ImageBlockIfN5drjit6MatrixINS_8SpectrumIfLm4E %13 = load i32, ptr %11, align 4 %14 = load i32, ptr %12, align 8 %15 = icmp eq i32 %13, %14 - %.016.lcssa.i.i = and i1 %15, %10 + %.sroa.2.0.insert.shift = select i1 %15, i16 256, i16 0 + %.sroa.0.0.insert.ext = zext i1 %10 to i16 + %.sroa.0.0.insert.insert = or disjoint i16 %.sroa.2.0.insert.shift, %.sroa.0.0.insert.ext + %.016.lcssa.i.i = icmp eq i16 %.sroa.0.0.insert.insert, 257 br i1 %.016.lcssa.i.i, label %130, label %_ZNK5drjit9ArrayBaseIjLb0EN7mitsuba6VectorIjLm2EEEE4add_ERKS3_.exit.critedge _ZNK5drjit9ArrayBaseIjLb0EN7mitsuba6VectorIjLm2EEEE4add_ERKS3_.exit.critedge: ; preds = %.critedge @@ -825,12 +828,12 @@ _ZN7mitsuba3refIKNS_20ReconstructionFilterIfN5drjit6MatrixINS_8SpectrumIfLm4EEEL .critedge109: ; preds = %70 %77 = load i32, ptr %65, align 4 - %78 = icmp ult i32 %77, %76 + %78 = icmp uge i32 %77, %76 %79 = getelementptr inbounds nuw i8, ptr %0, i64 24 %80 = load i32, ptr %79, align 8 - %81 = icmp ult i32 %80, %76 - %or.cond.not = or i1 %81, %78 - br i1 %or.cond.not, label %_ZNK5drjit9ArrayBaseIbLb1ENS_4MaskIjLm2EEEE4any_Ev.exit.thread, label %.critedge + %81 = icmp uge i32 %80, %76 + %or.cond = and i1 %78, %81 + br i1 %or.cond, label %.critedge, label %_ZNK5drjit9ArrayBaseIbLb1ENS_4MaskIjLm2EEEE4any_Ev.exit.thread _ZNK5drjit9ArrayBaseIbLb1ENS_4MaskIjLm2EEEE4any_Ev.exit.thread: ; preds = %.critedge109 %82 = load ptr, ptr @_ZN7mitsuba10ImageBlockIfN5drjit6MatrixINS_8SpectrumIfLm4EEELm4EEEE7m_classE, align 8 @@ -1407,10 +1410,10 @@ _ZNK5drjit9ArrayBaseIiLb0EN7mitsuba5PointIiLm2EEEE4neg_Ev.exit.critedge: %..i.i186.c = tail call noundef i32 @llvm.smax.i32(i32 %26, i32 0) %27 = sub i32 %21, %..i.i186 %28 = sub i32 %22, %..i.i186.c - %29 = icmp slt i32 %27, 1 - %30 = icmp slt i32 %28, 1 - %or.cond.not = or i1 %30, %29 - br i1 %or.cond.not, label %_ZNK5drjit9ArrayBaseIbLb1ENS_4MaskIiLm2EEEE4any_Ev.exit.thread, label %.preheader.lr.ph + %29 = icmp sgt i32 %27, 0 + %30 = icmp sgt i32 %28, 0 + %or.cond = and i1 %29, %30 + br i1 %or.cond, label %.preheader.lr.ph, label %_ZNK5drjit9ArrayBaseIbLb1ENS_4MaskIiLm2EEEE4any_Ev.exit.thread .preheader.lr.ph: ; preds = %_ZNK5drjit9ArrayBaseIiLb0EN7mitsuba5PointIiLm2EEEE4neg_Ev.exit.critedge %31 = trunc i64 %7 to i32 @@ -1989,7 +1992,10 @@ _ZNKSt3__119basic_ostringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEE3strB8ne1 %120 = load i32, ptr %119, align 8 %121 = icmp ult i32 %113, %116 %122 = icmp ult i32 %114, %120 - %123 = and i1 %122, %121 + %.sroa.2877.0.insert.shift = select i1 %122, i16 256, i16 0 + %.sroa.0876.0.insert.ext = zext i1 %121 to i16 + %.sroa.0876.0.insert.insert = or disjoint i16 %.sroa.2877.0.insert.shift, %.sroa.0876.0.insert.ext + %123 = icmp eq i16 %.sroa.0876.0.insert.insert, 257 %or.cond = and i1 %3, %123 %.not782 = icmp ne i32 %118, 0 %or.cond850.not = select i1 %or.cond, i1 %.not782, i1 false @@ -2071,15 +2077,15 @@ _ZNKSt3__119basic_ostringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEE3strB8ne1 %182 = load i32, ptr %181, align 4 %183 = fmul contract float %139, 2.000000e+00 %184 = call contract noundef float @llvm.ceil.f32(float %183) - %185 = icmp ugt i32 %..i.i, %..i.i494 - %186 = icmp ugt i32 %..i.i.c, %..i.i494.c + %185 = icmp ule i32 %..i.i, %..i.i494 + %186 = icmp ule i32 %..i.i.c, %..i.i494.c %187 = sub i32 %..i.i494.c, %..i.i.c %188 = add i32 %187, 1 %189 = add i32 %180, %..i.i %190 = mul i32 %182, %189 %191 = fptoui float %184 to i32 - %or.cond719.not = or i1 %186, %185 - br i1 %or.cond719.not, label %_ZNK5drjit9ArrayBaseIbLb1ENS_4MaskIjLm2EEEE4all_Ev.exit.thread, label %192 + %or.cond719 = and i1 %185, %186 + br i1 %or.cond719, label %192, label %_ZNK5drjit9ArrayBaseIbLb1ENS_4MaskIjLm2EEEE4all_Ev.exit.thread 192: ; preds = %.critedge %193 = uitofp nneg i32 %..i.i.c to float @@ -2372,7 +2378,10 @@ _ZNK5drjit9ArrayBaseIbLb1ENS_4MaskIjLm2EEEE4all_Ev.exit.critedge: ; preds = %18 %31 = load i32, ptr %30, align 8 %32 = icmp ugt i32 %24, %21 %33 = icmp ugt i32 %31, %22 - %.016.lcssa.i = and i1 %33, %32 + %.sroa.2879.0.insert.shift = select i1 %33, i16 256, i16 0 + %.sroa.0878.0.insert.ext = zext i1 %32 to i16 + %.sroa.0878.0.insert.insert = or disjoint i16 %.sroa.2879.0.insert.shift, %.sroa.0878.0.insert.ext + %.016.lcssa.i = icmp eq i16 %.sroa.0878.0.insert.insert, 257 br label %34 34: ; preds = %_ZNK5drjit9ArrayBaseIbLb1ENS_4MaskIjLm2EEEE4all_Ev.exit.critedge, %18 @@ -2423,7 +2432,10 @@ _ZNK5drjit9ArrayBaseIjLb0EN7mitsuba6VectorIjLm2EEEE4add_ERKS3_.exit.critedge: ; %60 = fcmp contract oge float %15, 0.000000e+00 %61 = shl i32 %55, 1 %62 = add i32 %61, %56 - %or.cond.not = and i1 %60, %59 + %.sroa.2883.0.insert.shift = select i1 %60, i16 256, i16 0 + %.sroa.0882.0.insert.ext = zext i1 %59 to i16 + %.sroa.0882.0.insert.insert = or disjoint i16 %.sroa.2883.0.insert.shift, %.sroa.0882.0.insert.ext + %or.cond.not = icmp eq i16 %.sroa.0882.0.insert.insert, 257 br i1 %or.cond.not, label %_ZNK5drjit9ArrayBaseIbLb1ENS_4MaskIfLm2EEEE4all_Ev.exit522.critedge, label %_ZNK5drjit9ArrayBaseIbLb1ENS_4MaskIfLm2EEEE4all_Ev.exit.thread _ZNK5drjit9ArrayBaseIbLb1ENS_4MaskIfLm2EEEE4all_Ev.exit522.critedge: ; preds = %_ZNK5drjit9ArrayBaseIjLb0EN7mitsuba6VectorIjLm2EEEE4add_ERKS3_.exit.critedge @@ -2431,12 +2443,16 @@ _ZNK5drjit9ArrayBaseIbLb1ENS_4MaskIfLm2EEEE4all_Ev.exit522.critedge: ; preds = % %64 = uitofp i32 %58 to float %65 = fcmp contract olt float %14, %63 %66 = fcmp contract olt float %15, %64 - %.016.lcssa.i521 = and i1 %66, %65 - %67 = freeze i1 %.016.lcssa.i521 + %.sroa.2885.0.insert.shift = select i1 %66, i16 256, i16 0 + %.sroa.0884.0.insert.ext = zext i1 %65 to i16 + %.sroa.0884.0.insert.insert = or disjoint i16 %.sroa.2885.0.insert.shift, %.sroa.0884.0.insert.ext + %.sroa.0444.0.copyload.fr = freeze i16 %.sroa.0884.0.insert.insert + %67 = and i16 %.sroa.0444.0.copyload.fr, 257 + %.016.lcssa.i521 = icmp eq i16 %67, 257 br label %_ZNK5drjit9ArrayBaseIbLb1ENS_4MaskIfLm2EEEE4all_Ev.exit.thread _ZNK5drjit9ArrayBaseIbLb1ENS_4MaskIfLm2EEEE4all_Ev.exit.thread: ; preds = %_ZNK5drjit9ArrayBaseIjLb0EN7mitsuba6VectorIjLm2EEEE4add_ERKS3_.exit.critedge, %_ZNK5drjit9ArrayBaseIbLb1ENS_4MaskIfLm2EEEE4all_Ev.exit522.critedge - %.fr766 = phi i1 [ %67, %_ZNK5drjit9ArrayBaseIbLb1ENS_4MaskIfLm2EEEE4all_Ev.exit522.critedge ], [ false, %_ZNK5drjit9ArrayBaseIjLb0EN7mitsuba6VectorIjLm2EEEE4add_ERKS3_.exit.critedge ] + %.fr766 = phi i1 [ %.016.lcssa.i521, %_ZNK5drjit9ArrayBaseIbLb1ENS_4MaskIfLm2EEEE4all_Ev.exit522.critedge ], [ false, %_ZNK5drjit9ArrayBaseIjLb0EN7mitsuba6VectorIjLm2EEEE4add_ERKS3_.exit.critedge ] %68 = getelementptr inbounds nuw i8, ptr %0, i64 28 %69 = load i32, ptr %68, align 4 %.not758 = icmp eq i32 %69, 0 @@ -2486,13 +2502,13 @@ _ZNK5drjit9ArrayBaseIfLb0EN7mitsuba5PointIfLm2EEEE4add_ERKS3_.exit.critedge: ; p %96 = add i32 %95, 1 %97 = mul i32 %..i.i.c, %62 %98 = add i32 %97, %..i.i - %99 = icmp ugt i32 %..i.i, %..i.i536 - %100 = icmp ugt i32 %..i.i.c, %..i.i536.c + %99 = icmp ule i32 %..i.i, %..i.i536 + %100 = icmp ule i32 %..i.i.c, %..i.i536.c %101 = sub i32 %..i.i536.c, %..i.i.c %102 = add i32 %101, 1 %103 = mul i32 %98, %74 - %or.cond700.not = or i1 %100, %99 - br i1 %or.cond700.not, label %_ZNK5drjit9ArrayBaseIbLb1ENS_4MaskIjLm2EEEE4any_Ev.exit.thread, label %104 + %or.cond700 = and i1 %99, %100 + br i1 %or.cond700, label %104, label %_ZNK5drjit9ArrayBaseIbLb1ENS_4MaskIjLm2EEEE4any_Ev.exit.thread 104: ; preds = %_ZNK5drjit9ArrayBaseIfLb0EN7mitsuba5PointIfLm2EEEE4add_ERKS3_.exit.critedge %105 = uitofp nneg i32 %..i.i.c to float diff --git a/bench/node/optimized/libnode.crypto_dh.ll b/bench/node/optimized/libnode.crypto_dh.ll index 8c938c56d14..c966d973496 100644 --- a/bench/node/optimized/libnode.crypto_dh.ll +++ b/bench/node/optimized/libnode.crypto_dh.ll @@ -7078,10 +7078,8 @@ arrayctor.loop.preheader: ; preds = %do.end %vfn19 = getelementptr inbounds nuw i8, ptr %vtable18, i64 152 %25 = load ptr, ptr %vfn19, align 8 %call20 = call i16 %25(ptr noundef nonnull align 8 dereferenceable(392) %retval.i13.0.i, ptr noundef nonnull %ret, ptr noundef nonnull %arrayidx17) #19 - %tobool.i = trunc i16 %call20 to i1 - %26 = and i16 %call20, 256 - %tobool.i53.not = icmp ne i16 %26, 0 - %or.cond.not = and i1 %tobool.i53.not, %tobool.i + %26 = and i16 %call20, 257 + %or.cond.not = icmp eq i16 %26, 257 br i1 %or.cond.not, label %if.then23, label %if.end36 if.then14: ; preds = %do.end @@ -10791,10 +10789,8 @@ arrayctor.loop.preheader: ; preds = %do.end %vfn19 = getelementptr inbounds nuw i8, ptr %vtable18, i64 152 %25 = load ptr, ptr %vfn19, align 8 %call20 = call i16 %25(ptr noundef nonnull align 8 dereferenceable(256) %retval.i13.0.i, ptr noundef nonnull %ret, ptr noundef nonnull %arrayidx17) #19 - %tobool.i = trunc i16 %call20 to i1 - %26 = and i16 %call20, 256 - %tobool.i53.not = icmp ne i16 %26, 0 - %or.cond.not = and i1 %tobool.i53.not, %tobool.i + %26 = and i16 %call20, 257 + %or.cond.not = icmp eq i16 %26, 257 br i1 %or.cond.not, label %if.then23, label %if.end36 if.then14: ; preds = %do.end @@ -12131,10 +12127,8 @@ arrayctor.loop.preheader: ; preds = %do.end %vfn19 = getelementptr inbounds nuw i8, ptr %vtable18, i64 152 %25 = load ptr, ptr %vfn19, align 8 %call20 = call i16 %25(ptr noundef nonnull align 8 dereferenceable(288) %retval.i13.0.i, ptr noundef nonnull %ret, ptr noundef nonnull %arrayidx17) #19 - %tobool.i = trunc i16 %call20 to i1 - %26 = and i16 %call20, 256 - %tobool.i53.not = icmp ne i16 %26, 0 - %or.cond.not = and i1 %tobool.i53.not, %tobool.i + %26 = and i16 %call20, 257 + %or.cond.not = icmp eq i16 %26, 257 br i1 %or.cond.not, label %if.then23, label %if.end36 if.then14: ; preds = %do.end diff --git a/bench/opencv/optimized/dxt.ll b/bench/opencv/optimized/dxt.ll index 5427bcee725..22704a4025b 100644 --- a/bench/opencv/optimized/dxt.ll +++ b/bench/opencv/optimized/dxt.ll @@ -516,10 +516,9 @@ define linkonce_odr hidden void @_ZN2cv15OcvDftBasicImpl4initEiiiiPb(ptr noundef br label %86 84: ; preds = %.thread - %85 = trunc i32 %4 to i1 - %.not51 = xor i1 %85, true - %brmerge = or i1 %.not46, %.not51 - br i1 %brmerge, label %139, label %86 + %85 = and i32 %4, 33 + %brmerge.not = icmp eq i32 %85, 33 + br i1 %brmerge.not, label %86, label %139 86: ; preds = %.loopexit, %.thread64, %84 %87 = phi i1 [ false, %84 ], [ %83, %.loopexit ], [ true, %.thread64 ] diff --git a/bench/openjdk/optimized/cdsConfig.ll b/bench/openjdk/optimized/cdsConfig.ll index 6950749daf5..35128a65e57 100644 --- a/bench/openjdk/optimized/cdsConfig.ll +++ b/bench/openjdk/optimized/cdsConfig.ll @@ -121,15 +121,16 @@ _ZN9CDSConfig31is_logging_lambda_form_invokersEv.exit.thread: ; preds = %_ZN15Cl %8 = phi i32 [ 4, %_ZN9CDSConfig31is_logging_lambda_form_invokersEv.exit.thread ], [ 0, %_ZN9CDSConfig31is_logging_lambda_form_invokersEv.exit ], [ 0, %_ZN15ClassListWriter10is_enabledEv.exit.i ] %9 = trunc i8 %1 to i1 %10 = select i1 %9, i32 2, i32 0 - %11 = or i1 %9, %3 - %12 = zext i1 %11 to i32 - %13 = or disjoint i32 %10, %12 - %14 = or disjoint i32 %13, %8 - %15 = load i8, ptr @UseSharedSpaces, align 1 - %.not = icmp eq i8 %15, 0 - %16 = select i1 %.not, i32 0, i32 8 - %17 = or disjoint i32 %14, %16 - ret i32 %17 + %11 = or i8 %.fr, %1 + %12 = and i8 %11, 1 + %13 = zext nneg i8 %12 to i32 + %14 = or disjoint i32 %10, %13 + %15 = or disjoint i32 %14, %8 + %16 = load i8, ptr @UseSharedSpaces, align 1 + %.not = icmp eq i8 %16, 0 + %17 = select i1 %.not, i32 0, i32 8 + %18 = or disjoint i32 %15, %17 + ret i32 %18 } ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(read, inaccessiblemem: none) uwtable diff --git a/bench/openjdk/optimized/parallelScavengeHeap.ll b/bench/openjdk/optimized/parallelScavengeHeap.ll index f0124572946..37c1efd2c37 100644 --- a/bench/openjdk/optimized/parallelScavengeHeap.ll +++ b/bench/openjdk/optimized/parallelScavengeHeap.ll @@ -904,9 +904,10 @@ _ZN11MutexLockerD2Ev.exit: ; preds = %_ZN8GCLocker22is_ac %66 = load i8, ptr %65, align 4 %67 = getelementptr inbounds nuw i8, ptr %0, i64 33 %68 = load i8, ptr %67, align 1 - %brmerge.demorgan60 = and i8 %68, %66 - %brmerge.demorgan = trunc i8 %brmerge.demorgan60 to i1 - br i1 %brmerge.demorgan, label %69, label %78 + %brmerge.demorgan60 = and i8 %66, 1 + %70 = and i8 %brmerge.demorgan60, %68 + %brmerge.demorgan.not = icmp eq i8 %70, 0 + br i1 %brmerge.demorgan.not, label %80, label %71 69: ; preds = %63 store i8 1, ptr %3, align 1 diff --git a/bench/openjdk/optimized/serviceThread.ll b/bench/openjdk/optimized/serviceThread.ll index 64929b9b397..f152d70d541 100644 --- a/bench/openjdk/optimized/serviceThread.ll +++ b/bench/openjdk/optimized/serviceThread.ll @@ -162,10 +162,9 @@ _ZN13MonitorLockerC2EP7MonitorN5Mutex18SafepointCheckFlagE.exit: ; preds = %_ZN1 17: ; preds = %15, %_ZN13MonitorLockerC2EP7MonitorN5Mutex18SafepointCheckFlagE.exit %18 = phi i1 [ false, %_ZN13MonitorLockerC2EP7MonitorN5Mutex18SafepointCheckFlagE.exit ], [ %16, %15 ] %19 = call noundef zeroext i1 @_ZN23JvmtiDeferredEventQueue10has_eventsEv(ptr noundef nonnull align 8 dereferenceable(16) @_ZN13ServiceThread20_jvmti_service_queueE) #5 - %20 = or i1 %18, %19 - %21 = load i8, ptr @UseNotificationThread, align 1 - %22 = trunc i8 %21 to i1 - br i1 %22, label %26, label %23 + %20 = load i8, ptr @UseNotificationThread, align 1 + %21 = trunc i8 %20 to i1 + br i1 %21, label %25, label %22 23: ; preds = %17 %24 = call noundef zeroext i1 @_ZN10GCNotifier9has_eventEv() #5 @@ -177,25 +176,26 @@ _ZN13MonitorLockerC2EP7MonitorN5Mutex18SafepointCheckFlagE.exit: ; preds = %_ZN1 26: ; preds = %23, %17 %.pre-phi = phi i1 [ %25, %23 ], [ false, %17 ] %27 = phi i1 [ %24, %23 ], [ false, %17 ] - %28 = or i1 %20, %27 - %29 = load i8, ptr @_ZN11DCmdFactory29_has_pending_jmx_notificationE, align 1 - %30 = trunc i8 %29 to i1 - %31 = select i1 %.pre-phi, i1 %30, i1 false - %32 = or i1 %28, %31 - %33 = call noundef zeroext i1 @_ZN11StringTable8has_workEv() #5 - %34 = or i1 %33, %32 - %35 = call noundef zeroext i1 @_ZN11SymbolTable8has_workEv() #5 - %36 = or i1 %35, %34 - %37 = call noundef zeroext i1 @_ZN16FinalizerService8has_workEv() #5 - %38 = or i1 %37, %36 - %39 = call noundef zeroext i1 @_ZN19ResolvedMethodTable8has_workEv() #5 - %40 = or i1 %39, %38 - %41 = load volatile i8, ptr @_ZN13ThreadIdTable9_has_workE, align 1 - %42 = trunc i8 %41 to i1 - %43 = or i1 %40, %42 - %44 = load i8, ptr @_ZN26ProtectionDomainCacheTable13_dead_entriesE, align 1 - %45 = trunc i8 %44 to i1 - %46 = or i1 %43, %45 + %27 = load i8, ptr @_ZN11DCmdFactory29_has_pending_jmx_notificationE, align 1 + %28 = trunc i8 %27 to i1 + %29 = select i1 %.pre-phi, i1 %28, i1 false + %30 = call noundef zeroext i1 @_ZN11StringTable8has_workEv() #5 + %31 = call noundef zeroext i1 @_ZN11SymbolTable8has_workEv() #5 + %33 = call noundef zeroext i1 @_ZN16FinalizerService8has_workEv() #5 + %33 = call noundef zeroext i1 @_ZN19ResolvedMethodTable8has_workEv() #5 + %34 = load volatile i8, ptr @_ZN13ThreadIdTable9_has_workE, align 1 + %35 = load i8, ptr @_ZN26ProtectionDomainCacheTable13_dead_entriesE, align 1 + %36 = or i8 %35, %34 + %37 = and i8 %36, 1 + %38 = icmp ne i8 %37, 0 + %40 = or i1 %19, %38 + %40 = or i1 %18, %39 + %41 = or i1 %26, %40 + %43 = or i1 %29, %41 + %43 = or i1 %30, %42 + %44 = or i1 %31, %43 + %46 = or i1 %32, %44 + %46 = or i1 %33, %45 %47 = call noundef zeroext i1 @_ZN10OopStorage26has_cleanup_work_and_resetEv() #5 %48 = or i1 %47, %46 %49 = load ptr, ptr @_ZN10JavaThread16_oop_handle_listE, align 8 @@ -231,7 +231,9 @@ _ZN13MonitorLocker4waitEl.exit: ; preds = %_ZN20ClassLoaderDat br label %_ZN13MonitorLockerC2EP7MonitorN5Mutex18SafepointCheckFlagE.exit, !llvm.loop !7 68: ; preds = %_ZN20ClassLoaderDataGraph33should_clean_metaspaces_and_resetEv.exit - br i1 %19, label %69, label %70 + %69 = trunc i8 %34 to i1 + %70 = trunc i8 %35 to i1 + br i1 %19, label %71, label %72 69: ; preds = %68 call void @_ZN23JvmtiDeferredEventQueue7dequeueEv(ptr dead_on_unwind nonnull writable sret(%class.JvmtiDeferredEvent) align 8 %4, ptr noundef nonnull align 8 dereferenceable(16) @_ZN13ServiceThread20_jvmti_service_queueE) #5 @@ -259,21 +261,21 @@ _ZN13MonitorLockerD2Ev.exit: ; preds = %70, %71 74: ; preds = %_ZN13MonitorLockerD2Ev.exit %75 = load volatile i32, ptr @_ZN20SafepointSynchronize6_stateE, align 4 %.not5.i.i = icmp eq i32 %75, 0 - br i1 %.not5.i.i, label %76, label %81 - -76: ; preds = %74 - %77 = call noundef zeroext i1 @_ZN14HandshakeState13has_operationEbb(ptr noundef nonnull align 8 dereferenceable(131) %8, i1 noundef zeroext false, i1 noundef zeroext false) #5 - br i1 %77, label %81, label %78 + br i1 %.not5.i.i, label %78, label %81 78: ; preds = %76 - %79 = call noundef zeroext i1 @_ZN17StackWatermarkSet18processing_startedEP10JavaThread(ptr noundef nonnull %0) #5 - br i1 %79, label %80, label %81 + %79 = call noundef zeroext i1 @_ZN14HandshakeState13has_operationEbb(ptr noundef nonnull align 8 dereferenceable(131) %8, i1 noundef zeroext false, i1 noundef zeroext false) #5 + br i1 %79, label %83, label %80 80: ; preds = %78 + %81 = call noundef zeroext i1 @_ZN17StackWatermarkSet18processing_startedEP10JavaThread(ptr noundef nonnull %0) #5 + br i1 %81, label %82, label %83 + +82: ; preds = %80 call void @_ZN18SafepointMechanism18update_poll_valuesEP10JavaThread(ptr noundef nonnull %0) #5 br label %_ZN25ThreadBlockInVMPreprocessIFvP10JavaThreadEED2Ev.exit -81: ; preds = %78, %76, %74 +81: ; preds = %80, %78, %76 %82 = load volatile i64, ptr %7, align 8 call void asm sideeffect "", "~{memory},~{dirflag},~{fpsr},~{flags}"() #5, !srcloc !6 %83 = and i64 %82, 1 @@ -284,40 +286,40 @@ _ZN13MonitorLockerD2Ev.exit: ; preds = %70, %71 call void @_ZN18SafepointMechanism7processEP10JavaThreadbb(ptr noundef nonnull %0, i1 noundef zeroext false, i1 noundef zeroext false) #5 br label %_ZN25ThreadBlockInVMPreprocessIFvP10JavaThreadEED2Ev.exit -_ZN25ThreadBlockInVMPreprocessIFvP10JavaThreadEED2Ev.exit: ; preds = %_ZN13MonitorLockerD2Ev.exit, %80, %81, %84 - br i1 %33, label %85, label %86 +_ZN25ThreadBlockInVMPreprocessIFvP10JavaThreadEED2Ev.exit: ; preds = %_ZN13MonitorLockerD2Ev.exit, %82, %81, %84 + br i1 %30, label %85, label %88 85: ; preds = %_ZN25ThreadBlockInVMPreprocessIFvP10JavaThreadEED2Ev.exit call void @_ZN11StringTable18do_concurrent_workEP10JavaThread(ptr noundef nonnull %0) #5 - br label %86 - -86: ; preds = %85, %_ZN25ThreadBlockInVMPreprocessIFvP10JavaThreadEED2Ev.exit - br i1 %35, label %87, label %88 - -87: ; preds = %86 - call void @_ZN11SymbolTable18do_concurrent_workEP10JavaThread(ptr noundef nonnull %0) #5 br label %88 -88: ; preds = %87, %86 - br i1 %37, label %89, label %90 +88: ; preds = %87, %_ZN25ThreadBlockInVMPreprocessIFvP10JavaThreadEED2Ev.exit + br i1 %31, label %89, label %90 89: ; preds = %88 - call void @_ZN16FinalizerService18do_concurrent_workEP10JavaThread(ptr noundef nonnull %0) #5 + call void @_ZN11SymbolTable18do_concurrent_workEP10JavaThread(ptr noundef nonnull %0) #5 br label %90 90: ; preds = %89, %88 - br i1 %19, label %91, label %93 + br i1 %32, label %91, label %92 91: ; preds = %90 - %92 = load ptr, ptr @_ZN13ServiceThread12_jvmti_eventE, align 8 - call void @_ZN18JvmtiDeferredEvent4postEv(ptr noundef nonnull align 8 dereferenceable(32) %92) #5 + call void @_ZN16FinalizerService18do_concurrent_workEP10JavaThread(ptr noundef nonnull %0) #5 + br label %92 + +92: ; preds = %91, %90 + br i1 %19, label %93, label %95 + +93: ; preds = %92 + %94 = load ptr, ptr @_ZN13ServiceThread12_jvmti_eventE, align 8 + call void @_ZN18JvmtiDeferredEvent4postEv(ptr noundef nonnull align 8 dereferenceable(32) %94) #5 store ptr null, ptr @_ZN13ServiceThread12_jvmti_eventE, align 8 br label %93 -93: ; preds = %91, %90 +93: ; preds = %93, %92 %94 = load i8, ptr @UseNotificationThread, align 1 %95 = trunc i8 %94 to i1 - br i1 %95, label %104, label %96 + br i1 %95, label %106, label %96 96: ; preds = %93 br i1 %18, label %97, label %98 @@ -336,75 +338,75 @@ _ZN25ThreadBlockInVMPreprocessIFvP10JavaThreadEED2Ev.exit: ; preds = %_ZN13Monit br i1 %.not, label %101, label %121 101: ; preds = %99, %98 - br i1 %31, label %102, label %104 + br i1 %29, label %102, label %106 102: ; preds = %101 call void @_ZN11DCmdFactory17send_notificationEP10JavaThread(ptr noundef %1) #5 %103 = load ptr, ptr %9, align 8 %.not34 = icmp eq ptr %103, null - br i1 %.not34, label %104, label %121 + br i1 %.not34, label %106, label %121 -104: ; preds = %101, %102, %93 - br i1 %39, label %105, label %106 - -105: ; preds = %104 - call void @_ZN19ResolvedMethodTable18do_concurrent_workEP10JavaThread(ptr noundef nonnull %0) #5 - br label %106 - -106: ; preds = %105, %104 - br i1 %42, label %107, label %108 +106: ; preds = %103, %104, %95 + br i1 %33, label %107, label %108 107: ; preds = %106 - call void @_ZN13ThreadIdTable18do_concurrent_workEP10JavaThread(ptr noundef nonnull %0) #5 + call void @_ZN19ResolvedMethodTable18do_concurrent_workEP10JavaThread(ptr noundef nonnull %0) #5 br label %108 108: ; preds = %107, %106 - br i1 %45, label %109, label %110 + br i1 %69, label %109, label %110 109: ; preds = %108 - call void @_ZN26ProtectionDomainCacheTable6unlinkEv() #5 + call void @_ZN13ThreadIdTable18do_concurrent_workEP10JavaThread(ptr noundef nonnull %0) #5 br label %110 110: ; preds = %109, %108 + br i1 %70, label %111, label %112 + +111: ; preds = %110 + call void @_ZN26ProtectionDomainCacheTable6unlinkEv() #5 + br label %112 + +112: ; preds = %111, %110 br i1 %47, label %.preheader, label %_ZL19cleanup_oopstoragesv.exit -.preheader: ; preds = %110, %.preheader - %.sroa.0.07.i = phi i32 [ %113, %.preheader ], [ 0, %110 ] +.preheader: ; preds = %112, %.preheader + %.sroa.0.07.i = phi i32 [ %113, %.preheader ], [ 0, %112 ] %111 = call noundef ptr @_ZN13OopStorageSet11get_storageINS_2IdEEEP10OopStorageT_(i32 noundef %.sroa.0.07.i) #5 %112 = call noundef zeroext i1 @_ZN10OopStorage19delete_empty_blocksEv(ptr noundef nonnull align 8 dereferenceable(126) %111) #5 %113 = add nuw nsw i32 %.sroa.0.07.i, 1 %.not.i = icmp eq i32 %113, 15 br i1 %.not.i, label %_ZL19cleanup_oopstoragesv.exit, label %.preheader -_ZL19cleanup_oopstoragesv.exit: ; preds = %.preheader, %110 - br i1 %50, label %114, label %115 +_ZL19cleanup_oopstoragesv.exit: ; preds = %.preheader, %112 + br i1 %50, label %114, label %117 114: ; preds = %_ZL19cleanup_oopstoragesv.exit call void @_ZN10JavaThread19release_oop_handlesEv() #5 - br label %115 - -115: ; preds = %114, %_ZL19cleanup_oopstoragesv.exit - br i1 %60, label %116, label %117 - -116: ; preds = %115 - call void @_ZN20ClassLoaderDataGraph30safepoint_and_clean_metaspacesEv() #5 br label %117 -117: ; preds = %116, %115 - br i1 %62, label %118, label %119 +117: ; preds = %116, %_ZL19cleanup_oopstoragesv.exit + br i1 %60, label %118, label %119 118: ; preds = %117 - call void @_ZN11JvmtiTagMap28flush_all_object_free_eventsEv() #5 + call void @_ZN20ClassLoaderDataGraph30safepoint_and_clean_metaspacesEv() #5 br label %119 119: ; preds = %118, %117 - br i1 %64, label %120, label %.backedge + br i1 %62, label %120, label %121 120: ; preds = %119 + call void @_ZN11JvmtiTagMap28flush_all_object_free_eventsEv() #5 + br label %121 + +121: ; preds = %120, %119 + br i1 %64, label %122, label %.backedge + +122: ; preds = %121 call void @_ZN11OopMapCache7cleanupEv() #5 br label %.backedge -.backedge: ; preds = %120, %119 +.backedge: ; preds = %122, %121 br label %10, !llvm.loop !10 121: ; preds = %102, %99 diff --git a/bench/openspiel/optimized/dark_chess.ll b/bench/openspiel/optimized/dark_chess.ll index 967873dab02..c19232350c6 100644 --- a/bench/openspiel/optimized/dark_chess.ll +++ b/bench/openspiel/optimized/dark_chess.ll @@ -4879,14 +4879,9 @@ define void @_ZNK10open_spiel10dark_chess13DarkChessGame12MakeObserverEN4absl7de %.sroa.0.4..sroa.0.4..sroa.0.4..sroa.0.4..val.i = load i64, ptr %.sroa.0.4..sroa_idx8, align 4 %.sroa.0.0.i = select i1 %23, i64 %.sroa.0.4..sroa.0.4..sroa.0.4..sroa.0.4..val.i, i64 4294967297 store i64 %.sroa.0.0.i, ptr %9, align 8 - %24 = trunc i64 %.sroa.0.0.i to i1 - %25 = and i64 %.sroa.0.0.i, -4294967040 - %26 = icmp eq i64 %25, 4294967296 - %27 = and i1 %26, %24 - %28 = and i64 %.sroa.0.0.i, 256 - %.not.i = icmp eq i64 %28, 0 - %or.cond = or i1 %.not.i, %27 - br i1 %or.cond, label %_ZNSt10shared_ptrIN10open_spiel10dark_chess17DarkChessObserverEED2Ev.exit, label %33 + %24 = and i64 %.sroa.0.0.i, 256 + %or.cond = icmp eq i64 %24, 0 + br i1 %or.cond, label %_ZNSt10shared_ptrIN10open_spiel10dark_chess17DarkChessObserverEED2Ev.exit, label %29 _ZNSt10shared_ptrIN10open_spiel10dark_chess17DarkChessObserverEED2Ev.exit: ; preds = %22 call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %6) @@ -11149,23 +11144,20 @@ _ZSt18__allocate_guardedISaISt23_Sp_counted_ptr_inplaceIN10open_spiel10dark_ches store ptr getelementptr inbounds nuw inrange(-16, 40) (i8, ptr @_ZTVSt23_Sp_counted_ptr_inplaceIN10open_spiel10dark_chess17DarkChessObserverESaIvELN9__gnu_cxx12_Lock_policyE2EE, i64 16), ptr %6, align 8 %9 = getelementptr inbounds nuw i8, ptr %6, i64 16 %.sroa.0.0.copyload.i.i.i = load i64, ptr %3, align 4 - %10 = trunc i64 %.sroa.0.0.copyload.i.i.i to i1 - %11 = and i64 %.sroa.0.0.copyload.i.i.i, -4294967040 - %12 = icmp eq i64 %11, 4294967296 - %13 = and i1 %12, %10 - %14 = and i64 %.sroa.0.0.copyload.i.i.i, 256 - %.not.i.i.i.i.i = icmp eq i64 %14, 0 + %10 = and i64 %.sroa.0.0.copyload.i.i.i, -4294967039 + %11 = icmp eq i64 %10, 4294967297 + %12 = and i64 %.sroa.0.0.copyload.i.i.i, 256 + %.not.i.i.i.i.i = icmp eq i64 %12, 0 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %4) call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) - %15 = zext i1 %13 to i8 + %15 = zext i1 %11 to i8 %16 = zext i1 %.not.i.i.i.i.i to i8 store ptr getelementptr inbounds nuw inrange(-16, 32) (i8, ptr @_ZTVN10open_spiel8ObserverE, i64 16), ptr %9, align 8 %17 = getelementptr inbounds nuw i8, ptr %6, i64 24 store i8 %15, ptr %17, align 8 %18 = getelementptr inbounds nuw i8, ptr %6, i64 25 store i8 %16, ptr %18, align 1 - %19 = or i1 %.not.i.i.i.i.i, %13 - br i1 %19, label %_ZNSt15__allocated_ptrISaISt23_Sp_counted_ptr_inplaceIN10open_spiel10dark_chess17DarkChessObserverESaIvELN9__gnu_cxx12_Lock_policyE2EEEED2Ev.exit, label %.noexc.i + br i1 %.not.i.i.i.i.i, label %_ZNSt15__allocated_ptrISaISt23_Sp_counted_ptr_inplaceIN10open_spiel10dark_chess17DarkChessObserverESaIvELN9__gnu_cxx12_Lock_policyE2EEEED2Ev.exit, label %.noexc.i .noexc.i: ; preds = %_ZSt18__allocate_guardedISaISt23_Sp_counted_ptr_inplaceIN10open_spiel10dark_chess17DarkChessObserverESaIvELN9__gnu_cxx12_Lock_policyE2EEEESt15__allocated_ptrIT_ERSA_.exit store i32 326, ptr %5, align 4 @@ -13974,23 +13966,20 @@ _ZSt18__allocate_guardedISaISt23_Sp_counted_ptr_inplaceIN10open_spiel10dark_ches store ptr getelementptr inbounds nuw inrange(-16, 40) (i8, ptr @_ZTVSt23_Sp_counted_ptr_inplaceIN10open_spiel10dark_chess17DarkChessObserverESaIvELN9__gnu_cxx12_Lock_policyE2EE, i64 16), ptr %6, align 8 %9 = getelementptr inbounds nuw i8, ptr %6, i64 16 %.sroa.0.0.copyload.i.i.i = load i64, ptr %3, align 4 - %10 = trunc i64 %.sroa.0.0.copyload.i.i.i to i1 - %11 = and i64 %.sroa.0.0.copyload.i.i.i, -4294967040 - %12 = icmp eq i64 %11, 4294967296 - %13 = and i1 %12, %10 - %14 = and i64 %.sroa.0.0.copyload.i.i.i, 256 - %.not.i.i.i.i.i = icmp eq i64 %14, 0 + %10 = and i64 %.sroa.0.0.copyload.i.i.i, -4294967039 + %11 = icmp eq i64 %10, 4294967297 + %12 = and i64 %.sroa.0.0.copyload.i.i.i, 256 + %.not.i.i.i.i.i = icmp eq i64 %12, 0 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %4) call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) - %15 = zext i1 %13 to i8 + %15 = zext i1 %11 to i8 %16 = zext i1 %.not.i.i.i.i.i to i8 store ptr getelementptr inbounds nuw inrange(-16, 32) (i8, ptr @_ZTVN10open_spiel8ObserverE, i64 16), ptr %9, align 8 %17 = getelementptr inbounds nuw i8, ptr %6, i64 24 store i8 %15, ptr %17, align 8 %18 = getelementptr inbounds nuw i8, ptr %6, i64 25 store i8 %16, ptr %18, align 1 - %19 = or i1 %.not.i.i.i.i.i, %13 - br i1 %19, label %_ZNSt15__allocated_ptrISaISt23_Sp_counted_ptr_inplaceIN10open_spiel10dark_chess17DarkChessObserverESaIvELN9__gnu_cxx12_Lock_policyE2EEEED2Ev.exit, label %.noexc.i + br i1 %.not.i.i.i.i.i, label %_ZNSt15__allocated_ptrISaISt23_Sp_counted_ptr_inplaceIN10open_spiel10dark_chess17DarkChessObserverESaIvELN9__gnu_cxx12_Lock_policyE2EEEED2Ev.exit, label %.noexc.i .noexc.i: ; preds = %_ZSt18__allocate_guardedISaISt23_Sp_counted_ptr_inplaceIN10open_spiel10dark_chess17DarkChessObserverESaIvELN9__gnu_cxx12_Lock_policyE2EEEESt15__allocated_ptrIT_ERSA_.exit store i32 326, ptr %5, align 4 diff --git a/bench/openspiel/optimized/goofspiel.ll b/bench/openspiel/optimized/goofspiel.ll index 6b3e539f887..cd65261b7a9 100644 --- a/bench/openspiel/optimized/goofspiel.ll +++ b/bench/openspiel/optimized/goofspiel.ll @@ -16592,8 +16592,10 @@ _ZNSt10shared_ptrIKN10open_spiel4GameEED2Ev.exit: ; preds = %4, %40, %53, %_ZNSt br label %91 91: ; preds = %89, %90 - %brmerge58 = or i1 %.not53, %.not - br i1 %brmerge58, label %93, label %92 + %92 = and i8 %75, 1 + %93 = and i8 %92, %78 + %brmerge58.not.not = icmp eq i8 %93, 0 + br i1 %brmerge58.not.not, label %95, label %94 92: ; preds = %91 tail call void @_ZNK10open_spiel9goofspiel17GoofspielObserver16WriteWinSequenceERKNS0_13GoofspielGameERKNS0_14GoofspielStateEiPNS_9AllocatorE(ptr noundef nonnull align 8 dereferenceable(21) %0, ptr noundef nonnull align 8 dereferenceable(366) %14, ptr noundef nonnull align 8 dereferenceable(264) %1, i32 noundef %2, ptr noundef %3) diff --git a/bench/openspiel/optimized/observation_history.ll b/bench/openspiel/optimized/observation_history.ll index 8c864cec350..ad541b7ccce 100644 --- a/bench/openspiel/optimized/observation_history.ll +++ b/bench/openspiel/optimized/observation_history.ll @@ -5387,46 +5387,55 @@ _ZN10open_spiel8internal11SpielStrOutINSt7__cxx1119basic_ostringstreamIcSt11char ; Function Attrs: mustprogress uwtable define linkonce_odr noundef zeroext i1 @_ZSteqIN4absl7debian28optionalIlEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEbRKSt4pairIT_T0_ESF_(ptr noundef nonnull align 8 dereferenceable(48) %0, ptr noundef nonnull align 8 dereferenceable(48) %1) local_unnamed_addr #3 comdat personality ptr @__gxx_personality_v0 { %3 = load i8, ptr %0, align 8 - %4 = trunc i8 %3 to i1 - %5 = load i8, ptr %1, align 8 - %6 = trunc i8 %5 to i1 - %7 = and i1 %4, %6 - br i1 %7, label %_ZNKR4absl7debian28optionalIlEdeEv.exit5.i, label %_ZN4absl7debian2eqIllEEDTclL_ZNS0_17optional_internal19convertible_to_boolEbEeqdefp_defp0_EERKNS0_8optionalIT_EERKNS4_IT0_EE.exit + %4 = load i8, ptr %1, align 8 + %5 = and i8 %3, 1 + %6 = and i8 %5, %4 + %.not.i = icmp eq i8 %6, 0 + br i1 %.not.i, label %_ZN4absl7debian2eqIllEEDTclL_ZNS0_17optional_internal19convertible_to_boolEbEeqdefp_defp0_EERKNS0_8optionalIT_EERKNS4_IT0_EE.exit, label %_ZNKR4absl7debian28optionalIlEdeEv.exit.i _ZNKR4absl7debian28optionalIlEdeEv.exit5.i: ; preds = %2 - %8 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %9 = load i64, ptr %8, align 8 - %10 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %11 = load i64, ptr %10, align 8 - %12 = icmp eq i64 %9, %11 - br i1 %12, label %14, label %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit - -_ZN4absl7debian2eqIllEEDTclL_ZNS0_17optional_internal19convertible_to_boolEbEeqdefp_defp0_EERKNS0_8optionalIT_EERKNS4_IT0_EE.exit: ; preds = %2 - %13 = xor i1 %4, %6 - br i1 %13, label %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit, label %14 - -14: ; preds = %_ZNKR4absl7debian28optionalIlEdeEv.exit5.i, %_ZN4absl7debian2eqIllEEDTclL_ZNS0_17optional_internal19convertible_to_boolEbEeqdefp_defp0_EERKNS0_8optionalIT_EERKNS4_IT0_EE.exit - %15 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %16 = getelementptr inbounds nuw i8, ptr %1, i64 16 - %17 = tail call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %15) #20 - %18 = tail call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %16) #20 - %19 = icmp eq i64 %17, %18 - br i1 %19, label %20, label %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit + %7 = trunc i8 %4 to i1 + br i1 %7, label %20, label %8 -20: ; preds = %14 - %21 = tail call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4dataEv(ptr noundef nonnull align 8 dereferenceable(32) %15) #20 - %22 = tail call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4dataEv(ptr noundef nonnull align 8 dereferenceable(32) %16) #20 - %23 = tail call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %15) #20 - %24 = icmp eq i64 %23, 0 - br i1 %24, label %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit, label %25 +_ZN4absl7debian2eqIllEEDTclL_ZNS0_17optional_internal19convertible_to_boolEbEeqdefp_defp0_EERKNS0_8optionalIT_EERKNS4_IT0_EE.exit: ; preds = %_ZNKR4absl7debian28optionalIlEdeEv.exit.i + tail call void @llvm.trap() + unreachable -25: ; preds = %20 - %bcmp.i = tail call i32 @bcmp(ptr %21, ptr %22, i64 %23) - %26 = icmp eq i32 %bcmp.i, 0 +20: ; preds = %_ZNKR4absl7debian28optionalIlEdeEv.exit.i + %9 = getelementptr inbounds nuw i8, ptr %0, i64 _ZN4absl7debian2eqIllEEDTclL_ZNS0_17optional_internal19convertible_to_boolEbEeqdefp_defp0_EERKNS0_8optionalIT_EERKNS4_IT0_EE.exit + %10 = load i64, ptr %9, align 8 + %11 = getelementptr inbounds nuw i8, ptr %1, i64 _ZN4absl7debian2eqIllEEDTclL_ZNS0_17optional_internal19convertible_to_boolEbEeqdefp_defp0_EERKNS0_8optionalIT_EERKNS4_IT0_EE.exit + %12 = load i64, ptr %11, align 8 + %13 = icmp eq i64 %10, %12 + br i1 %13, label %16, label %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit + +25: ; preds = %2 + %14 = xor i8 %4, %3 + %15 = trunc i8 %14 to i1 + br i1 %15, label %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit, label %16 + +16: ; preds = %_ZNKR4absl7debian28optionalIlEdeEv.exit5.i, %_ZN4absl7debian2eqIllEEDTclL_ZNS0_17optional_internal19convertible_to_boolEbEeqdefp_defp0_EERKNS0_8optionalIT_EERKNS4_IT0_EE.exit + %17 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %18 = getelementptr inbounds nuw i8, ptr %1, i64 16 + %19 = tail call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %17) #20 + %20 = tail call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %18) #20 + %21 = icmp eq i64 %19, %20 + br i1 %21, label %22, label %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit + +22: ; preds = %16 + %23 = tail call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4dataEv(ptr noundef nonnull align 8 dereferenceable(32) %17) #20 + %24 = tail call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4dataEv(ptr noundef nonnull align 8 dereferenceable(32) %18) #20 + %25 = tail call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %17) #20 + %26 = icmp eq i64 %25, 0 + br i1 %26, label %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit, label %27 + +27: ; preds = %22 + %bcmp.i = tail call i32 @bcmp(ptr %23, ptr %24, i64 %25) + %28 = icmp eq i32 %bcmp.i, 0 br label %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit -_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit: ; preds = %25, %20, %14, %_ZNKR4absl7debian28optionalIlEdeEv.exit5.i, %_ZN4absl7debian2eqIllEEDTclL_ZNS0_17optional_internal19convertible_to_boolEbEeqdefp_defp0_EERKNS0_8optionalIT_EERKNS4_IT0_EE.exit - %27 = phi i1 [ false, %_ZN4absl7debian2eqIllEEDTclL_ZNS0_17optional_internal19convertible_to_boolEbEeqdefp_defp0_EERKNS0_8optionalIT_EERKNS4_IT0_EE.exit ], [ false, %_ZNKR4absl7debian28optionalIlEdeEv.exit5.i ], [ false, %14 ], [ %26, %25 ], [ true, %20 ] +_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit: ; preds = %27, %22, %16, %_ZNKR4absl7debian28optionalIlEdeEv.exit5.i, %_ZN4absl7debian2eqIllEEDTclL_ZNS0_17optional_internal19convertible_to_boolEbEeqdefp_defp0_EERKNS0_8optionalIT_EERKNS4_IT0_EE.exit + %27 = phi i1 [ false, %_ZN4absl7debian2eqIllEEDTclL_ZNS0_17optional_internal19convertible_to_boolEbEeqdefp_defp0_EERKNS0_8optionalIT_EERKNS4_IT0_EE.exit ], [ false, %_ZNKR4absl7debian28optionalIlEdeEv.exit5.i ], [ false, %16 ], [ %28, %27 ], [ true, %22 ] ret i1 %27 } diff --git a/bench/openspiel/optimized/observer.ll b/bench/openspiel/optimized/observer.ll index 352b6778843..73344d1fc42 100644 --- a/bench/openspiel/optimized/observer.ll +++ b/bench/openspiel/optimized/observer.ll @@ -1362,8 +1362,9 @@ define internal fastcc void @_ZSt11make_uniqueIN10open_spiel12_GLOBAL__N_115Defa %15 = getelementptr inbounds nuw i8, ptr %7, i64 9 store i8 %13, ptr %15, align 1 %16 = or i8 %11, %9 - %17 = trunc i8 %16 to i1 - br i1 %17, label %_ZN10open_spiel8ObserverC2Ebb.exit.i, label %18 + %17 = and i8 %16, 1 + %.not.i = icmp eq i8 %17, 0 + br i1 %.not.i, label %18, label %_ZN10open_spiel8ObserverC2Ebb.exit.i 18: ; preds = %2 store i32 326, ptr %5, align 4 @@ -1743,8 +1744,9 @@ define internal fastcc void @_ZSt11make_uniqueIN10open_spiel12_GLOBAL__N_124Info %15 = getelementptr inbounds nuw i8, ptr %7, i64 9 store i8 %13, ptr %15, align 1 %16 = or i8 %11, %9 - %17 = trunc i8 %16 to i1 - br i1 %17, label %_ZN10open_spiel8ObserverC2Ebb.exit.i, label %18 + %17 = and i8 %16, 1 + %.not.i = icmp eq i8 %17, 0 + br i1 %.not.i, label %18, label %_ZN10open_spiel8ObserverC2Ebb.exit.i 18: ; preds = %2 store i32 326, ptr %5, align 4 diff --git a/bench/openspiel/optimized/twixtboard.ll b/bench/openspiel/optimized/twixtboard.ll index 933b9299621..fae8d243579 100644 --- a/bench/openspiel/optimized/twixtboard.ll +++ b/bench/openspiel/optimized/twixtboard.ll @@ -2354,9 +2354,10 @@ define void @_ZN10open_spiel5twixt5Board12UpdateResultEi8Position(ptr noundef no %12 = load i8, ptr %11, align 1 %13 = getelementptr inbounds %"class.open_spiel::twixt::Cell", ptr %9, i64 %8, i32 4, i64 %10, i64 1 %14 = load i8, ptr %13, align 1 - %brmerge.demorgan11 = and i8 %14, %12 - %brmerge.demorgan = trunc i8 %brmerge.demorgan11 to i1 - br i1 %brmerge.demorgan, label %15, label %18 + %brmerge.demorgan11 = and i8 %12, 1 + %16 = and i8 %brmerge.demorgan11, %14 + %brmerge.demorgan.not = icmp eq i8 %16, 0 + br i1 %brmerge.demorgan.not, label %20, label %17 15: ; preds = %3 %16 = icmp eq i32 %1, 0 @@ -5428,13 +5429,14 @@ _ZN10open_spiel5twixt5Board17RemoveLegalActionEi8Position.exit102: ; preds = %_Z %282 = load i8, ptr %281, align 1 %283 = getelementptr inbounds %"class.open_spiel::twixt::Cell", ptr %279, i64 %278, i32 4, i64 %280, i64 1 %284 = load i8, ptr %283, align 1 - %brmerge.demorgan11.i = and i8 %284, %282 - %brmerge.demorgan.i = trunc i8 %brmerge.demorgan11.i to i1 - br i1 %brmerge.demorgan.i, label %285, label %288 - -285: ; preds = %_ZN10open_spiel5twixt5Board17RemoveLegalActionEi8Position.exit102 - %286 = icmp eq i32 %1, 0 - %287 = select i1 %286, i32 1, i32 2 + %brmerge.demorgan11.i = and i8 %282, 1 + %286 = and i8 %brmerge.demorgan11.i, %284 + %brmerge.demorgan.not.i = icmp eq i8 %286, 0 + br i1 %brmerge.demorgan.not.i, label %290, label %287 + +287:; preds = %_ZN10open_spiel5twixt5Board17RemoveLegalActionEi8Position.exit102 + %288 = icmp eq i32 %1, 0 + %289 = select i1 %288, i32 1, i32 2 br label %.sink.split.i 288: ; preds = %_ZN10open_spiel5twixt5Board17RemoveLegalActionEi8Position.exit102 @@ -5448,8 +5450,8 @@ _ZN10open_spiel5twixt5Board17RemoveLegalActionEi8Position.exit102: ; preds = %_Z %.not.i104 = icmp eq ptr %294, %295 br i1 %.not.i104, label %.sink.split.i, label %_ZN10open_spiel5twixt5Board12UpdateResultEi8Position.exit -.sink.split.i: ; preds = %288, %285 - %.sink.i = phi i32 [ %287, %285 ], [ 3, %288 ] +.sink.split.i: ; preds = %288, %287 + %.sink.i = phi i32 [ %289, %287 ], [ 3, %288 ] %296 = getelementptr inbounds nuw i8, ptr %0, i64 16 store i32 %.sink.i, ptr %296, align 8 br label %_ZN10open_spiel5twixt5Board12UpdateResultEi8Position.exit diff --git a/bench/openssl/optimized/ts_rsp_verify.ll b/bench/openssl/optimized/ts_rsp_verify.ll index 0c89a66350f..697dad7fda5 100644 --- a/bench/openssl/optimized/ts_rsp_verify.ll +++ b/bench/openssl/optimized/ts_rsp_verify.ll @@ -442,10 +442,8 @@ define internal fastcc range(i32 0, 2) i32 @int_ts_RESP_verify_token(ptr noundef %11 = icmp ne i32 %10, 0 %12 = icmp ne ptr %8, null %or.cond = select i1 %11, i1 %12, i1 false - %13 = and i32 %9, 128 + %13 = and i32 %9, 129 %.not = icmp ne i32 %13, 0 - %.tr = trunc i32 %9 to i1 - %14 = or i1 %.not, %.tr %.0.narrow = or i1 %14, %or.cond br i1 %.0.narrow, label %15, label %21 @@ -660,27 +658,28 @@ ts_check_nonces.exit: ; preds = %90, %86 br label %105 98: ; preds = %94, %ts_check_nonces.exit - %.not51 = icmp eq i32 %13, 0 - br i1 %.not51, label %105, label %99 - -99: ; preds = %98 - %100 = getelementptr inbounds nuw i8, ptr %0, i64 72 - %101 = load ptr, ptr %100, align 8, !tbaa !75 - %102 = load ptr, ptr %6, align 8, !tbaa !26 - %103 = call fastcc i32 @ts_check_signer_name(ptr noundef %101, ptr noundef %102) - %.not52 = icmp eq i32 %103, 0 - br i1 %.not52, label %104, label %105 - -104: ; preds = %99 + %99 = and i32 %9, 128 + %.not51 = icmp eq i32 %99, 0 + br i1 %.not51, label %106, label %100 + +100: ; preds = %98 + %101 = getelementptr inbounds nuw i8, ptr %0, i64 72 + %102 = load ptr, ptr %101, align 8, !tbaa !75 + %103 = load ptr, ptr %6, align 8, !tbaa !26 + %104 = call fastcc i32 @ts_check_signer_name(ptr noundef %102, ptr noundef %103) + %.not52 = icmp eq i32 %104, 0 + br i1 %.not52, label %105, label %106 + +105: ; preds = %100 call void @ERR_new() #7 call void @ERR_set_debug(ptr noundef nonnull @.str, i32 noundef 339, ptr noundef nonnull @__func__.int_ts_RESP_verify_token) #7 call void (i32, i32, ptr, ...) @ERR_set_error(i32 noundef 47, i32 noundef 112, ptr noundef null) #7 br label %105 -105: ; preds = %ts_check_nonces.exit.thread, %ts_compute_imprint.exit.thread, %ts_check_policy.exit.thread, %98, %99, %84, %34, %15, %104, %97, %25 - %.070 = phi ptr [ %.171, %97 ], [ %.171, %98 ], [ %.171, %104 ], [ %.171, %99 ], [ %49, %84 ], [ null, %34 ], [ null, %25 ], [ null, %15 ], [ null, %ts_check_policy.exit.thread ], [ null, %ts_compute_imprint.exit.thread ], [ %.171, %ts_check_nonces.exit.thread ] - %.069 = phi ptr [ %.1, %97 ], [ %.1, %98 ], [ %.1, %104 ], [ %.1, %99 ], [ %67, %84 ], [ null, %34 ], [ null, %25 ], [ null, %15 ], [ null, %ts_check_policy.exit.thread ], [ null, %ts_compute_imprint.exit.thread ], [ %.1, %ts_check_nonces.exit.thread ] - %.035 = phi i32 [ 0, %97 ], [ 1, %98 ], [ 0, %104 ], [ 1, %99 ], [ 0, %84 ], [ 0, %34 ], [ 0, %25 ], [ 0, %15 ], [ 0, %ts_check_policy.exit.thread ], [ 0, %ts_compute_imprint.exit.thread ], [ 0, %ts_check_nonces.exit.thread ] +105: ; preds = %ts_check_nonces.exit.thread, %ts_compute_imprint.exit.thread, %ts_check_policy.exit.thread, %98, %100, %84, %34, %15, %105, %97, %25 + %.070 = phi ptr [ %.171, %97 ], [ %.171, %98 ], [ %.171, %105 ], [ %.171, %100 ], [ %49, %84 ], [ null, %34 ], [ null, %25 ], [ null, %15 ], [ null, %ts_check_policy.exit.thread ], [ null, %ts_compute_imprint.exit.thread ], [ %.171, %ts_check_nonces.exit.thread ] + %.069 = phi ptr [ %.1, %97 ], [ %.1, %98 ], [ %.1, %105 ], [ %.1, %100 ], [ %67, %84 ], [ null, %34 ], [ null, %25 ], [ null, %15 ], [ null, %ts_check_policy.exit.thread ], [ null, %ts_compute_imprint.exit.thread ], [ %.1, %ts_check_nonces.exit.thread ] + %.035 = phi i32 [ 0, %97 ], [ 1, %98 ], [ 0, %105 ], [ 1, %100 ], [ 0, %84 ], [ 0, %34 ], [ 0, %25 ], [ 0, %15 ], [ 0, %ts_check_policy.exit.thread ], [ 0, %ts_compute_imprint.exit.thread ], [ 0, %ts_check_nonces.exit.thread ] %106 = load ptr, ptr %6, align 8, !tbaa !26 call void @X509_free(ptr noundef %106) #7 call void @X509_ALGOR_free(ptr noundef %.070) #7 diff --git a/bench/php/optimized/session.ll b/bench/php/optimized/session.ll index 4f106dc6d24..55201bec72b 100644 --- a/bench/php/optimized/session.ll +++ b/bench/php/optimized/session.ll @@ -3290,19 +3290,19 @@ _php_find_ps_serializer.exit: ; preds = %.lr.ph.i %40 = xor i8 %39, 1 store i8 %40, ptr getelementptr inbounds nuw (i8, ptr @ps_globals, i64 351), align 1, !tbaa !61 %41 = load i8, ptr getelementptr inbounds nuw (i8, ptr @ps_globals, i64 347), align 1, !tbaa !100, !range !67, !noundef !68 - %42 = trunc nuw i8 %41 to i1 - %43 = select i1 %42, i8 1, i8 %39 - store i8 %43, ptr getelementptr inbounds nuw (i8, ptr @ps_globals, i64 350), align 2, !tbaa !101 - %44 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @ps_globals, i64 8), align 8, !tbaa !116 - %45 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %44) #28 - %46 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @ps_globals, i64 16), align 16, !tbaa !24 - %.not43 = icmp eq ptr %46, null - br i1 %.not43, label %47, label %.thread82 - -47: ; preds = %38 - br i1 %42, label %48, label %86 - -48: ; preds = %47 + %42 = or i8 %41, %39 + store i8 %42, ptr getelementptr inbounds nuw (i8, ptr @ps_globals, i64 350), align 2, !tbaa !101 + %43 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @ps_globals, i64 8), align 8, !tbaa !116 + %44 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %43) #28 + %45 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @ps_globals, i64 16), align 16, !tbaa !24 + %.not43 = icmp eq ptr %45, null + br i1 %.not43, label %46, label %.thread82 + +46: ; preds = %38 + %47 = trunc nuw i8 %41 to i1 + br i1 %47, label %48, label %86 + +48: ; preds = %46 %49 = tail call ptr @zend_hash_str_find(ptr noundef nonnull getelementptr inbounds nuw (i8, ptr @executor_globals, i64 304), ptr noundef nonnull @.str.7, i64 noundef 7) #25 %.not44 = icmp eq ptr %49, null br i1 %.not44, label %86, label %50 @@ -3329,7 +3329,7 @@ _php_find_ps_serializer.exit: ; preds = %.lr.ph.i 60: ; preds = %57 %61 = load ptr, ptr %.030, align 8, !tbaa !65 %62 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @ps_globals, i64 8), align 8, !tbaa !116 - %63 = tail call ptr @zend_hash_str_find(ptr noundef %61, ptr noundef %62, i64 noundef %45) #25 + %63 = tail call ptr @zend_hash_str_find(ptr noundef %61, ptr noundef %62, i64 noundef %44) #25 %.not45 = icmp eq ptr %63, null br i1 %.not45, label %86, label %64 @@ -3380,7 +3380,7 @@ ppid2sid.exit: ; preds = %71, %zend_string_in store i8 0, ptr getelementptr inbounds nuw (i8, ptr @ps_globals, i64 351), align 1, !tbaa !61 br label %86 -86: ; preds = %57, %60, %ppid2sid.exit, %48, %47 +86: ; preds = %57, %60, %ppid2sid.exit, %48, %46 %87 = load i8, ptr getelementptr inbounds nuw (i8, ptr @ps_globals, i64 348), align 4, !tbaa !137, !range !67, !noundef !68 %88 = trunc nuw i8 %87 to i1 br i1 %88, label %157, label %89 @@ -3417,7 +3417,7 @@ ppid2sid.exit: ; preds = %71, %zend_string_in 103: ; preds = %100 %104 = load ptr, ptr %.1, align 8, !tbaa !65 %105 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @ps_globals, i64 8), align 8, !tbaa !116 - %106 = tail call ptr @zend_hash_str_find(ptr noundef %104, ptr noundef %105, i64 noundef %45) #25 + %106 = tail call ptr @zend_hash_str_find(ptr noundef %104, ptr noundef %105, i64 noundef %44) #25 %.not48 = icmp eq ptr %106, null br i1 %.not48, label %108, label %107 @@ -3457,7 +3457,7 @@ ppid2sid.exit: ; preds = %71, %zend_string_in 121: ; preds = %118 %122 = load ptr, ptr %.2, align 8, !tbaa !65 %123 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @ps_globals, i64 8), align 8, !tbaa !116 - %124 = tail call ptr @zend_hash_str_find(ptr noundef %122, ptr noundef %123, i64 noundef %45) #25 + %124 = tail call ptr @zend_hash_str_find(ptr noundef %122, ptr noundef %123, i64 noundef %44) #25 %.not51 = icmp eq ptr %124, null br i1 %.not51, label %126, label %125 @@ -3528,7 +3528,7 @@ ppid2sid.exit: ; preds = %71, %zend_string_in br i1 %.not56, label %.thread80, label %.thread82 .thread82: ; preds = %38, %157 - %158 = phi ptr [ %.pr78, %157 ], [ %46, %38 ] + %158 = phi ptr [ %.pr78, %157 ], [ %45, %38 ] %159 = getelementptr inbounds nuw i8, ptr %158, i64 24 %160 = tail call ptr @strpbrk(ptr noundef nonnull %159, ptr noundef nonnull @.str.16) #28 %.not57 = icmp eq ptr %160, null diff --git a/bench/postgres/optimized/aclchk.ll b/bench/postgres/optimized/aclchk.ll index eef517c19d2..f32025e5490 100644 --- a/bench/postgres/optimized/aclchk.ll +++ b/bench/postgres/optimized/aclchk.ll @@ -1627,7 +1627,8 @@ expand_col_privileges.exit.i: ; preds = %266, %.lr.ph.i154.i %322 = trunc nuw i8 %321 to i1 %323 = getelementptr inbounds nuw i8, ptr %318, i64 4 %324 = getelementptr inbounds nuw i8, ptr %318, i64 16 - %325 = and i1 %316, %322 + %325 = and i8 %321, %315 + %.not172.i = icmp eq i8 %325, 0 %.not29.i.i = xor i1 %322, true %brmerge.i.i = or i1 %316, %.not29.i.i %326 = select i1 %brmerge.i.i, i64 %314, i64 0 @@ -1638,7 +1639,7 @@ expand_col_privileges.exit.i: ; preds = %266, %.lr.ph.i154.i %329 = or disjoint i64 %326, %328 %330 = load i32, ptr %323, align 4 %331 = icmp sgt i32 %330, 0 - br i1 %325, label %.lr.ph.split.split.i.i, label %.lr.ph.split.us.split.i.i + br i1 %.not172.i, label %.lr.ph.split.us.split.i.i, label %.lr.ph.split.split.i.i .lr.ph.split.us.split.i.i: ; preds = %.lr.ph.i159.i br i1 %331, label %.lr.ph54.i.i, label %merge_acl_with_grant.exit.i @@ -1696,8 +1697,8 @@ expand_col_privileges.exit.i: ; preds = %266, %.lr.ph.i154.i %350 = icmp slt i64 %indvars.iv.next60.i.i, %349 br i1 %350, label %.lr.ph48.i.i, label %merge_acl_with_grant.exit.i -merge_acl_with_grant.exit.i: ; preds = %.lr.ph54.i.i, %346, %.lr.ph.split.split.i.i, %.lr.ph.split.us.split.i.i, %305 - %.025.lcssa.i.i = phi ptr [ %.049.i.i, %305 ], [ %.049.i.i, %.lr.ph.split.us.split.i.i ], [ %.049.i.i, %.lr.ph.split.split.i.i ], [ %347, %346 ], [ %335, %.lr.ph54.i.i ] +merge_acl_with_grant.exit.i: ; preds = %346, %.lr.ph54.i.i, %.lr.ph.split.split.i.i, %.lr.ph.split.us.split.i.i, %305 + %.025.lcssa.i.i = phi ptr [ %.049.i.i, %305 ], [ %.049.i.i, %.lr.ph.split.us.split.i.i ], [ %.049.i.i, %.lr.ph.split.split.i.i ], [ %335, %.lr.ph54.i.i ], [ %347, %346 ] %351 = call i32 @aclmembers(ptr noundef %.025.lcssa.i.i, ptr noundef nonnull %28) #9 %352 = getelementptr inbounds nuw i8, ptr %.025.lcssa.i.i, i64 16 %353 = load i32, ptr %352, align 4 diff --git a/bench/postgres/optimized/foreigncmds.ll b/bench/postgres/optimized/foreigncmds.ll index 498a4f4d02e..39d3e7b71f6 100644 --- a/bench/postgres/optimized/foreigncmds.ll +++ b/bench/postgres/optimized/foreigncmds.ll @@ -1114,8 +1114,9 @@ define dso_local { i64, i32 } @AlterForeignDataWrapper(ptr noundef %0, ptr nound store i32 %38, ptr %87, align 4 %88 = getelementptr inbounds nuw i8, ptr %3, i64 8 store i32 0, ptr %88, align 8 - %brmerge = or i1 %42, %53 - br i1 %brmerge, label %89, label %100 + %brmerge = or i8 %52, %41 + %brmerge.not = icmp eq i8 %89, 0 + br i1 %brmerge.not, label %101, label %90 89: ; preds = %82 call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %12) #9 diff --git a/bench/postgres/optimized/gistutil.ll b/bench/postgres/optimized/gistutil.ll index 7d0421ef63c..829a144f7f2 100644 --- a/bench/postgres/optimized/gistutil.ll +++ b/bench/postgres/optimized/gistutil.ll @@ -1339,28 +1339,29 @@ gistDeCompressAtt.exit40: ; preds = %gistdentryinit.exit %117 = trunc nuw i8 %116 to i1 %118 = getelementptr inbounds nuw [32 x i8], ptr %13, i64 0, i64 %indvars.iv %119 = load i8, ptr %118, align 1, !range !12, !noundef !13 - %120 = trunc nuw i8 %119 to i1 - %121 = getelementptr inbounds nuw i64, ptr %14, i64 %indvars.iv - %122 = getelementptr inbounds nuw i8, ptr %15, i64 %indvars.iv + %120 = getelementptr inbounds nuw i64, ptr %14, i64 %indvars.iv + %121 = getelementptr inbounds nuw i8, ptr %15, i64 %indvars.iv call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %8) #11 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #11 store i32 2, ptr %8, align 8 - %brmerge.demorgan.i = and i1 %117, %120 - br i1 %brmerge.demorgan.i, label %123, label %124 + %brmerge.demorgan.i = and i8 %119, %116 + %brmerge.demorgan.i.not = icmp eq i8 %122, 0 + br i1 %brmerge.demorgan.i.not, label %124, label %123 123: ; preds = %113 - store i8 1, ptr %122, align 1 + store i8 1, ptr %121, align 1 br label %gistMakeUnionKey.exit 124: ; preds = %113 %125 = getelementptr inbounds nuw %struct.GISTENTRY, ptr %11, i64 %indvars.iv - %brmerge27.i = or i1 %117, %120 + %brmerge27.i = or i8 %119, %116 + %brmerge27.i.not = icmp eq i8 %126, 0 %. = select i1 %117, ptr %125, ptr %114 - %.sink55 = select i1 %brmerge27.i, ptr %., ptr %114 - %.sink = select i1 %brmerge27.i, ptr %., ptr %125 + %.sink55 = select i1 %brmerge27.i.not, ptr %114, ptr %. + %.sink = select i1 %brmerge27.i.not, ptr %125, ptr %. call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %105, ptr noundef nonnull readonly align 16 dereferenceable(32) %.sink55, i64 32, i1 false) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %106, ptr noundef nonnull readonly align 16 dereferenceable(32) %.sink, i64 32, i1 false) - store i8 0, ptr %122, align 1 + store i8 0, ptr %121, align 1 %126 = getelementptr inbounds nuw [32 x %struct.FmgrInfo], ptr %107, i64 0, i64 %indvars.iv %127 = getelementptr inbounds nuw [32 x i32], ptr %108, i64 0, i64 %indvars.iv %128 = load i32, ptr %127, align 4 @@ -1370,7 +1371,7 @@ gistDeCompressAtt.exit40: ; preds = %gistdentryinit.exit gistMakeUnionKey.exit: ; preds = %123, %124 %130 = phi i8 [ 0, %124 ], [ 1, %123 ] %131 = phi i64 [ %129, %124 ], [ 0, %123 ] - store i64 %131, ptr %121, align 8 + store i64 %131, ptr %120, align 8 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #11 call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %8) #11 %132 = trunc nuw i8 %.03145 to i1 @@ -1378,8 +1379,8 @@ gistMakeUnionKey.exit: ; preds = %123, %124 133: ; preds = %gistMakeUnionKey.exit %brmerge42 = or i8 %130, %119 - %brmerge = trunc nuw i8 %brmerge42 to i1 - br i1 %brmerge, label %144, label %134 + %brmerge.not = icmp eq i8 %brmerge42, 0 + br i1 %brmerge.not, label %136, label %146 134: ; preds = %133 br i1 %117, label %143, label %135 diff --git a/bench/postgres/optimized/pl_exec.ll b/bench/postgres/optimized/pl_exec.ll index 677819877cb..e7850994de1 100644 --- a/bench/postgres/optimized/pl_exec.ll +++ b/bench/postgres/optimized/pl_exec.ll @@ -3690,9 +3690,8 @@ define internal void @exec_assign_value(ptr noundef readonly captures(none) %0, %68 = getelementptr inbounds nuw i8, ptr %67, i64 18 %69 = load i8, ptr %68, align 2, !range !3, !noundef !4 %.demorgan74 = or i8 %69, %65 - %.demorgan = trunc nuw i8 %.demorgan74 to i1 - %70 = xor i1 %.demorgan, true - call fastcc void @assign_simple_var(ptr noundef %0, ptr noundef nonnull %1, i64 noundef %.071, i1 noundef zeroext %66, i1 noundef zeroext %70) + %.demorgan.not = icmp eq i8 %.demorgan74, 0 + call fastcc void @assign_simple_var(ptr noundef %0, ptr noundef nonnull %1, i64 noundef %.071, i1 noundef zeroext %66, i1 noundef zeroext %.demorgan.not) br label %160 71: ; preds = %62 diff --git a/bench/proj/optimized/datum.ll b/bench/proj/optimized/datum.ll index dc73da357b9..df56a68f73c 100644 --- a/bench/proj/optimized/datum.ll +++ b/bench/proj/optimized/datum.ll @@ -1372,17 +1372,18 @@ define hidden noundef zeroext i1 @_ZNK5osgeo4proj5datum5Datum15_isEquivalentToEP %16 = getelementptr inbounds nuw i8, ptr %0, i64 56 %17 = load ptr, ptr %16, align 8 %18 = load i8, ptr %17, align 8 - %19 = trunc i8 %18 to i1 - %20 = getelementptr inbounds nuw i8, ptr %9, i64 56 - %21 = load ptr, ptr %20, align 8 - %22 = load i8, ptr %21, align 8 + %19 = getelementptr inbounds nuw i8, ptr %9, i64 56 + %20 = load ptr, ptr %19, align 8 + %21 = load i8, ptr %20, align 8 + %22 = xor i8 %21, %18 %23 = trunc i8 %22 to i1 - %24 = xor i1 %19, %23 - br i1 %24, label %.thread, label %25 + br i1 %23, label %.thread, label %23 25: ; preds = %15 - %brmerge.demorgan = and i1 %19, %23 - br i1 %brmerge.demorgan, label %26, label %30 + %brmerge.demorgan = and i8 %18, 1 + %26 = and i8 %brmerge.demorgan, %21 + %brmerge.demorgan.not = icmp eq i8 %26, 0 + br i1 %brmerge.demorgan.not, label %31, label %27 26: ; preds = %25 %27 = getelementptr inbounds nuw i8, ptr %17, i64 8 @@ -1392,7 +1393,7 @@ define hidden noundef zeroext i1 @_ZNK5osgeo4proj5datum5Datum15_isEquivalentToEP ._crit_edge: ; preds = %26 %.pre = load ptr, ptr %16, align 8 - %.pre37 = load ptr, ptr %20, align 8 + %.pre37 = load ptr, ptr %19, align 8 br label %30 30: ; preds = %._crit_edge, %25 @@ -1400,21 +1401,22 @@ define hidden noundef zeroext i1 @_ZNK5osgeo4proj5datum5Datum15_isEquivalentToEP %32 = phi ptr [ %.pre, %._crit_edge ], [ %17, %25 ] %33 = getelementptr inbounds nuw i8, ptr %32, i64 56 %34 = load i8, ptr %33, align 8 - %35 = trunc i8 %34 to i1 %36 = getelementptr inbounds nuw i8, ptr %31, i64 56 %37 = load i8, ptr %36, align 8 - %38 = trunc i8 %37 to i1 - %39 = xor i1 %35, %38 + %38 = xor i8 %37, %35 + %39 = trunc i8 %38 to i1 br i1 %39, label %.thread, label %40 40: ; preds = %30 - %brmerge33.demorgan = and i1 %35, %38 - br i1 %brmerge33.demorgan, label %41, label %.critedge.thread + %brmerge33.demorgan = and i8 %35, 1 + %42 = and i8 %brmerge33.demorgan, %37 + %brmerge33.demorgan.not = icmp eq i8 %42, 0 + br i1 %brmerge33.demorgan.not, label %.critedge.thread, label %43 41: ; preds = %40 %42 = getelementptr inbounds nuw i8, ptr %32, i64 64 call void @_ZNK5osgeo4proj6common8DateTime8toStringB5cxx11Ev(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %5, ptr noundef nonnull align 8 dereferenceable(8) %42) - %43 = load ptr, ptr %20, align 8 + %43 = load ptr, ptr %19, align 8 %44 = getelementptr inbounds nuw i8, ptr %43, i64 64 invoke void @_ZNK5osgeo4proj6common8DateTime8toStringB5cxx11Ev(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %6, ptr noundef nonnull align 8 dereferenceable(8) %44) to label %.critedge unwind label %46 @@ -1427,7 +1429,7 @@ define hidden noundef zeroext i1 @_ZNK5osgeo4proj5datum5Datum15_isEquivalentToEP .critedge..critedge.thread_crit_edge: ; preds = %.critedge %.pre38 = load ptr, ptr %16, align 8 - %.pre39 = load ptr, ptr %20, align 8 + %.pre39 = load ptr, ptr %19, align 8 br label %.critedge.thread 46: ; preds = %41 @@ -6363,15 +6365,16 @@ _ZNK5osgeo4proj5datum9Ellipsoid20computeSemiMinorAxisEv.exit52: ; preds = %.invo %166 = load ptr, ptr %75, align 8 %167 = getelementptr inbounds nuw i8, ptr %166, i64 88 %168 = load i8, ptr %165, align 8 - %169 = trunc i8 %168 to i1 - %170 = load i8, ptr %167, align 8 + %169 = load i8, ptr %167, align 8 + %170 = xor i8 %169, %168 %171 = trunc i8 %170 to i1 - %172 = xor i1 %169, %171 - br i1 %172, label %.thread, label %173 + br i1 %171, label %.thread, label %172 173: ; preds = %163 - %brmerge.demorgan = and i1 %169, %171 - br i1 %brmerge.demorgan, label %174, label %178 + %brmerge.demorgan = and i8 %168, 1 + %174 = and i8 %brmerge.demorgan, %169 + %brmerge.demorgan.not = icmp eq i8 %174, 0 + br i1 %brmerge.demorgan.not, label %179, label %175 174: ; preds = %173 %175 = getelementptr inbounds nuw i8, ptr %164, i64 96 @@ -13572,32 +13575,33 @@ define hidden noundef zeroext i1 @_ZNK5osgeo4proj5datum22VerticalReferenceFrame3 %12 = getelementptr inbounds nuw i8, ptr %0, i64 64 %13 = load ptr, ptr %12, align 8 %14 = load i8, ptr %13, align 8 - %15 = trunc i8 %14 to i1 - %16 = getelementptr inbounds nuw i8, ptr %7, i64 64 - %17 = load ptr, ptr %16, align 8 - %18 = load i8, ptr %17, align 8 + %15 = getelementptr inbounds nuw i8, ptr %7, i64 64 + %16 = load ptr, ptr %15, align 8 + %17 = load i8, ptr %16, align 8 + %18 = xor i8 %17, %14 %19 = trunc i8 %18 to i1 - %20 = xor i1 %15, %19 - br i1 %20, label %.thread, label %21 + br i1 %19, label %.thread, label %21 21: ; preds = %11 - %brmerge.demorgan = and i1 %15, %19 - br i1 %brmerge.demorgan, label %22, label %_ZNK5osgeo4proj4util8CodeListneERKS2_.exit.thread11 + %brmerge.demorgan = and i8 %14, 1 + %22 = and i8 %brmerge.demorgan, %17 + %brmerge.demorgan.not = icmp eq i8 %22, 0 + br i1 %brmerge.demorgan.not, label %_ZNK5osgeo4proj4util8CodeListneERKS2_.exit.thread11, label %23 22: ; preds = %21 %23 = getelementptr inbounds nuw i8, ptr %13, i64 8 - %24 = getelementptr inbounds nuw i8, ptr %17, i64 8 - %25 = tail call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %23) #28 + %24 = getelementptr inbounds nuw i8, ptr %16, i64 8 %26 = tail call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %24) #28 - %27 = icmp eq i64 %25, %26 - br i1 %27, label %28, label %.thread + %27 = tail call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %25) #28 + %27 = icmp eq i64 %26, %27 + br i1 %28, label %29, label %.thread 28: ; preds = %22 - %29 = tail call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4dataEv(ptr noundef nonnull align 8 dereferenceable(32) %23) #28 %30 = tail call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4dataEv(ptr noundef nonnull align 8 dereferenceable(32) %24) #28 - %31 = tail call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %23) #28 + %31 = tail call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4dataEv(ptr noundef nonnull align 8 dereferenceable(32) %25) #28 + %32 = tail call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %24) #28 %32 = icmp eq i64 %31, 0 - br i1 %32, label %_ZNK5osgeo4proj4util8CodeListneERKS2_.exit.thread11, label %_ZNK5osgeo4proj4util8CodeListneERKS2_.exit + br i1 %33, label %_ZNK5osgeo4proj4util8CodeListneERKS2_.exit.thread11, label %_ZNK5osgeo4proj4util8CodeListneERKS2_.exit _ZNK5osgeo4proj4util8CodeListneERKS2_.exit: ; preds = %28 %bcmp.i.i.i = tail call i32 @bcmp(ptr %29, ptr %30, i64 %31) diff --git a/bench/proxygen/optimized/QPACKEncoder.ll b/bench/proxygen/optimized/QPACKEncoder.ll index a081105ebbd..a5c92c6cb3a 100644 --- a/bench/proxygen/optimized/QPACKEncoder.ll +++ b/bench/proxygen/optimized/QPACKEncoder.ll @@ -938,18 +938,18 @@ if.then12: ; preds = %_ZNK8proxygen12QPAC if.end34: ; preds = %if.then12 %call24 = tail call i64 @_ZN8proxygen12QPACKEncoder14maybeDuplicateEj(ptr noundef nonnull align 8 dereferenceable(624) %this, i32 noundef %call16) - %ref.tmp23.sroa.0.0.extract.trunc = trunc i64 %call24 to i1 %ref.tmp23.sroa.244.0.extract.shift = lshr i64 %call24, 32 %ref.tmp23.sroa.244.0.extract.trunc = trunc nuw i64 %ref.tmp23.sroa.244.0.extract.shift to i32 - %cmp28 = icmp ult i64 %call24, 4294967296 - %12 = and i1 %cmp28, %ref.tmp23.sroa.0.0.extract.trunc - br i1 %cmp28, label %if.then36, label %while.end124 + %12 = and i64 %call24, -4294967295 + %13 = icmp eq i64 %12, 1 + %cmp35 = icmp ult i64 %call24, 4294967296 + br i1 %cmp35, label %if.then36, label %while.end124 if.then36.fold.split: ; preds = %if.then12 br label %if.then36 if.then36: ; preds = %if.then12, %if.then36.fold.split, %if.end, %lor.lhs.false.i, %_ZNK8proxygen12QPACKEncoder11shouldIndexERKNS_15HPACKHeaderNameEN5folly5RangeIPKcEE.exit, %if.end34 - %indexable.1.in62 = phi i1 [ %12, %if.end34 ], [ false, %_ZNK8proxygen12QPACKEncoder11shouldIndexERKNS_15HPACKHeaderNameEN5folly5RangeIPKcEE.exit ], [ false, %lor.lhs.false.i ], [ false, %if.end ], [ false, %if.then12 ], [ true, %if.then36.fold.split ] + %indexable.1.in62 = phi i1 [ %13, %if.end34 ], [ false, %_ZNK8proxygen12QPACKEncoder11shouldIndexERKNS_15HPACKHeaderNameEN5folly5RangeIPKcEE.exit ], [ false, %lor.lhs.false.i ], [ false, %if.end ], [ false, %if.then12 ], [ true, %if.then36.fold.split ] %call.i.i15 = tail call noundef nonnull align 8 dereferenceable(80) ptr @_ZN8proxygen22QPACKStaticHeaderTable3getEv(), !noalias !10 %call2.i = tail call noundef i32 @_ZNK8proxygen11HeaderTable9nameIndexERKNS_15HPACKHeaderNameE(ptr noundef nonnull align 8 dereferenceable(80) %call.i.i15, ptr noundef nonnull align 8 dereferenceable(8) %name), !noalias !10 %cmp.i16 = icmp eq i32 %call2.i, 0 diff --git a/bench/ripgrep-rs/optimized/1tu4ff7k1l20r9ex.ll b/bench/ripgrep-rs/optimized/1tu4ff7k1l20r9ex.ll index b3a3c72272f..d4573ed6c9a 100644 --- a/bench/ripgrep-rs/optimized/1tu4ff7k1l20r9ex.ll +++ b/bench/ripgrep-rs/optimized/1tu4ff7k1l20r9ex.ll @@ -4717,10 +4717,10 @@ _ZN6ignore9overrides8Override7matched17h4667bb1eb0a4b737E.exit: ; preds = %_ZN6i %brmerge4.i = or i8 %34, %32 %brmerge15.i = or i8 %brmerge4.i, %36 %brmerge26.i = or i8 %brmerge15.i, %38 - %brmerge2.i = trunc nuw i8 %brmerge26.i to i1 + %brmerge2.i = icmp ne i8 %brmerge26.i, 0 %47 = or i64 %46, %42 %48 = icmp ne i64 %47, 0 - %narrow.i = or i1 %48, %brmerge2.i + %narrow.i = or i1 %brmerge2.i, %51 br i1 %narrow.i, label %55, label %49 49: ; preds = %58, %30 diff --git a/bench/ripgrep-rs/optimized/w48b1qsmd8jodkv.ll b/bench/ripgrep-rs/optimized/w48b1qsmd8jodkv.ll index 49d8bb3c44f..a0686481695 100644 --- a/bench/ripgrep-rs/optimized/w48b1qsmd8jodkv.ll +++ b/bench/ripgrep-rs/optimized/w48b1qsmd8jodkv.ll @@ -3213,10 +3213,10 @@ define hidden noundef zeroext i1 @_ZN6ignore3dir6Ignore20has_any_ignore_rules17h %brmerge4 = or i8 %6, %4 %brmerge15 = or i8 %brmerge4, %8 %brmerge26 = or i8 %brmerge15, %10 - %brmerge2 = trunc nuw i8 %brmerge26 to i1 + %brmerge2 = icmp ne i8 %brmerge26, 0 %19 = or i64 %18, %14 %20 = icmp ne i64 %19, 0 - %narrow = or i1 %20, %brmerge2 + %narrow = or i1 %brmerge2, %23 ret i1 %narrow } diff --git a/bench/rocksdb/optimized/pessimistic_transaction.ll b/bench/rocksdb/optimized/pessimistic_transaction.ll index 418a5207aec..bcc5bb2e88d 100644 --- a/bench/rocksdb/optimized/pessimistic_transaction.ll +++ b/bench/rocksdb/optimized/pessimistic_transaction.ll @@ -6933,9 +6933,8 @@ invoke.cont15: ; preds = %if.then10 %5 = extractvalue { i64, i64 } %call16, 0 %6 = extractvalue { i64, i64 } %call16, 1 %tobool17 = trunc i64 %5 to i1 - %7 = and i64 %5, 256 - %.not = icmp eq i64 %7, 0 - %8 = and i1 %.not, %tobool17 + %7 = and i64 %5, 257 + %.not = icmp eq i64 %7, 1 %frombool23 = and i1 %exclusive, %8 %9 = select i1 %tobool17, i64 %6, i64 72057594037927935 br label %if.end27 diff --git a/bench/rust-analyzer-rs/optimized/2mbx5ptcpq6fo7sc.ll b/bench/rust-analyzer-rs/optimized/2mbx5ptcpq6fo7sc.ll index beda9525e4d..07ed332fe2b 100644 --- a/bench/rust-analyzer-rs/optimized/2mbx5ptcpq6fo7sc.ll +++ b/bench/rust-analyzer-rs/optimized/2mbx5ptcpq6fo7sc.ll @@ -55274,10 +55274,11 @@ define hidden void @_ZN4core4iter6traits8iterator8Iterator8try_fold17hbb1071f76a _ZN4core3ops8function6FnOnce9call_once17hb0440693c96c105aE.exit.i.i.i.i.i: ; preds = %59 %75 = load i8, ptr %69, align 1, !noalias !20720 %76 = xor i1 %68, %71 - %77 = and i1 %68, %71 + %77 = and i8 %70, %67 + %.not.i.i.i.i = icmp eq i8 %77, 0 %78 = icmp ugt i8 %75, %72 %.fr.i.i.i.i.i = freeze i1 %78 - %spec.select.i.i.i.i.i = select i1 %77, i1 %.fr.i.i.i.i.i, i1 %76 + %spec.select.i.i.i.i.i = select i1 %.not.i.i.i.i, i1 %76, i1 %.fr.i.i.i.i.i %spec.select.i.i.i.i = select i1 %spec.select.i.i.i.i.i, i8 %75, i8 %72 %spec.select2.i.i.i.i = select i1 %spec.select.i.i.i.i.i, i8 %67, i8 %70 br label %"_ZN15ra_ap_rustc_abi6layout14layout_of_enum28_$u7b$$u7b$closure$u7d$$u7d$28_$u7b$$u7b$closure$u7d$$u7d$17had0bb322aadcd291E.exit.i.i.i" @@ -55772,10 +55773,11 @@ switch.lookup: ; preds = %.lr.ph, %216 _ZN4core3ops8function6FnOnce9call_once17hb0440693c96c105aE.exit.i.i.i.i.i: ; preds = %179 %198 = load i8, ptr %192, align 1, !noalias !20785 %199 = xor i1 %191, %194 - %200 = and i1 %191, %194 + %200 = and i8 %193, %190 + %.not3.i.i.i.i = icmp eq i8 %200, 0 %201 = icmp ugt i8 %198, %195 %.fr.i.i.i.i.i = freeze i1 %201 - %spec.select.i.i.i.i.i = select i1 %200, i1 %.fr.i.i.i.i.i, i1 %199 + %spec.select.i.i.i.i.i = select i1 %.not3.i.i.i.i, i1 %199, i1 %.fr.i.i.i.i.i %spec.select.i.i.i.i = select i1 %spec.select.i.i.i.i.i, i8 %198, i8 %195 %spec.select2.i.i.i.i = select i1 %spec.select.i.i.i.i.i, i8 %190, i8 %193 br label %"_ZN15ra_ap_rustc_abi6layout14layout_of_enum28_$u7b$$u7b$closure$u7d$$u7d$17h0e31ac72b6de48b3E.exit.i.i.i" diff --git a/bench/rust-analyzer-rs/optimized/357j944nkpwuonjr.ll b/bench/rust-analyzer-rs/optimized/357j944nkpwuonjr.ll index e3dacacfe6c..12b6d937762 100644 --- a/bench/rust-analyzer-rs/optimized/357j944nkpwuonjr.ll +++ b/bench/rust-analyzer-rs/optimized/357j944nkpwuonjr.ll @@ -88763,11 +88763,9 @@ _ZN13rust_analyzer3lsp10from_proto10file_range17hc057e6857beeb958E.exit: ; preds to label %"_ZN4core3ptr44drop_in_place$LT$lsp_types..hover..Hover$GT$17h94e41d11a87f7c3aE.exit" unwind label %141 114: ; preds = %107 - %115 = trunc i40 %111 to i1 - %116 = and i40 %111, 4311810304 - %or.cond112 = icmp ne i40 %116, 0 - %or.cond.not = or i1 %or.cond112, %115 - br i1 %or.cond.not, label %_ZN13rust_analyzer6config18HoverActionsConfig4none17hb36a5b55c4f22138E.exit.thread, label %124 + %115 = and i40 %111, 4311810305 + %or.cond = icmp eq i40 %115, 0 + br i1 %or.cond, label %123, label %_ZN13rust_analyzer6config18HoverActionsConfig4none17hb36a5b55c4f22138E.exit.thread _ZN13rust_analyzer6config18HoverActionsConfig4none17hb36a5b55c4f22138E.exit.thread: ; preds = %114 %117 = getelementptr inbounds nuw i8, ptr %16, i64 32 diff --git a/bench/rust-analyzer-rs/optimized/3o2zsvb0ik8z2nqt.ll b/bench/rust-analyzer-rs/optimized/3o2zsvb0ik8z2nqt.ll index 1556317a518..2e84a32a826 100644 --- a/bench/rust-analyzer-rs/optimized/3o2zsvb0ik8z2nqt.ll +++ b/bench/rust-analyzer-rs/optimized/3o2zsvb0ik8z2nqt.ll @@ -67081,10 +67081,8 @@ define hidden void @"_ZN11ide_assists14assist_context7Assists3add28_$u7b$$u7b$cl _ZN11ide_assists8handlers15merge_nested_if15has_logic_op_or17hfd5081ed5c762da8E.exit.i: ; preds = %30 %33 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.copyload, i64 8 %34 = tail call i16 @"_ZN6syntax3ast8expr_ext56_$LT$impl$u20$syntax..ast..generated..nodes..BinExpr$GT$7op_kind17h2450c3baa4babd9fE"(ptr noalias noundef nonnull readonly align 8 dereferenceable(8) %33), !noalias !19017 - %.sroa.47.0.extract.shift.mask.i.i = and i16 %34, -256 - %cond.i.i = icmp eq i16 %.sroa.47.0.extract.shift.mask.i.i, 768 - %35 = trunc i16 %34 to i1 - %spec.select.i.i = and i1 %cond.i.i, %35 + %.sroa.47.0.extract.shift.mask.i.i = and i16 %34, -255 + %cond.i.i = icmp eq i16 %.sroa.47.0.extract.shift.mask.i.i, 769 br i1 %spec.select.i.i, label %57, label %_ZN11ide_assists8handlers15merge_nested_if15has_logic_op_or17hfd5081ed5c762da8E.exit.thread.i _ZN11ide_assists8handlers15merge_nested_if15has_logic_op_or17hfd5081ed5c762da8E.exit.thread.i: ; preds = %_ZN11ide_assists8handlers15merge_nested_if15has_logic_op_or17hfd5081ed5c762da8E.exit.i, %30 @@ -67311,11 +67309,9 @@ _ZN5alloc3fmt6format17h7ead8f60e83381d7E.exit.i: ; preds = %95 br label %"_ZN4core3ptr51drop_in_place$LT$rowan..syntax_text..SyntaxText$GT$17hdae0f8e6e121ab75E.exit34.i" _ZN11ide_assists8handlers15merge_nested_if15has_logic_op_or17hfd5081ed5c762da8E.exit17.i: ; preds = %82 - %.sroa.47.0.extract.shift.mask.i13.i = and i16 %84, -256 - %cond.i14.i = icmp eq i16 %.sroa.47.0.extract.shift.mask.i13.i, 768 - %108 = trunc i16 %84 to i1 - %spec.select.i15.i = and i1 %cond.i14.i, %108 - br i1 %spec.select.i15.i, label %110, label %_ZN11ide_assists8handlers15merge_nested_if15has_logic_op_or17hfd5081ed5c762da8E.exit17.thread.i + %.sroa.47.0.extract.shift.mask.i13.i = and i16 %84, -255 + %cond.i14.i = icmp eq i16 %.sroa.47.0.extract.shift.mask.i13.i, 769 + br i1 %cond.i14.i, label %110, label %_ZN11ide_assists8handlers15merge_nested_if15has_logic_op_or17hfd5081ed5c762da8E.exit15.thread.i _ZN11ide_assists8handlers15merge_nested_if15has_logic_op_or17hfd5081ed5c762da8E.exit17.thread.i: ; preds = %_ZN11ide_assists8handlers15merge_nested_if15has_logic_op_or17hfd5081ed5c762da8E.exit17.i, %78 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %17), !noalias !19017 diff --git a/bench/rust-analyzer-rs/optimized/k5mtltw7nxmadpl.ll b/bench/rust-analyzer-rs/optimized/k5mtltw7nxmadpl.ll index 2866e437aa0..8abb44ffb51 100644 --- a/bench/rust-analyzer-rs/optimized/k5mtltw7nxmadpl.ll +++ b/bench/rust-analyzer-rs/optimized/k5mtltw7nxmadpl.ll @@ -50838,11 +50838,9 @@ define noundef zeroext i1 @_ZN13rust_analyzer6config6Config43did_save_text_docum %.sroa.0.0.insert.insert.i = phi i32 [ %24, %9 ], [ 3, %1 ], [ 3, %5 ] %25 = and i32 %.sroa.0.0.insert.insert.i, 255 %26 = icmp ne i32 %25, 3 - %27 = and i32 %.sroa.0.0.insert.insert.i, 16777216 - %28 = icmp ne i32 %27, 0 - %29 = trunc i32 %.sroa.0.0.insert.insert.i to i1 - %30 = and i1 %26, %29 - %spec.select = and i1 %28, %30 + %27 = and i32 %.sroa.0.0.insert.insert.i, 16777217 + %28 = icmp eq i32 %27, 16777217 + %spec.select = and i1 %26, %28 ret i1 %spec.select } diff --git a/bench/spike/optimized/sim.ll b/bench/spike/optimized/sim.ll index 66b0f3ad9f5..165a7d7d848 100644 --- a/bench/spike/optimized/sim.ll +++ b/bench/spike/optimized/sim.ll @@ -5815,64 +5815,63 @@ declare void @_ZN16remote_bitbang_t4tickEv(ptr noundef nonnull align 8 dereferen ; Function Attrs: mustprogress uwtable define void @_ZN5sim_t10read_chunkEmmPv(ptr noundef nonnull readonly align 8 captures(none) dereferenceable(2800) %0, i64 noundef %1, i64 %2, ptr noundef writeonly captures(none) initializes((0, 8)) %3) unnamed_addr #7 align 2 personality ptr @__gxx_personality_v0 { -_ZNK13xlate_flags_t17is_special_accessEv.exit: - %4 = alloca %class.target_endian, align 8 - %5 = alloca %"class.std::tuple.313", align 8 - %6 = getelementptr inbounds nuw i8, ptr %0, i64 720 - %7 = load ptr, ptr %6, align 8, !tbaa !211 - call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #32 - store i64 0, ptr %4, align 8, !tbaa !435 - %8 = lshr i64 %1, 12 - %9 = getelementptr inbounds nuw i8, ptr %7, i64 39056 - %10 = and i64 %8, 255 - %11 = getelementptr inbounds nuw [256 x i64], ptr %9, i64 0, i64 %10 - %12 = load i64, ptr %11, align 8, !tbaa !216 - %13 = icmp ne i64 %12, %8 - %14 = and i64 %1, 7 - %15 = icmp ne i64 %14, 0 - %brmerge.i = select i1 %15, i1 true, i1 %13 - br i1 %brmerge.i, label %.critedge.i, label %16, !prof !437 - -16: ; preds = %_ZNK13xlate_flags_t17is_special_accessEv.exit - %17 = getelementptr inbounds nuw i8, ptr %7, i64 32912 - %18 = getelementptr inbounds nuw [256 x %struct.tlb_entry_t], ptr %17, i64 0, i64 %10 - %19 = load ptr, ptr %18, align 8, !tbaa !438 - %20 = getelementptr inbounds nuw i8, ptr %19, i64 %1 - %21 = load i64, ptr %20, align 8 - store i64 %21, ptr %4, align 8 - br label %22 - -.critedge.i: ; preds = %_ZNK13xlate_flags_t17is_special_accessEv.exit - call void @_ZN5mmu_t14load_slow_pathEmmPh13xlate_flags_t(ptr noundef nonnull align 8 dereferenceable(43168) %7, i64 noundef %1, i64 noundef 8, ptr noundef nonnull %4, i8 0) - br label %22 - -22: ; preds = %.critedge.i, %16 - %23 = getelementptr inbounds nuw i8, ptr %7, i64 80 - %24 = load ptr, ptr %23, align 8, !tbaa !440 - %.not.i = icmp eq ptr %24, null - br i1 %.not.i, label %_ZN5mmu_t4loadImEET_m13xlate_flags_t.exit, label %25 - -25: ; preds = %22 - %26 = getelementptr inbounds nuw i8, ptr %24, i64 3969 - %27 = load i8, ptr %26, align 1, !tbaa !441, !range !279, !noundef !280 - %28 = trunc nuw i8 %27 to i1 - br i1 %28, label %29, label %_ZN5mmu_t4loadImEET_m13xlate_flags_t.exit, !prof !158 - -29: ; preds = %25 - %30 = getelementptr inbounds nuw i8, ptr %24, i64 3888 - call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %5) #32 - store i8 8, ptr %5, align 8, !tbaa !442 - %31 = getelementptr inbounds nuw i8, ptr %5, i64 8 - store i64 0, ptr %31, align 8, !tbaa !444 - %32 = getelementptr inbounds nuw i8, ptr %5, i64 16 - store i64 %1, ptr %32, align 8, !tbaa !446 - call void @_ZNSt6vectorISt5tupleIJmmhEESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %30, ptr noundef nonnull align 8 dereferenceable(24) %5) - call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) #32 + %5 = alloca %class.target_endian, align 8 + %4 = alloca %"class.std::tuple.313", align 8 + %7 = getelementptr inbounds nuw i8, ptr %0, i64 720 + %8 = load ptr, ptr %7, align 8, !tbaa !211 + call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #32 + store i64 0, ptr %5, align 8, !tbaa !435 + %9 = lshr i64 %1, 12 + %10 = getelementptr inbounds nuw i8, ptr %8, i64 39056 + %11 = and i64 %9, 255 + %12 = getelementptr inbounds nuw [256 x i64], ptr %10, i64 0, i64 %11 + %13 = load i64, ptr %12, align 8, !tbaa !216 + %14 = icmp ne i64 %13, %9 + %15 = and i64 %1, 7 + %16 = icmp ne i64 %15, 0 + %brmerge.i = select i1 %16, i1 true, i1 %14 + br i1 %brmerge.i, label %.critedge.i, label %17, !prof !437 + +17: ; preds = %4 + %18 = getelementptr inbounds nuw i8, ptr %8, i64 32912 + %17 = getelementptr inbounds nuw [256 x %struct.tlb_entry_t], ptr %18, i64 0, i64 %11 + %20 = load ptr, ptr %17, align 8, !tbaa !438 + %21 = getelementptr inbounds nuw i8, ptr %20, i64 %1 + %22 = load i64, ptr %21, align 8 + store i64 %22, ptr %5, align 8 + br label %23 + +.critedge.i: ; preds = %4 + call void @_ZN5mmu_t14load_slow_pathEmmPh13xlate_flags_t(ptr noundef nonnull align 8 dereferenceable(43168) %8, i64 noundef %1, i64 noundef 8, ptr noundef nonnull %5, i8 0) + br label %23 + +23: ; preds = %.critedge.i, %17 + %24 = getelementptr inbounds nuw i8, ptr %8, i64 80 + %25 = load ptr, ptr %24, align 8, !tbaa !440 + %.not.i = icmp eq ptr %25, null + br i1 %.not.i, label %_ZN5mmu_t4loadImEET_m13xlate_flags_t.exit, label %26 + +26: ; preds = %23 + %27 = getelementptr inbounds nuw i8, ptr %25, i64 3969 + %28 = load i8, ptr %27, align 1, !tbaa !441, !range !279, !noundef !280 + %29 = trunc nuw i8 %28 to i1 + br i1 %29, label %30, label %_ZN5mmu_t4loadImEET_m13xlate_flags_t.exit, !prof !158 + +30: ; preds = %26 + %31 = getelementptr inbounds nuw i8, ptr %25, i64 3888 + call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %6) #32 + store i8 8, ptr %6, align 8, !tbaa !442 + %32 = getelementptr inbounds nuw i8, ptr %6, i64 8 + store i64 0, ptr %32, align 8, !tbaa !444 + %33 = getelementptr inbounds nuw i8, ptr %6, i64 16 + store i64 %1, ptr %33, align 8, !tbaa !446 + call void @_ZNSt6vectorISt5tupleIJmmhEESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %31, ptr noundef nonnull align 8 dereferenceable(24) %6) + call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4) #32 br label %_ZN5mmu_t4loadImEET_m13xlate_flags_t.exit -_ZN5mmu_t4loadImEET_m13xlate_flags_t.exit: ; preds = %22, %25, %29 - %.sroa.0.0.copyload.i = load i64, ptr %4, align 8 - call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #32 +_ZN5mmu_t4loadImEET_m13xlate_flags_t.exit: ; preds = %23, %26, %30 + %.sroa.0.0.copyload.i = load i64, ptr %5, align 8 + call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #32 store i64 %.sroa.0.0.copyload.i, ptr %3, align 1 ret void } diff --git a/bench/turborepo-rs/optimized/eyin3u3cupdp2wcinr2t4x92g.ll b/bench/turborepo-rs/optimized/eyin3u3cupdp2wcinr2t4x92g.ll index 4df2201a8cc..a5569c7d394 100644 --- a/bench/turborepo-rs/optimized/eyin3u3cupdp2wcinr2t4x92g.ll +++ b/bench/turborepo-rs/optimized/eyin3u3cupdp2wcinr2t4x92g.ll @@ -827,14 +827,15 @@ _RINvYINtNtNtNtCs1LoaDTb72WA_4core4iter8adapters3map3MapINtNtNtBc_5slice4iter4It call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) %.not22.i.us = icmp eq i8 %.pre9.fr, 2 %.sroa.58.0.copyload.i.us = load i8, ptr %.sroa.58.0..sroa_idx.i, align 1, !noalias !238 - %24 = trunc i8 %.pre9.fr to i1 + %24 = and i8 %.pre9.fr, 1 + %.sroa.07.0.not.i.us = icmp eq i8 %24, 0 %spec.select = select i1 %.not22.i.us, i8 %.sroa.58.014.i.us, i8 %.sroa.58.0.copyload.i.us call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6), !noalias !225 - %25 = icmp eq i8 %13, %spec.select - %or.cond.us = select i1 %24, i1 %25, i1 false - %.not23.i.us = icmp ne ptr %15, %8 - %or.cond.not = select i1 %or.cond.us, i1 %.not23.i.us, i1 false - br i1 %or.cond.not, label %_RNCNvXsm_NtCseG2FYMysgNb_3wax5tokenRINtB7_11AlternativeTjjEEINtNtB7_8variance12UnitVarianceNtBZ_13InvariantSizeE13unit_variance0B9_.exit.i.us, label %_RINvYINtNtNtCs1LoaDTb72WA_4core5slice4iter4IterINtNtCs68wO5nsWeTG_5alloc3vec3VecNtNtCseG2FYMysgNb_3wax5token5TokenEENtNtNtNtBa_4iter6traits8iterator8Iterator8try_folduNCINvNtNtB1W_8adapters3map12map_try_foldRBJ_INtNtB1i_8variance8VarianceNtB3q_13InvariantSizeEuINtNtNtBa_3ops12control_flow11ControlFlowuENCNvXsm_B1i_RINtB1i_11AlternativeTjjEEINtB3q_12UnitVarianceB3O_E13unit_variance0NCIB2I_B3n_B3n_uB4b_NvYB3n_IB5v_B3O_E13unit_varianceNCINvNvB1Q_3all5checkB3n_NCNvYINtB2K_3MapB3_B4S_EINtB3q_19DisjunctiveVarianceB3O_E20disjunctive_variances_0E0E0E0B4b_EB1k_.llvm.11100904734654111133.exit.loopexit.loopexit + %25 = icmp ne i8 %13, %spec.select + %or.cond.us = select i1 %.sroa.07.0.not.i.us, i1 true, i1 %25 + %.not23.i.us = icmp eq ptr %15, %8 + %or.cond.not = select i1 %or.cond.us, i1 true, i1 %.not23.i.us + br i1 %or.cond.not, label %_RINvYINtNtNtCs1LoaDTb72WA_4core5slice4iter4IterINtNtCs68wO5nsWeTG_5alloc3vec3VecNtNtCseG2FYMysgNb_3wax5token5TokenEENtNtNtNtBa_4iter6traits8iterator8Iterator8try_folduNCINvNtNtB1W_8adapters3map12map_try_foldRBJ_INtNtB1i_8variance8VarianceNtB3q_13InvariantSizeEuINtNtNtBa_3ops12control_flow11ControlFlowuENCNvXsm_B1i_RINtB1i_11AlternativeTjjEEINtB3q_12UnitVarianceB3O_E13unit_variance0NCIB2I_B3n_B3n_uB4b_NvYB3n_IB5v_B3O_E13unit_varianceNCINvNvB1Q_3all5checkB3n_NCNvYINtB2K_3MapB3_B4S_EINtB3q_19DisjunctiveVarianceB3O_E20disjunctive_variances_0E0E0E0B4b_EB1k_.llvm.11100904734654111133.exit.loopexit.loopexit, label %_RNCNvXsm_NtCseG2FYMysgNb_3wax5tokenRINtB7_11AlternativeTjjEEINtNtB7_8variance12UnitVarianceNtBZ_13InvariantSizeE13unit_variance0B9_.exit.i.us _RNCNvXsm_NtCseG2FYMysgNb_3wax5tokenRINtB7_11AlternativeTjjEEINtNtB7_8variance12UnitVarianceNtBZ_13InvariantSizeE13unit_variance0B9_.exit.i: ; preds = %_RNCNvXsm_NtCseG2FYMysgNb_3wax5tokenRINtB7_11AlternativeTjjEEINtNtB7_8variance12UnitVarianceNtBZ_13InvariantSizeE13unit_variance0B9_.exit.lr.ph.i, %37 %26 = phi ptr [ %27, %37 ], [ %.promoted.i, %_RNCNvXsm_NtCseG2FYMysgNb_3wax5tokenRINtB7_11AlternativeTjjEEINtNtB7_8variance12UnitVarianceNtBZ_13InvariantSizeE13unit_variance0B9_.exit.lr.ph.i ] @@ -878,13 +879,14 @@ _RINvYINtNtNtNtCs1LoaDTb72WA_4core4iter8adapters3map3MapINtNtNtBc_5slice4iter4It call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) %.not22.i = icmp eq i8 %.pre.fr, 2 %.sroa.7.0.copyload.i = load i64, ptr %.sroa.7.0..sroa_idx.i, align 8, !noalias !238 - %36 = trunc i8 %.pre.fr to i1 + %36 = and i8 %.pre.fr, 1 + %.sroa.07.0.not.i = icmp ne i8 %36, 0 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6), !noalias !225 %spec.select21 = select i1 %.not22.i, i64 0, i64 %.sroa.7.0.copyload.i br label %37 37: ; preds = %_RINvYINtNtNtNtCs1LoaDTb72WA_4core4iter8adapters3map3MapINtNtNtBc_5slice4iter4IterNtNtCseG2FYMysgNb_3wax5token5TokenENvYRB1h_INtNtB1j_8variance12UnitVarianceNtB21_13InvariantSizeE13unit_varianceENtNtNtBa_6traits8iterator8Iterator6reduceNvYINtB21_8VarianceB2u_ENtNtNtBc_3ops5arith3Add3addEB1l_.llvm.5393772610634076635.exit, %_RINvYINtNtNtNtCs1LoaDTb72WA_4core4iter8adapters3map3MapINtNtNtBc_5slice4iter4IterNtNtCseG2FYMysgNb_3wax5token5TokenENvYRB1h_INtNtB1j_8variance12UnitVarianceNtB21_13InvariantSizeE13unit_varianceENtNtNtBa_6traits8iterator8Iterator6reduceNvYINtB21_8VarianceB2u_ENtNtNtBc_3ops5arith3Add3addEB1l_.llvm.5393772610634076635.exit.thread - %38 = phi i1 [ false, %_RINvYINtNtNtNtCs1LoaDTb72WA_4core4iter8adapters3map3MapINtNtNtBc_5slice4iter4IterNtNtCseG2FYMysgNb_3wax5token5TokenENvYRB1h_INtNtB1j_8variance12UnitVarianceNtB21_13InvariantSizeE13unit_varianceENtNtNtBa_6traits8iterator8Iterator6reduceNvYINtB21_8VarianceB2u_ENtNtNtBc_3ops5arith3Add3addEB1l_.llvm.5393772610634076635.exit.thread ], [ %36, %_RINvYINtNtNtNtCs1LoaDTb72WA_4core4iter8adapters3map3MapINtNtNtBc_5slice4iter4IterNtNtCseG2FYMysgNb_3wax5token5TokenENvYRB1h_INtNtB1j_8variance12UnitVarianceNtB21_13InvariantSizeE13unit_varianceENtNtNtBa_6traits8iterator8Iterator6reduceNvYINtB21_8VarianceB2u_ENtNtNtBc_3ops5arith3Add3addEB1l_.llvm.5393772610634076635.exit ] + %38 = phi i1 [ false, %_RINvYINtNtNtNtCs1LoaDTb72WA_4core4iter8adapters3map3MapINtNtNtBc_5slice4iter4IterNtNtCseG2FYMysgNb_3wax5token5TokenENvYRB1h_INtNtB1j_8variance12UnitVarianceNtB21_13InvariantSizeE13unit_varianceENtNtNtBa_6traits8iterator8Iterator6reduceNvYINtB21_8VarianceB2u_ENtNtNtBc_3ops5arith3Add3addEB1l_.llvm.5393772610634076635.exit.thread ], [ %.sroa.07.0.not.i, %_RINvYINtNtNtNtCs1LoaDTb72WA_4core4iter8adapters3map3MapINtNtNtBc_5slice4iter4IterNtNtCseG2FYMysgNb_3wax5token5TokenENvYRB1h_INtNtB1j_8variance12UnitVarianceNtB21_13InvariantSizeE13unit_varianceENtNtNtBa_6traits8iterator8Iterator6reduceNvYINtB21_8VarianceB2u_ENtNtNtBc_3ops5arith3Add3addEB1l_.llvm.5393772610634076635.exit ] %39 = phi i64 [ 0, %_RINvYINtNtNtNtCs1LoaDTb72WA_4core4iter8adapters3map3MapINtNtNtBc_5slice4iter4IterNtNtCseG2FYMysgNb_3wax5token5TokenENvYRB1h_INtNtB1j_8variance12UnitVarianceNtB21_13InvariantSizeE13unit_varianceENtNtNtBa_6traits8iterator8Iterator6reduceNvYINtB21_8VarianceB2u_ENtNtNtBc_3ops5arith3Add3addEB1l_.llvm.5393772610634076635.exit.thread ], [ %spec.select21, %_RINvYINtNtNtNtCs1LoaDTb72WA_4core4iter8adapters3map3MapINtNtNtBc_5slice4iter4IterNtNtCseG2FYMysgNb_3wax5token5TokenENvYRB1h_INtNtB1j_8variance12UnitVarianceNtB21_13InvariantSizeE13unit_varianceENtNtNtBa_6traits8iterator8Iterator6reduceNvYINtB21_8VarianceB2u_ENtNtNtBc_3ops5arith3Add3addEB1l_.llvm.5393772610634076635.exit ] %40 = icmp ne i64 %12, %39 %or.cond5.not = select i1 %38, i1 true, i1 %40 @@ -892,12 +894,8 @@ _RINvYINtNtNtNtCs1LoaDTb72WA_4core4iter8adapters3map3MapINtNtNtBc_5slice4iter4It %or.cond24 = select i1 %or.cond5.not, i1 true, i1 %.not23.i br i1 %or.cond24, label %_RINvYINtNtNtCs1LoaDTb72WA_4core5slice4iter4IterINtNtCs68wO5nsWeTG_5alloc3vec3VecNtNtCseG2FYMysgNb_3wax5token5TokenEENtNtNtNtBa_4iter6traits8iterator8Iterator8try_folduNCINvNtNtB1W_8adapters3map12map_try_foldRBJ_INtNtB1i_8variance8VarianceNtB3q_13InvariantSizeEuINtNtNtBa_3ops12control_flow11ControlFlowuENCNvXsm_B1i_RINtB1i_11AlternativeTjjEEINtB3q_12UnitVarianceB3O_E13unit_variance0NCIB2I_B3n_B3n_uB4b_NvYB3n_IB5v_B3O_E13unit_varianceNCINvNvB1Q_3all5checkB3n_NCNvYINtB2K_3MapB3_B4S_EINtB3q_19DisjunctiveVarianceB3O_E20disjunctive_variances_0E0E0E0B4b_EB1k_.llvm.11100904734654111133.exit, label %_RNCNvXsm_NtCseG2FYMysgNb_3wax5tokenRINtB7_11AlternativeTjjEEINtNtB7_8variance12UnitVarianceNtBZ_13InvariantSizeE13unit_variance0B9_.exit.i -_RINvYINtNtNtCs1LoaDTb72WA_4core5slice4iter4IterINtNtCs68wO5nsWeTG_5alloc3vec3VecNtNtCseG2FYMysgNb_3wax5token5TokenEENtNtNtNtBa_4iter6traits8iterator8Iterator8try_folduNCINvNtNtB1W_8adapters3map12map_try_foldRBJ_INtNtB1i_8variance8VarianceNtB3q_13InvariantSizeEuINtNtNtBa_3ops12control_flow11ControlFlowuENCNvXsm_B1i_RINtB1i_11AlternativeTjjEEINtB3q_12UnitVarianceB3O_E13unit_variance0NCIB2I_B3n_B3n_uB4b_NvYB3n_IB5v_B3O_E13unit_varianceNCINvNvB1Q_3all5checkB3n_NCNvYINtB2K_3MapB3_B4S_EINtB3q_19DisjunctiveVarianceB3O_E20disjunctive_variances_0E0E0E0B4b_EB1k_.llvm.11100904734654111133.exit.loopexit.loopexit: ; preds = %_RINvYINtNtNtNtCs1LoaDTb72WA_4core4iter8adapters3map3MapINtNtNtBc_5slice4iter4IterNtNtCseG2FYMysgNb_3wax5token5TokenENvYRB1h_INtNtB1j_8variance12UnitVarianceNtB21_13InvariantSizeE13unit_varianceENtNtNtBa_6traits8iterator8Iterator6reduceNvYINtB21_8VarianceB2u_ENtNtNtBc_3ops5arith3Add3addEB1l_.llvm.5393772610634076635.exit.us - %.lcssa.i.ph.ph = xor i1 %or.cond.us, true - br label %_RINvYINtNtNtCs1LoaDTb72WA_4core5slice4iter4IterINtNtCs68wO5nsWeTG_5alloc3vec3VecNtNtCseG2FYMysgNb_3wax5token5TokenEENtNtNtNtBa_4iter6traits8iterator8Iterator8try_folduNCINvNtNtB1W_8adapters3map12map_try_foldRBJ_INtNtB1i_8variance8VarianceNtB3q_13InvariantSizeEuINtNtNtBa_3ops12control_flow11ControlFlowuENCNvXsm_B1i_RINtB1i_11AlternativeTjjEEINtB3q_12UnitVarianceB3O_E13unit_variance0NCIB2I_B3n_B3n_uB4b_NvYB3n_IB5v_B3O_E13unit_varianceNCINvNvB1Q_3all5checkB3n_NCNvYINtB2K_3MapB3_B4S_EINtB3q_19DisjunctiveVarianceB3O_E20disjunctive_variances_0E0E0E0B4b_EB1k_.llvm.11100904734654111133.exit - -_RINvYINtNtNtCs1LoaDTb72WA_4core5slice4iter4IterINtNtCs68wO5nsWeTG_5alloc3vec3VecNtNtCseG2FYMysgNb_3wax5token5TokenEENtNtNtNtBa_4iter6traits8iterator8Iterator8try_folduNCINvNtNtB1W_8adapters3map12map_try_foldRBJ_INtNtB1i_8variance8VarianceNtB3q_13InvariantSizeEuINtNtNtBa_3ops12control_flow11ControlFlowuENCNvXsm_B1i_RINtB1i_11AlternativeTjjEEINtB3q_12UnitVarianceB3O_E13unit_variance0NCIB2I_B3n_B3n_uB4b_NvYB3n_IB5v_B3O_E13unit_varianceNCINvNvB1Q_3all5checkB3n_NCNvYINtB2K_3MapB3_B4S_EINtB3q_19DisjunctiveVarianceB3O_E20disjunctive_variances_0E0E0E0B4b_EB1k_.llvm.11100904734654111133.exit: ; preds = %37, %.thread, %_RINvYINtNtNtCs1LoaDTb72WA_4core5slice4iter4IterINtNtCs68wO5nsWeTG_5alloc3vec3VecNtNtCseG2FYMysgNb_3wax5token5TokenEENtNtNtNtBa_4iter6traits8iterator8Iterator8try_folduNCINvNtNtB1W_8adapters3map12map_try_foldRBJ_INtNtB1i_8variance8VarianceNtB3q_13InvariantSizeEuINtNtNtBa_3ops12control_flow11ControlFlowuENCNvXsm_B1i_RINtB1i_11AlternativeTjjEEINtB3q_12UnitVarianceB3O_E13unit_variance0NCIB2I_B3n_B3n_uB4b_NvYB3n_IB5v_B3O_E13unit_varianceNCINvNvB1Q_3all5checkB3n_NCNvYINtB2K_3MapB3_B4S_EINtB3q_19DisjunctiveVarianceB3O_E20disjunctive_variances_0E0E0E0B4b_EB1k_.llvm.11100904734654111133.exit.loopexit.loopexit, %3 - %.lcssa.i = phi i1 [ false, %3 ], [ true, %.thread ], [ %.lcssa.i.ph.ph, %_RINvYINtNtNtCs1LoaDTb72WA_4core5slice4iter4IterINtNtCs68wO5nsWeTG_5alloc3vec3VecNtNtCseG2FYMysgNb_3wax5token5TokenEENtNtNtNtBa_4iter6traits8iterator8Iterator8try_folduNCINvNtNtB1W_8adapters3map12map_try_foldRBJ_INtNtB1i_8variance8VarianceNtB3q_13InvariantSizeEuINtNtNtBa_3ops12control_flow11ControlFlowuENCNvXsm_B1i_RINtB1i_11AlternativeTjjEEINtB3q_12UnitVarianceB3O_E13unit_variance0NCIB2I_B3n_B3n_uB4b_NvYB3n_IB5v_B3O_E13unit_varianceNCINvNvB1Q_3all5checkB3n_NCNvYINtB2K_3MapB3_B4S_EINtB3q_19DisjunctiveVarianceB3O_E20disjunctive_variances_0E0E0E0B4b_EB1k_.llvm.11100904734654111133.exit.loopexit.loopexit ], [ %or.cond5.not, %37 ] +_RINvYINtNtNtCs1LoaDTb72WA_4core5slice4iter4IterINtNtCs68wO5nsWeTG_5alloc3vec3VecNtNtCseG2FYMysgNb_3wax5token5TokenEENtNtNtNtBa_4iter6traits8iterator8Iterator8try_folduNCINvNtNtB1W_8adapters3map12map_try_foldRBJ_INtNtB1i_8variance8VarianceNtB3q_13InvariantSizeEuINtNtNtBa_3ops12control_flow11ControlFlowuENCNvXsm_B1i_RINtB1i_11AlternativeTjjEEINtB3q_12UnitVarianceB3O_E13unit_variance0NCIB2I_B3n_B3n_uB4b_NvYB3n_IB5v_B3O_E13unit_varianceNCINvNvB1Q_3all5checkB3n_NCNvYINtB2K_3MapB3_B4S_EINtB3q_19DisjunctiveVarianceB3O_E20disjunctive_variances_0E0E0E0B4b_EB1k_.llvm.11100904734654111133.exit.loopexit.loopexit: ; preds = %37, %_RINvYINtNtNtNtCs1LoaDTb72WA_4core4iter8adapters3map3MapINtNtNtBc_5slice4iter4IterNtNtCseG2FYMysgNb_3wax5token5TokenENvYRB1h_INtNtB1j_8variance12UnitVarianceNtB21_13InvariantSizeE13unit_varianceENtNtNtBa_6traits8iterator8Iterator6reduceNvYINtB21_8VarianceB2u_ENtNtNtBc_3ops5arith3Add3addEB1l_.llvm.5393772610634076635.exit.us, %.thread, %3 + %.lcssa.i = phi i1 [ false, %3 ], [ true, %.thread ], [ %or.cond.us, %_RINvYINtNtNtNtCs1LoaDTb72WA_4core4iter8adapters3map3MapINtNtNtBc_5slice4iter4IterNtNtCseG2FYMysgNb_3wax5token5TokenENvYRB1h_INtNtB1j_8variance12UnitVarianceNtB21_13InvariantSizeE13unit_varianceENtNtNtBa_6traits8iterator8Iterator6reduceNvYINtB21_8VarianceB2u_ENtNtNtBc_3ops5arith3Add3addEB1l_.llvm.5393772610634076635.exit.us ], [ %or.cond5.not, %37 ] ret i1 %.lcssa.i } @@ -3284,7 +3282,8 @@ _RNCNvXsm_NtCseG2FYMysgNb_3wax5tokenRINtB7_11AlternativeTjjEEINtNtB7_8variance12 %.not22 = icmp eq i8 %15, 2 %.sroa.58.0.copyload = load i8, ptr %.sroa.58.0..sroa_idx, align 1 %.sroa.7.0.copyload = load i64, ptr %.sroa.7.0..sroa_idx, align 8 - %16 = trunc i8 %15 to i1 + %16 = and i8 %15, 1 + %.sroa.07.0.not = icmp eq i8 %16, 0 %.sroa.58.1 = select i1 %.not22, i8 %.sroa.58.014, i8 %.sroa.58.0.copyload %.sroa.7.0 = select i1 %.not22, i64 0, i64 %.sroa.7.0.copyload call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3), !noalias !1083 @@ -3293,10 +3292,10 @@ _RNCNvXsm_NtCseG2FYMysgNb_3wax5tokenRINtB7_11AlternativeTjjEEINtNtB7_8variance12 br i1 %trunc.i.i.i.i, label %19, label %18 18: ; preds = %_RNCNvXsm_NtCseG2FYMysgNb_3wax5tokenRINtB7_11AlternativeTjjEEINtNtB7_8variance12UnitVarianceNtBZ_13InvariantSizeE13unit_variance0B9_.exit - br i1 %16, label %_RNvXs2U_NtNtCs1LoaDTb72WA_4core5slice4iterINtB6_4IterINtNtCs68wO5nsWeTG_5alloc3vec3VecNtNtCseG2FYMysgNb_3wax5token5TokenEENtNtNtNtBa_4iter6traits8iterator8Iterator4nextB1q_.llvm.11100904734654111133.exit, label %_RNCINvNtNtNtCs1LoaDTb72WA_4core4iter8adapters3map12map_try_foldINtNtNtCseG2FYMysgNb_3wax5token8variance8VarianceNtB12_13InvariantSizeEBZ_uINtNtNtBa_3ops12control_flow11ControlFlowuENvYBZ_INtB12_12UnitVarianceB1M_E13unit_varianceNCINvNvNtNtNtB8_6traits8iterator8Iterator3all5checkBZ_NCNvYINtB4_3MapINtNtNtBa_5slice4iter4IterINtNtCs68wO5nsWeTG_5alloc3vec3VecNtB14_5TokenEENCNvXsm_B14_RINtB14_11AlternativeTjjEEIB30_B1M_E13unit_variance0EINtB12_19DisjunctiveVarianceB1M_E20disjunctive_variances_0E0E0B16_.exit + br i1 %.sroa.07.0.not, label %_RNCINvNtNtNtCs1LoaDTb72WA_4core4iter8adapters3map12map_try_foldINtNtNtCseG2FYMysgNb_3wax5token8variance8VarianceNtB12_13InvariantSizeEBZ_uINtNtNtBa_3ops12control_flow11ControlFlowuENvYBZ_INtB12_12UnitVarianceB1M_E13unit_varianceNCINvNvNtNtNtB8_6traits8iterator8Iterator3all5checkBZ_NCNvYINtB4_3MapINtNtNtBa_5slice4iter4IterINtNtCs68wO5nsWeTG_5alloc3vec3VecNtB14_5TokenEENCNvXsm_B14_RINtB14_11AlternativeTjjEEIB30_B1M_E13unit_variance0EINtB12_19DisjunctiveVarianceB1M_E20disjunctive_variances_0E0E0B16_.exit, label %_RNvXs2U_NtNtCs1LoaDTb72WA_4core5slice4iterINtB6_4IterINtNtCs68wO5nsWeTG_5alloc3vec3VecNtNtCseG2FYMysgNb_3wax5token5TokenEENtNtNtNtBa_4iter6traits8iterator8Iterator4nextB1q_.llvm.11100904734654111133.exit 19: ; preds = %_RNCNvXsm_NtCseG2FYMysgNb_3wax5tokenRINtB7_11AlternativeTjjEEINtNtB7_8variance12UnitVarianceNtBZ_13InvariantSizeE13unit_variance0B9_.exit - br i1 %16, label %20, label %_RNvXs2U_NtNtCs1LoaDTb72WA_4core5slice4iterINtB6_4IterINtNtCs68wO5nsWeTG_5alloc3vec3VecNtNtCseG2FYMysgNb_3wax5token5TokenEENtNtNtNtBa_4iter6traits8iterator8Iterator4nextB1q_.llvm.11100904734654111133.exit + br i1 %.sroa.07.0.not, label %_RNvXs2U_NtNtCs1LoaDTb72WA_4core5slice4iterINtB6_4IterINtNtCs68wO5nsWeTG_5alloc3vec3VecNtNtCseG2FYMysgNb_3wax5token5TokenEENtNtNtNtBa_4iter6traits8iterator8Iterator4nextB1q_.llvm.11100904734654111133.exit, label %20 20: ; preds = %19 %21 = load i8, ptr %7, align 1, !range !79, !alias.scope !1086, !noalias !1089, !noundef !5 diff --git a/bench/typst-rs/optimized/4qskctz4kwc33g7b.ll b/bench/typst-rs/optimized/4qskctz4kwc33g7b.ll index a10de61fe7e..f3833bf236c 100644 --- a/bench/typst-rs/optimized/4qskctz4kwc33g7b.ll +++ b/bench/typst-rs/optimized/4qskctz4kwc33g7b.ll @@ -134069,10 +134069,10 @@ define void @"_ZN5typst5model5quote137_$LT$impl$u20$typst..foundations..element. %121 = load i8, ptr %118, align 1, !range !1126, !alias.scope !30692, !noalias !30697, !noundef !4 call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %20), !noalias !30688 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %24) - %122 = trunc i8 %121 to i1 - %.0.i1.i.i.not = xor i1 %.0.i1.i.i, true - %brmerge = select i1 %122, i1 true, i1 %.0.i1.i.i.not - br i1 %brmerge, label %123, label %261 + %122 = and i8 %121, 1 + %spec.select.i = icmp eq i8 %122, 0 + %brmerge = select i1 %spec.select.i, i1 %.0.i1.i.i, i1 false + br i1 %brmerge, label %261, label %123 123: ; preds = %120, %.thread177 call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %59) diff --git a/bench/velox/optimized/StringFunctions.ll b/bench/velox/optimized/StringFunctions.ll index f55cb5a128f..3a2c7ad2f95 100644 --- a/bench/velox/optimized/StringFunctions.ll +++ b/bench/velox/optimized/StringFunctions.ll @@ -4482,10 +4482,8 @@ if.end.i: ; preds = %invoke.cont unreachable invoke.cont12: ; preds = %if.then.i - %8 = and i16 %call1.i21, 256 - %tobool.i.i.i = icmp ne i16 %8, 0 - %tobool6.i = trunc i16 %call1.i21 to i1 - %9 = and i1 %tobool.i.i.i, %tobool6.i + %8 = and i16 %call1.i21, 257 + %tobool.i.i.i = icmp eq i16 %8, 257 br i1 %9, label %land.rhs, label %if.end28 land.rhs: ; preds = %invoke.cont12 @@ -7931,10 +7929,8 @@ if.end.i: ; preds = %invoke.cont unreachable invoke.cont12: ; preds = %if.then.i - %8 = and i16 %call1.i21, 256 - %tobool.i.i.i = icmp ne i16 %8, 0 - %tobool6.i = trunc i16 %call1.i21 to i1 - %9 = and i1 %tobool.i.i.i, %tobool6.i + %8 = and i16 %call1.i21, 257 + %tobool.i.i.i = icmp eq i16 %8, 257 br i1 %9, label %land.rhs, label %if.end26 land.rhs: ; preds = %invoke.cont12 diff --git a/bench/verilator/optimized/V3EmitCBase.ll b/bench/verilator/optimized/V3EmitCBase.ll index ff272bb1f5d..64e568b16ec 100644 --- a/bench/verilator/optimized/V3EmitCBase.ll +++ b/bench/verilator/optimized/V3EmitCBase.ll @@ -2286,11 +2286,9 @@ _ZN21EmitCBaseVisitorConst5putnsEPK7AstNodeRKNSt7__cxx1112basic_stringIcSt11char 54: ; preds = %_ZN21EmitCBaseVisitorConst5putnsEPK7AstNodeRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit45, %43 %55 = getelementptr inbounds nuw i8, ptr %1, i64 313 %56 = load i32, ptr %55, align 1 - %57 = trunc i32 %56 to i1 - %58 = and i32 %56, 768 - %59 = icmp eq i32 %58, 256 - %or.cond = and i1 %59, %57 - br i1 %or.cond, label %60, label %70 + %57 = and i32 %56, 769 + %or.cond = icmp eq i32 %57, 257 + br i1 %or.cond, label %58, label %68 60: ; preds = %54 call void @_ZNSaIcEC1Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #16 @@ -2321,7 +2319,7 @@ _ZN21EmitCBaseVisitorConst5putnsEPK7AstNodeRKNSt7__cxx1112basic_stringIcSt11char call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #16 call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #16 %.pre = load i32, ptr %55, align 1 - br label %70 + br label %73 66: ; preds = %.noexc46, %60 %67 = landingpad { ptr, i32 } @@ -2339,25 +2337,25 @@ _ZN21EmitCBaseVisitorConst5putnsEPK7AstNodeRKNSt7__cxx1112basic_stringIcSt11char call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #16 br label %117 -70: ; preds = %_ZN21EmitCBaseVisitorConst5putnsEPK7AstNodeRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit52, %54 - %71 = phi i32 [ %.pre, %_ZN21EmitCBaseVisitorConst5putnsEPK7AstNodeRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit52 ], [ %56, %54 ] - %72 = and i32 %71, 2048 - %.not = icmp eq i32 %72, 0 - br i1 %.not, label %90, label %73 - -73: ; preds = %70 - %74 = and i32 %71, 768 - %75 = icmp eq i32 %74, 256 - br i1 %75, label %80, label %76 - -76: ; preds = %73 - %77 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZN7V3Error19v3errorPrepFileLineB5cxx11E11V3ErrorCodePKcib(i8 4, ptr noundef nonnull @.str.18, i32 noundef 134, i1 noundef zeroext false) - %78 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZN7V3Error10v3errorStrB5cxx11Ev() - %79 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %78, ptr noundef nonnull @.str.19) - call void @_ZNK7AstNode15v3errorEndFatalERNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(152) %1, ptr noundef nonnull align 8 dereferenceable(112) %79) #15 +73: ; preds = %_ZN21EmitCBaseVisitorConst5putnsEPK7AstNodeRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit52, %54 + %69 = phi i32 [ %.pre, %_ZN21EmitCBaseVisitorConst5putnsEPK7AstNodeRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit52 ], [ %56, %54 ] + %70 = and i32 %69, 2048 + %.not = icmp eq i32 %70, 0 + br i1 %.not, label %88, label %71 + +71:; preds = %73 + %72 = and i32 %69, 773 + %73 = icmp eq i32 %72, 256 + br i1 %73, label %78, label %74 + +74: ; preds = %71 + %75 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZN7V3Error19v3errorPrepFileLineB5cxx11E11V3ErrorCodePKcib(i8 4, ptr noundef nonnull @.str.18, i32 noundef 134, i1 noundef zeroext false) + %76 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZN7V3Error10v3errorStrB5cxx11Ev() + %77 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %76, ptr noundef nonnull @.str.19) + call void @_ZNK7AstNode15v3errorEndFatalERNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(152) %1, ptr noundef nonnull align 8 dereferenceable(112) %77) #15 unreachable -80: ; preds = %73 +80: ; preds = %71 call void @_ZNSaIcEC1Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #16 %81 = invoke noundef ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_M_local_dataEv(ptr noundef nonnull align 8 dereferenceable(32) %13) to label %.noexc53 unwind label %86 @@ -2403,7 +2401,7 @@ _ZN21EmitCBaseVisitorConst5putnsEPK7AstNodeRKNSt7__cxx1112basic_stringIcSt11char call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #16 br label %117 -90: ; preds = %_ZN21EmitCBaseVisitorConst5putnsEPK7AstNodeRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit59, %70 +90: ; preds = %_ZN21EmitCBaseVisitorConst5putnsEPK7AstNodeRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit59, %73 call void @_ZN21EmitCBaseVisitorConst15emitCFuncHeaderEPK8AstCFuncPK13AstNodeModuleb(ptr noundef nonnull align 8 dereferenceable(17) %0, ptr noundef nonnull %1, ptr noundef %2, i1 noundef zeroext false) call void @_ZNSaIcEC1Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #16 %91 = invoke noundef ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_M_local_dataEv(ptr noundef nonnull align 8 dereferenceable(32) %15) @@ -2440,21 +2438,21 @@ _ZN21EmitCBaseVisitorConst5putnsEPK7AstNodeRKNSt7__cxx1112basic_stringIcSt11char 97: ; preds = %_ZN21EmitCBaseVisitorConst5putnsEPK7AstNodeRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit66 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %20, ptr noundef nonnull align 8 dereferenceable(32) %26) %98 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6insertEmPKc(ptr noundef nonnull align 8 dereferenceable(32) %20, i64 noundef 0, ptr noundef nonnull @.str.22) + to label %97 unwind label %106 + +97: ; preds = %95 + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EOS4_(ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef nonnull align 8 dereferenceable(32) %96) #16 + %98 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKc(ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef nonnull @.str.15) to label %99 unwind label %108 99: ; preds = %97 - call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EOS4_(ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef nonnull align 8 dereferenceable(32) %98) #16 - %100 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKc(ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef nonnull @.str.15) - to label %101 unwind label %110 - -101: ; preds = %99 - call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EOS4_(ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef nonnull align 8 dereferenceable(32) %100) #16 - %102 = load ptr, ptr %21, align 8 - %103 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %18) #16 - invoke void @_ZN14V3OutFormatter5putnsEPK7AstNodePKc(ptr noundef nonnull align 8 dereferenceable(164) %102, ptr noundef nonnull %1, ptr noundef %103) - to label %_ZN21EmitCBaseVisitorConst5putnsEPK7AstNodeRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit72 unwind label %112 - -_ZN21EmitCBaseVisitorConst5putnsEPK7AstNodeRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit72: ; preds = %101 + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EOS4_(ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef nonnull align 8 dereferenceable(32) %98) #16 + %100 = load ptr, ptr %21, align 8 + %101 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %18) #16 + invoke void @_ZN14V3OutFormatter5putnsEPK7AstNodePKc(ptr noundef nonnull align 8 dereferenceable(164) %100, ptr noundef nonnull %1, ptr noundef %101) + to label %_ZN21EmitCBaseVisitorConst5putnsEPK7AstNodeRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit72 unwind label %110 + +_ZN21EmitCBaseVisitorConst5putnsEPK7AstNodeRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit72:; preds = %99 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #16 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #16 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #16 @@ -2476,29 +2474,29 @@ _ZN21EmitCBaseVisitorConst5putnsEPK7AstNodeRKNSt7__cxx1112basic_stringIcSt11char call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #16 br label %117 +106: ; preds = %95 + %107 = landingpad { ptr, i32 } + cleanup + br label %113 + 108: ; preds = %97 %109 = landingpad { ptr, i32 } cleanup - br label %115 + br label %112 110: ; preds = %99 %111 = landingpad { ptr, i32 } cleanup - br label %114 - -112: ; preds = %101 - %113 = landingpad { ptr, i32 } - cleanup call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #16 br label %114 -114: ; preds = %112, %110 - %.pn39 = phi { ptr, i32 } [ %113, %112 ], [ %111, %110 ] +114: ; preds = %110, %108 + %.pn39 = phi { ptr, i32 } [ %111, %110 ], [ %109, %108 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #16 br label %115 -115: ; preds = %114, %108 - %.pn39.pn = phi { ptr, i32 } [ %.pn39, %114 ], [ %109, %108 ] +115: ; preds = %114, %106 + %.pn39.pn = phi { ptr, i32 } [ %.pn39, %114 ], [ %107, %106 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #16 br label %117 diff --git a/bench/wasmtime-rs/optimized/3vdx8w41hjyzioqv.ll b/bench/wasmtime-rs/optimized/3vdx8w41hjyzioqv.ll index 10af5f9a013..9620a119ba1 100644 --- a/bench/wasmtime-rs/optimized/3vdx8w41hjyzioqv.ll +++ b/bench/wasmtime-rs/optimized/3vdx8w41hjyzioqv.ll @@ -27066,8 +27066,8 @@ _ZN8wasmtime7runtime6module8registry14ModuleRegistry17lookup_frame_info17hcdaf47 %81 = getelementptr inbounds nuw i8, ptr %80, i64 97 %82 = load i8, ptr %81, align 1, !range !3158, !alias.scope !6187, !noundef !4 %brmerge.demorgan27 = and i8 %82, %31 - %brmerge.demorgan = trunc nuw i8 %brmerge.demorgan27 to i1 - %spec.select = select i1 %brmerge.demorgan, i8 1, i8 %.01132 + %brmerge.demorgan.not = icmp eq i8 %brmerge.demorgan27, 0 + %spec.select = select i1 %brmerge.demorgan.not, i8 %.01132, i8 1 br label %_ZN8wasmtime7runtime6module8registry14ModuleRegistry17lookup_frame_info17hcdaf47fe5754c6f1E.exit.thread _ZN8wasmtime7runtime6module8registry14ModuleRegistry17lookup_frame_info17hcdaf47fe5754c6f1E.exit.thread: ; preds = %67, %.noexc, %.thread diff --git a/bench/wasmtime-rs/optimized/50oljwux3amwt8rq.ll b/bench/wasmtime-rs/optimized/50oljwux3amwt8rq.ll index 98e7b783781..48009092d8d 100644 --- a/bench/wasmtime-rs/optimized/50oljwux3amwt8rq.ll +++ b/bench/wasmtime-rs/optimized/50oljwux3amwt8rq.ll @@ -1232,7 +1232,7 @@ define void @_ZN20wasmtime_wit_bindgen4rust13RustGenerator8modes_of17hbef7543a83 %23 = invoke i8 @"_ZN102_$LT$wasmtime_wit_bindgen..InterfaceGenerator$u20$as$u20$wasmtime_wit_bindgen..rust..RustGenerator$GT$9ownership17h1c94743b9a7d39e4E"(ptr align 8 %1) to label %26 unwind label %24, !range !22 -24: ; preds = %35, %39, %38, %28, %_ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6faE.exit, %20 +24: ; preds = %33, %39, %38, %28, %_ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6faE.exit, %20 %25 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr112drop_in_place$LT$alloc..vec..Vec$LT$$LP$alloc..string..String$C$wasmtime_wit_bindgen..rust..TypeMode$RP$$GT$$GT$17h0158f830e82c94fcE"(ptr nonnull align 8 %9) #13 @@ -1258,18 +1258,16 @@ _ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6fa to label %31 unwind label %24 31: ; preds = %28 - %32 = trunc i40 %10 to i1 - %33 = and i40 %10, 16777472 - %34 = icmp eq i40 %33, 16777472 - %or.cond = and i1 %34, %32 - br i1 %or.cond, label %35, label %_ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6faE.exit6.thread - -35: ; preds = %31 - %36 = invoke i8 @"_ZN102_$LT$wasmtime_wit_bindgen..InterfaceGenerator$u20$as$u20$wasmtime_wit_bindgen..rust..RustGenerator$GT$9ownership17h1c94743b9a7d39e4E"(ptr align 8 %1) + %32 = and i40 %10, 16777473 + %.not = icmp eq i40 %32, 16777473 + br i1 %.not, label %33, label %_ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6faE.exit6.thread + +33: ; preds = %31 + %34 = invoke i8 @"_ZN102_$LT$wasmtime_wit_bindgen..InterfaceGenerator$u20$as$u20$wasmtime_wit_bindgen..rust..RustGenerator$GT$9ownership17h1c94743b9a7d39e4E"(ptr align 8 %1) to label %_ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6faE.exit6 unwind label %24 -_ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6faE.exit6: ; preds = %35 - %37 = trunc i8 %36 to i1 +_ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6faE.exit6: ; preds = %33 + %37 = trunc i8 %34 to i1 br i1 %37, label %38, label %_ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6faE.exit6.thread _ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6faE.exit6.thread: ; preds = %31, %39, %_ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6faE.exit6 @@ -1323,29 +1321,22 @@ define void @_ZN20wasmtime_wit_bindgen4rust13RustGenerator10param_name17hc8791f3 %19 = getelementptr inbounds nuw i8, ptr %11, i64 96 %20 = load i64, ptr %19, align 8, !noundef !3 call void @"_ZN59_$LT$str$u20$as$u20$heck..upper_camel..ToUpperCamelCase$GT$19to_upper_camel_case17ha26a7806f7d5045aE"(ptr nonnull sret({ { { i64, ptr, {} }, i64 } }) align 8 %7, ptr nonnull align 1 %18, i64 %20) - %21 = and i40 %8, 16777216 - %.not = icmp eq i40 %21, 0 - br i1 %.not, label %_ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6faE.exit.thread, label %22 + %21 = and i40 %8, 16777473 + %.not = icmp eq i40 %21, 16777473 + br i1 %.not, label %22, label %_ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6faE.exit.thread 22: ; preds = %16 - %23 = trunc i40 %8 to i1 - %24 = and i40 %8, 256 - %.not14 = icmp ne i40 %24, 0 - %or.cond.not = and i1 %.not14, %23 - br i1 %or.cond.not, label %25, label %_ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6faE.exit.thread - -25: ; preds = %22 - %26 = invoke i8 @"_ZN102_$LT$wasmtime_wit_bindgen..InterfaceGenerator$u20$as$u20$wasmtime_wit_bindgen..rust..RustGenerator$GT$9ownership17h1c94743b9a7d39e4E"(ptr align 8 %1) - to label %_ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6faE.exit unwind label %27 - -27: ; preds = %25, %32, %30 - %28 = landingpad { ptr, i32 } + %23 = invoke i8 @"_ZN102_$LT$wasmtime_wit_bindgen..InterfaceGenerator$u20$as$u20$wasmtime_wit_bindgen..rust..RustGenerator$GT$9ownership17h1c94743b9a7d39e4E"(ptr align 8 %1) + to label %_ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6faE.exit unwind label %24 + +24:; preds = %22, %29, %30 + %25 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17hcfc4ef542b4c7efcE"(ptr nonnull align 8 %7) #13 to label %36 unwind label %34 -_ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6faE.exit: ; preds = %25 - %29 = trunc i8 %26 to i1 +_ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6faE.exit: ; preds = %22 + %29 = trunc i8 %23 to i1 br i1 %29, label %30, label %_ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6faE.exit.thread 30: ; preds = %_ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6faE.exit @@ -1353,15 +1344,15 @@ _ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6fa %31 = getelementptr inbounds nuw i8, ptr %5, i64 8 store ptr @"_ZN60_$LT$alloc..string..String$u20$as$u20$core..fmt..Display$GT$3fmt17h501e2ab095e4e83eE", ptr %31, align 8 invoke void @_ZN4core3fmt9Arguments6new_v117h6427ca1b3147dc17E(ptr nonnull sret({ { ptr, i64 }, { ptr, i64 }, { ptr, [1 x i64] } }) align 8 %6, ptr nonnull align 8 @anon.1ed22c87c0bfd8076dc71e37a923bb51.65, i64 2, ptr nonnull align 8 %5, i64 1) - to label %32 unwind label %27 + to label %32 unwind label %24 -_ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6faE.exit.thread: ; preds = %16, %22, %_ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6faE.exit +_ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6faE.exit.thread: ; preds = %16, %_ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6faE.exit call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %7, i64 24, i1 false) br label %33 32: ; preds = %30 invoke void @_ZN5alloc3fmt6format17h087f148fdbec138eE(ptr sret({ { { i64, ptr, {} }, i64 } }) align 8 %0, ptr nonnull align 8 %6) - to label %.thread unwind label %27 + to label %.thread unwind label %24 33: ; preds = %_ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6faE.exit.thread, %.thread ret void @@ -1370,14 +1361,14 @@ _ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6fa call void @"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17hcfc4ef542b4c7efcE"(ptr nonnull align 8 %7) br label %33 -34: ; preds = %27 +34: ; preds = %24 %35 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #14 unreachable -36: ; preds = %27 - resume { ptr, i32 } %28 +36: ; preds = %24 + resume { ptr, i32 } %25 } ; Function Attrs: nonlazybind uwtable @@ -1404,29 +1395,22 @@ define void @_ZN20wasmtime_wit_bindgen4rust13RustGenerator11result_name17hafe827 %19 = getelementptr inbounds nuw i8, ptr %11, i64 96 %20 = load i64, ptr %19, align 8, !noundef !3 call void @"_ZN59_$LT$str$u20$as$u20$heck..upper_camel..ToUpperCamelCase$GT$19to_upper_camel_case17ha26a7806f7d5045aE"(ptr nonnull sret({ { { i64, ptr, {} }, i64 } }) align 8 %7, ptr nonnull align 1 %18, i64 %20) - %21 = and i40 %8, 16777216 - %.not = icmp eq i40 %21, 0 - br i1 %.not, label %_ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6faE.exit.thread, label %22 + %21 = and i40 %8, 16777473 + %.not = icmp eq i40 %21, 16777473 + br i1 %.not, label %22, label %_ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6faE.exit.thread 22: ; preds = %16 - %23 = trunc i40 %8 to i1 - %24 = and i40 %8, 256 - %.not14 = icmp ne i40 %24, 0 - %or.cond.not = and i1 %.not14, %23 - br i1 %or.cond.not, label %25, label %_ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6faE.exit.thread - -25: ; preds = %22 - %26 = invoke i8 @"_ZN102_$LT$wasmtime_wit_bindgen..InterfaceGenerator$u20$as$u20$wasmtime_wit_bindgen..rust..RustGenerator$GT$9ownership17h1c94743b9a7d39e4E"(ptr align 8 %1) - to label %_ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6faE.exit unwind label %27 - -27: ; preds = %25, %32, %30 - %28 = landingpad { ptr, i32 } + %23 = invoke i8 @"_ZN102_$LT$wasmtime_wit_bindgen..InterfaceGenerator$u20$as$u20$wasmtime_wit_bindgen..rust..RustGenerator$GT$9ownership17h1c94743b9a7d39e4E"(ptr align 8 %1) + to label %_ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6faE.exit unwind label %24 + +24:; preds = %22, %29, %30 + %25 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17hcfc4ef542b4c7efcE"(ptr nonnull align 8 %7) #13 to label %36 unwind label %34 -_ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6faE.exit: ; preds = %25 - %29 = trunc i8 %26 to i1 +_ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6faE.exit: ; preds = %22 + %29 = trunc i8 %23 to i1 br i1 %29, label %30, label %_ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6faE.exit.thread 30: ; preds = %_ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6faE.exit @@ -1434,15 +1418,15 @@ _ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6fa %31 = getelementptr inbounds nuw i8, ptr %5, i64 8 store ptr @"_ZN60_$LT$alloc..string..String$u20$as$u20$core..fmt..Display$GT$3fmt17h501e2ab095e4e83eE", ptr %31, align 8 invoke void @_ZN4core3fmt9Arguments6new_v117h6427ca1b3147dc17E(ptr nonnull sret({ { ptr, i64 }, { ptr, i64 }, { ptr, [1 x i64] } }) align 8 %6, ptr nonnull align 8 @anon.1ed22c87c0bfd8076dc71e37a923bb51.69, i64 2, ptr nonnull align 8 %5, i64 1) - to label %32 unwind label %27 + to label %32 unwind label %24 -_ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6faE.exit.thread: ; preds = %16, %22, %_ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6faE.exit +_ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6faE.exit.thread: ; preds = %16, %_ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6faE.exit call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %7, i64 24, i1 false) br label %33 32: ; preds = %30 invoke void @_ZN5alloc3fmt6format17h087f148fdbec138eE(ptr sret({ { { i64, ptr, {} }, i64 } }) align 8 %0, ptr nonnull align 8 %6) - to label %.thread unwind label %27 + to label %.thread unwind label %24 33: ; preds = %_ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6faE.exit.thread, %.thread ret void @@ -1451,14 +1435,14 @@ _ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6fa call void @"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17hcfc4ef542b4c7efcE"(ptr nonnull align 8 %7) br label %33 -34: ; preds = %27 +34: ; preds = %24 %35 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #14 unreachable -36: ; preds = %27 - resume { ptr, i32 } %28 +36: ; preds = %24 + resume { ptr, i32 } %25 } ; Function Attrs: nonlazybind uwtable diff --git a/bench/wireshark/optimized/packet-dmp.ll b/bench/wireshark/optimized/packet-dmp.ll index 64ccac4860b..e657101c1be 100644 --- a/bench/wireshark/optimized/packet-dmp.ll +++ b/bench/wireshark/optimized/packet-dmp.ll @@ -5564,8 +5564,9 @@ define internal fastcc ptr @msg_type_to_str() unnamed_addr #0 { %24 = select i1 %23, ptr @.str.786, ptr @.str.576 %25 = load i8, ptr getelementptr inbounds nuw (i8, ptr @dmp, i64 64), align 8, !range !11 %26 = trunc nuw i8 %25 to i1 - %27 = and i1 %23, %26 - %28 = select i1 %27, ptr @.str.696, ptr @.str.576 + %27 = and i8 %25, %22 + %.not5 = icmp eq i8 %27, 0 + %28 = select i1 %.not5, ptr @.str.576, ptr @.str.696 %29 = select i1 %26, ptr @.str.787, ptr @.str.576 %30 = tail call noalias ptr (ptr, ptr, ...) @wmem_strdup_printf(ptr noundef %21, ptr noundef nonnull @.str.785, ptr noundef nonnull %24, ptr noundef nonnull %28, ptr noundef nonnull %29) br label %58 diff --git a/bench/wireshark/optimized/wlan_statistics_dialog.ll b/bench/wireshark/optimized/wlan_statistics_dialog.ll index ccbd81a78a5..29d98f932b8 100644 --- a/bench/wireshark/optimized/wlan_statistics_dialog.ll +++ b/bench/wireshark/optimized/wlan_statistics_dialog.ll @@ -2719,13 +2719,12 @@ _ZN7QStringD2Ev.exit63: ; preds = %.body, %_ZN17QArray .thread68.thread: ; preds = %134, %80, %.thread, %85, %76, %89, %102, %98, %93, %.thread68, %135, %_ZN7QStringD2Ev.exit, %136 %.275 = phi i8 [ 1, %_ZN7QStringD2Ev.exit ], [ 1, %136 ], [ 1, %135 ], [ %27, %.thread68 ], [ %27, %93 ], [ %27, %98 ], [ %27, %102 ], [ %27, %89 ], [ %27, %76 ], [ %27, %85 ], [ 1, %.thread ], [ %.1, %134 ], [ %27, %80 ] %.4 = phi i8 [ 1, %_ZN7QStringD2Ev.exit ], [ %.3, %136 ], [ %.3, %135 ], [ 0, %.thread68 ], [ 0, %93 ], [ 0, %98 ], [ 0, %102 ], [ 0, %89 ], [ 1, %76 ], [ 0, %85 ], [ %.23882.ph, %.thread ], [ %.3, %134 ], [ 1, %80 ] - %174 = trunc nuw i8 %.275 to i1 - %175 = trunc nuw i8 %.4 to i1 - %176 = select i1 %174, i1 %175, i1 false + %174 = and i8 %.4, %.275 + %175 = icmp ne i8 %174, 0 br label %177 177: ; preds = %102, %68, %.thread68.thread - %.0 = phi i1 [ %176, %.thread68.thread ], [ true, %68 ], [ true, %102 ] + %.0 = phi i1 [ %175, %.thread68.thread ], [ true, %68 ], [ true, %102 ] ret i1 %.0 } diff --git a/bench/yosys/optimized/dfflibmap.ll b/bench/yosys/optimized/dfflibmap.ll index 4e08dddd030..f37d782718e 100644 --- a/bench/yosys/optimized/dfflibmap.ll +++ b/bench/yosys/optimized/dfflibmap.ll @@ -5169,8 +5169,9 @@ _ZNSt4pairIKN5Yosys5RTLIL8IdStringEN12_GLOBAL__N_112cell_mappingEEC2ERKS6_.exit: 1536: ; preds = %1535, %1424 %brmerge210 = or i8 %.0230, %.034238 - %brmerge = trunc nuw i8 %brmerge210 to i1 - br i1 %brmerge, label %_ZNSt6vectorIPN5Yosys5RTLIL6ModuleESaIS3_EED2Ev.exit, label %1537 + %1538 = and i8 %brmerge210, 1 + %brmerge.not = icmp eq i8 %1538, 0 + br i1 %brmerge.not, label %1539, label %_ZNSt6vectorIPN5Yosys5RTLIL6ModuleESaIS3_EED2Ev.exit 1537: ; preds = %1536 invoke void @_ZNK5Yosys5RTLIL6Design16selected_modulesEv(ptr dead_on_unwind nonnull writable sret(%"class.std::vector.74") align 8 %52, ptr noundef nonnull align 8 dereferenceable(376) %2) diff --git a/bench/z3/optimized/ast_ll_pp.ll b/bench/z3/optimized/ast_ll_pp.ll index 620cf599b95..6969897bf08 100644 --- a/bench/z3/optimized/ast_ll_pp.ll +++ b/bench/z3/optimized/ast_ll_pp.ll @@ -1717,10 +1717,8 @@ _ZN10ll_printer16display_childrenI4sortEEvjPKPT_.exit: ; preds = %if.end.i, %if. _ZNK9func_decl14is_associativeEv.exit: ; preds = %_ZN10ll_printer16display_childrenI4sortEEvjPKPT_.exit %m_left_assoc.i.i = getelementptr inbounds nuw i8, ptr %16, i64 17 %bf.load.i.i = load i16, ptr %m_left_assoc.i.i, align 1 - %bf.cast.i.i = trunc i16 %bf.load.i.i to i1 - %17 = and i16 %bf.load.i.i, 2 - %bf.cast4.i.i = icmp ne i16 %17, 0 - %18 = and i1 %bf.cast4.i.i, %bf.cast.i.i + %17 = and i16 %bf.load.i.i, 3 + %18 = icmp eq i16 %17, 3 br i1 %18, label %if.end24, label %_ZNK9func_decl14is_commutativeEv.exit if.end24: ; preds = %_ZNK9func_decl14is_associativeEv.exit diff --git a/bench/z3/optimized/maximize_ac_sharing.ll b/bench/z3/optimized/maximize_ac_sharing.ll index 2388be185d1..f3278476f7d 100644 --- a/bench/z3/optimized/maximize_ac_sharing.ll +++ b/bench/z3/optimized/maximize_ac_sharing.ll @@ -140,13 +140,11 @@ entry: _ZNK9func_decl14is_associativeEv.exit: ; preds = %entry %m_left_assoc.i.i = getelementptr inbounds nuw i8, ptr %0, i64 17 %bf.load.i.i = load i16, ptr %m_left_assoc.i.i, align 1 - %bf.cast.i.i = trunc i16 %bf.load.i.i to i1 - %1 = and i16 %bf.load.i.i, 2 - %bf.cast4.i.i = icmp ne i16 %1, 0 - %2 = and i1 %bf.cast4.i.i, %bf.cast.i.i - %cmp = icmp ugt i32 %num_args, 2 - %or.cond48.not = and i1 %cmp, %2 - br i1 %or.cond48.not, label %if.end4, label %return + %1 = and i16 %bf.load.i.i, 3 + %2 = icmp ne i16 %1, 3 + %bf.cast4.i.i = icmp ult i32 %num_args, 3 + %or.cond48 = or i1 %bf.cast4.i.i, %2 + br i1 %or.cond48, label %return, label %if.end4 if.end4: ; preds = %_ZNK9func_decl14is_associativeEv.exit %m_kinds = getelementptr inbounds nuw i8, ptr %this, i64 104 diff --git a/bench/zed-rs/optimized/5x7hg1mlcao6i0r3jb3d14b77.ll b/bench/zed-rs/optimized/5x7hg1mlcao6i0r3jb3d14b77.ll index 9a459533f68..69e36d5d41e 100644 --- a/bench/zed-rs/optimized/5x7hg1mlcao6i0r3jb3d14b77.ll +++ b/bench/zed-rs/optimized/5x7hg1mlcao6i0r3jb3d14b77.ll @@ -53480,13 +53480,12 @@ define hidden void @"_ZN5taffy8geometry13Size$LT$T$GT$7zip_map17h4916b6bf8b33ac7 %7 = load i32, ptr %2, align 4, !range !80, !noundef !9 %8 = getelementptr inbounds nuw i8, ptr %2, i64 4 %9 = load float, ptr %8, align 4 - %trunc.i = trunc nuw i32 %4 to i1 - %trunc11.i = trunc nuw i32 %7 to i1 - %or.cond.i = select i1 %trunc.i, i1 %trunc11.i, i1 false - %10 = fcmp ole float %9, %6 - %or.cond14.not.i = select i1 %or.cond.i, i1 %10, i1 false + %10 = and i32 %7, %4 + %or.cond.not1.i = icmp ne i32 %10, 0 + %11 = fcmp ole float %9, %6 + %or.cond14.not.i = select i1 %or.cond.not1.i, i1 %11, i1 false %.sroa.07.0.i = zext i1 %or.cond14.not.i to i32 - %.sroa.38.0.i = select i1 %or.cond.i, float %6, float undef + %.sroa.38.0.i = select i1 %or.cond.not1.i, float %6, float undef %11 = getelementptr inbounds nuw i8, ptr %1, i64 8 %12 = load i32, ptr %11, align 4, !range !80, !noundef !9 %13 = getelementptr inbounds nuw i8, ptr %1, i64 12 @@ -53495,20 +53494,19 @@ define hidden void @"_ZN5taffy8geometry13Size$LT$T$GT$7zip_map17h4916b6bf8b33ac7 %16 = load i32, ptr %15, align 4, !range !80, !noundef !9 %17 = getelementptr inbounds nuw i8, ptr %2, i64 12 %18 = load float, ptr %17, align 4 - %trunc.i10 = trunc nuw i32 %12 to i1 - %trunc11.i11 = trunc nuw i32 %16 to i1 - %or.cond.i12 = select i1 %trunc.i10, i1 %trunc11.i11, i1 false - %19 = fcmp ole float %18, %14 - %or.cond14.not.i13 = select i1 %or.cond.i12, i1 %19, i1 false - %.sroa.07.0.i14 = zext i1 %or.cond14.not.i13 to i32 - %.sroa.38.0.i15 = select i1 %or.cond.i12, float %14, float undef + %20 = and i32 %17, %13 + %or.cond.not1.i10 = icmp ne i32 %20, 0 + %21 = fcmp ole float %19, %15 + %or.cond14.not.i11 = select i1 %or.cond.not1.i10, i1 %21, i1 false + %.sroa.07.0.i12 = zext i1 %or.cond14.not.i11 to i32 + %.sroa.38.0.i13 = select i1 %or.cond.not1.i10, float %15, float undef store i32 %.sroa.07.0.i, ptr %0, align 4 %20 = getelementptr inbounds nuw i8, ptr %0, i64 4 store float %.sroa.38.0.i, ptr %20, align 4 %21 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i32 %.sroa.07.0.i14, ptr %21, align 4 + store i32 %.sroa.07.0.i12, ptr %21, align 4 %22 = getelementptr inbounds nuw i8, ptr %0, i64 12 - store float %.sroa.38.0.i15, ptr %22, align 4 + store float %.sroa.38.0.i13, ptr %22, align 4 ret void } @@ -53520,13 +53518,12 @@ define hidden void @"_ZN5taffy8geometry13Size$LT$T$GT$7zip_map17hc94b5371a77c7b6 %7 = load i32, ptr %2, align 4, !range !80, !noundef !9 %8 = getelementptr inbounds nuw i8, ptr %2, i64 4 %9 = load float, ptr %8, align 4 - %trunc.i = trunc nuw i32 %4 to i1 - %trunc11.i = trunc nuw i32 %7 to i1 - %or.cond.i = select i1 %trunc.i, i1 %trunc11.i, i1 false - %10 = fcmp ole float %9, %6 - %or.cond14.not.i = select i1 %or.cond.i, i1 %10, i1 false + %10 = and i32 %7, %4 + %or.cond.not1.i = icmp ne i32 %10, 0 + %11 = fcmp ole float %9, %6 + %or.cond14.not.i = select i1 %or.cond.not1.i, i1 %11, i1 false %.sroa.07.0.i = zext i1 %or.cond14.not.i to i32 - %.sroa.38.0.i = select i1 %or.cond.i, float %6, float undef + %.sroa.38.0.i = select i1 %or.cond.not1.i, float %6, float undef %11 = getelementptr inbounds nuw i8, ptr %1, i64 8 %12 = load i32, ptr %11, align 4, !range !80, !noundef !9 %13 = getelementptr inbounds nuw i8, ptr %1, i64 12 @@ -53535,20 +53532,19 @@ define hidden void @"_ZN5taffy8geometry13Size$LT$T$GT$7zip_map17hc94b5371a77c7b6 %16 = load i32, ptr %15, align 4, !range !80, !noundef !9 %17 = getelementptr inbounds nuw i8, ptr %2, i64 12 %18 = load float, ptr %17, align 4 - %trunc.i10 = trunc nuw i32 %12 to i1 - %trunc11.i11 = trunc nuw i32 %16 to i1 - %or.cond.i12 = select i1 %trunc.i10, i1 %trunc11.i11, i1 false - %19 = fcmp ole float %18, %14 - %or.cond14.not.i13 = select i1 %or.cond.i12, i1 %19, i1 false - %.sroa.07.0.i14 = zext i1 %or.cond14.not.i13 to i32 - %.sroa.38.0.i15 = select i1 %or.cond.i12, float %14, float undef + %20 = and i32 %17, %13 + %or.cond.not1.i10 = icmp ne i32 %20, 0 + %21 = fcmp ole float %19, %15 + %or.cond14.not.i11 = select i1 %or.cond.not1.i10, i1 %21, i1 false + %.sroa.07.0.i12 = zext i1 %or.cond14.not.i11 to i32 + %.sroa.38.0.i13 = select i1 %or.cond.not1.i10, float %15, float undef store i32 %.sroa.07.0.i, ptr %0, align 4 %20 = getelementptr inbounds nuw i8, ptr %0, i64 4 store float %.sroa.38.0.i, ptr %20, align 4 %21 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i32 %.sroa.07.0.i14, ptr %21, align 4 + store i32 %.sroa.07.0.i12, ptr %21, align 4 %22 = getelementptr inbounds nuw i8, ptr %0, i64 12 - store float %.sroa.38.0.i15, ptr %22, align 4 + store float %.sroa.38.0.i13, ptr %22, align 4 ret void } diff --git a/bench/zed-rs/optimized/695kya77ce1y5fjxr4ewl21f4.ll b/bench/zed-rs/optimized/695kya77ce1y5fjxr4ewl21f4.ll index f2ca03230dd..a7495f82aed 100644 --- a/bench/zed-rs/optimized/695kya77ce1y5fjxr4ewl21f4.ll +++ b/bench/zed-rs/optimized/695kya77ce1y5fjxr4ewl21f4.ll @@ -65781,10 +65781,11 @@ define hidden void @_ZN9zune_jpeg7headers11parse_app1417h4da9be84ca3754d6E(ptr d %36 = getelementptr inbounds nuw i8, ptr %1, i64 28954 %37 = load i8, ptr %36, align 2, !range !404, !noundef !7 %38 = or i8 %37, %35 - %39 = load i8, ptr %33, align 1, !range !404, !noundef !7 - %40 = or i8 %38, %39 + %39 = icmp ne i8 %38, 0 + %40 = load i8, ptr %33, align 1, !range !404, !noundef !7 %41 = trunc nuw i8 %40 to i1 - br i1 %41, label %51, label %49 + %42 = or i1 %39, %41 + br i1 %42, label %52, label %50 "_ZN9zune_core10bytestream6reader20ZByteReader$LT$T$GT$6get_u817he61c63da8d700e3eE.exit": ; preds = %"_ZN74_$LT$core..result..Result$LT$T$C$E$GT$$u20$as$u20$core..cmp..PartialEq$GT$2eq17h8378306ad6944bd3E.exit" %42 = add i64 %9, 13 @@ -65935,10 +65936,11 @@ define hidden void @_ZN9zune_jpeg7headers11parse_app1417h744e2e281c0750c5E(ptr d %33 = getelementptr inbounds nuw i8, ptr %1, i64 28954 %34 = load i8, ptr %33, align 2, !range !404, !noundef !7 %35 = or i8 %34, %32 - %36 = load i8, ptr %30, align 1, !range !404, !noundef !7 - %37 = or i8 %35, %36 + %36 = icmp ne i8 %35, 0 + %37 = load i8, ptr %30, align 1, !range !404, !noundef !7 %38 = trunc nuw i8 %37 to i1 - br i1 %38, label %49, label %47 + %39 = or i1 %36, %38 + br i1 %39, label %50, label %48 39: ; preds = %"_ZN74_$LT$core..result..Result$LT$T$C$E$GT$$u20$as$u20$core..cmp..PartialEq$GT$2eq17h8378306ad6944bd3E.exit" %40 = add i64 %9, 13 diff --git a/bench/zed-rs/optimized/738kk4f8xx4axqteya4t2w4qw.ll b/bench/zed-rs/optimized/738kk4f8xx4axqteya4t2w4qw.ll index c9f67fd210e..bdb6da4c39b 100644 --- a/bench/zed-rs/optimized/738kk4f8xx4axqteya4t2w4qw.ll +++ b/bench/zed-rs/optimized/738kk4f8xx4axqteya4t2w4qw.ll @@ -84972,26 +84972,24 @@ _ZN3exr4meta12magic_number12validate_exr17h4487e278645a8f01E.exit.i.i.i: ; preds %48 = lshr i32 %38, 2 %.sroa.7.sroa.0.sroa.8.0.insert.shift.i.i.i = and i32 %48, 256 %49 = or disjoint i32 %.sroa.7.sroa.0.sroa.8.0.insert.shift.i.i.i, %.sroa.7.sroa.0.sroa.10.0.insert.shift.i.i.i - %50 = or disjoint i32 %49, %.sroa.7.sroa.0.sroa.9.0.insert.shift.i.i.i - %.sroa.7.sroa.0.sroa.0.0.insert.insert.i.i.i = or disjoint i32 %50, %.sroa.7.sroa.0.sroa.0.0.insert.ext.i.i.i + %50 = or disjoint i32 %49, %.sroa.7.sroa.0.sroa.0.0.insert.ext.i.i.i + %.sroa.7.sroa.0.sroa.0.0.insert.insert.i.i.i = or disjoint i32 %50, %.sroa.7.sroa.0.sroa.9.0.insert.shift.i.i.i store i32 %.sroa.7.sroa.0.sroa.0.0.insert.insert.i.i.i, ptr %15, align 4, !noalias !18952 %.sroa.373.0..sroa_idx.i.i.i = getelementptr inbounds nuw i8, ptr %15, i64 4 store i8 %44, ptr %.sroa.373.0..sroa_idx.i.i.i, align 4, !noalias !18952 %51 = icmp eq i8 %44, 2 - %52 = lshr i32 %38, 12 - %53 = lshr i32 %38, 11 - br i1 %51, label %54, label %_ZN3exr4meta12Requirements8validate17hc5774582da83b252E.exit.i.i.i + br i1 %51, label %52, label %_ZN3exr4meta12Requirements8validate17hc5774582da83b252E.exit.i.i.i 54: ; preds = %42 + %53 = lshr exact i32 %.sroa.7.sroa.0.sroa.9.0.insert.shift.i.i.i, 16 + %54 = lshr i32 %38, 12 %55 = trunc i32 %45 to i1 - br i1 %55, label %56, label %57 + %56 = or i32 %53, %54 + %brmerge.not9.i.i.i.i = icmp ne i32 %56, 0 + %or.cond.not.i.i.i = select i1 %55, i1 %brmerge.not9.i.i.i.i, i1 false + br i1 %or.cond.not.i.i.i, label %_ZN3exr4meta12Requirements8validate17hc5774582da83b252E.exit.i.i.i, label %57 -56: ; preds = %54 - %brmerge9.i127.i.i.i = or i32 %53, %52 - %brmerge.i.i.i.i = trunc i32 %brmerge9.i127.i.i.i to i1 - br i1 %brmerge.i.i.i.i, label %_ZN3exr4meta12Requirements8validate17hc5774582da83b252E.exit.i.i.i, label %57 - -57: ; preds = %56, %54 +57: ; preds = %54 call void @llvm.lifetime.start.p0(i64 4144, ptr nonnull %14), !noalias !18952 invoke void @_ZN3exr4meta6header6Header8read_all17hacdca44a9ac78591E(ptr noalias noundef nonnull sret([4144 x i8]) align 8 captures(none) dereferenceable(4144) %14, ptr noalias noundef nonnull align 8 dereferenceable(48) %18, ptr noalias noundef nonnull readonly align 1 dereferenceable(5) %15, i1 noundef zeroext true) to label %.noexc18.i unwind label %80, !noalias !18931 @@ -85018,13 +85016,13 @@ _ZN3exr4meta12magic_number12validate_exr17h4487e278645a8f01E.exit.i.i.i: ; preds %.sroa.10.sroa.11.0.extract.trunc61.i.i = trunc nuw i64 %.sroa.10.sroa.11.0.extract.shift60.i.i to i24 br label %_ZN3exr4meta12Requirements8validate17hc5774582da83b252E.exit.i.i.i -_ZN3exr4meta12Requirements8validate17hc5774582da83b252E.exit.i.i.i: ; preds = %60, %56, %42, %40, %"_ZN37_$LT$u32$u20$as$u20$exr..io..Data$GT$4read17h5f0164812f129e31E.exit._crit_edge.i.i.i.i" - %.sroa.10.sroa.11.0.i.i = phi i24 [ %.sroa.10.sroa.11.0.extract.trunc61.i.i, %60 ], [ -8388608, %"_ZN37_$LT$u32$u20$as$u20$exr..io..Data$GT$4read17h5f0164812f129e31E.exit._crit_edge.i.i.i.i" ], [ %.sroa.7.sroa.13.sroa.0.0.copyload.i.i.i, %40 ], [ -8388608, %56 ], [ -8388608, %42 ] - %.sroa.10.sroa.10.0.i.i = phi i8 [ %.sroa.10.sroa.10.0.extract.trunc53.i.i, %60 ], [ 0, %"_ZN37_$LT$u32$u20$as$u20$exr..io..Data$GT$4read17h5f0164812f129e31E.exit._crit_edge.i.i.i.i" ], [ %.sroa.7.sroa.11.4.copyload.i.i.i, %40 ], [ 0, %56 ], [ 0, %42 ] - %.sroa.10.sroa.0.0.i.i = phi i32 [ %.sroa.10.sroa.0.0.extract.trunc46.i.i, %60 ], [ 0, %"_ZN37_$LT$u32$u20$as$u20$exr..io..Data$GT$4read17h5f0164812f129e31E.exit._crit_edge.i.i.i.i" ], [ %.pre.i16.i.i.i, %40 ], [ 0, %56 ], [ 0, %42 ] - %.sroa.18.0.i.i = phi i64 [ %.sroa.5.i.sroa.11.0.copyload97.i.i, %60 ], [ 26, %"_ZN37_$LT$u32$u20$as$u20$exr..io..Data$GT$4read17h5f0164812f129e31E.exit._crit_edge.i.i.i.i" ], [ %.sroa.19.12.copyload.i.i.i, %40 ], [ 18, %56 ], [ 46, %42 ] - %.sroa.15.0.i.i = phi ptr [ %.sroa.5.i.sroa.9.0.copyload95.i.i, %60 ], [ @anon.31b1a286ba77a0236d4eb2360ac932ee.104, %"_ZN37_$LT$u32$u20$as$u20$exr..io..Data$GT$4read17h5f0164812f129e31E.exit._crit_edge.i.i.i.i" ], [ %.sroa.18.12.copyload.i.i.i, %40 ], [ @anon.31b1a286ba77a0236d4eb2360ac932ee.105, %56 ], [ @anon.31b1a286ba77a0236d4eb2360ac932ee.106, %42 ] - %.sroa.026.0.i.i = phi i64 [ %.sroa.5.i.sroa.0.0.copyload91.i.i, %60 ], [ 1, %"_ZN37_$LT$u32$u20$as$u20$exr..io..Data$GT$4read17h5f0164812f129e31E.exit._crit_edge.i.i.i.i" ], [ %.pr.i14.i.i.i, %40 ], [ 2, %56 ], [ 1, %42 ] +_ZN3exr4meta12Requirements8validate17hc5774582da83b252E.exit.i.i.i: ; preds = %60, %52, %42, %40, %"_ZN37_$LT$u32$u20$as$u20$exr..io..Data$GT$4read17h5f0164812f129e31E.exit._crit_edge.i.i.i.i" + %.sroa.10.sroa.11.0.i.i = phi i24 [ %.sroa.10.sroa.11.0.extract.trunc61.i.i, %60 ], [ -8388608, %"_ZN37_$LT$u32$u20$as$u20$exr..io..Data$GT$4read17h5f0164812f129e31E.exit._crit_edge.i.i.i.i" ], [ %.sroa.7.sroa.13.sroa.0.0.copyload.i.i.i, %40 ], [ -8388608, %52 ], [ -8388608, %42 ] + %.sroa.10.sroa.10.0.i.i = phi i8 [ %.sroa.10.sroa.10.0.extract.trunc53.i.i, %60 ], [ 0, %"_ZN37_$LT$u32$u20$as$u20$exr..io..Data$GT$4read17h5f0164812f129e31E.exit._crit_edge.i.i.i.i" ], [ %.sroa.7.sroa.11.4.copyload.i.i.i, %40 ], [ 0, %52 ], [ 0, %42 ] + %.sroa.10.sroa.0.0.i.i = phi i32 [ %.sroa.10.sroa.0.0.extract.trunc46.i.i, %60 ], [ 0, %"_ZN37_$LT$u32$u20$as$u20$exr..io..Data$GT$4read17h5f0164812f129e31E.exit._crit_edge.i.i.i.i" ], [ %.pre.i16.i.i.i, %40 ], [ 0, %52 ], [ 0, %42 ] + %.sroa.18.0.i.i = phi i64 [ %.sroa.5.i.sroa.11.0.copyload97.i.i, %60 ], [ 26, %"_ZN37_$LT$u32$u20$as$u20$exr..io..Data$GT$4read17h5f0164812f129e31E.exit._crit_edge.i.i.i.i" ], [ %.sroa.19.12.copyload.i.i.i, %40 ], [ 18, %52 ], [ 46, %42 ] + %.sroa.15.0.i.i = phi ptr [ %.sroa.5.i.sroa.9.0.copyload95.i.i, %60 ], [ @anon.31b1a286ba77a0236d4eb2360ac932ee.104, %"_ZN37_$LT$u32$u20$as$u20$exr..io..Data$GT$4read17h5f0164812f129e31E.exit._crit_edge.i.i.i.i" ], [ %.sroa.18.12.copyload.i.i.i, %40 ], [ @anon.31b1a286ba77a0236d4eb2360ac932ee.105, %52 ], [ @anon.31b1a286ba77a0236d4eb2360ac932ee.106, %42 ] + %.sroa.026.0.i.i = phi i64 [ %.sroa.5.i.sroa.0.0.copyload91.i.i, %60 ], [ 1, %"_ZN37_$LT$u32$u20$as$u20$exr..io..Data$GT$4read17h5f0164812f129e31E.exit._crit_edge.i.i.i.i" ], [ %.pr.i14.i.i.i, %40 ], [ 2, %52 ], [ 1, %42 ] call void @llvm.lifetime.end.p0(i64 5, ptr nonnull %15), !noalias !18952 br label %_ZN3exr4meta8MetaData39read_unvalidated_from_buffered_peekable17h82112e86dfc7074eE.exit.thread.i.i @@ -85051,7 +85049,7 @@ _ZN3exr4meta8MetaData39read_unvalidated_from_buffered_peekable17h82112e86dfc7074 call void @llvm.lifetime.end.p0(i64 4144, ptr nonnull %14), !noalias !18952 call void @llvm.lifetime.end.p0(i64 5, ptr nonnull %15), !noalias !18952 %.sroa.2142.sroa.0.0.extract.trunc.i.i = trunc nuw nsw i32 %.sroa.7.sroa.0.sroa.0.0.insert.ext.i.i.i to i8 - %.sroa.2142.sroa.10.0.extract.shift.i.i = lshr exact i32 %50, 8 + %.sroa.2142.sroa.10.0.extract.shift.i.i = lshr i32 %.sroa.7.sroa.0.sroa.0.0.insert.insert.i.i.i, 8 %.sroa.2142.sroa.10.0.extract.trunc.i.i = trunc nuw nsw i32 %.sroa.2142.sroa.10.0.extract.shift.i.i to i24 store i64 %.sroa.5.i.sroa.0.0.copyload91.i.i, ptr %17, align 8, !noalias !18936 %.sroa.04.sroa.4.0..sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %17, i64 8 diff --git a/bench/zed-rs/optimized/a9o648rm8h3erlto15zyd64wi.ll b/bench/zed-rs/optimized/a9o648rm8h3erlto15zyd64wi.ll index 721abf31e37..6c6efd581a1 100644 --- a/bench/zed-rs/optimized/a9o648rm8h3erlto15zyd64wi.ll +++ b/bench/zed-rs/optimized/a9o648rm8h3erlto15zyd64wi.ll @@ -159750,9 +159750,7 @@ define hidden noundef range(i8 -1, 2) i8 @"_ZN7project21sort_worktree_entries28_ define noundef zeroext i1 @"_ZN88_$LT$project..lsp_command..PrepareRename$u20$as$u20$project..lsp_command..LspCommand$GT$18check_capabilities17h6269c028bb22a9e8E"(ptr noalias noundef readonly align 4 captures(none) dereferenceable(8) %0, ptr noalias noundef align 8 captures(none) dereferenceable(1280) %1) unnamed_addr #2 { %3 = getelementptr inbounds nuw i8, ptr %1, i64 1250 %4 = load i8, ptr %3, align 2, !range !1660, !noundef !21 - %switch = icmp samesign ult i8 %4, 2 - %5 = trunc i8 %4 to i1 - %spec.select = and i1 %switch, %5 + %switch = icmp eq i8 %4, 1 tail call void @"_ZN4core3ptr51drop_in_place$LT$lsp..AdapterServerCapabilities$GT$17hade325882c368b19E"(ptr noalias noundef nonnull align 8 dereferenceable(1280) %1) ret i1 %spec.select } diff --git a/scripts/setup_pre_commit_patch.sh b/scripts/setup_pre_commit_patch.sh index c5409e09ef4..f7bbe4c3332 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/128861 export COMPTIME_MODE=0 # Please rebase manually