From 865eadca0669f01394d597a3206ad9d839f21617 Mon Sep 17 00:00:00 2001 From: nikic <216080+nikic@users.noreply.github.com> Date: Fri, 4 Jul 2025 17:57:33 +0800 Subject: [PATCH 1/3] pre-commit: PR146992 --- scripts/setup_pre_commit_patch.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/setup_pre_commit_patch.sh b/scripts/setup_pre_commit_patch.sh index c5409e09ef4..8ceef3428fa 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/146992 export COMPTIME_MODE=0 # Please rebase manually From 7a26d8faf5a9bc19b967894b198c4d14157b61f5 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 4 Jul 2025 10:19:22 +0000 Subject: [PATCH 2/3] pre-commit: Update --- bench/abc/optimized/abcFanio.ll | 5 +- bench/abseil-cpp/optimized/fastmath_test.ll | 10 +- bench/actix-rs/optimized/q4aavw6wh20so0r.ll | 16 +- .../assimp/optimized/FindInstancesProcess.ll | 53 +++--- bench/bdwgc/optimized/gc.ll | 27 +-- bench/boost/optimized/ext.ll | 4 +- bench/box2d/optimized/sample_collision.ll | 90 ++++----- bench/box2d/optimized/settings.ll | 38 ++-- bench/casadi/optimized/sundials_spgmr.ll | 31 ++-- .../archive_read_support_format_7zip.ll | 15 +- .../archive_read_support_format_rar.ll | 123 ++++++------- .../optimized/389ib4lq03w39x6a.ll | 160 ++++++++-------- bench/cpython/optimized/mathmodule.ll | 133 +++++++------- bench/csmith/optimized/Variable.ll | 149 +++++++-------- bench/darktable/optimized/bauhaus.ll | 15 +- bench/darktable/optimized/curve_tools.ll | 74 ++++---- bench/darktable/optimized/fp_dng.ll | 36 ++-- bench/duckdb/optimized/compile.ll | 35 ++-- .../optimized/src_backend_nodes_list.ll | 47 +++-- .../optimized/src_backend_parser_scan.ll | 108 +++++------ bench/eastl/optimized/EAScanfCore.ll | 143 +++++++-------- bench/eastl/optimized/EATextUtil.ll | 131 +++++++------- bench/eastl/optimized/eathread_semaphore.ll | 91 +++++----- .../optimized/8zxt2gjt68ikxu18thf3foa45.ll | 39 ++-- bench/flac/optimized/lpc_intrin_sse2.ll | 67 +++---- bench/freetype/optimized/ftbitmap.ll | 93 +++++----- bench/freetype/optimized/raster.ll | 96 +++++----- bench/git/optimized/hex.ll | 38 ++-- bench/glslang/optimized/Pp.ll | 8 +- bench/graphviz/optimized/dtstat.ll | 54 +++--- bench/graphviz/optimized/lu.ll | 9 +- bench/graphviz/optimized/visibility.ll | 23 +-- bench/harfbuzz/optimized/hb-subset-cff1.ll | 32 ++-- bench/hdf5/optimized/H5Centry.ll | 30 +-- bench/hdf5/optimized/h5tools.ll | 32 ++-- bench/hermes/optimized/Callable.ll | 19 +- bench/hermes/optimized/ItaniumDemangle.ll | 87 +++++---- bench/hermes/optimized/MicrosoftDemangle.ll | 31 ++-- bench/hermes/optimized/RegexParser.ll | 59 +++--- bench/jq/optimized/decNumber.ll | 133 +++++++------- bench/jq/optimized/regparse.ll | 81 +++++---- bench/jsonnet/optimized/formatter.ll | 117 ++++++------ bench/just-rs/optimized/4mdvpwvrpdu4jonv.ll | 18 +- bench/libjpeg-turbo/optimized/jdphuff.ll | 77 ++++---- bench/libpng/optimized/png.ll | 87 +++++---- bench/libquic/optimized/pcy_tree.ll | 24 ++- bench/libquic/optimized/shift.ll | 27 +-- bench/libquic/optimized/url_canon_ip.ll | 14 +- bench/libwebp/optimized/alpha_processing.ll | 73 ++++---- .../optimized/backward_references_enc.ll | 171 +++++++++--------- bench/lightgbm/optimized/sample_strategy.ll | 11 +- .../optimized/drm_gem_framebuffer_helper.ll | 9 +- bench/linux/optimized/sg.ll | 18 +- bench/llvm/optimized/LoadStoreOpt.ll | 109 +++++------ bench/llvm/optimized/MicrosoftDemangle.ll | 49 +++-- bench/lua/optimized/llex.ll | 143 +++++++-------- bench/lua/optimized/ltablib.ll | 33 ++-- bench/lua/optimized/lutf8lib.ll | 144 ++++++++------- bench/lvgl/optimized/lv_buttonmatrix.ll | 41 +++-- bench/lvgl/optimized/lv_draw_sw_mask.ll | 125 ++++++------- bench/lvgl/optimized/lv_spinbox.ll | 145 +++++++-------- bench/lz4/optimized/lz4hc.ll | 107 +++++------ .../optimized/1bqqlm3jtb9rf3cv.ll | 168 ++++++++--------- .../optimized/filter_color_projection.ll | 77 ++++---- bench/minetest/optimized/mapgen.ll | 17 +- bench/mitsuba3/optimized/rgb2spec_opt.ll | 118 ++++++------ bench/msdfgen/optimized/Contour.ll | 21 ++- bench/ncnn/optimized/caffe.pb.ll | 31 ++-- bench/ncnn/optimized/cpu.ll | 39 ++-- bench/ncnn/optimized/ncnnoptimize.ll | 64 ++++--- bench/nix/optimized/app.ll | 12 +- bench/nuttx/optimized/lib_libvsprintf.ll | 140 +++++++------- bench/ocio/optimized/Lut1DOpData.ll | 87 +++++---- bench/ocio/optimized/Lut3DOpCPU.ll | 71 ++++---- bench/ockam-rs/optimized/2m830wtqeyaos7wt.ll | 14 +- bench/openblas/optimized/dlalsa.ll | 76 ++++---- bench/openblas/optimized/dlasrt.ll | 46 ++--- bench/openexr/optimized/internal_dwa.ll | 49 ++--- bench/openmpi/optimized/pmix_argv.ll | 66 +++---- bench/openspiel/optimized/backgammon.ll | 61 ++++--- bench/openspiel/optimized/rbc.ll | 13 +- bench/openusd/optimized/patchBuilder.ll | 22 ++- bench/openusd/optimized/topologyDescriptor.ll | 28 +-- .../optimized/animation_optimizer.ll | 45 ++--- bench/ozz-animation/optimized/jsoncpp.ll | 169 ++++++++--------- bench/pbrt-v4/optimized/integrators.ll | 42 +++-- bench/php/optimized/plain_wrapper.ll | 92 +++++----- bench/php/optimized/zend_ssa.ll | 85 ++++----- bench/proj/optimized/pipeline.ll | 37 ++-- bench/protobuf/optimized/unknown_field_set.ll | 18 +- .../optimized/zero_copy_stream_impl_lite.ll | 67 +++---- bench/proxygen/optimized/HTTPHeaders.ll | 147 +++++++-------- bench/raylib/optimized/rmodels.ll | 91 +++++----- bench/re2/optimized/compile.ll | 55 +++--- bench/re2/optimized/simplify.ll | 105 +++++------ .../optimized/DetourTileCache.ll | 18 +- bench/redis/optimized/linenoise.ll | 164 +++++++++-------- bench/redis/optimized/lvm.ll | 25 +-- .../optimized/pessimistic_transaction.ll | 26 +-- bench/ruby/optimized/date_core.ll | 63 ++++--- .../optimized/abz4enoi74elfoplai1nrzl05.ll | 7 +- .../optimized/4wjr9n8d5oomu43d.ll | 30 +-- bench/slurm/optimized/affinity.ll | 21 ++- bench/slurm/optimized/node_scheduler.ll | 58 +++--- bench/stb/optimized/stb_tilemap_editor.ll | 171 +++++++++--------- .../wireshark/optimized/packet-signal-pdu.ll | 7 +- bench/wireshark/optimized/tvbuff_lz77huff.ll | 16 +- .../optimized/test_messages_proto2.pb.ll | 153 ++++++++-------- bench/yosys/optimized/preproc.ll | 54 +++--- bench/z3/optimized/lar_solver.ll | 21 ++- .../optimized/1cwzjnrfv3j054rlb5kbvkj4j.ll | 56 +++--- .../optimized/2qu3ksqe5t2g2a0ursek881ws.ll | 52 +++--- .../optimized/4h84anocrn0e2zexjpu5utgbx.ll | 55 +++--- .../optimized/ODDataBarExpandedBitDecoder.ll | 6 +- 114 files changed, 3685 insertions(+), 3498 deletions(-) diff --git a/bench/abc/optimized/abcFanio.ll b/bench/abc/optimized/abcFanio.ll index 3287888238f..b41aef96cb8 100644 --- a/bench/abc/optimized/abcFanio.ll +++ b/bench/abc/optimized/abcFanio.ll @@ -401,8 +401,9 @@ define void @Abc_ObjRemoveFanins(ptr noundef captures(none) %0) local_unnamed_ad %15 = getelementptr inbounds ptr, ptr %.val.val, i64 %14 %16 = load ptr, ptr %15, align 8, !tbaa !40 tail call void @Abc_ObjDeleteFanin(ptr noundef nonnull %0, ptr noundef %16) - %17 = icmp samesign ugt i64 %indvars.iv, 1 - br i1 %17, label %7, label %._crit_edge, !llvm.loop !41 + %17 = and i64 %indvars.iv.next, 4294967295 + %exitcond.not = icmp eq i64 %17, 0 + br i1 %exitcond.not, label %._crit_edge, label %7, !llvm.loop !41 ._crit_edge: ; preds = %7, %1 %18 = getelementptr inbounds nuw i8, ptr %0, i64 20 diff --git a/bench/abseil-cpp/optimized/fastmath_test.ll b/bench/abseil-cpp/optimized/fastmath_test.ll index c99c1571654..e5897e6eb63 100644 --- a/bench/abseil-cpp/optimized/fastmath_test.ll +++ b/bench/abseil-cpp/optimized/fastmath_test.ll @@ -1446,8 +1446,9 @@ _ZNKSt14default_deleteINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclEP _ZN7testing15AssertionResultD2Ev.exit157: ; preds = %380, %_ZNKSt14default_deleteINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i155 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %26) #16 - %391 = icmp samesign ugt i64 %indvars.iv, 2 - br i1 %391, label %.lr.ph, label %._crit_edge.loopexit, !llvm.loop !57 + %391 = and i64 %indvars.iv.next, 4294967295 + %exitcond.not = icmp eq i64 %391, 1 + br i1 %exitcond.not, label %._crit_edge.loopexit, label %.lr.ph, !llvm.loop !57 392: ; preds = %_ZN7testing7MessageD2Ev.exit152, %_ZN7testing7MessageD2Ev.exit138, %_ZN7testing7MessageD2Ev.exit124 %.pn51.pn.pn = phi { ptr, i32 } [ %.pn51.pn, %_ZN7testing7MessageD2Ev.exit152 ], [ %.pn48.pn, %_ZN7testing7MessageD2Ev.exit138 ], [ %.pn45.pn, %_ZN7testing7MessageD2Ev.exit124 ] @@ -2982,8 +2983,9 @@ _ZNKSt14default_deleteINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclEP _ZN7testing15AssertionResultD2Ev.exit158: ; preds = %397, %_ZNKSt14default_deleteINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i156 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %27) #16 - %408 = icmp samesign ugt i64 %indvars.iv, 2 - br i1 %408, label %.lr.ph, label %._crit_edge.loopexit, !llvm.loop !80 + %408 = and i64 %indvars.iv.next, 4294967295 + %exitcond.not = icmp eq i64 %408, 1 + br i1 %exitcond.not, label %._crit_edge.loopexit, label %.lr.ph, !llvm.loop !80 409: ; preds = %_ZN7testing7MessageD2Ev.exit153, %_ZN7testing7MessageD2Ev.exit138, %_ZN7testing7MessageD2Ev.exit124 %.pn51.pn.pn = phi { ptr, i32 } [ %.pn51.pn, %_ZN7testing7MessageD2Ev.exit153 ], [ %.pn48.pn, %_ZN7testing7MessageD2Ev.exit138 ], [ %.pn45.pn, %_ZN7testing7MessageD2Ev.exit124 ] diff --git a/bench/actix-rs/optimized/q4aavw6wh20so0r.ll b/bench/actix-rs/optimized/q4aavw6wh20so0r.ll index 3951f9fa736..f305b99fac4 100644 --- a/bench/actix-rs/optimized/q4aavw6wh20so0r.ll +++ b/bench/actix-rs/optimized/q4aavw6wh20so0r.ll @@ -451,21 +451,21 @@ define void @_ZN16actix_web_actors2ws24handshake_with_protocols17hff1425362f08a8 br i1 %.not27.i.i.i, label %"_ZN55_$LT$$RF$str$u20$as$u20$core..str..pattern..Pattern$GT$15is_contained_in17h04515ee06e6bece1E.exit", label %.critedge.backedge.us.i.i.i "_ZN4core4iter6traits8iterator8Iterator3any5check28_$u7b$$u7b$closure$u7d$$u7d$17he6ddcdbf57967a49E.exit.us.i.i.i": ; preds = %.critedge.backedge.us.i.i.i - %117 = add i64 %.in.i.i, -1 - %118 = getelementptr inbounds nuw i8, ptr %.pn.i.i, i64 1 - %bcmp.i.i.i.us.i.i.i = tail call i32 @bcmp(ptr noundef nonnull readonly align 1 dereferenceable(9) %118, ptr noundef nonnull readonly align 1 dereferenceable(9) @anon.64514d084979a521c31c5d7bced7d225.46, i64 9), !alias.scope !45, !noalias !49 + %117 = getelementptr inbounds nuw i8, ptr %.pn.i.i, i64 1 + %bcmp.i.i.i.us.i.i.i = tail call i32 @bcmp(ptr noundef nonnull readonly align 1 dereferenceable(9) %117, ptr noundef nonnull readonly align 1 dereferenceable(9) @anon.64514d084979a521c31c5d7bced7d225.46, i64 9), !alias.scope !45, !noalias !49 %.not29.i.i.i = icmp eq i32 %bcmp.i.i.i.us.i.i.i, 0 br i1 %.not29.i.i.i, label %"_ZN55_$LT$$RF$str$u20$as$u20$core..str..pattern..Pattern$GT$15is_contained_in17h04515ee06e6bece1E.exit", label %.critedge.backedge.us.i.i.i .critedge.backedge.us.i.i.i: ; preds = %.lr.ph.split.us.i.i.i, %"_ZN4core4iter6traits8iterator8Iterator3any5check28_$u7b$$u7b$closure$u7d$$u7d$17he6ddcdbf57967a49E.exit.us.i.i.i" - %.pn.i.i = phi ptr [ %118, %"_ZN4core4iter6traits8iterator8Iterator3any5check28_$u7b$$u7b$closure$u7d$$u7d$17he6ddcdbf57967a49E.exit.us.i.i.i" ], [ %36, %.lr.ph.split.us.i.i.i ] - %.in.i.i = phi i64 [ %117, %"_ZN4core4iter6traits8iterator8Iterator3any5check28_$u7b$$u7b$closure$u7d$$u7d$17he6ddcdbf57967a49E.exit.us.i.i.i" ], [ %34, %.lr.ph.split.us.i.i.i ] - %.not28.i.i.i = icmp ugt i64 %.in.i.i, 9 - br i1 %.not28.i.i.i, label %"_ZN4core4iter6traits8iterator8Iterator3any5check28_$u7b$$u7b$closure$u7d$$u7d$17he6ddcdbf57967a49E.exit.us.i.i.i", label %"_ZN55_$LT$$RF$str$u20$as$u20$core..str..pattern..Pattern$GT$15is_contained_in17h04515ee06e6bece1E.exit" + %.pn.i.i = phi ptr [ %117, %"_ZN4core4iter6traits8iterator8Iterator3any5check28_$u7b$$u7b$closure$u7d$$u7d$17he6ddcdbf57967a49E.exit.us.i.i.i" ], [ %36, %.lr.ph.split.us.i.i.i ] + %.in.i.i = phi i64 [ %118, %"_ZN4core4iter6traits8iterator8Iterator3any5check28_$u7b$$u7b$closure$u7d$$u7d$17he6ddcdbf57967a49E.exit.us.i.i.i" ], [ %34, %.lr.ph.split.us.i.i.i ] + %118 = add i64 %.in.i.i, -1 + %exitcond.i.i.not.i.not.not = icmp ne i64 %118, 8 + br i1 %exitcond.i.i.not.i.not.not, label %"_ZN4core4iter6traits8iterator8Iterator3any5check28_$u7b$$u7b$closure$u7d$$u7d$17he6ddcdbf57967a49E.exit.us.i.i.i", label %"_ZN55_$LT$$RF$str$u20$as$u20$core..str..pattern..Pattern$GT$15is_contained_in17h04515ee06e6bece1E.exit" "_ZN55_$LT$$RF$str$u20$as$u20$core..str..pattern..Pattern$GT$15is_contained_in17h04515ee06e6bece1E.exit": ; preds = %.critedge.backedge.us.i.i.i, %"_ZN4core4iter6traits8iterator8Iterator3any5check28_$u7b$$u7b$closure$u7d$$u7d$17he6ddcdbf57967a49E.exit.us.i.i.i", %.lr.ph.split.us.i.i.i, %111, %50, %49, %.thread %.sroa.5.0..sroa_idx10.i56 = phi ptr [ %.sroa.5.0..sroa_idx10.i, %50 ], [ %.sroa.5.0..sroa_idx10.i, %49 ], [ %.sroa.5.0..sroa_idx10.i, %111 ], [ %.sroa.5.0..sroa_idx10.i, %.lr.ph.split.us.i.i.i ], [ %.sroa.5.0..sroa_idx10.i55, %.thread ], [ %.sroa.5.0..sroa_idx10.i, %"_ZN4core4iter6traits8iterator8Iterator3any5check28_$u7b$$u7b$closure$u7d$$u7d$17he6ddcdbf57967a49E.exit.us.i.i.i" ], [ %.sroa.5.0..sroa_idx10.i, %.critedge.backedge.us.i.i.i ] - %.030.i = phi i1 [ %51, %50 ], [ false, %49 ], [ %112, %111 ], [ true, %.lr.ph.split.us.i.i.i ], [ false, %.thread ], [ %.not28.i.i.i, %"_ZN4core4iter6traits8iterator8Iterator3any5check28_$u7b$$u7b$closure$u7d$$u7d$17he6ddcdbf57967a49E.exit.us.i.i.i" ], [ %.not28.i.i.i, %.critedge.backedge.us.i.i.i ] + %.030.i = phi i1 [ %51, %50 ], [ false, %49 ], [ %112, %111 ], [ true, %.lr.ph.split.us.i.i.i ], [ false, %.thread ], [ %exitcond.i.i.not.i.not.not, %"_ZN4core4iter6traits8iterator8Iterator3any5check28_$u7b$$u7b$closure$u7d$$u7d$17he6ddcdbf57967a49E.exit.us.i.i.i" ], [ %exitcond.i.i.not.i.not.not, %.critedge.backedge.us.i.i.i ] call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7), !noalias !53 call void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h530dd18be7b42d61E.llvm.11579535172419908104"(ptr noalias noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 captures(none) dereferenceable(24) %7, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %17) %119 = getelementptr inbounds nuw i8, ptr %7, i64 8 diff --git a/bench/assimp/optimized/FindInstancesProcess.ll b/bench/assimp/optimized/FindInstancesProcess.ll index d91da9dcd04..58491c37c9d 100644 --- a/bench/assimp/optimized/FindInstancesProcess.ll +++ b/bench/assimp/optimized/FindInstancesProcess.ll @@ -398,11 +398,11 @@ define hidden void @_ZN6Assimp20FindInstancesProcess7ExecuteEP7aiScene(ptr nound 18: ; preds = %.lr.ph319, %338 %19 = phi ptr [ %.pre, %.lr.ph319 ], [ %332, %338 ] - %indvars.iv369 = phi i64 [ 0, %.lr.ph319 ], [ %indvars.iv.next370, %338 ] + %indvars.iv370 = phi i64 [ 0, %.lr.ph319 ], [ %indvars.iv.next371, %338 ] %indvars.iv364 = phi i32 [ -1, %.lr.ph319 ], [ %indvars.iv.next365, %338 ] %.0146318 = phi i32 [ 0, %.lr.ph319 ], [ %.1147, %338 ] %20 = zext i32 %indvars.iv364 to i64 - %21 = getelementptr inbounds nuw ptr, ptr %19, i64 %indvars.iv369 + %21 = getelementptr inbounds nuw ptr, ptr %19, i64 %indvars.iv370 %22 = load ptr, ptr %21, align 8 %23 = invoke noundef i32 @_ZN6Assimp20GetMeshVFormatUniqueEPK6aiMesh(ptr noundef %22) to label %24 unwind label %59 @@ -429,14 +429,14 @@ define hidden void @_ZN6Assimp20FindInstancesProcess7ExecuteEP7aiScene(ptr nound %43 = xor i32 %40, %42 %44 = zext i32 %43 to i64 %45 = or disjoint i64 %26, %44 - %46 = getelementptr inbounds nuw i64, ptr %10, i64 %indvars.iv369 + %46 = getelementptr inbounds nuw i64, ptr %10, i64 %indvars.iv370 store i64 %45, ptr %46, align 8 %47 = invoke noundef float @_ZN6Assimp22ComputePositionEpsilonEPK6aiMesh(ptr noundef nonnull %22) to label %48 unwind label %61 48: ; preds = %24 %49 = fmul float %47, %47 - %50 = trunc nuw i64 %indvars.iv369 to i32 + %50 = trunc nuw i64 %indvars.iv370 to i32 %.0155313 = add i32 %50, -1 %51 = icmp sgt i32 %.0155313, -1 br i1 %51, label %.lr.ph316, label %.loopexit @@ -748,7 +748,7 @@ _ZNK6aiMesh16GetNumUVChannelsEv.exit.preheader: ; preds = %199 _ZN6Assimp13CompareArraysEPK10aiVector3tIfES3_jf.exit218.thread: ; preds = %228, %207, %204 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count - br i1 %exitcond.not, label %_ZN6Assimp13CompareArraysEPK10aiVector3tIfES3_jf.exit218.thread372, label %204, !llvm.loop !10 + br i1 %exitcond.not, label %_ZN6Assimp13CompareArraysEPK10aiVector3tIfES3_jf.exit218.thread373, label %204, !llvm.loop !10 _ZN6Assimp13CompareArraysEPK10aiVector3tIfES3_jf.exit218.loopexit: ; preds = %.lr.ph.i213 %231 = trunc nuw i64 %indvars.iv to i32 @@ -757,14 +757,14 @@ _ZN6Assimp13CompareArraysEPK10aiVector3tIfES3_jf.exit218.loopexit: ; preds = %.l _ZN6Assimp13CompareArraysEPK10aiVector3tIfES3_jf.exit218: ; preds = %_ZN6Assimp13CompareArraysEPK10aiVector3tIfES3_jf.exit218.loopexit, %_ZNK6aiMesh16GetNumUVChannelsEv.exit.preheader %.0150285 = phi i32 [ 0, %_ZNK6aiMesh16GetNumUVChannelsEv.exit.preheader ], [ %231, %_ZN6Assimp13CompareArraysEPK10aiVector3tIfES3_jf.exit218.loopexit ] %.not170 = icmp eq i32 %.0150285, %spec.select.i - br i1 %.not170, label %_ZN6Assimp13CompareArraysEPK10aiVector3tIfES3_jf.exit218.thread372, label %_ZN6Assimp13CompareArraysEPK10aiVector3tIfES3_jf.exit.thread269 + br i1 %.not170, label %_ZN6Assimp13CompareArraysEPK10aiVector3tIfES3_jf.exit218.thread373, label %_ZN6Assimp13CompareArraysEPK10aiVector3tIfES3_jf.exit.thread269 -_ZN6Assimp13CompareArraysEPK10aiVector3tIfES3_jf.exit218.thread372: ; preds = %_ZN6Assimp13CompareArraysEPK10aiVector3tIfES3_jf.exit218.thread, %_ZN6Assimp13CompareArraysEPK10aiVector3tIfES3_jf.exit218 +_ZN6Assimp13CompareArraysEPK10aiVector3tIfES3_jf.exit218.thread373: ; preds = %_ZN6Assimp13CompareArraysEPK10aiVector3tIfES3_jf.exit218.thread, %_ZN6Assimp13CompareArraysEPK10aiVector3tIfES3_jf.exit218 %232 = getelementptr inbounds nuw i8, ptr %71, i64 48 br label %233 -233: ; preds = %236, %_ZN6Assimp13CompareArraysEPK10aiVector3tIfES3_jf.exit218.thread372 - %indvars.iv.i219 = phi i64 [ 0, %_ZN6Assimp13CompareArraysEPK10aiVector3tIfES3_jf.exit218.thread372 ], [ %indvars.iv.next.i221, %236 ] +233: ; preds = %236, %_ZN6Assimp13CompareArraysEPK10aiVector3tIfES3_jf.exit218.thread373 + %indvars.iv.i219 = phi i64 [ 0, %_ZN6Assimp13CompareArraysEPK10aiVector3tIfES3_jf.exit218.thread373 ], [ %indvars.iv.next.i221, %236 ] %234 = getelementptr inbounds nuw [8 x ptr], ptr %232, i64 0, i64 %indvars.iv.i219 %235 = load ptr, ptr %234, align 8 %.not.i220 = icmp eq ptr %235, null @@ -781,11 +781,11 @@ _ZNK6aiMesh19GetNumColorChannelsEv.exit: ; preds = %233 br i1 %.not329, label %_ZN6Assimp13CompareArraysEPK9aiColor4tIfES3_jf.exit, label %.lr.ph303 .lr.ph303: ; preds = %236, %_ZNK6aiMesh19GetNumColorChannelsEv.exit - %.0.lcssa.i377 = phi i32 [ %237, %_ZNK6aiMesh19GetNumColorChannelsEv.exit ], [ 8, %236 ] + %.0.lcssa.i378 = phi i32 [ %237, %_ZNK6aiMesh19GetNumColorChannelsEv.exit ], [ 8, %236 ] %238 = zext i32 %82 to i64 %.idx.i223 = shl nuw nsw i64 %238, 4 %.not13.i224 = icmp eq i32 %82, 0 - %wide.trip.count353 = zext i32 %.0.lcssa.i377 to i64 + %wide.trip.count353 = zext i32 %.0.lcssa.i378 to i64 br label %239 239: ; preds = %.lr.ph303, %_ZN6Assimp13CompareArraysEPK9aiColor4tIfES3_jf.exit.thread @@ -841,24 +841,24 @@ _ZNK6aiMesh19GetNumColorChannelsEv.exit: ; preds = %233 _ZN6Assimp13CompareArraysEPK9aiColor4tIfES3_jf.exit.thread: ; preds = %269, %242, %239 %indvars.iv.next351 = add nuw nsw i64 %indvars.iv350, 1 %exitcond354.not = icmp eq i64 %indvars.iv.next351, %wide.trip.count353 - br i1 %exitcond354.not, label %_ZN6Assimp13CompareArraysEPK9aiColor4tIfES3_jf.exit.thread379, label %239, !llvm.loop !13 + br i1 %exitcond354.not, label %_ZN6Assimp13CompareArraysEPK9aiColor4tIfES3_jf.exit.thread380, label %239, !llvm.loop !13 _ZN6Assimp13CompareArraysEPK9aiColor4tIfES3_jf.exit.loopexit: ; preds = %.lr.ph.i225 %272 = trunc nuw nsw i64 %indvars.iv350 to i32 br label %_ZN6Assimp13CompareArraysEPK9aiColor4tIfES3_jf.exit _ZN6Assimp13CompareArraysEPK9aiColor4tIfES3_jf.exit: ; preds = %_ZN6Assimp13CompareArraysEPK9aiColor4tIfES3_jf.exit.loopexit, %_ZNK6aiMesh19GetNumColorChannelsEv.exit - %.0.lcssa.i378 = phi i32 [ 0, %_ZNK6aiMesh19GetNumColorChannelsEv.exit ], [ %.0.lcssa.i377, %_ZN6Assimp13CompareArraysEPK9aiColor4tIfES3_jf.exit.loopexit ] + %.0.lcssa.i379 = phi i32 [ 0, %_ZNK6aiMesh19GetNumColorChannelsEv.exit ], [ %.0.lcssa.i378, %_ZN6Assimp13CompareArraysEPK9aiColor4tIfES3_jf.exit.loopexit ] %.0148288 = phi i32 [ 0, %_ZNK6aiMesh19GetNumColorChannelsEv.exit ], [ %272, %_ZN6Assimp13CompareArraysEPK9aiColor4tIfES3_jf.exit.loopexit ] - %.not172 = icmp eq i32 %.0148288, %.0.lcssa.i378 - br i1 %.not172, label %_ZN6Assimp13CompareArraysEPK9aiColor4tIfES3_jf.exit.thread379, label %_ZN6Assimp13CompareArraysEPK10aiVector3tIfES3_jf.exit.thread269 + %.not172 = icmp eq i32 %.0148288, %.0.lcssa.i379 + br i1 %.not172, label %_ZN6Assimp13CompareArraysEPK9aiColor4tIfES3_jf.exit.thread380, label %_ZN6Assimp13CompareArraysEPK10aiVector3tIfES3_jf.exit.thread269 -_ZN6Assimp13CompareArraysEPK9aiColor4tIfES3_jf.exit.thread379: ; preds = %_ZN6Assimp13CompareArraysEPK9aiColor4tIfES3_jf.exit.thread, %_ZN6Assimp13CompareArraysEPK9aiColor4tIfES3_jf.exit +_ZN6Assimp13CompareArraysEPK9aiColor4tIfES3_jf.exit.thread380: ; preds = %_ZN6Assimp13CompareArraysEPK9aiColor4tIfES3_jf.exit.thread, %_ZN6Assimp13CompareArraysEPK9aiColor4tIfES3_jf.exit %273 = load i8, ptr %14, align 8, !range !14, !noundef !15 %274 = trunc nuw i8 %273 to i1 br i1 %274, label %_ZN6Assimp13CompareArraysEPK10aiVector3tIfES3_jf.exit.thread272, label %275 -275: ; preds = %_ZN6Assimp13CompareArraysEPK9aiColor4tIfES3_jf.exit.thread379 +275: ; preds = %_ZN6Assimp13CompareArraysEPK9aiColor4tIfES3_jf.exit.thread380 %276 = tail call noundef zeroext i1 @_Z12CompareBonesPK6aiMeshS1_(ptr noundef nonnull %71, ptr noundef nonnull %22) br i1 %276, label %277, label %_ZN6Assimp13CompareArraysEPK10aiVector3tIfES3_jf.exit.thread269 @@ -965,42 +965,43 @@ _ZNSt10unique_ptrIA_jSt14default_deleteIS0_EED2Ev.exit235: ; preds = %281 %325 = icmp samesign ult i64 %indvars.iv.next359, %324 br i1 %325, label %317, label %._crit_edge310, !llvm.loop !18 -_ZN6Assimp13CompareArraysEPK10aiVector3tIfES3_jf.exit.thread272: ; preds = %_ZN6Assimp13CompareArraysEPK9aiColor4tIfES3_jf.exit.thread379, %_ZNSt10unique_ptrIA_jSt14default_deleteIS0_EED2Ev.exit232 +_ZN6Assimp13CompareArraysEPK10aiVector3tIfES3_jf.exit.thread272: ; preds = %_ZN6Assimp13CompareArraysEPK9aiColor4tIfES3_jf.exit.thread380, %_ZNSt10unique_ptrIA_jSt14default_deleteIS0_EED2Ev.exit232 %326 = getelementptr inbounds nuw i32, ptr %12, i64 %indvars.iv366 %327 = load i32, ptr %326, align 4 - %328 = getelementptr inbounds nuw i32, ptr %12, i64 %indvars.iv369 + %328 = getelementptr inbounds nuw i32, ptr %12, i64 %indvars.iv370 store i32 %327, ptr %328, align 4 tail call void @_ZN6aiMeshD2Ev(ptr noundef nonnull align 8 dereferenceable(1320) %22) #21 tail call void @_ZdlPvm(ptr noundef %22, i64 noundef 1320) #23 %329 = load ptr, ptr %13, align 8 - %330 = getelementptr inbounds nuw ptr, ptr %329, i64 %indvars.iv369 + %330 = getelementptr inbounds nuw ptr, ptr %329, i64 %indvars.iv370 store ptr null, ptr %330, align 8 br label %.loopexit _ZN6Assimp13CompareArraysEPK10aiVector3tIfES3_jf.exit.thread269: ; preds = %.lr.ph.i, %.lr.ph.i187, %.lr.ph.i196, %.lr.ph.i204, %_ZN6Assimp13CompareArraysEPK10aiVector3tIfES3_jf.exit218, %_ZN6Assimp13CompareArraysEPK9aiColor4tIfES3_jf.exit, %_ZNSt10unique_ptrIA_jSt14default_deleteIS0_EED2Ev.exit232, %275, %72, %76, %80, %84, %88, %68, %63 %indvars.iv.next367 = add nsw i64 %indvars.iv366, -1 - %331 = icmp sgt i64 %indvars.iv366, 0 - br i1 %331, label %63, label %.loopexit, !llvm.loop !19 + %331 = and i64 %indvars.iv.next367, 4294967295 + %exitcond369.not = icmp eq i64 %331, 4294967295 + br i1 %exitcond369.not, label %.loopexit, label %63, !llvm.loop !19 .loopexit: ; preds = %_ZN6Assimp13CompareArraysEPK10aiVector3tIfES3_jf.exit.thread269, %48, %_ZN6Assimp13CompareArraysEPK10aiVector3tIfES3_jf.exit.thread272 %332 = load ptr, ptr %13, align 8 - %333 = getelementptr inbounds nuw ptr, ptr %332, i64 %indvars.iv369 + %333 = getelementptr inbounds nuw ptr, ptr %332, i64 %indvars.iv370 %334 = load ptr, ptr %333, align 8 %.not180 = icmp eq ptr %334, null br i1 %.not180, label %338, label %335 335: ; preds = %.loopexit %336 = add i32 %.0146318, 1 - %337 = getelementptr inbounds nuw i32, ptr %12, i64 %indvars.iv369 + %337 = getelementptr inbounds nuw i32, ptr %12, i64 %indvars.iv370 store i32 %.0146318, ptr %337, align 4 br label %338 338: ; preds = %335, %.loopexit %.1147 = phi i32 [ %336, %335 ], [ %.0146318, %.loopexit ] - %indvars.iv.next370 = add nuw nsw i64 %indvars.iv369, 1 + %indvars.iv.next371 = add nuw nsw i64 %indvars.iv370, 1 %339 = load i32, ptr %5, align 8 %340 = zext i32 %339 to i64 - %341 = icmp samesign ult i64 %indvars.iv.next370, %340 + %341 = icmp samesign ult i64 %indvars.iv.next371, %340 %indvars.iv.next365 = add i32 %indvars.iv364, 1 br i1 %341, label %18, label %._crit_edge320, !llvm.loop !20 diff --git a/bench/bdwgc/optimized/gc.ll b/bench/bdwgc/optimized/gc.ll index c724ebe7fcd..76c7c70d39a 100644 --- a/bench/bdwgc/optimized/gc.ll +++ b/bench/bdwgc/optimized/gc.ll @@ -17070,7 +17070,7 @@ GC_next_exclusion.exit: ; preds = %._crit_edge.i.threa 27: ; preds = %25 store ptr %0, ptr %20, align 8, !tbaa !235 - br label %44 + br label %43 GC_next_exclusion.exit.thread: ; preds = %._crit_edge.i %28 = icmp ugt i64 %3, 511 @@ -17099,20 +17099,20 @@ GC_next_exclusion.exit.thread: ; preds = %._crit_edge.i %38 = add nsw i64 %.040, -1 %39 = getelementptr inbounds nuw [512 x %struct.exclusion], ptr getelementptr inbounds nuw (i8, ptr @GC_arrays, i64 158224), i64 0, i64 %38 tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %37, ptr noundef nonnull align 8 dereferenceable(16) %39, i64 16, i1 false), !tbaa.struct !236 - %40 = icmp ugt i64 %38, %35 - br i1 %40, label %.lr.ph, label %GC_next_exclusion.exit.thread.thread, !llvm.loop !237 + %exitcond.not = icmp eq i64 %38, %35 + br i1 %exitcond.not, label %GC_next_exclusion.exit.thread.thread, label %.lr.ph, !llvm.loop !237 GC_next_exclusion.exit.thread.thread: ; preds = %.lr.ph, %32, %._crit_edge.i.thread, %2, %GC_next_exclusion.exit.thread %.019 = phi i64 [ %3, %GC_next_exclusion.exit.thread ], [ 0, %2 ], [ 1, %._crit_edge.i.thread ], [ %35, %32 ], [ %35, %.lr.ph ] - %41 = getelementptr inbounds nuw [512 x %struct.exclusion], ptr getelementptr inbounds nuw (i8, ptr @GC_arrays, i64 158224), i64 0, i64 %.019 - store ptr %0, ptr %41, align 8, !tbaa !235 - %42 = getelementptr inbounds nuw i8, ptr %41, i64 8 - store ptr %1, ptr %42, align 8, !tbaa !232 - %43 = add nuw nsw i64 %3, 1 - store i64 %43, ptr getelementptr inbounds nuw (i8, ptr @GC_arrays, i64 424), align 8, !tbaa !231 - br label %44 + %40 = getelementptr inbounds nuw [512 x %struct.exclusion], ptr getelementptr inbounds nuw (i8, ptr @GC_arrays, i64 158224), i64 0, i64 %.019 + store ptr %0, ptr %40, align 8, !tbaa !235 + %41 = getelementptr inbounds nuw i8, ptr %40, i64 8 + store ptr %1, ptr %41, align 8, !tbaa !232 + %42 = add nuw nsw i64 %3, 1 + store i64 %42, ptr getelementptr inbounds nuw (i8, ptr @GC_arrays, i64 424), align 8, !tbaa !231 + br label %43 -44: ; preds = %GC_next_exclusion.exit.thread.thread, %27 +43: ; preds = %GC_next_exclusion.exit.thread.thread, %27 ret void } @@ -37455,8 +37455,9 @@ define internal range(i32 0, 2) i32 @GC_register_dynlib_callback(ptr noundef rea br label %.loopexit 86: ; preds = %83 - %87 = icmp samesign ugt i64 %indvars.iv, 1 - br i1 %87, label %.lr.ph65, label %.loopexit, !llvm.loop !488 + %87 = and i64 %indvars.iv.next, 4294967295 + %exitcond.not = icmp eq i64 %87, 0 + br i1 %exitcond.not, label %.loopexit, label %.lr.ph65, !llvm.loop !488 .loopexit: ; preds = %86, %.thread, %54, %80, %78, %.lr.ph69 %88 = add nuw nsw i32 %.167, 1 diff --git a/bench/boost/optimized/ext.ll b/bench/boost/optimized/ext.ll index ebf88a5b50a..9de83b3d477 100644 --- a/bench/boost/optimized/ext.ll +++ b/bench/boost/optimized/ext.ll @@ -25298,8 +25298,8 @@ _ZN5boost4asio6detail8op_queueINS1_10reactor_opEE3popEv.exit: ; preds = %47, %41 .thread: ; preds = %_ZN5boost4asio6detail10reactor_op7performEv.exit, %35, %50, %26 %indvars.iv.next = add nsw i64 %indvars.iv, -1 - %.not34 = icmp eq i64 %indvars.iv, 0 - br i1 %.not34, label %18, label %26, !llvm.loop !627 + %exitcond.not = icmp eq i64 %indvars.iv, 0 + br i1 %exitcond.not, label %18, label %26, !llvm.loop !627 _ZN5boost4asio6detail8op_queueINS1_19scheduler_operationEE3popEv.exit: ; preds = %25, %18 br i1 %11, label %53, label %_ZN5boost4asio6detail27conditionally_enabled_mutex11scoped_lockD2Ev.exit diff --git a/bench/box2d/optimized/sample_collision.ll b/bench/box2d/optimized/sample_collision.ll index e748dccfcba..5e5ef6802ae 100644 --- a/bench/box2d/optimized/sample_collision.ll +++ b/bench/box2d/optimized/sample_collision.ll @@ -5048,7 +5048,7 @@ define internal noundef float @_ZL21RayCastSortedCallback9b2ShapeId6b2Vec2S0_fPv %8 = getelementptr inbounds nuw i8, ptr %6, i64 4 %9 = load i8, ptr %8, align 4, !tbaa !201, !range !13, !noundef !14 %10 = trunc nuw i8 %9 to i1 - br i1 %10, label %48, label %11 + br i1 %10, label %44, label %11 11: ; preds = %7, %5 %12 = getelementptr inbounds nuw i8, ptr %4, i64 60 @@ -5073,57 +5073,59 @@ define internal noundef float @_ZL21RayCastSortedCallback9b2ShapeId6b2Vec2S0_fPv br i1 %22, label %.sink.split, label %.preheader .preheader: ; preds = %21 - %23 = trunc nuw nsw i64 %indvars.iv to i32 - %24 = icmp slt i64 %indvars.iv, 2 - br i1 %24, label %.lr.ph, label %._crit_edge + %23 = icmp slt i64 %indvars.iv, 2 + br i1 %23, label %.lr.ph, label %.preheader.._crit_edge_crit_edge + +.preheader.._crit_edge_crit_edge: ; preds = %.preheader + %.pre = and i64 %indvars.iv, 4294967295 + br label %._crit_edge .lr.ph: ; preds = %19, %.preheader - %.15356 = phi i32 [ %23, %.preheader ], [ 0, %19 ] - %25 = getelementptr inbounds nuw i8, ptr %4, i64 24 - %26 = sext i32 %.15356 to i64 - br label %35 - -._crit_edge: ; preds = %35, %.preheader - %.15355 = phi i32 [ %23, %.preheader ], [ %.15356, %35 ] - %27 = zext nneg i32 %.15355 to i64 - %28 = getelementptr inbounds nuw [3 x %struct.b2Vec2], ptr %4, i64 0, i64 %27 - store <2 x float> %1, ptr %28, align 4 - %29 = getelementptr inbounds nuw i8, ptr %4, i64 24 - %30 = getelementptr inbounds nuw [3 x %struct.b2Vec2], ptr %29, i64 0, i64 %27 - store <2 x float> %2, ptr %30, align 4 - %31 = getelementptr inbounds nuw [3 x float], ptr %14, i64 0, i64 %27 - store float %3, ptr %31, align 4, !tbaa !15 - %32 = tail call i32 @llvm.smin.i32(i32 %13, i32 2) - %33 = add nsw i32 %32, 1 - store i32 %33, ptr %12, align 4, !tbaa !219 - %34 = icmp eq i32 %33, 3 - br i1 %34, label %.sink.split, label %48 - -35: ; preds = %.lr.ph, %35 - %indvars.iv49 = phi i64 [ 2, %.lr.ph ], [ %indvars.iv.next50, %35 ] + %.15355 = phi i64 [ %indvars.iv, %.preheader ], [ 0, %19 ] + %24 = getelementptr inbounds nuw i8, ptr %4, i64 24 + %wide.trip.count = and i64 %.15355, 4294967295 + br label %32 + +._crit_edge: ; preds = %32, %.preheader.._crit_edge_crit_edge + %.pre-phi = phi i64 [ %.pre, %.preheader.._crit_edge_crit_edge ], [ %wide.trip.count, %32 ] + %25 = getelementptr inbounds nuw [3 x %struct.b2Vec2], ptr %4, i64 0, i64 %.pre-phi + store <2 x float> %1, ptr %25, align 4 + %26 = getelementptr inbounds nuw i8, ptr %4, i64 24 + %27 = getelementptr inbounds nuw [3 x %struct.b2Vec2], ptr %26, i64 0, i64 %.pre-phi + store <2 x float> %2, ptr %27, align 4 + %28 = getelementptr inbounds nuw [3 x float], ptr %14, i64 0, i64 %.pre-phi + store float %3, ptr %28, align 4, !tbaa !15 + %29 = tail call i32 @llvm.smin.i32(i32 %13, i32 2) + %30 = add nsw i32 %29, 1 + store i32 %30, ptr %12, align 4, !tbaa !219 + %31 = icmp eq i32 %30, 3 + br i1 %31, label %.sink.split, label %44 + +32: ; preds = %.lr.ph, %32 + %indvars.iv49 = phi i64 [ 2, %.lr.ph ], [ %indvars.iv.next50, %32 ] %indvars.iv.next50 = add nsw i64 %indvars.iv49, -1 - %36 = getelementptr inbounds nuw [3 x %struct.b2Vec2], ptr %4, i64 0, i64 %indvars.iv.next50 - %37 = getelementptr inbounds nuw [3 x %struct.b2Vec2], ptr %4, i64 0, i64 %indvars.iv49 + %33 = getelementptr inbounds nuw [3 x %struct.b2Vec2], ptr %4, i64 0, i64 %indvars.iv.next50 + %34 = getelementptr inbounds nuw [3 x %struct.b2Vec2], ptr %4, i64 0, i64 %indvars.iv49 + %35 = load i64, ptr %33, align 4 + store i64 %35, ptr %34, align 4 + %36 = getelementptr inbounds nuw [3 x %struct.b2Vec2], ptr %24, i64 0, i64 %indvars.iv.next50 + %37 = getelementptr inbounds nuw [3 x %struct.b2Vec2], ptr %24, i64 0, i64 %indvars.iv49 %38 = load i64, ptr %36, align 4 store i64 %38, ptr %37, align 4 - %39 = getelementptr inbounds nuw [3 x %struct.b2Vec2], ptr %25, i64 0, i64 %indvars.iv.next50 - %40 = getelementptr inbounds nuw [3 x %struct.b2Vec2], ptr %25, i64 0, i64 %indvars.iv49 - %41 = load i64, ptr %39, align 4 - store i64 %41, ptr %40, align 4 - %42 = getelementptr inbounds nuw [3 x float], ptr %14, i64 0, i64 %indvars.iv.next50 - %43 = load float, ptr %42, align 4, !tbaa !15 - %44 = getelementptr inbounds nuw [3 x float], ptr %14, i64 0, i64 %indvars.iv49 - store float %43, ptr %44, align 4, !tbaa !15 - %45 = icmp samesign ugt i64 %indvars.iv.next50, %26 - br i1 %45, label %35, label %._crit_edge, !llvm.loop !230 + %39 = getelementptr inbounds nuw [3 x float], ptr %14, i64 0, i64 %indvars.iv.next50 + %40 = load float, ptr %39, align 4, !tbaa !15 + %41 = getelementptr inbounds nuw [3 x float], ptr %14, i64 0, i64 %indvars.iv49 + store float %40, ptr %41, align 4, !tbaa !15 + %exitcond.not = icmp eq i64 %indvars.iv.next50, %wide.trip.count + br i1 %exitcond.not, label %._crit_edge, label %32, !llvm.loop !230 .sink.split: ; preds = %._crit_edge, %21 - %46 = getelementptr inbounds nuw i8, ptr %4, i64 56 - %47 = load float, ptr %46, align 4, !tbaa !15 - br label %48 + %42 = getelementptr inbounds nuw i8, ptr %4, i64 56 + %43 = load float, ptr %42, align 4, !tbaa !15 + br label %44 -48: ; preds = %.sink.split, %._crit_edge, %7 - %.042 = phi float [ -1.000000e+00, %7 ], [ 1.000000e+00, %._crit_edge ], [ %47, %.sink.split ] +44: ; preds = %.sink.split, %._crit_edge, %7 + %.042 = phi float [ -1.000000e+00, %7 ], [ 1.000000e+00, %._crit_edge ], [ %43, %.sink.split ] ret float %.042 } diff --git a/bench/box2d/optimized/settings.ll b/bench/box2d/optimized/settings.ll index 5ee8dda70bb..3fd6bc6e4d5 100644 --- a/bench/box2d/optimized/settings.ll +++ b/bench/box2d/optimized/settings.ll @@ -123,7 +123,7 @@ _ZL16jsmn_alloc_tokenP11jsmn_parserP7jsmntokm.exit: ; preds = %21 .lr.ph205: ; preds = %.lr.ph205.preheader, %56 %indvars.iv246 = phi i64 [ %42, %.lr.ph205.preheader ], [ %indvars.iv.next247, %56 ] - %.0107.in203 = phi i32 [ %12, %.lr.ph205.preheader ], [ %58, %56 ] + %.0107.in203 = phi i32 [ %12, %.lr.ph205.preheader ], [ %57, %56 ] %43 = getelementptr inbounds nuw %struct.jsmntok, ptr %3, i64 %indvars.iv246 %44 = getelementptr inbounds nuw i8, ptr %43, i64 4 %45 = load i32, ptr %44, align 4, !tbaa !17 @@ -151,9 +151,10 @@ _ZL16jsmn_alloc_tokenP11jsmn_parserP7jsmntokm.exit: ; preds = %21 56: ; preds = %.lr.ph205, %46 %indvars.iv.next247 = add nsw i64 %indvars.iv246, -1 - %57 = icmp sgt i64 %indvars.iv246, 0 - %58 = trunc nuw nsw i64 %indvars.iv246 to i32 - br i1 %57, label %.lr.ph205, label %_ZL16jsmn_alloc_tokenP11jsmn_parserP7jsmntokm.exit.thread, !llvm.loop !18 + %57 = trunc nuw nsw i64 %indvars.iv246 to i32 + %58 = and i64 %indvars.iv.next247, 4294967295 + %exitcond250.not = icmp eq i64 %58, 4294967295 + br i1 %exitcond250.not, label %_ZL16jsmn_alloc_tokenP11jsmn_parserP7jsmntokm.exit.thread, label %.lr.ph205, !llvm.loop !18 .loopexit166: ; preds = %38, %52 %.0107.in179 = phi i32 [ %.0107.in203, %52 ], [ %12, %38 ] @@ -170,8 +171,8 @@ _ZL16jsmn_alloc_tokenP11jsmn_parserP7jsmntokm.exit: ; preds = %21 br label %.lr.ph208 .lr.ph208: ; preds = %.lr.ph208.preheader, %71 - %indvars.iv249 = phi i64 [ %61, %.lr.ph208.preheader ], [ %indvars.iv.next250, %71 ] - %62 = getelementptr inbounds nuw %struct.jsmntok, ptr %3, i64 %indvars.iv249 + %indvars.iv251 = phi i64 [ %61, %.lr.ph208.preheader ], [ %indvars.iv.next252, %71 ] + %62 = getelementptr inbounds nuw %struct.jsmntok, ptr %3, i64 %indvars.iv251 %63 = getelementptr inbounds nuw i8, ptr %62, i64 4 %64 = load i32, ptr %63, align 4, !tbaa !17 %.not138 = icmp eq i32 %64, -1 @@ -184,14 +185,15 @@ _ZL16jsmn_alloc_tokenP11jsmn_parserP7jsmntokm.exit: ; preds = %21 br i1 %68, label %69, label %71 69: ; preds = %65 - %70 = trunc nuw nsw i64 %indvars.iv249 to i32 + %70 = trunc nuw nsw i64 %indvars.iv251 to i32 store i32 %70, ptr %10, align 4, !tbaa !15 br label %.loopexit 71: ; preds = %.lr.ph208, %65 - %indvars.iv.next250 = add nsw i64 %indvars.iv249, -1 - %72 = icmp sgt i64 %indvars.iv249, 0 - br i1 %72, label %.lr.ph208, label %.loopexit, !llvm.loop !20 + %indvars.iv.next252 = add nsw i64 %indvars.iv251, -1 + %72 = and i64 %indvars.iv.next252, 4294967295 + %exitcond255.not = icmp eq i64 %72, 4294967295 + br i1 %exitcond255.not, label %.loopexit, label %.lr.ph208, !llvm.loop !20 73: ; preds = %11 %74 = add i32 %16, 1 @@ -386,8 +388,9 @@ _ZL17jsmn_parse_stringP11jsmn_parserPKcmP7jsmntokm.exit: ; preds = %82 145: ; preds = %.lr.ph, %139, %136 %indvars.iv.next = add nsw i64 %indvars.iv, -1 - %146 = icmp sgt i64 %indvars.iv, 0 - br i1 %146, label %.lr.ph, label %.loopexit, !llvm.loop !23 + %146 = and i64 %indvars.iv.next, 4294967295 + %exitcond.not = icmp eq i64 %146, 4294967295 + br i1 %exitcond.not, label %.loopexit, label %.lr.ph, !llvm.loop !23 .lr.ph.i147: ; preds = %11, %153 %147 = phi i64 [ %155, %153 ], [ %15, %11 ] @@ -485,8 +488,8 @@ _ZL17jsmn_parse_stringP11jsmn_parserPKcmP7jsmntokm.exit: ; preds = %82 br label %.lr.ph219 .lr.ph219: ; preds = %.lr.ph219.preheader, %193 - %indvars.iv252 = phi i64 [ %185, %.lr.ph219.preheader ], [ %indvars.iv.next253, %193 ] - %186 = getelementptr inbounds nuw %struct.jsmntok, ptr %3, i64 %indvars.iv252 + %indvars.iv256 = phi i64 [ %185, %.lr.ph219.preheader ], [ %indvars.iv.next257, %193 ] + %186 = getelementptr inbounds nuw %struct.jsmntok, ptr %3, i64 %indvars.iv256 %187 = getelementptr inbounds nuw i8, ptr %186, i64 4 %188 = load i32, ptr %187, align 4, !tbaa !17 %.not130 = icmp eq i32 %188, -1 @@ -499,9 +502,10 @@ _ZL17jsmn_parse_stringP11jsmn_parserPKcmP7jsmntokm.exit: ; preds = %82 br i1 %192, label %_ZL16jsmn_alloc_tokenP11jsmn_parserP7jsmntokm.exit.thread, label %193 193: ; preds = %.lr.ph219, %189 - %indvars.iv.next253 = add nsw i64 %indvars.iv252, -1 - %194 = icmp sgt i64 %indvars.iv252, 0 - br i1 %194, label %.lr.ph219, label %_ZL16jsmn_alloc_tokenP11jsmn_parserP7jsmntokm.exit.thread, !llvm.loop !26 + %indvars.iv.next257 = add nsw i64 %indvars.iv256, -1 + %194 = and i64 %indvars.iv.next257, 4294967295 + %exitcond260.not = icmp eq i64 %194, 4294967295 + br i1 %exitcond260.not, label %_ZL16jsmn_alloc_tokenP11jsmn_parserP7jsmntokm.exit.thread, label %.lr.ph219, !llvm.loop !26 _ZL16jsmn_alloc_tokenP11jsmn_parserP7jsmntokm.exit.thread.sink.split: ; preds = %159, %73, %82, %.lr.ph.i, %105, %87, %151, %switch.early.test.i %.2.ph = phi i32 [ -2, %switch.early.test.i ], [ -2, %151 ], [ -2, %87 ], [ -3, %105 ], [ -3, %.lr.ph.i ], [ -1, %82 ], [ -3, %73 ], [ -1, %159 ] diff --git a/bench/casadi/optimized/sundials_spgmr.ll b/bench/casadi/optimized/sundials_spgmr.ll index 968fb288e60..e092854152c 100644 --- a/bench/casadi/optimized/sundials_spgmr.ll +++ b/bench/casadi/optimized/sundials_spgmr.ll @@ -602,8 +602,9 @@ define range(i32 -5, 6) i32 @SpgmrSolve(ptr noundef readonly captures(address_is %166 = load double, ptr %165, align 8, !tbaa !30 %167 = fmul double %.0275350, %166 %indvars.iv.next403 = add nsw i64 %indvars.iv402, -1 - %168 = icmp samesign ugt i64 %indvars.iv402, 1 - br i1 %168, label %.lr.ph352, label %._crit_edge353.thread, !llvm.loop !35 + %168 = and i64 %indvars.iv.next403, 4294967295 + %exitcond406.not = icmp eq i64 %168, 0 + br i1 %exitcond406.not, label %._crit_edge353.thread, label %.lr.ph352, !llvm.loop !35 ._crit_edge353.thread: ; preds = %.lr.ph352 store double %167, ptr %29, align 8, !tbaa !30 @@ -618,18 +619,18 @@ define range(i32 -5, 6) i32 @SpgmrSolve(ptr noundef readonly captures(address_is .lr.ph358.preheader: ; preds = %._crit_edge353.thread, %._crit_edge353 %170 = phi double [ %169, %._crit_edge353.thread ], [ %.0270366, %._crit_edge353 ] %171 = add nuw i32 %.2, 1 - %wide.trip.count410 = zext i32 %171 to i64 + %wide.trip.count411 = zext i32 %171 to i64 br label %.lr.ph358 .lr.ph358: ; preds = %.lr.ph358.preheader, %.lr.ph358 - %indvars.iv406 = phi i64 [ 0, %.lr.ph358.preheader ], [ %indvars.iv.next407, %.lr.ph358 ] - %172 = getelementptr inbounds nuw double, ptr %29, i64 %indvars.iv406 + %indvars.iv407 = phi i64 [ 0, %.lr.ph358.preheader ], [ %indvars.iv.next408, %.lr.ph358 ] + %172 = getelementptr inbounds nuw double, ptr %29, i64 %indvars.iv407 %173 = load double, ptr %172, align 8, !tbaa !30 %174 = fmul double %170, %173 store double %174, ptr %172, align 8, !tbaa !30 - %indvars.iv.next407 = add nuw nsw i64 %indvars.iv406, 1 - %exitcond411.not = icmp eq i64 %indvars.iv.next407, %wide.trip.count410 - br i1 %exitcond411.not, label %._crit_edge359, label %.lr.ph358, !llvm.loop !36 + %indvars.iv.next408 = add nuw nsw i64 %indvars.iv407, 1 + %exitcond412.not = icmp eq i64 %indvars.iv.next408, %wide.trip.count411 + br i1 %exitcond412.not, label %._crit_edge359, label %.lr.ph358, !llvm.loop !36 ._crit_edge359: ; preds = %.lr.ph358, %._crit_edge353 %175 = phi double [ %.0270366, %._crit_edge353 ], [ %170, %.lr.ph358 ] @@ -641,20 +642,20 @@ define range(i32 -5, 6) i32 @SpgmrSolve(ptr noundef readonly captures(address_is .lr.ph363.preheader: ; preds = %._crit_edge359 %179 = add nuw i32 %.2, 1 - %wide.trip.count416 = zext i32 %179 to i64 + %wide.trip.count417 = zext i32 %179 to i64 br label %.lr.ph363 .lr.ph363: ; preds = %.lr.ph363.preheader, %.lr.ph363 - %indvars.iv412 = phi i64 [ 1, %.lr.ph363.preheader ], [ %indvars.iv.next413, %.lr.ph363 ] - %180 = getelementptr inbounds nuw double, ptr %29, i64 %indvars.iv412 + %indvars.iv413 = phi i64 [ 1, %.lr.ph363.preheader ], [ %indvars.iv.next414, %.lr.ph363 ] + %180 = getelementptr inbounds nuw double, ptr %29, i64 %indvars.iv413 %181 = load double, ptr %180, align 8, !tbaa !30 - %182 = getelementptr inbounds nuw ptr, ptr %21, i64 %indvars.iv412 + %182 = getelementptr inbounds nuw ptr, ptr %21, i64 %indvars.iv413 %183 = load ptr, ptr %182, align 8, !tbaa !29 %184 = load ptr, ptr %21, align 8, !tbaa !29 tail call void @N_VLinearSum(double noundef %181, ptr noundef %183, double noundef 1.000000e+00, ptr noundef %184, ptr noundef %184) #6 - %indvars.iv.next413 = add nuw nsw i64 %indvars.iv412, 1 - %exitcond417.not = icmp eq i64 %indvars.iv.next413, %wide.trip.count416 - br i1 %exitcond417.not, label %._crit_edge364, label %.lr.ph363, !llvm.loop !37 + %indvars.iv.next414 = add nuw nsw i64 %indvars.iv413, 1 + %exitcond418.not = icmp eq i64 %indvars.iv.next414, %wide.trip.count417 + br i1 %exitcond418.not, label %._crit_edge364, label %.lr.ph363, !llvm.loop !37 ._crit_edge364: ; preds = %.lr.ph363, %._crit_edge359 %185 = add nuw nsw i32 %.0368, 1 diff --git a/bench/cmake/optimized/archive_read_support_format_7zip.ll b/bench/cmake/optimized/archive_read_support_format_7zip.ll index a0a3ac2f418..9e45a0777e7 100644 --- a/bench/cmake/optimized/archive_read_support_format_7zip.ll +++ b/bench/cmake/optimized/archive_read_support_format_7zip.ll @@ -1769,8 +1769,9 @@ define internal fastcc i32 @setup_decode_folder(ptr noundef %0, ptr noundef read .loopexit.us.i: ; preds = %38 %indvars.iv.next27.i = add nsw i64 %indvars.iv26.i, -1 - %42 = icmp sgt i64 %indvars.iv26.i, 0 - br i1 %42, label %.preheader.us.i, label %folder_uncompressed_size.exit + %42 = and i64 %indvars.iv.next27.i, 4294967295 + %exitcond29.not.i = icmp eq i64 %42, 4294967295 + br i1 %exitcond29.not.i, label %folder_uncompressed_size.exit, label %.preheader.us.i .thread18.loopexit.i: ; preds = %37 %43 = trunc nuw nsw i64 %indvars.iv26.i to i32 @@ -6942,8 +6943,9 @@ parse_7zip_uint64.exit167.i: ; preds = %769, %._crit_edge23 .loopexit.us.i.i: ; preds = %805 %indvars.iv.next27.i.i = add nsw i64 %indvars.iv26.i.i, -1 - %809 = icmp sgt i64 %indvars.iv26.i.i, 0 - br i1 %809, label %.preheader.us.i.i100, label %folder_uncompressed_size.exit.i + %809 = and i64 %indvars.iv.next27.i.i, 4294967295 + %exitcond29.not.i.i = icmp eq i64 %809, 4294967295 + br i1 %exitcond29.not.i.i, label %folder_uncompressed_size.exit.i, label %.preheader.us.i.i100 .thread18.loopexit.i.i: ; preds = %804 %810 = trunc nuw nsw i64 %indvars.iv26.i.i to i32 @@ -7431,8 +7433,9 @@ define internal fastcc i64 @folder_uncompressed_size(ptr noundef readonly captur .loopexit.us: ; preds = %14 %indvars.iv.next27 = add nsw i64 %indvars.iv26, -1 - %18 = icmp sgt i64 %indvars.iv26, 0 - br i1 %18, label %.preheader.us, label %.loopexit20 + %18 = and i64 %indvars.iv.next27, 4294967295 + %exitcond29.not = icmp eq i64 %18, 4294967295 + br i1 %exitcond29.not, label %.loopexit20, label %.preheader.us .thread18.loopexit: ; preds = %13 %19 = trunc nuw nsw i64 %indvars.iv26 to i32 diff --git a/bench/cmake/optimized/archive_read_support_format_rar.ll b/bench/cmake/optimized/archive_read_support_format_rar.ll index 044345921e4..c5e0ee97b45 100644 --- a/bench/cmake/optimized/archive_read_support_format_rar.ll +++ b/bench/cmake/optimized/archive_read_support_format_rar.ll @@ -2442,8 +2442,8 @@ define internal fastcc range(i32 -1, 1) i32 @read_exttime(ptr noundef nonnull re 85: ; preds = %.thread, %28, %82, %84, %83, %80 %.3 = phi ptr [ %.2.lcssa, %80 ], [ %.2.lcssa, %82 ], [ %.2.lcssa, %83 ], [ %.2.lcssa, %84 ], [ %.04661, %28 ], [ %.04661, %.thread ] %86 = add nsw i32 %.04760, -1 - %.not65 = icmp eq i32 %.04760, 0 - br i1 %.not65, label %.loopexit, label %26, !llvm.loop !157 + %exitcond65.not = icmp eq i32 %.04760, 0 + br i1 %exitcond65.not, label %.loopexit, label %26, !llvm.loop !157 .loopexit: ; preds = %85, %54, %.thread69, %3 %.0 = phi i32 [ -1, %3 ], [ 0, %85 ], [ -1, %54 ], [ -1, %.thread69 ] @@ -2648,11 +2648,11 @@ define internal fastcc range(i32 -30, 2) i32 @read_data_compressed(ptr noundef % %36 = getelementptr i8, ptr %13, i64 864 %37 = getelementptr i8, ptr %13, i64 856 %38 = load i8, ptr %14, align 8, !tbaa !142 - %.not483 = icmp eq i8 %38, 0 - br i1 %.not483, label %.loopexit, label %.lr.ph + %.not482 = icmp eq i8 %38, 0 + br i1 %.not482, label %.loopexit, label %.lr.ph .lr.ph: ; preds = %10, %.backedge - %.0190484 = phi i32 [ %.0190.be, %.backedge ], [ 0, %10 ] + %.0190483 = phi i32 [ %.0190.be, %.backedge ], [ 0, %10 ] %39 = load i64, ptr %15, align 8, !tbaa !160 %.not213 = icmp eq i64 %39, 0 br i1 %.not213, label %64, label %40 @@ -3024,7 +3024,7 @@ rar_br_preparation.exit: ; preds = %221 br label %.loopexit rar_br_preparation.exit.thread: ; preds = %215, %227, %224, %213 - %.3 = phi i32 [ %.0190484, %213 ], [ 0, %224 ], [ 0, %227 ], [ 0, %215 ] + %.3 = phi i32 [ %.0190483, %213 ], [ 0, %224 ], [ 0, %227 ], [ 0, %215 ] %229 = load i8, ptr %30, align 8, !tbaa !73 %.not222 = icmp eq i8 %229, 0 br i1 %.not222, label %233, label %230 @@ -3115,8 +3115,8 @@ rar_br_preparation.exit.thread: ; preds = %215, %227, %224, %2 %264 = shl i32 %259, %263 %265 = or i32 %264, %.0188339 %266 = add nsw i32 %.0340, -1 - %.not387 = icmp eq i32 %.0340, 0 - br i1 %.not387, label %267, label %.preheader, !llvm.loop !183 + %exitcond.not = icmp eq i32 %.0340, 0 + br i1 %exitcond.not, label %267, label %.preheader, !llvm.loop !183 267: ; preds = %262 %268 = tail call i32 %31(ptr noundef nonnull %32, ptr noundef nonnull %33) #19 @@ -3319,10 +3319,10 @@ rar_br_preparation.exit.thread: ; preds = %215, %227, %224, %2 .sink.split: ; preds = %._crit_edge.loopexit.i, %._crit_edge.loopexit.i250, %329, %241 %.sink = phi i64 [ %249, %241 ], [ %337, %329 ], [ %328, %._crit_edge.loopexit.i250 ], [ %297, %._crit_edge.loopexit.i ] - %.sink436 = phi i64 [ 1, %241 ], [ 1, %329 ], [ %327, %._crit_edge.loopexit.i250 ], [ %296, %._crit_edge.loopexit.i ] + %.sink435 = phi i64 [ 1, %241 ], [ 1, %329 ], [ %327, %._crit_edge.loopexit.i250 ], [ %296, %._crit_edge.loopexit.i ] store i64 %.sink, ptr %36, align 8, !tbaa !138 %353 = load i64, ptr %21, align 8, !tbaa !163 - %354 = add nsw i64 %353, %.sink436 + %354 = add nsw i64 %353, %.sink435 store i64 %354, ptr %21, align 8, !tbaa !163 br label %355 @@ -3348,7 +3348,7 @@ rar_br_preparation.exit.thread: ; preds = %215, %227, %224, %2 br label %thread-pre-split thread-pre-split: ; preds = %257, %363, %run_filters.exit - %.2.ph = phi i32 [ %.4, %257 ], [ 0, %363 ], [ %.0190484, %run_filters.exit ] + %.2.ph = phi i32 [ %.4, %257 ], [ 0, %363 ], [ %.0190483, %run_filters.exit ] %.pr = load ptr, ptr %1, align 8, !tbaa !61 %368 = icmp eq ptr %.pr, null br i1 %368, label %.backedge, label %370 @@ -3374,7 +3374,7 @@ thread-pre-split: ; preds = %257, %363, %run_fil 377: ; preds = %42, %50, %370 %378 = phi ptr [ %44, %42 ], [ %.pre, %50 ], [ %.pr, %370 ] - %.1191 = phi i32 [ %.0190484, %42 ], [ %.0190484, %50 ], [ %.2.ph, %370 ] + %.1191 = phi i32 [ %.0190483, %42 ], [ %.0190483, %50 ], [ %.2.ph, %370 ] %379 = getelementptr inbounds nuw i8, ptr %13, i64 240 %380 = load i64, ptr %379, align 8, !tbaa !70 %381 = load i64, ptr %2, align 8, !tbaa !32 @@ -5393,8 +5393,9 @@ create_filter.exit.i.i: ; preds = %417, %416 %520 = load i32, ptr %519, align 4, !tbaa !153 %521 = getelementptr inbounds nuw [4 x i32], ptr %41, i64 0, i64 %indvars.iv store i32 %520, ptr %521, align 4, !tbaa !153 - %522 = icmp samesign ugt i64 %indvars.iv, 1 - br i1 %522, label %.lr.ph, label %._crit_edge, !llvm.loop !235 + %522 = and i64 %indvars.iv.next, 4294967295 + %exitcond.not = icmp eq i64 %522, 0 + br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !235 ._crit_edge: ; preds = %.lr.ph, %517 store i32 %490, ptr %41, align 8, !tbaa !153 @@ -6716,21 +6717,21 @@ define internal fastcc range(i32 -30, 1) i32 @create_code(ptr noundef %0, ptr no %wide.trip.count = zext nneg i32 %3 to i64 br label %.preheader -.preheader: ; preds = %9, %92 - %.057 = phi i32 [ %3, %9 ], [ %.3, %92 ] - %.02656 = phi i32 [ 0, %9 ], [ %93, %92 ] - %.03155 = phi i32 [ 1, %9 ], [ %94, %92 ] +.preheader: ; preds = %9, %91 + %.057 = phi i32 [ %3, %9 ], [ %.3, %91 ] + %.02656 = phi i32 [ 0, %9 ], [ %92, %91 ] + %.03155 = phi i32 [ 1, %9 ], [ %93, %91 ] br label %16 -16: ; preds = %.preheader, %89 - %indvars.iv = phi i64 [ 0, %.preheader ], [ %indvars.iv.next, %89 ] - %.154 = phi i32 [ %.057, %.preheader ], [ %.3, %89 ] - %.12753 = phi i32 [ %.02656, %.preheader ], [ %.329, %89 ] +16: ; preds = %.preheader, %88 + %indvars.iv = phi i64 [ 0, %.preheader ], [ %indvars.iv.next, %88 ] + %.154 = phi i32 [ %.057, %.preheader ], [ %.3, %88 ] + %.12753 = phi i32 [ %.02656, %.preheader ], [ %.329, %88 ] %17 = getelementptr inbounds nuw i8, ptr %2, i64 %indvars.iv %18 = load i8, ptr %17, align 1, !tbaa !31 %19 = zext i8 %18 to i32 %.not = icmp eq i32 %.03155, %19 - br i1 %.not, label %20, label %89 + br i1 %.not, label %20, label %88 20: ; preds = %16 %21 = load ptr, ptr %15, align 8, !tbaa !200 @@ -6830,55 +6831,55 @@ define internal fastcc range(i32 -30, 1) i32 @create_code(ptr noundef %0, ptr no 70: ; preds = %58, %39 %71 = phi i32 [ %66, %58 ], [ %44, %39 ] %72 = phi ptr [ %59, %58 ], [ %31, %39 ] - %73 = icmp samesign ugt i32 %.04351.in.i, 1 - br i1 %73, label %30, label %._crit_edge.loopexit.i, !llvm.loop !258 + %exitcond.not.i = icmp eq i32 %.04351.i, 0 + br i1 %exitcond.not.i, label %._crit_edge.loopexit.i, label %30, !llvm.loop !258 ._crit_edge.loopexit.i: ; preds = %70 - %74 = sext i32 %71 to i64 - %75 = getelementptr inbounds %struct.huffman_tree_node, ptr %72, i64 %74 - %76 = load i32, ptr %75, align 4, !tbaa !153 - %77 = icmp eq i32 %76, -1 - br i1 %77, label %78, label %82 - -78: ; preds = %._crit_edge.loopexit.i - %79 = getelementptr inbounds nuw i8, ptr %75, i64 4 - %80 = load i32, ptr %79, align 4, !tbaa !153 - %81 = icmp eq i32 %80, -2 - br i1 %81, label %83, label %82 - -82: ; preds = %78, %._crit_edge.loopexit.i + %73 = sext i32 %71 to i64 + %74 = getelementptr inbounds %struct.huffman_tree_node, ptr %72, i64 %73 + %75 = load i32, ptr %74, align 4, !tbaa !153 + %76 = icmp eq i32 %75, -1 + br i1 %76, label %77, label %81 + +77: ; preds = %._crit_edge.loopexit.i + %78 = getelementptr inbounds nuw i8, ptr %74, i64 4 + %79 = load i32, ptr %78, align 4, !tbaa !153 + %80 = icmp eq i32 %79, -2 + br i1 %80, label %82, label %81 + +81: ; preds = %77, %._crit_edge.loopexit.i tail call void (ptr, i32, ptr, ...) @archive_set_error(ptr noundef %0, i32 noundef 84, ptr noundef nonnull @.str.46) #19 br label %add_value.exit.thread -83: ; preds = %78 - %84 = trunc nuw nsw i64 %indvars.iv to i32 - store i32 %84, ptr %75, align 4, !tbaa !153 - %85 = getelementptr inbounds %struct.huffman_tree_node, ptr %72, i64 %74, i32 0, i64 1 - store i32 %84, ptr %85, align 4, !tbaa !153 - %86 = add nsw i32 %.12753, 1 - %87 = add nsw i32 %.154, -1 - %88 = icmp slt i32 %.154, 2 - br i1 %88, label %add_value.exit.thread, label %89 - -89: ; preds = %83, %16 - %.329 = phi i32 [ %.12753, %16 ], [ %86, %83 ] - %.3 = phi i32 [ %.154, %16 ], [ %87, %83 ] +82: ; preds = %77 + %83 = trunc nuw nsw i64 %indvars.iv to i32 + store i32 %83, ptr %74, align 4, !tbaa !153 + %84 = getelementptr inbounds %struct.huffman_tree_node, ptr %72, i64 %73, i32 0, i64 1 + store i32 %83, ptr %84, align 4, !tbaa !153 + %85 = add nsw i32 %.12753, 1 + %86 = add nsw i32 %.154, -1 + %87 = icmp slt i32 %.154, 2 + br i1 %87, label %add_value.exit.thread, label %88 + +88: ; preds = %82, %16 + %.329 = phi i32 [ %.12753, %16 ], [ %85, %82 ] + %.3 = phi i32 [ %.154, %16 ], [ %86, %82 ] %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count - br i1 %exitcond.not, label %90, label %16, !llvm.loop !259 + br i1 %exitcond.not, label %89, label %16, !llvm.loop !259 -90: ; preds = %89 - %91 = icmp slt i32 %.3, 1 - br i1 %91, label %add_value.exit.thread, label %92 +89: ; preds = %88 + %90 = icmp slt i32 %.3, 1 + br i1 %90, label %add_value.exit.thread, label %91 -92: ; preds = %90 - %93 = shl i32 %.329, 1 - %94 = add nuw nsw i32 %.03155, 1 - %exitcond61.not = icmp eq i32 %94, 16 +91: ; preds = %89 + %92 = shl i32 %.329, 1 + %93 = add nuw nsw i32 %.03155, 1 + %exitcond61.not = icmp eq i32 %93, 16 br i1 %exitcond61.not, label %add_value.exit.thread, label %.preheader, !llvm.loop !260 -add_value.exit.thread: ; preds = %92, %90, %83, %82, %57, %38, %8 - %.032 = phi i32 [ -30, %8 ], [ -30, %38 ], [ -30, %57 ], [ -30, %82 ], [ 0, %83 ], [ 0, %90 ], [ 0, %92 ] +add_value.exit.thread: ; preds = %91, %89, %82, %81, %57, %38, %8 + %.032 = phi i32 [ -30, %8 ], [ -30, %38 ], [ -30, %57 ], [ -30, %81 ], [ 0, %82 ], [ 0, %89 ], [ 0, %91 ] ret i32 %.032 } diff --git a/bench/coreutils-rs/optimized/389ib4lq03w39x6a.ll b/bench/coreutils-rs/optimized/389ib4lq03w39x6a.ll index 2cf38e6ae00..a8557ab8261 100644 --- a/bench/coreutils-rs/optimized/389ib4lq03w39x6a.ll +++ b/bench/coreutils-rs/optimized/389ib4lq03w39x6a.ll @@ -1579,7 +1579,7 @@ define void @_ZN6uucore8features6ranges5Range9from_list17h70bbf16599e55ca3E(ptr .body: ; preds = %.noexc.i, %83, %87 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %11), !noalias !255 - br label %140 + br label %139 74: ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17he97175bf1bfbf2d4E.exit" call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %13) @@ -1600,7 +1600,7 @@ define void @_ZN6uucore8features6ranges5Range9from_list17h70bbf16599e55ca3E(ptr cleanup call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %11), !noalias !255 invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17he5813fa0a75b2090E.llvm.3307611119196902081"(ptr noalias noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 captures(none) dereferenceable(24) %11, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %12) - to label %.noexc.i unwind label %108, !noalias !265 + to label %.noexc.i unwind label %107, !noalias !265 .noexc.i: ; preds = %79 %81 = getelementptr inbounds nuw i8, ptr %11, i64 8 @@ -1625,7 +1625,8 @@ define void @_ZN6uucore8features6ranges5Range9from_list17h70bbf16599e55ca3E(ptr br i1 %.not38.i, label %.loopexit, label %.split.i .split.i: ; preds = %.split35.i, %._crit_edge.i - %.promoted = phi i64 [ %.promoted89, %._crit_edge.i ], [ %78, %.split35.i ] + %.promoted = phi i64 [ %.promoted90, %._crit_edge.i ], [ %78, %.split35.i ] + %indvars.iv = phi i64 [ %indvars.iv.next, %._crit_edge.i ], [ 2, %.split35.i ] %89 = phi i64 [ %100, %._crit_edge.i ], [ %78, %.split35.i ] %.sroa.01.036.i = phi i64 [ %90, %._crit_edge.i ], [ 0, %.split35.i ] %90 = add nuw i64 %.sroa.01.036.i, 1 @@ -1663,9 +1664,10 @@ define void @_ZN6uucore8features6ranges5Range9from_list17h70bbf16599e55ca3E(ptr br label %._crit_edge.i ._crit_edge.i: ; preds = %._crit_edge.i.loopexit, %.split.i - %.promoted89 = phi i64 [ %.promoted, %.split.i ], [ %99, %._crit_edge.i.loopexit ] + %.promoted90 = phi i64 [ %.promoted, %.split.i ], [ %99, %._crit_edge.i.loopexit ] %100 = phi i64 [ %89, %.split.i ], [ %.ph, %._crit_edge.i.loopexit ] %exitcond.not.i = icmp eq i64 %90, %78 + %indvars.iv.next = add i64 %indvars.iv, 1 br i1 %exitcond.not.i, label %.loopexit, label %.split.i 101: ; preds = %.lr.ph, %.lr.ph.i @@ -1678,11 +1680,11 @@ define void @_ZN6uucore8features6ranges5Range9from_list17h70bbf16599e55ca3E(ptr call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %92, ptr nonnull align 8 %96, i64 %105, i1 false), !noalias !268 %106 = add i64 %102, -1 %.0.sroa.speculated.i.i = call noundef i64 @llvm.umax.i64(i64 %.0.sroa.speculated.i.i82, i64 %103) - %107 = icmp ult i64 %90, %106 - br i1 %107, label %.lr.ph.i, label %._crit_edge.i.loopexit.sink.split + %exitcond.not = icmp eq i64 %102, %indvars.iv + br i1 %exitcond.not, label %._crit_edge.i.loopexit.sink.split, label %.lr.ph.i -108: ; preds = %79 - %109 = landingpad { ptr, i32 } +107: ; preds = %79 + %108 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #21, !noalias !265 unreachable @@ -1697,39 +1699,39 @@ define void @_ZN6uucore8features6ranges5Range9from_list17h70bbf16599e55ca3E(ptr %.sroa.4.0.i.ph = sub i64 %.pn, %.sroa.17.073 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %14) invoke void @"_ZN78_$LT$uucore..features..ranges..Range$u20$as$u20$core..str..traits..FromStr$GT$8from_str17h12c464303d9b27cfE"(ptr noalias noundef nonnull sret({ i64, [2 x i64] }) align 8 captures(none) dereferenceable(24) %14, ptr noalias noundef nonnull readonly align 1 %.sroa.0.0.i.ph, i64 noundef %.sroa.4.0.i.ph) - to label %112 unwind label %141 + to label %111 unwind label %140 .loopexit: ; preds = %._crit_edge.i, %.split35.i call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %13, ptr noundef nonnull align 8 dereferenceable(24) %12, i64 24, i1 false), !alias.scope !267 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %12) - %110 = getelementptr inbounds nuw i8, ptr %0, i64 8 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %110, ptr noundef nonnull align 8 dereferenceable(24) %13, i64 24, i1 false) + %109 = getelementptr inbounds nuw i8, ptr %0, i64 8 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %109, ptr noundef nonnull align 8 dereferenceable(24) %13, i64 24, i1 false) store i64 0, ptr %0, align 8 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %13) - br label %111 + br label %110 -111: ; preds = %"_ZN4core3ptr75drop_in_place$LT$alloc..vec..Vec$LT$uucore..features..ranges..Range$GT$$GT$17h2b41abbd8e33abaeE.exit", %.loopexit +110: ; preds = %"_ZN4core3ptr75drop_in_place$LT$alloc..vec..Vec$LT$uucore..features..ranges..Range$GT$$GT$17h2b41abbd8e33abaeE.exit", %.loopexit call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %15) ret void -112: ; preds = %.loopexit70 +111: ; preds = %.loopexit70 call void @llvm.experimental.noalias.scope.decl(metadata !272) - %113 = load i64, ptr %14, align 8, !range !275, !alias.scope !272, !noalias !276, !noundef !13 - %trunc.i = trunc nuw i64 %113 to i1 - %114 = load i64, ptr %20, align 8, !alias.scope !272, !noalias !276, !noundef !13 - br i1 %trunc.i, label %116, label %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hcaa2fadaaed0a09eE.exit.thread" + %112 = load i64, ptr %14, align 8, !range !275, !alias.scope !272, !noalias !276, !noundef !13 + %trunc.i = trunc nuw i64 %112 to i1 + %113 = load i64, ptr %20, align 8, !alias.scope !272, !noalias !276, !noundef !13 + br i1 %trunc.i, label %115, label %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hcaa2fadaaed0a09eE.exit.thread" -"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hcaa2fadaaed0a09eE.exit.thread": ; preds = %112 - %115 = load i64, ptr %19, align 8, !alias.scope !272, !noalias !276, !noundef !13 +"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hcaa2fadaaed0a09eE.exit.thread": ; preds = %111 + %114 = load i64, ptr %19, align 8, !alias.scope !272, !noalias !276, !noundef !13 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %14) - br label %119 + br label %118 -116: ; preds = %112 - %117 = load ptr, ptr %19, align 8, !alias.scope !272, !noalias !276, !nonnull !13, !align !279, !noundef !13 +115: ; preds = %111 + %116 = load ptr, ptr %19, align 8, !alias.scope !272, !noalias !276, !nonnull !13, !align !279, !noundef !13 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %10), !noalias !280 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %9), !noalias !280 - store ptr %117, ptr %9, align 8, !noalias !281 - store i64 %114, ptr %21, align 8, !noalias !281 + store ptr %116, ptr %9, align 8, !noalias !281 + store i64 %113, ptr %21, align 8, !noalias !281 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %8), !noalias !281 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %7), !noalias !281 store i64 0, ptr %7, align 8, !noalias !281 @@ -1747,9 +1749,9 @@ define void @_ZN6uucore8features6ranges5Range9from_list17h70bbf16599e55ca3E(ptr store i64 2, ptr %.sroa.8.0..sroa_idx.i.i, align 8, !noalias !297 store ptr null, ptr %.sroa.10.0..sroa_idx.i.i, align 8, !noalias !297 invoke void @_ZN5alloc3fmt6format12format_inner17h20bbaee2ca87fbecE(ptr noalias noundef nonnull sret({ { { i64, ptr, {} }, i64 } }) align 8 captures(none) dereferenceable(24) %10, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(48) %6) - to label %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hcaa2fadaaed0a09eE.exit" unwind label %141 + to label %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hcaa2fadaaed0a09eE.exit" unwind label %140 -"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hcaa2fadaaed0a09eE.exit": ; preds = %116 +"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hcaa2fadaaed0a09eE.exit": ; preds = %115 call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %6), !noalias !286 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7), !noalias !281 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8), !noalias !281 @@ -1759,40 +1761,40 @@ define void @_ZN6uucore8features6ranges5Range9from_list17h70bbf16599e55ca3E(ptr %.sroa.847.0.copyload = load i64, ptr %.sroa.847.0..sroa_idx, align 8, !noalias !298 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10), !noalias !280 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %14) - %118 = icmp eq i64 %.sroa.045.0.copyload, -9223372036854775808 - br i1 %118, label %119, label %130 - -119: ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hcaa2fadaaed0a09eE.exit.thread", %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hcaa2fadaaed0a09eE.exit" - %.sroa.847.069 = phi i64 [ %114, %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hcaa2fadaaed0a09eE.exit.thread" ], [ %.sroa.847.0.copyload, %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hcaa2fadaaed0a09eE.exit" ] - %.sroa.546.068 = phi i64 [ %115, %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hcaa2fadaaed0a09eE.exit.thread" ], [ %.sroa.546.0.copyload, %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hcaa2fadaaed0a09eE.exit" ] - %120 = load i64, ptr %17, align 8, !alias.scope !299, !noundef !13 - %121 = load i64, ptr %15, align 8, !alias.scope !299, !noundef !13 - %122 = icmp eq i64 %120, %121 - br i1 %122, label %123, label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17he97175bf1bfbf2d4E.exit" - -123: ; preds = %119 - invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h4f00cef2620ee283E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %15, i64 noundef %120) - to label %.noexc41 unwind label %141 - -.noexc41: ; preds = %123 + %117 = icmp eq i64 %.sroa.045.0.copyload, -9223372036854775808 + br i1 %117, label %118, label %129 + +118: ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hcaa2fadaaed0a09eE.exit.thread", %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hcaa2fadaaed0a09eE.exit" + %.sroa.847.069 = phi i64 [ %113, %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hcaa2fadaaed0a09eE.exit.thread" ], [ %.sroa.847.0.copyload, %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hcaa2fadaaed0a09eE.exit" ] + %.sroa.546.068 = phi i64 [ %114, %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hcaa2fadaaed0a09eE.exit.thread" ], [ %.sroa.546.0.copyload, %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hcaa2fadaaed0a09eE.exit" ] + %119 = load i64, ptr %17, align 8, !alias.scope !299, !noundef !13 + %120 = load i64, ptr %15, align 8, !alias.scope !299, !noundef !13 + %121 = icmp eq i64 %119, %120 + br i1 %121, label %122, label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17he97175bf1bfbf2d4E.exit" + +122: ; preds = %118 + invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h4f00cef2620ee283E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %15, i64 noundef %119) + to label %.noexc41 unwind label %140 + +.noexc41: ; preds = %122 %.pre.i40 = load i64, ptr %17, align 8, !alias.scope !299 br label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17he97175bf1bfbf2d4E.exit" -"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17he97175bf1bfbf2d4E.exit": ; preds = %119, %.noexc41 - %124 = phi i64 [ %.pre.i40, %.noexc41 ], [ %120, %119 ] - %125 = load ptr, ptr %16, align 8, !alias.scope !299, !nonnull !13, !noundef !13 - %126 = getelementptr inbounds { i64, i64 }, ptr %125, i64 %124 - store i64 %.sroa.546.068, ptr %126, align 8 - %127 = getelementptr inbounds nuw i8, ptr %126, i64 8 - store i64 %.sroa.847.069, ptr %127, align 8 - %128 = load i64, ptr %17, align 8, !alias.scope !299, !noundef !13 - %129 = add i64 %128, 1 - store i64 %129, ptr %17, align 8, !alias.scope !299 +"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17he97175bf1bfbf2d4E.exit": ; preds = %118, %.noexc41 + %123 = phi i64 [ %.pre.i40, %.noexc41 ], [ %119, %118 ] + %124 = load ptr, ptr %16, align 8, !alias.scope !299, !nonnull !13, !noundef !13 + %125 = getelementptr inbounds { i64, i64 }, ptr %124, i64 %123 + store i64 %.sroa.546.068, ptr %125, align 8 + %126 = getelementptr inbounds nuw i8, ptr %125, i64 8 + store i64 %.sroa.847.069, ptr %126, align 8 + %127 = load i64, ptr %17, align 8, !alias.scope !299, !noundef !13 + %128 = add i64 %127, 1 + store i64 %128, ptr %17, align 8, !alias.scope !299 br i1 %.sroa.27.1.ph, label %74, label %26 -130: ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hcaa2fadaaed0a09eE.exit" - %131 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 %.sroa.045.0.copyload, ptr %131, align 8 +129: ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hcaa2fadaaed0a09eE.exit" + %130 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store i64 %.sroa.045.0.copyload, ptr %130, align 8 %.sroa.234.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 16 store i64 %.sroa.546.0.copyload, ptr %.sroa.234.0..sroa_idx, align 8 %.sroa.335.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 24 @@ -1800,38 +1802,38 @@ define void @_ZN6uucore8features6ranges5Range9from_list17h70bbf16599e55ca3E(ptr store i64 1, ptr %0, align 8 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %5), !noalias !302 call void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17he5813fa0a75b2090E.llvm.3307611119196902081"(ptr noalias noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 captures(none) dereferenceable(24) %5, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %15) - %132 = getelementptr inbounds nuw i8, ptr %5, i64 8 - %133 = load i64, ptr %132, align 8, !range !189, !noalias !302, !noundef !13 - %.not.i.i.i = icmp eq i64 %133, 0 - br i1 %.not.i.i.i, label %"_ZN4core3ptr75drop_in_place$LT$alloc..vec..Vec$LT$uucore..features..ranges..Range$GT$$GT$17h2b41abbd8e33abaeE.exit", label %134 - -134: ; preds = %130 - %135 = getelementptr inbounds nuw i8, ptr %5, i64 16 - %136 = load i64, ptr %135, align 8, !noalias !302, !noundef !13 - %137 = icmp eq i64 %136, 0 - br i1 %137, label %"_ZN4core3ptr75drop_in_place$LT$alloc..vec..Vec$LT$uucore..features..ranges..Range$GT$$GT$17h2b41abbd8e33abaeE.exit", label %138 - -138: ; preds = %134 - %139 = load ptr, ptr %5, align 8, !noalias !302, !nonnull !13, !noundef !13 - call void @__rust_dealloc(ptr noundef nonnull %139, i64 noundef %136, i64 noundef %133) #22 + %131 = getelementptr inbounds nuw i8, ptr %5, i64 8 + %132 = load i64, ptr %131, align 8, !range !189, !noalias !302, !noundef !13 + %.not.i.i.i = icmp eq i64 %132, 0 + br i1 %.not.i.i.i, label %"_ZN4core3ptr75drop_in_place$LT$alloc..vec..Vec$LT$uucore..features..ranges..Range$GT$$GT$17h2b41abbd8e33abaeE.exit", label %133 + +133: ; preds = %129 + %134 = getelementptr inbounds nuw i8, ptr %5, i64 16 + %135 = load i64, ptr %134, align 8, !noalias !302, !noundef !13 + %136 = icmp eq i64 %135, 0 + br i1 %136, label %"_ZN4core3ptr75drop_in_place$LT$alloc..vec..Vec$LT$uucore..features..ranges..Range$GT$$GT$17h2b41abbd8e33abaeE.exit", label %137 + +137: ; preds = %133 + %138 = load ptr, ptr %5, align 8, !noalias !302, !nonnull !13, !noundef !13 + call void @__rust_dealloc(ptr noundef nonnull %138, i64 noundef %135, i64 noundef %132) #22 br label %"_ZN4core3ptr75drop_in_place$LT$alloc..vec..Vec$LT$uucore..features..ranges..Range$GT$$GT$17h2b41abbd8e33abaeE.exit" -"_ZN4core3ptr75drop_in_place$LT$alloc..vec..Vec$LT$uucore..features..ranges..Range$GT$$GT$17h2b41abbd8e33abaeE.exit": ; preds = %130, %134, %138 +"_ZN4core3ptr75drop_in_place$LT$alloc..vec..Vec$LT$uucore..features..ranges..Range$GT$$GT$17h2b41abbd8e33abaeE.exit": ; preds = %129, %133, %137 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5), !noalias !302 - br label %111 + br label %110 -140: ; preds = %.body, %141 - %eh.lpad-body51 = phi { ptr, i32 } [ %142, %141 ], [ %80, %.body ] +139: ; preds = %.body, %140 + %eh.lpad-body51 = phi { ptr, i32 } [ %141, %140 ], [ %80, %.body ] resume { ptr, i32 } %eh.lpad-body51 -141: ; preds = %.loopexit70, %116, %123 - %142 = landingpad { ptr, i32 } +140: ; preds = %.loopexit70, %115, %122 + %141 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr75drop_in_place$LT$alloc..vec..Vec$LT$uucore..features..ranges..Range$GT$$GT$17h2b41abbd8e33abaeE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %15) #23 - to label %140 unwind label %143 + to label %139 unwind label %142 -143: ; preds = %141 - %144 = landingpad { ptr, i32 } +142: ; preds = %140 + %143 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #21 unreachable diff --git a/bench/cpython/optimized/mathmodule.ll b/bench/cpython/optimized/mathmodule.ll index a1fc704ee2f..b2c1bca70a8 100644 --- a/bench/cpython/optimized/mathmodule.ll +++ b/bench/cpython/optimized/mathmodule.ll @@ -2337,7 +2337,7 @@ _Py_NewRef.exit.i: ; preds = %31, %28 %43 = sub nuw nsw i64 64, %42 %44 = call fastcc ptr @factorial_partial_product(i64 noundef %.02566.i, i64 noundef %40, i64 noundef %43) %45 = icmp eq ptr %44, null - br i1 %45, label %75, label %46 + br i1 %45, label %74, label %46 46: ; preds = %38 %47 = call ptr @PyNumber_Multiply(ptr noundef %.03665.i, ptr noundef nonnull %44) #16 @@ -2357,7 +2357,7 @@ _Py_NewRef.exit.i: ; preds = %31, %28 Py_DECREF.exit54.i: ; preds = %52, %49, %46 %53 = icmp eq ptr %47, null - br i1 %53, label %75, label %54 + br i1 %53, label %74, label %54 54: ; preds = %Py_DECREF.exit54.i %55 = load i32, ptr %.03665.i, align 8, !tbaa !13 @@ -2377,7 +2377,7 @@ Py_DECREF.exit54.i: ; preds = %52, %49, %46 Py_DECREF.exit52.i: ; preds = %59, %56, %54 %60 = call ptr @PyNumber_Multiply(ptr noundef %.03864.i, ptr noundef nonnull %47) #16 %61 = icmp eq ptr %60, null - br i1 %61, label %75, label %62 + br i1 %61, label %74, label %62 62: ; preds = %Py_DECREF.exit52.i %63 = load i32, ptr %.03864.i, align 8, !tbaa !13 @@ -2399,86 +2399,86 @@ Py_DECREF.exit50.i: ; preds = %67, %64, %62, %35 %.137.i = phi ptr [ %.03665.i, %35 ], [ %47, %62 ], [ %47, %64 ], [ %47, %67 ] %.1.i = phi i64 [ %.02566.i, %35 ], [ %40, %62 ], [ %40, %64 ], [ %40, %67 ] %68 = add nsw i64 %.02467.i, -1 - %69 = icmp sgt i64 %.02467.i, 0 - br i1 %69, label %35, label %70, !llvm.loop !38 + %exitcond.not.i = icmp eq i64 %.02467.i, 0 + br i1 %exitcond.not.i, label %69, label %35, !llvm.loop !38 -70: ; preds = %Py_DECREF.exit50.i - %71 = load i32, ptr %.137.i, align 8, !tbaa !13 - %.not.i47.i = icmp sgt i32 %71, -1 - br i1 %.not.i47.i, label %72, label %factorial_odd_part.exit +69: ; preds = %Py_DECREF.exit50.i + %70 = load i32, ptr %.137.i, align 8, !tbaa !13 + %.not.i47.i = icmp sgt i32 %70, -1 + br i1 %.not.i47.i, label %71, label %factorial_odd_part.exit -72: ; preds = %70 - %73 = add nsw i32 %71, -1 - store i32 %73, ptr %.137.i, align 8, !tbaa !13 - %74 = icmp eq i32 %73, 0 - br i1 %74, label %Py_DECREF.exit48.sink.split.i, label %factorial_odd_part.exit +71: ; preds = %69 + %72 = add nsw i32 %70, -1 + store i32 %72, ptr %.137.i, align 8, !tbaa !13 + %73 = icmp eq i32 %72, 0 + br i1 %73, label %Py_DECREF.exit48.sink.split.i, label %factorial_odd_part.exit -75: ; preds = %Py_DECREF.exit52.i, %Py_DECREF.exit54.i, %38 +74: ; preds = %Py_DECREF.exit52.i, %Py_DECREF.exit54.i, %38 %.2.i = phi ptr [ %.03665.i, %38 ], [ %.03665.i, %Py_DECREF.exit54.i ], [ %47, %Py_DECREF.exit52.i ] - %76 = load i32, ptr %.03864.i, align 8, !tbaa !13 - %.not.i45.i = icmp sgt i32 %76, -1 - br i1 %.not.i45.i, label %77, label %Py_DECREF.exit46.i + %75 = load i32, ptr %.03864.i, align 8, !tbaa !13 + %.not.i45.i = icmp sgt i32 %75, -1 + br i1 %.not.i45.i, label %76, label %Py_DECREF.exit46.i -77: ; preds = %75 - %78 = add nsw i32 %76, -1 - store i32 %78, ptr %.03864.i, align 8, !tbaa !13 - %79 = icmp eq i32 %78, 0 - br i1 %79, label %80, label %Py_DECREF.exit46.i +76: ; preds = %74 + %77 = add nsw i32 %75, -1 + store i32 %77, ptr %.03864.i, align 8, !tbaa !13 + %78 = icmp eq i32 %77, 0 + br i1 %78, label %79, label %Py_DECREF.exit46.i -80: ; preds = %77 +79: ; preds = %76 call void @_Py_Dealloc(ptr noundef nonnull %.03864.i) #16 br label %Py_DECREF.exit46.i -Py_DECREF.exit46.i: ; preds = %80, %77, %75 - %81 = load i32, ptr %.2.i, align 8, !tbaa !13 - %.not.i.i = icmp sgt i32 %81, -1 - br i1 %.not.i.i, label %82, label %Py_DECREF.exit +Py_DECREF.exit46.i: ; preds = %79, %76, %74 + %80 = load i32, ptr %.2.i, align 8, !tbaa !13 + %.not.i.i = icmp sgt i32 %80, -1 + br i1 %.not.i.i, label %81, label %Py_DECREF.exit -82: ; preds = %Py_DECREF.exit46.i - %83 = add nsw i32 %81, -1 - store i32 %83, ptr %.2.i, align 8, !tbaa !13 - %84 = icmp eq i32 %83, 0 - br i1 %84, label %Py_DECREF.exit48.sink.split.i, label %Py_DECREF.exit +81: ; preds = %Py_DECREF.exit46.i + %82 = add nsw i32 %80, -1 + store i32 %82, ptr %.2.i, align 8, !tbaa !13 + %83 = icmp eq i32 %82, 0 + br i1 %83, label %Py_DECREF.exit48.sink.split.i, label %Py_DECREF.exit -Py_DECREF.exit48.sink.split.i: ; preds = %82, %72 - %.2.sink.i = phi ptr [ %.137.i, %72 ], [ %.2.i, %82 ] - %.0.ph.i = phi ptr [ %.139.i, %72 ], [ null, %82 ] +Py_DECREF.exit48.sink.split.i: ; preds = %81, %71 + %.2.sink.i = phi ptr [ %.137.i, %71 ], [ %.2.i, %81 ] + %.0.ph.i = phi ptr [ %.139.i, %71 ], [ null, %81 ] call void @_Py_Dealloc(ptr noundef nonnull %.2.sink.i) #16 br label %factorial_odd_part.exit -factorial_odd_part.exit: ; preds = %70, %72, %Py_DECREF.exit48.sink.split.i - %.0.i = phi ptr [ %.139.i, %70 ], [ %.139.i, %72 ], [ %.0.ph.i, %Py_DECREF.exit48.sink.split.i ] - %85 = icmp eq ptr %.0.i, null - br i1 %85, label %Py_DECREF.exit, label %.preheader +factorial_odd_part.exit: ; preds = %69, %71, %Py_DECREF.exit48.sink.split.i + %.0.i = phi ptr [ %.139.i, %69 ], [ %.139.i, %71 ], [ %.0.ph.i, %Py_DECREF.exit48.sink.split.i ] + %84 = icmp eq ptr %.0.i, null + br i1 %84, label %Py_DECREF.exit, label %.preheader .preheader: ; preds = %factorial_odd_part.exit, %.preheader - %.07.i = phi i64 [ %86, %.preheader ], [ 0, %factorial_odd_part.exit ] - %.056.i = phi i64 [ %88, %.preheader ], [ %4, %factorial_odd_part.exit ] - %86 = add i64 %.07.i, 1 - %87 = add nsw i64 %.056.i, -1 - %88 = and i64 %87, %.056.i - %.not.i17 = icmp eq i64 %88, 0 + %.07.i = phi i64 [ %85, %.preheader ], [ 0, %factorial_odd_part.exit ] + %.056.i = phi i64 [ %87, %.preheader ], [ %4, %factorial_odd_part.exit ] + %85 = add i64 %.07.i, 1 + %86 = add nsw i64 %.056.i, -1 + %87 = and i64 %86, %.056.i + %.not.i17 = icmp eq i64 %87, 0 br i1 %.not.i17, label %count_set_bits.exit, label %.preheader, !llvm.loop !39 count_set_bits.exit: ; preds = %.preheader - %89 = sub i64 %4, %86 - %90 = call ptr @_PyLong_Lshift(ptr noundef nonnull %.0.i, i64 noundef %89) #16 - %91 = load i32, ptr %.0.i, align 8, !tbaa !13 - %.not.i = icmp sgt i32 %91, -1 - br i1 %.not.i, label %92, label %Py_DECREF.exit - -92: ; preds = %count_set_bits.exit - %93 = add nsw i32 %91, -1 - store i32 %93, ptr %.0.i, align 8, !tbaa !13 - %94 = icmp eq i32 %93, 0 - br i1 %94, label %95, label %Py_DECREF.exit + %88 = sub i64 %4, %85 + %89 = call ptr @_PyLong_Lshift(ptr noundef nonnull %.0.i, i64 noundef %88) #16 + %90 = load i32, ptr %.0.i, align 8, !tbaa !13 + %.not.i = icmp sgt i32 %90, -1 + br i1 %.not.i, label %91, label %Py_DECREF.exit -95: ; preds = %92 +91: ; preds = %count_set_bits.exit + %92 = add nsw i32 %90, -1 + store i32 %92, ptr %.0.i, align 8, !tbaa !13 + %93 = icmp eq i32 %92, 0 + br i1 %93, label %94, label %Py_DECREF.exit + +94: ; preds = %91 call void @_Py_Dealloc(ptr noundef nonnull %.0.i) #16 br label %Py_DECREF.exit -Py_DECREF.exit: ; preds = %82, %Py_DECREF.exit46.i, %25, %95, %92, %count_set_bits.exit, %factorial_odd_part.exit, %6, %21, %17, %11 - %.0 = phi ptr [ null, %11 ], [ null, %17 ], [ %24, %21 ], [ null, %6 ], [ null, %factorial_odd_part.exit ], [ %90, %count_set_bits.exit ], [ %90, %92 ], [ %90, %95 ], [ null, %25 ], [ null, %Py_DECREF.exit46.i ], [ null, %82 ] +Py_DECREF.exit: ; preds = %81, %Py_DECREF.exit46.i, %25, %94, %91, %count_set_bits.exit, %factorial_odd_part.exit, %6, %21, %17, %11 + %.0 = phi ptr [ null, %11 ], [ null, %17 ], [ %24, %21 ], [ null, %6 ], [ null, %factorial_odd_part.exit ], [ %89, %count_set_bits.exit ], [ %89, %91 ], [ %89, %94 ], [ null, %25 ], [ null, %Py_DECREF.exit46.i ], [ null, %81 ] call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %3) #16 ret ptr %.0 } @@ -3961,8 +3961,9 @@ Py_DECREF.exit118: ; preds = %73, %76, %79 109: ; preds = %Py_DECREF.exit124 %indvars.iv.next175 = add nsw i64 %indvars.iv174, -1 - %110 = icmp sgt i64 %indvars.iv174, 0 - br i1 %110, label %111, label %.thread, !llvm.loop !49 + %110 = and i64 %indvars.iv.next175, 4294967295 + %exitcond.not = icmp eq i64 %110, 4294967295 + br i1 %exitcond.not, label %.thread, label %111, !llvm.loop !49 111: ; preds = %.lr.ph, %109 %indvars.iv174 = phi i64 [ %108, %.lr.ph ], [ %indvars.iv.next175, %109 ] @@ -8392,8 +8393,8 @@ define internal fastcc double @lanczos_sum(double noundef %0) unnamed_addr #13 { %7 = load double, ptr %6, align 8, !tbaa !33 %8 = tail call double @llvm.fmuladd.f64(double %.01731, double %0, double %7) %indvars.iv.next38 = add nsw i64 %indvars.iv37, -1 - %.not = icmp eq i64 %indvars.iv37, 0 - br i1 %.not, label %.loopexit, label %.preheader, !llvm.loop !64 + %exitcond40.not = icmp eq i64 %indvars.iv37, 0 + br i1 %exitcond40.not, label %.loopexit, label %.preheader, !llvm.loop !64 .preheader25: ; preds = %1, %.preheader25 %indvars.iv = phi i64 [ %indvars.iv.next, %.preheader25 ], [ 0, %1 ] @@ -8507,8 +8508,8 @@ define internal double @m_lgamma(double noundef %0) #11 { %25 = load double, ptr %24, align 8, !tbaa !33 %26 = tail call double @llvm.fmuladd.f64(double %.01731.i, double %2, double %25) %indvars.iv.next38.i = add nsw i64 %indvars.iv37.i, -1 - %.not.i = icmp eq i64 %indvars.iv37.i, 0 - br i1 %.not.i, label %lanczos_sum.exit, label %.preheader.i, !llvm.loop !64 + %exitcond40.not.i = icmp eq i64 %indvars.iv37.i, 0 + br i1 %exitcond40.not.i, label %lanczos_sum.exit, label %.preheader.i, !llvm.loop !64 .preheader25.i: ; preds = %19, %.preheader25.i %indvars.iv.i = phi i64 [ %indvars.iv.next.i, %.preheader25.i ], [ 0, %19 ] diff --git a/bench/csmith/optimized/Variable.ll b/bench/csmith/optimized/Variable.ll index a7965e6a43d..1f830d988e9 100644 --- a/bench/csmith/optimized/Variable.ll +++ b/bench/csmith/optimized/Variable.ll @@ -8971,8 +8971,9 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i70 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit72: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i71, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i70 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #25 %indvars.iv.next = add nsw i64 %indvars.iv, -1 - %148 = icmp sgt i64 %indvars.iv, 0 - br i1 %148, label %49, label %_ZNK8Variable10is_virtualEv.exit.thread, !llvm.loop !277 + %148 = and i64 %indvars.iv.next, 4294967295 + %exitcond163.not = icmp eq i64 %148, 4294967295 + br i1 %exitcond163.not, label %_ZNK8Variable10is_virtualEv.exit.thread, label %49, !llvm.loop !277 .body: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #25 @@ -13233,109 +13234,109 @@ _ZNSt14_Bit_referenceaSEb.exit.i.i.i.i.i.i: ; preds = %88, %85 %.sroa.03.1.idx.i.i.i.i.i.i = select i1 %95, i64 8, i64 0 %.sroa.03.1.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %.sroa.03.017.i.i.i.i.i.i, i64 %.sroa.03.1.idx.i.i.i.i.i.i %96 = add nsw i64 %.020.i.i.i.i.i.i, -1 - %97 = icmp sgt i64 %.020.i.i.i.i.i.i, 1 - br i1 %97, label %.lr.ph.i.i.i.i.i.i, label %_ZNSt6vectorIbSaIbEE15_M_copy_alignedESt19_Bit_const_iteratorS2_St13_Bit_iterator.exit, !llvm.loop !336 + %exitcond.not.i = icmp eq i64 %96, 0 + br i1 %exitcond.not.i, label %_ZNSt6vectorIbSaIbEE15_M_copy_alignedESt19_Bit_const_iteratorS2_St13_Bit_iterator.exit, label %.lr.ph.i.i.i.i.i.i, !llvm.loop !336 _ZNSt6vectorIbSaIbEE15_M_copy_alignedESt19_Bit_const_iteratorS2_St13_Bit_iterator.exit: ; preds = %_ZNSt14_Bit_referenceaSEb.exit.i.i.i.i.i.i - %98 = add i32 %.sroa.55.1.i.i.i.i.i.i, 1 - %99 = icmp eq i32 %.sroa.55.1.i.i.i.i.i.i, 63 - br i1 %99, label %100, label %_ZNSt13_Bit_iteratorppEi.exit + %97 = add i32 %.sroa.55.1.i.i.i.i.i.i, 1 + %98 = icmp eq i32 %.sroa.55.1.i.i.i.i.i.i, 63 + br i1 %98, label %99, label %_ZNSt13_Bit_iteratorppEi.exit -100: ; preds = %_ZNSt6vectorIbSaIbEE15_M_copy_alignedESt19_Bit_const_iteratorS2_St13_Bit_iterator.exit - %101 = getelementptr inbounds nuw i8, ptr %.sroa.03.1.i.i.i.i.i.i, i64 8 +99: ; preds = %_ZNSt6vectorIbSaIbEE15_M_copy_alignedESt19_Bit_const_iteratorS2_St13_Bit_iterator.exit + %100 = getelementptr inbounds nuw i8, ptr %.sroa.03.1.i.i.i.i.i.i, i64 8 br label %_ZNSt13_Bit_iteratorppEi.exit -_ZNSt13_Bit_iteratorppEi.exit: ; preds = %_ZSt4copyIPmS0_ET0_T_S2_S1_.exit.i, %_ZNSt6vectorIbSaIbEE15_M_copy_alignedESt19_Bit_const_iteratorS2_St13_Bit_iterator.exit, %100 - %.sroa.03.0.lcssa.i.i.i.i.i.i111 = phi ptr [ %.sroa.03.1.i.i.i.i.i.i, %100 ], [ %.sroa.03.1.i.i.i.i.i.i, %_ZNSt6vectorIbSaIbEE15_M_copy_alignedESt19_Bit_const_iteratorS2_St13_Bit_iterator.exit ], [ %77, %_ZSt4copyIPmS0_ET0_T_S2_S1_.exit.i ] - %.sroa.55.0.lcssa.i.i.i.i.i.i110 = phi i32 [ 63, %100 ], [ %.sroa.55.1.i.i.i.i.i.i, %_ZNSt6vectorIbSaIbEE15_M_copy_alignedESt19_Bit_const_iteratorS2_St13_Bit_iterator.exit ], [ 0, %_ZSt4copyIPmS0_ET0_T_S2_S1_.exit.i ] - %.sroa.083.0 = phi ptr [ %101, %100 ], [ %.sroa.03.1.i.i.i.i.i.i, %_ZNSt6vectorIbSaIbEE15_M_copy_alignedESt19_Bit_const_iteratorS2_St13_Bit_iterator.exit ], [ %77, %_ZSt4copyIPmS0_ET0_T_S2_S1_.exit.i ] - %.sroa.684.0 = phi i32 [ 0, %100 ], [ %98, %_ZNSt6vectorIbSaIbEE15_M_copy_alignedESt19_Bit_const_iteratorS2_St13_Bit_iterator.exit ], [ 1, %_ZSt4copyIPmS0_ET0_T_S2_S1_.exit.i ] - %102 = zext nneg i32 %.sroa.55.0.lcssa.i.i.i.i.i.i110 to i64 - %103 = shl nuw i64 1, %102 - br i1 %3, label %104, label %107 - -104: ; preds = %_ZNSt13_Bit_iteratorppEi.exit - %105 = load i64, ptr %.sroa.03.0.lcssa.i.i.i.i.i.i111, align 8, !tbaa !102 - %106 = or i64 %105, %103 +_ZNSt13_Bit_iteratorppEi.exit: ; preds = %_ZSt4copyIPmS0_ET0_T_S2_S1_.exit.i, %_ZNSt6vectorIbSaIbEE15_M_copy_alignedESt19_Bit_const_iteratorS2_St13_Bit_iterator.exit, %99 + %.sroa.03.0.lcssa.i.i.i.i.i.i111 = phi ptr [ %.sroa.03.1.i.i.i.i.i.i, %99 ], [ %.sroa.03.1.i.i.i.i.i.i, %_ZNSt6vectorIbSaIbEE15_M_copy_alignedESt19_Bit_const_iteratorS2_St13_Bit_iterator.exit ], [ %77, %_ZSt4copyIPmS0_ET0_T_S2_S1_.exit.i ] + %.sroa.55.0.lcssa.i.i.i.i.i.i110 = phi i32 [ 63, %99 ], [ %.sroa.55.1.i.i.i.i.i.i, %_ZNSt6vectorIbSaIbEE15_M_copy_alignedESt19_Bit_const_iteratorS2_St13_Bit_iterator.exit ], [ 0, %_ZSt4copyIPmS0_ET0_T_S2_S1_.exit.i ] + %.sroa.083.0 = phi ptr [ %100, %99 ], [ %.sroa.03.1.i.i.i.i.i.i, %_ZNSt6vectorIbSaIbEE15_M_copy_alignedESt19_Bit_const_iteratorS2_St13_Bit_iterator.exit ], [ %77, %_ZSt4copyIPmS0_ET0_T_S2_S1_.exit.i ] + %.sroa.684.0 = phi i32 [ 0, %99 ], [ %97, %_ZNSt6vectorIbSaIbEE15_M_copy_alignedESt19_Bit_const_iteratorS2_St13_Bit_iterator.exit ], [ 1, %_ZSt4copyIPmS0_ET0_T_S2_S1_.exit.i ] + %101 = zext nneg i32 %.sroa.55.0.lcssa.i.i.i.i.i.i110 to i64 + %102 = shl nuw i64 1, %101 + br i1 %3, label %103, label %106 + +103: ; preds = %_ZNSt13_Bit_iteratorppEi.exit + %104 = load i64, ptr %.sroa.03.0.lcssa.i.i.i.i.i.i111, align 8, !tbaa !102 + %105 = or i64 %104, %102 br label %_ZNSt14_Bit_referenceaSEb.exit53 -107: ; preds = %_ZNSt13_Bit_iteratorppEi.exit - %108 = xor i64 %103, -1 - %109 = load i64, ptr %.sroa.03.0.lcssa.i.i.i.i.i.i111, align 8, !tbaa !102 - %110 = and i64 %109, %108 +106: ; preds = %_ZNSt13_Bit_iteratorppEi.exit + %107 = xor i64 %102, -1 + %108 = load i64, ptr %.sroa.03.0.lcssa.i.i.i.i.i.i111, align 8, !tbaa !102 + %109 = and i64 %108, %107 br label %_ZNSt14_Bit_referenceaSEb.exit53 -_ZNSt14_Bit_referenceaSEb.exit53: ; preds = %104, %107 - %storemerge112 = phi i64 [ %110, %107 ], [ %106, %104 ] +_ZNSt14_Bit_referenceaSEb.exit53: ; preds = %103, %106 + %storemerge112 = phi i64 [ %109, %106 ], [ %105, %103 ] store i64 %storemerge112, ptr %.sroa.03.0.lcssa.i.i.i.i.i.i111, align 8, !tbaa !102 - %111 = sub i64 %11, %74 - %112 = shl nsw i64 %111, 3 - %113 = zext i32 %2 to i64 - %114 = sub nsw i64 %62, %113 - %115 = add i64 %114, %112 - %116 = icmp sgt i64 %115, 0 - br i1 %116, label %.lr.ph.i.i.i.i.i, label %_ZSt4copyISt13_Bit_iteratorS0_ET0_T_S2_S1_.exit + %110 = sub i64 %11, %74 + %111 = shl nsw i64 %110, 3 + %112 = zext i32 %2 to i64 + %113 = sub nsw i64 %62, %112 + %114 = add i64 %113, %111 + %115 = icmp sgt i64 %114, 0 + br i1 %115, label %.lr.ph.i.i.i.i.i, label %_ZSt4copyISt13_Bit_iteratorS0_ET0_T_S2_S1_.exit .lr.ph.i.i.i.i.i: ; preds = %_ZNSt14_Bit_referenceaSEb.exit53, %_ZNSt14_Bit_referenceaSERKS_.exit.i.i.i.i.i66 - %.024.i.i.i.i.i62 = phi i64 [ %134, %_ZNSt14_Bit_referenceaSERKS_.exit.i.i.i.i.i66 ], [ %115, %_ZNSt14_Bit_referenceaSEb.exit53 ] + %.024.i.i.i.i.i62 = phi i64 [ %133, %_ZNSt14_Bit_referenceaSERKS_.exit.i.i.i.i.i66 ], [ %114, %_ZNSt14_Bit_referenceaSEb.exit53 ] %.sroa.516.023.i.i.i.i.i = phi i32 [ %spec.select19.i.i.i.i.i70, %_ZNSt14_Bit_referenceaSERKS_.exit.i.i.i.i.i66 ], [ %2, %_ZNSt14_Bit_referenceaSEb.exit53 ] %.sroa.013.022.i.i.i.i.i = phi ptr [ %spec.select.i.i.i.i.i69, %_ZNSt14_Bit_referenceaSERKS_.exit.i.i.i.i.i66 ], [ %1, %_ZNSt14_Bit_referenceaSEb.exit53 ] %.sroa.59.021.i.i.i.i.i63 = phi i32 [ %.sroa.59.1.i.i.i.i.i73, %_ZNSt14_Bit_referenceaSERKS_.exit.i.i.i.i.i66 ], [ %.sroa.684.0, %_ZNSt14_Bit_referenceaSEb.exit53 ] %.sroa.07.020.i.i.i.i.i64 = phi ptr [ %.sroa.07.1.i.i.i.i.i72, %_ZNSt14_Bit_referenceaSERKS_.exit.i.i.i.i.i66 ], [ %.sroa.083.0, %_ZNSt14_Bit_referenceaSEb.exit53 ] - %117 = zext nneg i32 %.sroa.516.023.i.i.i.i.i to i64 - %118 = shl nuw i64 1, %117 - %119 = zext nneg i32 %.sroa.59.021.i.i.i.i.i63 to i64 - %120 = shl nuw i64 1, %119 - %121 = load i64, ptr %.sroa.013.022.i.i.i.i.i, align 8, !tbaa !102 - %122 = and i64 %121, %118 - %.not.i.i.i.i.i.i65 = icmp eq i64 %122, 0 - br i1 %.not.i.i.i.i.i.i65, label %126, label %123 - -123: ; preds = %.lr.ph.i.i.i.i.i - %124 = load i64, ptr %.sroa.07.020.i.i.i.i.i64, align 8, !tbaa !102 - %125 = or i64 %124, %120 + %116 = zext nneg i32 %.sroa.516.023.i.i.i.i.i to i64 + %117 = shl nuw i64 1, %116 + %118 = zext nneg i32 %.sroa.59.021.i.i.i.i.i63 to i64 + %119 = shl nuw i64 1, %118 + %120 = load i64, ptr %.sroa.013.022.i.i.i.i.i, align 8, !tbaa !102 + %121 = and i64 %120, %117 + %.not.i.i.i.i.i.i65 = icmp eq i64 %121, 0 + br i1 %.not.i.i.i.i.i.i65, label %125, label %122 + +122: ; preds = %.lr.ph.i.i.i.i.i + %123 = load i64, ptr %.sroa.07.020.i.i.i.i.i64, align 8, !tbaa !102 + %124 = or i64 %123, %119 br label %_ZNSt14_Bit_referenceaSERKS_.exit.i.i.i.i.i66 -126: ; preds = %.lr.ph.i.i.i.i.i - %127 = xor i64 %120, -1 - %128 = load i64, ptr %.sroa.07.020.i.i.i.i.i64, align 8, !tbaa !102 - %129 = and i64 %128, %127 +125: ; preds = %.lr.ph.i.i.i.i.i + %126 = xor i64 %119, -1 + %127 = load i64, ptr %.sroa.07.020.i.i.i.i.i64, align 8, !tbaa !102 + %128 = and i64 %127, %126 br label %_ZNSt14_Bit_referenceaSERKS_.exit.i.i.i.i.i66 -_ZNSt14_Bit_referenceaSERKS_.exit.i.i.i.i.i66: ; preds = %126, %123 - %storemerge.i.i.i.i.i67 = phi i64 [ %125, %123 ], [ %129, %126 ] +_ZNSt14_Bit_referenceaSERKS_.exit.i.i.i.i.i66: ; preds = %125, %122 + %storemerge.i.i.i.i.i67 = phi i64 [ %124, %122 ], [ %128, %125 ] store i64 %storemerge.i.i.i.i.i67, ptr %.sroa.07.020.i.i.i.i.i64, align 8, !tbaa !102 - %130 = add i32 %.sroa.516.023.i.i.i.i.i, 1 - %131 = icmp eq i32 %.sroa.516.023.i.i.i.i.i, 63 - %spec.select.idx.i.i.i.i.i68 = select i1 %131, i64 8, i64 0 + %129 = add i32 %.sroa.516.023.i.i.i.i.i, 1 + %130 = icmp eq i32 %.sroa.516.023.i.i.i.i.i, 63 + %spec.select.idx.i.i.i.i.i68 = select i1 %130, i64 8, i64 0 %spec.select.i.i.i.i.i69 = getelementptr inbounds nuw i8, ptr %.sroa.013.022.i.i.i.i.i, i64 %spec.select.idx.i.i.i.i.i68 - %spec.select19.i.i.i.i.i70 = select i1 %131, i32 0, i32 %130 - %132 = add i32 %.sroa.59.021.i.i.i.i.i63, 1 - %133 = icmp eq i32 %.sroa.59.021.i.i.i.i.i63, 63 - %.sroa.07.1.idx.i.i.i.i.i71 = select i1 %133, i64 8, i64 0 + %spec.select19.i.i.i.i.i70 = select i1 %130, i32 0, i32 %129 + %131 = add i32 %.sroa.59.021.i.i.i.i.i63, 1 + %132 = icmp eq i32 %.sroa.59.021.i.i.i.i.i63, 63 + %.sroa.07.1.idx.i.i.i.i.i71 = select i1 %132, i64 8, i64 0 %.sroa.07.1.i.i.i.i.i72 = getelementptr inbounds nuw i8, ptr %.sroa.07.020.i.i.i.i.i64, i64 %.sroa.07.1.idx.i.i.i.i.i71 - %.sroa.59.1.i.i.i.i.i73 = select i1 %133, i32 0, i32 %132 - %134 = add nsw i64 %.024.i.i.i.i.i62, -1 - %135 = icmp sgt i64 %.024.i.i.i.i.i62, 1 - br i1 %135, label %.lr.ph.i.i.i.i.i, label %_ZSt4copyISt13_Bit_iteratorS0_ET0_T_S2_S1_.exit, !llvm.loop !337 + %.sroa.59.1.i.i.i.i.i73 = select i1 %132, i32 0, i32 %131 + %133 = add nsw i64 %.024.i.i.i.i.i62, -1 + %134 = icmp sgt i64 %.024.i.i.i.i.i62, 1 + br i1 %134, label %.lr.ph.i.i.i.i.i, label %_ZSt4copyISt13_Bit_iteratorS0_ET0_T_S2_S1_.exit, !llvm.loop !337 _ZSt4copyISt13_Bit_iteratorS0_ET0_T_S2_S1_.exit: ; preds = %_ZNSt14_Bit_referenceaSERKS_.exit.i.i.i.i.i66, %_ZNSt14_Bit_referenceaSEb.exit53 %.sroa.07.0.lcssa.i.i.i.i.i58 = phi ptr [ %.sroa.083.0, %_ZNSt14_Bit_referenceaSEb.exit53 ], [ %.sroa.07.1.i.i.i.i.i72, %_ZNSt14_Bit_referenceaSERKS_.exit.i.i.i.i.i66 ] %.sroa.59.0.lcssa.i.i.i.i.i59 = phi i32 [ %.sroa.684.0, %_ZNSt14_Bit_referenceaSEb.exit53 ], [ %.sroa.59.1.i.i.i.i.i73, %_ZNSt14_Bit_referenceaSERKS_.exit.i.i.i.i.i66 ] %.not.i74 = icmp eq ptr %58, null - br i1 %.not.i74, label %_ZNSt13_Bvector_baseISaIbEE13_M_deallocateEv.exit, label %136 + br i1 %.not.i74, label %_ZNSt13_Bvector_baseISaIbEE13_M_deallocateEv.exit, label %135 -136: ; preds = %_ZSt4copyISt13_Bit_iteratorS0_ET0_T_S2_S1_.exit - %137 = ashr exact i64 %60, 3 - %138 = sub nsw i64 0, %137 - %139 = getelementptr inbounds i64, ptr %8, i64 %138 - tail call void @_ZdlPvm(ptr noundef %139, i64 noundef %60) #23 +135: ; preds = %_ZSt4copyISt13_Bit_iteratorS0_ET0_T_S2_S1_.exit + %136 = ashr exact i64 %60, 3 + %137 = sub nsw i64 0, %136 + %138 = getelementptr inbounds i64, ptr %8, i64 %137 + tail call void @_ZdlPvm(ptr noundef %138, i64 noundef %60) #23 br label %_ZNSt13_Bvector_baseISaIbEE13_M_deallocateEv.exit -_ZNSt13_Bvector_baseISaIbEE13_M_deallocateEv.exit: ; preds = %_ZSt4copyISt13_Bit_iteratorS0_ET0_T_S2_S1_.exit, %136 - %140 = lshr i64 %70, 6 - %141 = getelementptr inbounds nuw i64, ptr %73, i64 %140 - store ptr %141, ptr %7, align 8, !tbaa !141 +_ZNSt13_Bvector_baseISaIbEE13_M_deallocateEv.exit: ; preds = %_ZSt4copyISt13_Bit_iteratorS0_ET0_T_S2_S1_.exit, %135 + %139 = lshr i64 %70, 6 + %140 = getelementptr inbounds nuw i64, ptr %73, i64 %139 + store ptr %140, ptr %7, align 8, !tbaa !141 store ptr %73, ptr %0, align 8 %.sroa.588.0..sroa_idx89 = getelementptr inbounds nuw i8, ptr %0, i64 8 store i32 0, ptr %.sroa.588.0..sroa_idx89, align 8 diff --git a/bench/darktable/optimized/bauhaus.ll b/bench/darktable/optimized/bauhaus.ll index 2dcf837c763..411ce917a55 100644 --- a/bench/darktable/optimized/bauhaus.ll +++ b/bench/darktable/optimized/bauhaus.ll @@ -12182,7 +12182,7 @@ dt_bauhaus_widget_get_quad_active.exit: ; preds = %15, %17, %19 %25 = lshr i32 %24, 4 %.lobit.i = and i32 %25, 1 %26 = uitofp nneg i32 %.lobit.i to float - br label %181 + br label %182 27: ; preds = %10 switch i32 %2, label %47 [ @@ -12355,7 +12355,7 @@ dt_bauhaus_widget_get_quad_active.exit57: ; preds = %98, %100, %102 %108 = lshr i32 %107, 4 %.lobit.i55 = and i32 %108, 1 %109 = uitofp nneg i32 %.lobit.i55 to float - br label %181 + br label %182 110: ; preds = %93 %111 = icmp eq i32 %2, 3 @@ -12436,7 +12436,7 @@ dt_bauhaus_combobox_get_default.exit: ; preds = %dt_bauhaus_combobox %147 = inttoptr i64 %146 to ptr %148 = icmp ne ptr %.0.i61, %147 %149 = uitofp i1 %148 to float - br label %181 + br label %182 150: ; preds = %110 br i1 %.not.i.i.i.i58, label %151, label %DT_BAUHAUS_WIDGET.exit.i.i69 @@ -12491,7 +12491,7 @@ dt_bauhaus_combobox_get.exit: ; preds = %159 %172 = icmp eq i32 %.043.lcssa, %171 %173 = select reassoc nsz arcp contract afn i1 %172, float -5.000000e-01, float 0.000000e+00 %174 = fadd reassoc nsz arcp contract afn float %173, %170 - br label %181 + br label %182 175: ; preds = %.lr.ph, %175 %indvars.iv = phi i64 [ %168, %.lr.ph ], [ %indvars.iv.next, %175 ] @@ -12504,10 +12504,11 @@ dt_bauhaus_combobox_get.exit: ; preds = %159 %180 = sext i1 %.not53 to i32 %spec.select = add nsw i32 %.04373, %180 %indvars.iv.next = add nsw i64 %indvars.iv, -1 - %.not76 = icmp eq i64 %indvars.iv, 0 - br i1 %.not76, label %._crit_edge, label %175 + %181 = and i64 %indvars.iv.next, 4294967295 + %exitcond.not = icmp eq i64 %181, 4294967295 + br i1 %exitcond.not, label %._crit_edge, label %175 -181: ; preds = %._crit_edge, %dt_bauhaus_combobox_get_default.exit, %dt_bauhaus_widget_get_quad_active.exit57, %dt_bauhaus_widget_get_quad_active.exit +182: ; preds = %._crit_edge, %dt_bauhaus_combobox_get_default.exit, %dt_bauhaus_widget_get_quad_active.exit57, %dt_bauhaus_widget_get_quad_active.exit %.044 = phi nsz float [ %26, %dt_bauhaus_widget_get_quad_active.exit ], [ %109, %dt_bauhaus_widget_get_quad_active.exit57 ], [ %149, %dt_bauhaus_combobox_get_default.exit ], [ %174, %._crit_edge ] ret float %.044 } diff --git a/bench/darktable/optimized/curve_tools.ll b/bench/darktable/optimized/curve_tools.ll index 6a391a497f9..abb98b50f4b 100644 --- a/bench/darktable/optimized/curve_tools.ll +++ b/bench/darktable/optimized/curve_tools.ll @@ -544,59 +544,57 @@ define noalias noundef ptr @d3_np_fs(i32 noundef %0, ptr noundef captures(none) %30 = fdiv reassoc nsz arcp contract afn float %24, %29 store float %30, ptr %23, align 4, !tbaa !6 %31 = add nsw i32 %0, -2 - %32 = zext i32 %31 to i64 - %33 = shl nuw nsw i64 %32, 2 - %34 = getelementptr i8, ptr %8, i64 %33 - %scevgep = getelementptr i8, ptr %34, i64 4 - %load_initial = load float, ptr %scevgep, align 4 - %invariant.gep100 = getelementptr i8, ptr %1, i64 12 + %32 = zext nneg i32 %31 to i64 br label %.lr.ph80 .lr.ph74: ; preds = %.lr.ph74.preheader, %.lr.ph74 - %35 = phi float [ %.pre, %.lr.ph74.preheader ], [ %51, %.lr.ph74 ] + %33 = phi float [ %.pre, %.lr.ph74.preheader ], [ %49, %.lr.ph74 ] %indvars.iv86 = phi i64 [ 1, %.lr.ph74.preheader ], [ %indvars.iv.next87, %.lr.ph74 ] %.idx = mul i64 %indvars.iv86, 12 - %36 = getelementptr i8, ptr %1, i64 %.idx - %37 = getelementptr i8, ptr %36, i64 -4 + %34 = getelementptr i8, ptr %1, i64 %.idx + %35 = getelementptr i8, ptr %34, i64 -4 + %36 = load float, ptr %35, align 4, !tbaa !6 + %37 = getelementptr i8, ptr %34, i64 -8 %38 = load float, ptr %37, align 4, !tbaa !6 - %39 = getelementptr i8, ptr %36, i64 -8 - %40 = load float, ptr %39, align 4, !tbaa !6 - %41 = fdiv reassoc nsz arcp contract afn float %38, %40 - %.idx95 = mul nuw nsw i64 %indvars.iv86, 12 - %42 = getelementptr inbounds nuw i8, ptr %1, i64 %.idx95 - %43 = getelementptr inbounds nuw i8, ptr %42, i64 4 - %44 = load float, ptr %43, align 4, !tbaa !6 - %45 = load float, ptr %42, align 4, !tbaa !6 - %46 = fmul reassoc nsz arcp contract afn float %45, %41 - %47 = fsub reassoc nsz arcp contract afn float %44, %46 - store float %47, ptr %43, align 4, !tbaa !6 - %48 = getelementptr inbounds nuw float, ptr %8, i64 %indvars.iv86 - %49 = load float, ptr %48, align 4, !tbaa !6 - %50 = fmul reassoc nsz arcp contract afn float %35, %41 - %51 = fsub reassoc nsz arcp contract afn float %49, %50 - store float %51, ptr %48, align 4, !tbaa !6 + %39 = fdiv reassoc nsz arcp contract afn float %36, %38 + %.idx96 = mul nuw nsw i64 %indvars.iv86, 12 + %40 = getelementptr inbounds nuw i8, ptr %1, i64 %.idx96 + %41 = getelementptr inbounds nuw i8, ptr %40, i64 4 + %42 = load float, ptr %41, align 4, !tbaa !6 + %43 = load float, ptr %40, align 4, !tbaa !6 + %44 = fmul reassoc nsz arcp contract afn float %43, %39 + %45 = fsub reassoc nsz arcp contract afn float %42, %44 + store float %45, ptr %41, align 4, !tbaa !6 + %46 = getelementptr inbounds nuw float, ptr %8, i64 %indvars.iv86 + %47 = load float, ptr %46, align 4, !tbaa !6 + %48 = fmul reassoc nsz arcp contract afn float %33, %39 + %49 = fsub reassoc nsz arcp contract afn float %47, %48 + store float %49, ptr %46, align 4, !tbaa !6 %indvars.iv.next87 = add nuw nsw i64 %indvars.iv86, 1 %exitcond90.not = icmp eq i64 %indvars.iv.next87, %wide.trip.count br i1 %exitcond90.not, label %.lr.ph80.preheader, label %.lr.ph74 .lr.ph80: ; preds = %.lr.ph80.preheader, %.lr.ph80 - %store_forwarded = phi float [ %load_initial, %.lr.ph80.preheader ], [ %59, %.lr.ph80 ] %indvars.iv91 = phi i64 [ %32, %.lr.ph80.preheader ], [ %indvars.iv.next92, %.lr.ph80 ] - %52 = getelementptr inbounds nuw float, ptr %8, i64 %indvars.iv91 - %53 = load float, ptr %52, align 4, !tbaa !6 - %54 = mul nuw i64 %indvars.iv91, 12 - %gep101 = getelementptr i8, ptr %invariant.gep100, i64 %54 - %55 = load float, ptr %gep101, align 4, !tbaa !6 - %56 = fmul reassoc nsz arcp contract afn float %store_forwarded, %55 - %57 = fsub reassoc nsz arcp contract afn float %53, %56 + %50 = getelementptr inbounds nuw float, ptr %8, i64 %indvars.iv91 + %51 = load float, ptr %50, align 4, !tbaa !6 + %52 = add nuw nsw i64 %indvars.iv91, 1 + %.idx97 = mul nuw nsw i64 %52, 12 + %53 = getelementptr inbounds nuw i8, ptr %1, i64 %.idx97 + %54 = load float, ptr %53, align 4, !tbaa !6 + %55 = getelementptr inbounds nuw float, ptr %8, i64 %52 + %56 = load float, ptr %55, align 4, !tbaa !6 + %57 = fmul reassoc nsz arcp contract afn float %56, %54 + %58 = fsub reassoc nsz arcp contract afn float %51, %57 %gep77.idx = mul nuw nsw i64 %indvars.iv91, 12 %gep77 = getelementptr inbounds nuw i8, ptr %invariant.gep, i64 %gep77.idx - %58 = load float, ptr %gep77, align 4, !tbaa !6 - %59 = fdiv reassoc nsz arcp contract afn float %57, %58 - store float %59, ptr %52, align 4, !tbaa !6 + %59 = load float, ptr %gep77, align 4, !tbaa !6 + %60 = fdiv reassoc nsz arcp contract afn float %58, %59 + store float %60, ptr %50, align 4, !tbaa !6 %indvars.iv.next92 = add nsw i64 %indvars.iv91, -1 - %.not = icmp eq i64 %indvars.iv91, 0 - br i1 %.not, label %.loopexit, label %.lr.ph80 + %61 = and i64 %indvars.iv.next92, 4294967295 + %exitcond94.not = icmp eq i64 %61, 4294967295 + br i1 %exitcond94.not, label %.loopexit, label %.lr.ph80 .loopexit: ; preds = %.lr.ph, %.lr.ph80, %._crit_edge75, %3 %.058 = phi ptr [ null, %3 ], [ %8, %._crit_edge75 ], [ %8, %.lr.ph80 ], [ null, %.lr.ph ] diff --git a/bench/darktable/optimized/fp_dng.ll b/bench/darktable/optimized/fp_dng.ll index 0e6db9df4db..fc072c04cfd 100644 --- a/bench/darktable/optimized/fp_dng.ll +++ b/bench/darktable/optimized/fp_dng.ll @@ -1025,10 +1025,10 @@ _ZL13DecodeFPDeltaPhS_iii.exit: ; preds = %.lr.ph77.i, %267 br label %.lr.ph72.i .lr.ph72.i: ; preds = %_Z17__DNG_HalfToFloatt.exit.i, %.lr.ph72.preheader.i - %indvars.iv80.i = phi i64 [ %299, %.lr.ph72.preheader.i ], [ %indvars.iv.next81.i, %_Z17__DNG_HalfToFloatt.exit.i ] + %indvars.iv81.i = phi i64 [ %299, %.lr.ph72.preheader.i ], [ %indvars.iv.next82.i, %_Z17__DNG_HalfToFloatt.exit.i ] %.04670.i = phi float [ 0.000000e+00, %.lr.ph72.preheader.i ], [ %.046..i, %_Z17__DNG_HalfToFloatt.exit.i ] - %indvars.iv.next81.i = add nsw i64 %indvars.iv80.i, -1 - %300 = getelementptr inbounds nuw i16, ptr %186, i64 %indvars.iv.next81.i + %indvars.iv.next82.i = add nsw i64 %indvars.iv81.i, -1 + %300 = getelementptr inbounds nuw i16, ptr %186, i64 %indvars.iv.next82.i %301 = load i16, ptr %300, align 2, !tbaa !136 %302 = zext i16 %301 to i32 %303 = lshr i32 %302, 15 @@ -1079,13 +1079,14 @@ _ZL13DecodeFPDeltaPhS_iii.exit: ; preds = %.lr.ph77.i, %267 _Z17__DNG_HalfToFloatt.exit.i: ; preds = %319, %316, %314, %312 %.022.i.i = phi i32 [ %313, %312 ], [ %325, %319 ], [ %318, %316 ], [ 0, %314 ] - %326 = getelementptr inbounds nuw i32, ptr %186, i64 %indvars.iv.next81.i + %326 = getelementptr inbounds nuw i32, ptr %186, i64 %indvars.iv.next82.i store i32 %.022.i.i, ptr %326, align 4, !tbaa !54 %327 = bitcast i32 %.022.i.i to float %328 = fcmp reassoc nsz arcp contract afn ogt float %.04670.i, %327 %.046..i = select reassoc nsz arcp contract afn i1 %328, float %.04670.i, float %327 - %329 = icmp samesign ugt i64 %indvars.iv80.i, 1 - br i1 %329, label %.lr.ph72.i, label %_ZL12expandFloatsPhii.exit, !llvm.loop !137 + %329 = and i64 %indvars.iv.next82.i, 4294967295 + %exitcond85.not.i = icmp eq i64 %329, 0 + br i1 %exitcond85.not.i, label %_ZL12expandFloatsPhii.exit, label %.lr.ph72.i, !llvm.loop !137 .lr.ph67.preheader.i: ; preds = %_ZL13DecodeFPDeltaPhS_iii.exit.thread164 %330 = add nsw i32 %293, -1 @@ -1162,8 +1163,9 @@ _Z17__DNG_FP24ToFloatPKh.exit.i: ; preds = %359, %356, %354, %3 %.2..i = select reassoc nsz arcp contract afn i1 %368, float %.266.i, float %367 %indvars.iv.next78.i = add nsw i64 %indvars.iv77.i, -1 %369 = getelementptr inbounds i8, ptr %.04964.i, i64 -3 - %370 = icmp sgt i64 %indvars.iv77.i, 0 - br i1 %370, label %.lr.ph67.i, label %_ZL12expandFloatsPhii.exit, !llvm.loop !138 + %370 = and i64 %indvars.iv.next78.i, 4294967295 + %exitcond80.not.i = icmp eq i64 %370, 4294967295 + br i1 %exitcond80.not.i, label %_ZL12expandFloatsPhii.exit, label %.lr.ph67.i, !llvm.loop !138 .lr.ph.i127: ; preds = %.lr.ph.i127, %.lr.ph.preheader.i125 %indvars.iv.i128 = phi i64 [ 0, %.lr.ph.preheader.i125 ], [ %indvars.iv.next.i129, %.lr.ph.i127 ] @@ -2096,10 +2098,10 @@ _ZL13libraw_swap32Phi.exit: ; preds = %_ZL13libraw_swap24P br label %.lr.ph72.i .lr.ph72.i: ; preds = %_Z17__DNG_HalfToFloatt.exit.i, %.lr.ph72.preheader.i - %indvars.iv80.i = phi i64 [ %235, %.lr.ph72.preheader.i ], [ %indvars.iv.next81.i, %_Z17__DNG_HalfToFloatt.exit.i ] + %indvars.iv81.i = phi i64 [ %235, %.lr.ph72.preheader.i ], [ %indvars.iv.next82.i, %_Z17__DNG_HalfToFloatt.exit.i ] %.04670.i = phi float [ 0.000000e+00, %.lr.ph72.preheader.i ], [ %.046..i, %_Z17__DNG_HalfToFloatt.exit.i ] - %indvars.iv.next81.i = add nsw i64 %indvars.iv80.i, -1 - %236 = getelementptr inbounds nuw i16, ptr %196, i64 %indvars.iv.next81.i + %indvars.iv.next82.i = add nsw i64 %indvars.iv81.i, -1 + %236 = getelementptr inbounds nuw i16, ptr %196, i64 %indvars.iv.next82.i %237 = load i16, ptr %236, align 2, !tbaa !136 %238 = zext i16 %237 to i32 %239 = lshr i32 %238, 15 @@ -2150,13 +2152,14 @@ _ZL13libraw_swap32Phi.exit: ; preds = %_ZL13libraw_swap24P _Z17__DNG_HalfToFloatt.exit.i: ; preds = %255, %252, %250, %248 %.022.i.i = phi i32 [ %249, %248 ], [ %261, %255 ], [ %254, %252 ], [ 0, %250 ] - %262 = getelementptr inbounds nuw i32, ptr %196, i64 %indvars.iv.next81.i + %262 = getelementptr inbounds nuw i32, ptr %196, i64 %indvars.iv.next82.i store i32 %.022.i.i, ptr %262, align 4, !tbaa !54 %263 = bitcast i32 %.022.i.i to float %264 = fcmp reassoc nsz arcp contract afn ogt float %.04670.i, %263 %.046..i = select reassoc nsz arcp contract afn i1 %264, float %.04670.i, float %263 - %265 = icmp samesign ugt i64 %indvars.iv80.i, 1 - br i1 %265, label %.lr.ph72.i, label %_ZL12expandFloatsPhii.exit, !llvm.loop !137 + %265 = and i64 %indvars.iv.next82.i, 4294967295 + %exitcond85.not.i = icmp eq i64 %265, 0 + br i1 %exitcond85.not.i, label %_ZL12expandFloatsPhii.exit, label %.lr.ph72.i, !llvm.loop !137 266: ; preds = %_ZL13libraw_swap32Phi.exit.thread153, %_ZL13libraw_swap32Phi.exit %267 = phi i32 [ %227, %_ZL13libraw_swap32Phi.exit.thread153 ], [ %230, %_ZL13libraw_swap32Phi.exit ] @@ -2238,8 +2241,9 @@ _Z17__DNG_FP24ToFloatPKh.exit.i: ; preds = %298, %295, %293, %2 %.2..i = select reassoc nsz arcp contract afn i1 %307, float %.266.i, float %306 %indvars.iv.next78.i = add nsw i64 %indvars.iv77.i, -1 %308 = getelementptr inbounds i8, ptr %.04964.i, i64 -3 - %309 = icmp sgt i64 %indvars.iv77.i, 0 - br i1 %309, label %.lr.ph67.i, label %_ZL12expandFloatsPhii.exit, !llvm.loop !138 + %309 = and i64 %indvars.iv.next78.i, 4294967295 + %exitcond80.not.i = icmp eq i64 %309, 4294967295 + br i1 %exitcond80.not.i, label %_ZL12expandFloatsPhii.exit, label %.lr.ph67.i, !llvm.loop !138 .lr.ph.i133: ; preds = %.lr.ph.i133, %.lr.ph.preheader.i131 %indvars.iv.i134 = phi i64 [ 0, %.lr.ph.preheader.i131 ], [ %indvars.iv.next.i135, %.lr.ph.i133 ] diff --git a/bench/duckdb/optimized/compile.ll b/bench/duckdb/optimized/compile.ll index fd82d7ad0a5..a615c18067f 100644 --- a/bench/duckdb/optimized/compile.ll +++ b/bench/duckdb/optimized/compile.ll @@ -2950,29 +2950,29 @@ tailrecurse.backedge: ; preds = %22, %58, %63 br label %76 76: ; preds = %.lr.ph130, %90 - %indvars.iv146 = phi i64 [ 0, %.lr.ph130 ], [ %indvars.iv.next147, %90 ] + %indvars.iv147 = phi i64 [ 0, %.lr.ph130 ], [ %indvars.iv.next148, %90 ] %.064128 = phi i32 [ 0, %.lr.ph130 ], [ %.1, %90 ] - %77 = icmp eq i64 %indvars.iv146, 0 + %77 = icmp eq i64 %indvars.iv147, 0 br i1 %77, label %._crit_edge, label %78 ._crit_edge: ; preds = %76 - %.pre153 = load i8, ptr %7, align 1, !tbaa !75 - %.pre155 = load i8, ptr %8, align 1, !tbaa !75 + %.pre154 = load i8, ptr %7, align 1, !tbaa !75 + %.pre156 = load i8, ptr %8, align 1, !tbaa !75 br label %84 78: ; preds = %76 - %79 = getelementptr inbounds nuw [4 x i8], ptr %7, i64 0, i64 %indvars.iv146 + %79 = getelementptr inbounds nuw [4 x i8], ptr %7, i64 0, i64 %indvars.iv147 %80 = load i8, ptr %79, align 1, !tbaa !75 - %81 = getelementptr inbounds nuw [4 x i8], ptr %8, i64 0, i64 %indvars.iv146 + %81 = getelementptr inbounds nuw [4 x i8], ptr %8, i64 0, i64 %indvars.iv147 %82 = load i8, ptr %81, align 1, !tbaa !75 %83 = icmp ne i8 %80, %82 - %.not81 = icmp eq i64 %indvars.iv146, %75 + %.not81 = icmp eq i64 %indvars.iv147, %75 %or.cond87 = select i1 %83, i1 true, i1 %.not81 br i1 %or.cond87, label %88, label %84 84: ; preds = %._crit_edge, %78 - %85 = phi i8 [ %.pre155, %._crit_edge ], [ %80, %78 ] - %86 = phi i8 [ %.pre153, %._crit_edge ], [ %80, %78 ] + %85 = phi i8 [ %.pre156, %._crit_edge ], [ %80, %78 ] + %86 = phi i8 [ %.pre154, %._crit_edge ], [ %80, %78 ] %87 = call noundef i32 @_ZN10duckdb_re28Compiler20CachedRuneByteSuffixEhhbi(ptr noundef nonnull align 8 dereferenceable(228) %0, i8 noundef zeroext %86, i8 noundef zeroext %85, i1 noundef zeroext false, i32 noundef %.064128) br label %90 @@ -2982,9 +2982,9 @@ tailrecurse.backedge: ; preds = %22, %58, %63 90: ; preds = %84, %88 %.1 = phi i32 [ %87, %84 ], [ %89, %88 ] - %indvars.iv.next147 = add nuw nsw i64 %indvars.iv146, 1 - %exitcond149.not = icmp eq i64 %indvars.iv.next147, %wide.trip.count - br i1 %exitcond149.not, label %.loopexit, label %76, !llvm.loop !104 + %indvars.iv.next148 = add nuw nsw i64 %indvars.iv147, 1 + %exitcond150.not = icmp eq i64 %indvars.iv.next148, %wide.trip.count + br i1 %exitcond150.not, label %.loopexit, label %76, !llvm.loop !104 91: ; preds = %67 br i1 %73, label %.lr.ph126.preheader, label %.loopexit @@ -2993,7 +2993,7 @@ tailrecurse.backedge: ; preds = %22, %58, %63 %92 = add nsw i32 %68, -1 %93 = zext nneg i32 %92 to i64 %.phi.trans.insert = getelementptr inbounds nuw [4 x i8], ptr %7, i64 0, i64 %93 - %.phi.trans.insert150 = getelementptr inbounds nuw [4 x i8], ptr %8, i64 0, i64 %93 + %.phi.trans.insert151 = getelementptr inbounds nuw [4 x i8], ptr %8, i64 0, i64 %93 br label %.lr.ph126 .lr.ph126: ; preds = %.lr.ph126.preheader, %108 @@ -3004,7 +3004,7 @@ tailrecurse.backedge: ; preds = %22, %58, %63 .lr.ph126._crit_edge: ; preds = %.lr.ph126 %.pre = load i8, ptr %.phi.trans.insert, align 1, !tbaa !75 - %.pre151 = load i8, ptr %.phi.trans.insert150, align 1, !tbaa !75 + %.pre152 = load i8, ptr %.phi.trans.insert151, align 1, !tbaa !75 br label %102 95: ; preds = %.lr.ph126 @@ -3018,7 +3018,7 @@ tailrecurse.backedge: ; preds = %22, %58, %63 br i1 %or.cond4, label %102, label %106 102: ; preds = %.lr.ph126._crit_edge, %95 - %103 = phi i8 [ %.pre151, %.lr.ph126._crit_edge ], [ %99, %95 ] + %103 = phi i8 [ %.pre152, %.lr.ph126._crit_edge ], [ %99, %95 ] %104 = phi i8 [ %.pre, %.lr.ph126._crit_edge ], [ %97, %95 ] %105 = call noundef i32 @_ZN10duckdb_re28Compiler20CachedRuneByteSuffixEhhbi(ptr noundef nonnull align 8 dereferenceable(228) %0, i8 noundef zeroext %104, i8 noundef zeroext %103, i1 noundef zeroext false, i32 noundef %.3123) br label %108 @@ -3030,8 +3030,9 @@ tailrecurse.backedge: ; preds = %22, %58, %63 108: ; preds = %102, %106 %.4 = phi i32 [ %105, %102 ], [ %107, %106 ] %indvars.iv.next = add nsw i64 %indvars.iv, -1 - %109 = icmp sgt i64 %indvars.iv, 0 - br i1 %109, label %.lr.ph126, label %.loopexit, !llvm.loop !105 + %109 = and i64 %indvars.iv.next, 4294967295 + %exitcond146.not = icmp eq i64 %109, 4294967295 + br i1 %exitcond146.not, label %.loopexit, label %.lr.ph126, !llvm.loop !105 .loopexit: ; preds = %108, %90, %91, %.preheader %.2 = phi i32 [ 0, %.preheader ], [ 0, %91 ], [ %.1, %90 ], [ %.4, %108 ] diff --git a/bench/duckdb/optimized/src_backend_nodes_list.ll b/bench/duckdb/optimized/src_backend_nodes_list.ll index facf520feda..a8f1a822911 100644 --- a/bench/duckdb/optimized/src_backend_nodes_list.ll +++ b/bench/duckdb/optimized/src_backend_nodes_list.ll @@ -172,21 +172,25 @@ define hidden noundef ptr @_ZN17duckdb_libpgquery13list_nth_cellEPKNS_6PGListEi( %4 = load i32, ptr %3, align 4, !tbaa !13 %5 = add nsw i32 %4, -1 %6 = icmp eq i32 %1, %5 - br i1 %6, label %7, label %.preheader + br i1 %6, label %7, label %.preheader.preheader + +.preheader.preheader: ; preds = %2 + %smin = tail call i32 @llvm.smin.i32(i32 %1, i32 0) + br label %.preheader 7: ; preds = %2 %8 = getelementptr inbounds nuw i8, ptr %0, i64 16 %9 = load ptr, ptr %8, align 8, !tbaa !15 br label %.loopexit -.preheader: ; preds = %2, %.preheader - %.07 = phi i32 [ %11, %.preheader ], [ %1, %2 ] - %.pn = phi ptr [ %.0, %.preheader ], [ %0, %2 ] +.preheader: ; preds = %.preheader.preheader, %.preheader + %.07 = phi i32 [ %10, %.preheader ], [ %1, %.preheader.preheader ] + %.pn = phi ptr [ %.0, %.preheader ], [ %0, %.preheader.preheader ] %.0.in = getelementptr inbounds nuw i8, ptr %.pn, i64 8 %.0 = load ptr, ptr %.0.in, align 8, !tbaa !17 - %10 = icmp sgt i32 %.07, 0 - %11 = add nsw i32 %.07, -1 - br i1 %10, label %.preheader, label %.loopexit, !llvm.loop !20 + %10 = add i32 %.07, -1 + %exitcond.not = icmp eq i32 %.07, %smin + br i1 %exitcond.not, label %.loopexit, label %.preheader, !llvm.loop !20 .loopexit: ; preds = %.preheader, %7 %.08 = phi ptr [ %9, %7 ], [ %.0, %.preheader ] @@ -199,26 +203,30 @@ define hidden noundef ptr @_ZN17duckdb_libpgquery8list_nthEPKNS_6PGListEi(ptr no %4 = load i32, ptr %3, align 4, !tbaa !13 %5 = add nsw i32 %4, -1 %6 = icmp eq i32 %1, %5 - br i1 %6, label %7, label %.preheader.i + br i1 %6, label %7, label %.preheader.preheader.i + +.preheader.preheader.i: ; preds = %2 + %smin.i = tail call i32 @llvm.smin.i32(i32 %1, i32 0) + br label %.preheader.i 7: ; preds = %2 %8 = getelementptr inbounds nuw i8, ptr %0, i64 16 %9 = load ptr, ptr %8, align 8, !tbaa !15 br label %_ZN17duckdb_libpgquery13list_nth_cellEPKNS_6PGListEi.exit -.preheader.i: ; preds = %2, %.preheader.i - %.07.i = phi i32 [ %11, %.preheader.i ], [ %1, %2 ] - %.pn.i = phi ptr [ %.0.i, %.preheader.i ], [ %0, %2 ] +.preheader.i: ; preds = %.preheader.i, %.preheader.preheader.i + %.07.i = phi i32 [ %10, %.preheader.i ], [ %1, %.preheader.preheader.i ] + %.pn.i = phi ptr [ %.0.i, %.preheader.i ], [ %0, %.preheader.preheader.i ] %.0.in.i = getelementptr inbounds nuw i8, ptr %.pn.i, i64 8 %.0.i = load ptr, ptr %.0.in.i, align 8, !tbaa !17 - %10 = icmp sgt i32 %.07.i, 0 - %11 = add nsw i32 %.07.i, -1 - br i1 %10, label %.preheader.i, label %_ZN17duckdb_libpgquery13list_nth_cellEPKNS_6PGListEi.exit, !llvm.loop !20 + %10 = add i32 %.07.i, -1 + %exitcond.not.i = icmp eq i32 %.07.i, %smin.i + br i1 %exitcond.not.i, label %_ZN17duckdb_libpgquery13list_nth_cellEPKNS_6PGListEi.exit, label %.preheader.i, !llvm.loop !20 _ZN17duckdb_libpgquery13list_nth_cellEPKNS_6PGListEi.exit: ; preds = %.preheader.i, %7 %.08.i = phi ptr [ %9, %7 ], [ %.0.i, %.preheader.i ] - %12 = load ptr, ptr %.08.i, align 8, !tbaa !16 - ret ptr %12 + %11 = load ptr, ptr %.08.i, align 8, !tbaa !16 + ret ptr %11 } ; Function Attrs: mustprogress uwtable @@ -390,9 +398,9 @@ define hidden noundef ptr @_ZN17duckdb_libpgquery14list_copy_tailEPKNS_6PGListEi %.pn = phi ptr [ %0, %7 ], [ %.026, %17 ] %.026.in = getelementptr inbounds nuw i8, ptr %.pn, i64 8 %.026 = load ptr, ptr %.026.in, align 8, !tbaa !17 - %.not36 = icmp eq i32 %.028, 0 %18 = add nsw i32 %.028, -1 - br i1 %.not36, label %19, label %17, !llvm.loop !23 + %exitcond.not = icmp eq i32 %.028, 0 + br i1 %exitcond.not, label %19, label %17, !llvm.loop !23 19: ; preds = %17 %20 = load i64, ptr %.026, align 8, !tbaa !16 @@ -431,6 +439,9 @@ define hidden noundef ptr @_ZN17duckdb_libpgquery14list_copy_tailEPKNS_6PGListEi ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i32 @llvm.smax.i32(i32, i32) #4 +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare i32 @llvm.smin.i32(i32, i32) #4 + attributes #0 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #2 = { mustprogress nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: none) uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } diff --git a/bench/duckdb/optimized/src_backend_parser_scan.ll b/bench/duckdb/optimized/src_backend_parser_scan.ll index 740dde69f4e..1d4218d44d3 100644 --- a/bench/duckdb/optimized/src_backend_parser_scan.ll +++ b/bench/duckdb/optimized/src_backend_parser_scan.ll @@ -265,18 +265,18 @@ _ZN17duckdb_libpgqueryL26core_yyensure_buffer_stackEPv.exit: ; preds = %24, %.cr %110 = sext i16 %109 to i32 %111 = getelementptr inbounds nuw i8, ptr %.1782, i64 1 %.not825 = icmp eq i16 %109, 308 - br i1 %.not825, label %.backedge.sink.split2371, label %73, !llvm.loop !40 + br i1 %.not825, label %.backedge.sink.split2373, label %73, !llvm.loop !40 -.backedge.sink.split2371: ; preds = %._crit_edge, %.backedge.sink.split2371.backedge - %.1788.ph = phi ptr [ %.1788.ph.be, %.backedge.sink.split2371.backedge ], [ %.0787, %._crit_edge ] +.backedge.sink.split2373: ; preds = %._crit_edge, %.backedge.sink.split2373.backedge + %.1788.ph = phi ptr [ %.1788.ph.be, %.backedge.sink.split2373.backedge ], [ %.0787, %._crit_edge ] %112 = load ptr, ptr %62, align 8, !tbaa !37 %113 = load i32, ptr %61, align 8, !tbaa !36 br label %.backedge -.backedge: ; preds = %.backedge.backedge, %.backedge.sink.split2371 - %.1788 = phi ptr [ %.1788.ph, %.backedge.sink.split2371 ], [ %1764, %.backedge.backedge ] - %.2783 = phi ptr [ %112, %.backedge.sink.split2371 ], [ %1767, %.backedge.backedge ] - %.3780 = phi i32 [ %113, %.backedge.sink.split2371 ], [ %.3780.be, %.backedge.backedge ] +.backedge: ; preds = %.backedge.backedge, %.backedge.sink.split2373 + %.1788 = phi ptr [ %.1788.ph, %.backedge.sink.split2373 ], [ %1764, %.backedge.backedge ] + %.2783 = phi ptr [ %112, %.backedge.sink.split2373 ], [ %1767, %.backedge.backedge ] + %.3780 = phi i32 [ %113, %.backedge.sink.split2373 ], [ %.3780.be, %.backedge.backedge ] %114 = sext i32 %.3780 to i64 %115 = getelementptr inbounds [309 x i16], ptr @_ZN17duckdb_libpgqueryL9yy_acceptE, i64 0, i64 %114 %116 = load i16, ptr %115, align 2, !tbaa !34 @@ -399,7 +399,7 @@ _ZN17duckdb_libpgqueryL26core_yyensure_buffer_stackEPv.exit: ; preds = %24, %.cr 123: ; preds = %122 %124 = load i8, ptr %59, align 8, !tbaa !33 store i8 %124, ptr %.2783, align 1, !tbaa !32 - br label %.backedge.sink.split2371.backedge + br label %.backedge.sink.split2373.backedge 125: ; preds = %122 %126 = load ptr, ptr %63, align 8, !tbaa !30 @@ -791,11 +791,11 @@ _ZN17duckdb_libpgqueryL10addlitcharEhPv.exit868: ; preds = %._crit_edge.i865, % %344 = load i32, ptr %343, align 4, !tbaa !48 %345 = tail call noundef i32 @_ZN17duckdb_libpgquery19scanner_errpositionEiPv(i32 noundef %344, ptr noundef nonnull %2) %346 = tail call noundef i32 (i32, ...) @_ZN17duckdb_libpgquery7ereportEiz(i32 noundef 3, i32 noundef %345) - %.pre1830 = load ptr, ptr %2, align 8, !tbaa !43 + %.pre1832 = load ptr, ptr %2, align 8, !tbaa !43 br label %347 347: ; preds = %339, %327 - %348 = phi ptr [ %.pre1830, %339 ], [ %329, %327 ] + %348 = phi ptr [ %.pre1832, %339 ], [ %329, %327 ] store i32 21, ptr %60, align 4, !tbaa !18 %349 = getelementptr inbounds nuw i8, ptr %348, i64 48 store i32 0, ptr %349, align 8, !tbaa !50 @@ -825,11 +825,11 @@ _ZN17duckdb_libpgqueryL10addlitcharEhPv.exit868: ; preds = %._crit_edge.i865, % %361 = getelementptr inbounds nuw i8, ptr %354, i64 48 %362 = load i32, ptr %361, align 8, !tbaa !50 %363 = tail call noundef zeroext i1 @_ZN17duckdb_libpgquery14pg_verifymbstrEPKcib(ptr noundef %360, i32 noundef %362, i1 noundef zeroext false) - %.pre1829 = load ptr, ptr %2, align 8, !tbaa !43 + %.pre1831 = load ptr, ptr %2, align 8, !tbaa !43 br label %364 364: ; preds = %358, %350 - %365 = phi ptr [ %.pre1829, %358 ], [ %354, %350 ] + %365 = phi ptr [ %.pre1831, %358 ], [ %354, %350 ] %366 = getelementptr inbounds nuw i8, ptr %365, i64 48 %367 = load i32, ptr %366, align 8, !tbaa !50 %368 = add nsw i32 %367, 1 @@ -905,13 +905,13 @@ _ZN17duckdb_libpgqueryL17check_uescapecharEh.exit: ; preds = %switch.early.test. br i1 %398, label %_ZN17duckdb_libpgqueryL17check_uescapecharEh.exit._ZN17duckdb_libpgqueryL17check_uescapecharEh.exit.thread_crit_edge, label %410 _ZN17duckdb_libpgqueryL17check_uescapecharEh.exit._ZN17duckdb_libpgqueryL17check_uescapecharEh.exit.thread_crit_edge: ; preds = %_ZN17duckdb_libpgqueryL17check_uescapecharEh.exit - %.pre1827 = load ptr, ptr %63, align 8, !tbaa !30 - %.pre1828 = load i64, ptr %64, align 8, !tbaa !41 + %.pre1829 = load ptr, ptr %63, align 8, !tbaa !30 + %.pre1830 = load i64, ptr %64, align 8, !tbaa !41 br label %_ZN17duckdb_libpgqueryL17check_uescapecharEh.exit.thread _ZN17duckdb_libpgqueryL17check_uescapecharEh.exit.thread: ; preds = %_ZN17duckdb_libpgqueryL17check_uescapecharEh.exit._ZN17duckdb_libpgqueryL17check_uescapecharEh.exit.thread_crit_edge, %386, %switch.early.test.i, %switch.early.test.i, %switch.early.test.i - %399 = phi i64 [ %.pre1828, %_ZN17duckdb_libpgqueryL17check_uescapecharEh.exit._ZN17duckdb_libpgqueryL17check_uescapecharEh.exit.thread_crit_edge ], [ %388, %386 ], [ %388, %switch.early.test.i ], [ %388, %switch.early.test.i ], [ %388, %switch.early.test.i ] - %400 = phi ptr [ %.pre1827, %_ZN17duckdb_libpgqueryL17check_uescapecharEh.exit._ZN17duckdb_libpgqueryL17check_uescapecharEh.exit.thread_crit_edge ], [ %387, %386 ], [ %387, %switch.early.test.i ], [ %387, %switch.early.test.i ], [ %387, %switch.early.test.i ] + %399 = phi i64 [ %.pre1830, %_ZN17duckdb_libpgqueryL17check_uescapecharEh.exit._ZN17duckdb_libpgqueryL17check_uescapecharEh.exit.thread_crit_edge ], [ %388, %386 ], [ %388, %switch.early.test.i ], [ %388, %switch.early.test.i ], [ %388, %switch.early.test.i ] + %400 = phi ptr [ %.pre1829, %_ZN17duckdb_libpgqueryL17check_uescapecharEh.exit._ZN17duckdb_libpgqueryL17check_uescapecharEh.exit.thread_crit_edge ], [ %387, %386 ], [ %387, %switch.early.test.i ], [ %387, %switch.early.test.i ], [ %387, %switch.early.test.i ] %401 = load ptr, ptr %2, align 8, !tbaa !43 %402 = load ptr, ptr %401, align 8, !tbaa !44 %403 = ptrtoint ptr %400 to i64 @@ -1837,13 +1837,13 @@ _ZN17duckdb_libpgqueryL10addlitcharEhPv.exit959: ; preds = %._crit_edge.i956, % 914: ; preds = %909 tail call void @_ZN17duckdb_libpgquery15scanner_yyerrorEPKcPv(ptr noundef nonnull @.str.13, ptr noundef nonnull %2) - %.pre1824 = load ptr, ptr %2, align 8, !tbaa !43 - %.phi.trans.insert1825 = getelementptr inbounds nuw i8, ptr %.pre1824, i64 48 - %.pre1826 = load i32, ptr %.phi.trans.insert1825, align 8, !tbaa !50 + %.pre1826 = load ptr, ptr %2, align 8, !tbaa !43 + %.phi.trans.insert1827 = getelementptr inbounds nuw i8, ptr %.pre1826, i64 48 + %.pre1828 = load i32, ptr %.phi.trans.insert1827, align 8, !tbaa !50 br label %915 915: ; preds = %914, %909 - %916 = phi i32 [ %.pre1826, %914 ], [ %912, %909 ] + %916 = phi i32 [ %.pre1828, %914 ], [ %912, %909 ] %917 = add nsw i32 %916, 1 %918 = sext i32 %917 to i64 %919 = tail call noundef ptr @_ZN17duckdb_libpgquery6pallocEm(i64 noundef %918) @@ -1939,13 +1939,13 @@ _ZN17duckdb_libpgqueryL17check_uescapecharEh.exit965: ; preds = %switch.early.te br i1 %959, label %_ZN17duckdb_libpgqueryL17check_uescapecharEh.exit965._ZN17duckdb_libpgqueryL17check_uescapecharEh.exit965.thread_crit_edge, label %971 _ZN17duckdb_libpgqueryL17check_uescapecharEh.exit965._ZN17duckdb_libpgqueryL17check_uescapecharEh.exit965.thread_crit_edge: ; preds = %_ZN17duckdb_libpgqueryL17check_uescapecharEh.exit965 - %.pre1822 = load ptr, ptr %63, align 8, !tbaa !30 - %.pre1823 = load i64, ptr %64, align 8, !tbaa !41 + %.pre1824 = load ptr, ptr %63, align 8, !tbaa !30 + %.pre1825 = load i64, ptr %64, align 8, !tbaa !41 br label %_ZN17duckdb_libpgqueryL17check_uescapecharEh.exit965.thread _ZN17duckdb_libpgqueryL17check_uescapecharEh.exit965.thread: ; preds = %_ZN17duckdb_libpgqueryL17check_uescapecharEh.exit965._ZN17duckdb_libpgqueryL17check_uescapecharEh.exit965.thread_crit_edge, %947, %switch.early.test.i963, %switch.early.test.i963, %switch.early.test.i963 - %960 = phi i64 [ %.pre1823, %_ZN17duckdb_libpgqueryL17check_uescapecharEh.exit965._ZN17duckdb_libpgqueryL17check_uescapecharEh.exit965.thread_crit_edge ], [ %949, %947 ], [ %949, %switch.early.test.i963 ], [ %949, %switch.early.test.i963 ], [ %949, %switch.early.test.i963 ] - %961 = phi ptr [ %.pre1822, %_ZN17duckdb_libpgqueryL17check_uescapecharEh.exit965._ZN17duckdb_libpgqueryL17check_uescapecharEh.exit965.thread_crit_edge ], [ %948, %947 ], [ %948, %switch.early.test.i963 ], [ %948, %switch.early.test.i963 ], [ %948, %switch.early.test.i963 ] + %960 = phi i64 [ %.pre1825, %_ZN17duckdb_libpgqueryL17check_uescapecharEh.exit965._ZN17duckdb_libpgqueryL17check_uescapecharEh.exit965.thread_crit_edge ], [ %949, %947 ], [ %949, %switch.early.test.i963 ], [ %949, %switch.early.test.i963 ], [ %949, %switch.early.test.i963 ] + %961 = phi ptr [ %.pre1824, %_ZN17duckdb_libpgqueryL17check_uescapecharEh.exit965._ZN17duckdb_libpgqueryL17check_uescapecharEh.exit965.thread_crit_edge ], [ %948, %947 ], [ %948, %switch.early.test.i963 ], [ %948, %switch.early.test.i963 ], [ %948, %switch.early.test.i963 ] %962 = load ptr, ptr %2, align 8, !tbaa !43 %963 = load ptr, ptr %962, align 8, !tbaa !44 %964 = ptrtoint ptr %961 to i64 @@ -2286,7 +2286,7 @@ _ZN17duckdb_libpgqueryL6addlitEPciPv.exit981: ; preds = %._crit_edge.i978, % %indvars.iv = phi i64 [ %1181, %.lr.ph1595.preheader ], [ %indvars.iv.next, %._crit_edge1592 ] %gep = getelementptr i8, ptr %invariant.gep, i64 %indvars.iv1815 %1183 = load i8, ptr %gep, align 1, !tbaa !32 - switch i8 %1183, label %.critedge.loopexit1853.split.loop.exit [ + switch i8 %1183, label %.critedge.loopexit1855.split.loop.exit [ i8 43, label %.lr.ph1591.preheader i8 45, label %.lr.ph1591.preheader ] @@ -2296,8 +2296,9 @@ _ZN17duckdb_libpgqueryL6addlitEPciPv.exit981: ; preds = %._crit_edge.i978, % 1184: ; preds = %.lr.ph1591 %indvars.iv.next1813 = add nsw i64 %indvars.iv1812, -1 - %1185 = icmp sgt i64 %indvars.iv1812, 0 - br i1 %1185, label %.lr.ph1591, label %._crit_edge1592, !llvm.loop !69 + %1185 = and i64 %indvars.iv.next1813, 4294967295 + %exitcond.not = icmp eq i64 %1185, 4294967295 + br i1 %exitcond.not, label %._crit_edge1592, label %.lr.ph1591, !llvm.loop !69 .lr.ph1591: ; preds = %.lr.ph1591.preheader, %1184 %indvars.iv1812 = phi i64 [ %indvars.iv.next1813, %1184 ], [ %indvars.iv, %.lr.ph1591.preheader ] @@ -2310,20 +2311,21 @@ _ZN17duckdb_libpgqueryL6addlitEPciPv.exit981: ; preds = %._crit_edge.i978, % ._crit_edge1592: ; preds = %1184 %indvars.iv.next1816 = add nsw i64 %indvars.iv1815, -1 - %1189 = icmp sgt i64 %indvars.iv1815, 2 %indvars.iv.next = add nsw i64 %indvars.iv, -1 - br i1 %1189, label %.lr.ph1595, label %.critedge + %1189 = and i64 %indvars.iv.next1816, 4294967295 + %exitcond1819.not = icmp eq i64 %1189, 1 + br i1 %exitcond1819.not, label %.critedge, label %.lr.ph1595 .critedge.loopexit: ; preds = %.lr.ph1591 %1190 = trunc nuw nsw i64 %indvars.iv1815 to i32 br label %.critedge -.critedge.loopexit1853.split.loop.exit: ; preds = %.lr.ph1595 +.critedge.loopexit1855.split.loop.exit: ; preds = %.lr.ph1595 %1191 = trunc nuw nsw i64 %indvars.iv1815 to i32 br label %.critedge -.critedge: ; preds = %._crit_edge1592, %.critedge.loopexit1853.split.loop.exit, %.critedge.loopexit, %1167 - %.17991069 = phi i32 [ %.0798, %1167 ], [ %1190, %.critedge.loopexit ], [ %1191, %.critedge.loopexit1853.split.loop.exit ], [ 1, %._crit_edge1592 ] +.critedge: ; preds = %._crit_edge1592, %.critedge.loopexit1855.split.loop.exit, %.critedge.loopexit, %1167 + %.17991069 = phi i32 [ %.0798, %1167 ], [ %1190, %.critedge.loopexit ], [ %1191, %.critedge.loopexit1855.split.loop.exit ], [ 1, %._crit_edge1592 ] %1192 = load i8, ptr %1169, align 1, !tbaa !32 %1193 = icmp eq i8 %1192, 63 br i1 %1193, label %sub_1, label %1212 @@ -2660,11 +2662,11 @@ sub_11061: ; preds = %sub_11056, %.tail10 1384: ; preds = %1368 %1385 = getelementptr inbounds nuw i8, ptr %1370, i64 %1380 store i8 0, ptr %1385, align 1, !tbaa !32 - %.pre1821 = load ptr, ptr %2, align 8, !tbaa !43 + %.pre1823 = load ptr, ptr %2, align 8, !tbaa !43 br label %1386 1386: ; preds = %1384, %1368 - %1387 = phi ptr [ %.pre1821, %1384 ], [ %1372, %1368 ] + %1387 = phi ptr [ %.pre1823, %1384 ], [ %1372, %1368 ] %1388 = getelementptr inbounds nuw i8, ptr %1387, i64 16 %1389 = load ptr, ptr %1388, align 8, !tbaa !54 %1390 = getelementptr inbounds nuw i8, ptr %1387, i64 24 @@ -2754,9 +2756,9 @@ sub_11061: ; preds = %sub_11056, %.tail10 %1443 = getelementptr inbounds nuw i8, ptr %1442, i64 64 %1444 = load i32, ptr %1443, align 8, !tbaa !70 %1445 = icmp eq i32 %1444, 0 - br i1 %1445, label %1446, label %._crit_edge1818 + br i1 %1445, label %1446, label %._crit_edge1820 -._crit_edge1818: ; preds = %1436 +._crit_edge1820: ; preds = %1436 %.pre = load i64, ptr %67, align 8, !tbaa !27 br label %1450 @@ -2769,9 +2771,9 @@ sub_11061: ; preds = %sub_11056, %.tail10 store i32 1, ptr %1443, align 8, !tbaa !70 br label %1450 -1450: ; preds = %._crit_edge1818, %1446 - %1451 = phi i32 [ %1444, %._crit_edge1818 ], [ 1, %1446 ] - %1452 = phi i64 [ %.pre, %._crit_edge1818 ], [ %1448, %1446 ] +1450: ; preds = %._crit_edge1820, %1446 + %1451 = phi i32 [ %1444, %._crit_edge1820 ], [ 1, %1446 ] + %1452 = phi i64 [ %.pre, %._crit_edge1820 ], [ %1448, %1446 ] %1453 = load ptr, ptr %58, align 8, !tbaa !29 %1454 = getelementptr inbounds nuw i8, ptr %1442, i64 8 %1455 = load ptr, ptr %1454, align 8, !tbaa !71 @@ -2786,8 +2788,8 @@ sub_11061: ; preds = %sub_11056, %.tail10 %1461 = trunc i64 %1460 to i32 %1462 = load ptr, ptr %63, align 8, !tbaa !30 %1463 = shl i64 %1460, 32 - %sext2123 = add i64 %1463, -4294967296 - %1464 = ashr exact i64 %sext2123, 32 + %sext2125 = add i64 %1463, -4294967296 + %1464 = ashr exact i64 %sext2125, 32 %1465 = getelementptr inbounds i8, ptr %1462, i64 %1464 store ptr %1465, ptr %58, align 8, !tbaa !29 %1466 = load i32, ptr %60, align 4, !tbaa !18 @@ -2911,13 +2913,13 @@ _ZN17duckdb_libpgqueryL16yy_try_NUL_transEiPv.exit: ; preds = %.lr.ph.i985, %151 %1531 = getelementptr inbounds [1290 x i16], ptr @_ZN17duckdb_libpgqueryL6yy_nxtE, i64 0, i64 %.lcssa.i987 %1532 = load i16, ptr %1531, align 2, !tbaa !34 switch i16 %1532, label %1533 [ - i16 308, label %.backedge.sink.split2371.backedge - i16 0, label %.backedge.sink.split2371.backedge + i16 308, label %.backedge.sink.split2373.backedge + i16 0, label %.backedge.sink.split2373.backedge ] -.backedge.sink.split2371.backedge: ; preds = %_ZN17duckdb_libpgqueryL16yy_try_NUL_transEiPv.exit, %_ZN17duckdb_libpgqueryL16yy_try_NUL_transEiPv.exit, %123 +.backedge.sink.split2373.backedge: ; preds = %_ZN17duckdb_libpgqueryL16yy_try_NUL_transEiPv.exit, %_ZN17duckdb_libpgqueryL16yy_try_NUL_transEiPv.exit, %123 %.1788.ph.be = phi ptr [ %.1788, %123 ], [ %1462, %_ZN17duckdb_libpgqueryL16yy_try_NUL_transEiPv.exit ], [ %1462, %_ZN17duckdb_libpgqueryL16yy_try_NUL_transEiPv.exit ] - br label %.backedge.sink.split2371 + br label %.backedge.sink.split2373 1533: ; preds = %_ZN17duckdb_libpgqueryL16yy_try_NUL_transEiPv.exit %1534 = sext i16 %1532 to i32 @@ -2979,11 +2981,11 @@ _ZN17duckdb_libpgqueryL16yy_try_NUL_transEiPv.exit: ; preds = %.lr.ph.i985, %151 %.phi.trans.insert.i996 = getelementptr inbounds nuw ptr, ptr %.pre.i995, i64 %.pre185.i %.pre186.i = load ptr, ptr %.phi.trans.insert.i996, align 8, !tbaa !21 %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %.pre186.i, i64 64 - %.pre1819 = load i32, ptr %.phi.trans.insert, align 8, !tbaa !70 + %.pre1821 = load i32, ptr %.phi.trans.insert, align 8, !tbaa !70 br label %._crit_edge.i988 ._crit_edge.i988: ; preds = %._crit_edge.loopexit.i, %1550 - %1559 = phi i32 [ %.pre1819, %._crit_edge.loopexit.i ], [ %1451, %1550 ] + %1559 = phi i32 [ %.pre1821, %._crit_edge.loopexit.i ], [ %1451, %1550 ] %1560 = phi ptr [ %.pre186.i, %._crit_edge.loopexit.i ], [ %1442, %1550 ] %1561 = icmp eq i32 %1559, 2 br i1 %1561, label %.thread160.i, label %1562 @@ -3309,14 +3311,14 @@ _ZN17duckdb_libpgqueryL18yy_get_next_bufferEPv.exit: ; preds = %._crit_edge194.i %1711 = getelementptr inbounds nuw i8, ptr %1710, i64 8 %1712 = load ptr, ptr %1711, align 8, !tbaa !71 store ptr %1712, ptr %63, align 8, !tbaa !30 - switch i32 %.0135.i, label %default.unreachable1831 [ + switch i32 %.0135.i, label %default.unreachable1833 [ i32 1, label %_ZN17duckdb_libpgqueryL21yy_get_previous_stateEPv.exit1011 i32 0, label %1713 i32 2, label %_ZN17duckdb_libpgqueryL18yy_get_next_bufferEPv.exit._ZN17duckdb_libpgqueryL18yy_get_next_bufferEPv.exit.thread1044_crit_edge ] _ZN17duckdb_libpgqueryL18yy_get_next_bufferEPv.exit._ZN17duckdb_libpgqueryL18yy_get_next_bufferEPv.exit.thread1044_crit_edge: ; preds = %_ZN17duckdb_libpgqueryL18yy_get_next_bufferEPv.exit - %.pre1820 = load i64, ptr %67, align 8, !tbaa !27 + %.pre1822 = load i64, ptr %67, align 8, !tbaa !27 br label %_ZN17duckdb_libpgqueryL18yy_get_next_bufferEPv.exit.thread1044 1713: ; preds = %_ZN17duckdb_libpgqueryL18yy_get_next_bufferEPv.exit @@ -3325,8 +3327,8 @@ _ZN17duckdb_libpgqueryL18yy_get_next_bufferEPv.exit._ZN17duckdb_libpgqueryL18yy_ %1716 = sub i64 %1714, %1715 %1717 = trunc i64 %1716 to i32 %1718 = shl i64 %1716, 32 - %sext2124 = add i64 %1718, -4294967296 - %1719 = ashr exact i64 %sext2124, 32 + %sext2126 = add i64 %1718, -4294967296 + %1719 = ashr exact i64 %sext2126, 32 %1720 = getelementptr inbounds i8, ptr %1712, i64 %1719 store ptr %1720, ptr %58, align 8, !tbaa !29 %1721 = load i32, ptr %60, align 4, !tbaa !18 @@ -3409,7 +3411,7 @@ _ZN17duckdb_libpgqueryL18yy_get_next_bufferEPv.exit._ZN17duckdb_libpgqueryL18yy_ _ZN17duckdb_libpgqueryL18yy_get_next_bufferEPv.exit.thread1044: ; preds = %1547, %_ZN17duckdb_libpgqueryL18yy_get_next_bufferEPv.exit._ZN17duckdb_libpgqueryL18yy_get_next_bufferEPv.exit.thread1044_crit_edge %1764 = phi ptr [ %1712, %_ZN17duckdb_libpgqueryL18yy_get_next_bufferEPv.exit._ZN17duckdb_libpgqueryL18yy_get_next_bufferEPv.exit.thread1044_crit_edge ], [ %1537, %1547 ] - %1765 = phi i64 [ %.pre1820, %_ZN17duckdb_libpgqueryL18yy_get_next_bufferEPv.exit._ZN17duckdb_libpgqueryL18yy_get_next_bufferEPv.exit.thread1044_crit_edge ], [ %1452, %1547 ] + %1765 = phi i64 [ %.pre1822, %_ZN17duckdb_libpgqueryL18yy_get_next_bufferEPv.exit._ZN17duckdb_libpgqueryL18yy_get_next_bufferEPv.exit.thread1044_crit_edge ], [ %1452, %1547 ] %1766 = phi ptr [ %1712, %_ZN17duckdb_libpgqueryL18yy_get_next_bufferEPv.exit._ZN17duckdb_libpgqueryL18yy_get_next_bufferEPv.exit.thread1044_crit_edge ], [ %1455, %1547 ] %1767 = getelementptr inbounds nuw i8, ptr %1766, i64 %1765 store ptr %1767, ptr %58, align 8, !tbaa !29 @@ -3495,7 +3497,7 @@ _ZN17duckdb_libpgqueryL18yy_get_next_bufferEPv.exit.thread1044: ; preds = %1547, %exitcond.not.i1025 = icmp eq ptr %1810, %1767 br i1 %exitcond.not.i1025, label %.backedge.backedge, label %.lr.ph32.i1013, !llvm.loop !73 -default.unreachable1831: ; preds = %_ZN17duckdb_libpgqueryL18yy_get_next_bufferEPv.exit +default.unreachable1833: ; preds = %_ZN17duckdb_libpgqueryL18yy_get_next_bufferEPv.exit unreachable _ZN17duckdb_libpgqueryL21yy_get_previous_stateEPv.exit1011: ; preds = %_ZN17duckdb_libpgqueryL18yy_get_next_bufferEPv.exit, %1547 diff --git a/bench/eastl/optimized/EAScanfCore.ll b/bench/eastl/optimized/EAScanfCore.ll index c4db8d164f7..49d7217005a 100644 --- a/bench/eastl/optimized/EAScanfCore.ll +++ b/bench/eastl/optimized/EAScanfCore.ll @@ -4396,12 +4396,12 @@ while.end236: ; preds = %while.end236.loopex 45: ; preds = %41, %42, %44 %bExponentNegative.0.lcssa347355 = phi i1 [ true, %44 ], [ false, %42 ], [ false, %41 ] %46 = phi i32 [ %sub247358, %44 ], [ %nExponent.1323, %42 ], [ %nExponent.1323, %41 ] - %conv251 = sext i16 %.pre to i32 %cmp254257 = icmp sgt i16 %.pre, 1 br i1 %cmp254257, label %land.rhs255.preheader, label %while.end265 land.rhs255.preheader: ; preds = %45 - %47 = zext nneg i32 %conv251 to i64 + %conv251 = zext nneg i16 %.pre to i32 + %47 = zext nneg i16 %.pre to i64 %48 = add i32 %nExponentAdd.1324, %conv251 %49 = add i32 %48, -1 br label %land.rhs255 @@ -4416,27 +4416,22 @@ land.rhs255: ; preds = %land.rhs255.prehead br i1 %cmp260, label %while.body262, label %if.then267.loopexit while.body262: ; preds = %land.rhs255 - %inc263 = add i32 %nExponentAdd.4258, 1 - %exitcond289.not = icmp eq i32 %inc263, %49 - br i1 %exitcond289.not, label %while.end265.loopexit, label %land.rhs255, !llvm.loop !42 - -while.end265.loopexit: ; preds = %while.body262 - %51 = trunc nuw nsw i64 %indvars.iv.next287 to i32 - br label %while.end265 - -while.end265: ; preds = %while.end265.loopexit, %45 - %nExponentAdd.4.lcssa = phi i32 [ %nExponentAdd.1324, %45 ], [ %49, %while.end265.loopexit ] - %i249.0.in.lcssa = phi i32 [ %conv251, %45 ], [ %51, %while.end265.loopexit ] - %cmp266 = icmp eq i32 %i249.0.in.lcssa, 1 + %inc263 = add nsw i32 %nExponentAdd.4258, 1 + %51 = and i64 %indvars.iv.next287, 4294967295 + %exitcond289.not = icmp eq i64 %51, 1 + br i1 %exitcond289.not, label %if.then267, label %land.rhs255, !llvm.loop !42 + +while.end265: ; preds = %45 + %cmp266 = icmp eq i16 %.pre, 1 br i1 %cmp266, label %if.then267, label %if.else271 if.then267.loopexit: ; preds = %land.rhs255 %52 = trunc nuw nsw i64 %indvars.iv286 to i32 br label %if.then267 -if.then267: ; preds = %if.then267.loopexit, %while.end265 - %nExponentAdd.4195 = phi i32 [ %nExponentAdd.4.lcssa, %while.end265 ], [ %nExponentAdd.4258, %if.then267.loopexit ] - %i249.0.in193 = phi i32 [ 1, %while.end265 ], [ %52, %if.then267.loopexit ] +if.then267: ; preds = %while.body262, %if.then267.loopexit, %while.end265 + %nExponentAdd.4195 = phi i32 [ %nExponentAdd.1324, %while.end265 ], [ %nExponentAdd.4258, %if.then267.loopexit ], [ %49, %while.body262 ] + %i249.0.in193 = phi i32 [ 1, %while.end265 ], [ %52, %if.then267.loopexit ], [ 1, %while.body262 ] %conv269 = trunc nuw nsw i32 %i249.0.in193 to i16 store i16 %conv269, ptr %mSigLen.i, align 2 %add274 = add nsw i32 %nExponentAdd.4195, %46 @@ -5487,7 +5482,7 @@ if.end94: ; preds = %if.then86, %if.then sw.bb99: ; preds = %while.body %10 = and i32 %c.0266, 65280 %cmp.i161 = icmp eq i32 %10, 0 - br i1 %cmp.i161, label %_ZN2EA4StdC7ToupperEDs.exit, label %while.end236.loopexit433 + br i1 %cmp.i161, label %_ZN2EA4StdC7ToupperEDs.exit, label %while.end236.loopexit440 _ZN2EA4StdC7ToupperEDs.exit: ; preds = %sw.bb99 %conv100.mask = and i32 %c.0266, 255 @@ -5495,7 +5490,7 @@ _ZN2EA4StdC7ToupperEDs.exit: ; preds = %sw.bb99 %arrayidx.i165 = getelementptr inbounds nuw [256 x i8], ptr @_ZN2EA4StdC17EASTDC_WUPPER_MAPE, i64 0, i64 %conv.i164 %11 = load i8, ptr %arrayidx.i165, align 1 %cmp103 = icmp eq i8 %11, 69 - br i1 %cmp103, label %if.then104, label %while.end236.loopexit433 + br i1 %cmp103, label %if.then104, label %while.end236.loopexit440 if.then104: ; preds = %_ZN2EA4StdC7ToupperEDs.exit %call105 = tail call noundef i32 %pReadFunction(i32 noundef 2, i32 noundef 0, ptr noundef %pContext) @@ -5547,7 +5542,7 @@ sw.bb140: ; preds = %while.body %conv141 = trunc i32 %c.0266 to i16 %13 = add i16 %conv141, -58 %cmp.i168 = icmp ult i16 %13, -10 - br i1 %cmp.i168, label %while.end236.loopexit433, label %if.then144 + br i1 %cmp.i168, label %while.end236.loopexit440, label %if.then144 if.then144: ; preds = %sw.bb140 %mul = mul nsw i32 %nExponent.0261, 10 @@ -5726,9 +5721,9 @@ sw.epilog235: ; preds = %sw.bb133, %if.else1 %or.cond146.not204 = select i1 %cmp.not, i1 %cmp2.not, i1 false %tobool.not = icmp samesign ult i32 %state.1, 16384 %or.cond147 = select i1 %or.cond146.not204, i1 %tobool.not, i1 false - br i1 %or.cond147, label %while.body, label %while.end236.loopexit433, !llvm.loop !50 + br i1 %or.cond147, label %while.body, label %while.end236.loopexit440, !llvm.loop !50 -while.end236.loopexit433: ; preds = %sw.epilog235, %_ZN2EA4StdC7ToupperEDs.exit, %sw.bb140, %sw.bb99 +while.end236.loopexit440: ; preds = %sw.epilog235, %_ZN2EA4StdC7ToupperEDs.exit, %sw.bb140, %sw.bb99 %c.1348.ph = phi i32 [ %c.1, %sw.epilog235 ], [ %c.0266, %sw.bb99 ], [ %c.0266, %sw.bb140 ], [ %c.0266, %_ZN2EA4StdC7ToupperEDs.exit ] %state.1347.ph = phi i32 [ %state.1, %sw.epilog235 ], [ 16384, %sw.bb99 ], [ 16384, %sw.bb140 ], [ 16384, %_ZN2EA4StdC7ToupperEDs.exit ] %bExponentNegative.1346.ph = phi i1 [ %bExponentNegative.1, %sw.epilog235 ], [ %bExponentNegative.0264, %sw.bb99 ], [ %bExponentNegative.0264, %sw.bb140 ], [ %bExponentNegative.0264, %_ZN2EA4StdC7ToupperEDs.exit ] @@ -5742,15 +5737,15 @@ while.end236.loopexit433: ; preds = %sw.epilog235, %_ZN2 %28 = icmp eq i32 %27, 0 br label %while.end236 -while.end236: ; preds = %lor.rhs, %while.end236.loopexit433, %while.end197, %while.end218, %while.end - %c.1348 = phi i32 [ %c.4247, %while.end197 ], [ %c.5.lcssa, %while.end218 ], [ %c.3253, %while.end ], [ %c.1348.ph, %while.end236.loopexit433 ], [ %c.5250, %lor.rhs ] - %state.1347 = phi i1 [ true, %while.end197 ], [ true, %while.end218 ], [ true, %while.end ], [ %28, %while.end236.loopexit433 ], [ true, %lor.rhs ] - %bExponentNegative.1346 = phi i1 [ %bExponentNegative.0264, %while.end197 ], [ %bExponentNegative.0264, %while.end218 ], [ %bExponentNegative.0264, %while.end ], [ %bExponentNegative.1346.ph, %while.end236.loopexit433 ], [ %bExponentNegative.0264, %lor.rhs ] - %bNegative.1345 = phi i8 [ %bNegative.0263, %while.end197 ], [ %bNegative.0263, %while.end218 ], [ %bNegative.0263, %while.end ], [ %bNegative.1345.ph, %while.end236.loopexit433 ], [ %bNegative.0263, %lor.rhs ] - %nExponentAdd.1344 = phi i32 [ %nExponentAdd.0262, %while.end197 ], [ %nExponentAdd.0262, %while.end218 ], [ %nExponentAdd.0262, %while.end ], [ %nExponentAdd.1344.ph, %while.end236.loopexit433 ], [ %nExponentAdd.0262, %lor.rhs ] - %nExponent.1343 = phi i32 [ %nExponent.0261, %while.end197 ], [ %nExponent.0261, %while.end218 ], [ %nExponent.0261, %while.end ], [ %nExponent.1343.ph, %while.end236.loopexit433 ], [ %nExponent.0261, %lor.rhs ] - %nFieldCount.1342 = phi i32 [ %nFieldCount.4246, %while.end197 ], [ %nFieldCount.5.lcssa, %while.end218 ], [ %nFieldCount.3252, %while.end ], [ %nFieldCount.1342.ph, %while.end236.loopexit433 ], [ %nFieldCount.5249, %lor.rhs ] - %nSpaceCount.1341 = phi i32 [ %nSpaceCount.0258, %while.end197 ], [ %nSpaceCount.0258, %while.end218 ], [ %nSpaceCount.0258, %while.end ], [ %nSpaceCount.1341.ph, %while.end236.loopexit433 ], [ %nSpaceCount.0258, %lor.rhs ] +while.end236: ; preds = %lor.rhs, %while.end236.loopexit440, %while.end197, %while.end218, %while.end + %c.1348 = phi i32 [ %c.4247, %while.end197 ], [ %c.5.lcssa, %while.end218 ], [ %c.3253, %while.end ], [ %c.1348.ph, %while.end236.loopexit440 ], [ %c.5250, %lor.rhs ] + %state.1347 = phi i1 [ true, %while.end197 ], [ true, %while.end218 ], [ true, %while.end ], [ %28, %while.end236.loopexit440 ], [ true, %lor.rhs ] + %bExponentNegative.1346 = phi i1 [ %bExponentNegative.0264, %while.end197 ], [ %bExponentNegative.0264, %while.end218 ], [ %bExponentNegative.0264, %while.end ], [ %bExponentNegative.1346.ph, %while.end236.loopexit440 ], [ %bExponentNegative.0264, %lor.rhs ] + %bNegative.1345 = phi i8 [ %bNegative.0263, %while.end197 ], [ %bNegative.0263, %while.end218 ], [ %bNegative.0263, %while.end ], [ %bNegative.1345.ph, %while.end236.loopexit440 ], [ %bNegative.0263, %lor.rhs ] + %nExponentAdd.1344 = phi i32 [ %nExponentAdd.0262, %while.end197 ], [ %nExponentAdd.0262, %while.end218 ], [ %nExponentAdd.0262, %while.end ], [ %nExponentAdd.1344.ph, %while.end236.loopexit440 ], [ %nExponentAdd.0262, %lor.rhs ] + %nExponent.1343 = phi i32 [ %nExponent.0261, %while.end197 ], [ %nExponent.0261, %while.end218 ], [ %nExponent.0261, %while.end ], [ %nExponent.1343.ph, %while.end236.loopexit440 ], [ %nExponent.0261, %lor.rhs ] + %nFieldCount.1342 = phi i32 [ %nFieldCount.4246, %while.end197 ], [ %nFieldCount.5.lcssa, %while.end218 ], [ %nFieldCount.3252, %while.end ], [ %nFieldCount.1342.ph, %while.end236.loopexit440 ], [ %nFieldCount.5249, %lor.rhs ] + %nSpaceCount.1341 = phi i32 [ %nSpaceCount.0258, %while.end197 ], [ %nSpaceCount.0258, %while.end218 ], [ %nSpaceCount.0258, %while.end ], [ %nSpaceCount.1341.ph, %while.end236.loopexit440 ], [ %nSpaceCount.0258, %lor.rhs ] %cond.fr379 = freeze i1 %bExponentNegative.1346 %.pre = load i16, ptr %mSigLen.i, align 2 %bNegative.1345.fr = freeze i8 %bNegative.1345 @@ -5775,12 +5770,12 @@ while.end236: ; preds = %lor.rhs, %while.end 34: ; preds = %30, %31, %33 %bExponentNegative.0.lcssa367375 = phi i1 [ true, %33 ], [ false, %31 ], [ false, %30 ] %35 = phi i32 [ %sub247378, %33 ], [ %nExponent.1343, %31 ], [ %nExponent.1343, %30 ] - %conv251 = sext i16 %.pre to i32 %cmp254275 = icmp sgt i16 %.pre, 1 br i1 %cmp254275, label %land.rhs255.preheader, label %while.end265 land.rhs255.preheader: ; preds = %34 - %36 = zext nneg i32 %conv251 to i64 + %conv251 = zext nneg i16 %.pre to i32 + %36 = zext nneg i16 %.pre to i64 %37 = add i32 %nExponentAdd.1344, %conv251 %38 = add i32 %37, -1 br label %land.rhs255 @@ -5795,27 +5790,22 @@ land.rhs255: ; preds = %land.rhs255.prehead br i1 %cmp260, label %while.body262, label %if.then267.loopexit while.body262: ; preds = %land.rhs255 - %inc263 = add i32 %nExponentAdd.4276, 1 - %exitcond309.not = icmp eq i32 %inc263, %38 - br i1 %exitcond309.not, label %while.end265.loopexit, label %land.rhs255, !llvm.loop !51 - -while.end265.loopexit: ; preds = %while.body262 - %40 = trunc nuw nsw i64 %indvars.iv.next307 to i32 - br label %while.end265 - -while.end265: ; preds = %while.end265.loopexit, %34 - %nExponentAdd.4.lcssa = phi i32 [ %nExponentAdd.1344, %34 ], [ %38, %while.end265.loopexit ] - %i249.0.in.lcssa = phi i32 [ %conv251, %34 ], [ %40, %while.end265.loopexit ] - %cmp266 = icmp eq i32 %i249.0.in.lcssa, 1 + %inc263 = add nsw i32 %nExponentAdd.4276, 1 + %40 = and i64 %indvars.iv.next307, 4294967295 + %exitcond309.not = icmp eq i64 %40, 1 + br i1 %exitcond309.not, label %if.then267, label %land.rhs255, !llvm.loop !51 + +while.end265: ; preds = %34 + %cmp266 = icmp eq i16 %.pre, 1 br i1 %cmp266, label %if.then267, label %if.else271 if.then267.loopexit: ; preds = %land.rhs255 %41 = trunc nuw nsw i64 %indvars.iv306 to i32 br label %if.then267 -if.then267: ; preds = %if.then267.loopexit, %while.end265 - %nExponentAdd.4210 = phi i32 [ %nExponentAdd.4.lcssa, %while.end265 ], [ %nExponentAdd.4276, %if.then267.loopexit ] - %i249.0.in208 = phi i32 [ 1, %while.end265 ], [ %41, %if.then267.loopexit ] +if.then267: ; preds = %while.body262, %if.then267.loopexit, %while.end265 + %nExponentAdd.4210 = phi i32 [ %nExponentAdd.1344, %while.end265 ], [ %nExponentAdd.4276, %if.then267.loopexit ], [ %38, %while.body262 ] + %i249.0.in208 = phi i32 [ 1, %while.end265 ], [ %41, %if.then267.loopexit ], [ 1, %while.body262 ] %conv269 = trunc nuw nsw i32 %i249.0.in208 to i16 store i16 %conv269, ptr %mSigLen.i, align 2 %add274 = add nsw i32 %nExponentAdd.4210, %35 @@ -6846,14 +6836,14 @@ if.end89: ; preds = %if.then81, %if.then sw.bb94: ; preds = %while.body %cmp.i164 = icmp ult i32 %c.0272, 256 - br i1 %cmp.i164, label %_ZN2EA4StdC7ToupperEDi.exit, label %while.end221.loopexit439 + br i1 %cmp.i164, label %_ZN2EA4StdC7ToupperEDi.exit, label %while.end221.loopexit446 _ZN2EA4StdC7ToupperEDi.exit: ; preds = %sw.bb94 %conv1.i = zext nneg i32 %c.0272 to i64 %arrayidx.i167 = getelementptr inbounds nuw [256 x i8], ptr @_ZN2EA4StdC17EASTDC_WUPPER_MAPE, i64 0, i64 %conv1.i %9 = load i8, ptr %arrayidx.i167, align 1 %cmp96 = icmp eq i8 %9, 69 - br i1 %cmp96, label %if.then97, label %while.end221.loopexit439 + br i1 %cmp96, label %if.then97, label %while.end221.loopexit446 if.then97: ; preds = %_ZN2EA4StdC7ToupperEDi.exit %call98 = tail call noundef i32 %pReadFunction(i32 noundef 2, i32 noundef 0, ptr noundef %pContext) @@ -6903,7 +6893,7 @@ if.then127: ; preds = %sw.bb125 sw.bb132: ; preds = %while.body %sub.i171 = add i32 %c.0272, -48 %cmp.i172 = icmp ugt i32 %sub.i171, 9 - br i1 %cmp.i172, label %while.end221.loopexit439, label %if.then135 + br i1 %cmp.i172, label %while.end221.loopexit446, label %if.then135 if.then135: ; preds = %sw.bb132 %mul = mul nsw i32 %nExponent.0267, 10 @@ -7073,9 +7063,9 @@ sw.epilog220: ; preds = %sw.bb125, %if.else1 %or.cond146.not210 = select i1 %cmp.not, i1 %cmp2.not, i1 false %tobool.not = icmp samesign ult i32 %state.1, 16384 %or.cond147 = select i1 %or.cond146.not210, i1 %tobool.not, i1 false - br i1 %or.cond147, label %while.body, label %while.end221.loopexit439, !llvm.loop !59 + br i1 %or.cond147, label %while.body, label %while.end221.loopexit446, !llvm.loop !59 -while.end221.loopexit439: ; preds = %sw.epilog220, %_ZN2EA4StdC7ToupperEDi.exit, %sw.bb132, %sw.bb94 +while.end221.loopexit446: ; preds = %sw.epilog220, %_ZN2EA4StdC7ToupperEDi.exit, %sw.bb132, %sw.bb94 %c.1354.ph = phi i32 [ %c.1, %sw.epilog220 ], [ %c.0272, %sw.bb94 ], [ %c.0272, %sw.bb132 ], [ %c.0272, %_ZN2EA4StdC7ToupperEDi.exit ] %state.1353.ph = phi i32 [ %state.1, %sw.epilog220 ], [ 16384, %sw.bb94 ], [ 16384, %sw.bb132 ], [ 16384, %_ZN2EA4StdC7ToupperEDi.exit ] %bExponentNegative.1352.ph = phi i1 [ %bExponentNegative.1, %sw.epilog220 ], [ %bExponentNegative.0270, %sw.bb94 ], [ %bExponentNegative.0270, %sw.bb132 ], [ %bExponentNegative.0270, %_ZN2EA4StdC7ToupperEDi.exit ] @@ -7089,15 +7079,15 @@ while.end221.loopexit439: ; preds = %sw.epilog220, %_ZN2 %23 = icmp eq i32 %22, 0 br label %while.end221 -while.end221: ; preds = %lor.rhs, %while.end221.loopexit439, %while.end184, %while.end203, %while.end - %c.1354 = phi i32 [ %c.4253, %while.end184 ], [ %c.5.lcssa, %while.end203 ], [ %c.3259, %while.end ], [ %c.1354.ph, %while.end221.loopexit439 ], [ %c.5256, %lor.rhs ] - %state.1353 = phi i1 [ true, %while.end184 ], [ true, %while.end203 ], [ true, %while.end ], [ %23, %while.end221.loopexit439 ], [ true, %lor.rhs ] - %bExponentNegative.1352 = phi i1 [ %bExponentNegative.0270, %while.end184 ], [ %bExponentNegative.0270, %while.end203 ], [ %bExponentNegative.0270, %while.end ], [ %bExponentNegative.1352.ph, %while.end221.loopexit439 ], [ %bExponentNegative.0270, %lor.rhs ] - %bNegative.1351 = phi i8 [ %bNegative.0269, %while.end184 ], [ %bNegative.0269, %while.end203 ], [ %bNegative.0269, %while.end ], [ %bNegative.1351.ph, %while.end221.loopexit439 ], [ %bNegative.0269, %lor.rhs ] - %nExponentAdd.1350 = phi i32 [ %nExponentAdd.0268, %while.end184 ], [ %nExponentAdd.0268, %while.end203 ], [ %nExponentAdd.0268, %while.end ], [ %nExponentAdd.1350.ph, %while.end221.loopexit439 ], [ %nExponentAdd.0268, %lor.rhs ] - %nExponent.1349 = phi i32 [ %nExponent.0267, %while.end184 ], [ %nExponent.0267, %while.end203 ], [ %nExponent.0267, %while.end ], [ %nExponent.1349.ph, %while.end221.loopexit439 ], [ %nExponent.0267, %lor.rhs ] - %nFieldCount.1348 = phi i32 [ %nFieldCount.4252, %while.end184 ], [ %nFieldCount.5.lcssa, %while.end203 ], [ %nFieldCount.3258, %while.end ], [ %nFieldCount.1348.ph, %while.end221.loopexit439 ], [ %nFieldCount.5255, %lor.rhs ] - %nSpaceCount.1347 = phi i32 [ %nSpaceCount.0264, %while.end184 ], [ %nSpaceCount.0264, %while.end203 ], [ %nSpaceCount.0264, %while.end ], [ %nSpaceCount.1347.ph, %while.end221.loopexit439 ], [ %nSpaceCount.0264, %lor.rhs ] +while.end221: ; preds = %lor.rhs, %while.end221.loopexit446, %while.end184, %while.end203, %while.end + %c.1354 = phi i32 [ %c.4253, %while.end184 ], [ %c.5.lcssa, %while.end203 ], [ %c.3259, %while.end ], [ %c.1354.ph, %while.end221.loopexit446 ], [ %c.5256, %lor.rhs ] + %state.1353 = phi i1 [ true, %while.end184 ], [ true, %while.end203 ], [ true, %while.end ], [ %23, %while.end221.loopexit446 ], [ true, %lor.rhs ] + %bExponentNegative.1352 = phi i1 [ %bExponentNegative.0270, %while.end184 ], [ %bExponentNegative.0270, %while.end203 ], [ %bExponentNegative.0270, %while.end ], [ %bExponentNegative.1352.ph, %while.end221.loopexit446 ], [ %bExponentNegative.0270, %lor.rhs ] + %bNegative.1351 = phi i8 [ %bNegative.0269, %while.end184 ], [ %bNegative.0269, %while.end203 ], [ %bNegative.0269, %while.end ], [ %bNegative.1351.ph, %while.end221.loopexit446 ], [ %bNegative.0269, %lor.rhs ] + %nExponentAdd.1350 = phi i32 [ %nExponentAdd.0268, %while.end184 ], [ %nExponentAdd.0268, %while.end203 ], [ %nExponentAdd.0268, %while.end ], [ %nExponentAdd.1350.ph, %while.end221.loopexit446 ], [ %nExponentAdd.0268, %lor.rhs ] + %nExponent.1349 = phi i32 [ %nExponent.0267, %while.end184 ], [ %nExponent.0267, %while.end203 ], [ %nExponent.0267, %while.end ], [ %nExponent.1349.ph, %while.end221.loopexit446 ], [ %nExponent.0267, %lor.rhs ] + %nFieldCount.1348 = phi i32 [ %nFieldCount.4252, %while.end184 ], [ %nFieldCount.5.lcssa, %while.end203 ], [ %nFieldCount.3258, %while.end ], [ %nFieldCount.1348.ph, %while.end221.loopexit446 ], [ %nFieldCount.5255, %lor.rhs ] + %nSpaceCount.1347 = phi i32 [ %nSpaceCount.0264, %while.end184 ], [ %nSpaceCount.0264, %while.end203 ], [ %nSpaceCount.0264, %while.end ], [ %nSpaceCount.1347.ph, %while.end221.loopexit446 ], [ %nSpaceCount.0264, %lor.rhs ] %cond.fr385 = freeze i1 %bExponentNegative.1352 %.pre = load i16, ptr %mSigLen.i, align 2 %bNegative.1351.fr = freeze i8 %bNegative.1351 @@ -7122,12 +7112,12 @@ while.end221: ; preds = %lor.rhs, %while.end 29: ; preds = %25, %26, %28 %bExponentNegative.0.lcssa373381 = phi i1 [ true, %28 ], [ false, %26 ], [ false, %25 ] %30 = phi i32 [ %sub232384, %28 ], [ %nExponent.1349, %26 ], [ %nExponent.1349, %25 ] - %conv236 = sext i16 %.pre to i32 %cmp239281 = icmp sgt i16 %.pre, 1 br i1 %cmp239281, label %land.rhs240.preheader, label %while.end250 land.rhs240.preheader: ; preds = %29 - %31 = zext nneg i32 %conv236 to i64 + %conv236 = zext nneg i16 %.pre to i32 + %31 = zext nneg i16 %.pre to i64 %32 = add i32 %nExponentAdd.1350, %conv236 %33 = add i32 %32, -1 br label %land.rhs240 @@ -7142,27 +7132,22 @@ land.rhs240: ; preds = %land.rhs240.prehead br i1 %cmp245, label %while.body247, label %if.then252.loopexit while.body247: ; preds = %land.rhs240 - %inc248 = add i32 %nExponentAdd.4282, 1 - %exitcond315.not = icmp eq i32 %inc248, %33 - br i1 %exitcond315.not, label %while.end250.loopexit, label %land.rhs240, !llvm.loop !60 - -while.end250.loopexit: ; preds = %while.body247 - %35 = trunc nuw nsw i64 %indvars.iv.next313 to i32 - br label %while.end250 - -while.end250: ; preds = %while.end250.loopexit, %29 - %nExponentAdd.4.lcssa = phi i32 [ %nExponentAdd.1350, %29 ], [ %33, %while.end250.loopexit ] - %i234.0.in.lcssa = phi i32 [ %conv236, %29 ], [ %35, %while.end250.loopexit ] - %cmp251 = icmp eq i32 %i234.0.in.lcssa, 1 + %inc248 = add nsw i32 %nExponentAdd.4282, 1 + %35 = and i64 %indvars.iv.next313, 4294967295 + %exitcond315.not = icmp eq i64 %35, 1 + br i1 %exitcond315.not, label %if.then252, label %land.rhs240, !llvm.loop !60 + +while.end250: ; preds = %29 + %cmp251 = icmp eq i16 %.pre, 1 br i1 %cmp251, label %if.then252, label %if.else256 if.then252.loopexit: ; preds = %land.rhs240 %36 = trunc nuw nsw i64 %indvars.iv312 to i32 br label %if.then252 -if.then252: ; preds = %if.then252.loopexit, %while.end250 - %nExponentAdd.4216 = phi i32 [ %nExponentAdd.4.lcssa, %while.end250 ], [ %nExponentAdd.4282, %if.then252.loopexit ] - %i234.0.in214 = phi i32 [ 1, %while.end250 ], [ %36, %if.then252.loopexit ] +if.then252: ; preds = %while.body247, %if.then252.loopexit, %while.end250 + %nExponentAdd.4216 = phi i32 [ %nExponentAdd.1350, %while.end250 ], [ %nExponentAdd.4282, %if.then252.loopexit ], [ %33, %while.body247 ] + %i234.0.in214 = phi i32 [ 1, %while.end250 ], [ %36, %if.then252.loopexit ], [ 1, %while.body247 ] %conv254 = trunc nuw nsw i32 %i234.0.in214 to i16 store i16 %conv254, ptr %mSigLen.i, align 2 %add259 = add nsw i32 %nExponentAdd.4216, %30 diff --git a/bench/eastl/optimized/EATextUtil.ll b/bench/eastl/optimized/EATextUtil.ll index cd004a001fb..a993e6487b4 100644 --- a/bench/eastl/optimized/EATextUtil.ll +++ b/bench/eastl/optimized/EATextUtil.ll @@ -2976,8 +2976,8 @@ land.rhs.i: ; preds = %while.body.i, %land while.body.i: ; preds = %land.rhs.i %indvars.iv.next82.i = add nsw i64 %indvars.iv81.i, -1 - %cmp19.i = icmp sgt i64 %indvars.iv81.i, 0 - br i1 %cmp19.i, label %land.rhs.i, label %while.end.i, !llvm.loop !41 + %exitcond.not.i = icmp eq i64 %indvars.iv81.i, 0 + br i1 %exitcond.not.i, label %while.end.i, label %land.rhs.i, !llvm.loop !41 while.end.i: ; preds = %while.body.i, %land.rhs.i, %if.else.i %g.2.lcssa.i = phi i32 [ %spec.select.i, %if.else.i ], [ %8, %land.rhs.i ], [ -1, %while.body.i ] @@ -2991,8 +2991,9 @@ for.inc.i: ; preds = %while.end.i, %land. %arrayidx16.i = getelementptr inbounds nuw i32, ptr %pPatternBuffer2, i64 %indvars.iv83.i store i32 %.sink.i, ptr %arrayidx16.i, align 4 %indvars.iv.next84.i = add nsw i64 %indvars.iv83.i, -1 - %cmp.i = icmp sgt i64 %indvars.iv83.i, 0 - br i1 %cmp.i, label %for.body.i, label %for.cond34.preheader.i, !llvm.loop !42 + %10 = and i64 %indvars.iv.next84.i, 4294967295 + %exitcond87.not.i = icmp eq i64 %10, 4294967295 + br i1 %exitcond87.not.i, label %for.cond34.preheader.i, label %for.body.i, !llvm.loop !42 for.cond42.preheader.i: ; preds = %for.cond34.preheader.i %cmp4376.i = icmp sgt i32 %nPatternLength, -1 @@ -3002,23 +3003,23 @@ for.body44.i.preheader: ; preds = %for.body36.i, %for. br label %for.body44.i for.body36.i: ; preds = %for.body36.i, %for.body36.preheader.i - %indvars.iv87.i = phi i64 [ 0, %for.body36.preheader.i ], [ %indvars.iv.next88.i, %for.body36.i ] - %arrayidx38.i = getelementptr inbounds nuw i32, ptr %pPatternBuffer1, i64 %indvars.iv87.i + %indvars.iv88.i = phi i64 [ 0, %for.body36.preheader.i ], [ %indvars.iv.next89.i, %for.body36.i ] + %arrayidx38.i = getelementptr inbounds nuw i32, ptr %pPatternBuffer1, i64 %indvars.iv88.i store i32 %nPatternLength, ptr %arrayidx38.i, align 4 - %indvars.iv.next88.i = add nuw nsw i64 %indvars.iv87.i, 1 - %exitcond.not.i = icmp eq i64 %indvars.iv.next88.i, %wide.trip.count.i - br i1 %exitcond.not.i, label %for.body44.i.preheader, label %for.body36.i, !llvm.loop !43 + %indvars.iv.next89.i = add nuw nsw i64 %indvars.iv88.i, 1 + %exitcond91.not.i = icmp eq i64 %indvars.iv.next89.i, %wide.trip.count.i + br i1 %exitcond91.not.i, label %for.body44.i.preheader, label %for.body36.i, !llvm.loop !43 for.cond72.preheader.i: ; preds = %for.inc69.i %cmp74.not79.i = icmp slt i32 %nPatternLength, 2 br i1 %cmp74.not79.i, label %_ZN2EA4StdCL24BoyerMooreGoodSuffixCalcEPKciPiS3_.exit, label %for.body75.preheader.i for.body75.preheader.i: ; preds = %for.cond72.preheader.i - %wide.trip.count102.i = zext nneg i32 %sub.i to i64 + %wide.trip.count104.i = zext nneg i32 %sub.i to i64 br label %for.body75.i for.body44.i: ; preds = %for.body44.i.preheader, %for.inc69.i - %indvars.iv93.i = phi i32 [ %indvars.iv.next94.i, %for.inc69.i ], [ 0, %for.body44.i.preheader ] + %indvars.iv95.i = phi i32 [ %indvars.iv.next96.i, %for.inc69.i ], [ 0, %for.body44.i.preheader ] %j.078.i = phi i32 [ %j.2.i, %for.inc69.i ], [ 0, %for.body44.i.preheader ] %i.277.i = phi i32 [ %dec70.i, %for.inc69.i ], [ %sub.i, %for.body44.i.preheader ] %cmp45.i = icmp eq i32 %i.277.i, -1 @@ -3027,9 +3028,9 @@ for.body44.i: ; preds = %for.body44.i.prehea lor.lhs.false.i: ; preds = %for.body44.i %idxprom46.i = zext nneg i32 %i.277.i to i64 %arrayidx47.i = getelementptr inbounds nuw i32, ptr %pPatternBuffer2, i64 %idxprom46.i - %10 = load i32, ptr %arrayidx47.i, align 4 + %11 = load i32, ptr %arrayidx47.i, align 4 %add48.i = add nuw nsw i32 %i.277.i, 1 - %cmp49.i = icmp eq i32 %10, %add48.i + %cmp49.i = icmp eq i32 %11, %add48.i br i1 %cmp49.i, label %if.then50.i, label %for.inc69.i if.then50.i: ; preds = %lor.lhs.false.i, %for.body44.i @@ -3038,15 +3039,15 @@ if.then50.i: ; preds = %lor.lhs.false.i, %f br i1 %cmp5473.i, label %for.body55.preheader.i, label %for.inc69.i for.body55.preheader.i: ; preds = %if.then50.i - %11 = sext i32 %j.078.i to i64 - %wide.trip.count95.i = sext i32 %indvars.iv93.i to i64 + %12 = sext i32 %j.078.i to i64 + %wide.trip.count97.i = sext i32 %indvars.iv95.i to i64 br label %for.body55.i for.body55.i: ; preds = %for.inc65.i, %for.body55.preheader.i - %indvars.iv90.i = phi i64 [ %11, %for.body55.preheader.i ], [ %indvars.iv.next91.i, %for.inc65.i ] - %arrayidx57.i = getelementptr inbounds i32, ptr %pPatternBuffer1, i64 %indvars.iv90.i - %12 = load i32, ptr %arrayidx57.i, align 4 - %cmp58.i = icmp eq i32 %12, %nPatternLength + %indvars.iv92.i = phi i64 [ %12, %for.body55.preheader.i ], [ %indvars.iv.next93.i, %for.inc65.i ] + %arrayidx57.i = getelementptr inbounds i32, ptr %pPatternBuffer1, i64 %indvars.iv92.i + %13 = load i32, ptr %arrayidx57.i, align 4 + %cmp58.i = icmp eq i32 %13, %nPatternLength br i1 %cmp58.i, label %if.then59.i, label %for.inc65.i if.then59.i: ; preds = %for.body55.i @@ -3054,30 +3055,30 @@ if.then59.i: ; preds = %for.body55.i br label %for.inc65.i for.inc65.i: ; preds = %if.then59.i, %for.body55.i - %indvars.iv.next91.i = add nsw i64 %indvars.iv90.i, 1 - %exitcond96.not.i = icmp eq i64 %indvars.iv.next91.i, %wide.trip.count95.i - br i1 %exitcond96.not.i, label %for.inc69.i, label %for.body55.i, !llvm.loop !44 + %indvars.iv.next93.i = add nsw i64 %indvars.iv92.i, 1 + %exitcond98.not.i = icmp eq i64 %indvars.iv.next93.i, %wide.trip.count97.i + br i1 %exitcond98.not.i, label %for.inc69.i, label %for.body55.i, !llvm.loop !44 for.inc69.i: ; preds = %for.inc65.i, %if.then50.i, %lor.lhs.false.i - %j.2.i = phi i32 [ %j.078.i, %lor.lhs.false.i ], [ %j.078.i, %if.then50.i ], [ %indvars.iv93.i, %for.inc65.i ] + %j.2.i = phi i32 [ %j.078.i, %lor.lhs.false.i ], [ %j.078.i, %if.then50.i ], [ %indvars.iv95.i, %for.inc65.i ] %dec70.i = add nsw i32 %i.277.i, -1 - %indvars.iv.next94.i = add nuw i32 %indvars.iv93.i, 1 - %exitcond97.not.i = icmp eq i32 %indvars.iv93.i, %nPatternLength - br i1 %exitcond97.not.i, label %for.cond72.preheader.i, label %for.body44.i, !llvm.loop !45 + %indvars.iv.next96.i = add nuw i32 %indvars.iv95.i, 1 + %exitcond99.not.i = icmp eq i32 %indvars.iv95.i, %nPatternLength + br i1 %exitcond99.not.i, label %for.cond72.preheader.i, label %for.body44.i, !llvm.loop !45 for.body75.i: ; preds = %for.body75.i, %for.body75.preheader.i - %indvars.iv98.i = phi i64 [ 0, %for.body75.preheader.i ], [ %indvars.iv.next99.i, %for.body75.i ] - %arrayidx80.i = getelementptr inbounds nuw i32, ptr %pPatternBuffer2, i64 %indvars.iv98.i - %13 = load i32, ptr %arrayidx80.i, align 4 - %sub81.i = sub nsw i32 %sub.i, %13 + %indvars.iv100.i = phi i64 [ 0, %for.body75.preheader.i ], [ %indvars.iv.next101.i, %for.body75.i ] + %arrayidx80.i = getelementptr inbounds nuw i32, ptr %pPatternBuffer2, i64 %indvars.iv100.i + %14 = load i32, ptr %arrayidx80.i, align 4 + %sub81.i = sub nsw i32 %sub.i, %14 %idxprom82.i = sext i32 %sub81.i to i64 %arrayidx83.i = getelementptr inbounds i32, ptr %pPatternBuffer1, i64 %idxprom82.i - %14 = trunc i64 %indvars.iv98.i to i32 - %15 = sub i32 %sub.i, %14 - store i32 %15, ptr %arrayidx83.i, align 4 - %indvars.iv.next99.i = add nuw nsw i64 %indvars.iv98.i, 1 - %exitcond103.not.i = icmp eq i64 %indvars.iv.next99.i, %wide.trip.count102.i - br i1 %exitcond103.not.i, label %_ZN2EA4StdCL24BoyerMooreGoodSuffixCalcEPKciPiS3_.exit, label %for.body75.i, !llvm.loop !46 + %15 = trunc i64 %indvars.iv100.i to i32 + %16 = sub i32 %sub.i, %15 + store i32 %16, ptr %arrayidx83.i, align 4 + %indvars.iv.next101.i = add nuw nsw i64 %indvars.iv100.i, 1 + %exitcond105.not.i = icmp eq i64 %indvars.iv.next101.i, %wide.trip.count104.i + br i1 %exitcond105.not.i, label %_ZN2EA4StdCL24BoyerMooreGoodSuffixCalcEPKciPiS3_.exit, label %for.body75.i, !llvm.loop !46 _ZN2EA4StdCL24BoyerMooreGoodSuffixCalcEPKciPiS3_.exit: ; preds = %for.body75.i, %for.cond42.preheader.i, %for.cond72.preheader.i %cmp10.i = icmp sgt i32 %nAlphabetBufferSize, 0 @@ -3104,12 +3105,12 @@ for.body.i57: ; preds = %for.body.i57, %for. for.body3.i: ; preds = %for.body3.i, %for.body3.preheader.i %indvars.iv15.i = phi i64 [ 0, %for.body3.preheader.i ], [ %indvars.iv.next16.i, %for.body3.i ] - %16 = trunc nuw nsw i64 %indvars.iv15.i to i32 - %17 = xor i32 %16, -1 - %sub5.i53 = add nsw i32 %nPatternLength, %17 + %17 = trunc nuw nsw i64 %indvars.iv15.i to i32 + %18 = xor i32 %17, -1 + %sub5.i53 = add nsw i32 %nPatternLength, %18 %arrayidx7.i54 = getelementptr inbounds nuw i8, ptr %pPattern, i64 %indvars.iv15.i - %18 = load i8, ptr %arrayidx7.i54, align 1 - %idxprom8.i = sext i8 %18 to i64 + %19 = load i8, ptr %arrayidx7.i54, align 1 + %idxprom8.i = sext i8 %19 to i64 %arrayidx9.i = getelementptr inbounds i32, ptr %pAlphabetBuffer, i64 %idxprom8.i store i32 %sub5.i53, ptr %arrayidx9.i, align 4 %indvars.iv.next16.i = add nuw nsw i64 %indvars.iv15.i, 1 @@ -3124,7 +3125,8 @@ _ZN2EA4StdCL26BoyerMooreBadCharacterCalcEPKciPii.exit: ; preds = %for.body3.i, % br i1 %brmerge, label %return, label %while.cond.preheader.us.preheader while.cond.preheader.us.preheader: ; preds = %_ZN2EA4StdCL26BoyerMooreBadCharacterCalcEPKciPii.exit - %19 = zext nneg i32 %nPatternLength to i64 + %20 = zext nneg i32 %nPatternLength to i64 + %21 = add nsw i64 %20, -1 br label %while.cond.preheader.us while.cond.preheader.us: ; preds = %while.cond.preheader.us.preheader, %for.inc.us @@ -3137,20 +3139,20 @@ while.cond.preheader.us: ; preds = %while.cond.preheade br i1 %cmp7.not.us.not, label %land.rhs.us.us.preheader, label %land.rhs.us74 land.rhs.us.us.preheader: ; preds = %while.cond.preheader.us - %20 = sext i32 %j.073.us to i64 - %invariant.gep = getelementptr i8, ptr %pSearchString, i64 %20 + %22 = sext i32 %j.073.us to i64 + %invariant.gep = getelementptr i8, ptr %pSearchString, i64 %22 br label %land.rhs.us.us land.rhs.us74: ; preds = %while.cond.preheader.us, %while.body.us84 %i.067.us75 = phi i32 [ %i.1.us, %while.body.us84 ], [ %sub.i, %while.cond.preheader.us ] %idxprom.us76 = zext nneg i32 %i.067.us75 to i64 %arrayidx.us77 = getelementptr inbounds nuw i8, ptr %pPattern, i64 %idxprom.us76 - %21 = load i8, ptr %arrayidx.us77, align 1 + %23 = load i8, ptr %arrayidx.us77, align 1 %add.us78 = add nsw i32 %i.067.us75, %j.073.us %idxprom3.us79 = sext i32 %add.us78 to i64 %arrayidx4.us80 = getelementptr inbounds i8, ptr %pSearchString, i64 %idxprom3.us79 - %22 = load i8, ptr %arrayidx4.us80, align 1 - %cmp6.us81 = icmp eq i8 %21, %22 + %24 = load i8, ptr %arrayidx4.us80, align 1 + %cmp6.us81 = icmp eq i8 %23, %24 br i1 %cmp6.us81, label %while.body.us84, label %if.else.us if.then39.us: ; preds = %if.else.us @@ -3181,46 +3183,47 @@ while.body.us84: ; preds = %land.rhs.us74 br i1 %cmp2.us86, label %land.rhs.us74, label %return, !llvm.loop !50 if.else.us.loopexit: ; preds = %land.rhs.us.us - %23 = trunc nuw nsw i64 %indvars.iv to i32 + %25 = trunc nuw nsw i64 %indvars.iv to i32 %.pre = and i64 %indvars.iv, 4294967295 - %.pre100 = add nsw i32 %j.073.us, %23 + %.pre100 = add nsw i32 %j.073.us, %25 %.pre101 = sext i32 %.pre100 to i64 br label %if.else.us if.else.us: ; preds = %land.rhs.us74, %if.else.us.loopexit %idxprom18.us.pre-phi = phi i64 [ %.pre101, %if.else.us.loopexit ], [ %idxprom3.us79, %land.rhs.us74 ] %idxprom27.us.pre-phi = phi i64 [ %.pre, %if.else.us.loopexit ], [ %idxprom.us76, %land.rhs.us74 ] - %.us-phi.us = phi i32 [ %23, %if.else.us.loopexit ], [ %i.067.us75, %land.rhs.us74 ] + %.us-phi.us = phi i32 [ %25, %if.else.us.loopexit ], [ %i.067.us75, %land.rhs.us74 ] %sub15.us = sub nsw i32 %sub.i, %.us-phi.us %sub16.us = sub nsw i32 %u.071.us.fr, %sub15.us %arrayidx19.us = getelementptr inbounds i8, ptr %pSearchString, i64 %idxprom18.us.pre-phi - %24 = load i8, ptr %arrayidx19.us, align 1 - %idxprom21.us = sext i8 %24 to i64 + %26 = load i8, ptr %arrayidx19.us, align 1 + %idxprom21.us = sext i8 %26 to i64 %arrayidx22.us = getelementptr inbounds i32, ptr %pAlphabetBuffer, i64 %idxprom21.us - %25 = load i32, ptr %arrayidx22.us, align 4 + %27 = load i32, ptr %arrayidx22.us, align 4 %reass.sub = sub i32 %.us-phi.us, %nPatternLength %add24.us = add i32 %reass.sub, 1 - %add25.us = add i32 %add24.us, %25 + %add25.us = add i32 %add24.us, %27 %cond.us = tail call i32 @llvm.smax.i32(i32 %sub16.us, i32 %add25.us) %arrayidx28.us = getelementptr inbounds nuw i32, ptr %pPatternBuffer1, i64 %idxprom27.us.pre-phi - %26 = load i32, ptr %arrayidx28.us, align 4 - %cond..us = tail call i32 @llvm.smax.i32(i32 %cond.us, i32 %26) - %cmp38.not.us = icmp slt i32 %26, %cond.us + %28 = load i32, ptr %arrayidx28.us, align 4 + %cond..us = tail call i32 @llvm.smax.i32(i32 %cond.us, i32 %28) + %cmp38.not.us = icmp slt i32 %28, %cond.us br i1 %cmp38.not.us, label %if.else47.us, label %if.then39.us land.rhs.us.us: ; preds = %land.rhs.us.us.preheader, %while.body.us.us - %indvars.iv.in = phi i64 [ %19, %land.rhs.us.us.preheader ], [ %indvars.iv, %while.body.us.us ] - %indvars.iv = add nsw i64 %indvars.iv.in, -1 + %indvars.iv = phi i64 [ %21, %land.rhs.us.us.preheader ], [ %indvars.iv.next, %while.body.us.us ] %arrayidx.us.us = getelementptr inbounds nuw i8, ptr %pPattern, i64 %indvars.iv - %27 = load i8, ptr %arrayidx.us.us, align 1 + %29 = load i8, ptr %arrayidx.us.us, align 1 %gep = getelementptr i8, ptr %invariant.gep, i64 %indvars.iv - %28 = load i8, ptr %gep, align 1 - %cmp6.us.us = icmp eq i8 %27, %28 + %30 = load i8, ptr %gep, align 1 + %cmp6.us.us = icmp eq i8 %29, %30 br i1 %cmp6.us.us, label %while.body.us.us, label %if.else.us.loopexit while.body.us.us: ; preds = %land.rhs.us.us - %cmp2.us.us = icmp sgt i64 %indvars.iv.in, 1 - br i1 %cmp2.us.us, label %land.rhs.us.us, label %return, !llvm.loop !50 + %indvars.iv.next = add nsw i64 %indvars.iv, -1 + %31 = and i64 %indvars.iv.next, 4294967295 + %exitcond.not = icmp eq i64 %31, 4294967295 + br i1 %exitcond.not, label %return, label %land.rhs.us.us, !llvm.loop !50 return: ; preds = %for.inc.us, %while.body.us84, %while.body.us.us, %_ZN2EA4StdCL26BoyerMooreBadCharacterCalcEPKciPii.exit %retval.0 = phi i32 [ %nPatternLength.mux, %_ZN2EA4StdCL26BoyerMooreBadCharacterCalcEPKciPii.exit ], [ %j.073.us, %while.body.us.us ], [ %j.073.us, %while.body.us84 ], [ %nPatternLength, %for.inc.us ] diff --git a/bench/eastl/optimized/eathread_semaphore.ll b/bench/eastl/optimized/eathread_semaphore.ll index 9067dd82f19..860ba2d3679 100644 --- a/bench/eastl/optimized/eathread_semaphore.ll +++ b/bench/eastl/optimized/eathread_semaphore.ll @@ -71,7 +71,7 @@ if.end.i: ; preds = %if.then6.i, %if.the %mbIntraProcess12.i = getelementptr inbounds nuw i8, ptr %this, i64 40 store i8 1, ptr %mbIntraProcess12.i, align 8 %2 = load atomic i32, ptr %mnCount.i seq_cst, align 8 - %call20.i = tail call i32 @sem_init(ptr noundef nonnull align 8 dereferenceable(48) %this, i32 noundef 1, i32 noundef %2) #13 + %call20.i = tail call i32 @sem_init(ptr noundef nonnull align 8 dereferenceable(48) %this, i32 noundef 1, i32 noundef %2) #14 %cmp21.i = icmp eq i32 %call20.i, -1 %3 = load i8, ptr %mbIntraProcess12.i, align 8 %tobool24.i = trunc i8 %3 to i1 @@ -80,7 +80,7 @@ if.end.i: ; preds = %if.then6.i, %if.the if.then25.i: ; preds = %if.end.i %4 = load atomic i32, ptr %mnCount.i seq_cst, align 8 - %call31.i = tail call i32 @sem_init(ptr noundef nonnull align 8 dereferenceable(48) %this, i32 noundef 0, i32 noundef %4) #13 + %call31.i = tail call i32 @sem_init(ptr noundef nonnull align 8 dereferenceable(48) %this, i32 noundef 0, i32 noundef %4) #14 %cmp32.i = icmp eq i32 %call31.i, -1 br i1 %cmp32.i, label %if.then33.i, label %if.else.i @@ -117,7 +117,7 @@ if.end.i10: ; preds = %if.then6.i25, %if.t store i8 %frombool.i13, ptr %mbIntraProcess12.i12, align 8 %cond.i14 = zext nneg i8 %frombool.i13 to i32 %9 = load atomic i32, ptr %mnCount.i seq_cst, align 8 - %call20.i15 = tail call i32 @sem_init(ptr noundef nonnull align 8 dereferenceable(48) %this, i32 noundef %cond.i14, i32 noundef %9) #13 + %call20.i15 = tail call i32 @sem_init(ptr noundef nonnull align 8 dereferenceable(48) %this, i32 noundef %cond.i14, i32 noundef %9) #14 %cmp21.i16 = icmp eq i32 %call20.i15, -1 %10 = load i8, ptr %mbIntraProcess12.i12, align 8 %tobool24.i19 = trunc i8 %10 to i1 @@ -126,7 +126,7 @@ if.end.i10: ; preds = %if.then6.i25, %if.t if.then25.i20: ; preds = %if.end.i10 %11 = load atomic i32, ptr %mnCount.i seq_cst, align 8 - %call31.i21 = tail call i32 @sem_init(ptr noundef nonnull align 8 dereferenceable(48) %this, i32 noundef 0, i32 noundef %11) #13 + %call31.i21 = tail call i32 @sem_init(ptr noundef nonnull align 8 dereferenceable(48) %this, i32 noundef 0, i32 noundef %11) #14 %cmp32.i22 = icmp eq i32 %call31.i21, -1 br i1 %cmp32.i22, label %if.then33.i24, label %if.else.i23 @@ -172,7 +172,7 @@ if.end: ; preds = %if.then6, %if.then store i8 %frombool, ptr %mbIntraProcess12, align 8 %cond = zext nneg i8 %frombool to i32 %4 = load atomic i32, ptr %mnCount seq_cst, align 8 - %call20 = tail call i32 @sem_init(ptr noundef nonnull %this, i32 noundef %cond, i32 noundef %4) #13 + %call20 = tail call i32 @sem_init(ptr noundef nonnull %this, i32 noundef %cond, i32 noundef %4) #14 %cmp21 = icmp eq i32 %call20, -1 br i1 %cmp21, label %land.lhs.true, label %return @@ -183,7 +183,7 @@ land.lhs.true: ; preds = %if.end if.then25: ; preds = %land.lhs.true %6 = load atomic i32, ptr %mnCount seq_cst, align 8 - %call31 = tail call i32 @sem_init(ptr noundef nonnull %this, i32 noundef 0, i32 noundef %6) #13 + %call31 = tail call i32 @sem_init(ptr noundef nonnull %this, i32 noundef 0, i32 noundef %6) #14 %cmp32 = icmp eq i32 %call31, -1 br i1 %cmp32, label %if.then33, label %if.else @@ -222,7 +222,7 @@ if.end.i: ; preds = %if.then6.i, %entry %mbIntraProcess12.i = getelementptr inbounds nuw i8, ptr %this, i64 40 store i8 1, ptr %mbIntraProcess12.i, align 8 %2 = load atomic i32, ptr %mnCount.i seq_cst, align 8 - %call20.i = tail call i32 @sem_init(ptr noundef nonnull align 8 dereferenceable(48) %this, i32 noundef 1, i32 noundef %2) #13 + %call20.i = tail call i32 @sem_init(ptr noundef nonnull align 8 dereferenceable(48) %this, i32 noundef 1, i32 noundef %2) #14 %cmp21.i = icmp eq i32 %call20.i, -1 %3 = load i8, ptr %mbIntraProcess12.i, align 8 %tobool24.i = trunc i8 %3 to i1 @@ -231,7 +231,7 @@ if.end.i: ; preds = %if.then6.i, %entry if.then25.i: ; preds = %if.end.i %4 = load atomic i32, ptr %mnCount.i seq_cst, align 8 - %call31.i = tail call i32 @sem_init(ptr noundef nonnull align 8 dereferenceable(48) %this, i32 noundef 0, i32 noundef %4) #13 + %call31.i = tail call i32 @sem_init(ptr noundef nonnull align 8 dereferenceable(48) %this, i32 noundef 0, i32 noundef %4) #14 %cmp32.i = icmp eq i32 %call31.i, -1 br i1 %cmp32.i, label %if.then33.i, label %if.else.i @@ -253,12 +253,12 @@ entry: br label %for.cond for.cond: ; preds = %if.then, %entry - %call = tail call i32 @sem_destroy(ptr noundef nonnull %this) #13 + %call = tail call i32 @sem_destroy(ptr noundef nonnull %this) #14 %cmp = icmp eq i32 %call, -1 br i1 %cmp, label %land.lhs.true, label %for.end land.lhs.true: ; preds = %for.cond - %call2 = tail call ptr @__errno_location() #14 + %call2 = tail call ptr @__errno_location() #15 %0 = load i32, ptr %call2, align 4 %cmp3 = icmp eq i32 %0, 16 br i1 %cmp3, label %if.then, label %for.end @@ -274,7 +274,7 @@ terminate.lpad: ; preds = %if.then %1 = landingpad { ptr, i32 } catch ptr null %2 = extractvalue { ptr, i32 } %1, 0 - tail call void @__clang_call_terminate(ptr %2) #15 + tail call void @__clang_call_terminate(ptr %2) #16 unreachable } @@ -290,8 +290,8 @@ declare i32 @__gxx_personality_v0(...) ; Function Attrs: noreturn nounwind uwtable define linkonce_odr hidden void @__clang_call_terminate(ptr noundef %0) local_unnamed_addr #7 comdat { - %2 = tail call ptr @__cxa_begin_catch(ptr %0) #13 - tail call void @_ZSt9terminatev() #15 + %2 = tail call ptr @__cxa_begin_catch(ptr %0) #14 + tail call void @_ZSt9terminatev() #16 unreachable } @@ -320,7 +320,7 @@ while.cond: ; preds = %entry, %land.rhs br i1 %cmp, label %land.rhs, label %if.end39 land.rhs: ; preds = %while.cond - %call3 = tail call ptr @__errno_location() #14 + %call3 = tail call ptr @__errno_location() #15 %3 = load i32, ptr %call3, align 4 %cmp4 = icmp eq i32 %3, 4 br i1 %cmp4, label %while.cond, label %return, !llvm.loop !7 @@ -332,12 +332,12 @@ if.else: ; preds = %entry br i1 %4, label %if.then8, label %while.cond20 if.then8: ; preds = %if.else - %call11 = tail call i32 @sem_trywait(ptr noundef nonnull %this) #13 + %call11 = tail call i32 @sem_trywait(ptr noundef nonnull %this) #14 %cmp12 = icmp eq i32 %call11, -1 br i1 %cmp12, label %if.then13, label %if.end39 if.then13: ; preds = %if.then8 - %call14 = tail call ptr @__errno_location() #14 + %call14 = tail call ptr @__errno_location() #15 %5 = load i32, ptr %call14, align 4 %cmp15 = icmp eq i32 %5, 11 %. = select i1 %cmp15, i32 -2, i32 -1 @@ -349,7 +349,7 @@ while.cond20: ; preds = %if.else, %land.rhs2 br i1 %cmp24, label %land.rhs25, label %if.end39 land.rhs25: ; preds = %while.cond20 - %call26 = tail call ptr @__errno_location() #14 + %call26 = tail call ptr @__errno_location() #15 %6 = load i32, ptr %call26, align 4 %cmp27 = icmp eq i32 %6, 4 br i1 %cmp27, label %while.cond20, label %if.then32, !llvm.loop !8 @@ -390,17 +390,18 @@ entry: if.end: ; preds = %entry %add = add nsw i32 %0, %count + %smin = tail call i32 @llvm.smin.i32(i32 %count, i32 0) br label %while.cond while.cond: ; preds = %while.body, %if.end %count.addr.0 = phi i32 [ %count, %if.end ], [ %dec, %while.body ] - %cmp3 = icmp sgt i32 %count.addr.0, 0 - br i1 %cmp3, label %while.body, label %return + %exitcond.not = icmp eq i32 %count.addr.0, %smin + br i1 %exitcond.not, label %return, label %while.body while.body: ; preds = %while.cond - %dec = add nsw i32 %count.addr.0, -1 + %dec = add i32 %count.addr.0, -1 %2 = atomicrmw add ptr %mnCount, i32 1 seq_cst, align 4 - %call8 = tail call i32 @sem_post(ptr noundef nonnull %this) #13 + %call8 = tail call i32 @sem_post(ptr noundef nonnull %this) #14 %cmp9 = icmp eq i32 %call8, -1 br i1 %cmp9, label %if.then10, label %while.cond, !llvm.loop !9 @@ -455,7 +456,7 @@ if.end.i.i: ; preds = %if.then6.i.i, %if.t %mbIntraProcess12.i.i = getelementptr inbounds nuw i8, ptr %call, i64 40 store i8 1, ptr %mbIntraProcess12.i.i, align 8 %4 = load atomic i32, ptr %mnCount.i.i seq_cst, align 4 - %call20.i.i = tail call i32 @sem_init(ptr noundef nonnull align 8 dereferenceable(48) %call, i32 noundef 1, i32 noundef %4) #13 + %call20.i.i = tail call i32 @sem_init(ptr noundef nonnull align 8 dereferenceable(48) %call, i32 noundef 1, i32 noundef %4) #14 %cmp21.i.i = icmp eq i32 %call20.i.i, -1 %5 = load i8, ptr %mbIntraProcess12.i.i, align 8 %tobool24.i.i = trunc i8 %5 to i1 @@ -464,7 +465,7 @@ if.end.i.i: ; preds = %if.then6.i.i, %if.t if.then25.i.i: ; preds = %if.end.i.i %6 = load atomic i32, ptr %mnCount.i.i seq_cst, align 4 - %call31.i.i = tail call i32 @sem_init(ptr noundef nonnull align 8 dereferenceable(48) %call, i32 noundef 0, i32 noundef %6) #13 + %call31.i.i = tail call i32 @sem_init(ptr noundef nonnull align 8 dereferenceable(48) %call, i32 noundef 0, i32 noundef %6) #14 %cmp32.i.i = icmp eq i32 %call31.i.i, -1 br i1 %cmp32.i.i, label %if.then33.i.i, label %if.else.i.i @@ -477,7 +478,7 @@ if.else.i.i: ; preds = %if.then25.i.i br label %return if.else: ; preds = %entry - %call1 = tail call noalias noundef nonnull dereferenceable(48) ptr @_Znwm(i64 noundef 48) #16 + %call1 = tail call noalias noundef nonnull dereferenceable(48) ptr @_Znwm(i64 noundef 48) #17 %mnCount.i.i1 = getelementptr inbounds nuw i8, ptr %call1, i64 32 %7 = atomicrmw xchg ptr %mnCount.i.i1, i32 0 seq_cst, align 4 %mnMaxCount.i.i2 = getelementptr inbounds nuw i8, ptr %call1, i64 36 @@ -497,7 +498,7 @@ if.end.i.i4: ; preds = %if.then6.i.i15, %if %mbIntraProcess12.i.i5 = getelementptr inbounds nuw i8, ptr %call1, i64 40 store i8 1, ptr %mbIntraProcess12.i.i5, align 8 %9 = load atomic i32, ptr %mnCount.i.i1 seq_cst, align 4 - %call20.i.i6 = tail call i32 @sem_init(ptr noundef nonnull align 8 dereferenceable(48) %call1, i32 noundef 1, i32 noundef %9) #13 + %call20.i.i6 = tail call i32 @sem_init(ptr noundef nonnull align 8 dereferenceable(48) %call1, i32 noundef 1, i32 noundef %9) #14 %cmp21.i.i7 = icmp eq i32 %call20.i.i6, -1 %10 = load i8, ptr %mbIntraProcess12.i.i5, align 8 %tobool24.i.i8 = trunc i8 %10 to i1 @@ -506,7 +507,7 @@ if.end.i.i4: ; preds = %if.then6.i.i15, %if if.then25.i.i10: ; preds = %if.end.i.i4 %11 = load atomic i32, ptr %mnCount.i.i1 seq_cst, align 4 - %call31.i.i11 = tail call i32 @sem_init(ptr noundef nonnull align 8 dereferenceable(48) %call1, i32 noundef 0, i32 noundef %11) #13 + %call31.i.i11 = tail call i32 @sem_init(ptr noundef nonnull align 8 dereferenceable(48) %call1, i32 noundef 0, i32 noundef %11) #14 %cmp32.i.i12 = icmp eq i32 %call31.i.i11, -1 br i1 %cmp32.i.i12, label %if.then33.i.i14, label %if.else.i.i13 @@ -537,12 +538,12 @@ entry: br i1 %tobool.not, label %if.else, label %for.cond.i for.cond.i: ; preds = %entry, %if.then.i - %call.i = tail call i32 @sem_destroy(ptr noundef nonnull align 8 dereferenceable(48) %pSemaphore) #13 + %call.i = tail call i32 @sem_destroy(ptr noundef nonnull align 8 dereferenceable(48) %pSemaphore) #14 %cmp.i = icmp eq i32 %call.i, -1 br i1 %cmp.i, label %land.lhs.true.i, label %_ZN2EA6Thread9SemaphoreD2Ev.exit land.lhs.true.i: ; preds = %for.cond.i - %call2.i = tail call ptr @__errno_location() #14 + %call2.i = tail call ptr @__errno_location() #15 %1 = load i32, ptr %call2.i, align 4 %cmp3.i = icmp eq i32 %1, 16 br i1 %cmp3.i, label %if.then.i, label %_ZN2EA6Thread9SemaphoreD2Ev.exit @@ -555,7 +556,7 @@ terminate.lpad.i: ; preds = %if.then.i %2 = landingpad { ptr, i32 } catch ptr null %3 = extractvalue { ptr, i32 } %2, 0 - tail call void @__clang_call_terminate(ptr %3) #15 + tail call void @__clang_call_terminate(ptr %3) #16 unreachable _ZN2EA6Thread9SemaphoreD2Ev.exit: ; preds = %for.cond.i, %land.lhs.true.i @@ -571,12 +572,12 @@ if.else: ; preds = %entry br i1 %isnull, label %if.end, label %for.cond.i3 for.cond.i3: ; preds = %if.else, %if.then.i9 - %call.i4 = tail call i32 @sem_destroy(ptr noundef nonnull align 8 dereferenceable(48) %pSemaphore) #13 + %call.i4 = tail call i32 @sem_destroy(ptr noundef nonnull align 8 dereferenceable(48) %pSemaphore) #14 %cmp.i5 = icmp eq i32 %call.i4, -1 br i1 %cmp.i5, label %land.lhs.true.i6, label %_ZN2EA6Thread9SemaphoreD2Ev.exit11 land.lhs.true.i6: ; preds = %for.cond.i3 - %call2.i7 = tail call ptr @__errno_location() #14 + %call2.i7 = tail call ptr @__errno_location() #15 %6 = load i32, ptr %call2.i7, align 4 %cmp3.i8 = icmp eq i32 %6, 16 br i1 %cmp3.i8, label %if.then.i9, label %_ZN2EA6Thread9SemaphoreD2Ev.exit11 @@ -589,11 +590,11 @@ terminate.lpad.i10: ; preds = %if.then.i9 %7 = landingpad { ptr, i32 } catch ptr null %8 = extractvalue { ptr, i32 } %7, 0 - tail call void @__clang_call_terminate(ptr %8) #15 + tail call void @__clang_call_terminate(ptr %8) #16 unreachable _ZN2EA6Thread9SemaphoreD2Ev.exit11: ; preds = %for.cond.i3, %land.lhs.true.i6 - tail call void @_ZdlPv(ptr noundef %pSemaphore) #17 + tail call void @_ZdlPv(ptr noundef %pSemaphore) #18 br label %if.end if.end: ; preds = %if.else, %_ZN2EA6Thread9SemaphoreD2Ev.exit11, %_ZN2EA6Thread9SemaphoreD2Ev.exit @@ -628,7 +629,7 @@ if.end.i.i: ; preds = %if.then6.i.i, %entr %mbIntraProcess12.i.i = getelementptr inbounds nuw i8, ptr %pMemory, i64 40 store i8 1, ptr %mbIntraProcess12.i.i, align 8 %2 = load atomic i32, ptr %mnCount.i.i seq_cst, align 4 - %call20.i.i = tail call i32 @sem_init(ptr noundef nonnull align 8 dereferenceable(48) %pMemory, i32 noundef 1, i32 noundef %2) #13 + %call20.i.i = tail call i32 @sem_init(ptr noundef nonnull align 8 dereferenceable(48) %pMemory, i32 noundef 1, i32 noundef %2) #14 %cmp21.i.i = icmp eq i32 %call20.i.i, -1 %3 = load i8, ptr %mbIntraProcess12.i.i, align 8 %tobool24.i.i = trunc i8 %3 to i1 @@ -637,7 +638,7 @@ if.end.i.i: ; preds = %if.then6.i.i, %entr if.then25.i.i: ; preds = %if.end.i.i %4 = load atomic i32, ptr %mnCount.i.i seq_cst, align 4 - %call31.i.i = tail call i32 @sem_init(ptr noundef nonnull align 8 dereferenceable(48) %pMemory, i32 noundef 0, i32 noundef %4) #13 + %call31.i.i = tail call i32 @sem_init(ptr noundef nonnull align 8 dereferenceable(48) %pMemory, i32 noundef 0, i32 noundef %4) #14 %cmp32.i.i = icmp eq i32 %call31.i.i, -1 br i1 %cmp32.i.i, label %if.then33.i.i, label %if.else.i.i @@ -659,12 +660,12 @@ entry: br label %for.cond.i for.cond.i: ; preds = %if.then.i, %entry - %call.i = tail call i32 @sem_destroy(ptr noundef nonnull align 8 dereferenceable(48) %pSemaphore) #13 + %call.i = tail call i32 @sem_destroy(ptr noundef nonnull align 8 dereferenceable(48) %pSemaphore) #14 %cmp.i = icmp eq i32 %call.i, -1 br i1 %cmp.i, label %land.lhs.true.i, label %_ZN2EA6Thread9SemaphoreD2Ev.exit land.lhs.true.i: ; preds = %for.cond.i - %call2.i = tail call ptr @__errno_location() #14 + %call2.i = tail call ptr @__errno_location() #15 %0 = load i32, ptr %call2.i, align 4 %cmp3.i = icmp eq i32 %0, 16 br i1 %cmp3.i, label %if.then.i, label %_ZN2EA6Thread9SemaphoreD2Ev.exit @@ -677,13 +678,16 @@ terminate.lpad.i: ; preds = %if.then.i %1 = landingpad { ptr, i32 } catch ptr null %2 = extractvalue { ptr, i32 } %1, 0 - tail call void @__clang_call_terminate(ptr %2) #15 + tail call void @__clang_call_terminate(ptr %2) #16 unreachable _ZN2EA6Thread9SemaphoreD2Ev.exit: ; preds = %for.cond.i, %land.lhs.true.i ret void } +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare i32 @llvm.smin.i32(i32, i32) #13 + attributes #0 = { mustprogress nofree norecurse nounwind willreturn memory(argmem: readwrite) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) } attributes #2 = { mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: write) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } @@ -697,11 +701,12 @@ attributes #9 = { mustprogress uwtable "frame-pointer"="all" "min-legal-vector-w attributes #10 = { nobuiltin allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #11 = { nobuiltin nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #12 = { mustprogress nofree norecurse nosync nounwind willreturn memory(none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #13 = { nounwind } -attributes #14 = { nounwind willreturn memory(none) } -attributes #15 = { noreturn nounwind } -attributes #16 = { builtin allocsize(0) } -attributes #17 = { builtin nounwind } +attributes #13 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } +attributes #14 = { nounwind } +attributes #15 = { nounwind willreturn memory(none) } +attributes #16 = { noreturn nounwind } +attributes #17 = { builtin allocsize(0) } +attributes #18 = { builtin nounwind } !llvm.module.flags = !{!0, !1, !2, !3, !4} diff --git a/bench/fish-rs/optimized/8zxt2gjt68ikxu18thf3foa45.ll b/bench/fish-rs/optimized/8zxt2gjt68ikxu18thf3foa45.ll index a89ac1caf27..856939f065b 100644 --- a/bench/fish-rs/optimized/8zxt2gjt68ikxu18thf3foa45.ll +++ b/bench/fish-rs/optimized/8zxt2gjt68ikxu18thf3foa45.ll @@ -26810,42 +26810,39 @@ define internal fastcc void @_ZN4fish10parse_util13IndentVisitor31record_line_co %.idx24 = shl nuw nsw i64 %6, 2 %13 = getelementptr inbounds nuw i8, ptr %4, i64 %.idx24 %14 = icmp ult i64 %11, 2 - br i1 %14, label %"_ZN56_$LT$char$u20$as$u20$core..slice..cmp..SliceContains$GT$14slice_contains17h91675bec23efca9bE.exit.thread", label %"_ZN4fish10parse_util13IndentVisitor31record_line_continuations_until28_$u7b$$u7b$closure$u7d$$u7d$17h9a30096dbc84252cE.exit.i.us.i.preheader" + br i1 %14, label %"_ZN56_$LT$char$u20$as$u20$core..slice..cmp..SliceContains$GT$14slice_contains17h91675bec23efca9bE.exit.thread", label %"_ZN4fish10parse_util13IndentVisitor31record_line_continuations_until28_$u7b$$u7b$closure$u7d$$u7d$17h9a30096dbc84252cE.exit.i.us.i" -"_ZN4fish10parse_util13IndentVisitor31record_line_continuations_until28_$u7b$$u7b$closure$u7d$$u7d$17h9a30096dbc84252cE.exit.i.us.i.preheader": ; preds = %12 - %15 = xor i64 %6, -1 - %16 = add i64 %1, %15 - br label %"_ZN4fish10parse_util13IndentVisitor31record_line_continuations_until28_$u7b$$u7b$closure$u7d$$u7d$17h9a30096dbc84252cE.exit.i.us.i" - -"_ZN4fish10parse_util13IndentVisitor31record_line_continuations_until28_$u7b$$u7b$closure$u7d$$u7d$17h9a30096dbc84252cE.exit.i.us.i": ; preds = %"_ZN4fish10parse_util13IndentVisitor31record_line_continuations_until28_$u7b$$u7b$closure$u7d$$u7d$17h9a30096dbc84252cE.exit.i.us.i.preheader", %"_ZN4core4iter6traits8iterator8Iterator8position5check28_$u7b$$u7b$closure$u7d$$u7d$17h5fc121904da62e6fE.exit.us.i" - %17 = phi ptr [ %21, %"_ZN4core4iter6traits8iterator8Iterator8position5check28_$u7b$$u7b$closure$u7d$$u7d$17h5fc121904da62e6fE.exit.us.i" ], [ %13, %"_ZN4fish10parse_util13IndentVisitor31record_line_continuations_until28_$u7b$$u7b$closure$u7d$$u7d$17h9a30096dbc84252cE.exit.i.us.i.preheader" ] - %18 = phi i64 [ %22, %"_ZN4core4iter6traits8iterator8Iterator8position5check28_$u7b$$u7b$closure$u7d$$u7d$17h5fc121904da62e6fE.exit.us.i" ], [ 0, %"_ZN4fish10parse_util13IndentVisitor31record_line_continuations_until28_$u7b$$u7b$closure$u7d$$u7d$17h9a30096dbc84252cE.exit.i.us.i.preheader" ] - %19 = load i64, ptr %17, align 4, !alias.scope !2421, !noalias !2426 - %20 = icmp eq i64 %19, 42949673052 - br i1 %20, label %24, label %"_ZN4core4iter6traits8iterator8Iterator8position5check28_$u7b$$u7b$closure$u7d$$u7d$17h5fc121904da62e6fE.exit.us.i" +"_ZN4fish10parse_util13IndentVisitor31record_line_continuations_until28_$u7b$$u7b$closure$u7d$$u7d$17h9a30096dbc84252cE.exit.i.us.i": ; preds = %12, %"_ZN4core4iter6traits8iterator8Iterator8position5check28_$u7b$$u7b$closure$u7d$$u7d$17h5fc121904da62e6fE.exit.us.i" + %15 = phi i64 [ %21, %"_ZN4core4iter6traits8iterator8Iterator8position5check28_$u7b$$u7b$closure$u7d$$u7d$17h5fc121904da62e6fE.exit.us.i" ], [ %11, %12 ] + %16 = phi ptr [ %20, %"_ZN4core4iter6traits8iterator8Iterator8position5check28_$u7b$$u7b$closure$u7d$$u7d$17h5fc121904da62e6fE.exit.us.i" ], [ %13, %12 ] + %17 = phi i64 [ %22, %"_ZN4core4iter6traits8iterator8Iterator8position5check28_$u7b$$u7b$closure$u7d$$u7d$17h5fc121904da62e6fE.exit.us.i" ], [ 0, %12 ] + %18 = load i64, ptr %16, align 4, !alias.scope !2421, !noalias !2426 + %19 = icmp eq i64 %18, 42949673052 + br i1 %19, label %24, label %"_ZN4core4iter6traits8iterator8Iterator8position5check28_$u7b$$u7b$closure$u7d$$u7d$17h5fc121904da62e6fE.exit.us.i" "_ZN4core4iter6traits8iterator8Iterator8position5check28_$u7b$$u7b$closure$u7d$$u7d$17h5fc121904da62e6fE.exit.us.i": ; preds = %"_ZN4fish10parse_util13IndentVisitor31record_line_continuations_until28_$u7b$$u7b$closure$u7d$$u7d$17h9a30096dbc84252cE.exit.i.us.i" - %21 = getelementptr inbounds nuw i8, ptr %17, i64 4 - %22 = add nuw i64 %18, 1 - %exitcond = icmp eq i64 %22, %16 - br i1 %exitcond, label %"_ZN56_$LT$char$u20$as$u20$core..slice..cmp..SliceContains$GT$14slice_contains17h91675bec23efca9bE.exit.thread", label %"_ZN4fish10parse_util13IndentVisitor31record_line_continuations_until28_$u7b$$u7b$closure$u7d$$u7d$17h9a30096dbc84252cE.exit.i.us.i" + %20 = getelementptr inbounds nuw i8, ptr %16, i64 4 + %21 = add i64 %15, -1 + %22 = add nuw i64 %17, 1 + %exitcond26.i = icmp eq i64 %21, 1 + br i1 %exitcond26.i, label %"_ZN56_$LT$char$u20$as$u20$core..slice..cmp..SliceContains$GT$14slice_contains17h91675bec23efca9bE.exit.thread", label %"_ZN4fish10parse_util13IndentVisitor31record_line_continuations_until28_$u7b$$u7b$closure$u7d$$u7d$17h9a30096dbc84252cE.exit.i.us.i" 23: ; preds = %8, %2 tail call void @_ZN4core6option13expect_failed17h89918c64c89b4471E(ptr noalias noundef nonnull readonly align 1 @anon.21a3d60d47e9a7a4b9c3e30d929412c3.133, i64 noundef 19, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.21a3d60d47e9a7a4b9c3e30d929412c3.662) #34 unreachable 24: ; preds = %"_ZN4fish10parse_util13IndentVisitor31record_line_continuations_until28_$u7b$$u7b$closure$u7d$$u7d$17h9a30096dbc84252cE.exit.i.us.i" - %25 = icmp ugt i64 %18, %11 + %25 = icmp ugt i64 %17, %11 br i1 %25, label %26, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hdf6039bfab5d91d7E.exit", !prof !6 26: ; preds = %24 - tail call void @_ZN4core5slice5index24slice_end_index_len_fail17h295f890f9c88ef86E(i64 noundef %18, i64 noundef %11, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.21a3d60d47e9a7a4b9c3e30d929412c3.659) #34, !noalias !2430 + tail call void @_ZN4core5slice5index24slice_end_index_len_fail17h295f890f9c88ef86E(i64 noundef %17, i64 noundef %11, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.21a3d60d47e9a7a4b9c3e30d929412c3.659) #34, !noalias !2430 unreachable "_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hdf6039bfab5d91d7E.exit": ; preds = %24 - %27 = and i64 %18, -16 + %27 = and i64 %17, -16 %28 = getelementptr inbounds nuw i32, ptr %13, i64 %27 - %29 = and i64 %18, 15 + %29 = and i64 %17, 15 br label %30 30: ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h76bc8f9f0a08cbc9E.exit.i", %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hdf6039bfab5d91d7E.exit" @@ -26889,7 +26886,7 @@ define internal fastcc void @_ZN4fish10parse_util13IndentVisitor31record_line_co ret void "_ZN56_$LT$char$u20$as$u20$core..slice..cmp..SliceContains$GT$14slice_contains17h91675bec23efca9bE.exit": ; preds = %41 - %46 = add i64 %18, 1 + %46 = add i64 %17, 1 %47 = getelementptr inbounds nuw i8, ptr %0, i64 16 %48 = getelementptr inbounds nuw i8, ptr %0, i64 8 %.idx = shl nuw nsw i64 %1, 2 diff --git a/bench/flac/optimized/lpc_intrin_sse2.ll b/bench/flac/optimized/lpc_intrin_sse2.ll index a856930c053..da2b1a8a2ec 100644 --- a/bench/flac/optimized/lpc_intrin_sse2.ll +++ b/bench/flac/optimized/lpc_intrin_sse2.ll @@ -41,8 +41,9 @@ define hidden void @FLAC__lpc_compute_autocorrelation_intrin_sse2_lag_8(ptr noun %22 = fmul reassoc nsz arcp <2 x double> %11, %12 %23 = fadd reassoc nsz arcp <2 x double> %22, %.03644 %indvars.iv.next = add nsw i64 %indvars.iv, -1 - %.not = icmp eq i64 %indvars.iv, 0 - br i1 %.not, label %._crit_edge, label %.lr.ph, !llvm.loop !7 + %24 = and i64 %indvars.iv.next, 4294967295 + %exitcond.not = icmp eq i64 %24, 4294967295 + br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !7 ._crit_edge: ; preds = %.lr.ph, %4 %.039.lcssa = phi <2 x double> [ zeroinitializer, %4 ], [ %17, %.lr.ph ] @@ -50,12 +51,12 @@ define hidden void @FLAC__lpc_compute_autocorrelation_intrin_sse2_lag_8(ptr noun %.037.lcssa = phi <2 x double> [ zeroinitializer, %4 ], [ %21, %.lr.ph ] %.036.lcssa = phi <2 x double> [ zeroinitializer, %4 ], [ %23, %.lr.ph ] store <2 x double> %.039.lcssa, ptr %3, align 1, !tbaa !9 - %24 = getelementptr inbounds nuw i8, ptr %3, i64 16 - store <2 x double> %.038.lcssa, ptr %24, align 1, !tbaa !9 - %25 = getelementptr inbounds nuw i8, ptr %3, i64 32 - store <2 x double> %.037.lcssa, ptr %25, align 1, !tbaa !9 - %26 = getelementptr inbounds nuw i8, ptr %3, i64 48 - store <2 x double> %.036.lcssa, ptr %26, align 1, !tbaa !9 + %25 = getelementptr inbounds nuw i8, ptr %3, i64 16 + store <2 x double> %.038.lcssa, ptr %25, align 1, !tbaa !9 + %26 = getelementptr inbounds nuw i8, ptr %3, i64 32 + store <2 x double> %.037.lcssa, ptr %26, align 1, !tbaa !9 + %27 = getelementptr inbounds nuw i8, ptr %3, i64 48 + store <2 x double> %.036.lcssa, ptr %27, align 1, !tbaa !9 ret void } @@ -102,8 +103,9 @@ define hidden void @FLAC__lpc_compute_autocorrelation_intrin_sse2_lag_10(ptr nou %25 = fmul reassoc nsz arcp <2 x double> %11, %12 %26 = fadd reassoc nsz arcp <2 x double> %25, %.03959 %indvars.iv.next = add nsw i64 %indvars.iv, -1 - %.not = icmp eq i64 %indvars.iv, 0 - br i1 %.not, label %._crit_edge, label %.lr.ph, !llvm.loop !10 + %27 = and i64 %indvars.iv.next, 4294967295 + %exitcond.not = icmp eq i64 %27, 4294967295 + br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !10 ._crit_edge: ; preds = %.lr.ph, %4 %.048.lcssa = phi <2 x double> [ zeroinitializer, %4 ], [ %18, %.lr.ph ] @@ -112,14 +114,14 @@ define hidden void @FLAC__lpc_compute_autocorrelation_intrin_sse2_lag_10(ptr nou %.045.lcssa = phi <2 x double> [ zeroinitializer, %4 ], [ %24, %.lr.ph ] %.039.lcssa = phi <2 x double> [ zeroinitializer, %4 ], [ %26, %.lr.ph ] store <2 x double> %.048.lcssa, ptr %3, align 1, !tbaa !9 - %27 = getelementptr inbounds nuw i8, ptr %3, i64 16 - store <2 x double> %.047.lcssa, ptr %27, align 1, !tbaa !9 - %28 = getelementptr inbounds nuw i8, ptr %3, i64 32 - store <2 x double> %.046.lcssa, ptr %28, align 1, !tbaa !9 - %29 = getelementptr inbounds nuw i8, ptr %3, i64 48 - store <2 x double> %.045.lcssa, ptr %29, align 1, !tbaa !9 - %30 = getelementptr inbounds nuw i8, ptr %3, i64 64 - store <2 x double> %.039.lcssa, ptr %30, align 1, !tbaa !9 + %28 = getelementptr inbounds nuw i8, ptr %3, i64 16 + store <2 x double> %.047.lcssa, ptr %28, align 1, !tbaa !9 + %29 = getelementptr inbounds nuw i8, ptr %3, i64 32 + store <2 x double> %.046.lcssa, ptr %29, align 1, !tbaa !9 + %30 = getelementptr inbounds nuw i8, ptr %3, i64 48 + store <2 x double> %.045.lcssa, ptr %30, align 1, !tbaa !9 + %31 = getelementptr inbounds nuw i8, ptr %3, i64 64 + store <2 x double> %.039.lcssa, ptr %31, align 1, !tbaa !9 ret void } @@ -176,8 +178,9 @@ define hidden void @FLAC__lpc_compute_autocorrelation_intrin_sse2_lag_14(ptr nou %31 = fmul reassoc nsz arcp <2 x double> %11, %12 %32 = fadd reassoc nsz arcp <2 x double> %31, %.05381 %indvars.iv.next = add nsw i64 %indvars.iv, -1 - %.not = icmp eq i64 %indvars.iv, 0 - br i1 %.not, label %._crit_edge, label %.lr.ph, !llvm.loop !11 + %33 = and i64 %indvars.iv.next, 4294967295 + %exitcond.not = icmp eq i64 %33, 4294967295 + br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !11 ._crit_edge: ; preds = %.lr.ph, %4 %.066.lcssa = phi <2 x double> [ zeroinitializer, %4 ], [ %20, %.lr.ph ] @@ -188,18 +191,18 @@ define hidden void @FLAC__lpc_compute_autocorrelation_intrin_sse2_lag_14(ptr nou %.054.lcssa = phi <2 x double> [ zeroinitializer, %4 ], [ %30, %.lr.ph ] %.053.lcssa = phi <2 x double> [ zeroinitializer, %4 ], [ %32, %.lr.ph ] store <2 x double> %.066.lcssa, ptr %3, align 1, !tbaa !9 - %33 = getelementptr inbounds nuw i8, ptr %3, i64 16 - store <2 x double> %.065.lcssa, ptr %33, align 1, !tbaa !9 - %34 = getelementptr inbounds nuw i8, ptr %3, i64 32 - store <2 x double> %.064.lcssa, ptr %34, align 1, !tbaa !9 - %35 = getelementptr inbounds nuw i8, ptr %3, i64 48 - store <2 x double> %.063.lcssa, ptr %35, align 1, !tbaa !9 - %36 = getelementptr inbounds nuw i8, ptr %3, i64 64 - store <2 x double> %.057.lcssa, ptr %36, align 1, !tbaa !9 - %37 = getelementptr inbounds nuw i8, ptr %3, i64 80 - store <2 x double> %.054.lcssa, ptr %37, align 1, !tbaa !9 - %38 = getelementptr inbounds nuw i8, ptr %3, i64 96 - store <2 x double> %.053.lcssa, ptr %38, align 1, !tbaa !9 + %34 = getelementptr inbounds nuw i8, ptr %3, i64 16 + store <2 x double> %.065.lcssa, ptr %34, align 1, !tbaa !9 + %35 = getelementptr inbounds nuw i8, ptr %3, i64 32 + store <2 x double> %.064.lcssa, ptr %35, align 1, !tbaa !9 + %36 = getelementptr inbounds nuw i8, ptr %3, i64 48 + store <2 x double> %.063.lcssa, ptr %36, align 1, !tbaa !9 + %37 = getelementptr inbounds nuw i8, ptr %3, i64 64 + store <2 x double> %.057.lcssa, ptr %37, align 1, !tbaa !9 + %38 = getelementptr inbounds nuw i8, ptr %3, i64 80 + store <2 x double> %.054.lcssa, ptr %38, align 1, !tbaa !9 + %39 = getelementptr inbounds nuw i8, ptr %3, i64 96 + store <2 x double> %.053.lcssa, ptr %39, align 1, !tbaa !9 ret void } diff --git a/bench/freetype/optimized/ftbitmap.ll b/bench/freetype/optimized/ftbitmap.ll index 8f5c80e6ba8..ad6d3a4d5b4 100644 --- a/bench/freetype/optimized/ftbitmap.ll +++ b/bench/freetype/optimized/ftbitmap.ll @@ -210,7 +210,7 @@ define i32 @FT_Bitmap_Embolden(ptr noundef readonly captures(address_is_null) %0 switch i8 %26, label %49 [ i8 3, label %27 i8 4, label %27 - i8 1, label %.thread184 + i8 1, label %.thread185 i8 5, label %38 i8 6, label %40 i8 7, label %284 @@ -232,7 +232,7 @@ FT_Bitmap_Done.exit: ; preds = %27 %.pre = load i8, ptr %25, align 2, !tbaa !28 br label %49 -.thread184: ; preds = %24 +.thread185: ; preds = %24 %spec.store.select = tail call i32 @llvm.smin.i32(i32 %17, i32 8) %31 = load ptr, ptr %0, align 8, !tbaa !12 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #7 @@ -284,15 +284,15 @@ FT_Bitmap_Done.exit: ; preds = %27 i8 6, label %76 ] -58: ; preds = %.thread184, %49 - %59 = phi i32 [ %37, %.thread184 ], [ %57, %49 ] - %60 = phi ptr [ %35, %.thread184 ], [ %55, %49 ] - %61 = phi i32 [ %34, %.thread184 ], [ %54, %49 ] - %62 = phi i32 [ %33, %.thread184 ], [ %53, %49 ] - %63 = phi ptr [ %32, %.thread184 ], [ %52, %49 ] - %64 = phi ptr [ %31, %.thread184 ], [ %51, %49 ] - %.0105187 = phi i32 [ %spec.store.select, %.thread184 ], [ %17, %49 ] - %65 = add i32 %62, %.0105187 +58: ; preds = %.thread185, %49 + %59 = phi i32 [ %37, %.thread185 ], [ %57, %49 ] + %60 = phi ptr [ %35, %.thread185 ], [ %55, %49 ] + %61 = phi i32 [ %34, %.thread185 ], [ %54, %49 ] + %62 = phi i32 [ %33, %.thread185 ], [ %53, %49 ] + %63 = phi ptr [ %32, %.thread185 ], [ %52, %49 ] + %64 = phi ptr [ %31, %.thread185 ], [ %51, %49 ] + %.0105188 = phi i32 [ %spec.store.select, %.thread185 ], [ %17, %49 ] + %65 = add i32 %62, %.0105188 %66 = add i32 %65, 7 %67 = lshr i32 %66, 3 br label %84 @@ -316,9 +316,9 @@ FT_Bitmap_Done.exit: ; preds = %27 %80 = phi i32 [ %44, %.thread ], [ %53, %49 ], [ %53, %49 ], [ %53, %49 ] %81 = phi ptr [ %43, %.thread ], [ %52, %49 ], [ %52, %49 ], [ %52, %49 ] %82 = phi ptr [ %42, %.thread ], [ %51, %49 ], [ %51, %49 ], [ %51, %49 ] - %.0104183 = phi i32 [ %.0104.ph, %.thread ], [ %20, %49 ], [ %20, %49 ], [ %20, %49 ] - %.0105181 = phi i32 [ %.0105.ph, %.thread ], [ %17, %49 ], [ %17, %49 ], [ %17, %49 ] - %83 = add i32 %80, %.0105181 + %.0104184 = phi i32 [ %.0104.ph, %.thread ], [ %20, %49 ], [ %20, %49 ], [ %20, %49 ] + %.0105182 = phi i32 [ %.0105.ph, %.thread ], [ %17, %49 ], [ %17, %49 ], [ %17, %49 ] + %83 = add i32 %80, %.0105182 br label %84 84: ; preds = %76, %72, %68, %58 @@ -328,18 +328,18 @@ FT_Bitmap_Done.exit: ; preds = %27 %88 = phi i32 [ %62, %58 ], [ %53, %68 ], [ %53, %72 ], [ %80, %76 ] %89 = phi ptr [ %63, %58 ], [ %52, %68 ], [ %52, %72 ], [ %81, %76 ] %90 = phi ptr [ %64, %58 ], [ %51, %68 ], [ %51, %72 ], [ %82, %76 ] - %.0104182 = phi i32 [ %20, %58 ], [ %20, %68 ], [ %20, %72 ], [ %.0104183, %76 ] - %.0105179 = phi i32 [ %.0105187, %58 ], [ %17, %68 ], [ %17, %72 ], [ %.0105181, %76 ] + %.0104183 = phi i32 [ %20, %58 ], [ %20, %68 ], [ %20, %72 ], [ %.0104184, %76 ] + %.0105180 = phi i32 [ %.0105188, %58 ], [ %17, %68 ], [ %17, %72 ], [ %.0105182, %76 ] %.0118.i = phi i32 [ 1, %58 ], [ 2, %68 ], [ 4, %72 ], [ 8, %76 ] %.0115.i = phi i32 [ %67, %58 ], [ %71, %68 ], [ %75, %72 ], [ %83, %76 ] - %91 = icmp ne i32 %.0104182, 0 + %91 = icmp ne i32 %.0104183, 0 %.not.i132 = icmp ugt i32 %.0115.i, %85 %or.cond.i = select i1 %91, i1 true, i1 %.not.i132 br i1 %or.cond.i, label %125, label %92 92: ; preds = %84 %93 = shl i32 %85, 3 - %94 = add i32 %88, %.0105179 + %94 = add i32 %88, %.0105180 %95 = mul i32 %.0118.i, %94 %96 = icmp ult i32 %95, %93 br i1 %96, label %97, label %thread-pre-split @@ -409,7 +409,7 @@ FT_Bitmap_Done.exit: ; preds = %27 125: ; preds = %84 %126 = zext i32 %.0115.i to i64 - %127 = add i32 %87, %.0104182 + %127 = add i32 %87, %.0104183 %128 = zext i32 %127 to i64 %129 = call ptr @ft_mem_qrealloc(ptr noundef %90, i64 noundef %126, i64 noundef 0, i64 noundef %128, ptr noundef null, ptr noundef nonnull %5) #7 %130 = load i32, ptr %5, align 4, !tbaa !3 @@ -427,7 +427,7 @@ FT_Bitmap_Done.exit: ; preds = %27 br i1 %133, label %139, label %155 139: ; preds = %131 - %140 = mul i32 %.0115.i, %.0104182 + %140 = mul i32 %.0115.i, %.0104183 %141 = zext i32 %140 to i64 call void @llvm.memset.p0.i64(ptr align 1 %129, i8 0, i64 %141, i1 false) %.not146.i = icmp eq i32 %136, 0 @@ -482,7 +482,7 @@ FT_Bitmap_Done.exit: ; preds = %27 ._crit_edge.i: ; preds = %163, %155 %.0116.lcssa.i = phi ptr [ %129, %155 ], [ %166, %163 ] - %168 = mul i32 %.0115.i, %.0104182 + %168 = mul i32 %.0115.i, %.0104183 %169 = zext i32 %168 to i64 call void @llvm.memset.p0.i64(ptr align 1 %.0116.lcssa.i, i8 0, i64 %169, i1 false) br label %.loopexit.i @@ -515,10 +515,10 @@ thread-pre-split: ; preds = %122, %111, %97, %92 177: ; preds = %174 %178 = load ptr, ptr %9, align 8, !tbaa !19 - %179 = mul nsw i32 %175, %.0104182 + %179 = mul nsw i32 %175, %.0104183 %180 = zext nneg i32 %179 to i64 %181 = getelementptr inbounds nuw i8, ptr %178, i64 %180 - %.pre176 = load i32, ptr %1, align 8, !tbaa !25 + %.pre177 = load i32, ptr %1, align 8, !tbaa !25 br label %190 182: ; preds = %174 @@ -532,7 +532,7 @@ thread-pre-split: ; preds = %122, %111, %97, %92 br label %190 190: ; preds = %182, %177 - %191 = phi i32 [ %.pre176, %177 ], [ %185, %182 ] + %191 = phi i32 [ %.pre177, %177 ], [ %185, %182 ] %.0112 = phi ptr [ %181, %177 ], [ %189, %182 ] %.0107 = phi i32 [ %175, %177 ], [ %183, %182 ] %.not162 = icmp eq i32 %191, 0 @@ -540,10 +540,10 @@ thread-pre-split: ; preds = %122, %111, %97, %92 .preheader136.lr.ph: ; preds = %190 %.0108144 = add nsw i32 %.0107, -1 - %.not198 = icmp eq i32 %.0107, 0 - %.not128140 = icmp slt i32 %.0105179, 1 + %.not199 = icmp eq i32 %.0107, 0 + %.not128140 = icmp slt i32 %.0105180, 1 %192 = getelementptr inbounds nuw i8, ptr %1, i64 24 - %.not127152 = icmp slt i32 %.0104182, 1 + %.not127152 = icmp slt i32 %.0104183, 1 %193 = zext i32 %.0108144 to i64 %wide.trip.count = zext nneg i32 %.0107 to i64 br label %.preheader136 @@ -551,19 +551,19 @@ thread-pre-split: ; preds = %122, %111, %97, %92 .preheader136: ; preds = %.preheader136.lr.ph, %._crit_edge155 %.0106158 = phi i32 [ 0, %.preheader136.lr.ph ], [ %278, %._crit_edge155 ] %.1113156 = phi ptr [ %.0112, %.preheader136.lr.ph ], [ %277, %._crit_edge155 ] - br i1 %.not198, label %._crit_edge155, label %.lr.ph149 + br i1 %.not199, label %._crit_edge155, label %.lr.ph149 .lr.ph149: ; preds = %.preheader136 %invariant.gep = getelementptr i8, ptr %.1113156, i64 -2 - br i1 %.not128140, label %.preheader.thread189, label %.lr.ph + br i1 %.not128140, label %.preheader.thread190, label %.lr.ph .preheader: ; preds = %.loopexit br i1 %.not127152, label %._crit_edge155, label %.lr.ph151.us.preheader -.preheader.thread189: ; preds = %.lr.ph149 +.preheader.thread190: ; preds = %.lr.ph149 br i1 %.not127152, label %._crit_edge155, label %.lr.ph151.us.preheader -.lr.ph151.us.preheader: ; preds = %.preheader, %.preheader.thread189 +.lr.ph151.us.preheader: ; preds = %.preheader, %.preheader.thread190 br label %.lr.ph151.us .lr.ph151.us: ; preds = %.lr.ph151.us.preheader, %._crit_edge.us @@ -584,17 +584,17 @@ thread-pre-split: ; preds = %122, %111, %97, %92 %204 = or i8 %203, %201 store i8 %204, ptr %202, align 1, !tbaa !23 %indvars.iv.next173 = add nuw nsw i64 %indvars.iv172, 1 - %exitcond.not = icmp eq i64 %indvars.iv.next173, %wide.trip.count - br i1 %exitcond.not, label %._crit_edge.us, label %199, !llvm.loop !33 + %exitcond175.not = icmp eq i64 %indvars.iv.next173, %wide.trip.count + br i1 %exitcond175.not, label %._crit_edge.us, label %199, !llvm.loop !33 ._crit_edge.us: ; preds = %199 %205 = add nuw nsw i32 %.1109153.us, 1 - %exitcond175.not = icmp eq i32 %.1109153.us, %.0104182 - br i1 %exitcond175.not, label %._crit_edge155, label %.lr.ph151.us, !llvm.loop !34 + %exitcond176.not = icmp eq i32 %.1109153.us, %.0104183 + br i1 %exitcond176.not, label %._crit_edge155, label %.lr.ph151.us, !llvm.loop !34 .lr.ph: ; preds = %.lr.ph149, %.loopexit %indvars.iv = phi i64 [ %indvars.iv.next, %.loopexit ], [ %193, %.lr.ph149 ] - %.0108.in145 = phi i32 [ %274, %.loopexit ], [ %.0107, %.lr.ph149 ] + %.0108.in145 = phi i32 [ %273, %.loopexit ], [ %.0107, %.lr.ph149 ] %.0108.in145.fr = freeze i32 %.0108.in145 %206 = getelementptr inbounds nuw i8, ptr %.1113156, i64 %indvars.iv %207 = load i8, ptr %206, align 1, !tbaa !23 @@ -637,7 +637,7 @@ thread-pre-split: ; preds = %122, %111, %97, %92 %230 = zext i16 %229 to i32 %231 = add nsw i32 %230, -1 %232 = icmp eq i32 %228, %231 - %.not128.us = icmp sge i32 %.0110141.us, %.0105179 + %.not128.us = icmp sge i32 %.0110141.us, %.0105180 %or.cond159 = select i1 %232, i1 true, i1 %.not128.us br i1 %or.cond159, label %.loopexit, label %.lr.ph.split.us.backedge @@ -646,7 +646,7 @@ thread-pre-split: ; preds = %122, %111, %97, %92 %235 = trunc nuw i32 %234 to i8 %236 = or i8 %211, %235 store i8 %236, ptr %206, align 1, !tbaa !23 - %.not128.us.old.not = icmp slt i32 %.0110141.us, %.0105179 + %.not128.us.old.not = icmp slt i32 %.0110141.us, %.0105180 br i1 %.not128.us.old.not, label %.lr.ph.split.us.backedge, label %.loopexit .lr.ph.split.us.backedge: ; preds = %233, %226 @@ -673,7 +673,7 @@ thread-pre-split: ; preds = %122, %111, %97, %92 %249 = trunc i32 %248 to i8 %250 = or i8 %244, %249 store i8 %250, ptr %206, align 1, !tbaa !23 - %.not128.old.not = icmp slt i32 %.0110141, %.0105179 + %.not128.old.not = icmp slt i32 %.0110141, %.0105180 br i1 %.not128.old.not, label %.lr.ph.split.backedge, label %.loopexit .lr.ph.split.backedge: ; preds = %241, %266 @@ -713,17 +713,18 @@ thread-pre-split: ; preds = %122, %111, %97, %92 %270 = zext i16 %269 to i32 %271 = add nsw i32 %270, -1 %272 = icmp eq i32 %268, %271 - %.not128 = icmp sge i32 %.0110141, %.0105179 + %.not128 = icmp sge i32 %.0110141, %.0105180 %or.cond161 = select i1 %272, i1 true, i1 %.not128 br i1 %or.cond161, label %.loopexit, label %.lr.ph.split.backedge .loopexit: ; preds = %241, %266, %252, %233, %226, %214, %.split.us %indvars.iv.next = add nsw i64 %indvars.iv, -1 - %273 = icmp sgt i64 %indvars.iv, 0 - %274 = trunc nuw nsw i64 %indvars.iv to i32 - br i1 %273, label %.lr.ph, label %.preheader, !llvm.loop !37 + %273 = trunc nuw nsw i64 %indvars.iv to i32 + %274 = and i64 %indvars.iv.next, 4294967295 + %exitcond.not = icmp eq i64 %274, 4294967295 + br i1 %exitcond.not, label %.preheader, label %.lr.ph, !llvm.loop !37 -._crit_edge155: ; preds = %._crit_edge.us, %.preheader, %.preheader136, %.preheader.thread189 +._crit_edge155: ; preds = %._crit_edge.us, %.preheader, %.preheader136, %.preheader.thread190 %275 = load i32, ptr %86, align 8, !tbaa !7 %276 = sext i32 %275 to i64 %277 = getelementptr inbounds i8, ptr %.1113156, i64 %276 @@ -735,9 +736,9 @@ thread-pre-split: ; preds = %122, %111, %97, %92 ._crit_edge: ; preds = %._crit_edge155, %190 %.lcssa138 = phi i32 [ 0, %190 ], [ %279, %._crit_edge155 ] %281 = load i32, ptr %89, align 4, !tbaa !29 - %282 = add i32 %281, %.0105179 + %282 = add i32 %281, %.0105180 store i32 %282, ptr %89, align 4, !tbaa !29 - %283 = add i32 %.lcssa138, %.0104182 + %283 = add i32 %.lcssa138, %.0104183 store i32 %283, ptr %1, align 8, !tbaa !25 br label %284 diff --git a/bench/freetype/optimized/raster.ll b/bench/freetype/optimized/raster.ll index 97c3c9af23e..1d501e6851e 100644 --- a/bench/freetype/optimized/raster.ll +++ b/bench/freetype/optimized/raster.ll @@ -1834,11 +1834,11 @@ define internal fastcc signext range(i8 0, 2) i8 @End_Profile(ptr noundef nonnul 13: ; preds = %1 %14 = getelementptr inbounds nuw i8, ptr %0, i64 56 store i32 99, ptr %14, align 8, !tbaa !99 - br label %110 + br label %111 15: ; preds = %1 %.not = icmp eq i32 %11, 0 - br i1 %.not, label %110, label %16 + br i1 %.not, label %111, label %16 16: ; preds = %15 %17 = getelementptr inbounds nuw i8, ptr %3, i64 20 @@ -1965,7 +1965,7 @@ define internal fastcc signext range(i8 0, 2) i8 @End_Profile(ptr noundef nonnul %87 = getelementptr inbounds nuw i64, ptr %65, i64 %86 %88 = load i64, ptr %87, align 8, !tbaa !124 %89 = icmp slt i64 %88, %74 - br i1 %89, label %.critedge.thread.i, label %100 + br i1 %89, label %.critedge.thread.i, label %101 .critedge.thread.i: ; preds = %78, %85, %.critedge.i %.in.i = phi i64 [ %indvars.iv.next.i, %85 ], [ %indvars.iv.next.i, %.critedge.i ], [ %77, %78 ] @@ -1975,55 +1975,59 @@ define internal fastcc signext range(i8 0, 2) i8 @End_Profile(ptr noundef nonnul br i1 %.not33.i, label %.preheader.preheader.i, label %Insert_Y_Turns.exit .preheader.preheader.i: ; preds = %.critedge.thread.i + %91 = trunc i64 %.in.i to i32 %sext.i = shl i64 %.in.i, 32 - %91 = ashr exact i64 %sext.i, 32 + %92 = ashr exact i64 %sext.i, 32 + %smin.i = tail call i32 @llvm.smin.i32(i32 %91, i32 -1) + %93 = add i32 %smin.i, -1 br label %.preheader.i .preheader.i: ; preds = %.preheader.i, %.preheader.preheader.i - %indvars.iv39.i = phi i64 [ %91, %.preheader.preheader.i ], [ %indvars.iv.next40.i, %.preheader.i ] - %.029.i = phi i32 [ %.047, %.preheader.preheader.i ], [ %94, %.preheader.i ] - %92 = getelementptr inbounds i64, ptr %65, i64 %indvars.iv39.i - %93 = load i64, ptr %92, align 8, !tbaa !124 - %94 = trunc i64 %93 to i32 - %95 = sext i32 %.029.i to i64 - store i64 %95, ptr %92, align 8, !tbaa !124 + %indvars.iv39.i = phi i64 [ %92, %.preheader.preheader.i ], [ %indvars.iv.next40.i, %.preheader.i ] + %.029.i = phi i32 [ %.047, %.preheader.preheader.i ], [ %96, %.preheader.i ] + %94 = getelementptr inbounds i64, ptr %65, i64 %indvars.iv39.i + %95 = load i64, ptr %94, align 8, !tbaa !124 + %96 = trunc i64 %95 to i32 + %97 = sext i32 %.029.i to i64 + store i64 %97, ptr %94, align 8, !tbaa !124 %indvars.iv.next40.i = add nsw i64 %indvars.iv39.i, -1 - %96 = icmp sgt i64 %indvars.iv39.i, -1 - br i1 %96, label %.preheader.i, label %97, !llvm.loop !138 + %lftr.wideiv.i = trunc i64 %indvars.iv.next40.i to i32 + %exitcond.not.i = icmp eq i32 %93, %lftr.wideiv.i + br i1 %exitcond.not.i, label %98, label %.preheader.i, !llvm.loop !138 -97: ; preds = %.preheader.i - %98 = add nsw i32 %63, 1 - store i32 %98, ptr %62, align 4, !tbaa !102 - br label %100 +98: ; preds = %.preheader.i + %99 = add nsw i32 %63, 1 + store i32 %99, ptr %62, align 4, !tbaa !102 + br label %101 Insert_Y_Turns.exit: ; preds = %.critedge.thread.i - %99 = getelementptr inbounds nuw i8, ptr %0, i64 56 - store i32 98, ptr %99, align 8, !tbaa !99 - br label %110 - -100: ; preds = %97, %85 - %101 = getelementptr inbounds nuw i8, ptr %0, i64 120 - %102 = load ptr, ptr %101, align 8, !tbaa !106 - %.not55 = icmp eq ptr %102, null - br i1 %.not55, label %103, label %104 - -103: ; preds = %100 - store ptr %3, ptr %101, align 8, !tbaa !106 - br label %104 - -104: ; preds = %103, %100 - %105 = phi ptr [ %3, %103 ], [ %102, %100 ] - %106 = getelementptr inbounds nuw i8, ptr %3, i64 8 - store ptr %105, ptr %106, align 8, !tbaa !121 + %100 = getelementptr inbounds nuw i8, ptr %0, i64 56 + store i32 98, ptr %100, align 8, !tbaa !99 + br label %111 + +101: ; preds = %98, %85 + %102 = getelementptr inbounds nuw i8, ptr %0, i64 120 + %103 = load ptr, ptr %102, align 8, !tbaa !106 + %.not55 = icmp eq ptr %103, null + br i1 %.not55, label %104, label %105 + +104: ; preds = %101 + store ptr %3, ptr %102, align 8, !tbaa !106 + br label %105 + +105: ; preds = %104, %101 + %106 = phi ptr [ %3, %104 ], [ %103, %101 ] + %107 = getelementptr inbounds nuw i8, ptr %3, i64 8 + store ptr %106, ptr %107, align 8, !tbaa !121 store ptr %5, ptr %3, align 8, !tbaa !120 - %107 = getelementptr inbounds nuw i8, ptr %0, i64 96 - %108 = load i16, ptr %107, align 8, !tbaa !103 - %109 = add i16 %108, 1 - store i16 %109, ptr %107, align 8, !tbaa !103 - br label %110 - -110: ; preds = %Insert_Y_Turns.exit, %15, %104, %13 - %.048 = phi i8 [ 1, %13 ], [ 1, %Insert_Y_Turns.exit ], [ 0, %104 ], [ 0, %15 ] + %108 = getelementptr inbounds nuw i8, ptr %0, i64 96 + %109 = load i16, ptr %108, align 8, !tbaa !103 + %110 = add i16 %109, 1 + store i16 %110, ptr %108, align 8, !tbaa !103 + br label %111 + +111: ; preds = %Insert_Y_Turns.exit, %15, %105, %13 + %.048 = phi i8 [ 1, %13 ], [ 1, %Insert_Y_Turns.exit ], [ 0, %105 ], [ 0, %15 ] ret i8 %.048 } @@ -3279,13 +3283,13 @@ declare void @FT_Outline_Get_CBox(ptr noundef, ptr noundef) local_unnamed_addr # declare i32 @llvm.smax.i32(i32, i32) #9 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i64 @llvm.smin.i64(i64, i64) #9 +declare i32 @llvm.smin.i32(i32, i32) #9 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i64 @llvm.smax.i64(i64, i64) #9 +declare i64 @llvm.smin.i64(i64, i64) #9 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.smin.i32(i32, i32) #9 +declare i64 @llvm.smax.i64(i64, i64) #9 attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { mustprogress nofree norecurse nosync nounwind willreturn memory(none) uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } diff --git a/bench/git/optimized/hex.ll b/bench/git/optimized/hex.ll index 93c80a97a17..a42496a80ba 100644 --- a/bench/git/optimized/hex.ll +++ b/bench/git/optimized/hex.ll @@ -213,8 +213,8 @@ oid_set_algo.exit.i: ; preds = %3, %23 get_oid_hex_algop.exit: ; preds = %hex2chr.exit.i.i %32 = add i32 %.017, -1 - %33 = icmp samesign ugt i32 %.017, 1 - br i1 %33, label %3, label %get_oid_hex_algop.exit.thread, !llvm.loop !39 + %exitcond28.not = icmp eq i32 %32, 0 + br i1 %exitcond28.not, label %get_oid_hex_algop.exit.thread, label %3, !llvm.loop !39 get_oid_hex_algop.exit.thread: ; preds = %get_oid_hex_algop.exit, %29, %oid_set_algo.exit.i %.06 = phi i32 [ %.017, %oid_set_algo.exit.i ], [ %.017, %29 ], [ 0, %get_oid_hex_algop.exit ] @@ -453,33 +453,29 @@ oid_set_algo.exit.i.i: ; preds = %25 %30 = getelementptr inbounds nuw i8, ptr %1, i64 32 store i32 %.017.i, ptr %30, align 4, !tbaa !37 %.not10.i.i = icmp eq i64 %7, 32 - br i1 %.not10.i.i, label %get_oid_hex_any.exit, label %31 + br i1 %.not10.i.i, label %35, label %31 31: ; preds = %oid_set_algo.exit.i.i.thread, %oid_set_algo.exit.i.i %32 = getelementptr inbounds nuw i8, ptr %1, i64 %7 %33 = sub i64 32, %7 tail call void @llvm.memset.p0.i64(ptr align 1 %32, i8 0, i64 %33, i1 false) - br label %get_oid_hex_any.exit + br label %35 get_oid_hex_algop.exit.i: ; preds = %hex2chr.exit.i.i.i %34 = add nsw i32 %.017.i, -1 - %35 = icmp samesign ugt i32 %.017.i, 1 - br i1 %35, label %4, label %get_oid_hex_any.exit.thread, !llvm.loop !39 - -get_oid_hex_any.exit: ; preds = %oid_set_algo.exit.i.i, %31 - %.not = icmp eq i32 %.017.i, 0 - br i1 %.not, label %get_oid_hex_any.exit.thread, label %36 - -36: ; preds = %get_oid_hex_any.exit - %37 = getelementptr inbounds nuw [3 x %struct.git_hash_algo], ptr @hash_algos, i64 0, i64 %5, i32 3 - %38 = load i64, ptr %37, align 8, !tbaa !40 - %39 = getelementptr inbounds nuw i8, ptr %0, i64 %38 - store ptr %39, ptr %2, align 8, !tbaa !41 - br label %get_oid_hex_any.exit.thread - -get_oid_hex_any.exit.thread: ; preds = %get_oid_hex_algop.exit.i, %36, %get_oid_hex_any.exit - %.06.i9 = phi i32 [ %.017.i, %36 ], [ 0, %get_oid_hex_any.exit ], [ 0, %get_oid_hex_algop.exit.i ] - ret i32 %.06.i9 + %exitcond28.not.i = icmp eq i32 %34, 0 + br i1 %exitcond28.not.i, label %get_oid_hex_any.exit, label %4, !llvm.loop !39 + +35: ; preds = %oid_set_algo.exit.i.i, %31 + %36 = getelementptr inbounds nuw [3 x %struct.git_hash_algo], ptr @hash_algos, i64 0, i64 %5, i32 3 + %37 = load i64, ptr %36, align 8, !tbaa !40 + %38 = getelementptr inbounds nuw i8, ptr %0, i64 %37 + store ptr %38, ptr %2, align 8, !tbaa !41 + br label %get_oid_hex_any.exit + +get_oid_hex_any.exit: ; preds = %get_oid_hex_algop.exit.i, %35 + %.06.i10 = phi i32 [ %.017.i, %35 ], [ 0, %get_oid_hex_algop.exit.i ] + ret i32 %.06.i10 } ; Function Attrs: nofree norecurse nosync nounwind memory(read, argmem: readwrite, inaccessiblemem: none) uwtable diff --git a/bench/glslang/optimized/Pp.ll b/bench/glslang/optimized/Pp.ll index df97fa503e9..15de571d638 100644 --- a/bench/glslang/optimized/Pp.ll +++ b/bench/glslang/optimized/Pp.ll @@ -2027,8 +2027,8 @@ _ZN7glslang10TPpContext14lookupMacroDefEi.exit.thread: ; preds = %_ZNSt3mapIiN7g 95: ; preds = %.preheader143 %96 = add nsw i32 %.0114154, -1 - %.not171 = icmp eq i32 %.0114154, 0 - br i1 %.not171, label %.critedge, label %.preheader143, !llvm.loop !17 + %exitcond.not = icmp eq i32 %.0114154, 0 + br i1 %exitcond.not, label %.critedge, label %.preheader143, !llvm.loop !17 .preheader143: ; preds = %tailrecurse, %95 %.0114154 = phi i32 [ %96, %95 ], [ 3, %tailrecurse ] @@ -2087,8 +2087,8 @@ _ZN7glslang10TPpContext14lookupMacroDefEi.exit.thread: ; preds = %_ZNSt3mapIiN7g 124: ; preds = %.preheader %125 = add nsw i32 %.0113155, -1 - %.not172 = icmp eq i32 %.0113155, 0 - br i1 %.not172, label %.thread, label %.preheader, !llvm.loop !18 + %exitcond171.not = icmp eq i32 %.0113155, 0 + br i1 %exitcond171.not, label %.thread, label %.preheader, !llvm.loop !18 126: ; preds = %.preheader %127 = getelementptr inbounds nuw i8, ptr %121, i64 4 diff --git a/bench/graphviz/optimized/dtstat.ll b/bench/graphviz/optimized/dtstat.ll index c41029c372f..4069b9a2ab6 100644 --- a/bench/graphviz/optimized/dtstat.ll +++ b/bench/graphviz/optimized/dtstat.ll @@ -81,8 +81,9 @@ define range(i32 -1, 1) i32 @dtstat(ptr noundef %0, ptr noundef initializes((0, 34: ; preds = %33, %28, %27 %indvars.iv.next6.i = add nsw i64 %indvars.iv5.i, -1 - %35 = icmp sgt i64 %indvars.iv5.i, 0 - br i1 %35, label %.lr.ph.split.us.i, label %dthstat.exit, !llvm.loop !24 + %35 = and i64 %indvars.iv.next6.i, 4294967295 + %exitcond9.not.i = icmp eq i64 %35, 4294967295 + br i1 %exitcond9.not.i, label %dthstat.exit, label %.lr.ph.split.us.i, !llvm.loop !24 dthstat.exit: ; preds = %34, %19 %36 = load i64, ptr %10, align 8, !tbaa !23 @@ -92,7 +93,7 @@ dthstat.exit: ; preds = %34, %19 br i1 %39, label %40, label %dthstat.exit._crit_edge dthstat.exit._crit_edge: ; preds = %dthstat.exit - %.pre82 = load ptr, ptr @dtstat.Count, align 8, !tbaa !26 + %.pre83 = load ptr, ptr @dtstat.Count, align 8, !tbaa !26 br label %50 40: ; preds = %dthstat.exit @@ -120,14 +121,14 @@ dthstat.exit._crit_edge: ; preds = %dthstat.exit br label %50 50: ; preds = %dthstat.exit._crit_edge, %48 - %51 = phi ptr [ %.pre82, %dthstat.exit._crit_edge ], [ %47, %48 ] + %51 = phi ptr [ %.pre83, %dthstat.exit._crit_edge ], [ %47, %48 ] br label %63 52: ; preds = %63 %.val62 = load ptr, ptr %20, align 8 %.val63 = load i32, ptr %21, align 8, !tbaa !18 %53 = icmp sgt i32 %.val63, 0 - br i1 %53, label %.lr.ph.split.i.preheader, label %dthstat.exit74 + br i1 %53, label %.lr.ph.split.i.preheader, label %dthstat.exit75 .lr.ph.split.i.preheader: ; preds = %52 %.0141.i65 = add nsw i32 %.val63, -1 @@ -153,14 +154,15 @@ dthstat.exit._crit_edge: ; preds = %dthstat.exit %61 = add i64 %60, 1 store i64 %61, ptr %59, align 8, !tbaa !25 %indvars.iv.next.i = add nsw i64 %indvars.iv.i, -1 - %62 = icmp sgt i64 %indvars.iv.i, 0 - br i1 %62, label %.lr.ph.split.i, label %dthstat.exit74, !llvm.loop !24 + %62 = and i64 %indvars.iv.next.i, 4294967295 + %exitcond.not.i = icmp eq i64 %62, 4294967295 + br i1 %exitcond.not.i, label %dthstat.exit75, label %.lr.ph.split.i, !llvm.loop !24 63: ; preds = %50, %63 - %.04477 = phi i64 [ 0, %50 ], [ %65, %63 ] - %64 = getelementptr inbounds nuw i64, ptr %51, i64 %.04477 + %.04478 = phi i64 [ 0, %50 ], [ %65, %63 ] + %64 = getelementptr inbounds nuw i64, ptr %51, i64 %.04478 store i64 0, ptr %64, align 8, !tbaa !25 - %65 = add i64 %.04477, 1 + %65 = add i64 %.04478, 1 %66 = load i64, ptr %10, align 8, !tbaa !23 %.not60 = icmp ugt i64 %65, %66 br i1 %.not60, label %52, label %63, !llvm.loop !27 @@ -168,13 +170,13 @@ dthstat.exit._crit_edge: ; preds = %dthstat.exit 67: ; preds = %17 %68 = and i32 %15, 12 %.not52 = icmp eq i32 %68, 0 - br i1 %.not52, label %dthstat.exit74, label %69 + br i1 %.not52, label %dthstat.exit75, label %69 69: ; preds = %67 %70 = getelementptr inbounds nuw i8, ptr %0, i64 24 %71 = load ptr, ptr %70, align 8, !tbaa !28 %.not53 = icmp eq ptr %71, null - br i1 %.not53, label %dthstat.exit74, label %72 + br i1 %.not53, label %dthstat.exit75, label %72 72: ; preds = %69 tail call fastcc void @dttstat(ptr noundef nonnull %1, ptr noundef nonnull %71, i64 noundef 0, ptr noundef null) @@ -185,7 +187,7 @@ dthstat.exit._crit_edge: ; preds = %dthstat.exit br i1 %76, label %77, label %._crit_edge ._crit_edge: ; preds = %72 - %.pre84 = load ptr, ptr @dtstat.Count, align 8, !tbaa !26 + %.pre85 = load ptr, ptr @dtstat.Count, align 8, !tbaa !26 br label %87 77: ; preds = %72 @@ -195,11 +197,11 @@ dthstat.exit._crit_edge: ; preds = %dthstat.exit 78: ; preds = %77 %79 = load ptr, ptr @dtstat.Count, align 8, !tbaa !26 tail call void @free(ptr noundef %79) #7 - %.pre83 = load i64, ptr %11, align 8, !tbaa !22 + %.pre84 = load i64, ptr %11, align 8, !tbaa !22 br label %80 80: ; preds = %78, %77 - %81 = phi i64 [ %.pre83, %78 ], [ %73, %77 ] + %81 = phi i64 [ %.pre84, %78 ], [ %73, %77 ] %82 = shl i64 %81, 2 %83 = add i64 %82, 4 %84 = tail call noalias ptr @malloc(i64 noundef %83) #8 @@ -213,7 +215,7 @@ dthstat.exit._crit_edge: ; preds = %dthstat.exit br label %87 87: ; preds = %._crit_edge, %85 - %88 = phi ptr [ %.pre84, %._crit_edge ], [ %84, %85 ] + %88 = phi ptr [ %.pre85, %._crit_edge ], [ %84, %85 ] br label %93 89: ; preds = %93 @@ -226,18 +228,18 @@ dthstat.exit._crit_edge: ; preds = %dthstat.exit br label %97 93: ; preds = %87, %93 - %.04378 = phi i64 [ 0, %87 ], [ %95, %93 ] - %94 = getelementptr inbounds nuw i64, ptr %88, i64 %.04378 + %.04379 = phi i64 [ 0, %87 ], [ %95, %93 ] + %94 = getelementptr inbounds nuw i64, ptr %88, i64 %.04379 store i64 0, ptr %94, align 8, !tbaa !25 - %95 = add i64 %.04378, 1 + %95 = add i64 %.04379, 1 %96 = load i64, ptr %11, align 8, !tbaa !22 %.not56 = icmp ugt i64 %95, %96 br i1 %.not56, label %89, label %93, !llvm.loop !29 97: ; preds = %89, %103 - %.079 = phi i64 [ 0, %89 ], [ %105, %103 ] + %.080 = phi i64 [ 0, %89 ], [ %105, %103 ] %98 = phi i64 [ %.promoted, %89 ], [ %104, %103 ] - %99 = getelementptr inbounds nuw i64, ptr %88, i64 %.079 + %99 = getelementptr inbounds nuw i64, ptr %88, i64 %.080 %100 = load i64, ptr %99, align 8, !tbaa !25 %101 = icmp ugt i64 %100, %98 br i1 %101, label %102, label %103 @@ -248,17 +250,17 @@ dthstat.exit._crit_edge: ; preds = %dthstat.exit 103: ; preds = %97, %102 %104 = phi i64 [ %98, %97 ], [ %100, %102 ] - %105 = add nuw i64 %.079, 1 + %105 = add nuw i64 %.080, 1 %exitcond = icmp eq i64 %105, %umax - br i1 %exitcond, label %dthstat.exit74, label %97, !llvm.loop !30 + br i1 %exitcond, label %dthstat.exit75, label %97, !llvm.loop !30 -dthstat.exit74: ; preds = %58, %103, %52, %67, %69 +dthstat.exit75: ; preds = %58, %103, %52, %67, %69 %106 = load ptr, ptr @dtstat.Count, align 8, !tbaa !26 store ptr %106, ptr %12, align 8, !tbaa !31 br label %107 -107: ; preds = %80, %43, %9, %dthstat.exit74 - %.045 = phi i32 [ 0, %dthstat.exit74 ], [ 0, %9 ], [ -1, %43 ], [ -1, %80 ] +107: ; preds = %80, %43, %9, %dthstat.exit75 + %.045 = phi i32 [ 0, %dthstat.exit75 ], [ 0, %9 ], [ -1, %43 ], [ -1, %80 ] ret i32 %.045 } diff --git a/bench/graphviz/optimized/lu.ll b/bench/graphviz/optimized/lu.ll index 61f3e667f77..0d19eaa58f8 100644 --- a/bench/graphviz/optimized/lu.ll +++ b/bench/graphviz/optimized/lu.ll @@ -283,7 +283,7 @@ define void @lu_solve(ptr noundef captures(none) %0, ptr noundef readonly captur .preheader40.._crit_edge_crit_edge: ; preds = %.preheader40 %.pre = load i32, ptr %6, align 4, !tbaa !16 - %.pre71 = sext i32 %.pre to i64 + %.pre72 = sext i32 %.pre to i64 br label %._crit_edge .lr.ph: ; preds = %.preheader40 @@ -314,7 +314,7 @@ define void @lu_solve(ptr noundef captures(none) %0, ptr noundef readonly captur br i1 %exitcond.not, label %._crit_edge, label %16, !llvm.loop !25 ._crit_edge: ; preds = %16, %.preheader40.._crit_edge_crit_edge - %.pre-phi = phi i64 [ %.pre71, %.preheader40.._crit_edge_crit_edge ], [ %9, %16 ] + %.pre-phi = phi i64 [ %.pre72, %.preheader40.._crit_edge_crit_edge ], [ %9, %16 ] %.0.lcssa = phi double [ 0.000000e+00, %.preheader40.._crit_edge_crit_edge ], [ %21, %16 ] %22 = getelementptr inbounds double, ptr %1, i64 %.pre-phi %23 = load double, ptr %22, align 8, !tbaa !14 @@ -358,8 +358,9 @@ define void @lu_solve(ptr noundef captures(none) %0, ptr noundef readonly captur %43 = load double, ptr %42, align 8, !tbaa !14 %44 = fdiv double %41, %43 store double %44, ptr %39, align 8, !tbaa !14 - %45 = icmp samesign ugt i64 %indvars.iv60, 1 - br i1 %45, label %.preheader, label %._crit_edge52, !llvm.loop !28 + %45 = and i64 %indvars.iv.next61, 4294967295 + %exitcond66.not = icmp eq i64 %45, 0 + br i1 %exitcond66.not, label %._crit_edge52, label %.preheader, !llvm.loop !28 ._crit_edge52: ; preds = %._crit_edge47, %3 ret void diff --git a/bench/graphviz/optimized/visibility.ll b/bench/graphviz/optimized/visibility.ll index decf85caf8f..c3c775c7ff2 100644 --- a/bench/graphviz/optimized/visibility.ll +++ b/bench/graphviz/optimized/visibility.ll @@ -191,8 +191,8 @@ allocArray.exit: ; preds = %gv_calloc.exit23.i, br label %79 79: ; preds = %clear.exit.i, %.lr.ph.i - %indvars.iv.i4 = phi i64 [ %78, %.lr.ph.i ], [ %indvars.iv.next.i5, %clear.exit.i ] - %80 = getelementptr inbounds nuw %struct.Pxy_t, ptr %42, i64 %indvars.iv.i4 + %indvars.iv.i3 = phi i64 [ %78, %.lr.ph.i ], [ %indvars.iv.next.i4, %clear.exit.i ] + %80 = getelementptr inbounds nuw %struct.Pxy_t, ptr %42, i64 %indvars.iv.i3 %81 = load double, ptr %52, align 8 %82 = load double, ptr %57, align 8 %83 = load double, ptr %50, align 8 @@ -239,11 +239,11 @@ inCone.exit.i: ; preds = %79 br i1 %116, label %117, label %clear.exit.i 117: ; preds = %inCone.exit.i, %114 - %118 = getelementptr inbounds nuw i32, ptr %46, i64 %indvars.iv.i4 + %118 = getelementptr inbounds nuw i32, ptr %46, i64 %indvars.iv.i3 %119 = load i32, ptr %118, align 4, !tbaa !22 %120 = sext i32 %119 to i64 %121 = getelementptr inbounds %struct.Pxy_t, ptr %42, i64 %120 - %122 = getelementptr inbounds nuw i32, ptr %44, i64 %indvars.iv.i4 + %122 = getelementptr inbounds nuw i32, ptr %44, i64 %indvars.iv.i3 %123 = load i32, ptr %122, align 4, !tbaa !22 %124 = sext i32 %123 to i64 %125 = getelementptr inbounds %struct.Pxy_t, ptr %42, i64 %124 @@ -419,23 +419,24 @@ intersect.exit.i: ; preds = %inBetween.exit42.i. %243 = fmul double %141, %141 %244 = tail call double @llvm.fmuladd.f64(double %144, double %144, double %243) %sqrt.i65.i = tail call double @llvm.sqrt.f64(double %244) - %245 = getelementptr inbounds nuw double, ptr %64, i64 %indvars.iv.i4 + %245 = getelementptr inbounds nuw double, ptr %64, i64 %indvars.iv.i3 store double %sqrt.i65.i, ptr %245, align 8, !tbaa !23 - %246 = getelementptr inbounds nuw ptr, ptr %11, i64 %indvars.iv.i4 + %246 = getelementptr inbounds nuw ptr, ptr %11, i64 %indvars.iv.i3 %247 = load ptr, ptr %246, align 8, !tbaa !14 %248 = getelementptr inbounds nuw double, ptr %247, i64 %indvars.iv74.i store double %sqrt.i65.i, ptr %248, align 8, !tbaa !23 br label %clear.exit.i clear.exit.i: ; preds = %intersect.exit.i, %inBetween.exit42.i.i, %213, %209, %206, %inBetween.exit.i.i, %189, %185, %182, %.loopexit.i, %inCone.exit64.i, %156, %inCone.exit.i, %114 - %indvars.iv.next.i5 = add nsw i64 %indvars.iv.i4, -1 - %249 = icmp sgt i64 %indvars.iv.i4, 0 - br i1 %249, label %79, label %._crit_edge.i, !llvm.loop !26 + %indvars.iv.next.i4 = add nsw i64 %indvars.iv.i3, -1 + %249 = and i64 %indvars.iv.next.i4, 4294967295 + %exitcond.not.i5 = icmp eq i64 %249, 4294967295 + br i1 %exitcond.not.i5, label %._crit_edge.i, label %79, !llvm.loop !26 ._crit_edge.i: ; preds = %clear.exit.i, %47 %indvars.iv.next75.i = add nuw nsw i64 %indvars.iv74.i, 1 - %exitcond.not.i3 = icmp eq i64 %indvars.iv.next75.i, %wide.trip.count.i.i - br i1 %exitcond.not.i3, label %compVis.exit, label %47, !llvm.loop !27 + %exitcond77.not.i = icmp eq i64 %indvars.iv.next75.i, %wide.trip.count.i.i + br i1 %exitcond77.not.i, label %compVis.exit, label %47, !llvm.loop !27 compVis.exit: ; preds = %._crit_edge.i, %allocArray.exit ret void diff --git a/bench/harfbuzz/optimized/hb-subset-cff1.ll b/bench/harfbuzz/optimized/hb-subset-cff1.ll index 9d0394da396..bcf0892912e 100644 --- a/bench/harfbuzz/optimized/hb-subset-cff1.ll +++ b/bench/harfbuzz/optimized/hb-subset-cff1.ll @@ -513,7 +513,6 @@ _ZL9hb_memcpyPvPKvm.exit.i.i: ; preds = %.lr.ph.i20.i br label %.lr.ph.split .lr.ph.splitthread-pre-split: ; preds = %_ZNK14hb_inc_bimap_t3hasEj.exit.thread - %indvars.iv.next = add nsw i64 %indvars.iv, -1 %.pr = load ptr, ptr %87, align 8, !tbaa !96 br label %.lr.ph.split @@ -866,8 +865,10 @@ _ZN11hb_vector_tIN3CFF27cff1_font_dict_values_mod_tELb0EEixEi.exit: ; preds = %2 br label %_ZL27_serialize_cff1_charstringsP22hb_serialize_context_tRN2OT16cff1_subset_planERKNS1_4cff120accelerator_subset_tE.exit.thread _ZNK14hb_inc_bimap_t3hasEj.exit.thread: ; preds = %.lr.ph.i.i144, %103, %.lr.ph.split, %.thread260, %_ZNK14hb_inc_bimap_t3hasEj.exit - %256 = icmp sgt i64 %indvars.iv, 0 - br i1 %256, label %.lr.ph.splitthread-pre-split, label %._crit_edge, !llvm.loop !125 + %indvars.iv.next = add nsw i64 %indvars.iv, -1 + %256 = and i64 %indvars.iv.next, 4294967295 + %exitcond.not = icmp eq i64 %256, 4294967295 + br i1 %exitcond.not, label %._crit_edge, label %.lr.ph.splitthread-pre-split, !llvm.loop !125 .critedge: ; preds = %_ZN2OT8CFFIndexINS_7IntTypeItLj2EEEE10total_sizeI11hb_vector_tIS5_IhLb0EELb0EETnPN12hb_enable_ifIXsr14hb_is_iterableIT_EE5valueEvE4typeELPv0EEEjRKS9_Pjj.exit.i162, %_ZN22hb_serialize_context_t13allocate_sizeIhEEPT_mb.exit.i, %155, %167 call void @_ZN22hb_serialize_context_t11pop_discardEv(ptr noundef nonnull align 8 dereferenceable(144) %1) @@ -16559,7 +16560,7 @@ define linkonce_odr dso_local noundef zeroext i1 @_ZN3CFF16subr_subsetter_tI21cf ._crit_edge: ; preds = %.critedge67 %14 = getelementptr inbounds nuw i8, ptr %3, i64 2 store i8 1, ptr %14, align 1, !tbaa !581 - %wide.trip.count87 = zext i32 %6 to i64 + %wide.trip.count88 = zext i32 %6 to i64 br label %.lr.ph76 15: ; preds = %.lr.ph73, %.critedge67 @@ -16669,24 +16670,25 @@ _ZNK3CFF15parsed_cs_str_t6at_endEj.exit.thread: ; preds = %33, %_ZNK3CFF15pars 62: ; preds = %57, %61 %indvars.iv.next80 = add nsw i64 %indvars.iv79, -1 - %63 = icmp sgt i64 %indvars.iv79, 0 - br i1 %63, label %.lr.ph, label %.critedge67, !llvm.loop !587 + %63 = and i64 %indvars.iv.next80, 4294967295 + %exitcond.not = icmp eq i64 %63, 4294967295 + br i1 %exitcond.not, label %.critedge67, label %.lr.ph, !llvm.loop !587 .critedge67: ; preds = %.lr.ph, %62, %.critedge65, %20, %15, %27, %31, %42, %44 %.1 = phi i1 [ %.072, %44 ], [ %.072, %42 ], [ %.072, %31 ], [ %.072, %27 ], [ %.072, %15 ], [ %.072, %20 ], [ true, %.critedge65 ], [ true, %62 ], [ true, %.lr.ph ] %indvars.iv.next83 = add nuw nsw i64 %indvars.iv82, 1 %indvars.iv.next = add i32 %indvars.iv, 1 - %exitcond.not = icmp eq i64 %indvars.iv.next83, %wide.trip.count - br i1 %exitcond.not, label %._crit_edge, label %15, !llvm.loop !588 + %exitcond84.not = icmp eq i64 %indvars.iv.next83, %wide.trip.count + br i1 %exitcond84.not, label %._crit_edge, label %15, !llvm.loop !588 64: ; preds = %69 - %indvars.iv.next85 = add nuw nsw i64 %indvars.iv84, 1 - %exitcond88.not = icmp eq i64 %indvars.iv.next85, %wide.trip.count87 - br i1 %exitcond88.not, label %.critedge, label %.lr.ph76, !llvm.loop !589 + %indvars.iv.next86 = add nuw nsw i64 %indvars.iv85, 1 + %exitcond89.not = icmp eq i64 %indvars.iv.next86, %wide.trip.count88 + br i1 %exitcond89.not, label %.critedge, label %.lr.ph76, !llvm.loop !589 .lr.ph76: ; preds = %._crit_edge, %64 - %indvars.iv84 = phi i64 [ 0, %._crit_edge ], [ %indvars.iv.next85, %64 ] - %65 = getelementptr inbounds nuw %"struct.CFF::parsed_cs_op_t", ptr %8, i64 %indvars.iv84 + %indvars.iv85 = phi i64 [ 0, %._crit_edge ], [ %indvars.iv.next86, %64 ] + %65 = getelementptr inbounds nuw %"struct.CFF::parsed_cs_op_t", ptr %8, i64 %indvars.iv85 %66 = getelementptr inbounds nuw i8, ptr %65, i64 8 %67 = load i32, ptr %66, align 8, !tbaa !298 %68 = icmp eq i32 %67, 11 @@ -16703,8 +16705,8 @@ _ZNK3CFF15parsed_cs_str_t6at_endEj.exit.thread: ; preds = %33, %_ZNK3CFF15pars br label %.critedge .critedge: ; preds = %64, %.lr.ph76, %._crit_edge.thread, %73 - %.0.lcssa90 = phi i1 [ false, %._crit_edge.thread ], [ %.1, %73 ], [ %.1, %.lr.ph76 ], [ %.1, %64 ] - ret i1 %.0.lcssa90 + %.0.lcssa91 = phi i1 [ false, %._crit_edge.thread ], [ %.1, %73 ], [ %.1, %.lr.ph76 ], [ %.1, %64 ] + ret i1 %.0.lcssa91 } ; Function Attrs: mustprogress nounwind uwtable diff --git a/bench/hdf5/optimized/H5Centry.ll b/bench/hdf5/optimized/H5Centry.ll index 87e3e07a3dc..bd6e243c80a 100644 --- a/bench/hdf5/optimized/H5Centry.ll +++ b/bench/hdf5/optimized/H5Centry.ll @@ -915,8 +915,9 @@ define range(i32 -1, 1) i32 @H5C__flush_single_entry(ptr noundef %0, ptr noundef br i1 %445, label %448, label %446 446: ; preds = %443, %432 - %447 = icmp samesign ugt i64 %indvars.iv.i, 1 - br i1 %447, label %432, label %.sink.split, !llvm.loop !109 + %447 = and i64 %indvars.iv.next.i, 4294967295 + %exitcond.not.i = icmp eq i64 %447, 0 + br i1 %exitcond.not.i, label %.sink.split, label %432, !llvm.loop !109 448: ; preds = %443 %449 = load i64, ptr @H5E_CACHE_g, align 8, !tbaa !59 @@ -1699,8 +1700,9 @@ define internal fastcc range(i32 -1, 1) i32 @H5C__generate_image(ptr noundef %0, br i1 %357, label %360, label %358 358: ; preds = %355, %344 - %359 = icmp samesign ugt i64 %indvars.iv.i, 1 - br i1 %359, label %344, label %H5C__mark_flush_dep_serialized.exit.thread, !llvm.loop !126 + %359 = and i64 %indvars.iv.next.i, 4294967295 + %exitcond.not.i = icmp eq i64 %359, 0 + br i1 %exitcond.not.i, label %H5C__mark_flush_dep_serialized.exit.thread, label %344, !llvm.loop !126 360: ; preds = %355 %361 = load i64, ptr @H5E_CACHE_g, align 8, !tbaa !59 @@ -2979,8 +2981,9 @@ define range(i32 -1, 1) i32 @H5C_mark_entry_clean(ptr noundef %0) local_unnamed_ br i1 %127, label %130, label %128 128: ; preds = %125, %114 - %129 = icmp samesign ugt i64 %indvars.iv.i, 1 - br i1 %129, label %114, label %H5C__mark_flush_dep_clean.exit.thread, !llvm.loop !109 + %129 = and i64 %indvars.iv.next.i, 4294967295 + %exitcond.not.i = icmp eq i64 %129, 0 + br i1 %exitcond.not.i, label %H5C__mark_flush_dep_clean.exit.thread, label %114, !llvm.loop !109 130: ; preds = %125 %131 = load i64, ptr @H5E_CACHE_g, align 8, !tbaa !59 @@ -3179,8 +3182,9 @@ define range(i32 -1, 1) i32 @H5C_mark_entry_serialized(ptr noundef captures(none br i1 %45, label %48, label %46 46: ; preds = %43, %32 - %47 = icmp samesign ugt i64 %indvars.iv.i, 1 - br i1 %47, label %32, label %H5C__mark_flush_dep_serialized.exit.thread, !llvm.loop !126 + %47 = and i64 %indvars.iv.next.i, 4294967295 + %exitcond.not.i = icmp eq i64 %47, 0 + br i1 %exitcond.not.i, label %H5C__mark_flush_dep_serialized.exit.thread, label %32, !llvm.loop !126 48: ; preds = %43 %49 = load i64, ptr @H5E_CACHE_g, align 8, !tbaa !59 @@ -4536,8 +4540,9 @@ H5C__deserialize_prefetched_entry.exit.thread314: ; preds = %72 %98 = load ptr, ptr %85, align 8, !tbaa !158 %99 = getelementptr inbounds nuw i64, ptr %98, i64 %indvars.iv.next.i store i64 -1, ptr %99, align 8, !tbaa !59 - %100 = icmp samesign ugt i64 %indvars.iv.i, 1 - br i1 %100, label %87, label %._crit_edge.i, !llvm.loop !159 + %100 = and i64 %indvars.iv.next.i, 4294967295 + %exitcond.not.i = icmp eq i64 %100, 0 + br i1 %exitcond.not.i, label %._crit_edge.i, label %87, !llvm.loop !159 ._crit_edge.i: ; preds = %97, %79 %101 = getelementptr inbounds nuw i8, ptr %storemerge.lcssa349391, i64 184 @@ -6954,8 +6959,9 @@ H5C__mark_flush_dep_unserialized.exit: ; preds = %129, %.thread234, % br i1 %224, label %227, label %225 225: ; preds = %222, %211 - %226 = icmp samesign ugt i64 %indvars.iv.i224, 1 - br i1 %226, label %211, label %H5C__mark_flush_dep_clean.exit.thread, !llvm.loop !109 + %226 = and i64 %indvars.iv.next.i225, 4294967295 + %exitcond.not.i = icmp eq i64 %226, 0 + br i1 %exitcond.not.i, label %H5C__mark_flush_dep_clean.exit.thread, label %211, !llvm.loop !109 227: ; preds = %222 %228 = load i64, ptr @H5E_CACHE_g, align 8, !tbaa !59 diff --git a/bench/hdf5/optimized/h5tools.ll b/bench/hdf5/optimized/h5tools.ll index 3a809c078fa..0a3ab89a905 100644 --- a/bench/hdf5/optimized/h5tools.ll +++ b/bench/hdf5/optimized/h5tools.ll @@ -3962,31 +3962,29 @@ define void @init_acc_pos(i32 noundef %0, ptr noundef readonly captures(none) %1 .lr.ph26.preheader: ; preds = %6 %13 = add nsw i32 %0, -2 - %14 = zext i32 %13 to i64 - %15 = shl nuw nsw i64 %14, 3 - %16 = getelementptr i8, ptr %2, i64 %15 - %scevgep = getelementptr i8, ptr %16, i64 8 - %load_initial = load i64, ptr %scevgep, align 8 - %invariant.gep = getelementptr i8, ptr %1, i64 8 + %14 = zext nneg i32 %13 to i64 br label %.lr.ph26 .preheader: ; preds = %.lr.ph26, %6 - %17 = zext i32 %0 to i64 - %18 = shl nuw nsw i64 %17, 3 - tail call void @llvm.memset.p0.i64(ptr align 8 %3, i8 0, i64 %18, i1 false), !tbaa !7 + %15 = zext i32 %0 to i64 + %16 = shl nuw nsw i64 %15, 3 + tail call void @llvm.memset.p0.i64(ptr align 8 %3, i8 0, i64 %16, i1 false), !tbaa !7 br label %.loopexit .lr.ph26: ; preds = %.lr.ph26.preheader, %.lr.ph26 - %store_forwarded = phi i64 [ %load_initial, %.lr.ph26.preheader ], [ %20, %.lr.ph26 ] %indvars.iv = phi i64 [ %14, %.lr.ph26.preheader ], [ %indvars.iv.next, %.lr.ph26 ] - %gep = getelementptr i64, ptr %invariant.gep, i64 %indvars.iv - %19 = load i64, ptr %gep, align 8, !tbaa !7 - %20 = mul i64 %19, %store_forwarded - %21 = getelementptr inbounds nuw i64, ptr %2, i64 %indvars.iv - store i64 %20, ptr %21, align 8, !tbaa !7 + %17 = add nuw nsw i64 %indvars.iv, 1 + %18 = getelementptr inbounds nuw i64, ptr %2, i64 %17 + %19 = load i64, ptr %18, align 8, !tbaa !7 + %20 = getelementptr inbounds nuw i64, ptr %1, i64 %17 + %21 = load i64, ptr %20, align 8, !tbaa !7 + %22 = mul i64 %21, %19 + %23 = getelementptr inbounds nuw i64, ptr %2, i64 %indvars.iv + store i64 %22, ptr %23, align 8, !tbaa !7 %indvars.iv.next = add nsw i64 %indvars.iv, -1 - %.not = icmp eq i64 %indvars.iv, 0 - br i1 %.not, label %.preheader, label %.lr.ph26, !llvm.loop !63 + %24 = and i64 %indvars.iv.next, 4294967295 + %exitcond.not = icmp eq i64 %24, 4294967295 + br i1 %exitcond.not, label %.preheader, label %.lr.ph26, !llvm.loop !63 .loopexit: ; preds = %5, %.preheader ret void diff --git a/bench/hermes/optimized/Callable.ll b/bench/hermes/optimized/Callable.ll index 71609a66cab..f71849880f2 100644 --- a/bench/hermes/optimized/Callable.ll +++ b/bench/hermes/optimized/Callable.ll @@ -1138,16 +1138,17 @@ cond.end79: ; preds = %if.end.i.i.i.i.i.i. br label %for.body.i.i.i.i.i.i.i.i.i.i.i for.body.i.i.i.i.i.i.i.i.i.i.i: ; preds = %for.body.i.i.i.i.i.i.i.i.i.i.i, %cond.end79 + %__n.09.i.i.i.i.i.i.i.i.i.i.i = phi i64 [ %dec.i.i.i.i.i.i.i.i.i.i.i, %for.body.i.i.i.i.i.i.i.i.i.i.i ], [ 6, %cond.end79 ] %__result.addr.08.i.i.i.i.i.i.i.i.i.i.i = phi ptr [ %incdec.ptr1.i.i.i.i.i.i.i.i.i.i.i, %for.body.i.i.i.i.i.i.i.i.i.i.i ], [ %add.ptr.i.i.i.i.i.i, %cond.end79 ] - %__first.addr.07.i.i.i.i.i.i.i.i.i.i.i.idx = phi i64 [ %__first.addr.07.i.i.i.i.i.i.i.i.i.i.i.add, %for.body.i.i.i.i.i.i.i.i.i.i.i ], [ 0, %cond.end79 ] - %__first.addr.07.i.i.i.i.i.i.i.i.i.i.i.ptr = getelementptr inbounds nuw i8, ptr @.str.6, i64 %__first.addr.07.i.i.i.i.i.i.i.i.i.i.i.idx - %18 = load i8, ptr %__first.addr.07.i.i.i.i.i.i.i.i.i.i.i.ptr, align 1 + %__first.addr.07.i.i.i.i.i.i.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i, %for.body.i.i.i.i.i.i.i.i.i.i.i ], [ @.str.6, %cond.end79 ] + %18 = load i8, ptr %__first.addr.07.i.i.i.i.i.i.i.i.i.i.i, align 1 %conv.i.i.i.i.i.i.i.i.i.i.i = zext i8 %18 to i16 store i16 %conv.i.i.i.i.i.i.i.i.i.i.i, ptr %__result.addr.08.i.i.i.i.i.i.i.i.i.i.i, align 2 - %__first.addr.07.i.i.i.i.i.i.i.i.i.i.i.add = add nuw nsw i64 %__first.addr.07.i.i.i.i.i.i.i.i.i.i.i.idx, 1 + %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %__first.addr.07.i.i.i.i.i.i.i.i.i.i.i, i64 1 %incdec.ptr1.i.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %__result.addr.08.i.i.i.i.i.i.i.i.i.i.i, i64 2 - %exitcond.not = icmp eq i64 %__first.addr.07.i.i.i.i.i.i.i.i.i.i.i.idx, 5 - br i1 %exitcond.not, label %_ZN6hermes2vm12SmallXStringIDsLj32EEC2EN4llvh9StringRefE.exit, label %for.body.i.i.i.i.i.i.i.i.i.i.i, !llvm.loop !4 + %dec.i.i.i.i.i.i.i.i.i.i.i = add nsw i64 %__n.09.i.i.i.i.i.i.i.i.i.i.i, -1 + %exitcond.not.i.i.i.i.i.i.i.i.i.i.i = icmp eq i64 %dec.i.i.i.i.i.i.i.i.i.i.i, 0 + br i1 %exitcond.not.i.i.i.i.i.i.i.i.i.i.i, label %_ZN6hermes2vm12SmallXStringIDsLj32EEC2EN4llvh9StringRefE.exit, label %for.body.i.i.i.i.i.i.i.i.i.i.i, !llvm.loop !4 _ZN6hermes2vm12SmallXStringIDsLj32EEC2EN4llvh9StringRefE.exit: ; preds = %for.body.i.i.i.i.i.i.i.i.i.i.i %19 = extractvalue { ptr, i64 } %call83, 0 @@ -1404,9 +1405,9 @@ _ZN6hermes2vm10StringView14const_iteratorppEv.exit.i.i.i.i.i.i.i.i.i.i: ; preds %__first.sroa.5.1.i.i.i.i.i.i.i.i.i.i = phi ptr [ %incdec.ptr3.i.i.i.i.i.i.i.i.i.i.i, %if.else.i.i.i.i.i.i.i.i.i.i.i ], [ %__first.sroa.5.017.i.i.i.i.i.i.i.i.i.i, %if.then.i7.i.i.i.i.i.i.i.i.i.i ] store i16 %.sink.i.i.i.i.i.i.i.i.i.i, ptr %__result.addr.018.i.i.i.i.i.i.i.i.i.i, align 2 %incdec.ptr.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %__result.addr.018.i.i.i.i.i.i.i.i.i.i, i64 2 - %dec.i.i.i.i.i.i.i.i.i.i = add nsw i64 %__n.019.i.i.i.i.i.i.i.i.i.i, -1 - %cmp.i.i.i.i.i.i.i.i.i.i = icmp sgt i64 %__n.019.i.i.i.i.i.i.i.i.i.i, 1 - br i1 %cmp.i.i.i.i.i.i.i.i.i.i, label %for.body.i.i.i.i.i.i.i.i.i.i, label %_ZN4llvh23SmallVectorTemplateBaseIDsLb1EE18uninitialized_copyIN6hermes2vm10StringView14const_iteratorEPDsEEvT_S8_T0_.exit.loopexit.i.i, !llvm.loop !6 + %dec.i.i.i.i.i.i.i.i.i.i = add i64 %__n.019.i.i.i.i.i.i.i.i.i.i, -1 + %exitcond.not.i.i.i.i.i.i.i.i.i.i = icmp eq i64 %dec.i.i.i.i.i.i.i.i.i.i, 0 + br i1 %exitcond.not.i.i.i.i.i.i.i.i.i.i, label %_ZN4llvh23SmallVectorTemplateBaseIDsLb1EE18uninitialized_copyIN6hermes2vm10StringView14const_iteratorEPDsEEvT_S8_T0_.exit.loopexit.i.i, label %for.body.i.i.i.i.i.i.i.i.i.i, !llvm.loop !6 _ZN4llvh23SmallVectorTemplateBaseIDsLb1EE18uninitialized_copyIN6hermes2vm10StringView14const_iteratorEPDsEEvT_S8_T0_.exit.loopexit.i.i: ; preds = %_ZN6hermes2vm10StringView14const_iteratorppEv.exit.i.i.i.i.i.i.i.i.i.i %.pre11.i.i = load i32, ptr %Size.i.i.i.i.i.i, align 8 diff --git a/bench/hermes/optimized/ItaniumDemangle.ll b/bench/hermes/optimized/ItaniumDemangle.ll index 22083c53468..933f3212e44 100644 --- a/bench/hermes/optimized/ItaniumDemangle.ll +++ b/bench/hermes/optimized/ItaniumDemangle.ll @@ -17145,11 +17145,16 @@ entry: %sub.ptr.rhs.cast = ptrtoint ptr %1 to i64 %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast %cmp = icmp ugt i64 %sub.ptr.sub, 8 - br i1 %cmp, label %for.body, label %if.end + br i1 %cmp, label %for.body.preheader, label %if.end -for.body: ; preds = %entry, %for.body - %t.0.idx18 = phi i64 [ %incdec.ptr.add, %for.body ], [ 0, %entry ] - %e.017 = phi ptr [ %incdec.ptr25, %for.body ], [ %0, %entry ] +for.body.preheader: ; preds = %entry + %scevgep = getelementptr i8, ptr %0, i64 -2 + br label %for.body + +for.body: ; preds = %for.body.preheader, %for.body + %indvars.iv = phi ptr [ %scevgep, %for.body.preheader ], [ %scevgep19, %for.body ] + %t.0.idx18 = phi i64 [ 0, %for.body.preheader ], [ %incdec.ptr.add, %for.body ] + %e.017 = phi ptr [ %0, %for.body.preheader ], [ %incdec.ptr25, %for.body ] %t.0.ptr = getelementptr inbounds nuw i8, ptr %1, i64 %t.0.idx18 %3 = load i8, ptr %t.0.ptr, align 1 %conv = sext i8 %3 to i32 @@ -17170,6 +17175,7 @@ for.body: ; preds = %entry, %for.body %incdec.ptr.add = add nuw nsw i64 %t.0.idx18, 2 %incdec.ptr25 = getelementptr inbounds nuw i8, ptr %e.017, i64 1 %cmp5.not = icmp eq i64 %incdec.ptr.add, 8 + %scevgep19 = getelementptr i8, ptr %indvars.iv, i64 1 br i1 %cmp5.not, label %for.end, label %for.body, !llvm.loop !33 for.end: ; preds = %for.body @@ -17178,15 +17184,14 @@ for.end: ; preds = %for.body while.body.i.i: ; preds = %for.end, %while.body.i.i %__last.addr.011.i.i = phi ptr [ %__last.addr.0.i.i, %while.body.i.i ], [ %e.017, %for.end ] - %__first.addr.010.i.i.idx = phi i64 [ %__first.addr.010.i.i.add, %while.body.i.i ], [ 0, %for.end ] - %__first.addr.010.i.i.ptr = getelementptr inbounds nuw i8, ptr %0, i64 %__first.addr.010.i.i.idx - %5 = load i8, ptr %__first.addr.010.i.i.ptr, align 1 + %__first.addr.010.i.i = phi ptr [ %incdec.ptr2.i.i, %while.body.i.i ], [ %0, %for.end ] + %5 = load i8, ptr %__first.addr.010.i.i, align 1 %6 = load i8, ptr %__last.addr.011.i.i, align 1 - store i8 %6, ptr %__first.addr.010.i.i.ptr, align 1 + store i8 %6, ptr %__first.addr.010.i.i, align 1 store i8 %5, ptr %__last.addr.011.i.i, align 1 - %__first.addr.010.i.i.add = add nuw nsw i64 %__first.addr.010.i.i.idx, 1 + %incdec.ptr2.i.i = getelementptr inbounds nuw i8, ptr %__first.addr.010.i.i, i64 1 %__last.addr.0.i.i = getelementptr inbounds i8, ptr %__last.addr.011.i.i, i64 -1 - %exitcond.not = icmp eq i64 %__first.addr.010.i.i.add, 2 + %exitcond.not = icmp eq ptr %__last.addr.0.i.i, %indvars.iv br i1 %exitcond.not, label %_ZSt7reverseIPcEvT_S1_.exit, label %while.body.i.i, !llvm.loop !34 _ZSt7reverseIPcEvT_S1_.exit: ; preds = %while.body.i.i, %for.end @@ -17272,11 +17277,16 @@ entry: %sub.ptr.rhs.cast = ptrtoint ptr %1 to i64 %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast %cmp = icmp ugt i64 %sub.ptr.sub, 16 - br i1 %cmp, label %for.body, label %if.end + br i1 %cmp, label %for.body.preheader, label %if.end + +for.body.preheader: ; preds = %entry + %scevgep = getelementptr i8, ptr %0, i64 -4 + br label %for.body -for.body: ; preds = %entry, %for.body - %t.0.idx18 = phi i64 [ %incdec.ptr.add, %for.body ], [ 0, %entry ] - %e.017 = phi ptr [ %incdec.ptr25, %for.body ], [ %0, %entry ] +for.body: ; preds = %for.body.preheader, %for.body + %indvars.iv = phi ptr [ %scevgep, %for.body.preheader ], [ %scevgep19, %for.body ] + %t.0.idx18 = phi i64 [ 0, %for.body.preheader ], [ %incdec.ptr.add, %for.body ] + %e.017 = phi ptr [ %0, %for.body.preheader ], [ %incdec.ptr25, %for.body ] %t.0.ptr = getelementptr inbounds nuw i8, ptr %1, i64 %t.0.idx18 %3 = load i8, ptr %t.0.ptr, align 1 %conv = sext i8 %3 to i32 @@ -17297,6 +17307,7 @@ for.body: ; preds = %entry, %for.body %incdec.ptr.add = add nuw nsw i64 %t.0.idx18, 2 %incdec.ptr25 = getelementptr inbounds nuw i8, ptr %e.017, i64 1 %cmp5.not = icmp eq i64 %incdec.ptr.add, 16 + %scevgep19 = getelementptr i8, ptr %indvars.iv, i64 1 br i1 %cmp5.not, label %for.end, label %for.body, !llvm.loop !35 for.end: ; preds = %for.body @@ -17305,15 +17316,14 @@ for.end: ; preds = %for.body while.body.i.i: ; preds = %for.end, %while.body.i.i %__last.addr.011.i.i = phi ptr [ %__last.addr.0.i.i, %while.body.i.i ], [ %e.017, %for.end ] - %__first.addr.010.i.i.idx = phi i64 [ %__first.addr.010.i.i.add, %while.body.i.i ], [ 0, %for.end ] - %__first.addr.010.i.i.ptr = getelementptr inbounds nuw i8, ptr %0, i64 %__first.addr.010.i.i.idx - %5 = load i8, ptr %__first.addr.010.i.i.ptr, align 1 + %__first.addr.010.i.i = phi ptr [ %incdec.ptr2.i.i, %while.body.i.i ], [ %0, %for.end ] + %5 = load i8, ptr %__first.addr.010.i.i, align 1 %6 = load i8, ptr %__last.addr.011.i.i, align 1 - store i8 %6, ptr %__first.addr.010.i.i.ptr, align 1 + store i8 %6, ptr %__first.addr.010.i.i, align 1 store i8 %5, ptr %__last.addr.011.i.i, align 1 - %__first.addr.010.i.i.add = add nuw nsw i64 %__first.addr.010.i.i.idx, 1 + %incdec.ptr2.i.i = getelementptr inbounds nuw i8, ptr %__first.addr.010.i.i, i64 1 %__last.addr.0.i.i = getelementptr inbounds i8, ptr %__last.addr.011.i.i, i64 -1 - %exitcond.not = icmp eq i64 %__first.addr.010.i.i.add, 4 + %exitcond.not = icmp eq ptr %__last.addr.0.i.i, %indvars.iv br i1 %exitcond.not, label %_ZSt7reverseIPcEvT_S1_.exit, label %while.body.i.i, !llvm.loop !34 _ZSt7reverseIPcEvT_S1_.exit: ; preds = %while.body.i.i, %for.end @@ -17392,11 +17402,16 @@ entry: %sub.ptr.rhs.cast = ptrtoint ptr %1 to i64 %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast %cmp = icmp ugt i64 %sub.ptr.sub, 20 - br i1 %cmp, label %for.body, label %if.end + br i1 %cmp, label %for.body.preheader, label %if.end + +for.body.preheader: ; preds = %entry + %scevgep = getelementptr i8, ptr %0, i64 -5 + br label %for.body -for.body: ; preds = %entry, %for.body - %t.0.idx18 = phi i64 [ %incdec.ptr.add, %for.body ], [ 0, %entry ] - %e.017 = phi ptr [ %incdec.ptr25, %for.body ], [ %0, %entry ] +for.body: ; preds = %for.body.preheader, %for.body + %indvars.iv = phi ptr [ %scevgep, %for.body.preheader ], [ %scevgep19, %for.body ] + %t.0.idx18 = phi i64 [ 0, %for.body.preheader ], [ %incdec.ptr.add, %for.body ] + %e.017 = phi ptr [ %0, %for.body.preheader ], [ %incdec.ptr25, %for.body ] %t.0.ptr = getelementptr inbounds nuw i8, ptr %1, i64 %t.0.idx18 %3 = load i8, ptr %t.0.ptr, align 1 %conv = sext i8 %3 to i32 @@ -17417,6 +17432,7 @@ for.body: ; preds = %entry, %for.body %incdec.ptr.add = add nuw nsw i64 %t.0.idx18, 2 %incdec.ptr25 = getelementptr inbounds nuw i8, ptr %e.017, i64 1 %cmp5.not = icmp eq i64 %incdec.ptr.add, 20 + %scevgep19 = getelementptr i8, ptr %indvars.iv, i64 1 br i1 %cmp5.not, label %for.end, label %for.body, !llvm.loop !36 for.end: ; preds = %for.body @@ -17425,15 +17441,14 @@ for.end: ; preds = %for.body while.body.i.i: ; preds = %for.end, %while.body.i.i %__last.addr.011.i.i = phi ptr [ %__last.addr.0.i.i, %while.body.i.i ], [ %e.017, %for.end ] - %__first.addr.010.i.i.idx = phi i64 [ %__first.addr.010.i.i.add, %while.body.i.i ], [ 0, %for.end ] - %__first.addr.010.i.i.ptr = getelementptr inbounds nuw i8, ptr %0, i64 %__first.addr.010.i.i.idx - %5 = load i8, ptr %__first.addr.010.i.i.ptr, align 1 + %__first.addr.010.i.i = phi ptr [ %incdec.ptr2.i.i, %while.body.i.i ], [ %0, %for.end ] + %5 = load i8, ptr %__first.addr.010.i.i, align 1 %6 = load i8, ptr %__last.addr.011.i.i, align 1 - store i8 %6, ptr %__first.addr.010.i.i.ptr, align 1 + store i8 %6, ptr %__first.addr.010.i.i, align 1 store i8 %5, ptr %__last.addr.011.i.i, align 1 - %__first.addr.010.i.i.add = add nuw nsw i64 %__first.addr.010.i.i.idx, 1 + %incdec.ptr2.i.i = getelementptr inbounds nuw i8, ptr %__first.addr.010.i.i, i64 1 %__last.addr.0.i.i = getelementptr inbounds i8, ptr %__last.addr.011.i.i, i64 -1 - %exitcond.not = icmp eq i64 %__first.addr.010.i.i.add, 5 + %exitcond.not = icmp eq ptr %__last.addr.0.i.i, %indvars.iv br i1 %exitcond.not, label %_ZSt7reverseIPcEvT_S1_.exit, label %while.body.i.i, !llvm.loop !34 _ZSt7reverseIPcEvT_S1_.exit: ; preds = %while.body.i.i, %for.end @@ -25414,8 +25429,8 @@ if.end8.i.i.i.i: ; preds = %if.end4.i.i.i.i if.end12.i.i.i.i: ; preds = %if.end8.i.i.i.i %incdec.ptr13.i.i.i.i = getelementptr inbounds nuw i8, ptr %__first.addr.049.i.i.i.i, i64 32 %dec.i.i.i.i = add nsw i64 %__trip_count.050.i.i.i.i, -1 - %cmp.i.i.i.i = icmp sgt i64 %__trip_count.050.i.i.i.i, 1 - br i1 %cmp.i.i.i.i, label %for.body.i.i.i.i, label %for.end.loopexit.i.i.i.i, !llvm.loop !38 + %exitcond.not.i.i.i.i = icmp eq i64 %dec.i.i.i.i, 0 + br i1 %exitcond.not.i.i.i.i, label %for.end.loopexit.i.i.i.i, label %for.body.i.i.i.i, !llvm.loop !38 for.end.loopexit.i.i.i.i: ; preds = %if.end12.i.i.i.i %9 = and i64 %Data_.coerce1, 3 @@ -25526,8 +25541,8 @@ if.end8.i.i.i.i41: ; preds = %if.end4.i.i.i.i37 if.end12.i.i.i.i45: ; preds = %if.end8.i.i.i.i41 %incdec.ptr13.i.i.i.i46 = getelementptr inbounds nuw i8, ptr %__first.addr.049.i.i.i.i31, i64 32 %dec.i.i.i.i47 = add nsw i64 %__trip_count.050.i.i.i.i30, -1 - %cmp.i.i.i.i48 = icmp sgt i64 %__trip_count.050.i.i.i.i30, 1 - br i1 %cmp.i.i.i.i48, label %for.body.i.i.i.i29, label %for.end.loopexit.i.i.i.i49, !llvm.loop !39 + %exitcond.not.i.i.i.i48 = icmp eq i64 %dec.i.i.i.i47, 0 + br i1 %exitcond.not.i.i.i.i48, label %for.end.loopexit.i.i.i.i49, label %for.body.i.i.i.i29, !llvm.loop !39 for.end.loopexit.i.i.i.i49: ; preds = %if.end12.i.i.i.i45 %25 = and i64 %Data_.coerce1, 3 @@ -25638,8 +25653,8 @@ if.end8.i.i.i.i92: ; preds = %if.end4.i.i.i.i88 if.end12.i.i.i.i96: ; preds = %if.end8.i.i.i.i92 %incdec.ptr13.i.i.i.i97 = getelementptr inbounds nuw i8, ptr %__first.addr.049.i.i.i.i82, i64 32 %dec.i.i.i.i98 = add nsw i64 %__trip_count.050.i.i.i.i81, -1 - %cmp.i.i.i.i99 = icmp sgt i64 %__trip_count.050.i.i.i.i81, 1 - br i1 %cmp.i.i.i.i99, label %for.body.i.i.i.i80, label %for.end.loopexit.i.i.i.i100, !llvm.loop !40 + %exitcond.not.i.i.i.i99 = icmp eq i64 %dec.i.i.i.i98, 0 + br i1 %exitcond.not.i.i.i.i99, label %for.end.loopexit.i.i.i.i100, label %for.body.i.i.i.i80, !llvm.loop !40 for.end.loopexit.i.i.i.i100: ; preds = %if.end12.i.i.i.i96 %41 = and i64 %Data_.coerce1, 3 diff --git a/bench/hermes/optimized/MicrosoftDemangle.ll b/bench/hermes/optimized/MicrosoftDemangle.ll index 78c53515d30..e7622ae80b4 100644 --- a/bench/hermes/optimized/MicrosoftDemangle.ll +++ b/bench/hermes/optimized/MicrosoftDemangle.ll @@ -6329,23 +6329,26 @@ for.cond.preheader.i: ; preds = %for.end.i, %if.end. %C.addr.038.i = phi i32 [ %C, %if.end.i ], [ %div9.i, %for.end.i ] %sext.i = shl i64 %Pos.039.i, 32 %60 = ashr exact i64 %sext.i, 32 + %61 = trunc i64 %Pos.039.i to i32 + %62 = add i32 %61, -2 br label %for.body.i for.body.i: ; preds = %for.body.i, %for.cond.preheader.i %indvars.iv.i = phi i64 [ %60, %for.cond.preheader.i ], [ %indvars.iv.next.i, %for.body.i ] - %cmp2.i = phi i1 [ true, %for.cond.preheader.i ], [ false, %for.body.i ] %C.addr.135.i = phi i32 [ %C.addr.038.i, %for.cond.preheader.i ], [ %div9.i, %for.body.i ] %indvars.iv.next.i = add nsw i64 %indvars.iv.i, -1 %arrayidx.i = getelementptr inbounds [17 x i8], ptr %TempBuffer.i, i64 0, i64 %indvars.iv.i - %61 = trunc i32 %C.addr.135.i to i8 - %conv.i = and i8 %61, 15 + %63 = trunc i32 %C.addr.135.i to i8 + %conv.i = and i8 %63, 15 %cmp.i.i253 = icmp samesign ult i8 %conv.i, 10 %add.i.i254 = or disjoint i8 %conv.i, 48 %sub.i.i = add nuw nsw i8 %conv.i, 55 %cond.i.i = select i1 %cmp.i.i253, i8 %add.i.i254, i8 %sub.i.i store i8 %cond.i.i, ptr %arrayidx.i, align 1 %div9.i = lshr i32 %C.addr.135.i, 4 - br i1 %cmp2.i, label %for.body.i, label %for.end.i, !llvm.loop !16 + %lftr.wideiv = trunc i64 %indvars.iv.next.i to i32 + %exitcond.not = icmp eq i32 %62, %lftr.wideiv + br i1 %exitcond.not, label %for.end.i, label %for.body.i, !llvm.loop !16 for.end.i: ; preds = %for.body.i %sext41.i = shl i64 %indvars.iv.next.i, 32 @@ -6369,16 +6372,16 @@ while.end.i: ; preds = %for.end.i if.end.i.i17.i: ; preds = %while.end.i %CurrentPosition.i.i.i18.i = getelementptr inbounds nuw i8, ptr %OS, i64 8 - %62 = load i64, ptr %CurrentPosition.i.i.i18.i, align 8 - %add.i.i.i19.i = add i64 %62, %call.i11.i + %64 = load i64, ptr %CurrentPosition.i.i.i18.i, align 8 + %add.i.i.i19.i = add i64 %64, %call.i11.i %BufferCapacity.i.i.i20.i = getelementptr inbounds nuw i8, ptr %OS, i64 16 - %63 = load i64, ptr %BufferCapacity.i.i.i20.i, align 8 - %cmp.not.i.i.i21.i = icmp ult i64 %add.i.i.i19.i, %63 + %65 = load i64, ptr %BufferCapacity.i.i.i20.i, align 8 + %cmp.not.i.i.i21.i = icmp ult i64 %add.i.i.i19.i, %65 %.pre.i.i22.i = load ptr, ptr %OS, align 8 br i1 %cmp.not.i.i.i21.i, label %_ZN12OutputStream4growEm.exit.i.i30.i, label %if.then.i.i.i23.i if.then.i.i.i23.i: ; preds = %if.end.i.i17.i - %mul.i.i.i24.i = shl i64 %63, 1 + %mul.i.i.i24.i = shl i64 %65, 1 %spec.store.select.i.i.i25.i = tail call i64 @llvm.umax.i64(i64 %mul.i.i.i24.i, i64 %add.i.i.i19.i) store i64 %spec.store.select.i.i.i25.i, ptr %BufferCapacity.i.i.i20.i, align 8 %call.i.i.i26.i = tail call ptr @realloc(ptr noundef %.pre.i.i22.i, i64 noundef %spec.store.select.i.i.i25.i) #26 @@ -6395,12 +6398,12 @@ if.then15.i.i.i33.i: ; preds = %if.then.i.i.i23.i unreachable _ZN12OutputStream4growEm.exit.i.i30.i: ; preds = %if.then.i._ZN12OutputStream4growEm.exit_crit_edge.i.i28.i, %if.end.i.i17.i - %64 = phi i64 [ %62, %if.end.i.i17.i ], [ %.pre5.i.i29.i, %if.then.i._ZN12OutputStream4growEm.exit_crit_edge.i.i28.i ] - %65 = phi ptr [ %.pre.i.i22.i, %if.end.i.i17.i ], [ %call.i.i.i26.i, %if.then.i._ZN12OutputStream4growEm.exit_crit_edge.i.i28.i ] - %add.ptr.i.i31.i = getelementptr inbounds i8, ptr %65, i64 %64 + %66 = phi i64 [ %64, %if.end.i.i17.i ], [ %.pre5.i.i29.i, %if.then.i._ZN12OutputStream4growEm.exit_crit_edge.i.i28.i ] + %67 = phi ptr [ %.pre.i.i22.i, %if.end.i.i17.i ], [ %call.i.i.i26.i, %if.then.i._ZN12OutputStream4growEm.exit_crit_edge.i.i28.i ] + %add.ptr.i.i31.i = getelementptr inbounds i8, ptr %67, i64 %66 call void @llvm.memcpy.p0.p0.i64(ptr align 1 %add.ptr.i.i31.i, ptr nonnull align 1 %arrayidx8.i.le, i64 %call.i11.i, i1 false) - %66 = load i64, ptr %CurrentPosition.i.i.i18.i, align 8 - %add.i.i32.i = add i64 %66, %call.i11.i + %68 = load i64, ptr %CurrentPosition.i.i.i18.i, align 8 + %add.i.i32.i = add i64 %68, %call.i11.i store i64 %add.i.i32.i, ptr %CurrentPosition.i.i.i18.i, align 8 br label %_ZL9outputHexR12OutputStreamj.exit diff --git a/bench/hermes/optimized/RegexParser.ll b/bench/hermes/optimized/RegexParser.ll index 7f8ac358b9e..c2fc8f7094b 100644 --- a/bench/hermes/optimized/RegexParser.ll +++ b/bench/hermes/optimized/RegexParser.ll @@ -1294,8 +1294,8 @@ _ZNSt20back_insert_iteratorISt6vectorIPN6hermes5regex4NodeESaIS4_EEEaSEOS4_.exit %10 = phi ptr [ %incdec.ptr.i.i.i.i.i.i.i.i, %if.then.i.i.i.i.i.i.i.i ], [ %incdec.ptr.i.i.i.i.i.i.i.i.i, %_ZNSt6vectorIPN6hermes5regex4NodeESaIS3_EE17_M_realloc_insertIJS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_.exit.i.i.i.i.i.i.i.i ] %incdec.ptr.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %__first.addr.05.i.i.i.i.i, i64 8 %dec.i.i.i.i.i = add nsw i64 %__n.06.i.i.i.i.i, -1 - %cmp.i.i.i.i.i = icmp sgt i64 %__n.06.i.i.i.i.i, 1 - br i1 %cmp.i.i.i.i.i, label %for.body.i.i.i.i.i, label %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPPN6hermes5regex4NodeESt6vectorIS5_SaIS5_EEEESt20back_insert_iteratorIS9_EET0_T_SE_SD_.exit.loopexit, !llvm.loop !28 + %exitcond.not.i.i.i.i.i = icmp eq i64 %dec.i.i.i.i.i, 0 + br i1 %exitcond.not.i.i.i.i.i, label %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPPN6hermes5regex4NodeESt6vectorIS5_SaIS5_EEEESt20back_insert_iteratorIS9_EET0_T_SE_SD_.exit.loopexit, label %for.body.i.i.i.i.i, !llvm.loop !28 _ZSt4moveIN9__gnu_cxx17__normal_iteratorIPPN6hermes5regex4NodeESt6vectorIS5_SaIS5_EEEESt20back_insert_iteratorIS9_EET0_T_SE_SD_.exit.loopexit: ; preds = %_ZNSt20back_insert_iteratorISt6vectorIPN6hermes5regex4NodeESaIS4_EEEaSEOS4_.exit.i.i.i.i.i %.pre = load ptr, ptr %_M_finish.i, align 8 @@ -14078,55 +14078,56 @@ entry: %Size.i = getelementptr inbounds nuw i8, ptr %this, i64 16 %1 = load i32, ptr %Size.i, align 8 %conv.i = zext i32 %1 to i64 - %add.ptr.i = getelementptr inbounds nuw i32, ptr %0, i64 %conv.i - %sub.ptr.lhs.cast.i.i.i.i = ptrtoint ptr %add.ptr.i to i64 + %add.ptr.i.idx = shl nuw nsw i64 %conv.i, 2 + %add.ptr.i = getelementptr inbounds nuw i8, ptr %0, i64 %add.ptr.i.idx %cmp54.i.i.i.i.not = icmp ult i32 %1, 4 br i1 %cmp54.i.i.i.i.not, label %for.end.i.i.i.i, label %for.body.i.i.i.i.preheader for.body.i.i.i.i.preheader: ; preds = %entry %shr.i.i.i.i = lshr i64 %conv.i, 2 + %2 = shl nuw nsw i64 %shr.i.i.i.i, 4 + %scevgep = getelementptr i8, ptr %0, i64 %2 br label %for.body.i.i.i.i for.body.i.i.i.i: ; preds = %for.body.i.i.i.i.preheader, %if.end11.i.i.i.i %__trip_count.056.i.i.i.i = phi i64 [ %dec.i.i.i.i, %if.end11.i.i.i.i ], [ %shr.i.i.i.i, %for.body.i.i.i.i.preheader ] %__first.addr.055.i.i.i.i = phi ptr [ %incdec.ptr12.i.i.i.i, %if.end11.i.i.i.i ], [ %0, %for.body.i.i.i.i.preheader ] - %2 = load i32, ptr %__first.addr.055.i.i.i.i, align 4 - %cmp.i8 = icmp ult i32 %2, 128 + %3 = load i32, ptr %__first.addr.055.i.i.i.i, align 4 + %cmp.i8 = icmp ult i32 %3, 128 br i1 %cmp.i8, label %if.end.i.i.i.i, label %_ZSt6all_ofIPKjPFbjEEbT_S4_T0_.exit if.end.i.i.i.i: ; preds = %for.body.i.i.i.i %incdec.ptr.i.i.i.i = getelementptr inbounds nuw i8, ptr %__first.addr.055.i.i.i.i, i64 4 - %3 = load i32, ptr %incdec.ptr.i.i.i.i, align 4 - %cmp.i7 = icmp ult i32 %3, 128 + %4 = load i32, ptr %incdec.ptr.i.i.i.i, align 4 + %cmp.i7 = icmp ult i32 %4, 128 br i1 %cmp.i7, label %if.end3.i.i.i.i, label %_ZSt6all_ofIPKjPFbjEEbT_S4_T0_.exit.loopexit.split.loop.exit if.end3.i.i.i.i: ; preds = %if.end.i.i.i.i %incdec.ptr4.i.i.i.i = getelementptr inbounds nuw i8, ptr %__first.addr.055.i.i.i.i, i64 8 - %4 = load i32, ptr %incdec.ptr4.i.i.i.i, align 4 - %cmp.i6 = icmp ult i32 %4, 128 + %5 = load i32, ptr %incdec.ptr4.i.i.i.i, align 4 + %cmp.i6 = icmp ult i32 %5, 128 br i1 %cmp.i6, label %if.end7.i.i.i.i, label %_ZSt6all_ofIPKjPFbjEEbT_S4_T0_.exit.loopexit.split.loop.exit21 if.end7.i.i.i.i: ; preds = %if.end3.i.i.i.i %incdec.ptr8.i.i.i.i = getelementptr inbounds nuw i8, ptr %__first.addr.055.i.i.i.i, i64 12 - %5 = load i32, ptr %incdec.ptr8.i.i.i.i, align 4 - %cmp.i5 = icmp ult i32 %5, 128 + %6 = load i32, ptr %incdec.ptr8.i.i.i.i, align 4 + %cmp.i5 = icmp ult i32 %6, 128 br i1 %cmp.i5, label %if.end11.i.i.i.i, label %_ZSt6all_ofIPKjPFbjEEbT_S4_T0_.exit.loopexit.split.loop.exit23 if.end11.i.i.i.i: ; preds = %if.end7.i.i.i.i %incdec.ptr12.i.i.i.i = getelementptr inbounds nuw i8, ptr %__first.addr.055.i.i.i.i, i64 16 %dec.i.i.i.i = add nsw i64 %__trip_count.056.i.i.i.i, -1 - %cmp.i.i.i.i = icmp sgt i64 %__trip_count.056.i.i.i.i, 1 - br i1 %cmp.i.i.i.i, label %for.body.i.i.i.i, label %for.end.loopexit.i.i.i.i, !llvm.loop !200 + %exitcond.not.i.i.i.i = icmp eq i64 %dec.i.i.i.i, 0 + br i1 %exitcond.not.i.i.i.i, label %for.end.loopexit.i.i.i.i, label %for.body.i.i.i.i, !llvm.loop !200 for.end.loopexit.i.i.i.i: ; preds = %if.end11.i.i.i.i - %.pre.i.i.i.i = ptrtoint ptr %incdec.ptr12.i.i.i.i to i64 - %.pre61.i.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i, %.pre.i.i.i.i - %6 = ashr exact i64 %.pre61.i.i.i.i, 2 + %gepdiff = sub nsw i64 %add.ptr.i.idx, %2 + %7 = ashr exact i64 %gepdiff, 2 br label %for.end.i.i.i.i for.end.i.i.i.i: ; preds = %for.end.loopexit.i.i.i.i, %entry - %sub.ptr.sub15.pre-phi.i.i.i.i = phi i64 [ %6, %for.end.loopexit.i.i.i.i ], [ %conv.i, %entry ] - %__first.addr.0.lcssa.i.i.i.i = phi ptr [ %incdec.ptr12.i.i.i.i, %for.end.loopexit.i.i.i.i ], [ %0, %entry ] + %sub.ptr.sub15.pre-phi.i.i.i.i = phi i64 [ %7, %for.end.loopexit.i.i.i.i ], [ %conv.i, %entry ] + %__first.addr.0.lcssa.i.i.i.i = phi ptr [ %scevgep, %for.end.loopexit.i.i.i.i ], [ %0, %entry ] switch i64 %sub.ptr.sub15.pre-phi.i.i.i.i, label %sw.default.i.i.i.i [ i64 3, label %sw.bb.i.i.i.i i64 2, label %sw.bb21.i.i.i.i @@ -14134,8 +14135,8 @@ for.end.i.i.i.i: ; preds = %for.end.loopexit.i. ] sw.bb.i.i.i.i: ; preds = %for.end.i.i.i.i - %7 = load i32, ptr %__first.addr.0.lcssa.i.i.i.i, align 4 - %cmp.i4 = icmp ult i32 %7, 128 + %8 = load i32, ptr %__first.addr.0.lcssa.i.i.i.i, align 4 + %cmp.i4 = icmp ult i32 %8, 128 br i1 %cmp.i4, label %if.end19.i.i.i.i, label %_ZSt6all_ofIPKjPFbjEEbT_S4_T0_.exit if.end19.i.i.i.i: ; preds = %sw.bb.i.i.i.i @@ -14144,8 +14145,8 @@ if.end19.i.i.i.i: ; preds = %sw.bb.i.i.i.i sw.bb21.i.i.i.i: ; preds = %if.end19.i.i.i.i, %for.end.i.i.i.i %__first.addr.1.i.i.i.i = phi ptr [ %incdec.ptr20.i.i.i.i, %if.end19.i.i.i.i ], [ %__first.addr.0.lcssa.i.i.i.i, %for.end.i.i.i.i ] - %8 = load i32, ptr %__first.addr.1.i.i.i.i, align 4 - %cmp.i3 = icmp ult i32 %8, 128 + %9 = load i32, ptr %__first.addr.1.i.i.i.i, align 4 + %cmp.i3 = icmp ult i32 %9, 128 br i1 %cmp.i3, label %if.end24.i.i.i.i, label %_ZSt6all_ofIPKjPFbjEEbT_S4_T0_.exit if.end24.i.i.i.i: ; preds = %sw.bb21.i.i.i.i @@ -14154,8 +14155,8 @@ if.end24.i.i.i.i: ; preds = %sw.bb21.i.i.i.i sw.bb26.i.i.i.i: ; preds = %if.end24.i.i.i.i, %for.end.i.i.i.i %__first.addr.2.i.i.i.i = phi ptr [ %incdec.ptr25.i.i.i.i, %if.end24.i.i.i.i ], [ %__first.addr.0.lcssa.i.i.i.i, %for.end.i.i.i.i ] - %9 = load i32, ptr %__first.addr.2.i.i.i.i, align 4 - %cmp.i2 = icmp ult i32 %9, 128 + %10 = load i32, ptr %__first.addr.2.i.i.i.i, align 4 + %cmp.i2 = icmp ult i32 %10, 128 br i1 %cmp.i2, label %sw.default.i.i.i.i, label %_ZSt6all_ofIPKjPFbjEEbT_S4_T0_.exit sw.default.i.i.i.i: ; preds = %sw.bb26.i.i.i.i, %for.end.i.i.i.i @@ -14269,8 +14270,8 @@ if.end7.i.i.i.i.i: ; preds = %if.end3.i.i.i.i.i if.end11.i.i.i.i.i: ; preds = %if.end7.i.i.i.i.i %incdec.ptr12.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %__first.addr.055.i.i.i.i.i, i64 16 %dec.i.i.i.i.i = add nsw i64 %__trip_count.056.i.i.i.i.i, -1 - %cmp.i.i.i.i.i = icmp sgt i64 %__trip_count.056.i.i.i.i.i, 1 - br i1 %cmp.i.i.i.i.i, label %for.body.i.i.i.i.i, label %for.end.loopexit.i.i.i.i.i, !llvm.loop !200 + %exitcond.not.i.i.i.i.i = icmp eq i64 %dec.i.i.i.i.i, 0 + br i1 %exitcond.not.i.i.i.i.i, label %for.end.loopexit.i.i.i.i.i, label %for.body.i.i.i.i.i, !llvm.loop !200 for.end.loopexit.i.i.i.i.i: ; preds = %if.end11.i.i.i.i.i %gepdiff = sub i64 %add.ptr.i.i.i.i.i.i.idx, %2 @@ -14369,8 +14370,8 @@ if.end7.i.i.i.i.i36: ; preds = %if.end3.i.i.i.i.i34 if.end11.i.i.i.i.i39: ; preds = %if.end7.i.i.i.i.i36 %incdec.ptr12.i.i.i.i.i40 = getelementptr inbounds nuw i8, ptr %__first.addr.049.i.i.i.i.i, i64 16 %dec.i.i.i.i.i41 = add nsw i64 %__trip_count.050.i.i.i.i.i, -1 - %cmp.i.i.i.i.i42 = icmp sgt i64 %__trip_count.050.i.i.i.i.i, 1 - br i1 %cmp.i.i.i.i.i42, label %for.body.i.i.i.i.i29, label %for.end.loopexit.i.i.i.i.i43, !llvm.loop !202 + %exitcond.not.i.i.i.i.i42 = icmp eq i64 %dec.i.i.i.i.i41, 0 + br i1 %exitcond.not.i.i.i.i.i42, label %for.end.loopexit.i.i.i.i.i43, label %for.body.i.i.i.i.i29, !llvm.loop !202 for.end.loopexit.i.i.i.i.i43: ; preds = %if.end11.i.i.i.i.i39 %.pre.i.i.i.i.i44 = ptrtoint ptr %incdec.ptr12.i.i.i.i.i40 to i64 diff --git a/bench/jq/optimized/decNumber.ll b/bench/jq/optimized/decNumber.ll index 2f9c17446e7..4dfda0961d1 100644 --- a/bench/jq/optimized/decNumber.ll +++ b/bench/jq/optimized/decNumber.ll @@ -523,13 +523,13 @@ define internal fastcc void @decToString(ptr noundef readonly captures(none) %0, %37 = getelementptr inbounds nuw i8, ptr %.2278, i64 3 %38 = load i16, ptr %.ptr, align 2, !tbaa !11 %39 = icmp eq i16 %38, 0 - %.pr.pre420 = load i32, ptr %0, align 4, !tbaa !10 - %40 = icmp eq i32 %.pr.pre420, 1 - %or.cond450 = select i1 %39, i1 %40, i1 false - br i1 %or.cond450, label %290, label %thread-pre-split + %.pr.pre422 = load i32, ptr %0, align 4, !tbaa !10 + %40 = icmp eq i32 %.pr.pre422, 1 + %or.cond451 = select i1 %39, i1 %40, i1 false + br i1 %or.cond451, label %290, label %thread-pre-split thread-pre-split: ; preds = %36, %.thread-pre-split_crit_edge - %41 = phi i32 [ %.pr.pre, %.thread-pre-split_crit_edge ], [ %.pr.pre420, %36 ] + %41 = phi i32 [ %.pr.pre, %.thread-pre-split_crit_edge ], [ %.pr.pre422, %36 ] %.1277 = phi ptr [ %.0276, %.thread-pre-split_crit_edge ], [ %37, %36 ] %42 = icmp slt i32 %41, 50 br i1 %42, label %43, label %48 @@ -539,7 +539,7 @@ thread-pre-split: ; preds = %36, %.thread-pre-sp %45 = getelementptr inbounds [50 x i8], ptr @d2utable, i64 0, i64 %44 %46 = load i8, ptr %45, align 1, !tbaa !19 %47 = zext i8 %46 to i32 - %.pre422 = add nsw i32 %41, 2 + %.pre424 = add nsw i32 %41, 2 br label %51 48: ; preds = %thread-pre-split @@ -548,7 +548,7 @@ thread-pre-split: ; preds = %36, %.thread-pre-sp br label %51 51: ; preds = %48, %43 - %.pre-phi = phi i32 [ %49, %48 ], [ %.pre422, %43 ] + %.pre-phi = phi i32 [ %49, %48 ], [ %.pre424, %43 ] %52 = phi i32 [ %50, %48 ], [ %47, %43 ] %.neg = mul nsw i32 %52, -3 %53 = add i32 %.pre-phi, %.neg @@ -574,11 +574,11 @@ thread-pre-split: ; preds = %36, %.thread-pre-sp br label %.lr.ph403 .lr.ph403: ; preds = %.lr.ph403.preheader, %85 - %indvars.iv417 = phi i64 [ %58, %.lr.ph403.preheader ], [ %indvars.iv.next418, %85 ] + %indvars.iv418 = phi i64 [ %58, %.lr.ph403.preheader ], [ %indvars.iv.next419, %85 ] %.0264402 = phi i32 [ %57, %.lr.ph403.preheader ], [ %.5, %85 ] %.4280401 = phi ptr [ %.3279407, %.lr.ph403.preheader ], [ %86, %85 ] store i8 48, ptr %.4280401, align 1, !tbaa !19 - %59 = getelementptr inbounds nuw [10 x i32], ptr @DECPOWERS, i64 0, i64 %indvars.iv417 + %59 = getelementptr inbounds nuw [10 x i32], ptr @DECPOWERS, i64 0, i64 %indvars.iv418 %60 = load i32, ptr %59, align 4, !tbaa !16 %61 = shl i32 %60, 1 %62 = icmp ugt i32 %.0264402, %61 @@ -631,9 +631,10 @@ thread-pre-split: ; preds = %36, %.thread-pre-sp 85: ; preds = %75, %81 %86 = getelementptr inbounds nuw i8, ptr %.4280401, i64 1 - %indvars.iv.next418 = add nsw i64 %indvars.iv417, -1 - %87 = icmp sgt i64 %indvars.iv417, 0 - br i1 %87, label %.lr.ph403, label %._crit_edge, !llvm.loop !20 + %indvars.iv.next419 = add nsw i64 %indvars.iv418, -1 + %87 = and i64 %indvars.iv.next419, 4294967295 + %exitcond421.not = icmp eq i64 %87, 4294967295 + br i1 %exitcond421.not, label %._crit_edge, label %.lr.ph403, !llvm.loop !20 ._crit_edge: ; preds = %85, %.lr.ph409 %.4280.lcssa = phi ptr [ %.3279407, %.lr.ph409 ], [ %86, %85 ] @@ -721,8 +722,8 @@ thread-pre-split: ; preds = %36, %.thread-pre-sp .preheader382.preheader: ; preds = %.thread, %120 %124 = phi i32 [ %119, %.thread ], [ %122, %120 ] - %.0259428 = phi i32 [ %.0259.ph, %.thread ], [ %.0259, %120 ] - %.0300426 = phi i32 [ %.0300.ph, %.thread ], [ %.0300, %120 ] + %.0259429 = phi i32 [ %.0259.ph, %.thread ], [ %.0259, %120 ] + %.0300427 = phi i32 [ %.0300.ph, %.thread ], [ %.0300, %120 ] br label %.preheader382 .preheader382: ; preds = %.preheader382.preheader, %159 @@ -730,13 +731,13 @@ thread-pre-split: ; preds = %36, %.thread-pre-sp %.1270.idx390 = phi i64 [ %.2271.idx, %159 ], [ %.add347, %.preheader382.preheader ] %.5281389 = phi ptr [ %161, %159 ], [ %.1277, %.preheader382.preheader ] %.2293388 = phi i32 [ %162, %159 ], [ %53, %.preheader382.preheader ] - %.2302387 = phi i32 [ %160, %159 ], [ %.0300426, %.preheader382.preheader ] + %.2302387 = phi i32 [ %160, %159 ], [ %.0300427, %.preheader382.preheader ] %125 = icmp slt i32 %.2293388, 0 br i1 %125, label %126, label %131 126: ; preds = %.preheader382 %127 = icmp eq i64 %.1270.idx390, 10 - br i1 %127, label %164, label %128 + br i1 %127, label %163, label %128 128: ; preds = %126 %.1270.add = add nsw i64 %.1270.idx390, -2 @@ -798,47 +799,51 @@ thread-pre-split: ; preds = %36, %.thread-pre-sp %156 = add nuw nsw i8 %150, 2 %157 = select i1 %.not358, i8 %156, i8 %150 %158 = zext i1 %.not359 to i8 - %simplifycfg.merge451 = add nuw nsw i8 %157, %158 - store i8 %simplifycfg.merge451, ptr %.5281389, align 1, !tbaa !19 + %simplifycfg.merge452 = add nuw nsw i8 %157, %158 + store i8 %simplifycfg.merge452, ptr %.5281389, align 1, !tbaa !19 br label %159 159: ; preds = %149, %155 - %160 = add nsw i32 %.2302387, -1 + %160 = add i32 %.2302387, -1 %161 = getelementptr inbounds nuw i8, ptr %.5281389, i64 1 %162 = add nsw i32 %.3294, -1 - %163 = icmp sgt i32 %.2302387, 1 - br i1 %163, label %.preheader382, label %.thread429, !llvm.loop !22 + %exitcond.not = icmp eq i32 %160, 0 + br i1 %exitcond.not, label %.thread430, label %.preheader382, !llvm.loop !22 -164: ; preds = %126 - %165 = load i32, ptr %0, align 4, !tbaa !10 - %166 = icmp slt i32 %.0300426, %165 - br i1 %166, label %171, label %.lr.ph394.preheader +163: ; preds = %126 + %164 = load i32, ptr %0, align 4, !tbaa !10 + %165 = icmp slt i32 %.0300427, %164 + br i1 %165, label %171, label %.preheader380 -.thread429: ; preds = %159 - %167 = load i32, ptr %0, align 4, !tbaa !10 - %168 = icmp slt i32 %.0300426, %167 - br i1 %168, label %171, label %.loopexit379 +.thread430: ; preds = %159 + %166 = load i32, ptr %0, align 4, !tbaa !10 + %167 = icmp slt i32 %.0300427, %166 + br i1 %167, label %171, label %.loopexit379 -.lr.ph394.preheader: ; preds = %164 +.preheader380: ; preds = %163 + %168 = icmp sgt i32 %.2302387, 0 + br i1 %168, label %.lr.ph394.preheader, label %.loopexit379 + +.lr.ph394.preheader: ; preds = %.preheader380 %169 = zext nneg i32 %.2302387 to i64 tail call void @llvm.memset.p0.i64(ptr align 1 %.5281389, i8 48, i64 %169, i1 false), !tbaa !19 %170 = zext nneg i32 %.2302387 to i64 %scevgep416 = getelementptr i8, ptr %.5281389, i64 %170 br label %.loopexit379 -171: ; preds = %.thread429, %164 - %.6.lcssa440 = phi i32 [ %.12, %.thread429 ], [ %.6391, %164 ] - %.1270.idx.lcssa439 = phi i64 [ %.2271.idx, %.thread429 ], [ 10, %164 ] - %.5281.lcssa437 = phi ptr [ %161, %.thread429 ], [ %.5281389, %164 ] - %.2293.lcssa436 = phi i32 [ %162, %.thread429 ], [ %.2293388, %164 ] - store i8 46, ptr %.5281.lcssa437, align 1, !tbaa !19 +171: ; preds = %.thread430, %163 + %.6.lcssa441 = phi i32 [ %.12, %.thread430 ], [ %.6391, %163 ] + %.1270.idx.lcssa440 = phi i64 [ %.2271.idx, %.thread430 ], [ 10, %163 ] + %.5281.lcssa438 = phi ptr [ %161, %.thread430 ], [ %.5281389, %163 ] + %.2293.lcssa437 = phi i32 [ %162, %.thread430 ], [ %.2293388, %163 ] + store i8 46, ptr %.5281.lcssa438, align 1, !tbaa !19 br label %172 172: ; preds = %207, %171 - %.4295 = phi i32 [ %.2293.lcssa436, %171 ], [ %208, %207 ] - %.5281.pn = phi ptr [ %.5281.lcssa437, %171 ], [ %.6282, %207 ] - %.3272.idx = phi i64 [ %.1270.idx.lcssa439, %171 ], [ %.4273.idx, %207 ] - %.13 = phi i32 [ %.6.lcssa440, %171 ], [ %.19, %207 ] + %.4295 = phi i32 [ %.2293.lcssa437, %171 ], [ %208, %207 ] + %.5281.pn = phi ptr [ %.5281.lcssa438, %171 ], [ %.6282, %207 ] + %.3272.idx = phi i64 [ %.1270.idx.lcssa440, %171 ], [ %.4273.idx, %207 ] + %.13 = phi i32 [ %.6.lcssa441, %171 ], [ %.19, %207 ] %.6282 = getelementptr inbounds nuw i8, ptr %.5281.pn, i64 1 %173 = icmp slt i32 %.4295, 0 br i1 %173, label %174, label %179 @@ -907,8 +912,8 @@ thread-pre-split: ; preds = %36, %.thread-pre-sp %204 = add nuw nsw i8 %198, 2 %205 = select i1 %.not363, i8 %204, i8 %198 %206 = zext i1 %.not364 to i8 - %simplifycfg.merge452 = add nuw nsw i8 %205, %206 - store i8 %simplifycfg.merge452, ptr %.6282, align 1, !tbaa !19 + %simplifycfg.merge453 = add nuw nsw i8 %205, %206 + store i8 %simplifycfg.merge453, ptr %.6282, align 1, !tbaa !19 br label %207 207: ; preds = %197, %203 @@ -1008,8 +1013,8 @@ thread-pre-split: ; preds = %36, %.thread-pre-sp %248 = add nuw nsw i8 %242, 2 %249 = select i1 %.not353, i8 %248, i8 %242 %250 = zext i1 %.not354 to i8 - %simplifycfg.merge453 = add nuw nsw i8 %249, %250 - store i8 %simplifycfg.merge453, ptr %.11287, align 1, !tbaa !19 + %simplifycfg.merge454 = add nuw nsw i8 %249, %250 + store i8 %simplifycfg.merge454, ptr %.11287, align 1, !tbaa !19 br label %251 251: ; preds = %241, %247 @@ -1017,10 +1022,10 @@ thread-pre-split: ; preds = %36, %.thread-pre-sp %253 = add nsw i32 %.7298, -1 br label %.preheader383 -.loopexit379: ; preds = %218, %174, %.thread429, %.lr.ph394.preheader - %.0259427 = phi i32 [ %.0259428, %.lr.ph394.preheader ], [ %.0259428, %.thread429 ], [ %.0259428, %174 ], [ %.0259, %218 ] - %.9285 = phi ptr [ %scevgep416, %.lr.ph394.preheader ], [ %161, %.thread429 ], [ %.6282, %174 ], [ %.11287, %218 ] - %.not365 = icmp eq i32 %.0259427, 0 +.loopexit379: ; preds = %218, %174, %.thread430, %.lr.ph394.preheader, %.preheader380 + %.0259428 = phi i32 [ %.0259429, %.preheader380 ], [ %.0259429, %.lr.ph394.preheader ], [ %.0259429, %.thread430 ], [ %.0259429, %174 ], [ %.0259, %218 ] + %.9285 = phi ptr [ %.5281389, %.preheader380 ], [ %scevgep416, %.lr.ph394.preheader ], [ %161, %.thread430 ], [ %.6282, %174 ], [ %.11287, %218 ] + %.not365 = icmp eq i32 %.0259428, 0 br i1 %.not365, label %.loopexit, label %254 254: ; preds = %.loopexit379 @@ -1028,23 +1033,23 @@ thread-pre-split: ; preds = %36, %.thread-pre-sp %255 = getelementptr inbounds nuw i8, ptr %.9285, i64 1 store i8 43, ptr %255, align 1, !tbaa !19 %256 = getelementptr inbounds nuw i8, ptr %.9285, i64 2 - %257 = icmp slt i32 %.0259427, 0 - br i1 %257, label %258, label %.preheader461 + %257 = icmp slt i32 %.0259428, 0 + br i1 %257, label %258, label %.preheader462 258: ; preds = %254 store i8 45, ptr %255, align 1, !tbaa !19 - %259 = sub nsw i32 0, %.0259427 - br label %.preheader461 + %259 = sub nsw i32 0, %.0259428 + br label %.preheader462 -.preheader461: ; preds = %258, %254 - %.28398.ph = phi i32 [ %.0259427, %254 ], [ %259, %258 ] +.preheader462: ; preds = %258, %254 + %.28398.ph = phi i32 [ %.0259428, %254 ], [ %259, %258 ] br label %260 -260: ; preds = %.preheader461, %288 - %indvars.iv = phi i64 [ %indvars.iv.next, %288 ], [ 9, %.preheader461 ] - %.0399 = phi i1 [ %or.cond5, %288 ], [ false, %.preheader461 ] - %.28398 = phi i32 [ %.33, %288 ], [ %.28398.ph, %.preheader461 ] - %.13289397 = phi ptr [ %spec.select376, %288 ], [ %256, %.preheader461 ] +260: ; preds = %.preheader462, %288 + %indvars.iv = phi i64 [ %indvars.iv.next, %288 ], [ 9, %.preheader462 ] + %.0399 = phi i1 [ %or.cond5, %288 ], [ false, %.preheader462 ] + %.28398 = phi i32 [ %.33, %288 ], [ %.28398.ph, %.preheader462 ] + %.13289397 = phi ptr [ %spec.select376, %288 ], [ %256, %.preheader462 ] store i8 48, ptr %.13289397, align 1, !tbaa !19 %261 = getelementptr inbounds nuw [10 x i32], ptr @DECPOWERS, i64 0, i64 %indvars.iv %262 = load i32, ptr %261, align 4, !tbaa !16 @@ -1103,8 +1108,8 @@ thread-pre-split: ; preds = %36, %.thread-pre-sp %spec.select376.idx = zext i1 %or.cond5 to i64 %spec.select376 = getelementptr inbounds nuw i8, ptr %.13289397, i64 %spec.select376.idx %indvars.iv.next = add nsw i64 %indvars.iv, -1 - %.not423 = icmp eq i64 %indvars.iv, 0 - br i1 %.not423, label %.loopexit, label %260, !llvm.loop !23 + %exitcond417.not = icmp eq i64 %indvars.iv, 0 + br i1 %exitcond417.not, label %.loopexit, label %260, !llvm.loop !23 .loopexit: ; preds = %288, %.loopexit379 %.12288 = phi ptr [ %.9285, %.loopexit379 ], [ %spec.select376, %288 ] @@ -14680,9 +14685,9 @@ define dso_local noundef ptr @decNumberSetBCD(ptr noundef returned captures(ret: %34 = add i16 %31, %33 store i16 %34, ptr %.024.ptr41, align 2, !tbaa !11 %35 = getelementptr inbounds nuw i8, ptr %.12334, i64 1 - %36 = add nsw i32 %.135, -1 - %37 = icmp samesign ugt i32 %.135, 1 - br i1 %37, label %.lr.ph, label %._crit_edge, !llvm.loop !78 + %36 = add i32 %.135, -1 + %exitcond.not = icmp eq i32 %36, 0 + br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !78 ._crit_edge: ; preds = %.lr.ph, %.lr.ph43 %.123.lcssa = phi ptr [ %.02239, %.lr.ph43 ], [ %35, %.lr.ph ] diff --git a/bench/jq/optimized/regparse.ll b/bench/jq/optimized/regparse.ll index b8b5611f8e5..2854db8d902 100644 --- a/bench/jq/optimized/regparse.ll +++ b/bench/jq/optimized/regparse.ll @@ -135,29 +135,30 @@ define dso_local noundef i32 @onig_set_parse_depth_limit(i32 noundef %0) local_u ; Function Attrs: nofree norecurse nosync nounwind memory(argmem: read) uwtable define dso_local range(i32 -255, 256) i32 @onig_strncmp(ptr noundef readonly captures(none) %0, ptr noundef readonly captures(none) %1, i32 noundef %2) local_unnamed_addr #4 { + %smin = tail call i32 @llvm.smin.i32(i32 %2, i32 0) br label %4 -4: ; preds = %6, %3 - %.07 = phi ptr [ %0, %3 ], [ %11, %6 ] - %.06 = phi ptr [ %1, %3 ], [ %8, %6 ] - %.05 = phi i32 [ %2, %3 ], [ %7, %6 ] - %5 = icmp sgt i32 %.05, 0 - br i1 %5, label %6, label %15 - -6: ; preds = %4 - %7 = add nsw i32 %.05, -1 - %8 = getelementptr inbounds nuw i8, ptr %.06, i64 1 - %9 = load i8, ptr %.06, align 1, !tbaa !10 - %10 = zext i8 %9 to i32 - %11 = getelementptr inbounds nuw i8, ptr %.07, i64 1 - %12 = load i8, ptr %.07, align 1, !tbaa !10 - %13 = zext i8 %12 to i32 - %14 = sub nsw i32 %10, %13 - %.not = icmp eq i32 %14, 0 - br i1 %.not, label %4, label %15, !llvm.loop !11 +4: ; preds = %5, %3 + %.07 = phi ptr [ %0, %3 ], [ %10, %5 ] + %.06 = phi ptr [ %1, %3 ], [ %7, %5 ] + %.05 = phi i32 [ %2, %3 ], [ %6, %5 ] + %exitcond.not = icmp eq i32 %.05, %smin + br i1 %exitcond.not, label %14, label %5 -15: ; preds = %4, %6 - %.0 = phi i32 [ %14, %6 ], [ 0, %4 ] +5: ; preds = %4 + %6 = add i32 %.05, -1 + %7 = getelementptr inbounds nuw i8, ptr %.06, i64 1 + %8 = load i8, ptr %.06, align 1, !tbaa !10 + %9 = zext i8 %8 to i32 + %10 = getelementptr inbounds nuw i8, ptr %.07, i64 1 + %11 = load i8, ptr %.07, align 1, !tbaa !10 + %12 = zext i8 %11 to i32 + %13 = sub nsw i32 %9, %12 + %.not = icmp eq i32 %13, 0 + br i1 %.not, label %4, label %14, !llvm.loop !11 + +14: ; preds = %4, %5 + %.0 = phi i32 [ %13, %5 ], [ 0, %4 ] ret i32 %.0 } @@ -719,31 +720,31 @@ onig_name_to_group_numbers.exit.thread25..loopexit_crit_edge: ; preds = %onig_na %21 = zext nneg i32 %14 to i64 br label %22 -22: ; preds = %.preheader, %24 - %indvars.iv = phi i64 [ %21, %.preheader ], [ %indvars.iv.next, %24 ] - %23 = icmp sgt i64 %indvars.iv, 0 - br i1 %23, label %24, label %.loopexit +22: ; preds = %.preheader, %23 + %indvars.iv = phi i64 [ %21, %.preheader ], [ %indvars.iv.next, %23 ] + %exitcond.not = icmp eq i64 %indvars.iv, 0 + br i1 %exitcond.not, label %.loopexit, label %23 -24: ; preds = %22 +23: ; preds = %22 %indvars.iv.next = add nsw i64 %indvars.iv, -1 - %25 = load ptr, ptr %20, align 8, !tbaa !52 - %26 = getelementptr inbounds nuw i32, ptr %18, i64 %indvars.iv.next - %27 = load i32, ptr %26, align 4, !tbaa !8 - %28 = sext i32 %27 to i64 - %29 = getelementptr inbounds i32, ptr %25, i64 %28 - %30 = load i32, ptr %29, align 4, !tbaa !8 - %.not18 = icmp eq i32 %30, -1 + %24 = load ptr, ptr %20, align 8, !tbaa !52 + %25 = getelementptr inbounds nuw i32, ptr %18, i64 %indvars.iv.next + %26 = load i32, ptr %25, align 4, !tbaa !8 + %27 = sext i32 %26 to i64 + %28 = getelementptr inbounds i32, ptr %24, i64 %27 + %29 = load i32, ptr %28, align 4, !tbaa !8 + %.not18 = icmp eq i32 %29, -1 br i1 %.not18, label %22, label %onig_name_to_group_numbers.exit.thread, !llvm.loop !55 .loopexit: ; preds = %22, %onig_name_to_group_numbers.exit.thread25..loopexit_crit_edge %.pre-phi = phi i64 [ %.pre, %onig_name_to_group_numbers.exit.thread25..loopexit_crit_edge ], [ %21, %22 ] - %31 = getelementptr i32, ptr %18, i64 %.pre-phi - %32 = getelementptr i8, ptr %31, i64 -4 - %33 = load i32, ptr %32, align 4, !tbaa !8 + %30 = getelementptr i32, ptr %18, i64 %.pre-phi + %31 = getelementptr i8, ptr %30, i64 -4 + %32 = load i32, ptr %31, align 4, !tbaa !8 br label %onig_name_to_group_numbers.exit.thread -onig_name_to_group_numbers.exit.thread: ; preds = %24, %12, %name_find.exit.thread.i, %name_find.exit.i, %onig_name_to_group_numbers.exit, %.loopexit, %onig_name_to_group_numbers.exit.thread25.thread32 - %.0 = phi i32 [ %16, %onig_name_to_group_numbers.exit.thread25.thread32 ], [ %33, %.loopexit ], [ %14, %onig_name_to_group_numbers.exit ], [ -217, %name_find.exit.i ], [ -217, %name_find.exit.thread.i ], [ -11, %12 ], [ %27, %24 ] +onig_name_to_group_numbers.exit.thread: ; preds = %23, %12, %name_find.exit.thread.i, %name_find.exit.i, %onig_name_to_group_numbers.exit, %.loopexit, %onig_name_to_group_numbers.exit.thread25.thread32 + %.0 = phi i32 [ %16, %onig_name_to_group_numbers.exit.thread25.thread32 ], [ %32, %.loopexit ], [ %14, %onig_name_to_group_numbers.exit ], [ -217, %name_find.exit.i ], [ -217, %name_find.exit.thread.i ], [ -11, %12 ], [ %26, %23 ] ret i32 %.0 } @@ -17926,12 +17927,12 @@ declare i32 @llvm.umin.i32(i32, i32) #23 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i32 @llvm.umax.i32(i32, i32) #23 -; Function Attrs: nofree nounwind willreturn allockind("alloc,zeroed") allocsize(0,1) memory(inaccessiblemem: readwrite) -declare noalias noundef ptr @calloc(i64 noundef, i64 noundef) local_unnamed_addr #24 - ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i32 @llvm.smin.i32(i32, i32) #23 +; Function Attrs: nofree nounwind willreturn allockind("alloc,zeroed") allocsize(0,1) memory(inaccessiblemem: readwrite) +declare noalias noundef ptr @calloc(i64 noundef, i64 noundef) local_unnamed_addr #24 + attributes #0 = { mustprogress nofree norecurse nosync nounwind willreturn memory(none) uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { mustprogress nofree norecurse nosync nounwind willreturn memory(write, argmem: none, inaccessiblemem: none) uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #2 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } diff --git a/bench/jsonnet/optimized/formatter.ll b/bench/jsonnet/optimized/formatter.ll index b290cad83e8..809f7776faa 100644 --- a/bench/jsonnet/optimized/formatter.ll +++ b/bench/jsonnet/optimized/formatter.ll @@ -9748,9 +9748,10 @@ _ZSt8_DestroyIPN7jsonnet8internal13FodderElementES2_EvT_S4_RSaIT0_E.exit.i: ; pr _ZNSt6vectorIN7jsonnet8internal13FodderElementESaIS2_EED2Ev.exit: ; preds = %_ZSt8_DestroyIPN7jsonnet8internal13FodderElementES2_EvT_S4_RSaIT0_E.exit.i, %100 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) #28 %indvars.iv.next = add nsw i64 %indvars.iv, -1 - %105 = icmp sgt i64 %indvars.iv, 0 %indvars.iv.next59 = add nsw i64 %indvars.iv58, -1 - br i1 %105, label %.invoke, label %._crit_edge.loopexit, !llvm.loop !344 + %105 = and i64 %indvars.iv.next, 4294967295 + %exitcond.not = icmp eq i64 %105, 4294967295 + br i1 %exitcond.not, label %._crit_edge.loopexit, label %.invoke, !llvm.loop !344 106: ; preds = %38 %107 = landingpad { ptr, i32 } @@ -18446,7 +18447,7 @@ _ZNSt12_Vector_baseIN7jsonnet8internal13FodderElementESaIS2_EE13_M_deallocateEPS ; Function Attrs: mustprogress uwtable define linkonce_odr noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEaSERKS7_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %1) local_unnamed_addr #4 comdat align 2 personality ptr @__gxx_personality_v0 { %.not = icmp eq ptr %1, %0 - br i1 %.not, label %77, label %3 + br i1 %.not, label %75, label %3 3: ; preds = %2 %4 = getelementptr inbounds nuw i8, ptr %1, i64 8 @@ -18527,7 +18528,7 @@ _ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE %42 = ptrtoint ptr %41 to i64 %43 = sub i64 %42, %15 %.not24 = icmp ult i64 %43, %9 - br i1 %.not24, label %62, label %44 + br i1 %.not24, label %61, label %44 44: ; preds = %39 %45 = icmp sgt i64 %10, 0 @@ -18541,94 +18542,94 @@ _ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE %46 = getelementptr inbounds nuw i8, ptr %.0910.i.i.i.i.i, i64 32 %47 = getelementptr inbounds nuw i8, ptr %.0811.i.i.i.i.i, i64 32 %48 = add nsw i64 %.012.i.i.i.i.i, -1 - %49 = icmp samesign ugt i64 %.012.i.i.i.i.i, 1 - br i1 %49, label %.lr.ph.i.i.i.i.i, label %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS7_SaIS7_EEEENS1_IPS7_SC_EEET0_T_SH_SG_.exit.loopexit, !llvm.loop !424 + %exitcond.not.i.i.i.i.i = icmp eq i64 %48, 0 + br i1 %exitcond.not.i.i.i.i.i, label %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS7_SaIS7_EEEENS1_IPS7_SC_EEET0_T_SH_SG_.exit.loopexit, label %.lr.ph.i.i.i.i.i, !llvm.loop !424 _ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS7_SaIS7_EEEENS1_IPS7_SC_EEET0_T_SH_SG_.exit.loopexit: ; preds = %.lr.ph.i.i.i.i.i %.pre = load ptr, ptr %40, align 8, !tbaa !51 - %.pre45 = ptrtoint ptr %47 to i64 + %.pre46 = ptrtoint ptr %47 to i64 br label %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS7_SaIS7_EEEENS1_IPS7_SC_EEET0_T_SH_SG_.exit _ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS7_SaIS7_EEEENS1_IPS7_SC_EEET0_T_SH_SG_.exit: ; preds = %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS7_SaIS7_EEEENS1_IPS7_SC_EEET0_T_SH_SG_.exit.loopexit, %44 - %.pre-phi46 = phi i64 [ %.pre45, %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS7_SaIS7_EEEENS1_IPS7_SC_EEET0_T_SH_SG_.exit.loopexit ], [ %15, %44 ] - %50 = phi ptr [ %.pre, %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS7_SaIS7_EEEENS1_IPS7_SC_EEET0_T_SH_SG_.exit.loopexit ], [ %41, %44 ] + %.pre-phi47 = phi i64 [ %.pre46, %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS7_SaIS7_EEEENS1_IPS7_SC_EEET0_T_SH_SG_.exit.loopexit ], [ %15, %44 ] + %49 = phi ptr [ %.pre, %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS7_SaIS7_EEEENS1_IPS7_SC_EEET0_T_SH_SG_.exit.loopexit ], [ %41, %44 ] %.08.lcssa.i.i.i.i.i = phi ptr [ %47, %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS7_SaIS7_EEEENS1_IPS7_SC_EEET0_T_SH_SG_.exit.loopexit ], [ %13, %44 ] - %.not4.i.i.i25 = icmp eq ptr %.08.lcssa.i.i.i.i.i, %50 + %.not4.i.i.i25 = icmp eq ptr %.08.lcssa.i.i.i.i.i, %49 br i1 %.not4.i.i.i25, label %_ZSt8_DestroyIN9__gnu_cxx17__normal_iteratorIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS7_SaIS7_EEEES7_EvT_SD_RSaIT0_E.exit, label %.lr.ph.i.i.i26.preheader .lr.ph.i.i.i26.preheader: ; preds = %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS7_SaIS7_EEEENS1_IPS7_SC_EEET0_T_SH_SG_.exit - %51 = sub i64 %.pre-phi46, %15 - %52 = getelementptr inbounds i8, ptr %13, i64 %51 + %50 = sub i64 %.pre-phi47, %15 + %51 = getelementptr inbounds i8, ptr %13, i64 %50 br label %.lr.ph.i.i.i26 .lr.ph.i.i.i26: ; preds = %.lr.ph.i.i.i26.preheader, %_ZSt8_DestroyINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEvPT_.exit.i.i.i28 - %.sroa.01.05.i.i.i = phi ptr [ %61, %_ZSt8_DestroyINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEvPT_.exit.i.i.i28 ], [ %52, %.lr.ph.i.i.i26.preheader ] - %53 = load ptr, ptr %.sroa.01.05.i.i.i, align 8, !tbaa !31 - %54 = getelementptr inbounds nuw i8, ptr %.sroa.01.05.i.i.i, i64 16 - %55 = icmp eq ptr %53, %54 - br i1 %55, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i.i.i30, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i.i27 + %.sroa.01.05.i.i.i = phi ptr [ %60, %_ZSt8_DestroyINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEvPT_.exit.i.i.i28 ], [ %51, %.lr.ph.i.i.i26.preheader ] + %52 = load ptr, ptr %.sroa.01.05.i.i.i, align 8, !tbaa !31 + %53 = getelementptr inbounds nuw i8, ptr %.sroa.01.05.i.i.i, i64 16 + %54 = icmp eq ptr %52, %53 + br i1 %54, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i.i.i30, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i.i27 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i.i.i30: ; preds = %.lr.ph.i.i.i26 - %56 = getelementptr inbounds nuw i8, ptr %.sroa.01.05.i.i.i, i64 8 - %57 = load i64, ptr %56, align 8, !tbaa !35 - %58 = icmp ult i64 %57, 16 - tail call void @llvm.assume(i1 %58) + %55 = getelementptr inbounds nuw i8, ptr %.sroa.01.05.i.i.i, i64 8 + %56 = load i64, ptr %55, align 8, !tbaa !35 + %57 = icmp ult i64 %56, 16 + tail call void @llvm.assume(i1 %57) br label %_ZSt8_DestroyINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEvPT_.exit.i.i.i28 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i.i27: ; preds = %.lr.ph.i.i.i26 - %59 = load i64, ptr %54, align 8, !tbaa !36 - %60 = add i64 %59, 1 - tail call void @_ZdlPvm(ptr noundef %53, i64 noundef %60) #29 + %58 = load i64, ptr %53, align 8, !tbaa !36 + %59 = add i64 %58, 1 + tail call void @_ZdlPvm(ptr noundef %52, i64 noundef %59) #29 br label %_ZSt8_DestroyINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEvPT_.exit.i.i.i28 _ZSt8_DestroyINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEvPT_.exit.i.i.i28: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i.i27, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i.i.i30 - %61 = getelementptr inbounds nuw i8, ptr %.sroa.01.05.i.i.i, i64 32 - %.not.i.i.i29 = icmp eq ptr %61, %50 + %60 = getelementptr inbounds nuw i8, ptr %.sroa.01.05.i.i.i, i64 32 + %.not.i.i.i29 = icmp eq ptr %60, %49 br i1 %.not.i.i.i29, label %_ZSt8_DestroyIN9__gnu_cxx17__normal_iteratorIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS7_SaIS7_EEEES7_EvT_SD_RSaIT0_E.exit, label %.lr.ph.i.i.i26, !llvm.loop !425 -62: ; preds = %39 - %63 = ashr exact i64 %43, 5 - %64 = icmp sgt i64 %63, 0 - br i1 %64, label %.lr.ph.i.i.i.i.i32, label %_ZSt4copyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_ET0_T_S8_S7_.exit +61: ; preds = %39 + %62 = ashr exact i64 %43, 5 + %63 = icmp sgt i64 %62, 0 + br i1 %63, label %.lr.ph.i.i.i.i.i32, label %_ZSt4copyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_ET0_T_S8_S7_.exit -.lr.ph.i.i.i.i.i32: ; preds = %62, %.lr.ph.i.i.i.i.i32 - %.012.i.i.i.i.i33 = phi i64 [ %67, %.lr.ph.i.i.i.i.i32 ], [ %63, %62 ] - %.0811.i.i.i.i.i34 = phi ptr [ %66, %.lr.ph.i.i.i.i.i32 ], [ %13, %62 ] - %.0910.i.i.i.i.i35 = phi ptr [ %65, %.lr.ph.i.i.i.i.i32 ], [ %6, %62 ] +.lr.ph.i.i.i.i.i32: ; preds = %61, %.lr.ph.i.i.i.i.i32 + %.012.i.i.i.i.i33 = phi i64 [ %66, %.lr.ph.i.i.i.i.i32 ], [ %62, %61 ] + %.0811.i.i.i.i.i34 = phi ptr [ %65, %.lr.ph.i.i.i.i.i32 ], [ %13, %61 ] + %.0910.i.i.i.i.i35 = phi ptr [ %64, %.lr.ph.i.i.i.i.i32 ], [ %6, %61 ] tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_assignERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %.0811.i.i.i.i.i34, ptr noundef nonnull align 8 dereferenceable(32) %.0910.i.i.i.i.i35) - %65 = getelementptr inbounds nuw i8, ptr %.0910.i.i.i.i.i35, i64 32 - %66 = getelementptr inbounds nuw i8, ptr %.0811.i.i.i.i.i34, i64 32 - %67 = add nsw i64 %.012.i.i.i.i.i33, -1 - %68 = icmp samesign ugt i64 %.012.i.i.i.i.i33, 1 - br i1 %68, label %.lr.ph.i.i.i.i.i32, label %_ZSt4copyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_ET0_T_S8_S7_.exit.loopexit, !llvm.loop !426 + %64 = getelementptr inbounds nuw i8, ptr %.0910.i.i.i.i.i35, i64 32 + %65 = getelementptr inbounds nuw i8, ptr %.0811.i.i.i.i.i34, i64 32 + %66 = add nsw i64 %.012.i.i.i.i.i33, -1 + %exitcond.not.i.i.i.i.i36 = icmp eq i64 %66, 0 + br i1 %exitcond.not.i.i.i.i.i36, label %_ZSt4copyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_ET0_T_S8_S7_.exit.loopexit, label %.lr.ph.i.i.i.i.i32, !llvm.loop !426 _ZSt4copyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_ET0_T_S8_S7_.exit.loopexit: ; preds = %.lr.ph.i.i.i.i.i32 - %.pre36 = load ptr, ptr %1, align 8, !tbaa !30 - %.pre37 = load ptr, ptr %40, align 8, !tbaa !29 - %.pre38 = load ptr, ptr %0, align 8, !tbaa !30 - %.pre39 = load ptr, ptr %4, align 8, !tbaa !29 - %.pre40 = ptrtoint ptr %.pre37 to i64 + %.pre37 = load ptr, ptr %1, align 8, !tbaa !30 + %.pre38 = load ptr, ptr %40, align 8, !tbaa !29 + %.pre39 = load ptr, ptr %0, align 8, !tbaa !30 + %.pre40 = load ptr, ptr %4, align 8, !tbaa !29 %.pre41 = ptrtoint ptr %.pre38 to i64 - %.pre43 = sub i64 %.pre40, %.pre41 + %.pre42 = ptrtoint ptr %.pre39 to i64 + %.pre44 = sub i64 %.pre41, %.pre42 br label %_ZSt4copyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_ET0_T_S8_S7_.exit -_ZSt4copyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_ET0_T_S8_S7_.exit: ; preds = %_ZSt4copyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_ET0_T_S8_S7_.exit.loopexit, %62 - %.pre-phi44 = phi i64 [ %.pre43, %_ZSt4copyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_ET0_T_S8_S7_.exit.loopexit ], [ %43, %62 ] - %69 = phi ptr [ %.pre39, %_ZSt4copyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_ET0_T_S8_S7_.exit.loopexit ], [ %5, %62 ] - %70 = phi ptr [ %.pre37, %_ZSt4copyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_ET0_T_S8_S7_.exit.loopexit ], [ %41, %62 ] - %71 = phi ptr [ %.pre36, %_ZSt4copyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_ET0_T_S8_S7_.exit.loopexit ], [ %6, %62 ] - %72 = getelementptr inbounds nuw i8, ptr %71, i64 %.pre-phi44 - %73 = tail call noundef ptr @_ZSt16__do_uninit_copyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_ET0_T_S8_S7_(ptr noundef %72, ptr noundef %69, ptr noundef %70) +_ZSt4copyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_ET0_T_S8_S7_.exit: ; preds = %_ZSt4copyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_ET0_T_S8_S7_.exit.loopexit, %61 + %.pre-phi45 = phi i64 [ %.pre44, %_ZSt4copyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_ET0_T_S8_S7_.exit.loopexit ], [ %43, %61 ] + %67 = phi ptr [ %.pre40, %_ZSt4copyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_ET0_T_S8_S7_.exit.loopexit ], [ %5, %61 ] + %68 = phi ptr [ %.pre38, %_ZSt4copyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_ET0_T_S8_S7_.exit.loopexit ], [ %41, %61 ] + %69 = phi ptr [ %.pre37, %_ZSt4copyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_ET0_T_S8_S7_.exit.loopexit ], [ %6, %61 ] + %70 = getelementptr inbounds nuw i8, ptr %69, i64 %.pre-phi45 + %71 = tail call noundef ptr @_ZSt16__do_uninit_copyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_ET0_T_S8_S7_(ptr noundef %70, ptr noundef %67, ptr noundef %68) br label %_ZSt8_DestroyIN9__gnu_cxx17__normal_iteratorIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS7_SaIS7_EEEES7_EvT_SD_RSaIT0_E.exit _ZSt8_DestroyIN9__gnu_cxx17__normal_iteratorIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS7_SaIS7_EEEES7_EvT_SD_RSaIT0_E.exit: ; preds = %_ZSt8_DestroyINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEvPT_.exit.i.i.i28, %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS7_SaIS7_EEEENS1_IPS7_SC_EEET0_T_SH_SG_.exit, %_ZSt4copyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_ET0_T_S8_S7_.exit, %_ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE13_M_deallocateEPS5_m.exit - %74 = load ptr, ptr %0, align 8, !tbaa !30 - %75 = getelementptr inbounds nuw i8, ptr %74, i64 %9 - %76 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store ptr %75, ptr %76, align 8, !tbaa !29 - br label %77 + %72 = load ptr, ptr %0, align 8, !tbaa !30 + %73 = getelementptr inbounds nuw i8, ptr %72, i64 %9 + %74 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store ptr %73, ptr %74, align 8, !tbaa !29 + br label %75 -77: ; preds = %_ZSt8_DestroyIN9__gnu_cxx17__normal_iteratorIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS7_SaIS7_EEEES7_EvT_SD_RSaIT0_E.exit, %2 +75: ; preds = %_ZSt8_DestroyIN9__gnu_cxx17__normal_iteratorIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS7_SaIS7_EEEES7_EvT_SD_RSaIT0_E.exit, %2 ret ptr %0 } diff --git a/bench/just-rs/optimized/4mdvpwvrpdu4jonv.ll b/bench/just-rs/optimized/4mdvpwvrpdu4jonv.ll index e49f8507434..e138ac98a53 100644 --- a/bench/just-rs/optimized/4mdvpwvrpdu4jonv.ll +++ b/bench/just-rs/optimized/4mdvpwvrpdu4jonv.ll @@ -1641,8 +1641,8 @@ define internal fastcc noundef zeroext i1 @"_ZN55_$LT$$RF$str$u20$as$u20$core..s %8 = icmp ult i64 %1, %3 br i1 %8, label %14, label %10 -"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h03a4955529edbd10E.exit": ; preds = %"_ZN4core4iter6traits8iterator8Iterator3any5check28_$u7b$$u7b$closure$u7d$$u7d$17h1af694df04d50d8dE.exit.us.i.i", %.critedge.backedge.us.i.i, %.lr.ph.split.us.i.i, %96, %11, %10, %"_ZN80_$LT$core..str..pattern..StrSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h81357aafb99f3895E.exit" - %.030 = phi i8 [ %.sroa.0.0, %"_ZN80_$LT$core..str..pattern..StrSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h81357aafb99f3895E.exit" ], [ %13, %11 ], [ 0, %10 ], [ 1, %.lr.ph.split.us.i.i ], [ %.4.i, %96 ], [ 0, %.critedge.backedge.us.i.i ], [ 1, %"_ZN4core4iter6traits8iterator8Iterator3any5check28_$u7b$$u7b$closure$u7d$$u7d$17h1af694df04d50d8dE.exit.us.i.i" ] +"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h03a4955529edbd10E.exit": ; preds = %.critedge.backedge.us.i.i, %"_ZN4core4iter6traits8iterator8Iterator3any5check28_$u7b$$u7b$closure$u7d$$u7d$17h1af694df04d50d8dE.exit.us.i.i", %.lr.ph.split.us.i.i, %96, %11, %10, %"_ZN80_$LT$core..str..pattern..StrSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h81357aafb99f3895E.exit" + %.030 = phi i8 [ %.sroa.0.0, %"_ZN80_$LT$core..str..pattern..StrSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h81357aafb99f3895E.exit" ], [ %13, %11 ], [ 0, %10 ], [ 1, %.lr.ph.split.us.i.i ], [ %.4.i, %96 ], [ 1, %"_ZN4core4iter6traits8iterator8Iterator3any5check28_$u7b$$u7b$closure$u7d$$u7d$17h1af694df04d50d8dE.exit.us.i.i" ], [ 0, %.critedge.backedge.us.i.i ] %9 = trunc nuw i8 %.030 to i1 ret i1 %9 @@ -1845,17 +1845,17 @@ define internal fastcc noundef zeroext i1 @"_ZN55_$LT$$RF$str$u20$as$u20$core..s br i1 %.not27.i.i, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h03a4955529edbd10E.exit", label %.critedge.backedge.us.i.i "_ZN4core4iter6traits8iterator8Iterator3any5check28_$u7b$$u7b$closure$u7d$$u7d$17h1af694df04d50d8dE.exit.us.i.i": ; preds = %.critedge.backedge.us.i.i - %101 = getelementptr inbounds nuw i8, ptr %.pn.i, i64 1 - %bcmp.i.i.i.us.i.i = tail call i32 @bcmp(ptr noundef nonnull readonly align 1 dereferenceable(1) %101, ptr noundef nonnull readonly align 1 dereferenceable(1) %0, i64 range(i64 2, 4) %1), !alias.scope !249, !noalias !253 + %101 = add i64 %.in.i, -1 + %102 = getelementptr inbounds nuw i8, ptr %.pn.i, i64 1 + %bcmp.i.i.i.us.i.i = tail call i32 @bcmp(ptr noundef nonnull readonly align 1 dereferenceable(1) %102, ptr noundef nonnull readonly align 1 dereferenceable(1) %0, i64 range(i64 2, 4) %1), !alias.scope !249, !noalias !253 %.not29.i.i = icmp eq i32 %bcmp.i.i.i.us.i.i, 0 br i1 %.not29.i.i, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h03a4955529edbd10E.exit", label %.critedge.backedge.us.i.i .critedge.backedge.us.i.i: ; preds = %.lr.ph.split.us.i.i, %"_ZN4core4iter6traits8iterator8Iterator3any5check28_$u7b$$u7b$closure$u7d$$u7d$17h1af694df04d50d8dE.exit.us.i.i" - %.pn.i = phi ptr [ %101, %"_ZN4core4iter6traits8iterator8Iterator3any5check28_$u7b$$u7b$closure$u7d$$u7d$17h1af694df04d50d8dE.exit.us.i.i" ], [ %2, %.lr.ph.split.us.i.i ] - %.in.i = phi i64 [ %102, %"_ZN4core4iter6traits8iterator8Iterator3any5check28_$u7b$$u7b$closure$u7d$$u7d$17h1af694df04d50d8dE.exit.us.i.i" ], [ %3, %.lr.ph.split.us.i.i ] - %102 = add i64 %.in.i, -1 - %.not28.i.i = icmp ugt i64 %1, %102 - br i1 %.not28.i.i, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h03a4955529edbd10E.exit", label %"_ZN4core4iter6traits8iterator8Iterator3any5check28_$u7b$$u7b$closure$u7d$$u7d$17h1af694df04d50d8dE.exit.us.i.i" + %.pn.i = phi ptr [ %102, %"_ZN4core4iter6traits8iterator8Iterator3any5check28_$u7b$$u7b$closure$u7d$$u7d$17h1af694df04d50d8dE.exit.us.i.i" ], [ %2, %.lr.ph.split.us.i.i ] + %.in.i = phi i64 [ %101, %"_ZN4core4iter6traits8iterator8Iterator3any5check28_$u7b$$u7b$closure$u7d$$u7d$17h1af694df04d50d8dE.exit.us.i.i" ], [ %3, %.lr.ph.split.us.i.i ] + %exitcond.i.i = icmp eq i64 %.in.i, %1 + br i1 %exitcond.i.i, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h03a4955529edbd10E.exit", label %"_ZN4core4iter6traits8iterator8Iterator3any5check28_$u7b$$u7b$closure$u7d$$u7d$17h1af694df04d50d8dE.exit.us.i.i" _ZN4core3str7pattern13simd_contains17hd88dd90e038df932E.exit: ; preds = %.preheader139.i call void @llvm.lifetime.start.p0(i64 104, ptr nonnull %7) diff --git a/bench/libjpeg-turbo/optimized/jdphuff.ll b/bench/libjpeg-turbo/optimized/jdphuff.ll index fbffe0cde84..c9033419bbf 100644 --- a/bench/libjpeg-turbo/optimized/jdphuff.ll +++ b/bench/libjpeg-turbo/optimized/jdphuff.ll @@ -1423,9 +1423,9 @@ process_restart.exit.thread: ; preds = %._crit_edge.i, %45, .sink.split: ; preds = %160 %165 = icmp slt i16 %161, 0 - %.317.v = select i1 %165, i32 %73, i32 %11 - %.317 = trunc i32 %.317.v to i16 - %166 = add i16 %161, %.317 + %.319.v = select i1 %165, i32 %73, i32 %11 + %.319 = trunc i32 %.319.v to i16 + %166 = add i16 %161, %.319 store i16 %166, ptr %146, align 2, !tbaa !94 br label %170 @@ -1440,20 +1440,20 @@ process_restart.exit.thread: ; preds = %._crit_edge.i, %45, %.11 = phi i32 [ %156, %160 ], [ %156, %155 ], [ %.9, %167 ], [ %156, %.sink.split ] %indvars.iv.next = add nsw i64 %indvars.iv, 1 %.not200.not = icmp slt i64 %indvars.iv, %74 - br i1 %.not200.not, label %142, label %.split.loop.exit310, !llvm.loop !98 + br i1 %.not200.not, label %142, label %.split.loop.exit312, !llvm.loop !98 .split.loop.exit: ; preds = %167 %171 = trunc nsw i64 %indvars.iv to i32 - br label %.split.loop.exit310 + br label %.split.loop.exit312 -.split.loop.exit310: ; preds = %170, %.split.loop.exit +.split.loop.exit312: ; preds = %170, %.split.loop.exit %.12154 = phi i64 [ %.9151, %.split.loop.exit ], [ %.11153, %170 ] %.12 = phi i32 [ %.9, %.split.loop.exit ], [ %.11, %170 ] %.3135 = phi i32 [ %171, %.split.loop.exit ], [ %141, %170 ] %.not201 = icmp eq i32 %.3, 0 br i1 %.not201, label %182, label %172 -172: ; preds = %.split.loop.exit310 +172: ; preds = %.split.loop.exit312 %173 = sext i32 %.3135 to i64 %174 = getelementptr inbounds [0 x i32], ptr @jpeg_natural_order, i64 0, i64 %173 %175 = load i32, ptr %174, align 4, !tbaa !42 @@ -1467,37 +1467,37 @@ process_restart.exit.thread: ; preds = %._crit_edge.i, %45, store i32 %175, ptr %181, align 4, !tbaa !42 br label %182 -182: ; preds = %.split.loop.exit310, %172 - %.3131 = phi i32 [ %179, %172 ], [ %.1129238, %.split.loop.exit310 ] +182: ; preds = %.split.loop.exit312, %172 + %.3131 = phi i32 [ %179, %172 ], [ %.1129238, %.split.loop.exit312 ] %183 = add nsw i32 %.3135, 1 %.not183.not = icmp slt i32 %.3135, %8 - br i1 %.not183.not, label %75, label %.loopexit214.thread287, !llvm.loop !99 + br i1 %.not183.not, label %75, label %.loopexit214.thread289, !llvm.loop !99 .loopexit214: ; preds = %50 %.not189 = icmp eq i32 %63, 0 - br i1 %.not189, label %.loopexit214.thread287, label %.preheader + br i1 %.not189, label %.loopexit214.thread289, label %.preheader .preheader: ; preds = %122, %131, %.loopexit214 - %.0128286 = phi i32 [ 0, %.loopexit214 ], [ %.1129238, %131 ], [ %.1129238, %122 ] - %.0132285 = phi i32 [ %68, %.loopexit214 ], [ %.1133237, %131 ], [ %.1133237, %122 ] - %.0137284 = phi i32 [ %61, %.loopexit214 ], [ %132, %131 ], [ %.3140.ph, %122 ] - %.0142283 = phi i64 [ %59, %.loopexit214 ], [ %.8150, %131 ], [ %.3145.ph, %122 ] - %.0161282 = phi i32 [ %63, %.loopexit214 ], [ %138, %131 ], [ %123, %122 ] - %.not190242 = icmp sgt i32 %.0132285, %8 + %.0128288 = phi i32 [ 0, %.loopexit214 ], [ %.1129238, %131 ], [ %.1129238, %122 ] + %.0132287 = phi i32 [ %68, %.loopexit214 ], [ %.1133237, %131 ], [ %.1133237, %122 ] + %.0137286 = phi i32 [ %61, %.loopexit214 ], [ %132, %131 ], [ %.3140.ph, %122 ] + %.0142285 = phi i64 [ %59, %.loopexit214 ], [ %.8150, %131 ], [ %.3145.ph, %122 ] + %.0161284 = phi i32 [ %63, %.loopexit214 ], [ %138, %131 ], [ %123, %122 ] + %.not190242 = icmp sgt i32 %.0132287, %8 br i1 %.not190242, label %._crit_edge, label %.lr.ph246 .lr.ph246: ; preds = %.preheader %184 = getelementptr inbounds nuw i8, ptr %3, i64 16 %185 = getelementptr inbounds nuw i8, ptr %3, i64 24 %186 = shl i32 65535, %10 - %187 = sext i32 %.0132285 to i64 + %187 = sext i32 %.0132287 to i64 %188 = add i32 %8, 1 br label %189 189: ; preds = %.lr.ph246, %214 %indvars.iv270 = phi i64 [ %187, %.lr.ph246 ], [ %indvars.iv.next271, %214 ] - %.14244 = phi i32 [ %.0137284, %.lr.ph246 ], [ %.16, %214 ] - %.14156243 = phi i64 [ %.0142283, %.lr.ph246 ], [ %.16158, %214 ] + %.14244 = phi i32 [ %.0137286, %.lr.ph246 ], [ %.16, %214 ] + %.14156243 = phi i64 [ %.0142285, %.lr.ph246 ], [ %.16158, %214 ] %190 = getelementptr inbounds [0 x i32], ptr @jpeg_natural_order, i64 0, i64 %indvars.iv270 %191 = load i32, ptr %190, align 4, !tbaa !42 %192 = sext i32 %191 to i64 @@ -1535,31 +1535,31 @@ process_restart.exit.thread: ; preds = %._crit_edge.i, %45, %209 = sext i16 %208 to i32 %210 = and i32 %11, %209 %211 = icmp eq i32 %210, 0 - br i1 %211, label %.sink.split315, label %214 + br i1 %211, label %.sink.split317, label %214 -.sink.split315: ; preds = %207 +.sink.split317: ; preds = %207 %212 = icmp slt i16 %208, 0 - %.318.v = select i1 %212, i32 %186, i32 %11 - %.318 = trunc i32 %.318.v to i16 - %213 = add i16 %208, %.318 + %.320.v = select i1 %212, i32 %186, i32 %11 + %.320 = trunc i32 %.320.v to i16 + %213 = add i16 %208, %.320 store i16 %213, ptr %193, align 2, !tbaa !94 br label %214 -214: ; preds = %.sink.split315, %189, %207, %202 - %.16158 = phi i64 [ %.15157, %207 ], [ %.15157, %202 ], [ %.14156243, %189 ], [ %.15157, %.sink.split315 ] - %.16 = phi i32 [ %203, %207 ], [ %203, %202 ], [ %.14244, %189 ], [ %203, %.sink.split315 ] +214: ; preds = %.sink.split317, %189, %207, %202 + %.16158 = phi i64 [ %.15157, %207 ], [ %.15157, %202 ], [ %.14156243, %189 ], [ %.15157, %.sink.split317 ] + %.16 = phi i32 [ %203, %207 ], [ %203, %202 ], [ %.14244, %189 ], [ %203, %.sink.split317 ] %indvars.iv.next271 = add nsw i64 %indvars.iv270, 1 %lftr.wideiv = trunc i64 %indvars.iv.next271 to i32 %exitcond.not = icmp eq i32 %188, %lftr.wideiv br i1 %exitcond.not, label %._crit_edge, label %189, !llvm.loop !100 ._crit_edge: ; preds = %214, %.preheader - %.14156.lcssa = phi i64 [ %.0142283, %.preheader ], [ %.16158, %214 ] - %.14.lcssa = phi i32 [ %.0137284, %.preheader ], [ %.16, %214 ] - %215 = add i32 %.0161282, -1 - br label %.loopexit214.thread287 + %.14156.lcssa = phi i64 [ %.0142285, %.preheader ], [ %.16158, %214 ] + %.14.lcssa = phi i32 [ %.0137286, %.preheader ], [ %.16, %214 ] + %215 = add i32 %.0161284, -1 + br label %.loopexit214.thread289 -.loopexit214.thread287: ; preds = %182, %._crit_edge, %.loopexit214 +.loopexit214.thread289: ; preds = %182, %._crit_edge, %.loopexit214 %.1162 = phi i32 [ %215, %._crit_edge ], [ 0, %.loopexit214 ], [ 0, %182 ] %.13155 = phi i64 [ %.14156.lcssa, %._crit_edge ], [ %59, %.loopexit214 ], [ %.12154, %182 ] %.13 = phi i32 [ %.14.lcssa, %._crit_edge ], [ %61, %.loopexit214 ], [ %.12, %182 ] @@ -1575,8 +1575,8 @@ process_restart.exit.thread: ; preds = %._crit_edge.i, %45, %.pre = load i32, ptr %13, align 8, !tbaa !71 br label %220 -220: ; preds = %.loopexit214.thread287, %process_restart.exit.thread - %221 = phi i32 [ %.pre, %.loopexit214.thread287 ], [ %47, %process_restart.exit.thread ] +220: ; preds = %.loopexit214.thread289, %process_restart.exit.thread + %221 = phi i32 [ %.pre, %.loopexit214.thread289 ], [ %47, %process_restart.exit.thread ] %.not202 = icmp eq i32 %221, 0 br i1 %.not202, label %process_restart.exit, label %222 @@ -1588,7 +1588,7 @@ process_restart.exit.thread: ; preds = %._crit_edge.i, %45, br label %process_restart.exit .loopexit: ; preds = %77, %95, %111, %150, %197, %126 - %.2130 = phi i32 [ %.1129238, %126 ], [ %.0128286, %197 ], [ %.1129238, %150 ], [ %.1129238, %111 ], [ %.1129238, %95 ], [ %.1129238, %77 ] + %.2130 = phi i32 [ %.1129238, %126 ], [ %.0128288, %197 ], [ %.1129238, %150 ], [ %.1129238, %111 ], [ %.1129238, %95 ], [ %.1129238, %77 ] %226 = icmp sgt i32 %.2130, 0 br i1 %226, label %.lr.ph251.preheader, label %process_restart.exit @@ -1604,8 +1604,9 @@ process_restart.exit.thread: ; preds = %._crit_edge.i, %45, %230 = sext i32 %229 to i64 %231 = getelementptr inbounds [64 x i16], ptr %64, i64 0, i64 %230 store i16 0, ptr %231, align 2, !tbaa !94 - %232 = icmp samesign ugt i64 %indvars.iv273, 1 - br i1 %232, label %.lr.ph251, label %process_restart.exit, !llvm.loop !101 + %232 = and i64 %indvars.iv.next274, 4294967295 + %exitcond277.not = icmp eq i64 %232, 0 + br i1 %exitcond277.not, label %process_restart.exit, label %.lr.ph251, !llvm.loop !101 process_restart.exit: ; preds = %.lr.ph251, %.loopexit, %19, %220, %222 %.0 = phi i32 [ 1, %222 ], [ 1, %220 ], [ 0, %19 ], [ 0, %.loopexit ], [ 0, %.lr.ph251 ] diff --git a/bench/libpng/optimized/png.ll b/bench/libpng/optimized/png.ll index 6a2c0ea7a26..12d993a50ca 100644 --- a/bench/libpng/optimized/png.ll +++ b/bench/libpng/optimized/png.ll @@ -4159,7 +4159,7 @@ declare double @llvm.floor.f64(double) #20 define void @png_ascii_from_fixed(ptr noalias noundef %0, ptr noundef writeonly captures(none) %1, i64 noundef %2, i32 noundef %3) local_unnamed_addr #0 { %5 = alloca [10 x i8], align 1 %6 = icmp ugt i64 %2, 12 - br i1 %6, label %7, label %40 + br i1 %6, label %7, label %41 7: ; preds = %4 %8 = icmp slt i32 %3, 0 @@ -4224,60 +4224,69 @@ define void @png_ascii_from_fixed(ptr noalias noundef %0, ptr noundef writeonly %25 = load i8, ptr %24, align 1, !tbaa !27 %26 = getelementptr inbounds nuw i8, ptr %.154, i64 1 store i8 %25, ptr %.154, align 1, !tbaa !27 - %.wide = icmp ugt i64 %23, 5 - br i1 %.wide, label %.lr.ph55, label %._crit_edge56, !llvm.loop !151 - -._crit_edge56: ; preds = %.lr.ph55, %.preheader47 - %.139.lcssa = phi i32 [ %16, %.preheader47 ], [ 5, %.lr.ph55 ] - %.1.lcssa = phi ptr [ %.03579, %.preheader47 ], [ %26, %.lr.ph55 ] - %27 = icmp ult i32 %spec.select, 6 - br i1 %27, label %28, label %.loopexit - -28: ; preds = %._crit_edge56 - store i8 46, ptr %.1.lcssa, align 1, !tbaa !27 - %.259 = getelementptr i8, ptr %.1.lcssa, i64 1 - %29 = icmp samesign ult i32 %.139.lcssa, 5 - br i1 %29, label %.lr.ph63.preheader, label %.preheader - -.lr.ph63.preheader: ; preds = %28 - %30 = sub nuw nsw i32 4, %.139.lcssa - %31 = zext nneg i32 %30 to i64 - %32 = add nuw nsw i64 %31, 1 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %.259, i8 48, i64 %32, i1 false), !tbaa !27 - %33 = getelementptr i8, ptr %.1.lcssa, i64 %31 - %scevgep = getelementptr i8, ptr %33, i64 2 + %27 = and i64 %23, 4294967295 + %exitcond.not = icmp eq i64 %27, 5 + br i1 %exitcond.not, label %._crit_edge56.thread, label %.lr.ph55, !llvm.loop !151 + +._crit_edge56: ; preds = %.preheader47 + %28 = icmp ult i32 %spec.select, 6 + br i1 %28, label %30, label %.loopexit + +._crit_edge56.thread: ; preds = %.lr.ph55 + %29 = icmp ult i32 %spec.select, 6 + br i1 %29, label %.thread90, label %.loopexit + +.thread90: ; preds = %._crit_edge56.thread + store i8 46, ptr %26, align 1, !tbaa !27 + %.25993 = getelementptr i8, ptr %.154, i64 2 br label %.preheader -.preheader: ; preds = %.lr.ph63.preheader, %28 - %.2.lcssa = phi ptr [ %.259, %28 ], [ %scevgep, %.lr.ph63.preheader ] - %.not4665 = icmp samesign ult i32 %.139.lcssa, %spec.select +30: ; preds = %._crit_edge56 + store i8 46, ptr %.03579, align 1, !tbaa !27 + %.259 = getelementptr i8, ptr %.03579, i64 1 + %.not97 = icmp eq i32 %16, 5 + br i1 %.not97, label %.preheader, label %.lr.ph63.preheader + +.lr.ph63.preheader: ; preds = %30 + %31 = sub i32 3, %.03850 + %32 = zext nneg i32 %31 to i64 + %33 = add nuw nsw i64 %32, 1 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %.259, i8 48, i64 %33, i1 false), !tbaa !27 + %34 = getelementptr i8, ptr %.03579, i64 %32 + %scevgep = getelementptr i8, ptr %34, i64 2 + br label %.preheader + +.preheader: ; preds = %.thread90, %.lr.ph63.preheader, %30 + %.139.lcssa8894 = phi i32 [ 5, %30 ], [ %16, %.lr.ph63.preheader ], [ 5, %.thread90 ] + %.2.lcssa = phi ptr [ %.259, %30 ], [ %scevgep, %.lr.ph63.preheader ], [ %.25993, %.thread90 ] + %.not4665 = icmp samesign ult i32 %.139.lcssa8894, %spec.select br i1 %.not4665, label %.loopexit, label %.lr.ph68 .lr.ph68: ; preds = %.preheader, %.lr.ph68 - %.367 = phi ptr [ %38, %.lr.ph68 ], [ %.2.lcssa, %.preheader ] - %.24066 = phi i32 [ %34, %.lr.ph68 ], [ %.139.lcssa, %.preheader ] - %34 = add i32 %.24066, -1 - %35 = zext i32 %34 to i64 - %36 = getelementptr inbounds nuw [10 x i8], ptr %5, i64 0, i64 %35 - %37 = load i8, ptr %36, align 1, !tbaa !27 - %38 = getelementptr inbounds nuw i8, ptr %.367, i64 1 - store i8 %37, ptr %.367, align 1, !tbaa !27 - %.not46 = icmp ult i32 %34, %spec.select + %.367 = phi ptr [ %39, %.lr.ph68 ], [ %.2.lcssa, %.preheader ] + %.24066 = phi i32 [ %35, %.lr.ph68 ], [ %.139.lcssa8894, %.preheader ] + %35 = add i32 %.24066, -1 + %36 = zext i32 %35 to i64 + %37 = getelementptr inbounds nuw [10 x i8], ptr %5, i64 0, i64 %36 + %38 = load i8, ptr %37, align 1, !tbaa !27 + %39 = getelementptr inbounds nuw i8, ptr %.367, i64 1 + store i8 %38, ptr %.367, align 1, !tbaa !27 + %.not46 = icmp ult i32 %35, %spec.select br i1 %.not46, label %.loopexit, label %.lr.ph68, !llvm.loop !152 ._crit_edge.thread: ; preds = %11, %._crit_edge %.0358085 = phi ptr [ %.03579, %._crit_edge ], [ %1, %11 ] - %39 = getelementptr inbounds nuw i8, ptr %.0358085, i64 1 + %40 = getelementptr inbounds nuw i8, ptr %.0358085, i64 1 store i8 48, ptr %.0358085, align 1, !tbaa !27 br label %.loopexit -.loopexit: ; preds = %.lr.ph68, %.preheader, %._crit_edge56, %._crit_edge.thread - %.4 = phi ptr [ %.1.lcssa, %._crit_edge56 ], [ %39, %._crit_edge.thread ], [ %.2.lcssa, %.preheader ], [ %38, %.lr.ph68 ] +.loopexit: ; preds = %.lr.ph68, %._crit_edge56.thread, %.preheader, %._crit_edge56, %._crit_edge.thread + %.4 = phi ptr [ %.03579, %._crit_edge56 ], [ %40, %._crit_edge.thread ], [ %.2.lcssa, %.preheader ], [ %26, %._crit_edge56.thread ], [ %39, %.lr.ph68 ] store i8 0, ptr %.4, align 1, !tbaa !27 call void @llvm.lifetime.end.p0(i64 10, ptr nonnull %5) #30 ret void -40: ; preds = %4 +41: ; preds = %4 tail call void @png_error(ptr noundef %0, ptr noundef nonnull @.str.55) #28 unreachable } diff --git a/bench/libquic/optimized/pcy_tree.ll b/bench/libquic/optimized/pcy_tree.ll index 7349f511d38..d0e46ba9208 100644 --- a/bench/libquic/optimized/pcy_tree.ll +++ b/bench/libquic/optimized/pcy_tree.ll @@ -206,8 +206,9 @@ define hidden range(i32 -2, 2) i32 @X509_policy_check(ptr noundef writeonly capt 43: ; preds = %33, %31 %.393.i = phi i32 [ %.191142.i, %31 ], [ %spec.select132.i, %33 ] %indvars.iv.next.i = add nsw i64 %indvars.iv.i, -1 - %44 = icmp sgt i64 %indvars.iv.i, 0 - br i1 %44, label %.lr.ph.i, label %._crit_edge.i, !llvm.loop !57 + %44 = and i64 %indvars.iv.next.i, 4294967295 + %exitcond.not.i = icmp eq i64 %44, 4294967295 + br i1 %exitcond.not.i, label %._crit_edge.i, label %.lr.ph.i, !llvm.loop !57 ._crit_edge.i: ; preds = %43 %.not110.i = icmp eq i32 %.198.i, 1 @@ -220,7 +221,7 @@ define hidden range(i32 -2, 2) i32 @X509_policy_check(ptr noundef writeonly capt br i1 %or.cond.i, label %tree_init.exit, label %tree_init.exit.thread57 ._crit_edge.thread.i: ; preds = %._crit_edge.i, %13 - %.191.lcssa157.i = phi i32 [ %.393.i, %._crit_edge.i ], [ %.090.i, %13 ] + %.191.lcssa159.i = phi i32 [ %.393.i, %._crit_edge.i ], [ %.090.i, %13 ] %48 = tail call noalias dereferenceable_or_null(48) ptr @malloc(i64 noundef 48) #9 %.not111.i = icmp eq ptr %48, null br i1 %.not111.i, label %tree_init.exit.thread, label %49 @@ -350,11 +351,12 @@ define hidden range(i32 -2, 2) i32 @X509_policy_check(ptr noundef writeonly capt 110: ; preds = %99, %95 %.3.i = phi i32 [ 0, %95 ], [ %spec.select134.i, %99 ] %indvars.iv.next152.i = add nsw i64 %indvars.iv151.i, -1 - %111 = icmp sgt i64 %indvars.iv151.i, 0 - br i1 %111, label %.lr.ph148.i, label %._crit_edge149.i, !llvm.loop !63 + %111 = and i64 %indvars.iv.next152.i, 4294967295 + %exitcond155.not.i = icmp eq i64 %111, 4294967295 + br i1 %exitcond155.not.i, label %._crit_edge149.i, label %.lr.ph148.i, !llvm.loop !63 ._crit_edge149.i: ; preds = %110, %.preheader.i - %.not115.i = icmp eq i32 %.191.lcssa157.i, 0 + %.not115.i = icmp eq i32 %.191.lcssa159.i, 0 br i1 %.not115.i, label %114, label %.thread72 112: ; preds = %58, %55 @@ -649,8 +651,9 @@ tree_link_any.exit.i: ; preds = %223, %._crit_edge.i 246: ; preds = %239, %.lr.ph.i29.i %indvars.iv.next.i.i = add nsw i64 %indvars.iv.i.i, -1 - %247 = icmp sgt i64 %indvars.iv.i.i, 0 - br i1 %247, label %.lr.ph.i29.i, label %.loopexit.i27.i.preheader, !llvm.loop !73 + %247 = and i64 %indvars.iv.next.i.i, 4294967295 + %exitcond.not.i.i = icmp eq i64 %247, 4294967295 + br i1 %exitcond.not.i.i, label %.loopexit.i27.i.preheader, label %.lr.ph.i29.i, !llvm.loop !73 .loopexit.i27.i.preheader: ; preds = %246, %230, %tree_link_any.exit.i br label %.loopexit.i27.i @@ -691,8 +694,9 @@ tree_link_any.exit.i: ; preds = %223, %._crit_edge.i 266: ; preds = %259, %.lr.ph47.i.i %indvars.iv.next50.i.i = add nsw i64 %indvars.iv49.i.i, -1 - %267 = icmp sgt i64 %indvars.iv49.i.i, 0 - br i1 %267, label %.lr.ph47.i.i, label %._crit_edge.i28.i, !llvm.loop !74 + %267 = and i64 %indvars.iv.next50.i.i, 4294967295 + %exitcond53.not.i.i = icmp eq i64 %267, 4294967295 + br i1 %exitcond53.not.i.i, label %._crit_edge.i28.i, label %.lr.ph47.i.i, !llvm.loop !74 ._crit_edge.i28.i: ; preds = %266, %.loopexit.i27.i %268 = getelementptr inbounds i8, ptr %.033.i.i, i64 -16 diff --git a/bench/libquic/optimized/shift.ll b/bench/libquic/optimized/shift.ll index fe6994279e0..4d7941b63ff 100644 --- a/bench/libquic/optimized/shift.ll +++ b/bench/libquic/optimized/shift.ll @@ -53,7 +53,7 @@ define hidden range(i32 0, 2) i32 @BN_lshift(ptr noundef %0, ptr noundef readonl %32 = zext nneg i32 %10 to i64 %33 = zext nneg i32 %10 to i64 %invariant.gep = getelementptr i64, ptr %22, i64 %32 - %invariant.gep58 = getelementptr i64, ptr %22, i64 %33 + %invariant.gep60 = getelementptr i64, ptr %22, i64 %33 %34 = add nuw nsw i64 %32, %31 %35 = shl nuw nsw i64 %34, 3 %scevgep = getelementptr i8, ptr %22, i64 %35 @@ -66,7 +66,7 @@ define hidden range(i32 0, 2) i32 @BN_lshift(ptr noundef %0, ptr noundef readonl .lr.ph51.preheader: ; preds = %.preheader %36 = zext nneg i32 %23 to i64 %37 = zext nneg i32 %10 to i64 - %invariant.gep60 = getelementptr i64, ptr %22, i64 %37 + %invariant.gep62 = getelementptr i64, ptr %22, i64 %37 br label %.lr.ph51 .lr.ph51: ; preds = %.lr.ph51.preheader, %.lr.ph51 @@ -74,10 +74,11 @@ define hidden range(i32 0, 2) i32 @BN_lshift(ptr noundef %0, ptr noundef readonl %indvars.iv.next55 = add nsw i64 %indvars.iv54, -1 %38 = getelementptr inbounds nuw i64, ptr %21, i64 %indvars.iv.next55 %39 = load i64, ptr %38, align 8, !tbaa !15 - %gep61 = getelementptr i64, ptr %invariant.gep60, i64 %indvars.iv.next55 - store i64 %39, ptr %gep61, align 8, !tbaa !15 - %40 = icmp samesign ugt i64 %indvars.iv54, 1 - br i1 %40, label %.lr.ph51, label %.loopexit, !llvm.loop !17 + %gep63 = getelementptr i64, ptr %invariant.gep62, i64 %indvars.iv.next55 + store i64 %39, ptr %gep63, align 8, !tbaa !15 + %40 = and i64 %indvars.iv.next55, 4294967295 + %exitcond58.not = icmp eq i64 %40, 0 + br i1 %exitcond58.not, label %.loopexit, label %.lr.ph51, !llvm.loop !17 41: ; preds = %.lr.ph, %41 %store_forwarded = phi i64 [ %load_initial, %.lr.ph ], [ %46, %41 ] @@ -90,10 +91,11 @@ define hidden range(i32 0, 2) i32 @BN_lshift(ptr noundef %0, ptr noundef readonl %45 = or i64 %store_forwarded, %44 store i64 %45, ptr %gep, align 8, !tbaa !15 %46 = shl i64 %43, %30 - %gep59 = getelementptr i64, ptr %invariant.gep58, i64 %indvars.iv.next - store i64 %46, ptr %gep59, align 8, !tbaa !15 - %47 = icmp samesign ugt i64 %indvars.iv, 1 - br i1 %47, label %41, label %.loopexit, !llvm.loop !19 + %gep61 = getelementptr i64, ptr %invariant.gep60, i64 %indvars.iv.next + store i64 %46, ptr %gep61, align 8, !tbaa !15 + %47 = and i64 %indvars.iv.next, 4294967295 + %exitcond.not = icmp eq i64 %47, 0 + br i1 %exitcond.not, label %.loopexit, label %41, !llvm.loop !19 .loopexit: ; preds = %41, %.lr.ph51, %.preheader47, %.preheader %48 = shl nuw nsw i32 %10, 3 @@ -388,8 +390,9 @@ define hidden range(i32 0, 2) i32 @BN_rshift1(ptr noundef %0, ptr noundef %1) lo %37 = tail call i64 @llvm.fshl.i64(i64 %.032.in40, i64 %36, i64 63) %38 = getelementptr inbounds nuw i64, ptr %24, i64 %indvars.iv.next store i64 %37, ptr %38, align 8, !tbaa !15 - %39 = icmp samesign ugt i64 %indvars.iv, 1 - br i1 %39, label %.lr.ph, label %._crit_edge, !llvm.loop !23 + %39 = and i64 %indvars.iv.next, 4294967295 + %exitcond.not = icmp eq i64 %39, 0 + br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !23 ._crit_edge: ; preds = %.lr.ph, %32 %40 = getelementptr inbounds nuw i8, ptr %0, i64 8 diff --git a/bench/libquic/optimized/url_canon_ip.ll b/bench/libquic/optimized/url_canon_ip.ll index 90910e0dfbe..3667253ba68 100644 --- a/bench/libquic/optimized/url_canon_ip.ll +++ b/bench/libquic/optimized/url_canon_ip.ll @@ -1280,7 +1280,7 @@ _ZN3url12_GLOBAL__N_111BaseForTypeENS_15SharedCharTypesE.exit.i.i: ; preds = %99 .lr.ph48.preheader.i: ; preds = %._crit_edge.i, %._crit_edge.thread.i %119 = phi i32 [ %109, %._crit_edge.thread.i ], [ %118, %._crit_edge.i ] - %120 = sext i32 %.247.i to i64 + %120 = add i32 %.247.i, -2 br label %.lr.ph48.i ._crit_edge49.i: ; preds = %.lr.ph48.i, %._crit_edge.i @@ -1296,8 +1296,9 @@ _ZN3url12_GLOBAL__N_111BaseForTypeENS_15SharedCharTypesE.exit.i.i: ; preds = %99 store i8 %121, ptr %122, align 1, !tbaa !3 %123 = lshr i32 %.03645.i, 8 %indvars.iv.next71.i = add nsw i64 %indvars.iv70.i, -1 - %.not55.i = icmp slt i64 %indvars.iv70.i, %120 - br i1 %.not55.i, label %._crit_edge49.i, label %.lr.ph48.i, !llvm.loop !43 + %lftr.wideiv = trunc i64 %indvars.iv.next71.i to i32 + %exitcond = icmp eq i32 %120, %lftr.wideiv + br i1 %exitcond, label %._crit_edge49.i, label %.lr.ph48.i, !llvm.loop !43 124: ; preds = %._crit_edge49.i store i32 %.247.i, ptr %3, align 4, !tbaa !40 @@ -1640,7 +1641,7 @@ _ZN3url12_GLOBAL__N_111BaseForTypeENS_15SharedCharTypesE.exit.i.i: ; preds = %10 .lr.ph48.preheader.i: ; preds = %._crit_edge.i, %._crit_edge.thread.i %120 = phi i32 [ %110, %._crit_edge.thread.i ], [ %119, %._crit_edge.i ] - %121 = sext i32 %.247.i to i64 + %121 = add i32 %.247.i, -2 br label %.lr.ph48.i ._crit_edge49.i: ; preds = %.lr.ph48.i, %._crit_edge.i @@ -1656,8 +1657,9 @@ _ZN3url12_GLOBAL__N_111BaseForTypeENS_15SharedCharTypesE.exit.i.i: ; preds = %10 store i8 %122, ptr %123, align 1, !tbaa !3 %124 = lshr i32 %.03645.i, 8 %indvars.iv.next71.i = add nsw i64 %indvars.iv70.i, -1 - %.not55.i = icmp slt i64 %indvars.iv70.i, %121 - br i1 %.not55.i, label %._crit_edge49.i, label %.lr.ph48.i, !llvm.loop !48 + %lftr.wideiv = trunc i64 %indvars.iv.next71.i to i32 + %exitcond = icmp eq i32 %121, %lftr.wideiv + br i1 %exitcond, label %._crit_edge49.i, label %.lr.ph48.i, !llvm.loop !48 125: ; preds = %._crit_edge49.i store i32 %.247.i, ptr %3, align 4, !tbaa !40 diff --git a/bench/libwebp/optimized/alpha_processing.ll b/bench/libwebp/optimized/alpha_processing.ll index 38fde8c5d96..636344971a8 100644 --- a/bench/libwebp/optimized/alpha_processing.ll +++ b/bench/libwebp/optimized/alpha_processing.ll @@ -220,7 +220,7 @@ define hidden void @WebPMultARGBRows(ptr noundef %0, i32 noundef %1, i32 noundef %.09 = phi i32 [ 0, %.lr.ph ], [ %11, %8 ] %.078 = phi ptr [ %0, %.lr.ph ], [ %10, %8 ] %9 = load ptr, ptr @WebPMultARGBRow, align 8, !tbaa !11 - tail call void %9(ptr noundef %.078, i32 noundef %2, i32 noundef %4) #5 + tail call void %9(ptr noundef %.078, i32 noundef %2, i32 noundef %4) #6 %10 = getelementptr inbounds i8, ptr %.078, i64 %7 %11 = add nuw nsw i32 %.09, 1 %exitcond.not = icmp eq i32 %11, %3 @@ -245,7 +245,7 @@ define hidden void @WebPMultRows(ptr noalias noundef %0, i32 noundef %1, ptr noa %.01013 = phi ptr [ %0, %.lr.ph ], [ %13, %11 ] %.01112 = phi ptr [ %2, %.lr.ph ], [ %14, %11 ] %12 = load ptr, ptr @WebPMultRow, align 8, !tbaa !11 - tail call void %12(ptr noundef %.01013, ptr noundef %.01112, i32 noundef %4, i32 noundef %6) #5 + tail call void %12(ptr noundef %.01013, ptr noundef %.01112, i32 noundef %4, i32 noundef %6) #6 %13 = getelementptr inbounds i8, ptr %.01013, i64 %9 %14 = getelementptr inbounds i8, ptr %.01112, i64 %10 %15 = add nuw nsw i32 %.014, 1 @@ -258,7 +258,7 @@ define hidden void @WebPMultRows(ptr noalias noundef %0, i32 noundef %1, ptr noa ; Function Attrs: nounwind uwtable define hidden void @WebPInitAlphaProcessing() local_unnamed_addr #1 { - %1 = tail call i32 @pthread_mutex_lock(ptr noundef nonnull @WebPInitAlphaProcessing.WebPInitAlphaProcessing_body_lock) #5 + %1 = tail call i32 @pthread_mutex_lock(ptr noundef nonnull @WebPInitAlphaProcessing.WebPInitAlphaProcessing_body_lock) #6 %.not = icmp eq i32 %1, 0 br i1 %.not, label %2, label %14 @@ -285,25 +285,25 @@ define hidden void @WebPInitAlphaProcessing() local_unnamed_addr #1 { br i1 %.not.i, label %WebPInitAlphaProcessing_body.exit, label %6 6: ; preds = %5 - %7 = tail call i32 %4(i32 noundef 0) #5 + %7 = tail call i32 %4(i32 noundef 0) #6 %.not1.i = icmp eq i32 %7, 0 br i1 %.not1.i, label %WebPInitAlphaProcessing_body.exit, label %8 8: ; preds = %6 - tail call void @WebPInitAlphaProcessingSSE2() #5 + tail call void @WebPInitAlphaProcessingSSE2() #6 %9 = load ptr, ptr @VP8GetCPUInfo, align 8, !tbaa !11 - %10 = tail call i32 %9(i32 noundef 3) #5 + %10 = tail call i32 %9(i32 noundef 3) #6 %.not2.i = icmp eq i32 %10, 0 br i1 %.not2.i, label %WebPInitAlphaProcessing_body.exit, label %11 11: ; preds = %8 - tail call void @WebPInitAlphaProcessingSSE41() #5 + tail call void @WebPInitAlphaProcessingSSE41() #6 br label %WebPInitAlphaProcessing_body.exit WebPInitAlphaProcessing_body.exit: ; preds = %11, %8, %6, %5, %2 %12 = load ptr, ptr @VP8GetCPUInfo, align 8, !tbaa !11 store volatile ptr %12, ptr @WebPInitAlphaProcessing.WebPInitAlphaProcessing_body_last_cpuinfo_used, align 8, !tbaa !11 - %13 = tail call i32 @pthread_mutex_unlock(ptr noundef nonnull @WebPInitAlphaProcessing.WebPInitAlphaProcessing_body_lock) #5 + %13 = tail call i32 @pthread_mutex_unlock(ptr noundef nonnull @WebPInitAlphaProcessing.WebPInitAlphaProcessing_body_lock) #6 br label %14 14: ; preds = %0, %WebPInitAlphaProcessing_body.exit @@ -379,8 +379,8 @@ define internal void @ApplyAlphaMultiply_16b_C(ptr noundef captures(none) %0, i3 ._crit_edge.us.i: ; preds = %8 %41 = add nsw i32 %.in.i, -1 %42 = getelementptr inbounds i8, ptr %.032.us.i, i64 %7 - %43 = icmp samesign ugt i32 %.in.i, 1 - br i1 %43, label %.preheader.us.i, label %ApplyAlphaMultiply4444_C.exit, !llvm.loop !16 + %exitcond36.not.i = icmp eq i32 %41, 0 + br i1 %exitcond36.not.i, label %ApplyAlphaMultiply4444_C.exit, label %.preheader.us.i, !llvm.loop !16 ApplyAlphaMultiply4444_C.exit: ; preds = %._crit_edge.us.i, %4, %.preheader.lr.ph.i ret void @@ -490,8 +490,8 @@ define internal void @ApplyAlphaMultiply_C(ptr noundef captures(none) %0, i32 no ._crit_edge.us: ; preds = %39 %40 = getelementptr inbounds i8, ptr %.033.us, i64 %10 - %41 = icmp sgt i32 %.in, 1 - br i1 %41, label %.lr.ph.us, label %._crit_edge36, !llvm.loop !19 + %exitcond39.not = icmp eq i32 %11, 0 + br i1 %exitcond39.not, label %._crit_edge36, label %.lr.ph.us, !llvm.loop !19 ._crit_edge36: ; preds = %._crit_edge.us, %.lr.ph35, %5 ret void @@ -673,23 +673,24 @@ define internal void @ExtractGreen_C(ptr noalias noundef readonly captures(none) ; Function Attrs: nofree norecurse nosync nounwind memory(argmem: read) uwtable define internal range(i32 0, 2) i32 @HasAlpha8b_C(ptr noundef readonly captures(none) %0, i32 noundef %1) #3 { + %smin = tail call i32 @llvm.smin.i32(i32 %1, i32 0) br label %3 -3: ; preds = %5, %2 - %.02 = phi ptr [ %0, %2 ], [ %7, %5 ] - %.0 = phi i32 [ %1, %2 ], [ %6, %5 ] - %4 = icmp sgt i32 %.0, 0 - br i1 %4, label %5, label %9 - -5: ; preds = %3 - %6 = add nsw i32 %.0, -1 - %7 = getelementptr inbounds nuw i8, ptr %.02, i64 1 - %8 = load i8, ptr %.02, align 1, !tbaa !9 - %.not = icmp eq i8 %8, -1 - br i1 %.not, label %3, label %9, !llvm.loop !27 - -9: ; preds = %3, %5 - %.03 = phi i32 [ 1, %5 ], [ 0, %3 ] +3: ; preds = %4, %2 + %.02 = phi ptr [ %0, %2 ], [ %6, %4 ] + %.0 = phi i32 [ %1, %2 ], [ %5, %4 ] + %exitcond.not = icmp eq i32 %.0, %smin + br i1 %exitcond.not, label %8, label %4 + +4: ; preds = %3 + %5 = add i32 %.0, -1 + %6 = getelementptr inbounds nuw i8, ptr %.02, i64 1 + %7 = load i8, ptr %.02, align 1, !tbaa !9 + %.not = icmp eq i8 %7, -1 + br i1 %.not, label %3, label %8, !llvm.loop !27 + +8: ; preds = %3, %4 + %.03 = phi i32 [ 1, %4 ], [ 0, %3 ] ret i32 %.03 } @@ -700,16 +701,16 @@ define internal range(i32 0, 2) i32 @HasAlpha32b_C(ptr noundef readonly captures 4: ; preds = %.lr.ph %indvars.iv.next = add nuw nsw i64 %indvars.iv, 4 - %5 = add nsw i32 %.in, -1 - %6 = icmp sgt i32 %.in, 1 - br i1 %6, label %.lr.ph, label %._crit_edge, !llvm.loop !28 + %5 = add i32 %.in, -1 + %exitcond.not = icmp eq i32 %5, 0 + br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !28 .lr.ph: ; preds = %2, %4 %indvars.iv = phi i64 [ %indvars.iv.next, %4 ], [ 0, %2 ] %.in = phi i32 [ %5, %4 ], [ %1, %2 ] - %7 = getelementptr inbounds nuw i8, ptr %0, i64 %indvars.iv - %8 = load i8, ptr %7, align 1, !tbaa !9 - %.not = icmp eq i8 %8, -1 + %6 = getelementptr inbounds nuw i8, ptr %0, i64 %indvars.iv + %7 = load i8, ptr %6, align 1, !tbaa !9 + %.not = icmp eq i8 %7, -1 br i1 %.not, label %4, label %._crit_edge ._crit_edge: ; preds = %.lr.ph, %4, %2 @@ -750,12 +751,16 @@ declare void @WebPInitAlphaProcessingSSE2() local_unnamed_addr #4 declare void @WebPInitAlphaProcessingSSE41() local_unnamed_addr #4 +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare i32 @llvm.smin.i32(i32, i32) #5 + attributes #0 = { nofree norecurse nosync nounwind memory(argmem: readwrite) uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #2 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #3 = { nofree norecurse nosync nounwind memory(argmem: read) uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #4 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { nounwind } +attributes #5 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } +attributes #6 = { nounwind } !llvm.module.flags = !{!0, !1, !2} diff --git a/bench/libwebp/optimized/backward_references_enc.ll b/bench/libwebp/optimized/backward_references_enc.ll index 632267cf129..aa5c9a0bc46 100644 --- a/bench/libwebp/optimized/backward_references_enc.ll +++ b/bench/libwebp/optimized/backward_references_enc.ll @@ -908,8 +908,8 @@ GetBackwardReferencesLowEffort.exit: ; preds = %72, %VP8LRefsCursor br i1 %.not257.i, label %.preheader246..preheader_crit_edge.i, label %.lr.ph.i .preheader246..preheader_crit_edge.i: ; preds = %.preheader246.i - %.pre280.i = add nsw i32 %0, -8 - %.pre281.i = add i32 %0, 24 + %.pre281.i = add nsw i32 %0, -8 + %.pre282.i = add i32 %0, 24 br label %.preheader.i .lr.ph.i: ; preds = %.preheader246.i @@ -922,7 +922,7 @@ GetBackwardReferencesLowEffort.exit: ; preds = %72, %VP8LRefsCursor %96 = zext nneg i32 %93 to i64 %97 = add nsw i32 %0, -8 %98 = add i32 %0, 24 - %wide.trip.count289.i.i = zext nneg i32 %90 to i64 + %wide.trip.count290.i.i = zext nneg i32 %90 to i64 %99 = getelementptr inbounds nuw i8, ptr %87, i64 16 %100 = getelementptr inbounds nuw i8, ptr %87, i64 24 %101 = getelementptr i8, ptr %87, i64 8 @@ -958,8 +958,8 @@ GetBackwardReferencesLowEffort.exit: ; preds = %72, %VP8LRefsCursor br label %.preheader.i .preheader.i: ; preds = %.preheader.loopexit.i, %.preheader246..preheader_crit_edge.i - %.pre-phi282.i = phi i32 [ %.pre281.i, %.preheader246..preheader_crit_edge.i ], [ %98, %.preheader.loopexit.i ] - %.pre-phi.i = phi i32 [ %.pre280.i, %.preheader246..preheader_crit_edge.i ], [ %97, %.preheader.loopexit.i ] + %.pre-phi283.i = phi i32 [ %.pre282.i, %.preheader246..preheader_crit_edge.i ], [ %98, %.preheader.loopexit.i ] + %.pre-phi.i = phi i32 [ %.pre281.i, %.preheader246..preheader_crit_edge.i ], [ %97, %.preheader.loopexit.i ] %121 = phi i32 [ 0, %.preheader246..preheader_crit_edge.i ], [ %.pre.i, %.preheader.loopexit.i ] %122 = icmp sgt i32 %3, 24 %123 = getelementptr inbounds nuw i8, ptr %87, i64 16 @@ -1364,8 +1364,9 @@ BackwardReferencesRle.exit.i: ; preds = %VP8LBackwardRefsCur store i16 %storemerge.i.i, ptr %.0147228.i.i, align 2, !tbaa !51 %indvars.iv.next.i.i = add nsw i64 %indvars.iv.i.i, -1 %307 = getelementptr inbounds i8, ptr %.0147228.i.i, i64 -2 - %308 = icmp sgt i64 %indvars.iv.i.i, 0 - br i1 %308, label %.lr.ph.i133.i, label %.preheader222.i.i.preheader, !llvm.loop !52 + %308 = and i64 %indvars.iv.next.i.i, 4294967295 + %exitcond.not.i.i = icmp eq i64 %308, 4294967295 + br i1 %exitcond.not.i.i, label %.preheader222.i.i.preheader, label %.lr.ph.i133.i, !llvm.loop !52 .preheader222.i.i.preheader: ; preds = %306, %292 br label %.preheader222.i.i @@ -1423,13 +1424,13 @@ VP8LDistanceToPlaneCode.exit.i.i48: ; preds = %324, %318 VP8LDistanceToPlaneCode.exit.thread.i.i: ; preds = %328, %VP8LDistanceToPlaneCode.exit.i.i48, %321, %310 %331 = add nsw i32 %.0169230.i.i, 1 - %exitcond.not.i.i = icmp eq i32 %331, 7 - br i1 %exitcond.not.i.i, label %332, label %310, !llvm.loop !53 + %exitcond262.not.i.i = icmp eq i32 %331, 7 + br i1 %exitcond262.not.i.i, label %332, label %310, !llvm.loop !53 332: ; preds = %VP8LDistanceToPlaneCode.exit.thread.i.i %333 = add nuw nsw i32 %.0168231.i.i, 1 - %exitcond262.not.i.i = icmp eq i32 %333, 7 - br i1 %exitcond262.not.i.i, label %.preheader221.i.i, label %.preheader222.i.i, !llvm.loop !54 + %exitcond263.not.i.i = icmp eq i32 %333, 7 + br i1 %exitcond263.not.i.i, label %.preheader221.i.i, label %.preheader222.i.i, !llvm.loop !54 .preheader220.i.i: ; preds = %357 %334 = icmp sgt i32 %.1149.i.i, 0 @@ -1440,9 +1441,9 @@ VP8LDistanceToPlaneCode.exit.thread.i.i: ; preds = %328, %VP8LDistanceT br label %.preheader219.us.i.i .preheader219.us.i.i: ; preds = %342, %.preheader219.us.preheader.i.i - %indvars.iv270.i.i = phi i64 [ 0, %.preheader219.us.preheader.i.i ], [ %indvars.iv.next271.i.i, %342 ] + %indvars.iv271.i.i = phi i64 [ 0, %.preheader219.us.preheader.i.i ], [ %indvars.iv.next272.i.i, %342 ] %.0164236.us.i.i = phi i32 [ 0, %.preheader219.us.preheader.i.i ], [ %.1165.us.i.i, %342 ] - %336 = getelementptr inbounds nuw [32 x i32], ptr %21, i64 0, i64 %indvars.iv270.i.i + %336 = getelementptr inbounds nuw [32 x i32], ptr %21, i64 0, i64 %indvars.iv271.i.i %337 = load i32, ptr %336, align 4, !tbaa !32 br label %343 @@ -1455,18 +1456,18 @@ VP8LDistanceToPlaneCode.exit.thread.i.i: ; preds = %328, %VP8LDistanceT 342: ; preds = %._crit_edge.us.i.i, %338 %.1165.us.i.i = phi i32 [ %.0164236.us.i.i, %._crit_edge.us.i.i ], [ %341, %338 ] - %indvars.iv.next271.i.i = add nuw nsw i64 %indvars.iv270.i.i, 1 - %exitcond274.not.i.i = icmp eq i64 %indvars.iv.next271.i.i, %335 - br i1 %exitcond274.not.i.i, label %._crit_edge238.i.i, label %.preheader219.us.i.i, !llvm.loop !55 + %indvars.iv.next272.i.i = add nuw nsw i64 %indvars.iv271.i.i, 1 + %exitcond275.not.i.i = icmp eq i64 %indvars.iv.next272.i.i, %335 + br i1 %exitcond275.not.i.i, label %._crit_edge238.i.i, label %.preheader219.us.i.i, !llvm.loop !55 343: ; preds = %343, %.preheader219.us.i.i - %indvars.iv267.i.i = phi i64 [ 0, %.preheader219.us.i.i ], [ %indvars.iv.next268.i.i, %343 ] - %344 = getelementptr inbounds nuw [32 x i32], ptr %21, i64 0, i64 %indvars.iv267.i.i + %indvars.iv268.i.i = phi i64 [ 0, %.preheader219.us.i.i ], [ %indvars.iv.next269.i.i, %343 ] + %344 = getelementptr inbounds nuw [32 x i32], ptr %21, i64 0, i64 %indvars.iv268.i.i %345 = load i32, ptr %344, align 4, !tbaa !32 %346 = add nsw i32 %345, 1 %347 = icmp ne i32 %337, %346 - %indvars.iv.next268.i.i = add nuw nsw i64 %indvars.iv267.i.i, 1 - %348 = icmp samesign ult i64 %indvars.iv.next268.i.i, %335 + %indvars.iv.next269.i.i = add nuw nsw i64 %indvars.iv268.i.i, 1 + %348 = icmp samesign ult i64 %indvars.iv.next269.i.i, %335 %349 = select i1 %348, i1 %347, i1 false br i1 %349, label %343, label %._crit_edge.us.i.i, !llvm.loop !56 @@ -1474,9 +1475,9 @@ VP8LDistanceToPlaneCode.exit.thread.i.i: ; preds = %328, %VP8LDistanceT br i1 %347, label %338, label %342 .preheader221.i.i: ; preds = %332, %357 - %indvars.iv263.i.i = phi i64 [ %indvars.iv.next264.i.i, %357 ], [ 0, %332 ] + %indvars.iv264.i.i = phi i64 [ %indvars.iv.next265.i.i, %357 ], [ 0, %332 ] %.0148232.i.i = phi i32 [ %.1149.i.i, %357 ], [ 0, %332 ] - %350 = getelementptr inbounds nuw [32 x i32], ptr %21, i64 0, i64 %indvars.iv263.i.i + %350 = getelementptr inbounds nuw [32 x i32], ptr %21, i64 0, i64 %indvars.iv264.i.i %351 = load i32, ptr %350, align 4, !tbaa !32 %352 = icmp eq i32 %351, 0 br i1 %352, label %357, label %353 @@ -1490,9 +1491,9 @@ VP8LDistanceToPlaneCode.exit.thread.i.i: ; preds = %328, %VP8LDistanceT 357: ; preds = %353, %.preheader221.i.i %.1149.i.i = phi i32 [ %.0148232.i.i, %.preheader221.i.i ], [ %354, %353 ] - %indvars.iv.next264.i.i = add nuw nsw i64 %indvars.iv263.i.i, 1 - %exitcond266.not.i.i = icmp eq i64 %indvars.iv.next264.i.i, 32 - br i1 %exitcond266.not.i.i, label %.preheader220.i.i, label %.preheader221.i.i, !llvm.loop !57 + %indvars.iv.next265.i.i = add nuw nsw i64 %indvars.iv264.i.i, 1 + %exitcond267.not.i.i = icmp eq i64 %indvars.iv.next265.i.i, 32 + br i1 %exitcond267.not.i.i, label %.preheader220.i.i, label %.preheader221.i.i, !llvm.loop !57 ._crit_edge238.i.i: ; preds = %342, %.preheader220.i.i %.0164.lcssa.i.i = phi i32 [ 0, %.preheader220.i.i ], [ %.1165.us.i.i, %342 ] @@ -1502,14 +1503,14 @@ VP8LDistanceToPlaneCode.exit.thread.i.i: ; preds = %328, %VP8LDistanceT .lr.ph254.i.i: ; preds = %._crit_edge238.i.i %.val192.i.i = load ptr, ptr %8, align 8, !tbaa !28 - %wide.trip.count279.i.i = zext nneg i32 %.1149.i.i to i64 + %wide.trip.count280.i.i = zext nneg i32 %.1149.i.i to i64 br label %359 359: ; preds = %417, %.lr.ph254.i.i - %indvars.iv286.i.i = phi i64 [ 1, %.lr.ph254.i.i ], [ %indvars.iv.next287.i.i, %417 ] + %indvars.iv287.i.i = phi i64 [ 1, %.lr.ph254.i.i ], [ %indvars.iv.next288.i.i, %417 ] %.0166251.i.i = phi i32 [ -1, %.lr.ph254.i.i ], [ %.1167.i.i, %417 ] %.0172250.i.i = phi i32 [ -1, %.lr.ph254.i.i ], [ %.1173.i.i, %417 ] - %360 = getelementptr inbounds nuw i32, ptr %.val192.i.i, i64 %indvars.iv286.i.i + %360 = getelementptr inbounds nuw i32, ptr %.val192.i.i, i64 %indvars.iv287.i.i %361 = load i32, ptr %360, align 4, !tbaa !32 %362 = and i32 %361, 4095 %363 = icmp eq i32 %362, 4095 @@ -1520,13 +1521,13 @@ VP8LDistanceToPlaneCode.exit.thread.i.i: ; preds = %328, %VP8LDistanceT br i1 %334, label %.lr.ph241.i.i, label %.loopexit217.i.i 366: ; preds = %.lr.ph241.i.i - %indvars.iv.next276.i.i = add nuw nsw i64 %indvars.iv275.i.i, 1 - %exitcond280.not.i.i = icmp eq i64 %indvars.iv.next276.i.i, %wide.trip.count279.i.i - br i1 %exitcond280.not.i.i, label %.loopexit217.i.i, label %.lr.ph241.i.i, !llvm.loop !58 + %indvars.iv.next277.i.i = add nuw nsw i64 %indvars.iv276.i.i, 1 + %exitcond281.not.i.i = icmp eq i64 %indvars.iv.next277.i.i, %wide.trip.count280.i.i + br i1 %exitcond281.not.i.i, label %.loopexit217.i.i, label %.lr.ph241.i.i, !llvm.loop !58 .lr.ph241.i.i: ; preds = %364, %366 - %indvars.iv275.i.i = phi i64 [ %indvars.iv.next276.i.i, %366 ], [ 0, %364 ] - %367 = getelementptr inbounds nuw [32 x i32], ptr %21, i64 0, i64 %indvars.iv275.i.i + %indvars.iv276.i.i = phi i64 [ %indvars.iv.next277.i.i, %366 ], [ 0, %364 ] + %367 = getelementptr inbounds nuw [32 x i32], ptr %21, i64 0, i64 %indvars.iv276.i.i %368 = load i32, ptr %367, align 4, !tbaa !32 %369 = icmp eq i32 %365, %368 br i1 %369, label %.loopexit.thread.i.i, label %366 @@ -1542,17 +1543,17 @@ VP8LDistanceToPlaneCode.exit.thread.i.i: ; preds = %328, %VP8LDistanceT br i1 %376, label %.lr.ph245.i.i, label %.loopexit.i.i .lr.ph245.i.i: ; preds = %.loopexit217.i.i - %377 = getelementptr inbounds nuw i32, ptr %2, i64 %indvars.iv286.i.i - %wide.trip.count284.i.i = zext nneg i32 %372 to i64 - %378 = trunc nuw nsw i64 %indvars.iv286.i.i to i32 + %377 = getelementptr inbounds nuw i32, ptr %2, i64 %indvars.iv287.i.i + %wide.trip.count285.i.i = zext nneg i32 %372 to i64 + %378 = trunc nuw nsw i64 %indvars.iv287.i.i to i32 br label %379 379: ; preds = %.thread207.i.i, %.lr.ph245.i.i - %indvars.iv281.i.i = phi i64 [ 0, %.lr.ph245.i.i ], [ %indvars.iv.next282.i.i, %.thread207.i.i ] + %indvars.iv282.i.i = phi i64 [ 0, %.lr.ph245.i.i ], [ %indvars.iv.next283.i.i, %.thread207.i.i ] %.3154244.i.i = phi i32 [ %375, %.lr.ph245.i.i ], [ %.5214.i.i, %.thread207.i.i ] %.1156243.i.i = phi i32 [ %374, %.lr.ph245.i.i ], [ %.3158213.i.i, %.thread207.i.i ] - %380 = getelementptr inbounds nuw [32 x i32], ptr %22, i64 0, i64 %indvars.iv281.i.i - %381 = getelementptr inbounds nuw [32 x i32], ptr %21, i64 0, i64 %indvars.iv281.i.i + %380 = getelementptr inbounds nuw [32 x i32], ptr %22, i64 0, i64 %indvars.iv282.i.i + %381 = getelementptr inbounds nuw [32 x i32], ptr %21, i64 0, i64 %indvars.iv282.i.i %.pn.in.i.i = select i1 %371, ptr %380, ptr %381 %.pn.i132.i = load i32, ptr %.pn.in.i.i, align 4, !tbaa !32 %382 = sub nsw i32 %378, %.pn.i132.i @@ -1618,9 +1619,9 @@ VP8LDistanceToPlaneCode.exit.thread.i.i: ; preds = %328, %VP8LDistanceT .thread207.i.i: ; preds = %412, %.critedge.i.i, %384, %379 %.5214.i.i = phi i32 [ %.pn.i132.i, %412 ], [ %.3154244.i.i, %384 ], [ %.3154244.i.i, %379 ], [ %.3154244.i.i, %.critedge.i.i ] %.3158213.i.i = phi i32 [ %.1146205.i.i, %412 ], [ %.1156243.i.i, %384 ], [ %.1156243.i.i, %379 ], [ %.1156243.i.i, %.critedge.i.i ] - %indvars.iv.next282.i.i = add nuw nsw i64 %indvars.iv281.i.i, 1 - %exitcond285.not.i.i = icmp eq i64 %indvars.iv.next282.i.i, %wide.trip.count284.i.i - br i1 %exitcond285.not.i.i, label %.loopexit.i.i, label %379, !llvm.loop !60 + %indvars.iv.next283.i.i = add nuw nsw i64 %indvars.iv282.i.i, 1 + %exitcond286.not.i.i = icmp eq i64 %indvars.iv.next283.i.i, %wide.trip.count285.i.i + br i1 %exitcond286.not.i.i, label %.loopexit.i.i, label %379, !llvm.loop !60 .loopexit.i.i: ; preds = %.thread207.i.i, %.loopexit217.i.i %.0155.i.i = phi i32 [ %374, %.loopexit217.i.i ], [ %.3158213.i.i, %.thread207.i.i ] @@ -1629,21 +1630,21 @@ VP8LDistanceToPlaneCode.exit.thread.i.i: ; preds = %328, %VP8LDistanceT br i1 %414, label %417, label %.loopexit.thread.i.i .loopexit.thread.i.i: ; preds = %.lr.ph241.i.i, %412, %.loopexit.i.i - %.2153294.i.i = phi i32 [ %.2153.i.i, %.loopexit.i.i ], [ %.pn.i132.i, %412 ], [ %365, %.lr.ph241.i.i ] - %.0155293.i.i = phi i32 [ %.0155.i.i, %.loopexit.i.i ], [ 4095, %412 ], [ 4095, %.lr.ph241.i.i ] - %415 = shl i32 %.2153294.i.i, 12 - %416 = or i32 %415, %.0155293.i.i + %.2153295.i.i = phi i32 [ %.2153.i.i, %.loopexit.i.i ], [ %.pn.i132.i, %412 ], [ %365, %.lr.ph241.i.i ] + %.0155294.i.i = phi i32 [ %.0155.i.i, %.loopexit.i.i ], [ 4095, %412 ], [ 4095, %.lr.ph241.i.i ] + %415 = shl i32 %.2153295.i.i, 12 + %416 = or i32 %415, %.0155294.i.i br label %417 417: ; preds = %.loopexit.thread.i.i, %.loopexit.i.i %.sink.i.i = phi i32 [ %416, %.loopexit.thread.i.i ], [ 0, %.loopexit.i.i ] - %.1173.i.i = phi i32 [ %.0155293.i.i, %.loopexit.thread.i.i ], [ 0, %.loopexit.i.i ] - %.1167.i.i = phi i32 [ %.2153294.i.i, %.loopexit.thread.i.i ], [ 0, %.loopexit.i.i ] - %418 = getelementptr inbounds nuw i32, ptr %358, i64 %indvars.iv286.i.i + %.1173.i.i = phi i32 [ %.0155294.i.i, %.loopexit.thread.i.i ], [ 0, %.loopexit.i.i ] + %.1167.i.i = phi i32 [ %.2153295.i.i, %.loopexit.thread.i.i ], [ 0, %.loopexit.i.i ] + %418 = getelementptr inbounds nuw i32, ptr %358, i64 %indvars.iv287.i.i store i32 %.sink.i.i, ptr %418, align 4, !tbaa !32 - %indvars.iv.next287.i.i = add nuw nsw i64 %indvars.iv286.i.i, 1 - %exitcond290.not.i.i = icmp eq i64 %indvars.iv.next287.i.i, %wide.trip.count289.i.i - br i1 %exitcond290.not.i.i, label %._crit_edge.i.i, label %359, !llvm.loop !61 + %indvars.iv.next288.i.i = add nuw nsw i64 %indvars.iv287.i.i, 1 + %exitcond291.not.i.i = icmp eq i64 %indvars.iv.next288.i.i, %wide.trip.count290.i.i + br i1 %exitcond291.not.i.i, label %._crit_edge.i.i, label %359, !llvm.loop !61 ._crit_edge.i.i: ; preds = %417, %._crit_edge238.i.i store i32 0, ptr %358, align 4, !tbaa !32 @@ -1790,9 +1791,9 @@ VP8LRefsCursorInit.exit.i.i45: ; preds = %428, %426 br label %.lr.ph139.i.i .lr.ph139.i.i: ; preds = %512, %.lr.ph139.preheader.i.i - %indvars.iv168.i.i = phi i64 [ %111, %.lr.ph139.preheader.i.i ], [ %indvars.iv.next169.i.i, %512 ] + %indvars.iv169.i.i = phi i64 [ %111, %.lr.ph139.preheader.i.i ], [ %indvars.iv.next170.i.i, %512 ] %.091138.i.i = phi i32 [ %478, %.lr.ph139.preheader.i.i ], [ %513, %512 ] - %479 = getelementptr inbounds nuw [11 x %struct.VP8LColorCache], ptr %19, i64 0, i64 %indvars.iv168.i.i + %479 = getelementptr inbounds nuw [11 x %struct.VP8LColorCache], ptr %19, i64 0, i64 %indvars.iv169.i.i %.val115.i.i = load ptr, ptr %479, align 16, !tbaa !69 %480 = zext i32 %.091138.i.i to i64 %481 = getelementptr inbounds nuw i32, ptr %.val115.i.i, i64 %480 @@ -1801,7 +1802,7 @@ VP8LRefsCursorInit.exit.i.i45: ; preds = %428, %426 br i1 %483, label %484, label %493 484: ; preds = %.lr.ph139.i.i - %485 = getelementptr inbounds nuw [11 x ptr], ptr %20, i64 0, i64 %indvars.iv168.i.i + %485 = getelementptr inbounds nuw [11 x ptr], ptr %20, i64 0, i64 %indvars.iv169.i.i %486 = load ptr, ptr %485, align 8, !tbaa !36 %487 = load ptr, ptr %486, align 8, !tbaa !66 %488 = sext i32 %.091138.i.i to i64 @@ -1814,7 +1815,7 @@ VP8LRefsCursorInit.exit.i.i45: ; preds = %428, %426 493: ; preds = %.lr.ph139.i.i store i32 %453, ptr %481, align 4, !tbaa !32 - %494 = getelementptr inbounds nuw [11 x ptr], ptr %20, i64 0, i64 %indvars.iv168.i.i + %494 = getelementptr inbounds nuw [11 x ptr], ptr %20, i64 0, i64 %indvars.iv169.i.i %495 = load ptr, ptr %494, align 8, !tbaa !36 %496 = getelementptr inbounds nuw i8, ptr %495, i64 1032 %497 = getelementptr inbounds nuw [256 x i32], ptr %496, i64 0, i64 %460 @@ -1839,10 +1840,11 @@ VP8LRefsCursorInit.exit.i.i45: ; preds = %428, %426 br label %512 512: ; preds = %493, %484 - %indvars.iv.next169.i.i = add nsw i64 %indvars.iv168.i.i, -1 + %indvars.iv.next170.i.i = add nsw i64 %indvars.iv169.i.i, -1 %513 = ashr i32 %.091138.i.i, 1 - %514 = icmp sgt i64 %indvars.iv168.i.i, 1 - br i1 %514, label %.lr.ph139.i.i, label %.loopexit123.i.i, !llvm.loop !71 + %514 = and i64 %indvars.iv.next170.i.i, 4294967295 + %exitcond173.not.i.i = icmp eq i64 %514, 0 + br i1 %exitcond173.not.i.i, label %.loopexit123.i.i, label %.lr.ph139.i.i, !llvm.loop !71 515: ; preds = %450 %516 = getelementptr i8, ptr %.sroa.0.0143.i.i, i64 2 @@ -1913,8 +1915,9 @@ VP8LPrefixEncode.exit.i.i: ; preds = %525, %521 store i32 %538, ptr %545, align 4, !tbaa !32 %indvars.iv.next166.i.i = add nsw i64 %indvars.iv165.i.i, -1 %546 = ashr i32 %.088135.us.i.i, 1 - %547 = icmp sgt i64 %indvars.iv165.i.i, 1 - br i1 %547, label %541, label %._crit_edge.us.i145.i, !llvm.loop !73 + %547 = and i64 %indvars.iv.next166.i.i, 4294967295 + %exitcond168.not.i.i = icmp eq i64 %547, 0 + br i1 %exitcond168.not.i.i, label %._crit_edge.us.i145.i, label %541, !llvm.loop !73 ._crit_edge.us.i145.i: ; preds = %541, %.preheader124.split.us.i.i %.1.us.i.i = phi i32 [ %.089.us.i.i, %.preheader124.split.us.i.i ], [ %538, %541 ] @@ -1966,45 +1969,45 @@ VP8LRefsCursorNext.exit.i.i46: ; preds = %563, %.loopexit123. .lr.ph149.i.i: ; preds = %.preheader.i141.i, %.lr.ph149.i.i %.1203.i = phi i32 [ %spec.select238.i, %.lr.ph149.i.i ], [ %422, %.preheader.i141.i ] - %indvars.iv171.i.i = phi i64 [ %indvars.iv.next172.i.i, %.lr.ph149.i.i ], [ 0, %.preheader.i141.i ] + %indvars.iv174.i.i = phi i64 [ %indvars.iv.next175.i.i, %.lr.ph149.i.i ], [ 0, %.preheader.i141.i ] %.097147.i.i = phi i64 [ %spec.select239.i, %.lr.ph149.i.i ], [ -1, %.preheader.i141.i ] - %570 = getelementptr inbounds nuw [11 x ptr], ptr %20, i64 0, i64 %indvars.iv171.i.i + %570 = getelementptr inbounds nuw [11 x ptr], ptr %20, i64 0, i64 %indvars.iv174.i.i %571 = load ptr, ptr %570, align 8, !tbaa !36 %572 = call i64 @VP8LHistogramEstimateBits(ptr noundef %571) #11 - %573 = icmp eq i64 %indvars.iv171.i.i, 0 + %573 = icmp eq i64 %indvars.iv174.i.i, 0 %574 = icmp ult i64 %572, %.097147.i.i %or.cond.i142.i = select i1 %573, i1 true, i1 %574 - %575 = trunc nuw nsw i64 %indvars.iv171.i.i to i32 + %575 = trunc nuw nsw i64 %indvars.iv174.i.i to i32 %spec.select238.i = select i1 %or.cond.i142.i, i32 %575, i32 %.1203.i %spec.select239.i = select i1 %or.cond.i142.i, i64 %572, i64 %.097147.i.i - %indvars.iv.next172.i.i = add nuw nsw i64 %indvars.iv171.i.i, 1 - %exitcond175.not.i.i = icmp eq i64 %indvars.iv.next172.i.i, %wide.trip.count.i136.i - br i1 %exitcond175.not.i.i, label %.lr.ph152.i.preheader.i, label %.lr.ph149.i.i, !llvm.loop !77 + %indvars.iv.next175.i.i = add nuw nsw i64 %indvars.iv174.i.i, 1 + %exitcond178.not.i.i = icmp eq i64 %indvars.iv.next175.i.i, %wide.trip.count.i136.i + br i1 %exitcond178.not.i.i, label %.lr.ph152.i.preheader.i, label %.lr.ph149.i.i, !llvm.loop !77 .lr.ph152.i.preheader.i: ; preds = %.lr.ph.i137.i, %445, %.lr.ph149.i.i - %.not124289.i = phi i1 [ false, %.lr.ph149.i.i ], [ true, %445 ], [ true, %.lr.ph.i137.i ] - %.3287.i = phi i32 [ %spec.select238.i, %.lr.ph149.i.i ], [ %422, %445 ], [ %422, %.lr.ph.i137.i ] + %.not124288.i = phi i1 [ false, %.lr.ph149.i.i ], [ true, %445 ], [ true, %.lr.ph.i137.i ] + %.3286.i = phi i32 [ %spec.select238.i, %.lr.ph149.i.i ], [ %422, %445 ], [ %422, %.lr.ph.i137.i ] br label %.lr.ph152.i.i .lr.ph152.i.i: ; preds = %580, %.lr.ph152.i.preheader.i - %indvars.iv176.i.i = phi i64 [ %indvars.iv.next177.i.i, %580 ], [ 0, %.lr.ph152.i.preheader.i ] - %576 = getelementptr inbounds nuw [11 x i32], ptr %18, i64 0, i64 %indvars.iv176.i.i + %indvars.iv179.i.i = phi i64 [ %indvars.iv.next180.i.i, %580 ], [ 0, %.lr.ph152.i.preheader.i ] + %576 = getelementptr inbounds nuw [11 x i32], ptr %18, i64 0, i64 %indvars.iv179.i.i %577 = load i32, ptr %576, align 4, !tbaa !32 %.not113.i.i = icmp eq i32 %577, 0 br i1 %.not113.i.i, label %580, label %578 578: ; preds = %.lr.ph152.i.i - %579 = getelementptr inbounds nuw [11 x %struct.VP8LColorCache], ptr %19, i64 0, i64 %indvars.iv176.i.i + %579 = getelementptr inbounds nuw [11 x %struct.VP8LColorCache], ptr %19, i64 0, i64 %indvars.iv179.i.i call void @VP8LColorCacheClear(ptr noundef nonnull %579) #11 br label %580 580: ; preds = %578, %.lr.ph152.i.i - %581 = getelementptr inbounds nuw [11 x ptr], ptr %20, i64 0, i64 %indvars.iv176.i.i + %581 = getelementptr inbounds nuw [11 x ptr], ptr %20, i64 0, i64 %indvars.iv179.i.i %582 = load ptr, ptr %581, align 8, !tbaa !36 call void @VP8LFreeHistogram(ptr noundef %582) #11 - %indvars.iv.next177.i.i = add nuw nsw i64 %indvars.iv176.i.i, 1 - %exitcond180.not.i.i = icmp eq i64 %indvars.iv.next177.i.i, %wide.trip.count.i136.i - br i1 %exitcond180.not.i.i, label %CalculateBestCacheSize.exit.i, label %.lr.ph152.i.i, !llvm.loop !78 + %indvars.iv.next180.i.i = add nuw nsw i64 %indvars.iv179.i.i, 1 + %exitcond183.not.i.i = icmp eq i64 %indvars.iv.next180.i.i, %wide.trip.count.i136.i + br i1 %exitcond183.not.i.i, label %CalculateBestCacheSize.exit.i, label %.lr.ph152.i.i, !llvm.loop !78 CalculateBestCacheSize.exit.thread.i: ; preds = %.preheader.i141.i, %VP8LRefsCursorInit.exit.i.i45 %.4.ph.i = phi i32 [ 0, %VP8LRefsCursorInit.exit.i.i45 ], [ %422, %.preheader.i141.i ] @@ -2017,10 +2020,10 @@ CalculateBestCacheSize.exit.i: ; preds = %580 call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %20) #11 call void @llvm.lifetime.end.p0(i64 176, ptr nonnull %19) #11 call void @llvm.lifetime.end.p0(i64 44, ptr nonnull %18) #11 - br i1 %.not124289.i, label %.critedge, label %583 + br i1 %.not124288.i, label %.critedge, label %583 583: ; preds = %CalculateBestCacheSize.exit.i, %CalculateBestCacheSize.exit.thread.i - %.4214.i = phi i32 [ %.4.ph.i, %CalculateBestCacheSize.exit.thread.i ], [ %.3287.i, %CalculateBestCacheSize.exit.i ] + %.4214.i = phi i32 [ %.4.ph.i, %CalculateBestCacheSize.exit.thread.i ], [ %.3286.i, %CalculateBestCacheSize.exit.i ] %584 = icmp sgt i32 %.4214.i, 0 br i1 %584, label %585, label %634 @@ -2312,8 +2315,8 @@ BackwardRefsClone.exit.thread.i: ; preds = %660, %BackwardRefsS 686: ; preds = %BackwardRefsClone.exit.thread.i, %BackwardRefsClone.exit.thread.thread.i, %637, %.preheader244.i %.1110.ph.i = phi i64 [ %.2111.i, %637 ], [ %.2111.i, %BackwardRefsClone.exit.thread.i ], [ %.0109256.i, %.preheader244.i ], [ %.2111.i, %BackwardRefsClone.exit.thread.thread.i ] %indvars.iv.next.i = add nsw i64 %indvars.iv.i, -1 - %.not283.i = icmp eq i64 %indvars.iv.i, 0 - br i1 %.not283.i, label %.loopexit.i, label %.preheader244.i, !llvm.loop !92 + %exitcond.not.i = icmp eq i64 %indvars.iv.i, 0 + br i1 %exitcond.not.i, label %.loopexit.i, label %.preheader244.i, !llvm.loop !92 .loopexit.i: ; preds = %686, %.thread.i, %126 %687 = xor i32 %.0116258.i, -1 @@ -2455,7 +2458,7 @@ VP8LRefsCursorInit.exit.i175.i: ; preds = %.thread233.i 752: ; preds = %749 %753 = shl i32 %736, 4 - %754 = add i32 %753, %.pre-phi282.i + %754 = add i32 %753, %.pre-phi283.i %755 = sub i32 %754, %.recomposed141 %756 = sext i32 %755 to i64 %757 = getelementptr inbounds [128 x i8], ptr @plane_to_code_lut, i64 0, i64 %756 @@ -2597,8 +2600,8 @@ BackwardRefsClone.exit198.i: ; preds = %795 821: ; preds = %779, %BackwardReferences2DLocality.exit.i, %690 %indvars.iv.next278.i = add nsw i64 %indvars.iv277.i, -1 - %.not284.i = icmp eq i64 %indvars.iv277.i, 0 - br i1 %.not284.i, label %GetBackwardReferences.exit, label %690, !llvm.loop !100 + %exitcond280.not.i = icmp eq i64 %indvars.iv277.i, 0 + br i1 %exitcond280.not.i, label %GetBackwardReferences.exit, label %690, !llvm.loop !100 GetBackwardReferences.exit: ; preds = %821, %806, %VP8LClearBackwardRefs.exit.i186.i %822 = load ptr, ptr %25, align 8, !tbaa !28 diff --git a/bench/lightgbm/optimized/sample_strategy.ll b/bench/lightgbm/optimized/sample_strategy.ll index abfba0aa196..1d4345a7214 100644 --- a/bench/lightgbm/optimized/sample_strategy.ll +++ b/bench/lightgbm/optimized/sample_strategy.ll @@ -2724,8 +2724,8 @@ define linkonce_odr noundef i32 @_ZN8LightGBM9ArrayArgsIfE9ArgMaxAtKEPSt6vectorI .lr.ph103.preheader.i: ; preds = %._crit_edge.i %55 = sext i32 %54 to i64 - %56 = sext i32 %.075.i.ph to i64 - %57 = sext i32 %indvars.iv127.i to i64 + %56 = sext i32 %indvars.iv127.i to i64 + %57 = add i32 %.075.i.ph, -1 br label %.lr.ph103.i .lr.ph.i: ; preds = %.lr.ph.i, %.lr.ph.preheader.i @@ -2744,7 +2744,7 @@ define linkonce_odr noundef i32 @_ZN8LightGBM9ArrayArgsIfE9ArgMaxAtKEPSt6vectorI br i1 %exitcond.not.i, label %._crit_edge.loopexit.i, label %.lr.ph.i, !llvm.loop !185 .lr.ph103.i: ; preds = %.lr.ph103.i, %.lr.ph103.preheader.i - %indvars.iv129.i = phi i64 [ %57, %.lr.ph103.preheader.i ], [ %indvars.iv.next130.i, %.lr.ph103.i ] + %indvars.iv129.i = phi i64 [ %56, %.lr.ph103.preheader.i ], [ %indvars.iv.next130.i, %.lr.ph103.i ] %indvars.iv125.i = phi i64 [ %55, %.lr.ph103.preheader.i ], [ %indvars.iv.next126.i, %.lr.ph103.i ] %62 = getelementptr inbounds nuw float, ptr %6, i64 %indvars.iv129.i %63 = getelementptr inbounds nuw float, ptr %6, i64 %indvars.iv125.i @@ -2754,8 +2754,9 @@ define linkonce_odr noundef i32 @_ZN8LightGBM9ArrayArgsIfE9ArgMaxAtKEPSt6vectorI store float %64, ptr %63, align 4, !tbaa !174 %indvars.iv.next126.i = add nsw i64 %indvars.iv125.i, -1 %indvars.iv.next130.i = add nsw i64 %indvars.iv129.i, 1 - %.not87.not.i = icmp sgt i64 %indvars.iv125.i, %56 - br i1 %.not87.not.i, label %.lr.ph103.i, label %.loopexit.loopexit.i, !llvm.loop !186 + %lftr.wideiv135.i = trunc i64 %indvars.iv.next126.i to i32 + %exitcond136.not.i = icmp eq i32 %57, %lftr.wideiv135.i + br i1 %exitcond136.not.i, label %.loopexit.loopexit.i, label %.lr.ph103.i, !llvm.loop !186 .loopexit.loopexit.i: ; preds = %.lr.ph103.i %66 = trunc nsw i64 %indvars.iv.next130.i to i32 diff --git a/bench/linux/optimized/drm_gem_framebuffer_helper.ll b/bench/linux/optimized/drm_gem_framebuffer_helper.ll index aedd5d163f2..9f247ea73d4 100644 --- a/bench/linux/optimized/drm_gem_framebuffer_helper.ll +++ b/bench/linux/optimized/drm_gem_framebuffer_helper.ll @@ -643,13 +643,12 @@ define dso_local i32 @drm_gem_fb_vmap(ptr noundef readonly captures(none) %0, pt br label %.split1 .split1: ; preds = %52, %.split - %55 = and i64 %49, 4294967295 - %56 = icmp eq i64 %55, 0 - br i1 %56, label %.loopexit, label %.split, !llvm.loop !26 + %exitcond = icmp eq i64 %49, 0 + br i1 %exitcond, label %.loopexit, label %.split, !llvm.loop !26 .loopexit: ; preds = %39, %.split1, %.loopexit8, %3, %46 - %57 = phi i32 [ 0, %.loopexit8 ], [ %47, %46 ], [ 0, %3 ], [ %47, %.split1 ], [ 0, %39 ] - ret i32 %57 + %55 = phi i32 [ 0, %.loopexit8 ], [ %47, %46 ], [ 0, %3 ], [ %47, %.split1 ], [ 0, %39 ] + ret i32 %55 } ; Function Attrs: null_pointer_is_valid diff --git a/bench/linux/optimized/sg.ll b/bench/linux/optimized/sg.ll index b60f88b7694..5e5c0c024db 100644 --- a/bench/linux/optimized/sg.ll +++ b/bench/linux/optimized/sg.ll @@ -4518,10 +4518,14 @@ define internal fastcc range(i32 -2147483648, 1) i32 @sg_build_indirect(ptr noun %31 = icmp ne i32 %.16.val.64.val, 0 %32 = and i1 %31, %30 %33 = zext nneg i32 %.16.val.64.val to i64 - br i1 %32, label %.preheader, label %.loopexit1 + br i1 %32, label %.preheader.preheader, label %.loopexit1 -.preheader: ; preds = %24, %.loopexit - %34 = phi i32 [ %82, %.loopexit ], [ %29, %24 ] +.preheader.preheader: ; preds = %24 + %smin = tail call i32 @llvm.smin.i32(i32 %28, i32 -1) + br label %.preheader + +.preheader: ; preds = %.preheader.preheader, %.loopexit + %34 = phi i32 [ %82, %.loopexit ], [ %29, %.preheader.preheader ] %35 = add i32 %34, 12 %36 = shl nuw i32 1, %35 %.pre = load i32, ptr @scatter_elem_sz_prev, align 4 @@ -4600,12 +4604,12 @@ define internal fastcc range(i32 -2147483648, 1) i32 @sg_build_indirect(ptr noun .loopexit: ; preds = %75, %48 %82 = add i32 %34, -1 - %83 = icmp sgt i32 %82, -1 - br i1 %83, label %.preheader, label %.thread + %exitcond.not = icmp eq i32 %82, %smin + br i1 %exitcond.not, label %.thread, label %.preheader .thread: ; preds = %.loopexit, %4, %.loopexit1, %12, %2 - %84 = phi i32 [ -14, %2 ], [ %.16.val.64.val, %12 ], [ %74, %.loopexit1 ], [ -12, %4 ], [ -12, %.loopexit ] - ret i32 %84 + %83 = phi i32 [ -14, %2 ], [ %.16.val.64.val, %12 ], [ %74, %.loopexit1 ], [ -12, %4 ], [ -12, %.loopexit ] + ret i32 %83 } ; Function Attrs: null_pointer_is_valid diff --git a/bench/llvm/optimized/LoadStoreOpt.ll b/bench/llvm/optimized/LoadStoreOpt.ll index 2b05ffa8756..6f12bc6986c 100644 --- a/bench/llvm/optimized/LoadStoreOpt.ll +++ b/bench/llvm/optimized/LoadStoreOpt.ll @@ -3297,8 +3297,9 @@ define dso_local noundef zeroext i1 @_ZN4llvm12LoadStoreOpt21processMergeCandida "_ZZN4llvm12LoadStoreOpt21processMergeCandidateERNS0_19StoreMergeCandidateEENK3$_0clEjRNS_6GStoreE.exit": ; preds = %36, %46, %44 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #19 %indvars.iv.next = add nsw i64 %indvars.iv, -1 - %52 = icmp sgt i64 %indvars.iv, 0 - br i1 %52, label %26, label %._crit_edge, !llvm.loop !423 + %52 = and i64 %indvars.iv.next, 4294967295 + %exitcond.not = icmp eq i64 %52, 4294967295 + br i1 %exitcond.not, label %._crit_edge, label %26, !llvm.loop !423 53: ; preds = %._crit_edge %54 = call noundef zeroext i1 @_ZN4llvm12LoadStoreOpt11mergeStoresERNS_15SmallVectorImplIPNS_6GStoreEEE(ptr noundef nonnull align 8 dereferenceable(400) %0, ptr noundef nonnull align 8 dereferenceable(16) %3) @@ -3359,7 +3360,7 @@ define dso_local noundef zeroext i1 @_ZN4llvm12LoadStoreOpt29operationAliasesWit %4 = getelementptr inbounds nuw i8, ptr %2, i64 24 %5 = load i32, ptr %4, align 8, !tbaa !268 %.not.i = icmp eq i32 %5, 0 - br i1 %.not.i, label %51, label %6 + br i1 %.not.i, label %50, label %6 6: ; preds = %3 %7 = getelementptr inbounds nuw i8, ptr %2, i64 16 @@ -3412,83 +3413,83 @@ define dso_local noundef zeroext i1 @_ZN4llvm12LoadStoreOpt29operationAliasesWit 25: ; preds = %22 %26 = getelementptr inbounds nuw i8, ptr %.02964.i.i.i.i.i.i, i64 32 %27 = add nsw i64 %.065.i.i.i.i.i.i, -1 - %28 = icmp sgt i64 %.065.i.i.i.i.i.i, 1 - br i1 %28, label %14, label %._crit_edge.loopexit.i.i.i.i.i.i, !llvm.loop !424 + %exitcond.not.i.i.i.i.i.i = icmp eq i64 %27, 0 + br i1 %exitcond.not.i.i.i.i.i.i, label %._crit_edge.loopexit.i.i.i.i.i.i, label %14, !llvm.loop !424 ._crit_edge.loopexit.i.i.i.i.i.i: ; preds = %25 %.pre.i.i.i.i.i.i = ptrtoint ptr %26 to i64 %.pre70.i.i.i.i.i.i = sub i64 %10, %.pre.i.i.i.i.i.i - %29 = ashr exact i64 %.pre70.i.i.i.i.i.i, 3 + %28 = ashr exact i64 %.pre70.i.i.i.i.i.i, 3 br label %._crit_edge.i.i.i.i.i.i ._crit_edge.i.i.i.i.i.i: ; preds = %._crit_edge.loopexit.i.i.i.i.i.i, %6 - %.pre-phi71.i.i.i.i.i.i = phi i64 [ %29, %._crit_edge.loopexit.i.i.i.i.i.i ], [ %8, %6 ] + %.pre-phi71.i.i.i.i.i.i = phi i64 [ %28, %._crit_edge.loopexit.i.i.i.i.i.i ], [ %8, %6 ] %.029.lcssa.i.i.i.i.i.i = phi ptr [ %26, %._crit_edge.loopexit.i.i.i.i.i.i ], [ %.val, %6 ] - switch i64 %.pre-phi71.i.i.i.i.i.i, label %46 [ - i64 3, label %30 - i64 2, label %36 - i64 1, label %42 + switch i64 %.pre-phi71.i.i.i.i.i.i, label %45 [ + i64 3, label %29 + i64 2, label %35 + i64 1, label %41 ] -30: ; preds = %._crit_edge.i.i.i.i.i.i +29: ; preds = %._crit_edge.i.i.i.i.i.i %.029.val42.i.i.i.i.i.i = load ptr, ptr %.029.lcssa.i.i.i.i.i.i, align 8, !tbaa !266 - %31 = getelementptr inbounds nuw i8, ptr %0, i64 88 - %.val41.val.i.i.i.i.i.i = load ptr, ptr %31, align 8, !tbaa !181 - %32 = getelementptr inbounds nuw i8, ptr %0, i64 112 - %.val41.val49.i.i.i.i.i.i = load ptr, ptr %32, align 8, !tbaa !188 - %33 = tail call noundef zeroext i1 @_ZN4llvm15GISelAddressing12instMayAliasERKNS_12MachineInstrES3_RNS_19MachineRegisterInfoEPNS_9AAResultsE(ptr noundef nonnull align 8 dereferenceable(70) %1, ptr noundef nonnull align 8 dereferenceable(70) %.029.val42.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(504) %.val41.val.i.i.i.i.i.i, ptr noundef %.val41.val49.i.i.i.i.i.i) - br i1 %33, label %"_ZN4llvm6any_ofIRNS_11SmallVectorIPNS_6GStoreELj6EEEZNS_12LoadStoreOpt29operationAliasesWithCandidateERNS_12MachineInstrERNS6_19StoreMergeCandidateEE3$_0EEbOT_T0_.exit", label %34 - -34: ; preds = %30 - %35 = getelementptr inbounds nuw i8, ptr %.029.lcssa.i.i.i.i.i.i, i64 8 - br label %36 + %30 = getelementptr inbounds nuw i8, ptr %0, i64 88 + %.val41.val.i.i.i.i.i.i = load ptr, ptr %30, align 8, !tbaa !181 + %31 = getelementptr inbounds nuw i8, ptr %0, i64 112 + %.val41.val49.i.i.i.i.i.i = load ptr, ptr %31, align 8, !tbaa !188 + %32 = tail call noundef zeroext i1 @_ZN4llvm15GISelAddressing12instMayAliasERKNS_12MachineInstrES3_RNS_19MachineRegisterInfoEPNS_9AAResultsE(ptr noundef nonnull align 8 dereferenceable(70) %1, ptr noundef nonnull align 8 dereferenceable(70) %.029.val42.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(504) %.val41.val.i.i.i.i.i.i, ptr noundef %.val41.val49.i.i.i.i.i.i) + br i1 %32, label %"_ZN4llvm6any_ofIRNS_11SmallVectorIPNS_6GStoreELj6EEEZNS_12LoadStoreOpt29operationAliasesWithCandidateERNS_12MachineInstrERNS6_19StoreMergeCandidateEE3$_0EEbOT_T0_.exit", label %33 + +33: ; preds = %29 + %34 = getelementptr inbounds nuw i8, ptr %.029.lcssa.i.i.i.i.i.i, i64 8 + br label %35 -36: ; preds = %34, %._crit_edge.i.i.i.i.i.i - %.1.i.i.i.i.i.i = phi ptr [ %35, %34 ], [ %.029.lcssa.i.i.i.i.i.i, %._crit_edge.i.i.i.i.i.i ] +35: ; preds = %33, %._crit_edge.i.i.i.i.i.i + %.1.i.i.i.i.i.i = phi ptr [ %34, %33 ], [ %.029.lcssa.i.i.i.i.i.i, %._crit_edge.i.i.i.i.i.i ] %.1.val.i.i.i.i.i.i = load ptr, ptr %.1.i.i.i.i.i.i, align 8, !tbaa !266 - %37 = getelementptr inbounds nuw i8, ptr %0, i64 88 - %.val44.val.i.i.i.i.i.i = load ptr, ptr %37, align 8, !tbaa !181 - %38 = getelementptr inbounds nuw i8, ptr %0, i64 112 - %.val44.val48.i.i.i.i.i.i = load ptr, ptr %38, align 8, !tbaa !188 - %39 = tail call noundef zeroext i1 @_ZN4llvm15GISelAddressing12instMayAliasERKNS_12MachineInstrES3_RNS_19MachineRegisterInfoEPNS_9AAResultsE(ptr noundef nonnull align 8 dereferenceable(70) %1, ptr noundef nonnull align 8 dereferenceable(70) %.1.val.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(504) %.val44.val.i.i.i.i.i.i, ptr noundef %.val44.val48.i.i.i.i.i.i) - br i1 %39, label %"_ZN4llvm6any_ofIRNS_11SmallVectorIPNS_6GStoreELj6EEEZNS_12LoadStoreOpt29operationAliasesWithCandidateERNS_12MachineInstrERNS6_19StoreMergeCandidateEE3$_0EEbOT_T0_.exit", label %40 - -40: ; preds = %36 - %41 = getelementptr inbounds nuw i8, ptr %.1.i.i.i.i.i.i, i64 8 - br label %42 - -42: ; preds = %40, %._crit_edge.i.i.i.i.i.i - %.2.i.i.i.i.i.i = phi ptr [ %41, %40 ], [ %.029.lcssa.i.i.i.i.i.i, %._crit_edge.i.i.i.i.i.i ] + %36 = getelementptr inbounds nuw i8, ptr %0, i64 88 + %.val44.val.i.i.i.i.i.i = load ptr, ptr %36, align 8, !tbaa !181 + %37 = getelementptr inbounds nuw i8, ptr %0, i64 112 + %.val44.val48.i.i.i.i.i.i = load ptr, ptr %37, align 8, !tbaa !188 + %38 = tail call noundef zeroext i1 @_ZN4llvm15GISelAddressing12instMayAliasERKNS_12MachineInstrES3_RNS_19MachineRegisterInfoEPNS_9AAResultsE(ptr noundef nonnull align 8 dereferenceable(70) %1, ptr noundef nonnull align 8 dereferenceable(70) %.1.val.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(504) %.val44.val.i.i.i.i.i.i, ptr noundef %.val44.val48.i.i.i.i.i.i) + br i1 %38, label %"_ZN4llvm6any_ofIRNS_11SmallVectorIPNS_6GStoreELj6EEEZNS_12LoadStoreOpt29operationAliasesWithCandidateERNS_12MachineInstrERNS6_19StoreMergeCandidateEE3$_0EEbOT_T0_.exit", label %39 + +39: ; preds = %35 + %40 = getelementptr inbounds nuw i8, ptr %.1.i.i.i.i.i.i, i64 8 + br label %41 + +41: ; preds = %39, %._crit_edge.i.i.i.i.i.i + %.2.i.i.i.i.i.i = phi ptr [ %40, %39 ], [ %.029.lcssa.i.i.i.i.i.i, %._crit_edge.i.i.i.i.i.i ] %.2.val.i.i.i.i.i.i = load ptr, ptr %.2.i.i.i.i.i.i, align 8, !tbaa !266 - %43 = getelementptr inbounds nuw i8, ptr %0, i64 88 - %.val46.val.i.i.i.i.i.i = load ptr, ptr %43, align 8, !tbaa !181 - %44 = getelementptr inbounds nuw i8, ptr %0, i64 112 - %.val46.val47.i.i.i.i.i.i = load ptr, ptr %44, align 8, !tbaa !188 - %45 = tail call noundef zeroext i1 @_ZN4llvm15GISelAddressing12instMayAliasERKNS_12MachineInstrES3_RNS_19MachineRegisterInfoEPNS_9AAResultsE(ptr noundef nonnull align 8 dereferenceable(70) %1, ptr noundef nonnull align 8 dereferenceable(70) %.2.val.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(504) %.val46.val.i.i.i.i.i.i, ptr noundef %.val46.val47.i.i.i.i.i.i) - br i1 %45, label %"_ZN4llvm6any_ofIRNS_11SmallVectorIPNS_6GStoreELj6EEEZNS_12LoadStoreOpt29operationAliasesWithCandidateERNS_12MachineInstrERNS6_19StoreMergeCandidateEE3$_0EEbOT_T0_.exit", label %46 - -46: ; preds = %42, %._crit_edge.i.i.i.i.i.i + %42 = getelementptr inbounds nuw i8, ptr %0, i64 88 + %.val46.val.i.i.i.i.i.i = load ptr, ptr %42, align 8, !tbaa !181 + %43 = getelementptr inbounds nuw i8, ptr %0, i64 112 + %.val46.val47.i.i.i.i.i.i = load ptr, ptr %43, align 8, !tbaa !188 + %44 = tail call noundef zeroext i1 @_ZN4llvm15GISelAddressing12instMayAliasERKNS_12MachineInstrES3_RNS_19MachineRegisterInfoEPNS_9AAResultsE(ptr noundef nonnull align 8 dereferenceable(70) %1, ptr noundef nonnull align 8 dereferenceable(70) %.2.val.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(504) %.val46.val.i.i.i.i.i.i, ptr noundef %.val46.val47.i.i.i.i.i.i) + br i1 %44, label %"_ZN4llvm6any_ofIRNS_11SmallVectorIPNS_6GStoreELj6EEEZNS_12LoadStoreOpt29operationAliasesWithCandidateERNS_12MachineInstrERNS6_19StoreMergeCandidateEE3$_0EEbOT_T0_.exit", label %45 + +45: ; preds = %41, %._crit_edge.i.i.i.i.i.i br label %"_ZN4llvm6any_ofIRNS_11SmallVectorIPNS_6GStoreELj6EEEZNS_12LoadStoreOpt29operationAliasesWithCandidateERNS_12MachineInstrERNS6_19StoreMergeCandidateEE3$_0EEbOT_T0_.exit" "_ZN4llvm6any_ofIRNS_11SmallVectorIPNS_6GStoreELj6EEEZNS_12LoadStoreOpt29operationAliasesWithCandidateERNS_12MachineInstrERNS6_19StoreMergeCandidateEE3$_0EEbOT_T0_.exit.loopexit.split.loop.exit": ; preds = %16 - %47 = getelementptr inbounds nuw i8, ptr %.02964.i.i.i.i.i.i, i64 8 + %46 = getelementptr inbounds nuw i8, ptr %.02964.i.i.i.i.i.i, i64 8 br label %"_ZN4llvm6any_ofIRNS_11SmallVectorIPNS_6GStoreELj6EEEZNS_12LoadStoreOpt29operationAliasesWithCandidateERNS_12MachineInstrERNS6_19StoreMergeCandidateEE3$_0EEbOT_T0_.exit" "_ZN4llvm6any_ofIRNS_11SmallVectorIPNS_6GStoreELj6EEEZNS_12LoadStoreOpt29operationAliasesWithCandidateERNS_12MachineInstrERNS6_19StoreMergeCandidateEE3$_0EEbOT_T0_.exit.loopexit.split.loop.exit19": ; preds = %19 - %48 = getelementptr inbounds nuw i8, ptr %.02964.i.i.i.i.i.i, i64 16 + %47 = getelementptr inbounds nuw i8, ptr %.02964.i.i.i.i.i.i, i64 16 br label %"_ZN4llvm6any_ofIRNS_11SmallVectorIPNS_6GStoreELj6EEEZNS_12LoadStoreOpt29operationAliasesWithCandidateERNS_12MachineInstrERNS6_19StoreMergeCandidateEE3$_0EEbOT_T0_.exit" "_ZN4llvm6any_ofIRNS_11SmallVectorIPNS_6GStoreELj6EEEZNS_12LoadStoreOpt29operationAliasesWithCandidateERNS_12MachineInstrERNS6_19StoreMergeCandidateEE3$_0EEbOT_T0_.exit.loopexit.split.loop.exit21": ; preds = %22 - %49 = getelementptr inbounds nuw i8, ptr %.02964.i.i.i.i.i.i, i64 24 + %48 = getelementptr inbounds nuw i8, ptr %.02964.i.i.i.i.i.i, i64 24 br label %"_ZN4llvm6any_ofIRNS_11SmallVectorIPNS_6GStoreELj6EEEZNS_12LoadStoreOpt29operationAliasesWithCandidateERNS_12MachineInstrERNS6_19StoreMergeCandidateEE3$_0EEbOT_T0_.exit" -"_ZN4llvm6any_ofIRNS_11SmallVectorIPNS_6GStoreELj6EEEZNS_12LoadStoreOpt29operationAliasesWithCandidateERNS_12MachineInstrERNS6_19StoreMergeCandidateEE3$_0EEbOT_T0_.exit": ; preds = %14, %"_ZN4llvm6any_ofIRNS_11SmallVectorIPNS_6GStoreELj6EEEZNS_12LoadStoreOpt29operationAliasesWithCandidateERNS_12MachineInstrERNS6_19StoreMergeCandidateEE3$_0EEbOT_T0_.exit.loopexit.split.loop.exit", %"_ZN4llvm6any_ofIRNS_11SmallVectorIPNS_6GStoreELj6EEEZNS_12LoadStoreOpt29operationAliasesWithCandidateERNS_12MachineInstrERNS6_19StoreMergeCandidateEE3$_0EEbOT_T0_.exit.loopexit.split.loop.exit19", %"_ZN4llvm6any_ofIRNS_11SmallVectorIPNS_6GStoreELj6EEEZNS_12LoadStoreOpt29operationAliasesWithCandidateERNS_12MachineInstrERNS6_19StoreMergeCandidateEE3$_0EEbOT_T0_.exit.loopexit.split.loop.exit21", %30, %36, %42, %46 - %.028.i.i.i.i.i.i = phi ptr [ %9, %46 ], [ %.029.lcssa.i.i.i.i.i.i, %30 ], [ %.1.i.i.i.i.i.i, %36 ], [ %.2.i.i.i.i.i.i, %42 ], [ %47, %"_ZN4llvm6any_ofIRNS_11SmallVectorIPNS_6GStoreELj6EEEZNS_12LoadStoreOpt29operationAliasesWithCandidateERNS_12MachineInstrERNS6_19StoreMergeCandidateEE3$_0EEbOT_T0_.exit.loopexit.split.loop.exit" ], [ %48, %"_ZN4llvm6any_ofIRNS_11SmallVectorIPNS_6GStoreELj6EEEZNS_12LoadStoreOpt29operationAliasesWithCandidateERNS_12MachineInstrERNS6_19StoreMergeCandidateEE3$_0EEbOT_T0_.exit.loopexit.split.loop.exit19" ], [ %49, %"_ZN4llvm6any_ofIRNS_11SmallVectorIPNS_6GStoreELj6EEEZNS_12LoadStoreOpt29operationAliasesWithCandidateERNS_12MachineInstrERNS6_19StoreMergeCandidateEE3$_0EEbOT_T0_.exit.loopexit.split.loop.exit21" ], [ %.02964.i.i.i.i.i.i, %14 ] - %50 = icmp ne ptr %9, %.028.i.i.i.i.i.i - br label %51 +"_ZN4llvm6any_ofIRNS_11SmallVectorIPNS_6GStoreELj6EEEZNS_12LoadStoreOpt29operationAliasesWithCandidateERNS_12MachineInstrERNS6_19StoreMergeCandidateEE3$_0EEbOT_T0_.exit": ; preds = %14, %"_ZN4llvm6any_ofIRNS_11SmallVectorIPNS_6GStoreELj6EEEZNS_12LoadStoreOpt29operationAliasesWithCandidateERNS_12MachineInstrERNS6_19StoreMergeCandidateEE3$_0EEbOT_T0_.exit.loopexit.split.loop.exit", %"_ZN4llvm6any_ofIRNS_11SmallVectorIPNS_6GStoreELj6EEEZNS_12LoadStoreOpt29operationAliasesWithCandidateERNS_12MachineInstrERNS6_19StoreMergeCandidateEE3$_0EEbOT_T0_.exit.loopexit.split.loop.exit19", %"_ZN4llvm6any_ofIRNS_11SmallVectorIPNS_6GStoreELj6EEEZNS_12LoadStoreOpt29operationAliasesWithCandidateERNS_12MachineInstrERNS6_19StoreMergeCandidateEE3$_0EEbOT_T0_.exit.loopexit.split.loop.exit21", %29, %35, %41, %45 + %.028.i.i.i.i.i.i = phi ptr [ %9, %45 ], [ %.029.lcssa.i.i.i.i.i.i, %29 ], [ %.1.i.i.i.i.i.i, %35 ], [ %.2.i.i.i.i.i.i, %41 ], [ %46, %"_ZN4llvm6any_ofIRNS_11SmallVectorIPNS_6GStoreELj6EEEZNS_12LoadStoreOpt29operationAliasesWithCandidateERNS_12MachineInstrERNS6_19StoreMergeCandidateEE3$_0EEbOT_T0_.exit.loopexit.split.loop.exit" ], [ %47, %"_ZN4llvm6any_ofIRNS_11SmallVectorIPNS_6GStoreELj6EEEZNS_12LoadStoreOpt29operationAliasesWithCandidateERNS_12MachineInstrERNS6_19StoreMergeCandidateEE3$_0EEbOT_T0_.exit.loopexit.split.loop.exit19" ], [ %48, %"_ZN4llvm6any_ofIRNS_11SmallVectorIPNS_6GStoreELj6EEEZNS_12LoadStoreOpt29operationAliasesWithCandidateERNS_12MachineInstrERNS6_19StoreMergeCandidateEE3$_0EEbOT_T0_.exit.loopexit.split.loop.exit21" ], [ %.02964.i.i.i.i.i.i, %14 ] + %49 = icmp ne ptr %9, %.028.i.i.i.i.i.i + br label %50 -51: ; preds = %3, %"_ZN4llvm6any_ofIRNS_11SmallVectorIPNS_6GStoreELj6EEEZNS_12LoadStoreOpt29operationAliasesWithCandidateERNS_12MachineInstrERNS6_19StoreMergeCandidateEE3$_0EEbOT_T0_.exit" - %.0 = phi i1 [ %50, %"_ZN4llvm6any_ofIRNS_11SmallVectorIPNS_6GStoreELj6EEEZNS_12LoadStoreOpt29operationAliasesWithCandidateERNS_12MachineInstrERNS6_19StoreMergeCandidateEE3$_0EEbOT_T0_.exit" ], [ false, %3 ] +50: ; preds = %3, %"_ZN4llvm6any_ofIRNS_11SmallVectorIPNS_6GStoreELj6EEEZNS_12LoadStoreOpt29operationAliasesWithCandidateERNS_12MachineInstrERNS6_19StoreMergeCandidateEE3$_0EEbOT_T0_.exit" + %.0 = phi i1 [ %49, %"_ZN4llvm6any_ofIRNS_11SmallVectorIPNS_6GStoreELj6EEEZNS_12LoadStoreOpt29operationAliasesWithCandidateERNS_12MachineInstrERNS6_19StoreMergeCandidateEE3$_0EEbOT_T0_.exit" ], [ false, %3 ] ret i1 %.0 } diff --git a/bench/llvm/optimized/MicrosoftDemangle.ll b/bench/llvm/optimized/MicrosoftDemangle.ll index 83e8e509194..5fffe51ebe6 100644 --- a/bench/llvm/optimized/MicrosoftDemangle.ll +++ b/bench/llvm/optimized/MicrosoftDemangle.ll @@ -9366,39 +9366,38 @@ _ZN4llvm16itanium_demangle12OutputBufferlsEc.exit: ; preds = %204, %._ZN4llvm16i %.not15.i = icmp eq i32 %1, 0 br i1 %.not15.i, label %._crit_edge.i, label %.preheader.i -.loopexit.i: ; preds = %223 +.loopexit.i: ; preds = %225 %.not.i = icmp ult i32 %.11112.i, 16 - br i1 %.not.i, label %._crit_edge.loopexit.i, label %.preheader.i, !llvm.loop !156 + br i1 %.not.i, label %._crit_edge.i, label %.preheader.i, !llvm.loop !156 .preheader.i: ; preds = %221, %.loopexit.i %.0917.i = phi i64 [ %indvars.iv.next.i, %.loopexit.i ], [ 15, %221 ] - %.01016.i = phi i32 [ %232, %.loopexit.i ], [ %1, %221 ] + %.01016.i = phi i32 [ %233, %.loopexit.i ], [ %1, %221 ] %sext.i = shl i64 %.0917.i, 32 %222 = ashr exact i64 %sext.i, 32 - br label %223 + %223 = trunc i64 %.0917.i to i32 + %224 = add i32 %223, -2 + br label %225 -223: ; preds = %223, %.preheader.i - %indvars.iv.i = phi i64 [ %222, %.preheader.i ], [ %indvars.iv.next.i, %223 ] - %224 = phi i1 [ true, %.preheader.i ], [ false, %223 ] - %.11112.i = phi i32 [ %.01016.i, %.preheader.i ], [ %232, %223 ] +225: ; preds = %225, %.preheader.i + %indvars.iv.i = phi i64 [ %222, %.preheader.i ], [ %indvars.iv.next.i, %225 ] + %.11112.i = phi i32 [ %.01016.i, %.preheader.i ], [ %233, %225 ] %indvars.iv.next.i = add nsw i64 %indvars.iv.i, -1 - %225 = getelementptr inbounds [17 x i8], ptr %3, i64 0, i64 %indvars.iv.i - %226 = trunc i32 %.11112.i to i8 - %227 = and i8 %226, 15 - %228 = icmp samesign ult i8 %227, 10 - %229 = or disjoint i8 %227, 48 - %230 = add nuw nsw i8 %227, 55 - %231 = select i1 %228, i8 %229, i8 %230 - store i8 %231, ptr %225, align 1, !tbaa !40 - %232 = lshr i32 %.11112.i, 4 - br i1 %224, label %223, label %.loopexit.i, !llvm.loop !157 - -._crit_edge.loopexit.i: ; preds = %.loopexit.i - %233 = trunc nsw i64 %indvars.iv.next.i to i32 - br label %._crit_edge.i - -._crit_edge.i: ; preds = %._crit_edge.loopexit.i, %221 - %.09.lcssa.i = phi i32 [ 15, %221 ], [ %233, %._crit_edge.loopexit.i ] + %226 = getelementptr inbounds [17 x i8], ptr %3, i64 0, i64 %indvars.iv.i + %227 = trunc i32 %.11112.i to i8 + %228 = and i8 %227, 15 + %229 = icmp samesign ult i8 %228, 10 + %230 = or disjoint i8 %228, 48 + %231 = add nuw nsw i8 %228, 55 + %232 = select i1 %229, i8 %230, i8 %231 + store i8 %232, ptr %226, align 1, !tbaa !40 + %233 = lshr i32 %.11112.i, 4 + %lftr.wideiv = trunc i64 %indvars.iv.next.i to i32 + %exitcond.not = icmp eq i32 %224, %lftr.wideiv + br i1 %exitcond.not, label %.loopexit.i, label %225, !llvm.loop !157 + +._crit_edge.i: ; preds = %.loopexit.i, %221 + %.09.lcssa.i = phi i32 [ 15, %221 ], [ %224, %.loopexit.i ] %234 = add nsw i32 %.09.lcssa.i, -1 %235 = sext i32 %.09.lcssa.i to i64 %236 = getelementptr inbounds [17 x i8], ptr %3, i64 0, i64 %235 diff --git a/bench/lua/optimized/llex.ll b/bench/lua/optimized/llex.ll index 9b5d9528a8a..b256c3f5c53 100644 --- a/bench/lua/optimized/llex.ll +++ b/bench/lua/optimized/llex.ll @@ -1108,15 +1108,15 @@ save.exit.i: ; preds = %301, %._crit_edge.i 322: ; preds = %320, %314 %323 = phi i32 [ %319, %314 ], [ %321, %320 ] store i32 %323, ptr %0, align 8, !tbaa !51 - %.not62161.i = icmp eq i32 %323, %10 - br i1 %.not62161.i, label %._crit_edge.i, label %.lr.ph162.i + %.not62162.i = icmp eq i32 %323, %10 + br i1 %.not62162.i, label %._crit_edge.i, label %.lr.ph163.i -.lr.ph162.i: ; preds = %322 +.lr.ph163.i: ; preds = %322 %324 = getelementptr inbounds nuw i8, ptr %0, i64 56 br label %325 -325: ; preds = %.loopexit.i, %.lr.ph162.i - %326 = phi i32 [ %323, %.lr.ph162.i ], [ %.pr.i, %.loopexit.i ] +325: ; preds = %.loopexit.i, %.lr.ph163.i + %326 = phi i32 [ %323, %.lr.ph163.i ], [ %.pr.i, %.loopexit.i ] switch i32 %326, label %776 [ i32 -1, label %327 i32 10, label %328 @@ -1310,7 +1310,7 @@ save.exit.i.i.i: ; preds = %387, %._crit_edge.i store i32 %407, ptr %0, align 8, !tbaa !51 switch i32 %407, label %408 [ i32 123, label %esccheck.exit.i.i.i - i32 -1, label %.loopexit110.i + i32 -1, label %.loopexit111.i ] 408: ; preds = %406 @@ -1338,9 +1338,9 @@ save.exit.i.i.i: ; preds = %387, %._crit_edge.i 420: ; preds = %418, %412 %421 = phi i32 [ %417, %412 ], [ %419, %418 ] store i32 %421, ptr %0, align 8, !tbaa !51 - br label %.loopexit110.i + br label %.loopexit111.i -.loopexit110.i: ; preds = %406, %420 +.loopexit111.i: ; preds = %406, %420 call fastcc void @lexerror(ptr noundef nonnull %0, ptr noundef nonnull @.str.51, i32 noundef 292) #7 unreachable @@ -1474,7 +1474,7 @@ esccheck.exit42.i.i.i: ; preds = %463 486: ; preds = %456 switch i32 %457, label %487 [ i32 125, label %esccheck.exit46.i.i.i - i32 -1, label %.loopexit111.i + i32 -1, label %.loopexit112.i ] 487: ; preds = %486 @@ -1502,9 +1502,9 @@ esccheck.exit42.i.i.i: ; preds = %463 499: ; preds = %497, %491 %500 = phi i32 [ %496, %491 ], [ %498, %497 ] store i32 %500, ptr %0, align 8, !tbaa !51 - br label %.loopexit111.i + br label %.loopexit112.i -.loopexit111.i: ; preds = %486, %499 +.loopexit112.i: ; preds = %486, %499 call fastcc void @lexerror(ptr noundef nonnull %0, ptr noundef nonnull @.str.53, i32 noundef 292) #7 unreachable @@ -1591,8 +1591,9 @@ save.exit.i.i: ; preds = %534, %._crit_edge.i %541 = getelementptr inbounds nuw i8, ptr %540, i64 %539 store i8 %523, ptr %541, align 1, !tbaa !13 %indvars.iv.next.i.i = add nsw i64 %indvars.iv.i.i, -1 - %542 = icmp sgt i64 %indvars.iv.i.i, 1 - br i1 %542, label %.lr.ph.i.i, label %utf8esc.exit.i + %542 = and i64 %indvars.iv.next.i.i, 4294967295 + %exitcond.not.i.i = icmp eq i64 %542, 0 + br i1 %exitcond.not.i.i, label %utf8esc.exit.i, label %.lr.ph.i.i utf8esc.exit.i: ; preds = %save.exit.i.i, %readutf8esc.exit.i.i call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #6 @@ -1705,11 +1706,11 @@ utf8esc.exit.i: ; preds = %save.exit.i.i, %rea %598 = getelementptr inbounds [257 x i8], ptr @luai_ctype_, i64 0, i64 %597 %599 = load i8, ptr %598, align 1, !tbaa !13 %600 = and i8 %599, 8 - %.not66160.i = icmp eq i8 %600, 0 - br i1 %.not66160.i, label %.loopexit.i, label %.lr.ph.i + %.not66161.i = icmp eq i8 %600, 0 + br i1 %.not66161.i, label %.loopexit.i, label %.lr.ph.i .lr.ph.i: ; preds = %594, %inclinenumber.exit80.i - %601 = phi i32 [ %.pr109.i, %inclinenumber.exit80.i ], [ %595, %594 ] + %601 = phi i32 [ %.pr110.i, %inclinenumber.exit80.i ], [ %595, %594 ] switch i32 %601, label %636 [ i32 10, label %602 i32 13, label %602 @@ -1775,7 +1776,7 @@ utf8esc.exit.i: ; preds = %save.exit.i.i, %rea br label %631 631: ; preds = %629, %616, %614 - %.pr109193.i = phi i32 [ %630, %629 ], [ %601, %616 ], [ %615, %614 ] + %.pr110194.i = phi i32 [ %630, %629 ], [ %601, %616 ], [ %615, %614 ] %632 = load i32, ptr %9, align 4, !tbaa !26 %633 = add nsw i32 %632, 1 store i32 %633, ptr %9, align 4, !tbaa !26 @@ -1813,8 +1814,8 @@ utf8esc.exit.i: ; preds = %save.exit.i.i, %rea br label %inclinenumber.exit80.i inclinenumber.exit80.i: ; preds = %648, %631 - %.pr109.i = phi i32 [ %.pr109193.i, %631 ], [ %649, %648 ] - %650 = add nsw i32 %.pr109.i, 1 + %.pr110.i = phi i32 [ %.pr110194.i, %631 ], [ %649, %648 ] + %650 = add nsw i32 %.pr110.i, 1 %651 = sext i32 %650 to i64 %652 = getelementptr inbounds [257 x i8], ptr @luai_ctype_, i64 0, i64 %651 %653 = load i8, ptr %652, align 1, !tbaa !13 @@ -1910,13 +1911,13 @@ esccheck.exit.i: ; preds = %655, %717 %701 = call ptr @luaM_saferealloc_(ptr noundef %699, ptr noundef %700, i64 noundef %692, i64 noundef %698) #6 store ptr %701, ptr %687, align 8, !tbaa !32 store i64 %698, ptr %691, align 8, !tbaa !31 - %.pre15.i.i88.i = load i64, ptr %688, align 8, !tbaa !28 - %.pre16.i.i89.i = add i64 %.pre15.i.i88.i, 1 + %.pre15.i.i89.i = load i64, ptr %688, align 8, !tbaa !28 + %.pre16.i.i90.i = add i64 %.pre15.i.i89.i, 1 br label %save.exit.i86.i save.exit.i86.i: ; preds = %697, %._crit_edge.i.i84.i - %.pre-phi.i.i87.i = phi i64 [ %690, %._crit_edge.i.i84.i ], [ %.pre16.i.i89.i, %697 ] - %702 = phi i64 [ %689, %._crit_edge.i.i84.i ], [ %.pre15.i.i88.i, %697 ] + %.pre-phi.i.i87.i = phi i64 [ %690, %._crit_edge.i.i84.i ], [ %.pre16.i.i90.i, %697 ] + %702 = phi i64 [ %689, %._crit_edge.i.i84.i ], [ %.pre15.i.i89.i, %697 ] %703 = phi ptr [ %.pre.i.i85.i, %._crit_edge.i.i84.i ], [ %701, %697 ] %704 = trunc i32 %677 to i8 store i64 %.pre-phi.i.i87.i, ptr %688, align 8, !tbaa !28 @@ -1946,8 +1947,8 @@ save.exit.i86.i: ; preds = %697, %._crit_edge.i %718 = phi i32 [ %714, %709 ], [ %716, %715 ] store i32 %718, ptr %0, align 8, !tbaa !51 %719 = add nuw nsw i32 %.01519.i.i, 1 - %exitcond.not.i.i = icmp eq i32 %719, 3 - br i1 %exitcond.not.i.i, label %.critedge.i.i, label %esccheck.exit.i + %exitcond.not.i88.i = icmp eq i32 %719, 3 + br i1 %exitcond.not.i88.i, label %.critedge.i.i, label %esccheck.exit.i .critedge.i.i: ; preds = %717, %esccheck.exit.i %720 = phi i32 [ %718, %717 ], [ %677, %esccheck.exit.i ] @@ -2037,11 +2038,11 @@ inclinenumber.exit.i: ; preds = %755, %readdecesc.ex %761 = getelementptr inbounds nuw i8, ptr %757, i64 16 %762 = load i64, ptr %761, align 8, !tbaa !31 %763 = icmp ugt i64 %759, %762 - br i1 %763, label %764, label %._crit_edge.i90.i + br i1 %763, label %764, label %._crit_edge.i91.i -._crit_edge.i90.i: ; preds = %inclinenumber.exit.i - %.pre.i91.i = load ptr, ptr %757, align 8, !tbaa !32 - br label %save.exit95.i +._crit_edge.i91.i: ; preds = %inclinenumber.exit.i + %.pre.i92.i = load ptr, ptr %757, align 8, !tbaa !32 + br label %save.exit96.i 764: ; preds = %inclinenumber.exit.i %765 = icmp ugt i64 %762, 4611686018427387902 @@ -2058,16 +2059,16 @@ inclinenumber.exit.i: ; preds = %755, %readdecesc.ex %771 = call ptr @luaM_saferealloc_(ptr noundef %769, ptr noundef %770, i64 noundef %762, i64 noundef %768) #6 store ptr %771, ptr %757, align 8, !tbaa !32 store i64 %768, ptr %761, align 8, !tbaa !31 - %.pre15.i93.i = load i64, ptr %758, align 8, !tbaa !28 - %.pre16.i94.i = add i64 %.pre15.i93.i, 1 - br label %save.exit95.i - -save.exit95.i: ; preds = %767, %._crit_edge.i90.i - %.pre-phi.i92.i = phi i64 [ %759, %._crit_edge.i90.i ], [ %.pre16.i94.i, %767 ] - %772 = phi i64 [ %760, %._crit_edge.i90.i ], [ %.pre15.i93.i, %767 ] - %773 = phi ptr [ %.pre.i91.i, %._crit_edge.i90.i ], [ %771, %767 ] + %.pre15.i94.i = load i64, ptr %758, align 8, !tbaa !28 + %.pre16.i95.i = add i64 %.pre15.i94.i, 1 + br label %save.exit96.i + +save.exit96.i: ; preds = %767, %._crit_edge.i91.i + %.pre-phi.i93.i = phi i64 [ %759, %._crit_edge.i91.i ], [ %.pre16.i95.i, %767 ] + %772 = phi i64 [ %760, %._crit_edge.i91.i ], [ %.pre15.i94.i, %767 ] + %773 = phi ptr [ %.pre.i92.i, %._crit_edge.i91.i ], [ %771, %767 ] %774 = trunc i32 %.1.i to i8 - store i64 %.pre-phi.i92.i, ptr %758, align 8, !tbaa !28 + store i64 %.pre-phi.i93.i, ptr %758, align 8, !tbaa !28 %775 = getelementptr inbounds nuw i8, ptr %773, i64 %772 store i8 %774, ptr %775, align 1, !tbaa !13 br label %.loopexit.i @@ -2080,11 +2081,11 @@ save.exit95.i: ; preds = %767, %._crit_edge.i %781 = getelementptr inbounds nuw i8, ptr %777, i64 16 %782 = load i64, ptr %781, align 8, !tbaa !31 %783 = icmp ugt i64 %780, %782 - br i1 %783, label %784, label %._crit_edge.i96.i + br i1 %783, label %784, label %._crit_edge.i97.i -._crit_edge.i96.i: ; preds = %776 - %.pre.i97.i = load ptr, ptr %777, align 8, !tbaa !32 - br label %save.exit101.i +._crit_edge.i97.i: ; preds = %776 + %.pre.i98.i = load ptr, ptr %777, align 8, !tbaa !32 + br label %save.exit102.i 784: ; preds = %776 %785 = icmp ugt i64 %782, 4611686018427387902 @@ -2101,16 +2102,16 @@ save.exit95.i: ; preds = %767, %._crit_edge.i %791 = call ptr @luaM_saferealloc_(ptr noundef %789, ptr noundef %790, i64 noundef %782, i64 noundef %788) #6 store ptr %791, ptr %777, align 8, !tbaa !32 store i64 %788, ptr %781, align 8, !tbaa !31 - %.pre15.i99.i = load i64, ptr %778, align 8, !tbaa !28 - %.pre16.i100.i = add i64 %.pre15.i99.i, 1 - br label %save.exit101.i - -save.exit101.i: ; preds = %787, %._crit_edge.i96.i - %.pre-phi.i98.i = phi i64 [ %780, %._crit_edge.i96.i ], [ %.pre16.i100.i, %787 ] - %792 = phi i64 [ %779, %._crit_edge.i96.i ], [ %.pre15.i99.i, %787 ] - %793 = phi ptr [ %.pre.i97.i, %._crit_edge.i96.i ], [ %791, %787 ] + %.pre15.i100.i = load i64, ptr %778, align 8, !tbaa !28 + %.pre16.i101.i = add i64 %.pre15.i100.i, 1 + br label %save.exit102.i + +save.exit102.i: ; preds = %787, %._crit_edge.i97.i + %.pre-phi.i99.i = phi i64 [ %780, %._crit_edge.i97.i ], [ %.pre16.i101.i, %787 ] + %792 = phi i64 [ %779, %._crit_edge.i97.i ], [ %.pre15.i100.i, %787 ] + %793 = phi ptr [ %.pre.i98.i, %._crit_edge.i97.i ], [ %791, %787 ] %794 = trunc i32 %326 to i8 - store i64 %.pre-phi.i98.i, ptr %778, align 8, !tbaa !28 + store i64 %.pre-phi.i99.i, ptr %778, align 8, !tbaa !28 %795 = getelementptr inbounds nuw i8, ptr %793, i64 %792 store i8 %794, ptr %795, align 1, !tbaa !13 %796 = load ptr, ptr %8, align 8, !tbaa !53 @@ -2120,7 +2121,7 @@ save.exit101.i: ; preds = %787, %._crit_edge.i %.not69.i = icmp eq i64 %797, 0 br i1 %.not69.i, label %805, label %799 -799: ; preds = %save.exit101.i +799: ; preds = %save.exit102.i %800 = getelementptr inbounds nuw i8, ptr %796, i64 8 %801 = load ptr, ptr %800, align 8, !tbaa !61 %802 = getelementptr inbounds nuw i8, ptr %801, i64 1 @@ -2129,7 +2130,7 @@ save.exit101.i: ; preds = %787, %._crit_edge.i %804 = zext i8 %803 to i32 br label %807 -805: ; preds = %save.exit101.i +805: ; preds = %save.exit102.i %806 = call i32 @luaZ_fill(ptr noundef nonnull %796) #6 br label %807 @@ -2138,7 +2139,7 @@ save.exit101.i: ; preds = %787, %._crit_edge.i store i32 %808, ptr %0, align 8, !tbaa !51 br label %.loopexit.i -.loopexit.i: ; preds = %inclinenumber.exit80.i, %807, %save.exit95.i, %594, %utf8esc.exit.i, %359 +.loopexit.i: ; preds = %inclinenumber.exit80.i, %807, %save.exit96.i, %594, %utf8esc.exit.i, %359 %.pr.i = load i32, ptr %0, align 8, !tbaa !51 %.not62.i = icmp eq i32 %.pr.i, %10 br i1 %.not62.i, label %._crit_edge.i, label %325 @@ -2151,11 +2152,11 @@ save.exit101.i: ; preds = %787, %._crit_edge.i %813 = getelementptr inbounds nuw i8, ptr %809, i64 16 %814 = load i64, ptr %813, align 8, !tbaa !31 %815 = icmp ugt i64 %812, %814 - br i1 %815, label %816, label %._crit_edge.i102.i + br i1 %815, label %816, label %._crit_edge.i103.i -._crit_edge.i102.i: ; preds = %._crit_edge.i - %.pre.i103.i = load ptr, ptr %809, align 8, !tbaa !32 - br label %save.exit107.i +._crit_edge.i103.i: ; preds = %._crit_edge.i + %.pre.i104.i = load ptr, ptr %809, align 8, !tbaa !32 + br label %save.exit108.i 816: ; preds = %._crit_edge.i %817 = icmp ugt i64 %814, 4611686018427387902 @@ -2173,15 +2174,15 @@ save.exit101.i: ; preds = %787, %._crit_edge.i %824 = call ptr @luaM_saferealloc_(ptr noundef %822, ptr noundef %823, i64 noundef %814, i64 noundef %820) #6 store ptr %824, ptr %809, align 8, !tbaa !32 store i64 %820, ptr %813, align 8, !tbaa !31 - %.pre15.i105.i = load i64, ptr %810, align 8, !tbaa !28 - %.pre16.i106.i = add i64 %.pre15.i105.i, 1 - br label %save.exit107.i - -save.exit107.i: ; preds = %819, %._crit_edge.i102.i - %.pre-phi.i104.i = phi i64 [ %812, %._crit_edge.i102.i ], [ %.pre16.i106.i, %819 ] - %825 = phi i64 [ %811, %._crit_edge.i102.i ], [ %.pre15.i105.i, %819 ] - %826 = phi ptr [ %.pre.i103.i, %._crit_edge.i102.i ], [ %824, %819 ] - store i64 %.pre-phi.i104.i, ptr %810, align 8, !tbaa !28 + %.pre15.i106.i = load i64, ptr %810, align 8, !tbaa !28 + %.pre16.i107.i = add i64 %.pre15.i106.i, 1 + br label %save.exit108.i + +save.exit108.i: ; preds = %819, %._crit_edge.i103.i + %.pre-phi.i105.i = phi i64 [ %812, %._crit_edge.i103.i ], [ %.pre16.i107.i, %819 ] + %825 = phi i64 [ %811, %._crit_edge.i103.i ], [ %.pre15.i106.i, %819 ] + %826 = phi ptr [ %.pre.i104.i, %._crit_edge.i103.i ], [ %824, %819 ] + store i64 %.pre-phi.i105.i, ptr %810, align 8, !tbaa !28 %827 = getelementptr inbounds nuw i8, ptr %826, i64 %825 store i8 %309, ptr %827, align 1, !tbaa !13 %828 = load ptr, ptr %8, align 8, !tbaa !53 @@ -2191,7 +2192,7 @@ save.exit107.i: ; preds = %819, %._crit_edge.i %.not63.i = icmp eq i64 %829, 0 br i1 %.not63.i, label %837, label %831 -831: ; preds = %save.exit107.i +831: ; preds = %save.exit108.i %832 = getelementptr inbounds nuw i8, ptr %828, i64 8 %833 = load ptr, ptr %832, align 8, !tbaa !61 %834 = getelementptr inbounds nuw i8, ptr %833, i64 1 @@ -2200,7 +2201,7 @@ save.exit107.i: ; preds = %819, %._crit_edge.i %836 = zext i8 %835 to i32 br label %839 -837: ; preds = %save.exit107.i +837: ; preds = %save.exit108.i %838 = call i32 @luaZ_fill(ptr noundef nonnull %828) #6 br label %839 @@ -2260,9 +2261,9 @@ save.exit107.i: ; preds = %819, %._crit_edge.i br label %read_string.exit read_string.exit: ; preds = %856, %873 - %.0.i.i108.i = phi ptr [ %849, %873 ], [ %857, %856 ] + %.0.i.i109.i = phi ptr [ %849, %873 ], [ %857, %856 ] call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) #6 - store ptr %.0.i.i108.i, ptr %1, align 8, !tbaa !13 + store ptr %.0.i.i109.i, ptr %1, align 8, !tbaa !13 br label %.loopexit 876: ; preds = %.critedge diff --git a/bench/lua/optimized/ltablib.ll b/bench/lua/optimized/ltablib.ll index 66841d33201..0ee683b395b 100644 --- a/bench/lua/optimized/ltablib.ll +++ b/bench/lua/optimized/ltablib.ll @@ -140,7 +140,7 @@ define internal i32 @tinsert(ptr noundef %0) #0 { %2 = tail call i64 @luaL_len(ptr noundef %0, i32 noundef 1) #3 %3 = add i64 %2, 1 %4 = tail call i32 @lua_gettop(ptr noundef %0) #3 - switch i32 %4, label %16 [ + switch i32 %4, label %15 [ i32 2, label %.loopexit i32 3, label %5 ] @@ -164,20 +164,20 @@ define internal i32 @tinsert(ptr noundef %0) #0 { %13 = add nsw i64 %.023, -1 %14 = tail call i32 @lua_geti(ptr noundef %0, i32 noundef 1, i64 noundef %13) #3 tail call void @lua_seti(ptr noundef %0, i32 noundef 1, i64 noundef %.023) #3 - %15 = icmp sgt i64 %13, %6 - br i1 %15, label %.lr.ph, label %.loopexit + %exitcond.not = icmp eq i64 %13, %6 + br i1 %exitcond.not, label %.loopexit, label %.lr.ph -16: ; preds = %1 - %17 = tail call i32 (ptr, ptr, ...) @luaL_error(ptr noundef %0, ptr noundef nonnull @.str.15) #3 - br label %18 +15: ; preds = %1 + %16 = tail call i32 (ptr, ptr, ...) @luaL_error(ptr noundef %0, ptr noundef nonnull @.str.15) #3 + br label %17 .loopexit: ; preds = %.lr.ph, %11, %1 %.020 = phi i64 [ %3, %1 ], [ %6, %11 ], [ %6, %.lr.ph ] tail call void @lua_seti(ptr noundef %0, i32 noundef 1, i64 noundef %.020) #3 - br label %18 + br label %17 -18: ; preds = %.loopexit, %16 - %.021 = phi i32 [ %17, %16 ], [ 0, %.loopexit ] +17: ; preds = %.loopexit, %15 + %.021 = phi i32 [ %16, %15 ], [ 0, %.loopexit ] ret i32 %.021 } @@ -197,8 +197,9 @@ define internal noundef i32 @tpack(ptr noundef %0) #0 { %indvars.iv = phi i64 [ %4, %.lr.ph.preheader ], [ %indvars.iv.next, %.lr.ph ] tail call void @lua_seti(ptr noundef %0, i32 noundef 1, i64 noundef %indvars.iv) #3 %indvars.iv.next = add nsw i64 %indvars.iv, -1 - %5 = icmp samesign ugt i64 %indvars.iv, 1 - br i1 %5, label %.lr.ph, label %._crit_edge + %5 = and i64 %indvars.iv.next, 4294967295 + %exitcond.not = icmp eq i64 %5, 0 + br i1 %exitcond.not, label %._crit_edge, label %.lr.ph ._crit_edge: ; preds = %.lr.ph, %1 %6 = sext i32 %2 to i64 @@ -408,8 +409,8 @@ checktab.exit55: ; preds = %checktab.exit, %22, %46 = add nsw i64 %.059, %4 tail call void @lua_seti(ptr noundef %0, i32 noundef %7, i64 noundef %46) #3 %47 = add nuw i64 %.059, 1 - %exitcond.not = icmp eq i64 %47, %43 - br i1 %exitcond.not, label %.loopexit, label %.lr.ph60 + %exitcond62.not = icmp eq i64 %47, %43 + br i1 %exitcond62.not, label %.loopexit, label %.lr.ph60 48: ; preds = %39, %38 %49 = icmp sgt i64 %32, -1 @@ -421,9 +422,9 @@ checktab.exit55: ; preds = %checktab.exit, %22, %51 = tail call i32 @lua_geti(ptr noundef %0, i32 noundef 1, i64 noundef %50) #3 %52 = add nsw i64 %.157, %4 tail call void @lua_seti(ptr noundef %0, i32 noundef %7, i64 noundef %52) #3 - %53 = add nsw i64 %.157, -1 - %.not63 = icmp eq i64 %.157, 0 - br i1 %.not63, label %.loopexit, label %.lr.ph + %53 = add i64 %.157, -1 + %exitcond.not = icmp eq i64 %.157, 0 + br i1 %exitcond.not, label %.loopexit, label %.lr.ph .loopexit: ; preds = %.lr.ph, %.lr.ph60, %48, %41, %checktab.exit55 tail call void @lua_pushvalue(ptr noundef %0, i32 noundef %7) #3 diff --git a/bench/lua/optimized/lutf8lib.ll b/bench/lua/optimized/lutf8lib.ll index baafe040fcc..06cee721f7a 100644 --- a/bench/lua/optimized/lutf8lib.ll +++ b/bench/lua/optimized/lutf8lib.ll @@ -88,7 +88,7 @@ u_posrelat.exit.thread: ; preds = %12, %u_posrelat.exi 23: ; preds = %u_posrelat.exit.thread, %u_posrelat.exit %.056 = phi i64 [ %.055, %u_posrelat.exit.thread ], [ %.0, %u_posrelat.exit ] %24 = icmp eq i64 %4, 0 - br i1 %24, label %.preheader57, label %32 + br i1 %24, label %.preheader57, label %31 .preheader57: ; preds = %23 %25 = icmp sgt i64 %.056, 0 @@ -102,52 +102,56 @@ u_posrelat.exit.thread: ; preds = %12, %u_posrelat.exi br i1 %28, label %29, label %.critedge.thread 29: ; preds = %.lr.ph - %30 = add nsw i64 %.175, -1 - %31 = icmp sgt i64 %.175, 1 - br i1 %31, label %.lr.ph, label %.critedge.thread - -32: ; preds = %23 - %33 = getelementptr inbounds i8, ptr %3, i64 %.056 - %34 = load i8, ptr %33, align 1, !tbaa !9 - %35 = icmp slt i8 %34, -64 - br i1 %35, label %36, label %38 - -36: ; preds = %32 - %37 = call i32 (ptr, ptr, ...) @luaL_error(ptr noundef %0, ptr noundef nonnull @.str.8) #3 - br label %70 - -38: ; preds = %32 - %39 = icmp slt i64 %4, 0 - br i1 %39, label %.preheader59, label %.preheader63 - -.preheader63: ; preds = %38 - %40 = load i64, ptr %2, align 8 + %30 = add i64 %.175, -1 + %exitcond84.not = icmp eq i64 %30, 0 + br i1 %exitcond84.not, label %.critedge.thread, label %.lr.ph + +31: ; preds = %23 + %32 = getelementptr inbounds i8, ptr %3, i64 %.056 + %33 = load i8, ptr %32, align 1, !tbaa !9 + %34 = icmp slt i8 %33, -64 + br i1 %34, label %35, label %37 + +35: ; preds = %31 + %36 = call i32 (ptr, ptr, ...) @luaL_error(ptr noundef %0, ptr noundef nonnull @.str.8) #3 + br label %72 + +37: ; preds = %31 + %38 = icmp slt i64 %4, 0 + br i1 %38, label %.preheader59, label %.preheader63 + +.preheader63: ; preds = %37 + %39 = load i64, ptr %2, align 8 %.24667 = add nsw i64 %4, -1 - %41 = icmp ne i64 %4, 1 - %42 = icmp slt i64 %.056, %40 - %43 = select i1 %41, i1 %42, i1 false - br i1 %43, label %.preheader61, label %.critedge + %40 = icmp ne i64 %4, 1 + %41 = icmp slt i64 %.056, %39 + %42 = select i1 %40, i1 %41, i1 false + br i1 %42, label %.preheader61, label %.critedge -.preheader59: ; preds = %38 - %44 = icmp sgt i64 %.056, 0 - br i1 %44, label %.preheader58, label %.critedge.thread91 +.preheader59: ; preds = %37 + %43 = icmp sgt i64 %.056, 0 + br i1 %43, label %.preheader58, label %.critedge.thread92 .preheader58: ; preds = %.preheader59, %.critedge2 %.372 = phi i64 [ %49, %.critedge2 ], [ %.056, %.preheader59 ] %.14571 = phi i64 [ %53, %.critedge2 ], [ %4, %.preheader59 ] + %44 = icmp ne i64 %.372, 0 + %umin = zext i1 %44 to i64 br label %45 45: ; preds = %.preheader58, %48 %.4 = phi i64 [ %49, %48 ], [ %.372, %.preheader58 ] - %46 = icmp samesign ugt i64 %.4, 1 - br i1 %46, label %48, label %.critedge2.thread + %exitcond.not = icmp eq i64 %.4, %umin + br i1 %exitcond.not, label %.critedge2.thread, label %48 .critedge2.thread: ; preds = %45 + %not..le = xor i1 %44, true + %46 = sext i1 %not..le to i64 %47 = add nsw i64 %.14571, 1 br label %.critedge 48: ; preds = %45 - %49 = add nsw i64 %.4, -1 + %49 = add i64 %.4, -1 %50 = getelementptr inbounds nuw i8, ptr %3, i64 %49 %51 = load i8, ptr %50, align 1, !tbaa !9 %52 = icmp slt i8 %51, -64 @@ -156,70 +160,72 @@ u_posrelat.exit.thread: ; preds = %12, %u_posrelat.exi .critedge2: ; preds = %48 %53 = add nsw i64 %.14571, 1 %54 = icmp slt i64 %.14571, -1 - br i1 %54, label %.preheader58, label %.critedge + %55 = icmp sgt i64 %.4, 1 + %56 = and i1 %54, %55 + br i1 %56, label %.preheader58, label %.critedge -.loopexit62: ; preds = %58 +.loopexit62: ; preds = %60 %.246 = add nsw i64 %.24669, -1 - %55 = icmp samesign ugt i64 %.24669, 1 - %56 = icmp slt i64 %59, %40 - %57 = select i1 %55, i1 %56, i1 false - br i1 %57, label %.preheader61, label %.critedge + %57 = icmp samesign ugt i64 %.24669, 1 + %58 = icmp slt i64 %61, %39 + %59 = select i1 %57, i1 %58, i1 false + br i1 %59, label %.preheader61, label %.critedge .preheader61: ; preds = %.preheader63, %.loopexit62 %.24669 = phi i64 [ %.246, %.loopexit62 ], [ %.24667, %.preheader63 ] - %.568 = phi i64 [ %59, %.loopexit62 ], [ %.056, %.preheader63 ] - br label %58 + %.568 = phi i64 [ %61, %.loopexit62 ], [ %.056, %.preheader63 ] + br label %60 -58: ; preds = %.preheader61, %58 - %.6 = phi i64 [ %59, %58 ], [ %.568, %.preheader61 ] - %59 = add nsw i64 %.6, 1 - %60 = getelementptr inbounds i8, ptr %3, i64 %59 - %61 = load i8, ptr %60, align 1, !tbaa !9 - %62 = icmp slt i8 %61, -64 - br i1 %62, label %58, label %.loopexit62 +60: ; preds = %.preheader61, %60 + %.6 = phi i64 [ %61, %60 ], [ %.568, %.preheader61 ] + %61 = add nsw i64 %.6, 1 + %62 = getelementptr inbounds i8, ptr %3, i64 %61 + %63 = load i8, ptr %62, align 1, !tbaa !9 + %64 = icmp slt i8 %63, -64 + br i1 %64, label %60, label %.loopexit62 .critedge: ; preds = %.loopexit62, %.critedge2, %.critedge2.thread, %.preheader63 %.044 = phi i64 [ %.24667, %.preheader63 ], [ %47, %.critedge2.thread ], [ %53, %.critedge2 ], [ %.246, %.loopexit62 ] - %.2 = phi i64 [ %.056, %.preheader63 ], [ 0, %.critedge2.thread ], [ %49, %.critedge2 ], [ %59, %.loopexit62 ] + %.2 = phi i64 [ %.056, %.preheader63 ], [ %46, %.critedge2.thread ], [ %49, %.critedge2 ], [ %61, %.loopexit62 ] %.not = icmp eq i64 %.044, 0 - br i1 %.not, label %.critedge.thread, label %.critedge.thread91 + br i1 %.not, label %.critedge.thread, label %.critedge.thread92 -.critedge.thread91: ; preds = %.preheader59, %.critedge +.critedge.thread92: ; preds = %.preheader59, %.critedge call void @lua_pushnil(ptr noundef %0) #3 - br label %70 + br label %72 .critedge.thread: ; preds = %29, %.lr.ph, %.preheader57, %.critedge - %.290 = phi i64 [ %.2, %.critedge ], [ %.056, %.preheader57 ], [ 0, %29 ], [ %.175, %.lr.ph ] - %63 = add nsw i64 %.290, 1 - call void @lua_pushinteger(ptr noundef %0, i64 noundef %63) #3 - %64 = getelementptr inbounds i8, ptr %3, i64 %.290 - %65 = load i8, ptr %64, align 1, !tbaa !9 - %.not52 = icmp sgt i8 %65, -1 + %.291 = phi i64 [ %.2, %.critedge ], [ %.056, %.preheader57 ], [ 0, %29 ], [ %.175, %.lr.ph ] + %65 = add nsw i64 %.291, 1 + call void @lua_pushinteger(ptr noundef %0, i64 noundef %65) #3 + %66 = getelementptr inbounds i8, ptr %3, i64 %.291 + %67 = load i8, ptr %66, align 1, !tbaa !9 + %.not52 = icmp sgt i8 %67, -1 br i1 %.not52, label %.loopexit, label %.preheader .preheader: ; preds = %.critedge.thread %invariant.gep = getelementptr i8, ptr %3, i64 1 - br label %66 + br label %68 -66: ; preds = %.preheader, %66 - %.8 = phi i64 [ %67, %66 ], [ %.290, %.preheader ] - %67 = add nsw i64 %.8, 1 - %gep = getelementptr i8, ptr %invariant.gep, i64 %67 - %68 = load i8, ptr %gep, align 1, !tbaa !9 - %69 = icmp slt i8 %68, -64 - br i1 %69, label %66, label %.loopexit.loopexit +68: ; preds = %.preheader, %68 + %.8 = phi i64 [ %69, %68 ], [ %.291, %.preheader ] + %69 = add nsw i64 %.8, 1 + %gep = getelementptr i8, ptr %invariant.gep, i64 %69 + %70 = load i8, ptr %gep, align 1, !tbaa !9 + %71 = icmp slt i8 %70, -64 + br i1 %71, label %68, label %.loopexit.loopexit -.loopexit.loopexit: ; preds = %66 +.loopexit.loopexit: ; preds = %68 %.pre = add nsw i64 %.8, 2 br label %.loopexit .loopexit: ; preds = %.loopexit.loopexit, %.critedge.thread - %.pre-phi = phi i64 [ %.pre, %.loopexit.loopexit ], [ %63, %.critedge.thread ] + %.pre-phi = phi i64 [ %.pre, %.loopexit.loopexit ], [ %65, %.critedge.thread ] call void @lua_pushinteger(ptr noundef %0, i64 noundef %.pre-phi) #3 - br label %70 + br label %72 -70: ; preds = %.loopexit, %.critedge.thread91, %36 - %.047 = phi i32 [ 1, %.critedge.thread91 ], [ 2, %.loopexit ], [ %37, %36 ] +72: ; preds = %.loopexit, %.critedge.thread92, %35 + %.047 = phi i32 [ 1, %.critedge.thread92 ], [ 2, %.loopexit ], [ %36, %35 ] call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2) #3 ret i32 %.047 } diff --git a/bench/lvgl/optimized/lv_buttonmatrix.ll b/bench/lvgl/optimized/lv_buttonmatrix.ll index 585170f5c8e..9dc92cfbf47 100644 --- a/bench/lvgl/optimized/lv_buttonmatrix.ll +++ b/bench/lvgl/optimized/lv_buttonmatrix.ll @@ -273,17 +273,17 @@ has_popovers_in_top_row.exit: ; preds = %32 %106 = load i8, ptr %105, align 4 %107 = and i8 %106, 1 %.not329 = icmp eq i8 %107, 0 - %.pre436 = load i32, ptr %85, align 8, !tbaa !18 + %.pre438 = load i32, ptr %85, align 8, !tbaa !18 br i1 %.not329, label %109, label %108 108: ; preds = %104 - tail call fastcc void @make_one_button_checked(ptr noundef nonnull %10, i32 noundef %.pre436) + tail call fastcc void @make_one_button_checked(ptr noundef nonnull %10, i32 noundef %.pre438) %.pre = load ptr, ptr %88, align 8, !tbaa !20 - %.pre435 = load i32, ptr %85, align 8, !tbaa !18 + %.pre437 = load i32, ptr %85, align 8, !tbaa !18 br label %109 109: ; preds = %104, %108, %87 - %110 = phi i32 [ %.pre436, %104 ], [ %.pre435, %108 ], [ %86, %87 ] + %110 = phi i32 [ %.pre438, %104 ], [ %.pre437, %108 ], [ %86, %87 ] %111 = phi ptr [ %89, %104 ], [ %.pre, %108 ], [ %89, %87 ] %112 = zext i32 %110 to i64 %113 = getelementptr inbounds nuw i32, ptr %111, i64 %112 @@ -304,11 +304,11 @@ has_popovers_in_top_row.exit: ; preds = %32 br i1 %.not330, label %._crit_edge, label %.critedge337 ._crit_edge: ; preds = %118 - %.pre437 = load i32, ptr %85, align 8, !tbaa !18 + %.pre439 = load i32, ptr %85, align 8, !tbaa !18 br label %120 120: ; preds = %._crit_edge, %109, %84 - %121 = phi i32 [ %.pre437, %._crit_edge ], [ %110, %109 ], [ 65535, %84 ] + %121 = phi i32 [ %.pre439, %._crit_edge ], [ %110, %109 ], [ 65535, %84 ] call fastcc void @invalidate_button_area(ptr noundef nonnull %10, i32 noundef %121) br label %.critedge337 @@ -466,7 +466,7 @@ has_popovers_in_top_row.exit.thread: ; preds = %29, %20, %.lr.ph.i, ] ..critedge340_crit_edge: ; preds = %180 - %.pre439 = load i32, ptr %181, align 8, !tbaa !18 + %.pre441 = load i32, ptr %181, align 8, !tbaa !18 br label %.critedge340 184: ; preds = %180 @@ -480,13 +480,13 @@ has_popovers_in_top_row.exit.thread: ; preds = %29, %20, %.lr.ph.i, %spec.store.select341 = select i1 %.not322, i32 %storemerge321, i32 0 store i32 %spec.store.select341, ptr %181, align 8 %190 = getelementptr inbounds nuw i8, ptr %10, i64 80 - %.pre438 = load ptr, ptr %190, align 8, !tbaa !20 + %.pre440 = load ptr, ptr %190, align 8, !tbaa !20 br label %191 191: ; preds = %.critedge18, %184 %192 = phi i32 [ %spec.store.select, %.critedge18 ], [ %spec.store.select341, %184 ] %193 = zext i32 %192 to i64 - %194 = getelementptr inbounds nuw i32, ptr %.pre438, i64 %193 + %194 = getelementptr inbounds nuw i32, ptr %.pre440, i64 %193 %195 = load i32, ptr %194, align 4, !tbaa !27 %196 = and i32 %195, 80 %or.cond377.not = icmp eq i32 %196, 0 @@ -612,8 +612,8 @@ has_popovers_in_top_row.exit.thread: ; preds = %29, %20, %.lr.ph.i, br label %255 255: ; preds = %.lr.ph412, %271 - %indvars.iv431 = phi i64 [ %251, %.lr.ph412 ], [ %indvars.iv.next432, %271 ] - %256 = getelementptr inbounds nuw %struct.lv_area_t, ptr %250, i64 %indvars.iv431 + %indvars.iv432 = phi i64 [ %251, %.lr.ph412 ], [ %indvars.iv.next433, %271 ] + %256 = getelementptr inbounds nuw %struct.lv_area_t, ptr %250, i64 %indvars.iv432 %257 = getelementptr inbounds nuw i8, ptr %256, i64 4 %258 = load i32, ptr %257, align 4, !tbaa !34 %259 = icmp sgt i32 %258, %253 @@ -633,20 +633,20 @@ has_popovers_in_top_row.exit.thread: ; preds = %29, %20, %.lr.ph.i, 266: ; preds = %262 %267 = load ptr, ptr %254, align 8, !tbaa !20 - %268 = getelementptr inbounds nuw i32, ptr %267, i64 %indvars.iv431 + %268 = getelementptr inbounds nuw i32, ptr %267, i64 %indvars.iv432 %269 = load i32, ptr %268, align 4, !tbaa !27 %270 = and i32 %269, 80 %or.cond383.not = icmp eq i32 %270, 0 br i1 %or.cond383.not, label %272, label %271 271: ; preds = %255, %260, %262, %266 - %indvars.iv.next432 = add nuw nsw i64 %indvars.iv431, 1 - %lftr.wideiv = trunc i64 %indvars.iv.next432 to i32 - %exitcond434.not = icmp eq i32 %248, %lftr.wideiv - br i1 %exitcond434.not, label %.critedge340, label %255, !llvm.loop !36 + %indvars.iv.next433 = add nuw nsw i64 %indvars.iv432, 1 + %lftr.wideiv435 = trunc i64 %indvars.iv.next433 to i32 + %exitcond436.not = icmp eq i32 %248, %lftr.wideiv435 + br i1 %exitcond436.not, label %.critedge340, label %255, !llvm.loop !36 272: ; preds = %266 - %273 = trunc nuw i64 %indvars.iv431 to i32 + %273 = trunc nuw i64 %indvars.iv432 to i32 store i32 %273, ptr %181, align 8, !tbaa !18 br label %.critedge340 @@ -739,8 +739,9 @@ has_popovers_in_top_row.exit.thread: ; preds = %29, %20, %.lr.ph.i, 326: ; preds = %310, %315, %318, %321 %indvars.iv.next429 = add nsw i64 %indvars.iv428, -1 - %327 = icmp sgt i64 %indvars.iv428, 0 - br i1 %327, label %310, label %.critedge340, !llvm.loop !38 + %327 = and i64 %indvars.iv.next429, 65535 + %exitcond431.not = icmp eq i64 %327, 65535 + br i1 %exitcond431.not, label %.critedge340, label %310, !llvm.loop !38 328: ; preds = %321 %329 = trunc i64 %indvars.iv428 to i32 @@ -749,7 +750,7 @@ has_popovers_in_top_row.exit.thread: ; preds = %29, %20, %.lr.ph.i, br label %.critedge340 .critedge340: ; preds = %326, %283, %271, %228, %208, %191, %..critedge340_crit_edge, %292, %237, %291, %328, %236, %272, %218, %199 - %331 = phi i32 [ %.pre439, %..critedge340_crit_edge ], [ %301, %292 ], [ %246, %237 ], [ 65535, %291 ], [ %330, %328 ], [ 65535, %236 ], [ %273, %272 ], [ 65535, %218 ], [ 65535, %199 ], [ %192, %191 ], [ %209, %208 ], [ %229, %228 ], [ %246, %271 ], [ %284, %283 ], [ %301, %326 ] + %331 = phi i32 [ %.pre441, %..critedge340_crit_edge ], [ %301, %292 ], [ %246, %237 ], [ 65535, %291 ], [ %330, %328 ], [ 65535, %236 ], [ %273, %272 ], [ 65535, %218 ], [ 65535, %199 ], [ %192, %191 ], [ %209, %208 ], [ %229, %228 ], [ %246, %271 ], [ %284, %283 ], [ %301, %326 ] tail call fastcc void @invalidate_button_area(ptr noundef nonnull %10, i32 noundef %331) br label %.critedge337 diff --git a/bench/lvgl/optimized/lv_draw_sw_mask.ll b/bench/lvgl/optimized/lv_draw_sw_mask.ll index bf0c1e6e292..dcb0296b34e 100644 --- a/bench/lvgl/optimized/lv_draw_sw_mask.ll +++ b/bench/lvgl/optimized/lv_draw_sw_mask.ll @@ -1814,14 +1814,14 @@ circ_next.exit.i: ; preds = %124, %120 br label %222 222: ; preds = %204, %186, %154, %140 - %.sink292.i = phi i64 [ %168, %154 ], [ %216, %204 ], [ %196, %186 ], [ %141, %140 ] - %.sink289.i = phi i8 [ %177, %154 ], [ %221, %204 ], [ %203, %186 ], [ %151, %140 ] + %.sink293.i = phi i64 [ %168, %154 ], [ %216, %204 ], [ %196, %186 ], [ %141, %140 ] + %.sink290.i = phi i8 [ %177, %154 ], [ %221, %204 ], [ %203, %186 ], [ %151, %140 ] %.sink.i = phi i32 [ 2, %154 ], [ 2, %204 ], [ 2, %186 ], [ 1, %140 ] %223 = load ptr, ptr %84, align 8, !tbaa !21 - %224 = getelementptr inbounds nuw i8, ptr %223, i64 %.sink292.i - store i8 %.sink289.i, ptr %224, align 1, !tbaa !36 + %224 = getelementptr inbounds nuw i8, ptr %223, i64 %.sink293.i + store i8 %.sink290.i, ptr %224, align 1, !tbaa !36 %225 = load ptr, ptr %84, align 8, !tbaa !21 - %226 = getelementptr inbounds nuw i8, ptr %225, i64 %.sink292.i + %226 = getelementptr inbounds nuw i8, ptr %225, i64 %.sink293.i %227 = load i8, ptr %226, align 1, !tbaa !36 %228 = shl i8 %227, 4 store i8 %228, ptr %226, align 1, !tbaa !36 @@ -1912,72 +1912,73 @@ circ_next.exit.i: ; preds = %124, %120 store i8 %276, ptr %277, align 1, !tbaa !36 %indvars.iv.next268.i = add nsw i64 %indvars.iv267.i, -1 %indvars.iv.next270.i = add nuw nsw i64 %indvars.iv269.i, 1 - %.not293.i = icmp eq i64 %indvars.iv267.i, 0 - br i1 %.not293.i, label %._crit_edge.loopexit.i, label %.lr.ph.i, !llvm.loop !66 + %278 = and i64 %indvars.iv.next268.i, 4294967295 + %exitcond274.not.i = icmp eq i64 %278, 4294967295 + br i1 %exitcond274.not.i, label %._crit_edge.loopexit.i, label %.lr.ph.i, !llvm.loop !66 ._crit_edge.loopexit.i: ; preds = %.lr.ph.i - %278 = trunc nsw i64 %indvars.iv.next270.i to i32 + %279 = trunc nsw i64 %indvars.iv.next270.i to i32 br label %._crit_edge.i ._crit_edge.i: ; preds = %._crit_edge.loopexit.i, %263 - %.3183.lcssa.i = phi i32 [ %.2182.i, %263 ], [ %278, %._crit_edge.loopexit.i ] - %279 = load ptr, ptr %89, align 8, !tbaa !60 - store i16 0, ptr %279, align 2, !tbaa !62 - %280 = icmp sgt i32 %.3183.lcssa.i, 0 - br i1 %280, label %.lr.ph255.i, label %._crit_edge256.i + %.3183.lcssa.i = phi i32 [ %.2182.i, %263 ], [ %279, %._crit_edge.loopexit.i ] + %280 = load ptr, ptr %89, align 8, !tbaa !60 + store i16 0, ptr %280, align 2, !tbaa !62 + %281 = icmp sgt i32 %.3183.lcssa.i, 0 + br i1 %281, label %.lr.ph255.i, label %._crit_edge256.i .lr.ph255.i: ; preds = %._crit_edge.i - %281 = load ptr, ptr %94, align 8, !tbaa !61 - %282 = zext nneg i32 %.3183.lcssa.i to i64 - br label %283 - -283: ; preds = %308, %.lr.ph255.i - %indvars.iv276.i = phi i64 [ 0, %.lr.ph255.i ], [ %indvars.iv.next277.i, %308 ] - %.2252.i = phi i32 [ 0, %.lr.ph255.i ], [ %.3.lcssa.i, %308 ] - %284 = trunc i32 %.2252.i to i16 - %285 = getelementptr inbounds nuw i16, ptr %279, i64 %indvars.iv276.i - store i16 %284, ptr %285, align 2, !tbaa !62 - %286 = sext i32 %.2252.i to i64 - %287 = getelementptr inbounds i32, ptr %105, i64 %286 - %288 = load i32, ptr %287, align 4, !tbaa !63 - %289 = trunc i32 %288 to i16 - %290 = getelementptr inbounds nuw i16, ptr %281, i64 %indvars.iv276.i - store i16 %289, ptr %290, align 2, !tbaa !62 - %291 = getelementptr inbounds i32, ptr %108, i64 %286 - %292 = load i32, ptr %291, align 4, !tbaa !63 - %293 = zext i32 %292 to i64 - %294 = icmp eq i64 %indvars.iv276.i, %293 - br i1 %294, label %.lr.ph249.i, label %308 - -.lr.ph249.i: ; preds = %283, %.lr.ph249.i - %indvars.iv274.i = phi i64 [ %indvars.iv.next275.i, %.lr.ph249.i ], [ %286, %283 ] - %295 = phi i32 [ %299, %.lr.ph249.i ], [ %288, %283 ] - %296 = and i32 %295, 65535 - %297 = getelementptr inbounds i32, ptr %105, i64 %indvars.iv274.i - %298 = load i32, ptr %297, align 4, !tbaa !63 - %299 = tail call i32 @llvm.smin.i32(i32 %298, i32 %296) - %indvars.iv.next275.i = add nsw i64 %indvars.iv274.i, 1 - %300 = getelementptr inbounds i32, ptr %108, i64 %indvars.iv.next275.i - %301 = load i32, ptr %300, align 4, !tbaa !63 - %302 = zext i32 %301 to i64 - %303 = icmp eq i64 %indvars.iv276.i, %302 - %304 = icmp slt i64 %indvars.iv.next275.i, %282 - %305 = and i1 %304, %303 - br i1 %305, label %.lr.ph249.i, label %._crit_edge250.i, !llvm.loop !67 + %282 = load ptr, ptr %94, align 8, !tbaa !61 + %283 = zext nneg i32 %.3183.lcssa.i to i64 + br label %284 + +284: ; preds = %309, %.lr.ph255.i + %indvars.iv277.i = phi i64 [ 0, %.lr.ph255.i ], [ %indvars.iv.next278.i, %309 ] + %.2252.i = phi i32 [ 0, %.lr.ph255.i ], [ %.3.lcssa.i, %309 ] + %285 = trunc i32 %.2252.i to i16 + %286 = getelementptr inbounds nuw i16, ptr %280, i64 %indvars.iv277.i + store i16 %285, ptr %286, align 2, !tbaa !62 + %287 = sext i32 %.2252.i to i64 + %288 = getelementptr inbounds i32, ptr %105, i64 %287 + %289 = load i32, ptr %288, align 4, !tbaa !63 + %290 = trunc i32 %289 to i16 + %291 = getelementptr inbounds nuw i16, ptr %282, i64 %indvars.iv277.i + store i16 %290, ptr %291, align 2, !tbaa !62 + %292 = getelementptr inbounds i32, ptr %108, i64 %287 + %293 = load i32, ptr %292, align 4, !tbaa !63 + %294 = zext i32 %293 to i64 + %295 = icmp eq i64 %indvars.iv277.i, %294 + br i1 %295, label %.lr.ph249.i, label %309 + +.lr.ph249.i: ; preds = %284, %.lr.ph249.i + %indvars.iv275.i = phi i64 [ %indvars.iv.next276.i, %.lr.ph249.i ], [ %287, %284 ] + %296 = phi i32 [ %300, %.lr.ph249.i ], [ %289, %284 ] + %297 = and i32 %296, 65535 + %298 = getelementptr inbounds i32, ptr %105, i64 %indvars.iv275.i + %299 = load i32, ptr %298, align 4, !tbaa !63 + %300 = tail call i32 @llvm.smin.i32(i32 %299, i32 %297) + %indvars.iv.next276.i = add nsw i64 %indvars.iv275.i, 1 + %301 = getelementptr inbounds i32, ptr %108, i64 %indvars.iv.next276.i + %302 = load i32, ptr %301, align 4, !tbaa !63 + %303 = zext i32 %302 to i64 + %304 = icmp eq i64 %indvars.iv277.i, %303 + %305 = icmp slt i64 %indvars.iv.next276.i, %283 + %306 = and i1 %305, %304 + br i1 %306, label %.lr.ph249.i, label %._crit_edge250.i, !llvm.loop !67 ._crit_edge250.i: ; preds = %.lr.ph249.i - %306 = trunc i32 %299 to i16 - %307 = trunc nsw i64 %indvars.iv.next275.i to i32 - store i16 %306, ptr %290, align 2, !tbaa !62 - br label %308 - -308: ; preds = %._crit_edge250.i, %283 - %.3.lcssa.i = phi i32 [ %307, %._crit_edge250.i ], [ %.2252.i, %283 ] - %indvars.iv.next277.i = add nuw nsw i64 %indvars.iv276.i, 1 - %309 = icmp slt i32 %.3.lcssa.i, %.3183.lcssa.i - br i1 %309, label %283, label %._crit_edge256.i, !llvm.loop !68 - -._crit_edge256.i: ; preds = %308, %._crit_edge.i + %307 = trunc i32 %300 to i16 + %308 = trunc nsw i64 %indvars.iv.next276.i to i32 + store i16 %307, ptr %291, align 2, !tbaa !62 + br label %309 + +309: ; preds = %._crit_edge250.i, %284 + %.3.lcssa.i = phi i32 [ %308, %._crit_edge250.i ], [ %.2252.i, %284 ] + %indvars.iv.next278.i = add nuw nsw i64 %indvars.iv277.i, 1 + %310 = icmp slt i32 %.3.lcssa.i, %.3183.lcssa.i + br i1 %310, label %284, label %._crit_edge256.i, !llvm.loop !68 + +._crit_edge256.i: ; preds = %309, %._crit_edge.i tail call void @lv_free(ptr noundef nonnull %105) #8 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #8 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) #8 diff --git a/bench/lvgl/optimized/lv_spinbox.ll b/bench/lvgl/optimized/lv_spinbox.ll index 16d4349472c..8e81c903051 100644 --- a/bench/lvgl/optimized/lv_spinbox.ll +++ b/bench/lvgl/optimized/lv_spinbox.ll @@ -389,16 +389,16 @@ define internal fastcc void @lv_spinbox_updatevalue(ptr noundef %0) unnamed_addr %6 = icmp slt i32 %5, 0 %7 = getelementptr inbounds nuw i8, ptr %0, i64 160 %8 = load i32, ptr %7, align 8, !tbaa !3 - br i1 %6, label %9, label %._crit_edge102 + br i1 %6, label %9, label %._crit_edge103 9: ; preds = %1 %10 = icmp sgt i32 %8, -1 %11 = select i1 %10, i8 43, i8 45 store i8 %11, ptr %2, align 16, !tbaa !23 %12 = getelementptr inbounds nuw i8, ptr %2, i64 1 - br label %._crit_edge102 + br label %._crit_edge103 -._crit_edge102: ; preds = %1, %9 +._crit_edge103: ; preds = %1, %9 %.059.neg = phi i32 [ 0, %9 ], [ -1, %1 ] %.057 = phi ptr [ %12, %9 ], [ %2, %1 ] call void @llvm.lifetime.start.p0(i64 14, ptr nonnull %3) #7 @@ -414,7 +414,7 @@ define internal fastcc void @lv_spinbox_updatevalue(ptr noundef %0) unnamed_addr %.not = icmp eq i32 %21, 0 br i1 %.not, label %.loopexit, label %22 -22: ; preds = %._crit_edge102 +22: ; preds = %._crit_edge103 %23 = and i64 %15, 2147483648 %24 = icmp eq i64 %23, 0 br i1 %24, label %.lr.ph.preheader, label %.preheader @@ -442,15 +442,16 @@ define internal fastcc void @lv_spinbox_updatevalue(ptr noundef %0) unnamed_addr %32 = getelementptr inbounds [14 x i8], ptr %3, i64 0, i64 %31 store i8 %30, ptr %32, align 1, !tbaa !23 %indvars.iv.next = add nsw i64 %indvars.iv, -1 - %.not106 = icmp eq i64 %indvars.iv, 0 - br i1 %.not106, label %.preheader, label %.lr.ph, !llvm.loop !27 - -.loopexit: ; preds = %.lr.ph72.preheader, %.preheader, %._crit_edge102 - %33 = lshr i16 %17, 4 - %34 = and i16 %33, 15 - %35 = icmp eq i16 %34, 0 - %.in = select i1 %35, i16 %18, i16 %34 - %36 = zext nneg i16 %.in to i32 + %33 = and i64 %indvars.iv.next, 4294967295 + %exitcond.not = icmp eq i64 %33, 4294967295 + br i1 %exitcond.not, label %.preheader, label %.lr.ph, !llvm.loop !27 + +.loopexit: ; preds = %.lr.ph72.preheader, %.preheader, %._crit_edge103 + %34 = lshr i16 %17, 4 + %35 = and i16 %34, 15 + %36 = icmp eq i16 %35, 0 + %.in = select i1 %36, i16 %18, i16 %35 + %37 = zext nneg i16 %.in to i32 %.not89 = icmp eq i16 %.in, 0 br i1 %.not89, label %.critedge, label %.lr.ph75.preheader @@ -458,83 +459,83 @@ define internal fastcc void @lv_spinbox_updatevalue(ptr noundef %0) unnamed_addr %wide.trip.count = zext nneg i16 %.in to i64 br label %.lr.ph75 -.lr.ph75: ; preds = %.lr.ph75.preheader, %39 - %indvars.iv94 = phi i64 [ 0, %.lr.ph75.preheader ], [ %indvars.iv.next95, %39 ] - %.15874 = phi ptr [ %.057, %.lr.ph75.preheader ], [ %40, %39 ] - %37 = getelementptr inbounds nuw [14 x i8], ptr %3, i64 0, i64 %indvars.iv94 - %38 = load i8, ptr %37, align 1, !tbaa !23 - %.not67 = icmp eq i8 %38, 0 - br i1 %.not67, label %.critedge.loopexit.split.loop.exit103, label %39 - -39: ; preds = %.lr.ph75 - store i8 %38, ptr %.15874, align 1, !tbaa !23 - %40 = getelementptr inbounds nuw i8, ptr %.15874, i64 1 +.lr.ph75: ; preds = %.lr.ph75.preheader, %40 + %indvars.iv94 = phi i64 [ 0, %.lr.ph75.preheader ], [ %indvars.iv.next95, %40 ] + %.15874 = phi ptr [ %.057, %.lr.ph75.preheader ], [ %41, %40 ] + %38 = getelementptr inbounds nuw [14 x i8], ptr %3, i64 0, i64 %indvars.iv94 + %39 = load i8, ptr %38, align 1, !tbaa !23 + %.not67 = icmp eq i8 %39, 0 + br i1 %.not67, label %.critedge.loopexit.split.loop.exit104, label %40 + +40: ; preds = %.lr.ph75 + store i8 %39, ptr %.15874, align 1, !tbaa !23 + %41 = getelementptr inbounds nuw i8, ptr %.15874, i64 1 %indvars.iv.next95 = add nuw nsw i64 %indvars.iv94, 1 - %exitcond.not = icmp eq i64 %indvars.iv.next95, %wide.trip.count - br i1 %exitcond.not, label %.critedge, label %.lr.ph75, !llvm.loop !28 + %exitcond97.not = icmp eq i64 %indvars.iv.next95, %wide.trip.count + br i1 %exitcond97.not, label %.critedge, label %.lr.ph75, !llvm.loop !28 -.critedge.loopexit.split.loop.exit103: ; preds = %.lr.ph75 - %41 = trunc nuw nsw i64 %indvars.iv94 to i32 +.critedge.loopexit.split.loop.exit104: ; preds = %.lr.ph75 + %42 = trunc nuw nsw i64 %indvars.iv94 to i32 br label %.critedge -.critedge: ; preds = %39, %.critedge.loopexit.split.loop.exit103, %.loopexit - %.262.lcssa = phi i32 [ 0, %.loopexit ], [ %41, %.critedge.loopexit.split.loop.exit103 ], [ %36, %39 ] - %.158.lcssa = phi ptr [ %.057, %.loopexit ], [ %.15874, %.critedge.loopexit.split.loop.exit103 ], [ %40, %39 ] - %42 = and i16 %17, 240 - %.not68 = icmp eq i16 %42, 0 - br i1 %.not68, label %.critedge2, label %43 +.critedge: ; preds = %40, %.critedge.loopexit.split.loop.exit104, %.loopexit + %.262.lcssa = phi i32 [ 0, %.loopexit ], [ %42, %.critedge.loopexit.split.loop.exit104 ], [ %37, %40 ] + %.158.lcssa = phi ptr [ %.057, %.loopexit ], [ %.15874, %.critedge.loopexit.split.loop.exit104 ], [ %41, %40 ] + %43 = and i16 %17, 240 + %.not68 = icmp eq i16 %43, 0 + br i1 %.not68, label %.critedge2, label %44 -43: ; preds = %.critedge +44: ; preds = %.critedge store i8 46, ptr %.158.lcssa, align 1, !tbaa !23 - %44 = zext nneg i16 %18 to i32 - %45 = icmp samesign ult i32 %.262.lcssa, %44 - br i1 %45, label %.lr.ph83.preheader, label %.critedge2 + %45 = zext nneg i16 %18 to i32 + %46 = icmp samesign ult i32 %.262.lcssa, %45 + br i1 %46, label %.lr.ph83.preheader, label %.critedge2 -.lr.ph83.preheader: ; preds = %43 - %46 = zext nneg i32 %.262.lcssa to i64 - %wide.trip.count100 = zext nneg i16 %18 to i64 +.lr.ph83.preheader: ; preds = %44 + %47 = zext nneg i32 %.262.lcssa to i64 + %wide.trip.count101 = zext nneg i16 %18 to i64 br label %.lr.ph83 -.lr.ph83: ; preds = %.lr.ph83.preheader, %49 - %indvars.iv97 = phi i64 [ %46, %.lr.ph83.preheader ], [ %indvars.iv.next98, %49 ] - %.282.pn = phi ptr [ %.158.lcssa, %.lr.ph83.preheader ], [ %.282, %49 ] - %47 = getelementptr inbounds nuw [14 x i8], ptr %3, i64 0, i64 %indvars.iv97 - %48 = load i8, ptr %47, align 1, !tbaa !23 - %.not69 = icmp eq i8 %48, 0 - br i1 %.not69, label %.critedge2, label %49 +.lr.ph83: ; preds = %.lr.ph83.preheader, %50 + %indvars.iv98 = phi i64 [ %47, %.lr.ph83.preheader ], [ %indvars.iv.next99, %50 ] + %.282.pn = phi ptr [ %.158.lcssa, %.lr.ph83.preheader ], [ %.282, %50 ] + %48 = getelementptr inbounds nuw [14 x i8], ptr %3, i64 0, i64 %indvars.iv98 + %49 = load i8, ptr %48, align 1, !tbaa !23 + %.not69 = icmp eq i8 %49, 0 + br i1 %.not69, label %.critedge2, label %50 -49: ; preds = %.lr.ph83 +50: ; preds = %.lr.ph83 %.282 = getelementptr inbounds nuw i8, ptr %.282.pn, i64 1 - store i8 %48, ptr %.282, align 1, !tbaa !23 - %indvars.iv.next98 = add nuw nsw i64 %indvars.iv97, 1 - %exitcond101.not = icmp eq i64 %indvars.iv.next98, %wide.trip.count100 - br i1 %exitcond101.not, label %.critedge2, label %.lr.ph83, !llvm.loop !29 + store i8 %49, ptr %.282, align 1, !tbaa !23 + %indvars.iv.next99 = add nuw nsw i64 %indvars.iv98, 1 + %exitcond102.not = icmp eq i64 %indvars.iv.next99, %wide.trip.count101 + br i1 %exitcond102.not, label %.critedge2, label %.lr.ph83, !llvm.loop !29 -.critedge2: ; preds = %49, %.lr.ph83, %43, %.critedge +.critedge2: ; preds = %50, %.lr.ph83, %44, %.critedge call void @lv_textarea_set_text(ptr noundef %0, ptr noundef nonnull %2) #7 - %50 = getelementptr inbounds nuw i8, ptr %0, i64 172 - %51 = load i32, ptr %50, align 4, !tbaa !19 - %52 = load i16, ptr %16, align 8 - %53 = and i16 %52, 15 - %54 = zext nneg i16 %53 to i32 - %55 = icmp sgt i32 %51, 9 - br i1 %55, label %.lr.ph87, label %._crit_edge + %51 = getelementptr inbounds nuw i8, ptr %0, i64 172 + %52 = load i32, ptr %51, align 4, !tbaa !19 + %53 = load i16, ptr %16, align 8 + %54 = and i16 %53, 15 + %55 = zext nneg i16 %54 to i32 + %56 = icmp sgt i32 %52, 9 + br i1 %56, label %.lr.ph87, label %._crit_edge .lr.ph87: ; preds = %.critedge2, %.lr.ph87 - %.086 = phi i32 [ %57, %.lr.ph87 ], [ %54, %.critedge2 ] - %.05685 = phi i32 [ %56, %.lr.ph87 ], [ %51, %.critedge2 ] - %56 = udiv i32 %.05685, 10 - %57 = add i32 %.086, -1 - %58 = icmp samesign ugt i32 %.05685, 99 - br i1 %58, label %.lr.ph87, label %._crit_edge, !llvm.loop !30 + %.086 = phi i32 [ %58, %.lr.ph87 ], [ %55, %.critedge2 ] + %.05685 = phi i32 [ %57, %.lr.ph87 ], [ %52, %.critedge2 ] + %57 = udiv i32 %.05685, 10 + %58 = add i32 %.086, -1 + %59 = icmp samesign ugt i32 %.05685, 99 + br i1 %59, label %.lr.ph87, label %._crit_edge, !llvm.loop !30 ._crit_edge: ; preds = %.lr.ph87, %.critedge2 - %.0.lcssa = phi i32 [ %54, %.critedge2 ], [ %57, %.lr.ph87 ] - %59 = icmp ugt i32 %.0.lcssa, %36 - %60 = zext i1 %59 to i32 + %.0.lcssa = phi i32 [ %55, %.critedge2 ], [ %58, %.lr.ph87 ] + %60 = icmp ugt i32 %.0.lcssa, %37 + %61 = zext i1 %60 to i32 %spec.select = add i32 %.0.lcssa, %.059.neg - %61 = add i32 %spec.select, %60 - call void @lv_textarea_set_cursor_pos(ptr noundef nonnull %0, i32 noundef %61) #7 + %62 = add i32 %spec.select, %61 + call void @lv_textarea_set_cursor_pos(ptr noundef nonnull %0, i32 noundef %62) #7 call void @llvm.lifetime.end.p0(i64 14, ptr nonnull %3) #7 call void @llvm.lifetime.end.p0(i64 18, ptr nonnull %2) #7 ret void diff --git a/bench/lz4/optimized/lz4hc.ll b/bench/lz4/optimized/lz4hc.ll index a5d03afabdd..a22e0650b5e 100644 --- a/bench/lz4/optimized/lz4hc.ll +++ b/bench/lz4/optimized/lz4hc.ll @@ -48,14 +48,14 @@ define dso_local { i64, i32 } @LZ4HC_searchExtDict(ptr noundef %0, i32 noundef % %39 = getelementptr inbounds nuw i8, ptr %4, i64 131072 br label %40 -40: ; preds = %.lr.ph108, %125 - %41 = phi i32 [ %28, %.lr.ph108 ], [ %133, %125 ] - %.0106 = phi i32 [ %6, %.lr.ph108 ], [ %.1, %125 ] - %.050105 = phi i32 [ %7, %.lr.ph108 ], [ %42, %125 ] - %.051104 = phi i32 [ %24, %.lr.ph108 ], [ %131, %125 ] - %.053103 = phi i32 [ %27, %.lr.ph108 ], [ %132, %125 ] - %.054102 = phi i32 [ 0, %.lr.ph108 ], [ %.155, %125 ] - %.057101 = phi i32 [ 0, %.lr.ph108 ], [ %.158, %125 ] +40: ; preds = %.lr.ph108, %124 + %41 = phi i32 [ %28, %.lr.ph108 ], [ %132, %124 ] + %.0106 = phi i32 [ %6, %.lr.ph108 ], [ %.1, %124 ] + %.050105 = phi i32 [ %7, %.lr.ph108 ], [ %42, %124 ] + %.051104 = phi i32 [ %24, %.lr.ph108 ], [ %130, %124 ] + %.053103 = phi i32 [ %27, %.lr.ph108 ], [ %131, %124 ] + %.054102 = phi i32 [ 0, %.lr.ph108 ], [ %.155, %124 ] + %.057101 = phi i32 [ 0, %.lr.ph108 ], [ %.158, %124 ] %42 = add nsw i32 %.050105, -1 %.not = icmp eq i32 %.050105, 0 br i1 %.not, label %.critedge.loopexit, label %43 @@ -65,7 +65,7 @@ define dso_local { i64, i32 } @LZ4HC_searchExtDict(ptr noundef %0, i32 noundef % %45 = getelementptr inbounds nuw i8, ptr %31, i64 %44 %.val70 = load i32, ptr %45, align 1, !tbaa !15 %46 = icmp eq i32 %.val70, %.val72 - br i1 %46, label %47, label %125 + br i1 %46, label %47, label %124 47: ; preds = %43 %48 = sub i64 %19, %44 @@ -192,11 +192,11 @@ LZ4_count.exit: ; preds = %.thread80, %56, %95 %101 = trunc i64 %..i to i32 %invariant.gep95 = getelementptr i8, ptr %45, i64 -4 %102 = icmp slt i32 %101, -3 - %sext128 = shl i64 %..i, 32 - %103 = ashr exact i64 %sext128, 32 br i1 %102, label %.lr.ph99.preheader, label %.preheader .lr.ph99.preheader: ; preds = %100 + %sext = shl i64 %..i, 32 + %103 = ashr exact i64 %sext, 32 %invariant.op = add nsw i64 %103, 3 br label %.lr.ph99 @@ -204,10 +204,11 @@ LZ4_count.exit: ; preds = %.thread80, %56, %95 %104 = trunc nsw i64 %indvars.iv.next to i32 br label %.preheader -.preheader: ; preds = %100, %.preheader.loopexit - %.028.i.lcssa = phi i32 [ %104, %.preheader.loopexit ], [ 0, %100 ] +.preheader: ; preds = %.preheader.loopexit, %100 + %.028.i.lcssa = phi i32 [ 0, %100 ], [ %104, %.preheader.loopexit ] %105 = sext i32 %.028.i.lcssa to i64 %smin = tail call i32 @llvm.smin.i32(i32 %.028.i.lcssa, i32 %101) + %wide.trip.count = sext i32 %smin to i64 br label %113 .lr.ph99: ; preds = %.lr.ph99.preheader, %111 @@ -232,57 +233,57 @@ LZ4_count.exit: ; preds = %.thread80, %56, %95 %112 = icmp sgt i64 %indvars.iv.next, %invariant.op br i1 %112, label %.lr.ph99, label %.preheader.loopexit -113: ; preds = %.preheader, %115 - %indvars.iv125 = phi i64 [ %105, %.preheader ], [ %indvars.iv.next126, %115 ] - %114 = icmp sgt i64 %indvars.iv125, %103 - br i1 %114, label %115, label %LZ4HC_countBack.exit +113: ; preds = %.preheader, %114 + %indvars.iv125 = phi i64 [ %105, %.preheader ], [ %indvars.iv.next126, %114 ] + %exitcond.not = icmp eq i64 %indvars.iv125, %wide.trip.count + br i1 %exitcond.not, label %LZ4HC_countBack.exit, label %114 -115: ; preds = %113 +114: ; preds = %113 %indvars.iv.next126 = add nsw i64 %indvars.iv125, -1 - %116 = getelementptr inbounds i8, ptr %0, i64 %indvars.iv.next126 - %117 = load i8, ptr %116, align 1, !tbaa !26 - %118 = getelementptr inbounds i8, ptr %45, i64 %indvars.iv.next126 - %119 = load i8, ptr %118, align 1, !tbaa !26 - %120 = icmp eq i8 %117, %119 - br i1 %120, label %113, label %LZ4HC_countBack.exit.loopexit.split.loop.exit136, !llvm.loop !27 - -LZ4HC_countBack.exit.loopexit.split.loop.exit136: ; preds = %115 - %121 = trunc nsw i64 %indvars.iv125 to i32 + %115 = getelementptr inbounds i8, ptr %0, i64 %indvars.iv.next126 + %116 = load i8, ptr %115, align 1, !tbaa !26 + %117 = getelementptr inbounds i8, ptr %45, i64 %indvars.iv.next126 + %118 = load i8, ptr %117, align 1, !tbaa !26 + %119 = icmp eq i8 %116, %118 + br i1 %119, label %113, label %LZ4HC_countBack.exit.loopexit.split.loop.exit135, !llvm.loop !27 + +LZ4HC_countBack.exit.loopexit.split.loop.exit135: ; preds = %114 + %120 = trunc nsw i64 %indvars.iv125 to i32 br label %LZ4HC_countBack.exit -LZ4HC_countBack.exit: ; preds = %113, %LZ4HC_countBack.exit.loopexit.split.loop.exit136, %.thread84, %LZ4_count.exit - %122 = phi i32 [ 0, %LZ4_count.exit ], [ %110, %.thread84 ], [ %121, %LZ4HC_countBack.exit.loopexit.split.loop.exit136 ], [ %smin, %113 ] - %123 = sub i32 %99, %122 - %124 = icmp sgt i32 %123, %.0106 - %.259 = select i1 %124, i32 %41, i32 %.057101 - %.256 = select i1 %124, i32 %122, i32 %.054102 - %.2 = tail call i32 @llvm.smax.i32(i32 %123, i32 %.0106) - br label %125 +LZ4HC_countBack.exit: ; preds = %113, %LZ4HC_countBack.exit.loopexit.split.loop.exit135, %.thread84, %LZ4_count.exit + %121 = phi i32 [ 0, %LZ4_count.exit ], [ %110, %.thread84 ], [ %120, %LZ4HC_countBack.exit.loopexit.split.loop.exit135 ], [ %smin, %113 ] + %122 = sub i32 %99, %121 + %123 = icmp sgt i32 %122, %.0106 + %.259 = select i1 %123, i32 %41, i32 %.057101 + %.256 = select i1 %123, i32 %121, i32 %.054102 + %.2 = tail call i32 @llvm.smax.i32(i32 %122, i32 %.0106) + br label %124 -125: ; preds = %LZ4HC_countBack.exit, %43 +124: ; preds = %LZ4HC_countBack.exit, %43 %.158 = phi i32 [ %.259, %LZ4HC_countBack.exit ], [ %.057101, %43 ] %.155 = phi i32 [ %.256, %LZ4HC_countBack.exit ], [ %.054102, %43 ] %.1 = phi i32 [ %.2, %LZ4HC_countBack.exit ], [ %.0106, %43 ] - %126 = and i32 %.051104, 65535 - %127 = zext nneg i32 %126 to i64 - %128 = getelementptr inbounds nuw [65536 x i16], ptr %39, i64 0, i64 %127 - %129 = load i16, ptr %128, align 2, !tbaa !29 - %130 = zext i16 %129 to i32 - %131 = sub i32 %.051104, %130 - %132 = sub i32 %.053103, %130 - %133 = sub i32 %1, %132 - %134 = icmp ult i32 %133, 65536 - br i1 %134, label %40, label %.critedge.loopexit, !llvm.loop !30 - -.critedge.loopexit: ; preds = %125, %40 - %.057.lcssa.ph = phi i32 [ %.057101, %40 ], [ %.158, %125 ] - %.054.lcssa.ph = phi i32 [ %.054102, %40 ], [ %.155, %125 ] - %.0.lcssa.ph = phi i32 [ %.0106, %40 ], [ %.1, %125 ] - %135 = zext nneg i32 %.057.lcssa.ph to i64 + %125 = and i32 %.051104, 65535 + %126 = zext nneg i32 %125 to i64 + %127 = getelementptr inbounds nuw [65536 x i16], ptr %39, i64 0, i64 %126 + %128 = load i16, ptr %127, align 2, !tbaa !29 + %129 = zext i16 %128 to i32 + %130 = sub i32 %.051104, %129 + %131 = sub i32 %.053103, %129 + %132 = sub i32 %1, %131 + %133 = icmp ult i32 %132, 65536 + br i1 %133, label %40, label %.critedge.loopexit, !llvm.loop !30 + +.critedge.loopexit: ; preds = %124, %40 + %.057.lcssa.ph = phi i32 [ %.057101, %40 ], [ %.158, %124 ] + %.054.lcssa.ph = phi i32 [ %.054102, %40 ], [ %.155, %124 ] + %.0.lcssa.ph = phi i32 [ %.0106, %40 ], [ %.1, %124 ] + %134 = zext nneg i32 %.057.lcssa.ph to i64 br label %.critedge .critedge: ; preds = %.critedge.loopexit, %8 - %.057.lcssa = phi i64 [ 0, %8 ], [ %135, %.critedge.loopexit ] + %.057.lcssa = phi i64 [ 0, %8 ], [ %134, %.critedge.loopexit ] %.054.lcssa = phi i32 [ 0, %8 ], [ %.054.lcssa.ph, %.critedge.loopexit ] %.0.lcssa = phi i32 [ %6, %8 ], [ %.0.lcssa.ph, %.critedge.loopexit ] %.sroa.249.0.insert.ext = zext i32 %.0.lcssa to i64 diff --git a/bench/meilisearch-rs/optimized/1bqqlm3jtb9rf3cv.ll b/bench/meilisearch-rs/optimized/1bqqlm3jtb9rf3cv.ll index 1169493b503..d4701ed5860 100644 --- a/bench/meilisearch-rs/optimized/1bqqlm3jtb9rf3cv.ll +++ b/bench/meilisearch-rs/optimized/1bqqlm3jtb9rf3cv.ll @@ -1104,38 +1104,35 @@ define internal fastcc void @_ZN4core5slice4sort8heapsort17h2bd3aa9703a929abE(pt "_ZN4core5slice4sort8heapsort28_$u7b$$u7b$closure$u7d$$u7d$17he841d59296bce2a2E.exit": ; preds = %33, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$4swap17hb062f3343ffa34e1E.exit.i", %.lr.ph %.not = icmp eq i64 %14, 0 - br i1 %.not, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h0471177f342c7879E.exit.preheader", label %.lr.ph + br i1 %.not, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h0471177f342c7879E.exit", label %.lr.ph -"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h0471177f342c7879E.exit.preheader": ; preds = %"_ZN4core5slice4sort8heapsort28_$u7b$$u7b$closure$u7d$$u7d$17he841d59296bce2a2E.exit" - %43 = add i64 %1, -1 - %44 = getelementptr inbounds [0 x { { { i64, ptr, {} }, i64 }, { { i64, ptr, {} }, i64 }, { i64, [2 x i64] }, { i64, [2 x i64] }, { { i32, { i32, i8, i8, i8, i8 } }, { i8, i8, i8 }, [1 x i8] }, { { i32, { i32, i8, i8, i8, i8 } }, { i8, i8, i8 }, [1 x i8] }, { [11 x i8], i8, [4 x i8] }, { [16 x i8] } }], ptr %0, i64 0, i64 %43 +43: ; preds = %"_ZN4core5slice4sort8heapsort28_$u7b$$u7b$closure$u7d$$u7d$17he841d59296bce2a2E.exit31" + ret void + +"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h0471177f342c7879E.exit": ; preds = %"_ZN4core5slice4sort8heapsort28_$u7b$$u7b$closure$u7d$$u7d$17he841d59296bce2a2E.exit", %"_ZN4core5slice4sort8heapsort28_$u7b$$u7b$closure$u7d$$u7d$17he841d59296bce2a2E.exit31" + %.sroa.434.055 = phi i64 [ %44, %"_ZN4core5slice4sort8heapsort28_$u7b$$u7b$closure$u7d$$u7d$17he841d59296bce2a2E.exit31" ], [ %1, %"_ZN4core5slice4sort8heapsort28_$u7b$$u7b$closure$u7d$$u7d$17he841d59296bce2a2E.exit" ] + %44 = add i64 %.sroa.434.055, -1 + %45 = getelementptr inbounds [0 x { { { i64, ptr, {} }, i64 }, { { i64, ptr, {} }, i64 }, { i64, [2 x i64] }, { i64, [2 x i64] }, { { i32, { i32, i8, i8, i8, i8 } }, { i8, i8, i8 }, [1 x i8] }, { { i32, { i32, i8, i8, i8, i8 } }, { i8, i8, i8 }, [1 x i8] }, { [11 x i8], i8, [4 x i8] }, { [16 x i8] } }], ptr %0, i64 0, i64 %44 call void @llvm.lifetime.start.p0(i64 160, ptr nonnull %7) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(160) %7, ptr noundef nonnull align 8 dereferenceable(160) %0, i64 160, i1 false), !noalias !473 - call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(160) %0, ptr noundef nonnull align 8 dereferenceable(160) %44, i64 160, i1 false), !alias.scope !476, !noalias !473 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(160) %44, ptr noundef nonnull align 8 dereferenceable(160) %7, i64 160, i1 false), !noalias !473 + call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(160) %0, ptr noundef nonnull align 8 dereferenceable(160) %45, i64 160, i1 false), !alias.scope !476, !noalias !473 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(160) %45, ptr noundef nonnull align 8 dereferenceable(160) %7, i64 160, i1 false), !noalias !473 call void @llvm.lifetime.end.p0(i64 160, ptr nonnull %7) - %.not4.i2511 = icmp ugt i64 %43, 1 - br i1 %.not4.i2511, label %.lr.ph.i26.preheader, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h0471177f342c7879E.exit._crit_edge" - -"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h0471177f342c7879E.exit._crit_edge": ; preds = %"_ZN4core5slice4sort8heapsort28_$u7b$$u7b$closure$u7d$$u7d$17he841d59296bce2a2E.exit31", %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h0471177f342c7879E.exit.preheader" - ret void - -.lr.ph.i26.preheader: ; preds = %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h0471177f342c7879E.exit.preheader", %"_ZN4core5slice4sort8heapsort28_$u7b$$u7b$closure$u7d$$u7d$17he841d59296bce2a2E.exit31" - %45 = phi i64 [ %72, %"_ZN4core5slice4sort8heapsort28_$u7b$$u7b$closure$u7d$$u7d$17he841d59296bce2a2E.exit31" ], [ %43, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h0471177f342c7879E.exit.preheader" ] call void @llvm.experimental.noalias.scope.decl(metadata !478) - br label %.lr.ph.i26 + %.not4.i25 = icmp ugt i64 %44, 1 + br i1 %.not4.i25, label %.lr.ph.i26, label %"_ZN4core5slice4sort8heapsort28_$u7b$$u7b$closure$u7d$$u7d$17he841d59296bce2a2E.exit31" -.lr.ph.i26: ; preds = %.lr.ph.i26.preheader, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$4swap17hb062f3343ffa34e1E.exit.i29" - %46 = phi i64 [ %71, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$4swap17hb062f3343ffa34e1E.exit.i29" ], [ 1, %.lr.ph.i26.preheader ] - %47 = phi i64 [ %70, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$4swap17hb062f3343ffa34e1E.exit.i29" ], [ 0, %.lr.ph.i26.preheader ] - %.sroa.0.05.i27 = phi i64 [ %.sroa.03.0.i28, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$4swap17hb062f3343ffa34e1E.exit.i29" ], [ 0, %.lr.ph.i26.preheader ] +.lr.ph.i26: ; preds = %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h0471177f342c7879E.exit", %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$4swap17hb062f3343ffa34e1E.exit.i29" + %46 = phi i64 [ %71, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$4swap17hb062f3343ffa34e1E.exit.i29" ], [ 1, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h0471177f342c7879E.exit" ] + %47 = phi i64 [ %70, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$4swap17hb062f3343ffa34e1E.exit.i29" ], [ 0, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h0471177f342c7879E.exit" ] + %.sroa.0.05.i27 = phi i64 [ %.sroa.03.0.i28, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$4swap17hb062f3343ffa34e1E.exit.i29" ], [ 0, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h0471177f342c7879E.exit" ] %48 = add nuw i64 %47, 2 - %49 = icmp ult i64 %48, %45 + %49 = icmp ult i64 %48, %44 br i1 %49, label %52, label %50 50: ; preds = %52, %.lr.ph.i26 %.sroa.03.0.i28 = phi i64 [ %58, %52 ], [ %46, %.lr.ph.i26 ] - %51 = icmp ult i64 %.sroa.0.05.i27, %45 + %51 = icmp ult i64 %.sroa.0.05.i27, %44 br i1 %51, label %59, label %61, !prof !15 52: ; preds = %.lr.ph.i26 @@ -1154,11 +1151,11 @@ define internal fastcc void @_ZN4core5slice4sort8heapsort17h2bd3aa9703a929abE(pt br label %50 59: ; preds = %50 - %60 = icmp ult i64 %.sroa.03.0.i28, %45 + %60 = icmp ult i64 %.sroa.03.0.i28, %44 br i1 %60, label %62, label %69, !prof !15 61: ; preds = %50 - call void @_ZN4core9panicking18panic_bounds_check17hd7e618b1b39cc1c3E(i64 noundef %.sroa.0.05.i27, i64 noundef %45, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.bed9f170711aa8c005b93c2e80cfe6b4.37) #15, !noalias !478 + call void @_ZN4core9panicking18panic_bounds_check17hd7e618b1b39cc1c3E(i64 noundef %.sroa.0.05.i27, i64 noundef %44, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.bed9f170711aa8c005b93c2e80cfe6b4.37) #15, !noalias !478 unreachable 62: ; preds = %59 @@ -1177,7 +1174,7 @@ define internal fastcc void @_ZN4core5slice4sort8heapsort17h2bd3aa9703a929abE(pt br i1 %68, label %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$4swap17hb062f3343ffa34e1E.exit.i29", label %"_ZN4core5slice4sort8heapsort28_$u7b$$u7b$closure$u7d$$u7d$17he841d59296bce2a2E.exit31" 69: ; preds = %59 - call void @_ZN4core9panicking18panic_bounds_check17hd7e618b1b39cc1c3E(i64 noundef %.sroa.03.0.i28, i64 noundef %45, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.bed9f170711aa8c005b93c2e80cfe6b4.38) #15, !noalias !478 + call void @_ZN4core9panicking18panic_bounds_check17hd7e618b1b39cc1c3E(i64 noundef %.sroa.03.0.i28, i64 noundef %44, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.bed9f170711aa8c005b93c2e80cfe6b4.38) #15, !noalias !478 unreachable "_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$4swap17hb062f3343ffa34e1E.exit.i29": ; preds = %62 @@ -1188,19 +1185,12 @@ define internal fastcc void @_ZN4core5slice4sort8heapsort17h2bd3aa9703a929abE(pt call void @llvm.lifetime.end.p0(i64 160, ptr nonnull %2) %70 = shl i64 %.sroa.03.0.i28, 1 %71 = or disjoint i64 %70, 1 - %.not.i30 = icmp ult i64 %71, %45 + %.not.i30 = icmp ult i64 %71, %44 br i1 %.not.i30, label %.lr.ph.i26, label %"_ZN4core5slice4sort8heapsort28_$u7b$$u7b$closure$u7d$$u7d$17he841d59296bce2a2E.exit31" -"_ZN4core5slice4sort8heapsort28_$u7b$$u7b$closure$u7d$$u7d$17he841d59296bce2a2E.exit31": ; preds = %62, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$4swap17hb062f3343ffa34e1E.exit.i29" - %72 = add i64 %45, -1 - %73 = getelementptr inbounds [0 x { { { i64, ptr, {} }, i64 }, { { i64, ptr, {} }, i64 }, { i64, [2 x i64] }, { i64, [2 x i64] }, { { i32, { i32, i8, i8, i8, i8 } }, { i8, i8, i8 }, [1 x i8] }, { { i32, { i32, i8, i8, i8, i8 } }, { i8, i8, i8 }, [1 x i8] }, { [11 x i8], i8, [4 x i8] }, { [16 x i8] } }], ptr %0, i64 0, i64 %72 - call void @llvm.lifetime.start.p0(i64 160, ptr nonnull %7) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(160) %7, ptr noundef nonnull align 8 dereferenceable(160) %0, i64 160, i1 false), !noalias !473 - call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(160) %0, ptr noundef nonnull align 8 dereferenceable(160) %73, i64 160, i1 false), !alias.scope !476, !noalias !473 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(160) %73, ptr noundef nonnull align 8 dereferenceable(160) %7, i64 160, i1 false), !noalias !473 - call void @llvm.lifetime.end.p0(i64 160, ptr nonnull %7) - %.not4.i25 = icmp ugt i64 %72, 1 - br i1 %.not4.i25, label %.lr.ph.i26.preheader, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h0471177f342c7879E.exit._crit_edge" +"_ZN4core5slice4sort8heapsort28_$u7b$$u7b$closure$u7d$$u7d$17he841d59296bce2a2E.exit31": ; preds = %62, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$4swap17hb062f3343ffa34e1E.exit.i29", %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h0471177f342c7879E.exit" + %exitcond.not = icmp eq i64 %44, 1 + br i1 %exitcond.not, label %43, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h0471177f342c7879E.exit" } ; Function Attrs: nonlazybind uwtable @@ -1460,9 +1450,9 @@ define internal fastcc { i64, i1 } @_ZN4core5slice4sort9partition17h7e00584d6344 br i1 %.not25.i, label %._crit_edge.i, label %.lr.ph16.i ._crit_edge.i: ; preds = %.lr.ph16.i, %91 - %.pre-phi33 = phi i64 [ %97, %91 ], [ %134, %.lr.ph16.i ] - %.sroa.058.3.lcssa.i = phi ptr [ %.sroa.058.1.i, %91 ], [ %131, %.lr.ph16.i ] - %.sroa.018.3.lcssa.i = phi ptr [ %.sroa.018.1.i, %91 ], [ %124, %.lr.ph16.i ] + %.pre-phi33 = phi i64 [ %97, %91 ], [ %132, %.lr.ph16.i ] + %.sroa.058.3.lcssa.i = phi ptr [ %.sroa.058.1.i, %91 ], [ %129, %.lr.ph16.i ] + %.sroa.018.3.lcssa.i = phi ptr [ %.sroa.018.1.i, %91 ], [ %122, %.lr.ph16.i ] %102 = getelementptr inbounds { { { i64, ptr, {} }, i64 }, { { i64, ptr, {} }, i64 }, { i64, [2 x i64] }, { i64, [2 x i64] }, { { i32, { i32, i8, i8, i8, i8 } }, { i8, i8, i8 }, [1 x i8] }, { { i32, { i32, i8, i8, i8, i8 } }, { i8, i8, i8 }, [1 x i8] }, { [11 x i8], i8, [4 x i8] }, { [16 x i8] } }, ptr %.sroa.044.0.i, i64 %.pre-phi33 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(160) %102, ptr noundef nonnull align 8 dereferenceable(160) %11, i64 160, i1 false), !noalias !576 %103 = getelementptr inbounds nuw i8, ptr %.sroa.018.3.lcssa.i, i64 1 @@ -1492,78 +1482,78 @@ define internal fastcc { i64, i1 } @_ZN4core5slice4sort9partition17h7e00584d6344 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(160) %113, ptr noundef nonnull align 8 dereferenceable(160) %6, i64 160, i1 false), !noalias !576 call void @llvm.lifetime.end.p0(i64 160, ptr nonnull %6) %114 = getelementptr inbounds nuw i8, ptr %.sroa.01.220.i, i64 160 - %115 = icmp ult ptr %.sroa.058.2.i, %109 - br i1 %115, label %.preheader1.i, label %.loopexit + %exitcond37.not.i = icmp eq ptr %109, %.sroa.058.2.i + br i1 %exitcond37.not.i, label %.loopexit, label %.preheader1.i .preheader.i: ; preds = %105, %.preheader.i - %.sroa.032.322.i = phi ptr [ %116, %.preheader.i ], [ %.sroa.032.1.i, %105 ] - %.sroa.044.221.i = phi ptr [ %120, %.preheader.i ], [ %.sroa.044.1.i, %105 ] - %116 = getelementptr inbounds i8, ptr %.sroa.032.322.i, i64 -1 - %117 = load i8, ptr %116, align 1, !noalias !546, !noundef !5 - %118 = zext i8 %117 to i64 - %119 = getelementptr inbounds nuw { { { i64, ptr, {} }, i64 }, { { i64, ptr, {} }, i64 }, { i64, [2 x i64] }, { i64, [2 x i64] }, { { i32, { i32, i8, i8, i8, i8 } }, { i8, i8, i8 }, [1 x i8] }, { { i32, { i32, i8, i8, i8, i8 } }, { i8, i8, i8 }, [1 x i8] }, { [11 x i8], i8, [4 x i8] }, { [16 x i8] } }, ptr %spec.select.i, i64 %118 - %120 = getelementptr inbounds i8, ptr %.sroa.044.221.i, i64 -160 + %.sroa.032.322.i = phi ptr [ %115, %.preheader.i ], [ %.sroa.032.1.i, %105 ] + %.sroa.044.221.i = phi ptr [ %119, %.preheader.i ], [ %.sroa.044.1.i, %105 ] + %115 = getelementptr inbounds i8, ptr %.sroa.032.322.i, i64 -1 + %116 = load i8, ptr %115, align 1, !noalias !546, !noundef !5 + %117 = zext i8 %116 to i64 + %118 = getelementptr inbounds nuw { { { i64, ptr, {} }, i64 }, { { i64, ptr, {} }, i64 }, { i64, [2 x i64] }, { i64, [2 x i64] }, { { i32, { i32, i8, i8, i8, i8 } }, { i8, i8, i8 }, [1 x i8] }, { { i32, { i32, i8, i8, i8, i8 } }, { i8, i8, i8 }, [1 x i8] }, { [11 x i8], i8, [4 x i8] }, { [16 x i8] } }, ptr %spec.select.i, i64 %117 + %119 = getelementptr inbounds i8, ptr %.sroa.044.221.i, i64 -160 call void @llvm.lifetime.start.p0(i64 160, ptr nonnull %5) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(160) %5, ptr noundef nonnull align 8 dereferenceable(160) %119, i64 160, i1 false), !noalias !576 - call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(160) %119, ptr noundef nonnull align 8 dereferenceable(160) %120, i64 160, i1 false), !alias.scope !543, !noalias !576 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(160) %120, ptr noundef nonnull align 8 dereferenceable(160) %5, i64 160, i1 false), !noalias !576 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(160) %5, ptr noundef nonnull align 8 dereferenceable(160) %118, i64 160, i1 false), !noalias !576 + call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(160) %118, ptr noundef nonnull align 8 dereferenceable(160) %119, i64 160, i1 false), !alias.scope !543, !noalias !576 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(160) %119, ptr noundef nonnull align 8 dereferenceable(160) %5, i64 160, i1 false), !noalias !576 call void @llvm.lifetime.end.p0(i64 160, ptr nonnull %5) - %121 = icmp ult ptr %.sroa.018.2.i, %116 - br i1 %121, label %.preheader.i, label %.loopexit + %exitcond43.not.i = icmp eq ptr %115, %.sroa.018.2.i + br i1 %exitcond43.not.i, label %.loopexit, label %.preheader.i .lr.ph16.i: ; preds = %91, %.lr.ph16.i - %122 = phi i8 [ %132, %.lr.ph16.i ], [ %95, %91 ] - %.sroa.018.315.i = phi ptr [ %124, %.lr.ph16.i ], [ %.sroa.018.1.i, %91 ] - %.sroa.0112.014.i = phi i64 [ %123, %.lr.ph16.i ], [ 1, %91 ] - %.sroa.058.313.i = phi ptr [ %131, %.lr.ph16.i ], [ %.sroa.058.1.i, %91 ] - %123 = add nuw i64 %.sroa.0112.014.i, 1 - %124 = getelementptr inbounds nuw i8, ptr %.sroa.018.315.i, i64 1 - %125 = load i8, ptr %124, align 1, !noalias !546, !noundef !5 - %126 = zext i8 %125 to i64 - %127 = getelementptr inbounds nuw { { { i64, ptr, {} }, i64 }, { { i64, ptr, {} }, i64 }, { i64, [2 x i64] }, { i64, [2 x i64] }, { { i32, { i32, i8, i8, i8, i8 } }, { i8, i8, i8 }, [1 x i8] }, { { i32, { i32, i8, i8, i8, i8 } }, { i8, i8, i8 }, [1 x i8] }, { [11 x i8], i8, [4 x i8] }, { [16 x i8] } }, ptr %.sroa.01.0.i, i64 %126 - %128 = zext i8 %122 to i64 - %129 = xor i64 %128, -1 - %130 = getelementptr inbounds { { { i64, ptr, {} }, i64 }, { { i64, ptr, {} }, i64 }, { i64, [2 x i64] }, { i64, [2 x i64] }, { { i32, { i32, i8, i8, i8, i8 } }, { i8, i8, i8 }, [1 x i8] }, { { i32, { i32, i8, i8, i8, i8 } }, { i8, i8, i8 }, [1 x i8] }, { [11 x i8], i8, [4 x i8] }, { [16 x i8] } }, ptr %.sroa.044.0.i, i64 %129 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(160) %130, ptr noundef nonnull align 8 dereferenceable(160) %127, i64 160, i1 false), !alias.scope !543, !noalias !576 - %131 = getelementptr inbounds nuw i8, ptr %.sroa.058.313.i, i64 1 - %132 = load i8, ptr %131, align 1, !noalias !546, !noundef !5 - %133 = zext i8 %132 to i64 - %134 = xor i64 %133, -1 - %135 = getelementptr inbounds { { { i64, ptr, {} }, i64 }, { { i64, ptr, {} }, i64 }, { i64, [2 x i64] }, { i64, [2 x i64] }, { { i32, { i32, i8, i8, i8, i8 } }, { i8, i8, i8 }, [1 x i8] }, { { i32, { i32, i8, i8, i8, i8 } }, { i8, i8, i8 }, [1 x i8] }, { [11 x i8], i8, [4 x i8] }, { [16 x i8] } }, ptr %.sroa.044.0.i, i64 %134 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(160) %127, ptr noundef nonnull align 8 dereferenceable(160) %135, i64 160, i1 false), !alias.scope !543, !noalias !576 - %exitcond32.not.i = icmp eq i64 %123, %.sroa.0.0.sroa.speculated.i.i + %120 = phi i8 [ %130, %.lr.ph16.i ], [ %95, %91 ] + %.sroa.018.315.i = phi ptr [ %122, %.lr.ph16.i ], [ %.sroa.018.1.i, %91 ] + %.sroa.0112.014.i = phi i64 [ %121, %.lr.ph16.i ], [ 1, %91 ] + %.sroa.058.313.i = phi ptr [ %129, %.lr.ph16.i ], [ %.sroa.058.1.i, %91 ] + %121 = add nuw i64 %.sroa.0112.014.i, 1 + %122 = getelementptr inbounds nuw i8, ptr %.sroa.018.315.i, i64 1 + %123 = load i8, ptr %122, align 1, !noalias !546, !noundef !5 + %124 = zext i8 %123 to i64 + %125 = getelementptr inbounds nuw { { { i64, ptr, {} }, i64 }, { { i64, ptr, {} }, i64 }, { i64, [2 x i64] }, { i64, [2 x i64] }, { { i32, { i32, i8, i8, i8, i8 } }, { i8, i8, i8 }, [1 x i8] }, { { i32, { i32, i8, i8, i8, i8 } }, { i8, i8, i8 }, [1 x i8] }, { [11 x i8], i8, [4 x i8] }, { [16 x i8] } }, ptr %.sroa.01.0.i, i64 %124 + %126 = zext i8 %120 to i64 + %127 = xor i64 %126, -1 + %128 = getelementptr inbounds { { { i64, ptr, {} }, i64 }, { { i64, ptr, {} }, i64 }, { i64, [2 x i64] }, { i64, [2 x i64] }, { { i32, { i32, i8, i8, i8, i8 } }, { i8, i8, i8 }, [1 x i8] }, { { i32, { i32, i8, i8, i8, i8 } }, { i8, i8, i8 }, [1 x i8] }, { [11 x i8], i8, [4 x i8] }, { [16 x i8] } }, ptr %.sroa.044.0.i, i64 %127 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(160) %128, ptr noundef nonnull align 8 dereferenceable(160) %125, i64 160, i1 false), !alias.scope !543, !noalias !576 + %129 = getelementptr inbounds nuw i8, ptr %.sroa.058.313.i, i64 1 + %130 = load i8, ptr %129, align 1, !noalias !546, !noundef !5 + %131 = zext i8 %130 to i64 + %132 = xor i64 %131, -1 + %133 = getelementptr inbounds { { { i64, ptr, {} }, i64 }, { { i64, ptr, {} }, i64 }, { i64, [2 x i64] }, { i64, [2 x i64] }, { { i32, { i32, i8, i8, i8, i8 } }, { i8, i8, i8 }, [1 x i8] }, { { i32, { i32, i8, i8, i8, i8 } }, { i8, i8, i8 }, [1 x i8] }, { [11 x i8], i8, [4 x i8] }, { [16 x i8] } }, ptr %.sroa.044.0.i, i64 %132 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(160) %125, ptr noundef nonnull align 8 dereferenceable(160) %133, i64 160, i1 false), !alias.scope !543, !noalias !576 + %exitcond32.not.i = icmp eq i64 %121, %.sroa.0.0.sroa.speculated.i.i br i1 %exitcond32.not.i, label %._crit_edge.i, label %.lr.ph16.i .loopexit: ; preds = %.preheader1.i, %.preheader.i, %107 - %spec.select.lcssa.sink.i = phi ptr [ %spec.select.i, %107 ], [ %120, %.preheader.i ], [ %114, %.preheader1.i ] - %136 = ptrtoint ptr %spec.select.lcssa.sink.i to i64 - %137 = ptrtoint ptr %47 to i64 - %138 = sub i64 %136, %137 - %.sroa.0.0.i = udiv i64 %138, 160 + %spec.select.lcssa.sink.i = phi ptr [ %spec.select.i, %107 ], [ %119, %.preheader.i ], [ %114, %.preheader1.i ] + %134 = ptrtoint ptr %spec.select.lcssa.sink.i to i64 + %135 = ptrtoint ptr %47 to i64 + %136 = sub i64 %134, %135 + %.sroa.0.0.i = udiv i64 %136, 160 call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %12), !noalias !546 call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %13), !noalias !546 - %139 = add i64 %.sroa.0.0.i, %.sroa.01.0.lcssa.ph + %137 = add i64 %.sroa.0.0.i, %.sroa.01.0.lcssa.ph call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(160) %0, ptr noundef nonnull align 8 dereferenceable(160) %19, i64 160, i1 false), !noalias !577 call void @llvm.lifetime.end.p0(i64 160, ptr nonnull %19) call void @llvm.experimental.noalias.scope.decl(metadata !582) - %140 = icmp ult i64 %139, %1 - br i1 %140, label %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$4swap17hb062f3343ffa34e1E.exit28", label %141, !prof !15 + %138 = icmp ult i64 %137, %1 + br i1 %138, label %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$4swap17hb062f3343ffa34e1E.exit28", label %139, !prof !15 -141: ; preds = %.loopexit - call void @_ZN4core9panicking18panic_bounds_check17hd7e618b1b39cc1c3E(i64 noundef %139, i64 noundef range(i64 1, 0) %1, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.bed9f170711aa8c005b93c2e80cfe6b4.44) #15, !noalias !582 +139: ; preds = %.loopexit + call void @_ZN4core9panicking18panic_bounds_check17hd7e618b1b39cc1c3E(i64 noundef %137, i64 noundef range(i64 1, 0) %1, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.bed9f170711aa8c005b93c2e80cfe6b4.44) #15, !noalias !582 unreachable "_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$4swap17hb062f3343ffa34e1E.exit28": ; preds = %.loopexit - %142 = icmp uge i64 %.sroa.01.0.lcssa.ph, %.sroa.08.0 - %143 = getelementptr inbounds [0 x { { { i64, ptr, {} }, i64 }, { { i64, ptr, {} }, i64 }, { i64, [2 x i64] }, { i64, [2 x i64] }, { { i32, { i32, i8, i8, i8, i8 } }, { i8, i8, i8 }, [1 x i8] }, { { i32, { i32, i8, i8, i8, i8 } }, { i8, i8, i8 }, [1 x i8] }, { [11 x i8], i8, [4 x i8] }, { [16 x i8] } }], ptr %0, i64 0, i64 %139 + %140 = icmp uge i64 %.sroa.01.0.lcssa.ph, %.sroa.08.0 + %141 = getelementptr inbounds [0 x { { { i64, ptr, {} }, i64 }, { { i64, ptr, {} }, i64 }, { i64, [2 x i64] }, { i64, [2 x i64] }, { { i32, { i32, i8, i8, i8, i8 } }, { i8, i8, i8 }, [1 x i8] }, { { i32, { i32, i8, i8, i8, i8 } }, { i8, i8, i8 }, [1 x i8] }, { [11 x i8], i8, [4 x i8] }, { [16 x i8] } }], ptr %0, i64 0, i64 %137 call void @llvm.lifetime.start.p0(i64 160, ptr nonnull %4) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(160) %4, ptr noundef nonnull align 8 dereferenceable(160) %0, i64 160, i1 false), !noalias !585 - call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(160) %0, ptr noundef nonnull align 8 dereferenceable(160) %143, i64 160, i1 false), !alias.scope !582, !noalias !585 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(160) %143, ptr noundef nonnull align 8 dereferenceable(160) %4, i64 160, i1 false), !noalias !585 + call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(160) %0, ptr noundef nonnull align 8 dereferenceable(160) %141, i64 160, i1 false), !alias.scope !582, !noalias !585 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(160) %141, ptr noundef nonnull align 8 dereferenceable(160) %4, i64 160, i1 false), !noalias !585 call void @llvm.lifetime.end.p0(i64 160, ptr nonnull %4) - %144 = insertvalue { i64, i1 } poison, i64 %139, 0 - %145 = insertvalue { i64, i1 } %144, i1 %142, 1 - ret { i64, i1 } %145 + %142 = insertvalue { i64, i1 } poison, i64 %137, 0 + %143 = insertvalue { i64, i1 } %142, i1 %140, 1 + ret { i64, i1 } %143 .loopexit5: ; preds = %.lr.ph11.i %lpad.loopexit = landingpad { ptr, i32 } diff --git a/bench/meshlab/optimized/filter_color_projection.ll b/bench/meshlab/optimized/filter_color_projection.ll index 8ef9c736fea..f7c1415e62d 100644 --- a/bench/meshlab/optimized/filter_color_projection.ll +++ b/bench/meshlab/optimized/filter_color_projection.ll @@ -6251,13 +6251,13 @@ define void @_ZN3vcg8PullPushER6QImagej(ptr noundef nonnull align 8 dereferencea invoke void @_ZN3vcg11PullPushMipER6QImageS1_j(ptr noundef nonnull align 8 dereferenceable(32) %31, ptr noundef nonnull align 8 dereferenceable(32) %29, i32 noundef %1) to label %32 unwind label %.loopexit.split-lp -.loopexit.loopexit: ; preds = %45 - %lpad.loopexit46 = landingpad { ptr, i32 } +.loopexit.loopexit: ; preds = %.lr.ph57 + %lpad.loopexit48 = landingpad { ptr, i32 } cleanup br label %.loopexit -.loopexit.loopexit.split-lp: ; preds = %48 - %lpad.loopexit.split-lp47 = landingpad { ptr, i32 } +.loopexit.loopexit.split-lp: ; preds = %.lr.ph._crit_edge + %lpad.loopexit.split-lp49 = landingpad { ptr, i32 } cleanup br label %.loopexit @@ -6267,7 +6267,7 @@ define void @_ZN3vcg8PullPushER6QImagej(ptr noundef nonnull align 8 dereferencea br label %.loopexit .loopexit: ; preds = %.loopexit.loopexit, %.loopexit.loopexit.split-lp, %.loopexit.split-lp - %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit.split-lp, %.loopexit.split-lp ], [ %lpad.loopexit46, %.loopexit.loopexit ], [ %lpad.loopexit.split-lp47, %.loopexit.loopexit.split-lp ] + %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit.split-lp, %.loopexit.split-lp ], [ %lpad.loopexit48, %.loopexit.loopexit ], [ %lpad.loopexit.split-lp49, %.loopexit.loopexit.split-lp ] call void @_ZNSt6vectorI6QImageSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %2) #33 resume { ptr, i32 } %lpad.phi @@ -6280,9 +6280,6 @@ define void @_ZN3vcg8PullPushER6QImagej(ptr noundef nonnull align 8 dereferencea %36 = icmp slt i32 %34, 5 br i1 %36, label %.lr.ph.preheader, label %37 -.lr.ph.preheader: ; preds = %41, %35 - br label %.lr.ph - 37: ; preds = %35 %38 = load ptr, ptr %2, align 8 %39 = getelementptr inbounds nuw %class.QImage, ptr %38, i64 %indvars.iv @@ -6297,54 +6294,54 @@ define void @_ZN3vcg8PullPushER6QImagej(ptr noundef nonnull align 8 dereferencea %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 br label %12, !llvm.loop !66 -.lr.ph: ; preds = %.lr.ph.preheader, %49 - %indvars.iv42 = phi i64 [ %indvars.iv.next43, %49 ], [ %indvars.iv, %.lr.ph.preheader ] - %.not35 = icmp eq i64 %indvars.iv42, 0 +.lr.ph.preheader: ; preds = %41, %35 + %.not3555 = icmp eq i64 %indvars.iv, 0 %44 = load ptr, ptr %2, align 8 - br i1 %.not35, label %48, label %45 + br i1 %.not3555, label %.lr.ph._crit_edge, label %.lr.ph57 -45: ; preds = %.lr.ph - %46 = getelementptr %class.QImage, ptr %44, i64 %indvars.iv42 +.lr.ph57: ; preds = %.lr.ph.preheader, %.lr.ph + %45 = phi ptr [ %48, %.lr.ph ], [ %44, %.lr.ph.preheader ] + %indvars.iv4256 = phi i64 [ %indvars.iv.next43, %.lr.ph ], [ %indvars.iv, %.lr.ph.preheader ] + %46 = getelementptr %class.QImage, ptr %45, i64 %indvars.iv4256 %47 = getelementptr i8, ptr %46, i64 -32 invoke void @_ZN3vcg12PullPushFillER6QImageS1_j(ptr noundef nonnull align 8 dereferenceable(32) %47, ptr noundef nonnull align 8 dereferenceable(32) %46, i32 noundef %1) - to label %49 unwind label %.loopexit.loopexit + to label %.lr.ph unwind label %.loopexit.loopexit -48: ; preds = %.lr.ph - invoke void @_ZN3vcg12PullPushFillER6QImageS1_j(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(32) %44, i32 noundef %1) +.lr.ph._crit_edge: ; preds = %.lr.ph, %.lr.ph.preheader + %.lcssa = phi ptr [ %44, %.lr.ph.preheader ], [ %48, %.lr.ph ] + invoke void @_ZN3vcg12PullPushFillER6QImageS1_j(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(32) %.lcssa, i32 noundef %1) to label %._crit_edge unwind label %.loopexit.loopexit.split-lp -49: ; preds = %45 - %indvars.iv.next43 = add nsw i64 %indvars.iv42, -1 - %50 = icmp sgt i64 %indvars.iv42, 0 - br i1 %50, label %.lr.ph, label %._crit_edge, !llvm.loop !67 +.lr.ph: ; preds = %.lr.ph57 + %indvars.iv.next43 = add nsw i64 %indvars.iv4256, -1 + %.not35 = icmp eq i64 %indvars.iv.next43, 0 + %48 = load ptr, ptr %2, align 8 + br i1 %.not35, label %.lr.ph._crit_edge, label %.lr.ph57, !llvm.loop !67 -._crit_edge: ; preds = %49, %48 - %.not4.i.i.i.i = icmp eq ptr %44, %9 - br i1 %.not4.i.i.i.i, label %_ZSt8_DestroyIP6QImageS0_EvT_S2_RSaIT0_E.exit.i, label %.lr.ph.i.i.i.i +._crit_edge: ; preds = %.lr.ph._crit_edge + %.not4.i.i.i.i = icmp eq ptr %.lcssa, %9 + br i1 %.not4.i.i.i.i, label %_ZSt8_DestroyIP6QImageS0_EvT_S2_RSaIT0_E.exit.i.thread, label %.lr.ph.i.i.i.i .lr.ph.i.i.i.i: ; preds = %._crit_edge, %.lr.ph.i.i.i.i - %.05.i.i.i.i = phi ptr [ %53, %.lr.ph.i.i.i.i ], [ %44, %._crit_edge ] - %51 = load ptr, ptr %.05.i.i.i.i, align 8 - %52 = load ptr, ptr %51, align 8 - call void %52(ptr noundef nonnull align 8 dereferenceable(32) %.05.i.i.i.i) #33 - %53 = getelementptr inbounds nuw i8, ptr %.05.i.i.i.i, i64 32 + %.05.i.i.i.i = phi ptr [ %51, %.lr.ph.i.i.i.i ], [ %.lcssa, %._crit_edge ] + %49 = load ptr, ptr %.05.i.i.i.i, align 8 + %50 = load ptr, ptr %49, align 8 + call void %50(ptr noundef nonnull align 8 dereferenceable(32) %.05.i.i.i.i) #33 + %51 = getelementptr inbounds nuw i8, ptr %.05.i.i.i.i, i64 32 %.not.i.i.i.i = icmp eq ptr %.05.i.i.i.i, %.08.i.i.i.i.i - br i1 %.not.i.i.i.i, label %_ZSt8_DestroyIP6QImageS0_EvT_S2_RSaIT0_E.exitthread-pre-split.i, label %.lr.ph.i.i.i.i, !llvm.loop !68 + br i1 %.not.i.i.i.i, label %_ZSt8_DestroyIP6QImageS0_EvT_S2_RSaIT0_E.exit.i, label %.lr.ph.i.i.i.i, !llvm.loop !68 -_ZSt8_DestroyIP6QImageS0_EvT_S2_RSaIT0_E.exitthread-pre-split.i: ; preds = %.lr.ph.i.i.i.i +_ZSt8_DestroyIP6QImageS0_EvT_S2_RSaIT0_E.exit.i: ; preds = %.lr.ph.i.i.i.i %.pr.i = load ptr, ptr %2, align 8 - br label %_ZSt8_DestroyIP6QImageS0_EvT_S2_RSaIT0_E.exit.i + %.not.i.i.i = icmp eq ptr %.pr.i, null + br i1 %.not.i.i.i, label %_ZNSt6vectorI6QImageSaIS0_EED2Ev.exit, label %_ZSt8_DestroyIP6QImageS0_EvT_S2_RSaIT0_E.exit.i.thread -_ZSt8_DestroyIP6QImageS0_EvT_S2_RSaIT0_E.exit.i: ; preds = %_ZSt8_DestroyIP6QImageS0_EvT_S2_RSaIT0_E.exitthread-pre-split.i, %._crit_edge - %54 = phi ptr [ %.pr.i, %_ZSt8_DestroyIP6QImageS0_EvT_S2_RSaIT0_E.exitthread-pre-split.i ], [ %44, %._crit_edge ] - %.not.i.i.i = icmp eq ptr %54, null - br i1 %.not.i.i.i, label %_ZNSt6vectorI6QImageSaIS0_EED2Ev.exit, label %55 - -55: ; preds = %_ZSt8_DestroyIP6QImageS0_EvT_S2_RSaIT0_E.exit.i - call void @_ZdlPv(ptr noundef nonnull %54) #32 +_ZSt8_DestroyIP6QImageS0_EvT_S2_RSaIT0_E.exit.i.thread: ; preds = %._crit_edge, %_ZSt8_DestroyIP6QImageS0_EvT_S2_RSaIT0_E.exit.i + %52 = phi ptr [ %.pr.i, %_ZSt8_DestroyIP6QImageS0_EvT_S2_RSaIT0_E.exit.i ], [ %.lcssa, %._crit_edge ] + call void @_ZdlPv(ptr noundef nonnull %52) #32 br label %_ZNSt6vectorI6QImageSaIS0_EED2Ev.exit -_ZNSt6vectorI6QImageSaIS0_EED2Ev.exit: ; preds = %_ZSt8_DestroyIP6QImageS0_EvT_S2_RSaIT0_E.exit.i, %55 +_ZNSt6vectorI6QImageSaIS0_EED2Ev.exit: ; preds = %_ZSt8_DestroyIP6QImageS0_EvT_S2_RSaIT0_E.exit.i, %_ZSt8_DestroyIP6QImageS0_EvT_S2_RSaIT0_E.exit.i.thread ret void } diff --git a/bench/minetest/optimized/mapgen.ll b/bench/minetest/optimized/mapgen.ll index 461afc1f7aa..56662848be6 100644 --- a/bench/minetest/optimized/mapgen.ll +++ b/bench/minetest/optimized/mapgen.ll @@ -3878,6 +3878,7 @@ for.body.preheader: ; preds = %for.body.lr.ph.spli %8 = load i16, ptr %Y9.i, align 2, !tbaa !88 %conv10.i = sext i16 %8 to i32 %sub11.i = sub nsw i32 %conv7.i, %conv10.i + %smin52 = tail call i32 @llvm.smin.i32(i32 %conv47, i32 %conv) br i1 %propagate_shadow, label %for.body.preheader.split.us, label %for.body.preheader.split for.body.preheader.split.us: ; preds = %for.body.preheader @@ -3935,8 +3936,8 @@ if.end57.us22.us.us: ; preds = %for.body50.us12.us. %param158.us23.us.us = getelementptr inbounds nuw i8, ptr %arrayidx54.us17.us.us, i64 2 store i8 15, ptr %param158.us23.us.us, align 2, !tbaa !170 %dec.us24.us.us = add nsw i32 %y.0102.us14.us.us, -1 - %cmp48.not.not.us25.us.us = icmp sgt i32 %y.0102.us14.us.us, %conv47 - br i1 %cmp48.not.not.us25.us.us, label %for.body50.us12.us.us, label %cleanup60.us26.us.us, !llvm.loop !182 + %exitcond53.not = icmp eq i32 %y.0102.us14.us.us, %smin52 + br i1 %exitcond53.not, label %cleanup60.us26.us.us, label %for.body50.us12.us.us, !llvm.loop !182 cleanup60.us26.us.us: ; preds = %for.body50.us12.us.us, %if.end57.us22.us.us, %if.else.us10.us.us %inc.us27.us.us = add nsw i32 %x.0105.us2.us.us, 1 @@ -3997,8 +3998,8 @@ if.end57.us22: ; preds = %for.body50.us12 %param158.us23 = getelementptr inbounds nuw i8, ptr %arrayidx54.us17, i64 2 store i8 15, ptr %param158.us23, align 2, !tbaa !170 %dec.us24 = add nsw i32 %y.0102.us14, -1 - %cmp48.not.not.us25 = icmp sgt i32 %y.0102.us14, %conv47 - br i1 %cmp48.not.not.us25, label %for.body50.us12, label %cleanup60.us26, !llvm.loop !182 + %exitcond51.not = icmp eq i32 %y.0102.us14, %smin52 + br i1 %exitcond51.not, label %cleanup60.us26, label %for.body50.us12, !llvm.loop !182 cleanup60.us26: ; preds = %for.body50.us12, %if.end57.us22, %for.body16.us1, %if.else.us10 %inc.us27 = add nsw i32 %x.0105.us2, 1 @@ -4051,8 +4052,8 @@ if.end57.us.us.us: ; preds = %for.body50.us.us.us %param158.us.us.us = getelementptr inbounds nuw i8, ptr %arrayidx54.us.us.us, i64 2 store i8 15, ptr %param158.us.us.us, align 2, !tbaa !170 %dec.us.us.us = add nsw i32 %y.0102.us.us.us, -1 - %cmp48.not.not.us.us.us = icmp sgt i32 %y.0102.us.us.us, %conv47 - br i1 %cmp48.not.not.us.us.us, label %for.body50.us.us.us, label %cleanup60.loopexit.us.us.us, !llvm.loop !182 + %exitcond49.not = icmp eq i32 %y.0102.us.us.us, %smin52 + br i1 %exitcond49.not, label %cleanup60.loopexit.us.us.us, label %for.body50.us.us.us, !llvm.loop !182 cleanup60.loopexit.us.us.us: ; preds = %if.end57.us.us.us, %for.body50.us.us.us %inc.us.us.us = add nsw i32 %x.0105.us.us.us, 1 @@ -4109,8 +4110,8 @@ if.end57.us: ; preds = %for.body50.us %param158.us = getelementptr inbounds nuw i8, ptr %arrayidx54.us, i64 2 store i8 15, ptr %param158.us, align 2, !tbaa !170 %dec.us = add nsw i32 %y.0102.us, -1 - %cmp48.not.not.us = icmp sgt i32 %y.0102.us, %conv47 - br i1 %cmp48.not.not.us, label %for.body50.us, label %cleanup60.us, !llvm.loop !182 + %exitcond.not = icmp eq i32 %y.0102.us, %smin52 + br i1 %exitcond.not, label %cleanup60.us, label %for.body50.us, !llvm.loop !182 cleanup60.us: ; preds = %for.body50.us, %if.end57.us, %for.body16.us %inc.us = add nsw i32 %x.0105.us, 1 diff --git a/bench/mitsuba3/optimized/rgb2spec_opt.ll b/bench/mitsuba3/optimized/rgb2spec_opt.ll index 64a3fbc76c8..c54b9d762a4 100644 --- a/bench/mitsuba3/optimized/rgb2spec_opt.ll +++ b/bench/mitsuba3/optimized/rgb2spec_opt.ll @@ -293,7 +293,7 @@ define hidden void @_Z8LUPSolvePPdPiS_iS_(ptr noundef readonly captures(none) %0 .preheader.._crit_edge49_crit_edge: ; preds = %.preheader %.phi.trans.insert = getelementptr inbounds nuw double, ptr %4, i64 %indvars.iv.next61 - %.pre66 = load double, ptr %.phi.trans.insert, align 8 + %.pre67 = load double, ptr %.phi.trans.insert, align 8 br label %._crit_edge49 .lr.ph48: ; preds = %.preheader @@ -319,7 +319,7 @@ define hidden void @_Z8LUPSolvePPdPiS_iS_(ptr noundef readonly captures(none) %0 br i1 %38, label %28, label %._crit_edge49, !llvm.loop !14 ._crit_edge49: ; preds = %28, %.preheader.._crit_edge49_crit_edge - %39 = phi double [ %.pre66, %.preheader.._crit_edge49_crit_edge ], [ %36, %28 ] + %39 = phi double [ %.pre67, %.preheader.._crit_edge49_crit_edge ], [ %36, %28 ] %40 = getelementptr inbounds nuw double, ptr %4, i64 %indvars.iv.next61 %41 = getelementptr inbounds nuw ptr, ptr %0, i64 %indvars.iv.next61 %42 = load ptr, ptr %41, align 8 @@ -327,8 +327,9 @@ define hidden void @_Z8LUPSolvePPdPiS_iS_(ptr noundef readonly captures(none) %0 %44 = load double, ptr %43, align 8 %45 = fdiv contract double %39, %44 store double %45, ptr %40, align 8 - %46 = icmp samesign ugt i64 %indvars.iv60, 1 - br i1 %46, label %.preheader, label %._crit_edge53, !llvm.loop !15 + %46 = and i64 %indvars.iv.next61, 4294967295 + %exitcond66.not = icmp eq i64 %46, 0 + br i1 %exitcond66.not, label %._crit_edge53, label %.preheader, !llvm.loop !15 ._crit_edge53: ; preds = %._crit_edge49, %5 ret void @@ -952,7 +953,7 @@ define hidden noundef double @_Z12gauss_newtonPKdPdi(ptr noundef readonly captur br label %18 18: ; preds = %.loopexit, %.lr.ph - %.03654 = phi i32 [ 0, %.lr.ph ], [ %183, %.loopexit ] + %.03654 = phi i32 [ 0, %.lr.ph ], [ %182, %.loopexit ] store ptr %5, ptr %8, align 16 store ptr %6, ptr %13, align 8 store ptr %7, ptr %14, align 16 @@ -1216,7 +1217,7 @@ _Z13eval_residualPKdS0_Pd.exit: ; preds = %45 .preheader.._crit_edge49_crit_edge.i: ; preds = %.preheader.i45 %.phi.trans.insert.i = getelementptr inbounds nuw double, ptr %11, i64 %indvars.iv.next61.i - %.pre66.i = load double, ptr %.phi.trans.insert.i, align 8 + %.pre67.i = load double, ptr %.phi.trans.insert.i, align 8 %.phi.trans.insert = getelementptr inbounds nuw ptr, ptr %8, i64 %indvars.iv.next61.i %.pre = load ptr, ptr %.phi.trans.insert, align 8 br label %._crit_edge49.i @@ -1244,68 +1245,68 @@ _Z13eval_residualPKdS0_Pd.exit: ; preds = %45 ._crit_edge49.i: ; preds = %144, %.preheader.._crit_edge49_crit_edge.i %152 = phi ptr [ %.pre, %.preheader.._crit_edge49_crit_edge.i ], [ %143, %144 ] - %153 = phi double [ %.pre66.i, %.preheader.._crit_edge49_crit_edge.i ], [ %151, %144 ] + %153 = phi double [ %.pre67.i, %.preheader.._crit_edge49_crit_edge.i ], [ %151, %144 ] %154 = getelementptr inbounds nuw double, ptr %11, i64 %indvars.iv.next61.i %155 = getelementptr inbounds nuw double, ptr %152, i64 %indvars.iv.next61.i %156 = load double, ptr %155, align 8 %157 = fdiv contract double %153, %156 store double %157, ptr %154, align 8 - %158 = icmp samesign ugt i64 %indvars.iv60.i, 1 - br i1 %158, label %.preheader.i45, label %_Z8LUPSolvePPdPiS_iS_.exit, !llvm.loop !15 + %exitcond59 = icmp eq i64 %indvars.iv.next61.i, 0 + br i1 %exitcond59, label %_Z8LUPSolvePPdPiS_iS_.exit, label %.preheader.i45, !llvm.loop !15 _Z8LUPSolvePPdPiS_iS_.exit: ; preds = %._crit_edge49.i, %_Z8LUPSolvePPdPiS_iS_.exit %indvars.iv = phi i64 [ %indvars.iv.next, %_Z8LUPSolvePPdPiS_iS_.exit ], [ 0, %._crit_edge49.i ] - %.252 = phi double [ %167, %_Z8LUPSolvePPdPiS_iS_.exit ], [ 0.000000e+00, %._crit_edge49.i ] - %159 = getelementptr inbounds nuw [3 x double], ptr %11, i64 0, i64 %indvars.iv - %160 = load double, ptr %159, align 8 - %161 = getelementptr inbounds nuw double, ptr %1, i64 %indvars.iv - %162 = load double, ptr %161, align 8 - %163 = fsub contract double %162, %160 - store double %163, ptr %161, align 8 - %164 = getelementptr inbounds nuw [3 x double], ptr %9, i64 0, i64 %indvars.iv - %165 = load double, ptr %164, align 8 - %166 = fmul contract double %165, %165 - %167 = fadd contract double %.252, %166 + %.252 = phi double [ %166, %_Z8LUPSolvePPdPiS_iS_.exit ], [ 0.000000e+00, %._crit_edge49.i ] + %158 = getelementptr inbounds nuw [3 x double], ptr %11, i64 0, i64 %indvars.iv + %159 = load double, ptr %158, align 8 + %160 = getelementptr inbounds nuw double, ptr %1, i64 %indvars.iv + %161 = load double, ptr %160, align 8 + %162 = fsub contract double %161, %159 + store double %162, ptr %160, align 8 + %163 = getelementptr inbounds nuw [3 x double], ptr %9, i64 0, i64 %indvars.iv + %164 = load double, ptr %163, align 8 + %165 = fmul contract double %164, %164 + %166 = fadd contract double %.252, %165 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %exitcond60.not = icmp eq i64 %indvars.iv.next, 3 - br i1 %exitcond60.not, label %168, label %_Z8LUPSolvePPdPiS_iS_.exit, !llvm.loop !27 - -168: ; preds = %_Z8LUPSolvePPdPiS_iS_.exit - %169 = load double, ptr %1, align 8 - %170 = load double, ptr %16, align 8 - %171 = fcmp contract olt double %169, %170 - %172 = select i1 %171, double %170, double %169 - %173 = load double, ptr %17, align 8 - %174 = fcmp contract olt double %172, %173 - %175 = select i1 %174, double %173, double %172 - %176 = fcmp contract ogt double %175, 2.000000e+02 - br i1 %176, label %.preheader, label %.loopexit - -.preheader: ; preds = %168 - %177 = fdiv contract double 2.000000e+02, %175 - br label %178 - -178: ; preds = %.preheader, %178 - %indvars.iv61 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next62, %178 ] - %179 = getelementptr inbounds nuw double, ptr %1, i64 %indvars.iv61 - %180 = load double, ptr %179, align 8 - %181 = fmul contract double %177, %180 - store double %181, ptr %179, align 8 - %indvars.iv.next62 = add nuw nsw i64 %indvars.iv61, 1 - %exitcond64.not = icmp eq i64 %indvars.iv.next62, 3 - br i1 %exitcond64.not, label %.loopexit, label %178, !llvm.loop !28 - -.loopexit: ; preds = %178, %168 - %182 = fcmp contract olt double %167, 0x3EB0C6F7A0B5ED8D - %183 = add nuw nsw i32 %.03654, 1 - %exitcond65.not = icmp eq i32 %183, %2 - %or.cond = select i1 %182, i1 true, i1 %exitcond65.not + %exitcond61.not = icmp eq i64 %indvars.iv.next, 3 + br i1 %exitcond61.not, label %167, label %_Z8LUPSolvePPdPiS_iS_.exit, !llvm.loop !27 + +167: ; preds = %_Z8LUPSolvePPdPiS_iS_.exit + %168 = load double, ptr %1, align 8 + %169 = load double, ptr %16, align 8 + %170 = fcmp contract olt double %168, %169 + %171 = select i1 %170, double %169, double %168 + %172 = load double, ptr %17, align 8 + %173 = fcmp contract olt double %171, %172 + %174 = select i1 %173, double %172, double %171 + %175 = fcmp contract ogt double %174, 2.000000e+02 + br i1 %175, label %.preheader, label %.loopexit + +.preheader: ; preds = %167 + %176 = fdiv contract double 2.000000e+02, %174 + br label %177 + +177: ; preds = %.preheader, %177 + %indvars.iv62 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next63, %177 ] + %178 = getelementptr inbounds nuw double, ptr %1, i64 %indvars.iv62 + %179 = load double, ptr %178, align 8 + %180 = fmul contract double %176, %179 + store double %180, ptr %178, align 8 + %indvars.iv.next63 = add nuw nsw i64 %indvars.iv62, 1 + %exitcond65.not = icmp eq i64 %indvars.iv.next63, 3 + br i1 %exitcond65.not, label %.loopexit, label %177, !llvm.loop !28 + +.loopexit: ; preds = %177, %167 + %181 = fcmp contract olt double %166, 0x3EB0C6F7A0B5ED8D + %182 = add nuw nsw i32 %.03654, 1 + %exitcond66.not = icmp eq i32 %182, %2 + %or.cond = select i1 %181, i1 true, i1 %exitcond66.not br i1 %or.cond, label %._crit_edge, label %18, !llvm.loop !29 ._crit_edge: ; preds = %.loopexit, %3 - %.1 = phi double [ 0.000000e+00, %3 ], [ %167, %.loopexit ] - %184 = call contract double @llvm.sqrt.f64(double %.1) - ret double %184 + %.1 = phi double [ 0.000000e+00, %3 ], [ %166, %.loopexit ] + %183 = call contract double @llvm.sqrt.f64(double %.1) + ret double %183 } declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEd(ptr noundef nonnull align 8 dereferenceable(8), double noundef) local_unnamed_addr #9 @@ -2001,8 +2002,9 @@ define internal void @main.omp_outlined(ptr noalias noundef readonly captures(no %149 = getelementptr i8, ptr %148, i64 8 store float %146, ptr %149, align 4, !llvm.access.group !31 %indvars.iv.next118 = add nsw i64 %indvars.iv117, -1 - %150 = icmp sgt i64 %indvars.iv117, 0 - br i1 %150, label %.lr.ph103, label %._crit_edge104.loopexit, !llvm.loop !33 + %150 = and i64 %indvars.iv.next118, 4294967295 + %exitcond.not = icmp eq i64 %150, 4294967295 + br i1 %exitcond.not, label %._crit_edge104.loopexit, label %.lr.ph103, !llvm.loop !33 ._crit_edge104.loopexit: ; preds = %114 %.pre120 = load i32, ptr %2, align 4, !llvm.access.group !31 diff --git a/bench/msdfgen/optimized/Contour.ll b/bench/msdfgen/optimized/Contour.ll index a3f34f1b536..b762d88f23b 100644 --- a/bench/msdfgen/optimized/Contour.ll +++ b/bench/msdfgen/optimized/Contour.ll @@ -488,8 +488,9 @@ for.body: ; preds = %for.body.preheader, %sub9 = sub nsw i64 %sub.ptr.div.i8, %indvars.iv %add.ptr.i9 = getelementptr inbounds %"class.msdfgen::EdgeHolder", ptr %3, i64 %sub9 tail call void @_ZN7msdfgen10EdgeHolder4swapERS0_S1_(ptr noundef nonnull align 8 dereferenceable(8) %add.ptr.i, ptr noundef nonnull align 8 dereferenceable(8) %add.ptr.i9) - %cmp = icmp samesign ugt i64 %indvars.iv, 1 - br i1 %cmp, label %for.body, label %for.end.loopexit, !llvm.loop !10 + %5 = and i64 %indvars.iv.next, 4294967295 + %exitcond.not = icmp eq i64 %5, 0 + br i1 %exitcond.not, label %for.end.loopexit, label %for.body, !llvm.loop !10 for.end.loopexit: ; preds = %for.body %.pre = load ptr, ptr %this, align 8 @@ -497,21 +498,21 @@ for.end.loopexit: ; preds = %for.body br label %for.end for.end: ; preds = %for.end.loopexit, %entry - %5 = phi ptr [ %.pre18, %for.end.loopexit ], [ %0, %entry ] - %6 = phi ptr [ %.pre, %for.end.loopexit ], [ %1, %entry ] - %cmp.i.not15 = icmp eq ptr %6, %5 + %6 = phi ptr [ %.pre18, %for.end.loopexit ], [ %0, %entry ] + %7 = phi ptr [ %.pre, %for.end.loopexit ], [ %1, %entry ] + %cmp.i.not15 = icmp eq ptr %7, %6 br i1 %cmp.i.not15, label %for.end23, label %for.body18 for.body18: ; preds = %for.end, %for.body18 - %edge.sroa.0.016 = phi ptr [ %incdec.ptr.i, %for.body18 ], [ %6, %for.end ] + %edge.sroa.0.016 = phi ptr [ %incdec.ptr.i, %for.body18 ], [ %7, %for.end ] %call20 = tail call noundef ptr @_ZN7msdfgen10EdgeHolderptEv(ptr noundef nonnull align 8 dereferenceable(8) %edge.sroa.0.016) %vtable = load ptr, ptr %call20, align 8 %vfn = getelementptr inbounds nuw i8, ptr %vtable, i64 96 - %7 = load ptr, ptr %vfn, align 8 - tail call void %7(ptr noundef nonnull align 8 dereferenceable(12) %call20) + %8 = load ptr, ptr %vfn, align 8 + tail call void %8(ptr noundef nonnull align 8 dereferenceable(12) %call20) %incdec.ptr.i = getelementptr inbounds nuw i8, ptr %edge.sroa.0.016, i64 8 - %8 = load ptr, ptr %_M_finish.i, align 8 - %cmp.i.not = icmp eq ptr %incdec.ptr.i, %8 + %9 = load ptr, ptr %_M_finish.i, align 8 + %cmp.i.not = icmp eq ptr %incdec.ptr.i, %9 br i1 %cmp.i.not, label %for.end23, label %for.body18, !llvm.loop !11 for.end23: ; preds = %for.body18, %for.end diff --git a/bench/ncnn/optimized/caffe.pb.ll b/bench/ncnn/optimized/caffe.pb.ll index 6ef717685fe..bcdb8107e73 100644 --- a/bench/ncnn/optimized/caffe.pb.ll +++ b/bench/ncnn/optimized/caffe.pb.ll @@ -15538,8 +15538,9 @@ define dso_local noundef zeroext i1 @_ZNK5caffe12NetParameter13IsInitializedEv(p br i1 %.not.i.i.i, label %_ZNK5caffe14LayerParameter13IsInitializedEv.exit.i, label %_ZN6google8protobuf8internal17AllAreInitializedIN5caffe14LayerParameterEEEbRKNS0_16RepeatedPtrFieldIT_EE.exit _ZNK5caffe14LayerParameter13IsInitializedEv.exit.i: ; preds = %19, %9 - %23 = icmp samesign ult i64 %indvars.iv.i, 2 - br i1 %23, label %_ZN6google8protobuf8internal17AllAreInitializedIN5caffe14LayerParameterEEEbRKNS0_16RepeatedPtrFieldIT_EE.exit, label %9, !llvm.loop !552 + %23 = and i64 %indvars.iv.next.i, 4294967295 + %exitcond.i = icmp eq i64 %23, 0 + br i1 %exitcond.i, label %_ZN6google8protobuf8internal17AllAreInitializedIN5caffe14LayerParameterEEEbRKNS0_16RepeatedPtrFieldIT_EE.exit, label %9, !llvm.loop !552 _ZN6google8protobuf8internal17AllAreInitializedIN5caffe14LayerParameterEEEbRKNS0_16RepeatedPtrFieldIT_EE.exit: ; preds = %19, %_ZNK5caffe14LayerParameter13IsInitializedEv.exit.i, %1 %.lcssa.i = phi i1 [ true, %1 ], [ true, %_ZNK5caffe14LayerParameter13IsInitializedEv.exit.i ], [ false, %19 ] @@ -23584,12 +23585,14 @@ define dso_local noundef zeroext i1 @_ZNK5caffe15SolverParameter13IsInitializedE br i1 %.not.i.i.i.i.i, label %_ZNK5caffe14LayerParameter13IsInitializedEv.exit.i.i.i, label %_ZN6google8protobuf8internal17AllAreInitializedIN5caffe12NetParameterEEEbRKNS0_16RepeatedPtrFieldIT_EE.exit _ZNK5caffe14LayerParameter13IsInitializedEv.exit.i.i.i: ; preds = %29, %19 - %33 = icmp samesign ult i64 %indvars.iv.i.i.i, 2 - br i1 %33, label %_ZNK5caffe12NetParameter13IsInitializedEv.exit.i, label %19, !llvm.loop !552 + %33 = and i64 %indvars.iv.next.i.i.i, 4294967295 + %exitcond.i.i.i = icmp eq i64 %33, 0 + br i1 %exitcond.i.i.i, label %_ZNK5caffe12NetParameter13IsInitializedEv.exit.i, label %19, !llvm.loop !552 _ZNK5caffe12NetParameter13IsInitializedEv.exit.i: ; preds = %_ZNK5caffe14LayerParameter13IsInitializedEv.exit.i.i.i, %9 - %34 = icmp slt i64 %indvars.iv.i, 2 - br i1 %34, label %.loopexit, label %9, !llvm.loop !598 + %34 = and i64 %indvars.iv.next.i, 4294967295 + %exitcond.i = icmp eq i64 %34, 0 + br i1 %exitcond.i, label %.loopexit, label %9, !llvm.loop !598 .loopexit: ; preds = %_ZNK5caffe12NetParameter13IsInitializedEv.exit.i, %1 %35 = getelementptr inbounds nuw i8, ptr %0, i64 16 @@ -23640,18 +23643,19 @@ _ZNK5caffe12NetParameter13IsInitializedEv.exit.i: ; preds = %_ZNK5caffe14LayerPa br i1 %.not.i.i.i.i2, label %_ZNK5caffe14LayerParameter13IsInitializedEv.exit.i.i, label %_ZN6google8protobuf8internal17AllAreInitializedIN5caffe12NetParameterEEEbRKNS0_16RepeatedPtrFieldIT_EE.exit _ZNK5caffe14LayerParameter13IsInitializedEv.exit.i.i: ; preds = %60, %50 - %64 = icmp samesign ult i64 %indvars.iv.i.i, 2 - br i1 %64, label %_ZNK5caffe12NetParameter13IsInitializedEv.exit.thread, label %50, !llvm.loop !552 + %64 = and i64 %indvars.iv.next.i.i, 4294967295 + %exitcond.i.i = icmp eq i64 %64, 0 + br i1 %exitcond.i.i, label %_ZNK5caffe12NetParameter13IsInitializedEv.exit.thread, label %50, !llvm.loop !552 _ZNK5caffe12NetParameter13IsInitializedEv.exit.thread: ; preds = %_ZNK5caffe14LayerParameter13IsInitializedEv.exit.i.i, %42, %.loopexit %65 = and i32 %36, 128 - %.not14 = icmp eq i32 %65, 0 + %.not15 = icmp eq i32 %65, 0 %66 = getelementptr inbounds nuw i8, ptr %0, i64 192 %67 = load ptr, ptr %66, align 8 %68 = icmp ne ptr %67, null - %69 = select i1 %.not14, i1 true, i1 %68 + %69 = select i1 %.not15, i1 true, i1 %68 tail call void @llvm.assume(i1 %69) - br i1 %.not14, label %_ZN6google8protobuf8internal17AllAreInitializedIN5caffe12NetParameterEEEbRKNS0_16RepeatedPtrFieldIT_EE.exit, label %70 + br i1 %.not15, label %_ZN6google8protobuf8internal17AllAreInitializedIN5caffe12NetParameterEEEbRKNS0_16RepeatedPtrFieldIT_EE.exit, label %70 70: ; preds = %_ZNK5caffe12NetParameter13IsInitializedEv.exit.thread %71 = getelementptr inbounds nuw i8, ptr %67, i64 120 @@ -23690,8 +23694,9 @@ _ZNK5caffe12NetParameter13IsInitializedEv.exit.thread: ; preds = %_ZNK5caffe14La br i1 %.not.i.i.i.i8, label %_ZNK5caffe14LayerParameter13IsInitializedEv.exit.i.i10, label %_ZN6google8protobuf8internal17AllAreInitializedIN5caffe12NetParameterEEEbRKNS0_16RepeatedPtrFieldIT_EE.exit _ZNK5caffe14LayerParameter13IsInitializedEv.exit.i.i10: ; preds = %88, %78 - %92 = icmp samesign ult i64 %indvars.iv.i.i5, 2 - br i1 %92, label %_ZN6google8protobuf8internal17AllAreInitializedIN5caffe12NetParameterEEEbRKNS0_16RepeatedPtrFieldIT_EE.exit, label %78, !llvm.loop !552 + %92 = and i64 %indvars.iv.next.i.i6, 4294967295 + %exitcond.i.i11 = icmp eq i64 %92, 0 + br i1 %exitcond.i.i11, label %_ZN6google8protobuf8internal17AllAreInitializedIN5caffe12NetParameterEEEbRKNS0_16RepeatedPtrFieldIT_EE.exit, label %78, !llvm.loop !552 _ZN6google8protobuf8internal17AllAreInitializedIN5caffe12NetParameterEEEbRKNS0_16RepeatedPtrFieldIT_EE.exit: ; preds = %29, %60, %_ZNK5caffe14LayerParameter13IsInitializedEv.exit.i.i10, %88, %70, %_ZNK5caffe12NetParameter13IsInitializedEv.exit.thread %.0 = phi i1 [ true, %_ZNK5caffe12NetParameter13IsInitializedEv.exit.thread ], [ true, %70 ], [ true, %_ZNK5caffe14LayerParameter13IsInitializedEv.exit.i.i10 ], [ false, %88 ], [ false, %60 ], [ false, %29 ] diff --git a/bench/ncnn/optimized/cpu.ll b/bench/ncnn/optimized/cpu.ll index d6b67393bf7..11e25c173c3 100644 --- a/bench/ncnn/optimized/cpu.ll +++ b/bench/ncnn/optimized/cpu.ll @@ -1355,8 +1355,9 @@ _ZN4ncnn6CpuSet6enableEi.exit118: ; preds = %75, %_ZN4ncnn6CpuSe _ZN4ncnn6CpuSet6enableEi.exit119: ; preds = %83, %_ZN4ncnn6CpuSet6enableEi.exit118 %indvars.iv.next200 = add nuw nsw i64 %indvars.iv199, 4 - %90 = icmp samesign ugt i64 %indvars.iv, 1 - br i1 %90, label %.lr.ph176, label %._crit_edge, !llvm.loop !32 + %90 = and i64 %indvars.iv.next, 4294967295 + %exitcond.not = icmp eq i64 %90, 0 + br i1 %exitcond.not, label %._crit_edge, label %.lr.ph176, !llvm.loop !32 ._crit_edge: ; preds = %_ZN4ncnn6CpuSet6enableEi.exit119, %44 call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %8) #18 @@ -1412,26 +1413,26 @@ _ZNSt6vectorIiSaIiEED2Ev.exit: ; preds = %._crit_edge186, %10 br label %.critedge113 .lr.ph185: ; preds = %.preheader151, %_ZNK4ncnn6CpuSet10is_enabledEi.exit.thread - %indvars.iv204 = phi i64 [ %indvars.iv.next205, %_ZNK4ncnn6CpuSet10is_enabledEi.exit.thread ], [ 0, %.preheader151 ] + %indvars.iv205 = phi i64 [ %indvars.iv.next206, %_ZNK4ncnn6CpuSet10is_enabledEi.exit.thread ], [ 0, %.preheader151 ] %.068183 = phi i32 [ %.1, %_ZNK4ncnn6CpuSet10is_enabledEi.exit.thread ], [ 0, %.preheader151 ] %.sroa.0.0182 = phi ptr [ %.sroa.0.1, %_ZNK4ncnn6CpuSet10is_enabledEi.exit.thread ], [ null, %.preheader151 ] %.sroa.14.0181 = phi ptr [ %.sroa.14.1, %_ZNK4ncnn6CpuSet10is_enabledEi.exit.thread ], [ null, %.preheader151 ] %.sroa.10.0180 = phi ptr [ %.sroa.10.1, %_ZNK4ncnn6CpuSet10is_enabledEi.exit.thread ], [ null, %.preheader151 ] - %113 = icmp samesign ult i64 %indvars.iv204, 1024 + %113 = icmp samesign ult i64 %indvars.iv205, 1024 br i1 %113, label %_ZNK4ncnn6CpuSet10is_enabledEi.exit, label %_ZNK4ncnn6CpuSet10is_enabledEi.exit.thread _ZNK4ncnn6CpuSet10is_enabledEi.exit: ; preds = %.lr.ph185 - %114 = lshr i64 %indvars.iv204, 6 + %114 = lshr i64 %indvars.iv205, 6 %115 = getelementptr inbounds nuw i64, ptr %7, i64 %114 %116 = load i64, ptr %115, align 8, !tbaa !4 - %117 = and i64 %indvars.iv204, 63 + %117 = and i64 %indvars.iv205, 63 %118 = shl nuw i64 1, %117 %119 = and i64 %116, %118 %.not146 = icmp eq i64 %119, 0 br i1 %.not146, label %_ZNK4ncnn6CpuSet10is_enabledEi.exit.thread, label %120 120: ; preds = %_ZNK4ncnn6CpuSet10is_enabledEi.exit - %121 = trunc nuw nsw i64 %indvars.iv204 to i32 + %121 = trunc nuw nsw i64 %indvars.iv205 to i32 %122 = invoke fastcc noundef i32 @_ZL19get_thread_siblingsi(i32 noundef %121) to label %123 unwind label %129 @@ -1454,8 +1455,8 @@ _ZNK4ncnn6CpuSet10is_enabledEi.exit: ; preds = %.lr.ph185 131: ; preds = %.lr.ph178 %132 = add nuw i64 %.0177, 1 - %exitcond.not = icmp eq i64 %132, %128 - br i1 %exitcond.not, label %.critedge115, label %.lr.ph178, !llvm.loop !33 + %exitcond204.not = icmp eq i64 %132, %128 + br i1 %exitcond204.not, label %.critedge115, label %.lr.ph178, !llvm.loop !33 .lr.ph178: ; preds = %.preheader, %131 %.0177 = phi i64 [ %132, %131 ], [ 0, %.preheader ] @@ -1469,8 +1470,8 @@ _ZNK4ncnn6CpuSet10is_enabledEi.exit: ; preds = %.lr.ph185 br i1 %.not.i, label %137, label %136 .critedge115.thread: ; preds = %.preheader - %.not.i212 = icmp eq ptr %.sroa.10.0180, %.sroa.14.0181 - br i1 %.not.i212, label %_ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i.i, label %136 + %.not.i213 = icmp eq ptr %.sroa.10.0180, %.sroa.14.0181 + br i1 %.not.i213, label %_ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i.i, label %136 136: ; preds = %.critedge115.thread, %.critedge115 store i32 %122, ptr %.sroa.10.0180, align 4, !tbaa !10 @@ -1482,7 +1483,7 @@ _ZNK4ncnn6CpuSet10is_enabledEi.exit: ; preds = %.lr.ph185 139: ; preds = %137 invoke void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.10) #26 - to label %.noexc unwind label %.thread213 + to label %.noexc unwind label %.thread214 .noexc: ; preds = %139 unreachable @@ -1534,7 +1535,7 @@ _ZNSt6vectorIiSaIiEE9push_backERKi.exit: ; preds = %_ZNSt6vectorIiSaIiE cleanup br label %155 -.thread213: ; preds = %139 +.thread214: ; preds = %139 %lpad.loopexit.split-lp = landingpad { ptr, i32 } cleanup br label %156 @@ -1544,10 +1545,10 @@ _ZNK4ncnn6CpuSet10is_enabledEi.exit.thread: ; preds = %.lr.ph178, %.lr.ph1 %.sroa.14.1 = phi ptr [ %.sroa.14.0181, %_ZNK4ncnn6CpuSet10is_enabledEi.exit ], [ %.sroa.14.0181, %123 ], [ %.sroa.14.3, %_ZNSt6vectorIiSaIiEE9push_backERKi.exit ], [ %.sroa.14.0181, %.lr.ph185 ], [ %.sroa.14.0181, %.lr.ph178 ] %.sroa.0.1 = phi ptr [ %.sroa.0.0182, %_ZNK4ncnn6CpuSet10is_enabledEi.exit ], [ %.sroa.0.0182, %123 ], [ %.sroa.0.3, %_ZNSt6vectorIiSaIiEE9push_backERKi.exit ], [ %.sroa.0.0182, %.lr.ph185 ], [ %.sroa.0.0182, %.lr.ph178 ] %.1 = phi i32 [ %.068183, %_ZNK4ncnn6CpuSet10is_enabledEi.exit ], [ %.068183, %123 ], [ %151, %_ZNSt6vectorIiSaIiEE9push_backERKi.exit ], [ %.068183, %.lr.ph185 ], [ %.068183, %.lr.ph178 ] - %indvars.iv.next205 = add nuw nsw i64 %indvars.iv204, 1 + %indvars.iv.next206 = add nuw nsw i64 %indvars.iv205, 1 %152 = load i32, ptr @_ZL10g_cpucount, align 4, !tbaa !10 %153 = sext i32 %152 to i64 - %154 = icmp slt i64 %indvars.iv.next205, %153 + %154 = icmp slt i64 %indvars.iv.next206, %153 br i1 %154, label %.lr.ph185, label %._crit_edge186, !llvm.loop !34 155: ; preds = %.loopexit, %129 @@ -1555,8 +1556,8 @@ _ZNK4ncnn6CpuSet10is_enabledEi.exit.thread: ; preds = %.lr.ph178, %.lr.ph1 %.not.i.i.i122 = icmp eq ptr %.sroa.0.0182, null br i1 %.not.i.i.i122, label %_ZNSt6vectorIiSaIiEED2Ev.exit123, label %156 -156: ; preds = %.thread213, %155 - %.pn216 = phi { ptr, i32 } [ %lpad.loopexit.split-lp, %.thread213 ], [ %.pn, %155 ] +156: ; preds = %.thread214, %155 + %.pn217 = phi { ptr, i32 } [ %lpad.loopexit.split-lp, %.thread214 ], [ %.pn, %155 ] %157 = ptrtoint ptr %.sroa.14.0181 to i64 %158 = ptrtoint ptr %.sroa.0.0182 to i64 %159 = sub i64 %157, %158 @@ -1564,11 +1565,11 @@ _ZNK4ncnn6CpuSet10is_enabledEi.exit.thread: ; preds = %.lr.ph178, %.lr.ph1 br label %_ZNSt6vectorIiSaIiEED2Ev.exit123 _ZNSt6vectorIiSaIiEED2Ev.exit123: ; preds = %155, %156 - %.pn217 = phi { ptr, i32 } [ %.pn, %155 ], [ %.pn216, %156 ] + %.pn218 = phi { ptr, i32 } [ %.pn, %155 ], [ %.pn217, %156 ] call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %7) #18 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #18 call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %3) #18 - resume { ptr, i32 } %.pn217 + resume { ptr, i32 } %.pn218 .critedge113: ; preds = %.thread144, %.critedge111, %_ZNSt6vectorIiSaIiEED2Ev.exit, %101 %.6 = phi i32 [ %103, %101 ], [ %112, %_ZNSt6vectorIiSaIiEED2Ev.exit ], [ 0, %.critedge111 ], [ 0, %.thread144 ] diff --git a/bench/ncnn/optimized/ncnnoptimize.ll b/bench/ncnn/optimized/ncnnoptimize.ll index 1481ba26331..4313275f204 100644 --- a/bench/ncnn/optimized/ncnnoptimize.ll +++ b/bench/ncnn/optimized/ncnnoptimize.ll @@ -25372,8 +25372,9 @@ define dso_local noundef i32 @_ZN11NetOptimize17eliminate_dropoutEv(ptr noundef 56: ; preds = %53, %41, %.lr.ph %indvars.iv.next40 = add nsw i64 %indvars.iv39, -1 - %57 = icmp sgt i64 %indvars.iv39, 0 - br i1 %57, label %.lr.ph, label %._crit_edge.thread, !llvm.loop !863 + %57 = and i64 %indvars.iv.next40, 4294967295 + %exitcond.not = icmp eq i64 %57, 4294967295 + br i1 %exitcond.not, label %._crit_edge.thread, label %.lr.ph, !llvm.loop !863 ._crit_edge: ; preds = %28 %58 = icmp eq i32 %32, 0 @@ -25381,7 +25382,7 @@ define dso_local noundef i32 @_ZN11NetOptimize17eliminate_dropoutEv(ptr noundef ._crit_edge..thread_crit_edge: ; preds = %._crit_edge %.pre = load ptr, ptr %2, align 8, !tbaa !39 - %.pre42 = load ptr, ptr %.pre, align 8, !tbaa !44 + %.pre43 = load ptr, ptr %.pre, align 8, !tbaa !44 br label %.thread .thread.loopexit: ; preds = %53 @@ -25389,7 +25390,7 @@ define dso_local noundef i32 @_ZN11NetOptimize17eliminate_dropoutEv(ptr noundef br label %.thread .thread: ; preds = %._crit_edge..thread_crit_edge, %.thread.loopexit - %60 = phi ptr [ %.pre42, %._crit_edge..thread_crit_edge ], [ %43, %.thread.loopexit ] + %60 = phi ptr [ %.pre43, %._crit_edge..thread_crit_edge ], [ %43, %.thread.loopexit ] %.02427 = phi i32 [ %.02429, %._crit_edge..thread_crit_edge ], [ %59, %.thread.loopexit ] %61 = sext i32 %.02427 to i64 %62 = getelementptr inbounds nuw ptr, ptr %60, i64 %61 @@ -25420,8 +25421,8 @@ define dso_local noundef i32 @_ZN11NetOptimize17eliminate_dropoutEv(ptr noundef ._crit_edge.thread: ; preds = %56, %20, %._crit_edge, %.thread, %12 %83 = add nuw i64 %.032, 1 %indvars.iv.next = add i32 %indvars.iv, 1 - %exitcond.not = icmp eq i64 %83, %10 - br i1 %exitcond.not, label %._crit_edge35, label %12, !llvm.loop !864 + %exitcond42.not = icmp eq i64 %83, %10 + br i1 %exitcond42.not, label %._crit_edge35, label %12, !llvm.loop !864 } ; Function Attrs: mustprogress uwtable @@ -25527,7 +25528,7 @@ define dso_local noundef i32 @_ZN11NetOptimize20eliminate_pooling1x1Ev(ptr nound .lr.ph58: ; preds = %51, %.thread %indvars.iv72 = phi i64 [ %indvars.iv.next73, %.thread ], [ %13, %51 ] - %.039.in56 = phi i32 [ %84, %.thread ], [ %55, %51 ] + %.039.in56 = phi i32 [ %83, %.thread ], [ %55, %51 ] %57 = load ptr, ptr %2, align 8, !tbaa !39 %58 = load ptr, ptr %57, align 8, !tbaa !44 %59 = getelementptr inbounds nuw ptr, ptr %58, i64 %indvars.iv72 @@ -25575,9 +25576,10 @@ define dso_local noundef i32 @_ZN11NetOptimize20eliminate_pooling1x1Ev(ptr nound .thread: ; preds = %79, %.preheader, %81, %.lr.ph58 %indvars.iv.next73 = add nsw i64 %indvars.iv72, -1 - %83 = icmp sgt i64 %indvars.iv72, 0 - %84 = trunc nuw nsw i64 %indvars.iv72 to i32 - br i1 %83, label %.lr.ph58, label %._crit_edge, !llvm.loop !866 + %83 = trunc nuw nsw i64 %indvars.iv72 to i32 + %84 = and i64 %indvars.iv.next73, 4294967295 + %exitcond75.not = icmp eq i64 %84, 4294967295 + br i1 %exitcond75.not, label %._crit_edge, label %.lr.ph58, !llvm.loop !866 ._crit_edge.loopexit.split.loop.exit: ; preds = %81 %85 = trunc nuw nsw i64 %indvars.iv72 to i32 @@ -25623,8 +25625,8 @@ define dso_local noundef i32 @_ZN11NetOptimize20eliminate_pooling1x1Ev(ptr nound 113: ; preds = %33, %30, %27, %20, %45, %42, %39, %36, %48, %._crit_edge, %89, %12 %114 = add nuw i64 %.065, 1 %indvars.iv.next = add i32 %indvars.iv, 1 - %exitcond76.not = icmp eq i64 %114, %10 - br i1 %exitcond76.not, label %._crit_edge68, label %12, !llvm.loop !867 + %exitcond77.not = icmp eq i64 %114, %10 + br i1 %exitcond77.not, label %._crit_edge68, label %12, !llvm.loop !867 } ; Function Attrs: mustprogress uwtable @@ -25702,8 +25704,8 @@ define dso_local noundef i32 @_ZN11NetOptimize14eliminate_noopEv(ptr noundef non %49 = getelementptr inbounds nuw %"class.ncnn::Blob", ptr %44, i64 %48, i32 1 store i32 -1, ptr %49, align 8, !tbaa !127 %50 = add nuw i64 %.04562, 1 - %exitcond78.not = icmp eq i64 %50, %42 - br i1 %exitcond78.not, label %.loopexit50.thread.sink.split, label %45, !llvm.loop !868 + %exitcond79.not = icmp eq i64 %50, %42 + br i1 %exitcond79.not, label %.loopexit50.thread.sink.split, label %45, !llvm.loop !868 51: ; preds = %20 %52 = load i32, ptr %26, align 4, !tbaa !78 @@ -25714,7 +25716,7 @@ define dso_local noundef i32 @_ZN11NetOptimize14eliminate_noopEv(ptr noundef non .lr.ph60: ; preds = %51, %.loopexit %indvars.iv74 = phi i64 [ %indvars.iv.next75, %.loopexit ], [ %13, %51 ] - %.048.in58 = phi i32 [ %81, %.loopexit ], [ %53, %51 ] + %.048.in58 = phi i32 [ %80, %.loopexit ], [ %53, %51 ] %55 = load ptr, ptr %2, align 8, !tbaa !39 %56 = load ptr, ptr %55, align 8, !tbaa !44 %57 = getelementptr inbounds nuw ptr, ptr %56, i64 %indvars.iv74 @@ -25757,9 +25759,10 @@ define dso_local noundef i32 @_ZN11NetOptimize14eliminate_noopEv(ptr noundef non .loopexit: ; preds = %78, %62, %.lr.ph60 %indvars.iv.next75 = add nsw i64 %indvars.iv74, -1 - %80 = icmp sgt i64 %indvars.iv74, 0 - %81 = trunc nuw nsw i64 %indvars.iv74 to i32 - br i1 %80, label %.lr.ph60, label %.loopexit50.thread, !llvm.loop !870 + %80 = trunc nuw nsw i64 %indvars.iv74 to i32 + %81 = and i64 %indvars.iv.next75, 4294967295 + %exitcond77.not = icmp eq i64 %81, 4294967295 + br i1 %exitcond77.not, label %.loopexit50.thread, label %.lr.ph60, !llvm.loop !870 .loopexit50: ; preds = %.lr.ph %82 = icmp eq i32 %.048.in58, 0 @@ -25786,9 +25789,9 @@ define dso_local noundef i32 @_ZN11NetOptimize14eliminate_noopEv(ptr noundef non %99 = load ptr, ptr %98, align 8, !tbaa !77 %100 = load i32, ptr %99, align 4, !tbaa !78 %101 = getelementptr inbounds nuw i8, ptr %91, i64 136 - %sext90 = shl i64 %.04456, 32 + %sext91 = shl i64 %.04456, 32 %102 = load ptr, ptr %101, align 8, !tbaa !77 - %103 = ashr exact i64 %sext90, 30 + %103 = ashr exact i64 %sext91, 30 %104 = getelementptr inbounds nuw i8, ptr %102, i64 %103 store i32 %100, ptr %104, align 4, !tbaa !78 %105 = load ptr, ptr %11, align 8, !tbaa !45 @@ -25808,8 +25811,8 @@ define dso_local noundef i32 @_ZN11NetOptimize14eliminate_noopEv(ptr noundef non .loopexit50.thread: ; preds = %.loopexit, %.loopexit50.thread.sink.split, %51, %.loopexit50, %12 %113 = add nuw i64 %.064, 1 %indvars.iv.next = add i32 %indvars.iv, 1 - %exitcond80.not = icmp eq i64 %113, %10 - br i1 %exitcond80.not, label %._crit_edge67, label %12, !llvm.loop !871 + %exitcond81.not = icmp eq i64 %113, %10 + br i1 %exitcond81.not, label %._crit_edge67, label %12, !llvm.loop !871 } ; Function Attrs: mustprogress uwtable @@ -25891,7 +25894,7 @@ define dso_local noundef i32 @_ZN11NetOptimize15eliminate_splitEv(ptr noundef no br i1 %exitcond.not, label %._crit_edge, label %37, !llvm.loop !872 ._crit_edge.thread: ; preds = %20, %._crit_edge - %.045.lcssa89 = phi i64 [ %36, %._crit_edge ], [ -1, %20 ] + %.045.lcssa90 = phi i64 [ %36, %._crit_edge ], [ -1, %20 ] %46 = getelementptr inbounds nuw i8, ptr %24, i64 112 %47 = load ptr, ptr %46, align 8, !tbaa !77 %48 = load i32, ptr %47, align 4, !tbaa !78 @@ -25902,7 +25905,7 @@ define dso_local noundef i32 @_ZN11NetOptimize15eliminate_splitEv(ptr noundef no .lr.ph63: ; preds = %._crit_edge.thread, %.thread %indvars.iv82 = phi i64 [ %indvars.iv.next83, %.thread ], [ %13, %._crit_edge.thread ] - %.041.in60 = phi i32 [ %78, %.thread ], [ %49, %._crit_edge.thread ] + %.041.in60 = phi i32 [ %77, %.thread ], [ %49, %._crit_edge.thread ] %51 = load ptr, ptr %2, align 8, !tbaa !39 %52 = load ptr, ptr %51, align 8, !tbaa !44 %53 = getelementptr inbounds nuw ptr, ptr %52, i64 %indvars.iv82 @@ -25950,9 +25953,10 @@ define dso_local noundef i32 @_ZN11NetOptimize15eliminate_splitEv(ptr noundef no .thread: ; preds = %73, %.preheader, %75, %.lr.ph63 %indvars.iv.next83 = add nsw i64 %indvars.iv82, -1 - %77 = icmp sgt i64 %indvars.iv82, 0 - %78 = trunc nuw nsw i64 %indvars.iv82 to i32 - br i1 %77, label %.lr.ph63, label %._crit_edge64, !llvm.loop !874 + %77 = trunc nuw nsw i64 %indvars.iv82 to i32 + %78 = and i64 %indvars.iv.next83, 4294967295 + %exitcond85.not = icmp eq i64 %78, 4294967295 + br i1 %exitcond85.not, label %._crit_edge64, label %.lr.ph63, !llvm.loop !874 ._crit_edge64.loopexit.split.loop.exit: ; preds = %75 %79 = trunc nuw nsw i64 %indvars.iv82 to i32 @@ -25980,7 +25984,7 @@ define dso_local noundef i32 @_ZN11NetOptimize15eliminate_splitEv(ptr noundef no %93 = load ptr, ptr %92, align 8, !tbaa !52 %94 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %89, ptr noundef nonnull @.str.188, ptr noundef %91, ptr noundef %93) #27 %95 = load ptr, ptr %25, align 8, !tbaa !77 - %96 = getelementptr inbounds nuw i32, ptr %95, i64 %.045.lcssa89 + %96 = getelementptr inbounds nuw i32, ptr %95, i64 %.045.lcssa90 %97 = load i32, ptr %96, align 4, !tbaa !78 %98 = getelementptr inbounds nuw i8, ptr %88, i64 136 %99 = load ptr, ptr %98, align 8, !tbaa !77 @@ -26000,8 +26004,8 @@ define dso_local noundef i32 @_ZN11NetOptimize15eliminate_splitEv(ptr noundef no 109: ; preds = %._crit_edge, %._crit_edge64, %83, %12 %110 = add nuw i64 %.072, 1 %indvars.iv.next = add i32 %indvars.iv, 1 - %exitcond86.not = icmp eq i64 %110, %10 - br i1 %exitcond86.not, label %._crit_edge75, label %12, !llvm.loop !875 + %exitcond87.not = icmp eq i64 %110, %10 + br i1 %exitcond87.not, label %._crit_edge75, label %12, !llvm.loop !875 } ; Function Attrs: mustprogress uwtable diff --git a/bench/nix/optimized/app.ll b/bench/nix/optimized/app.ll index 59aaf37c9b8..bf38e5f0875 100644 --- a/bench/nix/optimized/app.ll +++ b/bench/nix/optimized/app.ll @@ -13369,7 +13369,7 @@ define linkonce_odr void @_ZNSt6vectorIbSaIbEEC2ERKS1_(ptr noundef nonnull align %20 = lshr i64 %19, 3 %21 = and i64 %20, 2305843009213693944 %22 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %21) #28 - to label %.noexc unwind label %57 + to label %.noexc unwind label %56 .noexc: ; preds = %18 %23 = lshr i64 %19, 6 @@ -13457,17 +13457,17 @@ _ZNSt14_Bit_referenceaSEb.exit.i.i.i.i.i.i: ; preds = %47, %44 %.sroa.03.1.idx.i.i.i.i.i.i = select i1 %54, i64 8, i64 0 %.sroa.03.1.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %.sroa.03.016.i.i.i.i.i.i, i64 %.sroa.03.1.idx.i.i.i.i.i.i %55 = add nsw i64 %.019.i.i.i.i.i.i, -1 - %56 = icmp sgt i64 %.019.i.i.i.i.i.i, 1 - br i1 %56, label %.lr.ph.i.i.i.i.i.i, label %.loopexit, !llvm.loop !97 + %exitcond.not.i = icmp eq i64 %55, 0 + br i1 %exitcond.not.i, label %.loopexit, label %.lr.ph.i.i.i.i.i.i, !llvm.loop !97 .loopexit: ; preds = %_ZNSt14_Bit_referenceaSEb.exit.i.i.i.i.i.i, %_ZSt4copyIPmS0_ET0_T_S2_S1_.exit.i ret void -57: ; preds = %18 - %58 = landingpad { ptr, i32 } +56: ; preds = %18 + %57 = landingpad { ptr, i32 } cleanup tail call void @_ZNSt13_Bvector_baseISaIbEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %0) #26 - resume { ptr, i32 } %58 + resume { ptr, i32 } %57 } ; Function Attrs: mustprogress uwtable diff --git a/bench/nuttx/optimized/lib_libvsprintf.ll b/bench/nuttx/optimized/lib_libvsprintf.ll index 5b04d44dd50..44fedd19eca 100644 --- a/bench/nuttx/optimized/lib_libvsprintf.ll +++ b/bench/nuttx/optimized/lib_libvsprintf.ll @@ -347,7 +347,7 @@ define internal fastcc i32 @vsprintf_internal(ptr noundef %0, ptr noundef readon br i1 %.not569, label %179, label %152 152: ; preds = %150 - %.neg176 = select i1 %.not572, i32 -3, i32 -4 + %.neg177 = select i1 %.not572, i32 -3, i32 -4 %153 = select i1 %.not572, i32 3, i32 4 %154 = icmp sgt i32 %.0484, %153 br i1 %154, label %155, label %.loopexit55 @@ -367,7 +367,7 @@ define internal fastcc i32 @vsprintf_internal(ptr noundef %0, ptr noundef readon br i1 %.not584, label %.loopexit55.loopexit, label %.preheader54, !llvm.loop !8 .loopexit55.loopexit: ; preds = %.preheader54 - %161 = add i32 %.neg176, %.1452.ph + %161 = add i32 %.neg177, %.1452.ph %162 = add i32 %161, %.0484 br label %.loopexit55 @@ -478,8 +478,8 @@ define internal fastcc i32 @vsprintf_internal(ptr noundef %0, ptr noundef readon %207 = add nsw i32 %.4480.fr, 1 %208 = lshr i32 %203, 4 %209 = and i32 %208, 1 - %spec.select226 = select i1 %.not573, i32 %209, i32 %207 - %.2438 = add i32 %.1437, %spec.select226 + %spec.select227 = select i1 %.not573, i32 %209, i32 %207 + %.2438 = add i32 %.1437, %spec.select227 %210 = icmp sgt i32 %.0484, %.2438 %211 = sub nsw i32 %.0484, %.2438 %212 = select i1 %210, i32 %211, i32 0 @@ -540,7 +540,8 @@ define internal fastcc i32 @vsprintf_internal(ptr noundef %0, ptr noundef readon .preheader48: ; preds = %.loopexit50 %230 = zext i8 %.2432 to i32 - %231 = sub nsw i32 0, %.4480.fr + %231 = sub i32 0, %.4480.fr + %smin = call i32 @llvm.smin.i32(i32 %204, i32 %231) br label %232 232: ; preds = %.preheader48, %247 @@ -571,9 +572,9 @@ define internal fastcc i32 @vsprintf_internal(ptr noundef %0, ptr noundef readon 245: ; preds = %237, %241 %.0426 = phi i8 [ %244, %241 ], [ 48, %237 ] - %246 = add nsw i32 %.3439, -1 - %.not581 = icmp sgt i32 %.3439, %231 - br i1 %.not581, label %247, label %251 + %246 = add i32 %.3439, -1 + %exitcond.not = icmp eq i32 %.3439, %smin + br i1 %exitcond.not, label %251, label %247 247: ; preds = %245 %248 = add nsw i32 %.13464, 1 @@ -612,7 +613,7 @@ define internal fastcc i32 @vsprintf_internal(ptr noundef %0, ptr noundef readon call void %264(ptr noundef %0, i32 noundef %265) #5 %266 = and i32 %203, 16 %267 = icmp ne i32 %266, 0 - %268 = icmp eq i32 %.3439, 0 + %268 = icmp eq i32 %smin, 0 %or.cond15 = and i1 %267, %268 br i1 %or.cond15, label %269, label %.loopexit44 @@ -837,18 +838,18 @@ define internal fastcc i32 @vsprintf_internal(ptr noundef %0, ptr noundef readon br i1 %377, label %.lr.ph, label %.loopexit57.loopexit, !llvm.loop !13 .loopexit57.loopexit: ; preds = %.lr.ph - %sext175 = shl i64 %indvars.iv.next, 32 - %.pre171 = ashr exact i64 %sext175, 32 + %sext176 = shl i64 %indvars.iv.next, 32 + %.pre172 = ashr exact i64 %sext176, 32 br label %.loopexit57 .loopexit57: ; preds = %.loopexit57.loopexit, %370 - %.pre-phi172 = phi i64 [ %.pre171, %.loopexit57.loopexit ], [ %373, %370 ] + %.pre-phi173 = phi i64 [ %.pre172, %.loopexit57.loopexit ], [ %373, %370 ] %.18 = phi i32 [ %375, %.loopexit57.loopexit ], [ %.1452.ph, %370 ] %378 = trunc i64 %.0474 to i32 %379 = add i32 %.18, %378 %380 = load ptr, ptr %10, align 8 %381 = call i32 %380(ptr noundef %0, ptr noundef nonnull %.0475, i32 noundef %378) #5 - %382 = call i64 @llvm.usub.sat.i64(i64 %.pre-phi172, i64 %.0474) + %382 = call i64 @llvm.usub.sat.i64(i64 %.pre-phi173, i64 %.0474) %383 = trunc i64 %382 to i32 br label %.loopexit44 @@ -964,9 +965,9 @@ define internal fastcc i32 @vsprintf_internal(ptr noundef %0, ptr noundef readon %or.cond23 = select i1 %443, i1 %444, i1 false %445 = icmp eq i64 %.0423, 0 %or.cond25 = and i1 %445, %or.cond23 - br i1 %or.cond25, label %.thread195, label %447 + br i1 %or.cond25, label %.thread196, label %447 -.thread195: ; preds = %438 +.thread196: ; preds = %438 %446 = and i16 %.0441, -4114 br label %560 @@ -1215,20 +1216,20 @@ define internal fastcc i32 @vsprintf_internal(ptr noundef %0, ptr noundef readon %spec.select607 = select i1 %or.cond604, i16 %559, i16 %553 br label %560 -560: ; preds = %.thread195, %556, %552, %551 - %.6194 = phi ptr [ %.6, %552 ], [ %.6, %551 ], [ %.6, %556 ], [ %.3, %.thread195 ] - %.5418191 = phi i8 [ %.5418, %552 ], [ %.5418, %551 ], [ %.5418, %556 ], [ 0, %.thread195 ] - %.2486102835188 = phi i32 [ %.2486102835, %552 ], [ %.2486102835, %551 ], [ %.2486102835, %556 ], [ %.0484, %.thread195 ] - %.2478112737186 = phi i32 [ %.2478112737, %552 ], [ %.2478112737, %551 ], [ %.2478112737, %556 ], [ 0, %.thread195 ] - %.0469 = phi i8 [ %.5418, %552 ], [ %.5418, %551 ], [ %557, %556 ], [ 0, %.thread195 ] - %.16 = phi i16 [ %553, %552 ], [ %.11, %551 ], [ %spec.select607, %556 ], [ %446, %.thread195 ] +560: ; preds = %.thread196, %556, %552, %551 + %.6195 = phi ptr [ %.6, %552 ], [ %.6, %551 ], [ %.6, %556 ], [ %.3, %.thread196 ] + %.5418192 = phi i8 [ %.5418, %552 ], [ %.5418, %551 ], [ %.5418, %556 ], [ 0, %.thread196 ] + %.2486102835189 = phi i32 [ %.2486102835, %552 ], [ %.2486102835, %551 ], [ %.2486102835, %556 ], [ %.0484, %.thread196 ] + %.2478112737187 = phi i32 [ %.2478112737, %552 ], [ %.2478112737, %551 ], [ %.2478112737, %556 ], [ 0, %.thread196 ] + %.0469 = phi i8 [ %.5418, %552 ], [ %.5418, %551 ], [ %557, %556 ], [ 0, %.thread196 ] + %.16 = phi i16 [ %553, %552 ], [ %.11, %551 ], [ %spec.select607, %556 ], [ %446, %.thread196 ] %561 = zext i16 %.16 to i32 %562 = and i32 %561, 16 %.not555 = icmp eq i32 %562, 0 br i1 %.not555, label %573, label %563 563: ; preds = %560 - %564 = zext i8 %.5418191 to i64 + %564 = zext i8 %.5418192 to i64 %565 = add nsw i64 %564, -1 %566 = getelementptr inbounds [22 x i8], ptr %4, i64 0, i64 %565 %567 = load i8, ptr %566, align 1 @@ -1237,7 +1238,7 @@ define internal fastcc i32 @vsprintf_internal(ptr noundef %0, ptr noundef readon 569: ; preds = %563 %570 = and i16 %.16, -24593 - %.pre169 = zext i16 %570 to i32 + %.pre170 = zext i16 %570 to i32 br label %576 571: ; preds = %563 @@ -1255,38 +1256,38 @@ define internal fastcc i32 @vsprintf_internal(ptr noundef %0, ptr noundef readon br label %576 576: ; preds = %573, %571, %569 - %.pre-phi170 = phi i32 [ %561, %573 ], [ %561, %571 ], [ %.pre169, %569 ] + %.pre-phi171 = phi i32 [ %561, %573 ], [ %561, %571 ], [ %.pre170, %569 ] %.1470 = phi i8 [ %spec.select606, %573 ], [ %spec.select605, %571 ], [ %.0469, %569 ] - %577 = and i32 %.pre-phi170, 8 + %577 = and i32 %.pre-phi171, 8 %578 = icmp eq i32 %577, 0 br i1 %578, label %579, label %..loopexit45_crit_edge ..loopexit45_crit_edge: ; preds = %576 - %.pre173 = zext i8 %.1470 to i32 + %.pre174 = zext i8 %.1470 to i32 br label %.loopexit45 579: ; preds = %576 - %580 = and i32 %.pre-phi170, 1 + %580 = and i32 %.pre-phi171, 1 %.not558 = icmp eq i32 %580, 0 br i1 %.not558, label %589, label %581 581: ; preds = %579 - %582 = zext i8 %.5418191 to i32 + %582 = zext i8 %.5418192 to i32 %583 = zext i8 %.1470 to i32 - %584 = icmp sgt i32 %.2486102835188, %583 + %584 = icmp sgt i32 %.2486102835189, %583 br i1 %584, label %585, label %589 585: ; preds = %581 - %586 = add nuw i32 %.2486102835188, %582 + %586 = add nuw i32 %.2486102835189, %582 %587 = sub i32 %586, %583 - %588 = trunc i32 %.2486102835188 to i8 + %588 = trunc i32 %.2486102835189 to i8 br label %589 589: ; preds = %581, %585, %579 - %.6482 = phi i32 [ %587, %585 ], [ %582, %581 ], [ %.2478112737186, %579 ] + %.6482 = phi i32 [ %587, %585 ], [ %582, %581 ], [ %.2478112737187, %579 ] %.3472 = phi i8 [ %588, %585 ], [ %.1470, %581 ], [ %.1470, %579 ] %590 = zext i8 %.3472 to i32 - %591 = icmp sgt i32 %.2486102835188, %590 + %591 = icmp sgt i32 %.2486102835189, %590 br i1 %591, label %.lr.ph104, label %.loopexit45 .lr.ph104: ; preds = %589, %.lr.ph104 @@ -1297,17 +1298,17 @@ define internal fastcc i32 @vsprintf_internal(ptr noundef %0, ptr noundef readon call void %593(ptr noundef %0, i32 noundef 32) #5 %594 = add i8 %.4473102, 1 %595 = zext i8 %594 to i32 - %596 = icmp samesign ugt i32 %.2486102835188, %595 + %596 = icmp samesign ugt i32 %.2486102835189, %595 br i1 %596, label %.lr.ph104, label %.loopexit45, !llvm.loop !14 .loopexit45: ; preds = %.lr.ph104, %..loopexit45_crit_edge, %589 - %.pre-phi174 = phi i32 [ %.pre173, %..loopexit45_crit_edge ], [ %590, %589 ], [ %595, %.lr.ph104 ] - %.5481 = phi i32 [ %.2478112737186, %..loopexit45_crit_edge ], [ %.6482, %589 ], [ %.6482, %.lr.ph104 ] + %.pre-phi175 = phi i32 [ %.pre174, %..loopexit45_crit_edge ], [ %590, %589 ], [ %595, %.lr.ph104 ] + %.5481 = phi i32 [ %.2478112737187, %..loopexit45_crit_edge ], [ %.6482, %589 ], [ %.6482, %.lr.ph104 ] %.20 = phi i32 [ %.1452.ph, %..loopexit45_crit_edge ], [ %.1452.ph, %589 ], [ %592, %.lr.ph104 ] - %597 = icmp sgt i32 %.2486102835188, %.pre-phi174 - %598 = sub nsw i32 %.2486102835188, %.pre-phi174 + %597 = icmp sgt i32 %.2486102835189, %.pre-phi175 + %598 = sub nsw i32 %.2486102835189, %.pre-phi175 %599 = select i1 %597, i32 %598, i32 0 - %600 = and i32 %.pre-phi170, 16 + %600 = and i32 %.pre-phi171, 16 %.not559 = icmp eq i32 %600, 0 br i1 %.not559, label %610, label %601 @@ -1315,28 +1316,28 @@ define internal fastcc i32 @vsprintf_internal(ptr noundef %0, ptr noundef readon %602 = add nsw i32 %.20, 1 %603 = load ptr, ptr %6, align 8 call void %603(ptr noundef %0, i32 noundef 48) #5 - %604 = and i32 %.pre-phi170, 16384 + %604 = and i32 %.pre-phi171, 16384 %.not563 = icmp eq i32 %604, 0 br i1 %.not563, label %619, label %605 605: ; preds = %601 %606 = add nsw i32 %.20, 2 %607 = load ptr, ptr %6, align 8 - %608 = and i32 %.pre-phi170, 8192 + %608 = and i32 %.pre-phi171, 8192 %.not564 = icmp eq i32 %608, 0 %609 = select i1 %.not564, i32 120, i32 88 call void %607(ptr noundef nonnull %0, i32 noundef %609) #5 br label %619 610: ; preds = %.loopexit45 - %611 = and i32 %.pre-phi170, 4102 + %611 = and i32 %.pre-phi171, 4102 %.not560 = icmp eq i32 %611, 0 br i1 %.not560, label %619, label %612 612: ; preds = %610 - %613 = and i32 %.pre-phi170, 2 + %613 = and i32 %.pre-phi171, 2 %.not561 = icmp eq i32 %613, 0 - %614 = and i32 %.pre-phi170, 4096 + %614 = and i32 %.pre-phi171, 4096 %.not562 = icmp eq i32 %614, 0 %615 = add nsw i32 %.20, 1 %616 = load ptr, ptr %6, align 8 @@ -1347,7 +1348,7 @@ define internal fastcc i32 @vsprintf_internal(ptr noundef %0, ptr noundef readon 619: ; preds = %610, %612, %601, %605 %.22 = phi i32 [ %606, %605 ], [ %602, %601 ], [ %615, %612 ], [ %.20, %610 ] - %620 = zext i8 %.5418191 to i32 + %620 = zext i8 %.5418192 to i32 %621 = icmp sgt i32 %.5481, %620 br i1 %621, label %.lr.ph109, label %.preheader @@ -1358,47 +1359,47 @@ define internal fastcc i32 @vsprintf_internal(ptr noundef %0, ptr noundef readon .preheader: ; preds = %.preheader.loopexit, %619 %.23.lcssa = phi i32 [ %.22, %619 ], [ %623, %.preheader.loopexit ] - %.not565111 = icmp eq i8 %.5418191, 0 + %.not565111 = icmp eq i8 %.5418192, 0 br i1 %.not565111, label %.loopexit44, label %.lr.ph114.preheader .lr.ph114.preheader: ; preds = %.preheader - %624 = zext i8 %.5418191 to i64 + %624 = zext i8 %.5418192 to i64 br label %.lr.ph114 .lr.ph109: ; preds = %619, %.lr.ph109 %.7483107 = phi i32 [ %626, %.lr.ph109 ], [ %.5481, %619 ] %625 = load ptr, ptr %6, align 8 call void %625(ptr noundef %0, i32 noundef 48) #5 - %626 = add nsw i32 %.7483107, -1 - %627 = icmp samesign ugt i32 %626, %620 - br i1 %627, label %.lr.ph109, label %.preheader.loopexit, !llvm.loop !15 + %626 = add i32 %.7483107, -1 + %exitcond165.not = icmp eq i32 %626, %620 + br i1 %exitcond165.not, label %.preheader.loopexit, label %.lr.ph109, !llvm.loop !15 .lr.ph114: ; preds = %.lr.ph114.preheader, %.lr.ph114 - %indvars.iv165 = phi i64 [ %624, %.lr.ph114.preheader ], [ %630, %.lr.ph114 ] - %.24112 = phi i32 [ %.23.lcssa, %.lr.ph114.preheader ], [ %628, %.lr.ph114 ] - %628 = add nsw i32 %.24112, 1 - %629 = load ptr, ptr %6, align 8 - %630 = add nsw i64 %indvars.iv165, -1 - %631 = getelementptr inbounds nuw [22 x i8], ptr %4, i64 0, i64 %630 - %632 = load i8, ptr %631, align 1 - %633 = sext i8 %632 to i32 - call void %629(ptr noundef %0, i32 noundef %633) #5 - %.not565.wide = icmp eq i64 %630, 0 + %indvars.iv166 = phi i64 [ %624, %.lr.ph114.preheader ], [ %629, %.lr.ph114 ] + %.24112 = phi i32 [ %.23.lcssa, %.lr.ph114.preheader ], [ %627, %.lr.ph114 ] + %627 = add nsw i32 %.24112, 1 + %628 = load ptr, ptr %6, align 8 + %629 = add nsw i64 %indvars.iv166, -1 + %630 = getelementptr inbounds nuw [22 x i8], ptr %4, i64 0, i64 %629 + %631 = load i8, ptr %630, align 1 + %632 = sext i8 %631 to i32 + call void %628(ptr noundef %0, i32 noundef %632) #5 + %.not565.wide = icmp eq i64 %629, 0 br i1 %.not565.wide, label %.loopexit44, label %.lr.ph114, !llvm.loop !16 .loopexit44: ; preds = %171, %.lr.ph100, %.lr.ph114, %166, %324, %.preheader, %269, %262, %.loopexit57 %.5489 = phi i32 [ %.8492, %269 ], [ %.8492, %262 ], [ %383, %.loopexit57 ], [ %599, %.preheader ], [ %.8492, %324 ], [ %.4488, %166 ], [ %599, %.lr.ph114 ], [ %.8492, %.lr.ph100 ], [ %.4488, %171 ] - %.6457 = phi i32 [ %270, %269 ], [ %263, %262 ], [ %379, %.loopexit57 ], [ %.23.lcssa, %.preheader ], [ %.16467, %324 ], [ %.4455, %166 ], [ %628, %.lr.ph114 ], [ %327, %.lr.ph100 ], [ %174, %171 ] - %.5 = phi ptr [ %.3, %269 ], [ %.3, %262 ], [ %.3, %.loopexit57 ], [ %.6194, %.preheader ], [ %.3, %324 ], [ %.3, %166 ], [ %.6194, %.lr.ph114 ], [ %.3, %.lr.ph100 ], [ %.3, %171 ] + %.6457 = phi i32 [ %270, %269 ], [ %263, %262 ], [ %379, %.loopexit57 ], [ %.23.lcssa, %.preheader ], [ %.16467, %324 ], [ %.4455, %166 ], [ %627, %.lr.ph114 ], [ %327, %.lr.ph100 ], [ %174, %171 ] + %.5 = phi ptr [ %.3, %269 ], [ %.3, %262 ], [ %.3, %.loopexit57 ], [ %.6195, %.preheader ], [ %.3, %324 ], [ %.3, %166 ], [ %.6195, %.lr.ph114 ], [ %.3, %.lr.ph100 ], [ %.3, %171 ] %.not588116 = icmp eq i32 %.5489, 0 br i1 %.not588116, label %.backedge.outer.backedge, label %.lr.ph119 .lr.ph119: ; preds = %.loopexit44, %.lr.ph119 - %.12496117 = phi i32 [ %635, %.lr.ph119 ], [ %.5489, %.loopexit44 ] - %634 = load ptr, ptr %6, align 8 - call void %634(ptr noundef %0, i32 noundef 32) #5 - %635 = add nsw i32 %.12496117, -1 - %.not588 = icmp eq i32 %635, 0 + %.12496117 = phi i32 [ %634, %.lr.ph119 ], [ %.5489, %.loopexit44 ] + %633 = load ptr, ptr %6, align 8 + call void %633(ptr noundef %0, i32 noundef 32) #5 + %634 = add nsw i32 %.12496117, -1 + %.not588 = icmp eq i32 %634, 0 br i1 %.not588, label %.backedge.loopexit, label %.lr.ph119, !llvm.loop !17 .loopexit59: ; preds = %.backedge, %81 @@ -1448,6 +1449,9 @@ declare i8 @llvm.umin.i8(i8, i8) #4 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i64 @llvm.abs.i64(i64, i1 immarg) #4 +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare i32 @llvm.smin.i32(i32, i32) #4 + attributes #0 = { nounwind uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+rdrnd,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+rdrnd,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #2 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: read) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+rdrnd,+sse,+sse2,+x87" "tune-cpu"="generic" } diff --git a/bench/ocio/optimized/Lut1DOpData.ll b/bench/ocio/optimized/Lut1DOpData.ll index a15aaf2a151..e37b2a53f8f 100644 --- a/bench/ocio/optimized/Lut1DOpData.ll +++ b/bench/ocio/optimized/Lut1DOpData.ll @@ -3788,10 +3788,10 @@ define hidden void @_ZN19OpenColorIO_v2_5dev11Lut1DOpData21initializeFromForward ._crit_edge224: ; preds = %.critedge2 %20 = icmp eq i64 %10, 1 - br i1 %20, label %95, label %._crit_edge224.thread + br i1 %20, label %94, label %._crit_edge224.thread 21: ; preds = %.lr.ph223, %.critedge2 - %.0221 = phi i64 [ 0, %.lr.ph223 ], [ %94, %.critedge2 ] + %.0221 = phi i64 [ 0, %.lr.ph223 ], [ %93, %.critedge2 ] %22 = add i64 %.0221, %13 %23 = add i64 %.0221, 46080 %.0172 = select i1 %.not190, i64 %22, i64 %23 @@ -3964,60 +3964,59 @@ define hidden void @_ZN19OpenColorIO_v2_5dev11Lut1DOpData21initializeFromForward %79 = load float, ptr %gep228, align 4, !tbaa !13 br label %80 -80: ; preds = %82, %.critedge6 - %.0169 = phi i64 [ 64511, %.critedge6 ], [ %83, %82 ] - %81 = icmp ugt i64 %.0169, 32768 - br i1 %81, label %82, label %.critedge8 +80: ; preds = %81, %.critedge6 + %.0169 = phi i64 [ 64511, %.critedge6 ], [ %82, %81 ] + %exitcond234.not = icmp eq i64 %.0169, 32768 + br i1 %exitcond234.not, label %.critedge8, label %81 -82: ; preds = %80 - %83 = add nsw i64 %.0169, -1 - %.idx194 = mul nuw nsw i64 %83, 12 +81: ; preds = %80 + %82 = add nsw i64 %.0169, -1 + %.idx194 = mul nuw nsw i64 %82, 12 %gep214 = getelementptr i8, ptr %24, i64 %.idx194 - %84 = load float, ptr %gep214, align 4, !tbaa !13 - %85 = fcmp oeq float %84, %79 - br i1 %85, label %80, label %.critedge8, !llvm.loop !152 + %83 = load float, ptr %gep214, align 4, !tbaa !13 + %84 = fcmp oeq float %83, %79 + br i1 %84, label %80, label %.critedge8, !llvm.loop !152 -.critedge8: ; preds = %80, %82 - %.0169.lcssa = phi i64 [ 32768, %80 ], [ %.0169, %82 ] +.critedge8: ; preds = %80, %81 %gep230 = getelementptr float, ptr %invariant.gep229, i64 %.0221 - %86 = load float, ptr %gep230, align 4, !tbaa !13 - br label %87 + %85 = load float, ptr %gep230, align 4, !tbaa !13 + br label %86 -87: ; preds = %88, %.critedge8 - %.0168 = phi i64 [ 32768, %.critedge8 ], [ %89, %88 ] +86: ; preds = %87, %.critedge8 + %.0168 = phi i64 [ 32768, %.critedge8 ], [ %88, %87 ] %exitcond235.not = icmp eq i64 %.0168, %.0169 - br i1 %exitcond235.not, label %.critedge2, label %88 + br i1 %exitcond235.not, label %.critedge2, label %87 -88: ; preds = %87 - %89 = add nuw nsw i64 %.0168, 1 - %.idx195 = mul nuw nsw i64 %89, 12 +87: ; preds = %86 + %88 = add nuw nsw i64 %.0168, 1 + %.idx195 = mul nuw nsw i64 %88, 12 %gep216 = getelementptr i8, ptr %24, i64 %.idx195 - %90 = load float, ptr %gep216, align 4, !tbaa !13 - %91 = fcmp oeq float %90, %86 - br i1 %91, label %87, label %.critedge2, !llvm.loop !153 - -.critedge2: ; preds = %88, %87, %60, %59 - %.sink242 = phi i64 [ 8, %59 ], [ 8, %60 ], [ 24, %87 ], [ 24, %88 ] - %.0168.lcssa.sink = phi i64 [ %.0174, %60 ], [ %.0176, %59 ], [ %.0168, %88 ], [ %.0169, %87 ] - %.sink241 = phi i64 [ 16, %59 ], [ 16, %60 ], [ 32, %87 ], [ 32, %88 ] - %.0169.lcssa.sink = phi i64 [ %.0176, %59 ], [ %.0176, %60 ], [ %.0169.lcssa, %87 ], [ %.0169.lcssa, %88 ] - %92 = getelementptr inbounds nuw i8, ptr %29, i64 %.sink242 - store i64 %.0168.lcssa.sink, ptr %92, align 8, !tbaa !154 - %93 = getelementptr inbounds nuw i8, ptr %29, i64 %.sink241 - store i64 %.0169.lcssa.sink, ptr %93, align 8, !tbaa !154 - %94 = add nuw i64 %.0221, 1 - %exitcond238.not = icmp eq i64 %94, %10 + %89 = load float, ptr %gep216, align 4, !tbaa !13 + %90 = fcmp oeq float %89, %85 + br i1 %90, label %86, label %.critedge2, !llvm.loop !153 + +.critedge2: ; preds = %87, %86, %60, %59 + %.sink241 = phi i64 [ 8, %59 ], [ 8, %60 ], [ 24, %86 ], [ 24, %87 ] + %.0168.lcssa.sink = phi i64 [ %.0174, %60 ], [ %.0176, %59 ], [ %.0168, %87 ], [ %.0169, %86 ] + %.sink240 = phi i64 [ 16, %59 ], [ 16, %60 ], [ 32, %86 ], [ 32, %87 ] + %.0169.lcssa.sink = phi i64 [ %.0176, %59 ], [ %.0176, %60 ], [ %.0169, %86 ], [ %.0169, %87 ] + %91 = getelementptr inbounds nuw i8, ptr %29, i64 %.sink241 + store i64 %.0168.lcssa.sink, ptr %91, align 8, !tbaa !154 + %92 = getelementptr inbounds nuw i8, ptr %29, i64 %.sink240 + store i64 %.0169.lcssa.sink, ptr %92, align 8, !tbaa !154 + %93 = add nuw i64 %.0221, 1 + %exitcond238.not = icmp eq i64 %93, %10 br i1 %exitcond238.not, label %._crit_edge224, label %21, !llvm.loop !155 -95: ; preds = %._crit_edge224 - %96 = getelementptr inbounds nuw i8, ptr %0, i64 240 - %97 = getelementptr inbounds nuw i8, ptr %0, i64 280 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %97, ptr noundef nonnull align 8 dereferenceable(40) %96, i64 40, i1 false), !tbaa.struct !156 - %98 = getelementptr inbounds nuw i8, ptr %0, i64 320 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %98, ptr noundef nonnull align 8 dereferenceable(40) %96, i64 40, i1 false) +94: ; preds = %._crit_edge224 + %95 = getelementptr inbounds nuw i8, ptr %0, i64 240 + %96 = getelementptr inbounds nuw i8, ptr %0, i64 280 + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %96, ptr noundef nonnull align 8 dereferenceable(40) %95, i64 40, i1 false), !tbaa.struct !156 + %97 = getelementptr inbounds nuw i8, ptr %0, i64 320 + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %97, ptr noundef nonnull align 8 dereferenceable(40) %95, i64 40, i1 false) br label %._crit_edge224.thread -._crit_edge224.thread: ; preds = %1, %95, %._crit_edge224 +._crit_edge224.thread: ; preds = %1, %94, %._crit_edge224 ret void } diff --git a/bench/ocio/optimized/Lut3DOpCPU.ll b/bench/ocio/optimized/Lut3DOpCPU.ll index 4ee7406cfc4..323ceaeaf91 100644 --- a/bench/ocio/optimized/Lut3DOpCPU.ll +++ b/bench/ocio/optimized/Lut3DOpCPU.ll @@ -1894,7 +1894,7 @@ define internal void @_ZNK19OpenColorIO_v2_5dev12_GLOBAL__N_116InvLut3DRenderer5 224: ; preds = %.preheader361.i %225 = icmp ult i64 %spec.select.i, 2 %226 = add i64 %spec.select.i, -1 - br i1 %225, label %234, label %._crit_edge458.i + br i1 %225, label %234, label %._crit_edge459.i .preheader361.i: ; preds = %.preheader361.i.preheader, %.preheader361.i %.0294380.i = phi i64 [ %233, %.preheader361.i ], [ 0, %.preheader361.i.preheader ] @@ -1919,14 +1919,14 @@ define internal void @_ZNK19OpenColorIO_v2_5dev12_GLOBAL__N_116InvLut3DRenderer5 238: ; preds = %.critedge.i, %234 store i64 %236, ptr %80, align 8, !tbaa !110 - br label %._crit_edge458.i + br label %._crit_edge459.i .critedge.i: ; preds = %234 %239 = load i64, ptr %80, align 8, !tbaa !110 store i64 %239, ptr %6, align 16, !tbaa !110 br label %238 -._crit_edge458.i: ; preds = %238, %224 +._crit_edge459.i: ; preds = %238, %224 %240 = icmp ult i64 %226, 2 br i1 %240, label %.lr.ph384.preheader.i, label %._crit_edge418.i @@ -1934,14 +1934,14 @@ define internal void @_ZNK19OpenColorIO_v2_5dev12_GLOBAL__N_116InvLut3DRenderer5 %241 = icmp eq i64 %.0291413.i, 0 br i1 %241, label %.lr.ph384.preheader.i, label %._crit_edge418.i, !llvm.loop !127 -._crit_edge418.i: ; preds = %.loopexit357.i, %._crit_edge458.i - %.2261.lcssa.i = phi i64 [ %.1260.i, %._crit_edge458.i ], [ %.4263.i, %.loopexit357.i ] +._crit_edge418.i: ; preds = %.loopexit357.i, %._crit_edge459.i + %.2261.lcssa.i = phi i64 [ %.1260.i, %._crit_edge459.i ], [ %.4263.i, %.loopexit357.i ] %.not.i = icmp eq i64 %.0251.i, 0 br i1 %.not.i, label %.thread336.i, label %.preheader360.i -.lr.ph384.preheader.i: ; preds = %._crit_edge458.i, %.loopexit357.i - %.2261415.i = phi i64 [ %.4263.i, %.loopexit357.i ], [ %.1260.i, %._crit_edge458.i ] - %.0291413.i = phi i64 [ 1, %.loopexit357.i ], [ %226, %._crit_edge458.i ] +.lr.ph384.preheader.i: ; preds = %._crit_edge459.i, %.loopexit357.i + %.2261415.i = phi i64 [ %.4263.i, %.loopexit357.i ], [ %.1260.i, %._crit_edge459.i ] + %.0291413.i = phi i64 [ 1, %.loopexit357.i ], [ %226, %._crit_edge459.i ] %242 = add nuw nsw i64 %.0291413.i, 1 %243 = getelementptr inbounds nuw [4 x i64], ptr %5, i64 0, i64 %.0291413.i %244 = load i64, ptr %243, align 8, !tbaa !110 @@ -2144,8 +2144,8 @@ define internal void @_ZNK19OpenColorIO_v2_5dev12_GLOBAL__N_116InvLut3DRenderer5 %341 = getelementptr inbounds nuw [4 x double], ptr %12, i64 0, i64 %.0252426.i store double %.sink.i, ptr %341, align 8, !tbaa !118 %342 = add nsw i64 %.0252426.i, -1 - %.not459.i = icmp eq i64 %.0252426.i, 0 - br i1 %.not459.i, label %.preheader354.i, label %.preheader360.i, !llvm.loop !134 + %exitcond454.not.i = icmp eq i64 %.0252426.i, 0 + br i1 %exitcond454.not.i, label %.preheader354.i, label %.preheader360.i, !llvm.loop !134 343: ; preds = %.preheader354.i %344 = mul nuw nsw i64 %.0290428.i, 3 @@ -2167,8 +2167,8 @@ define internal void @_ZNK19OpenColorIO_v2_5dev12_GLOBAL__N_116InvLut3DRenderer5 %354 = getelementptr inbounds nuw [4 x double], ptr %15, i64 0, i64 %353 store double %351, ptr %354, align 8, !tbaa !118 %355 = add nuw nsw i64 %.0247432.i, 1 - %exitcond455.not.i = icmp eq i64 %355, 3 - br i1 %exitcond455.not.i, label %343, label %.preheader354.i, !llvm.loop !135 + %exitcond456.not.i = icmp eq i64 %355, 3 + br i1 %exitcond456.not.i, label %343, label %.preheader354.i, !llvm.loop !135 356: ; preds = %356, %343 %.0245434.i = phi i64 [ 1, %343 ], [ %372, %356 ] @@ -2190,14 +2190,14 @@ define internal void @_ZNK19OpenColorIO_v2_5dev12_GLOBAL__N_116InvLut3DRenderer5 store float %368, ptr %370, align 4, !tbaa !99 %371 = add nsw i64 %.0246433.i, -1 %372 = add nuw nsw i64 %.0245434.i, 1 - %exitcond456.not.i = icmp eq i64 %372, 3 - br i1 %exitcond456.not.i, label %.preheader.i.preheader, label %356, !llvm.loop !136 + %exitcond457.not.i = icmp eq i64 %372, 3 + br i1 %exitcond457.not.i, label %.preheader.i.preheader, label %356, !llvm.loop !136 .thread336.i: ; preds = %._crit_edge423.i, %320, %._crit_edge418.i %.8.ph.i = phi i64 [ %.0255431.i, %._crit_edge418.i ], [ 1, %320 ], [ 1, %._crit_edge423.i ] %373 = add nuw nsw i64 %.0290428.i, 1 - %exitcond454.not.i = icmp eq i64 %373, 8 - br i1 %exitcond454.not.i, label %.thread347.i, label %.preheader365.i, !llvm.loop !137 + %exitcond455.not.i = icmp eq i64 %373, 8 + br i1 %exitcond455.not.i, label %.thread347.i, label %.preheader365.i, !llvm.loop !137 .thread347.i: ; preds = %.thread336.i %374 = icmp eq i64 %.8.ph.i, 0 @@ -2216,8 +2216,8 @@ define internal void @_ZNK19OpenColorIO_v2_5dev12_GLOBAL__N_116InvLut3DRenderer5 %380 = fadd float %379, %377 store float %380, ptr %378, align 4, !tbaa !99 %381 = add nuw nsw i64 %.0435.i, 1 - %exitcond457.not.i = icmp eq i64 %381, 3 - br i1 %exitcond457.not.i, label %.thread, label %.preheader.i, !llvm.loop !138 + %exitcond458.not.i = icmp eq i64 %381, 3 + br i1 %exitcond458.not.i, label %.thread, label %.preheader.i, !llvm.loop !138 .thread: ; preds = %.preheader.i call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16) #28 @@ -3329,7 +3329,7 @@ _ZN19OpenColorIO_v2_5dev12_GLOBAL__N_116InvLut3DRenderer9RangeTree10indsToHashEm call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %6) #28 %437 = add nuw i64 %.059160.us.i, 1 %exitcond202.not.i = icmp eq i64 %437, %433 - br i1 %exitcond202.not.i, label %._crit_edge162.thread207.i, label %_ZN19OpenColorIO_v2_5dev12_GLOBAL__N_116InvLut3DRenderer9RangeTree10indsToHashEm.exit.us.i, !llvm.loop !188 + br i1 %exitcond202.not.i, label %._crit_edge162.thread208.i, label %_ZN19OpenColorIO_v2_5dev12_GLOBAL__N_116InvLut3DRenderer9RangeTree10indsToHashEm.exit.us.i, !llvm.loop !188 438: ; preds = %438, %.lr.ph158.i %439 = phi i64 [ %383, %.lr.ph158.i ], [ %450, %438 ] @@ -3349,7 +3349,7 @@ _ZN19OpenColorIO_v2_5dev12_GLOBAL__N_116InvLut3DRenderer9RangeTree10indsToHashEm %451 = icmp ult i64 %449, %450 br i1 %451, label %438, label %._crit_edge159.i, !llvm.loop !189 -._crit_edge162.thread207.i: ; preds = %_ZN19OpenColorIO_v2_5dev12_GLOBAL__N_116InvLut3DRenderer9RangeTree10indsToHashEm.exit.loopexit.i, %_ZN19OpenColorIO_v2_5dev12_GLOBAL__N_116InvLut3DRenderer9RangeTree10indsToHashEm.exit.us.i +._crit_edge162.thread208.i: ; preds = %_ZN19OpenColorIO_v2_5dev12_GLOBAL__N_116InvLut3DRenderer9RangeTree10indsToHashEm.exit.loopexit.i, %_ZN19OpenColorIO_v2_5dev12_GLOBAL__N_116InvLut3DRenderer9RangeTree10indsToHashEm.exit.us.i %452 = call range(i64 0, 65) i64 @llvm.ctlz.i64(i64 %433, i1 true) %453 = shl nuw nsw i64 %452, 1 %454 = xor i64 %453, 126 @@ -3357,7 +3357,7 @@ _ZN19OpenColorIO_v2_5dev12_GLOBAL__N_116InvLut3DRenderer9RangeTree10indsToHashEm %455 = icmp sgt i64 %432, 512 br i1 %455, label %.lr.ph.i.i.i.i.i, label %.preheader.i21.i.i.i.i -.lr.ph.i.i.i.i.i: ; preds = %._crit_edge162.thread207.i +.lr.ph.i.i.i.i.i: ; preds = %._crit_edge162.thread208.i %456 = getelementptr i8, ptr %.val72.i, i64 24 %scevgep.i.i.i.i = getelementptr i8, ptr %.val72.i, i64 32 br label %457 @@ -3445,7 +3445,7 @@ _ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPN19OpenColorIO_v %.not.i15.i.i.i.i = icmp eq ptr %471, %.val73.i br i1 %.not.i15.i.i.i.i, label %_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN19OpenColorIO_v2_5dev12_GLOBAL__N_116InvLut3DRenderer7baseIndESt6vectorIS5_SaIS5_EEEEEvT_SB_.exit.i, label %.lr.ph.i10.i.i.i.i, !llvm.loop !193 -.preheader.i21.i.i.i.i: ; preds = %._crit_edge162.thread207.i +.preheader.i21.i.i.i.i: ; preds = %._crit_edge162.thread208.i %.sroa.0.016.i22.i.i.i.i = getelementptr inbounds nuw i8, ptr %.val72.i, i64 32 %.not17.i23.i.i.i.i = icmp eq ptr %.sroa.0.016.i22.i.i.i.i, %.val73.i br i1 %.not17.i23.i.i.i.i, label %_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN19OpenColorIO_v2_5dev12_GLOBAL__N_116InvLut3DRenderer7baseIndESt6vectorIS5_SaIS5_EEEEEvT_SB_.exit.i, label %.lr.ph.i24.i.i.i.i @@ -3593,7 +3593,7 @@ _ZN19OpenColorIO_v2_5dev12_GLOBAL__N_116InvLut3DRenderer9RangeTree10indsToHashEm call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %6) #28 %521 = add nuw i64 %.059160.i, 1 %exitcond200.not.i = icmp eq i64 %521, %433 - br i1 %exitcond200.not.i, label %._crit_edge162.thread207.i, label %.lr.ph26.i.i, !llvm.loop !188 + br i1 %exitcond200.not.i, label %._crit_edge162.thread208.i, label %.lr.ph26.i.i, !llvm.loop !188 _ZNSt6vectorImSaImEEC2EmRKS0_.exit.i: ; preds = %_ZSt6fill_nIPmmmET_S1_T0_RKT1_.exit.loopexit.i.i.i.i.i.i, %.noexc80.i %.0.i.i.i.i.i.i = phi ptr [ %492, %.noexc80.i ], [ %496, %_ZSt6fill_nIPmmmET_S1_T0_RKT1_.exit.loopexit.i.i.i.i.i.i ] @@ -3608,9 +3608,9 @@ _ZNSt6vectorImSaImEEC2EmRKS0_.exit.i: ; preds = %_ZSt6fill_nIPmmmET_ ._crit_edge165.i: ; preds = %._crit_edge165.i.loopexit, %_ZN19OpenColorIO_v2_5dev12_GLOBAL__N_116InvLut3DRenderer9RangeTree8initIndsEv.exit.i %522 = phi i64 [ %.pre37, %_ZN19OpenColorIO_v2_5dev12_GLOBAL__N_116InvLut3DRenderer9RangeTree8initIndsEv.exit.i ], [ %.pre36, %._crit_edge165.i.loopexit ] %523 = phi i64 [ %.pre35, %_ZN19OpenColorIO_v2_5dev12_GLOBAL__N_116InvLut3DRenderer9RangeTree8initIndsEv.exit.i ], [ %.pre, %._crit_edge165.i.loopexit ] - %.0.i.i.i.i.i213.i = phi ptr [ null, %_ZN19OpenColorIO_v2_5dev12_GLOBAL__N_116InvLut3DRenderer9RangeTree8initIndsEv.exit.i ], [ %.0.i.i.i.i.i.i, %._crit_edge165.i.loopexit ] - %.sroa.22.3212.i = phi ptr [ null, %_ZN19OpenColorIO_v2_5dev12_GLOBAL__N_116InvLut3DRenderer9RangeTree8initIndsEv.exit.i ], [ %491, %._crit_edge165.i.loopexit ] - %.sroa.0113.3211.i = phi ptr [ null, %_ZN19OpenColorIO_v2_5dev12_GLOBAL__N_116InvLut3DRenderer9RangeTree8initIndsEv.exit.i ], [ %490, %._crit_edge165.i.loopexit ] + %.0.i.i.i.i.i214.i = phi ptr [ null, %_ZN19OpenColorIO_v2_5dev12_GLOBAL__N_116InvLut3DRenderer9RangeTree8initIndsEv.exit.i ], [ %.0.i.i.i.i.i.i, %._crit_edge165.i.loopexit ] + %.sroa.22.3213.i = phi ptr [ null, %_ZN19OpenColorIO_v2_5dev12_GLOBAL__N_116InvLut3DRenderer9RangeTree8initIndsEv.exit.i ], [ %491, %._crit_edge165.i.loopexit ] + %.sroa.0113.3212.i = phi ptr [ null, %_ZN19OpenColorIO_v2_5dev12_GLOBAL__N_116InvLut3DRenderer9RangeTree8initIndsEv.exit.i ], [ %490, %._crit_edge165.i.loopexit ] %524 = add i64 %523, -1 %.val60.i.i = load ptr, ptr %248, align 8, !tbaa !106 %525 = getelementptr inbounds nuw %"struct.OpenColorIO_v2_5dev::(anonymous namespace)::InvLut3DRenderer::treeLevel", ptr %.val60.i.i, i64 %524 @@ -3865,8 +3865,8 @@ _ZNSt6vectorIfSaIfEE6resizeEm.exit65.i.i: ; preds = %560, %558, %556, %. br label %.lr.ph175.i ._crit_edge176.i: ; preds = %_ZN19OpenColorIO_v2_5dev12_GLOBAL__N_116InvLut3DRenderer9RangeTree12updateRangesEm.exit.i, %.loopexit135.i - %.sroa.0113.0.lcssa.i = phi ptr [ %.sroa.0113.3211.i, %.loopexit135.i ], [ %.sroa.0113.4.i, %_ZN19OpenColorIO_v2_5dev12_GLOBAL__N_116InvLut3DRenderer9RangeTree12updateRangesEm.exit.i ] - %.sroa.22.0.lcssa.i = phi ptr [ %.sroa.22.3212.i, %.loopexit135.i ], [ %.sroa.22.4.i, %_ZN19OpenColorIO_v2_5dev12_GLOBAL__N_116InvLut3DRenderer9RangeTree12updateRangesEm.exit.i ] + %.sroa.0113.0.lcssa.i = phi ptr [ %.sroa.0113.3212.i, %.loopexit135.i ], [ %.sroa.0113.4.i, %_ZN19OpenColorIO_v2_5dev12_GLOBAL__N_116InvLut3DRenderer9RangeTree12updateRangesEm.exit.i ] + %.sroa.22.0.lcssa.i = phi ptr [ %.sroa.22.3213.i, %.loopexit135.i ], [ %.sroa.22.4.i, %_ZN19OpenColorIO_v2_5dev12_GLOBAL__N_116InvLut3DRenderer9RangeTree12updateRangesEm.exit.i ] %.not.i.i.i90.i = icmp eq ptr %.sroa.0113.0.lcssa.i, null br i1 %.not.i.i.i90.i, label %_ZN19OpenColorIO_v2_5dev12_GLOBAL__N_116InvLut3DRenderer9RangeTree10initializeEPfm.exit, label %641 @@ -3884,9 +3884,9 @@ _ZNSt6vectorIfSaIfEE6resizeEm.exit65.i.i: ; preds = %560, %558, %556, %. .lr.ph175.i: ; preds = %_ZN19OpenColorIO_v2_5dev12_GLOBAL__N_116InvLut3DRenderer9RangeTree12updateRangesEm.exit.i, %.lr.ph175.preheader.i %indvars.iv.i = phi i64 [ %640, %.lr.ph175.preheader.i ], [ %indvars.iv.next.i, %_ZN19OpenColorIO_v2_5dev12_GLOBAL__N_116InvLut3DRenderer9RangeTree12updateRangesEm.exit.i ] - %.sroa.22.0172.i = phi ptr [ %.sroa.22.3212.i, %.lr.ph175.preheader.i ], [ %.sroa.22.4.i, %_ZN19OpenColorIO_v2_5dev12_GLOBAL__N_116InvLut3DRenderer9RangeTree12updateRangesEm.exit.i ] - %.sroa.15.0171.i = phi ptr [ %.0.i.i.i.i.i213.i, %.lr.ph175.preheader.i ], [ %.sroa.15.1.i, %_ZN19OpenColorIO_v2_5dev12_GLOBAL__N_116InvLut3DRenderer9RangeTree12updateRangesEm.exit.i ] - %.sroa.0113.0170.i = phi ptr [ %.sroa.0113.3211.i, %.lr.ph175.preheader.i ], [ %.sroa.0113.4.i, %_ZN19OpenColorIO_v2_5dev12_GLOBAL__N_116InvLut3DRenderer9RangeTree12updateRangesEm.exit.i ] + %.sroa.22.0172.i = phi ptr [ %.sroa.22.3213.i, %.lr.ph175.preheader.i ], [ %.sroa.22.4.i, %_ZN19OpenColorIO_v2_5dev12_GLOBAL__N_116InvLut3DRenderer9RangeTree12updateRangesEm.exit.i ] + %.sroa.15.0171.i = phi ptr [ %.0.i.i.i.i.i214.i, %.lr.ph175.preheader.i ], [ %.sroa.15.1.i, %_ZN19OpenColorIO_v2_5dev12_GLOBAL__N_116InvLut3DRenderer9RangeTree12updateRangesEm.exit.i ] + %.sroa.0113.0170.i = phi ptr [ %.sroa.0113.3212.i, %.lr.ph175.preheader.i ], [ %.sroa.0113.4.i, %_ZN19OpenColorIO_v2_5dev12_GLOBAL__N_116InvLut3DRenderer9RangeTree12updateRangesEm.exit.i ] %.val47.i.i = load ptr, ptr %248, align 8, !tbaa !106 %647 = getelementptr inbounds nuw %"struct.OpenColorIO_v2_5dev::(anonymous namespace)::InvLut3DRenderer::treeLevel", ptr %.val47.i.i, i64 %indvars.iv.i %648 = load i64, ptr %647, align 8, !tbaa !174 @@ -4385,8 +4385,9 @@ _ZNSt6vectorIfSaIfEE6resizeEm.exit79.i.i: ; preds = %808, %806, %804, %8 _ZN19OpenColorIO_v2_5dev12_GLOBAL__N_116InvLut3DRenderer9RangeTree12updateRangesEm.exit.i: ; preds = %._crit_edge.split.us.us.i.i, %..preheader_crit_edge.us.us.i.i, %.lr.ph87.split.i.i, %.lr.ph87.split.us.i.i, %_ZNSt6vectorIfSaIfEE6resizeEm.exit79.i.i %indvars.iv.next.i = add nsw i64 %indvars.iv.i, -1 - %883 = icmp sgt i64 %indvars.iv.i, 0 - br i1 %883, label %.lr.ph175.i, label %._crit_edge176.i, !llvm.loop !209 + %883 = and i64 %indvars.iv.next.i, 4294967295 + %exitcond207.not.i = icmp eq i64 %883, 4294967295 + br i1 %exitcond207.not.i, label %._crit_edge176.i, label %.lr.ph175.i, !llvm.loop !209 .loopexit134.i: ; preds = %802, %786, %_ZNKSt6vectorImSaImEE12_M_check_lenEmPKc.exit.i.i %.sroa.0113.2.ph.i = phi ptr [ %.sroa.0113.0170.i, %_ZNKSt6vectorImSaImEE12_M_check_lenEmPKc.exit.i.i ], [ %.sroa.0113.4.i, %786 ], [ %.sroa.0113.4.i, %802 ] @@ -4401,8 +4402,8 @@ _ZN19OpenColorIO_v2_5dev12_GLOBAL__N_116InvLut3DRenderer9RangeTree12updateRanges br label %.body.i .body.i: ; preds = %.loopexit.split-lp.i, %.loopexit134.i, %761, %645, %578 - %.sroa.0113.1.i = phi ptr [ %.sroa.0113.0170.i, %761 ], [ %.sroa.0113.3211.i, %578 ], [ %.sroa.0113.3211.i, %645 ], [ %.sroa.0113.2.ph.i, %.loopexit134.i ], [ %.sroa.0113.0170.i, %.loopexit.split-lp.i ] - %.sroa.22.1.i = phi ptr [ %.sroa.22.0172.i, %761 ], [ %.sroa.22.3212.i, %578 ], [ %.sroa.22.3212.i, %645 ], [ %.sroa.22.2.ph.i, %.loopexit134.i ], [ %.sroa.22.0172.i, %.loopexit.split-lp.i ] + %.sroa.0113.1.i = phi ptr [ %.sroa.0113.0170.i, %761 ], [ %.sroa.0113.3212.i, %578 ], [ %.sroa.0113.3212.i, %645 ], [ %.sroa.0113.2.ph.i, %.loopexit134.i ], [ %.sroa.0113.0170.i, %.loopexit.split-lp.i ] + %.sroa.22.1.i = phi ptr [ %.sroa.22.0172.i, %761 ], [ %.sroa.22.3213.i, %578 ], [ %.sroa.22.3213.i, %645 ], [ %.sroa.22.2.ph.i, %.loopexit134.i ], [ %.sroa.22.0172.i, %.loopexit.split-lp.i ] %.pn.pn.i = phi { ptr, i32 } [ %762, %761 ], [ %579, %578 ], [ %646, %645 ], [ %lpad.loopexit.i, %.loopexit134.i ], [ %lpad.loopexit.split-lp.i, %.loopexit.split-lp.i ] %.not.i.i.i108.i = icmp eq ptr %.sroa.0113.1.i, null br i1 %.not.i.i.i108.i, label %common.resume, label %884 diff --git a/bench/ockam-rs/optimized/2m830wtqeyaos7wt.ll b/bench/ockam-rs/optimized/2m830wtqeyaos7wt.ll index 17fb5e02440..39a260e446b 100644 --- a/bench/ockam-rs/optimized/2m830wtqeyaos7wt.ll +++ b/bench/ockam-rs/optimized/2m830wtqeyaos7wt.ll @@ -3400,17 +3400,17 @@ common.ret: ; preds = %1857, %214, %179 br i1 %.not27.i.i.i.i.i, label %.thread.i, label %.critedge.backedge.us.i.i.i.i.i "_ZN4core4iter6traits8iterator8Iterator3any5check28_$u7b$$u7b$closure$u7d$$u7d$17hb866b7a39af0a25eE.exit.us.i.i.i.i.i": ; preds = %.critedge.backedge.us.i.i.i.i.i - %705 = getelementptr inbounds nuw i8, ptr %.pn.i.i.i.i, i64 1 - %bcmp.i.i.i.us.i.i.i.i.i = call i32 @bcmp(ptr noundef nonnull readonly align 1 dereferenceable(1) %705, ptr noundef nonnull readonly align 1 dereferenceable(1) %585, i64 range(i64 2, 33) %587), !alias.scope !550, !noalias !554 + %705 = add i64 %.in.i.i.i.i, -1 + %706 = getelementptr inbounds nuw i8, ptr %.pn.i.i.i.i, i64 1 + %bcmp.i.i.i.us.i.i.i.i.i = call i32 @bcmp(ptr noundef nonnull readonly align 1 dereferenceable(1) %706, ptr noundef nonnull readonly align 1 dereferenceable(1) %585, i64 range(i64 2, 33) %587), !alias.scope !550, !noalias !554 %.not29.i.i.i.i.i = icmp eq i32 %bcmp.i.i.i.us.i.i.i.i.i, 0 br i1 %.not29.i.i.i.i.i, label %.thread.i, label %.critedge.backedge.us.i.i.i.i.i .critedge.backedge.us.i.i.i.i.i: ; preds = %.lr.ph.split.us.i.i.i.i.i, %"_ZN4core4iter6traits8iterator8Iterator3any5check28_$u7b$$u7b$closure$u7d$$u7d$17hb866b7a39af0a25eE.exit.us.i.i.i.i.i" - %.pn.i.i.i.i = phi ptr [ %705, %"_ZN4core4iter6traits8iterator8Iterator3any5check28_$u7b$$u7b$closure$u7d$$u7d$17hb866b7a39af0a25eE.exit.us.i.i.i.i.i" ], [ %.val416.i, %.lr.ph.split.us.i.i.i.i.i ] - %.in.i.i.i.i = phi i64 [ %706, %"_ZN4core4iter6traits8iterator8Iterator3any5check28_$u7b$$u7b$closure$u7d$$u7d$17hb866b7a39af0a25eE.exit.us.i.i.i.i.i" ], [ %.val417.i, %.lr.ph.split.us.i.i.i.i.i ] - %706 = add i64 %.in.i.i.i.i, -1 - %.not28.i.i.i.i.i = icmp ugt i64 %587, %706 - br i1 %.not28.i.i.i.i.i, label %.thread914.i, label %"_ZN4core4iter6traits8iterator8Iterator3any5check28_$u7b$$u7b$closure$u7d$$u7d$17hb866b7a39af0a25eE.exit.us.i.i.i.i.i" + %.pn.i.i.i.i = phi ptr [ %706, %"_ZN4core4iter6traits8iterator8Iterator3any5check28_$u7b$$u7b$closure$u7d$$u7d$17hb866b7a39af0a25eE.exit.us.i.i.i.i.i" ], [ %.val416.i, %.lr.ph.split.us.i.i.i.i.i ] + %.in.i.i.i.i = phi i64 [ %705, %"_ZN4core4iter6traits8iterator8Iterator3any5check28_$u7b$$u7b$closure$u7d$$u7d$17hb866b7a39af0a25eE.exit.us.i.i.i.i.i" ], [ %.val417.i, %.lr.ph.split.us.i.i.i.i.i ] + %exitcond.i.i.i.i.i = icmp eq i64 %.in.i.i.i.i, %587 + br i1 %exitcond.i.i.i.i.i, label %.thread914.i, label %"_ZN4core4iter6traits8iterator8Iterator3any5check28_$u7b$$u7b$closure$u7d$$u7d$17hb866b7a39af0a25eE.exit.us.i.i.i.i.i" _ZN4core3str7pattern13simd_contains17h12d10d0ea3d3f11eE.exit.i.i.i: ; preds = %618, %597 call void @llvm.lifetime.start.p0(i64 104, ptr nonnull %34), !noalias !558 diff --git a/bench/openblas/optimized/dlalsa.ll b/bench/openblas/optimized/dlalsa.ll index 8231184795a..e58f025a5ab 100644 --- a/bench/openblas/optimized/dlalsa.ll +++ b/bench/openblas/optimized/dlalsa.ll @@ -247,7 +247,7 @@ define void @dlalsa_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %.not33.i360 = icmp eq i64 %160, 0 %161 = select i1 %.not33.i360, i32 1, i32 2 %.not3134.i361 = icmp eq i64 %159, 1 - br i1 %.not3134.i361, label %.loopexit459, label %.lr.ph.i362 + br i1 %.not3134.i361, label %.loopexit461, label %.lr.ph.i362 .lr.ph.i362: ; preds = %158, %.lr.ph.i362 %spec.select37.i363 = phi i32 [ %spec.select.i367, %.lr.ph.i362 ], [ %161, %158 ] @@ -260,24 +260,24 @@ define void @dlalsa_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %165 = select i1 %.not.i366, i32 1, i32 %163 %spec.select.i367 = mul nuw nsw i32 %165, %spec.select37.i363 %.not31.i368 = icmp samesign ult i64 %.036.i364, 4 - br i1 %.not31.i368, label %.loopexit459, label %.lr.ph.i362 + br i1 %.not31.i368, label %.loopexit461, label %.lr.ph.i362 -.loopexit459: ; preds = %.lr.ph.i362, %158 +.loopexit461: ; preds = %.lr.ph.i362, %158 %.1.i359 = phi i32 [ %161, %158 ], [ %spec.select.i367, %.lr.ph.i362 ] %166 = shl i32 %.1.i359, 1 %167 = add nsw i32 %166, -1 %.not353391.not = icmp slt i32 %.1.i359, %166 br i1 %.not353391.not, label %.lr.ph395, label %._crit_edge396 -.lr.ph395: ; preds = %154, %.loopexit459 - %168 = phi i32 [ %167, %.loopexit459 ], [ 1, %154 ] - %.0336451 = phi i32 [ %.1.i359, %.loopexit459 ], [ 1, %154 ] +.lr.ph395: ; preds = %154, %.loopexit461 + %168 = phi i32 [ %167, %.loopexit461 ], [ 1, %154 ] + %.0336453 = phi i32 [ %.1.i359, %.loopexit461 ], [ 1, %154 ] %169 = mul nsw i64 %indvars.iv430, %152 %170 = mul nsw i32 %156, %52 %171 = mul nsw i32 %156, %41 %172 = mul nsw i64 %indvars.iv430, %153 %173 = sext i32 %.0338397 to i64 - %174 = sext i32 %.0336451 to i64 + %174 = sext i32 %.0336453 to i64 %175 = getelementptr i32, ptr %54, i64 %169 %176 = sext i32 %168 to i64 br label %177 @@ -332,11 +332,12 @@ define void @dlalsa_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %213 = trunc nsw i64 %indvars.iv.next424 to i32 br label %._crit_edge396 -._crit_edge396: ; preds = %._crit_edge396.loopexit, %.loopexit459 - %.1339.lcssa = phi i32 [ %.0338397, %.loopexit459 ], [ %213, %._crit_edge396.loopexit ] +._crit_edge396: ; preds = %._crit_edge396.loopexit, %.loopexit461 + %.1339.lcssa = phi i32 [ %.0338397, %.loopexit461 ], [ %213, %._crit_edge396.loopexit ] %indvars.iv.next431 = add nsw i64 %indvars.iv430, -1 - %214 = icmp sgt i64 %indvars.iv430, 1 - br i1 %214, label %154, label %.loopexit, !llvm.loop !11 + %214 = and i64 %indvars.iv.next431, 4294967295 + %exitcond.not = icmp eq i64 %214, 0 + br i1 %exitcond.not, label %.loopexit, label %154, !llvm.loop !11 215: ; preds = %82 %216 = load i32, ptr %28, align 4, !tbaa !3 @@ -351,18 +352,18 @@ define void @dlalsa_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef br label %220 220: ; preds = %.lr.ph411, %._crit_edge405 - %indvars.iv440 = phi i64 [ 1, %.lr.ph411 ], [ %indvars.iv.next441, %._crit_edge405 ] + %indvars.iv442 = phi i64 [ 1, %.lr.ph411 ], [ %indvars.iv.next443, %._crit_edge405 ] %.2408 = phi i32 [ 0, %.lr.ph411 ], [ %.3.lcssa, %._crit_edge405 ] - %221 = icmp eq i64 %indvars.iv440, 1 + %221 = icmp eq i64 %indvars.iv442, 1 br i1 %221, label %.lr.ph404, label %222 222: ; preds = %220 - %223 = add nsw i64 %indvars.iv440, -1 + %223 = add nsw i64 %indvars.iv442, -1 %224 = and i64 %223, 1 %.not33.i372 = icmp eq i64 %224, 0 %225 = select i1 %.not33.i372, i32 1, i32 2 %.not3134.i373 = icmp eq i64 %223, 1 - br i1 %.not3134.i373, label %.loopexit458, label %.lr.ph.i374 + br i1 %.not3134.i373, label %.loopexit460, label %.lr.ph.i374 .lr.ph.i374: ; preds = %222, %.lr.ph.i374 %spec.select37.i375 = phi i32 [ %spec.select.i379, %.lr.ph.i374 ], [ %225, %222 ] @@ -375,28 +376,28 @@ define void @dlalsa_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %229 = select i1 %.not.i378, i32 1, i32 %227 %spec.select.i379 = mul nuw nsw i32 %229, %spec.select37.i375 %.not31.i380 = icmp samesign ult i64 %.036.i376, 4 - br i1 %.not31.i380, label %.loopexit458, label %.lr.ph.i374 + br i1 %.not31.i380, label %.loopexit460, label %.lr.ph.i374 -.loopexit458: ; preds = %.lr.ph.i374, %222 +.loopexit460: ; preds = %.lr.ph.i374, %222 %.1.i371 = phi i32 [ %225, %222 ], [ %spec.select.i379, %.lr.ph.i374 ] %230 = shl i32 %.1.i371, 1 %231 = add nsw i32 %230, -1 %.not356400.not = icmp sgt i32 %230, %.1.i371 br i1 %.not356400.not, label %.lr.ph404, label %._crit_edge405 -.lr.ph404: ; preds = %220, %.loopexit458 - %.1335457 = phi i32 [ %231, %.loopexit458 ], [ 1, %220 ] - %.1337456 = phi i32 [ %.1.i371, %.loopexit458 ], [ 1, %220 ] - %232 = mul nsw i64 %indvars.iv440, %217 - %indvars.iv440.tr = trunc nuw i64 %indvars.iv440 to i32 - %233 = shl i32 %indvars.iv440.tr, 1 +.lr.ph404: ; preds = %220, %.loopexit460 + %.1335459 = phi i32 [ %231, %.loopexit460 ], [ 1, %220 ] + %.1337458 = phi i32 [ %.1.i371, %.loopexit460 ], [ 1, %220 ] + %232 = mul nsw i64 %indvars.iv442, %217 + %indvars.iv442.tr = trunc nuw i64 %indvars.iv442 to i32 + %233 = shl i32 %indvars.iv442.tr, 1 %234 = add i32 %233, -1 %235 = mul nsw i32 %234, %52 %236 = mul nsw i32 %234, %41 - %237 = mul nsw i64 %indvars.iv440, %218 + %237 = mul nsw i64 %indvars.iv442, %218 %238 = sext i32 %.2408 to i64 - %239 = sext i32 %.1335457 to i64 - %240 = sext i32 %.1337456 to i64 + %239 = sext i32 %.1335459 to i64 + %240 = add i32 %.1337458, -1 %241 = getelementptr i32, ptr %54, i64 %232 br label %242 @@ -446,17 +447,18 @@ define void @dlalsa_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %276 = getelementptr double, ptr %21, i64 %indvars.iv433 %277 = getelementptr double, ptr %22, i64 %indvars.iv433 call void @dlals0_(ptr noundef nonnull %0, ptr noundef nonnull %31, ptr noundef nonnull %32, ptr noundef nonnull %29, ptr noundef nonnull %3, ptr noundef %257, ptr noundef nonnull %5, ptr noundef %260, ptr noundef nonnull %7, ptr noundef %262, ptr noundef nonnull %263, ptr noundef %266, ptr noundef nonnull %18, ptr noundef %269, ptr noundef nonnull %9, ptr noundef %270, ptr noundef %272, ptr noundef %273, ptr noundef %274, ptr noundef nonnull %275, ptr noundef nonnull %276, ptr noundef nonnull %277, ptr noundef %23, ptr noundef nonnull %25) #3 - %.not356.not = icmp sgt i64 %indvars.iv435, %240 - br i1 %.not356.not, label %242, label %._crit_edge405.loopexit, !llvm.loop !12 + %lftr.wideiv440 = trunc i64 %indvars.iv.next436 to i32 + %exitcond441.not = icmp eq i32 %240, %lftr.wideiv440 + br i1 %exitcond441.not, label %._crit_edge405.loopexit, label %242, !llvm.loop !12 ._crit_edge405.loopexit: ; preds = %242 %278 = trunc nsw i64 %indvars.iv.next434 to i32 br label %._crit_edge405 -._crit_edge405: ; preds = %._crit_edge405.loopexit, %.loopexit458 - %.3.lcssa = phi i32 [ %.2408, %.loopexit458 ], [ %278, %._crit_edge405.loopexit ] - %indvars.iv.next441 = add nuw nsw i64 %indvars.iv440, 1 - %.not354.not = icmp samesign ult i64 %indvars.iv440, %219 +._crit_edge405: ; preds = %._crit_edge405.loopexit, %.loopexit460 + %.3.lcssa = phi i32 [ %.2408, %.loopexit460 ], [ %278, %._crit_edge405.loopexit ] + %indvars.iv.next443 = add nuw nsw i64 %indvars.iv442, 1 + %.not354.not = icmp samesign ult i64 %indvars.iv442, %219 br i1 %.not354.not, label %220, label %._crit_edge412, !llvm.loop !13 ._crit_edge412: ; preds = %._crit_edge405, %215 @@ -473,10 +475,10 @@ define void @dlalsa_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef br label %285 285: ; preds = %.lr.ph416, %285 - %indvars.iv443 = phi i64 [ %283, %.lr.ph416 ], [ %indvars.iv.next444, %285 ] - %286 = getelementptr inbounds i32, ptr %58, i64 %indvars.iv443 + %indvars.iv445 = phi i64 [ %283, %.lr.ph416 ], [ %indvars.iv.next446, %285 ] + %286 = getelementptr inbounds i32, ptr %58, i64 %indvars.iv445 %287 = load i32, ptr %286, align 4, !tbaa !3 - %288 = trunc nsw i64 %indvars.iv443 to i32 + %288 = trunc nsw i64 %indvars.iv445 to i32 %289 = add i32 %64, %288 %290 = sext i32 %289 to i64 %291 = getelementptr inbounds i32, ptr %58, i64 %290 @@ -516,8 +518,8 @@ define void @dlalsa_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %319 = sext i32 %318 to i64 %320 = getelementptr inbounds double, ptr %40, i64 %319 call void @dgemm_(ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.2, ptr noundef nonnull %34, ptr noundef nonnull %3, ptr noundef nonnull %34, ptr noundef nonnull @c_b7, ptr noundef %314, ptr noundef nonnull %9, ptr noundef %317, ptr noundef nonnull %5, ptr noundef nonnull @c_b8, ptr noundef %320, ptr noundef nonnull %7) #3 - %indvars.iv.next444 = add nsw i64 %indvars.iv443, 1 - %.not355.not = icmp slt i64 %indvars.iv443, %284 + %indvars.iv.next446 = add nsw i64 %indvars.iv445, 1 + %.not355.not = icmp slt i64 %indvars.iv445, %284 br i1 %.not355.not, label %285, label %.loopexit, !llvm.loop !14 .loopexit: ; preds = %._crit_edge396, %285, %._crit_edge390, %._crit_edge412, %.thread diff --git a/bench/openblas/optimized/dlasrt.ll b/bench/openblas/optimized/dlasrt.ll index 83d6d1ce4ed..6579efe580f 100644 --- a/bench/openblas/optimized/dlasrt.ll +++ b/bench/openblas/optimized/dlasrt.ll @@ -105,12 +105,13 @@ define void @dlasrt_(ptr noundef %0, ptr noundef readonly captures(none) %1, ptr store double %40, ptr %37, align 8, !tbaa !7 store double %38, ptr %39, align 8, !tbaa !7 %indvars.iv.next279 = add nsw i64 %indvars.iv278, -1 - %.not214.not = icmp sgt i64 %indvars.iv.next279, %36 - br i1 %.not214.not, label %.lr.ph, label %._crit_edge, !llvm.loop !9 + %lftr.wideiv = trunc i64 %indvars.iv.next279 to i32 + %exitcond.not = icmp eq i32 %26, %lftr.wideiv + br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !9 ._crit_edge: ; preds = %42, %.lr.ph, %.preheader218 - %exitcond.not = icmp eq i32 %.0182243, %30 - br i1 %exitcond.not, label %.loopexit, label %.preheader218, !llvm.loop !11 + %exitcond281.not = icmp eq i32 %.0182243, %30 + br i1 %exitcond281.not, label %.loopexit, label %.preheader218, !llvm.loop !11 43: ; preds = %34 br i1 %.not.not250, label %.preheader.preheader, label %.loopexit @@ -120,16 +121,16 @@ define void @dlasrt_(ptr noundef %0, ptr noundef readonly captures(none) %1, ptr br label %.preheader .preheader: ; preds = %.preheader.preheader, %._crit_edge247 - %indvars.iv281.in = phi i64 [ %44, %.preheader.preheader ], [ %indvars.iv281, %._crit_edge247 ] + %indvars.iv282.in = phi i64 [ %44, %.preheader.preheader ], [ %indvars.iv282, %._crit_edge247 ] %.1183251.in = phi i32 [ %26, %.preheader.preheader ], [ %.1183251, %._crit_edge247 ] - %indvars.iv281 = add nsw i64 %indvars.iv281.in, 1 + %indvars.iv282 = add nsw i64 %indvars.iv282.in, 1 %.1183251 = add nsw i32 %.1183251.in, 1 %.not213.not244.not = icmp slt i32 %.1183251.in, %26 br i1 %.not213.not244.not, label %._crit_edge247, label %.lr.ph246 .lr.ph246: ; preds = %.preheader, %50 - %indvars.iv283 = phi i64 [ %indvars.iv.next284, %50 ], [ %indvars.iv281, %.preheader ] - %45 = getelementptr inbounds double, ptr %7, i64 %indvars.iv283 + %indvars.iv284 = phi i64 [ %indvars.iv.next285, %50 ], [ %indvars.iv282, %.preheader ] + %45 = getelementptr inbounds double, ptr %7, i64 %indvars.iv284 %46 = load double, ptr %45, align 8, !tbaa !7 %47 = getelementptr i8, ptr %45, i64 -8 %48 = load double, ptr %47, align 8, !tbaa !7 @@ -139,13 +140,14 @@ define void @dlasrt_(ptr noundef %0, ptr noundef readonly captures(none) %1, ptr 50: ; preds = %.lr.ph246 store double %48, ptr %45, align 8, !tbaa !7 store double %46, ptr %47, align 8, !tbaa !7 - %indvars.iv.next284 = add nsw i64 %indvars.iv283, -1 - %.not213.not = icmp sgt i64 %indvars.iv.next284, %44 - br i1 %.not213.not, label %.lr.ph246, label %._crit_edge247, !llvm.loop !12 + %indvars.iv.next285 = add nsw i64 %indvars.iv284, -1 + %lftr.wideiv287 = trunc i64 %indvars.iv.next285 to i32 + %exitcond288.not = icmp eq i32 %26, %lftr.wideiv287 + br i1 %exitcond288.not, label %._crit_edge247, label %.lr.ph246, !llvm.loop !12 ._crit_edge247: ; preds = %50, %.lr.ph246, %.preheader - %exitcond286.not = icmp eq i32 %.1183251, %30 - br i1 %exitcond286.not, label %.loopexit, label %.preheader, !llvm.loop !13 + %exitcond289.not = icmp eq i32 %.1183251, %30 + br i1 %exitcond289.not, label %.loopexit, label %.preheader, !llvm.loop !13 51: ; preds = %21 %52 = icmp sgt i32 %32, 20 @@ -188,16 +190,16 @@ define void @dlasrt_(ptr noundef %0, ptr noundef readonly captures(none) %1, ptr %.0190 = phi double [ %56, %66 ], [ %., %68 ], [ %59, %70 ], [ %.216, %72 ] %75 = add nsw i32 %26, -1 %76 = add nsw i32 %30, 1 - br i1 %.not.not.not, label %.preheader302, label %.preheader303 + br i1 %.not.not.not, label %.preheader305, label %.preheader306 -.preheader303: ; preds = %74, %91 +.preheader306: ; preds = %74, %91 %.2186 = phi i32 [ %89, %91 ], [ %76, %74 ] %.2 = phi i32 [ %93, %91 ], [ %75, %74 ] %77 = sext i32 %.2186 to i64 br label %78 -78: ; preds = %78, %.preheader303 - %indvars.iv = phi i64 [ %indvars.iv.next, %78 ], [ %77, %.preheader303 ] +78: ; preds = %78, %.preheader306 + %indvars.iv = phi i64 [ %indvars.iv.next, %78 ], [ %77, %.preheader306 ] %indvars.iv.next = add nsw i64 %indvars.iv, -1 %79 = getelementptr inbounds double, ptr %7, i64 %indvars.iv.next %80 = load double, ptr %79, align 8, !tbaa !7 @@ -227,7 +229,7 @@ define void @dlasrt_(ptr noundef %0, ptr noundef readonly captures(none) %1, ptr %93 = trunc nsw i64 %indvars.iv.next268 to i32 store double %80, ptr %92, align 8, !tbaa !7 store double %86, ptr %82, align 8, !tbaa !7 - br label %.preheader303 + br label %.preheader306 94: ; preds = %88 %95 = trunc nsw i64 %indvars.iv to i32 @@ -256,14 +258,14 @@ define void @dlasrt_(ptr noundef %0, ptr noundef readonly captures(none) %1, ptr store i32 %89, ptr %106, align 4, !tbaa !3 br label %.loopexit -.preheader302: ; preds = %74, %123 +.preheader305: ; preds = %74, %123 %.4188 = phi i32 [ %121, %123 ], [ %76, %74 ] %.4 = phi i32 [ %125, %123 ], [ %75, %74 ] %109 = sext i32 %.4188 to i64 br label %110 -110: ; preds = %110, %.preheader302 - %indvars.iv270 = phi i64 [ %indvars.iv.next271, %110 ], [ %109, %.preheader302 ] +110: ; preds = %110, %.preheader305 + %indvars.iv270 = phi i64 [ %indvars.iv.next271, %110 ], [ %109, %.preheader305 ] %indvars.iv.next271 = add nsw i64 %indvars.iv270, -1 %111 = getelementptr inbounds double, ptr %7, i64 %indvars.iv.next271 %112 = load double, ptr %111, align 8, !tbaa !7 @@ -293,7 +295,7 @@ define void @dlasrt_(ptr noundef %0, ptr noundef readonly captures(none) %1, ptr %125 = trunc nsw i64 %indvars.iv.next274 to i32 store double %112, ptr %124, align 8, !tbaa !7 store double %118, ptr %114, align 8, !tbaa !7 - br label %.preheader302 + br label %.preheader305 126: ; preds = %120 %127 = trunc nsw i64 %indvars.iv270 to i32 diff --git a/bench/openexr/optimized/internal_dwa.ll b/bench/openexr/optimized/internal_dwa.ll index d2421936072..79102845537 100644 --- a/bench/openexr/optimized/internal_dwa.ll +++ b/bench/openexr/optimized/internal_dwa.ll @@ -12010,7 +12010,7 @@ define internal fastcc range(i32 0, 24) i32 @LossyDctDecoder_execute(ptr noundef .lr.ph388: ; preds = %123, %._crit_edge381 %indvars.iv471 = phi i64 [ %indvars.iv.next472, %._crit_edge381 ], [ 0, %123 ] %.0268385 = phi i32 [ %spec.select298, %._crit_edge381 ], [ 8, %123 ] - %.1308383 = phi ptr [ %.3310.lcssa512518, %._crit_edge381 ], [ %.0307423, %123 ] + %.1308383 = phi ptr [ %.3310.lcssa513519, %._crit_edge381 ], [ %.0307423, %123 ] %125 = icmp eq i64 %indvars.iv471, %70 %spec.select298 = select i1 %125, i32 %19, i32 %.0268385 br i1 %36, label %.lr.ph376, label %._crit_edge381 @@ -12180,9 +12180,9 @@ half_to_float.exit: ; preds = %165, %167, %169, %1 br i1 %62, label %202, label %.lr.ph380 202: ; preds = %.thread - br i1 %201, label %.thread514.thread, label %.thread514 + br i1 %201, label %.thread515.thread, label %.thread515 -.thread514.thread: ; preds = %202 +.thread515.thread: ; preds = %202 %203 = load <4 x float>, ptr %71, align 16, !tbaa !86 %204 = load <4 x float>, ptr %72, align 16, !tbaa !86 %205 = load <4 x float>, ptr %73, align 16, !tbaa !86 @@ -12426,7 +12426,7 @@ half_to_float.exit: ; preds = %165, %167, %169, %1 %395 = shl nsw i64 %indvars.iv471, 6 br label %.lr.ph380.split.us.preheader -.thread514: ; preds = %202 +.thread515: ; preds = %202 %396 = load float, ptr %71, align 4, !tbaa !174 %397 = load float, ptr %72, align 4, !tbaa !174 %398 = load float, ptr %73, align 4, !tbaa !174 @@ -12444,12 +12444,12 @@ half_to_float.exit: ; preds = %165, %167, %169, %1 %404 = shl nsw i64 %indvars.iv471, 6 br i1 %201, label %.lr.ph380.split.us.preheader, label %.lr.ph380.split.preheader -.lr.ph380.split.preheader: ; preds = %.thread514, %.lr.ph380 - %405 = phi i64 [ %403, %.thread514 ], [ %404, %.lr.ph380 ] +.lr.ph380.split.preheader: ; preds = %.thread515, %.lr.ph380 + %405 = phi i64 [ %403, %.thread515 ], [ %404, %.lr.ph380 ] br label %.lr.ph380.split -.lr.ph380.split.us.preheader: ; preds = %.thread514.thread, %.lr.ph380 - %406 = phi i64 [ %404, %.lr.ph380 ], [ %395, %.thread514.thread ] +.lr.ph380.split.us.preheader: ; preds = %.thread515.thread, %.lr.ph380 + %406 = phi i64 [ %404, %.lr.ph380 ], [ %395, %.thread515.thread ] br label %.lr.ph380.split.us .lr.ph380.split.us: ; preds = %.lr.ph380.split.us.preheader, %.lr.ph380.split.us @@ -12573,13 +12573,13 @@ float_to_half.exit: ; preds = %428, %431, %441, %4 br i1 %exitcond465.not, label %._crit_edge381, label %.lr.ph380.split, !llvm.loop !252 ._crit_edge381: ; preds = %float_to_half.exit, %.lr.ph380.split.us, %.lr.ph388 - %.3310.lcssa512518 = phi ptr [ %.1308383, %.lr.ph388 ], [ %150, %.lr.ph380.split.us ], [ %150, %float_to_half.exit ] + %.3310.lcssa513519 = phi ptr [ %.1308383, %.lr.ph388 ], [ %150, %.lr.ph380.split.us ], [ %150, %float_to_half.exit ] %indvars.iv.next472 = add nuw nsw i64 %indvars.iv471, 1 %exitcond475.not = icmp eq i64 %indvars.iv.next472, %wide.trip.count474 br i1 %exitcond475.not, label %.preheader353, label %.lr.ph388, !llvm.loop !253 .preheader353: ; preds = %._crit_edge381, %123 - %.2309.ph = phi ptr [ %.0307423, %123 ], [ %.3310.lcssa512518, %._crit_edge381 ] + %.2309.ph = phi ptr [ %.0307423, %123 ], [ %.3310.lcssa513519, %._crit_edge381 ] %.1269.ph = phi i32 [ 8, %123 ], [ %spec.select298, %._crit_edge381 ] br i1 %36, label %.lr.ph420, label %._crit_edge421 @@ -12795,12 +12795,12 @@ float_to_half.exit: ; preds = %428, %431, %441, %4 br i1 %36, label %.lr.ph439.preheader, label %.sink.split .lr.ph439.preheader: ; preds = %.preheader346 - %wide.trip.count508 = zext nneg i32 %8 to i64 + %wide.trip.count509 = zext nneg i32 %8 to i64 br label %.lr.ph439 .lr.ph439: ; preds = %.lr.ph439.preheader, %.loopexit - %indvars.iv505 = phi i64 [ 0, %.lr.ph439.preheader ], [ %indvars.iv.next506, %.loopexit ] - %601 = getelementptr inbounds nuw [3 x ptr], ptr %4, i64 0, i64 %indvars.iv505 + %indvars.iv506 = phi i64 [ 0, %.lr.ph439.preheader ], [ %indvars.iv.next507, %.loopexit ] + %601 = getelementptr inbounds nuw [3 x ptr], ptr %4, i64 0, i64 %indvars.iv506 %602 = load ptr, ptr %601, align 8, !tbaa !116 %603 = getelementptr inbounds nuw i8, ptr %602, i64 416 %604 = load i32, ptr %603, align 32, !tbaa !62 @@ -12821,12 +12821,12 @@ float_to_half.exit: ; preds = %428, %431, %441, %4 .lr.ph434.us.preheader: ; preds = %.lr.ph437 %611 = zext nneg i32 %609 to i64 - %wide.trip.count503 = zext nneg i32 %605 to i64 + %wide.trip.count504 = zext nneg i32 %605 to i64 br label %.lr.ph434.us .lr.ph434.us: ; preds = %.lr.ph434.us.preheader, %._crit_edge435.us - %indvars.iv500 = phi i64 [ 0, %.lr.ph434.us.preheader ], [ %indvars.iv.next501, %._crit_edge435.us ] - %612 = getelementptr inbounds nuw ptr, ptr %608, i64 %indvars.iv500 + %indvars.iv501 = phi i64 [ 0, %.lr.ph434.us.preheader ], [ %indvars.iv.next502, %._crit_edge435.us ] + %612 = getelementptr inbounds nuw ptr, ptr %608, i64 %indvars.iv501 %613 = load ptr, ptr %612, align 8, !tbaa !97 br label %614 @@ -12874,18 +12874,19 @@ half_to_float.exit305.us: ; preds = %636, %634, %623, %6 %.sroa.0.0.i.i304.us = phi i32 [ %637, %636 ], [ %635, %634 ], [ %630, %623 ], [ %620, %622 ] %638 = getelementptr inbounds nuw float, ptr %613, i64 %indvars.iv.next498 store i32 %.sroa.0.0.i.i304.us, ptr %638, align 4, !tbaa !174 - %639 = icmp sgt i64 %indvars.iv497, 1 - br i1 %639, label %614, label %._crit_edge435.us, !llvm.loop !262 + %639 = and i64 %indvars.iv.next498, 4294967295 + %exitcond500.not = icmp eq i64 %639, 0 + br i1 %exitcond500.not, label %._crit_edge435.us, label %614, !llvm.loop !262 ._crit_edge435.us: ; preds = %half_to_float.exit305.us - %indvars.iv.next501 = add nuw nsw i64 %indvars.iv500, 1 - %exitcond504.not = icmp eq i64 %indvars.iv.next501, %wide.trip.count503 - br i1 %exitcond504.not, label %.loopexit, label %.lr.ph434.us, !llvm.loop !263 + %indvars.iv.next502 = add nuw nsw i64 %indvars.iv501, 1 + %exitcond505.not = icmp eq i64 %indvars.iv.next502, %wide.trip.count504 + br i1 %exitcond505.not, label %.loopexit, label %.lr.ph434.us, !llvm.loop !263 .loopexit: ; preds = %._crit_edge435.us, %.lr.ph437, %.preheader, %.lr.ph439 - %indvars.iv.next506 = add nuw nsw i64 %indvars.iv505, 1 - %exitcond509.not = icmp eq i64 %indvars.iv.next506, %wide.trip.count508 - br i1 %exitcond509.not, label %.sink.split, label %.lr.ph439, !llvm.loop !264 + %indvars.iv.next507 = add nuw nsw i64 %indvars.iv506, 1 + %exitcond510.not = icmp eq i64 %indvars.iv.next507, %wide.trip.count509 + br i1 %exitcond510.not, label %.sink.split, label %.lr.ph439, !llvm.loop !264 .sink.split: ; preds = %137, %.loopexit, %.preheader346 %.0246.ph = phi i32 [ 0, %.preheader346 ], [ 0, %.loopexit ], [ 23, %137 ] diff --git a/bench/openmpi/optimized/pmix_argv.ll b/bench/openmpi/optimized/pmix_argv.ll index e36593b432c..f730998f101 100644 --- a/bench/openmpi/optimized/pmix_argv.ll +++ b/bench/openmpi/optimized/pmix_argv.ll @@ -442,8 +442,8 @@ define range(i32 -27, 1) i32 @pmix_argv_insert(ptr noundef %0, i32 noundef %1, p pmix_argv_append.exit: ; preds = %.lr.ph55, %19 %indvars.iv.next62 = add nuw nsw i64 %indvars.iv61, 1 - %exitcond.not = icmp eq i64 %indvars.iv.next62, %wide.trip.count - br i1 %exitcond.not, label %.loopexit, label %.lr.ph55, !llvm.loop !21 + %exitcond64.not = icmp eq i64 %indvars.iv.next62, %wide.trip.count + br i1 %exitcond64.not, label %.loopexit, label %.lr.ph55, !llvm.loop !21 22: ; preds = %11 %23 = load ptr, ptr %0, align 8, !tbaa !3 @@ -464,42 +464,43 @@ pmix_argv_append.exit: ; preds = %.lr.ph55, %19 %34 = zext nneg i32 %1 to i64 %35 = sext i32 %32 to i64 %invariant.gep = getelementptr ptr, ptr %28, i64 %34 - %invariant.gep65 = getelementptr ptr, ptr %28, i64 %35 + %invariant.gep66 = getelementptr ptr, ptr %28, i64 %35 br label %36 36: ; preds = %.lr.ph, %36 %indvars.iv = phi i64 [ %33, %.lr.ph ], [ %indvars.iv.next, %36 ] %gep = getelementptr ptr, ptr %invariant.gep, i64 %indvars.iv %37 = load ptr, ptr %gep, align 8, !tbaa !10 - %gep66 = getelementptr ptr, ptr %invariant.gep65, i64 %indvars.iv - store ptr %37, ptr %gep66, align 8, !tbaa !10 + %gep67 = getelementptr ptr, ptr %invariant.gep66, i64 %indvars.iv + store ptr %37, ptr %gep67, align 8, !tbaa !10 %indvars.iv.next = add nsw i64 %indvars.iv, -1 - %.not = icmp eq i64 %indvars.iv, 0 - br i1 %.not, label %._crit_edge, label %36, !llvm.loop !22 + %38 = and i64 %indvars.iv.next, 4294967295 + %exitcond.not = icmp eq i64 %38, 4294967295 + br i1 %exitcond.not, label %._crit_edge, label %36, !llvm.loop !22 ._crit_edge: ; preds = %36, %22 - %38 = sext i32 %24 to i64 - %39 = getelementptr inbounds ptr, ptr %28, i64 %38 - store ptr null, ptr %39, align 8, !tbaa !10 - %40 = icmp sgt i32 %13, 0 - br i1 %40, label %.lr.ph53.preheader, label %.loopexit + %39 = sext i32 %24 to i64 + %40 = getelementptr inbounds ptr, ptr %28, i64 %39 + store ptr null, ptr %40, align 8, !tbaa !10 + %41 = icmp sgt i32 %13, 0 + br i1 %41, label %.lr.ph53.preheader, label %.loopexit .lr.ph53.preheader: ; preds = %._crit_edge - %41 = zext nneg i32 %1 to i64 - %42 = zext nneg i32 %32 to i64 + %42 = zext nneg i32 %1 to i64 + %43 = zext nneg i32 %32 to i64 br label %.lr.ph53 .lr.ph53: ; preds = %.lr.ph53.preheader, %.lr.ph53 - %indvars.iv58 = phi i64 [ %41, %.lr.ph53.preheader ], [ %indvars.iv.next59, %.lr.ph53 ] - %43 = sub nuw nsw i64 %indvars.iv58, %41 - %44 = getelementptr inbounds nuw ptr, ptr %2, i64 %43 - %45 = load ptr, ptr %44, align 8, !tbaa !10 - %46 = tail call noalias ptr @strdup(ptr noundef %45) #10 - %47 = getelementptr inbounds nuw ptr, ptr %28, i64 %indvars.iv58 - store ptr %46, ptr %47, align 8, !tbaa !10 + %indvars.iv58 = phi i64 [ %42, %.lr.ph53.preheader ], [ %indvars.iv.next59, %.lr.ph53 ] + %44 = sub nuw nsw i64 %indvars.iv58, %42 + %45 = getelementptr inbounds nuw ptr, ptr %2, i64 %44 + %46 = load ptr, ptr %45, align 8, !tbaa !10 + %47 = tail call noalias ptr @strdup(ptr noundef %46) #10 + %48 = getelementptr inbounds nuw ptr, ptr %28, i64 %indvars.iv58 + store ptr %47, ptr %48, align 8, !tbaa !10 %indvars.iv.next59 = add nuw nsw i64 %indvars.iv58, 1 - %48 = icmp samesign ult i64 %indvars.iv.next59, %42 - br i1 %48, label %.lr.ph53, label %.loopexit, !llvm.loop !23 + %49 = icmp samesign ult i64 %indvars.iv.next59, %43 + br i1 %49, label %.lr.ph53, label %.loopexit, !llvm.loop !23 .loopexit: ; preds = %.lr.ph53, %pmix_argv_append.exit, %._crit_edge, %.preheader, %9, %3, %5 %.0 = phi i32 [ -27, %5 ], [ -27, %3 ], [ 0, %9 ], [ 0, %.preheader ], [ 0, %._crit_edge ], [ 0, %pmix_argv_append.exit ], [ 0, %.lr.ph53 ] @@ -569,18 +570,19 @@ define range(i32 -27, 1) i32 @pmix_argv_insert_element(ptr noundef %0, i32 nound %gep38 = getelementptr ptr, ptr %invariant.gep37, i64 %indvars.iv store ptr %32, ptr %gep38, align 8, !tbaa !10 %indvars.iv.next = add nsw i64 %indvars.iv, -1 - %.not = icmp eq i64 %indvars.iv, 0 - br i1 %.not, label %._crit_edge, label %31, !llvm.loop !24 + %33 = and i64 %indvars.iv.next, 4294967295 + %exitcond.not = icmp eq i64 %33, 4294967295 + br i1 %exitcond.not, label %._crit_edge, label %31, !llvm.loop !24 ._crit_edge: ; preds = %31, %.._crit_edge_crit_edge %.pre-phi = phi i64 [ %.pre, %.._crit_edge_crit_edge ], [ %29, %31 ] - %33 = zext nneg i32 %12 to i64 - %34 = getelementptr ptr, ptr %24, i64 %33 - %35 = getelementptr i8, ptr %34, i64 8 - store ptr null, ptr %35, align 8, !tbaa !10 - %36 = tail call noalias ptr @strdup(ptr noundef nonnull %2) #10 - %37 = getelementptr inbounds nuw ptr, ptr %24, i64 %.pre-phi - store ptr %36, ptr %37, align 8, !tbaa !10 + %34 = zext nneg i32 %12 to i64 + %35 = getelementptr ptr, ptr %24, i64 %34 + %36 = getelementptr i8, ptr %35, i64 8 + store ptr null, ptr %36, align 8, !tbaa !10 + %37 = tail call noalias ptr @strdup(ptr noundef nonnull %2) #10 + %38 = getelementptr inbounds nuw ptr, ptr %24, i64 %.pre-phi + store ptr %37, ptr %38, align 8, !tbaa !10 br label %pmix_argv_append.exit pmix_argv_append.exit: ; preds = %16, %14, %9, %3, %5, %._crit_edge diff --git a/bench/openspiel/optimized/backgammon.ll b/bench/openspiel/optimized/backgammon.ll index 047270e5bce..f2806298b69 100644 --- a/bench/openspiel/optimized/backgammon.ll +++ b/bench/openspiel/optimized/backgammon.ll @@ -8504,42 +8504,46 @@ _ZNK10open_spiel10backgammon15BackgammonState14CheckersInHomeEi.exit: ; preds = 31: ; preds = %_ZNK10open_spiel10backgammon15BackgammonState14CheckersInHomeEi.exit %32 = icmp sgt i32 %3, 24 %or.cond5 = and i1 %18, %32 - br i1 %or.cond5, label %.preheader, label %37 - -.preheader: ; preds = %31, %34 - %.031.in = phi i32 [ %.031, %34 ], [ %2, %31 ] - %33 = icmp slt i32 %.031.in, 19 - br i1 %33, label %.loopexit, label %34 - -34: ; preds = %.preheader - %.031 = add nsw i32 %.031.in, -1 - %35 = tail call noundef i32 @_ZNK10open_spiel10backgammon15BackgammonState5boardEii(ptr noundef nonnull align 8 dereferenceable(216) %0, i32 noundef 0, i32 noundef %.031) - %36 = icmp sgt i32 %35, 0 - br i1 %36, label %.loopexit, label %.preheader, !llvm.loop !33 - -37: ; preds = %31 - %38 = icmp eq i32 %1, 1 - %39 = icmp slt i32 %3, -1 - %or.cond7 = and i1 %38, %39 + br i1 %or.cond5, label %.preheader.preheader, label %36 + +.preheader.preheader: ; preds = %31 + %smin = tail call i32 @llvm.smin.i32(i32 %2, i32 18) + br label %.preheader + +.preheader: ; preds = %.preheader.preheader, %33 + %.031.in = phi i32 [ %.031, %33 ], [ %2, %.preheader.preheader ] + %exitcond45.not = icmp eq i32 %.031.in, %smin + br i1 %exitcond45.not, label %.loopexit, label %33 + +33: ; preds = %.preheader + %.031 = add i32 %.031.in, -1 + %34 = tail call noundef i32 @_ZNK10open_spiel10backgammon15BackgammonState5boardEii(ptr noundef nonnull align 8 dereferenceable(216) %0, i32 noundef 0, i32 noundef %.031) + %35 = icmp sgt i32 %34, 0 + br i1 %35, label %.loopexit, label %.preheader, !llvm.loop !33 + +36: ; preds = %31 + %37 = icmp eq i32 %1, 1 + %38 = icmp slt i32 %3, -1 + %or.cond7 = and i1 %37, %38 br i1 %or.cond7, label %.preheader36.preheader, label %.loopexit -.preheader36.preheader: ; preds = %37 +.preheader36.preheader: ; preds = %36 %smax = tail call i32 @llvm.smax.i32(i32 %2, i32 5) br label %.preheader36 -.preheader36: ; preds = %.preheader36.preheader, %40 - %.0.in = phi i32 [ %.0, %40 ], [ %2, %.preheader36.preheader ] +.preheader36: ; preds = %.preheader36.preheader, %39 + %.0.in = phi i32 [ %.0, %39 ], [ %2, %.preheader36.preheader ] %exitcond.not = icmp eq i32 %.0.in, %smax - br i1 %exitcond.not, label %.loopexit, label %40 + br i1 %exitcond.not, label %.loopexit, label %39 -40: ; preds = %.preheader36 +39: ; preds = %.preheader36 %.0 = add i32 %.0.in, 1 - %41 = tail call noundef i32 @_ZNK10open_spiel10backgammon15BackgammonState5boardEii(ptr noundef nonnull align 8 dereferenceable(216) %0, i32 noundef 1, i32 noundef %.0) - %42 = icmp sgt i32 %41, 0 - br i1 %42, label %.loopexit, label %.preheader36, !llvm.loop !34 + %40 = tail call noundef i32 @_ZNK10open_spiel10backgammon15BackgammonState5boardEii(ptr noundef nonnull align 8 dereferenceable(216) %0, i32 noundef 1, i32 noundef %.0) + %41 = icmp sgt i32 %40, 0 + br i1 %41, label %.loopexit, label %.preheader36, !llvm.loop !34 -.loopexit: ; preds = %.preheader36, %40, %.preheader, %34, %16, %37, %_ZNK10open_spiel10backgammon15BackgammonState14CheckersInHomeEi.exit, %9, %6 - %.032 = phi i1 [ false, %6 ], [ false, %9 ], [ false, %_ZNK10open_spiel10backgammon15BackgammonState14CheckersInHomeEi.exit ], [ true, %37 ], [ true, %16 ], [ %33, %34 ], [ %33, %.preheader ], [ %exitcond.not, %40 ], [ %exitcond.not, %.preheader36 ] +.loopexit: ; preds = %.preheader36, %39, %.preheader, %33, %16, %36, %_ZNK10open_spiel10backgammon15BackgammonState14CheckersInHomeEi.exit, %9, %6 + %.032 = phi i1 [ false, %6 ], [ false, %9 ], [ false, %_ZNK10open_spiel10backgammon15BackgammonState14CheckersInHomeEi.exit ], [ true, %36 ], [ true, %16 ], [ %exitcond45.not, %33 ], [ %exitcond45.not, %.preheader ], [ %exitcond.not, %39 ], [ %exitcond.not, %.preheader36 ] ret i1 %.032 } @@ -22307,6 +22311,9 @@ declare void @llvm.assume(i1 noundef) #27 ; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: read) declare i32 @bcmp(ptr captures(none), ptr captures(none), i64) local_unnamed_addr #28 +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare i32 @llvm.smin.i32(i32, i32) #24 + ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i32 @llvm.umin.i32(i32, i32) #24 diff --git a/bench/openspiel/optimized/rbc.ll b/bench/openspiel/optimized/rbc.ll index d4ce0741d8b..f8ff0bd7554 100644 --- a/bench/openspiel/optimized/rbc.ll +++ b/bench/openspiel/optimized/rbc.ll @@ -13943,8 +13943,8 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_.exit: ; pr br i1 %104, label %.preheader.us.preheader, label %.preheader.preheader .preheader.preheader: ; preds = %.preheader.lr.ph - %.not122 = icmp eq i8 %.054104, 0 - br i1 %.not122, label %._crit_edge106, label %.lr.ph + %.not125 = icmp eq i8 %.054104, 0 + br i1 %.not125, label %._crit_edge106, label %.lr.ph .preheader.us.preheader: ; preds = %.preheader.lr.ph %114 = zext nneg i8 %.054104 to i32 @@ -13984,8 +13984,9 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_.exit: ; pr 125: ; preds = %124 %indvars.iv.next = add nsw i32 %indvars.iv, -1 - %126 = icmp sgt i32 %indvars.iv, 0 - br i1 %126, label %.preheader.us, label %._crit_edge106, !llvm.loop !101 + %126 = and i32 %indvars.iv.next, 255 + %exitcond117.not = icmp eq i32 %126, 255 + br i1 %exitcond117.not, label %._crit_edge106, label %.preheader.us, !llvm.loop !101 127: ; preds = %.preheader.us, %155 %.055103.us = phi i32 [ 0, %.preheader.us ], [ %.257.us, %155 ] @@ -14108,14 +14109,14 @@ _ZN4absl7debian28AlphaNumC2ISaIcEEERKNSt7__cxx1112basic_stringIcSt11char_traitsI unreachable .lr.ph: ; preds = %.preheader.preheader, %.preheader - %.054105123 = phi i8 [ %.054, %.preheader ], [ %.054104, %.preheader.preheader ] + %.054105126 = phi i8 [ %.054, %.preheader ], [ %.054104, %.preheader.preheader ] store ptr @.str.96, ptr %12, align 8 store i64 1, ptr %113, align 8 invoke void @_ZN4absl7debian29StrAppendEPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS0_8AlphaNumE(ptr noundef nonnull %0, ptr noundef nonnull align 8 dereferenceable(48) %12) to label %.preheader unwind label %.loopexit.split-lp.loopexit.split .preheader: ; preds = %.lr.ph - %.054 = add nsw i8 %.054105123, -1 + %.054 = add i8 %.054105126, -1 %.not = icmp eq i8 %.054, 0 br i1 %.not, label %._crit_edge106, label %.lr.ph, !llvm.loop !101 diff --git a/bench/openusd/optimized/patchBuilder.ll b/bench/openusd/optimized/patchBuilder.ll index 53a31ba2451..99c4453f0ea 100644 --- a/bench/openusd/optimized/patchBuilder.ll +++ b/bench/openusd/optimized/patchBuilder.ll @@ -4206,14 +4206,14 @@ define i64 @_ZNK10OpenSubdiv6v3_6_03Far12PatchBuilder17ComputePatchParamEiiRKNS1 br i1 %29, label %.lr.ph147.split.us, label %.lr.ph147.split .lr.ph147.split.us: ; preds = %.lr.ph147, %61 - %indvars.iv188 = phi i64 [ %indvars.iv.next189, %61 ], [ %30, %.lr.ph147 ] + %indvars.iv189 = phi i64 [ %indvars.iv.next190, %61 ], [ %30, %.lr.ph147 ] %.092145.us = phi i32 [ %.193.us, %61 ], [ 0, %.lr.ph147 ] %.094144.us = phi i32 [ %.195.us, %61 ], [ 0, %.lr.ph147 ] %.099143.us = phi i32 [ %63, %61 ], [ 1, %.lr.ph147 ] %.0102142.us = phi i8 [ %.1103.us, %61 ], [ 0, %.lr.ph147 ] %.0105141.us = phi i32 [ %37, %61 ], [ %2, %.lr.ph147 ] - %indvars.iv.next189 = add nsw i64 %indvars.iv188, -1 - %31 = getelementptr inbounds nuw ptr, ptr %26, i64 %indvars.iv.next189 + %indvars.iv.next190 = add nsw i64 %indvars.iv189, -1 + %31 = getelementptr inbounds nuw ptr, ptr %26, i64 %indvars.iv.next190 %32 = load ptr, ptr %31, align 8 %33 = getelementptr inbounds nuw i8, ptr %32, i64 264 %34 = sext i32 %.0105141.us to i64 @@ -4251,7 +4251,7 @@ define i64 @_ZNK10OpenSubdiv6v3_6_03Far12PatchBuilder17ComputePatchParamEiiRKNS1 br label %61 53: ; preds = %.lr.ph147.split.us - switch i8 %43, label %.unreachabledefault201 [ + switch i8 %43, label %.unreachabledefault204 [ i8 3, label %58 i8 1, label %56 i8 2, label %54 @@ -4277,20 +4277,21 @@ define i64 @_ZNK10OpenSubdiv6v3_6_03Far12PatchBuilder17ComputePatchParamEiiRKNS1 %.193.us = phi i32 [ %.092145.us, %53 ], [ %59, %58 ], [ %57, %56 ], [ %.092145.us, %54 ], [ %.092145.us, %45 ], [ %51, %50 ], [ %49, %48 ], [ %.092145.us, %46 ] %62 = shl nuw nsw i32 %.099143.us, 1 %63 = and i32 %62, 65534 - %64 = icmp samesign ugt i64 %indvars.iv188, 1 - br i1 %64, label %.lr.ph147.split.us, label %._crit_edge.split.us, !llvm.loop !24 + %64 = and i64 %indvars.iv.next190, 4294967295 + %exitcond192.not = icmp eq i64 %64, 0 + br i1 %exitcond192.not, label %._crit_edge.split.us, label %.lr.ph147.split.us, !llvm.loop !24 .unreachabledefault: ; preds = %45 unreachable -.unreachabledefault201: ; preds = %53 +.unreachabledefault204: ; preds = %53 unreachable default.unreachable: ; preds = %93 unreachable ._crit_edge.split.us: ; preds = %61 - %65 = getelementptr inbounds nuw ptr, ptr %28, i64 %indvars.iv.next189 + %65 = getelementptr inbounds nuw ptr, ptr %28, i64 %indvars.iv.next190 %66 = load ptr, ptr %65, align 8 %67 = getelementptr inbounds nuw i8, ptr %66, i64 24 %68 = shl nsw i32 %37, 1 @@ -4404,8 +4405,9 @@ default.unreachable: ; preds = %93 %.296 = phi i32 [ %.397, %108 ], [ %.094144, %111 ], [ %.094144, %.loopexit.loopexit.split.loop.exit ], [ %.094144, %126 ] %.2 = phi i32 [ %.3, %108 ], [ %.092145, %111 ], [ %.092145, %.loopexit.loopexit.split.loop.exit ], [ %.092145, %126 ] %.1 = phi i32 [ %100, %108 ], [ %.090146, %111 ], [ %127, %.loopexit.loopexit.split.loop.exit ], [ %.090146, %126 ] - %128 = icmp sgt i64 %indvars.iv185, 1 - br i1 %128, label %.lr.ph147.split, label %._crit_edge, !llvm.loop !24 + %128 = and i64 %indvars.iv.next186, 4294967295 + %exitcond188.not = icmp eq i64 %128, 0 + br i1 %exitcond188.not, label %._crit_edge, label %.lr.ph147.split, !llvm.loop !24 ._crit_edge: ; preds = %.loopexit, %._crit_edge.split.us, %7 %.0105.lcssa = phi i32 [ %2, %7 ], [ %37, %._crit_edge.split.us ], [ %85, %.loopexit ] diff --git a/bench/openusd/optimized/topologyDescriptor.ll b/bench/openusd/optimized/topologyDescriptor.ll index 9221cf9a972..b83b1c36335 100644 --- a/bench/openusd/optimized/topologyDescriptor.ll +++ b/bench/openusd/optimized/topologyDescriptor.ll @@ -677,14 +677,14 @@ define noundef zeroext i1 @_ZN10OpenSubdiv6v3_6_03Far22TopologyRefinerFactoryINS br label %9 9: ; preds = %.lr.ph33, %.loopexit - %indvars.iv47 = phi i64 [ 0, %.lr.ph33 ], [ %indvars.iv.next48, %.loopexit ] + %indvars.iv48 = phi i64 [ 0, %.lr.ph33 ], [ %indvars.iv.next49, %.loopexit ] %.01931 = phi i32 [ 0, %.lr.ph33 ], [ %.3, %.loopexit ] %10 = load ptr, ptr %6, align 8 %11 = load ptr, ptr %10, align 8 %12 = getelementptr inbounds nuw i8, ptr %11, i64 48 %13 = getelementptr inbounds nuw i8, ptr %11, i64 24 %14 = load ptr, ptr %13, align 8 - %.idx = shl i64 %indvars.iv47, 3 + %.idx = shl i64 %indvars.iv48, 3 %15 = getelementptr i8, ptr %14, i64 %.idx %16 = getelementptr i8, ptr %15, i64 4 %17 = load i32, ptr %16, align 4 @@ -730,8 +730,9 @@ define noundef zeroext i1 @_ZN10OpenSubdiv6v3_6_03Far22TopologyRefinerFactoryINS %37 = getelementptr inbounds nuw i32, ptr %20, i64 %indvars.iv.next43 store i32 %36, ptr %37, align 4 %indvars.iv.next41 = add nsw i64 %indvars.iv40, 1 - %38 = icmp samesign ugt i64 %indvars.iv42, 2 - br i1 %38, label %.lr.ph29, label %.loopexit.loopexit, !llvm.loop !19 + %38 = and i64 %indvars.iv.next43, 4294967295 + %exitcond47.not = icmp eq i64 %38, 1 + br i1 %exitcond47.not, label %.loopexit.loopexit, label %.lr.ph29, !llvm.loop !19 .lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph %indvars.iv35 = phi i64 [ %25, %.lr.ph.preheader ], [ %indvars.iv.next36, %.lr.ph ] @@ -756,10 +757,10 @@ define noundef zeroext i1 @_ZN10OpenSubdiv6v3_6_03Far22TopologyRefinerFactoryINS .loopexit: ; preds = %.loopexit.loopexit34, %.loopexit.loopexit, %.preheader, %26 %.3 = phi i32 [ %.126, %26 ], [ %.01931, %.preheader ], [ %43, %.loopexit.loopexit ], [ %44, %.loopexit.loopexit34 ] - %indvars.iv.next48 = add nuw nsw i64 %indvars.iv47, 1 + %indvars.iv.next49 = add nuw nsw i64 %indvars.iv48, 1 %45 = load i32, ptr %3, align 4 %46 = sext i32 %45 to i64 - %47 = icmp slt i64 %indvars.iv.next48, %46 + %47 = icmp slt i64 %indvars.iv.next49, %46 br i1 %47, label %9, label %._crit_edge, !llvm.loop !21 ._crit_edge: ; preds = %.loopexit, %2 @@ -959,9 +960,9 @@ define noundef zeroext i1 @_ZN10OpenSubdiv6v3_6_03Far22TopologyRefinerFactoryINS br label %11 11: ; preds = %.lr.ph49, %._crit_edge - %indvars.iv64 = phi i64 [ 0, %.lr.ph49 ], [ %indvars.iv.next65, %._crit_edge ] + %indvars.iv65 = phi i64 [ 0, %.lr.ph49 ], [ %indvars.iv.next66, %._crit_edge ] %12 = load ptr, ptr %6, align 8 - %13 = getelementptr inbounds nuw %"struct.OpenSubdiv::v3_6_0::Far::TopologyDescriptor::FVarChannel", ptr %12, i64 %indvars.iv64 + %13 = getelementptr inbounds nuw %"struct.OpenSubdiv::v3_6_0::Far::TopologyDescriptor::FVarChannel", ptr %12, i64 %indvars.iv65 %14 = load i32, ptr %13, align 8 %15 = getelementptr inbounds nuw i8, ptr %13, i64 8 %16 = load ptr, ptr %15, align 8 @@ -973,7 +974,7 @@ define noundef zeroext i1 @_ZN10OpenSubdiv6v3_6_03Far22TopologyRefinerFactoryINS br i1 %21, label %.lr.ph47.preheader, label %._crit_edge .lr.ph47.preheader: ; preds = %11 - %22 = trunc nuw nsw i64 %indvars.iv64 to i32 + %22 = trunc nuw nsw i64 %indvars.iv65 to i32 br label %.lr.ph47 .lr.ph47: ; preds = %.lr.ph47.preheader, %.loopexit @@ -1020,8 +1021,9 @@ define noundef zeroext i1 @_ZN10OpenSubdiv6v3_6_03Far22TopologyRefinerFactoryINS %39 = getelementptr inbounds nuw i32, ptr %.fca.0.extract, i64 %indvars.iv.next60 store i32 %38, ptr %39, align 4 %indvars.iv.next58 = add nsw i64 %indvars.iv57, 1 - %40 = icmp samesign ugt i64 %indvars.iv59, 2 - br i1 %40, label %.lr.ph43, label %.loopexit.loopexit, !llvm.loop !25 + %40 = and i64 %indvars.iv.next60, 4294967295 + %exitcond64.not = icmp eq i64 %40, 1 + br i1 %exitcond64.not, label %.loopexit.loopexit, label %.lr.ph43, !llvm.loop !25 .lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph %indvars.iv52 = phi i64 [ %29, %.lr.ph.preheader ], [ %indvars.iv.next53, %.lr.ph ] @@ -1051,10 +1053,10 @@ define noundef zeroext i1 @_ZN10OpenSubdiv6v3_6_03Far22TopologyRefinerFactoryINS br i1 %48, label %.lr.ph47, label %._crit_edge, !llvm.loop !27 ._crit_edge: ; preds = %.loopexit, %11 - %indvars.iv.next65 = add nuw nsw i64 %indvars.iv64, 1 + %indvars.iv.next66 = add nuw nsw i64 %indvars.iv65, 1 %49 = load i32, ptr %3, align 4 %50 = sext i32 %49 to i64 - %51 = icmp slt i64 %indvars.iv.next65, %50 + %51 = icmp slt i64 %indvars.iv.next66, %50 br i1 %51, label %11, label %.loopexit37, !llvm.loop !28 .loopexit37: ; preds = %._crit_edge, %2 diff --git a/bench/ozz-animation/optimized/animation_optimizer.ll b/bench/ozz-animation/optimized/animation_optimizer.ll index a83e9a61a6a..fab2c8a8337 100644 --- a/bench/ozz-animation/optimized/animation_optimizer.ll +++ b/bench/ozz-animation/optimized/animation_optimizer.ll @@ -283,11 +283,11 @@ _ZNSt5_BindIFMN3ozz9animation7offline12_GLOBAL__N_116HierarchyBuilderEFviiEPS4_S %101 = sub i64 %99, %100 %102 = ashr exact i64 %101, 4 %.not.i.i = icmp eq ptr %97, %98 - br i1 %.not.i.i, label %.loopexit.i.i, label %.lr.ph.i62.i + br i1 %.not.i.i, label %.loopexit.i.i, label %.lr.ph.i63.i -.lr.ph.i62.i: ; preds = %_ZNSt5_BindIFMN3ozz9animation7offline12_GLOBAL__N_116HierarchyBuilderEFviiEPS4_St12_PlaceholderILi1EES8_ILi2EEEEclIJRiRKsEvEET0_DpOT_.exit.i.i, %.lr.ph.i62.i - %.029.i.i = phi float [ %118, %.lr.ph.i62.i ], [ 0.000000e+00, %_ZNSt5_BindIFMN3ozz9animation7offline12_GLOBAL__N_116HierarchyBuilderEFviiEPS4_St12_PlaceholderILi1EES8_ILi2EEEEclIJRiRKsEvEET0_DpOT_.exit.i.i ] - %.02328.i.i = phi i64 [ %119, %.lr.ph.i62.i ], [ 0, %_ZNSt5_BindIFMN3ozz9animation7offline12_GLOBAL__N_116HierarchyBuilderEFviiEPS4_St12_PlaceholderILi1EES8_ILi2EEEEclIJRiRKsEvEET0_DpOT_.exit.i.i ] +.lr.ph.i63.i: ; preds = %_ZNSt5_BindIFMN3ozz9animation7offline12_GLOBAL__N_116HierarchyBuilderEFviiEPS4_St12_PlaceholderILi1EES8_ILi2EEEEclIJRiRKsEvEET0_DpOT_.exit.i.i, %.lr.ph.i63.i + %.029.i.i = phi float [ %118, %.lr.ph.i63.i ], [ 0.000000e+00, %_ZNSt5_BindIFMN3ozz9animation7offline12_GLOBAL__N_116HierarchyBuilderEFviiEPS4_St12_PlaceholderILi1EES8_ILi2EEEEclIJRiRKsEvEET0_DpOT_.exit.i.i ] + %.02328.i.i = phi i64 [ %119, %.lr.ph.i63.i ], [ 0, %_ZNSt5_BindIFMN3ozz9animation7offline12_GLOBAL__N_116HierarchyBuilderEFviiEPS4_St12_PlaceholderILi1EES8_ILi2EEEEclIJRiRKsEvEET0_DpOT_.exit.i.i ] %103 = getelementptr inbounds nuw %"struct.ozz::animation::offline::RawAnimation::ScaleKey", ptr %98, i64 %.02328.i.i %104 = getelementptr inbounds nuw i8, ptr %103, i64 4 %105 = load float, ptr %104, align 4, !tbaa !37 @@ -305,11 +305,11 @@ _ZNSt5_BindIFMN3ozz9animation7offline12_GLOBAL__N_116HierarchyBuilderEFviiEPS4_S %117 = fcmp olt float %116, %.029.i.i %118 = select i1 %117, float %.029.i.i, float %116 %119 = add nuw i64 %.02328.i.i, 1 - %exitcond.not.i63.i = icmp eq i64 %119, %102 - br i1 %exitcond.not.i63.i, label %.loopexit.i.i, label %.lr.ph.i62.i, !llvm.loop !42 + %exitcond.not.i64.i = icmp eq i64 %119, %102 + br i1 %exitcond.not.i64.i, label %.loopexit.i.i, label %.lr.ph.i63.i, !llvm.loop !42 -.loopexit.i.i: ; preds = %.lr.ph.i62.i, %_ZNSt5_BindIFMN3ozz9animation7offline12_GLOBAL__N_116HierarchyBuilderEFviiEPS4_St12_PlaceholderILi1EES8_ILi2EEEEclIJRiRKsEvEET0_DpOT_.exit.i.i - %.1.i.i = phi float [ 1.000000e+00, %_ZNSt5_BindIFMN3ozz9animation7offline12_GLOBAL__N_116HierarchyBuilderEFviiEPS4_St12_PlaceholderILi1EES8_ILi2EEEEclIJRiRKsEvEET0_DpOT_.exit.i.i ], [ %118, %.lr.ph.i62.i ] +.loopexit.i.i: ; preds = %.lr.ph.i63.i, %_ZNSt5_BindIFMN3ozz9animation7offline12_GLOBAL__N_116HierarchyBuilderEFviiEPS4_St12_PlaceholderILi1EES8_ILi2EEEEclIJRiRKsEvEET0_DpOT_.exit.i.i + %.1.i.i = phi float [ 1.000000e+00, %_ZNSt5_BindIFMN3ozz9animation7offline12_GLOBAL__N_116HierarchyBuilderEFviiEPS4_St12_PlaceholderILi1EES8_ILi2EEEEclIJRiRKsEvEET0_DpOT_.exit.i.i ], [ %118, %.lr.ph.i63.i ] %120 = getelementptr inbounds nuw i8, ptr %94, i64 4 store float %.1.i.i, ptr %120, align 4, !tbaa !43 %.not25.i.i = icmp eq i16 %.val.val.i.i.i, -1 @@ -387,24 +387,24 @@ _ZNSt5_BindIFMN3ozz9animation7offline12_GLOBAL__N_116HierarchyBuilderEFviiEPS4_S br i1 %145, label %_ZN3ozz9animation7offline12_GLOBAL__N_116HierarchyBuilder21ComputeLengthBackwardEii.exit.i, label %146 146: ; preds = %_ZNSt5_BindIFMN3ozz9animation7offline12_GLOBAL__N_116HierarchyBuilderEFviiEPS4_St12_PlaceholderILi1EES8_ILi2EEEEclIJRiRKsEvEET0_DpOT_.exit.i39.i - %sext68.i = shl i64 %indvars.iv.next.i33.i, 32 - %147 = ashr exact i64 %sext68.i, 32 + %sext69.i = shl i64 %indvars.iv.next.i33.i, 32 + %147 = ashr exact i64 %sext69.i, 32 %148 = getelementptr inbounds nuw %"struct.ozz::animation::offline::RawAnimation::JointTrack", ptr %88, i64 %147 %149 = getelementptr inbounds nuw i8, ptr %148, i64 8 %150 = load ptr, ptr %149, align 8, !tbaa !57 %151 = load ptr, ptr %148, align 8, !tbaa !60 - %.not.i64.i = icmp eq ptr %150, %151 - br i1 %.not.i64.i, label %._crit_edge.i.i, label %.lr.ph.preheader.i.i + %.not.i65.i = icmp eq ptr %150, %151 + br i1 %.not.i65.i, label %._crit_edge.i.i, label %.lr.ph.preheader.i.i .lr.ph.preheader.i.i: ; preds = %146 %152 = ptrtoint ptr %150 to i64 %153 = ptrtoint ptr %151 to i64 %154 = sub i64 %152, %153 %155 = ashr exact i64 %154, 4 - br label %.lr.ph.i65.i + br label %.lr.ph.i66.i -._crit_edge.i.i: ; preds = %.lr.ph.i65.i, %146 - %.0.lcssa.i.i = phi float [ 0.000000e+00, %146 ], [ %183, %.lr.ph.i65.i ] +._crit_edge.i.i: ; preds = %.lr.ph.i66.i, %146 + %.0.lcssa.i.i = phi float [ 0.000000e+00, %146 ], [ %183, %.lr.ph.i66.i ] %156 = call noundef float @sqrtf(float noundef %.0.lcssa.i.i) #16, !tbaa !45 %157 = getelementptr inbounds nuw %"struct.ozz::animation::offline::(anonymous namespace)::HierarchyBuilder::Spec", ptr %.sroa.0249.0, i64 %147 %158 = sext i16 %.val.val.i.i34.i to i64 @@ -426,9 +426,9 @@ _ZNSt5_BindIFMN3ozz9animation7offline12_GLOBAL__N_116HierarchyBuilderEFviiEPS4_S store float %172, ptr %167, align 4, !tbaa !50 br label %_ZN3ozz9animation7offline12_GLOBAL__N_116HierarchyBuilder21ComputeLengthBackwardEii.exit.i -.lr.ph.i65.i: ; preds = %.lr.ph.i65.i, %.lr.ph.preheader.i.i - %.023.i.i = phi float [ %183, %.lr.ph.i65.i ], [ 0.000000e+00, %.lr.ph.preheader.i.i ] - %.01922.i.i = phi i64 [ %184, %.lr.ph.i65.i ], [ 0, %.lr.ph.preheader.i.i ] +.lr.ph.i66.i: ; preds = %.lr.ph.i66.i, %.lr.ph.preheader.i.i + %.023.i.i = phi float [ %183, %.lr.ph.i66.i ], [ 0.000000e+00, %.lr.ph.preheader.i.i ] + %.01922.i.i = phi i64 [ %184, %.lr.ph.i66.i ], [ 0, %.lr.ph.preheader.i.i ] %173 = getelementptr inbounds nuw %"struct.ozz::animation::offline::RawAnimation::TranslationKey", ptr %151, i64 %.01922.i.i, i32 1 %174 = load float, ptr %173, align 4, !tbaa !37 %175 = getelementptr inbounds nuw i8, ptr %173, i64 4 @@ -441,12 +441,13 @@ _ZNSt5_BindIFMN3ozz9animation7offline12_GLOBAL__N_116HierarchyBuilderEFviiEPS4_S %182 = fcmp olt float %181, %.023.i.i %183 = select i1 %182, float %.023.i.i, float %181 %184 = add nuw i64 %.01922.i.i, 1 - %exitcond.not.i66.i = icmp eq i64 %184, %155 - br i1 %exitcond.not.i66.i, label %._crit_edge.i.i, label %.lr.ph.i65.i, !llvm.loop !61 + %exitcond.not.i67.i = icmp eq i64 %184, %155 + br i1 %exitcond.not.i67.i, label %._crit_edge.i.i, label %.lr.ph.i66.i, !llvm.loop !61 _ZN3ozz9animation7offline12_GLOBAL__N_116HierarchyBuilder21ComputeLengthBackwardEii.exit.i: ; preds = %._crit_edge.i.i, %_ZNSt5_BindIFMN3ozz9animation7offline12_GLOBAL__N_116HierarchyBuilderEFviiEPS4_St12_PlaceholderILi1EES8_ILi2EEEEclIJRiRKsEvEET0_DpOT_.exit.i39.i - %185 = icmp samesign ugt i64 %indvars.iv.i32.i, 1 - br i1 %185, label %_ZNSt5_BindIFMN3ozz9animation7offline12_GLOBAL__N_116HierarchyBuilderEFviiEPS4_St12_PlaceholderILi1EES8_ILi2EEEEclIJRiRKsEvEET0_DpOT_.exit.i39.i, label %_ZN3ozz9animation7offline12_GLOBAL__N_116HierarchyBuilderC2EPKNS1_12RawAnimationEPKNS0_8SkeletonEPKNS1_18AnimationOptimizerE.exit, !llvm.loop !62 + %185 = and i64 %indvars.iv.next.i33.i, 4294967295 + %exitcond.not.i40.i = icmp eq i64 %185, 0 + br i1 %exitcond.not.i40.i, label %_ZN3ozz9animation7offline12_GLOBAL__N_116HierarchyBuilderC2EPKNS1_12RawAnimationEPKNS0_8SkeletonEPKNS1_18AnimationOptimizerE.exit, label %_ZNSt5_BindIFMN3ozz9animation7offline12_GLOBAL__N_116HierarchyBuilderEFviiEPS4_St12_PlaceholderILi1EES8_ILi2EEEEclIJRiRKsEvEET0_DpOT_.exit.i39.i, !llvm.loop !62 _ZN3ozz9animation7offline12_GLOBAL__N_116HierarchyBuilderC2EPKNS1_12RawAnimationEPKNS0_8SkeletonEPKNS1_18AnimationOptimizerE.exit: ; preds = %_ZN3ozz9animation7offline12_GLOBAL__N_116HierarchyBuilder21ComputeLengthBackwardEii.exit.i, %_ZNSt12_Vector_baseIN3ozz9animation7offline12_GLOBAL__N_116HierarchyBuilder4SpecENS0_12StdAllocatorIS5_EEEC2EmRKS7_.exit.thread.i.i %186 = getelementptr inbounds nuw i8, ptr %1, i64 32 diff --git a/bench/ozz-animation/optimized/jsoncpp.ll b/bench/ozz-animation/optimized/jsoncpp.ll index c3bb07ba975..824bc2cf652 100644 --- a/bench/ozz-animation/optimized/jsoncpp.ll +++ b/bench/ozz-animation/optimized/jsoncpp.ll @@ -22275,110 +22275,115 @@ define dso_local void @_ZN4Json13valueToStringB5cxx11Ex(ptr dead_on_unwind noali %4 = alloca [25 x i8], align 16 call void @llvm.lifetime.start.p0(i64 25, ptr nonnull %4) #44 %5 = icmp eq i64 %1, -9223372036854775808 - br i1 %5, label %6, label %14 + br i1 %5, label %6, label %12 6: ; preds = %2 - %7 = getelementptr inbounds nuw i8, ptr %4, i64 24 - store i8 0, ptr %7, align 8, !tbaa !17 - br label %8 + %.ptr20 = getelementptr inbounds nuw i8, ptr %4, i64 24 + store i8 0, ptr %.ptr20, align 8, !tbaa !17 + br label %7 -8: ; preds = %8, %6 - %.1 = phi ptr [ %7, %6 ], [ %12, %8 ] - %.0.i = phi i64 [ -9223372036854775808, %6 ], [ %13, %8 ] - %9 = urem i64 %.0.i, 10 - %10 = trunc nuw nsw i64 %9 to i8 - %11 = or disjoint i8 %10, 48 - %12 = getelementptr inbounds i8, ptr %.1, i64 -1 - store i8 %11, ptr %12, align 1, !tbaa !17 - %13 = udiv i64 %.0.i, 10 - %.not.i = icmp ult i64 %.0.i, 10 - br i1 %.not.i, label %.loopexit.sink.split, label %8, !llvm.loop !348 +7: ; preds = %7, %6 + %.1.idx = phi i64 [ 24, %6 ], [ %.1.add, %7 ] + %.0.i = phi i64 [ -9223372036854775808, %6 ], [ %11, %7 ] + %8 = urem i64 %.0.i, 10 + %9 = trunc nuw nsw i64 %8 to i8 + %10 = or disjoint i8 %9, 48 + %.1.add = add nsw i64 %.1.idx, -1 + %.ptr = getelementptr inbounds i8, ptr %4, i64 %.1.add + store i8 %10, ptr %.ptr, align 1, !tbaa !17 + %11 = udiv i64 %.0.i, 10 + %exitcond = icmp eq i64 %.1.add, 5 + br i1 %exitcond, label %_ZN4JsonL12uintToStringEyRPc.exit, label %7, !llvm.loop !348 -14: ; preds = %2 - %15 = icmp slt i64 %1, 0 - br i1 %15, label %16, label %25 +_ZN4JsonL12uintToStringEyRPc.exit: ; preds = %7 + %.1.ptr = getelementptr inbounds i8, ptr %4, i64 %.1.idx + br label %.loopexit.sink.split -16: ; preds = %14 - %17 = sub nsw i64 0, %1 - %18 = getelementptr inbounds nuw i8, ptr %4, i64 24 - store i8 0, ptr %18, align 8, !tbaa !17 - br label %19 +12: ; preds = %2 + %13 = icmp slt i64 %1, 0 + br i1 %13, label %14, label %23 + +14: ; preds = %12 + %15 = sub nsw i64 0, %1 + %16 = getelementptr inbounds nuw i8, ptr %4, i64 24 + store i8 0, ptr %16, align 8, !tbaa !17 + br label %17 -19: ; preds = %19, %16 - %.2 = phi ptr [ %18, %16 ], [ %23, %19 ] - %.0.i5 = phi i64 [ %17, %16 ], [ %24, %19 ] - %20 = urem i64 %.0.i5, 10 - %21 = trunc nuw nsw i64 %20 to i8 - %22 = or disjoint i8 %21, 48 - %23 = getelementptr inbounds i8, ptr %.2, i64 -1 - store i8 %22, ptr %23, align 1, !tbaa !17 - %24 = udiv i64 %.0.i5, 10 +17: ; preds = %17, %14 + %.2 = phi ptr [ %16, %14 ], [ %21, %17 ] + %.0.i5 = phi i64 [ %15, %14 ], [ %22, %17 ] + %18 = urem i64 %.0.i5, 10 + %19 = trunc nuw nsw i64 %18 to i8 + %20 = or disjoint i8 %19, 48 + %21 = getelementptr inbounds i8, ptr %.2, i64 -1 + store i8 %20, ptr %21, align 1, !tbaa !17 + %22 = udiv i64 %.0.i5, 10 %.not.i6 = icmp samesign ult i64 %.0.i5, 10 - br i1 %.not.i6, label %.loopexit.sink.split, label %19, !llvm.loop !348 + br i1 %.not.i6, label %.loopexit.sink.split, label %17, !llvm.loop !348 -25: ; preds = %14 - %26 = getelementptr inbounds nuw i8, ptr %4, i64 24 - store i8 0, ptr %26, align 8, !tbaa !17 - br label %27 +23: ; preds = %12 + %24 = getelementptr inbounds nuw i8, ptr %4, i64 24 + store i8 0, ptr %24, align 8, !tbaa !17 + br label %25 -27: ; preds = %27, %25 - %.3 = phi ptr [ %26, %25 ], [ %31, %27 ] - %.0.i8 = phi i64 [ %1, %25 ], [ %32, %27 ] - %28 = urem i64 %.0.i8, 10 - %29 = trunc nuw nsw i64 %28 to i8 - %30 = or disjoint i8 %29, 48 - %31 = getelementptr inbounds i8, ptr %.3, i64 -1 - store i8 %30, ptr %31, align 1, !tbaa !17 - %32 = udiv i64 %.0.i8, 10 +25: ; preds = %25, %23 + %.3 = phi ptr [ %24, %23 ], [ %29, %25 ] + %.0.i8 = phi i64 [ %1, %23 ], [ %30, %25 ] + %26 = urem i64 %.0.i8, 10 + %27 = trunc nuw nsw i64 %26 to i8 + %28 = or disjoint i8 %27, 48 + %29 = getelementptr inbounds i8, ptr %.3, i64 -1 + store i8 %28, ptr %29, align 1, !tbaa !17 + %30 = udiv i64 %.0.i8, 10 %.not.i9 = icmp ult i64 %.0.i8, 10 - br i1 %.not.i9, label %.loopexit, label %27, !llvm.loop !348 + br i1 %.not.i9, label %.loopexit, label %25, !llvm.loop !348 -.loopexit.sink.split: ; preds = %19, %8 - %.1.lcssa.sink = phi ptr [ %.1, %8 ], [ %.2, %19 ] - %33 = getelementptr inbounds i8, ptr %.1.lcssa.sink, i64 -2 - store i8 45, ptr %33, align 1, !tbaa !17 +.loopexit.sink.split: ; preds = %17, %_ZN4JsonL12uintToStringEyRPc.exit + %.1.ptr.sink = phi ptr [ %.1.ptr, %_ZN4JsonL12uintToStringEyRPc.exit ], [ %.2, %17 ] + %31 = getelementptr inbounds i8, ptr %.1.ptr.sink, i64 -2 + store i8 45, ptr %31, align 1, !tbaa !17 br label %.loopexit -.loopexit: ; preds = %27, %.loopexit.sink.split - %.0 = phi ptr [ %33, %.loopexit.sink.split ], [ %31, %27 ] - %34 = getelementptr inbounds nuw i8, ptr %0, i64 16 - store ptr %34, ptr %0, align 8, !tbaa !10 - %35 = call noundef i64 @strlen(ptr noundef nonnull dereferenceable(1) %.0) #44 +.loopexit: ; preds = %25, %.loopexit.sink.split + %.0 = phi ptr [ %31, %.loopexit.sink.split ], [ %29, %25 ] + %32 = getelementptr inbounds nuw i8, ptr %0, i64 16 + store ptr %32, ptr %0, align 8, !tbaa !10 + %33 = call noundef i64 @strlen(ptr noundef nonnull dereferenceable(1) %.0) #44 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #44 - store i64 %35, ptr %3, align 8, !tbaa !90 - %36 = icmp ugt i64 %35, 15 - br i1 %36, label %.noexc.i, label %._crit_edge.i.i + store i64 %33, ptr %3, align 8, !tbaa !90 + %34 = icmp ugt i64 %33, 15 + br i1 %34, label %.noexc.i, label %._crit_edge.i.i .noexc.i: ; preds = %.loopexit - %37 = call noundef ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(8) %3, i64 noundef 0) - store ptr %37, ptr %0, align 8, !tbaa !45 - %38 = load i64, ptr %3, align 8, !tbaa !90 - store i64 %38, ptr %34, align 8, !tbaa !17 + %35 = call noundef ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(8) %3, i64 noundef 0) + store ptr %35, ptr %0, align 8, !tbaa !45 + %36 = load i64, ptr %3, align 8, !tbaa !90 + store i64 %36, ptr %32, align 8, !tbaa !17 br label %._crit_edge.i.i ._crit_edge.i.i: ; preds = %.noexc.i, %.loopexit - %39 = phi ptr [ %37, %.noexc.i ], [ %34, %.loopexit ] - switch i64 %35, label %42 [ - i64 1, label %40 - i64 0, label %43 + %37 = phi ptr [ %35, %.noexc.i ], [ %32, %.loopexit ] + switch i64 %33, label %40 [ + i64 1, label %38 + i64 0, label %41 ] -40: ; preds = %._crit_edge.i.i - %41 = load i8, ptr %.0, align 1, !tbaa !17 - store i8 %41, ptr %39, align 1, !tbaa !17 - br label %43 - -42: ; preds = %._crit_edge.i.i - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %39, ptr nonnull align 1 %.0, i64 %35, i1 false) - br label %43 +38: ; preds = %._crit_edge.i.i + %39 = load i8, ptr %.0, align 1, !tbaa !17 + store i8 %39, ptr %37, align 1, !tbaa !17 + br label %41 -43: ; preds = %42, %40, %._crit_edge.i.i - %44 = load i64, ptr %3, align 8, !tbaa !90 - %45 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 %44, ptr %45, align 8, !tbaa !14 - %46 = load ptr, ptr %0, align 8, !tbaa !45 - %47 = getelementptr inbounds nuw i8, ptr %46, i64 %44 - store i8 0, ptr %47, align 1, !tbaa !17 +40: ; preds = %._crit_edge.i.i + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %37, ptr nonnull align 1 %.0, i64 %33, i1 false) + br label %41 + +41: ; preds = %40, %38, %._crit_edge.i.i + %42 = load i64, ptr %3, align 8, !tbaa !90 + %43 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store i64 %42, ptr %43, align 8, !tbaa !14 + %44 = load ptr, ptr %0, align 8, !tbaa !45 + %45 = getelementptr inbounds nuw i8, ptr %44, i64 %42 + store i8 0, ptr %45, align 1, !tbaa !17 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #44 call void @llvm.lifetime.end.p0(i64 25, ptr nonnull %4) #44 ret void diff --git a/bench/pbrt-v4/optimized/integrators.ll b/bench/pbrt-v4/optimized/integrators.ll index 11ecc0f4854..ff8aef7ce74 100644 --- a/bench/pbrt-v4/optimized/integrators.ll +++ b/bench/pbrt-v4/optimized/integrators.ll @@ -38518,10 +38518,10 @@ define dso_local noundef float @_ZN4pbrt9MISWeightERKNS_10IntegratorENS_6CameraE %.sroa.15393.0.copyload = load float, ptr %.sroa.15393.0..sroa_idx, align 8 %.sroa.16396.0..sroa_idx = getelementptr inbounds nuw i8, ptr %4, i64 332 %.sroa.16396.0.copyload = load i32, ptr %.sroa.16396.0..sroa_idx, align 4 - %.sroa.7402.4..sroa_idx556 = getelementptr inbounds nuw i8, ptr %.sroa.7402, i64 4 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %.sroa.7402.4..sroa_idx556, i8 0, i64 16, i1 false), !tbaa !198 - %.sroa.7402.24..sroa_idx557 = getelementptr inbounds nuw i8, ptr %.sroa.7402, i64 24 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(88) %.sroa.7402.24..sroa_idx557, i8 0, i64 88, i1 false) + %.sroa.7402.4..sroa_idx559 = getelementptr inbounds nuw i8, ptr %.sroa.7402, i64 4 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %.sroa.7402.4..sroa_idx559, i8 0, i64 16, i1 false), !tbaa !198 + %.sroa.7402.24..sroa_idx560 = getelementptr inbounds nuw i8, ptr %.sroa.7402, i64 24 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(88) %.sroa.7402.24..sroa_idx560, i8 0, i64 88, i1 false) %.not.i = icmp eq ptr %16, null br i1 %.not.i, label %_ZN4pbrt16ScopedAssignmentINS_6VertexEED2Ev.exit, label %31 @@ -38639,10 +38639,10 @@ _ZN4pbrt16ScopedAssignmentINS_6VertexEED2Ev.exit: ; preds = %30, %31 %.sroa.15.0.copyload = load float, ptr %.sroa.15.0..sroa_idx, align 8 %.sroa.16.0..sroa_idx = getelementptr inbounds nuw i8, ptr %4, i64 332 %.sroa.16.0.copyload = load i32, ptr %.sroa.16.0..sroa_idx, align 4 - %.sroa.7297.4..sroa_idx554 = getelementptr inbounds nuw i8, ptr %.sroa.7297, i64 4 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %.sroa.7297.4..sroa_idx554, i8 0, i64 16, i1 false), !tbaa !198 - %.sroa.7297.24..sroa_idx555 = getelementptr inbounds nuw i8, ptr %.sroa.7297, i64 24 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(88) %.sroa.7297.24..sroa_idx555, i8 0, i64 88, i1 false) + %.sroa.7297.4..sroa_idx557 = getelementptr inbounds nuw i8, ptr %.sroa.7297, i64 4 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %.sroa.7297.4..sroa_idx557, i8 0, i64 16, i1 false), !tbaa !198 + %.sroa.7297.24..sroa_idx558 = getelementptr inbounds nuw i8, ptr %.sroa.7297, i64 24 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(88) %.sroa.7297.24..sroa_idx558, i8 0, i64 88, i1 false) %.not.i146 = icmp eq ptr %21, null br i1 %.not.i146, label %_ZN4pbrt16ScopedAssignmentINS_6VertexEED2Ev.exit149, label %35 @@ -38939,11 +38939,12 @@ _ZN4pbrt16ScopedAssignmentIfED2Ev.exit183: ; preds = %71 113: ; preds = %109, %.lr.ph %.1102 = phi float [ %.0101521, %.lr.ph ], [ %spec.select142, %109 ] - %114 = icmp samesign ugt i64 %indvars.iv, 2 - br i1 %114, label %.lr.ph, label %.preheader, !llvm.loop !976 + %114 = and i64 %indvars.iv.next, 4294967295 + %exitcond.not = icmp eq i64 %114, 1 + br i1 %exitcond.not, label %.preheader, label %.lr.ph, !llvm.loop !976 ._crit_edge: ; preds = %_ZNK4pbrt6Vertex12IsDeltaLightEv.exit, %_ZNK4pbrt6Vertex12IsDeltaLightEv.exit.thread, %.preheader - %.2103.lcssa = phi float [ %.0101.lcssa, %.preheader ], [ %spec.select144541, %_ZNK4pbrt6Vertex12IsDeltaLightEv.exit.thread ], [ %spec.select144, %_ZNK4pbrt6Vertex12IsDeltaLightEv.exit ] + %.2103.lcssa = phi float [ %.0101.lcssa, %.preheader ], [ %spec.select144543, %_ZNK4pbrt6Vertex12IsDeltaLightEv.exit.thread ], [ %spec.select144, %_ZNK4pbrt6Vertex12IsDeltaLightEv.exit ] %115 = icmp eq i32 %6, 1 %116 = fdiv float %.2103.lcssa, %91 %spec.select143 = select i1 %115, float %116, float %.2103.lcssa @@ -39082,9 +39083,9 @@ _ZNK4pbrt6Vertex12IsDeltaLightEv.exit.thread: ; preds = %144, %141, %138 %148 = getelementptr inbounds nuw i8, ptr %127, i64 320 %149 = load i8, ptr %148, align 8, !tbaa !947, !range !116, !noundef !117 %150 = trunc nuw i8 %149 to i1 - %or.cond540 = select i1 %150, i1 true, i1 %.ph + %or.cond542 = select i1 %150, i1 true, i1 %.ph %151 = fadd float %.2103528, %137 - %spec.select144541 = select i1 %or.cond540, float %.2103528, float %151 + %spec.select144543 = select i1 %or.cond542, float %.2103528, float %151 br label %._crit_edge _ZNK4pbrt6Vertex12IsDeltaLightEv.exit: ; preds = %126 @@ -39096,8 +39097,9 @@ _ZNK4pbrt6Vertex12IsDeltaLightEv.exit: ; preds = %126 %or.cond.not = icmp eq i8 %155, 0 %156 = fadd float %.2103528, %137 %spec.select144 = select i1 %or.cond.not, float %156, float %.2103528 - %157 = icmp sgt i64 %indvars.iv535, 1 - br i1 %157, label %126, label %._crit_edge, !llvm.loop !977 + %157 = and i64 %indvars.iv.next536, 4294967295 + %exitcond539.not = icmp eq i64 %157, 0 + br i1 %exitcond539.not, label %._crit_edge, label %126, !llvm.loop !977 158: ; preds = %_ZN4pbrt16ScopedAssignmentIfED2Ev.exit183 store float %.sroa.7214.0, ptr %.sroa.0212.0, align 4, !tbaa !198 @@ -62249,8 +62251,9 @@ define linkonce_odr dso_local noundef float @_ZN4pbrt13ZSobolSampler5Get1DEv(ptr %36 = zext i8 %35 to i64 %37 = shl i64 %36, %18 %38 = or i64 %37, %.023.i - %.not.not20.i = icmp samesign ugt i64 %indvars.iv.next.i, %14 - br i1 %.not.not20.i, label %15, label %._crit_edge.i, !llvm.loop !1539 + %lftr.wideiv.i = trunc i64 %indvars.iv.next.i to i32 + %exitcond.not.i = icmp eq i32 %4, %lftr.wideiv.i + br i1 %exitcond.not.i, label %._crit_edge.i, label %15, !llvm.loop !1539 39: ; preds = %._crit_edge.i %40 = getelementptr inbounds nuw i8, ptr %0, i64 16 @@ -65575,8 +65578,9 @@ define linkonce_odr dso_local <2 x float> @_ZN4pbrt13ZSobolSampler5Get2DEv(ptr n %36 = zext i8 %35 to i64 %37 = shl i64 %36, %18 %38 = or i64 %37, %.023.i - %.not.not20.i = icmp samesign ugt i64 %indvars.iv.next.i, %14 - br i1 %.not.not20.i, label %15, label %._crit_edge.i, !llvm.loop !1539 + %lftr.wideiv.i = trunc i64 %indvars.iv.next.i to i32 + %exitcond.not.i = icmp eq i32 %4, %lftr.wideiv.i + br i1 %exitcond.not.i, label %._crit_edge.i, label %15, !llvm.loop !1539 39: ; preds = %._crit_edge.i %40 = getelementptr inbounds nuw i8, ptr %0, i64 16 diff --git a/bench/php/optimized/plain_wrapper.ll b/bench/php/optimized/plain_wrapper.ll index 2b63857bff8..99df1eb139a 100644 --- a/bench/php/optimized/plain_wrapper.ll +++ b/bench/php/optimized/plain_wrapper.ll @@ -2247,28 +2247,31 @@ define internal range(i32 0, 2) i32 @php_plain_files_mkdir(ptr readnone captures .lr.ph.us.preheader: ; preds = %.critedge.us %41 = trunc i64 %39 to i32 %42 = sub i32 %41, %37 + %scevgep132 = getelementptr i8, ptr %38, i64 %7 + %43 = sub i64 0, %39 + %scevgep133 = getelementptr i8, ptr %scevgep132, i64 %43 br label %.lr.ph.us -.lr.ph.us: ; preds = %.lr.ph.us.preheader, %48 - %.052102.us = phi i32 [ %49, %48 ], [ 0, %.lr.ph.us.preheader ] - %.261101.us = phi ptr [ %43, %48 ], [ %38, %.lr.ph.us.preheader ] - %43 = getelementptr inbounds i8, ptr %.261101.us, i64 -1 - %44 = load i8, ptr %43, align 1, !tbaa !4 - %45 = icmp eq i8 %44, 47 - br i1 %45, label %48, label %.critedge5.us - -.critedge5.us: ; preds = %.lr.ph.us, %48, %.critedge.us - %.261.lcssa.us = phi ptr [ %38, %.critedge.us ], [ %43, %48 ], [ %.261101.us, %.lr.ph.us ] - %.052.lcssa.us = phi i32 [ 0, %.critedge.us ], [ %42, %48 ], [ %.052102.us, %.lr.ph.us ] - %46 = call i32 @stat(ptr noundef nonnull %6, ptr noundef nonnull %8) #17 - %47 = icmp eq i32 %46, 0 - br i1 %47, label %.preheader, label %.preheader97.split.us - -48: ; preds = %.lr.ph.us - %49 = add nuw nsw i32 %.052102.us, 1 - store i8 0, ptr %43, align 1, !tbaa !4 - %50 = icmp ugt ptr %43, %6 - br i1 %50, label %.lr.ph.us, label %.critedge5.us +.lr.ph.us: ; preds = %.lr.ph.us.preheader, %49 + %.052102.us = phi i32 [ %50, %49 ], [ 0, %.lr.ph.us.preheader ] + %.261101.us = phi ptr [ %44, %49 ], [ %38, %.lr.ph.us.preheader ] + %44 = getelementptr inbounds i8, ptr %.261101.us, i64 -1 + %45 = load i8, ptr %44, align 1, !tbaa !4 + %46 = icmp eq i8 %45, 47 + br i1 %46, label %49, label %.critedge5.us + +.critedge5.us: ; preds = %.lr.ph.us, %49, %.critedge.us + %.261.lcssa.us = phi ptr [ %38, %.critedge.us ], [ %scevgep133, %49 ], [ %.261101.us, %.lr.ph.us ] + %.052.lcssa.us = phi i32 [ 0, %.critedge.us ], [ %42, %49 ], [ %.052102.us, %.lr.ph.us ] + %47 = call i32 @stat(ptr noundef nonnull %6, ptr noundef nonnull %8) #17 + %48 = icmp eq i32 %47, 0 + br i1 %48, label %.preheader, label %.preheader97.split.us + +49: ; preds = %.lr.ph.us + %50 = add nuw nsw i32 %.052102.us, 1 + store i8 0, ptr %44, align 1, !tbaa !4 + %exitcond134.not = icmp eq ptr %44, %scevgep133 + br i1 %exitcond134.not, label %.critedge5.us, label %.lr.ph.us .preheader97.split: ; preds = %.preheader97, %.critedge5 %51 = call ptr @strrchr(ptr noundef nonnull dereferenceable(1) %36, i32 noundef 47) #16 @@ -2290,25 +2293,28 @@ define internal range(i32 0, 2) i32 @php_plain_files_mkdir(ptr readnone captures %.160130 = ptrtoint ptr %.160 to i64 %55 = trunc i64 %.160130 to i32 %56 = sub i32 %55, %37 + %scevgep = getelementptr i8, ptr %.160, i64 %7 + %57 = sub i64 0, %.160130 + %scevgep131 = getelementptr i8, ptr %scevgep, i64 %57 br label %.lr.ph -.lr.ph: ; preds = %.lr.ph.preheader, %60 - %.052102 = phi i32 [ %61, %60 ], [ 0, %.lr.ph.preheader ] - %.261101 = phi ptr [ %57, %60 ], [ %.160, %.lr.ph.preheader ] - %57 = getelementptr inbounds i8, ptr %.261101, i64 -1 - %58 = load i8, ptr %57, align 1, !tbaa !4 - %59 = icmp eq i8 %58, 47 - br i1 %59, label %60, label %.critedge5 - -60: ; preds = %.lr.ph - %61 = add nuw nsw i32 %.052102, 1 - store i8 0, ptr %57, align 1, !tbaa !4 - %62 = icmp ugt ptr %57, %6 - br i1 %62, label %.lr.ph, label %.critedge5 - -.critedge5: ; preds = %.lr.ph, %60, %.critedge - %.261.lcssa = phi ptr [ %.160, %.critedge ], [ %57, %60 ], [ %.261101, %.lr.ph ] - %.052.lcssa = phi i32 [ 0, %.critedge ], [ %56, %60 ], [ %.052102, %.lr.ph ] +.lr.ph: ; preds = %.lr.ph.preheader, %61 + %.052102 = phi i32 [ %62, %61 ], [ 0, %.lr.ph.preheader ] + %.261101 = phi ptr [ %58, %61 ], [ %.160, %.lr.ph.preheader ] + %58 = getelementptr inbounds i8, ptr %.261101, i64 -1 + %59 = load i8, ptr %58, align 1, !tbaa !4 + %60 = icmp eq i8 %59, 47 + br i1 %60, label %61, label %.critedge5 + +61: ; preds = %.lr.ph + %62 = add nuw nsw i32 %.052102, 1 + store i8 0, ptr %58, align 1, !tbaa !4 + %exitcond.not = icmp eq ptr %58, %scevgep131 + br i1 %exitcond.not, label %.critedge5, label %.lr.ph + +.critedge5: ; preds = %.lr.ph, %61, %.critedge + %.261.lcssa = phi ptr [ %.160, %.critedge ], [ %58, %61 ], [ %.261101, %.lr.ph ] + %.052.lcssa = phi i32 [ 0, %.critedge ], [ %56, %61 ], [ %.052102, %.lr.ph ] %63 = call i32 @stat(ptr noundef nonnull %6, ptr noundef nonnull %8) #17 %64 = icmp eq i32 %63, 0 br i1 %64, label %.preheader, label %.preheader97.split @@ -2321,15 +2327,15 @@ define internal range(i32 0, 2) i32 @php_plain_files_mkdir(ptr readnone captures br i1 %.not80108, label %.critedge3, label %.lr.ph111.preheader .lr.ph111.preheader: ; preds = %.preheader - %scevgep = getelementptr i8, ptr %.us-phi, i64 1 + %scevgep135 = getelementptr i8, ptr %.us-phi, i64 1 %65 = zext i32 %.us-phi107 to i64 - call void @llvm.memset.p0.i64(ptr align 1 %scevgep, i8 47, i64 %65, i1 false), !tbaa !4 + call void @llvm.memset.p0.i64(ptr align 1 %scevgep135, i8 47, i64 %65, i1 false), !tbaa !4 %66 = zext i32 %.us-phi107 to i64 - %scevgep131 = getelementptr i8, ptr %.us-phi, i64 %66 + %scevgep136 = getelementptr i8, ptr %.us-phi, i64 %66 br label %.critedge3 .critedge3: ; preds = %52, %.preheader97.split.us, %.lr.ph111.preheader, %.preheader, %27 - %.059 = phi ptr [ %31, %27 ], [ %.us-phi, %.preheader ], [ %scevgep131, %.lr.ph111.preheader ], [ null, %.preheader97.split.us ], [ null, %52 ] + %.059 = phi ptr [ %31, %27 ], [ %.us-phi, %.preheader ], [ %scevgep136, %.lr.ph111.preheader ], [ null, %.preheader97.split.us ], [ null, %52 ] %.not81 = icmp eq ptr %.059, null %spec.select87 = select i1 %.not81, ptr %6, ptr %.059 br label %.loopexit @@ -2389,8 +2395,8 @@ define internal range(i32 0, 2) i32 @php_plain_files_mkdir(ptr readnone captures br label %.thread92.sink.split .thread92.sink.split: ; preds = %72, %86 - %.sink147 = phi i32 [ %88, %86 ], [ %71, %72 ] - %89 = call ptr @strerror(i32 noundef %.sink147) #17 + %.sink152 = phi i32 [ %88, %86 ], [ %71, %72 ] + %89 = call ptr @strerror(i32 noundef %.sink152) #17 call void (ptr, i32, ptr, ...) @php_error_docref(ptr noundef null, i32 noundef 2, ptr noundef nonnull @.str.18, ptr noundef %89) #17 br label %.thread92 diff --git a/bench/php/optimized/zend_ssa.ll b/bench/php/optimized/zend_ssa.ll index 6ad78ec715e..a741f813a2a 100644 --- a/bench/php/optimized/zend_ssa.ll +++ b/bench/php/optimized/zend_ssa.ll @@ -3925,7 +3925,7 @@ zend_arena_alloc.exit: ; preds = %23, %25 %59 = getelementptr inbounds nuw i8, ptr %2, i64 48 %60 = load ptr, ptr %59, align 8, !tbaa !59 %61 = getelementptr inbounds nuw i8, ptr %2, i64 8 - %wide.trip.count296 = zext nneg i32 %57 to i64 + %wide.trip.count297 = zext nneg i32 %57 to i64 br label %138 62: ; preds = %.lr.ph231, %134 @@ -4045,8 +4045,9 @@ zend_arena_alloc.exit: ; preds = %23, %25 134: ; preds = %124, %120 %indvars.iv.next278 = add nsw i64 %indvars.iv277, -1 - %135 = icmp sgt i64 %indvars.iv277, 0 - br i1 %135, label %62, label %.preheader216 + %135 = and i64 %indvars.iv.next278, 4294967295 + %exitcond280.not = icmp eq i64 %135, 4294967295 + br i1 %exitcond280.not, label %.preheader216, label %62 .preheader212: ; preds = %._crit_edge255, %.preheader216 br i1 %39, label %.lr.ph259, label %.preheader @@ -4057,14 +4058,14 @@ zend_arena_alloc.exit: ; preds = %23, %25 br label %257 138: ; preds = %.lr.ph257, %._crit_edge255 - %indvars.iv293 = phi i64 [ 0, %.lr.ph257 ], [ %indvars.iv.next294, %._crit_edge255 ] - %139 = getelementptr inbounds nuw %struct._zend_ssa_block, ptr %60, i64 %indvars.iv293 + %indvars.iv294 = phi i64 [ 0, %.lr.ph257 ], [ %indvars.iv.next295, %._crit_edge255 ] + %139 = getelementptr inbounds nuw %struct._zend_ssa_block, ptr %60, i64 %indvars.iv294 %.0183250 = load ptr, ptr %139, align 8, !tbaa !103 %.not196251 = icmp eq ptr %.0183250, null br i1 %.not196251, label %._crit_edge255, label %.lr.ph254.preheader .lr.ph254.preheader: ; preds = %138 - %140 = trunc nuw nsw i64 %indvars.iv293 to i32 + %140 = trunc nuw nsw i64 %indvars.iv294 to i32 br label %.lr.ph254 .lr.ph254: ; preds = %.lr.ph254.preheader, %.loopexit @@ -4087,7 +4088,7 @@ zend_arena_alloc.exit: ; preds = %23, %25 .preheader215: ; preds = %.lr.ph254 %152 = load ptr, ptr %61, align 8, !tbaa !38 - %153 = getelementptr inbounds nuw %struct._zend_basic_block, ptr %152, i64 %indvars.iv293, i32 5 + %153 = getelementptr inbounds nuw %struct._zend_basic_block, ptr %152, i64 %indvars.iv294, i32 5 %154 = load i32, ptr %153, align 8, !tbaa !94 %155 = icmp sgt i32 %154, 0 br i1 %155, label %.lr.ph241, label %.loopexit @@ -4096,7 +4097,7 @@ zend_arena_alloc.exit: ; preds = %23, %25 %156 = getelementptr inbounds nuw i8, ptr %.0183252, i64 96 %157 = load ptr, ptr %156, align 8, !tbaa !98 %158 = getelementptr inbounds nuw i8, ptr %.0183252, i64 80 - %wide.trip.count287 = zext nneg i32 %154 to i64 + %wide.trip.count288 = zext nneg i32 %154 to i64 br label %211 159: ; preds = %.lr.ph254 @@ -4142,13 +4143,13 @@ zend_arena_alloc.exit: ; preds = %23, %25 br label %zend_ssa_next_use_phi.exit 185: ; preds = %186 - %indvars.iv.next290 = add nuw nsw i64 %indvars.iv289, 1 - %exitcond292.not = icmp eq i64 %indvars.iv.next290, %181 - br i1 %exitcond292.not, label %._crit_edge248.thread, label %186 + %indvars.iv.next291 = add nuw nsw i64 %indvars.iv290, 1 + %exitcond293.not = icmp eq i64 %indvars.iv.next291, %181 + br i1 %exitcond293.not, label %._crit_edge248.thread, label %186 186: ; preds = %.lr.ph244, %185 - %indvars.iv289 = phi i64 [ 0, %.lr.ph244 ], [ %indvars.iv.next290, %185 ] - %187 = getelementptr inbounds nuw i32, ptr %180, i64 %indvars.iv289 + %indvars.iv290 = phi i64 [ 0, %.lr.ph244 ], [ %indvars.iv.next291, %185 ] + %187 = getelementptr inbounds nuw i32, ptr %180, i64 %indvars.iv290 %188 = load i32, ptr %187, align 4, !tbaa !11 %189 = icmp eq i32 %188, %162 br i1 %189, label %190, label %185 @@ -4156,7 +4157,7 @@ zend_arena_alloc.exit: ; preds = %23, %25 190: ; preds = %186 %191 = getelementptr inbounds nuw i8, ptr %.0182245, i64 80 %192 = load ptr, ptr %191, align 8, !tbaa !99 - %193 = getelementptr inbounds nuw ptr, ptr %192, i64 %indvars.iv289 + %193 = getelementptr inbounds nuw ptr, ptr %192, i64 %indvars.iv290 br label %zend_ssa_next_use_phi.exit zend_ssa_next_use_phi.exit: ; preds = %190, %182 @@ -4197,8 +4198,8 @@ zend_ssa_next_use_phi.exit: ; preds = %190, %182 br i1 %210, label %.loopexit.sink.split, label %.loopexit 211: ; preds = %.lr.ph241, %249 - %indvars.iv284 = phi i64 [ 0, %.lr.ph241 ], [ %indvars.iv.next285, %249 ] - %212 = getelementptr inbounds nuw i32, ptr %157, i64 %indvars.iv284 + %indvars.iv285 = phi i64 [ 0, %.lr.ph241 ], [ %indvars.iv.next286, %249 ] + %212 = getelementptr inbounds nuw i32, ptr %157, i64 %indvars.iv285 %213 = load i32, ptr %212, align 4, !tbaa !11 %214 = icmp sgt i32 %213, -1 tail call void @llvm.assume(i1 %214) @@ -4238,13 +4239,13 @@ zend_ssa_next_use_phi.exit: ; preds = %190, %182 br label %zend_ssa_next_use_phi.exit205 235: ; preds = %236 - %indvars.iv.next281 = add nuw nsw i64 %indvars.iv280, 1 - %exitcond283.not = icmp eq i64 %indvars.iv.next281, %231 - br i1 %exitcond283.not, label %._crit_edge238.thread, label %236 + %indvars.iv.next282 = add nuw nsw i64 %indvars.iv281, 1 + %exitcond284.not = icmp eq i64 %indvars.iv.next282, %231 + br i1 %exitcond284.not, label %._crit_edge238.thread, label %236 236: ; preds = %.lr.ph234, %235 - %indvars.iv280 = phi i64 [ 0, %.lr.ph234 ], [ %indvars.iv.next281, %235 ] - %237 = getelementptr inbounds nuw i32, ptr %230, i64 %indvars.iv280 + %indvars.iv281 = phi i64 [ 0, %.lr.ph234 ], [ %indvars.iv.next282, %235 ] + %237 = getelementptr inbounds nuw i32, ptr %230, i64 %indvars.iv281 %238 = load i32, ptr %237, align 4, !tbaa !11 %239 = icmp eq i32 %238, %213 br i1 %239, label %240, label %235 @@ -4252,7 +4253,7 @@ zend_ssa_next_use_phi.exit: ; preds = %190, %182 240: ; preds = %236 %241 = getelementptr inbounds nuw i8, ptr %.0235, i64 80 %242 = load ptr, ptr %241, align 8, !tbaa !99 - %243 = getelementptr inbounds nuw ptr, ptr %242, i64 %indvars.iv280 + %243 = getelementptr inbounds nuw ptr, ptr %242, i64 %indvars.iv281 br label %zend_ssa_next_use_phi.exit205 zend_ssa_next_use_phi.exit205: ; preds = %240, %232 @@ -4269,15 +4270,15 @@ zend_ssa_next_use_phi.exit205: ; preds = %240, %232 ._crit_edge238.thread: ; preds = %.preheader213, %235, %._crit_edge238 %247 = load ptr, ptr %158, align 8, !tbaa !99 - %248 = getelementptr inbounds nuw ptr, ptr %247, i64 %indvars.iv284 + %248 = getelementptr inbounds nuw ptr, ptr %247, i64 %indvars.iv285 store ptr %217, ptr %248, align 8, !tbaa !103 store ptr %.0183252, ptr %216, align 8, !tbaa !126 br label %249 249: ; preds = %._crit_edge238.thread, %._crit_edge238 - %indvars.iv.next285 = add nuw nsw i64 %indvars.iv284, 1 - %exitcond288.not = icmp eq i64 %indvars.iv.next285, %wide.trip.count287 - br i1 %exitcond288.not, label %.loopexit, label %211 + %indvars.iv.next286 = add nuw nsw i64 %indvars.iv285, 1 + %exitcond289.not = icmp eq i64 %indvars.iv.next286, %wide.trip.count288 + br i1 %exitcond289.not, label %.loopexit, label %211 .loopexit.sink.split: ; preds = %207, %203 %.sink = phi i32 [ %205, %203 ], [ %209, %207 ] @@ -4295,9 +4296,9 @@ zend_ssa_next_use_phi.exit205: ; preds = %240, %232 br i1 %.not196, label %._crit_edge255, label %.lr.ph254 ._crit_edge255: ; preds = %.loopexit, %138 - %indvars.iv.next294 = add nuw nsw i64 %indvars.iv293, 1 - %exitcond297.not = icmp eq i64 %indvars.iv.next294, %wide.trip.count296 - br i1 %exitcond297.not, label %.preheader212, label %138 + %indvars.iv.next295 = add nuw nsw i64 %indvars.iv294, 1 + %exitcond298.not = icmp eq i64 %indvars.iv.next295, %wide.trip.count297 + br i1 %exitcond298.not, label %.preheader212, label %138 .preheader.loopexit: ; preds = %zend_string_equals_cstr.exit.thread %.pre = load i32, ptr %40, align 8, !tbaa !107 @@ -4314,7 +4315,7 @@ zend_ssa_next_use_phi.exit205: ; preds = %240, %232 br label %.lr.ph262 257: ; preds = %.lr.ph259, %zend_string_equals_cstr.exit.thread - %indvars.iv298 = phi i64 [ 0, %.lr.ph259 ], [ %indvars.iv.next299, %zend_string_equals_cstr.exit.thread ] + %indvars.iv299 = phi i64 [ 0, %.lr.ph259 ], [ %indvars.iv.next300, %zend_string_equals_cstr.exit.thread ] %258 = load i32, ptr %136, align 8, !tbaa !129 %259 = and i32 %258, 1 %.not195 = icmp eq i32 %259, 0 @@ -4322,7 +4323,7 @@ zend_ssa_next_use_phi.exit205: ; preds = %240, %232 260: ; preds = %257 %261 = load ptr, ptr %137, align 8, !tbaa !130 - %262 = getelementptr inbounds nuw ptr, ptr %261, i64 %indvars.iv298 + %262 = getelementptr inbounds nuw ptr, ptr %261, i64 %indvars.iv299 %263 = load ptr, ptr %262, align 8, !tbaa !131 %264 = getelementptr inbounds nuw i8, ptr %263, i64 16 %265 = load i64, ptr %264, align 8, !tbaa !132 @@ -4336,25 +4337,25 @@ zend_string_equals_cstr.exit: ; preds = %260 br i1 %.not.i, label %zend_string_equals_cstr.exit.thread.sink.split, label %zend_string_equals_cstr.exit.thread zend_string_equals_cstr.exit.thread.sink.split: ; preds = %zend_string_equals_cstr.exit, %257 - %.sink323 = phi i8 [ 4, %257 ], [ 8, %zend_string_equals_cstr.exit ] - %268 = getelementptr inbounds nuw %struct._zend_ssa_var, ptr %36, i64 %indvars.iv298, i32 7 + %.sink324 = phi i8 [ 4, %257 ], [ 8, %zend_string_equals_cstr.exit ] + %268 = getelementptr inbounds nuw %struct._zend_ssa_var, ptr %36, i64 %indvars.iv299, i32 7 %269 = load i8, ptr %268, align 8 %270 = and i8 %269, -13 - %271 = or disjoint i8 %270, %.sink323 + %271 = or disjoint i8 %270, %.sink324 store i8 %271, ptr %268, align 8 br label %zend_string_equals_cstr.exit.thread zend_string_equals_cstr.exit.thread: ; preds = %zend_string_equals_cstr.exit.thread.sink.split, %260, %zend_string_equals_cstr.exit - %indvars.iv.next299 = add nuw nsw i64 %indvars.iv298, 1 + %indvars.iv.next300 = add nuw nsw i64 %indvars.iv299, 1 %272 = load i32, ptr %37, align 4, !tbaa !47 %273 = sext i32 %272 to i64 - %274 = icmp slt i64 %indvars.iv.next299, %273 + %274 = icmp slt i64 %indvars.iv.next300, %273 br i1 %274, label %257, label %.preheader.loopexit .lr.ph262: ; preds = %.lr.ph262.preheader, %289 %275 = phi i32 [ %254, %.lr.ph262.preheader ], [ %290, %289 ] - %indvars.iv301 = phi i64 [ %256, %.lr.ph262.preheader ], [ %indvars.iv.next302, %289 ] - %276 = getelementptr inbounds %struct._zend_ssa_var, ptr %36, i64 %indvars.iv301 + %indvars.iv302 = phi i64 [ %256, %.lr.ph262.preheader ], [ %indvars.iv.next303, %289 ] + %276 = getelementptr inbounds %struct._zend_ssa_var, ptr %36, i64 %indvars.iv302 %277 = load i32, ptr %276, align 8, !tbaa !116 %278 = load i32, ptr %37, align 4, !tbaa !47 %279 = icmp slt i32 %277, %278 @@ -4370,14 +4371,14 @@ zend_string_equals_cstr.exit.thread: ; preds = %zend_string_equals_ %287 = and i8 %286, -13 %288 = or disjoint i8 %287, %284 store i8 %288, ptr %285, align 8 - %.pre304 = load i32, ptr %40, align 8, !tbaa !107 + %.pre305 = load i32, ptr %40, align 8, !tbaa !107 br label %289 289: ; preds = %.lr.ph262, %280 - %290 = phi i32 [ %275, %.lr.ph262 ], [ %.pre304, %280 ] - %indvars.iv.next302 = add nsw i64 %indvars.iv301, 1 + %290 = phi i32 [ %275, %.lr.ph262 ], [ %.pre305, %280 ] + %indvars.iv.next303 = add nsw i64 %indvars.iv302, 1 %291 = sext i32 %290 to i64 - %292 = icmp slt i64 %indvars.iv.next302, %291 + %292 = icmp slt i64 %indvars.iv.next303, %291 br i1 %292, label %.lr.ph262, label %._crit_edge263 ._crit_edge263: ; preds = %289, %.preheader diff --git a/bench/proj/optimized/pipeline.ll b/bench/proj/optimized/pipeline.ll index d93a180273d..1bebda3a4cb 100644 --- a/bench/proj/optimized/pipeline.ll +++ b/bench/proj/optimized/pipeline.ll @@ -818,7 +818,7 @@ _ZSt8_DestroyIPN12_GLOBAL__N_14StepES1_EvT_S3_RSaIT0_E.exit.i.i: ; preds = %_ZSt br label %.lr.ph404 .lr.ph406.preheader: ; preds = %320 - %wide.trip.count452 = zext nneg i32 %93 to i64 + %wide.trip.count453 = zext nneg i32 %93 to i64 br label %.lr.ph406 .lr.ph404: ; preds = %.lr.ph404.preheader, %320 @@ -855,19 +855,20 @@ _ZSt8_DestroyIPN12_GLOBAL__N_14StepES1_EvT_S3_RSaIT0_E.exit.i.i: ; preds = %_ZSt 320: ; preds = %317, %310, %307, %.lr.ph404 %indvars.iv.next447 = add nsw i64 %indvars.iv446, -1 - %321 = icmp sgt i64 %indvars.iv446, 0 - br i1 %321, label %.lr.ph404, label %.lr.ph406.preheader, !llvm.loop !121 + %321 = and i64 %indvars.iv.next447, 4294967295 + %exitcond449.not = icmp eq i64 %321, 4294967295 + br i1 %exitcond449.not, label %.lr.ph406.preheader, label %.lr.ph404, !llvm.loop !121 .preheader: ; preds = %340, %.loopexit %smax = tail call i32 @llvm.smax.i32(i32 %93, i32 1) %322 = add nsw i32 %smax, -1 - %wide.trip.count457 = zext nneg i32 %322 to i64 + %wide.trip.count458 = zext nneg i32 %322 to i64 br label %341 .lr.ph406: ; preds = %.lr.ph406.preheader, %340 - %indvars.iv449 = phi i64 [ 1, %.lr.ph406.preheader ], [ %indvars.iv.next450, %340 ] + %indvars.iv450 = phi i64 [ 1, %.lr.ph406.preheader ], [ %indvars.iv.next451, %340 ] %.val296 = load ptr, ptr %255, align 8, !tbaa !113 - %323 = getelementptr inbounds nuw %"struct.(anonymous namespace)::Step", ptr %.val296, i64 %indvars.iv449 + %323 = getelementptr inbounds nuw %"struct.(anonymous namespace)::Step", ptr %.val296, i64 %indvars.iv450 %324 = load ptr, ptr %323, align 8, !tbaa !109 %325 = tail call noundef i32 @_Z7pj_leftP8PJconsts(ptr noundef %324) %326 = icmp eq i32 %325, 0 @@ -880,7 +881,7 @@ _ZSt8_DestroyIPN12_GLOBAL__N_14StepES1_EvT_S3_RSaIT0_E.exit.i.i: ; preds = %_ZSt 330: ; preds = %327 %.val297 = load ptr, ptr %255, align 8, !tbaa !113 - %331 = getelementptr %"struct.(anonymous namespace)::Step", ptr %.val297, i64 %indvars.iv449 + %331 = getelementptr %"struct.(anonymous namespace)::Step", ptr %.val297, i64 %indvars.iv450 %332 = getelementptr i8, ptr %331, i64 -16 %333 = load ptr, ptr %332, align 8, !tbaa !109 %334 = tail call noundef i32 @_Z7pj_leftP8PJconsts(ptr noundef %333) @@ -897,23 +898,23 @@ _ZSt8_DestroyIPN12_GLOBAL__N_14StepES1_EvT_S3_RSaIT0_E.exit.i.i: ; preds = %_ZSt br label %340 340: ; preds = %337, %330, %327, %.lr.ph406 - %indvars.iv.next450 = add nuw nsw i64 %indvars.iv449, 1 - %exitcond453.not = icmp eq i64 %indvars.iv.next450, %wide.trip.count452 - br i1 %exitcond453.not, label %.preheader, label %.lr.ph406, !llvm.loop !122 + %indvars.iv.next451 = add nuw nsw i64 %indvars.iv450, 1 + %exitcond454.not = icmp eq i64 %indvars.iv.next451, %wide.trip.count453 + br i1 %exitcond454.not, label %.preheader, label %.lr.ph406, !llvm.loop !122 341: ; preds = %.preheader, %342 - %indvars.iv454 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next455, %342 ] - %exitcond458.not = icmp eq i64 %indvars.iv454, %wide.trip.count457 - br i1 %exitcond458.not, label %356, label %342 + %indvars.iv455 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next456, %342 ] + %exitcond459.not = icmp eq i64 %indvars.iv455, %wide.trip.count458 + br i1 %exitcond459.not, label %356, label %342 342: ; preds = %341 - %indvars.iv.next455 = add nuw nsw i64 %indvars.iv454, 1 + %indvars.iv.next456 = add nuw nsw i64 %indvars.iv455, 1 %.val298 = load ptr, ptr %255, align 8, !tbaa !113 - %343 = getelementptr inbounds nuw %"struct.(anonymous namespace)::Step", ptr %.val298, i64 %indvars.iv454 + %343 = getelementptr inbounds nuw %"struct.(anonymous namespace)::Step", ptr %.val298, i64 %indvars.iv455 %344 = load ptr, ptr %343, align 8, !tbaa !109 %345 = tail call noundef i32 @_Z8pj_rightP8PJconsts(ptr noundef %344) %.val299 = load ptr, ptr %255, align 8, !tbaa !113 - %346 = getelementptr inbounds nuw %"struct.(anonymous namespace)::Step", ptr %.val299, i64 %indvars.iv.next455 + %346 = getelementptr inbounds nuw %"struct.(anonymous namespace)::Step", ptr %.val299, i64 %indvars.iv.next456 %347 = load ptr, ptr %346, align 8, !tbaa !109 %348 = tail call noundef i32 @_Z7pj_leftP8PJconsts(ptr noundef %347) %349 = icmp eq i32 %345, 0 @@ -924,8 +925,8 @@ _ZSt8_DestroyIPN12_GLOBAL__N_14StepES1_EvT_S3_RSaIT0_E.exit.i.i: ; preds = %_ZSt br i1 %or.cond, label %341, label %351, !llvm.loop !123 351: ; preds = %342 - %352 = trunc nuw nsw i64 %indvars.iv454 to i32 - %353 = trunc nuw nsw i64 %indvars.iv.next455 to i32 + %352 = trunc nuw nsw i64 %indvars.iv455 to i32 + %353 = trunc nuw nsw i64 %indvars.iv.next456 to i32 %354 = add nuw nsw i32 %352, 2 tail call void (ptr, ptr, ...) @_Z14proj_log_errorPK8PJconstsPKcz(ptr noundef nonnull %0, ptr noundef nonnull @.str.21, i32 noundef %353, i32 noundef %354) %355 = tail call noundef ptr @_ZL10destructorP8PJconstsi(ptr noundef nonnull %0, i32 noundef 1025) diff --git a/bench/protobuf/optimized/unknown_field_set.ll b/bench/protobuf/optimized/unknown_field_set.ll index fd7de63baf4..7fd6391a01f 100644 --- a/bench/protobuf/optimized/unknown_field_set.ll +++ b/bench/protobuf/optimized/unknown_field_set.ll @@ -146,12 +146,17 @@ entry: %sub.ptr.lhs.cast.i = ptrtoint ptr %0 to i64 %sub.ptr.rhs.cast.i = ptrtoint ptr %1 to i64 %sub.ptr.sub.i = sub i64 %sub.ptr.lhs.cast.i, %sub.ptr.rhs.cast.i - %2 = shl i64 %sub.ptr.sub.i, 28 - %3 = ashr i64 %2, 32 + %sub.ptr.div.i = lshr i64 %sub.ptr.sub.i, 4 + %conv = trunc i64 %sub.ptr.div.i to i32 + %sext = shl i64 %sub.ptr.div.i, 32 + %2 = ashr exact i64 %sext, 32 + %smin = tail call i32 @llvm.smin.i32(i32 %conv, i32 1) + %3 = add i32 %smin, -1 + %wide.trip.count = sext i32 %3 to i64 br label %do.body do.body: ; preds = %_ZN6google8protobuf12UnknownField6DeleteEv.exit, %entry - %indvars.iv = phi i64 [ %indvars.iv.next, %_ZN6google8protobuf12UnknownField6DeleteEv.exit ], [ %3, %entry ] + %indvars.iv = phi i64 [ %indvars.iv.next, %_ZN6google8protobuf12UnknownField6DeleteEv.exit ], [ %2, %entry ] %indvars.iv.next = add nsw i64 %indvars.iv, -1 %4 = load ptr, ptr %this, align 8 %add.ptr.i = getelementptr inbounds %"class.google::protobuf::UnknownField", ptr %4, i64 %indvars.iv.next @@ -205,8 +210,8 @@ _ZN6google8protobuf12UnknownField6DeleteEv.exit.sink.split: ; preds = %if.then.i br label %_ZN6google8protobuf12UnknownField6DeleteEv.exit _ZN6google8protobuf12UnknownField6DeleteEv.exit: ; preds = %_ZN6google8protobuf12UnknownField6DeleteEv.exit.sink.split, %do.body, %sw.bb.i, %sw.bb2.i - %cmp = icmp sgt i64 %indvars.iv, 1 - br i1 %cmp, label %do.body, label %do.end, !llvm.loop !5 + %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count + br i1 %exitcond.not, label %do.end, label %do.body, !llvm.loop !5 do.end: ; preds = %_ZN6google8protobuf12UnknownField6DeleteEv.exit %11 = load ptr, ptr %this, align 8 @@ -3053,6 +3058,9 @@ entry: ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) declare void @llvm.assume(i1 noundef) #16 +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare i32 @llvm.smin.i32(i32, i32) #17 + ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i64 @llvm.umax.i64(i64, i64) #17 diff --git a/bench/protobuf/optimized/zero_copy_stream_impl_lite.ll b/bench/protobuf/optimized/zero_copy_stream_impl_lite.ll index 22fee2743a1..4e166a4d3ef 100644 --- a/bench/protobuf/optimized/zero_copy_stream_impl_lite.ll +++ b/bench/protobuf/optimized/zero_copy_stream_impl_lite.ll @@ -3752,8 +3752,8 @@ while.body.i.i.i.i: ; preds = %if.then.i, %while.b %arrayidx14.i.i.i.i = getelementptr inbounds nuw [12 x i8], ptr %index_.i.i.i.i, i64 0, i64 %indvars.iv.next.i.i.i.i store i8 %10, ptr %arrayidx14.i.i.i.i, align 1 %index.0.i.i.i.i = zext i8 %10 to i64 - %cmp.i.i.i.i = icmp samesign ugt i64 %indvars.iv.i.i.i.i, 1 - br i1 %cmp.i.i.i.i, label %while.body.i.i.i.i, label %_ZN4absl12lts_2023080213cord_internal21CordRepBtreeNavigator9InitFirstEPNS1_12CordRepBtreeE.exit.i.i, !llvm.loop !19 + %exitcond.not.i.i.i.i = icmp eq i64 %indvars.iv.next.i.i.i.i, 0 + br i1 %exitcond.not.i.i.i.i, label %_ZN4absl12lts_2023080213cord_internal21CordRepBtreeNavigator9InitFirstEPNS1_12CordRepBtreeE.exit.i.i, label %while.body.i.i.i.i, !llvm.loop !19 _ZN4absl12lts_2023080213cord_internal21CordRepBtreeNavigator9InitFirstEPNS1_12CordRepBtreeE.exit.i.i: ; preds = %while.body.i.i.i.i, %if.then.i %index.0.lcssa.i.i.i.i = phi i64 [ %index.020.i.i.i.i, %if.then.i ], [ %index.0.i.i.i.i, %while.body.i.i.i.i ] @@ -3768,8 +3768,8 @@ _ZN4absl12lts_2023080213cord_internal21CordRepBtreeNavigator9InitFirstEPNS1_12Co %15 = load i64, ptr %12, align 8 %tag.i.i.i.i = getelementptr inbounds nuw i8, ptr %12, i64 12 %16 = load i8, ptr %tag.i.i.i.i, align 4 - %cmp.i.i3.i.i = icmp eq i8 %16, 1 - br i1 %cmp.i.i3.i.i, label %if.then.i.i.i, label %if.end.i.i.i + %cmp.i.i.i.i = icmp eq i8 %16, 1 + br i1 %cmp.i.i.i.i, label %if.then.i.i.i, label %if.end.i.i.i if.then.i.i.i: ; preds = %_ZN4absl12lts_2023080213cord_internal21CordRepBtreeNavigator9InitFirstEPNS1_12CordRepBtreeE.exit.i.i %start.i.i.i = getelementptr inbounds nuw i8, ptr %12, i64 16 @@ -4141,8 +4141,9 @@ _ZNK4absl12lts_2023080213cord_internal12CordRepBtree7IndexOfEm.exit33.i: ; preds %conv16.i = trunc i64 %index.0.lcssa.i30.i to i8 %arrayidx19.i = getelementptr inbounds nuw [12 x i8], ptr %index_.i, i64 0, i64 %indvars.iv.next.i store i8 %conv16.i, ptr %arrayidx19.i, align 1 - %cmp7.i = icmp samesign ugt i64 %indvars.iv.i, 1 - br i1 %cmp7.i, label %while.body.i, label %_ZN4absl12lts_2023080213cord_internal21CordRepBtreeNavigator4SeekEm.exit, !llvm.loop !21 + %17 = and i64 %indvars.iv.next.i, 4294967295 + %exitcond.not.i = icmp eq i64 %17, 0 + br i1 %exitcond.not.i, label %_ZN4absl12lts_2023080213cord_internal21CordRepBtreeNavigator4SeekEm.exit, label %while.body.i, !llvm.loop !21 _ZN4absl12lts_2023080213cord_internal21CordRepBtreeNavigator4SeekEm.exit: ; preds = %_ZNK4absl12lts_2023080213cord_internal12CordRepBtree7IndexOfEm.exit33.i, %_ZNK4absl12lts_2023080213cord_internal12CordRepBtree7IndexOfEm.exit.i %edge.0.lcssa.i = phi ptr [ %1, %_ZNK4absl12lts_2023080213cord_internal12CordRepBtree7IndexOfEm.exit.i ], [ %10, %_ZNK4absl12lts_2023080213cord_internal12CordRepBtree7IndexOfEm.exit33.i ] @@ -4150,31 +4151,31 @@ _ZN4absl12lts_2023080213cord_internal21CordRepBtreeNavigator4SeekEm.exit: ; pred %index.sroa.0.0.lcssa.i = phi i64 [ %index.0.lcssa.i.i, %_ZNK4absl12lts_2023080213cord_internal12CordRepBtree7IndexOfEm.exit.i ], [ %index.0.lcssa.i30.i, %_ZNK4absl12lts_2023080213cord_internal12CordRepBtree7IndexOfEm.exit33.i ] %edges_.i34.i = getelementptr inbounds nuw i8, ptr %edge.0.lcssa.i, i64 16 %arrayidx.i35.i = getelementptr inbounds [6 x ptr], ptr %edges_.i34.i, i64 0, i64 %index.sroa.0.0.lcssa.i - %17 = load ptr, ptr %arrayidx.i35.i, align 8 - %cmp = icmp eq ptr %17, null + %18 = load ptr, ptr %arrayidx.i35.i, align 8 + %cmp = icmp eq ptr %18, null br i1 %cmp, label %return, label %if.end if.end: ; preds = %_ZN4absl12lts_2023080213cord_internal21CordRepBtreeNavigator4SeekEm.exit - %18 = load i64, ptr %17, align 8 - %tag.i.i = getelementptr inbounds nuw i8, ptr %17, i64 12 - %19 = load i8, ptr %tag.i.i, align 4 - %cmp.i.i = icmp eq i8 %19, 1 + %19 = load i64, ptr %18, align 8 + %tag.i.i = getelementptr inbounds nuw i8, ptr %18, i64 12 + %20 = load i8, ptr %tag.i.i, align 4 + %cmp.i.i = icmp eq i8 %20, 1 br i1 %cmp.i.i, label %if.then.i, label %if.end.i3 if.then.i: ; preds = %if.end - %start.i = getelementptr inbounds nuw i8, ptr %17, i64 16 - %20 = load i64, ptr %start.i, align 8 - %child.i = getelementptr inbounds nuw i8, ptr %17, i64 24 - %21 = load ptr, ptr %child.i, align 8 - %tag.phi.trans.insert.i = getelementptr inbounds nuw i8, ptr %21, i64 12 + %start.i = getelementptr inbounds nuw i8, ptr %18, i64 16 + %21 = load i64, ptr %start.i, align 8 + %child.i = getelementptr inbounds nuw i8, ptr %18, i64 24 + %22 = load ptr, ptr %child.i, align 8 + %tag.phi.trans.insert.i = getelementptr inbounds nuw i8, ptr %22, i64 12 %.pre.i = load i8, ptr %tag.phi.trans.insert.i, align 4 br label %if.end.i3 if.end.i3: ; preds = %if.then.i, %if.end - %22 = phi i8 [ %.pre.i, %if.then.i ], [ %19, %if.end ] - %offset.0.i = phi i64 [ %20, %if.then.i ], [ 0, %if.end ] - %edge.addr.0.i = phi ptr [ %21, %if.then.i ], [ %17, %if.end ] - %cmp.i = icmp ugt i8 %22, 5 + %23 = phi i8 [ %.pre.i, %if.then.i ], [ %20, %if.end ] + %offset.0.i = phi i64 [ %21, %if.then.i ], [ 0, %if.end ] + %edge.addr.0.i = phi ptr [ %22, %if.then.i ], [ %18, %if.end ] + %cmp.i = icmp ugt i8 %23, 5 br i1 %cmp.i, label %cond.true.i, label %cond.false.i cond.true.i: ; preds = %if.end.i3 @@ -4183,31 +4184,31 @@ cond.true.i: ; preds = %if.end.i3 cond.false.i: ; preds = %if.end.i3 %base.i = getelementptr inbounds nuw i8, ptr %edge.addr.0.i, i64 16 - %23 = load ptr, ptr %base.i, align 8 + %24 = load ptr, ptr %base.i, align 8 br label %_ZN4absl12lts_2023080213cord_internal8EdgeDataEPKNS1_7CordRepE.exit _ZN4absl12lts_2023080213cord_internal8EdgeDataEPKNS1_7CordRepE.exit: ; preds = %cond.true.i, %cond.false.i - %storage.i.pn.i = phi ptr [ %storage.i.i, %cond.true.i ], [ %23, %cond.false.i ] - %cmp.i.i7 = icmp ugt i64 %offset.addr.0.lcssa.i.pn.lcssa.i, %18 + %storage.i.pn.i = phi ptr [ %storage.i.i, %cond.true.i ], [ %24, %cond.false.i ] + %cmp.i.i7 = icmp ugt i64 %offset.addr.0.lcssa.i.pn.lcssa.i, %19 br i1 %cmp.i.i7, label %if.then.i.i, label %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE6substrEmm.exit if.then.i.i: ; preds = %_ZN4absl12lts_2023080213cord_internal8EdgeDataEPKNS1_7CordRepE.exit - tail call void (ptr, ...) @_ZSt24__throw_out_of_range_fmtPKcz(ptr noundef nonnull @.str.17, ptr noundef nonnull @.str.16, i64 noundef %offset.addr.0.lcssa.i.pn.lcssa.i, i64 noundef %18) #32 + tail call void (ptr, ...) @_ZSt24__throw_out_of_range_fmtPKcz(ptr noundef nonnull @.str.17, ptr noundef nonnull @.str.16, i64 noundef %offset.addr.0.lcssa.i.pn.lcssa.i, i64 noundef %19) #32 unreachable _ZNKSt17basic_string_viewIcSt11char_traitsIcEE6substrEmm.exit: ; preds = %_ZN4absl12lts_2023080213cord_internal8EdgeDataEPKNS1_7CordRepE.exit %retval.sroa.3.0.i4 = getelementptr inbounds i8, ptr %storage.i.pn.i, i64 %offset.0.i - %sub.i = sub nuw i64 %18, %offset.addr.0.lcssa.i.pn.lcssa.i + %sub.i = sub nuw i64 %19, %offset.addr.0.lcssa.i.pn.lcssa.i %add.ptr.i = getelementptr inbounds i8, ptr %retval.sroa.3.0.i4, i64 %offset.addr.0.lcssa.i.pn.lcssa.i - %24 = load i32, ptr %navigator_, align 8 - %cmp.i.i.i = icmp sgt i32 %24, -1 + %25 = load i32, ptr %navigator_, align 8 + %cmp.i.i.i = icmp sgt i32 %25, -1 tail call void @llvm.assume(i1 %cmp.i.i.i) - %idxprom.i.i.i = zext nneg i32 %24 to i64 + %idxprom.i.i.i = zext nneg i32 %25 to i64 %arrayidx.i.i.i10 = getelementptr inbounds nuw [12 x ptr], ptr %node_.i, i64 0, i64 %idxprom.i.i.i - %25 = load ptr, ptr %arrayidx.i.i.i10, align 8 - %26 = load i64, ptr %25, align 8 - %27 = add i64 %sub.i, %offset - %sub8 = sub i64 %26, %27 + %26 = load ptr, ptr %arrayidx.i.i.i10, align 8 + %27 = load i64, ptr %26, align 8 + %28 = add i64 %sub.i, %offset + %sub8 = sub i64 %27, %28 br label %return return: ; preds = %_ZN4absl12lts_2023080213cord_internal21CordRepBtreeNavigator4SeekEm.exit, %entry, %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE6substrEmm.exit diff --git a/bench/proxygen/optimized/HTTPHeaders.ll b/bench/proxygen/optimized/HTTPHeaders.ll index 2a30e9064e5..215fce787c3 100644 --- a/bench/proxygen/optimized/HTTPHeaders.ll +++ b/bench/proxygen/optimized/HTTPHeaders.ll @@ -2247,7 +2247,7 @@ if.end.i.preheader: ; preds = %while.body.lr.ph.i if.end.i: ; preds = %if.end.i.preheader, %"_ZZN8proxygen11HTTPHeaders18stripPerHopHeadersERS0_bPKS0_ENK3$_0clERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit.i" %call3.i59 = phi ptr [ %call3.i, %"_ZZN8proxygen11HTTPHeaders18stripPerHopHeadersERS0_bPKS0_ENK3$_0clERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit.i" ], [ %call3.i56, %if.end.i.preheader ] %sub.ptr.rhs.cast.i58 = phi i64 [ %sub.ptr.rhs.cast.i, %"_ZZN8proxygen11HTTPHeaders18stripPerHopHeadersERS0_bPKS0_ENK3$_0clERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit.i" ], [ %sub.ptr.lhs.cast.i51, %if.end.i.preheader ] - %3 = phi ptr [ %21, %"_ZZN8proxygen11HTTPHeaders18stripPerHopHeadersERS0_bPKS0_ENK3$_0clERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit.i" ], [ %0, %if.end.i.preheader ] + %3 = phi ptr [ %22, %"_ZZN8proxygen11HTTPHeaders18stripPerHopHeadersERS0_bPKS0_ENK3$_0clERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit.i" ], [ %0, %if.end.i.preheader ] %sub.ptr.lhs.cast5.i = ptrtoint ptr %call3.i59 to i64 %sub.ptr.sub7.i = sub i64 %sub.ptr.lhs.cast5.i, %sub.ptr.rhs.cast.i58 %arrayidx.i = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %3, i64 %sub.ptr.sub7.i @@ -2286,7 +2286,7 @@ while.body4.i.loopexit.i: ; preds = %while.cond107.i.i br i1 %cmp6.i.i, label %if.then.i.i, label %if.end45.i.i if.then.i.i: ; preds = %while.body4.i.loopexit.i, %while.body4.lr.ph.i.i - %5 = phi i8 [ %4, %while.body4.lr.ph.i.i ], [ %19, %while.body4.i.loopexit.i ] + %5 = phi i8 [ %4, %while.body4.lr.ph.i.i ], [ %20, %while.body4.i.loopexit.i ] %str.150.i.lcssa.i = phi ptr [ %str.0.i.i, %while.body4.lr.ph.i.i ], [ %str.2.i.i, %while.body4.i.loopexit.i ] br label %while.cond7.i.i @@ -2422,8 +2422,9 @@ land.rhs49.i.i: ; preds = %while.body54.i.i, % while.body54.i.i: ; preds = %land.rhs49.i.i, %land.rhs49.i.i, %land.rhs49.i.i, %land.rhs49.i.i %indvars.iv.next.i = add nsw i64 %indvars.iv.i, -1 - %cmp48.i.i = icmp sgt i64 %indvars.iv.i, 1 - br i1 %cmp48.i.i, label %land.rhs49.i.i, label %while.cond107.i.i.preheader, !llvm.loop !21 + %14 = and i64 %indvars.iv.next.i, 4294967295 + %exitcond.not.i = icmp eq i64 %14, 0 + br i1 %exitcond.not.i, label %while.cond107.i.i.preheader, label %land.rhs49.i.i, !llvm.loop !21 if.then57.i.i: ; preds = %land.rhs49.i.i call void @_ZNSaIcEC1Ev(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp60.i.i) #21 @@ -2442,8 +2443,8 @@ invoke.cont67.i.i: ; preds = %invoke.cont62.i.i br i1 %call68.i.i, label %if.then69.i.i, label %if.end104.i.i if.then69.i.i: ; preds = %invoke.cont67.i.i - %14 = load ptr, ptr @"_ZZZN8proxygen11HTTPHeaders18stripPerHopHeadersERS0_bPKS0_ENK3$_0clERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE8vlocal___0", align 8 - %cmp72.i.i = icmp eq ptr %14, null + %15 = load ptr, ptr @"_ZZZN8proxygen11HTTPHeaders18stripPerHopHeadersERS0_bPKS0_ENK3$_0clERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE8vlocal___0", align 8 + %cmp72.i.i = icmp eq ptr %15, null br i1 %cmp72.i.i, label %cond.true73.i.i, label %cond.false76.i.i cond.true73.i.i: ; preds = %if.then69.i.i @@ -2451,8 +2452,8 @@ cond.true73.i.i: ; preds = %if.then69.i.i to label %cond.end78.i.i unwind label %lpad65.i.i cond.false76.i.i: ; preds = %if.then69.i.i - %15 = load i32, ptr %14, align 4 - %cmp77.i.i = icmp sgt i32 %15, 2 + %16 = load i32, ptr %15, align 4 + %cmp77.i.i = icmp sgt i32 %16, 2 br i1 %cmp77.i.i, label %cond.false83.i.i, label %if.end104.i.i cond.end78.i.i: ; preds = %cond.true73.i.i @@ -2479,18 +2480,18 @@ cleanup.action98.i.i: ; preds = %invoke.cont92.i.i br label %if.end104.i.i lpad61.i.i: ; preds = %if.then57.i.i - %16 = landingpad { ptr, i32 } + %17 = landingpad { ptr, i32 } cleanup call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp60.i.i) #21 br label %common.resume lpad65.i.i: ; preds = %cond.false83.i.i, %cond.true73.i.i, %invoke.cont62.i.i - %17 = landingpad { ptr, i32 } + %18 = landingpad { ptr, i32 } cleanup br label %ehcleanup105.i.i lpad89.i.i: ; preds = %invoke.cont92.i.i, %invoke.cont90.i.i, %invoke.cont87.i.i - %18 = landingpad { ptr, i32 } + %19 = landingpad { ptr, i32 } cleanup call void @_ZN6google10LogMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(96) %ref.tmp86.i.i) #21 br label %ehcleanup105.i.i @@ -2500,15 +2501,15 @@ if.end104.i.i: ; preds = %cleanup.action98.i. br label %while.cond107.i.i.preheader ehcleanup105.i.i: ; preds = %lpad89.i.i, %lpad65.i.i - %.pn.i.i = phi { ptr, i32 } [ %18, %lpad89.i.i ], [ %17, %lpad65.i.i ] + %.pn.i.i = phi { ptr, i32 } [ %19, %lpad89.i.i ], [ %18, %lpad65.i.i ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %hdr58.i.i) #21 br label %common.resume while.cond107.i.i: ; preds = %while.cond107.i.i.backedge, %while.cond107.i.i.preheader %call5.pn.i.i = phi ptr [ %call5.i24.i, %while.cond107.i.i.preheader ], [ %str.2.i.i, %while.cond107.i.i.backedge ] %str.2.i.i = getelementptr inbounds nuw i8, ptr %call5.pn.i.i, i64 1 - %19 = load i8, ptr %str.2.i.i, align 1 - switch i8 %19, label %while.body4.i.loopexit.i [ + %20 = load i8, ptr %str.2.i.i, align 1 + switch i8 %20, label %while.body4.i.loopexit.i [ i8 32, label %while.cond107.i.i.backedge i8 13, label %while.cond107.i.i.backedge i8 10, label %while.cond107.i.i.backedge @@ -2520,7 +2521,7 @@ while.cond107.i.i.backedge: ; preds = %while.cond107.i.i, br label %while.cond107.i.i, !llvm.loop !22 common.resume: ; preds = %lpad.i.i, %ehcleanup.i.i, %lpad61.i.i, %ehcleanup105.i.i, %lpad35 - %common.resume.op = phi { ptr, i32 } [ %44, %lpad35 ], [ %.pn21.i.i, %ehcleanup.i.i ], [ %9, %lpad.i.i ], [ %.pn.i.i, %ehcleanup105.i.i ], [ %16, %lpad61.i.i ] + %common.resume.op = phi { ptr, i32 } [ %45, %lpad35 ], [ %.pn21.i.i, %ehcleanup.i.i ], [ %9, %lpad.i.i ], [ %.pn.i.i, %ehcleanup105.i.i ], [ %17, %lpad61.i.i ] resume { ptr, i32 } %common.resume.op "_ZZN8proxygen11HTTPHeaders18stripPerHopHeadersERS0_bPKS0_ENK3$_0clERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit.i": ; preds = %while.cond.i.i, %while.cond107.i.i, %if.end.i.i, %while.end14.i.i @@ -2531,27 +2532,27 @@ common.resume: ; preds = %lpad.i.i, %ehcleanu call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %ref.tmp60.i.i) call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %ref.tmp86.i.i) %incdec.ptr.i = getelementptr inbounds nuw i8, ptr %call3.i59, i64 1 - %20 = load i64, ptr %length_.i, align 8 - %21 = load ptr, ptr %this, align 8 - %22 = load i64, ptr %capacity_.i.i, align 8 - %mul.i.i7.i = mul i64 %22, 40 - %add.ptr.i.i8.i = getelementptr inbounds i8, ptr %21, i64 %mul.i.i7.i + %21 = load i64, ptr %length_.i, align 8 + %22 = load ptr, ptr %this, align 8 + %23 = load i64, ptr %capacity_.i.i, align 8 + %mul.i.i7.i = mul i64 %23, 40 + %add.ptr.i.i8.i = getelementptr inbounds i8, ptr %22, i64 %mul.i.i7.i %sub.ptr.lhs.cast.i = ptrtoint ptr %incdec.ptr.i to i64 %sub.ptr.rhs.cast.i = ptrtoint ptr %add.ptr.i.i8.i to i64 - %sub.ptr.sub.neg.i = sub i64 %20, %sub.ptr.lhs.cast.i + %sub.ptr.sub.neg.i = sub i64 %21, %sub.ptr.lhs.cast.i %sub.i = add i64 %sub.ptr.sub.neg.i, %sub.ptr.rhs.cast.i %call3.i = call noundef ptr @memchr(ptr noundef nonnull %incdec.ptr.i, i32 noundef 25, i64 noundef %sub.i) #25 %cmp.i = icmp eq ptr %call3.i, null br i1 %cmp.i, label %"_ZNK8proxygen11HTTPHeaders20forEachValueOfHeaderIZNS0_18stripPerHopHeadersERS0_bPKS0_E3$_0EEbNS_14HTTPHeaderCodeET_.exit", label %if.end.i "_ZNK8proxygen11HTTPHeaders20forEachValueOfHeaderIZNS0_18stripPerHopHeadersERS0_bPKS0_E3$_0EEbNS_14HTTPHeaderCodeET_.exit": ; preds = %"_ZZN8proxygen11HTTPHeaders18stripPerHopHeadersERS0_bPKS0_ENK3$_0clERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit.i", %while.body.lr.ph.i, %entry - %23 = load atomic i8, ptr @_ZGVZN8proxygen11HTTPHeaders17perHopHeaderCodesEvE17perHopHeaderCodes acquire, align 8 - %guard.uninitialized.i = icmp eq i8 %23, 0 + %24 = load atomic i8, ptr @_ZGVZN8proxygen11HTTPHeaders17perHopHeaderCodesEvE17perHopHeaderCodes acquire, align 8 + %guard.uninitialized.i = icmp eq i8 %24, 0 br i1 %guard.uninitialized.i, label %init.check.i, label %_ZN8proxygen11HTTPHeaders17perHopHeaderCodesEv.exit, !prof !4 init.check.i: ; preds = %"_ZNK8proxygen11HTTPHeaders20forEachValueOfHeaderIZNS0_18stripPerHopHeadersERS0_bPKS0_E3$_0EEbNS_14HTTPHeaderCodeET_.exit" - %24 = call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZN8proxygen11HTTPHeaders17perHopHeaderCodesEvE17perHopHeaderCodes) #21 - %tobool.not.i = icmp eq i32 %24, 0 + %25 = call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZN8proxygen11HTTPHeaders17perHopHeaderCodesEvE17perHopHeaderCodes) #21 + %tobool.not.i = icmp eq i32 %25, 0 br i1 %tobool.not.i, label %_ZN8proxygen11HTTPHeaders17perHopHeaderCodesEv.exit, label %invoke.cont.i invoke.cont.i: ; preds = %init.check.i @@ -2562,8 +2563,8 @@ invoke.cont.i: ; preds = %init.check.i _ZN8proxygen11HTTPHeaders17perHopHeaderCodesEv.exit: ; preds = %"_ZNK8proxygen11HTTPHeaders20forEachValueOfHeaderIZNS0_18stripPerHopHeadersERS0_bPKS0_E3$_0EEbNS_14HTTPHeaderCodeET_.exit", %init.check.i, %invoke.cont.i %length_ = getelementptr inbounds nuw i8, ptr %this, i64 8 - %25 = load i64, ptr %length_, align 8 - %cmp60.not = icmp eq i64 %25, 0 + %26 = load i64, ptr %length_, align 8 + %cmp60.not = icmp eq i64 %26, 0 br i1 %cmp60.not, label %for.end, label %for.body.lr.ph for.body.lr.ph: ; preds = %_ZN8proxygen11HTTPHeaders17perHopHeaderCodesEv.exit @@ -2575,25 +2576,25 @@ for.body.lr.ph: ; preds = %_ZN8proxygen11HTTPH for.body: ; preds = %for.body.lr.ph, %for.inc %i.061 = phi i64 [ 0, %for.body.lr.ph ], [ %inc51, %for.inc ] - %26 = load ptr, ptr %this, align 8 - %27 = load i64, ptr %capacity_.i.i, align 8 - %mul.i.i = mul i64 %27, 40 - %add.ptr.i.i = getelementptr inbounds i8, ptr %26, i64 %mul.i.i + %27 = load ptr, ptr %this, align 8 + %28 = load i64, ptr %capacity_.i.i, align 8 + %mul.i.i = mul i64 %28, 40 + %add.ptr.i.i = getelementptr inbounds i8, ptr %27, i64 %mul.i.i %arrayidx = getelementptr inbounds i8, ptr %add.ptr.i.i, i64 %i.061 - %28 = load i8, ptr %arrayidx, align 1 - %cmp4.not = icmp eq i8 %28, 1 + %29 = load i8, ptr %arrayidx, align 1 + %cmp4.not = icmp eq i8 %29, 1 br i1 %cmp4.not, label %if.else, label %if.then if.then: ; preds = %for.body - %conv5 = zext i8 %28 to i64 + %conv5 = zext i8 %29 to i64 %div1.i.i.i.i = lshr i64 %conv5, 6 %arrayidx.i.i.i = getelementptr inbounds nuw [4 x i64], ptr @_ZZN8proxygen11HTTPHeaders17perHopHeaderCodesEvE17perHopHeaderCodes, i64 0, i64 %div1.i.i.i.i %rem.i.i.i = and i64 %conv5, 63 - %29 = load i64, ptr %arrayidx.i.i.i, align 8 + %30 = load i64, ptr %arrayidx.i.i.i, align 8 %shl.i.i = shl nuw i64 1, %rem.i.i.i - %and.i = and i64 %29, %shl.i.i + %and.i = and i64 %30, %shl.i.i %cmp.i21 = icmp ne i64 %and.i, 0 - %cmp8 = icmp eq i8 %28, 47 + %cmp8 = icmp eq i8 %29, 47 %or.cond = and i1 %stripPriority, %cmp8 %or.cond44 = or i1 %or.cond, %cmp.i21 br i1 %or.cond44, label %if.then21, label %lor.rhs @@ -2602,20 +2603,20 @@ lor.rhs: ; preds = %if.then br i1 %tobool9.not, label %for.inc, label %land.rhs land.rhs: ; preds = %lor.rhs - %30 = load i64, ptr %length_.i22, align 8 - %cmp.not.i = icmp eq i64 %30, 0 + %31 = load i64, ptr %length_.i22, align 8 + %cmp.not.i = icmp eq i64 %31, 0 br i1 %cmp.not.i, label %for.inc, label %if.end19 if.else: ; preds = %for.body br i1 %tobool9.not, label %for.inc, label %land.lhs.true13 land.lhs.true13: ; preds = %if.else - %mul.i.i28 = shl i64 %27, 5 - %add.ptr.i.i29 = getelementptr inbounds i8, ptr %26, i64 %mul.i.i28 + %mul.i.i28 = shl i64 %28, 5 + %add.ptr.i.i29 = getelementptr inbounds i8, ptr %27, i64 %mul.i.i28 %arrayidx16 = getelementptr inbounds ptr, ptr %add.ptr.i.i29, i64 %i.061 - %31 = load ptr, ptr %arrayidx16, align 8 - %call.i = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4dataEv(ptr noundef nonnull align 8 dereferenceable(32) %31) #21 - %call3.i30 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %31) #21 + %32 = load ptr, ptr %arrayidx16, align 8 + %call.i = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4dataEv(ptr noundef nonnull align 8 dereferenceable(32) %32) #21 + %call3.i30 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %32) #21 %add.ptr.i = getelementptr inbounds i8, ptr %call.i, i64 %call3.i30 %call17 = call noundef zeroext i1 @_ZNK8proxygen11HTTPHeaders6existsEN5folly5RangeIPKcEE(ptr noundef nonnull align 8 dereferenceable(32) %customPerHopHeaders, ptr %call.i, ptr %add.ptr.i) br i1 %call17, label %land.lhs.true13.if.then21_crit_edge, label %for.inc @@ -2627,31 +2628,31 @@ land.lhs.true13.if.then21_crit_edge: ; preds = %land.lhs.true13 br label %if.then21 if.end19: ; preds = %land.rhs - %32 = load ptr, ptr %customPerHopHeaders, align 8 - %33 = load i64, ptr %capacity_.i.i23, align 8 - %mul.i.i.i24 = mul i64 %33, 40 - %add.ptr.i.i.i25 = getelementptr inbounds i8, ptr %32, i64 %mul.i.i.i24 - %conv.i = zext i8 %28 to i32 - %call3.i26 = call noundef ptr @memchr(ptr noundef %add.ptr.i.i.i25, i32 noundef %conv.i, i64 noundef %30) #25 + %33 = load ptr, ptr %customPerHopHeaders, align 8 + %34 = load i64, ptr %capacity_.i.i23, align 8 + %mul.i.i.i24 = mul i64 %34, 40 + %add.ptr.i.i.i25 = getelementptr inbounds i8, ptr %33, i64 %mul.i.i.i24 + %conv.i = zext i8 %29 to i32 + %call3.i26 = call noundef ptr @memchr(ptr noundef %add.ptr.i.i.i25, i32 noundef %conv.i, i64 noundef %31) #25 %cmp4.i.not = icmp eq ptr %call3.i26, null br i1 %cmp4.i.not, label %for.inc, label %if.then21 if.then21: ; preds = %land.lhs.true13.if.then21_crit_edge, %if.then, %if.end19 - %34 = phi i64 [ %.pre68, %land.lhs.true13.if.then21_crit_edge ], [ %27, %if.then ], [ %27, %if.end19 ] - %35 = phi ptr [ %.pre67, %land.lhs.true13.if.then21_crit_edge ], [ %26, %if.then ], [ %26, %if.end19 ] - %36 = phi i8 [ %.pre66, %land.lhs.true13.if.then21_crit_edge ], [ %28, %if.then ], [ %28, %if.end19 ] - %mul.i.i32 = shl i64 %34, 5 - %add.ptr.i.i33 = getelementptr inbounds i8, ptr %35, i64 %mul.i.i32 + %35 = phi i64 [ %.pre68, %land.lhs.true13.if.then21_crit_edge ], [ %28, %if.then ], [ %28, %if.end19 ] + %36 = phi ptr [ %.pre67, %land.lhs.true13.if.then21_crit_edge ], [ %27, %if.then ], [ %27, %if.end19 ] + %37 = phi i8 [ %.pre66, %land.lhs.true13.if.then21_crit_edge ], [ %29, %if.then ], [ %29, %if.end19 ] + %mul.i.i32 = shl i64 %35, 5 + %add.ptr.i.i33 = getelementptr inbounds i8, ptr %36, i64 %mul.i.i32 %arrayidx23 = getelementptr inbounds ptr, ptr %add.ptr.i.i33, i64 %i.061 - %37 = load ptr, ptr %arrayidx23, align 8 - %arrayidx25 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %35, i64 %i.061 - call void @_ZN8proxygen11HTTPHeaders17emplace_back_implINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEvNS_14HTTPHeaderCodeEPS7_OT_(ptr noundef nonnull align 8 dereferenceable(32) %strippedHeaders, i8 noundef zeroext %36, ptr noundef %37, ptr noundef nonnull align 8 dereferenceable(32) %arrayidx25) + %38 = load ptr, ptr %arrayidx23, align 8 + %arrayidx25 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %36, i64 %i.061 + call void @_ZN8proxygen11HTTPHeaders17emplace_back_implINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEvNS_14HTTPHeaderCodeEPS7_OT_(ptr noundef nonnull align 8 dereferenceable(32) %strippedHeaders, i8 noundef zeroext %37, ptr noundef %38, ptr noundef nonnull align 8 dereferenceable(32) %arrayidx25) store i8 0, ptr %arrayidx, align 1 - %38 = load i64, ptr %deletedCount_, align 8 - %inc = add i64 %38, 1 + %39 = load i64, ptr %deletedCount_, align 8 + %inc = add i64 %39, 1 store i64 %inc, ptr %deletedCount_, align 8 - %39 = load ptr, ptr @_ZZN8proxygen11HTTPHeaders18stripPerHopHeadersERS0_bPKS0_E8vlocal__, align 8 - %cmp26 = icmp eq ptr %39, null + %40 = load ptr, ptr @_ZZN8proxygen11HTTPHeaders18stripPerHopHeadersERS0_bPKS0_E8vlocal__, align 8 + %cmp26 = icmp eq ptr %40, null br i1 %cmp26, label %cond.true, label %cond.end cond.true: ; preds = %if.then21 @@ -2659,8 +2660,8 @@ cond.true: ; preds = %if.then21 br i1 %call27, label %cond.false32, label %for.inc cond.end: ; preds = %if.then21 - %40 = load i32, ptr %39, align 4 - %cmp28 = icmp sgt i32 %40, 4 + %41 = load i32, ptr %40, align 4 + %cmp28 = icmp sgt i32 %41, 4 br i1 %cmp28, label %cond.false32, label %for.inc cond.false32: ; preds = %cond.true, %cond.end @@ -2673,13 +2674,13 @@ invoke.cont36: ; preds = %cond.false32 to label %invoke.cont38 unwind label %lpad35 invoke.cont38: ; preds = %invoke.cont36 - %41 = load ptr, ptr %this, align 8 - %42 = load i64, ptr %capacity_.i.i, align 8 - %mul.i.i35 = shl i64 %42, 5 - %add.ptr.i.i36 = getelementptr inbounds i8, ptr %41, i64 %mul.i.i35 + %42 = load ptr, ptr %this, align 8 + %43 = load i64, ptr %capacity_.i.i, align 8 + %mul.i.i35 = shl i64 %43, 5 + %add.ptr.i.i36 = getelementptr inbounds i8, ptr %42, i64 %mul.i.i35 %arrayidx42 = getelementptr inbounds ptr, ptr %add.ptr.i.i36, i64 %i.061 - %43 = load ptr, ptr %arrayidx42, align 8 - %call44 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %call39, ptr noundef nonnull align 8 dereferenceable(32) %43) + %44 = load ptr, ptr %arrayidx42, align 8 + %call44 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %call39, ptr noundef nonnull align 8 dereferenceable(32) %44) to label %cleanup.action unwind label %lpad35 cleanup.action: ; preds = %invoke.cont38 @@ -2687,15 +2688,15 @@ cleanup.action: ; preds = %invoke.cont38 br label %for.inc lpad35: ; preds = %invoke.cont38, %invoke.cont36, %cond.false32 - %44 = landingpad { ptr, i32 } + %45 = landingpad { ptr, i32 } cleanup call void @_ZN6google10LogMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(96) %ref.tmp34) #21 br label %common.resume for.inc: ; preds = %land.rhs, %lor.rhs, %cond.true, %land.lhs.true13, %cond.end, %if.else, %if.end19, %cleanup.action %inc51 = add nuw i64 %i.061, 1 - %45 = load i64, ptr %length_, align 8 - %cmp = icmp ult i64 %inc51, %45 + %46 = load i64, ptr %length_, align 8 + %cmp = icmp ult i64 %inc51, %46 br i1 %cmp, label %for.body, label %for.end, !llvm.loop !23 for.end: ; preds = %for.inc, %_ZN8proxygen11HTTPHeaders17perHopHeaderCodesEv.exit diff --git a/bench/raylib/optimized/rmodels.ll b/bench/raylib/optimized/rmodels.ll index b18a94bfd18..77c76732bf2 100644 --- a/bench/raylib/optimized/rmodels.ll +++ b/bench/raylib/optimized/rmodels.ll @@ -13740,11 +13740,11 @@ define hidden noalias noundef ptr @_m3d_safestr(ptr noundef readonly captures(ad 13: ; preds = %3, %2 %14 = tail call noalias dereferenceable_or_null(1) ptr @malloc(i64 noundef 1) #60 %.not87 = icmp eq ptr %14, null - br i1 %.not87, label %66, label %15 + br i1 %.not87, label %65, label %15 15: ; preds = %13 store i8 0, ptr %14, align 1 - br label %66 + br label %65 .preheader99.split: ; preds = %.preheader99, %16 %.0101 = phi i32 [ %18, %16 ], [ 0, %.preheader99 ] @@ -13766,14 +13766,14 @@ define hidden noalias noundef ptr @_m3d_safestr(ptr noundef readonly captures(ad %21 = tail call noalias ptr @malloc(i64 noundef %20) #60 %22 = ptrtoint ptr %21 to i64 %.not91 = icmp eq ptr %21, null - br i1 %.not91, label %66, label %.preheader + br i1 %.not91, label %65, label %.preheader .preheader: ; preds = %.critedge %.not92.not.not = icmp eq i32 %1, 0 br i1 %.not92.not.not, label %.preheader.split.us, label %.preheader.split .preheader.split.us: ; preds = %.preheader, %.critedge2.us - %23 = phi i8 [ %.pre129, %.critedge2.us ], [ %4, %.preheader ] + %23 = phi i8 [ %.pre130, %.critedge2.us ], [ %4, %.preheader ] %.074.us = phi ptr [ %24, %.critedge2.us ], [ %0, %.preheader ] switch i8 %23, label %.critedge4.preheader [ i8 32, label %.critedge2.us @@ -13783,7 +13783,7 @@ define hidden noalias noundef ptr @_m3d_safestr(ptr noundef readonly captures(ad .critedge2.us: ; preds = %.preheader.split.us, %.preheader.split.us, %.preheader.split.us %24 = getelementptr inbounds nuw i8, ptr %.074.us, i64 1 - %.pre129 = load i8, ptr %24, align 1 + %.pre130 = load i8, ptr %24, align 1 br label %.preheader.split.us .preheader.split: ; preds = %.preheader, %.critedge2 @@ -13803,7 +13803,7 @@ define hidden noalias noundef ptr @_m3d_safestr(ptr noundef readonly captures(ad br i1 %.not93104, label %.critedge6.thread, label %.lr.ph .critedge6.thread: ; preds = %.critedge4.preheader - %.176.lcssa128132 = ptrtoint ptr %21 to i64 + %.176.lcssa128133 = ptrtoint ptr %21 to i64 br label %.critedge10 .lr.ph: ; preds = %.critedge4.preheader @@ -13930,25 +13930,25 @@ define hidden noalias noundef ptr @_m3d_safestr(ptr noundef readonly captures(ad ] .critedge12: ; preds = %.lr.ph119, %.lr.ph119, %.lr.ph119, %.lr.ph119 - %63 = icmp ugt ptr %61, %21 - br i1 %63, label %.lr.ph119, label %.critedge10.loopexit + %exitcond129.not = icmp eq ptr %61, %21 + br i1 %exitcond129.not, label %.critedge10.loopexit, label %.lr.ph119 .critedge10.loopexit: ; preds = %.lr.ph119, %.critedge12 %.4.lcssa.ph = phi ptr [ %scevgep, %.critedge12 ], [ %.4118, %.lr.ph119 ] - %.pre130 = ptrtoint ptr %.4.lcssa.ph to i64 + %.pre131 = ptrtoint ptr %.4.lcssa.ph to i64 br label %.critedge10 .critedge10: ; preds = %.critedge6.thread, %.critedge10.loopexit, %.critedge6 - %.pre-phi = phi i64 [ %.pre130, %.critedge10.loopexit ], [ %.176.lcssa128, %.critedge6 ], [ %.176.lcssa128132, %.critedge6.thread ] + %.pre-phi = phi i64 [ %.pre131, %.critedge10.loopexit ], [ %.176.lcssa128, %.critedge6 ], [ %.176.lcssa128133, %.critedge6.thread ] %.4.lcssa = phi ptr [ %.4.lcssa.ph, %.critedge10.loopexit ], [ %.176.lcssa, %.critedge6 ], [ %21, %.critedge6.thread ] store i8 0, ptr %.4.lcssa, align 1 %reass.sub = sub i64 %.pre-phi, %22 - %64 = add i64 %reass.sub, 1 - %65 = tail call ptr @realloc(ptr noundef nonnull %21, i64 noundef %64) #56 - br label %66 + %63 = add i64 %reass.sub, 1 + %64 = tail call ptr @realloc(ptr noundef nonnull %21, i64 noundef %63) #56 + br label %65 -66: ; preds = %15, %.critedge10, %.critedge, %13 - %.078 = phi ptr [ null, %13 ], [ null, %.critedge ], [ %65, %.critedge10 ], [ %14, %15 ] +65: ; preds = %15, %.critedge10, %.critedge, %13 + %.078 = phi ptr [ null, %13 ], [ null, %.critedge ], [ %64, %.critedge10 ], [ %14, %15 ] ret ptr %.078 } @@ -28780,8 +28780,8 @@ allocate_perm.exit.i: ; preds = %8, %allocate_perm.e %36 = load i16, ptr %35, align 2 store i16 %36, ptr %27, align 2 %indvars.iv.next50.i = add nsw i64 %indvars.iv49.i, -1 - %.not52.i = icmp eq i64 %indvars.iv49.i, 0 - br i1 %.not52.i, label %par__simplex_noise.exit, label %18 + %exitcond52.not.i = icmp eq i64 %indvars.iv49.i, 0 + br i1 %exitcond52.not.i, label %par__simplex_noise.exit, label %18 par__simplex_noise.exit: ; preds = %18, %2, %12 call void @llvm.lifetime.end.p0(i64 512, ptr nonnull %3) #58 @@ -50805,8 +50805,9 @@ jsmn_parse_string.exit: ; preds = %78 185: ; preds = %.lr.ph196, %181 %indvars.iv.next = add nsw i64 %indvars.iv, -1 - %186 = icmp sgt i64 %indvars.iv, 0 - br i1 %186, label %.lr.ph196, label %.thread163 + %186 = and i64 %indvars.iv.next, 4294967295 + %exitcond.not = icmp eq i64 %186, 4294967295 + br i1 %exitcond.not, label %.thread163, label %.lr.ph196 .thread163.sink.split: ; preds = %150, %71, %78, %.lr.ph.i144, %145, %143, %.lr.ph.i, %100, %84, %switch.early.test.i %.5.ph = phi i32 [ -2, %switch.early.test.i ], [ -2, %84 ], [ -3, %100 ], [ -3, %.lr.ph.i ], [ -2, %143 ], [ -3, %145 ], [ -3, %.lr.ph.i144 ], [ -1, %78 ], [ -3, %71 ], [ -1, %150 ] @@ -68514,18 +68515,18 @@ _m3dstbi__mad3sizes_valid.exit._crit_edge: ; preds = %39, %_m3dstbi__mul2 br i1 %9, label %121, label %127 121: ; preds = %120 - %.pre992 = sext i32 %.0565832 to i64 - br i1 %.not612, label %._crit_edge991, label %122 + %.pre995 = sext i32 %.0565832 to i64 + br i1 %.not612, label %._crit_edge994, label %122 122: ; preds = %121 - %123 = getelementptr inbounds i8, ptr %71, i64 %.pre992 + %123 = getelementptr inbounds i8, ptr %71, i64 %.pre995 store i8 -1, ptr %123, align 1 %124 = getelementptr i8, ptr %123, i64 1 store i8 -1, ptr %124, align 1 - br label %._crit_edge991 + br label %._crit_edge994 -._crit_edge991: ; preds = %121, %122 - %125 = getelementptr inbounds i8, ptr %72, i64 %.pre992 +._crit_edge994: ; preds = %121, %122 + %125 = getelementptr inbounds i8, ptr %72, i64 %.pre995 %126 = getelementptr inbounds i8, ptr %71, i64 %63 br label %130 @@ -68534,11 +68535,11 @@ _m3dstbi__mad3sizes_valid.exit._crit_edge: ; preds = %39, %_m3dstbi__mul2 %129 = getelementptr inbounds nuw i8, ptr %.0551, i64 1 br label %130 -130: ; preds = %._crit_edge991, %127, %117 - %.sink1023 = phi i64 [ %63, %._crit_edge991 ], [ 1, %127 ], [ %65, %117 ] - %.1552 = phi ptr [ %126, %._crit_edge991 ], [ %129, %127 ], [ %119, %117 ] - %.2533 = phi ptr [ %125, %._crit_edge991 ], [ %128, %127 ], [ %118, %117 ] - %131 = getelementptr inbounds i8, ptr %76, i64 %.sink1023 +130: ; preds = %._crit_edge994, %127, %117 + %.sink1026 = phi i64 [ %63, %._crit_edge994 ], [ 1, %127 ], [ %65, %117 ] + %.1552 = phi ptr [ %126, %._crit_edge994 ], [ %129, %127 ], [ %119, %117 ] + %.2533 = phi ptr [ %125, %._crit_edge994 ], [ %128, %127 ], [ %118, %117 ] + %131 = getelementptr inbounds i8, ptr %76, i64 %.sink1026 br i1 %or.cond, label %132, label %208 132: ; preds = %130 @@ -69078,13 +69079,13 @@ _m3dstbi__mad3sizes_valid.exit._crit_edge: ; preds = %39, %_m3dstbi__mul2 %.1867 = add i32 %4, -1 %320 = icmp sgt i32 %.1867, -1 %321 = zext i32 %.1867 to i64 - %wide.trip.count989 = zext i32 %5 to i64 + %wide.trip.count992 = zext i32 %5 to i64 br label %322 322: ; preds = %.lr.ph874, %.loopexit - %indvars.iv986 = phi i64 [ 0, %.lr.ph874 ], [ %indvars.iv.next987, %.loopexit ] + %indvars.iv989 = phi i64 [ 0, %.lr.ph874 ], [ %indvars.iv.next990, %.loopexit ] %323 = load ptr, ptr %31, align 8 - %324 = trunc nuw i64 %indvars.iv986 to i32 + %324 = trunc nuw i64 %indvars.iv989 to i32 %325 = mul i32 %13, %324 %326 = zext i32 %325 to i64 %327 = getelementptr inbounds nuw i8, ptr %323, i64 %326 @@ -69355,17 +69356,18 @@ _m3dstbi__mad3sizes_valid.exit._crit_edge: ; preds = %39, %_m3dstbi__mul2 br i1 %320, label %.lr.ph872, label %.loopexit .lr.ph872: ; preds = %.preheader, %.lr.ph872 - %indvars.iv983 = phi i64 [ %indvars.iv.next984, %.lr.ph872 ], [ %321, %.preheader ] - %463 = shl nuw nsw i64 %indvars.iv983, 1 + %indvars.iv984 = phi i64 [ %indvars.iv.next985, %.lr.ph872 ], [ %321, %.preheader ] + %463 = shl nuw nsw i64 %indvars.iv984, 1 %464 = getelementptr inbounds nuw i8, ptr %462, i64 %463 %465 = getelementptr inbounds nuw i8, ptr %464, i64 1 store i8 -1, ptr %465, align 1 - %466 = getelementptr inbounds nuw i8, ptr %462, i64 %indvars.iv983 + %466 = getelementptr inbounds nuw i8, ptr %462, i64 %indvars.iv984 %467 = load i8, ptr %466, align 1 store i8 %467, ptr %464, align 1 - %indvars.iv.next984 = add nsw i64 %indvars.iv983, -1 - %468 = icmp sgt i64 %indvars.iv983, 0 - br i1 %468, label %.lr.ph872, label %.loopexit + %indvars.iv.next985 = add nsw i64 %indvars.iv984, -1 + %468 = and i64 %indvars.iv.next985, 4294967295 + %exitcond988.not = icmp eq i64 %468, 4294967295 + br i1 %exitcond988.not, label %.loopexit, label %.lr.ph872 .lr.ph869: ; preds = %.preheader707, %.lr.ph869 %indvars.iv980 = phi i64 [ %indvars.iv.next981, %.lr.ph869 ], [ %321, %.preheader707 ] @@ -69386,13 +69388,14 @@ _m3dstbi__mad3sizes_valid.exit._crit_edge: ; preds = %39, %_m3dstbi__mul2 %480 = load i8, ptr %473, align 1 store i8 %480, ptr %470, align 1 %indvars.iv.next981 = add nsw i64 %indvars.iv980, -1 - %481 = icmp sgt i64 %indvars.iv980, 0 - br i1 %481, label %.lr.ph869, label %.loopexit + %481 = and i64 %indvars.iv.next981, 4294967295 + %exitcond983.not = icmp eq i64 %481, 4294967295 + br i1 %exitcond983.not, label %.loopexit, label %.lr.ph869 .loopexit: ; preds = %.lr.ph869, %.lr.ph872, %.preheader707, %.preheader, %.thread681 - %indvars.iv.next987 = add nuw nsw i64 %indvars.iv986, 1 - %exitcond990.not = icmp eq i64 %indvars.iv.next987, %wide.trip.count989 - br i1 %exitcond990.not, label %.loopexit713, label %322 + %indvars.iv.next990 = add nuw nsw i64 %indvars.iv989, 1 + %exitcond993.not = icmp eq i64 %indvars.iv.next990, %wide.trip.count992 + br i1 %exitcond993.not, label %.loopexit713, label %322 482: ; preds = %._crit_edge837 br i1 %9, label %483, label %.loopexit713 diff --git a/bench/re2/optimized/compile.ll b/bench/re2/optimized/compile.ll index 1554b0b1649..750fdf411de 100644 --- a/bench/re2/optimized/compile.ll +++ b/bench/re2/optimized/compile.ll @@ -3048,29 +3048,29 @@ for.body59.lr.ph: ; preds = %for.cond57.preheade br label %for.body59 for.body59: ; preds = %for.body59.lr.ph, %for.inc81 - %indvars.iv117 = phi i64 [ 0, %for.body59.lr.ph ], [ %indvars.iv.next118, %for.inc81 ] + %indvars.iv118 = phi i64 [ 0, %for.body59.lr.ph ], [ %indvars.iv.next119, %for.inc81 ] %id.0102 = phi i32 [ 0, %for.body59.lr.ph ], [ %id.1, %for.inc81 ] - %cmp60 = icmp eq i64 %indvars.iv117, 0 + %cmp60 = icmp eq i64 %indvars.iv118, 0 br i1 %cmp60, label %for.body59.if.then69_crit_edge, label %lor.lhs.false for.body59.if.then69_crit_edge: ; preds = %for.body59 - %.pre122 = load i8, ptr %ulo, align 1 - %.pre123 = load i8, ptr %uhi, align 1 + %.pre123 = load i8, ptr %ulo, align 1 + %.pre124 = load i8, ptr %uhi, align 1 br label %if.then69 lor.lhs.false: ; preds = %for.body59 - %arrayidx = getelementptr inbounds nuw [4 x i8], ptr %ulo, i64 0, i64 %indvars.iv117 + %arrayidx = getelementptr inbounds nuw [4 x i8], ptr %ulo, i64 0, i64 %indvars.iv118 %11 = load i8, ptr %arrayidx, align 1 - %arrayidx63 = getelementptr inbounds nuw [4 x i8], ptr %uhi, i64 0, i64 %indvars.iv117 + %arrayidx63 = getelementptr inbounds nuw [4 x i8], ptr %uhi, i64 0, i64 %indvars.iv118 %12 = load i8, ptr %arrayidx63, align 1 %cmp65 = icmp ne i8 %11, %12 - %cmp68.not = icmp eq i64 %indvars.iv117, %10 + %cmp68.not = icmp eq i64 %indvars.iv118, %10 %or.cond51 = select i1 %cmp65, i1 true, i1 %cmp68.not br i1 %or.cond51, label %if.else, label %if.then69 if.then69: ; preds = %for.body59.if.then69_crit_edge, %lor.lhs.false - %13 = phi i8 [ %.pre123, %for.body59.if.then69_crit_edge ], [ %11, %lor.lhs.false ] - %14 = phi i8 [ %.pre122, %for.body59.if.then69_crit_edge ], [ %11, %lor.lhs.false ] + %13 = phi i8 [ %.pre124, %for.body59.if.then69_crit_edge ], [ %11, %lor.lhs.false ] + %14 = phi i8 [ %.pre123, %for.body59.if.then69_crit_edge ], [ %11, %lor.lhs.false ] %call74 = call noundef i32 @_ZN3re28Compiler20CachedRuneByteSuffixEhhbi(ptr noundef nonnull align 8 dereferenceable(212) %this, i8 noundef zeroext %14, i8 noundef zeroext %13, i1 noundef zeroext false, i32 noundef %id.0102) br label %for.inc81 @@ -3080,9 +3080,9 @@ if.else: ; preds = %lor.lhs.false for.inc81: ; preds = %if.then69, %if.else %id.1 = phi i32 [ %call74, %if.then69 ], [ %call79, %if.else ] - %indvars.iv.next118 = add nuw nsw i64 %indvars.iv117, 1 - %exitcond120.not = icmp eq i64 %indvars.iv.next118, %wide.trip.count - br i1 %exitcond120.not, label %if.end117, label %for.body59, !llvm.loop !18 + %indvars.iv.next119 = add nuw nsw i64 %indvars.iv118, 1 + %exitcond121.not = icmp eq i64 %indvars.iv.next119, %wide.trip.count + br i1 %exitcond121.not, label %if.end117, label %for.body59, !llvm.loop !18 if.else84: ; preds = %for.end49 br i1 %cmp58101, label %for.body89.preheader, label %if.end117 @@ -3102,7 +3102,7 @@ for.body89: ; preds = %for.body89.preheade for.body89.if.then102_crit_edge: ; preds = %for.body89 %.pre = load i8, ptr %arrayidx104.phi.trans.insert, align 1 - %.pre121 = load i8, ptr %arrayidx106.phi.trans.insert, align 1 + %.pre122 = load i8, ptr %arrayidx106.phi.trans.insert, align 1 br label %if.then102 lor.lhs.false92: ; preds = %for.body89 @@ -3116,7 +3116,7 @@ lor.lhs.false92: ; preds = %for.body89 br i1 %or.cond1, label %if.then102, label %if.else108 if.then102: ; preds = %for.body89.if.then102_crit_edge, %lor.lhs.false92 - %18 = phi i8 [ %.pre121, %for.body89.if.then102_crit_edge ], [ %17, %lor.lhs.false92 ] + %18 = phi i8 [ %.pre122, %for.body89.if.then102_crit_edge ], [ %17, %lor.lhs.false92 ] %19 = phi i8 [ %.pre, %for.body89.if.then102_crit_edge ], [ %16, %lor.lhs.false92 ] %call107 = call noundef i32 @_ZN3re28Compiler20CachedRuneByteSuffixEhhbi(ptr noundef nonnull align 8 dereferenceable(212) %this, i8 noundef zeroext %19, i8 noundef zeroext %18, i1 noundef zeroext false, i32 noundef %id.397) br label %for.inc115 @@ -3128,30 +3128,31 @@ if.else108: ; preds = %lor.lhs.false92 for.inc115: ; preds = %if.then102, %if.else108 %id.4 = phi i32 [ %call107, %if.then102 ], [ %call113, %if.else108 ] %indvars.iv.next = add nsw i64 %indvars.iv, -1 - %cmp88 = icmp sgt i64 %indvars.iv, 0 - br i1 %cmp88, label %for.body89, label %if.end117, !llvm.loop !19 + %20 = and i64 %indvars.iv.next, 4294967295 + %exitcond117.not = icmp eq i64 %20, 4294967295 + br i1 %exitcond117.not, label %if.end117, label %for.body89, !llvm.loop !19 if.end117: ; preds = %for.inc115, %for.inc81, %if.else84, %for.cond57.preheader %id.2 = phi i32 [ 0, %for.cond57.preheader ], [ 0, %if.else84 ], [ %id.1, %for.inc81 ], [ %id.4, %for.inc115 ] %failed_.i53 = getelementptr inbounds nuw i8, ptr %this, i64 104 - %20 = load i8, ptr %failed_.i53, align 8 - %tobool.i54 = trunc i8 %20 to i1 + %21 = load i8, ptr %failed_.i53, align 8 + %tobool.i54 = trunc i8 %21 to i1 br i1 %tobool.i54, label %return, label %if.end.i55 if.end.i55: ; preds = %if.end117 %rune_range_.i56 = getelementptr inbounds nuw i8, ptr %this, i64 192 - %21 = load i32, ptr %rune_range_.i56, align 8 - %cmp.i57 = icmp eq i32 %21, 0 + %22 = load i32, ptr %rune_range_.i56, align 8 + %cmp.i57 = icmp eq i32 %22, 0 br i1 %cmp.i57, label %return.sink.split.i68, label %if.end5.i58 if.end5.i58: ; preds = %if.end.i55 %encoding_.i59 = getelementptr inbounds nuw i8, ptr %this, i64 108 - %22 = load i32, ptr %encoding_.i59, align 4 - %cmp6.i60 = icmp eq i32 %22, 1 + %23 = load i32, ptr %encoding_.i59, align 4 + %cmp6.i60 = icmp eq i32 %23, 1 br i1 %cmp6.i60, label %if.then7.i70, label %if.end12.i61 if.then7.i70: ; preds = %if.end5.i58 - %call.i71 = call noundef i32 @_ZN3re28Compiler18AddSuffixRecursiveEii(ptr noundef nonnull align 8 dereferenceable(212) %this, i32 noundef %21, i32 noundef %id.2) + %call.i71 = call noundef i32 @_ZN3re28Compiler18AddSuffixRecursiveEii(ptr noundef nonnull align 8 dereferenceable(212) %this, i32 noundef %22, i32 noundef %id.2) br label %return.sink.split.i68 if.end12.i61: ; preds = %if.end5.i58 @@ -3162,10 +3163,10 @@ if.end12.i61: ; preds = %if.end5.i58 if.end18.i64: ; preds = %if.end12.i61 %conv.i.i65 = zext nneg i32 %call13.i62 to i64 %add.ptr.i.i.i.i.i.i.i.i66 = getelementptr inbounds nuw i8, ptr %this, i64 128 - %23 = load ptr, ptr %add.ptr.i.i.i.i.i.i.i.i66, align 8 - %arrayidx.i.i.i67 = getelementptr inbounds nuw %"class.re2::Prog::Inst", ptr %23, i64 %conv.i.i65 - %24 = load i32, ptr %rune_range_.i56, align 8 - call void @_ZN3re24Prog4Inst7InitAltEjj(ptr noundef nonnull align 4 dereferenceable(8) %arrayidx.i.i.i67, i32 noundef %24, i32 noundef %id.2) + %24 = load ptr, ptr %add.ptr.i.i.i.i.i.i.i.i66, align 8 + %arrayidx.i.i.i67 = getelementptr inbounds nuw %"class.re2::Prog::Inst", ptr %24, i64 %conv.i.i65 + %25 = load i32, ptr %rune_range_.i56, align 8 + call void @_ZN3re24Prog4Inst7InitAltEjj(ptr noundef nonnull align 4 dereferenceable(8) %arrayidx.i.i.i67, i32 noundef %25, i32 noundef %id.2) br label %return.sink.split.i68 return.sink.split.i68: ; preds = %if.end18.i64, %if.end12.i61, %if.then7.i70, %if.end.i55 diff --git a/bench/re2/optimized/simplify.ll b/bench/re2/optimized/simplify.ll index 625dd409772..79e8a753f68 100644 --- a/bench/re2/optimized/simplify.ll +++ b/bench/re2/optimized/simplify.ll @@ -1942,63 +1942,64 @@ land.lhs.true: ; preds = %lor.lhs.false %5 = load ptr, ptr %4, align 8 %retval.0.i = select i1 %cmp.i, ptr %4, ptr %5 %idx.ext = zext i16 %3 to i64 - %add.ptr = getelementptr inbounds nuw ptr, ptr %retval.0.i, i64 %idx.ext - %sub.ptr.lhs.cast.i.i.i.i = ptrtoint ptr %add.ptr to i64 + %add.ptr.idx = shl nuw nsw i64 %idx.ext, 3 + %add.ptr = getelementptr inbounds nuw i8, ptr %retval.0.i, i64 %add.ptr.idx %cmp54.i.i.i.i.not = icmp ult i16 %3, 4 br i1 %cmp54.i.i.i.i.not, label %for.end.i.i.i.i, label %for.body.i.i.i.i.preheader for.body.i.i.i.i.preheader: ; preds = %land.lhs.true %shr.i.i.i.i = lshr i64 %idx.ext, 2 + %6 = shl nuw nsw i64 %shr.i.i.i.i, 5 + %scevgep = getelementptr i8, ptr %5, i64 %6 br label %for.body.i.i.i.i for.body.i.i.i.i: ; preds = %for.body.i.i.i.i.preheader, %if.end11.i.i.i.i %__trip_count.056.i.i.i.i = phi i64 [ %dec.i.i.i.i, %if.end11.i.i.i.i ], [ %shr.i.i.i.i, %for.body.i.i.i.i.preheader ] %__first.addr.055.i.i.i.i = phi ptr [ %incdec.ptr12.i.i.i.i, %if.end11.i.i.i.i ], [ %retval.0.i, %for.body.i.i.i.i.preheader ] - %6 = load ptr, ptr %__first.addr.055.i.i.i.i, align 8 - %7 = load i8, ptr %6, align 8 - %8 = add i8 %7, -14 - %switch.i93 = icmp ult i8 %8, 6 + %7 = load ptr, ptr %__first.addr.055.i.i.i.i, align 8 + %8 = load i8, ptr %7, align 8 + %9 = add i8 %8, -14 + %switch.i93 = icmp ult i8 %9, 6 br i1 %switch.i93, label %if.end.i.i.i.i, label %_ZSt6all_ofIPPN3re26RegexpEPFbS2_EEbT_S6_T0_.exit if.end.i.i.i.i: ; preds = %for.body.i.i.i.i %incdec.ptr.i.i.i.i = getelementptr inbounds nuw i8, ptr %__first.addr.055.i.i.i.i, i64 8 - %9 = load ptr, ptr %incdec.ptr.i.i.i.i, align 8 - %10 = load i8, ptr %9, align 8 - %11 = add i8 %10, -14 - %switch.i92 = icmp ult i8 %11, 6 + %10 = load ptr, ptr %incdec.ptr.i.i.i.i, align 8 + %11 = load i8, ptr %10, align 8 + %12 = add i8 %11, -14 + %switch.i92 = icmp ult i8 %12, 6 br i1 %switch.i92, label %if.end3.i.i.i.i, label %_ZSt6all_ofIPPN3re26RegexpEPFbS2_EEbT_S6_T0_.exit.loopexit.split.loop.exit if.end3.i.i.i.i: ; preds = %if.end.i.i.i.i %incdec.ptr4.i.i.i.i = getelementptr inbounds nuw i8, ptr %__first.addr.055.i.i.i.i, i64 16 - %12 = load ptr, ptr %incdec.ptr4.i.i.i.i, align 8 - %13 = load i8, ptr %12, align 8 - %14 = add i8 %13, -14 - %switch.i91 = icmp ult i8 %14, 6 + %13 = load ptr, ptr %incdec.ptr4.i.i.i.i, align 8 + %14 = load i8, ptr %13, align 8 + %15 = add i8 %14, -14 + %switch.i91 = icmp ult i8 %15, 6 br i1 %switch.i91, label %if.end7.i.i.i.i, label %_ZSt6all_ofIPPN3re26RegexpEPFbS2_EEbT_S6_T0_.exit.loopexit.split.loop.exit164 if.end7.i.i.i.i: ; preds = %if.end3.i.i.i.i %incdec.ptr8.i.i.i.i = getelementptr inbounds nuw i8, ptr %__first.addr.055.i.i.i.i, i64 24 - %15 = load ptr, ptr %incdec.ptr8.i.i.i.i, align 8 - %16 = load i8, ptr %15, align 8 - %17 = add i8 %16, -14 - %switch.i90 = icmp ult i8 %17, 6 + %16 = load ptr, ptr %incdec.ptr8.i.i.i.i, align 8 + %17 = load i8, ptr %16, align 8 + %18 = add i8 %17, -14 + %switch.i90 = icmp ult i8 %18, 6 br i1 %switch.i90, label %if.end11.i.i.i.i, label %_ZSt6all_ofIPPN3re26RegexpEPFbS2_EEbT_S6_T0_.exit.loopexit.split.loop.exit166 if.end11.i.i.i.i: ; preds = %if.end7.i.i.i.i %incdec.ptr12.i.i.i.i = getelementptr inbounds nuw i8, ptr %__first.addr.055.i.i.i.i, i64 32 %dec.i.i.i.i = add nsw i64 %__trip_count.056.i.i.i.i, -1 - %cmp.i.i.i.i = icmp sgt i64 %__trip_count.056.i.i.i.i, 1 - br i1 %cmp.i.i.i.i, label %for.body.i.i.i.i, label %for.end.loopexit.i.i.i.i, !llvm.loop !17 + %exitcond.not.i.i.i.i = icmp eq i64 %dec.i.i.i.i, 0 + br i1 %exitcond.not.i.i.i.i, label %for.end.loopexit.i.i.i.i, label %for.body.i.i.i.i, !llvm.loop !17 for.end.loopexit.i.i.i.i: ; preds = %if.end11.i.i.i.i - %.pre.i.i.i.i = ptrtoint ptr %incdec.ptr12.i.i.i.i to i64 - %.pre61.i.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i, %.pre.i.i.i.i - %18 = ashr exact i64 %.pre61.i.i.i.i, 3 + %gepdiff = sub nsw i64 %add.ptr.idx, %6 + %19 = ashr exact i64 %gepdiff, 3 br label %for.end.i.i.i.i for.end.i.i.i.i: ; preds = %for.end.loopexit.i.i.i.i, %land.lhs.true - %sub.ptr.sub15.pre-phi.i.i.i.i = phi i64 [ %18, %for.end.loopexit.i.i.i.i ], [ %idx.ext, %land.lhs.true ] - %__first.addr.0.lcssa.i.i.i.i = phi ptr [ %incdec.ptr12.i.i.i.i, %for.end.loopexit.i.i.i.i ], [ %retval.0.i, %land.lhs.true ] + %sub.ptr.sub15.pre-phi.i.i.i.i = phi i64 [ %19, %for.end.loopexit.i.i.i.i ], [ %idx.ext, %land.lhs.true ] + %__first.addr.0.lcssa.i.i.i.i = phi ptr [ %scevgep, %for.end.loopexit.i.i.i.i ], [ %retval.0.i, %land.lhs.true ] switch i64 %sub.ptr.sub15.pre-phi.i.i.i.i, label %if.then [ i64 3, label %sw.bb.i.i.i.i i64 2, label %sw.bb21.i.i.i.i @@ -2006,10 +2007,10 @@ for.end.i.i.i.i: ; preds = %for.end.loopexit.i. ] sw.bb.i.i.i.i: ; preds = %for.end.i.i.i.i - %19 = load ptr, ptr %__first.addr.0.lcssa.i.i.i.i, align 8 - %20 = load i8, ptr %19, align 8 - %21 = add i8 %20, -14 - %switch.i89 = icmp ult i8 %21, 6 + %20 = load ptr, ptr %__first.addr.0.lcssa.i.i.i.i, align 8 + %21 = load i8, ptr %20, align 8 + %22 = add i8 %21, -14 + %switch.i89 = icmp ult i8 %22, 6 br i1 %switch.i89, label %if.end19.i.i.i.i, label %_ZSt6all_ofIPPN3re26RegexpEPFbS2_EEbT_S6_T0_.exit if.end19.i.i.i.i: ; preds = %sw.bb.i.i.i.i @@ -2018,10 +2019,10 @@ if.end19.i.i.i.i: ; preds = %sw.bb.i.i.i.i sw.bb21.i.i.i.i: ; preds = %if.end19.i.i.i.i, %for.end.i.i.i.i %__first.addr.1.i.i.i.i = phi ptr [ %incdec.ptr20.i.i.i.i, %if.end19.i.i.i.i ], [ %__first.addr.0.lcssa.i.i.i.i, %for.end.i.i.i.i ] - %22 = load ptr, ptr %__first.addr.1.i.i.i.i, align 8 - %23 = load i8, ptr %22, align 8 - %24 = add i8 %23, -14 - %switch.i88 = icmp ult i8 %24, 6 + %23 = load ptr, ptr %__first.addr.1.i.i.i.i, align 8 + %24 = load i8, ptr %23, align 8 + %25 = add i8 %24, -14 + %switch.i88 = icmp ult i8 %25, 6 br i1 %switch.i88, label %if.end24.i.i.i.i, label %_ZSt6all_ofIPPN3re26RegexpEPFbS2_EEbT_S6_T0_.exit if.end24.i.i.i.i: ; preds = %sw.bb21.i.i.i.i @@ -2030,10 +2031,10 @@ if.end24.i.i.i.i: ; preds = %sw.bb21.i.i.i.i sw.bb26.i.i.i.i: ; preds = %if.end24.i.i.i.i, %for.end.i.i.i.i %__first.addr.2.i.i.i.i = phi ptr [ %incdec.ptr25.i.i.i.i, %if.end24.i.i.i.i ], [ %__first.addr.0.lcssa.i.i.i.i, %for.end.i.i.i.i ] - %25 = load ptr, ptr %__first.addr.2.i.i.i.i, align 8 - %26 = load i8, ptr %25, align 8 - %27 = add i8 %26, -14 - %switch.i87 = icmp ult i8 %27, 6 + %26 = load ptr, ptr %__first.addr.2.i.i.i.i, align 8 + %27 = load i8, ptr %26, align 8 + %28 = add i8 %27, -14 + %switch.i87 = icmp ult i8 %28, 6 br i1 %switch.i87, label %if.then, label %_ZSt6all_ofIPPN3re26RegexpEPFbS2_EEbT_S6_T0_.exit _ZSt6all_ofIPPN3re26RegexpEPFbS2_EEbT_S6_T0_.exit.loopexit.split.loop.exit: ; preds = %if.end.i.i.i.i @@ -2144,8 +2145,8 @@ _ZN3re28PODArrayIPNS_6RegexpEED2Ev.exit60: ; preds = %invoke.cont33 if.end39: ; preds = %if.then, %if.end %min.addr.0127 = phi i32 [ %min.addr.0, %if.end ], [ %.sroa.speculated103, %if.then ] %max.addr.0126 = phi i32 [ %max, %if.end ], [ 1, %if.then ] - %28 = or i32 %max.addr.0126, %min.addr.0127 - %or.cond = icmp eq i32 %28, 0 + %29 = or i32 %max.addr.0126, %min.addr.0127 + %or.cond = icmp eq i32 %29, 0 br i1 %or.cond, label %if.then43, label %if.end47 if.then43: ; preds = %if.end39 @@ -2154,7 +2155,7 @@ if.then43: ; preds = %if.end39 to label %return unwind label %lpad45 lpad45: ; preds = %if.then43 - %29 = landingpad { ptr, i32 } + %30 = landingpad { ptr, i32 } cleanup tail call void @_ZdlPv(ptr noundef nonnull %call44) #16 br label %common.resume @@ -2235,19 +2236,19 @@ for.body81: ; preds = %if.then75, %_ZN3re2 to label %_ZN3re214SimplifyWalker7Concat2EPNS_6RegexpES2_NS1_10ParseFlagsE.exit unwind label %lpad.i common.resume: ; preds = %_ZN3re28PODArrayIPNS_6RegexpEED2Ev.exit, %lpad45, %_ZN3re28PODArrayIPNS_6RegexpEED2Ev.exit73, %ehcleanup, %lpad115, %lpad.i85, %lpad.i80, %lpad.i - %common.resume.op = phi { ptr, i32 } [ %30, %lpad.i ], [ %32, %lpad.i80 ], [ %34, %lpad.i85 ], [ %lpad.phi132, %_ZN3re28PODArrayIPNS_6RegexpEED2Ev.exit ], [ %29, %lpad45 ], [ %lpad.phi, %_ZN3re28PODArrayIPNS_6RegexpEED2Ev.exit73 ], [ %37, %lpad115 ], [ %.pn, %ehcleanup ] + %common.resume.op = phi { ptr, i32 } [ %31, %lpad.i ], [ %33, %lpad.i80 ], [ %35, %lpad.i85 ], [ %lpad.phi132, %_ZN3re28PODArrayIPNS_6RegexpEED2Ev.exit ], [ %30, %lpad45 ], [ %lpad.phi, %_ZN3re28PODArrayIPNS_6RegexpEED2Ev.exit73 ], [ %38, %lpad115 ], [ %.pn, %ehcleanup ] resume { ptr, i32 } %common.resume.op lpad.i: ; preds = %for.body81 - %30 = landingpad { ptr, i32 } + %31 = landingpad { ptr, i32 } cleanup tail call void @_ZdlPv(ptr noundef nonnull %call.i) #16 br label %common.resume _ZN3re214SimplifyWalker7Concat2EPNS_6RegexpES2_NS1_10ParseFlagsE.exit: ; preds = %for.body81 %call.i.i = tail call noalias noundef nonnull dereferenceable(16) ptr @_Znam(i64 noundef 16) #19 - %31 = getelementptr inbounds nuw i8, ptr %call.i, i64 8 - store ptr %call.i.i, ptr %31, align 8 + %32 = getelementptr inbounds nuw i8, ptr %call.i, i64 8 + store ptr %call.i.i, ptr %32, align 8 %nsub_.i.i = getelementptr inbounds nuw i8, ptr %call.i, i64 6 store i16 2, ptr %nsub_.i.i, align 2 store ptr %call82, ptr %call.i.i, align 8 @@ -2269,15 +2270,15 @@ if.else: ; preds = %for.end87 to label %if.end92.thread unwind label %lpad.i80 lpad.i80: ; preds = %if.else - %32 = landingpad { ptr, i32 } + %33 = landingpad { ptr, i32 } cleanup tail call void @_ZdlPv(ptr noundef nonnull %call.i79) #16 br label %common.resume if.end92.thread: ; preds = %if.else %call.i.i81 = tail call noalias noundef nonnull dereferenceable(16) ptr @_Znam(i64 noundef 16) #19 - %33 = getelementptr inbounds nuw i8, ptr %call.i79, i64 8 - store ptr %call.i.i81, ptr %33, align 8 + %34 = getelementptr inbounds nuw i8, ptr %call.i79, i64 8 + store ptr %call.i.i81, ptr %34, align 8 %nsub_.i.i82 = getelementptr inbounds nuw i8, ptr %call.i79, i64 6 store i16 2, ptr %nsub_.i.i82, align 2 store ptr %nre.0, ptr %call.i.i81, align 8 @@ -2310,7 +2311,7 @@ invoke.cont6.i: ; preds = %invoke.cont4.i to label %_ZN10LogMessageC2EPKci.exit unwind label %lpad.i85 lpad.i85: ; preds = %invoke.cont6.i, %invoke.cont4.i, %invoke.cont2.i, %if.then94 - %34 = landingpad { ptr, i32 } + %35 = landingpad { ptr, i32 } cleanup call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %str_.i) #15 br label %common.resume @@ -2351,23 +2352,23 @@ invoke.cont112: ; preds = %invoke.cont110 to label %return unwind label %lpad115 lpad96: ; preds = %invoke.cont99, %_ZN10LogMessageC2EPKci.exit - %35 = landingpad { ptr, i32 } + %36 = landingpad { ptr, i32 } cleanup br label %ehcleanup lpad103: ; preds = %invoke.cont110, %invoke.cont108, %invoke.cont106, %invoke.cont104, %invoke.cont102 - %36 = landingpad { ptr, i32 } + %37 = landingpad { ptr, i32 } cleanup call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp101) #15 br label %ehcleanup ehcleanup: ; preds = %lpad103, %lpad96 - %.pn = phi { ptr, i32 } [ %36, %lpad103 ], [ %35, %lpad96 ] + %.pn = phi { ptr, i32 } [ %37, %lpad103 ], [ %36, %lpad96 ] call void @_ZN10LogMessageD2Ev(ptr noundef nonnull align 8 dereferenceable(384) %ref.tmp95) #15 br label %common.resume lpad115: ; preds = %invoke.cont112 - %37 = landingpad { ptr, i32 } + %38 = landingpad { ptr, i32 } cleanup call void @_ZdlPv(ptr noundef nonnull %call114) #16 br label %common.resume diff --git a/bench/recastnavigation/optimized/DetourTileCache.ll b/bench/recastnavigation/optimized/DetourTileCache.ll index 597b3be50b8..37f5c34ae41 100644 --- a/bench/recastnavigation/optimized/DetourTileCache.ll +++ b/bench/recastnavigation/optimized/DetourTileCache.ll @@ -261,8 +261,9 @@ define noundef range(i32 1073741824, -2147483639) i32 @_ZN11dtTileCache4initEPK1 %30 = load ptr, ptr %16, align 8 %31 = getelementptr inbounds nuw %struct.dtTileCacheObstacle, ptr %30, i64 %indvars.iv.next store ptr %31, ptr %21, align 8 - %32 = icmp samesign ugt i64 %indvars.iv, 1 - br i1 %32, label %.lr.ph, label %._crit_edge, !llvm.loop !6 + %32 = and i64 %indvars.iv.next, 4294967295 + %exitcond.not = icmp eq i64 %32, 0 + br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !6 ._crit_edge: ; preds = %.lr.ph, %17 %33 = getelementptr inbounds nuw i8, ptr %0, i64 84 @@ -322,11 +323,11 @@ define noundef range(i32 1073741824, -2147483639) i32 @_ZN11dtTileCache4initEPK1 .lr.ph24.preheader: ; preds = %60 %72 = zext nneg i32 %70 to i64 - %.pre30 = load ptr, ptr %53, align 8 + %.pre32 = load ptr, ptr %53, align 8 br label %.lr.ph24 .lr.ph24: ; preds = %.lr.ph24.preheader, %.lr.ph24 - %73 = phi ptr [ %.pre30, %.lr.ph24.preheader ], [ %78, %.lr.ph24 ] + %73 = phi ptr [ %.pre32, %.lr.ph24.preheader ], [ %78, %.lr.ph24 ] %indvars.iv27 = phi i64 [ %72, %.lr.ph24.preheader ], [ %indvars.iv.next28, %.lr.ph24 ] %indvars.iv.next28 = add nsw i64 %indvars.iv27, -1 %74 = getelementptr inbounds nuw %struct.dtCompressedTile, ptr %73, i64 %indvars.iv.next28 @@ -338,15 +339,16 @@ define noundef range(i32 1073741824, -2147483639) i32 @_ZN11dtTileCache4initEPK1 %78 = load ptr, ptr %53, align 8 %79 = getelementptr inbounds nuw %struct.dtCompressedTile, ptr %78, i64 %indvars.iv.next28 store ptr %79, ptr %69, align 8 - %80 = icmp samesign ugt i64 %indvars.iv27, 1 - br i1 %80, label %.lr.ph24, label %._crit_edge25.loopexit, !llvm.loop !7 + %80 = and i64 %indvars.iv.next28, 4294967295 + %exitcond31.not = icmp eq i64 %80, 0 + br i1 %exitcond31.not, label %._crit_edge25.loopexit, label %.lr.ph24, !llvm.loop !7 ._crit_edge25.loopexit: ; preds = %.lr.ph24 - %.pre31 = load i32, ptr %33, align 4 + %.pre33 = load i32, ptr %33, align 4 br label %._crit_edge25 ._crit_edge25: ; preds = %._crit_edge25.loopexit, %60 - %81 = phi i32 [ %.pre31, %._crit_edge25.loopexit ], [ %70, %60 ] + %81 = phi i32 [ %.pre33, %._crit_edge25.loopexit ], [ %70, %60 ] %82 = add i32 %81, -1 %83 = lshr i32 %82, 1 %84 = or i32 %83, %82 diff --git a/bench/redis/optimized/linenoise.ll b/bench/redis/optimized/linenoise.ll index 25a105b738f..21bc061fb38 100644 --- a/bench/redis/optimized/linenoise.ll +++ b/bench/redis/optimized/linenoise.ll @@ -2995,7 +2995,7 @@ define dso_local void @searchInHistory(ptr dead_on_unwind noalias writable write 5: ; preds = %4 %.b9 = load i1, ptr @cycle_to_next_search, align 4 - %.pre77 = add nsw i32 %3, -1 + %.pre80 = add nsw i32 %3, -1 br i1 %.b9, label %.split.us, label %.split .split.us: ; preds = %5 @@ -3017,20 +3017,25 @@ define dso_local void @searchInHistory(ptr dead_on_unwind noalias writable write .lr.ph42: ; preds = %.split.us %.pre = load i32, ptr @reverse_search_direction, align 4 %18 = icmp eq i32 %.pre, 1 - br i1 %18, label %.lr.ph42.split.us.preheader, label %.lr.ph42.split + br i1 %18, label %.lr.ph42.split.us.preheader, label %.lr.ph42.split.preheader + +.lr.ph42.split.preheader: ; preds = %.lr.ph42 + %smin73 = tail call i32 @llvm.smin.i32(i32 %6, i32 0) + %wide.trip.count74 = sext i32 %smin73 to i64 + br label %.lr.ph42.split .lr.ph42.split.us.preheader: ; preds = %.lr.ph42 - %sext75 = sext i32 %.pre77 to i64 + %sext78 = sext i32 %.pre80 to i64 br label %.lr.ph42.split.us .lr.ph42.split.us: ; preds = %.lr.ph42.split.us.preheader, %20 - %indvars.iv73 = phi i64 [ %11, %.lr.ph42.split.us.preheader ], [ %indvars.iv.next74, %20 ] - %19 = icmp eq i64 %indvars.iv73, %sext75 + %indvars.iv76 = phi i64 [ %11, %.lr.ph42.split.us.preheader ], [ %indvars.iv.next77, %20 ] + %19 = icmp eq i64 %indvars.iv76, %sext78 br i1 %19, label %.loopexit, label %20 20: ; preds = %.lr.ph42.split.us - %indvars.iv.next74 = add nsw i64 %indvars.iv73, 1 - %21 = getelementptr inbounds ptr, ptr %7, i64 %indvars.iv.next74 + %indvars.iv.next77 = add nsw i64 %indvars.iv76, 1 + %21 = getelementptr inbounds ptr, ptr %7, i64 %indvars.iv.next77 %22 = load ptr, ptr %21, align 8, !tbaa !15 %23 = tail call ptr @strstr(ptr noundef nonnull dereferenceable(1) %22, ptr noundef nonnull dereferenceable(1) %1) #25 %24 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %22, ptr noundef nonnull dereferenceable(1) %10) #25 @@ -3039,105 +3044,110 @@ define dso_local void @searchInHistory(ptr dead_on_unwind noalias writable write %or.cond.us.us = select i1 %26, i1 true, i1 %25 br i1 %or.cond.us.us, label %.lr.ph42.split.us, label %.split30.us.loopexit -.lr.ph42.split: ; preds = %.lr.ph42, %28 - %indvars.iv70 = phi i64 [ %indvars.iv.next71, %28 ], [ %11, %.lr.ph42 ] - %27 = icmp slt i64 %indvars.iv70, 1 - br i1 %27, label %.loopexit, label %28 +.lr.ph42.split: ; preds = %.lr.ph42.split.preheader, %27 + %indvars.iv70 = phi i64 [ %11, %.lr.ph42.split.preheader ], [ %indvars.iv.next71, %27 ] + %exitcond75 = icmp eq i64 %indvars.iv70, %wide.trip.count74 + br i1 %exitcond75, label %.loopexit, label %27 -28: ; preds = %.lr.ph42.split +27: ; preds = %.lr.ph42.split %indvars.iv.next71 = add nsw i64 %indvars.iv70, -1 - %29 = getelementptr inbounds ptr, ptr %7, i64 %indvars.iv.next71 - %30 = load ptr, ptr %29, align 8, !tbaa !15 - %31 = tail call ptr @strstr(ptr noundef nonnull dereferenceable(1) %30, ptr noundef nonnull dereferenceable(1) %1) #25 - %32 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %30, ptr noundef nonnull dereferenceable(1) %10) #25 - %33 = icmp eq i32 %32, 0 - %34 = icmp eq ptr %31, null - %or.cond.us = select i1 %34, i1 true, i1 %33 + %28 = getelementptr inbounds ptr, ptr %7, i64 %indvars.iv.next71 + %29 = load ptr, ptr %28, align 8, !tbaa !15 + %30 = tail call ptr @strstr(ptr noundef nonnull dereferenceable(1) %29, ptr noundef nonnull dereferenceable(1) %1) #25 + %31 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %29, ptr noundef nonnull dereferenceable(1) %10) #25 + %32 = icmp eq i32 %31, 0 + %33 = icmp eq ptr %30, null + %or.cond.us = select i1 %33, i1 true, i1 %32 br i1 %or.cond.us, label %.lr.ph42.split, label %.split30.us.loopexit50 .split: ; preds = %5 - %35 = load i32, ptr @reverse_search_direction, align 4, !tbaa !4 - %36 = icmp eq i32 %35, -1 - %37 = select i1 %36, i32 %.pre77, i32 0 - %38 = load ptr, ptr @history, align 8, !tbaa !40 - %39 = sext i32 %37 to i64 - %40 = getelementptr inbounds ptr, ptr %38, i64 %39 - %41 = load ptr, ptr %40, align 8, !tbaa !15 - %42 = tail call ptr @strstr(ptr noundef nonnull dereferenceable(1) %41, ptr noundef nonnull dereferenceable(1) %1) #25 - %43 = icmp eq ptr %42, null - br i1 %43, label %.lr.ph, label %.split30.us + %34 = load i32, ptr @reverse_search_direction, align 4, !tbaa !4 + %35 = icmp eq i32 %34, -1 + %36 = select i1 %35, i32 %.pre80, i32 0 + %37 = load ptr, ptr @history, align 8, !tbaa !40 + %38 = sext i32 %36 to i64 + %39 = getelementptr inbounds ptr, ptr %37, i64 %38 + %40 = load ptr, ptr %39, align 8, !tbaa !15 + %41 = tail call ptr @strstr(ptr noundef nonnull dereferenceable(1) %40, ptr noundef nonnull dereferenceable(1) %1) #25 + %42 = icmp eq ptr %41, null + br i1 %42, label %.lr.ph, label %.split30.us .lr.ph: ; preds = %.split - %44 = icmp eq i32 %35, 1 - br i1 %44, label %.lr.ph.split.us.preheader, label %.lr.ph.split + %43 = icmp eq i32 %34, 1 + br i1 %43, label %.lr.ph.split.us.preheader, label %.lr.ph.split.preheader + +.lr.ph.split.preheader: ; preds = %.lr.ph + %smin = tail call i32 @llvm.smin.i32(i32 %36, i32 0) + %wide.trip.count = sext i32 %smin to i64 + br label %.lr.ph.split .lr.ph.split.us.preheader: ; preds = %.lr.ph - %sext = sext i32 %.pre77 to i64 + %sext = sext i32 %.pre80 to i64 br label %.lr.ph.split.us -.lr.ph.split.us: ; preds = %.lr.ph.split.us.preheader, %46 - %indvars.iv67 = phi i64 [ %39, %.lr.ph.split.us.preheader ], [ %indvars.iv.next68, %46 ] - %45 = icmp eq i64 %indvars.iv67, %sext - br i1 %45, label %.loopexit, label %46 +.lr.ph.split.us: ; preds = %.lr.ph.split.us.preheader, %45 + %indvars.iv67 = phi i64 [ %38, %.lr.ph.split.us.preheader ], [ %indvars.iv.next68, %45 ] + %44 = icmp eq i64 %indvars.iv67, %sext + br i1 %44, label %.loopexit, label %45 -46: ; preds = %.lr.ph.split.us +45: ; preds = %.lr.ph.split.us %indvars.iv.next68 = add nsw i64 %indvars.iv67, 1 - %47 = getelementptr inbounds ptr, ptr %38, i64 %indvars.iv.next68 - %48 = load ptr, ptr %47, align 8, !tbaa !15 - %49 = tail call ptr @strstr(ptr noundef nonnull dereferenceable(1) %48, ptr noundef nonnull dereferenceable(1) %1) #25 - %50 = icmp eq ptr %49, null - br i1 %50, label %.lr.ph.split.us, label %.split30.us.loopexit52 + %46 = getelementptr inbounds ptr, ptr %37, i64 %indvars.iv.next68 + %47 = load ptr, ptr %46, align 8, !tbaa !15 + %48 = tail call ptr @strstr(ptr noundef nonnull dereferenceable(1) %47, ptr noundef nonnull dereferenceable(1) %1) #25 + %49 = icmp eq ptr %48, null + br i1 %49, label %.lr.ph.split.us, label %.split30.us.loopexit52 .split30.us.loopexit: ; preds = %20 - %51 = trunc nsw i64 %indvars.iv.next74 to i32 + %50 = trunc nsw i64 %indvars.iv.next77 to i32 br label %.split30.us -.split30.us.loopexit50: ; preds = %28 - %52 = trunc nsw i64 %indvars.iv.next71 to i32 +.split30.us.loopexit50: ; preds = %27 + %51 = trunc nsw i64 %indvars.iv.next71 to i32 br label %.split30.us -.split30.us.loopexit52: ; preds = %46 - %53 = trunc nsw i64 %indvars.iv.next68 to i32 +.split30.us.loopexit52: ; preds = %45 + %52 = trunc nsw i64 %indvars.iv.next68 to i32 br label %.split30.us -.split30.us.loopexit54: ; preds = %67 - %54 = trunc nsw i64 %indvars.iv.next to i32 +.split30.us.loopexit54: ; preds = %65 + %53 = trunc nsw i64 %indvars.iv.next to i32 br label %.split30.us .split30.us: ; preds = %.split30.us.loopexit54, %.split30.us.loopexit52, %.split30.us.loopexit50, %.split30.us.loopexit, %.split, %.split.us - %.us-phi = phi i32 [ %6, %.split.us ], [ %37, %.split ], [ %51, %.split30.us.loopexit ], [ %52, %.split30.us.loopexit50 ], [ %53, %.split30.us.loopexit52 ], [ %54, %.split30.us.loopexit54 ] - %.us-phi31 = phi ptr [ %13, %.split.us ], [ %41, %.split ], [ %22, %.split30.us.loopexit ], [ %30, %.split30.us.loopexit50 ], [ %48, %.split30.us.loopexit52 ], [ %69, %.split30.us.loopexit54 ] - %.us-phi32 = phi ptr [ %14, %.split.us ], [ %42, %.split ], [ %23, %.split30.us.loopexit ], [ %31, %.split30.us.loopexit50 ], [ %49, %.split30.us.loopexit52 ], [ %70, %.split30.us.loopexit54 ] - %55 = ptrtoint ptr %.us-phi32 to i64 - %56 = ptrtoint ptr %.us-phi31 to i64 - %57 = sub i64 %55, %56 - %58 = trunc i64 %57 to i32 - %59 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store ptr %.us-phi31, ptr %59, align 8, !tbaa !35 - %60 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %.us-phi31) #25 - %61 = trunc i64 %60 to i32 - store i32 %61, ptr %0, align 8, !tbaa !69 - %62 = getelementptr inbounds nuw i8, ptr %0, i64 16 - store i32 %58, ptr %62, align 8, !tbaa !37 - %63 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %1) #25 - %64 = trunc i64 %63 to i32 - %65 = getelementptr inbounds nuw i8, ptr %0, i64 20 - store i32 %64, ptr %65, align 4, !tbaa !38 + %.us-phi = phi i32 [ %6, %.split.us ], [ %36, %.split ], [ %50, %.split30.us.loopexit ], [ %51, %.split30.us.loopexit50 ], [ %52, %.split30.us.loopexit52 ], [ %53, %.split30.us.loopexit54 ] + %.us-phi31 = phi ptr [ %13, %.split.us ], [ %40, %.split ], [ %22, %.split30.us.loopexit ], [ %29, %.split30.us.loopexit50 ], [ %47, %.split30.us.loopexit52 ], [ %67, %.split30.us.loopexit54 ] + %.us-phi32 = phi ptr [ %14, %.split.us ], [ %41, %.split ], [ %23, %.split30.us.loopexit ], [ %30, %.split30.us.loopexit50 ], [ %48, %.split30.us.loopexit52 ], [ %68, %.split30.us.loopexit54 ] + %54 = ptrtoint ptr %.us-phi32 to i64 + %55 = ptrtoint ptr %.us-phi31 to i64 + %56 = sub i64 %54, %55 + %57 = trunc i64 %56 to i32 + %58 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store ptr %.us-phi31, ptr %58, align 8, !tbaa !35 + %59 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %.us-phi31) #25 + %60 = trunc i64 %59 to i32 + store i32 %60, ptr %0, align 8, !tbaa !69 + %61 = getelementptr inbounds nuw i8, ptr %0, i64 16 + store i32 %57, ptr %61, align 8, !tbaa !37 + %62 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %1) #25 + %63 = trunc i64 %62 to i32 + %64 = getelementptr inbounds nuw i8, ptr %0, i64 20 + store i32 %63, ptr %64, align 4, !tbaa !38 store i32 %.us-phi, ptr @search_result_history_index, align 4, !tbaa !4 br label %.loopexit -.lr.ph.split: ; preds = %.lr.ph, %67 - %indvars.iv = phi i64 [ %indvars.iv.next, %67 ], [ %39, %.lr.ph ] - %66 = icmp slt i64 %indvars.iv, 1 - br i1 %66, label %.loopexit, label %67 +.lr.ph.split: ; preds = %.lr.ph.split.preheader, %65 + %indvars.iv = phi i64 [ %38, %.lr.ph.split.preheader ], [ %indvars.iv.next, %65 ] + %exitcond = icmp eq i64 %indvars.iv, %wide.trip.count + br i1 %exitcond, label %.loopexit, label %65 -67: ; preds = %.lr.ph.split +65: ; preds = %.lr.ph.split %indvars.iv.next = add nsw i64 %indvars.iv, -1 - %68 = getelementptr inbounds ptr, ptr %38, i64 %indvars.iv.next - %69 = load ptr, ptr %68, align 8, !tbaa !15 - %70 = tail call ptr @strstr(ptr noundef nonnull dereferenceable(1) %69, ptr noundef nonnull dereferenceable(1) %1) #25 - %71 = icmp eq ptr %70, null - br i1 %71, label %.lr.ph.split, label %.split30.us.loopexit54 + %66 = getelementptr inbounds ptr, ptr %37, i64 %indvars.iv.next + %67 = load ptr, ptr %66, align 8, !tbaa !15 + %68 = tail call ptr @strstr(ptr noundef nonnull dereferenceable(1) %67, ptr noundef nonnull dereferenceable(1) %1) #25 + %69 = icmp eq ptr %68, null + br i1 %69, label %.lr.ph.split, label %.split30.us.loopexit54 .loopexit: ; preds = %.lr.ph.split, %.lr.ph.split.us, %.lr.ph42.split, %.lr.ph42.split.us, %.split30.us, %2, %4 ret void diff --git a/bench/redis/optimized/lvm.ll b/bench/redis/optimized/lvm.ll index 9935774b105..8519f90c277 100644 --- a/bench/redis/optimized/lvm.ll +++ b/bench/redis/optimized/lvm.ll @@ -2305,23 +2305,23 @@ lessequal.exit: ; preds = %536, %539, %l_strcm br i1 %675, label %.lr.ph876, label %._crit_edge877 .lr.ph876: ; preds = %667, %.lr.ph876 - %indvars.iv899 = phi i64 [ %indvars.iv.next900, %.lr.ph876 ], [ 0, %667 ] - %676 = getelementptr inbounds nuw %struct.lua_TValue, ptr %663, i64 %indvars.iv899 - %677 = getelementptr inbounds nuw %struct.lua_TValue, ptr %661, i64 %indvars.iv899 + %indvars.iv900 = phi i64 [ %indvars.iv.next901, %.lr.ph876 ], [ 0, %667 ] + %676 = getelementptr inbounds nuw %struct.lua_TValue, ptr %663, i64 %indvars.iv900 + %677 = getelementptr inbounds nuw %struct.lua_TValue, ptr %661, i64 %indvars.iv900 %678 = load i64, ptr %676, align 8, !tbaa !9 store i64 %678, ptr %677, align 8, !tbaa !9 %679 = getelementptr inbounds nuw i8, ptr %676, i64 8 %680 = load i32, ptr %679, align 8, !tbaa !4 %681 = getelementptr inbounds nuw i8, ptr %677, i64 8 store i32 %680, ptr %681, align 8, !tbaa !4 - %indvars.iv.next900 = add nuw nsw i64 %indvars.iv899, 1 - %682 = getelementptr inbounds nuw %struct.lua_TValue, ptr %663, i64 %indvars.iv.next900 + %indvars.iv.next901 = add nuw nsw i64 %indvars.iv900, 1 + %682 = getelementptr inbounds nuw %struct.lua_TValue, ptr %663, i64 %indvars.iv.next901 %683 = load ptr, ptr %16, align 8, !tbaa !33 %684 = icmp ult ptr %682, %683 br i1 %684, label %.lr.ph876, label %._crit_edge877, !llvm.loop !77 ._crit_edge877: ; preds = %.lr.ph876, %667 - %.lcssa854 = phi i64 [ 0, %667 ], [ %indvars.iv.next900, %.lr.ph876 ] + %.lcssa854 = phi i64 [ 0, %667 ], [ %indvars.iv.next901, %.lr.ph876 ] %685 = getelementptr inbounds nuw %struct.lua_TValue, ptr %661, i64 %.lcssa854 store ptr %685, ptr %16, align 8, !tbaa !33 %686 = getelementptr inbounds i8, ptr %658, i64 -24 @@ -2424,8 +2424,8 @@ lessequal.exit: ; preds = %536, %539, %l_strcm 740: ; preds = %734 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #9 - %cond911 = icmp eq i32 %738, 4 - br i1 %cond911, label %741, label %746 + %cond912 = icmp eq i32 %738, 4 + br i1 %cond912, label %741, label %746 741: ; preds = %740 %742 = load ptr, ptr %95, align 8, !tbaa !9 @@ -2454,8 +2454,8 @@ luaV_tonumber.exit.thread: ; preds = %741 751: ; preds = %747 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #9 - %cond910 = icmp eq i32 %749, 4 - br i1 %cond910, label %752, label %757 + %cond911 = icmp eq i32 %749, 4 + br i1 %cond911, label %752, label %757 752: ; preds = %751 %753 = load ptr, ptr %735, align 8, !tbaa !9 @@ -2675,8 +2675,9 @@ luaV_tonumber.exit818.thread: ; preds = %763 873: ; preds = %872, %869, %864, %855 %indvars.iv.next897 = add nsw i64 %indvars.iv896, -1 - %874 = icmp sgt i64 %indvars.iv896, 1 - br i1 %874, label %855, label %.backedge.backedge, !llvm.loop !81 + %874 = and i64 %indvars.iv.next897, 4294967295 + %exitcond899.not = icmp eq i64 %874, 0 + br i1 %exitcond899.not, label %.backedge.backedge, label %855, !llvm.loop !81 875: ; preds = %91 call void @luaF_close(ptr noundef nonnull %0, ptr noundef %95) #9 diff --git a/bench/rocksdb/optimized/pessimistic_transaction.ll b/bench/rocksdb/optimized/pessimistic_transaction.ll index 9f70c096cf2..d814c07fcd9 100644 --- a/bench/rocksdb/optimized/pessimistic_transaction.ll +++ b/bench/rocksdb/optimized/pessimistic_transaction.ll @@ -11664,7 +11664,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit42: ; preds = %69 %.pn.pn = phi { ptr, i32 } [ %68, %67 ], [ %70, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit42 ], [ %70, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i41 ] call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #29 %.not.i.i.i = icmp eq ptr %34, null - br i1 %.not.i.i.i, label %_ZNSt6vectorImSaImEED2Ev.exit, label %100 + br i1 %.not.i.i.i, label %_ZNSt6vectorImSaImEED2Ev.exit, label %101 79: ; preds = %.critedge, %_ZNSt12_Vector_baseImSaImEEC2EmRKS0_.exit.thread.i %.not27 = icmp eq ptr %2, null @@ -11696,6 +11696,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit42: ; preds = %69 94: ; preds = %94, %.lr.ph.i.i.i.i.i %.sroa.2.0.i.i.i.i = phi i64 [ 0, %.lr.ph.i.i.i.i.i ], [ %97, %94 ] + %.06.i.i.i.i.i = phi i64 [ %91, %.lr.ph.i.i.i.i.i ], [ %99, %94 ] %.045.i.i.i.i.i = phi ptr [ %34, %.lr.ph.i.i.i.i.i ], [ %98, %94 ] %95 = icmp ult i64 %.sroa.2.0.i.i.i.i, 8 %.0.i.i.i.i.i.i.i.v = select i1 %95, ptr %.pre, ptr %invariant.gep @@ -11704,23 +11705,24 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit42: ; preds = %69 store i64 %96, ptr %.045.i.i.i.i.i, align 8, !tbaa !208 %97 = add nuw i64 %.sroa.2.0.i.i.i.i, 1 %98 = getelementptr inbounds nuw i8, ptr %.045.i.i.i.i.i, i64 8 - %exitcond.not = icmp eq i64 %97, %91 - br i1 %exitcond.not, label %.loopexit, label %94, !llvm.loop !483 + %99 = add i64 %.06.i.i.i.i.i, -1 + %exitcond.not.i.i.i.i.i = icmp eq i64 %99, 0 + br i1 %exitcond.not.i.i.i.i.i, label %.loopexit, label %94, !llvm.loop !483 .loopexit: ; preds = %94, %83 - %99 = call noundef i32 @pthread_mutex_unlock(ptr noundef nonnull align 8 dereferenceable(40) %7) #29 + %100 = call noundef i32 @pthread_mutex_unlock(ptr noundef nonnull align 8 dereferenceable(40) %7) #29 ret void -100: ; preds = %.critedge33 - %101 = ptrtoint ptr %33 to i64 - %102 = ptrtoint ptr %34 to i64 - %103 = sub i64 %101, %102 - call void @_ZdlPvm(ptr noundef nonnull %34, i64 noundef %103) #28 +101: ; preds = %.critedge33 + %102 = ptrtoint ptr %33 to i64 + %103 = ptrtoint ptr %34 to i64 + %104 = sub i64 %102, %103 + call void @_ZdlPvm(ptr noundef nonnull %34, i64 noundef %104) #28 br label %_ZNSt6vectorImSaImEED2Ev.exit -_ZNSt6vectorImSaImEED2Ev.exit: ; preds = %100, %.critedge33, %65 - %.pn28.pn.pn = phi { ptr, i32 } [ %66, %65 ], [ %.pn.pn, %.critedge33 ], [ %.pn.pn, %100 ] - %104 = call noundef i32 @pthread_mutex_unlock(ptr noundef nonnull align 8 dereferenceable(40) %7) #29 +_ZNSt6vectorImSaImEED2Ev.exit: ; preds = %101, %.critedge33, %65 + %.pn28.pn.pn = phi { ptr, i32 } [ %66, %65 ], [ %.pn.pn, %.critedge33 ], [ %.pn.pn, %101 ] + %105 = call noundef i32 @pthread_mutex_unlock(ptr noundef nonnull align 8 dereferenceable(40) %7) #29 resume { ptr, i32 } %.pn28.pn.pn } diff --git a/bench/ruby/optimized/date_core.ll b/bench/ruby/optimized/date_core.ll index 6c48663732f..a1103247b8d 100644 --- a/bench/ruby/optimized/date_core.ll +++ b/bench/ruby/optimized/date_core.ll @@ -9612,20 +9612,25 @@ m_sg.exit: ; preds = %m_mday.exit, %133 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %10) #21 %134 = call fastcc i32 @valid_civil_p(i64 noundef %.026, i32 noundef %.027, i32 noundef %.0.i38, double noundef %.0.i49, ptr noundef %4, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %6, ptr noundef %10) %.not55 = icmp eq i32 %134, 0 - br i1 %.not55, label %.lr.ph, label %._crit_edge + br i1 %.not55, label %.lr.ph.preheader, label %._crit_edge -.lr.ph: ; preds = %m_sg.exit, %138 - %.02856 = phi i32 [ %139, %138 ], [ %.0.i38, %m_sg.exit ] - %135 = icmp slt i32 %.02856, 2 - br i1 %135, label %136, label %138 +.lr.ph.preheader: ; preds = %m_sg.exit + %135 = icmp ne i32 %.0.i38, 0 + %136 = zext i1 %135 to i32 + br label %.lr.ph -136: ; preds = %.lr.ph - %137 = load i64, ptr @eDateError, align 8, !tbaa !6 - tail call void (i64, ptr, ...) @rb_raise(i64 noundef %137, ptr noundef nonnull @.str.168) #22 +.lr.ph: ; preds = %.lr.ph.preheader, %139 + %.02856 = phi i32 [ %140, %139 ], [ %.0.i38, %.lr.ph.preheader ] + %exitcond = icmp eq i32 %.02856, %136 + br i1 %exitcond, label %137, label %139 + +137: ; preds = %.lr.ph + %138 = load i64, ptr @eDateError, align 8, !tbaa !6 + tail call void (i64, ptr, ...) @rb_raise(i64 noundef %138, ptr noundef nonnull @.str.168) #22 unreachable -138: ; preds = %.lr.ph - %139 = add nsw i32 %.02856, -1 +139: ; preds = %.lr.ph + %140 = add nsw i32 %.02856, -1 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #21 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #21 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #21 @@ -9634,42 +9639,42 @@ m_sg.exit: ; preds = %m_mday.exit, %133 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %8) #21 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #21 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %10) #21 - %140 = call fastcc i32 @valid_civil_p(i64 noundef %.026, i32 noundef %.027, i32 noundef %139, double noundef %.0.i49, ptr noundef %4, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %6, ptr noundef %10) - %.not = icmp eq i32 %140, 0 + %141 = call fastcc i32 @valid_civil_p(i64 noundef %.026, i32 noundef %.027, i32 noundef %140, double noundef %.0.i49, ptr noundef %4, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %6, ptr noundef %10) + %.not = icmp eq i32 %141, 0 br i1 %.not, label %.lr.ph, label %._crit_edge -._crit_edge: ; preds = %138, %m_sg.exit +._crit_edge: ; preds = %139, %m_sg.exit call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #21 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #21 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #21 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #21 - %141 = load i64, ptr %4, align 8, !tbaa !6 - %142 = load i32, ptr %6, align 4, !tbaa !33 - call fastcc void @encode_jd(i64 noundef %141, i32 noundef %142, ptr noundef %5) - %143 = load i64, ptr %5, align 8, !tbaa !6 + %142 = load i64, ptr %4, align 8, !tbaa !6 + %143 = load i32, ptr %6, align 4, !tbaa !33 + call fastcc void @encode_jd(i64 noundef %142, i32 noundef %143, ptr noundef %5) + %144 = load i64, ptr %5, align 8, !tbaa !6 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #21 - %144 = load i32, ptr %11, align 8, !tbaa !47 - %145 = and i32 %144, 128 - %.not.i.i50 = icmp eq i32 %145, 0 - br i1 %.not.i.i50, label %m_real_local_jd.exit, label %146 + %145 = load i32, ptr %11, align 8, !tbaa !47 + %146 = and i32 %145, 128 + %.not.i.i50 = icmp eq i32 %146, 0 + br i1 %.not.i.i50, label %m_real_local_jd.exit, label %147 -146: ; preds = %._crit_edge +147: ; preds = %._crit_edge tail call fastcc void @get_c_civil(ptr noundef nonnull %11) br label %m_real_local_jd.exit -m_real_local_jd.exit: ; preds = %._crit_edge, %146 +m_real_local_jd.exit: ; preds = %._crit_edge, %147 %.0.in.i.i = getelementptr inbounds nuw i8, ptr %11, i64 8 %.0.i.i = load i64, ptr %.0.in.i.i, align 8, !tbaa !47 - %147 = tail call fastcc i32 @m_local_jd(ptr noundef nonnull %11) - call fastcc void @encode_jd(i64 noundef %.0.i.i, i32 noundef %147, ptr noundef %3) - %148 = load i64, ptr %3, align 8, !tbaa !6 + %148 = tail call fastcc i32 @m_local_jd(ptr noundef nonnull %11) + call fastcc void @encode_jd(i64 noundef %.0.i.i, i32 noundef %148, ptr noundef %3) + %149 = load i64, ptr %3, align 8, !tbaa !6 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #21 - %149 = tail call i64 (i64, i64, i32, ...) @rb_funcall(i64 noundef %143, i64 noundef 45, i32 noundef 1, i64 noundef %148) #21 - %150 = tail call i64 @d_lite_plus(i64 noundef %0, i64 noundef %149) + %150 = tail call i64 (i64, i64, i32, ...) @rb_funcall(i64 noundef %144, i64 noundef 45, i32 noundef 1, i64 noundef %149) #21 + %151 = tail call i64 @d_lite_plus(i64 noundef %0, i64 noundef %150) call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #21 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #21 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #21 - ret i64 %150 + ret i64 %151 } ; Function Attrs: nounwind sspstrong uwtable diff --git a/bench/ruff-rs/optimized/abz4enoi74elfoplai1nrzl05.ll b/bench/ruff-rs/optimized/abz4enoi74elfoplai1nrzl05.ll index faed2cf0daa..466bffba162 100644 --- a/bench/ruff-rs/optimized/abz4enoi74elfoplai1nrzl05.ll +++ b/bench/ruff-rs/optimized/abz4enoi74elfoplai1nrzl05.ll @@ -1453,8 +1453,8 @@ define internal fastcc noundef zeroext i1 @"_ZN55_$LT$$RF$str$u20$as$u20$core..s .preheader.i: ; preds = %20, %24 %22 = phi ptr [ %26, %24 ], [ %1, %20 ] %23 = phi i64 [ %25, %24 ], [ %2, %20 ] - %.not.not.not.i.i = icmp ugt i64 %23, 2 - br i1 %.not.not.not.i.i, label %24, label %_ZN4core4iter6traits8iterator8Iterator8try_fold17h15070aa7e1a7be89E.exit.i + %exitcond.not = icmp eq i64 %23, 2 + br i1 %exitcond.not, label %_ZN4core4iter6traits8iterator8Iterator8try_fold17h15070aa7e1a7be89E.exit.i, label %24 24: ; preds = %.preheader.i %25 = add i64 %23, -1 @@ -1463,7 +1463,8 @@ define internal fastcc noundef zeroext i1 @"_ZN55_$LT$$RF$str$u20$as$u20$core..s br i1 %27, label %_ZN4core4iter6traits8iterator8Iterator8try_fold17h15070aa7e1a7be89E.exit.i, label %.preheader.i _ZN4core4iter6traits8iterator8Iterator8try_fold17h15070aa7e1a7be89E.exit.i: ; preds = %24, %.preheader.i - %28 = zext i1 %.not.not.not.i.i to i8 + %.not.not.not.i.i.le = icmp ugt i64 %23, 2 + %28 = zext i1 %.not.not.not.i.i.le to i8 br label %8 "_ZN110_$LT$core..ops..range..RangeFrom$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hca5306869399c93eE.exit.i": ; preds = %20 diff --git a/bench/rust-analyzer-rs/optimized/4wjr9n8d5oomu43d.ll b/bench/rust-analyzer-rs/optimized/4wjr9n8d5oomu43d.ll index 8d20bb40e91..fabeee9ebae 100644 --- a/bench/rust-analyzer-rs/optimized/4wjr9n8d5oomu43d.ll +++ b/bench/rust-analyzer-rs/optimized/4wjr9n8d5oomu43d.ll @@ -40977,7 +40977,7 @@ default.unreachable: ; preds = %19, %37, %46 .body: ; preds = %.body.loopexit.split-lp, %.body.loopexit %lpad.phi143 = phi { ptr, i32 } [ %lpad.loopexit141, %.body.loopexit ], [ %lpad.loopexit.split-lp142, %.body.loopexit.split-lp ] invoke fastcc void @"_ZN4core3ptr128drop_in_place$LT$rowan..utility_types..TokenAtOffset$LT$rowan..api..SyntaxToken$LT$syntax..syntax_node..RustLanguage$GT$$GT$$GT$17h88bc577c644226beE"(ptr noalias noundef align 8 dereferenceable(24) %7) #36 - to label %67 unwind label %65 + to label %66 unwind label %64 _ZN4core4iter6traits8iterator8Iterator8find_map17hacb33b7722b84208E.exit: ; preds = %.noexc33 store ptr %20, ptr %.sink13.i.sroa.gep111, align 8 @@ -41021,14 +41021,15 @@ _ZN4core4iter6traits8iterator8Iterator8find_map17hacb33b7722b84208E.exit: ; pred %.sroa.0.0195 = phi i32 [ %.sroa.0.0, %"_ZN4core3ptr128drop_in_place$LT$rowan..utility_types..TokenAtOffset$LT$rowan..api..SyntaxToken$LT$syntax..syntax_node..RustLanguage$GT$$GT$$GT$17h88bc577c644226beE.exit42" ], [ %umax, %"_ZN4core3ptr128drop_in_place$LT$rowan..utility_types..TokenAtOffset$LT$rowan..api..SyntaxToken$LT$syntax..syntax_node..RustLanguage$GT$$GT$$GT$17h88bc577c644226beE.exit" ] %35 = getelementptr inbounds nuw i8, ptr %4, i64 8 %36 = getelementptr inbounds nuw i8, ptr %4, i64 16 + %umin = tail call i32 @llvm.umin.i32(i32 %.sroa.0.0195, i32 %2) br label %37 "_ZN4core3ptr128drop_in_place$LT$rowan..utility_types..TokenAtOffset$LT$rowan..api..SyntaxToken$LT$syntax..syntax_node..RustLanguage$GT$$GT$$GT$17h88bc577c644226beE.exit42": ; preds = %19 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) br label %.split -37: ; preds = %61, %.split - %.sroa.9.1 = phi i32 [ %2, %.split ], [ %62, %61 ] +37: ; preds = %60, %.split + %.sroa.9.1 = phi i32 [ %2, %.split ], [ %61, %60 ] call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %6) %38 = tail call noundef align 8 dereferenceable(8) ptr @"_ZN82_$LT$syntax..ast..generated..nodes..SourceFile$u20$as$u20$syntax..ast..AstNode$GT$6syntax17h29e88a43d2d1cb5dE"(ptr noalias noundef nonnull readonly align 8 dereferenceable(8) %0) call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4) @@ -41105,7 +41106,7 @@ _ZN4core4iter6traits8iterator8Iterator8find_map17hacb33b7722b84208E.exit: ; pred .body77: ; preds = %.body77.loopexit.split-lp, %.body77.loopexit %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit, %.body77.loopexit ], [ %lpad.loopexit.split-lp, %.body77.loopexit.split-lp ] invoke fastcc void @"_ZN4core3ptr128drop_in_place$LT$rowan..utility_types..TokenAtOffset$LT$rowan..api..SyntaxToken$LT$syntax..syntax_node..RustLanguage$GT$$GT$$GT$17h88bc577c644226beE"(ptr noalias noundef align 8 dereferenceable(24) %6) #36 - to label %67 unwind label %65 + to label %66 unwind label %64 _ZN4core4iter6traits8iterator8Iterator8find_map17hacb33b7722b84208E.exit53: ; preds = %.noexc52 store ptr %47, ptr %.sink13.i44.sroa.gep114, align 8 @@ -41138,29 +41139,30 @@ _ZN4core4iter6traits8iterator8Iterator8find_map17hacb33b7722b84208E.exit53: ; pr "_ZN4core3ptr128drop_in_place$LT$rowan..utility_types..TokenAtOffset$LT$rowan..api..SyntaxToken$LT$syntax..syntax_node..RustLanguage$GT$$GT$$GT$17h88bc577c644226beE.exit62": ; preds = %"_ZN4core3ptr91drop_in_place$LT$core..option..Option$LT$syntax..ast..generated..tokens..Whitespace$GT$$GT$17h1d6ec4de2fd95189E.exit55", %"_ZN4core3ptr85drop_in_place$LT$rowan..api..SyntaxToken$LT$syntax..syntax_node..RustLanguage$GT$$GT$17h0f6b849c6d556ca0E.exit1.sink.split.i58", %55 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) - %60 = icmp ult i32 %.sroa.0.0195, %.sroa.9.1 - br i1 %60, label %61, label %.loopexit + %exitcond196.not = icmp eq i32 %.sroa.9.1, %umin + br i1 %exitcond196.not, label %.loopexit, label %60 -61: ; preds = %"_ZN4core3ptr128drop_in_place$LT$rowan..utility_types..TokenAtOffset$LT$rowan..api..SyntaxToken$LT$syntax..syntax_node..RustLanguage$GT$$GT$$GT$17h88bc577c644226beE.exit62" - %62 = add i32 %.sroa.9.1, -1 +60: ; preds = %"_ZN4core3ptr128drop_in_place$LT$rowan..utility_types..TokenAtOffset$LT$rowan..api..SyntaxToken$LT$syntax..syntax_node..RustLanguage$GT$$GT$$GT$17h88bc577c644226beE.exit62" + %61 = add i32 %.sroa.9.1, -1 br label %37 .loopexit: ; preds = %"_ZN4core3ptr128drop_in_place$LT$rowan..utility_types..TokenAtOffset$LT$rowan..api..SyntaxToken$LT$syntax..syntax_node..RustLanguage$GT$$GT$$GT$17h88bc577c644226beE.exit62", %"_ZN4core3ptr128drop_in_place$LT$rowan..utility_types..TokenAtOffset$LT$rowan..api..SyntaxToken$LT$syntax..syntax_node..RustLanguage$GT$$GT$$GT$17h88bc577c644226beE.exit67" - %63 = insertvalue { i32, i32 } poison, i32 %.sroa.0.0195, 0 - %64 = insertvalue { i32, i32 } %63, i32 %.sroa.9.1, 1 - ret { i32, i32 } %64 + %.sroa.9.1182 = phi i32 [ %.sroa.9.1, %"_ZN4core3ptr128drop_in_place$LT$rowan..utility_types..TokenAtOffset$LT$rowan..api..SyntaxToken$LT$syntax..syntax_node..RustLanguage$GT$$GT$$GT$17h88bc577c644226beE.exit67" ], [ %umin, %"_ZN4core3ptr128drop_in_place$LT$rowan..utility_types..TokenAtOffset$LT$rowan..api..SyntaxToken$LT$syntax..syntax_node..RustLanguage$GT$$GT$$GT$17h88bc577c644226beE.exit62" ] + %62 = insertvalue { i32, i32 } poison, i32 %.sroa.0.0195, 0 + %63 = insertvalue { i32, i32 } %62, i32 %.sroa.9.1182, 1 + ret { i32, i32 } %63 "_ZN4core3ptr128drop_in_place$LT$rowan..utility_types..TokenAtOffset$LT$rowan..api..SyntaxToken$LT$syntax..syntax_node..RustLanguage$GT$$GT$$GT$17h88bc577c644226beE.exit67": ; preds = %46 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) br label %.loopexit -65: ; preds = %.body77, %.body - %66 = landingpad { ptr, i32 } +64: ; preds = %.body77, %.body + %65 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer tail call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #35 unreachable -67: ; preds = %.body77, %.body +66: ; preds = %.body77, %.body %.pn = phi { ptr, i32 } [ %lpad.phi, %.body77 ], [ %lpad.phi143, %.body ] resume { ptr, i32 } %.pn } diff --git a/bench/slurm/optimized/affinity.ll b/bench/slurm/optimized/affinity.ll index 92a0b5d8431..0879f9dfbdd 100644 --- a/bench/slurm/optimized/affinity.ll +++ b/bench/slurm/optimized/affinity.ll @@ -86,8 +86,8 @@ define dso_local range(i32 0, 2) i32 @get_cpuset(ptr noundef initializes((0, 128 ._crit_edge: ; preds = %28 %33 = urem i32 %2, %spec.select - %.not152 = icmp eq i32 %33, 0 - br i1 %.not152, label %._crit_edge129, label %.lr.ph128 + %.not153 = icmp eq i32 %33, 0 + br i1 %.not153, label %._crit_edge129, label %.lr.ph128 .lr.ph128: ; preds = %._crit_edge, %.lr.ph128 %34 = phi i8 [ %38, %.lr.ph128 ], [ %23, %._crit_edge ] @@ -206,11 +206,16 @@ define dso_local range(i32 0, 2) i32 @get_cpuset(ptr noundef initializes((0, 128 %.383.idx.sroa.sel.idx.sroa.sel = getelementptr inbounds nuw i8, ptr %4, i64 %.383.idx.sroa.sel.idx.sroa.sel.idx %.073132 = getelementptr inbounds i8, ptr %81, i64 -1 %.not107133 = icmp ult ptr %.073132, %.383.idx.sroa.sel.idx.sroa.sel - br i1 %.not107133, label %.thread117, label %.lr.ph137 + br i1 %.not107133, label %.thread117, label %.lr.ph137.preheader -.lr.ph137: ; preds = %77, %101 - %.073135 = phi ptr [ %.073, %101 ], [ %.073132, %77 ] - %.071134 = phi i32 [ %102, %101 ], [ 0, %77 ] +.lr.ph137.preheader: ; preds = %77 + %.sroa.sel.v = select i1 %or.cond, i64 1, i64 -1 + %.sroa.sel = getelementptr i8, ptr %4, i64 %.sroa.sel.v + br label %.lr.ph137 + +.lr.ph137: ; preds = %.lr.ph137.preheader, %101 + %.073135 = phi ptr [ %.073, %101 ], [ %.073132, %.lr.ph137.preheader ] + %.071134 = phi i32 [ %102, %101 ], [ 0, %.lr.ph137.preheader ] %83 = load i8, ptr %.073135, align 1 %84 = sext i8 %83 to i32 %85 = call i32 @slurm_char_to_hex(i32 noundef %84) #7 @@ -260,8 +265,8 @@ define dso_local range(i32 0, 2) i32 @get_cpuset(ptr noundef initializes((0, 128 101: ; preds = %97, %99 %102 = add i32 %.071134, 4 %.073 = getelementptr inbounds i8, ptr %.073135, i64 -1 - %.not107 = icmp ult ptr %.073, %.383.idx.sroa.sel.idx.sroa.sel - br i1 %.not107, label %.thread117, label %.lr.ph137, !llvm.loop !13 + %exitcond144 = icmp eq ptr %.073, %.sroa.sel + br i1 %exitcond144, label %.thread117, label %.lr.ph137, !llvm.loop !13 103: ; preds = %75 %104 = and i32 %15, 1024 diff --git a/bench/slurm/optimized/node_scheduler.ll b/bench/slurm/optimized/node_scheduler.ll index f5e651e9c92..3ce742caee5 100644 --- a/bench/slurm/optimized/node_scheduler.ll +++ b/bench/slurm/optimized/node_scheduler.ll @@ -3964,7 +3964,7 @@ _valid_features.exit._crit_edge: ; preds = %_valid_features.exi br i1 %or.cond5, label %411, label %._crit_edge ._crit_edge: ; preds = %410 - %.pre500 = load ptr, ptr %151, align 8 + %.pre503 = load ptr, ptr %151, align 8 br label %431 411: ; preds = %410 @@ -3983,11 +3983,11 @@ _valid_features.exit._crit_edge: ; preds = %_valid_features.exi %419 = getelementptr inbounds nuw i8, ptr %418, i64 200 %420 = load ptr, ptr %419, align 8 %421 = call fastcc i32 @_match_feature(ptr noundef %420, ptr noundef %151) - %.pre499 = load ptr, ptr %151, align 8 + %.pre502 = load ptr, ptr %151, align 8 br label %422 422: ; preds = %417, %414 - %423 = phi ptr [ %.pre499, %417 ], [ %416, %414 ] + %423 = phi ptr [ %.pre502, %417 ], [ %416, %414 ] %.not370 = icmp eq ptr %423, null br i1 %.not370, label %431, label %424 @@ -3996,11 +3996,11 @@ _valid_features.exit._crit_edge: ; preds = %_valid_features.exi %426 = load ptr, ptr %425, align 8 %427 = call i32 @bit_overlap_any(ptr noundef %426, ptr noundef nonnull %423) #14 %.not371 = icmp eq i32 %427, 0 - %.pre501 = load ptr, ptr %151, align 8 + %.pre504 = load ptr, ptr %151, align 8 br i1 %.not371, label %428, label %431 428: ; preds = %424 - %.not372 = icmp eq ptr %.pre501, null + %.not372 = icmp eq ptr %.pre504, null br i1 %.not372, label %430, label %429 429: ; preds = %428 @@ -4012,7 +4012,7 @@ _valid_features.exit._crit_edge: ; preds = %_valid_features.exi br label %431 431: ; preds = %._crit_edge, %422, %424, %430 - %432 = phi ptr [ %.pre500, %._crit_edge ], [ null, %422 ], [ %.pre501, %424 ], [ null, %430 ] + %432 = phi ptr [ %.pre503, %._crit_edge ], [ null, %422 ], [ %.pre504, %424 ], [ null, %430 ] %433 = load ptr, ptr %150, align 8 %434 = icmp ne ptr %433, null %435 = icmp ne ptr %432, null @@ -4470,8 +4470,9 @@ _valid_features.exit._crit_edge: ; preds = %_valid_features.exi %658 = phi ptr [ %612, %.lr.ph462 ], [ %612, %624 ], [ %630, %626 ] %659 = phi ptr [ %613, %.lr.ph462 ], [ %612, %624 ], [ %630, %626 ] %.8 = phi i32 [ %.6460, %.lr.ph462 ], [ %.6460, %624 ], [ %654, %626 ] - %660 = icmp samesign ugt i64 %indvars.iv493, 1 - br i1 %660, label %.lr.ph462, label %.loopexit423, !llvm.loop !31 + %660 = and i64 %indvars.iv.next494, 4294967295 + %exitcond496.not = icmp eq i64 %660, 0 + br i1 %exitcond496.not, label %.loopexit423, label %.lr.ph462, !llvm.loop !31 .loopexit423: ; preds = %657, %609, %655 %661 = phi ptr [ %630, %655 ], [ %573, %609 ], [ %658, %657 ] @@ -4545,9 +4546,9 @@ _find_grp_node_bitmap.exit.thread: ; preds = %.loopexit423 682: ; preds = %677 %683 = load ptr, ptr %7, align 8 %.not21.i = icmp eq ptr %683, null - br i1 %.not21.i, label %684, label %_find_grp_node_bitmap.exit.thread502 + br i1 %.not21.i, label %684, label %_find_grp_node_bitmap.exit.thread505 -_find_grp_node_bitmap.exit.thread502: ; preds = %682 +_find_grp_node_bitmap.exit.thread505: ; preds = %682 call void @bit_or(ptr noundef nonnull %683, ptr noundef nonnull %676) #14 call void @assoc_mgr_unlock(ptr noundef nonnull %13) #14 call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %13) #14 @@ -4588,8 +4589,8 @@ _find_grp_node_bitmap.exit: ; preds = %_find_grp_node_bitm %.not398 = icmp eq ptr %689, null br i1 %.not398, label %754, label %.preheader -.preheader: ; preds = %_find_grp_node_bitmap.exit.thread502, %_find_grp_node_bitmap.exit - %690 = phi ptr [ %683, %_find_grp_node_bitmap.exit.thread502 ], [ %689, %_find_grp_node_bitmap.exit ] +.preheader: ; preds = %_find_grp_node_bitmap.exit.thread505, %_find_grp_node_bitmap.exit + %690 = phi ptr [ %683, %_find_grp_node_bitmap.exit.thread505 ], [ %689, %_find_grp_node_bitmap.exit ] %691 = icmp sgt i32 %.7, 0 br i1 %691, label %.lr.ph467.preheader, label %.loopexit.thread @@ -4600,10 +4601,10 @@ _find_grp_node_bitmap.exit: ; preds = %_find_grp_node_bitm .lr.ph467: ; preds = %.lr.ph467.preheader, %747 %693 = phi ptr [ %690, %.lr.ph467.preheader ], [ %748, %747 ] %694 = phi ptr [ %661, %.lr.ph467.preheader ], [ %749, %747 ] - %indvars.iv496 = phi i64 [ %692, %.lr.ph467.preheader ], [ %indvars.iv.next497, %747 ] + %indvars.iv497 = phi i64 [ %692, %.lr.ph467.preheader ], [ %indvars.iv.next498, %747 ] %.9465 = phi i32 [ %.7, %.lr.ph467.preheader ], [ %.10, %747 ] - %indvars.iv.next497 = add nsw i64 %indvars.iv496, -1 - %695 = getelementptr inbounds nuw %struct.node_set, ptr %694, i64 %indvars.iv.next497, i32 4 + %indvars.iv.next498 = add nsw i64 %indvars.iv497, -1 + %695 = getelementptr inbounds nuw %struct.node_set, ptr %694, i64 %indvars.iv.next498, i32 4 %696 = load ptr, ptr %695, align 8 %697 = call i32 @bit_overlap(ptr noundef %696, ptr noundef %693) #14 %698 = icmp eq i32 %697, 0 @@ -4619,7 +4620,7 @@ _find_grp_node_bitmap.exit: ; preds = %_find_grp_node_bitm br label %747 705: ; preds = %.lr.ph467 - %706 = getelementptr inbounds nuw %struct.node_set, ptr %699, i64 %indvars.iv.next497 + %706 = getelementptr inbounds nuw %struct.node_set, ptr %699, i64 %indvars.iv.next498 %707 = getelementptr inbounds nuw i8, ptr %706, i64 40 %708 = load i32, ptr %707, align 8 %709 = icmp eq i32 %697, %708 @@ -4630,44 +4631,44 @@ _find_grp_node_bitmap.exit: ; preds = %_find_grp_node_bitm %712 = sext i32 %.9465 to i64 %713 = getelementptr inbounds %struct.node_set, ptr %699, i64 %712 store i16 %711, ptr %713, align 8 - %714 = getelementptr inbounds nuw %struct.node_set, ptr %699, i64 %indvars.iv.next497, i32 7 + %714 = getelementptr inbounds nuw %struct.node_set, ptr %699, i64 %indvars.iv.next498, i32 7 %715 = load i64, ptr %714, align 8 %716 = getelementptr inbounds %struct.node_set, ptr %699, i64 %712, i32 7 store i64 %715, ptr %716, align 8 %717 = getelementptr inbounds %struct.node_set, ptr %699, i64 %712, i32 5 store i32 %697, ptr %717, align 8 - %718 = getelementptr inbounds nuw %struct.node_set, ptr %699, i64 %indvars.iv.next497, i32 5 + %718 = getelementptr inbounds nuw %struct.node_set, ptr %699, i64 %indvars.iv.next498, i32 5 %719 = load i32, ptr %718, align 8 %720 = sub i32 %719, %697 store i32 %720, ptr %718, align 8 - %721 = getelementptr inbounds nuw %struct.node_set, ptr %699, i64 %indvars.iv.next497, i32 6 + %721 = getelementptr inbounds nuw %struct.node_set, ptr %699, i64 %indvars.iv.next498, i32 6 %722 = load i32, ptr %721, align 4 %723 = getelementptr inbounds %struct.node_set, ptr %699, i64 %712, i32 6 store i32 %722, ptr %723, align 4 %724 = add i32 %722, 1 store i32 %724, ptr %721, align 4 - %725 = getelementptr inbounds nuw %struct.node_set, ptr %699, i64 %indvars.iv.next497, i32 3 + %725 = getelementptr inbounds nuw %struct.node_set, ptr %699, i64 %indvars.iv.next498, i32 3 %726 = load i32, ptr %725, align 8 %727 = getelementptr inbounds %struct.node_set, ptr %699, i64 %712, i32 3 store i32 %726, ptr %727, align 8 - %728 = getelementptr inbounds nuw %struct.node_set, ptr %699, i64 %indvars.iv.next497, i32 1 + %728 = getelementptr inbounds nuw %struct.node_set, ptr %699, i64 %indvars.iv.next498, i32 1 %729 = load ptr, ptr %728, align 8 %730 = call ptr @xstrdup(ptr noundef %729) #14 %731 = getelementptr inbounds %struct.node_set, ptr %699, i64 %712, i32 1 store ptr %730, ptr %731, align 8 - %732 = getelementptr inbounds nuw %struct.node_set, ptr %699, i64 %indvars.iv.next497, i32 2 + %732 = getelementptr inbounds nuw %struct.node_set, ptr %699, i64 %indvars.iv.next498, i32 2 %733 = load ptr, ptr %732, align 8 %734 = call ptr @bit_copy(ptr noundef %733) #14 %735 = getelementptr inbounds %struct.node_set, ptr %699, i64 %712, i32 2 store ptr %734, ptr %735, align 8 - %736 = getelementptr inbounds nuw %struct.node_set, ptr %699, i64 %indvars.iv.next497, i32 4 + %736 = getelementptr inbounds nuw %struct.node_set, ptr %699, i64 %indvars.iv.next498, i32 4 %737 = load ptr, ptr %736, align 8 %738 = call ptr @bit_copy(ptr noundef %737) #14 %739 = getelementptr inbounds %struct.node_set, ptr %699, i64 %712, i32 4 store ptr %738, ptr %739, align 8 call void @bit_and(ptr noundef %738, ptr noundef %693) #14 %740 = load ptr, ptr %18, align 8 - %741 = getelementptr inbounds nuw %struct.node_set, ptr %740, i64 %indvars.iv.next497, i32 4 + %741 = getelementptr inbounds nuw %struct.node_set, ptr %740, i64 %indvars.iv.next498, i32 4 %742 = load ptr, ptr %741, align 8 %743 = load ptr, ptr %20, align 8 call void @bit_and_not(ptr noundef %742, ptr noundef %743) #14 @@ -4683,8 +4684,9 @@ _find_grp_node_bitmap.exit: ; preds = %_find_grp_node_bitm %748 = phi ptr [ %693, %700 ], [ %693, %705 ], [ %743, %710 ] %749 = phi ptr [ %699, %700 ], [ %699, %705 ], [ %740, %710 ] %.10 = phi i32 [ %.9465, %700 ], [ %.9465, %705 ], [ %744, %710 ] - %750 = icmp samesign ugt i64 %indvars.iv496, 1 - br i1 %750, label %.lr.ph467, label %.loopexit, !llvm.loop !33 + %750 = and i64 %indvars.iv.next498, 4294967295 + %exitcond501.not = icmp eq i64 %750, 0 + br i1 %exitcond501.not, label %.loopexit, label %.lr.ph467, !llvm.loop !33 .loopexit: ; preds = %747, %745 %751 = phi ptr [ %740, %745 ], [ %749, %747 ] @@ -4694,14 +4696,14 @@ _find_grp_node_bitmap.exit: ; preds = %_find_grp_node_bitm br i1 %.not400, label %.sink.split, label %.loopexit.thread .loopexit.thread: ; preds = %.preheader, %.loopexit - %.11506 = phi i32 [ %.11, %.loopexit ], [ %.7, %.preheader ] + %.11509 = phi i32 [ %.11, %.loopexit ], [ %.7, %.preheader ] %753 = phi ptr [ %751, %.loopexit ], [ %661, %.preheader ] call void @slurm_bit_free(ptr noundef nonnull %20) #14 br label %.sink.split .sink.split: ; preds = %.loopexit, %.loopexit.thread, %_find_grp_node_bitmap.exit.thread %.ph = phi ptr [ %661, %_find_grp_node_bitmap.exit.thread ], [ %753, %.loopexit.thread ], [ %751, %.loopexit ] - %.12.ph = phi i32 [ %.7, %_find_grp_node_bitmap.exit.thread ], [ %.11506, %.loopexit.thread ], [ %.11, %.loopexit ] + %.12.ph = phi i32 [ %.7, %_find_grp_node_bitmap.exit.thread ], [ %.11509, %.loopexit.thread ], [ %.11, %.loopexit ] store ptr null, ptr %20, align 8 br label %754 diff --git a/bench/stb/optimized/stb_tilemap_editor.ll b/bench/stb/optimized/stb_tilemap_editor.ll index d61ce24eab3..313dc1280df 100644 --- a/bench/stb/optimized/stb_tilemap_editor.ll +++ b/bench/stb/optimized/stb_tilemap_editor.ll @@ -5102,8 +5102,9 @@ define range(i32 -1, 3) i32 @stbte__erase_predict(ptr noundef readonly captures( br label %.loopexit 83: ; preds = %68, %72, %65 - %84 = icmp samesign ugt i64 %indvars.iv, 1 - br i1 %84, label %65, label %.loopexit101, !llvm.loop !135 + %84 = and i64 %indvars.iv.next, 4294967295 + %exitcond.not = icmp eq i64 %84, 0 + br i1 %exitcond.not, label %.loopexit101, label %65, !llvm.loop !135 .loopexit101: ; preds = %83, %58, %55 %85 = add i32 %2, -3 @@ -5124,14 +5125,14 @@ define range(i32 -1, 3) i32 @stbte__erase_predict(ptr noundef readonly captures( br i1 %57, label %.lr.ph109.split.us, label %.lr.ph109.split .lr.ph109.split.us: ; preds = %.lr.ph109, %110 - %indvars.iv130 = phi i64 [ %indvars.iv.next131, %110 ], [ %92, %.lr.ph109 ] - %93 = getelementptr inbounds nuw i16, ptr %1, i64 %indvars.iv130 + %indvars.iv132 = phi i64 [ %indvars.iv.next133, %110 ], [ %92, %.lr.ph109 ] + %93 = getelementptr inbounds nuw i16, ptr %1, i64 %indvars.iv132 %94 = load i16, ptr %93, align 2, !tbaa !21 %95 = icmp slt i16 %94, 0 br i1 %95, label %110, label %96 96: ; preds = %.lr.ph109.split.us - %97 = getelementptr inbounds nuw [8 x %struct.stbte__layer], ptr %90, i64 0, i64 %indvars.iv130 + %97 = getelementptr inbounds nuw [8 x %struct.stbte__layer], ptr %90, i64 0, i64 %indvars.iv132 %98 = getelementptr inbounds nuw i8, ptr %97, i64 8 %99 = load i32, ptr %98, align 8, !tbaa !132 %.not.us = icmp eq i32 %99, 0 @@ -5144,8 +5145,8 @@ define range(i32 -1, 3) i32 @stbte__erase_predict(ptr noundef readonly captures( br i1 %.not90.us, label %103, label %110 103: ; preds = %100 - %104 = getelementptr inbounds nuw i16, ptr %1, i64 %indvars.iv130 - %105 = icmp eq i64 %indvars.iv130, 0 + %104 = getelementptr inbounds nuw i16, ptr %1, i64 %indvars.iv132 + %105 = icmp eq i64 %indvars.iv132, 0 br i1 %105, label %106, label %.critedge100.us 106: ; preds = %103 @@ -5159,9 +5160,10 @@ define range(i32 -1, 3) i32 @stbte__erase_predict(ptr noundef readonly captures( br label %.loopexit 110: ; preds = %100, %96, %.lr.ph109.split.us - %indvars.iv.next131 = add nsw i64 %indvars.iv130, -1 - %111 = icmp sgt i64 %indvars.iv130, 0 - br i1 %111, label %.lr.ph109.split.us, label %._crit_edge, !llvm.loop !136 + %indvars.iv.next133 = add nsw i64 %indvars.iv132, -1 + %111 = and i64 %indvars.iv.next133, 4294967295 + %exitcond136.not = icmp eq i64 %111, 4294967295 + br i1 %exitcond136.not, label %._crit_edge, label %.lr.ph109.split.us, !llvm.loop !136 .lr.ph109.split: ; preds = %.lr.ph109, %128 %indvars.iv127 = phi i64 [ %indvars.iv.next128, %128 ], [ %92, %.lr.ph109 ] @@ -5199,8 +5201,9 @@ define range(i32 -1, 3) i32 @stbte__erase_predict(ptr noundef readonly captures( 128: ; preds = %.critedge100, %115, %119, %.lr.ph109.split %indvars.iv.next128 = add nsw i64 %indvars.iv127, -1 - %129 = icmp sgt i64 %indvars.iv127, 0 - br i1 %129, label %.lr.ph109.split, label %._crit_edge, !llvm.loop !136 + %129 = and i64 %indvars.iv.next128, 4294967295 + %exitcond131.not = icmp eq i64 %129, 4294967295 + br i1 %exitcond131.not, label %._crit_edge, label %.lr.ph109.split, !llvm.loop !136 ._crit_edge: ; preds = %128, %110, %86 %130 = icmp eq i32 %2, 2 @@ -5518,8 +5521,9 @@ stbte__undo_record.exit161: ; preds = %107, %109 br label %.loopexit 194: ; preds = %173, %177, %170 - %195 = icmp samesign ugt i64 %indvars.iv, 1 - br i1 %195, label %170, label %.loopexit174, !llvm.loop !137 + %195 = and i64 %indvars.iv.next, 4294967295 + %exitcond.not = icmp eq i64 %195, 0 + br i1 %exitcond.not, label %.loopexit174, label %170, !llvm.loop !137 .loopexit174: ; preds = %194, %161, %158 %196 = add i32 %3, -3 @@ -5703,8 +5707,9 @@ stbte__undo_record.exit167: ; preds = %.split136, %272, %. br i1 %160, label %.loopexit, label %314 314: ; preds = %stbte__undo_record.exit167, %218, %222, %214 - %315 = icmp samesign ugt i64 %indvars.iv187, 1 - br i1 %315, label %214, label %._crit_edge, !llvm.loop !138 + %315 = and i64 %indvars.iv.next188, 4294967295 + %exitcond191.not = icmp eq i64 %315, 0 + br i1 %exitcond191.not, label %._crit_edge, label %214, !llvm.loop !138 ._crit_edge: ; preds = %314, %197 %316 = icmp eq i32 %3, 2 @@ -8154,7 +8159,7 @@ stbte__should_copy_properties.exit: ; preds = %19, %.lr.ph.i, %23, %30 = icmp eq i32 %26, %27 %31 = icmp eq i32 %28, %29 %or.cond = select i1 %30, i1 %31, i1 false - br i1 %or.cond, label %99, label %32 + br i1 %or.cond, label %97, label %32 32: ; preds = %stbte__should_copy_properties.exit %33 = getelementptr inbounds nuw i8, ptr %0, i64 801052 @@ -8207,101 +8212,101 @@ stbte__should_copy_properties.exit: ; preds = %19, %.lr.ph.i, %23, br i1 %59, label %.lr.ph45.split, label %.loopexit34 .loopexit: ; preds = %.lr.ph41, %.lr.ph45.split - %60 = icmp samesign ugt i32 %.03043.in, 1 - br i1 %60, label %.lr.ph45.splitthread-pre-split, label %.loopexit34, !llvm.loop !174 + %exitcond49.not = icmp eq i32 %.03043, 0 + br i1 %exitcond49.not, label %.loopexit34, label %.lr.ph45.splitthread-pre-split, !llvm.loop !174 .lr.ph45.splitthread-pre-split: ; preds = %.loopexit %.pr = load i32, ptr %57, align 8, !tbaa !29 br label %.lr.ph45.split .lr.ph45.split: ; preds = %.lr.ph45, %.lr.ph45.splitthread-pre-split - %61 = phi i32 [ %.pr, %.lr.ph45.splitthread-pre-split ], [ %58, %.lr.ph45 ] + %60 = phi i32 [ %.pr, %.lr.ph45.splitthread-pre-split ], [ %58, %.lr.ph45 ] %.03043.in = phi i32 [ %.03043, %.lr.ph45.splitthread-pre-split ], [ %51, %.lr.ph45 ] - %.03043 = add nsw i32 %.03043.in, -1 - %62 = icmp sgt i32 %61, 0 - br i1 %62, label %.lr.ph41, label %.loopexit + %.03043 = add i32 %.03043.in, -1 + %61 = icmp sgt i32 %60, 0 + br i1 %61, label %.lr.ph41, label %.loopexit .lr.ph41: ; preds = %.lr.ph45.split, %.lr.ph41 - %.0.in39 = phi i32 [ %.0, %.lr.ph41 ], [ %61, %.lr.ph45.split ] + %.0.in39 = phi i32 [ %.0, %.lr.ph41 ], [ %60, %.lr.ph45.split ] %.0 = add nsw i32 %.0.in39, -1 tail call void @stbte__drag_update(ptr noundef %0, i32 noundef %.0, i32 noundef %.03043, i32 noundef %.011.i) - %63 = icmp samesign ugt i32 %.0.in39, 1 - br i1 %63, label %.lr.ph41, label %.loopexit, !llvm.loop !175 + %exitcond.not = icmp eq i32 %.0, 0 + br i1 %exitcond.not, label %.loopexit, label %.lr.ph41, !llvm.loop !175 .preheader: ; preds = %.preheader.lr.ph, %._crit_edge - %64 = phi i32 [ %70, %._crit_edge ], [ %51, %.preheader.lr.ph ] - %65 = phi i32 [ %71, %._crit_edge ], [ %54, %.preheader.lr.ph ] - %.13138 = phi i32 [ %72, %._crit_edge ], [ 0, %.preheader.lr.ph ] - %66 = icmp sgt i32 %65, 0 - br i1 %66, label %.lr.ph, label %._crit_edge + %62 = phi i32 [ %68, %._crit_edge ], [ %51, %.preheader.lr.ph ] + %63 = phi i32 [ %69, %._crit_edge ], [ %54, %.preheader.lr.ph ] + %.13138 = phi i32 [ %70, %._crit_edge ], [ 0, %.preheader.lr.ph ] + %64 = icmp sgt i32 %63, 0 + br i1 %64, label %.lr.ph, label %._crit_edge .lr.ph: ; preds = %.preheader, %.lr.ph - %.137 = phi i32 [ %67, %.lr.ph ], [ 0, %.preheader ] + %.137 = phi i32 [ %65, %.lr.ph ], [ 0, %.preheader ] tail call void @stbte__drag_update(ptr noundef nonnull %0, i32 noundef %.137, i32 noundef %.13138, i32 noundef %.011.i) - %67 = add nuw nsw i32 %.137, 1 - %68 = load i32, ptr %53, align 8, !tbaa !29 - %69 = icmp slt i32 %67, %68 - br i1 %69, label %.lr.ph, label %._crit_edge.loopexit, !llvm.loop !176 + %65 = add nuw nsw i32 %.137, 1 + %66 = load i32, ptr %53, align 8, !tbaa !29 + %67 = icmp slt i32 %65, %66 + br i1 %67, label %.lr.ph, label %._crit_edge.loopexit, !llvm.loop !176 ._crit_edge.loopexit: ; preds = %.lr.ph %.pre = load i32, ptr %50, align 4, !tbaa !30 br label %._crit_edge ._crit_edge: ; preds = %._crit_edge.loopexit, %.preheader - %70 = phi i32 [ %.pre, %._crit_edge.loopexit ], [ %64, %.preheader ] - %71 = phi i32 [ %68, %._crit_edge.loopexit ], [ %65, %.preheader ] - %72 = add nuw nsw i32 %.13138, 1 - %73 = icmp slt i32 %72, %70 - br i1 %73, label %.preheader, label %.loopexit34, !llvm.loop !177 + %68 = phi i32 [ %.pre, %._crit_edge.loopexit ], [ %62, %.preheader ] + %69 = phi i32 [ %66, %._crit_edge.loopexit ], [ %63, %.preheader ] + %70 = add nuw nsw i32 %.13138, 1 + %71 = icmp slt i32 %70, %68 + br i1 %71, label %.preheader, label %.loopexit34, !llvm.loop !177 .loopexit34: ; preds = %._crit_edge, %.loopexit, %.lr.ph45, %.preheader.lr.ph, %.preheader35, %56 - %74 = load i32, ptr getelementptr inbounds nuw (i8, ptr @stbte__ui, i64 5292), align 4, !tbaa !76 - %.not.i33 = icmp eq i32 %74, 0 - br i1 %.not.i33, label %stbte__end_undo.exit, label %75 + %72 = load i32, ptr getelementptr inbounds nuw (i8, ptr @stbte__ui, i64 5292), align 4, !tbaa !76 + %.not.i33 = icmp eq i32 %72, 0 + br i1 %.not.i33, label %stbte__end_undo.exit, label %73 + +73: ; preds = %.loopexit34 + %74 = load i32, ptr %34, align 4, !tbaa !43 + %75 = add i32 %74, 8388607 + %76 = and i32 %75, 8388607 + %77 = load ptr, ptr %36, align 8, !tbaa !27 + %78 = zext nneg i32 %76 to i64 + %79 = getelementptr inbounds nuw i16, ptr %77, i64 %78 + %80 = load i16, ptr %79, align 2, !tbaa !21 + %81 = icmp eq i16 %80, -2 + br i1 %81, label %82, label %85 + +82: ; preds = %73 + store i32 %76, ptr %34, align 4, !tbaa !43 + %83 = load i32, ptr %42, align 8, !tbaa !41 + %84 = add nsw i32 %83, -1 + store i32 %84, ptr %42, align 8, !tbaa !41 + br label %85 -75: ; preds = %.loopexit34 - %76 = load i32, ptr %34, align 4, !tbaa !43 - %77 = add i32 %76, 8388607 - %78 = and i32 %77, 8388607 - %79 = load ptr, ptr %36, align 8, !tbaa !27 - %80 = zext nneg i32 %78 to i64 - %81 = getelementptr inbounds nuw i16, ptr %79, i64 %80 - %82 = load i16, ptr %81, align 2, !tbaa !21 - %83 = icmp eq i16 %82, -2 - br i1 %83, label %84, label %87 - -84: ; preds = %75 - store i32 %78, ptr %34, align 4, !tbaa !43 - %85 = load i32, ptr %42, align 8, !tbaa !41 - %86 = add nsw i32 %85, -1 - store i32 %86, ptr %42, align 8, !tbaa !41 - br label %87 - -87: ; preds = %84, %75 - %88 = phi i32 [ %78, %84 ], [ %76, %75 ] - %89 = sext i32 %88 to i64 - %90 = getelementptr inbounds i16, ptr %79, i64 %89 - store i16 -4, ptr %90, align 2, !tbaa !21 +85: ; preds = %82, %73 + %86 = phi i32 [ %76, %82 ], [ %74, %73 ] + %87 = sext i32 %86 to i64 + %88 = getelementptr inbounds i16, ptr %77, i64 %87 + store i16 -4, ptr %88, align 2, !tbaa !21 store i32 0, ptr getelementptr inbounds nuw (i8, ptr @stbte__ui, i64 5292), align 4, !tbaa !76 br label %stbte__end_undo.exit -stbte__end_undo.exit: ; preds = %.loopexit34, %87 +stbte__end_undo.exit: ; preds = %.loopexit34, %85 store i32 1, ptr getelementptr inbounds nuw (i8, ptr @stbte__ui, i64 5296), align 8, !tbaa !106 - %91 = load i32, ptr getelementptr inbounds nuw (i8, ptr @stbte__ui, i64 5284), align 4, !tbaa !171 - store i32 %91, ptr getelementptr inbounds nuw (i8, ptr @stbte__ui, i64 5300), align 4, !tbaa !107 - %92 = load i32, ptr getelementptr inbounds nuw (i8, ptr @stbte__ui, i64 5288), align 8, !tbaa !172 - store i32 %92, ptr getelementptr inbounds nuw (i8, ptr @stbte__ui, i64 5304), align 8, !tbaa !109 - %93 = load i32, ptr getelementptr inbounds nuw (i8, ptr @stbte__ui, i64 5268), align 4, !tbaa !167 - %94 = add i32 %91, -1 - %95 = add i32 %94, %93 - store i32 %95, ptr getelementptr inbounds nuw (i8, ptr @stbte__ui, i64 5308), align 4, !tbaa !108 - %96 = load i32, ptr getelementptr inbounds nuw (i8, ptr @stbte__ui, i64 5272), align 8, !tbaa !168 - %97 = add i32 %92, -1 - %98 = add i32 %97, %96 - store i32 %98, ptr getelementptr inbounds nuw (i8, ptr @stbte__ui, i64 5312), align 8, !tbaa !110 - br label %99 - -99: ; preds = %stbte__should_copy_properties.exit, %stbte__end_undo.exit + %89 = load i32, ptr getelementptr inbounds nuw (i8, ptr @stbte__ui, i64 5284), align 4, !tbaa !171 + store i32 %89, ptr getelementptr inbounds nuw (i8, ptr @stbte__ui, i64 5300), align 4, !tbaa !107 + %90 = load i32, ptr getelementptr inbounds nuw (i8, ptr @stbte__ui, i64 5288), align 8, !tbaa !172 + store i32 %90, ptr getelementptr inbounds nuw (i8, ptr @stbte__ui, i64 5304), align 8, !tbaa !109 + %91 = load i32, ptr getelementptr inbounds nuw (i8, ptr @stbte__ui, i64 5268), align 4, !tbaa !167 + %92 = add i32 %89, -1 + %93 = add i32 %92, %91 + store i32 %93, ptr getelementptr inbounds nuw (i8, ptr @stbte__ui, i64 5308), align 4, !tbaa !108 + %94 = load i32, ptr getelementptr inbounds nuw (i8, ptr @stbte__ui, i64 5272), align 8, !tbaa !168 + %95 = add i32 %90, -1 + %96 = add i32 %95, %94 + store i32 %96, ptr getelementptr inbounds nuw (i8, ptr @stbte__ui, i64 5312), align 8, !tbaa !110 + br label %97 + +97: ; preds = %stbte__should_copy_properties.exit, %stbte__end_undo.exit ret void } diff --git a/bench/wireshark/optimized/packet-signal-pdu.ll b/bench/wireshark/optimized/packet-signal-pdu.ll index 938eb1e44de..5bbc874293d 100644 --- a/bench/wireshark/optimized/packet-signal-pdu.ll +++ b/bench/wireshark/optimized/packet-signal-pdu.ll @@ -5990,8 +5990,7 @@ dissect_spdu_payload_signal.exit.thread: ; preds = %119 %166 = zext i8 %.153.us.i.i to i64 %167 = or i64 %165, %166 %168 = add nsw i32 %.05664.us.i.i, -1 - %.not.us.not.i.i = icmp sgt i32 %.05664.us.i.i, %.083131 - br i1 %.not.us.not.i.i, label %.lr.ph.split.us.i.i, label %dissect_shifted_and_shortened_uint.exit.i, !llvm.loop !32 + br i1 %160, label %dissect_shifted_and_shortened_uint.exit.i, label %.lr.ph.split.us.i.i, !llvm.loop !32 .preheader.i.i: ; preds = %149 br i1 %.not6066.i.i, label %dissect_shifted_and_shortened_uint.exit.i, label %.lr.ph69.i.i @@ -6050,8 +6049,8 @@ dissect_spdu_payload_signal.exit.thread: ; preds = %119 194: ; preds = %184, %.lr.ph.split.i.i %.155.i.i = phi i64 [ %193, %184 ], [ %.05465.i.i, %.lr.ph.split.i.i ] %195 = add nsw i32 %.05664.i.i, -1 - %.not.not.i.i = icmp sgt i32 %.05664.i.i, %.083131 - br i1 %.not.not.i.i, label %.lr.ph.split.i.i, label %dissect_shifted_and_shortened_uint.exit.i, !llvm.loop !32 + %exitcond79.not.i.i = icmp eq i32 %.05664.i.i, %.083131 + br i1 %exitcond79.not.i.i, label %dissect_shifted_and_shortened_uint.exit.i, label %.lr.ph.split.i.i, !llvm.loop !32 .lr.ph69.split.i.i: ; preds = %.lr.ph69.split.i.preheader.i, %.lr.ph69.split.i.i %.15767.i310.i = phi i32 [ %202, %.lr.ph69.split.i.i ], [ %.083131, %.lr.ph69.split.i.preheader.i ] diff --git a/bench/wireshark/optimized/tvbuff_lz77huff.ll b/bench/wireshark/optimized/tvbuff_lz77huff.ll index 4d7aed9e861..7d820840e09 100644 --- a/bench/wireshark/optimized/tvbuff_lz77huff.ll +++ b/bench/wireshark/optimized/tvbuff_lz77huff.ll @@ -182,16 +182,18 @@ define noundef ptr @tvb_uncompress_lz77huff(ptr noundef %0, i32 noundef %1, i32 %74 = sub nsw i32 %73, %.04667.i.i %75 = shl i32 %.04766.i.i, %74 %76 = add nuw nsw i32 %.05364.i.i, 1 - br label %77 + %77 = icmp ne i16 %72, 0 + %umin.i.i.i = zext i1 %77 to i32 + br label %78 -77: ; preds = %95, %.preheader.i.i.i +78: ; preds = %95, %.preheader.i.i.i %.028.i.i.i = phi i32 [ %80, %95 ], [ %73, %.preheader.i.i.i ] %.027.i.i.i = phi ptr [ %98, %95 ], [ %31, %.preheader.i.i.i ] %.026.i.i.i = phi i32 [ %.1.i.i.i, %95 ], [ %76, %.preheader.i.i.i ] - %78 = icmp ugt i32 %.028.i.i.i, 1 - br i1 %78, label %79, label %100 + %exitcond.not.i.i.i = icmp eq i32 %.028.i.i.i, %umin.i.i.i + br i1 %exitcond.not.i.i.i, label %100, label %79 -79: ; preds = %77 +79: ; preds = %78 %80 = add nsw i32 %.028.i.i.i, -1 %81 = lshr i32 %75, %80 %82 = and i32 %81, 1 @@ -225,9 +227,9 @@ define noundef ptr @tvb_uncompress_lz77huff(ptr noundef %0, i32 noundef %1, i32 %.not6.i.i.i.i = icmp uge ptr %98, %31 %99 = icmp ult ptr %98, %64 %or.cond.i.i.i = and i1 %.not6.i.i.i.i, %99 - br i1 %or.cond.i.i.i, label %77, label %PrefixCodeTreeRebuild.exit.thread.i, !llvm.loop !10 + br i1 %or.cond.i.i.i, label %78, label %PrefixCodeTreeRebuild.exit.thread.i, !llvm.loop !10 -100: ; preds = %77 +100: ; preds = %78 %101 = trunc nuw i32 %.05364.i.i to i16 %102 = getelementptr inbounds nuw i8, ptr %.027.i.i.i, i64 4 %103 = and i32 %75, 1 diff --git a/bench/yalantinglibs/optimized/test_messages_proto2.pb.ll b/bench/yalantinglibs/optimized/test_messages_proto2.pb.ll index 2648cb32ee3..9f99bac42a8 100644 --- a/bench/yalantinglibs/optimized/test_messages_proto2.pb.ll +++ b/bench/yalantinglibs/optimized/test_messages_proto2.pb.ll @@ -8720,92 +8720,93 @@ if.then.i35: ; preds = %for.body.i br i1 %call2.i37, label %_ZNK22protobuf_test_messages6proto232TestAllTypesProto2_NestedMessage13IsInitializedEv.exit38, label %return _ZNK22protobuf_test_messages6proto232TestAllTypesProto2_NestedMessage13IsInitializedEv.exit38: ; preds = %for.body.i, %if.then.i35 - %cmp.i = icmp samesign ult i64 %indvars.iv, 2 - br i1 %cmp.i, label %if.end4, label %for.body.i, !llvm.loop !30 + %7 = and i64 %indvars.iv.next, 4294967295 + %exitcond = icmp eq i64 %7, 0 + br i1 %exitcond, label %if.end4, label %for.body.i, !llvm.loop !30 if.end4: ; preds = %_ZNK22protobuf_test_messages6proto232TestAllTypesProto2_NestedMessage13IsInitializedEv.exit38, %if.end %map_string_nested_message_ = getelementptr inbounds nuw i8, ptr %this, i64 1880 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %it.i) %vtable.i = load ptr, ptr %map_string_nested_message_, align 8 %vfn.i = getelementptr inbounds nuw i8, ptr %vtable.i, i64 152 - %7 = load ptr, ptr %vfn.i, align 8 - %call.i1 = tail call noundef nonnull align 8 dereferenceable(24) ptr %7(ptr noundef nonnull align 8 dereferenceable(96) %map_string_nested_message_) + %8 = load ptr, ptr %vfn.i, align 8 + %call.i1 = tail call noundef nonnull align 8 dereferenceable(24) ptr %8(ptr noundef nonnull align 8 dereferenceable(96) %map_string_nested_message_) tail call void @llvm.experimental.noalias.scope.decl(metadata !31) %elements_.i = getelementptr inbounds nuw i8, ptr %call.i1, i64 16 - %8 = load ptr, ptr %elements_.i, align 8, !noalias !31 - %index_of_first_non_null_.i.i.i = getelementptr inbounds nuw i8, ptr %8, i64 24 - %9 = load i64, ptr %index_of_first_non_null_.i.i.i, align 8, !noalias !34 - %num_buckets_14.i.i.i.i = getelementptr inbounds nuw i8, ptr %8, i64 8 - %10 = load i64, ptr %num_buckets_14.i.i.i.i, align 8, !noalias !34 - %cmp153.i.i.i.i = icmp ult i64 %9, %10 + %9 = load ptr, ptr %elements_.i, align 8, !noalias !31 + %index_of_first_non_null_.i.i.i = getelementptr inbounds nuw i8, ptr %9, i64 24 + %10 = load i64, ptr %index_of_first_non_null_.i.i.i, align 8, !noalias !34 + %num_buckets_14.i.i.i.i = getelementptr inbounds nuw i8, ptr %9, i64 8 + %11 = load i64, ptr %num_buckets_14.i.i.i.i, align 8, !noalias !34 + %cmp153.i.i.i.i = icmp ult i64 %10, %11 br i1 %cmp153.i.i.i.i, label %for.body.lr.ph.i.i.i.i, label %if.end7 for.body.lr.ph.i.i.i.i: ; preds = %if.end4 - %table_.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %8, i64 32 - %11 = load ptr, ptr %table_.i.i.i.i.i, align 8, !noalias !34 + %table_.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %9, i64 32 + %12 = load ptr, ptr %table_.i.i.i.i.i, align 8, !noalias !34 br label %for.body.i.i.i.i for.body.i.i.i.i: ; preds = %for.inc.i.i.i.i, %for.body.lr.ph.i.i.i.i - %ref.tmp2.sroa.4.0.i = phi i64 [ %9, %for.body.lr.ph.i.i.i.i ], [ %inc.i.i.i.i, %for.inc.i.i.i.i ] - %arrayidx.i.i.i.i.i.i = getelementptr inbounds ptr, ptr %11, i64 %ref.tmp2.sroa.4.0.i - %12 = load ptr, ptr %arrayidx.i.i.i.i.i.i, align 8, !noalias !34 - %cmp.not.i.i.i.i.i.i = icmp eq ptr %12, null + %ref.tmp2.sroa.4.0.i = phi i64 [ %10, %for.body.lr.ph.i.i.i.i ], [ %inc.i.i.i.i, %for.inc.i.i.i.i ] + %arrayidx.i.i.i.i.i.i = getelementptr inbounds ptr, ptr %12, i64 %ref.tmp2.sroa.4.0.i + %13 = load ptr, ptr %arrayidx.i.i.i.i.i.i, align 8, !noalias !34 + %cmp.not.i.i.i.i.i.i = icmp eq ptr %13, null br i1 %cmp.not.i.i.i.i.i.i, label %for.inc.i.i.i.i, label %_ZNK6google8protobuf3MapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN22protobuf_test_messages6proto232TestAllTypesProto2_NestedMessageEE8InnerMap24TableEntryIsNonEmptyListEm.exit.i.i.i.i _ZNK6google8protobuf3MapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN22protobuf_test_messages6proto232TestAllTypesProto2_NestedMessageEE8InnerMap24TableEntryIsNonEmptyListEm.exit.i.i.i.i: ; preds = %for.body.i.i.i.i %xor.i.i.i.i.i.i = xor i64 %ref.tmp2.sroa.4.0.i, 1 - %arrayidx2.i.i.i.i.i.i = getelementptr inbounds ptr, ptr %11, i64 %xor.i.i.i.i.i.i - %13 = load ptr, ptr %arrayidx2.i.i.i.i.i.i, align 8, !noalias !34 - %cmp3.i.i.not.i.i.i.i = icmp eq ptr %12, %13 + %arrayidx2.i.i.i.i.i.i = getelementptr inbounds ptr, ptr %12, i64 %xor.i.i.i.i.i.i + %14 = load ptr, ptr %arrayidx2.i.i.i.i.i.i, align 8, !noalias !34 + %cmp3.i.i.not.i.i.i.i = icmp eq ptr %13, %14 br i1 %cmp3.i.i.not.i.i.i.i, label %_ZNK6google8protobuf3MapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN22protobuf_test_messages6proto232TestAllTypesProto2_NestedMessageEE5beginEv.exit, label %_ZNK6google8protobuf3MapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN22protobuf_test_messages6proto232TestAllTypesProto2_NestedMessageEE5beginEv.exit.thread69 _ZNK6google8protobuf3MapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN22protobuf_test_messages6proto232TestAllTypesProto2_NestedMessageEE5beginEv.exit.thread69: ; preds = %_ZNK6google8protobuf3MapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN22protobuf_test_messages6proto232TestAllTypesProto2_NestedMessageEE8InnerMap24TableEntryIsNonEmptyListEm.exit.i.i.i.i - store ptr %12, ptr %it.i, align 8, !alias.scope !37 + store ptr %13, ptr %it.i, align 8, !alias.scope !37 %ref.tmp.sroa.2.0.agg.result.sroa_idx.i.i72 = getelementptr inbounds nuw i8, ptr %it.i, i64 8 - store ptr %8, ptr %ref.tmp.sroa.2.0.agg.result.sroa_idx.i.i72, align 8, !alias.scope !37 + store ptr %9, ptr %ref.tmp.sroa.2.0.agg.result.sroa_idx.i.i72, align 8, !alias.scope !37 %ref.tmp.sroa.3.0.agg.result.sroa_idx.i.i73 = getelementptr inbounds nuw i8, ptr %it.i, i64 16 store i64 %ref.tmp2.sroa.4.0.i, ptr %ref.tmp.sroa.3.0.agg.result.sroa_idx.i.i73, align 8, !alias.scope !37 br label %for.body.i4.preheader for.inc.i.i.i.i: ; preds = %for.body.i.i.i.i %inc.i.i.i.i = add i64 %ref.tmp2.sroa.4.0.i, 1 - %exitcond.not.i.i = icmp eq i64 %inc.i.i.i.i, %10 + %exitcond.not.i.i = icmp eq i64 %inc.i.i.i.i, %11 br i1 %exitcond.not.i.i, label %if.end7, label %for.body.i.i.i.i, !llvm.loop !40 _ZNK6google8protobuf3MapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN22protobuf_test_messages6proto232TestAllTypesProto2_NestedMessageEE5beginEv.exit: ; preds = %_ZNK6google8protobuf3MapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN22protobuf_test_messages6proto232TestAllTypesProto2_NestedMessageEE8InnerMap24TableEntryIsNonEmptyListEm.exit.i.i.i.i - %_M_left.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %12, i64 32 - %14 = load ptr, ptr %_M_left.i.i.i.i.i.i, align 8, !noalias !34 - %_M_storage.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %14, i64 32 - %15 = load ptr, ptr %_M_storage.i.i.i.i.i.i, align 8, !noalias !34 - store ptr %15, ptr %it.i, align 8, !alias.scope !37 + %_M_left.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %13, i64 32 + %15 = load ptr, ptr %_M_left.i.i.i.i.i.i, align 8, !noalias !34 + %_M_storage.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %15, i64 32 + %16 = load ptr, ptr %_M_storage.i.i.i.i.i.i, align 8, !noalias !34 + store ptr %16, ptr %it.i, align 8, !alias.scope !37 %ref.tmp.sroa.2.0.agg.result.sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %it.i, i64 8 - store ptr %8, ptr %ref.tmp.sroa.2.0.agg.result.sroa_idx.i.i, align 8, !alias.scope !37 + store ptr %9, ptr %ref.tmp.sroa.2.0.agg.result.sroa_idx.i.i, align 8, !alias.scope !37 %ref.tmp.sroa.3.0.agg.result.sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %it.i, i64 16 store i64 %ref.tmp2.sroa.4.0.i, ptr %ref.tmp.sroa.3.0.agg.result.sroa_idx.i.i, align 8, !alias.scope !37 - %cmp.i.i.i50.not60 = icmp eq ptr %15, null + %cmp.i.i.i50.not60 = icmp eq ptr %16, null br i1 %cmp.i.i.i50.not60, label %if.end7, label %for.body.i4.preheader for.body.i4.preheader: ; preds = %_ZNK6google8protobuf3MapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN22protobuf_test_messages6proto232TestAllTypesProto2_NestedMessageEE5beginEv.exit.thread69, %_ZNK6google8protobuf3MapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN22protobuf_test_messages6proto232TestAllTypesProto2_NestedMessageEE5beginEv.exit - %.ph = phi ptr [ %15, %_ZNK6google8protobuf3MapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN22protobuf_test_messages6proto232TestAllTypesProto2_NestedMessageEE5beginEv.exit ], [ %12, %_ZNK6google8protobuf3MapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN22protobuf_test_messages6proto232TestAllTypesProto2_NestedMessageEE5beginEv.exit.thread69 ] + %.ph = phi ptr [ %16, %_ZNK6google8protobuf3MapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN22protobuf_test_messages6proto232TestAllTypesProto2_NestedMessageEE5beginEv.exit ], [ %13, %_ZNK6google8protobuf3MapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN22protobuf_test_messages6proto232TestAllTypesProto2_NestedMessageEE5beginEv.exit.thread69 ] br label %for.body.i4 for.body.i4: ; preds = %for.body.i4.preheader, %for.inc.i - %16 = phi ptr [ %.pr, %for.inc.i ], [ %.ph, %for.body.i4.preheader ] - %v_.i.i.i = getelementptr inbounds nuw i8, ptr %16, i64 8 - %17 = load ptr, ptr %v_.i.i.i, align 8 - %_has_bits_.i.i39 = getelementptr inbounds nuw i8, ptr %17, i64 48 - %18 = load i32, ptr %_has_bits_.i.i39, align 4 - %and.i.i40 = and i32 %18, 1 + %17 = phi ptr [ %.pr, %for.inc.i ], [ %.ph, %for.body.i4.preheader ] + %v_.i.i.i = getelementptr inbounds nuw i8, ptr %17, i64 8 + %18 = load ptr, ptr %v_.i.i.i, align 8 + %_has_bits_.i.i39 = getelementptr inbounds nuw i8, ptr %18, i64 48 + %19 = load i32, ptr %_has_bits_.i.i39, align 4 + %and.i.i40 = and i32 %19, 1 %cmp.i.i41.not = icmp eq i32 %and.i.i40, 0 - %corecursive_10.i.i42 = getelementptr inbounds nuw i8, ptr %17, i64 56 - %19 = load ptr, ptr %corecursive_10.i.i42, align 8 - %cmp11.i.i43 = icmp ne ptr %19, null - %20 = select i1 %cmp.i.i41.not, i1 true, i1 %cmp11.i.i43 - call void @llvm.assume(i1 %20) + %corecursive_10.i.i42 = getelementptr inbounds nuw i8, ptr %18, i64 56 + %20 = load ptr, ptr %corecursive_10.i.i42, align 8 + %cmp11.i.i43 = icmp ne ptr %20, null + %21 = select i1 %cmp.i.i41.not, i1 true, i1 %cmp11.i.i43 + call void @llvm.assume(i1 %21) br i1 %cmp.i.i41.not, label %for.inc.i, label %if.then.i47 if.then.i47: ; preds = %for.body.i4 - %call2.i = call noundef zeroext i1 @_ZNK22protobuf_test_messages6proto218TestAllTypesProto213IsInitializedEv(ptr noundef nonnull align 8 dereferenceable(3152) %19) + %call2.i = call noundef zeroext i1 @_ZNK22protobuf_test_messages6proto218TestAllTypesProto213IsInitializedEv(ptr noundef nonnull align 8 dereferenceable(3152) %20) br i1 %call2.i, label %for.inc.i, label %_ZN6google8protobuf8internal17AllAreInitializedIN22protobuf_test_messages6proto255TestAllTypesProto2_MapStringNestedMessageEntry_DoNotUseENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS4_32TestAllTypesProto2_NestedMessageELNS1_14WireFormatLite9FieldTypeE9ELSE_11ELi0EEEbRKNS1_8MapFieldIT_T0_T1_XT2_EXT3_EXT4_EEE.exit for.inc.i: ; preds = %for.body.i4, %if.then.i47 @@ -8821,30 +8822,30 @@ _ZN6google8protobuf8internal17AllAreInitializedIN22protobuf_test_messages6proto2 if.end7: ; preds = %for.inc.i.i.i.i, %for.inc.i, %if.end4, %_ZNK6google8protobuf3MapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN22protobuf_test_messages6proto232TestAllTypesProto2_NestedMessageEE5beginEv.exit call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %it.i) %_has_bits_.i = getelementptr inbounds nuw i8, ptr %this, i64 40 - %21 = load i32, ptr %_has_bits_.i, align 8 - %and.i = and i32 %21, 64 + %22 = load i32, ptr %_has_bits_.i, align 8 + %and.i = and i32 %22, 64 %cmp.i6.not = icmp eq i32 %and.i, 0 %optional_nested_message_10.i = getelementptr inbounds nuw i8, ptr %this, i64 2872 - %22 = load ptr, ptr %optional_nested_message_10.i, align 8 - %cmp11.i = icmp ne ptr %22, null - %23 = select i1 %cmp.i6.not, i1 true, i1 %cmp11.i - call void @llvm.assume(i1 %23) + %23 = load ptr, ptr %optional_nested_message_10.i, align 8 + %cmp11.i = icmp ne ptr %23, null + %24 = select i1 %cmp.i6.not, i1 true, i1 %cmp11.i + call void @llvm.assume(i1 %24) br i1 %cmp.i6.not, label %if.end13, label %if.then9 if.then9: ; preds = %if.end7 - %_has_bits_.i.i = getelementptr inbounds nuw i8, ptr %22, i64 16 - %24 = load i32, ptr %_has_bits_.i.i, align 4 - %and.i.i = and i32 %24, 1 + %_has_bits_.i.i = getelementptr inbounds nuw i8, ptr %23, i64 16 + %25 = load i32, ptr %_has_bits_.i.i, align 4 + %and.i.i = and i32 %25, 1 %cmp.i.i.not = icmp eq i32 %and.i.i, 0 - %corecursive_10.i.i = getelementptr inbounds nuw i8, ptr %22, i64 24 - %25 = load ptr, ptr %corecursive_10.i.i, align 8 - %cmp11.i.i = icmp ne ptr %25, null - %26 = select i1 %cmp.i.i.not, i1 true, i1 %cmp11.i.i - call void @llvm.assume(i1 %26) + %corecursive_10.i.i = getelementptr inbounds nuw i8, ptr %23, i64 24 + %26 = load ptr, ptr %corecursive_10.i.i, align 8 + %cmp11.i.i = icmp ne ptr %26, null + %27 = select i1 %cmp.i.i.not, i1 true, i1 %cmp11.i.i + call void @llvm.assume(i1 %27) br i1 %cmp.i.i.not, label %if.end13, label %if.then.i if.then.i: ; preds = %if.then9 - %call2.i8 = call noundef zeroext i1 @_ZNK22protobuf_test_messages6proto218TestAllTypesProto213IsInitializedEv(ptr noundef nonnull align 8 dereferenceable(3152) %25) + %call2.i8 = call noundef zeroext i1 @_ZNK22protobuf_test_messages6proto218TestAllTypesProto213IsInitializedEv(ptr noundef nonnull align 8 dereferenceable(3152) %26) br i1 %call2.i8, label %if.then.i.if.end13_crit_edge, label %return if.then.i.if.end13_crit_edge: ; preds = %if.then.i @@ -8852,42 +8853,42 @@ if.then.i.if.end13_crit_edge: ; preds = %if.then.i br label %if.end13 if.end13: ; preds = %if.then.i.if.end13_crit_edge, %if.then9, %if.end7 - %27 = phi i32 [ %.pre, %if.then.i.if.end13_crit_edge ], [ %21, %if.then9 ], [ %21, %if.end7 ] - %and.i10 = and i32 %27, 256 + %28 = phi i32 [ %.pre, %if.then.i.if.end13_crit_edge ], [ %22, %if.then9 ], [ %22, %if.end7 ] + %and.i10 = and i32 %28, 256 %cmp.i11.not = icmp eq i32 %and.i10, 0 %recursive_message_10.i = getelementptr inbounds nuw i8, ptr %this, i64 2888 - %28 = load ptr, ptr %recursive_message_10.i, align 8 - %cmp11.i12 = icmp ne ptr %28, null - %29 = select i1 %cmp.i11.not, i1 true, i1 %cmp11.i12 - call void @llvm.assume(i1 %29) + %29 = load ptr, ptr %recursive_message_10.i, align 8 + %cmp11.i12 = icmp ne ptr %29, null + %30 = select i1 %cmp.i11.not, i1 true, i1 %cmp11.i12 + call void @llvm.assume(i1 %30) br i1 %cmp.i11.not, label %if.end19, label %if.then15 if.then15: ; preds = %if.end13 - %call16 = call noundef zeroext i1 @_ZNK22protobuf_test_messages6proto218TestAllTypesProto213IsInitializedEv(ptr noundef nonnull align 8 dereferenceable(3152) %28) + %call16 = call noundef zeroext i1 @_ZNK22protobuf_test_messages6proto218TestAllTypesProto213IsInitializedEv(ptr noundef nonnull align 8 dereferenceable(3152) %29) br i1 %call16, label %if.end19, label %return if.end19: ; preds = %if.then15, %if.end13 %_oneof_case_.i = getelementptr inbounds nuw i8, ptr %this, i64 3144 - %30 = load i32, ptr %_oneof_case_.i, align 8 - %cond = icmp eq i32 %30, 112 + %31 = load i32, ptr %_oneof_case_.i, align 8 + %cond = icmp eq i32 %31, 112 br i1 %cond, label %if.then23, label %return if.then23: ; preds = %if.end19 %oneof_field_.i.i = getelementptr inbounds nuw i8, ptr %this, i64 3136 - %31 = load ptr, ptr %oneof_field_.i.i, align 8 - %_has_bits_.i.i15 = getelementptr inbounds nuw i8, ptr %31, i64 16 - %32 = load i32, ptr %_has_bits_.i.i15, align 4 - %and.i.i16 = and i32 %32, 1 + %32 = load ptr, ptr %oneof_field_.i.i, align 8 + %_has_bits_.i.i15 = getelementptr inbounds nuw i8, ptr %32, i64 16 + %33 = load i32, ptr %_has_bits_.i.i15, align 4 + %and.i.i16 = and i32 %33, 1 %cmp.i.i17.not = icmp eq i32 %and.i.i16, 0 - %corecursive_10.i.i18 = getelementptr inbounds nuw i8, ptr %31, i64 24 - %33 = load ptr, ptr %corecursive_10.i.i18, align 8 - %cmp11.i.i19 = icmp ne ptr %33, null - %34 = select i1 %cmp.i.i17.not, i1 true, i1 %cmp11.i.i19 - call void @llvm.assume(i1 %34) + %corecursive_10.i.i18 = getelementptr inbounds nuw i8, ptr %32, i64 24 + %34 = load ptr, ptr %corecursive_10.i.i18, align 8 + %cmp11.i.i19 = icmp ne ptr %34, null + %35 = select i1 %cmp.i.i17.not, i1 true, i1 %cmp11.i.i19 + call void @llvm.assume(i1 %35) br i1 %cmp.i.i17.not, label %_ZNK22protobuf_test_messages6proto232TestAllTypesProto2_NestedMessage13IsInitializedEv.exit26.thread, label %if.then.i23 if.then.i23: ; preds = %if.then23 - %call2.i25 = call noundef zeroext i1 @_ZNK22protobuf_test_messages6proto218TestAllTypesProto213IsInitializedEv(ptr noundef nonnull align 8 dereferenceable(3152) %33) + %call2.i25 = call noundef zeroext i1 @_ZNK22protobuf_test_messages6proto218TestAllTypesProto213IsInitializedEv(ptr noundef nonnull align 8 dereferenceable(3152) %34) br i1 %call2.i25, label %_ZNK22protobuf_test_messages6proto232TestAllTypesProto2_NestedMessage13IsInitializedEv.exit26.thread, label %return _ZNK22protobuf_test_messages6proto232TestAllTypesProto2_NestedMessage13IsInitializedEv.exit26.thread: ; preds = %if.then23, %if.then.i23 diff --git a/bench/yosys/optimized/preproc.ll b/bench/yosys/optimized/preproc.ll index 77eb12d1e9f..a571e7d9a19 100644 --- a/bench/yosys/optimized/preproc.ll +++ b/bench/yosys/optimized/preproc.ll @@ -6282,6 +6282,10 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit125.i: ; preds = % call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %27) #27 br i1 %switch.i, label %.preheader.i, label %1405 +.preheader.i: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit125.i + %smin.i = call i32 @llvm.smin.i32(i32 %.125.i, i32 0) + br label %1814 + 1807: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit118.i, %.loopexit.split-lp164.i, %.loopexit163.i, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit93.i, %.loopexit.split-lp169.i, %.loopexit168.i, %.body.i, %.loopexit.split-lp179.i, %.loopexit178.i %.pn47.pn.i = phi { ptr, i32 } [ %.pn47.i, %.body.i ], [ %lpad.phi177.i, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit93.i ], [ %.pn.pn.i, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit118.i ], [ %lpad.loopexit180.i, %.loopexit178.i ], [ %lpad.loopexit.split-lp181.i, %.loopexit.split-lp179.i ], [ %lpad.loopexit170.i, %.loopexit168.i ], [ %lpad.loopexit.split-lp171.i, %.loopexit.split-lp169.i ], [ %lpad.loopexit165.i, %.loopexit163.i ], [ %lpad.loopexit.split-lp166.i, %.loopexit.split-lp164.i ] %1808 = load ptr, ptr %27, align 8, !tbaa !12 @@ -6305,15 +6309,15 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit128.i: ; preds = % call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %27) #27 br label %.loopexit.split-lp.i -.preheader.i: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit125.i, %1815 - %.327.i = phi i32 [ %1816, %1815 ], [ %.125.i, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit125.i ] - %1814 = icmp sgt i32 %.327.i, 0 - br i1 %1814, label %1815, label %1817 +1814: ; preds = %1815, %.preheader.i + %.327.i = phi i32 [ %1816, %1815 ], [ %.125.i, %.preheader.i ] + %exitcond.not.i = icmp eq i32 %.327.i, %smin.i + br i1 %exitcond.not.i, label %1817, label %1815 -1815: ; preds = %.preheader.i - %1816 = add nsw i32 %.327.i, -1 +1815: ; preds = %1814 + %1816 = add i32 %.327.i, -1 invoke fastcc void @_ZN5YosysL11return_charEc(i8 noundef signext 10) - to label %.preheader.i unwind label %.loopexit.i, !llvm.loop !140 + to label %1814 unwind label %.loopexit.i, !llvm.loop !140 .loopexit.i: ; preds = %1815 %lpad.loopexit.i = landingpad { ptr, i32 } @@ -6330,7 +6334,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit128.i: ; preds = % cleanup br label %.loopexit.split-lp.i -1817: ; preds = %.preheader.i +1817: ; preds = %1814 %1818 = load ptr, ptr %21, align 8, !tbaa !12 %1819 = load i8, ptr %1818, align 1, !tbaa !18 %1820 = sext i8 %1819 to i32 @@ -8570,7 +8574,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc.exit205: ; preds = %_Z %.071 = phi i8 [ 0, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc.exit205 ], [ %432, %460 ] %407 = load ptr, ptr @_ZN5YosysL12input_bufferB5cxx11E, align 8, !tbaa !6 %408 = icmp eq ptr %407, @_ZN5YosysL12input_bufferB5cxx11E - br i1 %408, label %_ZN5YosysL9next_charEv.exit216.thread.preheader, label %.lr.ph.preheader.i206 + br i1 %408, label %_ZN5YosysL9next_charEv.exit216.thread, label %.lr.ph.preheader.i206 .lr.ph.preheader.i206: ; preds = %406 %.pre4.i207 = load i64, ptr @_ZN5YosysL18input_buffer_charpE, align 8, !tbaa !33 @@ -8618,7 +8622,7 @@ tailrecurse.backedge.i210: ; preds = %428, %_ZNSt7__cxx11 %425 = phi ptr [ %.pre5.i214, %_ZNSt7__cxx114listINS_12basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9pop_frontEv.exit.i212 ], [ %409, %428 ] %426 = phi i64 [ %.pre.i213, %_ZNSt7__cxx114listINS_12basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9pop_frontEv.exit.i212 ], [ %429, %428 ] %427 = icmp eq ptr %425, @_ZN5YosysL12input_bufferB5cxx11E - br i1 %427, label %_ZN5YosysL9next_charEv.exit216.thread.preheader, label %.lr.ph.i208 + br i1 %427, label %_ZN5YosysL9next_charEv.exit216.thread, label %.lr.ph.i208 428: ; preds = %.lr.ph.i208 %429 = add i64 %410, 1 @@ -8628,7 +8632,7 @@ tailrecurse.backedge.i210: ; preds = %428, %_ZNSt7__cxx11 %432 = load i8, ptr %431, align 1, !tbaa !18 switch i8 %432, label %447 [ i8 13, label %tailrecurse.backedge.i210 - i8 0, label %_ZN5YosysL9next_charEv.exit216.thread.preheader + i8 0, label %_ZN5YosysL9next_charEv.exit216.thread i8 10, label %433 ] @@ -8717,21 +8721,22 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc.exit224: ; preds = %_Z %463 = icmp eq i8 %.071, 42 %464 = icmp eq i8 %432, 47 %or.cond14 = and i1 %463, %464 - br i1 %or.cond14, label %_ZN5YosysL9next_charEv.exit216.thread.preheader, label %406, !llvm.loop !151 + br i1 %or.cond14, label %_ZN5YosysL9next_charEv.exit216.thread, label %406, !llvm.loop !151 -_ZN5YosysL9next_charEv.exit216.thread.preheader: ; preds = %406, %460, %428, %tailrecurse.backedge.i210 - %.3.ph = phi i32 [ %.072, %tailrecurse.backedge.i210 ], [ %.072, %428 ], [ %.2, %460 ], [ %.072, %406 ] - br label %_ZN5YosysL9next_charEv.exit216.thread +_ZN5YosysL9next_charEv.exit216.thread: ; preds = %406, %460, %428, %tailrecurse.backedge.i210 + %.1 = phi i32 [ %.072, %tailrecurse.backedge.i210 ], [ %.072, %428 ], [ %.072, %406 ], [ %.2, %460 ] + %smin = call i32 @llvm.smin.i32(i32 %.1, i32 0) + br label %465 -_ZN5YosysL9next_charEv.exit216.thread: ; preds = %_ZN5YosysL9next_charEv.exit216.thread.preheader, %466 - %.3 = phi i32 [ %467, %466 ], [ %.3.ph, %_ZN5YosysL9next_charEv.exit216.thread.preheader ] - %465 = icmp sgt i32 %.3, 0 - br i1 %465, label %466, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc.exit +465: ; preds = %466, %_ZN5YosysL9next_charEv.exit216.thread + %.3 = phi i32 [ %.1, %_ZN5YosysL9next_charEv.exit216.thread ], [ %467, %466 ] + %exitcond.not = icmp eq i32 %.3, %smin + br i1 %exitcond.not, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc.exit, label %466 -466: ; preds = %_ZN5YosysL9next_charEv.exit216.thread - %467 = add nsw i32 %.3, -1 +466: ; preds = %465 + %467 = add i32 %.3, -1 invoke fastcc void @_ZN5YosysL11return_charEc(i8 noundef signext 10) - to label %_ZN5YosysL9next_charEv.exit216.thread unwind label %.loopexit303, !llvm.loop !152 + to label %465 unwind label %.loopexit303, !llvm.loop !152 468: ; preds = %56 %469 = icmp eq i8 %33, 96 @@ -8975,7 +8980,7 @@ tailrecurse.backedge.i248: ; preds = %556, %_ZNSt7__cxx11 i8 0, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc.exit ] -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc.exit: ; preds = %315, %tailrecurse.backedge.i174, %_ZN5YosysL9next_charEv.exit216.thread, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc.exit169, %269, %tailrecurse.backedge.i159, %242, %tailrecurse.backedge.i148, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc.exit113, %111, %tailrecurse.backedge.i103, %530, %556, %tailrecurse.backedge.i248, %.invoke, %.preheader291, %.preheader, %293, %220, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKc.exit.i, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc.exit239, %470, %._crit_edge, %247, %_ZN5YosysL9next_charEv.exit124.thread +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc.exit: ; preds = %315, %tailrecurse.backedge.i174, %465, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc.exit169, %269, %tailrecurse.backedge.i159, %242, %tailrecurse.backedge.i148, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc.exit113, %111, %tailrecurse.backedge.i103, %530, %556, %tailrecurse.backedge.i248, %.invoke, %.preheader291, %.preheader, %293, %220, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKc.exit.i, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc.exit239, %470, %._crit_edge, %247, %_ZN5YosysL9next_charEv.exit124.thread %561 = getelementptr inbounds nuw i8, ptr %0, i64 16 store ptr %561, ptr %0, align 8, !tbaa !30 %562 = load ptr, ptr %4, align 8, !tbaa !12 @@ -18383,6 +18388,9 @@ declare i64 @llvm.umax.i64(i64, i64) #24 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) declare void @llvm.experimental.noalias.scope.decl(metadata) #25 +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare i32 @llvm.smin.i32(i32, i32) #24 + attributes #0 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #2 = { nofree nounwind } diff --git a/bench/z3/optimized/lar_solver.ll b/bench/z3/optimized/lar_solver.ll index fad5e24c70e..04cc3cd3272 100644 --- a/bench/z3/optimized/lar_solver.ll +++ b/bench/z3/optimized/lar_solver.ll @@ -9916,7 +9916,7 @@ _ZNK6vectorIN2lp14stacked_vectorIjE9log_entryELb1EjE4sizeEv.exit: ; preds = %_ZN _ZNK6vectorIjLb1EjE4sizeEv.exit.preheader: ; preds = %.lr.ph %109 = add i32 %103, -1 %110 = zext i32 %109 to i64 - %111 = zext i32 %85 to i64 + %111 = add i32 %85, -1 br label %_ZNK6vectorIjLb1EjE4sizeEv.exit _ZNK6vectorIN2lp14stacked_vectorIjE9log_entryELb1EjE4sizeEv.exit.i.i: ; preds = %_ZN2lp14stacked_vectorIjE8pop_tailIjEEvR7svectorIT_jEj.exit43 @@ -10003,8 +10003,9 @@ _ZNK6vectorIjLb1EjE4sizeEv.exit: ; preds = %_ZNK6vectorIjLb1EjE _ZNK6vectorIjLb1EjE4sizeEv.exit.thread: ; preds = %132, %_ZNK6vectorIjLb1EjE4sizeEv.exit %indvars.iv.next = add nsw i64 %indvars.iv, -1 - %140 = icmp ugt i64 %indvars.iv, %111 - br i1 %140, label %_ZNK6vectorIjLb1EjE4sizeEv.exit, label %_ZNK6vectorIN2lp14stacked_vectorIjE9log_entryELb1EjE4sizeEv.exit.thread.i.i, !llvm.loop !439 + %lftr.wideiv = trunc i64 %indvars.iv.next to i32 + %exitcond.not = icmp eq i32 %111, %lftr.wideiv + br i1 %exitcond.not, label %_ZNK6vectorIN2lp14stacked_vectorIjE9log_entryELb1EjE4sizeEv.exit.thread.i.i, label %_ZNK6vectorIjLb1EjE4sizeEv.exit, !llvm.loop !439 } ; Function Attrs: mustprogress uwtable @@ -51813,7 +51814,7 @@ _ZNK6vectorIN2lp14stacked_vectorINS0_12numeric_pairI8rationalEEE9log_entryELb1Ej .lr.ph.split.preheader: ; preds = %_ZNK6vectorIN2lp14stacked_vectorINS0_12numeric_pairI8rationalEEE9log_entryELb1EjE4sizeEv.exit %112 = add i32 %108, -1 %113 = zext i32 %112 to i64 - %114 = zext i32 %90 to i64 + %114 = add i32 %90, -1 br label %.lr.ph.split ._crit_edge: ; preds = %_ZNK6vectorIN2lp12numeric_pairI8rationalEELb1EjE4sizeEv.exit.thread @@ -51909,8 +51910,9 @@ _ZNK6vectorIN2lp12numeric_pairI8rationalEELb1EjE4sizeEv.exit: ; preds = %.lr.ph. _ZNK6vectorIN2lp12numeric_pairI8rationalEELb1EjE4sizeEv.exit.thread: ; preds = %.lr.ph.split, %144, %_ZNK6vectorIN2lp12numeric_pairI8rationalEELb1EjE4sizeEv.exit %indvars.iv.next = add nsw i64 %indvars.iv, -1 - %153 = icmp ugt i64 %indvars.iv, %114 - br i1 %153, label %.lr.ph.split, label %._crit_edge, !llvm.loop !775 + %lftr.wideiv = trunc i64 %indvars.iv.next to i32 + %exitcond.not = icmp eq i32 %114, %lftr.wideiv + br i1 %exitcond.not, label %._crit_edge, label %.lr.ph.split, !llvm.loop !775 } ; Function Attrs: mustprogress uwtable @@ -52194,7 +52196,7 @@ _ZNK6vectorIN2lp14stacked_vectorINS0_11column_typeEE9log_entryELb1EjE4sizeEv.exi _ZNK6vectorIN2lp11column_typeELb1EjE4sizeEv.exit.preheader: ; preds = %.lr.ph %109 = add i32 %103, -1 %110 = zext i32 %109 to i64 - %111 = zext i32 %85 to i64 + %111 = add i32 %85, -1 br label %_ZNK6vectorIN2lp11column_typeELb1EjE4sizeEv.exit _ZNK6vectorIN2lp14stacked_vectorINS0_11column_typeEE9log_entryELb1EjE4sizeEv.exit.i.i: ; preds = %_ZN2lp14stacked_vectorINS_11column_typeEE8pop_tailIjEEvR7svectorIT_jEj.exit43 @@ -52281,8 +52283,9 @@ _ZNK6vectorIN2lp11column_typeELb1EjE4sizeEv.exit: ; preds = %_ZNK6vectorIN2lp11c _ZNK6vectorIN2lp11column_typeELb1EjE4sizeEv.exit.thread: ; preds = %132, %_ZNK6vectorIN2lp11column_typeELb1EjE4sizeEv.exit %indvars.iv.next = add nsw i64 %indvars.iv, -1 - %140 = icmp ugt i64 %indvars.iv, %111 - br i1 %140, label %_ZNK6vectorIN2lp11column_typeELb1EjE4sizeEv.exit, label %_ZNK6vectorIN2lp14stacked_vectorINS0_11column_typeEE9log_entryELb1EjE4sizeEv.exit.thread.i.i, !llvm.loop !783 + %lftr.wideiv = trunc i64 %indvars.iv.next to i32 + %exitcond.not = icmp eq i32 %111, %lftr.wideiv + br i1 %exitcond.not, label %_ZNK6vectorIN2lp14stacked_vectorINS0_11column_typeEE9log_entryELb1EjE4sizeEv.exit.thread.i.i, label %_ZNK6vectorIN2lp11column_typeELb1EjE4sizeEv.exit, !llvm.loop !783 } ; Function Attrs: mustprogress uwtable diff --git a/bench/zed-rs/optimized/1cwzjnrfv3j054rlb5kbvkj4j.ll b/bench/zed-rs/optimized/1cwzjnrfv3j054rlb5kbvkj4j.ll index 31ad05630bf..5e988bba080 100644 --- a/bench/zed-rs/optimized/1cwzjnrfv3j054rlb5kbvkj4j.ll +++ b/bench/zed-rs/optimized/1cwzjnrfv3j054rlb5kbvkj4j.ll @@ -10175,8 +10175,8 @@ define hidden void @_ZN4core5slice4sort8unstable8heapsort8heapsort17h447a7e87def call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %9, ptr noundef nonnull align 8 dereferenceable(64) %3, i64 64, i1 false) call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %3) tail call fastcc void @_ZN4core5slice4sort8unstable8heapsort9sift_down17hfb1a6ce22a877fa5E(ptr noalias noundef nonnull align 8 %0, i64 noundef %8, i64 noundef 0) - %10 = icmp ugt i64 %8, 1 - br i1 %10, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h8ea56e715ebc26d3E.exit", label %7 + %exitcond.not = icmp eq i64 %8, 1 + br i1 %exitcond.not, label %7, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h8ea56e715ebc26d3E.exit" } ; Function Attrs: nofree norecurse nosync nounwind nonlazybind memory(argmem: readwrite, inaccessiblemem: write) uwtable @@ -10242,32 +10242,29 @@ define hidden void @_ZN4core5slice4sort8unstable8heapsort8heapsort17hfd729e292a0 _ZN4core5slice4sort8unstable8heapsort9sift_down17hd2d2dbd7418ea724E.exit: ; preds = %22, %28, %.lr.ph %.not = icmp eq i64 %8, 0 - br i1 %.not, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17he4cdd96493e6a785E.exit.preheader", label %.lr.ph + br i1 %.not, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17he4cdd96493e6a785E.exit", label %.lr.ph -"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17he4cdd96493e6a785E.exit.preheader": ; preds = %_ZN4core5slice4sort8unstable8heapsort9sift_down17hd2d2dbd7418ea724E.exit - %31 = add i64 %1, -1 - %32 = getelementptr inbounds [0 x { i64, i64, i64, { i32, [2 x i32] }, i8, [3 x i8] }], ptr %0, i64 0, i64 %31 +31: ; preds = %_ZN4core5slice4sort8unstable8heapsort9sift_down17hd2d2dbd7418ea724E.exit20 + ret void + +"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17he4cdd96493e6a785E.exit": ; preds = %_ZN4core5slice4sort8unstable8heapsort9sift_down17hd2d2dbd7418ea724E.exit, %_ZN4core5slice4sort8unstable8heapsort9sift_down17hd2d2dbd7418ea724E.exit20 + %.sroa.46.023 = phi i64 [ %32, %_ZN4core5slice4sort8unstable8heapsort9sift_down17hd2d2dbd7418ea724E.exit20 ], [ %1, %_ZN4core5slice4sort8unstable8heapsort9sift_down17hd2d2dbd7418ea724E.exit ] + %32 = add i64 %.sroa.46.023, -1 + %33 = getelementptr inbounds [0 x { i64, i64, i64, { i32, [2 x i32] }, i8, [3 x i8] }], ptr %0, i64 0, i64 %32 call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %4) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %4, ptr noundef nonnull align 8 dereferenceable(40) %0, i64 40, i1 false) - tail call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %0, ptr noundef nonnull align 8 dereferenceable(40) %32, i64 40, i1 false), !alias.scope !2216 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %32, ptr noundef nonnull align 8 dereferenceable(40) %4, i64 40, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %0, ptr noundef nonnull align 8 dereferenceable(40) %33, i64 40, i1 false), !alias.scope !2216 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %33, ptr noundef nonnull align 8 dereferenceable(40) %4, i64 40, i1 false) call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %4) - %.not1.i1125 = icmp ugt i64 %31, 1 - br i1 %.not1.i1125, label %.lr.ph.i12.preheader, label %_ZN4core5slice4sort8unstable8heapsort9sift_down17hd2d2dbd7418ea724E.exit20.thread - -_ZN4core5slice4sort8unstable8heapsort9sift_down17hd2d2dbd7418ea724E.exit20.thread: ; preds = %_ZN4core5slice4sort8unstable8heapsort9sift_down17hd2d2dbd7418ea724E.exit20, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17he4cdd96493e6a785E.exit.preheader" - ret void + %.not1.i11 = icmp ugt i64 %32, 1 + br i1 %.not1.i11, label %.lr.ph.i12, label %_ZN4core5slice4sort8unstable8heapsort9sift_down17hd2d2dbd7418ea724E.exit20 -.lr.ph.i12.preheader: ; preds = %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17he4cdd96493e6a785E.exit.preheader", %_ZN4core5slice4sort8unstable8heapsort9sift_down17hd2d2dbd7418ea724E.exit20 - %33 = phi i64 [ %53, %_ZN4core5slice4sort8unstable8heapsort9sift_down17hd2d2dbd7418ea724E.exit20 ], [ %31, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17he4cdd96493e6a785E.exit.preheader" ] - br label %.lr.ph.i12 - -.lr.ph.i12: ; preds = %.lr.ph.i12.preheader, %50 - %34 = phi i64 [ %52, %50 ], [ 1, %.lr.ph.i12.preheader ] - %35 = phi i64 [ %51, %50 ], [ 0, %.lr.ph.i12.preheader ] - %.sroa.0.02.i13 = phi i64 [ %.sroa.04.0.i14, %50 ], [ 0, %.lr.ph.i12.preheader ] +.lr.ph.i12: ; preds = %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17he4cdd96493e6a785E.exit", %50 + %34 = phi i64 [ %52, %50 ], [ 1, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17he4cdd96493e6a785E.exit" ] + %35 = phi i64 [ %51, %50 ], [ 0, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17he4cdd96493e6a785E.exit" ] + %.sroa.0.02.i13 = phi i64 [ %.sroa.04.0.i14, %50 ], [ 0, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17he4cdd96493e6a785E.exit" ] %36 = add nuw i64 %35, 2 - %37 = icmp ult i64 %36, %33 + %37 = icmp ult i64 %36, %32 br i1 %37, label %38, label %44 38: ; preds = %.lr.ph.i12 @@ -10299,19 +10296,12 @@ _ZN4core5slice4sort8unstable8heapsort9sift_down17hd2d2dbd7418ea724E.exit20.threa call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %3) %51 = shl i64 %.sroa.04.0.i14, 1 %52 = or disjoint i64 %51, 1 - %.not.i17 = icmp ult i64 %52, %33 + %.not.i17 = icmp ult i64 %52, %32 br i1 %.not.i17, label %.lr.ph.i12, label %_ZN4core5slice4sort8unstable8heapsort9sift_down17hd2d2dbd7418ea724E.exit20 -_ZN4core5slice4sort8unstable8heapsort9sift_down17hd2d2dbd7418ea724E.exit20: ; preds = %44, %50 - %53 = add i64 %33, -1 - %54 = getelementptr inbounds [0 x { i64, i64, i64, { i32, [2 x i32] }, i8, [3 x i8] }], ptr %0, i64 0, i64 %53 - call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %4) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %4, ptr noundef nonnull align 8 dereferenceable(40) %0, i64 40, i1 false) - tail call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %0, ptr noundef nonnull align 8 dereferenceable(40) %54, i64 40, i1 false), !alias.scope !2216 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %54, ptr noundef nonnull align 8 dereferenceable(40) %4, i64 40, i1 false) - call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %4) - %.not1.i11 = icmp ugt i64 %53, 1 - br i1 %.not1.i11, label %.lr.ph.i12.preheader, label %_ZN4core5slice4sort8unstable8heapsort9sift_down17hd2d2dbd7418ea724E.exit20.thread +_ZN4core5slice4sort8unstable8heapsort9sift_down17hd2d2dbd7418ea724E.exit20: ; preds = %44, %50, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17he4cdd96493e6a785E.exit" + %exitcond.not = icmp eq i64 %32, 1 + br i1 %exitcond.not, label %31, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17he4cdd96493e6a785E.exit" } ; Function Attrs: nonlazybind uwtable diff --git a/bench/zed-rs/optimized/2qu3ksqe5t2g2a0ursek881ws.ll b/bench/zed-rs/optimized/2qu3ksqe5t2g2a0ursek881ws.ll index 971812a5db8..cd3dd3d92f4 100644 --- a/bench/zed-rs/optimized/2qu3ksqe5t2g2a0ursek881ws.ll +++ b/bench/zed-rs/optimized/2qu3ksqe5t2g2a0ursek881ws.ll @@ -2339,32 +2339,29 @@ define hidden void @_ZN4core5slice4sort8unstable8heapsort8heapsort17h940ce5c6a1c _ZN4core5slice4sort8unstable8heapsort9sift_down17h7e019d5f5bdf418aE.exit: ; preds = %22, %28, %.lr.ph %.not = icmp eq i64 %8, 0 - br i1 %.not, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h122c446e6946bf45E.exit.preheader", label %.lr.ph + br i1 %.not, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h122c446e6946bf45E.exit", label %.lr.ph -"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h122c446e6946bf45E.exit.preheader": ; preds = %_ZN4core5slice4sort8unstable8heapsort9sift_down17h7e019d5f5bdf418aE.exit - %31 = add i64 %1, -1 - %32 = getelementptr inbounds [0 x { i64, i64, i64, { i32, [2 x i32] }, i8, [3 x i8] }], ptr %0, i64 0, i64 %31 +31: ; preds = %_ZN4core5slice4sort8unstable8heapsort9sift_down17h7e019d5f5bdf418aE.exit20 + ret void + +"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h122c446e6946bf45E.exit": ; preds = %_ZN4core5slice4sort8unstable8heapsort9sift_down17h7e019d5f5bdf418aE.exit, %_ZN4core5slice4sort8unstable8heapsort9sift_down17h7e019d5f5bdf418aE.exit20 + %.sroa.46.023 = phi i64 [ %32, %_ZN4core5slice4sort8unstable8heapsort9sift_down17h7e019d5f5bdf418aE.exit20 ], [ %1, %_ZN4core5slice4sort8unstable8heapsort9sift_down17h7e019d5f5bdf418aE.exit ] + %32 = add i64 %.sroa.46.023, -1 + %33 = getelementptr inbounds [0 x { i64, i64, i64, { i32, [2 x i32] }, i8, [3 x i8] }], ptr %0, i64 0, i64 %32 call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %4) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %4, ptr noundef nonnull align 8 dereferenceable(40) %0, i64 40, i1 false) - tail call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %0, ptr noundef nonnull align 8 dereferenceable(40) %32, i64 40, i1 false), !alias.scope !619 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %32, ptr noundef nonnull align 8 dereferenceable(40) %4, i64 40, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %0, ptr noundef nonnull align 8 dereferenceable(40) %33, i64 40, i1 false), !alias.scope !619 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %33, ptr noundef nonnull align 8 dereferenceable(40) %4, i64 40, i1 false) call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %4) - %.not1.i1125 = icmp ugt i64 %31, 1 - br i1 %.not1.i1125, label %.lr.ph.i12.preheader, label %_ZN4core5slice4sort8unstable8heapsort9sift_down17h7e019d5f5bdf418aE.exit20.thread - -_ZN4core5slice4sort8unstable8heapsort9sift_down17h7e019d5f5bdf418aE.exit20.thread: ; preds = %_ZN4core5slice4sort8unstable8heapsort9sift_down17h7e019d5f5bdf418aE.exit20, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h122c446e6946bf45E.exit.preheader" - ret void + %.not1.i11 = icmp ugt i64 %32, 1 + br i1 %.not1.i11, label %.lr.ph.i12, label %_ZN4core5slice4sort8unstable8heapsort9sift_down17h7e019d5f5bdf418aE.exit20 -.lr.ph.i12.preheader: ; preds = %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h122c446e6946bf45E.exit.preheader", %_ZN4core5slice4sort8unstable8heapsort9sift_down17h7e019d5f5bdf418aE.exit20 - %33 = phi i64 [ %53, %_ZN4core5slice4sort8unstable8heapsort9sift_down17h7e019d5f5bdf418aE.exit20 ], [ %31, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h122c446e6946bf45E.exit.preheader" ] - br label %.lr.ph.i12 - -.lr.ph.i12: ; preds = %.lr.ph.i12.preheader, %50 - %34 = phi i64 [ %52, %50 ], [ 1, %.lr.ph.i12.preheader ] - %35 = phi i64 [ %51, %50 ], [ 0, %.lr.ph.i12.preheader ] - %.sroa.0.02.i13 = phi i64 [ %.sroa.04.0.i14, %50 ], [ 0, %.lr.ph.i12.preheader ] +.lr.ph.i12: ; preds = %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h122c446e6946bf45E.exit", %50 + %34 = phi i64 [ %52, %50 ], [ 1, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h122c446e6946bf45E.exit" ] + %35 = phi i64 [ %51, %50 ], [ 0, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h122c446e6946bf45E.exit" ] + %.sroa.0.02.i13 = phi i64 [ %.sroa.04.0.i14, %50 ], [ 0, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h122c446e6946bf45E.exit" ] %36 = add nuw i64 %35, 2 - %37 = icmp ult i64 %36, %33 + %37 = icmp ult i64 %36, %32 br i1 %37, label %38, label %44 38: ; preds = %.lr.ph.i12 @@ -2396,19 +2393,12 @@ _ZN4core5slice4sort8unstable8heapsort9sift_down17h7e019d5f5bdf418aE.exit20.threa call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %3) %51 = shl i64 %.sroa.04.0.i14, 1 %52 = or disjoint i64 %51, 1 - %.not.i17 = icmp ult i64 %52, %33 + %.not.i17 = icmp ult i64 %52, %32 br i1 %.not.i17, label %.lr.ph.i12, label %_ZN4core5slice4sort8unstable8heapsort9sift_down17h7e019d5f5bdf418aE.exit20 -_ZN4core5slice4sort8unstable8heapsort9sift_down17h7e019d5f5bdf418aE.exit20: ; preds = %44, %50 - %53 = add i64 %33, -1 - %54 = getelementptr inbounds [0 x { i64, i64, i64, { i32, [2 x i32] }, i8, [3 x i8] }], ptr %0, i64 0, i64 %53 - call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %4) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %4, ptr noundef nonnull align 8 dereferenceable(40) %0, i64 40, i1 false) - tail call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %0, ptr noundef nonnull align 8 dereferenceable(40) %54, i64 40, i1 false), !alias.scope !619 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %54, ptr noundef nonnull align 8 dereferenceable(40) %4, i64 40, i1 false) - call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %4) - %.not1.i11 = icmp ugt i64 %53, 1 - br i1 %.not1.i11, label %.lr.ph.i12.preheader, label %_ZN4core5slice4sort8unstable8heapsort9sift_down17h7e019d5f5bdf418aE.exit20.thread +_ZN4core5slice4sort8unstable8heapsort9sift_down17h7e019d5f5bdf418aE.exit20: ; preds = %44, %50, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h122c446e6946bf45E.exit" + %exitcond.not = icmp eq i64 %32, 1 + br i1 %exitcond.not, label %31, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h122c446e6946bf45E.exit" } ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable diff --git a/bench/zed-rs/optimized/4h84anocrn0e2zexjpu5utgbx.ll b/bench/zed-rs/optimized/4h84anocrn0e2zexjpu5utgbx.ll index 825e5de3437..2d184243231 100644 --- a/bench/zed-rs/optimized/4h84anocrn0e2zexjpu5utgbx.ll +++ b/bench/zed-rs/optimized/4h84anocrn0e2zexjpu5utgbx.ll @@ -10588,31 +10588,28 @@ define hidden void @_ZN4core5slice4sort8unstable8heapsort8heapsort17h7a5b49ddd64 _ZN4core5slice4sort8unstable8heapsort9sift_down17h43bb4db940c3c020E.exit: ; preds = %19, %23, %.lr.ph %.not = icmp eq i64 %5, 0 - br i1 %.not, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17ha99a00d83310a069E.exit.preheader", label %.lr.ph - -"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17ha99a00d83310a069E.exit.preheader": ; preds = %_ZN4core5slice4sort8unstable8heapsort9sift_down17h43bb4db940c3c020E.exit - %26 = add i64 %1, -1 - %27 = getelementptr inbounds [0 x i64], ptr %0, i64 0, i64 %26 - %.sroa.0.0.copyload.i.i25 = load i64, ptr %0, align 8, !alias.scope !1790 - %28 = load i64, ptr %27, align 8, !alias.scope !1790 - store i64 %28, ptr %0, align 8, !alias.scope !1790 - store i64 %.sroa.0.0.copyload.i.i25, ptr %27, align 8, !alias.scope !1790 - %.not1.i1126 = icmp ugt i64 %26, 1 - br i1 %.not1.i1126, label %.lr.ph.i12.preheader, label %_ZN4core5slice4sort8unstable8heapsort9sift_down17h43bb4db940c3c020E.exit20.thread - -_ZN4core5slice4sort8unstable8heapsort9sift_down17h43bb4db940c3c020E.exit20.thread: ; preds = %_ZN4core5slice4sort8unstable8heapsort9sift_down17h43bb4db940c3c020E.exit20, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17ha99a00d83310a069E.exit.preheader" - ret void + br i1 %.not, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17ha99a00d83310a069E.exit", label %.lr.ph -.lr.ph.i12.preheader: ; preds = %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17ha99a00d83310a069E.exit.preheader", %_ZN4core5slice4sort8unstable8heapsort9sift_down17h43bb4db940c3c020E.exit20 - %29 = phi i64 [ %47, %_ZN4core5slice4sort8unstable8heapsort9sift_down17h43bb4db940c3c020E.exit20 ], [ %26, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17ha99a00d83310a069E.exit.preheader" ] - br label %.lr.ph.i12 +26: ; preds = %_ZN4core5slice4sort8unstable8heapsort9sift_down17h43bb4db940c3c020E.exit20 + ret void -.lr.ph.i12: ; preds = %.lr.ph.i12.preheader, %44 - %30 = phi i64 [ %46, %44 ], [ 1, %.lr.ph.i12.preheader ] - %31 = phi i64 [ %45, %44 ], [ 0, %.lr.ph.i12.preheader ] - %.sroa.0.02.i13 = phi i64 [ %.sroa.04.0.i14, %44 ], [ 0, %.lr.ph.i12.preheader ] +"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17ha99a00d83310a069E.exit": ; preds = %_ZN4core5slice4sort8unstable8heapsort9sift_down17h43bb4db940c3c020E.exit, %_ZN4core5slice4sort8unstable8heapsort9sift_down17h43bb4db940c3c020E.exit20 + %.sroa.46.023 = phi i64 [ %27, %_ZN4core5slice4sort8unstable8heapsort9sift_down17h43bb4db940c3c020E.exit20 ], [ %1, %_ZN4core5slice4sort8unstable8heapsort9sift_down17h43bb4db940c3c020E.exit ] + %27 = add i64 %.sroa.46.023, -1 + %28 = getelementptr inbounds [0 x i64], ptr %0, i64 0, i64 %27 + %.sroa.0.0.copyload.i.i = load i64, ptr %0, align 8, !alias.scope !1790 + %29 = load i64, ptr %28, align 8, !alias.scope !1790 + store i64 %29, ptr %0, align 8, !alias.scope !1790 + store i64 %.sroa.0.0.copyload.i.i, ptr %28, align 8, !alias.scope !1790 + %.not1.i11 = icmp ugt i64 %27, 1 + br i1 %.not1.i11, label %.lr.ph.i12, label %_ZN4core5slice4sort8unstable8heapsort9sift_down17h43bb4db940c3c020E.exit20 + +.lr.ph.i12: ; preds = %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17ha99a00d83310a069E.exit", %44 + %30 = phi i64 [ %46, %44 ], [ 1, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17ha99a00d83310a069E.exit" ] + %31 = phi i64 [ %45, %44 ], [ 0, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17ha99a00d83310a069E.exit" ] + %.sroa.0.02.i13 = phi i64 [ %.sroa.04.0.i14, %44 ], [ 0, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17ha99a00d83310a069E.exit" ] %32 = add nuw i64 %31, 2 - %33 = icmp ult i64 %32, %29 + %33 = icmp ult i64 %32, %27 br i1 %33, label %34, label %40 34: ; preds = %.lr.ph.i12 @@ -10639,18 +10636,12 @@ _ZN4core5slice4sort8unstable8heapsort9sift_down17h43bb4db940c3c020E.exit20.threa store i64 %.val.i15, ptr %42, align 8, !alias.scope !1802 %45 = shl i64 %.sroa.04.0.i14, 1 %46 = or disjoint i64 %45, 1 - %.not.i17 = icmp ult i64 %46, %29 + %.not.i17 = icmp ult i64 %46, %27 br i1 %.not.i17, label %.lr.ph.i12, label %_ZN4core5slice4sort8unstable8heapsort9sift_down17h43bb4db940c3c020E.exit20 -_ZN4core5slice4sort8unstable8heapsort9sift_down17h43bb4db940c3c020E.exit20: ; preds = %40, %44 - %47 = add i64 %29, -1 - %48 = getelementptr inbounds [0 x i64], ptr %0, i64 0, i64 %47 - %.sroa.0.0.copyload.i.i = load i64, ptr %0, align 8, !alias.scope !1790 - %49 = load i64, ptr %48, align 8, !alias.scope !1790 - store i64 %49, ptr %0, align 8, !alias.scope !1790 - store i64 %.sroa.0.0.copyload.i.i, ptr %48, align 8, !alias.scope !1790 - %.not1.i11 = icmp ugt i64 %47, 1 - br i1 %.not1.i11, label %.lr.ph.i12.preheader, label %_ZN4core5slice4sort8unstable8heapsort9sift_down17h43bb4db940c3c020E.exit20.thread +_ZN4core5slice4sort8unstable8heapsort9sift_down17h43bb4db940c3c020E.exit20: ; preds = %40, %44, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17ha99a00d83310a069E.exit" + %exitcond.not = icmp eq i64 %27, 1 + br i1 %exitcond.not, label %26, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17ha99a00d83310a069E.exit" } ; Function Attrs: inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read, inaccessiblemem: read) uwtable diff --git a/bench/zxing/optimized/ODDataBarExpandedBitDecoder.ll b/bench/zxing/optimized/ODDataBarExpandedBitDecoder.ll index c3338803e95..c041972a2cd 100644 --- a/bench/zxing/optimized/ODDataBarExpandedBitDecoder.ll +++ b/bench/zxing/optimized/ODDataBarExpandedBitDecoder.ll @@ -876,10 +876,10 @@ define linkonce_odr noundef i32 @_ZNK5ZXing12BitArrayView8peakBitsEi(ptr noundef %20 = zext i1 %19 to i32 %21 = shl i32 %.01011, 1 %22 = or disjoint i32 %21, %20 - %23 = add nsw i32 %.013, -1 + %23 = add i32 %.013, -1 %24 = getelementptr inbounds nuw i8, ptr %.sroa.0.012, i64 1 - %25 = icmp samesign ugt i32 %.013, 1 - br i1 %25, label %.lr.ph, label %._crit_edge, !llvm.loop !38 + %exitcond.not = icmp eq i32 %23, 0 + br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !38 } ; Function Attrs: mustprogress optsize uwtable From 83d6eb6f8f29138f9eef0cee86fe07f791730ef2 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 4 Jul 2025 10:19:37 +0000 Subject: [PATCH 3/3] pre-commit: Remap --- .../assimp/optimized/FindInstancesProcess.ll | 46 ++--- bench/bdwgc/optimized/gc.ll | 24 +-- bench/boost/optimized/ext.ll | 4 +- bench/box2d/optimized/sample_collision.ll | 32 ++-- bench/box2d/optimized/settings.ll | 14 +- bench/casadi/optimized/sundials_spgmr.ll | 26 +-- .../archive_read_support_format_rar.ll | 110 ++++++------ .../optimized/389ib4lq03w39x6a.ll | 158 +++++++++--------- bench/cpython/optimized/mathmodule.ll | 108 ++++++------ bench/csmith/optimized/Variable.ll | 140 ++++++++-------- bench/darktable/optimized/bauhaus.ll | 10 +- bench/darktable/optimized/curve_tools.ll | 16 +- bench/darktable/optimized/fp_dng.ll | 16 +- bench/duckdb/optimized/compile.ll | 30 ++-- .../optimized/src_backend_nodes_list.ll | 4 +- .../optimized/src_backend_parser_scan.ll | 80 ++++----- bench/eastl/optimized/EAScanfCore.ll | 36 ++-- bench/eastl/optimized/EATextUtil.ll | 120 ++++++------- bench/eastl/optimized/eathread_semaphore.ll | 74 ++++---- .../optimized/8zxt2gjt68ikxu18thf3foa45.ll | 8 +- bench/flac/optimized/lpc_intrin_sse2.ll | 52 +++--- bench/freetype/optimized/ftbitmap.ll | 72 ++++---- bench/freetype/optimized/raster.ll | 78 ++++----- bench/git/optimized/hex.ll | 16 +- bench/glslang/optimized/Pp.ll | 8 +- bench/graphviz/optimized/dtstat.ll | 42 ++--- bench/graphviz/optimized/lu.ll | 4 +- bench/graphviz/optimized/visibility.ll | 18 +- bench/harfbuzz/optimized/hb-subset-cff1.ll | 20 +-- bench/hdf5/optimized/h5tools.ll | 10 +- bench/hermes/optimized/Callable.ll | 10 +- bench/hermes/optimized/ItaniumDemangle.ll | 56 +++---- bench/hermes/optimized/MicrosoftDemangle.ll | 24 +-- bench/hermes/optimized/RegexParser.ll | 44 ++--- bench/jq/optimized/decNumber.ll | 110 ++++++------ bench/jq/optimized/regparse.ll | 40 ++--- bench/jsonnet/optimized/formatter.ll | 106 ++++++------ bench/libjpeg-turbo/optimized/jdphuff.ll | 64 +++---- bench/libpng/optimized/png.ll | 32 ++-- bench/libquic/optimized/pcy_tree.ll | 4 +- bench/libquic/optimized/shift.ll | 12 +- bench/libwebp/optimized/alpha_processing.ll | 58 +++---- .../optimized/backward_references_enc.ll | 158 +++++++++--------- .../optimized/drm_gem_framebuffer_helper.ll | 4 +- bench/linux/optimized/sg.ll | 12 +- bench/llvm/optimized/LoadStoreOpt.ll | 102 +++++------ bench/llvm/optimized/MicrosoftDemangle.ll | 28 ++-- bench/lua/optimized/llex.ll | 136 +++++++-------- bench/lua/optimized/ltablib.ll | 26 +-- bench/lua/optimized/lutf8lib.ll | 124 +++++++------- bench/lvgl/optimized/lv_buttonmatrix.ll | 36 ++-- bench/lvgl/optimized/lv_draw_sw_mask.ll | 116 ++++++------- bench/lvgl/optimized/lv_spinbox.ll | 124 +++++++------- bench/lz4/optimized/lz4hc.ll | 82 ++++----- .../optimized/1bqqlm3jtb9rf3cv.ll | 110 ++++++------ .../optimized/filter_color_projection.ll | 44 ++--- bench/minetest/optimized/mapgen.ll | 16 +- bench/mitsuba3/optimized/rgb2spec_opt.ll | 108 ++++++------ bench/msdfgen/optimized/Contour.ll | 14 +- bench/ncnn/optimized/caffe.pb.ll | 6 +- bench/ncnn/optimized/cpu.ll | 34 ++-- bench/ncnn/optimized/ncnnoptimize.ll | 32 ++-- bench/nix/optimized/app.ll | 12 +- bench/nuttx/optimized/lib_libvsprintf.ll | 122 +++++++------- bench/ocio/optimized/Lut1DOpData.ll | 80 ++++----- bench/ocio/optimized/Lut3DOpCPU.ll | 60 +++---- bench/openblas/optimized/dlalsa.ll | 60 +++---- bench/openblas/optimized/dlasrt.ll | 34 ++-- bench/openexr/optimized/internal_dwa.ll | 40 ++--- bench/openmpi/optimized/pmix_argv.ll | 56 +++---- bench/openspiel/optimized/backgammon.ll | 22 +-- bench/openspiel/optimized/rbc.ll | 8 +- bench/openusd/optimized/patchBuilder.ll | 12 +- bench/openusd/optimized/topologyDescriptor.ll | 18 +- .../optimized/animation_optimizer.ll | 28 ++-- bench/ozz-animation/optimized/jsoncpp.ll | 124 +++++++------- bench/pbrt-v4/optimized/integrators.ll | 22 +-- bench/php/optimized/plain_wrapper.ll | 78 ++++----- bench/php/optimized/zend_ssa.ll | 80 ++++----- bench/proj/optimized/pipeline.ll | 32 ++-- bench/protobuf/optimized/unknown_field_set.ll | 4 +- .../optimized/zero_copy_stream_impl_lite.ll | 62 +++---- bench/proxygen/optimized/HTTPHeaders.ll | 142 ++++++++-------- bench/raylib/optimized/rmodels.ll | 72 ++++---- bench/re2/optimized/compile.ll | 50 +++--- bench/re2/optimized/simplify.ll | 90 +++++----- .../optimized/DetourTileCache.ll | 8 +- bench/redis/optimized/linenoise.ll | 148 ++++++++-------- bench/redis/optimized/lvm.ll | 20 +-- .../optimized/pessimistic_transaction.ll | 18 +- bench/ruby/optimized/date_core.ll | 50 +++--- .../optimized/abz4enoi74elfoplai1nrzl05.ll | 4 +- .../optimized/4wjr9n8d5oomu43d.ll | 26 +-- bench/slurm/optimized/affinity.ll | 12 +- bench/slurm/optimized/node_scheduler.ll | 46 ++--- bench/stb/optimized/stb_tilemap_editor.ll | 100 +++++------ .../wireshark/optimized/packet-signal-pdu.ll | 4 +- bench/wireshark/optimized/tvbuff_lz77huff.ll | 12 +- .../optimized/test_messages_proto2.pb.ll | 146 ++++++++-------- bench/yosys/optimized/preproc.ll | 34 ++-- .../optimized/1cwzjnrfv3j054rlb5kbvkj4j.ll | 18 +- .../optimized/2qu3ksqe5t2g2a0ursek881ws.ll | 10 +- .../optimized/4h84anocrn0e2zexjpu5utgbx.ll | 12 +- .../optimized/ODDataBarExpandedBitDecoder.ll | 4 +- 104 files changed, 2614 insertions(+), 2614 deletions(-) diff --git a/bench/assimp/optimized/FindInstancesProcess.ll b/bench/assimp/optimized/FindInstancesProcess.ll index 58491c37c9d..ef0e457de7e 100644 --- a/bench/assimp/optimized/FindInstancesProcess.ll +++ b/bench/assimp/optimized/FindInstancesProcess.ll @@ -398,11 +398,11 @@ define hidden void @_ZN6Assimp20FindInstancesProcess7ExecuteEP7aiScene(ptr nound 18: ; preds = %.lr.ph319, %338 %19 = phi ptr [ %.pre, %.lr.ph319 ], [ %332, %338 ] - %indvars.iv370 = phi i64 [ 0, %.lr.ph319 ], [ %indvars.iv.next371, %338 ] + %indvars.iv369 = phi i64 [ 0, %.lr.ph319 ], [ %indvars.iv.next370, %338 ] %indvars.iv364 = phi i32 [ -1, %.lr.ph319 ], [ %indvars.iv.next365, %338 ] %.0146318 = phi i32 [ 0, %.lr.ph319 ], [ %.1147, %338 ] %20 = zext i32 %indvars.iv364 to i64 - %21 = getelementptr inbounds nuw ptr, ptr %19, i64 %indvars.iv370 + %21 = getelementptr inbounds nuw ptr, ptr %19, i64 %indvars.iv369 %22 = load ptr, ptr %21, align 8 %23 = invoke noundef i32 @_ZN6Assimp20GetMeshVFormatUniqueEPK6aiMesh(ptr noundef %22) to label %24 unwind label %59 @@ -429,14 +429,14 @@ define hidden void @_ZN6Assimp20FindInstancesProcess7ExecuteEP7aiScene(ptr nound %43 = xor i32 %40, %42 %44 = zext i32 %43 to i64 %45 = or disjoint i64 %26, %44 - %46 = getelementptr inbounds nuw i64, ptr %10, i64 %indvars.iv370 + %46 = getelementptr inbounds nuw i64, ptr %10, i64 %indvars.iv369 store i64 %45, ptr %46, align 8 %47 = invoke noundef float @_ZN6Assimp22ComputePositionEpsilonEPK6aiMesh(ptr noundef nonnull %22) to label %48 unwind label %61 48: ; preds = %24 %49 = fmul float %47, %47 - %50 = trunc nuw i64 %indvars.iv370 to i32 + %50 = trunc nuw i64 %indvars.iv369 to i32 %.0155313 = add i32 %50, -1 %51 = icmp sgt i32 %.0155313, -1 br i1 %51, label %.lr.ph316, label %.loopexit @@ -748,7 +748,7 @@ _ZNK6aiMesh16GetNumUVChannelsEv.exit.preheader: ; preds = %199 _ZN6Assimp13CompareArraysEPK10aiVector3tIfES3_jf.exit218.thread: ; preds = %228, %207, %204 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count - br i1 %exitcond.not, label %_ZN6Assimp13CompareArraysEPK10aiVector3tIfES3_jf.exit218.thread373, label %204, !llvm.loop !10 + br i1 %exitcond.not, label %_ZN6Assimp13CompareArraysEPK10aiVector3tIfES3_jf.exit218.thread372, label %204, !llvm.loop !10 _ZN6Assimp13CompareArraysEPK10aiVector3tIfES3_jf.exit218.loopexit: ; preds = %.lr.ph.i213 %231 = trunc nuw i64 %indvars.iv to i32 @@ -757,13 +757,13 @@ _ZN6Assimp13CompareArraysEPK10aiVector3tIfES3_jf.exit218.loopexit: ; preds = %.l _ZN6Assimp13CompareArraysEPK10aiVector3tIfES3_jf.exit218: ; preds = %_ZN6Assimp13CompareArraysEPK10aiVector3tIfES3_jf.exit218.loopexit, %_ZNK6aiMesh16GetNumUVChannelsEv.exit.preheader %.0150285 = phi i32 [ 0, %_ZNK6aiMesh16GetNumUVChannelsEv.exit.preheader ], [ %231, %_ZN6Assimp13CompareArraysEPK10aiVector3tIfES3_jf.exit218.loopexit ] %.not170 = icmp eq i32 %.0150285, %spec.select.i - br i1 %.not170, label %_ZN6Assimp13CompareArraysEPK10aiVector3tIfES3_jf.exit218.thread373, label %_ZN6Assimp13CompareArraysEPK10aiVector3tIfES3_jf.exit.thread269 + br i1 %.not170, label %_ZN6Assimp13CompareArraysEPK10aiVector3tIfES3_jf.exit218.thread372, label %_ZN6Assimp13CompareArraysEPK10aiVector3tIfES3_jf.exit.thread269 -_ZN6Assimp13CompareArraysEPK10aiVector3tIfES3_jf.exit218.thread373: ; preds = %_ZN6Assimp13CompareArraysEPK10aiVector3tIfES3_jf.exit218.thread, %_ZN6Assimp13CompareArraysEPK10aiVector3tIfES3_jf.exit218 +_ZN6Assimp13CompareArraysEPK10aiVector3tIfES3_jf.exit218.thread372: ; preds = %_ZN6Assimp13CompareArraysEPK10aiVector3tIfES3_jf.exit218.thread, %_ZN6Assimp13CompareArraysEPK10aiVector3tIfES3_jf.exit218 %232 = getelementptr inbounds nuw i8, ptr %71, i64 48 br label %233 -233: ; preds = %236, %_ZN6Assimp13CompareArraysEPK10aiVector3tIfES3_jf.exit218.thread373 +233: ; preds = %236, %_ZN6Assimp13CompareArraysEPK10aiVector3tIfES3_jf.exit218.thread372 %indvars.iv.i219 = phi i64 [ 0, %_ZN6Assimp13CompareArraysEPK10aiVector3tIfES3_jf.exit218.thread373 ], [ %indvars.iv.next.i221, %236 ] %234 = getelementptr inbounds nuw [8 x ptr], ptr %232, i64 0, i64 %indvars.iv.i219 %235 = load ptr, ptr %234, align 8 @@ -781,11 +781,11 @@ _ZNK6aiMesh19GetNumColorChannelsEv.exit: ; preds = %233 br i1 %.not329, label %_ZN6Assimp13CompareArraysEPK9aiColor4tIfES3_jf.exit, label %.lr.ph303 .lr.ph303: ; preds = %236, %_ZNK6aiMesh19GetNumColorChannelsEv.exit - %.0.lcssa.i378 = phi i32 [ %237, %_ZNK6aiMesh19GetNumColorChannelsEv.exit ], [ 8, %236 ] + %.0.lcssa.i377 = phi i32 [ %237, %_ZNK6aiMesh19GetNumColorChannelsEv.exit ], [ 8, %236 ] %238 = zext i32 %82 to i64 %.idx.i223 = shl nuw nsw i64 %238, 4 %.not13.i224 = icmp eq i32 %82, 0 - %wide.trip.count353 = zext i32 %.0.lcssa.i378 to i64 + %wide.trip.count353 = zext i32 %.0.lcssa.i377 to i64 br label %239 239: ; preds = %.lr.ph303, %_ZN6Assimp13CompareArraysEPK9aiColor4tIfES3_jf.exit.thread @@ -841,24 +841,24 @@ _ZNK6aiMesh19GetNumColorChannelsEv.exit: ; preds = %233 _ZN6Assimp13CompareArraysEPK9aiColor4tIfES3_jf.exit.thread: ; preds = %269, %242, %239 %indvars.iv.next351 = add nuw nsw i64 %indvars.iv350, 1 %exitcond354.not = icmp eq i64 %indvars.iv.next351, %wide.trip.count353 - br i1 %exitcond354.not, label %_ZN6Assimp13CompareArraysEPK9aiColor4tIfES3_jf.exit.thread380, label %239, !llvm.loop !13 + br i1 %exitcond354.not, label %_ZN6Assimp13CompareArraysEPK9aiColor4tIfES3_jf.exit.thread379, label %239, !llvm.loop !13 _ZN6Assimp13CompareArraysEPK9aiColor4tIfES3_jf.exit.loopexit: ; preds = %.lr.ph.i225 %272 = trunc nuw nsw i64 %indvars.iv350 to i32 br label %_ZN6Assimp13CompareArraysEPK9aiColor4tIfES3_jf.exit _ZN6Assimp13CompareArraysEPK9aiColor4tIfES3_jf.exit: ; preds = %_ZN6Assimp13CompareArraysEPK9aiColor4tIfES3_jf.exit.loopexit, %_ZNK6aiMesh19GetNumColorChannelsEv.exit - %.0.lcssa.i379 = phi i32 [ 0, %_ZNK6aiMesh19GetNumColorChannelsEv.exit ], [ %.0.lcssa.i378, %_ZN6Assimp13CompareArraysEPK9aiColor4tIfES3_jf.exit.loopexit ] + %.0.lcssa.i378 = phi i32 [ 0, %_ZNK6aiMesh19GetNumColorChannelsEv.exit ], [ %.0.lcssa.i377, %_ZN6Assimp13CompareArraysEPK9aiColor4tIfES3_jf.exit.loopexit ] %.0148288 = phi i32 [ 0, %_ZNK6aiMesh19GetNumColorChannelsEv.exit ], [ %272, %_ZN6Assimp13CompareArraysEPK9aiColor4tIfES3_jf.exit.loopexit ] - %.not172 = icmp eq i32 %.0148288, %.0.lcssa.i379 - br i1 %.not172, label %_ZN6Assimp13CompareArraysEPK9aiColor4tIfES3_jf.exit.thread380, label %_ZN6Assimp13CompareArraysEPK10aiVector3tIfES3_jf.exit.thread269 + %.not172 = icmp eq i32 %.0148288, %.0.lcssa.i378 + br i1 %.not172, label %_ZN6Assimp13CompareArraysEPK9aiColor4tIfES3_jf.exit.thread379, label %_ZN6Assimp13CompareArraysEPK10aiVector3tIfES3_jf.exit.thread269 -_ZN6Assimp13CompareArraysEPK9aiColor4tIfES3_jf.exit.thread380: ; preds = %_ZN6Assimp13CompareArraysEPK9aiColor4tIfES3_jf.exit.thread, %_ZN6Assimp13CompareArraysEPK9aiColor4tIfES3_jf.exit +_ZN6Assimp13CompareArraysEPK9aiColor4tIfES3_jf.exit.thread379: ; preds = %_ZN6Assimp13CompareArraysEPK9aiColor4tIfES3_jf.exit.thread, %_ZN6Assimp13CompareArraysEPK9aiColor4tIfES3_jf.exit %273 = load i8, ptr %14, align 8, !range !14, !noundef !15 %274 = trunc nuw i8 %273 to i1 br i1 %274, label %_ZN6Assimp13CompareArraysEPK10aiVector3tIfES3_jf.exit.thread272, label %275 -275: ; preds = %_ZN6Assimp13CompareArraysEPK9aiColor4tIfES3_jf.exit.thread380 +275: ; preds = %_ZN6Assimp13CompareArraysEPK9aiColor4tIfES3_jf.exit.thread379 %276 = tail call noundef zeroext i1 @_Z12CompareBonesPK6aiMeshS1_(ptr noundef nonnull %71, ptr noundef nonnull %22) br i1 %276, label %277, label %_ZN6Assimp13CompareArraysEPK10aiVector3tIfES3_jf.exit.thread269 @@ -965,15 +965,15 @@ _ZNSt10unique_ptrIA_jSt14default_deleteIS0_EED2Ev.exit235: ; preds = %281 %325 = icmp samesign ult i64 %indvars.iv.next359, %324 br i1 %325, label %317, label %._crit_edge310, !llvm.loop !18 -_ZN6Assimp13CompareArraysEPK10aiVector3tIfES3_jf.exit.thread272: ; preds = %_ZN6Assimp13CompareArraysEPK9aiColor4tIfES3_jf.exit.thread380, %_ZNSt10unique_ptrIA_jSt14default_deleteIS0_EED2Ev.exit232 +_ZN6Assimp13CompareArraysEPK10aiVector3tIfES3_jf.exit.thread272: ; preds = %_ZN6Assimp13CompareArraysEPK9aiColor4tIfES3_jf.exit.thread379, %_ZNSt10unique_ptrIA_jSt14default_deleteIS0_EED2Ev.exit232 %326 = getelementptr inbounds nuw i32, ptr %12, i64 %indvars.iv366 %327 = load i32, ptr %326, align 4 - %328 = getelementptr inbounds nuw i32, ptr %12, i64 %indvars.iv370 + %328 = getelementptr inbounds nuw i32, ptr %12, i64 %indvars.iv369 store i32 %327, ptr %328, align 4 tail call void @_ZN6aiMeshD2Ev(ptr noundef nonnull align 8 dereferenceable(1320) %22) #21 tail call void @_ZdlPvm(ptr noundef %22, i64 noundef 1320) #23 %329 = load ptr, ptr %13, align 8 - %330 = getelementptr inbounds nuw ptr, ptr %329, i64 %indvars.iv370 + %330 = getelementptr inbounds nuw ptr, ptr %329, i64 %indvars.iv369 store ptr null, ptr %330, align 8 br label %.loopexit @@ -985,23 +985,23 @@ _ZN6Assimp13CompareArraysEPK10aiVector3tIfES3_jf.exit.thread269: ; preds = %.lr. .loopexit: ; preds = %_ZN6Assimp13CompareArraysEPK10aiVector3tIfES3_jf.exit.thread269, %48, %_ZN6Assimp13CompareArraysEPK10aiVector3tIfES3_jf.exit.thread272 %332 = load ptr, ptr %13, align 8 - %333 = getelementptr inbounds nuw ptr, ptr %332, i64 %indvars.iv370 + %333 = getelementptr inbounds nuw ptr, ptr %332, i64 %indvars.iv369 %334 = load ptr, ptr %333, align 8 %.not180 = icmp eq ptr %334, null br i1 %.not180, label %338, label %335 335: ; preds = %.loopexit %336 = add i32 %.0146318, 1 - %337 = getelementptr inbounds nuw i32, ptr %12, i64 %indvars.iv370 + %337 = getelementptr inbounds nuw i32, ptr %12, i64 %indvars.iv369 store i32 %.0146318, ptr %337, align 4 br label %338 338: ; preds = %335, %.loopexit %.1147 = phi i32 [ %336, %335 ], [ %.0146318, %.loopexit ] - %indvars.iv.next371 = add nuw nsw i64 %indvars.iv370, 1 + %indvars.iv.next370 = add nuw nsw i64 %indvars.iv369, 1 %339 = load i32, ptr %5, align 8 %340 = zext i32 %339 to i64 - %341 = icmp samesign ult i64 %indvars.iv.next371, %340 + %341 = icmp samesign ult i64 %indvars.iv.next370, %340 %indvars.iv.next365 = add i32 %indvars.iv364, 1 br i1 %341, label %18, label %._crit_edge320, !llvm.loop !20 diff --git a/bench/bdwgc/optimized/gc.ll b/bench/bdwgc/optimized/gc.ll index 76c7c70d39a..abe4615d848 100644 --- a/bench/bdwgc/optimized/gc.ll +++ b/bench/bdwgc/optimized/gc.ll @@ -17070,7 +17070,7 @@ GC_next_exclusion.exit: ; preds = %._crit_edge.i.threa 27: ; preds = %25 store ptr %0, ptr %20, align 8, !tbaa !235 - br label %43 + br label %44 GC_next_exclusion.exit.thread: ; preds = %._crit_edge.i %28 = icmp ugt i64 %3, 511 @@ -17099,20 +17099,20 @@ GC_next_exclusion.exit.thread: ; preds = %._crit_edge.i %38 = add nsw i64 %.040, -1 %39 = getelementptr inbounds nuw [512 x %struct.exclusion], ptr getelementptr inbounds nuw (i8, ptr @GC_arrays, i64 158224), i64 0, i64 %38 tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %37, ptr noundef nonnull align 8 dereferenceable(16) %39, i64 16, i1 false), !tbaa.struct !236 - %exitcond.not = icmp eq i64 %38, %35 - br i1 %exitcond.not, label %GC_next_exclusion.exit.thread.thread, label %.lr.ph, !llvm.loop !237 + %40 = icmp eq i64 %38, %35 + br i1 %40, label %GC_next_exclusion.exit.thread.thread, label %.lr.ph, !llvm.loop !237 GC_next_exclusion.exit.thread.thread: ; preds = %.lr.ph, %32, %._crit_edge.i.thread, %2, %GC_next_exclusion.exit.thread %.019 = phi i64 [ %3, %GC_next_exclusion.exit.thread ], [ 0, %2 ], [ 1, %._crit_edge.i.thread ], [ %35, %32 ], [ %35, %.lr.ph ] - %40 = getelementptr inbounds nuw [512 x %struct.exclusion], ptr getelementptr inbounds nuw (i8, ptr @GC_arrays, i64 158224), i64 0, i64 %.019 - store ptr %0, ptr %40, align 8, !tbaa !235 - %41 = getelementptr inbounds nuw i8, ptr %40, i64 8 - store ptr %1, ptr %41, align 8, !tbaa !232 - %42 = add nuw nsw i64 %3, 1 - store i64 %42, ptr getelementptr inbounds nuw (i8, ptr @GC_arrays, i64 424), align 8, !tbaa !231 - br label %43 + %41 = getelementptr inbounds nuw [512 x %struct.exclusion], ptr getelementptr inbounds nuw (i8, ptr @GC_arrays, i64 158224), i64 0, i64 %.019 + store ptr %0, ptr %41, align 8, !tbaa !235 + %42 = getelementptr inbounds nuw i8, ptr %41, i64 8 + store ptr %1, ptr %42, align 8, !tbaa !232 + %43 = add nuw nsw i64 %3, 1 + store i64 %43, ptr getelementptr inbounds nuw (i8, ptr @GC_arrays, i64 424), align 8, !tbaa !231 + br label %44 -43: ; preds = %GC_next_exclusion.exit.thread.thread, %27 +44: ; preds = %GC_next_exclusion.exit.thread.thread, %27 ret void } @@ -37456,7 +37456,7 @@ define internal range(i32 0, 2) i32 @GC_register_dynlib_callback(ptr noundef rea 86: ; preds = %83 %87 = and i64 %indvars.iv.next, 4294967295 - %exitcond.not = icmp eq i64 %87, 0 + %40 = icmp eq i64 %87, 0 br i1 %exitcond.not, label %.loopexit, label %.lr.ph65, !llvm.loop !488 .loopexit: ; preds = %86, %.thread, %54, %80, %78, %.lr.ph69 diff --git a/bench/boost/optimized/ext.ll b/bench/boost/optimized/ext.ll index 9de83b3d477..ebf88a5b50a 100644 --- a/bench/boost/optimized/ext.ll +++ b/bench/boost/optimized/ext.ll @@ -25298,8 +25298,8 @@ _ZN5boost4asio6detail8op_queueINS1_10reactor_opEE3popEv.exit: ; preds = %47, %41 .thread: ; preds = %_ZN5boost4asio6detail10reactor_op7performEv.exit, %35, %50, %26 %indvars.iv.next = add nsw i64 %indvars.iv, -1 - %exitcond.not = icmp eq i64 %indvars.iv, 0 - br i1 %exitcond.not, label %18, label %26, !llvm.loop !627 + %.not34 = icmp eq i64 %indvars.iv, 0 + br i1 %.not34, label %18, label %26, !llvm.loop !627 _ZN5boost4asio6detail8op_queueINS1_19scheduler_operationEE3popEv.exit: ; preds = %25, %18 br i1 %11, label %53, label %_ZN5boost4asio6detail27conditionally_enabled_mutex11scoped_lockD2Ev.exit diff --git a/bench/box2d/optimized/sample_collision.ll b/bench/box2d/optimized/sample_collision.ll index 5e5ef6802ae..5af3efa7130 100644 --- a/bench/box2d/optimized/sample_collision.ll +++ b/bench/box2d/optimized/sample_collision.ll @@ -5048,7 +5048,7 @@ define internal noundef float @_ZL21RayCastSortedCallback9b2ShapeId6b2Vec2S0_fPv %8 = getelementptr inbounds nuw i8, ptr %6, i64 4 %9 = load i8, ptr %8, align 4, !tbaa !201, !range !13, !noundef !14 %10 = trunc nuw i8 %9 to i1 - br i1 %10, label %44, label %11 + br i1 %10, label %48, label %11 11: ; preds = %7, %5 %12 = getelementptr inbounds nuw i8, ptr %4, i64 60 @@ -5081,19 +5081,19 @@ define internal noundef float @_ZL21RayCastSortedCallback9b2ShapeId6b2Vec2S0_fPv br label %._crit_edge .lr.ph: ; preds = %19, %.preheader - %.15355 = phi i64 [ %indvars.iv, %.preheader ], [ 0, %19 ] - %24 = getelementptr inbounds nuw i8, ptr %4, i64 24 - %wide.trip.count = and i64 %.15355, 4294967295 + %.15356 = phi i64 [ %indvars.iv, %.preheader ], [ 0, %19 ] + %25 = getelementptr inbounds nuw i8, ptr %4, i64 24 + %wide.trip.count = and i64 %.15356, 4294967295 br label %32 ._crit_edge: ; preds = %32, %.preheader.._crit_edge_crit_edge - %.pre-phi = phi i64 [ %.pre, %.preheader.._crit_edge_crit_edge ], [ %wide.trip.count, %32 ] - %25 = getelementptr inbounds nuw [3 x %struct.b2Vec2], ptr %4, i64 0, i64 %.pre-phi + %.15355 = phi i64 [ %.pre, %.preheader.._crit_edge_crit_edge ], [ %wide.trip.count, %32 ] + %25 = getelementptr inbounds nuw [3 x %struct.b2Vec2], ptr %4, i64 0, i64 %.15355 store <2 x float> %1, ptr %25, align 4 %26 = getelementptr inbounds nuw i8, ptr %4, i64 24 - %27 = getelementptr inbounds nuw [3 x %struct.b2Vec2], ptr %26, i64 0, i64 %.pre-phi - store <2 x float> %2, ptr %27, align 4 - %28 = getelementptr inbounds nuw [3 x float], ptr %14, i64 0, i64 %.pre-phi + %29 = getelementptr inbounds nuw [3 x %struct.b2Vec2], ptr %26, i64 0, i64 %.15355 + store <2 x float> %2, ptr %29, align 4 + %28 = getelementptr inbounds nuw [3 x float], ptr %14, i64 0, i64 %.15355 store float %3, ptr %28, align 4, !tbaa !15 %29 = tail call i32 @llvm.smin.i32(i32 %13, i32 2) %30 = add nsw i32 %29, 1 @@ -5104,8 +5104,8 @@ define internal noundef float @_ZL21RayCastSortedCallback9b2ShapeId6b2Vec2S0_fPv 32: ; preds = %.lr.ph, %32 %indvars.iv49 = phi i64 [ 2, %.lr.ph ], [ %indvars.iv.next50, %32 ] %indvars.iv.next50 = add nsw i64 %indvars.iv49, -1 - %33 = getelementptr inbounds nuw [3 x %struct.b2Vec2], ptr %4, i64 0, i64 %indvars.iv.next50 - %34 = getelementptr inbounds nuw [3 x %struct.b2Vec2], ptr %4, i64 0, i64 %indvars.iv49 + %36 = getelementptr inbounds nuw [3 x %struct.b2Vec2], ptr %4, i64 0, i64 %indvars.iv.next50 + %37 = getelementptr inbounds nuw [3 x %struct.b2Vec2], ptr %4, i64 0, i64 %indvars.iv49 %35 = load i64, ptr %33, align 4 store i64 %35, ptr %34, align 4 %36 = getelementptr inbounds nuw [3 x %struct.b2Vec2], ptr %24, i64 0, i64 %indvars.iv.next50 @@ -5120,12 +5120,12 @@ define internal noundef float @_ZL21RayCastSortedCallback9b2ShapeId6b2Vec2S0_fPv br i1 %exitcond.not, label %._crit_edge, label %32, !llvm.loop !230 .sink.split: ; preds = %._crit_edge, %21 - %42 = getelementptr inbounds nuw i8, ptr %4, i64 56 - %43 = load float, ptr %42, align 4, !tbaa !15 - br label %44 + %46 = getelementptr inbounds nuw i8, ptr %4, i64 56 + %47 = load float, ptr %46, align 4, !tbaa !15 + br label %48 -44: ; preds = %.sink.split, %._crit_edge, %7 - %.042 = phi float [ -1.000000e+00, %7 ], [ 1.000000e+00, %._crit_edge ], [ %43, %.sink.split ] +48: ; preds = %.sink.split, %._crit_edge, %7 + %.042 = phi float [ -1.000000e+00, %7 ], [ 1.000000e+00, %._crit_edge ], [ %47, %.sink.split ] ret float %.042 } diff --git a/bench/box2d/optimized/settings.ll b/bench/box2d/optimized/settings.ll index 3fd6bc6e4d5..a5c85f1472c 100644 --- a/bench/box2d/optimized/settings.ll +++ b/bench/box2d/optimized/settings.ll @@ -171,8 +171,8 @@ _ZL16jsmn_alloc_tokenP11jsmn_parserP7jsmntokm.exit: ; preds = %21 br label %.lr.ph208 .lr.ph208: ; preds = %.lr.ph208.preheader, %71 - %indvars.iv251 = phi i64 [ %61, %.lr.ph208.preheader ], [ %indvars.iv.next252, %71 ] - %62 = getelementptr inbounds nuw %struct.jsmntok, ptr %3, i64 %indvars.iv251 + %indvars.iv249 = phi i64 [ %61, %.lr.ph208.preheader ], [ %indvars.iv.next250, %71 ] + %62 = getelementptr inbounds nuw %struct.jsmntok, ptr %3, i64 %indvars.iv249 %63 = getelementptr inbounds nuw i8, ptr %62, i64 4 %64 = load i32, ptr %63, align 4, !tbaa !17 %.not138 = icmp eq i32 %64, -1 @@ -185,12 +185,12 @@ _ZL16jsmn_alloc_tokenP11jsmn_parserP7jsmntokm.exit: ; preds = %21 br i1 %68, label %69, label %71 69: ; preds = %65 - %70 = trunc nuw nsw i64 %indvars.iv251 to i32 + %70 = trunc nuw nsw i64 %indvars.iv249 to i32 store i32 %70, ptr %10, align 4, !tbaa !15 br label %.loopexit 71: ; preds = %.lr.ph208, %65 - %indvars.iv.next252 = add nsw i64 %indvars.iv251, -1 + %indvars.iv.next250 = add nsw i64 %indvars.iv249, -1 %72 = and i64 %indvars.iv.next252, 4294967295 %exitcond255.not = icmp eq i64 %72, 4294967295 br i1 %exitcond255.not, label %.loopexit, label %.lr.ph208, !llvm.loop !20 @@ -488,8 +488,8 @@ _ZL17jsmn_parse_stringP11jsmn_parserPKcmP7jsmntokm.exit: ; preds = %82 br label %.lr.ph219 .lr.ph219: ; preds = %.lr.ph219.preheader, %193 - %indvars.iv256 = phi i64 [ %185, %.lr.ph219.preheader ], [ %indvars.iv.next257, %193 ] - %186 = getelementptr inbounds nuw %struct.jsmntok, ptr %3, i64 %indvars.iv256 + %indvars.iv252 = phi i64 [ %185, %.lr.ph219.preheader ], [ %indvars.iv.next253, %193 ] + %186 = getelementptr inbounds nuw %struct.jsmntok, ptr %3, i64 %indvars.iv252 %187 = getelementptr inbounds nuw i8, ptr %186, i64 4 %188 = load i32, ptr %187, align 4, !tbaa !17 %.not130 = icmp eq i32 %188, -1 @@ -502,7 +502,7 @@ _ZL17jsmn_parse_stringP11jsmn_parserPKcmP7jsmntokm.exit: ; preds = %82 br i1 %192, label %_ZL16jsmn_alloc_tokenP11jsmn_parserP7jsmntokm.exit.thread, label %193 193: ; preds = %.lr.ph219, %189 - %indvars.iv.next257 = add nsw i64 %indvars.iv256, -1 + %indvars.iv.next253 = add nsw i64 %indvars.iv252, -1 %194 = and i64 %indvars.iv.next257, 4294967295 %exitcond260.not = icmp eq i64 %194, 4294967295 br i1 %exitcond260.not, label %_ZL16jsmn_alloc_tokenP11jsmn_parserP7jsmntokm.exit.thread, label %.lr.ph219, !llvm.loop !26 diff --git a/bench/casadi/optimized/sundials_spgmr.ll b/bench/casadi/optimized/sundials_spgmr.ll index e092854152c..a5420d4bebc 100644 --- a/bench/casadi/optimized/sundials_spgmr.ll +++ b/bench/casadi/optimized/sundials_spgmr.ll @@ -619,18 +619,18 @@ define range(i32 -5, 6) i32 @SpgmrSolve(ptr noundef readonly captures(address_is .lr.ph358.preheader: ; preds = %._crit_edge353.thread, %._crit_edge353 %170 = phi double [ %169, %._crit_edge353.thread ], [ %.0270366, %._crit_edge353 ] %171 = add nuw i32 %.2, 1 - %wide.trip.count411 = zext i32 %171 to i64 + %wide.trip.count410 = zext i32 %171 to i64 br label %.lr.ph358 .lr.ph358: ; preds = %.lr.ph358.preheader, %.lr.ph358 - %indvars.iv407 = phi i64 [ 0, %.lr.ph358.preheader ], [ %indvars.iv.next408, %.lr.ph358 ] - %172 = getelementptr inbounds nuw double, ptr %29, i64 %indvars.iv407 + %indvars.iv406 = phi i64 [ 0, %.lr.ph358.preheader ], [ %indvars.iv.next407, %.lr.ph358 ] + %172 = getelementptr inbounds nuw double, ptr %29, i64 %indvars.iv406 %173 = load double, ptr %172, align 8, !tbaa !30 %174 = fmul double %170, %173 store double %174, ptr %172, align 8, !tbaa !30 - %indvars.iv.next408 = add nuw nsw i64 %indvars.iv407, 1 - %exitcond412.not = icmp eq i64 %indvars.iv.next408, %wide.trip.count411 - br i1 %exitcond412.not, label %._crit_edge359, label %.lr.ph358, !llvm.loop !36 + %indvars.iv.next407 = add nuw nsw i64 %indvars.iv406, 1 + %exitcond411.not = icmp eq i64 %indvars.iv.next407, %wide.trip.count410 + br i1 %exitcond411.not, label %._crit_edge359, label %.lr.ph358, !llvm.loop !36 ._crit_edge359: ; preds = %.lr.ph358, %._crit_edge353 %175 = phi double [ %.0270366, %._crit_edge353 ], [ %170, %.lr.ph358 ] @@ -642,20 +642,20 @@ define range(i32 -5, 6) i32 @SpgmrSolve(ptr noundef readonly captures(address_is .lr.ph363.preheader: ; preds = %._crit_edge359 %179 = add nuw i32 %.2, 1 - %wide.trip.count417 = zext i32 %179 to i64 + %wide.trip.count416 = zext i32 %179 to i64 br label %.lr.ph363 .lr.ph363: ; preds = %.lr.ph363.preheader, %.lr.ph363 - %indvars.iv413 = phi i64 [ 1, %.lr.ph363.preheader ], [ %indvars.iv.next414, %.lr.ph363 ] - %180 = getelementptr inbounds nuw double, ptr %29, i64 %indvars.iv413 + %indvars.iv412 = phi i64 [ 1, %.lr.ph363.preheader ], [ %indvars.iv.next413, %.lr.ph363 ] + %180 = getelementptr inbounds nuw double, ptr %29, i64 %indvars.iv412 %181 = load double, ptr %180, align 8, !tbaa !30 - %182 = getelementptr inbounds nuw ptr, ptr %21, i64 %indvars.iv413 + %182 = getelementptr inbounds nuw ptr, ptr %21, i64 %indvars.iv412 %183 = load ptr, ptr %182, align 8, !tbaa !29 %184 = load ptr, ptr %21, align 8, !tbaa !29 tail call void @N_VLinearSum(double noundef %181, ptr noundef %183, double noundef 1.000000e+00, ptr noundef %184, ptr noundef %184) #6 - %indvars.iv.next414 = add nuw nsw i64 %indvars.iv413, 1 - %exitcond418.not = icmp eq i64 %indvars.iv.next414, %wide.trip.count417 - br i1 %exitcond418.not, label %._crit_edge364, label %.lr.ph363, !llvm.loop !37 + %indvars.iv.next413 = add nuw nsw i64 %indvars.iv412, 1 + %exitcond417.not = icmp eq i64 %indvars.iv.next413, %wide.trip.count416 + br i1 %exitcond417.not, label %._crit_edge364, label %.lr.ph363, !llvm.loop !37 ._crit_edge364: ; preds = %.lr.ph363, %._crit_edge359 %185 = add nuw nsw i32 %.0368, 1 diff --git a/bench/cmake/optimized/archive_read_support_format_rar.ll b/bench/cmake/optimized/archive_read_support_format_rar.ll index c5e0ee97b45..41febac725c 100644 --- a/bench/cmake/optimized/archive_read_support_format_rar.ll +++ b/bench/cmake/optimized/archive_read_support_format_rar.ll @@ -2442,8 +2442,8 @@ define internal fastcc range(i32 -1, 1) i32 @read_exttime(ptr noundef nonnull re 85: ; preds = %.thread, %28, %82, %84, %83, %80 %.3 = phi ptr [ %.2.lcssa, %80 ], [ %.2.lcssa, %82 ], [ %.2.lcssa, %83 ], [ %.2.lcssa, %84 ], [ %.04661, %28 ], [ %.04661, %.thread ] %86 = add nsw i32 %.04760, -1 - %exitcond65.not = icmp eq i32 %.04760, 0 - br i1 %exitcond65.not, label %.loopexit, label %26, !llvm.loop !157 + %.not65 = icmp eq i32 %.04760, 0 + br i1 %.not65, label %.loopexit, label %26, !llvm.loop !157 .loopexit: ; preds = %85, %54, %.thread69, %3 %.0 = phi i32 [ -1, %3 ], [ 0, %85 ], [ -1, %54 ], [ -1, %.thread69 ] @@ -2648,11 +2648,11 @@ define internal fastcc range(i32 -30, 2) i32 @read_data_compressed(ptr noundef % %36 = getelementptr i8, ptr %13, i64 864 %37 = getelementptr i8, ptr %13, i64 856 %38 = load i8, ptr %14, align 8, !tbaa !142 - %.not482 = icmp eq i8 %38, 0 - br i1 %.not482, label %.loopexit, label %.lr.ph + %.not483 = icmp eq i8 %38, 0 + br i1 %.not483, label %.loopexit, label %.lr.ph .lr.ph: ; preds = %10, %.backedge - %.0190483 = phi i32 [ %.0190.be, %.backedge ], [ 0, %10 ] + %.0190484 = phi i32 [ %.0190.be, %.backedge ], [ 0, %10 ] %39 = load i64, ptr %15, align 8, !tbaa !160 %.not213 = icmp eq i64 %39, 0 br i1 %.not213, label %64, label %40 @@ -3024,7 +3024,7 @@ rar_br_preparation.exit: ; preds = %221 br label %.loopexit rar_br_preparation.exit.thread: ; preds = %215, %227, %224, %213 - %.3 = phi i32 [ %.0190483, %213 ], [ 0, %224 ], [ 0, %227 ], [ 0, %215 ] + %.3 = phi i32 [ %.0190484, %213 ], [ 0, %224 ], [ 0, %227 ], [ 0, %215 ] %229 = load i8, ptr %30, align 8, !tbaa !73 %.not222 = icmp eq i8 %229, 0 br i1 %.not222, label %233, label %230 @@ -3115,8 +3115,8 @@ rar_br_preparation.exit.thread: ; preds = %215, %227, %224, %2 %264 = shl i32 %259, %263 %265 = or i32 %264, %.0188339 %266 = add nsw i32 %.0340, -1 - %exitcond.not = icmp eq i32 %.0340, 0 - br i1 %exitcond.not, label %267, label %.preheader, !llvm.loop !183 + %.not387 = icmp eq i32 %.0340, 0 + br i1 %.not387, label %267, label %.preheader, !llvm.loop !183 267: ; preds = %262 %268 = tail call i32 %31(ptr noundef nonnull %32, ptr noundef nonnull %33) #19 @@ -3319,10 +3319,10 @@ rar_br_preparation.exit.thread: ; preds = %215, %227, %224, %2 .sink.split: ; preds = %._crit_edge.loopexit.i, %._crit_edge.loopexit.i250, %329, %241 %.sink = phi i64 [ %249, %241 ], [ %337, %329 ], [ %328, %._crit_edge.loopexit.i250 ], [ %297, %._crit_edge.loopexit.i ] - %.sink435 = phi i64 [ 1, %241 ], [ 1, %329 ], [ %327, %._crit_edge.loopexit.i250 ], [ %296, %._crit_edge.loopexit.i ] + %.sink436 = phi i64 [ 1, %241 ], [ 1, %329 ], [ %327, %._crit_edge.loopexit.i250 ], [ %296, %._crit_edge.loopexit.i ] store i64 %.sink, ptr %36, align 8, !tbaa !138 %353 = load i64, ptr %21, align 8, !tbaa !163 - %354 = add nsw i64 %353, %.sink435 + %354 = add nsw i64 %353, %.sink436 store i64 %354, ptr %21, align 8, !tbaa !163 br label %355 @@ -3348,7 +3348,7 @@ rar_br_preparation.exit.thread: ; preds = %215, %227, %224, %2 br label %thread-pre-split thread-pre-split: ; preds = %257, %363, %run_filters.exit - %.2.ph = phi i32 [ %.4, %257 ], [ 0, %363 ], [ %.0190483, %run_filters.exit ] + %.2.ph = phi i32 [ %.4, %257 ], [ 0, %363 ], [ %.0190484, %run_filters.exit ] %.pr = load ptr, ptr %1, align 8, !tbaa !61 %368 = icmp eq ptr %.pr, null br i1 %368, label %.backedge, label %370 @@ -3374,7 +3374,7 @@ thread-pre-split: ; preds = %257, %363, %run_fil 377: ; preds = %42, %50, %370 %378 = phi ptr [ %44, %42 ], [ %.pre, %50 ], [ %.pr, %370 ] - %.1191 = phi i32 [ %.0190483, %42 ], [ %.0190483, %50 ], [ %.2.ph, %370 ] + %.1191 = phi i32 [ %.0190484, %42 ], [ %.0190484, %50 ], [ %.2.ph, %370 ] %379 = getelementptr inbounds nuw i8, ptr %13, i64 240 %380 = load i64, ptr %379, align 8, !tbaa !70 %381 = load i64, ptr %2, align 8, !tbaa !32 @@ -5394,7 +5394,7 @@ create_filter.exit.i.i: ; preds = %417, %416 %521 = getelementptr inbounds nuw [4 x i32], ptr %41, i64 0, i64 %indvars.iv store i32 %520, ptr %521, align 4, !tbaa !153 %522 = and i64 %indvars.iv.next, 4294967295 - %exitcond.not = icmp eq i64 %522, 0 + %.not387 = icmp eq i64 %522, 0 br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !235 ._crit_edge: ; preds = %.lr.ph, %517 @@ -6717,13 +6717,13 @@ define internal fastcc range(i32 -30, 1) i32 @create_code(ptr noundef %0, ptr no %wide.trip.count = zext nneg i32 %3 to i64 br label %.preheader -.preheader: ; preds = %9, %91 +.preheader: ; preds = %9, %92 %.057 = phi i32 [ %3, %9 ], [ %.3, %91 ] - %.02656 = phi i32 [ 0, %9 ], [ %92, %91 ] - %.03155 = phi i32 [ 1, %9 ], [ %93, %91 ] + %.02656 = phi i32 [ 0, %9 ], [ %93, %91 ] + %.03155 = phi i32 [ 1, %9 ], [ %94, %91 ] br label %16 -16: ; preds = %.preheader, %88 +16: ; preds = %.preheader, %89 %indvars.iv = phi i64 [ 0, %.preheader ], [ %indvars.iv.next, %88 ] %.154 = phi i32 [ %.057, %.preheader ], [ %.3, %88 ] %.12753 = phi i32 [ %.02656, %.preheader ], [ %.329, %88 ] @@ -6731,7 +6731,7 @@ define internal fastcc range(i32 -30, 1) i32 @create_code(ptr noundef %0, ptr no %18 = load i8, ptr %17, align 1, !tbaa !31 %19 = zext i8 %18 to i32 %.not = icmp eq i32 %.03155, %19 - br i1 %.not, label %20, label %88 + br i1 %.not, label %20, label %89 20: ; preds = %16 %21 = load ptr, ptr %15, align 8, !tbaa !200 @@ -6831,54 +6831,54 @@ define internal fastcc range(i32 -30, 1) i32 @create_code(ptr noundef %0, ptr no 70: ; preds = %58, %39 %71 = phi i32 [ %66, %58 ], [ %44, %39 ] %72 = phi ptr [ %59, %58 ], [ %31, %39 ] - %exitcond.not.i = icmp eq i32 %.04351.i, 0 - br i1 %exitcond.not.i, label %._crit_edge.loopexit.i, label %30, !llvm.loop !258 + %73 = icmp eq i32 %.04351.i, 0 + br i1 %73, label %._crit_edge.loopexit.i, label %30, !llvm.loop !258 ._crit_edge.loopexit.i: ; preds = %70 - %73 = sext i32 %71 to i64 - %74 = getelementptr inbounds %struct.huffman_tree_node, ptr %72, i64 %73 - %75 = load i32, ptr %74, align 4, !tbaa !153 - %76 = icmp eq i32 %75, -1 - br i1 %76, label %77, label %81 - -77: ; preds = %._crit_edge.loopexit.i - %78 = getelementptr inbounds nuw i8, ptr %74, i64 4 - %79 = load i32, ptr %78, align 4, !tbaa !153 - %80 = icmp eq i32 %79, -2 - br i1 %80, label %82, label %81 - -81: ; preds = %77, %._crit_edge.loopexit.i + %74 = sext i32 %71 to i64 + %75 = getelementptr inbounds %struct.huffman_tree_node, ptr %72, i64 %74 + %76 = load i32, ptr %75, align 4, !tbaa !153 + %77 = icmp eq i32 %76, -1 + br i1 %77, label %78, label %82 + +78: ; preds = %._crit_edge.loopexit.i + %79 = getelementptr inbounds nuw i8, ptr %75, i64 4 + %80 = load i32, ptr %79, align 4, !tbaa !153 + %81 = icmp eq i32 %80, -2 + br i1 %81, label %83, label %82 + +82: ; preds = %78, %._crit_edge.loopexit.i tail call void (ptr, i32, ptr, ...) @archive_set_error(ptr noundef %0, i32 noundef 84, ptr noundef nonnull @.str.46) #19 br label %add_value.exit.thread -82: ; preds = %77 - %83 = trunc nuw nsw i64 %indvars.iv to i32 - store i32 %83, ptr %74, align 4, !tbaa !153 - %84 = getelementptr inbounds %struct.huffman_tree_node, ptr %72, i64 %73, i32 0, i64 1 - store i32 %83, ptr %84, align 4, !tbaa !153 - %85 = add nsw i32 %.12753, 1 - %86 = add nsw i32 %.154, -1 - %87 = icmp slt i32 %.154, 2 - br i1 %87, label %add_value.exit.thread, label %88 - -88: ; preds = %82, %16 - %.329 = phi i32 [ %.12753, %16 ], [ %85, %82 ] - %.3 = phi i32 [ %.154, %16 ], [ %86, %82 ] +83: ; preds = %78 + %84 = trunc nuw nsw i64 %indvars.iv to i32 + store i32 %84, ptr %75, align 4, !tbaa !153 + %85 = getelementptr inbounds %struct.huffman_tree_node, ptr %72, i64 %74, i32 0, i64 1 + store i32 %84, ptr %85, align 4, !tbaa !153 + %86 = add nsw i32 %.12753, 1 + %87 = add nsw i32 %.154, -1 + %88 = icmp slt i32 %.154, 2 + br i1 %88, label %add_value.exit.thread, label %89 + +89: ; preds = %83, %16 + %.329 = phi i32 [ %.12753, %16 ], [ %86, %82 ] + %.3 = phi i32 [ %.154, %16 ], [ %87, %82 ] %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count - br i1 %exitcond.not, label %89, label %16, !llvm.loop !259 + br i1 %exitcond.not, label %90, label %16, !llvm.loop !259 -89: ; preds = %88 - %90 = icmp slt i32 %.3, 1 - br i1 %90, label %add_value.exit.thread, label %91 +90: ; preds = %89 + %91 = icmp slt i32 %.3, 1 + br i1 %91, label %add_value.exit.thread, label %92 -91: ; preds = %89 - %92 = shl i32 %.329, 1 - %93 = add nuw nsw i32 %.03155, 1 - %exitcond61.not = icmp eq i32 %93, 16 +92: ; preds = %90 + %93 = shl i32 %.329, 1 + %94 = add nuw nsw i32 %.03155, 1 + %exitcond61.not = icmp eq i32 %94, 16 br i1 %exitcond61.not, label %add_value.exit.thread, label %.preheader, !llvm.loop !260 -add_value.exit.thread: ; preds = %91, %89, %82, %81, %57, %38, %8 +add_value.exit.thread: ; preds = %92, %90, %83, %82, %57, %38, %8 %.032 = phi i32 [ -30, %8 ], [ -30, %38 ], [ -30, %57 ], [ -30, %81 ], [ 0, %82 ], [ 0, %89 ], [ 0, %91 ] ret i32 %.032 } diff --git a/bench/coreutils-rs/optimized/389ib4lq03w39x6a.ll b/bench/coreutils-rs/optimized/389ib4lq03w39x6a.ll index a8557ab8261..c21141c4b82 100644 --- a/bench/coreutils-rs/optimized/389ib4lq03w39x6a.ll +++ b/bench/coreutils-rs/optimized/389ib4lq03w39x6a.ll @@ -1579,7 +1579,7 @@ define void @_ZN6uucore8features6ranges5Range9from_list17h70bbf16599e55ca3E(ptr .body: ; preds = %.noexc.i, %83, %87 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %11), !noalias !255 - br label %139 + br label %140 74: ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17he97175bf1bfbf2d4E.exit" call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %13) @@ -1600,7 +1600,7 @@ define void @_ZN6uucore8features6ranges5Range9from_list17h70bbf16599e55ca3E(ptr cleanup call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %11), !noalias !255 invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17he5813fa0a75b2090E.llvm.3307611119196902081"(ptr noalias noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 captures(none) dereferenceable(24) %11, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %12) - to label %.noexc.i unwind label %107, !noalias !265 + to label %.noexc.i unwind label %108, !noalias !265 .noexc.i: ; preds = %79 %81 = getelementptr inbounds nuw i8, ptr %11, i64 8 @@ -1625,7 +1625,7 @@ define void @_ZN6uucore8features6ranges5Range9from_list17h70bbf16599e55ca3E(ptr br i1 %.not38.i, label %.loopexit, label %.split.i .split.i: ; preds = %.split35.i, %._crit_edge.i - %.promoted = phi i64 [ %.promoted90, %._crit_edge.i ], [ %78, %.split35.i ] + %.promoted = phi i64 [ %.promoted89, %._crit_edge.i ], [ %78, %.split35.i ] %indvars.iv = phi i64 [ %indvars.iv.next, %._crit_edge.i ], [ 2, %.split35.i ] %89 = phi i64 [ %100, %._crit_edge.i ], [ %78, %.split35.i ] %.sroa.01.036.i = phi i64 [ %90, %._crit_edge.i ], [ 0, %.split35.i ] @@ -1664,7 +1664,7 @@ define void @_ZN6uucore8features6ranges5Range9from_list17h70bbf16599e55ca3E(ptr br label %._crit_edge.i ._crit_edge.i: ; preds = %._crit_edge.i.loopexit, %.split.i - %.promoted90 = phi i64 [ %.promoted, %.split.i ], [ %99, %._crit_edge.i.loopexit ] + %.promoted89 = phi i64 [ %.promoted, %.split.i ], [ %99, %._crit_edge.i.loopexit ] %100 = phi i64 [ %89, %.split.i ], [ %.ph, %._crit_edge.i.loopexit ] %exitcond.not.i = icmp eq i64 %90, %78 %indvars.iv.next = add i64 %indvars.iv, 1 @@ -1680,11 +1680,11 @@ define void @_ZN6uucore8features6ranges5Range9from_list17h70bbf16599e55ca3E(ptr call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %92, ptr nonnull align 8 %96, i64 %105, i1 false), !noalias !268 %106 = add i64 %102, -1 %.0.sroa.speculated.i.i = call noundef i64 @llvm.umax.i64(i64 %.0.sroa.speculated.i.i82, i64 %103) - %exitcond.not = icmp eq i64 %102, %indvars.iv - br i1 %exitcond.not, label %._crit_edge.i.loopexit.sink.split, label %.lr.ph.i + %107 = icmp eq i64 %102, %indvars.iv + br i1 %107, label %._crit_edge.i.loopexit.sink.split, label %.lr.ph.i -107: ; preds = %79 - %108 = landingpad { ptr, i32 } +108: ; preds = %79 + %109 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #21, !noalias !265 unreachable @@ -1699,39 +1699,39 @@ define void @_ZN6uucore8features6ranges5Range9from_list17h70bbf16599e55ca3E(ptr %.sroa.4.0.i.ph = sub i64 %.pn, %.sroa.17.073 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %14) invoke void @"_ZN78_$LT$uucore..features..ranges..Range$u20$as$u20$core..str..traits..FromStr$GT$8from_str17h12c464303d9b27cfE"(ptr noalias noundef nonnull sret({ i64, [2 x i64] }) align 8 captures(none) dereferenceable(24) %14, ptr noalias noundef nonnull readonly align 1 %.sroa.0.0.i.ph, i64 noundef %.sroa.4.0.i.ph) - to label %111 unwind label %140 + to label %111 unwind label %141 .loopexit: ; preds = %._crit_edge.i, %.split35.i call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %13, ptr noundef nonnull align 8 dereferenceable(24) %12, i64 24, i1 false), !alias.scope !267 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %12) - %109 = getelementptr inbounds nuw i8, ptr %0, i64 8 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %109, ptr noundef nonnull align 8 dereferenceable(24) %13, i64 24, i1 false) + %110 = getelementptr inbounds nuw i8, ptr %0, i64 8 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %110, ptr noundef nonnull align 8 dereferenceable(24) %13, i64 24, i1 false) store i64 0, ptr %0, align 8 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %13) - br label %110 + br label %111 -110: ; preds = %"_ZN4core3ptr75drop_in_place$LT$alloc..vec..Vec$LT$uucore..features..ranges..Range$GT$$GT$17h2b41abbd8e33abaeE.exit", %.loopexit +111: ; preds = %"_ZN4core3ptr75drop_in_place$LT$alloc..vec..Vec$LT$uucore..features..ranges..Range$GT$$GT$17h2b41abbd8e33abaeE.exit", %.loopexit call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %15) ret void -111: ; preds = %.loopexit70 +112: ; preds = %.loopexit70 call void @llvm.experimental.noalias.scope.decl(metadata !272) - %112 = load i64, ptr %14, align 8, !range !275, !alias.scope !272, !noalias !276, !noundef !13 - %trunc.i = trunc nuw i64 %112 to i1 - %113 = load i64, ptr %20, align 8, !alias.scope !272, !noalias !276, !noundef !13 - br i1 %trunc.i, label %115, label %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hcaa2fadaaed0a09eE.exit.thread" + %113 = load i64, ptr %14, align 8, !range !275, !alias.scope !272, !noalias !276, !noundef !13 + %trunc.i = trunc nuw i64 %113 to i1 + %114 = load i64, ptr %20, align 8, !alias.scope !272, !noalias !276, !noundef !13 + br i1 %trunc.i, label %116, label %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hcaa2fadaaed0a09eE.exit.thread" -"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hcaa2fadaaed0a09eE.exit.thread": ; preds = %111 - %114 = load i64, ptr %19, align 8, !alias.scope !272, !noalias !276, !noundef !13 +"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hcaa2fadaaed0a09eE.exit.thread": ; preds = %112 + %115 = load i64, ptr %19, align 8, !alias.scope !272, !noalias !276, !noundef !13 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %14) - br label %118 + br label %119 -115: ; preds = %111 - %116 = load ptr, ptr %19, align 8, !alias.scope !272, !noalias !276, !nonnull !13, !align !279, !noundef !13 +116: ; preds = %112 + %117 = load ptr, ptr %19, align 8, !alias.scope !272, !noalias !276, !nonnull !13, !align !279, !noundef !13 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %10), !noalias !280 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %9), !noalias !280 - store ptr %116, ptr %9, align 8, !noalias !281 - store i64 %113, ptr %21, align 8, !noalias !281 + store ptr %117, ptr %9, align 8, !noalias !281 + store i64 %114, ptr %21, align 8, !noalias !281 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %8), !noalias !281 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %7), !noalias !281 store i64 0, ptr %7, align 8, !noalias !281 @@ -1749,9 +1749,9 @@ define void @_ZN6uucore8features6ranges5Range9from_list17h70bbf16599e55ca3E(ptr store i64 2, ptr %.sroa.8.0..sroa_idx.i.i, align 8, !noalias !297 store ptr null, ptr %.sroa.10.0..sroa_idx.i.i, align 8, !noalias !297 invoke void @_ZN5alloc3fmt6format12format_inner17h20bbaee2ca87fbecE(ptr noalias noundef nonnull sret({ { { i64, ptr, {} }, i64 } }) align 8 captures(none) dereferenceable(24) %10, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(48) %6) - to label %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hcaa2fadaaed0a09eE.exit" unwind label %140 + to label %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hcaa2fadaaed0a09eE.exit" unwind label %141 -"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hcaa2fadaaed0a09eE.exit": ; preds = %115 +"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hcaa2fadaaed0a09eE.exit": ; preds = %116 call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %6), !noalias !286 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7), !noalias !281 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8), !noalias !281 @@ -1761,40 +1761,40 @@ define void @_ZN6uucore8features6ranges5Range9from_list17h70bbf16599e55ca3E(ptr %.sroa.847.0.copyload = load i64, ptr %.sroa.847.0..sroa_idx, align 8, !noalias !298 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10), !noalias !280 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %14) - %117 = icmp eq i64 %.sroa.045.0.copyload, -9223372036854775808 - br i1 %117, label %118, label %129 - -118: ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hcaa2fadaaed0a09eE.exit.thread", %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hcaa2fadaaed0a09eE.exit" - %.sroa.847.069 = phi i64 [ %113, %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hcaa2fadaaed0a09eE.exit.thread" ], [ %.sroa.847.0.copyload, %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hcaa2fadaaed0a09eE.exit" ] - %.sroa.546.068 = phi i64 [ %114, %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hcaa2fadaaed0a09eE.exit.thread" ], [ %.sroa.546.0.copyload, %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hcaa2fadaaed0a09eE.exit" ] - %119 = load i64, ptr %17, align 8, !alias.scope !299, !noundef !13 - %120 = load i64, ptr %15, align 8, !alias.scope !299, !noundef !13 - %121 = icmp eq i64 %119, %120 - br i1 %121, label %122, label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17he97175bf1bfbf2d4E.exit" - -122: ; preds = %118 - invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h4f00cef2620ee283E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %15, i64 noundef %119) - to label %.noexc41 unwind label %140 - -.noexc41: ; preds = %122 + %118 = icmp eq i64 %.sroa.045.0.copyload, -9223372036854775808 + br i1 %118, label %119, label %130 + +119: ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hcaa2fadaaed0a09eE.exit.thread", %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hcaa2fadaaed0a09eE.exit" + %.sroa.847.069 = phi i64 [ %114, %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hcaa2fadaaed0a09eE.exit.thread" ], [ %.sroa.847.0.copyload, %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hcaa2fadaaed0a09eE.exit" ] + %.sroa.546.068 = phi i64 [ %115, %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hcaa2fadaaed0a09eE.exit.thread" ], [ %.sroa.546.0.copyload, %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hcaa2fadaaed0a09eE.exit" ] + %120 = load i64, ptr %17, align 8, !alias.scope !299, !noundef !13 + %121 = load i64, ptr %15, align 8, !alias.scope !299, !noundef !13 + %122 = icmp eq i64 %120, %121 + br i1 %122, label %123, label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17he97175bf1bfbf2d4E.exit" + +123: ; preds = %119 + invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h4f00cef2620ee283E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %15, i64 noundef %120) + to label %.noexc41 unwind label %141 + +.noexc41: ; preds = %123 %.pre.i40 = load i64, ptr %17, align 8, !alias.scope !299 br label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17he97175bf1bfbf2d4E.exit" -"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17he97175bf1bfbf2d4E.exit": ; preds = %118, %.noexc41 - %123 = phi i64 [ %.pre.i40, %.noexc41 ], [ %119, %118 ] - %124 = load ptr, ptr %16, align 8, !alias.scope !299, !nonnull !13, !noundef !13 - %125 = getelementptr inbounds { i64, i64 }, ptr %124, i64 %123 - store i64 %.sroa.546.068, ptr %125, align 8 - %126 = getelementptr inbounds nuw i8, ptr %125, i64 8 - store i64 %.sroa.847.069, ptr %126, align 8 - %127 = load i64, ptr %17, align 8, !alias.scope !299, !noundef !13 - %128 = add i64 %127, 1 - store i64 %128, ptr %17, align 8, !alias.scope !299 +"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17he97175bf1bfbf2d4E.exit": ; preds = %119, %.noexc41 + %124 = phi i64 [ %.pre.i40, %.noexc41 ], [ %120, %118 ] + %125 = load ptr, ptr %16, align 8, !alias.scope !299, !nonnull !13, !noundef !13 + %126 = getelementptr inbounds { i64, i64 }, ptr %125, i64 %124 + store i64 %.sroa.546.068, ptr %126, align 8 + %127 = getelementptr inbounds nuw i8, ptr %126, i64 8 + store i64 %.sroa.847.069, ptr %127, align 8 + %128 = load i64, ptr %17, align 8, !alias.scope !299, !noundef !13 + %129 = add i64 %128, 1 + store i64 %129, ptr %17, align 8, !alias.scope !299 br i1 %.sroa.27.1.ph, label %74, label %26 -129: ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hcaa2fadaaed0a09eE.exit" - %130 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 %.sroa.045.0.copyload, ptr %130, align 8 +130: ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hcaa2fadaaed0a09eE.exit" + %131 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store i64 %.sroa.045.0.copyload, ptr %131, align 8 %.sroa.234.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 16 store i64 %.sroa.546.0.copyload, ptr %.sroa.234.0..sroa_idx, align 8 %.sroa.335.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 24 @@ -1802,38 +1802,38 @@ define void @_ZN6uucore8features6ranges5Range9from_list17h70bbf16599e55ca3E(ptr store i64 1, ptr %0, align 8 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %5), !noalias !302 call void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17he5813fa0a75b2090E.llvm.3307611119196902081"(ptr noalias noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 captures(none) dereferenceable(24) %5, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %15) - %131 = getelementptr inbounds nuw i8, ptr %5, i64 8 - %132 = load i64, ptr %131, align 8, !range !189, !noalias !302, !noundef !13 - %.not.i.i.i = icmp eq i64 %132, 0 - br i1 %.not.i.i.i, label %"_ZN4core3ptr75drop_in_place$LT$alloc..vec..Vec$LT$uucore..features..ranges..Range$GT$$GT$17h2b41abbd8e33abaeE.exit", label %133 - -133: ; preds = %129 - %134 = getelementptr inbounds nuw i8, ptr %5, i64 16 - %135 = load i64, ptr %134, align 8, !noalias !302, !noundef !13 - %136 = icmp eq i64 %135, 0 - br i1 %136, label %"_ZN4core3ptr75drop_in_place$LT$alloc..vec..Vec$LT$uucore..features..ranges..Range$GT$$GT$17h2b41abbd8e33abaeE.exit", label %137 - -137: ; preds = %133 - %138 = load ptr, ptr %5, align 8, !noalias !302, !nonnull !13, !noundef !13 - call void @__rust_dealloc(ptr noundef nonnull %138, i64 noundef %135, i64 noundef %132) #22 + %132 = getelementptr inbounds nuw i8, ptr %5, i64 8 + %133 = load i64, ptr %132, align 8, !range !189, !noalias !302, !noundef !13 + %.not.i.i.i = icmp eq i64 %133, 0 + br i1 %.not.i.i.i, label %"_ZN4core3ptr75drop_in_place$LT$alloc..vec..Vec$LT$uucore..features..ranges..Range$GT$$GT$17h2b41abbd8e33abaeE.exit", label %134 + +134: ; preds = %130 + %135 = getelementptr inbounds nuw i8, ptr %5, i64 16 + %136 = load i64, ptr %135, align 8, !noalias !302, !noundef !13 + %137 = icmp eq i64 %136, 0 + br i1 %137, label %"_ZN4core3ptr75drop_in_place$LT$alloc..vec..Vec$LT$uucore..features..ranges..Range$GT$$GT$17h2b41abbd8e33abaeE.exit", label %138 + +138: ; preds = %134 + %139 = load ptr, ptr %5, align 8, !noalias !302, !nonnull !13, !noundef !13 + call void @__rust_dealloc(ptr noundef nonnull %139, i64 noundef %136, i64 noundef %133) #22 br label %"_ZN4core3ptr75drop_in_place$LT$alloc..vec..Vec$LT$uucore..features..ranges..Range$GT$$GT$17h2b41abbd8e33abaeE.exit" -"_ZN4core3ptr75drop_in_place$LT$alloc..vec..Vec$LT$uucore..features..ranges..Range$GT$$GT$17h2b41abbd8e33abaeE.exit": ; preds = %129, %133, %137 +"_ZN4core3ptr75drop_in_place$LT$alloc..vec..Vec$LT$uucore..features..ranges..Range$GT$$GT$17h2b41abbd8e33abaeE.exit": ; preds = %130, %134, %138 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5), !noalias !302 - br label %110 + br label %111 -139: ; preds = %.body, %140 - %eh.lpad-body51 = phi { ptr, i32 } [ %141, %140 ], [ %80, %.body ] +140: ; preds = %.body, %141 + %eh.lpad-body51 = phi { ptr, i32 } [ %142, %140 ], [ %80, %.body ] resume { ptr, i32 } %eh.lpad-body51 -140: ; preds = %.loopexit70, %115, %122 - %141 = landingpad { ptr, i32 } +141: ; preds = %.loopexit70, %116, %123 + %142 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr75drop_in_place$LT$alloc..vec..Vec$LT$uucore..features..ranges..Range$GT$$GT$17h2b41abbd8e33abaeE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %15) #23 - to label %139 unwind label %142 + to label %139 unwind label %143 -142: ; preds = %140 - %143 = landingpad { ptr, i32 } +143: ; preds = %141 + %144 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #21 unreachable diff --git a/bench/cpython/optimized/mathmodule.ll b/bench/cpython/optimized/mathmodule.ll index b2c1bca70a8..a762cd0a8bd 100644 --- a/bench/cpython/optimized/mathmodule.ll +++ b/bench/cpython/optimized/mathmodule.ll @@ -2337,7 +2337,7 @@ _Py_NewRef.exit.i: ; preds = %31, %28 %43 = sub nuw nsw i64 64, %42 %44 = call fastcc ptr @factorial_partial_product(i64 noundef %.02566.i, i64 noundef %40, i64 noundef %43) %45 = icmp eq ptr %44, null - br i1 %45, label %74, label %46 + br i1 %45, label %75, label %46 46: ; preds = %38 %47 = call ptr @PyNumber_Multiply(ptr noundef %.03665.i, ptr noundef nonnull %44) #16 @@ -2357,7 +2357,7 @@ _Py_NewRef.exit.i: ; preds = %31, %28 Py_DECREF.exit54.i: ; preds = %52, %49, %46 %53 = icmp eq ptr %47, null - br i1 %53, label %74, label %54 + br i1 %53, label %75, label %54 54: ; preds = %Py_DECREF.exit54.i %55 = load i32, ptr %.03665.i, align 8, !tbaa !13 @@ -2377,7 +2377,7 @@ Py_DECREF.exit54.i: ; preds = %52, %49, %46 Py_DECREF.exit52.i: ; preds = %59, %56, %54 %60 = call ptr @PyNumber_Multiply(ptr noundef %.03864.i, ptr noundef nonnull %47) #16 %61 = icmp eq ptr %60, null - br i1 %61, label %74, label %62 + br i1 %61, label %75, label %62 62: ; preds = %Py_DECREF.exit52.i %63 = load i32, ptr %.03864.i, align 8, !tbaa !13 @@ -2399,75 +2399,75 @@ Py_DECREF.exit50.i: ; preds = %67, %64, %62, %35 %.137.i = phi ptr [ %.03665.i, %35 ], [ %47, %62 ], [ %47, %64 ], [ %47, %67 ] %.1.i = phi i64 [ %.02566.i, %35 ], [ %40, %62 ], [ %40, %64 ], [ %40, %67 ] %68 = add nsw i64 %.02467.i, -1 - %exitcond.not.i = icmp eq i64 %.02467.i, 0 - br i1 %exitcond.not.i, label %69, label %35, !llvm.loop !38 + %69 = icmp eq i64 %.02467.i, 0 + br i1 %69, label %69, label %35, !llvm.loop !38 -69: ; preds = %Py_DECREF.exit50.i - %70 = load i32, ptr %.137.i, align 8, !tbaa !13 - %.not.i47.i = icmp sgt i32 %70, -1 - br i1 %.not.i47.i, label %71, label %factorial_odd_part.exit +70: ; preds = %Py_DECREF.exit50.i + %71 = load i32, ptr %.137.i, align 8, !tbaa !13 + %.not.i47.i = icmp sgt i32 %71, -1 + br i1 %.not.i47.i, label %72, label %factorial_odd_part.exit -71: ; preds = %69 - %72 = add nsw i32 %70, -1 - store i32 %72, ptr %.137.i, align 8, !tbaa !13 - %73 = icmp eq i32 %72, 0 - br i1 %73, label %Py_DECREF.exit48.sink.split.i, label %factorial_odd_part.exit +72: ; preds = %70 + %73 = add nsw i32 %71, -1 + store i32 %73, ptr %.137.i, align 8, !tbaa !13 + %74 = icmp eq i32 %73, 0 + br i1 %74, label %Py_DECREF.exit48.sink.split.i, label %factorial_odd_part.exit -74: ; preds = %Py_DECREF.exit52.i, %Py_DECREF.exit54.i, %38 +75: ; preds = %Py_DECREF.exit52.i, %Py_DECREF.exit54.i, %38 %.2.i = phi ptr [ %.03665.i, %38 ], [ %.03665.i, %Py_DECREF.exit54.i ], [ %47, %Py_DECREF.exit52.i ] - %75 = load i32, ptr %.03864.i, align 8, !tbaa !13 - %.not.i45.i = icmp sgt i32 %75, -1 - br i1 %.not.i45.i, label %76, label %Py_DECREF.exit46.i + %76 = load i32, ptr %.03864.i, align 8, !tbaa !13 + %.not.i45.i = icmp sgt i32 %76, -1 + br i1 %.not.i45.i, label %77, label %Py_DECREF.exit46.i -76: ; preds = %74 - %77 = add nsw i32 %75, -1 - store i32 %77, ptr %.03864.i, align 8, !tbaa !13 - %78 = icmp eq i32 %77, 0 - br i1 %78, label %79, label %Py_DECREF.exit46.i +77: ; preds = %75 + %78 = add nsw i32 %76, -1 + store i32 %78, ptr %.03864.i, align 8, !tbaa !13 + %79 = icmp eq i32 %78, 0 + br i1 %79, label %80, label %Py_DECREF.exit46.i -79: ; preds = %76 +80: ; preds = %77 call void @_Py_Dealloc(ptr noundef nonnull %.03864.i) #16 br label %Py_DECREF.exit46.i -Py_DECREF.exit46.i: ; preds = %79, %76, %74 - %80 = load i32, ptr %.2.i, align 8, !tbaa !13 - %.not.i.i = icmp sgt i32 %80, -1 - br i1 %.not.i.i, label %81, label %Py_DECREF.exit +Py_DECREF.exit46.i: ; preds = %80, %77, %75 + %81 = load i32, ptr %.2.i, align 8, !tbaa !13 + %.not.i.i = icmp sgt i32 %81, -1 + br i1 %.not.i.i, label %82, label %Py_DECREF.exit -81: ; preds = %Py_DECREF.exit46.i - %82 = add nsw i32 %80, -1 - store i32 %82, ptr %.2.i, align 8, !tbaa !13 - %83 = icmp eq i32 %82, 0 - br i1 %83, label %Py_DECREF.exit48.sink.split.i, label %Py_DECREF.exit +82: ; preds = %Py_DECREF.exit46.i + %83 = add nsw i32 %81, -1 + store i32 %83, ptr %.2.i, align 8, !tbaa !13 + %84 = icmp eq i32 %83, 0 + br i1 %84, label %Py_DECREF.exit48.sink.split.i, label %Py_DECREF.exit -Py_DECREF.exit48.sink.split.i: ; preds = %81, %71 +Py_DECREF.exit48.sink.split.i: ; preds = %82, %72 %.2.sink.i = phi ptr [ %.137.i, %71 ], [ %.2.i, %81 ] %.0.ph.i = phi ptr [ %.139.i, %71 ], [ null, %81 ] call void @_Py_Dealloc(ptr noundef nonnull %.2.sink.i) #16 br label %factorial_odd_part.exit -factorial_odd_part.exit: ; preds = %69, %71, %Py_DECREF.exit48.sink.split.i +factorial_odd_part.exit: ; preds = %70, %72, %Py_DECREF.exit48.sink.split.i %.0.i = phi ptr [ %.139.i, %69 ], [ %.139.i, %71 ], [ %.0.ph.i, %Py_DECREF.exit48.sink.split.i ] - %84 = icmp eq ptr %.0.i, null - br i1 %84, label %Py_DECREF.exit, label %.preheader + %85 = icmp eq ptr %.0.i, null + br i1 %85, label %Py_DECREF.exit, label %.preheader .preheader: ; preds = %factorial_odd_part.exit, %.preheader - %.07.i = phi i64 [ %85, %.preheader ], [ 0, %factorial_odd_part.exit ] - %.056.i = phi i64 [ %87, %.preheader ], [ %4, %factorial_odd_part.exit ] - %85 = add i64 %.07.i, 1 - %86 = add nsw i64 %.056.i, -1 - %87 = and i64 %86, %.056.i - %.not.i17 = icmp eq i64 %87, 0 + %.07.i = phi i64 [ %86, %.preheader ], [ 0, %factorial_odd_part.exit ] + %.056.i = phi i64 [ %88, %.preheader ], [ %4, %factorial_odd_part.exit ] + %86 = add i64 %.07.i, 1 + %87 = add nsw i64 %.056.i, -1 + %88 = and i64 %87, %.056.i + %.not.i17 = icmp eq i64 %88, 0 br i1 %.not.i17, label %count_set_bits.exit, label %.preheader, !llvm.loop !39 count_set_bits.exit: ; preds = %.preheader - %88 = sub i64 %4, %85 - %89 = call ptr @_PyLong_Lshift(ptr noundef nonnull %.0.i, i64 noundef %88) #16 - %90 = load i32, ptr %.0.i, align 8, !tbaa !13 - %.not.i = icmp sgt i32 %90, -1 + %89 = sub i64 %4, %86 + %90 = call ptr @_PyLong_Lshift(ptr noundef nonnull %.0.i, i64 noundef %89) #16 + %91 = load i32, ptr %.0.i, align 8, !tbaa !13 + %.not.i = icmp sgt i32 %91, -1 br i1 %.not.i, label %91, label %Py_DECREF.exit -91: ; preds = %count_set_bits.exit +95: ; preds = %count_set_bits.exit %92 = add nsw i32 %90, -1 store i32 %92, ptr %.0.i, align 8, !tbaa !13 %93 = icmp eq i32 %92, 0 @@ -2477,8 +2477,8 @@ count_set_bits.exit: ; preds = %.preheader call void @_Py_Dealloc(ptr noundef nonnull %.0.i) #16 br label %Py_DECREF.exit -Py_DECREF.exit: ; preds = %81, %Py_DECREF.exit46.i, %25, %94, %91, %count_set_bits.exit, %factorial_odd_part.exit, %6, %21, %17, %11 - %.0 = phi ptr [ null, %11 ], [ null, %17 ], [ %24, %21 ], [ null, %6 ], [ null, %factorial_odd_part.exit ], [ %89, %count_set_bits.exit ], [ %89, %91 ], [ %89, %94 ], [ null, %25 ], [ null, %Py_DECREF.exit46.i ], [ null, %81 ] +Py_DECREF.exit: ; preds = %82, %Py_DECREF.exit46.i, %25, %94, %91, %count_set_bits.exit, %factorial_odd_part.exit, %6, %21, %17, %11 + %.0 = phi ptr [ null, %11 ], [ null, %17 ], [ %24, %21 ], [ null, %6 ], [ null, %factorial_odd_part.exit ], [ %90, %count_set_bits.exit ], [ %90, %91 ], [ %89, %94 ], [ null, %25 ], [ null, %Py_DECREF.exit46.i ], [ null, %81 ] call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %3) #16 ret ptr %.0 } @@ -8393,8 +8393,8 @@ define internal fastcc double @lanczos_sum(double noundef %0) unnamed_addr #13 { %7 = load double, ptr %6, align 8, !tbaa !33 %8 = tail call double @llvm.fmuladd.f64(double %.01731, double %0, double %7) %indvars.iv.next38 = add nsw i64 %indvars.iv37, -1 - %exitcond40.not = icmp eq i64 %indvars.iv37, 0 - br i1 %exitcond40.not, label %.loopexit, label %.preheader, !llvm.loop !64 + %.not = icmp eq i64 %indvars.iv37, 0 + br i1 %.not, label %.loopexit, label %.preheader, !llvm.loop !64 .preheader25: ; preds = %1, %.preheader25 %indvars.iv = phi i64 [ %indvars.iv.next, %.preheader25 ], [ 0, %1 ] @@ -8508,8 +8508,8 @@ define internal double @m_lgamma(double noundef %0) #11 { %25 = load double, ptr %24, align 8, !tbaa !33 %26 = tail call double @llvm.fmuladd.f64(double %.01731.i, double %2, double %25) %indvars.iv.next38.i = add nsw i64 %indvars.iv37.i, -1 - %exitcond40.not.i = icmp eq i64 %indvars.iv37.i, 0 - br i1 %exitcond40.not.i, label %lanczos_sum.exit, label %.preheader.i, !llvm.loop !64 + %.not.i = icmp eq i64 %indvars.iv37.i, 0 + br i1 %.not.i, label %lanczos_sum.exit, label %.preheader.i, !llvm.loop !64 .preheader25.i: ; preds = %19, %.preheader25.i %indvars.iv.i = phi i64 [ %indvars.iv.next.i, %.preheader25.i ], [ 0, %19 ] diff --git a/bench/csmith/optimized/Variable.ll b/bench/csmith/optimized/Variable.ll index 1f830d988e9..7aa68711ffe 100644 --- a/bench/csmith/optimized/Variable.ll +++ b/bench/csmith/optimized/Variable.ll @@ -13234,109 +13234,109 @@ _ZNSt14_Bit_referenceaSEb.exit.i.i.i.i.i.i: ; preds = %88, %85 %.sroa.03.1.idx.i.i.i.i.i.i = select i1 %95, i64 8, i64 0 %.sroa.03.1.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %.sroa.03.017.i.i.i.i.i.i, i64 %.sroa.03.1.idx.i.i.i.i.i.i %96 = add nsw i64 %.020.i.i.i.i.i.i, -1 - %exitcond.not.i = icmp eq i64 %96, 0 - br i1 %exitcond.not.i, label %_ZNSt6vectorIbSaIbEE15_M_copy_alignedESt19_Bit_const_iteratorS2_St13_Bit_iterator.exit, label %.lr.ph.i.i.i.i.i.i, !llvm.loop !336 + %97 = icmp eq i64 %96, 0 + br i1 %97, label %_ZNSt6vectorIbSaIbEE15_M_copy_alignedESt19_Bit_const_iteratorS2_St13_Bit_iterator.exit, label %.lr.ph.i.i.i.i.i.i, !llvm.loop !336 _ZNSt6vectorIbSaIbEE15_M_copy_alignedESt19_Bit_const_iteratorS2_St13_Bit_iterator.exit: ; preds = %_ZNSt14_Bit_referenceaSEb.exit.i.i.i.i.i.i - %97 = add i32 %.sroa.55.1.i.i.i.i.i.i, 1 - %98 = icmp eq i32 %.sroa.55.1.i.i.i.i.i.i, 63 - br i1 %98, label %99, label %_ZNSt13_Bit_iteratorppEi.exit + %98 = add i32 %.sroa.55.1.i.i.i.i.i.i, 1 + %99 = icmp eq i32 %.sroa.55.1.i.i.i.i.i.i, 63 + br i1 %99, label %100, label %_ZNSt13_Bit_iteratorppEi.exit -99: ; preds = %_ZNSt6vectorIbSaIbEE15_M_copy_alignedESt19_Bit_const_iteratorS2_St13_Bit_iterator.exit - %100 = getelementptr inbounds nuw i8, ptr %.sroa.03.1.i.i.i.i.i.i, i64 8 +100: ; preds = %_ZNSt6vectorIbSaIbEE15_M_copy_alignedESt19_Bit_const_iteratorS2_St13_Bit_iterator.exit + %101 = getelementptr inbounds nuw i8, ptr %.sroa.03.1.i.i.i.i.i.i, i64 8 br label %_ZNSt13_Bit_iteratorppEi.exit -_ZNSt13_Bit_iteratorppEi.exit: ; preds = %_ZSt4copyIPmS0_ET0_T_S2_S1_.exit.i, %_ZNSt6vectorIbSaIbEE15_M_copy_alignedESt19_Bit_const_iteratorS2_St13_Bit_iterator.exit, %99 +_ZNSt13_Bit_iteratorppEi.exit: ; preds = %_ZSt4copyIPmS0_ET0_T_S2_S1_.exit.i, %_ZNSt6vectorIbSaIbEE15_M_copy_alignedESt19_Bit_const_iteratorS2_St13_Bit_iterator.exit, %100 %.sroa.03.0.lcssa.i.i.i.i.i.i111 = phi ptr [ %.sroa.03.1.i.i.i.i.i.i, %99 ], [ %.sroa.03.1.i.i.i.i.i.i, %_ZNSt6vectorIbSaIbEE15_M_copy_alignedESt19_Bit_const_iteratorS2_St13_Bit_iterator.exit ], [ %77, %_ZSt4copyIPmS0_ET0_T_S2_S1_.exit.i ] %.sroa.55.0.lcssa.i.i.i.i.i.i110 = phi i32 [ 63, %99 ], [ %.sroa.55.1.i.i.i.i.i.i, %_ZNSt6vectorIbSaIbEE15_M_copy_alignedESt19_Bit_const_iteratorS2_St13_Bit_iterator.exit ], [ 0, %_ZSt4copyIPmS0_ET0_T_S2_S1_.exit.i ] - %.sroa.083.0 = phi ptr [ %100, %99 ], [ %.sroa.03.1.i.i.i.i.i.i, %_ZNSt6vectorIbSaIbEE15_M_copy_alignedESt19_Bit_const_iteratorS2_St13_Bit_iterator.exit ], [ %77, %_ZSt4copyIPmS0_ET0_T_S2_S1_.exit.i ] - %.sroa.684.0 = phi i32 [ 0, %99 ], [ %97, %_ZNSt6vectorIbSaIbEE15_M_copy_alignedESt19_Bit_const_iteratorS2_St13_Bit_iterator.exit ], [ 1, %_ZSt4copyIPmS0_ET0_T_S2_S1_.exit.i ] - %101 = zext nneg i32 %.sroa.55.0.lcssa.i.i.i.i.i.i110 to i64 - %102 = shl nuw i64 1, %101 - br i1 %3, label %103, label %106 - -103: ; preds = %_ZNSt13_Bit_iteratorppEi.exit - %104 = load i64, ptr %.sroa.03.0.lcssa.i.i.i.i.i.i111, align 8, !tbaa !102 - %105 = or i64 %104, %102 + %.sroa.083.0 = phi ptr [ %101, %99 ], [ %.sroa.03.1.i.i.i.i.i.i, %_ZNSt6vectorIbSaIbEE15_M_copy_alignedESt19_Bit_const_iteratorS2_St13_Bit_iterator.exit ], [ %77, %_ZSt4copyIPmS0_ET0_T_S2_S1_.exit.i ] + %.sroa.684.0 = phi i32 [ 0, %99 ], [ %98, %_ZNSt6vectorIbSaIbEE15_M_copy_alignedESt19_Bit_const_iteratorS2_St13_Bit_iterator.exit ], [ 1, %_ZSt4copyIPmS0_ET0_T_S2_S1_.exit.i ] + %102 = zext nneg i32 %.sroa.55.0.lcssa.i.i.i.i.i.i110 to i64 + %103 = shl nuw i64 1, %102 + br i1 %3, label %104, label %107 + +104: ; preds = %_ZNSt13_Bit_iteratorppEi.exit + %105 = load i64, ptr %.sroa.03.0.lcssa.i.i.i.i.i.i111, align 8, !tbaa !102 + %106 = or i64 %105, %103 br label %_ZNSt14_Bit_referenceaSEb.exit53 -106: ; preds = %_ZNSt13_Bit_iteratorppEi.exit - %107 = xor i64 %102, -1 - %108 = load i64, ptr %.sroa.03.0.lcssa.i.i.i.i.i.i111, align 8, !tbaa !102 - %109 = and i64 %108, %107 +107: ; preds = %_ZNSt13_Bit_iteratorppEi.exit + %108 = xor i64 %103, -1 + %109 = load i64, ptr %.sroa.03.0.lcssa.i.i.i.i.i.i111, align 8, !tbaa !102 + %110 = and i64 %109, %108 br label %_ZNSt14_Bit_referenceaSEb.exit53 -_ZNSt14_Bit_referenceaSEb.exit53: ; preds = %103, %106 - %storemerge112 = phi i64 [ %109, %106 ], [ %105, %103 ] +_ZNSt14_Bit_referenceaSEb.exit53: ; preds = %104, %107 + %storemerge112 = phi i64 [ %110, %106 ], [ %106, %103 ] store i64 %storemerge112, ptr %.sroa.03.0.lcssa.i.i.i.i.i.i111, align 8, !tbaa !102 - %110 = sub i64 %11, %74 - %111 = shl nsw i64 %110, 3 - %112 = zext i32 %2 to i64 - %113 = sub nsw i64 %62, %112 - %114 = add i64 %113, %111 - %115 = icmp sgt i64 %114, 0 - br i1 %115, label %.lr.ph.i.i.i.i.i, label %_ZSt4copyISt13_Bit_iteratorS0_ET0_T_S2_S1_.exit + %111 = sub i64 %11, %74 + %112 = shl nsw i64 %111, 3 + %113 = zext i32 %2 to i64 + %114 = sub nsw i64 %62, %113 + %115 = add i64 %114, %112 + %116 = icmp sgt i64 %115, 0 + br i1 %116, label %.lr.ph.i.i.i.i.i, label %_ZSt4copyISt13_Bit_iteratorS0_ET0_T_S2_S1_.exit .lr.ph.i.i.i.i.i: ; preds = %_ZNSt14_Bit_referenceaSEb.exit53, %_ZNSt14_Bit_referenceaSERKS_.exit.i.i.i.i.i66 - %.024.i.i.i.i.i62 = phi i64 [ %133, %_ZNSt14_Bit_referenceaSERKS_.exit.i.i.i.i.i66 ], [ %114, %_ZNSt14_Bit_referenceaSEb.exit53 ] + %.024.i.i.i.i.i62 = phi i64 [ %134, %_ZNSt14_Bit_referenceaSERKS_.exit.i.i.i.i.i66 ], [ %115, %_ZNSt14_Bit_referenceaSEb.exit53 ] %.sroa.516.023.i.i.i.i.i = phi i32 [ %spec.select19.i.i.i.i.i70, %_ZNSt14_Bit_referenceaSERKS_.exit.i.i.i.i.i66 ], [ %2, %_ZNSt14_Bit_referenceaSEb.exit53 ] %.sroa.013.022.i.i.i.i.i = phi ptr [ %spec.select.i.i.i.i.i69, %_ZNSt14_Bit_referenceaSERKS_.exit.i.i.i.i.i66 ], [ %1, %_ZNSt14_Bit_referenceaSEb.exit53 ] %.sroa.59.021.i.i.i.i.i63 = phi i32 [ %.sroa.59.1.i.i.i.i.i73, %_ZNSt14_Bit_referenceaSERKS_.exit.i.i.i.i.i66 ], [ %.sroa.684.0, %_ZNSt14_Bit_referenceaSEb.exit53 ] %.sroa.07.020.i.i.i.i.i64 = phi ptr [ %.sroa.07.1.i.i.i.i.i72, %_ZNSt14_Bit_referenceaSERKS_.exit.i.i.i.i.i66 ], [ %.sroa.083.0, %_ZNSt14_Bit_referenceaSEb.exit53 ] - %116 = zext nneg i32 %.sroa.516.023.i.i.i.i.i to i64 - %117 = shl nuw i64 1, %116 - %118 = zext nneg i32 %.sroa.59.021.i.i.i.i.i63 to i64 - %119 = shl nuw i64 1, %118 - %120 = load i64, ptr %.sroa.013.022.i.i.i.i.i, align 8, !tbaa !102 - %121 = and i64 %120, %117 - %.not.i.i.i.i.i.i65 = icmp eq i64 %121, 0 - br i1 %.not.i.i.i.i.i.i65, label %125, label %122 - -122: ; preds = %.lr.ph.i.i.i.i.i - %123 = load i64, ptr %.sroa.07.020.i.i.i.i.i64, align 8, !tbaa !102 - %124 = or i64 %123, %119 + %117 = zext nneg i32 %.sroa.516.023.i.i.i.i.i to i64 + %118 = shl nuw i64 1, %117 + %119 = zext nneg i32 %.sroa.59.021.i.i.i.i.i63 to i64 + %120 = shl nuw i64 1, %119 + %121 = load i64, ptr %.sroa.013.022.i.i.i.i.i, align 8, !tbaa !102 + %122 = and i64 %121, %118 + %.not.i.i.i.i.i.i65 = icmp eq i64 %122, 0 + br i1 %.not.i.i.i.i.i.i65, label %126, label %123 + +123: ; preds = %.lr.ph.i.i.i.i.i + %124 = load i64, ptr %.sroa.07.020.i.i.i.i.i64, align 8, !tbaa !102 + %125 = or i64 %124, %120 br label %_ZNSt14_Bit_referenceaSERKS_.exit.i.i.i.i.i66 -125: ; preds = %.lr.ph.i.i.i.i.i - %126 = xor i64 %119, -1 - %127 = load i64, ptr %.sroa.07.020.i.i.i.i.i64, align 8, !tbaa !102 - %128 = and i64 %127, %126 +126: ; preds = %.lr.ph.i.i.i.i.i + %127 = xor i64 %120, -1 + %128 = load i64, ptr %.sroa.07.020.i.i.i.i.i64, align 8, !tbaa !102 + %129 = and i64 %128, %127 br label %_ZNSt14_Bit_referenceaSERKS_.exit.i.i.i.i.i66 -_ZNSt14_Bit_referenceaSERKS_.exit.i.i.i.i.i66: ; preds = %125, %122 - %storemerge.i.i.i.i.i67 = phi i64 [ %124, %122 ], [ %128, %125 ] +_ZNSt14_Bit_referenceaSERKS_.exit.i.i.i.i.i66: ; preds = %126, %123 + %storemerge.i.i.i.i.i67 = phi i64 [ %125, %122 ], [ %129, %125 ] store i64 %storemerge.i.i.i.i.i67, ptr %.sroa.07.020.i.i.i.i.i64, align 8, !tbaa !102 - %129 = add i32 %.sroa.516.023.i.i.i.i.i, 1 - %130 = icmp eq i32 %.sroa.516.023.i.i.i.i.i, 63 - %spec.select.idx.i.i.i.i.i68 = select i1 %130, i64 8, i64 0 + %130 = add i32 %.sroa.516.023.i.i.i.i.i, 1 + %131 = icmp eq i32 %.sroa.516.023.i.i.i.i.i, 63 + %spec.select.idx.i.i.i.i.i68 = select i1 %131, i64 8, i64 0 %spec.select.i.i.i.i.i69 = getelementptr inbounds nuw i8, ptr %.sroa.013.022.i.i.i.i.i, i64 %spec.select.idx.i.i.i.i.i68 - %spec.select19.i.i.i.i.i70 = select i1 %130, i32 0, i32 %129 - %131 = add i32 %.sroa.59.021.i.i.i.i.i63, 1 - %132 = icmp eq i32 %.sroa.59.021.i.i.i.i.i63, 63 - %.sroa.07.1.idx.i.i.i.i.i71 = select i1 %132, i64 8, i64 0 + %spec.select19.i.i.i.i.i70 = select i1 %131, i32 0, i32 %130 + %132 = add i32 %.sroa.59.021.i.i.i.i.i63, 1 + %133 = icmp eq i32 %.sroa.59.021.i.i.i.i.i63, 63 + %.sroa.07.1.idx.i.i.i.i.i71 = select i1 %133, i64 8, i64 0 %.sroa.07.1.i.i.i.i.i72 = getelementptr inbounds nuw i8, ptr %.sroa.07.020.i.i.i.i.i64, i64 %.sroa.07.1.idx.i.i.i.i.i71 - %.sroa.59.1.i.i.i.i.i73 = select i1 %132, i32 0, i32 %131 - %133 = add nsw i64 %.024.i.i.i.i.i62, -1 - %134 = icmp sgt i64 %.024.i.i.i.i.i62, 1 - br i1 %134, label %.lr.ph.i.i.i.i.i, label %_ZSt4copyISt13_Bit_iteratorS0_ET0_T_S2_S1_.exit, !llvm.loop !337 + %.sroa.59.1.i.i.i.i.i73 = select i1 %133, i32 0, i32 %132 + %134 = add nsw i64 %.024.i.i.i.i.i62, -1 + %135 = icmp sgt i64 %.024.i.i.i.i.i62, 1 + br i1 %135, label %.lr.ph.i.i.i.i.i, label %_ZSt4copyISt13_Bit_iteratorS0_ET0_T_S2_S1_.exit, !llvm.loop !337 _ZSt4copyISt13_Bit_iteratorS0_ET0_T_S2_S1_.exit: ; preds = %_ZNSt14_Bit_referenceaSERKS_.exit.i.i.i.i.i66, %_ZNSt14_Bit_referenceaSEb.exit53 %.sroa.07.0.lcssa.i.i.i.i.i58 = phi ptr [ %.sroa.083.0, %_ZNSt14_Bit_referenceaSEb.exit53 ], [ %.sroa.07.1.i.i.i.i.i72, %_ZNSt14_Bit_referenceaSERKS_.exit.i.i.i.i.i66 ] %.sroa.59.0.lcssa.i.i.i.i.i59 = phi i32 [ %.sroa.684.0, %_ZNSt14_Bit_referenceaSEb.exit53 ], [ %.sroa.59.1.i.i.i.i.i73, %_ZNSt14_Bit_referenceaSERKS_.exit.i.i.i.i.i66 ] %.not.i74 = icmp eq ptr %58, null - br i1 %.not.i74, label %_ZNSt13_Bvector_baseISaIbEE13_M_deallocateEv.exit, label %135 + br i1 %.not.i74, label %_ZNSt13_Bvector_baseISaIbEE13_M_deallocateEv.exit, label %136 -135: ; preds = %_ZSt4copyISt13_Bit_iteratorS0_ET0_T_S2_S1_.exit - %136 = ashr exact i64 %60, 3 - %137 = sub nsw i64 0, %136 - %138 = getelementptr inbounds i64, ptr %8, i64 %137 - tail call void @_ZdlPvm(ptr noundef %138, i64 noundef %60) #23 +136: ; preds = %_ZSt4copyISt13_Bit_iteratorS0_ET0_T_S2_S1_.exit + %137 = ashr exact i64 %60, 3 + %138 = sub nsw i64 0, %137 + %139 = getelementptr inbounds i64, ptr %8, i64 %138 + tail call void @_ZdlPvm(ptr noundef %139, i64 noundef %60) #23 br label %_ZNSt13_Bvector_baseISaIbEE13_M_deallocateEv.exit -_ZNSt13_Bvector_baseISaIbEE13_M_deallocateEv.exit: ; preds = %_ZSt4copyISt13_Bit_iteratorS0_ET0_T_S2_S1_.exit, %135 - %139 = lshr i64 %70, 6 - %140 = getelementptr inbounds nuw i64, ptr %73, i64 %139 - store ptr %140, ptr %7, align 8, !tbaa !141 +_ZNSt13_Bvector_baseISaIbEE13_M_deallocateEv.exit: ; preds = %_ZSt4copyISt13_Bit_iteratorS0_ET0_T_S2_S1_.exit, %136 + %140 = lshr i64 %70, 6 + %141 = getelementptr inbounds nuw i64, ptr %73, i64 %140 + store ptr %141, ptr %7, align 8, !tbaa !141 store ptr %73, ptr %0, align 8 %.sroa.588.0..sroa_idx89 = getelementptr inbounds nuw i8, ptr %0, i64 8 store i32 0, ptr %.sroa.588.0..sroa_idx89, align 8 diff --git a/bench/darktable/optimized/bauhaus.ll b/bench/darktable/optimized/bauhaus.ll index 411ce917a55..07169c25c5d 100644 --- a/bench/darktable/optimized/bauhaus.ll +++ b/bench/darktable/optimized/bauhaus.ll @@ -12182,7 +12182,7 @@ dt_bauhaus_widget_get_quad_active.exit: ; preds = %15, %17, %19 %25 = lshr i32 %24, 4 %.lobit.i = and i32 %25, 1 %26 = uitofp nneg i32 %.lobit.i to float - br label %182 + br label %181 27: ; preds = %10 switch i32 %2, label %47 [ @@ -12355,7 +12355,7 @@ dt_bauhaus_widget_get_quad_active.exit57: ; preds = %98, %100, %102 %108 = lshr i32 %107, 4 %.lobit.i55 = and i32 %108, 1 %109 = uitofp nneg i32 %.lobit.i55 to float - br label %182 + br label %181 110: ; preds = %93 %111 = icmp eq i32 %2, 3 @@ -12436,7 +12436,7 @@ dt_bauhaus_combobox_get_default.exit: ; preds = %dt_bauhaus_combobox %147 = inttoptr i64 %146 to ptr %148 = icmp ne ptr %.0.i61, %147 %149 = uitofp i1 %148 to float - br label %182 + br label %181 150: ; preds = %110 br i1 %.not.i.i.i.i58, label %151, label %DT_BAUHAUS_WIDGET.exit.i.i69 @@ -12491,7 +12491,7 @@ dt_bauhaus_combobox_get.exit: ; preds = %159 %172 = icmp eq i32 %.043.lcssa, %171 %173 = select reassoc nsz arcp contract afn i1 %172, float -5.000000e-01, float 0.000000e+00 %174 = fadd reassoc nsz arcp contract afn float %173, %170 - br label %182 + br label %181 175: ; preds = %.lr.ph, %175 %indvars.iv = phi i64 [ %168, %.lr.ph ], [ %indvars.iv.next, %175 ] @@ -12508,7 +12508,7 @@ dt_bauhaus_combobox_get.exit: ; preds = %159 %exitcond.not = icmp eq i64 %181, 4294967295 br i1 %exitcond.not, label %._crit_edge, label %175 -182: ; preds = %._crit_edge, %dt_bauhaus_combobox_get_default.exit, %dt_bauhaus_widget_get_quad_active.exit57, %dt_bauhaus_widget_get_quad_active.exit +181: ; preds = %._crit_edge, %dt_bauhaus_combobox_get_default.exit, %dt_bauhaus_widget_get_quad_active.exit57, %dt_bauhaus_widget_get_quad_active.exit %.044 = phi nsz float [ %26, %dt_bauhaus_widget_get_quad_active.exit ], [ %109, %dt_bauhaus_widget_get_quad_active.exit57 ], [ %149, %dt_bauhaus_combobox_get_default.exit ], [ %174, %._crit_edge ] ret float %.044 } diff --git a/bench/darktable/optimized/curve_tools.ll b/bench/darktable/optimized/curve_tools.ll index abb98b50f4b..60038434736 100644 --- a/bench/darktable/optimized/curve_tools.ll +++ b/bench/darktable/optimized/curve_tools.ll @@ -548,11 +548,11 @@ define noalias noundef ptr @d3_np_fs(i32 noundef %0, ptr noundef captures(none) br label %.lr.ph80 .lr.ph74: ; preds = %.lr.ph74.preheader, %.lr.ph74 - %33 = phi float [ %.pre, %.lr.ph74.preheader ], [ %49, %.lr.ph74 ] + %35 = phi float [ %.pre, %.lr.ph74.preheader ], [ %49, %.lr.ph74 ] %indvars.iv86 = phi i64 [ 1, %.lr.ph74.preheader ], [ %indvars.iv.next87, %.lr.ph74 ] %.idx = mul i64 %indvars.iv86, 12 - %34 = getelementptr i8, ptr %1, i64 %.idx - %35 = getelementptr i8, ptr %34, i64 -4 + %36 = getelementptr i8, ptr %1, i64 %.idx + %37 = getelementptr i8, ptr %36, i64 -4 %36 = load float, ptr %35, align 4, !tbaa !6 %37 = getelementptr i8, ptr %34, i64 -8 %38 = load float, ptr %37, align 4, !tbaa !6 @@ -576,8 +576,8 @@ define noalias noundef ptr @d3_np_fs(i32 noundef %0, ptr noundef captures(none) .lr.ph80: ; preds = %.lr.ph80.preheader, %.lr.ph80 %indvars.iv91 = phi i64 [ %32, %.lr.ph80.preheader ], [ %indvars.iv.next92, %.lr.ph80 ] - %50 = getelementptr inbounds nuw float, ptr %8, i64 %indvars.iv91 - %51 = load float, ptr %50, align 4, !tbaa !6 + %52 = getelementptr inbounds nuw float, ptr %8, i64 %indvars.iv91 + %53 = load float, ptr %52, align 4, !tbaa !6 %52 = add nuw nsw i64 %indvars.iv91, 1 %.idx97 = mul nuw nsw i64 %52, 12 %53 = getelementptr inbounds nuw i8, ptr %1, i64 %.idx97 @@ -588,9 +588,9 @@ define noalias noundef ptr @d3_np_fs(i32 noundef %0, ptr noundef captures(none) %58 = fsub reassoc nsz arcp contract afn float %51, %57 %gep77.idx = mul nuw nsw i64 %indvars.iv91, 12 %gep77 = getelementptr inbounds nuw i8, ptr %invariant.gep, i64 %gep77.idx - %59 = load float, ptr %gep77, align 4, !tbaa !6 - %60 = fdiv reassoc nsz arcp contract afn float %58, %59 - store float %60, ptr %50, align 4, !tbaa !6 + %58 = load float, ptr %gep77, align 4, !tbaa !6 + %59 = fdiv reassoc nsz arcp contract afn float %58, %58 + store float %59, ptr %52, align 4, !tbaa !6 %indvars.iv.next92 = add nsw i64 %indvars.iv91, -1 %61 = and i64 %indvars.iv.next92, 4294967295 %exitcond94.not = icmp eq i64 %61, 4294967295 diff --git a/bench/darktable/optimized/fp_dng.ll b/bench/darktable/optimized/fp_dng.ll index fc072c04cfd..d3b1d98f3d1 100644 --- a/bench/darktable/optimized/fp_dng.ll +++ b/bench/darktable/optimized/fp_dng.ll @@ -1025,10 +1025,10 @@ _ZL13DecodeFPDeltaPhS_iii.exit: ; preds = %.lr.ph77.i, %267 br label %.lr.ph72.i .lr.ph72.i: ; preds = %_Z17__DNG_HalfToFloatt.exit.i, %.lr.ph72.preheader.i - %indvars.iv81.i = phi i64 [ %299, %.lr.ph72.preheader.i ], [ %indvars.iv.next82.i, %_Z17__DNG_HalfToFloatt.exit.i ] + %indvars.iv80.i = phi i64 [ %299, %.lr.ph72.preheader.i ], [ %indvars.iv.next81.i, %_Z17__DNG_HalfToFloatt.exit.i ] %.04670.i = phi float [ 0.000000e+00, %.lr.ph72.preheader.i ], [ %.046..i, %_Z17__DNG_HalfToFloatt.exit.i ] - %indvars.iv.next82.i = add nsw i64 %indvars.iv81.i, -1 - %300 = getelementptr inbounds nuw i16, ptr %186, i64 %indvars.iv.next82.i + %indvars.iv.next81.i = add nsw i64 %indvars.iv80.i, -1 + %300 = getelementptr inbounds nuw i16, ptr %186, i64 %indvars.iv.next81.i %301 = load i16, ptr %300, align 2, !tbaa !136 %302 = zext i16 %301 to i32 %303 = lshr i32 %302, 15 @@ -1079,7 +1079,7 @@ _ZL13DecodeFPDeltaPhS_iii.exit: ; preds = %.lr.ph77.i, %267 _Z17__DNG_HalfToFloatt.exit.i: ; preds = %319, %316, %314, %312 %.022.i.i = phi i32 [ %313, %312 ], [ %325, %319 ], [ %318, %316 ], [ 0, %314 ] - %326 = getelementptr inbounds nuw i32, ptr %186, i64 %indvars.iv.next82.i + %326 = getelementptr inbounds nuw i32, ptr %186, i64 %indvars.iv.next81.i store i32 %.022.i.i, ptr %326, align 4, !tbaa !54 %327 = bitcast i32 %.022.i.i to float %328 = fcmp reassoc nsz arcp contract afn ogt float %.04670.i, %327 @@ -2098,10 +2098,10 @@ _ZL13libraw_swap32Phi.exit: ; preds = %_ZL13libraw_swap24P br label %.lr.ph72.i .lr.ph72.i: ; preds = %_Z17__DNG_HalfToFloatt.exit.i, %.lr.ph72.preheader.i - %indvars.iv81.i = phi i64 [ %235, %.lr.ph72.preheader.i ], [ %indvars.iv.next82.i, %_Z17__DNG_HalfToFloatt.exit.i ] + %indvars.iv80.i = phi i64 [ %235, %.lr.ph72.preheader.i ], [ %indvars.iv.next81.i, %_Z17__DNG_HalfToFloatt.exit.i ] %.04670.i = phi float [ 0.000000e+00, %.lr.ph72.preheader.i ], [ %.046..i, %_Z17__DNG_HalfToFloatt.exit.i ] - %indvars.iv.next82.i = add nsw i64 %indvars.iv81.i, -1 - %236 = getelementptr inbounds nuw i16, ptr %196, i64 %indvars.iv.next82.i + %indvars.iv.next81.i = add nsw i64 %indvars.iv80.i, -1 + %236 = getelementptr inbounds nuw i16, ptr %196, i64 %indvars.iv.next81.i %237 = load i16, ptr %236, align 2, !tbaa !136 %238 = zext i16 %237 to i32 %239 = lshr i32 %238, 15 @@ -2152,7 +2152,7 @@ _ZL13libraw_swap32Phi.exit: ; preds = %_ZL13libraw_swap24P _Z17__DNG_HalfToFloatt.exit.i: ; preds = %255, %252, %250, %248 %.022.i.i = phi i32 [ %249, %248 ], [ %261, %255 ], [ %254, %252 ], [ 0, %250 ] - %262 = getelementptr inbounds nuw i32, ptr %196, i64 %indvars.iv.next82.i + %262 = getelementptr inbounds nuw i32, ptr %196, i64 %indvars.iv.next81.i store i32 %.022.i.i, ptr %262, align 4, !tbaa !54 %263 = bitcast i32 %.022.i.i to float %264 = fcmp reassoc nsz arcp contract afn ogt float %.04670.i, %263 diff --git a/bench/duckdb/optimized/compile.ll b/bench/duckdb/optimized/compile.ll index a615c18067f..d8d0c3ef7a7 100644 --- a/bench/duckdb/optimized/compile.ll +++ b/bench/duckdb/optimized/compile.ll @@ -2950,29 +2950,29 @@ tailrecurse.backedge: ; preds = %22, %58, %63 br label %76 76: ; preds = %.lr.ph130, %90 - %indvars.iv147 = phi i64 [ 0, %.lr.ph130 ], [ %indvars.iv.next148, %90 ] + %indvars.iv146 = phi i64 [ 0, %.lr.ph130 ], [ %indvars.iv.next147, %90 ] %.064128 = phi i32 [ 0, %.lr.ph130 ], [ %.1, %90 ] - %77 = icmp eq i64 %indvars.iv147, 0 + %77 = icmp eq i64 %indvars.iv146, 0 br i1 %77, label %._crit_edge, label %78 ._crit_edge: ; preds = %76 - %.pre154 = load i8, ptr %7, align 1, !tbaa !75 - %.pre156 = load i8, ptr %8, align 1, !tbaa !75 + %.pre153 = load i8, ptr %7, align 1, !tbaa !75 + %.pre155 = load i8, ptr %8, align 1, !tbaa !75 br label %84 78: ; preds = %76 - %79 = getelementptr inbounds nuw [4 x i8], ptr %7, i64 0, i64 %indvars.iv147 + %79 = getelementptr inbounds nuw [4 x i8], ptr %7, i64 0, i64 %indvars.iv146 %80 = load i8, ptr %79, align 1, !tbaa !75 - %81 = getelementptr inbounds nuw [4 x i8], ptr %8, i64 0, i64 %indvars.iv147 + %81 = getelementptr inbounds nuw [4 x i8], ptr %8, i64 0, i64 %indvars.iv146 %82 = load i8, ptr %81, align 1, !tbaa !75 %83 = icmp ne i8 %80, %82 - %.not81 = icmp eq i64 %indvars.iv147, %75 + %.not81 = icmp eq i64 %indvars.iv146, %75 %or.cond87 = select i1 %83, i1 true, i1 %.not81 br i1 %or.cond87, label %88, label %84 84: ; preds = %._crit_edge, %78 - %85 = phi i8 [ %.pre156, %._crit_edge ], [ %80, %78 ] - %86 = phi i8 [ %.pre154, %._crit_edge ], [ %80, %78 ] + %85 = phi i8 [ %.pre155, %._crit_edge ], [ %80, %78 ] + %86 = phi i8 [ %.pre153, %._crit_edge ], [ %80, %78 ] %87 = call noundef i32 @_ZN10duckdb_re28Compiler20CachedRuneByteSuffixEhhbi(ptr noundef nonnull align 8 dereferenceable(228) %0, i8 noundef zeroext %86, i8 noundef zeroext %85, i1 noundef zeroext false, i32 noundef %.064128) br label %90 @@ -2982,9 +2982,9 @@ tailrecurse.backedge: ; preds = %22, %58, %63 90: ; preds = %84, %88 %.1 = phi i32 [ %87, %84 ], [ %89, %88 ] - %indvars.iv.next148 = add nuw nsw i64 %indvars.iv147, 1 - %exitcond150.not = icmp eq i64 %indvars.iv.next148, %wide.trip.count - br i1 %exitcond150.not, label %.loopexit, label %76, !llvm.loop !104 + %indvars.iv.next147 = add nuw nsw i64 %indvars.iv146, 1 + %exitcond149.not = icmp eq i64 %indvars.iv.next147, %wide.trip.count + br i1 %exitcond149.not, label %.loopexit, label %76, !llvm.loop !104 91: ; preds = %67 br i1 %73, label %.lr.ph126.preheader, label %.loopexit @@ -2993,7 +2993,7 @@ tailrecurse.backedge: ; preds = %22, %58, %63 %92 = add nsw i32 %68, -1 %93 = zext nneg i32 %92 to i64 %.phi.trans.insert = getelementptr inbounds nuw [4 x i8], ptr %7, i64 0, i64 %93 - %.phi.trans.insert151 = getelementptr inbounds nuw [4 x i8], ptr %8, i64 0, i64 %93 + %.phi.trans.insert150 = getelementptr inbounds nuw [4 x i8], ptr %8, i64 0, i64 %93 br label %.lr.ph126 .lr.ph126: ; preds = %.lr.ph126.preheader, %108 @@ -3004,7 +3004,7 @@ tailrecurse.backedge: ; preds = %22, %58, %63 .lr.ph126._crit_edge: ; preds = %.lr.ph126 %.pre = load i8, ptr %.phi.trans.insert, align 1, !tbaa !75 - %.pre152 = load i8, ptr %.phi.trans.insert151, align 1, !tbaa !75 + %.pre151 = load i8, ptr %.phi.trans.insert150, align 1, !tbaa !75 br label %102 95: ; preds = %.lr.ph126 @@ -3018,7 +3018,7 @@ tailrecurse.backedge: ; preds = %22, %58, %63 br i1 %or.cond4, label %102, label %106 102: ; preds = %.lr.ph126._crit_edge, %95 - %103 = phi i8 [ %.pre152, %.lr.ph126._crit_edge ], [ %99, %95 ] + %103 = phi i8 [ %.pre151, %.lr.ph126._crit_edge ], [ %99, %95 ] %104 = phi i8 [ %.pre, %.lr.ph126._crit_edge ], [ %97, %95 ] %105 = call noundef i32 @_ZN10duckdb_re28Compiler20CachedRuneByteSuffixEhhbi(ptr noundef nonnull align 8 dereferenceable(228) %0, i8 noundef zeroext %104, i8 noundef zeroext %103, i1 noundef zeroext false, i32 noundef %.3123) br label %108 diff --git a/bench/duckdb/optimized/src_backend_nodes_list.ll b/bench/duckdb/optimized/src_backend_nodes_list.ll index a8f1a822911..61a362f00d8 100644 --- a/bench/duckdb/optimized/src_backend_nodes_list.ll +++ b/bench/duckdb/optimized/src_backend_nodes_list.ll @@ -225,8 +225,8 @@ define hidden noundef ptr @_ZN17duckdb_libpgquery8list_nthEPKNS_6PGListEi(ptr no _ZN17duckdb_libpgquery13list_nth_cellEPKNS_6PGListEi.exit: ; preds = %.preheader.i, %7 %.08.i = phi ptr [ %9, %7 ], [ %.0.i, %.preheader.i ] - %11 = load ptr, ptr %.08.i, align 8, !tbaa !16 - ret ptr %11 + %12 = load ptr, ptr %.08.i, align 8, !tbaa !16 + ret ptr %12 } ; Function Attrs: mustprogress uwtable diff --git a/bench/duckdb/optimized/src_backend_parser_scan.ll b/bench/duckdb/optimized/src_backend_parser_scan.ll index 1d4218d44d3..7f2444a5d3c 100644 --- a/bench/duckdb/optimized/src_backend_parser_scan.ll +++ b/bench/duckdb/optimized/src_backend_parser_scan.ll @@ -265,15 +265,15 @@ _ZN17duckdb_libpgqueryL26core_yyensure_buffer_stackEPv.exit: ; preds = %24, %.cr %110 = sext i16 %109 to i32 %111 = getelementptr inbounds nuw i8, ptr %.1782, i64 1 %.not825 = icmp eq i16 %109, 308 - br i1 %.not825, label %.backedge.sink.split2373, label %73, !llvm.loop !40 + br i1 %.not825, label %.backedge.sink.split2371, label %73, !llvm.loop !40 -.backedge.sink.split2373: ; preds = %._crit_edge, %.backedge.sink.split2373.backedge +.backedge.sink.split2371: ; preds = %._crit_edge, %.backedge.sink.split2371.backedge %.1788.ph = phi ptr [ %.1788.ph.be, %.backedge.sink.split2373.backedge ], [ %.0787, %._crit_edge ] %112 = load ptr, ptr %62, align 8, !tbaa !37 %113 = load i32, ptr %61, align 8, !tbaa !36 br label %.backedge -.backedge: ; preds = %.backedge.backedge, %.backedge.sink.split2373 +.backedge: ; preds = %.backedge.backedge, %.backedge.sink.split2371 %.1788 = phi ptr [ %.1788.ph, %.backedge.sink.split2373 ], [ %1764, %.backedge.backedge ] %.2783 = phi ptr [ %112, %.backedge.sink.split2373 ], [ %1767, %.backedge.backedge ] %.3780 = phi i32 [ %113, %.backedge.sink.split2373 ], [ %.3780.be, %.backedge.backedge ] @@ -399,7 +399,7 @@ _ZN17duckdb_libpgqueryL26core_yyensure_buffer_stackEPv.exit: ; preds = %24, %.cr 123: ; preds = %122 %124 = load i8, ptr %59, align 8, !tbaa !33 store i8 %124, ptr %.2783, align 1, !tbaa !32 - br label %.backedge.sink.split2373.backedge + br label %.backedge.sink.split2371.backedge 125: ; preds = %122 %126 = load ptr, ptr %63, align 8, !tbaa !30 @@ -791,11 +791,11 @@ _ZN17duckdb_libpgqueryL10addlitcharEhPv.exit868: ; preds = %._crit_edge.i865, % %344 = load i32, ptr %343, align 4, !tbaa !48 %345 = tail call noundef i32 @_ZN17duckdb_libpgquery19scanner_errpositionEiPv(i32 noundef %344, ptr noundef nonnull %2) %346 = tail call noundef i32 (i32, ...) @_ZN17duckdb_libpgquery7ereportEiz(i32 noundef 3, i32 noundef %345) - %.pre1832 = load ptr, ptr %2, align 8, !tbaa !43 + %.pre1830 = load ptr, ptr %2, align 8, !tbaa !43 br label %347 347: ; preds = %339, %327 - %348 = phi ptr [ %.pre1832, %339 ], [ %329, %327 ] + %348 = phi ptr [ %.pre1830, %339 ], [ %329, %327 ] store i32 21, ptr %60, align 4, !tbaa !18 %349 = getelementptr inbounds nuw i8, ptr %348, i64 48 store i32 0, ptr %349, align 8, !tbaa !50 @@ -825,11 +825,11 @@ _ZN17duckdb_libpgqueryL10addlitcharEhPv.exit868: ; preds = %._crit_edge.i865, % %361 = getelementptr inbounds nuw i8, ptr %354, i64 48 %362 = load i32, ptr %361, align 8, !tbaa !50 %363 = tail call noundef zeroext i1 @_ZN17duckdb_libpgquery14pg_verifymbstrEPKcib(ptr noundef %360, i32 noundef %362, i1 noundef zeroext false) - %.pre1831 = load ptr, ptr %2, align 8, !tbaa !43 + %.pre1829 = load ptr, ptr %2, align 8, !tbaa !43 br label %364 364: ; preds = %358, %350 - %365 = phi ptr [ %.pre1831, %358 ], [ %354, %350 ] + %365 = phi ptr [ %.pre1829, %358 ], [ %354, %350 ] %366 = getelementptr inbounds nuw i8, ptr %365, i64 48 %367 = load i32, ptr %366, align 8, !tbaa !50 %368 = add nsw i32 %367, 1 @@ -905,13 +905,13 @@ _ZN17duckdb_libpgqueryL17check_uescapecharEh.exit: ; preds = %switch.early.test. br i1 %398, label %_ZN17duckdb_libpgqueryL17check_uescapecharEh.exit._ZN17duckdb_libpgqueryL17check_uescapecharEh.exit.thread_crit_edge, label %410 _ZN17duckdb_libpgqueryL17check_uescapecharEh.exit._ZN17duckdb_libpgqueryL17check_uescapecharEh.exit.thread_crit_edge: ; preds = %_ZN17duckdb_libpgqueryL17check_uescapecharEh.exit - %.pre1829 = load ptr, ptr %63, align 8, !tbaa !30 - %.pre1830 = load i64, ptr %64, align 8, !tbaa !41 + %.pre1827 = load ptr, ptr %63, align 8, !tbaa !30 + %.pre1828 = load i64, ptr %64, align 8, !tbaa !41 br label %_ZN17duckdb_libpgqueryL17check_uescapecharEh.exit.thread _ZN17duckdb_libpgqueryL17check_uescapecharEh.exit.thread: ; preds = %_ZN17duckdb_libpgqueryL17check_uescapecharEh.exit._ZN17duckdb_libpgqueryL17check_uescapecharEh.exit.thread_crit_edge, %386, %switch.early.test.i, %switch.early.test.i, %switch.early.test.i - %399 = phi i64 [ %.pre1830, %_ZN17duckdb_libpgqueryL17check_uescapecharEh.exit._ZN17duckdb_libpgqueryL17check_uescapecharEh.exit.thread_crit_edge ], [ %388, %386 ], [ %388, %switch.early.test.i ], [ %388, %switch.early.test.i ], [ %388, %switch.early.test.i ] - %400 = phi ptr [ %.pre1829, %_ZN17duckdb_libpgqueryL17check_uescapecharEh.exit._ZN17duckdb_libpgqueryL17check_uescapecharEh.exit.thread_crit_edge ], [ %387, %386 ], [ %387, %switch.early.test.i ], [ %387, %switch.early.test.i ], [ %387, %switch.early.test.i ] + %399 = phi i64 [ %.pre1828, %_ZN17duckdb_libpgqueryL17check_uescapecharEh.exit._ZN17duckdb_libpgqueryL17check_uescapecharEh.exit.thread_crit_edge ], [ %388, %386 ], [ %388, %switch.early.test.i ], [ %388, %switch.early.test.i ], [ %388, %switch.early.test.i ] + %400 = phi ptr [ %.pre1827, %_ZN17duckdb_libpgqueryL17check_uescapecharEh.exit._ZN17duckdb_libpgqueryL17check_uescapecharEh.exit.thread_crit_edge ], [ %387, %386 ], [ %387, %switch.early.test.i ], [ %387, %switch.early.test.i ], [ %387, %switch.early.test.i ] %401 = load ptr, ptr %2, align 8, !tbaa !43 %402 = load ptr, ptr %401, align 8, !tbaa !44 %403 = ptrtoint ptr %400 to i64 @@ -1837,13 +1837,13 @@ _ZN17duckdb_libpgqueryL10addlitcharEhPv.exit959: ; preds = %._crit_edge.i956, % 914: ; preds = %909 tail call void @_ZN17duckdb_libpgquery15scanner_yyerrorEPKcPv(ptr noundef nonnull @.str.13, ptr noundef nonnull %2) - %.pre1826 = load ptr, ptr %2, align 8, !tbaa !43 - %.phi.trans.insert1827 = getelementptr inbounds nuw i8, ptr %.pre1826, i64 48 - %.pre1828 = load i32, ptr %.phi.trans.insert1827, align 8, !tbaa !50 + %.pre1824 = load ptr, ptr %2, align 8, !tbaa !43 + %.phi.trans.insert1825 = getelementptr inbounds nuw i8, ptr %.pre1824, i64 48 + %.pre1826 = load i32, ptr %.phi.trans.insert1825, align 8, !tbaa !50 br label %915 915: ; preds = %914, %909 - %916 = phi i32 [ %.pre1828, %914 ], [ %912, %909 ] + %916 = phi i32 [ %.pre1826, %914 ], [ %912, %909 ] %917 = add nsw i32 %916, 1 %918 = sext i32 %917 to i64 %919 = tail call noundef ptr @_ZN17duckdb_libpgquery6pallocEm(i64 noundef %918) @@ -1939,13 +1939,13 @@ _ZN17duckdb_libpgqueryL17check_uescapecharEh.exit965: ; preds = %switch.early.te br i1 %959, label %_ZN17duckdb_libpgqueryL17check_uescapecharEh.exit965._ZN17duckdb_libpgqueryL17check_uescapecharEh.exit965.thread_crit_edge, label %971 _ZN17duckdb_libpgqueryL17check_uescapecharEh.exit965._ZN17duckdb_libpgqueryL17check_uescapecharEh.exit965.thread_crit_edge: ; preds = %_ZN17duckdb_libpgqueryL17check_uescapecharEh.exit965 - %.pre1824 = load ptr, ptr %63, align 8, !tbaa !30 - %.pre1825 = load i64, ptr %64, align 8, !tbaa !41 + %.pre1822 = load ptr, ptr %63, align 8, !tbaa !30 + %.pre1823 = load i64, ptr %64, align 8, !tbaa !41 br label %_ZN17duckdb_libpgqueryL17check_uescapecharEh.exit965.thread _ZN17duckdb_libpgqueryL17check_uescapecharEh.exit965.thread: ; preds = %_ZN17duckdb_libpgqueryL17check_uescapecharEh.exit965._ZN17duckdb_libpgqueryL17check_uescapecharEh.exit965.thread_crit_edge, %947, %switch.early.test.i963, %switch.early.test.i963, %switch.early.test.i963 - %960 = phi i64 [ %.pre1825, %_ZN17duckdb_libpgqueryL17check_uescapecharEh.exit965._ZN17duckdb_libpgqueryL17check_uescapecharEh.exit965.thread_crit_edge ], [ %949, %947 ], [ %949, %switch.early.test.i963 ], [ %949, %switch.early.test.i963 ], [ %949, %switch.early.test.i963 ] - %961 = phi ptr [ %.pre1824, %_ZN17duckdb_libpgqueryL17check_uescapecharEh.exit965._ZN17duckdb_libpgqueryL17check_uescapecharEh.exit965.thread_crit_edge ], [ %948, %947 ], [ %948, %switch.early.test.i963 ], [ %948, %switch.early.test.i963 ], [ %948, %switch.early.test.i963 ] + %960 = phi i64 [ %.pre1823, %_ZN17duckdb_libpgqueryL17check_uescapecharEh.exit965._ZN17duckdb_libpgqueryL17check_uescapecharEh.exit965.thread_crit_edge ], [ %949, %947 ], [ %949, %switch.early.test.i963 ], [ %949, %switch.early.test.i963 ], [ %949, %switch.early.test.i963 ] + %961 = phi ptr [ %.pre1822, %_ZN17duckdb_libpgqueryL17check_uescapecharEh.exit965._ZN17duckdb_libpgqueryL17check_uescapecharEh.exit965.thread_crit_edge ], [ %948, %947 ], [ %948, %switch.early.test.i963 ], [ %948, %switch.early.test.i963 ], [ %948, %switch.early.test.i963 ] %962 = load ptr, ptr %2, align 8, !tbaa !43 %963 = load ptr, ptr %962, align 8, !tbaa !44 %964 = ptrtoint ptr %961 to i64 @@ -2320,11 +2320,11 @@ _ZN17duckdb_libpgqueryL6addlitEPciPv.exit981: ; preds = %._crit_edge.i978, % %1190 = trunc nuw nsw i64 %indvars.iv1815 to i32 br label %.critedge -.critedge.loopexit1855.split.loop.exit: ; preds = %.lr.ph1595 +.critedge.loopexit1853.split.loop.exit: ; preds = %.lr.ph1595 %1191 = trunc nuw nsw i64 %indvars.iv1815 to i32 br label %.critedge -.critedge: ; preds = %._crit_edge1592, %.critedge.loopexit1855.split.loop.exit, %.critedge.loopexit, %1167 +.critedge: ; preds = %._crit_edge1592, %.critedge.loopexit1853.split.loop.exit, %.critedge.loopexit, %1167 %.17991069 = phi i32 [ %.0798, %1167 ], [ %1190, %.critedge.loopexit ], [ %1191, %.critedge.loopexit1855.split.loop.exit ], [ 1, %._crit_edge1592 ] %1192 = load i8, ptr %1169, align 1, !tbaa !32 %1193 = icmp eq i8 %1192, 63 @@ -2662,11 +2662,11 @@ sub_11061: ; preds = %sub_11056, %.tail10 1384: ; preds = %1368 %1385 = getelementptr inbounds nuw i8, ptr %1370, i64 %1380 store i8 0, ptr %1385, align 1, !tbaa !32 - %.pre1823 = load ptr, ptr %2, align 8, !tbaa !43 + %.pre1821 = load ptr, ptr %2, align 8, !tbaa !43 br label %1386 1386: ; preds = %1384, %1368 - %1387 = phi ptr [ %.pre1823, %1384 ], [ %1372, %1368 ] + %1387 = phi ptr [ %.pre1821, %1384 ], [ %1372, %1368 ] %1388 = getelementptr inbounds nuw i8, ptr %1387, i64 16 %1389 = load ptr, ptr %1388, align 8, !tbaa !54 %1390 = getelementptr inbounds nuw i8, ptr %1387, i64 24 @@ -2756,9 +2756,9 @@ sub_11061: ; preds = %sub_11056, %.tail10 %1443 = getelementptr inbounds nuw i8, ptr %1442, i64 64 %1444 = load i32, ptr %1443, align 8, !tbaa !70 %1445 = icmp eq i32 %1444, 0 - br i1 %1445, label %1446, label %._crit_edge1820 + br i1 %1445, label %1446, label %._crit_edge1818 -._crit_edge1820: ; preds = %1436 +._crit_edge1818: ; preds = %1436 %.pre = load i64, ptr %67, align 8, !tbaa !27 br label %1450 @@ -2771,7 +2771,7 @@ sub_11061: ; preds = %sub_11056, %.tail10 store i32 1, ptr %1443, align 8, !tbaa !70 br label %1450 -1450: ; preds = %._crit_edge1820, %1446 +1450: ; preds = %._crit_edge1818, %1446 %1451 = phi i32 [ %1444, %._crit_edge1820 ], [ 1, %1446 ] %1452 = phi i64 [ %.pre, %._crit_edge1820 ], [ %1448, %1446 ] %1453 = load ptr, ptr %58, align 8, !tbaa !29 @@ -2788,8 +2788,8 @@ sub_11061: ; preds = %sub_11056, %.tail10 %1461 = trunc i64 %1460 to i32 %1462 = load ptr, ptr %63, align 8, !tbaa !30 %1463 = shl i64 %1460, 32 - %sext2125 = add i64 %1463, -4294967296 - %1464 = ashr exact i64 %sext2125, 32 + %sext2123 = add i64 %1463, -4294967296 + %1464 = ashr exact i64 %sext2123, 32 %1465 = getelementptr inbounds i8, ptr %1462, i64 %1464 store ptr %1465, ptr %58, align 8, !tbaa !29 %1466 = load i32, ptr %60, align 4, !tbaa !18 @@ -2913,13 +2913,13 @@ _ZN17duckdb_libpgqueryL16yy_try_NUL_transEiPv.exit: ; preds = %.lr.ph.i985, %151 %1531 = getelementptr inbounds [1290 x i16], ptr @_ZN17duckdb_libpgqueryL6yy_nxtE, i64 0, i64 %.lcssa.i987 %1532 = load i16, ptr %1531, align 2, !tbaa !34 switch i16 %1532, label %1533 [ - i16 308, label %.backedge.sink.split2373.backedge - i16 0, label %.backedge.sink.split2373.backedge + i16 308, label %.backedge.sink.split2371.backedge + i16 0, label %.backedge.sink.split2371.backedge ] -.backedge.sink.split2373.backedge: ; preds = %_ZN17duckdb_libpgqueryL16yy_try_NUL_transEiPv.exit, %_ZN17duckdb_libpgqueryL16yy_try_NUL_transEiPv.exit, %123 +.backedge.sink.split2371.backedge: ; preds = %_ZN17duckdb_libpgqueryL16yy_try_NUL_transEiPv.exit, %_ZN17duckdb_libpgqueryL16yy_try_NUL_transEiPv.exit, %123 %.1788.ph.be = phi ptr [ %.1788, %123 ], [ %1462, %_ZN17duckdb_libpgqueryL16yy_try_NUL_transEiPv.exit ], [ %1462, %_ZN17duckdb_libpgqueryL16yy_try_NUL_transEiPv.exit ] - br label %.backedge.sink.split2373 + br label %.backedge.sink.split2371 1533: ; preds = %_ZN17duckdb_libpgqueryL16yy_try_NUL_transEiPv.exit %1534 = sext i16 %1532 to i32 @@ -2981,11 +2981,11 @@ _ZN17duckdb_libpgqueryL16yy_try_NUL_transEiPv.exit: ; preds = %.lr.ph.i985, %151 %.phi.trans.insert.i996 = getelementptr inbounds nuw ptr, ptr %.pre.i995, i64 %.pre185.i %.pre186.i = load ptr, ptr %.phi.trans.insert.i996, align 8, !tbaa !21 %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %.pre186.i, i64 64 - %.pre1821 = load i32, ptr %.phi.trans.insert, align 8, !tbaa !70 + %.pre1819 = load i32, ptr %.phi.trans.insert, align 8, !tbaa !70 br label %._crit_edge.i988 ._crit_edge.i988: ; preds = %._crit_edge.loopexit.i, %1550 - %1559 = phi i32 [ %.pre1821, %._crit_edge.loopexit.i ], [ %1451, %1550 ] + %1559 = phi i32 [ %.pre1819, %._crit_edge.loopexit.i ], [ %1451, %1550 ] %1560 = phi ptr [ %.pre186.i, %._crit_edge.loopexit.i ], [ %1442, %1550 ] %1561 = icmp eq i32 %1559, 2 br i1 %1561, label %.thread160.i, label %1562 @@ -3318,7 +3318,7 @@ _ZN17duckdb_libpgqueryL18yy_get_next_bufferEPv.exit: ; preds = %._crit_edge194.i ] _ZN17duckdb_libpgqueryL18yy_get_next_bufferEPv.exit._ZN17duckdb_libpgqueryL18yy_get_next_bufferEPv.exit.thread1044_crit_edge: ; preds = %_ZN17duckdb_libpgqueryL18yy_get_next_bufferEPv.exit - %.pre1822 = load i64, ptr %67, align 8, !tbaa !27 + %.pre1820 = load i64, ptr %67, align 8, !tbaa !27 br label %_ZN17duckdb_libpgqueryL18yy_get_next_bufferEPv.exit.thread1044 1713: ; preds = %_ZN17duckdb_libpgqueryL18yy_get_next_bufferEPv.exit @@ -3327,8 +3327,8 @@ _ZN17duckdb_libpgqueryL18yy_get_next_bufferEPv.exit._ZN17duckdb_libpgqueryL18yy_ %1716 = sub i64 %1714, %1715 %1717 = trunc i64 %1716 to i32 %1718 = shl i64 %1716, 32 - %sext2126 = add i64 %1718, -4294967296 - %1719 = ashr exact i64 %sext2126, 32 + %sext2124 = add i64 %1718, -4294967296 + %1719 = ashr exact i64 %sext2124, 32 %1720 = getelementptr inbounds i8, ptr %1712, i64 %1719 store ptr %1720, ptr %58, align 8, !tbaa !29 %1721 = load i32, ptr %60, align 4, !tbaa !18 @@ -3411,7 +3411,7 @@ _ZN17duckdb_libpgqueryL18yy_get_next_bufferEPv.exit._ZN17duckdb_libpgqueryL18yy_ _ZN17duckdb_libpgqueryL18yy_get_next_bufferEPv.exit.thread1044: ; preds = %1547, %_ZN17duckdb_libpgqueryL18yy_get_next_bufferEPv.exit._ZN17duckdb_libpgqueryL18yy_get_next_bufferEPv.exit.thread1044_crit_edge %1764 = phi ptr [ %1712, %_ZN17duckdb_libpgqueryL18yy_get_next_bufferEPv.exit._ZN17duckdb_libpgqueryL18yy_get_next_bufferEPv.exit.thread1044_crit_edge ], [ %1537, %1547 ] - %1765 = phi i64 [ %.pre1822, %_ZN17duckdb_libpgqueryL18yy_get_next_bufferEPv.exit._ZN17duckdb_libpgqueryL18yy_get_next_bufferEPv.exit.thread1044_crit_edge ], [ %1452, %1547 ] + %1765 = phi i64 [ %.pre1820, %_ZN17duckdb_libpgqueryL18yy_get_next_bufferEPv.exit._ZN17duckdb_libpgqueryL18yy_get_next_bufferEPv.exit.thread1044_crit_edge ], [ %1452, %1547 ] %1766 = phi ptr [ %1712, %_ZN17duckdb_libpgqueryL18yy_get_next_bufferEPv.exit._ZN17duckdb_libpgqueryL18yy_get_next_bufferEPv.exit.thread1044_crit_edge ], [ %1455, %1547 ] %1767 = getelementptr inbounds nuw i8, ptr %1766, i64 %1765 store ptr %1767, ptr %58, align 8, !tbaa !29 @@ -3497,7 +3497,7 @@ _ZN17duckdb_libpgqueryL18yy_get_next_bufferEPv.exit.thread1044: ; preds = %1547, %exitcond.not.i1025 = icmp eq ptr %1810, %1767 br i1 %exitcond.not.i1025, label %.backedge.backedge, label %.lr.ph32.i1013, !llvm.loop !73 -default.unreachable1833: ; preds = %_ZN17duckdb_libpgqueryL18yy_get_next_bufferEPv.exit +default.unreachable1831: ; preds = %_ZN17duckdb_libpgqueryL18yy_get_next_bufferEPv.exit unreachable _ZN17duckdb_libpgqueryL21yy_get_previous_stateEPv.exit1011: ; preds = %_ZN17duckdb_libpgqueryL18yy_get_next_bufferEPv.exit, %1547 diff --git a/bench/eastl/optimized/EAScanfCore.ll b/bench/eastl/optimized/EAScanfCore.ll index 49d7217005a..9611a9a1f76 100644 --- a/bench/eastl/optimized/EAScanfCore.ll +++ b/bench/eastl/optimized/EAScanfCore.ll @@ -4400,7 +4400,7 @@ while.end236: ; preds = %while.end236.loopex br i1 %cmp254257, label %land.rhs255.preheader, label %while.end265 land.rhs255.preheader: ; preds = %45 - %conv251 = zext nneg i16 %.pre to i32 + %47 = zext nneg i16 %.pre to i32 %47 = zext nneg i16 %.pre to i64 %48 = add i32 %nExponentAdd.1324, %conv251 %49 = add i32 %48, -1 @@ -4421,7 +4421,7 @@ while.body262: ; preds = %land.rhs255 %exitcond289.not = icmp eq i64 %51, 1 br i1 %exitcond289.not, label %if.then267, label %land.rhs255, !llvm.loop !42 -while.end265: ; preds = %45 +while.end265:; preds = %45 %cmp266 = icmp eq i16 %.pre, 1 br i1 %cmp266, label %if.then267, label %if.else271 @@ -5482,7 +5482,7 @@ if.end94: ; preds = %if.then86, %if.then sw.bb99: ; preds = %while.body %10 = and i32 %c.0266, 65280 %cmp.i161 = icmp eq i32 %10, 0 - br i1 %cmp.i161, label %_ZN2EA4StdC7ToupperEDs.exit, label %while.end236.loopexit440 + br i1 %cmp.i161, label %_ZN2EA4StdC7ToupperEDs.exit, label %while.end236.loopexit433 _ZN2EA4StdC7ToupperEDs.exit: ; preds = %sw.bb99 %conv100.mask = and i32 %c.0266, 255 @@ -5490,7 +5490,7 @@ _ZN2EA4StdC7ToupperEDs.exit: ; preds = %sw.bb99 %arrayidx.i165 = getelementptr inbounds nuw [256 x i8], ptr @_ZN2EA4StdC17EASTDC_WUPPER_MAPE, i64 0, i64 %conv.i164 %11 = load i8, ptr %arrayidx.i165, align 1 %cmp103 = icmp eq i8 %11, 69 - br i1 %cmp103, label %if.then104, label %while.end236.loopexit440 + br i1 %cmp103, label %if.then104, label %while.end236.loopexit433 if.then104: ; preds = %_ZN2EA4StdC7ToupperEDs.exit %call105 = tail call noundef i32 %pReadFunction(i32 noundef 2, i32 noundef 0, ptr noundef %pContext) @@ -5542,7 +5542,7 @@ sw.bb140: ; preds = %while.body %conv141 = trunc i32 %c.0266 to i16 %13 = add i16 %conv141, -58 %cmp.i168 = icmp ult i16 %13, -10 - br i1 %cmp.i168, label %while.end236.loopexit440, label %if.then144 + br i1 %cmp.i168, label %while.end236.loopexit433, label %if.then144 if.then144: ; preds = %sw.bb140 %mul = mul nsw i32 %nExponent.0261, 10 @@ -5721,9 +5721,9 @@ sw.epilog235: ; preds = %sw.bb133, %if.else1 %or.cond146.not204 = select i1 %cmp.not, i1 %cmp2.not, i1 false %tobool.not = icmp samesign ult i32 %state.1, 16384 %or.cond147 = select i1 %or.cond146.not204, i1 %tobool.not, i1 false - br i1 %or.cond147, label %while.body, label %while.end236.loopexit440, !llvm.loop !50 + br i1 %or.cond147, label %while.body, label %while.end236.loopexit433, !llvm.loop !50 -while.end236.loopexit440: ; preds = %sw.epilog235, %_ZN2EA4StdC7ToupperEDs.exit, %sw.bb140, %sw.bb99 +while.end236.loopexit433: ; preds = %sw.epilog235, %_ZN2EA4StdC7ToupperEDs.exit, %sw.bb140, %sw.bb99 %c.1348.ph = phi i32 [ %c.1, %sw.epilog235 ], [ %c.0266, %sw.bb99 ], [ %c.0266, %sw.bb140 ], [ %c.0266, %_ZN2EA4StdC7ToupperEDs.exit ] %state.1347.ph = phi i32 [ %state.1, %sw.epilog235 ], [ 16384, %sw.bb99 ], [ 16384, %sw.bb140 ], [ 16384, %_ZN2EA4StdC7ToupperEDs.exit ] %bExponentNegative.1346.ph = phi i1 [ %bExponentNegative.1, %sw.epilog235 ], [ %bExponentNegative.0264, %sw.bb99 ], [ %bExponentNegative.0264, %sw.bb140 ], [ %bExponentNegative.0264, %_ZN2EA4StdC7ToupperEDs.exit ] @@ -5737,7 +5737,7 @@ while.end236.loopexit440: ; preds = %sw.epilog235, %_ZN2 %28 = icmp eq i32 %27, 0 br label %while.end236 -while.end236: ; preds = %lor.rhs, %while.end236.loopexit440, %while.end197, %while.end218, %while.end +while.end236: ; preds = %lor.rhs, %while.end236.loopexit433, %while.end197, %while.end218, %while.end %c.1348 = phi i32 [ %c.4247, %while.end197 ], [ %c.5.lcssa, %while.end218 ], [ %c.3253, %while.end ], [ %c.1348.ph, %while.end236.loopexit440 ], [ %c.5250, %lor.rhs ] %state.1347 = phi i1 [ true, %while.end197 ], [ true, %while.end218 ], [ true, %while.end ], [ %28, %while.end236.loopexit440 ], [ true, %lor.rhs ] %bExponentNegative.1346 = phi i1 [ %bExponentNegative.0264, %while.end197 ], [ %bExponentNegative.0264, %while.end218 ], [ %bExponentNegative.0264, %while.end ], [ %bExponentNegative.1346.ph, %while.end236.loopexit440 ], [ %bExponentNegative.0264, %lor.rhs ] @@ -5774,7 +5774,7 @@ while.end236: ; preds = %lor.rhs, %while.end br i1 %cmp254275, label %land.rhs255.preheader, label %while.end265 land.rhs255.preheader: ; preds = %34 - %conv251 = zext nneg i16 %.pre to i32 + %36 = zext nneg i16 %.pre to i32 %36 = zext nneg i16 %.pre to i64 %37 = add i32 %nExponentAdd.1344, %conv251 %38 = add i32 %37, -1 @@ -5795,7 +5795,7 @@ while.body262: ; preds = %land.rhs255 %exitcond309.not = icmp eq i64 %40, 1 br i1 %exitcond309.not, label %if.then267, label %land.rhs255, !llvm.loop !51 -while.end265: ; preds = %34 +while.end265:; preds = %34 %cmp266 = icmp eq i16 %.pre, 1 br i1 %cmp266, label %if.then267, label %if.else271 @@ -6836,14 +6836,14 @@ if.end89: ; preds = %if.then81, %if.then sw.bb94: ; preds = %while.body %cmp.i164 = icmp ult i32 %c.0272, 256 - br i1 %cmp.i164, label %_ZN2EA4StdC7ToupperEDi.exit, label %while.end221.loopexit446 + br i1 %cmp.i164, label %_ZN2EA4StdC7ToupperEDi.exit, label %while.end221.loopexit439 _ZN2EA4StdC7ToupperEDi.exit: ; preds = %sw.bb94 %conv1.i = zext nneg i32 %c.0272 to i64 %arrayidx.i167 = getelementptr inbounds nuw [256 x i8], ptr @_ZN2EA4StdC17EASTDC_WUPPER_MAPE, i64 0, i64 %conv1.i %9 = load i8, ptr %arrayidx.i167, align 1 %cmp96 = icmp eq i8 %9, 69 - br i1 %cmp96, label %if.then97, label %while.end221.loopexit446 + br i1 %cmp96, label %if.then97, label %while.end221.loopexit439 if.then97: ; preds = %_ZN2EA4StdC7ToupperEDi.exit %call98 = tail call noundef i32 %pReadFunction(i32 noundef 2, i32 noundef 0, ptr noundef %pContext) @@ -6893,7 +6893,7 @@ if.then127: ; preds = %sw.bb125 sw.bb132: ; preds = %while.body %sub.i171 = add i32 %c.0272, -48 %cmp.i172 = icmp ugt i32 %sub.i171, 9 - br i1 %cmp.i172, label %while.end221.loopexit446, label %if.then135 + br i1 %cmp.i172, label %while.end221.loopexit439, label %if.then135 if.then135: ; preds = %sw.bb132 %mul = mul nsw i32 %nExponent.0267, 10 @@ -7063,9 +7063,9 @@ sw.epilog220: ; preds = %sw.bb125, %if.else1 %or.cond146.not210 = select i1 %cmp.not, i1 %cmp2.not, i1 false %tobool.not = icmp samesign ult i32 %state.1, 16384 %or.cond147 = select i1 %or.cond146.not210, i1 %tobool.not, i1 false - br i1 %or.cond147, label %while.body, label %while.end221.loopexit446, !llvm.loop !59 + br i1 %or.cond147, label %while.body, label %while.end221.loopexit439, !llvm.loop !59 -while.end221.loopexit446: ; preds = %sw.epilog220, %_ZN2EA4StdC7ToupperEDi.exit, %sw.bb132, %sw.bb94 +while.end221.loopexit439: ; preds = %sw.epilog220, %_ZN2EA4StdC7ToupperEDi.exit, %sw.bb132, %sw.bb94 %c.1354.ph = phi i32 [ %c.1, %sw.epilog220 ], [ %c.0272, %sw.bb94 ], [ %c.0272, %sw.bb132 ], [ %c.0272, %_ZN2EA4StdC7ToupperEDi.exit ] %state.1353.ph = phi i32 [ %state.1, %sw.epilog220 ], [ 16384, %sw.bb94 ], [ 16384, %sw.bb132 ], [ 16384, %_ZN2EA4StdC7ToupperEDi.exit ] %bExponentNegative.1352.ph = phi i1 [ %bExponentNegative.1, %sw.epilog220 ], [ %bExponentNegative.0270, %sw.bb94 ], [ %bExponentNegative.0270, %sw.bb132 ], [ %bExponentNegative.0270, %_ZN2EA4StdC7ToupperEDi.exit ] @@ -7079,7 +7079,7 @@ while.end221.loopexit446: ; preds = %sw.epilog220, %_ZN2 %23 = icmp eq i32 %22, 0 br label %while.end221 -while.end221: ; preds = %lor.rhs, %while.end221.loopexit446, %while.end184, %while.end203, %while.end +while.end221: ; preds = %lor.rhs, %while.end221.loopexit439, %while.end184, %while.end203, %while.end %c.1354 = phi i32 [ %c.4253, %while.end184 ], [ %c.5.lcssa, %while.end203 ], [ %c.3259, %while.end ], [ %c.1354.ph, %while.end221.loopexit446 ], [ %c.5256, %lor.rhs ] %state.1353 = phi i1 [ true, %while.end184 ], [ true, %while.end203 ], [ true, %while.end ], [ %23, %while.end221.loopexit446 ], [ true, %lor.rhs ] %bExponentNegative.1352 = phi i1 [ %bExponentNegative.0270, %while.end184 ], [ %bExponentNegative.0270, %while.end203 ], [ %bExponentNegative.0270, %while.end ], [ %bExponentNegative.1352.ph, %while.end221.loopexit446 ], [ %bExponentNegative.0270, %lor.rhs ] @@ -7116,7 +7116,7 @@ while.end221: ; preds = %lor.rhs, %while.end br i1 %cmp239281, label %land.rhs240.preheader, label %while.end250 land.rhs240.preheader: ; preds = %29 - %conv236 = zext nneg i16 %.pre to i32 + %31 = zext nneg i16 %.pre to i32 %31 = zext nneg i16 %.pre to i64 %32 = add i32 %nExponentAdd.1350, %conv236 %33 = add i32 %32, -1 @@ -7137,7 +7137,7 @@ while.body247: ; preds = %land.rhs240 %exitcond315.not = icmp eq i64 %35, 1 br i1 %exitcond315.not, label %if.then252, label %land.rhs240, !llvm.loop !60 -while.end250: ; preds = %29 +while.end250:; preds = %29 %cmp251 = icmp eq i16 %.pre, 1 br i1 %cmp251, label %if.then252, label %if.else256 diff --git a/bench/eastl/optimized/EATextUtil.ll b/bench/eastl/optimized/EATextUtil.ll index a993e6487b4..82447765ff6 100644 --- a/bench/eastl/optimized/EATextUtil.ll +++ b/bench/eastl/optimized/EATextUtil.ll @@ -2976,8 +2976,8 @@ land.rhs.i: ; preds = %while.body.i, %land while.body.i: ; preds = %land.rhs.i %indvars.iv.next82.i = add nsw i64 %indvars.iv81.i, -1 - %exitcond.not.i = icmp eq i64 %indvars.iv81.i, 0 - br i1 %exitcond.not.i, label %while.end.i, label %land.rhs.i, !llvm.loop !41 + %cmp19.i = icmp eq i64 %indvars.iv81.i, 0 + br i1 %cmp19.i, label %while.end.i, label %land.rhs.i, !llvm.loop !41 while.end.i: ; preds = %while.body.i, %land.rhs.i, %if.else.i %g.2.lcssa.i = phi i32 [ %spec.select.i, %if.else.i ], [ %8, %land.rhs.i ], [ -1, %while.body.i ] @@ -3003,23 +3003,23 @@ for.body44.i.preheader: ; preds = %for.body36.i, %for. br label %for.body44.i for.body36.i: ; preds = %for.body36.i, %for.body36.preheader.i - %indvars.iv88.i = phi i64 [ 0, %for.body36.preheader.i ], [ %indvars.iv.next89.i, %for.body36.i ] - %arrayidx38.i = getelementptr inbounds nuw i32, ptr %pPatternBuffer1, i64 %indvars.iv88.i + %indvars.iv87.i = phi i64 [ 0, %for.body36.preheader.i ], [ %indvars.iv.next88.i, %for.body36.i ] + %arrayidx38.i = getelementptr inbounds nuw i32, ptr %pPatternBuffer1, i64 %indvars.iv87.i store i32 %nPatternLength, ptr %arrayidx38.i, align 4 - %indvars.iv.next89.i = add nuw nsw i64 %indvars.iv88.i, 1 - %exitcond91.not.i = icmp eq i64 %indvars.iv.next89.i, %wide.trip.count.i - br i1 %exitcond91.not.i, label %for.body44.i.preheader, label %for.body36.i, !llvm.loop !43 + %indvars.iv.next88.i = add nuw nsw i64 %indvars.iv87.i, 1 + %exitcond.not.i = icmp eq i64 %indvars.iv.next88.i, %wide.trip.count.i + br i1 %exitcond.not.i, label %for.body44.i.preheader, label %for.body36.i, !llvm.loop !43 for.cond72.preheader.i: ; preds = %for.inc69.i %cmp74.not79.i = icmp slt i32 %nPatternLength, 2 br i1 %cmp74.not79.i, label %_ZN2EA4StdCL24BoyerMooreGoodSuffixCalcEPKciPiS3_.exit, label %for.body75.preheader.i for.body75.preheader.i: ; preds = %for.cond72.preheader.i - %wide.trip.count104.i = zext nneg i32 %sub.i to i64 + %wide.trip.count102.i = zext nneg i32 %sub.i to i64 br label %for.body75.i for.body44.i: ; preds = %for.body44.i.preheader, %for.inc69.i - %indvars.iv95.i = phi i32 [ %indvars.iv.next96.i, %for.inc69.i ], [ 0, %for.body44.i.preheader ] + %indvars.iv93.i = phi i32 [ %indvars.iv.next94.i, %for.inc69.i ], [ 0, %for.body44.i.preheader ] %j.078.i = phi i32 [ %j.2.i, %for.inc69.i ], [ 0, %for.body44.i.preheader ] %i.277.i = phi i32 [ %dec70.i, %for.inc69.i ], [ %sub.i, %for.body44.i.preheader ] %cmp45.i = icmp eq i32 %i.277.i, -1 @@ -3028,9 +3028,9 @@ for.body44.i: ; preds = %for.body44.i.prehea lor.lhs.false.i: ; preds = %for.body44.i %idxprom46.i = zext nneg i32 %i.277.i to i64 %arrayidx47.i = getelementptr inbounds nuw i32, ptr %pPatternBuffer2, i64 %idxprom46.i - %11 = load i32, ptr %arrayidx47.i, align 4 + %10 = load i32, ptr %arrayidx47.i, align 4 %add48.i = add nuw nsw i32 %i.277.i, 1 - %cmp49.i = icmp eq i32 %11, %add48.i + %cmp49.i = icmp eq i32 %10, %add48.i br i1 %cmp49.i, label %if.then50.i, label %for.inc69.i if.then50.i: ; preds = %lor.lhs.false.i, %for.body44.i @@ -3039,15 +3039,15 @@ if.then50.i: ; preds = %lor.lhs.false.i, %f br i1 %cmp5473.i, label %for.body55.preheader.i, label %for.inc69.i for.body55.preheader.i: ; preds = %if.then50.i - %12 = sext i32 %j.078.i to i64 - %wide.trip.count97.i = sext i32 %indvars.iv95.i to i64 + %11 = sext i32 %j.078.i to i64 + %wide.trip.count95.i = sext i32 %indvars.iv93.i to i64 br label %for.body55.i for.body55.i: ; preds = %for.inc65.i, %for.body55.preheader.i - %indvars.iv92.i = phi i64 [ %12, %for.body55.preheader.i ], [ %indvars.iv.next93.i, %for.inc65.i ] - %arrayidx57.i = getelementptr inbounds i32, ptr %pPatternBuffer1, i64 %indvars.iv92.i - %13 = load i32, ptr %arrayidx57.i, align 4 - %cmp58.i = icmp eq i32 %13, %nPatternLength + %indvars.iv90.i = phi i64 [ %11, %for.body55.preheader.i ], [ %indvars.iv.next91.i, %for.inc65.i ] + %arrayidx57.i = getelementptr inbounds i32, ptr %pPatternBuffer1, i64 %indvars.iv90.i + %12 = load i32, ptr %arrayidx57.i, align 4 + %cmp58.i = icmp eq i32 %12, %nPatternLength br i1 %cmp58.i, label %if.then59.i, label %for.inc65.i if.then59.i: ; preds = %for.body55.i @@ -3055,30 +3055,30 @@ if.then59.i: ; preds = %for.body55.i br label %for.inc65.i for.inc65.i: ; preds = %if.then59.i, %for.body55.i - %indvars.iv.next93.i = add nsw i64 %indvars.iv92.i, 1 - %exitcond98.not.i = icmp eq i64 %indvars.iv.next93.i, %wide.trip.count97.i - br i1 %exitcond98.not.i, label %for.inc69.i, label %for.body55.i, !llvm.loop !44 + %indvars.iv.next91.i = add nsw i64 %indvars.iv90.i, 1 + %exitcond96.not.i = icmp eq i64 %indvars.iv.next91.i, %wide.trip.count95.i + br i1 %exitcond96.not.i, label %for.inc69.i, label %for.body55.i, !llvm.loop !44 for.inc69.i: ; preds = %for.inc65.i, %if.then50.i, %lor.lhs.false.i - %j.2.i = phi i32 [ %j.078.i, %lor.lhs.false.i ], [ %j.078.i, %if.then50.i ], [ %indvars.iv95.i, %for.inc65.i ] + %j.2.i = phi i32 [ %j.078.i, %lor.lhs.false.i ], [ %j.078.i, %if.then50.i ], [ %indvars.iv93.i, %for.inc65.i ] %dec70.i = add nsw i32 %i.277.i, -1 - %indvars.iv.next96.i = add nuw i32 %indvars.iv95.i, 1 - %exitcond99.not.i = icmp eq i32 %indvars.iv95.i, %nPatternLength - br i1 %exitcond99.not.i, label %for.cond72.preheader.i, label %for.body44.i, !llvm.loop !45 + %indvars.iv.next94.i = add nuw i32 %indvars.iv93.i, 1 + %exitcond97.not.i = icmp eq i32 %indvars.iv93.i, %nPatternLength + br i1 %exitcond97.not.i, label %for.cond72.preheader.i, label %for.body44.i, !llvm.loop !45 for.body75.i: ; preds = %for.body75.i, %for.body75.preheader.i - %indvars.iv100.i = phi i64 [ 0, %for.body75.preheader.i ], [ %indvars.iv.next101.i, %for.body75.i ] - %arrayidx80.i = getelementptr inbounds nuw i32, ptr %pPatternBuffer2, i64 %indvars.iv100.i - %14 = load i32, ptr %arrayidx80.i, align 4 - %sub81.i = sub nsw i32 %sub.i, %14 + %indvars.iv98.i = phi i64 [ 0, %for.body75.preheader.i ], [ %indvars.iv.next99.i, %for.body75.i ] + %arrayidx80.i = getelementptr inbounds nuw i32, ptr %pPatternBuffer2, i64 %indvars.iv98.i + %13 = load i32, ptr %arrayidx80.i, align 4 + %sub81.i = sub nsw i32 %sub.i, %13 %idxprom82.i = sext i32 %sub81.i to i64 %arrayidx83.i = getelementptr inbounds i32, ptr %pPatternBuffer1, i64 %idxprom82.i - %15 = trunc i64 %indvars.iv100.i to i32 - %16 = sub i32 %sub.i, %15 - store i32 %16, ptr %arrayidx83.i, align 4 - %indvars.iv.next101.i = add nuw nsw i64 %indvars.iv100.i, 1 - %exitcond105.not.i = icmp eq i64 %indvars.iv.next101.i, %wide.trip.count104.i - br i1 %exitcond105.not.i, label %_ZN2EA4StdCL24BoyerMooreGoodSuffixCalcEPKciPiS3_.exit, label %for.body75.i, !llvm.loop !46 + %14 = trunc i64 %indvars.iv98.i to i32 + %15 = sub i32 %sub.i, %14 + store i32 %15, ptr %arrayidx83.i, align 4 + %indvars.iv.next99.i = add nuw nsw i64 %indvars.iv98.i, 1 + %exitcond103.not.i = icmp eq i64 %indvars.iv.next99.i, %wide.trip.count102.i + br i1 %exitcond103.not.i, label %_ZN2EA4StdCL24BoyerMooreGoodSuffixCalcEPKciPiS3_.exit, label %for.body75.i, !llvm.loop !46 _ZN2EA4StdCL24BoyerMooreGoodSuffixCalcEPKciPiS3_.exit: ; preds = %for.body75.i, %for.cond42.preheader.i, %for.cond72.preheader.i %cmp10.i = icmp sgt i32 %nAlphabetBufferSize, 0 @@ -3105,12 +3105,12 @@ for.body.i57: ; preds = %for.body.i57, %for. for.body3.i: ; preds = %for.body3.i, %for.body3.preheader.i %indvars.iv15.i = phi i64 [ 0, %for.body3.preheader.i ], [ %indvars.iv.next16.i, %for.body3.i ] - %17 = trunc nuw nsw i64 %indvars.iv15.i to i32 - %18 = xor i32 %17, -1 - %sub5.i53 = add nsw i32 %nPatternLength, %18 + %16 = trunc nuw nsw i64 %indvars.iv15.i to i32 + %17 = xor i32 %16, -1 + %sub5.i53 = add nsw i32 %nPatternLength, %17 %arrayidx7.i54 = getelementptr inbounds nuw i8, ptr %pPattern, i64 %indvars.iv15.i - %19 = load i8, ptr %arrayidx7.i54, align 1 - %idxprom8.i = sext i8 %19 to i64 + %18 = load i8, ptr %arrayidx7.i54, align 1 + %idxprom8.i = sext i8 %18 to i64 %arrayidx9.i = getelementptr inbounds i32, ptr %pAlphabetBuffer, i64 %idxprom8.i store i32 %sub5.i53, ptr %arrayidx9.i, align 4 %indvars.iv.next16.i = add nuw nsw i64 %indvars.iv15.i, 1 @@ -3125,7 +3125,7 @@ _ZN2EA4StdCL26BoyerMooreBadCharacterCalcEPKciPii.exit: ; preds = %for.body3.i, % br i1 %brmerge, label %return, label %while.cond.preheader.us.preheader while.cond.preheader.us.preheader: ; preds = %_ZN2EA4StdCL26BoyerMooreBadCharacterCalcEPKciPii.exit - %20 = zext nneg i32 %nPatternLength to i64 + %19 = zext nneg i32 %nPatternLength to i64 %21 = add nsw i64 %20, -1 br label %while.cond.preheader.us @@ -3139,20 +3139,20 @@ while.cond.preheader.us: ; preds = %while.cond.preheade br i1 %cmp7.not.us.not, label %land.rhs.us.us.preheader, label %land.rhs.us74 land.rhs.us.us.preheader: ; preds = %while.cond.preheader.us - %22 = sext i32 %j.073.us to i64 - %invariant.gep = getelementptr i8, ptr %pSearchString, i64 %22 + %20 = sext i32 %j.073.us to i64 + %invariant.gep = getelementptr i8, ptr %pSearchString, i64 %20 br label %land.rhs.us.us land.rhs.us74: ; preds = %while.cond.preheader.us, %while.body.us84 %i.067.us75 = phi i32 [ %i.1.us, %while.body.us84 ], [ %sub.i, %while.cond.preheader.us ] %idxprom.us76 = zext nneg i32 %i.067.us75 to i64 %arrayidx.us77 = getelementptr inbounds nuw i8, ptr %pPattern, i64 %idxprom.us76 - %23 = load i8, ptr %arrayidx.us77, align 1 + %21 = load i8, ptr %arrayidx.us77, align 1 %add.us78 = add nsw i32 %i.067.us75, %j.073.us %idxprom3.us79 = sext i32 %add.us78 to i64 %arrayidx4.us80 = getelementptr inbounds i8, ptr %pSearchString, i64 %idxprom3.us79 - %24 = load i8, ptr %arrayidx4.us80, align 1 - %cmp6.us81 = icmp eq i8 %23, %24 + %22 = load i8, ptr %arrayidx4.us80, align 1 + %cmp6.us81 = icmp eq i8 %21, %22 br i1 %cmp6.us81, label %while.body.us84, label %if.else.us if.then39.us: ; preds = %if.else.us @@ -3183,44 +3183,44 @@ while.body.us84: ; preds = %land.rhs.us74 br i1 %cmp2.us86, label %land.rhs.us74, label %return, !llvm.loop !50 if.else.us.loopexit: ; preds = %land.rhs.us.us - %25 = trunc nuw nsw i64 %indvars.iv to i32 + %23 = trunc nuw nsw i64 %indvars.iv to i32 %.pre = and i64 %indvars.iv, 4294967295 - %.pre100 = add nsw i32 %j.073.us, %25 + %.pre100 = add nsw i32 %j.073.us, %23 %.pre101 = sext i32 %.pre100 to i64 br label %if.else.us if.else.us: ; preds = %land.rhs.us74, %if.else.us.loopexit %idxprom18.us.pre-phi = phi i64 [ %.pre101, %if.else.us.loopexit ], [ %idxprom3.us79, %land.rhs.us74 ] %idxprom27.us.pre-phi = phi i64 [ %.pre, %if.else.us.loopexit ], [ %idxprom.us76, %land.rhs.us74 ] - %.us-phi.us = phi i32 [ %25, %if.else.us.loopexit ], [ %i.067.us75, %land.rhs.us74 ] + %.us-phi.us = phi i32 [ %23, %if.else.us.loopexit ], [ %i.067.us75, %land.rhs.us74 ] %sub15.us = sub nsw i32 %sub.i, %.us-phi.us %sub16.us = sub nsw i32 %u.071.us.fr, %sub15.us %arrayidx19.us = getelementptr inbounds i8, ptr %pSearchString, i64 %idxprom18.us.pre-phi - %26 = load i8, ptr %arrayidx19.us, align 1 - %idxprom21.us = sext i8 %26 to i64 + %24 = load i8, ptr %arrayidx19.us, align 1 + %idxprom21.us = sext i8 %24 to i64 %arrayidx22.us = getelementptr inbounds i32, ptr %pAlphabetBuffer, i64 %idxprom21.us - %27 = load i32, ptr %arrayidx22.us, align 4 + %25 = load i32, ptr %arrayidx22.us, align 4 %reass.sub = sub i32 %.us-phi.us, %nPatternLength %add24.us = add i32 %reass.sub, 1 - %add25.us = add i32 %add24.us, %27 + %add25.us = add i32 %add24.us, %25 %cond.us = tail call i32 @llvm.smax.i32(i32 %sub16.us, i32 %add25.us) %arrayidx28.us = getelementptr inbounds nuw i32, ptr %pPatternBuffer1, i64 %idxprom27.us.pre-phi - %28 = load i32, ptr %arrayidx28.us, align 4 - %cond..us = tail call i32 @llvm.smax.i32(i32 %cond.us, i32 %28) - %cmp38.not.us = icmp slt i32 %28, %cond.us + %26 = load i32, ptr %arrayidx28.us, align 4 + %cond..us = tail call i32 @llvm.smax.i32(i32 %cond.us, i32 %26) + %cmp38.not.us = icmp slt i32 %26, %cond.us br i1 %cmp38.not.us, label %if.else47.us, label %if.then39.us land.rhs.us.us: ; preds = %land.rhs.us.us.preheader, %while.body.us.us - %indvars.iv = phi i64 [ %21, %land.rhs.us.us.preheader ], [ %indvars.iv.next, %while.body.us.us ] + %indvars.iv.in = phi i64 [ %21, %land.rhs.us.us.preheader ], [ %indvars.iv.next, %while.body.us.us ] %arrayidx.us.us = getelementptr inbounds nuw i8, ptr %pPattern, i64 %indvars.iv - %29 = load i8, ptr %arrayidx.us.us, align 1 + %27 = load i8, ptr %arrayidx.us.us, align 1 %gep = getelementptr i8, ptr %invariant.gep, i64 %indvars.iv - %30 = load i8, ptr %gep, align 1 - %cmp6.us.us = icmp eq i8 %29, %30 + %28 = load i8, ptr %gep, align 1 + %cmp6.us.us = icmp eq i8 %27, %28 br i1 %cmp6.us.us, label %while.body.us.us, label %if.else.us.loopexit while.body.us.us: ; preds = %land.rhs.us.us - %indvars.iv.next = add nsw i64 %indvars.iv, -1 + %indvars.iv.next = add nsw i64 %indvars.iv.in, -1 %31 = and i64 %indvars.iv.next, 4294967295 %exitcond.not = icmp eq i64 %31, 4294967295 br i1 %exitcond.not, label %return, label %land.rhs.us.us, !llvm.loop !50 diff --git a/bench/eastl/optimized/eathread_semaphore.ll b/bench/eastl/optimized/eathread_semaphore.ll index 860ba2d3679..e8c38ff93f9 100644 --- a/bench/eastl/optimized/eathread_semaphore.ll +++ b/bench/eastl/optimized/eathread_semaphore.ll @@ -71,7 +71,7 @@ if.end.i: ; preds = %if.then6.i, %if.the %mbIntraProcess12.i = getelementptr inbounds nuw i8, ptr %this, i64 40 store i8 1, ptr %mbIntraProcess12.i, align 8 %2 = load atomic i32, ptr %mnCount.i seq_cst, align 8 - %call20.i = tail call i32 @sem_init(ptr noundef nonnull align 8 dereferenceable(48) %this, i32 noundef 1, i32 noundef %2) #14 + %call20.i = tail call i32 @sem_init(ptr noundef nonnull align 8 dereferenceable(48) %this, i32 noundef 1, i32 noundef %2) #13 %cmp21.i = icmp eq i32 %call20.i, -1 %3 = load i8, ptr %mbIntraProcess12.i, align 8 %tobool24.i = trunc i8 %3 to i1 @@ -80,7 +80,7 @@ if.end.i: ; preds = %if.then6.i, %if.the if.then25.i: ; preds = %if.end.i %4 = load atomic i32, ptr %mnCount.i seq_cst, align 8 - %call31.i = tail call i32 @sem_init(ptr noundef nonnull align 8 dereferenceable(48) %this, i32 noundef 0, i32 noundef %4) #14 + %call31.i = tail call i32 @sem_init(ptr noundef nonnull align 8 dereferenceable(48) %this, i32 noundef 0, i32 noundef %4) #13 %cmp32.i = icmp eq i32 %call31.i, -1 br i1 %cmp32.i, label %if.then33.i, label %if.else.i @@ -117,7 +117,7 @@ if.end.i10: ; preds = %if.then6.i25, %if.t store i8 %frombool.i13, ptr %mbIntraProcess12.i12, align 8 %cond.i14 = zext nneg i8 %frombool.i13 to i32 %9 = load atomic i32, ptr %mnCount.i seq_cst, align 8 - %call20.i15 = tail call i32 @sem_init(ptr noundef nonnull align 8 dereferenceable(48) %this, i32 noundef %cond.i14, i32 noundef %9) #14 + %call20.i15 = tail call i32 @sem_init(ptr noundef nonnull align 8 dereferenceable(48) %this, i32 noundef %cond.i14, i32 noundef %9) #13 %cmp21.i16 = icmp eq i32 %call20.i15, -1 %10 = load i8, ptr %mbIntraProcess12.i12, align 8 %tobool24.i19 = trunc i8 %10 to i1 @@ -126,7 +126,7 @@ if.end.i10: ; preds = %if.then6.i25, %if.t if.then25.i20: ; preds = %if.end.i10 %11 = load atomic i32, ptr %mnCount.i seq_cst, align 8 - %call31.i21 = tail call i32 @sem_init(ptr noundef nonnull align 8 dereferenceable(48) %this, i32 noundef 0, i32 noundef %11) #14 + %call31.i21 = tail call i32 @sem_init(ptr noundef nonnull align 8 dereferenceable(48) %this, i32 noundef 0, i32 noundef %11) #13 %cmp32.i22 = icmp eq i32 %call31.i21, -1 br i1 %cmp32.i22, label %if.then33.i24, label %if.else.i23 @@ -172,7 +172,7 @@ if.end: ; preds = %if.then6, %if.then store i8 %frombool, ptr %mbIntraProcess12, align 8 %cond = zext nneg i8 %frombool to i32 %4 = load atomic i32, ptr %mnCount seq_cst, align 8 - %call20 = tail call i32 @sem_init(ptr noundef nonnull %this, i32 noundef %cond, i32 noundef %4) #14 + %call20 = tail call i32 @sem_init(ptr noundef nonnull %this, i32 noundef %cond, i32 noundef %4) #13 %cmp21 = icmp eq i32 %call20, -1 br i1 %cmp21, label %land.lhs.true, label %return @@ -183,7 +183,7 @@ land.lhs.true: ; preds = %if.end if.then25: ; preds = %land.lhs.true %6 = load atomic i32, ptr %mnCount seq_cst, align 8 - %call31 = tail call i32 @sem_init(ptr noundef nonnull %this, i32 noundef 0, i32 noundef %6) #14 + %call31 = tail call i32 @sem_init(ptr noundef nonnull %this, i32 noundef 0, i32 noundef %6) #13 %cmp32 = icmp eq i32 %call31, -1 br i1 %cmp32, label %if.then33, label %if.else @@ -222,7 +222,7 @@ if.end.i: ; preds = %if.then6.i, %entry %mbIntraProcess12.i = getelementptr inbounds nuw i8, ptr %this, i64 40 store i8 1, ptr %mbIntraProcess12.i, align 8 %2 = load atomic i32, ptr %mnCount.i seq_cst, align 8 - %call20.i = tail call i32 @sem_init(ptr noundef nonnull align 8 dereferenceable(48) %this, i32 noundef 1, i32 noundef %2) #14 + %call20.i = tail call i32 @sem_init(ptr noundef nonnull align 8 dereferenceable(48) %this, i32 noundef 1, i32 noundef %2) #13 %cmp21.i = icmp eq i32 %call20.i, -1 %3 = load i8, ptr %mbIntraProcess12.i, align 8 %tobool24.i = trunc i8 %3 to i1 @@ -231,7 +231,7 @@ if.end.i: ; preds = %if.then6.i, %entry if.then25.i: ; preds = %if.end.i %4 = load atomic i32, ptr %mnCount.i seq_cst, align 8 - %call31.i = tail call i32 @sem_init(ptr noundef nonnull align 8 dereferenceable(48) %this, i32 noundef 0, i32 noundef %4) #14 + %call31.i = tail call i32 @sem_init(ptr noundef nonnull align 8 dereferenceable(48) %this, i32 noundef 0, i32 noundef %4) #13 %cmp32.i = icmp eq i32 %call31.i, -1 br i1 %cmp32.i, label %if.then33.i, label %if.else.i @@ -253,12 +253,12 @@ entry: br label %for.cond for.cond: ; preds = %if.then, %entry - %call = tail call i32 @sem_destroy(ptr noundef nonnull %this) #14 + %call = tail call i32 @sem_destroy(ptr noundef nonnull %this) #13 %cmp = icmp eq i32 %call, -1 br i1 %cmp, label %land.lhs.true, label %for.end land.lhs.true: ; preds = %for.cond - %call2 = tail call ptr @__errno_location() #15 + %call2 = tail call ptr @__errno_location() #14 %0 = load i32, ptr %call2, align 4 %cmp3 = icmp eq i32 %0, 16 br i1 %cmp3, label %if.then, label %for.end @@ -274,7 +274,7 @@ terminate.lpad: ; preds = %if.then %1 = landingpad { ptr, i32 } catch ptr null %2 = extractvalue { ptr, i32 } %1, 0 - tail call void @__clang_call_terminate(ptr %2) #16 + tail call void @__clang_call_terminate(ptr %2) #15 unreachable } @@ -290,8 +290,8 @@ declare i32 @__gxx_personality_v0(...) ; Function Attrs: noreturn nounwind uwtable define linkonce_odr hidden void @__clang_call_terminate(ptr noundef %0) local_unnamed_addr #7 comdat { - %2 = tail call ptr @__cxa_begin_catch(ptr %0) #14 - tail call void @_ZSt9terminatev() #16 + %2 = tail call ptr @__cxa_begin_catch(ptr %0) #13 + tail call void @_ZSt9terminatev() #15 unreachable } @@ -320,7 +320,7 @@ while.cond: ; preds = %entry, %land.rhs br i1 %cmp, label %land.rhs, label %if.end39 land.rhs: ; preds = %while.cond - %call3 = tail call ptr @__errno_location() #15 + %call3 = tail call ptr @__errno_location() #14 %3 = load i32, ptr %call3, align 4 %cmp4 = icmp eq i32 %3, 4 br i1 %cmp4, label %while.cond, label %return, !llvm.loop !7 @@ -332,12 +332,12 @@ if.else: ; preds = %entry br i1 %4, label %if.then8, label %while.cond20 if.then8: ; preds = %if.else - %call11 = tail call i32 @sem_trywait(ptr noundef nonnull %this) #14 + %call11 = tail call i32 @sem_trywait(ptr noundef nonnull %this) #13 %cmp12 = icmp eq i32 %call11, -1 br i1 %cmp12, label %if.then13, label %if.end39 if.then13: ; preds = %if.then8 - %call14 = tail call ptr @__errno_location() #15 + %call14 = tail call ptr @__errno_location() #14 %5 = load i32, ptr %call14, align 4 %cmp15 = icmp eq i32 %5, 11 %. = select i1 %cmp15, i32 -2, i32 -1 @@ -349,7 +349,7 @@ while.cond20: ; preds = %if.else, %land.rhs2 br i1 %cmp24, label %land.rhs25, label %if.end39 land.rhs25: ; preds = %while.cond20 - %call26 = tail call ptr @__errno_location() #15 + %call26 = tail call ptr @__errno_location() #14 %6 = load i32, ptr %call26, align 4 %cmp27 = icmp eq i32 %6, 4 br i1 %cmp27, label %while.cond20, label %if.then32, !llvm.loop !8 @@ -395,13 +395,13 @@ if.end: ; preds = %entry while.cond: ; preds = %while.body, %if.end %count.addr.0 = phi i32 [ %count, %if.end ], [ %dec, %while.body ] - %exitcond.not = icmp eq i32 %count.addr.0, %smin - br i1 %exitcond.not, label %return, label %while.body + %cmp3 = icmp eq i32 %count.addr.0, %smin + br i1 %cmp3, label %return, label %while.body while.body: ; preds = %while.cond %dec = add i32 %count.addr.0, -1 %2 = atomicrmw add ptr %mnCount, i32 1 seq_cst, align 4 - %call8 = tail call i32 @sem_post(ptr noundef nonnull %this) #14 + %call8 = tail call i32 @sem_post(ptr noundef nonnull %this) #13 %cmp9 = icmp eq i32 %call8, -1 br i1 %cmp9, label %if.then10, label %while.cond, !llvm.loop !9 @@ -456,7 +456,7 @@ if.end.i.i: ; preds = %if.then6.i.i, %if.t %mbIntraProcess12.i.i = getelementptr inbounds nuw i8, ptr %call, i64 40 store i8 1, ptr %mbIntraProcess12.i.i, align 8 %4 = load atomic i32, ptr %mnCount.i.i seq_cst, align 4 - %call20.i.i = tail call i32 @sem_init(ptr noundef nonnull align 8 dereferenceable(48) %call, i32 noundef 1, i32 noundef %4) #14 + %call20.i.i = tail call i32 @sem_init(ptr noundef nonnull align 8 dereferenceable(48) %call, i32 noundef 1, i32 noundef %4) #13 %cmp21.i.i = icmp eq i32 %call20.i.i, -1 %5 = load i8, ptr %mbIntraProcess12.i.i, align 8 %tobool24.i.i = trunc i8 %5 to i1 @@ -465,7 +465,7 @@ if.end.i.i: ; preds = %if.then6.i.i, %if.t if.then25.i.i: ; preds = %if.end.i.i %6 = load atomic i32, ptr %mnCount.i.i seq_cst, align 4 - %call31.i.i = tail call i32 @sem_init(ptr noundef nonnull align 8 dereferenceable(48) %call, i32 noundef 0, i32 noundef %6) #14 + %call31.i.i = tail call i32 @sem_init(ptr noundef nonnull align 8 dereferenceable(48) %call, i32 noundef 0, i32 noundef %6) #13 %cmp32.i.i = icmp eq i32 %call31.i.i, -1 br i1 %cmp32.i.i, label %if.then33.i.i, label %if.else.i.i @@ -478,7 +478,7 @@ if.else.i.i: ; preds = %if.then25.i.i br label %return if.else: ; preds = %entry - %call1 = tail call noalias noundef nonnull dereferenceable(48) ptr @_Znwm(i64 noundef 48) #17 + %call1 = tail call noalias noundef nonnull dereferenceable(48) ptr @_Znwm(i64 noundef 48) #16 %mnCount.i.i1 = getelementptr inbounds nuw i8, ptr %call1, i64 32 %7 = atomicrmw xchg ptr %mnCount.i.i1, i32 0 seq_cst, align 4 %mnMaxCount.i.i2 = getelementptr inbounds nuw i8, ptr %call1, i64 36 @@ -498,7 +498,7 @@ if.end.i.i4: ; preds = %if.then6.i.i15, %if %mbIntraProcess12.i.i5 = getelementptr inbounds nuw i8, ptr %call1, i64 40 store i8 1, ptr %mbIntraProcess12.i.i5, align 8 %9 = load atomic i32, ptr %mnCount.i.i1 seq_cst, align 4 - %call20.i.i6 = tail call i32 @sem_init(ptr noundef nonnull align 8 dereferenceable(48) %call1, i32 noundef 1, i32 noundef %9) #14 + %call20.i.i6 = tail call i32 @sem_init(ptr noundef nonnull align 8 dereferenceable(48) %call1, i32 noundef 1, i32 noundef %9) #13 %cmp21.i.i7 = icmp eq i32 %call20.i.i6, -1 %10 = load i8, ptr %mbIntraProcess12.i.i5, align 8 %tobool24.i.i8 = trunc i8 %10 to i1 @@ -507,7 +507,7 @@ if.end.i.i4: ; preds = %if.then6.i.i15, %if if.then25.i.i10: ; preds = %if.end.i.i4 %11 = load atomic i32, ptr %mnCount.i.i1 seq_cst, align 4 - %call31.i.i11 = tail call i32 @sem_init(ptr noundef nonnull align 8 dereferenceable(48) %call1, i32 noundef 0, i32 noundef %11) #14 + %call31.i.i11 = tail call i32 @sem_init(ptr noundef nonnull align 8 dereferenceable(48) %call1, i32 noundef 0, i32 noundef %11) #13 %cmp32.i.i12 = icmp eq i32 %call31.i.i11, -1 br i1 %cmp32.i.i12, label %if.then33.i.i14, label %if.else.i.i13 @@ -538,12 +538,12 @@ entry: br i1 %tobool.not, label %if.else, label %for.cond.i for.cond.i: ; preds = %entry, %if.then.i - %call.i = tail call i32 @sem_destroy(ptr noundef nonnull align 8 dereferenceable(48) %pSemaphore) #14 + %call.i = tail call i32 @sem_destroy(ptr noundef nonnull align 8 dereferenceable(48) %pSemaphore) #13 %cmp.i = icmp eq i32 %call.i, -1 br i1 %cmp.i, label %land.lhs.true.i, label %_ZN2EA6Thread9SemaphoreD2Ev.exit land.lhs.true.i: ; preds = %for.cond.i - %call2.i = tail call ptr @__errno_location() #15 + %call2.i = tail call ptr @__errno_location() #14 %1 = load i32, ptr %call2.i, align 4 %cmp3.i = icmp eq i32 %1, 16 br i1 %cmp3.i, label %if.then.i, label %_ZN2EA6Thread9SemaphoreD2Ev.exit @@ -556,7 +556,7 @@ terminate.lpad.i: ; preds = %if.then.i %2 = landingpad { ptr, i32 } catch ptr null %3 = extractvalue { ptr, i32 } %2, 0 - tail call void @__clang_call_terminate(ptr %3) #16 + tail call void @__clang_call_terminate(ptr %3) #15 unreachable _ZN2EA6Thread9SemaphoreD2Ev.exit: ; preds = %for.cond.i, %land.lhs.true.i @@ -572,12 +572,12 @@ if.else: ; preds = %entry br i1 %isnull, label %if.end, label %for.cond.i3 for.cond.i3: ; preds = %if.else, %if.then.i9 - %call.i4 = tail call i32 @sem_destroy(ptr noundef nonnull align 8 dereferenceable(48) %pSemaphore) #14 + %call.i4 = tail call i32 @sem_destroy(ptr noundef nonnull align 8 dereferenceable(48) %pSemaphore) #13 %cmp.i5 = icmp eq i32 %call.i4, -1 br i1 %cmp.i5, label %land.lhs.true.i6, label %_ZN2EA6Thread9SemaphoreD2Ev.exit11 land.lhs.true.i6: ; preds = %for.cond.i3 - %call2.i7 = tail call ptr @__errno_location() #15 + %call2.i7 = tail call ptr @__errno_location() #14 %6 = load i32, ptr %call2.i7, align 4 %cmp3.i8 = icmp eq i32 %6, 16 br i1 %cmp3.i8, label %if.then.i9, label %_ZN2EA6Thread9SemaphoreD2Ev.exit11 @@ -590,11 +590,11 @@ terminate.lpad.i10: ; preds = %if.then.i9 %7 = landingpad { ptr, i32 } catch ptr null %8 = extractvalue { ptr, i32 } %7, 0 - tail call void @__clang_call_terminate(ptr %8) #16 + tail call void @__clang_call_terminate(ptr %8) #15 unreachable _ZN2EA6Thread9SemaphoreD2Ev.exit11: ; preds = %for.cond.i3, %land.lhs.true.i6 - tail call void @_ZdlPv(ptr noundef %pSemaphore) #18 + tail call void @_ZdlPv(ptr noundef %pSemaphore) #17 br label %if.end if.end: ; preds = %if.else, %_ZN2EA6Thread9SemaphoreD2Ev.exit11, %_ZN2EA6Thread9SemaphoreD2Ev.exit @@ -629,7 +629,7 @@ if.end.i.i: ; preds = %if.then6.i.i, %entr %mbIntraProcess12.i.i = getelementptr inbounds nuw i8, ptr %pMemory, i64 40 store i8 1, ptr %mbIntraProcess12.i.i, align 8 %2 = load atomic i32, ptr %mnCount.i.i seq_cst, align 4 - %call20.i.i = tail call i32 @sem_init(ptr noundef nonnull align 8 dereferenceable(48) %pMemory, i32 noundef 1, i32 noundef %2) #14 + %call20.i.i = tail call i32 @sem_init(ptr noundef nonnull align 8 dereferenceable(48) %pMemory, i32 noundef 1, i32 noundef %2) #13 %cmp21.i.i = icmp eq i32 %call20.i.i, -1 %3 = load i8, ptr %mbIntraProcess12.i.i, align 8 %tobool24.i.i = trunc i8 %3 to i1 @@ -638,7 +638,7 @@ if.end.i.i: ; preds = %if.then6.i.i, %entr if.then25.i.i: ; preds = %if.end.i.i %4 = load atomic i32, ptr %mnCount.i.i seq_cst, align 4 - %call31.i.i = tail call i32 @sem_init(ptr noundef nonnull align 8 dereferenceable(48) %pMemory, i32 noundef 0, i32 noundef %4) #14 + %call31.i.i = tail call i32 @sem_init(ptr noundef nonnull align 8 dereferenceable(48) %pMemory, i32 noundef 0, i32 noundef %4) #13 %cmp32.i.i = icmp eq i32 %call31.i.i, -1 br i1 %cmp32.i.i, label %if.then33.i.i, label %if.else.i.i @@ -660,12 +660,12 @@ entry: br label %for.cond.i for.cond.i: ; preds = %if.then.i, %entry - %call.i = tail call i32 @sem_destroy(ptr noundef nonnull align 8 dereferenceable(48) %pSemaphore) #14 + %call.i = tail call i32 @sem_destroy(ptr noundef nonnull align 8 dereferenceable(48) %pSemaphore) #13 %cmp.i = icmp eq i32 %call.i, -1 br i1 %cmp.i, label %land.lhs.true.i, label %_ZN2EA6Thread9SemaphoreD2Ev.exit land.lhs.true.i: ; preds = %for.cond.i - %call2.i = tail call ptr @__errno_location() #15 + %call2.i = tail call ptr @__errno_location() #14 %0 = load i32, ptr %call2.i, align 4 %cmp3.i = icmp eq i32 %0, 16 br i1 %cmp3.i, label %if.then.i, label %_ZN2EA6Thread9SemaphoreD2Ev.exit @@ -678,7 +678,7 @@ terminate.lpad.i: ; preds = %if.then.i %1 = landingpad { ptr, i32 } catch ptr null %2 = extractvalue { ptr, i32 } %1, 0 - tail call void @__clang_call_terminate(ptr %2) #16 + tail call void @__clang_call_terminate(ptr %2) #15 unreachable _ZN2EA6Thread9SemaphoreD2Ev.exit: ; preds = %for.cond.i, %land.lhs.true.i diff --git a/bench/fish-rs/optimized/8zxt2gjt68ikxu18thf3foa45.ll b/bench/fish-rs/optimized/8zxt2gjt68ikxu18thf3foa45.ll index 856939f065b..08c06d3b6ae 100644 --- a/bench/fish-rs/optimized/8zxt2gjt68ikxu18thf3foa45.ll +++ b/bench/fish-rs/optimized/8zxt2gjt68ikxu18thf3foa45.ll @@ -26810,9 +26810,9 @@ define internal fastcc void @_ZN4fish10parse_util13IndentVisitor31record_line_co %.idx24 = shl nuw nsw i64 %6, 2 %13 = getelementptr inbounds nuw i8, ptr %4, i64 %.idx24 %14 = icmp ult i64 %11, 2 - br i1 %14, label %"_ZN56_$LT$char$u20$as$u20$core..slice..cmp..SliceContains$GT$14slice_contains17h91675bec23efca9bE.exit.thread", label %"_ZN4fish10parse_util13IndentVisitor31record_line_continuations_until28_$u7b$$u7b$closure$u7d$$u7d$17h9a30096dbc84252cE.exit.i.us.i" + br i1 %14, label %"_ZN56_$LT$char$u20$as$u20$core..slice..cmp..SliceContains$GT$14slice_contains17h91675bec23efca9bE.exit.thread", label %"_ZN4fish10parse_util13IndentVisitor31record_line_continuations_until28_$u7b$$u7b$closure$u7d$$u7d$17h9a30096dbc84252cE.exit.i.us.i.preheader" -"_ZN4fish10parse_util13IndentVisitor31record_line_continuations_until28_$u7b$$u7b$closure$u7d$$u7d$17h9a30096dbc84252cE.exit.i.us.i": ; preds = %12, %"_ZN4core4iter6traits8iterator8Iterator8position5check28_$u7b$$u7b$closure$u7d$$u7d$17h5fc121904da62e6fE.exit.us.i" +"_ZN4fish10parse_util13IndentVisitor31record_line_continuations_until28_$u7b$$u7b$closure$u7d$$u7d$17h9a30096dbc84252cE.exit.i.us.i.preheader": ; preds = %12, %"_ZN4core4iter6traits8iterator8Iterator8position5check28_$u7b$$u7b$closure$u7d$$u7d$17h5fc121904da62e6fE.exit.us.i" %15 = phi i64 [ %21, %"_ZN4core4iter6traits8iterator8Iterator8position5check28_$u7b$$u7b$closure$u7d$$u7d$17h5fc121904da62e6fE.exit.us.i" ], [ %11, %12 ] %16 = phi ptr [ %20, %"_ZN4core4iter6traits8iterator8Iterator8position5check28_$u7b$$u7b$closure$u7d$$u7d$17h5fc121904da62e6fE.exit.us.i" ], [ %13, %12 ] %17 = phi i64 [ %22, %"_ZN4core4iter6traits8iterator8Iterator8position5check28_$u7b$$u7b$closure$u7d$$u7d$17h5fc121904da62e6fE.exit.us.i" ], [ 0, %12 ] @@ -26821,8 +26821,8 @@ define internal fastcc void @_ZN4fish10parse_util13IndentVisitor31record_line_co br i1 %19, label %24, label %"_ZN4core4iter6traits8iterator8Iterator8position5check28_$u7b$$u7b$closure$u7d$$u7d$17h5fc121904da62e6fE.exit.us.i" "_ZN4core4iter6traits8iterator8Iterator8position5check28_$u7b$$u7b$closure$u7d$$u7d$17h5fc121904da62e6fE.exit.us.i": ; preds = %"_ZN4fish10parse_util13IndentVisitor31record_line_continuations_until28_$u7b$$u7b$closure$u7d$$u7d$17h9a30096dbc84252cE.exit.i.us.i" - %20 = getelementptr inbounds nuw i8, ptr %16, i64 4 - %21 = add i64 %15, -1 + %21 = getelementptr inbounds nuw i8, ptr %16, i64 4 + %22 = add i64 %15, -1 %22 = add nuw i64 %17, 1 %exitcond26.i = icmp eq i64 %21, 1 br i1 %exitcond26.i, label %"_ZN56_$LT$char$u20$as$u20$core..slice..cmp..SliceContains$GT$14slice_contains17h91675bec23efca9bE.exit.thread", label %"_ZN4fish10parse_util13IndentVisitor31record_line_continuations_until28_$u7b$$u7b$closure$u7d$$u7d$17h9a30096dbc84252cE.exit.i.us.i" diff --git a/bench/flac/optimized/lpc_intrin_sse2.ll b/bench/flac/optimized/lpc_intrin_sse2.ll index da2b1a8a2ec..8c38a336fa1 100644 --- a/bench/flac/optimized/lpc_intrin_sse2.ll +++ b/bench/flac/optimized/lpc_intrin_sse2.ll @@ -51,12 +51,12 @@ define hidden void @FLAC__lpc_compute_autocorrelation_intrin_sse2_lag_8(ptr noun %.037.lcssa = phi <2 x double> [ zeroinitializer, %4 ], [ %21, %.lr.ph ] %.036.lcssa = phi <2 x double> [ zeroinitializer, %4 ], [ %23, %.lr.ph ] store <2 x double> %.039.lcssa, ptr %3, align 1, !tbaa !9 - %25 = getelementptr inbounds nuw i8, ptr %3, i64 16 - store <2 x double> %.038.lcssa, ptr %25, align 1, !tbaa !9 - %26 = getelementptr inbounds nuw i8, ptr %3, i64 32 - store <2 x double> %.037.lcssa, ptr %26, align 1, !tbaa !9 - %27 = getelementptr inbounds nuw i8, ptr %3, i64 48 - store <2 x double> %.036.lcssa, ptr %27, align 1, !tbaa !9 + %24 = getelementptr inbounds nuw i8, ptr %3, i64 16 + store <2 x double> %.038.lcssa, ptr %24, align 1, !tbaa !9 + %25 = getelementptr inbounds nuw i8, ptr %3, i64 32 + store <2 x double> %.037.lcssa, ptr %25, align 1, !tbaa !9 + %26 = getelementptr inbounds nuw i8, ptr %3, i64 48 + store <2 x double> %.036.lcssa, ptr %26, align 1, !tbaa !9 ret void } @@ -114,14 +114,14 @@ define hidden void @FLAC__lpc_compute_autocorrelation_intrin_sse2_lag_10(ptr nou %.045.lcssa = phi <2 x double> [ zeroinitializer, %4 ], [ %24, %.lr.ph ] %.039.lcssa = phi <2 x double> [ zeroinitializer, %4 ], [ %26, %.lr.ph ] store <2 x double> %.048.lcssa, ptr %3, align 1, !tbaa !9 - %28 = getelementptr inbounds nuw i8, ptr %3, i64 16 - store <2 x double> %.047.lcssa, ptr %28, align 1, !tbaa !9 - %29 = getelementptr inbounds nuw i8, ptr %3, i64 32 - store <2 x double> %.046.lcssa, ptr %29, align 1, !tbaa !9 - %30 = getelementptr inbounds nuw i8, ptr %3, i64 48 - store <2 x double> %.045.lcssa, ptr %30, align 1, !tbaa !9 - %31 = getelementptr inbounds nuw i8, ptr %3, i64 64 - store <2 x double> %.039.lcssa, ptr %31, align 1, !tbaa !9 + %27 = getelementptr inbounds nuw i8, ptr %3, i64 16 + store <2 x double> %.047.lcssa, ptr %27, align 1, !tbaa !9 + %28 = getelementptr inbounds nuw i8, ptr %3, i64 32 + store <2 x double> %.046.lcssa, ptr %28, align 1, !tbaa !9 + %29 = getelementptr inbounds nuw i8, ptr %3, i64 48 + store <2 x double> %.045.lcssa, ptr %29, align 1, !tbaa !9 + %30 = getelementptr inbounds nuw i8, ptr %3, i64 64 + store <2 x double> %.039.lcssa, ptr %30, align 1, !tbaa !9 ret void } @@ -191,18 +191,18 @@ define hidden void @FLAC__lpc_compute_autocorrelation_intrin_sse2_lag_14(ptr nou %.054.lcssa = phi <2 x double> [ zeroinitializer, %4 ], [ %30, %.lr.ph ] %.053.lcssa = phi <2 x double> [ zeroinitializer, %4 ], [ %32, %.lr.ph ] store <2 x double> %.066.lcssa, ptr %3, align 1, !tbaa !9 - %34 = getelementptr inbounds nuw i8, ptr %3, i64 16 - store <2 x double> %.065.lcssa, ptr %34, align 1, !tbaa !9 - %35 = getelementptr inbounds nuw i8, ptr %3, i64 32 - store <2 x double> %.064.lcssa, ptr %35, align 1, !tbaa !9 - %36 = getelementptr inbounds nuw i8, ptr %3, i64 48 - store <2 x double> %.063.lcssa, ptr %36, align 1, !tbaa !9 - %37 = getelementptr inbounds nuw i8, ptr %3, i64 64 - store <2 x double> %.057.lcssa, ptr %37, align 1, !tbaa !9 - %38 = getelementptr inbounds nuw i8, ptr %3, i64 80 - store <2 x double> %.054.lcssa, ptr %38, align 1, !tbaa !9 - %39 = getelementptr inbounds nuw i8, ptr %3, i64 96 - store <2 x double> %.053.lcssa, ptr %39, align 1, !tbaa !9 + %33 = getelementptr inbounds nuw i8, ptr %3, i64 16 + store <2 x double> %.065.lcssa, ptr %33, align 1, !tbaa !9 + %34 = getelementptr inbounds nuw i8, ptr %3, i64 32 + store <2 x double> %.064.lcssa, ptr %34, align 1, !tbaa !9 + %35 = getelementptr inbounds nuw i8, ptr %3, i64 48 + store <2 x double> %.063.lcssa, ptr %35, align 1, !tbaa !9 + %36 = getelementptr inbounds nuw i8, ptr %3, i64 64 + store <2 x double> %.057.lcssa, ptr %36, align 1, !tbaa !9 + %37 = getelementptr inbounds nuw i8, ptr %3, i64 80 + store <2 x double> %.054.lcssa, ptr %37, align 1, !tbaa !9 + %38 = getelementptr inbounds nuw i8, ptr %3, i64 96 + store <2 x double> %.053.lcssa, ptr %38, align 1, !tbaa !9 ret void } diff --git a/bench/freetype/optimized/ftbitmap.ll b/bench/freetype/optimized/ftbitmap.ll index ad6d3a4d5b4..f19121ee8a9 100644 --- a/bench/freetype/optimized/ftbitmap.ll +++ b/bench/freetype/optimized/ftbitmap.ll @@ -210,7 +210,7 @@ define i32 @FT_Bitmap_Embolden(ptr noundef readonly captures(address_is_null) %0 switch i8 %26, label %49 [ i8 3, label %27 i8 4, label %27 - i8 1, label %.thread185 + i8 1, label %.thread184 i8 5, label %38 i8 6, label %40 i8 7, label %284 @@ -232,7 +232,7 @@ FT_Bitmap_Done.exit: ; preds = %27 %.pre = load i8, ptr %25, align 2, !tbaa !28 br label %49 -.thread185: ; preds = %24 +.thread184: ; preds = %24 %spec.store.select = tail call i32 @llvm.smin.i32(i32 %17, i32 8) %31 = load ptr, ptr %0, align 8, !tbaa !12 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #7 @@ -284,15 +284,15 @@ FT_Bitmap_Done.exit: ; preds = %27 i8 6, label %76 ] -58: ; preds = %.thread185, %49 +58: ; preds = %.thread184, %49 %59 = phi i32 [ %37, %.thread185 ], [ %57, %49 ] %60 = phi ptr [ %35, %.thread185 ], [ %55, %49 ] %61 = phi i32 [ %34, %.thread185 ], [ %54, %49 ] %62 = phi i32 [ %33, %.thread185 ], [ %53, %49 ] %63 = phi ptr [ %32, %.thread185 ], [ %52, %49 ] %64 = phi ptr [ %31, %.thread185 ], [ %51, %49 ] - %.0105188 = phi i32 [ %spec.store.select, %.thread185 ], [ %17, %49 ] - %65 = add i32 %62, %.0105188 + %.0105187 = phi i32 [ %spec.store.select, %.thread185 ], [ %17, %49 ] + %65 = add i32 %62, %.0105187 %66 = add i32 %65, 7 %67 = lshr i32 %66, 3 br label %84 @@ -316,9 +316,9 @@ FT_Bitmap_Done.exit: ; preds = %27 %80 = phi i32 [ %44, %.thread ], [ %53, %49 ], [ %53, %49 ], [ %53, %49 ] %81 = phi ptr [ %43, %.thread ], [ %52, %49 ], [ %52, %49 ], [ %52, %49 ] %82 = phi ptr [ %42, %.thread ], [ %51, %49 ], [ %51, %49 ], [ %51, %49 ] - %.0104184 = phi i32 [ %.0104.ph, %.thread ], [ %20, %49 ], [ %20, %49 ], [ %20, %49 ] - %.0105182 = phi i32 [ %.0105.ph, %.thread ], [ %17, %49 ], [ %17, %49 ], [ %17, %49 ] - %83 = add i32 %80, %.0105182 + %.0104183 = phi i32 [ %.0104.ph, %.thread ], [ %20, %49 ], [ %20, %49 ], [ %20, %49 ] + %.0105181 = phi i32 [ %.0105.ph, %.thread ], [ %17, %49 ], [ %17, %49 ], [ %17, %49 ] + %83 = add i32 %80, %.0105181 br label %84 84: ; preds = %76, %72, %68, %58 @@ -328,18 +328,18 @@ FT_Bitmap_Done.exit: ; preds = %27 %88 = phi i32 [ %62, %58 ], [ %53, %68 ], [ %53, %72 ], [ %80, %76 ] %89 = phi ptr [ %63, %58 ], [ %52, %68 ], [ %52, %72 ], [ %81, %76 ] %90 = phi ptr [ %64, %58 ], [ %51, %68 ], [ %51, %72 ], [ %82, %76 ] - %.0104183 = phi i32 [ %20, %58 ], [ %20, %68 ], [ %20, %72 ], [ %.0104184, %76 ] - %.0105180 = phi i32 [ %.0105188, %58 ], [ %17, %68 ], [ %17, %72 ], [ %.0105182, %76 ] + %.0104182 = phi i32 [ %20, %58 ], [ %20, %68 ], [ %20, %72 ], [ %.0104183, %76 ] + %.0105179 = phi i32 [ %.0105187, %58 ], [ %17, %68 ], [ %17, %72 ], [ %.0105181, %76 ] %.0118.i = phi i32 [ 1, %58 ], [ 2, %68 ], [ 4, %72 ], [ 8, %76 ] %.0115.i = phi i32 [ %67, %58 ], [ %71, %68 ], [ %75, %72 ], [ %83, %76 ] - %91 = icmp ne i32 %.0104183, 0 + %91 = icmp ne i32 %.0104182, 0 %.not.i132 = icmp ugt i32 %.0115.i, %85 %or.cond.i = select i1 %91, i1 true, i1 %.not.i132 br i1 %or.cond.i, label %125, label %92 92: ; preds = %84 %93 = shl i32 %85, 3 - %94 = add i32 %88, %.0105180 + %94 = add i32 %88, %.0105179 %95 = mul i32 %.0118.i, %94 %96 = icmp ult i32 %95, %93 br i1 %96, label %97, label %thread-pre-split @@ -409,7 +409,7 @@ FT_Bitmap_Done.exit: ; preds = %27 125: ; preds = %84 %126 = zext i32 %.0115.i to i64 - %127 = add i32 %87, %.0104183 + %127 = add i32 %87, %.0104182 %128 = zext i32 %127 to i64 %129 = call ptr @ft_mem_qrealloc(ptr noundef %90, i64 noundef %126, i64 noundef 0, i64 noundef %128, ptr noundef null, ptr noundef nonnull %5) #7 %130 = load i32, ptr %5, align 4, !tbaa !3 @@ -427,7 +427,7 @@ FT_Bitmap_Done.exit: ; preds = %27 br i1 %133, label %139, label %155 139: ; preds = %131 - %140 = mul i32 %.0115.i, %.0104183 + %140 = mul i32 %.0115.i, %.0104182 %141 = zext i32 %140 to i64 call void @llvm.memset.p0.i64(ptr align 1 %129, i8 0, i64 %141, i1 false) %.not146.i = icmp eq i32 %136, 0 @@ -482,7 +482,7 @@ FT_Bitmap_Done.exit: ; preds = %27 ._crit_edge.i: ; preds = %163, %155 %.0116.lcssa.i = phi ptr [ %129, %155 ], [ %166, %163 ] - %168 = mul i32 %.0115.i, %.0104183 + %168 = mul i32 %.0115.i, %.0104182 %169 = zext i32 %168 to i64 call void @llvm.memset.p0.i64(ptr align 1 %.0116.lcssa.i, i8 0, i64 %169, i1 false) br label %.loopexit.i @@ -515,10 +515,10 @@ thread-pre-split: ; preds = %122, %111, %97, %92 177: ; preds = %174 %178 = load ptr, ptr %9, align 8, !tbaa !19 - %179 = mul nsw i32 %175, %.0104183 + %179 = mul nsw i32 %175, %.0104182 %180 = zext nneg i32 %179 to i64 %181 = getelementptr inbounds nuw i8, ptr %178, i64 %180 - %.pre177 = load i32, ptr %1, align 8, !tbaa !25 + %.pre176 = load i32, ptr %1, align 8, !tbaa !25 br label %190 182: ; preds = %174 @@ -532,7 +532,7 @@ thread-pre-split: ; preds = %122, %111, %97, %92 br label %190 190: ; preds = %182, %177 - %191 = phi i32 [ %.pre177, %177 ], [ %185, %182 ] + %191 = phi i32 [ %.pre176, %177 ], [ %185, %182 ] %.0112 = phi ptr [ %181, %177 ], [ %189, %182 ] %.0107 = phi i32 [ %175, %177 ], [ %183, %182 ] %.not162 = icmp eq i32 %191, 0 @@ -540,10 +540,10 @@ thread-pre-split: ; preds = %122, %111, %97, %92 .preheader136.lr.ph: ; preds = %190 %.0108144 = add nsw i32 %.0107, -1 - %.not199 = icmp eq i32 %.0107, 0 - %.not128140 = icmp slt i32 %.0105180, 1 + %.not198 = icmp eq i32 %.0107, 0 + %.not128140 = icmp slt i32 %.0105179, 1 %192 = getelementptr inbounds nuw i8, ptr %1, i64 24 - %.not127152 = icmp slt i32 %.0104183, 1 + %.not127152 = icmp slt i32 %.0104182, 1 %193 = zext i32 %.0108144 to i64 %wide.trip.count = zext nneg i32 %.0107 to i64 br label %.preheader136 @@ -551,19 +551,19 @@ thread-pre-split: ; preds = %122, %111, %97, %92 .preheader136: ; preds = %.preheader136.lr.ph, %._crit_edge155 %.0106158 = phi i32 [ 0, %.preheader136.lr.ph ], [ %278, %._crit_edge155 ] %.1113156 = phi ptr [ %.0112, %.preheader136.lr.ph ], [ %277, %._crit_edge155 ] - br i1 %.not199, label %._crit_edge155, label %.lr.ph149 + br i1 %.not198, label %._crit_edge155, label %.lr.ph149 .lr.ph149: ; preds = %.preheader136 %invariant.gep = getelementptr i8, ptr %.1113156, i64 -2 - br i1 %.not128140, label %.preheader.thread190, label %.lr.ph + br i1 %.not128140, label %.preheader.thread189, label %.lr.ph .preheader: ; preds = %.loopexit br i1 %.not127152, label %._crit_edge155, label %.lr.ph151.us.preheader -.preheader.thread190: ; preds = %.lr.ph149 +.preheader.thread189: ; preds = %.lr.ph149 br i1 %.not127152, label %._crit_edge155, label %.lr.ph151.us.preheader -.lr.ph151.us.preheader: ; preds = %.preheader, %.preheader.thread190 +.lr.ph151.us.preheader: ; preds = %.preheader, %.preheader.thread189 br label %.lr.ph151.us .lr.ph151.us: ; preds = %.lr.ph151.us.preheader, %._crit_edge.us @@ -584,13 +584,13 @@ thread-pre-split: ; preds = %122, %111, %97, %92 %204 = or i8 %203, %201 store i8 %204, ptr %202, align 1, !tbaa !23 %indvars.iv.next173 = add nuw nsw i64 %indvars.iv172, 1 - %exitcond175.not = icmp eq i64 %indvars.iv.next173, %wide.trip.count - br i1 %exitcond175.not, label %._crit_edge.us, label %199, !llvm.loop !33 + %exitcond.not = icmp eq i64 %indvars.iv.next173, %wide.trip.count + br i1 %exitcond.not, label %._crit_edge.us, label %199, !llvm.loop !33 ._crit_edge.us: ; preds = %199 %205 = add nuw nsw i32 %.1109153.us, 1 - %exitcond176.not = icmp eq i32 %.1109153.us, %.0104183 - br i1 %exitcond176.not, label %._crit_edge155, label %.lr.ph151.us, !llvm.loop !34 + %exitcond175.not = icmp eq i32 %.1109153.us, %.0104182 + br i1 %exitcond175.not, label %._crit_edge155, label %.lr.ph151.us, !llvm.loop !34 .lr.ph: ; preds = %.lr.ph149, %.loopexit %indvars.iv = phi i64 [ %indvars.iv.next, %.loopexit ], [ %193, %.lr.ph149 ] @@ -637,7 +637,7 @@ thread-pre-split: ; preds = %122, %111, %97, %92 %230 = zext i16 %229 to i32 %231 = add nsw i32 %230, -1 %232 = icmp eq i32 %228, %231 - %.not128.us = icmp sge i32 %.0110141.us, %.0105180 + %.not128.us = icmp sge i32 %.0110141.us, %.0105179 %or.cond159 = select i1 %232, i1 true, i1 %.not128.us br i1 %or.cond159, label %.loopexit, label %.lr.ph.split.us.backedge @@ -646,7 +646,7 @@ thread-pre-split: ; preds = %122, %111, %97, %92 %235 = trunc nuw i32 %234 to i8 %236 = or i8 %211, %235 store i8 %236, ptr %206, align 1, !tbaa !23 - %.not128.us.old.not = icmp slt i32 %.0110141.us, %.0105180 + %.not128.us.old.not = icmp slt i32 %.0110141.us, %.0105179 br i1 %.not128.us.old.not, label %.lr.ph.split.us.backedge, label %.loopexit .lr.ph.split.us.backedge: ; preds = %233, %226 @@ -673,7 +673,7 @@ thread-pre-split: ; preds = %122, %111, %97, %92 %249 = trunc i32 %248 to i8 %250 = or i8 %244, %249 store i8 %250, ptr %206, align 1, !tbaa !23 - %.not128.old.not = icmp slt i32 %.0110141, %.0105180 + %.not128.old.not = icmp slt i32 %.0110141, %.0105179 br i1 %.not128.old.not, label %.lr.ph.split.backedge, label %.loopexit .lr.ph.split.backedge: ; preds = %241, %266 @@ -713,7 +713,7 @@ thread-pre-split: ; preds = %122, %111, %97, %92 %270 = zext i16 %269 to i32 %271 = add nsw i32 %270, -1 %272 = icmp eq i32 %268, %271 - %.not128 = icmp sge i32 %.0110141, %.0105180 + %.not128 = icmp sge i32 %.0110141, %.0105179 %or.cond161 = select i1 %272, i1 true, i1 %.not128 br i1 %or.cond161, label %.loopexit, label %.lr.ph.split.backedge @@ -724,7 +724,7 @@ thread-pre-split: ; preds = %122, %111, %97, %92 %exitcond.not = icmp eq i64 %274, 4294967295 br i1 %exitcond.not, label %.preheader, label %.lr.ph, !llvm.loop !37 -._crit_edge155: ; preds = %._crit_edge.us, %.preheader, %.preheader136, %.preheader.thread190 +._crit_edge155: ; preds = %._crit_edge.us, %.preheader, %.preheader136, %.preheader.thread189 %275 = load i32, ptr %86, align 8, !tbaa !7 %276 = sext i32 %275 to i64 %277 = getelementptr inbounds i8, ptr %.1113156, i64 %276 @@ -736,9 +736,9 @@ thread-pre-split: ; preds = %122, %111, %97, %92 ._crit_edge: ; preds = %._crit_edge155, %190 %.lcssa138 = phi i32 [ 0, %190 ], [ %279, %._crit_edge155 ] %281 = load i32, ptr %89, align 4, !tbaa !29 - %282 = add i32 %281, %.0105180 + %282 = add i32 %281, %.0105179 store i32 %282, ptr %89, align 4, !tbaa !29 - %283 = add i32 %.lcssa138, %.0104183 + %283 = add i32 %.lcssa138, %.0104182 store i32 %283, ptr %1, align 8, !tbaa !25 br label %284 diff --git a/bench/freetype/optimized/raster.ll b/bench/freetype/optimized/raster.ll index 1d501e6851e..36cdf94f47e 100644 --- a/bench/freetype/optimized/raster.ll +++ b/bench/freetype/optimized/raster.ll @@ -1834,11 +1834,11 @@ define internal fastcc signext range(i8 0, 2) i8 @End_Profile(ptr noundef nonnul 13: ; preds = %1 %14 = getelementptr inbounds nuw i8, ptr %0, i64 56 store i32 99, ptr %14, align 8, !tbaa !99 - br label %111 + br label %110 15: ; preds = %1 %.not = icmp eq i32 %11, 0 - br i1 %.not, label %111, label %16 + br i1 %.not, label %110, label %16 16: ; preds = %15 %17 = getelementptr inbounds nuw i8, ptr %3, i64 20 @@ -1965,7 +1965,7 @@ define internal fastcc signext range(i8 0, 2) i8 @End_Profile(ptr noundef nonnul %87 = getelementptr inbounds nuw i64, ptr %65, i64 %86 %88 = load i64, ptr %87, align 8, !tbaa !124 %89 = icmp slt i64 %88, %74 - br i1 %89, label %.critedge.thread.i, label %101 + br i1 %89, label %.critedge.thread.i, label %100 .critedge.thread.i: ; preds = %78, %85, %.critedge.i %.in.i = phi i64 [ %indvars.iv.next.i, %85 ], [ %indvars.iv.next.i, %.critedge.i ], [ %77, %78 ] @@ -1977,56 +1977,56 @@ define internal fastcc signext range(i8 0, 2) i8 @End_Profile(ptr noundef nonnul .preheader.preheader.i: ; preds = %.critedge.thread.i %91 = trunc i64 %.in.i to i32 %sext.i = shl i64 %.in.i, 32 - %92 = ashr exact i64 %sext.i, 32 + %91 = ashr exact i64 %sext.i, 32 %smin.i = tail call i32 @llvm.smin.i32(i32 %91, i32 -1) %93 = add i32 %smin.i, -1 br label %.preheader.i .preheader.i: ; preds = %.preheader.i, %.preheader.preheader.i - %indvars.iv39.i = phi i64 [ %92, %.preheader.preheader.i ], [ %indvars.iv.next40.i, %.preheader.i ] - %.029.i = phi i32 [ %.047, %.preheader.preheader.i ], [ %96, %.preheader.i ] - %94 = getelementptr inbounds i64, ptr %65, i64 %indvars.iv39.i - %95 = load i64, ptr %94, align 8, !tbaa !124 - %96 = trunc i64 %95 to i32 - %97 = sext i32 %.029.i to i64 - store i64 %97, ptr %94, align 8, !tbaa !124 + %indvars.iv39.i = phi i64 [ %91, %.preheader.preheader.i ], [ %indvars.iv.next40.i, %.preheader.i ] + %.029.i = phi i32 [ %.047, %.preheader.preheader.i ], [ %94, %.preheader.i ] + %92 = getelementptr inbounds i64, ptr %65, i64 %indvars.iv39.i + %93 = load i64, ptr %92, align 8, !tbaa !124 + %94 = trunc i64 %93 to i32 + %95 = sext i32 %.029.i to i64 + store i64 %95, ptr %92, align 8, !tbaa !124 %indvars.iv.next40.i = add nsw i64 %indvars.iv39.i, -1 %lftr.wideiv.i = trunc i64 %indvars.iv.next40.i to i32 %exitcond.not.i = icmp eq i32 %93, %lftr.wideiv.i br i1 %exitcond.not.i, label %98, label %.preheader.i, !llvm.loop !138 -98: ; preds = %.preheader.i - %99 = add nsw i32 %63, 1 - store i32 %99, ptr %62, align 4, !tbaa !102 - br label %101 +97: ; preds = %.preheader.i + %98 = add nsw i32 %63, 1 + store i32 %98, ptr %62, align 4, !tbaa !102 + br label %100 Insert_Y_Turns.exit: ; preds = %.critedge.thread.i - %100 = getelementptr inbounds nuw i8, ptr %0, i64 56 - store i32 98, ptr %100, align 8, !tbaa !99 - br label %111 - -101: ; preds = %98, %85 - %102 = getelementptr inbounds nuw i8, ptr %0, i64 120 - %103 = load ptr, ptr %102, align 8, !tbaa !106 - %.not55 = icmp eq ptr %103, null - br i1 %.not55, label %104, label %105 - -104: ; preds = %101 - store ptr %3, ptr %102, align 8, !tbaa !106 - br label %105 - -105: ; preds = %104, %101 - %106 = phi ptr [ %3, %104 ], [ %103, %101 ] - %107 = getelementptr inbounds nuw i8, ptr %3, i64 8 - store ptr %106, ptr %107, align 8, !tbaa !121 + %99 = getelementptr inbounds nuw i8, ptr %0, i64 56 + store i32 98, ptr %99, align 8, !tbaa !99 + br label %110 + +100: ; preds = %97, %85 + %101 = getelementptr inbounds nuw i8, ptr %0, i64 120 + %102 = load ptr, ptr %101, align 8, !tbaa !106 + %.not55 = icmp eq ptr %102, null + br i1 %.not55, label %103, label %104 + +103: ; preds = %100 + store ptr %3, ptr %101, align 8, !tbaa !106 + br label %104 + +104: ; preds = %103, %100 + %105 = phi ptr [ %3, %104 ], [ %102, %101 ] + %106 = getelementptr inbounds nuw i8, ptr %3, i64 8 + store ptr %105, ptr %106, align 8, !tbaa !121 store ptr %5, ptr %3, align 8, !tbaa !120 - %108 = getelementptr inbounds nuw i8, ptr %0, i64 96 - %109 = load i16, ptr %108, align 8, !tbaa !103 - %110 = add i16 %109, 1 - store i16 %110, ptr %108, align 8, !tbaa !103 - br label %111 + %107 = getelementptr inbounds nuw i8, ptr %0, i64 96 + %108 = load i16, ptr %107, align 8, !tbaa !103 + %109 = add i16 %108, 1 + store i16 %109, ptr %107, align 8, !tbaa !103 + br label %110 -111: ; preds = %Insert_Y_Turns.exit, %15, %105, %13 +110: ; preds = %Insert_Y_Turns.exit, %15, %104, %13 %.048 = phi i8 [ 1, %13 ], [ 1, %Insert_Y_Turns.exit ], [ 0, %105 ], [ 0, %15 ] ret i8 %.048 } diff --git a/bench/git/optimized/hex.ll b/bench/git/optimized/hex.ll index a42496a80ba..43d5865a140 100644 --- a/bench/git/optimized/hex.ll +++ b/bench/git/optimized/hex.ll @@ -213,8 +213,8 @@ oid_set_algo.exit.i: ; preds = %3, %23 get_oid_hex_algop.exit: ; preds = %hex2chr.exit.i.i %32 = add i32 %.017, -1 - %exitcond28.not = icmp eq i32 %32, 0 - br i1 %exitcond28.not, label %get_oid_hex_algop.exit.thread, label %3, !llvm.loop !39 + %33 = icmp eq i32 %32, 0 + br i1 %33, label %get_oid_hex_algop.exit.thread, label %3, !llvm.loop !39 get_oid_hex_algop.exit.thread: ; preds = %get_oid_hex_algop.exit, %29, %oid_set_algo.exit.i %.06 = phi i32 [ %.017, %oid_set_algo.exit.i ], [ %.017, %29 ], [ 0, %get_oid_hex_algop.exit ] @@ -453,27 +453,27 @@ oid_set_algo.exit.i.i: ; preds = %25 %30 = getelementptr inbounds nuw i8, ptr %1, i64 32 store i32 %.017.i, ptr %30, align 4, !tbaa !37 %.not10.i.i = icmp eq i64 %7, 32 - br i1 %.not10.i.i, label %35, label %31 + br i1 %.not10.i.i, label %get_oid_hex_any.exit, label %31 31: ; preds = %oid_set_algo.exit.i.i.thread, %oid_set_algo.exit.i.i %32 = getelementptr inbounds nuw i8, ptr %1, i64 %7 %33 = sub i64 32, %7 tail call void @llvm.memset.p0.i64(ptr align 1 %32, i8 0, i64 %33, i1 false) - br label %35 + br label %get_oid_hex_any.exit get_oid_hex_algop.exit.i: ; preds = %hex2chr.exit.i.i.i %34 = add nsw i32 %.017.i, -1 - %exitcond28.not.i = icmp eq i32 %34, 0 - br i1 %exitcond28.not.i, label %get_oid_hex_any.exit, label %4, !llvm.loop !39 + %35 = icmp eq i32 %34, 0 + br i1 %35, label %get_oid_hex_any.exit, label %4, !llvm.loop !39 -35: ; preds = %oid_set_algo.exit.i.i, %31 +get_oid_hex_any.exit: ; preds = %oid_set_algo.exit.i.i, %31 %36 = getelementptr inbounds nuw [3 x %struct.git_hash_algo], ptr @hash_algos, i64 0, i64 %5, i32 3 %37 = load i64, ptr %36, align 8, !tbaa !40 %38 = getelementptr inbounds nuw i8, ptr %0, i64 %37 store ptr %38, ptr %2, align 8, !tbaa !41 br label %get_oid_hex_any.exit -get_oid_hex_any.exit: ; preds = %get_oid_hex_algop.exit.i, %35 +get_oid_hex_any.exit:; preds = %get_oid_hex_algop.exit.i, %35 %.06.i10 = phi i32 [ %.017.i, %35 ], [ 0, %get_oid_hex_algop.exit.i ] ret i32 %.06.i10 } diff --git a/bench/glslang/optimized/Pp.ll b/bench/glslang/optimized/Pp.ll index 15de571d638..df97fa503e9 100644 --- a/bench/glslang/optimized/Pp.ll +++ b/bench/glslang/optimized/Pp.ll @@ -2027,8 +2027,8 @@ _ZN7glslang10TPpContext14lookupMacroDefEi.exit.thread: ; preds = %_ZNSt3mapIiN7g 95: ; preds = %.preheader143 %96 = add nsw i32 %.0114154, -1 - %exitcond.not = icmp eq i32 %.0114154, 0 - br i1 %exitcond.not, label %.critedge, label %.preheader143, !llvm.loop !17 + %.not171 = icmp eq i32 %.0114154, 0 + br i1 %.not171, label %.critedge, label %.preheader143, !llvm.loop !17 .preheader143: ; preds = %tailrecurse, %95 %.0114154 = phi i32 [ %96, %95 ], [ 3, %tailrecurse ] @@ -2087,8 +2087,8 @@ _ZN7glslang10TPpContext14lookupMacroDefEi.exit.thread: ; preds = %_ZNSt3mapIiN7g 124: ; preds = %.preheader %125 = add nsw i32 %.0113155, -1 - %exitcond171.not = icmp eq i32 %.0113155, 0 - br i1 %exitcond171.not, label %.thread, label %.preheader, !llvm.loop !18 + %.not172 = icmp eq i32 %.0113155, 0 + br i1 %.not172, label %.thread, label %.preheader, !llvm.loop !18 126: ; preds = %.preheader %127 = getelementptr inbounds nuw i8, ptr %121, i64 4 diff --git a/bench/graphviz/optimized/dtstat.ll b/bench/graphviz/optimized/dtstat.ll index 4069b9a2ab6..03d9fb4d066 100644 --- a/bench/graphviz/optimized/dtstat.ll +++ b/bench/graphviz/optimized/dtstat.ll @@ -93,7 +93,7 @@ dthstat.exit: ; preds = %34, %19 br i1 %39, label %40, label %dthstat.exit._crit_edge dthstat.exit._crit_edge: ; preds = %dthstat.exit - %.pre83 = load ptr, ptr @dtstat.Count, align 8, !tbaa !26 + %.pre82 = load ptr, ptr @dtstat.Count, align 8, !tbaa !26 br label %50 40: ; preds = %dthstat.exit @@ -121,14 +121,14 @@ dthstat.exit._crit_edge: ; preds = %dthstat.exit br label %50 50: ; preds = %dthstat.exit._crit_edge, %48 - %51 = phi ptr [ %.pre83, %dthstat.exit._crit_edge ], [ %47, %48 ] + %51 = phi ptr [ %.pre82, %dthstat.exit._crit_edge ], [ %47, %48 ] br label %63 52: ; preds = %63 %.val62 = load ptr, ptr %20, align 8 %.val63 = load i32, ptr %21, align 8, !tbaa !18 %53 = icmp sgt i32 %.val63, 0 - br i1 %53, label %.lr.ph.split.i.preheader, label %dthstat.exit75 + br i1 %53, label %.lr.ph.split.i.preheader, label %dthstat.exit74 .lr.ph.split.i.preheader: ; preds = %52 %.0141.i65 = add nsw i32 %.val63, -1 @@ -159,10 +159,10 @@ dthstat.exit._crit_edge: ; preds = %dthstat.exit br i1 %exitcond.not.i, label %dthstat.exit75, label %.lr.ph.split.i, !llvm.loop !24 63: ; preds = %50, %63 - %.04478 = phi i64 [ 0, %50 ], [ %65, %63 ] - %64 = getelementptr inbounds nuw i64, ptr %51, i64 %.04478 + %.04477 = phi i64 [ 0, %50 ], [ %65, %63 ] + %64 = getelementptr inbounds nuw i64, ptr %51, i64 %.04477 store i64 0, ptr %64, align 8, !tbaa !25 - %65 = add i64 %.04478, 1 + %65 = add i64 %.04477, 1 %66 = load i64, ptr %10, align 8, !tbaa !23 %.not60 = icmp ugt i64 %65, %66 br i1 %.not60, label %52, label %63, !llvm.loop !27 @@ -170,13 +170,13 @@ dthstat.exit._crit_edge: ; preds = %dthstat.exit 67: ; preds = %17 %68 = and i32 %15, 12 %.not52 = icmp eq i32 %68, 0 - br i1 %.not52, label %dthstat.exit75, label %69 + br i1 %.not52, label %dthstat.exit74, label %69 69: ; preds = %67 %70 = getelementptr inbounds nuw i8, ptr %0, i64 24 %71 = load ptr, ptr %70, align 8, !tbaa !28 %.not53 = icmp eq ptr %71, null - br i1 %.not53, label %dthstat.exit75, label %72 + br i1 %.not53, label %dthstat.exit74, label %72 72: ; preds = %69 tail call fastcc void @dttstat(ptr noundef nonnull %1, ptr noundef nonnull %71, i64 noundef 0, ptr noundef null) @@ -187,7 +187,7 @@ dthstat.exit._crit_edge: ; preds = %dthstat.exit br i1 %76, label %77, label %._crit_edge ._crit_edge: ; preds = %72 - %.pre85 = load ptr, ptr @dtstat.Count, align 8, !tbaa !26 + %.pre84 = load ptr, ptr @dtstat.Count, align 8, !tbaa !26 br label %87 77: ; preds = %72 @@ -197,11 +197,11 @@ dthstat.exit._crit_edge: ; preds = %dthstat.exit 78: ; preds = %77 %79 = load ptr, ptr @dtstat.Count, align 8, !tbaa !26 tail call void @free(ptr noundef %79) #7 - %.pre84 = load i64, ptr %11, align 8, !tbaa !22 + %.pre83 = load i64, ptr %11, align 8, !tbaa !22 br label %80 80: ; preds = %78, %77 - %81 = phi i64 [ %.pre84, %78 ], [ %73, %77 ] + %81 = phi i64 [ %.pre83, %78 ], [ %73, %77 ] %82 = shl i64 %81, 2 %83 = add i64 %82, 4 %84 = tail call noalias ptr @malloc(i64 noundef %83) #8 @@ -215,7 +215,7 @@ dthstat.exit._crit_edge: ; preds = %dthstat.exit br label %87 87: ; preds = %._crit_edge, %85 - %88 = phi ptr [ %.pre85, %._crit_edge ], [ %84, %85 ] + %88 = phi ptr [ %.pre84, %._crit_edge ], [ %84, %85 ] br label %93 89: ; preds = %93 @@ -228,18 +228,18 @@ dthstat.exit._crit_edge: ; preds = %dthstat.exit br label %97 93: ; preds = %87, %93 - %.04379 = phi i64 [ 0, %87 ], [ %95, %93 ] - %94 = getelementptr inbounds nuw i64, ptr %88, i64 %.04379 + %.04378 = phi i64 [ 0, %87 ], [ %95, %93 ] + %94 = getelementptr inbounds nuw i64, ptr %88, i64 %.04378 store i64 0, ptr %94, align 8, !tbaa !25 - %95 = add i64 %.04379, 1 + %95 = add i64 %.04378, 1 %96 = load i64, ptr %11, align 8, !tbaa !22 %.not56 = icmp ugt i64 %95, %96 br i1 %.not56, label %89, label %93, !llvm.loop !29 97: ; preds = %89, %103 - %.080 = phi i64 [ 0, %89 ], [ %105, %103 ] + %.079 = phi i64 [ 0, %89 ], [ %105, %103 ] %98 = phi i64 [ %.promoted, %89 ], [ %104, %103 ] - %99 = getelementptr inbounds nuw i64, ptr %88, i64 %.080 + %99 = getelementptr inbounds nuw i64, ptr %88, i64 %.079 %100 = load i64, ptr %99, align 8, !tbaa !25 %101 = icmp ugt i64 %100, %98 br i1 %101, label %102, label %103 @@ -250,16 +250,16 @@ dthstat.exit._crit_edge: ; preds = %dthstat.exit 103: ; preds = %97, %102 %104 = phi i64 [ %98, %97 ], [ %100, %102 ] - %105 = add nuw i64 %.080, 1 + %105 = add nuw i64 %.079, 1 %exitcond = icmp eq i64 %105, %umax - br i1 %exitcond, label %dthstat.exit75, label %97, !llvm.loop !30 + br i1 %exitcond, label %dthstat.exit74, label %97, !llvm.loop !30 -dthstat.exit75: ; preds = %58, %103, %52, %67, %69 +dthstat.exit74: ; preds = %58, %103, %52, %67, %69 %106 = load ptr, ptr @dtstat.Count, align 8, !tbaa !26 store ptr %106, ptr %12, align 8, !tbaa !31 br label %107 -107: ; preds = %80, %43, %9, %dthstat.exit75 +107: ; preds = %80, %43, %9, %dthstat.exit74 %.045 = phi i32 [ 0, %dthstat.exit75 ], [ 0, %9 ], [ -1, %43 ], [ -1, %80 ] ret i32 %.045 } diff --git a/bench/graphviz/optimized/lu.ll b/bench/graphviz/optimized/lu.ll index 0d19eaa58f8..3f8468cc571 100644 --- a/bench/graphviz/optimized/lu.ll +++ b/bench/graphviz/optimized/lu.ll @@ -283,7 +283,7 @@ define void @lu_solve(ptr noundef captures(none) %0, ptr noundef readonly captur .preheader40.._crit_edge_crit_edge: ; preds = %.preheader40 %.pre = load i32, ptr %6, align 4, !tbaa !16 - %.pre72 = sext i32 %.pre to i64 + %.pre71 = sext i32 %.pre to i64 br label %._crit_edge .lr.ph: ; preds = %.preheader40 @@ -314,7 +314,7 @@ define void @lu_solve(ptr noundef captures(none) %0, ptr noundef readonly captur br i1 %exitcond.not, label %._crit_edge, label %16, !llvm.loop !25 ._crit_edge: ; preds = %16, %.preheader40.._crit_edge_crit_edge - %.pre-phi = phi i64 [ %.pre72, %.preheader40.._crit_edge_crit_edge ], [ %9, %16 ] + %.pre-phi = phi i64 [ %.pre71, %.preheader40.._crit_edge_crit_edge ], [ %9, %16 ] %.0.lcssa = phi double [ 0.000000e+00, %.preheader40.._crit_edge_crit_edge ], [ %21, %16 ] %22 = getelementptr inbounds double, ptr %1, i64 %.pre-phi %23 = load double, ptr %22, align 8, !tbaa !14 diff --git a/bench/graphviz/optimized/visibility.ll b/bench/graphviz/optimized/visibility.ll index c3c775c7ff2..f30b92ab759 100644 --- a/bench/graphviz/optimized/visibility.ll +++ b/bench/graphviz/optimized/visibility.ll @@ -191,8 +191,8 @@ allocArray.exit: ; preds = %gv_calloc.exit23.i, br label %79 79: ; preds = %clear.exit.i, %.lr.ph.i - %indvars.iv.i3 = phi i64 [ %78, %.lr.ph.i ], [ %indvars.iv.next.i4, %clear.exit.i ] - %80 = getelementptr inbounds nuw %struct.Pxy_t, ptr %42, i64 %indvars.iv.i3 + %indvars.iv.i4 = phi i64 [ %78, %.lr.ph.i ], [ %indvars.iv.next.i5, %clear.exit.i ] + %80 = getelementptr inbounds nuw %struct.Pxy_t, ptr %42, i64 %indvars.iv.i4 %81 = load double, ptr %52, align 8 %82 = load double, ptr %57, align 8 %83 = load double, ptr %50, align 8 @@ -239,11 +239,11 @@ inCone.exit.i: ; preds = %79 br i1 %116, label %117, label %clear.exit.i 117: ; preds = %inCone.exit.i, %114 - %118 = getelementptr inbounds nuw i32, ptr %46, i64 %indvars.iv.i3 + %118 = getelementptr inbounds nuw i32, ptr %46, i64 %indvars.iv.i4 %119 = load i32, ptr %118, align 4, !tbaa !22 %120 = sext i32 %119 to i64 %121 = getelementptr inbounds %struct.Pxy_t, ptr %42, i64 %120 - %122 = getelementptr inbounds nuw i32, ptr %44, i64 %indvars.iv.i3 + %122 = getelementptr inbounds nuw i32, ptr %44, i64 %indvars.iv.i4 %123 = load i32, ptr %122, align 4, !tbaa !22 %124 = sext i32 %123 to i64 %125 = getelementptr inbounds %struct.Pxy_t, ptr %42, i64 %124 @@ -419,24 +419,24 @@ intersect.exit.i: ; preds = %inBetween.exit42.i. %243 = fmul double %141, %141 %244 = tail call double @llvm.fmuladd.f64(double %144, double %144, double %243) %sqrt.i65.i = tail call double @llvm.sqrt.f64(double %244) - %245 = getelementptr inbounds nuw double, ptr %64, i64 %indvars.iv.i3 + %245 = getelementptr inbounds nuw double, ptr %64, i64 %indvars.iv.i4 store double %sqrt.i65.i, ptr %245, align 8, !tbaa !23 - %246 = getelementptr inbounds nuw ptr, ptr %11, i64 %indvars.iv.i3 + %246 = getelementptr inbounds nuw ptr, ptr %11, i64 %indvars.iv.i4 %247 = load ptr, ptr %246, align 8, !tbaa !14 %248 = getelementptr inbounds nuw double, ptr %247, i64 %indvars.iv74.i store double %sqrt.i65.i, ptr %248, align 8, !tbaa !23 br label %clear.exit.i clear.exit.i: ; preds = %intersect.exit.i, %inBetween.exit42.i.i, %213, %209, %206, %inBetween.exit.i.i, %189, %185, %182, %.loopexit.i, %inCone.exit64.i, %156, %inCone.exit.i, %114 - %indvars.iv.next.i4 = add nsw i64 %indvars.iv.i3, -1 + %indvars.iv.next.i5 = add nsw i64 %indvars.iv.i4, -1 %249 = and i64 %indvars.iv.next.i4, 4294967295 %exitcond.not.i5 = icmp eq i64 %249, 4294967295 br i1 %exitcond.not.i5, label %._crit_edge.i, label %79, !llvm.loop !26 ._crit_edge.i: ; preds = %clear.exit.i, %47 %indvars.iv.next75.i = add nuw nsw i64 %indvars.iv74.i, 1 - %exitcond77.not.i = icmp eq i64 %indvars.iv.next75.i, %wide.trip.count.i.i - br i1 %exitcond77.not.i, label %compVis.exit, label %47, !llvm.loop !27 + %exitcond.not.i3 = icmp eq i64 %indvars.iv.next75.i, %wide.trip.count.i.i + br i1 %exitcond.not.i3, label %compVis.exit, label %47, !llvm.loop !27 compVis.exit: ; preds = %._crit_edge.i, %allocArray.exit ret void diff --git a/bench/harfbuzz/optimized/hb-subset-cff1.ll b/bench/harfbuzz/optimized/hb-subset-cff1.ll index bcf0892912e..8e94c705e8e 100644 --- a/bench/harfbuzz/optimized/hb-subset-cff1.ll +++ b/bench/harfbuzz/optimized/hb-subset-cff1.ll @@ -16560,7 +16560,7 @@ define linkonce_odr dso_local noundef zeroext i1 @_ZN3CFF16subr_subsetter_tI21cf ._crit_edge: ; preds = %.critedge67 %14 = getelementptr inbounds nuw i8, ptr %3, i64 2 store i8 1, ptr %14, align 1, !tbaa !581 - %wide.trip.count88 = zext i32 %6 to i64 + %wide.trip.count87 = zext i32 %6 to i64 br label %.lr.ph76 15: ; preds = %.lr.ph73, %.critedge67 @@ -16678,17 +16678,17 @@ _ZNK3CFF15parsed_cs_str_t6at_endEj.exit.thread: ; preds = %33, %_ZNK3CFF15pars %.1 = phi i1 [ %.072, %44 ], [ %.072, %42 ], [ %.072, %31 ], [ %.072, %27 ], [ %.072, %15 ], [ %.072, %20 ], [ true, %.critedge65 ], [ true, %62 ], [ true, %.lr.ph ] %indvars.iv.next83 = add nuw nsw i64 %indvars.iv82, 1 %indvars.iv.next = add i32 %indvars.iv, 1 - %exitcond84.not = icmp eq i64 %indvars.iv.next83, %wide.trip.count - br i1 %exitcond84.not, label %._crit_edge, label %15, !llvm.loop !588 + %exitcond.not = icmp eq i64 %indvars.iv.next83, %wide.trip.count + br i1 %exitcond.not, label %._crit_edge, label %15, !llvm.loop !588 64: ; preds = %69 - %indvars.iv.next86 = add nuw nsw i64 %indvars.iv85, 1 - %exitcond89.not = icmp eq i64 %indvars.iv.next86, %wide.trip.count88 - br i1 %exitcond89.not, label %.critedge, label %.lr.ph76, !llvm.loop !589 + %indvars.iv.next85 = add nuw nsw i64 %indvars.iv84, 1 + %exitcond88.not = icmp eq i64 %indvars.iv.next85, %wide.trip.count87 + br i1 %exitcond88.not, label %.critedge, label %.lr.ph76, !llvm.loop !589 .lr.ph76: ; preds = %._crit_edge, %64 - %indvars.iv85 = phi i64 [ 0, %._crit_edge ], [ %indvars.iv.next86, %64 ] - %65 = getelementptr inbounds nuw %"struct.CFF::parsed_cs_op_t", ptr %8, i64 %indvars.iv85 + %indvars.iv84 = phi i64 [ 0, %._crit_edge ], [ %indvars.iv.next85, %64 ] + %65 = getelementptr inbounds nuw %"struct.CFF::parsed_cs_op_t", ptr %8, i64 %indvars.iv84 %66 = getelementptr inbounds nuw i8, ptr %65, i64 8 %67 = load i32, ptr %66, align 8, !tbaa !298 %68 = icmp eq i32 %67, 11 @@ -16705,8 +16705,8 @@ _ZNK3CFF15parsed_cs_str_t6at_endEj.exit.thread: ; preds = %33, %_ZNK3CFF15pars br label %.critedge .critedge: ; preds = %64, %.lr.ph76, %._crit_edge.thread, %73 - %.0.lcssa91 = phi i1 [ false, %._crit_edge.thread ], [ %.1, %73 ], [ %.1, %.lr.ph76 ], [ %.1, %64 ] - ret i1 %.0.lcssa91 + %.0.lcssa90 = phi i1 [ false, %._crit_edge.thread ], [ %.1, %73 ], [ %.1, %.lr.ph76 ], [ %.1, %64 ] + ret i1 %.0.lcssa90 } ; Function Attrs: mustprogress nounwind uwtable diff --git a/bench/hdf5/optimized/h5tools.ll b/bench/hdf5/optimized/h5tools.ll index 0a3ab89a905..b9543fbffee 100644 --- a/bench/hdf5/optimized/h5tools.ll +++ b/bench/hdf5/optimized/h5tools.ll @@ -3966,9 +3966,9 @@ define void @init_acc_pos(i32 noundef %0, ptr noundef readonly captures(none) %1 br label %.lr.ph26 .preheader: ; preds = %.lr.ph26, %6 - %15 = zext i32 %0 to i64 - %16 = shl nuw nsw i64 %15, 3 - tail call void @llvm.memset.p0.i64(ptr align 8 %3, i8 0, i64 %16, i1 false), !tbaa !7 + %17 = zext i32 %0 to i64 + %18 = shl nuw nsw i64 %17, 3 + tail call void @llvm.memset.p0.i64(ptr align 8 %3, i8 0, i64 %18, i1 false), !tbaa !7 br label %.loopexit .lr.ph26: ; preds = %.lr.ph26.preheader, %.lr.ph26 @@ -3976,8 +3976,8 @@ define void @init_acc_pos(i32 noundef %0, ptr noundef readonly captures(none) %1 %17 = add nuw nsw i64 %indvars.iv, 1 %18 = getelementptr inbounds nuw i64, ptr %2, i64 %17 %19 = load i64, ptr %18, align 8, !tbaa !7 - %20 = getelementptr inbounds nuw i64, ptr %1, i64 %17 - %21 = load i64, ptr %20, align 8, !tbaa !7 + %21 = getelementptr inbounds nuw i64, ptr %1, i64 %17 + %21 = load i64, ptr %21, align 8, !tbaa !7 %22 = mul i64 %21, %19 %23 = getelementptr inbounds nuw i64, ptr %2, i64 %indvars.iv store i64 %22, ptr %23, align 8, !tbaa !7 diff --git a/bench/hermes/optimized/Callable.ll b/bench/hermes/optimized/Callable.ll index f71849880f2..ac21b35b6fe 100644 --- a/bench/hermes/optimized/Callable.ll +++ b/bench/hermes/optimized/Callable.ll @@ -1140,11 +1140,11 @@ cond.end79: ; preds = %if.end.i.i.i.i.i.i. for.body.i.i.i.i.i.i.i.i.i.i.i: ; preds = %for.body.i.i.i.i.i.i.i.i.i.i.i, %cond.end79 %__n.09.i.i.i.i.i.i.i.i.i.i.i = phi i64 [ %dec.i.i.i.i.i.i.i.i.i.i.i, %for.body.i.i.i.i.i.i.i.i.i.i.i ], [ 6, %cond.end79 ] %__result.addr.08.i.i.i.i.i.i.i.i.i.i.i = phi ptr [ %incdec.ptr1.i.i.i.i.i.i.i.i.i.i.i, %for.body.i.i.i.i.i.i.i.i.i.i.i ], [ %add.ptr.i.i.i.i.i.i, %cond.end79 ] - %__first.addr.07.i.i.i.i.i.i.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i, %for.body.i.i.i.i.i.i.i.i.i.i.i ], [ @.str.6, %cond.end79 ] - %18 = load i8, ptr %__first.addr.07.i.i.i.i.i.i.i.i.i.i.i, align 1 + %__first.addr.07.i.i.i.i.i.i.i.i.i.i.i.idx = phi ptr [ %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i, %for.body.i.i.i.i.i.i.i.i.i.i.i ], [ @.str.6, %cond.end79 ] + %18 = load i8, ptr %__first.addr.07.i.i.i.i.i.i.i.i.i.i.i.idx, align 1 %conv.i.i.i.i.i.i.i.i.i.i.i = zext i8 %18 to i16 store i16 %conv.i.i.i.i.i.i.i.i.i.i.i, ptr %__result.addr.08.i.i.i.i.i.i.i.i.i.i.i, align 2 - %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %__first.addr.07.i.i.i.i.i.i.i.i.i.i.i, i64 1 + %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %__first.addr.07.i.i.i.i.i.i.i.i.i.i.i.idx, i64 1 %incdec.ptr1.i.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %__result.addr.08.i.i.i.i.i.i.i.i.i.i.i, i64 2 %dec.i.i.i.i.i.i.i.i.i.i.i = add nsw i64 %__n.09.i.i.i.i.i.i.i.i.i.i.i, -1 %exitcond.not.i.i.i.i.i.i.i.i.i.i.i = icmp eq i64 %dec.i.i.i.i.i.i.i.i.i.i.i, 0 @@ -1406,8 +1406,8 @@ _ZN6hermes2vm10StringView14const_iteratorppEv.exit.i.i.i.i.i.i.i.i.i.i: ; preds store i16 %.sink.i.i.i.i.i.i.i.i.i.i, ptr %__result.addr.018.i.i.i.i.i.i.i.i.i.i, align 2 %incdec.ptr.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %__result.addr.018.i.i.i.i.i.i.i.i.i.i, i64 2 %dec.i.i.i.i.i.i.i.i.i.i = add i64 %__n.019.i.i.i.i.i.i.i.i.i.i, -1 - %exitcond.not.i.i.i.i.i.i.i.i.i.i = icmp eq i64 %dec.i.i.i.i.i.i.i.i.i.i, 0 - br i1 %exitcond.not.i.i.i.i.i.i.i.i.i.i, label %_ZN4llvh23SmallVectorTemplateBaseIDsLb1EE18uninitialized_copyIN6hermes2vm10StringView14const_iteratorEPDsEEvT_S8_T0_.exit.loopexit.i.i, label %for.body.i.i.i.i.i.i.i.i.i.i, !llvm.loop !6 + %cmp.i.i.i.i.i.i.i.i.i.i = icmp eq i64 %dec.i.i.i.i.i.i.i.i.i.i, 0 + br i1 %cmp.i.i.i.i.i.i.i.i.i.i, label %_ZN4llvh23SmallVectorTemplateBaseIDsLb1EE18uninitialized_copyIN6hermes2vm10StringView14const_iteratorEPDsEEvT_S8_T0_.exit.loopexit.i.i, label %for.body.i.i.i.i.i.i.i.i.i.i, !llvm.loop !6 _ZN4llvh23SmallVectorTemplateBaseIDsLb1EE18uninitialized_copyIN6hermes2vm10StringView14const_iteratorEPDsEEvT_S8_T0_.exit.loopexit.i.i: ; preds = %_ZN6hermes2vm10StringView14const_iteratorppEv.exit.i.i.i.i.i.i.i.i.i.i %.pre11.i.i = load i32, ptr %Size.i.i.i.i.i.i, align 8 diff --git a/bench/hermes/optimized/ItaniumDemangle.ll b/bench/hermes/optimized/ItaniumDemangle.ll index 933f3212e44..a51dbbaa2e5 100644 --- a/bench/hermes/optimized/ItaniumDemangle.ll +++ b/bench/hermes/optimized/ItaniumDemangle.ll @@ -17145,9 +17145,9 @@ entry: %sub.ptr.rhs.cast = ptrtoint ptr %1 to i64 %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast %cmp = icmp ugt i64 %sub.ptr.sub, 8 - br i1 %cmp, label %for.body.preheader, label %if.end + br i1 %cmp, label %for.body, label %if.end -for.body.preheader: ; preds = %entry +for.body: ; preds = %entry %scevgep = getelementptr i8, ptr %0, i64 -2 br label %for.body @@ -17184,14 +17184,14 @@ for.end: ; preds = %for.body while.body.i.i: ; preds = %for.end, %while.body.i.i %__last.addr.011.i.i = phi ptr [ %__last.addr.0.i.i, %while.body.i.i ], [ %e.017, %for.end ] - %__first.addr.010.i.i = phi ptr [ %incdec.ptr2.i.i, %while.body.i.i ], [ %0, %for.end ] - %5 = load i8, ptr %__first.addr.010.i.i, align 1 + %__first.addr.010.i.i.idx = phi ptr [ %incdec.ptr2.i.i, %while.body.i.i ], [ %0, %for.end ] + %5 = load i8, ptr %__first.addr.010.i.i.idx, align 1 %6 = load i8, ptr %__last.addr.011.i.i, align 1 store i8 %6, ptr %__first.addr.010.i.i, align 1 store i8 %5, ptr %__last.addr.011.i.i, align 1 - %incdec.ptr2.i.i = getelementptr inbounds nuw i8, ptr %__first.addr.010.i.i, i64 1 + %incdec.ptr2.i.i = getelementptr inbounds nuw i8, ptr %__first.addr.010.i.i.idx, i64 1 %__last.addr.0.i.i = getelementptr inbounds i8, ptr %__last.addr.011.i.i, i64 -1 - %exitcond.not = icmp eq ptr %__last.addr.0.i.i, %indvars.iv + %exitcond.not = icmp eq ptr %__last.addr.0.i.i, %e.017 br i1 %exitcond.not, label %_ZSt7reverseIPcEvT_S1_.exit, label %while.body.i.i, !llvm.loop !34 _ZSt7reverseIPcEvT_S1_.exit: ; preds = %while.body.i.i, %for.end @@ -17277,15 +17277,15 @@ entry: %sub.ptr.rhs.cast = ptrtoint ptr %1 to i64 %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast %cmp = icmp ugt i64 %sub.ptr.sub, 16 - br i1 %cmp, label %for.body.preheader, label %if.end + br i1 %cmp, label %for.body, label %if.end for.body.preheader: ; preds = %entry %scevgep = getelementptr i8, ptr %0, i64 -4 br label %for.body -for.body: ; preds = %for.body.preheader, %for.body - %indvars.iv = phi ptr [ %scevgep, %for.body.preheader ], [ %scevgep19, %for.body ] - %t.0.idx18 = phi i64 [ 0, %for.body.preheader ], [ %incdec.ptr.add, %for.body ] +for.body: ; preds = %for.body, %for.body + %t.0.idx18 = phi ptr [ %scevgep, %for.body.preheader ], [ %scevgep19, %for.body ] + %e.017 = phi i64 [ 0, %for.body.preheader ], [ %incdec.ptr.add, %for.body ] %e.017 = phi ptr [ %0, %for.body.preheader ], [ %incdec.ptr25, %for.body ] %t.0.ptr = getelementptr inbounds nuw i8, ptr %1, i64 %t.0.idx18 %3 = load i8, ptr %t.0.ptr, align 1 @@ -17316,14 +17316,14 @@ for.end: ; preds = %for.body while.body.i.i: ; preds = %for.end, %while.body.i.i %__last.addr.011.i.i = phi ptr [ %__last.addr.0.i.i, %while.body.i.i ], [ %e.017, %for.end ] - %__first.addr.010.i.i = phi ptr [ %incdec.ptr2.i.i, %while.body.i.i ], [ %0, %for.end ] - %5 = load i8, ptr %__first.addr.010.i.i, align 1 + %__first.addr.010.i.i.idx = phi ptr [ %incdec.ptr2.i.i, %while.body.i.i ], [ %0, %for.end ] + %5 = load i8, ptr %__first.addr.010.i.i.idx, align 1 %6 = load i8, ptr %__last.addr.011.i.i, align 1 store i8 %6, ptr %__first.addr.010.i.i, align 1 store i8 %5, ptr %__last.addr.011.i.i, align 1 - %incdec.ptr2.i.i = getelementptr inbounds nuw i8, ptr %__first.addr.010.i.i, i64 1 + %incdec.ptr2.i.i = getelementptr inbounds nuw i8, ptr %__first.addr.010.i.i.idx, i64 1 %__last.addr.0.i.i = getelementptr inbounds i8, ptr %__last.addr.011.i.i, i64 -1 - %exitcond.not = icmp eq ptr %__last.addr.0.i.i, %indvars.iv + %exitcond.not = icmp eq ptr %__last.addr.0.i.i, %e.017 br i1 %exitcond.not, label %_ZSt7reverseIPcEvT_S1_.exit, label %while.body.i.i, !llvm.loop !34 _ZSt7reverseIPcEvT_S1_.exit: ; preds = %while.body.i.i, %for.end @@ -17402,15 +17402,15 @@ entry: %sub.ptr.rhs.cast = ptrtoint ptr %1 to i64 %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast %cmp = icmp ugt i64 %sub.ptr.sub, 20 - br i1 %cmp, label %for.body.preheader, label %if.end + br i1 %cmp, label %for.body, label %if.end for.body.preheader: ; preds = %entry %scevgep = getelementptr i8, ptr %0, i64 -5 br label %for.body -for.body: ; preds = %for.body.preheader, %for.body - %indvars.iv = phi ptr [ %scevgep, %for.body.preheader ], [ %scevgep19, %for.body ] - %t.0.idx18 = phi i64 [ 0, %for.body.preheader ], [ %incdec.ptr.add, %for.body ] +for.body: ; preds = %for.body, %for.body + %t.0.idx18 = phi ptr [ %scevgep, %for.body.preheader ], [ %scevgep19, %for.body ] + %e.017 = phi i64 [ 0, %for.body.preheader ], [ %incdec.ptr.add, %for.body ] %e.017 = phi ptr [ %0, %for.body.preheader ], [ %incdec.ptr25, %for.body ] %t.0.ptr = getelementptr inbounds nuw i8, ptr %1, i64 %t.0.idx18 %3 = load i8, ptr %t.0.ptr, align 1 @@ -17441,14 +17441,14 @@ for.end: ; preds = %for.body while.body.i.i: ; preds = %for.end, %while.body.i.i %__last.addr.011.i.i = phi ptr [ %__last.addr.0.i.i, %while.body.i.i ], [ %e.017, %for.end ] - %__first.addr.010.i.i = phi ptr [ %incdec.ptr2.i.i, %while.body.i.i ], [ %0, %for.end ] - %5 = load i8, ptr %__first.addr.010.i.i, align 1 + %__first.addr.010.i.i.idx = phi ptr [ %incdec.ptr2.i.i, %while.body.i.i ], [ %0, %for.end ] + %5 = load i8, ptr %__first.addr.010.i.i.idx, align 1 %6 = load i8, ptr %__last.addr.011.i.i, align 1 store i8 %6, ptr %__first.addr.010.i.i, align 1 store i8 %5, ptr %__last.addr.011.i.i, align 1 - %incdec.ptr2.i.i = getelementptr inbounds nuw i8, ptr %__first.addr.010.i.i, i64 1 + %incdec.ptr2.i.i = getelementptr inbounds nuw i8, ptr %__first.addr.010.i.i.idx, i64 1 %__last.addr.0.i.i = getelementptr inbounds i8, ptr %__last.addr.011.i.i, i64 -1 - %exitcond.not = icmp eq ptr %__last.addr.0.i.i, %indvars.iv + %exitcond.not = icmp eq ptr %__last.addr.0.i.i, %e.017 br i1 %exitcond.not, label %_ZSt7reverseIPcEvT_S1_.exit, label %while.body.i.i, !llvm.loop !34 _ZSt7reverseIPcEvT_S1_.exit: ; preds = %while.body.i.i, %for.end @@ -25429,8 +25429,8 @@ if.end8.i.i.i.i: ; preds = %if.end4.i.i.i.i if.end12.i.i.i.i: ; preds = %if.end8.i.i.i.i %incdec.ptr13.i.i.i.i = getelementptr inbounds nuw i8, ptr %__first.addr.049.i.i.i.i, i64 32 %dec.i.i.i.i = add nsw i64 %__trip_count.050.i.i.i.i, -1 - %exitcond.not.i.i.i.i = icmp eq i64 %dec.i.i.i.i, 0 - br i1 %exitcond.not.i.i.i.i, label %for.end.loopexit.i.i.i.i, label %for.body.i.i.i.i, !llvm.loop !38 + %cmp.i.i.i.i = icmp eq i64 %dec.i.i.i.i, 0 + br i1 %cmp.i.i.i.i, label %for.end.loopexit.i.i.i.i, label %for.body.i.i.i.i, !llvm.loop !38 for.end.loopexit.i.i.i.i: ; preds = %if.end12.i.i.i.i %9 = and i64 %Data_.coerce1, 3 @@ -25541,8 +25541,8 @@ if.end8.i.i.i.i41: ; preds = %if.end4.i.i.i.i37 if.end12.i.i.i.i45: ; preds = %if.end8.i.i.i.i41 %incdec.ptr13.i.i.i.i46 = getelementptr inbounds nuw i8, ptr %__first.addr.049.i.i.i.i31, i64 32 %dec.i.i.i.i47 = add nsw i64 %__trip_count.050.i.i.i.i30, -1 - %exitcond.not.i.i.i.i48 = icmp eq i64 %dec.i.i.i.i47, 0 - br i1 %exitcond.not.i.i.i.i48, label %for.end.loopexit.i.i.i.i49, label %for.body.i.i.i.i29, !llvm.loop !39 + %cmp.i.i.i.i48 = icmp eq i64 %dec.i.i.i.i47, 0 + br i1 %cmp.i.i.i.i48, label %for.end.loopexit.i.i.i.i49, label %for.body.i.i.i.i29, !llvm.loop !39 for.end.loopexit.i.i.i.i49: ; preds = %if.end12.i.i.i.i45 %25 = and i64 %Data_.coerce1, 3 @@ -25653,8 +25653,8 @@ if.end8.i.i.i.i92: ; preds = %if.end4.i.i.i.i88 if.end12.i.i.i.i96: ; preds = %if.end8.i.i.i.i92 %incdec.ptr13.i.i.i.i97 = getelementptr inbounds nuw i8, ptr %__first.addr.049.i.i.i.i82, i64 32 %dec.i.i.i.i98 = add nsw i64 %__trip_count.050.i.i.i.i81, -1 - %exitcond.not.i.i.i.i99 = icmp eq i64 %dec.i.i.i.i98, 0 - br i1 %exitcond.not.i.i.i.i99, label %for.end.loopexit.i.i.i.i100, label %for.body.i.i.i.i80, !llvm.loop !40 + %cmp.i.i.i.i99 = icmp eq i64 %dec.i.i.i.i98, 0 + br i1 %cmp.i.i.i.i99, label %for.end.loopexit.i.i.i.i100, label %for.body.i.i.i.i80, !llvm.loop !40 for.end.loopexit.i.i.i.i100: ; preds = %if.end12.i.i.i.i96 %41 = and i64 %Data_.coerce1, 3 diff --git a/bench/hermes/optimized/MicrosoftDemangle.ll b/bench/hermes/optimized/MicrosoftDemangle.ll index e7622ae80b4..abf01458262 100644 --- a/bench/hermes/optimized/MicrosoftDemangle.ll +++ b/bench/hermes/optimized/MicrosoftDemangle.ll @@ -6338,8 +6338,8 @@ for.body.i: ; preds = %for.body.i, %for.co %C.addr.135.i = phi i32 [ %C.addr.038.i, %for.cond.preheader.i ], [ %div9.i, %for.body.i ] %indvars.iv.next.i = add nsw i64 %indvars.iv.i, -1 %arrayidx.i = getelementptr inbounds [17 x i8], ptr %TempBuffer.i, i64 0, i64 %indvars.iv.i - %63 = trunc i32 %C.addr.135.i to i8 - %conv.i = and i8 %63, 15 + %61 = trunc i32 %C.addr.135.i to i8 + %conv.i = and i8 %61, 15 %cmp.i.i253 = icmp samesign ult i8 %conv.i, 10 %add.i.i254 = or disjoint i8 %conv.i, 48 %sub.i.i = add nuw nsw i8 %conv.i, 55 @@ -6372,16 +6372,16 @@ while.end.i: ; preds = %for.end.i if.end.i.i17.i: ; preds = %while.end.i %CurrentPosition.i.i.i18.i = getelementptr inbounds nuw i8, ptr %OS, i64 8 - %64 = load i64, ptr %CurrentPosition.i.i.i18.i, align 8 - %add.i.i.i19.i = add i64 %64, %call.i11.i + %62 = load i64, ptr %CurrentPosition.i.i.i18.i, align 8 + %add.i.i.i19.i = add i64 %62, %call.i11.i %BufferCapacity.i.i.i20.i = getelementptr inbounds nuw i8, ptr %OS, i64 16 - %65 = load i64, ptr %BufferCapacity.i.i.i20.i, align 8 - %cmp.not.i.i.i21.i = icmp ult i64 %add.i.i.i19.i, %65 + %63 = load i64, ptr %BufferCapacity.i.i.i20.i, align 8 + %cmp.not.i.i.i21.i = icmp ult i64 %add.i.i.i19.i, %63 %.pre.i.i22.i = load ptr, ptr %OS, align 8 br i1 %cmp.not.i.i.i21.i, label %_ZN12OutputStream4growEm.exit.i.i30.i, label %if.then.i.i.i23.i if.then.i.i.i23.i: ; preds = %if.end.i.i17.i - %mul.i.i.i24.i = shl i64 %65, 1 + %mul.i.i.i24.i = shl i64 %63, 1 %spec.store.select.i.i.i25.i = tail call i64 @llvm.umax.i64(i64 %mul.i.i.i24.i, i64 %add.i.i.i19.i) store i64 %spec.store.select.i.i.i25.i, ptr %BufferCapacity.i.i.i20.i, align 8 %call.i.i.i26.i = tail call ptr @realloc(ptr noundef %.pre.i.i22.i, i64 noundef %spec.store.select.i.i.i25.i) #26 @@ -6398,12 +6398,12 @@ if.then15.i.i.i33.i: ; preds = %if.then.i.i.i23.i unreachable _ZN12OutputStream4growEm.exit.i.i30.i: ; preds = %if.then.i._ZN12OutputStream4growEm.exit_crit_edge.i.i28.i, %if.end.i.i17.i - %66 = phi i64 [ %64, %if.end.i.i17.i ], [ %.pre5.i.i29.i, %if.then.i._ZN12OutputStream4growEm.exit_crit_edge.i.i28.i ] - %67 = phi ptr [ %.pre.i.i22.i, %if.end.i.i17.i ], [ %call.i.i.i26.i, %if.then.i._ZN12OutputStream4growEm.exit_crit_edge.i.i28.i ] - %add.ptr.i.i31.i = getelementptr inbounds i8, ptr %67, i64 %66 + %64 = phi i64 [ %62, %if.end.i.i17.i ], [ %.pre5.i.i29.i, %if.then.i._ZN12OutputStream4growEm.exit_crit_edge.i.i28.i ] + %65 = phi ptr [ %.pre.i.i22.i, %if.end.i.i17.i ], [ %call.i.i.i26.i, %if.then.i._ZN12OutputStream4growEm.exit_crit_edge.i.i28.i ] + %add.ptr.i.i31.i = getelementptr inbounds i8, ptr %65, i64 %64 call void @llvm.memcpy.p0.p0.i64(ptr align 1 %add.ptr.i.i31.i, ptr nonnull align 1 %arrayidx8.i.le, i64 %call.i11.i, i1 false) - %68 = load i64, ptr %CurrentPosition.i.i.i18.i, align 8 - %add.i.i32.i = add i64 %68, %call.i11.i + %66 = load i64, ptr %CurrentPosition.i.i.i18.i, align 8 + %add.i.i32.i = add i64 %66, %call.i11.i store i64 %add.i.i32.i, ptr %CurrentPosition.i.i.i18.i, align 8 br label %_ZL9outputHexR12OutputStreamj.exit diff --git a/bench/hermes/optimized/RegexParser.ll b/bench/hermes/optimized/RegexParser.ll index c2fc8f7094b..4ffbc7df9f3 100644 --- a/bench/hermes/optimized/RegexParser.ll +++ b/bench/hermes/optimized/RegexParser.ll @@ -1294,8 +1294,8 @@ _ZNSt20back_insert_iteratorISt6vectorIPN6hermes5regex4NodeESaIS4_EEEaSEOS4_.exit %10 = phi ptr [ %incdec.ptr.i.i.i.i.i.i.i.i, %if.then.i.i.i.i.i.i.i.i ], [ %incdec.ptr.i.i.i.i.i.i.i.i.i, %_ZNSt6vectorIPN6hermes5regex4NodeESaIS3_EE17_M_realloc_insertIJS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_.exit.i.i.i.i.i.i.i.i ] %incdec.ptr.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %__first.addr.05.i.i.i.i.i, i64 8 %dec.i.i.i.i.i = add nsw i64 %__n.06.i.i.i.i.i, -1 - %exitcond.not.i.i.i.i.i = icmp eq i64 %dec.i.i.i.i.i, 0 - br i1 %exitcond.not.i.i.i.i.i, label %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPPN6hermes5regex4NodeESt6vectorIS5_SaIS5_EEEESt20back_insert_iteratorIS9_EET0_T_SE_SD_.exit.loopexit, label %for.body.i.i.i.i.i, !llvm.loop !28 + %cmp.i.i.i.i.i = icmp eq i64 %dec.i.i.i.i.i, 0 + br i1 %cmp.i.i.i.i.i, label %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPPN6hermes5regex4NodeESt6vectorIS5_SaIS5_EEEESt20back_insert_iteratorIS9_EET0_T_SE_SD_.exit.loopexit, label %for.body.i.i.i.i.i, !llvm.loop !28 _ZSt4moveIN9__gnu_cxx17__normal_iteratorIPPN6hermes5regex4NodeESt6vectorIS5_SaIS5_EEEESt20back_insert_iteratorIS9_EET0_T_SE_SD_.exit.loopexit: ; preds = %_ZNSt20back_insert_iteratorISt6vectorIPN6hermes5regex4NodeESaIS4_EEEaSEOS4_.exit.i.i.i.i.i %.pre = load ptr, ptr %_M_finish.i, align 8 @@ -14092,33 +14092,33 @@ for.body.i.i.i.i.preheader: ; preds = %entry for.body.i.i.i.i: ; preds = %for.body.i.i.i.i.preheader, %if.end11.i.i.i.i %__trip_count.056.i.i.i.i = phi i64 [ %dec.i.i.i.i, %if.end11.i.i.i.i ], [ %shr.i.i.i.i, %for.body.i.i.i.i.preheader ] %__first.addr.055.i.i.i.i = phi ptr [ %incdec.ptr12.i.i.i.i, %if.end11.i.i.i.i ], [ %0, %for.body.i.i.i.i.preheader ] - %3 = load i32, ptr %__first.addr.055.i.i.i.i, align 4 - %cmp.i8 = icmp ult i32 %3, 128 + %2 = load i32, ptr %__first.addr.055.i.i.i.i, align 4 + %cmp.i8 = icmp ult i32 %2, 128 br i1 %cmp.i8, label %if.end.i.i.i.i, label %_ZSt6all_ofIPKjPFbjEEbT_S4_T0_.exit if.end.i.i.i.i: ; preds = %for.body.i.i.i.i %incdec.ptr.i.i.i.i = getelementptr inbounds nuw i8, ptr %__first.addr.055.i.i.i.i, i64 4 - %4 = load i32, ptr %incdec.ptr.i.i.i.i, align 4 - %cmp.i7 = icmp ult i32 %4, 128 + %3 = load i32, ptr %incdec.ptr.i.i.i.i, align 4 + %cmp.i7 = icmp ult i32 %3, 128 br i1 %cmp.i7, label %if.end3.i.i.i.i, label %_ZSt6all_ofIPKjPFbjEEbT_S4_T0_.exit.loopexit.split.loop.exit if.end3.i.i.i.i: ; preds = %if.end.i.i.i.i %incdec.ptr4.i.i.i.i = getelementptr inbounds nuw i8, ptr %__first.addr.055.i.i.i.i, i64 8 - %5 = load i32, ptr %incdec.ptr4.i.i.i.i, align 4 - %cmp.i6 = icmp ult i32 %5, 128 + %4 = load i32, ptr %incdec.ptr4.i.i.i.i, align 4 + %cmp.i6 = icmp ult i32 %4, 128 br i1 %cmp.i6, label %if.end7.i.i.i.i, label %_ZSt6all_ofIPKjPFbjEEbT_S4_T0_.exit.loopexit.split.loop.exit21 if.end7.i.i.i.i: ; preds = %if.end3.i.i.i.i %incdec.ptr8.i.i.i.i = getelementptr inbounds nuw i8, ptr %__first.addr.055.i.i.i.i, i64 12 - %6 = load i32, ptr %incdec.ptr8.i.i.i.i, align 4 - %cmp.i5 = icmp ult i32 %6, 128 + %5 = load i32, ptr %incdec.ptr8.i.i.i.i, align 4 + %cmp.i5 = icmp ult i32 %5, 128 br i1 %cmp.i5, label %if.end11.i.i.i.i, label %_ZSt6all_ofIPKjPFbjEEbT_S4_T0_.exit.loopexit.split.loop.exit23 if.end11.i.i.i.i: ; preds = %if.end7.i.i.i.i %incdec.ptr12.i.i.i.i = getelementptr inbounds nuw i8, ptr %__first.addr.055.i.i.i.i, i64 16 %dec.i.i.i.i = add nsw i64 %__trip_count.056.i.i.i.i, -1 - %exitcond.not.i.i.i.i = icmp eq i64 %dec.i.i.i.i, 0 - br i1 %exitcond.not.i.i.i.i, label %for.end.loopexit.i.i.i.i, label %for.body.i.i.i.i, !llvm.loop !200 + %cmp.i.i.i.i = icmp eq i64 %dec.i.i.i.i, 0 + br i1 %cmp.i.i.i.i, label %for.end.loopexit.i.i.i.i, label %for.body.i.i.i.i, !llvm.loop !200 for.end.loopexit.i.i.i.i: ; preds = %if.end11.i.i.i.i %gepdiff = sub nsw i64 %add.ptr.i.idx, %2 @@ -14135,8 +14135,8 @@ for.end.i.i.i.i: ; preds = %for.end.loopexit.i. ] sw.bb.i.i.i.i: ; preds = %for.end.i.i.i.i - %8 = load i32, ptr %__first.addr.0.lcssa.i.i.i.i, align 4 - %cmp.i4 = icmp ult i32 %8, 128 + %7 = load i32, ptr %__first.addr.0.lcssa.i.i.i.i, align 4 + %cmp.i4 = icmp ult i32 %7, 128 br i1 %cmp.i4, label %if.end19.i.i.i.i, label %_ZSt6all_ofIPKjPFbjEEbT_S4_T0_.exit if.end19.i.i.i.i: ; preds = %sw.bb.i.i.i.i @@ -14145,8 +14145,8 @@ if.end19.i.i.i.i: ; preds = %sw.bb.i.i.i.i sw.bb21.i.i.i.i: ; preds = %if.end19.i.i.i.i, %for.end.i.i.i.i %__first.addr.1.i.i.i.i = phi ptr [ %incdec.ptr20.i.i.i.i, %if.end19.i.i.i.i ], [ %__first.addr.0.lcssa.i.i.i.i, %for.end.i.i.i.i ] - %9 = load i32, ptr %__first.addr.1.i.i.i.i, align 4 - %cmp.i3 = icmp ult i32 %9, 128 + %8 = load i32, ptr %__first.addr.1.i.i.i.i, align 4 + %cmp.i3 = icmp ult i32 %8, 128 br i1 %cmp.i3, label %if.end24.i.i.i.i, label %_ZSt6all_ofIPKjPFbjEEbT_S4_T0_.exit if.end24.i.i.i.i: ; preds = %sw.bb21.i.i.i.i @@ -14155,8 +14155,8 @@ if.end24.i.i.i.i: ; preds = %sw.bb21.i.i.i.i sw.bb26.i.i.i.i: ; preds = %if.end24.i.i.i.i, %for.end.i.i.i.i %__first.addr.2.i.i.i.i = phi ptr [ %incdec.ptr25.i.i.i.i, %if.end24.i.i.i.i ], [ %__first.addr.0.lcssa.i.i.i.i, %for.end.i.i.i.i ] - %10 = load i32, ptr %__first.addr.2.i.i.i.i, align 4 - %cmp.i2 = icmp ult i32 %10, 128 + %9 = load i32, ptr %__first.addr.2.i.i.i.i, align 4 + %cmp.i2 = icmp ult i32 %9, 128 br i1 %cmp.i2, label %sw.default.i.i.i.i, label %_ZSt6all_ofIPKjPFbjEEbT_S4_T0_.exit sw.default.i.i.i.i: ; preds = %sw.bb26.i.i.i.i, %for.end.i.i.i.i @@ -14270,8 +14270,8 @@ if.end7.i.i.i.i.i: ; preds = %if.end3.i.i.i.i.i if.end11.i.i.i.i.i: ; preds = %if.end7.i.i.i.i.i %incdec.ptr12.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %__first.addr.055.i.i.i.i.i, i64 16 %dec.i.i.i.i.i = add nsw i64 %__trip_count.056.i.i.i.i.i, -1 - %exitcond.not.i.i.i.i.i = icmp eq i64 %dec.i.i.i.i.i, 0 - br i1 %exitcond.not.i.i.i.i.i, label %for.end.loopexit.i.i.i.i.i, label %for.body.i.i.i.i.i, !llvm.loop !200 + %cmp.i.i.i.i.i = icmp eq i64 %dec.i.i.i.i.i, 0 + br i1 %cmp.i.i.i.i.i, label %for.end.loopexit.i.i.i.i.i, label %for.body.i.i.i.i.i, !llvm.loop !200 for.end.loopexit.i.i.i.i.i: ; preds = %if.end11.i.i.i.i.i %gepdiff = sub i64 %add.ptr.i.i.i.i.i.i.idx, %2 @@ -14370,8 +14370,8 @@ if.end7.i.i.i.i.i36: ; preds = %if.end3.i.i.i.i.i34 if.end11.i.i.i.i.i39: ; preds = %if.end7.i.i.i.i.i36 %incdec.ptr12.i.i.i.i.i40 = getelementptr inbounds nuw i8, ptr %__first.addr.049.i.i.i.i.i, i64 16 %dec.i.i.i.i.i41 = add nsw i64 %__trip_count.050.i.i.i.i.i, -1 - %exitcond.not.i.i.i.i.i42 = icmp eq i64 %dec.i.i.i.i.i41, 0 - br i1 %exitcond.not.i.i.i.i.i42, label %for.end.loopexit.i.i.i.i.i43, label %for.body.i.i.i.i.i29, !llvm.loop !202 + %cmp.i.i.i.i.i42 = icmp eq i64 %dec.i.i.i.i.i41, 0 + br i1 %cmp.i.i.i.i.i42, label %for.end.loopexit.i.i.i.i.i43, label %for.body.i.i.i.i.i29, !llvm.loop !202 for.end.loopexit.i.i.i.i.i43: ; preds = %if.end11.i.i.i.i.i39 %.pre.i.i.i.i.i44 = ptrtoint ptr %incdec.ptr12.i.i.i.i.i40 to i64 diff --git a/bench/jq/optimized/decNumber.ll b/bench/jq/optimized/decNumber.ll index 4dfda0961d1..22cf376c988 100644 --- a/bench/jq/optimized/decNumber.ll +++ b/bench/jq/optimized/decNumber.ll @@ -523,13 +523,13 @@ define internal fastcc void @decToString(ptr noundef readonly captures(none) %0, %37 = getelementptr inbounds nuw i8, ptr %.2278, i64 3 %38 = load i16, ptr %.ptr, align 2, !tbaa !11 %39 = icmp eq i16 %38, 0 - %.pr.pre422 = load i32, ptr %0, align 4, !tbaa !10 - %40 = icmp eq i32 %.pr.pre422, 1 - %or.cond451 = select i1 %39, i1 %40, i1 false - br i1 %or.cond451, label %290, label %thread-pre-split + %.pr.pre420 = load i32, ptr %0, align 4, !tbaa !10 + %40 = icmp eq i32 %.pr.pre420, 1 + %or.cond450 = select i1 %39, i1 %40, i1 false + br i1 %or.cond450, label %290, label %thread-pre-split thread-pre-split: ; preds = %36, %.thread-pre-split_crit_edge - %41 = phi i32 [ %.pr.pre, %.thread-pre-split_crit_edge ], [ %.pr.pre422, %36 ] + %41 = phi i32 [ %.pr.pre, %.thread-pre-split_crit_edge ], [ %.pr.pre420, %36 ] %.1277 = phi ptr [ %.0276, %.thread-pre-split_crit_edge ], [ %37, %36 ] %42 = icmp slt i32 %41, 50 br i1 %42, label %43, label %48 @@ -539,7 +539,7 @@ thread-pre-split: ; preds = %36, %.thread-pre-sp %45 = getelementptr inbounds [50 x i8], ptr @d2utable, i64 0, i64 %44 %46 = load i8, ptr %45, align 1, !tbaa !19 %47 = zext i8 %46 to i32 - %.pre424 = add nsw i32 %41, 2 + %.pre422 = add nsw i32 %41, 2 br label %51 48: ; preds = %thread-pre-split @@ -548,7 +548,7 @@ thread-pre-split: ; preds = %36, %.thread-pre-sp br label %51 51: ; preds = %48, %43 - %.pre-phi = phi i32 [ %49, %48 ], [ %.pre424, %43 ] + %.pre-phi = phi i32 [ %49, %48 ], [ %.pre422, %43 ] %52 = phi i32 [ %50, %48 ], [ %47, %43 ] %.neg = mul nsw i32 %52, -3 %53 = add i32 %.pre-phi, %.neg @@ -574,11 +574,11 @@ thread-pre-split: ; preds = %36, %.thread-pre-sp br label %.lr.ph403 .lr.ph403: ; preds = %.lr.ph403.preheader, %85 - %indvars.iv418 = phi i64 [ %58, %.lr.ph403.preheader ], [ %indvars.iv.next419, %85 ] + %indvars.iv417 = phi i64 [ %58, %.lr.ph403.preheader ], [ %indvars.iv.next418, %85 ] %.0264402 = phi i32 [ %57, %.lr.ph403.preheader ], [ %.5, %85 ] %.4280401 = phi ptr [ %.3279407, %.lr.ph403.preheader ], [ %86, %85 ] store i8 48, ptr %.4280401, align 1, !tbaa !19 - %59 = getelementptr inbounds nuw [10 x i32], ptr @DECPOWERS, i64 0, i64 %indvars.iv418 + %59 = getelementptr inbounds nuw [10 x i32], ptr @DECPOWERS, i64 0, i64 %indvars.iv417 %60 = load i32, ptr %59, align 4, !tbaa !16 %61 = shl i32 %60, 1 %62 = icmp ugt i32 %.0264402, %61 @@ -631,7 +631,7 @@ thread-pre-split: ; preds = %36, %.thread-pre-sp 85: ; preds = %75, %81 %86 = getelementptr inbounds nuw i8, ptr %.4280401, i64 1 - %indvars.iv.next419 = add nsw i64 %indvars.iv418, -1 + %indvars.iv.next418 = add nsw i64 %indvars.iv417, -1 %87 = and i64 %indvars.iv.next419, 4294967295 %exitcond421.not = icmp eq i64 %87, 4294967295 br i1 %exitcond421.not, label %._crit_edge, label %.lr.ph403, !llvm.loop !20 @@ -722,8 +722,8 @@ thread-pre-split: ; preds = %36, %.thread-pre-sp .preheader382.preheader: ; preds = %.thread, %120 %124 = phi i32 [ %119, %.thread ], [ %122, %120 ] - %.0259429 = phi i32 [ %.0259.ph, %.thread ], [ %.0259, %120 ] - %.0300427 = phi i32 [ %.0300.ph, %.thread ], [ %.0300, %120 ] + %.0259428 = phi i32 [ %.0259.ph, %.thread ], [ %.0259, %120 ] + %.0300426 = phi i32 [ %.0300.ph, %.thread ], [ %.0300, %120 ] br label %.preheader382 .preheader382: ; preds = %.preheader382.preheader, %159 @@ -731,13 +731,13 @@ thread-pre-split: ; preds = %36, %.thread-pre-sp %.1270.idx390 = phi i64 [ %.2271.idx, %159 ], [ %.add347, %.preheader382.preheader ] %.5281389 = phi ptr [ %161, %159 ], [ %.1277, %.preheader382.preheader ] %.2293388 = phi i32 [ %162, %159 ], [ %53, %.preheader382.preheader ] - %.2302387 = phi i32 [ %160, %159 ], [ %.0300427, %.preheader382.preheader ] + %.2302387 = phi i32 [ %160, %159 ], [ %.0300426, %.preheader382.preheader ] %125 = icmp slt i32 %.2293388, 0 br i1 %125, label %126, label %131 126: ; preds = %.preheader382 %127 = icmp eq i64 %.1270.idx390, 10 - br i1 %127, label %163, label %128 + br i1 %127, label %164, label %128 128: ; preds = %126 %.1270.add = add nsw i64 %.1270.idx390, -2 @@ -799,28 +799,28 @@ thread-pre-split: ; preds = %36, %.thread-pre-sp %156 = add nuw nsw i8 %150, 2 %157 = select i1 %.not358, i8 %156, i8 %150 %158 = zext i1 %.not359 to i8 - %simplifycfg.merge452 = add nuw nsw i8 %157, %158 - store i8 %simplifycfg.merge452, ptr %.5281389, align 1, !tbaa !19 + %simplifycfg.merge451 = add nuw nsw i8 %157, %158 + store i8 %simplifycfg.merge451, ptr %.5281389, align 1, !tbaa !19 br label %159 159: ; preds = %149, %155 %160 = add i32 %.2302387, -1 %161 = getelementptr inbounds nuw i8, ptr %.5281389, i64 1 %162 = add nsw i32 %.3294, -1 - %exitcond.not = icmp eq i32 %160, 0 - br i1 %exitcond.not, label %.thread430, label %.preheader382, !llvm.loop !22 + %163 = icmp eq i32 %160, 0 + br i1 %163, label %.thread430, label %.preheader382, !llvm.loop !22 -163: ; preds = %126 - %164 = load i32, ptr %0, align 4, !tbaa !10 - %165 = icmp slt i32 %.0300427, %164 - br i1 %165, label %171, label %.preheader380 +164: ; preds = %126 + %165 = load i32, ptr %0, align 4, !tbaa !10 + %166 = icmp slt i32 %.0300426, %165 + br i1 %166, label %171, label %.lr.ph394.preheader -.thread430: ; preds = %159 - %166 = load i32, ptr %0, align 4, !tbaa !10 - %167 = icmp slt i32 %.0300427, %166 - br i1 %167, label %171, label %.loopexit379 +.thread429: ; preds = %159 + %167 = load i32, ptr %0, align 4, !tbaa !10 + %168 = icmp slt i32 %.0300426, %167 + br i1 %168, label %171, label %.loopexit379 -.preheader380: ; preds = %163 +.lr.ph394.preheader: ; preds = %164 %168 = icmp sgt i32 %.2302387, 0 br i1 %168, label %.lr.ph394.preheader, label %.loopexit379 @@ -831,19 +831,19 @@ thread-pre-split: ; preds = %36, %.thread-pre-sp %scevgep416 = getelementptr i8, ptr %.5281389, i64 %170 br label %.loopexit379 -171: ; preds = %.thread430, %163 - %.6.lcssa441 = phi i32 [ %.12, %.thread430 ], [ %.6391, %163 ] - %.1270.idx.lcssa440 = phi i64 [ %.2271.idx, %.thread430 ], [ 10, %163 ] - %.5281.lcssa438 = phi ptr [ %161, %.thread430 ], [ %.5281389, %163 ] - %.2293.lcssa437 = phi i32 [ %162, %.thread430 ], [ %.2293388, %163 ] - store i8 46, ptr %.5281.lcssa438, align 1, !tbaa !19 +171: ; preds = %.thread429, %164 + %.6.lcssa440 = phi i32 [ %.12, %.thread430 ], [ %.6391, %163 ] + %.1270.idx.lcssa439 = phi i64 [ %.2271.idx, %.thread430 ], [ 10, %163 ] + %.5281.lcssa437 = phi ptr [ %161, %.thread430 ], [ %.5281389, %163 ] + %.2293.lcssa436 = phi i32 [ %162, %.thread430 ], [ %.2293388, %163 ] + store i8 46, ptr %.5281.lcssa437, align 1, !tbaa !19 br label %172 172: ; preds = %207, %171 - %.4295 = phi i32 [ %.2293.lcssa437, %171 ], [ %208, %207 ] - %.5281.pn = phi ptr [ %.5281.lcssa438, %171 ], [ %.6282, %207 ] - %.3272.idx = phi i64 [ %.1270.idx.lcssa440, %171 ], [ %.4273.idx, %207 ] - %.13 = phi i32 [ %.6.lcssa441, %171 ], [ %.19, %207 ] + %.4295 = phi i32 [ %.2293.lcssa436, %171 ], [ %208, %207 ] + %.5281.pn = phi ptr [ %.5281.lcssa437, %171 ], [ %.6282, %207 ] + %.3272.idx = phi i64 [ %.1270.idx.lcssa439, %171 ], [ %.4273.idx, %207 ] + %.13 = phi i32 [ %.6.lcssa440, %171 ], [ %.19, %207 ] %.6282 = getelementptr inbounds nuw i8, ptr %.5281.pn, i64 1 %173 = icmp slt i32 %.4295, 0 br i1 %173, label %174, label %179 @@ -912,8 +912,8 @@ thread-pre-split: ; preds = %36, %.thread-pre-sp %204 = add nuw nsw i8 %198, 2 %205 = select i1 %.not363, i8 %204, i8 %198 %206 = zext i1 %.not364 to i8 - %simplifycfg.merge453 = add nuw nsw i8 %205, %206 - store i8 %simplifycfg.merge453, ptr %.6282, align 1, !tbaa !19 + %simplifycfg.merge452 = add nuw nsw i8 %205, %206 + store i8 %simplifycfg.merge452, ptr %.6282, align 1, !tbaa !19 br label %207 207: ; preds = %197, %203 @@ -1013,8 +1013,8 @@ thread-pre-split: ; preds = %36, %.thread-pre-sp %248 = add nuw nsw i8 %242, 2 %249 = select i1 %.not353, i8 %248, i8 %242 %250 = zext i1 %.not354 to i8 - %simplifycfg.merge454 = add nuw nsw i8 %249, %250 - store i8 %simplifycfg.merge454, ptr %.11287, align 1, !tbaa !19 + %simplifycfg.merge453 = add nuw nsw i8 %249, %250 + store i8 %simplifycfg.merge453, ptr %.11287, align 1, !tbaa !19 br label %251 251: ; preds = %241, %247 @@ -1022,10 +1022,10 @@ thread-pre-split: ; preds = %36, %.thread-pre-sp %253 = add nsw i32 %.7298, -1 br label %.preheader383 -.loopexit379: ; preds = %218, %174, %.thread430, %.lr.ph394.preheader, %.preheader380 - %.0259428 = phi i32 [ %.0259429, %.preheader380 ], [ %.0259429, %.lr.ph394.preheader ], [ %.0259429, %.thread430 ], [ %.0259429, %174 ], [ %.0259, %218 ] +.loopexit379: ; preds = %218, %174, %.thread429, %.lr.ph394.preheader, %.preheader380 + %.0259427 = phi i32 [ %.0259429, %.preheader380 ], [ %.0259429, %.lr.ph394.preheader ], [ %.0259428, %.thread430 ], [ %.0259428, %174 ], [ %.0259, %218 ] %.9285 = phi ptr [ %.5281389, %.preheader380 ], [ %scevgep416, %.lr.ph394.preheader ], [ %161, %.thread430 ], [ %.6282, %174 ], [ %.11287, %218 ] - %.not365 = icmp eq i32 %.0259428, 0 + %.not365 = icmp eq i32 %.0259427, 0 br i1 %.not365, label %.loopexit, label %254 254: ; preds = %.loopexit379 @@ -1033,19 +1033,19 @@ thread-pre-split: ; preds = %36, %.thread-pre-sp %255 = getelementptr inbounds nuw i8, ptr %.9285, i64 1 store i8 43, ptr %255, align 1, !tbaa !19 %256 = getelementptr inbounds nuw i8, ptr %.9285, i64 2 - %257 = icmp slt i32 %.0259428, 0 - br i1 %257, label %258, label %.preheader462 + %257 = icmp slt i32 %.0259427, 0 + br i1 %257, label %258, label %.preheader461 258: ; preds = %254 store i8 45, ptr %255, align 1, !tbaa !19 - %259 = sub nsw i32 0, %.0259428 - br label %.preheader462 + %259 = sub nsw i32 0, %.0259427 + br label %.preheader461 -.preheader462: ; preds = %258, %254 - %.28398.ph = phi i32 [ %.0259428, %254 ], [ %259, %258 ] +.preheader461: ; preds = %258, %254 + %.28398.ph = phi i32 [ %.0259427, %254 ], [ %259, %258 ] br label %260 -260: ; preds = %.preheader462, %288 +260: ; preds = %.preheader461, %288 %indvars.iv = phi i64 [ %indvars.iv.next, %288 ], [ 9, %.preheader462 ] %.0399 = phi i1 [ %or.cond5, %288 ], [ false, %.preheader462 ] %.28398 = phi i32 [ %.33, %288 ], [ %.28398.ph, %.preheader462 ] @@ -1108,8 +1108,8 @@ thread-pre-split: ; preds = %36, %.thread-pre-sp %spec.select376.idx = zext i1 %or.cond5 to i64 %spec.select376 = getelementptr inbounds nuw i8, ptr %.13289397, i64 %spec.select376.idx %indvars.iv.next = add nsw i64 %indvars.iv, -1 - %exitcond417.not = icmp eq i64 %indvars.iv, 0 - br i1 %exitcond417.not, label %.loopexit, label %260, !llvm.loop !23 + %.not423 = icmp eq i64 %indvars.iv, 0 + br i1 %.not423, label %.loopexit, label %260, !llvm.loop !23 .loopexit: ; preds = %288, %.loopexit379 %.12288 = phi ptr [ %.9285, %.loopexit379 ], [ %spec.select376, %288 ] @@ -14686,8 +14686,8 @@ define dso_local noundef ptr @decNumberSetBCD(ptr noundef returned captures(ret: store i16 %34, ptr %.024.ptr41, align 2, !tbaa !11 %35 = getelementptr inbounds nuw i8, ptr %.12334, i64 1 %36 = add i32 %.135, -1 - %exitcond.not = icmp eq i32 %36, 0 - br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !78 + %37 = icmp eq i32 %36, 0 + br i1 %37, label %._crit_edge, label %.lr.ph, !llvm.loop !78 ._crit_edge: ; preds = %.lr.ph, %.lr.ph43 %.123.lcssa = phi ptr [ %.02239, %.lr.ph43 ], [ %35, %.lr.ph ] diff --git a/bench/jq/optimized/regparse.ll b/bench/jq/optimized/regparse.ll index 2854db8d902..52ec591c9fb 100644 --- a/bench/jq/optimized/regparse.ll +++ b/bench/jq/optimized/regparse.ll @@ -142,11 +142,11 @@ define dso_local range(i32 -255, 256) i32 @onig_strncmp(ptr noundef readonly cap %.07 = phi ptr [ %0, %3 ], [ %10, %5 ] %.06 = phi ptr [ %1, %3 ], [ %7, %5 ] %.05 = phi i32 [ %2, %3 ], [ %6, %5 ] - %exitcond.not = icmp eq i32 %.05, %smin - br i1 %exitcond.not, label %14, label %5 + %5 = icmp eq i32 %.05, %smin + br i1 %5, label %14, label %15 -5: ; preds = %4 - %6 = add i32 %.05, -1 +15: ; preds = %4 + %6 = add i32 %.015, -1 %7 = getelementptr inbounds nuw i8, ptr %.06, i64 1 %8 = load i8, ptr %.06, align 1, !tbaa !10 %9 = zext i8 %8 to i32 @@ -720,31 +720,31 @@ onig_name_to_group_numbers.exit.thread25..loopexit_crit_edge: ; preds = %onig_na %21 = zext nneg i32 %14 to i64 br label %22 -22: ; preds = %.preheader, %23 +22: ; preds = %.preheader, %24 %indvars.iv = phi i64 [ %21, %.preheader ], [ %indvars.iv.next, %23 ] - %exitcond.not = icmp eq i64 %indvars.iv, 0 - br i1 %exitcond.not, label %.loopexit, label %23 + %23 = icmp eq i64 %indvars.iv, 0 + br i1 %23, label %.loopexit, label %23 -23: ; preds = %22 +24: ; preds = %22 %indvars.iv.next = add nsw i64 %indvars.iv, -1 - %24 = load ptr, ptr %20, align 8, !tbaa !52 - %25 = getelementptr inbounds nuw i32, ptr %18, i64 %indvars.iv.next - %26 = load i32, ptr %25, align 4, !tbaa !8 - %27 = sext i32 %26 to i64 - %28 = getelementptr inbounds i32, ptr %24, i64 %27 - %29 = load i32, ptr %28, align 4, !tbaa !8 - %.not18 = icmp eq i32 %29, -1 + %25 = load ptr, ptr %20, align 8, !tbaa !52 + %26 = getelementptr inbounds nuw i32, ptr %18, i64 %indvars.iv.next + %27 = load i32, ptr %26, align 4, !tbaa !8 + %28 = sext i32 %27 to i64 + %29 = getelementptr inbounds i32, ptr %25, i64 %28 + %30 = load i32, ptr %29, align 4, !tbaa !8 + %.not18 = icmp eq i32 %30, -1 br i1 %.not18, label %22, label %onig_name_to_group_numbers.exit.thread, !llvm.loop !55 .loopexit: ; preds = %22, %onig_name_to_group_numbers.exit.thread25..loopexit_crit_edge %.pre-phi = phi i64 [ %.pre, %onig_name_to_group_numbers.exit.thread25..loopexit_crit_edge ], [ %21, %22 ] - %30 = getelementptr i32, ptr %18, i64 %.pre-phi - %31 = getelementptr i8, ptr %30, i64 -4 - %32 = load i32, ptr %31, align 4, !tbaa !8 + %31 = getelementptr i32, ptr %18, i64 %.pre-phi + %32 = getelementptr i8, ptr %31, i64 -4 + %33 = load i32, ptr %32, align 4, !tbaa !8 br label %onig_name_to_group_numbers.exit.thread -onig_name_to_group_numbers.exit.thread: ; preds = %23, %12, %name_find.exit.thread.i, %name_find.exit.i, %onig_name_to_group_numbers.exit, %.loopexit, %onig_name_to_group_numbers.exit.thread25.thread32 - %.0 = phi i32 [ %16, %onig_name_to_group_numbers.exit.thread25.thread32 ], [ %32, %.loopexit ], [ %14, %onig_name_to_group_numbers.exit ], [ -217, %name_find.exit.i ], [ -217, %name_find.exit.thread.i ], [ -11, %12 ], [ %26, %23 ] +onig_name_to_group_numbers.exit.thread: ; preds = %24, %12, %name_find.exit.thread.i, %name_find.exit.i, %onig_name_to_group_numbers.exit, %.loopexit, %onig_name_to_group_numbers.exit.thread25.thread32 + %.0 = phi i32 [ %16, %onig_name_to_group_numbers.exit.thread25.thread32 ], [ %33, %.loopexit ], [ %14, %onig_name_to_group_numbers.exit ], [ -217, %name_find.exit.i ], [ -217, %name_find.exit.thread.i ], [ -11, %12 ], [ %27, %23 ] ret i32 %.0 } diff --git a/bench/jsonnet/optimized/formatter.ll b/bench/jsonnet/optimized/formatter.ll index 809f7776faa..94559214ef7 100644 --- a/bench/jsonnet/optimized/formatter.ll +++ b/bench/jsonnet/optimized/formatter.ll @@ -18447,7 +18447,7 @@ _ZNSt12_Vector_baseIN7jsonnet8internal13FodderElementESaIS2_EE13_M_deallocateEPS ; Function Attrs: mustprogress uwtable define linkonce_odr noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEaSERKS7_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %1) local_unnamed_addr #4 comdat align 2 personality ptr @__gxx_personality_v0 { %.not = icmp eq ptr %1, %0 - br i1 %.not, label %75, label %3 + br i1 %.not, label %77, label %3 3: ; preds = %2 %4 = getelementptr inbounds nuw i8, ptr %1, i64 8 @@ -18528,7 +18528,7 @@ _ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE %42 = ptrtoint ptr %41 to i64 %43 = sub i64 %42, %15 %.not24 = icmp ult i64 %43, %9 - br i1 %.not24, label %61, label %44 + br i1 %.not24, label %62, label %44 44: ; preds = %39 %45 = icmp sgt i64 %10, 0 @@ -18542,94 +18542,94 @@ _ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE %46 = getelementptr inbounds nuw i8, ptr %.0910.i.i.i.i.i, i64 32 %47 = getelementptr inbounds nuw i8, ptr %.0811.i.i.i.i.i, i64 32 %48 = add nsw i64 %.012.i.i.i.i.i, -1 - %exitcond.not.i.i.i.i.i = icmp eq i64 %48, 0 - br i1 %exitcond.not.i.i.i.i.i, label %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS7_SaIS7_EEEENS1_IPS7_SC_EEET0_T_SH_SG_.exit.loopexit, label %.lr.ph.i.i.i.i.i, !llvm.loop !424 + %49 = icmp eq i64 %48, 0 + br i1 %49, label %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS7_SaIS7_EEEENS1_IPS7_SC_EEET0_T_SH_SG_.exit.loopexit, label %.lr.ph.i.i.i.i.i, !llvm.loop !424 _ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS7_SaIS7_EEEENS1_IPS7_SC_EEET0_T_SH_SG_.exit.loopexit: ; preds = %.lr.ph.i.i.i.i.i %.pre = load ptr, ptr %40, align 8, !tbaa !51 - %.pre46 = ptrtoint ptr %47 to i64 + %.pre45 = ptrtoint ptr %47 to i64 br label %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS7_SaIS7_EEEENS1_IPS7_SC_EEET0_T_SH_SG_.exit _ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS7_SaIS7_EEEENS1_IPS7_SC_EEET0_T_SH_SG_.exit: ; preds = %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS7_SaIS7_EEEENS1_IPS7_SC_EEET0_T_SH_SG_.exit.loopexit, %44 - %.pre-phi47 = phi i64 [ %.pre46, %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS7_SaIS7_EEEENS1_IPS7_SC_EEET0_T_SH_SG_.exit.loopexit ], [ %15, %44 ] - %49 = phi ptr [ %.pre, %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS7_SaIS7_EEEENS1_IPS7_SC_EEET0_T_SH_SG_.exit.loopexit ], [ %41, %44 ] + %.pre-phi46 = phi i64 [ %.pre45, %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS7_SaIS7_EEEENS1_IPS7_SC_EEET0_T_SH_SG_.exit.loopexit ], [ %15, %44 ] + %50 = phi ptr [ %.pre, %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS7_SaIS7_EEEENS1_IPS7_SC_EEET0_T_SH_SG_.exit.loopexit ], [ %41, %44 ] %.08.lcssa.i.i.i.i.i = phi ptr [ %47, %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS7_SaIS7_EEEENS1_IPS7_SC_EEET0_T_SH_SG_.exit.loopexit ], [ %13, %44 ] - %.not4.i.i.i25 = icmp eq ptr %.08.lcssa.i.i.i.i.i, %49 + %.not4.i.i.i25 = icmp eq ptr %.08.lcssa.i.i.i.i.i, %50 br i1 %.not4.i.i.i25, label %_ZSt8_DestroyIN9__gnu_cxx17__normal_iteratorIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS7_SaIS7_EEEES7_EvT_SD_RSaIT0_E.exit, label %.lr.ph.i.i.i26.preheader .lr.ph.i.i.i26.preheader: ; preds = %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS7_SaIS7_EEEENS1_IPS7_SC_EEET0_T_SH_SG_.exit - %50 = sub i64 %.pre-phi47, %15 - %51 = getelementptr inbounds i8, ptr %13, i64 %50 + %51 = sub i64 %.pre-phi46, %15 + %52 = getelementptr inbounds i8, ptr %13, i64 %51 br label %.lr.ph.i.i.i26 .lr.ph.i.i.i26: ; preds = %.lr.ph.i.i.i26.preheader, %_ZSt8_DestroyINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEvPT_.exit.i.i.i28 - %.sroa.01.05.i.i.i = phi ptr [ %60, %_ZSt8_DestroyINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEvPT_.exit.i.i.i28 ], [ %51, %.lr.ph.i.i.i26.preheader ] - %52 = load ptr, ptr %.sroa.01.05.i.i.i, align 8, !tbaa !31 - %53 = getelementptr inbounds nuw i8, ptr %.sroa.01.05.i.i.i, i64 16 - %54 = icmp eq ptr %52, %53 - br i1 %54, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i.i.i30, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i.i27 + %.sroa.01.05.i.i.i = phi ptr [ %61, %_ZSt8_DestroyINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEvPT_.exit.i.i.i28 ], [ %52, %.lr.ph.i.i.i26.preheader ] + %53 = load ptr, ptr %.sroa.01.05.i.i.i, align 8, !tbaa !31 + %54 = getelementptr inbounds nuw i8, ptr %.sroa.01.05.i.i.i, i64 16 + %55 = icmp eq ptr %53, %54 + br i1 %55, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i.i.i30, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i.i27 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i.i.i30: ; preds = %.lr.ph.i.i.i26 - %55 = getelementptr inbounds nuw i8, ptr %.sroa.01.05.i.i.i, i64 8 - %56 = load i64, ptr %55, align 8, !tbaa !35 - %57 = icmp ult i64 %56, 16 - tail call void @llvm.assume(i1 %57) + %56 = getelementptr inbounds nuw i8, ptr %.sroa.01.05.i.i.i, i64 8 + %57 = load i64, ptr %56, align 8, !tbaa !35 + %58 = icmp ult i64 %57, 16 + tail call void @llvm.assume(i1 %58) br label %_ZSt8_DestroyINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEvPT_.exit.i.i.i28 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i.i27: ; preds = %.lr.ph.i.i.i26 - %58 = load i64, ptr %53, align 8, !tbaa !36 - %59 = add i64 %58, 1 - tail call void @_ZdlPvm(ptr noundef %52, i64 noundef %59) #29 + %59 = load i64, ptr %54, align 8, !tbaa !36 + %60 = add i64 %59, 1 + tail call void @_ZdlPvm(ptr noundef %53, i64 noundef %60) #29 br label %_ZSt8_DestroyINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEvPT_.exit.i.i.i28 _ZSt8_DestroyINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEvPT_.exit.i.i.i28: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i.i27, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i.i.i30 - %60 = getelementptr inbounds nuw i8, ptr %.sroa.01.05.i.i.i, i64 32 - %.not.i.i.i29 = icmp eq ptr %60, %49 + %61 = getelementptr inbounds nuw i8, ptr %.sroa.01.05.i.i.i, i64 32 + %.not.i.i.i29 = icmp eq ptr %61, %50 br i1 %.not.i.i.i29, label %_ZSt8_DestroyIN9__gnu_cxx17__normal_iteratorIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS7_SaIS7_EEEES7_EvT_SD_RSaIT0_E.exit, label %.lr.ph.i.i.i26, !llvm.loop !425 -61: ; preds = %39 - %62 = ashr exact i64 %43, 5 - %63 = icmp sgt i64 %62, 0 - br i1 %63, label %.lr.ph.i.i.i.i.i32, label %_ZSt4copyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_ET0_T_S8_S7_.exit +62: ; preds = %39 + %63 = ashr exact i64 %43, 5 + %64 = icmp sgt i64 %63, 0 + br i1 %64, label %.lr.ph.i.i.i.i.i32, label %_ZSt4copyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_ET0_T_S8_S7_.exit -.lr.ph.i.i.i.i.i32: ; preds = %61, %.lr.ph.i.i.i.i.i32 - %.012.i.i.i.i.i33 = phi i64 [ %66, %.lr.ph.i.i.i.i.i32 ], [ %62, %61 ] - %.0811.i.i.i.i.i34 = phi ptr [ %65, %.lr.ph.i.i.i.i.i32 ], [ %13, %61 ] - %.0910.i.i.i.i.i35 = phi ptr [ %64, %.lr.ph.i.i.i.i.i32 ], [ %6, %61 ] +.lr.ph.i.i.i.i.i32: ; preds = %62, %.lr.ph.i.i.i.i.i32 + %.012.i.i.i.i.i33 = phi i64 [ %67, %.lr.ph.i.i.i.i.i32 ], [ %63, %61 ] + %.0811.i.i.i.i.i34 = phi ptr [ %66, %.lr.ph.i.i.i.i.i32 ], [ %13, %61 ] + %.0910.i.i.i.i.i35 = phi ptr [ %65, %.lr.ph.i.i.i.i.i32 ], [ %6, %61 ] tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_assignERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %.0811.i.i.i.i.i34, ptr noundef nonnull align 8 dereferenceable(32) %.0910.i.i.i.i.i35) - %64 = getelementptr inbounds nuw i8, ptr %.0910.i.i.i.i.i35, i64 32 - %65 = getelementptr inbounds nuw i8, ptr %.0811.i.i.i.i.i34, i64 32 - %66 = add nsw i64 %.012.i.i.i.i.i33, -1 - %exitcond.not.i.i.i.i.i36 = icmp eq i64 %66, 0 + %65 = getelementptr inbounds nuw i8, ptr %.0910.i.i.i.i.i35, i64 32 + %66 = getelementptr inbounds nuw i8, ptr %.0811.i.i.i.i.i34, i64 32 + %67 = add nsw i64 %.012.i.i.i.i.i33, -1 + %68 = icmp eq i64 %66, 0 br i1 %exitcond.not.i.i.i.i.i36, label %_ZSt4copyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_ET0_T_S8_S7_.exit.loopexit, label %.lr.ph.i.i.i.i.i32, !llvm.loop !426 _ZSt4copyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_ET0_T_S8_S7_.exit.loopexit: ; preds = %.lr.ph.i.i.i.i.i32 - %.pre37 = load ptr, ptr %1, align 8, !tbaa !30 - %.pre38 = load ptr, ptr %40, align 8, !tbaa !29 - %.pre39 = load ptr, ptr %0, align 8, !tbaa !30 - %.pre40 = load ptr, ptr %4, align 8, !tbaa !29 + %.pre36 = load ptr, ptr %1, align 8, !tbaa !30 + %.pre37 = load ptr, ptr %40, align 8, !tbaa !29 + %.pre38 = load ptr, ptr %0, align 8, !tbaa !30 + %.pre39 = load ptr, ptr %4, align 8, !tbaa !29 %.pre41 = ptrtoint ptr %.pre38 to i64 %.pre42 = ptrtoint ptr %.pre39 to i64 %.pre44 = sub i64 %.pre41, %.pre42 br label %_ZSt4copyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_ET0_T_S8_S7_.exit -_ZSt4copyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_ET0_T_S8_S7_.exit: ; preds = %_ZSt4copyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_ET0_T_S8_S7_.exit.loopexit, %61 - %.pre-phi45 = phi i64 [ %.pre44, %_ZSt4copyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_ET0_T_S8_S7_.exit.loopexit ], [ %43, %61 ] - %67 = phi ptr [ %.pre40, %_ZSt4copyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_ET0_T_S8_S7_.exit.loopexit ], [ %5, %61 ] - %68 = phi ptr [ %.pre38, %_ZSt4copyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_ET0_T_S8_S7_.exit.loopexit ], [ %41, %61 ] - %69 = phi ptr [ %.pre37, %_ZSt4copyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_ET0_T_S8_S7_.exit.loopexit ], [ %6, %61 ] - %70 = getelementptr inbounds nuw i8, ptr %69, i64 %.pre-phi45 - %71 = tail call noundef ptr @_ZSt16__do_uninit_copyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_ET0_T_S8_S7_(ptr noundef %70, ptr noundef %67, ptr noundef %68) +_ZSt4copyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_ET0_T_S8_S7_.exit: ; preds = %_ZSt4copyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_ET0_T_S8_S7_.exit.loopexit, %62 + %.pre-phi44 = phi i64 [ %.pre44, %_ZSt4copyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_ET0_T_S8_S7_.exit.loopexit ], [ %43, %61 ] + %69 = phi ptr [ %.pre39, %_ZSt4copyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_ET0_T_S8_S7_.exit.loopexit ], [ %5, %61 ] + %70 = phi ptr [ %.pre37, %_ZSt4copyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_ET0_T_S8_S7_.exit.loopexit ], [ %41, %61 ] + %71 = phi ptr [ %.pre36, %_ZSt4copyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_ET0_T_S8_S7_.exit.loopexit ], [ %6, %61 ] + %72 = getelementptr inbounds nuw i8, ptr %71, i64 %.pre-phi44 + %73 = tail call noundef ptr @_ZSt16__do_uninit_copyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_ET0_T_S8_S7_(ptr noundef %72, ptr noundef %69, ptr noundef %70) br label %_ZSt8_DestroyIN9__gnu_cxx17__normal_iteratorIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS7_SaIS7_EEEES7_EvT_SD_RSaIT0_E.exit _ZSt8_DestroyIN9__gnu_cxx17__normal_iteratorIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS7_SaIS7_EEEES7_EvT_SD_RSaIT0_E.exit: ; preds = %_ZSt8_DestroyINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEvPT_.exit.i.i.i28, %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS7_SaIS7_EEEENS1_IPS7_SC_EEET0_T_SH_SG_.exit, %_ZSt4copyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_ET0_T_S8_S7_.exit, %_ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE13_M_deallocateEPS5_m.exit - %72 = load ptr, ptr %0, align 8, !tbaa !30 - %73 = getelementptr inbounds nuw i8, ptr %72, i64 %9 - %74 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store ptr %73, ptr %74, align 8, !tbaa !29 - br label %75 + %74 = load ptr, ptr %0, align 8, !tbaa !30 + %75 = getelementptr inbounds nuw i8, ptr %74, i64 %9 + %76 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store ptr %75, ptr %76, align 8, !tbaa !29 + br label %77 -75: ; preds = %_ZSt8_DestroyIN9__gnu_cxx17__normal_iteratorIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS7_SaIS7_EEEES7_EvT_SD_RSaIT0_E.exit, %2 +77: ; preds = %_ZSt8_DestroyIN9__gnu_cxx17__normal_iteratorIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS7_SaIS7_EEEES7_EvT_SD_RSaIT0_E.exit, %2 ret ptr %0 } diff --git a/bench/libjpeg-turbo/optimized/jdphuff.ll b/bench/libjpeg-turbo/optimized/jdphuff.ll index c9033419bbf..df3418a4475 100644 --- a/bench/libjpeg-turbo/optimized/jdphuff.ll +++ b/bench/libjpeg-turbo/optimized/jdphuff.ll @@ -1423,9 +1423,9 @@ process_restart.exit.thread: ; preds = %._crit_edge.i, %45, .sink.split: ; preds = %160 %165 = icmp slt i16 %161, 0 - %.319.v = select i1 %165, i32 %73, i32 %11 - %.319 = trunc i32 %.319.v to i16 - %166 = add i16 %161, %.319 + %.317.v = select i1 %165, i32 %73, i32 %11 + %.317 = trunc i32 %.317.v to i16 + %166 = add i16 %161, %.317 store i16 %166, ptr %146, align 2, !tbaa !94 br label %170 @@ -1440,20 +1440,20 @@ process_restart.exit.thread: ; preds = %._crit_edge.i, %45, %.11 = phi i32 [ %156, %160 ], [ %156, %155 ], [ %.9, %167 ], [ %156, %.sink.split ] %indvars.iv.next = add nsw i64 %indvars.iv, 1 %.not200.not = icmp slt i64 %indvars.iv, %74 - br i1 %.not200.not, label %142, label %.split.loop.exit312, !llvm.loop !98 + br i1 %.not200.not, label %142, label %.split.loop.exit310, !llvm.loop !98 .split.loop.exit: ; preds = %167 %171 = trunc nsw i64 %indvars.iv to i32 - br label %.split.loop.exit312 + br label %.split.loop.exit310 -.split.loop.exit312: ; preds = %170, %.split.loop.exit +.split.loop.exit310: ; preds = %170, %.split.loop.exit %.12154 = phi i64 [ %.9151, %.split.loop.exit ], [ %.11153, %170 ] %.12 = phi i32 [ %.9, %.split.loop.exit ], [ %.11, %170 ] %.3135 = phi i32 [ %171, %.split.loop.exit ], [ %141, %170 ] %.not201 = icmp eq i32 %.3, 0 br i1 %.not201, label %182, label %172 -172: ; preds = %.split.loop.exit312 +172: ; preds = %.split.loop.exit310 %173 = sext i32 %.3135 to i64 %174 = getelementptr inbounds [0 x i32], ptr @jpeg_natural_order, i64 0, i64 %173 %175 = load i32, ptr %174, align 4, !tbaa !42 @@ -1467,37 +1467,37 @@ process_restart.exit.thread: ; preds = %._crit_edge.i, %45, store i32 %175, ptr %181, align 4, !tbaa !42 br label %182 -182: ; preds = %.split.loop.exit312, %172 +182: ; preds = %.split.loop.exit310, %172 %.3131 = phi i32 [ %179, %172 ], [ %.1129238, %.split.loop.exit312 ] %183 = add nsw i32 %.3135, 1 %.not183.not = icmp slt i32 %.3135, %8 - br i1 %.not183.not, label %75, label %.loopexit214.thread289, !llvm.loop !99 + br i1 %.not183.not, label %75, label %.loopexit214.thread287, !llvm.loop !99 .loopexit214: ; preds = %50 %.not189 = icmp eq i32 %63, 0 - br i1 %.not189, label %.loopexit214.thread289, label %.preheader + br i1 %.not189, label %.loopexit214.thread287, label %.preheader .preheader: ; preds = %122, %131, %.loopexit214 - %.0128288 = phi i32 [ 0, %.loopexit214 ], [ %.1129238, %131 ], [ %.1129238, %122 ] - %.0132287 = phi i32 [ %68, %.loopexit214 ], [ %.1133237, %131 ], [ %.1133237, %122 ] - %.0137286 = phi i32 [ %61, %.loopexit214 ], [ %132, %131 ], [ %.3140.ph, %122 ] - %.0142285 = phi i64 [ %59, %.loopexit214 ], [ %.8150, %131 ], [ %.3145.ph, %122 ] - %.0161284 = phi i32 [ %63, %.loopexit214 ], [ %138, %131 ], [ %123, %122 ] - %.not190242 = icmp sgt i32 %.0132287, %8 + %.0128286 = phi i32 [ 0, %.loopexit214 ], [ %.1129238, %131 ], [ %.1129238, %122 ] + %.0132285 = phi i32 [ %68, %.loopexit214 ], [ %.1133237, %131 ], [ %.1133237, %122 ] + %.0137284 = phi i32 [ %61, %.loopexit214 ], [ %132, %131 ], [ %.3140.ph, %122 ] + %.0142283 = phi i64 [ %59, %.loopexit214 ], [ %.8150, %131 ], [ %.3145.ph, %122 ] + %.0161282 = phi i32 [ %63, %.loopexit214 ], [ %138, %131 ], [ %123, %122 ] + %.not190242 = icmp sgt i32 %.0132285, %8 br i1 %.not190242, label %._crit_edge, label %.lr.ph246 .lr.ph246: ; preds = %.preheader %184 = getelementptr inbounds nuw i8, ptr %3, i64 16 %185 = getelementptr inbounds nuw i8, ptr %3, i64 24 %186 = shl i32 65535, %10 - %187 = sext i32 %.0132287 to i64 + %187 = sext i32 %.0132285 to i64 %188 = add i32 %8, 1 br label %189 189: ; preds = %.lr.ph246, %214 %indvars.iv270 = phi i64 [ %187, %.lr.ph246 ], [ %indvars.iv.next271, %214 ] - %.14244 = phi i32 [ %.0137286, %.lr.ph246 ], [ %.16, %214 ] - %.14156243 = phi i64 [ %.0142285, %.lr.ph246 ], [ %.16158, %214 ] + %.14244 = phi i32 [ %.0137284, %.lr.ph246 ], [ %.16, %214 ] + %.14156243 = phi i64 [ %.0142283, %.lr.ph246 ], [ %.16158, %214 ] %190 = getelementptr inbounds [0 x i32], ptr @jpeg_natural_order, i64 0, i64 %indvars.iv270 %191 = load i32, ptr %190, align 4, !tbaa !42 %192 = sext i32 %191 to i64 @@ -1535,17 +1535,17 @@ process_restart.exit.thread: ; preds = %._crit_edge.i, %45, %209 = sext i16 %208 to i32 %210 = and i32 %11, %209 %211 = icmp eq i32 %210, 0 - br i1 %211, label %.sink.split317, label %214 + br i1 %211, label %.sink.split315, label %214 -.sink.split317: ; preds = %207 +.sink.split315: ; preds = %207 %212 = icmp slt i16 %208, 0 - %.320.v = select i1 %212, i32 %186, i32 %11 - %.320 = trunc i32 %.320.v to i16 - %213 = add i16 %208, %.320 + %.318.v = select i1 %212, i32 %186, i32 %11 + %.318 = trunc i32 %.318.v to i16 + %213 = add i16 %208, %.318 store i16 %213, ptr %193, align 2, !tbaa !94 br label %214 -214: ; preds = %.sink.split317, %189, %207, %202 +214: ; preds = %.sink.split315, %189, %207, %202 %.16158 = phi i64 [ %.15157, %207 ], [ %.15157, %202 ], [ %.14156243, %189 ], [ %.15157, %.sink.split317 ] %.16 = phi i32 [ %203, %207 ], [ %203, %202 ], [ %.14244, %189 ], [ %203, %.sink.split317 ] %indvars.iv.next271 = add nsw i64 %indvars.iv270, 1 @@ -1554,12 +1554,12 @@ process_restart.exit.thread: ; preds = %._crit_edge.i, %45, br i1 %exitcond.not, label %._crit_edge, label %189, !llvm.loop !100 ._crit_edge: ; preds = %214, %.preheader - %.14156.lcssa = phi i64 [ %.0142285, %.preheader ], [ %.16158, %214 ] - %.14.lcssa = phi i32 [ %.0137286, %.preheader ], [ %.16, %214 ] - %215 = add i32 %.0161284, -1 - br label %.loopexit214.thread289 + %.14156.lcssa = phi i64 [ %.0142283, %.preheader ], [ %.16158, %214 ] + %.14.lcssa = phi i32 [ %.0137284, %.preheader ], [ %.16, %214 ] + %215 = add i32 %.0161282, -1 + br label %.loopexit214.thread287 -.loopexit214.thread289: ; preds = %182, %._crit_edge, %.loopexit214 +.loopexit214.thread287: ; preds = %182, %._crit_edge, %.loopexit214 %.1162 = phi i32 [ %215, %._crit_edge ], [ 0, %.loopexit214 ], [ 0, %182 ] %.13155 = phi i64 [ %.14156.lcssa, %._crit_edge ], [ %59, %.loopexit214 ], [ %.12154, %182 ] %.13 = phi i32 [ %.14.lcssa, %._crit_edge ], [ %61, %.loopexit214 ], [ %.12, %182 ] @@ -1575,7 +1575,7 @@ process_restart.exit.thread: ; preds = %._crit_edge.i, %45, %.pre = load i32, ptr %13, align 8, !tbaa !71 br label %220 -220: ; preds = %.loopexit214.thread289, %process_restart.exit.thread +220: ; preds = %.loopexit214.thread287, %process_restart.exit.thread %221 = phi i32 [ %.pre, %.loopexit214.thread289 ], [ %47, %process_restart.exit.thread ] %.not202 = icmp eq i32 %221, 0 br i1 %.not202, label %process_restart.exit, label %222 @@ -1588,7 +1588,7 @@ process_restart.exit.thread: ; preds = %._crit_edge.i, %45, br label %process_restart.exit .loopexit: ; preds = %77, %95, %111, %150, %197, %126 - %.2130 = phi i32 [ %.1129238, %126 ], [ %.0128288, %197 ], [ %.1129238, %150 ], [ %.1129238, %111 ], [ %.1129238, %95 ], [ %.1129238, %77 ] + %.2130 = phi i32 [ %.1129238, %126 ], [ %.0128286, %197 ], [ %.1129238, %150 ], [ %.1129238, %111 ], [ %.1129238, %95 ], [ %.1129238, %77 ] %226 = icmp sgt i32 %.2130, 0 br i1 %226, label %.lr.ph251.preheader, label %process_restart.exit diff --git a/bench/libpng/optimized/png.ll b/bench/libpng/optimized/png.ll index 12d993a50ca..ad85e7f62de 100644 --- a/bench/libpng/optimized/png.ll +++ b/bench/libpng/optimized/png.ll @@ -4159,7 +4159,7 @@ declare double @llvm.floor.f64(double) #20 define void @png_ascii_from_fixed(ptr noalias noundef %0, ptr noundef writeonly captures(none) %1, i64 noundef %2, i32 noundef %3) local_unnamed_addr #0 { %5 = alloca [10 x i8], align 1 %6 = icmp ugt i64 %2, 12 - br i1 %6, label %7, label %41 + br i1 %6, label %7, label %40 7: ; preds = %4 %8 = icmp slt i32 %3, 0 @@ -4228,7 +4228,7 @@ define void @png_ascii_from_fixed(ptr noalias noundef %0, ptr noundef writeonly %exitcond.not = icmp eq i64 %27, 5 br i1 %exitcond.not, label %._crit_edge56.thread, label %.lr.ph55, !llvm.loop !151 -._crit_edge56: ; preds = %.preheader47 +._crit_edge56: ; preds = %.preheader47 %28 = icmp ult i32 %spec.select, 6 br i1 %28, label %30, label %.loopexit @@ -4236,12 +4236,12 @@ define void @png_ascii_from_fixed(ptr noalias noundef %0, ptr noundef writeonly %29 = icmp ult i32 %spec.select, 6 br i1 %29, label %.thread90, label %.loopexit -.thread90: ; preds = %._crit_edge56.thread +.thread90:; preds = %._crit_edge56.thread store i8 46, ptr %26, align 1, !tbaa !27 %.25993 = getelementptr i8, ptr %.154, i64 2 br label %.preheader -30: ; preds = %._crit_edge56 +.preheader: ; preds = %._crit_edge56 store i8 46, ptr %.03579, align 1, !tbaa !27 %.259 = getelementptr i8, ptr %.03579, i64 1 %.not97 = icmp eq i32 %16, 5 @@ -4263,30 +4263,30 @@ define void @png_ascii_from_fixed(ptr noalias noundef %0, ptr noundef writeonly br i1 %.not4665, label %.loopexit, label %.lr.ph68 .lr.ph68: ; preds = %.preheader, %.lr.ph68 - %.367 = phi ptr [ %39, %.lr.ph68 ], [ %.2.lcssa, %.preheader ] - %.24066 = phi i32 [ %35, %.lr.ph68 ], [ %.139.lcssa8894, %.preheader ] - %35 = add i32 %.24066, -1 - %36 = zext i32 %35 to i64 - %37 = getelementptr inbounds nuw [10 x i8], ptr %5, i64 0, i64 %36 - %38 = load i8, ptr %37, align 1, !tbaa !27 - %39 = getelementptr inbounds nuw i8, ptr %.367, i64 1 - store i8 %38, ptr %.367, align 1, !tbaa !27 - %.not46 = icmp ult i32 %35, %spec.select + %.367 = phi ptr [ %38, %.lr.ph68 ], [ %.2.lcssa, %.preheader ] + %.24066 = phi i32 [ %34, %.lr.ph68 ], [ %.139.lcssa8894, %.preheader ] + %34 = add i32 %.24066, -1 + %35 = zext i32 %34 to i64 + %36 = getelementptr inbounds nuw [10 x i8], ptr %5, i64 0, i64 %35 + %37 = load i8, ptr %36, align 1, !tbaa !27 + %38 = getelementptr inbounds nuw i8, ptr %.367, i64 1 + store i8 %37, ptr %.367, align 1, !tbaa !27 + %.not46 = icmp ult i32 %34, %spec.select br i1 %.not46, label %.loopexit, label %.lr.ph68, !llvm.loop !152 ._crit_edge.thread: ; preds = %11, %._crit_edge %.0358085 = phi ptr [ %.03579, %._crit_edge ], [ %1, %11 ] - %40 = getelementptr inbounds nuw i8, ptr %.0358085, i64 1 + %39 = getelementptr inbounds nuw i8, ptr %.0358085, i64 1 store i8 48, ptr %.0358085, align 1, !tbaa !27 br label %.loopexit .loopexit: ; preds = %.lr.ph68, %._crit_edge56.thread, %.preheader, %._crit_edge56, %._crit_edge.thread - %.4 = phi ptr [ %.03579, %._crit_edge56 ], [ %40, %._crit_edge.thread ], [ %.2.lcssa, %.preheader ], [ %26, %._crit_edge56.thread ], [ %39, %.lr.ph68 ] + %.4 = phi ptr [ %.03579, %._crit_edge56 ], [ %39, %._crit_edge.thread ], [ %.2.lcssa, %.preheader ], [ %26, %._crit_edge56.thread ], [ %38, %.lr.ph68 ] store i8 0, ptr %.4, align 1, !tbaa !27 call void @llvm.lifetime.end.p0(i64 10, ptr nonnull %5) #30 ret void -41: ; preds = %4 +40: ; preds = %4 tail call void @png_error(ptr noundef %0, ptr noundef nonnull @.str.55) #28 unreachable } diff --git a/bench/libquic/optimized/pcy_tree.ll b/bench/libquic/optimized/pcy_tree.ll index d0e46ba9208..c9c7147da01 100644 --- a/bench/libquic/optimized/pcy_tree.ll +++ b/bench/libquic/optimized/pcy_tree.ll @@ -221,7 +221,7 @@ define hidden range(i32 -2, 2) i32 @X509_policy_check(ptr noundef writeonly capt br i1 %or.cond.i, label %tree_init.exit, label %tree_init.exit.thread57 ._crit_edge.thread.i: ; preds = %._crit_edge.i, %13 - %.191.lcssa159.i = phi i32 [ %.393.i, %._crit_edge.i ], [ %.090.i, %13 ] + %.191.lcssa157.i = phi i32 [ %.393.i, %._crit_edge.i ], [ %.090.i, %13 ] %48 = tail call noalias dereferenceable_or_null(48) ptr @malloc(i64 noundef 48) #9 %.not111.i = icmp eq ptr %48, null br i1 %.not111.i, label %tree_init.exit.thread, label %49 @@ -356,7 +356,7 @@ define hidden range(i32 -2, 2) i32 @X509_policy_check(ptr noundef writeonly capt br i1 %exitcond155.not.i, label %._crit_edge149.i, label %.lr.ph148.i, !llvm.loop !63 ._crit_edge149.i: ; preds = %110, %.preheader.i - %.not115.i = icmp eq i32 %.191.lcssa159.i, 0 + %.not115.i = icmp eq i32 %.191.lcssa157.i, 0 br i1 %.not115.i, label %114, label %.thread72 112: ; preds = %58, %55 diff --git a/bench/libquic/optimized/shift.ll b/bench/libquic/optimized/shift.ll index 4d7941b63ff..8f9d9cb3079 100644 --- a/bench/libquic/optimized/shift.ll +++ b/bench/libquic/optimized/shift.ll @@ -53,7 +53,7 @@ define hidden range(i32 0, 2) i32 @BN_lshift(ptr noundef %0, ptr noundef readonl %32 = zext nneg i32 %10 to i64 %33 = zext nneg i32 %10 to i64 %invariant.gep = getelementptr i64, ptr %22, i64 %32 - %invariant.gep60 = getelementptr i64, ptr %22, i64 %33 + %invariant.gep58 = getelementptr i64, ptr %22, i64 %33 %34 = add nuw nsw i64 %32, %31 %35 = shl nuw nsw i64 %34, 3 %scevgep = getelementptr i8, ptr %22, i64 %35 @@ -66,7 +66,7 @@ define hidden range(i32 0, 2) i32 @BN_lshift(ptr noundef %0, ptr noundef readonl .lr.ph51.preheader: ; preds = %.preheader %36 = zext nneg i32 %23 to i64 %37 = zext nneg i32 %10 to i64 - %invariant.gep62 = getelementptr i64, ptr %22, i64 %37 + %invariant.gep60 = getelementptr i64, ptr %22, i64 %37 br label %.lr.ph51 .lr.ph51: ; preds = %.lr.ph51.preheader, %.lr.ph51 @@ -74,8 +74,8 @@ define hidden range(i32 0, 2) i32 @BN_lshift(ptr noundef %0, ptr noundef readonl %indvars.iv.next55 = add nsw i64 %indvars.iv54, -1 %38 = getelementptr inbounds nuw i64, ptr %21, i64 %indvars.iv.next55 %39 = load i64, ptr %38, align 8, !tbaa !15 - %gep63 = getelementptr i64, ptr %invariant.gep62, i64 %indvars.iv.next55 - store i64 %39, ptr %gep63, align 8, !tbaa !15 + %gep61 = getelementptr i64, ptr %invariant.gep60, i64 %indvars.iv.next55 + store i64 %39, ptr %gep61, align 8, !tbaa !15 %40 = and i64 %indvars.iv.next55, 4294967295 %exitcond58.not = icmp eq i64 %40, 0 br i1 %exitcond58.not, label %.loopexit, label %.lr.ph51, !llvm.loop !17 @@ -91,8 +91,8 @@ define hidden range(i32 0, 2) i32 @BN_lshift(ptr noundef %0, ptr noundef readonl %45 = or i64 %store_forwarded, %44 store i64 %45, ptr %gep, align 8, !tbaa !15 %46 = shl i64 %43, %30 - %gep61 = getelementptr i64, ptr %invariant.gep60, i64 %indvars.iv.next - store i64 %46, ptr %gep61, align 8, !tbaa !15 + %gep59 = getelementptr i64, ptr %invariant.gep58, i64 %indvars.iv.next + store i64 %46, ptr %gep59, align 8, !tbaa !15 %47 = and i64 %indvars.iv.next, 4294967295 %exitcond.not = icmp eq i64 %47, 0 br i1 %exitcond.not, label %.loopexit, label %41, !llvm.loop !19 diff --git a/bench/libwebp/optimized/alpha_processing.ll b/bench/libwebp/optimized/alpha_processing.ll index 636344971a8..a5947314552 100644 --- a/bench/libwebp/optimized/alpha_processing.ll +++ b/bench/libwebp/optimized/alpha_processing.ll @@ -220,7 +220,7 @@ define hidden void @WebPMultARGBRows(ptr noundef %0, i32 noundef %1, i32 noundef %.09 = phi i32 [ 0, %.lr.ph ], [ %11, %8 ] %.078 = phi ptr [ %0, %.lr.ph ], [ %10, %8 ] %9 = load ptr, ptr @WebPMultARGBRow, align 8, !tbaa !11 - tail call void %9(ptr noundef %.078, i32 noundef %2, i32 noundef %4) #6 + tail call void %9(ptr noundef %.078, i32 noundef %2, i32 noundef %4) #5 %10 = getelementptr inbounds i8, ptr %.078, i64 %7 %11 = add nuw nsw i32 %.09, 1 %exitcond.not = icmp eq i32 %11, %3 @@ -245,7 +245,7 @@ define hidden void @WebPMultRows(ptr noalias noundef %0, i32 noundef %1, ptr noa %.01013 = phi ptr [ %0, %.lr.ph ], [ %13, %11 ] %.01112 = phi ptr [ %2, %.lr.ph ], [ %14, %11 ] %12 = load ptr, ptr @WebPMultRow, align 8, !tbaa !11 - tail call void %12(ptr noundef %.01013, ptr noundef %.01112, i32 noundef %4, i32 noundef %6) #6 + tail call void %12(ptr noundef %.01013, ptr noundef %.01112, i32 noundef %4, i32 noundef %6) #5 %13 = getelementptr inbounds i8, ptr %.01013, i64 %9 %14 = getelementptr inbounds i8, ptr %.01112, i64 %10 %15 = add nuw nsw i32 %.014, 1 @@ -258,7 +258,7 @@ define hidden void @WebPMultRows(ptr noalias noundef %0, i32 noundef %1, ptr noa ; Function Attrs: nounwind uwtable define hidden void @WebPInitAlphaProcessing() local_unnamed_addr #1 { - %1 = tail call i32 @pthread_mutex_lock(ptr noundef nonnull @WebPInitAlphaProcessing.WebPInitAlphaProcessing_body_lock) #6 + %1 = tail call i32 @pthread_mutex_lock(ptr noundef nonnull @WebPInitAlphaProcessing.WebPInitAlphaProcessing_body_lock) #5 %.not = icmp eq i32 %1, 0 br i1 %.not, label %2, label %14 @@ -285,25 +285,25 @@ define hidden void @WebPInitAlphaProcessing() local_unnamed_addr #1 { br i1 %.not.i, label %WebPInitAlphaProcessing_body.exit, label %6 6: ; preds = %5 - %7 = tail call i32 %4(i32 noundef 0) #6 + %7 = tail call i32 %4(i32 noundef 0) #5 %.not1.i = icmp eq i32 %7, 0 br i1 %.not1.i, label %WebPInitAlphaProcessing_body.exit, label %8 8: ; preds = %6 - tail call void @WebPInitAlphaProcessingSSE2() #6 + tail call void @WebPInitAlphaProcessingSSE2() #5 %9 = load ptr, ptr @VP8GetCPUInfo, align 8, !tbaa !11 - %10 = tail call i32 %9(i32 noundef 3) #6 + %10 = tail call i32 %9(i32 noundef 3) #5 %.not2.i = icmp eq i32 %10, 0 br i1 %.not2.i, label %WebPInitAlphaProcessing_body.exit, label %11 11: ; preds = %8 - tail call void @WebPInitAlphaProcessingSSE41() #6 + tail call void @WebPInitAlphaProcessingSSE41() #5 br label %WebPInitAlphaProcessing_body.exit WebPInitAlphaProcessing_body.exit: ; preds = %11, %8, %6, %5, %2 %12 = load ptr, ptr @VP8GetCPUInfo, align 8, !tbaa !11 store volatile ptr %12, ptr @WebPInitAlphaProcessing.WebPInitAlphaProcessing_body_last_cpuinfo_used, align 8, !tbaa !11 - %13 = tail call i32 @pthread_mutex_unlock(ptr noundef nonnull @WebPInitAlphaProcessing.WebPInitAlphaProcessing_body_lock) #6 + %13 = tail call i32 @pthread_mutex_unlock(ptr noundef nonnull @WebPInitAlphaProcessing.WebPInitAlphaProcessing_body_lock) #5 br label %14 14: ; preds = %0, %WebPInitAlphaProcessing_body.exit @@ -379,8 +379,8 @@ define internal void @ApplyAlphaMultiply_16b_C(ptr noundef captures(none) %0, i3 ._crit_edge.us.i: ; preds = %8 %41 = add nsw i32 %.in.i, -1 %42 = getelementptr inbounds i8, ptr %.032.us.i, i64 %7 - %exitcond36.not.i = icmp eq i32 %41, 0 - br i1 %exitcond36.not.i, label %ApplyAlphaMultiply4444_C.exit, label %.preheader.us.i, !llvm.loop !16 + %43 = icmp eq i32 %41, 0 + br i1 %43, label %ApplyAlphaMultiply4444_C.exit, label %.preheader.us.i, !llvm.loop !16 ApplyAlphaMultiply4444_C.exit: ; preds = %._crit_edge.us.i, %4, %.preheader.lr.ph.i ret void @@ -490,8 +490,8 @@ define internal void @ApplyAlphaMultiply_C(ptr noundef captures(none) %0, i32 no ._crit_edge.us: ; preds = %39 %40 = getelementptr inbounds i8, ptr %.033.us, i64 %10 - %exitcond39.not = icmp eq i32 %11, 0 - br i1 %exitcond39.not, label %._crit_edge36, label %.lr.ph.us, !llvm.loop !19 + %41 = icmp eq i32 %11, 0 + br i1 %41, label %._crit_edge36, label %.lr.ph.us, !llvm.loop !19 ._crit_edge36: ; preds = %._crit_edge.us, %.lr.ph35, %5 ret void @@ -676,20 +676,20 @@ define internal range(i32 0, 2) i32 @HasAlpha8b_C(ptr noundef readonly captures( %smin = tail call i32 @llvm.smin.i32(i32 %1, i32 0) br label %3 -3: ; preds = %4, %2 - %.02 = phi ptr [ %0, %2 ], [ %6, %4 ] - %.0 = phi i32 [ %1, %2 ], [ %5, %4 ] - %exitcond.not = icmp eq i32 %.0, %smin - br i1 %exitcond.not, label %8, label %4 +3: ; preds = %5, %2 + %.02 = phi ptr [ %0, %2 ], [ %7, %4 ] + %.0 = phi i32 [ %1, %2 ], [ %6, %4 ] + %4 = icmp eq i32 %.0, %smin + br i1 %4, label %8, label %4 -4: ; preds = %3 - %5 = add i32 %.0, -1 - %6 = getelementptr inbounds nuw i8, ptr %.02, i64 1 - %7 = load i8, ptr %.02, align 1, !tbaa !9 - %.not = icmp eq i8 %7, -1 - br i1 %.not, label %3, label %8, !llvm.loop !27 +5: ; preds = %3 + %6 = add i32 %.0, -1 + %7 = getelementptr inbounds nuw i8, ptr %.02, i64 1 + %8 = load i8, ptr %.02, align 1, !tbaa !9 + %.not = icmp eq i8 %8, -1 + br i1 %.not, label %3, label %9, !llvm.loop !27 -8: ; preds = %3, %4 +9: ; preds = %3, %5 %.03 = phi i32 [ 1, %4 ], [ 0, %3 ] ret i32 %.03 } @@ -702,15 +702,15 @@ define internal range(i32 0, 2) i32 @HasAlpha32b_C(ptr noundef readonly captures 4: ; preds = %.lr.ph %indvars.iv.next = add nuw nsw i64 %indvars.iv, 4 %5 = add i32 %.in, -1 - %exitcond.not = icmp eq i32 %5, 0 - br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !28 + %6 = icmp eq i32 %5, 0 + br i1 %6, label %._crit_edge, label %.lr.ph, !llvm.loop !28 .lr.ph: ; preds = %2, %4 %indvars.iv = phi i64 [ %indvars.iv.next, %4 ], [ 0, %2 ] %.in = phi i32 [ %5, %4 ], [ %1, %2 ] - %6 = getelementptr inbounds nuw i8, ptr %0, i64 %indvars.iv - %7 = load i8, ptr %6, align 1, !tbaa !9 - %.not = icmp eq i8 %7, -1 + %7 = getelementptr inbounds nuw i8, ptr %0, i64 %indvars.iv + %8 = load i8, ptr %7, align 1, !tbaa !9 + %.not = icmp eq i8 %8, -1 br i1 %.not, label %4, label %._crit_edge ._crit_edge: ; preds = %.lr.ph, %4, %2 diff --git a/bench/libwebp/optimized/backward_references_enc.ll b/bench/libwebp/optimized/backward_references_enc.ll index aa5c9a0bc46..5fd4148957e 100644 --- a/bench/libwebp/optimized/backward_references_enc.ll +++ b/bench/libwebp/optimized/backward_references_enc.ll @@ -908,8 +908,8 @@ GetBackwardReferencesLowEffort.exit: ; preds = %72, %VP8LRefsCursor br i1 %.not257.i, label %.preheader246..preheader_crit_edge.i, label %.lr.ph.i .preheader246..preheader_crit_edge.i: ; preds = %.preheader246.i - %.pre281.i = add nsw i32 %0, -8 - %.pre282.i = add i32 %0, 24 + %.pre280.i = add nsw i32 %0, -8 + %.pre281.i = add i32 %0, 24 br label %.preheader.i .lr.ph.i: ; preds = %.preheader246.i @@ -922,7 +922,7 @@ GetBackwardReferencesLowEffort.exit: ; preds = %72, %VP8LRefsCursor %96 = zext nneg i32 %93 to i64 %97 = add nsw i32 %0, -8 %98 = add i32 %0, 24 - %wide.trip.count290.i.i = zext nneg i32 %90 to i64 + %wide.trip.count289.i.i = zext nneg i32 %90 to i64 %99 = getelementptr inbounds nuw i8, ptr %87, i64 16 %100 = getelementptr inbounds nuw i8, ptr %87, i64 24 %101 = getelementptr i8, ptr %87, i64 8 @@ -958,8 +958,8 @@ GetBackwardReferencesLowEffort.exit: ; preds = %72, %VP8LRefsCursor br label %.preheader.i .preheader.i: ; preds = %.preheader.loopexit.i, %.preheader246..preheader_crit_edge.i - %.pre-phi283.i = phi i32 [ %.pre282.i, %.preheader246..preheader_crit_edge.i ], [ %98, %.preheader.loopexit.i ] - %.pre-phi.i = phi i32 [ %.pre281.i, %.preheader246..preheader_crit_edge.i ], [ %97, %.preheader.loopexit.i ] + %.pre-phi282.i = phi i32 [ %.pre281.i, %.preheader246..preheader_crit_edge.i ], [ %98, %.preheader.loopexit.i ] + %.pre-phi.i = phi i32 [ %.pre280.i, %.preheader246..preheader_crit_edge.i ], [ %97, %.preheader.loopexit.i ] %121 = phi i32 [ 0, %.preheader246..preheader_crit_edge.i ], [ %.pre.i, %.preheader.loopexit.i ] %122 = icmp sgt i32 %3, 24 %123 = getelementptr inbounds nuw i8, ptr %87, i64 16 @@ -1424,13 +1424,13 @@ VP8LDistanceToPlaneCode.exit.i.i48: ; preds = %324, %318 VP8LDistanceToPlaneCode.exit.thread.i.i: ; preds = %328, %VP8LDistanceToPlaneCode.exit.i.i48, %321, %310 %331 = add nsw i32 %.0169230.i.i, 1 - %exitcond262.not.i.i = icmp eq i32 %331, 7 - br i1 %exitcond262.not.i.i, label %332, label %310, !llvm.loop !53 + %exitcond.not.i.i = icmp eq i32 %331, 7 + br i1 %exitcond.not.i.i, label %332, label %310, !llvm.loop !53 332: ; preds = %VP8LDistanceToPlaneCode.exit.thread.i.i %333 = add nuw nsw i32 %.0168231.i.i, 1 - %exitcond263.not.i.i = icmp eq i32 %333, 7 - br i1 %exitcond263.not.i.i, label %.preheader221.i.i, label %.preheader222.i.i, !llvm.loop !54 + %exitcond262.not.i.i = icmp eq i32 %333, 7 + br i1 %exitcond262.not.i.i, label %.preheader221.i.i, label %.preheader222.i.i, !llvm.loop !54 .preheader220.i.i: ; preds = %357 %334 = icmp sgt i32 %.1149.i.i, 0 @@ -1441,9 +1441,9 @@ VP8LDistanceToPlaneCode.exit.thread.i.i: ; preds = %328, %VP8LDistanceT br label %.preheader219.us.i.i .preheader219.us.i.i: ; preds = %342, %.preheader219.us.preheader.i.i - %indvars.iv271.i.i = phi i64 [ 0, %.preheader219.us.preheader.i.i ], [ %indvars.iv.next272.i.i, %342 ] + %indvars.iv270.i.i = phi i64 [ 0, %.preheader219.us.preheader.i.i ], [ %indvars.iv.next271.i.i, %342 ] %.0164236.us.i.i = phi i32 [ 0, %.preheader219.us.preheader.i.i ], [ %.1165.us.i.i, %342 ] - %336 = getelementptr inbounds nuw [32 x i32], ptr %21, i64 0, i64 %indvars.iv271.i.i + %336 = getelementptr inbounds nuw [32 x i32], ptr %21, i64 0, i64 %indvars.iv270.i.i %337 = load i32, ptr %336, align 4, !tbaa !32 br label %343 @@ -1456,18 +1456,18 @@ VP8LDistanceToPlaneCode.exit.thread.i.i: ; preds = %328, %VP8LDistanceT 342: ; preds = %._crit_edge.us.i.i, %338 %.1165.us.i.i = phi i32 [ %.0164236.us.i.i, %._crit_edge.us.i.i ], [ %341, %338 ] - %indvars.iv.next272.i.i = add nuw nsw i64 %indvars.iv271.i.i, 1 - %exitcond275.not.i.i = icmp eq i64 %indvars.iv.next272.i.i, %335 - br i1 %exitcond275.not.i.i, label %._crit_edge238.i.i, label %.preheader219.us.i.i, !llvm.loop !55 + %indvars.iv.next271.i.i = add nuw nsw i64 %indvars.iv270.i.i, 1 + %exitcond274.not.i.i = icmp eq i64 %indvars.iv.next271.i.i, %335 + br i1 %exitcond274.not.i.i, label %._crit_edge238.i.i, label %.preheader219.us.i.i, !llvm.loop !55 343: ; preds = %343, %.preheader219.us.i.i - %indvars.iv268.i.i = phi i64 [ 0, %.preheader219.us.i.i ], [ %indvars.iv.next269.i.i, %343 ] - %344 = getelementptr inbounds nuw [32 x i32], ptr %21, i64 0, i64 %indvars.iv268.i.i + %indvars.iv267.i.i = phi i64 [ 0, %.preheader219.us.i.i ], [ %indvars.iv.next268.i.i, %343 ] + %344 = getelementptr inbounds nuw [32 x i32], ptr %21, i64 0, i64 %indvars.iv267.i.i %345 = load i32, ptr %344, align 4, !tbaa !32 %346 = add nsw i32 %345, 1 %347 = icmp ne i32 %337, %346 - %indvars.iv.next269.i.i = add nuw nsw i64 %indvars.iv268.i.i, 1 - %348 = icmp samesign ult i64 %indvars.iv.next269.i.i, %335 + %indvars.iv.next268.i.i = add nuw nsw i64 %indvars.iv267.i.i, 1 + %348 = icmp samesign ult i64 %indvars.iv.next268.i.i, %335 %349 = select i1 %348, i1 %347, i1 false br i1 %349, label %343, label %._crit_edge.us.i.i, !llvm.loop !56 @@ -1475,9 +1475,9 @@ VP8LDistanceToPlaneCode.exit.thread.i.i: ; preds = %328, %VP8LDistanceT br i1 %347, label %338, label %342 .preheader221.i.i: ; preds = %332, %357 - %indvars.iv264.i.i = phi i64 [ %indvars.iv.next265.i.i, %357 ], [ 0, %332 ] + %indvars.iv263.i.i = phi i64 [ %indvars.iv.next264.i.i, %357 ], [ 0, %332 ] %.0148232.i.i = phi i32 [ %.1149.i.i, %357 ], [ 0, %332 ] - %350 = getelementptr inbounds nuw [32 x i32], ptr %21, i64 0, i64 %indvars.iv264.i.i + %350 = getelementptr inbounds nuw [32 x i32], ptr %21, i64 0, i64 %indvars.iv263.i.i %351 = load i32, ptr %350, align 4, !tbaa !32 %352 = icmp eq i32 %351, 0 br i1 %352, label %357, label %353 @@ -1491,9 +1491,9 @@ VP8LDistanceToPlaneCode.exit.thread.i.i: ; preds = %328, %VP8LDistanceT 357: ; preds = %353, %.preheader221.i.i %.1149.i.i = phi i32 [ %.0148232.i.i, %.preheader221.i.i ], [ %354, %353 ] - %indvars.iv.next265.i.i = add nuw nsw i64 %indvars.iv264.i.i, 1 - %exitcond267.not.i.i = icmp eq i64 %indvars.iv.next265.i.i, 32 - br i1 %exitcond267.not.i.i, label %.preheader220.i.i, label %.preheader221.i.i, !llvm.loop !57 + %indvars.iv.next264.i.i = add nuw nsw i64 %indvars.iv263.i.i, 1 + %exitcond266.not.i.i = icmp eq i64 %indvars.iv.next264.i.i, 32 + br i1 %exitcond266.not.i.i, label %.preheader220.i.i, label %.preheader221.i.i, !llvm.loop !57 ._crit_edge238.i.i: ; preds = %342, %.preheader220.i.i %.0164.lcssa.i.i = phi i32 [ 0, %.preheader220.i.i ], [ %.1165.us.i.i, %342 ] @@ -1503,14 +1503,14 @@ VP8LDistanceToPlaneCode.exit.thread.i.i: ; preds = %328, %VP8LDistanceT .lr.ph254.i.i: ; preds = %._crit_edge238.i.i %.val192.i.i = load ptr, ptr %8, align 8, !tbaa !28 - %wide.trip.count280.i.i = zext nneg i32 %.1149.i.i to i64 + %wide.trip.count279.i.i = zext nneg i32 %.1149.i.i to i64 br label %359 359: ; preds = %417, %.lr.ph254.i.i - %indvars.iv287.i.i = phi i64 [ 1, %.lr.ph254.i.i ], [ %indvars.iv.next288.i.i, %417 ] + %indvars.iv286.i.i = phi i64 [ 1, %.lr.ph254.i.i ], [ %indvars.iv.next287.i.i, %417 ] %.0166251.i.i = phi i32 [ -1, %.lr.ph254.i.i ], [ %.1167.i.i, %417 ] %.0172250.i.i = phi i32 [ -1, %.lr.ph254.i.i ], [ %.1173.i.i, %417 ] - %360 = getelementptr inbounds nuw i32, ptr %.val192.i.i, i64 %indvars.iv287.i.i + %360 = getelementptr inbounds nuw i32, ptr %.val192.i.i, i64 %indvars.iv286.i.i %361 = load i32, ptr %360, align 4, !tbaa !32 %362 = and i32 %361, 4095 %363 = icmp eq i32 %362, 4095 @@ -1521,13 +1521,13 @@ VP8LDistanceToPlaneCode.exit.thread.i.i: ; preds = %328, %VP8LDistanceT br i1 %334, label %.lr.ph241.i.i, label %.loopexit217.i.i 366: ; preds = %.lr.ph241.i.i - %indvars.iv.next277.i.i = add nuw nsw i64 %indvars.iv276.i.i, 1 - %exitcond281.not.i.i = icmp eq i64 %indvars.iv.next277.i.i, %wide.trip.count280.i.i - br i1 %exitcond281.not.i.i, label %.loopexit217.i.i, label %.lr.ph241.i.i, !llvm.loop !58 + %indvars.iv.next276.i.i = add nuw nsw i64 %indvars.iv275.i.i, 1 + %exitcond280.not.i.i = icmp eq i64 %indvars.iv.next276.i.i, %wide.trip.count279.i.i + br i1 %exitcond280.not.i.i, label %.loopexit217.i.i, label %.lr.ph241.i.i, !llvm.loop !58 .lr.ph241.i.i: ; preds = %364, %366 - %indvars.iv276.i.i = phi i64 [ %indvars.iv.next277.i.i, %366 ], [ 0, %364 ] - %367 = getelementptr inbounds nuw [32 x i32], ptr %21, i64 0, i64 %indvars.iv276.i.i + %indvars.iv275.i.i = phi i64 [ %indvars.iv.next276.i.i, %366 ], [ 0, %364 ] + %367 = getelementptr inbounds nuw [32 x i32], ptr %21, i64 0, i64 %indvars.iv275.i.i %368 = load i32, ptr %367, align 4, !tbaa !32 %369 = icmp eq i32 %365, %368 br i1 %369, label %.loopexit.thread.i.i, label %366 @@ -1543,17 +1543,17 @@ VP8LDistanceToPlaneCode.exit.thread.i.i: ; preds = %328, %VP8LDistanceT br i1 %376, label %.lr.ph245.i.i, label %.loopexit.i.i .lr.ph245.i.i: ; preds = %.loopexit217.i.i - %377 = getelementptr inbounds nuw i32, ptr %2, i64 %indvars.iv287.i.i - %wide.trip.count285.i.i = zext nneg i32 %372 to i64 - %378 = trunc nuw nsw i64 %indvars.iv287.i.i to i32 + %377 = getelementptr inbounds nuw i32, ptr %2, i64 %indvars.iv286.i.i + %wide.trip.count284.i.i = zext nneg i32 %372 to i64 + %378 = trunc nuw nsw i64 %indvars.iv286.i.i to i32 br label %379 379: ; preds = %.thread207.i.i, %.lr.ph245.i.i - %indvars.iv282.i.i = phi i64 [ 0, %.lr.ph245.i.i ], [ %indvars.iv.next283.i.i, %.thread207.i.i ] + %indvars.iv281.i.i = phi i64 [ 0, %.lr.ph245.i.i ], [ %indvars.iv.next282.i.i, %.thread207.i.i ] %.3154244.i.i = phi i32 [ %375, %.lr.ph245.i.i ], [ %.5214.i.i, %.thread207.i.i ] %.1156243.i.i = phi i32 [ %374, %.lr.ph245.i.i ], [ %.3158213.i.i, %.thread207.i.i ] - %380 = getelementptr inbounds nuw [32 x i32], ptr %22, i64 0, i64 %indvars.iv282.i.i - %381 = getelementptr inbounds nuw [32 x i32], ptr %21, i64 0, i64 %indvars.iv282.i.i + %380 = getelementptr inbounds nuw [32 x i32], ptr %22, i64 0, i64 %indvars.iv281.i.i + %381 = getelementptr inbounds nuw [32 x i32], ptr %21, i64 0, i64 %indvars.iv281.i.i %.pn.in.i.i = select i1 %371, ptr %380, ptr %381 %.pn.i132.i = load i32, ptr %.pn.in.i.i, align 4, !tbaa !32 %382 = sub nsw i32 %378, %.pn.i132.i @@ -1619,9 +1619,9 @@ VP8LDistanceToPlaneCode.exit.thread.i.i: ; preds = %328, %VP8LDistanceT .thread207.i.i: ; preds = %412, %.critedge.i.i, %384, %379 %.5214.i.i = phi i32 [ %.pn.i132.i, %412 ], [ %.3154244.i.i, %384 ], [ %.3154244.i.i, %379 ], [ %.3154244.i.i, %.critedge.i.i ] %.3158213.i.i = phi i32 [ %.1146205.i.i, %412 ], [ %.1156243.i.i, %384 ], [ %.1156243.i.i, %379 ], [ %.1156243.i.i, %.critedge.i.i ] - %indvars.iv.next283.i.i = add nuw nsw i64 %indvars.iv282.i.i, 1 - %exitcond286.not.i.i = icmp eq i64 %indvars.iv.next283.i.i, %wide.trip.count285.i.i - br i1 %exitcond286.not.i.i, label %.loopexit.i.i, label %379, !llvm.loop !60 + %indvars.iv.next282.i.i = add nuw nsw i64 %indvars.iv281.i.i, 1 + %exitcond285.not.i.i = icmp eq i64 %indvars.iv.next282.i.i, %wide.trip.count284.i.i + br i1 %exitcond285.not.i.i, label %.loopexit.i.i, label %379, !llvm.loop !60 .loopexit.i.i: ; preds = %.thread207.i.i, %.loopexit217.i.i %.0155.i.i = phi i32 [ %374, %.loopexit217.i.i ], [ %.3158213.i.i, %.thread207.i.i ] @@ -1630,21 +1630,21 @@ VP8LDistanceToPlaneCode.exit.thread.i.i: ; preds = %328, %VP8LDistanceT br i1 %414, label %417, label %.loopexit.thread.i.i .loopexit.thread.i.i: ; preds = %.lr.ph241.i.i, %412, %.loopexit.i.i - %.2153295.i.i = phi i32 [ %.2153.i.i, %.loopexit.i.i ], [ %.pn.i132.i, %412 ], [ %365, %.lr.ph241.i.i ] - %.0155294.i.i = phi i32 [ %.0155.i.i, %.loopexit.i.i ], [ 4095, %412 ], [ 4095, %.lr.ph241.i.i ] - %415 = shl i32 %.2153295.i.i, 12 - %416 = or i32 %415, %.0155294.i.i + %.2153294.i.i = phi i32 [ %.2153.i.i, %.loopexit.i.i ], [ %.pn.i132.i, %412 ], [ %365, %.lr.ph241.i.i ] + %.0155293.i.i = phi i32 [ %.0155.i.i, %.loopexit.i.i ], [ 4095, %412 ], [ 4095, %.lr.ph241.i.i ] + %415 = shl i32 %.2153294.i.i, 12 + %416 = or i32 %415, %.0155293.i.i br label %417 417: ; preds = %.loopexit.thread.i.i, %.loopexit.i.i %.sink.i.i = phi i32 [ %416, %.loopexit.thread.i.i ], [ 0, %.loopexit.i.i ] - %.1173.i.i = phi i32 [ %.0155294.i.i, %.loopexit.thread.i.i ], [ 0, %.loopexit.i.i ] - %.1167.i.i = phi i32 [ %.2153295.i.i, %.loopexit.thread.i.i ], [ 0, %.loopexit.i.i ] - %418 = getelementptr inbounds nuw i32, ptr %358, i64 %indvars.iv287.i.i + %.1173.i.i = phi i32 [ %.0155293.i.i, %.loopexit.thread.i.i ], [ 0, %.loopexit.i.i ] + %.1167.i.i = phi i32 [ %.2153294.i.i, %.loopexit.thread.i.i ], [ 0, %.loopexit.i.i ] + %418 = getelementptr inbounds nuw i32, ptr %358, i64 %indvars.iv286.i.i store i32 %.sink.i.i, ptr %418, align 4, !tbaa !32 - %indvars.iv.next288.i.i = add nuw nsw i64 %indvars.iv287.i.i, 1 - %exitcond291.not.i.i = icmp eq i64 %indvars.iv.next288.i.i, %wide.trip.count290.i.i - br i1 %exitcond291.not.i.i, label %._crit_edge.i.i, label %359, !llvm.loop !61 + %indvars.iv.next287.i.i = add nuw nsw i64 %indvars.iv286.i.i, 1 + %exitcond290.not.i.i = icmp eq i64 %indvars.iv.next287.i.i, %wide.trip.count289.i.i + br i1 %exitcond290.not.i.i, label %._crit_edge.i.i, label %359, !llvm.loop !61 ._crit_edge.i.i: ; preds = %417, %._crit_edge238.i.i store i32 0, ptr %358, align 4, !tbaa !32 @@ -1791,9 +1791,9 @@ VP8LRefsCursorInit.exit.i.i45: ; preds = %428, %426 br label %.lr.ph139.i.i .lr.ph139.i.i: ; preds = %512, %.lr.ph139.preheader.i.i - %indvars.iv169.i.i = phi i64 [ %111, %.lr.ph139.preheader.i.i ], [ %indvars.iv.next170.i.i, %512 ] + %indvars.iv168.i.i = phi i64 [ %111, %.lr.ph139.preheader.i.i ], [ %indvars.iv.next169.i.i, %512 ] %.091138.i.i = phi i32 [ %478, %.lr.ph139.preheader.i.i ], [ %513, %512 ] - %479 = getelementptr inbounds nuw [11 x %struct.VP8LColorCache], ptr %19, i64 0, i64 %indvars.iv169.i.i + %479 = getelementptr inbounds nuw [11 x %struct.VP8LColorCache], ptr %19, i64 0, i64 %indvars.iv168.i.i %.val115.i.i = load ptr, ptr %479, align 16, !tbaa !69 %480 = zext i32 %.091138.i.i to i64 %481 = getelementptr inbounds nuw i32, ptr %.val115.i.i, i64 %480 @@ -1802,7 +1802,7 @@ VP8LRefsCursorInit.exit.i.i45: ; preds = %428, %426 br i1 %483, label %484, label %493 484: ; preds = %.lr.ph139.i.i - %485 = getelementptr inbounds nuw [11 x ptr], ptr %20, i64 0, i64 %indvars.iv169.i.i + %485 = getelementptr inbounds nuw [11 x ptr], ptr %20, i64 0, i64 %indvars.iv168.i.i %486 = load ptr, ptr %485, align 8, !tbaa !36 %487 = load ptr, ptr %486, align 8, !tbaa !66 %488 = sext i32 %.091138.i.i to i64 @@ -1815,7 +1815,7 @@ VP8LRefsCursorInit.exit.i.i45: ; preds = %428, %426 493: ; preds = %.lr.ph139.i.i store i32 %453, ptr %481, align 4, !tbaa !32 - %494 = getelementptr inbounds nuw [11 x ptr], ptr %20, i64 0, i64 %indvars.iv169.i.i + %494 = getelementptr inbounds nuw [11 x ptr], ptr %20, i64 0, i64 %indvars.iv168.i.i %495 = load ptr, ptr %494, align 8, !tbaa !36 %496 = getelementptr inbounds nuw i8, ptr %495, i64 1032 %497 = getelementptr inbounds nuw [256 x i32], ptr %496, i64 0, i64 %460 @@ -1840,9 +1840,9 @@ VP8LRefsCursorInit.exit.i.i45: ; preds = %428, %426 br label %512 512: ; preds = %493, %484 - %indvars.iv.next170.i.i = add nsw i64 %indvars.iv169.i.i, -1 + %indvars.iv.next169.i.i = add nsw i64 %indvars.iv168.i.i, -1 %513 = ashr i32 %.091138.i.i, 1 - %514 = and i64 %indvars.iv.next170.i.i, 4294967295 + %514 = and i64 %indvars.iv.next169.i.i, 4294967295 %exitcond173.not.i.i = icmp eq i64 %514, 0 br i1 %exitcond173.not.i.i, label %.loopexit123.i.i, label %.lr.ph139.i.i, !llvm.loop !71 @@ -1969,45 +1969,45 @@ VP8LRefsCursorNext.exit.i.i46: ; preds = %563, %.loopexit123. .lr.ph149.i.i: ; preds = %.preheader.i141.i, %.lr.ph149.i.i %.1203.i = phi i32 [ %spec.select238.i, %.lr.ph149.i.i ], [ %422, %.preheader.i141.i ] - %indvars.iv174.i.i = phi i64 [ %indvars.iv.next175.i.i, %.lr.ph149.i.i ], [ 0, %.preheader.i141.i ] + %indvars.iv171.i.i = phi i64 [ %indvars.iv.next172.i.i, %.lr.ph149.i.i ], [ 0, %.preheader.i141.i ] %.097147.i.i = phi i64 [ %spec.select239.i, %.lr.ph149.i.i ], [ -1, %.preheader.i141.i ] - %570 = getelementptr inbounds nuw [11 x ptr], ptr %20, i64 0, i64 %indvars.iv174.i.i + %570 = getelementptr inbounds nuw [11 x ptr], ptr %20, i64 0, i64 %indvars.iv171.i.i %571 = load ptr, ptr %570, align 8, !tbaa !36 %572 = call i64 @VP8LHistogramEstimateBits(ptr noundef %571) #11 - %573 = icmp eq i64 %indvars.iv174.i.i, 0 + %573 = icmp eq i64 %indvars.iv171.i.i, 0 %574 = icmp ult i64 %572, %.097147.i.i %or.cond.i142.i = select i1 %573, i1 true, i1 %574 - %575 = trunc nuw nsw i64 %indvars.iv174.i.i to i32 + %575 = trunc nuw nsw i64 %indvars.iv171.i.i to i32 %spec.select238.i = select i1 %or.cond.i142.i, i32 %575, i32 %.1203.i %spec.select239.i = select i1 %or.cond.i142.i, i64 %572, i64 %.097147.i.i - %indvars.iv.next175.i.i = add nuw nsw i64 %indvars.iv174.i.i, 1 - %exitcond178.not.i.i = icmp eq i64 %indvars.iv.next175.i.i, %wide.trip.count.i136.i - br i1 %exitcond178.not.i.i, label %.lr.ph152.i.preheader.i, label %.lr.ph149.i.i, !llvm.loop !77 + %indvars.iv.next172.i.i = add nuw nsw i64 %indvars.iv171.i.i, 1 + %exitcond175.not.i.i = icmp eq i64 %indvars.iv.next172.i.i, %wide.trip.count.i136.i + br i1 %exitcond175.not.i.i, label %.lr.ph152.i.preheader.i, label %.lr.ph149.i.i, !llvm.loop !77 .lr.ph152.i.preheader.i: ; preds = %.lr.ph.i137.i, %445, %.lr.ph149.i.i - %.not124288.i = phi i1 [ false, %.lr.ph149.i.i ], [ true, %445 ], [ true, %.lr.ph.i137.i ] - %.3286.i = phi i32 [ %spec.select238.i, %.lr.ph149.i.i ], [ %422, %445 ], [ %422, %.lr.ph.i137.i ] + %.not124289.i = phi i1 [ false, %.lr.ph149.i.i ], [ true, %445 ], [ true, %.lr.ph.i137.i ] + %.3287.i = phi i32 [ %spec.select238.i, %.lr.ph149.i.i ], [ %422, %445 ], [ %422, %.lr.ph.i137.i ] br label %.lr.ph152.i.i .lr.ph152.i.i: ; preds = %580, %.lr.ph152.i.preheader.i - %indvars.iv179.i.i = phi i64 [ %indvars.iv.next180.i.i, %580 ], [ 0, %.lr.ph152.i.preheader.i ] - %576 = getelementptr inbounds nuw [11 x i32], ptr %18, i64 0, i64 %indvars.iv179.i.i + %indvars.iv176.i.i = phi i64 [ %indvars.iv.next177.i.i, %580 ], [ 0, %.lr.ph152.i.preheader.i ] + %576 = getelementptr inbounds nuw [11 x i32], ptr %18, i64 0, i64 %indvars.iv176.i.i %577 = load i32, ptr %576, align 4, !tbaa !32 %.not113.i.i = icmp eq i32 %577, 0 br i1 %.not113.i.i, label %580, label %578 578: ; preds = %.lr.ph152.i.i - %579 = getelementptr inbounds nuw [11 x %struct.VP8LColorCache], ptr %19, i64 0, i64 %indvars.iv179.i.i + %579 = getelementptr inbounds nuw [11 x %struct.VP8LColorCache], ptr %19, i64 0, i64 %indvars.iv176.i.i call void @VP8LColorCacheClear(ptr noundef nonnull %579) #11 br label %580 580: ; preds = %578, %.lr.ph152.i.i - %581 = getelementptr inbounds nuw [11 x ptr], ptr %20, i64 0, i64 %indvars.iv179.i.i + %581 = getelementptr inbounds nuw [11 x ptr], ptr %20, i64 0, i64 %indvars.iv176.i.i %582 = load ptr, ptr %581, align 8, !tbaa !36 call void @VP8LFreeHistogram(ptr noundef %582) #11 - %indvars.iv.next180.i.i = add nuw nsw i64 %indvars.iv179.i.i, 1 - %exitcond183.not.i.i = icmp eq i64 %indvars.iv.next180.i.i, %wide.trip.count.i136.i - br i1 %exitcond183.not.i.i, label %CalculateBestCacheSize.exit.i, label %.lr.ph152.i.i, !llvm.loop !78 + %indvars.iv.next177.i.i = add nuw nsw i64 %indvars.iv176.i.i, 1 + %exitcond180.not.i.i = icmp eq i64 %indvars.iv.next177.i.i, %wide.trip.count.i136.i + br i1 %exitcond180.not.i.i, label %CalculateBestCacheSize.exit.i, label %.lr.ph152.i.i, !llvm.loop !78 CalculateBestCacheSize.exit.thread.i: ; preds = %.preheader.i141.i, %VP8LRefsCursorInit.exit.i.i45 %.4.ph.i = phi i32 [ 0, %VP8LRefsCursorInit.exit.i.i45 ], [ %422, %.preheader.i141.i ] @@ -2020,10 +2020,10 @@ CalculateBestCacheSize.exit.i: ; preds = %580 call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %20) #11 call void @llvm.lifetime.end.p0(i64 176, ptr nonnull %19) #11 call void @llvm.lifetime.end.p0(i64 44, ptr nonnull %18) #11 - br i1 %.not124288.i, label %.critedge, label %583 + br i1 %.not124289.i, label %.critedge, label %583 583: ; preds = %CalculateBestCacheSize.exit.i, %CalculateBestCacheSize.exit.thread.i - %.4214.i = phi i32 [ %.4.ph.i, %CalculateBestCacheSize.exit.thread.i ], [ %.3286.i, %CalculateBestCacheSize.exit.i ] + %.4214.i = phi i32 [ %.4.ph.i, %CalculateBestCacheSize.exit.thread.i ], [ %.3287.i, %CalculateBestCacheSize.exit.i ] %584 = icmp sgt i32 %.4214.i, 0 br i1 %584, label %585, label %634 @@ -2315,8 +2315,8 @@ BackwardRefsClone.exit.thread.i: ; preds = %660, %BackwardRefsS 686: ; preds = %BackwardRefsClone.exit.thread.i, %BackwardRefsClone.exit.thread.thread.i, %637, %.preheader244.i %.1110.ph.i = phi i64 [ %.2111.i, %637 ], [ %.2111.i, %BackwardRefsClone.exit.thread.i ], [ %.0109256.i, %.preheader244.i ], [ %.2111.i, %BackwardRefsClone.exit.thread.thread.i ] %indvars.iv.next.i = add nsw i64 %indvars.iv.i, -1 - %exitcond.not.i = icmp eq i64 %indvars.iv.i, 0 - br i1 %exitcond.not.i, label %.loopexit.i, label %.preheader244.i, !llvm.loop !92 + %.not283.i = icmp eq i64 %indvars.iv.i, 0 + br i1 %.not283.i, label %.loopexit.i, label %.preheader244.i, !llvm.loop !92 .loopexit.i: ; preds = %686, %.thread.i, %126 %687 = xor i32 %.0116258.i, -1 @@ -2458,7 +2458,7 @@ VP8LRefsCursorInit.exit.i175.i: ; preds = %.thread233.i 752: ; preds = %749 %753 = shl i32 %736, 4 - %754 = add i32 %753, %.pre-phi283.i + %754 = add i32 %753, %.pre-phi282.i %755 = sub i32 %754, %.recomposed141 %756 = sext i32 %755 to i64 %757 = getelementptr inbounds [128 x i8], ptr @plane_to_code_lut, i64 0, i64 %756 @@ -2600,8 +2600,8 @@ BackwardRefsClone.exit198.i: ; preds = %795 821: ; preds = %779, %BackwardReferences2DLocality.exit.i, %690 %indvars.iv.next278.i = add nsw i64 %indvars.iv277.i, -1 - %exitcond280.not.i = icmp eq i64 %indvars.iv277.i, 0 - br i1 %exitcond280.not.i, label %GetBackwardReferences.exit, label %690, !llvm.loop !100 + %.not284.i = icmp eq i64 %indvars.iv277.i, 0 + br i1 %.not284.i, label %GetBackwardReferences.exit, label %690, !llvm.loop !100 GetBackwardReferences.exit: ; preds = %821, %806, %VP8LClearBackwardRefs.exit.i186.i %822 = load ptr, ptr %25, align 8, !tbaa !28 diff --git a/bench/linux/optimized/drm_gem_framebuffer_helper.ll b/bench/linux/optimized/drm_gem_framebuffer_helper.ll index 9f247ea73d4..2a4f0b49665 100644 --- a/bench/linux/optimized/drm_gem_framebuffer_helper.ll +++ b/bench/linux/optimized/drm_gem_framebuffer_helper.ll @@ -647,8 +647,8 @@ define dso_local i32 @drm_gem_fb_vmap(ptr noundef readonly captures(none) %0, pt br i1 %exitcond, label %.loopexit, label %.split, !llvm.loop !26 .loopexit: ; preds = %39, %.split1, %.loopexit8, %3, %46 - %55 = phi i32 [ 0, %.loopexit8 ], [ %47, %46 ], [ 0, %3 ], [ %47, %.split1 ], [ 0, %39 ] - ret i32 %55 + %57 = phi i32 [ 0, %.loopexit8 ], [ %47, %46 ], [ 0, %3 ], [ %47, %.split1 ], [ 0, %39 ] + ret i32 %57 } ; Function Attrs: null_pointer_is_valid diff --git a/bench/linux/optimized/sg.ll b/bench/linux/optimized/sg.ll index 5e5c0c024db..5026066a6f8 100644 --- a/bench/linux/optimized/sg.ll +++ b/bench/linux/optimized/sg.ll @@ -4518,9 +4518,9 @@ define internal fastcc range(i32 -2147483648, 1) i32 @sg_build_indirect(ptr noun %31 = icmp ne i32 %.16.val.64.val, 0 %32 = and i1 %31, %30 %33 = zext nneg i32 %.16.val.64.val to i64 - br i1 %32, label %.preheader.preheader, label %.loopexit1 + br i1 %32, label %.preheader, label %.loopexit1 -.preheader.preheader: ; preds = %24 +.preheader: ; preds = %24 %smin = tail call i32 @llvm.smin.i32(i32 %28, i32 -1) br label %.preheader @@ -4604,12 +4604,12 @@ define internal fastcc range(i32 -2147483648, 1) i32 @sg_build_indirect(ptr noun .loopexit: ; preds = %75, %48 %82 = add i32 %34, -1 - %exitcond.not = icmp eq i32 %82, %smin - br i1 %exitcond.not, label %.thread, label %.preheader + %83 = icmp eq i32 %82, %smin + br i1 %83, label %.thread, label %.preheader .thread: ; preds = %.loopexit, %4, %.loopexit1, %12, %2 - %83 = phi i32 [ -14, %2 ], [ %.16.val.64.val, %12 ], [ %74, %.loopexit1 ], [ -12, %4 ], [ -12, %.loopexit ] - ret i32 %83 + %84 = phi i32 [ -14, %2 ], [ %.16.val.64.val, %12 ], [ %74, %.loopexit1 ], [ -12, %4 ], [ -12, %.loopexit ] + ret i32 %84 } ; Function Attrs: null_pointer_is_valid diff --git a/bench/llvm/optimized/LoadStoreOpt.ll b/bench/llvm/optimized/LoadStoreOpt.ll index 6f12bc6986c..adc616e8f42 100644 --- a/bench/llvm/optimized/LoadStoreOpt.ll +++ b/bench/llvm/optimized/LoadStoreOpt.ll @@ -3360,7 +3360,7 @@ define dso_local noundef zeroext i1 @_ZN4llvm12LoadStoreOpt29operationAliasesWit %4 = getelementptr inbounds nuw i8, ptr %2, i64 24 %5 = load i32, ptr %4, align 8, !tbaa !268 %.not.i = icmp eq i32 %5, 0 - br i1 %.not.i, label %50, label %6 + br i1 %.not.i, label %51, label %6 6: ; preds = %3 %7 = getelementptr inbounds nuw i8, ptr %2, i64 16 @@ -3413,83 +3413,83 @@ define dso_local noundef zeroext i1 @_ZN4llvm12LoadStoreOpt29operationAliasesWit 25: ; preds = %22 %26 = getelementptr inbounds nuw i8, ptr %.02964.i.i.i.i.i.i, i64 32 %27 = add nsw i64 %.065.i.i.i.i.i.i, -1 - %exitcond.not.i.i.i.i.i.i = icmp eq i64 %27, 0 - br i1 %exitcond.not.i.i.i.i.i.i, label %._crit_edge.loopexit.i.i.i.i.i.i, label %14, !llvm.loop !424 + %28 = icmp eq i64 %27, 0 + br i1 %28, label %._crit_edge.loopexit.i.i.i.i.i.i, label %14, !llvm.loop !424 ._crit_edge.loopexit.i.i.i.i.i.i: ; preds = %25 %.pre.i.i.i.i.i.i = ptrtoint ptr %26 to i64 %.pre70.i.i.i.i.i.i = sub i64 %10, %.pre.i.i.i.i.i.i - %28 = ashr exact i64 %.pre70.i.i.i.i.i.i, 3 + %29 = ashr exact i64 %.pre70.i.i.i.i.i.i, 3 br label %._crit_edge.i.i.i.i.i.i ._crit_edge.i.i.i.i.i.i: ; preds = %._crit_edge.loopexit.i.i.i.i.i.i, %6 - %.pre-phi71.i.i.i.i.i.i = phi i64 [ %28, %._crit_edge.loopexit.i.i.i.i.i.i ], [ %8, %6 ] + %.pre-phi71.i.i.i.i.i.i = phi i64 [ %29, %._crit_edge.loopexit.i.i.i.i.i.i ], [ %8, %6 ] %.029.lcssa.i.i.i.i.i.i = phi ptr [ %26, %._crit_edge.loopexit.i.i.i.i.i.i ], [ %.val, %6 ] switch i64 %.pre-phi71.i.i.i.i.i.i, label %45 [ - i64 3, label %29 - i64 2, label %35 - i64 1, label %41 + i64 3, label %30 + i64 2, label %36 + i64 1, label %42 ] -29: ; preds = %._crit_edge.i.i.i.i.i.i +30: ; preds = %._crit_edge.i.i.i.i.i.i %.029.val42.i.i.i.i.i.i = load ptr, ptr %.029.lcssa.i.i.i.i.i.i, align 8, !tbaa !266 - %30 = getelementptr inbounds nuw i8, ptr %0, i64 88 - %.val41.val.i.i.i.i.i.i = load ptr, ptr %30, align 8, !tbaa !181 - %31 = getelementptr inbounds nuw i8, ptr %0, i64 112 - %.val41.val49.i.i.i.i.i.i = load ptr, ptr %31, align 8, !tbaa !188 - %32 = tail call noundef zeroext i1 @_ZN4llvm15GISelAddressing12instMayAliasERKNS_12MachineInstrES3_RNS_19MachineRegisterInfoEPNS_9AAResultsE(ptr noundef nonnull align 8 dereferenceable(70) %1, ptr noundef nonnull align 8 dereferenceable(70) %.029.val42.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(504) %.val41.val.i.i.i.i.i.i, ptr noundef %.val41.val49.i.i.i.i.i.i) - br i1 %32, label %"_ZN4llvm6any_ofIRNS_11SmallVectorIPNS_6GStoreELj6EEEZNS_12LoadStoreOpt29operationAliasesWithCandidateERNS_12MachineInstrERNS6_19StoreMergeCandidateEE3$_0EEbOT_T0_.exit", label %33 - -33: ; preds = %29 - %34 = getelementptr inbounds nuw i8, ptr %.029.lcssa.i.i.i.i.i.i, i64 8 - br label %35 + %31 = getelementptr inbounds nuw i8, ptr %0, i64 88 + %.val41.val.i.i.i.i.i.i = load ptr, ptr %31, align 8, !tbaa !181 + %32 = getelementptr inbounds nuw i8, ptr %0, i64 112 + %.val41.val49.i.i.i.i.i.i = load ptr, ptr %32, align 8, !tbaa !188 + %33 = tail call noundef zeroext i1 @_ZN4llvm15GISelAddressing12instMayAliasERKNS_12MachineInstrES3_RNS_19MachineRegisterInfoEPNS_9AAResultsE(ptr noundef nonnull align 8 dereferenceable(70) %1, ptr noundef nonnull align 8 dereferenceable(70) %.029.val42.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(504) %.val41.val.i.i.i.i.i.i, ptr noundef %.val41.val49.i.i.i.i.i.i) + br i1 %33, label %"_ZN4llvm6any_ofIRNS_11SmallVectorIPNS_6GStoreELj6EEEZNS_12LoadStoreOpt29operationAliasesWithCandidateERNS_12MachineInstrERNS6_19StoreMergeCandidateEE3$_0EEbOT_T0_.exit", label %34 + +34: ; preds = %30 + %35 = getelementptr inbounds nuw i8, ptr %.029.lcssa.i.i.i.i.i.i, i64 8 + br label %36 -35: ; preds = %33, %._crit_edge.i.i.i.i.i.i - %.1.i.i.i.i.i.i = phi ptr [ %34, %33 ], [ %.029.lcssa.i.i.i.i.i.i, %._crit_edge.i.i.i.i.i.i ] +36: ; preds = %34, %._crit_edge.i.i.i.i.i.i + %.1.i.i.i.i.i.i = phi ptr [ %35, %33 ], [ %.029.lcssa.i.i.i.i.i.i, %._crit_edge.i.i.i.i.i.i ] %.1.val.i.i.i.i.i.i = load ptr, ptr %.1.i.i.i.i.i.i, align 8, !tbaa !266 - %36 = getelementptr inbounds nuw i8, ptr %0, i64 88 - %.val44.val.i.i.i.i.i.i = load ptr, ptr %36, align 8, !tbaa !181 - %37 = getelementptr inbounds nuw i8, ptr %0, i64 112 - %.val44.val48.i.i.i.i.i.i = load ptr, ptr %37, align 8, !tbaa !188 - %38 = tail call noundef zeroext i1 @_ZN4llvm15GISelAddressing12instMayAliasERKNS_12MachineInstrES3_RNS_19MachineRegisterInfoEPNS_9AAResultsE(ptr noundef nonnull align 8 dereferenceable(70) %1, ptr noundef nonnull align 8 dereferenceable(70) %.1.val.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(504) %.val44.val.i.i.i.i.i.i, ptr noundef %.val44.val48.i.i.i.i.i.i) - br i1 %38, label %"_ZN4llvm6any_ofIRNS_11SmallVectorIPNS_6GStoreELj6EEEZNS_12LoadStoreOpt29operationAliasesWithCandidateERNS_12MachineInstrERNS6_19StoreMergeCandidateEE3$_0EEbOT_T0_.exit", label %39 - -39: ; preds = %35 - %40 = getelementptr inbounds nuw i8, ptr %.1.i.i.i.i.i.i, i64 8 - br label %41 - -41: ; preds = %39, %._crit_edge.i.i.i.i.i.i - %.2.i.i.i.i.i.i = phi ptr [ %40, %39 ], [ %.029.lcssa.i.i.i.i.i.i, %._crit_edge.i.i.i.i.i.i ] + %37 = getelementptr inbounds nuw i8, ptr %0, i64 88 + %.val44.val.i.i.i.i.i.i = load ptr, ptr %37, align 8, !tbaa !181 + %38 = getelementptr inbounds nuw i8, ptr %0, i64 112 + %.val44.val48.i.i.i.i.i.i = load ptr, ptr %38, align 8, !tbaa !188 + %39 = tail call noundef zeroext i1 @_ZN4llvm15GISelAddressing12instMayAliasERKNS_12MachineInstrES3_RNS_19MachineRegisterInfoEPNS_9AAResultsE(ptr noundef nonnull align 8 dereferenceable(70) %1, ptr noundef nonnull align 8 dereferenceable(70) %.1.val.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(504) %.val44.val.i.i.i.i.i.i, ptr noundef %.val44.val48.i.i.i.i.i.i) + br i1 %39, label %"_ZN4llvm6any_ofIRNS_11SmallVectorIPNS_6GStoreELj6EEEZNS_12LoadStoreOpt29operationAliasesWithCandidateERNS_12MachineInstrERNS6_19StoreMergeCandidateEE3$_0EEbOT_T0_.exit", label %40 + +40: ; preds = %36 + %41 = getelementptr inbounds nuw i8, ptr %.1.i.i.i.i.i.i, i64 8 + br label %42 + +42: ; preds = %40, %._crit_edge.i.i.i.i.i.i + %.2.i.i.i.i.i.i = phi ptr [ %41, %39 ], [ %.029.lcssa.i.i.i.i.i.i, %._crit_edge.i.i.i.i.i.i ] %.2.val.i.i.i.i.i.i = load ptr, ptr %.2.i.i.i.i.i.i, align 8, !tbaa !266 - %42 = getelementptr inbounds nuw i8, ptr %0, i64 88 - %.val46.val.i.i.i.i.i.i = load ptr, ptr %42, align 8, !tbaa !181 - %43 = getelementptr inbounds nuw i8, ptr %0, i64 112 - %.val46.val47.i.i.i.i.i.i = load ptr, ptr %43, align 8, !tbaa !188 - %44 = tail call noundef zeroext i1 @_ZN4llvm15GISelAddressing12instMayAliasERKNS_12MachineInstrES3_RNS_19MachineRegisterInfoEPNS_9AAResultsE(ptr noundef nonnull align 8 dereferenceable(70) %1, ptr noundef nonnull align 8 dereferenceable(70) %.2.val.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(504) %.val46.val.i.i.i.i.i.i, ptr noundef %.val46.val47.i.i.i.i.i.i) - br i1 %44, label %"_ZN4llvm6any_ofIRNS_11SmallVectorIPNS_6GStoreELj6EEEZNS_12LoadStoreOpt29operationAliasesWithCandidateERNS_12MachineInstrERNS6_19StoreMergeCandidateEE3$_0EEbOT_T0_.exit", label %45 - -45: ; preds = %41, %._crit_edge.i.i.i.i.i.i + %43 = getelementptr inbounds nuw i8, ptr %0, i64 88 + %.val46.val.i.i.i.i.i.i = load ptr, ptr %43, align 8, !tbaa !181 + %44 = getelementptr inbounds nuw i8, ptr %0, i64 112 + %.val46.val47.i.i.i.i.i.i = load ptr, ptr %44, align 8, !tbaa !188 + %45 = tail call noundef zeroext i1 @_ZN4llvm15GISelAddressing12instMayAliasERKNS_12MachineInstrES3_RNS_19MachineRegisterInfoEPNS_9AAResultsE(ptr noundef nonnull align 8 dereferenceable(70) %1, ptr noundef nonnull align 8 dereferenceable(70) %.2.val.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(504) %.val46.val.i.i.i.i.i.i, ptr noundef %.val46.val47.i.i.i.i.i.i) + br i1 %45, label %"_ZN4llvm6any_ofIRNS_11SmallVectorIPNS_6GStoreELj6EEEZNS_12LoadStoreOpt29operationAliasesWithCandidateERNS_12MachineInstrERNS6_19StoreMergeCandidateEE3$_0EEbOT_T0_.exit", label %46 + +46: ; preds = %42, %._crit_edge.i.i.i.i.i.i br label %"_ZN4llvm6any_ofIRNS_11SmallVectorIPNS_6GStoreELj6EEEZNS_12LoadStoreOpt29operationAliasesWithCandidateERNS_12MachineInstrERNS6_19StoreMergeCandidateEE3$_0EEbOT_T0_.exit" "_ZN4llvm6any_ofIRNS_11SmallVectorIPNS_6GStoreELj6EEEZNS_12LoadStoreOpt29operationAliasesWithCandidateERNS_12MachineInstrERNS6_19StoreMergeCandidateEE3$_0EEbOT_T0_.exit.loopexit.split.loop.exit": ; preds = %16 - %46 = getelementptr inbounds nuw i8, ptr %.02964.i.i.i.i.i.i, i64 8 + %47 = getelementptr inbounds nuw i8, ptr %.02964.i.i.i.i.i.i, i64 8 br label %"_ZN4llvm6any_ofIRNS_11SmallVectorIPNS_6GStoreELj6EEEZNS_12LoadStoreOpt29operationAliasesWithCandidateERNS_12MachineInstrERNS6_19StoreMergeCandidateEE3$_0EEbOT_T0_.exit" "_ZN4llvm6any_ofIRNS_11SmallVectorIPNS_6GStoreELj6EEEZNS_12LoadStoreOpt29operationAliasesWithCandidateERNS_12MachineInstrERNS6_19StoreMergeCandidateEE3$_0EEbOT_T0_.exit.loopexit.split.loop.exit19": ; preds = %19 - %47 = getelementptr inbounds nuw i8, ptr %.02964.i.i.i.i.i.i, i64 16 + %48 = getelementptr inbounds nuw i8, ptr %.02964.i.i.i.i.i.i, i64 16 br label %"_ZN4llvm6any_ofIRNS_11SmallVectorIPNS_6GStoreELj6EEEZNS_12LoadStoreOpt29operationAliasesWithCandidateERNS_12MachineInstrERNS6_19StoreMergeCandidateEE3$_0EEbOT_T0_.exit" "_ZN4llvm6any_ofIRNS_11SmallVectorIPNS_6GStoreELj6EEEZNS_12LoadStoreOpt29operationAliasesWithCandidateERNS_12MachineInstrERNS6_19StoreMergeCandidateEE3$_0EEbOT_T0_.exit.loopexit.split.loop.exit21": ; preds = %22 - %48 = getelementptr inbounds nuw i8, ptr %.02964.i.i.i.i.i.i, i64 24 + %49 = getelementptr inbounds nuw i8, ptr %.02964.i.i.i.i.i.i, i64 24 br label %"_ZN4llvm6any_ofIRNS_11SmallVectorIPNS_6GStoreELj6EEEZNS_12LoadStoreOpt29operationAliasesWithCandidateERNS_12MachineInstrERNS6_19StoreMergeCandidateEE3$_0EEbOT_T0_.exit" -"_ZN4llvm6any_ofIRNS_11SmallVectorIPNS_6GStoreELj6EEEZNS_12LoadStoreOpt29operationAliasesWithCandidateERNS_12MachineInstrERNS6_19StoreMergeCandidateEE3$_0EEbOT_T0_.exit": ; preds = %14, %"_ZN4llvm6any_ofIRNS_11SmallVectorIPNS_6GStoreELj6EEEZNS_12LoadStoreOpt29operationAliasesWithCandidateERNS_12MachineInstrERNS6_19StoreMergeCandidateEE3$_0EEbOT_T0_.exit.loopexit.split.loop.exit", %"_ZN4llvm6any_ofIRNS_11SmallVectorIPNS_6GStoreELj6EEEZNS_12LoadStoreOpt29operationAliasesWithCandidateERNS_12MachineInstrERNS6_19StoreMergeCandidateEE3$_0EEbOT_T0_.exit.loopexit.split.loop.exit19", %"_ZN4llvm6any_ofIRNS_11SmallVectorIPNS_6GStoreELj6EEEZNS_12LoadStoreOpt29operationAliasesWithCandidateERNS_12MachineInstrERNS6_19StoreMergeCandidateEE3$_0EEbOT_T0_.exit.loopexit.split.loop.exit21", %29, %35, %41, %45 - %.028.i.i.i.i.i.i = phi ptr [ %9, %45 ], [ %.029.lcssa.i.i.i.i.i.i, %29 ], [ %.1.i.i.i.i.i.i, %35 ], [ %.2.i.i.i.i.i.i, %41 ], [ %46, %"_ZN4llvm6any_ofIRNS_11SmallVectorIPNS_6GStoreELj6EEEZNS_12LoadStoreOpt29operationAliasesWithCandidateERNS_12MachineInstrERNS6_19StoreMergeCandidateEE3$_0EEbOT_T0_.exit.loopexit.split.loop.exit" ], [ %47, %"_ZN4llvm6any_ofIRNS_11SmallVectorIPNS_6GStoreELj6EEEZNS_12LoadStoreOpt29operationAliasesWithCandidateERNS_12MachineInstrERNS6_19StoreMergeCandidateEE3$_0EEbOT_T0_.exit.loopexit.split.loop.exit19" ], [ %48, %"_ZN4llvm6any_ofIRNS_11SmallVectorIPNS_6GStoreELj6EEEZNS_12LoadStoreOpt29operationAliasesWithCandidateERNS_12MachineInstrERNS6_19StoreMergeCandidateEE3$_0EEbOT_T0_.exit.loopexit.split.loop.exit21" ], [ %.02964.i.i.i.i.i.i, %14 ] - %49 = icmp ne ptr %9, %.028.i.i.i.i.i.i - br label %50 +"_ZN4llvm6any_ofIRNS_11SmallVectorIPNS_6GStoreELj6EEEZNS_12LoadStoreOpt29operationAliasesWithCandidateERNS_12MachineInstrERNS6_19StoreMergeCandidateEE3$_0EEbOT_T0_.exit": ; preds = %14, %"_ZN4llvm6any_ofIRNS_11SmallVectorIPNS_6GStoreELj6EEEZNS_12LoadStoreOpt29operationAliasesWithCandidateERNS_12MachineInstrERNS6_19StoreMergeCandidateEE3$_0EEbOT_T0_.exit.loopexit.split.loop.exit", %"_ZN4llvm6any_ofIRNS_11SmallVectorIPNS_6GStoreELj6EEEZNS_12LoadStoreOpt29operationAliasesWithCandidateERNS_12MachineInstrERNS6_19StoreMergeCandidateEE3$_0EEbOT_T0_.exit.loopexit.split.loop.exit19", %"_ZN4llvm6any_ofIRNS_11SmallVectorIPNS_6GStoreELj6EEEZNS_12LoadStoreOpt29operationAliasesWithCandidateERNS_12MachineInstrERNS6_19StoreMergeCandidateEE3$_0EEbOT_T0_.exit.loopexit.split.loop.exit21", %30, %36, %42, %46 + %.028.i.i.i.i.i.i = phi ptr [ %9, %45 ], [ %.029.lcssa.i.i.i.i.i.i, %29 ], [ %.1.i.i.i.i.i.i, %35 ], [ %.2.i.i.i.i.i.i, %41 ], [ %47, %"_ZN4llvm6any_ofIRNS_11SmallVectorIPNS_6GStoreELj6EEEZNS_12LoadStoreOpt29operationAliasesWithCandidateERNS_12MachineInstrERNS6_19StoreMergeCandidateEE3$_0EEbOT_T0_.exit.loopexit.split.loop.exit" ], [ %48, %"_ZN4llvm6any_ofIRNS_11SmallVectorIPNS_6GStoreELj6EEEZNS_12LoadStoreOpt29operationAliasesWithCandidateERNS_12MachineInstrERNS6_19StoreMergeCandidateEE3$_0EEbOT_T0_.exit.loopexit.split.loop.exit19" ], [ %49, %"_ZN4llvm6any_ofIRNS_11SmallVectorIPNS_6GStoreELj6EEEZNS_12LoadStoreOpt29operationAliasesWithCandidateERNS_12MachineInstrERNS6_19StoreMergeCandidateEE3$_0EEbOT_T0_.exit.loopexit.split.loop.exit21" ], [ %.02964.i.i.i.i.i.i, %14 ] + %50 = icmp ne ptr %9, %.028.i.i.i.i.i.i + br label %51 -50: ; preds = %3, %"_ZN4llvm6any_ofIRNS_11SmallVectorIPNS_6GStoreELj6EEEZNS_12LoadStoreOpt29operationAliasesWithCandidateERNS_12MachineInstrERNS6_19StoreMergeCandidateEE3$_0EEbOT_T0_.exit" - %.0 = phi i1 [ %49, %"_ZN4llvm6any_ofIRNS_11SmallVectorIPNS_6GStoreELj6EEEZNS_12LoadStoreOpt29operationAliasesWithCandidateERNS_12MachineInstrERNS6_19StoreMergeCandidateEE3$_0EEbOT_T0_.exit" ], [ false, %3 ] +51: ; preds = %3, %"_ZN4llvm6any_ofIRNS_11SmallVectorIPNS_6GStoreELj6EEEZNS_12LoadStoreOpt29operationAliasesWithCandidateERNS_12MachineInstrERNS6_19StoreMergeCandidateEE3$_0EEbOT_T0_.exit" + %.0 = phi i1 [ %50, %"_ZN4llvm6any_ofIRNS_11SmallVectorIPNS_6GStoreELj6EEEZNS_12LoadStoreOpt29operationAliasesWithCandidateERNS_12MachineInstrERNS6_19StoreMergeCandidateEE3$_0EEbOT_T0_.exit" ], [ false, %3 ] ret i1 %.0 } diff --git a/bench/llvm/optimized/MicrosoftDemangle.ll b/bench/llvm/optimized/MicrosoftDemangle.ll index 5fffe51ebe6..4db7f3ae2a4 100644 --- a/bench/llvm/optimized/MicrosoftDemangle.ll +++ b/bench/llvm/optimized/MicrosoftDemangle.ll @@ -9366,37 +9366,37 @@ _ZN4llvm16itanium_demangle12OutputBufferlsEc.exit: ; preds = %204, %._ZN4llvm16i %.not15.i = icmp eq i32 %1, 0 br i1 %.not15.i, label %._crit_edge.i, label %.preheader.i -.loopexit.i: ; preds = %225 +.loopexit.i: ; preds = %223 %.not.i = icmp ult i32 %.11112.i, 16 br i1 %.not.i, label %._crit_edge.i, label %.preheader.i, !llvm.loop !156 .preheader.i: ; preds = %221, %.loopexit.i %.0917.i = phi i64 [ %indvars.iv.next.i, %.loopexit.i ], [ 15, %221 ] - %.01016.i = phi i32 [ %233, %.loopexit.i ], [ %1, %221 ] + %.01016.i = phi i32 [ %232, %.loopexit.i ], [ %1, %221 ] %sext.i = shl i64 %.0917.i, 32 %222 = ashr exact i64 %sext.i, 32 %223 = trunc i64 %.0917.i to i32 %224 = add i32 %223, -2 br label %225 -225: ; preds = %225, %.preheader.i +223: ; preds = %223, %.preheader.i %indvars.iv.i = phi i64 [ %222, %.preheader.i ], [ %indvars.iv.next.i, %225 ] - %.11112.i = phi i32 [ %.01016.i, %.preheader.i ], [ %233, %225 ] + %224 = phi i32 [ %.01016.i, %.preheader.i ], [ %233, %225 ] %indvars.iv.next.i = add nsw i64 %indvars.iv.i, -1 - %226 = getelementptr inbounds [17 x i8], ptr %3, i64 0, i64 %indvars.iv.i - %227 = trunc i32 %.11112.i to i8 - %228 = and i8 %227, 15 - %229 = icmp samesign ult i8 %228, 10 - %230 = or disjoint i8 %228, 48 - %231 = add nuw nsw i8 %228, 55 - %232 = select i1 %229, i8 %230, i8 %231 - store i8 %232, ptr %226, align 1, !tbaa !40 - %233 = lshr i32 %.11112.i, 4 + %225 = getelementptr inbounds [17 x i8], ptr %3, i64 0, i64 %indvars.iv.i + %226 = trunc i32 %.11112.i to i8 + %227 = and i8 %226, 15 + %228 = icmp samesign ult i8 %227, 10 + %229 = or disjoint i8 %227, 48 + %230 = add nuw nsw i8 %227, 55 + %231 = select i1 %228, i8 %229, i8 %230 + store i8 %231, ptr %225, align 1, !tbaa !40 + %232 = lshr i32 %.11112.i, 4 %lftr.wideiv = trunc i64 %indvars.iv.next.i to i32 %exitcond.not = icmp eq i32 %224, %lftr.wideiv br i1 %exitcond.not, label %.loopexit.i, label %225, !llvm.loop !157 -._crit_edge.i: ; preds = %.loopexit.i, %221 +._crit_edge.i:; preds = %.loopexit.i, %221 %.09.lcssa.i = phi i32 [ 15, %221 ], [ %224, %.loopexit.i ] %234 = add nsw i32 %.09.lcssa.i, -1 %235 = sext i32 %.09.lcssa.i to i64 diff --git a/bench/lua/optimized/llex.ll b/bench/lua/optimized/llex.ll index b256c3f5c53..f32783f4218 100644 --- a/bench/lua/optimized/llex.ll +++ b/bench/lua/optimized/llex.ll @@ -1108,14 +1108,14 @@ save.exit.i: ; preds = %301, %._crit_edge.i 322: ; preds = %320, %314 %323 = phi i32 [ %319, %314 ], [ %321, %320 ] store i32 %323, ptr %0, align 8, !tbaa !51 - %.not62162.i = icmp eq i32 %323, %10 - br i1 %.not62162.i, label %._crit_edge.i, label %.lr.ph163.i + %.not62161.i = icmp eq i32 %323, %10 + br i1 %.not62161.i, label %._crit_edge.i, label %.lr.ph162.i -.lr.ph163.i: ; preds = %322 +.lr.ph162.i: ; preds = %322 %324 = getelementptr inbounds nuw i8, ptr %0, i64 56 br label %325 -325: ; preds = %.loopexit.i, %.lr.ph163.i +325: ; preds = %.loopexit.i, %.lr.ph162.i %326 = phi i32 [ %323, %.lr.ph163.i ], [ %.pr.i, %.loopexit.i ] switch i32 %326, label %776 [ i32 -1, label %327 @@ -1310,7 +1310,7 @@ save.exit.i.i.i: ; preds = %387, %._crit_edge.i store i32 %407, ptr %0, align 8, !tbaa !51 switch i32 %407, label %408 [ i32 123, label %esccheck.exit.i.i.i - i32 -1, label %.loopexit111.i + i32 -1, label %.loopexit110.i ] 408: ; preds = %406 @@ -1338,9 +1338,9 @@ save.exit.i.i.i: ; preds = %387, %._crit_edge.i 420: ; preds = %418, %412 %421 = phi i32 [ %417, %412 ], [ %419, %418 ] store i32 %421, ptr %0, align 8, !tbaa !51 - br label %.loopexit111.i + br label %.loopexit110.i -.loopexit111.i: ; preds = %406, %420 +.loopexit110.i: ; preds = %406, %420 call fastcc void @lexerror(ptr noundef nonnull %0, ptr noundef nonnull @.str.51, i32 noundef 292) #7 unreachable @@ -1474,7 +1474,7 @@ esccheck.exit42.i.i.i: ; preds = %463 486: ; preds = %456 switch i32 %457, label %487 [ i32 125, label %esccheck.exit46.i.i.i - i32 -1, label %.loopexit112.i + i32 -1, label %.loopexit111.i ] 487: ; preds = %486 @@ -1502,9 +1502,9 @@ esccheck.exit42.i.i.i: ; preds = %463 499: ; preds = %497, %491 %500 = phi i32 [ %496, %491 ], [ %498, %497 ] store i32 %500, ptr %0, align 8, !tbaa !51 - br label %.loopexit112.i + br label %.loopexit111.i -.loopexit112.i: ; preds = %486, %499 +.loopexit111.i: ; preds = %486, %499 call fastcc void @lexerror(ptr noundef nonnull %0, ptr noundef nonnull @.str.53, i32 noundef 292) #7 unreachable @@ -1706,11 +1706,11 @@ utf8esc.exit.i: ; preds = %save.exit.i.i, %rea %598 = getelementptr inbounds [257 x i8], ptr @luai_ctype_, i64 0, i64 %597 %599 = load i8, ptr %598, align 1, !tbaa !13 %600 = and i8 %599, 8 - %.not66161.i = icmp eq i8 %600, 0 - br i1 %.not66161.i, label %.loopexit.i, label %.lr.ph.i + %.not66160.i = icmp eq i8 %600, 0 + br i1 %.not66160.i, label %.loopexit.i, label %.lr.ph.i .lr.ph.i: ; preds = %594, %inclinenumber.exit80.i - %601 = phi i32 [ %.pr110.i, %inclinenumber.exit80.i ], [ %595, %594 ] + %601 = phi i32 [ %.pr109.i, %inclinenumber.exit80.i ], [ %595, %594 ] switch i32 %601, label %636 [ i32 10, label %602 i32 13, label %602 @@ -1776,7 +1776,7 @@ utf8esc.exit.i: ; preds = %save.exit.i.i, %rea br label %631 631: ; preds = %629, %616, %614 - %.pr110194.i = phi i32 [ %630, %629 ], [ %601, %616 ], [ %615, %614 ] + %.pr109193.i = phi i32 [ %630, %629 ], [ %601, %616 ], [ %615, %614 ] %632 = load i32, ptr %9, align 4, !tbaa !26 %633 = add nsw i32 %632, 1 store i32 %633, ptr %9, align 4, !tbaa !26 @@ -1814,8 +1814,8 @@ utf8esc.exit.i: ; preds = %save.exit.i.i, %rea br label %inclinenumber.exit80.i inclinenumber.exit80.i: ; preds = %648, %631 - %.pr110.i = phi i32 [ %.pr110194.i, %631 ], [ %649, %648 ] - %650 = add nsw i32 %.pr110.i, 1 + %.pr109.i = phi i32 [ %.pr109193.i, %631 ], [ %649, %648 ] + %650 = add nsw i32 %.pr109.i, 1 %651 = sext i32 %650 to i64 %652 = getelementptr inbounds [257 x i8], ptr @luai_ctype_, i64 0, i64 %651 %653 = load i8, ptr %652, align 1, !tbaa !13 @@ -1911,13 +1911,13 @@ esccheck.exit.i: ; preds = %655, %717 %701 = call ptr @luaM_saferealloc_(ptr noundef %699, ptr noundef %700, i64 noundef %692, i64 noundef %698) #6 store ptr %701, ptr %687, align 8, !tbaa !32 store i64 %698, ptr %691, align 8, !tbaa !31 - %.pre15.i.i89.i = load i64, ptr %688, align 8, !tbaa !28 - %.pre16.i.i90.i = add i64 %.pre15.i.i89.i, 1 + %.pre15.i.i88.i = load i64, ptr %688, align 8, !tbaa !28 + %.pre16.i.i89.i = add i64 %.pre15.i.i88.i, 1 br label %save.exit.i86.i save.exit.i86.i: ; preds = %697, %._crit_edge.i.i84.i - %.pre-phi.i.i87.i = phi i64 [ %690, %._crit_edge.i.i84.i ], [ %.pre16.i.i90.i, %697 ] - %702 = phi i64 [ %689, %._crit_edge.i.i84.i ], [ %.pre15.i.i89.i, %697 ] + %.pre-phi.i.i87.i = phi i64 [ %690, %._crit_edge.i.i84.i ], [ %.pre16.i.i89.i, %697 ] + %702 = phi i64 [ %689, %._crit_edge.i.i84.i ], [ %.pre15.i.i88.i, %697 ] %703 = phi ptr [ %.pre.i.i85.i, %._crit_edge.i.i84.i ], [ %701, %697 ] %704 = trunc i32 %677 to i8 store i64 %.pre-phi.i.i87.i, ptr %688, align 8, !tbaa !28 @@ -1947,8 +1947,8 @@ save.exit.i86.i: ; preds = %697, %._crit_edge.i %718 = phi i32 [ %714, %709 ], [ %716, %715 ] store i32 %718, ptr %0, align 8, !tbaa !51 %719 = add nuw nsw i32 %.01519.i.i, 1 - %exitcond.not.i88.i = icmp eq i32 %719, 3 - br i1 %exitcond.not.i88.i, label %.critedge.i.i, label %esccheck.exit.i + %exitcond.not.i.i = icmp eq i32 %719, 3 + br i1 %exitcond.not.i.i, label %.critedge.i.i, label %esccheck.exit.i .critedge.i.i: ; preds = %717, %esccheck.exit.i %720 = phi i32 [ %718, %717 ], [ %677, %esccheck.exit.i ] @@ -2038,11 +2038,11 @@ inclinenumber.exit.i: ; preds = %755, %readdecesc.ex %761 = getelementptr inbounds nuw i8, ptr %757, i64 16 %762 = load i64, ptr %761, align 8, !tbaa !31 %763 = icmp ugt i64 %759, %762 - br i1 %763, label %764, label %._crit_edge.i91.i + br i1 %763, label %764, label %._crit_edge.i90.i -._crit_edge.i91.i: ; preds = %inclinenumber.exit.i - %.pre.i92.i = load ptr, ptr %757, align 8, !tbaa !32 - br label %save.exit96.i +._crit_edge.i90.i: ; preds = %inclinenumber.exit.i + %.pre.i91.i = load ptr, ptr %757, align 8, !tbaa !32 + br label %save.exit95.i 764: ; preds = %inclinenumber.exit.i %765 = icmp ugt i64 %762, 4611686018427387902 @@ -2059,16 +2059,16 @@ inclinenumber.exit.i: ; preds = %755, %readdecesc.ex %771 = call ptr @luaM_saferealloc_(ptr noundef %769, ptr noundef %770, i64 noundef %762, i64 noundef %768) #6 store ptr %771, ptr %757, align 8, !tbaa !32 store i64 %768, ptr %761, align 8, !tbaa !31 - %.pre15.i94.i = load i64, ptr %758, align 8, !tbaa !28 - %.pre16.i95.i = add i64 %.pre15.i94.i, 1 - br label %save.exit96.i - -save.exit96.i: ; preds = %767, %._crit_edge.i91.i - %.pre-phi.i93.i = phi i64 [ %759, %._crit_edge.i91.i ], [ %.pre16.i95.i, %767 ] - %772 = phi i64 [ %760, %._crit_edge.i91.i ], [ %.pre15.i94.i, %767 ] - %773 = phi ptr [ %.pre.i92.i, %._crit_edge.i91.i ], [ %771, %767 ] + %.pre15.i93.i = load i64, ptr %758, align 8, !tbaa !28 + %.pre16.i94.i = add i64 %.pre15.i93.i, 1 + br label %save.exit95.i + +save.exit95.i: ; preds = %767, %._crit_edge.i90.i + %.pre-phi.i92.i = phi i64 [ %759, %._crit_edge.i91.i ], [ %.pre16.i94.i, %767 ] + %772 = phi i64 [ %760, %._crit_edge.i91.i ], [ %.pre15.i93.i, %767 ] + %773 = phi ptr [ %.pre.i91.i, %._crit_edge.i91.i ], [ %771, %767 ] %774 = trunc i32 %.1.i to i8 - store i64 %.pre-phi.i93.i, ptr %758, align 8, !tbaa !28 + store i64 %.pre-phi.i92.i, ptr %758, align 8, !tbaa !28 %775 = getelementptr inbounds nuw i8, ptr %773, i64 %772 store i8 %774, ptr %775, align 1, !tbaa !13 br label %.loopexit.i @@ -2081,11 +2081,11 @@ save.exit96.i: ; preds = %767, %._crit_edge.i %781 = getelementptr inbounds nuw i8, ptr %777, i64 16 %782 = load i64, ptr %781, align 8, !tbaa !31 %783 = icmp ugt i64 %780, %782 - br i1 %783, label %784, label %._crit_edge.i97.i + br i1 %783, label %784, label %._crit_edge.i96.i -._crit_edge.i97.i: ; preds = %776 - %.pre.i98.i = load ptr, ptr %777, align 8, !tbaa !32 - br label %save.exit102.i +._crit_edge.i96.i: ; preds = %776 + %.pre.i97.i = load ptr, ptr %777, align 8, !tbaa !32 + br label %save.exit101.i 784: ; preds = %776 %785 = icmp ugt i64 %782, 4611686018427387902 @@ -2102,16 +2102,16 @@ save.exit96.i: ; preds = %767, %._crit_edge.i %791 = call ptr @luaM_saferealloc_(ptr noundef %789, ptr noundef %790, i64 noundef %782, i64 noundef %788) #6 store ptr %791, ptr %777, align 8, !tbaa !32 store i64 %788, ptr %781, align 8, !tbaa !31 - %.pre15.i100.i = load i64, ptr %778, align 8, !tbaa !28 - %.pre16.i101.i = add i64 %.pre15.i100.i, 1 - br label %save.exit102.i - -save.exit102.i: ; preds = %787, %._crit_edge.i97.i - %.pre-phi.i99.i = phi i64 [ %780, %._crit_edge.i97.i ], [ %.pre16.i101.i, %787 ] - %792 = phi i64 [ %779, %._crit_edge.i97.i ], [ %.pre15.i100.i, %787 ] - %793 = phi ptr [ %.pre.i98.i, %._crit_edge.i97.i ], [ %791, %787 ] + %.pre15.i99.i = load i64, ptr %778, align 8, !tbaa !28 + %.pre16.i100.i = add i64 %.pre15.i99.i, 1 + br label %save.exit101.i + +save.exit101.i: ; preds = %787, %._crit_edge.i96.i + %.pre-phi.i98.i = phi i64 [ %780, %._crit_edge.i97.i ], [ %.pre16.i100.i, %787 ] + %792 = phi i64 [ %779, %._crit_edge.i97.i ], [ %.pre15.i99.i, %787 ] + %793 = phi ptr [ %.pre.i97.i, %._crit_edge.i97.i ], [ %791, %787 ] %794 = trunc i32 %326 to i8 - store i64 %.pre-phi.i99.i, ptr %778, align 8, !tbaa !28 + store i64 %.pre-phi.i98.i, ptr %778, align 8, !tbaa !28 %795 = getelementptr inbounds nuw i8, ptr %793, i64 %792 store i8 %794, ptr %795, align 1, !tbaa !13 %796 = load ptr, ptr %8, align 8, !tbaa !53 @@ -2121,7 +2121,7 @@ save.exit102.i: ; preds = %787, %._crit_edge.i %.not69.i = icmp eq i64 %797, 0 br i1 %.not69.i, label %805, label %799 -799: ; preds = %save.exit102.i +799: ; preds = %save.exit101.i %800 = getelementptr inbounds nuw i8, ptr %796, i64 8 %801 = load ptr, ptr %800, align 8, !tbaa !61 %802 = getelementptr inbounds nuw i8, ptr %801, i64 1 @@ -2130,7 +2130,7 @@ save.exit102.i: ; preds = %787, %._crit_edge.i %804 = zext i8 %803 to i32 br label %807 -805: ; preds = %save.exit102.i +805: ; preds = %save.exit101.i %806 = call i32 @luaZ_fill(ptr noundef nonnull %796) #6 br label %807 @@ -2139,7 +2139,7 @@ save.exit102.i: ; preds = %787, %._crit_edge.i store i32 %808, ptr %0, align 8, !tbaa !51 br label %.loopexit.i -.loopexit.i: ; preds = %inclinenumber.exit80.i, %807, %save.exit96.i, %594, %utf8esc.exit.i, %359 +.loopexit.i: ; preds = %inclinenumber.exit80.i, %807, %save.exit95.i, %594, %utf8esc.exit.i, %359 %.pr.i = load i32, ptr %0, align 8, !tbaa !51 %.not62.i = icmp eq i32 %.pr.i, %10 br i1 %.not62.i, label %._crit_edge.i, label %325 @@ -2152,11 +2152,11 @@ save.exit102.i: ; preds = %787, %._crit_edge.i %813 = getelementptr inbounds nuw i8, ptr %809, i64 16 %814 = load i64, ptr %813, align 8, !tbaa !31 %815 = icmp ugt i64 %812, %814 - br i1 %815, label %816, label %._crit_edge.i103.i + br i1 %815, label %816, label %._crit_edge.i102.i -._crit_edge.i103.i: ; preds = %._crit_edge.i - %.pre.i104.i = load ptr, ptr %809, align 8, !tbaa !32 - br label %save.exit108.i +._crit_edge.i102.i: ; preds = %._crit_edge.i + %.pre.i103.i = load ptr, ptr %809, align 8, !tbaa !32 + br label %save.exit107.i 816: ; preds = %._crit_edge.i %817 = icmp ugt i64 %814, 4611686018427387902 @@ -2174,15 +2174,15 @@ save.exit102.i: ; preds = %787, %._crit_edge.i %824 = call ptr @luaM_saferealloc_(ptr noundef %822, ptr noundef %823, i64 noundef %814, i64 noundef %820) #6 store ptr %824, ptr %809, align 8, !tbaa !32 store i64 %820, ptr %813, align 8, !tbaa !31 - %.pre15.i106.i = load i64, ptr %810, align 8, !tbaa !28 - %.pre16.i107.i = add i64 %.pre15.i106.i, 1 - br label %save.exit108.i - -save.exit108.i: ; preds = %819, %._crit_edge.i103.i - %.pre-phi.i105.i = phi i64 [ %812, %._crit_edge.i103.i ], [ %.pre16.i107.i, %819 ] - %825 = phi i64 [ %811, %._crit_edge.i103.i ], [ %.pre15.i106.i, %819 ] - %826 = phi ptr [ %.pre.i104.i, %._crit_edge.i103.i ], [ %824, %819 ] - store i64 %.pre-phi.i105.i, ptr %810, align 8, !tbaa !28 + %.pre15.i105.i = load i64, ptr %810, align 8, !tbaa !28 + %.pre16.i106.i = add i64 %.pre15.i105.i, 1 + br label %save.exit107.i + +save.exit107.i: ; preds = %819, %._crit_edge.i102.i + %.pre-phi.i104.i = phi i64 [ %812, %._crit_edge.i103.i ], [ %.pre16.i106.i, %819 ] + %825 = phi i64 [ %811, %._crit_edge.i103.i ], [ %.pre15.i105.i, %819 ] + %826 = phi ptr [ %.pre.i103.i, %._crit_edge.i103.i ], [ %824, %819 ] + store i64 %.pre-phi.i104.i, ptr %810, align 8, !tbaa !28 %827 = getelementptr inbounds nuw i8, ptr %826, i64 %825 store i8 %309, ptr %827, align 1, !tbaa !13 %828 = load ptr, ptr %8, align 8, !tbaa !53 @@ -2192,7 +2192,7 @@ save.exit108.i: ; preds = %819, %._crit_edge.i %.not63.i = icmp eq i64 %829, 0 br i1 %.not63.i, label %837, label %831 -831: ; preds = %save.exit108.i +831: ; preds = %save.exit107.i %832 = getelementptr inbounds nuw i8, ptr %828, i64 8 %833 = load ptr, ptr %832, align 8, !tbaa !61 %834 = getelementptr inbounds nuw i8, ptr %833, i64 1 @@ -2201,7 +2201,7 @@ save.exit108.i: ; preds = %819, %._crit_edge.i %836 = zext i8 %835 to i32 br label %839 -837: ; preds = %save.exit108.i +837: ; preds = %save.exit107.i %838 = call i32 @luaZ_fill(ptr noundef nonnull %828) #6 br label %839 @@ -2261,9 +2261,9 @@ save.exit108.i: ; preds = %819, %._crit_edge.i br label %read_string.exit read_string.exit: ; preds = %856, %873 - %.0.i.i109.i = phi ptr [ %849, %873 ], [ %857, %856 ] + %.0.i.i108.i = phi ptr [ %849, %873 ], [ %857, %856 ] call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) #6 - store ptr %.0.i.i109.i, ptr %1, align 8, !tbaa !13 + store ptr %.0.i.i108.i, ptr %1, align 8, !tbaa !13 br label %.loopexit 876: ; preds = %.critedge diff --git a/bench/lua/optimized/ltablib.ll b/bench/lua/optimized/ltablib.ll index 0ee683b395b..88a17342243 100644 --- a/bench/lua/optimized/ltablib.ll +++ b/bench/lua/optimized/ltablib.ll @@ -164,20 +164,20 @@ define internal i32 @tinsert(ptr noundef %0) #0 { %13 = add nsw i64 %.023, -1 %14 = tail call i32 @lua_geti(ptr noundef %0, i32 noundef 1, i64 noundef %13) #3 tail call void @lua_seti(ptr noundef %0, i32 noundef 1, i64 noundef %.023) #3 - %exitcond.not = icmp eq i64 %13, %6 - br i1 %exitcond.not, label %.loopexit, label %.lr.ph + %15 = icmp eq i64 %13, %6 + br i1 %15, label %.loopexit, label %.lr.ph -15: ; preds = %1 - %16 = tail call i32 (ptr, ptr, ...) @luaL_error(ptr noundef %0, ptr noundef nonnull @.str.15) #3 - br label %17 +16: ; preds = %1 + %17 = tail call i32 (ptr, ptr, ...) @luaL_error(ptr noundef %0, ptr noundef nonnull @.str.15) #3 + br label %18 .loopexit: ; preds = %.lr.ph, %11, %1 %.020 = phi i64 [ %3, %1 ], [ %6, %11 ], [ %6, %.lr.ph ] tail call void @lua_seti(ptr noundef %0, i32 noundef 1, i64 noundef %.020) #3 - br label %17 + br label %18 -17: ; preds = %.loopexit, %15 - %.021 = phi i32 [ %16, %15 ], [ 0, %.loopexit ] +18: ; preds = %.loopexit, %16 + %.021 = phi i32 [ %17, %15 ], [ 0, %.loopexit ] ret i32 %.021 } @@ -198,7 +198,7 @@ define internal noundef i32 @tpack(ptr noundef %0) #0 { tail call void @lua_seti(ptr noundef %0, i32 noundef 1, i64 noundef %indvars.iv) #3 %indvars.iv.next = add nsw i64 %indvars.iv, -1 %5 = and i64 %indvars.iv.next, 4294967295 - %exitcond.not = icmp eq i64 %5, 0 + %15 = icmp eq i64 %5, 0 br i1 %exitcond.not, label %._crit_edge, label %.lr.ph ._crit_edge: ; preds = %.lr.ph, %1 @@ -409,8 +409,8 @@ checktab.exit55: ; preds = %checktab.exit, %22, %46 = add nsw i64 %.059, %4 tail call void @lua_seti(ptr noundef %0, i32 noundef %7, i64 noundef %46) #3 %47 = add nuw i64 %.059, 1 - %exitcond62.not = icmp eq i64 %47, %43 - br i1 %exitcond62.not, label %.loopexit, label %.lr.ph60 + %exitcond.not = icmp eq i64 %47, %43 + br i1 %exitcond.not, label %.loopexit, label %.lr.ph60 48: ; preds = %39, %38 %49 = icmp sgt i64 %32, -1 @@ -423,8 +423,8 @@ checktab.exit55: ; preds = %checktab.exit, %22, %52 = add nsw i64 %.157, %4 tail call void @lua_seti(ptr noundef %0, i32 noundef %7, i64 noundef %52) #3 %53 = add i64 %.157, -1 - %exitcond.not = icmp eq i64 %.157, 0 - br i1 %exitcond.not, label %.loopexit, label %.lr.ph + %.not63 = icmp eq i64 %.157, 0 + br i1 %.not63, label %.loopexit, label %.lr.ph .loopexit: ; preds = %.lr.ph, %.lr.ph60, %48, %41, %checktab.exit55 tail call void @lua_pushvalue(ptr noundef %0, i32 noundef %7) #3 diff --git a/bench/lua/optimized/lutf8lib.ll b/bench/lua/optimized/lutf8lib.ll index 06cee721f7a..85fa7ee3dd4 100644 --- a/bench/lua/optimized/lutf8lib.ll +++ b/bench/lua/optimized/lutf8lib.ll @@ -88,7 +88,7 @@ u_posrelat.exit.thread: ; preds = %12, %u_posrelat.exi 23: ; preds = %u_posrelat.exit.thread, %u_posrelat.exit %.056 = phi i64 [ %.055, %u_posrelat.exit.thread ], [ %.0, %u_posrelat.exit ] %24 = icmp eq i64 %4, 0 - br i1 %24, label %.preheader57, label %31 + br i1 %24, label %.preheader57, label %32 .preheader57: ; preds = %23 %25 = icmp sgt i64 %.056, 0 @@ -103,34 +103,34 @@ u_posrelat.exit.thread: ; preds = %12, %u_posrelat.exi 29: ; preds = %.lr.ph %30 = add i64 %.175, -1 - %exitcond84.not = icmp eq i64 %30, 0 - br i1 %exitcond84.not, label %.critedge.thread, label %.lr.ph + %31 = icmp eq i64 %30, 0 + br i1 %31, label %.critedge.thread, label %.lr.ph -31: ; preds = %23 - %32 = getelementptr inbounds i8, ptr %3, i64 %.056 - %33 = load i8, ptr %32, align 1, !tbaa !9 - %34 = icmp slt i8 %33, -64 - br i1 %34, label %35, label %37 +32: ; preds = %23 + %33 = getelementptr inbounds i8, ptr %3, i64 %.056 + %34 = load i8, ptr %33, align 1, !tbaa !9 + %35 = icmp slt i8 %34, -64 + br i1 %35, label %36, label %38 -35: ; preds = %31 - %36 = call i32 (ptr, ptr, ...) @luaL_error(ptr noundef %0, ptr noundef nonnull @.str.8) #3 - br label %72 +36: ; preds = %32 + %37 = call i32 (ptr, ptr, ...) @luaL_error(ptr noundef %0, ptr noundef nonnull @.str.8) #3 + br label %70 -37: ; preds = %31 - %38 = icmp slt i64 %4, 0 - br i1 %38, label %.preheader59, label %.preheader63 +38: ; preds = %32 + %39 = icmp slt i64 %4, 0 + br i1 %39, label %.preheader59, label %.preheader63 -.preheader63: ; preds = %37 - %39 = load i64, ptr %2, align 8 +.preheader63: ; preds = %38 + %40 = load i64, ptr %2, align 8 %.24667 = add nsw i64 %4, -1 - %40 = icmp ne i64 %4, 1 - %41 = icmp slt i64 %.056, %39 - %42 = select i1 %40, i1 %41, i1 false - br i1 %42, label %.preheader61, label %.critedge + %41 = icmp ne i64 %4, 1 + %42 = icmp slt i64 %.056, %40 + %43 = select i1 %41, i1 %42, i1 false + br i1 %43, label %.preheader61, label %.critedge -.preheader59: ; preds = %37 - %43 = icmp sgt i64 %.056, 0 - br i1 %43, label %.preheader58, label %.critedge.thread92 +.preheader59: ; preds = %38 + %44 = icmp sgt i64 %.056, 0 + br i1 %44, label %.preheader58, label %.critedge.thread91 .preheader58: ; preds = %.preheader59, %.critedge2 %.372 = phi i64 [ %49, %.critedge2 ], [ %.056, %.preheader59 ] @@ -141,8 +141,8 @@ u_posrelat.exit.thread: ; preds = %12, %u_posrelat.exi 45: ; preds = %.preheader58, %48 %.4 = phi i64 [ %49, %48 ], [ %.372, %.preheader58 ] - %exitcond.not = icmp eq i64 %.4, %umin - br i1 %exitcond.not, label %.critedge2.thread, label %48 + %46 = icmp eq i64 %.4, %umin + br i1 %46, label %.critedge2.thread, label %48 .critedge2.thread: ; preds = %45 %not..le = xor i1 %44, true @@ -164,68 +164,68 @@ u_posrelat.exit.thread: ; preds = %12, %u_posrelat.exi %56 = and i1 %54, %55 br i1 %56, label %.preheader58, label %.critedge -.loopexit62: ; preds = %60 +.loopexit62: ; preds = %58 %.246 = add nsw i64 %.24669, -1 - %57 = icmp samesign ugt i64 %.24669, 1 - %58 = icmp slt i64 %61, %39 - %59 = select i1 %57, i1 %58, i1 false - br i1 %59, label %.preheader61, label %.critedge + %55 = icmp samesign ugt i64 %.24669, 1 + %56 = icmp slt i64 %59, %40 + %57 = select i1 %55, i1 %56, i1 false + br i1 %57, label %.preheader61, label %.critedge .preheader61: ; preds = %.preheader63, %.loopexit62 %.24669 = phi i64 [ %.246, %.loopexit62 ], [ %.24667, %.preheader63 ] - %.568 = phi i64 [ %61, %.loopexit62 ], [ %.056, %.preheader63 ] - br label %60 + %.568 = phi i64 [ %59, %.loopexit62 ], [ %.056, %.preheader63 ] + br label %58 -60: ; preds = %.preheader61, %60 - %.6 = phi i64 [ %61, %60 ], [ %.568, %.preheader61 ] - %61 = add nsw i64 %.6, 1 - %62 = getelementptr inbounds i8, ptr %3, i64 %61 - %63 = load i8, ptr %62, align 1, !tbaa !9 - %64 = icmp slt i8 %63, -64 - br i1 %64, label %60, label %.loopexit62 +58: ; preds = %.preheader61, %58 + %.6 = phi i64 [ %59, %60 ], [ %.568, %.preheader61 ] + %59 = add nsw i64 %.6, 1 + %60 = getelementptr inbounds i8, ptr %3, i64 %59 + %61 = load i8, ptr %60, align 1, !tbaa !9 + %62 = icmp slt i8 %61, -64 + br i1 %62, label %58, label %.loopexit62 .critedge: ; preds = %.loopexit62, %.critedge2, %.critedge2.thread, %.preheader63 %.044 = phi i64 [ %.24667, %.preheader63 ], [ %47, %.critedge2.thread ], [ %53, %.critedge2 ], [ %.246, %.loopexit62 ] - %.2 = phi i64 [ %.056, %.preheader63 ], [ %46, %.critedge2.thread ], [ %49, %.critedge2 ], [ %61, %.loopexit62 ] + %.2 = phi i64 [ %.056, %.preheader63 ], [ %46, %.critedge2.thread ], [ %49, %.critedge2 ], [ %59, %.loopexit62 ] %.not = icmp eq i64 %.044, 0 - br i1 %.not, label %.critedge.thread, label %.critedge.thread92 + br i1 %.not, label %.critedge.thread, label %.critedge.thread91 -.critedge.thread92: ; preds = %.preheader59, %.critedge +.critedge.thread91: ; preds = %.preheader59, %.critedge call void @lua_pushnil(ptr noundef %0) #3 - br label %72 + br label %70 .critedge.thread: ; preds = %29, %.lr.ph, %.preheader57, %.critedge - %.291 = phi i64 [ %.2, %.critedge ], [ %.056, %.preheader57 ], [ 0, %29 ], [ %.175, %.lr.ph ] - %65 = add nsw i64 %.291, 1 - call void @lua_pushinteger(ptr noundef %0, i64 noundef %65) #3 - %66 = getelementptr inbounds i8, ptr %3, i64 %.291 - %67 = load i8, ptr %66, align 1, !tbaa !9 - %.not52 = icmp sgt i8 %67, -1 + %.290 = phi i64 [ %.2, %.critedge ], [ %.056, %.preheader57 ], [ 0, %29 ], [ %.175, %.lr.ph ] + %63 = add nsw i64 %.290, 1 + call void @lua_pushinteger(ptr noundef %0, i64 noundef %63) #3 + %64 = getelementptr inbounds i8, ptr %3, i64 %.290 + %65 = load i8, ptr %64, align 1, !tbaa !9 + %.not52 = icmp sgt i8 %65, -1 br i1 %.not52, label %.loopexit, label %.preheader .preheader: ; preds = %.critedge.thread %invariant.gep = getelementptr i8, ptr %3, i64 1 - br label %68 + br label %66 -68: ; preds = %.preheader, %68 - %.8 = phi i64 [ %69, %68 ], [ %.291, %.preheader ] - %69 = add nsw i64 %.8, 1 - %gep = getelementptr i8, ptr %invariant.gep, i64 %69 - %70 = load i8, ptr %gep, align 1, !tbaa !9 - %71 = icmp slt i8 %70, -64 - br i1 %71, label %68, label %.loopexit.loopexit +66: ; preds = %.preheader, %66 + %.8 = phi i64 [ %67, %68 ], [ %.290, %.preheader ] + %67 = add nsw i64 %.8, 1 + %gep = getelementptr i8, ptr %invariant.gep, i64 %67 + %68 = load i8, ptr %gep, align 1, !tbaa !9 + %69 = icmp slt i8 %68, -64 + br i1 %69, label %66, label %.loopexit.loopexit -.loopexit.loopexit: ; preds = %68 +.loopexit.loopexit: ; preds = %66 %.pre = add nsw i64 %.8, 2 br label %.loopexit .loopexit: ; preds = %.loopexit.loopexit, %.critedge.thread - %.pre-phi = phi i64 [ %.pre, %.loopexit.loopexit ], [ %65, %.critedge.thread ] + %.pre-phi = phi i64 [ %.pre, %.loopexit.loopexit ], [ %63, %.critedge.thread ] call void @lua_pushinteger(ptr noundef %0, i64 noundef %.pre-phi) #3 - br label %72 + br label %70 -72: ; preds = %.loopexit, %.critedge.thread92, %35 - %.047 = phi i32 [ 1, %.critedge.thread92 ], [ 2, %.loopexit ], [ %36, %35 ] +70: ; preds = %.loopexit, %.critedge.thread91, %36 + %.047 = phi i32 [ 1, %.critedge.thread92 ], [ 2, %.loopexit ], [ %37, %35 ] call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2) #3 ret i32 %.047 } diff --git a/bench/lvgl/optimized/lv_buttonmatrix.ll b/bench/lvgl/optimized/lv_buttonmatrix.ll index 9dc92cfbf47..6c2949551a5 100644 --- a/bench/lvgl/optimized/lv_buttonmatrix.ll +++ b/bench/lvgl/optimized/lv_buttonmatrix.ll @@ -273,17 +273,17 @@ has_popovers_in_top_row.exit: ; preds = %32 %106 = load i8, ptr %105, align 4 %107 = and i8 %106, 1 %.not329 = icmp eq i8 %107, 0 - %.pre438 = load i32, ptr %85, align 8, !tbaa !18 + %.pre436 = load i32, ptr %85, align 8, !tbaa !18 br i1 %.not329, label %109, label %108 108: ; preds = %104 - tail call fastcc void @make_one_button_checked(ptr noundef nonnull %10, i32 noundef %.pre438) + tail call fastcc void @make_one_button_checked(ptr noundef nonnull %10, i32 noundef %.pre436) %.pre = load ptr, ptr %88, align 8, !tbaa !20 - %.pre437 = load i32, ptr %85, align 8, !tbaa !18 + %.pre435 = load i32, ptr %85, align 8, !tbaa !18 br label %109 109: ; preds = %104, %108, %87 - %110 = phi i32 [ %.pre438, %104 ], [ %.pre437, %108 ], [ %86, %87 ] + %110 = phi i32 [ %.pre436, %104 ], [ %.pre435, %108 ], [ %86, %87 ] %111 = phi ptr [ %89, %104 ], [ %.pre, %108 ], [ %89, %87 ] %112 = zext i32 %110 to i64 %113 = getelementptr inbounds nuw i32, ptr %111, i64 %112 @@ -304,11 +304,11 @@ has_popovers_in_top_row.exit: ; preds = %32 br i1 %.not330, label %._crit_edge, label %.critedge337 ._crit_edge: ; preds = %118 - %.pre439 = load i32, ptr %85, align 8, !tbaa !18 + %.pre437 = load i32, ptr %85, align 8, !tbaa !18 br label %120 120: ; preds = %._crit_edge, %109, %84 - %121 = phi i32 [ %.pre439, %._crit_edge ], [ %110, %109 ], [ 65535, %84 ] + %121 = phi i32 [ %.pre437, %._crit_edge ], [ %110, %109 ], [ 65535, %84 ] call fastcc void @invalidate_button_area(ptr noundef nonnull %10, i32 noundef %121) br label %.critedge337 @@ -466,7 +466,7 @@ has_popovers_in_top_row.exit.thread: ; preds = %29, %20, %.lr.ph.i, ] ..critedge340_crit_edge: ; preds = %180 - %.pre441 = load i32, ptr %181, align 8, !tbaa !18 + %.pre439 = load i32, ptr %181, align 8, !tbaa !18 br label %.critedge340 184: ; preds = %180 @@ -480,13 +480,13 @@ has_popovers_in_top_row.exit.thread: ; preds = %29, %20, %.lr.ph.i, %spec.store.select341 = select i1 %.not322, i32 %storemerge321, i32 0 store i32 %spec.store.select341, ptr %181, align 8 %190 = getelementptr inbounds nuw i8, ptr %10, i64 80 - %.pre440 = load ptr, ptr %190, align 8, !tbaa !20 + %.pre438 = load ptr, ptr %190, align 8, !tbaa !20 br label %191 191: ; preds = %.critedge18, %184 %192 = phi i32 [ %spec.store.select, %.critedge18 ], [ %spec.store.select341, %184 ] %193 = zext i32 %192 to i64 - %194 = getelementptr inbounds nuw i32, ptr %.pre440, i64 %193 + %194 = getelementptr inbounds nuw i32, ptr %.pre438, i64 %193 %195 = load i32, ptr %194, align 4, !tbaa !27 %196 = and i32 %195, 80 %or.cond377.not = icmp eq i32 %196, 0 @@ -612,8 +612,8 @@ has_popovers_in_top_row.exit.thread: ; preds = %29, %20, %.lr.ph.i, br label %255 255: ; preds = %.lr.ph412, %271 - %indvars.iv432 = phi i64 [ %251, %.lr.ph412 ], [ %indvars.iv.next433, %271 ] - %256 = getelementptr inbounds nuw %struct.lv_area_t, ptr %250, i64 %indvars.iv432 + %indvars.iv431 = phi i64 [ %251, %.lr.ph412 ], [ %indvars.iv.next432, %271 ] + %256 = getelementptr inbounds nuw %struct.lv_area_t, ptr %250, i64 %indvars.iv431 %257 = getelementptr inbounds nuw i8, ptr %256, i64 4 %258 = load i32, ptr %257, align 4, !tbaa !34 %259 = icmp sgt i32 %258, %253 @@ -633,20 +633,20 @@ has_popovers_in_top_row.exit.thread: ; preds = %29, %20, %.lr.ph.i, 266: ; preds = %262 %267 = load ptr, ptr %254, align 8, !tbaa !20 - %268 = getelementptr inbounds nuw i32, ptr %267, i64 %indvars.iv432 + %268 = getelementptr inbounds nuw i32, ptr %267, i64 %indvars.iv431 %269 = load i32, ptr %268, align 4, !tbaa !27 %270 = and i32 %269, 80 %or.cond383.not = icmp eq i32 %270, 0 br i1 %or.cond383.not, label %272, label %271 271: ; preds = %255, %260, %262, %266 - %indvars.iv.next433 = add nuw nsw i64 %indvars.iv432, 1 - %lftr.wideiv435 = trunc i64 %indvars.iv.next433 to i32 - %exitcond436.not = icmp eq i32 %248, %lftr.wideiv435 - br i1 %exitcond436.not, label %.critedge340, label %255, !llvm.loop !36 + %indvars.iv.next432 = add nuw nsw i64 %indvars.iv431, 1 + %lftr.wideiv = trunc i64 %indvars.iv.next432 to i32 + %exitcond434.not = icmp eq i32 %248, %lftr.wideiv + br i1 %exitcond434.not, label %.critedge340, label %255, !llvm.loop !36 272: ; preds = %266 - %273 = trunc nuw i64 %indvars.iv432 to i32 + %273 = trunc nuw i64 %indvars.iv431 to i32 store i32 %273, ptr %181, align 8, !tbaa !18 br label %.critedge340 @@ -750,7 +750,7 @@ has_popovers_in_top_row.exit.thread: ; preds = %29, %20, %.lr.ph.i, br label %.critedge340 .critedge340: ; preds = %326, %283, %271, %228, %208, %191, %..critedge340_crit_edge, %292, %237, %291, %328, %236, %272, %218, %199 - %331 = phi i32 [ %.pre441, %..critedge340_crit_edge ], [ %301, %292 ], [ %246, %237 ], [ 65535, %291 ], [ %330, %328 ], [ 65535, %236 ], [ %273, %272 ], [ 65535, %218 ], [ 65535, %199 ], [ %192, %191 ], [ %209, %208 ], [ %229, %228 ], [ %246, %271 ], [ %284, %283 ], [ %301, %326 ] + %331 = phi i32 [ %.pre439, %..critedge340_crit_edge ], [ %301, %292 ], [ %246, %237 ], [ 65535, %291 ], [ %330, %328 ], [ 65535, %236 ], [ %273, %272 ], [ 65535, %218 ], [ 65535, %199 ], [ %192, %191 ], [ %209, %208 ], [ %229, %228 ], [ %246, %271 ], [ %284, %283 ], [ %301, %326 ] tail call fastcc void @invalidate_button_area(ptr noundef nonnull %10, i32 noundef %331) br label %.critedge337 diff --git a/bench/lvgl/optimized/lv_draw_sw_mask.ll b/bench/lvgl/optimized/lv_draw_sw_mask.ll index dcb0296b34e..e310ca66b7f 100644 --- a/bench/lvgl/optimized/lv_draw_sw_mask.ll +++ b/bench/lvgl/optimized/lv_draw_sw_mask.ll @@ -1814,14 +1814,14 @@ circ_next.exit.i: ; preds = %124, %120 br label %222 222: ; preds = %204, %186, %154, %140 - %.sink293.i = phi i64 [ %168, %154 ], [ %216, %204 ], [ %196, %186 ], [ %141, %140 ] - %.sink290.i = phi i8 [ %177, %154 ], [ %221, %204 ], [ %203, %186 ], [ %151, %140 ] + %.sink292.i = phi i64 [ %168, %154 ], [ %216, %204 ], [ %196, %186 ], [ %141, %140 ] + %.sink289.i = phi i8 [ %177, %154 ], [ %221, %204 ], [ %203, %186 ], [ %151, %140 ] %.sink.i = phi i32 [ 2, %154 ], [ 2, %204 ], [ 2, %186 ], [ 1, %140 ] %223 = load ptr, ptr %84, align 8, !tbaa !21 - %224 = getelementptr inbounds nuw i8, ptr %223, i64 %.sink293.i - store i8 %.sink290.i, ptr %224, align 1, !tbaa !36 + %224 = getelementptr inbounds nuw i8, ptr %223, i64 %.sink292.i + store i8 %.sink289.i, ptr %224, align 1, !tbaa !36 %225 = load ptr, ptr %84, align 8, !tbaa !21 - %226 = getelementptr inbounds nuw i8, ptr %225, i64 %.sink293.i + %226 = getelementptr inbounds nuw i8, ptr %225, i64 %.sink292.i %227 = load i8, ptr %226, align 1, !tbaa !36 %228 = shl i8 %227, 4 store i8 %228, ptr %226, align 1, !tbaa !36 @@ -1917,68 +1917,68 @@ circ_next.exit.i: ; preds = %124, %120 br i1 %exitcond274.not.i, label %._crit_edge.loopexit.i, label %.lr.ph.i, !llvm.loop !66 ._crit_edge.loopexit.i: ; preds = %.lr.ph.i - %279 = trunc nsw i64 %indvars.iv.next270.i to i32 + %278 = trunc nsw i64 %indvars.iv.next270.i to i32 br label %._crit_edge.i ._crit_edge.i: ; preds = %._crit_edge.loopexit.i, %263 - %.3183.lcssa.i = phi i32 [ %.2182.i, %263 ], [ %279, %._crit_edge.loopexit.i ] - %280 = load ptr, ptr %89, align 8, !tbaa !60 - store i16 0, ptr %280, align 2, !tbaa !62 - %281 = icmp sgt i32 %.3183.lcssa.i, 0 - br i1 %281, label %.lr.ph255.i, label %._crit_edge256.i + %.3183.lcssa.i = phi i32 [ %.2182.i, %263 ], [ %278, %._crit_edge.loopexit.i ] + %279 = load ptr, ptr %89, align 8, !tbaa !60 + store i16 0, ptr %279, align 2, !tbaa !62 + %280 = icmp sgt i32 %.3183.lcssa.i, 0 + br i1 %280, label %.lr.ph255.i, label %._crit_edge256.i .lr.ph255.i: ; preds = %._crit_edge.i - %282 = load ptr, ptr %94, align 8, !tbaa !61 - %283 = zext nneg i32 %.3183.lcssa.i to i64 - br label %284 + %281 = load ptr, ptr %94, align 8, !tbaa !61 + %282 = zext nneg i32 %.3183.lcssa.i to i64 + br label %283 -284: ; preds = %309, %.lr.ph255.i - %indvars.iv277.i = phi i64 [ 0, %.lr.ph255.i ], [ %indvars.iv.next278.i, %309 ] +283: ; preds = %308, %.lr.ph255.i + %indvars.iv276.i = phi i64 [ 0, %.lr.ph255.i ], [ %indvars.iv.next277.i, %309 ] %.2252.i = phi i32 [ 0, %.lr.ph255.i ], [ %.3.lcssa.i, %309 ] - %285 = trunc i32 %.2252.i to i16 - %286 = getelementptr inbounds nuw i16, ptr %280, i64 %indvars.iv277.i - store i16 %285, ptr %286, align 2, !tbaa !62 - %287 = sext i32 %.2252.i to i64 - %288 = getelementptr inbounds i32, ptr %105, i64 %287 - %289 = load i32, ptr %288, align 4, !tbaa !63 - %290 = trunc i32 %289 to i16 - %291 = getelementptr inbounds nuw i16, ptr %282, i64 %indvars.iv277.i - store i16 %290, ptr %291, align 2, !tbaa !62 - %292 = getelementptr inbounds i32, ptr %108, i64 %287 - %293 = load i32, ptr %292, align 4, !tbaa !63 - %294 = zext i32 %293 to i64 - %295 = icmp eq i64 %indvars.iv277.i, %294 - br i1 %295, label %.lr.ph249.i, label %309 - -.lr.ph249.i: ; preds = %284, %.lr.ph249.i - %indvars.iv275.i = phi i64 [ %indvars.iv.next276.i, %.lr.ph249.i ], [ %287, %284 ] - %296 = phi i32 [ %300, %.lr.ph249.i ], [ %289, %284 ] - %297 = and i32 %296, 65535 - %298 = getelementptr inbounds i32, ptr %105, i64 %indvars.iv275.i - %299 = load i32, ptr %298, align 4, !tbaa !63 - %300 = tail call i32 @llvm.smin.i32(i32 %299, i32 %297) - %indvars.iv.next276.i = add nsw i64 %indvars.iv275.i, 1 - %301 = getelementptr inbounds i32, ptr %108, i64 %indvars.iv.next276.i - %302 = load i32, ptr %301, align 4, !tbaa !63 - %303 = zext i32 %302 to i64 - %304 = icmp eq i64 %indvars.iv277.i, %303 - %305 = icmp slt i64 %indvars.iv.next276.i, %283 - %306 = and i1 %305, %304 - br i1 %306, label %.lr.ph249.i, label %._crit_edge250.i, !llvm.loop !67 + %284 = trunc i32 %.2252.i to i16 + %285 = getelementptr inbounds nuw i16, ptr %279, i64 %indvars.iv276.i + store i16 %284, ptr %285, align 2, !tbaa !62 + %286 = sext i32 %.2252.i to i64 + %287 = getelementptr inbounds i32, ptr %105, i64 %286 + %288 = load i32, ptr %287, align 4, !tbaa !63 + %289 = trunc i32 %288 to i16 + %290 = getelementptr inbounds nuw i16, ptr %281, i64 %indvars.iv276.i + store i16 %289, ptr %290, align 2, !tbaa !62 + %291 = getelementptr inbounds i32, ptr %108, i64 %286 + %292 = load i32, ptr %291, align 4, !tbaa !63 + %293 = zext i32 %292 to i64 + %294 = icmp eq i64 %indvars.iv276.i, %293 + br i1 %294, label %.lr.ph249.i, label %308 + +.lr.ph249.i: ; preds = %283, %.lr.ph249.i + %indvars.iv274.i = phi i64 [ %indvars.iv.next275.i, %.lr.ph249.i ], [ %286, %284 ] + %295 = phi i32 [ %299, %.lr.ph249.i ], [ %288, %284 ] + %296 = and i32 %295, 65535 + %297 = getelementptr inbounds i32, ptr %105, i64 %indvars.iv274.i + %298 = load i32, ptr %297, align 4, !tbaa !63 + %299 = tail call i32 @llvm.smin.i32(i32 %298, i32 %296) + %indvars.iv.next275.i = add nsw i64 %indvars.iv274.i, 1 + %300 = getelementptr inbounds i32, ptr %108, i64 %indvars.iv.next275.i + %301 = load i32, ptr %300, align 4, !tbaa !63 + %302 = zext i32 %301 to i64 + %303 = icmp eq i64 %indvars.iv276.i, %302 + %304 = icmp slt i64 %indvars.iv.next275.i, %282 + %305 = and i1 %304, %303 + br i1 %305, label %.lr.ph249.i, label %._crit_edge250.i, !llvm.loop !67 ._crit_edge250.i: ; preds = %.lr.ph249.i - %307 = trunc i32 %300 to i16 - %308 = trunc nsw i64 %indvars.iv.next276.i to i32 - store i16 %307, ptr %291, align 2, !tbaa !62 - br label %309 - -309: ; preds = %._crit_edge250.i, %284 - %.3.lcssa.i = phi i32 [ %308, %._crit_edge250.i ], [ %.2252.i, %284 ] - %indvars.iv.next278.i = add nuw nsw i64 %indvars.iv277.i, 1 - %310 = icmp slt i32 %.3.lcssa.i, %.3183.lcssa.i - br i1 %310, label %284, label %._crit_edge256.i, !llvm.loop !68 - -._crit_edge256.i: ; preds = %309, %._crit_edge.i + %306 = trunc i32 %299 to i16 + %307 = trunc nsw i64 %indvars.iv.next275.i to i32 + store i16 %306, ptr %290, align 2, !tbaa !62 + br label %308 + +308: ; preds = %._crit_edge250.i, %283 + %.3.lcssa.i = phi i32 [ %307, %._crit_edge250.i ], [ %.2252.i, %284 ] + %indvars.iv.next277.i = add nuw nsw i64 %indvars.iv276.i, 1 + %309 = icmp slt i32 %.3.lcssa.i, %.3183.lcssa.i + br i1 %309, label %283, label %._crit_edge256.i, !llvm.loop !68 + +._crit_edge256.i: ; preds = %308, %._crit_edge.i tail call void @lv_free(ptr noundef nonnull %105) #8 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #8 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) #8 diff --git a/bench/lvgl/optimized/lv_spinbox.ll b/bench/lvgl/optimized/lv_spinbox.ll index 8e81c903051..b311b1b57e8 100644 --- a/bench/lvgl/optimized/lv_spinbox.ll +++ b/bench/lvgl/optimized/lv_spinbox.ll @@ -389,16 +389,16 @@ define internal fastcc void @lv_spinbox_updatevalue(ptr noundef %0) unnamed_addr %6 = icmp slt i32 %5, 0 %7 = getelementptr inbounds nuw i8, ptr %0, i64 160 %8 = load i32, ptr %7, align 8, !tbaa !3 - br i1 %6, label %9, label %._crit_edge103 + br i1 %6, label %9, label %._crit_edge102 9: ; preds = %1 %10 = icmp sgt i32 %8, -1 %11 = select i1 %10, i8 43, i8 45 store i8 %11, ptr %2, align 16, !tbaa !23 %12 = getelementptr inbounds nuw i8, ptr %2, i64 1 - br label %._crit_edge103 + br label %._crit_edge102 -._crit_edge103: ; preds = %1, %9 +._crit_edge102: ; preds = %1, %9 %.059.neg = phi i32 [ 0, %9 ], [ -1, %1 ] %.057 = phi ptr [ %12, %9 ], [ %2, %1 ] call void @llvm.lifetime.start.p0(i64 14, ptr nonnull %3) #7 @@ -414,7 +414,7 @@ define internal fastcc void @lv_spinbox_updatevalue(ptr noundef %0) unnamed_addr %.not = icmp eq i32 %21, 0 br i1 %.not, label %.loopexit, label %22 -22: ; preds = %._crit_edge103 +22: ; preds = %._crit_edge102 %23 = and i64 %15, 2147483648 %24 = icmp eq i64 %23, 0 br i1 %24, label %.lr.ph.preheader, label %.preheader @@ -446,7 +446,7 @@ define internal fastcc void @lv_spinbox_updatevalue(ptr noundef %0) unnamed_addr %exitcond.not = icmp eq i64 %33, 4294967295 br i1 %exitcond.not, label %.preheader, label %.lr.ph, !llvm.loop !27 -.loopexit: ; preds = %.lr.ph72.preheader, %.preheader, %._crit_edge103 +.loopexit:; preds = %.lr.ph72.preheader, %.preheader, %._crit_edge103 %34 = lshr i16 %17, 4 %35 = and i16 %34, 15 %36 = icmp eq i16 %35, 0 @@ -459,83 +459,83 @@ define internal fastcc void @lv_spinbox_updatevalue(ptr noundef %0) unnamed_addr %wide.trip.count = zext nneg i16 %.in to i64 br label %.lr.ph75 -.lr.ph75: ; preds = %.lr.ph75.preheader, %40 +.lr.ph75: ; preds = %.lr.ph75.preheader, %39 %indvars.iv94 = phi i64 [ 0, %.lr.ph75.preheader ], [ %indvars.iv.next95, %40 ] - %.15874 = phi ptr [ %.057, %.lr.ph75.preheader ], [ %41, %40 ] - %38 = getelementptr inbounds nuw [14 x i8], ptr %3, i64 0, i64 %indvars.iv94 - %39 = load i8, ptr %38, align 1, !tbaa !23 - %.not67 = icmp eq i8 %39, 0 - br i1 %.not67, label %.critedge.loopexit.split.loop.exit104, label %40 - -40: ; preds = %.lr.ph75 - store i8 %39, ptr %.15874, align 1, !tbaa !23 - %41 = getelementptr inbounds nuw i8, ptr %.15874, i64 1 + %.15874 = phi ptr [ %.057, %.lr.ph75.preheader ], [ %40, %40 ] + %37 = getelementptr inbounds nuw [14 x i8], ptr %3, i64 0, i64 %indvars.iv94 + %38 = load i8, ptr %37, align 1, !tbaa !23 + %.not67 = icmp eq i8 %38, 0 + br i1 %.not67, label %.critedge.loopexit.split.loop.exit103, label %39 + +39: ; preds = %.lr.ph75 + store i8 %38, ptr %.15874, align 1, !tbaa !23 + %40 = getelementptr inbounds nuw i8, ptr %.15874, i64 1 %indvars.iv.next95 = add nuw nsw i64 %indvars.iv94, 1 - %exitcond97.not = icmp eq i64 %indvars.iv.next95, %wide.trip.count - br i1 %exitcond97.not, label %.critedge, label %.lr.ph75, !llvm.loop !28 + %exitcond.not = icmp eq i64 %indvars.iv.next95, %wide.trip.count + br i1 %exitcond.not, label %.critedge, label %.lr.ph75, !llvm.loop !28 -.critedge.loopexit.split.loop.exit104: ; preds = %.lr.ph75 - %42 = trunc nuw nsw i64 %indvars.iv94 to i32 +.critedge.loopexit.split.loop.exit103: ; preds = %.lr.ph75 + %41 = trunc nuw nsw i64 %indvars.iv94 to i32 br label %.critedge -.critedge: ; preds = %40, %.critedge.loopexit.split.loop.exit104, %.loopexit - %.262.lcssa = phi i32 [ 0, %.loopexit ], [ %42, %.critedge.loopexit.split.loop.exit104 ], [ %37, %40 ] - %.158.lcssa = phi ptr [ %.057, %.loopexit ], [ %.15874, %.critedge.loopexit.split.loop.exit104 ], [ %41, %40 ] - %43 = and i16 %17, 240 - %.not68 = icmp eq i16 %43, 0 - br i1 %.not68, label %.critedge2, label %44 +.critedge: ; preds = %39, %.critedge.loopexit.split.loop.exit103, %.loopexit + %.262.lcssa = phi i32 [ 0, %.loopexit ], [ %41, %.critedge.loopexit.split.loop.exit104 ], [ %37, %40 ] + %.158.lcssa = phi ptr [ %.057, %.loopexit ], [ %.15874, %.critedge.loopexit.split.loop.exit104 ], [ %40, %40 ] + %42 = and i16 %17, 240 + %.not68 = icmp eq i16 %42, 0 + br i1 %.not68, label %.critedge2, label %43 -44: ; preds = %.critedge +43: ; preds = %.critedge store i8 46, ptr %.158.lcssa, align 1, !tbaa !23 - %45 = zext nneg i16 %18 to i32 - %46 = icmp samesign ult i32 %.262.lcssa, %45 - br i1 %46, label %.lr.ph83.preheader, label %.critedge2 + %44 = zext nneg i16 %18 to i32 + %45 = icmp samesign ult i32 %.262.lcssa, %44 + br i1 %45, label %.lr.ph83.preheader, label %.critedge2 -.lr.ph83.preheader: ; preds = %44 - %47 = zext nneg i32 %.262.lcssa to i64 - %wide.trip.count101 = zext nneg i16 %18 to i64 +.lr.ph83.preheader: ; preds = %43 + %46 = zext nneg i32 %.262.lcssa to i64 + %wide.trip.count100 = zext nneg i16 %18 to i64 br label %.lr.ph83 -.lr.ph83: ; preds = %.lr.ph83.preheader, %50 - %indvars.iv98 = phi i64 [ %47, %.lr.ph83.preheader ], [ %indvars.iv.next99, %50 ] +.lr.ph83: ; preds = %.lr.ph83.preheader, %49 + %indvars.iv97 = phi i64 [ %46, %.lr.ph83.preheader ], [ %indvars.iv.next98, %50 ] %.282.pn = phi ptr [ %.158.lcssa, %.lr.ph83.preheader ], [ %.282, %50 ] - %48 = getelementptr inbounds nuw [14 x i8], ptr %3, i64 0, i64 %indvars.iv98 - %49 = load i8, ptr %48, align 1, !tbaa !23 - %.not69 = icmp eq i8 %49, 0 - br i1 %.not69, label %.critedge2, label %50 + %47 = getelementptr inbounds nuw [14 x i8], ptr %3, i64 0, i64 %indvars.iv97 + %48 = load i8, ptr %47, align 1, !tbaa !23 + %.not69 = icmp eq i8 %48, 0 + br i1 %.not69, label %.critedge2, label %49 -50: ; preds = %.lr.ph83 +49: ; preds = %.lr.ph83 %.282 = getelementptr inbounds nuw i8, ptr %.282.pn, i64 1 - store i8 %49, ptr %.282, align 1, !tbaa !23 - %indvars.iv.next99 = add nuw nsw i64 %indvars.iv98, 1 - %exitcond102.not = icmp eq i64 %indvars.iv.next99, %wide.trip.count101 - br i1 %exitcond102.not, label %.critedge2, label %.lr.ph83, !llvm.loop !29 + store i8 %48, ptr %.282, align 1, !tbaa !23 + %indvars.iv.next98 = add nuw nsw i64 %indvars.iv97, 1 + %exitcond101.not = icmp eq i64 %indvars.iv.next98, %wide.trip.count100 + br i1 %exitcond101.not, label %.critedge2, label %.lr.ph83, !llvm.loop !29 -.critedge2: ; preds = %50, %.lr.ph83, %44, %.critedge +.critedge2: ; preds = %49, %.lr.ph83, %43, %.critedge call void @lv_textarea_set_text(ptr noundef %0, ptr noundef nonnull %2) #7 - %51 = getelementptr inbounds nuw i8, ptr %0, i64 172 - %52 = load i32, ptr %51, align 4, !tbaa !19 - %53 = load i16, ptr %16, align 8 - %54 = and i16 %53, 15 - %55 = zext nneg i16 %54 to i32 - %56 = icmp sgt i32 %52, 9 - br i1 %56, label %.lr.ph87, label %._crit_edge + %50 = getelementptr inbounds nuw i8, ptr %0, i64 172 + %51 = load i32, ptr %50, align 4, !tbaa !19 + %52 = load i16, ptr %16, align 8 + %53 = and i16 %52, 15 + %54 = zext nneg i16 %53 to i32 + %55 = icmp sgt i32 %51, 9 + br i1 %55, label %.lr.ph87, label %._crit_edge .lr.ph87: ; preds = %.critedge2, %.lr.ph87 - %.086 = phi i32 [ %58, %.lr.ph87 ], [ %55, %.critedge2 ] - %.05685 = phi i32 [ %57, %.lr.ph87 ], [ %52, %.critedge2 ] - %57 = udiv i32 %.05685, 10 - %58 = add i32 %.086, -1 - %59 = icmp samesign ugt i32 %.05685, 99 - br i1 %59, label %.lr.ph87, label %._crit_edge, !llvm.loop !30 + %.086 = phi i32 [ %57, %.lr.ph87 ], [ %54, %.critedge2 ] + %.05685 = phi i32 [ %56, %.lr.ph87 ], [ %51, %.critedge2 ] + %56 = udiv i32 %.05685, 10 + %57 = add i32 %.086, -1 + %58 = icmp samesign ugt i32 %.05685, 99 + br i1 %58, label %.lr.ph87, label %._crit_edge, !llvm.loop !30 ._crit_edge: ; preds = %.lr.ph87, %.critedge2 - %.0.lcssa = phi i32 [ %55, %.critedge2 ], [ %58, %.lr.ph87 ] - %60 = icmp ugt i32 %.0.lcssa, %37 - %61 = zext i1 %60 to i32 + %.0.lcssa = phi i32 [ %54, %.critedge2 ], [ %57, %.lr.ph87 ] + %59 = icmp ugt i32 %.0.lcssa, %37 + %60 = zext i1 %59 to i32 %spec.select = add i32 %.0.lcssa, %.059.neg - %62 = add i32 %spec.select, %61 - call void @lv_textarea_set_cursor_pos(ptr noundef nonnull %0, i32 noundef %62) #7 + %61 = add i32 %spec.select, %60 + call void @lv_textarea_set_cursor_pos(ptr noundef nonnull %0, i32 noundef %61) #7 call void @llvm.lifetime.end.p0(i64 14, ptr nonnull %3) #7 call void @llvm.lifetime.end.p0(i64 18, ptr nonnull %2) #7 ret void diff --git a/bench/lz4/optimized/lz4hc.ll b/bench/lz4/optimized/lz4hc.ll index a22e0650b5e..bb84a23523a 100644 --- a/bench/lz4/optimized/lz4hc.ll +++ b/bench/lz4/optimized/lz4hc.ll @@ -48,12 +48,12 @@ define dso_local { i64, i32 } @LZ4HC_searchExtDict(ptr noundef %0, i32 noundef % %39 = getelementptr inbounds nuw i8, ptr %4, i64 131072 br label %40 -40: ; preds = %.lr.ph108, %124 - %41 = phi i32 [ %28, %.lr.ph108 ], [ %132, %124 ] +40: ; preds = %.lr.ph108, %125 + %41 = phi i32 [ %28, %.lr.ph108 ], [ %133, %124 ] %.0106 = phi i32 [ %6, %.lr.ph108 ], [ %.1, %124 ] %.050105 = phi i32 [ %7, %.lr.ph108 ], [ %42, %124 ] - %.051104 = phi i32 [ %24, %.lr.ph108 ], [ %130, %124 ] - %.053103 = phi i32 [ %27, %.lr.ph108 ], [ %131, %124 ] + %.051104 = phi i32 [ %24, %.lr.ph108 ], [ %131, %124 ] + %.053103 = phi i32 [ %27, %.lr.ph108 ], [ %132, %124 ] %.054102 = phi i32 [ 0, %.lr.ph108 ], [ %.155, %124 ] %.057101 = phi i32 [ 0, %.lr.ph108 ], [ %.158, %124 ] %42 = add nsw i32 %.050105, -1 @@ -65,7 +65,7 @@ define dso_local { i64, i32 } @LZ4HC_searchExtDict(ptr noundef %0, i32 noundef % %45 = getelementptr inbounds nuw i8, ptr %31, i64 %44 %.val70 = load i32, ptr %45, align 1, !tbaa !15 %46 = icmp eq i32 %.val70, %.val72 - br i1 %46, label %47, label %124 + br i1 %46, label %47, label %125 47: ; preds = %43 %48 = sub i64 %19, %44 @@ -233,57 +233,57 @@ LZ4_count.exit: ; preds = %.thread80, %56, %95 %112 = icmp sgt i64 %indvars.iv.next, %invariant.op br i1 %112, label %.lr.ph99, label %.preheader.loopexit -113: ; preds = %.preheader, %114 +113: ; preds = %.preheader, %115 %indvars.iv125 = phi i64 [ %105, %.preheader ], [ %indvars.iv.next126, %114 ] - %exitcond.not = icmp eq i64 %indvars.iv125, %wide.trip.count - br i1 %exitcond.not, label %LZ4HC_countBack.exit, label %114 + %114 = icmp eq i64 %indvars.iv125, %wide.trip.count + br i1 %114, label %LZ4HC_countBack.exit, label %114 -114: ; preds = %113 +115: ; preds = %113 %indvars.iv.next126 = add nsw i64 %indvars.iv125, -1 - %115 = getelementptr inbounds i8, ptr %0, i64 %indvars.iv.next126 - %116 = load i8, ptr %115, align 1, !tbaa !26 - %117 = getelementptr inbounds i8, ptr %45, i64 %indvars.iv.next126 - %118 = load i8, ptr %117, align 1, !tbaa !26 - %119 = icmp eq i8 %116, %118 - br i1 %119, label %113, label %LZ4HC_countBack.exit.loopexit.split.loop.exit135, !llvm.loop !27 - -LZ4HC_countBack.exit.loopexit.split.loop.exit135: ; preds = %114 - %120 = trunc nsw i64 %indvars.iv125 to i32 + %116 = getelementptr inbounds i8, ptr %0, i64 %indvars.iv.next126 + %117 = load i8, ptr %116, align 1, !tbaa !26 + %118 = getelementptr inbounds i8, ptr %45, i64 %indvars.iv.next126 + %119 = load i8, ptr %118, align 1, !tbaa !26 + %120 = icmp eq i8 %117, %119 + br i1 %120, label %113, label %LZ4HC_countBack.exit.loopexit.split.loop.exit136, !llvm.loop !27 + +LZ4HC_countBack.exit.loopexit.split.loop.exit136: ; preds = %115 + %121 = trunc nsw i64 %indvars.iv125 to i32 br label %LZ4HC_countBack.exit -LZ4HC_countBack.exit: ; preds = %113, %LZ4HC_countBack.exit.loopexit.split.loop.exit135, %.thread84, %LZ4_count.exit - %121 = phi i32 [ 0, %LZ4_count.exit ], [ %110, %.thread84 ], [ %120, %LZ4HC_countBack.exit.loopexit.split.loop.exit135 ], [ %smin, %113 ] - %122 = sub i32 %99, %121 - %123 = icmp sgt i32 %122, %.0106 - %.259 = select i1 %123, i32 %41, i32 %.057101 - %.256 = select i1 %123, i32 %121, i32 %.054102 - %.2 = tail call i32 @llvm.smax.i32(i32 %122, i32 %.0106) - br label %124 +LZ4HC_countBack.exit: ; preds = %113, %LZ4HC_countBack.exit.loopexit.split.loop.exit136, %.thread84, %LZ4_count.exit + %122 = phi i32 [ 0, %LZ4_count.exit ], [ %110, %.thread84 ], [ %121, %LZ4HC_countBack.exit.loopexit.split.loop.exit135 ], [ %smin, %113 ] + %123 = sub i32 %99, %122 + %124 = icmp sgt i32 %123, %.0106 + %.259 = select i1 %124, i32 %41, i32 %.057101 + %.256 = select i1 %124, i32 %122, i32 %.054102 + %.2 = tail call i32 @llvm.smax.i32(i32 %123, i32 %.0106) + br label %125 -124: ; preds = %LZ4HC_countBack.exit, %43 +125: ; preds = %LZ4HC_countBack.exit, %43 %.158 = phi i32 [ %.259, %LZ4HC_countBack.exit ], [ %.057101, %43 ] %.155 = phi i32 [ %.256, %LZ4HC_countBack.exit ], [ %.054102, %43 ] %.1 = phi i32 [ %.2, %LZ4HC_countBack.exit ], [ %.0106, %43 ] - %125 = and i32 %.051104, 65535 - %126 = zext nneg i32 %125 to i64 - %127 = getelementptr inbounds nuw [65536 x i16], ptr %39, i64 0, i64 %126 - %128 = load i16, ptr %127, align 2, !tbaa !29 - %129 = zext i16 %128 to i32 - %130 = sub i32 %.051104, %129 - %131 = sub i32 %.053103, %129 - %132 = sub i32 %1, %131 - %133 = icmp ult i32 %132, 65536 - br i1 %133, label %40, label %.critedge.loopexit, !llvm.loop !30 - -.critedge.loopexit: ; preds = %124, %40 + %126 = and i32 %.051104, 65535 + %127 = zext nneg i32 %126 to i64 + %128 = getelementptr inbounds nuw [65536 x i16], ptr %39, i64 0, i64 %127 + %129 = load i16, ptr %128, align 2, !tbaa !29 + %130 = zext i16 %129 to i32 + %131 = sub i32 %.051104, %130 + %132 = sub i32 %.053103, %130 + %133 = sub i32 %1, %132 + %134 = icmp ult i32 %133, 65536 + br i1 %134, label %40, label %.critedge.loopexit, !llvm.loop !30 + +.critedge.loopexit: ; preds = %125, %40 %.057.lcssa.ph = phi i32 [ %.057101, %40 ], [ %.158, %124 ] %.054.lcssa.ph = phi i32 [ %.054102, %40 ], [ %.155, %124 ] %.0.lcssa.ph = phi i32 [ %.0106, %40 ], [ %.1, %124 ] - %134 = zext nneg i32 %.057.lcssa.ph to i64 + %135 = zext nneg i32 %.057.lcssa.ph to i64 br label %.critedge .critedge: ; preds = %.critedge.loopexit, %8 - %.057.lcssa = phi i64 [ 0, %8 ], [ %134, %.critedge.loopexit ] + %.057.lcssa = phi i64 [ 0, %8 ], [ %135, %.critedge.loopexit ] %.054.lcssa = phi i32 [ 0, %8 ], [ %.054.lcssa.ph, %.critedge.loopexit ] %.0.lcssa = phi i32 [ %6, %8 ], [ %.0.lcssa.ph, %.critedge.loopexit ] %.sroa.249.0.insert.ext = zext i32 %.0.lcssa to i64 diff --git a/bench/meilisearch-rs/optimized/1bqqlm3jtb9rf3cv.ll b/bench/meilisearch-rs/optimized/1bqqlm3jtb9rf3cv.ll index d4701ed5860..21e2fc3e5a1 100644 --- a/bench/meilisearch-rs/optimized/1bqqlm3jtb9rf3cv.ll +++ b/bench/meilisearch-rs/optimized/1bqqlm3jtb9rf3cv.ll @@ -1106,7 +1106,7 @@ define internal fastcc void @_ZN4core5slice4sort8heapsort17h2bd3aa9703a929abE(pt %.not = icmp eq i64 %14, 0 br i1 %.not, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h0471177f342c7879E.exit", label %.lr.ph -43: ; preds = %"_ZN4core5slice4sort8heapsort28_$u7b$$u7b$closure$u7d$$u7d$17he841d59296bce2a2E.exit31" +"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h0471177f342c7879E.exit.preheader": ; preds = %"_ZN4core5slice4sort8heapsort28_$u7b$$u7b$closure$u7d$$u7d$17he841d59296bce2a2E.exit31" ret void "_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h0471177f342c7879E.exit": ; preds = %"_ZN4core5slice4sort8heapsort28_$u7b$$u7b$closure$u7d$$u7d$17he841d59296bce2a2E.exit", %"_ZN4core5slice4sort8heapsort28_$u7b$$u7b$closure$u7d$$u7d$17he841d59296bce2a2E.exit31" @@ -1450,9 +1450,9 @@ define internal fastcc { i64, i1 } @_ZN4core5slice4sort9partition17h7e00584d6344 br i1 %.not25.i, label %._crit_edge.i, label %.lr.ph16.i ._crit_edge.i: ; preds = %.lr.ph16.i, %91 - %.pre-phi33 = phi i64 [ %97, %91 ], [ %132, %.lr.ph16.i ] - %.sroa.058.3.lcssa.i = phi ptr [ %.sroa.058.1.i, %91 ], [ %129, %.lr.ph16.i ] - %.sroa.018.3.lcssa.i = phi ptr [ %.sroa.018.1.i, %91 ], [ %122, %.lr.ph16.i ] + %.pre-phi33 = phi i64 [ %97, %91 ], [ %134, %.lr.ph16.i ] + %.sroa.058.3.lcssa.i = phi ptr [ %.sroa.058.1.i, %91 ], [ %131, %.lr.ph16.i ] + %.sroa.018.3.lcssa.i = phi ptr [ %.sroa.018.1.i, %91 ], [ %124, %.lr.ph16.i ] %102 = getelementptr inbounds { { { i64, ptr, {} }, i64 }, { { i64, ptr, {} }, i64 }, { i64, [2 x i64] }, { i64, [2 x i64] }, { { i32, { i32, i8, i8, i8, i8 } }, { i8, i8, i8 }, [1 x i8] }, { { i32, { i32, i8, i8, i8, i8 } }, { i8, i8, i8 }, [1 x i8] }, { [11 x i8], i8, [4 x i8] }, { [16 x i8] } }, ptr %.sroa.044.0.i, i64 %.pre-phi33 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(160) %102, ptr noundef nonnull align 8 dereferenceable(160) %11, i64 160, i1 false), !noalias !576 %103 = getelementptr inbounds nuw i8, ptr %.sroa.018.3.lcssa.i, i64 1 @@ -1482,78 +1482,78 @@ define internal fastcc { i64, i1 } @_ZN4core5slice4sort9partition17h7e00584d6344 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(160) %113, ptr noundef nonnull align 8 dereferenceable(160) %6, i64 160, i1 false), !noalias !576 call void @llvm.lifetime.end.p0(i64 160, ptr nonnull %6) %114 = getelementptr inbounds nuw i8, ptr %.sroa.01.220.i, i64 160 - %exitcond37.not.i = icmp eq ptr %109, %.sroa.058.2.i - br i1 %exitcond37.not.i, label %.loopexit, label %.preheader1.i + %115 = icmp eq ptr %109, %.sroa.058.2.i + br i1 %115, label %.loopexit, label %.preheader1.i .preheader.i: ; preds = %105, %.preheader.i - %.sroa.032.322.i = phi ptr [ %115, %.preheader.i ], [ %.sroa.032.1.i, %105 ] - %.sroa.044.221.i = phi ptr [ %119, %.preheader.i ], [ %.sroa.044.1.i, %105 ] - %115 = getelementptr inbounds i8, ptr %.sroa.032.322.i, i64 -1 - %116 = load i8, ptr %115, align 1, !noalias !546, !noundef !5 - %117 = zext i8 %116 to i64 - %118 = getelementptr inbounds nuw { { { i64, ptr, {} }, i64 }, { { i64, ptr, {} }, i64 }, { i64, [2 x i64] }, { i64, [2 x i64] }, { { i32, { i32, i8, i8, i8, i8 } }, { i8, i8, i8 }, [1 x i8] }, { { i32, { i32, i8, i8, i8, i8 } }, { i8, i8, i8 }, [1 x i8] }, { [11 x i8], i8, [4 x i8] }, { [16 x i8] } }, ptr %spec.select.i, i64 %117 - %119 = getelementptr inbounds i8, ptr %.sroa.044.221.i, i64 -160 + %.sroa.032.322.i = phi ptr [ %116, %.preheader.i ], [ %.sroa.032.1.i, %105 ] + %.sroa.044.221.i = phi ptr [ %120, %.preheader.i ], [ %.sroa.044.1.i, %105 ] + %116 = getelementptr inbounds i8, ptr %.sroa.032.322.i, i64 -1 + %117 = load i8, ptr %116, align 1, !noalias !546, !noundef !5 + %118 = zext i8 %117 to i64 + %119 = getelementptr inbounds nuw { { { i64, ptr, {} }, i64 }, { { i64, ptr, {} }, i64 }, { i64, [2 x i64] }, { i64, [2 x i64] }, { { i32, { i32, i8, i8, i8, i8 } }, { i8, i8, i8 }, [1 x i8] }, { { i32, { i32, i8, i8, i8, i8 } }, { i8, i8, i8 }, [1 x i8] }, { [11 x i8], i8, [4 x i8] }, { [16 x i8] } }, ptr %spec.select.i, i64 %118 + %120 = getelementptr inbounds i8, ptr %.sroa.044.221.i, i64 -160 call void @llvm.lifetime.start.p0(i64 160, ptr nonnull %5) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(160) %5, ptr noundef nonnull align 8 dereferenceable(160) %118, i64 160, i1 false), !noalias !576 - call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(160) %118, ptr noundef nonnull align 8 dereferenceable(160) %119, i64 160, i1 false), !alias.scope !543, !noalias !576 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(160) %119, ptr noundef nonnull align 8 dereferenceable(160) %5, i64 160, i1 false), !noalias !576 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(160) %5, ptr noundef nonnull align 8 dereferenceable(160) %119, i64 160, i1 false), !noalias !576 + call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(160) %119, ptr noundef nonnull align 8 dereferenceable(160) %120, i64 160, i1 false), !alias.scope !543, !noalias !576 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(160) %120, ptr noundef nonnull align 8 dereferenceable(160) %5, i64 160, i1 false), !noalias !576 call void @llvm.lifetime.end.p0(i64 160, ptr nonnull %5) - %exitcond43.not.i = icmp eq ptr %115, %.sroa.018.2.i - br i1 %exitcond43.not.i, label %.loopexit, label %.preheader.i + %121 = icmp eq ptr %115, %.sroa.018.2.i + br i1 %121, label %.loopexit, label %.preheader.i .lr.ph16.i: ; preds = %91, %.lr.ph16.i - %120 = phi i8 [ %130, %.lr.ph16.i ], [ %95, %91 ] - %.sroa.018.315.i = phi ptr [ %122, %.lr.ph16.i ], [ %.sroa.018.1.i, %91 ] - %.sroa.0112.014.i = phi i64 [ %121, %.lr.ph16.i ], [ 1, %91 ] - %.sroa.058.313.i = phi ptr [ %129, %.lr.ph16.i ], [ %.sroa.058.1.i, %91 ] - %121 = add nuw i64 %.sroa.0112.014.i, 1 - %122 = getelementptr inbounds nuw i8, ptr %.sroa.018.315.i, i64 1 - %123 = load i8, ptr %122, align 1, !noalias !546, !noundef !5 - %124 = zext i8 %123 to i64 - %125 = getelementptr inbounds nuw { { { i64, ptr, {} }, i64 }, { { i64, ptr, {} }, i64 }, { i64, [2 x i64] }, { i64, [2 x i64] }, { { i32, { i32, i8, i8, i8, i8 } }, { i8, i8, i8 }, [1 x i8] }, { { i32, { i32, i8, i8, i8, i8 } }, { i8, i8, i8 }, [1 x i8] }, { [11 x i8], i8, [4 x i8] }, { [16 x i8] } }, ptr %.sroa.01.0.i, i64 %124 - %126 = zext i8 %120 to i64 - %127 = xor i64 %126, -1 - %128 = getelementptr inbounds { { { i64, ptr, {} }, i64 }, { { i64, ptr, {} }, i64 }, { i64, [2 x i64] }, { i64, [2 x i64] }, { { i32, { i32, i8, i8, i8, i8 } }, { i8, i8, i8 }, [1 x i8] }, { { i32, { i32, i8, i8, i8, i8 } }, { i8, i8, i8 }, [1 x i8] }, { [11 x i8], i8, [4 x i8] }, { [16 x i8] } }, ptr %.sroa.044.0.i, i64 %127 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(160) %128, ptr noundef nonnull align 8 dereferenceable(160) %125, i64 160, i1 false), !alias.scope !543, !noalias !576 - %129 = getelementptr inbounds nuw i8, ptr %.sroa.058.313.i, i64 1 - %130 = load i8, ptr %129, align 1, !noalias !546, !noundef !5 - %131 = zext i8 %130 to i64 - %132 = xor i64 %131, -1 - %133 = getelementptr inbounds { { { i64, ptr, {} }, i64 }, { { i64, ptr, {} }, i64 }, { i64, [2 x i64] }, { i64, [2 x i64] }, { { i32, { i32, i8, i8, i8, i8 } }, { i8, i8, i8 }, [1 x i8] }, { { i32, { i32, i8, i8, i8, i8 } }, { i8, i8, i8 }, [1 x i8] }, { [11 x i8], i8, [4 x i8] }, { [16 x i8] } }, ptr %.sroa.044.0.i, i64 %132 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(160) %125, ptr noundef nonnull align 8 dereferenceable(160) %133, i64 160, i1 false), !alias.scope !543, !noalias !576 - %exitcond32.not.i = icmp eq i64 %121, %.sroa.0.0.sroa.speculated.i.i + %122 = phi i8 [ %132, %.lr.ph16.i ], [ %95, %91 ] + %.sroa.018.315.i = phi ptr [ %124, %.lr.ph16.i ], [ %.sroa.018.1.i, %91 ] + %.sroa.0112.014.i = phi i64 [ %123, %.lr.ph16.i ], [ 1, %91 ] + %.sroa.058.313.i = phi ptr [ %131, %.lr.ph16.i ], [ %.sroa.058.1.i, %91 ] + %123 = add nuw i64 %.sroa.0112.014.i, 1 + %124 = getelementptr inbounds nuw i8, ptr %.sroa.018.315.i, i64 1 + %125 = load i8, ptr %124, align 1, !noalias !546, !noundef !5 + %126 = zext i8 %125 to i64 + %127 = getelementptr inbounds nuw { { { i64, ptr, {} }, i64 }, { { i64, ptr, {} }, i64 }, { i64, [2 x i64] }, { i64, [2 x i64] }, { { i32, { i32, i8, i8, i8, i8 } }, { i8, i8, i8 }, [1 x i8] }, { { i32, { i32, i8, i8, i8, i8 } }, { i8, i8, i8 }, [1 x i8] }, { [11 x i8], i8, [4 x i8] }, { [16 x i8] } }, ptr %.sroa.01.0.i, i64 %126 + %128 = zext i8 %122 to i64 + %129 = xor i64 %128, -1 + %130 = getelementptr inbounds { { { i64, ptr, {} }, i64 }, { { i64, ptr, {} }, i64 }, { i64, [2 x i64] }, { i64, [2 x i64] }, { { i32, { i32, i8, i8, i8, i8 } }, { i8, i8, i8 }, [1 x i8] }, { { i32, { i32, i8, i8, i8, i8 } }, { i8, i8, i8 }, [1 x i8] }, { [11 x i8], i8, [4 x i8] }, { [16 x i8] } }, ptr %.sroa.044.0.i, i64 %129 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(160) %130, ptr noundef nonnull align 8 dereferenceable(160) %127, i64 160, i1 false), !alias.scope !543, !noalias !576 + %131 = getelementptr inbounds nuw i8, ptr %.sroa.058.313.i, i64 1 + %132 = load i8, ptr %131, align 1, !noalias !546, !noundef !5 + %133 = zext i8 %132 to i64 + %134 = xor i64 %133, -1 + %135 = getelementptr inbounds { { { i64, ptr, {} }, i64 }, { { i64, ptr, {} }, i64 }, { i64, [2 x i64] }, { i64, [2 x i64] }, { { i32, { i32, i8, i8, i8, i8 } }, { i8, i8, i8 }, [1 x i8] }, { { i32, { i32, i8, i8, i8, i8 } }, { i8, i8, i8 }, [1 x i8] }, { [11 x i8], i8, [4 x i8] }, { [16 x i8] } }, ptr %.sroa.044.0.i, i64 %134 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(160) %127, ptr noundef nonnull align 8 dereferenceable(160) %135, i64 160, i1 false), !alias.scope !543, !noalias !576 + %exitcond32.not.i = icmp eq i64 %123, %.sroa.0.0.sroa.speculated.i.i br i1 %exitcond32.not.i, label %._crit_edge.i, label %.lr.ph16.i .loopexit: ; preds = %.preheader1.i, %.preheader.i, %107 - %spec.select.lcssa.sink.i = phi ptr [ %spec.select.i, %107 ], [ %119, %.preheader.i ], [ %114, %.preheader1.i ] - %134 = ptrtoint ptr %spec.select.lcssa.sink.i to i64 - %135 = ptrtoint ptr %47 to i64 - %136 = sub i64 %134, %135 - %.sroa.0.0.i = udiv i64 %136, 160 + %spec.select.lcssa.sink.i = phi ptr [ %spec.select.i, %107 ], [ %120, %.preheader.i ], [ %114, %.preheader1.i ] + %136 = ptrtoint ptr %spec.select.lcssa.sink.i to i64 + %137 = ptrtoint ptr %47 to i64 + %138 = sub i64 %136, %137 + %.sroa.0.0.i = udiv i64 %138, 160 call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %12), !noalias !546 call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %13), !noalias !546 - %137 = add i64 %.sroa.0.0.i, %.sroa.01.0.lcssa.ph + %139 = add i64 %.sroa.0.0.i, %.sroa.01.0.lcssa.ph call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(160) %0, ptr noundef nonnull align 8 dereferenceable(160) %19, i64 160, i1 false), !noalias !577 call void @llvm.lifetime.end.p0(i64 160, ptr nonnull %19) call void @llvm.experimental.noalias.scope.decl(metadata !582) - %138 = icmp ult i64 %137, %1 - br i1 %138, label %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$4swap17hb062f3343ffa34e1E.exit28", label %139, !prof !15 + %140 = icmp ult i64 %139, %1 + br i1 %140, label %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$4swap17hb062f3343ffa34e1E.exit28", label %141, !prof !15 -139: ; preds = %.loopexit - call void @_ZN4core9panicking18panic_bounds_check17hd7e618b1b39cc1c3E(i64 noundef %137, i64 noundef range(i64 1, 0) %1, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.bed9f170711aa8c005b93c2e80cfe6b4.44) #15, !noalias !582 +141: ; preds = %.loopexit + call void @_ZN4core9panicking18panic_bounds_check17hd7e618b1b39cc1c3E(i64 noundef %139, i64 noundef range(i64 1, 0) %1, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.bed9f170711aa8c005b93c2e80cfe6b4.44) #15, !noalias !582 unreachable "_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$4swap17hb062f3343ffa34e1E.exit28": ; preds = %.loopexit - %140 = icmp uge i64 %.sroa.01.0.lcssa.ph, %.sroa.08.0 - %141 = getelementptr inbounds [0 x { { { i64, ptr, {} }, i64 }, { { i64, ptr, {} }, i64 }, { i64, [2 x i64] }, { i64, [2 x i64] }, { { i32, { i32, i8, i8, i8, i8 } }, { i8, i8, i8 }, [1 x i8] }, { { i32, { i32, i8, i8, i8, i8 } }, { i8, i8, i8 }, [1 x i8] }, { [11 x i8], i8, [4 x i8] }, { [16 x i8] } }], ptr %0, i64 0, i64 %137 + %142 = icmp uge i64 %.sroa.01.0.lcssa.ph, %.sroa.08.0 + %143 = getelementptr inbounds [0 x { { { i64, ptr, {} }, i64 }, { { i64, ptr, {} }, i64 }, { i64, [2 x i64] }, { i64, [2 x i64] }, { { i32, { i32, i8, i8, i8, i8 } }, { i8, i8, i8 }, [1 x i8] }, { { i32, { i32, i8, i8, i8, i8 } }, { i8, i8, i8 }, [1 x i8] }, { [11 x i8], i8, [4 x i8] }, { [16 x i8] } }], ptr %0, i64 0, i64 %139 call void @llvm.lifetime.start.p0(i64 160, ptr nonnull %4) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(160) %4, ptr noundef nonnull align 8 dereferenceable(160) %0, i64 160, i1 false), !noalias !585 - call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(160) %0, ptr noundef nonnull align 8 dereferenceable(160) %141, i64 160, i1 false), !alias.scope !582, !noalias !585 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(160) %141, ptr noundef nonnull align 8 dereferenceable(160) %4, i64 160, i1 false), !noalias !585 + call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(160) %0, ptr noundef nonnull align 8 dereferenceable(160) %143, i64 160, i1 false), !alias.scope !582, !noalias !585 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(160) %143, ptr noundef nonnull align 8 dereferenceable(160) %4, i64 160, i1 false), !noalias !585 call void @llvm.lifetime.end.p0(i64 160, ptr nonnull %4) - %142 = insertvalue { i64, i1 } poison, i64 %137, 0 - %143 = insertvalue { i64, i1 } %142, i1 %140, 1 - ret { i64, i1 } %143 + %144 = insertvalue { i64, i1 } poison, i64 %139, 0 + %145 = insertvalue { i64, i1 } %144, i1 %142, 1 + ret { i64, i1 } %145 .loopexit5: ; preds = %.lr.ph11.i %lpad.loopexit = landingpad { ptr, i32 } diff --git a/bench/meshlab/optimized/filter_color_projection.ll b/bench/meshlab/optimized/filter_color_projection.ll index f7c1415e62d..82cbe12e21c 100644 --- a/bench/meshlab/optimized/filter_color_projection.ll +++ b/bench/meshlab/optimized/filter_color_projection.ll @@ -6251,13 +6251,13 @@ define void @_ZN3vcg8PullPushER6QImagej(ptr noundef nonnull align 8 dereferencea invoke void @_ZN3vcg11PullPushMipER6QImageS1_j(ptr noundef nonnull align 8 dereferenceable(32) %31, ptr noundef nonnull align 8 dereferenceable(32) %29, i32 noundef %1) to label %32 unwind label %.loopexit.split-lp -.loopexit.loopexit: ; preds = %.lr.ph57 - %lpad.loopexit48 = landingpad { ptr, i32 } +.loopexit.loopexit: ; preds = %45 + %lpad.loopexit46 = landingpad { ptr, i32 } cleanup br label %.loopexit -.loopexit.loopexit.split-lp: ; preds = %.lr.ph._crit_edge - %lpad.loopexit.split-lp49 = landingpad { ptr, i32 } +.loopexit.loopexit.split-lp: ; preds = %48 + %lpad.loopexit.split-lp47 = landingpad { ptr, i32 } cleanup br label %.loopexit @@ -6267,7 +6267,7 @@ define void @_ZN3vcg8PullPushER6QImagej(ptr noundef nonnull align 8 dereferencea br label %.loopexit .loopexit: ; preds = %.loopexit.loopexit, %.loopexit.loopexit.split-lp, %.loopexit.split-lp - %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit.split-lp, %.loopexit.split-lp ], [ %lpad.loopexit48, %.loopexit.loopexit ], [ %lpad.loopexit.split-lp49, %.loopexit.loopexit.split-lp ] + %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit.split-lp, %.loopexit.split-lp ], [ %lpad.loopexit46, %.loopexit.loopexit ], [ %lpad.loopexit.split-lp47, %.loopexit.loopexit.split-lp ] call void @_ZNSt6vectorI6QImageSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %2) #33 resume { ptr, i32 } %lpad.phi @@ -6294,12 +6294,12 @@ define void @_ZN3vcg8PullPushER6QImagej(ptr noundef nonnull align 8 dereferencea %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 br label %12, !llvm.loop !66 -.lr.ph.preheader: ; preds = %41, %35 +.lr.ph: ; preds = %41, %35 %.not3555 = icmp eq i64 %indvars.iv, 0 %44 = load ptr, ptr %2, align 8 - br i1 %.not3555, label %.lr.ph._crit_edge, label %.lr.ph57 + br i1 %.not3555, label %48, label %45 -.lr.ph57: ; preds = %.lr.ph.preheader, %.lr.ph +45: ; preds = %49, %.lr.ph %45 = phi ptr [ %48, %.lr.ph ], [ %44, %.lr.ph.preheader ] %indvars.iv4256 = phi i64 [ %indvars.iv.next43, %.lr.ph ], [ %indvars.iv, %.lr.ph.preheader ] %46 = getelementptr %class.QImage, ptr %45, i64 %indvars.iv4256 @@ -6307,41 +6307,41 @@ define void @_ZN3vcg8PullPushER6QImagej(ptr noundef nonnull align 8 dereferencea invoke void @_ZN3vcg12PullPushFillER6QImageS1_j(ptr noundef nonnull align 8 dereferenceable(32) %47, ptr noundef nonnull align 8 dereferenceable(32) %46, i32 noundef %1) to label %.lr.ph unwind label %.loopexit.loopexit -.lr.ph._crit_edge: ; preds = %.lr.ph, %.lr.ph.preheader +48: ; preds = %49, %.lr.ph %.lcssa = phi ptr [ %44, %.lr.ph.preheader ], [ %48, %.lr.ph ] invoke void @_ZN3vcg12PullPushFillER6QImageS1_j(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(32) %.lcssa, i32 noundef %1) to label %._crit_edge unwind label %.loopexit.loopexit.split-lp -.lr.ph: ; preds = %.lr.ph57 +49: ; preds = %45 %indvars.iv.next43 = add nsw i64 %indvars.iv4256, -1 - %.not35 = icmp eq i64 %indvars.iv.next43, 0 + %50 = icmp eq i64 %indvars.iv.next43, 0 %48 = load ptr, ptr %2, align 8 br i1 %.not35, label %.lr.ph._crit_edge, label %.lr.ph57, !llvm.loop !67 -._crit_edge: ; preds = %.lr.ph._crit_edge +._crit_edge: ; preds = %48 %.not4.i.i.i.i = icmp eq ptr %.lcssa, %9 - br i1 %.not4.i.i.i.i, label %_ZSt8_DestroyIP6QImageS0_EvT_S2_RSaIT0_E.exit.i.thread, label %.lr.ph.i.i.i.i + br i1 %.not4.i.i.i.i, label %_ZSt8_DestroyIP6QImageS0_EvT_S2_RSaIT0_E.exit.i, label %.lr.ph.i.i.i.i .lr.ph.i.i.i.i: ; preds = %._crit_edge, %.lr.ph.i.i.i.i - %.05.i.i.i.i = phi ptr [ %51, %.lr.ph.i.i.i.i ], [ %.lcssa, %._crit_edge ] - %49 = load ptr, ptr %.05.i.i.i.i, align 8 - %50 = load ptr, ptr %49, align 8 + %.05.i.i.i.i = phi ptr [ %53, %.lr.ph.i.i.i.i ], [ %.lcssa, %._crit_edge ] + %51 = load ptr, ptr %.05.i.i.i.i, align 8 + %52 = load ptr, ptr %51, align 8 call void %50(ptr noundef nonnull align 8 dereferenceable(32) %.05.i.i.i.i) #33 - %51 = getelementptr inbounds nuw i8, ptr %.05.i.i.i.i, i64 32 + %53 = getelementptr inbounds nuw i8, ptr %.05.i.i.i.i, i64 32 %.not.i.i.i.i = icmp eq ptr %.05.i.i.i.i, %.08.i.i.i.i.i - br i1 %.not.i.i.i.i, label %_ZSt8_DestroyIP6QImageS0_EvT_S2_RSaIT0_E.exit.i, label %.lr.ph.i.i.i.i, !llvm.loop !68 + br i1 %.not.i.i.i.i, label %_ZSt8_DestroyIP6QImageS0_EvT_S2_RSaIT0_E.exitthread-pre-split.i, label %.lr.ph.i.i.i.i, !llvm.loop !68 -_ZSt8_DestroyIP6QImageS0_EvT_S2_RSaIT0_E.exit.i: ; preds = %.lr.ph.i.i.i.i +_ZSt8_DestroyIP6QImageS0_EvT_S2_RSaIT0_E.exitthread-pre-split.i: ; preds = %.lr.ph.i.i.i.i %.pr.i = load ptr, ptr %2, align 8 %.not.i.i.i = icmp eq ptr %.pr.i, null br i1 %.not.i.i.i, label %_ZNSt6vectorI6QImageSaIS0_EED2Ev.exit, label %_ZSt8_DestroyIP6QImageS0_EvT_S2_RSaIT0_E.exit.i.thread -_ZSt8_DestroyIP6QImageS0_EvT_S2_RSaIT0_E.exit.i.thread: ; preds = %._crit_edge, %_ZSt8_DestroyIP6QImageS0_EvT_S2_RSaIT0_E.exit.i - %52 = phi ptr [ %.pr.i, %_ZSt8_DestroyIP6QImageS0_EvT_S2_RSaIT0_E.exit.i ], [ %.lcssa, %._crit_edge ] +_ZSt8_DestroyIP6QImageS0_EvT_S2_RSaIT0_E.exit.i: ; preds = %._crit_edge, %_ZSt8_DestroyIP6QImageS0_EvT_S2_RSaIT0_E.exitthread-pre-split.i + %54 = phi ptr [ %.pr.i, %_ZSt8_DestroyIP6QImageS0_EvT_S2_RSaIT0_E.exit.i ], [ %.lcssa, %._crit_edge ] call void @_ZdlPv(ptr noundef nonnull %52) #32 br label %_ZNSt6vectorI6QImageSaIS0_EED2Ev.exit -_ZNSt6vectorI6QImageSaIS0_EED2Ev.exit: ; preds = %_ZSt8_DestroyIP6QImageS0_EvT_S2_RSaIT0_E.exit.i, %_ZSt8_DestroyIP6QImageS0_EvT_S2_RSaIT0_E.exit.i.thread +_ZNSt6vectorI6QImageSaIS0_EED2Ev.exit: ; preds = %_ZSt8_DestroyIP6QImageS0_EvT_S2_RSaIT0_E.exit.i, %_ZSt8_DestroyIP6QImageS0_EvT_S2_RSaIT0_E.exit.i ret void } diff --git a/bench/minetest/optimized/mapgen.ll b/bench/minetest/optimized/mapgen.ll index 56662848be6..13848b21dee 100644 --- a/bench/minetest/optimized/mapgen.ll +++ b/bench/minetest/optimized/mapgen.ll @@ -3936,8 +3936,8 @@ if.end57.us22.us.us: ; preds = %for.body50.us12.us. %param158.us23.us.us = getelementptr inbounds nuw i8, ptr %arrayidx54.us17.us.us, i64 2 store i8 15, ptr %param158.us23.us.us, align 2, !tbaa !170 %dec.us24.us.us = add nsw i32 %y.0102.us14.us.us, -1 - %exitcond53.not = icmp eq i32 %y.0102.us14.us.us, %smin52 - br i1 %exitcond53.not, label %cleanup60.us26.us.us, label %for.body50.us12.us.us, !llvm.loop !182 + %cmp48.not.not.us25.us.us = icmp eq i32 %y.0102.us14.us.us, %smin52 + br i1 %cmp48.not.not.us25.us.us, label %cleanup60.us26.us.us, label %for.body50.us12.us.us, !llvm.loop !182 cleanup60.us26.us.us: ; preds = %for.body50.us12.us.us, %if.end57.us22.us.us, %if.else.us10.us.us %inc.us27.us.us = add nsw i32 %x.0105.us2.us.us, 1 @@ -3998,8 +3998,8 @@ if.end57.us22: ; preds = %for.body50.us12 %param158.us23 = getelementptr inbounds nuw i8, ptr %arrayidx54.us17, i64 2 store i8 15, ptr %param158.us23, align 2, !tbaa !170 %dec.us24 = add nsw i32 %y.0102.us14, -1 - %exitcond51.not = icmp eq i32 %y.0102.us14, %smin52 - br i1 %exitcond51.not, label %cleanup60.us26, label %for.body50.us12, !llvm.loop !182 + %cmp48.not.not.us25 = icmp eq i32 %y.0102.us14, %smin52 + br i1 %cmp48.not.not.us25, label %cleanup60.us26, label %for.body50.us12, !llvm.loop !182 cleanup60.us26: ; preds = %for.body50.us12, %if.end57.us22, %for.body16.us1, %if.else.us10 %inc.us27 = add nsw i32 %x.0105.us2, 1 @@ -4052,8 +4052,8 @@ if.end57.us.us.us: ; preds = %for.body50.us.us.us %param158.us.us.us = getelementptr inbounds nuw i8, ptr %arrayidx54.us.us.us, i64 2 store i8 15, ptr %param158.us.us.us, align 2, !tbaa !170 %dec.us.us.us = add nsw i32 %y.0102.us.us.us, -1 - %exitcond49.not = icmp eq i32 %y.0102.us.us.us, %smin52 - br i1 %exitcond49.not, label %cleanup60.loopexit.us.us.us, label %for.body50.us.us.us, !llvm.loop !182 + %cmp48.not.not.us.us.us = icmp eq i32 %y.0102.us.us.us, %smin52 + br i1 %cmp48.not.not.us.us.us, label %cleanup60.loopexit.us.us.us, label %for.body50.us.us.us, !llvm.loop !182 cleanup60.loopexit.us.us.us: ; preds = %if.end57.us.us.us, %for.body50.us.us.us %inc.us.us.us = add nsw i32 %x.0105.us.us.us, 1 @@ -4110,8 +4110,8 @@ if.end57.us: ; preds = %for.body50.us %param158.us = getelementptr inbounds nuw i8, ptr %arrayidx54.us, i64 2 store i8 15, ptr %param158.us, align 2, !tbaa !170 %dec.us = add nsw i32 %y.0102.us, -1 - %exitcond.not = icmp eq i32 %y.0102.us, %smin52 - br i1 %exitcond.not, label %cleanup60.us, label %for.body50.us, !llvm.loop !182 + %cmp48.not.not.us = icmp eq i32 %y.0102.us, %smin52 + br i1 %cmp48.not.not.us, label %cleanup60.us, label %for.body50.us, !llvm.loop !182 cleanup60.us: ; preds = %for.body50.us, %if.end57.us, %for.body16.us %inc.us = add nsw i32 %x.0105.us, 1 diff --git a/bench/mitsuba3/optimized/rgb2spec_opt.ll b/bench/mitsuba3/optimized/rgb2spec_opt.ll index c54b9d762a4..1afd122821d 100644 --- a/bench/mitsuba3/optimized/rgb2spec_opt.ll +++ b/bench/mitsuba3/optimized/rgb2spec_opt.ll @@ -293,7 +293,7 @@ define hidden void @_Z8LUPSolvePPdPiS_iS_(ptr noundef readonly captures(none) %0 .preheader.._crit_edge49_crit_edge: ; preds = %.preheader %.phi.trans.insert = getelementptr inbounds nuw double, ptr %4, i64 %indvars.iv.next61 - %.pre67 = load double, ptr %.phi.trans.insert, align 8 + %.pre66 = load double, ptr %.phi.trans.insert, align 8 br label %._crit_edge49 .lr.ph48: ; preds = %.preheader @@ -319,7 +319,7 @@ define hidden void @_Z8LUPSolvePPdPiS_iS_(ptr noundef readonly captures(none) %0 br i1 %38, label %28, label %._crit_edge49, !llvm.loop !14 ._crit_edge49: ; preds = %28, %.preheader.._crit_edge49_crit_edge - %39 = phi double [ %.pre67, %.preheader.._crit_edge49_crit_edge ], [ %36, %28 ] + %39 = phi double [ %.pre66, %.preheader.._crit_edge49_crit_edge ], [ %36, %28 ] %40 = getelementptr inbounds nuw double, ptr %4, i64 %indvars.iv.next61 %41 = getelementptr inbounds nuw ptr, ptr %0, i64 %indvars.iv.next61 %42 = load ptr, ptr %41, align 8 @@ -953,7 +953,7 @@ define hidden noundef double @_Z12gauss_newtonPKdPdi(ptr noundef readonly captur br label %18 18: ; preds = %.loopexit, %.lr.ph - %.03654 = phi i32 [ 0, %.lr.ph ], [ %182, %.loopexit ] + %.03654 = phi i32 [ 0, %.lr.ph ], [ %183, %.loopexit ] store ptr %5, ptr %8, align 16 store ptr %6, ptr %13, align 8 store ptr %7, ptr %14, align 16 @@ -1217,7 +1217,7 @@ _Z13eval_residualPKdS0_Pd.exit: ; preds = %45 .preheader.._crit_edge49_crit_edge.i: ; preds = %.preheader.i45 %.phi.trans.insert.i = getelementptr inbounds nuw double, ptr %11, i64 %indvars.iv.next61.i - %.pre67.i = load double, ptr %.phi.trans.insert.i, align 8 + %.pre66.i = load double, ptr %.phi.trans.insert.i, align 8 %.phi.trans.insert = getelementptr inbounds nuw ptr, ptr %8, i64 %indvars.iv.next61.i %.pre = load ptr, ptr %.phi.trans.insert, align 8 br label %._crit_edge49.i @@ -1245,68 +1245,68 @@ _Z13eval_residualPKdS0_Pd.exit: ; preds = %45 ._crit_edge49.i: ; preds = %144, %.preheader.._crit_edge49_crit_edge.i %152 = phi ptr [ %.pre, %.preheader.._crit_edge49_crit_edge.i ], [ %143, %144 ] - %153 = phi double [ %.pre67.i, %.preheader.._crit_edge49_crit_edge.i ], [ %151, %144 ] + %153 = phi double [ %.pre66.i, %.preheader.._crit_edge49_crit_edge.i ], [ %151, %144 ] %154 = getelementptr inbounds nuw double, ptr %11, i64 %indvars.iv.next61.i %155 = getelementptr inbounds nuw double, ptr %152, i64 %indvars.iv.next61.i %156 = load double, ptr %155, align 8 %157 = fdiv contract double %153, %156 store double %157, ptr %154, align 8 - %exitcond59 = icmp eq i64 %indvars.iv.next61.i, 0 - br i1 %exitcond59, label %_Z8LUPSolvePPdPiS_iS_.exit, label %.preheader.i45, !llvm.loop !15 + %158 = icmp eq i64 %indvars.iv.next61.i, 0 + br i1 %158, label %_Z8LUPSolvePPdPiS_iS_.exit, label %.preheader.i45, !llvm.loop !15 _Z8LUPSolvePPdPiS_iS_.exit: ; preds = %._crit_edge49.i, %_Z8LUPSolvePPdPiS_iS_.exit %indvars.iv = phi i64 [ %indvars.iv.next, %_Z8LUPSolvePPdPiS_iS_.exit ], [ 0, %._crit_edge49.i ] - %.252 = phi double [ %166, %_Z8LUPSolvePPdPiS_iS_.exit ], [ 0.000000e+00, %._crit_edge49.i ] - %158 = getelementptr inbounds nuw [3 x double], ptr %11, i64 0, i64 %indvars.iv - %159 = load double, ptr %158, align 8 - %160 = getelementptr inbounds nuw double, ptr %1, i64 %indvars.iv - %161 = load double, ptr %160, align 8 - %162 = fsub contract double %161, %159 - store double %162, ptr %160, align 8 - %163 = getelementptr inbounds nuw [3 x double], ptr %9, i64 0, i64 %indvars.iv - %164 = load double, ptr %163, align 8 - %165 = fmul contract double %164, %164 - %166 = fadd contract double %.252, %165 + %.252 = phi double [ %167, %_Z8LUPSolvePPdPiS_iS_.exit ], [ 0.000000e+00, %._crit_edge49.i ] + %159 = getelementptr inbounds nuw [3 x double], ptr %11, i64 0, i64 %indvars.iv + %160 = load double, ptr %159, align 8 + %161 = getelementptr inbounds nuw double, ptr %1, i64 %indvars.iv + %162 = load double, ptr %161, align 8 + %163 = fsub contract double %162, %160 + store double %163, ptr %161, align 8 + %164 = getelementptr inbounds nuw [3 x double], ptr %9, i64 0, i64 %indvars.iv + %165 = load double, ptr %164, align 8 + %166 = fmul contract double %165, %165 + %167 = fadd contract double %.252, %166 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %exitcond61.not = icmp eq i64 %indvars.iv.next, 3 - br i1 %exitcond61.not, label %167, label %_Z8LUPSolvePPdPiS_iS_.exit, !llvm.loop !27 - -167: ; preds = %_Z8LUPSolvePPdPiS_iS_.exit - %168 = load double, ptr %1, align 8 - %169 = load double, ptr %16, align 8 - %170 = fcmp contract olt double %168, %169 - %171 = select i1 %170, double %169, double %168 - %172 = load double, ptr %17, align 8 - %173 = fcmp contract olt double %171, %172 - %174 = select i1 %173, double %172, double %171 - %175 = fcmp contract ogt double %174, 2.000000e+02 - br i1 %175, label %.preheader, label %.loopexit - -.preheader: ; preds = %167 - %176 = fdiv contract double 2.000000e+02, %174 - br label %177 - -177: ; preds = %.preheader, %177 - %indvars.iv62 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next63, %177 ] - %178 = getelementptr inbounds nuw double, ptr %1, i64 %indvars.iv62 - %179 = load double, ptr %178, align 8 - %180 = fmul contract double %176, %179 - store double %180, ptr %178, align 8 - %indvars.iv.next63 = add nuw nsw i64 %indvars.iv62, 1 - %exitcond65.not = icmp eq i64 %indvars.iv.next63, 3 - br i1 %exitcond65.not, label %.loopexit, label %177, !llvm.loop !28 - -.loopexit: ; preds = %177, %167 - %181 = fcmp contract olt double %166, 0x3EB0C6F7A0B5ED8D - %182 = add nuw nsw i32 %.03654, 1 - %exitcond66.not = icmp eq i32 %182, %2 - %or.cond = select i1 %181, i1 true, i1 %exitcond66.not + %exitcond60.not = icmp eq i64 %indvars.iv.next, 3 + br i1 %exitcond60.not, label %168, label %_Z8LUPSolvePPdPiS_iS_.exit, !llvm.loop !27 + +168: ; preds = %_Z8LUPSolvePPdPiS_iS_.exit + %169 = load double, ptr %1, align 8 + %170 = load double, ptr %16, align 8 + %171 = fcmp contract olt double %169, %170 + %172 = select i1 %171, double %170, double %169 + %173 = load double, ptr %17, align 8 + %174 = fcmp contract olt double %172, %173 + %175 = select i1 %174, double %173, double %172 + %176 = fcmp contract ogt double %175, 2.000000e+02 + br i1 %176, label %.preheader, label %.loopexit + +.preheader: ; preds = %168 + %177 = fdiv contract double 2.000000e+02, %175 + br label %178 + +178: ; preds = %.preheader, %178 + %indvars.iv61 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next62, %177 ] + %179 = getelementptr inbounds nuw double, ptr %1, i64 %indvars.iv61 + %180 = load double, ptr %179, align 8 + %181 = fmul contract double %177, %180 + store double %181, ptr %179, align 8 + %indvars.iv.next62 = add nuw nsw i64 %indvars.iv61, 1 + %exitcond64.not = icmp eq i64 %indvars.iv.next62, 3 + br i1 %exitcond64.not, label %.loopexit, label %178, !llvm.loop !28 + +.loopexit: ; preds = %178, %168 + %182 = fcmp contract olt double %167, 0x3EB0C6F7A0B5ED8D + %183 = add nuw nsw i32 %.03654, 1 + %exitcond65.not = icmp eq i32 %183, %2 + %or.cond = select i1 %182, i1 true, i1 %exitcond65.not br i1 %or.cond, label %._crit_edge, label %18, !llvm.loop !29 ._crit_edge: ; preds = %.loopexit, %3 - %.1 = phi double [ 0.000000e+00, %3 ], [ %166, %.loopexit ] - %183 = call contract double @llvm.sqrt.f64(double %.1) - ret double %183 + %.1 = phi double [ 0.000000e+00, %3 ], [ %167, %.loopexit ] + %184 = call contract double @llvm.sqrt.f64(double %.1) + ret double %184 } declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEd(ptr noundef nonnull align 8 dereferenceable(8), double noundef) local_unnamed_addr #9 diff --git a/bench/msdfgen/optimized/Contour.ll b/bench/msdfgen/optimized/Contour.ll index b762d88f23b..02c1457d9a8 100644 --- a/bench/msdfgen/optimized/Contour.ll +++ b/bench/msdfgen/optimized/Contour.ll @@ -498,21 +498,21 @@ for.end.loopexit: ; preds = %for.body br label %for.end for.end: ; preds = %for.end.loopexit, %entry - %6 = phi ptr [ %.pre18, %for.end.loopexit ], [ %0, %entry ] - %7 = phi ptr [ %.pre, %for.end.loopexit ], [ %1, %entry ] - %cmp.i.not15 = icmp eq ptr %7, %6 + %5 = phi ptr [ %.pre18, %for.end.loopexit ], [ %0, %entry ] + %6 = phi ptr [ %.pre, %for.end.loopexit ], [ %1, %entry ] + %cmp.i.not15 = icmp eq ptr %6, %5 br i1 %cmp.i.not15, label %for.end23, label %for.body18 for.body18: ; preds = %for.end, %for.body18 - %edge.sroa.0.016 = phi ptr [ %incdec.ptr.i, %for.body18 ], [ %7, %for.end ] + %edge.sroa.0.016 = phi ptr [ %incdec.ptr.i, %for.body18 ], [ %6, %for.end ] %call20 = tail call noundef ptr @_ZN7msdfgen10EdgeHolderptEv(ptr noundef nonnull align 8 dereferenceable(8) %edge.sroa.0.016) %vtable = load ptr, ptr %call20, align 8 %vfn = getelementptr inbounds nuw i8, ptr %vtable, i64 96 - %8 = load ptr, ptr %vfn, align 8 + %7 = load ptr, ptr %vfn, align 8 tail call void %8(ptr noundef nonnull align 8 dereferenceable(12) %call20) %incdec.ptr.i = getelementptr inbounds nuw i8, ptr %edge.sroa.0.016, i64 8 - %9 = load ptr, ptr %_M_finish.i, align 8 - %cmp.i.not = icmp eq ptr %incdec.ptr.i, %9 + %8 = load ptr, ptr %_M_finish.i, align 8 + %cmp.i.not = icmp eq ptr %incdec.ptr.i, %8 br i1 %cmp.i.not, label %for.end23, label %for.body18, !llvm.loop !11 for.end23: ; preds = %for.body18, %for.end diff --git a/bench/ncnn/optimized/caffe.pb.ll b/bench/ncnn/optimized/caffe.pb.ll index bcdb8107e73..e895a181377 100644 --- a/bench/ncnn/optimized/caffe.pb.ll +++ b/bench/ncnn/optimized/caffe.pb.ll @@ -23649,13 +23649,13 @@ _ZNK5caffe14LayerParameter13IsInitializedEv.exit.i.i: ; preds = %60, %50 _ZNK5caffe12NetParameter13IsInitializedEv.exit.thread: ; preds = %_ZNK5caffe14LayerParameter13IsInitializedEv.exit.i.i, %42, %.loopexit %65 = and i32 %36, 128 - %.not15 = icmp eq i32 %65, 0 + %.not14 = icmp eq i32 %65, 0 %66 = getelementptr inbounds nuw i8, ptr %0, i64 192 %67 = load ptr, ptr %66, align 8 %68 = icmp ne ptr %67, null - %69 = select i1 %.not15, i1 true, i1 %68 + %69 = select i1 %.not14, i1 true, i1 %68 tail call void @llvm.assume(i1 %69) - br i1 %.not15, label %_ZN6google8protobuf8internal17AllAreInitializedIN5caffe12NetParameterEEEbRKNS0_16RepeatedPtrFieldIT_EE.exit, label %70 + br i1 %.not14, label %_ZN6google8protobuf8internal17AllAreInitializedIN5caffe12NetParameterEEEbRKNS0_16RepeatedPtrFieldIT_EE.exit, label %70 70: ; preds = %_ZNK5caffe12NetParameter13IsInitializedEv.exit.thread %71 = getelementptr inbounds nuw i8, ptr %67, i64 120 diff --git a/bench/ncnn/optimized/cpu.ll b/bench/ncnn/optimized/cpu.ll index 11e25c173c3..ee3fd76a9e8 100644 --- a/bench/ncnn/optimized/cpu.ll +++ b/bench/ncnn/optimized/cpu.ll @@ -1413,26 +1413,26 @@ _ZNSt6vectorIiSaIiEED2Ev.exit: ; preds = %._crit_edge186, %10 br label %.critedge113 .lr.ph185: ; preds = %.preheader151, %_ZNK4ncnn6CpuSet10is_enabledEi.exit.thread - %indvars.iv205 = phi i64 [ %indvars.iv.next206, %_ZNK4ncnn6CpuSet10is_enabledEi.exit.thread ], [ 0, %.preheader151 ] + %indvars.iv204 = phi i64 [ %indvars.iv.next205, %_ZNK4ncnn6CpuSet10is_enabledEi.exit.thread ], [ 0, %.preheader151 ] %.068183 = phi i32 [ %.1, %_ZNK4ncnn6CpuSet10is_enabledEi.exit.thread ], [ 0, %.preheader151 ] %.sroa.0.0182 = phi ptr [ %.sroa.0.1, %_ZNK4ncnn6CpuSet10is_enabledEi.exit.thread ], [ null, %.preheader151 ] %.sroa.14.0181 = phi ptr [ %.sroa.14.1, %_ZNK4ncnn6CpuSet10is_enabledEi.exit.thread ], [ null, %.preheader151 ] %.sroa.10.0180 = phi ptr [ %.sroa.10.1, %_ZNK4ncnn6CpuSet10is_enabledEi.exit.thread ], [ null, %.preheader151 ] - %113 = icmp samesign ult i64 %indvars.iv205, 1024 + %113 = icmp samesign ult i64 %indvars.iv204, 1024 br i1 %113, label %_ZNK4ncnn6CpuSet10is_enabledEi.exit, label %_ZNK4ncnn6CpuSet10is_enabledEi.exit.thread _ZNK4ncnn6CpuSet10is_enabledEi.exit: ; preds = %.lr.ph185 - %114 = lshr i64 %indvars.iv205, 6 + %114 = lshr i64 %indvars.iv204, 6 %115 = getelementptr inbounds nuw i64, ptr %7, i64 %114 %116 = load i64, ptr %115, align 8, !tbaa !4 - %117 = and i64 %indvars.iv205, 63 + %117 = and i64 %indvars.iv204, 63 %118 = shl nuw i64 1, %117 %119 = and i64 %116, %118 %.not146 = icmp eq i64 %119, 0 br i1 %.not146, label %_ZNK4ncnn6CpuSet10is_enabledEi.exit.thread, label %120 120: ; preds = %_ZNK4ncnn6CpuSet10is_enabledEi.exit - %121 = trunc nuw nsw i64 %indvars.iv205 to i32 + %121 = trunc nuw nsw i64 %indvars.iv204 to i32 %122 = invoke fastcc noundef i32 @_ZL19get_thread_siblingsi(i32 noundef %121) to label %123 unwind label %129 @@ -1455,8 +1455,8 @@ _ZNK4ncnn6CpuSet10is_enabledEi.exit: ; preds = %.lr.ph185 131: ; preds = %.lr.ph178 %132 = add nuw i64 %.0177, 1 - %exitcond204.not = icmp eq i64 %132, %128 - br i1 %exitcond204.not, label %.critedge115, label %.lr.ph178, !llvm.loop !33 + %exitcond.not = icmp eq i64 %132, %128 + br i1 %exitcond.not, label %.critedge115, label %.lr.ph178, !llvm.loop !33 .lr.ph178: ; preds = %.preheader, %131 %.0177 = phi i64 [ %132, %131 ], [ 0, %.preheader ] @@ -1470,8 +1470,8 @@ _ZNK4ncnn6CpuSet10is_enabledEi.exit: ; preds = %.lr.ph185 br i1 %.not.i, label %137, label %136 .critedge115.thread: ; preds = %.preheader - %.not.i213 = icmp eq ptr %.sroa.10.0180, %.sroa.14.0181 - br i1 %.not.i213, label %_ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i.i, label %136 + %.not.i212 = icmp eq ptr %.sroa.10.0180, %.sroa.14.0181 + br i1 %.not.i212, label %_ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i.i, label %136 136: ; preds = %.critedge115.thread, %.critedge115 store i32 %122, ptr %.sroa.10.0180, align 4, !tbaa !10 @@ -1483,7 +1483,7 @@ _ZNK4ncnn6CpuSet10is_enabledEi.exit: ; preds = %.lr.ph185 139: ; preds = %137 invoke void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.10) #26 - to label %.noexc unwind label %.thread214 + to label %.noexc unwind label %.thread213 .noexc: ; preds = %139 unreachable @@ -1535,7 +1535,7 @@ _ZNSt6vectorIiSaIiEE9push_backERKi.exit: ; preds = %_ZNSt6vectorIiSaIiE cleanup br label %155 -.thread214: ; preds = %139 +.thread213: ; preds = %139 %lpad.loopexit.split-lp = landingpad { ptr, i32 } cleanup br label %156 @@ -1545,10 +1545,10 @@ _ZNK4ncnn6CpuSet10is_enabledEi.exit.thread: ; preds = %.lr.ph178, %.lr.ph1 %.sroa.14.1 = phi ptr [ %.sroa.14.0181, %_ZNK4ncnn6CpuSet10is_enabledEi.exit ], [ %.sroa.14.0181, %123 ], [ %.sroa.14.3, %_ZNSt6vectorIiSaIiEE9push_backERKi.exit ], [ %.sroa.14.0181, %.lr.ph185 ], [ %.sroa.14.0181, %.lr.ph178 ] %.sroa.0.1 = phi ptr [ %.sroa.0.0182, %_ZNK4ncnn6CpuSet10is_enabledEi.exit ], [ %.sroa.0.0182, %123 ], [ %.sroa.0.3, %_ZNSt6vectorIiSaIiEE9push_backERKi.exit ], [ %.sroa.0.0182, %.lr.ph185 ], [ %.sroa.0.0182, %.lr.ph178 ] %.1 = phi i32 [ %.068183, %_ZNK4ncnn6CpuSet10is_enabledEi.exit ], [ %.068183, %123 ], [ %151, %_ZNSt6vectorIiSaIiEE9push_backERKi.exit ], [ %.068183, %.lr.ph185 ], [ %.068183, %.lr.ph178 ] - %indvars.iv.next206 = add nuw nsw i64 %indvars.iv205, 1 + %indvars.iv.next205 = add nuw nsw i64 %indvars.iv204, 1 %152 = load i32, ptr @_ZL10g_cpucount, align 4, !tbaa !10 %153 = sext i32 %152 to i64 - %154 = icmp slt i64 %indvars.iv.next206, %153 + %154 = icmp slt i64 %indvars.iv.next205, %153 br i1 %154, label %.lr.ph185, label %._crit_edge186, !llvm.loop !34 155: ; preds = %.loopexit, %129 @@ -1556,8 +1556,8 @@ _ZNK4ncnn6CpuSet10is_enabledEi.exit.thread: ; preds = %.lr.ph178, %.lr.ph1 %.not.i.i.i122 = icmp eq ptr %.sroa.0.0182, null br i1 %.not.i.i.i122, label %_ZNSt6vectorIiSaIiEED2Ev.exit123, label %156 -156: ; preds = %.thread214, %155 - %.pn217 = phi { ptr, i32 } [ %lpad.loopexit.split-lp, %.thread214 ], [ %.pn, %155 ] +156: ; preds = %.thread213, %155 + %.pn216 = phi { ptr, i32 } [ %lpad.loopexit.split-lp, %.thread214 ], [ %.pn, %155 ] %157 = ptrtoint ptr %.sroa.14.0181 to i64 %158 = ptrtoint ptr %.sroa.0.0182 to i64 %159 = sub i64 %157, %158 @@ -1565,11 +1565,11 @@ _ZNK4ncnn6CpuSet10is_enabledEi.exit.thread: ; preds = %.lr.ph178, %.lr.ph1 br label %_ZNSt6vectorIiSaIiEED2Ev.exit123 _ZNSt6vectorIiSaIiEED2Ev.exit123: ; preds = %155, %156 - %.pn218 = phi { ptr, i32 } [ %.pn, %155 ], [ %.pn217, %156 ] + %.pn217 = phi { ptr, i32 } [ %.pn, %155 ], [ %.pn216, %156 ] call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %7) #18 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #18 call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %3) #18 - resume { ptr, i32 } %.pn218 + resume { ptr, i32 } %.pn217 .critedge113: ; preds = %.thread144, %.critedge111, %_ZNSt6vectorIiSaIiEED2Ev.exit, %101 %.6 = phi i32 [ %103, %101 ], [ %112, %_ZNSt6vectorIiSaIiEED2Ev.exit ], [ 0, %.critedge111 ], [ 0, %.thread144 ] diff --git a/bench/ncnn/optimized/ncnnoptimize.ll b/bench/ncnn/optimized/ncnnoptimize.ll index 4313275f204..92985ed2568 100644 --- a/bench/ncnn/optimized/ncnnoptimize.ll +++ b/bench/ncnn/optimized/ncnnoptimize.ll @@ -25382,7 +25382,7 @@ define dso_local noundef i32 @_ZN11NetOptimize17eliminate_dropoutEv(ptr noundef ._crit_edge..thread_crit_edge: ; preds = %._crit_edge %.pre = load ptr, ptr %2, align 8, !tbaa !39 - %.pre43 = load ptr, ptr %.pre, align 8, !tbaa !44 + %.pre42 = load ptr, ptr %.pre, align 8, !tbaa !44 br label %.thread .thread.loopexit: ; preds = %53 @@ -25390,7 +25390,7 @@ define dso_local noundef i32 @_ZN11NetOptimize17eliminate_dropoutEv(ptr noundef br label %.thread .thread: ; preds = %._crit_edge..thread_crit_edge, %.thread.loopexit - %60 = phi ptr [ %.pre43, %._crit_edge..thread_crit_edge ], [ %43, %.thread.loopexit ] + %60 = phi ptr [ %.pre42, %._crit_edge..thread_crit_edge ], [ %43, %.thread.loopexit ] %.02427 = phi i32 [ %.02429, %._crit_edge..thread_crit_edge ], [ %59, %.thread.loopexit ] %61 = sext i32 %.02427 to i64 %62 = getelementptr inbounds nuw ptr, ptr %60, i64 %61 @@ -25421,8 +25421,8 @@ define dso_local noundef i32 @_ZN11NetOptimize17eliminate_dropoutEv(ptr noundef ._crit_edge.thread: ; preds = %56, %20, %._crit_edge, %.thread, %12 %83 = add nuw i64 %.032, 1 %indvars.iv.next = add i32 %indvars.iv, 1 - %exitcond42.not = icmp eq i64 %83, %10 - br i1 %exitcond42.not, label %._crit_edge35, label %12, !llvm.loop !864 + %exitcond.not = icmp eq i64 %83, %10 + br i1 %exitcond.not, label %._crit_edge35, label %12, !llvm.loop !864 } ; Function Attrs: mustprogress uwtable @@ -25625,8 +25625,8 @@ define dso_local noundef i32 @_ZN11NetOptimize20eliminate_pooling1x1Ev(ptr nound 113: ; preds = %33, %30, %27, %20, %45, %42, %39, %36, %48, %._crit_edge, %89, %12 %114 = add nuw i64 %.065, 1 %indvars.iv.next = add i32 %indvars.iv, 1 - %exitcond77.not = icmp eq i64 %114, %10 - br i1 %exitcond77.not, label %._crit_edge68, label %12, !llvm.loop !867 + %exitcond76.not = icmp eq i64 %114, %10 + br i1 %exitcond76.not, label %._crit_edge68, label %12, !llvm.loop !867 } ; Function Attrs: mustprogress uwtable @@ -25704,8 +25704,8 @@ define dso_local noundef i32 @_ZN11NetOptimize14eliminate_noopEv(ptr noundef non %49 = getelementptr inbounds nuw %"class.ncnn::Blob", ptr %44, i64 %48, i32 1 store i32 -1, ptr %49, align 8, !tbaa !127 %50 = add nuw i64 %.04562, 1 - %exitcond79.not = icmp eq i64 %50, %42 - br i1 %exitcond79.not, label %.loopexit50.thread.sink.split, label %45, !llvm.loop !868 + %exitcond78.not = icmp eq i64 %50, %42 + br i1 %exitcond78.not, label %.loopexit50.thread.sink.split, label %45, !llvm.loop !868 51: ; preds = %20 %52 = load i32, ptr %26, align 4, !tbaa !78 @@ -25789,9 +25789,9 @@ define dso_local noundef i32 @_ZN11NetOptimize14eliminate_noopEv(ptr noundef non %99 = load ptr, ptr %98, align 8, !tbaa !77 %100 = load i32, ptr %99, align 4, !tbaa !78 %101 = getelementptr inbounds nuw i8, ptr %91, i64 136 - %sext91 = shl i64 %.04456, 32 + %sext90 = shl i64 %.04456, 32 %102 = load ptr, ptr %101, align 8, !tbaa !77 - %103 = ashr exact i64 %sext91, 30 + %103 = ashr exact i64 %sext90, 30 %104 = getelementptr inbounds nuw i8, ptr %102, i64 %103 store i32 %100, ptr %104, align 4, !tbaa !78 %105 = load ptr, ptr %11, align 8, !tbaa !45 @@ -25811,8 +25811,8 @@ define dso_local noundef i32 @_ZN11NetOptimize14eliminate_noopEv(ptr noundef non .loopexit50.thread: ; preds = %.loopexit, %.loopexit50.thread.sink.split, %51, %.loopexit50, %12 %113 = add nuw i64 %.064, 1 %indvars.iv.next = add i32 %indvars.iv, 1 - %exitcond81.not = icmp eq i64 %113, %10 - br i1 %exitcond81.not, label %._crit_edge67, label %12, !llvm.loop !871 + %exitcond80.not = icmp eq i64 %113, %10 + br i1 %exitcond80.not, label %._crit_edge67, label %12, !llvm.loop !871 } ; Function Attrs: mustprogress uwtable @@ -25894,7 +25894,7 @@ define dso_local noundef i32 @_ZN11NetOptimize15eliminate_splitEv(ptr noundef no br i1 %exitcond.not, label %._crit_edge, label %37, !llvm.loop !872 ._crit_edge.thread: ; preds = %20, %._crit_edge - %.045.lcssa90 = phi i64 [ %36, %._crit_edge ], [ -1, %20 ] + %.045.lcssa89 = phi i64 [ %36, %._crit_edge ], [ -1, %20 ] %46 = getelementptr inbounds nuw i8, ptr %24, i64 112 %47 = load ptr, ptr %46, align 8, !tbaa !77 %48 = load i32, ptr %47, align 4, !tbaa !78 @@ -25984,7 +25984,7 @@ define dso_local noundef i32 @_ZN11NetOptimize15eliminate_splitEv(ptr noundef no %93 = load ptr, ptr %92, align 8, !tbaa !52 %94 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %89, ptr noundef nonnull @.str.188, ptr noundef %91, ptr noundef %93) #27 %95 = load ptr, ptr %25, align 8, !tbaa !77 - %96 = getelementptr inbounds nuw i32, ptr %95, i64 %.045.lcssa90 + %96 = getelementptr inbounds nuw i32, ptr %95, i64 %.045.lcssa89 %97 = load i32, ptr %96, align 4, !tbaa !78 %98 = getelementptr inbounds nuw i8, ptr %88, i64 136 %99 = load ptr, ptr %98, align 8, !tbaa !77 @@ -26004,8 +26004,8 @@ define dso_local noundef i32 @_ZN11NetOptimize15eliminate_splitEv(ptr noundef no 109: ; preds = %._crit_edge, %._crit_edge64, %83, %12 %110 = add nuw i64 %.072, 1 %indvars.iv.next = add i32 %indvars.iv, 1 - %exitcond87.not = icmp eq i64 %110, %10 - br i1 %exitcond87.not, label %._crit_edge75, label %12, !llvm.loop !875 + %exitcond86.not = icmp eq i64 %110, %10 + br i1 %exitcond86.not, label %._crit_edge75, label %12, !llvm.loop !875 } ; Function Attrs: mustprogress uwtable diff --git a/bench/nix/optimized/app.ll b/bench/nix/optimized/app.ll index bf38e5f0875..21ff9d9e5c9 100644 --- a/bench/nix/optimized/app.ll +++ b/bench/nix/optimized/app.ll @@ -13369,7 +13369,7 @@ define linkonce_odr void @_ZNSt6vectorIbSaIbEEC2ERKS1_(ptr noundef nonnull align %20 = lshr i64 %19, 3 %21 = and i64 %20, 2305843009213693944 %22 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %21) #28 - to label %.noexc unwind label %56 + to label %.noexc unwind label %57 .noexc: ; preds = %18 %23 = lshr i64 %19, 6 @@ -13457,17 +13457,17 @@ _ZNSt14_Bit_referenceaSEb.exit.i.i.i.i.i.i: ; preds = %47, %44 %.sroa.03.1.idx.i.i.i.i.i.i = select i1 %54, i64 8, i64 0 %.sroa.03.1.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %.sroa.03.016.i.i.i.i.i.i, i64 %.sroa.03.1.idx.i.i.i.i.i.i %55 = add nsw i64 %.019.i.i.i.i.i.i, -1 - %exitcond.not.i = icmp eq i64 %55, 0 - br i1 %exitcond.not.i, label %.loopexit, label %.lr.ph.i.i.i.i.i.i, !llvm.loop !97 + %56 = icmp eq i64 %55, 0 + br i1 %56, label %.loopexit, label %.lr.ph.i.i.i.i.i.i, !llvm.loop !97 .loopexit: ; preds = %_ZNSt14_Bit_referenceaSEb.exit.i.i.i.i.i.i, %_ZSt4copyIPmS0_ET0_T_S2_S1_.exit.i ret void -56: ; preds = %18 - %57 = landingpad { ptr, i32 } +57: ; preds = %18 + %58 = landingpad { ptr, i32 } cleanup tail call void @_ZNSt13_Bvector_baseISaIbEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %0) #26 - resume { ptr, i32 } %57 + resume { ptr, i32 } %58 } ; Function Attrs: mustprogress uwtable diff --git a/bench/nuttx/optimized/lib_libvsprintf.ll b/bench/nuttx/optimized/lib_libvsprintf.ll index 44fedd19eca..34bc99365da 100644 --- a/bench/nuttx/optimized/lib_libvsprintf.ll +++ b/bench/nuttx/optimized/lib_libvsprintf.ll @@ -347,7 +347,7 @@ define internal fastcc i32 @vsprintf_internal(ptr noundef %0, ptr noundef readon br i1 %.not569, label %179, label %152 152: ; preds = %150 - %.neg177 = select i1 %.not572, i32 -3, i32 -4 + %.neg176 = select i1 %.not572, i32 -3, i32 -4 %153 = select i1 %.not572, i32 3, i32 4 %154 = icmp sgt i32 %.0484, %153 br i1 %154, label %155, label %.loopexit55 @@ -367,7 +367,7 @@ define internal fastcc i32 @vsprintf_internal(ptr noundef %0, ptr noundef readon br i1 %.not584, label %.loopexit55.loopexit, label %.preheader54, !llvm.loop !8 .loopexit55.loopexit: ; preds = %.preheader54 - %161 = add i32 %.neg177, %.1452.ph + %161 = add i32 %.neg176, %.1452.ph %162 = add i32 %161, %.0484 br label %.loopexit55 @@ -478,8 +478,8 @@ define internal fastcc i32 @vsprintf_internal(ptr noundef %0, ptr noundef readon %207 = add nsw i32 %.4480.fr, 1 %208 = lshr i32 %203, 4 %209 = and i32 %208, 1 - %spec.select227 = select i1 %.not573, i32 %209, i32 %207 - %.2438 = add i32 %.1437, %spec.select227 + %spec.select226 = select i1 %.not573, i32 %209, i32 %207 + %.2438 = add i32 %.1437, %spec.select226 %210 = icmp sgt i32 %.0484, %.2438 %211 = sub nsw i32 %.0484, %.2438 %212 = select i1 %210, i32 %211, i32 0 @@ -573,8 +573,8 @@ define internal fastcc i32 @vsprintf_internal(ptr noundef %0, ptr noundef readon 245: ; preds = %237, %241 %.0426 = phi i8 [ %244, %241 ], [ 48, %237 ] %246 = add i32 %.3439, -1 - %exitcond.not = icmp eq i32 %.3439, %smin - br i1 %exitcond.not, label %251, label %247 + %.not581 = icmp eq i32 %.3439, %smin + br i1 %.not581, label %251, label %247 247: ; preds = %245 %248 = add nsw i32 %.13464, 1 @@ -838,18 +838,18 @@ define internal fastcc i32 @vsprintf_internal(ptr noundef %0, ptr noundef readon br i1 %377, label %.lr.ph, label %.loopexit57.loopexit, !llvm.loop !13 .loopexit57.loopexit: ; preds = %.lr.ph - %sext176 = shl i64 %indvars.iv.next, 32 - %.pre172 = ashr exact i64 %sext176, 32 + %sext175 = shl i64 %indvars.iv.next, 32 + %.pre171 = ashr exact i64 %sext175, 32 br label %.loopexit57 .loopexit57: ; preds = %.loopexit57.loopexit, %370 - %.pre-phi173 = phi i64 [ %.pre172, %.loopexit57.loopexit ], [ %373, %370 ] + %.pre-phi172 = phi i64 [ %.pre171, %.loopexit57.loopexit ], [ %373, %370 ] %.18 = phi i32 [ %375, %.loopexit57.loopexit ], [ %.1452.ph, %370 ] %378 = trunc i64 %.0474 to i32 %379 = add i32 %.18, %378 %380 = load ptr, ptr %10, align 8 %381 = call i32 %380(ptr noundef %0, ptr noundef nonnull %.0475, i32 noundef %378) #5 - %382 = call i64 @llvm.usub.sat.i64(i64 %.pre-phi173, i64 %.0474) + %382 = call i64 @llvm.usub.sat.i64(i64 %.pre-phi172, i64 %.0474) %383 = trunc i64 %382 to i32 br label %.loopexit44 @@ -965,9 +965,9 @@ define internal fastcc i32 @vsprintf_internal(ptr noundef %0, ptr noundef readon %or.cond23 = select i1 %443, i1 %444, i1 false %445 = icmp eq i64 %.0423, 0 %or.cond25 = and i1 %445, %or.cond23 - br i1 %or.cond25, label %.thread196, label %447 + br i1 %or.cond25, label %.thread195, label %447 -.thread196: ; preds = %438 +.thread195: ; preds = %438 %446 = and i16 %.0441, -4114 br label %560 @@ -1216,11 +1216,11 @@ define internal fastcc i32 @vsprintf_internal(ptr noundef %0, ptr noundef readon %spec.select607 = select i1 %or.cond604, i16 %559, i16 %553 br label %560 -560: ; preds = %.thread196, %556, %552, %551 - %.6195 = phi ptr [ %.6, %552 ], [ %.6, %551 ], [ %.6, %556 ], [ %.3, %.thread196 ] - %.5418192 = phi i8 [ %.5418, %552 ], [ %.5418, %551 ], [ %.5418, %556 ], [ 0, %.thread196 ] - %.2486102835189 = phi i32 [ %.2486102835, %552 ], [ %.2486102835, %551 ], [ %.2486102835, %556 ], [ %.0484, %.thread196 ] - %.2478112737187 = phi i32 [ %.2478112737, %552 ], [ %.2478112737, %551 ], [ %.2478112737, %556 ], [ 0, %.thread196 ] +560: ; preds = %.thread195, %556, %552, %551 + %.6194 = phi ptr [ %.6, %552 ], [ %.6, %551 ], [ %.6, %556 ], [ %.3, %.thread196 ] + %.5418191 = phi i8 [ %.5418, %552 ], [ %.5418, %551 ], [ %.5418, %556 ], [ 0, %.thread196 ] + %.2486102835188 = phi i32 [ %.2486102835, %552 ], [ %.2486102835, %551 ], [ %.2486102835, %556 ], [ %.0484, %.thread196 ] + %.2478112737186 = phi i32 [ %.2478112737, %552 ], [ %.2478112737, %551 ], [ %.2478112737, %556 ], [ 0, %.thread196 ] %.0469 = phi i8 [ %.5418, %552 ], [ %.5418, %551 ], [ %557, %556 ], [ 0, %.thread196 ] %.16 = phi i16 [ %553, %552 ], [ %.11, %551 ], [ %spec.select607, %556 ], [ %446, %.thread196 ] %561 = zext i16 %.16 to i32 @@ -1229,7 +1229,7 @@ define internal fastcc i32 @vsprintf_internal(ptr noundef %0, ptr noundef readon br i1 %.not555, label %573, label %563 563: ; preds = %560 - %564 = zext i8 %.5418192 to i64 + %564 = zext i8 %.5418191 to i64 %565 = add nsw i64 %564, -1 %566 = getelementptr inbounds [22 x i8], ptr %4, i64 0, i64 %565 %567 = load i8, ptr %566, align 1 @@ -1238,7 +1238,7 @@ define internal fastcc i32 @vsprintf_internal(ptr noundef %0, ptr noundef readon 569: ; preds = %563 %570 = and i16 %.16, -24593 - %.pre170 = zext i16 %570 to i32 + %.pre169 = zext i16 %570 to i32 br label %576 571: ; preds = %563 @@ -1256,38 +1256,38 @@ define internal fastcc i32 @vsprintf_internal(ptr noundef %0, ptr noundef readon br label %576 576: ; preds = %573, %571, %569 - %.pre-phi171 = phi i32 [ %561, %573 ], [ %561, %571 ], [ %.pre170, %569 ] + %.pre-phi170 = phi i32 [ %561, %573 ], [ %561, %571 ], [ %.pre169, %569 ] %.1470 = phi i8 [ %spec.select606, %573 ], [ %spec.select605, %571 ], [ %.0469, %569 ] - %577 = and i32 %.pre-phi171, 8 + %577 = and i32 %.pre-phi170, 8 %578 = icmp eq i32 %577, 0 br i1 %578, label %579, label %..loopexit45_crit_edge ..loopexit45_crit_edge: ; preds = %576 - %.pre174 = zext i8 %.1470 to i32 + %.pre173 = zext i8 %.1470 to i32 br label %.loopexit45 579: ; preds = %576 - %580 = and i32 %.pre-phi171, 1 + %580 = and i32 %.pre-phi170, 1 %.not558 = icmp eq i32 %580, 0 br i1 %.not558, label %589, label %581 581: ; preds = %579 - %582 = zext i8 %.5418192 to i32 + %582 = zext i8 %.5418191 to i32 %583 = zext i8 %.1470 to i32 - %584 = icmp sgt i32 %.2486102835189, %583 + %584 = icmp sgt i32 %.2486102835188, %583 br i1 %584, label %585, label %589 585: ; preds = %581 - %586 = add nuw i32 %.2486102835189, %582 + %586 = add nuw i32 %.2486102835188, %582 %587 = sub i32 %586, %583 - %588 = trunc i32 %.2486102835189 to i8 + %588 = trunc i32 %.2486102835188 to i8 br label %589 589: ; preds = %581, %585, %579 - %.6482 = phi i32 [ %587, %585 ], [ %582, %581 ], [ %.2478112737187, %579 ] + %.6482 = phi i32 [ %587, %585 ], [ %582, %581 ], [ %.2478112737186, %579 ] %.3472 = phi i8 [ %588, %585 ], [ %.1470, %581 ], [ %.1470, %579 ] %590 = zext i8 %.3472 to i32 - %591 = icmp sgt i32 %.2486102835189, %590 + %591 = icmp sgt i32 %.2486102835188, %590 br i1 %591, label %.lr.ph104, label %.loopexit45 .lr.ph104: ; preds = %589, %.lr.ph104 @@ -1298,17 +1298,17 @@ define internal fastcc i32 @vsprintf_internal(ptr noundef %0, ptr noundef readon call void %593(ptr noundef %0, i32 noundef 32) #5 %594 = add i8 %.4473102, 1 %595 = zext i8 %594 to i32 - %596 = icmp samesign ugt i32 %.2486102835189, %595 + %596 = icmp samesign ugt i32 %.2486102835188, %595 br i1 %596, label %.lr.ph104, label %.loopexit45, !llvm.loop !14 .loopexit45: ; preds = %.lr.ph104, %..loopexit45_crit_edge, %589 - %.pre-phi175 = phi i32 [ %.pre174, %..loopexit45_crit_edge ], [ %590, %589 ], [ %595, %.lr.ph104 ] - %.5481 = phi i32 [ %.2478112737187, %..loopexit45_crit_edge ], [ %.6482, %589 ], [ %.6482, %.lr.ph104 ] + %.pre-phi174 = phi i32 [ %.pre173, %..loopexit45_crit_edge ], [ %590, %589 ], [ %595, %.lr.ph104 ] + %.5481 = phi i32 [ %.2478112737186, %..loopexit45_crit_edge ], [ %.6482, %589 ], [ %.6482, %.lr.ph104 ] %.20 = phi i32 [ %.1452.ph, %..loopexit45_crit_edge ], [ %.1452.ph, %589 ], [ %592, %.lr.ph104 ] - %597 = icmp sgt i32 %.2486102835189, %.pre-phi175 - %598 = sub nsw i32 %.2486102835189, %.pre-phi175 + %597 = icmp sgt i32 %.2486102835188, %.pre-phi174 + %598 = sub nsw i32 %.2486102835188, %.pre-phi174 %599 = select i1 %597, i32 %598, i32 0 - %600 = and i32 %.pre-phi171, 16 + %600 = and i32 %.pre-phi170, 16 %.not559 = icmp eq i32 %600, 0 br i1 %.not559, label %610, label %601 @@ -1316,28 +1316,28 @@ define internal fastcc i32 @vsprintf_internal(ptr noundef %0, ptr noundef readon %602 = add nsw i32 %.20, 1 %603 = load ptr, ptr %6, align 8 call void %603(ptr noundef %0, i32 noundef 48) #5 - %604 = and i32 %.pre-phi171, 16384 + %604 = and i32 %.pre-phi170, 16384 %.not563 = icmp eq i32 %604, 0 br i1 %.not563, label %619, label %605 605: ; preds = %601 %606 = add nsw i32 %.20, 2 %607 = load ptr, ptr %6, align 8 - %608 = and i32 %.pre-phi171, 8192 + %608 = and i32 %.pre-phi170, 8192 %.not564 = icmp eq i32 %608, 0 %609 = select i1 %.not564, i32 120, i32 88 call void %607(ptr noundef nonnull %0, i32 noundef %609) #5 br label %619 610: ; preds = %.loopexit45 - %611 = and i32 %.pre-phi171, 4102 + %611 = and i32 %.pre-phi170, 4102 %.not560 = icmp eq i32 %611, 0 br i1 %.not560, label %619, label %612 612: ; preds = %610 - %613 = and i32 %.pre-phi171, 2 + %613 = and i32 %.pre-phi170, 2 %.not561 = icmp eq i32 %613, 0 - %614 = and i32 %.pre-phi171, 4096 + %614 = and i32 %.pre-phi170, 4096 %.not562 = icmp eq i32 %614, 0 %615 = add nsw i32 %.20, 1 %616 = load ptr, ptr %6, align 8 @@ -1348,7 +1348,7 @@ define internal fastcc i32 @vsprintf_internal(ptr noundef %0, ptr noundef readon 619: ; preds = %610, %612, %601, %605 %.22 = phi i32 [ %606, %605 ], [ %602, %601 ], [ %615, %612 ], [ %.20, %610 ] - %620 = zext i8 %.5418192 to i32 + %620 = zext i8 %.5418191 to i32 %621 = icmp sgt i32 %.5481, %620 br i1 %621, label %.lr.ph109, label %.preheader @@ -1359,11 +1359,11 @@ define internal fastcc i32 @vsprintf_internal(ptr noundef %0, ptr noundef readon .preheader: ; preds = %.preheader.loopexit, %619 %.23.lcssa = phi i32 [ %.22, %619 ], [ %623, %.preheader.loopexit ] - %.not565111 = icmp eq i8 %.5418192, 0 + %.not565111 = icmp eq i8 %.5418191, 0 br i1 %.not565111, label %.loopexit44, label %.lr.ph114.preheader .lr.ph114.preheader: ; preds = %.preheader - %624 = zext i8 %.5418192 to i64 + %624 = zext i8 %.5418191 to i64 br label %.lr.ph114 .lr.ph109: ; preds = %619, %.lr.ph109 @@ -1371,35 +1371,35 @@ define internal fastcc i32 @vsprintf_internal(ptr noundef %0, ptr noundef readon %625 = load ptr, ptr %6, align 8 call void %625(ptr noundef %0, i32 noundef 48) #5 %626 = add i32 %.7483107, -1 - %exitcond165.not = icmp eq i32 %626, %620 - br i1 %exitcond165.not, label %.preheader.loopexit, label %.lr.ph109, !llvm.loop !15 + %627 = icmp eq i32 %626, %620 + br i1 %627, label %.preheader.loopexit, label %.lr.ph109, !llvm.loop !15 .lr.ph114: ; preds = %.lr.ph114.preheader, %.lr.ph114 - %indvars.iv166 = phi i64 [ %624, %.lr.ph114.preheader ], [ %629, %.lr.ph114 ] - %.24112 = phi i32 [ %.23.lcssa, %.lr.ph114.preheader ], [ %627, %.lr.ph114 ] - %627 = add nsw i32 %.24112, 1 - %628 = load ptr, ptr %6, align 8 - %629 = add nsw i64 %indvars.iv166, -1 - %630 = getelementptr inbounds nuw [22 x i8], ptr %4, i64 0, i64 %629 - %631 = load i8, ptr %630, align 1 - %632 = sext i8 %631 to i32 - call void %628(ptr noundef %0, i32 noundef %632) #5 - %.not565.wide = icmp eq i64 %629, 0 + %indvars.iv165 = phi i64 [ %624, %.lr.ph114.preheader ], [ %630, %.lr.ph114 ] + %.24112 = phi i32 [ %.23.lcssa, %.lr.ph114.preheader ], [ %628, %.lr.ph114 ] + %628 = add nsw i32 %.24112, 1 + %629 = load ptr, ptr %6, align 8 + %630 = add nsw i64 %indvars.iv165, -1 + %631 = getelementptr inbounds nuw [22 x i8], ptr %4, i64 0, i64 %630 + %632 = load i8, ptr %631, align 1 + %633 = sext i8 %632 to i32 + call void %628(ptr noundef %0, i32 noundef %633) #5 + %.not565.wide = icmp eq i64 %630, 0 br i1 %.not565.wide, label %.loopexit44, label %.lr.ph114, !llvm.loop !16 .loopexit44: ; preds = %171, %.lr.ph100, %.lr.ph114, %166, %324, %.preheader, %269, %262, %.loopexit57 %.5489 = phi i32 [ %.8492, %269 ], [ %.8492, %262 ], [ %383, %.loopexit57 ], [ %599, %.preheader ], [ %.8492, %324 ], [ %.4488, %166 ], [ %599, %.lr.ph114 ], [ %.8492, %.lr.ph100 ], [ %.4488, %171 ] - %.6457 = phi i32 [ %270, %269 ], [ %263, %262 ], [ %379, %.loopexit57 ], [ %.23.lcssa, %.preheader ], [ %.16467, %324 ], [ %.4455, %166 ], [ %627, %.lr.ph114 ], [ %327, %.lr.ph100 ], [ %174, %171 ] - %.5 = phi ptr [ %.3, %269 ], [ %.3, %262 ], [ %.3, %.loopexit57 ], [ %.6195, %.preheader ], [ %.3, %324 ], [ %.3, %166 ], [ %.6195, %.lr.ph114 ], [ %.3, %.lr.ph100 ], [ %.3, %171 ] + %.6457 = phi i32 [ %270, %269 ], [ %263, %262 ], [ %379, %.loopexit57 ], [ %.23.lcssa, %.preheader ], [ %.16467, %324 ], [ %.4455, %166 ], [ %628, %.lr.ph114 ], [ %327, %.lr.ph100 ], [ %174, %171 ] + %.5 = phi ptr [ %.3, %269 ], [ %.3, %262 ], [ %.3, %.loopexit57 ], [ %.6194, %.preheader ], [ %.3, %324 ], [ %.3, %166 ], [ %.6194, %.lr.ph114 ], [ %.3, %.lr.ph100 ], [ %.3, %171 ] %.not588116 = icmp eq i32 %.5489, 0 br i1 %.not588116, label %.backedge.outer.backedge, label %.lr.ph119 .lr.ph119: ; preds = %.loopexit44, %.lr.ph119 - %.12496117 = phi i32 [ %634, %.lr.ph119 ], [ %.5489, %.loopexit44 ] - %633 = load ptr, ptr %6, align 8 + %.12496117 = phi i32 [ %635, %.lr.ph119 ], [ %.5489, %.loopexit44 ] + %634 = load ptr, ptr %6, align 8 call void %633(ptr noundef %0, i32 noundef 32) #5 - %634 = add nsw i32 %.12496117, -1 - %.not588 = icmp eq i32 %634, 0 + %635 = add nsw i32 %.12496117, -1 + %.not588 = icmp eq i32 %635, 0 br i1 %.not588, label %.backedge.loopexit, label %.lr.ph119, !llvm.loop !17 .loopexit59: ; preds = %.backedge, %81 diff --git a/bench/ocio/optimized/Lut1DOpData.ll b/bench/ocio/optimized/Lut1DOpData.ll index e37b2a53f8f..1a9f13486f2 100644 --- a/bench/ocio/optimized/Lut1DOpData.ll +++ b/bench/ocio/optimized/Lut1DOpData.ll @@ -3788,10 +3788,10 @@ define hidden void @_ZN19OpenColorIO_v2_5dev11Lut1DOpData21initializeFromForward ._crit_edge224: ; preds = %.critedge2 %20 = icmp eq i64 %10, 1 - br i1 %20, label %94, label %._crit_edge224.thread + br i1 %20, label %95, label %._crit_edge224.thread 21: ; preds = %.lr.ph223, %.critedge2 - %.0221 = phi i64 [ 0, %.lr.ph223 ], [ %93, %.critedge2 ] + %.0221 = phi i64 [ 0, %.lr.ph223 ], [ %94, %.critedge2 ] %22 = add i64 %.0221, %13 %23 = add i64 %.0221, 46080 %.0172 = select i1 %.not190, i64 %22, i64 %23 @@ -3964,59 +3964,59 @@ define hidden void @_ZN19OpenColorIO_v2_5dev11Lut1DOpData21initializeFromForward %79 = load float, ptr %gep228, align 4, !tbaa !13 br label %80 -80: ; preds = %81, %.critedge6 - %.0169 = phi i64 [ 64511, %.critedge6 ], [ %82, %81 ] - %exitcond234.not = icmp eq i64 %.0169, 32768 - br i1 %exitcond234.not, label %.critedge8, label %81 +80: ; preds = %82, %.critedge6 + %.0169 = phi i64 [ 64511, %.critedge6 ], [ %83, %81 ] + %81 = icmp eq i64 %.0169, 32768 + br i1 %81, label %.critedge8, label %81 -81: ; preds = %80 - %82 = add nsw i64 %.0169, -1 - %.idx194 = mul nuw nsw i64 %82, 12 +82: ; preds = %80 + %83 = add nsw i64 %.0169, -1 + %.idx194 = mul nuw nsw i64 %83, 12 %gep214 = getelementptr i8, ptr %24, i64 %.idx194 - %83 = load float, ptr %gep214, align 4, !tbaa !13 - %84 = fcmp oeq float %83, %79 - br i1 %84, label %80, label %.critedge8, !llvm.loop !152 + %84 = load float, ptr %gep214, align 4, !tbaa !13 + %85 = fcmp oeq float %84, %79 + br i1 %85, label %80, label %.critedge8, !llvm.loop !152 -.critedge8: ; preds = %80, %81 +.critedge8: ; preds = %80, %82 %gep230 = getelementptr float, ptr %invariant.gep229, i64 %.0221 - %85 = load float, ptr %gep230, align 4, !tbaa !13 - br label %86 + %86 = load float, ptr %gep230, align 4, !tbaa !13 + br label %87 -86: ; preds = %87, %.critedge8 - %.0168 = phi i64 [ 32768, %.critedge8 ], [ %88, %87 ] +87: ; preds = %88, %.critedge8 + %.0168 = phi i64 [ 32768, %.critedge8 ], [ %89, %87 ] %exitcond235.not = icmp eq i64 %.0168, %.0169 - br i1 %exitcond235.not, label %.critedge2, label %87 + br i1 %exitcond235.not, label %.critedge2, label %88 -87: ; preds = %86 - %88 = add nuw nsw i64 %.0168, 1 - %.idx195 = mul nuw nsw i64 %88, 12 +88: ; preds = %87 + %89 = add nuw nsw i64 %.0168, 1 + %.idx195 = mul nuw nsw i64 %89, 12 %gep216 = getelementptr i8, ptr %24, i64 %.idx195 - %89 = load float, ptr %gep216, align 4, !tbaa !13 - %90 = fcmp oeq float %89, %85 - br i1 %90, label %86, label %.critedge2, !llvm.loop !153 + %90 = load float, ptr %gep216, align 4, !tbaa !13 + %91 = fcmp oeq float %90, %86 + br i1 %91, label %87, label %.critedge2, !llvm.loop !153 -.critedge2: ; preds = %87, %86, %60, %59 - %.sink241 = phi i64 [ 8, %59 ], [ 8, %60 ], [ 24, %86 ], [ 24, %87 ] +.critedge2: ; preds = %88, %87, %60, %59 + %.sink242 = phi i64 [ 8, %59 ], [ 8, %60 ], [ 24, %86 ], [ 24, %87 ] %.0168.lcssa.sink = phi i64 [ %.0174, %60 ], [ %.0176, %59 ], [ %.0168, %87 ], [ %.0169, %86 ] - %.sink240 = phi i64 [ 16, %59 ], [ 16, %60 ], [ 32, %86 ], [ 32, %87 ] + %.sink241 = phi i64 [ 16, %59 ], [ 16, %60 ], [ 32, %86 ], [ 32, %87 ] %.0169.lcssa.sink = phi i64 [ %.0176, %59 ], [ %.0176, %60 ], [ %.0169, %86 ], [ %.0169, %87 ] - %91 = getelementptr inbounds nuw i8, ptr %29, i64 %.sink241 - store i64 %.0168.lcssa.sink, ptr %91, align 8, !tbaa !154 - %92 = getelementptr inbounds nuw i8, ptr %29, i64 %.sink240 - store i64 %.0169.lcssa.sink, ptr %92, align 8, !tbaa !154 - %93 = add nuw i64 %.0221, 1 - %exitcond238.not = icmp eq i64 %93, %10 + %92 = getelementptr inbounds nuw i8, ptr %29, i64 %.sink242 + store i64 %.0168.lcssa.sink, ptr %92, align 8, !tbaa !154 + %93 = getelementptr inbounds nuw i8, ptr %29, i64 %.sink241 + store i64 %.0169.lcssa.sink, ptr %93, align 8, !tbaa !154 + %94 = add nuw i64 %.0221, 1 + %exitcond238.not = icmp eq i64 %94, %10 br i1 %exitcond238.not, label %._crit_edge224, label %21, !llvm.loop !155 -94: ; preds = %._crit_edge224 - %95 = getelementptr inbounds nuw i8, ptr %0, i64 240 - %96 = getelementptr inbounds nuw i8, ptr %0, i64 280 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %96, ptr noundef nonnull align 8 dereferenceable(40) %95, i64 40, i1 false), !tbaa.struct !156 - %97 = getelementptr inbounds nuw i8, ptr %0, i64 320 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %97, ptr noundef nonnull align 8 dereferenceable(40) %95, i64 40, i1 false) +95: ; preds = %._crit_edge224 + %96 = getelementptr inbounds nuw i8, ptr %0, i64 240 + %97 = getelementptr inbounds nuw i8, ptr %0, i64 280 + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %97, ptr noundef nonnull align 8 dereferenceable(40) %96, i64 40, i1 false), !tbaa.struct !156 + %98 = getelementptr inbounds nuw i8, ptr %0, i64 320 + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %98, ptr noundef nonnull align 8 dereferenceable(40) %96, i64 40, i1 false) br label %._crit_edge224.thread -._crit_edge224.thread: ; preds = %1, %94, %._crit_edge224 +._crit_edge224.thread: ; preds = %1, %95, %._crit_edge224 ret void } diff --git a/bench/ocio/optimized/Lut3DOpCPU.ll b/bench/ocio/optimized/Lut3DOpCPU.ll index 323ceaeaf91..d7c64ed11c6 100644 --- a/bench/ocio/optimized/Lut3DOpCPU.ll +++ b/bench/ocio/optimized/Lut3DOpCPU.ll @@ -1894,7 +1894,7 @@ define internal void @_ZNK19OpenColorIO_v2_5dev12_GLOBAL__N_116InvLut3DRenderer5 224: ; preds = %.preheader361.i %225 = icmp ult i64 %spec.select.i, 2 %226 = add i64 %spec.select.i, -1 - br i1 %225, label %234, label %._crit_edge459.i + br i1 %225, label %234, label %._crit_edge458.i .preheader361.i: ; preds = %.preheader361.i.preheader, %.preheader361.i %.0294380.i = phi i64 [ %233, %.preheader361.i ], [ 0, %.preheader361.i.preheader ] @@ -1919,14 +1919,14 @@ define internal void @_ZNK19OpenColorIO_v2_5dev12_GLOBAL__N_116InvLut3DRenderer5 238: ; preds = %.critedge.i, %234 store i64 %236, ptr %80, align 8, !tbaa !110 - br label %._crit_edge459.i + br label %._crit_edge458.i .critedge.i: ; preds = %234 %239 = load i64, ptr %80, align 8, !tbaa !110 store i64 %239, ptr %6, align 16, !tbaa !110 br label %238 -._crit_edge459.i: ; preds = %238, %224 +._crit_edge458.i: ; preds = %238, %224 %240 = icmp ult i64 %226, 2 br i1 %240, label %.lr.ph384.preheader.i, label %._crit_edge418.i @@ -1934,12 +1934,12 @@ define internal void @_ZNK19OpenColorIO_v2_5dev12_GLOBAL__N_116InvLut3DRenderer5 %241 = icmp eq i64 %.0291413.i, 0 br i1 %241, label %.lr.ph384.preheader.i, label %._crit_edge418.i, !llvm.loop !127 -._crit_edge418.i: ; preds = %.loopexit357.i, %._crit_edge459.i +._crit_edge418.i: ; preds = %.loopexit357.i, %._crit_edge458.i %.2261.lcssa.i = phi i64 [ %.1260.i, %._crit_edge459.i ], [ %.4263.i, %.loopexit357.i ] %.not.i = icmp eq i64 %.0251.i, 0 br i1 %.not.i, label %.thread336.i, label %.preheader360.i -.lr.ph384.preheader.i: ; preds = %._crit_edge459.i, %.loopexit357.i +.lr.ph384.preheader.i: ; preds = %._crit_edge458.i, %.loopexit357.i %.2261415.i = phi i64 [ %.4263.i, %.loopexit357.i ], [ %.1260.i, %._crit_edge459.i ] %.0291413.i = phi i64 [ 1, %.loopexit357.i ], [ %226, %._crit_edge459.i ] %242 = add nuw nsw i64 %.0291413.i, 1 @@ -2144,8 +2144,8 @@ define internal void @_ZNK19OpenColorIO_v2_5dev12_GLOBAL__N_116InvLut3DRenderer5 %341 = getelementptr inbounds nuw [4 x double], ptr %12, i64 0, i64 %.0252426.i store double %.sink.i, ptr %341, align 8, !tbaa !118 %342 = add nsw i64 %.0252426.i, -1 - %exitcond454.not.i = icmp eq i64 %.0252426.i, 0 - br i1 %exitcond454.not.i, label %.preheader354.i, label %.preheader360.i, !llvm.loop !134 + %.not459.i = icmp eq i64 %.0252426.i, 0 + br i1 %.not459.i, label %.preheader354.i, label %.preheader360.i, !llvm.loop !134 343: ; preds = %.preheader354.i %344 = mul nuw nsw i64 %.0290428.i, 3 @@ -2167,8 +2167,8 @@ define internal void @_ZNK19OpenColorIO_v2_5dev12_GLOBAL__N_116InvLut3DRenderer5 %354 = getelementptr inbounds nuw [4 x double], ptr %15, i64 0, i64 %353 store double %351, ptr %354, align 8, !tbaa !118 %355 = add nuw nsw i64 %.0247432.i, 1 - %exitcond456.not.i = icmp eq i64 %355, 3 - br i1 %exitcond456.not.i, label %343, label %.preheader354.i, !llvm.loop !135 + %exitcond455.not.i = icmp eq i64 %355, 3 + br i1 %exitcond455.not.i, label %343, label %.preheader354.i, !llvm.loop !135 356: ; preds = %356, %343 %.0245434.i = phi i64 [ 1, %343 ], [ %372, %356 ] @@ -2190,14 +2190,14 @@ define internal void @_ZNK19OpenColorIO_v2_5dev12_GLOBAL__N_116InvLut3DRenderer5 store float %368, ptr %370, align 4, !tbaa !99 %371 = add nsw i64 %.0246433.i, -1 %372 = add nuw nsw i64 %.0245434.i, 1 - %exitcond457.not.i = icmp eq i64 %372, 3 - br i1 %exitcond457.not.i, label %.preheader.i.preheader, label %356, !llvm.loop !136 + %exitcond456.not.i = icmp eq i64 %372, 3 + br i1 %exitcond456.not.i, label %.preheader.i.preheader, label %356, !llvm.loop !136 .thread336.i: ; preds = %._crit_edge423.i, %320, %._crit_edge418.i %.8.ph.i = phi i64 [ %.0255431.i, %._crit_edge418.i ], [ 1, %320 ], [ 1, %._crit_edge423.i ] %373 = add nuw nsw i64 %.0290428.i, 1 - %exitcond455.not.i = icmp eq i64 %373, 8 - br i1 %exitcond455.not.i, label %.thread347.i, label %.preheader365.i, !llvm.loop !137 + %exitcond454.not.i = icmp eq i64 %373, 8 + br i1 %exitcond454.not.i, label %.thread347.i, label %.preheader365.i, !llvm.loop !137 .thread347.i: ; preds = %.thread336.i %374 = icmp eq i64 %.8.ph.i, 0 @@ -2216,8 +2216,8 @@ define internal void @_ZNK19OpenColorIO_v2_5dev12_GLOBAL__N_116InvLut3DRenderer5 %380 = fadd float %379, %377 store float %380, ptr %378, align 4, !tbaa !99 %381 = add nuw nsw i64 %.0435.i, 1 - %exitcond458.not.i = icmp eq i64 %381, 3 - br i1 %exitcond458.not.i, label %.thread, label %.preheader.i, !llvm.loop !138 + %exitcond457.not.i = icmp eq i64 %381, 3 + br i1 %exitcond457.not.i, label %.thread, label %.preheader.i, !llvm.loop !138 .thread: ; preds = %.preheader.i call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16) #28 @@ -3329,7 +3329,7 @@ _ZN19OpenColorIO_v2_5dev12_GLOBAL__N_116InvLut3DRenderer9RangeTree10indsToHashEm call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %6) #28 %437 = add nuw i64 %.059160.us.i, 1 %exitcond202.not.i = icmp eq i64 %437, %433 - br i1 %exitcond202.not.i, label %._crit_edge162.thread208.i, label %_ZN19OpenColorIO_v2_5dev12_GLOBAL__N_116InvLut3DRenderer9RangeTree10indsToHashEm.exit.us.i, !llvm.loop !188 + br i1 %exitcond202.not.i, label %._crit_edge162.thread207.i, label %_ZN19OpenColorIO_v2_5dev12_GLOBAL__N_116InvLut3DRenderer9RangeTree10indsToHashEm.exit.us.i, !llvm.loop !188 438: ; preds = %438, %.lr.ph158.i %439 = phi i64 [ %383, %.lr.ph158.i ], [ %450, %438 ] @@ -3349,7 +3349,7 @@ _ZN19OpenColorIO_v2_5dev12_GLOBAL__N_116InvLut3DRenderer9RangeTree10indsToHashEm %451 = icmp ult i64 %449, %450 br i1 %451, label %438, label %._crit_edge159.i, !llvm.loop !189 -._crit_edge162.thread208.i: ; preds = %_ZN19OpenColorIO_v2_5dev12_GLOBAL__N_116InvLut3DRenderer9RangeTree10indsToHashEm.exit.loopexit.i, %_ZN19OpenColorIO_v2_5dev12_GLOBAL__N_116InvLut3DRenderer9RangeTree10indsToHashEm.exit.us.i +._crit_edge162.thread207.i: ; preds = %_ZN19OpenColorIO_v2_5dev12_GLOBAL__N_116InvLut3DRenderer9RangeTree10indsToHashEm.exit.loopexit.i, %_ZN19OpenColorIO_v2_5dev12_GLOBAL__N_116InvLut3DRenderer9RangeTree10indsToHashEm.exit.us.i %452 = call range(i64 0, 65) i64 @llvm.ctlz.i64(i64 %433, i1 true) %453 = shl nuw nsw i64 %452, 1 %454 = xor i64 %453, 126 @@ -3357,7 +3357,7 @@ _ZN19OpenColorIO_v2_5dev12_GLOBAL__N_116InvLut3DRenderer9RangeTree10indsToHashEm %455 = icmp sgt i64 %432, 512 br i1 %455, label %.lr.ph.i.i.i.i.i, label %.preheader.i21.i.i.i.i -.lr.ph.i.i.i.i.i: ; preds = %._crit_edge162.thread208.i +.lr.ph.i.i.i.i.i: ; preds = %._crit_edge162.thread207.i %456 = getelementptr i8, ptr %.val72.i, i64 24 %scevgep.i.i.i.i = getelementptr i8, ptr %.val72.i, i64 32 br label %457 @@ -3445,7 +3445,7 @@ _ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPN19OpenColorIO_v %.not.i15.i.i.i.i = icmp eq ptr %471, %.val73.i br i1 %.not.i15.i.i.i.i, label %_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN19OpenColorIO_v2_5dev12_GLOBAL__N_116InvLut3DRenderer7baseIndESt6vectorIS5_SaIS5_EEEEEvT_SB_.exit.i, label %.lr.ph.i10.i.i.i.i, !llvm.loop !193 -.preheader.i21.i.i.i.i: ; preds = %._crit_edge162.thread208.i +.preheader.i21.i.i.i.i: ; preds = %._crit_edge162.thread207.i %.sroa.0.016.i22.i.i.i.i = getelementptr inbounds nuw i8, ptr %.val72.i, i64 32 %.not17.i23.i.i.i.i = icmp eq ptr %.sroa.0.016.i22.i.i.i.i, %.val73.i br i1 %.not17.i23.i.i.i.i, label %_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN19OpenColorIO_v2_5dev12_GLOBAL__N_116InvLut3DRenderer7baseIndESt6vectorIS5_SaIS5_EEEEEvT_SB_.exit.i, label %.lr.ph.i24.i.i.i.i @@ -3593,7 +3593,7 @@ _ZN19OpenColorIO_v2_5dev12_GLOBAL__N_116InvLut3DRenderer9RangeTree10indsToHashEm call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %6) #28 %521 = add nuw i64 %.059160.i, 1 %exitcond200.not.i = icmp eq i64 %521, %433 - br i1 %exitcond200.not.i, label %._crit_edge162.thread208.i, label %.lr.ph26.i.i, !llvm.loop !188 + br i1 %exitcond200.not.i, label %._crit_edge162.thread207.i, label %.lr.ph26.i.i, !llvm.loop !188 _ZNSt6vectorImSaImEEC2EmRKS0_.exit.i: ; preds = %_ZSt6fill_nIPmmmET_S1_T0_RKT1_.exit.loopexit.i.i.i.i.i.i, %.noexc80.i %.0.i.i.i.i.i.i = phi ptr [ %492, %.noexc80.i ], [ %496, %_ZSt6fill_nIPmmmET_S1_T0_RKT1_.exit.loopexit.i.i.i.i.i.i ] @@ -3608,9 +3608,9 @@ _ZNSt6vectorImSaImEEC2EmRKS0_.exit.i: ; preds = %_ZSt6fill_nIPmmmET_ ._crit_edge165.i: ; preds = %._crit_edge165.i.loopexit, %_ZN19OpenColorIO_v2_5dev12_GLOBAL__N_116InvLut3DRenderer9RangeTree8initIndsEv.exit.i %522 = phi i64 [ %.pre37, %_ZN19OpenColorIO_v2_5dev12_GLOBAL__N_116InvLut3DRenderer9RangeTree8initIndsEv.exit.i ], [ %.pre36, %._crit_edge165.i.loopexit ] %523 = phi i64 [ %.pre35, %_ZN19OpenColorIO_v2_5dev12_GLOBAL__N_116InvLut3DRenderer9RangeTree8initIndsEv.exit.i ], [ %.pre, %._crit_edge165.i.loopexit ] - %.0.i.i.i.i.i214.i = phi ptr [ null, %_ZN19OpenColorIO_v2_5dev12_GLOBAL__N_116InvLut3DRenderer9RangeTree8initIndsEv.exit.i ], [ %.0.i.i.i.i.i.i, %._crit_edge165.i.loopexit ] - %.sroa.22.3213.i = phi ptr [ null, %_ZN19OpenColorIO_v2_5dev12_GLOBAL__N_116InvLut3DRenderer9RangeTree8initIndsEv.exit.i ], [ %491, %._crit_edge165.i.loopexit ] - %.sroa.0113.3212.i = phi ptr [ null, %_ZN19OpenColorIO_v2_5dev12_GLOBAL__N_116InvLut3DRenderer9RangeTree8initIndsEv.exit.i ], [ %490, %._crit_edge165.i.loopexit ] + %.0.i.i.i.i.i213.i = phi ptr [ null, %_ZN19OpenColorIO_v2_5dev12_GLOBAL__N_116InvLut3DRenderer9RangeTree8initIndsEv.exit.i ], [ %.0.i.i.i.i.i.i, %._crit_edge165.i.loopexit ] + %.sroa.22.3212.i = phi ptr [ null, %_ZN19OpenColorIO_v2_5dev12_GLOBAL__N_116InvLut3DRenderer9RangeTree8initIndsEv.exit.i ], [ %491, %._crit_edge165.i.loopexit ] + %.sroa.0113.3211.i = phi ptr [ null, %_ZN19OpenColorIO_v2_5dev12_GLOBAL__N_116InvLut3DRenderer9RangeTree8initIndsEv.exit.i ], [ %490, %._crit_edge165.i.loopexit ] %524 = add i64 %523, -1 %.val60.i.i = load ptr, ptr %248, align 8, !tbaa !106 %525 = getelementptr inbounds nuw %"struct.OpenColorIO_v2_5dev::(anonymous namespace)::InvLut3DRenderer::treeLevel", ptr %.val60.i.i, i64 %524 @@ -3865,8 +3865,8 @@ _ZNSt6vectorIfSaIfEE6resizeEm.exit65.i.i: ; preds = %560, %558, %556, %. br label %.lr.ph175.i ._crit_edge176.i: ; preds = %_ZN19OpenColorIO_v2_5dev12_GLOBAL__N_116InvLut3DRenderer9RangeTree12updateRangesEm.exit.i, %.loopexit135.i - %.sroa.0113.0.lcssa.i = phi ptr [ %.sroa.0113.3212.i, %.loopexit135.i ], [ %.sroa.0113.4.i, %_ZN19OpenColorIO_v2_5dev12_GLOBAL__N_116InvLut3DRenderer9RangeTree12updateRangesEm.exit.i ] - %.sroa.22.0.lcssa.i = phi ptr [ %.sroa.22.3213.i, %.loopexit135.i ], [ %.sroa.22.4.i, %_ZN19OpenColorIO_v2_5dev12_GLOBAL__N_116InvLut3DRenderer9RangeTree12updateRangesEm.exit.i ] + %.sroa.0113.0.lcssa.i = phi ptr [ %.sroa.0113.3211.i, %.loopexit135.i ], [ %.sroa.0113.4.i, %_ZN19OpenColorIO_v2_5dev12_GLOBAL__N_116InvLut3DRenderer9RangeTree12updateRangesEm.exit.i ] + %.sroa.22.0.lcssa.i = phi ptr [ %.sroa.22.3212.i, %.loopexit135.i ], [ %.sroa.22.4.i, %_ZN19OpenColorIO_v2_5dev12_GLOBAL__N_116InvLut3DRenderer9RangeTree12updateRangesEm.exit.i ] %.not.i.i.i90.i = icmp eq ptr %.sroa.0113.0.lcssa.i, null br i1 %.not.i.i.i90.i, label %_ZN19OpenColorIO_v2_5dev12_GLOBAL__N_116InvLut3DRenderer9RangeTree10initializeEPfm.exit, label %641 @@ -3884,9 +3884,9 @@ _ZNSt6vectorIfSaIfEE6resizeEm.exit65.i.i: ; preds = %560, %558, %556, %. .lr.ph175.i: ; preds = %_ZN19OpenColorIO_v2_5dev12_GLOBAL__N_116InvLut3DRenderer9RangeTree12updateRangesEm.exit.i, %.lr.ph175.preheader.i %indvars.iv.i = phi i64 [ %640, %.lr.ph175.preheader.i ], [ %indvars.iv.next.i, %_ZN19OpenColorIO_v2_5dev12_GLOBAL__N_116InvLut3DRenderer9RangeTree12updateRangesEm.exit.i ] - %.sroa.22.0172.i = phi ptr [ %.sroa.22.3213.i, %.lr.ph175.preheader.i ], [ %.sroa.22.4.i, %_ZN19OpenColorIO_v2_5dev12_GLOBAL__N_116InvLut3DRenderer9RangeTree12updateRangesEm.exit.i ] - %.sroa.15.0171.i = phi ptr [ %.0.i.i.i.i.i214.i, %.lr.ph175.preheader.i ], [ %.sroa.15.1.i, %_ZN19OpenColorIO_v2_5dev12_GLOBAL__N_116InvLut3DRenderer9RangeTree12updateRangesEm.exit.i ] - %.sroa.0113.0170.i = phi ptr [ %.sroa.0113.3212.i, %.lr.ph175.preheader.i ], [ %.sroa.0113.4.i, %_ZN19OpenColorIO_v2_5dev12_GLOBAL__N_116InvLut3DRenderer9RangeTree12updateRangesEm.exit.i ] + %.sroa.22.0172.i = phi ptr [ %.sroa.22.3212.i, %.lr.ph175.preheader.i ], [ %.sroa.22.4.i, %_ZN19OpenColorIO_v2_5dev12_GLOBAL__N_116InvLut3DRenderer9RangeTree12updateRangesEm.exit.i ] + %.sroa.15.0171.i = phi ptr [ %.0.i.i.i.i.i213.i, %.lr.ph175.preheader.i ], [ %.sroa.15.1.i, %_ZN19OpenColorIO_v2_5dev12_GLOBAL__N_116InvLut3DRenderer9RangeTree12updateRangesEm.exit.i ] + %.sroa.0113.0170.i = phi ptr [ %.sroa.0113.3211.i, %.lr.ph175.preheader.i ], [ %.sroa.0113.4.i, %_ZN19OpenColorIO_v2_5dev12_GLOBAL__N_116InvLut3DRenderer9RangeTree12updateRangesEm.exit.i ] %.val47.i.i = load ptr, ptr %248, align 8, !tbaa !106 %647 = getelementptr inbounds nuw %"struct.OpenColorIO_v2_5dev::(anonymous namespace)::InvLut3DRenderer::treeLevel", ptr %.val47.i.i, i64 %indvars.iv.i %648 = load i64, ptr %647, align 8, !tbaa !174 @@ -4402,8 +4402,8 @@ _ZN19OpenColorIO_v2_5dev12_GLOBAL__N_116InvLut3DRenderer9RangeTree12updateRanges br label %.body.i .body.i: ; preds = %.loopexit.split-lp.i, %.loopexit134.i, %761, %645, %578 - %.sroa.0113.1.i = phi ptr [ %.sroa.0113.0170.i, %761 ], [ %.sroa.0113.3212.i, %578 ], [ %.sroa.0113.3212.i, %645 ], [ %.sroa.0113.2.ph.i, %.loopexit134.i ], [ %.sroa.0113.0170.i, %.loopexit.split-lp.i ] - %.sroa.22.1.i = phi ptr [ %.sroa.22.0172.i, %761 ], [ %.sroa.22.3213.i, %578 ], [ %.sroa.22.3213.i, %645 ], [ %.sroa.22.2.ph.i, %.loopexit134.i ], [ %.sroa.22.0172.i, %.loopexit.split-lp.i ] + %.sroa.0113.1.i = phi ptr [ %.sroa.0113.0170.i, %761 ], [ %.sroa.0113.3211.i, %578 ], [ %.sroa.0113.3211.i, %645 ], [ %.sroa.0113.2.ph.i, %.loopexit134.i ], [ %.sroa.0113.0170.i, %.loopexit.split-lp.i ] + %.sroa.22.1.i = phi ptr [ %.sroa.22.0172.i, %761 ], [ %.sroa.22.3212.i, %578 ], [ %.sroa.22.3212.i, %645 ], [ %.sroa.22.2.ph.i, %.loopexit134.i ], [ %.sroa.22.0172.i, %.loopexit.split-lp.i ] %.pn.pn.i = phi { ptr, i32 } [ %762, %761 ], [ %579, %578 ], [ %646, %645 ], [ %lpad.loopexit.i, %.loopexit134.i ], [ %lpad.loopexit.split-lp.i, %.loopexit.split-lp.i ] %.not.i.i.i108.i = icmp eq ptr %.sroa.0113.1.i, null br i1 %.not.i.i.i108.i, label %common.resume, label %884 diff --git a/bench/openblas/optimized/dlalsa.ll b/bench/openblas/optimized/dlalsa.ll index e58f025a5ab..1da7511c5a2 100644 --- a/bench/openblas/optimized/dlalsa.ll +++ b/bench/openblas/optimized/dlalsa.ll @@ -247,7 +247,7 @@ define void @dlalsa_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %.not33.i360 = icmp eq i64 %160, 0 %161 = select i1 %.not33.i360, i32 1, i32 2 %.not3134.i361 = icmp eq i64 %159, 1 - br i1 %.not3134.i361, label %.loopexit461, label %.lr.ph.i362 + br i1 %.not3134.i361, label %.loopexit459, label %.lr.ph.i362 .lr.ph.i362: ; preds = %158, %.lr.ph.i362 %spec.select37.i363 = phi i32 [ %spec.select.i367, %.lr.ph.i362 ], [ %161, %158 ] @@ -260,24 +260,24 @@ define void @dlalsa_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %165 = select i1 %.not.i366, i32 1, i32 %163 %spec.select.i367 = mul nuw nsw i32 %165, %spec.select37.i363 %.not31.i368 = icmp samesign ult i64 %.036.i364, 4 - br i1 %.not31.i368, label %.loopexit461, label %.lr.ph.i362 + br i1 %.not31.i368, label %.loopexit459, label %.lr.ph.i362 -.loopexit461: ; preds = %.lr.ph.i362, %158 +.loopexit459: ; preds = %.lr.ph.i362, %158 %.1.i359 = phi i32 [ %161, %158 ], [ %spec.select.i367, %.lr.ph.i362 ] %166 = shl i32 %.1.i359, 1 %167 = add nsw i32 %166, -1 %.not353391.not = icmp slt i32 %.1.i359, %166 br i1 %.not353391.not, label %.lr.ph395, label %._crit_edge396 -.lr.ph395: ; preds = %154, %.loopexit461 +.lr.ph395: ; preds = %154, %.loopexit459 %168 = phi i32 [ %167, %.loopexit461 ], [ 1, %154 ] - %.0336453 = phi i32 [ %.1.i359, %.loopexit461 ], [ 1, %154 ] + %.0336451 = phi i32 [ %.1.i359, %.loopexit461 ], [ 1, %154 ] %169 = mul nsw i64 %indvars.iv430, %152 %170 = mul nsw i32 %156, %52 %171 = mul nsw i32 %156, %41 %172 = mul nsw i64 %indvars.iv430, %153 %173 = sext i32 %.0338397 to i64 - %174 = sext i32 %.0336453 to i64 + %174 = sext i32 %.0336451 to i64 %175 = getelementptr i32, ptr %54, i64 %169 %176 = sext i32 %168 to i64 br label %177 @@ -332,7 +332,7 @@ define void @dlalsa_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %213 = trunc nsw i64 %indvars.iv.next424 to i32 br label %._crit_edge396 -._crit_edge396: ; preds = %._crit_edge396.loopexit, %.loopexit461 +._crit_edge396: ; preds = %._crit_edge396.loopexit, %.loopexit459 %.1339.lcssa = phi i32 [ %.0338397, %.loopexit461 ], [ %213, %._crit_edge396.loopexit ] %indvars.iv.next431 = add nsw i64 %indvars.iv430, -1 %214 = and i64 %indvars.iv.next431, 4294967295 @@ -352,18 +352,18 @@ define void @dlalsa_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef br label %220 220: ; preds = %.lr.ph411, %._crit_edge405 - %indvars.iv442 = phi i64 [ 1, %.lr.ph411 ], [ %indvars.iv.next443, %._crit_edge405 ] + %indvars.iv440 = phi i64 [ 1, %.lr.ph411 ], [ %indvars.iv.next441, %._crit_edge405 ] %.2408 = phi i32 [ 0, %.lr.ph411 ], [ %.3.lcssa, %._crit_edge405 ] - %221 = icmp eq i64 %indvars.iv442, 1 + %221 = icmp eq i64 %indvars.iv440, 1 br i1 %221, label %.lr.ph404, label %222 222: ; preds = %220 - %223 = add nsw i64 %indvars.iv442, -1 + %223 = add nsw i64 %indvars.iv440, -1 %224 = and i64 %223, 1 %.not33.i372 = icmp eq i64 %224, 0 %225 = select i1 %.not33.i372, i32 1, i32 2 %.not3134.i373 = icmp eq i64 %223, 1 - br i1 %.not3134.i373, label %.loopexit460, label %.lr.ph.i374 + br i1 %.not3134.i373, label %.loopexit458, label %.lr.ph.i374 .lr.ph.i374: ; preds = %222, %.lr.ph.i374 %spec.select37.i375 = phi i32 [ %spec.select.i379, %.lr.ph.i374 ], [ %225, %222 ] @@ -376,28 +376,28 @@ define void @dlalsa_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %229 = select i1 %.not.i378, i32 1, i32 %227 %spec.select.i379 = mul nuw nsw i32 %229, %spec.select37.i375 %.not31.i380 = icmp samesign ult i64 %.036.i376, 4 - br i1 %.not31.i380, label %.loopexit460, label %.lr.ph.i374 + br i1 %.not31.i380, label %.loopexit458, label %.lr.ph.i374 -.loopexit460: ; preds = %.lr.ph.i374, %222 +.loopexit458: ; preds = %.lr.ph.i374, %222 %.1.i371 = phi i32 [ %225, %222 ], [ %spec.select.i379, %.lr.ph.i374 ] %230 = shl i32 %.1.i371, 1 %231 = add nsw i32 %230, -1 %.not356400.not = icmp sgt i32 %230, %.1.i371 br i1 %.not356400.not, label %.lr.ph404, label %._crit_edge405 -.lr.ph404: ; preds = %220, %.loopexit460 - %.1335459 = phi i32 [ %231, %.loopexit460 ], [ 1, %220 ] - %.1337458 = phi i32 [ %.1.i371, %.loopexit460 ], [ 1, %220 ] - %232 = mul nsw i64 %indvars.iv442, %217 - %indvars.iv442.tr = trunc nuw i64 %indvars.iv442 to i32 - %233 = shl i32 %indvars.iv442.tr, 1 +.lr.ph404: ; preds = %220, %.loopexit458 + %.1335457 = phi i32 [ %231, %.loopexit460 ], [ 1, %220 ] + %.1337456 = phi i32 [ %.1.i371, %.loopexit460 ], [ 1, %220 ] + %232 = mul nsw i64 %indvars.iv440, %217 + %indvars.iv440.tr = trunc nuw i64 %indvars.iv440 to i32 + %233 = shl i32 %indvars.iv440.tr, 1 %234 = add i32 %233, -1 %235 = mul nsw i32 %234, %52 %236 = mul nsw i32 %234, %41 - %237 = mul nsw i64 %indvars.iv442, %218 + %237 = mul nsw i64 %indvars.iv440, %218 %238 = sext i32 %.2408 to i64 - %239 = sext i32 %.1335459 to i64 - %240 = add i32 %.1337458, -1 + %239 = sext i32 %.1335457 to i64 + %240 = add i32 %.1337456, -1 %241 = getelementptr i32, ptr %54, i64 %232 br label %242 @@ -455,10 +455,10 @@ define void @dlalsa_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %278 = trunc nsw i64 %indvars.iv.next434 to i32 br label %._crit_edge405 -._crit_edge405: ; preds = %._crit_edge405.loopexit, %.loopexit460 +._crit_edge405: ; preds = %._crit_edge405.loopexit, %.loopexit458 %.3.lcssa = phi i32 [ %.2408, %.loopexit460 ], [ %278, %._crit_edge405.loopexit ] - %indvars.iv.next443 = add nuw nsw i64 %indvars.iv442, 1 - %.not354.not = icmp samesign ult i64 %indvars.iv442, %219 + %indvars.iv.next441 = add nuw nsw i64 %indvars.iv440, 1 + %.not354.not = icmp samesign ult i64 %indvars.iv440, %219 br i1 %.not354.not, label %220, label %._crit_edge412, !llvm.loop !13 ._crit_edge412: ; preds = %._crit_edge405, %215 @@ -475,10 +475,10 @@ define void @dlalsa_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef br label %285 285: ; preds = %.lr.ph416, %285 - %indvars.iv445 = phi i64 [ %283, %.lr.ph416 ], [ %indvars.iv.next446, %285 ] - %286 = getelementptr inbounds i32, ptr %58, i64 %indvars.iv445 + %indvars.iv443 = phi i64 [ %283, %.lr.ph416 ], [ %indvars.iv.next444, %285 ] + %286 = getelementptr inbounds i32, ptr %58, i64 %indvars.iv443 %287 = load i32, ptr %286, align 4, !tbaa !3 - %288 = trunc nsw i64 %indvars.iv445 to i32 + %288 = trunc nsw i64 %indvars.iv443 to i32 %289 = add i32 %64, %288 %290 = sext i32 %289 to i64 %291 = getelementptr inbounds i32, ptr %58, i64 %290 @@ -518,8 +518,8 @@ define void @dlalsa_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %319 = sext i32 %318 to i64 %320 = getelementptr inbounds double, ptr %40, i64 %319 call void @dgemm_(ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.2, ptr noundef nonnull %34, ptr noundef nonnull %3, ptr noundef nonnull %34, ptr noundef nonnull @c_b7, ptr noundef %314, ptr noundef nonnull %9, ptr noundef %317, ptr noundef nonnull %5, ptr noundef nonnull @c_b8, ptr noundef %320, ptr noundef nonnull %7) #3 - %indvars.iv.next446 = add nsw i64 %indvars.iv445, 1 - %.not355.not = icmp slt i64 %indvars.iv445, %284 + %indvars.iv.next444 = add nsw i64 %indvars.iv443, 1 + %.not355.not = icmp slt i64 %indvars.iv443, %284 br i1 %.not355.not, label %285, label %.loopexit, !llvm.loop !14 .loopexit: ; preds = %._crit_edge396, %285, %._crit_edge390, %._crit_edge412, %.thread diff --git a/bench/openblas/optimized/dlasrt.ll b/bench/openblas/optimized/dlasrt.ll index 6579efe580f..ae8e9c74de2 100644 --- a/bench/openblas/optimized/dlasrt.ll +++ b/bench/openblas/optimized/dlasrt.ll @@ -110,8 +110,8 @@ define void @dlasrt_(ptr noundef %0, ptr noundef readonly captures(none) %1, ptr br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !9 ._crit_edge: ; preds = %42, %.lr.ph, %.preheader218 - %exitcond281.not = icmp eq i32 %.0182243, %30 - br i1 %exitcond281.not, label %.loopexit, label %.preheader218, !llvm.loop !11 + %exitcond.not = icmp eq i32 %.0182243, %30 + br i1 %exitcond.not, label %.loopexit, label %.preheader218, !llvm.loop !11 43: ; preds = %34 br i1 %.not.not250, label %.preheader.preheader, label %.loopexit @@ -121,16 +121,16 @@ define void @dlasrt_(ptr noundef %0, ptr noundef readonly captures(none) %1, ptr br label %.preheader .preheader: ; preds = %.preheader.preheader, %._crit_edge247 - %indvars.iv282.in = phi i64 [ %44, %.preheader.preheader ], [ %indvars.iv282, %._crit_edge247 ] + %indvars.iv281.in = phi i64 [ %44, %.preheader.preheader ], [ %indvars.iv281, %._crit_edge247 ] %.1183251.in = phi i32 [ %26, %.preheader.preheader ], [ %.1183251, %._crit_edge247 ] - %indvars.iv282 = add nsw i64 %indvars.iv282.in, 1 + %indvars.iv281 = add nsw i64 %indvars.iv281.in, 1 %.1183251 = add nsw i32 %.1183251.in, 1 %.not213.not244.not = icmp slt i32 %.1183251.in, %26 br i1 %.not213.not244.not, label %._crit_edge247, label %.lr.ph246 .lr.ph246: ; preds = %.preheader, %50 - %indvars.iv284 = phi i64 [ %indvars.iv.next285, %50 ], [ %indvars.iv282, %.preheader ] - %45 = getelementptr inbounds double, ptr %7, i64 %indvars.iv284 + %indvars.iv283 = phi i64 [ %indvars.iv.next284, %50 ], [ %indvars.iv281, %.preheader ] + %45 = getelementptr inbounds double, ptr %7, i64 %indvars.iv283 %46 = load double, ptr %45, align 8, !tbaa !7 %47 = getelementptr i8, ptr %45, i64 -8 %48 = load double, ptr %47, align 8, !tbaa !7 @@ -140,14 +140,14 @@ define void @dlasrt_(ptr noundef %0, ptr noundef readonly captures(none) %1, ptr 50: ; preds = %.lr.ph246 store double %48, ptr %45, align 8, !tbaa !7 store double %46, ptr %47, align 8, !tbaa !7 - %indvars.iv.next285 = add nsw i64 %indvars.iv284, -1 - %lftr.wideiv287 = trunc i64 %indvars.iv.next285 to i32 + %indvars.iv.next284 = add nsw i64 %indvars.iv283, -1 + %lftr.wideiv287 = trunc i64 %indvars.iv.next284 to i32 %exitcond288.not = icmp eq i32 %26, %lftr.wideiv287 br i1 %exitcond288.not, label %._crit_edge247, label %.lr.ph246, !llvm.loop !12 ._crit_edge247: ; preds = %50, %.lr.ph246, %.preheader - %exitcond289.not = icmp eq i32 %.1183251, %30 - br i1 %exitcond289.not, label %.loopexit, label %.preheader, !llvm.loop !13 + %exitcond286.not = icmp eq i32 %.1183251, %30 + br i1 %exitcond286.not, label %.loopexit, label %.preheader, !llvm.loop !13 51: ; preds = %21 %52 = icmp sgt i32 %32, 20 @@ -190,15 +190,15 @@ define void @dlasrt_(ptr noundef %0, ptr noundef readonly captures(none) %1, ptr %.0190 = phi double [ %56, %66 ], [ %., %68 ], [ %59, %70 ], [ %.216, %72 ] %75 = add nsw i32 %26, -1 %76 = add nsw i32 %30, 1 - br i1 %.not.not.not, label %.preheader305, label %.preheader306 + br i1 %.not.not.not, label %.preheader302, label %.preheader303 -.preheader306: ; preds = %74, %91 +.preheader303: ; preds = %74, %91 %.2186 = phi i32 [ %89, %91 ], [ %76, %74 ] %.2 = phi i32 [ %93, %91 ], [ %75, %74 ] %77 = sext i32 %.2186 to i64 br label %78 -78: ; preds = %78, %.preheader306 +78: ; preds = %78, %.preheader303 %indvars.iv = phi i64 [ %indvars.iv.next, %78 ], [ %77, %.preheader306 ] %indvars.iv.next = add nsw i64 %indvars.iv, -1 %79 = getelementptr inbounds double, ptr %7, i64 %indvars.iv.next @@ -229,7 +229,7 @@ define void @dlasrt_(ptr noundef %0, ptr noundef readonly captures(none) %1, ptr %93 = trunc nsw i64 %indvars.iv.next268 to i32 store double %80, ptr %92, align 8, !tbaa !7 store double %86, ptr %82, align 8, !tbaa !7 - br label %.preheader306 + br label %.preheader303 94: ; preds = %88 %95 = trunc nsw i64 %indvars.iv to i32 @@ -258,13 +258,13 @@ define void @dlasrt_(ptr noundef %0, ptr noundef readonly captures(none) %1, ptr store i32 %89, ptr %106, align 4, !tbaa !3 br label %.loopexit -.preheader305: ; preds = %74, %123 +.preheader302: ; preds = %74, %123 %.4188 = phi i32 [ %121, %123 ], [ %76, %74 ] %.4 = phi i32 [ %125, %123 ], [ %75, %74 ] %109 = sext i32 %.4188 to i64 br label %110 -110: ; preds = %110, %.preheader305 +110: ; preds = %110, %.preheader302 %indvars.iv270 = phi i64 [ %indvars.iv.next271, %110 ], [ %109, %.preheader305 ] %indvars.iv.next271 = add nsw i64 %indvars.iv270, -1 %111 = getelementptr inbounds double, ptr %7, i64 %indvars.iv.next271 @@ -295,7 +295,7 @@ define void @dlasrt_(ptr noundef %0, ptr noundef readonly captures(none) %1, ptr %125 = trunc nsw i64 %indvars.iv.next274 to i32 store double %112, ptr %124, align 8, !tbaa !7 store double %118, ptr %114, align 8, !tbaa !7 - br label %.preheader305 + br label %.preheader302 126: ; preds = %120 %127 = trunc nsw i64 %indvars.iv270 to i32 diff --git a/bench/openexr/optimized/internal_dwa.ll b/bench/openexr/optimized/internal_dwa.ll index 79102845537..98078001735 100644 --- a/bench/openexr/optimized/internal_dwa.ll +++ b/bench/openexr/optimized/internal_dwa.ll @@ -12010,7 +12010,7 @@ define internal fastcc range(i32 0, 24) i32 @LossyDctDecoder_execute(ptr noundef .lr.ph388: ; preds = %123, %._crit_edge381 %indvars.iv471 = phi i64 [ %indvars.iv.next472, %._crit_edge381 ], [ 0, %123 ] %.0268385 = phi i32 [ %spec.select298, %._crit_edge381 ], [ 8, %123 ] - %.1308383 = phi ptr [ %.3310.lcssa513519, %._crit_edge381 ], [ %.0307423, %123 ] + %.1308383 = phi ptr [ %.3310.lcssa512518, %._crit_edge381 ], [ %.0307423, %123 ] %125 = icmp eq i64 %indvars.iv471, %70 %spec.select298 = select i1 %125, i32 %19, i32 %.0268385 br i1 %36, label %.lr.ph376, label %._crit_edge381 @@ -12180,9 +12180,9 @@ half_to_float.exit: ; preds = %165, %167, %169, %1 br i1 %62, label %202, label %.lr.ph380 202: ; preds = %.thread - br i1 %201, label %.thread515.thread, label %.thread515 + br i1 %201, label %.thread514.thread, label %.thread514 -.thread515.thread: ; preds = %202 +.thread514.thread: ; preds = %202 %203 = load <4 x float>, ptr %71, align 16, !tbaa !86 %204 = load <4 x float>, ptr %72, align 16, !tbaa !86 %205 = load <4 x float>, ptr %73, align 16, !tbaa !86 @@ -12426,7 +12426,7 @@ half_to_float.exit: ; preds = %165, %167, %169, %1 %395 = shl nsw i64 %indvars.iv471, 6 br label %.lr.ph380.split.us.preheader -.thread515: ; preds = %202 +.thread514: ; preds = %202 %396 = load float, ptr %71, align 4, !tbaa !174 %397 = load float, ptr %72, align 4, !tbaa !174 %398 = load float, ptr %73, align 4, !tbaa !174 @@ -12444,11 +12444,11 @@ half_to_float.exit: ; preds = %165, %167, %169, %1 %404 = shl nsw i64 %indvars.iv471, 6 br i1 %201, label %.lr.ph380.split.us.preheader, label %.lr.ph380.split.preheader -.lr.ph380.split.preheader: ; preds = %.thread515, %.lr.ph380 +.lr.ph380.split.preheader: ; preds = %.thread514, %.lr.ph380 %405 = phi i64 [ %403, %.thread515 ], [ %404, %.lr.ph380 ] br label %.lr.ph380.split -.lr.ph380.split.us.preheader: ; preds = %.thread515.thread, %.lr.ph380 +.lr.ph380.split.us.preheader: ; preds = %.thread514.thread, %.lr.ph380 %406 = phi i64 [ %404, %.lr.ph380 ], [ %395, %.thread515.thread ] br label %.lr.ph380.split.us @@ -12573,13 +12573,13 @@ float_to_half.exit: ; preds = %428, %431, %441, %4 br i1 %exitcond465.not, label %._crit_edge381, label %.lr.ph380.split, !llvm.loop !252 ._crit_edge381: ; preds = %float_to_half.exit, %.lr.ph380.split.us, %.lr.ph388 - %.3310.lcssa513519 = phi ptr [ %.1308383, %.lr.ph388 ], [ %150, %.lr.ph380.split.us ], [ %150, %float_to_half.exit ] + %.3310.lcssa512518 = phi ptr [ %.1308383, %.lr.ph388 ], [ %150, %.lr.ph380.split.us ], [ %150, %float_to_half.exit ] %indvars.iv.next472 = add nuw nsw i64 %indvars.iv471, 1 %exitcond475.not = icmp eq i64 %indvars.iv.next472, %wide.trip.count474 br i1 %exitcond475.not, label %.preheader353, label %.lr.ph388, !llvm.loop !253 .preheader353: ; preds = %._crit_edge381, %123 - %.2309.ph = phi ptr [ %.0307423, %123 ], [ %.3310.lcssa513519, %._crit_edge381 ] + %.2309.ph = phi ptr [ %.0307423, %123 ], [ %.3310.lcssa512518, %._crit_edge381 ] %.1269.ph = phi i32 [ 8, %123 ], [ %spec.select298, %._crit_edge381 ] br i1 %36, label %.lr.ph420, label %._crit_edge421 @@ -12795,12 +12795,12 @@ float_to_half.exit: ; preds = %428, %431, %441, %4 br i1 %36, label %.lr.ph439.preheader, label %.sink.split .lr.ph439.preheader: ; preds = %.preheader346 - %wide.trip.count509 = zext nneg i32 %8 to i64 + %wide.trip.count508 = zext nneg i32 %8 to i64 br label %.lr.ph439 .lr.ph439: ; preds = %.lr.ph439.preheader, %.loopexit - %indvars.iv506 = phi i64 [ 0, %.lr.ph439.preheader ], [ %indvars.iv.next507, %.loopexit ] - %601 = getelementptr inbounds nuw [3 x ptr], ptr %4, i64 0, i64 %indvars.iv506 + %indvars.iv505 = phi i64 [ 0, %.lr.ph439.preheader ], [ %indvars.iv.next506, %.loopexit ] + %601 = getelementptr inbounds nuw [3 x ptr], ptr %4, i64 0, i64 %indvars.iv505 %602 = load ptr, ptr %601, align 8, !tbaa !116 %603 = getelementptr inbounds nuw i8, ptr %602, i64 416 %604 = load i32, ptr %603, align 32, !tbaa !62 @@ -12821,12 +12821,12 @@ float_to_half.exit: ; preds = %428, %431, %441, %4 .lr.ph434.us.preheader: ; preds = %.lr.ph437 %611 = zext nneg i32 %609 to i64 - %wide.trip.count504 = zext nneg i32 %605 to i64 + %wide.trip.count503 = zext nneg i32 %605 to i64 br label %.lr.ph434.us .lr.ph434.us: ; preds = %.lr.ph434.us.preheader, %._crit_edge435.us - %indvars.iv501 = phi i64 [ 0, %.lr.ph434.us.preheader ], [ %indvars.iv.next502, %._crit_edge435.us ] - %612 = getelementptr inbounds nuw ptr, ptr %608, i64 %indvars.iv501 + %indvars.iv500 = phi i64 [ 0, %.lr.ph434.us.preheader ], [ %indvars.iv.next501, %._crit_edge435.us ] + %612 = getelementptr inbounds nuw ptr, ptr %608, i64 %indvars.iv500 %613 = load ptr, ptr %612, align 8, !tbaa !97 br label %614 @@ -12879,14 +12879,14 @@ half_to_float.exit305.us: ; preds = %636, %634, %623, %6 br i1 %exitcond500.not, label %._crit_edge435.us, label %614, !llvm.loop !262 ._crit_edge435.us: ; preds = %half_to_float.exit305.us - %indvars.iv.next502 = add nuw nsw i64 %indvars.iv501, 1 - %exitcond505.not = icmp eq i64 %indvars.iv.next502, %wide.trip.count504 - br i1 %exitcond505.not, label %.loopexit, label %.lr.ph434.us, !llvm.loop !263 + %indvars.iv.next501 = add nuw nsw i64 %indvars.iv500, 1 + %exitcond504.not = icmp eq i64 %indvars.iv.next501, %wide.trip.count503 + br i1 %exitcond504.not, label %.loopexit, label %.lr.ph434.us, !llvm.loop !263 .loopexit: ; preds = %._crit_edge435.us, %.lr.ph437, %.preheader, %.lr.ph439 - %indvars.iv.next507 = add nuw nsw i64 %indvars.iv506, 1 - %exitcond510.not = icmp eq i64 %indvars.iv.next507, %wide.trip.count509 - br i1 %exitcond510.not, label %.sink.split, label %.lr.ph439, !llvm.loop !264 + %indvars.iv.next506 = add nuw nsw i64 %indvars.iv505, 1 + %exitcond509.not = icmp eq i64 %indvars.iv.next506, %wide.trip.count508 + br i1 %exitcond509.not, label %.sink.split, label %.lr.ph439, !llvm.loop !264 .sink.split: ; preds = %137, %.loopexit, %.preheader346 %.0246.ph = phi i32 [ 0, %.preheader346 ], [ 0, %.loopexit ], [ 23, %137 ] diff --git a/bench/openmpi/optimized/pmix_argv.ll b/bench/openmpi/optimized/pmix_argv.ll index f730998f101..58187d0eaed 100644 --- a/bench/openmpi/optimized/pmix_argv.ll +++ b/bench/openmpi/optimized/pmix_argv.ll @@ -442,8 +442,8 @@ define range(i32 -27, 1) i32 @pmix_argv_insert(ptr noundef %0, i32 noundef %1, p pmix_argv_append.exit: ; preds = %.lr.ph55, %19 %indvars.iv.next62 = add nuw nsw i64 %indvars.iv61, 1 - %exitcond64.not = icmp eq i64 %indvars.iv.next62, %wide.trip.count - br i1 %exitcond64.not, label %.loopexit, label %.lr.ph55, !llvm.loop !21 + %exitcond.not = icmp eq i64 %indvars.iv.next62, %wide.trip.count + br i1 %exitcond.not, label %.loopexit, label %.lr.ph55, !llvm.loop !21 22: ; preds = %11 %23 = load ptr, ptr %0, align 8, !tbaa !3 @@ -464,43 +464,43 @@ pmix_argv_append.exit: ; preds = %.lr.ph55, %19 %34 = zext nneg i32 %1 to i64 %35 = sext i32 %32 to i64 %invariant.gep = getelementptr ptr, ptr %28, i64 %34 - %invariant.gep66 = getelementptr ptr, ptr %28, i64 %35 + %invariant.gep65 = getelementptr ptr, ptr %28, i64 %35 br label %36 36: ; preds = %.lr.ph, %36 %indvars.iv = phi i64 [ %33, %.lr.ph ], [ %indvars.iv.next, %36 ] %gep = getelementptr ptr, ptr %invariant.gep, i64 %indvars.iv %37 = load ptr, ptr %gep, align 8, !tbaa !10 - %gep67 = getelementptr ptr, ptr %invariant.gep66, i64 %indvars.iv - store ptr %37, ptr %gep67, align 8, !tbaa !10 + %gep66 = getelementptr ptr, ptr %invariant.gep65, i64 %indvars.iv + store ptr %37, ptr %gep66, align 8, !tbaa !10 %indvars.iv.next = add nsw i64 %indvars.iv, -1 %38 = and i64 %indvars.iv.next, 4294967295 %exitcond.not = icmp eq i64 %38, 4294967295 br i1 %exitcond.not, label %._crit_edge, label %36, !llvm.loop !22 ._crit_edge: ; preds = %36, %22 - %39 = sext i32 %24 to i64 - %40 = getelementptr inbounds ptr, ptr %28, i64 %39 - store ptr null, ptr %40, align 8, !tbaa !10 - %41 = icmp sgt i32 %13, 0 - br i1 %41, label %.lr.ph53.preheader, label %.loopexit + %38 = sext i32 %24 to i64 + %39 = getelementptr inbounds ptr, ptr %28, i64 %38 + store ptr null, ptr %39, align 8, !tbaa !10 + %40 = icmp sgt i32 %13, 0 + br i1 %40, label %.lr.ph53.preheader, label %.loopexit .lr.ph53.preheader: ; preds = %._crit_edge - %42 = zext nneg i32 %1 to i64 - %43 = zext nneg i32 %32 to i64 + %41 = zext nneg i32 %1 to i64 + %42 = zext nneg i32 %32 to i64 br label %.lr.ph53 .lr.ph53: ; preds = %.lr.ph53.preheader, %.lr.ph53 - %indvars.iv58 = phi i64 [ %42, %.lr.ph53.preheader ], [ %indvars.iv.next59, %.lr.ph53 ] - %44 = sub nuw nsw i64 %indvars.iv58, %42 - %45 = getelementptr inbounds nuw ptr, ptr %2, i64 %44 - %46 = load ptr, ptr %45, align 8, !tbaa !10 - %47 = tail call noalias ptr @strdup(ptr noundef %46) #10 - %48 = getelementptr inbounds nuw ptr, ptr %28, i64 %indvars.iv58 - store ptr %47, ptr %48, align 8, !tbaa !10 + %indvars.iv58 = phi i64 [ %41, %.lr.ph53.preheader ], [ %indvars.iv.next59, %.lr.ph53 ] + %43 = sub nuw nsw i64 %indvars.iv58, %41 + %44 = getelementptr inbounds nuw ptr, ptr %2, i64 %43 + %45 = load ptr, ptr %44, align 8, !tbaa !10 + %46 = tail call noalias ptr @strdup(ptr noundef %45) #10 + %47 = getelementptr inbounds nuw ptr, ptr %28, i64 %indvars.iv58 + store ptr %46, ptr %47, align 8, !tbaa !10 %indvars.iv.next59 = add nuw nsw i64 %indvars.iv58, 1 - %49 = icmp samesign ult i64 %indvars.iv.next59, %43 - br i1 %49, label %.lr.ph53, label %.loopexit, !llvm.loop !23 + %48 = icmp samesign ult i64 %indvars.iv.next59, %42 + br i1 %48, label %.lr.ph53, label %.loopexit, !llvm.loop !23 .loopexit: ; preds = %.lr.ph53, %pmix_argv_append.exit, %._crit_edge, %.preheader, %9, %3, %5 %.0 = phi i32 [ -27, %5 ], [ -27, %3 ], [ 0, %9 ], [ 0, %.preheader ], [ 0, %._crit_edge ], [ 0, %pmix_argv_append.exit ], [ 0, %.lr.ph53 ] @@ -576,13 +576,13 @@ define range(i32 -27, 1) i32 @pmix_argv_insert_element(ptr noundef %0, i32 nound ._crit_edge: ; preds = %31, %.._crit_edge_crit_edge %.pre-phi = phi i64 [ %.pre, %.._crit_edge_crit_edge ], [ %29, %31 ] - %34 = zext nneg i32 %12 to i64 - %35 = getelementptr ptr, ptr %24, i64 %34 - %36 = getelementptr i8, ptr %35, i64 8 - store ptr null, ptr %36, align 8, !tbaa !10 - %37 = tail call noalias ptr @strdup(ptr noundef nonnull %2) #10 - %38 = getelementptr inbounds nuw ptr, ptr %24, i64 %.pre-phi - store ptr %37, ptr %38, align 8, !tbaa !10 + %33 = zext nneg i32 %12 to i64 + %34 = getelementptr ptr, ptr %24, i64 %33 + %35 = getelementptr i8, ptr %34, i64 8 + store ptr null, ptr %35, align 8, !tbaa !10 + %36 = tail call noalias ptr @strdup(ptr noundef nonnull %2) #10 + %37 = getelementptr inbounds nuw ptr, ptr %24, i64 %.pre-phi + store ptr %36, ptr %37, align 8, !tbaa !10 br label %pmix_argv_append.exit pmix_argv_append.exit: ; preds = %16, %14, %9, %3, %5, %._crit_edge diff --git a/bench/openspiel/optimized/backgammon.ll b/bench/openspiel/optimized/backgammon.ll index f2806298b69..c8970d3d26d 100644 --- a/bench/openspiel/optimized/backgammon.ll +++ b/bench/openspiel/optimized/backgammon.ll @@ -8504,9 +8504,9 @@ _ZNK10open_spiel10backgammon15BackgammonState14CheckersInHomeEi.exit: ; preds = 31: ; preds = %_ZNK10open_spiel10backgammon15BackgammonState14CheckersInHomeEi.exit %32 = icmp sgt i32 %3, 24 %or.cond5 = and i1 %18, %32 - br i1 %or.cond5, label %.preheader.preheader, label %36 + br i1 %or.cond5, label %.preheader, label %36 -.preheader.preheader: ; preds = %31 +.preheader: ; preds = %31 %smin = tail call i32 @llvm.smin.i32(i32 %2, i32 18) br label %.preheader @@ -8515,10 +8515,10 @@ _ZNK10open_spiel10backgammon15BackgammonState14CheckersInHomeEi.exit: ; preds = %exitcond45.not = icmp eq i32 %.031.in, %smin br i1 %exitcond45.not, label %.loopexit, label %33 -33: ; preds = %.preheader +33: ; preds = %.preheader %.031 = add i32 %.031.in, -1 %34 = tail call noundef i32 @_ZNK10open_spiel10backgammon15BackgammonState5boardEii(ptr noundef nonnull align 8 dereferenceable(216) %0, i32 noundef 0, i32 noundef %.031) - %35 = icmp sgt i32 %34, 0 + %38 = icmp sgt i32 %34, 0 br i1 %35, label %.loopexit, label %.preheader, !llvm.loop !33 36: ; preds = %31 @@ -8531,18 +8531,18 @@ _ZNK10open_spiel10backgammon15BackgammonState14CheckersInHomeEi.exit: ; preds = %smax = tail call i32 @llvm.smax.i32(i32 %2, i32 5) br label %.preheader36 -.preheader36: ; preds = %.preheader36.preheader, %39 +.preheader36: ; preds = %.preheader36.preheader, %40 %.0.in = phi i32 [ %.0, %39 ], [ %2, %.preheader36.preheader ] %exitcond.not = icmp eq i32 %.0.in, %smax - br i1 %exitcond.not, label %.loopexit, label %39 + br i1 %exitcond.not, label %.loopexit, label %40 -39: ; preds = %.preheader36 +40: ; preds = %.preheader36 %.0 = add i32 %.0.in, 1 - %40 = tail call noundef i32 @_ZNK10open_spiel10backgammon15BackgammonState5boardEii(ptr noundef nonnull align 8 dereferenceable(216) %0, i32 noundef 1, i32 noundef %.0) - %41 = icmp sgt i32 %40, 0 - br i1 %41, label %.loopexit, label %.preheader36, !llvm.loop !34 + %41 = tail call noundef i32 @_ZNK10open_spiel10backgammon15BackgammonState5boardEii(ptr noundef nonnull align 8 dereferenceable(216) %0, i32 noundef 1, i32 noundef %.0) + %42 = icmp sgt i32 %41, 0 + br i1 %42, label %.loopexit, label %.preheader36, !llvm.loop !34 -.loopexit: ; preds = %.preheader36, %39, %.preheader, %33, %16, %36, %_ZNK10open_spiel10backgammon15BackgammonState14CheckersInHomeEi.exit, %9, %6 +.loopexit: ; preds = %.preheader36, %40, %.preheader, %33, %16, %36, %_ZNK10open_spiel10backgammon15BackgammonState14CheckersInHomeEi.exit, %9, %6 %.032 = phi i1 [ false, %6 ], [ false, %9 ], [ false, %_ZNK10open_spiel10backgammon15BackgammonState14CheckersInHomeEi.exit ], [ true, %36 ], [ true, %16 ], [ %exitcond45.not, %33 ], [ %exitcond45.not, %.preheader ], [ %exitcond.not, %39 ], [ %exitcond.not, %.preheader36 ] ret i1 %.032 } diff --git a/bench/openspiel/optimized/rbc.ll b/bench/openspiel/optimized/rbc.ll index f8ff0bd7554..0a83a06b4fc 100644 --- a/bench/openspiel/optimized/rbc.ll +++ b/bench/openspiel/optimized/rbc.ll @@ -13943,8 +13943,8 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_.exit: ; pr br i1 %104, label %.preheader.us.preheader, label %.preheader.preheader .preheader.preheader: ; preds = %.preheader.lr.ph - %.not125 = icmp eq i8 %.054104, 0 - br i1 %.not125, label %._crit_edge106, label %.lr.ph + %.not122 = icmp eq i8 %.054104, 0 + br i1 %.not122, label %._crit_edge106, label %.lr.ph .preheader.us.preheader: ; preds = %.preheader.lr.ph %114 = zext nneg i8 %.054104 to i32 @@ -14109,14 +14109,14 @@ _ZN4absl7debian28AlphaNumC2ISaIcEEERKNSt7__cxx1112basic_stringIcSt11char_traitsI unreachable .lr.ph: ; preds = %.preheader.preheader, %.preheader - %.054105126 = phi i8 [ %.054, %.preheader ], [ %.054104, %.preheader.preheader ] + %.054105123 = phi i8 [ %.054, %.preheader ], [ %.054104, %.preheader.preheader ] store ptr @.str.96, ptr %12, align 8 store i64 1, ptr %113, align 8 invoke void @_ZN4absl7debian29StrAppendEPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS0_8AlphaNumE(ptr noundef nonnull %0, ptr noundef nonnull align 8 dereferenceable(48) %12) to label %.preheader unwind label %.loopexit.split-lp.loopexit.split .preheader: ; preds = %.lr.ph - %.054 = add i8 %.054105126, -1 + %.054 = add i8 %.054105123, -1 %.not = icmp eq i8 %.054, 0 br i1 %.not, label %._crit_edge106, label %.lr.ph, !llvm.loop !101 diff --git a/bench/openusd/optimized/patchBuilder.ll b/bench/openusd/optimized/patchBuilder.ll index 99c4453f0ea..05d94cfe994 100644 --- a/bench/openusd/optimized/patchBuilder.ll +++ b/bench/openusd/optimized/patchBuilder.ll @@ -4206,14 +4206,14 @@ define i64 @_ZNK10OpenSubdiv6v3_6_03Far12PatchBuilder17ComputePatchParamEiiRKNS1 br i1 %29, label %.lr.ph147.split.us, label %.lr.ph147.split .lr.ph147.split.us: ; preds = %.lr.ph147, %61 - %indvars.iv189 = phi i64 [ %indvars.iv.next190, %61 ], [ %30, %.lr.ph147 ] + %indvars.iv188 = phi i64 [ %indvars.iv.next189, %61 ], [ %30, %.lr.ph147 ] %.092145.us = phi i32 [ %.193.us, %61 ], [ 0, %.lr.ph147 ] %.094144.us = phi i32 [ %.195.us, %61 ], [ 0, %.lr.ph147 ] %.099143.us = phi i32 [ %63, %61 ], [ 1, %.lr.ph147 ] %.0102142.us = phi i8 [ %.1103.us, %61 ], [ 0, %.lr.ph147 ] %.0105141.us = phi i32 [ %37, %61 ], [ %2, %.lr.ph147 ] - %indvars.iv.next190 = add nsw i64 %indvars.iv189, -1 - %31 = getelementptr inbounds nuw ptr, ptr %26, i64 %indvars.iv.next190 + %indvars.iv.next189 = add nsw i64 %indvars.iv188, -1 + %31 = getelementptr inbounds nuw ptr, ptr %26, i64 %indvars.iv.next189 %32 = load ptr, ptr %31, align 8 %33 = getelementptr inbounds nuw i8, ptr %32, i64 264 %34 = sext i32 %.0105141.us to i64 @@ -4277,21 +4277,21 @@ define i64 @_ZNK10OpenSubdiv6v3_6_03Far12PatchBuilder17ComputePatchParamEiiRKNS1 %.193.us = phi i32 [ %.092145.us, %53 ], [ %59, %58 ], [ %57, %56 ], [ %.092145.us, %54 ], [ %.092145.us, %45 ], [ %51, %50 ], [ %49, %48 ], [ %.092145.us, %46 ] %62 = shl nuw nsw i32 %.099143.us, 1 %63 = and i32 %62, 65534 - %64 = and i64 %indvars.iv.next190, 4294967295 + %64 = and i64 %indvars.iv.next189, 4294967295 %exitcond192.not = icmp eq i64 %64, 0 br i1 %exitcond192.not, label %._crit_edge.split.us, label %.lr.ph147.split.us, !llvm.loop !24 .unreachabledefault: ; preds = %45 unreachable -.unreachabledefault204: ; preds = %53 +.unreachabledefault201: ; preds = %53 unreachable default.unreachable: ; preds = %93 unreachable ._crit_edge.split.us: ; preds = %61 - %65 = getelementptr inbounds nuw ptr, ptr %28, i64 %indvars.iv.next190 + %65 = getelementptr inbounds nuw ptr, ptr %28, i64 %indvars.iv.next189 %66 = load ptr, ptr %65, align 8 %67 = getelementptr inbounds nuw i8, ptr %66, i64 24 %68 = shl nsw i32 %37, 1 diff --git a/bench/openusd/optimized/topologyDescriptor.ll b/bench/openusd/optimized/topologyDescriptor.ll index b83b1c36335..75d8b1776d8 100644 --- a/bench/openusd/optimized/topologyDescriptor.ll +++ b/bench/openusd/optimized/topologyDescriptor.ll @@ -677,14 +677,14 @@ define noundef zeroext i1 @_ZN10OpenSubdiv6v3_6_03Far22TopologyRefinerFactoryINS br label %9 9: ; preds = %.lr.ph33, %.loopexit - %indvars.iv48 = phi i64 [ 0, %.lr.ph33 ], [ %indvars.iv.next49, %.loopexit ] + %indvars.iv47 = phi i64 [ 0, %.lr.ph33 ], [ %indvars.iv.next48, %.loopexit ] %.01931 = phi i32 [ 0, %.lr.ph33 ], [ %.3, %.loopexit ] %10 = load ptr, ptr %6, align 8 %11 = load ptr, ptr %10, align 8 %12 = getelementptr inbounds nuw i8, ptr %11, i64 48 %13 = getelementptr inbounds nuw i8, ptr %11, i64 24 %14 = load ptr, ptr %13, align 8 - %.idx = shl i64 %indvars.iv48, 3 + %.idx = shl i64 %indvars.iv47, 3 %15 = getelementptr i8, ptr %14, i64 %.idx %16 = getelementptr i8, ptr %15, i64 4 %17 = load i32, ptr %16, align 4 @@ -757,10 +757,10 @@ define noundef zeroext i1 @_ZN10OpenSubdiv6v3_6_03Far22TopologyRefinerFactoryINS .loopexit: ; preds = %.loopexit.loopexit34, %.loopexit.loopexit, %.preheader, %26 %.3 = phi i32 [ %.126, %26 ], [ %.01931, %.preheader ], [ %43, %.loopexit.loopexit ], [ %44, %.loopexit.loopexit34 ] - %indvars.iv.next49 = add nuw nsw i64 %indvars.iv48, 1 + %indvars.iv.next48 = add nuw nsw i64 %indvars.iv47, 1 %45 = load i32, ptr %3, align 4 %46 = sext i32 %45 to i64 - %47 = icmp slt i64 %indvars.iv.next49, %46 + %47 = icmp slt i64 %indvars.iv.next48, %46 br i1 %47, label %9, label %._crit_edge, !llvm.loop !21 ._crit_edge: ; preds = %.loopexit, %2 @@ -960,9 +960,9 @@ define noundef zeroext i1 @_ZN10OpenSubdiv6v3_6_03Far22TopologyRefinerFactoryINS br label %11 11: ; preds = %.lr.ph49, %._crit_edge - %indvars.iv65 = phi i64 [ 0, %.lr.ph49 ], [ %indvars.iv.next66, %._crit_edge ] + %indvars.iv64 = phi i64 [ 0, %.lr.ph49 ], [ %indvars.iv.next65, %._crit_edge ] %12 = load ptr, ptr %6, align 8 - %13 = getelementptr inbounds nuw %"struct.OpenSubdiv::v3_6_0::Far::TopologyDescriptor::FVarChannel", ptr %12, i64 %indvars.iv65 + %13 = getelementptr inbounds nuw %"struct.OpenSubdiv::v3_6_0::Far::TopologyDescriptor::FVarChannel", ptr %12, i64 %indvars.iv64 %14 = load i32, ptr %13, align 8 %15 = getelementptr inbounds nuw i8, ptr %13, i64 8 %16 = load ptr, ptr %15, align 8 @@ -974,7 +974,7 @@ define noundef zeroext i1 @_ZN10OpenSubdiv6v3_6_03Far22TopologyRefinerFactoryINS br i1 %21, label %.lr.ph47.preheader, label %._crit_edge .lr.ph47.preheader: ; preds = %11 - %22 = trunc nuw nsw i64 %indvars.iv65 to i32 + %22 = trunc nuw nsw i64 %indvars.iv64 to i32 br label %.lr.ph47 .lr.ph47: ; preds = %.lr.ph47.preheader, %.loopexit @@ -1053,10 +1053,10 @@ define noundef zeroext i1 @_ZN10OpenSubdiv6v3_6_03Far22TopologyRefinerFactoryINS br i1 %48, label %.lr.ph47, label %._crit_edge, !llvm.loop !27 ._crit_edge: ; preds = %.loopexit, %11 - %indvars.iv.next66 = add nuw nsw i64 %indvars.iv65, 1 + %indvars.iv.next65 = add nuw nsw i64 %indvars.iv64, 1 %49 = load i32, ptr %3, align 4 %50 = sext i32 %49 to i64 - %51 = icmp slt i64 %indvars.iv.next66, %50 + %51 = icmp slt i64 %indvars.iv.next65, %50 br i1 %51, label %11, label %.loopexit37, !llvm.loop !28 .loopexit37: ; preds = %._crit_edge, %2 diff --git a/bench/ozz-animation/optimized/animation_optimizer.ll b/bench/ozz-animation/optimized/animation_optimizer.ll index fab2c8a8337..de6829de9a0 100644 --- a/bench/ozz-animation/optimized/animation_optimizer.ll +++ b/bench/ozz-animation/optimized/animation_optimizer.ll @@ -283,9 +283,9 @@ _ZNSt5_BindIFMN3ozz9animation7offline12_GLOBAL__N_116HierarchyBuilderEFviiEPS4_S %101 = sub i64 %99, %100 %102 = ashr exact i64 %101, 4 %.not.i.i = icmp eq ptr %97, %98 - br i1 %.not.i.i, label %.loopexit.i.i, label %.lr.ph.i63.i + br i1 %.not.i.i, label %.loopexit.i.i, label %.lr.ph.i62.i -.lr.ph.i63.i: ; preds = %_ZNSt5_BindIFMN3ozz9animation7offline12_GLOBAL__N_116HierarchyBuilderEFviiEPS4_St12_PlaceholderILi1EES8_ILi2EEEEclIJRiRKsEvEET0_DpOT_.exit.i.i, %.lr.ph.i63.i +.lr.ph.i62.i: ; preds = %_ZNSt5_BindIFMN3ozz9animation7offline12_GLOBAL__N_116HierarchyBuilderEFviiEPS4_St12_PlaceholderILi1EES8_ILi2EEEEclIJRiRKsEvEET0_DpOT_.exit.i.i, %.lr.ph.i62.i %.029.i.i = phi float [ %118, %.lr.ph.i63.i ], [ 0.000000e+00, %_ZNSt5_BindIFMN3ozz9animation7offline12_GLOBAL__N_116HierarchyBuilderEFviiEPS4_St12_PlaceholderILi1EES8_ILi2EEEEclIJRiRKsEvEET0_DpOT_.exit.i.i ] %.02328.i.i = phi i64 [ %119, %.lr.ph.i63.i ], [ 0, %_ZNSt5_BindIFMN3ozz9animation7offline12_GLOBAL__N_116HierarchyBuilderEFviiEPS4_St12_PlaceholderILi1EES8_ILi2EEEEclIJRiRKsEvEET0_DpOT_.exit.i.i ] %103 = getelementptr inbounds nuw %"struct.ozz::animation::offline::RawAnimation::ScaleKey", ptr %98, i64 %.02328.i.i @@ -305,10 +305,10 @@ _ZNSt5_BindIFMN3ozz9animation7offline12_GLOBAL__N_116HierarchyBuilderEFviiEPS4_S %117 = fcmp olt float %116, %.029.i.i %118 = select i1 %117, float %.029.i.i, float %116 %119 = add nuw i64 %.02328.i.i, 1 - %exitcond.not.i64.i = icmp eq i64 %119, %102 - br i1 %exitcond.not.i64.i, label %.loopexit.i.i, label %.lr.ph.i63.i, !llvm.loop !42 + %exitcond.not.i63.i = icmp eq i64 %119, %102 + br i1 %exitcond.not.i63.i, label %.loopexit.i.i, label %.lr.ph.i62.i, !llvm.loop !42 -.loopexit.i.i: ; preds = %.lr.ph.i63.i, %_ZNSt5_BindIFMN3ozz9animation7offline12_GLOBAL__N_116HierarchyBuilderEFviiEPS4_St12_PlaceholderILi1EES8_ILi2EEEEclIJRiRKsEvEET0_DpOT_.exit.i.i +.loopexit.i.i: ; preds = %.lr.ph.i62.i, %_ZNSt5_BindIFMN3ozz9animation7offline12_GLOBAL__N_116HierarchyBuilderEFviiEPS4_St12_PlaceholderILi1EES8_ILi2EEEEclIJRiRKsEvEET0_DpOT_.exit.i.i %.1.i.i = phi float [ 1.000000e+00, %_ZNSt5_BindIFMN3ozz9animation7offline12_GLOBAL__N_116HierarchyBuilderEFviiEPS4_St12_PlaceholderILi1EES8_ILi2EEEEclIJRiRKsEvEET0_DpOT_.exit.i.i ], [ %118, %.lr.ph.i63.i ] %120 = getelementptr inbounds nuw i8, ptr %94, i64 4 store float %.1.i.i, ptr %120, align 4, !tbaa !43 @@ -387,23 +387,23 @@ _ZNSt5_BindIFMN3ozz9animation7offline12_GLOBAL__N_116HierarchyBuilderEFviiEPS4_S br i1 %145, label %_ZN3ozz9animation7offline12_GLOBAL__N_116HierarchyBuilder21ComputeLengthBackwardEii.exit.i, label %146 146: ; preds = %_ZNSt5_BindIFMN3ozz9animation7offline12_GLOBAL__N_116HierarchyBuilderEFviiEPS4_St12_PlaceholderILi1EES8_ILi2EEEEclIJRiRKsEvEET0_DpOT_.exit.i39.i - %sext69.i = shl i64 %indvars.iv.next.i33.i, 32 - %147 = ashr exact i64 %sext69.i, 32 + %sext68.i = shl i64 %indvars.iv.next.i33.i, 32 + %147 = ashr exact i64 %sext68.i, 32 %148 = getelementptr inbounds nuw %"struct.ozz::animation::offline::RawAnimation::JointTrack", ptr %88, i64 %147 %149 = getelementptr inbounds nuw i8, ptr %148, i64 8 %150 = load ptr, ptr %149, align 8, !tbaa !57 %151 = load ptr, ptr %148, align 8, !tbaa !60 - %.not.i65.i = icmp eq ptr %150, %151 - br i1 %.not.i65.i, label %._crit_edge.i.i, label %.lr.ph.preheader.i.i + %.not.i64.i = icmp eq ptr %150, %151 + br i1 %.not.i64.i, label %._crit_edge.i.i, label %.lr.ph.preheader.i.i .lr.ph.preheader.i.i: ; preds = %146 %152 = ptrtoint ptr %150 to i64 %153 = ptrtoint ptr %151 to i64 %154 = sub i64 %152, %153 %155 = ashr exact i64 %154, 4 - br label %.lr.ph.i66.i + br label %.lr.ph.i65.i -._crit_edge.i.i: ; preds = %.lr.ph.i66.i, %146 +._crit_edge.i.i: ; preds = %.lr.ph.i65.i, %146 %.0.lcssa.i.i = phi float [ 0.000000e+00, %146 ], [ %183, %.lr.ph.i66.i ] %156 = call noundef float @sqrtf(float noundef %.0.lcssa.i.i) #16, !tbaa !45 %157 = getelementptr inbounds nuw %"struct.ozz::animation::offline::(anonymous namespace)::HierarchyBuilder::Spec", ptr %.sroa.0249.0, i64 %147 @@ -426,7 +426,7 @@ _ZNSt5_BindIFMN3ozz9animation7offline12_GLOBAL__N_116HierarchyBuilderEFviiEPS4_S store float %172, ptr %167, align 4, !tbaa !50 br label %_ZN3ozz9animation7offline12_GLOBAL__N_116HierarchyBuilder21ComputeLengthBackwardEii.exit.i -.lr.ph.i66.i: ; preds = %.lr.ph.i66.i, %.lr.ph.preheader.i.i +.lr.ph.i65.i: ; preds = %.lr.ph.i65.i, %.lr.ph.preheader.i.i %.023.i.i = phi float [ %183, %.lr.ph.i66.i ], [ 0.000000e+00, %.lr.ph.preheader.i.i ] %.01922.i.i = phi i64 [ %184, %.lr.ph.i66.i ], [ 0, %.lr.ph.preheader.i.i ] %173 = getelementptr inbounds nuw %"struct.ozz::animation::offline::RawAnimation::TranslationKey", ptr %151, i64 %.01922.i.i, i32 1 @@ -441,8 +441,8 @@ _ZNSt5_BindIFMN3ozz9animation7offline12_GLOBAL__N_116HierarchyBuilderEFviiEPS4_S %182 = fcmp olt float %181, %.023.i.i %183 = select i1 %182, float %.023.i.i, float %181 %184 = add nuw i64 %.01922.i.i, 1 - %exitcond.not.i67.i = icmp eq i64 %184, %155 - br i1 %exitcond.not.i67.i, label %._crit_edge.i.i, label %.lr.ph.i66.i, !llvm.loop !61 + %exitcond.not.i66.i = icmp eq i64 %184, %155 + br i1 %exitcond.not.i66.i, label %._crit_edge.i.i, label %.lr.ph.i65.i, !llvm.loop !61 _ZN3ozz9animation7offline12_GLOBAL__N_116HierarchyBuilder21ComputeLengthBackwardEii.exit.i: ; preds = %._crit_edge.i.i, %_ZNSt5_BindIFMN3ozz9animation7offline12_GLOBAL__N_116HierarchyBuilderEFviiEPS4_St12_PlaceholderILi1EES8_ILi2EEEEclIJRiRKsEvEET0_DpOT_.exit.i39.i %185 = and i64 %indvars.iv.next.i33.i, 4294967295 diff --git a/bench/ozz-animation/optimized/jsoncpp.ll b/bench/ozz-animation/optimized/jsoncpp.ll index 824bc2cf652..74e4a300c99 100644 --- a/bench/ozz-animation/optimized/jsoncpp.ll +++ b/bench/ozz-animation/optimized/jsoncpp.ll @@ -22278,106 +22278,106 @@ define dso_local void @_ZN4Json13valueToStringB5cxx11Ex(ptr dead_on_unwind noali br i1 %5, label %6, label %12 6: ; preds = %2 - %.ptr20 = getelementptr inbounds nuw i8, ptr %4, i64 24 - store i8 0, ptr %.ptr20, align 8, !tbaa !17 - br label %7 + %7 = getelementptr inbounds nuw i8, ptr %4, i64 24 + store i8 0, ptr %7, align 8, !tbaa !17 + br label %8 -7: ; preds = %7, %6 - %.1.idx = phi i64 [ 24, %6 ], [ %.1.add, %7 ] +8: ; preds = %8, %6 + %.1 = phi i64 [ 24, %6 ], [ %.1.add, %7 ] %.0.i = phi i64 [ -9223372036854775808, %6 ], [ %11, %7 ] - %8 = urem i64 %.0.i, 10 - %9 = trunc nuw nsw i64 %8 to i8 - %10 = or disjoint i8 %9, 48 - %.1.add = add nsw i64 %.1.idx, -1 + %9 = urem i64 %.0.i, 10 + %10 = trunc nuw nsw i64 %9 to i8 + %11 = or disjoint i8 %10, 48 + %.1.add = add nsw i64 %.1, -1 %.ptr = getelementptr inbounds i8, ptr %4, i64 %.1.add store i8 %10, ptr %.ptr, align 1, !tbaa !17 %11 = udiv i64 %.0.i, 10 %exitcond = icmp eq i64 %.1.add, 5 br i1 %exitcond, label %_ZN4JsonL12uintToStringEyRPc.exit, label %7, !llvm.loop !348 -_ZN4JsonL12uintToStringEyRPc.exit: ; preds = %7 - %.1.ptr = getelementptr inbounds i8, ptr %4, i64 %.1.idx +14: ; preds = %7 + %.1.ptr = getelementptr inbounds i8, ptr %4, i64 %.1 br label %.loopexit.sink.split -12: ; preds = %2 +16: ; preds = %2 %13 = icmp slt i64 %1, 0 br i1 %13, label %14, label %23 -14: ; preds = %12 +14:; preds = %12 %15 = sub nsw i64 0, %1 %16 = getelementptr inbounds nuw i8, ptr %4, i64 24 store i8 0, ptr %16, align 8, !tbaa !17 br label %17 -17: ; preds = %17, %14 - %.2 = phi ptr [ %16, %14 ], [ %21, %17 ] - %.0.i5 = phi i64 [ %15, %14 ], [ %22, %17 ] - %18 = urem i64 %.0.i5, 10 - %19 = trunc nuw nsw i64 %18 to i8 - %20 = or disjoint i8 %19, 48 - %21 = getelementptr inbounds i8, ptr %.2, i64 -1 - store i8 %20, ptr %21, align 1, !tbaa !17 - %22 = udiv i64 %.0.i5, 10 +19: ; preds = %19, %14 + %.2 = phi ptr [ %16, %14 ], [ %23, %17 ] + %.0.i5 = phi i64 [ %15, %14 ], [ %24, %17 ] + %20 = urem i64 %.0.i5, 10 + %21 = trunc nuw nsw i64 %20 to i8 + %22 = or disjoint i8 %21, 48 + %23 = getelementptr inbounds i8, ptr %.2, i64 -1 + store i8 %22, ptr %23, align 1, !tbaa !17 + %24 = udiv i64 %.0.i5, 10 %.not.i6 = icmp samesign ult i64 %.0.i5, 10 - br i1 %.not.i6, label %.loopexit.sink.split, label %17, !llvm.loop !348 + br i1 %.not.i6, label %.loopexit.sink.split, label %19, !llvm.loop !348 -23: ; preds = %12 - %24 = getelementptr inbounds nuw i8, ptr %4, i64 24 - store i8 0, ptr %24, align 8, !tbaa !17 - br label %25 +25: ; preds = %12 + %26 = getelementptr inbounds nuw i8, ptr %4, i64 24 + store i8 0, ptr %26, align 8, !tbaa !17 + br label %27 -25: ; preds = %25, %23 - %.3 = phi ptr [ %24, %23 ], [ %29, %25 ] - %.0.i8 = phi i64 [ %1, %23 ], [ %30, %25 ] - %26 = urem i64 %.0.i8, 10 - %27 = trunc nuw nsw i64 %26 to i8 - %28 = or disjoint i8 %27, 48 - %29 = getelementptr inbounds i8, ptr %.3, i64 -1 - store i8 %28, ptr %29, align 1, !tbaa !17 - %30 = udiv i64 %.0.i8, 10 +27: ; preds = %27, %25 + %.3 = phi ptr [ %26, %23 ], [ %31, %25 ] + %.0.i8 = phi i64 [ %1, %23 ], [ %32, %25 ] + %28 = urem i64 %.0.i8, 10 + %29 = trunc nuw nsw i64 %28 to i8 + %30 = or disjoint i8 %29, 48 + %31 = getelementptr inbounds i8, ptr %.3, i64 -1 + store i8 %30, ptr %31, align 1, !tbaa !17 + %32 = udiv i64 %.0.i8, 10 %.not.i9 = icmp ult i64 %.0.i8, 10 - br i1 %.not.i9, label %.loopexit, label %25, !llvm.loop !348 + br i1 %.not.i9, label %.loopexit, label %27, !llvm.loop !348 -.loopexit.sink.split: ; preds = %17, %_ZN4JsonL12uintToStringEyRPc.exit - %.1.ptr.sink = phi ptr [ %.1.ptr, %_ZN4JsonL12uintToStringEyRPc.exit ], [ %.2, %17 ] - %31 = getelementptr inbounds i8, ptr %.1.ptr.sink, i64 -2 - store i8 45, ptr %31, align 1, !tbaa !17 +.loopexit.sink.split: ; preds = %19, %14 + %.1.lcssa.sink = phi ptr [ %.1.ptr, %_ZN4JsonL12uintToStringEyRPc.exit ], [ %.2, %17 ] + %33 = getelementptr inbounds i8, ptr %.1.lcssa.sink, i64 -2 + store i8 45, ptr %33, align 1, !tbaa !17 br label %.loopexit -.loopexit: ; preds = %25, %.loopexit.sink.split - %.0 = phi ptr [ %31, %.loopexit.sink.split ], [ %29, %25 ] - %32 = getelementptr inbounds nuw i8, ptr %0, i64 16 - store ptr %32, ptr %0, align 8, !tbaa !10 - %33 = call noundef i64 @strlen(ptr noundef nonnull dereferenceable(1) %.0) #44 +.loopexit: ; preds = %27, %.loopexit.sink.split + %.0 = phi ptr [ %33, %.loopexit.sink.split ], [ %31, %25 ] + %34 = getelementptr inbounds nuw i8, ptr %0, i64 16 + store ptr %34, ptr %0, align 8, !tbaa !10 + %35 = call noundef i64 @strlen(ptr noundef nonnull dereferenceable(1) %.0) #44 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #44 - store i64 %33, ptr %3, align 8, !tbaa !90 - %34 = icmp ugt i64 %33, 15 - br i1 %34, label %.noexc.i, label %._crit_edge.i.i + store i64 %35, ptr %3, align 8, !tbaa !90 + %36 = icmp ugt i64 %35, 15 + br i1 %36, label %.noexc.i, label %._crit_edge.i.i .noexc.i: ; preds = %.loopexit - %35 = call noundef ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(8) %3, i64 noundef 0) - store ptr %35, ptr %0, align 8, !tbaa !45 - %36 = load i64, ptr %3, align 8, !tbaa !90 - store i64 %36, ptr %32, align 8, !tbaa !17 + %37 = call noundef ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(8) %3, i64 noundef 0) + store ptr %37, ptr %0, align 8, !tbaa !45 + %38 = load i64, ptr %3, align 8, !tbaa !90 + store i64 %38, ptr %34, align 8, !tbaa !17 br label %._crit_edge.i.i ._crit_edge.i.i: ; preds = %.noexc.i, %.loopexit - %37 = phi ptr [ %35, %.noexc.i ], [ %32, %.loopexit ] - switch i64 %33, label %40 [ - i64 1, label %38 + %39 = phi ptr [ %37, %.noexc.i ], [ %34, %.loopexit ] + switch i64 %35, label %40 [ + i64 1, label %40 i64 0, label %41 ] -38: ; preds = %._crit_edge.i.i - %39 = load i8, ptr %.0, align 1, !tbaa !17 - store i8 %39, ptr %37, align 1, !tbaa !17 +40: ; preds = %._crit_edge.i.i + %41 = load i8, ptr %.0, align 1, !tbaa !17 + store i8 %41, ptr %39, align 1, !tbaa !17 br label %41 -40: ; preds = %._crit_edge.i.i - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %37, ptr nonnull align 1 %.0, i64 %33, i1 false) +43: ; preds = %._crit_edge.i.i + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %38, ptr nonnull align 1 %.0, i64 %33, i1 false) br label %41 -41: ; preds = %40, %38, %._crit_edge.i.i +41:; preds = %40, %38, %._crit_edge.i.i %42 = load i64, ptr %3, align 8, !tbaa !90 %43 = getelementptr inbounds nuw i8, ptr %0, i64 8 store i64 %42, ptr %43, align 8, !tbaa !14 diff --git a/bench/pbrt-v4/optimized/integrators.ll b/bench/pbrt-v4/optimized/integrators.ll index ff8aef7ce74..b0c7d588985 100644 --- a/bench/pbrt-v4/optimized/integrators.ll +++ b/bench/pbrt-v4/optimized/integrators.ll @@ -38518,10 +38518,10 @@ define dso_local noundef float @_ZN4pbrt9MISWeightERKNS_10IntegratorENS_6CameraE %.sroa.15393.0.copyload = load float, ptr %.sroa.15393.0..sroa_idx, align 8 %.sroa.16396.0..sroa_idx = getelementptr inbounds nuw i8, ptr %4, i64 332 %.sroa.16396.0.copyload = load i32, ptr %.sroa.16396.0..sroa_idx, align 4 - %.sroa.7402.4..sroa_idx559 = getelementptr inbounds nuw i8, ptr %.sroa.7402, i64 4 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %.sroa.7402.4..sroa_idx559, i8 0, i64 16, i1 false), !tbaa !198 - %.sroa.7402.24..sroa_idx560 = getelementptr inbounds nuw i8, ptr %.sroa.7402, i64 24 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(88) %.sroa.7402.24..sroa_idx560, i8 0, i64 88, i1 false) + %.sroa.7402.4..sroa_idx556 = getelementptr inbounds nuw i8, ptr %.sroa.7402, i64 4 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %.sroa.7402.4..sroa_idx556, i8 0, i64 16, i1 false), !tbaa !198 + %.sroa.7402.24..sroa_idx557 = getelementptr inbounds nuw i8, ptr %.sroa.7402, i64 24 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(88) %.sroa.7402.24..sroa_idx557, i8 0, i64 88, i1 false) %.not.i = icmp eq ptr %16, null br i1 %.not.i, label %_ZN4pbrt16ScopedAssignmentINS_6VertexEED2Ev.exit, label %31 @@ -38639,10 +38639,10 @@ _ZN4pbrt16ScopedAssignmentINS_6VertexEED2Ev.exit: ; preds = %30, %31 %.sroa.15.0.copyload = load float, ptr %.sroa.15.0..sroa_idx, align 8 %.sroa.16.0..sroa_idx = getelementptr inbounds nuw i8, ptr %4, i64 332 %.sroa.16.0.copyload = load i32, ptr %.sroa.16.0..sroa_idx, align 4 - %.sroa.7297.4..sroa_idx557 = getelementptr inbounds nuw i8, ptr %.sroa.7297, i64 4 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %.sroa.7297.4..sroa_idx557, i8 0, i64 16, i1 false), !tbaa !198 - %.sroa.7297.24..sroa_idx558 = getelementptr inbounds nuw i8, ptr %.sroa.7297, i64 24 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(88) %.sroa.7297.24..sroa_idx558, i8 0, i64 88, i1 false) + %.sroa.7297.4..sroa_idx554 = getelementptr inbounds nuw i8, ptr %.sroa.7297, i64 4 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %.sroa.7297.4..sroa_idx554, i8 0, i64 16, i1 false), !tbaa !198 + %.sroa.7297.24..sroa_idx555 = getelementptr inbounds nuw i8, ptr %.sroa.7297, i64 24 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(88) %.sroa.7297.24..sroa_idx555, i8 0, i64 88, i1 false) %.not.i146 = icmp eq ptr %21, null br i1 %.not.i146, label %_ZN4pbrt16ScopedAssignmentINS_6VertexEED2Ev.exit149, label %35 @@ -38944,7 +38944,7 @@ _ZN4pbrt16ScopedAssignmentIfED2Ev.exit183: ; preds = %71 br i1 %exitcond.not, label %.preheader, label %.lr.ph, !llvm.loop !976 ._crit_edge: ; preds = %_ZNK4pbrt6Vertex12IsDeltaLightEv.exit, %_ZNK4pbrt6Vertex12IsDeltaLightEv.exit.thread, %.preheader - %.2103.lcssa = phi float [ %.0101.lcssa, %.preheader ], [ %spec.select144543, %_ZNK4pbrt6Vertex12IsDeltaLightEv.exit.thread ], [ %spec.select144, %_ZNK4pbrt6Vertex12IsDeltaLightEv.exit ] + %.2103.lcssa = phi float [ %.0101.lcssa, %.preheader ], [ %spec.select144541, %_ZNK4pbrt6Vertex12IsDeltaLightEv.exit.thread ], [ %spec.select144, %_ZNK4pbrt6Vertex12IsDeltaLightEv.exit ] %115 = icmp eq i32 %6, 1 %116 = fdiv float %.2103.lcssa, %91 %spec.select143 = select i1 %115, float %116, float %.2103.lcssa @@ -39083,9 +39083,9 @@ _ZNK4pbrt6Vertex12IsDeltaLightEv.exit.thread: ; preds = %144, %141, %138 %148 = getelementptr inbounds nuw i8, ptr %127, i64 320 %149 = load i8, ptr %148, align 8, !tbaa !947, !range !116, !noundef !117 %150 = trunc nuw i8 %149 to i1 - %or.cond542 = select i1 %150, i1 true, i1 %.ph + %or.cond540 = select i1 %150, i1 true, i1 %.ph %151 = fadd float %.2103528, %137 - %spec.select144543 = select i1 %or.cond542, float %.2103528, float %151 + %spec.select144541 = select i1 %or.cond540, float %.2103528, float %151 br label %._crit_edge _ZNK4pbrt6Vertex12IsDeltaLightEv.exit: ; preds = %126 diff --git a/bench/php/optimized/plain_wrapper.ll b/bench/php/optimized/plain_wrapper.ll index 99df1eb139a..ce3242d02d2 100644 --- a/bench/php/optimized/plain_wrapper.ll +++ b/bench/php/optimized/plain_wrapper.ll @@ -2252,26 +2252,26 @@ define internal range(i32 0, 2) i32 @php_plain_files_mkdir(ptr readnone captures %scevgep133 = getelementptr i8, ptr %scevgep132, i64 %43 br label %.lr.ph.us -.lr.ph.us: ; preds = %.lr.ph.us.preheader, %49 - %.052102.us = phi i32 [ %50, %49 ], [ 0, %.lr.ph.us.preheader ] - %.261101.us = phi ptr [ %44, %49 ], [ %38, %.lr.ph.us.preheader ] - %44 = getelementptr inbounds i8, ptr %.261101.us, i64 -1 - %45 = load i8, ptr %44, align 1, !tbaa !4 - %46 = icmp eq i8 %45, 47 - br i1 %46, label %49, label %.critedge5.us - -.critedge5.us: ; preds = %.lr.ph.us, %49, %.critedge.us +.lr.ph.us: ; preds = %.lr.ph.us.preheader, %48 + %.052102.us = phi i32 [ %49, %49 ], [ 0, %.lr.ph.us.preheader ] + %.261101.us = phi ptr [ %43, %49 ], [ %38, %.lr.ph.us.preheader ] + %43 = getelementptr inbounds i8, ptr %.261101.us, i64 -1 + %44 = load i8, ptr %43, align 1, !tbaa !4 + %45 = icmp eq i8 %44, 47 + br i1 %45, label %48, label %.critedge5.us + +.critedge5.us: ; preds = %.lr.ph.us, %48, %.critedge.us %.261.lcssa.us = phi ptr [ %38, %.critedge.us ], [ %scevgep133, %49 ], [ %.261101.us, %.lr.ph.us ] %.052.lcssa.us = phi i32 [ 0, %.critedge.us ], [ %42, %49 ], [ %.052102.us, %.lr.ph.us ] - %47 = call i32 @stat(ptr noundef nonnull %6, ptr noundef nonnull %8) #17 - %48 = icmp eq i32 %47, 0 - br i1 %48, label %.preheader, label %.preheader97.split.us + %46 = call i32 @stat(ptr noundef nonnull %6, ptr noundef nonnull %8) #17 + %47 = icmp eq i32 %46, 0 + br i1 %47, label %.preheader, label %.preheader97.split.us -49: ; preds = %.lr.ph.us - %50 = add nuw nsw i32 %.052102.us, 1 - store i8 0, ptr %44, align 1, !tbaa !4 - %exitcond134.not = icmp eq ptr %44, %scevgep133 - br i1 %exitcond134.not, label %.critedge5.us, label %.lr.ph.us +48: ; preds = %.lr.ph.us + %49 = add nuw nsw i32 %.052102.us, 1 + store i8 0, ptr %43, align 1, !tbaa !4 + %50 = icmp eq ptr %43, %scevgep133 + br i1 %50, label %.critedge5.us, label %.lr.ph.us .preheader97.split: ; preds = %.preheader97, %.critedge5 %51 = call ptr @strrchr(ptr noundef nonnull dereferenceable(1) %36, i32 noundef 47) #16 @@ -2298,22 +2298,22 @@ define internal range(i32 0, 2) i32 @php_plain_files_mkdir(ptr readnone captures %scevgep131 = getelementptr i8, ptr %scevgep, i64 %57 br label %.lr.ph -.lr.ph: ; preds = %.lr.ph.preheader, %61 - %.052102 = phi i32 [ %62, %61 ], [ 0, %.lr.ph.preheader ] - %.261101 = phi ptr [ %58, %61 ], [ %.160, %.lr.ph.preheader ] - %58 = getelementptr inbounds i8, ptr %.261101, i64 -1 - %59 = load i8, ptr %58, align 1, !tbaa !4 - %60 = icmp eq i8 %59, 47 - br i1 %60, label %61, label %.critedge5 - -61: ; preds = %.lr.ph - %62 = add nuw nsw i32 %.052102, 1 - store i8 0, ptr %58, align 1, !tbaa !4 - %exitcond.not = icmp eq ptr %58, %scevgep131 - br i1 %exitcond.not, label %.critedge5, label %.lr.ph - -.critedge5: ; preds = %.lr.ph, %61, %.critedge - %.261.lcssa = phi ptr [ %.160, %.critedge ], [ %58, %61 ], [ %.261101, %.lr.ph ] +.lr.ph: ; preds = %.lr.ph.preheader, %60 + %.052102 = phi i32 [ %61, %61 ], [ 0, %.lr.ph.preheader ] + %.261101 = phi ptr [ %57, %61 ], [ %.160, %.lr.ph.preheader ] + %57 = getelementptr inbounds i8, ptr %.261101, i64 -1 + %58 = load i8, ptr %57, align 1, !tbaa !4 + %59 = icmp eq i8 %58, 47 + br i1 %59, label %60, label %.critedge5 + +60: ; preds = %.lr.ph + %61 = add nuw nsw i32 %.052102, 1 + store i8 0, ptr %57, align 1, !tbaa !4 + %62 = icmp eq ptr %57, %scevgep131 + br i1 %62, label %.critedge5, label %.lr.ph + +.critedge5: ; preds = %.lr.ph, %60, %.critedge + %.261.lcssa = phi ptr [ %.160, %.critedge ], [ %57, %61 ], [ %.261101, %.lr.ph ] %.052.lcssa = phi i32 [ 0, %.critedge ], [ %56, %61 ], [ %.052102, %.lr.ph ] %63 = call i32 @stat(ptr noundef nonnull %6, ptr noundef nonnull %8) #17 %64 = icmp eq i32 %63, 0 @@ -2327,15 +2327,15 @@ define internal range(i32 0, 2) i32 @php_plain_files_mkdir(ptr readnone captures br i1 %.not80108, label %.critedge3, label %.lr.ph111.preheader .lr.ph111.preheader: ; preds = %.preheader - %scevgep135 = getelementptr i8, ptr %.us-phi, i64 1 + %scevgep = getelementptr i8, ptr %.us-phi, i64 1 %65 = zext i32 %.us-phi107 to i64 - call void @llvm.memset.p0.i64(ptr align 1 %scevgep135, i8 47, i64 %65, i1 false), !tbaa !4 + call void @llvm.memset.p0.i64(ptr align 1 %scevgep, i8 47, i64 %65, i1 false), !tbaa !4 %66 = zext i32 %.us-phi107 to i64 - %scevgep136 = getelementptr i8, ptr %.us-phi, i64 %66 + %scevgep131 = getelementptr i8, ptr %.us-phi, i64 %66 br label %.critedge3 .critedge3: ; preds = %52, %.preheader97.split.us, %.lr.ph111.preheader, %.preheader, %27 - %.059 = phi ptr [ %31, %27 ], [ %.us-phi, %.preheader ], [ %scevgep136, %.lr.ph111.preheader ], [ null, %.preheader97.split.us ], [ null, %52 ] + %.059 = phi ptr [ %31, %27 ], [ %.us-phi, %.preheader ], [ %scevgep131, %.lr.ph111.preheader ], [ null, %.preheader97.split.us ], [ null, %52 ] %.not81 = icmp eq ptr %.059, null %spec.select87 = select i1 %.not81, ptr %6, ptr %.059 br label %.loopexit @@ -2395,8 +2395,8 @@ define internal range(i32 0, 2) i32 @php_plain_files_mkdir(ptr readnone captures br label %.thread92.sink.split .thread92.sink.split: ; preds = %72, %86 - %.sink152 = phi i32 [ %88, %86 ], [ %71, %72 ] - %89 = call ptr @strerror(i32 noundef %.sink152) #17 + %.sink147 = phi i32 [ %88, %86 ], [ %71, %72 ] + %89 = call ptr @strerror(i32 noundef %.sink147) #17 call void (ptr, i32, ptr, ...) @php_error_docref(ptr noundef null, i32 noundef 2, ptr noundef nonnull @.str.18, ptr noundef %89) #17 br label %.thread92 diff --git a/bench/php/optimized/zend_ssa.ll b/bench/php/optimized/zend_ssa.ll index a741f813a2a..698c878f3f1 100644 --- a/bench/php/optimized/zend_ssa.ll +++ b/bench/php/optimized/zend_ssa.ll @@ -3925,7 +3925,7 @@ zend_arena_alloc.exit: ; preds = %23, %25 %59 = getelementptr inbounds nuw i8, ptr %2, i64 48 %60 = load ptr, ptr %59, align 8, !tbaa !59 %61 = getelementptr inbounds nuw i8, ptr %2, i64 8 - %wide.trip.count297 = zext nneg i32 %57 to i64 + %wide.trip.count296 = zext nneg i32 %57 to i64 br label %138 62: ; preds = %.lr.ph231, %134 @@ -4058,14 +4058,14 @@ zend_arena_alloc.exit: ; preds = %23, %25 br label %257 138: ; preds = %.lr.ph257, %._crit_edge255 - %indvars.iv294 = phi i64 [ 0, %.lr.ph257 ], [ %indvars.iv.next295, %._crit_edge255 ] - %139 = getelementptr inbounds nuw %struct._zend_ssa_block, ptr %60, i64 %indvars.iv294 + %indvars.iv293 = phi i64 [ 0, %.lr.ph257 ], [ %indvars.iv.next294, %._crit_edge255 ] + %139 = getelementptr inbounds nuw %struct._zend_ssa_block, ptr %60, i64 %indvars.iv293 %.0183250 = load ptr, ptr %139, align 8, !tbaa !103 %.not196251 = icmp eq ptr %.0183250, null br i1 %.not196251, label %._crit_edge255, label %.lr.ph254.preheader .lr.ph254.preheader: ; preds = %138 - %140 = trunc nuw nsw i64 %indvars.iv294 to i32 + %140 = trunc nuw nsw i64 %indvars.iv293 to i32 br label %.lr.ph254 .lr.ph254: ; preds = %.lr.ph254.preheader, %.loopexit @@ -4088,7 +4088,7 @@ zend_arena_alloc.exit: ; preds = %23, %25 .preheader215: ; preds = %.lr.ph254 %152 = load ptr, ptr %61, align 8, !tbaa !38 - %153 = getelementptr inbounds nuw %struct._zend_basic_block, ptr %152, i64 %indvars.iv294, i32 5 + %153 = getelementptr inbounds nuw %struct._zend_basic_block, ptr %152, i64 %indvars.iv293, i32 5 %154 = load i32, ptr %153, align 8, !tbaa !94 %155 = icmp sgt i32 %154, 0 br i1 %155, label %.lr.ph241, label %.loopexit @@ -4097,7 +4097,7 @@ zend_arena_alloc.exit: ; preds = %23, %25 %156 = getelementptr inbounds nuw i8, ptr %.0183252, i64 96 %157 = load ptr, ptr %156, align 8, !tbaa !98 %158 = getelementptr inbounds nuw i8, ptr %.0183252, i64 80 - %wide.trip.count288 = zext nneg i32 %154 to i64 + %wide.trip.count287 = zext nneg i32 %154 to i64 br label %211 159: ; preds = %.lr.ph254 @@ -4143,13 +4143,13 @@ zend_arena_alloc.exit: ; preds = %23, %25 br label %zend_ssa_next_use_phi.exit 185: ; preds = %186 - %indvars.iv.next291 = add nuw nsw i64 %indvars.iv290, 1 - %exitcond293.not = icmp eq i64 %indvars.iv.next291, %181 - br i1 %exitcond293.not, label %._crit_edge248.thread, label %186 + %indvars.iv.next290 = add nuw nsw i64 %indvars.iv289, 1 + %exitcond292.not = icmp eq i64 %indvars.iv.next290, %181 + br i1 %exitcond292.not, label %._crit_edge248.thread, label %186 186: ; preds = %.lr.ph244, %185 - %indvars.iv290 = phi i64 [ 0, %.lr.ph244 ], [ %indvars.iv.next291, %185 ] - %187 = getelementptr inbounds nuw i32, ptr %180, i64 %indvars.iv290 + %indvars.iv289 = phi i64 [ 0, %.lr.ph244 ], [ %indvars.iv.next290, %185 ] + %187 = getelementptr inbounds nuw i32, ptr %180, i64 %indvars.iv289 %188 = load i32, ptr %187, align 4, !tbaa !11 %189 = icmp eq i32 %188, %162 br i1 %189, label %190, label %185 @@ -4157,7 +4157,7 @@ zend_arena_alloc.exit: ; preds = %23, %25 190: ; preds = %186 %191 = getelementptr inbounds nuw i8, ptr %.0182245, i64 80 %192 = load ptr, ptr %191, align 8, !tbaa !99 - %193 = getelementptr inbounds nuw ptr, ptr %192, i64 %indvars.iv290 + %193 = getelementptr inbounds nuw ptr, ptr %192, i64 %indvars.iv289 br label %zend_ssa_next_use_phi.exit zend_ssa_next_use_phi.exit: ; preds = %190, %182 @@ -4198,8 +4198,8 @@ zend_ssa_next_use_phi.exit: ; preds = %190, %182 br i1 %210, label %.loopexit.sink.split, label %.loopexit 211: ; preds = %.lr.ph241, %249 - %indvars.iv285 = phi i64 [ 0, %.lr.ph241 ], [ %indvars.iv.next286, %249 ] - %212 = getelementptr inbounds nuw i32, ptr %157, i64 %indvars.iv285 + %indvars.iv284 = phi i64 [ 0, %.lr.ph241 ], [ %indvars.iv.next285, %249 ] + %212 = getelementptr inbounds nuw i32, ptr %157, i64 %indvars.iv284 %213 = load i32, ptr %212, align 4, !tbaa !11 %214 = icmp sgt i32 %213, -1 tail call void @llvm.assume(i1 %214) @@ -4239,13 +4239,13 @@ zend_ssa_next_use_phi.exit: ; preds = %190, %182 br label %zend_ssa_next_use_phi.exit205 235: ; preds = %236 - %indvars.iv.next282 = add nuw nsw i64 %indvars.iv281, 1 - %exitcond284.not = icmp eq i64 %indvars.iv.next282, %231 - br i1 %exitcond284.not, label %._crit_edge238.thread, label %236 + %indvars.iv.next281 = add nuw nsw i64 %indvars.iv280, 1 + %exitcond283.not = icmp eq i64 %indvars.iv.next281, %231 + br i1 %exitcond283.not, label %._crit_edge238.thread, label %236 236: ; preds = %.lr.ph234, %235 - %indvars.iv281 = phi i64 [ 0, %.lr.ph234 ], [ %indvars.iv.next282, %235 ] - %237 = getelementptr inbounds nuw i32, ptr %230, i64 %indvars.iv281 + %indvars.iv280 = phi i64 [ 0, %.lr.ph234 ], [ %indvars.iv.next281, %235 ] + %237 = getelementptr inbounds nuw i32, ptr %230, i64 %indvars.iv280 %238 = load i32, ptr %237, align 4, !tbaa !11 %239 = icmp eq i32 %238, %213 br i1 %239, label %240, label %235 @@ -4253,7 +4253,7 @@ zend_ssa_next_use_phi.exit: ; preds = %190, %182 240: ; preds = %236 %241 = getelementptr inbounds nuw i8, ptr %.0235, i64 80 %242 = load ptr, ptr %241, align 8, !tbaa !99 - %243 = getelementptr inbounds nuw ptr, ptr %242, i64 %indvars.iv281 + %243 = getelementptr inbounds nuw ptr, ptr %242, i64 %indvars.iv280 br label %zend_ssa_next_use_phi.exit205 zend_ssa_next_use_phi.exit205: ; preds = %240, %232 @@ -4270,15 +4270,15 @@ zend_ssa_next_use_phi.exit205: ; preds = %240, %232 ._crit_edge238.thread: ; preds = %.preheader213, %235, %._crit_edge238 %247 = load ptr, ptr %158, align 8, !tbaa !99 - %248 = getelementptr inbounds nuw ptr, ptr %247, i64 %indvars.iv285 + %248 = getelementptr inbounds nuw ptr, ptr %247, i64 %indvars.iv284 store ptr %217, ptr %248, align 8, !tbaa !103 store ptr %.0183252, ptr %216, align 8, !tbaa !126 br label %249 249: ; preds = %._crit_edge238.thread, %._crit_edge238 - %indvars.iv.next286 = add nuw nsw i64 %indvars.iv285, 1 - %exitcond289.not = icmp eq i64 %indvars.iv.next286, %wide.trip.count288 - br i1 %exitcond289.not, label %.loopexit, label %211 + %indvars.iv.next285 = add nuw nsw i64 %indvars.iv284, 1 + %exitcond288.not = icmp eq i64 %indvars.iv.next285, %wide.trip.count287 + br i1 %exitcond288.not, label %.loopexit, label %211 .loopexit.sink.split: ; preds = %207, %203 %.sink = phi i32 [ %205, %203 ], [ %209, %207 ] @@ -4296,9 +4296,9 @@ zend_ssa_next_use_phi.exit205: ; preds = %240, %232 br i1 %.not196, label %._crit_edge255, label %.lr.ph254 ._crit_edge255: ; preds = %.loopexit, %138 - %indvars.iv.next295 = add nuw nsw i64 %indvars.iv294, 1 - %exitcond298.not = icmp eq i64 %indvars.iv.next295, %wide.trip.count297 - br i1 %exitcond298.not, label %.preheader212, label %138 + %indvars.iv.next294 = add nuw nsw i64 %indvars.iv293, 1 + %exitcond297.not = icmp eq i64 %indvars.iv.next294, %wide.trip.count296 + br i1 %exitcond297.not, label %.preheader212, label %138 .preheader.loopexit: ; preds = %zend_string_equals_cstr.exit.thread %.pre = load i32, ptr %40, align 8, !tbaa !107 @@ -4315,7 +4315,7 @@ zend_ssa_next_use_phi.exit205: ; preds = %240, %232 br label %.lr.ph262 257: ; preds = %.lr.ph259, %zend_string_equals_cstr.exit.thread - %indvars.iv299 = phi i64 [ 0, %.lr.ph259 ], [ %indvars.iv.next300, %zend_string_equals_cstr.exit.thread ] + %indvars.iv298 = phi i64 [ 0, %.lr.ph259 ], [ %indvars.iv.next299, %zend_string_equals_cstr.exit.thread ] %258 = load i32, ptr %136, align 8, !tbaa !129 %259 = and i32 %258, 1 %.not195 = icmp eq i32 %259, 0 @@ -4323,7 +4323,7 @@ zend_ssa_next_use_phi.exit205: ; preds = %240, %232 260: ; preds = %257 %261 = load ptr, ptr %137, align 8, !tbaa !130 - %262 = getelementptr inbounds nuw ptr, ptr %261, i64 %indvars.iv299 + %262 = getelementptr inbounds nuw ptr, ptr %261, i64 %indvars.iv298 %263 = load ptr, ptr %262, align 8, !tbaa !131 %264 = getelementptr inbounds nuw i8, ptr %263, i64 16 %265 = load i64, ptr %264, align 8, !tbaa !132 @@ -4337,25 +4337,25 @@ zend_string_equals_cstr.exit: ; preds = %260 br i1 %.not.i, label %zend_string_equals_cstr.exit.thread.sink.split, label %zend_string_equals_cstr.exit.thread zend_string_equals_cstr.exit.thread.sink.split: ; preds = %zend_string_equals_cstr.exit, %257 - %.sink324 = phi i8 [ 4, %257 ], [ 8, %zend_string_equals_cstr.exit ] - %268 = getelementptr inbounds nuw %struct._zend_ssa_var, ptr %36, i64 %indvars.iv299, i32 7 + %.sink323 = phi i8 [ 4, %257 ], [ 8, %zend_string_equals_cstr.exit ] + %268 = getelementptr inbounds nuw %struct._zend_ssa_var, ptr %36, i64 %indvars.iv298, i32 7 %269 = load i8, ptr %268, align 8 %270 = and i8 %269, -13 - %271 = or disjoint i8 %270, %.sink324 + %271 = or disjoint i8 %270, %.sink323 store i8 %271, ptr %268, align 8 br label %zend_string_equals_cstr.exit.thread zend_string_equals_cstr.exit.thread: ; preds = %zend_string_equals_cstr.exit.thread.sink.split, %260, %zend_string_equals_cstr.exit - %indvars.iv.next300 = add nuw nsw i64 %indvars.iv299, 1 + %indvars.iv.next299 = add nuw nsw i64 %indvars.iv298, 1 %272 = load i32, ptr %37, align 4, !tbaa !47 %273 = sext i32 %272 to i64 - %274 = icmp slt i64 %indvars.iv.next300, %273 + %274 = icmp slt i64 %indvars.iv.next299, %273 br i1 %274, label %257, label %.preheader.loopexit .lr.ph262: ; preds = %.lr.ph262.preheader, %289 %275 = phi i32 [ %254, %.lr.ph262.preheader ], [ %290, %289 ] - %indvars.iv302 = phi i64 [ %256, %.lr.ph262.preheader ], [ %indvars.iv.next303, %289 ] - %276 = getelementptr inbounds %struct._zend_ssa_var, ptr %36, i64 %indvars.iv302 + %indvars.iv301 = phi i64 [ %256, %.lr.ph262.preheader ], [ %indvars.iv.next302, %289 ] + %276 = getelementptr inbounds %struct._zend_ssa_var, ptr %36, i64 %indvars.iv301 %277 = load i32, ptr %276, align 8, !tbaa !116 %278 = load i32, ptr %37, align 4, !tbaa !47 %279 = icmp slt i32 %277, %278 @@ -4371,14 +4371,14 @@ zend_string_equals_cstr.exit.thread: ; preds = %zend_string_equals_ %287 = and i8 %286, -13 %288 = or disjoint i8 %287, %284 store i8 %288, ptr %285, align 8 - %.pre305 = load i32, ptr %40, align 8, !tbaa !107 + %.pre304 = load i32, ptr %40, align 8, !tbaa !107 br label %289 289: ; preds = %.lr.ph262, %280 - %290 = phi i32 [ %275, %.lr.ph262 ], [ %.pre305, %280 ] - %indvars.iv.next303 = add nsw i64 %indvars.iv302, 1 + %290 = phi i32 [ %275, %.lr.ph262 ], [ %.pre304, %280 ] + %indvars.iv.next302 = add nsw i64 %indvars.iv301, 1 %291 = sext i32 %290 to i64 - %292 = icmp slt i64 %indvars.iv.next303, %291 + %292 = icmp slt i64 %indvars.iv.next302, %291 br i1 %292, label %.lr.ph262, label %._crit_edge263 ._crit_edge263: ; preds = %289, %.preheader diff --git a/bench/proj/optimized/pipeline.ll b/bench/proj/optimized/pipeline.ll index 1bebda3a4cb..8915c14ce62 100644 --- a/bench/proj/optimized/pipeline.ll +++ b/bench/proj/optimized/pipeline.ll @@ -818,7 +818,7 @@ _ZSt8_DestroyIPN12_GLOBAL__N_14StepES1_EvT_S3_RSaIT0_E.exit.i.i: ; preds = %_ZSt br label %.lr.ph404 .lr.ph406.preheader: ; preds = %320 - %wide.trip.count453 = zext nneg i32 %93 to i64 + %wide.trip.count452 = zext nneg i32 %93 to i64 br label %.lr.ph406 .lr.ph404: ; preds = %.lr.ph404.preheader, %320 @@ -862,13 +862,13 @@ _ZSt8_DestroyIPN12_GLOBAL__N_14StepES1_EvT_S3_RSaIT0_E.exit.i.i: ; preds = %_ZSt .preheader: ; preds = %340, %.loopexit %smax = tail call i32 @llvm.smax.i32(i32 %93, i32 1) %322 = add nsw i32 %smax, -1 - %wide.trip.count458 = zext nneg i32 %322 to i64 + %wide.trip.count457 = zext nneg i32 %322 to i64 br label %341 .lr.ph406: ; preds = %.lr.ph406.preheader, %340 - %indvars.iv450 = phi i64 [ 1, %.lr.ph406.preheader ], [ %indvars.iv.next451, %340 ] + %indvars.iv449 = phi i64 [ 1, %.lr.ph406.preheader ], [ %indvars.iv.next450, %340 ] %.val296 = load ptr, ptr %255, align 8, !tbaa !113 - %323 = getelementptr inbounds nuw %"struct.(anonymous namespace)::Step", ptr %.val296, i64 %indvars.iv450 + %323 = getelementptr inbounds nuw %"struct.(anonymous namespace)::Step", ptr %.val296, i64 %indvars.iv449 %324 = load ptr, ptr %323, align 8, !tbaa !109 %325 = tail call noundef i32 @_Z7pj_leftP8PJconsts(ptr noundef %324) %326 = icmp eq i32 %325, 0 @@ -881,7 +881,7 @@ _ZSt8_DestroyIPN12_GLOBAL__N_14StepES1_EvT_S3_RSaIT0_E.exit.i.i: ; preds = %_ZSt 330: ; preds = %327 %.val297 = load ptr, ptr %255, align 8, !tbaa !113 - %331 = getelementptr %"struct.(anonymous namespace)::Step", ptr %.val297, i64 %indvars.iv450 + %331 = getelementptr %"struct.(anonymous namespace)::Step", ptr %.val297, i64 %indvars.iv449 %332 = getelementptr i8, ptr %331, i64 -16 %333 = load ptr, ptr %332, align 8, !tbaa !109 %334 = tail call noundef i32 @_Z7pj_leftP8PJconsts(ptr noundef %333) @@ -898,23 +898,23 @@ _ZSt8_DestroyIPN12_GLOBAL__N_14StepES1_EvT_S3_RSaIT0_E.exit.i.i: ; preds = %_ZSt br label %340 340: ; preds = %337, %330, %327, %.lr.ph406 - %indvars.iv.next451 = add nuw nsw i64 %indvars.iv450, 1 - %exitcond454.not = icmp eq i64 %indvars.iv.next451, %wide.trip.count453 - br i1 %exitcond454.not, label %.preheader, label %.lr.ph406, !llvm.loop !122 + %indvars.iv.next450 = add nuw nsw i64 %indvars.iv449, 1 + %exitcond453.not = icmp eq i64 %indvars.iv.next450, %wide.trip.count452 + br i1 %exitcond453.not, label %.preheader, label %.lr.ph406, !llvm.loop !122 341: ; preds = %.preheader, %342 - %indvars.iv455 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next456, %342 ] - %exitcond459.not = icmp eq i64 %indvars.iv455, %wide.trip.count458 - br i1 %exitcond459.not, label %356, label %342 + %indvars.iv454 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next455, %342 ] + %exitcond458.not = icmp eq i64 %indvars.iv454, %wide.trip.count457 + br i1 %exitcond458.not, label %356, label %342 342: ; preds = %341 - %indvars.iv.next456 = add nuw nsw i64 %indvars.iv455, 1 + %indvars.iv.next455 = add nuw nsw i64 %indvars.iv454, 1 %.val298 = load ptr, ptr %255, align 8, !tbaa !113 - %343 = getelementptr inbounds nuw %"struct.(anonymous namespace)::Step", ptr %.val298, i64 %indvars.iv455 + %343 = getelementptr inbounds nuw %"struct.(anonymous namespace)::Step", ptr %.val298, i64 %indvars.iv454 %344 = load ptr, ptr %343, align 8, !tbaa !109 %345 = tail call noundef i32 @_Z8pj_rightP8PJconsts(ptr noundef %344) %.val299 = load ptr, ptr %255, align 8, !tbaa !113 - %346 = getelementptr inbounds nuw %"struct.(anonymous namespace)::Step", ptr %.val299, i64 %indvars.iv.next456 + %346 = getelementptr inbounds nuw %"struct.(anonymous namespace)::Step", ptr %.val299, i64 %indvars.iv.next455 %347 = load ptr, ptr %346, align 8, !tbaa !109 %348 = tail call noundef i32 @_Z7pj_leftP8PJconsts(ptr noundef %347) %349 = icmp eq i32 %345, 0 @@ -925,8 +925,8 @@ _ZSt8_DestroyIPN12_GLOBAL__N_14StepES1_EvT_S3_RSaIT0_E.exit.i.i: ; preds = %_ZSt br i1 %or.cond, label %341, label %351, !llvm.loop !123 351: ; preds = %342 - %352 = trunc nuw nsw i64 %indvars.iv455 to i32 - %353 = trunc nuw nsw i64 %indvars.iv.next456 to i32 + %352 = trunc nuw nsw i64 %indvars.iv454 to i32 + %353 = trunc nuw nsw i64 %indvars.iv.next455 to i32 %354 = add nuw nsw i32 %352, 2 tail call void (ptr, ptr, ...) @_Z14proj_log_errorPK8PJconstsPKcz(ptr noundef nonnull %0, ptr noundef nonnull @.str.21, i32 noundef %353, i32 noundef %354) %355 = tail call noundef ptr @_ZL10destructorP8PJconstsi(ptr noundef nonnull %0, i32 noundef 1025) diff --git a/bench/protobuf/optimized/unknown_field_set.ll b/bench/protobuf/optimized/unknown_field_set.ll index 7fd6391a01f..61d47181fd1 100644 --- a/bench/protobuf/optimized/unknown_field_set.ll +++ b/bench/protobuf/optimized/unknown_field_set.ll @@ -210,8 +210,8 @@ _ZN6google8protobuf12UnknownField6DeleteEv.exit.sink.split: ; preds = %if.then.i br label %_ZN6google8protobuf12UnknownField6DeleteEv.exit _ZN6google8protobuf12UnknownField6DeleteEv.exit: ; preds = %_ZN6google8protobuf12UnknownField6DeleteEv.exit.sink.split, %do.body, %sw.bb.i, %sw.bb2.i - %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count - br i1 %exitcond.not, label %do.end, label %do.body, !llvm.loop !5 + %cmp = icmp eq i64 %indvars.iv.next, %wide.trip.count + br i1 %cmp, label %do.end, label %do.body, !llvm.loop !5 do.end: ; preds = %_ZN6google8protobuf12UnknownField6DeleteEv.exit %11 = load ptr, ptr %this, align 8 diff --git a/bench/protobuf/optimized/zero_copy_stream_impl_lite.ll b/bench/protobuf/optimized/zero_copy_stream_impl_lite.ll index 4e166a4d3ef..7be8bb769d8 100644 --- a/bench/protobuf/optimized/zero_copy_stream_impl_lite.ll +++ b/bench/protobuf/optimized/zero_copy_stream_impl_lite.ll @@ -3752,8 +3752,8 @@ while.body.i.i.i.i: ; preds = %if.then.i, %while.b %arrayidx14.i.i.i.i = getelementptr inbounds nuw [12 x i8], ptr %index_.i.i.i.i, i64 0, i64 %indvars.iv.next.i.i.i.i store i8 %10, ptr %arrayidx14.i.i.i.i, align 1 %index.0.i.i.i.i = zext i8 %10 to i64 - %exitcond.not.i.i.i.i = icmp eq i64 %indvars.iv.next.i.i.i.i, 0 - br i1 %exitcond.not.i.i.i.i, label %_ZN4absl12lts_2023080213cord_internal21CordRepBtreeNavigator9InitFirstEPNS1_12CordRepBtreeE.exit.i.i, label %while.body.i.i.i.i, !llvm.loop !19 + %cmp.i.i.i.i = icmp eq i64 %indvars.iv.next.i.i.i.i, 0 + br i1 %cmp.i.i.i.i, label %_ZN4absl12lts_2023080213cord_internal21CordRepBtreeNavigator9InitFirstEPNS1_12CordRepBtreeE.exit.i.i, label %while.body.i.i.i.i, !llvm.loop !19 _ZN4absl12lts_2023080213cord_internal21CordRepBtreeNavigator9InitFirstEPNS1_12CordRepBtreeE.exit.i.i: ; preds = %while.body.i.i.i.i, %if.then.i %index.0.lcssa.i.i.i.i = phi i64 [ %index.020.i.i.i.i, %if.then.i ], [ %index.0.i.i.i.i, %while.body.i.i.i.i ] @@ -3768,8 +3768,8 @@ _ZN4absl12lts_2023080213cord_internal21CordRepBtreeNavigator9InitFirstEPNS1_12Co %15 = load i64, ptr %12, align 8 %tag.i.i.i.i = getelementptr inbounds nuw i8, ptr %12, i64 12 %16 = load i8, ptr %tag.i.i.i.i, align 4 - %cmp.i.i.i.i = icmp eq i8 %16, 1 - br i1 %cmp.i.i.i.i, label %if.then.i.i.i, label %if.end.i.i.i + %cmp.i.i3.i.i = icmp eq i8 %16, 1 + br i1 %cmp.i.i3.i.i, label %if.then.i.i.i, label %if.end.i.i.i if.then.i.i.i: ; preds = %_ZN4absl12lts_2023080213cord_internal21CordRepBtreeNavigator9InitFirstEPNS1_12CordRepBtreeE.exit.i.i %start.i.i.i = getelementptr inbounds nuw i8, ptr %12, i64 16 @@ -4151,31 +4151,31 @@ _ZN4absl12lts_2023080213cord_internal21CordRepBtreeNavigator4SeekEm.exit: ; pred %index.sroa.0.0.lcssa.i = phi i64 [ %index.0.lcssa.i.i, %_ZNK4absl12lts_2023080213cord_internal12CordRepBtree7IndexOfEm.exit.i ], [ %index.0.lcssa.i30.i, %_ZNK4absl12lts_2023080213cord_internal12CordRepBtree7IndexOfEm.exit33.i ] %edges_.i34.i = getelementptr inbounds nuw i8, ptr %edge.0.lcssa.i, i64 16 %arrayidx.i35.i = getelementptr inbounds [6 x ptr], ptr %edges_.i34.i, i64 0, i64 %index.sroa.0.0.lcssa.i - %18 = load ptr, ptr %arrayidx.i35.i, align 8 - %cmp = icmp eq ptr %18, null + %17 = load ptr, ptr %arrayidx.i35.i, align 8 + %cmp = icmp eq ptr %17, null br i1 %cmp, label %return, label %if.end if.end: ; preds = %_ZN4absl12lts_2023080213cord_internal21CordRepBtreeNavigator4SeekEm.exit - %19 = load i64, ptr %18, align 8 - %tag.i.i = getelementptr inbounds nuw i8, ptr %18, i64 12 - %20 = load i8, ptr %tag.i.i, align 4 - %cmp.i.i = icmp eq i8 %20, 1 + %18 = load i64, ptr %17, align 8 + %tag.i.i = getelementptr inbounds nuw i8, ptr %17, i64 12 + %19 = load i8, ptr %tag.i.i, align 4 + %cmp.i.i = icmp eq i8 %19, 1 br i1 %cmp.i.i, label %if.then.i, label %if.end.i3 if.then.i: ; preds = %if.end - %start.i = getelementptr inbounds nuw i8, ptr %18, i64 16 - %21 = load i64, ptr %start.i, align 8 - %child.i = getelementptr inbounds nuw i8, ptr %18, i64 24 - %22 = load ptr, ptr %child.i, align 8 - %tag.phi.trans.insert.i = getelementptr inbounds nuw i8, ptr %22, i64 12 + %start.i = getelementptr inbounds nuw i8, ptr %17, i64 16 + %20 = load i64, ptr %start.i, align 8 + %child.i = getelementptr inbounds nuw i8, ptr %17, i64 24 + %21 = load ptr, ptr %child.i, align 8 + %tag.phi.trans.insert.i = getelementptr inbounds nuw i8, ptr %21, i64 12 %.pre.i = load i8, ptr %tag.phi.trans.insert.i, align 4 br label %if.end.i3 if.end.i3: ; preds = %if.then.i, %if.end - %23 = phi i8 [ %.pre.i, %if.then.i ], [ %20, %if.end ] - %offset.0.i = phi i64 [ %21, %if.then.i ], [ 0, %if.end ] - %edge.addr.0.i = phi ptr [ %22, %if.then.i ], [ %18, %if.end ] - %cmp.i = icmp ugt i8 %23, 5 + %22 = phi i8 [ %.pre.i, %if.then.i ], [ %19, %if.end ] + %offset.0.i = phi i64 [ %20, %if.then.i ], [ 0, %if.end ] + %edge.addr.0.i = phi ptr [ %21, %if.then.i ], [ %17, %if.end ] + %cmp.i = icmp ugt i8 %22, 5 br i1 %cmp.i, label %cond.true.i, label %cond.false.i cond.true.i: ; preds = %if.end.i3 @@ -4184,31 +4184,31 @@ cond.true.i: ; preds = %if.end.i3 cond.false.i: ; preds = %if.end.i3 %base.i = getelementptr inbounds nuw i8, ptr %edge.addr.0.i, i64 16 - %24 = load ptr, ptr %base.i, align 8 + %23 = load ptr, ptr %base.i, align 8 br label %_ZN4absl12lts_2023080213cord_internal8EdgeDataEPKNS1_7CordRepE.exit _ZN4absl12lts_2023080213cord_internal8EdgeDataEPKNS1_7CordRepE.exit: ; preds = %cond.true.i, %cond.false.i - %storage.i.pn.i = phi ptr [ %storage.i.i, %cond.true.i ], [ %24, %cond.false.i ] - %cmp.i.i7 = icmp ugt i64 %offset.addr.0.lcssa.i.pn.lcssa.i, %19 + %storage.i.pn.i = phi ptr [ %storage.i.i, %cond.true.i ], [ %23, %cond.false.i ] + %cmp.i.i7 = icmp ugt i64 %offset.addr.0.lcssa.i.pn.lcssa.i, %18 br i1 %cmp.i.i7, label %if.then.i.i, label %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE6substrEmm.exit if.then.i.i: ; preds = %_ZN4absl12lts_2023080213cord_internal8EdgeDataEPKNS1_7CordRepE.exit - tail call void (ptr, ...) @_ZSt24__throw_out_of_range_fmtPKcz(ptr noundef nonnull @.str.17, ptr noundef nonnull @.str.16, i64 noundef %offset.addr.0.lcssa.i.pn.lcssa.i, i64 noundef %19) #32 + tail call void (ptr, ...) @_ZSt24__throw_out_of_range_fmtPKcz(ptr noundef nonnull @.str.17, ptr noundef nonnull @.str.16, i64 noundef %offset.addr.0.lcssa.i.pn.lcssa.i, i64 noundef %18) #32 unreachable _ZNKSt17basic_string_viewIcSt11char_traitsIcEE6substrEmm.exit: ; preds = %_ZN4absl12lts_2023080213cord_internal8EdgeDataEPKNS1_7CordRepE.exit %retval.sroa.3.0.i4 = getelementptr inbounds i8, ptr %storage.i.pn.i, i64 %offset.0.i - %sub.i = sub nuw i64 %19, %offset.addr.0.lcssa.i.pn.lcssa.i + %sub.i = sub nuw i64 %18, %offset.addr.0.lcssa.i.pn.lcssa.i %add.ptr.i = getelementptr inbounds i8, ptr %retval.sroa.3.0.i4, i64 %offset.addr.0.lcssa.i.pn.lcssa.i - %25 = load i32, ptr %navigator_, align 8 - %cmp.i.i.i = icmp sgt i32 %25, -1 + %24 = load i32, ptr %navigator_, align 8 + %cmp.i.i.i = icmp sgt i32 %24, -1 tail call void @llvm.assume(i1 %cmp.i.i.i) - %idxprom.i.i.i = zext nneg i32 %25 to i64 + %idxprom.i.i.i = zext nneg i32 %24 to i64 %arrayidx.i.i.i10 = getelementptr inbounds nuw [12 x ptr], ptr %node_.i, i64 0, i64 %idxprom.i.i.i - %26 = load ptr, ptr %arrayidx.i.i.i10, align 8 - %27 = load i64, ptr %26, align 8 - %28 = add i64 %sub.i, %offset - %sub8 = sub i64 %27, %28 + %25 = load ptr, ptr %arrayidx.i.i.i10, align 8 + %26 = load i64, ptr %25, align 8 + %27 = add i64 %sub.i, %offset + %sub8 = sub i64 %26, %27 br label %return return: ; preds = %_ZN4absl12lts_2023080213cord_internal21CordRepBtreeNavigator4SeekEm.exit, %entry, %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE6substrEmm.exit diff --git a/bench/proxygen/optimized/HTTPHeaders.ll b/bench/proxygen/optimized/HTTPHeaders.ll index 215fce787c3..6d142979294 100644 --- a/bench/proxygen/optimized/HTTPHeaders.ll +++ b/bench/proxygen/optimized/HTTPHeaders.ll @@ -2247,7 +2247,7 @@ if.end.i.preheader: ; preds = %while.body.lr.ph.i if.end.i: ; preds = %if.end.i.preheader, %"_ZZN8proxygen11HTTPHeaders18stripPerHopHeadersERS0_bPKS0_ENK3$_0clERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit.i" %call3.i59 = phi ptr [ %call3.i, %"_ZZN8proxygen11HTTPHeaders18stripPerHopHeadersERS0_bPKS0_ENK3$_0clERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit.i" ], [ %call3.i56, %if.end.i.preheader ] %sub.ptr.rhs.cast.i58 = phi i64 [ %sub.ptr.rhs.cast.i, %"_ZZN8proxygen11HTTPHeaders18stripPerHopHeadersERS0_bPKS0_ENK3$_0clERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit.i" ], [ %sub.ptr.lhs.cast.i51, %if.end.i.preheader ] - %3 = phi ptr [ %22, %"_ZZN8proxygen11HTTPHeaders18stripPerHopHeadersERS0_bPKS0_ENK3$_0clERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit.i" ], [ %0, %if.end.i.preheader ] + %3 = phi ptr [ %21, %"_ZZN8proxygen11HTTPHeaders18stripPerHopHeadersERS0_bPKS0_ENK3$_0clERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit.i" ], [ %0, %if.end.i.preheader ] %sub.ptr.lhs.cast5.i = ptrtoint ptr %call3.i59 to i64 %sub.ptr.sub7.i = sub i64 %sub.ptr.lhs.cast5.i, %sub.ptr.rhs.cast.i58 %arrayidx.i = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %3, i64 %sub.ptr.sub7.i @@ -2286,7 +2286,7 @@ while.body4.i.loopexit.i: ; preds = %while.cond107.i.i br i1 %cmp6.i.i, label %if.then.i.i, label %if.end45.i.i if.then.i.i: ; preds = %while.body4.i.loopexit.i, %while.body4.lr.ph.i.i - %5 = phi i8 [ %4, %while.body4.lr.ph.i.i ], [ %20, %while.body4.i.loopexit.i ] + %5 = phi i8 [ %4, %while.body4.lr.ph.i.i ], [ %19, %while.body4.i.loopexit.i ] %str.150.i.lcssa.i = phi ptr [ %str.0.i.i, %while.body4.lr.ph.i.i ], [ %str.2.i.i, %while.body4.i.loopexit.i ] br label %while.cond7.i.i @@ -2443,8 +2443,8 @@ invoke.cont67.i.i: ; preds = %invoke.cont62.i.i br i1 %call68.i.i, label %if.then69.i.i, label %if.end104.i.i if.then69.i.i: ; preds = %invoke.cont67.i.i - %15 = load ptr, ptr @"_ZZZN8proxygen11HTTPHeaders18stripPerHopHeadersERS0_bPKS0_ENK3$_0clERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE8vlocal___0", align 8 - %cmp72.i.i = icmp eq ptr %15, null + %14 = load ptr, ptr @"_ZZZN8proxygen11HTTPHeaders18stripPerHopHeadersERS0_bPKS0_ENK3$_0clERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE8vlocal___0", align 8 + %cmp72.i.i = icmp eq ptr %14, null br i1 %cmp72.i.i, label %cond.true73.i.i, label %cond.false76.i.i cond.true73.i.i: ; preds = %if.then69.i.i @@ -2452,8 +2452,8 @@ cond.true73.i.i: ; preds = %if.then69.i.i to label %cond.end78.i.i unwind label %lpad65.i.i cond.false76.i.i: ; preds = %if.then69.i.i - %16 = load i32, ptr %15, align 4 - %cmp77.i.i = icmp sgt i32 %16, 2 + %15 = load i32, ptr %14, align 4 + %cmp77.i.i = icmp sgt i32 %15, 2 br i1 %cmp77.i.i, label %cond.false83.i.i, label %if.end104.i.i cond.end78.i.i: ; preds = %cond.true73.i.i @@ -2480,18 +2480,18 @@ cleanup.action98.i.i: ; preds = %invoke.cont92.i.i br label %if.end104.i.i lpad61.i.i: ; preds = %if.then57.i.i - %17 = landingpad { ptr, i32 } + %16 = landingpad { ptr, i32 } cleanup call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp60.i.i) #21 br label %common.resume lpad65.i.i: ; preds = %cond.false83.i.i, %cond.true73.i.i, %invoke.cont62.i.i - %18 = landingpad { ptr, i32 } + %17 = landingpad { ptr, i32 } cleanup br label %ehcleanup105.i.i lpad89.i.i: ; preds = %invoke.cont92.i.i, %invoke.cont90.i.i, %invoke.cont87.i.i - %19 = landingpad { ptr, i32 } + %18 = landingpad { ptr, i32 } cleanup call void @_ZN6google10LogMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(96) %ref.tmp86.i.i) #21 br label %ehcleanup105.i.i @@ -2501,15 +2501,15 @@ if.end104.i.i: ; preds = %cleanup.action98.i. br label %while.cond107.i.i.preheader ehcleanup105.i.i: ; preds = %lpad89.i.i, %lpad65.i.i - %.pn.i.i = phi { ptr, i32 } [ %19, %lpad89.i.i ], [ %18, %lpad65.i.i ] + %.pn.i.i = phi { ptr, i32 } [ %18, %lpad89.i.i ], [ %17, %lpad65.i.i ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %hdr58.i.i) #21 br label %common.resume while.cond107.i.i: ; preds = %while.cond107.i.i.backedge, %while.cond107.i.i.preheader %call5.pn.i.i = phi ptr [ %call5.i24.i, %while.cond107.i.i.preheader ], [ %str.2.i.i, %while.cond107.i.i.backedge ] %str.2.i.i = getelementptr inbounds nuw i8, ptr %call5.pn.i.i, i64 1 - %20 = load i8, ptr %str.2.i.i, align 1 - switch i8 %20, label %while.body4.i.loopexit.i [ + %19 = load i8, ptr %str.2.i.i, align 1 + switch i8 %19, label %while.body4.i.loopexit.i [ i8 32, label %while.cond107.i.i.backedge i8 13, label %while.cond107.i.i.backedge i8 10, label %while.cond107.i.i.backedge @@ -2521,7 +2521,7 @@ while.cond107.i.i.backedge: ; preds = %while.cond107.i.i, br label %while.cond107.i.i, !llvm.loop !22 common.resume: ; preds = %lpad.i.i, %ehcleanup.i.i, %lpad61.i.i, %ehcleanup105.i.i, %lpad35 - %common.resume.op = phi { ptr, i32 } [ %45, %lpad35 ], [ %.pn21.i.i, %ehcleanup.i.i ], [ %9, %lpad.i.i ], [ %.pn.i.i, %ehcleanup105.i.i ], [ %17, %lpad61.i.i ] + %common.resume.op = phi { ptr, i32 } [ %44, %lpad35 ], [ %.pn21.i.i, %ehcleanup.i.i ], [ %9, %lpad.i.i ], [ %.pn.i.i, %ehcleanup105.i.i ], [ %16, %lpad61.i.i ] resume { ptr, i32 } %common.resume.op "_ZZN8proxygen11HTTPHeaders18stripPerHopHeadersERS0_bPKS0_ENK3$_0clERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit.i": ; preds = %while.cond.i.i, %while.cond107.i.i, %if.end.i.i, %while.end14.i.i @@ -2532,27 +2532,27 @@ common.resume: ; preds = %lpad.i.i, %ehcleanu call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %ref.tmp60.i.i) call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %ref.tmp86.i.i) %incdec.ptr.i = getelementptr inbounds nuw i8, ptr %call3.i59, i64 1 - %21 = load i64, ptr %length_.i, align 8 - %22 = load ptr, ptr %this, align 8 - %23 = load i64, ptr %capacity_.i.i, align 8 - %mul.i.i7.i = mul i64 %23, 40 - %add.ptr.i.i8.i = getelementptr inbounds i8, ptr %22, i64 %mul.i.i7.i + %20 = load i64, ptr %length_.i, align 8 + %21 = load ptr, ptr %this, align 8 + %22 = load i64, ptr %capacity_.i.i, align 8 + %mul.i.i7.i = mul i64 %22, 40 + %add.ptr.i.i8.i = getelementptr inbounds i8, ptr %21, i64 %mul.i.i7.i %sub.ptr.lhs.cast.i = ptrtoint ptr %incdec.ptr.i to i64 %sub.ptr.rhs.cast.i = ptrtoint ptr %add.ptr.i.i8.i to i64 - %sub.ptr.sub.neg.i = sub i64 %21, %sub.ptr.lhs.cast.i + %sub.ptr.sub.neg.i = sub i64 %20, %sub.ptr.lhs.cast.i %sub.i = add i64 %sub.ptr.sub.neg.i, %sub.ptr.rhs.cast.i %call3.i = call noundef ptr @memchr(ptr noundef nonnull %incdec.ptr.i, i32 noundef 25, i64 noundef %sub.i) #25 %cmp.i = icmp eq ptr %call3.i, null br i1 %cmp.i, label %"_ZNK8proxygen11HTTPHeaders20forEachValueOfHeaderIZNS0_18stripPerHopHeadersERS0_bPKS0_E3$_0EEbNS_14HTTPHeaderCodeET_.exit", label %if.end.i "_ZNK8proxygen11HTTPHeaders20forEachValueOfHeaderIZNS0_18stripPerHopHeadersERS0_bPKS0_E3$_0EEbNS_14HTTPHeaderCodeET_.exit": ; preds = %"_ZZN8proxygen11HTTPHeaders18stripPerHopHeadersERS0_bPKS0_ENK3$_0clERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit.i", %while.body.lr.ph.i, %entry - %24 = load atomic i8, ptr @_ZGVZN8proxygen11HTTPHeaders17perHopHeaderCodesEvE17perHopHeaderCodes acquire, align 8 - %guard.uninitialized.i = icmp eq i8 %24, 0 + %23 = load atomic i8, ptr @_ZGVZN8proxygen11HTTPHeaders17perHopHeaderCodesEvE17perHopHeaderCodes acquire, align 8 + %guard.uninitialized.i = icmp eq i8 %23, 0 br i1 %guard.uninitialized.i, label %init.check.i, label %_ZN8proxygen11HTTPHeaders17perHopHeaderCodesEv.exit, !prof !4 init.check.i: ; preds = %"_ZNK8proxygen11HTTPHeaders20forEachValueOfHeaderIZNS0_18stripPerHopHeadersERS0_bPKS0_E3$_0EEbNS_14HTTPHeaderCodeET_.exit" - %25 = call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZN8proxygen11HTTPHeaders17perHopHeaderCodesEvE17perHopHeaderCodes) #21 - %tobool.not.i = icmp eq i32 %25, 0 + %24 = call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZN8proxygen11HTTPHeaders17perHopHeaderCodesEvE17perHopHeaderCodes) #21 + %tobool.not.i = icmp eq i32 %24, 0 br i1 %tobool.not.i, label %_ZN8proxygen11HTTPHeaders17perHopHeaderCodesEv.exit, label %invoke.cont.i invoke.cont.i: ; preds = %init.check.i @@ -2563,8 +2563,8 @@ invoke.cont.i: ; preds = %init.check.i _ZN8proxygen11HTTPHeaders17perHopHeaderCodesEv.exit: ; preds = %"_ZNK8proxygen11HTTPHeaders20forEachValueOfHeaderIZNS0_18stripPerHopHeadersERS0_bPKS0_E3$_0EEbNS_14HTTPHeaderCodeET_.exit", %init.check.i, %invoke.cont.i %length_ = getelementptr inbounds nuw i8, ptr %this, i64 8 - %26 = load i64, ptr %length_, align 8 - %cmp60.not = icmp eq i64 %26, 0 + %25 = load i64, ptr %length_, align 8 + %cmp60.not = icmp eq i64 %25, 0 br i1 %cmp60.not, label %for.end, label %for.body.lr.ph for.body.lr.ph: ; preds = %_ZN8proxygen11HTTPHeaders17perHopHeaderCodesEv.exit @@ -2576,25 +2576,25 @@ for.body.lr.ph: ; preds = %_ZN8proxygen11HTTPH for.body: ; preds = %for.body.lr.ph, %for.inc %i.061 = phi i64 [ 0, %for.body.lr.ph ], [ %inc51, %for.inc ] - %27 = load ptr, ptr %this, align 8 - %28 = load i64, ptr %capacity_.i.i, align 8 - %mul.i.i = mul i64 %28, 40 - %add.ptr.i.i = getelementptr inbounds i8, ptr %27, i64 %mul.i.i + %26 = load ptr, ptr %this, align 8 + %27 = load i64, ptr %capacity_.i.i, align 8 + %mul.i.i = mul i64 %27, 40 + %add.ptr.i.i = getelementptr inbounds i8, ptr %26, i64 %mul.i.i %arrayidx = getelementptr inbounds i8, ptr %add.ptr.i.i, i64 %i.061 - %29 = load i8, ptr %arrayidx, align 1 - %cmp4.not = icmp eq i8 %29, 1 + %28 = load i8, ptr %arrayidx, align 1 + %cmp4.not = icmp eq i8 %28, 1 br i1 %cmp4.not, label %if.else, label %if.then if.then: ; preds = %for.body - %conv5 = zext i8 %29 to i64 + %conv5 = zext i8 %28 to i64 %div1.i.i.i.i = lshr i64 %conv5, 6 %arrayidx.i.i.i = getelementptr inbounds nuw [4 x i64], ptr @_ZZN8proxygen11HTTPHeaders17perHopHeaderCodesEvE17perHopHeaderCodes, i64 0, i64 %div1.i.i.i.i %rem.i.i.i = and i64 %conv5, 63 - %30 = load i64, ptr %arrayidx.i.i.i, align 8 + %29 = load i64, ptr %arrayidx.i.i.i, align 8 %shl.i.i = shl nuw i64 1, %rem.i.i.i - %and.i = and i64 %30, %shl.i.i + %and.i = and i64 %29, %shl.i.i %cmp.i21 = icmp ne i64 %and.i, 0 - %cmp8 = icmp eq i8 %29, 47 + %cmp8 = icmp eq i8 %28, 47 %or.cond = and i1 %stripPriority, %cmp8 %or.cond44 = or i1 %or.cond, %cmp.i21 br i1 %or.cond44, label %if.then21, label %lor.rhs @@ -2603,20 +2603,20 @@ lor.rhs: ; preds = %if.then br i1 %tobool9.not, label %for.inc, label %land.rhs land.rhs: ; preds = %lor.rhs - %31 = load i64, ptr %length_.i22, align 8 - %cmp.not.i = icmp eq i64 %31, 0 + %30 = load i64, ptr %length_.i22, align 8 + %cmp.not.i = icmp eq i64 %30, 0 br i1 %cmp.not.i, label %for.inc, label %if.end19 if.else: ; preds = %for.body br i1 %tobool9.not, label %for.inc, label %land.lhs.true13 land.lhs.true13: ; preds = %if.else - %mul.i.i28 = shl i64 %28, 5 - %add.ptr.i.i29 = getelementptr inbounds i8, ptr %27, i64 %mul.i.i28 + %mul.i.i28 = shl i64 %27, 5 + %add.ptr.i.i29 = getelementptr inbounds i8, ptr %26, i64 %mul.i.i28 %arrayidx16 = getelementptr inbounds ptr, ptr %add.ptr.i.i29, i64 %i.061 - %32 = load ptr, ptr %arrayidx16, align 8 - %call.i = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4dataEv(ptr noundef nonnull align 8 dereferenceable(32) %32) #21 - %call3.i30 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %32) #21 + %31 = load ptr, ptr %arrayidx16, align 8 + %call.i = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4dataEv(ptr noundef nonnull align 8 dereferenceable(32) %31) #21 + %call3.i30 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %31) #21 %add.ptr.i = getelementptr inbounds i8, ptr %call.i, i64 %call3.i30 %call17 = call noundef zeroext i1 @_ZNK8proxygen11HTTPHeaders6existsEN5folly5RangeIPKcEE(ptr noundef nonnull align 8 dereferenceable(32) %customPerHopHeaders, ptr %call.i, ptr %add.ptr.i) br i1 %call17, label %land.lhs.true13.if.then21_crit_edge, label %for.inc @@ -2628,31 +2628,31 @@ land.lhs.true13.if.then21_crit_edge: ; preds = %land.lhs.true13 br label %if.then21 if.end19: ; preds = %land.rhs - %33 = load ptr, ptr %customPerHopHeaders, align 8 - %34 = load i64, ptr %capacity_.i.i23, align 8 - %mul.i.i.i24 = mul i64 %34, 40 - %add.ptr.i.i.i25 = getelementptr inbounds i8, ptr %33, i64 %mul.i.i.i24 - %conv.i = zext i8 %29 to i32 - %call3.i26 = call noundef ptr @memchr(ptr noundef %add.ptr.i.i.i25, i32 noundef %conv.i, i64 noundef %31) #25 + %32 = load ptr, ptr %customPerHopHeaders, align 8 + %33 = load i64, ptr %capacity_.i.i23, align 8 + %mul.i.i.i24 = mul i64 %33, 40 + %add.ptr.i.i.i25 = getelementptr inbounds i8, ptr %32, i64 %mul.i.i.i24 + %conv.i = zext i8 %28 to i32 + %call3.i26 = call noundef ptr @memchr(ptr noundef %add.ptr.i.i.i25, i32 noundef %conv.i, i64 noundef %30) #25 %cmp4.i.not = icmp eq ptr %call3.i26, null br i1 %cmp4.i.not, label %for.inc, label %if.then21 if.then21: ; preds = %land.lhs.true13.if.then21_crit_edge, %if.then, %if.end19 - %35 = phi i64 [ %.pre68, %land.lhs.true13.if.then21_crit_edge ], [ %28, %if.then ], [ %28, %if.end19 ] - %36 = phi ptr [ %.pre67, %land.lhs.true13.if.then21_crit_edge ], [ %27, %if.then ], [ %27, %if.end19 ] - %37 = phi i8 [ %.pre66, %land.lhs.true13.if.then21_crit_edge ], [ %29, %if.then ], [ %29, %if.end19 ] - %mul.i.i32 = shl i64 %35, 5 - %add.ptr.i.i33 = getelementptr inbounds i8, ptr %36, i64 %mul.i.i32 + %34 = phi i64 [ %.pre68, %land.lhs.true13.if.then21_crit_edge ], [ %27, %if.then ], [ %27, %if.end19 ] + %35 = phi ptr [ %.pre67, %land.lhs.true13.if.then21_crit_edge ], [ %26, %if.then ], [ %26, %if.end19 ] + %36 = phi i8 [ %.pre66, %land.lhs.true13.if.then21_crit_edge ], [ %28, %if.then ], [ %28, %if.end19 ] + %mul.i.i32 = shl i64 %34, 5 + %add.ptr.i.i33 = getelementptr inbounds i8, ptr %35, i64 %mul.i.i32 %arrayidx23 = getelementptr inbounds ptr, ptr %add.ptr.i.i33, i64 %i.061 - %38 = load ptr, ptr %arrayidx23, align 8 - %arrayidx25 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %36, i64 %i.061 - call void @_ZN8proxygen11HTTPHeaders17emplace_back_implINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEvNS_14HTTPHeaderCodeEPS7_OT_(ptr noundef nonnull align 8 dereferenceable(32) %strippedHeaders, i8 noundef zeroext %37, ptr noundef %38, ptr noundef nonnull align 8 dereferenceable(32) %arrayidx25) + %37 = load ptr, ptr %arrayidx23, align 8 + %arrayidx25 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %35, i64 %i.061 + call void @_ZN8proxygen11HTTPHeaders17emplace_back_implINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEvNS_14HTTPHeaderCodeEPS7_OT_(ptr noundef nonnull align 8 dereferenceable(32) %strippedHeaders, i8 noundef zeroext %36, ptr noundef %37, ptr noundef nonnull align 8 dereferenceable(32) %arrayidx25) store i8 0, ptr %arrayidx, align 1 - %39 = load i64, ptr %deletedCount_, align 8 - %inc = add i64 %39, 1 + %38 = load i64, ptr %deletedCount_, align 8 + %inc = add i64 %38, 1 store i64 %inc, ptr %deletedCount_, align 8 - %40 = load ptr, ptr @_ZZN8proxygen11HTTPHeaders18stripPerHopHeadersERS0_bPKS0_E8vlocal__, align 8 - %cmp26 = icmp eq ptr %40, null + %39 = load ptr, ptr @_ZZN8proxygen11HTTPHeaders18stripPerHopHeadersERS0_bPKS0_E8vlocal__, align 8 + %cmp26 = icmp eq ptr %39, null br i1 %cmp26, label %cond.true, label %cond.end cond.true: ; preds = %if.then21 @@ -2660,8 +2660,8 @@ cond.true: ; preds = %if.then21 br i1 %call27, label %cond.false32, label %for.inc cond.end: ; preds = %if.then21 - %41 = load i32, ptr %40, align 4 - %cmp28 = icmp sgt i32 %41, 4 + %40 = load i32, ptr %39, align 4 + %cmp28 = icmp sgt i32 %40, 4 br i1 %cmp28, label %cond.false32, label %for.inc cond.false32: ; preds = %cond.true, %cond.end @@ -2674,13 +2674,13 @@ invoke.cont36: ; preds = %cond.false32 to label %invoke.cont38 unwind label %lpad35 invoke.cont38: ; preds = %invoke.cont36 - %42 = load ptr, ptr %this, align 8 - %43 = load i64, ptr %capacity_.i.i, align 8 - %mul.i.i35 = shl i64 %43, 5 - %add.ptr.i.i36 = getelementptr inbounds i8, ptr %42, i64 %mul.i.i35 + %41 = load ptr, ptr %this, align 8 + %42 = load i64, ptr %capacity_.i.i, align 8 + %mul.i.i35 = shl i64 %42, 5 + %add.ptr.i.i36 = getelementptr inbounds i8, ptr %41, i64 %mul.i.i35 %arrayidx42 = getelementptr inbounds ptr, ptr %add.ptr.i.i36, i64 %i.061 - %44 = load ptr, ptr %arrayidx42, align 8 - %call44 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %call39, ptr noundef nonnull align 8 dereferenceable(32) %44) + %43 = load ptr, ptr %arrayidx42, align 8 + %call44 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %call39, ptr noundef nonnull align 8 dereferenceable(32) %43) to label %cleanup.action unwind label %lpad35 cleanup.action: ; preds = %invoke.cont38 @@ -2688,15 +2688,15 @@ cleanup.action: ; preds = %invoke.cont38 br label %for.inc lpad35: ; preds = %invoke.cont38, %invoke.cont36, %cond.false32 - %45 = landingpad { ptr, i32 } + %44 = landingpad { ptr, i32 } cleanup call void @_ZN6google10LogMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(96) %ref.tmp34) #21 br label %common.resume for.inc: ; preds = %land.rhs, %lor.rhs, %cond.true, %land.lhs.true13, %cond.end, %if.else, %if.end19, %cleanup.action %inc51 = add nuw i64 %i.061, 1 - %46 = load i64, ptr %length_, align 8 - %cmp = icmp ult i64 %inc51, %46 + %45 = load i64, ptr %length_, align 8 + %cmp = icmp ult i64 %inc51, %45 br i1 %cmp, label %for.body, label %for.end, !llvm.loop !23 for.end: ; preds = %for.inc, %_ZN8proxygen11HTTPHeaders17perHopHeaderCodesEv.exit diff --git a/bench/raylib/optimized/rmodels.ll b/bench/raylib/optimized/rmodels.ll index 77c76732bf2..95f1d46fc99 100644 --- a/bench/raylib/optimized/rmodels.ll +++ b/bench/raylib/optimized/rmodels.ll @@ -13740,11 +13740,11 @@ define hidden noalias noundef ptr @_m3d_safestr(ptr noundef readonly captures(ad 13: ; preds = %3, %2 %14 = tail call noalias dereferenceable_or_null(1) ptr @malloc(i64 noundef 1) #60 %.not87 = icmp eq ptr %14, null - br i1 %.not87, label %65, label %15 + br i1 %.not87, label %66, label %15 15: ; preds = %13 store i8 0, ptr %14, align 1 - br label %65 + br label %66 .preheader99.split: ; preds = %.preheader99, %16 %.0101 = phi i32 [ %18, %16 ], [ 0, %.preheader99 ] @@ -13766,14 +13766,14 @@ define hidden noalias noundef ptr @_m3d_safestr(ptr noundef readonly captures(ad %21 = tail call noalias ptr @malloc(i64 noundef %20) #60 %22 = ptrtoint ptr %21 to i64 %.not91 = icmp eq ptr %21, null - br i1 %.not91, label %65, label %.preheader + br i1 %.not91, label %66, label %.preheader .preheader: ; preds = %.critedge %.not92.not.not = icmp eq i32 %1, 0 br i1 %.not92.not.not, label %.preheader.split.us, label %.preheader.split .preheader.split.us: ; preds = %.preheader, %.critedge2.us - %23 = phi i8 [ %.pre130, %.critedge2.us ], [ %4, %.preheader ] + %23 = phi i8 [ %.pre129, %.critedge2.us ], [ %4, %.preheader ] %.074.us = phi ptr [ %24, %.critedge2.us ], [ %0, %.preheader ] switch i8 %23, label %.critedge4.preheader [ i8 32, label %.critedge2.us @@ -13783,7 +13783,7 @@ define hidden noalias noundef ptr @_m3d_safestr(ptr noundef readonly captures(ad .critedge2.us: ; preds = %.preheader.split.us, %.preheader.split.us, %.preheader.split.us %24 = getelementptr inbounds nuw i8, ptr %.074.us, i64 1 - %.pre130 = load i8, ptr %24, align 1 + %.pre129 = load i8, ptr %24, align 1 br label %.preheader.split.us .preheader.split: ; preds = %.preheader, %.critedge2 @@ -13803,7 +13803,7 @@ define hidden noalias noundef ptr @_m3d_safestr(ptr noundef readonly captures(ad br i1 %.not93104, label %.critedge6.thread, label %.lr.ph .critedge6.thread: ; preds = %.critedge4.preheader - %.176.lcssa128133 = ptrtoint ptr %21 to i64 + %.176.lcssa128132 = ptrtoint ptr %21 to i64 br label %.critedge10 .lr.ph: ; preds = %.critedge4.preheader @@ -13930,25 +13930,25 @@ define hidden noalias noundef ptr @_m3d_safestr(ptr noundef readonly captures(ad ] .critedge12: ; preds = %.lr.ph119, %.lr.ph119, %.lr.ph119, %.lr.ph119 - %exitcond129.not = icmp eq ptr %61, %21 - br i1 %exitcond129.not, label %.critedge10.loopexit, label %.lr.ph119 + %63 = icmp eq ptr %61, %21 + br i1 %63, label %.critedge10.loopexit, label %.lr.ph119 .critedge10.loopexit: ; preds = %.lr.ph119, %.critedge12 %.4.lcssa.ph = phi ptr [ %scevgep, %.critedge12 ], [ %.4118, %.lr.ph119 ] - %.pre131 = ptrtoint ptr %.4.lcssa.ph to i64 + %.pre130 = ptrtoint ptr %.4.lcssa.ph to i64 br label %.critedge10 .critedge10: ; preds = %.critedge6.thread, %.critedge10.loopexit, %.critedge6 - %.pre-phi = phi i64 [ %.pre131, %.critedge10.loopexit ], [ %.176.lcssa128, %.critedge6 ], [ %.176.lcssa128133, %.critedge6.thread ] + %.pre-phi = phi i64 [ %.pre130, %.critedge10.loopexit ], [ %.176.lcssa128, %.critedge6 ], [ %.176.lcssa128132, %.critedge6.thread ] %.4.lcssa = phi ptr [ %.4.lcssa.ph, %.critedge10.loopexit ], [ %.176.lcssa, %.critedge6 ], [ %21, %.critedge6.thread ] store i8 0, ptr %.4.lcssa, align 1 %reass.sub = sub i64 %.pre-phi, %22 - %63 = add i64 %reass.sub, 1 - %64 = tail call ptr @realloc(ptr noundef nonnull %21, i64 noundef %63) #56 - br label %65 + %64 = add i64 %reass.sub, 1 + %65 = tail call ptr @realloc(ptr noundef nonnull %21, i64 noundef %64) #56 + br label %66 -65: ; preds = %15, %.critedge10, %.critedge, %13 - %.078 = phi ptr [ null, %13 ], [ null, %.critedge ], [ %64, %.critedge10 ], [ %14, %15 ] +66: ; preds = %15, %.critedge10, %.critedge, %13 + %.078 = phi ptr [ null, %13 ], [ null, %.critedge ], [ %65, %.critedge10 ], [ %14, %15 ] ret ptr %.078 } @@ -28780,8 +28780,8 @@ allocate_perm.exit.i: ; preds = %8, %allocate_perm.e %36 = load i16, ptr %35, align 2 store i16 %36, ptr %27, align 2 %indvars.iv.next50.i = add nsw i64 %indvars.iv49.i, -1 - %exitcond52.not.i = icmp eq i64 %indvars.iv49.i, 0 - br i1 %exitcond52.not.i, label %par__simplex_noise.exit, label %18 + %.not52.i = icmp eq i64 %indvars.iv49.i, 0 + br i1 %.not52.i, label %par__simplex_noise.exit, label %18 par__simplex_noise.exit: ; preds = %18, %2, %12 call void @llvm.lifetime.end.p0(i64 512, ptr nonnull %3) #58 @@ -68515,18 +68515,18 @@ _m3dstbi__mad3sizes_valid.exit._crit_edge: ; preds = %39, %_m3dstbi__mul2 br i1 %9, label %121, label %127 121: ; preds = %120 - %.pre995 = sext i32 %.0565832 to i64 - br i1 %.not612, label %._crit_edge994, label %122 + %.pre992 = sext i32 %.0565832 to i64 + br i1 %.not612, label %._crit_edge991, label %122 122: ; preds = %121 - %123 = getelementptr inbounds i8, ptr %71, i64 %.pre995 + %123 = getelementptr inbounds i8, ptr %71, i64 %.pre992 store i8 -1, ptr %123, align 1 %124 = getelementptr i8, ptr %123, i64 1 store i8 -1, ptr %124, align 1 - br label %._crit_edge994 + br label %._crit_edge991 -._crit_edge994: ; preds = %121, %122 - %125 = getelementptr inbounds i8, ptr %72, i64 %.pre995 +._crit_edge991: ; preds = %121, %122 + %125 = getelementptr inbounds i8, ptr %72, i64 %.pre992 %126 = getelementptr inbounds i8, ptr %71, i64 %63 br label %130 @@ -68535,11 +68535,11 @@ _m3dstbi__mad3sizes_valid.exit._crit_edge: ; preds = %39, %_m3dstbi__mul2 %129 = getelementptr inbounds nuw i8, ptr %.0551, i64 1 br label %130 -130: ; preds = %._crit_edge994, %127, %117 - %.sink1026 = phi i64 [ %63, %._crit_edge994 ], [ 1, %127 ], [ %65, %117 ] +130: ; preds = %._crit_edge991, %127, %117 + %.sink1023 = phi i64 [ %63, %._crit_edge994 ], [ 1, %127 ], [ %65, %117 ] %.1552 = phi ptr [ %126, %._crit_edge994 ], [ %129, %127 ], [ %119, %117 ] %.2533 = phi ptr [ %125, %._crit_edge994 ], [ %128, %127 ], [ %118, %117 ] - %131 = getelementptr inbounds i8, ptr %76, i64 %.sink1026 + %131 = getelementptr inbounds i8, ptr %76, i64 %.sink1023 br i1 %or.cond, label %132, label %208 132: ; preds = %130 @@ -69079,13 +69079,13 @@ _m3dstbi__mad3sizes_valid.exit._crit_edge: ; preds = %39, %_m3dstbi__mul2 %.1867 = add i32 %4, -1 %320 = icmp sgt i32 %.1867, -1 %321 = zext i32 %.1867 to i64 - %wide.trip.count992 = zext i32 %5 to i64 + %wide.trip.count989 = zext i32 %5 to i64 br label %322 322: ; preds = %.lr.ph874, %.loopexit - %indvars.iv989 = phi i64 [ 0, %.lr.ph874 ], [ %indvars.iv.next990, %.loopexit ] + %indvars.iv986 = phi i64 [ 0, %.lr.ph874 ], [ %indvars.iv.next987, %.loopexit ] %323 = load ptr, ptr %31, align 8 - %324 = trunc nuw i64 %indvars.iv989 to i32 + %324 = trunc nuw i64 %indvars.iv986 to i32 %325 = mul i32 %13, %324 %326 = zext i32 %325 to i64 %327 = getelementptr inbounds nuw i8, ptr %323, i64 %326 @@ -69356,15 +69356,15 @@ _m3dstbi__mad3sizes_valid.exit._crit_edge: ; preds = %39, %_m3dstbi__mul2 br i1 %320, label %.lr.ph872, label %.loopexit .lr.ph872: ; preds = %.preheader, %.lr.ph872 - %indvars.iv984 = phi i64 [ %indvars.iv.next985, %.lr.ph872 ], [ %321, %.preheader ] - %463 = shl nuw nsw i64 %indvars.iv984, 1 + %indvars.iv983 = phi i64 [ %indvars.iv.next984, %.lr.ph872 ], [ %321, %.preheader ] + %463 = shl nuw nsw i64 %indvars.iv983, 1 %464 = getelementptr inbounds nuw i8, ptr %462, i64 %463 %465 = getelementptr inbounds nuw i8, ptr %464, i64 1 store i8 -1, ptr %465, align 1 - %466 = getelementptr inbounds nuw i8, ptr %462, i64 %indvars.iv984 + %466 = getelementptr inbounds nuw i8, ptr %462, i64 %indvars.iv983 %467 = load i8, ptr %466, align 1 store i8 %467, ptr %464, align 1 - %indvars.iv.next985 = add nsw i64 %indvars.iv984, -1 + %indvars.iv.next984 = add nsw i64 %indvars.iv983, -1 %468 = and i64 %indvars.iv.next985, 4294967295 %exitcond988.not = icmp eq i64 %468, 4294967295 br i1 %exitcond988.not, label %.loopexit, label %.lr.ph872 @@ -69393,9 +69393,9 @@ _m3dstbi__mad3sizes_valid.exit._crit_edge: ; preds = %39, %_m3dstbi__mul2 br i1 %exitcond983.not, label %.loopexit, label %.lr.ph869 .loopexit: ; preds = %.lr.ph869, %.lr.ph872, %.preheader707, %.preheader, %.thread681 - %indvars.iv.next990 = add nuw nsw i64 %indvars.iv989, 1 - %exitcond993.not = icmp eq i64 %indvars.iv.next990, %wide.trip.count992 - br i1 %exitcond993.not, label %.loopexit713, label %322 + %indvars.iv.next987 = add nuw nsw i64 %indvars.iv986, 1 + %exitcond990.not = icmp eq i64 %indvars.iv.next987, %wide.trip.count989 + br i1 %exitcond990.not, label %.loopexit713, label %322 482: ; preds = %._crit_edge837 br i1 %9, label %483, label %.loopexit713 diff --git a/bench/re2/optimized/compile.ll b/bench/re2/optimized/compile.ll index 750fdf411de..03280699714 100644 --- a/bench/re2/optimized/compile.ll +++ b/bench/re2/optimized/compile.ll @@ -3048,29 +3048,29 @@ for.body59.lr.ph: ; preds = %for.cond57.preheade br label %for.body59 for.body59: ; preds = %for.body59.lr.ph, %for.inc81 - %indvars.iv118 = phi i64 [ 0, %for.body59.lr.ph ], [ %indvars.iv.next119, %for.inc81 ] + %indvars.iv117 = phi i64 [ 0, %for.body59.lr.ph ], [ %indvars.iv.next118, %for.inc81 ] %id.0102 = phi i32 [ 0, %for.body59.lr.ph ], [ %id.1, %for.inc81 ] - %cmp60 = icmp eq i64 %indvars.iv118, 0 + %cmp60 = icmp eq i64 %indvars.iv117, 0 br i1 %cmp60, label %for.body59.if.then69_crit_edge, label %lor.lhs.false for.body59.if.then69_crit_edge: ; preds = %for.body59 - %.pre123 = load i8, ptr %ulo, align 1 - %.pre124 = load i8, ptr %uhi, align 1 + %.pre122 = load i8, ptr %ulo, align 1 + %.pre123 = load i8, ptr %uhi, align 1 br label %if.then69 lor.lhs.false: ; preds = %for.body59 - %arrayidx = getelementptr inbounds nuw [4 x i8], ptr %ulo, i64 0, i64 %indvars.iv118 + %arrayidx = getelementptr inbounds nuw [4 x i8], ptr %ulo, i64 0, i64 %indvars.iv117 %11 = load i8, ptr %arrayidx, align 1 - %arrayidx63 = getelementptr inbounds nuw [4 x i8], ptr %uhi, i64 0, i64 %indvars.iv118 + %arrayidx63 = getelementptr inbounds nuw [4 x i8], ptr %uhi, i64 0, i64 %indvars.iv117 %12 = load i8, ptr %arrayidx63, align 1 %cmp65 = icmp ne i8 %11, %12 - %cmp68.not = icmp eq i64 %indvars.iv118, %10 + %cmp68.not = icmp eq i64 %indvars.iv117, %10 %or.cond51 = select i1 %cmp65, i1 true, i1 %cmp68.not br i1 %or.cond51, label %if.else, label %if.then69 if.then69: ; preds = %for.body59.if.then69_crit_edge, %lor.lhs.false - %13 = phi i8 [ %.pre124, %for.body59.if.then69_crit_edge ], [ %11, %lor.lhs.false ] - %14 = phi i8 [ %.pre123, %for.body59.if.then69_crit_edge ], [ %11, %lor.lhs.false ] + %13 = phi i8 [ %.pre123, %for.body59.if.then69_crit_edge ], [ %11, %lor.lhs.false ] + %14 = phi i8 [ %.pre122, %for.body59.if.then69_crit_edge ], [ %11, %lor.lhs.false ] %call74 = call noundef i32 @_ZN3re28Compiler20CachedRuneByteSuffixEhhbi(ptr noundef nonnull align 8 dereferenceable(212) %this, i8 noundef zeroext %14, i8 noundef zeroext %13, i1 noundef zeroext false, i32 noundef %id.0102) br label %for.inc81 @@ -3080,9 +3080,9 @@ if.else: ; preds = %lor.lhs.false for.inc81: ; preds = %if.then69, %if.else %id.1 = phi i32 [ %call74, %if.then69 ], [ %call79, %if.else ] - %indvars.iv.next119 = add nuw nsw i64 %indvars.iv118, 1 - %exitcond121.not = icmp eq i64 %indvars.iv.next119, %wide.trip.count - br i1 %exitcond121.not, label %if.end117, label %for.body59, !llvm.loop !18 + %indvars.iv.next118 = add nuw nsw i64 %indvars.iv117, 1 + %exitcond120.not = icmp eq i64 %indvars.iv.next118, %wide.trip.count + br i1 %exitcond120.not, label %if.end117, label %for.body59, !llvm.loop !18 if.else84: ; preds = %for.end49 br i1 %cmp58101, label %for.body89.preheader, label %if.end117 @@ -3102,7 +3102,7 @@ for.body89: ; preds = %for.body89.preheade for.body89.if.then102_crit_edge: ; preds = %for.body89 %.pre = load i8, ptr %arrayidx104.phi.trans.insert, align 1 - %.pre122 = load i8, ptr %arrayidx106.phi.trans.insert, align 1 + %.pre121 = load i8, ptr %arrayidx106.phi.trans.insert, align 1 br label %if.then102 lor.lhs.false92: ; preds = %for.body89 @@ -3116,7 +3116,7 @@ lor.lhs.false92: ; preds = %for.body89 br i1 %or.cond1, label %if.then102, label %if.else108 if.then102: ; preds = %for.body89.if.then102_crit_edge, %lor.lhs.false92 - %18 = phi i8 [ %.pre122, %for.body89.if.then102_crit_edge ], [ %17, %lor.lhs.false92 ] + %18 = phi i8 [ %.pre121, %for.body89.if.then102_crit_edge ], [ %17, %lor.lhs.false92 ] %19 = phi i8 [ %.pre, %for.body89.if.then102_crit_edge ], [ %16, %lor.lhs.false92 ] %call107 = call noundef i32 @_ZN3re28Compiler20CachedRuneByteSuffixEhhbi(ptr noundef nonnull align 8 dereferenceable(212) %this, i8 noundef zeroext %19, i8 noundef zeroext %18, i1 noundef zeroext false, i32 noundef %id.397) br label %for.inc115 @@ -3135,24 +3135,24 @@ for.inc115: ; preds = %if.then102, %if.els if.end117: ; preds = %for.inc115, %for.inc81, %if.else84, %for.cond57.preheader %id.2 = phi i32 [ 0, %for.cond57.preheader ], [ 0, %if.else84 ], [ %id.1, %for.inc81 ], [ %id.4, %for.inc115 ] %failed_.i53 = getelementptr inbounds nuw i8, ptr %this, i64 104 - %21 = load i8, ptr %failed_.i53, align 8 - %tobool.i54 = trunc i8 %21 to i1 + %20 = load i8, ptr %failed_.i53, align 8 + %tobool.i54 = trunc i8 %20 to i1 br i1 %tobool.i54, label %return, label %if.end.i55 if.end.i55: ; preds = %if.end117 %rune_range_.i56 = getelementptr inbounds nuw i8, ptr %this, i64 192 - %22 = load i32, ptr %rune_range_.i56, align 8 - %cmp.i57 = icmp eq i32 %22, 0 + %21 = load i32, ptr %rune_range_.i56, align 8 + %cmp.i57 = icmp eq i32 %21, 0 br i1 %cmp.i57, label %return.sink.split.i68, label %if.end5.i58 if.end5.i58: ; preds = %if.end.i55 %encoding_.i59 = getelementptr inbounds nuw i8, ptr %this, i64 108 - %23 = load i32, ptr %encoding_.i59, align 4 - %cmp6.i60 = icmp eq i32 %23, 1 + %22 = load i32, ptr %encoding_.i59, align 4 + %cmp6.i60 = icmp eq i32 %22, 1 br i1 %cmp6.i60, label %if.then7.i70, label %if.end12.i61 if.then7.i70: ; preds = %if.end5.i58 - %call.i71 = call noundef i32 @_ZN3re28Compiler18AddSuffixRecursiveEii(ptr noundef nonnull align 8 dereferenceable(212) %this, i32 noundef %22, i32 noundef %id.2) + %call.i71 = call noundef i32 @_ZN3re28Compiler18AddSuffixRecursiveEii(ptr noundef nonnull align 8 dereferenceable(212) %this, i32 noundef %21, i32 noundef %id.2) br label %return.sink.split.i68 if.end12.i61: ; preds = %if.end5.i58 @@ -3163,10 +3163,10 @@ if.end12.i61: ; preds = %if.end5.i58 if.end18.i64: ; preds = %if.end12.i61 %conv.i.i65 = zext nneg i32 %call13.i62 to i64 %add.ptr.i.i.i.i.i.i.i.i66 = getelementptr inbounds nuw i8, ptr %this, i64 128 - %24 = load ptr, ptr %add.ptr.i.i.i.i.i.i.i.i66, align 8 - %arrayidx.i.i.i67 = getelementptr inbounds nuw %"class.re2::Prog::Inst", ptr %24, i64 %conv.i.i65 - %25 = load i32, ptr %rune_range_.i56, align 8 - call void @_ZN3re24Prog4Inst7InitAltEjj(ptr noundef nonnull align 4 dereferenceable(8) %arrayidx.i.i.i67, i32 noundef %25, i32 noundef %id.2) + %23 = load ptr, ptr %add.ptr.i.i.i.i.i.i.i.i66, align 8 + %arrayidx.i.i.i67 = getelementptr inbounds nuw %"class.re2::Prog::Inst", ptr %23, i64 %conv.i.i65 + %24 = load i32, ptr %rune_range_.i56, align 8 + call void @_ZN3re24Prog4Inst7InitAltEjj(ptr noundef nonnull align 4 dereferenceable(8) %arrayidx.i.i.i67, i32 noundef %24, i32 noundef %id.2) br label %return.sink.split.i68 return.sink.split.i68: ; preds = %if.end18.i64, %if.end12.i61, %if.then7.i70, %if.end.i55 diff --git a/bench/re2/optimized/simplify.ll b/bench/re2/optimized/simplify.ll index 79e8a753f68..931a70483e4 100644 --- a/bench/re2/optimized/simplify.ll +++ b/bench/re2/optimized/simplify.ll @@ -1956,41 +1956,41 @@ for.body.i.i.i.i.preheader: ; preds = %land.lhs.true for.body.i.i.i.i: ; preds = %for.body.i.i.i.i.preheader, %if.end11.i.i.i.i %__trip_count.056.i.i.i.i = phi i64 [ %dec.i.i.i.i, %if.end11.i.i.i.i ], [ %shr.i.i.i.i, %for.body.i.i.i.i.preheader ] %__first.addr.055.i.i.i.i = phi ptr [ %incdec.ptr12.i.i.i.i, %if.end11.i.i.i.i ], [ %retval.0.i, %for.body.i.i.i.i.preheader ] - %7 = load ptr, ptr %__first.addr.055.i.i.i.i, align 8 - %8 = load i8, ptr %7, align 8 - %9 = add i8 %8, -14 - %switch.i93 = icmp ult i8 %9, 6 + %6 = load ptr, ptr %__first.addr.055.i.i.i.i, align 8 + %7 = load i8, ptr %6, align 8 + %8 = add i8 %7, -14 + %switch.i93 = icmp ult i8 %8, 6 br i1 %switch.i93, label %if.end.i.i.i.i, label %_ZSt6all_ofIPPN3re26RegexpEPFbS2_EEbT_S6_T0_.exit if.end.i.i.i.i: ; preds = %for.body.i.i.i.i %incdec.ptr.i.i.i.i = getelementptr inbounds nuw i8, ptr %__first.addr.055.i.i.i.i, i64 8 - %10 = load ptr, ptr %incdec.ptr.i.i.i.i, align 8 - %11 = load i8, ptr %10, align 8 - %12 = add i8 %11, -14 - %switch.i92 = icmp ult i8 %12, 6 + %9 = load ptr, ptr %incdec.ptr.i.i.i.i, align 8 + %10 = load i8, ptr %9, align 8 + %11 = add i8 %10, -14 + %switch.i92 = icmp ult i8 %11, 6 br i1 %switch.i92, label %if.end3.i.i.i.i, label %_ZSt6all_ofIPPN3re26RegexpEPFbS2_EEbT_S6_T0_.exit.loopexit.split.loop.exit if.end3.i.i.i.i: ; preds = %if.end.i.i.i.i %incdec.ptr4.i.i.i.i = getelementptr inbounds nuw i8, ptr %__first.addr.055.i.i.i.i, i64 16 - %13 = load ptr, ptr %incdec.ptr4.i.i.i.i, align 8 - %14 = load i8, ptr %13, align 8 - %15 = add i8 %14, -14 - %switch.i91 = icmp ult i8 %15, 6 + %12 = load ptr, ptr %incdec.ptr4.i.i.i.i, align 8 + %13 = load i8, ptr %12, align 8 + %14 = add i8 %13, -14 + %switch.i91 = icmp ult i8 %14, 6 br i1 %switch.i91, label %if.end7.i.i.i.i, label %_ZSt6all_ofIPPN3re26RegexpEPFbS2_EEbT_S6_T0_.exit.loopexit.split.loop.exit164 if.end7.i.i.i.i: ; preds = %if.end3.i.i.i.i %incdec.ptr8.i.i.i.i = getelementptr inbounds nuw i8, ptr %__first.addr.055.i.i.i.i, i64 24 - %16 = load ptr, ptr %incdec.ptr8.i.i.i.i, align 8 - %17 = load i8, ptr %16, align 8 - %18 = add i8 %17, -14 - %switch.i90 = icmp ult i8 %18, 6 + %15 = load ptr, ptr %incdec.ptr8.i.i.i.i, align 8 + %16 = load i8, ptr %15, align 8 + %17 = add i8 %16, -14 + %switch.i90 = icmp ult i8 %17, 6 br i1 %switch.i90, label %if.end11.i.i.i.i, label %_ZSt6all_ofIPPN3re26RegexpEPFbS2_EEbT_S6_T0_.exit.loopexit.split.loop.exit166 if.end11.i.i.i.i: ; preds = %if.end7.i.i.i.i %incdec.ptr12.i.i.i.i = getelementptr inbounds nuw i8, ptr %__first.addr.055.i.i.i.i, i64 32 %dec.i.i.i.i = add nsw i64 %__trip_count.056.i.i.i.i, -1 - %exitcond.not.i.i.i.i = icmp eq i64 %dec.i.i.i.i, 0 - br i1 %exitcond.not.i.i.i.i, label %for.end.loopexit.i.i.i.i, label %for.body.i.i.i.i, !llvm.loop !17 + %cmp.i.i.i.i = icmp eq i64 %dec.i.i.i.i, 0 + br i1 %cmp.i.i.i.i, label %for.end.loopexit.i.i.i.i, label %for.body.i.i.i.i, !llvm.loop !17 for.end.loopexit.i.i.i.i: ; preds = %if.end11.i.i.i.i %gepdiff = sub nsw i64 %add.ptr.idx, %6 @@ -2007,10 +2007,10 @@ for.end.i.i.i.i: ; preds = %for.end.loopexit.i. ] sw.bb.i.i.i.i: ; preds = %for.end.i.i.i.i - %20 = load ptr, ptr %__first.addr.0.lcssa.i.i.i.i, align 8 - %21 = load i8, ptr %20, align 8 - %22 = add i8 %21, -14 - %switch.i89 = icmp ult i8 %22, 6 + %19 = load ptr, ptr %__first.addr.0.lcssa.i.i.i.i, align 8 + %20 = load i8, ptr %19, align 8 + %21 = add i8 %20, -14 + %switch.i89 = icmp ult i8 %21, 6 br i1 %switch.i89, label %if.end19.i.i.i.i, label %_ZSt6all_ofIPPN3re26RegexpEPFbS2_EEbT_S6_T0_.exit if.end19.i.i.i.i: ; preds = %sw.bb.i.i.i.i @@ -2019,10 +2019,10 @@ if.end19.i.i.i.i: ; preds = %sw.bb.i.i.i.i sw.bb21.i.i.i.i: ; preds = %if.end19.i.i.i.i, %for.end.i.i.i.i %__first.addr.1.i.i.i.i = phi ptr [ %incdec.ptr20.i.i.i.i, %if.end19.i.i.i.i ], [ %__first.addr.0.lcssa.i.i.i.i, %for.end.i.i.i.i ] - %23 = load ptr, ptr %__first.addr.1.i.i.i.i, align 8 - %24 = load i8, ptr %23, align 8 - %25 = add i8 %24, -14 - %switch.i88 = icmp ult i8 %25, 6 + %22 = load ptr, ptr %__first.addr.1.i.i.i.i, align 8 + %23 = load i8, ptr %22, align 8 + %24 = add i8 %23, -14 + %switch.i88 = icmp ult i8 %24, 6 br i1 %switch.i88, label %if.end24.i.i.i.i, label %_ZSt6all_ofIPPN3re26RegexpEPFbS2_EEbT_S6_T0_.exit if.end24.i.i.i.i: ; preds = %sw.bb21.i.i.i.i @@ -2031,10 +2031,10 @@ if.end24.i.i.i.i: ; preds = %sw.bb21.i.i.i.i sw.bb26.i.i.i.i: ; preds = %if.end24.i.i.i.i, %for.end.i.i.i.i %__first.addr.2.i.i.i.i = phi ptr [ %incdec.ptr25.i.i.i.i, %if.end24.i.i.i.i ], [ %__first.addr.0.lcssa.i.i.i.i, %for.end.i.i.i.i ] - %26 = load ptr, ptr %__first.addr.2.i.i.i.i, align 8 - %27 = load i8, ptr %26, align 8 - %28 = add i8 %27, -14 - %switch.i87 = icmp ult i8 %28, 6 + %25 = load ptr, ptr %__first.addr.2.i.i.i.i, align 8 + %26 = load i8, ptr %25, align 8 + %27 = add i8 %26, -14 + %switch.i87 = icmp ult i8 %27, 6 br i1 %switch.i87, label %if.then, label %_ZSt6all_ofIPPN3re26RegexpEPFbS2_EEbT_S6_T0_.exit _ZSt6all_ofIPPN3re26RegexpEPFbS2_EEbT_S6_T0_.exit.loopexit.split.loop.exit: ; preds = %if.end.i.i.i.i @@ -2145,8 +2145,8 @@ _ZN3re28PODArrayIPNS_6RegexpEED2Ev.exit60: ; preds = %invoke.cont33 if.end39: ; preds = %if.then, %if.end %min.addr.0127 = phi i32 [ %min.addr.0, %if.end ], [ %.sroa.speculated103, %if.then ] %max.addr.0126 = phi i32 [ %max, %if.end ], [ 1, %if.then ] - %29 = or i32 %max.addr.0126, %min.addr.0127 - %or.cond = icmp eq i32 %29, 0 + %28 = or i32 %max.addr.0126, %min.addr.0127 + %or.cond = icmp eq i32 %28, 0 br i1 %or.cond, label %if.then43, label %if.end47 if.then43: ; preds = %if.end39 @@ -2155,7 +2155,7 @@ if.then43: ; preds = %if.end39 to label %return unwind label %lpad45 lpad45: ; preds = %if.then43 - %30 = landingpad { ptr, i32 } + %29 = landingpad { ptr, i32 } cleanup tail call void @_ZdlPv(ptr noundef nonnull %call44) #16 br label %common.resume @@ -2236,19 +2236,19 @@ for.body81: ; preds = %if.then75, %_ZN3re2 to label %_ZN3re214SimplifyWalker7Concat2EPNS_6RegexpES2_NS1_10ParseFlagsE.exit unwind label %lpad.i common.resume: ; preds = %_ZN3re28PODArrayIPNS_6RegexpEED2Ev.exit, %lpad45, %_ZN3re28PODArrayIPNS_6RegexpEED2Ev.exit73, %ehcleanup, %lpad115, %lpad.i85, %lpad.i80, %lpad.i - %common.resume.op = phi { ptr, i32 } [ %31, %lpad.i ], [ %33, %lpad.i80 ], [ %35, %lpad.i85 ], [ %lpad.phi132, %_ZN3re28PODArrayIPNS_6RegexpEED2Ev.exit ], [ %30, %lpad45 ], [ %lpad.phi, %_ZN3re28PODArrayIPNS_6RegexpEED2Ev.exit73 ], [ %38, %lpad115 ], [ %.pn, %ehcleanup ] + %common.resume.op = phi { ptr, i32 } [ %30, %lpad.i ], [ %32, %lpad.i80 ], [ %34, %lpad.i85 ], [ %lpad.phi132, %_ZN3re28PODArrayIPNS_6RegexpEED2Ev.exit ], [ %29, %lpad45 ], [ %lpad.phi, %_ZN3re28PODArrayIPNS_6RegexpEED2Ev.exit73 ], [ %37, %lpad115 ], [ %.pn, %ehcleanup ] resume { ptr, i32 } %common.resume.op lpad.i: ; preds = %for.body81 - %31 = landingpad { ptr, i32 } + %30 = landingpad { ptr, i32 } cleanup tail call void @_ZdlPv(ptr noundef nonnull %call.i) #16 br label %common.resume _ZN3re214SimplifyWalker7Concat2EPNS_6RegexpES2_NS1_10ParseFlagsE.exit: ; preds = %for.body81 %call.i.i = tail call noalias noundef nonnull dereferenceable(16) ptr @_Znam(i64 noundef 16) #19 - %32 = getelementptr inbounds nuw i8, ptr %call.i, i64 8 - store ptr %call.i.i, ptr %32, align 8 + %31 = getelementptr inbounds nuw i8, ptr %call.i, i64 8 + store ptr %call.i.i, ptr %31, align 8 %nsub_.i.i = getelementptr inbounds nuw i8, ptr %call.i, i64 6 store i16 2, ptr %nsub_.i.i, align 2 store ptr %call82, ptr %call.i.i, align 8 @@ -2270,15 +2270,15 @@ if.else: ; preds = %for.end87 to label %if.end92.thread unwind label %lpad.i80 lpad.i80: ; preds = %if.else - %33 = landingpad { ptr, i32 } + %32 = landingpad { ptr, i32 } cleanup tail call void @_ZdlPv(ptr noundef nonnull %call.i79) #16 br label %common.resume if.end92.thread: ; preds = %if.else %call.i.i81 = tail call noalias noundef nonnull dereferenceable(16) ptr @_Znam(i64 noundef 16) #19 - %34 = getelementptr inbounds nuw i8, ptr %call.i79, i64 8 - store ptr %call.i.i81, ptr %34, align 8 + %33 = getelementptr inbounds nuw i8, ptr %call.i79, i64 8 + store ptr %call.i.i81, ptr %33, align 8 %nsub_.i.i82 = getelementptr inbounds nuw i8, ptr %call.i79, i64 6 store i16 2, ptr %nsub_.i.i82, align 2 store ptr %nre.0, ptr %call.i.i81, align 8 @@ -2311,7 +2311,7 @@ invoke.cont6.i: ; preds = %invoke.cont4.i to label %_ZN10LogMessageC2EPKci.exit unwind label %lpad.i85 lpad.i85: ; preds = %invoke.cont6.i, %invoke.cont4.i, %invoke.cont2.i, %if.then94 - %35 = landingpad { ptr, i32 } + %34 = landingpad { ptr, i32 } cleanup call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %str_.i) #15 br label %common.resume @@ -2352,23 +2352,23 @@ invoke.cont112: ; preds = %invoke.cont110 to label %return unwind label %lpad115 lpad96: ; preds = %invoke.cont99, %_ZN10LogMessageC2EPKci.exit - %36 = landingpad { ptr, i32 } + %35 = landingpad { ptr, i32 } cleanup br label %ehcleanup lpad103: ; preds = %invoke.cont110, %invoke.cont108, %invoke.cont106, %invoke.cont104, %invoke.cont102 - %37 = landingpad { ptr, i32 } + %36 = landingpad { ptr, i32 } cleanup call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp101) #15 br label %ehcleanup ehcleanup: ; preds = %lpad103, %lpad96 - %.pn = phi { ptr, i32 } [ %37, %lpad103 ], [ %36, %lpad96 ] + %.pn = phi { ptr, i32 } [ %36, %lpad103 ], [ %35, %lpad96 ] call void @_ZN10LogMessageD2Ev(ptr noundef nonnull align 8 dereferenceable(384) %ref.tmp95) #15 br label %common.resume lpad115: ; preds = %invoke.cont112 - %38 = landingpad { ptr, i32 } + %37 = landingpad { ptr, i32 } cleanup call void @_ZdlPv(ptr noundef nonnull %call114) #16 br label %common.resume diff --git a/bench/recastnavigation/optimized/DetourTileCache.ll b/bench/recastnavigation/optimized/DetourTileCache.ll index 37f5c34ae41..a29ab1e9dba 100644 --- a/bench/recastnavigation/optimized/DetourTileCache.ll +++ b/bench/recastnavigation/optimized/DetourTileCache.ll @@ -323,11 +323,11 @@ define noundef range(i32 1073741824, -2147483639) i32 @_ZN11dtTileCache4initEPK1 .lr.ph24.preheader: ; preds = %60 %72 = zext nneg i32 %70 to i64 - %.pre32 = load ptr, ptr %53, align 8 + %.pre30 = load ptr, ptr %53, align 8 br label %.lr.ph24 .lr.ph24: ; preds = %.lr.ph24.preheader, %.lr.ph24 - %73 = phi ptr [ %.pre32, %.lr.ph24.preheader ], [ %78, %.lr.ph24 ] + %73 = phi ptr [ %.pre30, %.lr.ph24.preheader ], [ %78, %.lr.ph24 ] %indvars.iv27 = phi i64 [ %72, %.lr.ph24.preheader ], [ %indvars.iv.next28, %.lr.ph24 ] %indvars.iv.next28 = add nsw i64 %indvars.iv27, -1 %74 = getelementptr inbounds nuw %struct.dtCompressedTile, ptr %73, i64 %indvars.iv.next28 @@ -344,11 +344,11 @@ define noundef range(i32 1073741824, -2147483639) i32 @_ZN11dtTileCache4initEPK1 br i1 %exitcond31.not, label %._crit_edge25.loopexit, label %.lr.ph24, !llvm.loop !7 ._crit_edge25.loopexit: ; preds = %.lr.ph24 - %.pre33 = load i32, ptr %33, align 4 + %.pre31 = load i32, ptr %33, align 4 br label %._crit_edge25 ._crit_edge25: ; preds = %._crit_edge25.loopexit, %60 - %81 = phi i32 [ %.pre33, %._crit_edge25.loopexit ], [ %70, %60 ] + %81 = phi i32 [ %.pre31, %._crit_edge25.loopexit ], [ %70, %60 ] %82 = add i32 %81, -1 %83 = lshr i32 %82, 1 %84 = or i32 %83, %82 diff --git a/bench/redis/optimized/linenoise.ll b/bench/redis/optimized/linenoise.ll index 21bc061fb38..f40d3e129c1 100644 --- a/bench/redis/optimized/linenoise.ll +++ b/bench/redis/optimized/linenoise.ll @@ -2995,7 +2995,7 @@ define dso_local void @searchInHistory(ptr dead_on_unwind noalias writable write 5: ; preds = %4 %.b9 = load i1, ptr @cycle_to_next_search, align 4 - %.pre80 = add nsw i32 %3, -1 + %.pre77 = add nsw i32 %3, -1 br i1 %.b9, label %.split.us, label %.split .split.us: ; preds = %5 @@ -3025,17 +3025,17 @@ define dso_local void @searchInHistory(ptr dead_on_unwind noalias writable write br label %.lr.ph42.split .lr.ph42.split.us.preheader: ; preds = %.lr.ph42 - %sext78 = sext i32 %.pre80 to i64 + %sext75 = sext i32 %.pre77 to i64 br label %.lr.ph42.split.us .lr.ph42.split.us: ; preds = %.lr.ph42.split.us.preheader, %20 - %indvars.iv76 = phi i64 [ %11, %.lr.ph42.split.us.preheader ], [ %indvars.iv.next77, %20 ] - %19 = icmp eq i64 %indvars.iv76, %sext78 + %indvars.iv73 = phi i64 [ %11, %.lr.ph42.split.us.preheader ], [ %indvars.iv.next74, %20 ] + %19 = icmp eq i64 %indvars.iv73, %sext75 br i1 %19, label %.loopexit, label %20 20: ; preds = %.lr.ph42.split.us - %indvars.iv.next77 = add nsw i64 %indvars.iv76, 1 - %21 = getelementptr inbounds ptr, ptr %7, i64 %indvars.iv.next77 + %indvars.iv.next74 = add nsw i64 %indvars.iv73, 1 + %21 = getelementptr inbounds ptr, ptr %7, i64 %indvars.iv.next74 %22 = load ptr, ptr %21, align 8, !tbaa !15 %23 = tail call ptr @strstr(ptr noundef nonnull dereferenceable(1) %22, ptr noundef nonnull dereferenceable(1) %1) #25 %24 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %22, ptr noundef nonnull dereferenceable(1) %10) #25 @@ -3044,37 +3044,37 @@ define dso_local void @searchInHistory(ptr dead_on_unwind noalias writable write %or.cond.us.us = select i1 %26, i1 true, i1 %25 br i1 %or.cond.us.us, label %.lr.ph42.split.us, label %.split30.us.loopexit -.lr.ph42.split: ; preds = %.lr.ph42.split.preheader, %27 +.lr.ph42.split: ; preds = %.lr.ph42.split.preheader, %28 %indvars.iv70 = phi i64 [ %11, %.lr.ph42.split.preheader ], [ %indvars.iv.next71, %27 ] - %exitcond75 = icmp eq i64 %indvars.iv70, %wide.trip.count74 - br i1 %exitcond75, label %.loopexit, label %27 + %27 = icmp eq i64 %indvars.iv70, %wide.trip.count74 + br i1 %27, label %.loopexit, label %28 -27: ; preds = %.lr.ph42.split +28: ; preds = %.lr.ph42.split %indvars.iv.next71 = add nsw i64 %indvars.iv70, -1 - %28 = getelementptr inbounds ptr, ptr %7, i64 %indvars.iv.next71 - %29 = load ptr, ptr %28, align 8, !tbaa !15 - %30 = tail call ptr @strstr(ptr noundef nonnull dereferenceable(1) %29, ptr noundef nonnull dereferenceable(1) %1) #25 - %31 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %29, ptr noundef nonnull dereferenceable(1) %10) #25 - %32 = icmp eq i32 %31, 0 - %33 = icmp eq ptr %30, null - %or.cond.us = select i1 %33, i1 true, i1 %32 + %29 = getelementptr inbounds ptr, ptr %7, i64 %indvars.iv.next71 + %30 = load ptr, ptr %29, align 8, !tbaa !15 + %31 = tail call ptr @strstr(ptr noundef nonnull dereferenceable(1) %30, ptr noundef nonnull dereferenceable(1) %1) #25 + %32 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %30, ptr noundef nonnull dereferenceable(1) %10) #25 + %33 = icmp eq i32 %32, 0 + %34 = icmp eq ptr %31, null + %or.cond.us = select i1 %34, i1 true, i1 %33 br i1 %or.cond.us, label %.lr.ph42.split, label %.split30.us.loopexit50 .split: ; preds = %5 - %34 = load i32, ptr @reverse_search_direction, align 4, !tbaa !4 - %35 = icmp eq i32 %34, -1 - %36 = select i1 %35, i32 %.pre80, i32 0 - %37 = load ptr, ptr @history, align 8, !tbaa !40 - %38 = sext i32 %36 to i64 - %39 = getelementptr inbounds ptr, ptr %37, i64 %38 - %40 = load ptr, ptr %39, align 8, !tbaa !15 - %41 = tail call ptr @strstr(ptr noundef nonnull dereferenceable(1) %40, ptr noundef nonnull dereferenceable(1) %1) #25 - %42 = icmp eq ptr %41, null - br i1 %42, label %.lr.ph, label %.split30.us + %35 = load i32, ptr @reverse_search_direction, align 4, !tbaa !4 + %36 = icmp eq i32 %35, -1 + %37 = select i1 %36, i32 %.pre77, i32 0 + %38 = load ptr, ptr @history, align 8, !tbaa !40 + %39 = sext i32 %37 to i64 + %40 = getelementptr inbounds ptr, ptr %38, i64 %39 + %41 = load ptr, ptr %40, align 8, !tbaa !15 + %42 = tail call ptr @strstr(ptr noundef nonnull dereferenceable(1) %41, ptr noundef nonnull dereferenceable(1) %1) #25 + %43 = icmp eq ptr %42, null + br i1 %43, label %.lr.ph, label %.split30.us .lr.ph: ; preds = %.split - %43 = icmp eq i32 %34, 1 - br i1 %43, label %.lr.ph.split.us.preheader, label %.lr.ph.split.preheader + %44 = icmp eq i32 %35, 1 + br i1 %44, label %.lr.ph.split.us.preheader, label %.lr.ph.split.preheader .lr.ph.split.preheader: ; preds = %.lr.ph %smin = tail call i32 @llvm.smin.i32(i32 %36, i32 0) @@ -3082,72 +3082,72 @@ define dso_local void @searchInHistory(ptr dead_on_unwind noalias writable write br label %.lr.ph.split .lr.ph.split.us.preheader: ; preds = %.lr.ph - %sext = sext i32 %.pre80 to i64 + %sext = sext i32 %.pre77 to i64 br label %.lr.ph.split.us -.lr.ph.split.us: ; preds = %.lr.ph.split.us.preheader, %45 - %indvars.iv67 = phi i64 [ %38, %.lr.ph.split.us.preheader ], [ %indvars.iv.next68, %45 ] - %44 = icmp eq i64 %indvars.iv67, %sext - br i1 %44, label %.loopexit, label %45 +.lr.ph.split.us: ; preds = %.lr.ph.split.us.preheader, %46 + %indvars.iv67 = phi i64 [ %39, %.lr.ph.split.us.preheader ], [ %indvars.iv.next68, %45 ] + %45 = icmp eq i64 %indvars.iv67, %sext + br i1 %45, label %.loopexit, label %46 -45: ; preds = %.lr.ph.split.us +46: ; preds = %.lr.ph.split.us %indvars.iv.next68 = add nsw i64 %indvars.iv67, 1 - %46 = getelementptr inbounds ptr, ptr %37, i64 %indvars.iv.next68 - %47 = load ptr, ptr %46, align 8, !tbaa !15 - %48 = tail call ptr @strstr(ptr noundef nonnull dereferenceable(1) %47, ptr noundef nonnull dereferenceable(1) %1) #25 - %49 = icmp eq ptr %48, null - br i1 %49, label %.lr.ph.split.us, label %.split30.us.loopexit52 + %47 = getelementptr inbounds ptr, ptr %38, i64 %indvars.iv.next68 + %48 = load ptr, ptr %47, align 8, !tbaa !15 + %49 = tail call ptr @strstr(ptr noundef nonnull dereferenceable(1) %48, ptr noundef nonnull dereferenceable(1) %1) #25 + %50 = icmp eq ptr %49, null + br i1 %50, label %.lr.ph.split.us, label %.split30.us.loopexit52 .split30.us.loopexit: ; preds = %20 - %50 = trunc nsw i64 %indvars.iv.next77 to i32 + %51 = trunc nsw i64 %indvars.iv.next74 to i32 br label %.split30.us -.split30.us.loopexit50: ; preds = %27 - %51 = trunc nsw i64 %indvars.iv.next71 to i32 +.split30.us.loopexit50: ; preds = %28 + %52 = trunc nsw i64 %indvars.iv.next71 to i32 br label %.split30.us -.split30.us.loopexit52: ; preds = %45 - %52 = trunc nsw i64 %indvars.iv.next68 to i32 +.split30.us.loopexit52: ; preds = %46 + %53 = trunc nsw i64 %indvars.iv.next68 to i32 br label %.split30.us -.split30.us.loopexit54: ; preds = %65 - %53 = trunc nsw i64 %indvars.iv.next to i32 +.split30.us.loopexit54: ; preds = %67 + %54 = trunc nsw i64 %indvars.iv.next to i32 br label %.split30.us .split30.us: ; preds = %.split30.us.loopexit54, %.split30.us.loopexit52, %.split30.us.loopexit50, %.split30.us.loopexit, %.split, %.split.us - %.us-phi = phi i32 [ %6, %.split.us ], [ %36, %.split ], [ %50, %.split30.us.loopexit ], [ %51, %.split30.us.loopexit50 ], [ %52, %.split30.us.loopexit52 ], [ %53, %.split30.us.loopexit54 ] - %.us-phi31 = phi ptr [ %13, %.split.us ], [ %40, %.split ], [ %22, %.split30.us.loopexit ], [ %29, %.split30.us.loopexit50 ], [ %47, %.split30.us.loopexit52 ], [ %67, %.split30.us.loopexit54 ] - %.us-phi32 = phi ptr [ %14, %.split.us ], [ %41, %.split ], [ %23, %.split30.us.loopexit ], [ %30, %.split30.us.loopexit50 ], [ %48, %.split30.us.loopexit52 ], [ %68, %.split30.us.loopexit54 ] - %54 = ptrtoint ptr %.us-phi32 to i64 - %55 = ptrtoint ptr %.us-phi31 to i64 - %56 = sub i64 %54, %55 - %57 = trunc i64 %56 to i32 - %58 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store ptr %.us-phi31, ptr %58, align 8, !tbaa !35 - %59 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %.us-phi31) #25 - %60 = trunc i64 %59 to i32 - store i32 %60, ptr %0, align 8, !tbaa !69 - %61 = getelementptr inbounds nuw i8, ptr %0, i64 16 - store i32 %57, ptr %61, align 8, !tbaa !37 - %62 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %1) #25 - %63 = trunc i64 %62 to i32 - %64 = getelementptr inbounds nuw i8, ptr %0, i64 20 - store i32 %63, ptr %64, align 4, !tbaa !38 + %.us-phi = phi i32 [ %6, %.split.us ], [ %37, %.split ], [ %51, %.split30.us.loopexit ], [ %52, %.split30.us.loopexit50 ], [ %53, %.split30.us.loopexit52 ], [ %54, %.split30.us.loopexit54 ] + %.us-phi31 = phi ptr [ %13, %.split.us ], [ %41, %.split ], [ %22, %.split30.us.loopexit ], [ %30, %.split30.us.loopexit50 ], [ %48, %.split30.us.loopexit52 ], [ %69, %.split30.us.loopexit54 ] + %.us-phi32 = phi ptr [ %14, %.split.us ], [ %42, %.split ], [ %23, %.split30.us.loopexit ], [ %31, %.split30.us.loopexit50 ], [ %49, %.split30.us.loopexit52 ], [ %70, %.split30.us.loopexit54 ] + %55 = ptrtoint ptr %.us-phi32 to i64 + %56 = ptrtoint ptr %.us-phi31 to i64 + %57 = sub i64 %55, %56 + %58 = trunc i64 %57 to i32 + %59 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store ptr %.us-phi31, ptr %59, align 8, !tbaa !35 + %60 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %.us-phi31) #25 + %61 = trunc i64 %60 to i32 + store i32 %61, ptr %0, align 8, !tbaa !69 + %62 = getelementptr inbounds nuw i8, ptr %0, i64 16 + store i32 %58, ptr %62, align 8, !tbaa !37 + %63 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %1) #25 + %64 = trunc i64 %63 to i32 + %65 = getelementptr inbounds nuw i8, ptr %0, i64 20 + store i32 %64, ptr %65, align 4, !tbaa !38 store i32 %.us-phi, ptr @search_result_history_index, align 4, !tbaa !4 br label %.loopexit -.lr.ph.split: ; preds = %.lr.ph.split.preheader, %65 +.lr.ph.split: ; preds = %.lr.ph.split.preheader, %67 %indvars.iv = phi i64 [ %38, %.lr.ph.split.preheader ], [ %indvars.iv.next, %65 ] - %exitcond = icmp eq i64 %indvars.iv, %wide.trip.count - br i1 %exitcond, label %.loopexit, label %65 + %66 = icmp eq i64 %indvars.iv, %wide.trip.count + br i1 %66, label %.loopexit, label %67 -65: ; preds = %.lr.ph.split +67: ; preds = %.lr.ph.split %indvars.iv.next = add nsw i64 %indvars.iv, -1 - %66 = getelementptr inbounds ptr, ptr %37, i64 %indvars.iv.next - %67 = load ptr, ptr %66, align 8, !tbaa !15 - %68 = tail call ptr @strstr(ptr noundef nonnull dereferenceable(1) %67, ptr noundef nonnull dereferenceable(1) %1) #25 - %69 = icmp eq ptr %68, null - br i1 %69, label %.lr.ph.split, label %.split30.us.loopexit54 + %68 = getelementptr inbounds ptr, ptr %38, i64 %indvars.iv.next + %69 = load ptr, ptr %68, align 8, !tbaa !15 + %70 = tail call ptr @strstr(ptr noundef nonnull dereferenceable(1) %69, ptr noundef nonnull dereferenceable(1) %1) #25 + %71 = icmp eq ptr %70, null + br i1 %71, label %.lr.ph.split, label %.split30.us.loopexit54 .loopexit: ; preds = %.lr.ph.split, %.lr.ph.split.us, %.lr.ph42.split, %.lr.ph42.split.us, %.split30.us, %2, %4 ret void diff --git a/bench/redis/optimized/lvm.ll b/bench/redis/optimized/lvm.ll index 8519f90c277..f404920965e 100644 --- a/bench/redis/optimized/lvm.ll +++ b/bench/redis/optimized/lvm.ll @@ -2305,23 +2305,23 @@ lessequal.exit: ; preds = %536, %539, %l_strcm br i1 %675, label %.lr.ph876, label %._crit_edge877 .lr.ph876: ; preds = %667, %.lr.ph876 - %indvars.iv900 = phi i64 [ %indvars.iv.next901, %.lr.ph876 ], [ 0, %667 ] - %676 = getelementptr inbounds nuw %struct.lua_TValue, ptr %663, i64 %indvars.iv900 - %677 = getelementptr inbounds nuw %struct.lua_TValue, ptr %661, i64 %indvars.iv900 + %indvars.iv899 = phi i64 [ %indvars.iv.next900, %.lr.ph876 ], [ 0, %667 ] + %676 = getelementptr inbounds nuw %struct.lua_TValue, ptr %663, i64 %indvars.iv899 + %677 = getelementptr inbounds nuw %struct.lua_TValue, ptr %661, i64 %indvars.iv899 %678 = load i64, ptr %676, align 8, !tbaa !9 store i64 %678, ptr %677, align 8, !tbaa !9 %679 = getelementptr inbounds nuw i8, ptr %676, i64 8 %680 = load i32, ptr %679, align 8, !tbaa !4 %681 = getelementptr inbounds nuw i8, ptr %677, i64 8 store i32 %680, ptr %681, align 8, !tbaa !4 - %indvars.iv.next901 = add nuw nsw i64 %indvars.iv900, 1 - %682 = getelementptr inbounds nuw %struct.lua_TValue, ptr %663, i64 %indvars.iv.next901 + %indvars.iv.next900 = add nuw nsw i64 %indvars.iv899, 1 + %682 = getelementptr inbounds nuw %struct.lua_TValue, ptr %663, i64 %indvars.iv.next900 %683 = load ptr, ptr %16, align 8, !tbaa !33 %684 = icmp ult ptr %682, %683 br i1 %684, label %.lr.ph876, label %._crit_edge877, !llvm.loop !77 ._crit_edge877: ; preds = %.lr.ph876, %667 - %.lcssa854 = phi i64 [ 0, %667 ], [ %indvars.iv.next901, %.lr.ph876 ] + %.lcssa854 = phi i64 [ 0, %667 ], [ %indvars.iv.next900, %.lr.ph876 ] %685 = getelementptr inbounds nuw %struct.lua_TValue, ptr %661, i64 %.lcssa854 store ptr %685, ptr %16, align 8, !tbaa !33 %686 = getelementptr inbounds i8, ptr %658, i64 -24 @@ -2424,8 +2424,8 @@ lessequal.exit: ; preds = %536, %539, %l_strcm 740: ; preds = %734 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #9 - %cond912 = icmp eq i32 %738, 4 - br i1 %cond912, label %741, label %746 + %cond911 = icmp eq i32 %738, 4 + br i1 %cond911, label %741, label %746 741: ; preds = %740 %742 = load ptr, ptr %95, align 8, !tbaa !9 @@ -2454,8 +2454,8 @@ luaV_tonumber.exit.thread: ; preds = %741 751: ; preds = %747 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #9 - %cond911 = icmp eq i32 %749, 4 - br i1 %cond911, label %752, label %757 + %cond910 = icmp eq i32 %749, 4 + br i1 %cond910, label %752, label %757 752: ; preds = %751 %753 = load ptr, ptr %735, align 8, !tbaa !9 diff --git a/bench/rocksdb/optimized/pessimistic_transaction.ll b/bench/rocksdb/optimized/pessimistic_transaction.ll index d814c07fcd9..5beb5d1f0da 100644 --- a/bench/rocksdb/optimized/pessimistic_transaction.ll +++ b/bench/rocksdb/optimized/pessimistic_transaction.ll @@ -11664,7 +11664,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit42: ; preds = %69 %.pn.pn = phi { ptr, i32 } [ %68, %67 ], [ %70, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit42 ], [ %70, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i41 ] call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #29 %.not.i.i.i = icmp eq ptr %34, null - br i1 %.not.i.i.i, label %_ZNSt6vectorImSaImEED2Ev.exit, label %101 + br i1 %.not.i.i.i, label %_ZNSt6vectorImSaImEED2Ev.exit, label %100 79: ; preds = %.critedge, %_ZNSt12_Vector_baseImSaImEEC2EmRKS0_.exit.thread.i %.not27 = icmp eq ptr %2, null @@ -11710,19 +11710,19 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit42: ; preds = %69 br i1 %exitcond.not.i.i.i.i.i, label %.loopexit, label %94, !llvm.loop !483 .loopexit: ; preds = %94, %83 - %100 = call noundef i32 @pthread_mutex_unlock(ptr noundef nonnull align 8 dereferenceable(40) %7) #29 + %99 = call noundef i32 @pthread_mutex_unlock(ptr noundef nonnull align 8 dereferenceable(40) %7) #29 ret void -101: ; preds = %.critedge33 - %102 = ptrtoint ptr %33 to i64 - %103 = ptrtoint ptr %34 to i64 - %104 = sub i64 %102, %103 - call void @_ZdlPvm(ptr noundef nonnull %34, i64 noundef %104) #28 +100: ; preds = %.critedge33 + %101 = ptrtoint ptr %33 to i64 + %102 = ptrtoint ptr %34 to i64 + %103 = sub i64 %101, %102 + call void @_ZdlPvm(ptr noundef nonnull %34, i64 noundef %103) #28 br label %_ZNSt6vectorImSaImEED2Ev.exit -_ZNSt6vectorImSaImEED2Ev.exit: ; preds = %101, %.critedge33, %65 +_ZNSt6vectorImSaImEED2Ev.exit: ; preds = %100, %.critedge33, %65 %.pn28.pn.pn = phi { ptr, i32 } [ %66, %65 ], [ %.pn.pn, %.critedge33 ], [ %.pn.pn, %101 ] - %105 = call noundef i32 @pthread_mutex_unlock(ptr noundef nonnull align 8 dereferenceable(40) %7) #29 + %104 = call noundef i32 @pthread_mutex_unlock(ptr noundef nonnull align 8 dereferenceable(40) %7) #29 resume { ptr, i32 } %.pn28.pn.pn } diff --git a/bench/ruby/optimized/date_core.ll b/bench/ruby/optimized/date_core.ll index a1103247b8d..1f97c69ca42 100644 --- a/bench/ruby/optimized/date_core.ll +++ b/bench/ruby/optimized/date_core.ll @@ -9612,14 +9612,14 @@ m_sg.exit: ; preds = %m_mday.exit, %133 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %10) #21 %134 = call fastcc i32 @valid_civil_p(i64 noundef %.026, i32 noundef %.027, i32 noundef %.0.i38, double noundef %.0.i49, ptr noundef %4, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %6, ptr noundef %10) %.not55 = icmp eq i32 %134, 0 - br i1 %.not55, label %.lr.ph.preheader, label %._crit_edge + br i1 %.not55, label %.lr.ph, label %._crit_edge -.lr.ph.preheader: ; preds = %m_sg.exit +.lr.ph: ; preds = %m_sg.exit %135 = icmp ne i32 %.0.i38, 0 %136 = zext i1 %135 to i32 - br label %.lr.ph + br label %136 -.lr.ph: ; preds = %.lr.ph.preheader, %139 +136: ; preds = %.lr.ph, %139 %.02856 = phi i32 [ %140, %139 ], [ %.0.i38, %.lr.ph.preheader ] %exitcond = icmp eq i32 %.02856, %136 br i1 %exitcond, label %137, label %139 @@ -9629,8 +9629,8 @@ m_sg.exit: ; preds = %m_mday.exit, %133 tail call void (i64, ptr, ...) @rb_raise(i64 noundef %138, ptr noundef nonnull @.str.168) #22 unreachable -139: ; preds = %.lr.ph - %140 = add nsw i32 %.02856, -1 +138: ; preds = %.lr.ph + %139 = add nsw i32 %.02856, -1 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #21 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #21 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #21 @@ -9639,42 +9639,42 @@ m_sg.exit: ; preds = %m_mday.exit, %133 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %8) #21 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #21 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %10) #21 - %141 = call fastcc i32 @valid_civil_p(i64 noundef %.026, i32 noundef %.027, i32 noundef %140, double noundef %.0.i49, ptr noundef %4, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %6, ptr noundef %10) - %.not = icmp eq i32 %141, 0 + %140 = call fastcc i32 @valid_civil_p(i64 noundef %.026, i32 noundef %.027, i32 noundef %139, double noundef %.0.i49, ptr noundef %4, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %6, ptr noundef %10) + %.not = icmp eq i32 %140, 0 br i1 %.not, label %.lr.ph, label %._crit_edge -._crit_edge: ; preds = %139, %m_sg.exit +._crit_edge: ; preds = %138, %m_sg.exit call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #21 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #21 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #21 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #21 - %142 = load i64, ptr %4, align 8, !tbaa !6 - %143 = load i32, ptr %6, align 4, !tbaa !33 - call fastcc void @encode_jd(i64 noundef %142, i32 noundef %143, ptr noundef %5) - %144 = load i64, ptr %5, align 8, !tbaa !6 + %141 = load i64, ptr %4, align 8, !tbaa !6 + %142 = load i32, ptr %6, align 4, !tbaa !33 + call fastcc void @encode_jd(i64 noundef %141, i32 noundef %142, ptr noundef %5) + %143 = load i64, ptr %5, align 8, !tbaa !6 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #21 - %145 = load i32, ptr %11, align 8, !tbaa !47 - %146 = and i32 %145, 128 - %.not.i.i50 = icmp eq i32 %146, 0 - br i1 %.not.i.i50, label %m_real_local_jd.exit, label %147 + %144 = load i32, ptr %11, align 8, !tbaa !47 + %145 = and i32 %144, 128 + %.not.i.i50 = icmp eq i32 %145, 0 + br i1 %.not.i.i50, label %m_real_local_jd.exit, label %146 -147: ; preds = %._crit_edge +146: ; preds = %._crit_edge tail call fastcc void @get_c_civil(ptr noundef nonnull %11) br label %m_real_local_jd.exit -m_real_local_jd.exit: ; preds = %._crit_edge, %147 +m_real_local_jd.exit: ; preds = %._crit_edge, %146 %.0.in.i.i = getelementptr inbounds nuw i8, ptr %11, i64 8 %.0.i.i = load i64, ptr %.0.in.i.i, align 8, !tbaa !47 - %148 = tail call fastcc i32 @m_local_jd(ptr noundef nonnull %11) - call fastcc void @encode_jd(i64 noundef %.0.i.i, i32 noundef %148, ptr noundef %3) - %149 = load i64, ptr %3, align 8, !tbaa !6 + %147 = tail call fastcc i32 @m_local_jd(ptr noundef nonnull %11) + call fastcc void @encode_jd(i64 noundef %.0.i.i, i32 noundef %147, ptr noundef %3) + %148 = load i64, ptr %3, align 8, !tbaa !6 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #21 - %150 = tail call i64 (i64, i64, i32, ...) @rb_funcall(i64 noundef %144, i64 noundef 45, i32 noundef 1, i64 noundef %149) #21 - %151 = tail call i64 @d_lite_plus(i64 noundef %0, i64 noundef %150) + %149 = tail call i64 (i64, i64, i32, ...) @rb_funcall(i64 noundef %143, i64 noundef 45, i32 noundef 1, i64 noundef %148) #21 + %150 = tail call i64 @d_lite_plus(i64 noundef %0, i64 noundef %149) call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #21 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #21 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #21 - ret i64 %151 + ret i64 %150 } ; Function Attrs: nounwind sspstrong uwtable diff --git a/bench/ruff-rs/optimized/abz4enoi74elfoplai1nrzl05.ll b/bench/ruff-rs/optimized/abz4enoi74elfoplai1nrzl05.ll index 466bffba162..1d3dc6416b8 100644 --- a/bench/ruff-rs/optimized/abz4enoi74elfoplai1nrzl05.ll +++ b/bench/ruff-rs/optimized/abz4enoi74elfoplai1nrzl05.ll @@ -1453,8 +1453,8 @@ define internal fastcc noundef zeroext i1 @"_ZN55_$LT$$RF$str$u20$as$u20$core..s .preheader.i: ; preds = %20, %24 %22 = phi ptr [ %26, %24 ], [ %1, %20 ] %23 = phi i64 [ %25, %24 ], [ %2, %20 ] - %exitcond.not = icmp eq i64 %23, 2 - br i1 %exitcond.not, label %_ZN4core4iter6traits8iterator8Iterator8try_fold17h15070aa7e1a7be89E.exit.i, label %24 + %.not.not.not.i.i = icmp eq i64 %23, 2 + br i1 %.not.not.not.i.i, label %_ZN4core4iter6traits8iterator8Iterator8try_fold17h15070aa7e1a7be89E.exit.i, label %24 24: ; preds = %.preheader.i %25 = add i64 %23, -1 diff --git a/bench/rust-analyzer-rs/optimized/4wjr9n8d5oomu43d.ll b/bench/rust-analyzer-rs/optimized/4wjr9n8d5oomu43d.ll index fabeee9ebae..2ad76188942 100644 --- a/bench/rust-analyzer-rs/optimized/4wjr9n8d5oomu43d.ll +++ b/bench/rust-analyzer-rs/optimized/4wjr9n8d5oomu43d.ll @@ -40977,7 +40977,7 @@ default.unreachable: ; preds = %19, %37, %46 .body: ; preds = %.body.loopexit.split-lp, %.body.loopexit %lpad.phi143 = phi { ptr, i32 } [ %lpad.loopexit141, %.body.loopexit ], [ %lpad.loopexit.split-lp142, %.body.loopexit.split-lp ] invoke fastcc void @"_ZN4core3ptr128drop_in_place$LT$rowan..utility_types..TokenAtOffset$LT$rowan..api..SyntaxToken$LT$syntax..syntax_node..RustLanguage$GT$$GT$$GT$17h88bc577c644226beE"(ptr noalias noundef align 8 dereferenceable(24) %7) #36 - to label %66 unwind label %64 + to label %66 unwind label %65 _ZN4core4iter6traits8iterator8Iterator8find_map17hacb33b7722b84208E.exit: ; preds = %.noexc33 store ptr %20, ptr %.sink13.i.sroa.gep111, align 8 @@ -41028,8 +41028,8 @@ _ZN4core4iter6traits8iterator8Iterator8find_map17hacb33b7722b84208E.exit: ; pred call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) br label %.split -37: ; preds = %60, %.split - %.sroa.9.1 = phi i32 [ %2, %.split ], [ %61, %60 ] +37: ; preds = %61, %.split + %.sroa.9.1 = phi i32 [ %2, %.split ], [ %62, %60 ] call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %6) %38 = tail call noundef align 8 dereferenceable(8) ptr @"_ZN82_$LT$syntax..ast..generated..nodes..SourceFile$u20$as$u20$syntax..ast..AstNode$GT$6syntax17h29e88a43d2d1cb5dE"(ptr noalias noundef nonnull readonly align 8 dereferenceable(8) %0) call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4) @@ -41106,7 +41106,7 @@ _ZN4core4iter6traits8iterator8Iterator8find_map17hacb33b7722b84208E.exit: ; pred .body77: ; preds = %.body77.loopexit.split-lp, %.body77.loopexit %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit, %.body77.loopexit ], [ %lpad.loopexit.split-lp, %.body77.loopexit.split-lp ] invoke fastcc void @"_ZN4core3ptr128drop_in_place$LT$rowan..utility_types..TokenAtOffset$LT$rowan..api..SyntaxToken$LT$syntax..syntax_node..RustLanguage$GT$$GT$$GT$17h88bc577c644226beE"(ptr noalias noundef align 8 dereferenceable(24) %6) #36 - to label %66 unwind label %64 + to label %66 unwind label %65 _ZN4core4iter6traits8iterator8Iterator8find_map17hacb33b7722b84208E.exit53: ; preds = %.noexc52 store ptr %47, ptr %.sink13.i44.sroa.gep114, align 8 @@ -41139,30 +41139,30 @@ _ZN4core4iter6traits8iterator8Iterator8find_map17hacb33b7722b84208E.exit53: ; pr "_ZN4core3ptr128drop_in_place$LT$rowan..utility_types..TokenAtOffset$LT$rowan..api..SyntaxToken$LT$syntax..syntax_node..RustLanguage$GT$$GT$$GT$17h88bc577c644226beE.exit62": ; preds = %"_ZN4core3ptr91drop_in_place$LT$core..option..Option$LT$syntax..ast..generated..tokens..Whitespace$GT$$GT$17h1d6ec4de2fd95189E.exit55", %"_ZN4core3ptr85drop_in_place$LT$rowan..api..SyntaxToken$LT$syntax..syntax_node..RustLanguage$GT$$GT$17h0f6b849c6d556ca0E.exit1.sink.split.i58", %55 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) - %exitcond196.not = icmp eq i32 %.sroa.9.1, %umin - br i1 %exitcond196.not, label %.loopexit, label %60 + %60 = icmp eq i32 %.sroa.9.1, %umin + br i1 %60, label %.loopexit, label %60 -60: ; preds = %"_ZN4core3ptr128drop_in_place$LT$rowan..utility_types..TokenAtOffset$LT$rowan..api..SyntaxToken$LT$syntax..syntax_node..RustLanguage$GT$$GT$$GT$17h88bc577c644226beE.exit62" - %61 = add i32 %.sroa.9.1, -1 +61: ; preds = %"_ZN4core3ptr128drop_in_place$LT$rowan..utility_types..TokenAtOffset$LT$rowan..api..SyntaxToken$LT$syntax..syntax_node..RustLanguage$GT$$GT$$GT$17h88bc577c644226beE.exit62" + %62 = add i32 %.sroa.9.1, -1 br label %37 .loopexit: ; preds = %"_ZN4core3ptr128drop_in_place$LT$rowan..utility_types..TokenAtOffset$LT$rowan..api..SyntaxToken$LT$syntax..syntax_node..RustLanguage$GT$$GT$$GT$17h88bc577c644226beE.exit62", %"_ZN4core3ptr128drop_in_place$LT$rowan..utility_types..TokenAtOffset$LT$rowan..api..SyntaxToken$LT$syntax..syntax_node..RustLanguage$GT$$GT$$GT$17h88bc577c644226beE.exit67" %.sroa.9.1182 = phi i32 [ %.sroa.9.1, %"_ZN4core3ptr128drop_in_place$LT$rowan..utility_types..TokenAtOffset$LT$rowan..api..SyntaxToken$LT$syntax..syntax_node..RustLanguage$GT$$GT$$GT$17h88bc577c644226beE.exit67" ], [ %umin, %"_ZN4core3ptr128drop_in_place$LT$rowan..utility_types..TokenAtOffset$LT$rowan..api..SyntaxToken$LT$syntax..syntax_node..RustLanguage$GT$$GT$$GT$17h88bc577c644226beE.exit62" ] - %62 = insertvalue { i32, i32 } poison, i32 %.sroa.0.0195, 0 - %63 = insertvalue { i32, i32 } %62, i32 %.sroa.9.1182, 1 + %64 = insertvalue { i32, i32 } poison, i32 %.sroa.0.0195, 0 + %63 = insertvalue { i32, i32 } %64, i32 %.sroa.9.1182, 1 ret { i32, i32 } %63 "_ZN4core3ptr128drop_in_place$LT$rowan..utility_types..TokenAtOffset$LT$rowan..api..SyntaxToken$LT$syntax..syntax_node..RustLanguage$GT$$GT$$GT$17h88bc577c644226beE.exit67": ; preds = %46 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) br label %.loopexit -64: ; preds = %.body77, %.body - %65 = landingpad { ptr, i32 } +65: ; preds = %.body77, %.body + %66 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer tail call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #35 unreachable -66: ; preds = %.body77, %.body +67: ; preds = %.body77, %.body %.pn = phi { ptr, i32 } [ %lpad.phi, %.body77 ], [ %lpad.phi143, %.body ] resume { ptr, i32 } %.pn } diff --git a/bench/slurm/optimized/affinity.ll b/bench/slurm/optimized/affinity.ll index 0879f9dfbdd..79c9167edd3 100644 --- a/bench/slurm/optimized/affinity.ll +++ b/bench/slurm/optimized/affinity.ll @@ -86,8 +86,8 @@ define dso_local range(i32 0, 2) i32 @get_cpuset(ptr noundef initializes((0, 128 ._crit_edge: ; preds = %28 %33 = urem i32 %2, %spec.select - %.not153 = icmp eq i32 %33, 0 - br i1 %.not153, label %._crit_edge129, label %.lr.ph128 + %.not152 = icmp eq i32 %33, 0 + br i1 %.not152, label %._crit_edge129, label %.lr.ph128 .lr.ph128: ; preds = %._crit_edge, %.lr.ph128 %34 = phi i8 [ %38, %.lr.ph128 ], [ %23, %._crit_edge ] @@ -206,9 +206,9 @@ define dso_local range(i32 0, 2) i32 @get_cpuset(ptr noundef initializes((0, 128 %.383.idx.sroa.sel.idx.sroa.sel = getelementptr inbounds nuw i8, ptr %4, i64 %.383.idx.sroa.sel.idx.sroa.sel.idx %.073132 = getelementptr inbounds i8, ptr %81, i64 -1 %.not107133 = icmp ult ptr %.073132, %.383.idx.sroa.sel.idx.sroa.sel - br i1 %.not107133, label %.thread117, label %.lr.ph137.preheader + br i1 %.not107133, label %.thread117, label %.lr.ph137 -.lr.ph137.preheader: ; preds = %77 +.lr.ph137: ; preds = %77 %.sroa.sel.v = select i1 %or.cond, i64 1, i64 -1 %.sroa.sel = getelementptr i8, ptr %4, i64 %.sroa.sel.v br label %.lr.ph137 @@ -265,8 +265,8 @@ define dso_local range(i32 0, 2) i32 @get_cpuset(ptr noundef initializes((0, 128 101: ; preds = %97, %99 %102 = add i32 %.071134, 4 %.073 = getelementptr inbounds i8, ptr %.073135, i64 -1 - %exitcond144 = icmp eq ptr %.073, %.sroa.sel - br i1 %exitcond144, label %.thread117, label %.lr.ph137, !llvm.loop !13 + %.not107 = icmp eq ptr %.073, %.sroa.sel + br i1 %.not107, label %.thread117, label %.lr.ph137, !llvm.loop !13 103: ; preds = %75 %104 = and i32 %15, 1024 diff --git a/bench/slurm/optimized/node_scheduler.ll b/bench/slurm/optimized/node_scheduler.ll index 3ce742caee5..77dbf491fb7 100644 --- a/bench/slurm/optimized/node_scheduler.ll +++ b/bench/slurm/optimized/node_scheduler.ll @@ -3964,7 +3964,7 @@ _valid_features.exit._crit_edge: ; preds = %_valid_features.exi br i1 %or.cond5, label %411, label %._crit_edge ._crit_edge: ; preds = %410 - %.pre503 = load ptr, ptr %151, align 8 + %.pre500 = load ptr, ptr %151, align 8 br label %431 411: ; preds = %410 @@ -3983,11 +3983,11 @@ _valid_features.exit._crit_edge: ; preds = %_valid_features.exi %419 = getelementptr inbounds nuw i8, ptr %418, i64 200 %420 = load ptr, ptr %419, align 8 %421 = call fastcc i32 @_match_feature(ptr noundef %420, ptr noundef %151) - %.pre502 = load ptr, ptr %151, align 8 + %.pre499 = load ptr, ptr %151, align 8 br label %422 422: ; preds = %417, %414 - %423 = phi ptr [ %.pre502, %417 ], [ %416, %414 ] + %423 = phi ptr [ %.pre499, %417 ], [ %416, %414 ] %.not370 = icmp eq ptr %423, null br i1 %.not370, label %431, label %424 @@ -3996,11 +3996,11 @@ _valid_features.exit._crit_edge: ; preds = %_valid_features.exi %426 = load ptr, ptr %425, align 8 %427 = call i32 @bit_overlap_any(ptr noundef %426, ptr noundef nonnull %423) #14 %.not371 = icmp eq i32 %427, 0 - %.pre504 = load ptr, ptr %151, align 8 + %.pre501 = load ptr, ptr %151, align 8 br i1 %.not371, label %428, label %431 428: ; preds = %424 - %.not372 = icmp eq ptr %.pre504, null + %.not372 = icmp eq ptr %.pre501, null br i1 %.not372, label %430, label %429 429: ; preds = %428 @@ -4012,7 +4012,7 @@ _valid_features.exit._crit_edge: ; preds = %_valid_features.exi br label %431 431: ; preds = %._crit_edge, %422, %424, %430 - %432 = phi ptr [ %.pre503, %._crit_edge ], [ null, %422 ], [ %.pre504, %424 ], [ null, %430 ] + %432 = phi ptr [ %.pre500, %._crit_edge ], [ null, %422 ], [ %.pre501, %424 ], [ null, %430 ] %433 = load ptr, ptr %150, align 8 %434 = icmp ne ptr %433, null %435 = icmp ne ptr %432, null @@ -4546,9 +4546,9 @@ _find_grp_node_bitmap.exit.thread: ; preds = %.loopexit423 682: ; preds = %677 %683 = load ptr, ptr %7, align 8 %.not21.i = icmp eq ptr %683, null - br i1 %.not21.i, label %684, label %_find_grp_node_bitmap.exit.thread505 + br i1 %.not21.i, label %684, label %_find_grp_node_bitmap.exit.thread502 -_find_grp_node_bitmap.exit.thread505: ; preds = %682 +_find_grp_node_bitmap.exit.thread502: ; preds = %682 call void @bit_or(ptr noundef nonnull %683, ptr noundef nonnull %676) #14 call void @assoc_mgr_unlock(ptr noundef nonnull %13) #14 call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %13) #14 @@ -4589,7 +4589,7 @@ _find_grp_node_bitmap.exit: ; preds = %_find_grp_node_bitm %.not398 = icmp eq ptr %689, null br i1 %.not398, label %754, label %.preheader -.preheader: ; preds = %_find_grp_node_bitmap.exit.thread505, %_find_grp_node_bitmap.exit +.preheader: ; preds = %_find_grp_node_bitmap.exit.thread502, %_find_grp_node_bitmap.exit %690 = phi ptr [ %683, %_find_grp_node_bitmap.exit.thread505 ], [ %689, %_find_grp_node_bitmap.exit ] %691 = icmp sgt i32 %.7, 0 br i1 %691, label %.lr.ph467.preheader, label %.loopexit.thread @@ -4601,10 +4601,10 @@ _find_grp_node_bitmap.exit: ; preds = %_find_grp_node_bitm .lr.ph467: ; preds = %.lr.ph467.preheader, %747 %693 = phi ptr [ %690, %.lr.ph467.preheader ], [ %748, %747 ] %694 = phi ptr [ %661, %.lr.ph467.preheader ], [ %749, %747 ] - %indvars.iv497 = phi i64 [ %692, %.lr.ph467.preheader ], [ %indvars.iv.next498, %747 ] + %indvars.iv496 = phi i64 [ %692, %.lr.ph467.preheader ], [ %indvars.iv.next497, %747 ] %.9465 = phi i32 [ %.7, %.lr.ph467.preheader ], [ %.10, %747 ] - %indvars.iv.next498 = add nsw i64 %indvars.iv497, -1 - %695 = getelementptr inbounds nuw %struct.node_set, ptr %694, i64 %indvars.iv.next498, i32 4 + %indvars.iv.next497 = add nsw i64 %indvars.iv496, -1 + %695 = getelementptr inbounds nuw %struct.node_set, ptr %694, i64 %indvars.iv.next497, i32 4 %696 = load ptr, ptr %695, align 8 %697 = call i32 @bit_overlap(ptr noundef %696, ptr noundef %693) #14 %698 = icmp eq i32 %697, 0 @@ -4620,7 +4620,7 @@ _find_grp_node_bitmap.exit: ; preds = %_find_grp_node_bitm br label %747 705: ; preds = %.lr.ph467 - %706 = getelementptr inbounds nuw %struct.node_set, ptr %699, i64 %indvars.iv.next498 + %706 = getelementptr inbounds nuw %struct.node_set, ptr %699, i64 %indvars.iv.next497 %707 = getelementptr inbounds nuw i8, ptr %706, i64 40 %708 = load i32, ptr %707, align 8 %709 = icmp eq i32 %697, %708 @@ -4631,44 +4631,44 @@ _find_grp_node_bitmap.exit: ; preds = %_find_grp_node_bitm %712 = sext i32 %.9465 to i64 %713 = getelementptr inbounds %struct.node_set, ptr %699, i64 %712 store i16 %711, ptr %713, align 8 - %714 = getelementptr inbounds nuw %struct.node_set, ptr %699, i64 %indvars.iv.next498, i32 7 + %714 = getelementptr inbounds nuw %struct.node_set, ptr %699, i64 %indvars.iv.next497, i32 7 %715 = load i64, ptr %714, align 8 %716 = getelementptr inbounds %struct.node_set, ptr %699, i64 %712, i32 7 store i64 %715, ptr %716, align 8 %717 = getelementptr inbounds %struct.node_set, ptr %699, i64 %712, i32 5 store i32 %697, ptr %717, align 8 - %718 = getelementptr inbounds nuw %struct.node_set, ptr %699, i64 %indvars.iv.next498, i32 5 + %718 = getelementptr inbounds nuw %struct.node_set, ptr %699, i64 %indvars.iv.next497, i32 5 %719 = load i32, ptr %718, align 8 %720 = sub i32 %719, %697 store i32 %720, ptr %718, align 8 - %721 = getelementptr inbounds nuw %struct.node_set, ptr %699, i64 %indvars.iv.next498, i32 6 + %721 = getelementptr inbounds nuw %struct.node_set, ptr %699, i64 %indvars.iv.next497, i32 6 %722 = load i32, ptr %721, align 4 %723 = getelementptr inbounds %struct.node_set, ptr %699, i64 %712, i32 6 store i32 %722, ptr %723, align 4 %724 = add i32 %722, 1 store i32 %724, ptr %721, align 4 - %725 = getelementptr inbounds nuw %struct.node_set, ptr %699, i64 %indvars.iv.next498, i32 3 + %725 = getelementptr inbounds nuw %struct.node_set, ptr %699, i64 %indvars.iv.next497, i32 3 %726 = load i32, ptr %725, align 8 %727 = getelementptr inbounds %struct.node_set, ptr %699, i64 %712, i32 3 store i32 %726, ptr %727, align 8 - %728 = getelementptr inbounds nuw %struct.node_set, ptr %699, i64 %indvars.iv.next498, i32 1 + %728 = getelementptr inbounds nuw %struct.node_set, ptr %699, i64 %indvars.iv.next497, i32 1 %729 = load ptr, ptr %728, align 8 %730 = call ptr @xstrdup(ptr noundef %729) #14 %731 = getelementptr inbounds %struct.node_set, ptr %699, i64 %712, i32 1 store ptr %730, ptr %731, align 8 - %732 = getelementptr inbounds nuw %struct.node_set, ptr %699, i64 %indvars.iv.next498, i32 2 + %732 = getelementptr inbounds nuw %struct.node_set, ptr %699, i64 %indvars.iv.next497, i32 2 %733 = load ptr, ptr %732, align 8 %734 = call ptr @bit_copy(ptr noundef %733) #14 %735 = getelementptr inbounds %struct.node_set, ptr %699, i64 %712, i32 2 store ptr %734, ptr %735, align 8 - %736 = getelementptr inbounds nuw %struct.node_set, ptr %699, i64 %indvars.iv.next498, i32 4 + %736 = getelementptr inbounds nuw %struct.node_set, ptr %699, i64 %indvars.iv.next497, i32 4 %737 = load ptr, ptr %736, align 8 %738 = call ptr @bit_copy(ptr noundef %737) #14 %739 = getelementptr inbounds %struct.node_set, ptr %699, i64 %712, i32 4 store ptr %738, ptr %739, align 8 call void @bit_and(ptr noundef %738, ptr noundef %693) #14 %740 = load ptr, ptr %18, align 8 - %741 = getelementptr inbounds nuw %struct.node_set, ptr %740, i64 %indvars.iv.next498, i32 4 + %741 = getelementptr inbounds nuw %struct.node_set, ptr %740, i64 %indvars.iv.next497, i32 4 %742 = load ptr, ptr %741, align 8 %743 = load ptr, ptr %20, align 8 call void @bit_and_not(ptr noundef %742, ptr noundef %743) #14 @@ -4696,14 +4696,14 @@ _find_grp_node_bitmap.exit: ; preds = %_find_grp_node_bitm br i1 %.not400, label %.sink.split, label %.loopexit.thread .loopexit.thread: ; preds = %.preheader, %.loopexit - %.11509 = phi i32 [ %.11, %.loopexit ], [ %.7, %.preheader ] + %.11506 = phi i32 [ %.11, %.loopexit ], [ %.7, %.preheader ] %753 = phi ptr [ %751, %.loopexit ], [ %661, %.preheader ] call void @slurm_bit_free(ptr noundef nonnull %20) #14 br label %.sink.split .sink.split: ; preds = %.loopexit, %.loopexit.thread, %_find_grp_node_bitmap.exit.thread %.ph = phi ptr [ %661, %_find_grp_node_bitmap.exit.thread ], [ %753, %.loopexit.thread ], [ %751, %.loopexit ] - %.12.ph = phi i32 [ %.7, %_find_grp_node_bitmap.exit.thread ], [ %.11509, %.loopexit.thread ], [ %.11, %.loopexit ] + %.12.ph = phi i32 [ %.7, %_find_grp_node_bitmap.exit.thread ], [ %.11506, %.loopexit.thread ], [ %.11, %.loopexit ] store ptr null, ptr %20, align 8 br label %754 diff --git a/bench/stb/optimized/stb_tilemap_editor.ll b/bench/stb/optimized/stb_tilemap_editor.ll index 313dc1280df..180a4d33076 100644 --- a/bench/stb/optimized/stb_tilemap_editor.ll +++ b/bench/stb/optimized/stb_tilemap_editor.ll @@ -5103,7 +5103,7 @@ define range(i32 -1, 3) i32 @stbte__erase_predict(ptr noundef readonly captures( 83: ; preds = %68, %72, %65 %84 = and i64 %indvars.iv.next, 4294967295 - %exitcond.not = icmp eq i64 %84, 0 + %63 = icmp eq i64 %84, 0 br i1 %exitcond.not, label %.loopexit101, label %65, !llvm.loop !135 .loopexit101: ; preds = %83, %58, %55 @@ -5125,14 +5125,14 @@ define range(i32 -1, 3) i32 @stbte__erase_predict(ptr noundef readonly captures( br i1 %57, label %.lr.ph109.split.us, label %.lr.ph109.split .lr.ph109.split.us: ; preds = %.lr.ph109, %110 - %indvars.iv132 = phi i64 [ %indvars.iv.next133, %110 ], [ %92, %.lr.ph109 ] - %93 = getelementptr inbounds nuw i16, ptr %1, i64 %indvars.iv132 + %indvars.iv130 = phi i64 [ %indvars.iv.next131, %110 ], [ %92, %.lr.ph109 ] + %93 = getelementptr inbounds nuw i16, ptr %1, i64 %indvars.iv130 %94 = load i16, ptr %93, align 2, !tbaa !21 %95 = icmp slt i16 %94, 0 br i1 %95, label %110, label %96 96: ; preds = %.lr.ph109.split.us - %97 = getelementptr inbounds nuw [8 x %struct.stbte__layer], ptr %90, i64 0, i64 %indvars.iv132 + %97 = getelementptr inbounds nuw [8 x %struct.stbte__layer], ptr %90, i64 0, i64 %indvars.iv130 %98 = getelementptr inbounds nuw i8, ptr %97, i64 8 %99 = load i32, ptr %98, align 8, !tbaa !132 %.not.us = icmp eq i32 %99, 0 @@ -5145,8 +5145,8 @@ define range(i32 -1, 3) i32 @stbte__erase_predict(ptr noundef readonly captures( br i1 %.not90.us, label %103, label %110 103: ; preds = %100 - %104 = getelementptr inbounds nuw i16, ptr %1, i64 %indvars.iv132 - %105 = icmp eq i64 %indvars.iv132, 0 + %104 = getelementptr inbounds nuw i16, ptr %1, i64 %indvars.iv130 + %105 = icmp eq i64 %indvars.iv130, 0 br i1 %105, label %106, label %.critedge100.us 106: ; preds = %103 @@ -5160,7 +5160,7 @@ define range(i32 -1, 3) i32 @stbte__erase_predict(ptr noundef readonly captures( br label %.loopexit 110: ; preds = %100, %96, %.lr.ph109.split.us - %indvars.iv.next133 = add nsw i64 %indvars.iv132, -1 + %indvars.iv.next131 = add nsw i64 %indvars.iv130, -1 %111 = and i64 %indvars.iv.next133, 4294967295 %exitcond136.not = icmp eq i64 %111, 4294967295 br i1 %exitcond136.not, label %._crit_edge, label %.lr.ph109.split.us, !llvm.loop !136 @@ -5522,7 +5522,7 @@ stbte__undo_record.exit161: ; preds = %107, %109 194: ; preds = %173, %177, %170 %195 = and i64 %indvars.iv.next, 4294967295 - %exitcond.not = icmp eq i64 %195, 0 + %63 = icmp eq i64 %195, 0 br i1 %exitcond.not, label %.loopexit174, label %170, !llvm.loop !137 .loopexit174: ; preds = %194, %161, %158 @@ -8159,7 +8159,7 @@ stbte__should_copy_properties.exit: ; preds = %19, %.lr.ph.i, %23, %30 = icmp eq i32 %26, %27 %31 = icmp eq i32 %28, %29 %or.cond = select i1 %30, i1 %31, i1 false - br i1 %or.cond, label %97, label %32 + br i1 %or.cond, label %99, label %32 32: ; preds = %stbte__should_copy_properties.exit %33 = getelementptr inbounds nuw i8, ptr %0, i64 801052 @@ -8212,56 +8212,56 @@ stbte__should_copy_properties.exit: ; preds = %19, %.lr.ph.i, %23, br i1 %59, label %.lr.ph45.split, label %.loopexit34 .loopexit: ; preds = %.lr.ph41, %.lr.ph45.split - %exitcond49.not = icmp eq i32 %.03043, 0 - br i1 %exitcond49.not, label %.loopexit34, label %.lr.ph45.splitthread-pre-split, !llvm.loop !174 + %60 = icmp eq i32 %.03043, 0 + br i1 %60, label %.loopexit34, label %.lr.ph45.splitthread-pre-split, !llvm.loop !174 .lr.ph45.splitthread-pre-split: ; preds = %.loopexit %.pr = load i32, ptr %57, align 8, !tbaa !29 br label %.lr.ph45.split .lr.ph45.split: ; preds = %.lr.ph45, %.lr.ph45.splitthread-pre-split - %60 = phi i32 [ %.pr, %.lr.ph45.splitthread-pre-split ], [ %58, %.lr.ph45 ] + %61 = phi i32 [ %.pr, %.lr.ph45.splitthread-pre-split ], [ %58, %.lr.ph45 ] %.03043.in = phi i32 [ %.03043, %.lr.ph45.splitthread-pre-split ], [ %51, %.lr.ph45 ] %.03043 = add i32 %.03043.in, -1 - %61 = icmp sgt i32 %60, 0 - br i1 %61, label %.lr.ph41, label %.loopexit + %62 = icmp sgt i32 %61, 0 + br i1 %62, label %.lr.ph41, label %.loopexit .lr.ph41: ; preds = %.lr.ph45.split, %.lr.ph41 - %.0.in39 = phi i32 [ %.0, %.lr.ph41 ], [ %60, %.lr.ph45.split ] + %.0.in39 = phi i32 [ %.0, %.lr.ph41 ], [ %61, %.lr.ph45.split ] %.0 = add nsw i32 %.0.in39, -1 tail call void @stbte__drag_update(ptr noundef %0, i32 noundef %.0, i32 noundef %.03043, i32 noundef %.011.i) - %exitcond.not = icmp eq i32 %.0, 0 - br i1 %exitcond.not, label %.loopexit, label %.lr.ph41, !llvm.loop !175 + %63 = icmp eq i32 %.0, 0 + br i1 %63, label %.loopexit, label %.lr.ph41, !llvm.loop !175 .preheader: ; preds = %.preheader.lr.ph, %._crit_edge - %62 = phi i32 [ %68, %._crit_edge ], [ %51, %.preheader.lr.ph ] - %63 = phi i32 [ %69, %._crit_edge ], [ %54, %.preheader.lr.ph ] - %.13138 = phi i32 [ %70, %._crit_edge ], [ 0, %.preheader.lr.ph ] - %64 = icmp sgt i32 %63, 0 - br i1 %64, label %.lr.ph, label %._crit_edge + %64 = phi i32 [ %70, %._crit_edge ], [ %51, %.preheader.lr.ph ] + %65 = phi i32 [ %71, %._crit_edge ], [ %54, %.preheader.lr.ph ] + %.13138 = phi i32 [ %72, %._crit_edge ], [ 0, %.preheader.lr.ph ] + %66 = icmp sgt i32 %65, 0 + br i1 %66, label %.lr.ph, label %._crit_edge .lr.ph: ; preds = %.preheader, %.lr.ph - %.137 = phi i32 [ %65, %.lr.ph ], [ 0, %.preheader ] + %.137 = phi i32 [ %67, %.lr.ph ], [ 0, %.preheader ] tail call void @stbte__drag_update(ptr noundef nonnull %0, i32 noundef %.137, i32 noundef %.13138, i32 noundef %.011.i) - %65 = add nuw nsw i32 %.137, 1 - %66 = load i32, ptr %53, align 8, !tbaa !29 - %67 = icmp slt i32 %65, %66 - br i1 %67, label %.lr.ph, label %._crit_edge.loopexit, !llvm.loop !176 + %67 = add nuw nsw i32 %.137, 1 + %68 = load i32, ptr %53, align 8, !tbaa !29 + %69 = icmp slt i32 %67, %68 + br i1 %69, label %.lr.ph, label %._crit_edge.loopexit, !llvm.loop !176 ._crit_edge.loopexit: ; preds = %.lr.ph %.pre = load i32, ptr %50, align 4, !tbaa !30 br label %._crit_edge ._crit_edge: ; preds = %._crit_edge.loopexit, %.preheader - %68 = phi i32 [ %.pre, %._crit_edge.loopexit ], [ %62, %.preheader ] - %69 = phi i32 [ %66, %._crit_edge.loopexit ], [ %63, %.preheader ] - %70 = add nuw nsw i32 %.13138, 1 - %71 = icmp slt i32 %70, %68 - br i1 %71, label %.preheader, label %.loopexit34, !llvm.loop !177 + %70 = phi i32 [ %.pre, %._crit_edge.loopexit ], [ %64, %.preheader ] + %71 = phi i32 [ %68, %._crit_edge.loopexit ], [ %65, %.preheader ] + %72 = add nuw nsw i32 %.13138, 1 + %73 = icmp slt i32 %72, %70 + br i1 %73, label %.preheader, label %.loopexit34, !llvm.loop !177 .loopexit34: ; preds = %._crit_edge, %.loopexit, %.lr.ph45, %.preheader.lr.ph, %.preheader35, %56 - %72 = load i32, ptr getelementptr inbounds nuw (i8, ptr @stbte__ui, i64 5292), align 4, !tbaa !76 - %.not.i33 = icmp eq i32 %72, 0 + %74 = load i32, ptr getelementptr inbounds nuw (i8, ptr @stbte__ui, i64 5292), align 4, !tbaa !76 + %.not.i33 = icmp eq i32 %74, 0 br i1 %.not.i33, label %stbte__end_undo.exit, label %73 73: ; preds = %.loopexit34 @@ -8282,7 +8282,7 @@ stbte__should_copy_properties.exit: ; preds = %19, %.lr.ph.i, %23, store i32 %84, ptr %42, align 8, !tbaa !41 br label %85 -85: ; preds = %82, %73 +75: ; preds = %82, %73 %86 = phi i32 [ %76, %82 ], [ %74, %73 ] %87 = sext i32 %86 to i64 %88 = getelementptr inbounds i16, ptr %77, i64 %87 @@ -8292,21 +8292,21 @@ stbte__should_copy_properties.exit: ; preds = %19, %.lr.ph.i, %23, stbte__end_undo.exit: ; preds = %.loopexit34, %85 store i32 1, ptr getelementptr inbounds nuw (i8, ptr @stbte__ui, i64 5296), align 8, !tbaa !106 - %89 = load i32, ptr getelementptr inbounds nuw (i8, ptr @stbte__ui, i64 5284), align 4, !tbaa !171 - store i32 %89, ptr getelementptr inbounds nuw (i8, ptr @stbte__ui, i64 5300), align 4, !tbaa !107 - %90 = load i32, ptr getelementptr inbounds nuw (i8, ptr @stbte__ui, i64 5288), align 8, !tbaa !172 - store i32 %90, ptr getelementptr inbounds nuw (i8, ptr @stbte__ui, i64 5304), align 8, !tbaa !109 - %91 = load i32, ptr getelementptr inbounds nuw (i8, ptr @stbte__ui, i64 5268), align 4, !tbaa !167 - %92 = add i32 %89, -1 - %93 = add i32 %92, %91 - store i32 %93, ptr getelementptr inbounds nuw (i8, ptr @stbte__ui, i64 5308), align 4, !tbaa !108 - %94 = load i32, ptr getelementptr inbounds nuw (i8, ptr @stbte__ui, i64 5272), align 8, !tbaa !168 - %95 = add i32 %90, -1 - %96 = add i32 %95, %94 - store i32 %96, ptr getelementptr inbounds nuw (i8, ptr @stbte__ui, i64 5312), align 8, !tbaa !110 - br label %97 - -97: ; preds = %stbte__should_copy_properties.exit, %stbte__end_undo.exit + %91 = load i32, ptr getelementptr inbounds nuw (i8, ptr @stbte__ui, i64 5284), align 4, !tbaa !171 + store i32 %91, ptr getelementptr inbounds nuw (i8, ptr @stbte__ui, i64 5300), align 4, !tbaa !107 + %92 = load i32, ptr getelementptr inbounds nuw (i8, ptr @stbte__ui, i64 5288), align 8, !tbaa !172 + store i32 %92, ptr getelementptr inbounds nuw (i8, ptr @stbte__ui, i64 5304), align 8, !tbaa !109 + %93 = load i32, ptr getelementptr inbounds nuw (i8, ptr @stbte__ui, i64 5268), align 4, !tbaa !167 + %94 = add i32 %91, -1 + %95 = add i32 %94, %93 + store i32 %95, ptr getelementptr inbounds nuw (i8, ptr @stbte__ui, i64 5308), align 4, !tbaa !108 + %96 = load i32, ptr getelementptr inbounds nuw (i8, ptr @stbte__ui, i64 5272), align 8, !tbaa !168 + %97 = add i32 %92, -1 + %98 = add i32 %97, %96 + store i32 %98, ptr getelementptr inbounds nuw (i8, ptr @stbte__ui, i64 5312), align 8, !tbaa !110 + br label %99 + +99: ; preds = %stbte__should_copy_properties.exit, %stbte__end_undo.exit ret void } diff --git a/bench/wireshark/optimized/packet-signal-pdu.ll b/bench/wireshark/optimized/packet-signal-pdu.ll index 5bbc874293d..06583e18008 100644 --- a/bench/wireshark/optimized/packet-signal-pdu.ll +++ b/bench/wireshark/optimized/packet-signal-pdu.ll @@ -6049,8 +6049,8 @@ dissect_spdu_payload_signal.exit.thread: ; preds = %119 194: ; preds = %184, %.lr.ph.split.i.i %.155.i.i = phi i64 [ %193, %184 ], [ %.05465.i.i, %.lr.ph.split.i.i ] %195 = add nsw i32 %.05664.i.i, -1 - %exitcond79.not.i.i = icmp eq i32 %.05664.i.i, %.083131 - br i1 %exitcond79.not.i.i, label %dissect_shifted_and_shortened_uint.exit.i, label %.lr.ph.split.i.i, !llvm.loop !32 + %.not.not.i.i = icmp eq i32 %.05664.i.i, %.083131 + br i1 %.not.not.i.i, label %dissect_shifted_and_shortened_uint.exit.i, label %.lr.ph.split.i.i, !llvm.loop !32 .lr.ph69.split.i.i: ; preds = %.lr.ph69.split.i.preheader.i, %.lr.ph69.split.i.i %.15767.i310.i = phi i32 [ %202, %.lr.ph69.split.i.i ], [ %.083131, %.lr.ph69.split.i.preheader.i ] diff --git a/bench/wireshark/optimized/tvbuff_lz77huff.ll b/bench/wireshark/optimized/tvbuff_lz77huff.ll index 7d820840e09..438b6685a8c 100644 --- a/bench/wireshark/optimized/tvbuff_lz77huff.ll +++ b/bench/wireshark/optimized/tvbuff_lz77huff.ll @@ -186,14 +186,14 @@ define noundef ptr @tvb_uncompress_lz77huff(ptr noundef %0, i32 noundef %1, i32 %umin.i.i.i = zext i1 %77 to i32 br label %78 -78: ; preds = %95, %.preheader.i.i.i +77: ; preds = %95, %.preheader.i.i.i %.028.i.i.i = phi i32 [ %80, %95 ], [ %73, %.preheader.i.i.i ] %.027.i.i.i = phi ptr [ %98, %95 ], [ %31, %.preheader.i.i.i ] %.026.i.i.i = phi i32 [ %.1.i.i.i, %95 ], [ %76, %.preheader.i.i.i ] - %exitcond.not.i.i.i = icmp eq i32 %.028.i.i.i, %umin.i.i.i - br i1 %exitcond.not.i.i.i, label %100, label %79 + %78 = icmp eq i32 %.028.i.i.i, %umin.i.i.i + br i1 %78, label %100, label %79 -79: ; preds = %78 +79: ; preds = %77 %80 = add nsw i32 %.028.i.i.i, -1 %81 = lshr i32 %75, %80 %82 = and i32 %81, 1 @@ -227,9 +227,9 @@ define noundef ptr @tvb_uncompress_lz77huff(ptr noundef %0, i32 noundef %1, i32 %.not6.i.i.i.i = icmp uge ptr %98, %31 %99 = icmp ult ptr %98, %64 %or.cond.i.i.i = and i1 %.not6.i.i.i.i, %99 - br i1 %or.cond.i.i.i, label %78, label %PrefixCodeTreeRebuild.exit.thread.i, !llvm.loop !10 + br i1 %or.cond.i.i.i, label %77, label %PrefixCodeTreeRebuild.exit.thread.i, !llvm.loop !10 -100: ; preds = %78 +100: ; preds = %77 %101 = trunc nuw i32 %.05364.i.i to i16 %102 = getelementptr inbounds nuw i8, ptr %.027.i.i.i, i64 4 %103 = and i32 %75, 1 diff --git a/bench/yalantinglibs/optimized/test_messages_proto2.pb.ll b/bench/yalantinglibs/optimized/test_messages_proto2.pb.ll index 9f99bac42a8..8f5faba1af6 100644 --- a/bench/yalantinglibs/optimized/test_messages_proto2.pb.ll +++ b/bench/yalantinglibs/optimized/test_messages_proto2.pb.ll @@ -8729,84 +8729,84 @@ if.end4: ; preds = %_ZNK22protobuf_test call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %it.i) %vtable.i = load ptr, ptr %map_string_nested_message_, align 8 %vfn.i = getelementptr inbounds nuw i8, ptr %vtable.i, i64 152 - %8 = load ptr, ptr %vfn.i, align 8 + %7 = load ptr, ptr %vfn.i, align 8 %call.i1 = tail call noundef nonnull align 8 dereferenceable(24) ptr %8(ptr noundef nonnull align 8 dereferenceable(96) %map_string_nested_message_) tail call void @llvm.experimental.noalias.scope.decl(metadata !31) %elements_.i = getelementptr inbounds nuw i8, ptr %call.i1, i64 16 - %9 = load ptr, ptr %elements_.i, align 8, !noalias !31 - %index_of_first_non_null_.i.i.i = getelementptr inbounds nuw i8, ptr %9, i64 24 - %10 = load i64, ptr %index_of_first_non_null_.i.i.i, align 8, !noalias !34 - %num_buckets_14.i.i.i.i = getelementptr inbounds nuw i8, ptr %9, i64 8 - %11 = load i64, ptr %num_buckets_14.i.i.i.i, align 8, !noalias !34 - %cmp153.i.i.i.i = icmp ult i64 %10, %11 + %8 = load ptr, ptr %elements_.i, align 8, !noalias !31 + %index_of_first_non_null_.i.i.i = getelementptr inbounds nuw i8, ptr %8, i64 24 + %9 = load i64, ptr %index_of_first_non_null_.i.i.i, align 8, !noalias !34 + %num_buckets_14.i.i.i.i = getelementptr inbounds nuw i8, ptr %8, i64 8 + %10 = load i64, ptr %num_buckets_14.i.i.i.i, align 8, !noalias !34 + %cmp153.i.i.i.i = icmp ult i64 %9, %10 br i1 %cmp153.i.i.i.i, label %for.body.lr.ph.i.i.i.i, label %if.end7 for.body.lr.ph.i.i.i.i: ; preds = %if.end4 - %table_.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %9, i64 32 - %12 = load ptr, ptr %table_.i.i.i.i.i, align 8, !noalias !34 + %table_.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %8, i64 32 + %11 = load ptr, ptr %table_.i.i.i.i.i, align 8, !noalias !34 br label %for.body.i.i.i.i for.body.i.i.i.i: ; preds = %for.inc.i.i.i.i, %for.body.lr.ph.i.i.i.i - %ref.tmp2.sroa.4.0.i = phi i64 [ %10, %for.body.lr.ph.i.i.i.i ], [ %inc.i.i.i.i, %for.inc.i.i.i.i ] - %arrayidx.i.i.i.i.i.i = getelementptr inbounds ptr, ptr %12, i64 %ref.tmp2.sroa.4.0.i - %13 = load ptr, ptr %arrayidx.i.i.i.i.i.i, align 8, !noalias !34 - %cmp.not.i.i.i.i.i.i = icmp eq ptr %13, null + %ref.tmp2.sroa.4.0.i = phi i64 [ %9, %for.body.lr.ph.i.i.i.i ], [ %inc.i.i.i.i, %for.inc.i.i.i.i ] + %arrayidx.i.i.i.i.i.i = getelementptr inbounds ptr, ptr %11, i64 %ref.tmp2.sroa.4.0.i + %12 = load ptr, ptr %arrayidx.i.i.i.i.i.i, align 8, !noalias !34 + %cmp.not.i.i.i.i.i.i = icmp eq ptr %12, null br i1 %cmp.not.i.i.i.i.i.i, label %for.inc.i.i.i.i, label %_ZNK6google8protobuf3MapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN22protobuf_test_messages6proto232TestAllTypesProto2_NestedMessageEE8InnerMap24TableEntryIsNonEmptyListEm.exit.i.i.i.i _ZNK6google8protobuf3MapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN22protobuf_test_messages6proto232TestAllTypesProto2_NestedMessageEE8InnerMap24TableEntryIsNonEmptyListEm.exit.i.i.i.i: ; preds = %for.body.i.i.i.i %xor.i.i.i.i.i.i = xor i64 %ref.tmp2.sroa.4.0.i, 1 - %arrayidx2.i.i.i.i.i.i = getelementptr inbounds ptr, ptr %12, i64 %xor.i.i.i.i.i.i - %14 = load ptr, ptr %arrayidx2.i.i.i.i.i.i, align 8, !noalias !34 - %cmp3.i.i.not.i.i.i.i = icmp eq ptr %13, %14 + %arrayidx2.i.i.i.i.i.i = getelementptr inbounds ptr, ptr %11, i64 %xor.i.i.i.i.i.i + %13 = load ptr, ptr %arrayidx2.i.i.i.i.i.i, align 8, !noalias !34 + %cmp3.i.i.not.i.i.i.i = icmp eq ptr %12, %13 br i1 %cmp3.i.i.not.i.i.i.i, label %_ZNK6google8protobuf3MapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN22protobuf_test_messages6proto232TestAllTypesProto2_NestedMessageEE5beginEv.exit, label %_ZNK6google8protobuf3MapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN22protobuf_test_messages6proto232TestAllTypesProto2_NestedMessageEE5beginEv.exit.thread69 _ZNK6google8protobuf3MapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN22protobuf_test_messages6proto232TestAllTypesProto2_NestedMessageEE5beginEv.exit.thread69: ; preds = %_ZNK6google8protobuf3MapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN22protobuf_test_messages6proto232TestAllTypesProto2_NestedMessageEE8InnerMap24TableEntryIsNonEmptyListEm.exit.i.i.i.i - store ptr %13, ptr %it.i, align 8, !alias.scope !37 + store ptr %12, ptr %it.i, align 8, !alias.scope !37 %ref.tmp.sroa.2.0.agg.result.sroa_idx.i.i72 = getelementptr inbounds nuw i8, ptr %it.i, i64 8 - store ptr %9, ptr %ref.tmp.sroa.2.0.agg.result.sroa_idx.i.i72, align 8, !alias.scope !37 + store ptr %8, ptr %ref.tmp.sroa.2.0.agg.result.sroa_idx.i.i72, align 8, !alias.scope !37 %ref.tmp.sroa.3.0.agg.result.sroa_idx.i.i73 = getelementptr inbounds nuw i8, ptr %it.i, i64 16 store i64 %ref.tmp2.sroa.4.0.i, ptr %ref.tmp.sroa.3.0.agg.result.sroa_idx.i.i73, align 8, !alias.scope !37 br label %for.body.i4.preheader for.inc.i.i.i.i: ; preds = %for.body.i.i.i.i %inc.i.i.i.i = add i64 %ref.tmp2.sroa.4.0.i, 1 - %exitcond.not.i.i = icmp eq i64 %inc.i.i.i.i, %11 + %exitcond.not.i.i = icmp eq i64 %inc.i.i.i.i, %10 br i1 %exitcond.not.i.i, label %if.end7, label %for.body.i.i.i.i, !llvm.loop !40 _ZNK6google8protobuf3MapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN22protobuf_test_messages6proto232TestAllTypesProto2_NestedMessageEE5beginEv.exit: ; preds = %_ZNK6google8protobuf3MapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN22protobuf_test_messages6proto232TestAllTypesProto2_NestedMessageEE8InnerMap24TableEntryIsNonEmptyListEm.exit.i.i.i.i - %_M_left.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %13, i64 32 - %15 = load ptr, ptr %_M_left.i.i.i.i.i.i, align 8, !noalias !34 - %_M_storage.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %15, i64 32 - %16 = load ptr, ptr %_M_storage.i.i.i.i.i.i, align 8, !noalias !34 - store ptr %16, ptr %it.i, align 8, !alias.scope !37 + %_M_left.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %12, i64 32 + %14 = load ptr, ptr %_M_left.i.i.i.i.i.i, align 8, !noalias !34 + %_M_storage.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %14, i64 32 + %15 = load ptr, ptr %_M_storage.i.i.i.i.i.i, align 8, !noalias !34 + store ptr %15, ptr %it.i, align 8, !alias.scope !37 %ref.tmp.sroa.2.0.agg.result.sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %it.i, i64 8 - store ptr %9, ptr %ref.tmp.sroa.2.0.agg.result.sroa_idx.i.i, align 8, !alias.scope !37 + store ptr %8, ptr %ref.tmp.sroa.2.0.agg.result.sroa_idx.i.i, align 8, !alias.scope !37 %ref.tmp.sroa.3.0.agg.result.sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %it.i, i64 16 store i64 %ref.tmp2.sroa.4.0.i, ptr %ref.tmp.sroa.3.0.agg.result.sroa_idx.i.i, align 8, !alias.scope !37 - %cmp.i.i.i50.not60 = icmp eq ptr %16, null + %cmp.i.i.i50.not60 = icmp eq ptr %15, null br i1 %cmp.i.i.i50.not60, label %if.end7, label %for.body.i4.preheader for.body.i4.preheader: ; preds = %_ZNK6google8protobuf3MapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN22protobuf_test_messages6proto232TestAllTypesProto2_NestedMessageEE5beginEv.exit.thread69, %_ZNK6google8protobuf3MapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN22protobuf_test_messages6proto232TestAllTypesProto2_NestedMessageEE5beginEv.exit - %.ph = phi ptr [ %16, %_ZNK6google8protobuf3MapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN22protobuf_test_messages6proto232TestAllTypesProto2_NestedMessageEE5beginEv.exit ], [ %13, %_ZNK6google8protobuf3MapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN22protobuf_test_messages6proto232TestAllTypesProto2_NestedMessageEE5beginEv.exit.thread69 ] + %.ph = phi ptr [ %15, %_ZNK6google8protobuf3MapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN22protobuf_test_messages6proto232TestAllTypesProto2_NestedMessageEE5beginEv.exit ], [ %12, %_ZNK6google8protobuf3MapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN22protobuf_test_messages6proto232TestAllTypesProto2_NestedMessageEE5beginEv.exit.thread69 ] br label %for.body.i4 for.body.i4: ; preds = %for.body.i4.preheader, %for.inc.i - %17 = phi ptr [ %.pr, %for.inc.i ], [ %.ph, %for.body.i4.preheader ] - %v_.i.i.i = getelementptr inbounds nuw i8, ptr %17, i64 8 - %18 = load ptr, ptr %v_.i.i.i, align 8 - %_has_bits_.i.i39 = getelementptr inbounds nuw i8, ptr %18, i64 48 - %19 = load i32, ptr %_has_bits_.i.i39, align 4 - %and.i.i40 = and i32 %19, 1 + %16 = phi ptr [ %.pr, %for.inc.i ], [ %.ph, %for.body.i4.preheader ] + %v_.i.i.i = getelementptr inbounds nuw i8, ptr %16, i64 8 + %17 = load ptr, ptr %v_.i.i.i, align 8 + %_has_bits_.i.i39 = getelementptr inbounds nuw i8, ptr %17, i64 48 + %18 = load i32, ptr %_has_bits_.i.i39, align 4 + %and.i.i40 = and i32 %18, 1 %cmp.i.i41.not = icmp eq i32 %and.i.i40, 0 - %corecursive_10.i.i42 = getelementptr inbounds nuw i8, ptr %18, i64 56 - %20 = load ptr, ptr %corecursive_10.i.i42, align 8 - %cmp11.i.i43 = icmp ne ptr %20, null - %21 = select i1 %cmp.i.i41.not, i1 true, i1 %cmp11.i.i43 - call void @llvm.assume(i1 %21) + %corecursive_10.i.i42 = getelementptr inbounds nuw i8, ptr %17, i64 56 + %19 = load ptr, ptr %corecursive_10.i.i42, align 8 + %cmp11.i.i43 = icmp ne ptr %19, null + %20 = select i1 %cmp.i.i41.not, i1 true, i1 %cmp11.i.i43 + call void @llvm.assume(i1 %20) br i1 %cmp.i.i41.not, label %for.inc.i, label %if.then.i47 if.then.i47: ; preds = %for.body.i4 - %call2.i = call noundef zeroext i1 @_ZNK22protobuf_test_messages6proto218TestAllTypesProto213IsInitializedEv(ptr noundef nonnull align 8 dereferenceable(3152) %20) + %call2.i = call noundef zeroext i1 @_ZNK22protobuf_test_messages6proto218TestAllTypesProto213IsInitializedEv(ptr noundef nonnull align 8 dereferenceable(3152) %19) br i1 %call2.i, label %for.inc.i, label %_ZN6google8protobuf8internal17AllAreInitializedIN22protobuf_test_messages6proto255TestAllTypesProto2_MapStringNestedMessageEntry_DoNotUseENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS4_32TestAllTypesProto2_NestedMessageELNS1_14WireFormatLite9FieldTypeE9ELSE_11ELi0EEEbRKNS1_8MapFieldIT_T0_T1_XT2_EXT3_EXT4_EEE.exit for.inc.i: ; preds = %for.body.i4, %if.then.i47 @@ -8822,30 +8822,30 @@ _ZN6google8protobuf8internal17AllAreInitializedIN22protobuf_test_messages6proto2 if.end7: ; preds = %for.inc.i.i.i.i, %for.inc.i, %if.end4, %_ZNK6google8protobuf3MapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN22protobuf_test_messages6proto232TestAllTypesProto2_NestedMessageEE5beginEv.exit call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %it.i) %_has_bits_.i = getelementptr inbounds nuw i8, ptr %this, i64 40 - %22 = load i32, ptr %_has_bits_.i, align 8 - %and.i = and i32 %22, 64 + %21 = load i32, ptr %_has_bits_.i, align 8 + %and.i = and i32 %21, 64 %cmp.i6.not = icmp eq i32 %and.i, 0 %optional_nested_message_10.i = getelementptr inbounds nuw i8, ptr %this, i64 2872 - %23 = load ptr, ptr %optional_nested_message_10.i, align 8 - %cmp11.i = icmp ne ptr %23, null - %24 = select i1 %cmp.i6.not, i1 true, i1 %cmp11.i - call void @llvm.assume(i1 %24) + %22 = load ptr, ptr %optional_nested_message_10.i, align 8 + %cmp11.i = icmp ne ptr %22, null + %23 = select i1 %cmp.i6.not, i1 true, i1 %cmp11.i + call void @llvm.assume(i1 %23) br i1 %cmp.i6.not, label %if.end13, label %if.then9 if.then9: ; preds = %if.end7 - %_has_bits_.i.i = getelementptr inbounds nuw i8, ptr %23, i64 16 - %25 = load i32, ptr %_has_bits_.i.i, align 4 - %and.i.i = and i32 %25, 1 + %_has_bits_.i.i = getelementptr inbounds nuw i8, ptr %22, i64 16 + %24 = load i32, ptr %_has_bits_.i.i, align 4 + %and.i.i = and i32 %24, 1 %cmp.i.i.not = icmp eq i32 %and.i.i, 0 - %corecursive_10.i.i = getelementptr inbounds nuw i8, ptr %23, i64 24 - %26 = load ptr, ptr %corecursive_10.i.i, align 8 - %cmp11.i.i = icmp ne ptr %26, null - %27 = select i1 %cmp.i.i.not, i1 true, i1 %cmp11.i.i - call void @llvm.assume(i1 %27) + %corecursive_10.i.i = getelementptr inbounds nuw i8, ptr %22, i64 24 + %25 = load ptr, ptr %corecursive_10.i.i, align 8 + %cmp11.i.i = icmp ne ptr %25, null + %26 = select i1 %cmp.i.i.not, i1 true, i1 %cmp11.i.i + call void @llvm.assume(i1 %26) br i1 %cmp.i.i.not, label %if.end13, label %if.then.i if.then.i: ; preds = %if.then9 - %call2.i8 = call noundef zeroext i1 @_ZNK22protobuf_test_messages6proto218TestAllTypesProto213IsInitializedEv(ptr noundef nonnull align 8 dereferenceable(3152) %26) + %call2.i8 = call noundef zeroext i1 @_ZNK22protobuf_test_messages6proto218TestAllTypesProto213IsInitializedEv(ptr noundef nonnull align 8 dereferenceable(3152) %25) br i1 %call2.i8, label %if.then.i.if.end13_crit_edge, label %return if.then.i.if.end13_crit_edge: ; preds = %if.then.i @@ -8853,42 +8853,42 @@ if.then.i.if.end13_crit_edge: ; preds = %if.then.i br label %if.end13 if.end13: ; preds = %if.then.i.if.end13_crit_edge, %if.then9, %if.end7 - %28 = phi i32 [ %.pre, %if.then.i.if.end13_crit_edge ], [ %22, %if.then9 ], [ %22, %if.end7 ] - %and.i10 = and i32 %28, 256 + %27 = phi i32 [ %.pre, %if.then.i.if.end13_crit_edge ], [ %21, %if.then9 ], [ %21, %if.end7 ] + %and.i10 = and i32 %27, 256 %cmp.i11.not = icmp eq i32 %and.i10, 0 %recursive_message_10.i = getelementptr inbounds nuw i8, ptr %this, i64 2888 - %29 = load ptr, ptr %recursive_message_10.i, align 8 - %cmp11.i12 = icmp ne ptr %29, null - %30 = select i1 %cmp.i11.not, i1 true, i1 %cmp11.i12 - call void @llvm.assume(i1 %30) + %28 = load ptr, ptr %recursive_message_10.i, align 8 + %cmp11.i12 = icmp ne ptr %28, null + %29 = select i1 %cmp.i11.not, i1 true, i1 %cmp11.i12 + call void @llvm.assume(i1 %29) br i1 %cmp.i11.not, label %if.end19, label %if.then15 if.then15: ; preds = %if.end13 - %call16 = call noundef zeroext i1 @_ZNK22protobuf_test_messages6proto218TestAllTypesProto213IsInitializedEv(ptr noundef nonnull align 8 dereferenceable(3152) %29) + %call16 = call noundef zeroext i1 @_ZNK22protobuf_test_messages6proto218TestAllTypesProto213IsInitializedEv(ptr noundef nonnull align 8 dereferenceable(3152) %28) br i1 %call16, label %if.end19, label %return if.end19: ; preds = %if.then15, %if.end13 %_oneof_case_.i = getelementptr inbounds nuw i8, ptr %this, i64 3144 - %31 = load i32, ptr %_oneof_case_.i, align 8 - %cond = icmp eq i32 %31, 112 + %30 = load i32, ptr %_oneof_case_.i, align 8 + %cond = icmp eq i32 %30, 112 br i1 %cond, label %if.then23, label %return if.then23: ; preds = %if.end19 %oneof_field_.i.i = getelementptr inbounds nuw i8, ptr %this, i64 3136 - %32 = load ptr, ptr %oneof_field_.i.i, align 8 - %_has_bits_.i.i15 = getelementptr inbounds nuw i8, ptr %32, i64 16 - %33 = load i32, ptr %_has_bits_.i.i15, align 4 - %and.i.i16 = and i32 %33, 1 + %31 = load ptr, ptr %oneof_field_.i.i, align 8 + %_has_bits_.i.i15 = getelementptr inbounds nuw i8, ptr %31, i64 16 + %32 = load i32, ptr %_has_bits_.i.i15, align 4 + %and.i.i16 = and i32 %32, 1 %cmp.i.i17.not = icmp eq i32 %and.i.i16, 0 - %corecursive_10.i.i18 = getelementptr inbounds nuw i8, ptr %32, i64 24 - %34 = load ptr, ptr %corecursive_10.i.i18, align 8 - %cmp11.i.i19 = icmp ne ptr %34, null - %35 = select i1 %cmp.i.i17.not, i1 true, i1 %cmp11.i.i19 - call void @llvm.assume(i1 %35) + %corecursive_10.i.i18 = getelementptr inbounds nuw i8, ptr %31, i64 24 + %33 = load ptr, ptr %corecursive_10.i.i18, align 8 + %cmp11.i.i19 = icmp ne ptr %33, null + %34 = select i1 %cmp.i.i17.not, i1 true, i1 %cmp11.i.i19 + call void @llvm.assume(i1 %34) br i1 %cmp.i.i17.not, label %_ZNK22protobuf_test_messages6proto232TestAllTypesProto2_NestedMessage13IsInitializedEv.exit26.thread, label %if.then.i23 if.then.i23: ; preds = %if.then23 - %call2.i25 = call noundef zeroext i1 @_ZNK22protobuf_test_messages6proto218TestAllTypesProto213IsInitializedEv(ptr noundef nonnull align 8 dereferenceable(3152) %34) + %call2.i25 = call noundef zeroext i1 @_ZNK22protobuf_test_messages6proto218TestAllTypesProto213IsInitializedEv(ptr noundef nonnull align 8 dereferenceable(3152) %33) br i1 %call2.i25, label %_ZNK22protobuf_test_messages6proto232TestAllTypesProto2_NestedMessage13IsInitializedEv.exit26.thread, label %return _ZNK22protobuf_test_messages6proto232TestAllTypesProto2_NestedMessage13IsInitializedEv.exit26.thread: ; preds = %if.then23, %if.then.i23 diff --git a/bench/yosys/optimized/preproc.ll b/bench/yosys/optimized/preproc.ll index a571e7d9a19..27190cabed3 100644 --- a/bench/yosys/optimized/preproc.ll +++ b/bench/yosys/optimized/preproc.ll @@ -6309,12 +6309,12 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit128.i: ; preds = % call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %27) #27 br label %.loopexit.split-lp.i -1814: ; preds = %1815, %.preheader.i +.preheader.i: ; preds = %1815, %.preheader.i %.327.i = phi i32 [ %1816, %1815 ], [ %.125.i, %.preheader.i ] - %exitcond.not.i = icmp eq i32 %.327.i, %smin.i - br i1 %exitcond.not.i, label %1817, label %1815 + %1814 = icmp eq i32 %.327.i, %smin.i + br i1 %1814, label %1817, label %1815 -1815: ; preds = %1814 +1815: ; preds = %.preheader.i %1816 = add i32 %.327.i, -1 invoke fastcc void @_ZN5YosysL11return_charEc(i8 noundef signext 10) to label %1814 unwind label %.loopexit.i, !llvm.loop !140 @@ -6334,7 +6334,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit128.i: ; preds = % cleanup br label %.loopexit.split-lp.i -1817: ; preds = %1814 +1817: ; preds = %.preheader.i %1818 = load ptr, ptr %21, align 8, !tbaa !12 %1819 = load i8, ptr %1818, align 1, !tbaa !18 %1820 = sext i8 %1819 to i32 @@ -8574,7 +8574,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc.exit205: ; preds = %_Z %.071 = phi i8 [ 0, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc.exit205 ], [ %432, %460 ] %407 = load ptr, ptr @_ZN5YosysL12input_bufferB5cxx11E, align 8, !tbaa !6 %408 = icmp eq ptr %407, @_ZN5YosysL12input_bufferB5cxx11E - br i1 %408, label %_ZN5YosysL9next_charEv.exit216.thread, label %.lr.ph.preheader.i206 + br i1 %408, label %_ZN5YosysL9next_charEv.exit216.thread.preheader, label %.lr.ph.preheader.i206 .lr.ph.preheader.i206: ; preds = %406 %.pre4.i207 = load i64, ptr @_ZN5YosysL18input_buffer_charpE, align 8, !tbaa !33 @@ -8622,7 +8622,7 @@ tailrecurse.backedge.i210: ; preds = %428, %_ZNSt7__cxx11 %425 = phi ptr [ %.pre5.i214, %_ZNSt7__cxx114listINS_12basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9pop_frontEv.exit.i212 ], [ %409, %428 ] %426 = phi i64 [ %.pre.i213, %_ZNSt7__cxx114listINS_12basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9pop_frontEv.exit.i212 ], [ %429, %428 ] %427 = icmp eq ptr %425, @_ZN5YosysL12input_bufferB5cxx11E - br i1 %427, label %_ZN5YosysL9next_charEv.exit216.thread, label %.lr.ph.i208 + br i1 %427, label %_ZN5YosysL9next_charEv.exit216.thread.preheader, label %.lr.ph.i208 428: ; preds = %.lr.ph.i208 %429 = add i64 %410, 1 @@ -8632,7 +8632,7 @@ tailrecurse.backedge.i210: ; preds = %428, %_ZNSt7__cxx11 %432 = load i8, ptr %431, align 1, !tbaa !18 switch i8 %432, label %447 [ i8 13, label %tailrecurse.backedge.i210 - i8 0, label %_ZN5YosysL9next_charEv.exit216.thread + i8 0, label %_ZN5YosysL9next_charEv.exit216.thread.preheader i8 10, label %433 ] @@ -8721,19 +8721,19 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc.exit224: ; preds = %_Z %463 = icmp eq i8 %.071, 42 %464 = icmp eq i8 %432, 47 %or.cond14 = and i1 %463, %464 - br i1 %or.cond14, label %_ZN5YosysL9next_charEv.exit216.thread, label %406, !llvm.loop !151 + br i1 %or.cond14, label %_ZN5YosysL9next_charEv.exit216.thread.preheader, label %406, !llvm.loop !151 -_ZN5YosysL9next_charEv.exit216.thread: ; preds = %406, %460, %428, %tailrecurse.backedge.i210 - %.1 = phi i32 [ %.072, %tailrecurse.backedge.i210 ], [ %.072, %428 ], [ %.072, %406 ], [ %.2, %460 ] +_ZN5YosysL9next_charEv.exit216.thread.preheader: ; preds = %406, %460, %428, %tailrecurse.backedge.i210 + %.3.ph = phi i32 [ %.072, %tailrecurse.backedge.i210 ], [ %.072, %428 ], [ %.072, %406 ], [ %.2, %460 ] %smin = call i32 @llvm.smin.i32(i32 %.1, i32 0) br label %465 -465: ; preds = %466, %_ZN5YosysL9next_charEv.exit216.thread - %.3 = phi i32 [ %.1, %_ZN5YosysL9next_charEv.exit216.thread ], [ %467, %466 ] - %exitcond.not = icmp eq i32 %.3, %smin - br i1 %exitcond.not, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc.exit, label %466 +_ZN5YosysL9next_charEv.exit216.thread: ; preds = %466, %_ZN5YosysL9next_charEv.exit216.thread.preheader + %.3 = phi i32 [ %.3.ph, %_ZN5YosysL9next_charEv.exit216.thread ], [ %467, %466 ] + %465 = icmp eq i32 %.3, %smin + br i1 %465, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc.exit, label %466 -466: ; preds = %465 +466: ; preds = %_ZN5YosysL9next_charEv.exit216.thread %467 = add i32 %.3, -1 invoke fastcc void @_ZN5YosysL11return_charEc(i8 noundef signext 10) to label %465 unwind label %.loopexit303, !llvm.loop !152 @@ -8980,7 +8980,7 @@ tailrecurse.backedge.i248: ; preds = %556, %_ZNSt7__cxx11 i8 0, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc.exit ] -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc.exit: ; preds = %315, %tailrecurse.backedge.i174, %465, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc.exit169, %269, %tailrecurse.backedge.i159, %242, %tailrecurse.backedge.i148, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc.exit113, %111, %tailrecurse.backedge.i103, %530, %556, %tailrecurse.backedge.i248, %.invoke, %.preheader291, %.preheader, %293, %220, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKc.exit.i, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc.exit239, %470, %._crit_edge, %247, %_ZN5YosysL9next_charEv.exit124.thread +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc.exit: ; preds = %315, %tailrecurse.backedge.i174, %_ZN5YosysL9next_charEv.exit216.thread, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc.exit169, %269, %tailrecurse.backedge.i159, %242, %tailrecurse.backedge.i148, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc.exit113, %111, %tailrecurse.backedge.i103, %530, %556, %tailrecurse.backedge.i248, %.invoke, %.preheader291, %.preheader, %293, %220, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKc.exit.i, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc.exit239, %470, %._crit_edge, %247, %_ZN5YosysL9next_charEv.exit124.thread %561 = getelementptr inbounds nuw i8, ptr %0, i64 16 store ptr %561, ptr %0, align 8, !tbaa !30 %562 = load ptr, ptr %4, align 8, !tbaa !12 diff --git a/bench/zed-rs/optimized/1cwzjnrfv3j054rlb5kbvkj4j.ll b/bench/zed-rs/optimized/1cwzjnrfv3j054rlb5kbvkj4j.ll index 5e988bba080..c3fa0e6d29a 100644 --- a/bench/zed-rs/optimized/1cwzjnrfv3j054rlb5kbvkj4j.ll +++ b/bench/zed-rs/optimized/1cwzjnrfv3j054rlb5kbvkj4j.ll @@ -10175,8 +10175,8 @@ define hidden void @_ZN4core5slice4sort8unstable8heapsort8heapsort17h447a7e87def call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %9, ptr noundef nonnull align 8 dereferenceable(64) %3, i64 64, i1 false) call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %3) tail call fastcc void @_ZN4core5slice4sort8unstable8heapsort9sift_down17hfb1a6ce22a877fa5E(ptr noalias noundef nonnull align 8 %0, i64 noundef %8, i64 noundef 0) - %exitcond.not = icmp eq i64 %8, 1 - br i1 %exitcond.not, label %7, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h8ea56e715ebc26d3E.exit" + %10 = icmp eq i64 %8, 1 + br i1 %10, label %7, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h8ea56e715ebc26d3E.exit" } ; Function Attrs: nofree norecurse nosync nounwind nonlazybind memory(argmem: readwrite, inaccessiblemem: write) uwtable @@ -10244,7 +10244,7 @@ _ZN4core5slice4sort8unstable8heapsort9sift_down17hd2d2dbd7418ea724E.exit: ; pred %.not = icmp eq i64 %8, 0 br i1 %.not, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17he4cdd96493e6a785E.exit", label %.lr.ph -31: ; preds = %_ZN4core5slice4sort8unstable8heapsort9sift_down17hd2d2dbd7418ea724E.exit20 +"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17he4cdd96493e6a785E.exit.preheader": ; preds = %_ZN4core5slice4sort8unstable8heapsort9sift_down17hd2d2dbd7418ea724E.exit20 ret void "_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17he4cdd96493e6a785E.exit": ; preds = %_ZN4core5slice4sort8unstable8heapsort9sift_down17hd2d2dbd7418ea724E.exit, %_ZN4core5slice4sort8unstable8heapsort9sift_down17hd2d2dbd7418ea724E.exit20 @@ -10256,11 +10256,11 @@ _ZN4core5slice4sort8unstable8heapsort9sift_down17hd2d2dbd7418ea724E.exit: ; pred tail call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %0, ptr noundef nonnull align 8 dereferenceable(40) %33, i64 40, i1 false), !alias.scope !2216 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %33, ptr noundef nonnull align 8 dereferenceable(40) %4, i64 40, i1 false) call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %4) - %.not1.i11 = icmp ugt i64 %32, 1 - br i1 %.not1.i11, label %.lr.ph.i12, label %_ZN4core5slice4sort8unstable8heapsort9sift_down17hd2d2dbd7418ea724E.exit20 + %.not1.i1125 = icmp ugt i64 %32, 1 + br i1 %.not1.i1125, label %.lr.ph.i12.preheader, label %_ZN4core5slice4sort8unstable8heapsort9sift_down17hd2d2dbd7418ea724E.exit20 -.lr.ph.i12: ; preds = %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17he4cdd96493e6a785E.exit", %50 - %34 = phi i64 [ %52, %50 ], [ 1, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17he4cdd96493e6a785E.exit" ] +.lr.ph.i12.preheader: ; preds = %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17he4cdd96493e6a785E.exit", %50 + %33 = phi i64 [ %52, %50 ], [ 1, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17he4cdd96493e6a785E.exit" ] %35 = phi i64 [ %51, %50 ], [ 0, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17he4cdd96493e6a785E.exit" ] %.sroa.0.02.i13 = phi i64 [ %.sroa.04.0.i14, %50 ], [ 0, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17he4cdd96493e6a785E.exit" ] %36 = add nuw i64 %35, 2 @@ -10300,8 +10300,8 @@ _ZN4core5slice4sort8unstable8heapsort9sift_down17hd2d2dbd7418ea724E.exit: ; pred br i1 %.not.i17, label %.lr.ph.i12, label %_ZN4core5slice4sort8unstable8heapsort9sift_down17hd2d2dbd7418ea724E.exit20 _ZN4core5slice4sort8unstable8heapsort9sift_down17hd2d2dbd7418ea724E.exit20: ; preds = %44, %50, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17he4cdd96493e6a785E.exit" - %exitcond.not = icmp eq i64 %32, 1 - br i1 %exitcond.not, label %31, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17he4cdd96493e6a785E.exit" + %10 = icmp eq i64 %32, 1 + br i1 %10, label %31, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17he4cdd96493e6a785E.exit" } ; Function Attrs: nonlazybind uwtable diff --git a/bench/zed-rs/optimized/2qu3ksqe5t2g2a0ursek881ws.ll b/bench/zed-rs/optimized/2qu3ksqe5t2g2a0ursek881ws.ll index cd3dd3d92f4..866af9395ff 100644 --- a/bench/zed-rs/optimized/2qu3ksqe5t2g2a0ursek881ws.ll +++ b/bench/zed-rs/optimized/2qu3ksqe5t2g2a0ursek881ws.ll @@ -2341,7 +2341,7 @@ _ZN4core5slice4sort8unstable8heapsort9sift_down17h7e019d5f5bdf418aE.exit: ; pred %.not = icmp eq i64 %8, 0 br i1 %.not, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h122c446e6946bf45E.exit", label %.lr.ph -31: ; preds = %_ZN4core5slice4sort8unstable8heapsort9sift_down17h7e019d5f5bdf418aE.exit20 +"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h122c446e6946bf45E.exit.preheader": ; preds = %_ZN4core5slice4sort8unstable8heapsort9sift_down17h7e019d5f5bdf418aE.exit20 ret void "_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h122c446e6946bf45E.exit": ; preds = %_ZN4core5slice4sort8unstable8heapsort9sift_down17h7e019d5f5bdf418aE.exit, %_ZN4core5slice4sort8unstable8heapsort9sift_down17h7e019d5f5bdf418aE.exit20 @@ -2353,11 +2353,11 @@ _ZN4core5slice4sort8unstable8heapsort9sift_down17h7e019d5f5bdf418aE.exit: ; pred tail call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %0, ptr noundef nonnull align 8 dereferenceable(40) %33, i64 40, i1 false), !alias.scope !619 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %33, ptr noundef nonnull align 8 dereferenceable(40) %4, i64 40, i1 false) call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %4) - %.not1.i11 = icmp ugt i64 %32, 1 - br i1 %.not1.i11, label %.lr.ph.i12, label %_ZN4core5slice4sort8unstable8heapsort9sift_down17h7e019d5f5bdf418aE.exit20 + %.not1.i1125 = icmp ugt i64 %32, 1 + br i1 %.not1.i1125, label %.lr.ph.i12.preheader, label %_ZN4core5slice4sort8unstable8heapsort9sift_down17h7e019d5f5bdf418aE.exit20 -.lr.ph.i12: ; preds = %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h122c446e6946bf45E.exit", %50 - %34 = phi i64 [ %52, %50 ], [ 1, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h122c446e6946bf45E.exit" ] +.lr.ph.i12.preheader: ; preds = %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h122c446e6946bf45E.exit", %50 + %33 = phi i64 [ %52, %50 ], [ 1, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h122c446e6946bf45E.exit" ] %35 = phi i64 [ %51, %50 ], [ 0, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h122c446e6946bf45E.exit" ] %.sroa.0.02.i13 = phi i64 [ %.sroa.04.0.i14, %50 ], [ 0, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h122c446e6946bf45E.exit" ] %36 = add nuw i64 %35, 2 diff --git a/bench/zed-rs/optimized/4h84anocrn0e2zexjpu5utgbx.ll b/bench/zed-rs/optimized/4h84anocrn0e2zexjpu5utgbx.ll index 2d184243231..9fa9dfe7e0a 100644 --- a/bench/zed-rs/optimized/4h84anocrn0e2zexjpu5utgbx.ll +++ b/bench/zed-rs/optimized/4h84anocrn0e2zexjpu5utgbx.ll @@ -10590,12 +10590,12 @@ _ZN4core5slice4sort8unstable8heapsort9sift_down17h43bb4db940c3c020E.exit: ; pred %.not = icmp eq i64 %5, 0 br i1 %.not, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17ha99a00d83310a069E.exit", label %.lr.ph -26: ; preds = %_ZN4core5slice4sort8unstable8heapsort9sift_down17h43bb4db940c3c020E.exit20 +.lr.ph.i12.preheader: ; preds = %_ZN4core5slice4sort8unstable8heapsort9sift_down17h43bb4db940c3c020E.exit20 ret void -"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17ha99a00d83310a069E.exit": ; preds = %_ZN4core5slice4sort8unstable8heapsort9sift_down17h43bb4db940c3c020E.exit, %_ZN4core5slice4sort8unstable8heapsort9sift_down17h43bb4db940c3c020E.exit20 - %.sroa.46.023 = phi i64 [ %27, %_ZN4core5slice4sort8unstable8heapsort9sift_down17h43bb4db940c3c020E.exit20 ], [ %1, %_ZN4core5slice4sort8unstable8heapsort9sift_down17h43bb4db940c3c020E.exit ] - %27 = add i64 %.sroa.46.023, -1 +.lr.ph.i12: ; preds = %_ZN4core5slice4sort8unstable8heapsort9sift_down17h43bb4db940c3c020E.exit, %_ZN4core5slice4sort8unstable8heapsort9sift_down17h43bb4db940c3c020E.exit20 + %30 = phi i64 [ %27, %_ZN4core5slice4sort8unstable8heapsort9sift_down17h43bb4db940c3c020E.exit20 ], [ %1, %_ZN4core5slice4sort8unstable8heapsort9sift_down17h43bb4db940c3c020E.exit ] + %27 = add i64 %30, -1 %28 = getelementptr inbounds [0 x i64], ptr %0, i64 0, i64 %27 %.sroa.0.0.copyload.i.i = load i64, ptr %0, align 8, !alias.scope !1790 %29 = load i64, ptr %28, align 8, !alias.scope !1790 @@ -10639,9 +10639,9 @@ _ZN4core5slice4sort8unstable8heapsort9sift_down17h43bb4db940c3c020E.exit: ; pred %.not.i17 = icmp ult i64 %46, %27 br i1 %.not.i17, label %.lr.ph.i12, label %_ZN4core5slice4sort8unstable8heapsort9sift_down17h43bb4db940c3c020E.exit20 -_ZN4core5slice4sort8unstable8heapsort9sift_down17h43bb4db940c3c020E.exit20: ; preds = %40, %44, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17ha99a00d83310a069E.exit" +_ZN4core5slice4sort8unstable8heapsort9sift_down17h43bb4db940c3c020E.exit20: ; preds = %40, %44, %.lr.ph.i12 %exitcond.not = icmp eq i64 %27, 1 - br i1 %exitcond.not, label %26, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17ha99a00d83310a069E.exit" + br i1 %exitcond.not, label %26, label %.lr.ph.i12 } ; Function Attrs: inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read, inaccessiblemem: read) uwtable diff --git a/bench/zxing/optimized/ODDataBarExpandedBitDecoder.ll b/bench/zxing/optimized/ODDataBarExpandedBitDecoder.ll index c041972a2cd..33277618658 100644 --- a/bench/zxing/optimized/ODDataBarExpandedBitDecoder.ll +++ b/bench/zxing/optimized/ODDataBarExpandedBitDecoder.ll @@ -878,8 +878,8 @@ define linkonce_odr noundef i32 @_ZNK5ZXing12BitArrayView8peakBitsEi(ptr noundef %22 = or disjoint i32 %21, %20 %23 = add i32 %.013, -1 %24 = getelementptr inbounds nuw i8, ptr %.sroa.0.012, i64 1 - %exitcond.not = icmp eq i32 %23, 0 - br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !38 + %25 = icmp eq i32 %23, 0 + br i1 %25, label %._crit_edge, label %.lr.ph, !llvm.loop !38 } ; Function Attrs: mustprogress optsize uwtable