diff --git a/bench/actix-rs/optimized/2f4ardqpkkrvo3qj.ll b/bench/actix-rs/optimized/2f4ardqpkkrvo3qj.ll index ea4903a66b3..3773f7acc99 100644 --- a/bench/actix-rs/optimized/2f4ardqpkkrvo3qj.ll +++ b/bench/actix-rs/optimized/2f4ardqpkkrvo3qj.ll @@ -8726,8 +8726,7 @@ _ZN10actix_http9responses7builder15ResponseBuilder5inner17hc558830239d798c6E.exi 22: ; preds = %_ZN10actix_http9responses7builder15ResponseBuilder5inner17hc558830239d798c6E.exit %23 = load i8, ptr %7, align 8, !range !266, !noundef !4 - %24 = trunc nuw i8 %23 to i1 - %..i.i = select i1 %24, i8 5, i8 4 + %24 = or disjoint i8 %23, 4 store i8 %..i.i, ptr %8, align 8 br label %21 @@ -8754,7 +8753,7 @@ _ZN10actix_http9responses7builder15ResponseBuilder5inner17hc558830239d798c6E.exi %33 = load ptr, ptr %32, align 8, !alias.scope !1034, !noundef !4 %34 = getelementptr inbounds nuw i8, ptr %1, i64 16 %35 = load i64, ptr %34, align 8, !alias.scope !1034, !noundef !4 - invoke void %30(ptr noalias noundef nonnull align 8 dereferenceable(8) %31, ptr noundef %33, i64 noundef %35) + invoke void %29(ptr noalias noundef nonnull align 8 dereferenceable(8) %31, ptr noundef %33, i64 noundef %35) to label %"_ZN4core3ptr94drop_in_place$LT$$LP$http..header..name..HeaderName$C$http..header..value..HeaderValue$RP$$GT$17h8db83eecccbdbf42E.exit" unwind label %36 36: ; preds = %28 @@ -8772,7 +8771,7 @@ _ZN10actix_http9responses7builder15ResponseBuilder5inner17hc558830239d798c6E.exi %44 = load ptr, ptr %43, align 8, !alias.scope !1044, !noundef !4 %45 = getelementptr inbounds nuw i8, ptr %1, i64 48 %46 = load i64, ptr %45, align 8, !alias.scope !1044, !noundef !4 - invoke void %41(ptr noalias noundef nonnull align 8 dereferenceable(8) %42, ptr noundef %44, i64 noundef %46) + invoke void %40(ptr noalias noundef nonnull align 8 dereferenceable(8) %42, ptr noundef %44, i64 noundef %46) to label %common.resume unwind label %47 47: ; preds = %36 @@ -8798,7 +8797,7 @@ common.resume: ; preds = %58, %36 %55 = load ptr, ptr %54, align 8, !alias.scope !1055, !noundef !4 %56 = getelementptr inbounds nuw i8, ptr %1, i64 48 %57 = load i64, ptr %56, align 8, !alias.scope !1055, !noundef !4 - tail call void %52(ptr noalias noundef nonnull align 8 dereferenceable(8) %53, ptr noundef %55, i64 noundef %57) + tail call void %51(ptr noalias noundef nonnull align 8 dereferenceable(8) %53, ptr noundef %55, i64 noundef %57) br label %25 58: ; preds = %16 diff --git a/bench/arrow/optimized/bridge.ll b/bench/arrow/optimized/bridge.ll index f251d22cebd..eb08ba5fa8c 100644 --- a/bench/arrow/optimized/bridge.ll +++ b/bench/arrow/optimized/bridge.ll @@ -2311,8 +2311,8 @@ _ZN5arrow6StatusD2Ev.exit: tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_assignERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull align 8 dereferenceable(32) %7) %9 = getelementptr inbounds nuw i8, ptr %2, i64 72 %10 = load i8, ptr %9, align 8, !tbaa !164, !range !119, !noundef !120 - %11 = trunc nuw i8 %10 to i1 - %12 = select i1 %11, i64 2, i64 0 + %11 = shl nuw nsw i8 %10, 1 + %12 = zext nneg i8 %11 to i64 %13 = getelementptr inbounds nuw i8, ptr %1, i64 320 store i64 %12, ptr %13, align 8, !tbaa !48 %14 = getelementptr inbounds nuw i8, ptr %2, i64 56 diff --git a/bench/boost/optimized/src.ll b/bench/boost/optimized/src.ll index 027e04d732a..9ff67e12760 100644 --- a/bench/boost/optimized/src.ll +++ b/bench/boost/optimized/src.ll @@ -30890,44 +30890,42 @@ declare void @__cxa_rethrow() local_unnamed_addr define noundef nonnull align 8 dereferenceable(16) ptr @_ZN5boost4jsonrsERSiRKNS0_13parse_optionsE(ptr noundef nonnull returned align 8 dereferenceable(16) %0, ptr noundef nonnull readonly align 8 captures(none) dereferenceable(14) %1) local_unnamed_addr #5 { %3 = getelementptr inbounds nuw i8, ptr %1, i64 9 %4 = load i8, ptr %3, align 1, !tbaa !609, !range !181, !noundef !182 - %5 = zext nneg i8 %4 to i64 - %6 = getelementptr inbounds nuw i8, ptr %1, i64 10 - %7 = load i8, ptr %6, align 2, !tbaa !610, !range !181, !noundef !182 - %8 = trunc nuw i8 %7 to i1 - %9 = select i1 %8, i64 2, i64 0 - %10 = or disjoint i64 %9, %5 - %11 = getelementptr inbounds nuw i8, ptr %1, i64 11 - %12 = load i8, ptr %11, align 1, !tbaa !611, !range !181, !noundef !182 - %13 = trunc nuw i8 %12 to i1 - %14 = select i1 %13, i64 4, i64 0 - %15 = or disjoint i64 %10, %14 - %16 = load ptr, ptr %0, align 8, !tbaa !19 - %17 = getelementptr i8, ptr %16, i64 -24 - %18 = load i64, ptr %17, align 8 - %19 = getelementptr inbounds i8, ptr %0, i64 %18 - %20 = load i32, ptr @_ZN5boost4json12_GLOBAL__N_118parse_flags_xallocE, align 4, !tbaa !114 - %21 = getelementptr inbounds nuw i8, ptr %19, i64 192 - %22 = load i32, ptr %21, align 8, !tbaa !346 - %23 = icmp ult i32 %20, %22 - br i1 %23, label %24, label %29 - -24: ; preds = %2 - %25 = getelementptr inbounds nuw i8, ptr %19, i64 200 - %26 = load ptr, ptr %25, align 8, !tbaa !347 - %27 = sext i32 %20 to i64 - %28 = getelementptr inbounds %"struct.std::ios_base::_Words", ptr %26, i64 %27 + %5 = getelementptr inbounds nuw i8, ptr %1, i64 10 + %6 = load i8, ptr %5, align 2, !tbaa !610, !range !181, !noundef !182 + %7 = shl nuw nsw i8 %6, 1 + %8 = or disjoint i8 %7, %4 + %9 = getelementptr inbounds nuw i8, ptr %1, i64 11 + %10 = load i8, ptr %9, align 1, !tbaa !611, !range !181, !noundef !182 + %11 = shl nuw nsw i8 %10, 2 + %12 = or disjoint i8 %8, %11 + %13 = zext nneg i8 %12 to i64 + %14 = load ptr, ptr %0, align 8, !tbaa !19 + %15 = getelementptr i8, ptr %14, i64 -24 + %16 = load i64, ptr %15, align 8 + %17 = getelementptr inbounds i8, ptr %0, i64 %16 + %18 = load i32, ptr @_ZN5boost4json12_GLOBAL__N_118parse_flags_xallocE, align 4, !tbaa !114 + %19 = getelementptr inbounds nuw i8, ptr %17, i64 192 + %20 = load i32, ptr %19, align 8, !tbaa !346 + %21 = icmp ult i32 %18, %20 + br i1 %21, label %22, label %27 + +22:; preds = %2 + %23 = getelementptr inbounds nuw i8, ptr %17, i64 200 + %24 = load ptr, ptr %23, align 8, !tbaa !347 + %25 = sext i32 %18 to i64 + %26 = getelementptr inbounds %"struct.std::ios_base::_Words", ptr %24, i64 %25 br label %_ZNSt8ios_base5iwordEi.exit 29: ; preds = %2 - %30 = tail call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt8ios_base13_M_grow_wordsEib(ptr noundef nonnull align 8 dereferenceable(216) %19, i32 noundef %20, i1 noundef zeroext true) + %30 = tail call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt8ios_base13_M_grow_wordsEib(ptr noundef nonnull align 8 dereferenceable(216) %17, i32 noundef %18, i1 noundef zeroext true) %.pre = load ptr, ptr %0, align 8, !tbaa !19 br label %_ZNSt8ios_base5iwordEi.exit -_ZNSt8ios_base5iwordEi.exit: ; preds = %24, %29 - %31 = phi ptr [ %16, %24 ], [ %.pre, %29 ] - %32 = phi ptr [ %28, %24 ], [ %30, %29 ] +_ZNSt8ios_base5iwordEi.exit: ; preds = %22, %29 + %31 = phi ptr [ %14, %22 ], [ %.pre, %29 ] + %32 = phi ptr [ %26, %22 ], [ %30, %29 ] %33 = getelementptr inbounds nuw i8, ptr %32, i64 8 - store i64 %15, ptr %33, align 8, !tbaa !11 + store i64 %13, ptr %33, align 8, !tbaa !11 %34 = load i64, ptr %1, align 8, !tbaa !612 %35 = getelementptr i8, ptr %31, i64 -24 %36 = load i64, ptr %35, align 8 diff --git a/bench/box2d/optimized/imgui_widgets.ll b/bench/box2d/optimized/imgui_widgets.ll index 6feba47a62f..e7e934675f9 100644 --- a/bench/box2d/optimized/imgui_widgets.ll +++ b/bench/box2d/optimized/imgui_widgets.ll @@ -20751,8 +20751,8 @@ _ZN8ImVectorItE6resizeEi.exit: ; preds = %.loopexit1457, %638 store i32 %655, ptr %658, align 4, !tbaa !398 %659 = getelementptr inbounds nuw i8, ptr %32, i64 253 %660 = load i8, ptr %659, align 1, !tbaa !420, !range !152, !noundef !153 - %661 = trunc nuw i8 %660 to i1 - %662 = select i1 %661, i32 4194304, i32 0 + %661 = zext nneg i8 %660 to i32 + %662 = shl nuw nsw i32 %661, 22 %663 = getelementptr inbounds nuw i8, ptr %32, i64 254 %664 = getelementptr inbounds nuw i8, ptr %32, i64 252 %.in.in = select i1 %358, ptr %663, ptr %664 @@ -30768,11 +30768,11 @@ _ZN5ImGui9SeparatorEv.exit34: ; preds = %.thread, %68, %61 .sink.split.i.i: ; preds = %_ZN5ImGui9SeparatorEv.exit34 %82 = load i8, ptr %3, align 1, !tbaa !207, !range !152, !noundef !153 - %83 = trunc nuw i8 %82 to i1 - %84 = load i32, ptr %76, align 4, !tbaa !176 - %85 = and i32 %84, -65537 - %masksel = select i1 %83, i32 65536, i32 0 - %.sink.i.i = or disjoint i32 %85, %masksel + %83 = load i32, ptr %76, align 4, !tbaa !176 + %84 = and i32 %83, -65537 + %85 = zext nneg i8 %82 to i32 + %masksel = shl nuw nsw i32 %85, 16 + %.sink.i.i = or disjoint i32 %84, %masksel store i32 %.sink.i.i, ptr %76, align 4, !tbaa !176 br label %_ZN5ImGui13CheckboxFlagsEPKcPii.exit diff --git a/bench/chibicc/optimized/codegen.ll b/bench/chibicc/optimized/codegen.ll index 1e8da516ee9..208d7519af6 100644 --- a/bench/chibicc/optimized/codegen.ll +++ b/bench/chibicc/optimized/codegen.ll @@ -1944,8 +1944,8 @@ cmp_zero.exit.i: ; preds = %147, %143, %140, %1 150: ; preds = %148 %151 = getelementptr inbounds nuw i8, ptr %132, i64 12 %152 = load i8, ptr %151, align 4, !tbaa !113, !range !25, !noundef !26 - %153 = trunc nuw i8 %152 to i1 - %154 = select i1 %153, i64 4, i64 0 + %153 = shl nuw nsw i8 %152, 2 + %154 = zext nneg i8 %153 to i64 br label %getTypeId.exit.i 155: ; preds = %148 @@ -1993,8 +1993,8 @@ getTypeId.exit.i: ; preds = %172, %171, %170, %1 173: ; preds = %getTypeId.exit.i %174 = getelementptr inbounds nuw i8, ptr %134, i64 12 %175 = load i8, ptr %174, align 4, !tbaa !113, !range !25, !noundef !26 - %176 = trunc nuw i8 %175 to i1 - %177 = select i1 %176, i64 4, i64 0 + %176 = shl nuw nsw i8 %175, 2 + %177 = zext nneg i8 %176 to i64 br label %getTypeId.exit10.i 178: ; preds = %getTypeId.exit.i diff --git a/bench/cmake/optimized/lzma2_encoder.ll b/bench/cmake/optimized/lzma2_encoder.ll index 1457fec6326..6c9910311aa 100644 --- a/bench/cmake/optimized/lzma2_encoder.ll +++ b/bench/cmake/optimized/lzma2_encoder.ll @@ -385,8 +385,7 @@ define internal i32 @lzma2_encode(ptr noundef %0, ptr noalias noundef %1, ptr no store i64 %114, ptr %10, align 8, !tbaa !36 store i32 0, ptr %13, align 4, !tbaa !41 %115 = load i8, ptr %20, align 2, !tbaa !28, !range !43, !noundef !44 - %116 = trunc nuw i8 %115 to i1 - %spec.select.i = select i1 %116, i8 1, i8 2 + %116 = sub nuw nsw i8 2, %115 store i8 %spec.select.i, ptr %8, align 8, !tbaa !33 store i8 0, ptr %20, align 2, !tbaa !28 %117 = add i64 %114, 65535 diff --git a/bench/coreutils-rs/optimized/2jm5bfr1qa6ga934.ll b/bench/coreutils-rs/optimized/2jm5bfr1qa6ga934.ll index 9e779cfe164..e2a210a240e 100644 --- a/bench/coreutils-rs/optimized/2jm5bfr1qa6ga934.ll +++ b/bench/coreutils-rs/optimized/2jm5bfr1qa6ga934.ll @@ -1318,7 +1318,7 @@ define hidden void @_ZN5uu_cp8platform5linux13copy_on_write17hd6060b4e46a5cbc0E( br label %83 81: ; preds = %77 - %spec.select20.i = select i1 %71, i8 4, i8 3 + %spec.select20.i = add nuw nsw i8 %66, 3 %82 = select i1 %71, i1 %69, i1 false br label %83 diff --git a/bench/coreutils-rs/optimized/3wh0yla9idangd55.ll b/bench/coreutils-rs/optimized/3wh0yla9idangd55.ll index 93eda624207..c32daa3e819 100644 --- a/bench/coreutils-rs/optimized/3wh0yla9idangd55.ll +++ b/bench/coreutils-rs/optimized/3wh0yla9idangd55.ll @@ -1555,8 +1555,8 @@ define void @_ZN5uu_dd5Input8new_file17h59fd1ff108074052E(ptr noalias noundef wr store i8 1, ptr %.sroa.511.0..sroa_idx, align 4 %9 = getelementptr inbounds nuw i8, ptr %3, i64 65 %10 = load i8, ptr %9, align 1, !range !215, !alias.scope !222, !noundef !5 - %11 = trunc nuw i8 %10 to i1 - %spec.store.select.i = select i1 %11, i32 16384, i32 0 + %11 = zext nneg i8 %10 to i32 + %spec.store.select.i = shl nuw nsw i32 %11, 14 %12 = getelementptr inbounds nuw i8, ptr %3, i64 66 %13 = load i8, ptr %12, align 2, !range !215, !alias.scope !222, !noundef !5 %14 = zext nneg i8 %13 to i32 @@ -1586,7 +1586,7 @@ define void @_ZN5uu_dd5Input8new_file17h59fd1ff108074052E(ptr noalias noundef wr %33 = load i8, ptr %32, align 2, !range !215, !alias.scope !222, !noundef !5 %34 = zext nneg i8 %33 to i32 %35 = shl nuw nsw i32 %34, 11 - %.5.i = or disjoint i32 %.4.i, %35 + %.5.i = or i32 %.4.i, %35 %36 = getelementptr inbounds nuw i8, ptr %3, i64 68 %37 = load i8, ptr %36, align 4, !range !215, !alias.scope !222, !noundef !5 %38 = trunc nuw i8 %37 to i1 @@ -1716,8 +1716,8 @@ define void @_ZN5uu_dd5Input8new_fifo17h63fd09da80b2f076E(ptr noalias noundef wr store i8 1, ptr %.sroa.59.0..sroa_idx, align 4 %9 = getelementptr inbounds nuw i8, ptr %3, i64 65 %10 = load i8, ptr %9, align 1, !range !215, !alias.scope !233, !noundef !5 - %11 = trunc nuw i8 %10 to i1 - %spec.store.select.i = select i1 %11, i32 16384, i32 0 + %11 = zext nneg i8 %10 to i32 + %spec.store.select.i = shl nuw nsw i32 %11, 14 %12 = getelementptr inbounds nuw i8, ptr %3, i64 66 %13 = load i8, ptr %12, align 2, !range !215, !alias.scope !233, !noundef !5 %14 = zext nneg i8 %13 to i32 @@ -1747,7 +1747,7 @@ define void @_ZN5uu_dd5Input8new_fifo17h63fd09da80b2f076E(ptr noalias noundef wr %33 = load i8, ptr %32, align 2, !range !215, !alias.scope !233, !noundef !5 %34 = zext nneg i8 %33 to i32 %35 = shl nuw nsw i32 %34, 11 - %.5.i = or disjoint i32 %.4.i, %35 + %.5.i = or i32 %.4.i, %35 %36 = getelementptr inbounds nuw i8, ptr %3, i64 68 %37 = load i8, ptr %36, align 4, !range !215, !alias.scope !233, !noundef !5 %38 = trunc nuw i8 %37 to i1 @@ -2688,8 +2688,8 @@ define void @_ZN5uu_dd6Output8new_file17h0d6a277893faa49fE(ptr noalias noundef w store i8 %.val, ptr %.sroa.10.0..sroa_idx.i, align 1, !noalias !308 %13 = load i8, ptr %9, align 2, !range !215, !alias.scope !305, !noalias !311, !noundef !5 store i8 %13, ptr %.sroa.7.0..sroa_idx.i, align 2, !noalias !308 - %14 = trunc nuw i8 %13 to i1 - %spec.store.select.i.i = select i1 %14, i32 1024, i32 0 + %14 = zext nneg i8 %13 to i32 + %spec.store.select.i.i = shl nuw nsw i32 %14, 10 %15 = getelementptr inbounds nuw i8, ptr %3, i64 152 %16 = load i8, ptr %15, align 8, !range !215, !alias.scope !312, !noalias !311, !noundef !5 %17 = zext nneg i8 %16 to i32 @@ -2709,7 +2709,7 @@ define void @_ZN5uu_dd6Output8new_file17h0d6a277893faa49fE(ptr noalias noundef w %28 = load i8, ptr %27, align 2, !range !215, !alias.scope !312, !noalias !311, !noundef !5 %29 = zext nneg i8 %28 to i32 %30 = shl nuw nsw i32 %29, 18 - %.3.i.i = or disjoint i32 %.2.i.i, %30 + %.3.i.i = or i32 %.2.i.i, %30 %31 = getelementptr inbounds nuw i8, ptr %3, i64 159 %32 = load i8, ptr %31, align 1, !range !215, !alias.scope !312, !noalias !311, !noundef !5 %33 = zext nneg i8 %32 to i32 @@ -2941,8 +2941,8 @@ define void @_ZN5uu_dd6Output20new_file_from_stdout17h9b8fdad67a7c0913E(ptr noal store i32 %12, ptr %6, align 4 %20 = getelementptr inbounds nuw i8, ptr %1, i64 150 %21 = load i8, ptr %20, align 2, !range !215, !alias.scope !353, !noundef !5 - %22 = trunc nuw i8 %21 to i1 - %spec.store.select.i = select i1 %22, i32 1024, i32 0 + %22 = zext nneg i8 %21 to i32 + %spec.store.select.i = shl nuw nsw i32 %22, 10 %23 = getelementptr inbounds nuw i8, ptr %1, i64 152 %24 = load i8, ptr %23, align 8, !range !215, !alias.scope !353, !noundef !5 %25 = zext nneg i8 %24 to i32 @@ -2962,7 +2962,7 @@ define void @_ZN5uu_dd6Output20new_file_from_stdout17h9b8fdad67a7c0913E(ptr noal %36 = load i8, ptr %35, align 2, !range !215, !alias.scope !353, !noundef !5 %37 = zext nneg i8 %36 to i32 %38 = shl nuw nsw i32 %37, 18 - %.3.i = or disjoint i32 %.2.i, %38 + %.3.i = or i32 %.2.i, %38 %39 = getelementptr inbounds nuw i8, ptr %1, i64 159 %40 = load i8, ptr %39, align 1, !range !215, !alias.scope !353, !noundef !5 %41 = zext nneg i8 %40 to i32 @@ -3182,8 +3182,8 @@ default.unreachable: ; preds = %13 %46 = getelementptr inbounds nuw i8, ptr %3, i64 150 %47 = load i8, ptr %46, align 2, !range !215, !noundef !5 store i8 %47, ptr %.sroa.725.0..sroa_idx, align 2 - %48 = trunc nuw i8 %47 to i1 - %spec.store.select.i = select i1 %48, i32 1024, i32 0 + %48 = zext nneg i8 %47 to i32 + %spec.store.select.i = shl nuw nsw i32 %48, 10 %49 = getelementptr inbounds nuw i8, ptr %3, i64 152 %50 = load i8, ptr %49, align 8, !range !215, !alias.scope !377, !noundef !5 %51 = zext nneg i8 %50 to i32 @@ -3203,7 +3203,7 @@ default.unreachable: ; preds = %13 %62 = load i8, ptr %61, align 2, !range !215, !alias.scope !377, !noundef !5 %63 = zext nneg i8 %62 to i32 %64 = shl nuw nsw i32 %63, 18 - %.3.i = or disjoint i32 %.2.i, %64 + %.3.i = or i32 %.2.i, %64 %65 = getelementptr inbounds nuw i8, ptr %3, i64 159 %66 = load i8, ptr %65, align 1, !range !215, !alias.scope !377, !noundef !5 %67 = zext nneg i8 %66 to i32 diff --git a/bench/coreutils-rs/optimized/czge978gjagq0cc.ll b/bench/coreutils-rs/optimized/czge978gjagq0cc.ll index c9c3d038c97..0dd74cc13b4 100644 --- a/bench/coreutils-rs/optimized/czge978gjagq0cc.ll +++ b/bench/coreutils-rs/optimized/czge978gjagq0cc.ll @@ -5549,8 +5549,7 @@ _ZN6uucore8features6format4spec5Flags5parse17h50c788586d8df07dE.exit: ; preds = %.sroa.3.0.lcssa.i = phi i8 [ 0, %2 ], [ %.sroa.3.0.lcssa.i.ph, %_ZN6uucore8features6format4spec5Flags5parse17h50c788586d8df07dE.exit.loopexit ] %.sroa.0.0.lcssa.i = phi i8 [ 0, %2 ], [ %.sroa.0.0.lcssa.i.ph, %_ZN6uucore8features6format4spec5Flags5parse17h50c788586d8df07dE.exit.loopexit ] %18 = trunc nuw i8 %.sroa.3.0.lcssa.i to i1 - %19 = trunc nuw i8 %.sroa.5.0.lcssa.i to i1 - %. = select i1 %19, i8 2, i8 0 + %19 = shl nuw nsw i8 %.sroa.5.0.lcssa.i, 1 %.070 = select i1 %18, i8 1, i8 %. %20 = call fastcc { i64, i64 } @_ZN6uucore8features6format4spec22eat_asterisk_or_number17h9a90975ebd819f2aE(ptr nonnull %4, i64 %6, ptr noalias noundef align 8 dereferenceable(8) %3) %21 = extractvalue { i64, i64 } %20, 0 @@ -5790,7 +5789,7 @@ _ZN6uucore8features6format4spec5Flags3any17h84a445c05ddadbd8E.exit119: ; preds = %83 = extractvalue { ptr, i64 } %81, 1 br label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h27fa04aa7da8c66bE.exit" -"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h27fa04aa7da8c66bE.exit": ; preds = %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h27fa04aa7da8c66bE.exit.sink.split", %70, %66, %68, %63, %59, %50, %56 +"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h27fa04aa7da8c66bE.exit": ; preds = %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h27fa04aa7da8c66bE.exit.sink.split", %70, %66, %68, %63, %58, %49, %55 %.sink164 = phi ptr [ %4, %56 ], [ %4, %50 ], [ %4, %59 ], [ %4, %63 ], [ %4, %68 ], [ %4, %66 ], [ %4, %70 ], [ %82, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h27fa04aa7da8c66bE.exit.sink.split" ] %.sink = phi i64 [ %49, %56 ], [ %52, %50 ], [ %52, %59 ], [ %52, %63 ], [ %52, %68 ], [ %52, %66 ], [ %52, %70 ], [ %83, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h27fa04aa7da8c66bE.exit.sink.split" ] %84 = getelementptr inbounds nuw i8, ptr %0, i64 8 diff --git a/bench/cvc5/optimized/inst_strategy_pool.ll b/bench/cvc5/optimized/inst_strategy_pool.ll index 0d4f7f0ed10..24e9c7f6e4d 100644 --- a/bench/cvc5/optimized/inst_strategy_pool.ll +++ b/bench/cvc5/optimized/inst_strategy_pool.ll @@ -2956,7 +2956,7 @@ define hidden void @_ZN4cvc58internal6theory11quantifiers16InstStrategyPool5chec br label %20 20: ; preds = %.lr.ph50, %155 - %.048 = phi i1 [ false, %.lr.ph50 ], [ %.1, %155 ] + %.048 = phi i8 [ 0, %.lr.ph50 ], [ %.1, %155 ] %.01547 = phi i64 [ 0, %.lr.ph50 ], [ %156, %155 ] call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #24 %21 = trunc i64 %.01547 to i32 @@ -3079,36 +3079,41 @@ _ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit: ; preds = %55, %59, %65 %.not44 = icmp eq ptr %75, %77 br i1 %.not44, label %._crit_edge, label %.lr.ph -.lr.ph: ; preds = %73, %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit34 - %.sroa.037.045 = phi ptr [ %134, %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit34 ], [ %75, %73 ] - %78 = load ptr, ptr %5, align 8, !tbaa !250 - store ptr %78, ptr %7, align 8, !tbaa !250 - %79 = load i64, ptr %78, align 8 - %80 = lshr i64 %79, 40 - %81 = trunc nuw nsw i64 %80 to i32 - %82 = and i32 %81, 1048575 - %83 = icmp samesign ult i32 %82, 1048574 - br i1 %83, label %84, label %89, !prof !258 - -84: ; preds = %.lr.ph - %85 = add i64 %79, 1099511627776 - %86 = and i64 %85, 1152920405095219200 - %87 = and i64 %79, -1152920405095219201 - %88 = or disjoint i64 %86, %87 - store i64 %88, ptr %78, align 8 +.lr.ph: ; preds = %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit34 + %.sroa.037.045 = getelementptr inbounds nuw i8, ptr %81, i64 8 + %78 = icmp eq ptr %79, %77 + br i1 %78, label %._crit_edge, label %.lr.ph + +.lr.ph:; preds = %73, %.lr.ph + %81 = phi ptr [ %79, %78 ], [ %75, %73 ] + %82 = load ptr, ptr %5, align 8, !tbaa !250 + store ptr %80, ptr %7, align 8, !tbaa !250 + %81 = load i64, ptr %80, align 8 + %82 = lshr i64 %81, 40 + %83 = trunc nuw nsw i64 %82 to i32 + %85 = and i32 %83, 1048575 + %86 = icmp samesign ult i32 %85, 1048574 + br i1 %85, label %86, label %91, !prof !258 + +86:; preds = %.lr.ph + %87 = add i64 %81, 1099511627776 + %88 = and i64 %87, 1152920405095219200 + %89 = and i64 %81, -1152920405095219201 + %90 = or disjoint i64 %88, %89 + store i64 %90, ptr %80, align 8 br label %_ZN4cvc58internal12NodeTemplateILb1EEC2ERKS2_.exit28 89: ; preds = %.lr.ph - %90 = icmp eq i32 %82, 1048574 + %90 = icmp eq i32 %84, 1048574 br i1 %90, label %91, label %_ZN4cvc58internal12NodeTemplateILb1EEC2ERKS2_.exit28, !prof !259 91: ; preds = %89 - %92 = or i64 %79, 1152920405095219200 - store i64 %92, ptr %78, align 8 - invoke void @_ZN4cvc58internal4expr9NodeValue20markRefCountMaxedOutEv(ptr noundef nonnull align 8 dereferenceable(24) %78) + %92 = or i64 %81, 1152920405095219200 + store i64 %92, ptr %80, align 8 + invoke void @_ZN4cvc58internal4expr9NodeValue20markRefCountMaxedOutEv(ptr noundef nonnull align 8 dereferenceable(24) %80) to label %_ZN4cvc58internal12NodeTemplateILb1EEC2ERKS2_.exit28 unwind label %135 -_ZN4cvc58internal12NodeTemplateILb1EEC2ERKS2_.exit28: ; preds = %89, %84, %91 +_ZN4cvc58internal12NodeTemplateILb1EEC2ERKS2_.exit28: ; preds = %89, %86, %91 %93 = load ptr, ptr %.sroa.037.045, align 8, !tbaa !250 store ptr %93, ptr %8, align 8, !tbaa !250 %94 = load i64, ptr %93, align 8 @@ -3167,7 +3172,7 @@ _ZN4cvc58internal12NodeTemplateILb1EEC2ERKS2_.exit30: ; preds = %104, %99, %106 unreachable _ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit32: ; preds = %109, %112, %118 - %122 = load i64, ptr %78, align 8 + %122 = load i64, ptr %80, align 8 %123 = and i64 %122, 1152920405095219200 %.not.i.i33 = icmp eq i64 %123, 1152920405095219200 br i1 %.not.i.i33, label %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit34, label %124, !prof !259 @@ -3177,12 +3182,12 @@ _ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit32: ; preds = %109, %112, %118 %126 = and i64 %125, 1152920405095219200 %127 = and i64 %122, -1152920405095219201 %128 = or disjoint i64 %126, %127 - store i64 %128, ptr %78, align 8 + store i64 %128, ptr %80, align 8 %129 = icmp eq i64 %126, 0 br i1 %129, label %130, label %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit34, !prof !259 130: ; preds = %124 - invoke void @_ZN4cvc58internal4expr9NodeValue15markForDeletionEv(ptr noundef nonnull align 8 dereferenceable(24) %78) + invoke void @_ZN4cvc58internal4expr9NodeValue15markForDeletionEv(ptr noundef nonnull align 8 dereferenceable(24) %80) to label %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit34 unwind label %131 131: ; preds = %130 @@ -3193,10 +3198,7 @@ _ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit32: ; preds = %109, %112, %118 unreachable _ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit34: ; preds = %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit32, %124, %130 - %134 = getelementptr inbounds nuw i8, ptr %.sroa.037.045, i64 8 - %.not = icmp eq ptr %134, %77 - %or.cond = select i1 %108, i1 true, i1 %.not - br i1 %or.cond, label %._crit_edge, label %.lr.ph + br i1 %108, label %._crit_edge, label %78 135: ; preds = %91 %136 = landingpad { ptr, i32 } @@ -3219,14 +3221,15 @@ _ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit34: ; preds = %_ZN4cvc58internal12 call void @_ZN4cvc58internal12NodeTemplateILb1EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %7) #24 br label %157 -._crit_edge: ; preds = %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit34, %73 - %.3 = phi i1 [ %.048, %73 ], [ %108, %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit34 ] - %. = select i1 %.3, i32 2, i32 0 +._crit_edge: ; preds = %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit34, %78, %73 + %.3 = phi i8 [ %.048, %73 ], [ 0, %78 ], [ 1, %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit34 ] + %. = zext nneg i8 %.3 to i32 + %. = shl nuw nsw i32 %143, 1 br label %_ZNSt3mapIN4cvc58internal12NodeTemplateILb1EEESt6vectorIS3_SaIS3_EESt4lessIS3_ESaISt4pairIKS3_S6_EEE4findERSA_.exit.thread _ZNSt3mapIN4cvc58internal12NodeTemplateILb1EEESt6vectorIS3_SaIS3_EESt4lessIS3_ESaISt4pairIKS3_S6_EEE4findERSA_.exit.thread: ; preds = %20, %_ZNSt8_Rb_treeIN4cvc58internal12NodeTemplateILb1EEESt4pairIKS3_St6vectorIS3_SaIS3_EEESt10_Select1stIS9_ESt4lessIS3_ESaIS9_EE14_M_lower_boundEPSt13_Rb_tree_nodeIS9_EPSt18_Rb_tree_node_baseRS5_.exit.i.i, %._crit_edge, %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit, %_ZNSt3mapIN4cvc58internal12NodeTemplateILb1EEESt6vectorIS3_SaIS3_EESt4lessIS3_ESaISt4pairIKS3_S6_EEE4findERSA_.exit %.022 = phi i32 [ 4, %_ZNSt3mapIN4cvc58internal12NodeTemplateILb1EEESt6vectorIS3_SaIS3_EESt4lessIS3_ESaISt4pairIKS3_S6_EEE4findERSA_.exit ], [ 4, %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit ], [ %., %._crit_edge ], [ 4, %_ZNSt8_Rb_treeIN4cvc58internal12NodeTemplateILb1EEESt4pairIKS3_St6vectorIS3_SaIS3_EEESt10_Select1stIS9_ESt4lessIS3_ESaIS9_EE14_M_lower_boundEPSt13_Rb_tree_nodeIS9_EPSt18_Rb_tree_node_baseRS5_.exit.i.i ], [ 4, %20 ] - %.1 = phi i1 [ %.048, %_ZNSt3mapIN4cvc58internal12NodeTemplateILb1EEESt6vectorIS3_SaIS3_EESt4lessIS3_ESaISt4pairIKS3_S6_EEE4findERSA_.exit ], [ %.048, %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit ], [ %.3, %._crit_edge ], [ %.048, %_ZNSt8_Rb_treeIN4cvc58internal12NodeTemplateILb1EEESt4pairIKS3_St6vectorIS3_SaIS3_EEESt10_Select1stIS9_ESt4lessIS3_ESaIS9_EE14_M_lower_boundEPSt13_Rb_tree_nodeIS9_EPSt18_Rb_tree_node_baseRS5_.exit.i.i ], [ %.048, %20 ] + %.1 = phi i8 [ %.048, %_ZNSt3mapIN4cvc58internal12NodeTemplateILb1EEESt6vectorIS3_SaIS3_EESt4lessIS3_ESaISt4pairIKS3_S6_EEE4findERSA_.exit ], [ %.048, %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit ], [ %.3, %._crit_edge ], [ %.048, %_ZNSt8_Rb_treeIN4cvc58internal12NodeTemplateILb1EEESt4pairIKS3_St6vectorIS3_SaIS3_EEESt10_Select1stIS9_ESt4lessIS3_ESaIS9_EE14_M_lower_boundEPSt13_Rb_tree_nodeIS9_EPSt18_Rb_tree_node_baseRS5_.exit.i.i ], [ %.048, %20 ] %142 = load ptr, ptr %5, align 8, !tbaa !250 %143 = load i64, ptr %142, align 8 %144 = and i64 %143, 1152920405095219200 diff --git a/bench/darktable/optimized/load_mfbacks.ll b/bench/darktable/optimized/load_mfbacks.ll index 5b5644d6a97..112043518f3 100644 --- a/bench/darktable/optimized/load_mfbacks.ll +++ b/bench/darktable/optimized/load_mfbacks.ll @@ -4741,8 +4741,8 @@ define void @_ZN6LibRaw20sinar_4shot_load_rawEv(ptr noundef nonnull align 8 dere .lr.ph: ; preds = %72 %81 = load ptr, ptr %2, align 8 - %82 = trunc i32 %.02443 to i1 - %83 = select i1 %82, i64 2, i64 1 + %82 = and i32 %.02443, 1 + %83 = add nuw nsw i32 %82, 1 br label %88 .loopexit41: ; preds = %69 @@ -4785,10 +4785,11 @@ define void @_ZN6LibRaw20sinar_4shot_load_rawEv(ptr noundef nonnull align 8 dere %100 = mul nuw i32 %76, %96 %101 = add nuw i32 %100, %94 %102 = zext i32 %101 to i64 - %103 = and i64 %indvars.iv, 1 - %104 = xor i64 %83, %103 - %105 = getelementptr inbounds nuw [4 x i16], ptr %81, i64 %102, i64 %104 - store i16 %99, ptr %105, align 2, !tbaa !74 + %103 = and i32 %93, 1 + %104 = xor i32 %83, %103 + %105 = zext nneg i32 %104 to i64 + %106 = getelementptr inbounds nuw [4 x i16], ptr %81, i64 %102, i64 %105 + store i16 %99, ptr %106, align 2, !tbaa !74 %.pre54 = load i16, ptr %36, align 2, !tbaa !72 br label %106 diff --git a/bench/delta-rs/optimized/1rw3q64nilk4jthd.ll b/bench/delta-rs/optimized/1rw3q64nilk4jthd.ll index cc09b75506d..658de41a5d8 100644 --- a/bench/delta-rs/optimized/1rw3q64nilk4jthd.ll +++ b/bench/delta-rs/optimized/1rw3q64nilk4jthd.ll @@ -54851,11 +54851,10 @@ define hidden void @"_ZN93_$LT$$RF$mut$u20$serde_json..de..Deserializer$LT$R$GT$ tail call void @llvm.experimental.noalias.scope.decl(metadata !11265) tail call void @llvm.experimental.noalias.scope.decl(metadata !11268) %18 = load i64, ptr %5, align 8, !range !361, !alias.scope !11268, !noalias !11270, !noundef !7 - %trunc.i.i = trunc nuw i64 %18 to i1 %19 = getelementptr inbounds nuw i8, ptr %5, i64 8 %20 = load ptr, ptr %19, align 8, !alias.scope !11268, !noalias !11270 %.sink1.i.i = ptrtoint ptr %20 to i64 - %.sink.i.i = select i1 %trunc.i.i, i64 2, i64 1 + %.sink.i.i = add nuw nsw i64 %18, 1 %21 = getelementptr inbounds nuw i8, ptr %0, i64 8 store i64 %.sink1.i.i, ptr %21, align 8, !alias.scope !11271, !noalias !11272 store i64 %.sink.i.i, ptr %0, align 8, !alias.scope !11271, !noalias !11272 @@ -56209,11 +56208,10 @@ define hidden void @"_ZN93_$LT$$RF$mut$u20$serde_json..de..Deserializer$LT$R$GT$ tail call void @llvm.experimental.noalias.scope.decl(metadata !11816) tail call void @llvm.experimental.noalias.scope.decl(metadata !11819) %18 = load i64, ptr %5, align 8, !range !361, !alias.scope !11819, !noalias !11821, !noundef !7 - %trunc.i.i = trunc nuw i64 %18 to i1 %19 = getelementptr inbounds nuw i8, ptr %5, i64 8 %20 = load ptr, ptr %19, align 8, !alias.scope !11819, !noalias !11821 %.sink1.i.i = ptrtoint ptr %20 to i64 - %.sink.i.i = select i1 %trunc.i.i, i64 2, i64 1 + %.sink.i.i = add nuw nsw i64 %18, 1 %21 = getelementptr inbounds nuw i8, ptr %0, i64 8 store i64 %.sink1.i.i, ptr %21, align 8, !alias.scope !11822, !noalias !11823 store i64 %.sink.i.i, ptr %0, align 8, !alias.scope !11822, !noalias !11823 diff --git a/bench/delta-rs/optimized/5d242f2by7re2olg.ll b/bench/delta-rs/optimized/5d242f2by7re2olg.ll index d8ab65fd5ac..ffafda71a78 100644 --- a/bench/delta-rs/optimized/5d242f2by7re2olg.ll +++ b/bench/delta-rs/optimized/5d242f2by7re2olg.ll @@ -25124,11 +25124,10 @@ define hidden void @"_ZN93_$LT$$RF$mut$u20$serde_json..de..Deserializer$LT$R$GT$ tail call void @llvm.experimental.noalias.scope.decl(metadata !3674) tail call void @llvm.experimental.noalias.scope.decl(metadata !3677) %18 = load i64, ptr %5, align 8, !range !112, !alias.scope !3677, !noalias !3679, !noundef !5 - %trunc.i.i = trunc nuw i64 %18 to i1 %19 = getelementptr inbounds nuw i8, ptr %5, i64 8 %20 = load ptr, ptr %19, align 8, !alias.scope !3677, !noalias !3679 %.sink1.i.i = ptrtoint ptr %20 to i64 - %.sink.i.i = select i1 %trunc.i.i, i64 2, i64 1 + %.sink.i.i = add nuw nsw i64 %18, 1 %21 = getelementptr inbounds nuw i8, ptr %0, i64 8 store i64 %.sink1.i.i, ptr %21, align 8, !alias.scope !3680, !noalias !3681 store i64 %.sink.i.i, ptr %0, align 8, !alias.scope !3680, !noalias !3681 diff --git a/bench/duckdb/optimized/ub_duckdb_main_relation.ll b/bench/duckdb/optimized/ub_duckdb_main_relation.ll index 476ab3f3990..147d7258a85 100644 --- a/bench/duckdb/optimized/ub_duckdb_main_relation.ll +++ b/bench/duckdb/optimized/ub_duckdb_main_relation.ll @@ -6045,15 +6045,14 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_.exit15: ; preds = to label %68 unwind label %129 68: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_.exit15 - %69 = trunc nuw i8 %66 to i1 - %70 = select i1 %69, i8 2, i8 0 - %71 = getelementptr inbounds nuw i8, ptr %67, i64 80 - store i8 %70, ptr %71, align 8, !tbaa !207 - %72 = load ptr, ptr %7, align 8, !tbaa !252 + %69 = shl nuw nsw i8 %66, 1 + %70 = getelementptr inbounds nuw i8, ptr %67, i64 80 + store i8 %69, ptr %70, align 8, !tbaa !207 + %71 = load ptr, ptr %7, align 8, !tbaa !252 store ptr null, ptr %7, align 8, !tbaa !252 %73 = getelementptr inbounds nuw i8, ptr %6, i64 120 %74 = load ptr, ptr %73, align 8, !tbaa !232 - store ptr %72, ptr %73, align 8, !tbaa !232 + store ptr %71, ptr %73, align 8, !tbaa !232 %.not.i.i.i.i.i16 = icmp eq ptr %74, null br i1 %.not.i.i.i.i.i16, label %_ZNSt10unique_ptrIN6duckdb10CreateInfoESt14default_deleteIS1_EED2Ev.exit, label %_ZNKSt14default_deleteIN6duckdb10CreateInfoEEclEPS1_.exit.i.i.i.i.i @@ -6061,7 +6060,7 @@ _ZNKSt14default_deleteIN6duckdb10CreateInfoEEclEPS1_.exit.i.i.i.i.i: ; preds = % %75 = load ptr, ptr %74, align 8, !tbaa !13 %76 = getelementptr inbounds nuw i8, ptr %75, i64 8 %77 = load ptr, ptr %76, align 8 - call void %77(ptr noundef nonnull align 8 dereferenceable(296) %74) #25 + call void %76(ptr noundef nonnull align 8 dereferenceable(296) %74) #25 br label %_ZNSt10unique_ptrIN6duckdb10CreateInfoESt14default_deleteIS1_EED2Ev.exit _ZNSt10unique_ptrIN6duckdb10CreateInfoESt14default_deleteIS1_EED2Ev.exit: ; preds = %68, %_ZNKSt14default_deleteIN6duckdb10CreateInfoEEclEPS1_.exit.i.i.i.i.i @@ -6077,7 +6076,7 @@ _ZNKSt14default_deleteIN6duckdb14CreateViewInfoEEclEPS1_.exit.i: ; preds = %78 %80 = load ptr, ptr %79, align 8, !tbaa !13 %81 = getelementptr inbounds nuw i8, ptr %80, i64 8 %82 = load ptr, ptr %81, align 8 - call void %82(ptr noundef nonnull align 8 dereferenceable(432) %79) #25 + call void %81(ptr noundef nonnull align 8 dereferenceable(432) %79) #25 br label %_ZNSt10unique_ptrIN6duckdb14CreateViewInfoESt14default_deleteIS1_EED2Ev.exit _ZNSt10unique_ptrIN6duckdb14CreateViewInfoESt14default_deleteIS1_EED2Ev.exit: ; preds = %78, %_ZNKSt14default_deleteIN6duckdb14CreateViewInfoEEclEPS1_.exit.i @@ -6091,7 +6090,7 @@ _ZNKSt14default_deleteIN6duckdb10CreateInfoEEclEPS1_.exit.i.i: ; preds = %_ZNSt1 %84 = load ptr, ptr %83, align 8, !tbaa !13 %85 = getelementptr inbounds nuw i8, ptr %84, i64 8 %86 = load ptr, ptr %85, align 8 - call void %86(ptr noundef nonnull align 8 dereferenceable(296) %83) #25 + call void %85(ptr noundef nonnull align 8 dereferenceable(296) %83) #25 br label %_ZNSt10unique_ptrIN6duckdb10CreateInfoESt14default_deleteIS1_EED2Ev.exit.i _ZNSt10unique_ptrIN6duckdb10CreateInfoESt14default_deleteIS1_EED2Ev.exit.i: ; preds = %_ZNKSt14default_deleteIN6duckdb10CreateInfoEEclEPS1_.exit.i.i, %_ZNSt10unique_ptrIN6duckdb14CreateViewInfoESt14default_deleteIS1_EED2Ev.exit @@ -6172,7 +6171,7 @@ _ZNKSt14default_deleteIN6duckdb15SelectStatementEEclEPS1_.exit.i: ; preds = %_ZN %114 = load ptr, ptr %113, align 8, !tbaa !13 %115 = getelementptr inbounds nuw i8, ptr %114, i64 8 %116 = load ptr, ptr %115, align 8 - call void %116(ptr noundef nonnull align 8 dereferenceable(128) %113) #25 + call void %115(ptr noundef nonnull align 8 dereferenceable(128) %113) #25 br label %_ZNSt10unique_ptrIN6duckdb15SelectStatementESt14default_deleteIS1_EED2Ev.exit _ZNSt10unique_ptrIN6duckdb15SelectStatementESt14default_deleteIS1_EED2Ev.exit: ; preds = %_ZN6duckdb15CreateStatementD2Ev.exit, %_ZNKSt14default_deleteIN6duckdb15SelectStatementEEclEPS1_.exit.i @@ -6195,7 +6194,7 @@ _ZNKSt14default_deleteIN6duckdb9QueryNodeEEclEPS1_.exit.i21: ; preds = %119 %122 = load ptr, ptr %121, align 8, !tbaa !13 %123 = getelementptr inbounds nuw i8, ptr %122, i64 8 %124 = load ptr, ptr %123, align 8 - call void %124(ptr noundef nonnull align 8 dereferenceable(120) %121) #25 + call void %123(ptr noundef nonnull align 8 dereferenceable(120) %121) #25 br label %_ZNSt10unique_ptrIN6duckdb9QueryNodeESt14default_deleteIS1_EED2Ev.exit22 _ZNSt10unique_ptrIN6duckdb9QueryNodeESt14default_deleteIS1_EED2Ev.exit22: ; preds = %_ZNKSt14default_deleteIN6duckdb9QueryNodeEEclEPS1_.exit.i21, %119, %117 @@ -6224,7 +6223,7 @@ _ZNKSt14default_deleteIN6duckdb14CreateViewInfoEEclEPS1_.exit.i24: ; preds = %12 %132 = load ptr, ptr %131, align 8, !tbaa !13 %133 = getelementptr inbounds nuw i8, ptr %132, i64 8 %134 = load ptr, ptr %133, align 8 - call void %134(ptr noundef nonnull align 8 dereferenceable(432) %131) #25 + call void %133(ptr noundef nonnull align 8 dereferenceable(432) %131) #25 br label %.body .body: ; preds = %_ZNKSt14default_deleteIN6duckdb14CreateViewInfoEEclEPS1_.exit.i24, %129, %127, %41 @@ -6248,7 +6247,7 @@ _ZNKSt14default_deleteIN6duckdb15SelectStatementEEclEPS1_.exit.i27: ; preds = %1 %138 = load ptr, ptr %137, align 8, !tbaa !13 %139 = getelementptr inbounds nuw i8, ptr %138, i64 8 %140 = load ptr, ptr %139, align 8 - call void %140(ptr noundef nonnull align 8 dereferenceable(128) %137) #25 + call void %139(ptr noundef nonnull align 8 dereferenceable(128) %137) #25 br label %_ZNSt10unique_ptrIN6duckdb15SelectStatementESt14default_deleteIS1_EED2Ev.exit28 _ZNSt10unique_ptrIN6duckdb15SelectStatementESt14default_deleteIS1_EED2Ev.exit28: ; preds = %136, %_ZNKSt14default_deleteIN6duckdb15SelectStatementEEclEPS1_.exit.i27 diff --git a/bench/duckdb/optimized/ub_duckdb_storage.ll b/bench/duckdb/optimized/ub_duckdb_storage.ll index 907bcbfddc5..53f74d4e78b 100644 --- a/bench/duckdb/optimized/ub_duckdb_storage.ll +++ b/bench/duckdb/optimized/ub_duckdb_storage.ll @@ -46345,13 +46345,15 @@ define void @_ZN6duckdb22SingleFileBlockManager17CreateNewDatabaseEv(ptr noundef %9 = getelementptr inbounds nuw i8, ptr %0, i64 480 %10 = load i8, ptr %9, align 8, !tbaa !1748, !range !203, !noundef !204 %11 = trunc nuw i8 %10 to i1 + %.sroa.10.sroa.0.0.i = sub nuw nsw i8 2, %10 %12 = getelementptr inbounds nuw i8, ptr %0, i64 481 %13 = load i8, ptr %12, align 1, !tbaa !1774, !range !203, !noundef !204 %14 = shl nuw nsw i8 %13, 2 %15 = zext nneg i8 %14 to i64 %spec.select66.i = select i1 %11, i64 385, i64 267 %16 = or disjoint i64 %spec.select66.i, %15 - %.sroa.10.8.insert.ext.i = select i1 %11, i64 257, i64 258 + %.sroa.10.8.insert.ext.i = zext nneg i8 %.sroa.10.sroa.0.0.i to i64 + %.sroa.10.sroa.0.0.insert.insert.i = or disjoint i64 %.sroa.10.sroa.0.0.insert.ext.i, 256 %17 = getelementptr inbounds nuw i8, ptr %0, i64 128 %18 = load ptr, ptr %17, align 8, !tbaa !1775 %19 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6duckdb10FileSystem3GetERNS_16AttachedDatabaseE(ptr noundef nonnull align 8 dereferenceable(274) %18) @@ -46360,7 +46362,7 @@ define void @_ZN6duckdb22SingleFileBlockManager17CreateNewDatabaseEv(ptr noundef %21 = load ptr, ptr %19, align 8, !tbaa !41 %22 = getelementptr inbounds nuw i8, ptr %21, i64 16 %23 = load ptr, ptr %22, align 8 - call void %23(ptr dead_on_unwind nonnull writable sret(%"class.duckdb::unique_ptr.1954") align 8 %5, ptr noundef nonnull align 8 dereferenceable(8) %19, ptr noundef nonnull align 8 dereferenceable(32) %20, i64 %16, i64 %.sroa.10.8.insert.ext.i, ptr null) + call void %23(ptr dead_on_unwind nonnull writable sret(%"class.duckdb::unique_ptr.1954") align 8 %5, ptr noundef nonnull align 8 dereferenceable(8) %19, ptr noundef nonnull align 8 dereferenceable(32) %20, i64 %16, i64 %.sroa.10.sroa.0.0.insert.insert.i, ptr null) %24 = getelementptr inbounds nuw i8, ptr %0, i64 176 %25 = load ptr, ptr %5, align 8, !tbaa !1702 store ptr null, ptr %5, align 8, !tbaa !1702 @@ -46516,13 +46518,15 @@ define void @_ZN6duckdb22SingleFileBlockManager20LoadExistingDatabaseEv(ptr noun %15 = getelementptr inbounds nuw i8, ptr %0, i64 480 %16 = load i8, ptr %15, align 8, !tbaa !1748, !range !203, !noundef !204 %17 = trunc nuw i8 %16 to i1 + %.sroa.10.sroa.0.0.i = sub nuw nsw i8 2, %16 %18 = getelementptr inbounds nuw i8, ptr %0, i64 481 %19 = load i8, ptr %18, align 1, !tbaa !1774, !range !203, !noundef !204 %20 = shl nuw nsw i8 %19, 2 %21 = zext nneg i8 %20 to i64 %spec.select66.i = select i1 %17, i64 385, i64 259 %22 = or disjoint i64 %spec.select66.i, %21 - %.sroa.10.8.insert.ext.i = select i1 %17, i64 257, i64 258 + %.sroa.10.8.insert.ext.i = zext nneg i8 %.sroa.10.sroa.0.0.i to i64 + %.sroa.10.sroa.0.0.insert.insert.i = or disjoint i64 %.sroa.10.sroa.0.0.insert.ext.i, 256 %23 = getelementptr inbounds nuw i8, ptr %0, i64 128 %24 = load ptr, ptr %23, align 8, !tbaa !1775 %25 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6duckdb10FileSystem3GetERNS_16AttachedDatabaseE(ptr noundef nonnull align 8 dereferenceable(274) %24) @@ -46531,7 +46535,7 @@ define void @_ZN6duckdb22SingleFileBlockManager20LoadExistingDatabaseEv(ptr noun %27 = load ptr, ptr %25, align 8, !tbaa !41 %28 = getelementptr inbounds nuw i8, ptr %27, i64 16 %29 = load ptr, ptr %28, align 8 - call void %29(ptr dead_on_unwind nonnull writable sret(%"class.duckdb::unique_ptr.1954") align 8 %5, ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 8 dereferenceable(32) %26, i64 %22, i64 %.sroa.10.8.insert.ext.i, ptr null) + call void %29(ptr dead_on_unwind nonnull writable sret(%"class.duckdb::unique_ptr.1954") align 8 %5, ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 8 dereferenceable(32) %26, i64 %22, i64 %.sroa.10.sroa.0.0.insert.insert.i, ptr null) %30 = getelementptr inbounds nuw i8, ptr %0, i64 176 %31 = load ptr, ptr %5, align 8, !tbaa !1702 store ptr null, ptr %5, align 8, !tbaa !1702 @@ -70124,6 +70128,7 @@ define { i64, i64 } @_ZNK6duckdb22SingleFileBlockManager12GetFileFlagsEb(ptr nou %3 = getelementptr inbounds nuw i8, ptr %0, i64 480 %4 = load i8, ptr %3, align 8, !tbaa !1748, !range !203, !noundef !204 %5 = trunc nuw i8 %4 to i1 + %.sroa.10.sroa.0.0 = sub nuw nsw i8 2, %4 %6 = getelementptr inbounds nuw i8, ptr %0, i64 481 %7 = load i8, ptr %6, align 1, !tbaa !1774, !range !203, !noundef !204 %8 = shl nuw nsw i8 %7, 2 @@ -70132,8 +70137,9 @@ define { i64, i64 } @_ZNK6duckdb22SingleFileBlockManager12GetFileFlagsEb(ptr nou %spec.select66 = select i1 %5, i64 385, i64 %10 %11 = or disjoint i64 %spec.select66, %9 %.fca.0.insert = insertvalue { i64, i64 } poison, i64 %11, 0 - %.sroa.10.8.insert.ext = select i1 %5, i64 257, i64 258 - %.fca.1.insert = insertvalue { i64, i64 } %.fca.0.insert, i64 %.sroa.10.8.insert.ext, 1 + %.sroa.10.8.insert.ext = zext nneg i8 %.sroa.10.sroa.0.0 to i64 + %.fca.1.insert = or disjoint i64 %.sroa.10.8.insert.ext, 256 + %.fca.1.insert = insertvalue { i64, i64 } %.fca.0.insert, i64 %.sroa.10.sroa.0.0.insert.insert, 1 ret { i64, i64 } %.fca.1.insert } diff --git a/bench/folly/optimized/MemoryMapping.ll b/bench/folly/optimized/MemoryMapping.ll index 8022bbf1b58..4e0e4520c45 100644 --- a/bench/folly/optimized/MemoryMapping.ll +++ b/bench/folly/optimized/MemoryMapping.ll @@ -734,32 +734,29 @@ _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit121: ; preds = %_ZSt %159 = trunc nuw i8 %158 to i1 %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %0, i64 35 %.pre147 = load i8, ptr %.phi.trans.insert, align 1, !tbaa !54, !range !31 - %.pre148 = trunc nuw i8 %.pre147 to i1 - br i1 %159, label %._crit_edge, label %161 - -._crit_edge: ; preds = %147 - %160 = select i1 %.pre148, i32 2, i32 0 - br label %162 - -161: ; preds = %147 - br i1 %.pre148, label %162, label %165 - -162: ; preds = %._crit_edge, %161 - %.pre-phi = phi i32 [ %160, %._crit_edge ], [ 2, %161 ] - %163 = zext nneg i8 %158 to i32 - %164 = or disjoint i32 %.pre-phi, %163 - br label %165 - -165: ; preds = %162, %161 - %.073 = phi i32 [ %164, %162 ], [ 0, %161 ] - %166 = getelementptr inbounds nuw i8, ptr %0, i64 40 - %167 = load ptr, ptr %166, align 8, !tbaa !55 - %168 = load i32, ptr %0, align 8, !tbaa !7 - %169 = call ptr @mmap(ptr noundef %167, i64 noundef %143, i32 noundef %.073, i32 noundef %.1, i32 noundef %168, i64 noundef %104) #20 - %.not97 = icmp eq ptr %169, inttoptr (i64 -1 to ptr) - br i1 %.not97, label %170, label %.critedge108, !prof !34 - -170: ; preds = %165 + br i1 %159, label %._crit_edge, label %160 + +160: ; preds = %147 + %161 = trunc nuw i8 %.pre147 to i1 + br i1 %161, label %._crit_edge, label %166 + +._crit_edge: ; preds = %147, %160 + %162 = phi i8 [ 1, %160 ], [ %.pre147, %147 ] + %163 = shl nuw nsw i8 %162, 1 + %164 = or disjoint i8 %163, %158 + %165 = zext nneg i8 %164 to i32 + br label %166 + +166: ; preds = %._crit_edge, %160 + %.073 = phi i32 [ %165, %._crit_edge ], [ 0, %160 ] + %167 = getelementptr inbounds nuw i8, ptr %0, i64 40 + %168 = load ptr, ptr %167, align 8, !tbaa !55 + %.073 = load i32, ptr %0, align 8, !tbaa !7 + %166 = call ptr @mmap(ptr noundef %168, i64 noundef %143, i32 noundef %.073, i32 noundef %.1, i32 noundef %169, i64 noundef %104) #20 + %167 = icmp eq ptr %166, inttoptr (i64 -1 to ptr) + br i1 %167, label %171, label %.critedge108, !prof !34 + +171: ; preds = %166 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %30) #20 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %31) #20 store i64 ptrtoint (ptr @_ZN6google10LogMessage9SendToLogEv to i64), ptr %31, align 8, !tbaa !36 @@ -770,7 +767,7 @@ _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit121: ; preds = %_ZSt %171 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6google10LogMessage6streamEv(ptr noundef nonnull align 8 dereferenceable(16) %30) to label %172 unwind label %184 -172: ; preds = %170 +172: ; preds = %171 %173 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) %171, ptr noundef nonnull @.str.20, i64 noundef 34) to label %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit122 unwind label %184 @@ -796,18 +793,18 @@ _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit125: ; preds = %_ZNS call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %30) #20 br label %.critedge108 -.critedge108: ; preds = %165, %.critedge107 +.critedge108: ; preds = %166, %.critedge107 %179 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store ptr %169, ptr %179, align 8, !tbaa !56 + store ptr %166, ptr %179, align 8, !tbaa !56 %180 = getelementptr inbounds nuw i8, ptr %0, i64 56 - %181 = getelementptr inbounds i8, ptr %169, i64 %103 + %181 = getelementptr inbounds i8, ptr %166, i64 %103 store ptr %181, ptr %180, align 8, !tbaa !57 %182 = getelementptr inbounds nuw i8, ptr %181, i64 %.078 %183 = getelementptr inbounds nuw i8, ptr %0, i64 64 store ptr %182, ptr %183, align 8, !tbaa !58 br label %186 -184: ; preds = %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit125, %_ZNSolsEl.exit124, %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit123, %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit122, %172, %170 +184: ; preds = %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit125, %_ZNSolsEl.exit124, %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit123, %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit122, %172, %171 %185 = landingpad { ptr, i32 } cleanup call void @_ZN6google15ErrnoLogMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %30) #20 @@ -834,8 +831,8 @@ define void @_ZN5folly13MemoryMappingC2EPKcllNS0_7OptionsE(ptr noundef nonnull a %6 = alloca %"class.folly::File", align 4 %7 = getelementptr inbounds nuw i8, ptr %4, i64 11 %8 = load i8, ptr %7, align 1, !tbaa !20, !range !31, !noundef !32 - %9 = trunc nuw i8 %8 to i1 - %10 = select i1 %9, i32 2, i32 0 + %9 = shl nuw nsw i8 %8, 1 + %10 = zext nneg i8 %9 to i32 call void @_ZN5folly4FileC1EPKcij(ptr noundef nonnull align 4 dereferenceable(5) %6, ptr noundef %1, i32 noundef %10, i32 noundef 438) invoke void @_ZN5folly13MemoryMappingC2ENS_4FileEllNS0_7OptionsE(ptr noundef nonnull align 8 dereferenceable(72) %0, ptr noundef nonnull %6, i64 noundef %2, i64 noundef %3, ptr noundef nonnull byval(%"struct.folly::MemoryMapping::Options") align 8 %4) to label %11 unwind label %12 diff --git a/bench/grpc/optimized/http_client_filter.ll b/bench/grpc/optimized/http_client_filter.ll index b9c1e61d048..b7c55722aa9 100644 --- a/bench/grpc/optimized/http_client_filter.ll +++ b/bench/grpc/optimized/http_client_filter.ll @@ -442,12 +442,12 @@ entry: %ref.tmp10.sroa.6 = alloca %"union.grpc_slice::grpc_slice_data", align 8 %test_only_use_put_requests_ = getelementptr inbounds nuw i8, ptr %filter, i64 64 %0 = load i8, ptr %test_only_use_put_requests_, align 8 - %tobool = trunc i8 %0 to i1 %arrayidx.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %md, i64 2 %1 = load i16, ptr %arrayidx.i.i.i.i.i, align 2 - %. = select i1 %tobool, i8 2, i8 0 - %2 = getelementptr inbounds nuw i8, ptr %md, i64 10 - store i8 %., ptr %2, align 2 + %. = shl i8 %0, 1 + %2 = and i8 %2, 2 + %3 = getelementptr inbounds nuw i8, ptr %md, i64 10 + store i8 %., ptr %3, align 2 %scheme_ = getelementptr inbounds nuw i8, ptr %filter, i64 24 %arrayidx.i.i.i.i.i12 = getelementptr inbounds nuw i8, ptr %md, i64 2 %storemerge.i.i.i.i13 = or i16 %1, -24576 @@ -506,7 +506,7 @@ if.then.i.i.i.i.i.i: ; preds = %if.then.i.i.i if.then.i.i.i.i.i.i.i: ; preds = %if.then.i.i.i.i.i.i %destroyer_fn_.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %__tmp.i.i.i.i.sroa.0.0.copyload.i.i.i, i64 8 %7 = load ptr, ptr %destroyer_fn_.i.i.i.i.i.i.i, align 8 - invoke void %7(ptr noundef nonnull align 8 dereferenceable(16) %__tmp.i.i.i.i.sroa.0.0.copyload.i.i.i) + invoke void %8(ptr noundef nonnull align 8 dereferenceable(16) %__tmp.i.i.i.i.sroa.0.0.copyload.i.i.i) to label %_ZN9grpc_core5SliceD2Ev.exit unwind label %terminate.lpad.i.i.i.i.i terminate.lpad.i.i.i.i.i: ; preds = %if.then.i.i.i.i.i.i.i @@ -3647,12 +3647,12 @@ entry: %4 = load ptr, ptr %3, align 8, !noalias !72 %test_only_use_put_requests_.i.i.i.i = getelementptr inbounds nuw i8, ptr %4, i64 64 %5 = load i8, ptr %test_only_use_put_requests_.i.i.i.i, align 8, !noalias !72 - %tobool.i.i.i.i = trunc i8 %5 to i1 %arrayidx.i.i.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %2, i64 2 %6 = load i16, ptr %arrayidx.i.i.i.i.i.i.i.i.i, align 2, !noalias !72 - %..i.i.i.i = select i1 %tobool.i.i.i.i, i8 2, i8 0 - %7 = getelementptr inbounds nuw i8, ptr %2, i64 10 - store i8 %..i.i.i.i, ptr %7, align 1, !noalias !72 + %..i.i.i.i = shl i8 %5, 1 + %7 = and i8 %7, 2 + %8 = getelementptr inbounds nuw i8, ptr %2, i64 10 + store i8 %..i.i.i.i, ptr %8, align 1, !noalias !72 %scheme_.i.i.i.i = getelementptr inbounds nuw i8, ptr %4, i64 24 %storemerge.i.i.i.i13.i.i.i.i = or i16 %6, -24576 store i16 %storemerge.i.i.i.i13.i.i.i.i, ptr %arrayidx.i.i.i.i.i.i.i.i.i, align 2, !noalias !72 @@ -3710,7 +3710,7 @@ if.then.i.i.i.i.i.i.i.i.i.i: ; preds = %if.then.i.i.i.i.i.i if.then.i.i.i.i.i.i.i.i.i.i.i: ; preds = %if.then.i.i.i.i.i.i.i.i.i.i %destroyer_fn_.i.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %__tmp.i.i.i.i.sroa.0.0.copyload.i.i.i.i.i.i.i, i64 8 %12 = load ptr, ptr %destroyer_fn_.i.i.i.i.i.i.i.i.i.i.i, align 8, !noalias !72 - invoke void %12(ptr noundef nonnull align 8 dereferenceable(16) %__tmp.i.i.i.i.sroa.0.0.copyload.i.i.i.i.i.i.i) + invoke void %13(ptr noundef nonnull align 8 dereferenceable(16) %__tmp.i.i.i.i.sroa.0.0.copyload.i.i.i.i.i.i.i) to label %_ZN9grpc_core4PollISt10unique_ptrI19grpc_metadata_batchNS_5Arena13PooledDeleterEEED2Ev.exit unwind label %terminate.lpad.i.i.i.i.i.i.i.i.i, !noalias !72 terminate.lpad.i.i.i.i.i.i.i.i.i: ; preds = %if.then.i.i.i.i.i.i.i.i.i.i.i @@ -5426,12 +5426,12 @@ entry: %1 = load ptr, ptr %channel, align 8 %test_only_use_put_requests_.i = getelementptr inbounds nuw i8, ptr %1, i64 64 %2 = load i8, ptr %test_only_use_put_requests_.i, align 8 - %tobool.i = trunc i8 %2 to i1 %arrayidx.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %0, i64 2 %3 = load i16, ptr %arrayidx.i.i.i.i.i.i, align 2 - %..i = select i1 %tobool.i, i8 2, i8 0 - %4 = getelementptr inbounds nuw i8, ptr %0, i64 10 - store i8 %..i, ptr %4, align 1 + %..i = shl i8 %2, 1 + %4 = and i8 %4, 2 + %5 = getelementptr inbounds nuw i8, ptr %0, i64 10 + store i8 %..i, ptr %5, align 1 %scheme_.i = getelementptr inbounds nuw i8, ptr %1, i64 24 %storemerge.i.i.i.i13.i = or i16 %3, -24576 store i16 %storemerge.i.i.i.i13.i, ptr %arrayidx.i.i.i.i.i.i, align 2 @@ -5489,7 +5489,7 @@ if.then.i.i.i.i.i.i.i: ; preds = %if.then.i.i.i.i if.then.i.i.i.i.i.i.i.i: ; preds = %if.then.i.i.i.i.i.i.i %destroyer_fn_.i.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %__tmp.i.i.i.i.sroa.0.0.copyload.i.i.i.i, i64 8 %9 = load ptr, ptr %destroyer_fn_.i.i.i.i.i.i.i.i, align 8 - invoke void %9(ptr noundef nonnull align 8 dereferenceable(16) %__tmp.i.i.i.i.sroa.0.0.copyload.i.i.i.i) + invoke void %10(ptr noundef nonnull align 8 dereferenceable(16) %__tmp.i.i.i.i.sroa.0.0.copyload.i.i.i.i) to label %_ZN9grpc_core16HttpClientFilter4Call23OnClientInitialMetadataER19grpc_metadata_batchPS0_.exit unwind label %terminate.lpad.i.i.i.i.i.i terminate.lpad.i.i.i.i.i.i: ; preds = %if.then.i.i.i.i.i.i.i.i @@ -5573,7 +5573,7 @@ _ZN9grpc_core8Activity7currentEv.exit.i.i.i.i: ; preds = %.noexc.i.i, %if.end %vtable.i.i.i.i = load ptr, ptr %23, align 8 %vfn.i.i.i.i = getelementptr inbounds nuw i8, ptr %vtable.i.i.i.i, i64 24 %24 = load ptr, ptr %vfn.i.i.i.i, align 8 - invoke void %24(ptr noundef nonnull align 8 dereferenceable(8) %23, i16 noundef zeroext %21) + invoke void %25(ptr noundef nonnull align 8 dereferenceable(8) %23, i16 noundef zeroext %21) to label %_ZN9grpc_core37ClientInitialMetadataOutstandingTokenD2Ev.exit.i unwind label %terminate.lpad.i.i terminate.lpad.i.i: ; preds = %_ZN9grpc_core8Activity7currentEv.exit.i.i.i.i, %20 diff --git a/bench/hdf5/optimized/H5B2.ll b/bench/hdf5/optimized/H5B2.ll index 9a577503ec9..7eb7a243dc2 100644 --- a/bench/hdf5/optimized/H5B2.ll +++ b/bench/hdf5/optimized/H5B2.ll @@ -937,8 +937,8 @@ thread-pre-split: ; preds = %133 %150 = load ptr, ptr %22, align 8, !tbaa !19 %151 = load i64, ptr %6, align 8, !tbaa !54 %152 = load i8, ptr %91, align 8, !tbaa !49, !range !7, !noundef !8 - %153 = trunc nuw i8 %152 to i1 - %154 = select i1 %153, i32 4, i32 0 + %153 = shl nuw nsw i8 %152, 2 + %154 = zext nneg i8 %153 to i32 %155 = call i32 @H5AC_unprotect(ptr noundef %150, ptr noundef nonnull @H5AC_BT2_INT, i64 noundef %151, ptr noundef nonnull %97, i32 noundef %154) #7 %156 = icmp slt i32 %155, 0 br i1 %156, label %157, label %195 @@ -1394,8 +1394,8 @@ define range(i32 -1, 1) i32 @H5B2_index(ptr noundef readonly captures(none) %0, %70 = load ptr, ptr %20, align 8, !tbaa !19 %71 = load i64, ptr %6, align 8, !tbaa !54 %72 = load i8, ptr %39, align 8, !tbaa !49, !range !7, !noundef !8 - %73 = trunc nuw i8 %72 to i1 - %74 = select i1 %73, i32 4, i32 0 + %73 = shl nuw nsw i8 %72, 2 + %74 = zext nneg i8 %73 to i32 %75 = call i32 @H5AC_unprotect(ptr noundef %70, ptr noundef nonnull @H5AC_BT2_INT, i64 noundef %71, ptr noundef nonnull %44, i32 noundef %74) #7 %76 = icmp slt i32 %75, 0 br i1 %76, label %77, label %81 @@ -1492,8 +1492,8 @@ define range(i32 -1, 1) i32 @H5B2_index(ptr noundef readonly captures(none) %0, %125 = load ptr, ptr %20, align 8, !tbaa !19 %126 = load i64, ptr %6, align 8, !tbaa !54 %127 = load i8, ptr %39, align 8, !tbaa !49, !range !7, !noundef !8 - %128 = trunc nuw i8 %127 to i1 - %129 = select i1 %128, i32 4, i32 0 + %128 = shl nuw nsw i8 %127, 2 + %129 = zext nneg i8 %128 to i32 %130 = call i32 @H5AC_unprotect(ptr noundef %125, ptr noundef nonnull @H5AC_BT2_INT, i64 noundef %126, ptr noundef nonnull %44, i32 noundef %129) #7 %131 = icmp slt i32 %130, 0 br i1 %131, label %132, label %136 @@ -2226,8 +2226,8 @@ thread-pre-split: ; preds = %79 %96 = load ptr, ptr %24, align 8, !tbaa !19 %97 = load i64, ptr %6, align 8, !tbaa !54 %98 = load i8, ptr %37, align 8, !tbaa !49, !range !7, !noundef !8 - %99 = trunc nuw i8 %98 to i1 - %100 = select i1 %99, i32 4, i32 0 + %99 = shl nuw nsw i8 %98, 2 + %100 = zext nneg i8 %99 to i32 %101 = call i32 @H5AC_unprotect(ptr noundef %96, ptr noundef nonnull @H5AC_BT2_INT, i64 noundef %97, ptr noundef nonnull %43, i32 noundef %100) #7 %102 = icmp slt i32 %101, 0 br i1 %102, label %103, label %143 @@ -2272,8 +2272,8 @@ thread-pre-split: ; preds = %79 130: ; preds = %107 %131 = load i8, ptr %10, align 1, !tbaa !3, !range !7, !noundef !8 - %132 = trunc nuw i8 %131 to i1 - %133 = select i1 %132, i32 2, i32 0 + %132 = shl nuw nsw i8 %131, 1 + %133 = zext nneg i8 %132 to i32 %134 = load ptr, ptr %24, align 8, !tbaa !19 %135 = load i64, ptr %6, align 8, !tbaa !54 %136 = call i32 @H5AC_unprotect(ptr noundef %134, ptr noundef nonnull @H5AC_BT2_INT, i64 noundef %135, ptr noundef nonnull %43, i32 noundef %133) #7 @@ -2506,8 +2506,8 @@ thread-pre-split: ; preds = %79 267: ; preds = %218, %._crit_edge221, %241 %268 = load i8, ptr %11, align 1, !tbaa !3, !range !7, !noundef !8 - %269 = trunc nuw i8 %268 to i1 - %270 = select i1 %269, i32 2, i32 0 + %269 = shl nuw nsw i8 %268, 1 + %270 = zext nneg i8 %269 to i32 %271 = load ptr, ptr %24, align 8, !tbaa !19 %272 = load i64, ptr %6, align 8, !tbaa !54 %273 = call i32 @H5AC_unprotect(ptr noundef %271, ptr noundef nonnull @H5AC_BT2_LEAF, i64 noundef %272, ptr noundef nonnull %147, i32 noundef %270) #7 diff --git a/bench/hdf5/optimized/H5B2leaf.ll b/bench/hdf5/optimized/H5B2leaf.ll index b2b8e971aca..ac1b9b46d4c 100644 --- a/bench/hdf5/optimized/H5B2leaf.ll +++ b/bench/hdf5/optimized/H5B2leaf.ll @@ -1090,8 +1090,8 @@ define range(i32 -1, 1) i32 @H5B2__update_leaf(ptr noundef %0, ptr noundef captu .thread97: ; preds = %.thread %89 = load i8, ptr %11, align 1, !tbaa !3, !range !7, !noundef !8 - %90 = trunc nuw i8 %89 to i1 - %91 = select i1 %90, i32 2, i32 0 + %90 = shl nuw nsw i8 %89, 1 + %91 = zext nneg i8 %90 to i32 store i32 1, ptr %2, align 4, !tbaa !54 call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %11) #6 br label %123 @@ -1246,7 +1246,8 @@ define range(i32 -1, 1) i32 @H5B2__update_leaf(ptr noundef %0, ptr noundef captu %187 = getelementptr inbounds nuw i8, ptr %0, i64 392 %188 = load i8, ptr %187, align 8, !tbaa !61, !range !7, !noundef !8 %189 = trunc nuw i8 %188 to i1 - %.not92 = icmp ne i32 %.281, 0 + %.not92 = and i32 %.281, 2 + %.not92 = icmp ne i32 %190, 0 %or.cond96.not = select i1 %189, i1 %.not92, i1 false br i1 %or.cond96.not, label %190, label %.thread107 diff --git a/bench/hdf5/optimized/H5HFdbg.ll b/bench/hdf5/optimized/H5HFdbg.ll index 6b69159ea23..6716ee24014 100644 --- a/bench/hdf5/optimized/H5HFdbg.ll +++ b/bench/hdf5/optimized/H5HFdbg.ll @@ -827,8 +827,9 @@ define range(i32 -1, 1) i32 @H5HF_dblock_debug(ptr noundef %0, i64 noundef %1, p %34 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.18, i32 noundef %3, ptr noundef nonnull @.str.6, i32 noundef %4, ptr noundef nonnull @.str.48, i64 noundef %33) #9 %35 = getelementptr inbounds nuw i8, ptr %18, i64 259 %36 = load i8, ptr %35, align 1, !tbaa !104, !range !7, !noundef !8 - %37 = trunc nuw i8 %36 to i1 - %38 = select i1 %37, i64 9, i64 5 + %37 = shl nuw nsw i8 %36, 2 + %38 = add nuw nsw i8 %37, 5 + %38 = zext nneg i8 %narrow to i64 %39 = getelementptr inbounds nuw i8, ptr %18, i64 618 %40 = load i8, ptr %39, align 2, !tbaa !105 %41 = zext i8 %40 to i64 diff --git a/bench/hdf5/optimized/H5HFman.ll b/bench/hdf5/optimized/H5HFman.ll index e44e214febc..27be21df42a 100644 --- a/bench/hdf5/optimized/H5HFman.ll +++ b/bench/hdf5/optimized/H5HFman.ll @@ -751,8 +751,9 @@ define internal fastcc range(i32 -1, 1) i32 @H5HF__man_op_real(ptr noundef %0, p %162 = sub i64 %.094.lcssa, %161 %163 = getelementptr inbounds nuw i8, ptr %0, i64 259 %164 = load i8, ptr %163, align 1, !tbaa !76, !range !12, !noundef !13 - %165 = trunc nuw i8 %164 to i1 - %166 = select i1 %165, i64 9, i64 5 + %165 = shl nuw nsw i8 %164, 2 + %166 = add nuw nsw i8 %165, 5 + %166 = zext nneg i8 %narrow to i64 %167 = getelementptr inbounds nuw i8, ptr %0, i64 618 %168 = load i8, ptr %167, align 2, !tbaa !77 %169 = zext i8 %168 to i64 @@ -1112,8 +1113,9 @@ define range(i32 -1, 1) i32 @H5HF__man_remove(ptr noundef %0, ptr noundef readon %136 = sub i64 %.087.lcssa, %.084 %137 = getelementptr inbounds nuw i8, ptr %0, i64 259 %138 = load i8, ptr %137, align 1, !tbaa !76, !range !12, !noundef !13 - %139 = trunc nuw i8 %138 to i1 - %140 = select i1 %139, i64 9, i64 5 + %139 = shl nuw nsw i8 %138, 2 + %140 = add nuw nsw i8 %139, 5 + %140 = zext nneg i8 %narrow to i64 %141 = getelementptr inbounds nuw i8, ptr %0, i64 618 %142 = load i8, ptr %141, align 2, !tbaa !77 %143 = zext i8 %142 to i64 diff --git a/bench/hdf5/optimized/H5Oginfo.ll b/bench/hdf5/optimized/H5Oginfo.ll index c48c356fc9a..650426d13fc 100644 --- a/bench/hdf5/optimized/H5Oginfo.ll +++ b/bench/hdf5/optimized/H5Oginfo.ll @@ -231,7 +231,7 @@ define internal noundef i32 @H5O__ginfo_encode(ptr readnone captures(none) %0, i %9 = trunc nuw i8 %8 to i1 %10 = xor i1 %9, true %11 = select i1 %7, i1 true, i1 %10 - br i1 %11, label %12, label %60, !prof !9 + br i1 %11, label %12, label %59, !prof !9 12: ; preds = %5 %13 = getelementptr inbounds nuw i8, ptr %3, i64 1 @@ -240,67 +240,66 @@ define internal noundef i32 @H5O__ginfo_encode(ptr readnone captures(none) %0, i %15 = load i8, ptr %14, align 4, !tbaa !13, !range !7, !noundef !8 %16 = getelementptr inbounds nuw i8, ptr %4, i64 10 %17 = load i8, ptr %16, align 2, !tbaa !17, !range !7, !noundef !8 - %18 = trunc nuw i8 %17 to i1 - %19 = select i1 %18, i8 2, i8 0 - %20 = or disjoint i8 %19, %15 - %21 = getelementptr inbounds nuw i8, ptr %3, i64 2 - store i8 %20, ptr %13, align 1, !tbaa !12 - %22 = load i8, ptr %14, align 4, !tbaa !13, !range !7, !noundef !8 - %23 = trunc nuw i8 %22 to i1 - br i1 %23, label %24, label %41 - -24: ; preds = %12 - %25 = getelementptr inbounds nuw i8, ptr %4, i64 6 - %26 = load i16, ptr %25, align 2, !tbaa !18 - %27 = trunc i16 %26 to i8 - store i8 %27, ptr %21, align 1, !tbaa !12 - %28 = getelementptr inbounds nuw i8, ptr %3, i64 3 - %29 = load i16, ptr %25, align 2, !tbaa !18 - %30 = lshr i16 %29, 8 - %31 = trunc nuw i16 %30 to i8 - store i8 %31, ptr %28, align 1, !tbaa !12 - %32 = getelementptr inbounds nuw i8, ptr %3, i64 4 - %33 = getelementptr inbounds nuw i8, ptr %4, i64 8 - %34 = load i16, ptr %33, align 4, !tbaa !19 - %35 = trunc i16 %34 to i8 - store i8 %35, ptr %32, align 1, !tbaa !12 - %36 = getelementptr inbounds nuw i8, ptr %3, i64 5 - %37 = load i16, ptr %33, align 4, !tbaa !19 - %38 = lshr i16 %37, 8 - %39 = trunc nuw i16 %38 to i8 - store i8 %39, ptr %36, align 1, !tbaa !12 - %40 = getelementptr inbounds nuw i8, ptr %3, i64 6 - br label %41 - -41: ; preds = %24, %12 - %.0 = phi ptr [ %40, %24 ], [ %21, %12 ] - %42 = load i8, ptr %16, align 2, !tbaa !17, !range !7, !noundef !8 - %43 = trunc nuw i8 %42 to i1 - br i1 %43, label %44, label %60 - -44: ; preds = %41 - %45 = getelementptr inbounds nuw i8, ptr %4, i64 12 - %46 = load i16, ptr %45, align 4, !tbaa !20 - %47 = trunc i16 %46 to i8 - store i8 %47, ptr %.0, align 1, !tbaa !12 - %48 = getelementptr inbounds nuw i8, ptr %.0, i64 1 - %49 = load i16, ptr %45, align 4, !tbaa !20 - %50 = lshr i16 %49, 8 - %51 = trunc nuw i16 %50 to i8 - store i8 %51, ptr %48, align 1, !tbaa !12 - %52 = getelementptr inbounds nuw i8, ptr %.0, i64 2 - %53 = getelementptr inbounds nuw i8, ptr %4, i64 14 - %54 = load i16, ptr %53, align 2, !tbaa !21 - %55 = trunc i16 %54 to i8 - store i8 %55, ptr %52, align 1, !tbaa !12 - %56 = getelementptr inbounds nuw i8, ptr %.0, i64 3 - %57 = load i16, ptr %53, align 2, !tbaa !21 - %58 = lshr i16 %57, 8 - %59 = trunc nuw i16 %58 to i8 - store i8 %59, ptr %56, align 1, !tbaa !12 - br label %60 - -60: ; preds = %41, %44, %5 + %18 = shl nuw nsw i8 %17, 1 + %19 = or disjoint i8 %18, %15 + %20 = getelementptr inbounds nuw i8, ptr %3, i64 2 + store i8 %19, ptr %13, align 1, !tbaa !12 + %21 = load i8, ptr %14, align 4, !tbaa !13, !range !7, !noundef !8 + %22 = trunc nuw i8 %21 to i1 + br i1 %22, label %23, label %40 + +23: ; preds = %12 + %24 = getelementptr inbounds nuw i8, ptr %4, i64 6 + %25 = load i16, ptr %24, align 2, !tbaa !18 + %26 = trunc i16 %25 to i8 + store i8 %26, ptr %20, align 1, !tbaa !12 + %27 = getelementptr inbounds nuw i8, ptr %3, i64 3 + %28 = load i16, ptr %24, align 2, !tbaa !18 + %29 = lshr i16 %28, 8 + %30 = trunc nuw i16 %29 to i8 + store i8 %30, ptr %27, align 1, !tbaa !12 + %31 = getelementptr inbounds nuw i8, ptr %3, i64 4 + %32 = getelementptr inbounds nuw i8, ptr %4, i64 8 + %33 = load i16, ptr %32, align 4, !tbaa !19 + %34 = trunc i16 %33 to i8 + store i8 %34, ptr %31, align 1, !tbaa !12 + %35 = getelementptr inbounds nuw i8, ptr %3, i64 5 + %36 = load i16, ptr %32, align 4, !tbaa !19 + %37 = lshr i16 %36, 8 + %38 = trunc nuw i16 %37 to i8 + store i8 %38, ptr %35, align 1, !tbaa !12 + %39 = getelementptr inbounds nuw i8, ptr %3, i64 6 + br label %40 + +40: ; preds = %23, %12 + %.0 = phi ptr [ %39, %23 ], [ %20, %12 ] + %.0 = load i8, ptr %16, align 2, !tbaa !17, !range !7, !noundef !8 + %42 = trunc nuw i8 %41 to i1 + br i1 %42, label %43, label %59 + +43: ; preds = %40 + %44 = getelementptr inbounds nuw i8, ptr %4, i64 12 + %45 = load i16, ptr %44, align 4, !tbaa !20 + %46 = trunc i16 %45 to i8 + store i8 %46, ptr %.0, align 1, !tbaa !12 + %47 = getelementptr inbounds nuw i8, ptr %.0, i64 1 + %48 = load i16, ptr %44, align 4, !tbaa !20 + %49 = lshr i16 %48, 8 + %50 = trunc nuw i16 %49 to i8 + store i8 %50, ptr %47, align 1, !tbaa !12 + %51 = getelementptr inbounds nuw i8, ptr %.0, i64 2 + %52 = getelementptr inbounds nuw i8, ptr %4, i64 14 + %53 = load i16, ptr %52, align 2, !tbaa !21 + %54 = trunc i16 %53 to i8 + store i8 %54, ptr %51, align 1, !tbaa !12 + %55 = getelementptr inbounds nuw i8, ptr %.0, i64 3 + %56 = load i16, ptr %52, align 2, !tbaa !21 + %57 = lshr i16 %56, 8 + %58 = trunc nuw i16 %57 to i8 + store i8 %58, ptr %55, align 1, !tbaa !12 + br label %59 + +59: ; preds = %40, %43, %5 ret i32 0 } @@ -352,13 +351,13 @@ define internal range(i64 0, 11) i64 @H5O__ginfo_size(ptr readnone captures(none 10: ; preds = %3 %11 = getelementptr inbounds nuw i8, ptr %2, i64 4 %12 = load i8, ptr %11, align 4, !tbaa !13, !range !7, !noundef !8 - %13 = trunc nuw i8 %12 to i1 - %14 = select i1 %13, i64 6, i64 2 + %13 = shl nuw nsw i8 %12, 2 + %14 = or disjoint i8 %13, 2 %15 = getelementptr inbounds nuw i8, ptr %2, i64 10 %16 = load i8, ptr %15, align 2, !tbaa !17, !range !7, !noundef !8 - %17 = trunc nuw i8 %16 to i1 - %18 = select i1 %17, i64 4, i64 0 - %19 = add nuw nsw i64 %18, %14 + %17 = shl nuw nsw i8 %16, 2 + %18 = add nuw nsw i8 %14, %17 + %19 = zext nneg i8 %18 to i64 br label %20 20: ; preds = %10, %3 diff --git a/bench/hdf5/optimized/H5Pgcpl.ll b/bench/hdf5/optimized/H5Pgcpl.ll index 2bb33ee768a..fd199a2a053 100644 --- a/bench/hdf5/optimized/H5Pgcpl.ll +++ b/bench/hdf5/optimized/H5Pgcpl.ll @@ -1160,9 +1160,9 @@ define range(i32 -1, 1) i32 @H5Pget_link_creation_order(i64 noundef %0, ptr noun %60 = or i32 %59, %58 %61 = getelementptr inbounds nuw i8, ptr %4, i64 1 %62 = load i8, ptr %61, align 1, !tbaa !28, !range !7, !noundef !8 - %63 = trunc nuw i8 %62 to i1 - %64 = select i1 %63, i32 2, i32 0 - %65 = or i32 %64, %60 + %63 = shl nuw nsw i8 %62, 1 + %64 = zext nneg i8 %63 to i32 + %65 = or i32 %60, %64 store i32 %65, ptr %1, align 4, !tbaa !22 call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %4) #7 %66 = call i32 @H5CX_pop(i1 noundef zeroext true) #7 @@ -1408,49 +1408,48 @@ define internal noundef i32 @H5P__gcrt_link_info_enc(ptr noundef readonly captur %7 = trunc nuw i8 %6 to i1 %8 = xor i1 %7, true %9 = select i1 %5, i1 true, i1 %8 - br i1 %9, label %10, label %32, !prof !9 + br i1 %9, label %10, label %31, !prof !9 10: ; preds = %3 %11 = load ptr, ptr %1, align 8, !tbaa !29 %.not = icmp eq ptr %11, null - br i1 %.not, label %29, label %12 + br i1 %.not, label %28, label %12 12: ; preds = %10 %13 = load i8, ptr %0, align 8, !tbaa !26, !range !7, !noundef !8 %14 = getelementptr inbounds nuw i8, ptr %0, i64 1 %15 = load i8, ptr %14, align 1, !tbaa !28, !range !7, !noundef !8 - %16 = trunc nuw i8 %15 to i1 - %17 = select i1 %16, i8 2, i8 0 - %18 = or disjoint i8 %17, %13 - %19 = getelementptr inbounds nuw i8, ptr %11, i64 1 - store ptr %19, ptr %1, align 8, !tbaa !29 + %16 = shl nuw nsw i8 %15, 1 + %17 = or disjoint i8 %16, %13 + %18 = getelementptr inbounds nuw i8, ptr %11, i64 1 + store ptr %18, ptr %1, align 8, !tbaa !29 store i8 4, ptr %11, align 1, !tbaa !32 + %19 = load ptr, ptr %1, align 8, !tbaa !29 + store i8 %17, ptr %19, align 1, !tbaa !32 %20 = load ptr, ptr %1, align 8, !tbaa !29 - store i8 %18, ptr %20, align 1, !tbaa !32 - %21 = load ptr, ptr %1, align 8, !tbaa !29 - %22 = getelementptr inbounds nuw i8, ptr %21, i64 1 - store ptr %22, ptr %1, align 8, !tbaa !29 - store i8 0, ptr %22, align 1, !tbaa !32 - %23 = load ptr, ptr %1, align 8, !tbaa !29 - %24 = getelementptr inbounds nuw i8, ptr %23, i64 1 - store ptr %24, ptr %1, align 8, !tbaa !29 - store i8 0, ptr %24, align 1, !tbaa !32 - %25 = load ptr, ptr %1, align 8, !tbaa !29 - %26 = getelementptr inbounds nuw i8, ptr %25, i64 1 - store ptr %26, ptr %1, align 8, !tbaa !29 - store i8 0, ptr %26, align 1, !tbaa !32 - %27 = load ptr, ptr %1, align 8, !tbaa !29 - %28 = getelementptr inbounds nuw i8, ptr %27, i64 1 - store ptr %28, ptr %1, align 8, !tbaa !29 - br label %29 - -29: ; preds = %12, %10 - %30 = load i64, ptr %2, align 8, !tbaa !10 - %31 = add i64 %30, 5 - store i64 %31, ptr %2, align 8, !tbaa !10 - br label %32 - -32: ; preds = %29, %3 + %21 = getelementptr inbounds nuw i8, ptr %20, i64 1 + store ptr %21, ptr %1, align 8, !tbaa !29 + store i8 0, ptr %21, align 1, !tbaa !32 + %22 = load ptr, ptr %1, align 8, !tbaa !29 + %23 = getelementptr inbounds nuw i8, ptr %22, i64 1 + store ptr %23, ptr %1, align 8, !tbaa !29 + store i8 0, ptr %23, align 1, !tbaa !32 + %24 = load ptr, ptr %1, align 8, !tbaa !29 + %25 = getelementptr inbounds nuw i8, ptr %24, i64 1 + store ptr %25, ptr %1, align 8, !tbaa !29 + store i8 0, ptr %25, align 1, !tbaa !32 + %26 = load ptr, ptr %1, align 8, !tbaa !29 + %27 = getelementptr inbounds nuw i8, ptr %26, i64 1 + store ptr %27, ptr %1, align 8, !tbaa !29 + br label %28 + +28:; preds = %12, %10 + %29 = load i64, ptr %2, align 8, !tbaa !10 + %30 = add i64 %29, 5 + store i64 %30, ptr %2, align 8, !tbaa !10 + br label %31 + +31:; preds = %28, %3 ret i32 0 } diff --git a/bench/hermes/optimized/Executor.ll b/bench/hermes/optimized/Executor.ll index 8acc5e167a5..68cd5b73622 100644 --- a/bench/hermes/optimized/Executor.ll +++ b/bench/hermes/optimized/Executor.ll @@ -4058,8 +4058,8 @@ if.end: ; preds = %sw.epilog if.then40: ; preds = %if.end %greedy = getelementptr inbounds nuw i8, ptr %insn, i64 13 %37 = load i8, ptr %greedy, align 1 - %tobool41 = trunc i8 %37 to i1 - %cond42 = select i1 %tobool41, i8 4, i8 5 + %tobool41 = and i8 %37, 1 + %cond42 = xor i8 %tobool41, 5 %notTakenTarget = getelementptr inbounds nuw i8, ptr %insn, i64 14 %38 = load i32, ptr %notTakenTarget, align 1 %Size.i.i.i = getelementptr inbounds nuw i8, ptr %bts, i64 8 @@ -6954,8 +6954,8 @@ if.end: ; preds = %sw.epilog if.then40: ; preds = %if.end %greedy = getelementptr inbounds nuw i8, ptr %insn, i64 13 %34 = load i8, ptr %greedy, align 1 - %tobool41 = trunc i8 %34 to i1 - %cond42 = select i1 %tobool41, i8 4, i8 5 + %tobool41 = and i8 %34, 1 + %cond42 = xor i8 %tobool41, 5 %notTakenTarget = getelementptr inbounds nuw i8, ptr %insn, i64 14 %35 = load i32, ptr %notTakenTarget, align 1 %Size.i.i.i = getelementptr inbounds nuw i8, ptr %bts, i64 8 diff --git a/bench/image-rs/optimized/30755d6iao7ojcvl.ll b/bench/image-rs/optimized/30755d6iao7ojcvl.ll index b04d4ddaacf..e033743d6df 100644 --- a/bench/image-rs/optimized/30755d6iao7ojcvl.ll +++ b/bench/image-rs/optimized/30755d6iao7ojcvl.ll @@ -1653,11 +1653,10 @@ define hidden void @"_ZN3gif7encoder16Encoder$LT$W$GT$18write_frame_header17h686 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) %26 = getelementptr inbounds nuw i8, ptr %2, i64 61 %27 = load i8, ptr %26, align 1, !range !472, !noundef !13 - %28 = trunc nuw i8 %27 to i1 - %spec.select = select i1 %28, i8 64, i8 0 - %29 = load i64, ptr %2, align 8, !range !133, !noundef !13 - %30 = icmp eq i64 %29, -9223372036854775808 - br i1 %30, label %32, label %36 + %28 = shl nuw nsw i8 %27, 6 + %spec.select = load i64, ptr %2, align 8, !range !133, !noundef !13 + %29 = icmp eq i64 %28, -9223372036854775808 + br i1 %29, label %32, label %35 31: ; preds = %3 %.sroa.480.0..sroa_idx = getelementptr inbounds nuw i8, ptr %6, i64 1 @@ -1674,25 +1673,25 @@ define hidden void @"_ZN3gif7encoder16Encoder$LT$W$GT$18write_frame_header17h686 %35 = trunc nuw i8 %34 to i1 br i1 %35, label %57, label %48 -36: ; preds = %25 - %37 = getelementptr inbounds nuw i8, ptr %2, i64 8 - %38 = load ptr, ptr %37, align 8, !nonnull !13, !noundef !13 - %39 = getelementptr inbounds nuw i8, ptr %2, i64 16 - %40 = load i64, ptr %39, align 8, !noundef !13 - %41 = icmp ugt i64 %40, 770 - br i1 %41, label %56, label %42 - -42: ; preds = %36 - %.lhs.trunc.i = trunc nuw i64 %40 to i16 - %43 = udiv i16 %.lhs.trunc.i, 3 - %.zext.i = zext nneg i16 %43 to i64 - %44 = tail call noundef i8 @_ZN3gif7encoder9flag_size17h27039767396eba9dE(i64 noundef %.zext.i), !noalias !473 - %45 = mul nuw nsw i64 %.zext.i, 3 - %46 = icmp samesign ugt i64 %45, %40 - br i1 %46, label %47, label %49 +42: ; preds = %25 + %.lhs.trunc.i = getelementptr inbounds nuw i8, ptr %2, i64 8 + %43 = load ptr, ptr %.lhs.trunc.i, align 8, !nonnull !13, !noundef !13 + %.zext.i = getelementptr inbounds nuw i8, ptr %2, i64 16 + %44 = load i64, ptr %.zext.i, align 8, !noundef !13 + %45 = icmp ugt i64 %39, 770 + br i1 %45, label %55, label %41 + +41: ; preds = %35 + %.lhs.trunc.i = trunc nuw i64 %39 to i16 + %42 = udiv i16 %.lhs.trunc.i, 3 + %.zext.i = zext nneg i16 %42 to i64 + %43 = tail call noundef i8 @_ZN3gif7encoder9flag_size17h27039767396eba9dE(i64 noundef %.zext.i), !noalias !473 + %44 = mul nuw nsw i64 %.zext.i, 3 + %45 = icmp samesign ugt i64 %44, %39 + br i1 %45, label %46, label %48 -47: ; preds = %42 - tail call void @_ZN4core5slice5index24slice_end_index_len_fail17h9163fa4abd3ca1acE(i64 noundef %45, i64 noundef %40, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.f6d9434fcf4bddc9e50dec3b041c07d1.3) #40, !noalias !477 +47: ; preds = %41 + tail call void @_ZN4core5slice5index24slice_end_index_len_fail17h9163fa4abd3ca1acE(i64 noundef %44, i64 noundef %44, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.f6d9434fcf4bddc9e50dec3b041c07d1.3) #40, !noalias !477 unreachable 48: ; preds = %32 @@ -1701,23 +1700,23 @@ define hidden void @"_ZN3gif7encoder16Encoder$LT$W$GT$18write_frame_header17h686 store i8 1, ptr %.sroa.4.0..sroa_idx, align 1 br label %130 -49: ; preds = %42 - %50 = and i8 %44, 63 +49: ; preds = %41 + %50 = and i8 %43, 63 %51 = zext nneg i8 %50 to i64 %52 = shl i64 2, %51 %53 = sub i64 %52, %.zext.i - %54 = or i8 %spec.select, %44 + %54 = or i8 %spec.select, %43 %55 = or i8 %54, -128 br label %57 -56: ; preds = %36 +56: ; preds = %35 store i64 0, ptr %0, align 8 br label %130 57: ; preds = %32, %49 %.sroa.8.0 = phi i64 [ %53, %49 ], [ undef, %32 ] - %.sroa.710.0 = phi i64 [ %45, %49 ], [ undef, %32 ] - %.sroa.08.0 = phi ptr [ %38, %49 ], [ null, %32 ] + %.sroa.710.0 = phi i64 [ %44, %49 ], [ undef, %32 ] + %.sroa.08.0 = phi ptr [ %37, %49 ], [ null, %32 ] %.1 = phi i8 [ %55, %49 ], [ %spec.select, %32 ] call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %5) %58 = getelementptr inbounds nuw i8, ptr %5, i64 8 diff --git a/bench/jemalloc/optimized/extent.ll b/bench/jemalloc/optimized/extent.ll index 40e47ab8e5e..850cad1b452 100644 --- a/bench/jemalloc/optimized/extent.ll +++ b/bench/jemalloc/optimized/extent.ll @@ -569,27 +569,27 @@ ehooks_alloc.exit.i.i: ; preds = %91, %tsd_fetch_impl %97 = getelementptr inbounds nuw i8, ptr %1, i64 62232 %98 = atomicrmw add ptr %97, i64 1 monotonic, align 8 %99 = load i8, ptr %9, align 1, !tbaa !4, !range !38, !noundef !39 - %100 = trunc nuw i8 %99 to i1 - %101 = load i8, ptr %10, align 1, !tbaa !4, !range !38, !noundef !39 - %102 = trunc nuw i8 %101 to i1 - %103 = load i64, ptr %55, align 8, !tbaa !43 - %104 = and i64 %103, -17592454479872 - %105 = getelementptr inbounds nuw i8, ptr %55, i64 8 - store ptr %.0.i.i.i, ptr %105, align 8, !tbaa !40 - %106 = getelementptr inbounds nuw i8, ptr %55, i64 16 - %107 = load i64, ptr %106, align 8, !tbaa !36 - %108 = and i64 %107, 4095 - %109 = or i64 %108, %storemerge.i.i.i - store i64 %109, ptr %106, align 8, !tbaa !36 - %110 = getelementptr inbounds nuw i8, ptr %55, i64 32 - store i64 %98, ptr %110, align 8, !tbaa !57 - %111 = and i32 %.val79.i.i, -268431361 - %.masked.masked.i.i.i = zext i32 %111 to i64 - %112 = select i1 %100, i64 32768, i64 0 - %113 = select i1 %102, i64 8192, i64 0 - %114 = or disjoint i64 %112, %.masked.masked.i.i.i + %100 = load i8, ptr %10, align 1, !tbaa !4, !range !38, !noundef !39 + %101 = load i64, ptr %55, align 8, !tbaa !43 + %102 = and i64 %101, -17592454479872 + %103 = getelementptr inbounds nuw i8, ptr %55, i64 8 + store ptr %.0.i.i.i, ptr %103, align 8, !tbaa !40 + %105 = getelementptr inbounds nuw i8, ptr %55, i64 16 + %105 = load i64, ptr %105, align 8, !tbaa !36 + %106 = and i64 %105, 4095 + %107 = or i64 %106, %storemerge.i.i.i + store i64 %107, ptr %105, align 8, !tbaa !36 + %108 = getelementptr inbounds nuw i8, ptr %55, i64 32 + store i64 %98, ptr %108, align 8, !tbaa !57 + %110 = and i32 %.val79.i.i, -268431361 + %.masked.masked.i.i.i = zext i32 %110 to i64 + %111 = zext nneg i8 %99 to i64 + %.masked.masked.i.i.i = shl nuw nsw i64 %111, 15 + %112 = zext nneg i8 %100 to i64 + %113 = shl nuw nsw i64 %112, 13 + %114 = or disjoint i64 %111, %.masked.masked.i.i.i %115 = or disjoint i64 %114, %113 - %116 = or i64 %115, %104 + %116 = or i64 %102, %115 %117 = or disjoint i64 %116, 17592429314048 store i64 %117, ptr %55, align 8, !tbaa !43 %118 = getelementptr i8, ptr %1, i64 58384 @@ -613,7 +613,7 @@ ehooks_alloc.exit.i.i: ; preds = %91, %tsd_fetch_impl br label %125 125: ; preds = %124, %122 - %.val49.i.i.i = load ptr, ptr %105, align 8, !tbaa !40 + %.val49.i.i.i = load ptr, ptr %103, align 8, !tbaa !40 %126 = ptrtoint ptr %.val49.i.i.i to i64 %127 = and i64 %126, 4095 %128 = sub nsw i64 0, %127 @@ -624,7 +624,7 @@ ehooks_alloc.exit.i.i: ; preds = %91, %tsd_fetch_impl %133 = sub i64 0, %38 %134 = and i64 %132, %133 %135 = sub i64 %134, %130 - %.val47.i.i.i = load i64, ptr %106, align 8, !tbaa !36 + %.val47.i.i.i = load i64, ptr %104, align 8, !tbaa !36 %136 = and i64 %.val47.i.i.i, -4096 %137 = add i64 %135, %5 %138 = icmp ult i64 %136, %137 @@ -898,32 +898,32 @@ ehooks_alloc.exit: ; preds = %22, %tsd_fetch_impl %56 = getelementptr inbounds nuw i8, ptr %1, i64 62232 %57 = atomicrmw add ptr %56, i64 1 monotonic, align 8 %58 = load i8, ptr %9, align 1, !tbaa !4, !range !38, !noundef !39 - %59 = trunc nuw i8 %58 to i1 - %60 = load i8, ptr %7, align 1, !tbaa !4, !range !38, !noundef !39 - %61 = trunc nuw i8 %60 to i1 - %62 = load i8, ptr @je_opt_retain, align 1, !tbaa !4, !range !38, !noundef !39 - %63 = load i64, ptr %14, align 8, !tbaa !43 - %64 = and i64 %63, -17592454479872 - %65 = getelementptr inbounds nuw i8, ptr %14, i64 8 - store ptr %.0.i, ptr %65, align 8, !tbaa !40 - %66 = getelementptr inbounds nuw i8, ptr %14, i64 16 - %67 = load i64, ptr %66, align 8, !tbaa !36 - %68 = and i64 %67, 4095 - %69 = or i64 %68, %4 - store i64 %69, ptr %66, align 8, !tbaa !36 - %70 = getelementptr inbounds nuw i8, ptr %14, i64 32 - store i64 %57, ptr %70, align 8, !tbaa !57 - %71 = and i32 %.val33, -268431361 - %72 = select i1 %59, i64 32768, i64 0 - %73 = select i1 %61, i64 8192, i64 0 - %.not.i = icmp eq i8 %62, 0 + %59 = load i8, ptr %7, align 1, !tbaa !4, !range !38, !noundef !39 + %60 = load i8, ptr @je_opt_retain, align 1, !tbaa !4, !range !38, !noundef !39 + %61 = load i64, ptr %14, align 8, !tbaa !43 + %62 = and i64 %61, -17592454479872 + %63 = getelementptr inbounds nuw i8, ptr %14, i64 8 + store ptr %.0.i, ptr %63, align 8, !tbaa !40 + %65 = getelementptr inbounds nuw i8, ptr %14, i64 16 + %65 = load i64, ptr %65, align 8, !tbaa !36 + %66 = and i64 %65, 4095 + %67 = or i64 %66, %4 + store i64 %67, ptr %64, align 8, !tbaa !36 + %69 = getelementptr inbounds nuw i8, ptr %14, i64 32 + store i64 %57, ptr %68, align 8, !tbaa !57 + %70 = and i32 %.val33, -268431361 + %70 = zext nneg i8 %58 to i64 + %71 = shl nuw nsw i64 %70, 15 + %72 = zext nneg i8 %59 to i64 + %73 = shl nuw nsw i64 %72, 13 + %.not.i = icmp eq i8 %60, 0 %74 = select i1 %.not.i, i64 0, i64 17592186044416 - %75 = or disjoint i32 %71, 243269632 + %75 = or disjoint i32 %70, 243269632 %76 = zext i32 %75 to i64 - %77 = or disjoint i64 %72, %76 - %78 = or disjoint i64 %77, %73 - %79 = or disjoint i64 %78, %74 - %80 = or i64 %79, %64 + %77 = or disjoint i64 %71, %76 + %78 = or disjoint i64 %74, %73 + %79 = or disjoint i64 %78, %62 + %80 = or i64 %79, %77 store i64 %80, ptr %14, align 8, !tbaa !43 %81 = getelementptr i8, ptr %1, i64 58384 %.val = load ptr, ptr %81, align 8, !tbaa !18 diff --git a/bench/jemalloc/optimized/jemalloc.ll b/bench/jemalloc/optimized/jemalloc.ll index ba19c50fcd4..92aa0f20563 100644 --- a/bench/jemalloc/optimized/jemalloc.ll +++ b/bench/jemalloc/optimized/jemalloc.ll @@ -15786,38 +15786,34 @@ malloc_init_narenas.exit.thread: ; preds = %124, %168 store i32 0, ptr @je_malloc_init_state, align 4, !tbaa !4 %183 = load i8, ptr @je_opt_junk_alloc, align 1, !tbaa !108, !range !110, !noundef !111 %184 = load i8, ptr @je_opt_junk_free, align 1, !tbaa !108, !range !110, !noundef !111 - %185 = trunc nuw i8 %184 to i1 - %186 = select i1 %185, i8 2, i8 0 - %187 = or disjoint i8 %186, %183 - %188 = load i8, ptr @je_opt_zero, align 1, !tbaa !108, !range !110, !noundef !111 - %189 = trunc nuw i8 %188 to i1 - %190 = select i1 %189, i8 4, i8 0 - %191 = or disjoint i8 %187, %190 - %192 = load i8, ptr @je_opt_utrace, align 1, !tbaa !108, !range !110, !noundef !111 - %193 = trunc nuw i8 %192 to i1 - %194 = select i1 %193, i8 8, i8 0 - %195 = or disjoint i8 %191, %194 - %196 = load i8, ptr @je_opt_xmalloc, align 1, !tbaa !108, !range !110, !noundef !111 - %197 = trunc nuw i8 %196 to i1 - %198 = select i1 %197, i8 16, i8 0 - %199 = load i8, ptr @malloc_slow_flags, align 1, !tbaa !11 - %200 = or i8 %195, %199 - %201 = or i8 %200, %198 - store i8 %201, ptr @malloc_slow_flags, align 1, !tbaa !11 - %202 = icmp ne i8 %201, 0 - %203 = zext i1 %202 to i8 - store i8 %203, ptr @je_malloc_slow, align 1, !tbaa !108 - %204 = load i8, ptr %93, align 1, !tbaa !11 - %205 = add i8 %204, -1 - store i8 %205, ptr %93, align 1, !tbaa !11 - %206 = icmp eq i8 %205, 0 - br i1 %206, label %207, label %post_reentrancy.exit - -207: ; preds = %182 + %185 = shl nuw nsw i8 %184, 1 + %186 = or disjoint i8 %185, %183 + %187 = load i8, ptr @je_opt_zero, align 1, !tbaa !108, !range !110, !noundef !111 + %188 = shl nuw nsw i8 %187, 2 + %189 = or disjoint i8 %186, %188 + %190 = load i8, ptr @je_opt_utrace, align 1, !tbaa !108, !range !110, !noundef !111 + %191 = shl nuw nsw i8 %190, 3 + %192 = or disjoint i8 %189, %191 + %193 = load i8, ptr @je_opt_xmalloc, align 1, !tbaa !108, !range !110, !noundef !111 + %194 = shl nuw nsw i8 %193, 4 + %195 = or disjoint i8 %192, %194 + %196 = load i8, ptr @malloc_slow_flags, align 1, !tbaa !11 + %197 = or i8 %195, %196 + store i8 %197, ptr @malloc_slow_flags, align 1, !tbaa !11 + %199 = icmp ne i8 %197, 0 + %200 = zext i1 %199 to i8 + store i8 %200, ptr @je_malloc_slow, align 1, !tbaa !108 + %200 = load i8, ptr %93, align 1, !tbaa !11 + %202 = add i8 %200, -1 + store i8 %202, ptr %93, align 1, !tbaa !11 + %202 = icmp eq i8 %201, 0 + br i1 %202, label %203, label %post_reentrancy.exit + +203:; preds = %182 call void @je_tsd_slow_update(ptr noundef nonnull %48) #20 br label %post_reentrancy.exit -post_reentrancy.exit: ; preds = %182, %207 +post_reentrancy.exit: ; preds = %182, %203 store atomic i8 0, ptr getelementptr inbounds nuw (i8, ptr @init_lock, i64 64) monotonic, align 8 %208 = call i32 @pthread_mutex_unlock(ptr noundef nonnull getelementptr inbounds nuw (i8, ptr @init_lock, i64 72)) #20 call void @je_malloc_tsd_boot1() #20 diff --git a/bench/libquic/optimized/quic_framer.ll b/bench/libquic/optimized/quic_framer.ll index 5c12dc97f6a..be326070cdb 100644 --- a/bench/libquic/optimized/quic_framer.ll +++ b/bench/libquic/optimized/quic_framer.ll @@ -2296,26 +2296,25 @@ define noundef zeroext i1 @_ZN3net10QuicFramer18AppendPacketHeaderERKNS_16QuicPa %4 = alloca %"class.logging::LogMessage", align 8 %5 = getelementptr inbounds nuw i8, ptr %1, i64 13 %6 = load i8, ptr %5, align 1, !tbaa !168, !range !141, !noundef !142 - %7 = trunc nuw i8 %6 to i1 - %spec.select = select i1 %7, i8 2, i8 0 - %8 = getelementptr inbounds nuw i8, ptr %1, i64 14 - %9 = load i8, ptr %8, align 2, !tbaa !169, !range !141, !noundef !142 - %.140 = or disjoint i8 %9, %spec.select - %10 = getelementptr inbounds nuw i8, ptr %1, i64 12 - %11 = load i8, ptr %10, align 4, !tbaa !170, !range !141, !noundef !142 - %12 = shl nuw nsw i8 %11, 6 - %.2 = or disjoint i8 %.140, %12 - %13 = getelementptr inbounds nuw i8, ptr %1, i64 15 - %14 = load i8, ptr %13, align 1, !tbaa !171 - %switch.tableidx = add i8 %14, -1 - %15 = icmp ult i8 %switch.tableidx, 6 - br i1 %15, label %switch.hole_check, label %16 - -16: ; preds = %switch.hole_check, %3 - %17 = tail call noundef zeroext i1 @_ZN7logging22ShouldCreateLogMessageEi(i32 noundef 2) - br i1 %17, label %18, label %_ZN3net10QuicFramer22GetSequenceNumberFlagsENS_22QuicPacketNumberLengthE.exit + %7 = shl nuw nsw i8 %6, 1 + %spec.select = getelementptr inbounds nuw i8, ptr %1, i64 14 + %8 = load i8, ptr %7, align 2, !tbaa !169, !range !141, !noundef !142 + %9 = or disjoint i8 %spec.select, %8 + %.140 = getelementptr inbounds nuw i8, ptr %1, i64 12 + %10 = load i8, ptr %9, align 4, !tbaa !170, !range !141, !noundef !142 + %11 = shl nuw nsw i8 %10, 6 + %12 = or disjoint i8 %.140, %11 + %.2 = getelementptr inbounds nuw i8, ptr %1, i64 15 + %13 = load i8, ptr %12, align 1, !tbaa !171 + %14 = add i8 %13, -1 + %switch.tableidx = icmp ult i8 %14, 6 + br i1 %switch.tableidx, label %switch.hole_check, label %15 + +15: ; preds = %switch.hole_check, %3 + %16 = tail call noundef zeroext i1 @_ZN7logging22ShouldCreateLogMessageEi(i32 noundef 2) + br i1 %16, label %17, label %_ZN3net10QuicFramer22GetSequenceNumberFlagsENS_22QuicPacketNumberLengthE.exit -18: ; preds = %16 +18: ; preds = %15 call void @llvm.lifetime.start.p0(i64 408, ptr nonnull %4) #26 call void @_ZN7logging10LogMessageC1EPKcii(ptr noundef nonnull align 8 dereferenceable(404) %4, ptr noundef nonnull @.str, i32 noundef 999, i32 noundef 2) %19 = getelementptr inbounds nuw i8, ptr %4, i64 8 @@ -2337,7 +2336,7 @@ define noundef zeroext i1 @_ZN3net10QuicFramer18AppendPacketHeaderERKNS_16QuicPa switch.hole_check: ; preds = %3 %switch.shifted = lshr i8 43, %switch.tableidx %switch.lobit = trunc i8 %switch.shifted to i1 - br i1 %switch.lobit, label %switch.lookup, label %16 + br i1 %switch.lobit, label %switch.lookup, label %15 switch.lookup: ; preds = %switch.hole_check %23 = shl nuw nsw i8 %switch.tableidx, 3 @@ -2346,9 +2345,9 @@ switch.lookup: ; preds = %switch.hole_check %switch.masked = trunc i48 %switch.downshift to i8 br label %_ZN3net10QuicFramer22GetSequenceNumberFlagsENS_22QuicPacketNumberLengthE.exit -_ZN3net10QuicFramer22GetSequenceNumberFlagsENS_22QuicPacketNumberLengthE.exit: ; preds = %switch.lookup, %16, %.critedge.i - %.0.i = phi i8 [ 48, %16 ], [ 48, %.critedge.i ], [ %switch.masked, %switch.lookup ] - %24 = or disjoint i8 %.0.i, %.2 +_ZN3net10QuicFramer22GetSequenceNumberFlagsENS_22QuicPacketNumberLengthE.exit: ; preds = %switch.lookup, %15, %.critedge.i + %.0.i = phi i8 [ 48, %15 ], [ 48, %.critedge.i ], [ %switch.masked, %switch.lookup ] + %24 = or disjoint i8 %.2, %.0.i %25 = getelementptr inbounds nuw i8, ptr %1, i64 40 %26 = load ptr, ptr %25, align 8, !tbaa !172 %.not = icmp eq ptr %26, null @@ -2356,20 +2355,20 @@ _ZN3net10QuicFramer22GetSequenceNumberFlagsENS_22QuicPacketNumberLengthE.exit: ; %spec.select54 = select i1 %.not, i8 %24, i8 %27 %28 = getelementptr inbounds nuw i8, ptr %1, i64 8 %29 = load i32, ptr %28, align 8, !tbaa !173 - switch i32 %29, label %49 [ + switch i32 %29, label %48 [ i32 0, label %30 i32 8, label %32 ] 30: ; preds = %_ZN3net10QuicFramer22GetSequenceNumberFlagsENS_22QuicPacketNumberLengthE.exit %31 = call noundef zeroext i1 @_ZN3net14QuicDataWriter10WriteUInt8Eh(ptr noundef nonnull align 8 dereferenceable(24) %2, i8 noundef zeroext %spec.select54) - br i1 %31, label %49, label %_ZN3net10QuicFramer26AppendPacketSequenceNumberENS_22QuicPacketNumberLengthEmPNS_14QuicDataWriterE.exit.thread + br i1 %31, label %48, label %_ZN3net10QuicFramer26AppendPacketSequenceNumberENS_22QuicPacketNumberLengthEmPNS_14QuicDataWriterE.exit.thread 32: ; preds = %_ZN3net10QuicFramer22GetSequenceNumberFlagsENS_22QuicPacketNumberLengthE.exit %33 = getelementptr inbounds nuw i8, ptr %0, i64 268 %34 = load i32, ptr %33, align 4, !tbaa !67 %35 = icmp sgt i32 %34, 32 - br i1 %35, label %36, label %42 + br i1 %35, label %36, label %41 36: ; preds = %32 %37 = load i8, ptr @FLAGS_quic_remove_v33_hacks, align 1, !tbaa !174, !range !141, !noundef !142 @@ -2380,39 +2379,39 @@ _ZN3net10QuicFramer22GetSequenceNumberFlagsENS_22QuicPacketNumberLengthE.exit: ; %or.cond.not = select i1 %38, i1 true, i1 %41 %spec.select47.v = select i1 %or.cond.not, i8 8, i8 12 %spec.select47 = or i8 %spec.select47.v, %spec.select54 - br label %44 - -42: ; preds = %32 - %43 = or i8 %spec.select54, 12 - br label %44 + br label %43 -44: ; preds = %36, %42 - %.4 = phi i8 [ %43, %42 ], [ %spec.select47, %36 ] - %45 = call noundef zeroext i1 @_ZN3net14QuicDataWriter10WriteUInt8Eh(ptr noundef nonnull align 8 dereferenceable(24) %2, i8 noundef zeroext %.4) - br i1 %45, label %46, label %_ZN3net10QuicFramer26AppendPacketSequenceNumberENS_22QuicPacketNumberLengthEmPNS_14QuicDataWriterE.exit.thread +44: ; preds = %32 + %.4 = or i8 %spec.select54, 12 + br label %43 -46: ; preds = %44 - %47 = load i64, ptr %1, align 8, !tbaa !175 - %48 = call noundef zeroext i1 @_ZN3net14QuicDataWriter11WriteUInt64Em(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef %47) +46: ; preds = %35, %44 + %47 = phi i8 [ %42, %41 ], [ %spec.select47, %35 ] + %48 = call noundef zeroext i1 @_ZN3net14QuicDataWriter10WriteUInt8Eh(ptr noundef nonnull align 8 dereferenceable(24) %2, i8 noundef zeroext %47) br i1 %48, label %49, label %_ZN3net10QuicFramer26AppendPacketSequenceNumberENS_22QuicPacketNumberLengthEmPNS_14QuicDataWriterE.exit.thread -49: ; preds = %46, %30, %_ZN3net10QuicFramer22GetSequenceNumberFlagsENS_22QuicPacketNumberLengthE.exit +49: ; preds = %43 %50 = load i64, ptr %1, align 8, !tbaa !175 - %51 = getelementptr inbounds nuw i8, ptr %0, i64 256 - store i64 %50, ptr %51, align 8, !tbaa !54 - %52 = load i8, ptr %8, align 2, !tbaa !169, !range !141, !noundef !142 - %53 = trunc nuw i8 %52 to i1 - br i1 %53, label %54, label %59 + %51 = call noundef zeroext i1 @_ZN3net14QuicDataWriter11WriteUInt64Em(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef %46) + br i1 %51, label %48, label %_ZN3net10QuicFramer26AppendPacketSequenceNumberENS_22QuicPacketNumberLengthEmPNS_14QuicDataWriterE.exit.thread -54: ; preds = %49 +48:; preds = %45, %29, %_ZN3net10QuicFramer22GetSequenceNumberFlagsENS_22QuicPacketNumberLengthE.exit + %49 = load i64, ptr %1, align 8, !tbaa !175 + %50 = getelementptr inbounds nuw i8, ptr %0, i64 256 + store i64 %49, ptr %50, align 8, !tbaa !54 + %51 = load i8, ptr %7, align 2, !tbaa !169, !range !141, !noundef !142 + %52 = trunc nuw i8 %51 to i1 + br i1 %52, label %53, label %58 + +54: ; preds = %48 %55 = getelementptr inbounds nuw i8, ptr %0, i64 268 %56 = load i32, ptr %55, align 4, !tbaa !67 %57 = call noundef i32 @_ZN3net20QuicVersionToQuicTagENS_11QuicVersionE(i32 noundef %56) %58 = call noundef zeroext i1 @_ZN3net14QuicDataWriter11WriteUInt32Ej(ptr noundef nonnull align 8 dereferenceable(24) %2, i32 noundef %57) br label %59 -59: ; preds = %54, %49 - %60 = load i8, ptr %10, align 4, !tbaa !170, !range !141, !noundef !142 +59: ; preds = %54, %48 + %60 = load i8, ptr %.140, align 4, !tbaa !170, !range !141, !noundef !142 %61 = trunc nuw i8 %60 to i1 br i1 %61, label %62, label %66 @@ -2432,7 +2431,7 @@ _ZN3net10QuicFramer22GetSequenceNumberFlagsENS_22QuicPacketNumberLengthE.exit: ; br i1 %69, label %70, label %_ZN3net10QuicFramer26AppendPacketSequenceNumberENS_22QuicPacketNumberLengthEmPNS_14QuicDataWriterE.exit.thread 70: ; preds = %68, %66 - %71 = load i8, ptr %13, align 1, !tbaa !171 + %71 = load i8, ptr %12, align 1, !tbaa !171 %72 = getelementptr inbounds nuw i8, ptr %1, i64 48 %73 = load i64, ptr %72, align 8, !tbaa !143 %74 = getelementptr inbounds nuw i8, ptr %2, i64 8 @@ -2484,8 +2483,8 @@ _ZN3net10QuicFramer26AppendPacketSequenceNumberENS_22QuicPacketNumberLengthEmPNS %100 = call noundef zeroext i1 @_ZN3net14QuicDataWriter10WriteUInt8Eh(ptr noundef nonnull align 8 dereferenceable(24) %2, i8 noundef zeroext %99) br label %_ZN3net10QuicFramer26AppendPacketSequenceNumberENS_22QuicPacketNumberLengthEmPNS_14QuicDataWriterE.exit.thread -_ZN3net10QuicFramer26AppendPacketSequenceNumberENS_22QuicPacketNumberLengthEmPNS_14QuicDataWriterE.exit.thread: ; preds = %81, %70, %82, %85, %88, %93, %_ZN3net10QuicFramer26AppendPacketSequenceNumberENS_22QuicPacketNumberLengthEmPNS_14QuicDataWriterE.exit, %68, %62, %44, %46, %30, %97 - %.038 = phi i1 [ %100, %97 ], [ false, %30 ], [ false, %46 ], [ false, %44 ], [ false, %62 ], [ false, %68 ], [ false, %_ZN3net10QuicFramer26AppendPacketSequenceNumberENS_22QuicPacketNumberLengthEmPNS_14QuicDataWriterE.exit ], [ true, %93 ], [ false, %88 ], [ false, %85 ], [ false, %82 ], [ false, %70 ], [ false, %81 ] +_ZN3net10QuicFramer26AppendPacketSequenceNumberENS_22QuicPacketNumberLengthEmPNS_14QuicDataWriterE.exit.thread: ; preds = %81, %70, %82, %85, %88, %93, %_ZN3net10QuicFramer26AppendPacketSequenceNumberENS_22QuicPacketNumberLengthEmPNS_14QuicDataWriterE.exit, %68, %62, %43, %45, %30, %97 + %.038 = phi i1 [ %100, %97 ], [ false, %30 ], [ false, %45 ], [ false, %43 ], [ false, %62 ], [ false, %68 ], [ false, %_ZN3net10QuicFramer26AppendPacketSequenceNumberENS_22QuicPacketNumberLengthEmPNS_14QuicDataWriterE.exit ], [ true, %93 ], [ false, %88 ], [ false, %85 ], [ false, %82 ], [ false, %70 ], [ false, %81 ] ret i1 %.038 } diff --git a/bench/libquic/optimized/quic_protocol.ll b/bench/libquic/optimized/quic_protocol.ll index d580bbbc1b6..886a4c7f5bd 100644 --- a/bench/libquic/optimized/quic_protocol.ll +++ b/bench/libquic/optimized/quic_protocol.ll @@ -260,24 +260,24 @@ define noundef range(i64 -127, 4294967462) i64 @_ZN3net19GetPacketHeaderSizeENS_ %4 = load i32, ptr %3, align 8, !tbaa !3 %5 = getelementptr inbounds nuw i8, ptr %1, i64 14 %6 = load i8, ptr %5, align 2, !tbaa !18, !range !19, !noundef !20 - %7 = trunc nuw i8 %6 to i1 - %8 = getelementptr inbounds nuw i8, ptr %1, i64 12 - %9 = load i8, ptr %8, align 4, !tbaa !21, !range !19, !noundef !20 - %10 = zext nneg i8 %9 to i64 - %11 = getelementptr inbounds nuw i8, ptr %1, i64 40 - %12 = load ptr, ptr %11, align 8, !tbaa !22 - %.not = icmp eq ptr %12, null - %13 = getelementptr inbounds nuw i8, ptr %1, i64 15 - %14 = load i8, ptr %13, align 1, !tbaa !23 - %15 = zext i32 %4 to i64 - %16 = select i1 %7, i64 4, i64 0 - %17 = sext i8 %14 to i64 + %7 = getelementptr inbounds nuw i8, ptr %1, i64 12 + %8 = load i8, ptr %7, align 4, !tbaa !21, !range !19, !noundef !20 + %9 = zext nneg i8 %8 to i64 + %10 = getelementptr inbounds nuw i8, ptr %1, i64 40 + %11 = load ptr, ptr %10, align 8, !tbaa !22 + %12 = icmp eq ptr %11, null + %.not = getelementptr inbounds nuw i8, ptr %1, i64 15 + %13 = load i8, ptr %12, align 1, !tbaa !23 + %14 = zext i32 %4 to i64 + %15 = shl nuw nsw i8 %6, 2 + %16 = zext nneg i8 %15 to i64 + %17 = sext i8 %13 to i64 %18 = select i1 %.not, i64 0, i64 32 %19 = icmp slt i32 %0, 34 %20 = select i1 %19, i64 2, i64 1 - %21 = add nuw nsw i64 %20, %15 + %21 = add nuw nsw i64 %20, %14 %22 = add nuw nsw i64 %21, %16 - %23 = add nuw nsw i64 %22, %10 + %23 = add nuw nsw i64 %22, %9 %24 = add nuw nsw i64 %23, %18 %25 = add nsw i64 %24, %17 ret i64 %25 @@ -307,22 +307,22 @@ define noundef range(i64 -127, 4294967461) i64 @_ZN3net23GetStartOfEncryptedData %4 = load i32, ptr %3, align 8, !tbaa !3 %5 = getelementptr inbounds nuw i8, ptr %1, i64 14 %6 = load i8, ptr %5, align 2, !tbaa !18, !range !19, !noundef !20 - %7 = trunc nuw i8 %6 to i1 - %8 = getelementptr inbounds nuw i8, ptr %1, i64 12 - %9 = load i8, ptr %8, align 4, !tbaa !21, !range !19, !noundef !20 - %10 = zext nneg i8 %9 to i64 - %11 = getelementptr inbounds nuw i8, ptr %1, i64 40 - %12 = load ptr, ptr %11, align 8, !tbaa !22 - %.not.i = icmp eq ptr %12, null - %13 = getelementptr inbounds nuw i8, ptr %1, i64 15 - %14 = load i8, ptr %13, align 1, !tbaa !23 - %15 = zext i32 %4 to i64 - %16 = select i1 %7, i64 4, i64 0 - %17 = sext i8 %14 to i64 + %7 = getelementptr inbounds nuw i8, ptr %1, i64 12 + %8 = load i8, ptr %7, align 4, !tbaa !21, !range !19, !noundef !20 + %9 = zext nneg i8 %8 to i64 + %10 = getelementptr inbounds nuw i8, ptr %1, i64 40 + %11 = load ptr, ptr %10, align 8, !tbaa !22 + %12 = icmp eq ptr %11, null + %.not.i = getelementptr inbounds nuw i8, ptr %1, i64 15 + %13 = load i8, ptr %12, align 1, !tbaa !23 + %14 = zext i32 %4 to i64 + %15 = shl nuw nsw i8 %6, 2 + %16 = zext nneg i8 %15 to i64 + %17 = sext i8 %13 to i64 %18 = select i1 %.not.i, i64 0, i64 32 - %19 = add nuw nsw i64 %15, 1 + %19 = add nuw nsw i64 %14, 1 %20 = add nuw nsw i64 %19, %16 - %21 = add nuw nsw i64 %20, %10 + %21 = add nuw nsw i64 %20, %9 %22 = add nuw nsw i64 %21, %18 %23 = add nsw i64 %22, %17 ret i64 %23 @@ -4053,24 +4053,24 @@ define { ptr, i64 } @_ZNK3net10QuicPacket14AssociatedDataB5cxx11ENS_11QuicVersio %6 = load i32, ptr %5, align 8, !tbaa !210 %7 = getelementptr inbounds nuw i8, ptr %0, i64 44 %8 = load i8, ptr %7, align 4, !tbaa !211, !range !19, !noundef !20 - %9 = trunc nuw i8 %8 to i1 - %10 = getelementptr inbounds nuw i8, ptr %0, i64 45 - %11 = load i8, ptr %10, align 1, !tbaa !212, !range !19, !noundef !20 - %12 = zext nneg i8 %11 to i64 - %13 = getelementptr inbounds nuw i8, ptr %0, i64 46 - %14 = load i8, ptr %13, align 2, !tbaa !213, !range !19, !noundef !20 - %15 = trunc nuw i8 %14 to i1 - %16 = getelementptr inbounds nuw i8, ptr %0, i64 47 - %17 = load i8, ptr %16, align 1, !tbaa !214 - %18 = zext i32 %6 to i64 - %19 = select i1 %9, i64 4, i64 0 - %20 = sext i8 %17 to i64 - %21 = select i1 %15, i64 32, i64 0 - %22 = add nuw nsw i64 %18, 1 - %23 = add nuw nsw i64 %22, %19 - %24 = add nuw nsw i64 %23, %12 + %9 = getelementptr inbounds nuw i8, ptr %0, i64 45 + %10 = load i8, ptr %9, align 1, !tbaa !212, !range !19, !noundef !20 + %11 = zext nneg i8 %10 to i64 + %12 = getelementptr inbounds nuw i8, ptr %0, i64 46 + %13 = load i8, ptr %12, align 2, !tbaa !213, !range !19, !noundef !20 + %14 = getelementptr inbounds nuw i8, ptr %0, i64 47 + %15 = load i8, ptr %14, align 1, !tbaa !214 + %16 = zext i32 %6 to i64 + %17 = shl nuw nsw i8 %8, 2 + %18 = zext nneg i8 %17 to i64 + %19 = sext i8 %15 to i64 + %20 = shl nuw nsw i8 %13, 5 + %21 = zext nneg i8 %20 to i64 + %22 = add nuw nsw i64 %16, 1 + %23 = add nuw nsw i64 %22, %18 + %24 = add nuw nsw i64 %23, %11 %25 = add nuw nsw i64 %24, %21 - %26 = add nsw i64 %25, %20 + %26 = add nsw i64 %25, %19 %.fca.0.insert = insertvalue { ptr, i64 } poison, ptr %4, 0 %.fca.1.insert = insertvalue { ptr, i64 } %.fca.0.insert, i64 %26, 1 ret { ptr, i64 } %.fca.1.insert @@ -4082,24 +4082,24 @@ define { ptr, i64 } @_ZNK3net10QuicPacket9PlaintextB5cxx11ENS_11QuicVersionE(ptr %4 = load i32, ptr %3, align 8, !tbaa !210 %5 = getelementptr inbounds nuw i8, ptr %0, i64 44 %6 = load i8, ptr %5, align 4, !tbaa !211, !range !19, !noundef !20 - %7 = trunc nuw i8 %6 to i1 - %8 = getelementptr inbounds nuw i8, ptr %0, i64 45 - %9 = load i8, ptr %8, align 1, !tbaa !212, !range !19, !noundef !20 - %10 = zext nneg i8 %9 to i64 - %11 = getelementptr inbounds nuw i8, ptr %0, i64 46 - %12 = load i8, ptr %11, align 2, !tbaa !213, !range !19, !noundef !20 - %13 = trunc nuw i8 %12 to i1 - %14 = getelementptr inbounds nuw i8, ptr %0, i64 47 - %15 = load i8, ptr %14, align 1, !tbaa !214 - %16 = zext i32 %4 to i64 - %17 = select i1 %7, i64 4, i64 0 - %18 = sext i8 %15 to i64 - %19 = select i1 %13, i64 32, i64 0 - %20 = add nuw nsw i64 %16, 1 - %21 = add nuw nsw i64 %20, %17 - %22 = add nuw nsw i64 %21, %10 + %7 = getelementptr inbounds nuw i8, ptr %0, i64 45 + %8 = load i8, ptr %7, align 1, !tbaa !212, !range !19, !noundef !20 + %9 = zext nneg i8 %8 to i64 + %10 = getelementptr inbounds nuw i8, ptr %0, i64 46 + %11 = load i8, ptr %10, align 2, !tbaa !213, !range !19, !noundef !20 + %12 = getelementptr inbounds nuw i8, ptr %0, i64 47 + %13 = load i8, ptr %12, align 1, !tbaa !214 + %14 = zext i32 %4 to i64 + %15 = shl nuw nsw i8 %6, 2 + %16 = zext nneg i8 %15 to i64 + %17 = sext i8 %13 to i64 + %18 = shl nuw nsw i8 %11, 5 + %19 = zext nneg i8 %18 to i64 + %20 = add nuw nsw i64 %14, 1 + %21 = add nuw nsw i64 %20, %16 + %22 = add nuw nsw i64 %21, %9 %23 = add nuw nsw i64 %22, %19 - %24 = add nsw i64 %23, %18 + %24 = add nsw i64 %23, %17 %25 = getelementptr inbounds nuw i8, ptr %0, i64 8 %26 = load ptr, ptr %25, align 8, !tbaa !204 %27 = getelementptr inbounds nuw i8, ptr %26, i64 %24 diff --git a/bench/libquic/optimized/spdy_framer.ll b/bench/libquic/optimized/spdy_framer.ll index d32c25e20bd..f63c00af36c 100644 --- a/bench/libquic/optimized/spdy_framer.ll +++ b/bench/libquic/optimized/spdy_framer.ll @@ -11654,11 +11654,11 @@ _ZN3net16SpdyFrameBuilder11WriteUInt32Ej.exit: ; preds = %129 162: ; preds = %159 %163 = getelementptr inbounds nuw i8, ptr %2, i64 116 %164 = load i8, ptr %163, align 4, !tbaa !308, !range !85, !noundef !86 - %165 = trunc nuw i8 %164 to i1 - %166 = getelementptr inbounds nuw i8, ptr %2, i64 112 - %167 = load i32, ptr %166, align 8, !tbaa !309 - %168 = and i32 %167, 2147483647 - %169 = select i1 %165, i32 -2147483648, i32 0 + %165 = getelementptr inbounds nuw i8, ptr %2, i64 112 + %166 = load i32, ptr %165, align 8, !tbaa !309 + %167 = and i32 %166, 2147483647 + %168 = zext nneg i8 %164 to i32 + %169 = shl nuw i32 %168, 32 %170 = or disjoint i32 %168, %169 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) %171 = call noundef i32 @llvm.bswap.i32(i32 %170) @@ -12409,10 +12409,9 @@ _ZN7logging11CheckEQImplIN3net16SpdyMajorVersionES2_EEPNSt7__cxx1112basic_string 13: ; preds = %_ZN7logging11CheckEQImplIN3net16SpdyMajorVersionES2_EEPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_RKT0_PKc.exit.thread, %_ZN7logging11CheckEQImplIN3net16SpdyMajorVersionES2_EEPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_RKT0_PKc.exit, %12 %14 = getelementptr inbounds nuw i8, ptr %2, i64 104 %15 = load i8, ptr %14, align 8, !tbaa !318, !range !85, !noundef !86 - %16 = trunc nuw i8 %15 to i1 - %spec.select = select i1 %16, i8 4, i8 0 - %17 = load i32, ptr %8, align 8, !tbaa !82 - %18 = call noundef i64 @_ZN3net13SpdyConstants18GetFrameHeaderSizeENS_16SpdyMajorVersionE(i32 noundef %17) + %16 = shl nuw nsw i8 %15, 2 + %spec.select = load i32, ptr %8, align 8, !tbaa !82 + %17 = call noundef i64 @_ZN3net13SpdyConstants18GetFrameHeaderSizeENS_16SpdyMajorVersionE(i32 noundef %spec.select) call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6) #25 %19 = getelementptr inbounds nuw i8, ptr %6, i64 16 store ptr %19, ptr %6, align 8, !tbaa !78 @@ -12512,7 +12511,7 @@ _ZN3net10SpdyFramer15GetHpackEncoderEv.exit23: ; preds = %_ZNKSt14default_del 53: ; preds = %_ZN3net10SpdyFramer15GetHpackEncoderEv.exit23, %_ZN3net10SpdyFramer15GetHpackEncoderEv.exit %54 = load i64, ptr %20, align 8, !tbaa !79 - %55 = add i64 %54, %18 + %55 = add i64 %54, %17 call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %7) #25 %56 = load i32, ptr %8, align 8, !tbaa !82 invoke void @_ZN3net16SpdyFrameBuilderC1EmNS_16SpdyMajorVersionE(ptr noundef nonnull align 8 dereferenceable(36) %7, i64 noundef %55, i32 noundef %56) @@ -13059,11 +13058,11 @@ define void @_ZNK3net10SpdyFramer17SerializePriorityERKNS_14SpdyPriorityIRE(ptr 15: ; preds = %3 %16 = getelementptr inbounds nuw i8, ptr %2, i64 20 %17 = load i8, ptr %16, align 4, !tbaa !332, !range !85, !noundef !86 - %18 = trunc nuw i8 %17 to i1 - %19 = getelementptr inbounds nuw i8, ptr %2, i64 12 - %20 = load i32, ptr %19, align 4, !tbaa !334 - %21 = and i32 %20, 2147483647 - %22 = select i1 %18, i32 -2147483648, i32 0 + %18 = getelementptr inbounds nuw i8, ptr %2, i64 12 + %19 = load i32, ptr %18, align 4, !tbaa !334 + %20 = and i32 %19, 2147483647 + %21 = zext nneg i8 %17 to i32 + %22 = shl nuw i32 %21, 32 %23 = or disjoint i32 %21, %22 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) %24 = call noundef i32 @llvm.bswap.i32(i32 %23) diff --git a/bench/llvm/optimized/ASTMatchersInternal.ll b/bench/llvm/optimized/ASTMatchersInternal.ll index 515556a680c..cef01166862 100644 --- a/bench/llvm/optimized/ASTMatchersInternal.ll +++ b/bench/llvm/optimized/ASTMatchersInternal.ll @@ -4247,7 +4247,6 @@ _ZN4llvm15SmallVectorImplIcE7reserveEm.exit.i.i.i: ; preds = %2, %55 %.027.idx73 = phi i64 [ 0, %2 ], [ %.027.add, %55 ] %.027.ptr = getelementptr inbounds nuw i8, ptr %3, i64 %.027.idx73 %17 = load i8, ptr %.027.ptr, align 1, !tbaa !265, !range !107, !noundef !108 - %18 = trunc nuw i8 %17 to i1 call void @llvm.lifetime.start.p0(i64 152, ptr nonnull %4) #22 store ptr %7, ptr %4, align 8, !tbaa !216 store i64 128, ptr %9, align 8, !tbaa !219 @@ -4270,9 +4269,11 @@ _ZN4llvm15SmallVectorImplIcE7reserveEm.exit.i.i.i: ; preds = %2, %55 %23 = shl nuw nsw i64 %21, 12 %24 = and i64 %22, -28673 %25 = or disjoint i64 %24, %23 - %26 = select i1 %18, i64 16384, i64 0 - %27 = or disjoint i64 %25, %26 - store i64 %27, ptr %6, align 8 + %26 = shl nuw nsw i8 %17, 1 + %27 = zext nneg i8 %25 to i64 + %27 = shl nuw nsw i64 %26, 13 + %28 = or disjoint i64 %24, %27 + store i64 %28, ptr %6, align 8 call void @_ZNK5clang9NamedDecl18printQualifiedNameERN4llvm11raw_ostreamERKNS_14PrintingPolicyE(ptr noundef nonnull align 8 dereferenceable(48) %1, ptr noundef nonnull align 8 dereferenceable(48) %5, ptr noundef nonnull align 8 dereferenceable(16) %6) #22 %28 = load ptr, ptr %14, align 8, !tbaa !234 %29 = load ptr, ptr %28, align 8, !tbaa !216 diff --git a/bench/llvm/optimized/ASTReaderStmt.ll b/bench/llvm/optimized/ASTReaderStmt.ll index 84188798956..f25acbb2b9c 100644 --- a/bench/llvm/optimized/ASTReaderStmt.ll +++ b/bench/llvm/optimized/ASTReaderStmt.ll @@ -10411,14 +10411,14 @@ _ZnwmRKN5clang10ASTContextEm.exit94: ; preds = %493, %496 %503 = call noundef ptr @_ZN5clang25ASTConstraintSatisfaction6CreateERKNS_10ASTContextERKNS_22ConstraintSatisfactionE(ptr noundef nonnull align 8 dereferenceable(23216) %502, ptr noundef nonnull align 8 dereferenceable(184) %7) #22 %504 = getelementptr inbounds nuw i8, ptr %503, i64 8 %505 = load i8, ptr %504, align 8 - %506 = trunc i8 %505 to i1 store i32 3, ptr %.0.i.i.i.i93, align 4, !tbaa !733 %507 = getelementptr inbounds nuw i8, ptr %.0.i.i.i.i93, i64 4 %508 = load i8, ptr %507, align 4 %509 = and i8 %508, -8 - %510 = select i1 %506, i8 4, i8 0 - %511 = or disjoint i8 %509, %510 - store i8 %511, ptr %507, align 4 + %510 = shl i8 %505, 2 + %511 = and i8 %509, 4 + %511 = or disjoint i8 %508, %510 + store i8 %511, ptr %506, align 4 %512 = getelementptr inbounds nuw i8, ptr %.0.i.i.i.i93, i64 8 store ptr null, ptr %512, align 8, !tbaa !747 %513 = getelementptr inbounds nuw i8, ptr %.0.i.i.i.i93, i64 16 @@ -10554,10 +10554,9 @@ _ZnwmRKN5clang10ASTContextEm.exit100: ; preds = %575, %578 call fastcc void @_ZL26readConstraintSatisfactionRN5clang15ASTRecordReaderE(ptr dead_on_unwind noalias writable align 8 %8, ptr noundef nonnull align 8 dereferenceable(560) %580) %581 = load i24, ptr %.0.i.i111, align 8 %582 = load i8, ptr %94, align 8, !tbaa !710, !range !610, !noundef !746 - %583 = trunc nuw i8 %582 to i1 - %584 = lshr i24 %581, 15 - %585 = trunc i24 %584 to i8 - %586 = and i8 %585, 1 + %583 = lshr i24 %581, 15 + %584 = trunc i24 %583 to i8 + %585 = and i8 %584, 1 store i32 3, ptr %.0.i.i.i.i99, align 4, !tbaa !733 %587 = getelementptr inbounds nuw i8, ptr %.0.i.i.i.i99, i64 4 %588 = load i8, ptr %587, align 4 @@ -10565,8 +10564,8 @@ _ZnwmRKN5clang10ASTContextEm.exit100: ; preds = %575, %578 %590 = lshr i24 %581, 13 %591 = trunc i24 %590 to i8 %592 = and i8 %591, 2 - %593 = select i1 %583, i8 4, i8 0 - %594 = or disjoint i8 %592, %586 + %593 = shl nuw nsw i8 %582, 2 + %594 = or disjoint i8 %592, %585 %595 = or disjoint i8 %594, %593 %596 = or disjoint i8 %595, %589 store i8 %596, ptr %587, align 4 diff --git a/bench/llvm/optimized/CGExprAgg.ll b/bench/llvm/optimized/CGExprAgg.ll index 9199dcf1072..b3a26edd453 100644 --- a/bench/llvm/optimized/CGExprAgg.ll +++ b/bench/llvm/optimized/CGExprAgg.ll @@ -11042,16 +11042,15 @@ _ZN5clang7CodeGen15CodeGenFunction19pushFullExprCleanupINS1_15CallLifetimeEndEJN %94 = load i64, ptr %93, align 8, !tbaa !3 %95 = getelementptr inbounds nuw i8, ptr %0, i64 80 %96 = load i8, ptr %95, align 8, !tbaa !644, !range !825, !noundef !781 - %97 = trunc nuw i8 %96 to i1 - %98 = load i8, ptr %17, align 8 - %99 = trunc i64 %94 to i8 - %100 = lshr i8 %99, 2 - %101 = and i8 %100, 1 - %102 = select i1 %97, i8 2, i8 0 - %103 = shl i8 %98, 2 - %104 = and i8 %103, 4 - %105 = or disjoint i8 %102, %101 - %106 = or disjoint i8 %105, %104 + %97 = load i8, ptr %17, align 8 + %98 = trunc i64 %94 to i8 + %99 = lshr i8 %98, 2 + %100 = and i8 %99, 1 + %101 = shl nuw nsw i8 %96, 1 + %102 = shl i8 %97, 2 + %103 = and i8 %102, 4 + %104 = or disjoint i8 %100, %101 + %105 = or disjoint i8 %104, %103 call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %9) store i64 %.sroa.053.0, ptr %9, align 8 %.sroa.0.sroa.2.0..sroa_idx = getelementptr inbounds nuw i8, ptr %9, i64 8 @@ -11063,7 +11062,7 @@ _ZN5clang7CodeGen15CodeGenFunction19pushFullExprCleanupINS1_15CallLifetimeEndEJN %.sroa.0.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %9, i64 25 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(23) %.sroa.0.sroa.5.0..sroa_idx, ptr noundef nonnull align 1 dereferenceable(23) %.sroa.11, i64 23, i1 false) %.sroa.2.0..sroa_idx46 = getelementptr inbounds nuw i8, ptr %9, i64 48 - store i8 %106, ptr %.sroa.2.0..sroa_idx46, align 8 + store i8 %105, ptr %.sroa.2.0..sroa_idx46, align 8 call void %2(ptr dead_on_unwind nonnull writable sret(%"class.clang::CodeGen::RValue") align 8 %14, i64 noundef %3, ptr noundef nonnull byval(%"class.clang::CodeGen::ReturnValueSlot") align 8 %9) #17 call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %9) br i1 %92, label %107, label %143 @@ -11136,13 +11135,13 @@ _ZN12_GLOBAL__N_114AggExprEmitter17EmitFinalDestCopyEN5clang8QualTypeENS1_7CodeG br i1 %or.cond.not, label %143, label %138 138: ; preds = %_ZN12_GLOBAL__N_114AggExprEmitter17EmitFinalDestCopyEN5clang8QualTypeENS1_7CodeGen6RValueE.exit + %138 = load ptr, ptr %0, align 8, !tbaa !647 + call void @_ZN5clang7CodeGen15CodeGenFunction22DeactivateCleanupBlockENS0_12EHScopeStack15stable_iteratorEPN4llvm11InstructionE(ptr noundef nonnull align 8 dereferenceable(6496) %138, i64 %.sroa.052.0, ptr noundef nonnull %.030) #17 %139 = load ptr, ptr %0, align 8, !tbaa !647 - call void @_ZN5clang7CodeGen15CodeGenFunction22DeactivateCleanupBlockENS0_12EHScopeStack15stable_iteratorEPN4llvm11InstructionE(ptr noundef nonnull align 8 dereferenceable(6496) %139, i64 %.sroa.052.0, ptr noundef nonnull %.030) #17 - %140 = load ptr, ptr %0, align 8, !tbaa !647 %.0.copyload.i.i.i.i45 = load i64, ptr %11, align 8 %141 = and i64 %.0.copyload.i.i.i.i45, -8 %142 = inttoptr i64 %141 to ptr - call void @_ZN5clang7CodeGen15CodeGenFunction15EmitLifetimeEndEPN4llvm5ValueES4_(ptr noundef nonnull align 8 dereferenceable(6496) %140, ptr noundef %.0, ptr noundef %142) #17 + call void @_ZN5clang7CodeGen15CodeGenFunction15EmitLifetimeEndEPN4llvm5ValueES4_(ptr noundef nonnull align 8 dereferenceable(6496) %139, ptr noundef %.0, ptr noundef %142) #17 br label %143 143: ; preds = %_ZN12_GLOBAL__N_114AggExprEmitter17EmitFinalDestCopyEN5clang8QualTypeENS1_7CodeGen6RValueE.exit, %138, %91 diff --git a/bench/llvm/optimized/Constant.ll b/bench/llvm/optimized/Constant.ll index 57aa61eebb8..1c1547afe1b 100644 --- a/bench/llvm/optimized/Constant.ll +++ b/bench/llvm/optimized/Constant.ll @@ -3736,19 +3736,18 @@ define linkonce_odr hidden void @_ZN4llvm9sandboxir13GenericSetterIXadL_ZNKS0_14 %4 = load ptr, ptr %3, align 8, !tbaa !206 %5 = getelementptr inbounds nuw i8, ptr %0, i64 16 %6 = load i8, ptr %5, align 8, !tbaa !208, !range !135, !noundef !136 - %7 = trunc nuw i8 %6 to i1 - %8 = getelementptr inbounds nuw i8, ptr %4, i64 24 - %9 = load ptr, ptr %8, align 8, !tbaa !26 - %10 = getelementptr inbounds nuw i8, ptr %9, i64 8 - %11 = tail call noundef zeroext i1 @_ZN4llvm9sandboxir7Tracker17emplaceIfTrackingINS0_13GenericSetterIXadL_ZNKS0_14GlobalVariable23isExternallyInitializedEvEEXadL_ZNS4_24setExternallyInitializedEbEEEEJPS4_EEEbDpT0_(ptr noundef nonnull align 8 dereferenceable(80) %10, ptr noundef nonnull align 8 dereferenceable(32) %4) - %12 = getelementptr inbounds nuw i8, ptr %4, i64 16 - %13 = load ptr, ptr %12, align 8, !tbaa !12 - %14 = getelementptr inbounds nuw i8, ptr %13, i64 80 - %15 = load i8, ptr %14, align 8 - %16 = select i1 %7, i8 2, i8 0 - %17 = and i8 %15, -3 - %18 = or disjoint i8 %17, %16 - store i8 %18, ptr %14, align 8 + %7 = getelementptr inbounds nuw i8, ptr %4, i64 24 + %8 = load ptr, ptr %7, align 8, !tbaa !26 + %9 = getelementptr inbounds nuw i8, ptr %8, i64 8 + %10 = tail call noundef zeroext i1 @_ZN4llvm9sandboxir7Tracker17emplaceIfTrackingINS0_13GenericSetterIXadL_ZNKS0_14GlobalVariable23isExternallyInitializedEvEEXadL_ZNS4_24setExternallyInitializedEbEEEEJPS4_EEEbDpT0_(ptr noundef nonnull align 8 dereferenceable(80) %9, ptr noundef nonnull align 8 dereferenceable(32) %4) + %11 = getelementptr inbounds nuw i8, ptr %4, i64 16 + %12 = load ptr, ptr %11, align 8, !tbaa !12 + %13 = getelementptr inbounds nuw i8, ptr %12, i64 80 + %14 = load i8, ptr %13, align 8 + %15 = shl nuw nsw i8 %6, 1 + %16 = and i8 %14, -3 + %17 = or disjoint i8 %16, %15 + store i8 %17, ptr %13, align 8 ret void } diff --git a/bench/llvm/optimized/DwarfCompileUnit.ll b/bench/llvm/optimized/DwarfCompileUnit.ll index e2c98f4df82..a0c215bf812 100644 --- a/bench/llvm/optimized/DwarfCompileUnit.ll +++ b/bench/llvm/optimized/DwarfCompileUnit.ll @@ -12835,12 +12835,13 @@ define linkonce_odr hidden noundef i32 @_ZNK4llvm16DwarfCompileUnit13getHeaderSi %7 = load ptr, ptr %2, align 8, !tbaa !151 %8 = getelementptr inbounds nuw i8, ptr %7, i64 3521 %9 = load i8, ptr %8, align 1, !tbaa !152, !range !48, !noundef !49 - %10 = trunc nuw i8 %9 to i1 - %11 = select i1 %10, i32 11, i32 3 - br label %12 + %10 = shl nuw nsw i8 %9, 3 + %11 = or disjoint i8 %10, 3 + %12 = zext nneg i8 %11 to i32 + br label %13 12: ; preds = %6, %1 - %13 = phi i32 [ 3, %1 ], [ %11, %6 ] + %13 = phi i32 [ 3, %1 ], [ %12, %6 ] %14 = getelementptr inbounds nuw i8, ptr %0, i64 184 %15 = load ptr, ptr %14, align 8, !tbaa !144 %16 = tail call noundef i32 @_ZNK4llvm10AsmPrinter22getDwarfOffsetByteSizeEv(ptr noundef nonnull align 8 dereferenceable(777) %15) #26 diff --git a/bench/llvm/optimized/Instruction.ll b/bench/llvm/optimized/Instruction.ll index f83e68e608c..724e8a179a9 100644 --- a/bench/llvm/optimized/Instruction.ll +++ b/bench/llvm/optimized/Instruction.ll @@ -17265,19 +17265,18 @@ define linkonce_odr hidden void @_ZN4llvm9sandboxir13GenericSetterIXadL_ZNKS0_20 %4 = load ptr, ptr %3, align 8, !tbaa !540 %5 = getelementptr inbounds nuw i8, ptr %0, i64 16 %6 = load i8, ptr %5, align 8, !tbaa !543, !range !197, !noundef !17 - %7 = trunc nuw i8 %6 to i1 - %8 = getelementptr inbounds nuw i8, ptr %4, i64 24 - %9 = load ptr, ptr %8, align 8, !tbaa !18 - %10 = getelementptr inbounds nuw i8, ptr %9, i64 8 - %11 = tail call noundef zeroext i1 @_ZN4llvm9sandboxir7Tracker17emplaceIfTrackingINS0_13GenericSetterIXadL_ZNKS0_20PossiblyDisjointInst10isDisjointEvEEXadL_ZNS4_13setIsDisjointEbEEEEJPS4_EEEbDpT0_(ptr noundef nonnull align 8 dereferenceable(80) %10, ptr noundef nonnull align 8 dereferenceable(36) %4) - %12 = getelementptr inbounds nuw i8, ptr %4, i64 16 - %13 = load ptr, ptr %12, align 8, !tbaa !3 - %14 = getelementptr inbounds nuw i8, ptr %13, i64 1 - %15 = load i8, ptr %14, align 1 - %16 = select i1 %7, i8 2, i8 0 - %17 = and i8 %15, -3 - %18 = or disjoint i8 %17, %16 - store i8 %18, ptr %14, align 1 + %7 = getelementptr inbounds nuw i8, ptr %4, i64 24 + %8 = load ptr, ptr %7, align 8, !tbaa !18 + %9 = getelementptr inbounds nuw i8, ptr %8, i64 8 + %10 = tail call noundef zeroext i1 @_ZN4llvm9sandboxir7Tracker17emplaceIfTrackingINS0_13GenericSetterIXadL_ZNKS0_20PossiblyDisjointInst10isDisjointEvEEXadL_ZNS4_13setIsDisjointEbEEEEJPS4_EEEbDpT0_(ptr noundef nonnull align 8 dereferenceable(80) %9, ptr noundef nonnull align 8 dereferenceable(36) %4) + %11 = getelementptr inbounds nuw i8, ptr %4, i64 16 + %12 = load ptr, ptr %11, align 8, !tbaa !3 + %13 = getelementptr inbounds nuw i8, ptr %12, i64 1 + %14 = load i8, ptr %13, align 1 + %15 = shl nuw nsw i8 %6, 1 + %16 = and i8 %14, -3 + %17 = or disjoint i8 %16, %15 + store i8 %17, ptr %13, align 1 ret void } @@ -17517,19 +17516,19 @@ define linkonce_odr hidden void @_ZN4llvm9sandboxir13GenericSetterIXadL_ZNKS0_17 %4 = load ptr, ptr %3, align 8, !tbaa !594 %5 = getelementptr inbounds nuw i8, ptr %0, i64 16 %6 = load i8, ptr %5, align 8, !tbaa !596, !range !197, !noundef !17 - %7 = trunc nuw i8 %6 to i1 - %8 = getelementptr inbounds nuw i8, ptr %4, i64 24 - %9 = load ptr, ptr %8, align 8, !tbaa !18 - %10 = getelementptr inbounds nuw i8, ptr %9, i64 8 - %11 = tail call noundef zeroext i1 @_ZN4llvm9sandboxir7Tracker17emplaceIfTrackingINS0_13GenericSetterIXadL_ZNKS0_17AtomicCmpXchgInst6isWeakEvEEXadL_ZNS4_7setWeakEbEEEEJPS4_EEEbDpT0_(ptr noundef nonnull align 8 dereferenceable(80) %10, ptr noundef nonnull align 8 dereferenceable(36) %4) - %12 = getelementptr inbounds nuw i8, ptr %4, i64 16 - %13 = load ptr, ptr %12, align 8, !tbaa !3 - %14 = getelementptr inbounds nuw i8, ptr %13, i64 2 - %15 = load i16, ptr %14, align 2, !tbaa !234 - %16 = and i16 %15, -3 - %17 = select i1 %7, i16 2, i16 0 - %18 = or disjoint i16 %16, %17 - store i16 %18, ptr %14, align 2, !tbaa !234 + %7 = getelementptr inbounds nuw i8, ptr %4, i64 24 + %8 = load ptr, ptr %7, align 8, !tbaa !18 + %9 = getelementptr inbounds nuw i8, ptr %8, i64 8 + %10 = tail call noundef zeroext i1 @_ZN4llvm9sandboxir7Tracker17emplaceIfTrackingINS0_13GenericSetterIXadL_ZNKS0_17AtomicCmpXchgInst6isWeakEvEEXadL_ZNS4_7setWeakEbEEEEJPS4_EEEbDpT0_(ptr noundef nonnull align 8 dereferenceable(80) %9, ptr noundef nonnull align 8 dereferenceable(36) %4) + %11 = getelementptr inbounds nuw i8, ptr %4, i64 16 + %12 = load ptr, ptr %11, align 8, !tbaa !3 + %13 = getelementptr inbounds nuw i8, ptr %12, i64 2 + %14 = load i16, ptr %13, align 2, !tbaa !234 + %15 = and i16 %14, -3 + %16 = shl nuw nsw i8 %6, 1 + %17 = zext nneg i8 %16 to i16 + %18 = or disjoint i16 %15, %17 + store i16 %18, ptr %13, align 2, !tbaa !234 ret void } @@ -17745,19 +17744,19 @@ define linkonce_odr hidden void @_ZN4llvm9sandboxir13GenericSetterIXadL_ZNKS0_10 %4 = load ptr, ptr %3, align 8, !tbaa !624 %5 = getelementptr inbounds nuw i8, ptr %0, i64 16 %6 = load i8, ptr %5, align 8, !tbaa !626, !range !197, !noundef !17 - %7 = trunc nuw i8 %6 to i1 - %8 = getelementptr inbounds nuw i8, ptr %4, i64 24 - %9 = load ptr, ptr %8, align 8, !tbaa !18 - %10 = getelementptr inbounds nuw i8, ptr %9, i64 8 - %11 = tail call noundef zeroext i1 @_ZN4llvm9sandboxir7Tracker17emplaceIfTrackingINS0_13GenericSetterIXadL_ZNKS0_10AllocaInst18isUsedWithInAllocaEvEEXadL_ZNS4_19setUsedWithInAllocaEbEEEEJPS4_EEEbDpT0_(ptr noundef nonnull align 8 dereferenceable(80) %10, ptr noundef nonnull align 8 dereferenceable(40) %4) - %12 = getelementptr inbounds nuw i8, ptr %4, i64 16 - %13 = load ptr, ptr %12, align 8, !tbaa !3 - %14 = getelementptr inbounds nuw i8, ptr %13, i64 2 - %15 = load i16, ptr %14, align 2, !tbaa !234 - %16 = and i16 %15, -65 - %17 = select i1 %7, i16 64, i16 0 - %18 = or disjoint i16 %16, %17 - store i16 %18, ptr %14, align 2, !tbaa !234 + %7 = getelementptr inbounds nuw i8, ptr %4, i64 24 + %8 = load ptr, ptr %7, align 8, !tbaa !18 + %9 = getelementptr inbounds nuw i8, ptr %8, i64 8 + %10 = tail call noundef zeroext i1 @_ZN4llvm9sandboxir7Tracker17emplaceIfTrackingINS0_13GenericSetterIXadL_ZNKS0_10AllocaInst18isUsedWithInAllocaEvEEXadL_ZNS4_19setUsedWithInAllocaEbEEEEJPS4_EEEbDpT0_(ptr noundef nonnull align 8 dereferenceable(80) %9, ptr noundef nonnull align 8 dereferenceable(40) %4) + %11 = getelementptr inbounds nuw i8, ptr %4, i64 16 + %12 = load ptr, ptr %11, align 8, !tbaa !3 + %13 = getelementptr inbounds nuw i8, ptr %12, i64 2 + %14 = load i16, ptr %13, align 2, !tbaa !234 + %15 = and i16 %14, -65 + %16 = shl nuw nsw i8 %6, 6 + %17 = zext nneg i8 %16 to i16 + %18 = or disjoint i16 %15, %17 + store i16 %18, ptr %13, align 2, !tbaa !234 ret void } diff --git a/bench/llvm/optimized/ModuleSummaryAnalysis.ll b/bench/llvm/optimized/ModuleSummaryAnalysis.ll index d07331e642c..08fd9fd19e4 100644 --- a/bench/llvm/optimized/ModuleSummaryAnalysis.ll +++ b/bench/llvm/optimized/ModuleSummaryAnalysis.ll @@ -9975,9 +9975,9 @@ _ZN4llvm6detail12DenseSetImplImNS_8DenseMapImNS0_13DenseSetEmptyENS_12DenseMapIn %brmerge = select i1 %2410, i1 true, i1 %.0.lcssa %brmerge314 = select i1 %brmerge, i1 true, i1 %.0222.lcssa %2411 = load i8, ptr %61, align 1, !range !48 - %2412 = trunc nuw i8 %2411 to i1 - %2413 = select i1 %brmerge314, i1 true, i1 %2412 - %cond.fr = select i1 %2413, i16 64, i16 0 + %2412 = shl nuw nsw i8 %2411, 6 + %2413 = zext nneg i8 %2412 to i16 + %cond.fr = select i1 %brmerge314, i16 64, i16 %2413 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %84) #23 %2414 = call noundef zeroext i1 @_ZNK4llvm11GlobalValue27canBeOmittedFromSymbolTableEv(ptr noundef nonnull align 8 dereferenceable(48) %1) #23 %2415 = trunc nuw nsw i32 %2408 to i16 @@ -22863,30 +22863,31 @@ _ZNSt10unique_ptrIN4llvm15FunctionSummaryESt14default_deleteIS1_EED2Ev.exit.i: ; _ZN4llvm11SmallVectorINS_9ValueInfoELj0EED2Ev.exit22.i: ; preds = %_ZNK4llvm11GlobalValue7getGUIDEv.exit.i %96 = getelementptr inbounds nuw i8, ptr %31, i64 80 %97 = load i8, ptr %96, align 8 - %98 = trunc i8 %97 to i1 - %99 = call noalias noundef nonnull dereferenceable(72) ptr @_Znwm(i64 noundef 72) #25, !noalias !953 + %98 = shl i8 %97, 2 + %99 = and i8 %98, 4 + %100 = call noalias noundef nonnull dereferenceable(72) ptr @_Znwm(i64 noundef 72) #25, !noalias !953 %.sroa.01.0.copyload.i.i = load i32, ptr %8, align 4, !noalias !953 - %.sroa.0.0.insert.ext.i = select i1 %98, i32 4, i32 0 - %100 = getelementptr inbounds nuw i8, ptr %99, i64 8 + %.sroa.0.0.insert.ext.i = zext nneg i8 %99 to i32 + %100 = getelementptr inbounds nuw i8, ptr %100, i64 8 store i32 2, ptr %100, align 8, !tbaa !286, !noalias !953 - %101 = getelementptr inbounds nuw i8, ptr %99, i64 12 + %101 = getelementptr inbounds nuw i8, ptr %100, i64 12 store i32 %.sroa.01.0.copyload.i.i, ptr %101, align 4, !noalias !953 - %102 = getelementptr inbounds nuw i8, ptr %99, i64 16 - %103 = getelementptr inbounds nuw i8, ptr %99, i64 40 - %104 = getelementptr inbounds nuw i8, ptr %99, i64 56 + %102 = getelementptr inbounds nuw i8, ptr %100, i64 16 + %103 = getelementptr inbounds nuw i8, ptr %100, i64 40 + %104 = getelementptr inbounds nuw i8, ptr %100, i64 56 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %102, i8 0, i64 24, i1 false), !noalias !953 store ptr %104, ptr %103, align 8, !tbaa !25, !noalias !953 - %105 = getelementptr inbounds nuw i8, ptr %99, i64 48 + %105 = getelementptr inbounds nuw i8, ptr %100, i64 48 store i32 0, ptr %105, align 8, !tbaa !26, !noalias !953 - %106 = getelementptr inbounds nuw i8, ptr %99, i64 52 + %106 = getelementptr inbounds nuw i8, ptr %100, i64 52 store i32 0, ptr %106, align 4, !tbaa !27, !noalias !953 - store ptr getelementptr inbounds nuw inrange(-16, 16) (i8, ptr @_ZTVN4llvm16GlobalVarSummaryE, i64 16), ptr %99, align 8, !tbaa !3, !noalias !953 + store ptr getelementptr inbounds nuw inrange(-16, 16) (i8, ptr @_ZTVN4llvm16GlobalVarSummaryE, i64 16), ptr %100, align 8, !tbaa !3, !noalias !953 store ptr null, ptr %104, align 8, !tbaa !294, !noalias !953 - %107 = getelementptr inbounds nuw i8, ptr %99, i64 64 + %107 = getelementptr inbounds nuw i8, ptr %100, i64 64 store i32 %.sroa.0.0.insert.ext.i, ptr %107, align 8, !noalias !953 %108 = getelementptr inbounds nuw i8, ptr %25, i64 24 %109 = load ptr, ptr %108, align 8, !tbaa !952 - store ptr %99, ptr %24, align 8, !tbaa !313 + store ptr %100, ptr %24, align 8, !tbaa !313 call void @_ZN4llvm18ModuleSummaryIndex21addGlobalValueSummaryERKNS_11GlobalValueESt10unique_ptrINS_18GlobalValueSummaryESt14default_deleteIS5_EE(ptr noundef nonnull align 8 dereferenceable(592) %109, ptr noundef nonnull align 8 dereferenceable(48) %31, ptr noundef nonnull %24) %110 = load ptr, ptr %24, align 8, !tbaa !316 %.not.i23.i = icmp eq ptr %110, null @@ -22896,7 +22897,7 @@ _ZNKSt14default_deleteIN4llvm18GlobalValueSummaryEEclEPS1_.exit.i24.i: ; preds = %111 = load ptr, ptr %110, align 8, !tbaa !3 %112 = getelementptr inbounds nuw i8, ptr %111, i64 8 %113 = load ptr, ptr %112, align 8 - call void %113(ptr noundef nonnull align 8 dereferenceable(56) %110) #23 + call void %114(ptr noundef nonnull align 8 dereferenceable(56) %110) #23 br label %_ZNSt10unique_ptrIN4llvm16GlobalVarSummaryESt14default_deleteIS1_EED2Ev.exit.i _ZNSt10unique_ptrIN4llvm16GlobalVarSummaryESt14default_deleteIS1_EED2Ev.exit.i: ; preds = %_ZNKSt14default_deleteIN4llvm18GlobalValueSummaryEEclEPS1_.exit.i24.i, %_ZN4llvm11SmallVectorINS_9ValueInfoELj0EED2Ev.exit22.i, %_ZNSt10unique_ptrIN4llvm15FunctionSummaryESt14default_deleteIS1_EED2Ev.exit.i diff --git a/bench/llvm/optimized/ModuleSummaryIndex.ll b/bench/llvm/optimized/ModuleSummaryIndex.ll index d55b78cfe81..bace0b58c04 100644 --- a/bench/llvm/optimized/ModuleSummaryIndex.ll +++ b/bench/llvm/optimized/ModuleSummaryIndex.ll @@ -1067,7 +1067,7 @@ define dso_local noundef range(i32 0, 3) i32 @_ZNK4llvm9ValueInfo16getELFVisibil br i1 %.not2324, label %.thread, label %.lr.ph .lr.ph: ; preds = %1, %13 - %.01126 = phi i1 [ %spec.select, %13 ], [ false, %1 ] + %.01126 = phi i8 [ %spec.select, %13 ], [ 0, %1 ] %.sroa.016.025 = phi ptr [ %15, %13 ], [ %5, %1 ] %8 = load ptr, ptr %.sroa.016.025, align 8, !tbaa !99 %9 = getelementptr inbounds nuw i8, ptr %8, i64 12 @@ -1079,19 +1079,20 @@ define dso_local noundef range(i32 0, 3) i32 @_ZNK4llvm9ValueInfo16getELFVisibil 13: ; preds = %.lr.ph %14 = icmp eq i16 %12, 2 - %spec.select = select i1 %14, i1 true, i1 %.01126 + %spec.select = select i1 %14, i8 1, i8 %.01126 %15 = getelementptr inbounds nuw i8, ptr %.sroa.016.025, i64 8 %.not23 = icmp eq ptr %15, %7 br i1 %.not23, label %.thread.loopexit, label %.lr.ph .thread.loopexit: ; preds = %.lr.ph, %13 - %.011.lcssa.ph = phi i1 [ %.01126, %.lr.ph ], [ %spec.select, %13 ] - %16 = select i1 %.011.lcssa.ph, i32 2, i32 0 - %17 = select i1 %.not.not, i32 1, i32 %16 + %.011.lcssa.ph = phi i8 [ %.01126, %.lr.ph ], [ %spec.select, %13 ] + %16 = shl nuw nsw i8 %.011.lcssa.ph, 1 + %17 = zext nneg i8 %16 to i32 + %18 = select i1 %.not.not, i32 1, i32 %17 br label %.thread .thread: ; preds = %.thread.loopexit, %1 - %.not23.lcssa = phi i32 [ 0, %1 ], [ %17, %.thread.loopexit ] + %.not23.lcssa = phi i32 [ 0, %1 ], [ %18, %.thread.loopexit ] ret i32 %.not23.lcssa } diff --git a/bench/llvm/optimized/RISCVTargetMachine.ll b/bench/llvm/optimized/RISCVTargetMachine.ll index 928d8f161bb..1493937dbcb 100644 --- a/bench/llvm/optimized/RISCVTargetMachine.ll +++ b/bench/llvm/optimized/RISCVTargetMachine.ll @@ -8110,8 +8110,7 @@ define linkonce_odr hidden noundef i32 @_ZNK4llvm19TargetTransformInfo5ModelINS_ %5 = load ptr, ptr %4, align 8, !tbaa !455 %6 = getelementptr inbounds nuw i8, ptr %5, i64 336 %7 = load i8, ptr %6, align 8, !tbaa !704, !range !50, !noundef !51 - %8 = trunc nuw i8 %7 to i1 - %..i = select i1 %8, i32 32, i32 0 + %8 = shl nuw nsw i8 %7, 5 br label %_ZNK4llvm12RISCVTTIImpl20getNumberOfRegistersEj.exit 9: ; preds = %2 @@ -8119,15 +8118,15 @@ define linkonce_odr hidden noundef i32 @_ZNK4llvm19TargetTransformInfo5ModelINS_ %11 = load ptr, ptr %10, align 8, !tbaa !455 %12 = getelementptr inbounds nuw i8, ptr %11, i64 452 %13 = load i8, ptr %12, align 4, !tbaa !539, !range !50, !noundef !51 - %14 = trunc nuw i8 %13 to i1 - %15 = select i1 %14, i32 32, i32 0 + %14 = shl nuw nsw i8 %13, 5 br label %_ZNK4llvm12RISCVTTIImpl20getNumberOfRegistersEj.exit 16: ; preds = %2 unreachable _ZNK4llvm12RISCVTTIImpl20getNumberOfRegistersEj.exit: ; preds = %2, %3, %9 - %.0.i = phi i32 [ %15, %9 ], [ 31, %2 ], [ %..i, %3 ] + %.0.i = phi i8 [ %14, %9 ], [ 31, %2 ], [ %8, %3 ] + %.0.i = zext nneg i8 %.0.shrunk.i to i32 ret i32 %.0.i } diff --git a/bench/llvm/optimized/SelectionDAG.ll b/bench/llvm/optimized/SelectionDAG.ll index 58126958ce4..efd26b8959b 100644 --- a/bench/llvm/optimized/SelectionDAG.ll +++ b/bench/llvm/optimized/SelectionDAG.ll @@ -73763,13 +73763,14 @@ _ZNK4llvm3EVT12getStoreSizeEv.exit: ; preds = %17, %21 %.fca.1.extract.i = extractvalue { i64, i8 } %.pn.i.i, 1 %23 = add i64 %.fca.0.extract.i, 7 %24 = lshr i64 %23, 3 - %25 = trunc i8 %.fca.1.extract.i to i1 - %26 = select i1 %25, i64 4611686018427387904, i64 0 - %27 = or disjoint i64 %26, %24 + %25 = and i8 %.fca.1.extract.i, 1 + %26 = zext nneg i8 %25 to i64 + %27 = shl nuw nsw i64 %26, 62 + %28 = or disjoint i64 %27, %24 br label %.critedge .critedge: ; preds = %12, %12, %_ZNK4llvm3EVT12getStoreSizeEv.exit, %13 - %.sroa.028.0 = phi i64 [ %10, %13 ], [ %27, %_ZNK4llvm3EVT12getStoreSizeEv.exit ], [ %10, %12 ], [ %10, %12 ] + %.sroa.028.0 = phi i64 [ %10, %13 ], [ %28, %_ZNK4llvm3EVT12getStoreSizeEv.exit ], [ %10, %12 ], [ %10, %12 ] %28 = getelementptr inbounds nuw i8, ptr %0, i64 40 %29 = load ptr, ptr %28, align 8, !tbaa !426 %30 = call noundef ptr @_ZN4llvm15MachineFunction20getMachineMemOperandENS_18MachinePointerInfoENS_17MachineMemOperand5FlagsENS_12LocationSizeENS_5AlignERKNS_9AAMDNodesEPKNS_6MDNodeEhNS_14AtomicOrderingESC_(ptr noundef nonnull align 8 dereferenceable(1065) %29, ptr noundef nonnull byval(%"struct.llvm::MachinePointerInfo") align 8 %7, i16 noundef zeroext %9, i64 %.sroa.028.0, i8 %8, ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef null, i8 noundef zeroext 1, i32 noundef 0, i32 noundef 0) #34 @@ -74871,14 +74872,15 @@ _ZNK4llvm3EVT12getStoreSizeEv.exit: ; preds = %20, %24 %.fca.1.extract.i = extractvalue { i64, i8 } %.pn.i.i, 1 %27 = add i64 %.fca.0.extract.i, 7 %28 = lshr i64 %27, 3 - %29 = trunc i8 %.fca.1.extract.i to i1 - %30 = select i1 %29, i64 4611686018427387904, i64 0 - %31 = or disjoint i64 %30, %28 - %32 = getelementptr inbounds nuw i8, ptr %0, i64 40 - %33 = load ptr, ptr %32, align 8, !tbaa !426 - %34 = call noundef ptr @_ZN4llvm15MachineFunction20getMachineMemOperandENS_18MachinePointerInfoENS_17MachineMemOperand5FlagsENS_12LocationSizeENS_5AlignERKNS_9AAMDNodesEPKNS_6MDNodeEhNS_14AtomicOrderingESC_(ptr noundef nonnull align 8 dereferenceable(1065) %33, ptr noundef nonnull byval(%"struct.llvm::MachinePointerInfo") align 8 %9, i16 noundef zeroext %26, i64 %31, i8 %11, ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef %14, i8 noundef zeroext 1, i32 noundef 0, i32 noundef 0) #34 - %35 = call { ptr, i32 } @_ZN4llvm12SelectionDAG7getLoadENS_3ISD14MemIndexedModeENS1_11LoadExtTypeENS_3EVTERKNS_5SDLocENS_7SDValueES8_S8_S4_PNS_17MachineMemOperandE(ptr noundef nonnull align 8 dereferenceable(952) %0, i32 noundef %1, i32 noundef %2, i16 %3, ptr %4, ptr noundef nonnull align 8 dereferenceable(12) %5, ptr noundef nonnull byval(%"class.llvm::SDValue") align 8 %6, ptr noundef nonnull byval(%"class.llvm::SDValue") align 8 %7, ptr noundef nonnull byval(%"class.llvm::SDValue") align 8 %8, ptr noundef nonnull byval(%"struct.llvm::EVT") align 8 %10, ptr noundef %34) - ret { ptr, i32 } %35 + %29 = and i8 %.fca.1.extract.i, 1 + %30 = zext nneg i8 %29 to i64 + %31 = shl nuw nsw i64 %30, 62 + %32 = or disjoint i64 %30, %28 + %33 = getelementptr inbounds nuw i8, ptr %0, i64 40 + %34 = load ptr, ptr %33, align 8, !tbaa !426 + %35 = call noundef ptr @_ZN4llvm15MachineFunction20getMachineMemOperandENS_18MachinePointerInfoENS_17MachineMemOperand5FlagsENS_12LocationSizeENS_5AlignERKNS_9AAMDNodesEPKNS_6MDNodeEhNS_14AtomicOrderingESC_(ptr noundef nonnull align 8 dereferenceable(1065) %34, ptr noundef nonnull byval(%"struct.llvm::MachinePointerInfo") align 8 %9, i16 noundef zeroext %26, i64 %32, i8 %11, ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef %14, i8 noundef zeroext 1, i32 noundef 0, i32 noundef 0) #34 + %36 = call { ptr, i32 } @_ZN4llvm12SelectionDAG7getLoadENS_3ISD14MemIndexedModeENS1_11LoadExtTypeENS_3EVTERKNS_5SDLocENS_7SDValueES8_S8_S4_PNS_17MachineMemOperandE(ptr noundef nonnull align 8 dereferenceable(952) %0, i32 noundef %1, i32 noundef %2, i16 %3, ptr %4, ptr noundef nonnull align 8 dereferenceable(12) %5, ptr noundef nonnull byval(%"class.llvm::SDValue") align 8 %6, ptr noundef nonnull byval(%"class.llvm::SDValue") align 8 %7, ptr noundef nonnull byval(%"class.llvm::SDValue") align 8 %8, ptr noundef nonnull byval(%"struct.llvm::EVT") align 8 %10, ptr noundef %35) + ret { ptr, i32 } %36 } ; Function Attrs: mustprogress nounwind uwtable @@ -75615,15 +75617,16 @@ _ZN4llvm12SelectionDAG7getLoadENS_3ISD14MemIndexedModeENS1_11LoadExtTypeENS_3EVT %.fca.1.extract.i.i = extractvalue { i64, i8 } %.pn.i.i.i, 1 %42 = add i64 %.fca.0.extract.i.i, 7 %43 = lshr i64 %42, 3 - %44 = trunc i8 %.fca.1.extract.i.i to i1 - %45 = select i1 %44, i64 4611686018427387904, i64 0 - %46 = or disjoint i64 %45, %43 - %47 = load ptr, ptr %27, align 8, !tbaa !426 - %48 = call noundef ptr @_ZN4llvm15MachineFunction20getMachineMemOperandENS_18MachinePointerInfoENS_17MachineMemOperand5FlagsENS_12LocationSizeENS_5AlignERKNS_9AAMDNodesEPKNS_6MDNodeEhNS_14AtomicOrderingESC_(ptr noundef nonnull align 8 dereferenceable(1065) %47, ptr noundef nonnull byval(%"struct.llvm::MachinePointerInfo") align 8 %18, i16 noundef zeroext %41, i64 %46, i8 %.sroa.0.0.i, ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef %14, i8 noundef zeroext 1, i32 noundef 0, i32 noundef 0) #34 - %49 = call { ptr, i32 } @_ZN4llvm12SelectionDAG7getLoadENS_3ISD14MemIndexedModeENS1_11LoadExtTypeENS_3EVTERKNS_5SDLocENS_7SDValueES8_S8_S4_PNS_17MachineMemOperandE(ptr noundef nonnull align 8 dereferenceable(952) %0, i32 noundef %1, i32 noundef %2, i16 %3, ptr %4, ptr noundef nonnull align 8 dereferenceable(12) %5, ptr noundef nonnull byval(%"class.llvm::SDValue") align 8 %6, ptr noundef nonnull byval(%"class.llvm::SDValue") align 8 %7, ptr noundef nonnull byval(%"class.llvm::SDValue") align 8 %8, ptr noundef nonnull byval(%"struct.llvm::EVT") align 8 %17, ptr noundef %48) + %44 = and i8 %.fca.1.extract.i.i, 1 + %45 = zext nneg i8 %44 to i64 + %46 = shl nuw nsw i64 %45, 62 + %47 = or disjoint i64 %46, %43 + %48 = load ptr, ptr %27, align 8, !tbaa !426 + %49 = call noundef ptr @_ZN4llvm15MachineFunction20getMachineMemOperandENS_18MachinePointerInfoENS_17MachineMemOperand5FlagsENS_12LocationSizeENS_5AlignERKNS_9AAMDNodesEPKNS_6MDNodeEhNS_14AtomicOrderingESC_(ptr noundef nonnull align 8 dereferenceable(1065) %48, ptr noundef nonnull byval(%"struct.llvm::MachinePointerInfo") align 8 %18, i16 noundef zeroext %41, i64 %47, i8 %.sroa.0.0.i, ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef %14, i8 noundef zeroext 1, i32 noundef 0, i32 noundef 0) #34 + %50 = call { ptr, i32 } @_ZN4llvm12SelectionDAG7getLoadENS_3ISD14MemIndexedModeENS1_11LoadExtTypeENS_3EVTERKNS_5SDLocENS_7SDValueES8_S8_S4_PNS_17MachineMemOperandE(ptr noundef nonnull align 8 dereferenceable(952) %0, i32 noundef %1, i32 noundef %2, i16 %3, ptr %4, ptr noundef nonnull align 8 dereferenceable(12) %5, ptr noundef nonnull byval(%"class.llvm::SDValue") align 8 %6, ptr noundef nonnull byval(%"class.llvm::SDValue") align 8 %7, ptr noundef nonnull byval(%"class.llvm::SDValue") align 8 %8, ptr noundef nonnull byval(%"struct.llvm::EVT") align 8 %17, ptr noundef %49) call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %18) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %17) - ret { ptr, i32 } %49 + ret { ptr, i32 } %50 } ; Function Attrs: mustprogress nounwind uwtable @@ -75828,19 +75831,20 @@ _ZN4llvm12SelectionDAG7getLoadENS_3ISD14MemIndexedModeENS1_11LoadExtTypeENS_3EVT %.fca.1.extract.i.i = extractvalue { i64, i8 } %.pn.i.i.i, 1 %44 = add i64 %.fca.0.extract.i.i, 7 %45 = lshr i64 %44, 3 - %46 = trunc i8 %.fca.1.extract.i.i to i1 - %47 = select i1 %46, i64 4611686018427387904, i64 0 - %48 = or disjoint i64 %47, %45 - %49 = getelementptr inbounds nuw i8, ptr %0, i64 40 - %50 = load ptr, ptr %49, align 8, !tbaa !426 - %51 = call noundef ptr @_ZN4llvm15MachineFunction20getMachineMemOperandENS_18MachinePointerInfoENS_17MachineMemOperand5FlagsENS_12LocationSizeENS_5AlignERKNS_9AAMDNodesEPKNS_6MDNodeEhNS_14AtomicOrderingESC_(ptr noundef nonnull align 8 dereferenceable(1065) %50, ptr noundef nonnull byval(%"struct.llvm::MachinePointerInfo") align 8 %11, i16 noundef zeroext %43, i64 %48, i8 %28, ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef null, i8 noundef zeroext 1, i32 noundef 0, i32 noundef 0) #34 - %52 = call { ptr, i32 } @_ZN4llvm12SelectionDAG7getLoadENS_3ISD14MemIndexedModeENS1_11LoadExtTypeENS_3EVTERKNS_5SDLocENS_7SDValueES8_S8_S4_PNS_17MachineMemOperandE(ptr noundef nonnull align 8 dereferenceable(952) %0, i32 noundef %7, i32 noundef %41, i16 %.sroa.0.0.copyload.i.i, ptr %.sroa.21.0.copyload.i.i, ptr noundef nonnull align 8 dereferenceable(12) %3, ptr noundef nonnull byval(%"class.llvm::SDValue") align 8 %13, ptr noundef nonnull byval(%"class.llvm::SDValue") align 8 %12, ptr noundef nonnull byval(%"class.llvm::SDValue") align 8 %6, ptr noundef nonnull byval(%"struct.llvm::EVT") align 8 %10, ptr noundef %51) + %46 = and i8 %.fca.1.extract.i.i, 1 + %47 = zext nneg i8 %46 to i64 + %48 = shl nuw nsw i64 %47, 62 + %49 = or disjoint i64 %48, %45 + %50 = getelementptr inbounds nuw i8, ptr %0, i64 40 + %51 = load ptr, ptr %50, align 8, !tbaa !426 + %52 = call noundef ptr @_ZN4llvm15MachineFunction20getMachineMemOperandENS_18MachinePointerInfoENS_17MachineMemOperand5FlagsENS_12LocationSizeENS_5AlignERKNS_9AAMDNodesEPKNS_6MDNodeEhNS_14AtomicOrderingESC_(ptr noundef nonnull align 8 dereferenceable(1065) %51, ptr noundef nonnull byval(%"struct.llvm::MachinePointerInfo") align 8 %11, i16 noundef zeroext %43, i64 %49, i8 %28, ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef null, i8 noundef zeroext 1, i32 noundef 0, i32 noundef 0) #34 + %53 = call { ptr, i32 } @_ZN4llvm12SelectionDAG7getLoadENS_3ISD14MemIndexedModeENS1_11LoadExtTypeENS_3EVTERKNS_5SDLocENS_7SDValueES8_S8_S4_PNS_17MachineMemOperandE(ptr noundef nonnull align 8 dereferenceable(952) %0, i32 noundef %7, i32 noundef %41, i16 %.sroa.0.0.copyload.i.i, ptr %.sroa.21.0.copyload.i.i, ptr noundef nonnull align 8 dereferenceable(12) %3, ptr noundef nonnull byval(%"class.llvm::SDValue") align 8 %13, ptr noundef nonnull byval(%"class.llvm::SDValue") align 8 %12, ptr noundef nonnull byval(%"class.llvm::SDValue") align 8 %6, ptr noundef nonnull byval(%"struct.llvm::EVT") align 8 %10, ptr noundef %52) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %11) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #34 - ret { ptr, i32 } %52 + ret { ptr, i32 } %53 } ; Function Attrs: mustprogress nounwind uwtable @@ -75972,11 +75976,12 @@ _ZNK4llvm3EVT12getStoreSizeEv.exit: ; preds = %62, %66 %.fca.1.extract.i = extractvalue { i64, i8 } %.pn.i.i, 1 %69 = add i64 %.fca.0.extract.i, 7 %70 = lshr i64 %69, 3 - %71 = trunc i8 %.fca.1.extract.i to i1 - %72 = select i1 %71, i64 4611686018427387904, i64 0 - %73 = or disjoint i64 %72, %70 + %71 = and i8 %.fca.1.extract.i, 1 + %72 = zext nneg i8 %71 to i64 + %73 = shl nuw nsw i64 %72, 62 + %74 = or disjoint i64 %73, %70 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #34 - %74 = call noundef ptr @_ZN4llvm15MachineFunction20getMachineMemOperandENS_18MachinePointerInfoENS_17MachineMemOperand5FlagsENS_12LocationSizeENS_5AlignERKNS_9AAMDNodesEPKNS_6MDNodeEhNS_14AtomicOrderingESC_(ptr noundef nonnull align 8 dereferenceable(1065) %56, ptr noundef nonnull byval(%"struct.llvm::MachinePointerInfo") align 8 %7, i16 noundef zeroext %68, i64 %73, i8 %8, ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef null, i8 noundef zeroext 1, i32 noundef 0, i32 noundef 0) #34 + %74 = call noundef ptr @_ZN4llvm15MachineFunction20getMachineMemOperandENS_18MachinePointerInfoENS_17MachineMemOperand5FlagsENS_12LocationSizeENS_5AlignERKNS_9AAMDNodesEPKNS_6MDNodeEhNS_14AtomicOrderingESC_(ptr noundef nonnull align 8 dereferenceable(1065) %56, ptr noundef nonnull byval(%"struct.llvm::MachinePointerInfo") align 8 %7, i16 noundef zeroext %68, i64 %74, i8 %8, ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef null, i8 noundef zeroext 1, i32 noundef 0, i32 noundef 0) #34 %75 = call { ptr, i32 } @_ZN4llvm12SelectionDAG8getStoreENS_7SDValueERKNS_5SDLocES1_S1_PNS_17MachineMemOperandE(ptr noundef nonnull align 8 dereferenceable(952) %0, ptr %1, i32 %2, ptr noundef nonnull align 8 dereferenceable(12) %3, ptr nonnull %4, i32 %5, ptr noundef nonnull byval(%"class.llvm::SDValue") align 8 %6, ptr noundef %74) ret { ptr, i32 } %75 } @@ -76411,12 +76416,13 @@ _ZNK4llvm3EVT12getStoreSizeEv.exit: ; preds = %58, %62 %.fca.1.extract.i = extractvalue { i64, i8 } %.pn.i.i, 1 %65 = add i64 %.fca.0.extract.i, 7 %66 = lshr i64 %65, 3 - %67 = trunc i8 %.fca.1.extract.i to i1 - %68 = select i1 %67, i64 4611686018427387904, i64 0 - %69 = or disjoint i64 %68, %66 - %70 = call noundef ptr @_ZN4llvm15MachineFunction20getMachineMemOperandENS_18MachinePointerInfoENS_17MachineMemOperand5FlagsENS_12LocationSizeENS_5AlignERKNS_9AAMDNodesEPKNS_6MDNodeEhNS_14AtomicOrderingESC_(ptr noundef nonnull align 8 dereferenceable(1065) %56, ptr noundef nonnull byval(%"struct.llvm::MachinePointerInfo") align 8 %7, i16 noundef zeroext %64, i64 %69, i8 %9, ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef null, i8 noundef zeroext 1, i32 noundef 0, i32 noundef 0) #34 - %71 = call { ptr, i32 } @_ZN4llvm12SelectionDAG13getTruncStoreENS_7SDValueERKNS_5SDLocES1_S1_NS_3EVTEPNS_17MachineMemOperandE(ptr noundef nonnull align 8 dereferenceable(952) %0, ptr %1, i32 %2, ptr noundef nonnull align 8 dereferenceable(12) %3, ptr %4, i32 %5, ptr noundef nonnull byval(%"class.llvm::SDValue") align 8 %6, ptr noundef nonnull byval(%"struct.llvm::EVT") align 8 %8, ptr noundef %70) - ret { ptr, i32 } %71 + %67 = and i8 %.fca.1.extract.i, 1 + %68 = zext nneg i8 %67 to i64 + %69 = shl nuw nsw i64 %68, 62 + %70 = or disjoint i64 %69, %66 + %71 = call noundef ptr @_ZN4llvm15MachineFunction20getMachineMemOperandENS_18MachinePointerInfoENS_17MachineMemOperand5FlagsENS_12LocationSizeENS_5AlignERKNS_9AAMDNodesEPKNS_6MDNodeEhNS_14AtomicOrderingESC_(ptr noundef nonnull align 8 dereferenceable(1065) %56, ptr noundef nonnull byval(%"struct.llvm::MachinePointerInfo") align 8 %7, i16 noundef zeroext %64, i64 %70, i8 %9, ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef null, i8 noundef zeroext 1, i32 noundef 0, i32 noundef 0) #34 + %72 = call { ptr, i32 } @_ZN4llvm12SelectionDAG13getTruncStoreENS_7SDValueERKNS_5SDLocES1_S1_NS_3EVTEPNS_17MachineMemOperandE(ptr noundef nonnull align 8 dereferenceable(952) %0, ptr %1, i32 %2, ptr noundef nonnull align 8 dereferenceable(12) %3, ptr %4, i32 %5, ptr noundef nonnull byval(%"class.llvm::SDValue") align 8 %6, ptr noundef nonnull byval(%"struct.llvm::EVT") align 8 %8, ptr noundef %71) + ret { ptr, i32 } %72 } ; Function Attrs: mustprogress nounwind uwtable @@ -77070,14 +77076,15 @@ _ZNK4llvm3EVT12getStoreSizeEv.exit: ; preds = %23, %27 %.fca.1.extract.i = extractvalue { i64, i8 } %.pn.i.i, 1 %30 = add i64 %.fca.0.extract.i, 7 %31 = lshr i64 %30, 3 - %32 = trunc i8 %.fca.1.extract.i to i1 - %33 = select i1 %32, i64 4611686018427387904, i64 0 - %34 = or disjoint i64 %33, %31 - %35 = getelementptr inbounds nuw i8, ptr %0, i64 40 - %36 = load ptr, ptr %35, align 8, !tbaa !426 - %37 = call noundef ptr @_ZN4llvm15MachineFunction20getMachineMemOperandENS_18MachinePointerInfoENS_17MachineMemOperand5FlagsENS_12LocationSizeENS_5AlignERKNS_9AAMDNodesEPKNS_6MDNodeEhNS_14AtomicOrderingESC_(ptr noundef nonnull align 8 dereferenceable(1065) %36, ptr noundef nonnull byval(%"struct.llvm::MachinePointerInfo") align 8 %11, i16 noundef zeroext %29, i64 %34, i8 %13, ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef %16, i8 noundef zeroext 1, i32 noundef 0, i32 noundef 0) #34 - %38 = call { ptr, i32 } @_ZN4llvm12SelectionDAG9getLoadVPENS_3ISD14MemIndexedModeENS1_11LoadExtTypeENS_3EVTERKNS_5SDLocENS_7SDValueES8_S8_S8_S8_S4_PNS_17MachineMemOperandEb(ptr noundef nonnull align 8 dereferenceable(952) %0, i32 noundef %1, i32 noundef %2, i16 %3, ptr %4, ptr noundef nonnull align 8 dereferenceable(12) %5, ptr noundef nonnull byval(%"class.llvm::SDValue") align 8 %6, ptr noundef nonnull byval(%"class.llvm::SDValue") align 8 %7, ptr noundef nonnull byval(%"class.llvm::SDValue") align 8 %8, ptr noundef nonnull byval(%"class.llvm::SDValue") align 8 %9, ptr noundef nonnull byval(%"class.llvm::SDValue") align 8 %10, ptr noundef nonnull byval(%"struct.llvm::EVT") align 8 %12, ptr noundef %37, i1 noundef zeroext %17) - ret { ptr, i32 } %38 + %32 = and i8 %.fca.1.extract.i, 1 + %33 = zext nneg i8 %32 to i64 + %34 = shl nuw nsw i64 %33, 62 + %35 = or disjoint i64 %34, %30 + %36 = getelementptr inbounds nuw i8, ptr %0, i64 40 + %37 = load ptr, ptr %36, align 8, !tbaa !426 + %38 = call noundef ptr @_ZN4llvm15MachineFunction20getMachineMemOperandENS_18MachinePointerInfoENS_17MachineMemOperand5FlagsENS_12LocationSizeENS_5AlignERKNS_9AAMDNodesEPKNS_6MDNodeEhNS_14AtomicOrderingESC_(ptr noundef nonnull align 8 dereferenceable(1065) %37, ptr noundef nonnull byval(%"struct.llvm::MachinePointerInfo") align 8 %11, i16 noundef zeroext %29, i64 %35, i8 %13, ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef %16, i8 noundef zeroext 1, i32 noundef 0, i32 noundef 0) #34 + %39 = call { ptr, i32 } @_ZN4llvm12SelectionDAG9getLoadVPENS_3ISD14MemIndexedModeENS1_11LoadExtTypeENS_3EVTERKNS_5SDLocENS_7SDValueES8_S8_S8_S8_S4_PNS_17MachineMemOperandEb(ptr noundef nonnull align 8 dereferenceable(952) %0, i32 noundef %1, i32 noundef %2, i16 %3, ptr %4, ptr noundef nonnull align 8 dereferenceable(12) %5, ptr noundef nonnull byval(%"class.llvm::SDValue") align 8 %6, ptr noundef nonnull byval(%"class.llvm::SDValue") align 8 %7, ptr noundef nonnull byval(%"class.llvm::SDValue") align 8 %8, ptr noundef nonnull byval(%"class.llvm::SDValue") align 8 %9, ptr noundef nonnull byval(%"class.llvm::SDValue") align 8 %10, ptr noundef nonnull byval(%"struct.llvm::EVT") align 8 %12, ptr noundef %38, i1 noundef zeroext %17) + ret { ptr, i32 } %39 } ; Function Attrs: mustprogress nounwind uwtable @@ -77497,15 +77504,16 @@ _ZN4llvm12SelectionDAG9getLoadVPENS_3ISD14MemIndexedModeENS1_11LoadExtTypeENS_3E %.fca.1.extract.i.i = extractvalue { i64, i8 } %.pn.i.i.i, 1 %45 = add i64 %.fca.0.extract.i.i, 7 %46 = lshr i64 %45, 3 - %47 = trunc i8 %.fca.1.extract.i.i to i1 - %48 = select i1 %47, i64 4611686018427387904, i64 0 - %49 = or disjoint i64 %48, %46 - %50 = load ptr, ptr %30, align 8, !tbaa !426 - %51 = call noundef ptr @_ZN4llvm15MachineFunction20getMachineMemOperandENS_18MachinePointerInfoENS_17MachineMemOperand5FlagsENS_12LocationSizeENS_5AlignERKNS_9AAMDNodesEPKNS_6MDNodeEhNS_14AtomicOrderingESC_(ptr noundef nonnull align 8 dereferenceable(1065) %50, ptr noundef nonnull byval(%"struct.llvm::MachinePointerInfo") align 8 %21, i16 noundef zeroext %44, i64 %49, i8 %.sroa.0.0.i, ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef %16, i8 noundef zeroext 1, i32 noundef 0, i32 noundef 0) #34 - %52 = call { ptr, i32 } @_ZN4llvm12SelectionDAG9getLoadVPENS_3ISD14MemIndexedModeENS1_11LoadExtTypeENS_3EVTERKNS_5SDLocENS_7SDValueES8_S8_S8_S8_S4_PNS_17MachineMemOperandEb(ptr noundef nonnull align 8 dereferenceable(952) %0, i32 noundef %1, i32 noundef %2, i16 %3, ptr %4, ptr noundef nonnull align 8 dereferenceable(12) %5, ptr noundef nonnull byval(%"class.llvm::SDValue") align 8 %6, ptr noundef nonnull byval(%"class.llvm::SDValue") align 8 %7, ptr noundef nonnull byval(%"class.llvm::SDValue") align 8 %8, ptr noundef nonnull byval(%"class.llvm::SDValue") align 8 %9, ptr noundef nonnull byval(%"class.llvm::SDValue") align 8 %10, ptr noundef nonnull byval(%"struct.llvm::EVT") align 8 %20, ptr noundef %51, i1 noundef zeroext %17) + %47 = and i8 %.fca.1.extract.i.i, 1 + %48 = zext nneg i8 %47 to i64 + %49 = shl nuw nsw i64 %48, 62 + %50 = or disjoint i64 %49, %46 + %51 = load ptr, ptr %29, align 8, !tbaa !426 + %52 = call noundef ptr @_ZN4llvm15MachineFunction20getMachineMemOperandENS_18MachinePointerInfoENS_17MachineMemOperand5FlagsENS_12LocationSizeENS_5AlignERKNS_9AAMDNodesEPKNS_6MDNodeEhNS_14AtomicOrderingESC_(ptr noundef nonnull align 8 dereferenceable(1065) %51, ptr noundef nonnull byval(%"struct.llvm::MachinePointerInfo") align 8 %21, i16 noundef zeroext %44, i64 %50, i8 %.sroa.0.0.i, ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef %16, i8 noundef zeroext 1, i32 noundef 0, i32 noundef 0) #34 + %53 = call { ptr, i32 } @_ZN4llvm12SelectionDAG9getLoadVPENS_3ISD14MemIndexedModeENS1_11LoadExtTypeENS_3EVTERKNS_5SDLocENS_7SDValueES8_S8_S8_S8_S4_PNS_17MachineMemOperandEb(ptr noundef nonnull align 8 dereferenceable(952) %0, i32 noundef %1, i32 noundef %2, i16 %3, ptr %4, ptr noundef nonnull align 8 dereferenceable(12) %5, ptr noundef nonnull byval(%"class.llvm::SDValue") align 8 %6, ptr noundef nonnull byval(%"class.llvm::SDValue") align 8 %7, ptr noundef nonnull byval(%"class.llvm::SDValue") align 8 %8, ptr noundef nonnull byval(%"class.llvm::SDValue") align 8 %9, ptr noundef nonnull byval(%"class.llvm::SDValue") align 8 %10, ptr noundef nonnull byval(%"struct.llvm::EVT") align 8 %20, ptr noundef %52, i1 noundef zeroext %17) call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %21) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %20) - ret { ptr, i32 } %52 + ret { ptr, i32 } %53 } ; Function Attrs: mustprogress nounwind uwtable @@ -77721,13 +77729,14 @@ _ZN4llvm12SelectionDAG9getLoadVPENS_3ISD14MemIndexedModeENS1_11LoadExtTypeENS_3E %.fca.1.extract.i.i = extractvalue { i64, i8 } %.pn.i.i.i, 1 %51 = add i64 %.fca.0.extract.i.i, 7 %52 = lshr i64 %51, 3 - %53 = trunc i8 %.fca.1.extract.i.i to i1 - %54 = select i1 %53, i64 4611686018427387904, i64 0 - %55 = or disjoint i64 %54, %52 - %56 = getelementptr inbounds nuw i8, ptr %0, i64 40 - %57 = load ptr, ptr %56, align 8, !tbaa !426 - %58 = call noundef ptr @_ZN4llvm15MachineFunction20getMachineMemOperandENS_18MachinePointerInfoENS_17MachineMemOperand5FlagsENS_12LocationSizeENS_5AlignERKNS_9AAMDNodesEPKNS_6MDNodeEhNS_14AtomicOrderingESC_(ptr noundef nonnull align 8 dereferenceable(1065) %57, ptr noundef nonnull byval(%"struct.llvm::MachinePointerInfo") align 8 %11, i16 noundef zeroext %50, i64 %55, i8 %32, ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef null, i8 noundef zeroext 1, i32 noundef 0, i32 noundef 0) #34 - %59 = call { ptr, i32 } @_ZN4llvm12SelectionDAG9getLoadVPENS_3ISD14MemIndexedModeENS1_11LoadExtTypeENS_3EVTERKNS_5SDLocENS_7SDValueES8_S8_S8_S8_S4_PNS_17MachineMemOperandEb(ptr noundef nonnull align 8 dereferenceable(952) %0, i32 noundef %7, i32 noundef %48, i16 %.sroa.0.0.copyload.i.i, ptr %.sroa.21.0.copyload.i.i, ptr noundef nonnull align 8 dereferenceable(12) %3, ptr noundef nonnull byval(%"class.llvm::SDValue") align 8 %15, ptr noundef nonnull byval(%"class.llvm::SDValue") align 8 %14, ptr noundef nonnull byval(%"class.llvm::SDValue") align 8 %6, ptr noundef nonnull byval(%"class.llvm::SDValue") align 8 %13, ptr noundef nonnull byval(%"class.llvm::SDValue") align 8 %12, ptr noundef nonnull byval(%"struct.llvm::EVT") align 8 %10, ptr noundef %58, i1 noundef zeroext %45) + %53 = and i8 %.fca.1.extract.i.i, 1 + %54 = zext nneg i8 %53 to i64 + %55 = shl nuw nsw i64 %54, 62 + %56 = or disjoint i64 %55, %52 + %57 = getelementptr inbounds nuw i8, ptr %0, i64 40 + %58 = load ptr, ptr %57, align 8, !tbaa !426 + %59 = call noundef ptr @_ZN4llvm15MachineFunction20getMachineMemOperandENS_18MachinePointerInfoENS_17MachineMemOperand5FlagsENS_12LocationSizeENS_5AlignERKNS_9AAMDNodesEPKNS_6MDNodeEhNS_14AtomicOrderingESC_(ptr noundef nonnull align 8 dereferenceable(1065) %58, ptr noundef nonnull byval(%"struct.llvm::MachinePointerInfo") align 8 %11, i16 noundef zeroext %50, i64 %56, i8 %32, ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef null, i8 noundef zeroext 1, i32 noundef 0, i32 noundef 0) #34 + %60 = call { ptr, i32 } @_ZN4llvm12SelectionDAG9getLoadVPENS_3ISD14MemIndexedModeENS1_11LoadExtTypeENS_3EVTERKNS_5SDLocENS_7SDValueES8_S8_S8_S8_S4_PNS_17MachineMemOperandEb(ptr noundef nonnull align 8 dereferenceable(952) %0, i32 noundef %7, i32 noundef %48, i16 %.sroa.0.0.copyload.i.i, ptr %.sroa.21.0.copyload.i.i, ptr noundef nonnull align 8 dereferenceable(12) %3, ptr noundef nonnull byval(%"class.llvm::SDValue") align 8 %15, ptr noundef nonnull byval(%"class.llvm::SDValue") align 8 %14, ptr noundef nonnull byval(%"class.llvm::SDValue") align 8 %6, ptr noundef nonnull byval(%"class.llvm::SDValue") align 8 %13, ptr noundef nonnull byval(%"class.llvm::SDValue") align 8 %12, ptr noundef nonnull byval(%"struct.llvm::EVT") align 8 %10, ptr noundef %59, i1 noundef zeroext %45) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) @@ -77735,7 +77744,7 @@ _ZN4llvm12SelectionDAG9getLoadVPENS_3ISD14MemIndexedModeENS1_11LoadExtTypeENS_3E call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %11) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16) #34 - ret { ptr, i32 } %59 + ret { ptr, i32 } %60 } ; Function Attrs: mustprogress nounwind uwtable @@ -78166,12 +78175,13 @@ _ZNK4llvm3EVT12getStoreSizeEv.exit: ; preds = %61, %65 %.fca.1.extract.i = extractvalue { i64, i8 } %.pn.i.i, 1 %68 = add i64 %.fca.0.extract.i, 7 %69 = lshr i64 %68, 3 - %70 = trunc i8 %.fca.1.extract.i to i1 - %71 = select i1 %70, i64 4611686018427387904, i64 0 - %72 = or disjoint i64 %71, %69 - %73 = call noundef ptr @_ZN4llvm15MachineFunction20getMachineMemOperandENS_18MachinePointerInfoENS_17MachineMemOperand5FlagsENS_12LocationSizeENS_5AlignERKNS_9AAMDNodesEPKNS_6MDNodeEhNS_14AtomicOrderingESC_(ptr noundef nonnull align 8 dereferenceable(1065) %59, ptr noundef nonnull byval(%"struct.llvm::MachinePointerInfo") align 8 %9, i16 noundef zeroext %67, i64 %72, i8 %11, ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef null, i8 noundef zeroext 1, i32 noundef 0, i32 noundef 0) #34 - %74 = call { ptr, i32 } @_ZN4llvm12SelectionDAG15getTruncStoreVPENS_7SDValueERKNS_5SDLocES1_S1_S1_S1_NS_3EVTEPNS_17MachineMemOperandEb(ptr noundef nonnull align 8 dereferenceable(952) %0, ptr %1, i32 %2, ptr noundef nonnull align 8 dereferenceable(12) %3, ptr %4, i32 %5, ptr noundef nonnull byval(%"class.llvm::SDValue") align 8 %6, ptr noundef nonnull byval(%"class.llvm::SDValue") align 8 %7, ptr noundef nonnull byval(%"class.llvm::SDValue") align 8 %8, ptr noundef nonnull byval(%"struct.llvm::EVT") align 8 %10, ptr noundef %73, i1 noundef zeroext %14) - ret { ptr, i32 } %74 + %70 = and i8 %.fca.1.extract.i, 1 + %71 = zext nneg i8 %70 to i64 + %72 = shl nuw nsw i64 %71, 62 + %73 = or disjoint i64 %72, %69 + %74 = call noundef ptr @_ZN4llvm15MachineFunction20getMachineMemOperandENS_18MachinePointerInfoENS_17MachineMemOperand5FlagsENS_12LocationSizeENS_5AlignERKNS_9AAMDNodesEPKNS_6MDNodeEhNS_14AtomicOrderingESC_(ptr noundef nonnull align 8 dereferenceable(1065) %59, ptr noundef nonnull byval(%"struct.llvm::MachinePointerInfo") align 8 %9, i16 noundef zeroext %67, i64 %73, i8 %11, ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef null, i8 noundef zeroext 1, i32 noundef 0, i32 noundef 0) #34 + %75 = call { ptr, i32 } @_ZN4llvm12SelectionDAG15getTruncStoreVPENS_7SDValueERKNS_5SDLocES1_S1_S1_S1_NS_3EVTEPNS_17MachineMemOperandEb(ptr noundef nonnull align 8 dereferenceable(952) %0, ptr %1, i32 %2, ptr noundef nonnull align 8 dereferenceable(12) %3, ptr %4, i32 %5, ptr noundef nonnull byval(%"class.llvm::SDValue") align 8 %6, ptr noundef nonnull byval(%"class.llvm::SDValue") align 8 %7, ptr noundef nonnull byval(%"class.llvm::SDValue") align 8 %8, ptr noundef nonnull byval(%"struct.llvm::EVT") align 8 %10, ptr noundef %74, i1 noundef zeroext %14) + ret { ptr, i32 } %75 } ; Function Attrs: mustprogress nounwind uwtable @@ -97422,7 +97432,7 @@ _ZNK4llvm3EVT21getVectorElementCountEv.exit: ; preds = %11, %20 %23 = phi i16 [ %13, %11 ], [ %9, %20 ] %.sroa.0.0.in.i = phi i64 [ %.sroa.0.0.insert.insert.i.i.i, %11 ], [ %21, %20 ] %24 = lshr i64 %.sroa.0.0.in.i, 1 - %25 = and i64 %.sroa.0.0.in.i, 4294967296 + %25 = and i64 %.sroa.0.0.in.i, 1095216660480 %.sroa.0.0.insert.ext.i.i = and i64 %24, 2147483647 %.sroa.0.0.insert.insert.i.i = or disjoint i64 %.sroa.0.0.insert.ext.i.i, %25 %.sroa.0.0.extract.trunc.i.i = trunc nuw nsw i64 %.sroa.0.0.insert.ext.i.i to i32 diff --git a/bench/llvm/optimized/SemaExprCXX.ll b/bench/llvm/optimized/SemaExprCXX.ll index 9b3dd6c1f83..01925c607d6 100644 --- a/bench/llvm/optimized/SemaExprCXX.ll +++ b/bench/llvm/optimized/SemaExprCXX.ll @@ -58005,10 +58005,9 @@ _ZnwmRKN5clang10ASTContextEm.exit: ; preds = %54, %57 %.0.i.i.i.i = phi ptr [ %56, %54 ], [ %58, %57 ] %60 = load i24, ptr %1, align 8 %61 = load i8, ptr %11, align 8, !tbaa !1774, !range !691, !noundef !692 - %62 = trunc nuw i8 %61 to i1 - %63 = lshr i24 %60, 15 - %64 = trunc i24 %63 to i8 - %65 = and i8 %64, 1 + %62 = lshr i24 %60, 15 + %63 = trunc i24 %62 to i8 + %64 = and i8 %63, 1 store i32 3, ptr %.0.i.i.i.i, align 4, !tbaa !2479 %66 = getelementptr inbounds nuw i8, ptr %.0.i.i.i.i, i64 4 %67 = load i8, ptr %66, align 4 @@ -58016,8 +58015,8 @@ _ZnwmRKN5clang10ASTContextEm.exit: ; preds = %54, %57 %69 = lshr i24 %60, 13 %70 = trunc i24 %69 to i8 %71 = and i8 %70, 2 - %72 = select i1 %62, i8 4, i8 0 - %73 = or disjoint i8 %71, %65 + %72 = shl nuw nsw i8 %61, 2 + %73 = or disjoint i8 %71, %64 %74 = or disjoint i8 %73, %72 %75 = or disjoint i8 %74, %68 store i8 %75, ptr %66, align 4 @@ -58095,14 +58094,14 @@ _ZnwmRKN5clang10ASTContextEm.exit: ; preds = %21, %24 %27 = tail call noundef ptr @_ZN5clang25ASTConstraintSatisfaction7RebuildERKNS_10ASTContextERKS0_(ptr noundef nonnull align 8 dereferenceable(23216) %26, ptr noundef nonnull align 8 dereferenceable(16) %3) #27 %28 = getelementptr inbounds nuw i8, ptr %27, i64 8 %29 = load i8, ptr %28, align 8 - %30 = trunc i8 %29 to i1 store i32 3, ptr %.0.i.i.i.i, align 4, !tbaa !2479 %31 = getelementptr inbounds nuw i8, ptr %.0.i.i.i.i, i64 4 %32 = load i8, ptr %31, align 4 %33 = and i8 %32, -8 - %34 = select i1 %30, i8 4, i8 0 - %35 = or disjoint i8 %33, %34 - store i8 %35, ptr %31, align 4 + %34 = shl i8 %29, 2 + %35 = and i8 %33, 4 + %35 = or disjoint i8 %32, %34 + store i8 %35, ptr %30, align 4 %36 = getelementptr inbounds nuw i8, ptr %.0.i.i.i.i, i64 8 store ptr null, ptr %36, align 8, !tbaa !2490 %37 = getelementptr inbounds nuw i8, ptr %.0.i.i.i.i, i64 16 @@ -77764,14 +77763,14 @@ _ZN5clang13TreeTransformIN12_GLOBAL__N_114TransformTyposEE24RebuildNestedRequire %239 = call noundef ptr @_ZN5clang25ASTConstraintSatisfaction7RebuildERKNS_10ASTContextERKS0_(ptr noundef nonnull align 8 dereferenceable(23216) %238, ptr noundef nonnull align 8 dereferenceable(16) %216) #27 %240 = getelementptr inbounds nuw i8, ptr %239, i64 8 %241 = load i8, ptr %240, align 8 - %242 = trunc i8 %241 to i1 store i32 3, ptr %.0.i.i.i.i.i.i.i, align 4, !tbaa !2479 %243 = getelementptr inbounds nuw i8, ptr %.0.i.i.i.i.i.i.i, i64 4 %244 = load i8, ptr %243, align 4 %245 = and i8 %244, -8 - %246 = select i1 %242, i8 4, i8 0 - %247 = or disjoint i8 %245, %246 - store i8 %247, ptr %243, align 4 + %246 = shl i8 %241, 2 + %247 = and i8 %245, 4 + %247 = or disjoint i8 %244, %246 + store i8 %247, ptr %242, align 4 %248 = getelementptr inbounds nuw i8, ptr %.0.i.i.i.i.i.i.i, i64 8 store ptr null, ptr %248, align 8, !tbaa !2490 %249 = getelementptr inbounds nuw i8, ptr %.0.i.i.i.i.i.i.i, i64 16 @@ -140902,14 +140901,14 @@ _ZN5clang13TreeTransformIZNS_4Sema25CorrectDelayedTyposInExprEPNS_4ExprEPNS_7Var %239 = call noundef ptr @_ZN5clang25ASTConstraintSatisfaction7RebuildERKNS_10ASTContextERKS0_(ptr noundef nonnull align 8 dereferenceable(23216) %238, ptr noundef nonnull align 8 dereferenceable(16) %216) #27 %240 = getelementptr inbounds nuw i8, ptr %239, i64 8 %241 = load i8, ptr %240, align 8 - %242 = trunc i8 %241 to i1 store i32 3, ptr %.0.i.i.i.i.i.i.i, align 4, !tbaa !2479 %243 = getelementptr inbounds nuw i8, ptr %.0.i.i.i.i.i.i.i, i64 4 %244 = load i8, ptr %243, align 4 %245 = and i8 %244, -8 - %246 = select i1 %242, i8 4, i8 0 - %247 = or disjoint i8 %245, %246 - store i8 %247, ptr %243, align 4 + %246 = shl i8 %241, 2 + %247 = and i8 %245, 4 + %247 = or disjoint i8 %244, %246 + store i8 %247, ptr %242, align 4 %248 = getelementptr inbounds nuw i8, ptr %.0.i.i.i.i.i.i.i, i64 8 store ptr null, ptr %248, align 8, !tbaa !2490 %249 = getelementptr inbounds nuw i8, ptr %.0.i.i.i.i.i.i.i, i64 16 diff --git a/bench/luau/optimized/BytecodeBuilder.ll b/bench/luau/optimized/BytecodeBuilder.ll index 347de90259a..181341f7f7a 100644 --- a/bench/luau/optimized/BytecodeBuilder.ll +++ b/bench/luau/optimized/BytecodeBuilder.ll @@ -4895,15 +4895,25 @@ _ZN4Luau6detail14DenseHashTableINS_15BytecodeBuilder9StringRefESt4pairIS3_jES4_I %80 = getelementptr inbounds nuw i8, ptr %0, i64 704 tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7reserveEm(ptr noundef nonnull align 8 dereferenceable(32) %80, i64 noundef %.1.lcssa) %81 = load i8, ptr @_ZN5FFlag20LuauCompileFastcall3E, align 8 - %82 = trunc i8 %81 to i1 - %..i = select i1 %82, i8 6, i8 5 + %82 = and i8 %81, 1 + %..i = add nuw nsw i8 %82, 5 %83 = tail call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEc(ptr noundef nonnull align 8 dereferenceable(32) %80, i8 noundef signext %..i) %84 = load i8, ptr @_ZN5FFlag19LuauCompileTypeInfoE, align 8 %85 = trunc i8 %84 to i1 - %86 = load i8, ptr @_ZN5FFlag23LuauCompileUserdataInfoE, align 8 - %87 = trunc i8 %86 to i1 - %spec.select.i = select i1 %87, i8 3, i8 2 - %.0.i = select i1 %85, i8 %spec.select.i, i8 1 + br i1 %85, label %86, label %89 + +86:; preds = %._crit_edge71 + %.0.i = load i8, ptr @_ZN5FFlag23LuauCompileUserdataInfoE, align 8 + %88 = trunc i8 %87 to i1 + br i1 %88, label %_ZN4Luau15BytecodeBuilder22getTypeEncodingVersionEv.exit, label %89 + +89: ; preds = %86, %._crit_edge71 + %90 = and i8 %84, 1 + %91 = add nuw nsw i8 %90, 1 + br label %_ZN4Luau15BytecodeBuilder22getTypeEncodingVersionEv.exit + +_ZN4Luau15BytecodeBuilder22getTypeEncodingVersionEv.exit: ; preds = %86, %89 + %.0.i = phi i8 [ %91, %89 ], [ 3, %86 ] call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %7) store i8 %.0.i, ptr %7, align 1 %88 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKcm(ptr noundef nonnull align 8 dereferenceable(32) %80, ptr noundef nonnull %7, i64 noundef 1) @@ -4913,7 +4923,7 @@ _ZN4Luau6detail14DenseHashTableINS_15BytecodeBuilder9StringRefESt4pairIS3_jES4_I %90 = trunc i8 %89 to i1 br i1 %90, label %91, label %124 -91: ; preds = %._crit_edge71 +91: ; preds = %_ZN4Luau15BytecodeBuilder22getTypeEncodingVersionEv.exit %92 = load i8, ptr @_ZN5FFlag23LuauCompileUserdataInfoE, align 8 %93 = trunc i8 %92 to i1 br i1 %93, label %.preheader, label %124 @@ -4976,7 +4986,7 @@ _ZN4LuauL11writeVarIntERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEj.ex call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4) br label %124 -124: ; preds = %._crit_edge75, %91, %._crit_edge71 +124: ; preds = %._crit_edge75, %91, %_ZN4Luau15BytecodeBuilder22getTypeEncodingVersionEv.exit %125 = load ptr, ptr %75, align 8 %126 = load ptr, ptr %0, align 8 %127 = ptrtoint ptr %125 to i64 @@ -5042,8 +5052,8 @@ declare noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6leng ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(read, argmem: none, inaccessiblemem: none) uwtable define dso_local noundef zeroext range(i8 5, 7) i8 @_ZN4Luau15BytecodeBuilder10getVersionEv() local_unnamed_addr #14 align 2 { %1 = load i8, ptr @_ZN5FFlag20LuauCompileFastcall3E, align 8 - %2 = trunc i8 %1 to i1 - %. = select i1 %2, i8 6, i8 5 + %2 = and i8 %1, 1 + %. = add nuw nsw i8 %2, 5 ret i8 %. } @@ -5053,10 +5063,20 @@ declare noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_st define dso_local noundef zeroext range(i8 1, 4) i8 @_ZN4Luau15BytecodeBuilder22getTypeEncodingVersionEv() local_unnamed_addr #14 align 2 { %1 = load i8, ptr @_ZN5FFlag19LuauCompileTypeInfoE, align 8 %2 = trunc i8 %1 to i1 - %3 = load i8, ptr @_ZN5FFlag23LuauCompileUserdataInfoE, align 8 - %4 = trunc i8 %3 to i1 - %spec.select = select i1 %4, i8 3, i8 2 - %.0 = select i1 %2, i8 %spec.select, i8 1 + br i1 %2, label %3, label %6 + +3:; preds = %0 + %.0 = load i8, ptr @_ZN5FFlag23LuauCompileUserdataInfoE, align 8 + %5 = trunc i8 %4 to i1 + br i1 %5, label %9, label %6 + +6: ; preds = %3, %0 + %7 = and i8 %1, 1 + %8 = add nuw nsw i8 %7, 1 + br label %9 + +9: ; preds = %3, %6 + %.0 = phi i8 [ %8, %6 ], [ 3, %3 ] ret i8 %.0 } diff --git a/bench/meilisearch-rs/optimized/4llghrvh6vzci59o.ll b/bench/meilisearch-rs/optimized/4llghrvh6vzci59o.ll index 1c3bc4b8b56..7becebe5add 100644 --- a/bench/meilisearch-rs/optimized/4llghrvh6vzci59o.ll +++ b/bench/meilisearch-rs/optimized/4llghrvh6vzci59o.ll @@ -33361,8 +33361,7 @@ _ZN5milli22external_documents_ids20ExternalDocumentsIds3get17h7c9c38652214ab53E. "_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h4dd919777ea29ee7E.exit.thread": ; preds = %551, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h4dd919777ea29ee7E.exit" %555 = load i8, ptr %283, align 8, !range !208, !noundef !11 - %trunc410 = trunc nuw i8 %555 to i1 - %. = select i1 %trunc410, i8 2, i8 0 + %trunc410 = shl nuw nsw i8 %555, 1 store i64 0, ptr %241, align 8, !alias.scope !5788 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %81) %556 = call i32 @llvm.bswap.i32(i32 %476) @@ -68988,10 +68987,9 @@ define internal fastcc noundef nonnull align 8 dereferenceable(96) ptr @_ZN9acti 17: ; preds = %11 %18 = load i8, ptr %7, align 8, !range !208, !noundef !11 - %19 = trunc nuw i8 %18 to i1 - %..i.i = select i1 %19, i8 5, i8 4 - %20 = getelementptr inbounds nuw i8, ptr %0, i64 88 - store i8 %..i.i, ptr %20, align 8 + %19 = or disjoint i8 %18, 4 + %..i.i = getelementptr inbounds nuw i8, ptr %0, i64 88 + store i8 %19, ptr %19, align 8 br label %16 21: ; preds = %16, %"_ZN4core3ptr72drop_in_place$LT$$LP$http..header..name..HeaderName$C$mime..Mime$RP$$GT$17h1fe7219022f7da1eE.exit" @@ -69017,7 +69015,7 @@ define internal fastcc noundef nonnull align 8 dereferenceable(96) ptr @_ZN9acti %29 = load ptr, ptr %28, align 8, !alias.scope !20726, !noundef !11 %30 = getelementptr inbounds nuw i8, ptr %1, i64 16 %31 = load i64, ptr %30, align 8, !alias.scope !20726, !noundef !11 - invoke void %26(ptr noalias noundef nonnull align 8 dereferenceable(8) %27, ptr noundef %29, i64 noundef %31) + invoke void %25(ptr noalias noundef nonnull align 8 dereferenceable(8) %27, ptr noundef %29, i64 noundef %31) to label %"_ZN4core3ptr72drop_in_place$LT$$LP$http..header..name..HeaderName$C$mime..Mime$RP$$GT$17h1fe7219022f7da1eE.exit" unwind label %32 32: ; preds = %24 diff --git a/bench/memcached/optimized/items.ll b/bench/memcached/optimized/items.ll index 0d717a7975d..9fafecb70f4 100644 --- a/bench/memcached/optimized/items.ll +++ b/bench/memcached/optimized/items.ll @@ -1207,14 +1207,14 @@ define dso_local ptr @do_item_alloc(ptr noundef readonly captures(none) %0, i64 %65 = getelementptr inbounds nuw i8, ptr %.063, i64 40 store i8 %64, ptr %65, align 8, !tbaa !30 %66 = load i8, ptr getelementptr inbounds nuw (i8, ptr @settings, i64 104), align 8, !tbaa !62, !range !24, !noundef !25 - %67 = trunc nuw i8 %66 to i1 - %68 = select i1 %67, i16 2, i16 0 - %69 = getelementptr inbounds nuw i8, ptr %.063, i64 38 - %70 = load i16, ptr %69, align 2, !tbaa !31 - %71 = or i16 %68, %70 + %67 = shl nuw nsw i8 %66, 1 + %68 = getelementptr inbounds nuw i8, ptr %.063, i64 38 + %69 = load i16, ptr %68, align 2, !tbaa !31 + %70 = zext nneg i8 %67 to i16 + %71 = or i16 %69, %70 %72 = select i1 %9, i16 0, i16 256 %73 = or i16 %71, %72 - store i16 %73, ptr %69, align 2, !tbaa !31 + store i16 %73, ptr %68, align 2, !tbaa !31 %74 = trunc i64 %1 to i8 %75 = getelementptr inbounds nuw i8, ptr %.063, i64 41 store i8 %74, ptr %75, align 1, !tbaa !30 diff --git a/bench/node/optimized/libnode.Protocol.ll b/bench/node/optimized/libnode.Protocol.ll index 54baf3d3110..cca2134b817 100644 --- a/bench/node/optimized/libnode.Protocol.ll +++ b/bench/node/optimized/libnode.Protocol.ll @@ -1352,8 +1352,8 @@ sw.bb2: ; preds = %entry sw.bb3: ; preds = %entry %5 = getelementptr inbounds nuw i8, ptr %this, i64 16 %6 = load i8, ptr %5, align 8 - %tobool = trunc i8 %6 to i1 - %spec.select = select i1 %tobool, i8 -11, i8 -12 + %tobool = and i8 %6, 1 + %spec.select = or disjoint i8 %tobool, -12 %_M_finish.i.i = getelementptr inbounds nuw i8, ptr %bytes, i64 8 %7 = load ptr, ptr %_M_finish.i.i, align 8 %_M_end_of_storage.i.i = getelementptr inbounds nuw i8, ptr %bytes, i64 16 diff --git a/bench/ockam-rs/optimized/1145kugil9dl94a2.ll b/bench/ockam-rs/optimized/1145kugil9dl94a2.ll index 4b6a47ef1d2..3ed111c1c69 100644 --- a/bench/ockam-rs/optimized/1145kugil9dl94a2.ll +++ b/bench/ockam-rs/optimized/1145kugil9dl94a2.ll @@ -90977,10 +90977,9 @@ define hidden void @"_ZN86_$LT$ockam_core..api..RequestHeader$u20$as$u20$minicbo tail call void @llvm.experimental.noalias.scope.decl(metadata !22463) tail call void @llvm.experimental.noalias.scope.decl(metadata !22466) %55 = load i8, ptr %54, align 1, !range !242, !alias.scope !22463, !noalias !22468, !noundef !7 - %56 = trunc nuw i8 %55 to i1 tail call void @llvm.experimental.noalias.scope.decl(metadata !22470) call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %5), !noalias !22473 - %..i.i = select i1 %56, i8 -11, i8 -12 + %..i.i = or disjoint i8 %55, -12 store i8 %..i.i, ptr %5, align 1, !noalias !22473 tail call void @llvm.experimental.noalias.scope.decl(metadata !22475) tail call void @llvm.experimental.noalias.scope.decl(metadata !22478) @@ -91930,10 +91929,9 @@ define hidden void @"_ZN87_$LT$ockam_core..api..ResponseHeader$u20$as$u20$minicb tail call void @llvm.experimental.noalias.scope.decl(metadata !22533) tail call void @llvm.experimental.noalias.scope.decl(metadata !22536) %56 = load i8, ptr %55, align 1, !range !242, !alias.scope !22533, !noalias !22538, !noundef !7 - %57 = trunc nuw i8 %56 to i1 tail call void @llvm.experimental.noalias.scope.decl(metadata !22540) call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %5), !noalias !22543 - %..i.i = select i1 %57, i8 -11, i8 -12 + %..i.i = or disjoint i8 %57, -12 store i8 %..i.i, ptr %5, align 1, !noalias !22543 tail call void @llvm.experimental.noalias.scope.decl(metadata !22545) tail call void @llvm.experimental.noalias.scope.decl(metadata !22548) diff --git a/bench/ockam-rs/optimized/13hx4edwj16k9wur.ll b/bench/ockam-rs/optimized/13hx4edwj16k9wur.ll index 4a146a5f853..a5fa34dc84e 100644 --- a/bench/ockam-rs/optimized/13hx4edwj16k9wur.ll +++ b/bench/ockam-rs/optimized/13hx4edwj16k9wur.ll @@ -22013,10 +22013,9 @@ define hidden void @"_ZN57_$LT$u64$u20$as$u20$minicbor..encode..Encode$LT$C$GT$$ define hidden void @"_ZN58_$LT$bool$u20$as$u20$minicbor..encode..Encode$LT$C$GT$$GT$6encode17h79dad6544a0d9e81E"(ptr noalias noundef writeonly sret({ ptr, [4 x i64] }) align 8 captures(none) dereferenceable(40) initializes((0, 8)) %0, ptr noalias noundef readonly align 1 captures(none) dereferenceable(1) %1, ptr noalias noundef readonly align 8 captures(none) dereferenceable(8) %2, ptr noalias noundef nonnull readnone align 1 captures(none) %3) unnamed_addr #1 { %5 = alloca [1 x i8], align 1 %6 = load i8, ptr %1, align 1, !range !1635, !noundef !11 - %7 = trunc nuw i8 %6 to i1 tail call void @llvm.experimental.noalias.scope.decl(metadata !3843) call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %5), !noalias !3846 - %..i = select i1 %7, i8 -11, i8 -12 + %..i = or disjoint i8 %6, -12 store i8 %..i, ptr %5, align 1, !noalias !3846 tail call void @llvm.experimental.noalias.scope.decl(metadata !3848) tail call void @llvm.experimental.noalias.scope.decl(metadata !3851) diff --git a/bench/ockam-rs/optimized/1411u8drt798uxi8.ll b/bench/ockam-rs/optimized/1411u8drt798uxi8.ll index c3347dbb75d..84b6199202b 100644 --- a/bench/ockam-rs/optimized/1411u8drt798uxi8.ll +++ b/bench/ockam-rs/optimized/1411u8drt798uxi8.ll @@ -101741,8 +101741,7 @@ define void @"_ZN162_$LT$ockam_api..nodes..models..transport..response..Transpor to label %60 unwind label %57 60: ; preds = %59 - %61 = trunc nuw i8 %19 to i1 - %..i = select i1 %61, i8 1, i8 2 + %61 = sub nuw nsw i8 2, %19 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.0, ptr noundef nonnull align 8 dereferenceable(24) %10, i64 24, i1 false) call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) %62 = getelementptr inbounds nuw i8, ptr %0, i64 96 diff --git a/bench/ockam-rs/optimized/40iecfzh8kpu4oof.ll b/bench/ockam-rs/optimized/40iecfzh8kpu4oof.ll index 96d96768f2d..33c7c369f17 100644 --- a/bench/ockam-rs/optimized/40iecfzh8kpu4oof.ll +++ b/bench/ockam-rs/optimized/40iecfzh8kpu4oof.ll @@ -140051,10 +140051,9 @@ define hidden noundef zeroext i1 @"_ZN58_$LT$alloc..string..String$u20$as$u20$co define hidden void @"_ZN58_$LT$bool$u20$as$u20$minicbor..encode..Encode$LT$C$GT$$GT$6encode17h3b13b3127e5ea2baE"(ptr noalias noundef writeonly sret({ ptr, [4 x i64] }) align 8 captures(none) dereferenceable(40) initializes((0, 8)) %0, ptr noalias noundef readonly align 1 captures(none) dereferenceable(1) %1, ptr noalias noundef readonly align 8 captures(none) dereferenceable(8) %2, ptr noalias noundef nonnull readnone align 1 captures(none) %3) unnamed_addr #0 { %5 = alloca [1 x i8], align 1 %6 = load i8, ptr %1, align 1, !range !531, !noundef !4 - %7 = trunc nuw i8 %6 to i1 tail call void @llvm.experimental.noalias.scope.decl(metadata !19004) call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %5), !noalias !19007 - %..i = select i1 %7, i8 -11, i8 -12 + %..i = or disjoint i8 %6, -12 store i8 %..i, ptr %5, align 1, !noalias !19007 tail call void @llvm.experimental.noalias.scope.decl(metadata !19009) tail call void @llvm.experimental.noalias.scope.decl(metadata !19012) @@ -140069,9 +140068,8 @@ define hidden void @"_ZN58_$LT$bool$u20$as$u20$minicbor..encode..Encode$LT$C$GT$ define hidden void @"_ZN58_$LT$bool$u20$as$u20$minicbor..encode..Encode$LT$C$GT$$GT$6encode17hffd0ed0f96fa70f8E"(ptr noalias noundef writeonly sret({ ptr, [4 x i64] }) align 8 captures(none) dereferenceable(40) initializes((0, 8)) %0, ptr noalias noundef readonly align 1 captures(none) dereferenceable(1) %1, ptr noalias noundef align 8 dereferenceable(24) %2, ptr noalias noundef nonnull readnone align 1 captures(none) %3) unnamed_addr #0 { %5 = alloca [1 x i8], align 1 %6 = load i8, ptr %1, align 1, !range !531, !noundef !4 - %7 = trunc nuw i8 %6 to i1 call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %5), !noalias !19021 - %..i = select i1 %7, i8 -11, i8 -12 + %..i = or disjoint i8 %6, -12 store i8 %..i, ptr %5, align 1, !noalias !19021 call void @"_ZN76_$LT$alloc..vec..Vec$LT$u8$GT$$u20$as$u20$minicbor..encode..write..Write$GT$9write_all17h5d106f95af0a7d71E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %2, ptr noalias noundef nonnull readonly align 1 %5, i64 noundef 1), !noalias !19025 call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %5), !noalias !19021 diff --git a/bench/ockam-rs/optimized/lcclztcuaxx9mqt.ll b/bench/ockam-rs/optimized/lcclztcuaxx9mqt.ll index d422476889d..0971922d890 100644 --- a/bench/ockam-rs/optimized/lcclztcuaxx9mqt.ll +++ b/bench/ockam-rs/optimized/lcclztcuaxx9mqt.ll @@ -4187,9 +4187,8 @@ define hidden void @"_ZN106_$LT$ockam_identity..models..change_history..ChangeDa %34 = getelementptr inbounds nuw i8, ptr %1, i64 115 call void @llvm.experimental.noalias.scope.decl(metadata !541) %35 = load i8, ptr %34, align 1, !range !108, !alias.scope !541, !noalias !544, !noundef !57 - %36 = trunc nuw i8 %35 to i1 call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %7), !noalias !547 - %..i.i = select i1 %36, i8 -11, i8 -12 + %..i.i = or disjoint i8 %35, -12 store i8 %..i.i, ptr %7, align 1, !noalias !547 call void @"_ZN76_$LT$alloc..vec..Vec$LT$u8$GT$$u20$as$u20$minicbor..encode..write..Write$GT$9write_all17h5d106f95af0a7d71E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %2, ptr noalias noundef nonnull readonly align 1 %7, i64 noundef 1), !noalias !551 call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %7), !noalias !547 @@ -158765,10 +158764,9 @@ define internal fastcc void @"_ZN8minicbor6encode7encoder16Encoder$LT$W$GT$6enco call void @llvm.experimental.noalias.scope.decl(metadata !22577) call void @llvm.experimental.noalias.scope.decl(metadata !22580) %47 = load i8, ptr %46, align 1, !range !108, !alias.scope !22582, !noalias !22583, !noundef !57 - %48 = trunc nuw i8 %47 to i1 call void @llvm.experimental.noalias.scope.decl(metadata !22585) call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %6), !noalias !22588 - %..i.i.i.i = select i1 %48, i8 -11, i8 -12 + %..i.i.i.i = or disjoint i8 %48, -12 store i8 %..i.i.i.i, ptr %6, align 1, !noalias !22588 call void @llvm.experimental.noalias.scope.decl(metadata !22590) call void @llvm.experimental.noalias.scope.decl(metadata !22593) diff --git a/bench/openjdk/optimized/instanceKlass.ll b/bench/openjdk/optimized/instanceKlass.ll index 7ee570749ff..6a2165f8576 100644 --- a/bench/openjdk/optimized/instanceKlass.ll +++ b/bench/openjdk/optimized/instanceKlass.ll @@ -21956,20 +21956,20 @@ define linkonce_odr hidden void @_ZN16EventClassUnload9writeDataI15EventWriterHo %7 = getelementptr inbounds nuw i8, ptr %4, i64 168 %8 = load i64, ptr %7, align 8 %9 = load i8, ptr @_ZN15JfrTraceIdEpoch12_epoch_stateE, align 1 - %10 = trunc i8 %9 to i1 - %11 = select i1 %10, i64 2, i64 1 - %.mask.i.i.i.i.i.i = and i8 %9, 1 - %12 = zext nneg i8 %.mask.i.i.i.i.i.i to i64 - %13 = shl nuw nsw i64 257, %12 + %10 = and i8 %9, 1 + %11 = add nuw nsw i8 %10, 1 + %.mask.i.i.i.i.i.i = zext nneg i8 %11 to i64 + %12 = mul nuw nsw i64 %.mask.i.i.i.i.i.i, 257 %14 = and i64 %13, %8 - %.not.i.i.i.i = icmp eq i64 %14, %11 + %.not.i.i.i.i = icmp eq i64 %14, %12 br i1 %.not.i.i.i.i, label %_ZN10JfrTraceId4loadEPK5Klass.exit.i.i, label %15 15: ; preds = %6 %16 = trunc i64 %8 to i8 - %17 = select i1 %10, i8 10, i8 5 - %18 = or i8 %17, %16 - store i8 %18, ptr %7, align 1 + %17 = trunc i8 %9 to i1 + %18 = select i1 %17, i8 10, i8 5 + %19 = or i8 %18, %16 + store i8 %19, ptr %7, align 1 tail call void asm sideeffect "", "~{memory},~{dirflag},~{fpsr},~{flags}"() #26, !srcloc !9 tail call void @_ZN21JfrTraceIdLoadBarrier7enqueueEPK5Klass(ptr noundef nonnull %4) #26 tail call void asm sideeffect "", "~{memory},~{dirflag},~{fpsr},~{flags}"() #26, !srcloc !9 @@ -21988,76 +21988,74 @@ _ZN10WriterHostI11EncoderHostI20BigEndianEncoderImplS1_ES0_I20Varint128EncoderIm %22 = getelementptr inbounds nuw i8, ptr %0, i64 32 %23 = load ptr, ptr %22, align 8 %24 = icmp eq ptr %23, null - br i1 %24, label %_ZN10WriterHostI11EncoderHostI20BigEndianEncoderImplS1_ES0_I20Varint128EncoderImplS1_E16MemoryWriterHostI7AdapterI8JfrFlushE8StackObj21ExclusiveAccessAssertEE5writeEPK15ClassLoaderData.exit, label %25 - -25: ; preds = %_ZN10WriterHostI11EncoderHostI20BigEndianEncoderImplS1_ES0_I20Varint128EncoderImplS1_E16MemoryWriterHostI7AdapterI8JfrFlushE8StackObj21ExclusiveAccessAssertEE5writeEPK5Klass.exit - %26 = getelementptr inbounds nuw i8, ptr %23, i64 33 - %27 = load i8, ptr %26, align 1 - %28 = trunc i8 %27 to i1 - br i1 %28, label %_ZN10WriterHostI11EncoderHostI20BigEndianEncoderImplS1_ES0_I20Varint128EncoderImplS1_E16MemoryWriterHostI7AdapterI8JfrFlushE8StackObj21ExclusiveAccessAssertEE5writeEPK15ClassLoaderData.exit, label %29 + br i1 %24, label %_ZN10WriterHostI11EncoderHostI20BigEndianEncoderImplS1_ES0_I20Varint128EncoderImplS1_E16MemoryWriterHostI7AdapterI8JfrFlushE8StackObj21ExclusiveAccessAssertEE5writeEPK15ClassLoaderData.exit, label %26 -29: ; preds = %25 - %30 = getelementptr inbounds nuw i8, ptr %23, i64 128 - %31 = load ptr, ptr %30, align 8 - %.not.i.i.i.i3 = icmp eq ptr %31, null - %.pre9.i.i.i.i = load i8, ptr @_ZN15JfrTraceIdEpoch12_epoch_stateE, align 1 - br i1 %.not.i.i.i.i3, label %_ZN21JfrTraceIdLoadBarrier4loadEPK5Klass.exit.i.i.i.i, label %32 +29: ; preds = %_ZN10WriterHostI11EncoderHostI20BigEndianEncoderImplS1_ES0_I20Varint128EncoderImplS1_E16MemoryWriterHostI7AdapterI8JfrFlushE8StackObj21ExclusiveAccessAssertEE5writeEPK5Klass.exit + %30 = getelementptr inbounds nuw i8, ptr %23, i64 33 + %31 = load i8, ptr %30, align 1 + %.not.i.i.i.i3 = trunc i8 %31 to i1 + br i1 %.not.i.i.i.i3, label %_ZN10WriterHostI11EncoderHostI20BigEndianEncoderImplS1_ES0_I20Varint128EncoderImplS1_E16MemoryWriterHostI7AdapterI8JfrFlushE8StackObj21ExclusiveAccessAssertEE5writeEPK15ClassLoaderData.exit, label %30 32: ; preds = %29 - %33 = getelementptr inbounds nuw i8, ptr %31, i64 168 - %34 = load i64, ptr %33, align 8 - %35 = trunc i8 %.pre9.i.i.i.i to i1 - %36 = select i1 %35, i64 2, i64 1 - %.mask.i.i.i.i.i.i.i = and i8 %.pre9.i.i.i.i, 1 - %37 = zext nneg i8 %.mask.i.i.i.i.i.i.i to i64 - %38 = shl nuw nsw i64 257, %37 - %39 = and i64 %34, %38 - %.not.i.i.i.i.i = icmp eq i64 %39, %36 - br i1 %.not.i.i.i.i.i, label %_ZN21JfrTraceIdLoadBarrier4loadEPK5Klass.exit.i.i.i.i, label %40 - -40: ; preds = %32 - %41 = trunc i64 %34 to i8 - %42 = select i1 %35, i8 10, i8 5 - %43 = or i8 %42, %41 - store i8 %43, ptr %33, align 1 + %33 = getelementptr inbounds nuw i8, ptr %23, i64 128 + %34 = load ptr, ptr %33, align 8 + %.not.i.i.i.i3 = icmp eq ptr %32, null + %36 = load i8, ptr @_ZN15JfrTraceIdEpoch12_epoch_stateE, align 1 + br i1 %.not.i.i.i.i3, label %_ZN21JfrTraceIdLoadBarrier4loadEPK5Klass.exit.i.i.i.i, label %33 + +33:; preds = %30 + %39 = getelementptr inbounds nuw i8, ptr %34, i64 168 + %.not.i.i.i.i.i = load i64, ptr %39, align 8 + %36 = and i8 %.pre8.i.i.i.i, 1 + %37 = add nuw nsw i8 %36, 1 + %38 = zext nneg i8 %37 to i64 + %41 = mul nuw nsw i64 %38, 257 + %42 = and i64 %35, %41 + %43 = icmp eq i64 %42, %38 + br i1 %43, label %_ZN21JfrTraceIdLoadBarrier4loadEPK5Klass.exit.i.i.i.i, label %41 + +41: ; preds = %33 + %42 = trunc i64 %35 to i8 + %43 = trunc i8 %.pre8.i.i.i.i to i1 + %44 = select i1 %43, i8 10, i8 5 + %45 = or i8 %44, %42 + store i8 %45, ptr %34, align 1 tail call void asm sideeffect "", "~{memory},~{dirflag},~{fpsr},~{flags}"() #26, !srcloc !9 - tail call void @_ZN21JfrTraceIdLoadBarrier7enqueueEPK5Klass(ptr noundef nonnull %31) #26 + tail call void @_ZN21JfrTraceIdLoadBarrier7enqueueEPK5Klass(ptr noundef nonnull %32) #26 tail call void asm sideeffect "", "~{memory},~{dirflag},~{fpsr},~{flags}"() #26, !srcloc !9 store volatile i8 1, ptr @_ZN15JfrTraceIdEpoch10_tag_stateE, align 1 %.pre.i.i.i.i4 = load i8, ptr @_ZN15JfrTraceIdEpoch12_epoch_stateE, align 1 br label %_ZN21JfrTraceIdLoadBarrier4loadEPK5Klass.exit.i.i.i.i -_ZN21JfrTraceIdLoadBarrier4loadEPK5Klass.exit.i.i.i.i: ; preds = %40, %32, %29 - %44 = phi i8 [ %.pre.i.i.i.i4, %40 ], [ %.pre9.i.i.i.i, %32 ], [ %.pre9.i.i.i.i, %29 ] +_ZN21JfrTraceIdLoadBarrier4loadEPK5Klass.exit.i.i.i.i: ; preds = %41, %33, %30 + %44 = phi i8 [ %.pre.i.i.i.i4, %41 ], [ %.pre8.i.i.i.i, %33 ], [ %.pre8.i.i.i.i, %30 ] %45 = getelementptr inbounds nuw i8, ptr %23, i64 152 %46 = load i64, ptr %45, align 8 - %47 = trunc i8 %44 to i1 - %48 = select i1 %47, i64 2, i64 1 - %.mask.i.i.i6.i.i.i.i = and i8 %44, 1 - %49 = zext nneg i8 %.mask.i.i.i6.i.i.i.i to i64 - %50 = shl nuw nsw i64 257, %49 - %51 = and i64 %50, %46 - %.not.i7.i.i.i.i = icmp eq i64 %51, %48 - br i1 %.not.i7.i.i.i.i, label %_Z16set_used_and_getI15ClassLoaderDataEmPKT_.exit.i.i.i.i, label %52 - -52: ; preds = %_ZN21JfrTraceIdLoadBarrier4loadEPK5Klass.exit.i.i.i.i - %53 = trunc i64 %46 to i8 - %54 = select i1 %47, i8 2, i8 1 - %55 = or i8 %54, %53 - store i8 %55, ptr %45, align 1 + %47 = and i8 %44, 1 + %48 = add nuw nsw i8 %47, 1 + %.mask.i.i.i6.i.i.i.i = zext nneg i8 %48 to i64 + %49 = mul nuw nsw i64 %.mask.i.i.i6.i.i.i.i, 257 + %50 = and i64 %52, %48 + %51 = icmp eq i64 %50, %51 + br i1 %.not.i6.i.i.i.i, label %_Z16set_used_and_getI15ClassLoaderDataEmPKT_.exit.i.i.i.i, label %54 + +54: ; preds = %_ZN21JfrTraceIdLoadBarrier4loadEPK5Klass.exit.i.i.i.i + %55 = trunc i64 %48 to i8 + %53 = or i8 %50, %55 + store i8 %56, ptr %47, align 1 tail call void asm sideeffect "", "~{memory},~{dirflag},~{fpsr},~{flags}"() #26, !srcloc !9 tail call void asm sideeffect "", "~{memory},~{dirflag},~{fpsr},~{flags}"() #26, !srcloc !9 store volatile i8 1, ptr @_ZN15JfrTraceIdEpoch10_tag_stateE, align 1 %.pre.i8.i.i.i.i = load i64, ptr %45, align 8 br label %_Z16set_used_and_getI15ClassLoaderDataEmPKT_.exit.i.i.i.i -_Z16set_used_and_getI15ClassLoaderDataEmPKT_.exit.i.i.i.i: ; preds = %52, %_ZN21JfrTraceIdLoadBarrier4loadEPK5Klass.exit.i.i.i.i - %56 = phi i64 [ %.pre.i8.i.i.i.i, %52 ], [ %46, %_ZN21JfrTraceIdLoadBarrier4loadEPK5Klass.exit.i.i.i.i ] +_Z16set_used_and_getI15ClassLoaderDataEmPKT_.exit.i.i.i.i: ; preds = %54, %_ZN21JfrTraceIdLoadBarrier4loadEPK5Klass.exit.i.i.i.i + %56 = phi i64 [ %.pre.i8.i.i.i.i, %54 ], [ %46, %_ZN21JfrTraceIdLoadBarrier4loadEPK5Klass.exit.i.i.i.i ] %57 = lshr i64 %56, 16 br label %_ZN10WriterHostI11EncoderHostI20BigEndianEncoderImplS1_ES0_I20Varint128EncoderImplS1_E16MemoryWriterHostI7AdapterI8JfrFlushE8StackObj21ExclusiveAccessAssertEE5writeEPK15ClassLoaderData.exit -_ZN10WriterHostI11EncoderHostI20BigEndianEncoderImplS1_ES0_I20Varint128EncoderImplS1_E16MemoryWriterHostI7AdapterI8JfrFlushE8StackObj21ExclusiveAccessAssertEE5writeEPK15ClassLoaderData.exit: ; preds = %_ZN10WriterHostI11EncoderHostI20BigEndianEncoderImplS1_ES0_I20Varint128EncoderImplS1_E16MemoryWriterHostI7AdapterI8JfrFlushE8StackObj21ExclusiveAccessAssertEE5writeEPK5Klass.exit, %25, %_Z16set_used_and_getI15ClassLoaderDataEmPKT_.exit.i.i.i.i - %58 = phi i64 [ 0, %_ZN10WriterHostI11EncoderHostI20BigEndianEncoderImplS1_ES0_I20Varint128EncoderImplS1_E16MemoryWriterHostI7AdapterI8JfrFlushE8StackObj21ExclusiveAccessAssertEE5writeEPK5Klass.exit ], [ %57, %_Z16set_used_and_getI15ClassLoaderDataEmPKT_.exit.i.i.i.i ], [ 0, %25 ] +_ZN10WriterHostI11EncoderHostI20BigEndianEncoderImplS1_ES0_I20Varint128EncoderImplS1_E16MemoryWriterHostI7AdapterI8JfrFlushE8StackObj21ExclusiveAccessAssertEE5writeEPK15ClassLoaderData.exit: ; preds = %_ZN10WriterHostI11EncoderHostI20BigEndianEncoderImplS1_ES0_I20Varint128EncoderImplS1_E16MemoryWriterHostI7AdapterI8JfrFlushE8StackObj21ExclusiveAccessAssertEE5writeEPK5Klass.exit, %26, %_Z16set_used_and_getI15ClassLoaderDataEmPKT_.exit.i.i.i.i + %58 = phi i64 [ 0, %_ZN10WriterHostI11EncoderHostI20BigEndianEncoderImplS1_ES0_I20Varint128EncoderImplS1_E16MemoryWriterHostI7AdapterI8JfrFlushE8StackObj21ExclusiveAccessAssertEE5writeEPK5Klass.exit ], [ %57, %_Z16set_used_and_getI15ClassLoaderDataEmPKT_.exit.i.i.i.i ], [ 0, %26 ] tail call void @_ZN10WriterHostI11EncoderHostI20BigEndianEncoderImplS1_ES0_I20Varint128EncoderImplS1_E16MemoryWriterHostI7AdapterI8JfrFlushE8StackObj21ExclusiveAccessAssertEE5writeImEEvT_(ptr noundef nonnull align 8 dereferenceable(41) %1, i64 noundef %58) ret void } diff --git a/bench/openjdk/optimized/jfrKlassUnloading.ll b/bench/openjdk/optimized/jfrKlassUnloading.ll index 5781903b307..141f6e3d516 100644 --- a/bench/openjdk/optimized/jfrKlassUnloading.ll +++ b/bench/openjdk/optimized/jfrKlassUnloading.ll @@ -221,11 +221,13 @@ _ZL25add_to_unloaded_klass_setm.exit: ; preds = %16, %24 store i64 %33, ptr %38, align 8 %39 = load i64, ptr %10, align 8 %40 = load i8, ptr @_ZN15JfrTraceIdEpoch12_epoch_stateE, align 1 - %41 = trunc i8 %40 to i1 - %42 = select i1 %41, i64 2050, i64 2049 - %43 = and i64 %42, %39 - %44 = icmp ne i64 %43, 0 - ret i1 %44 + %41 = and i8 %40, 1 + %42 = add nuw nsw i8 %41, 1 + %43 = zext nneg i8 %42 to i64 + %44 = or disjoint i64 %43, 2048 + %45 = and i64 %44, %39 + %46 = icmp ne i64 %45, 0 + ret i1 %46 } ; Function Attrs: mustprogress nounwind uwtable diff --git a/bench/openjdk/optimized/jfrModuleEvent.ll b/bench/openjdk/optimized/jfrModuleEvent.ll index a7565562787..37441ae1c8d 100644 --- a/bench/openjdk/optimized/jfrModuleEvent.ll +++ b/bench/openjdk/optimized/jfrModuleEvent.ll @@ -1397,20 +1397,20 @@ define linkonce_odr hidden noundef i64 @_ZN21JfrTraceIdLoadBarrier4loadEPK11Modu 11: ; preds = %8 %12 = getelementptr inbounds nuw i8, ptr %10, i64 168 %13 = load i64, ptr %12, align 8 - %14 = trunc i8 %.pre9.i to i1 - %15 = select i1 %14, i64 2, i64 1 - %.mask.i.i.i.i = and i8 %.pre9.i, 1 - %16 = zext nneg i8 %.mask.i.i.i.i to i64 - %17 = shl nuw nsw i64 257, %16 + %14 = and i8 %.pre9.i, 1 + %15 = add nuw nsw i8 %14, 1 + %.mask.i.i.i.i = zext nneg i8 %15 to i64 + %16 = mul nuw nsw i64 %.mask.i.i.i.i, 257 %18 = and i64 %13, %17 - %.not.i.i = icmp eq i64 %18, %15 + %.not.i.i = icmp eq i64 %18, %16 br i1 %.not.i.i, label %_ZN21JfrTraceIdLoadBarrier4loadEPK5Klass.exit.i, label %19 19: ; preds = %11 %20 = trunc i64 %13 to i8 - %21 = select i1 %14, i8 10, i8 5 - %22 = or i8 %21, %20 - store i8 %22, ptr %12, align 1 + %21 = trunc i8 %.pre8.i to i1 + %22 = select i1 %21, i8 10, i8 5 + %23 = or i8 %22, %20 + store i8 %23, ptr %12, align 1 tail call void asm sideeffect "", "~{memory},~{dirflag},~{fpsr},~{flags}"() #7, !srcloc !7 tail call void @_ZN21JfrTraceIdLoadBarrier7enqueueEPK5Klass(ptr noundef nonnull %10) #7 tail call void asm sideeffect "", "~{memory},~{dirflag},~{fpsr},~{flags}"() #7, !srcloc !7 @@ -1422,43 +1422,39 @@ _ZN21JfrTraceIdLoadBarrier4loadEPK5Klass.exit.i: ; preds = %19, %11, %8 %23 = phi i8 [ %.pre.i, %19 ], [ %.pre9.i, %11 ], [ %.pre9.i, %8 ] %24 = getelementptr inbounds nuw i8, ptr %3, i64 152 %25 = load i64, ptr %24, align 8 - %26 = trunc i8 %23 to i1 - %27 = select i1 %26, i64 2, i64 1 - %.mask.i.i.i6.i = and i8 %23, 1 - %28 = zext nneg i8 %.mask.i.i.i6.i to i64 - %29 = shl nuw nsw i64 257, %28 - %30 = and i64 %29, %25 - %.not.i7.i = icmp eq i64 %30, %27 - br i1 %.not.i7.i, label %_ZN21JfrTraceIdLoadBarrier4loadEPK15ClassLoaderData.exit, label %31 - -31: ; preds = %_ZN21JfrTraceIdLoadBarrier4loadEPK5Klass.exit.i - %32 = trunc i64 %25 to i8 - %33 = select i1 %26, i8 2, i8 1 - %34 = or i8 %33, %32 - store i8 %34, ptr %24, align 1 + %26 = and i8 %23, 1 + %27 = add nuw nsw i8 %26, 1 + %.mask.i.i.i6.i = zext nneg i8 %28 to i64 + %28 = mul nuw nsw i64 %.mask.i.i.i6.i, 257 + %29 = and i64 %27, %26 + %30 = icmp eq i64 %29, %29 + br i1 %.not.i6.i, label %_ZN21JfrTraceIdLoadBarrier4loadEPK15ClassLoaderData.exit, label %32 + +32: ; preds = %_ZN21JfrTraceIdLoadBarrier4loadEPK5Klass.exit.i + %33 = trunc i64 %26 to i8 + %32 = or i8 %28, %33 + store i8 %32, ptr %25, align 1 tail call void asm sideeffect "", "~{memory},~{dirflag},~{fpsr},~{flags}"() #7, !srcloc !7 tail call void asm sideeffect "", "~{memory},~{dirflag},~{fpsr},~{flags}"() #7, !srcloc !7 store volatile i8 1, ptr @_ZN15JfrTraceIdEpoch10_tag_stateE, align 1 br label %_ZN21JfrTraceIdLoadBarrier4loadEPK15ClassLoaderData.exit -_ZN21JfrTraceIdLoadBarrier4loadEPK15ClassLoaderData.exit: ; preds = %4, %31, %_ZN21JfrTraceIdLoadBarrier4loadEPK5Klass.exit.i, %1 +_ZN21JfrTraceIdLoadBarrier4loadEPK15ClassLoaderData.exit: ; preds = %4, %32, %_ZN21JfrTraceIdLoadBarrier4loadEPK5Klass.exit.i, %1 %35 = getelementptr inbounds nuw i8, ptr %0, i64 72 %36 = load i64, ptr %35, align 8 %37 = load i8, ptr @_ZN15JfrTraceIdEpoch12_epoch_stateE, align 1 - %38 = trunc i8 %37 to i1 - %39 = select i1 %38, i64 2, i64 1 - %.mask.i.i.i = and i8 %37, 1 - %40 = zext nneg i8 %.mask.i.i.i to i64 - %41 = shl nuw nsw i64 257, %40 + %38 = and i8 %37, 1 + %39 = add nuw nsw i8 %38, 1 + %.mask.i.i.i = zext nneg i8 %39 to i64 + %40 = mul nuw nsw i64 %.mask.i.i.i, 257 %42 = and i64 %41, %36 - %.not.i4 = icmp eq i64 %42, %39 + %.not.i4 = icmp eq i64 %42, %40 br i1 %.not.i4, label %_Z16set_used_and_getI11ModuleEntryEmPKT_.exit, label %43 43: ; preds = %_ZN21JfrTraceIdLoadBarrier4loadEPK15ClassLoaderData.exit %44 = trunc i64 %36 to i8 - %45 = select i1 %38, i8 2, i8 1 - %46 = or i8 %45, %44 - store i8 %46, ptr %35, align 1 + %45 = or i8 %39, %44 + store i8 %45, ptr %35, align 1 tail call void asm sideeffect "", "~{memory},~{dirflag},~{fpsr},~{flags}"() #7, !srcloc !7 tail call void asm sideeffect "", "~{memory},~{dirflag},~{fpsr},~{flags}"() #7, !srcloc !7 store volatile i8 1, ptr @_ZN15JfrTraceIdEpoch10_tag_stateE, align 1 @@ -2022,20 +2018,18 @@ _ZN10WriterHostI11EncoderHostI20BigEndianEncoderImplS1_ES0_I20Varint128EncoderIm %77 = getelementptr inbounds nuw i8, ptr %69, i64 32 %78 = load i64, ptr %77, align 8 %79 = load i8, ptr @_ZN15JfrTraceIdEpoch12_epoch_stateE, align 1 - %80 = trunc i8 %79 to i1 - %81 = select i1 %80, i64 2, i64 1 - %.mask.i.i.i.i.i.i.i.i = and i8 %79, 1 - %82 = zext nneg i8 %.mask.i.i.i.i.i.i.i.i to i64 - %83 = shl nuw nsw i64 257, %82 + %80 = and i8 %79, 1 + %81 = add nuw nsw i8 %80, 1 + %.mask.i.i.i.i.i.i.i.i = zext nneg i8 %81 to i64 + %82 = mul nuw nsw i64 %.mask.i.i.i.i.i.i.i.i, 257 %84 = and i64 %83, %78 - %.not.i.i.i.i.i.i = icmp eq i64 %84, %81 + %.not.i.i.i.i.i.i = icmp eq i64 %84, %82 br i1 %.not.i.i.i.i.i.i, label %_ZN10JfrTraceId4loadEPK12PackageEntry.exit.i.i.i, label %85 85: ; preds = %76 %86 = trunc i64 %78 to i8 - %87 = select i1 %80, i8 2, i8 1 - %88 = or i8 %87, %86 - store i8 %88, ptr %77, align 1 + %87 = or i8 %81, %86 + store i8 %87, ptr %77, align 1 call void asm sideeffect "", "~{memory},~{dirflag},~{fpsr},~{flags}"() #7, !srcloc !7 call void asm sideeffect "", "~{memory},~{dirflag},~{fpsr},~{flags}"() #7, !srcloc !7 store volatile i8 1, ptr @_ZN15JfrTraceIdEpoch10_tag_stateE, align 1 diff --git a/bench/openjdk/optimized/jfrPeriodic.ll b/bench/openjdk/optimized/jfrPeriodic.ll index 2e2aad62494..88adc1c6b5e 100644 --- a/bench/openjdk/optimized/jfrPeriodic.ll +++ b/bench/openjdk/optimized/jfrPeriodic.ll @@ -8578,20 +8578,20 @@ define linkonce_odr hidden void @_ZN26EventClassLoaderStatistics9writeDataI15Eve 13: ; preds = %10 %14 = getelementptr inbounds nuw i8, ptr %12, i64 168 %15 = load i64, ptr %14, align 8 - %16 = trunc i8 %.pre9.i.i.i.i to i1 - %17 = select i1 %16, i64 2, i64 1 - %.mask.i.i.i.i.i.i.i = and i8 %.pre9.i.i.i.i, 1 - %18 = zext nneg i8 %.mask.i.i.i.i.i.i.i to i64 - %19 = shl nuw nsw i64 257, %18 + %16 = and i8 %.pre9.i.i.i.i, 1 + %17 = add nuw nsw i8 %16, 1 + %.mask.i.i.i.i.i.i.i = zext nneg i8 %17 to i64 + %18 = mul nuw nsw i64 %.mask.i.i.i.i.i.i.i, 257 %20 = and i64 %15, %19 - %.not.i.i.i.i.i = icmp eq i64 %20, %17 + %.not.i.i.i.i.i = icmp eq i64 %20, %18 br i1 %.not.i.i.i.i.i, label %_ZN21JfrTraceIdLoadBarrier4loadEPK5Klass.exit.i.i.i.i, label %21 21: ; preds = %13 %22 = trunc i64 %15 to i8 - %23 = select i1 %16, i8 10, i8 5 - %24 = or i8 %23, %22 - store i8 %24, ptr %14, align 1 + %23 = trunc i8 %.pre8.i.i.i.i to i1 + %24 = select i1 %23, i8 10, i8 5 + %25 = or i8 %24, %22 + store i8 %25, ptr %14, align 1 tail call void asm sideeffect "", "~{memory},~{dirflag},~{fpsr},~{flags}"() #14, !srcloc !6 tail call void @_ZN21JfrTraceIdLoadBarrier7enqueueEPK5Klass(ptr noundef nonnull %12) #14 tail call void asm sideeffect "", "~{memory},~{dirflag},~{fpsr},~{flags}"() #14, !srcloc !6 @@ -8603,28 +8603,26 @@ _ZN21JfrTraceIdLoadBarrier4loadEPK5Klass.exit.i.i.i.i: ; preds = %21, %13, %10 %25 = phi i8 [ %.pre.i.i.i.i, %21 ], [ %.pre9.i.i.i.i, %13 ], [ %.pre9.i.i.i.i, %10 ] %26 = getelementptr inbounds nuw i8, ptr %4, i64 152 %27 = load i64, ptr %26, align 8 - %28 = trunc i8 %25 to i1 - %29 = select i1 %28, i64 2, i64 1 - %.mask.i.i.i6.i.i.i.i = and i8 %25, 1 - %30 = zext nneg i8 %.mask.i.i.i6.i.i.i.i to i64 - %31 = shl nuw nsw i64 257, %30 - %32 = and i64 %31, %27 - %.not.i7.i.i.i.i = icmp eq i64 %32, %29 - br i1 %.not.i7.i.i.i.i, label %_Z16set_used_and_getI15ClassLoaderDataEmPKT_.exit.i.i.i.i, label %33 - -33: ; preds = %_ZN21JfrTraceIdLoadBarrier4loadEPK5Klass.exit.i.i.i.i - %34 = trunc i64 %27 to i8 - %35 = select i1 %28, i8 2, i8 1 - %36 = or i8 %35, %34 - store i8 %36, ptr %26, align 1 + %28 = and i8 %25, 1 + %29 = add nuw nsw i8 %28, 1 + %.mask.i.i.i6.i.i.i.i = zext nneg i8 %29 to i64 + %30 = mul nuw nsw i64 %.mask.i.i.i6.i.i.i.i, 257 + %31 = and i64 %32, %28 + %32 = icmp eq i64 %31, %31 + br i1 %.not.i6.i.i.i.i, label %_Z16set_used_and_getI15ClassLoaderDataEmPKT_.exit.i.i.i.i, label %34 + +34: ; preds = %_ZN21JfrTraceIdLoadBarrier4loadEPK5Klass.exit.i.i.i.i + %35 = trunc i64 %28 to i8 + %34 = or i8 %30, %35 + store i8 %36, ptr %27, align 1 tail call void asm sideeffect "", "~{memory},~{dirflag},~{fpsr},~{flags}"() #14, !srcloc !6 tail call void asm sideeffect "", "~{memory},~{dirflag},~{fpsr},~{flags}"() #14, !srcloc !6 store volatile i8 1, ptr @_ZN15JfrTraceIdEpoch10_tag_stateE, align 1 %.pre.i8.i.i.i.i = load i64, ptr %26, align 8 br label %_Z16set_used_and_getI15ClassLoaderDataEmPKT_.exit.i.i.i.i -_Z16set_used_and_getI15ClassLoaderDataEmPKT_.exit.i.i.i.i: ; preds = %33, %_ZN21JfrTraceIdLoadBarrier4loadEPK5Klass.exit.i.i.i.i - %37 = phi i64 [ %.pre.i8.i.i.i.i, %33 ], [ %27, %_ZN21JfrTraceIdLoadBarrier4loadEPK5Klass.exit.i.i.i.i ] +_Z16set_used_and_getI15ClassLoaderDataEmPKT_.exit.i.i.i.i: ; preds = %34, %_ZN21JfrTraceIdLoadBarrier4loadEPK5Klass.exit.i.i.i.i + %37 = phi i64 [ %.pre.i8.i.i.i.i, %34 ], [ %27, %_ZN21JfrTraceIdLoadBarrier4loadEPK5Klass.exit.i.i.i.i ] %38 = lshr i64 %37, 16 br label %_ZN10WriterHostI11EncoderHostI20BigEndianEncoderImplS1_ES0_I20Varint128EncoderImplS1_E16MemoryWriterHostI7AdapterI8JfrFlushE8StackObj21ExclusiveAccessAssertEE5writeEPK15ClassLoaderData.exit @@ -8652,20 +8650,20 @@ _ZN10WriterHostI11EncoderHostI20BigEndianEncoderImplS1_ES0_I20Varint128EncoderIm 50: ; preds = %47 %51 = getelementptr inbounds nuw i8, ptr %49, i64 168 %52 = load i64, ptr %51, align 8 - %53 = trunc i8 %.pre9.i.i.i.i11 to i1 - %54 = select i1 %53, i64 2, i64 1 - %.mask.i.i.i.i.i.i.i12 = and i8 %.pre9.i.i.i.i11, 1 - %55 = zext nneg i8 %.mask.i.i.i.i.i.i.i12 to i64 - %56 = shl nuw nsw i64 257, %55 + %53 = and i8 %.pre9.i.i.i.i11, 1 + %54 = add nuw nsw i8 %53, 1 + %.mask.i.i.i.i.i.i.i12 = zext nneg i8 %54 to i64 + %55 = mul nuw nsw i64 %.mask.i.i.i.i.i.i.i12, 257 %57 = and i64 %52, %56 - %.not.i.i.i.i.i13 = icmp eq i64 %57, %54 + %.not.i.i.i.i.i13 = icmp eq i64 %57, %55 br i1 %.not.i.i.i.i.i13, label %_ZN21JfrTraceIdLoadBarrier4loadEPK5Klass.exit.i.i.i.i15, label %58 58: ; preds = %50 %59 = trunc i64 %52 to i8 - %60 = select i1 %53, i8 10, i8 5 - %61 = or i8 %60, %59 - store i8 %61, ptr %51, align 1 + %60 = trunc i8 %.pre8.i.i.i.i11 to i1 + %61 = select i1 %60, i8 10, i8 5 + %62 = or i8 %61, %59 + store i8 %62, ptr %51, align 1 tail call void asm sideeffect "", "~{memory},~{dirflag},~{fpsr},~{flags}"() #14, !srcloc !6 tail call void @_ZN21JfrTraceIdLoadBarrier7enqueueEPK5Klass(ptr noundef nonnull %49) #14 tail call void asm sideeffect "", "~{memory},~{dirflag},~{fpsr},~{flags}"() #14, !srcloc !6 @@ -8677,28 +8675,26 @@ _ZN21JfrTraceIdLoadBarrier4loadEPK5Klass.exit.i.i.i.i15: ; preds = %58, %50, %47 %62 = phi i8 [ %.pre.i.i.i.i14, %58 ], [ %.pre9.i.i.i.i11, %50 ], [ %.pre9.i.i.i.i11, %47 ] %63 = getelementptr inbounds nuw i8, ptr %41, i64 152 %64 = load i64, ptr %63, align 8 - %65 = trunc i8 %62 to i1 - %66 = select i1 %65, i64 2, i64 1 - %.mask.i.i.i6.i.i.i.i16 = and i8 %62, 1 - %67 = zext nneg i8 %.mask.i.i.i6.i.i.i.i16 to i64 - %68 = shl nuw nsw i64 257, %67 - %69 = and i64 %68, %64 - %.not.i7.i.i.i.i17 = icmp eq i64 %69, %66 - br i1 %.not.i7.i.i.i.i17, label %_Z16set_used_and_getI15ClassLoaderDataEmPKT_.exit.i.i.i.i19, label %70 - -70: ; preds = %_ZN21JfrTraceIdLoadBarrier4loadEPK5Klass.exit.i.i.i.i15 - %71 = trunc i64 %64 to i8 - %72 = select i1 %65, i8 2, i8 1 - %73 = or i8 %72, %71 - store i8 %73, ptr %63, align 1 + %65 = and i8 %62, 1 + %66 = add nuw nsw i8 %65, 1 + %.mask.i.i.i6.i.i.i.i16 = zext nneg i8 %67 to i64 + %67 = mul nuw nsw i64 %.mask.i.i.i6.i.i.i.i16, 257 + %68 = and i64 %67, %65 + %69 = icmp eq i64 %68, %68 + br i1 %.not.i6.i.i.i.i15, label %_Z16set_used_and_getI15ClassLoaderDataEmPKT_.exit.i.i.i.i19, label %71 + +71: ; preds = %_ZN21JfrTraceIdLoadBarrier4loadEPK5Klass.exit.i.i.i.i14 + %72 = trunc i64 %65 to i8 + %71 = or i8 %67, %72 + store i8 %73, ptr %64, align 1 tail call void asm sideeffect "", "~{memory},~{dirflag},~{fpsr},~{flags}"() #14, !srcloc !6 tail call void asm sideeffect "", "~{memory},~{dirflag},~{fpsr},~{flags}"() #14, !srcloc !6 store volatile i8 1, ptr @_ZN15JfrTraceIdEpoch10_tag_stateE, align 1 %.pre.i8.i.i.i.i18 = load i64, ptr %63, align 8 br label %_Z16set_used_and_getI15ClassLoaderDataEmPKT_.exit.i.i.i.i19 -_Z16set_used_and_getI15ClassLoaderDataEmPKT_.exit.i.i.i.i19: ; preds = %70, %_ZN21JfrTraceIdLoadBarrier4loadEPK5Klass.exit.i.i.i.i15 - %74 = phi i64 [ %.pre.i8.i.i.i.i18, %70 ], [ %64, %_ZN21JfrTraceIdLoadBarrier4loadEPK5Klass.exit.i.i.i.i15 ] +_Z16set_used_and_getI15ClassLoaderDataEmPKT_.exit.i.i.i.i19: ; preds = %71, %_ZN21JfrTraceIdLoadBarrier4loadEPK5Klass.exit.i.i.i.i15 + %74 = phi i64 [ %.pre.i8.i.i.i.i18, %71 ], [ %64, %_ZN21JfrTraceIdLoadBarrier4loadEPK5Klass.exit.i.i.i.i15 ] %75 = lshr i64 %74, 16 br label %_ZN10WriterHostI11EncoderHostI20BigEndianEncoderImplS1_ES0_I20Varint128EncoderImplS1_E16MemoryWriterHostI7AdapterI8JfrFlushE8StackObj21ExclusiveAccessAssertEE5writeEPK15ClassLoaderData.exit20 diff --git a/bench/openjdk/optimized/metaspaceTracer.ll b/bench/openjdk/optimized/metaspaceTracer.ll index 848a1bd0319..e0a70d7ada3 100644 --- a/bench/openjdk/optimized/metaspaceTracer.ll +++ b/bench/openjdk/optimized/metaspaceTracer.ll @@ -1774,20 +1774,20 @@ define linkonce_odr hidden void @_ZN31EventMetaspaceAllocationFailure9writeDataI 14: ; preds = %11 %15 = getelementptr inbounds nuw i8, ptr %13, i64 168 %16 = load i64, ptr %15, align 8 - %17 = trunc i8 %.pre9.i.i.i.i to i1 - %18 = select i1 %17, i64 2, i64 1 - %.mask.i.i.i.i.i.i.i = and i8 %.pre9.i.i.i.i, 1 - %19 = zext nneg i8 %.mask.i.i.i.i.i.i.i to i64 - %20 = shl nuw nsw i64 257, %19 + %17 = and i8 %.pre9.i.i.i.i, 1 + %18 = add nuw nsw i8 %17, 1 + %.mask.i.i.i.i.i.i.i = zext nneg i8 %18 to i64 + %19 = mul nuw nsw i64 %.mask.i.i.i.i.i.i.i, 257 %21 = and i64 %16, %20 - %.not.i.i.i.i.i = icmp eq i64 %21, %18 + %.not.i.i.i.i.i = icmp eq i64 %21, %19 br i1 %.not.i.i.i.i.i, label %_ZN21JfrTraceIdLoadBarrier4loadEPK5Klass.exit.i.i.i.i, label %22 22: ; preds = %14 %23 = trunc i64 %16 to i8 - %24 = select i1 %17, i8 10, i8 5 - %25 = or i8 %24, %23 - store i8 %25, ptr %15, align 1 + %24 = trunc i8 %.pre8.i.i.i.i to i1 + %25 = select i1 %24, i8 10, i8 5 + %26 = or i8 %25, %23 + store i8 %26, ptr %15, align 1 tail call void asm sideeffect "", "~{memory},~{dirflag},~{fpsr},~{flags}"() #7, !srcloc !7 tail call void @_ZN21JfrTraceIdLoadBarrier7enqueueEPK5Klass(ptr noundef nonnull %13) #7 tail call void asm sideeffect "", "~{memory},~{dirflag},~{fpsr},~{flags}"() #7, !srcloc !7 @@ -1799,28 +1799,26 @@ _ZN21JfrTraceIdLoadBarrier4loadEPK5Klass.exit.i.i.i.i: ; preds = %22, %14, %11 %26 = phi i8 [ %.pre.i.i.i.i, %22 ], [ %.pre9.i.i.i.i, %14 ], [ %.pre9.i.i.i.i, %11 ] %27 = getelementptr inbounds nuw i8, ptr %5, i64 152 %28 = load i64, ptr %27, align 8 - %29 = trunc i8 %26 to i1 - %30 = select i1 %29, i64 2, i64 1 - %.mask.i.i.i6.i.i.i.i = and i8 %26, 1 - %31 = zext nneg i8 %.mask.i.i.i6.i.i.i.i to i64 - %32 = shl nuw nsw i64 257, %31 - %33 = and i64 %32, %28 - %.not.i7.i.i.i.i = icmp eq i64 %33, %30 - br i1 %.not.i7.i.i.i.i, label %_Z16set_used_and_getI15ClassLoaderDataEmPKT_.exit.i.i.i.i, label %34 - -34: ; preds = %_ZN21JfrTraceIdLoadBarrier4loadEPK5Klass.exit.i.i.i.i - %35 = trunc i64 %28 to i8 - %36 = select i1 %29, i8 2, i8 1 - %37 = or i8 %36, %35 - store i8 %37, ptr %27, align 1 + %29 = and i8 %26, 1 + %30 = add nuw nsw i8 %29, 1 + %.mask.i.i.i6.i.i.i.i = zext nneg i8 %31 to i64 + %31 = mul nuw nsw i64 %.mask.i.i.i6.i.i.i.i, 257 + %32 = and i64 %33, %29 + %33 = icmp eq i64 %32, %32 + br i1 %.not.i6.i.i.i.i, label %_Z16set_used_and_getI15ClassLoaderDataEmPKT_.exit.i.i.i.i, label %35 + +35: ; preds = %_ZN21JfrTraceIdLoadBarrier4loadEPK5Klass.exit.i.i.i.i + %36 = trunc i64 %29 to i8 + %35 = or i8 %31, %36 + store i8 %37, ptr %28, align 1 tail call void asm sideeffect "", "~{memory},~{dirflag},~{fpsr},~{flags}"() #7, !srcloc !7 tail call void asm sideeffect "", "~{memory},~{dirflag},~{fpsr},~{flags}"() #7, !srcloc !7 store volatile i8 1, ptr @_ZN15JfrTraceIdEpoch10_tag_stateE, align 1 %.pre.i8.i.i.i.i = load i64, ptr %27, align 8 br label %_Z16set_used_and_getI15ClassLoaderDataEmPKT_.exit.i.i.i.i -_Z16set_used_and_getI15ClassLoaderDataEmPKT_.exit.i.i.i.i: ; preds = %34, %_ZN21JfrTraceIdLoadBarrier4loadEPK5Klass.exit.i.i.i.i - %38 = phi i64 [ %.pre.i8.i.i.i.i, %34 ], [ %28, %_ZN21JfrTraceIdLoadBarrier4loadEPK5Klass.exit.i.i.i.i ] +_Z16set_used_and_getI15ClassLoaderDataEmPKT_.exit.i.i.i.i: ; preds = %35, %_ZN21JfrTraceIdLoadBarrier4loadEPK5Klass.exit.i.i.i.i + %38 = phi i64 [ %.pre.i8.i.i.i.i, %35 ], [ %28, %_ZN21JfrTraceIdLoadBarrier4loadEPK5Klass.exit.i.i.i.i ] %39 = lshr i64 %38, 16 br label %_ZN10WriterHostI11EncoderHostI20BigEndianEncoderImplS1_ES0_I20Varint128EncoderImplS1_E16MemoryWriterHostI7AdapterI8JfrFlushE8StackObj21ExclusiveAccessAssertEE5writeEPK15ClassLoaderData.exit @@ -2126,20 +2124,20 @@ define linkonce_odr hidden void @_ZN17EventMetaspaceOOM9writeDataI15EventWriterH 14: ; preds = %11 %15 = getelementptr inbounds nuw i8, ptr %13, i64 168 %16 = load i64, ptr %15, align 8 - %17 = trunc i8 %.pre9.i.i.i.i to i1 - %18 = select i1 %17, i64 2, i64 1 - %.mask.i.i.i.i.i.i.i = and i8 %.pre9.i.i.i.i, 1 - %19 = zext nneg i8 %.mask.i.i.i.i.i.i.i to i64 - %20 = shl nuw nsw i64 257, %19 + %17 = and i8 %.pre9.i.i.i.i, 1 + %18 = add nuw nsw i8 %17, 1 + %.mask.i.i.i.i.i.i.i = zext nneg i8 %18 to i64 + %19 = mul nuw nsw i64 %.mask.i.i.i.i.i.i.i, 257 %21 = and i64 %16, %20 - %.not.i.i.i.i.i = icmp eq i64 %21, %18 + %.not.i.i.i.i.i = icmp eq i64 %21, %19 br i1 %.not.i.i.i.i.i, label %_ZN21JfrTraceIdLoadBarrier4loadEPK5Klass.exit.i.i.i.i, label %22 22: ; preds = %14 %23 = trunc i64 %16 to i8 - %24 = select i1 %17, i8 10, i8 5 - %25 = or i8 %24, %23 - store i8 %25, ptr %15, align 1 + %24 = trunc i8 %.pre8.i.i.i.i to i1 + %25 = select i1 %24, i8 10, i8 5 + %26 = or i8 %25, %23 + store i8 %26, ptr %15, align 1 tail call void asm sideeffect "", "~{memory},~{dirflag},~{fpsr},~{flags}"() #7, !srcloc !7 tail call void @_ZN21JfrTraceIdLoadBarrier7enqueueEPK5Klass(ptr noundef nonnull %13) #7 tail call void asm sideeffect "", "~{memory},~{dirflag},~{fpsr},~{flags}"() #7, !srcloc !7 @@ -2151,28 +2149,26 @@ _ZN21JfrTraceIdLoadBarrier4loadEPK5Klass.exit.i.i.i.i: ; preds = %22, %14, %11 %26 = phi i8 [ %.pre.i.i.i.i, %22 ], [ %.pre9.i.i.i.i, %14 ], [ %.pre9.i.i.i.i, %11 ] %27 = getelementptr inbounds nuw i8, ptr %5, i64 152 %28 = load i64, ptr %27, align 8 - %29 = trunc i8 %26 to i1 - %30 = select i1 %29, i64 2, i64 1 - %.mask.i.i.i6.i.i.i.i = and i8 %26, 1 - %31 = zext nneg i8 %.mask.i.i.i6.i.i.i.i to i64 - %32 = shl nuw nsw i64 257, %31 - %33 = and i64 %32, %28 - %.not.i7.i.i.i.i = icmp eq i64 %33, %30 - br i1 %.not.i7.i.i.i.i, label %_Z16set_used_and_getI15ClassLoaderDataEmPKT_.exit.i.i.i.i, label %34 - -34: ; preds = %_ZN21JfrTraceIdLoadBarrier4loadEPK5Klass.exit.i.i.i.i - %35 = trunc i64 %28 to i8 - %36 = select i1 %29, i8 2, i8 1 - %37 = or i8 %36, %35 - store i8 %37, ptr %27, align 1 + %29 = and i8 %26, 1 + %30 = add nuw nsw i8 %29, 1 + %.mask.i.i.i6.i.i.i.i = zext nneg i8 %31 to i64 + %31 = mul nuw nsw i64 %.mask.i.i.i6.i.i.i.i, 257 + %32 = and i64 %33, %29 + %33 = icmp eq i64 %32, %32 + br i1 %.not.i6.i.i.i.i, label %_Z16set_used_and_getI15ClassLoaderDataEmPKT_.exit.i.i.i.i, label %35 + +35: ; preds = %_ZN21JfrTraceIdLoadBarrier4loadEPK5Klass.exit.i.i.i.i + %36 = trunc i64 %29 to i8 + %35 = or i8 %31, %36 + store i8 %37, ptr %28, align 1 tail call void asm sideeffect "", "~{memory},~{dirflag},~{fpsr},~{flags}"() #7, !srcloc !7 tail call void asm sideeffect "", "~{memory},~{dirflag},~{fpsr},~{flags}"() #7, !srcloc !7 store volatile i8 1, ptr @_ZN15JfrTraceIdEpoch10_tag_stateE, align 1 %.pre.i8.i.i.i.i = load i64, ptr %27, align 8 br label %_Z16set_used_and_getI15ClassLoaderDataEmPKT_.exit.i.i.i.i -_Z16set_used_and_getI15ClassLoaderDataEmPKT_.exit.i.i.i.i: ; preds = %34, %_ZN21JfrTraceIdLoadBarrier4loadEPK5Klass.exit.i.i.i.i - %38 = phi i64 [ %.pre.i8.i.i.i.i, %34 ], [ %28, %_ZN21JfrTraceIdLoadBarrier4loadEPK5Klass.exit.i.i.i.i ] +_Z16set_used_and_getI15ClassLoaderDataEmPKT_.exit.i.i.i.i: ; preds = %35, %_ZN21JfrTraceIdLoadBarrier4loadEPK5Klass.exit.i.i.i.i + %38 = phi i64 [ %.pre.i8.i.i.i.i, %35 ], [ %28, %_ZN21JfrTraceIdLoadBarrier4loadEPK5Klass.exit.i.i.i.i ] %39 = lshr i64 %38, 16 br label %_ZN10WriterHostI11EncoderHostI20BigEndianEncoderImplS1_ES0_I20Varint128EncoderImplS1_E16MemoryWriterHostI7AdapterI8JfrFlushE8StackObj21ExclusiveAccessAssertEE5writeEPK15ClassLoaderData.exit diff --git a/bench/openjdk/optimized/objectSampleCheckpoint.ll b/bench/openjdk/optimized/objectSampleCheckpoint.ll index 9d61b68a94f..8daaaa6dd09 100644 --- a/bench/openjdk/optimized/objectSampleCheckpoint.ll +++ b/bench/openjdk/optimized/objectSampleCheckpoint.ll @@ -1119,20 +1119,18 @@ define hidden void @_ZN22ObjectSampleCheckpoint16add_to_leakp_setEPK13InstanceKl %54 = load i16, ptr %53, align 2 %55 = zext i16 %54 to i64 %56 = load i8, ptr @_ZN15JfrTraceIdEpoch12_epoch_stateE, align 1 - %57 = trunc i8 %56 to i1 - %58 = select i1 %57, i64 2, i64 1 - %.mask.i.i.i.i = and i8 %56, 1 - %59 = zext nneg i8 %.mask.i.i.i.i to i64 - %60 = shl nuw nsw i64 257, %59 + %57 = and i8 %56, 1 + %58 = add nuw nsw i8 %57, 1 + %.mask.i.i.i.i = zext nneg i8 %58 to i64 + %59 = mul nuw nsw i64 %.mask.i.i.i.i, 257 %61 = and i64 %60, %55 - %.not.i.i = icmp eq i64 %61, %58 + %.not.i.i = icmp eq i64 %61, %59 br i1 %.not.i.i, label %_ZN10JfrTraceId10load_leakpEPK5KlassPK6Method.exit, label %62 62: ; preds = %51 %63 = trunc i16 %54 to i8 - %64 = select i1 %57, i8 2, i8 1 - %65 = or i8 %64, %63 - store i8 %65, ptr %53, align 1 + %64 = or i8 %58, %63 + store i8 %64, ptr %53, align 1 tail call void asm sideeffect "", "~{memory},~{dirflag},~{fpsr},~{flags}"() #11, !srcloc !10 br label %_ZN10JfrTraceId10load_leakpEPK5KlassPK6Method.exit @@ -2043,22 +2041,22 @@ _ZNK7oopDesc5klassEv.exit.i: ; preds = %23, %13 %25 = getelementptr inbounds nuw i8, ptr %.0.i.i, i64 168 %26 = load i64, ptr %25, align 8 %27 = load i8, ptr @_ZN15JfrTraceIdEpoch12_epoch_stateE, align 1 - %28 = trunc i8 %27 to i1 - %29 = select i1 %28, i64 2, i64 1 - %.mask.i.i.i.i.i.i = and i8 %27, 1 - %30 = zext nneg i8 %.mask.i.i.i.i.i.i to i64 - %31 = shl nuw nsw i64 257, %30 + %28 = and i8 %27, 1 + %29 = add nuw nsw i8 %28, 1 + %.mask.i.i.i.i.i.i = zext nneg i8 %29 to i64 + %30 = mul nuw nsw i64 %.mask.i.i.i.i.i.i, 257 %32 = and i64 %31, %26 - %.not.i.i.i.i = icmp eq i64 %32, %29 + %.not.i.i.i.i = icmp eq i64 %32, %30 %33 = lshr i64 %26, 8 %34 = trunc i64 %33 to i8 br i1 %.not.i.i.i.i, label %_ZN10JfrTraceId10load_leakpEPK5Klass.exit.i, label %35 35: ; preds = %_ZNK7oopDesc5klassEv.exit.i %36 = trunc i64 %26 to i8 - %37 = select i1 %28, i8 10, i8 5 - %38 = or i8 %37, %36 - store i8 %38, ptr %25, align 1 + %37 = trunc i8 %27 to i1 + %38 = select i1 %37, i8 10, i8 5 + %39 = or i8 %38, %36 + store i8 %39, ptr %25, align 1 tail call void asm sideeffect "", "~{memory},~{dirflag},~{fpsr},~{flags}"() #11, !srcloc !10 tail call void @_ZN21JfrTraceIdLoadBarrier7enqueueEPK5Klass(ptr noundef nonnull %.0.i.i) #11 tail call void asm sideeffect "", "~{memory},~{dirflag},~{fpsr},~{flags}"() #11, !srcloc !10 diff --git a/bench/openmpi/optimized/plm_base_launch_support.ll b/bench/openmpi/optimized/plm_base_launch_support.ll index f51f9a71b68..ac4edea6ff8 100644 --- a/bench/openmpi/optimized/plm_base_launch_support.ll +++ b/bench/openmpi/optimized/plm_base_launch_support.ll @@ -9835,7 +9835,7 @@ pmix_obj_run_destructors.exit527: ; preds = %.lr.ph.i524, %992 call void @free(ptr noundef nonnull %945) #17 br label %.backedge -.backedge: ; preds = %1130, %pmix_obj_update.exit411, %1005, %1003, %1117 +.backedge: ; preds = %1130, %pmix_obj_update.exit411, %1005, %1003, %1116 %.1311.be = add nuw nsw i32 %.1311635, 1 %1006 = load volatile i64, ptr %932, align 8, !tbaa !165 %1007 = icmp eq i64 %1006, 0 @@ -10048,42 +10048,41 @@ pmix_obj_update.exit: ; preds = %pmix_obj_update.exi store i32 %1104, ptr %1102, align 8, !tbaa !78 %1105 = call i32 @pthread_mutex_unlock(ptr noundef nonnull %945) #17 %1106 = load i8, ptr getelementptr inbounds nuw (i8, ptr @prte_plm_globals, i64 72), align 8, !tbaa !218, !range !50, !noundef !51 - %1107 = trunc nuw i8 %1106 to i1 - %1108 = getelementptr inbounds nuw i8, ptr %945, i64 248 - %1109 = load i8, ptr %1108, align 8, !tbaa !27 - %1110 = and i8 %1109, -3 - %masksel = select i1 %1107, i8 2, i8 0 - %.sink = or disjoint i8 %1110, %masksel - store i8 %.sink, ptr %1108, align 8, !tbaa !27 - %1111 = load i32, ptr %940, align 8, !tbaa !201 - %1112 = add nsw i32 %1111, 1 - store i32 %1112, ptr %940, align 8, !tbaa !201 - %1113 = load i32, ptr %941, align 4, !tbaa !219 - %1114 = icmp eq i32 %1113, -4 - br i1 %1114, label %1115, label %1117 - -1115: ; preds = %pmix_obj_update.exit - %1116 = load i32, ptr %1057, align 8, !tbaa !115 - store i32 %1116, ptr %941, align 4, !tbaa !219 - br label %1117 - -1117: ; preds = %1115, %pmix_obj_update.exit - %1118 = getelementptr inbounds nuw i8, ptr %945, i64 208 - %1119 = load ptr, ptr %1118, align 8, !tbaa !220 - %1120 = getelementptr inbounds nuw i8, ptr %1119, i64 128 - %1121 = load i32, ptr %1120, align 8, !tbaa !39 - %1122 = icmp sgt i32 %1121, 0 - br i1 %1122, label %pmix_pointer_array_get_item.exit544.lr.ph, label %.backedge, !llvm.loop !217 - -pmix_pointer_array_get_item.exit544.lr.ph: ; preds = %1117 - %1123 = getelementptr inbounds nuw i8, ptr %1119, i64 152 - %1124 = load ptr, ptr %1123, align 8, !tbaa !42 - %wide.trip.count = zext nneg i32 %1121 to i64 + %1107 = getelementptr inbounds nuw i8, ptr %945, i64 248 + %1108 = load i8, ptr %1107, align 8, !tbaa !27 + %1109 = and i8 %1108, -3 + %1110 = shl nuw nsw i8 %1106, 1 + %masksel = or disjoint i8 %1109, %1110 + store i8 %.sink, ptr %1107, align 8, !tbaa !27 + %1110 = load i32, ptr %940, align 8, !tbaa !201 + %1111 = add nsw i32 %1110, 1 + store i32 %1111, ptr %940, align 8, !tbaa !201 + %1112 = load i32, ptr %941, align 4, !tbaa !219 + %1113 = icmp eq i32 %1112, -4 + br i1 %1113, label %1114, label %1116 + +1114: ; preds = %pmix_obj_update.exit + %1115 = load i32, ptr %1057, align 8, !tbaa !115 + store i32 %1115, ptr %941, align 4, !tbaa !219 + br label %1116 + +1116: ; preds = %1114, %pmix_obj_update.exit + %1117 = getelementptr inbounds nuw i8, ptr %945, i64 208 + %1118 = load ptr, ptr %1117, align 8, !tbaa !220 + %1119 = getelementptr inbounds nuw i8, ptr %1118, i64 128 + %1120 = load i32, ptr %1119, align 8, !tbaa !39 + %1121 = icmp sgt i32 %1120, 0 + br i1 %1121, label %pmix_pointer_array_get_item.exit544.lr.ph, label %.backedge, !llvm.loop !217 + +pmix_pointer_array_get_item.exit544.lr.ph: ; preds = %1116 + %1122 = getelementptr inbounds nuw i8, ptr %1118, i64 152 + %1123 = load ptr, ptr %1122, align 8, !tbaa !42 + %1124 = zext nneg i32 %1120 to i64 br label %pmix_pointer_array_get_item.exit544 pmix_pointer_array_get_item.exit544: ; preds = %pmix_pointer_array_get_item.exit544.lr.ph, %1130 %indvars.iv685 = phi i64 [ 0, %pmix_pointer_array_get_item.exit544.lr.ph ], [ %indvars.iv.next686, %1130 ] - %1125 = getelementptr inbounds nuw ptr, ptr %1124, i64 %indvars.iv685 + %1125 = getelementptr inbounds nuw ptr, ptr %1123, i64 %indvars.iv685 %1126 = load ptr, ptr %1125, align 8, !tbaa !43 %.not394 = icmp eq ptr %1126, null br i1 %.not394, label %1130, label %1127 diff --git a/bench/openvdb/optimized/SignedFloodFill.ll b/bench/openvdb/optimized/SignedFloodFill.ll index e09fb281905..b5708b122f3 100644 --- a/bench/openvdb/optimized/SignedFloodFill.ll +++ b/bench/openvdb/optimized/SignedFloodFill.ll @@ -7215,11 +7215,12 @@ if.then8: ; preds = %_ZNK7openvdb5v11_04 %arrayidx = getelementptr inbounds nuw float, ptr %retval.0.i.i.i, i64 %idxprom %7 = load float, ptr %arrayidx, align 4 %cmp9 = fcmp olt float %7, 0.000000e+00 + %frombool = zext i1 %cmp9 to i8 br label %for.body for.body: ; preds = %if.then8, %for.inc53 %indvars.iv65 = phi i64 [ 0, %if.then8 ], [ %indvars.iv.next66, %for.inc53 ] - %xInside.054 = phi i1 [ %cmp9, %if.then8 ], [ %xInside.1, %for.inc53 ] + %xInside.054 = phi i8 [ %frombool, %if.then8 ], [ %xInside.1, %for.inc53 ] %8 = shl i64 %indvars.iv65, 6 %arrayidx.i = getelementptr inbounds nuw [8 x i64], ptr %mValueMask.i, i64 0, i64 %indvars.iv65 %9 = load i64, ptr %arrayidx.i, align 8 @@ -7231,15 +7232,16 @@ if.then15: ; preds = %for.body %arrayidx17 = getelementptr inbounds nuw float, ptr %retval.0.i.i.i, i64 %8 %10 = load float, ptr %arrayidx17, align 4 %cmp18 = fcmp olt float %10, 0.000000e+00 + %frombool19 = zext i1 %cmp18 to i8 br label %if.end20 if.end20: ; preds = %if.then15, %for.body - %xInside.1 = phi i1 [ %cmp18, %if.then15 ], [ %xInside.054, %for.body ] + %xInside.1 = phi i8 [ %frombool19, %if.then15 ], [ %xInside.054, %for.body ] br label %for.body25 for.body25: ; preds = %if.end20, %for.inc50 %indvars.iv60 = phi i64 [ 0, %if.end20 ], [ %indvars.iv.next61, %for.inc50 ] - %yInside.052 = phi i1 [ %xInside.1, %if.end20 ], [ %yInside.1, %for.inc50 ] + %yInside.052 = phi i8 [ %xInside.1, %if.end20 ], [ %yInside.1, %for.inc50 ] %11 = shl i64 %indvars.iv60, 3 %12 = add nuw nsw i64 %11, %8 %shr.i28 = lshr i64 %12, 6 @@ -7255,15 +7257,17 @@ if.then28: ; preds = %for.body25 %arrayidx30 = getelementptr inbounds nuw float, ptr %retval.0.i.i.i, i64 %12 %14 = load float, ptr %arrayidx30, align 4 %cmp31 = fcmp olt float %14, 0.000000e+00 + %frombool32 = zext i1 %cmp31 to i8 br label %if.end33 if.end33: ; preds = %if.then28, %for.body25 - %yInside.1 = phi i1 [ %cmp31, %if.then28 ], [ %yInside.052, %for.body25 ] + %yInside.1 = phi i8 [ %frombool32, %if.then28 ], [ %yInside.052, %for.body25 ] + %frombool35 = and i8 %yInside.1, 1 br label %for.body38 for.body38: ; preds = %if.end33, %for.inc %indvars.iv = phi i64 [ 0, %if.end33 ], [ %indvars.iv.next, %for.inc ] - %zInside.049 = phi i1 [ %yInside.1, %if.end33 ], [ %zInside.1, %for.inc ] + %zInside.049 = phi i8 [ %frombool35, %if.end33 ], [ %zInside.1, %for.inc ] %15 = add nuw nsw i64 %indvars.iv, %12 %shr.i36 = lshr i64 %15, 6 %idxprom.i37 = and i64 %shr.i36, 67108863 @@ -7279,10 +7283,12 @@ if.then41: ; preds = %for.body38 %arrayidx43 = getelementptr inbounds nuw float, ptr %retval.0.i.i.i, i64 %15 %18 = load float, ptr %arrayidx43, align 4 %cmp44 = fcmp olt float %18, 0.000000e+00 + %frombool45 = zext i1 %cmp44 to i8 br label %for.inc if.else: ; preds = %for.body38 - %cond.in.idx = select i1 %zInside.049, i64 4, i64 0 + %cond.in.idx = shl nuw nsw i8 %zInside.049, 2 + %cond.in.idx = zext nneg i8 %19 to i64 %cond.in = getelementptr inbounds nuw i8, ptr %this, i64 %cond.in.idx %cond = load float, ptr %cond.in, align 4 %arrayidx48 = getelementptr inbounds nuw float, ptr %retval.0.i.i.i, i64 %15 @@ -7290,7 +7296,7 @@ if.else: ; preds = %for.body38 br label %for.inc for.inc: ; preds = %if.then41, %if.else - %zInside.1 = phi i1 [ %cmp44, %if.then41 ], [ %zInside.049, %if.else ] + %zInside.1 = phi i8 [ %frombool45, %if.then41 ], [ %zInside.049, %if.else ] %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %cmp37.not = icmp eq i64 %indvars.iv.next, 8 br i1 %cmp37.not, label %for.inc50, label %for.body38, !llvm.loop !67 @@ -9715,11 +9721,12 @@ _ZNK7openvdb5v11_04tree8LeafNodeIfLj3EE13getFirstValueEv.exit: ; preds = %if.the %retval.0.i.i.i = select i1 %tobool.not.i.i.i, ptr @_ZZNK7openvdb5v11_04tree10LeafBufferIfLj3EE2atEjE5sZero, ptr %6 %7 = load float, ptr %retval.0.i.i.i, align 4 %cmp8 = fcmp olt float %7, 0.000000e+00 + %frombool = zext i1 %cmp8 to i8 br label %for.body for.body: ; preds = %_ZNK7openvdb5v11_04tree8LeafNodeIfLj3EE13getFirstValueEv.exit, %for.inc58 %indvars.iv85 = phi i64 [ 0, %_ZNK7openvdb5v11_04tree8LeafNodeIfLj3EE13getFirstValueEv.exit ], [ %indvars.iv.next86, %for.inc58 ] - %xInside.074 = phi i1 [ %cmp8, %_ZNK7openvdb5v11_04tree8LeafNodeIfLj3EE13getFirstValueEv.exit ], [ %xInside.1, %for.inc58 ] + %xInside.074 = phi i8 [ %frombool, %_ZNK7openvdb5v11_04tree8LeafNodeIfLj3EE13getFirstValueEv.exit ], [ %xInside.1, %for.inc58 ] %8 = shl i64 %indvars.iv85, 8 %9 = lshr exact i64 %8, 6 %arrayidx.i = getelementptr inbounds nuw [64 x i64], ptr %mChildMask.i, i64 0, i64 %9 @@ -9747,15 +9754,16 @@ _ZNK7openvdb5v11_04tree8LeafNodeIfLj3EE12getLastValueEv.exit: ; preds = %if.then %retval.0.i.i.i33 = select i1 %tobool.not.i.i.i32, ptr @_ZZNK7openvdb5v11_04tree10LeafBufferIfLj3EE2atEjE5sZero, ptr %arrayidx.i.i.i %14 = load float, ptr %retval.0.i.i.i33, align 4 %cmp19 = fcmp olt float %14, 0.000000e+00 + %frombool20 = zext i1 %cmp19 to i8 br label %if.end21 if.end21: ; preds = %_ZNK7openvdb5v11_04tree8LeafNodeIfLj3EE12getLastValueEv.exit, %for.body - %xInside.1 = phi i1 [ %cmp19, %_ZNK7openvdb5v11_04tree8LeafNodeIfLj3EE12getLastValueEv.exit ], [ %xInside.074, %for.body ] + %xInside.1 = phi i8 [ %frombool20, %_ZNK7openvdb5v11_04tree8LeafNodeIfLj3EE12getLastValueEv.exit ], [ %xInside.074, %for.body ] br label %for.body26 for.body26: ; preds = %if.end21, %for.inc55 %indvars.iv81 = phi i64 [ 0, %if.end21 ], [ %indvars.iv.next82, %for.inc55 ] - %yInside.072 = phi i1 [ %xInside.1, %if.end21 ], [ %yInside.1, %for.inc55 ] + %yInside.072 = phi i8 [ %xInside.1, %if.end21 ], [ %yInside.1, %for.inc55 ] %15 = shl i64 %indvars.iv81, 4 %16 = add nuw nsw i64 %15, %8 %shr.i34 = lshr i64 %16, 6 @@ -9787,15 +9795,17 @@ _ZNK7openvdb5v11_04tree8LeafNodeIfLj3EE12getLastValueEv.exit48: ; preds = %if.th %retval.0.i.i.i47 = select i1 %tobool.not.i.i.i45, ptr @_ZZNK7openvdb5v11_04tree10LeafBufferIfLj3EE2atEjE5sZero, ptr %arrayidx.i.i.i46 %21 = load float, ptr %retval.0.i.i.i47, align 4 %cmp34 = fcmp olt float %21, 0.000000e+00 + %frombool35 = zext i1 %cmp34 to i8 br label %if.end36 if.end36: ; preds = %_ZNK7openvdb5v11_04tree8LeafNodeIfLj3EE12getLastValueEv.exit48, %for.body26 - %yInside.1 = phi i1 [ %cmp34, %_ZNK7openvdb5v11_04tree8LeafNodeIfLj3EE12getLastValueEv.exit48 ], [ %yInside.072, %for.body26 ] + %yInside.1 = phi i8 [ %frombool35, %_ZNK7openvdb5v11_04tree8LeafNodeIfLj3EE12getLastValueEv.exit48 ], [ %yInside.072, %for.body26 ] + %frombool38 = and i8 %yInside.1, 1 br label %for.body41 for.body41: ; preds = %if.end36, %for.inc %indvars.iv = phi i64 [ 0, %if.end36 ], [ %indvars.iv.next, %for.inc ] - %zInside.069 = phi i1 [ %yInside.1, %if.end36 ], [ %zInside.1, %for.inc ] + %zInside.069 = phi i8 [ %frombool38, %if.end36 ], [ %zInside.1, %for.inc ] %22 = add nuw nsw i64 %indvars.iv, %16 %shr.i49 = lshr i64 %22, 6 %idxprom.i50 = and i64 %shr.i49, 67108863 @@ -9826,17 +9836,19 @@ _ZNK7openvdb5v11_04tree8LeafNodeIfLj3EE12getLastValueEv.exit63: ; preds = %if.th %retval.0.i.i.i62 = select i1 %tobool.not.i.i.i60, ptr @_ZZNK7openvdb5v11_04tree10LeafBufferIfLj3EE2atEjE5sZero, ptr %arrayidx.i.i.i61 %28 = load float, ptr %retval.0.i.i.i62, align 4 %cmp49 = fcmp olt float %28, 0.000000e+00 + %frombool50 = zext i1 %cmp49 to i8 br label %for.inc if.else: ; preds = %for.body41 - %cond-lvalue.idx = select i1 %zInside.069, i64 4, i64 0 + %cond-lvalue.idx = shl nuw nsw i8 %zInside.069, 2 + %cond-lvalue.idx = zext nneg i8 %29 to i64 %cond-lvalue = getelementptr inbounds nuw i8, ptr %this, i64 %cond-lvalue.idx %29 = load float, ptr %cond-lvalue, align 4 store float %29, ptr %arrayidx52, align 8 br label %for.inc for.inc: ; preds = %_ZNK7openvdb5v11_04tree8LeafNodeIfLj3EE12getLastValueEv.exit63, %if.else - %zInside.1 = phi i1 [ %cmp49, %_ZNK7openvdb5v11_04tree8LeafNodeIfLj3EE12getLastValueEv.exit63 ], [ %zInside.069, %if.else ] + %zInside.1 = phi i8 [ %frombool50, %_ZNK7openvdb5v11_04tree8LeafNodeIfLj3EE12getLastValueEv.exit63 ], [ %zInside.069, %if.else ] %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %cmp40.not = icmp eq i64 %indvars.iv.next, 16 br i1 %cmp40.not, label %for.inc55, label %for.body41, !llvm.loop !87 @@ -10609,11 +10621,12 @@ _ZNK7openvdb5v11_04tree12InternalNodeINS1_8LeafNodeIfLj3EEELj4EE13getFirstValueE %cond-lvalue.i = phi ptr [ %retval.0.i.i.i.i, %_ZNK7openvdb5v11_04tree8LeafNodeIfLj3EE13getFirstValueEv.exit.i ], [ %4, %if.then5 ] %9 = load float, ptr %cond-lvalue.i, align 4 %cmp8 = fcmp olt float %9, 0.000000e+00 + %frombool = zext i1 %cmp8 to i8 br label %for.body for.body: ; preds = %_ZNK7openvdb5v11_04tree12InternalNodeINS1_8LeafNodeIfLj3EEELj4EE13getFirstValueEv.exit, %for.inc58 %indvars.iv100 = phi i64 [ 0, %_ZNK7openvdb5v11_04tree12InternalNodeINS1_8LeafNodeIfLj3EEELj4EE13getFirstValueEv.exit ], [ %indvars.iv.next101, %for.inc58 ] - %xInside.089 = phi i1 [ %cmp8, %_ZNK7openvdb5v11_04tree12InternalNodeINS1_8LeafNodeIfLj3EEELj4EE13getFirstValueEv.exit ], [ %xInside.1, %for.inc58 ] + %xInside.089 = phi i8 [ %frombool, %_ZNK7openvdb5v11_04tree12InternalNodeINS1_8LeafNodeIfLj3EEELj4EE13getFirstValueEv.exit ], [ %xInside.1, %for.inc58 ] %10 = shl i64 %indvars.iv100, 10 %11 = lshr exact i64 %10, 6 %arrayidx.i = getelementptr inbounds nuw [512 x i64], ptr %mChildMask.i, i64 0, i64 %11 @@ -10653,15 +10666,16 @@ _ZNK7openvdb5v11_04tree12InternalNodeINS1_8LeafNodeIfLj3EEELj4EE12getLastValueEv %cond-lvalue.i36 = phi ptr [ %retval.0.i.i.i.i35, %_ZNK7openvdb5v11_04tree8LeafNodeIfLj3EE12getLastValueEv.exit.i ], [ %arrayidx5.i, %if.then14 ] %18 = load float, ptr %cond-lvalue.i36, align 4 %cmp19 = fcmp olt float %18, 0.000000e+00 + %frombool20 = zext i1 %cmp19 to i8 br label %if.end21 if.end21: ; preds = %_ZNK7openvdb5v11_04tree12InternalNodeINS1_8LeafNodeIfLj3EEELj4EE12getLastValueEv.exit, %for.body - %xInside.1 = phi i1 [ %cmp19, %_ZNK7openvdb5v11_04tree12InternalNodeINS1_8LeafNodeIfLj3EEELj4EE12getLastValueEv.exit ], [ %xInside.089, %for.body ] + %xInside.1 = phi i8 [ %frombool20, %_ZNK7openvdb5v11_04tree12InternalNodeINS1_8LeafNodeIfLj3EEELj4EE12getLastValueEv.exit ], [ %xInside.089, %for.body ] br label %for.body26 for.body26: ; preds = %if.end21, %for.inc55 %indvars.iv96 = phi i64 [ 0, %if.end21 ], [ %indvars.iv.next97, %for.inc55 ] - %yInside.087 = phi i1 [ %xInside.1, %if.end21 ], [ %yInside.1, %for.inc55 ] + %yInside.087 = phi i8 [ %xInside.1, %if.end21 ], [ %yInside.1, %for.inc55 ] %19 = shl i64 %indvars.iv96, 5 %20 = add nuw nsw i64 %19, %10 %shr.i37 = lshr i64 %20, 6 @@ -10705,15 +10719,17 @@ _ZNK7openvdb5v11_04tree12InternalNodeINS1_8LeafNodeIfLj3EEELj4EE12getLastValueEv %cond-lvalue.i56 = phi ptr [ %retval.0.i.i.i.i55, %_ZNK7openvdb5v11_04tree8LeafNodeIfLj3EE12getLastValueEv.exit.i52 ], [ %arrayidx5.i47, %if.then29 ] %27 = load float, ptr %cond-lvalue.i56, align 4 %cmp34 = fcmp olt float %27, 0.000000e+00 + %frombool35 = zext i1 %cmp34 to i8 br label %if.end36 if.end36: ; preds = %_ZNK7openvdb5v11_04tree12InternalNodeINS1_8LeafNodeIfLj3EEELj4EE12getLastValueEv.exit57, %for.body26 - %yInside.1 = phi i1 [ %cmp34, %_ZNK7openvdb5v11_04tree12InternalNodeINS1_8LeafNodeIfLj3EEELj4EE12getLastValueEv.exit57 ], [ %yInside.087, %for.body26 ] + %yInside.1 = phi i8 [ %frombool35, %_ZNK7openvdb5v11_04tree12InternalNodeINS1_8LeafNodeIfLj3EEELj4EE12getLastValueEv.exit57 ], [ %yInside.087, %for.body26 ] + %frombool38 = and i8 %yInside.1, 1 br label %for.body41 for.body41: ; preds = %if.end36, %for.inc %indvars.iv = phi i64 [ 0, %if.end36 ], [ %indvars.iv.next, %for.inc ] - %zInside.084 = phi i1 [ %yInside.1, %if.end36 ], [ %zInside.1, %for.inc ] + %zInside.084 = phi i8 [ %frombool38, %if.end36 ], [ %zInside.1, %for.inc ] %28 = add nuw nsw i64 %indvars.iv, %20 %shr.i58 = lshr i64 %28, 6 %idxprom.i59 = and i64 %shr.i58, 67108863 @@ -10756,17 +10772,19 @@ _ZNK7openvdb5v11_04tree12InternalNodeINS1_8LeafNodeIfLj3EEELj4EE12getLastValueEv %cond-lvalue.i77 = phi ptr [ %retval.0.i.i.i.i76, %_ZNK7openvdb5v11_04tree8LeafNodeIfLj3EE12getLastValueEv.exit.i73 ], [ %arrayidx5.i68, %if.then44 ] %36 = load float, ptr %cond-lvalue.i77, align 4 %cmp49 = fcmp olt float %36, 0.000000e+00 + %frombool50 = zext i1 %cmp49 to i8 br label %for.inc if.else: ; preds = %for.body41 - %cond-lvalue.idx = select i1 %zInside.084, i64 4, i64 0 + %cond-lvalue.idx = shl nuw nsw i8 %zInside.084, 2 + %cond-lvalue.idx = zext nneg i8 %37 to i64 %cond-lvalue = getelementptr inbounds nuw i8, ptr %this, i64 %cond-lvalue.idx %37 = load float, ptr %cond-lvalue, align 4 store float %37, ptr %arrayidx52, align 8 br label %for.inc for.inc: ; preds = %_ZNK7openvdb5v11_04tree12InternalNodeINS1_8LeafNodeIfLj3EEELj4EE12getLastValueEv.exit78, %if.else - %zInside.1 = phi i1 [ %cmp49, %_ZNK7openvdb5v11_04tree12InternalNodeINS1_8LeafNodeIfLj3EEELj4EE12getLastValueEv.exit78 ], [ %zInside.084, %if.else ] + %zInside.1 = phi i8 [ %frombool50, %_ZNK7openvdb5v11_04tree12InternalNodeINS1_8LeafNodeIfLj3EEELj4EE12getLastValueEv.exit78 ], [ %zInside.084, %if.else ] %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %cmp40.not = icmp eq i64 %indvars.iv.next, 32 br i1 %cmp40.not, label %for.inc55, label %for.body41, !llvm.loop !94 @@ -18077,11 +18095,12 @@ if.then8: ; preds = %_ZNK7openvdb5v11_04 %arrayidx = getelementptr inbounds nuw double, ptr %retval.0.i.i.i, i64 %idxprom %7 = load double, ptr %arrayidx, align 8 %cmp9 = fcmp olt double %7, 0.000000e+00 + %frombool = zext i1 %cmp9 to i8 br label %for.body for.body: ; preds = %if.then8, %for.inc53 %indvars.iv65 = phi i64 [ 0, %if.then8 ], [ %indvars.iv.next66, %for.inc53 ] - %xInside.054 = phi i1 [ %cmp9, %if.then8 ], [ %xInside.1, %for.inc53 ] + %xInside.054 = phi i8 [ %frombool, %if.then8 ], [ %xInside.1, %for.inc53 ] %8 = shl i64 %indvars.iv65, 6 %arrayidx.i = getelementptr inbounds nuw [8 x i64], ptr %mValueMask.i, i64 0, i64 %indvars.iv65 %9 = load i64, ptr %arrayidx.i, align 8 @@ -18093,15 +18112,16 @@ if.then15: ; preds = %for.body %arrayidx17 = getelementptr inbounds nuw double, ptr %retval.0.i.i.i, i64 %8 %10 = load double, ptr %arrayidx17, align 8 %cmp18 = fcmp olt double %10, 0.000000e+00 + %frombool19 = zext i1 %cmp18 to i8 br label %if.end20 if.end20: ; preds = %if.then15, %for.body - %xInside.1 = phi i1 [ %cmp18, %if.then15 ], [ %xInside.054, %for.body ] + %xInside.1 = phi i8 [ %frombool19, %if.then15 ], [ %xInside.054, %for.body ] br label %for.body25 for.body25: ; preds = %if.end20, %for.inc50 %indvars.iv60 = phi i64 [ 0, %if.end20 ], [ %indvars.iv.next61, %for.inc50 ] - %yInside.052 = phi i1 [ %xInside.1, %if.end20 ], [ %yInside.1, %for.inc50 ] + %yInside.052 = phi i8 [ %xInside.1, %if.end20 ], [ %yInside.1, %for.inc50 ] %11 = shl i64 %indvars.iv60, 3 %12 = add nuw nsw i64 %11, %8 %shr.i28 = lshr i64 %12, 6 @@ -18117,15 +18137,17 @@ if.then28: ; preds = %for.body25 %arrayidx30 = getelementptr inbounds nuw double, ptr %retval.0.i.i.i, i64 %12 %14 = load double, ptr %arrayidx30, align 8 %cmp31 = fcmp olt double %14, 0.000000e+00 + %frombool32 = zext i1 %cmp31 to i8 br label %if.end33 if.end33: ; preds = %if.then28, %for.body25 - %yInside.1 = phi i1 [ %cmp31, %if.then28 ], [ %yInside.052, %for.body25 ] + %yInside.1 = phi i8 [ %frombool32, %if.then28 ], [ %yInside.052, %for.body25 ] + %frombool35 = and i8 %yInside.1, 1 br label %for.body38 for.body38: ; preds = %if.end33, %for.inc %indvars.iv = phi i64 [ 0, %if.end33 ], [ %indvars.iv.next, %for.inc ] - %zInside.049 = phi i1 [ %yInside.1, %if.end33 ], [ %zInside.1, %for.inc ] + %zInside.049 = phi i8 [ %frombool35, %if.end33 ], [ %zInside.1, %for.inc ] %15 = add nuw nsw i64 %indvars.iv, %12 %shr.i36 = lshr i64 %15, 6 %idxprom.i37 = and i64 %shr.i36, 67108863 @@ -18141,10 +18163,12 @@ if.then41: ; preds = %for.body38 %arrayidx43 = getelementptr inbounds nuw double, ptr %retval.0.i.i.i, i64 %15 %18 = load double, ptr %arrayidx43, align 8 %cmp44 = fcmp olt double %18, 0.000000e+00 + %frombool45 = zext i1 %cmp44 to i8 br label %for.inc if.else: ; preds = %for.body38 - %cond.in.idx = select i1 %zInside.049, i64 8, i64 0 + %cond.in.idx = shl nuw nsw i8 %zInside.049, 3 + %cond.in.idx = zext nneg i8 %19 to i64 %cond.in = getelementptr inbounds nuw i8, ptr %this, i64 %cond.in.idx %cond = load double, ptr %cond.in, align 8 %arrayidx48 = getelementptr inbounds nuw double, ptr %retval.0.i.i.i, i64 %15 @@ -18152,7 +18176,7 @@ if.else: ; preds = %for.body38 br label %for.inc for.inc: ; preds = %if.then41, %if.else - %zInside.1 = phi i1 [ %cmp44, %if.then41 ], [ %zInside.049, %if.else ] + %zInside.1 = phi i8 [ %frombool45, %if.then41 ], [ %zInside.049, %if.else ] %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %cmp37.not = icmp eq i64 %indvars.iv.next, 8 br i1 %cmp37.not, label %for.inc50, label %for.body38, !llvm.loop !164 @@ -20114,11 +20138,12 @@ _ZNK7openvdb5v11_04tree8LeafNodeIdLj3EE13getFirstValueEv.exit: ; preds = %if.the %retval.0.i.i.i = select i1 %tobool.not.i.i.i, ptr @_ZZNK7openvdb5v11_04tree10LeafBufferIdLj3EE2atEjE5sZero, ptr %6 %7 = load double, ptr %retval.0.i.i.i, align 8 %cmp8 = fcmp olt double %7, 0.000000e+00 + %frombool = zext i1 %cmp8 to i8 br label %for.body for.body: ; preds = %_ZNK7openvdb5v11_04tree8LeafNodeIdLj3EE13getFirstValueEv.exit, %for.inc58 %indvars.iv85 = phi i64 [ 0, %_ZNK7openvdb5v11_04tree8LeafNodeIdLj3EE13getFirstValueEv.exit ], [ %indvars.iv.next86, %for.inc58 ] - %xInside.074 = phi i1 [ %cmp8, %_ZNK7openvdb5v11_04tree8LeafNodeIdLj3EE13getFirstValueEv.exit ], [ %xInside.1, %for.inc58 ] + %xInside.074 = phi i8 [ %frombool, %_ZNK7openvdb5v11_04tree8LeafNodeIdLj3EE13getFirstValueEv.exit ], [ %xInside.1, %for.inc58 ] %8 = shl i64 %indvars.iv85, 8 %9 = lshr exact i64 %8, 6 %arrayidx.i = getelementptr inbounds nuw [64 x i64], ptr %mChildMask.i, i64 0, i64 %9 @@ -20146,15 +20171,16 @@ _ZNK7openvdb5v11_04tree8LeafNodeIdLj3EE12getLastValueEv.exit: ; preds = %if.then %retval.0.i.i.i33 = select i1 %tobool.not.i.i.i32, ptr @_ZZNK7openvdb5v11_04tree10LeafBufferIdLj3EE2atEjE5sZero, ptr %arrayidx.i.i.i %14 = load double, ptr %retval.0.i.i.i33, align 8 %cmp19 = fcmp olt double %14, 0.000000e+00 + %frombool20 = zext i1 %cmp19 to i8 br label %if.end21 if.end21: ; preds = %_ZNK7openvdb5v11_04tree8LeafNodeIdLj3EE12getLastValueEv.exit, %for.body - %xInside.1 = phi i1 [ %cmp19, %_ZNK7openvdb5v11_04tree8LeafNodeIdLj3EE12getLastValueEv.exit ], [ %xInside.074, %for.body ] + %xInside.1 = phi i8 [ %frombool20, %_ZNK7openvdb5v11_04tree8LeafNodeIdLj3EE12getLastValueEv.exit ], [ %xInside.074, %for.body ] br label %for.body26 for.body26: ; preds = %if.end21, %for.inc55 %indvars.iv81 = phi i64 [ 0, %if.end21 ], [ %indvars.iv.next82, %for.inc55 ] - %yInside.072 = phi i1 [ %xInside.1, %if.end21 ], [ %yInside.1, %for.inc55 ] + %yInside.072 = phi i8 [ %xInside.1, %if.end21 ], [ %yInside.1, %for.inc55 ] %15 = shl i64 %indvars.iv81, 4 %16 = add nuw nsw i64 %15, %8 %shr.i34 = lshr i64 %16, 6 @@ -20186,15 +20212,17 @@ _ZNK7openvdb5v11_04tree8LeafNodeIdLj3EE12getLastValueEv.exit48: ; preds = %if.th %retval.0.i.i.i47 = select i1 %tobool.not.i.i.i45, ptr @_ZZNK7openvdb5v11_04tree10LeafBufferIdLj3EE2atEjE5sZero, ptr %arrayidx.i.i.i46 %21 = load double, ptr %retval.0.i.i.i47, align 8 %cmp34 = fcmp olt double %21, 0.000000e+00 + %frombool35 = zext i1 %cmp34 to i8 br label %if.end36 if.end36: ; preds = %_ZNK7openvdb5v11_04tree8LeafNodeIdLj3EE12getLastValueEv.exit48, %for.body26 - %yInside.1 = phi i1 [ %cmp34, %_ZNK7openvdb5v11_04tree8LeafNodeIdLj3EE12getLastValueEv.exit48 ], [ %yInside.072, %for.body26 ] + %yInside.1 = phi i8 [ %frombool35, %_ZNK7openvdb5v11_04tree8LeafNodeIdLj3EE12getLastValueEv.exit48 ], [ %yInside.072, %for.body26 ] + %frombool38 = and i8 %yInside.1, 1 br label %for.body41 for.body41: ; preds = %if.end36, %for.inc %indvars.iv = phi i64 [ 0, %if.end36 ], [ %indvars.iv.next, %for.inc ] - %zInside.069 = phi i1 [ %yInside.1, %if.end36 ], [ %zInside.1, %for.inc ] + %zInside.069 = phi i8 [ %frombool38, %if.end36 ], [ %zInside.1, %for.inc ] %22 = add nuw nsw i64 %indvars.iv, %16 %shr.i49 = lshr i64 %22, 6 %idxprom.i50 = and i64 %shr.i49, 67108863 @@ -20225,17 +20253,19 @@ _ZNK7openvdb5v11_04tree8LeafNodeIdLj3EE12getLastValueEv.exit63: ; preds = %if.th %retval.0.i.i.i62 = select i1 %tobool.not.i.i.i60, ptr @_ZZNK7openvdb5v11_04tree10LeafBufferIdLj3EE2atEjE5sZero, ptr %arrayidx.i.i.i61 %28 = load double, ptr %retval.0.i.i.i62, align 8 %cmp49 = fcmp olt double %28, 0.000000e+00 + %frombool50 = zext i1 %cmp49 to i8 br label %for.inc if.else: ; preds = %for.body41 - %cond-lvalue.idx = select i1 %zInside.069, i64 8, i64 0 + %cond-lvalue.idx = shl nuw nsw i8 %zInside.069, 3 + %cond-lvalue.idx = zext nneg i8 %29 to i64 %cond-lvalue = getelementptr inbounds nuw i8, ptr %this, i64 %cond-lvalue.idx %29 = load double, ptr %cond-lvalue, align 8 store double %29, ptr %arrayidx52, align 8 br label %for.inc for.inc: ; preds = %_ZNK7openvdb5v11_04tree8LeafNodeIdLj3EE12getLastValueEv.exit63, %if.else - %zInside.1 = phi i1 [ %cmp49, %_ZNK7openvdb5v11_04tree8LeafNodeIdLj3EE12getLastValueEv.exit63 ], [ %zInside.069, %if.else ] + %zInside.1 = phi i8 [ %frombool50, %_ZNK7openvdb5v11_04tree8LeafNodeIdLj3EE12getLastValueEv.exit63 ], [ %zInside.069, %if.else ] %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %cmp40.not = icmp eq i64 %indvars.iv.next, 16 br i1 %cmp40.not, label %for.inc55, label %for.body41, !llvm.loop !173 @@ -21008,11 +21038,12 @@ _ZNK7openvdb5v11_04tree12InternalNodeINS1_8LeafNodeIdLj3EEELj4EE13getFirstValueE %cond-lvalue.i = phi ptr [ %retval.0.i.i.i.i, %_ZNK7openvdb5v11_04tree8LeafNodeIdLj3EE13getFirstValueEv.exit.i ], [ %4, %if.then5 ] %9 = load double, ptr %cond-lvalue.i, align 8 %cmp8 = fcmp olt double %9, 0.000000e+00 + %frombool = zext i1 %cmp8 to i8 br label %for.body for.body: ; preds = %_ZNK7openvdb5v11_04tree12InternalNodeINS1_8LeafNodeIdLj3EEELj4EE13getFirstValueEv.exit, %for.inc58 %indvars.iv100 = phi i64 [ 0, %_ZNK7openvdb5v11_04tree12InternalNodeINS1_8LeafNodeIdLj3EEELj4EE13getFirstValueEv.exit ], [ %indvars.iv.next101, %for.inc58 ] - %xInside.089 = phi i1 [ %cmp8, %_ZNK7openvdb5v11_04tree12InternalNodeINS1_8LeafNodeIdLj3EEELj4EE13getFirstValueEv.exit ], [ %xInside.1, %for.inc58 ] + %xInside.089 = phi i8 [ %frombool, %_ZNK7openvdb5v11_04tree12InternalNodeINS1_8LeafNodeIdLj3EEELj4EE13getFirstValueEv.exit ], [ %xInside.1, %for.inc58 ] %10 = shl i64 %indvars.iv100, 10 %11 = lshr exact i64 %10, 6 %arrayidx.i = getelementptr inbounds nuw [512 x i64], ptr %mChildMask.i, i64 0, i64 %11 @@ -21052,15 +21083,16 @@ _ZNK7openvdb5v11_04tree12InternalNodeINS1_8LeafNodeIdLj3EEELj4EE12getLastValueEv %cond-lvalue.i36 = phi ptr [ %retval.0.i.i.i.i35, %_ZNK7openvdb5v11_04tree8LeafNodeIdLj3EE12getLastValueEv.exit.i ], [ %arrayidx5.i, %if.then14 ] %18 = load double, ptr %cond-lvalue.i36, align 8 %cmp19 = fcmp olt double %18, 0.000000e+00 + %frombool20 = zext i1 %cmp19 to i8 br label %if.end21 if.end21: ; preds = %_ZNK7openvdb5v11_04tree12InternalNodeINS1_8LeafNodeIdLj3EEELj4EE12getLastValueEv.exit, %for.body - %xInside.1 = phi i1 [ %cmp19, %_ZNK7openvdb5v11_04tree12InternalNodeINS1_8LeafNodeIdLj3EEELj4EE12getLastValueEv.exit ], [ %xInside.089, %for.body ] + %xInside.1 = phi i8 [ %frombool20, %_ZNK7openvdb5v11_04tree12InternalNodeINS1_8LeafNodeIdLj3EEELj4EE12getLastValueEv.exit ], [ %xInside.089, %for.body ] br label %for.body26 for.body26: ; preds = %if.end21, %for.inc55 %indvars.iv96 = phi i64 [ 0, %if.end21 ], [ %indvars.iv.next97, %for.inc55 ] - %yInside.087 = phi i1 [ %xInside.1, %if.end21 ], [ %yInside.1, %for.inc55 ] + %yInside.087 = phi i8 [ %xInside.1, %if.end21 ], [ %yInside.1, %for.inc55 ] %19 = shl i64 %indvars.iv96, 5 %20 = add nuw nsw i64 %19, %10 %shr.i37 = lshr i64 %20, 6 @@ -21104,15 +21136,17 @@ _ZNK7openvdb5v11_04tree12InternalNodeINS1_8LeafNodeIdLj3EEELj4EE12getLastValueEv %cond-lvalue.i56 = phi ptr [ %retval.0.i.i.i.i55, %_ZNK7openvdb5v11_04tree8LeafNodeIdLj3EE12getLastValueEv.exit.i52 ], [ %arrayidx5.i47, %if.then29 ] %27 = load double, ptr %cond-lvalue.i56, align 8 %cmp34 = fcmp olt double %27, 0.000000e+00 + %frombool35 = zext i1 %cmp34 to i8 br label %if.end36 if.end36: ; preds = %_ZNK7openvdb5v11_04tree12InternalNodeINS1_8LeafNodeIdLj3EEELj4EE12getLastValueEv.exit57, %for.body26 - %yInside.1 = phi i1 [ %cmp34, %_ZNK7openvdb5v11_04tree12InternalNodeINS1_8LeafNodeIdLj3EEELj4EE12getLastValueEv.exit57 ], [ %yInside.087, %for.body26 ] + %yInside.1 = phi i8 [ %frombool35, %_ZNK7openvdb5v11_04tree12InternalNodeINS1_8LeafNodeIdLj3EEELj4EE12getLastValueEv.exit57 ], [ %yInside.087, %for.body26 ] + %frombool38 = and i8 %yInside.1, 1 br label %for.body41 for.body41: ; preds = %if.end36, %for.inc %indvars.iv = phi i64 [ 0, %if.end36 ], [ %indvars.iv.next, %for.inc ] - %zInside.084 = phi i1 [ %yInside.1, %if.end36 ], [ %zInside.1, %for.inc ] + %zInside.084 = phi i8 [ %frombool38, %if.end36 ], [ %zInside.1, %for.inc ] %28 = add nuw nsw i64 %indvars.iv, %20 %shr.i58 = lshr i64 %28, 6 %idxprom.i59 = and i64 %shr.i58, 67108863 @@ -21155,17 +21189,19 @@ _ZNK7openvdb5v11_04tree12InternalNodeINS1_8LeafNodeIdLj3EEELj4EE12getLastValueEv %cond-lvalue.i77 = phi ptr [ %retval.0.i.i.i.i76, %_ZNK7openvdb5v11_04tree8LeafNodeIdLj3EE12getLastValueEv.exit.i73 ], [ %arrayidx5.i68, %if.then44 ] %36 = load double, ptr %cond-lvalue.i77, align 8 %cmp49 = fcmp olt double %36, 0.000000e+00 + %frombool50 = zext i1 %cmp49 to i8 br label %for.inc if.else: ; preds = %for.body41 - %cond-lvalue.idx = select i1 %zInside.084, i64 8, i64 0 + %cond-lvalue.idx = shl nuw nsw i8 %zInside.084, 3 + %cond-lvalue.idx = zext nneg i8 %37 to i64 %cond-lvalue = getelementptr inbounds nuw i8, ptr %this, i64 %cond-lvalue.idx %37 = load double, ptr %cond-lvalue, align 8 store double %37, ptr %arrayidx52, align 8 br label %for.inc for.inc: ; preds = %_ZNK7openvdb5v11_04tree12InternalNodeINS1_8LeafNodeIdLj3EEELj4EE12getLastValueEv.exit78, %if.else - %zInside.1 = phi i1 [ %cmp49, %_ZNK7openvdb5v11_04tree12InternalNodeINS1_8LeafNodeIdLj3EEELj4EE12getLastValueEv.exit78 ], [ %zInside.084, %if.else ] + %zInside.1 = phi i8 [ %frombool50, %_ZNK7openvdb5v11_04tree12InternalNodeINS1_8LeafNodeIdLj3EEELj4EE12getLastValueEv.exit78 ], [ %zInside.084, %if.else ] %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %cmp40.not = icmp eq i64 %indvars.iv.next, 32 br i1 %cmp40.not, label %for.inc55, label %for.body41, !llvm.loop !180 @@ -24236,11 +24272,12 @@ if.then8: ; preds = %_ZNK7openvdb5v11_04 %arrayidx = getelementptr inbounds nuw float, ptr %retval.0.i.i.i, i64 %idxprom %7 = load float, ptr %arrayidx, align 4 %cmp9 = fcmp olt float %7, 0.000000e+00 + %frombool = zext i1 %cmp9 to i8 br label %for.body for.body: ; preds = %if.then8, %for.inc53 %indvars.iv65 = phi i64 [ 0, %if.then8 ], [ %indvars.iv.next66, %for.inc53 ] - %xInside.054 = phi i1 [ %cmp9, %if.then8 ], [ %xInside.1, %for.inc53 ] + %xInside.054 = phi i8 [ %frombool, %if.then8 ], [ %xInside.1, %for.inc53 ] %8 = shl i64 %indvars.iv65, 6 %arrayidx.i = getelementptr inbounds nuw [8 x i64], ptr %mValueMask.i, i64 0, i64 %indvars.iv65 %9 = load i64, ptr %arrayidx.i, align 8 @@ -24252,15 +24289,16 @@ if.then15: ; preds = %for.body %arrayidx17 = getelementptr inbounds nuw float, ptr %retval.0.i.i.i, i64 %8 %10 = load float, ptr %arrayidx17, align 4 %cmp18 = fcmp olt float %10, 0.000000e+00 + %frombool19 = zext i1 %cmp18 to i8 br label %if.end20 if.end20: ; preds = %if.then15, %for.body - %xInside.1 = phi i1 [ %cmp18, %if.then15 ], [ %xInside.054, %for.body ] + %xInside.1 = phi i8 [ %frombool19, %if.then15 ], [ %xInside.054, %for.body ] br label %for.body25 for.body25: ; preds = %if.end20, %for.inc50 %indvars.iv60 = phi i64 [ 0, %if.end20 ], [ %indvars.iv.next61, %for.inc50 ] - %yInside.052 = phi i1 [ %xInside.1, %if.end20 ], [ %yInside.1, %for.inc50 ] + %yInside.052 = phi i8 [ %xInside.1, %if.end20 ], [ %yInside.1, %for.inc50 ] %11 = shl i64 %indvars.iv60, 3 %12 = add nuw nsw i64 %11, %8 %shr.i28 = lshr i64 %12, 6 @@ -24276,15 +24314,17 @@ if.then28: ; preds = %for.body25 %arrayidx30 = getelementptr inbounds nuw float, ptr %retval.0.i.i.i, i64 %12 %14 = load float, ptr %arrayidx30, align 4 %cmp31 = fcmp olt float %14, 0.000000e+00 + %frombool32 = zext i1 %cmp31 to i8 br label %if.end33 if.end33: ; preds = %if.then28, %for.body25 - %yInside.1 = phi i1 [ %cmp31, %if.then28 ], [ %yInside.052, %for.body25 ] + %yInside.1 = phi i8 [ %frombool32, %if.then28 ], [ %yInside.052, %for.body25 ] + %frombool35 = and i8 %yInside.1, 1 br label %for.body38 for.body38: ; preds = %if.end33, %for.inc %indvars.iv = phi i64 [ 0, %if.end33 ], [ %indvars.iv.next, %for.inc ] - %zInside.049 = phi i1 [ %yInside.1, %if.end33 ], [ %zInside.1, %for.inc ] + %zInside.049 = phi i8 [ %frombool35, %if.end33 ], [ %zInside.1, %for.inc ] %15 = add nuw nsw i64 %indvars.iv, %12 %shr.i36 = lshr i64 %15, 6 %idxprom.i37 = and i64 %shr.i36, 67108863 @@ -24300,10 +24340,12 @@ if.then41: ; preds = %for.body38 %arrayidx43 = getelementptr inbounds nuw float, ptr %retval.0.i.i.i, i64 %15 %18 = load float, ptr %arrayidx43, align 4 %cmp44 = fcmp olt float %18, 0.000000e+00 + %frombool45 = zext i1 %cmp44 to i8 br label %for.inc if.else: ; preds = %for.body38 - %cond.in.idx = select i1 %zInside.049, i64 4, i64 0 + %cond.in.idx = shl nuw nsw i8 %zInside.049, 2 + %cond.in.idx = zext nneg i8 %19 to i64 %cond.in = getelementptr inbounds nuw i8, ptr %this, i64 %cond.in.idx %cond = load float, ptr %cond.in, align 4 %arrayidx48 = getelementptr inbounds nuw float, ptr %retval.0.i.i.i, i64 %15 @@ -24311,7 +24353,7 @@ if.else: ; preds = %for.body38 br label %for.inc for.inc: ; preds = %if.then41, %if.else - %zInside.1 = phi i1 [ %cmp44, %if.then41 ], [ %zInside.049, %if.else ] + %zInside.1 = phi i8 [ %frombool45, %if.then41 ], [ %zInside.049, %if.else ] %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %cmp37.not = icmp eq i64 %indvars.iv.next, 8 br i1 %cmp37.not, label %for.inc50, label %for.body38, !llvm.loop !213 @@ -25096,11 +25138,12 @@ _ZNK7openvdb5v11_04tree8LeafNodeIfLj3EE13getFirstValueEv.exit: ; preds = %if.the %retval.0.i.i.i = select i1 %tobool.not.i.i.i, ptr @_ZZNK7openvdb5v11_04tree10LeafBufferIfLj3EE2atEjE5sZero, ptr %6 %7 = load float, ptr %retval.0.i.i.i, align 4 %cmp8 = fcmp olt float %7, 0.000000e+00 + %frombool = zext i1 %cmp8 to i8 br label %for.body for.body: ; preds = %_ZNK7openvdb5v11_04tree8LeafNodeIfLj3EE13getFirstValueEv.exit, %for.inc58 %indvars.iv85 = phi i64 [ 0, %_ZNK7openvdb5v11_04tree8LeafNodeIfLj3EE13getFirstValueEv.exit ], [ %indvars.iv.next86, %for.inc58 ] - %xInside.074 = phi i1 [ %cmp8, %_ZNK7openvdb5v11_04tree8LeafNodeIfLj3EE13getFirstValueEv.exit ], [ %xInside.1, %for.inc58 ] + %xInside.074 = phi i8 [ %frombool, %_ZNK7openvdb5v11_04tree8LeafNodeIfLj3EE13getFirstValueEv.exit ], [ %xInside.1, %for.inc58 ] %8 = shl i64 %indvars.iv85, 8 %9 = lshr exact i64 %8, 6 %arrayidx.i = getelementptr inbounds nuw [64 x i64], ptr %mChildMask.i, i64 0, i64 %9 @@ -25128,15 +25171,16 @@ _ZNK7openvdb5v11_04tree8LeafNodeIfLj3EE12getLastValueEv.exit: ; preds = %if.then %retval.0.i.i.i33 = select i1 %tobool.not.i.i.i32, ptr @_ZZNK7openvdb5v11_04tree10LeafBufferIfLj3EE2atEjE5sZero, ptr %arrayidx.i.i.i %14 = load float, ptr %retval.0.i.i.i33, align 4 %cmp19 = fcmp olt float %14, 0.000000e+00 + %frombool20 = zext i1 %cmp19 to i8 br label %if.end21 if.end21: ; preds = %_ZNK7openvdb5v11_04tree8LeafNodeIfLj3EE12getLastValueEv.exit, %for.body - %xInside.1 = phi i1 [ %cmp19, %_ZNK7openvdb5v11_04tree8LeafNodeIfLj3EE12getLastValueEv.exit ], [ %xInside.074, %for.body ] + %xInside.1 = phi i8 [ %frombool20, %_ZNK7openvdb5v11_04tree8LeafNodeIfLj3EE12getLastValueEv.exit ], [ %xInside.074, %for.body ] br label %for.body26 for.body26: ; preds = %if.end21, %for.inc55 %indvars.iv81 = phi i64 [ 0, %if.end21 ], [ %indvars.iv.next82, %for.inc55 ] - %yInside.072 = phi i1 [ %xInside.1, %if.end21 ], [ %yInside.1, %for.inc55 ] + %yInside.072 = phi i8 [ %xInside.1, %if.end21 ], [ %yInside.1, %for.inc55 ] %15 = shl i64 %indvars.iv81, 4 %16 = add nuw nsw i64 %15, %8 %shr.i34 = lshr i64 %16, 6 @@ -25168,15 +25212,17 @@ _ZNK7openvdb5v11_04tree8LeafNodeIfLj3EE12getLastValueEv.exit48: ; preds = %if.th %retval.0.i.i.i47 = select i1 %tobool.not.i.i.i45, ptr @_ZZNK7openvdb5v11_04tree10LeafBufferIfLj3EE2atEjE5sZero, ptr %arrayidx.i.i.i46 %21 = load float, ptr %retval.0.i.i.i47, align 4 %cmp34 = fcmp olt float %21, 0.000000e+00 + %frombool35 = zext i1 %cmp34 to i8 br label %if.end36 if.end36: ; preds = %_ZNK7openvdb5v11_04tree8LeafNodeIfLj3EE12getLastValueEv.exit48, %for.body26 - %yInside.1 = phi i1 [ %cmp34, %_ZNK7openvdb5v11_04tree8LeafNodeIfLj3EE12getLastValueEv.exit48 ], [ %yInside.072, %for.body26 ] + %yInside.1 = phi i8 [ %frombool35, %_ZNK7openvdb5v11_04tree8LeafNodeIfLj3EE12getLastValueEv.exit48 ], [ %yInside.072, %for.body26 ] + %frombool38 = and i8 %yInside.1, 1 br label %for.body41 for.body41: ; preds = %if.end36, %for.inc %indvars.iv = phi i64 [ 0, %if.end36 ], [ %indvars.iv.next, %for.inc ] - %zInside.069 = phi i1 [ %yInside.1, %if.end36 ], [ %zInside.1, %for.inc ] + %zInside.069 = phi i8 [ %frombool38, %if.end36 ], [ %zInside.1, %for.inc ] %22 = add nuw nsw i64 %indvars.iv, %16 %shr.i49 = lshr i64 %22, 6 %idxprom.i50 = and i64 %shr.i49, 67108863 @@ -25207,17 +25253,19 @@ _ZNK7openvdb5v11_04tree8LeafNodeIfLj3EE12getLastValueEv.exit63: ; preds = %if.th %retval.0.i.i.i62 = select i1 %tobool.not.i.i.i60, ptr @_ZZNK7openvdb5v11_04tree10LeafBufferIfLj3EE2atEjE5sZero, ptr %arrayidx.i.i.i61 %28 = load float, ptr %retval.0.i.i.i62, align 4 %cmp49 = fcmp olt float %28, 0.000000e+00 + %frombool50 = zext i1 %cmp49 to i8 br label %for.inc if.else: ; preds = %for.body41 - %cond-lvalue.idx = select i1 %zInside.069, i64 4, i64 0 + %cond-lvalue.idx = shl nuw nsw i8 %zInside.069, 2 + %cond-lvalue.idx = zext nneg i8 %29 to i64 %cond-lvalue = getelementptr inbounds nuw i8, ptr %this, i64 %cond-lvalue.idx %29 = load float, ptr %cond-lvalue, align 4 store float %29, ptr %arrayidx52, align 8 br label %for.inc for.inc: ; preds = %_ZNK7openvdb5v11_04tree8LeafNodeIfLj3EE12getLastValueEv.exit63, %if.else - %zInside.1 = phi i1 [ %cmp49, %_ZNK7openvdb5v11_04tree8LeafNodeIfLj3EE12getLastValueEv.exit63 ], [ %zInside.069, %if.else ] + %zInside.1 = phi i8 [ %frombool50, %_ZNK7openvdb5v11_04tree8LeafNodeIfLj3EE12getLastValueEv.exit63 ], [ %zInside.069, %if.else ] %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %cmp40.not = icmp eq i64 %indvars.iv.next, 16 br i1 %cmp40.not, label %for.inc55, label %for.body41, !llvm.loop !218 @@ -25990,11 +26038,12 @@ _ZNK7openvdb5v11_04tree12InternalNodeINS1_8LeafNodeIfLj3EEELj4EE13getFirstValueE %cond-lvalue.i = phi ptr [ %retval.0.i.i.i.i, %_ZNK7openvdb5v11_04tree8LeafNodeIfLj3EE13getFirstValueEv.exit.i ], [ %4, %if.then5 ] %9 = load float, ptr %cond-lvalue.i, align 4 %cmp8 = fcmp olt float %9, 0.000000e+00 + %frombool = zext i1 %cmp8 to i8 br label %for.body for.body: ; preds = %_ZNK7openvdb5v11_04tree12InternalNodeINS1_8LeafNodeIfLj3EEELj4EE13getFirstValueEv.exit, %for.inc58 %indvars.iv100 = phi i64 [ 0, %_ZNK7openvdb5v11_04tree12InternalNodeINS1_8LeafNodeIfLj3EEELj4EE13getFirstValueEv.exit ], [ %indvars.iv.next101, %for.inc58 ] - %xInside.089 = phi i1 [ %cmp8, %_ZNK7openvdb5v11_04tree12InternalNodeINS1_8LeafNodeIfLj3EEELj4EE13getFirstValueEv.exit ], [ %xInside.1, %for.inc58 ] + %xInside.089 = phi i8 [ %frombool, %_ZNK7openvdb5v11_04tree12InternalNodeINS1_8LeafNodeIfLj3EEELj4EE13getFirstValueEv.exit ], [ %xInside.1, %for.inc58 ] %10 = shl i64 %indvars.iv100, 10 %11 = lshr exact i64 %10, 6 %arrayidx.i = getelementptr inbounds nuw [512 x i64], ptr %mChildMask.i, i64 0, i64 %11 @@ -26034,15 +26083,16 @@ _ZNK7openvdb5v11_04tree12InternalNodeINS1_8LeafNodeIfLj3EEELj4EE12getLastValueEv %cond-lvalue.i36 = phi ptr [ %retval.0.i.i.i.i35, %_ZNK7openvdb5v11_04tree8LeafNodeIfLj3EE12getLastValueEv.exit.i ], [ %arrayidx5.i, %if.then14 ] %18 = load float, ptr %cond-lvalue.i36, align 4 %cmp19 = fcmp olt float %18, 0.000000e+00 + %frombool20 = zext i1 %cmp19 to i8 br label %if.end21 if.end21: ; preds = %_ZNK7openvdb5v11_04tree12InternalNodeINS1_8LeafNodeIfLj3EEELj4EE12getLastValueEv.exit, %for.body - %xInside.1 = phi i1 [ %cmp19, %_ZNK7openvdb5v11_04tree12InternalNodeINS1_8LeafNodeIfLj3EEELj4EE12getLastValueEv.exit ], [ %xInside.089, %for.body ] + %xInside.1 = phi i8 [ %frombool20, %_ZNK7openvdb5v11_04tree12InternalNodeINS1_8LeafNodeIfLj3EEELj4EE12getLastValueEv.exit ], [ %xInside.089, %for.body ] br label %for.body26 for.body26: ; preds = %if.end21, %for.inc55 %indvars.iv96 = phi i64 [ 0, %if.end21 ], [ %indvars.iv.next97, %for.inc55 ] - %yInside.087 = phi i1 [ %xInside.1, %if.end21 ], [ %yInside.1, %for.inc55 ] + %yInside.087 = phi i8 [ %xInside.1, %if.end21 ], [ %yInside.1, %for.inc55 ] %19 = shl i64 %indvars.iv96, 5 %20 = add nuw nsw i64 %19, %10 %shr.i37 = lshr i64 %20, 6 @@ -26086,15 +26136,17 @@ _ZNK7openvdb5v11_04tree12InternalNodeINS1_8LeafNodeIfLj3EEELj4EE12getLastValueEv %cond-lvalue.i56 = phi ptr [ %retval.0.i.i.i.i55, %_ZNK7openvdb5v11_04tree8LeafNodeIfLj3EE12getLastValueEv.exit.i52 ], [ %arrayidx5.i47, %if.then29 ] %27 = load float, ptr %cond-lvalue.i56, align 4 %cmp34 = fcmp olt float %27, 0.000000e+00 + %frombool35 = zext i1 %cmp34 to i8 br label %if.end36 if.end36: ; preds = %_ZNK7openvdb5v11_04tree12InternalNodeINS1_8LeafNodeIfLj3EEELj4EE12getLastValueEv.exit57, %for.body26 - %yInside.1 = phi i1 [ %cmp34, %_ZNK7openvdb5v11_04tree12InternalNodeINS1_8LeafNodeIfLj3EEELj4EE12getLastValueEv.exit57 ], [ %yInside.087, %for.body26 ] + %yInside.1 = phi i8 [ %frombool35, %_ZNK7openvdb5v11_04tree12InternalNodeINS1_8LeafNodeIfLj3EEELj4EE12getLastValueEv.exit57 ], [ %yInside.087, %for.body26 ] + %frombool38 = and i8 %yInside.1, 1 br label %for.body41 for.body41: ; preds = %if.end36, %for.inc %indvars.iv = phi i64 [ 0, %if.end36 ], [ %indvars.iv.next, %for.inc ] - %zInside.084 = phi i1 [ %yInside.1, %if.end36 ], [ %zInside.1, %for.inc ] + %zInside.084 = phi i8 [ %frombool38, %if.end36 ], [ %zInside.1, %for.inc ] %28 = add nuw nsw i64 %indvars.iv, %20 %shr.i58 = lshr i64 %28, 6 %idxprom.i59 = and i64 %shr.i58, 67108863 @@ -26137,17 +26189,19 @@ _ZNK7openvdb5v11_04tree12InternalNodeINS1_8LeafNodeIfLj3EEELj4EE12getLastValueEv %cond-lvalue.i77 = phi ptr [ %retval.0.i.i.i.i76, %_ZNK7openvdb5v11_04tree8LeafNodeIfLj3EE12getLastValueEv.exit.i73 ], [ %arrayidx5.i68, %if.then44 ] %36 = load float, ptr %cond-lvalue.i77, align 4 %cmp49 = fcmp olt float %36, 0.000000e+00 + %frombool50 = zext i1 %cmp49 to i8 br label %for.inc if.else: ; preds = %for.body41 - %cond-lvalue.idx = select i1 %zInside.084, i64 4, i64 0 + %cond-lvalue.idx = shl nuw nsw i8 %zInside.084, 2 + %cond-lvalue.idx = zext nneg i8 %37 to i64 %cond-lvalue = getelementptr inbounds nuw i8, ptr %this, i64 %cond-lvalue.idx %37 = load float, ptr %cond-lvalue, align 4 store float %37, ptr %arrayidx52, align 8 br label %for.inc for.inc: ; preds = %_ZNK7openvdb5v11_04tree12InternalNodeINS1_8LeafNodeIfLj3EEELj4EE12getLastValueEv.exit78, %if.else - %zInside.1 = phi i1 [ %cmp49, %_ZNK7openvdb5v11_04tree12InternalNodeINS1_8LeafNodeIfLj3EEELj4EE12getLastValueEv.exit78 ], [ %zInside.084, %if.else ] + %zInside.1 = phi i8 [ %frombool50, %_ZNK7openvdb5v11_04tree12InternalNodeINS1_8LeafNodeIfLj3EEELj4EE12getLastValueEv.exit78 ], [ %zInside.084, %if.else ] %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %cmp40.not = icmp eq i64 %indvars.iv.next, 32 br i1 %cmp40.not, label %for.inc55, label %for.body41, !llvm.loop !224 @@ -27524,11 +27578,12 @@ if.then8: ; preds = %_ZNK7openvdb5v11_04 %arrayidx = getelementptr inbounds nuw double, ptr %retval.0.i.i.i, i64 %idxprom %7 = load double, ptr %arrayidx, align 8 %cmp9 = fcmp olt double %7, 0.000000e+00 + %frombool = zext i1 %cmp9 to i8 br label %for.body for.body: ; preds = %if.then8, %for.inc53 %indvars.iv65 = phi i64 [ 0, %if.then8 ], [ %indvars.iv.next66, %for.inc53 ] - %xInside.054 = phi i1 [ %cmp9, %if.then8 ], [ %xInside.1, %for.inc53 ] + %xInside.054 = phi i8 [ %frombool, %if.then8 ], [ %xInside.1, %for.inc53 ] %8 = shl i64 %indvars.iv65, 6 %arrayidx.i = getelementptr inbounds nuw [8 x i64], ptr %mValueMask.i, i64 0, i64 %indvars.iv65 %9 = load i64, ptr %arrayidx.i, align 8 @@ -27540,15 +27595,16 @@ if.then15: ; preds = %for.body %arrayidx17 = getelementptr inbounds nuw double, ptr %retval.0.i.i.i, i64 %8 %10 = load double, ptr %arrayidx17, align 8 %cmp18 = fcmp olt double %10, 0.000000e+00 + %frombool19 = zext i1 %cmp18 to i8 br label %if.end20 if.end20: ; preds = %if.then15, %for.body - %xInside.1 = phi i1 [ %cmp18, %if.then15 ], [ %xInside.054, %for.body ] + %xInside.1 = phi i8 [ %frombool19, %if.then15 ], [ %xInside.054, %for.body ] br label %for.body25 for.body25: ; preds = %if.end20, %for.inc50 %indvars.iv60 = phi i64 [ 0, %if.end20 ], [ %indvars.iv.next61, %for.inc50 ] - %yInside.052 = phi i1 [ %xInside.1, %if.end20 ], [ %yInside.1, %for.inc50 ] + %yInside.052 = phi i8 [ %xInside.1, %if.end20 ], [ %yInside.1, %for.inc50 ] %11 = shl i64 %indvars.iv60, 3 %12 = add nuw nsw i64 %11, %8 %shr.i28 = lshr i64 %12, 6 @@ -27564,15 +27620,17 @@ if.then28: ; preds = %for.body25 %arrayidx30 = getelementptr inbounds nuw double, ptr %retval.0.i.i.i, i64 %12 %14 = load double, ptr %arrayidx30, align 8 %cmp31 = fcmp olt double %14, 0.000000e+00 + %frombool32 = zext i1 %cmp31 to i8 br label %if.end33 if.end33: ; preds = %if.then28, %for.body25 - %yInside.1 = phi i1 [ %cmp31, %if.then28 ], [ %yInside.052, %for.body25 ] + %yInside.1 = phi i8 [ %frombool32, %if.then28 ], [ %yInside.052, %for.body25 ] + %frombool35 = and i8 %yInside.1, 1 br label %for.body38 for.body38: ; preds = %if.end33, %for.inc %indvars.iv = phi i64 [ 0, %if.end33 ], [ %indvars.iv.next, %for.inc ] - %zInside.049 = phi i1 [ %yInside.1, %if.end33 ], [ %zInside.1, %for.inc ] + %zInside.049 = phi i8 [ %frombool35, %if.end33 ], [ %zInside.1, %for.inc ] %15 = add nuw nsw i64 %indvars.iv, %12 %shr.i36 = lshr i64 %15, 6 %idxprom.i37 = and i64 %shr.i36, 67108863 @@ -27588,10 +27646,12 @@ if.then41: ; preds = %for.body38 %arrayidx43 = getelementptr inbounds nuw double, ptr %retval.0.i.i.i, i64 %15 %18 = load double, ptr %arrayidx43, align 8 %cmp44 = fcmp olt double %18, 0.000000e+00 + %frombool45 = zext i1 %cmp44 to i8 br label %for.inc if.else: ; preds = %for.body38 - %cond.in.idx = select i1 %zInside.049, i64 8, i64 0 + %cond.in.idx = shl nuw nsw i8 %zInside.049, 3 + %cond.in.idx = zext nneg i8 %19 to i64 %cond.in = getelementptr inbounds nuw i8, ptr %this, i64 %cond.in.idx %cond = load double, ptr %cond.in, align 8 %arrayidx48 = getelementptr inbounds nuw double, ptr %retval.0.i.i.i, i64 %15 @@ -27599,7 +27659,7 @@ if.else: ; preds = %for.body38 br label %for.inc for.inc: ; preds = %if.then41, %if.else - %zInside.1 = phi i1 [ %cmp44, %if.then41 ], [ %zInside.049, %if.else ] + %zInside.1 = phi i8 [ %frombool45, %if.then41 ], [ %zInside.049, %if.else ] %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %cmp37.not = icmp eq i64 %indvars.iv.next, 8 br i1 %cmp37.not, label %for.inc50, label %for.body38, !llvm.loop !244 @@ -28384,11 +28444,12 @@ _ZNK7openvdb5v11_04tree8LeafNodeIdLj3EE13getFirstValueEv.exit: ; preds = %if.the %retval.0.i.i.i = select i1 %tobool.not.i.i.i, ptr @_ZZNK7openvdb5v11_04tree10LeafBufferIdLj3EE2atEjE5sZero, ptr %6 %7 = load double, ptr %retval.0.i.i.i, align 8 %cmp8 = fcmp olt double %7, 0.000000e+00 + %frombool = zext i1 %cmp8 to i8 br label %for.body for.body: ; preds = %_ZNK7openvdb5v11_04tree8LeafNodeIdLj3EE13getFirstValueEv.exit, %for.inc58 %indvars.iv85 = phi i64 [ 0, %_ZNK7openvdb5v11_04tree8LeafNodeIdLj3EE13getFirstValueEv.exit ], [ %indvars.iv.next86, %for.inc58 ] - %xInside.074 = phi i1 [ %cmp8, %_ZNK7openvdb5v11_04tree8LeafNodeIdLj3EE13getFirstValueEv.exit ], [ %xInside.1, %for.inc58 ] + %xInside.074 = phi i8 [ %frombool, %_ZNK7openvdb5v11_04tree8LeafNodeIdLj3EE13getFirstValueEv.exit ], [ %xInside.1, %for.inc58 ] %8 = shl i64 %indvars.iv85, 8 %9 = lshr exact i64 %8, 6 %arrayidx.i = getelementptr inbounds nuw [64 x i64], ptr %mChildMask.i, i64 0, i64 %9 @@ -28416,15 +28477,16 @@ _ZNK7openvdb5v11_04tree8LeafNodeIdLj3EE12getLastValueEv.exit: ; preds = %if.then %retval.0.i.i.i33 = select i1 %tobool.not.i.i.i32, ptr @_ZZNK7openvdb5v11_04tree10LeafBufferIdLj3EE2atEjE5sZero, ptr %arrayidx.i.i.i %14 = load double, ptr %retval.0.i.i.i33, align 8 %cmp19 = fcmp olt double %14, 0.000000e+00 + %frombool20 = zext i1 %cmp19 to i8 br label %if.end21 if.end21: ; preds = %_ZNK7openvdb5v11_04tree8LeafNodeIdLj3EE12getLastValueEv.exit, %for.body - %xInside.1 = phi i1 [ %cmp19, %_ZNK7openvdb5v11_04tree8LeafNodeIdLj3EE12getLastValueEv.exit ], [ %xInside.074, %for.body ] + %xInside.1 = phi i8 [ %frombool20, %_ZNK7openvdb5v11_04tree8LeafNodeIdLj3EE12getLastValueEv.exit ], [ %xInside.074, %for.body ] br label %for.body26 for.body26: ; preds = %if.end21, %for.inc55 %indvars.iv81 = phi i64 [ 0, %if.end21 ], [ %indvars.iv.next82, %for.inc55 ] - %yInside.072 = phi i1 [ %xInside.1, %if.end21 ], [ %yInside.1, %for.inc55 ] + %yInside.072 = phi i8 [ %xInside.1, %if.end21 ], [ %yInside.1, %for.inc55 ] %15 = shl i64 %indvars.iv81, 4 %16 = add nuw nsw i64 %15, %8 %shr.i34 = lshr i64 %16, 6 @@ -28456,15 +28518,17 @@ _ZNK7openvdb5v11_04tree8LeafNodeIdLj3EE12getLastValueEv.exit48: ; preds = %if.th %retval.0.i.i.i47 = select i1 %tobool.not.i.i.i45, ptr @_ZZNK7openvdb5v11_04tree10LeafBufferIdLj3EE2atEjE5sZero, ptr %arrayidx.i.i.i46 %21 = load double, ptr %retval.0.i.i.i47, align 8 %cmp34 = fcmp olt double %21, 0.000000e+00 + %frombool35 = zext i1 %cmp34 to i8 br label %if.end36 if.end36: ; preds = %_ZNK7openvdb5v11_04tree8LeafNodeIdLj3EE12getLastValueEv.exit48, %for.body26 - %yInside.1 = phi i1 [ %cmp34, %_ZNK7openvdb5v11_04tree8LeafNodeIdLj3EE12getLastValueEv.exit48 ], [ %yInside.072, %for.body26 ] + %yInside.1 = phi i8 [ %frombool35, %_ZNK7openvdb5v11_04tree8LeafNodeIdLj3EE12getLastValueEv.exit48 ], [ %yInside.072, %for.body26 ] + %frombool38 = and i8 %yInside.1, 1 br label %for.body41 for.body41: ; preds = %if.end36, %for.inc %indvars.iv = phi i64 [ 0, %if.end36 ], [ %indvars.iv.next, %for.inc ] - %zInside.069 = phi i1 [ %yInside.1, %if.end36 ], [ %zInside.1, %for.inc ] + %zInside.069 = phi i8 [ %frombool38, %if.end36 ], [ %zInside.1, %for.inc ] %22 = add nuw nsw i64 %indvars.iv, %16 %shr.i49 = lshr i64 %22, 6 %idxprom.i50 = and i64 %shr.i49, 67108863 @@ -28495,17 +28559,19 @@ _ZNK7openvdb5v11_04tree8LeafNodeIdLj3EE12getLastValueEv.exit63: ; preds = %if.th %retval.0.i.i.i62 = select i1 %tobool.not.i.i.i60, ptr @_ZZNK7openvdb5v11_04tree10LeafBufferIdLj3EE2atEjE5sZero, ptr %arrayidx.i.i.i61 %28 = load double, ptr %retval.0.i.i.i62, align 8 %cmp49 = fcmp olt double %28, 0.000000e+00 + %frombool50 = zext i1 %cmp49 to i8 br label %for.inc if.else: ; preds = %for.body41 - %cond-lvalue.idx = select i1 %zInside.069, i64 8, i64 0 + %cond-lvalue.idx = shl nuw nsw i8 %zInside.069, 3 + %cond-lvalue.idx = zext nneg i8 %29 to i64 %cond-lvalue = getelementptr inbounds nuw i8, ptr %this, i64 %cond-lvalue.idx %29 = load double, ptr %cond-lvalue, align 8 store double %29, ptr %arrayidx52, align 8 br label %for.inc for.inc: ; preds = %_ZNK7openvdb5v11_04tree8LeafNodeIdLj3EE12getLastValueEv.exit63, %if.else - %zInside.1 = phi i1 [ %cmp49, %_ZNK7openvdb5v11_04tree8LeafNodeIdLj3EE12getLastValueEv.exit63 ], [ %zInside.069, %if.else ] + %zInside.1 = phi i8 [ %frombool50, %_ZNK7openvdb5v11_04tree8LeafNodeIdLj3EE12getLastValueEv.exit63 ], [ %zInside.069, %if.else ] %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %cmp40.not = icmp eq i64 %indvars.iv.next, 16 br i1 %cmp40.not, label %for.inc55, label %for.body41, !llvm.loop !249 @@ -29278,11 +29344,12 @@ _ZNK7openvdb5v11_04tree12InternalNodeINS1_8LeafNodeIdLj3EEELj4EE13getFirstValueE %cond-lvalue.i = phi ptr [ %retval.0.i.i.i.i, %_ZNK7openvdb5v11_04tree8LeafNodeIdLj3EE13getFirstValueEv.exit.i ], [ %4, %if.then5 ] %9 = load double, ptr %cond-lvalue.i, align 8 %cmp8 = fcmp olt double %9, 0.000000e+00 + %frombool = zext i1 %cmp8 to i8 br label %for.body for.body: ; preds = %_ZNK7openvdb5v11_04tree12InternalNodeINS1_8LeafNodeIdLj3EEELj4EE13getFirstValueEv.exit, %for.inc58 %indvars.iv100 = phi i64 [ 0, %_ZNK7openvdb5v11_04tree12InternalNodeINS1_8LeafNodeIdLj3EEELj4EE13getFirstValueEv.exit ], [ %indvars.iv.next101, %for.inc58 ] - %xInside.089 = phi i1 [ %cmp8, %_ZNK7openvdb5v11_04tree12InternalNodeINS1_8LeafNodeIdLj3EEELj4EE13getFirstValueEv.exit ], [ %xInside.1, %for.inc58 ] + %xInside.089 = phi i8 [ %frombool, %_ZNK7openvdb5v11_04tree12InternalNodeINS1_8LeafNodeIdLj3EEELj4EE13getFirstValueEv.exit ], [ %xInside.1, %for.inc58 ] %10 = shl i64 %indvars.iv100, 10 %11 = lshr exact i64 %10, 6 %arrayidx.i = getelementptr inbounds nuw [512 x i64], ptr %mChildMask.i, i64 0, i64 %11 @@ -29322,15 +29389,16 @@ _ZNK7openvdb5v11_04tree12InternalNodeINS1_8LeafNodeIdLj3EEELj4EE12getLastValueEv %cond-lvalue.i36 = phi ptr [ %retval.0.i.i.i.i35, %_ZNK7openvdb5v11_04tree8LeafNodeIdLj3EE12getLastValueEv.exit.i ], [ %arrayidx5.i, %if.then14 ] %18 = load double, ptr %cond-lvalue.i36, align 8 %cmp19 = fcmp olt double %18, 0.000000e+00 + %frombool20 = zext i1 %cmp19 to i8 br label %if.end21 if.end21: ; preds = %_ZNK7openvdb5v11_04tree12InternalNodeINS1_8LeafNodeIdLj3EEELj4EE12getLastValueEv.exit, %for.body - %xInside.1 = phi i1 [ %cmp19, %_ZNK7openvdb5v11_04tree12InternalNodeINS1_8LeafNodeIdLj3EEELj4EE12getLastValueEv.exit ], [ %xInside.089, %for.body ] + %xInside.1 = phi i8 [ %frombool20, %_ZNK7openvdb5v11_04tree12InternalNodeINS1_8LeafNodeIdLj3EEELj4EE12getLastValueEv.exit ], [ %xInside.089, %for.body ] br label %for.body26 for.body26: ; preds = %if.end21, %for.inc55 %indvars.iv96 = phi i64 [ 0, %if.end21 ], [ %indvars.iv.next97, %for.inc55 ] - %yInside.087 = phi i1 [ %xInside.1, %if.end21 ], [ %yInside.1, %for.inc55 ] + %yInside.087 = phi i8 [ %xInside.1, %if.end21 ], [ %yInside.1, %for.inc55 ] %19 = shl i64 %indvars.iv96, 5 %20 = add nuw nsw i64 %19, %10 %shr.i37 = lshr i64 %20, 6 @@ -29374,15 +29442,17 @@ _ZNK7openvdb5v11_04tree12InternalNodeINS1_8LeafNodeIdLj3EEELj4EE12getLastValueEv %cond-lvalue.i56 = phi ptr [ %retval.0.i.i.i.i55, %_ZNK7openvdb5v11_04tree8LeafNodeIdLj3EE12getLastValueEv.exit.i52 ], [ %arrayidx5.i47, %if.then29 ] %27 = load double, ptr %cond-lvalue.i56, align 8 %cmp34 = fcmp olt double %27, 0.000000e+00 + %frombool35 = zext i1 %cmp34 to i8 br label %if.end36 if.end36: ; preds = %_ZNK7openvdb5v11_04tree12InternalNodeINS1_8LeafNodeIdLj3EEELj4EE12getLastValueEv.exit57, %for.body26 - %yInside.1 = phi i1 [ %cmp34, %_ZNK7openvdb5v11_04tree12InternalNodeINS1_8LeafNodeIdLj3EEELj4EE12getLastValueEv.exit57 ], [ %yInside.087, %for.body26 ] + %yInside.1 = phi i8 [ %frombool35, %_ZNK7openvdb5v11_04tree12InternalNodeINS1_8LeafNodeIdLj3EEELj4EE12getLastValueEv.exit57 ], [ %yInside.087, %for.body26 ] + %frombool38 = and i8 %yInside.1, 1 br label %for.body41 for.body41: ; preds = %if.end36, %for.inc %indvars.iv = phi i64 [ 0, %if.end36 ], [ %indvars.iv.next, %for.inc ] - %zInside.084 = phi i1 [ %yInside.1, %if.end36 ], [ %zInside.1, %for.inc ] + %zInside.084 = phi i8 [ %frombool38, %if.end36 ], [ %zInside.1, %for.inc ] %28 = add nuw nsw i64 %indvars.iv, %20 %shr.i58 = lshr i64 %28, 6 %idxprom.i59 = and i64 %shr.i58, 67108863 @@ -29425,17 +29495,19 @@ _ZNK7openvdb5v11_04tree12InternalNodeINS1_8LeafNodeIdLj3EEELj4EE12getLastValueEv %cond-lvalue.i77 = phi ptr [ %retval.0.i.i.i.i76, %_ZNK7openvdb5v11_04tree8LeafNodeIdLj3EE12getLastValueEv.exit.i73 ], [ %arrayidx5.i68, %if.then44 ] %36 = load double, ptr %cond-lvalue.i77, align 8 %cmp49 = fcmp olt double %36, 0.000000e+00 + %frombool50 = zext i1 %cmp49 to i8 br label %for.inc if.else: ; preds = %for.body41 - %cond-lvalue.idx = select i1 %zInside.084, i64 8, i64 0 + %cond-lvalue.idx = shl nuw nsw i8 %zInside.084, 3 + %cond-lvalue.idx = zext nneg i8 %37 to i64 %cond-lvalue = getelementptr inbounds nuw i8, ptr %this, i64 %cond-lvalue.idx %37 = load double, ptr %cond-lvalue, align 8 store double %37, ptr %arrayidx52, align 8 br label %for.inc for.inc: ; preds = %_ZNK7openvdb5v11_04tree12InternalNodeINS1_8LeafNodeIdLj3EEELj4EE12getLastValueEv.exit78, %if.else - %zInside.1 = phi i1 [ %cmp49, %_ZNK7openvdb5v11_04tree12InternalNodeINS1_8LeafNodeIdLj3EEELj4EE12getLastValueEv.exit78 ], [ %zInside.084, %if.else ] + %zInside.1 = phi i8 [ %frombool50, %_ZNK7openvdb5v11_04tree12InternalNodeINS1_8LeafNodeIdLj3EEELj4EE12getLastValueEv.exit78 ], [ %zInside.084, %if.else ] %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %cmp40.not = icmp eq i64 %indvars.iv.next, 32 br i1 %cmp40.not, label %for.inc55, label %for.body41, !llvm.loop !255 diff --git a/bench/postgres/optimized/vacuumlazy.ll b/bench/postgres/optimized/vacuumlazy.ll index 5395f98148c..b76c5b159ea 100644 --- a/bench/postgres/optimized/vacuumlazy.ll +++ b/bench/postgres/optimized/vacuumlazy.ll @@ -2771,11 +2771,10 @@ find_next_unskippable_block.exit: ; preds = %44, %47, %37, %39 store i32 %.03342, ptr %5, align 8 %62 = getelementptr inbounds nuw i8, ptr %1, i64 296 %63 = load i8, ptr %62, align 8, !range !4, !noundef !5 - %64 = trunc nuw i8 %63 to i1 - %spec.select = select i1 %64, i8 2, i8 0 - %65 = getelementptr inbounds nuw i8, ptr %1, i64 297 - %66 = load i8, ptr %65, align 1, !range !4, !noundef !5 - %.1 = or disjoint i8 %spec.select, %66 + %64 = shl nuw nsw i8 %63, 1 + %spec.select = getelementptr inbounds nuw i8, ptr %1, i64 297 + %65 = load i8, ptr %64, align 1, !range !4, !noundef !5 + %66 = or disjoint i8 %spec.select, %65 store i8 %.1, ptr %2, align 1 %67 = load i32, ptr %5, align 8 br label %68 diff --git a/bench/protobuf/optimized/extension_set_heavy.ll b/bench/protobuf/optimized/extension_set_heavy.ll index e7ad78a4dca..8a1efa983f2 100644 --- a/bench/protobuf/optimized/extension_set_heavy.ll +++ b/bench/protobuf/optimized/extension_set_heavy.ll @@ -841,8 +841,8 @@ cleanup.done: ; preds = %if.then8 if.then28: ; preds = %cleanup.done %lazy_.i.i = getelementptr inbounds nuw i8, ptr %21, i64 129 %23 = load i8, ptr %lazy_.i.i, align 1 - %tobool.i.i = trunc i8 %23 to i1 - %cond = select i1 %tobool.i.i, i8 1, i8 2 + %tobool.i.i = and i8 %23, 1 + %cond = sub nuw nsw i8 2, %tobool.i.i %is_lazy = getelementptr inbounds nuw i8, ptr %output, i64 15 store i8 %cond, ptr %is_lazy, align 1 br label %return diff --git a/bench/proxygen/optimized/StructuredHeadersEncoder.ll b/bench/proxygen/optimized/StructuredHeadersEncoder.ll index df539110519..cdd50036fd7 100644 --- a/bench/proxygen/optimized/StructuredHeadersEncoder.ll +++ b/bench/proxygen/optimized/StructuredHeadersEncoder.ll @@ -1347,10 +1347,10 @@ _ZN5boost3getIbbJldNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEENS_13a %storage_.i.i.i.i.i.i20 = getelementptr inbounds nuw i8, ptr %input, i64 16 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %ref.tmp.i.i.i14) %8 = load i8, ptr %storage_.i.i.i.i.i.i20, align 8 - %tobool = trunc i8 %8 to i1 %outputStream_.i21 = getelementptr inbounds nuw i8, ptr %this, i64 160 %call.i22 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %outputStream_.i21, i8 noundef signext 63) - %cond.i = select i1 %tobool, i8 49, i8 48 + %cond.i = and i8 %8, 1 + %cond.i = or disjoint i8 %9, 48 %call2.i = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %call.i22, i8 noundef signext %cond.i) br label %return diff --git a/bench/pybind11/optimized/test_numpy_dtypes.ll b/bench/pybind11/optimized/test_numpy_dtypes.ll index ced83cdec3c..b73578fe9f3 100644 --- a/bench/pybind11/optimized/test_numpy_dtypes.ll +++ b/bench/pybind11/optimized/test_numpy_dtypes.ll @@ -84800,23 +84800,23 @@ _ZSt5equalIN9__gnu_cxx17__normal_iteratorIPKlSt6vectorIlSaIlEEEES7_EbT_S8_T0_.ex %65 = load i64, ptr %64, align 8 %66 = icmp eq i64 %65, 1 %67 = load i64, ptr %63, align 8 - br i1 %66, label %68, label %69 + br i1 %66, label %67, label %68 -68: ; preds = %.lr.ph - store i64 %67, ptr %64, align 8 - br label %71 +67: ; preds = %.lr.ph + store i64 %66, ptr %63, align 8 + br label %70 -69: ; preds = %.lr.ph +68: ; preds = %.lr.ph %.not78 = icmp eq i64 %67, 1 - %.not79 = icmp eq i64 %67, %65 + %.not79 = icmp eq i64 %66, %64 %or.cond = or i1 %.not78, %.not79 br i1 %or.cond, label %71, label %70 -70: ; preds = %69 +70: ; preds = %68 call void @_ZN8pybind1113pybind11_failEPKc(ptr noundef nonnull @.str.275) #31 unreachable -71: ; preds = %68, %69 +71: ; preds = %67, %68 %.not97 = icmp eq ptr %63, %26 br i1 %.not97, label %.preheader.loopexit, label %.lr.ph, !llvm.loop !2360 diff --git a/bench/qemu/optimized/qemu-io-cmds.ll b/bench/qemu/optimized/qemu-io-cmds.ll index fd710023954..7bbf40cfd3a 100644 --- a/bench/qemu/optimized/qemu-io-cmds.ll +++ b/bench/qemu/optimized/qemu-io-cmds.ll @@ -1602,8 +1602,8 @@ define internal fastcc ptr @qemu_io_alloc(ptr noundef %0, i64 noundef range(i64 12: ; preds = %10, %4 %13 = load i8, ptr @qemuio_misalign, align 1, !range !11, !noundef !12 - %14 = trunc nuw i8 %13 to i1 - %spec.select12.idx = select i1 %14, i64 16, i64 0 + %14 = shl nuw nsw i8 %13, 4 + %spec.select12.idx = zext nneg i8 %14 to i64 %spec.select12 = getelementptr inbounds nuw i8, ptr %8, i64 %spec.select12.idx ret ptr %spec.select12 } @@ -2244,8 +2244,8 @@ define internal fastcc ptr @create_iovec(ptr noundef %0, ptr noundef %1, ptr nou qemu_io_alloc.exit: ; preds = %._crit_edge, %38 %40 = load i8, ptr @qemuio_misalign, align 1, !range !11, !noundef !12 - %41 = trunc nuw i8 %40 to i1 - %spec.select12.idx.i = select i1 %41, i64 16, i64 0 + %41 = shl nuw nsw i8 %40, 4 + %spec.select12.idx.i = zext nneg i8 %41 to i64 %spec.select12.i = getelementptr inbounds nuw i8, ptr %36, i64 %spec.select12.idx.i br i1 %10, label %.lr.ph73.preheader, label %.thread @@ -2704,9 +2704,9 @@ define internal void @write_help() #0 { ; Function Attrs: nounwind sspstrong uwtable define internal fastcc ptr @qemu_io_alloc_from_file(ptr noundef %0, i64 noundef range(i64 0, -9223372036854775808) %1, ptr noundef %2, i1 noundef zeroext %3) unnamed_addr #0 { %5 = load i8, ptr @qemuio_misalign, align 1, !range !11, !noundef !12 - %6 = trunc nuw i8 %5 to i1 - %7 = select i1 %6, i64 16, i64 0 - %8 = add nuw i64 %7, %1 + %6 = shl nuw nsw i8 %5, 4 + %7 = zext nneg i8 %6 to i64 + %8 = add nuw i64 %1, %7 %9 = tail call noalias ptr @fopen64(ptr noundef %2, ptr noundef nonnull @.str.19) %.not = icmp eq ptr %9, null br i1 %.not, label %10, label %fread.inline.exit @@ -2718,8 +2718,8 @@ define internal fastcc ptr @qemu_io_alloc_from_file(ptr noundef %0, i64 noundef fread.inline.exit: ; preds = %4 %11 = tail call ptr @blk_blockalign(ptr noundef %0, i64 noundef %8) #26 %12 = load i8, ptr @qemuio_misalign, align 1, !range !11, !noundef !12 - %13 = trunc nuw i8 %12 to i1 - %spec.select.idx = select i1 %13, i64 16, i64 0 + %13 = shl nuw nsw i8 %12, 4 + %spec.select.idx = zext nneg i8 %13 to i64 %spec.select = getelementptr inbounds nuw i8, ptr %11, i64 %spec.select.idx %14 = tail call i64 @fread(ptr noundef %spec.select, i64 noundef 1, i64 noundef range(i64 0, -9223372036854775808) %1, ptr noundef nonnull %9) %15 = tail call i32 @ferror(ptr noundef nonnull %9) #26 diff --git a/bench/redis/optimized/extent.ll b/bench/redis/optimized/extent.ll index 152e9ac27d7..180e1e362f4 100644 --- a/bench/redis/optimized/extent.ll +++ b/bench/redis/optimized/extent.ll @@ -551,28 +551,28 @@ ehooks_alloc.exit.i.i: ; preds = %91, %tsd_fetch_impl %97 = getelementptr inbounds nuw i8, ptr %1, i64 62232 %98 = atomicrmw add ptr %97, i64 1 monotonic, align 8 %99 = load i8, ptr %9, align 1, !tbaa !4, !range !38, !noundef !39 - %100 = trunc nuw i8 %99 to i1 - %101 = load i8, ptr %10, align 1, !tbaa !4, !range !38, !noundef !39 - %102 = trunc nuw i8 %101 to i1 - %103 = load i64, ptr %55, align 8, !tbaa !43 - %104 = and i64 %103, -17592454479872 - %105 = getelementptr inbounds nuw i8, ptr %55, i64 8 - store ptr %.0.i.i.i, ptr %105, align 8, !tbaa !40 - %106 = getelementptr inbounds nuw i8, ptr %55, i64 16 - %107 = load i64, ptr %106, align 8, !tbaa !36 - %108 = and i64 %107, 4095 - %109 = or i64 %108, %storemerge.i.i.i - store i64 %109, ptr %106, align 8, !tbaa !36 - %110 = getelementptr inbounds nuw i8, ptr %55, i64 32 - store i64 %98, ptr %110, align 8, !tbaa !57 - %111 = and i32 %.val79.i.i, -268431361 - %.masked.masked.i.i.i = zext i32 %111 to i64 - %112 = select i1 %100, i64 32768, i64 0 - %113 = select i1 %102, i64 8192, i64 0 - %114 = or disjoint i64 %112, %.masked.masked.i.i.i + %100 = load i8, ptr %10, align 1, !tbaa !4, !range !38, !noundef !39 + %101 = load i64, ptr %55, align 8, !tbaa !43 + %102 = and i64 %101, -17592454479872 + %103 = getelementptr inbounds nuw i8, ptr %55, i64 8 + store ptr %.0.i.i.i, ptr %103, align 8, !tbaa !40 + %105 = getelementptr inbounds nuw i8, ptr %55, i64 16 + %105 = load i64, ptr %105, align 8, !tbaa !36 + %106 = and i64 %105, 4095 + %107 = or i64 %106, %storemerge.i.i.i + store i64 %107, ptr %105, align 8, !tbaa !36 + %108 = getelementptr inbounds nuw i8, ptr %55, i64 32 + store i64 %98, ptr %108, align 8, !tbaa !57 + %110 = and i32 %.val79.i.i, -268431361 + %.masked.masked.i.i.i = zext i32 %110 to i64 + %111 = zext nneg i8 %99 to i64 + %.masked.masked.i.i.i = shl nuw nsw i64 %111, 15 + %112 = zext nneg i8 %100 to i64 + %113 = shl nuw nsw i64 %112, 13 + %114 = or disjoint i64 %111, %.masked.masked.i.i.i %115 = or disjoint i64 %114, %113 - %116 = or i64 %115, %104 - %117 = or disjoint i64 %116, 17592432459776 + %116 = or i64 %102, %115 + %117 = or i64 %116, 17592432459776 store i64 %117, ptr %55, align 8, !tbaa !43 %118 = getelementptr i8, ptr %1, i64 58384 %.val80.i.i = load ptr, ptr %118, align 8, !tbaa !18 @@ -595,7 +595,7 @@ ehooks_alloc.exit.i.i: ; preds = %91, %tsd_fetch_impl br label %125 125: ; preds = %124, %122 - %.val49.i.i.i = load ptr, ptr %105, align 8, !tbaa !40 + %.val49.i.i.i = load ptr, ptr %103, align 8, !tbaa !40 %126 = ptrtoint ptr %.val49.i.i.i to i64 %127 = and i64 %126, -4096 %128 = add i64 %38, -1 @@ -603,7 +603,7 @@ ehooks_alloc.exit.i.i: ; preds = %91, %tsd_fetch_impl %130 = sub i64 0, %38 %131 = and i64 %129, %130 %132 = sub i64 %131, %127 - %.val47.i.i.i = load i64, ptr %106, align 8, !tbaa !36 + %.val47.i.i.i = load i64, ptr %104, align 8, !tbaa !36 %133 = and i64 %.val47.i.i.i, -4096 %134 = add i64 %132, %5 %135 = icmp ult i64 %133, %134 @@ -875,32 +875,32 @@ ehooks_alloc.exit: ; preds = %22, %tsd_fetch_impl %56 = getelementptr inbounds nuw i8, ptr %1, i64 62232 %57 = atomicrmw add ptr %56, i64 1 monotonic, align 8 %58 = load i8, ptr %9, align 1, !tbaa !4, !range !38, !noundef !39 - %59 = trunc nuw i8 %58 to i1 - %60 = load i8, ptr %7, align 1, !tbaa !4, !range !38, !noundef !39 - %61 = trunc nuw i8 %60 to i1 - %62 = load i8, ptr @je_opt_retain, align 1, !tbaa !4, !range !38, !noundef !39 - %63 = load i64, ptr %14, align 8, !tbaa !43 - %64 = and i64 %63, -17592454479872 - %65 = getelementptr inbounds nuw i8, ptr %14, i64 8 - store ptr %.0.i, ptr %65, align 8, !tbaa !40 - %66 = getelementptr inbounds nuw i8, ptr %14, i64 16 - %67 = load i64, ptr %66, align 8, !tbaa !36 - %68 = and i64 %67, 4095 - %69 = or i64 %68, %4 - store i64 %69, ptr %66, align 8, !tbaa !36 - %70 = getelementptr inbounds nuw i8, ptr %14, i64 32 - store i64 %57, ptr %70, align 8, !tbaa !57 - %71 = and i32 %.val33, -268431361 - %72 = select i1 %59, i64 32768, i64 0 - %73 = select i1 %61, i64 8192, i64 0 - %.not.i = icmp eq i8 %62, 0 + %59 = load i8, ptr %7, align 1, !tbaa !4, !range !38, !noundef !39 + %60 = load i8, ptr @je_opt_retain, align 1, !tbaa !4, !range !38, !noundef !39 + %61 = load i64, ptr %14, align 8, !tbaa !43 + %62 = and i64 %61, -17592454479872 + %63 = getelementptr inbounds nuw i8, ptr %14, i64 8 + store ptr %.0.i, ptr %63, align 8, !tbaa !40 + %65 = getelementptr inbounds nuw i8, ptr %14, i64 16 + %65 = load i64, ptr %65, align 8, !tbaa !36 + %66 = and i64 %65, 4095 + %67 = or i64 %66, %4 + store i64 %67, ptr %64, align 8, !tbaa !36 + %69 = getelementptr inbounds nuw i8, ptr %14, i64 32 + store i64 %57, ptr %68, align 8, !tbaa !57 + %70 = and i32 %.val33, -268431361 + %70 = zext nneg i8 %58 to i64 + %71 = shl nuw nsw i64 %70, 15 + %72 = zext nneg i8 %59 to i64 + %73 = shl nuw nsw i64 %72, 13 + %.not.i = icmp eq i8 %60, 0 %74 = select i1 %.not.i, i64 0, i64 17592186044416 - %75 = or disjoint i32 %71, 246415360 + %75 = or disjoint i32 %70, 246415360 %76 = zext i32 %75 to i64 - %77 = or disjoint i64 %72, %76 - %78 = or disjoint i64 %77, %73 - %79 = or disjoint i64 %78, %74 - %80 = or i64 %79, %64 + %77 = or disjoint i64 %71, %76 + %78 = or disjoint i64 %74, %73 + %79 = or disjoint i64 %78, %62 + %80 = or i64 %79, %77 store i64 %80, ptr %14, align 8, !tbaa !43 %81 = getelementptr i8, ptr %1, i64 58384 %.val = load ptr, ptr %81, align 8, !tbaa !18 diff --git a/bench/regex-rs/optimized/1pxsmct4oxs5dlep.ll b/bench/regex-rs/optimized/1pxsmct4oxs5dlep.ll index d2f2d61b77b..a08a13a62fa 100644 --- a/bench/regex-rs/optimized/1pxsmct4oxs5dlep.ll +++ b/bench/regex-rs/optimized/1pxsmct4oxs5dlep.ll @@ -7823,53 +7823,59 @@ define internal fastcc void @_ZN12regex_syntax7unicode23symbolic_name_normalize1 13: ; preds = %3 %bcmp.i.i = tail call i32 @bcmp(ptr noundef nonnull readonly align 1 dereferenceable(2) %10, ptr noundef nonnull dereferenceable(2) @anon.ee024262027212e939cdd9996d089225.4529, i64 2), !alias.scope !778 %14 = icmp eq i32 %bcmp.i.i, 0 - br i1 %14, label %.thread.i, label %16 + br i1 %14, label %24, label %16 -.thread.i: ; preds = %20, %18, %16, %13, %3 - %.021.i = phi i64 [ 0, %3 ], [ 2, %18 ], [ 2, %16 ], [ 2, %13 ], [ %spec.select.i, %20 ] - %.019.i = phi i1 [ false, %3 ], [ true, %18 ], [ true, %16 ], [ true, %13 ], [ %21, %20 ] +.thread.i: ; preds = %24, %3 + %.021.i = phi i64 [ 0, %3 ], [ %spec.select.i, %24 ] + %.019.i = phi i1 [ false, %3 ], [ %26, %24 ] %15 = icmp ult i64 %.021.i, %2 br i1 %15, label %.lr.ph.i, label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$8truncate17hba59acbf661a4888E.exit" 16: ; preds = %13 %bcmp.i27.i = tail call i32 @bcmp(ptr noundef nonnull readonly align 1 dereferenceable(2) %10, ptr noundef nonnull dereferenceable(2) @anon.ee024262027212e939cdd9996d089225.4531, i64 2), !alias.scope !782 %17 = icmp eq i32 %bcmp.i27.i, 0 - br i1 %17, label %.thread.i, label %18 + br i1 %17, label %24, label %18 18: ; preds = %16 %bcmp.i28.i = tail call i32 @bcmp(ptr noundef nonnull readonly align 1 dereferenceable(2) %10, ptr noundef nonnull dereferenceable(2) @anon.ee024262027212e939cdd9996d089225.4533, i64 2), !alias.scope !786 %19 = icmp eq i32 %bcmp.i28.i, 0 - br i1 %19, label %.thread.i, label %20 + br i1 %19, label %24, label %20 20: ; preds = %18 %bcmp.i29.i = tail call i32 @bcmp(ptr noundef nonnull readonly align 1 dereferenceable(2) %10, ptr noundef nonnull dereferenceable(2) @anon.ee024262027212e939cdd9996d089225.4535, i64 2), !alias.scope !790 - %bcmp.i29.fr.i = freeze i32 %bcmp.i29.i - %21 = icmp eq i32 %bcmp.i29.fr.i, 0 - %spec.select.i = select i1 %21, i64 2, i64 0 - br label %.thread.i - -.outer._crit_edge.i: ; preds = %.outer.i, %39 - %.0.ph.lcssa35.i = phi i64 [ %.0.ph39.i, %39 ], [ %.2.i, %.outer.i ] - %22 = icmp eq i64 %.0.ph.lcssa35.i, 1 - %or.cond2.i = select i1 %.019.i, i1 %22, i1 false - br i1 %or.cond2.i, label %26, label %23 - -23: ; preds = %33, %26, %.outer._crit_edge.i - %.1.i = phi i64 [ 3, %33 ], [ 1, %26 ], [ %.0.ph.lcssa35.i, %.outer._crit_edge.i ] - %24 = icmp ugt i64 %.1.i, %2 - br i1 %24, label %25, label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$8truncate17hba59acbf661a4888E.exit" - -25: ; preds = %23 + %bcmp.i29.fr.i = icmp eq i32 %bcmp.i29.i, 0 + %21 = zext i1 %bcmp.i29.fr.i to i8 + br label %24 + +24: ; preds = %21, %19, %17, %13 + %.120.i = phi i8 [ %23, %21 ], [ 1, %19 ], [ 1, %17 ], [ 1, %13 ] + %.0.ph.lcssa35.i = shl nuw nsw i8 %.120.i, 1 + %22 = zext nneg i8 %.0.ph.lcssa35.i to i64 + %or.cond2.i = trunc nuw i8 %.120.i to i1 + br label %15 + +23: ; preds = %.outer.i, %44 + %.1.i = phi i64 [ %.0.ph39.i, %39 ], [ %.2.i, %.outer.i ] + %24 = icmp eq i64 %.1.i, 1 + %or.cond2.i = select i1 %.019.i, i1 %24, i1 false + br i1 %or.cond2.i, label %31, label %28 + +28: ; preds = %38, %31, %.outer._crit_edge.i + %.1.i = phi i64 [ 3, %38 ], [ 1, %31 ], [ %.0.ph.lcssa35.i, %.outer._crit_edge.i ] + %29 = icmp ugt i64 %.1.i, %2 + br i1 %29, label %30, label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$8truncate17hba59acbf661a4888E.exit" + +30: ; preds = %28 invoke void @_ZN4core5slice5index24slice_end_index_len_fail17h9163fa4abd3ca1acE(i64 noundef %.1.i, i64 noundef %2, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.ee024262027212e939cdd9996d089225.4540) #23 to label %.noexc unwind label %82 -.noexc: ; preds = %25 +.noexc: ; preds = %30 unreachable 26: ; preds = %.outer._crit_edge.i %27 = load i8, ptr %10, align 1, !alias.scope !794, !noundef !5 %28 = icmp eq i8 %27, 99 - br i1 %28, label %29, label %23 + br i1 %28, label %29, label %28 29: ; preds = %26 store i8 105, ptr %10, align 1, !alias.scope !794 @@ -7885,7 +7891,7 @@ define internal fastcc void @_ZN12regex_syntax7unicode23symbolic_name_normalize1 33: ; preds = %30 %34 = getelementptr inbounds nuw i8, ptr %10, i64 2 store i8 99, ptr %34, align 1, !alias.scope !794 - br label %23 + br label %28 35: ; preds = %.lr.ph.i, %39 %.sroa.03.036.i = phi i64 [ %.sroa.03.0.ph38.i, %.lr.ph.i ], [ %36, %39 ] @@ -7952,8 +7958,8 @@ define internal fastcc void @_ZN12regex_syntax7unicode23symbolic_name_normalize1 .cont: ; preds = %.invoke unreachable -"_ZN5alloc3vec16Vec$LT$T$C$A$GT$8truncate17hba59acbf661a4888E.exit": ; preds = %.thread.i, %23 - %.156.i22 = phi i64 [ 0, %.thread.i ], [ %.1.i, %23 ] +"_ZN5alloc3vec16Vec$LT$T$C$A$GT$8truncate17hba59acbf661a4888E.exit": ; preds = %.thread.i, %28 + %.156.i22 = phi i64 [ 0, %.thread.i ], [ %.1.i, %28 ] store i64 %.156.i22, ptr %.sroa.6.0..sroa_idx.i, align 8, !alias.scope !798 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %.sroa.6.sroa.0) call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %6) @@ -8045,7 +8051,7 @@ define internal fastcc void @_ZN12regex_syntax7unicode23symbolic_name_normalize1 %eh.lpad-body20 = phi { ptr, i32 } [ %83, %82 ], [ %65, %64 ], [ %77, %76 ] resume { ptr, i32 } %eh.lpad-body20 -82: ; preds = %.invoke, %25 +82: ; preds = %.invoke, %30 %83 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h8ec34e6d16a570e7E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %7) #24 diff --git a/bench/regex-rs/optimized/33whcn8n29l9c6ys.ll b/bench/regex-rs/optimized/33whcn8n29l9c6ys.ll index 046219266db..6bd1ac3a359 100644 --- a/bench/regex-rs/optimized/33whcn8n29l9c6ys.ll +++ b/bench/regex-rs/optimized/33whcn8n29l9c6ys.ll @@ -2729,9 +2729,9 @@ _ZN14regex_automata3dfa7onepass3DFA10transition17hd230cc2c96e6e830E.exit: ; pred %45 = getelementptr inbounds [0 x i64], ptr %.val.i, i64 0, i64 %42 %46 = load i64, ptr %45, align 8, !noalias !336, !noundef !4 %47 = load i8, ptr %24, align 8, !range !282, !noundef !4 - %48 = trunc nuw i8 %47 to i1 - %..i = select i1 %48, i64 4398046511104, i64 0 - %.reass = or i64 %..i, %invariant.op + %48 = zext nneg i8 %47 to i64 + %..i = shl nuw nsw i64 %49, 42 + %.reass = or i64 %invariant.op, %..i %49 = icmp ult i64 %46, 8796093022208 br i1 %49, label %_ZN14regex_automata3dfa7onepass3DFA14set_transition17he0b34ad8891b1d43E.exit, label %51 diff --git a/bench/rocksdb/optimized/block_based_table_reader.ll b/bench/rocksdb/optimized/block_based_table_reader.ll index 68e2b193667..a477f2be416 100644 --- a/bench/rocksdb/optimized/block_based_table_reader.ll +++ b/bench/rocksdb/optimized/block_based_table_reader.ll @@ -24460,13 +24460,12 @@ if.end196: ; preds = %if.else195, %if.the to label %if.end201 unwind label %lpad89.loopexit.split-lp if.end201: ; preds = %if.end196, %land.lhs.true183, %if.end180 - %tobool202 = trunc nuw i8 %done.2 to i1 - %not.tobool202 = xor i1 %tobool202, true + %tobool202 = icmp eq i8 %done.2, 0 br label %cleanup205 cleanup205: ; preds = %invoke.cont117, %_ZNKSt14default_deleteIA_KcEclIS0_EENSt9enable_ifIXsr14is_convertibleIPA_T_PS1_EE5valueEvE4typeEPS5_.exit.i.i.i.i.i138, %invoke.cont106, %_ZNKSt14default_deleteIA_KcEclIS0_EENSt9enable_ifIXsr14is_convertibleIPA_T_PS1_EE5valueEvE4typeEPS5_.exit.i.i.i.i.i, %if.end201, %invoke.cont176 %done.1 = phi i8 [ %done.4, %invoke.cont176 ], [ %done.2, %if.end201 ], [ 0, %_ZNKSt14default_deleteIA_KcEclIS0_EENSt9enable_ifIXsr14is_convertibleIPA_T_PS1_EE5valueEvE4typeEPS5_.exit.i.i.i.i.i ], [ 0, %invoke.cont106 ], [ 0, %_ZNKSt14default_deleteIA_KcEclIS0_EENSt9enable_ifIXsr14is_convertibleIPA_T_PS1_EE5valueEvE4typeEPS5_.exit.i.i.i.i.i138 ], [ 0, %invoke.cont117 ] - %cleanup.dest.slot.0 = phi i1 [ false, %invoke.cont176 ], [ %not.tobool202, %if.end201 ], [ false, %_ZNKSt14default_deleteIA_KcEclIS0_EENSt9enable_ifIXsr14is_convertibleIPA_T_PS1_EE5valueEvE4typeEPS5_.exit.i.i.i.i.i ], [ false, %invoke.cont106 ], [ false, %_ZNKSt14default_deleteIA_KcEclIS0_EENSt9enable_ifIXsr14is_convertibleIPA_T_PS1_EE5valueEvE4typeEPS5_.exit.i.i.i.i.i138 ], [ false, %invoke.cont117 ] + %cleanup.dest.slot.0 = phi i1 [ false, %invoke.cont176 ], [ %tobool202, %if.end201 ], [ false, %_ZNKSt14default_deleteIA_KcEclIS0_EENSt9enable_ifIXsr14is_convertibleIPA_T_PS1_EE5valueEvE4typeEPS5_.exit.i.i.i.i.i ], [ false, %invoke.cont106 ], [ false, %_ZNKSt14default_deleteIA_KcEclIS0_EENSt9enable_ifIXsr14is_convertibleIPA_T_PS1_EE5valueEvE4typeEPS5_.exit.i.i.i.i.i138 ], [ false, %invoke.cont117 ] %151 = load ptr, ptr %state_.i94, align 8 %cmp.not.i.i315 = icmp eq ptr %151, null br i1 %cmp.not.i.i315, label %_ZN7rocksdb6StatusD2Ev.exit317, label %_ZNKSt14default_deleteIA_KcEclIS0_EENSt9enable_ifIXsr14is_convertibleIPA_T_PS1_EE5valueEvE4typeEPS5_.exit.i.i316 @@ -24496,7 +24495,7 @@ for.inc212: ; preds = %_ZN7rocksdb13DataBl %vtable213 = load ptr, ptr %call2.i49, align 8 %vfn214 = getelementptr inbounds nuw i8, ptr %vtable213, i64 64 %153 = load ptr, ptr %vfn214, align 8 - invoke void %153(ptr noundef nonnull align 8 dereferenceable(40) %call2.i49) + invoke void %154(ptr noundef nonnull align 8 dereferenceable(40) %call2.i49) to label %for.cond unwind label %lpad43.loopexit, !llvm.loop !144 ehcleanup: ; preds = %lpad89.loopexit, %lpad89.loopexit.split-lp, %_ZNSt10unique_ptrIA_KcSt14default_deleteIS1_EED2Ev.exit11.i, %_ZNSt10unique_ptrIA_KcSt14default_deleteIS1_EED2Ev.exit11.i480, %_ZNSt10unique_ptrIA_KcSt14default_deleteIS1_EED2Ev.exit11.i544, %_ZNSt10unique_ptrIA_KcSt14default_deleteIS1_EED2Ev.exit11.i512, %_ZNSt10unique_ptrIA_KcSt14default_deleteIS1_EED2Ev.exit11.i448, %_ZN7rocksdb6StatusD2Ev.exit178 @@ -24543,7 +24542,7 @@ if.then.i329.invoke: ; preds = %if.then220 %vtable.i336 = load ptr, ptr %158, align 8 %vfn.i337 = getelementptr inbounds nuw i8, ptr %vtable.i336, i64 176 %160 = load ptr, ptr %vfn.i337, align 8 - invoke void %160(ptr noundef nonnull align 8 dereferenceable(33) %158, i32 noundef %., i64 noundef 1) + invoke void %161(ptr noundef nonnull align 8 dereferenceable(33) %158, i32 noundef %., i64 noundef 1) to label %if.end231 unwind label %lpad43.loopexit.split-lp if.end231: ; preds = %if.then220, %if.then.i329.invoke @@ -24802,7 +24801,7 @@ _ZNKSt14default_deleteIN7rocksdb20InternalIteratorBaseINS0_10IndexValueEEEEclEPS %vtable.i.i387 = load ptr, ptr %call2.i49, align 8 %vfn.i.i388 = getelementptr inbounds nuw i8, ptr %vtable.i.i387, i64 8 %203 = load ptr, ptr %vfn.i.i388, align 8 - call void %203(ptr noundef nonnull align 8 dereferenceable(40) %call2.i49) #34 + call void %204(ptr noundef nonnull align 8 dereferenceable(40) %call2.i49) #34 br label %_ZNSt10unique_ptrIN7rocksdb20InternalIteratorBaseINS0_10IndexValueEEESt14default_deleteIS3_EED2Ev.exit _ZNSt10unique_ptrIN7rocksdb20InternalIteratorBaseINS0_10IndexValueEEESt14default_deleteIS3_EED2Ev.exit: ; preds = %if.end302, %_ZNKSt14default_deleteIN7rocksdb20InternalIteratorBaseINS0_10IndexValueEEEEclEPS3_.exit.i @@ -24841,7 +24840,7 @@ _ZNKSt14default_deleteIN7rocksdb20InternalIteratorBaseINS0_10IndexValueEEEEclEPS %vtable.i.i394 = load ptr, ptr %call2.i49, align 8 %vfn.i.i395 = getelementptr inbounds nuw i8, ptr %vtable.i.i394, i64 8 %206 = load ptr, ptr %vfn.i.i395, align 8 - call void %206(ptr noundef nonnull align 8 dereferenceable(40) %call2.i49) #34 + call void %207(ptr noundef nonnull align 8 dereferenceable(40) %call2.i49) #34 br label %ehcleanup304 ehcleanup304: ; preds = %_ZNKSt14default_deleteIN7rocksdb20InternalIteratorBaseINS0_10IndexValueEEEEclEPS3_.exit.i393, %ehcleanup303, %lpad31 diff --git a/bench/rocksdb/optimized/ldb_cmd.ll b/bench/rocksdb/optimized/ldb_cmd.ll index 0be36173b14..9ce3f3f0d80 100644 --- a/bench/rocksdb/optimized/ldb_cmd.ll +++ b/bench/rocksdb/optimized/ldb_cmd.ll @@ -38746,8 +38746,8 @@ invoke.cont: tail call void @_ZN7rocksdb10LDBCommand19OverrideBaseOptionsEv(ptr noundef nonnull align 8 dereferenceable(2064) %this) %verbose_ = getelementptr inbounds nuw i8, ptr %this, i64 2064 %0 = load i8, ptr %verbose_, align 8 - %tobool = trunc i8 %0 to i1 - %cond = select i1 %tobool, i8 1, i8 2 + %tobool = and i8 %0, 1 + %cond = sub nuw nsw i8 2, %tobool %call = tail call noalias noundef nonnull dereferenceable(24) ptr @_Znwm(i64 noundef 24) #33 %kDoNotSupportGetLogFileSize.i.i = getelementptr inbounds nuw i8, ptr %call, i64 8 store i64 -1, ptr %kDoNotSupportGetLogFileSize.i.i, align 8 @@ -47623,8 +47623,8 @@ invoke.cont: tail call void %0(ptr noundef nonnull align 8 dereferenceable(2064) %this) %verbose_ = getelementptr inbounds nuw i8, ptr %this, i64 2064 %1 = load i8, ptr %verbose_, align 8 - %tobool = trunc i8 %1 to i1 - %cond = select i1 %tobool, i8 1, i8 2 + %tobool = and i8 %1, 1 + %cond = sub nuw nsw i8 2, %tobool %options_ = getelementptr inbounds nuw i8, ptr %this, i64 400 %call = tail call noalias noundef nonnull dereferenceable(24) ptr @_Znwm(i64 noundef 24) #33 %kDoNotSupportGetLogFileSize.i.i = getelementptr inbounds nuw i8, ptr %call, i64 8 diff --git a/bench/rust-analyzer-rs/optimized/1j91i64oabb508eh.ll b/bench/rust-analyzer-rs/optimized/1j91i64oabb508eh.ll index 4d9816c9426..c1b47d8aa6e 100644 --- a/bench/rust-analyzer-rs/optimized/1j91i64oabb508eh.ll +++ b/bench/rust-analyzer-rs/optimized/1j91i64oabb508eh.ll @@ -4177,11 +4177,10 @@ define hidden void @"_ZN10serde_json5value2de78_$LT$impl$u20$serde..de..Deserial tail call void @llvm.experimental.noalias.scope.decl(metadata !1226) tail call void @llvm.experimental.noalias.scope.decl(metadata !1229) %8 = load i64, ptr %3, align 8, !range !214, !alias.scope !1229, !noalias !1231, !noundef !12 - %trunc.i.i = trunc nuw i64 %8 to i1 %9 = getelementptr inbounds nuw i8, ptr %3, i64 8 %10 = load ptr, ptr %9, align 8, !alias.scope !1229, !noalias !1231 %.sink1.i.i = ptrtoint ptr %10 to i64 - %.sink.i.i = select i1 %trunc.i.i, i64 2, i64 1 + %.sink.i.i = add nuw nsw i64 %8, 1 %11 = getelementptr inbounds nuw i8, ptr %0, i64 8 store i64 %.sink1.i.i, ptr %11, align 8, !alias.scope !1232, !noalias !1233 store i64 %.sink.i.i, ptr %0, align 8, !alias.scope !1232, !noalias !1233 @@ -24727,11 +24726,10 @@ define hidden void @"_ZN4core6result19Result$LT$T$C$E$GT$3map17hdd5aa1f053caf977 ; Function Attrs: inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite) uwtable define hidden void @"_ZN4core6result19Result$LT$T$C$E$GT$3map17hdf7e43f3360ca9ecE.llvm.15439407322995335751"(ptr noalias noundef writeonly sret({ i64, [1 x i64] }) align 8 captures(none) dereferenceable(16) initializes((0, 16)) %0, ptr noalias noundef readonly align 8 captures(none) dereferenceable(16) %1) unnamed_addr #1 { %3 = load i64, ptr %1, align 8, !range !214, !noundef !12 - %trunc = trunc nuw i64 %3 to i1 %4 = getelementptr inbounds nuw i8, ptr %1, i64 8 %5 = load ptr, ptr %4, align 8 %.sink1 = ptrtoint ptr %5 to i64 - %.sink = select i1 %trunc, i64 2, i64 1 + %.sink = add nuw nsw i64 %3, 1 %6 = getelementptr inbounds nuw i8, ptr %0, i64 8 store i64 %.sink1, ptr %6, align 8 store i64 %.sink, ptr %0, align 8 @@ -31871,11 +31869,10 @@ define hidden void @"_ZN5serde2de5impls82_$LT$impl$u20$serde..de..Deserialize$u2 tail call void @llvm.experimental.noalias.scope.decl(metadata !7946) tail call void @llvm.experimental.noalias.scope.decl(metadata !7949) %8 = load i64, ptr %3, align 8, !range !214, !alias.scope !7949, !noalias !7951, !noundef !12 - %trunc.i.i.i = trunc nuw i64 %8 to i1 %9 = getelementptr inbounds nuw i8, ptr %3, i64 8 %10 = load ptr, ptr %9, align 8, !alias.scope !7949, !noalias !7951 %.sink1.i.i.i = ptrtoint ptr %10 to i64 - %.sink.i.i.i = select i1 %trunc.i.i.i, i64 2, i64 1 + %.sink.i.i.i = add nuw nsw i64 %8, 1 %11 = getelementptr inbounds nuw i8, ptr %0, i64 8 store i64 %.sink1.i.i.i, ptr %11, align 8, !alias.scope !7952, !noalias !7953 store i64 %.sink.i.i.i, ptr %0, align 8, !alias.scope !7952, !noalias !7953 @@ -45194,11 +45191,10 @@ define hidden void @"_ZN79_$LT$serde..de..impls..OptionVisitor$LT$T$GT$$u20$as$u tail call void @llvm.experimental.noalias.scope.decl(metadata !11789) tail call void @llvm.experimental.noalias.scope.decl(metadata !11792) %4 = load i64, ptr %3, align 8, !range !214, !alias.scope !11792, !noalias !11789, !noundef !12 - %trunc.i = trunc nuw i64 %4 to i1 %5 = getelementptr inbounds nuw i8, ptr %3, i64 8 %6 = load ptr, ptr %5, align 8, !alias.scope !11792, !noalias !11789 %.sink1.i = ptrtoint ptr %6 to i64 - %.sink.i = select i1 %trunc.i, i64 2, i64 1 + %.sink.i = add nuw nsw i64 %4, 1 %7 = getelementptr inbounds nuw i8, ptr %0, i64 8 store i64 %.sink1.i, ptr %7, align 8, !alias.scope !11789, !noalias !11792 store i64 %.sink.i, ptr %0, align 8, !alias.scope !11789, !noalias !11792 diff --git a/bench/rust-analyzer-rs/optimized/1yf6pyfk8ihkfv63.ll b/bench/rust-analyzer-rs/optimized/1yf6pyfk8ihkfv63.ll index b4534c35f65..e3fe6ce7933 100644 --- a/bench/rust-analyzer-rs/optimized/1yf6pyfk8ihkfv63.ll +++ b/bench/rust-analyzer-rs/optimized/1yf6pyfk8ihkfv63.ll @@ -78968,42 +78968,46 @@ define hidden void @"_ZN13rust_analyzer6config9get_field28_$u7b$$u7b$closure$u7d %.sroa.03.0.copyload.i.i = load i64, ptr %20, align 8, !alias.scope !17455, !noalias !17456 store i64 -9223372036854775808, ptr %20, align 8, !alias.scope !17455, !noalias !17456 %24 = icmp eq i64 %.sroa.03.0.copyload.i.i, -9223372036854775808 - br i1 %24, label %.noexc2.i.i, label %25 + br i1 %24, label %"_ZN5serde2de5impls82_$LT$impl$u20$serde..de..Deserialize$u20$for$u20$core..option..Option$LT$T$GT$$GT$11deserialize17hf6a2afd4ed15ef38E.exit.thread.i.i", label %25 + +"_ZN5serde2de5impls82_$LT$impl$u20$serde..de..Deserialize$u20$for$u20$core..option..Option$LT$T$GT$$GT$11deserialize17hf6a2afd4ed15ef38E.exit.thread.i.i": ; preds = %23 + call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %9), !noalias !17457 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %9, ptr noundef nonnull align 8 dereferenceable(24) %13, i64 24, i1 false) + br label %.noexc2.i.i 25: ; preds = %23 %.sroa.5.0..sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %20, i64 8 - call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %8), !noalias !17457 - store i64 %.sroa.03.0.copyload.i.i, ptr %8, align 8, !noalias !17464 + call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %8), !noalias !17458 + store i64 %.sroa.03.0.copyload.i.i, ptr %8, align 8, !noalias !17465 %.sroa.5.0..sroa_idx5.i.i = getelementptr inbounds nuw i8, ptr %8, i64 8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %.sroa.5.0..sroa_idx5.i.i, ptr noundef nonnull align 8 dereferenceable(64) %.sroa.5.0..sroa_idx.i.i, i64 64, i1 false), !noalias !17456 - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %7), !noalias !17465 + call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %7), !noalias !17466 invoke void @"_ZN10serde_json5value2de78_$LT$impl$u20$serde..de..Deserializer$u20$for$u20$serde_json..value..Value$GT$15deserialize_u6417h8538937cec7ec9c5E"(ptr noalias noundef nonnull sret({ i64, [1 x i64] }) align 8 captures(none) dereferenceable(16) %7, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(72) %8) - to label %.noexc.i.i unwind label %37, !noalias !17469 + to label %.noexc.i.i unwind label %37, !noalias !17457 .noexc.i.i: ; preds = %25 %26 = load i64, ptr %7, align 8, !range !3915, !alias.scope !17470, !noalias !17473, !noundef !9 - %trunc.i.i.i.i.i.i = trunc nuw i64 %26 to i1 %27 = getelementptr inbounds nuw i8, ptr %7, i64 8 %28 = load ptr, ptr %27, align 8, !alias.scope !17470, !noalias !17473 %.sink1.i.i.i.i.i.i = ptrtoint ptr %28 to i64 - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7), !noalias !17465 - call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %8), !noalias !17457 - br i1 %trunc.i.i.i.i.i.i, label %.thread.i.i.i, label %.noexc2.i.i - -.thread.i.i.i: ; preds = %.noexc.i.i - call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %9), !noalias !17469 - %.sroa.4.8.copyload.i = load i64, ptr %10, align 8, !alias.scope !17475, !noalias !17476 - %.sroa.6.8..sroa_idx.i = getelementptr inbounds nuw i8, ptr %10, i64 8 - %.sroa.6.8.copyload.i = load i64, ptr %.sroa.6.8..sroa_idx.i, align 8, !alias.scope !17475, !noalias !17476 - %.sroa.7.8..sroa_idx.i = getelementptr inbounds nuw i8, ptr %10, i64 16 - %.sroa.7.8.copyload.i = load i64, ptr %.sroa.7.8..sroa_idx.i, align 8, !alias.scope !17475, !noalias !17476 + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7), !noalias !17466 + call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %8), !noalias !17458 + call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %9), !noalias !17457 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %9, ptr noundef nonnull align 8 dereferenceable(24) %12, i64 24, i1 false), !noalias !17475 + %.not.i.not.i.i = icmp eq i64 %26, 0 + br i1 %.not.i.not.i.i, label %.noexc2.i.i, label %.thread.i.i.i + +.thread.i.i.i:; preds = %.noexc.i.i + %.sroa.6.8.copyload.i = load i64, ptr %10, align 8, !alias.scope !17476, !noalias !17477 + %.sroa.7.8..sroa_idx.i = getelementptr inbounds nuw i8, ptr %10, i64 8 + %.sroa.7.8.copyload.i = load i64, ptr %.sroa.7.8..sroa_idx.i, align 8, !alias.scope !17476, !noalias !17477 + %.sroa.8.8..sroa_idx.i = getelementptr inbounds nuw i8, ptr %10, i64 16 + %.sroa.8.8.copyload.i = load i64, ptr %.sroa.8.8..sroa_idx.i, align 8, !alias.scope !17476, !noalias !17477 br label %41 -.noexc2.i.i: ; preds = %.noexc.i.i, %23 - %.sroa.4.0.ph.i.i = phi i64 [ %.sink1.i.i.i.i.i.i, %.noexc.i.i ], [ undef, %23 ] - %.sink.i.i.i.sink.i.ph.i.i = phi i64 [ 1, %.noexc.i.i ], [ 0, %23 ] - call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %9), !noalias !17469 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %9, ptr noundef nonnull align 8 dereferenceable(24) %12, i64 24, i1 false), !noalias !17477 +.noexc2.i.i: ; preds = %.noexc.i.i, %"_ZN5serde2de5impls82_$LT$impl$u20$serde..de..Deserialize$u20$for$u20$core..option..Option$LT$T$GT$$GT$11deserialize17hf6a2afd4ed15ef38E.exit.thread.i.i" + %.sroa.4.0.ph.i.i = phi i64 [ 0, %"_ZN5serde2de5impls82_$LT$impl$u20$serde..de..Deserialize$u20$for$u20$core..option..Option$LT$T$GT$$GT$11deserialize17hf6a2afd4ed15ef38E.exit.thread.i.i" ], [ 1, %.noexc.i.i ] + %.sink.i.i.i.sink.i.ph.i.i = phi i64 [ undef, %"_ZN5serde2de5impls82_$LT$impl$u20$serde..de..Deserialize$u20$for$u20$core..option..Option$LT$T$GT$$GT$11deserialize17hf6a2afd4ed15ef38E.exit.thread.i.i" ], [ %.sink1.i.i.i.i.i.i, %.noexc.i.i ] call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %6), !noalias !17478 call void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h7ab6145b2068713cE.llvm.10409712727403535664"(ptr noalias noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 captures(none) dereferenceable(24) %6, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %9) %29 = getelementptr inbounds nuw i8, ptr %6, i64 8 @@ -79039,19 +79043,19 @@ define hidden void @"_ZN13rust_analyzer6config9get_field28_$u7b$$u7b$closure$u7d unreachable 41: ; preds = %"_ZN4core3ptr181drop_in_place$LT$rust_analyzer..config..get_field$LT$core..option..Option$LT$usize$GT$$GT$..$u7b$$u7b$closure$u7d$$u7d$..$u7b$$u7b$closure$u7d$$u7d$..$u7b$$u7b$closure$u7d$$u7d$$GT$17h11863bdbbb4784daE.exit.i.i.i", %.thread.i.i.i - %.sroa.7.0.i = phi i64 [ %.sroa.4.0.ph.i.i, %"_ZN4core3ptr181drop_in_place$LT$rust_analyzer..config..get_field$LT$core..option..Option$LT$usize$GT$$GT$..$u7b$$u7b$closure$u7d$$u7d$..$u7b$$u7b$closure$u7d$$u7d$..$u7b$$u7b$closure$u7d$$u7d$$GT$17h11863bdbbb4784daE.exit.i.i.i" ], [ %.sroa.7.8.copyload.i, %.thread.i.i.i ] - %.sroa.6.0.i = phi i64 [ %.sink.i.i.i.sink.i.ph.i.i, %"_ZN4core3ptr181drop_in_place$LT$rust_analyzer..config..get_field$LT$core..option..Option$LT$usize$GT$$GT$..$u7b$$u7b$closure$u7d$$u7d$..$u7b$$u7b$closure$u7d$$u7d$..$u7b$$u7b$closure$u7d$$u7d$$GT$17h11863bdbbb4784daE.exit.i.i.i" ], [ %.sroa.6.8.copyload.i, %.thread.i.i.i ] %.sroa.4.0.i = phi i64 [ -9223372036854775808, %"_ZN4core3ptr181drop_in_place$LT$rust_analyzer..config..get_field$LT$core..option..Option$LT$usize$GT$$GT$..$u7b$$u7b$closure$u7d$$u7d$..$u7b$$u7b$closure$u7d$$u7d$..$u7b$$u7b$closure$u7d$$u7d$$GT$17h11863bdbbb4784daE.exit.i.i.i" ], [ %.sroa.4.8.copyload.i, %.thread.i.i.i ] + %.sroa.8.0.i = phi i64 [ %.sroa.4.011.i.i, %"_ZN4core3ptr181drop_in_place$LT$rust_analyzer..config..get_field$LT$core..option..Option$LT$usize$GT$$GT$..$u7b$$u7b$closure$u7d$$u7d$..$u7b$$u7b$closure$u7d$$u7d$..$u7b$$u7b$closure$u7d$$u7d$$GT$17h11863bdbbb4784daE.exit.i.i.i" ], [ %.sroa.8.8.copyload.i, %.thread.i.i.i ] + %.sroa.7.0.i = phi i64 [ %.sink.i.i.i.sink.i12.i.i, %"_ZN4core3ptr181drop_in_place$LT$rust_analyzer..config..get_field$LT$core..option..Option$LT$usize$GT$$GT$..$u7b$$u7b$closure$u7d$$u7d$..$u7b$$u7b$closure$u7d$$u7d$..$u7b$$u7b$closure$u7d$$u7d$$GT$17h11863bdbbb4784daE.exit.i.i.i" ], [ %.sroa.7.8.copyload.i, %.thread.i.i.i ] %.sroa.0.0.i = phi ptr [ undef, %"_ZN4core3ptr181drop_in_place$LT$rust_analyzer..config..get_field$LT$core..option..Option$LT$usize$GT$$GT$..$u7b$$u7b$closure$u7d$$u7d$..$u7b$$u7b$closure$u7d$$u7d$..$u7b$$u7b$closure$u7d$$u7d$$GT$17h11863bdbbb4784daE.exit.i.i.i" ], [ %28, %.thread.i.i.i ] - call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9), !noalias !17469 + call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9), !noalias !17457 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10), !noalias !17446 store ptr %.sroa.0.0.i, ptr %0, align 8, !alias.scope !17441, !noalias !17495 %.sroa.4.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %0, i64 8 store i64 %.sroa.4.0.i, ptr %.sroa.4.0..sroa_idx.i, align 8, !alias.scope !17441, !noalias !17495 %.sroa.6.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %0, i64 16 - store i64 %.sroa.6.0.i, ptr %.sroa.6.0..sroa_idx.i, align 8, !alias.scope !17441, !noalias !17495 - %.sroa.7.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %0, i64 24 store i64 %.sroa.7.0.i, ptr %.sroa.7.0..sroa_idx.i, align 8, !alias.scope !17441, !noalias !17495 + %.sroa.8.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %0, i64 24 + store i64 %.sroa.8.0.i, ptr %.sroa.8.0..sroa_idx.i, align 8, !alias.scope !17441, !noalias !17495 br label %"_ZN4core6option15Option$LT$T$GT$3map17h63d9739f3c4dc070E.exit" .noexc5: ; preds = %21 @@ -79072,7 +79076,7 @@ define hidden void @"_ZN13rust_analyzer6config9get_field28_$u7b$$u7b$closure$u7d 49: ; preds = %45 %50 = load ptr, ptr %5, align 8, !noalias !17496, !nonnull !9, !noundef !9 - call void @__rust_dealloc(ptr noundef nonnull %50, i64 noundef %47, i64 noundef %44) #47, !noalias !17477 + call void @__rust_dealloc(ptr noundef nonnull %50, i64 noundef %47, i64 noundef %44) #47, !noalias !17475 br label %"_ZN4core3ptr152drop_in_place$LT$rust_analyzer..config..get_field$LT$core..option..Option$LT$usize$GT$$GT$..$u7b$$u7b$closure$u7d$$u7d$..$u7b$$u7b$closure$u7d$$u7d$$GT$17hc58a105948b89442E.exit.i" "_ZN4core3ptr152drop_in_place$LT$rust_analyzer..config..get_field$LT$core..option..Option$LT$usize$GT$$GT$..$u7b$$u7b$closure$u7d$$u7d$..$u7b$$u7b$closure$u7d$$u7d$$GT$17hc58a105948b89442E.exit.i": ; preds = %49, %45, %.noexc5 @@ -132623,27 +132627,27 @@ attributes #58 = { cold noreturn nounwind } !17454 = distinct !{!17454, !17450, !"_ZN13rust_analyzer6config9get_field28_$u7b$$u7b$closure$u7d$$u7d$28_$u7b$$u7b$closure$u7d$$u7d$17h91f403e873a6108aE: argument 2"} !17455 = !{!17454, !17445} !17456 = !{!17449, !17452, !17442, !17447} -!17457 = !{!17458, !17460, !17461, !17463, !17449, !17452, !17454, !17442, !17445, !17447} -!17458 = distinct !{!17458, !17459, !"_ZN10serde_json5value2de78_$LT$impl$u20$serde..de..Deserializer$u20$for$u20$serde_json..value..Value$GT$18deserialize_option17he6a3b085c92517f6E.llvm.15439407322995335751: argument 0"} -!17459 = distinct !{!17459, !"_ZN10serde_json5value2de78_$LT$impl$u20$serde..de..Deserializer$u20$for$u20$serde_json..value..Value$GT$18deserialize_option17he6a3b085c92517f6E.llvm.15439407322995335751"} -!17460 = distinct !{!17460, !17459, !"_ZN10serde_json5value2de78_$LT$impl$u20$serde..de..Deserializer$u20$for$u20$serde_json..value..Value$GT$18deserialize_option17he6a3b085c92517f6E.llvm.15439407322995335751: argument 1"} -!17461 = distinct !{!17461, !17462, !"_ZN5serde2de5impls82_$LT$impl$u20$serde..de..Deserialize$u20$for$u20$core..option..Option$LT$T$GT$$GT$11deserialize17hf6a2afd4ed15ef38E: argument 0"} -!17462 = distinct !{!17462, !"_ZN5serde2de5impls82_$LT$impl$u20$serde..de..Deserialize$u20$for$u20$core..option..Option$LT$T$GT$$GT$11deserialize17hf6a2afd4ed15ef38E"} -!17463 = distinct !{!17463, !17462, !"_ZN5serde2de5impls82_$LT$impl$u20$serde..de..Deserialize$u20$for$u20$core..option..Option$LT$T$GT$$GT$11deserialize17hf6a2afd4ed15ef38E: argument 1"} -!17464 = !{!17458, !17461, !17449, !17452, !17454, !17442, !17445, !17447} -!17465 = !{!17466, !17468, !17458, !17460, !17461, !17463, !17449, !17452, !17454, !17442, !17445, !17447} -!17466 = distinct !{!17466, !17467, !"_ZN79_$LT$serde..de..impls..OptionVisitor$LT$T$GT$$u20$as$u20$serde..de..Visitor$GT$10visit_some17h325a6f47ac892441E.llvm.15439407322995335751: argument 0"} -!17467 = distinct !{!17467, !"_ZN79_$LT$serde..de..impls..OptionVisitor$LT$T$GT$$u20$as$u20$serde..de..Visitor$GT$10visit_some17h325a6f47ac892441E.llvm.15439407322995335751"} -!17468 = distinct !{!17468, !17467, !"_ZN79_$LT$serde..de..impls..OptionVisitor$LT$T$GT$$u20$as$u20$serde..de..Visitor$GT$10visit_some17h325a6f47ac892441E.llvm.15439407322995335751: argument 1"} -!17469 = !{!17449, !17452, !17454, !17442, !17445, !17447} +!17457 = !{!17449, !17452, !17454, !17442, !17445, !17447} +!17458 = !{!17459, !17461, !17462, !17464, !17449, !17452, !17454, !17442, !17445, !17447} +!17459 = distinct !{!17459, !17460, !"_ZN10serde_json5value2de78_$LT$impl$u20$serde..de..Deserializer$u20$for$u20$serde_json..value..Value$GT$18deserialize_option17he6a3b085c92517f6E.llvm.15439407322995335751: argument 0"} +!17460 = distinct !{!17460, !"_ZN10serde_json5value2de78_$LT$impl$u20$serde..de..Deserializer$u20$for$u20$serde_json..value..Value$GT$18deserialize_option17he6a3b085c92517f6E.llvm.15439407322995335751"} +!17461 = distinct !{!17461, !17460, !"_ZN10serde_json5value2de78_$LT$impl$u20$serde..de..Deserializer$u20$for$u20$serde_json..value..Value$GT$18deserialize_option17he6a3b085c92517f6E.llvm.15439407322995335751: argument 1"} +!17462 = distinct !{!17462, !17463, !"_ZN5serde2de5impls82_$LT$impl$u20$serde..de..Deserialize$u20$for$u20$core..option..Option$LT$T$GT$$GT$11deserialize17hf6a2afd4ed15ef38E: argument 0"} +!17463 = distinct !{!17463, !"_ZN5serde2de5impls82_$LT$impl$u20$serde..de..Deserialize$u20$for$u20$core..option..Option$LT$T$GT$$GT$11deserialize17hf6a2afd4ed15ef38E"} +!17464 = distinct !{!17464, !17463, !"_ZN5serde2de5impls82_$LT$impl$u20$serde..de..Deserialize$u20$for$u20$core..option..Option$LT$T$GT$$GT$11deserialize17hf6a2afd4ed15ef38E: argument 1"} +!17465 = !{!17459, !17462, !17449, !17452, !17454, !17442, !17445, !17447} +!17466 = !{!17467, !17469, !17459, !17461, !17462, !17464, !17449, !17452, !17454, !17442, !17445, !17447} +!17467 = distinct !{!17467, !17468, !"_ZN79_$LT$serde..de..impls..OptionVisitor$LT$T$GT$$u20$as$u20$serde..de..Visitor$GT$10visit_some17h325a6f47ac892441E.llvm.15439407322995335751: argument 0"} +!17468 = distinct !{!17468, !"_ZN79_$LT$serde..de..impls..OptionVisitor$LT$T$GT$$u20$as$u20$serde..de..Visitor$GT$10visit_some17h325a6f47ac892441E.llvm.15439407322995335751"} +!17469 = distinct !{!17469, !17468, !"_ZN79_$LT$serde..de..impls..OptionVisitor$LT$T$GT$$u20$as$u20$serde..de..Visitor$GT$10visit_some17h325a6f47ac892441E.llvm.15439407322995335751: argument 1"} !17470 = !{!17471} !17471 = distinct !{!17471, !17472, !"_ZN4core6result19Result$LT$T$C$E$GT$3map17hdf7e43f3360ca9ecE.llvm.15439407322995335751: argument 1"} !17472 = distinct !{!17472, !"_ZN4core6result19Result$LT$T$C$E$GT$3map17hdf7e43f3360ca9ecE.llvm.15439407322995335751"} -!17473 = !{!17474, !17466, !17468, !17458, !17460, !17461, !17463, !17449, !17452, !17454, !17442, !17445, !17447} +!17473 = !{!17474, !17467, !17469, !17459, !17461, !17462, !17464, !17449, !17452, !17454, !17442, !17445, !17447} !17474 = distinct !{!17474, !17472, !"_ZN4core6result19Result$LT$T$C$E$GT$3map17hdf7e43f3360ca9ecE.llvm.15439407322995335751: argument 0"} -!17475 = !{!17449, !17452} -!17476 = !{!17454, !17442, !17445, !17447} -!17477 = !{!17442, !17445} +!17475 = !{!17442, !17445} +!17476 = !{!17449, !17452} +!17477 = !{!17454, !17442, !17445, !17447} !17478 = !{!17479, !17481, !17483, !17485, !17487, !17489, !17491, !17492, !17449, !17452, !17454, !17442, !17445, !17447} !17479 = distinct !{!17479, !17480, !"_ZN77_$LT$alloc..raw_vec..RawVec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h6bc9228de9b99c8dE.llvm.10409712727403535664: argument 0"} !17480 = distinct !{!17480, !"_ZN77_$LT$alloc..raw_vec..RawVec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h6bc9228de9b99c8dE.llvm.10409712727403535664"} diff --git a/bench/rust-analyzer-rs/optimized/2mbx5ptcpq6fo7sc.ll b/bench/rust-analyzer-rs/optimized/2mbx5ptcpq6fo7sc.ll index 15143c750b5..9b7405614a8 100644 --- a/bench/rust-analyzer-rs/optimized/2mbx5ptcpq6fo7sc.ll +++ b/bench/rust-analyzer-rs/optimized/2mbx5ptcpq6fo7sc.ll @@ -76082,8 +76082,7 @@ define hidden void @"_ZN99_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$GT$$u20$a %43 = getelementptr inbounds nuw i8, ptr %40, i64 16 store ptr %43, ptr %3, align 8, !alias.scope !27503 %44 = load i8, ptr %40, align 8, !range !3213, !alias.scope !27506, !noalias !27500, !noundef !4 - %trunc.i.i.i = trunc nuw i8 %44 to i1 - %..i.i.i = select i1 %trunc.i.i.i, i8 2, i8 3 + %trunc.i.i.i = xor i8 %44, 3 br label %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hb609f983d3b49399E.exit" ._crit_edge: ; preds = %"_ZN106_$LT$core..iter..adapters..chain..Chain$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h0a73b6d1d4b25204E.exit", %.._crit_edge_crit_edge diff --git a/bench/rust-analyzer-rs/optimized/2ydioyxkoxez3z9r.ll b/bench/rust-analyzer-rs/optimized/2ydioyxkoxez3z9r.ll index ad8fa010ab5..925dda17108 100644 --- a/bench/rust-analyzer-rs/optimized/2ydioyxkoxez3z9r.ll +++ b/bench/rust-analyzer-rs/optimized/2ydioyxkoxez3z9r.ll @@ -2846,34 +2846,40 @@ define hidden void @"_ZN106_$LT$core..iter..adapters..chain..Chain$LT$A$C$B$GT$$ call void @llvm.experimental.noalias.scope.decl(metadata !668) %53 = load i64, ptr %9, align 8, !range !671, !alias.scope !672, !noalias !673, !noundef !4 %54 = icmp eq i64 %53, -9223372036854775808 - br i1 %54, label %58, label %55 + br i1 %54, label %56, label %55 55: ; preds = %52 call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %7), !noalias !676 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(72) %7, ptr noundef nonnull align 8 dereferenceable(72) %9, i64 72, i1 false), !noalias !673 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %6), !noalias !677 invoke void @"_ZN10serde_json5value2de78_$LT$impl$u20$serde..de..Deserializer$u20$for$u20$serde_json..value..Value$GT$15deserialize_u6417h8538937cec7ec9c5E"(ptr noalias noundef nonnull sret({ i64, [1 x i64] }) align 8 captures(none) dereferenceable(16) %6, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(72) %7) - to label %.noexc.i.i.i.i.i unwind label %65, !noalias !681 - -.noexc.i.i.i.i.i: ; preds = %55 - %56 = load i64, ptr %6, align 8, !range !9, !alias.scope !682, !noalias !685, !noundef !4 - %trunc.i.i.i.i.i.i.i.i.i = trunc nuw i64 %56 to i1 - %57 = load ptr, ptr %38, align 8, !alias.scope !682, !noalias !685 - %.sink1.i.i.i.i.i.i.i.i.i = ptrtoint ptr %57 to i64 - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6), !noalias !677 - call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %7), !noalias !676 - br i1 %trunc.i.i.i.i.i.i.i.i.i, label %"_ZN13rust_analyzer6config9get_field28_$u7b$$u7b$closure$u7d$$u7d$17h2be529c84cb65dafE.exit.i.i", label %.noexc3.i.i.i.i.i + to label %.noexc3.i.i.i.i.i unwind label %65, !noalias !681 -58: ; preds = %52 +.noexc.i.i.i.i.i: ; preds = %52 invoke void @"_ZN4core3ptr45drop_in_place$LT$serde_json..value..Value$GT$17ha0ac8ddd059f5d14E.llvm.15439407322995335751"(ptr noalias noundef nonnull align 8 dereferenceable(72) %9) - to label %.noexc3.i.i.i.i.i unwind label %65, !noalias !681 + to label %"_ZN5serde2de5impls82_$LT$impl$u20$serde..de..Deserialize$u20$for$u20$core..option..Option$LT$T$GT$$GT$11deserialize17hf6a2afd4ed15ef38E.exit.thread.i.i.i.i.i" unwind label %65, !noalias !681 -.noexc3.i.i.i.i.i: ; preds = %58, %.noexc.i.i.i.i.i - %.sroa.5.0.ph.i.i.i.i.i = phi i64 [ undef, %58 ], [ %.sink1.i.i.i.i.i.i.i.i.i, %.noexc.i.i.i.i.i ] - %.sroa.0.0.ph.i.i.i.i.i = phi i64 [ 0, %58 ], [ 1, %.noexc.i.i.i.i.i ] +"_ZN5serde2de5impls82_$LT$impl$u20$serde..de..Deserialize$u20$for$u20$core..option..Option$LT$T$GT$$GT$11deserialize17hf6a2afd4ed15ef38E.exit.thread.i.i.i.i.i": ; preds = %56 call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %9), !noalias !662 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %8), !noalias !662 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %8, ptr noundef nonnull align 8 dereferenceable(24) %12, i64 24, i1 false), !noalias !687 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %8, ptr noundef nonnull align 8 dereferenceable(24) %12, i64 24, i1 false), !noalias !682 + br label %.noexc3.i.i.i.i.i + +.noexc3.i.i.i.i.i: ; preds = %55 + %.sroa.5.0.ph.i.i.i.i.i = load i64, ptr %6, align 8, !range !9, !alias.scope !683, !noalias !686, !noundef !4 + %.sroa.0.0.ph.i.i.i.i.i = load ptr, ptr %38, align 8, !alias.scope !683, !noalias !686 + %.sink1.i.i.i.i.i.i.i.i.i = ptrtoint ptr %58 to i64 + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6), !noalias !677 + call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %7), !noalias !676 + call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %9), !noalias !662 + call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %8), !noalias !662 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %8, ptr noundef nonnull align 8 dereferenceable(24) %12, i64 24, i1 false), !noalias !682 + %.not.i.not.i.i.i.i.i = icmp eq i64 %57, 0 + br i1 %.not.i.not.i.i.i.i.i, label %.noexc3.i.i.i.i.i, label %"_ZN13rust_analyzer6config9get_field28_$u7b$$u7b$closure$u7d$$u7d$17h2be529c84cb65dafE.exit.i.i" + +.noexc3.i.i.i.i.i: ; preds = %"_ZN5serde2de5impls82_$LT$impl$u20$serde..de..Deserialize$u20$for$u20$core..option..Option$LT$T$GT$$GT$11deserialize17hf6a2afd4ed15ef38E.exit.i.i.i.i.i", %"_ZN5serde2de5impls82_$LT$impl$u20$serde..de..Deserialize$u20$for$u20$core..option..Option$LT$T$GT$$GT$11deserialize17hf6a2afd4ed15ef38E.exit.thread.i.i.i.i.i" + %.sroa.0.013.i.i.i.i.i = phi i64 [ 0, %"_ZN5serde2de5impls82_$LT$impl$u20$serde..de..Deserialize$u20$for$u20$core..option..Option$LT$T$GT$$GT$11deserialize17hf6a2afd4ed15ef38E.exit.thread.i.i.i.i.i" ], [ 1, %"_ZN5serde2de5impls82_$LT$impl$u20$serde..de..Deserialize$u20$for$u20$core..option..Option$LT$T$GT$$GT$11deserialize17hf6a2afd4ed15ef38E.exit.i.i.i.i.i" ] + %.sroa.5.012.i.i.i.i.i = phi i64 [ undef, %"_ZN5serde2de5impls82_$LT$impl$u20$serde..de..Deserialize$u20$for$u20$core..option..Option$LT$T$GT$$GT$11deserialize17hf6a2afd4ed15ef38E.exit.thread.i.i.i.i.i" ], [ %.sink1.i.i.i.i.i.i.i.i.i, %"_ZN5serde2de5impls82_$LT$impl$u20$serde..de..Deserialize$u20$for$u20$core..option..Option$LT$T$GT$$GT$11deserialize17hf6a2afd4ed15ef38E.exit.i.i.i.i.i" ] call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %5), !noalias !688 call void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h7ab6145b2068713cE.llvm.10409712727403535664"(ptr noalias noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 captures(none) dereferenceable(24) %5, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %8), !noalias !645 %59 = load i64, ptr %39, align 8, !range !167, !noalias !688, !noundef !4 @@ -2897,11 +2903,11 @@ define hidden void @"_ZN106_$LT$core..iter..adapters..chain..Chain$LT$A$C$B$GT$$ call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %12), !noalias !641 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %13), !noalias !641 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %14), !noalias !704 - store i64 %.sroa.0.0.ph.i.i.i.i.i, ptr %.sroa.3.0..sroa_idx.i.i, align 8, !noalias !704 - store i64 %.sroa.5.0.ph.i.i.i.i.i, ptr %.sroa.42.0..sroa_idx.i.i, align 8, !noalias !704 + store i64 %.sroa.0.013.i.i.i.i.i, ptr %.sroa.3.0..sroa_idx.i.i, align 8, !noalias !704 + store i64 %.sroa.5.012.i.i.i.i.i, ptr %.sroa.42.0..sroa_idx.i.i, align 8, !noalias !704 br label %82 -65: ; preds = %58, %55 +65: ; preds = %56, %55 %lpad.thr_comm.i.i.i.i.i = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h846e5092bb01abaeE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %10) #47 @@ -2952,12 +2958,10 @@ define hidden void @"_ZN106_$LT$core..iter..adapters..chain..Chain$LT$A$C$B$GT$$ call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #45, !noalias !645 unreachable -"_ZN13rust_analyzer6config9get_field28_$u7b$$u7b$closure$u7d$$u7d$17h2be529c84cb65dafE.exit.i.i": ; preds = %.noexc.i.i.i.i.i - call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %9), !noalias !662 - call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %8), !noalias !662 +"_ZN13rust_analyzer6config9get_field28_$u7b$$u7b$closure$u7d$$u7d$17h2be529c84cb65dafE.exit.i.i": ; preds = %.noexc3.i.i.i.i.i %.sroa.4.8.copyload.i.i.i.i = load i64, ptr %10, align 8, !alias.scope !718, !noalias !719 - %.sroa.6.8.copyload.i.i.i.i = load i64, ptr %.sroa.6.8..sroa_idx.i.i.i.i, align 8, !alias.scope !718, !noalias !719 %.sroa.7.8.copyload.i.i.i.i = load i64, ptr %.sroa.7.8..sroa_idx.i.i.i.i, align 8, !alias.scope !718, !noalias !719 + %.sroa.8.8.copyload.i.i.i.i = load i64, ptr %.sroa.8.8..sroa_idx.i.i.i.i, align 8, !alias.scope !718, !noalias !719 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8), !noalias !662 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10), !noalias !652 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %12), !noalias !641 @@ -2967,10 +2971,10 @@ define hidden void @"_ZN106_$LT$core..iter..adapters..chain..Chain$LT$A$C$B$GT$$ 78: ; preds = %"_ZN13rust_analyzer6config9get_field28_$u7b$$u7b$closure$u7d$$u7d$17h2be529c84cb65dafE.exit.i.i" call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %14), !noalias !704 - store ptr %57, ptr %14, align 8, !noalias !704 + store ptr %58, ptr %14, align 8, !noalias !704 store i64 %.sroa.4.8.copyload.i.i.i.i, ptr %.sroa.2.0..sroa_idx.i.i, align 8, !noalias !704 - store i64 %.sroa.6.8.copyload.i.i.i.i, ptr %.sroa.3.0..sroa_idx.i.i, align 8, !noalias !704 - store i64 %.sroa.7.8.copyload.i.i.i.i, ptr %.sroa.42.0..sroa_idx.i.i, align 8, !noalias !704 + store i64 %.sroa.7.8.copyload.i.i.i.i, ptr %.sroa.3.0..sroa_idx.i.i, align 8, !noalias !704 + store i64 %.sroa.8.8.copyload.i.i.i.i, ptr %.sroa.42.0..sroa_idx.i.i, align 8, !noalias !704 %79 = icmp eq i64 %.sroa.4.8.copyload.i.i.i.i, -9223372036854775808 br i1 %79, label %82, label %"_ZN4core4iter8adapters10filter_map19filter_map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hed777068c014ec8bE.exit.thread15.i" @@ -99232,12 +99236,12 @@ attributes #48 = { "function-inline-cost-multiplier"="2" } !679 = distinct !{!679, !"_ZN79_$LT$serde..de..impls..OptionVisitor$LT$T$GT$$u20$as$u20$serde..de..Visitor$GT$10visit_some17h325a6f47ac892441E.llvm.15439407322995335751"} !680 = distinct !{!680, !679, !"_ZN79_$LT$serde..de..impls..OptionVisitor$LT$T$GT$$u20$as$u20$serde..de..Visitor$GT$10visit_some17h325a6f47ac892441E.llvm.15439407322995335751: argument 1"} !681 = !{!656, !659, !661, !653, !650, !654, !642, !638, !636, !628, !631} -!682 = !{!683} -!683 = distinct !{!683, !684, !"_ZN4core6result19Result$LT$T$C$E$GT$3map17hdf7e43f3360ca9ecE.llvm.15439407322995335751: argument 1"} -!684 = distinct !{!684, !"_ZN4core6result19Result$LT$T$C$E$GT$3map17hdf7e43f3360ca9ecE.llvm.15439407322995335751"} -!685 = !{!686, !678, !680, !674, !669, !675, !666, !656, !659, !661, !653, !650, !654, !642, !644, !638, !640, !636, !628, !631} -!686 = distinct !{!686, !684, !"_ZN4core6result19Result$LT$T$C$E$GT$3map17hdf7e43f3360ca9ecE.llvm.15439407322995335751: argument 0"} -!687 = !{!653, !650, !642, !644, !638, !640, !636, !628, !631} +!682 = !{!653, !650, !642, !644, !638, !640, !636, !628, !631} +!683 = !{!684} +!684 = distinct !{!684, !685, !"_ZN4core6result19Result$LT$T$C$E$GT$3map17hdf7e43f3360ca9ecE.llvm.15439407322995335751: argument 1"} +!685 = distinct !{!685, !"_ZN4core6result19Result$LT$T$C$E$GT$3map17hdf7e43f3360ca9ecE.llvm.15439407322995335751"} +!686 = !{!687, !678, !680, !674, !669, !675, !666, !656, !659, !661, !653, !650, !654, !642, !644, !638, !640, !636, !628, !631} +!687 = distinct !{!687, !685, !"_ZN4core6result19Result$LT$T$C$E$GT$3map17hdf7e43f3360ca9ecE.llvm.15439407322995335751: argument 0"} !688 = !{!689, !691, !693, !695, !697, !699, !701, !702, !656, !659, !661, !653, !650, !654, !642, !644, !638, !640, !636, !628, !631} !689 = distinct !{!689, !690, !"_ZN77_$LT$alloc..raw_vec..RawVec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h6bc9228de9b99c8dE.llvm.10409712727403535664: argument 0"} !690 = distinct !{!690, !"_ZN77_$LT$alloc..raw_vec..RawVec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h6bc9228de9b99c8dE.llvm.10409712727403535664"} diff --git a/bench/rust-analyzer-rs/optimized/44ayynfm08lnhjsw.ll b/bench/rust-analyzer-rs/optimized/44ayynfm08lnhjsw.ll index 24a82625713..ca3cb3429fc 100644 --- a/bench/rust-analyzer-rs/optimized/44ayynfm08lnhjsw.ll +++ b/bench/rust-analyzer-rs/optimized/44ayynfm08lnhjsw.ll @@ -6111,7 +6111,8 @@ define hidden { i64, ptr } @"_ZN4core3ops8function5impls80_$LT$impl$u20$core..op br label %"_ZN11ide_assists8handlers16extract_function9make_call28_$u7b$$u7b$closure$u7d$$u7d$17h6535d11d2b32da8aE.llvm.6977743830891006301.exit" _ZN11ide_assists8handlers16extract_function5Param4kind17h4c0a60a6cf946b48E.llvm.14339125420948612040.exit.i.i: ; preds = %15 - br i1 %14, label %24, label %22 + %switch.not.i.i = icmp eq i8 %13, 0 + br i1 %switch.not.i.i, label %22, label %24 22: ; preds = %_ZN11ide_assists8handlers16extract_function5Param4kind17h4c0a60a6cf946b48E.llvm.14339125420948612040.exit.i.i %23 = tail call { i64, ptr } @_ZN6syntax3ast4make8expr_ref17h5efd536a6e9bceccE(i64 noundef %7, ptr noundef %8, i1 noundef zeroext false), !noalias !1255 @@ -40087,7 +40088,8 @@ define hidden { i64, ptr } @"_ZN11ide_assists8handlers16extract_function9make_ca br label %_ZN11ide_assists8handlers16extract_function5Param6to_arg17h4bd6d3442770a134E.exit _ZN11ide_assists8handlers16extract_function5Param4kind17h4c0a60a6cf946b48E.llvm.14339125420948612040.exit.i: ; preds = %15 - br i1 %14, label %24, label %22 + %switch.not.i = icmp eq i8 %13, 0 + br i1 %switch.not.i, label %22, label %24 22: ; preds = %_ZN11ide_assists8handlers16extract_function5Param4kind17h4c0a60a6cf946b48E.llvm.14339125420948612040.exit.i %23 = tail call { i64, ptr } @_ZN6syntax3ast4make8expr_ref17h5efd536a6e9bceccE(i64 noundef %7, ptr noundef %8, i1 noundef zeroext false), !noalias !9884 diff --git a/bench/rust-analyzer-rs/optimized/4baun3pe1avree5d.ll b/bench/rust-analyzer-rs/optimized/4baun3pe1avree5d.ll index 6f6a9b9c40d..115c452df35 100644 --- a/bench/rust-analyzer-rs/optimized/4baun3pe1avree5d.ll +++ b/bench/rust-analyzer-rs/optimized/4baun3pe1avree5d.ll @@ -1801,11 +1801,10 @@ define hidden void @"_ZN4core6result19Result$LT$T$C$E$GT$3map17h068130c44d59f5dc ; Function Attrs: inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite) uwtable define hidden void @"_ZN4core6result19Result$LT$T$C$E$GT$3map17h08e6e9b0fa23b801E.llvm.4213059994663518309"(ptr noalias noundef writeonly sret({ i64, [1 x i64] }) align 8 captures(none) dereferenceable(16) initializes((0, 16)) %0, ptr noalias noundef readonly align 8 captures(none) dereferenceable(16) %1) unnamed_addr #0 { %3 = load i64, ptr %1, align 8, !range !294, !noundef !7 - %trunc = trunc nuw i64 %3 to i1 %4 = getelementptr inbounds nuw i8, ptr %1, i64 8 %5 = load ptr, ptr %4, align 8 %.sink1 = ptrtoint ptr %5 to i64 - %.sink = select i1 %trunc, i64 2, i64 1 + %.sink = add nuw nsw i64 %3, 1 %6 = getelementptr inbounds nuw i8, ptr %0, i64 8 store i64 %.sink1, ptr %6, align 8 store i64 %.sink, ptr %0, align 8 @@ -10600,11 +10599,10 @@ define hidden void @"_ZN87_$LT$serde..de..value..SeqDeserializer$LT$I$C$E$GT$$u2 tail call void @llvm.experimental.noalias.scope.decl(metadata !2491) tail call void @llvm.experimental.noalias.scope.decl(metadata !2494) %20 = load i64, ptr %4, align 8, !range !294, !alias.scope !2494, !noalias !2491, !noundef !7 - %trunc.i = trunc nuw i64 %20 to i1 %21 = getelementptr inbounds nuw i8, ptr %4, i64 8 %22 = load ptr, ptr %21, align 8, !alias.scope !2494, !noalias !2491 %.sink1.i = ptrtoint ptr %22 to i64 - %.sink.i = select i1 %trunc.i, i64 2, i64 1 + %.sink.i = add nuw nsw i64 %20, 1 %23 = getelementptr inbounds nuw i8, ptr %0, i64 8 store i64 %.sink1.i, ptr %23, align 8, !alias.scope !2491, !noalias !2494 store i64 %.sink.i, ptr %0, align 8, !alias.scope !2491, !noalias !2494 @@ -11850,11 +11848,10 @@ define hidden void @"_ZN87_$LT$serde..de..value..SeqDeserializer$LT$I$C$E$GT$$u2 tail call void @llvm.experimental.noalias.scope.decl(metadata !2973) tail call void @llvm.experimental.noalias.scope.decl(metadata !2976) %14 = load i64, ptr %3, align 8, !range !294, !alias.scope !2976, !noalias !2973, !noundef !7 - %trunc.i = trunc nuw i64 %14 to i1 %15 = getelementptr inbounds nuw i8, ptr %3, i64 8 %16 = load ptr, ptr %15, align 8, !alias.scope !2976, !noalias !2973 %.sink1.i = ptrtoint ptr %16 to i64 - %.sink.i = select i1 %trunc.i, i64 2, i64 1 + %.sink.i = add nuw nsw i64 %14, 1 %17 = getelementptr inbounds nuw i8, ptr %0, i64 8 store i64 %.sink1.i, ptr %17, align 8, !alias.scope !2973, !noalias !2976 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) diff --git a/bench/rust-analyzer-rs/optimized/5fgtm3ees9sdsrsg.ll b/bench/rust-analyzer-rs/optimized/5fgtm3ees9sdsrsg.ll index db4917bd237..26a559a9f55 100644 --- a/bench/rust-analyzer-rs/optimized/5fgtm3ees9sdsrsg.ll +++ b/bench/rust-analyzer-rs/optimized/5fgtm3ees9sdsrsg.ll @@ -38784,7 +38784,8 @@ define hidden noundef zeroext i1 @_ZN4core4iter6traits8iterator8Iterator8try_fol br label %"_ZN11ide_assists8handlers16extract_function9make_call28_$u7b$$u7b$closure$u7d$$u7d$17h6535d11d2b32da8aE.exit.i" _ZN11ide_assists8handlers16extract_function5Param4kind17h4c0a60a6cf946b48E.llvm.14339125420948612040.exit.i.i.i: ; preds = %27 - br i1 %26, label %36, label %34 + %switch.not.i.i.i = icmp eq i8 %25, 0 + br i1 %switch.not.i.i.i, label %34, label %36 34: ; preds = %_ZN11ide_assists8handlers16extract_function5Param4kind17h4c0a60a6cf946b48E.llvm.14339125420948612040.exit.i.i.i %35 = call { i64, ptr } @_ZN6syntax3ast4make8expr_ref17h5efd536a6e9bceccE(i64 noundef %19, ptr noundef %20, i1 noundef zeroext false), !noalias !12505 diff --git a/bench/rust-analyzer-rs/optimized/k5mtltw7nxmadpl.ll b/bench/rust-analyzer-rs/optimized/k5mtltw7nxmadpl.ll index 72775d35138..f4756eed429 100644 --- a/bench/rust-analyzer-rs/optimized/k5mtltw7nxmadpl.ll +++ b/bench/rust-analyzer-rs/optimized/k5mtltw7nxmadpl.ll @@ -37743,8 +37743,7 @@ select.unfold336: ; preds = %657, %668 %687 = getelementptr inbounds { i32, i32 }, ptr %.val.i196, i64 %678 %688 = getelementptr inbounds i8, ptr %687, i64 -4 %689 = load i32, ptr %688, align 4, !noundef !4 - %690 = trunc nuw i8 %.sroa.5296.0.copyload298 to i1 - %.94 = select i1 %690, i8 1, i8 2 + %690 = sub i8 2, %.sroa.5296.0.copyload298 call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %5), !noalias !7113 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %529, ptr noundef nonnull align 8 dereferenceable(24) %43, i64 24, i1 false) store i64 -9223372036854775808, ptr %.sroa.0306.sroa.4.0..sroa_idx, align 8, !noalias !7117 diff --git a/bench/spike/optimized/remote_bitbang.ll b/bench/spike/optimized/remote_bitbang.ll index c20aea7bd40..c72edffbada 100644 --- a/bench/spike/optimized/remote_bitbang.ll +++ b/bench/spike/optimized/remote_bitbang.ll @@ -293,17 +293,17 @@ define void @_ZN16remote_bitbang_t16execute_commandsEv(ptr noundef nonnull align %14 = icmp slt i64 %13, %12 br i1 %14, label %.lr.ph, label %.thread62 -.lr.ph: ; preds = %11, %59 - %15 = phi i64 [ %52, %59 ], [ %13, %11 ] - %.277 = phi i32 [ %53, %59 ], [ %.0, %11 ] - %.22276 = phi i1 [ %.4, %59 ], [ false, %11 ] - %.02475 = phi i32 [ %.226, %59 ], [ 0, %11 ] - %.23474 = phi i1 [ false, %59 ], [ %.032, %11 ] +.lr.ph: ; preds = %11, %58 + %15 = phi i64 [ %51, %58 ], [ %13, %11 ] + %.277 = phi i32 [ %52, %58 ], [ %.0, %11 ] + %.22276 = phi i1 [ %.4, %58 ], [ false, %11 ] + %.02475 = phi i32 [ %.226, %58 ], [ 0, %11 ] + %.23474 = phi i1 [ false, %58 ], [ %.032, %11 ] %16 = getelementptr inbounds [65536 x i8], ptr %8, i64 0, i64 %15 %17 = load i8, ptr %16, align 1, !tbaa !29 - switch i8 %17, label %46 [ - i8 66, label %50 - i8 98, label %50 + switch i8 %17, label %45 [ + i8 66, label %49 + i8 98, label %49 i8 114, label %18 i8 48, label %20 i8 49, label %22 @@ -314,98 +314,97 @@ define void @_ZN16remote_bitbang_t16execute_commandsEv(ptr noundef nonnull align i8 54, label %32 i8 55, label %34 i8 82, label %36 - i8 81, label %45 + i8 81, label %44 ] 18: ; preds = %.lr.ph %19 = load ptr, ptr %0, align 8, !tbaa !3 tail call void @_ZN10jtag_dtm_t5resetEv(ptr noundef nonnull align 8 dereferenceable(72) %19) - br label %50 + br label %49 20: ; preds = %.lr.ph %21 = load ptr, ptr %0, align 8, !tbaa !3 tail call void @_ZN10jtag_dtm_t8set_pinsEbbb(ptr noundef nonnull align 8 dereferenceable(72) %21, i1 noundef zeroext false, i1 noundef zeroext false, i1 noundef zeroext false) - br label %50 + br label %49 22: ; preds = %.lr.ph %23 = load ptr, ptr %0, align 8, !tbaa !3 tail call void @_ZN10jtag_dtm_t8set_pinsEbbb(ptr noundef nonnull align 8 dereferenceable(72) %23, i1 noundef zeroext false, i1 noundef zeroext false, i1 noundef zeroext true) - br label %50 + br label %49 24: ; preds = %.lr.ph %25 = load ptr, ptr %0, align 8, !tbaa !3 tail call void @_ZN10jtag_dtm_t8set_pinsEbbb(ptr noundef nonnull align 8 dereferenceable(72) %25, i1 noundef zeroext false, i1 noundef zeroext true, i1 noundef zeroext false) - br label %50 + br label %49 26: ; preds = %.lr.ph %27 = load ptr, ptr %0, align 8, !tbaa !3 tail call void @_ZN10jtag_dtm_t8set_pinsEbbb(ptr noundef nonnull align 8 dereferenceable(72) %27, i1 noundef zeroext false, i1 noundef zeroext true, i1 noundef zeroext true) - br label %50 + br label %49 28: ; preds = %.lr.ph %29 = load ptr, ptr %0, align 8, !tbaa !3 tail call void @_ZN10jtag_dtm_t8set_pinsEbbb(ptr noundef nonnull align 8 dereferenceable(72) %29, i1 noundef zeroext true, i1 noundef zeroext false, i1 noundef zeroext false) - br label %50 + br label %49 30: ; preds = %.lr.ph %31 = load ptr, ptr %0, align 8, !tbaa !3 tail call void @_ZN10jtag_dtm_t8set_pinsEbbb(ptr noundef nonnull align 8 dereferenceable(72) %31, i1 noundef zeroext true, i1 noundef zeroext false, i1 noundef zeroext true) - br label %50 + br label %49 32: ; preds = %.lr.ph %33 = load ptr, ptr %0, align 8, !tbaa !3 tail call void @_ZN10jtag_dtm_t8set_pinsEbbb(ptr noundef nonnull align 8 dereferenceable(72) %33, i1 noundef zeroext true, i1 noundef zeroext true, i1 noundef zeroext false) - br label %50 + br label %49 34: ; preds = %.lr.ph %35 = load ptr, ptr %0, align 8, !tbaa !3 tail call void @_ZN10jtag_dtm_t8set_pinsEbbb(ptr noundef nonnull align 8 dereferenceable(72) %35, i1 noundef zeroext true, i1 noundef zeroext true, i1 noundef zeroext true) - br label %50 + br label %49 36: ; preds = %.lr.ph %37 = load ptr, ptr %0, align 8, !tbaa !3 %38 = getelementptr inbounds nuw i8, ptr %37, i64 15 %39 = load i8, ptr %38, align 1, !tbaa !30, !range !31, !noundef !32 - %40 = trunc nuw i8 %39 to i1 - %41 = select i1 %40, i8 49, i8 48 - %42 = add i32 %.02475, 1 - %43 = zext i32 %.02475 to i64 - %44 = getelementptr inbounds nuw [65536 x i8], ptr %9, i64 0, i64 %43 - store i8 %41, ptr %44, align 1, !tbaa !29 - br label %50 + %40 = or disjoint i8 %39, 48 + %41 = add i32 %.02475, 1 + %42 = zext i32 %.02475 to i64 + %43 = getelementptr inbounds nuw [65536 x i8], ptr %9, i64 0, i64 %42 + store i8 %40, ptr %43, align 1, !tbaa !29 + br label %49 + +44: ; preds = %.lr.ph + br label %49 45: ; preds = %.lr.ph - br label %50 - -46: ; preds = %.lr.ph - %47 = zext i8 %17 to i32 - %48 = load ptr, ptr @stderr, align 8, !tbaa !13 - %49 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %48, ptr noundef nonnull @.str.7, i32 noundef %47) #14 - br label %50 - -50: ; preds = %46, %45, %36, %34, %32, %30, %28, %26, %24, %22, %20, %18, %.lr.ph, %.lr.ph - %.226 = phi i32 [ %.02475, %46 ], [ %.02475, %45 ], [ %42, %36 ], [ %.02475, %34 ], [ %.02475, %32 ], [ %.02475, %30 ], [ %.02475, %28 ], [ %.02475, %26 ], [ %.02475, %24 ], [ %.02475, %22 ], [ %.02475, %20 ], [ %.02475, %18 ], [ %.02475, %.lr.ph ], [ %.02475, %.lr.ph ] - %.4 = phi i1 [ %.22276, %46 ], [ true, %45 ], [ %.22276, %36 ], [ %.22276, %34 ], [ %.22276, %32 ], [ %.22276, %30 ], [ %.22276, %28 ], [ %.22276, %26 ], [ %.22276, %24 ], [ %.22276, %22 ], [ %.22276, %20 ], [ %.22276, %18 ], [ %.22276, %.lr.ph ], [ %.22276, %.lr.ph ] - %51 = load i64, ptr %6, align 8, !tbaa !28 - %52 = add nsw i64 %51, 1 - store i64 %52, ptr %6, align 8, !tbaa !28 - %53 = add i32 %.277, 1 - br i1 %.23474, label %59, label %54 - -54: ; preds = %50 - %55 = load ptr, ptr %0, align 8, !tbaa !3 - %56 = getelementptr inbounds nuw i8, ptr %55, i64 68 - %57 = load i32, ptr %56, align 4, !tbaa !22 - %58 = icmp eq i32 %57, 1 - br i1 %58, label %.thread, label %59 - -59: ; preds = %50, %54 - %60 = load i64, ptr %7, align 8, !tbaa !27 - %61 = icmp slt i64 %52, %60 - br i1 %61, label %.lr.ph, label %.thread - -.thread: ; preds = %59, %54 - %.lcssa.ph = phi i1 [ false, %59 ], [ true, %54 ] + %46 = zext i8 %17 to i32 + %47 = load ptr, ptr @stderr, align 8, !tbaa !13 + %48 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %47, ptr noundef nonnull @.str.7, i32 noundef %46) #14 + br label %49 + +49:; preds = %45, %44, %36, %34, %32, %30, %28, %26, %24, %22, %20, %18, %.lr.ph, %.lr.ph + %.226 = phi i32 [ %.02475, %45 ], [ %.02475, %44 ], [ %41, %36 ], [ %.02475, %34 ], [ %.02475, %32 ], [ %.02475, %30 ], [ %.02475, %28 ], [ %.02475, %26 ], [ %.02475, %24 ], [ %.02475, %22 ], [ %.02475, %20 ], [ %.02475, %18 ], [ %.02475, %.lr.ph ], [ %.02475, %.lr.ph ] + %.4 = phi i1 [ %.22276, %45 ], [ true, %44 ], [ %.22276, %36 ], [ %.22276, %34 ], [ %.22276, %32 ], [ %.22276, %30 ], [ %.22276, %28 ], [ %.22276, %26 ], [ %.22276, %24 ], [ %.22276, %22 ], [ %.22276, %20 ], [ %.22276, %18 ], [ %.22276, %.lr.ph ], [ %.22276, %.lr.ph ] + %50 = load i64, ptr %6, align 8, !tbaa !28 + %.226 = add nsw i64 %50, 1 + store i64 %51, ptr %6, align 8, !tbaa !28 + %51 = add i32 %.277, 1 + br i1 %.23474, label %58, label %53 + +53:; preds = %49 + %54 = load ptr, ptr %0, align 8, !tbaa !3 + %55 = getelementptr inbounds nuw i8, ptr %54, i64 68 + %56 = load i32, ptr %55, align 4, !tbaa !22 + %55 = icmp eq i32 %56, 1 + br i1 %55, label %.thread, label %58 + +58:; preds = %49, %53 + %59 = load i64, ptr %7, align 8, !tbaa !27 + %60 = icmp slt i64 %51, %59 + br i1 %60, label %.lr.ph, label %.thread + +.thread:; preds = %58, %53 + %.lcssa.ph = phi i1 [ false, %58 ], [ true, %53 ] %.not = icmp eq i32 %.226, 0 br i1 %.not, label %._crit_edge, label %.lr.ph89 @@ -439,13 +438,13 @@ define void @_ZN16remote_bitbang_t16execute_commandsEv(ptr noundef nonnull align unreachable ._crit_edge: ; preds = %63, %.thread - %80 = icmp ugt i32 %53, 65536 + %80 = icmp ugt i32 %52, 65536 %brmerge = select i1 %80, i1 true, i1 %.4 %brmerge71 = or i1 %.lcssa.ph, %brmerge br i1 %brmerge71, label %.loopexit, label %.thread62 .thread62: ; preds = %._crit_edge, %11 - %.1525870 = phi i32 [ %.0, %11 ], [ %53, %._crit_edge ] + %.1525870 = phi i32 [ %.0, %11 ], [ %52, %._crit_edge ] %.133496167 = phi i1 [ %.032, %11 ], [ false, %._crit_edge ] store i64 0, ptr %6, align 8, !tbaa !28 %81 = load i32, ptr %10, align 4, !tbaa !12 diff --git a/bench/tls-rs/optimized/4vvnrvl2eceao62c.ll b/bench/tls-rs/optimized/4vvnrvl2eceao62c.ll index 7689432b705..53f89bd90c7 100644 --- a/bench/tls-rs/optimized/4vvnrvl2eceao62c.ll +++ b/bench/tls-rs/optimized/4vvnrvl2eceao62c.ll @@ -12339,7 +12339,7 @@ common.resume: ; preds = %200, %"_ZN4core3ptr %160 = getelementptr inbounds nuw i8, ptr %.sroa.0116.0147, i64 8 %161 = load ptr, ptr %160, align 8, !alias.scope !1666, !nonnull !7, !align !81 %162 = getelementptr inbounds nuw i8, ptr %161, i64 80 - %.sroa.3.0.i = select i1 %trunc.i99, i64 2, i64 1 + %.sroa.3.0.i = add nuw nsw i64 %159, 1 %.sroa.0.0.i = select i1 %trunc.i99, ptr @anon.b829d69e4dfa1ad4f2781c144a746ff0.58.llvm.15934541666227088301, ptr %162 store ptr %.sroa.0.0.i, ptr %13, align 8 store i64 %.sroa.3.0.i, ptr %.fca.1.gep, align 8 @@ -12929,7 +12929,7 @@ common.resume: ; preds = %200, %"_ZN4core3ptr %160 = getelementptr inbounds nuw i8, ptr %.sroa.0116.0147, i64 8 %161 = load ptr, ptr %160, align 8, !alias.scope !1791, !nonnull !7, !align !81 %162 = getelementptr inbounds nuw i8, ptr %161, i64 80 - %.sroa.3.0.i = select i1 %trunc.i99, i64 2, i64 1 + %.sroa.3.0.i = add nuw nsw i64 %159, 1 %.sroa.0.0.i = select i1 %trunc.i99, ptr @anon.b829d69e4dfa1ad4f2781c144a746ff0.58.llvm.15934541666227088301, ptr %162 store ptr %.sroa.0.0.i, ptr %13, align 8 store i64 %.sroa.3.0.i, ptr %.fca.1.gep, align 8 @@ -13395,7 +13395,7 @@ define { ptr, i64 } @_ZN6rustls6suites20SupportedCipherSuite23key_exchange_algor %3 = getelementptr inbounds nuw i8, ptr %0, i64 8 %4 = load ptr, ptr %3, align 8, !nonnull !7, !align !81 %5 = getelementptr inbounds nuw i8, ptr %4, i64 80 - %.sroa.3.0 = select i1 %trunc, i64 2, i64 1 + %.sroa.3.0 = add nuw nsw i64 %2, 1 %.sroa.0.0 = select i1 %trunc, ptr @anon.b829d69e4dfa1ad4f2781c144a746ff0.58.llvm.15934541666227088301, ptr %5 %6 = insertvalue { ptr, i64 } poison, ptr %.sroa.0.0, 0 %7 = insertvalue { ptr, i64 } %6, i64 %.sroa.3.0, 1 diff --git a/bench/tokio-rs/optimized/1rl1r5ea6bzd5c9z.ll b/bench/tokio-rs/optimized/1rl1r5ea6bzd5c9z.ll index a0f19f283cd..f9e7a014a1a 100644 --- a/bench/tokio-rs/optimized/1rl1r5ea6bzd5c9z.ll +++ b/bench/tokio-rs/optimized/1rl1r5ea6bzd5c9z.ll @@ -4634,8 +4634,9 @@ _ZN3std9panicking11panic_count13count_is_zero17h66cf19443d869469E.llvm.554296154 br label %.thread 36: ; preds = %29 - %trunc.i = trunc i8 %30 to i1 - br i1 %trunc.i, label %.thread48, label %42 + %trunc.i = and i8 %30, 1 + %.not57.not = icmp eq i8 %trunc.i, 0 + br i1 %.not57.not, label %43, label %.thread48 .thread48: ; preds = %36 call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %4) diff --git a/bench/tree-sitter-rs/optimized/50gi8jfmf82cuy8e.ll b/bench/tree-sitter-rs/optimized/50gi8jfmf82cuy8e.ll index fbe580c11ba..954dffbf4e6 100644 --- a/bench/tree-sitter-rs/optimized/50gi8jfmf82cuy8e.ll +++ b/bench/tree-sitter-rs/optimized/50gi8jfmf82cuy8e.ll @@ -2259,8 +2259,7 @@ define hidden { ptr, i8 } @"_ZN4core3ops8function5impls80_$LT$impl$u20$core..ops %7 = load i8, ptr %6, align 8, !range !842, !noalias !843, !noundef !4 %8 = getelementptr inbounds nuw i8, ptr %1, i64 24 %9 = load i8, ptr %8, align 8, !range !163, !alias.scope !840, !noalias !837 - %10 = trunc nuw i8 %9 to i1 - %..i.i.i.i = select i1 %10, i8 3, i8 2 + %10 = or disjoint i8 %9, 2 %.pn6.i.i = select i1 %4, ptr %5, ptr %1 %.pn4.i.i = select i1 %4, i8 %7, i8 %..i.i.i.i %.pn.i.i = insertvalue { ptr, i8 } poison, ptr %.pn6.i.i, 0 @@ -2365,8 +2364,7 @@ define hidden { ptr, i8 } @"_ZN4core3ops8function5impls80_$LT$impl$u20$core..ops %7 = load i8, ptr %6, align 8, !range !842, !noalias !887, !noundef !4 %8 = getelementptr inbounds nuw i8, ptr %1, i64 24 %9 = load i8, ptr %8, align 8, !range !163, !alias.scope !885, !noalias !882 - %10 = trunc nuw i8 %9 to i1 - %..i.i.i.i = select i1 %10, i8 3, i8 2 + %10 = or disjoint i8 %9, 2 %.pn6.i.i = select i1 %4, ptr %5, ptr %1 %.pn4.i.i = select i1 %4, i8 %7, i8 %..i.i.i.i %.pn.i.i = insertvalue { ptr, i8 } poison, ptr %.pn6.i.i, 0 @@ -3457,10 +3455,9 @@ select.unfold.i.i.i.us: ; preds = %.lr.ph, %"_ZN4core4 "_ZN15tree_sitter_cli8generate6render9Generator4init28_$u7b$$u7b$closure$u7d$$u7d$17hfc50e49324e3efeaE.exit.i.i.us": ; preds = %"_ZN5alloc6string87_$LT$impl$u20$core..cmp..PartialEq$LT$alloc..string..String$GT$$u20$for$u20$$RF$str$GT$2eq17h3e686b662887900cE.exit.i.i.i.i.i.us" %42 = load i8, ptr %32, align 8, !range !163, !alias.scope !1263, !noalias !1253, !noundef !4 - %43 = trunc nuw i8 %42 to i1 - %..i.i.i.i.i.i.us = select i1 %43, i8 3, i8 2 - %44 = icmp eq i8 %40, %..i.i.i.i.i.i.us - br i1 %44, label %._crit_edge, label %"_ZN4core4iter8adapters6copied13copy_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hbf3bc9c8a397bc76E.exit.us" + %43 = or disjoint i8 %42, 2 + %..i.i.i.i.i.i.us = icmp eq i9 %40, %43 + br i1 %..i.i.i.i.i.i.us, label %._crit_edge, label %"_ZN4core4iter8adapters6copied13copy_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hbf3bc9c8a397bc76E.exit.us" "_ZN4core4iter8adapters6copied13copy_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hbf3bc9c8a397bc76E.exit.us": ; preds = %"_ZN15tree_sitter_cli8generate6render9Generator4init28_$u7b$$u7b$closure$u7d$$u7d$17hfc50e49324e3efeaE.exit.i.i.us", %"_ZN5alloc6string87_$LT$impl$u20$core..cmp..PartialEq$LT$alloc..string..String$GT$$u20$for$u20$$RF$str$GT$2eq17h3e686b662887900cE.exit.i.i.i.i.i.us", %select.unfold.i.i.i.us %45 = icmp eq ptr %36, %10 @@ -3613,10 +3610,9 @@ select.unfold.i.i.i.loopexit: ; preds = %74 "_ZN15tree_sitter_cli8generate6render9Generator4init28_$u7b$$u7b$closure$u7d$$u7d$17hfc50e49324e3efeaE.exit.i.i": ; preds = %"_ZN5alloc6string87_$LT$impl$u20$core..cmp..PartialEq$LT$alloc..string..String$GT$$u20$for$u20$$RF$str$GT$2eq17h3e686b662887900cE.exit.i.i.i.i.i" %108 = load i8, ptr %32, align 8, !range !163, !alias.scope !1263, !noalias !1253, !noundef !4 - %109 = trunc nuw i8 %108 to i1 - %..i.i.i.i.i.i = select i1 %109, i8 3, i8 2 - %110 = icmp eq i8 %95, %..i.i.i.i.i.i - br i1 %110, label %._crit_edge, label %"_ZN4core4iter8adapters6copied13copy_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hbf3bc9c8a397bc76E.exit" + %109 = or disjoint i8 %108, 2 + %..i.i.i.i.i.i = icmp eq i9 %94, %109 + br i1 %..i.i.i.i.i.i, label %._crit_edge, label %"_ZN4core4iter8adapters6copied13copy_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hbf3bc9c8a397bc76E.exit" "_ZN4core4iter8adapters6copied13copy_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hbf3bc9c8a397bc76E.exit": ; preds = %select.unfold.i.i.i.loopexit, %"_ZN5alloc6string87_$LT$impl$u20$core..cmp..PartialEq$LT$alloc..string..String$GT$$u20$for$u20$$RF$str$GT$2eq17h3e686b662887900cE.exit.i.i.i.i.i", %97, %"_ZN15tree_sitter_cli8generate6render9Generator4init28_$u7b$$u7b$closure$u7d$$u7d$28_$u7b$$u7b$closure$u7d$$u7d$17he67c0aa019d3cf11E.exit.i.i.i.i", %"_ZN15tree_sitter_cli8generate6render9Generator4init28_$u7b$$u7b$closure$u7d$$u7d$17hfc50e49324e3efeaE.exit.i.i" %111 = icmp eq ptr %47, %10 @@ -4606,9 +4602,8 @@ define hidden { ptr, i8 } @"_ZN4core6option15Option$LT$T$GT$6map_or17h80f9217868 5: ; preds = %3 %6 = getelementptr inbounds nuw i8, ptr %0, i64 24 %7 = load i8, ptr %6, align 8, !range !163, !alias.scope !1775, !noundef !4 - %8 = trunc nuw i8 %7 to i1 - %..i.i = select i1 %8, i8 3, i8 2 - br label %9 + %8 = or disjoint i8 %7, 2 + br label %8 9: ; preds = %3, %5 %.pn6 = phi ptr [ %0, %5 ], [ %1, %3 ] @@ -4626,9 +4621,8 @@ define hidden { ptr, i8 } @"_ZN4core6option15Option$LT$T$GT$6map_or17hb1d9784570 5: ; preds = %3 %6 = getelementptr inbounds nuw i8, ptr %0, i64 24 %7 = load i8, ptr %6, align 8, !range !163, !alias.scope !1780, !noundef !4 - %8 = trunc nuw i8 %7 to i1 - %..i.i = select i1 %8, i8 3, i8 2 - br label %9 + %8 = or disjoint i8 %7, 2 + br label %8 9: ; preds = %3, %5 %.pn6 = phi ptr [ %0, %5 ], [ %1, %3 ] @@ -19908,8 +19902,7 @@ define hidden { ptr, i8 } @"_ZN15tree_sitter_cli8generate10node_types24generate_ %6 = load i8, ptr %5, align 8, !range !842, !noundef !4 %7 = getelementptr inbounds nuw i8, ptr %1, i64 24 %8 = load i8, ptr %7, align 8, !range !163 - %9 = trunc nuw i8 %8 to i1 - %..i.i.i = select i1 %9, i8 3, i8 2 + %9 = or disjoint i8 %8, 2 %.pn6.i = select i1 %3, ptr %4, ptr %1 %.pn4.i = select i1 %3, i8 %6, i8 %..i.i.i %.pn.i = insertvalue { ptr, i8 } poison, ptr %.pn6.i, 0 @@ -19968,8 +19961,7 @@ define hidden { ptr, i8 } @"_ZN15tree_sitter_cli8generate10node_types24generate_ %6 = load i8, ptr %5, align 8, !range !842, !noundef !4 %7 = getelementptr inbounds nuw i8, ptr %1, i64 24 %8 = load i8, ptr %7, align 8, !range !163 - %9 = trunc nuw i8 %8 to i1 - %..i.i.i = select i1 %9, i8 3, i8 2 + %9 = or disjoint i8 %8, 2 %.pn6.i = select i1 %3, ptr %4, ptr %1 %.pn4.i = select i1 %3, i8 %6, i8 %..i.i.i %.pn.i = insertvalue { ptr, i8 } poison, ptr %.pn6.i, 0 diff --git a/bench/typst-rs/optimized/22a0ijn9jg8ilzgs.ll b/bench/typst-rs/optimized/22a0ijn9jg8ilzgs.ll index abd8b19f852..984564c57d2 100644 --- a/bench/typst-rs/optimized/22a0ijn9jg8ilzgs.ll +++ b/bench/typst-rs/optimized/22a0ijn9jg8ilzgs.ll @@ -175691,15 +175691,14 @@ define hidden void @"_ZN76_$LT$plist..de..MapAndSeqAccess$LT$I$GT$$u20$as$u20$se define hidden void @"_ZN76_$LT$plist..de..MapAndSeqAccess$LT$I$GT$$u20$as$u20$serde..de..MapAccess$GT$15next_value_seed17h7d699f64aa1b466bE"(ptr noalias noundef sret({ i8, [31 x i8] }) align 8 captures(none) dereferenceable(32) %0, ptr noalias noundef readonly align 8 captures(none) dereferenceable(32) %1) unnamed_addr #5 { %3 = getelementptr inbounds nuw i8, ptr %1, i64 24 %4 = load i8, ptr %3, align 8, !range !356, !noundef !4 - %5 = trunc nuw i8 %4 to i1 - %. = select i1 %5, i8 1, i8 2 - %6 = getelementptr inbounds nuw i8, ptr %1, i64 16 - %7 = load ptr, ptr %6, align 8, !nonnull !4, !align !1039, !noundef !4 - %8 = getelementptr inbounds nuw i8, ptr %7, i64 177 - %9 = load i8, ptr %8, align 1, !range !3827, !noundef !4 - store i8 %., ptr %8, align 1 - tail call void @"_ZN88_$LT$$RF$mut$u20$plist..de..Deserializer$LT$I$GT$$u20$as$u20$serde..de..Deserializer$GT$15deserialize_any17h2ad98aeee12020e1E.llvm.16845035774076767816"(ptr noalias noundef nonnull sret({ i8, [31 x i8] }) align 8 captures(none) dereferenceable(32) %0, ptr noalias noundef nonnull align 16 dereferenceable(192) %7) - store i8 %9, ptr %8, align 1 + %5 = sub nuw nsw i8 2, %4 + %. = getelementptr inbounds nuw i8, ptr %1, i64 16 + %6 = load ptr, ptr %5, align 8, !nonnull !4, !align !1039, !noundef !4 + %7 = getelementptr inbounds nuw i8, ptr %6, i64 177 + %8 = load i8, ptr %7, align 1, !range !3827, !noundef !4 + store i8 %., ptr %7, align 1 + tail call void @"_ZN88_$LT$$RF$mut$u20$plist..de..Deserializer$LT$I$GT$$u20$as$u20$serde..de..Deserializer$GT$15deserialize_any17h2ad98aeee12020e1E.llvm.16845035774076767816"(ptr noalias noundef nonnull sret({ i8, [31 x i8] }) align 8 captures(none) dereferenceable(32) %0, ptr noalias noundef nonnull align 16 dereferenceable(192) %6) + store i8 %8, ptr %7, align 1 ret void } diff --git a/bench/wasmtime-rs/optimized/2dcgoeji2y2j2nl0.ll b/bench/wasmtime-rs/optimized/2dcgoeji2y2j2nl0.ll index 3ec51b088dd..f9f5b494069 100644 --- a/bench/wasmtime-rs/optimized/2dcgoeji2y2j2nl0.ll +++ b/bench/wasmtime-rs/optimized/2dcgoeji2y2j2nl0.ll @@ -24559,11 +24559,10 @@ define hidden void @"_ZN4core6result19Result$LT$T$C$E$GT$3map17h713d92deb9c532c4 ; Function Attrs: inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite) uwtable define hidden void @"_ZN4core6result19Result$LT$T$C$E$GT$3map17h7858772856e91150E.llvm.7452288157325931747"(ptr noalias noundef writeonly sret({ i64, [1 x i64] }) align 8 captures(none) dereferenceable(16) initializes((0, 16)) %0, ptr noalias noundef readonly align 8 captures(none) dereferenceable(16) %1) unnamed_addr #8 { %3 = load i64, ptr %1, align 8, !range !8, !noundef !4 - %trunc = trunc nuw i64 %3 to i1 %4 = getelementptr inbounds nuw i8, ptr %1, i64 8 %5 = load ptr, ptr %4, align 8 %.sink1 = ptrtoint ptr %5 to i64 - %.sink = select i1 %trunc, i64 2, i64 1 + %.sink = add nuw nsw i64 %3, 1 %6 = getelementptr inbounds nuw i8, ptr %0, i64 8 store i64 %.sink1, ptr %6, align 8 store i64 %.sink, ptr %0, align 8 @@ -41328,8 +41327,8 @@ define hidden void @"_ZN79_$LT$serde..de..impls..OptionVisitor$LT$T$GT$$u20$as$u tail call void @llvm.experimental.noalias.scope.decl(metadata !17642) %3 = getelementptr inbounds nuw i8, ptr %1, i64 8 %4 = load i64, ptr %3, align 8, !alias.scope !17645, !noalias !17646, !noundef !4 - %5 = icmp ult i64 %4, 8 - br i1 %5, label %10, label %6 + %5 = icmp ugt i64 %4, 7 + br i1 %5, label %6, label %10 6: ; preds = %2 %7 = load ptr, ptr %1, align 8, !alias.scope !17645, !noalias !17646, !nonnull !4, !align !142, !noundef !4 @@ -41346,11 +41345,11 @@ define hidden void @"_ZN79_$LT$serde..de..impls..OptionVisitor$LT$T$GT$$u20$as$u br label %"_ZN5serde2de5impls56_$LT$impl$u20$serde..de..Deserialize$u20$for$u20$u64$GT$11deserialize17he88d108f19d841adE.llvm.7452288157325931747.exit" "_ZN5serde2de5impls56_$LT$impl$u20$serde..de..Deserialize$u20$for$u20$u64$GT$11deserialize17he88d108f19d841adE.llvm.7452288157325931747.exit": ; preds = %6, %10 - %.sink.i = phi i64 [ 1, %6 ], [ 2, %10 ] %.sink.i.i = phi i64 [ %.sroa.0.0.copyload.i.i.i.i, %6 ], [ %12, %10 ] + %storemerge.i.i = phi i64 [ 1, %6 ], [ 2, %10 ] %13 = getelementptr inbounds nuw i8, ptr %0, i64 8 store i64 %.sink.i.i, ptr %13, align 8, !alias.scope !17663, !noalias !17666 - store i64 %.sink.i, ptr %0, align 8, !alias.scope !17663, !noalias !17666 + store i64 %storemerge.i.i, ptr %0, align 8, !alias.scope !17663, !noalias !17666 ret void } @@ -50859,8 +50858,8 @@ define hidden void @"_ZN94_$LT$$RF$mut$u20$bincode..de..Deserializer$LT$R$C$O$GT tail call void @llvm.experimental.noalias.scope.decl(metadata !25049) tail call void @llvm.experimental.noalias.scope.decl(metadata !25052) tail call void @llvm.experimental.noalias.scope.decl(metadata !25055) - %27 = icmp ult i64 %5, 9 - br i1 %27, label %31, label %28 + %27 = icmp ugt i64 %9, 7 + br i1 %27, label %28, label %31 28: ; preds = %26 %29 = getelementptr inbounds nuw i8, ptr %7, i64 9 @@ -50876,14 +50875,14 @@ define hidden void @"_ZN94_$LT$$RF$mut$u20$bincode..de..Deserializer$LT$R$C$O$GT br label %"_ZN79_$LT$serde..de..impls..OptionVisitor$LT$T$GT$$u20$as$u20$serde..de..Visitor$GT$10visit_some17hd7ea2358a56e4ecdE.llvm.7452288157325931747.exit" "_ZN79_$LT$serde..de..impls..OptionVisitor$LT$T$GT$$u20$as$u20$serde..de..Visitor$GT$10visit_some17hd7ea2358a56e4ecdE.llvm.7452288157325931747.exit": ; preds = %28, %31 - %.sink.i.i = phi i64 [ 1, %28 ], [ 2, %31 ] %.sink.i.i.i = phi i64 [ %.sroa.0.0.copyload.i.i.i.i.i, %28 ], [ %33, %31 ] + %storemerge.i.i.i = phi i64 [ 1, %28 ], [ 2, %31 ] %34 = getelementptr inbounds nuw i8, ptr %0, i64 8 store i64 %.sink.i.i.i, ptr %34, align 8, !alias.scope !25076, !noalias !25079 br label %35 35: ; preds = %6, %"_ZN79_$LT$serde..de..impls..OptionVisitor$LT$T$GT$$u20$as$u20$serde..de..Visitor$GT$10visit_some17hd7ea2358a56e4ecdE.llvm.7452288157325931747.exit", %"_ZN5alloc5boxed12Box$LT$T$GT$3new17h2cce5f9f567a2787E.llvm.7452288157325931747.exit", %10 - %.sink = phi i64 [ %.sink.i.i, %"_ZN79_$LT$serde..de..impls..OptionVisitor$LT$T$GT$$u20$as$u20$serde..de..Visitor$GT$10visit_some17hd7ea2358a56e4ecdE.llvm.7452288157325931747.exit" ], [ 2, %"_ZN5alloc5boxed12Box$LT$T$GT$3new17h2cce5f9f567a2787E.llvm.7452288157325931747.exit" ], [ 2, %10 ], [ 0, %6 ] + %.sink = phi i64 [ %storemerge.i.i.i, %"_ZN79_$LT$serde..de..impls..OptionVisitor$LT$T$GT$$u20$as$u20$serde..de..Visitor$GT$10visit_some17hd7ea2358a56e4ecdE.llvm.7452288157325931747.exit" ], [ 2, %"_ZN5alloc5boxed12Box$LT$T$GT$3new17h2cce5f9f567a2787E.llvm.7452288157325931747.exit" ], [ 2, %10 ], [ 0, %6 ] store i64 %.sink, ptr %0, align 8 ret void } diff --git a/bench/wireshark/optimized/ngsniffer.ll b/bench/wireshark/optimized/ngsniffer.ll index aac59684866..1bbf48520e9 100644 --- a/bench/wireshark/optimized/ngsniffer.ll +++ b/bench/wireshark/optimized/ngsniffer.ll @@ -2821,39 +2821,38 @@ define internal zeroext i1 @ngsniffer_dump(ptr noundef %0, ptr noundef %1, ptr n 123: ; preds = %89, %89 %124 = load i8, ptr %10, align 8, !range !6, !noundef !7 - %125 = trunc nuw i8 %124 to i1 - %126 = select i1 %125, i8 0, i8 -128 + %125 = xor i8 %124, -1 + %126 = shl i8 %125, 7 %127 = getelementptr inbounds nuw i8, ptr %6, i64 8 store i8 %126, ptr %127, align 2 br label %143 128: ; preds = %89 %129 = load i8, ptr %10, align 8, !range !6, !noundef !7 - %130 = trunc nuw i8 %129 to i1 - %131 = select i1 %130, i8 -128, i8 0 - %132 = getelementptr inbounds nuw i8, ptr %6, i64 8 - store i8 %131, ptr %132, align 2 - %133 = getelementptr inbounds nuw i8, ptr %1, i64 81 - %134 = load i8, ptr %133, align 1 - switch i8 %134, label %143 [ - i8 0, label %135 - i8 1, label %137 - i8 2, label %139 + %130 = shl nuw i8 %129, 7 + %131 = getelementptr inbounds nuw i8, ptr %6, i64 8 + store i8 %130, ptr %131, align 2 + %132 = getelementptr inbounds nuw i8, ptr %1, i64 81 + %133 = load i8, ptr %132, align 1 + switch i8 %133, label %142 [ + i8 0, label %134 + i8 1, label %136 + i8 2, label %138 ] 135: ; preds = %128 - %136 = or disjoint i8 %131, 24 - store i8 %136, ptr %132, align 2 + %136 = or disjoint i8 %130, 24 + store i8 %136, ptr %131, align 2 br label %143 137: ; preds = %128 - %138 = or disjoint i8 %131, 8 - store i8 %138, ptr %132, align 2 + %138 = or disjoint i8 %130, 8 + store i8 %138, ptr %131, align 2 br label %143 139: ; preds = %128 - %140 = or disjoint i8 %131, 16 - store i8 %140, ptr %132, align 2 + %140 = or disjoint i8 %130, 16 + store i8 %140, ptr %131, align 2 br label %143 141: ; preds = %89 diff --git a/bench/wireshark/optimized/packet-vj-comp.ll b/bench/wireshark/optimized/packet-vj-comp.ll index 7179a097fa7..43ec53d9286 100644 --- a/bench/wireshark/optimized/packet-vj-comp.ll +++ b/bench/wireshark/optimized/packet-vj-comp.ll @@ -938,79 +938,78 @@ proto_item_set_generated.exit326: ; preds = %267, %264, %262, %v store i8 %397, ptr %398, align 1 %399 = getelementptr inbounds nuw i8, ptr %.0256, i64 20 %400 = load i8, ptr %399, align 4, !range !6, !noundef !7 - %401 = trunc nuw i8 %400 to i1 - %402 = getelementptr i8, ptr %365, i64 13 - %403 = load i8, ptr %402, align 1 - %404 = and i8 %403, -9 - %masksel = select i1 %401, i8 8, i8 0 - %.sink437 = or disjoint i8 %404, %masksel - store i8 %.sink437, ptr %402, align 1 - %405 = getelementptr i8, ptr %365, i64 16 - %406 = load i16, ptr %.0256, align 4 - %407 = lshr i16 %406, 8 - %408 = trunc nuw i16 %407 to i8 - store i8 %408, ptr %405, align 1 - %409 = trunc i16 %406 to i8 - %410 = getelementptr i8, ptr %365, i64 17 - store i8 %409, ptr %410, align 1 - %411 = getelementptr inbounds nuw i8, ptr %.0256, i64 2 - %412 = load i16, ptr %411, align 2 - %.not298 = icmp eq i16 %412, 0 - %413 = getelementptr i8, ptr %365, i64 13 - br i1 %.not298, label %420, label %414 - -414: ; preds = %334 - %415 = or i8 %.sink437, 32 - store i8 %415, ptr %413, align 1 - %416 = load i16, ptr %411, align 2 - %417 = lshr i16 %416, 8 - %418 = trunc nuw i16 %417 to i8 - %419 = trunc i16 %416 to i8 - br label %422 - -420: ; preds = %334 - %421 = and i8 %.sink437, -33 - store i8 %421, ptr %413, align 1 - br label %422 - -422: ; preds = %420, %414 - %.sink387 = phi i8 [ 0, %420 ], [ %418, %414 ] - %.sink = phi i8 [ 0, %420 ], [ %419, %414 ] - %423 = getelementptr i8, ptr %365, i64 18 - store i8 %.sink387, ptr %423, align 1 - %424 = getelementptr i8, ptr %365, i64 19 - store i8 %.sink, ptr %424, align 1 - %425 = load i8, ptr %335, align 8 - %426 = zext i8 %425 to i32 - %427 = call ptr @tvb_new_child_real_data(ptr noundef %0, ptr noundef %341, i32 noundef %426, i32 noundef %426) - call void @tvb_set_free_cb(ptr noundef %427, ptr noundef null) - %428 = call i32 @tvb_captured_length_remaining(ptr noundef %0, i32 noundef %.5366) - %.not299 = icmp eq i32 %428, 0 - br i1 %.not299, label %436, label %429 - -429: ; preds = %422 - %430 = call ptr @tvb_new_composite() - call void @tvb_composite_append(ptr noundef %430, ptr noundef %427) - %431 = call ptr @tvb_new_subset_remaining(ptr noundef %0, i32 noundef %.5366) - call void @tvb_composite_append(ptr noundef %430, ptr noundef %431) - call void @tvb_composite_finalize(ptr noundef %430) - %432 = load i32, ptr @hf_vjc_tcpdata, align 4 - %433 = call ptr @proto_tree_add_item(ptr noundef %67, i32 noundef %432, ptr noundef %0, i32 noundef %.5366, i32 noundef %428, i32 noundef 0) - %434 = icmp eq i32 %428, 1 - %435 = select i1 %434, ptr @.str.81, ptr @.str.82 - call void (ptr, ptr, ...) @proto_item_set_text(ptr noundef %433, ptr noundef nonnull @.str.80, i32 noundef %428, ptr noundef nonnull %435) - br label %436 - -436: ; preds = %422, %429 - %.0 = phi ptr [ %430, %429 ], [ %427, %422 ] + %401 = getelementptr i8, ptr %365, i64 13 + %402 = load i8, ptr %401, align 1 + %403 = and i8 %402, -9 + %404 = shl nuw nsw i8 %400, 3 + %masksel = or disjoint i8 %403, %404 + store i8 %.sink437, ptr %401, align 1 + %404 = getelementptr i8, ptr %365, i64 16 + %405 = load i16, ptr %.0256, align 4 + %406 = lshr i16 %405, 8 + %407 = trunc nuw i16 %406 to i8 + store i8 %407, ptr %404, align 1 + %408 = trunc i16 %405 to i8 + %409 = getelementptr i8, ptr %365, i64 17 + store i8 %408, ptr %409, align 1 + %410 = getelementptr inbounds nuw i8, ptr %.0256, i64 2 + %411 = load i16, ptr %410, align 2 + %412 = icmp eq i16 %411, 0 + %.not298 = getelementptr i8, ptr %365, i64 13 + br i1 %412, label %419, label %413 + +413: ; preds = %334 + %414 = or i8 %404, 32 + store i8 %414, ptr %412, align 1 + %415 = load i16, ptr %410, align 2 + %416 = lshr i16 %415, 8 + %417 = trunc nuw i16 %416 to i8 + %418 = trunc i16 %415 to i8 + br label %421 + +419: ; preds = %334 + %420 = and i8 %404, -33 + store i8 %420, ptr %412, align 1 + br label %421 + +421: ; preds = %419, %413 + %.sink387 = phi i8 [ 0, %419 ], [ %417, %413 ] + %.sink387 = phi i8 [ 0, %419 ], [ %418, %413 ] + %.sink = getelementptr i8, ptr %365, i64 18 + store i8 %.sink387, ptr %422, align 1 + %423 = getelementptr i8, ptr %365, i64 19 + store i8 %.sink, ptr %423, align 1 + %424 = load i8, ptr %335, align 8 + %425 = zext i8 %424 to i32 + %426 = call ptr @tvb_new_child_real_data(ptr noundef %0, ptr noundef %341, i32 noundef %425, i32 noundef %425) + call void @tvb_set_free_cb(ptr noundef %426, ptr noundef null) + %427 = call i32 @tvb_captured_length_remaining(ptr noundef %0, i32 noundef %.5366) + %428 = icmp eq i32 %427, 0 + br i1 %.not299, label %435, label %428 + +428: ; preds = %421 + %429 = call ptr @tvb_new_composite() + call void @tvb_composite_append(ptr noundef %429, ptr noundef %426) + %430 = call ptr @tvb_new_subset_remaining(ptr noundef %0, i32 noundef %.5366) + call void @tvb_composite_append(ptr noundef %429, ptr noundef %430) + call void @tvb_composite_finalize(ptr noundef %429) + %431 = load i32, ptr @hf_vjc_tcpdata, align 4 + %432 = call ptr @proto_tree_add_item(ptr noundef %67, i32 noundef %431, ptr noundef %0, i32 noundef %.5366, i32 noundef %427, i32 noundef 0) + %433 = icmp eq i32 %427, 1 + %434 = select i1 %433, ptr @.str.81, ptr @.str.82 + call void (ptr, ptr, ...) @proto_item_set_text(ptr noundef %432, ptr noundef nonnull @.str.80, i32 noundef %427, ptr noundef nonnull %434) + br label %435 + +435: ; preds = %421, %428 + %.0 = phi ptr [ %429, %428 ], [ %426, %421 ] call void @add_new_data_source(ptr noundef %1, ptr noundef %.0, ptr noundef nonnull @.str.83) %437 = load ptr, ptr @ip_handle, align 8 %438 = call i32 @call_dissector_with_data(ptr noundef %437, ptr noundef %.0, ptr noundef %1, ptr noundef %2, ptr noundef %3) %439 = add i32 %438, %.5366 br label %440 -440: ; preds = %436, %283, %278, %273, %68 - %.0267 = phi i32 [ %70, %68 ], [ %281, %278 ], [ %286, %283 ], [ %439, %436 ], [ %276, %273 ] +440: ; preds = %435, %283, %278, %273, %68 + %.0267 = phi i32 [ %70, %68 ], [ %281, %278 ], [ %286, %283 ], [ %439, %435 ], [ %276, %273 ] call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #9 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #9 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #9 diff --git a/bench/xgboost/optimized/charconv.ll b/bench/xgboost/optimized/charconv.ll index 78be2d1cfa9..2834fc3f4c8 100644 --- a/bench/xgboost/optimized/charconv.ll +++ b/bench/xgboost/optimized/charconv.ll @@ -50,7 +50,6 @@ define noundef i32 @_ZN7xgboost6detail16ToCharsFloatImplEfPc(float noundef %0, p br i1 %or.cond, label %13, label %25 13: ; preds = %2 - %14 = trunc nuw i32 %.lobit.i to i1 %.not.i = icmp eq i32 %7, 0 br i1 %.not.i, label %16, label %15 @@ -59,7 +58,8 @@ define noundef i32 @_ZN7xgboost6detail16ToCharsFloatImplEfPc(float noundef %0, p br label %_ZN7xgboost6detail10RyuPrinter17PrintSpecialFloatEbNS0_18UnsignedFloatBase2EPc.exit 16: ; preds = %13 - br i1 %14, label %17, label %18 + %16 = trunc nuw i32 %.lobit.i to i1 + br i1 %16, label %17, label %18 17: ; preds = %16 store i8 45, ptr %1, align 1 @@ -73,12 +73,12 @@ define noundef i32 @_ZN7xgboost6detail16ToCharsFloatImplEfPc(float noundef %0, p 21: ; preds = %18 store i64 8751735898823355977, ptr %20, align 1 - %22 = select i1 %14, i32 9, i32 8 + %22 = or disjoint i32 %.lobit.i, 8 br label %_ZN7xgboost6detail10RyuPrinter17PrintSpecialFloatEbNS0_18UnsignedFloatBase2EPc.exit 23: ; preds = %18 tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(3) %20, ptr noundef nonnull align 1 dereferenceable(3) @.str.2, i64 3, i1 false) - %24 = select i1 %14, i32 4, i32 3 + %24 = add nuw nsw i32 %.lobit.i, 3 br label %_ZN7xgboost6detail10RyuPrinter17PrintSpecialFloatEbNS0_18UnsignedFloatBase2EPc.exit 25: ; preds = %2 diff --git a/bench/z3/optimized/nla_intervals.ll b/bench/z3/optimized/nla_intervals.ll index a6253b7dccc..4e86dd99b6b 100644 --- a/bench/z3/optimized/nla_intervals.ll +++ b/bench/z3/optimized/nla_intervals.ll @@ -8015,10 +8015,10 @@ if.else.i.i7.i.i.i38: ; preds = %_ZN11mpq_managerILb invoke.cont20: ; preds = %if.else.i.i7.i.i.i38, %if.then.i.i8.i.i.i39 %13 = load i8, ptr %is_strict, align 1 - %tobool19 = trunc i8 %13 to i1 %m_upper_open.i.i = getelementptr inbounds nuw i8, ptr %b, i64 64 %bf.load.i.i49 = load i8, ptr %m_upper_open.i.i, align 8 - %bf.shl.i.i = select i1 %tobool19, i8 2, i8 0 + %bf.shl.i.i = shl i8 %13, 1 + %bf.shl.i.i = and i8 %14, 2 %bf.clear.i.i50 = and i8 %bf.load.i.i49, -11 %bf.set.i.i51 = or disjoint i8 %bf.clear.i.i50, %bf.shl.i.i store i8 %bf.set.i.i51, ptr %m_upper_open.i.i, align 8 @@ -11790,10 +11790,10 @@ if.else.i.i7.i.i.i42: ; preds = %_ZN11mpq_managerILb invoke.cont23: ; preds = %if.then.i.i8.i.i.i43, %if.else.i.i7.i.i.i42 %14 = load i8, ptr %is_strict, align 1 - %tobool20 = trunc i8 %14 to i1 %m_upper_open.i.i = getelementptr inbounds nuw i8, ptr %b, i64 64 %bf.load.i.i53 = load i8, ptr %m_upper_open.i.i, align 8 - %bf.shl.i.i = select i1 %tobool20, i8 2, i8 0 + %bf.shl.i.i = shl i8 %14, 1 + %bf.shl.i.i = and i8 %15, 2 %bf.clear.i.i54 = and i8 %bf.load.i.i53, -11 %bf.set.i.i55 = or disjoint i8 %bf.clear.i.i54, %bf.shl.i.i store i8 %bf.set.i.i55, ptr %m_upper_open.i.i, align 8 diff --git a/scripts/setup_pre_commit_patch.sh b/scripts/setup_pre_commit_patch.sh index c5409e09ef4..5aae1f4f7e0 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/127905 export COMPTIME_MODE=0 # Please rebase manually