diff --git a/bench/boost/optimized/approximately_equals.ll b/bench/boost/optimized/approximately_equals.ll index 17125619253..8d191b7dbea 100644 --- a/bench/boost/optimized/approximately_equals.ll +++ b/bench/boost/optimized/approximately_equals.ll @@ -161632,8 +161632,9 @@ _ZNK5boost14multiprecision8backends15cpp_int_backendILm0ELm0ELNS0_16cpp_integer_ _ZNK5boost14multiprecision8backends15cpp_int_backendILm0ELm0ELNS0_16cpp_integer_typeE1ELNS0_18cpp_int_check_typeE0ESaIyEE7compareILm0ELm0ELS3_1ELS4_0ES5_EEiRKNS2_IXT_EXT0_EXT1_EXT2_ET3_EE.exit.thread544: ; preds = %669 %693 = icmp ugt i64 %670, %671 - %694 = xor i1 %693, %666 - br i1 %694, label %_ZNK5boost14multiprecision8backends15cpp_int_backendILm0ELm0ELNS0_16cpp_integer_typeE1ELNS0_18cpp_int_check_typeE0ESaIyEE7compareILm0ELm0ELS3_1ELS4_0ES5_EEiRKNS2_IXT_EXT0_EXT1_EXT2_ET3_EE.exit.thread.thread547, label %_ZNK5boost14multiprecision8backends15cpp_int_backendILm0ELm0ELNS0_16cpp_integer_typeE1ELNS0_18cpp_int_check_typeE0ESaIyEE7compareILm0ELm0ELS3_1ELS4_0ES5_EEiRKNS2_IXT_EXT0_EXT1_EXT2_ET3_EE.exit.thread442 + %694 = trunc nuw i8 %665 to i1 + %695 = xor i1 %693, %694 + br i1 %695, label %_ZNK5boost14multiprecision8backends15cpp_int_backendILm0ELm0ELNS0_16cpp_integer_typeE1ELNS0_18cpp_int_check_typeE0ESaIyEE7compareILm0ELm0ELS3_1ELS4_0ES5_EEiRKNS2_IXT_EXT0_EXT1_EXT2_ET3_EE.exit.thread.thread547, label %_ZNK5boost14multiprecision8backends15cpp_int_backendILm0ELm0ELNS0_16cpp_integer_typeE1ELNS0_18cpp_int_check_typeE0ESaIyEE7compareILm0ELm0ELS3_1ELS4_0ES5_EEiRKNS2_IXT_EXT0_EXT1_EXT2_ET3_EE.exit.thread442 _ZNK5boost14multiprecision8backends15cpp_int_backendILm0ELm0ELNS0_16cpp_integer_typeE1ELNS0_18cpp_int_check_typeE0ESaIyEE7compareILm0ELm0ELS3_1ELS4_0ES5_EEiRKNS2_IXT_EXT0_EXT1_EXT2_ET3_EE.exit.thread.thread: ; preds = %668 invoke void @_ZN5boost14multiprecision8backends12add_unsignedINS1_15cpp_int_backendILm0ELm0ELNS0_16cpp_integer_typeE1ELNS0_18cpp_int_check_typeE0ESaIyEEES7_S7_EEvRT_RKT0_RKT1_(ptr noundef nonnull align 16 dereferenceable(27) %3, ptr noundef nonnull align 16 dereferenceable(27) %3, ptr noundef nonnull align 16 dereferenceable(27) %10) diff --git a/bench/boost/optimized/src.ll b/bench/boost/optimized/src.ll index a3d57e913ee..ce7e066d37a 100644 --- a/bench/boost/optimized/src.ll +++ b/bench/boost/optimized/src.ll @@ -61761,7 +61761,7 @@ define linkonce_odr hidden { ptr, i32 } @_ZN5boost4json6detail8charconv6detail6p %85 = xor i8 %.0228, 1 %narrow = select i1 %50, i8 0, i8 %85 %spec.select = zext nneg i8 %narrow to i64 - %.2223 = add nuw nsw i64 %.1222, %spec.select + %.2223 = add i64 %.1222, %spec.select %86 = load i8, ptr %84, align 1, !tbaa !15 %87 = icmp eq i8 %86, 46 %spec.select249 = select i1 %87, i8 1, i8 %.0228 diff --git a/bench/ceres/optimized/polynomial.ll b/bench/ceres/optimized/polynomial.ll index 8879cbfee1c..7bb92a9280a 100644 --- a/bench/ceres/optimized/polynomial.ll +++ b/bench/ceres/optimized/polynomial.ll @@ -3035,12 +3035,12 @@ define hidden void @_ZN5ceres8internal27FindInterpolatingPolynomialERKSt6vectorI %18 = load i8, ptr %17, align 8 %19 = and i8 %18, 1 %20 = zext nneg i8 %19 to i32 - %spec.select = add nsw i32 %.04777, %20 + %spec.select = add i32 %.04777, %20 %21 = getelementptr inbounds nuw i8, ptr %16, i64 80 %22 = load i8, ptr %21, align 8 %23 = and i8 %22, 1 %24 = zext nneg i8 %23 to i32 - %.2 = add nsw i32 %spec.select, %24 + %.2 = add i32 %spec.select, %24 %25 = freeze i32 %.2 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count diff --git a/bench/clamav/optimized/scantree.ll b/bench/clamav/optimized/scantree.ll index 204a5d38464..6745eb9565a 100644 --- a/bench/clamav/optimized/scantree.ll +++ b/bench/clamav/optimized/scantree.ll @@ -1015,8 +1015,7 @@ define noundef zeroext i1 @_ZN8ScanTree15GetFilteredMaskEv(ptr noundef nonnull a br i1 %26, label %27, label %30 27: ; preds = %24, %22 - %.mask = and i8 %.130, 1 - %28 = zext nneg i8 %.mask to i32 + %.mask = zext nneg i8 %.130 to i32 %spec.select = add i32 %.031, %28 %29 = icmp eq i32 %spec.select, 0 %spec.select43 = select i1 %29, i32 %.034, i32 %.035 diff --git a/bench/cmake/optimized/cmCTestTestHandler.ll b/bench/cmake/optimized/cmCTestTestHandler.ll index b67216964da..27ad64797c8 100644 --- a/bench/cmake/optimized/cmCTestTestHandler.ll +++ b/bench/cmake/optimized/cmCTestTestHandler.ll @@ -19504,7 +19504,7 @@ _ZNSt6vectorIN18cmCTestTestHandler21cmCTestTestPropertiesESaIS1_EE5clearEv.exit: br i1 %.not115119, label %._crit_edge, label %.lr.ph ._crit_edge.loopexit: ; preds = %.lr.ph - %22 = zext nneg i32 %spec.select to i64 + %22 = sext i32 %spec.select to i64 br label %._crit_edge ._crit_edge: ; preds = %._crit_edge.loopexit, %15 @@ -19530,7 +19530,7 @@ _ZNSt6vectorIN18cmCTestTestHandler21cmCTestTestPropertiesESaIS1_EE5clearEv.exit: %29 = getelementptr inbounds nuw i8, ptr %.sroa.096.0120, i64 416 %30 = load i8, ptr %29, align 8, !tbaa !594, !range !96, !noundef !97 %31 = zext nneg i8 %30 to i32 - %spec.select = add nuw nsw i32 %.0121, %31 + %spec.select = add i32 %.0121, %31 %32 = getelementptr inbounds nuw i8, ptr %.sroa.096.0120, i64 952 %.not115 = icmp eq ptr %32, %16 br i1 %.not115, label %._crit_edge.loopexit, label %.lr.ph @@ -19561,7 +19561,7 @@ _ZNSt6vectorIN18cmCTestTestHandler21cmCTestTestPropertiesESaIS1_EE5clearEv.exit: %46 = load i8, ptr %45, align 8, !tbaa !594, !range !96, !noundef !97 %47 = trunc nuw i8 %46 to i1 %48 = zext nneg i8 %46 to i32 - %spec.select112 = add nuw nsw i32 %.2142, %48 + %spec.select112 = add i32 %.2142, %48 %49 = load i8, ptr %23, align 1, !tbaa !596, !range !96, !noundef !97 %50 = trunc nuw i8 %49 to i1 %51 = load ptr, ptr %33, align 8, !tbaa !356 diff --git a/bench/coreutils-rs/optimized/2i3dvgzkmy2gn6v1.ll b/bench/coreutils-rs/optimized/2i3dvgzkmy2gn6v1.ll index 069fc643dd2..6a25eb42f79 100644 --- a/bench/coreutils-rs/optimized/2i3dvgzkmy2gn6v1.ll +++ b/bench/coreutils-rs/optimized/2i3dvgzkmy2gn6v1.ll @@ -7171,10 +7171,9 @@ _ZN7uu_sort15numeric_str_cmp7NumInfo15is_invalid_char17h9471ff473f7ea521E.exit.t .outer: ; preds = %_ZN7uu_sort15numeric_str_cmp7NumInfo15is_invalid_char17h9471ff473f7ea521E.exit.thread85, %98 %91 = phi i1 [ true, %98 ], [ %90, %_ZN7uu_sort15numeric_str_cmp7NumInfo15is_invalid_char17h9471ff473f7ea521E.exit.thread85 ] %.149 = phi i64 [ %99, %98 ], [ %.048.ph147, %_ZN7uu_sort15numeric_str_cmp7NumInfo15is_invalid_char17h9471ff473f7ea521E.exit.thread85 ] - %92 = and i8 %.067120, 1 - %93 = xor i8 %92, 1 - %94 = zext nneg i8 %93 to i64 - %spec.select = add i64 %.149, %94 + %92 = xor i8 %.067120, 1 + %93 = zext nneg i8 %92 to i64 + %94 = add i64 %.149, %93 %or.cond3 = or i1 %9, %91 %.sroa.9.1 = select i1 %or.cond3, i64 %.sroa.9.0.ph150, i64 %.sroa.11.0118 %.sroa.0.1 = select i1 %or.cond3, i64 %.sroa.0.0.ph151, i64 1 diff --git a/bench/coreutils-rs/optimized/2pqvixtdp9wizsl2.ll b/bench/coreutils-rs/optimized/2pqvixtdp9wizsl2.ll index 5449d68982c..9408e735615 100644 --- a/bench/coreutils-rs/optimized/2pqvixtdp9wizsl2.ll +++ b/bench/coreutils-rs/optimized/2pqvixtdp9wizsl2.ll @@ -928,10 +928,10 @@ define hidden void @_ZN5uu_pr13write_columns17h36a1407f3aa14445E(ptr noalias nou %29 = load i64, ptr %28, align 8, !noundef !4 %30 = getelementptr inbounds nuw i8, ptr %3, i64 320 %31 = load i8, ptr %30, align 8, !range !107, !noundef !4 - %32 = zext nneg i8 %31 to i64 - %33 = getelementptr inbounds nuw i8, ptr %3, i64 312 - %34 = load i64, ptr %33, align 8 - %.0 = lshr i64 %34, %32 + %32 = getelementptr inbounds nuw i8, ptr %3, i64 312 + %33 = load i64, ptr %32, align 8 + %34 = zext nneg i8 %31 to i64 + %.0 = lshr i64 %33, %34 %35 = getelementptr inbounds nuw i8, ptr %3, i64 16 %36 = load i64, ptr %35, align 8, !range !70, !noundef !4 %trunc = trunc nuw i64 %36 to i1 diff --git a/bench/coreutils-rs/optimized/3wh0yla9idangd55.ll b/bench/coreutils-rs/optimized/3wh0yla9idangd55.ll index 3c07f9f6d9b..025a0810dca 100644 --- a/bench/coreutils-rs/optimized/3wh0yla9idangd55.ll +++ b/bench/coreutils-rs/optimized/3wh0yla9idangd55.ll @@ -1559,34 +1559,34 @@ define void @_ZN5uu_dd5Input8new_file17h59fd1ff108074052E(ptr noalias noundef wr %spec.store.select.i = select i1 %11, i32 16384, i32 0 %12 = getelementptr inbounds nuw i8, ptr %3, i64 66 %13 = load i8, ptr %12, align 2, !range !215, !alias.scope !222, !noundef !5 - %14 = trunc nuw i8 %13 to i1 - %15 = or disjoint i32 %spec.store.select.i, 65536 - %spec.select.i = select i1 %14, i32 %15, i32 %spec.store.select.i + %14 = zext nneg i8 %13 to i32 + %15 = shl nuw nsw i32 %14, 16 + %spec.select.i = or disjoint i32 %15, %spec.store.select.i %16 = getelementptr inbounds nuw i8, ptr %3, i64 67 %17 = load i8, ptr %16, align 1, !range !215, !alias.scope !222, !noundef !5 - %18 = trunc nuw i8 %17 to i1 - %19 = or disjoint i32 %spec.select.i, 4096 - %.1.i = select i1 %18, i32 %19, i32 %spec.select.i + %18 = zext nneg i8 %17 to i32 + %19 = shl nuw nsw i32 %18, 12 + %.1.i = or disjoint i32 %spec.select.i, %19 %20 = getelementptr inbounds nuw i8, ptr %3, i64 71 %21 = load i8, ptr %20, align 1, !range !215, !alias.scope !222, !noundef !5 - %22 = trunc nuw i8 %21 to i1 - %23 = or disjoint i32 %.1.i, 262144 - %.2.i = select i1 %22, i32 %23, i32 %.1.i + %22 = zext nneg i8 %21 to i32 + %23 = shl nuw nsw i32 %22, 18 + %.2.i = or disjoint i32 %.1.i, %23 %24 = getelementptr inbounds nuw i8, ptr %3, i64 72 %25 = load i8, ptr %24, align 8, !range !215, !alias.scope !222, !noundef !5 - %26 = trunc nuw i8 %25 to i1 - %27 = or i32 %.2.i, 256 - %.3.i = select i1 %26, i32 %27, i32 %.2.i + %26 = zext nneg i8 %25 to i32 + %27 = shl nuw nsw i32 %26, 8 + %.3.i = or disjoint i32 %.2.i, %27 %28 = getelementptr inbounds nuw i8, ptr %3, i64 73 %29 = load i8, ptr %28, align 1, !range !215, !alias.scope !222, !noundef !5 - %30 = trunc nuw i8 %29 to i1 - %31 = or i32 %.3.i, 131072 - %.4.i = select i1 %30, i32 %31, i32 %.3.i + %30 = zext nneg i8 %29 to i32 + %31 = shl nuw nsw i32 %30, 17 + %.4.i = or i32 %.3.i, %31 %32 = getelementptr inbounds nuw i8, ptr %3, i64 70 %33 = load i8, ptr %32, align 2, !range !215, !alias.scope !222, !noundef !5 - %34 = trunc nuw i8 %33 to i1 - %35 = or i32 %.4.i, 2048 - %.5.i = select i1 %34, i32 %35, i32 %.4.i + %34 = zext nneg i8 %33 to i32 + %35 = shl nuw nsw i32 %34, 11 + %.5.i = or disjoint 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 @@ -1720,34 +1720,34 @@ define void @_ZN5uu_dd5Input8new_fifo17h63fd09da80b2f076E(ptr noalias noundef wr %spec.store.select.i = select i1 %11, i32 16384, i32 0 %12 = getelementptr inbounds nuw i8, ptr %3, i64 66 %13 = load i8, ptr %12, align 2, !range !215, !alias.scope !233, !noundef !5 - %14 = trunc nuw i8 %13 to i1 - %15 = or disjoint i32 %spec.store.select.i, 65536 - %spec.select.i = select i1 %14, i32 %15, i32 %spec.store.select.i + %14 = zext nneg i8 %13 to i32 + %15 = shl nuw nsw i32 %14, 16 + %spec.select.i = or disjoint i32 %15, %spec.store.select.i %16 = getelementptr inbounds nuw i8, ptr %3, i64 67 %17 = load i8, ptr %16, align 1, !range !215, !alias.scope !233, !noundef !5 - %18 = trunc nuw i8 %17 to i1 - %19 = or disjoint i32 %spec.select.i, 4096 - %.1.i = select i1 %18, i32 %19, i32 %spec.select.i + %18 = zext nneg i8 %17 to i32 + %19 = shl nuw nsw i32 %18, 12 + %.1.i = or disjoint i32 %spec.select.i, %19 %20 = getelementptr inbounds nuw i8, ptr %3, i64 71 %21 = load i8, ptr %20, align 1, !range !215, !alias.scope !233, !noundef !5 - %22 = trunc nuw i8 %21 to i1 - %23 = or disjoint i32 %.1.i, 262144 - %.2.i = select i1 %22, i32 %23, i32 %.1.i + %22 = zext nneg i8 %21 to i32 + %23 = shl nuw nsw i32 %22, 18 + %.2.i = or disjoint i32 %.1.i, %23 %24 = getelementptr inbounds nuw i8, ptr %3, i64 72 %25 = load i8, ptr %24, align 8, !range !215, !alias.scope !233, !noundef !5 - %26 = trunc nuw i8 %25 to i1 - %27 = or i32 %.2.i, 256 - %.3.i = select i1 %26, i32 %27, i32 %.2.i + %26 = zext nneg i8 %25 to i32 + %27 = shl nuw nsw i32 %26, 8 + %.3.i = or disjoint i32 %.2.i, %27 %28 = getelementptr inbounds nuw i8, ptr %3, i64 73 %29 = load i8, ptr %28, align 1, !range !215, !alias.scope !233, !noundef !5 - %30 = trunc nuw i8 %29 to i1 - %31 = or i32 %.3.i, 131072 - %.4.i = select i1 %30, i32 %31, i32 %.3.i + %30 = zext nneg i8 %29 to i32 + %31 = shl nuw nsw i32 %30, 17 + %.4.i = or i32 %.3.i, %31 %32 = getelementptr inbounds nuw i8, ptr %3, i64 70 %33 = load i8, ptr %32, align 2, !range !215, !alias.scope !233, !noundef !5 - %34 = trunc nuw i8 %33 to i1 - %35 = or i32 %.4.i, 2048 - %.5.i = select i1 %34, i32 %35, i32 %.4.i + %34 = zext nneg i8 %33 to i32 + %35 = shl nuw nsw i32 %34, 11 + %.5.i = or disjoint 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 @@ -2692,39 +2692,39 @@ define void @_ZN5uu_dd6Output8new_file17h0d6a277893faa49fE(ptr noalias noundef w %spec.store.select.i.i = select i1 %14, i32 1024, i32 0 %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 = trunc nuw i8 %16 to i1 - %18 = or disjoint i32 %spec.store.select.i.i, 16384 - %spec.select.i.i = select i1 %17, i32 %18, i32 %spec.store.select.i.i + %17 = zext nneg i8 %16 to i32 + %18 = shl nuw nsw i32 %17, 14 + %spec.select.i.i = or disjoint i32 %18, %spec.store.select.i.i %19 = getelementptr inbounds nuw i8, ptr %3, i64 153 %20 = load i8, ptr %19, align 1, !range !215, !alias.scope !312, !noalias !311, !noundef !5 - %21 = trunc nuw i8 %20 to i1 - %22 = or disjoint i32 %spec.select.i.i, 65536 - %.1.i.i = select i1 %21, i32 %22, i32 %spec.select.i.i + %21 = zext nneg i8 %20 to i32 + %22 = shl nuw nsw i32 %21, 16 + %.1.i.i = or disjoint i32 %spec.select.i.i, %22 %23 = getelementptr inbounds nuw i8, ptr %3, i64 154 %24 = load i8, ptr %23, align 2, !range !215, !alias.scope !312, !noalias !311, !noundef !5 - %25 = trunc nuw i8 %24 to i1 - %26 = or disjoint i32 %.1.i.i, 4096 - %.2.i.i = select i1 %25, i32 %26, i32 %.1.i.i + %25 = zext nneg i8 %24 to i32 + %26 = shl nuw nsw i32 %25, 12 + %.2.i.i = or disjoint i32 %.1.i.i, %26 %27 = getelementptr inbounds nuw i8, ptr %3, i64 158 %28 = load i8, ptr %27, align 2, !range !215, !alias.scope !312, !noalias !311, !noundef !5 - %29 = trunc nuw i8 %28 to i1 - %30 = or i32 %.2.i.i, 262144 - %.3.i.i = select i1 %29, i32 %30, i32 %.2.i.i + %29 = zext nneg i8 %28 to i32 + %30 = shl nuw nsw i32 %29, 18 + %.3.i.i = or disjoint 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 = trunc nuw i8 %32 to i1 - %34 = or i32 %.3.i.i, 256 - %.4.i.i = select i1 %33, i32 %34, i32 %.3.i.i + %33 = zext nneg i8 %32 to i32 + %34 = shl nuw nsw i32 %33, 8 + %.4.i.i = or disjoint i32 %.3.i.i, %34 %35 = getelementptr inbounds nuw i8, ptr %3, i64 160 %36 = load i8, ptr %35, align 8, !range !215, !alias.scope !312, !noalias !311, !noundef !5 - %37 = trunc nuw i8 %36 to i1 - %38 = or i32 %.4.i.i, 131072 - %.5.i.i = select i1 %37, i32 %38, i32 %.4.i.i + %37 = zext nneg i8 %36 to i32 + %38 = shl nuw nsw i32 %37, 17 + %.5.i.i = or i32 %.4.i.i, %38 %39 = getelementptr inbounds nuw i8, ptr %3, i64 157 %40 = load i8, ptr %39, align 1, !range !215, !alias.scope !312, !noalias !311, !noundef !5 - %41 = trunc nuw i8 %40 to i1 - %42 = or i32 %.5.i.i, 2048 - %.6.i.i = select i1 %41, i32 %42, i32 %.5.i.i + %41 = zext nneg i8 %40 to i32 + %42 = shl nuw nsw i32 %41, 11 + %.6.i.i = or i32 %.5.i.i, %42 %43 = getelementptr inbounds nuw i8, ptr %3, i64 155 %44 = load i8, ptr %43, align 1, !range !215, !alias.scope !312, !noalias !311, !noundef !5 %45 = trunc nuw i8 %44 to i1 @@ -2945,39 +2945,39 @@ define void @_ZN5uu_dd6Output20new_file_from_stdout17h9b8fdad67a7c0913E(ptr noal %spec.store.select.i = select i1 %22, i32 1024, i32 0 %23 = getelementptr inbounds nuw i8, ptr %1, i64 152 %24 = load i8, ptr %23, align 8, !range !215, !alias.scope !353, !noundef !5 - %25 = trunc nuw i8 %24 to i1 - %26 = or disjoint i32 %spec.store.select.i, 16384 - %spec.select.i = select i1 %25, i32 %26, i32 %spec.store.select.i + %25 = zext nneg i8 %24 to i32 + %26 = shl nuw nsw i32 %25, 14 + %spec.select.i = or disjoint i32 %26, %spec.store.select.i %27 = getelementptr inbounds nuw i8, ptr %1, i64 153 %28 = load i8, ptr %27, align 1, !range !215, !alias.scope !353, !noundef !5 - %29 = trunc nuw i8 %28 to i1 - %30 = or disjoint i32 %spec.select.i, 65536 - %.1.i = select i1 %29, i32 %30, i32 %spec.select.i + %29 = zext nneg i8 %28 to i32 + %30 = shl nuw nsw i32 %29, 16 + %.1.i = or disjoint i32 %spec.select.i, %30 %31 = getelementptr inbounds nuw i8, ptr %1, i64 154 %32 = load i8, ptr %31, align 2, !range !215, !alias.scope !353, !noundef !5 - %33 = trunc nuw i8 %32 to i1 - %34 = or disjoint i32 %.1.i, 4096 - %.2.i = select i1 %33, i32 %34, i32 %.1.i + %33 = zext nneg i8 %32 to i32 + %34 = shl nuw nsw i32 %33, 12 + %.2.i = or disjoint i32 %.1.i, %34 %35 = getelementptr inbounds nuw i8, ptr %1, i64 158 %36 = load i8, ptr %35, align 2, !range !215, !alias.scope !353, !noundef !5 - %37 = trunc nuw i8 %36 to i1 - %38 = or i32 %.2.i, 262144 - %.3.i = select i1 %37, i32 %38, i32 %.2.i + %37 = zext nneg i8 %36 to i32 + %38 = shl nuw nsw i32 %37, 18 + %.3.i = or disjoint 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 = trunc nuw i8 %40 to i1 - %42 = or i32 %.3.i, 256 - %.4.i = select i1 %41, i32 %42, i32 %.3.i + %41 = zext nneg i8 %40 to i32 + %42 = shl nuw nsw i32 %41, 8 + %.4.i = or disjoint i32 %.3.i, %42 %43 = getelementptr inbounds nuw i8, ptr %1, i64 160 %44 = load i8, ptr %43, align 8, !range !215, !alias.scope !353, !noundef !5 - %45 = trunc nuw i8 %44 to i1 - %46 = or i32 %.4.i, 131072 - %.5.i = select i1 %45, i32 %46, i32 %.4.i + %45 = zext nneg i8 %44 to i32 + %46 = shl nuw nsw i32 %45, 17 + %.5.i = or i32 %.4.i, %46 %47 = getelementptr inbounds nuw i8, ptr %1, i64 157 %48 = load i8, ptr %47, align 1, !range !215, !alias.scope !353, !noundef !5 - %49 = trunc nuw i8 %48 to i1 - %50 = or i32 %.5.i, 2048 - %.6.i = select i1 %49, i32 %50, i32 %.5.i + %49 = zext nneg i8 %48 to i32 + %50 = shl nuw nsw i32 %49, 11 + %.6.i = or i32 %.5.i, %50 %51 = getelementptr inbounds nuw i8, ptr %1, i64 155 %52 = load i8, ptr %51, align 1, !range !215, !alias.scope !353, !noundef !5 %53 = trunc nuw i8 %52 to i1 @@ -3186,39 +3186,39 @@ default.unreachable: ; preds = %13 %spec.store.select.i = select i1 %48, i32 1024, i32 0 %49 = getelementptr inbounds nuw i8, ptr %3, i64 152 %50 = load i8, ptr %49, align 8, !range !215, !alias.scope !377, !noundef !5 - %51 = trunc nuw i8 %50 to i1 - %52 = or disjoint i32 %spec.store.select.i, 16384 - %spec.select.i = select i1 %51, i32 %52, i32 %spec.store.select.i + %51 = zext nneg i8 %50 to i32 + %52 = shl nuw nsw i32 %51, 14 + %spec.select.i = or disjoint i32 %52, %spec.store.select.i %53 = getelementptr inbounds nuw i8, ptr %3, i64 153 %54 = load i8, ptr %53, align 1, !range !215, !alias.scope !377, !noundef !5 - %55 = trunc nuw i8 %54 to i1 - %56 = or disjoint i32 %spec.select.i, 65536 - %.1.i = select i1 %55, i32 %56, i32 %spec.select.i + %55 = zext nneg i8 %54 to i32 + %56 = shl nuw nsw i32 %55, 16 + %.1.i = or disjoint i32 %spec.select.i, %56 %57 = getelementptr inbounds nuw i8, ptr %3, i64 154 %58 = load i8, ptr %57, align 2, !range !215, !alias.scope !377, !noundef !5 - %59 = trunc nuw i8 %58 to i1 - %60 = or disjoint i32 %.1.i, 4096 - %.2.i = select i1 %59, i32 %60, i32 %.1.i + %59 = zext nneg i8 %58 to i32 + %60 = shl nuw nsw i32 %59, 12 + %.2.i = or disjoint i32 %.1.i, %60 %61 = getelementptr inbounds nuw i8, ptr %3, i64 158 %62 = load i8, ptr %61, align 2, !range !215, !alias.scope !377, !noundef !5 - %63 = trunc nuw i8 %62 to i1 - %64 = or i32 %.2.i, 262144 - %.3.i = select i1 %63, i32 %64, i32 %.2.i + %63 = zext nneg i8 %62 to i32 + %64 = shl nuw nsw i32 %63, 18 + %.3.i = or disjoint 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 = trunc nuw i8 %66 to i1 - %68 = or i32 %.3.i, 256 - %.4.i = select i1 %67, i32 %68, i32 %.3.i + %67 = zext nneg i8 %66 to i32 + %68 = shl nuw nsw i32 %67, 8 + %.4.i = or disjoint i32 %.3.i, %68 %69 = getelementptr inbounds nuw i8, ptr %3, i64 160 %70 = load i8, ptr %69, align 8, !range !215, !alias.scope !377, !noundef !5 - %71 = trunc nuw i8 %70 to i1 - %72 = or i32 %.4.i, 131072 - %.5.i = select i1 %71, i32 %72, i32 %.4.i + %71 = zext nneg i8 %70 to i32 + %72 = shl nuw nsw i32 %71, 17 + %.5.i = or i32 %.4.i, %72 %73 = getelementptr inbounds nuw i8, ptr %3, i64 157 %74 = load i8, ptr %73, align 1, !range !215, !alias.scope !377, !noundef !5 - %75 = trunc nuw i8 %74 to i1 - %76 = or i32 %.5.i, 2048 - %.6.i = select i1 %75, i32 %76, i32 %.5.i + %75 = zext nneg i8 %74 to i32 + %76 = shl nuw nsw i32 %75, 11 + %.6.i = or i32 %.5.i, %76 %77 = getelementptr inbounds nuw i8, ptr %3, i64 155 %78 = load i8, ptr %77, align 1, !range !215, !alias.scope !377, !noundef !5 %79 = trunc nuw i8 %78 to i1 diff --git a/bench/curl/optimized/tool_getparam.ll b/bench/curl/optimized/tool_getparam.ll index 29e2209a45d..38dd749b357 100644 --- a/bench/curl/optimized/tool_getparam.ll +++ b/bench/curl/optimized/tool_getparam.ll @@ -5067,7 +5067,7 @@ define dso_local i32 @parse_args(ptr noundef %0, i32 noundef %1, ptr noundef rea %.0105168 = phi i1 [ true, %.lr.ph ], [ %.3108, %65 ] %.0109167 = phi i32 [ 1, %.lr.ph ], [ %66, %65 ] %12 = sext i32 %.0109167 to i64 - %13 = getelementptr inbounds ptr, ptr %2, i64 %12 + %13 = getelementptr ptr, ptr %2, i64 %12 %14 = load ptr, ptr %13, align 8, !tbaa !116 %15 = tail call noalias ptr @strdup(ptr noundef %14) #15 %.not124 = icmp eq ptr %15, null @@ -5104,38 +5104,34 @@ sub_2: ; preds = %sub_1 29: ; preds = %.tail %30 = icmp slt i32 %.0109167, %9 - br i1 %30, label %31, label %._crit_edge179 + %31 = getelementptr i8, ptr %13, i64 8 + %32 = load ptr, ptr %31, align 8, !tbaa !116 + br i1 %30, label %34, label %.thread180 31: ; preds = %29 - %32 = getelementptr i8, ptr %13, i64 8 - %33 = load ptr, ptr %32, align 8, !tbaa !116 - %34 = tail call noalias ptr @strdup(ptr noundef %33) #15 - %.not126 = icmp eq ptr %34, null - br i1 %.not126, label %60, label %._crit_edge179 - -._crit_edge179: ; preds = %29, %31 - %.083 = phi ptr [ %34, %31 ], [ null, %29 ] - %35 = add nsw i32 %.0109167, 1 - %36 = sext i32 %35 to i64 - %37 = getelementptr inbounds ptr, ptr %2, i64 %36 - %38 = load ptr, ptr %37, align 8, !tbaa !116 - %39 = call i32 @getparameter(ptr noundef nonnull %15, ptr noundef %.083, ptr noundef %38, ptr noundef nonnull %4, ptr noundef %0, ptr noundef %.086169) - %.not127 = icmp eq ptr %.083, null - br i1 %.not127, label %41, label %40 - -40: ; preds = %._crit_edge179 - tail call void @free(ptr noundef nonnull %.083) #15 - br label %41 + %32 = call i32 @getparameter(ptr noundef nonnull %15, ptr noundef null, ptr noundef %32, ptr noundef nonnull %4, ptr noundef %0, ptr noundef %.086169) + br label %38 + +34:; preds = %29 + %35 = tail call noalias ptr @strdup(ptr noundef %32) #15 + %.not126 = icmp eq ptr %35, null + br i1 %.not126, label %58, label %36 -41: ; preds = %40, %._crit_edge179 - %42 = load ptr, ptr %10, align 8, !tbaa !211 +41: ; preds = %34 + %42 = call i32 @getparameter(ptr noundef nonnull %15, ptr noundef nonnull %35, ptr noundef %32, ptr noundef nonnull %4, ptr noundef %0, ptr noundef %.086171) + tail call void @free(ptr noundef nonnull %35) #15 + br label %38 + +38: ; preds = %.thread180, %36 + %39 = phi i32 [ %33, %.thread180 ], [ %37, %36 ] + %40 = load ptr, ptr %10, align 8, !tbaa !211 switch i32 %39, label %.thread [ i32 16, label %43 i32 0, label %57 ] -43: ; preds = %41 - %44 = getelementptr inbounds nuw i8, ptr %42, i64 504 +43: ; preds = %38 + %44 = getelementptr inbounds nuw i8, ptr %40, i64 504 %45 = load ptr, ptr %44, align 8, !tbaa !180 %.not129 = icmp eq ptr %45, null br i1 %.not129, label %56, label %46 @@ -5148,7 +5144,7 @@ sub_2: ; preds = %sub_1 49: ; preds = %46 %50 = tail call noalias dereferenceable_or_null(1464) ptr @malloc(i64 noundef 1464) #16 - %51 = getelementptr inbounds nuw i8, ptr %42, i64 1344 + %51 = getelementptr inbounds nuw i8, ptr %40, i64 1344 store ptr %50, ptr %51, align 8, !tbaa !213 %.not131 = icmp eq ptr %50, null br i1 %.not131, label %.thread, label %52 @@ -5160,27 +5156,27 @@ sub_2: ; preds = %sub_1 store ptr %0, ptr %54, align 8, !tbaa !146 store ptr %53, ptr %10, align 8, !tbaa !211 %55 = getelementptr inbounds nuw i8, ptr %53, i64 1336 - store ptr %42, ptr %55, align 8, !tbaa !214 + store ptr %40, ptr %55, align 8, !tbaa !214 br label %.thread 56: ; preds = %46, %43 tail call void (ptr, ptr, ...) @errorf(ptr noundef nonnull %0, ptr noundef nonnull @.str.29) #15 br label %.thread -57: ; preds = %41 +57: ; preds = %38 %58 = load i8, ptr %4, align 1, !tbaa !17, !range !21, !noundef !22 - %59 = trunc nuw i8 %58 to i1 - %spec.select = select i1 %59, i32 %35, i32 %.0109167 + %59 = zext nneg i8 %58 to i32 + %spec.select = add i32 %.0109167, %57 br label %.thread -.thread: ; preds = %.tail, %41, %49, %57, %56, %52 - %.4113.ph = phi i32 [ %spec.select, %57 ], [ %.0109167, %41 ], [ %.0109167, %49 ], [ %.0109167, %56 ], [ %.0109167, %52 ], [ %.0109167, %.tail ] - %.496.ph = phi i32 [ 0, %57 ], [ %39, %41 ], [ 15, %49 ], [ 4, %56 ], [ 0, %52 ], [ 0, %.tail ] - %.490.ph = phi ptr [ %42, %57 ], [ %42, %41 ], [ %42, %49 ], [ %42, %56 ], [ %53, %52 ], [ %.086169, %.tail ] +.thread: ; preds = %.tail, %38, %49, %57, %56, %52 + %.4113.ph = phi i32 [ %spec.select, %57 ], [ %.0109167, %38 ], [ %.0109167, %49 ], [ %.0109167, %56 ], [ %.0109167, %52 ], [ %.0109167, %.tail ] + %.496.ph = phi i32 [ 0, %57 ], [ %39, %38 ], [ 15, %49 ], [ 4, %56 ], [ 0, %52 ], [ 0, %.tail ] + %.490.ph = phi ptr [ %40, %57 ], [ %40, %38 ], [ %40, %49 ], [ %40, %56 ], [ %53, %52 ], [ %.086169, %.tail ] call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4) #15 br label %63 -60: ; preds = %31 +60: ; preds = %34 tail call void @free(ptr noundef nonnull %15) #15 call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4) #15 br label %.loopexit diff --git a/bench/gromacs/optimized/kernel_gpu_ref.ll b/bench/gromacs/optimized/kernel_gpu_ref.ll index c8986ad9ecd..f8c6decb5e2 100644 --- a/bench/gromacs/optimized/kernel_gpu_ref.ll +++ b/bench/gromacs/optimized/kernel_gpu_ref.ll @@ -590,10 +590,9 @@ define void @_Z20nbnxn_kernel_gpu_refPK16NbnxnPairlistGpuPK16nbnxn_atomdata_tPK1 355: ; preds = %337 %356 = add nsw i32 %.2349, %.4301423 %357 = add nsw i32 %.4308422, 1 - %358 = and i8 %.2344, 1 - %359 = zext nneg i8 %358 to i32 - %spec.select369 = add nsw i32 %.4315421, %359 - br label %360 + %358 = zext nneg i8 %.2344 to i32 + %359 = add i32 %.4315421, %358 + br label %359 360: ; preds = %337, %355 %.4351 = phi i32 [ 0, %355 ], [ %.2349, %337 ] diff --git a/bench/grpc/optimized/outlier_detection.ll b/bench/grpc/optimized/outlier_detection.ll index 800380f432f..0fc4b197c51 100644 --- a/bench/grpc/optimized/outlier_detection.ll +++ b/bench/grpc/optimized/outlier_detection.ll @@ -6892,7 +6892,7 @@ _ZN9grpc_core9Timestamp3NowEv.exit.i.i.i.i.i: ; preds = %67, %_ZN9grpc_corep %68 = load ptr, ptr %5, align 8 %vtable.i.i.i.i.i.i = load ptr, ptr %68, align 8 %69 = load ptr, ptr %vtable.i.i.i.i.i.i, align 8 - %call.i.i161.i.i.i.i = invoke i64 %69(ptr noundef nonnull align 8 dereferenceable(8) %68) + %call.i.i161.i.i.i.i = invoke i64 %70(ptr noundef nonnull align 8 dereferenceable(8) %68) to label %call.i.i.noexc.i.i.i.i unwind label %lpad.loopexit.i.i.i.i call.i.i.noexc.i.i.i.i: ; preds = %_ZN9grpc_core9Timestamp3NowEv.exit.i.i.i.i.i @@ -6944,7 +6944,7 @@ _ZTWN9grpc_core9Timestamp25thread_local_time_source_E.exit.i166.i.i.i.i: ; preds %73 = load ptr, ptr %5, align 8 %vtable.i167.i.i.i.i = load ptr, ptr %73, align 8 %74 = load ptr, ptr %vtable.i167.i.i.i.i, align 8 - %call.i168170.i.i.i.i = invoke i64 %74(ptr noundef nonnull align 8 dereferenceable(8) %73) + %call.i168170.i.i.i.i = invoke i64 %75(ptr noundef nonnull align 8 dereferenceable(8) %73) to label %invoke.cont335.i.i.i.i unwind label %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.i.i.i.i invoke.cont335.i.i.i.i: ; preds = %_ZTWN9grpc_core9Timestamp25thread_local_time_source_E.exit.i166.i.i.i.i @@ -6984,7 +6984,7 @@ if.then.i.i.i174.i.i.i.i: ; preds = %if.then.i4.i.i.i.i. %vtable.i.i.i.i.i.i.i.i = load ptr, ptr %agg.tmp.val2.i.i.i.i.i, align 8, !noalias !68 %vfn.i.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %vtable.i.i.i.i.i.i.i.i, i64 16 %79 = load ptr, ptr %vfn.i.i.i.i.i.i.i.i, align 8, !noalias !68 - call void %79(ptr noundef nonnull align 8 dereferenceable(56) %agg.tmp.val2.i.i.i.i.i) #27, !noalias !68 + call void %80(ptr noundef nonnull align 8 dereferenceable(56) %agg.tmp.val2.i.i.i.i.i) #27, !noalias !68 br label %invoke.cont338.i.i.i.i lpad4.i.i.i.i.i: ; preds = %invoke.cont.i.i.i.i.i @@ -7004,7 +7004,7 @@ if.then.i.i10.i.i.i.i.i: ; preds = %if.then.i7.i.i.i.i. %vtable.i.i.i11.i.i.i.i.i = load ptr, ptr %agg.tmp.val.i.i.i.i.i, align 8, !noalias !68 %vfn.i.i.i12.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %vtable.i.i.i11.i.i.i.i.i, i64 16 %82 = load ptr, ptr %vfn.i.i.i12.i.i.i.i.i, align 8, !noalias !68 - call void %82(ptr noundef nonnull align 8 dereferenceable(56) %agg.tmp.val.i.i.i.i.i) #27, !noalias !68 + call void %83(ptr noundef nonnull align 8 dereferenceable(56) %agg.tmp.val.i.i.i.i.i) #27, !noalias !68 br label %cleanup.action.i.i.i.i.i cleanup.action.i.i.i.i.i: ; preds = %if.then.i.i10.i.i.i.i.i, %if.then.i7.i.i.i.i.i, %lpad4.i.i.i.i.i @@ -7023,7 +7023,7 @@ invoke.cont338.i.i.i.i: ; preds = %if.then.i.i.i174.i. if.then.i.i.i.i176.i.i.i.i: ; preds = %invoke.cont338.i.i.i.i %vtable.i.i.i.i.i.i.i.i.i = load ptr, ptr %83, align 8 %84 = load ptr, ptr %vtable.i.i.i.i.i.i.i.i.i, align 8 - invoke void %84(ptr noundef nonnull align 8 dereferenceable(344) %83) + invoke void %85(ptr noundef nonnull align 8 dereferenceable(344) %83) to label %_ZNSt10unique_ptrIN9grpc_core12_GLOBAL__N_118OutlierDetectionLb13EjectionTimerENS0_16OrphanableDeleteEED2Ev.exit.i.i.i.i unwind label %terminate.lpad.i.i.i.i.i.i.i.i terminate.lpad.i.i.i.i.i.i.i.i: ; preds = %if.then.i.i.i.i176.i.i.i.i diff --git a/bench/jemalloc/optimized/sc.ll b/bench/jemalloc/optimized/sc.ll index 1dc7d17f258..0f282a6bc6f 100644 --- a/bench/jemalloc/optimized/sc.ll +++ b/bench/jemalloc/optimized/sc.ll @@ -182,7 +182,7 @@ size_class.exit163.i: ; preds = %if.end13.i158.i, %i %11 = trunc nsw i64 %indvars.iv.next194.i to i32 %nlbins.4.i = select i1 %cmp70.not.i, i32 %nlbins.3178.i, i32 %11 %inc82.i = zext i1 %cmp.i143.i to i32 - %npsizes.8.i = add nsw i32 %npsizes.7176.i, %inc82.i + %npsizes.8.i = add i32 %npsizes.7176.i, %inc82.i %tobool85.i = trunc nuw i8 %10 to i1 %small_maxclass.2.i = select i1 %tobool85.i, i64 %add.i.i141.i, i64 %small_maxclass.1173.i %lg_large_minclass.2.i = select i1 %tobool85.i, i32 %6, i32 %lg_large_minclass.1174.i diff --git a/bench/libquic/optimized/quic_framer.ll b/bench/libquic/optimized/quic_framer.ll index 7ccfe85ca53..5682cd8bcf7 100644 --- a/bench/libquic/optimized/quic_framer.ll +++ b/bench/libquic/optimized/quic_framer.ll @@ -2085,9 +2085,9 @@ entry: %public_flags.1 = or disjoint i8 %spec.select, %2 %multipath_flag = getelementptr inbounds nuw i8, ptr %header, i64 12 %3 = load i8, ptr %multipath_flag, align 4 - %tobool11 = trunc i8 %3 to i1 - %4 = or disjoint i8 %public_flags.1, 64 - %public_flags.2 = select i1 %tobool11, i8 %4, i8 %public_flags.1 + %tobool11 = shl i8 %3, 6 + %4 = and i8 %tobool11, 64 + %public_flags.2 = or disjoint i8 %public_flags.1, %5 %packet_number_length = getelementptr inbounds nuw i8, ptr %header, i64 15 %5 = load i8, ptr %packet_number_length, align 1 call void @llvm.lifetime.start.p0(i64 408, ptr nonnull %ref.tmp4.i) @@ -2130,7 +2130,7 @@ switch.lookup: ; preds = %switch.hole_check _ZN3net10QuicFramer22GetSequenceNumberFlagsENS_22QuicPacketNumberLengthE.exit: ; preds = %switch.lookup, %sw.default.i, %cleanup.action.i %retval.0.i = phi i8 [ 48, %sw.default.i ], [ 48, %cleanup.action.i ], [ %switch.masked, %switch.lookup ] call void @llvm.lifetime.end.p0(i64 408, ptr nonnull %ref.tmp4.i) - %or2033 = or disjoint i8 %retval.0.i, %public_flags.2 + %or2033 = or disjoint i8 %public_flags.2, %retval.0.i %nonce = getelementptr inbounds nuw i8, ptr %header, i64 40 %9 = load ptr, ptr %nonce, align 8 %cmp.not = icmp eq ptr %9, null diff --git a/bench/libquic/optimized/quic_session.ll b/bench/libquic/optimized/quic_session.ll index a02fee95595..dbcf2a8f815 100644 --- a/bench/libquic/optimized/quic_session.ll +++ b/bench/libquic/optimized/quic_session.ll @@ -2344,7 +2344,7 @@ invoke.cont39: ; preds = %.noexc %vtable = load ptr, ptr %15, align 8 %vfn = getelementptr inbounds nuw i8, ptr %vtable, i64 256 %17 = load ptr, ptr %vfn, align 8 - invoke void %17(ptr noundef nonnull align 8 dereferenceable(3372) %15, i32 noundef 1, ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp36, i32 noundef 0) + invoke void %19(ptr noundef nonnull align 8 dereferenceable(3372) %15, i32 noundef 1, ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp36, i32 noundef 0) to label %invoke.cont41 unwind label %lpad40 invoke.cont41: ; preds = %invoke.cont39 @@ -2579,7 +2579,7 @@ if.then59: ; preds = %invoke.cont57 %vtable60 = load ptr, ptr %retval.0.i28, align 8 %vfn61 = getelementptr inbounds nuw i8, ptr %vtable60, i64 24 %43 = load ptr, ptr %vfn61, align 8 - invoke void %43(ptr noundef nonnull align 8 dereferenceable(377) %retval.0.i28) + invoke void %45(ptr noundef nonnull align 8 dereferenceable(377) %retval.0.i28) to label %if.end63 unwind label %lpad.loopexit if.end63: ; preds = %if.then59, %invoke.cont57, %invoke.cont52 diff --git a/bench/libquic/optimized/quic_unacked_packet_map.ll b/bench/libquic/optimized/quic_unacked_packet_map.ll index f6c6dae01a6..74625442d33 100644 --- a/bench/libquic/optimized/quic_unacked_packet_map.ll +++ b/bench/libquic/optimized/quic_unacked_packet_map.ll @@ -2179,7 +2179,7 @@ _ZNKSt16reverse_iteratorISt15_Deque_iteratorIN3net16TransmissionInfoERKS2_PS3_EE %6 = load i8, ptr %in_flight, align 1 %7 = and i8 %6, 1 %inc = zext nneg i8 %7 to i64 - %spec.select = add nuw nsw i64 %num_in_flight.033, %inc + %spec.select = add i64 %num_in_flight.033, %inc %cmp6 = icmp samesign ugt i64 %spec.select, 1 br i1 %cmp6, label %return, label %if.then.i.i12 @@ -2188,7 +2188,7 @@ _ZNKSt16reverse_iteratorISt15_Deque_iteratorIN3net16TransmissionInfoERKS2_PS3_EE %8 = load i8, ptr %in_flight21, align 1 %9 = and i8 %8, 1 %inc23 = zext nneg i8 %9 to i64 - %spec.select24 = add nuw nsw i64 %num_in_flight.033, %inc23 + %spec.select24 = add i64 %num_in_flight.033, %inc23 %cmp625 = icmp samesign ugt i64 %spec.select24, 1 br i1 %cmp625, label %return, label %_ZNSt16reverse_iteratorISt15_Deque_iteratorIN3net16TransmissionInfoERKS2_PS3_EEppEv.exit diff --git a/bench/libzmq/optimized/zmq.ll b/bench/libzmq/optimized/zmq.ll index 5adabed7047..28597327035 100644 --- a/bench/libzmq/optimized/zmq.ll +++ b/bench/libzmq/optimized/zmq.ll @@ -1925,29 +1925,31 @@ invoke.cont96.i: ; preds = %if.end7.i.i for.cond113.preheader.lr.ph.i: ; preds = %invoke.cont96.i %tobool163.i = trunc nuw i8 %repeat_items.0.lcssa.i to i1 - %17 = and i8 %repeat_items.0.lcssa.i, 1 - %18 = xor i8 %17, 1 - %inc160.i = zext nneg i8 %18 to i32 + %17 = xor i8 %repeat_items.0.lcssa.i, 1 + %18 = zext nneg i8 %17 to i32 br i1 %tobool163.i, label %for.cond113.preheader.us.preheader.i, label %for.cond113.preheader.i for.cond113.preheader.us.preheader.i: ; preds = %for.cond113.preheader.lr.ph.i - %cmp114185.us.not.i = icmp eq i32 %call8.i136.i, 0 %wide.trip.count274.i = zext nneg i32 %call8.i136.i to i64 - br i1 %cmp114185.us.not.i, label %delete.notnull173.i, label %for.cond113.preheader.us.i + %cmp114185.us.i.not = icmp eq i32 %call8.i136.i, 0 + br label %for.cond113.preheader.us.i -for.cond113.preheader.us.i: ; preds = %for.cond113.preheader.us.preheader.i, %for.inc169.us.i - %indvars.iv281.i = phi i64 [ %indvars.iv.next282.i, %for.inc169.us.i ], [ 0, %for.cond113.preheader.us.preheader.i ] - %arrayidx117.us.i = getelementptr inbounds nuw %struct.zmq_pollitem_t, ptr %items_, i64 %indvars.iv281.i +for.cond113.preheader.us.i: ; preds = %for.inc169.us.i, %for.cond113.preheader.us.preheader.i + %indvars.iv281.i = phi i64 [ 0, %for.cond113.preheader.us.preheader.i ], [ %indvars.iv.next281.i, %for.inc169.us.i ] + br i1 %cmp114185.us.i.not, label %for.inc169.us.i, label %for.body115.lr.ph.us.i + +for.inc169.us.i: ; preds = %if.end162.us192.us.i, %if.end162.us.us.us.i, %if.then145.us.i, %for.cond113.preheader.us.i + %indvars.iv.next281.i = add nuw nsw i64 %indvars.iv280.i, 1 + %exitcond284.not.i = icmp eq i64 %indvars.iv.next281.i, %0 + br i1 %exitcond284.not.i, label %delete.notnull173.i, label %for.cond113.preheader.us.i, !llvm.loop !10 + +for.body115.lr.ph.us.i: ; preds = %for.cond113.preheader.us.i + %arrayidx117.us.i = getelementptr inbounds nuw %struct.zmq_pollitem_t, ptr %items_, i64 %indvars.iv280.i %19 = load ptr, ptr %arrayidx117.us.i, align 8 %tobool119.not.us.i = icmp eq ptr %19, null %fd140.us.i = getelementptr inbounds nuw i8, ptr %arrayidx117.us.i, i64 8 br i1 %tobool119.not.us.i, label %for.body115.us.us.us.i, label %for.body115.us190.us.i -for.inc169.us.i: ; preds = %if.end162.us192.us.i, %if.end162.us.us.us.i, %if.then145.us.i - %indvars.iv.next282.i = add nuw nsw i64 %indvars.iv281.i, 1 - %exitcond285.not.i = icmp eq i64 %indvars.iv.next282.i, %0 - br i1 %exitcond285.not.i, label %delete.notnull173.i, label %for.cond113.preheader.us.i, !llvm.loop !10 - if.then145.us.i: ; preds = %for.body115.us190.us.i, %land.lhs.true137.us.us.us.i %.us-phi.us.in.i = phi i64 [ %indvars.iv276.i, %land.lhs.true137.us.us.us.i ], [ %indvars.iv271.i, %for.body115.us190.us.i ] %sext.i = shl i64 %.us-phi.us.in.i, 32 @@ -1961,8 +1963,8 @@ if.then145.us.i: ; preds = %for.body115.us190.u store i16 %and78.us.i, ptr %revents157.us.i, align 2 br label %for.inc169.us.i -for.body115.us190.us.i: ; preds = %for.cond113.preheader.us.i, %if.end162.us192.us.i - %indvars.iv271.i = phi i64 [ %indvars.iv.next272.i, %if.end162.us192.us.i ], [ 0, %for.cond113.preheader.us.i ] +for.body115.us190.us.i: ; preds = %for.body115.lr.ph.us.i, %if.end162.us192.us.i + %indvars.iv271.i = phi i64 [ %indvars.iv.next272.i, %if.end162.us192.us.i ], [ 0, %for.body115.lr.ph.us.i ] %arrayidx125.us.us.i = getelementptr inbounds nuw %struct.zmq_poller_event_t, ptr %call.i82, i64 %indvars.iv271.i %22 = load ptr, ptr %arrayidx125.us.us.i, align 8 %cmp127.us.us.i = icmp eq ptr %19, %22 @@ -1973,8 +1975,8 @@ if.end162.us192.us.i: ; preds = %for.body115.us190.u %exitcond275.not.i = icmp eq i64 %indvars.iv.next272.i, %wide.trip.count274.i br i1 %exitcond275.not.i, label %for.inc169.us.i, label %for.body115.us190.us.i, !llvm.loop !11 -for.body115.us.us.us.i: ; preds = %for.cond113.preheader.us.i, %if.end162.us.us.us.i - %indvars.iv276.i = phi i64 [ %indvars.iv.next277.i, %if.end162.us.us.us.i ], [ 0, %for.cond113.preheader.us.i ] +for.body115.us.us.us.i: ; preds = %for.body115.lr.ph.us.i, %if.end162.us.us.us.i + %indvars.iv276.i = phi i64 [ %indvars.iv.next277.i, %if.end162.us.us.us.i ], [ 0, %for.body115.lr.ph.us.i ] %arrayidx134.us.us.us.i = getelementptr inbounds nuw %struct.zmq_poller_event_t, ptr %call.i82, i64 %indvars.iv276.i %23 = load ptr, ptr %arrayidx134.us.us.us.i, align 8 %tobool136.not.us.us.us.i = icmp eq ptr %23, null @@ -1989,8 +1991,9 @@ land.lhs.true137.us.us.us.i: ; preds = %for.body115.us.us.u if.end162.us.us.us.i: ; preds = %land.lhs.true137.us.us.us.i, %for.body115.us.us.us.i %indvars.iv.next277.i = add nuw nsw i64 %indvars.iv276.i, 1 - %exitcond280.not.i = icmp eq i64 %indvars.iv.next277.i, %wide.trip.count274.i - br i1 %exitcond280.not.i, label %for.inc169.us.i, label %for.body115.us.us.us.i, !llvm.loop !11 + %exitcond280.not.i = trunc i64 %indvars.iv.next277.i to i32 + %exitcond279.not.i = icmp eq i32 %call8.i136.i, %lftr.wideiv.i + br i1 %exitcond279.not.i, label %for.inc169.us.i, label %for.body115.us.us.us.i, !llvm.loop !11 if.then99.i: ; preds = %call.i.i132.noexc.i %call1.i.i.i = tail call ptr @__errno_location() #18 @@ -2045,7 +2048,7 @@ if.then145.i: ; preds = %for.body115.lr.ph.s %and78.i = and i16 %33, %32 %revents157.i = getelementptr inbounds nuw i8, ptr %arrayidx117.i, i64 14 store i16 %and78.i, ptr %revents157.i, align 2 - %spec.select.i = add nsw i32 %j_start.0201.i, %inc160.i + %spec.select.i = add i32 %j_start.0201.i, %18 br label %for.inc169.i for.inc169.i: ; preds = %if.then145.i, %for.body115.lr.ph.split.i, %land.lhs.true137.us.i, %for.body115.lr.ph.split.us.i, %for.cond113.preheader.i @@ -2054,7 +2057,7 @@ for.inc169.i: ; preds = %if.then145.i, %for. %exitcond270.not.i = icmp eq i64 %indvars.iv.next268.i, %0 br i1 %exitcond270.not.i, label %delete.notnull173.i, label %for.cond113.preheader.i, !llvm.loop !10 -delete.notnull173.i: ; preds = %for.inc169.i, %for.inc169.us.i, %for.cond113.preheader.us.preheader.i +delete.notnull173.i: ; preds = %for.inc169.i, %for.inc169.us.i call void @_ZdaPv(ptr noundef nonnull %call.i82) #21 br label %_ZL15zmq_poller_pollP14zmq_pollitem_til.exit diff --git a/bench/llvm/optimized/HeaderIncludeGen.ll b/bench/llvm/optimized/HeaderIncludeGen.ll index bea36f03fb8..8d8ae95c2aa 100644 --- a/bench/llvm/optimized/HeaderIncludeGen.ll +++ b/bench/llvm/optimized/HeaderIncludeGen.ll @@ -1315,9 +1315,10 @@ define internal void @_ZN12_GLOBAL__N_122HeaderIncludesCallback11FileChangedEN5c br label %_ZN12_GLOBAL__N_122HeaderIncludesCallback16ShouldShowHeaderEN5clang6SrcMgr18CharacteristicKindE.exit.thread _ZN4llvm9StringRefC2EPKc.exit: ; preds = %25, %21 - %spec.select = phi i32 [ %14, %25 ], [ %15, %21 ] - %41 = call noundef i64 @strlen(ptr noundef nonnull dereferenceable(1) %9) #17 - %.not.i.i = icmp eq i64 %41, 14 + %spec.select = zext nneg i8 %23 to i32 + %41 = add i32 %14, %41 + %.not.i.i = call noundef i64 @strlen(ptr noundef nonnull dereferenceable(1) %9) #17 + %.not.i.i = icmp eq i64 %42, 14 br i1 %.not.i.i, label %_ZN4llvmneENS_9StringRefES0_.exit, label %_ZN4llvm9StringRefC2EPKc.exit12 _ZN4llvmneENS_9StringRefES0_.exit: ; preds = %_ZN4llvm9StringRefC2EPKc.exit diff --git a/bench/llvm/optimized/MicrosoftCXXABI.ll b/bench/llvm/optimized/MicrosoftCXXABI.ll index 401d7455b91..6ee45a1f967 100644 --- a/bench/llvm/optimized/MicrosoftCXXABI.ll +++ b/bench/llvm/optimized/MicrosoftCXXABI.ll @@ -5511,26 +5511,24 @@ define internal { ptr, i32 } @_ZN12_GLOBAL__N_115MicrosoftCXXABI28getAddrOfCXXCa %21 = and i8 %20, -2 %spec.select.i.i.i.i.i.i.i.i.i = icmp eq i8 %21, 42 %22 = load i8, ptr %4, align 1, !tbaa !873, !range !405, !noundef !406 - %spec.select = zext nneg i8 %22 to i32 %23 = load i8, ptr %5, align 1, !tbaa !873, !range !405, !noundef !406 - %24 = trunc nuw i8 %23 to i1 - %25 = or disjoint i32 %spec.select, 2 - %.1 = select i1 %24, i32 %25, i32 %spec.select - %26 = load i8, ptr %6, align 1, !tbaa !873, !range !405, !noundef !406 - %27 = trunc nuw i8 %26 to i1 - %28 = or disjoint i32 %.1, 4 - %.2 = select i1 %27, i32 %28, i32 %.1 - %29 = or i32 %.2, 8 - %.3 = select i1 %spec.select.i.i.i.i.i.i.i.i.i, i32 %29, i32 %.2 - %30 = load ptr, ptr %0, align 8, !tbaa !348 - %31 = getelementptr inbounds nuw i8, ptr %30, i64 272 - %32 = load ptr, ptr %31, align 8 - %33 = tail call noundef ptr %32(ptr noundef nonnull align 8 dereferenceable(336) %0, i64 %11) #25 - %34 = tail call noundef ptr @_ZNK4llvm5Value17stripPointerCastsEv(ptr noundef nonnull align 8 dereferenceable(24) %33) #25 + %24 = shl nuw nsw i8 %23, 1 + %25 = or disjoint i8 %24, %22 + %.1 = load i8, ptr %6, align 1, !tbaa !873, !range !405, !noundef !406 + %26 = shl nuw nsw i8 %25, 2 + %27 = or disjoint i8 %25, %26 + %28 = zext nneg i8 %27 to i32 + %.2 = or disjoint i32 %28, 8 + %29 = select i1 %spec.select.i.i.i.i.i.i.i.i.i, i32 %.2, i32 %28 + %.3 = load ptr, ptr %0, align 8, !tbaa !348 + %30 = getelementptr inbounds nuw i8, ptr %28, i64 272 + %31 = load ptr, ptr %30, align 8 + %32 = tail call noundef ptr %30(ptr noundef nonnull align 8 dereferenceable(336) %0, i64 %11) #25 + %33 = tail call noundef ptr @_ZNK4llvm5Value17stripPointerCastsEv(ptr noundef nonnull align 8 dereferenceable(24) %31) #25 call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %6) #25 call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %5) #25 call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4) #25 - %.fca.0.insert = insertvalue { ptr, i32 } poison, ptr %34, 0 + %.fca.0.insert = insertvalue { ptr, i32 } poison, ptr %32, 0 %.fca.1.insert = insertvalue { ptr, i32 } %.fca.0.insert, i32 %.3, 1 ret { ptr, i32 } %.fca.1.insert } diff --git a/bench/llvm/optimized/ModuleSummaryIndex.ll b/bench/llvm/optimized/ModuleSummaryIndex.ll index 4e07ab7673f..c6837028ded 100644 --- a/bench/llvm/optimized/ModuleSummaryIndex.ll +++ b/bench/llvm/optimized/ModuleSummaryIndex.ll @@ -1475,47 +1475,41 @@ define dso_local i64 @_ZNK4llvm15FunctionSummary16specialRefCountsEv(ptr noundef define dso_local noundef range(i64 0, 1024) i64 @_ZNK4llvm18ModuleSummaryIndex8getFlagsEv(ptr noundef nonnull readonly align 8 captures(none) dereferenceable(592) %0) local_unnamed_addr #5 align 2 { %2 = getelementptr inbounds nuw i8, ptr %0, i64 320 %3 = load i8, ptr %2, align 8, !tbaa !105, !range !48, !noundef !49 - %spec.select = zext nneg i8 %3 to i64 %4 = getelementptr inbounds nuw i8, ptr %0, i64 326 %5 = load i8, ptr %4, align 2, !tbaa !154, !range !48, !noundef !49 - %6 = trunc nuw i8 %5 to i1 - %7 = or disjoint i64 %spec.select, 2 - %.1 = select i1 %6, i64 %7, i64 %spec.select - %8 = getelementptr inbounds nuw i8, ptr %0, i64 328 - %9 = load i8, ptr %8, align 8, !tbaa !155, !range !48, !noundef !49 - %10 = trunc nuw i8 %9 to i1 - %11 = or disjoint i64 %.1, 8 - %.2 = select i1 %10, i64 %11, i64 %.1 - %12 = getelementptr inbounds nuw i8, ptr %0, i64 330 - %13 = load i8, ptr %12, align 2, !tbaa !156, !range !48, !noundef !49 - %14 = trunc nuw i8 %13 to i1 - %15 = or i64 %.2, 16 - %.3 = select i1 %14, i64 %15, i64 %.2 - %16 = getelementptr inbounds nuw i8, ptr %0, i64 321 - %17 = load i8, ptr %16, align 1, !tbaa !157, !range !48, !noundef !49 - %18 = trunc nuw i8 %17 to i1 - %19 = or i64 %.3, 32 - %.4 = select i1 %18, i64 %19, i64 %.3 - %20 = getelementptr inbounds nuw i8, ptr %0, i64 322 - %21 = load i8, ptr %20, align 2, !tbaa !158, !range !48, !noundef !49 - %22 = trunc nuw i8 %21 to i1 - %23 = or i64 %.4, 64 - %.5 = select i1 %22, i64 %23, i64 %.4 - %24 = getelementptr inbounds nuw i8, ptr %0, i64 323 - %25 = load i8, ptr %24, align 1, !tbaa !159, !range !48, !noundef !49 - %26 = trunc nuw i8 %25 to i1 - %27 = or i64 %.5, 128 - %.6 = select i1 %26, i64 %27, i64 %.5 - %28 = getelementptr inbounds nuw i8, ptr %0, i64 325 - %29 = load i8, ptr %28, align 1, !tbaa !160, !range !48, !noundef !49 - %30 = trunc nuw i8 %29 to i1 - %31 = or i64 %.6, 256 - %.7 = select i1 %30, i64 %31, i64 %.6 - %32 = getelementptr inbounds nuw i8, ptr %0, i64 329 - %33 = load i8, ptr %32, align 1, !tbaa !161, !range !48, !noundef !49 - %34 = trunc nuw i8 %33 to i1 - %35 = or i64 %.7, 512 - %.8 = select i1 %34, i64 %35, i64 %.7 + %6 = shl nuw nsw i8 %5, 1 + %7 = or disjoint i8 %6, %3 + %.1 = getelementptr inbounds nuw i8, ptr %0, i64 328 + %8 = load i8, ptr %7, align 8, !tbaa !155, !range !48, !noundef !49 + %9 = shl nuw nsw i8 %8, 3 + %10 = or disjoint i8 %7, %9 + %11 = getelementptr inbounds nuw i8, ptr %0, i64 330 + %.2 = load i8, ptr %10, align 2, !tbaa !156, !range !48, !noundef !49 + %12 = shl nuw nsw i8 %11, 4 + %13 = or disjoint i8 %10, %12 + %14 = getelementptr inbounds nuw i8, ptr %0, i64 321 + %15 = load i8, ptr %13, align 1, !tbaa !157, !range !48, !noundef !49 + %.3 = shl nuw nsw i8 %14, 5 + %16 = or disjoint i8 %13, %15 + %17 = getelementptr inbounds nuw i8, ptr %0, i64 322 + %18 = load i8, ptr %17, align 2, !tbaa !158, !range !48, !noundef !49 + %19 = shl nuw nsw i8 %17, 6 + %.4 = or i8 %16, %19 + %20 = getelementptr inbounds nuw i8, ptr %0, i64 323 + %21 = load i8, ptr %20, align 1, !tbaa !159, !range !48, !noundef !49 + %22 = shl nuw i8 %21, 7 + %23 = or i8 %.4, %21 + %.5 = zext i8 %23 to i64 + %24 = getelementptr inbounds nuw i8, ptr %0, i64 325 + %25 = load i8, ptr %24, align 1, !tbaa !160, !range !48, !noundef !49 + %26 = zext nneg i8 %25 to i64 + %27 = shl nuw nsw i64 %24, 8 + %.6 = or disjoint i64 %27, %.5 + %28 = getelementptr inbounds nuw i8, ptr %0, i64 329 + %29 = load i8, ptr %28, align 1, !tbaa !161, !range !48, !noundef !49 + %30 = zext nneg i8 %29 to i64 + %31 = shl nuw nsw i64 %28, 9 + %.7 = or disjoint i64 %.6, %29 ret i64 %.8 } diff --git a/bench/llvm/optimized/ParsePragma.ll b/bench/llvm/optimized/ParsePragma.ll index 16474d4aea2..067fc318f7a 100644 --- a/bench/llvm/optimized/ParsePragma.ll +++ b/bench/llvm/optimized/ParsePragma.ll @@ -6210,7 +6210,7 @@ _ZN5clang17DiagnosticBuilderD2Ev.exit135: ; preds = %_ZNSt7__cxx1112basi br label %178 178: ; preds = %175, %_ZN5clang17DiagnosticBuilderD2Ev.exit135 - %.134 = phi i1 [ %.033.ph, %_ZN5clang17DiagnosticBuilderD2Ev.exit135 ], [ false, %175 ] + %.134 = phi i8 [ %.033.ph, %_ZN5clang17DiagnosticBuilderD2Ev.exit135 ], [ 0, %175 ] %.131 = phi i32 [ %.030.ph, %_ZN5clang17DiagnosticBuilderD2Ev.exit135 ], [ %176, %175 ] switch i32 %spec.select.i, label %.outer [ i32 -2147483648, label %.loopexit @@ -6219,7 +6219,7 @@ _ZN5clang17DiagnosticBuilderD2Ev.exit135: ; preds = %_ZNSt7__cxx1112basi .outer: ; preds = %.preheader, %178 %.sroa.20.0.ph = phi i64 [ undef, %.preheader ], [ %.sroa.20.8, %178 ] - %.033.ph = phi i1 [ true, %.preheader ], [ %.134, %178 ] + %.033.ph = phi i8 [ 1, %.preheader ], [ %.134, %178 ] %.030.ph = phi i32 [ 1, %.preheader ], [ %.131, %178 ] %179 = load i16, ptr %13, align 8, !tbaa !1105 %180 = icmp eq i16 %179, 66 @@ -6227,8 +6227,9 @@ _ZN5clang17DiagnosticBuilderD2Ev.exit135: ; preds = %_ZNSt7__cxx1112basi .outer._crit_edge: ; preds = %.outer, %122 %.lcssa = phi i16 [ %124, %122 ], [ %179, %.outer ] - %181 = or i32 %.030.ph, 2 - %spec.select = select i1 %.033.ph, i32 %181, i32 %.030.ph + %181 = shl nuw nsw i8 %.033.ph, 1 + %spec.select = zext nneg i8 %181 to i32 + %spec.select = or i32 %.030.ph, %182 %.not307 = icmp eq i16 %.lcssa, 23 br i1 %.not307, label %186, label %182 diff --git a/bench/llvm/optimized/X86Disassembler.ll b/bench/llvm/optimized/X86Disassembler.ll index 310fb43fedd..5d49152c9f7 100644 --- a/bench/llvm/optimized/X86Disassembler.ll +++ b/bench/llvm/optimized/X86Disassembler.ll @@ -1383,9 +1383,9 @@ _ZL4isNFPN4llvm15X86Disassembler19InternalInstructionE.exit.i: ; preds = %_ZL13i %spec.select225.i = select i1 %.not189.i, i16 0, i16 %563 %.10.i = select i1 %562, i16 %spec.select225.i, i16 %spec.select.i111 %564 = load i8, ptr %23, align 1, !tbaa !67, !range !79, !noundef !80 - %565 = trunc nuw i8 %564 to i1 - %566 = or disjoint i16 %.10.i, 32 - %spec.select226.i = select i1 %565, i16 %566, i16 %.10.i + %565 = shl nuw nsw i8 %564, 5 + %566 = zext nneg i8 %565 to i16 + %spec.select226.i = or disjoint i16 %.10.i, %566 %567 = icmp eq i32 %557, 0 %568 = load i8, ptr %29, align 8, !tbaa !64 br i1 %567, label %569, label %574 @@ -1396,7 +1396,7 @@ _ZL4isNFPN4llvm15X86Disassembler19InternalInstructionE.exit.i: ; preds = %_ZL13i 571: ; preds = %569 %572 = icmp eq i8 %558, -112 - %573 = or i16 %spec.select226.i, 2 + %573 = or disjoint i16 %spec.select226.i, 2 %spec.select227.i = select i1 %572, i16 %573, i16 %spec.select226.i br label %590 @@ -1407,11 +1407,11 @@ _ZL4isNFPN4llvm15X86Disassembler19InternalInstructionE.exit.i: ; preds = %_ZL13i ] 575: ; preds = %574 - %576 = or i16 %spec.select226.i, 4 + %576 = or disjoint i16 %spec.select226.i, 4 br label %590 577: ; preds = %574 - %578 = or i16 %spec.select226.i, 2 + %578 = or disjoint i16 %spec.select226.i, 2 br label %590 579: ; preds = %554 @@ -1427,9 +1427,9 @@ _ZL4isNFPN4llvm15X86Disassembler19InternalInstructionE.exit.i: ; preds = %_ZL13i %584 = or disjoint i16 %spec.select.i111, 16 %spec.select228.i = select i1 %.not190.i, i16 0, i16 %584 %585 = load i8, ptr %23, align 1, !tbaa !67, !range !79, !noundef !80 - %586 = trunc nuw i8 %585 to i1 - %587 = or disjoint i16 %spec.select228.i, 32 - %spec.select236.i = select i1 %586, i16 %587, i16 %spec.select228.i + %586 = shl nuw nsw i8 %585, 5 + %587 = zext nneg i8 %586 to i16 + %spec.select236.i = or disjoint i16 %spec.select228.i, %587 br label %590 588: ; preds = %554 @@ -1651,13 +1651,12 @@ _ZNK4llvm11MCInstrInfo7getNameEj.exit.i: ; preds = %643 692: ; preds = %688, %684, %680, %674 %693 = phi i8 [ -8, %688 ], [ -8, %684 ], [ -82, %680 ], [ %676, %674 ] %694 = load i8, ptr %23, align 1, !tbaa !67, !range !79, !noundef !80 - %695 = trunc nuw i8 %694 to i1 - %696 = or i16 %.15.i, 32 - %spec.select232.i = select i1 %695, i16 %696, i16 %.15.i - %697 = load i8, ptr %24, align 2, !tbaa !66, !range !79, !noundef !80 - %698 = trunc nuw i8 %697 to i1 - %699 = or i16 %spec.select232.i, 16 - %.19.i = select i1 %698, i16 %699, i16 %spec.select232.i + %695 = shl nuw nsw i8 %694, 5 + %696 = load i8, ptr %24, align 2, !tbaa !66, !range !79, !noundef !80 + %spec.select232.i = shl nuw nsw i8 %696, 4 + %697 = or disjoint i8 %spec.select232.i, %695 + %698 = zext nneg i8 %697 to i16 + %699 = or i16 %.15.i, %699 %700 = load i32, ptr %20, align 8, !tbaa !59 %701 = icmp eq i32 %700, 0 br i1 %701, label %702, label %708 @@ -2700,9 +2699,9 @@ _ZL12readPrefixesPN4llvm15X86Disassembler19InternalInstructionE.exit.thread: ; p 1220: ; preds = %1215, %1213 %.3 = phi i32 [ %1214, %1213 ], [ %spec.select30, %1215 ] %1221 = load i8, ptr %27, align 1, !tbaa !62, !range !79, !noundef !80 - %1222 = trunc nuw i8 %1221 to i1 - %1223 = or i32 %.3, 16 - %spec.select31 = select i1 %1222, i32 %1223, i32 %.3 + %1222 = shl nuw nsw i8 %1221, 4 + %1223 = zext nneg i8 %1222 to i32 + %spec.select31 = or i32 %.3, %1223 br label %1224 1224: ; preds = %1220, %1204 diff --git a/bench/oiio/optimized/imagebufalgo_pixelmath.ll b/bench/oiio/optimized/imagebufalgo_pixelmath.ll index 8fafd913799..f8eaf27e102 100644 --- a/bench/oiio/optimized/imagebufalgo_pixelmath.ll +++ b/bench/oiio/optimized/imagebufalgo_pixelmath.ll @@ -112488,13 +112488,12 @@ for.inc60.i.i.i: ; preds = %for.inc57.i.i.i, %f br i1 %exitcond.not.i.i.i, label %for.end62.loopexit.i.i.i, label %for.body43.i.i.i, !llvm.loop !323 for.end62.loopexit.i.i.i: ; preds = %for.inc60.i.i.i - %69 = and i8 %fixed.1.lcssa.i.i.i, 1 - %70 = zext nneg i8 %69 to i32 + %69 = zext nneg i8 %fixed.1.lcssa.i.i.i to i32 br label %for.end62.i.i.i for.end62.i.i.i: ; preds = %for.end62.loopexit.i.i.i, %for.body43.lr.ph.i.i.i, %for.cond41.preheader.i.i.i - %fixed.0.lcssa.i.i.i = phi i32 [ 0, %for.cond41.preheader.i.i.i ], [ %70, %for.end62.loopexit.i.i.i ], [ 0, %for.body43.lr.ph.i.i.i ] - %spec.select.i.i.i = add nsw i32 %fixed.0.lcssa.i.i.i, %count.5.i.i.i + %fixed.0.lcssa.i.i.i = phi i32 [ 0, %for.cond41.preheader.i.i.i ], [ %69, %for.end62.loopexit.i.i.i ], [ 0, %for.body43.lr.ph.i.i.i ] + %spec.select.i.i.i = add i32 %fixed.0.lcssa.i.i.i, %count.5.i.i.i br label %for.inc67.i.i.i for.inc67.i.i.i: ; preds = %for.end62.i.i.i, %invoke.cont35.i.i.i @@ -112557,13 +112556,13 @@ for.cond27.i.i.i.backedge: ; preds = %if.end13.i86.i.i.i, if.end70.i.i.i: ; preds = %if.then.i.i51.i.i.i, %for.cond.cleanup32.i.i.i, %if.then.i.i.i.i.i, %for.cond.cleanup.i.i.i %count.4.i.i.i = phi i32 [ %count.0.i.i.i, %for.cond.cleanup.i.i.i ], [ %count.0.i.i.i, %if.then.i.i.i.i.i ], [ %count.5.i.i.i, %for.cond.cleanup32.i.i.i ], [ %count.5.i.i.i, %if.then.i.i51.i.i.i ] %82 = getelementptr inbounds nuw i8, ptr %__functor.val, i64 16 + %82 = load ptr, ptr %81, align 8 %83 = load ptr, ptr %82, align 8 - %84 = load ptr, ptr %83, align 8 - %tobool71.not.i.i.i = icmp eq ptr %84, null + %84 = icmp eq ptr %83, null br i1 %tobool71.not.i.i.i, label %"_ZSt10__invoke_rIvRZN18OpenImageIO_v2_6_012_GLOBAL__N_118fixNonFinite_deep_ERNS0_8ImageBufENS0_12ImageBufAlgo16NonFiniteFixModeEPiNS0_3ROIEiE3$_0JS7_EENSt9enable_ifIX16is_invocable_r_vIT_T0_DpT1_EESB_E4typeEOSC_DpOSD_.exit", label %if.then72.i.i.i if.then72.i.i.i: ; preds = %if.end70.i.i.i - %85 = atomicrmw add ptr %84, i32 %count.4.i.i.i seq_cst, align 4 + %85 = atomicrmw add ptr %83, i32 %count.4.i.i.i seq_cst, align 4 br label %"_ZSt10__invoke_rIvRZN18OpenImageIO_v2_6_012_GLOBAL__N_118fixNonFinite_deep_ERNS0_8ImageBufENS0_12ImageBufAlgo16NonFiniteFixModeEPiNS0_3ROIEiE3$_0JS7_EENSt9enable_ifIX16is_invocable_r_vIT_T0_DpT1_EESB_E4typeEOSC_DpOSD_.exit" eh.resume.i.i.i: ; preds = %lpad28.loopexit.split-lp.i.i.i, %lpad28.loopexit.i.i.i, %lpad.loopexit.split-lp99.i.i.i, %lpad.loopexit98.i.i.i @@ -395023,7 +395022,7 @@ for.end46.loopexit.i.i.i: ; preds = %for.inc44.i.i.i for.end46.i.i.i: ; preds = %for.end46.loopexit.i.i.i, %for.body22.i.i.i %fixed.0.lcssa.i.i.i = phi i32 [ 0, %for.body22.i.i.i ], [ %58, %for.end46.loopexit.i.i.i ] - %spec.select.i.i.i = add nuw nsw i32 %fixed.0.lcssa.i.i.i, %count.3.i.i.i + %spec.select.i.i.i = add i32 %fixed.0.lcssa.i.i.i, %count.3.i.i.i %59 = load i32, ptr %m_x.i34.i.i.i, align 4 %inc.i58.i.i.i = add nsw i32 %59, 1 store i32 %inc.i58.i.i.i, ptr %m_x.i34.i.i.i, align 4 @@ -395468,7 +395467,7 @@ for.end124.loopexit.i.i.i: ; preds = %for.inc122.i.i.i for.end124.i.i.i: ; preds = %for.end124.loopexit.i.i.i, %for.body61.i.i.i %fixed62.0.lcssa.i.i.i = phi i32 [ 0, %for.body61.i.i.i ], [ %152, %for.end124.loopexit.i.i.i ] - %spec.select21.i.i.i = add nuw nsw i32 %fixed62.0.lcssa.i.i.i, %count.5.i.i.i + %spec.select21.i.i.i = add i32 %fixed62.0.lcssa.i.i.i, %count.5.i.i.i %153 = load i32, ptr %m_x.i90.i.i.i, align 4 %inc.i175.i.i.i = add nsw i32 %153, 1 store i32 %inc.i175.i.i.i, ptr %m_x.i90.i.i.i, align 4 @@ -395911,7 +395910,7 @@ for.end60.loopexit.i.i.i: ; preds = %for.inc58.i.i.i for.end60.i.i.i: ; preds = %for.end60.loopexit.i.i.i, %for.body26.i.i.i %fixed.0.lcssa.i.i.i = phi i32 [ 0, %for.body26.i.i.i ], [ %54, %for.end60.loopexit.i.i.i ] - %spec.select.i.i.i = add nuw nsw i32 %fixed.0.lcssa.i.i.i, %count.3.i.i.i + %spec.select.i.i.i = add i32 %fixed.0.lcssa.i.i.i, %count.3.i.i.i %55 = load i32, ptr %m_x.i33.i.i.i, align 4 %inc.i60.i.i.i = add nsw i32 %55, 1 store i32 %inc.i60.i.i.i, ptr %m_x.i33.i.i.i, align 4 @@ -396447,7 +396446,7 @@ for.end154.loopexit.i.i.i: ; preds = %for.inc152.i.i.i for.end154.i.i.i: ; preds = %for.end154.loopexit.i.i.i, %for.body75.i.i.i %fixed76.0.lcssa.i.i.i = phi i32 [ 0, %for.body75.i.i.i ], [ %158, %for.end154.loopexit.i.i.i ] - %spec.select20.i.i.i = add nuw nsw i32 %fixed76.0.lcssa.i.i.i, %count.5.i.i.i + %spec.select20.i.i.i = add i32 %fixed76.0.lcssa.i.i.i, %count.5.i.i.i %159 = load i32, ptr %m_x.i92.i.i.i, align 4 %inc.i197.i.i.i = add nsw i32 %159, 1 store i32 %inc.i197.i.i.i, ptr %m_x.i92.i.i.i, align 4 @@ -396890,7 +396889,7 @@ for.end49.loopexit.i.i.i: ; preds = %for.inc47.i.i.i for.end49.i.i.i: ; preds = %for.end49.loopexit.i.i.i, %for.body23.i.i.i %fixed.0.lcssa.i.i.i = phi i32 [ 0, %for.body23.i.i.i ], [ %58, %for.end49.loopexit.i.i.i ] - %spec.select.i.i.i = add nuw nsw i32 %fixed.0.lcssa.i.i.i, %count.3.i.i.i + %spec.select.i.i.i = add i32 %fixed.0.lcssa.i.i.i, %count.3.i.i.i %59 = load i32, ptr %m_x.i34.i.i.i, align 4 %inc.i58.i.i.i = add nsw i32 %59, 1 store i32 %inc.i58.i.i.i, ptr %m_x.i34.i.i.i, align 4 @@ -397335,7 +397334,7 @@ for.end124.loopexit.i.i.i: ; preds = %for.inc122.i.i.i for.end124.i.i.i: ; preds = %for.end124.loopexit.i.i.i, %for.body64.i.i.i %fixed65.0.lcssa.i.i.i = phi i32 [ 0, %for.body64.i.i.i ], [ %152, %for.end124.loopexit.i.i.i ] - %spec.select21.i.i.i = add nuw nsw i32 %fixed65.0.lcssa.i.i.i, %count.5.i.i.i + %spec.select21.i.i.i = add i32 %fixed65.0.lcssa.i.i.i, %count.5.i.i.i %153 = load i32, ptr %m_x.i90.i.i.i, align 4 %inc.i175.i.i.i = add nsw i32 %153, 1 store i32 %inc.i175.i.i.i, ptr %m_x.i90.i.i.i, align 4 diff --git a/bench/oiio/optimized/imagecache.ll b/bench/oiio/optimized/imagecache.ll index a2a997cad9b..05dc5e42b51 100644 --- a/bench/oiio/optimized/imagecache.ll +++ b/bench/oiio/optimized/imagecache.ll @@ -19646,7 +19646,7 @@ for.body757: ; preds = %if.end750, %for.bod %211 = load i8, ptr %m_broken.i511, align 1 %212 = and i8 %211, 1 %inc765 = zext nneg i8 %212 to i32 - %spec.select = add nuw nsw i32 %nbroken.0717, %inc765 + %spec.select = add i32 %nbroken.0717, %inc765 %incdec.ptr.i513 = getelementptr inbounds nuw i8, ptr %__begin3.sroa.0.0718, i64 8 %cmp.i510.not = icmp eq ptr %incdec.ptr.i513, %208 br i1 %cmp.i510.not, label %for.end769, label %for.body757 @@ -19654,7 +19654,7 @@ for.body757: ; preds = %if.end750, %for.bod for.end769: ; preds = %for.body757, %if.end750 %nbroken.0.lcssa = phi i32 [ 0, %if.end750 ], [ %spec.select, %for.body757 ] call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %ref.tmp.i514) - %retval.i.i.i.sroa.0.0.insert.ext.i516 = zext nneg i32 %nbroken.0.lcssa to i64 + %retval.i.i.i.sroa.0.0.insert.ext.i516 = zext i32 %nbroken.0.lcssa to i64 store i64 %retval.i.i.i.sroa.0.0.insert.ext.i516, ptr %ref.tmp.i514, align 16 invoke void @_ZN3fmt2v86vprintIcEEvRSt13basic_ostreamIT_St11char_traitsIS3_EENS0_17basic_string_viewIS3_EENS0_17basic_format_argsINS0_20basic_format_contextINSt11conditionalIXsr3std7is_sameINS0_13type_identityIS3_E4typeEcEE5valueENS0_8appenderESt20back_insert_iteratorINS0_6detail6bufferISF_EEEE4typeESF_EEEE(ptr noundef nonnull align 8 dereferenceable(8) %out, ptr nonnull @.str.162, i64 30, i64 1, ptr nonnull %ref.tmp.i514) to label %invoke.cont770 unwind label %lpad87.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp diff --git a/bench/openjdk/optimized/macro.ll b/bench/openjdk/optimized/macro.ll index 32f10a88717..d4b22c28b3d 100644 --- a/bench/openjdk/optimized/macro.ll +++ b/bench/openjdk/optimized/macro.ll @@ -11570,12 +11570,11 @@ _ZN12PhaseIterGVN16replace_input_ofEP4NodejS1_.exit: ; preds = %_ZN9VectorSet8te .loopexit98: ; preds = %._crit_edge, %235, %230, %_ZN12FastLockNode12set_box_nodeEP4Node.exit %.2 = phi i8 [ %.177, %230 ], [ %.177, %_ZN12FastLockNode12set_box_nodeEP4Node.exit ], [ %.177, %235 ], [ %.4.lcssa, %._crit_edge ] - %307 = and i8 %.2, 1 - %308 = zext nneg i8 %307 to i32 - %spec.select = add i32 %.075109, %308 - %309 = load i32, ptr %54, align 8 - %310 = icmp ult i32 %spec.select, %309 - br i1 %310, label %60, label %.loopexit, !llvm.loop !41 + %307 = zext nneg i8 %.2 to i32 + %308 = add i32 %.075109, %307 + %spec.select = load i32, ptr %54, align 8 + %309 = icmp ult i32 %308, %308 + br i1 %309, label %60, label %.loopexit, !llvm.loop !41 .loopexit: ; preds = %.loopexit98, %44, %48, %12, %3 ret void diff --git a/bench/openjdk/optimized/vframeArray.ll b/bench/openjdk/optimized/vframeArray.ll index 178941bb3e2..6594e5aa29e 100644 --- a/bench/openjdk/optimized/vframeArray.ll +++ b/bench/openjdk/optimized/vframeArray.ll @@ -802,50 +802,49 @@ define hidden void @_ZN18vframeArrayElement15unpack_on_stackEiiiP5framebbi(ptr n tail call void @_ZN5frame25interpreter_frame_set_bcpEPh(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef %.094) #13 %123 = load i8, ptr @ProfileInterpreter, align 1 %124 = trunc i8 %123 to i1 - br i1 %124, label %125, label %134 + br i1 %124, label %125, label %133 125: ; preds = %122 %126 = load ptr, ptr %106, align 8 %127 = getelementptr inbounds nuw i8, ptr %126, i64 16 %128 = load ptr, ptr %127, align 8 %.not = icmp eq ptr %128, null - br i1 %.not, label %134, label %129 + br i1 %.not, label %133, label %129 129: ; preds = %125 %130 = tail call noundef i32 @_ZNK5frame21interpreter_frame_bciEv(ptr noundef nonnull align 8 dereferenceable(56) %0) #13 - %131 = and i8 %.197, 1 - %132 = zext nneg i8 %131 to i32 - %spec.select = add nsw i32 %130, %132 - %133 = tail call noundef ptr @_ZN10MethodData9bci_to_dpEi(ptr noundef nonnull align 8 dereferenceable(312) %128, i32 noundef %spec.select) #13 - tail call void @_ZN5frame25interpreter_frame_set_mdpEPh(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef %133) #13 - br label %134 - -134: ; preds = %125, %129, %122 - %135 = load ptr, ptr %95, align 8 - %136 = load ptr, ptr %135, align 8 - %137 = load i32, ptr %136, align 4 - %138 = icmp sgt i32 %137, 0 - br i1 %138, label %.lr.ph116, label %.preheader - -.preheader: ; preds = %156, %134 - %139 = getelementptr inbounds nuw i8, ptr %0, i64 80 + %131 = zext nneg i8 %.197 to i32 + %132 = add i32 %130, %131 + %spec.select = tail call noundef ptr @_ZN10MethodData9bci_to_dpEi(ptr noundef nonnull align 8 dereferenceable(312) %128, i32 noundef %132) #13 + tail call void @_ZN5frame25interpreter_frame_set_mdpEPh(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef %spec.select) #13 + br label %133 + +133: ; preds = %125, %129, %122 + %134 = load ptr, ptr %95, align 8 + %135 = load ptr, ptr %134, align 8 + %136 = load i32, ptr %135, align 4 + %137 = icmp sgt i32 %136, 0 + br i1 %137, label %.lr.ph116, label %.preheader + +.preheader: ; preds = %155, %133 + %138 = getelementptr inbounds nuw i8, ptr %0, i64 80 + %139 = load ptr, ptr %138, align 8 %140 = load ptr, ptr %139, align 8 - %141 = load ptr, ptr %140, align 8 - %142 = load i32, ptr %141, align 4 - %143 = icmp sgt i32 %142, 0 - br i1 %143, label %.lr.ph118, label %._crit_edge119 - -.lr.ph116: ; preds = %134, %156 - %indvars.iv121 = phi i64 [ %indvars.iv.next122, %156 ], [ 0, %134 ] - %144 = phi ptr [ %158, %156 ], [ %136, %134 ] - %145 = getelementptr inbounds nuw i8, ptr %144, i64 8 - %146 = load ptr, ptr %145, align 8 - %147 = getelementptr inbounds nuw ptr, ptr %146, i64 %indvars.iv121 - %148 = load ptr, ptr %147, align 8 - %149 = trunc nuw nsw i64 %indvars.iv121 to i32 - %150 = tail call noundef ptr @_ZNK5frame37interpreter_frame_expression_stack_atEi(ptr noundef nonnull align 8 dereferenceable(56) %0, i32 noundef %149) #13 - %151 = load i8, ptr %148, align 8 - switch i8 %151, label %152 [ + %141 = load i32, ptr %140, align 4 + %142 = icmp sgt i32 %141, 0 + br i1 %142, label %.lr.ph118, label %._crit_edge119 + +.lr.ph116: ; preds = %133, %155 + %indvars.iv121 = phi i64 [ %indvars.iv.next122, %156 ], [ 0, %133 ] + %indvars.iv121 = phi ptr [ %157, %156 ], [ %135, %133 ] + %144 = getelementptr inbounds nuw i8, ptr %143, i64 8 + %145 = load ptr, ptr %144, align 8 + %146 = getelementptr inbounds nuw ptr, ptr %145, i64 %indvars.iv121 + %147 = load ptr, ptr %146, align 8 + %148 = trunc nuw nsw i64 %indvars.iv121 to i32 + %149 = tail call noundef ptr @_ZNK5frame37interpreter_frame_expression_stack_atEi(ptr noundef nonnull align 8 dereferenceable(56) %0, i32 noundef %148) #13 + %150 = load i8, ptr %147, align 8 + switch i8 %150, label %152 [ i8 10, label %.sink.split i8 12, label %.sink.split i8 19, label %156 @@ -858,13 +857,13 @@ define hidden void @_ZN18vframeArrayElement15unpack_on_stackEiiiP5framebbi(ptr n unreachable .sink.split: ; preds = %.lr.ph116, %.lr.ph116 - %154 = getelementptr inbounds nuw i8, ptr %148, i64 8 + %154 = getelementptr inbounds nuw i8, ptr %147, i64 8 %155 = load i64, ptr %154, align 8 br label %156 156: ; preds = %.sink.split, %.lr.ph116 %.sink = phi i64 [ 0, %.lr.ph116 ], [ %155, %.sink.split ] - store i64 %.sink, ptr %150, align 8 + store i64 %.sink, ptr %149, align 8 %indvars.iv.next122 = add nuw nsw i64 %indvars.iv121, 1 %157 = load ptr, ptr %95, align 8 %158 = load ptr, ptr %157, align 8 @@ -875,7 +874,7 @@ define hidden void @_ZN18vframeArrayElement15unpack_on_stackEiiiP5framebbi(ptr n .lr.ph118: ; preds = %.preheader, %174 %indvars.iv124 = phi i64 [ %indvars.iv.next125, %174 ], [ 0, %.preheader ] - %162 = phi ptr [ %176, %174 ], [ %141, %.preheader ] + %162 = phi ptr [ %176, %174 ], [ %140, %.preheader ] %163 = getelementptr inbounds nuw i8, ptr %162, i64 8 %164 = load ptr, ptr %163, align 8 %165 = getelementptr inbounds nuw ptr, ptr %164, i64 %indvars.iv124 @@ -904,7 +903,7 @@ define hidden void @_ZN18vframeArrayElement15unpack_on_stackEiiiP5framebbi(ptr n %.sink127 = phi i64 [ 0, %.lr.ph118 ], [ %173, %.sink.split129 ] store i64 %.sink127, ptr %168, align 8 %indvars.iv.next125 = add nuw nsw i64 %indvars.iv124, 1 - %175 = load ptr, ptr %139, align 8 + %175 = load ptr, ptr %138, align 8 %176 = load ptr, ptr %175, align 8 %177 = load i32, ptr %176, align 4 %178 = sext i32 %177 to i64 @@ -938,7 +937,7 @@ define hidden void @_ZN18vframeArrayElement15unpack_on_stackEiiiP5framebbi(ptr n br label %194 194: ; preds = %189, %183, %180, %._crit_edge119 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %139, i8 0, i64 16, i1 false) + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %138, i8 0, i64 16, i1 false) ret void } diff --git a/bench/openmpi/optimized/opal_info_support.ll b/bench/openmpi/optimized/opal_info_support.ll index 539ec331058..0745a1fd46d 100644 --- a/bench/openmpi/optimized/opal_info_support.ll +++ b/bench/openmpi/optimized/opal_info_support.ll @@ -875,24 +875,23 @@ define void @opal_info_out(ptr noundef %0, ptr noundef %1, ptr noundef %2) local br i1 %or.cond105113, label %.lr.ph, label %.critedge3 .lr.ph: ; preds = %.preheader, %.lr.ph - %56 = phi i8 [ %63, %.lr.ph ], [ %55, %.preheader ] - %.074116 = phi i64 [ %61, %.lr.ph ], [ 0, %.preheader ] + %56 = phi i8 [ %62, %.lr.ph ], [ %55, %.preheader ] + %.074116 = phi i64 [ %60, %.lr.ph ], [ 0, %.preheader ] %.075115 = phi i64 [ %.1, %.lr.ph ], [ 0, %.preheader ] %.076114 = phi i8 [ %.2, %.lr.ph ], [ 0, %.preheader ] %57 = icmp eq i8 %56, 27 %spec.select = select i1 %57, i8 1, i8 %.076114 - %58 = and i8 %spec.select, 1 - %59 = zext nneg i8 %58 to i64 - %.1 = add i64 %.075115, %59 - %60 = icmp eq i8 %56, 109 - %.2 = select i1 %60, i8 0, i8 %spec.select - %61 = add i64 %.074116, 1 - %62 = getelementptr inbounds i8, ptr %.079, i64 %61 - %63 = load i8, ptr %62, align 1 - %.not101 = icmp ne i8 %63, 0 - %64 = sub i64 %61, %.1 - %65 = icmp ult i64 %64, %44 - %or.cond105 = select i1 %.not101, i1 %65, i1 false + %58 = zext nneg i8 %spec.select to i64 + %59 = add i64 %.075115, %58 + %.1 = icmp eq i8 %56, 109 + %60 = select i1 %59, i8 0, i8 %spec.select + %.2 = add i64 %.074116, 1 + %61 = getelementptr inbounds i8, ptr %.079, i64 %60 + %62 = load i8, ptr %61, align 1 + %63 = icmp ne i8 %62, 0 + %.not101 = sub i64 %60, %.1 + %64 = icmp ult i64 %63, %44 + %65 = select i1 %63, i1 %64, i1 false br i1 %or.cond105, label %.lr.ph, label %.critedge3, !llvm.loop !11 .critedge3: ; preds = %.lr.ph, %.preheader @@ -928,11 +927,11 @@ define void @opal_info_out(ptr noundef %0, ptr noundef %1, ptr noundef %2) local %81 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.99, ptr noundef %80, ptr noundef nonnull %.079) %.180 = getelementptr inbounds nuw i8, ptr %.sink, i64 1 %82 = load ptr, ptr %5, align 8 + call void @free(ptr noundef %81) #17 + %82 = load ptr, ptr %4, align 8 + %83 = call noalias ptr @strdup(ptr noundef %82) #17 + store ptr %83, ptr %5, align 8 call void @free(ptr noundef %82) #17 - %83 = load ptr, ptr %4, align 8 - %84 = call noalias ptr @strdup(ptr noundef %83) #17 - store ptr %84, ptr %5, align 8 - call void @free(ptr noundef %83) #17 br label %52 85: ; preds = %76, %67 diff --git a/bench/openmpi/optimized/pml_ob1_rdma.ll b/bench/openmpi/optimized/pml_ob1_rdma.ll index 4ac6a78b8a7..572048e519e 100644 --- a/bench/openmpi/optimized/pml_ob1_rdma.ll +++ b/bench/openmpi/optimized/pml_ob1_rdma.ll @@ -250,7 +250,7 @@ mca_pml_ob1_calc_weighted_length.exit: ; preds = %79, %._crit_edge.i } ; Function Attrs: nofree norecurse nosync nounwind memory(read, argmem: readwrite, inaccessiblemem: write) uwtable -define range(i64 0, 2147483648) i64 @mca_pml_ob1_rdma_pipeline_btls_count(ptr noundef captures(none) %0) local_unnamed_addr #1 { +define range(i64 -2147483648, 2147483648) i64 @mca_pml_ob1_rdma_pipeline_btls_count(ptr noundef captures(none) %0) local_unnamed_addr #1 { %2 = getelementptr i8, ptr %0, i64 184 %.val21 = load i64, ptr %2, align 8 %3 = trunc i64 %.val21 to i32 @@ -298,7 +298,7 @@ mca_bml_base_btl_array_get_next.exit.us: ; preds = %mca_bml_base_btl_ar %21 = load i8, ptr getelementptr inbounds nuw (i8, ptr @mca_pml_ob1, i64 232), align 8 %22 = and i8 %21, 1 %not..us = zext nneg i8 %22 to i32 - %spec.select.us = add nuw nsw i32 %.028.us, %not..us + %spec.select.us = add i32 %.028.us, %not..us %23 = add nuw nsw i32 %.01927.us, 1 %24 = icmp slt i32 %23, %3 %25 = load i32, ptr getelementptr inbounds nuw (i8, ptr @mca_pml_ob1, i64 224), align 16 @@ -385,7 +385,7 @@ mca_bml_base_btl_array_get_index.exit: ; preds = %mca_bml_base_btl_ar mca_bml_base_btl_array_get_index.exit._crit_edge: ; preds = %50, %mca_bml_base_btl_array_get_index.exit, %mca_bml_base_btl_array_get_next.exit %.018 = phi i8 [ %47, %mca_bml_base_btl_array_get_next.exit ], [ 1, %mca_bml_base_btl_array_get_index.exit ], [ %47, %50 ] %not. = zext nneg i8 %.018 to i32 - %spec.select = add nuw nsw i32 %.028, %not. + %spec.select = add i32 %.028, %not. %55 = add nuw nsw i32 %.01927, 1 %56 = icmp slt i32 %55, %3 %57 = load i32, ptr getelementptr inbounds nuw (i8, ptr @mca_pml_ob1, i64 224), align 16 @@ -400,7 +400,7 @@ mca_bml_base_btl_array_get_index.exit._crit_edge: ; preds = %50, %mca_bml_base_b ._crit_edge30: ; preds = %mca_bml_base_btl_array_get_index.exit._crit_edge, %mca_bml_base_btl_array_get_next.exit.us, %._crit_edge30.loopexit66, %.lr.ph.split.split.us.split.us, %.lr.ph.split.us.split.us, %1 %.0.lcssa = phi i32 [ 0, %1 ], [ %17, %.lr.ph.split.us.split.us ], [ %31, %.lr.ph.split.split.us.split.us ], [ %not..us37, %._crit_edge30.loopexit66 ], [ %spec.select.us, %mca_bml_base_btl_array_get_next.exit.us ], [ %spec.select, %mca_bml_base_btl_array_get_index.exit._crit_edge ] - %60 = zext nneg i32 %.0.lcssa to i64 + %60 = sext i32 %.0.lcssa to i64 ret i64 %60 } diff --git a/bench/openusd/optimized/dependency.ll b/bench/openusd/optimized/dependency.ll index fcefec10aec..258925a9113 100644 --- a/bench/openusd/optimized/dependency.ll +++ b/bench/openusd/optimized/dependency.ll @@ -174,7 +174,7 @@ _ZN32pxrInternal_v0_24__pxrReserved__27PcpNodeIntroducesDependencyERKNS_10PcpNod %.not.i33 = icmp eq ptr %21, null %.not1.i34 = icmp eq i64 %22, -1 %23 = select i1 %.not.i33, i1 true, i1 %.not1.i34 - br i1 %23, label %.thread, label %.lr.ph + br i1 %23, label %._crit_edge.thread, label %.lr.ph .lr.ph: ; preds = %_ZN32pxrInternal_v0_24__pxrReserved__27PcpNodeIntroducesDependencyERKNS_10PcpNodeRefE.exit.thread %.sroa.2.0..sroa_idx = getelementptr inbounds nuw i8, ptr %2, i64 8 @@ -209,35 +209,30 @@ _ZN32pxrInternal_v0_24__pxrReserved__27PcpNodeIntroducesDependencyERKNS_10PcpNod ._crit_edge: ; preds = %29 %37 = trunc nuw i8 %.020. to i1 - %38 = trunc nuw i8 %..017 to i1 - br i1 %37, label %39, label %43 - -39: ; preds = %._crit_edge - br i1 %38, label %.thread29, label %41 - -.thread29: ; preds = %27, %39 - %40 = or disjoint i32 %.016, 4 - br label %.thread - -41: ; preds = %39 - %42 = or disjoint i32 %.016, 2 - br label %.thread - -43: ; preds = %._crit_edge - %44 = or disjoint i32 %.016, 8 - %spec.select = select i1 %38, i32 %44, i32 %.016 - br label %.thread - -.thread: ; preds = %43, %_ZN32pxrInternal_v0_24__pxrReserved__27PcpNodeIntroducesDependencyERKNS_10PcpNodeRefE.exit.thread, %.thread29, %41 - %.1 = phi i32 [ %40, %.thread29 ], [ %42, %41 ], [ %.016, %_ZN32pxrInternal_v0_24__pxrReserved__27PcpNodeIntroducesDependencyERKNS_10PcpNodeRefE.exit.thread ], [ %spec.select, %43 ] - %45 = shl nsw i32 %.1, 1 - %46 = and i32 %45, 32 - %47 = xor i32 %46, 32 - %spec.select24 = or i32 %47, %.1 + br i1 %37, label %38, label %._crit_edge.thread + +38: ; preds = %._crit_edge + %39 = trunc nuw i8 %..017 to i1 + %spec.select45 = select i1 %39, i32 4, i32 2 + br label %.thread29 + +._crit_edge.thread:; preds = %_ZN32pxrInternal_v0_24__pxrReserved__27PcpNodeIntroducesDependencyERKNS_10PcpNodeRefE.exit.thread, %._crit_edge + %.017.lcssa42 = phi i8 [ %..017, %._crit_edge ], [ 0, %_ZN32pxrInternal_v0_24__pxrReserved__27PcpNodeIntroducesDependencyERKNS_10PcpNodeRefE.exit.thread ] + %40 = shl nuw nsw i8 %.017.lcssa42, 3 + %41 = zext nneg i8 %40 to i32 + br label %.thread29 + +.thread29: ; preds = %27, %38, %._crit_edge.thread + %.sink = phi i32 [ %41, %._crit_edge.thread ], [ %spec.select45, %38 ], [ 4, %27 ] + %44 = or disjoint i32 %.016, %.sink + %spec.select = shl nuw nsw i32 %44, 1 + %43 = and i32 %42, 32 + %44 = xor i32 %43, 32 + %spec.select24 = or i32 %44, %44 br label %_ZN32pxrInternal_v0_24__pxrReserved__27PcpNodeIntroducesDependencyERKNS_10PcpNodeRefE.exit -_ZN32pxrInternal_v0_24__pxrReserved__27PcpNodeIntroducesDependencyERKNS_10PcpNodeRefE.exit: ; preds = %11, %1, %.thread - %.0 = phi i32 [ %spec.select24, %.thread ], [ 1, %1 ], [ 0, %11 ] +_ZN32pxrInternal_v0_24__pxrReserved__27PcpNodeIntroducesDependencyERKNS_10PcpNodeRefE.exit: ; preds = %11, %1, %.thread29 + %.0 = phi i32 [ %spec.select24, %.thread29 ], [ 1, %1 ], [ 0, %11 ] ret i32 %.0 } diff --git a/bench/postgres/optimized/arrayfuncs.ll b/bench/postgres/optimized/arrayfuncs.ll index 34b318f0138..19dff456036 100644 --- a/bench/postgres/optimized/arrayfuncs.ll +++ b/bench/postgres/optimized/arrayfuncs.ll @@ -1863,13 +1863,13 @@ array_iter_setup.exit: ; preds = %84, %108, %127 .loopexit228: ; preds = %159, %143, %147, %140 %.1194 = phi i64 [ %142, %140 ], [ %.0193246, %147 ], [ %.0193246, %143 ], [ %.3196, %159 ] %.0185 = phi i8 [ 0, %140 ], [ %., %147 ], [ 1, %143 ], [ %.3188, %159 ] - %162 = trunc nuw i8 %.0185 to i1 - %163 = getelementptr i8, ptr %78, i64 %indvars.iv284 - %164 = and i8 %.0185, 1 - store i8 %164, ptr %163, align 1 - %165 = add i64 %.1194, 2 - %spec.select = select i1 %162, i64 %165, i64 %.1194 - %166 = add i64 %spec.select, 1 + %162 = getelementptr i8, ptr %78, i64 %indvars.iv284 + %163 = and i8 %.0185, 1 + store i8 %163, ptr %162, align 1 + %164 = zext nneg i8 %.0185 to i64 + %165 = shl nuw nsw i64 %164, 1 + %spec.select = add i64 %.1194, 1 + %166 = add i64 %spec.select, %165 %indvars.iv.next285 = add nuw nsw i64 %indvars.iv284, 1 %exitcond288.not = icmp eq i64 %indvars.iv.next285, %wide.trip.count287 br i1 %exitcond288.not, label %.preheader227, label %134, !llvm.loop !16 diff --git a/bench/postgres/optimized/pg_receivewal.ll b/bench/postgres/optimized/pg_receivewal.ll index acc34144308..e88798975b9 100644 --- a/bench/postgres/optimized/pg_receivewal.ll +++ b/bench/postgres/optimized/pg_receivewal.ll @@ -890,22 +890,24 @@ get_destination_dir.exit.backedge.i.i: ; preds = %311, %274, %252, %2 br i1 %or.cond.i.i, label %335, label %332 332: ; preds = %329 - %333 = icmp ne i32 %.pre.i.i, %.039.ph155.i.i - %not..i.i = xor i1 %330, true - %or.cond60.i.i = select i1 %not..i.i, i1 true, i1 %333 - %334 = trunc nuw i8 %.041.ph153.i.i to i1 - %.not77.i.i = xor i1 %334, true + %333 = icmp eq i32 %.pre.i.i, %.039.ph155.i.i + %not..i.i = select i1 %330, i1 %333, i1 false + br i1 %not..i.i, label %334, label %get_destination_dir.exit.outer.i.i + +334:; preds = %332 + %335 = trunc nuw i8 %.041.ph153.i.i to i1 + %.not77.i.i = xor i1 %335, true %brmerge.i.i = or i1 %264, %.not77.i.i - %or.cond287.i.i = select i1 %or.cond60.i.i, i1 true, i1 %brmerge.i.i - br i1 %or.cond287.i.i, label %get_destination_dir.exit.outer.i.i, label %335 + %or.cond287.i.i = and i8 %.041.ph153.i.i, 1 + br i1 %brmerge.i.i, label %get_destination_dir.exit.outer.i.i, label %335 -335: ; preds = %332, %329, %326 +335: ; preds = %334, %329, %326 br label %get_destination_dir.exit.outer.i.i -get_destination_dir.exit.outer.i.i: ; preds = %335, %332 - %.142.i.i = phi i8 [ %.sink27.i.i.i, %335 ], [ %.041.ph153.i.i, %332 ] - %.140.i.i = phi i32 [ %.pre.i.i, %335 ], [ %.039.ph155.i.i, %332 ] - %.1.i.i = phi i64 [ %327, %335 ], [ %.038.ph157.i.i, %332 ] +get_destination_dir.exit.outer.i.i: ; preds = %335, %334, %332 + %.142.i.i = phi i8 [ %.sink27.i.i.i, %335 ], [ %.mux.i.i, %334 ], [ %.041.ph153.i.i, %332 ] + %.140.i.i = phi i32 [ %.pre.i.i, %336 ], [ %.039.ph155.i.i, %334 ], [ %.039.ph155.i.i, %332 ] + %.1.i.i = phi i64 [ %327, %336 ], [ %.038.ph157.i.i, %334 ], [ %.038.ph157.i.i, %332 ] store i32 0, ptr %227, align 4 %336 = call ptr @readdir(ptr noundef nonnull %225) #12 %.not49144.i.i = icmp eq ptr %336, null @@ -956,8 +958,7 @@ FindStreamingStart.exit.thread.i: ; preds = %close_destination_d br label %351 FindStreamingStart.exit.i: ; preds = %close_destination_dir.exit.i.i - %344 = and i8 %.041.ph.lcssa129.i.i, 1 - %345 = xor i8 %344, 1 + %344 = xor i8 %.041.ph.lcssa129.i.i, 1 %346 = zext nneg i8 %345 to i64 %spec.select.i.i = add i64 %.038.ph.lcssa119.i.i, %346 %347 = load i32, ptr @WalSegSz, align 4 diff --git a/bench/postgres/optimized/xloginsert.ll b/bench/postgres/optimized/xloginsert.ll index a59e5124db0..0e07f5fa7bd 100644 --- a/bench/postgres/optimized/xloginsert.ll +++ b/bench/postgres/optimized/xloginsert.ll @@ -491,31 +491,30 @@ define dso_local range(i64 1, 0) i64 @XLogInsert(i8 noundef zeroext %0, i8 nound %17 = icmp eq i32 %16, 0 %18 = icmp ne i8 %0, 0 %or.cond = and i1 %18, %17 - br i1 %or.cond, label %22, label %.preheader + br i1 %or.cond, label %21, label %.preheader .preheader: ; preds = %15 %19 = zext i8 %0 to i64 - %20 = or i8 %1, 2 - %21 = load ptr, ptr @PGLZ_strategy_default, align 8 + %20 = load ptr, ptr @PGLZ_strategy_default, align 8 br label %28 -22: ; preds = %15 - %23 = load i32, ptr @max_registered_block_id, align 4 - %24 = icmp sgt i32 %23, 0 - br i1 %24, label %.lr.ph.i, label %XLogResetInsertion.exit +21: ; preds = %15 + %22 = load i32, ptr @max_registered_block_id, align 4 + %23 = icmp sgt i32 %22, 0 + br i1 %23, label %.lr.ph.i, label %XLogResetInsertion.exit -.lr.ph.i: ; preds = %22 - %25 = load ptr, ptr @registered_buffers, align 8 - %wide.trip.count.i = zext nneg i32 %23 to i64 - br label %26 +.lr.ph.i: ; preds = %21 + %24 = load ptr, ptr @registered_buffers, align 8 + %25 = zext nneg i32 %22 to i64 + br label %25 -26: ; preds = %26, %.lr.ph.i - %indvars.iv.i = phi i64 [ 0, %.lr.ph.i ], [ %indvars.iv.next.i, %26 ] - %27 = getelementptr %struct.registered_buffer, ptr %25, i64 %indvars.iv.i - store i8 0, ptr %27, align 8 +25: ; preds = %25, %.lr.ph.i + %indvars.iv.i = phi i64 [ 0, %.lr.ph.i ], [ %indvars.iv.next.i, %25 ] + %indvars.iv.i = getelementptr %struct.registered_buffer, ptr %24, i64 %indvars.iv.i + store i8 0, ptr %indvars.iv.i, align 8 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, %wide.trip.count.i - br i1 %exitcond.not.i, label %XLogResetInsertion.exit, label %26, !llvm.loop !5 + br i1 %exitcond.not.i, label %XLogResetInsertion.exit, label %25, !llvm.loop !5 28: ; preds = %.preheader, %XLogRecordAssemble.exit call void @GetFullPageWriteInfo(ptr noundef nonnull %4, ptr noundef nonnull %5) #10 @@ -529,8 +528,9 @@ define dso_local range(i64 1, 0) i64 @XLogInsert(i8 noundef zeroext %0, i8 nound %34 = load ptr, ptr @wal_consistency_checking, align 8 %35 = getelementptr i8, ptr %34, i64 %19 %36 = load i8, ptr %35, align 1 - %37 = trunc i8 %36 to i1 - %spec.select.i = select i1 %37, i8 %20, i8 %1 + %37 = shl i8 %36, 1 + %spec.select.i = and i8 %37, 2 + %spec.select.i = or i8 %37, %1 %38 = load i32, ptr @max_registered_block_id, align 4 %39 = icmp sgt i32 %38, 0 br i1 %39, label %.lr.ph.i13, label %._crit_edge.i @@ -695,7 +695,7 @@ define dso_local range(i64 1, 0) i64 @XLogInsert(i8 noundef zeroext %0, i8 nound unreachable 112: ; preds = %105 - %113 = call i32 @pglz_compress(ptr noundef %.0.i.i, i32 noundef %95, ptr noundef nonnull %93, ptr noundef %21) #10 + %113 = call i32 @pglz_compress(ptr noundef %.0.i.i, i32 noundef %95, ptr noundef nonnull %93, ptr noundef %20) #10 %114 = icmp sgt i32 %113, -1 %115 = add nuw i32 %113, %.022.i.i %116 = icmp slt i32 %115, %95 @@ -1090,8 +1090,8 @@ XLogRecordAssemble.exit: ; preds = %._crit_edge232.i %exitcond.not.i21 = icmp eq i64 %indvars.iv.next.i20, %wide.trip.count.i18 br i1 %exitcond.not.i21, label %XLogResetInsertion.exit, label %288, !llvm.loop !5 -XLogResetInsertion.exit: ; preds = %288, %26, %284, %22 - %.0 = phi i64 [ 40, %22 ], [ %282, %284 ], [ 40, %26 ], [ %282, %288 ] +XLogResetInsertion.exit: ; preds = %288, %25, %284, %21 + %.0 = phi i64 [ 40, %21 ], [ %282, %284 ], [ 40, %25 ], [ %282, %288 ] store i32 0, ptr @num_rdatas, align 4 store i32 0, ptr @max_registered_block_id, align 4 store i64 0, ptr @mainrdata_len, align 8 diff --git a/bench/protobuf/optimized/text_format_decode_data.ll b/bench/protobuf/optimized/text_format_decode_data.ll index 27ce44ece1d..b132fa5e5a5 100644 --- a/bench/protobuf/optimized/text_format_decode_data.ll +++ b/bench/protobuf/optimized/text_format_decode_data.ll @@ -371,9 +371,8 @@ if.then: ; preds = %for.body %17 = trunc i32 %16 to i8 %conv2.i.i = or i8 %15, %17 %18 = load i8, ptr %builder, align 8 - %tobool.i.i = trunc i8 %18 to i1 - %19 = or i8 %conv2.i.i, -128 - %spec.select.i.i = select i1 %tobool.i.i, i8 %19, i8 %conv2.i.i + %tobool.i.i = shl i8 %18, 7 + %19 = or i8 %conv2.i.i, %19 %cmp.not.i.i = icmp eq i8 %spec.select.i.i, 0 br i1 %cmp.not.i.i, label %_ZN6google8protobuf8compiler10objectivec12_GLOBAL__N_117DecodeDataBuilder13AddUnderscoreEv.exit, label %if.then7.i.i @@ -392,12 +391,12 @@ cleanup.action81: ; preds = %lpad35, %cleanup.ac call void @_ZN4absl12lts_2023080212log_internal15LogMessageFatalD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp32) #17 unreachable -lpad88.loopexit: ; preds = %if.then7.i.i, %if.then.i, %_ZN6google8protobuf8compiler10objectivec12_GLOBAL__N_117DecodeDataBuilder8AddFirstEcc.exit43.i, %if.then7.i56.i +lpad88.loopexit: ; preds = %if.then7.i.i, %if.then.i, %_ZN6google8protobuf8compiler10objectivec12_GLOBAL__N_117DecodeDataBuilder8AddFirstEcc.exit43.i, %if.then7.i54.i %lpad.loopexit = landingpad { ptr, i32 } cleanup br label %ehcleanup115 -lpad88.loopexit.split-lp: ; preds = %if.then7.i.i81, %_ZN6google8protobuf8compiler10objectivec12_GLOBAL__N_117DecodeDataBuilder4PushEv.exit.i +lpad88.loopexit.split-lp: ; preds = %if.then7.i.i80, %_ZN6google8protobuf8compiler10objectivec12_GLOBAL__N_117DecodeDataBuilder4PushEv.exit.i %lpad.loopexit.split-lp = landingpad { ptr, i32 } cleanup br label %ehcleanup115 @@ -439,9 +438,9 @@ if.end95: ; preds = %if.end if.then.i: ; preds = %if.end95 %23 = load i8, ptr %op_.i.i, align 2 %24 = load i8, ptr %builder, align 8 - %tobool.i.i48 = trunc i8 %24 to i1 - %spec.select.i.v.i = select i1 %tobool.i.i48, i8 -97, i8 31 - %spec.select.i.i49 = or i8 %spec.select.i.v.i, %23 + %tobool.i.i48 = shl i8 %24, 7 + %spec.select.i.v.i = or i8 %23, %tobool.i.i48 + %spec.select.i.i49 = or i8 %spec.select.i.v.i, 31 %call.i.i5154 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc(ptr noundef nonnull align 8 dereferenceable(32) %decode_data_.i, i8 noundef signext %spec.select.i.i49) to label %call.i.i51.noexc unwind label %lpad88.loopexit @@ -505,9 +504,9 @@ if.then12.i: ; preds = %if.then8.i _ZN6google8protobuf8compiler10objectivec12_GLOBAL__N_117DecodeDataBuilder8AddFirstEcc.exit43.i: ; preds = %if.then8.i %36 = trunc i32 %22 to i8 %37 = load i8, ptr %builder, align 8 - %tobool.i17.i = trunc i8 %37 to i1 - %spec.select.i18.v.i = select i1 %tobool.i17.i, i8 -32, i8 96 - %spec.select.i18.i = or i8 %spec.select.i18.v.i, %36 + %tobool.i17.i = shl i8 %37, 7 + %spec.select.i18.v.i = or i8 %tobool.i17.i, %36 + %spec.select.i18.i = or i8 %spec.select.i18.v.i, 96 %call.i22.i55 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc(ptr noundef nonnull align 8 dereferenceable(32) %decode_data_.i, i8 noundef signext %spec.select.i18.i) to label %call.i22.i.noexc unwind label %lpad88.loopexit @@ -542,31 +541,30 @@ if.end22.i: ; preds = %land.lhs.true.i, %i %43 = trunc i32 %22 to i8 %conv2.i52.i = or i8 %42, %43 %44 = load i8, ptr %builder, align 8 - %tobool.i53.i = trunc i8 %44 to i1 - %45 = or i8 %conv2.i52.i, -128 - %spec.select.i54.i = select i1 %tobool.i53.i, i8 %45, i8 %conv2.i52.i - %cmp.not.i55.i = icmp eq i8 %spec.select.i54.i, 0 - br i1 %cmp.not.i55.i, label %if.else.i62.i, label %if.then7.i56.i + %tobool.i53.i = shl i8 %44, 7 + %45 = or i8 %conv2.i52.i, %47 + %spec.select.i54.i = icmp eq i8 %45, 0 + br i1 %spec.select.i54.i, label %if.else.i60.i, label %if.then7.i54.i -if.then7.i56.i: ; preds = %if.end22.i - %call.i58.i56 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc(ptr noundef nonnull align 8 dereferenceable(32) %decode_data_.i, i8 noundef signext %spec.select.i54.i) - to label %if.else.i62.i unwind label %lpad88.loopexit +if.then7.i54.i: ; preds = %if.end22.i + %call.i56.i56 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc(ptr noundef nonnull align 8 dereferenceable(32) %decode_data_.i, i8 noundef signext %45) + to label %if.else.i60.i unwind label %lpad88.loopexit -if.else.i62.i: ; preds = %if.then7.i56.i, %if.end22.i +if.else.i60.i: ; preds = %if.then7.i54.i, %if.end22.i store i8 0, ptr %builder, align 8 store i8 0, ptr %op_.i.i, align 2 store i32 0, ptr %segment_len_.i.i, align 4 store i8 1, ptr %is_all_upper_.i.i, align 1 br i1 %cmp19.i, label %if.end17.i70.i, label %if.else8.i66.i -if.else8.i66.i: ; preds = %if.else.i62.i +if.else8.i66.i: ; preds = %if.else.i60.i %arrayidx.i7.i67.i = getelementptr inbounds nuw [256 x i8], ptr @_ZN4absl12lts_2023080214ascii_internal8kToLowerE, i64 0, i64 %idxprom.i.i %46 = load i8, ptr %arrayidx.i7.i67.i, align 1 %cmp12.i68.i = icmp eq i8 %14, %46 br i1 %cmp12.i68.i, label %if.end17.i70.i, label %if.else -if.end17.i70.i: ; preds = %if.else8.i66.i, %if.else.i62.i - %.sink.i71.i = phi i8 [ 64, %if.else.i62.i ], [ 32, %if.else8.i66.i ] +if.end17.i70.i: ; preds = %if.else8.i66.i, %if.else.i60.i + %.sink.i71.i = phi i8 [ 64, %if.else.i60.i ], [ 32, %if.else8.i66.i ] store i8 %.sink.i71.i, ptr %op_.i.i, align 2 store i32 1, ptr %segment_len_.i.i, align 4 %47 = add i8 %14, -65 @@ -641,17 +639,16 @@ if.end109: ; preds = %for.end %54 = trunc i32 %53 to i8 %conv2.i.i77 = or i8 %52, %54 %55 = load i8, ptr %builder, align 8, !noalias !7 - %tobool.i.i78 = trunc i8 %55 to i1 - %56 = or i8 %conv2.i.i77, -128 - %spec.select.i.i79 = select i1 %tobool.i.i78, i8 %56, i8 %conv2.i.i77 - %cmp.not.i.i80 = icmp eq i8 %spec.select.i.i79, 0 - br i1 %cmp.not.i.i80, label %_ZN6google8protobuf8compiler10objectivec12_GLOBAL__N_117DecodeDataBuilder4PushEv.exit.i, label %if.then7.i.i81 - -if.then7.i.i81: ; preds = %if.end109 - %call.i.i8386 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc(ptr noundef nonnull align 8 dereferenceable(32) %decode_data_.i, i8 noundef signext %spec.select.i.i79) + %tobool.i.i78 = shl i8 %55, 7 + %56 = or i8 %conv2.i.i77, %58 + %spec.select.i.i79 = icmp eq i8 %56, 0 + br i1 %spec.select.i.i79, label %_ZN6google8protobuf8compiler10objectivec12_GLOBAL__N_117DecodeDataBuilder4PushEv.exit.i, label %if.then7.i.i80 + +if.then7.i.i80: ; preds = %if.end109 + %call.i.i8285 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc(ptr noundef nonnull align 8 dereferenceable(32) %decode_data_.i, i8 noundef signext %56) to label %_ZN6google8protobuf8compiler10objectivec12_GLOBAL__N_117DecodeDataBuilder4PushEv.exit.i unwind label %lpad88.loopexit.split-lp -_ZN6google8protobuf8compiler10objectivec12_GLOBAL__N_117DecodeDataBuilder4PushEv.exit.i: ; preds = %if.then7.i.i81, %if.end109 +_ZN6google8protobuf8compiler10objectivec12_GLOBAL__N_117DecodeDataBuilder4PushEv.exit.i: ; preds = %if.then7.i.i80, %if.end109 store i8 0, ptr %builder, align 8, !noalias !7 store i8 0, ptr %op_.i.i, align 2, !noalias !7 store i32 0, ptr %segment_len_.i.i, align 4, !noalias !7 diff --git a/bench/proxygen/optimized/HTTP2Framer.ll b/bench/proxygen/optimized/HTTP2Framer.ll index cab27c283a8..501e9894854 100644 --- a/bench/proxygen/optimized/HTTP2Framer.ll +++ b/bench/proxygen/optimized/HTTP2Framer.ll @@ -4219,9 +4219,9 @@ entry: %flags.2 = select i1 %endHeaders, i8 %or108, i8 %flags.1 %unidirectional = getelementptr inbounds nuw i8, ptr %exAttributes, i64 8 %1 = load i8, ptr %unidirectional, align 8 - %tobool110 = trunc i8 %1 to i1 - %or112 = or disjoint i8 %flags.2, 64 - %flags.3 = select i1 %tobool110, i8 %or112, i8 %flags.2 + %tobool110 = shl i8 %1, 6 + %or112 = and i8 %2, 64 + %flags.3 = or disjoint i8 %flags.2, %3 %2 = load i32, ptr @_ZN8proxygen5http218kFrameStreamIDSizeE, align 4 %3 = trunc i64 %headersLen to i32 %conv114 = add i32 %2, %3 diff --git a/bench/qemu/optimized/system_memory.ll b/bench/qemu/optimized/system_memory.ll index 54f940822c1..41ee8b609dc 100644 --- a/bench/qemu/optimized/system_memory.ll +++ b/bench/qemu/optimized/system_memory.ll @@ -4231,9 +4231,9 @@ if.then.i: ; preds = %memory_region_get_i memory_region_get_dirty_log_mask.exit: ; preds = %memory_region_get_ram_addr.exit, %memory_region_get_iommu.exit.i, %if.then.i %mask.0.i = phi i8 [ %6, %if.then.i ], [ %2, %memory_region_get_iommu.exit.i ], [ %2, %memory_region_get_ram_addr.exit ] %7 = load i8, ptr @tcg_allowed, align 1 - %tobool5.i = trunc i8 %7 to i1 - %8 = or i8 %mask.0.i, 2 - %spec.select.i = select i1 %tobool5.i, i8 %8, i8 %mask.0.i + %tobool5.i = shl i8 %7, 1 + %8 = and i8 %8, 2 + %spec.select.i = or i8 %tobool5.i, %mask.0.i call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %blocks.i) %tobool.not.i5 = icmp eq i8 %spec.select.i, 0 br i1 %tobool.not.i5, label %cpu_physical_memory_set_dirty_range.exit, label %if.end.i diff --git a/bench/quantlib/optimized/abcdcalibration.ll b/bench/quantlib/optimized/abcdcalibration.ll index 84adca032a7..f6b5fe7905d 100644 --- a/bench/quantlib/optimized/abcdcalibration.ll +++ b/bench/quantlib/optimized/abcdcalibration.ll @@ -1837,22 +1837,21 @@ invoke.cont59: ; preds = %invoke.cont40 store i64 %loadedv56, ptr %call5.i.i.i.i1.i.i, align 8, !tbaa !8 %bIsFixed_63 = getelementptr inbounds nuw i8, ptr %this, i64 1 %41 = load i8, ptr %bIsFixed_63, align 1, !tbaa !42, !range !67, !noundef !68 - %loadedv64 = trunc nuw i8 %41 to i1 - %or.i62 = or disjoint i64 %loadedv56, 2 - %42 = select i1 %loadedv64, i64 %or.i62, i64 %loadedv56 - store i64 %42, ptr %call5.i.i.i.i1.i.i, align 8, !tbaa !8 - %cIsFixed_71 = getelementptr inbounds nuw i8, ptr %this, i64 2 - %43 = load i8, ptr %cIsFixed_71, align 2, !tbaa !43, !range !67, !noundef !68 - %loadedv72 = trunc nuw i8 %43 to i1 - %or.i71 = or disjoint i64 %42, 4 - %44 = select i1 %loadedv72, i64 %or.i71, i64 %42 + %loadedv64 = shl nuw nsw i8 %41, 1 + %or.i62 = or disjoint i8 %40, %loadedv64 + %loadedv64 = zext nneg i8 %or.i62 to i64 store i64 %44, ptr %call5.i.i.i.i1.i.i, align 8, !tbaa !8 + %cIsFixed_71 = getelementptr inbounds nuw i8, ptr %this, i64 2 + %45 = load i8, ptr %cIsFixed_71, align 2, !tbaa !43, !range !67, !noundef !68 + %46 = shl nuw nsw i8 %45, 2 + %47 = or disjoint i8 %43, %46 + %48 = zext nneg i8 %47 to i64 + store i64 %48, ptr %call5.i.i.i.i1.i.i, align 8, !tbaa !8 %dIsFixed_79 = getelementptr inbounds nuw i8, ptr %this, i64 3 %45 = load i8, ptr %dIsFixed_79, align 1, !tbaa !44, !range !67, !noundef !68 - %loadedv80 = trunc nuw i8 %45 to i1 - %and.i78 = and i64 %44, 119 - %or.i80 = or i64 %44, 8 - %storemerge212 = select i1 %loadedv80, i64 %or.i80, i64 %and.i78 + %loadedv80 = shl nuw nsw i8 %45, 3 + %and.i78 = or disjoint i8 %47, %50 + %or.i80 = zext nneg i8 %and.i78 to i64 store i64 %storemerge212, ptr %call5.i.i.i.i1.i.i, align 8, !tbaa !8 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %inversedTransformatedGuess) #21 %46 = load ptr, ptr %transformation_, align 8, !tbaa !75 @@ -1965,7 +1964,7 @@ invoke.cont106: ; preds = %.noexc96, %invoke.c %vtable108 = load ptr, ptr %56, align 8, !tbaa !14 %vfn109 = getelementptr inbounds nuw i8, ptr %vtable108, i64 16 %59 = load ptr, ptr %vfn109, align 8 - %call111 = invoke noundef i32 %59(ptr noundef nonnull align 8 dereferenceable(8) %56, ptr noundef nonnull align 8 dereferenceable(56) %problem, ptr noundef nonnull align 8 dereferenceable(40) %58) + %call111 = invoke noundef i32 %64(ptr noundef nonnull align 8 dereferenceable(8) %56, ptr noundef nonnull align 8 dereferenceable(56) %problem, ptr noundef nonnull align 8 dereferenceable(40) %58) to label %invoke.cont110 unwind label %lpad103 invoke.cont110: ; preds = %invoke.cont106 @@ -2092,7 +2091,7 @@ if.then.i.i.i.i133: ; preds = %if.then.i.i.i130 %vtable.i.i.i.i134 = load ptr, ptr %80, align 8, !tbaa !14 %vfn.i.i.i.i135 = getelementptr inbounds nuw i8, ptr %vtable.i.i.i.i134, i64 16 %82 = load ptr, ptr %vfn.i.i.i.i135, align 8 - invoke void %82(ptr noundef nonnull align 8 dereferenceable(16) %80) + invoke void %87(ptr noundef nonnull align 8 dereferenceable(16) %80) to label %.noexc.i.i.i137 unwind label %terminate.lpad.i.i.i136 .noexc.i.i.i137: ; preds = %if.then.i.i.i.i133 @@ -2105,7 +2104,7 @@ if.then.i.i.i.i.i140: ; preds = %.noexc.i.i.i137 %vtable.i.i.i.i.i141 = load ptr, ptr %80, align 8, !tbaa !14 %vfn.i.i.i.i.i142 = getelementptr inbounds nuw i8, ptr %vtable.i.i.i.i.i141, i64 24 %84 = load ptr, ptr %vfn.i.i.i.i.i142, align 8 - invoke void %84(ptr noundef nonnull align 8 dereferenceable(16) %80) + invoke void %89(ptr noundef nonnull align 8 dereferenceable(16) %80) to label %_ZN8QuantLib10ConstraintD2Ev.exit unwind label %terminate.lpad.i.i.i136 terminate.lpad.i.i.i136: ; preds = %if.then.i.i.i.i.i140, %if.then.i.i.i.i133 diff --git a/bench/re2/optimized/onepass.ll b/bench/re2/optimized/onepass.ll index 0b06e2dcfdd..f2ce39de6b2 100644 --- a/bench/re2/optimized/onepass.ll +++ b/bench/re2/optimized/onepass.ll @@ -814,7 +814,8 @@ invoke.cont85.outer: ; preds = %invoke.cont85.outer %cond81.0.ph = phi i32 [ %32, %while.body ], [ %cond81.0.ph433, %invoke.cont85.outer.backedge ] %node.1.ph = phi ptr [ %node.0582, %while.body ], [ %node.1.ph438, %invoke.cont85.outer.backedge ] %nalloc.2.ph = phi i32 [ %nalloc.1583, %while.body ], [ %nalloc.2.ph439, %invoke.cont85.outer.backedge ] - %tobool158 = trunc nuw i8 %matched.1.ph to i1 + %tobool158 = zext nneg i8 %matched.1.ph to i32 + %34 = shl nuw nsw i32 %33, 6 br label %invoke.cont85.outer430 invoke.cont85.outer430: ; preds = %invoke.cont85.outer430.backedge, %invoke.cont85.outer @@ -823,9 +824,8 @@ invoke.cont85.outer430: ; preds = %invoke.cont85.outer %cond81.0.ph433 = phi i32 [ %cond81.0.ph, %invoke.cont85.outer ], [ %cond81.2, %invoke.cont85.outer430.backedge ] %node.1.ph434 = phi ptr [ %node.1.ph, %invoke.cont85.outer ], [ %node.1.ph438, %invoke.cont85.outer430.backedge ] %nalloc.2.ph435 = phi i32 [ %nalloc.2.ph, %invoke.cont85.outer ], [ %nalloc.2.ph439, %invoke.cont85.outer430.backedge ] - %invariant.op = or i32 %cond81.0.ph433, 64 - %spec.select.v = select i1 %tobool158, i32 %invariant.op, i32 %cond81.0.ph433 - %spec.select105.v = select i1 %tobool158, i32 %invariant.op, i32 %cond81.0.ph433 + %invariant.op = or i32 %cond81.0.ph433, %34 + %spec.select.v = or i32 %cond81.0.ph433, %34 br label %invoke.cont85.outer436 invoke.cont85.outer436: ; preds = %invoke.cont85.outer436.backedge, %invoke.cont85.outer430 @@ -1017,7 +1017,7 @@ for.body140.lr.ph: ; preds = %if.end133 %conv.i = zext i8 %58 to i32 %action155 = getelementptr inbounds nuw i8, ptr %node.3, i64 4 %shl = shl i32 %nextindex.0, 16 - %spec.select = or i32 %shl, %spec.select.v + %spec.select = or i32 %shl, %invariant.op br label %for.body140 for.body140: ; preds = %for.body140.lr.ph, %for.inc171 @@ -1090,7 +1090,7 @@ for.body196.lr.ph: ; preds = %if.then177 %sub = add nsw i32 %.sroa.speculated418, -32 %action216 = getelementptr inbounds nuw i8, ptr %node.3, i64 4 %shl220 = shl i32 %nextindex.0, 16 - %spec.select105 = or i32 %shl220, %spec.select105.v + %spec.select105 = or i32 %shl220, %spec.select.v br label %for.body196 for.body196: ; preds = %for.body196.lr.ph, %for.inc237 @@ -1314,7 +1314,8 @@ if.then5.i.i.i324: ; preds = %_ZNK3re210SparseSet sw.bb299: ; preds = %invoke.cont85 %101 = trunc nsw i64 %indvars.iv685 to i32 - br i1 %tobool158, label %cleanup, label %if.end302 + %tobool300 = trunc nuw i8 %matched.1.ph to i1 + br i1 %tobool300, label %cleanup, label %if.end302 if.end302: ; preds = %sw.bb299 %arrayidx.i.i.i.le794 = getelementptr inbounds %"class.re2::Prog::Inst", ptr %34, i64 %indvars.iv685 diff --git a/bench/recastnavigation/optimized/CrowdTool.ll b/bench/recastnavigation/optimized/CrowdTool.ll index 322e81adb59..406f99f972b 100644 --- a/bench/recastnavigation/optimized/CrowdTool.ll +++ b/bench/recastnavigation/optimized/CrowdTool.ll @@ -2378,24 +2378,24 @@ define dso_local void @_ZN14CrowdToolState17updateAgentParamsEv(ptr noundef nonn %spec.select = and i8 %12, 1 %13 = getelementptr inbounds nuw i8, ptr %0, i64 100983 %14 = load i8, ptr %13, align 1 - %15 = trunc i8 %14 to i1 - %16 = or disjoint i8 %spec.select, 8 - %.1 = select i1 %15, i8 %16, i8 %spec.select + %15 = shl i8 %14, 3 + %16 = and i8 %15, 8 + %.1 = or disjoint i8 %16, %spec.select %17 = getelementptr inbounds nuw i8, ptr %0, i64 100984 %18 = load i8, ptr %17, align 8 - %19 = trunc i8 %18 to i1 - %20 = or disjoint i8 %.1, 16 - %.2 = select i1 %19, i8 %20, i8 %.1 + %19 = shl i8 %18, 4 + %20 = and i8 %19, 16 + %.2 = or disjoint i8 %.1, %20 %21 = getelementptr inbounds nuw i8, ptr %0, i64 100985 %22 = load i8, ptr %21, align 1 - %23 = trunc i8 %22 to i1 - %24 = or disjoint i8 %.2, 2 - %.4 = select i1 %23, i8 %24, i8 %.2 + %23 = shl i8 %22, 1 + %24 = and i8 %23, 2 + %.4 = or disjoint i8 %.2, %24 %25 = getelementptr inbounds nuw i8, ptr %0, i64 100992 %26 = load i8, ptr %25, align 8 - %27 = trunc i8 %26 to i1 - %28 = or i8 %.4, 4 - %.5 = select i1 %27, i8 %28, i8 %.4 + %27 = shl i8 %26, 2 + %28 = and i8 %27, 4 + %.5 = or disjoint i8 %.4, %28 %29 = getelementptr inbounds nuw i8, ptr %0, i64 100988 %30 = load float, ptr %29, align 4 %31 = fptoui float %30 to i8 diff --git a/bench/recastnavigation/optimized/DetourNavMeshQuery.ll b/bench/recastnavigation/optimized/DetourNavMeshQuery.ll index bf934b9d709..fc1b92c8e47 100644 --- a/bench/recastnavigation/optimized/DetourNavMeshQuery.ll +++ b/bench/recastnavigation/optimized/DetourNavMeshQuery.ll @@ -2848,7 +2848,7 @@ _Z11dtVisfinitePKf.exit187: ; preds = %60 br label %126 .loopexit: ; preds = %319, %.thread - %.1144.lcssa = phi i1 [ %.0143211, %.thread ], [ %.2145, %319 ] + %.1144.lcssa = phi i8 [ %.0143211, %.thread ], [ %.2145, %319 ] %.1141.lcssa = phi float [ %.0140212, %.thread ], [ %.2142, %319 ] %.2.lcssa = phi ptr [ %.0138213, %.thread ], [ %.3, %319 ] %122 = load ptr, ptr %31, align 8 @@ -2863,7 +2863,7 @@ _Z11dtVisfinitePKf.exit187: ; preds = %60 %129 = phi ptr [ %111, %.lr.ph214 ], [ %122, %.loopexit ] %.0138213 = phi ptr [ %80, %.lr.ph214 ], [ %.2.lcssa, %.loopexit ] %.0140212 = phi float [ %115, %.lr.ph214 ], [ %.1141.lcssa, %.loopexit ] - %.0143211 = phi i1 [ false, %.lr.ph214 ], [ %.1144.lcssa, %.loopexit ] + %.0143211 = phi i8 [ 0, %.lr.ph214 ], [ %.1144.lcssa, %.loopexit ] %130 = load ptr, ptr %129, align 8 %131 = load ptr, ptr %130, align 8 %132 = add nsw i32 %127, -1 @@ -2931,7 +2931,7 @@ _Z11dtVisfinitePKf.exit187: ; preds = %60 %.0150208 = phi i32 [ %.0150203, %.lr.ph ], [ %.0150, %319 ] %.2207 = phi ptr [ %.0138213, %.lr.ph ], [ %.3, %319 ] %.1141206 = phi float [ %.0140212, %.lr.ph ], [ %.2142, %319 ] - %.1144205 = phi i1 [ %.0143211, %.lr.ph ], [ %.2145, %319 ] + %.1144205 = phi i8 [ %.0143211, %.lr.ph ], [ %.2145, %319 ] %163 = zext i32 %.0150208 to i64 %164 = getelementptr inbounds nuw %struct.dtLink, ptr %162, i64 %163 %165 = load i32, ptr %164, align 4 @@ -3174,7 +3174,7 @@ _ZN11dtNodeQueue6modifyEP6dtNode.exit: ; preds = %310, %308, %298, %3 br label %319 319: ; preds = %178, %_ZN11dtNodeQueue6modifyEP6dtNode.exit, %318, %281, %275, %167, %161 - %.2145 = phi i1 [ %.1144205, %275 ], [ %.1144205, %281 ], [ %.1144205, %318 ], [ %.1144205, %_ZN11dtNodeQueue6modifyEP6dtNode.exit ], [ %.1144205, %167 ], [ %.1144205, %161 ], [ true, %178 ] + %.2145 = phi i8 [ %.1144205, %275 ], [ %.1144205, %281 ], [ %.1144205, %318 ], [ %.1144205, %_ZN11dtNodeQueue6modifyEP6dtNode.exit ], [ %.1144205, %167 ], [ %.1144205, %161 ], [ 1, %178 ] %.2142 = phi float [ %.1141206, %275 ], [ %.1141206, %281 ], [ %.0146, %318 ], [ %.1141206, %_ZN11dtNodeQueue6modifyEP6dtNode.exit ], [ %.1141206, %167 ], [ %.1141206, %161 ], [ %.1141206, %178 ] %.3 = phi ptr [ %.2207, %275 ], [ %.2207, %281 ], [ %186, %318 ], [ %.2207, %_ZN11dtNodeQueue6modifyEP6dtNode.exit ], [ %.2207, %167 ], [ %.2207, %161 ], [ %.2207, %178 ] %320 = load ptr, ptr %12, align 8 @@ -3186,13 +3186,14 @@ _ZN11dtNodeQueue6modifyEP6dtNode.exit: ; preds = %310, %308, %298, %3 br i1 %.not172, label %.loopexit, label %161, !llvm.loop !28 ._crit_edge.loopexit: ; preds = %126, %.loopexit - %.0143.lcssa.ph = phi i1 [ %.1144.lcssa, %.loopexit ], [ %.0143211, %126 ] + %.0143.lcssa.ph = phi i8 [ %.1144.lcssa, %.loopexit ], [ %.0143211, %126 ] %.1139.ph = phi ptr [ %.2.lcssa, %.loopexit ], [ %131, %126 ] - %324 = freeze i1 %.0143.lcssa.ph + %324 = zext nneg i8 %.0143.lcssa.ph to i32 + %325 = shl nuw nsw i32 %324, 5 br label %._crit_edge ._crit_edge: ; preds = %._crit_edge.loopexit, %75 - %.0143.lcssa = phi i1 [ false, %75 ], [ %324, %._crit_edge.loopexit ] + %.0143.lcssa = phi i32 [ 0, %75 ], [ %325, %._crit_edge.loopexit ] %.1139 = phi ptr [ %80, %75 ], [ %.1139.ph, %._crit_edge.loopexit ] %325 = call noundef i32 @_ZNK14dtNavMeshQuery13getPathToNodeEP6dtNodePjPii(ptr noundef nonnull align 8 dereferenceable(104) %0, ptr noundef %.1139, ptr noundef nonnull %6, ptr noundef nonnull %7, i32 noundef %8) %326 = getelementptr inbounds nuw i8, ptr %.1139, i64 24 @@ -3200,12 +3201,11 @@ _ZN11dtNodeQueue6modifyEP6dtNode.exit: ; preds = %310, %308, %298, %3 %.not179 = icmp eq i32 %327, %2 %328 = or disjoint i32 %325, 64 %spec.select186 = select i1 %.not179, i32 %325, i32 %328 - %329 = or disjoint i32 %spec.select186, 32 - %spec.select223 = select i1 %.0143.lcssa, i32 %329, i32 %spec.select186 + %329 = or i32 %spec.select186, %.0143.lcssa br label %_Z11dtVisfinitePKf.exit.thread -_Z11dtVisfinitePKf.exit.thread: ; preds = %._crit_edge, %56, %60, %42, %46, %35, %38, %_Z11dtVisfinitePKf.exit, %_Z11dtVisfinitePKf.exit187, %34, %74 - %.0137 = phi i32 [ 1073741824, %74 ], [ -2147483640, %34 ], [ -2147483640, %_Z11dtVisfinitePKf.exit187 ], [ -2147483640, %_Z11dtVisfinitePKf.exit ], [ -2147483640, %38 ], [ -2147483640, %35 ], [ -2147483640, %46 ], [ -2147483640, %42 ], [ -2147483640, %60 ], [ -2147483640, %56 ], [ %spec.select223, %._crit_edge ] +_Z11dtVisfinitePKf.exit.thread: ; preds = %56, %60, %42, %46, %35, %38, %_Z11dtVisfinitePKf.exit, %_Z11dtVisfinitePKf.exit187, %34, %._crit_edge, %74 + %.0137 = phi i32 [ 1073741824, %74 ], [ %.1, %._crit_edge ], [ -2147483640, %34 ], [ -2147483640, %_Z11dtVisfinitePKf.exit187 ], [ -2147483640, %_Z11dtVisfinitePKf.exit ], [ -2147483640, %38 ], [ -2147483640, %35 ], [ -2147483640, %46 ], [ -2147483640, %42 ], [ -2147483640, %60 ], [ -2147483640, %56 ] ret i32 %.0137 } diff --git a/bench/regex-rs/optimized/11vfjke4utuj478u.ll b/bench/regex-rs/optimized/11vfjke4utuj478u.ll index 6c5de90c547..4745dd0cc5c 100644 --- a/bench/regex-rs/optimized/11vfjke4utuj478u.ll +++ b/bench/regex-rs/optimized/11vfjke4utuj478u.ll @@ -3584,7 +3584,7 @@ common.resume.i: ; preds = %289, %286, %.body.t 84: ; preds = %82 %85 = getelementptr inbounds nuw i8, ptr %23, i64 116 %86 = load i8, ptr %85, align 4, !range !97, !alias.scope !667, !noalias !620, !noundef !5 - %87 = trunc i8 %86 to i1 + %87 = and i8 %86, 1 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %17), !noalias !620 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %17, ptr noundef nonnull align 8 dereferenceable(32) %19, i64 32, i1 false), !noalias !620 call void @llvm.experimental.noalias.scope.decl(metadata !670) @@ -3801,21 +3801,22 @@ _ZN14regex_automata6hybrid3dfa4Lazy15try_clear_cache17he46a9b47820b739dE.exit.i. unreachable 191: ; preds = %188 + %192 = zext nneg i8 %87 to i32 + %193 = shl nuw nsw i32 %192, 28 %.fca.1.extract11.i.i.i = extractvalue { i32, i32 } %186, 1 - %192 = or i32 %.fca.1.extract11.i.i.i, 268435456 - %.0.i70.i.i.i = select i1 %87, i32 %192, i32 %.fca.1.extract11.i.i.i - %193 = load ptr, ptr %12, align 8, !alias.scope !740, !noalias !696, !nonnull !5, !noundef !5 - %194 = getelementptr inbounds nuw i8, ptr %193, i64 16 - %195 = load i8, ptr %194, align 1, !noalias !743, !noundef !5 - %196 = and i8 %195, 1 - %197 = zext nneg i8 %196 to i32 - %198 = shl nuw nsw i32 %197, 27 - %spec.select.i.i.i = or i32 %198, %.0.i70.i.i.i - %199 = getelementptr inbounds nuw i8, ptr %.val.i, i64 24 + %192 = or i32 %.fca.1.extract11.i.i.i, %193 + %.0.i70.i.i.i = load ptr, ptr %12, align 8, !alias.scope !740, !noalias !696, !nonnull !5, !noundef !5 + %193 = getelementptr inbounds nuw i8, ptr %194, i64 16 + %194 = load i8, ptr %193, align 1, !noalias !743, !noundef !5 + %195 = and i8 %194, 1 + %196 = zext nneg i8 %195 to i32 + %197 = shl nuw nsw i32 %196, 27 + %198 = or i32 %192, %197 + %spec.select.i.i.i = getelementptr inbounds nuw i8, ptr %.val.i, i64 24 %.val61.i.i.i = load i64, ptr %144, align 8, !alias.scope !746, !noalias !696, !noundef !5 %200 = and i64 %.val61.i.i.i, 63 %201 = shl nuw i64 1, %200 - invoke void @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$14extend_trusted17h54b7cf1d5324091cE.llvm.3371294817895845771"(ptr noalias noundef nonnull align 8 dereferenceable(24) %199, i64 noundef %201, i32 noundef -2147483648) + invoke void @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$14extend_trusted17h54b7cf1d5324091cE.llvm.3371294817895845771"(ptr noalias noundef nonnull align 8 dereferenceable(24) %198, i64 noundef %201, i32 noundef -2147483648) to label %"_ZN97_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$alloc..vec..spec_extend..SpecExtend$LT$T$C$I$GT$$GT$11spec_extend17haccb15d83c042fc3E.exit.i.i.i" unwind label %.body.thread90.loopexit.split-lp.i.i.i, !noalias !696 "_ZN97_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$alloc..vec..spec_extend..SpecExtend$LT$T$C$I$GT$$GT$11spec_extend17haccb15d83c042fc3E.exit.i.i.i": ; preds = %191 diff --git a/bench/slurm/optimized/gres.ll b/bench/slurm/optimized/gres.ll index 57de354b31a..ea47299a3cc 100644 --- a/bench/slurm/optimized/gres.ll +++ b/bench/slurm/optimized/gres.ll @@ -18231,7 +18231,7 @@ define void @gres_g_job_set_env(ptr noundef %0, i32 noundef %1) local_unnamed_ad 15: ; preds = %.lr.ph, %98 %16 = phi i32 [ %5, %.lr.ph ], [ %99, %98 ] %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %98 ] - %.02655 = phi i1 [ false, %.lr.ph ], [ %.1, %98 ] + %.02655 = phi i8 [ 0, %.lr.ph ], [ %.1, %98 ] %.02754 = phi i32 [ 0, %.lr.ph ], [ %.128, %98 ] %17 = load ptr, ptr @gres_context, align 8 %18 = getelementptr inbounds nuw %struct.slurm_gres_context, ptr %17, i64 %indvars.iv @@ -18252,7 +18252,7 @@ define void @gres_g_job_set_env(ptr noundef %0, i32 noundef %1) local_unnamed_ad .outer.us: ; preds = %23, %_accumulate_job_gres_alloc.exit.us %.348.ph.us = phi i64 [ %.4.us, %_accumulate_job_gres_alloc.exit.us ], [ 0, %23 ] - %.3.ph.us = phi i1 [ %spec.select.us, %_accumulate_job_gres_alloc.exit.us ], [ %.02655, %23 ] + %.3.ph.us = phi i8 [ %spec.select.us, %_accumulate_job_gres_alloc.exit.us ], [ %.02655, %23 ] br label %61 26: ; preds = %61 @@ -18323,7 +18323,7 @@ _accumulate_job_gres_alloc.exit.us: ; preds = %54, %51, %35 %58 = load i32, ptr %25, align 8 %59 = load i32, ptr @gpu_plugin_id, align 4 %60 = icmp eq i32 %58, %59 - %spec.select.us = select i1 %60, i1 true, i1 %.3.ph.us + %spec.select.us = select i1 %60, i8 1, i8 %.3.ph.us br label %.outer.us, !llvm.loop !180 61: ; preds = %26, %.outer.us @@ -18333,7 +18333,7 @@ _accumulate_job_gres_alloc.exit.us: ; preds = %54, %51, %35 .outer: ; preds = %23, %_accumulate_job_gres_alloc.exit %.348.ph = phi i64 [ %.4, %_accumulate_job_gres_alloc.exit ], [ 0, %23 ] - %.3.ph = phi i1 [ %spec.select, %_accumulate_job_gres_alloc.exit ], [ %.02655, %23 ] + %.3.ph = phi i8 [ %spec.select, %_accumulate_job_gres_alloc.exit ], [ %.02655, %23 ] br label %63 63: ; preds = %.outer, %65 @@ -18378,36 +18378,37 @@ _accumulate_job_gres_alloc.exit: ; preds = %74, %76, %79 %.4 = phi i64 [ %.348.ph, %76 ], [ %82, %79 ], [ %.348.ph, %74 ] %84 = load i32, ptr @gpu_plugin_id, align 4 %85 = icmp eq i32 %83, %84 - %spec.select = select i1 %85, i1 true, i1 %.3.ph + %spec.select = select i1 %85, i8 1, i8 %.3.ph br label %.outer, !llvm.loop !180 .split52.us: ; preds = %63, %61 %.us-phi = phi i64 [ %.348.ph.us, %61 ], [ %.348.ph, %63 ] - %.us-phi53 = phi i1 [ %.3.ph.us, %61 ], [ %.3.ph, %63 ] + %.us-phi53 = phi i8 [ %.3.ph.us, %61 ], [ %.3.ph, %63 ] call void @list_iterator_destroy(ptr noundef %24) #25 br label %86 86: ; preds = %.split52.us, %21 %.247 = phi i64 [ 0, %21 ], [ %.us-phi, %.split52.us ] - %.2 = phi i1 [ %.02655, %21 ], [ %.us-phi53, %.split52.us ] + %.2 = phi i8 [ %.02655, %21 ], [ %.us-phi53, %.split52.us ] %87 = getelementptr inbounds nuw i8, ptr %18, i64 8 %88 = load i32, ptr %87, align 8 %89 = and i32 %88, 512 %.not.i42.not = icmp eq i32 %89, 0 - %90 = or i32 %.02754, 2 - %spec.select41 = select i1 %.2, i32 %90, i32 %.02754 - %.229 = select i1 %.not.i42.not, i32 %.02754, i32 %spec.select41 - %91 = load i32, ptr %11, align 8 - %92 = and i32 %91, 32 - %.not38 = icmp eq i32 %92, 0 - %93 = getelementptr inbounds nuw i8, ptr %18, i64 72 - %.sink65.in = select i1 %.not38, ptr %19, ptr %93 + %90 = zext nneg i8 %.2 to i32 + %spec.select41 = shl nuw nsw i32 %90, 1 + %.229 = select i1 %.not.i42.not, i32 0, i32 %spec.select41 + %91 = or i32 %91, %.02754 + %92 = load i32, ptr %11, align 8 + %.not38 = and i32 %92, 32 + %93 = icmp eq i32 %.not38, 0 + %.sink65.in = getelementptr inbounds nuw i8, ptr %18, i64 72 + %.sink65.in = select i1 %.not38, ptr %19, ptr %94 %.sink65 = load ptr, ptr %.sink65.in, align 8 - %94 = load ptr, ptr %3, align 8 - call void %.sink65(ptr noundef nonnull %12, ptr noundef %94, i64 noundef %.247, i32 noundef %.229) #25 %95 = load ptr, ptr %3, align 8 - %.not39 = icmp eq ptr %95, null - br i1 %.not39, label %97, label %96 + call void %.sink65(ptr noundef nonnull %12, ptr noundef %95, i64 noundef %.247, i32 noundef %91) #25 + %96 = load ptr, ptr %3, align 8 + %.not39 = icmp eq ptr %96, null + br i1 %.not39, label %98, label %97 96: ; preds = %86 call void @slurm_bit_free(ptr noundef nonnull %3) #25 @@ -18421,7 +18422,7 @@ _accumulate_job_gres_alloc.exit: ; preds = %74, %76, %79 98: ; preds = %15, %97 %99 = phi i32 [ %.pre60, %97 ], [ %16, %15 ] %.128 = phi i32 [ %.229, %97 ], [ %.02754, %15 ] - %.1 = phi i1 [ %.2, %97 ], [ %.02655, %15 ] + %.1 = phi i8 [ %.2, %97 ], [ %.02655, %15 ] %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %100 = sext i32 %99 to i64 %101 = icmp slt i64 %indvars.iv.next, %100 @@ -23488,7 +23489,7 @@ define void @gres_g_step_set_env(ptr noundef %0) local_unnamed_addr #2 { 10: ; preds = %.lr.ph, %65 %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %65 ] - %.02347 = phi i1 [ false, %.lr.ph ], [ %.1, %65 ] + %.02347 = phi i8 [ 0, %.lr.ph ], [ %.1, %65 ] %.02446 = phi i32 [ 0, %.lr.ph ], [ %.125, %65 ] %11 = load ptr, ptr @gres_context, align 8 %12 = getelementptr inbounds nuw %struct.slurm_gres_context, ptr %11, i64 %indvars.iv @@ -23513,7 +23514,7 @@ define void @gres_g_step_set_env(ptr noundef %0) local_unnamed_addr #2 { .outer: ; preds = %_accumulate_step_gres_alloc.exit, %18 %.243.ph = phi i64 [ %.4, %_accumulate_step_gres_alloc.exit ], [ 0, %18 ] - %.2.ph = phi i1 [ %spec.select, %_accumulate_step_gres_alloc.exit ], [ %.02347, %18 ] + %.2.ph = phi i8 [ %spec.select, %_accumulate_step_gres_alloc.exit ], [ %.02347, %18 ] br label %21 21: ; preds = %.outer, %23 @@ -23586,7 +23587,7 @@ _accumulate_step_gres_alloc.exit: ; preds = %46, %49, %31 %52 = load i32, ptr %20, align 8 %53 = load i32, ptr @gpu_plugin_id, align 4 %54 = icmp eq i32 %52, %53 - %spec.select = select i1 %54, i1 true, i1 %.2.ph + %spec.select = select i1 %54, i8 1, i8 %.2.ph br label %.outer, !llvm.loop !224 55: ; preds = %21 @@ -23595,15 +23596,16 @@ _accumulate_step_gres_alloc.exit: ; preds = %46, %49, %31 %57 = load i32, ptr %56, align 8 %58 = and i32 %57, 512 %.not.i39.not = icmp eq i32 %58, 0 - %59 = or i32 %.02446, 2 - %spec.select38 = select i1 %.2.ph, i32 %59, i32 %.02446 - %.226 = select i1 %.not.i39.not, i32 %.02446, i32 %spec.select38 - %60 = load ptr, ptr %13, align 8 - %61 = load ptr, ptr %2, align 8 - call void %60(ptr noundef nonnull %7, ptr noundef %61, i64 noundef %.243.ph, i32 noundef %.226) #25 + %59 = zext nneg i8 %.2.ph to i32 + %spec.select38 = shl nuw nsw i32 %59, 1 + %.226 = select i1 %.not.i39.not, i32 0, i32 %spec.select38 + %60 = or i32 %60, %.02446 + %61 = load ptr, ptr %13, align 8 %62 = load ptr, ptr %2, align 8 - %.not36 = icmp eq ptr %62, null - br i1 %.not36, label %64, label %63 + call void %61(ptr noundef nonnull %7, ptr noundef %62, i64 noundef %.243.ph, i32 noundef %60) #25 + %63 = load ptr, ptr %2, align 8 + %.not36 = icmp eq ptr %63, null + br i1 %.not36, label %65, label %64 63: ; preds = %55 call void @slurm_bit_free(ptr noundef nonnull %2) #25 @@ -23615,7 +23617,7 @@ _accumulate_step_gres_alloc.exit: ; preds = %46, %49, %31 65: ; preds = %10, %64, %17 %.125 = phi i32 [ %.226, %64 ], [ %.02446, %17 ], [ %.02446, %10 ] - %.1 = phi i1 [ %.2.ph, %64 ], [ %.02347, %17 ], [ %.02347, %10 ] + %.1 = phi i8 [ %.2.ph, %64 ], [ %.02347, %17 ], [ %.02347, %10 ] %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %66 = load i32, ptr @gres_context_cnt, align 4 %67 = sext i32 %66 to i64 diff --git a/bench/wasmtime-rs/optimized/3gnma2m1zwm5wpa3.ll b/bench/wasmtime-rs/optimized/3gnma2m1zwm5wpa3.ll index d4fa9d866ff..159590d239c 100644 --- a/bench/wasmtime-rs/optimized/3gnma2m1zwm5wpa3.ll +++ b/bench/wasmtime-rs/optimized/3gnma2m1zwm5wpa3.ll @@ -8655,12 +8655,11 @@ default.unreachable.i: ; preds = %208 %235 = getelementptr inbounds nuw i8, ptr %1, i64 37 %236 = load i8, ptr %235, align 1, !range !27, !noundef !4 %.3239 = or disjoint i8 %.2174238, %236 - %.3 = zext nneg i8 %.3239 to i16 %237 = getelementptr inbounds nuw i8, ptr %1, i64 36 %238 = load i8, ptr %237, align 4, !range !27, !noundef !4 - %239 = trunc nuw i8 %238 to i1 - %240 = or disjoint i16 %.3, 4 - %.4 = select i1 %239, i16 %240, i16 %.3 + %239 = shl nuw nsw i8 %238, 2 + %240 = or disjoint i8 %.3239, %239 + %.4 = zext nneg i8 %240 to i16 br label %21 241: ; preds = %.noexc98, %205 diff --git a/bench/wasmtime-rs/optimized/4aijogcjfl814gfb.ll b/bench/wasmtime-rs/optimized/4aijogcjfl814gfb.ll index c139622efc7..a9acc39af21 100644 --- a/bench/wasmtime-rs/optimized/4aijogcjfl814gfb.ll +++ b/bench/wasmtime-rs/optimized/4aijogcjfl814gfb.ll @@ -17605,16 +17605,15 @@ default.unreachable.i.i: ; preds = %335 %361 = and i8 %360, 16 %362 = getelementptr inbounds nuw i8, ptr %1, i64 93 %363 = load i8, ptr %362, align 1, !range !117, !noalias !2013, !noundef !11 - %.1173237.i = or disjoint i8 %359, %363 - %.2174238.i = or disjoint i8 %.1173237.i, %357 - %.3239.i = or disjoint i8 %.2174238.i, %361 - %.3.i = zext nneg i8 %.3239.i to i16 %364 = getelementptr inbounds nuw i8, ptr %1, i64 92 %365 = load i8, ptr %364, align 4, !range !117, !noalias !2013, !noundef !11 - %366 = trunc nuw i8 %365 to i1 - %367 = or disjoint i16 %.3.i, 4 - %.4.i = select i1 %366, i16 %367, i16 %.3.i - br label %372 + %366 = shl nuw nsw i8 %365, 2 + %367 = or disjoint i8 %359, %363 + %.4.i = or disjoint i8 %367, %357 + %.2174238.i = or disjoint i8 %.4.i, %361 + %.4240.i = or disjoint i8 %.2174238.i, %366 + %.4.i = zext nneg i8 %.4240.i to i16 + br label %371 368: ; preds = %332, %.noexc98.i %.0.i.i.i96.i = phi ptr [ %334, %332 ], [ %331, %.noexc98.i ] diff --git a/bench/wasmtime-rs/optimized/5lt5r4zkd9qrbog.ll b/bench/wasmtime-rs/optimized/5lt5r4zkd9qrbog.ll index bdc53dda898..91ff33b615a 100644 --- a/bench/wasmtime-rs/optimized/5lt5r4zkd9qrbog.ll +++ b/bench/wasmtime-rs/optimized/5lt5r4zkd9qrbog.ll @@ -5508,15 +5508,14 @@ define hidden void @"_ZN22cranelift_codegen_meta8gen_inst20gen_type_constraints2 190: ; preds = %169 %191 = load i8, ptr %22, align 1, !range !6, !noundef !3 - %192 = trunc nuw i8 %191 to i1 - %193 = or disjoint i64 %170, 8 - %spec.select = select i1 %192, i64 %193, i64 %170 - %194 = load i8, ptr %21, align 1, !range !6, !noundef !3 - %195 = trunc nuw i8 %194 to i1 - %196 = or disjoint i64 %spec.select, 16 - %197 = select i1 %195, i64 %196, i64 %spec.select - %198 = shl nuw nsw i64 %172, 5 - %199 = or disjoint i64 %197, %198 + %192 = shl nuw nsw i8 %191, 3 + %193 = load i8, ptr %21, align 1, !range !6, !noundef !3 + %spec.select = shl nuw nsw i8 %193, 4 + %194 = or disjoint i8 %192, %spec.select + %195 = zext nneg i8 %194 to i64 + %196 = shl nuw nsw i64 %172, 5 + %197 = or disjoint i64 %196, %196 + %198 = or disjoint i64 %197, %170 store i64 %199, ptr %5, align 8 invoke void @_ZN22cranelift_codegen_meta6srcgen9Formatter4line17ha2341ca5e7893398E(ptr align 8 %1, ptr nonnull align 1 @anon.3a4e41e0094de0b8ba6604e391603d5d.226, i64 19) to label %200 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit diff --git a/bench/z3/optimized/sat_aig_cuts.ll b/bench/z3/optimized/sat_aig_cuts.ll index 5622cf54cc9..3740f3807ef 100644 --- a/bench/z3/optimized/sat_aig_cuts.ll +++ b/bench/z3/optimized/sat_aig_cuts.ll @@ -7364,6 +7364,7 @@ for.body145: ; preds = %for.cond143.prehead %i142.0312 = phi i32 [ 0, %for.cond143.preheader ], [ %inc179, %_ZNKSt8functionIFvRK7svectorIN3sat7literalEjEEEclES5_.exit209 ] %70 = load i32, ptr %m_size.i164, align 8 %71 = trunc i32 %70 to i8 + %frombool = and i8 %71, 1 %72 = load ptr, ptr %m_clause, align 8 %tobool.not.i167 = icmp eq ptr %72, null br i1 %tobool.not.i167, label %_ZN6vectorIN3sat7literalELb0EjE5resetEv.exit170, label %if.then.i168 @@ -7381,7 +7382,7 @@ _ZN6vectorIN3sat7literalELb0EjE5resetEv.exit170: ; preds = %for.body145, %if.th for.body152: ; preds = %_ZN6vectorIN3sat7literalELb0EjE5resetEv.exit170, %_ZN6vectorIN3sat7literalELb0EjE9push_backERKS1_.exit189 %j.0311 = phi i32 [ %inc167, %_ZN6vectorIN3sat7literalELb0EjE9push_backERKS1_.exit189 ], [ 0, %_ZN6vectorIN3sat7literalELb0EjE5resetEv.exit170 ] - %parity.0310 = phi i8 [ %parity.1, %_ZN6vectorIN3sat7literalELb0EjE9push_backERKS1_.exit189 ], [ %71, %_ZN6vectorIN3sat7literalELb0EjE5resetEv.exit170 ] + %parity.0310 = phi i8 [ %parity.1, %_ZN6vectorIN3sat7literalELb0EjE9push_backERKS1_.exit189 ], [ %frombool, %_ZN6vectorIN3sat7literalELb0EjE5resetEv.exit170 ] %74 = load i32, ptr %m_offset.i172, align 4 %add155 = add i32 %74, %j.0311 %75 = load ptr, ptr %m_literals153, align 8 @@ -7508,11 +7509,10 @@ for.end168.loopexit: ; preds = %_ZN6vectorIN3sat7li for.end168: ; preds = %for.end168.loopexit, %_ZN6vectorIN3sat7literalELb0EjE5resetEv.exit170 %87 = phi i32 [ %69, %_ZN6vectorIN3sat7literalELb0EjE5resetEv.exit170 ], [ %.pre322, %for.end168.loopexit ] - %parity.0.lcssa = phi i8 [ %71, %_ZN6vectorIN3sat7literalELb0EjE5resetEv.exit170 ], [ %parity.1, %for.end168.loopexit ] - %88 = and i8 %parity.0.lcssa, 1 - %89 = xor i8 %88, 1 - %xor.i190 = zext nneg i8 %89 to i32 - %storemerge44 = xor i32 %87, %xor.i190 + %parity.0.lcssa = phi i8 [ %frombool, %_ZN6vectorIN3sat7literalELb0EjE5resetEv.exit170 ], [ %parity.1, %for.end168.loopexit ] + %88 = xor i8 %parity.0.lcssa, 1 + %89 = zext nneg i8 %88 to i32 + %xor.i190 = xor i32 %87, %89 %90 = load ptr, ptr %m_clause, align 8 %cmp.i191 = icmp eq ptr %90, null br i1 %cmp.i191, label %if.then.i200, label %lor.lhs.false.i192 diff --git a/bench/z3/optimized/theory_array_base.ll b/bench/z3/optimized/theory_array_base.ll index 5dd4b88cf6e..03cd5281d9f 100644 --- a/bench/z3/optimized/theory_array_base.ll +++ b/bench/z3/optimized/theory_array_base.ll @@ -5256,11 +5256,10 @@ for.end: ; preds = %for.inc, %for.cond1 %m_root.i57 = getelementptr inbounds nuw i8, ptr %25, i64 8 %26 = load ptr, ptr %m_root.i57, align 8 %cmp32 = icmp eq ptr %26, %2 - %27 = and i8 %is_value.0107, 1 - %28 = xor i8 %27, 1 - %inc36 = zext nneg i8 %28 to i32 + %27 = xor i8 %is_value.0107, 1 + %28 = zext nneg i8 %27 to i32 %is_value.1 = select i1 %cmp32, i8 1, i8 %is_value.0107 - %spec.select43 = select i1 %cmp32, i32 %inc36, i32 0 + %spec.select43 = select i1 %cmp32, i32 %28, i32 0 %num_roles.4 = add nsw i32 %spec.select43, %num_roles.2.lcssa %cmp38 = icmp sgt i32 %num_roles.4, 1 br i1 %cmp38, label %return, label %for.inc89 @@ -5327,12 +5326,11 @@ if.then74: ; preds = %_ZNK3smt17theory_ar %m_root.i83 = getelementptr inbounds nuw i8, ptr %41, i64 8 %42 = load ptr, ptr %m_root.i83, align 8 %cmp77 = icmp eq ptr %42, %2 - %43 = and i8 %is_value.0107, 1 - %44 = xor i8 %43, 1 - %inc81 = zext nneg i8 %44 to i32 + %43 = xor i8 %is_value.0107, 1 + %44 = zext nneg i8 %43 to i32 %is_value.2 = select i1 %cmp77, i8 1, i8 %is_value.0107 - %spec.select49 = select i1 %cmp77, i32 %inc81, i32 0 - %num_roles.8 = add nsw i32 %spec.select49, %num_roles.0108 + %spec.select49 = select i1 %cmp77, i32 %44, i32 0 + %num_roles.8 = add i32 %spec.select49, %num_roles.0108 %cmp83 = icmp sgt i32 %num_roles.8, 1 br i1 %cmp83, label %return, label %for.inc89 diff --git a/bench/zed-rs/optimized/2bjv2ryetyqaw0uwjf53eylb3.ll b/bench/zed-rs/optimized/2bjv2ryetyqaw0uwjf53eylb3.ll index 90334a5320c..3caeb536407 100644 --- a/bench/zed-rs/optimized/2bjv2ryetyqaw0uwjf53eylb3.ll +++ b/bench/zed-rs/optimized/2bjv2ryetyqaw0uwjf53eylb3.ll @@ -37629,19 +37629,16 @@ define noundef range(i8 0, 16) i8 @_ZN6search13SearchOptions13from_settings17h6f %2 = load i8, ptr %0, align 1, !range !40, !noundef !4 %3 = getelementptr inbounds nuw i8, ptr %0, i64 1 %4 = load i8, ptr %3, align 1, !range !40, !noundef !4 - %5 = trunc nuw i8 %4 to i1 - %6 = or disjoint i8 %2, 2 - %.sroa.0.1 = select i1 %5, i8 %6, i8 %2 - %7 = getelementptr inbounds nuw i8, ptr %0, i64 2 - %8 = load i8, ptr %7, align 1, !range !40, !noundef !4 - %9 = trunc nuw i8 %8 to i1 - %10 = or disjoint i8 %.sroa.0.1, 4 - %.sroa.0.2 = select i1 %9, i8 %10, i8 %.sroa.0.1 - %11 = getelementptr inbounds nuw i8, ptr %0, i64 3 - %12 = load i8, ptr %11, align 1, !range !40, !noundef !4 - %13 = trunc nuw i8 %12 to i1 - %14 = or disjoint i8 %.sroa.0.2, 8 - %.sroa.0.3 = select i1 %13, i8 %14, i8 %.sroa.0.2 + %5 = shl nuw nsw i8 %4, 1 + %6 = or disjoint i8 %5, %2 + %.sroa.0.1 = getelementptr inbounds nuw i8, ptr %0, i64 2 + %7 = load i8, ptr %6, align 1, !range !40, !noundef !4 + %8 = shl nuw nsw i8 %7, 2 + %9 = or disjoint i8 %6, %8 + %10 = getelementptr inbounds nuw i8, ptr %0, i64 3 + %.sroa.0.2 = load i8, ptr %9, align 1, !range !40, !noundef !4 + %11 = shl nuw nsw i8 %10, 3 + %12 = or disjoint i8 %9, %11 ret i8 %.sroa.0.3 } diff --git a/bench/zed-rs/optimized/5kbsfw3jcmbcslmu1o5kx13w3.ll b/bench/zed-rs/optimized/5kbsfw3jcmbcslmu1o5kx13w3.ll index 7a6ba8009ad..49fe5a13aed 100644 --- a/bench/zed-rs/optimized/5kbsfw3jcmbcslmu1o5kx13w3.ll +++ b/bench/zed-rs/optimized/5kbsfw3jcmbcslmu1o5kx13w3.ll @@ -18329,25 +18329,22 @@ define void @_ZN6search13buffer_search15BufferSearchBar3new17h5787f34ab107fd81E( to label %"_ZN4core3ptr54drop_in_place$LT$gpui..elements..div..ScrollHandle$GT$17hf8afb3909f9f4069E.exit11" unwind label %83 55: ; preds = %51 - %56 = trunc nuw i8 %40 to i1 - %57 = trunc nuw i8 %38 to i1 - %58 = trunc nuw i8 %36 to i1 - %59 = or disjoint i8 %34, 2 - %.sroa.0.1.i = select i1 %58, i8 %59, i8 %34 - %60 = or disjoint i8 %.sroa.0.1.i, 4 - %.sroa.0.2.i = select i1 %57, i8 %60, i8 %.sroa.0.1.i - %61 = or disjoint i8 %.sroa.0.2.i, 8 - %.sroa.0.3.i = select i1 %56, i8 %61, i8 %.sroa.0.2.i - %62 = getelementptr inbounds nuw i8, ptr %0, i64 120 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %62, ptr noundef nonnull align 8 dereferenceable(32) %11, i64 32, i1 false) - %63 = getelementptr inbounds nuw i8, ptr %0, i64 260 - store i8 0, ptr %63, align 4 - %64 = getelementptr inbounds nuw i8, ptr %0, i64 152 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %64, ptr noundef nonnull align 8 dereferenceable(32) %10, i64 32, i1 false) - %65 = getelementptr inbounds nuw i8, ptr %0, i64 261 - store i8 0, ptr %65, align 1 - %66 = getelementptr inbounds nuw i8, ptr %0, i64 232 - store ptr null, ptr %66, align 8 + %56 = shl nuw nsw i8 %36, 1 + %57 = or disjoint i8 %56, %34 + %58 = shl nuw nsw i8 %38, 2 + %59 = or disjoint i8 %18, %57 + %.sroa.0.1.i = shl nuw nsw i8 %40, 3 + %60 = or disjoint i8 %.sroa.0.2.i, %58 + %.sroa.0.2.i = getelementptr inbounds nuw i8, ptr %0, i64 120 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %.sroa.0.2.i, ptr noundef nonnull align 8 dereferenceable(32) %11, i64 32, i1 false) + %.sroa.0.3.i = getelementptr inbounds nuw i8, ptr %0, i64 260 + store i8 0, ptr %60, align 4 + %61 = getelementptr inbounds nuw i8, ptr %0, i64 152 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %61, ptr noundef nonnull align 8 dereferenceable(32) %10, i64 32, i1 false) + %62 = getelementptr inbounds nuw i8, ptr %0, i64 261 + store i8 0, ptr %62, align 1 + %63 = getelementptr inbounds nuw i8, ptr %0, i64 232 + store ptr null, ptr %63, align 8 store i64 0, ptr %0, align 8 %67 = getelementptr inbounds nuw i8, ptr %0, i64 16 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %67, ptr noundef nonnull align 8 dereferenceable(24) %9, i64 24, i1 false) @@ -19162,7 +19159,7 @@ define noundef zeroext i1 @_ZN6search13buffer_search15BufferSearchBar4show17h9c2 %6 = getelementptr inbounds nuw i8, ptr %0, i64 232 %7 = load ptr, ptr %6, align 8, !noundef !4 %8 = icmp ne ptr %7, null - br i1 %8, label %9, label %31 + br i1 %8, label %9, label %28 9: ; preds = %2 %10 = tail call noundef align 8 dereferenceable(1176) ptr @"_ZN71_$LT$gpui..window..WindowContext$u20$as$u20$core..ops..deref..Deref$GT$5deref17hc63f9d594dbf0052E"(ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %1) @@ -19175,37 +19172,34 @@ define noundef zeroext i1 @_ZN6search13buffer_search15BufferSearchBar4show17h9c2 %14 = load i8, ptr %13, align 2, !range !208, !alias.scope !3799, !noundef !4 %15 = getelementptr inbounds nuw i8, ptr %12, i64 35 %16 = load i8, ptr %15, align 1, !range !208, !alias.scope !3799, !noundef !4 - %17 = trunc nuw i8 %16 to i1 - %18 = or disjoint i8 %14, 2 - %.sroa.0.1.i = select i1 %17, i8 %18, i8 %14 - %19 = getelementptr inbounds nuw i8, ptr %12, i64 36 - %20 = load i8, ptr %19, align 4, !range !208, !alias.scope !3799, !noundef !4 - %21 = trunc nuw i8 %20 to i1 - %22 = or disjoint i8 %.sroa.0.1.i, 4 - %.sroa.0.2.i = select i1 %21, i8 %22, i8 %.sroa.0.1.i - %23 = getelementptr inbounds nuw i8, ptr %12, i64 37 - %24 = load i8, ptr %23, align 1, !range !208, !alias.scope !3799, !noundef !4 - %25 = trunc nuw i8 %24 to i1 - %26 = or disjoint i8 %.sroa.0.2.i, 8 - %.sroa.0.3.i = select i1 %25, i8 %26, i8 %.sroa.0.2.i - %27 = getelementptr inbounds nuw i8, ptr %0, i64 268 - store i8 %.sroa.0.3.i, ptr %27, align 4 - %28 = getelementptr inbounds nuw i8, ptr %0, i64 263 - %29 = load i8, ptr %28, align 1, !range !208, !noundef !4 - %30 = trunc nuw i8 %29 to i1 - br i1 %30, label %73, label %32 - -31: ; preds = %2, %"_ZN4gpui6window20ViewContext$LT$V$GT$4emit17hbe09d781f0d147e9E.exit" + %17 = shl nuw nsw i8 %16, 1 + %18 = or disjoint i8 %17, %14 + %.sroa.0.1.i = getelementptr inbounds nuw i8, ptr %12, i64 36 + %19 = load i8, ptr %18, align 4, !range !208, !alias.scope !3799, !noundef !4 + %20 = shl nuw nsw i8 %19, 2 + %21 = or disjoint i8 %18, %20 + %.sroa.0.2.i = getelementptr inbounds nuw i8, ptr %12, i64 37 + %.sroa.0.2.i = load i8, ptr %21, align 1, !range !208, !alias.scope !3799, !noundef !4 + %23 = shl nuw nsw i8 %22, 3 + %24 = or disjoint i8 %21, %23 + %25 = getelementptr inbounds nuw i8, ptr %0, i64 268 + store i8 %.sroa.0.3.i, ptr %24, align 4 + %.sroa.0.3.i = getelementptr inbounds nuw i8, ptr %0, i64 263 + %27 = load i8, ptr %25, align 1, !range !208, !noundef !4 + %27 = trunc nuw i8 %27 to i1 + br i1 %27, label %70, label %29 + +28:; preds = %2, %"_ZN4gpui6window20ViewContext$LT$V$GT$4emit17hbe09d781f0d147e9E.exit" ret i1 %8 32: ; preds = %76, %73, %9 - store i8 0, ptr %28, align 1 + store i8 0, ptr %25, align 1 %33 = load ptr, ptr %6, align 8, !nonnull !4, !align !973, !noundef !4 %34 = getelementptr inbounds nuw i8, ptr %0, i64 240 %35 = load ptr, ptr %34, align 8, !nonnull !4, !align !5, !noundef !4 %36 = getelementptr inbounds nuw i8, ptr %35, i64 464 %37 = load ptr, ptr %36, align 8, !invariant.load !4, !nonnull !4 - tail call void %37(ptr noundef nonnull align 1 %33, i1 noundef zeroext true, ptr noalias noundef nonnull align 8 dereferenceable(16) %1) + tail call void %34(ptr noundef nonnull align 1 %33, i1 noundef zeroext true, ptr noalias noundef nonnull align 8 dereferenceable(16) %1) %38 = getelementptr inbounds nuw i8, ptr %1, i64 16 %39 = load ptr, ptr %38, align 8, !nonnull !4, !align !5, !noundef !4 %40 = load i32, ptr %39, align 8, !range !435, !noundef !4 @@ -19277,7 +19271,7 @@ define noundef zeroext i1 @_ZN6search13buffer_search15BufferSearchBar4show17h9c2 store i32 1, ptr %3, align 8, !noalias !3805 call void @_ZN4gpui3app10AppContext11push_effect17h5902c945acf2ad0cE(ptr noalias noundef nonnull align 8 dereferenceable(1176) %62, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(48) %3), !noalias !3805 call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %3), !noalias !3805 - br label %31 + br label %28 73: ; preds = %9 %74 = getelementptr inbounds nuw i8, ptr %0, i64 267 diff --git a/bench/zed-rs/optimized/dhxbdv9bz516ezsc4bp1mh72v.ll b/bench/zed-rs/optimized/dhxbdv9bz516ezsc4bp1mh72v.ll index ec532836afb..093af8a6a5e 100644 --- a/bench/zed-rs/optimized/dhxbdv9bz516ezsc4bp1mh72v.ll +++ b/bench/zed-rs/optimized/dhxbdv9bz516ezsc4bp1mh72v.ll @@ -15790,11 +15790,11 @@ _ZN4core4iter6traits8iterator8Iterator4fold17h53d37973a4506e24E.exit: ; preds = %1106 = load ptr, ptr %64, align 8, !nonnull !4, !align !140, !noundef !4 %1107 = getelementptr inbounds nuw i8, ptr %1106, i64 80 %1108 = load i8, ptr %1107, align 8, !range !256, !noundef !4 - %1109 = trunc nuw i8 %1108 to i1 - %1110 = shl i64 %.sroa.0142.0, 1 - %1111 = add i64 %.sroa.0.0.i384, %1110 - %1112 = add i64 %1111, 2 - %spec.select.i387 = select i1 %1109, i64 %1112, i64 %1111 + %1109 = shl i64 %.sroa.0142.0, 1 + %1110 = add i64 %.sroa.0.0.i384, %1109 + %1111 = shl nuw nsw i8 %1108, 1 + %1112 = zext nneg i8 %1111 to i64 + %spec.select.i387 = add i64 %1110, %1112 call void @llvm.experimental.noalias.scope.decl(metadata !3019) %1113 = load i64, ptr %52, align 8, !range !35, !alias.scope !3019, !noundef !4 %1114 = icmp eq i64 %1113, -9223372036854775808 diff --git a/scripts/setup_pre_commit_patch.sh b/scripts/setup_pre_commit_patch.sh index c5409e09ef4..42b4e27b4bd 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/127390 export COMPTIME_MODE=0 # Please rebase manually