diff --git a/bench/abseil-cpp/optimized/charconv_parse.ll b/bench/abseil-cpp/optimized/charconv_parse.ll index 9015f551ba6..72e982ee7b6 100644 --- a/bench/abseil-cpp/optimized/charconv_parse.ll +++ b/bench/abseil-cpp/optimized/charconv_parse.ll @@ -989,9 +989,8 @@ _ZN4absl12_GLOBAL__N_113ConsumeDigitsILi16EmEEiPKcS3_iPT0_Pb.exit140: ; preds = br i1 %128, label %167, label %129 129: ; preds = %126, %122 - %130 = and i8 %.0146, 1 - %131 = zext nneg i8 %130 to i64 - %spec.select157 = or i64 %.0149, %131 + %130 = zext nneg i8 %.0146 to i64 + %131 = or i64 %.0149, %130 store i64 %spec.select157, ptr %0, align 8, !tbaa !21 %132 = getelementptr inbounds nuw i8, ptr %0, i64 12 store i32 0, ptr %132, align 4, !tbaa !22 diff --git a/bench/assimp/optimized/BaseImporter.ll b/bench/assimp/optimized/BaseImporter.ll index f436e2bd015..5e418e20df8 100644 --- a/bench/assimp/optimized/BaseImporter.ll +++ b/bench/assimp/optimized/BaseImporter.ll @@ -4879,9 +4879,9 @@ define void @_ZN6Assimp11BatchLoader7LoadAllEv(ptr noundef nonnull readonly alig %7 = load i32, ptr %6, align 8 %8 = getelementptr inbounds nuw i8, ptr %4, i64 76 %9 = load i8, ptr %8, align 4, !range !60, !noundef !61 - %10 = trunc nuw i8 %9 to i1 - %11 = or i32 %7, 1024 - %spec.select = select i1 %10, i32 %11, i32 %7 + %10 = zext nneg i8 %9 to i32 + %11 = shl nuw nsw i32 %10, 10 + %spec.select = or i32 %11, %7 %12 = getelementptr inbounds nuw i8, ptr %4, i64 8 %13 = load ptr, ptr %12, align 8 %14 = load ptr, ptr %13, align 8 diff --git a/bench/boost/optimized/approximately_equals.ll b/bench/boost/optimized/approximately_equals.ll index 6833f5fe74b..0e350ede969 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/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/clap-rs/optimized/5651dp9k16h53y8x.ll b/bench/clap-rs/optimized/5651dp9k16h53y8x.ll index 66412410226..12dda1eb1bd 100644 --- a/bench/clap-rs/optimized/5651dp9k16h53y8x.ll +++ b/bench/clap-rs/optimized/5651dp9k16h53y8x.ll @@ -5155,7 +5155,7 @@ define hidden noundef i64 @_ZN12clap_builder7builder10styled_str9StyledStr13disp 56: ; preds = %53 %spec.select.i = and i8 %.018.i, 1 - %57 = xor i8 %spec.select.i, 1 + %57 = xor i8 %.018.i, 1 %58 = zext nneg i8 %57 to i64 %spec.select36.i = add i64 %.0.ph.i.ph, %58 br label %.outer.i.outer @@ -8883,7 +8883,7 @@ define hidden noundef i64 @_ZN12clap_builder6output8textwrap4core13display_width 49: ; preds = %46 %spec.select = and i8 %.018, 1 - %50 = xor i8 %spec.select, 1 + %50 = xor i8 %.018, 1 %51 = zext nneg i8 %50 to i64 %spec.select36 = add i64 %.0.ph.ph, %51 br label %.outer.outer 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..48221e33132 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 nsw 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/duckdb/optimized/re2.ll b/bench/duckdb/optimized/re2.ll index 64c24de3555..0c1bbefd2ca 100644 --- a/bench/duckdb/optimized/re2.ll +++ b/bench/duckdb/optimized/re2.ll @@ -1367,24 +1367,24 @@ _ZN10LogMessageD2Ev.exit: ; preds = %_ZNKSt7__cxx1112bas %spec.select = select i1 %36, i32 %.0, i32 %37 %38 = getelementptr inbounds nuw i8, ptr %0, i64 15 %39 = load i8, ptr %38, align 1, !tbaa !76, !range !52, !noundef !53 - %40 = trunc nuw i8 %39 to i1 - %41 = or disjoint i32 %spec.select, 2 - %.2 = select i1 %40, i32 %41, i32 %spec.select + %40 = shl nuw nsw i8 %39, 1 + %41 = zext nneg i8 %40 to i32 + %.2 = or disjoint i32 %spec.select, %41 %42 = getelementptr inbounds nuw i8, ptr %0, i64 16 %43 = load i8, ptr %42, align 8, !tbaa !77, !range !52, !noundef !53 - %44 = trunc nuw i8 %43 to i1 - %45 = or i32 %.2, 2048 - %.3 = select i1 %44, i32 %45, i32 %.2 + %44 = zext nneg i8 %43 to i32 + %45 = shl nuw nsw i32 %44, 11 + %.3 = or disjoint i32 %.2, %45 %46 = getelementptr inbounds nuw i8, ptr %0, i64 17 %47 = load i8, ptr %46, align 1, !tbaa !78, !range !52, !noundef !53 - %48 = trunc nuw i8 %47 to i1 - %49 = or i32 %.3, 8 - %.4 = select i1 %48, i32 %49, i32 %.3 + %48 = shl nuw nsw i8 %47, 3 + %49 = zext nneg i8 %48 to i32 + %.4 = or disjoint i32 %.3, %49 %50 = getelementptr inbounds nuw i8, ptr %0, i64 18 %51 = load i8, ptr %50, align 2, !tbaa !79, !range !52, !noundef !53 - %52 = trunc nuw i8 %51 to i1 - %53 = or i32 %.4, 4096 - %.5 = select i1 %52, i32 %53, i32 %.4 + %52 = zext nneg i8 %51 to i32 + %53 = shl nuw nsw i32 %52, 12 + %.5 = or i32 %.4, %53 %54 = getelementptr inbounds nuw i8, ptr %0, i64 19 %55 = load i8, ptr %54, align 1, !tbaa !16, !range !52, !noundef !53 %56 = xor i8 %55, 1 @@ -1392,19 +1392,19 @@ _ZN10LogMessageD2Ev.exit: ; preds = %_ZNKSt7__cxx1112bas %.6 = or i32 %.5, %not. %57 = getelementptr inbounds nuw i8, ptr %0, i64 20 %58 = load i8, ptr %57, align 4, !tbaa !17, !range !52, !noundef !53 - %59 = trunc nuw i8 %58 to i1 - %60 = or i32 %.6, 128 - %.7 = select i1 %59, i32 %60, i32 %.6 + %59 = shl nuw i8 %58, 7 + %60 = zext i8 %59 to i32 + %.7 = or i32 %.6, %61 %61 = getelementptr inbounds nuw i8, ptr %0, i64 21 %62 = load i8, ptr %61, align 1, !tbaa !18, !range !52, !noundef !53 - %63 = trunc nuw i8 %62 to i1 - %64 = or i32 %.7, 256 - %.8 = select i1 %63, i32 %64, i32 %.7 + %63 = zext nneg i8 %62 to i32 + %64 = shl nuw nsw i32 %64, 8 + %.8 = or i32 %.7, %65 %65 = getelementptr inbounds nuw i8, ptr %0, i64 22 %66 = load i8, ptr %65, align 2, !tbaa !19, !range !52, !noundef !53 - %67 = trunc nuw i8 %66 to i1 - %68 = or i32 %.8, 16 - %.9 = select i1 %67, i32 %68, i32 %.8 + %67 = shl nuw nsw i8 %66, 4 + %68 = zext nneg i8 %67 to i32 + %.9 = or i32 %.8, %69 ret i32 %.9 } diff --git a/bench/duckdb/optimized/ub_duckdb_storage.ll b/bench/duckdb/optimized/ub_duckdb_storage.ll index efbbc28eab6..b5ee72b4543 100644 --- a/bench/duckdb/optimized/ub_duckdb_storage.ll +++ b/bench/duckdb/optimized/ub_duckdb_storage.ll @@ -46345,13 +46345,12 @@ define void @_ZN6duckdb22SingleFileBlockManager17CreateNewDatabaseEv(ptr noundef %9 = getelementptr inbounds nuw i8, ptr %0, i64 480 %10 = load i8, ptr %9, align 8, !tbaa !1748, !range !203, !noundef !204 %11 = trunc nuw i8 %10 to i1 - %.sroa.049.0.i = select i1 %11, i64 129, i64 11 %12 = getelementptr inbounds nuw i8, ptr %0, i64 481 %13 = load i8, ptr %12, align 1, !tbaa !1774, !range !203, !noundef !204 - %14 = trunc nuw i8 %13 to i1 - %15 = or disjoint i64 %.sroa.049.0.i, 4 - %spec.select66.i = select i1 %14, i64 %15, i64 %.sroa.049.0.i - %16 = or disjoint i64 %spec.select66.i, 256 + %14 = shl nuw nsw i8 %13, 2 + %15 = zext nneg i8 %14 to i64 + %spec.select66.i = select i1 %11, i64 385, i64 267 + %16 = or disjoint i64 %spec.select66.i, %15 %.sroa.10.8.insert.ext.i = select i1 %11, i64 257, i64 258 %17 = getelementptr inbounds nuw i8, ptr %0, i64 128 %18 = load ptr, ptr %17, align 8, !tbaa !1775 @@ -46517,13 +46516,12 @@ define void @_ZN6duckdb22SingleFileBlockManager20LoadExistingDatabaseEv(ptr noun %15 = getelementptr inbounds nuw i8, ptr %0, i64 480 %16 = load i8, ptr %15, align 8, !tbaa !1748, !range !203, !noundef !204 %17 = trunc nuw i8 %16 to i1 - %.sroa.049.0.i = select i1 %17, i64 129, i64 3 %18 = getelementptr inbounds nuw i8, ptr %0, i64 481 %19 = load i8, ptr %18, align 1, !tbaa !1774, !range !203, !noundef !204 - %20 = trunc nuw i8 %19 to i1 - %21 = or disjoint i64 %.sroa.049.0.i, 4 - %spec.select66.i = select i1 %20, i64 %21, i64 %.sroa.049.0.i - %22 = or disjoint i64 %spec.select66.i, 256 + %20 = shl nuw nsw i8 %19, 2 + %21 = zext nneg i8 %20 to i64 + %spec.select66.i = select i1 %17, i64 385, i64 259 + %22 = or disjoint i64 %spec.select66.i, %21 %.sroa.10.8.insert.ext.i = select i1 %17, i64 257, i64 258 %23 = getelementptr inbounds nuw i8, ptr %0, i64 128 %24 = load ptr, ptr %23, align 8, !tbaa !1775 @@ -70126,15 +70124,14 @@ define { i64, i64 } @_ZNK6duckdb22SingleFileBlockManager12GetFileFlagsEb(ptr nou %3 = getelementptr inbounds nuw i8, ptr %0, i64 480 %4 = load i8, ptr %3, align 8, !tbaa !1748, !range !203, !noundef !204 %5 = trunc nuw i8 %4 to i1 - %spec.select = select i1 %1, i64 11, i64 3 - %.sroa.049.0 = select i1 %5, i64 129, i64 %spec.select %6 = getelementptr inbounds nuw i8, ptr %0, i64 481 %7 = load i8, ptr %6, align 1, !tbaa !1774, !range !203, !noundef !204 - %8 = trunc nuw i8 %7 to i1 - %9 = or disjoint i64 %.sroa.049.0, 4 - %spec.select66 = select i1 %8, i64 %9, i64 %.sroa.049.0 - %10 = or disjoint i64 %spec.select66, 256 - %.fca.0.insert = insertvalue { i64, i64 } poison, i64 %10, 0 + %8 = shl nuw nsw i8 %7, 2 + %9 = zext nneg i8 %8 to i64 + %spec.select66 = select i1 %1, i64 267, i64 259 + %10 = select i1 %5, i64 385, i64 %spec.select66 + %.fca.0.insert = or disjoint i64 %10, %9 + %.fca.0.insert = insertvalue { i64, i64 } poison, i64 %11, 0 %.sroa.10.8.insert.ext = select i1 %5, i64 257, i64 258 %.fca.1.insert = insertvalue { i64, i64 } %.fca.0.insert, i64 %.sroa.10.8.insert.ext, 1 ret { i64, i64 } %.fca.1.insert diff --git a/bench/gromacs/optimized/kernel_gpu_ref.ll b/bench/gromacs/optimized/kernel_gpu_ref.ll index c8986ad9ecd..e7ce536fddf 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 nsw i32 %.4315421, %358 + br label %359 360: ; preds = %337, %355 %.4351 = phi i32 [ 0, %355 ], [ %.2349, %337 ] diff --git a/bench/gromacs/optimized/lincs.ll b/bench/gromacs/optimized/lincs.ll index fa2925bb0b5..2e362c0639b 100644 --- a/bench/gromacs/optimized/lincs.ll +++ b/bench/gromacs/optimized/lincs.ll @@ -459,12 +459,11 @@ define noundef nonnull ptr @_ZN3gmx10init_lincsEP8_IO_FILERK10gmx_mtop_tiNS_8Arr br i1 %.not30.i, label %._crit_edge.loopexit.i, label %.lr.ph40.i ._crit_edge.loopexit.i: ; preds = %.loopexit.i - %147 = and i8 %.3.i, 1 - %148 = zext nneg i8 %147 to i32 + %147 = zext nneg i8 %.3.i to i32 br label %._crit_edge.i ._crit_edge.i: ; preds = %._crit_edge.loopexit.i, %92 - %.047.lcssa.i = phi i32 [ 0, %92 ], [ %148, %._crit_edge.loopexit.i ] + %.047.lcssa.i = phi i32 [ 0, %92 ], [ %147, %._crit_edge.loopexit.i ] %spec.select.i = add nuw nsw i32 %.047.lcssa.i, %.043.i %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 @@ -654,7 +653,7 @@ _ZN3gmxL36more_than_two_sequential_constraintsERKSt5arrayI15InteractionListLm94E br i1 %.not.i.i, label %_ZNSt8functionIFvlEED2Ev.exit, label %235 235: ; preds = %233 - %236 = invoke noundef zeroext i1 %234(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull align 8 dereferenceable(32) %11, i32 noundef 3) + %236 = invoke noundef zeroext i1 %233(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull align 8 dereferenceable(32) %11, i32 noundef 3) to label %_ZNSt8functionIFvlEED2Ev.exit unwind label %237 237: ; preds = %235 @@ -670,7 +669,7 @@ _ZNSt8functionIFvlEED2Ev.exit: ; preds = %233, %235 br i1 %.not.i.i103, label %_ZNSt8functionIFvOS_IFN3gmx24ObservablesReducerStatusENS0_20ReductionRequirementEEENS0_8ArrayRefIdEEEED2Ev.exit, label %241 241: ; preds = %_ZNSt8functionIFvlEED2Ev.exit - %242 = invoke noundef zeroext i1 %240(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull align 8 dereferenceable(32) %10, i32 noundef 3) + %242 = invoke noundef zeroext i1 %239(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull align 8 dereferenceable(32) %10, i32 noundef 3) to label %_ZNSt8functionIFvOS_IFN3gmx24ObservablesReducerStatusENS0_20ReductionRequirementEEENS0_8ArrayRefIdEEEED2Ev.exit unwind label %243 243: ; preds = %241 @@ -688,7 +687,7 @@ _ZNSt8functionIFvlEED2Ev.exit: ; preds = %233, %235 br i1 %.not.i.i104, label %_ZNSt8functionIFvlEED2Ev.exit105, label %249 249: ; preds = %246 - %250 = invoke noundef zeroext i1 %248(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull align 8 dereferenceable(32) %11, i32 noundef 3) + %250 = invoke noundef zeroext i1 %247(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull align 8 dereferenceable(32) %11, i32 noundef 3) to label %_ZNSt8functionIFvlEED2Ev.exit105 unwind label %251 251: ; preds = %249 @@ -704,7 +703,7 @@ _ZNSt8functionIFvlEED2Ev.exit105: ; preds = %246, %249 br i1 %.not.i.i106, label %_ZNSt8functionIFvOS_IFN3gmx24ObservablesReducerStatusENS0_20ReductionRequirementEEENS0_8ArrayRefIdEEEED2Ev.exit107, label %255 255: ; preds = %_ZNSt8functionIFvlEED2Ev.exit105 - %256 = invoke noundef zeroext i1 %254(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull align 8 dereferenceable(32) %10, i32 noundef 3) + %256 = invoke noundef zeroext i1 %253(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull align 8 dereferenceable(32) %10, i32 noundef 3) to label %_ZNSt8functionIFvOS_IFN3gmx24ObservablesReducerStatusENS0_20ReductionRequirementEEENS0_8ArrayRefIdEEEED2Ev.exit107 unwind label %257 257: ; preds = %255 diff --git a/bench/grpc/optimized/outlier_detection.ll b/bench/grpc/optimized/outlier_detection.ll index c1b85616ddc..2a3762ee656 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/libquic/optimized/json_string_value_serializer.ll b/bench/libquic/optimized/json_string_value_serializer.ll index 3004f5f9571..2f8098bf1bb 100644 --- a/bench/libquic/optimized/json_string_value_serializer.ll +++ b/bench/libquic/optimized/json_string_value_serializer.ll @@ -64,8 +64,8 @@ define noundef zeroext i1 @_ZN25JSONStringValueSerializer9SerializeERKN4base5Val 5: ; preds = %2 %6 = getelementptr inbounds nuw i8, ptr %0, i64 16 %7 = load i8, ptr %6, align 8, !tbaa !13, !range !14, !noundef !15 - %8 = trunc nuw i8 %7 to i1 - %.1.i = select i1 %8, i32 4, i32 0 + %8 = shl nuw nsw i8 %7, 2 + %.1.i = zext nneg i8 %8 to i32 %9 = tail call noundef zeroext i1 @_ZN4base10JSONWriter16WriteWithOptionsERKNS_5ValueEiPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(12) %1, i32 noundef %.1.i, ptr noundef nonnull %4) br label %_ZN25JSONStringValueSerializer17SerializeInternalERKN4base5ValueEb.exit @@ -79,20 +79,20 @@ define noundef zeroext i1 @_ZN25JSONStringValueSerializer17SerializeInternalERKN %4 = getelementptr inbounds nuw i8, ptr %0, i64 8 %5 = load ptr, ptr %4, align 8, !tbaa !6 %.not = icmp eq ptr %5, null - br i1 %.not, label %12, label %6 + br i1 %.not, label %13, label %6 6: ; preds = %3 - %spec.select = zext i1 %2 to i32 %7 = getelementptr inbounds nuw i8, ptr %0, i64 16 %8 = load i8, ptr %7, align 8, !tbaa !13, !range !14, !noundef !15 - %9 = trunc nuw i8 %8 to i1 - %10 = or disjoint i32 %spec.select, 4 - %.1 = select i1 %9, i32 %10, i32 %spec.select - %11 = tail call noundef zeroext i1 @_ZN4base10JSONWriter16WriteWithOptionsERKNS_5ValueEiPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(12) %1, i32 noundef %.1, ptr noundef nonnull %5) - br label %12 - -12: ; preds = %3, %6 - %.06 = phi i1 [ %11, %6 ], [ false, %3 ] + %9 = shl nuw nsw i8 %8, 2 + %10 = zext i1 %2 to i8 + %.1 = or disjoint i8 %9, %10 + %11 = zext nneg i8 %11 to i32 + %12 = tail call noundef zeroext i1 @_ZN4base10JSONWriter16WriteWithOptionsERKNS_5ValueEiPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(12) %1, i32 noundef %.1, ptr noundef nonnull %5) + br label %13 + +13:; preds = %3, %6 + %.06 = phi i1 [ %12, %6 ], [ false, %3 ] ret i1 %.06 } @@ -106,13 +106,14 @@ define noundef zeroext i1 @_ZN25JSONStringValueSerializer28SerializeAndOmitBinar 5: ; preds = %2 %6 = getelementptr inbounds nuw i8, ptr %0, i64 16 %7 = load i8, ptr %6, align 8, !tbaa !13, !range !14, !noundef !15 - %8 = trunc nuw i8 %7 to i1 - %.1.i = select i1 %8, i32 5, i32 1 - %9 = tail call noundef zeroext i1 @_ZN4base10JSONWriter16WriteWithOptionsERKNS_5ValueEiPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(12) %1, i32 noundef %.1.i, ptr noundef nonnull %4) + %8 = shl nuw nsw i8 %7, 2 + %.1.i = or disjoint i8 %8, 1 + %9 = zext nneg i8 %9 to i32 + %10 = tail call noundef zeroext i1 @_ZN4base10JSONWriter16WriteWithOptionsERKNS_5ValueEiPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(12) %1, i32 noundef %.1.i, ptr noundef nonnull %4) br label %_ZN25JSONStringValueSerializer17SerializeInternalERKN4base5ValueEb.exit _ZN25JSONStringValueSerializer17SerializeInternalERKN4base5ValueEb.exit: ; preds = %2, %5 - %.06.i = phi i1 [ %9, %5 ], [ false, %2 ] + %.06.i = phi i1 [ %10, %5 ], [ false, %2 ] ret i1 %.06.i } diff --git a/bench/libquic/optimized/quic_framer.ll b/bench/libquic/optimized/quic_framer.ll index 005a5a6c907..a7348e63ca6 100644 --- a/bench/libquic/optimized/quic_framer.ll +++ b/bench/libquic/optimized/quic_framer.ll @@ -2300,35 +2300,34 @@ define noundef zeroext i1 @_ZN3net10QuicFramer18AppendPacketHeaderERKNS_16QuicPa %spec.select = select i1 %7, i8 2, i8 0 %8 = getelementptr inbounds nuw i8, ptr %1, i64 14 %9 = load i8, ptr %8, align 2, !tbaa !169, !range !141, !noundef !142 - %.140 = or disjoint i8 %spec.select, %9 + %.140 = or disjoint i8 %9, %spec.select %10 = getelementptr inbounds nuw i8, ptr %1, i64 12 %11 = load i8, ptr %10, align 4, !tbaa !170, !range !141, !noundef !142 - %12 = trunc nuw i8 %11 to i1 - %13 = or disjoint i8 %.140, 64 - %.2 = select i1 %12, i8 %13, i8 %.140 - %14 = getelementptr inbounds nuw i8, ptr %1, i64 15 - %15 = load i8, ptr %14, align 1, !tbaa !171 - %switch.tableidx = add i8 %15, -1 - %16 = icmp ult i8 %switch.tableidx, 6 - br i1 %16, label %switch.hole_check, label %17 - -17: ; preds = %switch.hole_check, %3 - %18 = tail call noundef zeroext i1 @_ZN7logging22ShouldCreateLogMessageEi(i32 noundef 2) - br i1 %18, label %19, label %_ZN3net10QuicFramer22GetSequenceNumberFlagsENS_22QuicPacketNumberLengthE.exit - -19: ; preds = %17 + %12 = shl nuw nsw i8 %11, 6 + %13 = or disjoint i8 %.140, %12 + %.2 = getelementptr inbounds nuw i8, ptr %1, i64 15 + %14 = load i8, ptr %13, align 1, !tbaa !171 + %15 = add i8 %14, -1 + %switch.tableidx = icmp ult i8 %15, 6 + br i1 %switch.tableidx, label %switch.hole_check, label %16 + +16: ; preds = %switch.hole_check, %3 + %17 = tail call noundef zeroext i1 @_ZN7logging22ShouldCreateLogMessageEi(i32 noundef 2) + br i1 %17, label %18, label %_ZN3net10QuicFramer22GetSequenceNumberFlagsENS_22QuicPacketNumberLengthE.exit + +18: ; preds = %16 call void @llvm.lifetime.start.p0(i64 408, ptr nonnull %4) #26 call void @_ZN7logging10LogMessageC1EPKcii(ptr noundef nonnull align 8 dereferenceable(404) %4, ptr noundef nonnull @.str, i32 noundef 999, i32 noundef 2) %20 = getelementptr inbounds nuw i8, ptr %4, i64 8 %21 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) %20, ptr noundef nonnull @.str.38, i64 noundef 27) to label %.critedge.i unwind label %22 -.critedge.i: ; preds = %19 +.critedge.i: ; preds = %18 call void @_ZN7logging10LogMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(404) %4) #26 call void @llvm.lifetime.end.p0(i64 408, ptr nonnull %4) #26 br label %_ZN3net10QuicFramer22GetSequenceNumberFlagsENS_22QuicPacketNumberLengthE.exit -22: ; preds = %19 +22: ; preds = %18 %23 = landingpad { ptr, i32 } cleanup call void @_ZN7logging10LogMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(404) %4) #26 @@ -2338,7 +2337,7 @@ define noundef zeroext i1 @_ZN3net10QuicFramer18AppendPacketHeaderERKNS_16QuicPa switch.hole_check: ; preds = %3 %switch.shifted = lshr i8 43, %switch.tableidx %switch.lobit = trunc i8 %switch.shifted to i1 - br i1 %switch.lobit, label %switch.lookup, label %17 + br i1 %switch.lobit, label %switch.lookup, label %16 switch.lookup: ; preds = %switch.hole_check %24 = shl nuw nsw i8 %switch.tableidx, 3 @@ -2347,8 +2346,8 @@ switch.lookup: ; preds = %switch.hole_check %switch.masked = trunc i48 %switch.downshift to i8 br label %_ZN3net10QuicFramer22GetSequenceNumberFlagsENS_22QuicPacketNumberLengthE.exit -_ZN3net10QuicFramer22GetSequenceNumberFlagsENS_22QuicPacketNumberLengthE.exit: ; preds = %switch.lookup, %17, %.critedge.i - %.0.i = phi i8 [ 48, %17 ], [ 48, %.critedge.i ], [ %switch.masked, %switch.lookup ] +_ZN3net10QuicFramer22GetSequenceNumberFlagsENS_22QuicPacketNumberLengthE.exit: ; preds = %switch.lookup, %16, %.critedge.i + %.0.i = phi i8 [ 48, %16 ], [ 48, %.critedge.i ], [ %switch.masked, %switch.lookup ] %25 = or disjoint i8 %.0.i, %.2 %26 = getelementptr inbounds nuw i8, ptr %1, i64 40 %27 = load ptr, ptr %26, align 8, !tbaa !172 @@ -2357,14 +2356,14 @@ _ZN3net10QuicFramer22GetSequenceNumberFlagsENS_22QuicPacketNumberLengthE.exit: ; %spec.select54 = select i1 %.not, i8 %25, i8 %28 %29 = getelementptr inbounds nuw i8, ptr %1, i64 8 %30 = load i32, ptr %29, align 8, !tbaa !173 - switch i32 %30, label %50 [ + switch i32 %30, label %60 [ i32 0, label %31 i32 8, label %33 ] 31: ; preds = %_ZN3net10QuicFramer22GetSequenceNumberFlagsENS_22QuicPacketNumberLengthE.exit %32 = call noundef zeroext i1 @_ZN3net14QuicDataWriter10WriteUInt8Eh(ptr noundef nonnull align 8 dereferenceable(24) %2, i8 noundef zeroext %spec.select54) - br i1 %32, label %50, label %_ZN3net10QuicFramer26AppendPacketSequenceNumberENS_22QuicPacketNumberLengthEmPNS_14QuicDataWriterE.exit.thread + br i1 %32, label %60, label %_ZN3net10QuicFramer26AppendPacketSequenceNumberENS_22QuicPacketNumberLengthEmPNS_14QuicDataWriterE.exit.thread 33: ; preds = %_ZN3net10QuicFramer22GetSequenceNumberFlagsENS_22QuicPacketNumberLengthE.exit %34 = getelementptr inbounds nuw i8, ptr %0, i64 268 @@ -2395,81 +2394,81 @@ _ZN3net10QuicFramer22GetSequenceNumberFlagsENS_22QuicPacketNumberLengthE.exit: ; 47: ; preds = %45 %48 = load i64, ptr %1, align 8, !tbaa !175 %49 = call noundef zeroext i1 @_ZN3net14QuicDataWriter11WriteUInt64Em(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef %48) - br i1 %49, label %50, label %_ZN3net10QuicFramer26AppendPacketSequenceNumberENS_22QuicPacketNumberLengthEmPNS_14QuicDataWriterE.exit.thread - -50: ; preds = %47, %31, %_ZN3net10QuicFramer22GetSequenceNumberFlagsENS_22QuicPacketNumberLengthE.exit - %51 = load i64, ptr %1, align 8, !tbaa !175 - %52 = getelementptr inbounds nuw i8, ptr %0, i64 256 - store i64 %51, ptr %52, align 8, !tbaa !54 - %53 = load i8, ptr %8, align 2, !tbaa !169, !range !141, !noundef !142 - %54 = trunc nuw i8 %53 to i1 - br i1 %54, label %55, label %60 - -55: ; preds = %50 - %56 = getelementptr inbounds nuw i8, ptr %0, i64 268 - %57 = load i32, ptr %56, align 4, !tbaa !67 - %58 = call noundef i32 @_ZN3net20QuicVersionToQuicTagENS_11QuicVersionE(i32 noundef %57) - %59 = call noundef zeroext i1 @_ZN3net14QuicDataWriter11WriteUInt32Ej(ptr noundef nonnull align 8 dereferenceable(24) %2, i32 noundef %58) - br label %60 + br i1 %49, label %60, label %_ZN3net10QuicFramer26AppendPacketSequenceNumberENS_22QuicPacketNumberLengthEmPNS_14QuicDataWriterE.exit.thread -60: ; preds = %55, %50 - %61 = load i8, ptr %10, align 4, !tbaa !170, !range !141, !noundef !142 - %62 = trunc nuw i8 %61 to i1 - br i1 %62, label %63, label %67 - -63: ; preds = %60 - %64 = getelementptr inbounds nuw i8, ptr %1, i64 56 - %65 = load i8, ptr %64, align 8, !tbaa !176 - %66 = call noundef zeroext i1 @_ZN3net14QuicDataWriter10WriteUInt8Eh(ptr noundef nonnull align 8 dereferenceable(24) %2, i8 noundef zeroext %65) - br i1 %66, label %67, label %_ZN3net10QuicFramer26AppendPacketSequenceNumberENS_22QuicPacketNumberLengthEmPNS_14QuicDataWriterE.exit.thread - -67: ; preds = %63, %60 - %68 = load ptr, ptr %26, align 8, !tbaa !172 - %.not42 = icmp eq ptr %68, null - br i1 %.not42, label %71, label %69 - -69: ; preds = %67 - %70 = call noundef zeroext i1 @_ZN3net14QuicDataWriter10WriteBytesEPKvm(ptr noundef nonnull align 8 dereferenceable(24) %2, ptr noundef nonnull %68, i64 noundef 32) - br i1 %70, label %71, label %_ZN3net10QuicFramer26AppendPacketSequenceNumberENS_22QuicPacketNumberLengthEmPNS_14QuicDataWriterE.exit.thread - -71: ; preds = %69, %67 - %72 = load i8, ptr %14, align 1, !tbaa !171 - %73 = getelementptr inbounds nuw i8, ptr %1, i64 48 - %74 = load i64, ptr %73, align 8, !tbaa !143 - %75 = getelementptr inbounds nuw i8, ptr %2, i64 8 - %76 = load i64, ptr %75, align 8, !tbaa !177 - %77 = getelementptr inbounds nuw i8, ptr %2, i64 16 - %78 = load i64, ptr %77, align 8, !tbaa !166 - %79 = sub i64 %76, %78 - %80 = sext i8 %72 to i64 - %81 = icmp ult i64 %79, %80 - br i1 %81, label %_ZN3net10QuicFramer26AppendPacketSequenceNumberENS_22QuicPacketNumberLengthEmPNS_14QuicDataWriterE.exit.thread, label %82 - -82: ; preds = %71 - switch i8 %72, label %_ZN3net10QuicFramer26AppendPacketSequenceNumberENS_22QuicPacketNumberLengthEmPNS_14QuicDataWriterE.exit.thread [ +60: ; preds = %46, %30, %_ZN3net10QuicFramer22GetSequenceNumberFlagsENS_22QuicPacketNumberLengthE.exit + %61 = load i64, ptr %1, align 8, !tbaa !175 + %62 = getelementptr inbounds nuw i8, ptr %0, i64 256 + store i64 %61, ptr %62, align 8, !tbaa !54 + %52 = load i8, ptr %8, align 2, !tbaa !169, !range !141, !noundef !142 + %53 = trunc nuw i8 %52 to i1 + br i1 %53, label %54, label %59 + +54:; preds = %60 + %55 = getelementptr inbounds nuw i8, ptr %0, i64 268 + %56 = load i32, ptr %55, align 4, !tbaa !67 + %57 = call noundef i32 @_ZN3net20QuicVersionToQuicTagENS_11QuicVersionE(i32 noundef %56) + %68 = call noundef zeroext i1 @_ZN3net14QuicDataWriter11WriteUInt32Ej(ptr noundef nonnull align 8 dereferenceable(24) %2, i33 noundef %57) + br label %59 + +59: ; preds = %54, %49 + %60 = load i8, ptr %10, align 4, !tbaa !170, !range !141, !noundef !142 + %70 = trunc nuw i8 %60 to i1 + br i1 %70, label %71, label %66 + +71: ; preds = %59 + %72 = getelementptr inbounds nuw i8, ptr %1, i64 56 + %73 = load i8, ptr %63, align 8, !tbaa !176 + %74 = call noundef zeroext i1 @_ZN3net14QuicDataWriter10WriteUInt8Eh(ptr noundef nonnull align 8 dereferenceable(24) %2, i8 noundef zeroext %64) + br i1 %65, label %66, label %_ZN3net10QuicFramer26AppendPacketSequenceNumberENS_22QuicPacketNumberLengthEmPNS_14QuicDataWriterE.exit.thread + +66: ; preds = %62, %59 + %78 = load ptr, ptr %25, align 8, !tbaa !172 + %79 = icmp eq ptr %67, null + br i1 %79, label %70, label %68 + +68:; preds = %66 + %69 = call noundef zeroext i1 @_ZN3net14QuicDataWriter10WriteBytesEPKvm(ptr noundef nonnull align 8 dereferenceable(24) %2, ptr noundef nonnull %67, i64 noundef 32) + br i1 %69, label %70, label %_ZN3net10QuicFramer26AppendPacketSequenceNumberENS_22QuicPacketNumberLengthEmPNS_14QuicDataWriterE.exit.thread + +70: ; preds = %68, %66 + %71 = load i8, ptr %13, align 1, !tbaa !171 + %72 = getelementptr inbounds nuw i8, ptr %1, i64 48 + %73 = load i64, ptr %72, align 8, !tbaa !143 + %74 = getelementptr inbounds nuw i8, ptr %2, i64 8 + %75 = load i64, ptr %74, align 8, !tbaa !177 + %76 = getelementptr inbounds nuw i8, ptr %2, i64 16 + %77 = load i64, ptr %76, align 8, !tbaa !166 + %78 = sub i64 %75, %77 + %79 = sext i8 %71 to i64 + %80 = icmp ult i64 %78, %79 + br i1 %80, label %_ZN3net10QuicFramer26AppendPacketSequenceNumberENS_22QuicPacketNumberLengthEmPNS_14QuicDataWriterE.exit.thread, label %81 + +81: ; preds = %70 + switch i8 %71, label %_ZN3net10QuicFramer26AppendPacketSequenceNumberENS_22QuicPacketNumberLengthEmPNS_14QuicDataWriterE.exit.thread [ i8 1, label %_ZN3net10QuicFramer26AppendPacketSequenceNumberENS_22QuicPacketNumberLengthEmPNS_14QuicDataWriterE.exit i8 2, label %83 i8 4, label %86 i8 6, label %89 ] -83: ; preds = %82 - %84 = trunc i64 %74 to i16 +83: ; preds = %81 + %84 = trunc i64 %73 to i16 %85 = call noundef zeroext i1 @_ZN3net14QuicDataWriter11WriteUInt16Et(ptr noundef nonnull align 8 dereferenceable(24) %2, i16 noundef zeroext %84) br i1 %85, label %94, label %_ZN3net10QuicFramer26AppendPacketSequenceNumberENS_22QuicPacketNumberLengthEmPNS_14QuicDataWriterE.exit.thread -86: ; preds = %82 - %87 = trunc i64 %74 to i32 +86: ; preds = %81 + %87 = trunc i64 %73 to i32 %88 = call noundef zeroext i1 @_ZN3net14QuicDataWriter11WriteUInt32Ej(ptr noundef nonnull align 8 dereferenceable(24) %2, i32 noundef %87) br i1 %88, label %94, label %_ZN3net10QuicFramer26AppendPacketSequenceNumberENS_22QuicPacketNumberLengthEmPNS_14QuicDataWriterE.exit.thread -89: ; preds = %82 - %90 = and i64 %74, 281474976710655 +89: ; preds = %81 + %90 = and i64 %73, 281474976710655 %91 = call noundef zeroext i1 @_ZN3net14QuicDataWriter11WriteUInt48Em(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef %90) br i1 %91, label %94, label %_ZN3net10QuicFramer26AppendPacketSequenceNumberENS_22QuicPacketNumberLengthEmPNS_14QuicDataWriterE.exit.thread -_ZN3net10QuicFramer26AppendPacketSequenceNumberENS_22QuicPacketNumberLengthEmPNS_14QuicDataWriterE.exit: ; preds = %82 - %92 = trunc i64 %74 to i8 +_ZN3net10QuicFramer26AppendPacketSequenceNumberENS_22QuicPacketNumberLengthEmPNS_14QuicDataWriterE.exit: ; preds = %81 + %92 = trunc i64 %73 to i8 %93 = call noundef zeroext i1 @_ZN3net14QuicDataWriter10WriteUInt8Eh(ptr noundef nonnull align 8 dereferenceable(24) %2, i8 noundef zeroext %92) br i1 %93, label %94, label %_ZN3net10QuicFramer26AppendPacketSequenceNumberENS_22QuicPacketNumberLengthEmPNS_14QuicDataWriterE.exit.thread @@ -2485,8 +2484,8 @@ _ZN3net10QuicFramer26AppendPacketSequenceNumberENS_22QuicPacketNumberLengthEmPNS %101 = call noundef zeroext i1 @_ZN3net14QuicDataWriter10WriteUInt8Eh(ptr noundef nonnull align 8 dereferenceable(24) %2, i8 noundef zeroext %100) br label %_ZN3net10QuicFramer26AppendPacketSequenceNumberENS_22QuicPacketNumberLengthEmPNS_14QuicDataWriterE.exit.thread -_ZN3net10QuicFramer26AppendPacketSequenceNumberENS_22QuicPacketNumberLengthEmPNS_14QuicDataWriterE.exit.thread: ; preds = %82, %71, %83, %86, %89, %94, %_ZN3net10QuicFramer26AppendPacketSequenceNumberENS_22QuicPacketNumberLengthEmPNS_14QuicDataWriterE.exit, %69, %63, %45, %47, %31, %98 - %.038 = phi i1 [ %101, %98 ], [ false, %31 ], [ false, %47 ], [ false, %45 ], [ false, %63 ], [ false, %69 ], [ false, %_ZN3net10QuicFramer26AppendPacketSequenceNumberENS_22QuicPacketNumberLengthEmPNS_14QuicDataWriterE.exit ], [ true, %94 ], [ false, %89 ], [ false, %86 ], [ false, %83 ], [ false, %71 ], [ false, %82 ] +_ZN3net10QuicFramer26AppendPacketSequenceNumberENS_22QuicPacketNumberLengthEmPNS_14QuicDataWriterE.exit.thread: ; preds = %81, %70, %82, %86, %88, %93, %_ZN3net10QuicFramer26AppendPacketSequenceNumberENS_22QuicPacketNumberLengthEmPNS_14QuicDataWriterE.exit, %68, %62, %45, %47, %31, %98 + %.038 = phi i1 [ %101, %98 ], [ false, %31 ], [ false, %47 ], [ false, %45 ], [ false, %62 ], [ false, %68 ], [ false, %_ZN3net10QuicFramer26AppendPacketSequenceNumberENS_22QuicPacketNumberLengthEmPNS_14QuicDataWriterE.exit ], [ true, %94 ], [ false, %89 ], [ false, %86 ], [ false, %83 ], [ false, %70 ], [ false, %81 ] ret i1 %.038 } diff --git a/bench/libzmq/optimized/zmq.ll b/bench/libzmq/optimized/zmq.ll index 5adabed7047..dfe615a5539 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 nsw 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/FastISel.ll b/bench/llvm/optimized/FastISel.ll index 688865beff8..17ce3a52757 100644 --- a/bench/llvm/optimized/FastISel.ll +++ b/bench/llvm/optimized/FastISel.ll @@ -8493,12 +8493,11 @@ define dso_local noundef zeroext i1 @_ZN4llvm8FastISel10selectCallEPKNS_4UserE(p 13: ; preds = %9 %14 = getelementptr inbounds nuw i8, ptr %7, i64 96 %15 = load i8, ptr %14, align 8, !tbaa !663, !range !150, !noundef !151 - %spec.select = zext nneg i8 %15 to i32 %16 = getelementptr inbounds nuw i8, ptr %7, i64 97 %17 = load i8, ptr %16, align 1, !tbaa !666, !range !150, !noundef !151 - %18 = trunc nuw i8 %17 to i1 - %19 = or disjoint i32 %spec.select, 2 - %.128 = select i1 %18, i32 %19, i32 %spec.select + %18 = shl nuw nsw i8 %17, 1 + %19 = or disjoint i8 %18, %15 + %.128 = zext nneg i8 %19 to i32 %20 = getelementptr inbounds nuw i8, ptr %1, i64 72 %21 = tail call noundef zeroext i1 @_ZNK4llvm13AttributeList9hasFnAttrENS_9Attribute8AttrKindE(ptr noundef nonnull align 8 dereferenceable(8) %20, i32 noundef 6) #21 br i1 %21, label %_ZNK4llvm8CallBase12isConvergentEv.exit.thread, label %_ZNK4llvm8CallBase12isConvergentEv.exit @@ -13886,7 +13885,6 @@ define dso_local noundef ptr @_ZNK4llvm8FastISel26createMachineMemOperandForEPKN %.sroa.065.182.in.in = trunc i16 %.24284.in.in to i8 %.sroa.065.182.in = lshr i8 %.sroa.065.182.in.in, 1 %.sroa.065.182 = and i8 %.sroa.065.182.in, 63 - %.24284.in = trunc i16 %.24284.in.in to i1 %.23985.in = getelementptr inbounds nuw i8, ptr %.pn, i64 8 %.23985 = load ptr, ptr %.23985.in, align 8, !tbaa !196 %.23686.in = getelementptr inbounds i8, ptr %1, i64 -32 @@ -13946,20 +13944,21 @@ _ZNK4llvm11Instruction11hasMetadataEj.exit53.thread: ; preds = %.thread, %_ZNK4l store i8 %27, ptr %.sroa.2.0..sroa_idx, align 8 %29 = call noundef i64 @_ZNK4llvm8TypeSizecvmEv(ptr noundef nonnull align 8 dereferenceable(9) %5) #21 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) #21 - %30 = or disjoint i16 %.181, 4 - %spec.select = select i1 %.24284.in, i16 %30, i16 %.181 - %31 = or disjoint i16 %spec.select, 8 - %spec.select122 = select i1 %.0.i.i109113120, i16 %spec.select, i16 %31 - %32 = or i16 %spec.select122, 16 - %33 = select i1 %.0.i.i52121, i16 %spec.select122, i16 %32 - %34 = or i16 %33, 32 - %.5 = select i1 %.0.i.i49114119, i16 %33, i16 %34 - %35 = getelementptr inbounds nuw i8, ptr %0, i64 32 - %36 = load ptr, ptr %35, align 8, !tbaa !33 - %37 = getelementptr inbounds nuw i8, ptr %36, i64 8 - %38 = load ptr, ptr %37, align 8, !tbaa !372 - %39 = ptrtoint ptr %.23686 to i64 - %40 = and i64 %39, -5 + %30 = shl i16 %.24284.in.in, 2 + %spec.select = and i16 %30, 4 + %31 = or disjoint i16 %spec.select, %.181 + %spec.select122 = or disjoint i16 %spec.select, 8 + %32 = select i1 %.0.i.i109113120, i16 %spec.select, i16 %32 + %33 = or disjoint i16 %spec.select122, 16 + %34 = select i1 %.0.i.i52121, i16 %33, i16 %33 + %.5 = or i16 %35, 32 + %35 = select i1 %.0.i.i49114119, i16 %34, i16 %35 + %36 = getelementptr inbounds nuw i8, ptr %0, i64 32 + %37 = load ptr, ptr %36, align 8, !tbaa !33 + %38 = getelementptr inbounds nuw i8, ptr %37, i64 8 + %39 = load ptr, ptr %38, align 8, !tbaa !372 + %40 = ptrtoint ptr %.23686 to i64 + %41 = and i64 %40, -5 %.not.i = icmp eq ptr %.23686, null br i1 %.not.i, label %_ZN4llvm18MachinePointerInfoC2EPKNS_5ValueElh.exit, label %41 @@ -13990,14 +13989,14 @@ _ZN4llvm18MachinePointerInfoC2EPKNS_5ValueElh.exit: ; preds = %_ZNK4llvm11Instru %54 = phi i32 [ %53, %_ZNK4llvm4Type22getPointerAddressSpaceEv.exit.i ], [ 0, %_ZNK4llvm11Instruction11hasMetadataEj.exit53.thread ] %55 = and i64 %29, 4294967295 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %3) - store i64 %40, ptr %3, align 8 + store i64 %41, ptr %3, align 8 %.sroa.2.0..sroa_idx55 = getelementptr inbounds nuw i8, ptr %3, i64 8 store i64 0, ptr %.sroa.2.0..sroa_idx55, align 8 %.sroa.3.0..sroa_idx = getelementptr inbounds nuw i8, ptr %3, i64 16 store i32 %54, ptr %.sroa.3.0..sroa_idx, align 8 %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %3, i64 20 store i8 0, ptr %.sroa.5.0..sroa_idx, align 4 - %56 = call noundef ptr @_ZN4llvm15MachineFunction20getMachineMemOperandENS_18MachinePointerInfoENS_17MachineMemOperand5FlagsENS_12LocationSizeENS_5AlignERKNS_9AAMDNodesEPKNS_6MDNodeEhNS_14AtomicOrderingESC_(ptr noundef nonnull align 8 dereferenceable(1065) %38, ptr noundef nonnull byval(%"struct.llvm::MachinePointerInfo") align 8 %3, i16 noundef zeroext %.5, i64 %55, i8 %.sroa.065.182, ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef %.0.i, i8 noundef zeroext 1, i32 noundef 0, i32 noundef 0) #21 + %56 = call noundef ptr @_ZN4llvm15MachineFunction20getMachineMemOperandENS_18MachinePointerInfoENS_17MachineMemOperand5FlagsENS_12LocationSizeENS_5AlignERKNS_9AAMDNodesEPKNS_6MDNodeEhNS_14AtomicOrderingESC_(ptr noundef nonnull align 8 dereferenceable(1065) %39, ptr noundef nonnull byval(%"struct.llvm::MachinePointerInfo") align 8 %3, i16 noundef zeroext %.5, i64 %55, i8 %.sroa.065.182, ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef %.0.i, i8 noundef zeroext 1, i32 noundef 0, i32 noundef 0) #21 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3) call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) #21 br label %57 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 1129c53eb66..0b6e2c06b3f 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 7b0a674fbe0..c900f202d0d 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/memcached/optimized/items.ll b/bench/memcached/optimized/items.ll index eac2324b585..afa81eb6970 100644 --- a/bench/memcached/optimized/items.ll +++ b/bench/memcached/optimized/items.ll @@ -1116,12 +1116,12 @@ define dso_local ptr @do_item_alloc(ptr noundef readonly captures(none) %0, i64 %11 = add nuw nsw i64 %10, 48 %12 = select i1 %9, i64 0, i64 4 %13 = zext nneg i32 %4 to i64 - %14 = add nuw nsw i64 %11, %12 - %15 = add nuw nsw i64 %14, %13 - %16 = load i8, ptr getelementptr inbounds nuw (i8, ptr @settings, i64 104), align 8, !tbaa !62, !range !24, !noundef !25 - %17 = trunc nuw i8 %16 to i1 - %18 = add nuw nsw i64 %15, 8 - %spec.select = select i1 %17, i64 %18, i64 %15 + %14 = load i8, ptr getelementptr inbounds nuw (i8, ptr @settings, i64 104), align 8, !tbaa !62, !range !24, !noundef !25 + %15 = shl nuw nsw i8 %14, 3 + %16 = zext nneg i8 %15 to i64 + %17 = add nuw nsw i64 %11, %12 + %18 = add nuw nsw i64 %17, %13 + %spec.select = add nuw nsw i64 %18, %16 %19 = tail call i32 @slabs_clsid(i64 noundef %spec.select) #19 %20 = icmp eq i32 %19, 0 br i1 %20, label %109, label %21 @@ -1307,9 +1307,9 @@ define dso_local zeroext i1 @item_size_ok(i64 noundef %0, i32 noundef %1, i32 no %12 = add nuw nsw i64 %9, %11 %13 = add nuw nsw i64 %12, %10 %14 = load i8, ptr getelementptr inbounds nuw (i8, ptr @settings, i64 104), align 8, !tbaa !62, !range !24, !noundef !25 - %15 = trunc nuw i8 %14 to i1 - %16 = add nuw nsw i64 %13, 8 - %spec.select = select i1 %15, i64 %16, i64 %13 + %15 = shl nuw nsw i8 %14, 3 + %16 = zext nneg i8 %15 to i64 + %spec.select = add nuw nsw i64 %13, %16 %17 = tail call i32 @slabs_clsid(i64 noundef %spec.select) #19 %18 = icmp ne i32 %17, 0 br label %19 diff --git a/bench/oiio/optimized/imagebufalgo_pixelmath.ll b/bench/oiio/optimized/imagebufalgo_pixelmath.ll index 8fafd913799..b5740c06778 100644 --- a/bench/oiio/optimized/imagebufalgo_pixelmath.ll +++ b/bench/oiio/optimized/imagebufalgo_pixelmath.ll @@ -112488,12 +112488,11 @@ 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 ] + %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 nsw i32 %fixed.0.lcssa.i.i.i, %count.5.i.i.i br label %for.inc67.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 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..547dc496dbb 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 nsw 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/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 407b17909f8..251a33506fb 100644 --- a/bench/postgres/optimized/arrayfuncs.ll +++ b/bench/postgres/optimized/arrayfuncs.ll @@ -1878,13 +1878,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 inbounds nuw 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 inbounds nuw 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 call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %5) #18 %indvars.iv.next285 = add nuw nsw i64 %indvars.iv284, 1 %exitcond288.not = icmp eq i64 %indvars.iv.next285, %wide.trip.count287 diff --git a/bench/postgres/optimized/nodeSort.ll b/bench/postgres/optimized/nodeSort.ll index 197e1a2626c..6b67542f623 100644 --- a/bench/postgres/optimized/nodeSort.ll +++ b/bench/postgres/optimized/nodeSort.ll @@ -84,12 +84,11 @@ define internal ptr @ExecSort(ptr noundef captures(none) %0) #0 { %19 = tail call ptr @ExecGetResultType(ptr noundef %18) #4 %20 = getelementptr inbounds nuw i8, ptr %0, i64 224 %21 = load i8, ptr %20, align 8, !range !5, !noundef !6 - %spec.select = zext nneg i8 %21 to i32 %22 = getelementptr inbounds nuw i8, ptr %0, i64 225 %23 = load i8, ptr %22, align 1, !range !5, !noundef !6 - %24 = trunc nuw i8 %23 to i1 - %25 = or disjoint i32 %spec.select, 2 - %.169 = select i1 %24, i32 %25, i32 %spec.select + %24 = shl nuw nsw i8 %23, 1 + %25 = or disjoint i8 %24, %21 + %.169 = zext nneg i8 %25 to i32 %26 = getelementptr inbounds nuw i8, ptr %0, i64 265 %27 = load i8, ptr %26, align 1, !range !5, !noundef !6 %28 = trunc nuw i8 %27 to i1 @@ -162,7 +161,7 @@ define internal ptr @ExecSort(ptr noundef captures(none) %0) #0 { ExecProcNode.exit: ; preds = %.preheader, %73 %74 = load ptr, ptr %71, align 8 - %75 = tail call ptr %74(ptr noundef nonnull %18) #4 + %75 = tail call ptr %73(ptr noundef nonnull %18) #4 %76 = icmp eq ptr %75, null br i1 %76, label %.loopexit, label %77 @@ -205,7 +204,7 @@ slot_getsomeattrs.exit: ; preds = %81, %85 ExecProcNode.exit77: ; preds = %.preheader78, %94 %95 = load ptr, ptr %71, align 8 - %96 = tail call ptr %95(ptr noundef nonnull %18) #4 + %96 = tail call ptr %94(ptr noundef nonnull %18) #4 %97 = icmp eq ptr %96, null br i1 %97, label %.loopexit, label %98 @@ -264,7 +263,7 @@ ExecProcNode.exit77: ; preds = %.preheader78, %94 %127 = load ptr, ptr %126, align 8 %128 = getelementptr inbounds nuw i8, ptr %127, i64 24 %129 = load ptr, ptr %128, align 8 - tail call void %129(ptr noundef %121) #4 + tail call void %128(ptr noundef %121) #4 %130 = icmp eq i32 %8, 1 %131 = getelementptr inbounds nuw i8, ptr %121, i64 24 %132 = load ptr, ptr %131, align 8 diff --git a/bench/postgres/optimized/pg_receivewal.ll b/bench/postgres/optimized/pg_receivewal.ll index 192b2e8d9c5..0c6ce0ee817 100644 --- a/bench/postgres/optimized/pg_receivewal.ll +++ b/bench/postgres/optimized/pg_receivewal.ll @@ -897,22 +897,24 @@ is_xlogfilename.exit.i.i: ; preds = %249, %245, %241, %2 br i1 %or.cond.i.i, label %323, label %320 320: ; preds = %317 - %321 = icmp ne i32 %.pre.i.i, %.042116.i.i - %not..i.i = xor i1 %318, true - %or.cond69.i.i = select i1 %not..i.i, i1 true, i1 %321 - %322 = trunc nuw i8 %.045115.i.i to i1 - %.not86.i.i = xor i1 %322, true + %321 = icmp eq i32 %.pre.i.i, %.042116.i.i + %not..i.i = select i1 %318, i1 %321, i1 false + br i1 %not..i.i, label %322, label %is_xlogfilename.exit.thread.i.i + +322:; preds = %320 + %323 = trunc nuw i8 %.045115.i.i to i1 + %.not86.i.i = xor i1 %323, true %brmerge.i.i = or i1 %.not86.i.i, %266 - %or.cond133.i.i = select i1 %or.cond69.i.i, i1 true, i1 %brmerge.i.i - br i1 %or.cond133.i.i, label %is_xlogfilename.exit.thread.i.i, label %323 + %or.cond133.i.i = and i8 %.045115.i.i, 1 + br i1 %brmerge.i.i, label %is_xlogfilename.exit.thread.i.i, label %323 -323: ; preds = %320, %317, %315 +323: ; preds = %322, %317, %315 br label %is_xlogfilename.exit.thread.i.i -is_xlogfilename.exit.thread.i.i: ; preds = %323, %320, %312, %276, %249, %245, %241, %237, %233, %231, %.lr.ph.i.i - %.146.i.i = phi i8 [ %.045115.i.i, %276 ], [ %.045115.i.i, %312 ], [ %.sink27.i.i.i, %323 ], [ %.045115.i.i, %320 ], [ %.045115.i.i, %.lr.ph.i.i ], [ %.045115.i.i, %231 ], [ %.045115.i.i, %249 ], [ %.045115.i.i, %233 ], [ %.045115.i.i, %237 ], [ %.045115.i.i, %241 ], [ %.045115.i.i, %245 ] - %.143.i.i = phi i32 [ %.042116.i.i, %276 ], [ %.042116.i.i, %312 ], [ %.pre.i.i, %323 ], [ %.042116.i.i, %320 ], [ %.042116.i.i, %.lr.ph.i.i ], [ %.042116.i.i, %231 ], [ %.042116.i.i, %249 ], [ %.042116.i.i, %233 ], [ %.042116.i.i, %237 ], [ %.042116.i.i, %241 ], [ %.042116.i.i, %245 ] - %.1.i.i = phi i64 [ %.041117.i.i, %276 ], [ %.041117.i.i, %312 ], [ %265, %323 ], [ %.041117.i.i, %320 ], [ %.041117.i.i, %.lr.ph.i.i ], [ %.041117.i.i, %231 ], [ %.041117.i.i, %249 ], [ %.041117.i.i, %233 ], [ %.041117.i.i, %237 ], [ %.041117.i.i, %241 ], [ %.041117.i.i, %245 ] +is_xlogfilename.exit.thread.i.i: ; preds = %324, %322, %320, %312, %276, %249, %245, %241, %237, %233, %231, %.lr.ph.i.i + %.146.i.i = phi i8 [ %.045115.i.i, %276 ], [ %.045115.i.i, %312 ], [ %.sink27.i.i.i, %323 ], [ %.mux.i.i, %322 ], [ %.045115.i.i, %320 ], [ %.045115.i.i, %.lr.ph.i.i ], [ %.045115.i.i, %231 ], [ %.045115.i.i, %249 ], [ %.045115.i.i, %233 ], [ %.045115.i.i, %237 ], [ %.045115.i.i, %241 ], [ %.045115.i.i, %245 ] + %.143.i.i = phi i32 [ %.042116.i.i, %276 ], [ %.042116.i.i, %312 ], [ %.pre.i.i, %323 ], [ %.042116.i.i, %322 ], [ %.042116.i.i, %320 ], [ %.042116.i.i, %.lr.ph.i.i ], [ %.042116.i.i, %231 ], [ %.042116.i.i, %249 ], [ %.042116.i.i, %233 ], [ %.042116.i.i, %237 ], [ %.042116.i.i, %241 ], [ %.042116.i.i, %245 ] + %.1.i.i = phi i64 [ %.041117.i.i, %276 ], [ %.041117.i.i, %312 ], [ %265, %323 ], [ %.041117.i.i, %322 ], [ %.041117.i.i, %320 ], [ %.041117.i.i, %.lr.ph.i.i ], [ %.041117.i.i, %231 ], [ %.041117.i.i, %249 ], [ %.041117.i.i, %233 ], [ %.041117.i.i, %237 ], [ %.041117.i.i, %241 ], [ %.041117.i.i, %245 ] call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #12 store i32 0, ptr %225, align 4 %324 = call ptr @readdir(ptr noundef nonnull %223) #12 @@ -920,8 +922,7 @@ is_xlogfilename.exit.thread.i.i: ; preds = %323, %320, %312, %2 br i1 %.not56.i.i, label %get_destination_dir.exit._crit_edge.loopexit.i.i, label %.lr.ph.i.i get_destination_dir.exit._crit_edge.loopexit.i.i: ; preds = %is_xlogfilename.exit.thread.i.i - %325 = and i8 %.146.i.i, 1 - %326 = xor i8 %325, 1 + %325 = xor i8 %.146.i.i, 1 %327 = zext nneg i8 %326 to i64 br label %get_destination_dir.exit._crit_edge.i.i diff --git a/bench/postgres/optimized/rewriteHandler.ll b/bench/postgres/optimized/rewriteHandler.ll index 15d01a25c08..81afebc2d5f 100644 --- a/bench/postgres/optimized/rewriteHandler.ll +++ b/bench/postgres/optimized/rewriteHandler.ll @@ -978,19 +978,17 @@ define dso_local i32 @relation_is_updatable(i32 noundef %0, ptr noundef %1, i1 n 47: ; preds = %44 %48 = getelementptr inbounds nuw i8, ptr %46, i64 14 %49 = load i8, ptr %48, align 2, !range !4, !noundef !5 - %50 = trunc nuw i8 %49 to i1 - %51 = or i32 %.079, 8 - %spec.select = select i1 %50, i32 %51, i32 %.079 - %52 = getelementptr inbounds nuw i8, ptr %46, i64 19 - %53 = load i8, ptr %52, align 1, !range !4, !noundef !5 - %54 = trunc nuw i8 %53 to i1 - %55 = or i32 %spec.select, 4 - %.6 = select i1 %54, i32 %55, i32 %spec.select - %56 = getelementptr inbounds nuw i8, ptr %46, i64 24 - %57 = load i8, ptr %56, align 8, !range !4, !noundef !5 - %58 = trunc nuw i8 %57 to i1 - %59 = or i32 %.6, 16 - %.7 = select i1 %58, i32 %59, i32 %.6 + %50 = shl nuw nsw i8 %49, 3 + %51 = getelementptr inbounds nuw i8, ptr %46, i64 19 + %spec.select = load i8, ptr %51, align 1, !range !4, !noundef !5 + %spec.select = shl nuw nsw i8 %52, 2 + %53 = or disjoint i8 %52, %50 + %54 = getelementptr inbounds nuw i8, ptr %46, i64 24 + %55 = load i8, ptr %55, align 8, !range !4, !noundef !5 + %.6 = shl nuw nsw i8 %55, 4 + %56 = or disjoint i8 %54, %.6 + %57 = zext nneg i8 %56 to i32 + %58 = or i32 %.079, %57 %60 = icmp eq i32 %.7, 28 br i1 %60, label %61, label %.thread 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/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 6b65c93a327..46b4f8ce800 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..957a0673fe9 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 = add nuw nsw 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 9ad32ee00e1..f94d553b032 100644 --- a/bench/slurm/optimized/gres.ll +++ b/bench/slurm/optimized/gres.ll @@ -17328,10 +17328,10 @@ define dso_local void @gres_g_job_set_env(ptr noundef %0, i32 noundef %1) local_ %34 = and i32 %33, 512 %.not.i.not = icmp eq i32 %34, 0 %35 = load i8, ptr %10, align 4, !range !13 - %36 = trunc nuw i8 %35 to i1 - %37 = or i32 %.02028, 2 - %spec.select = select i1 %36, i32 %37, i32 %.02028 - %.2 = select i1 %.not.i.not, i32 %.02028, i32 %spec.select + %36 = shl nuw nsw i8 %35, 1 + %37 = zext nneg i8 %36 to i32 + %spec.select = select i1 %.not.i.not, i32 0, i32 %37 + %.2 = or i32 %spec.select, %.02028 %38 = load i32, ptr %15, align 8 %39 = and i32 %38, 32 %.not26 = icmp eq i32 %39, 0 @@ -22575,10 +22575,10 @@ define dso_local void @gres_g_step_set_env(ptr noundef %0) local_unnamed_addr #2 %29 = and i32 %28, 512 %.not.i.not = icmp eq i32 %29, 0 %30 = load i8, ptr %10, align 4, !range !13 - %31 = trunc nuw i8 %30 to i1 - %32 = or i32 %.01725, 2 - %spec.select = select i1 %31, i32 %32, i32 %.01725 - %.2 = select i1 %.not.i.not, i32 %.01725, i32 %spec.select + %31 = shl nuw nsw i8 %30, 1 + %32 = zext nneg i8 %31 to i32 + %spec.select = select i1 %.not.i.not, i32 0, i32 %32 + %.2 = or i32 %spec.select, %.01725 %33 = load ptr, ptr %18, align 8 %34 = load ptr, ptr %2, align 8 %35 = load i64, ptr %12, align 8 diff --git a/bench/slurm/optimized/scancel.ll b/bench/slurm/optimized/scancel.ll index c56eae85b3c..547dd158be8 100644 --- a/bench/slurm/optimized/scancel.ll +++ b/bench/slurm/optimized/scancel.ll @@ -482,25 +482,25 @@ _init_flags.exit.i: ; preds = %135, %104 %spec.select34.i = select i1 %138, ptr @.str.18, ptr @.str.12 %spec.select35.i = zext nneg i8 %137 to i16 %139 = load i8, ptr getelementptr inbounds nuw (i8, ptr @opt, i64 40), align 8, !range !14, !noundef !15 - %140 = trunc nuw i8 %139 to i1 - %141 = or disjoint i16 %spec.select35.i, 4096 - %spec.select.i.i = select i1 %140, i16 %141, i16 %spec.select35.i + %140 = zext nneg i8 %139 to i16 + %141 = shl nuw nsw i16 %140, 12 + %spec.select.i.i = or disjoint i16 %141, %spec.select35.i %142 = load i8, ptr getelementptr inbounds nuw (i8, ptr @opt, i64 41), align 1, !range !14, !noundef !15 %143 = trunc nuw i8 %142 to i1 %144 = or disjoint i16 %spec.select.i.i, 8 %.1.i = select i1 %143, ptr @.str.19, ptr %spec.select34.i %.2.i.i = select i1 %143, i16 %144, i16 %spec.select.i.i %145 = load i8, ptr getelementptr inbounds nuw (i8, ptr @opt, i64 42), align 2, !range !14, !noundef !15 - %146 = trunc nuw i8 %145 to i1 - %147 = or i16 %.2.i.i, 32 - %spec.select10.i.i = select i1 %146, i16 %147, i16 %.2.i.i + %146 = shl nuw nsw i8 %145, 5 + %147 = zext nneg i8 %146 to i16 + %spec.select10.i.i = or disjoint i16 %.2.i.i, %147 store i16 %spec.select10.i.i, ptr %106, align 8 %148 = load i32, ptr getelementptr inbounds nuw (i8, ptr @opt, i64 104), align 8 %.not26.i = icmp eq i32 %148, 0 br i1 %.not26.i, label %151, label %149 149: ; preds = %_init_flags.exit.i - %150 = or i16 %spec.select10.i.i, 2048 + %150 = or disjoint i16 %spec.select10.i.i, 2048 store i16 %150, ptr %106, align 8 br label %151 @@ -1472,18 +1472,18 @@ _init_flags.exit: %spec.select56 = select i1 %7, ptr @.str.18, ptr @.str.12 %spec.select57 = zext nneg i8 %6 to i16 %8 = load i8, ptr getelementptr inbounds nuw (i8, ptr @opt, i64 40), align 8, !range !14, !noundef !15 - %9 = trunc nuw i8 %8 to i1 - %10 = or disjoint i16 %spec.select57, 4096 - %spec.select.i = select i1 %9, i16 %10, i16 %spec.select57 + %9 = zext nneg i8 %8 to i16 + %10 = shl nuw nsw i16 %9, 12 + %spec.select.i = or disjoint i16 %10, %spec.select57 %11 = load i8, ptr getelementptr inbounds nuw (i8, ptr @opt, i64 41), align 1, !range !14, !noundef !15 %12 = trunc nuw i8 %11 to i1 %13 = or disjoint i16 %spec.select.i, 8 %.148 = select i1 %12, ptr @.str.19, ptr %spec.select56 %.2.i = select i1 %12, i16 %13, i16 %spec.select.i %14 = load i8, ptr getelementptr inbounds nuw (i8, ptr @opt, i64 42), align 2, !range !14, !noundef !15 - %15 = trunc nuw i8 %14 to i1 - %16 = or i16 %.2.i, 32 - %spec.select10.i = select i1 %15, i16 %16, i16 %.2.i + %15 = shl nuw nsw i8 %14, 5 + %16 = zext nneg i8 %15 to i16 + %spec.select10.i = or disjoint i16 %.2.i, %16 %17 = getelementptr inbounds nuw i8, ptr %0, i64 32 %18 = load i16, ptr %17, align 8 %19 = icmp eq i16 %18, -2 diff --git a/bench/slurm/optimized/sinfo.ll b/bench/slurm/optimized/sinfo.ll index e46d123b6d7..e5b21200017 100644 --- a/bench/slurm/optimized/sinfo.ll +++ b/bench/slurm/optimized/sinfo.ll @@ -507,9 +507,9 @@ _query_fed_servers.exit: ; preds = %.thread.i55, %.oute %103 = trunc nuw i8 %102 to i1 %spec.select.i = select i1 %103, i16 9, i16 8 %104 = load i8, ptr getelementptr inbounds nuw (i8, ptr @params, i64 40), align 8, !range !8, !noundef !9 - %105 = trunc nuw i8 %104 to i1 - %106 = or disjoint i16 %spec.select.i, 128 - %.1.i = select i1 %105, i16 %106, i16 %spec.select.i + %105 = shl nuw i8 %104, 7 + %106 = zext i8 %105 to i16 + %.1.i = or disjoint i16 %spec.select.i, %106 %107 = load ptr, ptr @_query_server.old_part_ptr, align 8 %.not.i57 = icmp eq ptr %107, null br i1 %.not.i57, label %122, label %108 @@ -1885,9 +1885,9 @@ define internal noalias noundef ptr @_load_job_prio_thread(ptr noundef %0) #5 { %10 = trunc nuw i8 %9 to i1 %.026 = select i1 %10, i16 9, i16 8 %11 = load i8, ptr getelementptr inbounds nuw (i8, ptr @params, i64 40), align 8, !range !8, !noundef !9 - %12 = trunc nuw i8 %11 to i1 - %13 = or disjoint i16 %.026, 128 - %.1 = select i1 %12, i16 %13, i16 %.026 + %12 = shl nuw i8 %11, 7 + %13 = zext i8 %12 to i16 + %.1 = or disjoint i16 %.026, %13 %14 = call i32 @slurm_load_partitions2(i64 noundef 0, ptr noundef nonnull %3, i16 noundef zeroext %.1, ptr noundef %5) #13 %.not = icmp eq i32 %14, 0 br i1 %.not, label %16, label %15 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/wireshark/optimized/packet-dof.ll b/bench/wireshark/optimized/packet-dof.ll index a1c879a7339..778c9854f77 100644 --- a/bench/wireshark/optimized/packet-dof.ll +++ b/bench/wireshark/optimized/packet-dof.ll @@ -9949,9 +9949,9 @@ validate_c2.exit.i: ; preds = %599, %read_c2.exit. %601 = call zeroext i8 @tvb_get_uint8(ptr noundef %565, i32 noundef %.sink.i.i) %602 = getelementptr inbounds nuw i8, ptr %577, i64 48 %603 = load i8, ptr %602, align 8, !range !10, !noundef !11 - %604 = trunc nuw i8 %603 to i1 - %605 = or i8 %601, -128 - %spec.select.i = select i1 %604, i8 %601, i8 %605 + %604 = xor i8 %603, -1 + %605 = shl i8 %604, 7 + %spec.select.i = or i8 %605, %601 %606 = load ptr, ptr %100, align 8 %607 = zext i8 %spec.select.i to i32 %608 = call ptr @val_to_str(i32 noundef %607, ptr noundef nonnull @strings_2009_12_dpp_common_opcodes, ptr noundef nonnull @.str.740) @@ -10596,9 +10596,9 @@ validate_c2.exit: ; preds = %read_c2.exit, %31 %39 = tail call zeroext i8 @tvb_get_uint8(ptr noundef %0, i32 noundef %.sink.i) %40 = getelementptr inbounds nuw i8, ptr %8, i64 48 %41 = load i8, ptr %40, align 8, !range !10, !noundef !11 - %42 = trunc nuw i8 %41 to i1 - %43 = or i8 %39, -128 - %spec.select = select i1 %42, i8 %39, i8 %43 + %42 = xor i8 %41, -1 + %43 = shl i8 %42, 7 + %spec.select = or i8 %43, %39 %44 = load i32, ptr @hf_2008_1_dsp_12_opcode, align 4 %45 = zext i8 %spec.select to i32 %46 = tail call ptr @val_to_str(i32 noundef %45, ptr noundef nonnull @strings_2008_1_dsp_opcodes, ptr noundef nonnull @.str.740) @@ -12106,9 +12106,9 @@ dof_packet_get_proto_data.exit: ; preds = %47 %64 = and i8 %63, 31 %65 = getelementptr inbounds nuw i8, ptr %17, i64 48 %66 = load i8, ptr %65, align 8, !range !10, !noundef !11 - %67 = trunc nuw i8 %66 to i1 - %68 = or disjoint i8 %64, -128 - %spec.select = select i1 %67, i8 %64, i8 %68 + %67 = xor i8 %66, -1 + %68 = shl i8 %67, 7 + %spec.select = or disjoint i8 %68, %64 %69 = call zeroext i8 @tvb_get_uint8(ptr noundef %0, i32 noundef %.sink.i) %70 = load ptr, ptr %20, align 8 %71 = zext i8 %spec.select to i32 @@ -13284,9 +13284,9 @@ validate_c2.exit: ; preds = %read_c2.exit, %33 %41 = tail call zeroext i8 @tvb_get_uint8(ptr noundef %0, i32 noundef %.sink.i) %42 = getelementptr inbounds nuw i8, ptr %10, i64 48 %43 = load i8, ptr %42, align 8, !range !10, !noundef !11 - %44 = trunc nuw i8 %43 to i1 - %45 = or i8 %41, -128 - %spec.select = select i1 %44, i8 %41, i8 %45 + %44 = xor i8 %43, -1 + %45 = shl i8 %44, 7 + %spec.select = or i8 %45, %41 %46 = load ptr, ptr %13, align 8 %47 = zext i8 %spec.select to i32 %48 = tail call ptr @val_to_str(i32 noundef %47, ptr noundef nonnull @sgmp_opcode_strings, ptr noundef nonnull @.str.740) @@ -14004,9 +14004,9 @@ validate_c2.exit: ; preds = %read_c2.exit, %38 %46 = tail call zeroext i8 @tvb_get_uint8(ptr noundef %0, i32 noundef %.sink.i) %47 = getelementptr inbounds nuw i8, ptr %15, i64 48 %48 = load i8, ptr %47, align 8, !range !10, !noundef !11 - %49 = trunc nuw i8 %48 to i1 - %50 = or i8 %46, -128 - %spec.select = select i1 %49, i8 %46, i8 %50 + %49 = xor i8 %48, -1 + %50 = shl i8 %49, 7 + %spec.select = or i8 %50, %46 %51 = load ptr, ptr %18, align 8 %52 = zext i8 %spec.select to i32 %53 = tail call ptr @val_to_str(i32 noundef %52, ptr noundef nonnull @tep_opcode_strings, ptr noundef nonnull @.str.740) @@ -15359,9 +15359,9 @@ dof_packet_get_proto_data.exit: ; preds = %42, %46 %56 = call zeroext i8 @tvb_get_uint8(ptr noundef %0, i32 noundef %.sink.i) %57 = getelementptr inbounds nuw i8, ptr %38, i64 48 %58 = load i8, ptr %57, align 8, !range !10, !noundef !11 - %59 = trunc nuw i8 %58 to i1 - %60 = or i8 %56, -128 - %spec.select = select i1 %59, i8 %56, i8 %60 + %59 = xor i8 %58, -1 + %60 = shl i8 %59, 7 + %spec.select = or i8 %60, %56 %61 = load ptr, ptr %11, align 8 %62 = zext i8 %spec.select to i32 %63 = call ptr @val_to_str(i32 noundef %62, ptr noundef nonnull @trp_opcode_strings, ptr noundef nonnull @.str.740) diff --git a/bench/wireshark/optimized/packet-signal-pdu.ll b/bench/wireshark/optimized/packet-signal-pdu.ll index 7aaad40a2d5..980de021ec1 100644 --- a/bench/wireshark/optimized/packet-signal-pdu.ll +++ b/bench/wireshark/optimized/packet-signal-pdu.ll @@ -5201,26 +5201,25 @@ get_uds_mapping.exit.thread: ; preds = %7 10: ; preds = %7 %11 = getelementptr inbounds nuw i8, ptr %3, i64 8 %12 = load i8, ptr %11, align 4, !range !6, !noundef !7 - %13 = trunc nuw i8 %12 to i1 - %14 = getelementptr inbounds nuw i8, ptr %3, i64 9 - %15 = load i8, ptr %14, align 1 - %16 = or i8 %15, 64 - %.011.in.i = select i1 %13, i8 %16, i8 %15 - %17 = getelementptr inbounds nuw i8, ptr %3, i64 4 - %18 = load i32, ptr %17, align 4 - %19 = zext i32 %18 to i64 - %20 = load i32, ptr %3, align 4 - %21 = and i32 %20, 65535 - %22 = zext nneg i32 %21 to i64 - %23 = shl nuw nsw i64 %22, 32 - %24 = or disjoint i64 %23, %19 - %25 = zext i8 %.011.in.i to i64 - %26 = shl nuw nsw i64 %25, 48 - %27 = or disjoint i64 %24, %26 - store i64 %27, ptr %5, align 8 - %28 = call ptr @g_hash_table_lookup(ptr noundef nonnull %8, ptr noundef nonnull %5) - %29 = icmp eq ptr %28, null - br i1 %29, label %get_uds_mapping.exit, label %get_uds_mapping.exit.thread12 + %13 = getelementptr inbounds nuw i8, ptr %3, i64 9 + %14 = load i8, ptr %13, align 1 + %15 = shl nuw nsw i8 %12, 6 + %16 = or i8 %14, %15 + %.011.in.i = getelementptr inbounds nuw i8, ptr %3, i64 4 + %17 = load i32, ptr %16, align 4 + %18 = zext i32 %17 to i64 + %19 = load i32, ptr %3, align 4 + %20 = and i32 %19, 65535 + %21 = zext nneg i32 %20 to i64 + %22 = shl nuw nsw i64 %21, 32 + %23 = or disjoint i64 %22, %18 + %24 = zext i8 %.011.in.i to i64 + %25 = shl nuw nsw i64 %24, 48 + %26 = or disjoint i64 %23, %25 + store i64 %26, ptr %5, align 8 + %27 = call ptr @g_hash_table_lookup(ptr noundef nonnull %8, ptr noundef nonnull %5) + %28 = icmp eq ptr %27, null + br i1 %28, label %get_uds_mapping.exit, label %get_uds_mapping.exit.thread12 get_uds_mapping.exit.thread12: ; preds = %10 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #16 @@ -5231,7 +5230,7 @@ get_uds_mapping.exit: ; preds = %10 %31 = and i32 %30, 65535 %32 = zext nneg i32 %31 to i64 %33 = shl nuw nsw i64 %32, 32 - %34 = or disjoint i64 %33, %26 + %34 = or disjoint i64 %33, %25 %35 = or disjoint i64 %34, 4294967295 store i64 %35, ptr %5, align 8 %36 = load ptr, ptr @data_spdu_uds_mappings, align 8 @@ -5241,7 +5240,7 @@ get_uds_mapping.exit: ; preds = %10 br i1 %38, label %44, label %39 39: ; preds = %get_uds_mapping.exit.thread12, %get_uds_mapping.exit - %.012.i14 = phi ptr [ %28, %get_uds_mapping.exit.thread12 ], [ %37, %get_uds_mapping.exit ] + %.012.i14 = phi ptr [ %27, %get_uds_mapping.exit.thread12 ], [ %37, %get_uds_mapping.exit ] %40 = getelementptr inbounds nuw i8, ptr %.012.i14, i64 16 %41 = load i32, ptr %40, align 4 %42 = call fastcc i32 @dissect_spdu_payload(ptr noundef %0, ptr noundef %1, ptr noundef %2, i32 noundef %41, i1 noundef zeroext false) diff --git a/bench/wireshark/optimized/rtp_audio_routing_filter.ll b/bench/wireshark/optimized/rtp_audio_routing_filter.ll index f8795f3b7d3..cec4bb95393 100644 --- a/bench/wireshark/optimized/rtp_audio_routing_filter.ll +++ b/bench/wireshark/optimized/rtp_audio_routing_filter.ll @@ -74,14 +74,14 @@ define void @_ZN18AudioRoutingFilter5closeEv(ptr noundef readonly align 8 captur define noundef i64 @_ZNK18AudioRoutingFilter4sizeEv(ptr noundef readonly align 8 captures(none) dereferenceable_or_null(36) %0) unnamed_addr #0 align 2 { %2 = getelementptr inbounds nuw i8, ptr %0, i64 24 %3 = load i8, ptr %2, align 8, !range !6, !noundef !7 - %4 = zext nneg i8 %3 to i64 - %5 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %4 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %5 = load ptr, ptr %4, align 8 %6 = load ptr, ptr %5, align 8 - %7 = load ptr, ptr %6, align 8 - %8 = getelementptr inbounds nuw i8, ptr %7, i64 128 - %9 = load ptr, ptr %8, align 8 - %10 = tail call noundef i64 %9(ptr noundef align 8 dereferenceable_or_null(16) %6) - %.0 = shl i64 %10, %4 + %7 = getelementptr inbounds nuw i8, ptr %6, i64 128 + %8 = load ptr, ptr %7, align 8 + %9 = tail call noundef i64 %8(ptr noundef align 8 dereferenceable_or_null(16) %5) + %10 = zext nneg i8 %3 to i64 + %.0 = shl i64 %9, %10 ret i64 %.0 } @@ -89,14 +89,14 @@ define noundef i64 @_ZNK18AudioRoutingFilter4sizeEv(ptr noundef readonly align 8 define noundef i64 @_ZNK18AudioRoutingFilter3posEv(ptr noundef readonly align 8 captures(none) dereferenceable_or_null(36) %0) unnamed_addr #0 align 2 { %2 = getelementptr inbounds nuw i8, ptr %0, i64 24 %3 = load i8, ptr %2, align 8, !range !6, !noundef !7 - %4 = zext nneg i8 %3 to i64 - %5 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %4 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %5 = load ptr, ptr %4, align 8 %6 = load ptr, ptr %5, align 8 - %7 = load ptr, ptr %6, align 8 - %8 = getelementptr inbounds nuw i8, ptr %7, i64 120 - %9 = load ptr, ptr %8, align 8 - %10 = tail call noundef i64 %9(ptr noundef align 8 dereferenceable_or_null(16) %6) - %.0 = shl i64 %10, %4 + %7 = getelementptr inbounds nuw i8, ptr %6, i64 120 + %8 = load ptr, ptr %7, align 8 + %9 = tail call noundef i64 %8(ptr noundef align 8 dereferenceable_or_null(16) %5) + %10 = zext nneg i8 %3 to i64 + %.0 = shl i64 %9, %10 ret i64 %.0 } diff --git a/bench/z3/optimized/theory_array_base.ll b/bench/z3/optimized/theory_array_base.ll index c8f68a9040e..5a00e95cb66 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,11 +5326,10 @@ 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 + %spec.select49 = select i1 %cmp77, i32 %44, i32 0 %num_roles.8 = add nsw 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..8e2c2af2977 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 %57, %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 %57, %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 %59, %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