From fcca08fa28b817e7cb852938579e9c3a60266a9b Mon Sep 17 00:00:00 2001 From: nikic <216080+nikic@users.noreply.github.com> Date: Wed, 9 Jul 2025 21:09:57 +0800 Subject: [PATCH 1/3] pre-commit: PR147182 --- 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..27af457064f 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/147182 export COMPTIME_MODE=0 # Please rebase manually From bbde4421a5a5f019b1ce398e29a56d02d98f47e7 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 9 Jul 2025 13:27:26 +0000 Subject: [PATCH 2/3] pre-commit: Update --- bench/abc/optimized/bacWriteVer.ll | 8 +- bench/abc/optimized/cbaWriteVer.ll | 40 +- bench/abc/optimized/inflate.ll | 208 +++--- bench/arrow/optimized/align_util.ll | 12 +- bench/assimp/optimized/zip.ll | 6 +- bench/boost/optimized/src.ll | 172 ++--- bench/boost/optimized/test_codecvt.ll | 163 +++-- bench/box2d/optimized/imgui_demo.ll | 4 +- .../optimized/backward_references_hq.ll | 18 +- bench/brotli/optimized/block_splitter.ll | 42 +- bench/clamav/optimized/unpack.ll | 46 +- bench/cmake/optimized/ftp.ll | 70 +- bench/cpp-httplib/optimized/httplib.ll | 10 +- bench/cpython/optimized/longobject.ll | 177 +++-- bench/curl/optimized/tool_findfile.ll | 91 ++- bench/cvc5/optimized/model_engine.ll | 46 +- bench/ffmpeg/optimized/filter.ll | 72 +- bench/ffmpeg/optimized/intra.ll | 18 +- bench/ffmpeg/optimized/subtitles.ll | 29 +- bench/gromacs/optimized/wall.ll | 63 +- bench/hdf5/optimized/H5Tbit.ll | 384 ++++++----- bench/icu/optimized/ucnv_lmb.ll | 307 ++++----- bench/icu/optimized/utrie_swap.ll | 60 +- bench/jq/optimized/regcomp.ll | 26 +- bench/libjpeg-turbo/optimized/jdhuff.ll | 41 +- bench/libquic/optimized/inflate.ll | 228 +++---- bench/libwebp/optimized/tree_enc.ll | 291 ++++---- bench/libzmq/optimized/ip_resolver.ll | 44 +- bench/lief/optimized/hmac_drbg.ll | 183 ++--- bench/linux/optimized/hdmi.ll | 82 ++- bench/linux/optimized/i9xx_wm.ll | 90 +-- bench/linux/optimized/intel_display.ll | 23 +- bench/linux/optimized/intel_fbc.ll | 161 +++-- bench/linux/optimized/tcp_metrics.ll | 62 +- bench/llama.cpp/optimized/unicode.ll | 20 +- bench/llvm/optimized/Action.ll | 45 +- bench/llvm/optimized/CodeGenDAGPatterns.ll | 190 +++--- bench/llvm/optimized/CombinerHelper.ll | 172 +++-- bench/llvm/optimized/RISCVAsmPrinter.ll | 55 +- bench/llvm/optimized/WasmObjectFile.ll | 52 +- bench/llvm/optimized/X86ISelLoweringCall.ll | 199 +++--- bench/llvm/optimized/X86InstrInfo.ll | 101 ++- bench/llvm/optimized/X86ReturnThunks.ll | 78 +-- bench/lua/optimized/lstrlib.ll | 200 +++--- bench/luajit/optimized/lj_load.ll | 123 ++-- bench/luajit/optimized/lj_strscan.ll | 515 +++++++------- bench/luau/optimized/lstrlib.ll | 642 +++++++++--------- bench/mold/optimized/icf.cc.X86_64.ll | 48 +- bench/mold/optimized/passes.cc.X86_64.ll | 114 ++-- bench/node/optimized/libnode.node_sockaddr.ll | 20 +- bench/open3d/optimized/FileGLTF.ll | 39 +- bench/openblas/optimized/dgsvj0.ll | 24 +- bench/openjdk/optimized/intrinsicnode.ll | 72 +- bench/openjdk/optimized/rewriter.ll | 73 +- bench/openspiel/optimized/backgammon.ll | 14 +- bench/openvdb/optimized/FastSweeping.ll | 32 +- bench/php/optimized/pcre2_substitute.ll | 181 +++-- bench/php/optimized/quot_print.ll | 282 ++++---- .../optimized/63snncgsqpi17trm0hdteq5vk.ll | 348 +++++----- bench/postgres/optimized/copyfromparse.ll | 34 +- bench/postgres/optimized/nbtsearch.ll | 527 +++++++------- bench/postgres/optimized/nbtutils.ll | 322 +++++---- bench/postgres/optimized/network.ll | 78 +-- bench/qemu/optimized/virtio.ll | 21 +- bench/redis/optimized/bitops.ll | 40 +- bench/spike/optimized/f16_roundToInt.ll | 75 +- bench/spike/optimized/f64_roundToInt.ll | 61 +- bench/spike/optimized/s_addMagsF16.ll | 111 ++- bench/spike/optimized/s_roundMToI64.ll | 127 ++-- bench/spike/optimized/s_roundPackToBF16.ll | 217 +++--- bench/spike/optimized/s_roundPackToI32.ll | 77 ++- bench/spike/optimized/s_roundPackToI64.ll | 95 ++- bench/spike/optimized/s_roundPackToUI32.ll | 69 +- bench/spike/optimized/s_roundToUI32.ll | 67 +- bench/sqlite/optimized/sqlite3.ll | 314 +++++---- bench/stockfish/optimized/position.ll | 22 +- bench/wireshark/optimized/packet-dof.ll | 354 +++++----- bench/wireshark/optimized/packet-ieee80211.ll | 30 +- bench/wireshark/optimized/packet-usb-audio.ll | 292 ++++---- bench/yosys/optimized/blifparse.ll | 347 +++++----- bench/z3/optimized/fm_tactic.ll | 13 +- bench/zfp/optimized/testzfp.ll | 16 +- bench/zlib/optimized/inflate.ll | 248 ++++--- 83 files changed, 5234 insertions(+), 5239 deletions(-) diff --git a/bench/abc/optimized/bacWriteVer.ll b/bench/abc/optimized/bacWriteVer.ll index 5d835df3d4e..b9f9f3fdc67 100644 --- a/bench/abc/optimized/bacWriteVer.ll +++ b/bench/abc/optimized/bacWriteVer.ll @@ -1105,7 +1105,7 @@ Vec_StrPrintStr.exit110.preheader.i: ; preds = %Vec_StrPush.exit.i1 .lr.ph.i111.i: ; preds = %.lr.ph.i %.not54.i = icmp eq i32 %.049236.i, 0 %203 = select i1 %.not54.i, ptr @.str.10, ptr @.str.65 - %204 = select i1 %.not54.i, i64 1, i64 3 + %204 = select i1 %.not54.i, i64 0, i64 2 br label %205 205: ; preds = %Vec_StrPush.exit.i117.i, %.lr.ph.i111.i @@ -1174,7 +1174,7 @@ Vec_StrPush.exit.i117.i: ; preds = %228, %Vec_StrGrow.e %234 = getelementptr inbounds i8, ptr %230, i64 %233 store i8 %207, ptr %234, align 1, !tbaa !43 %indvars.iv.next.i118.i = add nuw nsw i64 %indvars.iv.i114.i, 1 - %exitcond.not.i119.i = icmp eq i64 %indvars.iv.next.i118.i, %204 + %exitcond.not.i119.i = icmp eq i64 %204, %indvars.iv.i114.i br i1 %exitcond.not.i119.i, label %Vec_StrPrintStr.exit123.i, label %205, !llvm.loop !46 Vec_StrPrintStr.exit123.i: ; preds = %Vec_StrPush.exit.i117.i @@ -1421,7 +1421,7 @@ Bac_BoxBiNum.exit.i: ; preds = %333, %.preheader.i %.0.lcssa.i.i = phi i64 [ 0, %.preheader.i ], [ %indvars.iv.i164.i, %333 ] %.not53.i = icmp eq i64 %indvars.iv687, %.0.lcssa.i.i %337 = select i1 %.not53.i, ptr @.str.10, ptr @.str.65 - %338 = select i1 %.not53.i, i64 1, i64 3 + %338 = select i1 %.not53.i, i64 0, i64 2 br label %339 339: ; preds = %Vec_StrPush.exit.i172.i, %Bac_BoxBiNum.exit.i @@ -1490,7 +1490,7 @@ Vec_StrPush.exit.i172.i: ; preds = %362, %Vec_StrGrow.e %368 = getelementptr inbounds i8, ptr %364, i64 %367 store i8 %341, ptr %368, align 1, !tbaa !43 %indvars.iv.next.i173.i = add nuw nsw i64 %indvars.iv.i169.i, 1 - %exitcond.not.i174.i = icmp eq i64 %indvars.iv.next.i173.i, %338 + %exitcond.not.i174.i = icmp eq i64 %338, %indvars.iv.i169.i br i1 %exitcond.not.i174.i, label %Vec_StrPrintStr.exit178.i, label %339, !llvm.loop !46 Vec_StrPrintStr.exit178.i: ; preds = %Vec_StrPush.exit.i172.i diff --git a/bench/abc/optimized/cbaWriteVer.ll b/bench/abc/optimized/cbaWriteVer.ll index f2aeed58847..eeb5abf6d00 100644 --- a/bench/abc/optimized/cbaWriteVer.ll +++ b/bench/abc/optimized/cbaWriteVer.ll @@ -4085,7 +4085,7 @@ define void @Cba_ManWriteVerilogNtk(ptr noundef %0, i32 noundef %1) local_unname %10 = getelementptr i8, ptr %0, i64 44 %.val871 = load i32, ptr %10, align 4, !tbaa !22 %11 = add nsw i32 %.val871, %.val870 - %12 = icmp sgt i32 %11, 5 + %12 = icmp slt i32 %11, 6 %13 = getelementptr i8, ptr %0, i64 156 %.val872 = load i32, ptr %13, align 4, !tbaa !22 %14 = ashr i32 %.val872, 5 @@ -4486,8 +4486,8 @@ Vec_StrPush.exit.i1022: ; preds = %187, %Vec_StrGrow.e br i1 %exitcond.not.i1024, label %Vec_StrPrintStr.exit1028, label %164, !llvm.loop !59 Vec_StrPrintStr.exit1028: ; preds = %Vec_StrPush.exit.i1022, %Vec_StrPrintStr.exit - %194 = select i1 %12, ptr @.str.73, ptr @.str.74 - %195 = select i1 %12, i64 7, i64 3 + %194 = select i1 %12, ptr @.str.74, ptr @.str.73 + %195 = select i1 %12, i64 2, i64 6 br label %196 196: ; preds = %Vec_StrPush.exit.i1035, %Vec_StrPrintStr.exit1028 @@ -4556,7 +4556,7 @@ Vec_StrPush.exit.i1035: ; preds = %219, %Vec_StrGrow.e %225 = getelementptr inbounds i8, ptr %221, i64 %224 store i8 %198, ptr %225, align 1, !tbaa !15 %indvars.iv.next.i1036 = add nuw nsw i64 %indvars.iv.i1032, 1 - %exitcond.not.i1037 = icmp eq i64 %indvars.iv.next.i1036, %195 + %exitcond.not.i1037 = icmp eq i64 %195, %indvars.iv.i1032 br i1 %exitcond.not.i1037, label %Vec_StrPrintStr.exit1041, label %196, !llvm.loop !59 Vec_StrPrintStr.exit1041: ; preds = %Vec_StrPush.exit.i1035 @@ -4817,8 +4817,8 @@ Vec_StrPrintStr.exit1080: ; preds = %Vec_StrPush.exit.i1 br i1 %328, label %229, label %.critedge2, !llvm.loop !68 .critedge2: ; preds = %Vec_StrPrintStr.exit1080, %Vec_StrPrintStr.exit1041 - %329 = select i1 %12, ptr @.str.76, ptr @.str.77 - %330 = select i1 %12, i64 5, i64 3 + %329 = select i1 %12, ptr @.str.77, ptr @.str.76 + %330 = select i1 %12, i64 2, i64 4 br label %331 331: ; preds = %Vec_StrPush.exit.i1087, %.critedge2 @@ -4887,7 +4887,7 @@ Vec_StrPush.exit.i1087: ; preds = %354, %Vec_StrGrow.e %360 = getelementptr inbounds i8, ptr %356, i64 %359 store i8 %333, ptr %360, align 1, !tbaa !15 %indvars.iv.next.i1088 = add nuw nsw i64 %indvars.iv.i1084, 1 - %exitcond.not.i1089 = icmp eq i64 %indvars.iv.next.i1088, %330 + %exitcond.not.i1089 = icmp eq i64 %330, %indvars.iv.i1084 br i1 %exitcond.not.i1089, label %Vec_StrPrintStr.exit1093, label %331, !llvm.loop !59 Vec_StrPrintStr.exit1093: ; preds = %Vec_StrPush.exit.i1087 @@ -4911,8 +4911,8 @@ Vec_StrPrintStr.exit1093: ; preds = %Vec_StrPush.exit.i1 br label %Cba_ManWriteLineFile.exit Cba_ManWriteLineFile.exit: ; preds = %Vec_StrPrintStr.exit1093, %363, %365 - %370 = select i1 %12, ptr @.str.78, ptr @.str.79 - %371 = select i1 %12, i64 1, i64 2 + %370 = select i1 %12, ptr @.str.79, ptr @.str.78 + %371 = zext i1 %12 to i64 br label %372 372: ; preds = %Vec_StrPush.exit.i1100, %Cba_ManWriteLineFile.exit @@ -4981,7 +4981,7 @@ Vec_StrPush.exit.i1100: ; preds = %395, %Vec_StrGrow.e %401 = getelementptr inbounds i8, ptr %397, i64 %400 store i8 %374, ptr %401, align 1, !tbaa !15 %indvars.iv.next.i1101 = add nuw nsw i64 %indvars.iv.i1097, 1 - %exitcond.not.i1102 = icmp eq i64 %indvars.iv.next.i1101, %371 + %exitcond.not.i1102 = icmp eq i64 %indvars.iv.i1097, %371 br i1 %exitcond.not.i1102, label %Vec_StrPrintStr.exit1106.preheader, label %372, !llvm.loop !59 Vec_StrPrintStr.exit1106.preheader: ; preds = %Vec_StrPush.exit.i1100 @@ -5085,7 +5085,7 @@ Vec_StrPrintStr.exit1119: ; preds = %Vec_StrPush.exit.i1 %442 = load i8, ptr %441, align 1, !tbaa !15 %.not2580 = icmp eq i8 %442, 1 %443 = select i1 %.not2580, ptr @.str.81, ptr @.str.82 - %444 = select i1 %.not2580, i64 6, i64 7 + %444 = select i1 %.not2580, i64 5, i64 6 br label %445 445: ; preds = %Vec_StrPush.exit.i1126, %Vec_StrPrintStr.exit1119 @@ -5154,7 +5154,7 @@ Vec_StrPush.exit.i1126: ; preds = %468, %Vec_StrGrow.e %474 = getelementptr inbounds i8, ptr %470, i64 %473 store i8 %447, ptr %474, align 1, !tbaa !15 %indvars.iv.next.i1127 = add nuw nsw i64 %indvars.iv.i1123, 1 - %exitcond.not.i1128 = icmp eq i64 %indvars.iv.next.i1127, %444 + %exitcond.not.i1128 = icmp eq i64 %444, %indvars.iv.i1123 br i1 %exitcond.not.i1128, label %Vec_StrPrintStr.exit1132, label %445, !llvm.loop !59 Vec_StrPrintStr.exit1132: ; preds = %Vec_StrPush.exit.i1126 @@ -10292,7 +10292,7 @@ Vec_StrPush.exit.i1935: ; preds = %2636, %Vec_StrGrow. Vec_StrPrintStr.exit1941: ; preds = %Vec_StrPush.exit.i1935 tail call void @Cba_ManWriteFonName(ptr noundef nonnull %0, i32 noundef %2329, i32 noundef 0, i32 noundef 0) %2643 = select i1 %2327, ptr @.str.131, ptr @.str.132 - %2644 = select i1 %2327, i64 4, i64 3 + %2644 = select i1 %2327, i64 3, i64 2 br label %2645 2645: ; preds = %Vec_StrPush.exit.i1949, %Vec_StrPrintStr.exit1941 @@ -10361,7 +10361,7 @@ Vec_StrPush.exit.i1949: ; preds = %2668, %Vec_StrGrow. %2674 = getelementptr inbounds i8, ptr %2670, i64 %2673 store i8 %2647, ptr %2674, align 1, !tbaa !15 %indvars.iv.next.i1950 = add nuw nsw i64 %indvars.iv.i1946, 1 - %exitcond.not.i1951 = icmp eq i64 %indvars.iv.next.i1950, %2644 + %exitcond.not.i1951 = icmp eq i64 %2644, %indvars.iv.i1946 br i1 %exitcond.not.i1951, label %Vec_StrPrintStr.exit1955, label %2645, !llvm.loop !59 Vec_StrPrintStr.exit1955: ; preds = %Vec_StrPush.exit.i1949 @@ -10592,7 +10592,7 @@ Vec_StrPrintStr.exit1997: ; preds = %Vec_StrPush.exit.i1 .lr.ph.i1999: ; preds = %Vec_StrPrintStr.exit1997 %2761 = select i1 %2490, ptr @.str.134, ptr @.str.129 - %2762 = select i1 %2490, i64 13, i64 8 + %2762 = select i1 %2490, i64 12, i64 7 br label %2763 2763: ; preds = %Vec_StrPush.exit.i2005, %.lr.ph.i1999 @@ -10661,7 +10661,7 @@ Vec_StrPush.exit.i2005: ; preds = %2786, %Vec_StrGrow. %2792 = getelementptr inbounds i8, ptr %2788, i64 %2791 store i8 %2765, ptr %2792, align 1, !tbaa !15 %indvars.iv.next.i2006 = add nuw nsw i64 %indvars.iv.i2002, 1 - %exitcond.not.i2007 = icmp eq i64 %indvars.iv.next.i2006, %2762 + %exitcond.not.i2007 = icmp eq i64 %2762, %indvars.iv.i2002 br i1 %exitcond.not.i2007, label %Vec_StrPrintStr.exit2011, label %2763, !llvm.loop !59 Vec_StrPrintStr.exit2011: ; preds = %Vec_StrPush.exit.i2005 @@ -10740,7 +10740,7 @@ Vec_StrPush.exit.i2019: ; preds = %2816, %Vec_StrGrow. Vec_StrPrintStr.exit2025: ; preds = %Vec_StrPush.exit.i2019 tail call void @Cba_ManWriteFonName(ptr noundef nonnull %0, i32 noundef %2329, i32 noundef 0, i32 noundef 0) %2823 = select i1 %2327, ptr @.str.131, ptr @.str.132 - %2824 = select i1 %2327, i64 4, i64 3 + %2824 = select i1 %2327, i64 3, i64 2 br label %2825 2825: ; preds = %Vec_StrPush.exit.i2033, %Vec_StrPrintStr.exit2025 @@ -10809,7 +10809,7 @@ Vec_StrPush.exit.i2033: ; preds = %2848, %Vec_StrGrow. %2854 = getelementptr inbounds i8, ptr %2850, i64 %2853 store i8 %2827, ptr %2854, align 1, !tbaa !15 %indvars.iv.next.i2034 = add nuw nsw i64 %indvars.iv.i2030, 1 - %exitcond.not.i2035 = icmp eq i64 %indvars.iv.next.i2034, %2824 + %exitcond.not.i2035 = icmp eq i64 %2824, %indvars.iv.i2030 br i1 %exitcond.not.i2035, label %Vec_StrPrintStr.exit2039, label %2825, !llvm.loop !59 Vec_StrPrintStr.exit2039: ; preds = %Vec_StrPush.exit.i2033 @@ -11038,7 +11038,7 @@ Vec_StrPush.exit.i2075: ; preds = %2934, %Vec_StrGrow. Vec_StrPrintStr.exit2081: ; preds = %Vec_StrPush.exit.i2075, %Vec_StrPrintStr.exit1997 %2941 = or i1 %2490, %2523 %2942 = select i1 %2941, ptr @.str.135, ptr @.str.136 - %2943 = select i1 %2941, i64 9, i64 4 + %2943 = select i1 %2941, i64 8, i64 3 br label %2944 2944: ; preds = %Vec_StrPush.exit.i2089, %Vec_StrPrintStr.exit2081 @@ -11107,7 +11107,7 @@ Vec_StrPush.exit.i2089: ; preds = %2967, %Vec_StrGrow. %2973 = getelementptr inbounds i8, ptr %2969, i64 %2972 store i8 %2946, ptr %2973, align 1, !tbaa !15 %indvars.iv.next.i2090 = add nuw nsw i64 %indvars.iv.i2086, 1 - %exitcond.not.i2091 = icmp eq i64 %indvars.iv.next.i2090, %2943 + %exitcond.not.i2091 = icmp eq i64 %2943, %indvars.iv.i2086 br i1 %exitcond.not.i2091, label %Vec_StrPrintStr.exit2095, label %2944, !llvm.loop !59 Vec_StrPrintStr.exit2095: ; preds = %Vec_StrPush.exit.i2089 diff --git a/bench/abc/optimized/inflate.ll b/bench/abc/optimized/inflate.ll index c1e0b158d85..4108c38fb1d 100644 --- a/bench/abc/optimized/inflate.ll +++ b/bench/abc/optimized/inflate.ll @@ -3516,13 +3516,13 @@ define range(i32 -5, 1) i32 @inflateSync(ptr noundef captures(address_is_null) % %2 = alloca [4 x i8], align 1 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %2) #10 %3 = icmp eq ptr %0, null - br i1 %3, label %93, label %4 + br i1 %3, label %91, label %4 4: ; preds = %1 %5 = getelementptr inbounds nuw i8, ptr %0, i64 56 %6 = load ptr, ptr %5, align 8, !tbaa !3 %7 = icmp eq ptr %6, null - br i1 %7, label %93, label %8 + br i1 %7, label %91, label %8 8: ; preds = %4 %9 = getelementptr inbounds nuw i8, ptr %0, i64 8 @@ -3534,7 +3534,7 @@ define range(i32 -5, 1) i32 @inflateSync(ptr noundef captures(address_is_null) % %13 = getelementptr inbounds nuw i8, ptr %6, i64 80 %14 = load i32, ptr %13, align 8, !tbaa !26 %15 = icmp ult i32 %14, 8 - br i1 %15, label %93, label %16 + br i1 %15, label %91, label %16 16: ; preds = %12, %8 %17 = load i32, ptr %6, align 8, !tbaa !17 @@ -3544,7 +3544,7 @@ define range(i32 -5, 1) i32 @inflateSync(ptr noundef captures(address_is_null) % ._crit_edge62: ; preds = %16 %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %6, i64 132 %.pre63 = load i32, ptr %.phi.trans.insert, align 4, !tbaa !99 - br label %45 + br label %44 18: ; preds = %16 store i32 31, ptr %6, align 8, !tbaa !17 @@ -3588,127 +3588,125 @@ define range(i32 -5, 1) i32 @inflateSync(ptr noundef captures(address_is_null) % %.01415.i = phi i32 [ 0, %.lr.ph.preheader.i ], [ %.1.i, %.lr.ph.i ] %33 = getelementptr inbounds nuw i8, ptr %2, i64 %indvars.iv.i %34 = load i8, ptr %33, align 1, !tbaa !37 - %35 = zext i8 %34 to i32 - %36 = icmp samesign ult i32 %.01415.i, 2 - %37 = select i1 %36, i32 0, i32 255 - %38 = icmp eq i32 %37, %35 - %39 = add nuw nsw i32 %.01415.i, 1 + %35 = icmp samesign ugt i32 %.01415.i, 1 + %36 = sext i1 %35 to i8 + %37 = icmp eq i8 %34, %36 + %38 = add nuw nsw i32 %.01415.i, 1 %.not.i = icmp eq i8 %34, 0 - %40 = sub nuw nsw i32 4, %.01415.i - %spec.select.i = select i1 %.not.i, i32 %40, i32 0 - %.1.i = select i1 %38, i32 %39, i32 %spec.select.i + %39 = sub nuw nsw i32 4, %.01415.i + %spec.select.i = select i1 %.not.i, i32 %39, i32 0 + %.1.i = select i1 %37, i32 %38, i32 %spec.select.i %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 - %41 = icmp samesign ult i64 %indvars.iv.next.i, %32 - %42 = icmp samesign ult i32 %.1.i, 4 - %43 = select i1 %41, i1 %42, i1 false - br i1 %43, label %.lr.ph.i, label %syncsearch.exit, !llvm.loop !101 + %40 = icmp samesign ult i64 %indvars.iv.next.i, %32 + %41 = icmp samesign ult i32 %.1.i, 4 + %42 = select i1 %40, i1 %41, i1 false + br i1 %42, label %.lr.ph.i, label %syncsearch.exit, !llvm.loop !101 syncsearch.exit: ; preds = %.lr.ph.i, %.thread %.014.lcssa.i = phi i32 [ 0, %.thread ], [ %.1.i, %.lr.ph.i ] - %44 = getelementptr inbounds nuw i8, ptr %6, i64 132 - store i32 %.014.lcssa.i, ptr %44, align 4, !tbaa !99 + %43 = getelementptr inbounds nuw i8, ptr %6, i64 132 + store i32 %.014.lcssa.i, ptr %43, align 4, !tbaa !99 %.pre = load i32, ptr %9, align 8, !tbaa !42 - br label %45 - -45: ; preds = %._crit_edge62, %syncsearch.exit - %46 = phi i32 [ %.014.lcssa.i, %syncsearch.exit ], [ %.pre63, %._crit_edge62 ] - %47 = phi i32 [ %.pre, %syncsearch.exit ], [ %10, %._crit_edge62 ] - %48 = getelementptr inbounds nuw i8, ptr %6, i64 132 - %49 = load ptr, ptr %0, align 8, !tbaa !41 - %50 = icmp ne i32 %47, 0 - %51 = icmp ult i32 %46, 4 - %52 = select i1 %50, i1 %51, i1 false - br i1 %52, label %.lr.ph.preheader.i43, label %syncsearch.exit52 - -.lr.ph.preheader.i43: ; preds = %45 - %53 = zext i32 %47 to i64 + br label %44 + +44: ; preds = %._crit_edge62, %syncsearch.exit + %45 = phi i32 [ %.014.lcssa.i, %syncsearch.exit ], [ %.pre63, %._crit_edge62 ] + %46 = phi i32 [ %.pre, %syncsearch.exit ], [ %10, %._crit_edge62 ] + %47 = getelementptr inbounds nuw i8, ptr %6, i64 132 + %48 = load ptr, ptr %0, align 8, !tbaa !41 + %49 = icmp ne i32 %46, 0 + %50 = icmp ult i32 %45, 4 + %51 = select i1 %49, i1 %50, i1 false + br i1 %51, label %.lr.ph.preheader.i43, label %syncsearch.exit52 + +.lr.ph.preheader.i43: ; preds = %44 + %52 = zext i32 %46 to i64 br label %.lr.ph.i44 .lr.ph.i44: ; preds = %.lr.ph.i44, %.lr.ph.preheader.i43 %indvars.iv.i45 = phi i64 [ 0, %.lr.ph.preheader.i43 ], [ %indvars.iv.next.i50, %.lr.ph.i44 ] - %.01415.i46 = phi i32 [ %46, %.lr.ph.preheader.i43 ], [ %.1.i49, %.lr.ph.i44 ] - %54 = getelementptr inbounds nuw i8, ptr %49, i64 %indvars.iv.i45 - %55 = load i8, ptr %54, align 1, !tbaa !37 - %56 = zext i8 %55 to i32 - %57 = icmp samesign ult i32 %.01415.i46, 2 - %58 = select i1 %57, i32 0, i32 255 - %59 = icmp eq i32 %58, %56 - %60 = add nuw nsw i32 %.01415.i46, 1 - %.not.i47 = icmp eq i8 %55, 0 - %61 = sub nuw nsw i32 4, %.01415.i46 - %spec.select.i48 = select i1 %.not.i47, i32 %61, i32 0 - %.1.i49 = select i1 %59, i32 %60, i32 %spec.select.i48 + %.01415.i46 = phi i32 [ %45, %.lr.ph.preheader.i43 ], [ %.1.i49, %.lr.ph.i44 ] + %53 = getelementptr inbounds nuw i8, ptr %48, i64 %indvars.iv.i45 + %54 = load i8, ptr %53, align 1, !tbaa !37 + %55 = icmp samesign ugt i32 %.01415.i46, 1 + %56 = sext i1 %55 to i8 + %57 = icmp eq i8 %54, %56 + %58 = add nuw nsw i32 %.01415.i46, 1 + %.not.i47 = icmp eq i8 %54, 0 + %59 = sub nuw nsw i32 4, %.01415.i46 + %spec.select.i48 = select i1 %.not.i47, i32 %59, i32 0 + %.1.i49 = select i1 %57, i32 %58, i32 %spec.select.i48 %indvars.iv.next.i50 = add nuw nsw i64 %indvars.iv.i45, 1 - %62 = icmp samesign ult i64 %indvars.iv.next.i50, %53 - %63 = icmp samesign ult i32 %.1.i49, 4 - %64 = select i1 %62, i1 %63, i1 false - br i1 %64, label %.lr.ph.i44, label %._crit_edge.loopexit.i51, !llvm.loop !101 + %60 = icmp samesign ult i64 %indvars.iv.next.i50, %52 + %61 = icmp samesign ult i32 %.1.i49, 4 + %62 = select i1 %60, i1 %61, i1 false + br i1 %62, label %.lr.ph.i44, label %._crit_edge.loopexit.i51, !llvm.loop !101 ._crit_edge.loopexit.i51: ; preds = %.lr.ph.i44 - %65 = trunc nuw i64 %indvars.iv.next.i50 to i32 + %63 = trunc nuw i64 %indvars.iv.next.i50 to i32 br label %syncsearch.exit52 -syncsearch.exit52: ; preds = %45, %._crit_edge.loopexit.i51 - %.014.lcssa.i41 = phi i32 [ %46, %45 ], [ %.1.i49, %._crit_edge.loopexit.i51 ] - %.0.lcssa.i42 = phi i32 [ 0, %45 ], [ %65, %._crit_edge.loopexit.i51 ] - store i32 %.014.lcssa.i41, ptr %48, align 4, !tbaa !99 - %66 = load i32, ptr %9, align 8, !tbaa !42 - %67 = sub i32 %66, %.0.lcssa.i42 - store i32 %67, ptr %9, align 8, !tbaa !42 - %68 = zext i32 %.0.lcssa.i42 to i64 - %69 = getelementptr inbounds nuw i8, ptr %49, i64 %68 - store ptr %69, ptr %0, align 8, !tbaa !41 - %70 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %71 = load i64, ptr %70, align 8, !tbaa !15 - %72 = add i64 %71, %68 - store i64 %72, ptr %70, align 8, !tbaa !15 +syncsearch.exit52: ; preds = %44, %._crit_edge.loopexit.i51 + %.014.lcssa.i41 = phi i32 [ %45, %44 ], [ %.1.i49, %._crit_edge.loopexit.i51 ] + %.0.lcssa.i42 = phi i32 [ 0, %44 ], [ %63, %._crit_edge.loopexit.i51 ] + store i32 %.014.lcssa.i41, ptr %47, align 4, !tbaa !99 + %64 = load i32, ptr %9, align 8, !tbaa !42 + %65 = sub i32 %64, %.0.lcssa.i42 + store i32 %65, ptr %9, align 8, !tbaa !42 + %66 = zext i32 %.0.lcssa.i42 to i64 + %67 = getelementptr inbounds nuw i8, ptr %48, i64 %66 + store ptr %67, ptr %0, align 8, !tbaa !41 + %68 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %69 = load i64, ptr %68, align 8, !tbaa !15 + %70 = add i64 %69, %66 + store i64 %70, ptr %68, align 8, !tbaa !15 %.not40 = icmp eq i32 %.014.lcssa.i41, 4 - br i1 %.not40, label %inflateReset.exit, label %93 + br i1 %.not40, label %inflateReset.exit, label %91 inflateReset.exit: ; preds = %syncsearch.exit52 - %73 = getelementptr inbounds nuw i8, ptr %0, i64 40 - %74 = load i64, ptr %73, align 8, !tbaa !96 - %75 = getelementptr inbounds nuw i8, ptr %6, i64 32 - store i64 0, ptr %75, align 8, !tbaa !12 - %76 = getelementptr inbounds nuw i8, ptr %0, i64 96 - %77 = getelementptr inbounds nuw i8, ptr %0, i64 48 - store i64 0, ptr %77, align 8 - store i64 1, ptr %76, align 8, !tbaa !16 - %78 = getelementptr inbounds nuw i8, ptr %6, i64 4 - store i32 0, ptr %78, align 4, !tbaa !18 - %79 = getelementptr inbounds nuw i8, ptr %6, i64 12 - store i32 0, ptr %79, align 4, !tbaa !19 - %80 = getelementptr inbounds nuw i8, ptr %6, i64 20 - store i32 32768, ptr %80, align 4, !tbaa !20 - %81 = getelementptr inbounds nuw i8, ptr %6, i64 40 - store ptr null, ptr %81, align 8, !tbaa !21 - %82 = getelementptr inbounds nuw i8, ptr %6, i64 52 - store i32 0, ptr %82, align 4, !tbaa !22 - %83 = getelementptr inbounds nuw i8, ptr %6, i64 56 - store i32 0, ptr %83, align 8, !tbaa !23 - %84 = getelementptr inbounds nuw i8, ptr %6, i64 60 - store i32 0, ptr %84, align 4, !tbaa !24 - %85 = getelementptr inbounds nuw i8, ptr %6, i64 72 - store i64 0, ptr %85, align 8, !tbaa !25 - %86 = getelementptr inbounds nuw i8, ptr %6, i64 80 - store i32 0, ptr %86, align 8, !tbaa !26 - %87 = getelementptr inbounds nuw i8, ptr %6, i64 1360 - %88 = getelementptr inbounds nuw i8, ptr %6, i64 136 - store ptr %87, ptr %88, align 8, !tbaa !27 - %89 = getelementptr inbounds nuw i8, ptr %6, i64 104 - store ptr %87, ptr %89, align 8, !tbaa !28 - %90 = getelementptr inbounds nuw i8, ptr %6, i64 96 - store ptr %87, ptr %90, align 8, !tbaa !29 - %91 = getelementptr inbounds nuw i8, ptr %6, i64 7136 - store i32 1, ptr %91, align 8, !tbaa !30 - %92 = getelementptr inbounds nuw i8, ptr %6, i64 7140 - store i32 -1, ptr %92, align 4, !tbaa !31 - store i64 %72, ptr %70, align 8, !tbaa !15 - store i64 %74, ptr %73, align 8, !tbaa !96 + %71 = getelementptr inbounds nuw i8, ptr %0, i64 40 + %72 = load i64, ptr %71, align 8, !tbaa !96 + %73 = getelementptr inbounds nuw i8, ptr %6, i64 32 + store i64 0, ptr %73, align 8, !tbaa !12 + %74 = getelementptr inbounds nuw i8, ptr %0, i64 96 + %75 = getelementptr inbounds nuw i8, ptr %0, i64 48 + store i64 0, ptr %75, align 8 + store i64 1, ptr %74, align 8, !tbaa !16 + %76 = getelementptr inbounds nuw i8, ptr %6, i64 4 + store i32 0, ptr %76, align 4, !tbaa !18 + %77 = getelementptr inbounds nuw i8, ptr %6, i64 12 + store i32 0, ptr %77, align 4, !tbaa !19 + %78 = getelementptr inbounds nuw i8, ptr %6, i64 20 + store i32 32768, ptr %78, align 4, !tbaa !20 + %79 = getelementptr inbounds nuw i8, ptr %6, i64 40 + store ptr null, ptr %79, align 8, !tbaa !21 + %80 = getelementptr inbounds nuw i8, ptr %6, i64 52 + store i32 0, ptr %80, align 4, !tbaa !22 + %81 = getelementptr inbounds nuw i8, ptr %6, i64 56 + store i32 0, ptr %81, align 8, !tbaa !23 + %82 = getelementptr inbounds nuw i8, ptr %6, i64 60 + store i32 0, ptr %82, align 4, !tbaa !24 + %83 = getelementptr inbounds nuw i8, ptr %6, i64 72 + store i64 0, ptr %83, align 8, !tbaa !25 + %84 = getelementptr inbounds nuw i8, ptr %6, i64 80 + store i32 0, ptr %84, align 8, !tbaa !26 + %85 = getelementptr inbounds nuw i8, ptr %6, i64 1360 + %86 = getelementptr inbounds nuw i8, ptr %6, i64 136 + store ptr %85, ptr %86, align 8, !tbaa !27 + %87 = getelementptr inbounds nuw i8, ptr %6, i64 104 + store ptr %85, ptr %87, align 8, !tbaa !28 + %88 = getelementptr inbounds nuw i8, ptr %6, i64 96 + store ptr %85, ptr %88, align 8, !tbaa !29 + %89 = getelementptr inbounds nuw i8, ptr %6, i64 7136 + store i32 1, ptr %89, align 8, !tbaa !30 + %90 = getelementptr inbounds nuw i8, ptr %6, i64 7140 + store i32 -1, ptr %90, align 4, !tbaa !31 + store i64 %70, ptr %68, align 8, !tbaa !15 + store i64 %72, ptr %71, align 8, !tbaa !96 store i32 11, ptr %6, align 8, !tbaa !17 - br label %93 + br label %91 -93: ; preds = %syncsearch.exit52, %12, %1, %4, %inflateReset.exit +91: ; preds = %syncsearch.exit52, %12, %1, %4, %inflateReset.exit %.0 = phi i32 [ 0, %inflateReset.exit ], [ -2, %4 ], [ -2, %1 ], [ -5, %12 ], [ -3, %syncsearch.exit52 ] call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %2) #10 ret i32 %.0 diff --git a/bench/arrow/optimized/align_util.ll b/bench/arrow/optimized/align_util.ll index d17bc59f19a..a6fa4db608b 100644 --- a/bench/arrow/optimized/align_util.ll +++ b/bench/arrow/optimized/align_util.ll @@ -7981,12 +7981,12 @@ _ZSt13copy_backwardISt13_Bit_iteratorS0_ET0_T_S2_S1_.exit: ; preds = %_ZNSt14_Bi %61 = getelementptr inbounds i8, ptr %1, i64 %.idx %62 = and i64 %59, -9223372036854775745 %63 = icmp ugt i64 %62, -9223372036854775808 - %storemerge.idx.i.i.i75.neg = select i1 %63, i64 8, i64 0 %storemerge.idx.i.i.i75 = select i1 %63, i64 -8, i64 0 %storemerge.i.i.i76 = getelementptr inbounds i8, ptr %61, i64 %storemerge.idx.i.i.i75 %64 = trunc i64 %59 to i32 %65 = and i32 %64, 63 - %.not.i.i.i = icmp eq i64 %.idx, %storemerge.idx.i.i.i75.neg + %storemerge.idx.i.i.i75.neg158 = zext i1 %63 to i64 + %.not.i.i.i = icmp eq i64 %60, %storemerge.idx.i.i.i75.neg158 br i1 %.not.i.i.i, label %91, label %66 66: ; preds = %_ZSt13copy_backwardISt13_Bit_iteratorS0_ET0_T_S2_S1_.exit @@ -8176,16 +8176,16 @@ _ZNSt6vectorIbSaIbEE15_M_copy_alignedESt19_Bit_const_iteratorS2_St13_Bit_iterato %151 = zext i32 %.sroa.55.0.lcssa.i.i.i.i.i.i to i64 %152 = add nsw i64 %3, %151 %153 = sdiv i64 %152, 64 - %.idx158 = shl nsw i64 %153, 3 - %154 = getelementptr inbounds i8, ptr %.sroa.03.0.lcssa.i.i.i.i.i.i, i64 %.idx158 + %.idx159 = shl nsw i64 %153, 3 + %154 = getelementptr inbounds i8, ptr %.sroa.03.0.lcssa.i.i.i.i.i.i, i64 %.idx159 %155 = and i64 %152, -9223372036854775745 %156 = icmp ugt i64 %155, -9223372036854775808 - %storemerge.idx.i.i.i85.neg = select i1 %156, i64 8, i64 0 %storemerge.idx.i.i.i85 = select i1 %156, i64 -8, i64 0 %storemerge.i.i.i86 = getelementptr inbounds i8, ptr %154, i64 %storemerge.idx.i.i.i85 %157 = trunc i64 %152 to i32 %158 = and i32 %157, 63 - %.not.i.i.i89 = icmp eq i64 %.idx158, %storemerge.idx.i.i.i85.neg + %storemerge.idx.i.i.i85.neg160 = zext i1 %156 to i64 + %.not.i.i.i89 = icmp eq i64 %153, %storemerge.idx.i.i.i85.neg160 br i1 %.not.i.i.i89, label %185, label %159 159: ; preds = %_ZNSt6vectorIbSaIbEE15_M_copy_alignedESt19_Bit_const_iteratorS2_St13_Bit_iterator.exit diff --git a/bench/assimp/optimized/zip.ll b/bench/assimp/optimized/zip.ll index 042fb121abb..69c813a87cb 100644 --- a/bench/assimp/optimized/zip.ll +++ b/bench/assimp/optimized/zip.ll @@ -25875,8 +25875,8 @@ define internal fastcc void @tdefl_optimize_huffman_table(ptr noundef nonnull ca %.phi.trans.insert.i = getelementptr inbounds nuw i8, ptr %6, i64 1024 %.pre.i = load i32, ptr %.phi.trans.insert.i, align 16 %36 = freeze i32 %.pre.i - %37 = icmp eq i32 %.173, %36 - %spec.select.i = select i1 %37, i64 1, i64 2 + %37 = icmp ne i32 %.173, %36 + %spec.select89.i = zext i1 %37 to i64 br label %.critedge.preheader.split55.us.i .lr.ph.i: ; preds = %.lr.ph.i, %.lr.ph.preheader.i @@ -25947,7 +25947,7 @@ define internal fastcc void @tdefl_optimize_huffman_table(ptr noundef nonnull ca call void @llvm.lifetime.end.p0(i64 1024, ptr nonnull %7) #35 %indvars.iv.next71.i = add nuw nsw i64 %indvars.iv70.i, 1 %71 = add nuw nsw i32 %.03854.us.i, 8 - %exitcond74.not.i = icmp eq i64 %indvars.iv.next71.i, %spec.select.i + %exitcond74.not.i = icmp eq i64 %indvars.iv70.i, %spec.select89.i br i1 %exitcond74.not.i, label %tdefl_radix_sort_syms.exit, label %.critedge.preheader.split55.us.i tdefl_radix_sort_syms.exit.thread: ; preds = %72 diff --git a/bench/boost/optimized/src.ll b/bench/boost/optimized/src.ll index 6df8818f845..497692111ed 100644 --- a/bench/boost/optimized/src.ll +++ b/bench/boost/optimized/src.ll @@ -61560,18 +61560,18 @@ define linkonce_odr hidden { ptr, i32 } @_ZN5boost4json6detail8charconv6detail6p 12: ; preds = %10 store i8 1, ptr %2, align 1, !tbaa !158 %13 = getelementptr inbounds nuw i8, ptr %0, i64 1 - br label %.preheader341 + br label %.preheader343 14: ; preds = %10 store i8 0, ptr %2, align 1, !tbaa !158 - br label %.preheader341 + br label %.preheader343 -.preheader341: ; preds = %14, %12 +.preheader343: ; preds = %14, %12 %.1.ph = phi ptr [ %0, %14 ], [ %13, %12 ] br label %15 -15: ; preds = %.preheader341, %15 - %.1 = phi ptr [ %20, %15 ], [ %.1.ph, %.preheader341 ] +15: ; preds = %.preheader343, %15 + %.1 = phi ptr [ %20, %15 ], [ %.1.ph, %.preheader343 ] %16 = load i8, ptr %.1, align 1, !tbaa !15 %17 = icmp eq i8 %16, 48 %18 = icmp ne ptr %.1, %1 @@ -61581,17 +61581,16 @@ define linkonce_odr hidden { ptr, i32 } @_ZN5boost4json6detail8charconv6detail6p 21: ; preds = %15 %.not = icmp eq i32 %5, 4 - %. = select i1 %.not, i32 80, i32 69 %.248 = select i1 %.not, i32 112, i32 101 %22 = icmp eq ptr %.1, %1 br i1 %22, label %27, label %23 23: ; preds = %21 - %..neg = select i1 %.not, i32 -80, i32 -69 %24 = sext i8 %16 to i32 %25 = icmp eq i32 %.248, %24 - %26 = icmp eq i32 %..neg, %24 - %or.cond250 = or i1 %25, %26 + %..neg272 = select i1 %.not, i8 -80, i8 -69 + %26 = icmp eq i8 %..neg272, %16 + %or.cond250 = or i1 %26, %25 br i1 %or.cond250, label %27, label %28 27: ; preds = %23, %21 @@ -61605,27 +61604,27 @@ define linkonce_odr hidden { ptr, i32 } @_ZN5boost4json6detail8charconv6detail6p %_ZN5boost4json6detail8charconv6detail15is_integer_charEc._ZN5boost4json6detail8charconv6detail11is_hex_charEc = select i1 %.not, ptr @_ZN5boost4json6detail8charconv6detail11is_hex_charEc, ptr @_ZN5boost4json6detail8charconv6detail15is_integer_charEc %29 = select i1 %.not, i32 16, i32 10 %30 = tail call noundef zeroext i1 %_ZN5boost4json6detail8charconv6detail15is_integer_charEc._ZN5boost4json6detail8charconv6detail11is_hex_charEc(i8 noundef signext %16) #48, !callees !765 - br i1 %30, label %.lr.ph328, label %.critedge + br i1 %30, label %.lr.ph330, label %.critedge -.lr.ph: ; preds = %.lr.ph328 +.lr.ph: ; preds = %.lr.ph330 %31 = icmp ne ptr %35, %1 - %32 = icmp samesign ult i64 %.0216278327, 18 + %32 = icmp samesign ult i64 %.0216280329, 18 %or.cond18 = select i1 %31, i1 %32, i1 false - br i1 %or.cond18, label %.lr.ph328, label %.critedge, !llvm.loop !766 + br i1 %or.cond18, label %.lr.ph330, label %.critedge, !llvm.loop !766 -.lr.ph328: ; preds = %28, %.lr.ph - %.0216278327 = phi i64 [ %36, %.lr.ph ], [ 0, %28 ] - %.2280326 = phi ptr [ %35, %.lr.ph ], [ %.1, %28 ] - %33 = load i8, ptr %.2280326, align 1, !tbaa !15 - %34 = getelementptr inbounds nuw [19 x i8], ptr %7, i64 0, i64 %.0216278327 +.lr.ph330: ; preds = %28, %.lr.ph + %.0216280329 = phi i64 [ %36, %.lr.ph ], [ 0, %28 ] + %.2282328 = phi ptr [ %35, %.lr.ph ], [ %.1, %28 ] + %33 = load i8, ptr %.2282328, align 1, !tbaa !15 + %34 = getelementptr inbounds nuw [19 x i8], ptr %7, i64 0, i64 %.0216280329 store i8 %33, ptr %34, align 1, !tbaa !15 - %35 = getelementptr inbounds nuw i8, ptr %.2280326, i64 1 - %36 = add nuw nsw i64 %.0216278327, 1 + %35 = getelementptr inbounds nuw i8, ptr %.2282328, i64 1 + %36 = add nuw nsw i64 %.0216280329, 1 %37 = load i8, ptr %35, align 1, !tbaa !15 %38 = tail call noundef zeroext i1 %_ZN5boost4json6detail8charconv6detail15is_integer_charEc._ZN5boost4json6detail8charconv6detail11is_hex_charEc(i8 noundef signext %37) #48, !callees !765 br i1 %38, label %.lr.ph, label %..critedge.loopexit_crit_edge, !llvm.loop !766 -..critedge.loopexit_crit_edge: ; preds = %.lr.ph328 +..critedge.loopexit_crit_edge: ; preds = %.lr.ph330 br label %.critedge, !llvm.loop !766 .critedge: ; preds = %.lr.ph, %..critedge.loopexit_crit_edge, %28 @@ -61662,85 +61661,85 @@ define linkonce_odr hidden { ptr, i32 } @_ZN5boost4json6detail8charconv6detail6p 51: ; preds = %48 %52 = getelementptr inbounds nuw i8, ptr %.2.lcssa, i64 1 %53 = load i8, ptr %52, align 1, !tbaa !15 - br i1 %30, label %._crit_edge311, label %.preheader277 + br i1 %30, label %._crit_edge313, label %.preheader279 -.preheader277: ; preds = %51 +.preheader279: ; preds = %51 %54 = icmp eq i8 %53, 48 %55 = icmp ne ptr %52, %1 %56 = and i1 %55, %54 - br i1 %56, label %.lr.ph289, label %._crit_edge + br i1 %56, label %.lr.ph291, label %._crit_edge -.lr.ph289: ; preds = %.preheader277, %.lr.ph289 - %.4288 = phi ptr [ %57, %.lr.ph289 ], [ %52, %.preheader277 ] - %.1229287 = phi i64 [ %58, %.lr.ph289 ], [ 0, %.preheader277 ] - %57 = getelementptr inbounds nuw i8, ptr %.4288, i64 1 - %58 = add nsw i64 %.1229287, -1 +.lr.ph291: ; preds = %.preheader279, %.lr.ph291 + %.4290 = phi ptr [ %57, %.lr.ph291 ], [ %52, %.preheader279 ] + %.1229289 = phi i64 [ %58, %.lr.ph291 ], [ 0, %.preheader279 ] + %57 = getelementptr inbounds nuw i8, ptr %.4290, i64 1 + %58 = add nsw i64 %.1229289, -1 %59 = load i8, ptr %57, align 1, !tbaa !15 %60 = icmp eq i8 %59, 48 %61 = icmp ne ptr %57, %1 %62 = and i1 %61, %60 - br i1 %62, label %.lr.ph289, label %._crit_edge, !llvm.loop !767 + br i1 %62, label %.lr.ph291, label %._crit_edge, !llvm.loop !767 -._crit_edge: ; preds = %.lr.ph289, %.preheader277 - %63 = phi i8 [ %53, %.preheader277 ], [ %59, %.lr.ph289 ] - %.1229.lcssa = phi i64 [ 0, %.preheader277 ], [ %58, %.lr.ph289 ] - %.4.lcssa = phi ptr [ %52, %.preheader277 ], [ %57, %.lr.ph289 ] +._crit_edge: ; preds = %.lr.ph291, %.preheader279 + %63 = phi i8 [ %53, %.preheader279 ], [ %59, %.lr.ph291 ] + %.1229.lcssa = phi i64 [ 0, %.preheader279 ], [ %58, %.lr.ph291 ] + %.4.lcssa = phi ptr [ %52, %.preheader279 ], [ %57, %.lr.ph291 ] %64 = icmp eq ptr %.4.lcssa, %1 - br i1 %64, label %_ZN5boost4json6detail8charconv6detail10from_charsImEENS2_19from_chars_result_tIcEEPKcS8_RT_i.exit.thread, label %._crit_edge311 + br i1 %64, label %_ZN5boost4json6detail8charconv6detail10from_charsImEENS2_19from_chars_result_tIcEEPKcS8_RT_i.exit.thread, label %._crit_edge313 -._crit_edge311: ; preds = %51, %._crit_edge +._crit_edge313: ; preds = %51, %._crit_edge %65 = phi i8 [ %63, %._crit_edge ], [ %53, %51 ] %.0228 = phi i64 [ %.1229.lcssa, %._crit_edge ], [ 0, %51 ] %.3 = phi ptr [ %.4.lcssa, %._crit_edge ], [ %52, %51 ] %66 = tail call noundef zeroext i1 %_ZN5boost4json6detail8charconv6detail15is_integer_charEc._ZN5boost4json6detail8charconv6detail11is_hex_charEc(i8 noundef signext %65) #48, !callees !765 - br i1 %66, label %.lr.ph295, label %.critedge3 + br i1 %66, label %.lr.ph297, label %.critedge3 -.lr.ph295: ; preds = %._crit_edge311, %69 - %.5293 = phi ptr [ %72, %69 ], [ %.3, %._crit_edge311 ] - %.1217292 = phi i64 [ %73, %69 ], [ %.0216.lcssa, %._crit_edge311 ] - %67 = icmp ne ptr %.5293, %1 - %68 = icmp samesign ult i64 %.1217292, 19 +.lr.ph297: ; preds = %._crit_edge313, %69 + %.5295 = phi ptr [ %72, %69 ], [ %.3, %._crit_edge313 ] + %.1217294 = phi i64 [ %73, %69 ], [ %.0216.lcssa, %._crit_edge313 ] + %67 = icmp ne ptr %.5295, %1 + %68 = icmp samesign ult i64 %.1217294, 19 %or.cond20 = select i1 %67, i1 %68, i1 false br i1 %or.cond20, label %69, label %.critedge3 -69: ; preds = %.lr.ph295 - %70 = load i8, ptr %.5293, align 1, !tbaa !15 - %71 = getelementptr inbounds nuw [19 x i8], ptr %7, i64 0, i64 %.1217292 +69: ; preds = %.lr.ph297 + %70 = load i8, ptr %.5295, align 1, !tbaa !15 + %71 = getelementptr inbounds nuw [19 x i8], ptr %7, i64 0, i64 %.1217294 store i8 %70, ptr %71, align 1, !tbaa !15 - %72 = getelementptr inbounds nuw i8, ptr %.5293, i64 1 - %73 = add nuw nsw i64 %.1217292, 1 + %72 = getelementptr inbounds nuw i8, ptr %.5295, i64 1 + %73 = add nuw nsw i64 %.1217294, 1 %74 = load i8, ptr %72, align 1, !tbaa !15 %75 = tail call noundef zeroext i1 %_ZN5boost4json6detail8charconv6detail15is_integer_charEc._ZN5boost4json6detail8charconv6detail11is_hex_charEc(i8 noundef signext %74) #48, !callees !765 - br i1 %75, label %.lr.ph295, label %.critedge3, !llvm.loop !768 + br i1 %75, label %.lr.ph297, label %.critedge3, !llvm.loop !768 -.critedge3: ; preds = %69, %.lr.ph295, %._crit_edge311, %48 - %.2230 = phi i64 [ 0, %48 ], [ %.0228, %._crit_edge311 ], [ %.0228, %.lr.ph295 ], [ %.0228, %69 ] - %.0224 = phi i64 [ 0, %48 ], [ %.0216.lcssa, %._crit_edge311 ], [ %.0216.lcssa, %.lr.ph295 ], [ %.0216.lcssa, %69 ] - %.2218 = phi i64 [ %.0216.lcssa, %48 ], [ %.0216.lcssa, %._crit_edge311 ], [ %73, %69 ], [ %.1217292, %.lr.ph295 ] - %.6 = phi ptr [ %.2.lcssa, %48 ], [ %.3, %._crit_edge311 ], [ %72, %69 ], [ %.5293, %.lr.ph295 ] +.critedge3: ; preds = %69, %.lr.ph297, %._crit_edge313, %48 + %.2230 = phi i64 [ 0, %48 ], [ %.0228, %._crit_edge313 ], [ %.0228, %.lr.ph297 ], [ %.0228, %69 ] + %.0224 = phi i64 [ 0, %48 ], [ %.0216.lcssa, %._crit_edge313 ], [ %.0216.lcssa, %.lr.ph297 ], [ %.0216.lcssa, %69 ] + %.2218 = phi i64 [ %.0216.lcssa, %48 ], [ %.0216.lcssa, %._crit_edge313 ], [ %73, %69 ], [ %.1217294, %.lr.ph297 ] + %.6 = phi ptr [ %.2.lcssa, %48 ], [ %.3, %._crit_edge313 ], [ %72, %69 ], [ %.5295, %.lr.ph297 ] %76 = icmp eq i64 %.2218, 19 - br i1 %76, label %.preheader276.preheader, label %.critedge5 + br i1 %76, label %.preheader278.preheader, label %.critedge5 -.preheader276.preheader: ; preds = %.critedge3 - %.pre312 = load i8, ptr %.6, align 1, !tbaa !15 - br label %.preheader276 +.preheader278.preheader: ; preds = %.critedge3 + %.pre314 = load i8, ptr %.6, align 1, !tbaa !15 + br label %.preheader278 -.preheader276: ; preds = %.preheader276.preheader, %83 - %77 = phi i8 [ %87, %83 ], [ %.pre312, %.preheader276.preheader ] - %.0232 = phi i8 [ %.1233, %83 ], [ 0, %.preheader276.preheader ] - %.1226 = phi i64 [ %spec.select, %83 ], [ 0, %.preheader276.preheader ] - %.8 = phi ptr [ %84, %83 ], [ %.6, %.preheader276.preheader ] +.preheader278: ; preds = %.preheader278.preheader, %83 + %77 = phi i8 [ %87, %83 ], [ %.pre314, %.preheader278.preheader ] + %.0232 = phi i8 [ %.1233, %83 ], [ 0, %.preheader278.preheader ] + %.1226 = phi i64 [ %spec.select, %83 ], [ 0, %.preheader278.preheader ] + %.8 = phi ptr [ %84, %83 ], [ %.6, %.preheader278.preheader ] %78 = tail call noundef zeroext i1 %_ZN5boost4json6detail8charconv6detail15is_integer_charEc._ZN5boost4json6detail8charconv6detail11is_hex_charEc(i8 noundef signext %77) #48, !callees !765 br i1 %78, label %82, label %79 -79: ; preds = %.preheader276 +79: ; preds = %.preheader278 %80 = load i8, ptr %.8, align 1, !tbaa !15 %81 = icmp ne i8 %80, 46 %.not244 = icmp eq ptr %.8, %1 %or.cond251 = or i1 %.not244, %81 br i1 %or.cond251, label %.critedge5, label %83 -82: ; preds = %.preheader276 +82: ; preds = %.preheader278 %.not244.old = icmp eq ptr %.8, %1 br i1 %.not244.old, label %.critedge5, label %83 @@ -61753,7 +61752,7 @@ define linkonce_odr hidden { ptr, i32 } @_ZN5boost4json6detail8charconv6detail6p %87 = load i8, ptr %84, align 1, !tbaa !15 %88 = icmp eq i8 %87, 46 %.1233 = select i1 %88, i8 1, i8 %.0232 - br label %.preheader276, !llvm.loop !769 + br label %.preheader278, !llvm.loop !769 .critedge5: ; preds = %82, %79, %.critedge3 %.0225 = phi i64 [ 0, %.critedge3 ], [ %.1226, %79 ], [ %.1226, %82 ] @@ -61901,9 +61900,10 @@ _ZN5boost4json6detail8charconv6detail12is_delimiterEcNS2_12chars_formatE.exit: ; br label %_ZN5boost4json6detail8charconv6detail10from_charsImEENS2_19from_chars_result_tIcEEPKcS8_RT_i.exit.thread _ZN5boost4json6detail8charconv6detail12is_delimiterEcNS2_12chars_formatE.exit.thread: ; preds = %_ZN5boost4json6detail8charconv6detail12is_delimiterEcNS2_12chars_formatE.exit, %_ZN5boost4json6detail8charconv6detail12is_delimiterEcNS2_12chars_formatE.exit, %_ZN5boost4json6detail8charconv6detail12is_delimiterEcNS2_12chars_formatE.exit, %_ZN5boost4json6detail8charconv6detail12is_delimiterEcNS2_12chars_formatE.exit, %_ZN5boost4json6detail8charconv6detail12is_delimiterEcNS2_12chars_formatE.exit, %_ZN5boost4json6detail8charconv6detail12is_delimiterEcNS2_12chars_formatE.exit, %_ZN5boost4json6detail8charconv6detail12is_delimiterEcNS2_12chars_formatE.exit, %_ZN5boost4json6detail8charconv6detail12is_delimiterEcNS2_12chars_formatE.exit, %97, %92 + %.275 = phi i8 [ 80, %97 ], [ 69, %92 ], [ 80, %_ZN5boost4json6detail8charconv6detail12is_delimiterEcNS2_12chars_formatE.exit ], [ 80, %_ZN5boost4json6detail8charconv6detail12is_delimiterEcNS2_12chars_formatE.exit ], [ 80, %_ZN5boost4json6detail8charconv6detail12is_delimiterEcNS2_12chars_formatE.exit ], [ 80, %_ZN5boost4json6detail8charconv6detail12is_delimiterEcNS2_12chars_formatE.exit ], [ 80, %_ZN5boost4json6detail8charconv6detail12is_delimiterEcNS2_12chars_formatE.exit ], [ 80, %_ZN5boost4json6detail8charconv6detail12is_delimiterEcNS2_12chars_formatE.exit ], [ 80, %_ZN5boost4json6detail8charconv6detail12is_delimiterEcNS2_12chars_formatE.exit ], [ 80, %_ZN5boost4json6detail8charconv6detail12is_delimiterEcNS2_12chars_formatE.exit ] %141 = zext nneg i8 %91 to i32 %142 = icmp eq i32 %.248, %141 - %143 = icmp eq i32 %., %141 + %143 = icmp eq i8 %.275, %91 %or.cond252 = or i1 %142, %143 br i1 %or.cond252, label %144, label %_ZN5boost4json6detail8charconv6detail10from_charsImEENS2_19from_chars_result_tIcEEPKcS8_RT_i.exit.thread @@ -61984,43 +61984,43 @@ _ZN5boost4json6detail8charconv6detail12is_delimiterEcNS2_12chars_formatE.exit.th .preheader: ; preds = %170 %174 = add i8 %171, -48 %175 = icmp ult i8 %174, 10 - br i1 %175, label %.lr.ph303, label %.critedge10.thread + br i1 %175, label %.lr.ph305, label %.critedge10.thread -.lr.ph303: ; preds = %.preheader, %179 +.lr.ph305: ; preds = %.preheader, %179 %176 = phi i8 [ %183, %179 ], [ %171, %.preheader ] - %.11302 = phi ptr [ %181, %179 ], [ %.10, %.preheader ] - %.5221301 = phi i64 [ %182, %179 ], [ %.4220, %.preheader ] - %177 = icmp ne ptr %.11302, %1 - %178 = icmp samesign ult i64 %.5221301, 6 + %.11304 = phi ptr [ %181, %179 ], [ %.10, %.preheader ] + %.5221303 = phi i64 [ %182, %179 ], [ %.4220, %.preheader ] + %177 = icmp ne ptr %.11304, %1 + %178 = icmp samesign ult i64 %.5221303, 6 %or.cond22 = select i1 %177, i1 %178, i1 false br i1 %or.cond22, label %179, label %.critedge10 -179: ; preds = %.lr.ph303 - %180 = getelementptr inbounds nuw [6 x i8], ptr %8, i64 0, i64 %.5221301 +179: ; preds = %.lr.ph305 + %180 = getelementptr inbounds nuw [6 x i8], ptr %8, i64 0, i64 %.5221303 store i8 %176, ptr %180, align 1, !tbaa !15 - %181 = getelementptr inbounds nuw i8, ptr %.11302, i64 1 - %182 = add nuw nsw i64 %.5221301, 1 + %181 = getelementptr inbounds nuw i8, ptr %.11304, i64 1 + %182 = add nuw nsw i64 %.5221303, 1 %183 = load i8, ptr %181, align 1, !tbaa !15 %184 = add i8 %183, -48 %185 = icmp ult i8 %184, 10 - br i1 %185, label %.lr.ph303, label %.critedge10, !llvm.loop !773 + br i1 %185, label %.lr.ph305, label %.critedge10, !llvm.loop !773 -.critedge10: ; preds = %179, %.lr.ph303 - %.5221.lcssa = phi i64 [ %182, %179 ], [ %.5221301, %.lr.ph303 ] - %.11.lcssa = phi ptr [ %181, %179 ], [ %.11302, %.lr.ph303 ] +.critedge10: ; preds = %179, %.lr.ph305 + %.5221.lcssa = phi i64 [ %182, %179 ], [ %.5221303, %.lr.ph305 ] + %.11.lcssa = phi ptr [ %181, %179 ], [ %.11304, %.lr.ph305 ] %186 = icmp ne ptr %.11.lcssa, %1 %187 = icmp eq i64 %.5221.lcssa, 6 %or.cond12 = select i1 %186, i1 %187, i1 false br i1 %or.cond12, label %214, label %.critedge10.thread .critedge10.thread: ; preds = %.preheader, %.critedge10 - %.11.lcssa317 = phi ptr [ %.11.lcssa, %.critedge10 ], [ %.10, %.preheader ] - %.5221.lcssa316 = phi i64 [ %.5221.lcssa, %.critedge10 ], [ %.4220, %.preheader ] - %188 = icmp eq i64 %.5221.lcssa316, 0 + %.11.lcssa319 = phi ptr [ %.11.lcssa, %.critedge10 ], [ %.10, %.preheader ] + %.5221.lcssa318 = phi i64 [ %.5221.lcssa, %.critedge10 ], [ %.4220, %.preheader ] + %188 = icmp eq i64 %.5221.lcssa318, 0 br i1 %188, label %193, label %189 189: ; preds = %.critedge10.thread - %190 = icmp eq i64 %.5221.lcssa316, 1 + %190 = icmp eq i64 %.5221.lcssa318, 1 %191 = load i8, ptr %8, align 1 %192 = icmp eq i8 %191, 45 %or.cond16 = select i1 %190, i1 %192, i1 false @@ -62033,7 +62033,7 @@ _ZN5boost4json6detail8charconv6detail12is_delimiterEcNS2_12chars_formatE.exit.th br label %214 195: ; preds = %189 - %196 = getelementptr inbounds nuw i8, ptr %8, i64 %.5221.lcssa316 + %196 = getelementptr inbounds nuw i8, ptr %8, i64 %.5221.lcssa318 %197 = call { ptr, i32 } @_ZN5boost4json6detail8charconv6detail10from_charsIlEENS2_19from_chars_result_tIcEEPKcS8_RT_i(ptr noundef nonnull %8, ptr noundef nonnull %196, ptr noundef nonnull align 8 dereferenceable(8) %4, i32 noundef 10) #48 %198 = extractvalue { ptr, i32 } %197, 1 %199 = load i64, ptr %4, align 8, !tbaa !11 @@ -62075,7 +62075,7 @@ _ZN5boost4json6detail8charconv6detail12is_delimiterEcNS2_12chars_formatE.exit.th br label %214 214: ; preds = %201, %195, %204, %210, %212, %.critedge10, %193 - %.sroa.0210.9 = phi ptr [ %.11.lcssa317, %193 ], [ %.11.lcssa, %.critedge10 ], [ %.11.lcssa317, %201 ], [ %0, %195 ], [ %.11.lcssa317, %204 ], [ %.11.lcssa317, %210 ], [ %.11.lcssa317, %212 ] + %.sroa.0210.9 = phi ptr [ %.11.lcssa319, %193 ], [ %.11.lcssa, %.critedge10 ], [ %.11.lcssa319, %201 ], [ %0, %195 ], [ %.11.lcssa319, %204 ], [ %.11.lcssa319, %210 ], [ %.11.lcssa319, %212 ] %.sroa.23.9 = phi i32 [ 0, %193 ], [ 34, %.critedge10 ], [ %198, %201 ], [ %198, %195 ], [ 0, %204 ], [ 0, %210 ], [ 0, %212 ] call void @llvm.lifetime.end.p0(i64 6, ptr nonnull %8) #48 br label %_ZN5boost4json6detail8charconv6detail10from_charsImEENS2_19from_chars_result_tIcEEPKcS8_RT_i.exit.thread diff --git a/bench/boost/optimized/test_codecvt.ll b/bench/boost/optimized/test_codecvt.ll index a1fe8e9a56f..c6baba8e7ff 100644 --- a/bench/boost/optimized/test_codecvt.ll +++ b/bench/boost/optimized/test_codecvt.ll @@ -8143,115 +8143,114 @@ define linkonce_odr hidden noundef i32 @_ZNK5boost6nowide12utf8_codecvtIDsLi2EE5 %19 = ptrtoint ptr %6 to i64 br label %20 -20: ; preds = %.lr.ph, %55 - %21 = phi ptr [ %2, %.lr.ph ], [ %57, %55 ] - %.194 = phi ptr [ %.032, %.lr.ph ], [ %.0.i, %55 ] +20: ; preds = %.lr.ph, %54 + %21 = phi ptr [ %2, %.lr.ph ], [ %56, %54 ] + %.195 = phi ptr [ %.032, %.lr.ph ], [ %.0.i, %54 ] %22 = call noundef i32 @_ZN5boost6nowide3utf10utf_traitsIcLi1EE6decodeIPKcEEjRT_S7_(ptr noundef nonnull align 8 dereferenceable(8) %9, ptr noundef nonnull %3) switch i32 %22, label %23 [ i32 -1, label %.thread54 - i32 -2, label %60 + i32 -2, label %59 ] 23: ; preds = %20 %24 = icmp ugt i32 %22, 65535 - %spec.select81 = select i1 %24, i64 2, i64 1 - %25 = ptrtoint ptr %.194 to i64 + %25 = ptrtoint ptr %.195 to i64 %26 = sub i64 %19, %25 - %27 = ashr exact i64 %26, 1 - %.not49 = icmp slt i64 %27, %spec.select81 - %28 = icmp ult i32 %22, 65536 - br i1 %.not49, label %44, label %31, !prof !144 + %spec.select8183 = select i1 %24, i64 4, i64 2 + %.not49 = icmp sgt i64 %spec.select8183, %26 + %27 = icmp ult i32 %22, 65536 + br i1 %.not49, label %43, label %30, !prof !144 .thread54: ; preds = %20 - %29 = ptrtoint ptr %.194 to i64 - %30 = sub i64 %19, %29 - %.not4956 = icmp slt i64 %30, 2 + %28 = ptrtoint ptr %.195 to i64 + %29 = sub i64 %19, %28 + %.not4956 = icmp slt i64 %29, 2 br i1 %.not4956, label %.thread62, label %.thread59, !prof !144 -31: ; preds = %23 - br i1 %28, label %.thread59, label %34, !prof !149 - -.thread59: ; preds = %.thread54, %31 - %.031535761 = phi i32 [ %22, %31 ], [ 65533, %.thread54 ] - %32 = trunc nuw i32 %.031535761 to i16 - %33 = getelementptr inbounds nuw i8, ptr %.194, i64 2 - br label %55 - -34: ; preds = %31 - %35 = add i32 %22, 16711680 - %36 = lshr i32 %35, 10 - %37 = trunc i32 %36 to i16 - %38 = or i16 %37, -10240 - %39 = getelementptr inbounds nuw i8, ptr %.194, i64 2 - %40 = trunc i32 %22 to i16 - %41 = and i16 %40, 1023 - %42 = or disjoint i16 %41, -9216 - %43 = getelementptr inbounds nuw i8, ptr %.194, i64 4 - store i16 %42, ptr %39, align 2, !tbaa !79 - br label %55 - -44: ; preds = %23 - br i1 %28, label %.thread62, label %46, !prof !149 - -.thread62: ; preds = %.thread54, %44 - %.031535864 = phi i32 [ %22, %44 ], [ 65533, %.thread54 ] - %45 = trunc nuw i32 %.031535864 to i16 +30: ; preds = %23 + br i1 %27, label %.thread59, label %33, !prof !149 + +.thread59: ; preds = %.thread54, %30 + %.031535761 = phi i32 [ %22, %30 ], [ 65533, %.thread54 ] + %31 = trunc nuw i32 %.031535761 to i16 + %32 = getelementptr inbounds nuw i8, ptr %.195, i64 2 + br label %54 + +33: ; preds = %30 + %34 = add i32 %22, 16711680 + %35 = lshr i32 %34, 10 + %36 = trunc i32 %35 to i16 + %37 = or i16 %36, -10240 + %38 = getelementptr inbounds nuw i8, ptr %.195, i64 2 + %39 = trunc i32 %22 to i16 + %40 = and i16 %39, 1023 + %41 = or disjoint i16 %40, -9216 + %42 = getelementptr inbounds nuw i8, ptr %.195, i64 4 + store i16 %41, ptr %38, align 2, !tbaa !79 + br label %54 + +43: ; preds = %23 + br i1 %27, label %.thread62, label %45, !prof !149 + +.thread62: ; preds = %.thread54, %43 + %.031535864 = phi i32 [ %22, %43 ], [ 65533, %.thread54 ] + %44 = trunc nuw i32 %.031535864 to i16 br label %.thread77 -46: ; preds = %44 - %47 = add i32 %22, 16711680 - %48 = lshr i32 %47, 10 - %49 = trunc i32 %48 to i16 - %50 = or i16 %49, -10240 - %51 = trunc i32 %22 to i16 - %52 = and i16 %51, 1023 - %53 = or disjoint i16 %52, -9216 +45: ; preds = %43 + %46 = add i32 %22, 16711680 + %47 = lshr i32 %46, 10 + %48 = trunc i32 %47 to i16 + %49 = or i16 %48, -10240 + %50 = trunc i32 %22 to i16 + %51 = and i16 %50, 1023 + %52 = or disjoint i16 %51, -9216 br label %.thread77 -.thread77: ; preds = %46, %.thread62 - %.sroa.5.0 = phi i16 [ 0, %.thread62 ], [ %53, %46 ] - %.sink.i50 = phi i16 [ %45, %.thread62 ], [ %50, %46 ] - %54 = getelementptr inbounds nuw i8, ptr %.194, i64 2 - store i16 %.sink.i50, ptr %.194, align 2, !tbaa !79 +.thread77: ; preds = %45, %.thread62 + %.sroa.5.0 = phi i16 [ 0, %.thread62 ], [ %52, %45 ] + %.sink.i50 = phi i16 [ %44, %.thread62 ], [ %49, %45 ] + %53 = getelementptr inbounds nuw i8, ptr %.195, i64 2 + store i16 %.sink.i50, ptr %.195, align 2, !tbaa !79 %.pre = load ptr, ptr %9, align 8, !tbaa !55 br label %.thread71 -55: ; preds = %34, %.thread59 - %.sink.i = phi i16 [ %32, %.thread59 ], [ %38, %34 ] - %.0.i = phi ptr [ %33, %.thread59 ], [ %43, %34 ] - store i16 %.sink.i, ptr %.194, align 2, !tbaa !79 - %56 = icmp ult ptr %.0.i, %6 - %57 = load ptr, ptr %9, align 8 - %58 = icmp ult ptr %57, %3 - %59 = select i1 %56, i1 %58, i1 false - br i1 %59, label %20, label %.thread71 - -60: ; preds = %20 +54: ; preds = %33, %.thread59 + %.sink.i = phi i16 [ %31, %.thread59 ], [ %37, %33 ] + %.0.i = phi ptr [ %32, %.thread59 ], [ %42, %33 ] + store i16 %.sink.i, ptr %.195, align 2, !tbaa !79 + %55 = icmp ult ptr %.0.i, %6 + %56 = load ptr, ptr %9, align 8 + %57 = icmp ult ptr %56, %3 + %58 = select i1 %55, i1 %57, i1 false + br i1 %58, label %20, label %.thread71 + +59: ; preds = %20 store ptr %21, ptr %4, align 8, !tbaa !55 - store ptr %.194, ptr %7, align 8, !tbaa !55 - br label %64 - -.thread71: ; preds = %55, %15, %.thread77 - %61 = phi ptr [ %.pre, %.thread77 ], [ %2, %15 ], [ %57, %55 ] - %storemerge = phi ptr [ %54, %.thread77 ], [ %.032, %15 ], [ %.0.i, %55 ] - %.23575 = phi i16 [ %.sroa.5.0, %.thread77 ], [ %.033, %15 ], [ %.033, %55 ] - store ptr %61, ptr %4, align 8, !tbaa !55 + store ptr %.195, ptr %7, align 8, !tbaa !55 + br label %63 + +.thread71: ; preds = %54, %15, %.thread77 + %60 = phi ptr [ %.pre, %.thread77 ], [ %2, %15 ], [ %56, %54 ] + %storemerge = phi ptr [ %53, %.thread77 ], [ %.032, %15 ], [ %.0.i, %54 ] + %.23575 = phi i16 [ %.sroa.5.0, %.thread77 ], [ %.033, %15 ], [ %.033, %54 ] + store ptr %60, ptr %4, align 8, !tbaa !55 store ptr %storemerge, ptr %7, align 8, !tbaa !55 - %62 = icmp ne ptr %61, %3 - %63 = icmp ne i16 %.23575, 0 - %or.cond = select i1 %62, i1 true, i1 %63 + %61 = icmp ne ptr %60, %3 + %62 = icmp ne i16 %.23575, 0 + %or.cond = select i1 %61, i1 true, i1 %62 %spec.select = zext i1 %or.cond to i32 - br label %64 + br label %63 -64: ; preds = %60, %.thread71 - %.23576 = phi i16 [ %.033, %60 ], [ %.23575, %.thread71 ] - %.340 = phi i32 [ 1, %60 ], [ %spec.select, %.thread71 ] +63: ; preds = %59, %.thread71 + %.23576 = phi i16 [ %.033, %59 ], [ %.23575, %.thread71 ] + %.340 = phi i32 [ 1, %59 ], [ %spec.select, %.thread71 ] %.sroa.0.0.extract.trunc.i = trunc i16 %.23576 to i8 %.sroa.2.0.extract.shift.i = lshr i16 %.23576, 8 %.sroa.2.0.extract.trunc.i = trunc nuw i16 %.sroa.2.0.extract.shift.i to i8 store i8 %.sroa.0.0.extract.trunc.i, ptr %1, align 4, !tbaa !22 - %65 = getelementptr inbounds nuw i8, ptr %1, i64 1 - store i8 %.sroa.2.0.extract.trunc.i, ptr %65, align 1, !tbaa !22 + %64 = getelementptr inbounds nuw i8, ptr %1, i64 1 + store i8 %.sroa.2.0.extract.trunc.i, ptr %64, align 1, !tbaa !22 ret i32 %.340 } diff --git a/bench/box2d/optimized/imgui_demo.ll b/bench/box2d/optimized/imgui_demo.ll index b745292153e..4a26b5d93c2 100644 --- a/bench/box2d/optimized/imgui_demo.ll +++ b/bench/box2d/optimized/imgui_demo.ll @@ -21777,7 +21777,7 @@ _ZL10HelpMarkerPKc.exit639: ; preds = %1411, %1413 call void @_ZN5ImGui16TableSetupColumnEPKcifj(ptr noundef nonnull @.str.1465, i32 noundef 0, float noundef 0.000000e+00, i32 noundef 0) call void @_ZN5ImGui15TableHeadersRowEv() %1431 = icmp eq i32 %.0452835, 1 - %1432 = select i1 %1431, i32 27, i32 9 + %1432 = select i1 %1431, i32 26, i32 8 br label %1434 1433: ; preds = %1434 @@ -21789,7 +21789,7 @@ _ZL10HelpMarkerPKc.exit639: ; preds = %1411, %1413 %1435 = call noundef zeroext i1 @_ZN5ImGui15TableNextColumnEv() call void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef nonnull @.str.1701, i32 noundef %.0449834) %1436 = add nuw nsw i32 %.0449834, 1 - %exitcond939.not = icmp eq i32 %1436, %1432 + %exitcond939.not = icmp eq i32 %1432, %.0449834 br i1 %exitcond939.not, label %1433, label %1434, !llvm.loop !348 .critedge: ; preds = %1422 diff --git a/bench/brotli/optimized/backward_references_hq.ll b/bench/brotli/optimized/backward_references_hq.ll index 46e14e0934f..8da5ca79c99 100644 --- a/bench/brotli/optimized/backward_references_hq.ll +++ b/bench/brotli/optimized/backward_references_hq.ll @@ -4562,8 +4562,6 @@ ZopfliCostModelSetFromCommands.exit: ; preds = %.lr.ph86.i, %785, % %805 = shl nuw i64 1, %804 %806 = add i64 %805, -16 %807 = load i32, ptr %690, align 4, !tbaa !44 - %808 = icmp slt i32 %807, 11 - %809 = select i1 %808, i64 150, i64 325 call void @llvm.lifetime.start.p0(i64 264, ptr nonnull %16) #13 store i32 0, ptr %671, align 4, !tbaa !31 store float 0.000000e+00, ptr %691, align 4, !tbaa !7 @@ -4571,6 +4569,8 @@ ZopfliCostModelSetFromCommands.exit: ; preds = %.lr.ph86.i, %785, % br i1 %645, label %.lr.ph78.i, label %._crit_edge.i334 .lr.ph78.i: ; preds = %ZopfliCostModelSetFromCommands.exit + %808 = icmp slt i32 %807, 11 + %809 = select i1 %808, i32 150, i32 325 %810 = add i64 %693, %802 %.reass633 = add i64 %805, %invariant.op br label %811 @@ -4595,16 +4595,16 @@ ZopfliCostModelSetFromCommands.exit: ; preds = %.lr.ph86.i, %785, % %gep75.i = getelementptr %struct.BackwardMatch, ptr %invariant.gep74.i, i64 %820 %823 = load i32, ptr %gep75.i, align 4, !tbaa !70 %824 = lshr i32 %823, 5 - %825 = zext nneg i32 %824 to i64 - %826 = icmp samesign ult i64 %809, %825 - br i1 %826, label %827, label %829 + %825 = icmp samesign ult i32 %809, %824 + br i1 %825, label %826, label %829 -827: ; preds = %822 - %828 = call i64 @llvm.umax.i64(i64 %825, i64 %spec.store.select.i) +826: ; preds = %822 + %827 = zext nneg i32 %824 to i64 + %828 = call i64 @llvm.umax.i64(i64 %827, i64 %spec.store.select.i) br label %829 -829: ; preds = %827, %822, %811 - %.0.i338 = phi i64 [ %828, %827 ], [ %spec.store.select.i, %822 ], [ %spec.store.select.i, %811 ] +829: ; preds = %826, %822, %811 + %.0.i338 = phi i64 [ %828, %826 ], [ %spec.store.select.i, %822 ], [ %spec.store.select.i, %811 ] %830 = icmp ugt i64 %.0.i338, 1 br i1 %830, label %.lr.ph.preheader.i, label %911 diff --git a/bench/brotli/optimized/block_splitter.ll b/bench/brotli/optimized/block_splitter.ll index 8c864322bd8..87a2f857896 100644 --- a/bench/brotli/optimized/block_splitter.ll +++ b/bench/brotli/optimized/block_splitter.ll @@ -386,9 +386,9 @@ RefineEntropyCodesLiteral.exit.i: ; preds = %HistogramAddHistogr %188 = getelementptr inbounds nuw i8, ptr %6, i64 4 %189 = load i32, ptr %188, align 4, !tbaa !37 %.inv.i = icmp sgt i32 %189, 10 - %190 = select i1 %.inv.i, i64 10, i64 3 - %191 = add i64 %14, -1 - %192 = getelementptr inbounds nuw i8, ptr %174, i64 %191 + %190 = add i64 %14, -1 + %191 = getelementptr inbounds nuw i8, ptr %174, i64 %190 + %192 = select i1 %.inv.i, i64 9, i64 2 br label %193 193: ; preds = %BuildBlockHistogramsLiteral.exit.i, %184 @@ -561,15 +561,15 @@ BitCost.exit.i.i: ; preds = %226, %223, %215 br i1 %exitcond148.not.i.i, label %.lr.ph.preheader.i.i, label %236, !llvm.loop !59 .lr.ph.preheader.i.i: ; preds = %276 - %278 = load i8, ptr %192, align 1, !tbaa !26 - %279 = mul i64 %195, %191 + %278 = load i8, ptr %191, align 1, !tbaa !26 + %279 = mul i64 %195, %190 br label %.lr.ph.i.i .lr.ph.i.i: ; preds = %294, %.lr.ph.preheader.i.i %.0107142.i.i = phi i8 [ %.1.i159.i, %294 ], [ %278, %.lr.ph.preheader.i.i ] %.0108141.i.i = phi i64 [ %283, %294 ], [ %279, %.lr.ph.preheader.i.i ] %.0109140.i.i = phi i64 [ %.1110.i.i, %294 ], [ 1, %.lr.ph.preheader.i.i ] - %.1117139.i.i = phi i64 [ %282, %294 ], [ %191, %.lr.ph.preheader.i.i ] + %.1117139.i.i = phi i64 [ %282, %294 ], [ %190, %.lr.ph.preheader.i.i ] %280 = and i8 %.0107142.i.i, 7 %281 = shl nuw i8 1, %280 %282 = add i64 %.1117139.i.i, -1 @@ -691,7 +691,7 @@ ClearHistogramsLiteral.exit.i.i: ; preds = %ClearHistogramsLite BuildBlockHistogramsLiteral.exit.i: ; preds = %ClearHistogramsLiteral.exit.i.i %333 = add nuw nsw i64 %.0179.i, 1 - %exitcond.not.i65 = icmp eq i64 %333, %190 + %exitcond.not.i65 = icmp eq i64 %192, %.0179.i br i1 %exitcond.not.i65, label %334, label %193, !llvm.loop !66 334: ; preds = %BuildBlockHistogramsLiteral.exit.i @@ -1570,9 +1570,9 @@ RefineEntropyCodesCommand.exit.i: ; preds = %HistogramAddHistogr %750 = getelementptr inbounds nuw i8, ptr %6, i64 4 %751 = load i32, ptr %750, align 4, !tbaa !37 %.inv.i90 = icmp sgt i32 %751, 10 - %752 = select i1 %.inv.i90, i64 10, i64 3 - %753 = add i64 %2, -1 - %754 = getelementptr inbounds nuw i8, ptr %736, i64 %753 + %752 = add i64 %2, -1 + %753 = getelementptr inbounds nuw i8, ptr %736, i64 %752 + %754 = select i1 %.inv.i90, i64 9, i64 2 br label %755 755: ; preds = %BuildBlockHistogramsCommand.exit.i, %746 @@ -1745,15 +1745,15 @@ BitCost.exit.i.i100: ; preds = %788, %785, %777 br i1 %exitcond148.not.i.i112, label %.lr.ph.preheader.i.i113, label %798, !llvm.loop !101 .lr.ph.preheader.i.i113: ; preds = %838 - %840 = load i8, ptr %754, align 1, !tbaa !26 - %841 = mul i64 %757, %753 + %840 = load i8, ptr %753, align 1, !tbaa !26 + %841 = mul i64 %757, %752 br label %.lr.ph.i.i114 .lr.ph.i.i114: ; preds = %856, %.lr.ph.preheader.i.i113 %.0107142.i.i115 = phi i8 [ %.1.i159.i123, %856 ], [ %840, %.lr.ph.preheader.i.i113 ] %.0108141.i.i116 = phi i64 [ %845, %856 ], [ %841, %.lr.ph.preheader.i.i113 ] %.0109140.i.i117 = phi i64 [ %.1110.i.i122, %856 ], [ 1, %.lr.ph.preheader.i.i113 ] - %.1117139.i.i118 = phi i64 [ %844, %856 ], [ %753, %.lr.ph.preheader.i.i113 ] + %.1117139.i.i118 = phi i64 [ %844, %856 ], [ %752, %.lr.ph.preheader.i.i113 ] %842 = and i8 %.0107142.i.i115, 7 %843 = shl nuw i8 1, %842 %844 = add i64 %.1117139.i.i118, -1 @@ -1875,7 +1875,7 @@ ClearHistogramsCommand.exit.i.i: ; preds = %ClearHistogramsComm BuildBlockHistogramsCommand.exit.i: ; preds = %ClearHistogramsCommand.exit.i.i %895 = add nuw nsw i64 %.0180.i, 1 - %exitcond.not.i145 = icmp eq i64 %895, %752 + %exitcond.not.i145 = icmp eq i64 %754, %.0180.i br i1 %exitcond.not.i145, label %896, label %755, !llvm.loop !107 896: ; preds = %BuildBlockHistogramsCommand.exit.i @@ -2778,9 +2778,9 @@ RefineEntropyCodesDistance.exit.i: ; preds = %HistogramAddHistogr %1327 = getelementptr inbounds nuw i8, ptr %6, i64 4 %1328 = load i32, ptr %1327, align 4, !tbaa !37 %.inv.i265 = icmp sgt i32 %1328, 10 - %1329 = select i1 %.inv.i265, i64 10, i64 3 - %1330 = add i64 %.1, -1 - %1331 = getelementptr inbounds nuw i8, ptr %1313, i64 %1330 + %1329 = add i64 %.1, -1 + %1330 = getelementptr inbounds nuw i8, ptr %1313, i64 %1329 + %1331 = select i1 %.inv.i265, i64 9, i64 2 br label %1332 1332: ; preds = %BuildBlockHistogramsDistance.exit.i, %1323 @@ -2953,15 +2953,15 @@ BitCost.exit.i.i277: ; preds = %1365, %1362, %1354 br i1 %exitcond148.not.i.i289, label %.lr.ph.preheader.i.i290, label %1375, !llvm.loop !141 .lr.ph.preheader.i.i290: ; preds = %1415 - %1417 = load i8, ptr %1331, align 1, !tbaa !26 - %1418 = mul i64 %1334, %1330 + %1417 = load i8, ptr %1330, align 1, !tbaa !26 + %1418 = mul i64 %1334, %1329 br label %.lr.ph.i.i291 .lr.ph.i.i291: ; preds = %1433, %.lr.ph.preheader.i.i290 %.0107142.i.i292 = phi i8 [ %.1.i159.i300, %1433 ], [ %1417, %.lr.ph.preheader.i.i290 ] %.0108141.i.i293 = phi i64 [ %1422, %1433 ], [ %1418, %.lr.ph.preheader.i.i290 ] %.0109140.i.i294 = phi i64 [ %.1110.i.i299, %1433 ], [ 1, %.lr.ph.preheader.i.i290 ] - %.1117139.i.i295 = phi i64 [ %1421, %1433 ], [ %1330, %.lr.ph.preheader.i.i290 ] + %.1117139.i.i295 = phi i64 [ %1421, %1433 ], [ %1329, %.lr.ph.preheader.i.i290 ] %1419 = and i8 %.0107142.i.i292, 7 %1420 = shl nuw i8 1, %1419 %1421 = add i64 %.1117139.i.i295, -1 @@ -3083,7 +3083,7 @@ ClearHistogramsDistance.exit.i.i: ; preds = %ClearHistogramsDist BuildBlockHistogramsDistance.exit.i: ; preds = %ClearHistogramsDistance.exit.i.i %1472 = add nuw nsw i64 %.0180.i266, 1 - %exitcond.not.i322 = icmp eq i64 %1472, %1329 + %exitcond.not.i322 = icmp eq i64 %1331, %.0180.i266 br i1 %exitcond.not.i322, label %1473, label %1332, !llvm.loop !147 1473: ; preds = %BuildBlockHistogramsDistance.exit.i diff --git a/bench/clamav/optimized/unpack.ll b/bench/clamav/optimized/unpack.ll index 8ab6348129e..ddda86a4538 100644 --- a/bench/clamav/optimized/unpack.ll +++ b/bench/clamav/optimized/unpack.ll @@ -14220,28 +14220,30 @@ define noundef ptr @_ZN6Unpack11ApplyFilterEPhjP12UnpackFilter(ptr noundef nonnu %7 = getelementptr inbounds nuw i8, ptr %0, i64 19856 %8 = load i64, ptr %7, align 8, !tbaa !169 %9 = trunc i64 %8 to i32 - %10 = icmp eq i8 %5, 2 - %11 = select i1 %10, i32 233, i32 232 %invariant.op = add i32 %9, 1 - %12 = icmp ugt i32 %2, 4 - br i1 %12, label %.lr.ph87, label %.loopexit - -.lr.ph87: ; preds = %6, %33 - %.06585 = phi ptr [ %.166, %33 ], [ %1, %6 ] - %.06784 = phi i32 [ %.168, %33 ], [ 0, %6 ] - %13 = getelementptr inbounds nuw i8, ptr %.06585, i64 1 - %14 = load i8, ptr %.06585, align 1, !tbaa !27 - %15 = add i32 %.06784, 1 - %16 = icmp eq i8 %14, -24 - %17 = zext i8 %14 to i32 - %18 = icmp eq i32 %11, %17 - %or.cond = or i1 %16, %18 + %10 = icmp ugt i32 %2, 4 + br i1 %10, label %.lr.ph87, label %.loopexit + +.lr.ph87: ; preds = %6 + %11 = icmp eq i8 %5, 2 + %12 = select i1 %11, i8 -23, i8 -24 + br label %13 + +13: ; preds = %.lr.ph87, %33 + %.06585 = phi ptr [ %1, %.lr.ph87 ], [ %.166, %33 ] + %.06784 = phi i32 [ 0, %.lr.ph87 ], [ %.168, %33 ] + %14 = getelementptr inbounds nuw i8, ptr %.06585, i64 1 + %15 = load i8, ptr %.06585, align 1, !tbaa !27 + %16 = add i32 %.06784, 1 + %17 = icmp eq i8 %15, -24 + %18 = icmp eq i8 %12, %15 + %or.cond = or i1 %17, %18 br i1 %or.cond, label %19, label %33 -19: ; preds = %.lr.ph87 +19: ; preds = %13 %.reass = add i32 %.06784, %invariant.op %20 = and i32 %.reass, 16777215 - %21 = load i32, ptr %13, align 4, !tbaa !93 + %21 = load i32, ptr %14, align 4, !tbaa !93 %.not = icmp sgt i32 %21, -1 br i1 %.not, label %27, label %22 @@ -14264,7 +14266,7 @@ define noundef ptr @_ZN6Unpack11ApplyFilterEPhjP12UnpackFilter(ptr noundef nonnu .sink.split: ; preds = %25, %28 %.sink = phi i32 [ %29, %28 ], [ %26, %25 ] - store i32 %.sink, ptr %13, align 4, !tbaa !93 + store i32 %.sink, ptr %14, align 4, !tbaa !93 br label %30 30: ; preds = %.sink.split, %27, %22 @@ -14272,12 +14274,12 @@ define noundef ptr @_ZN6Unpack11ApplyFilterEPhjP12UnpackFilter(ptr noundef nonnu %32 = add i32 %.06784, 5 br label %33 -33: ; preds = %.lr.ph87, %30 - %.168 = phi i32 [ %32, %30 ], [ %15, %.lr.ph87 ] - %.166 = phi ptr [ %31, %30 ], [ %13, %.lr.ph87 ] +33: ; preds = %13, %30 + %.168 = phi i32 [ %32, %30 ], [ %16, %13 ] + %.166 = phi ptr [ %31, %30 ], [ %14, %13 ] %34 = add i32 %.168, 4 %35 = icmp ult i32 %34, %2 - br i1 %35, label %.lr.ph87, label %.loopexit, !llvm.loop !322 + br i1 %35, label %13, label %.loopexit, !llvm.loop !322 36: ; preds = %4 %37 = getelementptr inbounds nuw i8, ptr %0, i64 19856 diff --git a/bench/cmake/optimized/ftp.ll b/bench/cmake/optimized/ftp.ll index de80cfc713b..44edd31111d 100644 --- a/bench/cmake/optimized/ftp.ll +++ b/bench/cmake/optimized/ftp.ll @@ -4763,13 +4763,13 @@ _ftp_state.exit: ; preds = %16, %20, %26, %32, %41 = load i32, ptr %40, align 1 %42 = and i32 %41, 131072 %.not.i16 = icmp eq i32 %42, 0 - br i1 %.not.i16, label %59, label %43 + br i1 %.not.i16, label %58, label %43 43: ; preds = %37 %44 = getelementptr inbounds nuw i8, ptr %3, i64 1240 %45 = load ptr, ptr %44, align 8, !tbaa !145 %.not18.i = icmp eq ptr %45, null - br i1 %.not18.i, label %59, label %46 + br i1 %.not18.i, label %58, label %46 46: ; preds = %43 %47 = getelementptr inbounds nuw i8, ptr %0, i64 4876 @@ -4778,26 +4778,25 @@ _ftp_state.exit: ; preds = %16, %20, %26, %32, %.not19 = icmp eq i32 %49, 0 %50 = getelementptr i8, ptr %3, i64 1272 %.val.i = load i8, ptr %50, align 8, !tbaa !21 - %51 = sext i8 %.val.i to i32 - %52 = select i1 %.not19, i32 73, i32 65 - %.not20 = icmp eq i32 %52, %51 - br i1 %.not20, label %59, label %53 - -53: ; preds = %46 - %54 = getelementptr inbounds nuw i8, ptr %39, i64 16 - store i32 1, ptr %54, align 8, !tbaa !97 - %55 = load i32, ptr %47, align 4 - %56 = and i32 %55, 16384 - %57 = icmp ne i32 %56, 0 - %58 = tail call fastcc i32 @ftp_nb_type(ptr noundef nonnull %0, ptr noundef nonnull %3, i1 noundef zeroext %57, i8 noundef zeroext 19) + %51 = select i1 %.not19, i8 73, i8 65 + %.not20 = icmp eq i8 %51, %.val.i + br i1 %.not20, label %58, label %52 + +52: ; preds = %46 + %53 = getelementptr inbounds nuw i8, ptr %39, i64 16 + store i32 1, ptr %53, align 8, !tbaa !97 + %54 = load i32, ptr %47, align 4 + %55 = and i32 %54, 16384 + %56 = icmp ne i32 %55, 0 + %57 = tail call fastcc i32 @ftp_nb_type(ptr noundef nonnull %0, ptr noundef nonnull %3, i1 noundef zeroext %56, i8 noundef zeroext 19) br label %ftp_state_type.exit -59: ; preds = %46, %43, %37 - %60 = tail call fastcc i32 @ftp_state_size(ptr noundef nonnull %0, ptr noundef %3) +58: ; preds = %46, %43, %37 + %59 = tail call fastcc i32 @ftp_state_size(ptr noundef nonnull %0, ptr noundef %3) br label %ftp_state_type.exit -ftp_state_type.exit: ; preds = %59, %53, %14, %_ftp_state.exit - %.0 = phi i32 [ %15, %14 ], [ 0, %_ftp_state.exit ], [ %60, %59 ], [ %58, %53 ] +ftp_state_type.exit: ; preds = %58, %52, %14, %_ftp_state.exit + %.0 = phi i32 [ %15, %14 ], [ 0, %_ftp_state.exit ], [ %59, %58 ], [ %57, %52 ] ret i32 %.0 } @@ -5235,13 +5234,13 @@ _ftp_state.exit126: ; preds = %205, %213, %219, %2 %246 = load i32, ptr %245, align 1 %247 = and i32 %246, 131072 %.not.i127 = icmp eq i32 %247, 0 - br i1 %.not.i127, label %264, label %248 + br i1 %.not.i127, label %263, label %248 248: ; preds = %242 %249 = getelementptr inbounds nuw i8, ptr %244, i64 1240 %250 = load ptr, ptr %249, align 8, !tbaa !145 %.not18.i = icmp eq ptr %250, null - br i1 %.not18.i, label %264, label %251 + br i1 %.not18.i, label %263, label %251 251: ; preds = %248 %252 = getelementptr inbounds nuw i8, ptr %0, i64 4876 @@ -5250,26 +5249,25 @@ _ftp_state.exit126: ; preds = %205, %213, %219, %2 %.not21.i = icmp eq i32 %254, 0 %255 = getelementptr i8, ptr %244, i64 1272 %.val.i128 = load i8, ptr %255, align 8, !tbaa !21 - %256 = sext i8 %.val.i128 to i32 - %257 = select i1 %.not21.i, i32 73, i32 65 - %.not22.i = icmp eq i32 %257, %256 - br i1 %.not22.i, label %264, label %258 - -258: ; preds = %251 - %259 = getelementptr inbounds nuw i8, ptr %243, i64 16 - store i32 1, ptr %259, align 8, !tbaa !97 - %260 = load i32, ptr %252, align 4 - %261 = and i32 %260, 16384 - %262 = icmp ne i32 %261, 0 - %263 = call fastcc i32 @ftp_nb_type(ptr noundef nonnull %0, ptr noundef nonnull %244, i1 noundef zeroext %262, i8 noundef zeroext 19) + %256 = select i1 %.not21.i, i8 73, i8 65 + %.not22.i = icmp eq i8 %256, %.val.i128 + br i1 %.not22.i, label %263, label %257 + +257: ; preds = %251 + %258 = getelementptr inbounds nuw i8, ptr %243, i64 16 + store i32 1, ptr %258, align 8, !tbaa !97 + %259 = load i32, ptr %252, align 4 + %260 = and i32 %259, 16384 + %261 = icmp ne i32 %260, 0 + %262 = call fastcc i32 @ftp_nb_type(ptr noundef nonnull %0, ptr noundef nonnull %244, i1 noundef zeroext %261, i8 noundef zeroext 19) br label %ftp_state_type.exit -264: ; preds = %251, %248, %242 - %265 = call fastcc i32 @ftp_state_size(ptr noundef nonnull %0, ptr noundef %244) +263: ; preds = %251, %248, %242 + %264 = call fastcc i32 @ftp_state_size(ptr noundef nonnull %0, ptr noundef %244) br label %ftp_state_type.exit -ftp_state_type.exit: ; preds = %264, %258, %.thread155, %_ftp_state.exit126, %_ftp_state.exit - %.3 = phi i32 [ 0, %_ftp_state.exit126 ], [ 0, %_ftp_state.exit ], [ %.175.ph, %.thread155 ], [ %265, %264 ], [ %263, %258 ] +ftp_state_type.exit: ; preds = %263, %257, %.thread155, %_ftp_state.exit126, %_ftp_state.exit + %.3 = phi i32 [ 0, %_ftp_state.exit126 ], [ 0, %_ftp_state.exit ], [ %.175.ph, %.thread155 ], [ %264, %263 ], [ %262, %257 ] ret i32 %.3 } diff --git a/bench/cpp-httplib/optimized/httplib.ll b/bench/cpp-httplib/optimized/httplib.ll index 9ec152fa7f8..819c10b0b07 100644 --- a/bench/cpp-httplib/optimized/httplib.ll +++ b/bench/cpp-httplib/optimized/httplib.ll @@ -96608,8 +96608,8 @@ _ZNKSt5ctypeIcE6narrowEcc.exit: ; preds = %8, %17, %22 store i64 0, ptr %77, align 8, !tbaa !7 %78 = load ptr, ptr %76, align 8, !tbaa !13 store i8 0, ptr %78, align 1, !tbaa !14 - %79 = select i1 %74, i32 2, i32 4 - %80 = getelementptr inbounds nuw i8, ptr %0, i64 216 + %79 = getelementptr inbounds nuw i8, ptr %0, i64 216 + %80 = select i1 %74, i32 1, i32 3 br label %83 81: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc.exit @@ -96648,7 +96648,7 @@ _ZNKSt5ctypeIcE6narrowEcc.exit: ; preds = %8, %17, %22 %101 = load i64, ptr %77, align 8, !tbaa !7 %102 = add i64 %101, 1 %103 = load ptr, ptr %76, align 8, !tbaa !13 - %104 = icmp eq ptr %103, %80 + %104 = icmp eq ptr %103, %79 br i1 %104, label %105, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i 105: ; preds = %98 @@ -96657,7 +96657,7 @@ _ZNKSt5ctypeIcE6narrowEcc.exit: ; preds = %8, %17, %22 br label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i: ; preds = %105, %98 - %107 = load i64, ptr %80, align 8 + %107 = load i64, ptr %79, align 8 %108 = select i1 %104, i64 15, i64 %107 %109 = icmp ugt i64 %102, %108 br i1 %109, label %110, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc.exit @@ -96676,7 +96676,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc.exit: ; preds = %_ZNKS %114 = getelementptr inbounds nuw i8, ptr %113, i64 %102 store i8 0, ptr %114, align 1, !tbaa !14 %115 = add nuw nsw i32 %.060, 1 - %exitcond.not = icmp eq i32 %115, %79 + %exitcond.not = icmp eq i32 %80, %.060 br i1 %exitcond.not, label %81, label %83, !llvm.loop !1347 116: ; preds = %73 diff --git a/bench/cpython/optimized/longobject.ll b/bench/cpython/optimized/longobject.ll index 1f114c0106e..88417baedaf 100644 --- a/bench/cpython/optimized/longobject.ll +++ b/bench/cpython/optimized/longobject.ll @@ -2464,39 +2464,38 @@ define dso_local ptr @_PyLong_FromByteArray(ptr noundef readonly captures(none) %.078 = select i1 %.not, i64 -1, i64 1 %.073 = select i1 %.not, ptr %8, ptr %0 %.not88 = icmp eq i32 %3, 0 - br i1 %.not88, label %.thread, label %9 + br i1 %.not88, label %12, label %9 9: ; preds = %6 %10 = load i8, ptr %.079, align 1, !tbaa !29 %.fr = freeze i8 %10 %11 = icmp sgt i8 %.fr, -1 - %spec.select123 = select i1 %11, i32 0, i32 255 - br label %.thread + br label %12 -.thread: ; preds = %9, %6 - %.072110 = phi i1 [ true, %6 ], [ %11, %9 ] - %12 = phi i32 [ 0, %6 ], [ %spec.select123, %9 ] - br label %13 +12: ; preds = %9, %6 + %.072 = phi i1 [ %11, %9 ], [ true, %6 ] + %not..072 = xor i1 %.072, true + %13 = sext i1 %not..072 to i8 + br label %14 -13: ; preds = %.thread, %16 - %.07495 = phi ptr [ %.079, %.thread ], [ %18, %16 ] - %.07594 = phi i64 [ 0, %.thread ], [ %17, %16 ] - %14 = load i8, ptr %.07495, align 1, !tbaa !29 - %15 = zext i8 %14 to i32 - %.not90 = icmp eq i32 %12, %15 +14: ; preds = %12, %16 + %.07495 = phi ptr [ %.079, %12 ], [ %18, %16 ] + %.07594 = phi i64 [ 0, %12 ], [ %17, %16 ] + %15 = load i8, ptr %.07495, align 1, !tbaa !29 + %.not90 = icmp eq i8 %15, %13 br i1 %.not90, label %16, label %19 -16: ; preds = %13 +16: ; preds = %14 %17 = add nuw i64 %.07594, 1 %18 = getelementptr i8, ptr %.07495, i64 %.078.neg %exitcond.not = icmp eq i64 %17, %1 - br i1 %exitcond.not, label %19, label %13, !llvm.loop !57 + br i1 %exitcond.not, label %19, label %14, !llvm.loop !57 -19: ; preds = %13, %16 - %.075.lcssa = phi i64 [ %.07594, %13 ], [ %1, %16 ] +19: ; preds = %14, %16 + %.075.lcssa = phi i64 [ %.07594, %14 ], [ %1, %16 ] %20 = sub i64 %1, %.075.lcssa %21 = icmp uge i64 %20, %1 - %or.cond.not = or i1 %.072110, %21 + %or.cond.not = or i1 %.072, %21 %not.or.cond.not = xor i1 %or.cond.not, true %22 = zext i1 %not.or.cond.not to i64 %.080 = add nuw i64 %20, %22 @@ -2518,11 +2517,11 @@ define dso_local ptr @_PyLong_FromByteArray(ptr noundef readonly captures(none) .preheader: ; preds = %26 %.not106 = icmp eq i64 %.080, 0 - br i1 %.not106, label %.thread116, label %.lr.ph + br i1 %.not106, label %.thread, label %.lr.ph .lr.ph: ; preds = %.preheader %32 = getelementptr inbounds nuw i8, ptr %30, i64 24 - br i1 %.072110, label %.lr.ph.split.us, label %.lr.ph.split + br i1 %.072, label %.lr.ph.split.us, label %.lr.ph.split .lr.ph.split.us: ; preds = %.lr.ph, %47 %.065101.us = phi ptr [ %49, %47 ], [ %.073, %.lr.ph ] @@ -2616,23 +2615,23 @@ define dso_local ptr @_PyLong_FromByteArray(ptr noundef readonly captures(none) %.2 = phi i64 [ %77, %73 ], [ %.076.lcssa, %._crit_edge ] %.2.fr = freeze i64 %.2 %79 = icmp eq i64 %.2.fr, 0 - %80 = select i1 %.072110, i64 0, i64 2 - %spec.select124 = select i1 %79, i64 1, i64 %80 - br label %.thread116 - -.thread116: ; preds = %78, %.preheader - %.2119 = phi i64 [ 0, %.preheader ], [ %.2.fr, %78 ] - %81 = phi i64 [ 1, %.preheader ], [ %spec.select124, %78 ] - %82 = shl i64 %.2119, 3 + %80 = select i1 %.072, i64 0, i64 2 + %spec.select = select i1 %79, i64 1, i64 %80 + br label %.thread + +.thread: ; preds = %78, %.preheader + %.2115 = phi i64 [ 0, %.preheader ], [ %.2.fr, %78 ] + %81 = phi i64 [ 1, %.preheader ], [ %spec.select, %78 ] + %82 = shl i64 %.2115, 3 %83 = or disjoint i64 %81, %82 %84 = getelementptr inbounds nuw i8, ptr %30, i64 16 store i64 %83, ptr %84, align 8, !tbaa !30 - %85 = and i64 %.2119, 2305843009213693951 + %85 = and i64 %.2115, 2305843009213693951 %86 = getelementptr inbounds nuw i8, ptr %30, i64 24 br label %87 -87: ; preds = %88, %.thread116 - %.0.i = phi i64 [ %85, %.thread116 ], [ %89, %88 ] +87: ; preds = %88, %.thread + %.0.i = phi i64 [ %85, %.thread ], [ %89, %88 ] %.not13.i = icmp eq i64 %.0.i, 0 br i1 %.not13.i, label %.critedge.thread.i, label %88 @@ -3300,86 +3299,84 @@ _PyLong_NumBits.exit.thread: ; preds = %80, %_PyLong_NumBit %100 = and i64 %.val.i177180, 3 %101 = icmp eq i64 %100, 2 %102 = add nsw i64 %2, -1 - br i1 %101, label %.lr.ph169, label %124 + br i1 %101, label %.lr.ph169, label %122 .lr.ph169: ; preds = %99 - %103 = select i1 %11, i32 128, i32 0 - %104 = select i1 %11, i32 0, i32 128 + %103 = select i1 %11, i8 -128, i8 0 + %104 = select i1 %11, i8 0, i8 -128 br label %105 -._crit_edge: ; preds = %119 +._crit_edge: ; preds = %117 %spec.select = select i1 %.188.in, i64 %2, i64 %94 br label %_fits_in_n_bits.exit.thread -105: ; preds = %.lr.ph169, %119 - %.085168 = phi i64 [ 0, %.lr.ph169 ], [ %120, %119 ] - %.086167 = phi ptr [ %1, %.lr.ph169 ], [ %121, %119 ] +105: ; preds = %.lr.ph169, %117 + %.085168 = phi i64 [ 0, %.lr.ph169 ], [ %118, %117 ] + %.086167 = phi ptr [ %1, %.lr.ph169 ], [ %119, %117 ] %106 = icmp eq i64 %.085168, 0 - br i1 %106, label %107, label %111 + br i1 %106, label %107, label %110 107: ; preds = %105 %108 = load i8, ptr %.086167, align 1, !tbaa !29 - %109 = zext i8 %108 to i32 - %110 = icmp eq i32 %104, %109 - br label %119 - -111: ; preds = %105 - %112 = icmp slt i64 %.085168, %102 - %113 = load i8, ptr %.086167, align 1, !tbaa !29 - br i1 %112, label %114, label %116 + %109 = icmp eq i8 %104, %108 + br label %117 -114: ; preds = %111 - %115 = icmp eq i8 %113, 0 - br label %119 +110: ; preds = %105 + %111 = icmp slt i64 %.085168, %102 + %112 = load i8, ptr %.086167, align 1, !tbaa !29 + br i1 %111, label %113, label %115 -116: ; preds = %111 - %117 = zext i8 %113 to i32 - %118 = icmp eq i32 %103, %117 - br label %119 - -119: ; preds = %107, %116, %114 - %.188.in = phi i1 [ %110, %107 ], [ %115, %114 ], [ %118, %116 ] - %120 = add nuw nsw i64 %.085168, 1 - %121 = getelementptr i8, ptr %.086167, i64 1 - %122 = icmp slt i64 %120, %2 - %123 = select i1 %122, i1 %.188.in, i1 false - br i1 %123, label %105, label %._crit_edge, !llvm.loop !69 - -124: ; preds = %99 - %125 = select i1 %11, i64 %102, i64 0 - %126 = getelementptr i8, ptr %1, i64 %125 - %127 = load i8, ptr %126, align 1, !tbaa !29 - %.not115 = icmp sgt i8 %127, -1 - br i1 %.not115, label %_fits_in_n_bits.exit.thread, label %128 - -128: ; preds = %124 - %129 = and i32 %3, 4 - %.not116 = icmp eq i32 %129, 0 - %130 = zext i1 %.not116 to i64 - %spec.select132 = add nuw nsw i64 %2, %130 +113: ; preds = %110 + %114 = icmp eq i8 %112, 0 + br label %117 + +115: ; preds = %110 + %116 = icmp eq i8 %103, %112 + br label %117 + +117: ; preds = %107, %115, %113 + %.188.in = phi i1 [ %109, %107 ], [ %114, %113 ], [ %116, %115 ] + %118 = add nuw nsw i64 %.085168, 1 + %119 = getelementptr i8, ptr %.086167, i64 1 + %120 = icmp slt i64 %118, %2 + %121 = select i1 %120, i1 %.188.in, i1 false + br i1 %121, label %105, label %._crit_edge, !llvm.loop !69 + +122: ; preds = %99 + %123 = select i1 %11, i64 %102, i64 0 + %124 = getelementptr i8, ptr %1, i64 %123 + %125 = load i8, ptr %124, align 1, !tbaa !29 + %.not115 = icmp sgt i8 %125, -1 + br i1 %.not115, label %_fits_in_n_bits.exit.thread, label %126 + +126: ; preds = %122 + %127 = and i32 %3, 4 + %.not116 = icmp eq i32 %127, 0 + %128 = zext i1 %.not116 to i64 + %spec.select132 = add nuw nsw i64 %2, %128 br label %_fits_in_n_bits.exit.thread -_fits_in_n_bits.exit.thread: ; preds = %73, %.loopexit, %128, %_fits_in_n_bits.exit142.thread, %_PyLong_NumBits.exit, %_PyLong_NumBits.exit.thread, %._crit_edge, %124, %69, %_fits_in_n_bits.exit, %37, %62 - %.096 = phi i64 [ 8, %37 ], [ 8, %62 ], [ %2, %_fits_in_n_bits.exit ], [ 8, %69 ], [ %spec.select, %._crit_edge ], [ %94, %_PyLong_NumBits.exit.thread ], [ %93, %_PyLong_NumBits.exit ], [ %94, %124 ], [ %spec.select131, %_fits_in_n_bits.exit142.thread ], [ %spec.select132, %128 ], [ 8, %.loopexit ], [ 8, %73 ] - br i1 %.not.not.not, label %131, label %Py_DECREF.exit134 +_fits_in_n_bits.exit.thread: ; preds = %73, %.loopexit, %126, %_fits_in_n_bits.exit142.thread, %_PyLong_NumBits.exit, %_PyLong_NumBits.exit.thread, %._crit_edge, %122, %69, %_fits_in_n_bits.exit, %37, %62 + %.096 = phi i64 [ 8, %37 ], [ 8, %62 ], [ %2, %_fits_in_n_bits.exit ], [ 8, %69 ], [ %spec.select, %._crit_edge ], [ %94, %_PyLong_NumBits.exit.thread ], [ %93, %_PyLong_NumBits.exit ], [ %94, %122 ], [ %spec.select131, %_fits_in_n_bits.exit142.thread ], [ %spec.select132, %126 ], [ 8, %.loopexit ], [ 8, %73 ] + br i1 %.not.not.not, label %129, label %Py_DECREF.exit134 -131: ; preds = %_fits_in_n_bits.exit.thread - %132 = load i32, ptr %.089, align 8, !tbaa !29 - %.not.i = icmp sgt i32 %132, -1 - br i1 %.not.i, label %133, label %Py_DECREF.exit134 +129: ; preds = %_fits_in_n_bits.exit.thread + %130 = load i32, ptr %.089, align 8, !tbaa !29 + %.not.i = icmp sgt i32 %130, -1 + br i1 %.not.i, label %131, label %Py_DECREF.exit134 -133: ; preds = %131 - %134 = add nsw i32 %132, -1 - store i32 %134, ptr %.089, align 8, !tbaa !29 - %135 = icmp eq i32 %134, 0 - br i1 %135, label %136, label %Py_DECREF.exit134 +131: ; preds = %129 + %132 = add nsw i32 %130, -1 + store i32 %132, ptr %.089, align 8, !tbaa !29 + %133 = icmp eq i32 %132, 0 + br i1 %133, label %134, label %Py_DECREF.exit134 -136: ; preds = %133 +134: ; preds = %131 tail call void @_Py_Dealloc(ptr noundef nonnull %.089) #16 br label %Py_DECREF.exit134 -Py_DECREF.exit134: ; preds = %20, %17, %27, %_fits_in_n_bits.exit.thread, %29, %31, %34, %131, %133, %136, %8 - %.0 = phi i64 [ -1, %8 ], [ -1, %20 ], [ -1, %17 ], [ -1, %27 ], [ %.096, %_fits_in_n_bits.exit.thread ], [ -1, %29 ], [ -1, %31 ], [ -1, %34 ], [ %.096, %131 ], [ %.096, %133 ], [ %.096, %136 ] +Py_DECREF.exit134: ; preds = %20, %17, %27, %_fits_in_n_bits.exit.thread, %29, %31, %34, %129, %131, %134, %8 + %.0 = phi i64 [ -1, %8 ], [ -1, %20 ], [ -1, %17 ], [ -1, %27 ], [ %.096, %_fits_in_n_bits.exit.thread ], [ -1, %29 ], [ -1, %31 ], [ -1, %34 ], [ %.096, %129 ], [ %.096, %131 ], [ %.096, %134 ] call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #16 ret i64 %.0 } diff --git a/bench/curl/optimized/tool_findfile.ll b/bench/curl/optimized/tool_findfile.ll index d052b099a3b..79aad0e4024 100644 --- a/bench/curl/optimized/tool_findfile.ll +++ b/bench/curl/optimized/tool_findfile.ll @@ -136,63 +136,62 @@ declare ptr @curl_maprintf(ptr noundef, ...) local_unnamed_addr #1 ; Function Attrs: nounwind uwtable define internal fastcc noalias ptr @checkhome(ptr noundef nonnull %0, ptr noundef %1, i1 noundef zeroext %2) unnamed_addr #0 { - %4 = select i1 %2, i32 2, i32 1 - %5 = getelementptr inbounds nuw i8, ptr %1, i64 1 + %4 = getelementptr inbounds nuw i8, ptr %1, i64 1 br i1 %2, label %.split.us, label %.split -.split.us: ; preds = %3, %14 - %indvars.iv = phi i64 [ %indvars.iv.next, %14 ], [ 0, %3 ] - %6 = getelementptr inbounds nuw [2 x i8], ptr @__const.checkhome.pref, i64 0, i64 %indvars.iv - %7 = load i8, ptr %6, align 1, !tbaa !4 - %8 = sext i8 %7 to i32 - %9 = tail call ptr (ptr, ...) @curl_maprintf(ptr noundef nonnull @.str.6, ptr noundef nonnull %0, i32 noundef %8, ptr noundef nonnull %5) #5 - %.not.us = icmp eq ptr %9, null - br i1 %.not.us, label %14, label %10 - -10: ; preds = %.split.us - %11 = tail call i32 (ptr, i32, ...) @open(ptr noundef nonnull %9, i32 noundef 0) #5 - %12 = icmp slt i32 %11, 0 - br i1 %12, label %13, label %.split30.us - -13: ; preds = %10 - tail call void @curl_free(ptr noundef nonnull %9) #5 - br label %14 - -14: ; preds = %13, %.split.us +.split.us: ; preds = %3, %13 + %indvars.iv = phi i64 [ %indvars.iv.next, %13 ], [ 0, %3 ] + %5 = getelementptr inbounds nuw [2 x i8], ptr @__const.checkhome.pref, i64 0, i64 %indvars.iv + %6 = load i8, ptr %5, align 1, !tbaa !4 + %7 = sext i8 %6 to i32 + %8 = tail call ptr (ptr, ...) @curl_maprintf(ptr noundef nonnull @.str.6, ptr noundef nonnull %0, i32 noundef %7, ptr noundef nonnull %4) #5 + %.not.us = icmp eq ptr %8, null + br i1 %.not.us, label %13, label %9 + +9: ; preds = %.split.us + %10 = tail call i32 (ptr, i32, ...) @open(ptr noundef nonnull %8, i32 noundef 0) #5 + %11 = icmp slt i32 %10, 0 + br i1 %11, label %12, label %.split30.us + +12: ; preds = %9 + tail call void @curl_free(ptr noundef nonnull %8) #5 + br label %13 + +13: ; preds = %12, %.split.us %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond41.not = icmp eq i64 %indvars.iv.next, 2 br i1 %exitcond41.not, label %.loopexit, label %.split.us, !llvm.loop !21 -.split: ; preds = %3, %22 - %.02228 = phi i32 [ %23, %22 ], [ 0, %3 ] - %15 = tail call ptr (ptr, ...) @curl_maprintf(ptr noundef nonnull @.str.7, ptr noundef nonnull %0, ptr noundef %1) #5 - %.not = icmp eq ptr %15, null - br i1 %.not, label %22, label %16 - -16: ; preds = %.split - %17 = tail call i32 (ptr, i32, ...) @open(ptr noundef nonnull %15, i32 noundef 0) #5 - %18 = icmp slt i32 %17, 0 - br i1 %18, label %19, label %.split30.us - -19: ; preds = %16 - tail call void @curl_free(ptr noundef nonnull %15) #5 - br label %22 - -.split30.us: ; preds = %16, %10 - %.us-phi = phi i32 [ %11, %10 ], [ %17, %16 ] - %.us-phi31 = phi ptr [ %9, %10 ], [ %15, %16 ] - %20 = tail call noalias ptr @strdup(ptr noundef nonnull %.us-phi31) #5 - %21 = tail call i32 @close(i32 noundef %.us-phi) #5 +.split: ; preds = %3, %21 + %.02228 = phi i32 [ %22, %21 ], [ 0, %3 ] + %14 = tail call ptr (ptr, ...) @curl_maprintf(ptr noundef nonnull @.str.7, ptr noundef nonnull %0, ptr noundef %1) #5 + %.not = icmp eq ptr %14, null + br i1 %.not, label %21, label %15 + +15: ; preds = %.split + %16 = tail call i32 (ptr, i32, ...) @open(ptr noundef nonnull %14, i32 noundef 0) #5 + %17 = icmp slt i32 %16, 0 + br i1 %17, label %18, label %.split30.us + +18: ; preds = %15 + tail call void @curl_free(ptr noundef nonnull %14) #5 + br label %21 + +.split30.us: ; preds = %15, %9 + %.us-phi = phi i32 [ %10, %9 ], [ %16, %15 ] + %.us-phi31 = phi ptr [ %8, %9 ], [ %14, %15 ] + %19 = tail call noalias ptr @strdup(ptr noundef nonnull %.us-phi31) #5 + %20 = tail call i32 @close(i32 noundef %.us-phi) #5 tail call void @curl_free(ptr noundef nonnull %.us-phi31) #5 br label %.loopexit -22: ; preds = %.split, %19 - %23 = add nuw nsw i32 %.02228, 1 - %exitcond.not = icmp eq i32 %23, %4 +21: ; preds = %.split, %18 + %22 = add nuw nsw i32 %.02228, 1 + %exitcond.not = icmp eq i32 %.02228, 0 br i1 %exitcond.not, label %.loopexit, label %.split, !llvm.loop !21 -.loopexit: ; preds = %22, %14, %.split30.us - %.4 = phi ptr [ %20, %.split30.us ], [ null, %14 ], [ null, %22 ] +.loopexit: ; preds = %21, %13, %.split30.us + %.4 = phi ptr [ %19, %.split30.us ], [ null, %13 ], [ null, %21 ] ret ptr %.4 } diff --git a/bench/cvc5/optimized/model_engine.ll b/bench/cvc5/optimized/model_engine.ll index 50d76be8040..7348ba8b369 100644 --- a/bench/cvc5/optimized/model_engine.ll +++ b/bench/cvc5/optimized/model_engine.ll @@ -662,18 +662,18 @@ _ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit233: ; preds = %_ZN4cvc58internal1 .lr.ph721: ; preds = %.critedge132 %186 = icmp eq i32 %185, 1 - %187 = select i1 %186, i32 2, i32 1 - %188 = getelementptr inbounds nuw i8, ptr %0, i64 72 - %189 = getelementptr inbounds nuw i8, ptr %0, i64 88 - %190 = getelementptr inbounds nuw i8, ptr %0, i64 80 - %191 = getelementptr inbounds nuw i8, ptr %0, i64 96 - %192 = getelementptr inbounds nuw i8, ptr %2, i64 8 - %193 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %187 = getelementptr inbounds nuw i8, ptr %0, i64 72 + %188 = getelementptr inbounds nuw i8, ptr %0, i64 88 + %189 = getelementptr inbounds nuw i8, ptr %0, i64 80 + %190 = getelementptr inbounds nuw i8, ptr %0, i64 96 + %191 = getelementptr inbounds nuw i8, ptr %2, i64 8 + %192 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %193 = zext i1 %186 to i32 br label %194 194: ; preds = %._crit_edge719, %.lr.ph721 %storemerge720 = phi i32 [ 0, %.lr.ph721 ], [ %355, %._crit_edge719 ] - %195 = load ptr, ptr %189, align 8, !tbaa !293 + %195 = load ptr, ptr %188, align 8, !tbaa !293 %.not5.i.i.i = icmp eq ptr %195, null br i1 %.not5.i.i.i, label %_ZNSt13unordered_setIN4cvc58internal12NodeTemplateILb1EEESt4hashIS3_ESt8equal_toIS3_ESaIS3_EE5clearEv.exit, label %.lr.ph.i.i.i @@ -713,11 +713,11 @@ _ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeIN4cvc58internal12NodeTemplat br i1 %.not.i.i.i, label %_ZNSt13unordered_setIN4cvc58internal12NodeTemplateILb1EEESt4hashIS3_ESt8equal_toIS3_ESaIS3_EE5clearEv.exit, label %.lr.ph.i.i.i, !llvm.loop !295 _ZNSt13unordered_setIN4cvc58internal12NodeTemplateILb1EEESt4hashIS3_ESt8equal_toIS3_ESaIS3_EE5clearEv.exit: ; preds = %_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeIN4cvc58internal12NodeTemplateILb1EEELb1EEEEE18_M_deallocate_nodeEPS6_.exit.i.i.i, %194 - %211 = load ptr, ptr %188, align 8, !tbaa !32 - %212 = load i64, ptr %190, align 8, !tbaa !33 + %211 = load ptr, ptr %187, align 8, !tbaa !32 + %212 = load i64, ptr %189, align 8, !tbaa !33 %213 = shl i64 %212, 3 call void @llvm.memset.p0.i64(ptr align 8 %211, i8 0, i64 %213, i1 false) - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %189, i8 0, i64 16, i1 false) + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %188, i8 0, i64 16, i1 false) %214 = call noundef i64 @_ZNK4cvc58internal6theory11quantifiers15FirstOrderModel25getNumAssertedQuantifiersEv(ptr noundef nonnull align 8 dereferenceable(664) %14) %.not725 = icmp eq i64 %214, 0 br i1 %.not725, label %._crit_edge719, label %_ZN4cvc58internal11Cvc5ostreamlsEPFRSoS2_E.exit338 @@ -807,7 +807,7 @@ _ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit368: ; preds = %240, %243, %249 br i1 %239, label %296, label %_ZN4cvc58internal11Cvc5ostreamlsEPFRSoS2_E.exit394 _ZN4cvc58internal11Cvc5ostreamlsEPFRSoS2_E.exit394: ; preds = %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit368 - %253 = load i64, ptr %191, align 8, !tbaa !298 + %253 = load i64, ptr %190, align 8, !tbaa !298 %.not.not.i = icmp eq i64 %253, 0 br i1 %.not.not.i, label %254, label %.thread.i @@ -816,7 +816,7 @@ _ZN4cvc58internal11Cvc5ostreamlsEPFRSoS2_E.exit394: ; preds = %_ZN4cvc58internal br label %256 256: ; preds = %257, %254 - %.sroa.023.0.in.i = phi ptr [ %189, %254 ], [ %.sroa.023.0.i, %257 ] + %.sroa.023.0.in.i = phi ptr [ %188, %254 ], [ %.sroa.023.0.i, %257 ] %.sroa.023.0.i = load ptr, ptr %.sroa.023.0.in.i, align 8, !tbaa !294 %.not.i528 = icmp eq ptr %.sroa.023.0.i, null br i1 %.not.i528, label %.thread.i, label %257 @@ -828,18 +828,18 @@ _ZN4cvc58internal11Cvc5ostreamlsEPFRSoS2_E.exit394: ; preds = %_ZN4cvc58internal br i1 %260, label %_ZN4cvc58internal11Cvc5ostreamlsEPFRSoS2_E.exit364, label %256, !llvm.loop !299 .thread.i: ; preds = %256, %_ZN4cvc58internal11Cvc5ostreamlsEPFRSoS2_E.exit394 - %261 = invoke noundef i64 @_ZNKSt4hashIN4cvc58internal12NodeTemplateILb1EEEEclERKS3_(ptr noundef nonnull align 8 dereferenceable(56) %188, ptr noundef nonnull align 8 dereferenceable(8) %8) + %261 = invoke noundef i64 @_ZNKSt4hashIN4cvc58internal12NodeTemplateILb1EEEEclERKS3_(ptr noundef nonnull align 8 dereferenceable(56) %187, ptr noundef nonnull align 8 dereferenceable(8) %8) to label %.noexc529 unwind label %218 .noexc529: ; preds = %.thread.i - %262 = load i64, ptr %190, align 8, !tbaa !33 + %262 = load i64, ptr %189, align 8, !tbaa !33 %263 = urem i64 %261, %262 - %264 = load i64, ptr %191, align 8, !tbaa !298 + %264 = load i64, ptr %190, align 8, !tbaa !298 %.not32.i = icmp eq i64 %264, 0 br i1 %.not32.i, label %.critedge.i, label %265 265: ; preds = %.noexc529 - %266 = load ptr, ptr %188, align 8, !tbaa !32 + %266 = load ptr, ptr %187, align 8, !tbaa !32 %267 = getelementptr inbounds nuw ptr, ptr %266, i64 %263 %268 = load ptr, ptr %267, align 8, !tbaa !300 %.not.i.i.i526 = icmp eq ptr %268, null @@ -883,13 +883,13 @@ _ZN4cvc58internal11Cvc5ostreamlsEPFRSoS2_E.exit394: ; preds = %_ZN4cvc58internal .critedge.i: ; preds = %.lr.ph.i.i.i527, %..loopexit_crit_edge21.i.i.i, %265, %.noexc529 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %2) #19 - %290 = invoke noundef ptr @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeIN4cvc58internal12NodeTemplateILb1EEELb1EEEEE16_M_allocate_nodeIJRKS5_EEEPS6_DpOT_(ptr noundef nonnull align 1 dereferenceable(1) %188, ptr noundef nonnull align 8 dereferenceable(8) %8) + %290 = invoke noundef ptr @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeIN4cvc58internal12NodeTemplateILb1EEELb1EEEEE16_M_allocate_nodeIJRKS5_EEEPS6_DpOT_(ptr noundef nonnull align 1 dereferenceable(1) %187, ptr noundef nonnull align 8 dereferenceable(8) %8) to label %.noexc530 unwind label %218 .noexc530: ; preds = %.critedge.i - store ptr %188, ptr %2, align 8, !tbaa !304 - store ptr %290, ptr %192, align 8, !tbaa !308 - %291 = invoke ptr @_ZNSt10_HashtableIN4cvc58internal12NodeTemplateILb1EEES3_SaIS3_ENSt8__detail9_IdentityESt8equal_toIS3_ESt4hashIS3_ENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb1ELb1ELb1EEEE21_M_insert_unique_nodeEmmPNS5_10_Hash_nodeIS3_Lb1EEEm(ptr noundef nonnull align 8 dereferenceable(56) %188, i64 noundef %263, i64 noundef %261, ptr noundef %290, i64 noundef 1) + store ptr %187, ptr %2, align 8, !tbaa !304 + store ptr %290, ptr %191, align 8, !tbaa !308 + %291 = invoke ptr @_ZNSt10_HashtableIN4cvc58internal12NodeTemplateILb1EEES3_SaIS3_ENSt8__detail9_IdentityESt8equal_toIS3_ESt4hashIS3_ENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb1ELb1ELb1EEEE21_M_insert_unique_nodeEmmPNS5_10_Hash_nodeIS3_Lb1EEEm(ptr noundef nonnull align 8 dereferenceable(56) %187, i64 noundef %263, i64 noundef %261, ptr noundef %290, i64 noundef 1) to label %_ZNSt10_HashtableIN4cvc58internal12NodeTemplateILb1EEES3_SaIS3_ENSt8__detail9_IdentityESt8equal_toIS3_ESt4hashIS3_ENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb1ELb1ELb1EEEE12_Scoped_nodeD2Ev.exit.i unwind label %292 _ZNSt10_HashtableIN4cvc58internal12NodeTemplateILb1EEES3_SaIS3_ENSt8__detail9_IdentityESt8equal_toIS3_ESt4hashIS3_ENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb1ELb1ELb1EEEE12_Scoped_nodeD2Ev.exit.i: ; preds = %.noexc530 @@ -970,7 +970,7 @@ _ZN4cvc58internal12NodeTemplateILb1EEC2ERKS2_.exit397: ; preds = %309, %303, %31 unreachable _ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit399: ; preds = %313, %317, %323 - %327 = load ptr, ptr %193, align 8, !tbaa !309 + %327 = load ptr, ptr %192, align 8, !tbaa !309 %328 = load ptr, ptr %327, align 8, !tbaa !3 %329 = getelementptr inbounds nuw i8, ptr %328, i64 72 %330 = load ptr, ptr %329, align 8 @@ -1039,7 +1039,7 @@ _ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit401: ; preds = %_ZN4cvc58internal1 %353 = load i32, ptr %179, align 4, !tbaa !28 %354 = icmp sgt i32 %353, 0 %355 = add nuw nsw i32 %storemerge720, 1 - %exitcond.not = icmp eq i32 %355, %187 + %exitcond.not = icmp eq i32 %storemerge720, %193 %or.cond = select i1 %354, i1 true, i1 %exitcond.not br i1 %or.cond, label %._crit_edge722, label %194, !llvm.loop !311 diff --git a/bench/ffmpeg/optimized/filter.ll b/bench/ffmpeg/optimized/filter.ll index 5142ba82597..7647473719a 100644 --- a/bench/ffmpeg/optimized/filter.ll +++ b/bench/ffmpeg/optimized/filter.ll @@ -2753,7 +2753,7 @@ define internal fastcc void @vvc_deblock(ptr %.4580552.val, i32 noundef %0, i32 .lr.ph11.us.preheader: ; preds = %41 %66 = sext i32 %.0172 to i64 %67 = sext i32 %.0170 to i64 - %wide.trip.count30 = select i1 %.not, i64 1, i64 3 + %wide.trip.count3032 = select i1 %.not, i64 0, i64 2 br label %.lr.ph11.us .lr.ph11.us: ; preds = %.lr.ph11.us.preheader, %._crit_edge12.us @@ -2801,7 +2801,7 @@ define internal fastcc void @vvc_deblock(ptr %.4580552.val, i32 noundef %0, i32 ._crit_edge12.us: ; preds = %._crit_edge8.us.us, %.lr.ph11.us %indvars.iv.next28 = add nuw nsw i64 %indvars.iv27, 1 - %exitcond31.not = icmp eq i64 %indvars.iv.next28, %wide.trip.count30 + %exitcond31.not = icmp eq i64 %wide.trip.count3032, %indvars.iv27 br i1 %exitcond31.not, label %.split18.us, label %.lr.ph11.us, !llvm.loop !167 .lr.ph7.us.us: ; preds = %.lr.ph7.us.us.preheader, %._crit_edge8.us.us @@ -3853,8 +3853,8 @@ alf_get_edges.exit.i: ; preds = %is_virtual_boundary %262 = getelementptr inbounds nuw i8, ptr %8, i64 8 %263 = getelementptr inbounds nuw i8, ptr %8, i64 16 %264 = getelementptr inbounds nuw i8, ptr %8, i64 24 - %265 = select i1 %66, i32 2, i32 1 - %266 = select i1 %65, i32 2, i32 1 + %265 = zext i1 %66 to i32 + %266 = zext i1 %65 to i32 br label %.preheader.i .preheader.i: ; preds = %269, %alf_get_edges.exit.i @@ -3868,7 +3868,7 @@ alf_get_edges.exit.i: ; preds = %is_virtual_boundary 269: ; preds = %alf_get_subblock.exit.i %270 = add nuw nsw i32 %.049108.i, 1 - %exitcond110.not.i = icmp eq i32 %270, %266 + %exitcond110.not.i = icmp eq i32 %.049108.i, %266 br i1 %exitcond110.not.i, label %alf_get_subblocks.exit, label %.preheader.i, !llvm.loop !181 271: ; preds = %alf_get_subblock.exit.i, %.preheader.i @@ -3922,7 +3922,7 @@ alf_get_subblock.exit.i: ; preds = %282 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #8 %283 = add nuw nsw i32 %.0106.i, 1 %indvars.iv.next.i = add nsw i64 %indvars.iv.i, 1 - %exitcond.not.i = icmp eq i32 %283, %265 + %exitcond.not.i = icmp eq i32 %.0106.i, %265 br i1 %exitcond.not.i, label %269, label %271, !llvm.loop !184 alf_get_subblocks.exit: ; preds = %269 @@ -3953,36 +3953,34 @@ alf_get_subblocks.exit: ; preds = %269 %302 = getelementptr inbounds nuw i8, ptr %0, i64 3309584 %303 = getelementptr inbounds nuw i8, ptr %0, i64 3276816 %304 = getelementptr inbounds nuw i8, ptr %0, i64 4477968 - %305 = trunc i64 %.050107.i to i32 - %306 = add i32 %265, %305 - %smax = call i32 @llvm.smax.i32(i32 %306, i32 1) - %wide.trip.count = zext nneg i32 %smax to i64 - br label %307 + %sext = shl i64 %indvars.iv.next.i, 32 + %305 = ashr exact i64 %sext, 32 + br label %306 -._crit_edge: ; preds = %316, %alf_get_subblocks.exit +._crit_edge: ; preds = %315, %alf_get_subblocks.exit call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %10) #8 call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %9) #8 ret void -307: ; preds = %.lr.ph, %316 - %indvars.iv183 = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next184, %316 ] - %308 = getelementptr inbounds nuw %struct.VVCRect, ptr %10, i64 %indvars.iv183 - %309 = getelementptr inbounds nuw i8, ptr %308, i64 4 - %310 = getelementptr inbounds nuw i8, ptr %308, i64 8 - %311 = getelementptr inbounds nuw i8, ptr %308, i64 12 - %312 = getelementptr inbounds nuw [4 x [4 x i32]], ptr %9, i64 0, i64 %indvars.iv183 - %313 = getelementptr inbounds nuw i8, ptr %312, i64 4 - %314 = getelementptr inbounds nuw i8, ptr %312, i64 12 - %315 = getelementptr inbounds nuw i8, ptr %312, i64 8 +306: ; preds = %.lr.ph, %315 + %indvars.iv183 = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next184, %315 ] + %307 = getelementptr inbounds nuw %struct.VVCRect, ptr %10, i64 %indvars.iv183 + %308 = getelementptr inbounds nuw i8, ptr %307, i64 4 + %309 = getelementptr inbounds nuw i8, ptr %307, i64 8 + %310 = getelementptr inbounds nuw i8, ptr %307, i64 12 + %311 = getelementptr inbounds nuw [4 x [4 x i32]], ptr %9, i64 0, i64 %indvars.iv183 + %312 = getelementptr inbounds nuw i8, ptr %311, i64 4 + %313 = getelementptr inbounds nuw i8, ptr %311, i64 12 + %314 = getelementptr inbounds nuw i8, ptr %311, i64 8 br label %317 -316: ; preds = %alf_filter_cc.exit +315: ; preds = %alf_filter_cc.exit %indvars.iv.next184 = add nuw nsw i64 %indvars.iv183, 1 - %exitcond.not = icmp eq i64 %indvars.iv.next184, %wide.trip.count - br i1 %exitcond.not, label %._crit_edge, label %307, !llvm.loop !185 + %316 = icmp slt i64 %indvars.iv.next184, %305 + br i1 %316, label %306, label %._crit_edge, !llvm.loop !185 -317: ; preds = %307, %alf_filter_cc.exit - %indvars.iv = phi i64 [ 0, %307 ], [ %indvars.iv.next, %alf_filter_cc.exit ] +317: ; preds = %306, %alf_filter_cc.exit + %indvars.iv = phi i64 [ 0, %306 ], [ %indvars.iv.next, %alf_filter_cc.exit ] %318 = load ptr, ptr %13, align 8, !tbaa !18 %319 = getelementptr inbounds nuw i8, ptr %318, i64 8 %320 = getelementptr inbounds nuw [3 x i8], ptr %319, i64 0, i64 %indvars.iv @@ -3992,14 +3990,14 @@ alf_get_subblocks.exit: ; preds = %269 %324 = getelementptr inbounds nuw [3 x i8], ptr %323, i64 0, i64 %indvars.iv %325 = load i8, ptr %324, align 1, !tbaa !59 %326 = zext i8 %325 to i32 - %327 = load i32, ptr %308, align 16, !tbaa !186 + %327 = load i32, ptr %307, align 16, !tbaa !186 %328 = ashr i32 %327, %322 - %329 = load i32, ptr %309, align 4, !tbaa !188 + %329 = load i32, ptr %308, align 4, !tbaa !188 %330 = ashr i32 %329, %326 - %331 = load i32, ptr %310, align 8, !tbaa !189 + %331 = load i32, ptr %309, align 8, !tbaa !189 %332 = sub nsw i32 %331, %327 %333 = ashr i32 %332, %322 - %334 = load i32, ptr %311, align 4, !tbaa !190 + %334 = load i32, ptr %310, align 4, !tbaa !190 %335 = sub nsw i32 %334, %329 %336 = ashr i32 %335, %326 %337 = load ptr, ptr %285, align 8, !tbaa !60 @@ -4078,7 +4076,7 @@ copy_ctb.exit.i: ; preds = %.lr.ph.i.i139, %359 %383 = getelementptr inbounds i8, ptr %gep, i64 %382 %384 = shl i32 %365, %346 %385 = sext i32 %384 to i64 - %386 = load i32, ptr %313, align 4, !tbaa !82 + %386 = load i32, ptr %312, align 4, !tbaa !82 %.not.i.i137 = icmp eq i32 %386, 0 br i1 %.not.i.i137, label %.preheader168.preheader.i, label %.preheader169.i @@ -4119,7 +4117,7 @@ alf_fill_border_h.exit.i: ; preds = %.preheader169.i, %. %402 = sext i32 %401 to i64 %403 = mul nsw i64 %402, %289 %404 = getelementptr inbounds i8, ptr %gep, i64 %403 - %405 = load i32, ptr %314, align 4, !tbaa !82 + %405 = load i32, ptr %313, align 4, !tbaa !82 %.not.i105.i = icmp eq i32 %405, 0 br i1 %.not.i105.i, label %.preheader165.preheader.i, label %.preheader166.i @@ -4167,7 +4165,7 @@ alf_fill_border_h.exit113.i: ; preds = %.preheader166.i, %. %428 = getelementptr inbounds i8, ptr %gep, i64 %427 %429 = getelementptr inbounds i8, ptr %428, i64 %382 %430 = getelementptr inbounds i8, ptr %429, i64 %426 - %431 = load i32, ptr %312, align 16, !tbaa !82 + %431 = load i32, ptr %311, align 16, !tbaa !82 %.not.i114.i = icmp eq i32 %431, 0 br i1 %.not.i114.i, label %451, label %432 @@ -4295,7 +4293,7 @@ alf_fill_border_v.exit.i: ; preds = %445, %.lr.ph.i.i.i, %487 = sext i32 %486 to i64 %488 = sub nsw i64 0, %487 %489 = getelementptr inbounds i8, ptr %485, i64 %488 - %490 = load i32, ptr %315, align 8, !tbaa !82 + %490 = load i32, ptr %314, align 8, !tbaa !82 %.not.i121.i = icmp eq i32 %490, 0 br i1 %.not.i121.i, label %510, label %491 @@ -4551,7 +4549,7 @@ alf_prepare_buffer.exit.thread._crit_edge: ; preds = %alf_prepare_buffer. br i1 %.not.i144, label %alf_filter_cc.exit, label %604 604: ; preds = %597 - %605 = load i32, ptr %309, align 4, !tbaa !188 + %605 = load i32, ptr %308, align 4, !tbaa !188 %606 = sub i32 %300, %605 %607 = sext i32 %340 to i64 %608 = getelementptr inbounds nuw i8, ptr %603, i64 1056 @@ -4567,7 +4565,7 @@ alf_filter_cc.exit: ; preds = %357, %alf_filter_lu %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %614 = icmp samesign ult i64 %indvars.iv, 2 %615 = select i1 %.not, i1 %614, i1 false - br i1 %615, label %317, label %316, !llvm.loop !205 + br i1 %615, label %317, label %315, !llvm.loop !205 } ; Function Attrs: nounwind uwtable diff --git a/bench/ffmpeg/optimized/intra.ll b/bench/ffmpeg/optimized/intra.ll index 0bf57b34209..ea738c11801 100644 --- a/bench/ffmpeg/optimized/intra.ll +++ b/bench/ffmpeg/optimized/intra.ll @@ -358,12 +358,17 @@ vvc_predict_ibc.exit: ; preds = %64, %50, %49, %46, .lr.ph54.split.preheader.i: ; preds = %.lr.ph54.i %123 = zext i1 %112 to i64 %124 = or i1 %112, %narrow.i - %wide.trip.count.i = select i1 %124, i64 2, i64 1 + %wide.trip.count72.i = zext i1 %124 to i64 br label %.lr.ph54.split.i -.lr.ph54.split.i: ; preds = %._crit_edge.i, %.lr.ph54.split.preheader.i - %indvars.iv.i60 = phi i64 [ %123, %.lr.ph54.split.preheader.i ], [ %indvars.iv.next.i62, %._crit_edge.i ] - %.01946.i = load ptr, ptr %120, align 8, !tbaa !127 +.lr.ph54.splitthread-pre-split.i: ; preds = %._crit_edge.i + %indvars.iv.next.i62 = add nuw nsw i64 %indvars.iv.i60, 1 + %.01946.pr.i = load ptr, ptr %120, align 8, !tbaa !127 + br label %.lr.ph54.split.i + +.lr.ph54.split.i: ; preds = %.lr.ph54.splitthread-pre-split.i, %.lr.ph54.split.preheader.i + %.01946.i = phi ptr [ %.01946.pr.i, %.lr.ph54.splitthread-pre-split.i ], [ %121, %.lr.ph54.split.preheader.i ] + %indvars.iv.i60 = phi i64 [ %indvars.iv.next.i62, %.lr.ph54.splitthread-pre-split.i ], [ %123, %.lr.ph54.split.preheader.i ] %.not2247.i = icmp eq ptr %.01946.i, null br i1 %.not2247.i, label %._crit_edge.i, label %.lr.ph.i61 @@ -374,9 +379,8 @@ vvc_predict_ibc.exit: ; preds = %64, %50, %49, %46, br label %128 ._crit_edge.i: ; preds = %itransform.exit.i, %.lr.ph54.split.i - %indvars.iv.next.i62 = add nuw nsw i64 %indvars.iv.i60, 1 - %exitcond.not.i = icmp eq i64 %indvars.iv.next.i62, %wide.trip.count.i - br i1 %exitcond.not.i, label %reconstruct.exit, label %.lr.ph54.split.i, !llvm.loop !128 + %exitcond.not.i = icmp eq i64 %indvars.iv.i60, %wide.trip.count72.i + br i1 %exitcond.not.i, label %reconstruct.exit, label %.lr.ph54.splitthread-pre-split.i, !llvm.loop !128 128: ; preds = %itransform.exit.i, %.lr.ph.i61 %.01950.i = phi ptr [ %.01946.i, %.lr.ph.i61 ], [ %.019.i, %itransform.exit.i ] diff --git a/bench/ffmpeg/optimized/subtitles.ll b/bench/ffmpeg/optimized/subtitles.ll index 72b29e166a2..b9da72d8b2d 100644 --- a/bench/ffmpeg/optimized/subtitles.ll +++ b/bench/ffmpeg/optimized/subtitles.ll @@ -1254,7 +1254,7 @@ define range(i32 -2147483647, -2147483648) i32 @ff_smil_extract_next_text_chunk( .thread: ; preds = %3, %5 %8 = phi i8 [ %7, %5 ], [ %4, %3 ] %9 = icmp eq i8 %8, 60 - %10 = select i1 %9, i32 62, i32 60 + %10 = select i1 %9, i32 1040187392, i32 1006632960 br label %11 11: ; preds = %16, %.thread @@ -1270,31 +1270,30 @@ define range(i32 -2147483647, -2147483648) i32 @ff_smil_extract_next_text_chunk( 16: ; preds = %11 %17 = add nuw nsw i32 %.019, 1 %sext = shl i32 %13, 24 - %18 = ashr exact i32 %sext, 24 - %.not23 = icmp eq i32 %18, %10 + %.not23 = icmp eq i32 %10, %sext %.not24 = icmp eq i32 %sext, 0 - %or.cond = or i1 %.not24, %.not23 + %or.cond = or i1 %.not23, %.not24 br i1 %or.cond, label %.critedge, label %11, !llvm.loop !66 .critedge: ; preds = %16 - br i1 %9, label %19, label %20 + br i1 %9, label %18, label %19 -19: ; preds = %.critedge +18: ; preds = %.critedge tail call void @av_bprint_chars(ptr noundef %1, i8 noundef signext 62, i32 noundef 1) #11 store i8 0, ptr %2, align 1, !tbaa !19 - br label %20 + br label %19 -20: ; preds = %19, %.critedge - %21 = getelementptr i8, ptr %1, i64 8 - %.val = load i32, ptr %21, align 8, !tbaa !37 - %22 = getelementptr i8, ptr %1, i64 12 - %.val26 = load i32, ptr %22, align 4, !tbaa !39 +19: ; preds = %18, %.critedge + %20 = getelementptr i8, ptr %1, i64 8 + %.val = load i32, ptr %20, align 8, !tbaa !37 + %21 = getelementptr i8, ptr %1, i64 12 + %.val26 = load i32, ptr %21, align 4, !tbaa !39 %.not28 = icmp ult i32 %.val, %.val26 - %23 = select i1 %.not28, i32 %17, i32 -12 + %22 = select i1 %.not28, i32 %17, i32 -12 br label %.loopexit -.loopexit: ; preds = %11, %5, %20 - %.0 = phi i32 [ %23, %20 ], [ 0, %5 ], [ -1094995529, %11 ] +.loopexit: ; preds = %11, %5, %19 + %.0 = phi i32 [ %22, %19 ], [ 0, %5 ], [ -1094995529, %11 ] ret i32 %.0 } diff --git a/bench/gromacs/optimized/wall.ll b/bench/gromacs/optimized/wall.ll index 2dec4ae9152..56ba7735cb0 100644 --- a/bench/gromacs/optimized/wall.ll +++ b/bench/gromacs/optimized/wall.ll @@ -716,27 +716,28 @@ define noundef float @_Z8do_wallsRK10t_inputrecRK10t_forcerecPA3_KfN3gmx8ArrayRe %64 = load float, ptr %63, align 4, !tbaa !233 %65 = load ptr, ptr %10, align 8, !tbaa !259 %.not = icmp eq i32 %8, 0 - %66 = select i1 %.not, i32 1, i32 2 - %67 = icmp sgt i32 %7, 0 + %66 = icmp sgt i32 %7, 0 %.sroa.0182.0.copyload = load ptr, ptr %5, align 8 - %68 = fsub float 1.000000e+00, %11 - %69 = load i64, ptr %6, align 8 - %70 = inttoptr i64 %69 to ptr - %71 = load i64, ptr %9, align 8 - %72 = inttoptr i64 %71 to ptr - %73 = getelementptr inbounds nuw i8, ptr %0, i64 568 - %74 = getelementptr inbounds nuw i8, ptr %0, i64 564 - %75 = getelementptr inbounds nuw i8, ptr %1, i64 272 - %76 = load i64, ptr %12, align 8 - %77 = inttoptr i64 %76 to ptr - %78 = sitofp i32 %7 to double - %79 = getelementptr inbounds nuw i8, ptr %13, i64 672 - br i1 %67, label %.split.us219.preheader, label %.split + %67 = fsub float 1.000000e+00, %11 + %68 = load i64, ptr %6, align 8 + %69 = inttoptr i64 %68 to ptr + %70 = load i64, ptr %9, align 8 + %71 = inttoptr i64 %70 to ptr + %72 = getelementptr inbounds nuw i8, ptr %0, i64 568 + %73 = getelementptr inbounds nuw i8, ptr %0, i64 564 + %74 = getelementptr inbounds nuw i8, ptr %1, i64 272 + %75 = load i64, ptr %12, align 8 + %76 = inttoptr i64 %75 to ptr + %77 = sitofp i32 %7 to double + %78 = getelementptr inbounds nuw i8, ptr %13, i64 672 + br i1 %66, label %.split.us219.preheader, label %.split .split.us219.preheader: ; preds = %._crit_edge %.sroa.speculated = tail call i32 @llvm.smin.i32(i32 %20, i32 2) %wide.trip.count266 = zext nneg i32 %7 to i64 %wide.trip.count261 = zext nneg i32 %.sroa.speculated to i64 + %not..not = xor i1 %.not, true + %79 = zext i1 %not..not to i32 br label %.split.us219 .split.us219: ; preds = %.split.us219.preheader, %._crit_edge210.us @@ -744,7 +745,7 @@ define noundef float @_Z8do_wallsRK10t_inputrecRK10t_forcerecPA3_KfN3gmx8ArrayRe %.0159217.us = phi double [ %.us-phi213.us, %._crit_edge210.us ], [ 0.000000e+00, %.split.us219.preheader ] %.0161216.us = phi i32 [ %87, %._crit_edge210.us ], [ 0, %.split.us219.preheader ] %80 = icmp eq i32 %.0161216.us, 0 - %. = select i1 %80, float %68, float %11 + %. = select i1 %80, float %67, float %11 %81 = or i1 %.not, %80 %.sroa.0182.1.us = select i1 %81, ptr %3, ptr %.sroa.0182.0.copyload %.0162.us = select i1 %.not, float 1.000000e+00, float %. @@ -757,18 +758,18 @@ define noundef float @_Z8do_wallsRK10t_inputrecRK10t_forcerecPA3_KfN3gmx8ArrayRe %83 = sitofp i32 %82 to float %84 = tail call float @llvm.fmuladd.f32(float %83, float %.us-phi.us, float %.0155218.us) %.1.us = select i1 %.not, float %.0155218.us, float %84 - %85 = load double, ptr %79, align 8, !tbaa !261 - %86 = fadd double %85, %78 - store double %86, ptr %79, align 8, !tbaa !261 + %85 = load double, ptr %78, align 8, !tbaa !261 + %86 = fadd double %85, %77 + store double %86, ptr %78, align 8, !tbaa !261 %87 = add nuw nsw i32 %.0161216.us, 1 - %exitcond269.not = icmp eq i32 %87, %66 + %exitcond269.not = icmp eq i32 %.0161216.us, %79 br i1 %exitcond269.not, label %.split225.us.loopexit, label %.split.us219, !llvm.loop !262 .preheader.us.us: ; preds = %.split.us219, %._crit_edge205.us.us %indvars.iv263 = phi i64 [ %indvars.iv.next264, %._crit_edge205.us.us ], [ 0, %.split.us219 ] %.1160209.us.us = phi double [ %.3.us.us, %._crit_edge205.us.us ], [ %.0159217.us, %.split.us219 ] %.0165207.us.us = phi float [ %.2167.us.us, %._crit_edge205.us.us ], [ 0.000000e+00, %.split.us219 ] - %88 = getelementptr inbounds nuw i16, ptr %70, i64 %indvars.iv263 + %88 = getelementptr inbounds nuw i16, ptr %69, i64 %indvars.iv263 %89 = load i16, ptr %88, align 2, !tbaa !263 %90 = getelementptr inbounds nuw i32, ptr %.sroa.0182.1.us, i64 %indvars.iv263 %91 = load i32, ptr %90, align 4, !tbaa !214 @@ -777,9 +778,9 @@ define noundef float @_Z8do_wallsRK10t_inputrecRK10t_forcerecPA3_KfN3gmx8ArrayRe %94 = add nuw nsw i32 %93, 1 %95 = mul i32 %94, %22 %invariant.op.us.us = sub i32 %95, %20 - %96 = getelementptr inbounds nuw %"class.gmx::BasicVector", ptr %72, i64 %indvars.iv263, i32 0, i64 2 - %97 = load i32, ptr %74, align 4 - %98 = load ptr, ptr %75, align 8 + %96 = getelementptr inbounds nuw %"class.gmx::BasicVector", ptr %71, i64 %indvars.iv263, i32 0, i64 2 + %97 = load i32, ptr %73, align 4 + %98 = load ptr, ptr %74, align 8 %99 = zext i16 %89 to i64 %100 = getelementptr inbounds nuw [3 x float], ptr %65, i64 %indvars.iv263, i64 2 br label %101 @@ -818,7 +819,7 @@ define noundef float @_Z8do_wallsRK10t_inputrecRK10t_forcerecPA3_KfN3gmx8ArrayRe %122 = load float, ptr %96, align 4, !tbaa !233 %123 = fsub float %64, %122 %.0157.us.us = select i1 %121, float %122, float %123 - %124 = load float, ptr %73, align 8, !tbaa !265 + %124 = load float, ptr %72, align 8, !tbaa !265 %125 = fcmp olt float %.0157.us.us, %124 %126 = fsub float %124, %.0157.us.us %.1158.us.us = select i1 %125, float %124, float %.0157.us.us @@ -981,7 +982,7 @@ _ZL10tableForcefRK12t_forcetableffPfS2_.exit.us.us: ; preds = %193, %182 %254 = icmp eq i64 %indvars.iv258, 1 %255 = fneg float %.0189.us.us %.1190.us.us = select i1 %254, float %255, float %.0189.us.us - %256 = getelementptr inbounds float, ptr %77, i64 %116 + %256 = getelementptr inbounds float, ptr %76, i64 %116 %257 = load float, ptr %256, align 4, !tbaa !233 %258 = tail call float @llvm.fmuladd.f32(float %.0162.us, float %.1188.us.us, float %257) store float %258, ptr %256, align 4, !tbaa !233 @@ -1004,7 +1005,7 @@ _ZL10tableForcefRK12t_forcetableffPfS2_.exit.us.us: ; preds = %193, %182 br i1 %exitcond267.not, label %._crit_edge210.us, label %.preheader.us.us, !llvm.loop !268 .split: ; preds = %._crit_edge - %.promoted = load double, ptr %79, align 8, !tbaa !261 + %.promoted = load double, ptr %78, align 8, !tbaa !261 br i1 %.not, label %.split225.loopexit, label %.split.split .lr.ph.split: ; preds = %.lr.ph, %.lr.ph.split @@ -1019,13 +1020,13 @@ _ZL10tableForcefRK12t_forcetableffPfS2_.exit.us.us: ; preds = %193, %182 br i1 %exitcond254.not, label %._crit_edge, label %.lr.ph.split, !llvm.loop !258 .split225.loopexit: ; preds = %.split - %267 = fadd double %.promoted, %78 + %267 = fadd double %.promoted, %77 br label %.split225 .split225: ; preds = %.split.split, %.split225.loopexit %.us-phi = phi double [ %267, %.split225.loopexit ], [ %278, %.split.split ] %.us-phi236 = phi float [ 0.000000e+00, %.split225.loopexit ], [ %277, %.split.split ] - store double %.us-phi, ptr %79, align 8, !tbaa !261 + store double %.us-phi, ptr %78, align 8, !tbaa !261 br label %.split225.us .split225.us.loopexit: ; preds = %._crit_edge210.us @@ -1049,14 +1050,14 @@ _ZL10tableForcefRK12t_forcetableffPfS2_.exit.us.us: ; preds = %193, %182 %275 = select i1 %274, i32 -1, i32 1 %276 = sitofp i32 %275 to float %277 = tail call float @llvm.fmuladd.f32(float %276, float 0.000000e+00, float %.0155218) - %278 = fadd double %273, %78 + %278 = fadd double %273, %77 %279 = add nuw nsw i32 %.0161216, 1 %exitcond255.not = icmp eq i32 %279, 2 br i1 %exitcond255.not, label %.split225, label %.split.split, !llvm.loop !262 .split.us: ; preds = %120 %280 = trunc nuw nsw i64 %indvars.iv263 to i32 - tail call fastcc void @_ZL10wall_erroriN3gmx8ArrayRefIKNS_11BasicVectorIfEEEEf(i32 noundef %280, ptr nonnull %72, float noundef %.1158.us.us) #21 + tail call fastcc void @_ZL10wall_erroriN3gmx8ArrayRefIKNS_11BasicVectorIfEEEEf(i32 noundef %280, ptr nonnull %71, float noundef %.1158.us.us) #21 unreachable .preheader.i: ; preds = %.split225.us diff --git a/bench/hdf5/optimized/H5Tbit.ll b/bench/hdf5/optimized/H5Tbit.ll index eefbfc72bd3..e4511152424 100644 --- a/bench/hdf5/optimized/H5Tbit.ll +++ b/bench/hdf5/optimized/H5Tbit.ll @@ -707,250 +707,258 @@ define i64 @H5T__bit_find(ptr noundef readonly captures(none) %0, i64 noundef %1 12: ; preds = %5 switch i32 %3, label %.loopexit [ i32 0, label %13 - i32 1, label %71 + i32 1, label %72 ] 13: ; preds = %12 %14 = lshr i64 %1, 3 %15 = and i64 %1, 7 %.not109 = icmp eq i64 %15, 0 - br i1 %.not109, label %33, label %.preheader113 + br i1 %.not109, label %33, label %.preheader114 -.preheader113: ; preds = %13 - %.not149 = icmp eq i64 %2, 0 - br i1 %.not149, label %._crit_edge138, label %.lr.ph137 +.preheader114: ; preds = %13 + %.not150 = icmp eq i64 %2, 0 + br i1 %.not150, label %._crit_edge139, label %.lr.ph138 -.lr.ph137: ; preds = %.preheader113 +.lr.ph138: ; preds = %.preheader114 %16 = getelementptr inbounds nuw i8, ptr %0, i64 %14 %17 = load i8, ptr %16, align 1, !tbaa !10 %18 = zext i8 %17 to i32 br label %19 -19: ; preds = %.lr.ph137, %26 - %.091136 = phi i64 [ %15, %.lr.ph137 ], [ %27, %26 ] - %.199135 = phi i64 [ %2, %.lr.ph137 ], [ %28, %26 ] - %20 = trunc nuw nsw i64 %.091136 to i32 +19: ; preds = %.lr.ph138, %26 + %.091137 = phi i64 [ %15, %.lr.ph138 ], [ %27, %26 ] + %.199136 = phi i64 [ %2, %.lr.ph138 ], [ %28, %26 ] + %20 = trunc nuw nsw i64 %.091137 to i32 %21 = lshr i32 %18, %20 %22 = trunc i32 %21 to i1 %23 = xor i1 %4, %22 br i1 %23, label %26, label %24 24: ; preds = %19 - %25 = sub nsw i64 %.091136, %15 + %25 = sub nsw i64 %.091137, %15 br label %.loopexit 26: ; preds = %19 - %27 = add nuw nsw i64 %.091136, 1 - %28 = add i64 %.199135, -1 - %29 = icmp samesign ult i64 %.091136, 7 + %27 = add nuw nsw i64 %.091137, 1 + %28 = add i64 %.199136, -1 + %29 = icmp samesign ult i64 %.091137, 7 %30 = icmp ne i64 %28, 0 %31 = select i1 %29, i1 %30, i1 false - br i1 %31, label %19, label %._crit_edge138, !llvm.loop !23 + br i1 %31, label %19, label %._crit_edge139, !llvm.loop !23 -._crit_edge138: ; preds = %26, %.preheader113 - %.199.lcssa = phi i64 [ 0, %.preheader113 ], [ %28, %26 ] +._crit_edge139: ; preds = %26, %.preheader114 + %.199.lcssa = phi i64 [ 0, %.preheader114 ], [ %28, %26 ] %32 = add nuw nsw i64 %14, 1 br label %33 -33: ; preds = %._crit_edge138, %13 - %.098 = phi i64 [ %.199.lcssa, %._crit_edge138 ], [ %2, %13 ] - %.095 = phi i64 [ %32, %._crit_edge138 ], [ %14, %13 ] +33: ; preds = %._crit_edge139, %13 + %.098 = phi i64 [ %.199.lcssa, %._crit_edge139 ], [ %2, %13 ] + %.095 = phi i64 [ %32, %._crit_edge139 ], [ %14, %13 ] %34 = icmp ugt i64 %.098, 7 - br i1 %34, label %.lr.ph144, label %.preheader + br i1 %34, label %.lr.ph145, label %.preheader -.lr.ph144: ; preds = %33 - %35 = select i1 %4, i32 0, i32 255 +.lr.ph145: ; preds = %33 + %not.111 = xor i1 %4, true + %35 = sext i1 %not.111 to i8 %36 = add i64 %.098, -8 %37 = lshr i64 %36, 3 %38 = add nuw nsw i64 %.095, %37 %39 = add nuw nsw i64 %38, 1 br label %43 -.preheader: ; preds = %.loopexit112, %33 - %.2100.lcssa = phi i64 [ %.098, %33 ], [ %57, %.loopexit112 ] - %.196.lcssa = phi i64 [ %.095, %33 ], [ %39, %.loopexit112 ] - %.not150 = icmp eq i64 %.2100.lcssa, 0 - br i1 %.not150, label %.loopexit, label %.lr.ph148 +.preheader: ; preds = %.loopexit113, %33 + %.2100.lcssa = phi i64 [ %.098, %33 ], [ %58, %.loopexit113 ] + %.196.lcssa = phi i64 [ %.095, %33 ], [ %39, %.loopexit113 ] + %.not151 = icmp eq i64 %.2100.lcssa, 0 + br i1 %.not151, label %.loopexit, label %.lr.ph149 -.lr.ph148: ; preds = %.preheader +.lr.ph149: ; preds = %.preheader %40 = getelementptr inbounds nuw i8, ptr %0, i64 %.196.lcssa %41 = load i8, ptr %40, align 1, !tbaa !10 %42 = zext i8 %41 to i32 - br label %60 + br label %61 -43: ; preds = %.lr.ph144, %.loopexit112 - %.196142 = phi i64 [ %.095, %.lr.ph144 ], [ %58, %.loopexit112 ] - %.2100141 = phi i64 [ %.098, %.lr.ph144 ], [ %57, %.loopexit112 ] - %44 = getelementptr inbounds i8, ptr %0, i64 %.196142 +43: ; preds = %.lr.ph145, %.loopexit113 + %.196143 = phi i64 [ %.095, %.lr.ph145 ], [ %59, %.loopexit113 ] + %.2100142 = phi i64 [ %.098, %.lr.ph145 ], [ %58, %.loopexit113 ] + %44 = getelementptr inbounds i8, ptr %0, i64 %.196143 %45 = load i8, ptr %44, align 1, !tbaa !10 + %.not110 = icmp eq i8 %45, %35 + br i1 %.not110, label %.loopexit113, label %.preheader112 + +.preheader112: ; preds = %43 %46 = zext i8 %45 to i32 - %.not110 = icmp eq i32 %35, %46 - br i1 %.not110, label %.loopexit112, label %.preheader111 - -.preheader111: ; preds = %43, %55 - %.092140 = phi i64 [ %56, %55 ], [ 0, %43 ] - %47 = trunc nuw nsw i64 %.092140 to i32 - %48 = lshr i32 %46, %47 - %49 = trunc i32 %48 to i1 - %50 = xor i1 %4, %49 - br i1 %50, label %55, label %51 - -51: ; preds = %.preheader111 - %52 = shl nsw i64 %.196142, 3 - %53 = sub i64 %52, %1 - %54 = add i64 %53, %.092140 + br label %47 + +47: ; preds = %.preheader112, %56 + %.092141 = phi i64 [ 0, %.preheader112 ], [ %57, %56 ] + %48 = trunc nuw nsw i64 %.092141 to i32 + %49 = lshr i32 %46, %48 + %50 = trunc i32 %49 to i1 + %51 = xor i1 %4, %50 + br i1 %51, label %56, label %52 + +52: ; preds = %47 + %53 = shl nsw i64 %.196143, 3 + %54 = sub i64 %53, %1 + %55 = add i64 %54, %.092141 br label %.loopexit -55: ; preds = %.preheader111 - %56 = add nuw nsw i64 %.092140, 1 - %exitcond.not = icmp eq i64 %56, 8 - br i1 %exitcond.not, label %.loopexit112, label %.preheader111, !llvm.loop !24 - -.loopexit112: ; preds = %55, %43 - %57 = add i64 %.2100141, -8 - %58 = add nuw nsw i64 %.196142, 1 - %59 = icmp ugt i64 %57, 7 - br i1 %59, label %43, label %.preheader, !llvm.loop !25 - -60: ; preds = %.lr.ph148, %69 - %.193147 = phi i64 [ 0, %.lr.ph148 ], [ %70, %69 ] - %61 = trunc i64 %.193147 to i32 - %62 = lshr i32 %42, %61 - %63 = trunc i32 %62 to i1 - %64 = xor i1 %4, %63 - br i1 %64, label %69, label %65 - -65: ; preds = %60 - %66 = shl nsw i64 %.196.lcssa, 3 - %67 = sub i64 %66, %1 - %68 = add i64 %67, %.193147 +56: ; preds = %47 + %57 = add nuw nsw i64 %.092141, 1 + %exitcond.not = icmp eq i64 %57, 8 + br i1 %exitcond.not, label %.loopexit113, label %47, !llvm.loop !24 + +.loopexit113: ; preds = %56, %43 + %58 = add i64 %.2100142, -8 + %59 = add nuw nsw i64 %.196143, 1 + %60 = icmp ugt i64 %58, 7 + br i1 %60, label %43, label %.preheader, !llvm.loop !25 + +61: ; preds = %.lr.ph149, %70 + %.193148 = phi i64 [ 0, %.lr.ph149 ], [ %71, %70 ] + %62 = trunc i64 %.193148 to i32 + %63 = lshr i32 %42, %62 + %64 = trunc i32 %63 to i1 + %65 = xor i1 %4, %64 + br i1 %65, label %70, label %66 + +66: ; preds = %61 + %67 = shl nsw i64 %.196.lcssa, 3 + %68 = sub i64 %67, %1 + %69 = add i64 %68, %.193148 br label %.loopexit -69: ; preds = %60 - %70 = add nuw i64 %.193147, 1 - %exitcond166.not = icmp eq i64 %70, %.2100.lcssa - br i1 %exitcond166.not, label %.loopexit, label %60, !llvm.loop !26 - -71: ; preds = %12 - %72 = add i64 %2, %1 - %73 = add i64 %72, -1 - %74 = lshr i64 %73, 3 - %75 = and i64 %1, 7 - %76 = sub nuw nsw i64 8, %75 - %77 = icmp ule i64 %2, %76 - %78 = and i64 %72, 7 - %.not = icmp eq i64 %78, 0 - %or.cond = or i1 %77, %.not - br i1 %or.cond, label %96, label %.preheader117 - -.preheader117: ; preds = %71 - %79 = getelementptr inbounds nuw i8, ptr %0, i64 %74 - %80 = load i8, ptr %79, align 1, !tbaa !10 - %81 = zext i8 %80 to i32 - %82 = sub i64 %2, %78 - br label %83 - -83: ; preds = %.preheader117, %93 - %.1130 = phi i64 [ %78, %.preheader117 ], [ %84, %93 ] - %84 = add nsw i64 %.1130, -1 - %85 = trunc nuw nsw i64 %84 to i32 - %86 = lshr i32 %81, %85 - %87 = trunc i32 %86 to i1 - %88 = xor i1 %4, %87 - br i1 %88, label %93, label %89 - -89: ; preds = %83 - %90 = and i64 %73, -8 - %91 = sub i64 %90, %1 - %92 = add i64 %91, %84 +70: ; preds = %61 + %71 = add nuw i64 %.193148, 1 + %exitcond167.not = icmp eq i64 %71, %.2100.lcssa + br i1 %exitcond167.not, label %.loopexit, label %61, !llvm.loop !26 + +72: ; preds = %12 + %73 = add i64 %2, %1 + %74 = add i64 %73, -1 + %75 = lshr i64 %74, 3 + %76 = and i64 %1, 7 + %77 = sub nuw nsw i64 8, %76 + %78 = icmp ule i64 %2, %77 + %79 = and i64 %73, 7 + %.not = icmp eq i64 %79, 0 + %or.cond = or i1 %78, %.not + br i1 %or.cond, label %97, label %.preheader118 + +.preheader118: ; preds = %72 + %80 = getelementptr inbounds nuw i8, ptr %0, i64 %75 + %81 = load i8, ptr %80, align 1, !tbaa !10 + %82 = zext i8 %81 to i32 + %83 = sub i64 %2, %79 + br label %84 + +84: ; preds = %.preheader118, %94 + %.1131 = phi i64 [ %79, %.preheader118 ], [ %85, %94 ] + %85 = add nsw i64 %.1131, -1 + %86 = trunc nuw nsw i64 %85 to i32 + %87 = lshr i32 %82, %86 + %88 = trunc i32 %87 to i1 + %89 = xor i1 %4, %88 + br i1 %89, label %94, label %90 + +90: ; preds = %84 + %91 = and i64 %74, -8 + %92 = sub i64 %91, %1 + %93 = add i64 %92, %85 br label %.loopexit -93: ; preds = %83 - %.not106 = icmp eq i64 %84, 0 - br i1 %.not106, label %94, label %83, !llvm.loop !27 - -94: ; preds = %93 - %95 = add nsw i64 %74, -1 - br label %96 - -96: ; preds = %94, %71 - %.3101 = phi i64 [ %82, %94 ], [ %2, %71 ] - %.297 = phi i64 [ %95, %94 ], [ %74, %71 ] - %97 = icmp ugt i64 %.3101, 7 - br i1 %97, label %.lr.ph, label %._crit_edge - -.lr.ph: ; preds = %96 - %98 = select i1 %4, i32 0, i32 255 - br label %99 - -99: ; preds = %.lr.ph, %.loopexit116 - %.3133 = phi i64 [ %.297, %.lr.ph ], [ %114, %.loopexit116 ] - %.5132 = phi i64 [ %.3101, %.lr.ph ], [ %113, %.loopexit116 ] - %100 = getelementptr inbounds i8, ptr %0, i64 %.3133 - %101 = load i8, ptr %100, align 1, !tbaa !10 - %102 = zext i8 %101 to i32 - %.not108 = icmp eq i32 %98, %102 - br i1 %.not108, label %.loopexit116, label %.preheader115 - -.preheader115: ; preds = %99, %111 - %.294131 = phi i64 [ %112, %111 ], [ 7, %99 ] - %103 = trunc i64 %.294131 to i32 - %104 = lshr i32 %102, %103 - %105 = trunc i32 %104 to i1 - %106 = xor i1 %4, %105 - br i1 %106, label %111, label %107 - -107: ; preds = %.preheader115 - %108 = shl nsw i64 %.3133, 3 - %109 = sub i64 %108, %1 - %110 = add i64 %109, %.294131 +94: ; preds = %84 + %.not106 = icmp eq i64 %85, 0 + br i1 %.not106, label %95, label %84, !llvm.loop !27 + +95: ; preds = %94 + %96 = add nsw i64 %75, -1 + br label %97 + +97: ; preds = %95, %72 + %.3101 = phi i64 [ %83, %95 ], [ %2, %72 ] + %.297 = phi i64 [ %96, %95 ], [ %75, %72 ] + %98 = icmp ugt i64 %.3101, 7 + br i1 %98, label %.lr.ph, label %._crit_edge + +.lr.ph: ; preds = %97 + %not. = xor i1 %4, true + %99 = sext i1 %not. to i8 + br label %100 + +100: ; preds = %.lr.ph, %.loopexit117 + %.3134 = phi i64 [ %.297, %.lr.ph ], [ %116, %.loopexit117 ] + %.5133 = phi i64 [ %.3101, %.lr.ph ], [ %115, %.loopexit117 ] + %101 = getelementptr inbounds i8, ptr %0, i64 %.3134 + %102 = load i8, ptr %101, align 1, !tbaa !10 + %.not108 = icmp eq i8 %102, %99 + br i1 %.not108, label %.loopexit117, label %.preheader116 + +.preheader116: ; preds = %100 + %103 = zext i8 %102 to i32 + br label %104 + +104: ; preds = %.preheader116, %113 + %.294132 = phi i64 [ 7, %.preheader116 ], [ %114, %113 ] + %105 = trunc i64 %.294132 to i32 + %106 = lshr i32 %103, %105 + %107 = trunc i32 %106 to i1 + %108 = xor i1 %4, %107 + br i1 %108, label %113, label %109 + +109: ; preds = %104 + %110 = shl nsw i64 %.3134, 3 + %111 = sub i64 %110, %1 + %112 = add i64 %111, %.294132 br label %.loopexit -111: ; preds = %.preheader115 - %112 = add nsw i64 %.294131, -1 - %.not167 = icmp eq i64 %.294131, 0 - br i1 %.not167, label %.loopexit116, label %.preheader115, !llvm.loop !28 +113: ; preds = %104 + %114 = add nsw i64 %.294132, -1 + %.not168 = icmp eq i64 %.294132, 0 + br i1 %.not168, label %.loopexit117, label %104, !llvm.loop !28 -.loopexit116: ; preds = %111, %99 - %113 = add i64 %.5132, -8 - %114 = add nsw i64 %.3133, -1 - %115 = icmp ugt i64 %113, 7 - br i1 %115, label %99, label %._crit_edge, !llvm.loop !29 +.loopexit117: ; preds = %113, %100 + %115 = add i64 %.5133, -8 + %116 = add nsw i64 %.3134, -1 + %117 = icmp ugt i64 %115, 7 + br i1 %117, label %100, label %._crit_edge, !llvm.loop !29 -._crit_edge: ; preds = %.loopexit116, %96 - %.5.lcssa = phi i64 [ %.3101, %96 ], [ %113, %.loopexit116 ] - %.3.lcssa = phi i64 [ %.297, %96 ], [ %114, %.loopexit116 ] +._crit_edge: ; preds = %.loopexit117, %97 + %.5.lcssa = phi i64 [ %.3101, %97 ], [ %115, %.loopexit117 ] + %.3.lcssa = phi i64 [ %.297, %97 ], [ %116, %.loopexit117 ] %.not107 = icmp eq i64 %.5.lcssa, 0 - br i1 %.not107, label %.loopexit, label %116 - -116: ; preds = %._crit_edge - %117 = add nuw nsw i64 %.5.lcssa, %75 - %118 = getelementptr inbounds i8, ptr %0, i64 %.3.lcssa - %119 = load i8, ptr %118, align 1, !tbaa !10 - %120 = zext i8 %119 to i32 - br label %121 - -121: ; preds = %123, %116 - %.2 = phi i64 [ %117, %116 ], [ %124, %123 ] - %122 = icmp ugt i64 %.2, %75 - br i1 %122, label %123, label %.loopexit - -123: ; preds = %121 - %124 = add nsw i64 %.2, -1 - %125 = trunc nuw nsw i64 %124 to i32 - %126 = lshr i32 %120, %125 - %127 = trunc i32 %126 to i1 - %128 = xor i1 %4, %127 - br i1 %128, label %121, label %129, !llvm.loop !30 - -129: ; preds = %123 - %130 = shl nsw i64 %.3.lcssa, 3 - %131 = sub i64 %130, %1 - %132 = add i64 %131, %124 + br i1 %.not107, label %.loopexit, label %118 + +118: ; preds = %._crit_edge + %119 = add nuw nsw i64 %.5.lcssa, %76 + %120 = getelementptr inbounds i8, ptr %0, i64 %.3.lcssa + %121 = load i8, ptr %120, align 1, !tbaa !10 + %122 = zext i8 %121 to i32 + br label %123 + +123: ; preds = %125, %118 + %.2 = phi i64 [ %119, %118 ], [ %126, %125 ] + %124 = icmp ugt i64 %.2, %76 + br i1 %124, label %125, label %.loopexit + +125: ; preds = %123 + %126 = add nsw i64 %.2, -1 + %127 = trunc nuw nsw i64 %126 to i32 + %128 = lshr i32 %122, %127 + %129 = trunc i32 %128 to i1 + %130 = xor i1 %4, %129 + br i1 %130, label %123, label %131, !llvm.loop !30 + +131: ; preds = %125 + %132 = shl nsw i64 %.3.lcssa, 3 + %133 = sub i64 %132, %1 + %134 = add i64 %133, %126 br label %.loopexit -.loopexit: ; preds = %121, %69, %.preheader, %24, %51, %65, %89, %107, %129, %12, %._crit_edge, %5 - %.0 = phi i64 [ -1, %12 ], [ %25, %24 ], [ %54, %51 ], [ %68, %65 ], [ %92, %89 ], [ %110, %107 ], [ %132, %129 ], [ -1, %._crit_edge ], [ -1, %5 ], [ -1, %.preheader ], [ -1, %69 ], [ -1, %121 ] +.loopexit: ; preds = %123, %70, %.preheader, %24, %52, %66, %90, %109, %131, %12, %._crit_edge, %5 + %.0 = phi i64 [ -1, %12 ], [ %25, %24 ], [ %55, %52 ], [ %69, %66 ], [ %93, %90 ], [ %112, %109 ], [ %134, %131 ], [ -1, %._crit_edge ], [ -1, %5 ], [ -1, %.preheader ], [ -1, %70 ], [ -1, %123 ] ret i64 %.0 } diff --git a/bench/icu/optimized/ucnv_lmb.ll b/bench/icu/optimized/ucnv_lmb.ll index 007a34d14a5..9fc7fe03694 100644 --- a/bench/icu/optimized/ucnv_lmb.ll +++ b/bench/icu/optimized/ucnv_lmb.ll @@ -335,9 +335,9 @@ define internal void @_ZL17_LMBCSFromUnicodeP25UConverterFromUnicodeArgsP10UErro %20 = load ptr, ptr %18, align 8, !tbaa !36 %21 = load ptr, ptr %19, align 8, !tbaa !37 %22 = icmp ult ptr %20, %21 - br i1 %22, label %.lr.ph453, label %.critedge + br i1 %22, label %.lr.ph454, label %.critedge -.lr.ph453: ; preds = %2 +.lr.ph454: ; preds = %2 %23 = getelementptr inbounds nuw i8, ptr %17, i64 161 %24 = getelementptr inbounds nuw i8, ptr %0, i64 32 %25 = getelementptr inbounds nuw i8, ptr %0, i64 40 @@ -349,10 +349,10 @@ define internal void @_ZL17_LMBCSFromUnicodeP25UConverterFromUnicodeArgsP10UErro %31 = getelementptr inbounds nuw i8, ptr %0, i64 48 br label %32 -32: ; preds = %.lr.ph453, %.critedge75.thread - %33 = phi ptr [ %20, %.lr.ph453 ], [ %568, %.critedge75.thread ] - %.0185452 = phi i32 [ 0, %.lr.ph453 ], [ %567, %.critedge75.thread ] - %.0356451 = phi i8 [ 0, %.lr.ph453 ], [ %.1357, %.critedge75.thread ] +32: ; preds = %.lr.ph454, %.critedge75.thread + %33 = phi ptr [ %20, %.lr.ph454 ], [ %568, %.critedge75.thread ] + %.0185453 = phi i32 [ 0, %.lr.ph454 ], [ %567, %.critedge75.thread ] + %.0356452 = phi i8 [ 0, %.lr.ph454 ], [ %.1357, %.critedge75.thread ] %34 = load i32, ptr %1, align 4, !tbaa !16 %35 = icmp slt i32 %34, 1 br i1 %35, label %36, label %.critedge @@ -377,7 +377,7 @@ define internal void @_ZL17_LMBCSFromUnicodeP25UConverterFromUnicodeArgsP10UErro switch.early.test: ; preds = %41 %trunc = trunc nuw i16 %.fr438 to i8 - switch i8 %trunc, label %.thread458 [ + switch i8 %trunc, label %.thread460 [ i8 -9, label %.thread i8 -41, label %.thread i8 -74, label %.thread @@ -388,7 +388,7 @@ switch.early.test: ; preds = %41 i8 -89, label %.thread ] -.thread458: ; preds = %switch.early.test +.thread460: ; preds = %switch.early.test store i8 1, ptr %23, align 1, !tbaa !38 %44 = add nsw i16 %.fr438, -128 br label %switch.early.test224 @@ -407,8 +407,8 @@ switch.early.test: ; preds = %41 store i8 %48, ptr %12, align 1, !tbaa !42 br label %.thread432 -switch.early.test224: ; preds = %.thread458, %.thread, %46 - %49 = phi i16 [ %45, %.thread ], [ %47, %46 ], [ %44, %.thread458 ] +switch.early.test224: ; preds = %.thread460, %.thread, %46 + %49 = phi i16 [ %45, %.thread ], [ %47, %46 ], [ %44, %.thread460 ] switch i16 %.fr438, label %switch.early.test225 [ i16 25, label %50 i16 13, label %50 @@ -608,14 +608,14 @@ _ZL17FindLMBCSUniRangeDs.exit.thread: ; preds = %56, %_ZL17FindLMBCS br label %_ZL21LMBCSConversionWorkerP19UConverterDataLMBCShPhPDsS1_Pa.exit _ZL21LMBCSConversionWorkerP19UConverterDataLMBCShPhPDsS1_Pa.exit: ; preds = %99, %109, %132 - %.10366 = phi i8 [ %59, %109 ], [ %59, %132 ], [ %.0356451, %99 ] + %.10366 = phi i8 [ %59, %109 ], [ %59, %132 ], [ %.0356452, %99 ] %.0.i237 = phi i32 [ 0, %109 ], [ %136, %132 ], [ 0, %99 ] call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #8 br label %137 137: ; preds = %82, %_ZL21LMBCSConversionWorkerP19UConverterDataLMBCShPhPDsS1_Pa.exit, %_ZL17FindLMBCSUniRangeDs.exit.thread %.06.i373 = phi i8 [ %59, %_ZL21LMBCSConversionWorkerP19UConverterDataLMBCShPhPDsS1_Pa.exit ], [ 20, %_ZL17FindLMBCSUniRangeDs.exit.thread ], [ 15, %82 ] - %.2358 = phi i8 [ %.10366, %_ZL21LMBCSConversionWorkerP19UConverterDataLMBCShPhPDsS1_Pa.exit ], [ %.0356451, %_ZL17FindLMBCSUniRangeDs.exit.thread ], [ %.0356451, %82 ] + %.2358 = phi i8 [ %.10366, %_ZL21LMBCSConversionWorkerP19UConverterDataLMBCShPhPDsS1_Pa.exit ], [ %.0356452, %_ZL17FindLMBCSUniRangeDs.exit.thread ], [ %.0356452, %82 ] %.2188 = phi i32 [ %.0.i237, %_ZL21LMBCSConversionWorkerP19UConverterDataLMBCShPhPDsS1_Pa.exit ], [ %69, %_ZL17FindLMBCSUniRangeDs.exit.thread ], [ %85, %82 ] %.1 = phi ptr [ %.0184371, %_ZL21LMBCSConversionWorkerP19UConverterDataLMBCShPhPDsS1_Pa.exit ], [ %66, %_ZL17FindLMBCSUniRangeDs.exit.thread ], [ %.2, %82 ] %.not210 = icmp eq i32 %.2188, 0 @@ -623,7 +623,7 @@ _ZL21LMBCSConversionWorkerP19UConverterDataLMBCShPhPDsS1_Pa.exit: ; preds = %99, .thread376: ; preds = %86, %137 %.1384 = phi ptr [ %.1, %137 ], [ %.0184371, %86 ] - %.2358383 = phi i8 [ %.2358, %137 ], [ %.0356451, %86 ] + %.2358383 = phi i8 [ %.2358, %137 ], [ %.0356452, %86 ] %.06.i373382 = phi i8 [ %.06.i373, %137 ], [ %59, %86 ] call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(20) %13, i8 0, i64 20, i1 false) %138 = load i8, ptr %28, align 8, !tbaa !48 @@ -955,7 +955,7 @@ _ZL21LMBCSConversionWorkerP19UConverterDataLMBCShPhPDsS1_Pa.exit273: ; preds = % %288 = getelementptr inbounds nuw i8, ptr %.1384, i64 1 store i8 %146, ptr %.1384, align 1, !tbaa !42 %289 = icmp eq i32 %278, 1 - br i1 %289, label %290, label %.thread460 + br i1 %289, label %290, label %.thread462 290: ; preds = %287 %291 = getelementptr inbounds nuw i8, ptr %.1384, i64 2 @@ -969,10 +969,10 @@ _ZL21LMBCSConversionWorkerP19UConverterDataLMBCShPhPDsS1_Pa.exit273: ; preds = % %295 = and i32 %283, %294 %296 = icmp eq i32 %295, 0 %or.cond5.i279 = select i1 %293, i1 %296, i1 false - br i1 %or.cond5.i279, label %_ZL21LMBCSConversionWorkerP19UConverterDataLMBCShPhPDsS1_Pa.exit286, label %.thread460 + br i1 %or.cond5.i279, label %_ZL21LMBCSConversionWorkerP19UConverterDataLMBCShPhPDsS1_Pa.exit286, label %.thread462 -.thread460: ; preds = %287, %292 - %.034.i278463 = phi ptr [ %.034.i278, %292 ], [ %288, %287 ] +.thread462: ; preds = %287, %292 + %.034.i278465 = phi ptr [ %.034.i278, %292 ], [ %288, %287 ] switch i32 %278, label %314 [ i32 4, label %297 i32 3, label %301 @@ -980,15 +980,15 @@ _ZL21LMBCSConversionWorkerP19UConverterDataLMBCShPhPDsS1_Pa.exit273: ; preds = % i32 1, label %310 ] -297: ; preds = %.thread460 +297: ; preds = %.thread462 %298 = lshr i32 %283, 24 %299 = trunc nuw i32 %298 to i8 - %300 = getelementptr inbounds nuw i8, ptr %.034.i278463, i64 1 - store i8 %299, ptr %.034.i278463, align 1, !tbaa !42 + %300 = getelementptr inbounds nuw i8, ptr %.034.i278465, i64 1 + store i8 %299, ptr %.034.i278465, align 1, !tbaa !42 br label %301 -301: ; preds = %297, %.thread460 - %.1.i284 = phi ptr [ %300, %297 ], [ %.034.i278463, %.thread460 ] +301: ; preds = %297, %.thread462 + %.1.i284 = phi ptr [ %300, %297 ], [ %.034.i278465, %.thread462 ] %302 = lshr i32 %283, 16 %303 = trunc i32 %302 to i8 %304 = getelementptr inbounds nuw i8, ptr %.1.i284, i64 1 @@ -996,9 +996,9 @@ _ZL21LMBCSConversionWorkerP19UConverterDataLMBCShPhPDsS1_Pa.exit273: ; preds = % %.pre.i285 = load i32, ptr %7, align 4, !tbaa !32 br label %305 -305: ; preds = %301, %.thread460 - %306 = phi i32 [ %.pre.i285, %301 ], [ %283, %.thread460 ] - %.2.i282 = phi ptr [ %304, %301 ], [ %.034.i278463, %.thread460 ] +305: ; preds = %301, %.thread462 + %306 = phi i32 [ %.pre.i285, %301 ], [ %283, %.thread462 ] + %.2.i282 = phi ptr [ %304, %301 ], [ %.034.i278465, %.thread462 ] %307 = lshr i32 %306, 8 %308 = trunc i32 %307 to i8 %309 = getelementptr inbounds nuw i8, ptr %.2.i282, i64 1 @@ -1006,16 +1006,16 @@ _ZL21LMBCSConversionWorkerP19UConverterDataLMBCShPhPDsS1_Pa.exit273: ; preds = % %.pre1.i283 = load i32, ptr %7, align 4, !tbaa !32 br label %310 -310: ; preds = %305, %.thread460 - %311 = phi i32 [ %.pre1.i283, %305 ], [ %283, %.thread460 ] - %.3.i280 = phi ptr [ %309, %305 ], [ %.034.i278463, %.thread460 ] +310: ; preds = %305, %.thread462 + %311 = phi i32 [ %.pre1.i283, %305 ], [ %283, %.thread462 ] + %.3.i280 = phi ptr [ %309, %305 ], [ %.034.i278465, %.thread462 ] %312 = trunc i32 %311 to i8 %313 = getelementptr inbounds nuw i8, ptr %.3.i280, i64 1 store i8 %312, ptr %.3.i280, align 1, !tbaa !42 br label %314 -314: ; preds = %310, %.thread460 - %.4.i281 = phi ptr [ %.034.i278463, %.thread460 ], [ %313, %310 ] +314: ; preds = %310, %.thread462 + %.4.i281 = phi ptr [ %.034.i278465, %.thread462 ], [ %313, %310 ] %315 = ptrtoint ptr %.4.i281 to i64 %316 = ptrtoint ptr %.1384 to i64 %317 = sub i64 %315, %316 @@ -1286,135 +1286,136 @@ _ZL21LMBCSConversionWorkerP19UConverterDataLMBCShPhPDsS1_Pa.exit312: ; preds = % .thread419: ; preds = %381, %433 %434 = icmp ne i8 %.06.i373382, -127 - %435 = select i1 %434, i8 1, i8 16 + %435 = select i1 %434, i64 1, i64 16 %436 = add i8 %.06.i373382, 127 %437 = icmp ult i8 %436, 2 - %spec.select228 = select i1 %437, i32 19, i32 11 + %spec.select228439 = select i1 %437, i64 19, i64 11 %438 = zext i16 %.fr438 to i32 %439 = getelementptr inbounds nuw i8, ptr %.1384, i64 1 %440 = getelementptr inbounds nuw i8, ptr %.1384, i64 2 %441 = ptrtoint ptr %.1384 to i64 br label %442 -442: ; preds = %.thread419, %489 - %.0181443 = phi i8 [ %435, %.thread419 ], [ %490, %489 ] - %.8364442 = phi i8 [ %.5361, %.thread419 ], [ %.9365, %489 ] - %443 = zext nneg i8 %.0181443 to i64 - %444 = getelementptr inbounds nuw [20 x ptr], ptr %17, i64 0, i64 %443 - %445 = load ptr, ptr %444, align 8, !tbaa !12 - %.not218 = icmp eq ptr %445, null - br i1 %.not218, label %489, label %446 - -446: ; preds = %442 - %447 = getelementptr inbounds nuw [20 x i8], ptr %13, i64 0, i64 %443 - %448 = load i8, ptr %447, align 1, !tbaa !42 - %.not219 = icmp eq i8 %448, 0 - br i1 %.not219, label %449, label %489 - -449: ; preds = %446 +442: ; preds = %.thread419, %491 + %indvars.iv = phi i64 [ %435, %.thread419 ], [ %indvars.iv.next, %491 ] + %.8364443 = phi i8 [ %.5361, %.thread419 ], [ %.9365, %491 ] + %443 = getelementptr inbounds nuw [20 x ptr], ptr %17, i64 0, i64 %indvars.iv + %444 = load ptr, ptr %443, align 8, !tbaa !12 + %.not218 = icmp eq ptr %444, null + br i1 %.not218, label %491, label %445 + +445: ; preds = %442 + %446 = getelementptr inbounds nuw [20 x i8], ptr %13, i64 0, i64 %indvars.iv + %447 = load i8, ptr %446, align 1, !tbaa !42 + %.not219 = icmp eq i8 %447, 0 + br i1 %.not219, label %448, label %491 + +448: ; preds = %445 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %4) #8 - %450 = call i32 @ucnv_MBCSFromUChar32_77(ptr noundef nonnull %445, i32 noundef %438, ptr noundef nonnull %4, i8 noundef signext 0) - %451 = icmp sgt i32 %450, 0 - br i1 %451, label %453, label %452 + %449 = call i32 @ucnv_MBCSFromUChar32_77(ptr noundef nonnull %444, i32 noundef %438, ptr noundef nonnull %4, i8 noundef signext 0) + %450 = icmp sgt i32 %449, 0 + br i1 %450, label %452, label %451 -452: ; preds = %449 - store i8 1, ptr %447, align 1, !tbaa !42 +451: ; preds = %448 + store i8 1, ptr %446, align 1, !tbaa !42 br label %_ZL21LMBCSConversionWorkerP19UConverterDataLMBCShPhPDsS1_Pa.exit325 -453: ; preds = %449 - %454 = load i32, ptr %4, align 4, !tbaa !32 - %455 = shl i32 %450, 3 - %456 = add i32 %455, -8 - %457 = load i8, ptr %28, align 8, !tbaa !48 - %.not37.i315 = icmp eq i8 %457, %.0181443 - br i1 %.not37.i315, label %462, label %458 - -458: ; preds = %453 - store i8 %.0181443, ptr %.1384, align 1, !tbaa !42 - %459 = icmp eq i32 %450, 1 - %460 = icmp samesign ugt i8 %.0181443, 15 - %or.cond.i316 = and i1 %460, %459 - br i1 %or.cond.i316, label %461, label %462 - -461: ; preds = %458 - store i8 %.0181443, ptr %439, align 1, !tbaa !42 - br label %462 - -462: ; preds = %461, %458, %453 - %.034.i317 = phi ptr [ %440, %461 ], [ %439, %458 ], [ %.1384, %453 ] - %463 = icmp eq i32 %450, 1 - %464 = shl i32 224, %456 - %465 = and i32 %454, %464 - %466 = icmp eq i32 %465, 0 - %or.cond5.i318 = select i1 %463, i1 %466, i1 false - br i1 %or.cond5.i318, label %_ZL21LMBCSConversionWorkerP19UConverterDataLMBCShPhPDsS1_Pa.exit325, label %467 - -467: ; preds = %462 - switch i32 %450, label %485 [ - i32 4, label %468 - i32 3, label %472 - i32 2, label %476 - i32 1, label %481 +452: ; preds = %448 + %453 = load i32, ptr %4, align 4, !tbaa !32 + %454 = shl i32 %449, 3 + %455 = add i32 %454, -8 + %456 = load i8, ptr %28, align 8, !tbaa !48 + %457 = zext i8 %456 to i64 + %.not37.i315 = icmp eq i64 %indvars.iv, %457 + br i1 %.not37.i315, label %463, label %458 + +458: ; preds = %452 + %459 = trunc nuw nsw i64 %indvars.iv to i8 + store i8 %459, ptr %.1384, align 1, !tbaa !42 + %460 = icmp eq i32 %449, 1 + %461 = icmp samesign ugt i64 %indvars.iv, 15 + %or.cond.i316 = and i1 %461, %460 + br i1 %or.cond.i316, label %462, label %463 + +462: ; preds = %458 + store i8 %459, ptr %439, align 1, !tbaa !42 + br label %463 + +463: ; preds = %462, %458, %452 + %.034.i317 = phi ptr [ %440, %462 ], [ %439, %458 ], [ %.1384, %452 ] + %464 = icmp eq i32 %449, 1 + %465 = shl i32 224, %455 + %466 = and i32 %453, %465 + %467 = icmp eq i32 %466, 0 + %or.cond5.i318 = select i1 %464, i1 %467, i1 false + %468 = trunc nuw nsw i64 %indvars.iv to i8 + br i1 %or.cond5.i318, label %_ZL21LMBCSConversionWorkerP19UConverterDataLMBCShPhPDsS1_Pa.exit325, label %469 + +469: ; preds = %463 + switch i32 %449, label %487 [ + i32 4, label %470 + i32 3, label %474 + i32 2, label %478 + i32 1, label %483 ] -468: ; preds = %467 - %469 = lshr i32 %454, 24 - %470 = trunc nuw i32 %469 to i8 - %471 = getelementptr inbounds nuw i8, ptr %.034.i317, i64 1 - store i8 %470, ptr %.034.i317, align 1, !tbaa !42 - br label %472 - -472: ; preds = %468, %467 - %.1.i323 = phi ptr [ %471, %468 ], [ %.034.i317, %467 ] - %473 = lshr i32 %454, 16 - %474 = trunc i32 %473 to i8 - %475 = getelementptr inbounds nuw i8, ptr %.1.i323, i64 1 - store i8 %474, ptr %.1.i323, align 1, !tbaa !42 +470: ; preds = %469 + %471 = lshr i32 %453, 24 + %472 = trunc nuw i32 %471 to i8 + %473 = getelementptr inbounds nuw i8, ptr %.034.i317, i64 1 + store i8 %472, ptr %.034.i317, align 1, !tbaa !42 + br label %474 + +474: ; preds = %470, %469 + %.1.i323 = phi ptr [ %473, %470 ], [ %.034.i317, %469 ] + %475 = lshr i32 %453, 16 + %476 = trunc i32 %475 to i8 + %477 = getelementptr inbounds nuw i8, ptr %.1.i323, i64 1 + store i8 %476, ptr %.1.i323, align 1, !tbaa !42 %.pre.i324 = load i32, ptr %4, align 4, !tbaa !32 - br label %476 - -476: ; preds = %472, %467 - %477 = phi i32 [ %.pre.i324, %472 ], [ %454, %467 ] - %.2.i321 = phi ptr [ %475, %472 ], [ %.034.i317, %467 ] - %478 = lshr i32 %477, 8 - %479 = trunc i32 %478 to i8 - %480 = getelementptr inbounds nuw i8, ptr %.2.i321, i64 1 - store i8 %479, ptr %.2.i321, align 1, !tbaa !42 + br label %478 + +478: ; preds = %474, %469 + %479 = phi i32 [ %.pre.i324, %474 ], [ %453, %469 ] + %.2.i321 = phi ptr [ %477, %474 ], [ %.034.i317, %469 ] + %480 = lshr i32 %479, 8 + %481 = trunc i32 %480 to i8 + %482 = getelementptr inbounds nuw i8, ptr %.2.i321, i64 1 + store i8 %481, ptr %.2.i321, align 1, !tbaa !42 %.pre1.i322 = load i32, ptr %4, align 4, !tbaa !32 - br label %481 - -481: ; preds = %476, %467 - %482 = phi i32 [ %.pre1.i322, %476 ], [ %454, %467 ] - %.3.i319 = phi ptr [ %480, %476 ], [ %.034.i317, %467 ] - %483 = trunc i32 %482 to i8 - %484 = getelementptr inbounds nuw i8, ptr %.3.i319, i64 1 - store i8 %483, ptr %.3.i319, align 1, !tbaa !42 - br label %485 - -485: ; preds = %481, %467 - %.4.i320 = phi ptr [ %.034.i317, %467 ], [ %484, %481 ] - %486 = ptrtoint ptr %.4.i320 to i64 - %487 = sub i64 %486, %441 - %488 = trunc i64 %487 to i32 + br label %483 + +483: ; preds = %478, %469 + %484 = phi i32 [ %.pre1.i322, %478 ], [ %453, %469 ] + %.3.i319 = phi ptr [ %482, %478 ], [ %.034.i317, %469 ] + %485 = trunc i32 %484 to i8 + %486 = getelementptr inbounds nuw i8, ptr %.3.i319, i64 1 + store i8 %485, ptr %.3.i319, align 1, !tbaa !42 + br label %487 + +487: ; preds = %483, %469 + %.4.i320 = phi ptr [ %.034.i317, %469 ], [ %486, %483 ] + %488 = ptrtoint ptr %.4.i320 to i64 + %489 = sub i64 %488, %441 + %490 = trunc i64 %489 to i32 br label %_ZL21LMBCSConversionWorkerP19UConverterDataLMBCShPhPDsS1_Pa.exit325 -_ZL21LMBCSConversionWorkerP19UConverterDataLMBCShPhPDsS1_Pa.exit325: ; preds = %452, %462, %485 - %.17 = phi i8 [ %.0181443, %462 ], [ %.0181443, %485 ], [ %.8364442, %452 ] - %.0.i313 = phi i32 [ 0, %462 ], [ %488, %485 ], [ 0, %452 ] +_ZL21LMBCSConversionWorkerP19UConverterDataLMBCShPhPDsS1_Pa.exit325: ; preds = %451, %463, %487 + %.17 = phi i8 [ %468, %463 ], [ %468, %487 ], [ %.8364443, %451 ] + %.0.i313 = phi i32 [ 0, %463 ], [ %490, %487 ], [ 0, %451 ] call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #8 - br label %489 - -489: ; preds = %442, %446, %_ZL21LMBCSConversionWorkerP19UConverterDataLMBCShPhPDsS1_Pa.exit325 - %.9365 = phi i8 [ %.8364442, %442 ], [ %.17, %_ZL21LMBCSConversionWorkerP19UConverterDataLMBCShPhPDsS1_Pa.exit325 ], [ %.8364442, %446 ] - %.10 = phi i32 [ 0, %442 ], [ %.0.i313, %_ZL21LMBCSConversionWorkerP19UConverterDataLMBCShPhPDsS1_Pa.exit325 ], [ 0, %446 ] - %490 = add nuw nsw i8 %.0181443, 1 - %491 = zext nneg i8 %490 to i32 - %492 = icmp samesign uge i32 %spec.select228, %491 + br label %491 + +491: ; preds = %442, %445, %_ZL21LMBCSConversionWorkerP19UConverterDataLMBCShPhPDsS1_Pa.exit325 + %.9365 = phi i8 [ %.8364443, %442 ], [ %.17, %_ZL21LMBCSConversionWorkerP19UConverterDataLMBCShPhPDsS1_Pa.exit325 ], [ %.8364443, %445 ] + %.10 = phi i32 [ 0, %442 ], [ %.0.i313, %_ZL21LMBCSConversionWorkerP19UConverterDataLMBCShPhPDsS1_Pa.exit325 ], [ 0, %445 ] + %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 + %492 = icmp samesign ugt i64 %spec.select228439, %indvars.iv %.not217 = icmp eq i32 %.10, 0 %493 = select i1 %492, i1 %.not217, i1 false br i1 %493, label %442, label %494, !llvm.loop !49 -494: ; preds = %489 +494: ; preds = %491 %or.cond73 = and i1 %434, %.not217 br i1 %or.cond73, label %495, label %528 @@ -1518,7 +1519,7 @@ _ZL21LMBCSConversionWorkerP19UConverterDataLMBCShPhPDsS1_Pa.exit335: ; preds = % br label %.thread432 .thread432: ; preds = %319, %219, %_ZL21LMBCSConversionWorkerP19UConverterDataLMBCShPhPDsS1_Pa.exit250, %433, %.thread437, %137, %529, %528, %switch.early.test225, %switch.early.test225, %switch.early.test225, %switch.early.test225, %switch.early.test225 - %.1357 = phi i8 [ %.7363, %529 ], [ %.7363, %528 ], [ %.2358, %137 ], [ %.0356451, %switch.early.test225 ], [ %.0356451, %switch.early.test225 ], [ %.0356451, %switch.early.test225 ], [ %.0356451, %switch.early.test225 ], [ %.0356451, %switch.early.test225 ], [ %.0356451, %.thread437 ], [ %.5361, %433 ], [ %.3359, %319 ], [ 0, %219 ], [ 1, %_ZL21LMBCSConversionWorkerP19UConverterDataLMBCShPhPDsS1_Pa.exit250 ] + %.1357 = phi i8 [ %.7363, %529 ], [ %.7363, %528 ], [ %.2358, %137 ], [ %.0356452, %switch.early.test225 ], [ %.0356452, %switch.early.test225 ], [ %.0356452, %switch.early.test225 ], [ %.0356452, %switch.early.test225 ], [ %.0356452, %switch.early.test225 ], [ %.0356452, %.thread437 ], [ %.5361, %433 ], [ %.3359, %319 ], [ 0, %219 ], [ 1, %_ZL21LMBCSConversionWorkerP19UConverterDataLMBCShPhPDsS1_Pa.exit250 ] %.1187 = phi i32 [ %537, %529 ], [ %.8, %528 ], [ %.2188, %137 ], [ 1, %switch.early.test225 ], [ 1, %switch.early.test225 ], [ 1, %switch.early.test225 ], [ 1, %switch.early.test225 ], [ 1, %switch.early.test225 ], [ 1, %.thread437 ], [ %.7, %433 ], [ %.4190, %319 ], [ %223, %219 ], [ %187, %_ZL21LMBCSConversionWorkerP19UConverterDataLMBCShPhPDsS1_Pa.exit250 ] %538 = load ptr, ptr %18, align 8, !tbaa !36 %539 = getelementptr inbounds nuw i8, ptr %538, i64 2 @@ -1530,15 +1531,15 @@ _ZL21LMBCSConversionWorkerP19UConverterDataLMBCShPhPDsS1_Pa.exit335: ; preds = % .lr.ph: ; preds = %.thread432, %552 %543 = phi ptr [ %553, %552 ], [ %540, %.thread432 ] - %.3446 = phi ptr [ %546, %552 ], [ %12, %.thread432 ] - %.12445 = phi i32 [ %544, %552 ], [ %.1187, %.thread432 ] - %544 = add nsw i32 %.12445, -1 - %.not221 = icmp eq i32 %.12445, 0 + %.3447 = phi ptr [ %546, %552 ], [ %12, %.thread432 ] + %.12446 = phi i32 [ %544, %552 ], [ %.1187, %.thread432 ] + %544 = add nsw i32 %.12446, -1 + %.not221 = icmp eq i32 %.12446, 0 br i1 %.not221, label %.critedge75.thread, label %545 545: ; preds = %.lr.ph - %546 = getelementptr inbounds nuw i8, ptr %.3446, i64 1 - %547 = load i8, ptr %.3446, align 1, !tbaa !42 + %546 = getelementptr inbounds nuw i8, ptr %.3447, i64 1 + %547 = load i8, ptr %.3447, align 1, !tbaa !42 %548 = getelementptr inbounds nuw i8, ptr %543, i64 1 store ptr %548, ptr %24, align 8, !tbaa !40 store i8 %547, ptr %543, align 1, !tbaa !42 @@ -1549,7 +1550,7 @@ _ZL21LMBCSConversionWorkerP19UConverterDataLMBCShPhPDsS1_Pa.exit335: ; preds = % 550: ; preds = %545 %551 = getelementptr inbounds nuw i8, ptr %549, i64 4 store ptr %551, ptr %31, align 8, !tbaa !50 - store i32 %.0185452, ptr %549, align 4, !tbaa !32 + store i32 %.0185453, ptr %549, align 4, !tbaa !32 br label %552 552: ; preds = %550, %545 @@ -1574,19 +1575,19 @@ _ZL21LMBCSConversionWorkerP19UConverterDataLMBCShPhPDsS1_Pa.exit335: ; preds = % br label %562 562: ; preds = %557, %562 - %.0450 = phi ptr [ %559, %557 ], [ %566, %562 ] - %.4449 = phi ptr [ %.3.lcssa, %557 ], [ %564, %562 ] - %.14448 = phi i32 [ %.12.lcssa, %557 ], [ %563, %562 ] - %563 = add nsw i32 %.14448, -1 - %564 = getelementptr inbounds nuw i8, ptr %.4449, i64 1 - %565 = load i8, ptr %.4449, align 1, !tbaa !42 - %566 = getelementptr inbounds nuw i8, ptr %.0450, i64 1 - store i8 %565, ptr %.0450, align 1, !tbaa !42 + %.0451 = phi ptr [ %559, %557 ], [ %566, %562 ] + %.4450 = phi ptr [ %.3.lcssa, %557 ], [ %564, %562 ] + %.14449 = phi i32 [ %.12.lcssa, %557 ], [ %563, %562 ] + %563 = add nsw i32 %.14449, -1 + %564 = getelementptr inbounds nuw i8, ptr %.4450, i64 1 + %565 = load i8, ptr %.4450, align 1, !tbaa !42 + %566 = getelementptr inbounds nuw i8, ptr %.0451, i64 1 + store i8 %565, ptr %.0451, align 1, !tbaa !42 %.not222 = icmp eq i32 %563, 0 br i1 %.not222, label %.critedge75.thread, label %562, !llvm.loop !53 .critedge75.thread: ; preds = %.lr.ph, %562, %.critedge75 - %567 = add nuw nsw i32 %.0185452, 1 + %567 = add nuw nsw i32 %.0185453, 1 store i8 %37, ptr %23, align 1, !tbaa !38 %568 = load ptr, ptr %18, align 8, !tbaa !36 %569 = load ptr, ptr %19, align 8, !tbaa !37 diff --git a/bench/icu/optimized/utrie_swap.ll b/bench/icu/optimized/utrie_swap.ll index c39c53d79a8..5062524c40e 100644 --- a/bench/icu/optimized/utrie_swap.ll +++ b/bench/icu/optimized/utrie_swap.ll @@ -310,32 +310,32 @@ define range(i32 0, 4325387) i32 @ucptrie_swap_77(ptr noundef %0, ptr noundef %1 %41 = zext i16 %34 to i32 %42 = or disjoint i32 %40, %41 %43 = icmp eq i32 %37, 0 - %44 = select i1 %43, i32 1024, i32 64 - %45 = icmp ne i32 %21, 1416784179 - %46 = icmp samesign ugt i32 %37, 1 - %or.cond7 = select i1 %45, i1 true, i1 %46 - br i1 %or.cond7, label %55, label %47 - -47: ; preds = %17 - %48 = and i32 %35, 56 - %49 = icmp ne i32 %48, 0 - %50 = icmp samesign ugt i32 %38, 2 - %or.cond9 = select i1 %49, i1 true, i1 %50 - br i1 %or.cond9, label %55, label %51 - -51: ; preds = %47 - %52 = zext i16 %30 to i32 - %53 = icmp samesign ugt i32 %44, %52 - %54 = icmp samesign ult i32 %42, 128 - %or.cond11 = select i1 %53, i1 true, i1 %54 - br i1 %or.cond11, label %55, label %56 - -55: ; preds = %51, %47, %17 + %44 = icmp ne i32 %21, 1416784179 + %45 = icmp samesign ugt i32 %37, 1 + %or.cond7 = select i1 %44, i1 true, i1 %45 + br i1 %or.cond7, label %54, label %46 + +46: ; preds = %17 + %47 = and i32 %35, 56 + %48 = icmp ne i32 %47, 0 + %49 = icmp samesign ugt i32 %38, 2 + %or.cond9 = select i1 %48, i1 true, i1 %49 + br i1 %or.cond9, label %54, label %50 + +50: ; preds = %46 + %51 = select i1 %43, i16 1024, i16 64 + %52 = icmp ugt i16 %51, %30 + %53 = icmp samesign ult i32 %42, 128 + %or.cond11 = select i1 %52, i1 true, i1 %53 + br i1 %or.cond11, label %54, label %55 + +54: ; preds = %50, %46, %17 store i32 3, ptr %4, align 4, !tbaa !3 br label %.thread -56: ; preds = %51 - %57 = shl nuw nsw i32 %52, 1 +55: ; preds = %50 + %56 = zext i16 %30 to i32 + %57 = shl nuw nsw i32 %56, 1 %narrow = add nuw nsw i32 %57, 16 switch i32 %38, label %default.unreachable [ i32 0, label %58 @@ -343,19 +343,19 @@ define range(i32 0, 4325387) i32 @ucptrie_swap_77(ptr noundef %0, ptr noundef %1 i32 2, label %62 ] -58: ; preds = %56 +58: ; preds = %55 %59 = shl nuw nsw i32 %42, 1 br label %62 -60: ; preds = %56 +60: ; preds = %55 %61 = shl nuw nsw i32 %42, 2 br label %62 -default.unreachable: ; preds = %64, %56 +default.unreachable: ; preds = %64, %55 unreachable -62: ; preds = %56, %60, %58 - %.pn = phi i32 [ %59, %58 ], [ %61, %60 ], [ %42, %56 ] +62: ; preds = %55, %60, %58 + %.pn = phi i32 [ %59, %58 ], [ %61, %60 ], [ %42, %55 ] %.095 = add nuw nsw i32 %narrow, %.pn br i1 %12, label %63, label %.thread @@ -409,8 +409,8 @@ default.unreachable: ; preds = %64, %56 store i32 8, ptr %4, align 4, !tbaa !3 br label %.thread -.thread: ; preds = %79, %83, %88, %87, %62, %90, %55, %5, %16, %14 - %.0 = phi i32 [ 0, %14 ], [ 0, %16 ], [ 0, %5 ], [ 0, %55 ], [ 0, %90 ], [ %.095, %62 ], [ %.095, %87 ], [ %.095, %88 ], [ %.095, %83 ], [ %.095, %79 ] +.thread: ; preds = %79, %83, %88, %87, %62, %90, %54, %5, %16, %14 + %.0 = phi i32 [ 0, %14 ], [ 0, %16 ], [ 0, %5 ], [ 0, %54 ], [ 0, %90 ], [ %.095, %62 ], [ %.095, %87 ], [ %.095, %88 ], [ %.095, %83 ], [ %.095, %79 ] ret i32 %.0 } diff --git a/bench/jq/optimized/regcomp.ll b/bench/jq/optimized/regcomp.ll index b1484385da0..a52fa0a7d06 100644 --- a/bench/jq/optimized/regcomp.ll +++ b/bench/jq/optimized/regcomp.ll @@ -11051,16 +11051,16 @@ define internal fastcc i32 @is_exclusive(ptr noundef nonnull readonly captures(n %53 = getelementptr inbounds nuw i8, ptr %.0115, i64 24 %54 = load i32, ptr %53, align 8, !tbaa !20 %.not152 = icmp eq i32 %54, 0 - %55 = select i1 %.not152, i32 256, i32 128 - %56 = getelementptr inbounds nuw i8, ptr %2, i64 96 - %57 = getelementptr inbounds nuw i8, ptr %.0114, i64 20 + %55 = getelementptr inbounds nuw i8, ptr %2, i64 96 + %56 = getelementptr inbounds nuw i8, ptr %.0114, i64 20 + %57 = select i1 %.not152, i32 255, i32 127 br label %58 58: ; preds = %52, %71 %.0116206 = phi i32 [ 0, %52 ], [ %72, %71 ] %59 = lshr i32 %.0116206, 5 %60 = zext nneg i32 %59 to i64 - %61 = getelementptr inbounds nuw [8 x i32], ptr %57, i64 0, i64 %60 + %61 = getelementptr inbounds nuw [8 x i32], ptr %56, i64 0, i64 %60 %62 = load i32, ptr %61, align 4, !tbaa !4 %63 = and i32 %.0116206, 31 %64 = shl nuw i32 1, %63 @@ -11069,7 +11069,7 @@ define internal fastcc i32 @is_exclusive(ptr noundef nonnull readonly captures(n br i1 %.not153, label %71, label %66 66: ; preds = %58 - %67 = load ptr, ptr %56, align 8, !tbaa !13 + %67 = load ptr, ptr %55, align 8, !tbaa !13 %68 = getelementptr inbounds nuw i8, ptr %67, i64 88 %69 = load ptr, ptr %68, align 8, !tbaa !266 %70 = tail call i32 %69(i32 noundef %.0116206, i32 noundef 12) #22 @@ -11078,7 +11078,7 @@ define internal fastcc i32 @is_exclusive(ptr noundef nonnull readonly captures(n 71: ; preds = %58, %66 %72 = add nuw nsw i32 %.0116206, 1 - %exitcond233.not = icmp eq i32 %72, %55 + %exitcond233.not = icmp eq i32 %57, %.0116206 br i1 %exitcond233.not, label %.thread160, label %58, !llvm.loop !267 73: ; preds = %40 @@ -11095,9 +11095,9 @@ define internal fastcc i32 @is_exclusive(ptr noundef nonnull readonly captures(n %79 = getelementptr inbounds nuw i8, ptr %.0115, i64 24 %80 = load i32, ptr %79, align 8, !tbaa !20 %.not147.not = icmp eq i32 %80, 0 - %81 = select i1 %.not147.not, i32 256, i32 128 - %82 = getelementptr inbounds nuw i8, ptr %2, i64 96 - %83 = getelementptr inbounds nuw i8, ptr %.0114, i64 20 + %81 = getelementptr inbounds nuw i8, ptr %2, i64 96 + %82 = getelementptr inbounds nuw i8, ptr %.0114, i64 20 + %83 = select i1 %.not147.not, i32 255, i32 127 br label %84 .preheader: ; preds = %97 @@ -11105,7 +11105,7 @@ define internal fastcc i32 @is_exclusive(ptr noundef nonnull readonly captures(n 84: ; preds = %78, %97 %.1117200 = phi i32 [ 0, %78 ], [ %98, %97 ] - %85 = load ptr, ptr %82, align 8, !tbaa !13 + %85 = load ptr, ptr %81, align 8, !tbaa !13 %86 = getelementptr inbounds nuw i8, ptr %85, i64 88 %87 = load ptr, ptr %86, align 8, !tbaa !266 %88 = tail call i32 %87(i32 noundef %.1117200, i32 noundef 12) #22 @@ -11115,7 +11115,7 @@ define internal fastcc i32 @is_exclusive(ptr noundef nonnull readonly captures(n 89: ; preds = %84 %90 = lshr i32 %.1117200, 5 %91 = zext nneg i32 %90 to i64 - %92 = getelementptr inbounds nuw [8 x i32], ptr %83, i64 0, i64 %91 + %92 = getelementptr inbounds nuw [8 x i32], ptr %82, i64 0, i64 %91 %93 = load i32, ptr %92, align 4, !tbaa !4 %94 = and i32 %.1117200, 31 %95 = shl nuw i32 1, %94 @@ -11125,7 +11125,7 @@ define internal fastcc i32 @is_exclusive(ptr noundef nonnull readonly captures(n 97: ; preds = %84, %89 %98 = add nuw nsw i32 %.1117200, 1 - %exitcond229.not = icmp eq i32 %98, %81 + %exitcond229.not = icmp eq i32 %83, %.1117200 br i1 %exitcond229.not, label %.preheader, label %84, !llvm.loop !268 99: ; preds = %.lr.ph202 @@ -11137,7 +11137,7 @@ define internal fastcc i32 @is_exclusive(ptr noundef nonnull readonly captures(n %.2118201 = phi i32 [ %100, %99 ], [ 128, %.preheader ] %101 = lshr i32 %.2118201, 5 %102 = zext nneg i32 %101 to i64 - %103 = getelementptr inbounds nuw [8 x i32], ptr %83, i64 0, i64 %102 + %103 = getelementptr inbounds nuw [8 x i32], ptr %82, i64 0, i64 %102 %104 = load i32, ptr %103, align 4, !tbaa !4 %105 = and i32 %.2118201, 31 %106 = shl nuw i32 1, %105 diff --git a/bench/libjpeg-turbo/optimized/jdhuff.ll b/bench/libjpeg-turbo/optimized/jdhuff.ll index 029388f958a..cf2c3cc076e 100644 --- a/bench/libjpeg-turbo/optimized/jdhuff.ll +++ b/bench/libjpeg-turbo/optimized/jdhuff.ll @@ -309,33 +309,32 @@ define void @jpeg_make_d_derived_tbl(ptr noundef %0, i32 noundef %1, i32 noundef %wide.trip.count = zext nneg i32 %.1.lcssa to i64 br label %136 -136: ; preds = %.lr.ph159, %149 - %indvars.iv189 = phi i64 [ 0, %.lr.ph159 ], [ %indvars.iv.next190, %149 ] +136: ; preds = %.lr.ph159, %148 + %indvars.iv189 = phi i64 [ 0, %.lr.ph159 ], [ %indvars.iv.next190, %148 ] %137 = getelementptr inbounds nuw [256 x i8], ptr %107, i64 0, i64 %indvars.iv189 %138 = load i8, ptr %137, align 1, !tbaa !33 - %139 = zext i8 %138 to i32 - %140 = load ptr, ptr %135, align 8, !tbaa !52 - %141 = getelementptr inbounds nuw i8, ptr %140, i64 20 - %142 = load i32, ptr %141, align 4, !tbaa !53 - %.not118 = icmp eq i32 %142, 0 - %143 = select i1 %.not118, i32 15, i32 16 - %144 = icmp samesign ult i32 %143, %139 - br i1 %144, label %145, label %149 - -145: ; preds = %136 - %146 = load ptr, ptr %0, align 8, !tbaa !3 - %147 = getelementptr inbounds nuw i8, ptr %146, i64 40 - store i32 8, ptr %147, align 8, !tbaa !30 - %148 = load ptr, ptr %146, align 8, !tbaa !34 - tail call void %148(ptr noundef nonnull %0) #5 - br label %149 - -149: ; preds = %145, %136 + %139 = load ptr, ptr %135, align 8, !tbaa !52 + %140 = getelementptr inbounds nuw i8, ptr %139, i64 20 + %141 = load i32, ptr %140, align 4, !tbaa !53 + %.not118 = icmp eq i32 %141, 0 + %142 = select i1 %.not118, i8 15, i8 16 + %143 = icmp ult i8 %142, %138 + br i1 %143, label %144, label %148 + +144: ; preds = %136 + %145 = load ptr, ptr %0, align 8, !tbaa !3 + %146 = getelementptr inbounds nuw i8, ptr %145, i64 40 + store i32 8, ptr %146, align 8, !tbaa !30 + %147 = load ptr, ptr %145, align 8, !tbaa !34 + tail call void %147(ptr noundef nonnull %0) #5 + br label %148 + +148: ; preds = %144, %136 %indvars.iv.next190 = add nuw nsw i64 %indvars.iv189, 1 %exitcond192.not = icmp eq i64 %indvars.iv.next190, %wide.trip.count br i1 %exitcond192.not, label %.loopexit, label %136, !llvm.loop !55 -.loopexit: ; preds = %149, %133 +.loopexit: ; preds = %148, %133 call void @llvm.lifetime.end.p0(i64 1028, ptr nonnull %6) #5 call void @llvm.lifetime.end.p0(i64 257, ptr nonnull %5) #5 ret void diff --git a/bench/libquic/optimized/inflate.ll b/bench/libquic/optimized/inflate.ll index 66095e65b20..e49d20a9a7d 100644 --- a/bench/libquic/optimized/inflate.ll +++ b/bench/libquic/optimized/inflate.ll @@ -3705,13 +3705,13 @@ define range(i32 -5, 1) i32 @MOZ_Z_inflateSync(ptr noundef captures(address_is_n %2 = alloca [4 x i8], align 1 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %2) #10 %3 = icmp eq ptr %0, null - br i1 %3, label %98, label %4 + br i1 %3, label %96, label %4 4: ; preds = %1 %5 = getelementptr inbounds nuw i8, ptr %0, i64 56 %6 = load ptr, ptr %5, align 8, !tbaa !3 %7 = icmp eq ptr %6, null - br i1 %7, label %98, label %8 + br i1 %7, label %96, label %8 8: ; preds = %4 %9 = getelementptr inbounds nuw i8, ptr %0, i64 8 @@ -3723,7 +3723,7 @@ define range(i32 -5, 1) i32 @MOZ_Z_inflateSync(ptr noundef captures(address_is_n %13 = getelementptr inbounds nuw i8, ptr %6, i64 80 %14 = load i32, ptr %13, align 8, !tbaa !24 %15 = icmp ult i32 %14, 8 - br i1 %15, label %98, label %16 + br i1 %15, label %96, label %16 16: ; preds = %12, %8 %17 = load i32, ptr %6, align 8, !tbaa !18 @@ -3733,7 +3733,7 @@ define range(i32 -5, 1) i32 @MOZ_Z_inflateSync(ptr noundef captures(address_is_n ._crit_edge62: ; preds = %16 %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %6, i64 132 %.pre63 = load i32, ptr %.phi.trans.insert, align 4, !tbaa !98 - br label %45 + br label %44 18: ; preds = %16 store i32 31, ptr %6, align 8, !tbaa !18 @@ -3777,137 +3777,135 @@ define range(i32 -5, 1) i32 @MOZ_Z_inflateSync(ptr noundef captures(address_is_n %.01415.i = phi i32 [ 0, %.lr.ph.preheader.i ], [ %.1.i, %.lr.ph.i ] %33 = getelementptr inbounds nuw i8, ptr %2, i64 %indvars.iv.i %34 = load i8, ptr %33, align 1, !tbaa !37 - %35 = zext i8 %34 to i32 - %36 = icmp samesign ult i32 %.01415.i, 2 - %37 = select i1 %36, i32 0, i32 255 - %38 = icmp eq i32 %37, %35 - %39 = add nuw nsw i32 %.01415.i, 1 + %35 = icmp samesign ugt i32 %.01415.i, 1 + %36 = sext i1 %35 to i8 + %37 = icmp eq i8 %34, %36 + %38 = add nuw nsw i32 %.01415.i, 1 %.not.i = icmp eq i8 %34, 0 - %40 = sub nuw nsw i32 4, %.01415.i - %spec.select.i = select i1 %.not.i, i32 %40, i32 0 - %.1.i = select i1 %38, i32 %39, i32 %spec.select.i + %39 = sub nuw nsw i32 4, %.01415.i + %spec.select.i = select i1 %.not.i, i32 %39, i32 0 + %.1.i = select i1 %37, i32 %38, i32 %spec.select.i %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 - %41 = icmp samesign ult i64 %indvars.iv.next.i, %32 - %42 = icmp samesign ult i32 %.1.i, 4 - %43 = select i1 %41, i1 %42, i1 false - br i1 %43, label %.lr.ph.i, label %syncsearch.exit, !llvm.loop !100 + %40 = icmp samesign ult i64 %indvars.iv.next.i, %32 + %41 = icmp samesign ult i32 %.1.i, 4 + %42 = select i1 %40, i1 %41, i1 false + br i1 %42, label %.lr.ph.i, label %syncsearch.exit, !llvm.loop !100 syncsearch.exit: ; preds = %.lr.ph.i, %.thread %.014.lcssa.i = phi i32 [ 0, %.thread ], [ %.1.i, %.lr.ph.i ] - %44 = getelementptr inbounds nuw i8, ptr %6, i64 132 - store i32 %.014.lcssa.i, ptr %44, align 4, !tbaa !98 + %43 = getelementptr inbounds nuw i8, ptr %6, i64 132 + store i32 %.014.lcssa.i, ptr %43, align 4, !tbaa !98 %.pre = load i32, ptr %9, align 8, !tbaa !42 - br label %45 - -45: ; preds = %._crit_edge62, %syncsearch.exit - %46 = phi i32 [ %.014.lcssa.i, %syncsearch.exit ], [ %.pre63, %._crit_edge62 ] - %47 = phi i32 [ %.pre, %syncsearch.exit ], [ %10, %._crit_edge62 ] - %48 = getelementptr inbounds nuw i8, ptr %6, i64 132 - %49 = load ptr, ptr %0, align 8, !tbaa !41 - %50 = icmp ne i32 %47, 0 - %51 = icmp ult i32 %46, 4 - %52 = select i1 %50, i1 %51, i1 false - br i1 %52, label %.lr.ph.preheader.i43, label %syncsearch.exit52 - -.lr.ph.preheader.i43: ; preds = %45 - %53 = zext i32 %47 to i64 + br label %44 + +44: ; preds = %._crit_edge62, %syncsearch.exit + %45 = phi i32 [ %.014.lcssa.i, %syncsearch.exit ], [ %.pre63, %._crit_edge62 ] + %46 = phi i32 [ %.pre, %syncsearch.exit ], [ %10, %._crit_edge62 ] + %47 = getelementptr inbounds nuw i8, ptr %6, i64 132 + %48 = load ptr, ptr %0, align 8, !tbaa !41 + %49 = icmp ne i32 %46, 0 + %50 = icmp ult i32 %45, 4 + %51 = select i1 %49, i1 %50, i1 false + br i1 %51, label %.lr.ph.preheader.i43, label %syncsearch.exit52 + +.lr.ph.preheader.i43: ; preds = %44 + %52 = zext i32 %46 to i64 br label %.lr.ph.i44 .lr.ph.i44: ; preds = %.lr.ph.i44, %.lr.ph.preheader.i43 %indvars.iv.i45 = phi i64 [ 0, %.lr.ph.preheader.i43 ], [ %indvars.iv.next.i50, %.lr.ph.i44 ] - %.01415.i46 = phi i32 [ %46, %.lr.ph.preheader.i43 ], [ %.1.i49, %.lr.ph.i44 ] - %54 = getelementptr inbounds nuw i8, ptr %49, i64 %indvars.iv.i45 - %55 = load i8, ptr %54, align 1, !tbaa !37 - %56 = zext i8 %55 to i32 - %57 = icmp samesign ult i32 %.01415.i46, 2 - %58 = select i1 %57, i32 0, i32 255 - %59 = icmp eq i32 %58, %56 - %60 = add nuw nsw i32 %.01415.i46, 1 - %.not.i47 = icmp eq i8 %55, 0 - %61 = sub nuw nsw i32 4, %.01415.i46 - %spec.select.i48 = select i1 %.not.i47, i32 %61, i32 0 - %.1.i49 = select i1 %59, i32 %60, i32 %spec.select.i48 + %.01415.i46 = phi i32 [ %45, %.lr.ph.preheader.i43 ], [ %.1.i49, %.lr.ph.i44 ] + %53 = getelementptr inbounds nuw i8, ptr %48, i64 %indvars.iv.i45 + %54 = load i8, ptr %53, align 1, !tbaa !37 + %55 = icmp samesign ugt i32 %.01415.i46, 1 + %56 = sext i1 %55 to i8 + %57 = icmp eq i8 %54, %56 + %58 = add nuw nsw i32 %.01415.i46, 1 + %.not.i47 = icmp eq i8 %54, 0 + %59 = sub nuw nsw i32 4, %.01415.i46 + %spec.select.i48 = select i1 %.not.i47, i32 %59, i32 0 + %.1.i49 = select i1 %57, i32 %58, i32 %spec.select.i48 %indvars.iv.next.i50 = add nuw nsw i64 %indvars.iv.i45, 1 - %62 = icmp samesign ult i64 %indvars.iv.next.i50, %53 - %63 = icmp samesign ult i32 %.1.i49, 4 - %64 = select i1 %62, i1 %63, i1 false - br i1 %64, label %.lr.ph.i44, label %._crit_edge.loopexit.i51, !llvm.loop !100 + %60 = icmp samesign ult i64 %indvars.iv.next.i50, %52 + %61 = icmp samesign ult i32 %.1.i49, 4 + %62 = select i1 %60, i1 %61, i1 false + br i1 %62, label %.lr.ph.i44, label %._crit_edge.loopexit.i51, !llvm.loop !100 ._crit_edge.loopexit.i51: ; preds = %.lr.ph.i44 - %65 = trunc nuw i64 %indvars.iv.next.i50 to i32 + %63 = trunc nuw i64 %indvars.iv.next.i50 to i32 br label %syncsearch.exit52 -syncsearch.exit52: ; preds = %45, %._crit_edge.loopexit.i51 - %.014.lcssa.i41 = phi i32 [ %46, %45 ], [ %.1.i49, %._crit_edge.loopexit.i51 ] - %.0.lcssa.i42 = phi i32 [ 0, %45 ], [ %65, %._crit_edge.loopexit.i51 ] - store i32 %.014.lcssa.i41, ptr %48, align 4, !tbaa !98 - %66 = load i32, ptr %9, align 8, !tbaa !42 - %67 = sub i32 %66, %.0.lcssa.i42 - store i32 %67, ptr %9, align 8, !tbaa !42 - %68 = zext i32 %.0.lcssa.i42 to i64 - %69 = getelementptr inbounds nuw i8, ptr %49, i64 %68 - store ptr %69, ptr %0, align 8, !tbaa !41 - %70 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %71 = load i64, ptr %70, align 8, !tbaa !15 - %72 = add i64 %71, %68 - store i64 %72, ptr %70, align 8, !tbaa !15 +syncsearch.exit52: ; preds = %44, %._crit_edge.loopexit.i51 + %.014.lcssa.i41 = phi i32 [ %45, %44 ], [ %.1.i49, %._crit_edge.loopexit.i51 ] + %.0.lcssa.i42 = phi i32 [ 0, %44 ], [ %63, %._crit_edge.loopexit.i51 ] + store i32 %.014.lcssa.i41, ptr %47, align 4, !tbaa !98 + %64 = load i32, ptr %9, align 8, !tbaa !42 + %65 = sub i32 %64, %.0.lcssa.i42 + store i32 %65, ptr %9, align 8, !tbaa !42 + %66 = zext i32 %.0.lcssa.i42 to i64 + %67 = getelementptr inbounds nuw i8, ptr %48, i64 %66 + store ptr %67, ptr %0, align 8, !tbaa !41 + %68 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %69 = load i64, ptr %68, align 8, !tbaa !15 + %70 = add i64 %69, %66 + store i64 %70, ptr %68, align 8, !tbaa !15 %.not40 = icmp eq i32 %.014.lcssa.i41, 4 - br i1 %.not40, label %73, label %98 - -73: ; preds = %syncsearch.exit52 - %74 = getelementptr inbounds nuw i8, ptr %0, i64 40 - %75 = load i64, ptr %74, align 8, !tbaa !95 - %76 = getelementptr inbounds nuw i8, ptr %6, i64 52 - store i32 0, ptr %76, align 4, !tbaa !30 - %77 = getelementptr inbounds nuw i8, ptr %6, i64 56 - store i32 0, ptr %77, align 8, !tbaa !31 - %78 = getelementptr inbounds nuw i8, ptr %6, i64 60 - store i32 0, ptr %78, align 4, !tbaa !32 - %79 = getelementptr inbounds nuw i8, ptr %6, i64 32 - store i64 0, ptr %79, align 8, !tbaa !12 - %80 = getelementptr inbounds nuw i8, ptr %6, i64 8 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %74, i8 0, i64 16, i1 false) - %81 = load i32, ptr %80, align 8, !tbaa !16 - %.not.i.i = icmp eq i32 %81, 0 - br i1 %.not.i.i, label %MOZ_Z_inflateReset.exit, label %82 - -82: ; preds = %73 - %83 = and i32 %81, 1 - %84 = zext nneg i32 %83 to i64 - %85 = getelementptr inbounds nuw i8, ptr %0, i64 96 - store i64 %84, ptr %85, align 8, !tbaa !17 + br i1 %.not40, label %71, label %96 + +71: ; preds = %syncsearch.exit52 + %72 = getelementptr inbounds nuw i8, ptr %0, i64 40 + %73 = load i64, ptr %72, align 8, !tbaa !95 + %74 = getelementptr inbounds nuw i8, ptr %6, i64 52 + store i32 0, ptr %74, align 4, !tbaa !30 + %75 = getelementptr inbounds nuw i8, ptr %6, i64 56 + store i32 0, ptr %75, align 8, !tbaa !31 + %76 = getelementptr inbounds nuw i8, ptr %6, i64 60 + store i32 0, ptr %76, align 4, !tbaa !32 + %77 = getelementptr inbounds nuw i8, ptr %6, i64 32 + store i64 0, ptr %77, align 8, !tbaa !12 + %78 = getelementptr inbounds nuw i8, ptr %6, i64 8 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %72, i8 0, i64 16, i1 false) + %79 = load i32, ptr %78, align 8, !tbaa !16 + %.not.i.i = icmp eq i32 %79, 0 + br i1 %.not.i.i, label %MOZ_Z_inflateReset.exit, label %80 + +80: ; preds = %71 + %81 = and i32 %79, 1 + %82 = zext nneg i32 %81 to i64 + %83 = getelementptr inbounds nuw i8, ptr %0, i64 96 + store i64 %82, ptr %83, align 8, !tbaa !17 br label %MOZ_Z_inflateReset.exit -MOZ_Z_inflateReset.exit: ; preds = %73, %82 - %86 = getelementptr inbounds nuw i8, ptr %6, i64 4 - store i32 0, ptr %86, align 4, !tbaa !19 - %87 = getelementptr inbounds nuw i8, ptr %6, i64 12 - store i32 0, ptr %87, align 4, !tbaa !20 - %88 = getelementptr inbounds nuw i8, ptr %6, i64 20 - store i32 32768, ptr %88, align 4, !tbaa !21 - %89 = getelementptr inbounds nuw i8, ptr %6, i64 40 - store ptr null, ptr %89, align 8, !tbaa !22 - %90 = getelementptr inbounds nuw i8, ptr %6, i64 72 - store i64 0, ptr %90, align 8, !tbaa !23 - %91 = getelementptr inbounds nuw i8, ptr %6, i64 80 - store i32 0, ptr %91, align 8, !tbaa !24 - %92 = getelementptr inbounds nuw i8, ptr %6, i64 1360 - %93 = getelementptr inbounds nuw i8, ptr %6, i64 136 - store ptr %92, ptr %93, align 8, !tbaa !25 - %94 = getelementptr inbounds nuw i8, ptr %6, i64 104 - store ptr %92, ptr %94, align 8, !tbaa !26 - %95 = getelementptr inbounds nuw i8, ptr %6, i64 96 - store ptr %92, ptr %95, align 8, !tbaa !27 - %96 = getelementptr inbounds nuw i8, ptr %6, i64 7136 - store i32 1, ptr %96, align 8, !tbaa !28 - %97 = getelementptr inbounds nuw i8, ptr %6, i64 7140 - store i32 -1, ptr %97, align 4, !tbaa !29 - store i64 %72, ptr %70, align 8, !tbaa !15 - store i64 %75, ptr %74, align 8, !tbaa !95 +MOZ_Z_inflateReset.exit: ; preds = %71, %80 + %84 = getelementptr inbounds nuw i8, ptr %6, i64 4 + store i32 0, ptr %84, align 4, !tbaa !19 + %85 = getelementptr inbounds nuw i8, ptr %6, i64 12 + store i32 0, ptr %85, align 4, !tbaa !20 + %86 = getelementptr inbounds nuw i8, ptr %6, i64 20 + store i32 32768, ptr %86, align 4, !tbaa !21 + %87 = getelementptr inbounds nuw i8, ptr %6, i64 40 + store ptr null, ptr %87, align 8, !tbaa !22 + %88 = getelementptr inbounds nuw i8, ptr %6, i64 72 + store i64 0, ptr %88, align 8, !tbaa !23 + %89 = getelementptr inbounds nuw i8, ptr %6, i64 80 + store i32 0, ptr %89, align 8, !tbaa !24 + %90 = getelementptr inbounds nuw i8, ptr %6, i64 1360 + %91 = getelementptr inbounds nuw i8, ptr %6, i64 136 + store ptr %90, ptr %91, align 8, !tbaa !25 + %92 = getelementptr inbounds nuw i8, ptr %6, i64 104 + store ptr %90, ptr %92, align 8, !tbaa !26 + %93 = getelementptr inbounds nuw i8, ptr %6, i64 96 + store ptr %90, ptr %93, align 8, !tbaa !27 + %94 = getelementptr inbounds nuw i8, ptr %6, i64 7136 + store i32 1, ptr %94, align 8, !tbaa !28 + %95 = getelementptr inbounds nuw i8, ptr %6, i64 7140 + store i32 -1, ptr %95, align 4, !tbaa !29 + store i64 %70, ptr %68, align 8, !tbaa !15 + store i64 %73, ptr %72, align 8, !tbaa !95 store i32 11, ptr %6, align 8, !tbaa !18 - br label %98 + br label %96 -98: ; preds = %syncsearch.exit52, %12, %1, %4, %MOZ_Z_inflateReset.exit +96: ; preds = %syncsearch.exit52, %12, %1, %4, %MOZ_Z_inflateReset.exit %.0 = phi i32 [ 0, %MOZ_Z_inflateReset.exit ], [ -2, %4 ], [ -2, %1 ], [ -5, %12 ], [ -3, %syncsearch.exit52 ] call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %2) #10 ret i32 %.0 diff --git a/bench/libwebp/optimized/tree_enc.ll b/bench/libwebp/optimized/tree_enc.ll index 89659a211a3..a0905d83585 100644 --- a/bench/libwebp/optimized/tree_enc.ll +++ b/bench/libwebp/optimized/tree_enc.ll @@ -98,169 +98,168 @@ define hidden void @VP8CodeIntraModes(ptr noundef %0) local_unnamed_addr #4 { %42 = zext i1 %41 to i32 %43 = call i32 @VP8PutBit(ptr noundef nonnull %3, i32 noundef %42, i32 noundef 145) #6 %.not38 = icmp eq i32 %43, 0 - br i1 %.not38, label %53, label %44 + br i1 %.not38, label %52, label %44 44: ; preds = %38 %45 = load i8, ptr %13, align 1, !tbaa !31 - %46 = zext i8 %45 to i32 - %47 = and i32 %46, 253 - %48 = icmp eq i32 %47, 1 - %49 = zext i1 %48 to i32 - %50 = call i32 @VP8PutBit(ptr noundef nonnull %3, i32 noundef %49, i32 noundef 156) #6 - %.not.i40 = icmp eq i32 %50, 0 - %.sink7.v.i = select i1 %.not.i40, i32 2, i32 1 - %.sink7.i = icmp eq i32 %.sink7.v.i, %46 + %46 = and i8 %45, -3 + %47 = icmp eq i8 %46, 1 + %48 = zext i1 %47 to i32 + %49 = call i32 @VP8PutBit(ptr noundef nonnull %3, i32 noundef %48, i32 noundef 156) #6 + %.not.i40 = icmp eq i32 %49, 0 + %.sink7.v.i43 = select i1 %.not.i40, i8 2, i8 1 + %.sink7.i = icmp eq i8 %.sink7.v.i43, %45 %.sink6.i = select i1 %.not.i40, i32 163, i32 128 - %51 = zext i1 %.sink7.i to i32 - %52 = call i32 @VP8PutBit(ptr noundef nonnull %3, i32 noundef %51, i32 noundef %.sink6.i) #6 + %50 = zext i1 %.sink7.i to i32 + %51 = call i32 @VP8PutBit(ptr noundef nonnull %3, i32 noundef %50, i32 noundef %.sink6.i) #6 br label %.loopexit -53: ; preds = %38 - %54 = load i32, ptr %10, align 8, !tbaa !34 - %55 = sext i32 %54 to i64 - %56 = sub nsw i64 0, %55 - %57 = getelementptr inbounds i8, ptr %13, i64 %56 - br label %58 - -58: ; preds = %53, %124 - %.047 = phi ptr [ %13, %53 ], [ %125, %124 ] - %.03446 = phi i32 [ 0, %53 ], [ %126, %124 ] - %.03645 = phi ptr [ %57, %53 ], [ %.047, %124 ] - %59 = getelementptr inbounds i8, ptr %.047, i64 -1 - %60 = load i8, ptr %59, align 1, !tbaa !31 - %61 = zext i8 %60 to i32 - br label %62 - -62: ; preds = %58, %PutI4Mode.exit - %indvars.iv = phi i64 [ 0, %58 ], [ %indvars.iv.next, %PutI4Mode.exit ] - %.03344 = phi i32 [ %61, %58 ], [ %70, %PutI4Mode.exit ] - %63 = getelementptr inbounds nuw i8, ptr %.03645, i64 %indvars.iv - %64 = load i8, ptr %63, align 1, !tbaa !31 - %65 = zext i8 %64 to i64 - %66 = zext nneg i32 %.03344 to i64 - %67 = getelementptr inbounds nuw [10 x [10 x [9 x i8]]], ptr @kBModesProba, i64 0, i64 %65, i64 %66 - %68 = getelementptr inbounds nuw i8, ptr %.047, i64 %indvars.iv - %69 = load i8, ptr %68, align 1, !tbaa !31 - %70 = zext i8 %69 to i32 - %71 = icmp ne i8 %69, 0 - %72 = zext i1 %71 to i32 - %73 = load i8, ptr %67, align 1, !tbaa !31 - %74 = zext i8 %73 to i32 - %75 = call i32 @VP8PutBit(ptr noundef nonnull %3, i32 noundef %72, i32 noundef %74) #6 - %.not.i41 = icmp eq i32 %75, 0 - br i1 %.not.i41, label %PutI4Mode.exit, label %76 - -76: ; preds = %62 - %77 = icmp ne i8 %69, 1 - %78 = zext i1 %77 to i32 - %79 = getelementptr inbounds nuw i8, ptr %67, i64 1 - %80 = load i8, ptr %79, align 1, !tbaa !31 - %81 = zext i8 %80 to i32 - %82 = call i32 @VP8PutBit(ptr noundef nonnull %3, i32 noundef %78, i32 noundef %81) #6 - %.not27.i = icmp eq i32 %82, 0 - br i1 %.not27.i, label %PutI4Mode.exit, label %83 - -83: ; preds = %76 - %84 = icmp ne i8 %69, 2 - %85 = zext i1 %84 to i32 - %86 = getelementptr inbounds nuw i8, ptr %67, i64 2 - %87 = load i8, ptr %86, align 1, !tbaa !31 - %88 = zext i8 %87 to i32 - %89 = call i32 @VP8PutBit(ptr noundef nonnull %3, i32 noundef %85, i32 noundef %88) #6 - %.not28.i = icmp eq i32 %89, 0 - br i1 %.not28.i, label %PutI4Mode.exit, label %90 - -90: ; preds = %83 - %91 = icmp ugt i8 %69, 5 - %92 = zext i1 %91 to i32 - %93 = getelementptr inbounds nuw i8, ptr %67, i64 3 - %94 = load i8, ptr %93, align 1, !tbaa !31 - %95 = zext i8 %94 to i32 - %96 = call i32 @VP8PutBit(ptr noundef nonnull %3, i32 noundef %92, i32 noundef %95) #6 - %.not29.i = icmp eq i32 %96, 0 - br i1 %.not29.i, label %97, label %104 - -97: ; preds = %90 - %98 = icmp ne i8 %69, 3 - %99 = zext i1 %98 to i32 - %100 = getelementptr inbounds nuw i8, ptr %67, i64 4 - %101 = load i8, ptr %100, align 1, !tbaa !31 - %102 = zext i8 %101 to i32 - %103 = call i32 @VP8PutBit(ptr noundef nonnull %3, i32 noundef %99, i32 noundef %102) #6 - %.not30.i = icmp eq i32 %103, 0 +52: ; preds = %38 + %53 = load i32, ptr %10, align 8, !tbaa !34 + %54 = sext i32 %53 to i64 + %55 = sub nsw i64 0, %54 + %56 = getelementptr inbounds i8, ptr %13, i64 %55 + br label %57 + +57: ; preds = %52, %123 + %.048 = phi ptr [ %13, %52 ], [ %124, %123 ] + %.03447 = phi i32 [ 0, %52 ], [ %125, %123 ] + %.03646 = phi ptr [ %56, %52 ], [ %.048, %123 ] + %58 = getelementptr inbounds i8, ptr %.048, i64 -1 + %59 = load i8, ptr %58, align 1, !tbaa !31 + %60 = zext i8 %59 to i32 + br label %61 + +61: ; preds = %57, %PutI4Mode.exit + %indvars.iv = phi i64 [ 0, %57 ], [ %indvars.iv.next, %PutI4Mode.exit ] + %.03345 = phi i32 [ %60, %57 ], [ %69, %PutI4Mode.exit ] + %62 = getelementptr inbounds nuw i8, ptr %.03646, i64 %indvars.iv + %63 = load i8, ptr %62, align 1, !tbaa !31 + %64 = zext i8 %63 to i64 + %65 = zext nneg i32 %.03345 to i64 + %66 = getelementptr inbounds nuw [10 x [10 x [9 x i8]]], ptr @kBModesProba, i64 0, i64 %64, i64 %65 + %67 = getelementptr inbounds nuw i8, ptr %.048, i64 %indvars.iv + %68 = load i8, ptr %67, align 1, !tbaa !31 + %69 = zext i8 %68 to i32 + %70 = icmp ne i8 %68, 0 + %71 = zext i1 %70 to i32 + %72 = load i8, ptr %66, align 1, !tbaa !31 + %73 = zext i8 %72 to i32 + %74 = call i32 @VP8PutBit(ptr noundef nonnull %3, i32 noundef %71, i32 noundef %73) #6 + %.not.i41 = icmp eq i32 %74, 0 + br i1 %.not.i41, label %PutI4Mode.exit, label %75 + +75: ; preds = %61 + %76 = icmp ne i8 %68, 1 + %77 = zext i1 %76 to i32 + %78 = getelementptr inbounds nuw i8, ptr %66, i64 1 + %79 = load i8, ptr %78, align 1, !tbaa !31 + %80 = zext i8 %79 to i32 + %81 = call i32 @VP8PutBit(ptr noundef nonnull %3, i32 noundef %77, i32 noundef %80) #6 + %.not27.i = icmp eq i32 %81, 0 + br i1 %.not27.i, label %PutI4Mode.exit, label %82 + +82: ; preds = %75 + %83 = icmp ne i8 %68, 2 + %84 = zext i1 %83 to i32 + %85 = getelementptr inbounds nuw i8, ptr %66, i64 2 + %86 = load i8, ptr %85, align 1, !tbaa !31 + %87 = zext i8 %86 to i32 + %88 = call i32 @VP8PutBit(ptr noundef nonnull %3, i32 noundef %84, i32 noundef %87) #6 + %.not28.i = icmp eq i32 %88, 0 + br i1 %.not28.i, label %PutI4Mode.exit, label %89 + +89: ; preds = %82 + %90 = icmp ugt i8 %68, 5 + %91 = zext i1 %90 to i32 + %92 = getelementptr inbounds nuw i8, ptr %66, i64 3 + %93 = load i8, ptr %92, align 1, !tbaa !31 + %94 = zext i8 %93 to i32 + %95 = call i32 @VP8PutBit(ptr noundef nonnull %3, i32 noundef %91, i32 noundef %94) #6 + %.not29.i = icmp eq i32 %95, 0 + br i1 %.not29.i, label %96, label %103 + +96: ; preds = %89 + %97 = icmp ne i8 %68, 3 + %98 = zext i1 %97 to i32 + %99 = getelementptr inbounds nuw i8, ptr %66, i64 4 + %100 = load i8, ptr %99, align 1, !tbaa !31 + %101 = zext i8 %100 to i32 + %102 = call i32 @VP8PutBit(ptr noundef nonnull %3, i32 noundef %98, i32 noundef %101) #6 + %.not30.i = icmp eq i32 %102, 0 br i1 %.not30.i, label %PutI4Mode.exit, label %.sink.split.i -104: ; preds = %90 - %105 = icmp ne i8 %69, 6 - %106 = zext i1 %105 to i32 - %107 = getelementptr inbounds nuw i8, ptr %67, i64 6 - %108 = load i8, ptr %107, align 1, !tbaa !31 - %109 = zext i8 %108 to i32 - %110 = call i32 @VP8PutBit(ptr noundef nonnull %3, i32 noundef %106, i32 noundef %109) #6 - %.not31.i = icmp eq i32 %110, 0 - br i1 %.not31.i, label %PutI4Mode.exit, label %111 - -111: ; preds = %104 - %112 = icmp ne i8 %69, 7 - %113 = zext i1 %112 to i32 - %114 = getelementptr inbounds nuw i8, ptr %67, i64 7 - %115 = load i8, ptr %114, align 1, !tbaa !31 - %116 = zext i8 %115 to i32 - %117 = call i32 @VP8PutBit(ptr noundef nonnull %3, i32 noundef %113, i32 noundef %116) #6 - %.not32.i = icmp eq i32 %117, 0 +103: ; preds = %89 + %104 = icmp ne i8 %68, 6 + %105 = zext i1 %104 to i32 + %106 = getelementptr inbounds nuw i8, ptr %66, i64 6 + %107 = load i8, ptr %106, align 1, !tbaa !31 + %108 = zext i8 %107 to i32 + %109 = call i32 @VP8PutBit(ptr noundef nonnull %3, i32 noundef %105, i32 noundef %108) #6 + %.not31.i = icmp eq i32 %109, 0 + br i1 %.not31.i, label %PutI4Mode.exit, label %110 + +110: ; preds = %103 + %111 = icmp ne i8 %68, 7 + %112 = zext i1 %111 to i32 + %113 = getelementptr inbounds nuw i8, ptr %66, i64 7 + %114 = load i8, ptr %113, align 1, !tbaa !31 + %115 = zext i8 %114 to i32 + %116 = call i32 @VP8PutBit(ptr noundef nonnull %3, i32 noundef %112, i32 noundef %115) #6 + %.not32.i = icmp eq i32 %116, 0 br i1 %.not32.i, label %PutI4Mode.exit, label %.sink.split.i -.sink.split.i: ; preds = %111, %97 - %.sink.i = phi i32 [ 4, %97 ], [ 8, %111 ] - %.sink36.i = phi i64 [ 5, %97 ], [ 8, %111 ] - %118 = icmp ne i32 %.sink.i, %70 - %119 = zext i1 %118 to i32 - %120 = getelementptr inbounds nuw i8, ptr %67, i64 %.sink36.i - %121 = load i8, ptr %120, align 1, !tbaa !31 - %122 = zext i8 %121 to i32 - %123 = call i32 @VP8PutBit(ptr noundef nonnull %3, i32 noundef %119, i32 noundef %122) #6 +.sink.split.i: ; preds = %110, %96 + %.sink.i = phi i32 [ 4, %96 ], [ 8, %110 ] + %.sink36.i = phi i64 [ 5, %96 ], [ 8, %110 ] + %117 = icmp ne i32 %.sink.i, %69 + %118 = zext i1 %117 to i32 + %119 = getelementptr inbounds nuw i8, ptr %66, i64 %.sink36.i + %120 = load i8, ptr %119, align 1, !tbaa !31 + %121 = zext i8 %120 to i32 + %122 = call i32 @VP8PutBit(ptr noundef nonnull %3, i32 noundef %118, i32 noundef %121) #6 br label %PutI4Mode.exit -PutI4Mode.exit: ; preds = %62, %76, %83, %97, %104, %111, %.sink.split.i +PutI4Mode.exit: ; preds = %61, %75, %82, %96, %103, %110, %.sink.split.i %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 4 - br i1 %exitcond.not, label %124, label %62, !llvm.loop !35 - -124: ; preds = %PutI4Mode.exit - %125 = getelementptr inbounds i8, ptr %.047, i64 %55 - %126 = add nuw nsw i32 %.03446, 1 - %exitcond49.not = icmp eq i32 %126, 4 - br i1 %exitcond49.not, label %.loopexit, label %58, !llvm.loop !37 - -.loopexit: ; preds = %124, %44 - %127 = load i8, ptr %12, align 4 - %128 = lshr i8 %127, 2 - %129 = and i8 %128, 3 - %130 = icmp ne i8 %129, 0 - %131 = zext i1 %130 to i32 - %132 = call i32 @VP8PutBit(ptr noundef nonnull %3, i32 noundef %131, i32 noundef 142) #6 - %.not.i42 = icmp eq i32 %132, 0 - br i1 %.not.i42, label %PutUVMode.exit, label %133 - -133: ; preds = %.loopexit - %134 = icmp ne i8 %129, 2 - %135 = zext i1 %134 to i32 - %136 = call i32 @VP8PutBit(ptr noundef nonnull %3, i32 noundef %135, i32 noundef 114) #6 - %.not5.i = icmp eq i32 %136, 0 - br i1 %.not5.i, label %PutUVMode.exit, label %137 - -137: ; preds = %133 - %138 = icmp ne i8 %129, 3 - %139 = zext i1 %138 to i32 - %140 = call i32 @VP8PutBit(ptr noundef nonnull %3, i32 noundef %139, i32 noundef 183) #6 + br i1 %exitcond.not, label %123, label %61, !llvm.loop !35 + +123: ; preds = %PutI4Mode.exit + %124 = getelementptr inbounds i8, ptr %.048, i64 %54 + %125 = add nuw nsw i32 %.03447, 1 + %exitcond50.not = icmp eq i32 %125, 4 + br i1 %exitcond50.not, label %.loopexit, label %57, !llvm.loop !37 + +.loopexit: ; preds = %123, %44 + %126 = load i8, ptr %12, align 4 + %127 = lshr i8 %126, 2 + %128 = and i8 %127, 3 + %129 = icmp ne i8 %128, 0 + %130 = zext i1 %129 to i32 + %131 = call i32 @VP8PutBit(ptr noundef nonnull %3, i32 noundef %130, i32 noundef 142) #6 + %.not.i42 = icmp eq i32 %131, 0 + br i1 %.not.i42, label %PutUVMode.exit, label %132 + +132: ; preds = %.loopexit + %133 = icmp ne i8 %128, 2 + %134 = zext i1 %133 to i32 + %135 = call i32 @VP8PutBit(ptr noundef nonnull %3, i32 noundef %134, i32 noundef 114) #6 + %.not5.i = icmp eq i32 %135, 0 + br i1 %.not5.i, label %PutUVMode.exit, label %136 + +136: ; preds = %132 + %137 = icmp ne i8 %128, 3 + %138 = zext i1 %137 to i32 + %139 = call i32 @VP8PutBit(ptr noundef nonnull %3, i32 noundef %138, i32 noundef 183) #6 br label %PutUVMode.exit -PutUVMode.exit: ; preds = %.loopexit, %133, %137 - %141 = call i32 @VP8IteratorNext(ptr noundef nonnull %2) #6 - %.not39 = icmp eq i32 %141, 0 - br i1 %.not39, label %142, label %11, !llvm.loop !38 +PutUVMode.exit: ; preds = %.loopexit, %132, %136 + %140 = call i32 @VP8IteratorNext(ptr noundef nonnull %2) #6 + %.not39 = icmp eq i32 %140, 0 + br i1 %.not39, label %141, label %11, !llvm.loop !38 -142: ; preds = %PutUVMode.exit +141: ; preds = %PutUVMode.exit call void @llvm.lifetime.end.p0(i64 3848, ptr nonnull %2) #6 ret void } diff --git a/bench/libzmq/optimized/ip_resolver.ll b/bench/libzmq/optimized/ip_resolver.ll index 9d1ac65ab4b..6044006e78e 100644 --- a/bench/libzmq/optimized/ip_resolver.ll +++ b/bench/libzmq/optimized/ip_resolver.ll @@ -1502,7 +1502,7 @@ define noundef range(i32 -1, 1) i32 @_ZN3zmq13ip_resolver_t16resolve_nic_nameEPN 18: ; preds = %.thread41, %.thread41 store i32 19, ptr %.pre-phi, align 4, !tbaa !33 - br label %52 + br label %50 19: ; preds = %.thread41 %20 = call ptr @strerror(i32 noundef %17) #21 @@ -1533,7 +1533,7 @@ define noundef range(i32 -1, 1) i32 @_ZN3zmq13ip_resolver_t16resolve_nic_nameEPN %32 = getelementptr inbounds nuw i8, ptr %0, i64 10 %33 = load i8, ptr %32, align 2, !range !22 %34 = trunc nuw i8 %33 to i1 - %35 = select i1 %34, i32 10, i32 2 + %35 = select i1 %34, i16 10, i16 2 br label %36 36: ; preds = %.lr.ph, %.thread44 @@ -1545,37 +1545,35 @@ define noundef range(i32 -1, 1) i32 @_ZN3zmq13ip_resolver_t16resolve_nic_nameEPN 40: ; preds = %36 %41 = load i16, ptr %38, align 2, !tbaa !62 - %42 = zext i16 %41 to i32 - %43 = icmp eq i32 %35, %42 - br i1 %43, label %44, label %.thread44 - -44: ; preds = %40 - %45 = getelementptr inbounds nuw i8, ptr %.02255, i64 8 - %46 = load ptr, ptr %45, align 8, !tbaa !64 - %47 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %2, ptr noundef nonnull dereferenceable(1) %46) #22 - %.not37 = icmp eq i32 %47, 0 + %42 = icmp eq i16 %35, %41 + br i1 %42, label %43, label %.thread44 + +43: ; preds = %40 + %44 = getelementptr inbounds nuw i8, ptr %.02255, i64 8 + %45 = load ptr, ptr %44, align 8, !tbaa !64 + %46 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %2, ptr noundef nonnull dereferenceable(1) %45) #22 + %.not37 = icmp eq i32 %46, 0 br i1 %.not37, label %.thread47, label %.thread44 -.thread47: ; preds = %44 - %48 = icmp eq i16 %41, 2 - %49 = select i1 %48, i64 16, i64 28 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %1, ptr noundef nonnull align 2 dereferenceable(16) %38, i64 %49, i1 false) +.thread47: ; preds = %43 + %47 = select i1 %34, i64 28, i64 16 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %1, ptr noundef nonnull align 2 dereferenceable(16) %38, i64 %47, i1 false) call void @freeifaddrs(ptr noundef nonnull %31) #21 - br label %52 + br label %50 -.thread44: ; preds = %40, %44, %36 +.thread44: ; preds = %40, %43, %36 %.022 = load ptr, ptr %.02255, align 8, !tbaa !52 %.not36 = icmp eq ptr %.022, null br i1 %.not36, label %._crit_edge, label %36, !llvm.loop !65 ._crit_edge: ; preds = %.thread44, %26 - %50 = phi ptr [ null, %26 ], [ %31, %.thread44 ] - call void @freeifaddrs(ptr noundef %50) #21 - %51 = tail call ptr @__errno_location() #23 - store i32 19, ptr %51, align 4, !tbaa !33 - br label %52 + %48 = phi ptr [ null, %26 ], [ %31, %.thread44 ] + call void @freeifaddrs(ptr noundef %48) #21 + %49 = tail call ptr @__errno_location() #23 + store i32 19, ptr %49, align 4, !tbaa !33 + br label %50 -52: ; preds = %.thread47, %._crit_edge, %18 +50: ; preds = %.thread47, %._crit_edge, %18 %.0 = phi i32 [ -1, %18 ], [ -1, %._crit_edge ], [ 0, %.thread47 ] call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #21 ret i32 %.0 diff --git a/bench/lief/optimized/hmac_drbg.ll b/bench/lief/optimized/hmac_drbg.ll index f06e087b6cb..f61479dd5cd 100644 --- a/bench/lief/optimized/hmac_drbg.ll +++ b/bench/lief/optimized/hmac_drbg.ll @@ -42,100 +42,101 @@ define hidden i32 @mbedtls_hmac_drbg_update(ptr noundef %0, ptr noundef %1, i64 call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %4) #12 call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %5) #12 %12 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %13 = select i1 %11, i8 2, i8 1 store i8 0, ptr %4, align 1, !tbaa !13 br i1 %11, label %.split.us, label %.split -.split.us: ; preds = %3, %28 - %13 = call i32 @mbedtls_md_hmac_reset(ptr noundef nonnull %0) #12 - %.not.us = icmp eq i32 %13, 0 - br i1 %.not.us, label %14, label %.split39.us - -14: ; preds = %.split.us - %15 = call i32 @mbedtls_md_hmac_update(ptr noundef nonnull %0, ptr noundef nonnull %12, i64 noundef %8) #12 - %.not31.us = icmp eq i32 %15, 0 - br i1 %.not31.us, label %16, label %.split39.us - -16: ; preds = %14 - %17 = call i32 @mbedtls_md_hmac_update(ptr noundef nonnull %0, ptr noundef nonnull %4, i64 noundef 1) #12 - %.not32.us = icmp eq i32 %17, 0 - br i1 %.not32.us, label %18, label %.split39.us - -18: ; preds = %16 - %19 = call i32 @mbedtls_md_hmac_update(ptr noundef nonnull %0, ptr noundef nonnull %1, i64 noundef %2) #12 - %.not33.us = icmp eq i32 %19, 0 - br i1 %.not33.us, label %20, label %.split39.us - -20: ; preds = %18 - %21 = call i32 @mbedtls_md_hmac_finish(ptr noundef nonnull %0, ptr noundef nonnull %5) #12 - %.not34.us = icmp eq i32 %21, 0 - br i1 %.not34.us, label %22, label %.split39.us - -22: ; preds = %20 - %23 = call i32 @mbedtls_md_hmac_starts(ptr noundef nonnull %0, ptr noundef nonnull %5, i64 noundef %8) #12 - %.not35.us = icmp eq i32 %23, 0 - br i1 %.not35.us, label %24, label %.split39.us - -24: ; preds = %22 - %25 = call i32 @mbedtls_md_hmac_update(ptr noundef nonnull %0, ptr noundef nonnull %12, i64 noundef %8) #12 - %.not36.us = icmp eq i32 %25, 0 - br i1 %.not36.us, label %26, label %.split39.us - -26: ; preds = %24 - %27 = call i32 @mbedtls_md_hmac_finish(ptr noundef nonnull %0, ptr noundef nonnull %12) #12 - %.not37.us = icmp eq i32 %27, 0 - br i1 %.not37.us, label %28, label %.split39.us - -28: ; preds = %26 - %29 = load i8, ptr %4, align 1, !tbaa !13 - %30 = add i8 %29, 1 - store i8 %30, ptr %4, align 1, !tbaa !13 - %31 = icmp ult i8 %30, 2 - br i1 %31, label %.split.us, label %.split39.us, !llvm.loop !14 - -.split: ; preds = %3, %45 - %32 = call i32 @mbedtls_md_hmac_reset(ptr noundef nonnull %0) #12 - %.not = icmp eq i32 %32, 0 - br i1 %.not, label %33, label %.split39.us - -33: ; preds = %.split - %34 = call i32 @mbedtls_md_hmac_update(ptr noundef nonnull %0, ptr noundef nonnull %12, i64 noundef %8) #12 - %.not31 = icmp eq i32 %34, 0 - br i1 %.not31, label %35, label %.split39.us - -35: ; preds = %33 - %36 = call i32 @mbedtls_md_hmac_update(ptr noundef nonnull %0, ptr noundef nonnull %4, i64 noundef 1) #12 - %.not32 = icmp eq i32 %36, 0 - br i1 %.not32, label %37, label %.split39.us - -37: ; preds = %35 - %38 = call i32 @mbedtls_md_hmac_finish(ptr noundef nonnull %0, ptr noundef nonnull %5) #12 - %.not34 = icmp eq i32 %38, 0 - br i1 %.not34, label %39, label %.split39.us - -39: ; preds = %37 - %40 = call i32 @mbedtls_md_hmac_starts(ptr noundef nonnull %0, ptr noundef nonnull %5, i64 noundef %8) #12 - %.not35 = icmp eq i32 %40, 0 - br i1 %.not35, label %41, label %.split39.us - -41: ; preds = %39 - %42 = call i32 @mbedtls_md_hmac_update(ptr noundef nonnull %0, ptr noundef nonnull %12, i64 noundef %8) #12 - %.not36 = icmp eq i32 %42, 0 - br i1 %.not36, label %43, label %.split39.us - -43: ; preds = %41 - %44 = call i32 @mbedtls_md_hmac_finish(ptr noundef nonnull %0, ptr noundef nonnull %12) #12 - %.not37 = icmp eq i32 %44, 0 - br i1 %.not37, label %45, label %.split39.us - -45: ; preds = %43 - %46 = load i8, ptr %4, align 1, !tbaa !13 - %47 = add i8 %46, 1 - store i8 %47, ptr %4, align 1, !tbaa !13 - %48 = icmp eq i8 %47, 0 - br i1 %48, label %.split, label %.split39.us, !llvm.loop !14 - -.split39.us: ; preds = %.split, %33, %35, %37, %39, %41, %43, %45, %.split.us, %14, %16, %18, %20, %22, %24, %26, %28 - %.us-phi = phi i32 [ %13, %.split.us ], [ %15, %14 ], [ %17, %16 ], [ %19, %18 ], [ %21, %20 ], [ %23, %22 ], [ %25, %24 ], [ %27, %26 ], [ 0, %28 ], [ %32, %.split ], [ %34, %33 ], [ %36, %35 ], [ %38, %37 ], [ %40, %39 ], [ %42, %41 ], [ %44, %43 ], [ 0, %45 ] +.split.us: ; preds = %3, %29 + %14 = call i32 @mbedtls_md_hmac_reset(ptr noundef nonnull %0) #12 + %.not.us = icmp eq i32 %14, 0 + br i1 %.not.us, label %15, label %.split39.us + +15: ; preds = %.split.us + %16 = call i32 @mbedtls_md_hmac_update(ptr noundef nonnull %0, ptr noundef nonnull %12, i64 noundef %8) #12 + %.not31.us = icmp eq i32 %16, 0 + br i1 %.not31.us, label %17, label %.split39.us + +17: ; preds = %15 + %18 = call i32 @mbedtls_md_hmac_update(ptr noundef nonnull %0, ptr noundef nonnull %4, i64 noundef 1) #12 + %.not32.us = icmp eq i32 %18, 0 + br i1 %.not32.us, label %19, label %.split39.us + +19: ; preds = %17 + %20 = call i32 @mbedtls_md_hmac_update(ptr noundef nonnull %0, ptr noundef nonnull %1, i64 noundef %2) #12 + %.not33.us = icmp eq i32 %20, 0 + br i1 %.not33.us, label %21, label %.split39.us + +21: ; preds = %19 + %22 = call i32 @mbedtls_md_hmac_finish(ptr noundef nonnull %0, ptr noundef nonnull %5) #12 + %.not34.us = icmp eq i32 %22, 0 + br i1 %.not34.us, label %23, label %.split39.us + +23: ; preds = %21 + %24 = call i32 @mbedtls_md_hmac_starts(ptr noundef nonnull %0, ptr noundef nonnull %5, i64 noundef %8) #12 + %.not35.us = icmp eq i32 %24, 0 + br i1 %.not35.us, label %25, label %.split39.us + +25: ; preds = %23 + %26 = call i32 @mbedtls_md_hmac_update(ptr noundef nonnull %0, ptr noundef nonnull %12, i64 noundef %8) #12 + %.not36.us = icmp eq i32 %26, 0 + br i1 %.not36.us, label %27, label %.split39.us + +27: ; preds = %25 + %28 = call i32 @mbedtls_md_hmac_finish(ptr noundef nonnull %0, ptr noundef nonnull %12) #12 + %.not37.us = icmp eq i32 %28, 0 + br i1 %.not37.us, label %29, label %.split39.us + +29: ; preds = %27 + %30 = load i8, ptr %4, align 1, !tbaa !13 + %31 = add i8 %30, 1 + store i8 %31, ptr %4, align 1, !tbaa !13 + %32 = icmp ugt i8 %13, %31 + br i1 %32, label %.split.us, label %.split39.us, !llvm.loop !14 + +.split: ; preds = %3, %46 + %33 = call i32 @mbedtls_md_hmac_reset(ptr noundef nonnull %0) #12 + %.not = icmp eq i32 %33, 0 + br i1 %.not, label %34, label %.split39.us + +34: ; preds = %.split + %35 = call i32 @mbedtls_md_hmac_update(ptr noundef nonnull %0, ptr noundef nonnull %12, i64 noundef %8) #12 + %.not31 = icmp eq i32 %35, 0 + br i1 %.not31, label %36, label %.split39.us + +36: ; preds = %34 + %37 = call i32 @mbedtls_md_hmac_update(ptr noundef nonnull %0, ptr noundef nonnull %4, i64 noundef 1) #12 + %.not32 = icmp eq i32 %37, 0 + br i1 %.not32, label %38, label %.split39.us + +38: ; preds = %36 + %39 = call i32 @mbedtls_md_hmac_finish(ptr noundef nonnull %0, ptr noundef nonnull %5) #12 + %.not34 = icmp eq i32 %39, 0 + br i1 %.not34, label %40, label %.split39.us + +40: ; preds = %38 + %41 = call i32 @mbedtls_md_hmac_starts(ptr noundef nonnull %0, ptr noundef nonnull %5, i64 noundef %8) #12 + %.not35 = icmp eq i32 %41, 0 + br i1 %.not35, label %42, label %.split39.us + +42: ; preds = %40 + %43 = call i32 @mbedtls_md_hmac_update(ptr noundef nonnull %0, ptr noundef nonnull %12, i64 noundef %8) #12 + %.not36 = icmp eq i32 %43, 0 + br i1 %.not36, label %44, label %.split39.us + +44: ; preds = %42 + %45 = call i32 @mbedtls_md_hmac_finish(ptr noundef nonnull %0, ptr noundef nonnull %12) #12 + %.not37 = icmp eq i32 %45, 0 + br i1 %.not37, label %46, label %.split39.us + +46: ; preds = %44 + %47 = load i8, ptr %4, align 1, !tbaa !13 + %48 = add i8 %47, 1 + store i8 %48, ptr %4, align 1, !tbaa !13 + %49 = icmp ugt i8 %13, %48 + br i1 %49, label %.split, label %.split39.us, !llvm.loop !14 + +.split39.us: ; preds = %.split, %34, %36, %38, %40, %42, %44, %46, %.split.us, %15, %17, %19, %21, %23, %25, %27, %29 + %.us-phi = phi i32 [ %14, %.split.us ], [ %16, %15 ], [ %18, %17 ], [ %20, %19 ], [ %22, %21 ], [ %24, %23 ], [ %26, %25 ], [ %28, %27 ], [ 0, %29 ], [ %33, %.split ], [ %35, %34 ], [ %37, %36 ], [ %39, %38 ], [ %41, %40 ], [ %43, %42 ], [ %45, %44 ], [ 0, %46 ] call void @mbedtls_platform_zeroize(ptr noundef nonnull %5, i64 noundef 64) #12 call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %5) #12 call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4) #12 diff --git a/bench/linux/optimized/hdmi.ll b/bench/linux/optimized/hdmi.ll index a53a79cdccd..51ef01bfebd 100644 --- a/bench/linux/optimized/hdmi.ll +++ b/bench/linux/optimized/hdmi.ll @@ -1537,7 +1537,7 @@ define dso_local range(i64 -28, 260) i64 @hdmi_drm_infoframe_pack(ptr noundef re ; Function Attrs: fn_ret_thunk_extern nounwind null_pointer_is_valid define dso_local range(i32 -22, 1) i32 @hdmi_infoframe_check(ptr noundef captures(none) %0) #9 align 16 { %2 = load i32, ptr %0, align 4 - switch i32 %2, label %61 [ + switch i32 %2, label %60 [ i32 130, label %3 i32 131, label %16 i32 132, label %25 @@ -1548,58 +1548,58 @@ define dso_local range(i32 -22, 1) i32 @hdmi_infoframe_check(ptr noundef capture %4 = getelementptr inbounds nuw i8, ptr %0, i64 4 %5 = load i8, ptr %4, align 4 %6 = icmp eq i8 %5, 2 - br i1 %6, label %7, label %63 + br i1 %6, label %7, label %62 7: ; preds = %3 %8 = getelementptr inbounds nuw i8, ptr %0, i64 5 %9 = load i8, ptr %8, align 1 %10 = icmp eq i8 %9, 13 - br i1 %10, label %11, label %63 + br i1 %10, label %11, label %62 11: ; preds = %7 %12 = getelementptr inbounds nuw i8, ptr %0, i64 20 %13 = load i32, ptr %12, align 4 %14 = icmp ugt i32 %13, 2 %15 = select i1 %14, i32 -22, i32 0 - br label %63 + br label %62 16: ; preds = %1 %17 = getelementptr inbounds nuw i8, ptr %0, i64 4 %18 = load i8, ptr %17, align 4 %19 = icmp eq i8 %18, 1 - br i1 %19, label %20, label %63 + br i1 %19, label %20, label %62 20: ; preds = %16 %21 = getelementptr inbounds nuw i8, ptr %0, i64 5 %22 = load i8, ptr %21, align 1 %23 = icmp eq i8 %22, 25 %24 = select i1 %23, i32 0, i32 -22 - br label %63 + br label %62 25: ; preds = %1 %26 = getelementptr inbounds nuw i8, ptr %0, i64 4 %27 = load i8, ptr %26, align 4 %28 = icmp eq i8 %27, 1 - br i1 %28, label %29, label %63 + br i1 %28, label %29, label %62 29: ; preds = %25 %30 = getelementptr inbounds nuw i8, ptr %0, i64 5 %31 = load i8, ptr %30, align 1 %32 = icmp eq i8 %31, 10 %33 = select i1 %32, i32 0, i32 -22 - br label %63 + br label %62 34: ; preds = %1 %35 = getelementptr inbounds nuw i8, ptr %0, i64 4 %36 = load i8, ptr %35, align 4 %37 = icmp eq i8 %36, 1 - br i1 %37, label %38, label %63 + br i1 %37, label %38, label %62 38: ; preds = %34 %39 = getelementptr inbounds nuw i8, ptr %0, i64 8 %40 = load i32, ptr %39, align 4 %41 = icmp eq i32 %40, 3075 - br i1 %41, label %._crit_edge, label %63 + br i1 %41, label %._crit_edge, label %62 ._crit_edge: ; preds = %38 %42 = getelementptr inbounds nuw i8, ptr %0, i64 16 @@ -1617,30 +1617,29 @@ define dso_local range(i32 -22, 1) i32 @hdmi_infoframe_check(ptr noundef capture %51 = icmp eq i8 %.pre, 0 %52 = icmp eq i32 %43, -1 %53 = or i1 %52, %51 - br i1 %53, label %54, label %63 + br i1 %53, label %54, label %62 54: ; preds = %._crit_edge - %55 = zext nneg i8 %49 to i32 - %56 = and i1 %52, %51 - %57 = select i1 %56, i32 4, i32 5 - %58 = icmp eq i32 %57, %55 - %59 = select i1 %44, i1 true, i1 %58 - %60 = select i1 %59, i32 0, i32 -22 - br label %63 - -61: ; preds = %1 + %55 = and i1 %52, %51 + %56 = select i1 %55, i8 4, i8 5 + %57 = icmp eq i8 %56, %49 + %58 = or i1 %44, %57 + %59 = select i1 %58, i32 0, i32 -22 + br label %62 + +60: ; preds = %1 tail call void asm sideeffect "336: nop\0A\09.pushsection .discard.instr_begin\0A\09.long 336b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 336) #15, !srcloc !12 - %62 = load i32, ptr %0, align 4 - tail call void (ptr, ...) @__warn_printk(ptr noundef nonnull @.str, i32 noundef %62) #15 + %61 = load i32, ptr %0, align 4 + tail call void (ptr, ...) @__warn_printk(ptr noundef nonnull @.str, i32 noundef %61) #15 tail call void asm sideeffect "337: nop\0A\09.pushsection .discard.instr_begin\0A\09.long 337b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 337) #15, !srcloc !13 tail call void asm sideeffect "1:\09.byte 0x0f, 0x0b\0A.pushsection __bug_table,\22aw\22\0A2:\09.long 1b - .\09# bug_entry::bug_addr\0A\09.long ${0:c} - .\09# bug_entry::file\0A\09.word ${1:c}\09# bug_entry::line\0A\09.word ${2:c}\09# bug_entry::flags\0A\09.org 2b+${3:c}\0A.popsection\0A998:\0A\09.pushsection .discard.reachable\0A\09.long 998b\0A\09.popsection\0A\09", "i,i,i,i,~{dirflag},~{fpsr},~{flags}"(ptr nonnull @.str.1, i32 919, i32 2313, i64 12) #15, !srcloc !14 tail call void asm sideeffect "338: nop\0A\09.pushsection .discard.instr_end\0A\09.long 338b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 338) #15, !srcloc !15 tail call void asm sideeffect "339: nop\0A\09.pushsection .discard.instr_end\0A\09.long 339b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 339) #15, !srcloc !16 - br label %63 + br label %62 -63: ; preds = %61, %54, %._crit_edge, %38, %34, %29, %25, %20, %16, %11, %7, %3 - %64 = phi i32 [ -22, %61 ], [ -22, %7 ], [ -22, %3 ], [ %15, %11 ], [ -22, %16 ], [ %24, %20 ], [ -22, %25 ], [ %33, %29 ], [ -22, %34 ], [ -22, %38 ], [ %60, %54 ], [ -22, %._crit_edge ] - ret i32 %64 +62: ; preds = %60, %54, %._crit_edge, %38, %34, %29, %25, %20, %16, %11, %7, %3 + %63 = phi i32 [ -22, %60 ], [ -22, %7 ], [ -22, %3 ], [ %15, %11 ], [ -22, %16 ], [ %24, %20 ], [ -22, %25 ], [ %33, %29 ], [ -22, %34 ], [ -22, %38 ], [ %59, %54 ], [ -22, %._crit_edge ] + ret i32 %63 } ; Function Attrs: null_pointer_is_valid @@ -1854,7 +1853,7 @@ hdmi_audio_infoframe_pack_only.exit: ; preds = %13, %9, %112, %54, ; Function Attrs: fn_ret_thunk_extern nounwind null_pointer_is_valid define dso_local range(i64 -28, 260) i64 @hdmi_infoframe_pack(ptr noundef captures(none) %0, ptr noundef captures(none) %1, i64 noundef %2) #9 align 16 { %4 = load i32, ptr %0, align 4 - switch i32 %4, label %162 [ + switch i32 %4, label %161 [ i32 130, label %5 i32 135, label %19 i32 131, label %29 @@ -2086,30 +2085,29 @@ define dso_local range(i64 -28, 260) i64 @hdmi_infoframe_pack(ptr noundef captur br i1 %153, label %154, label %hdmi_audio_infoframe_pack_only.exit 154: ; preds = %._crit_edge - %155 = zext nneg i8 %149 to i32 - %156 = and i1 %152, %151 - %157 = select i1 %156, i32 4, i32 5 - %158 = icmp eq i32 %157, %155 - %159 = select i1 %144, i1 true, i1 %158 - br i1 %159, label %160, label %hdmi_audio_infoframe_pack_only.exit - -160: ; preds = %154 - %161 = tail call i64 @hdmi_vendor_infoframe_pack_only(ptr noundef %0, ptr noundef %1, i64 noundef %2), !range !10 + %155 = and i1 %152, %151 + %156 = select i1 %155, i8 4, i8 5 + %157 = icmp eq i8 %156, %149 + %158 = or i1 %144, %157 + br i1 %158, label %159, label %hdmi_audio_infoframe_pack_only.exit + +159: ; preds = %154 + %160 = tail call i64 @hdmi_vendor_infoframe_pack_only(ptr noundef %0, ptr noundef %1, i64 noundef %2), !range !10 br label %hdmi_audio_infoframe_pack_only.exit -162: ; preds = %3 +161: ; preds = %3 tail call void asm sideeffect "346: nop\0A\09.pushsection .discard.instr_begin\0A\09.long 346b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 346) #15, !srcloc !22 - %163 = load i32, ptr %0, align 4 - tail call void (ptr, ...) @__warn_printk(ptr noundef nonnull @.str, i32 noundef %163) #15 + %162 = load i32, ptr %0, align 4 + tail call void (ptr, ...) @__warn_printk(ptr noundef nonnull @.str, i32 noundef %162) #15 tail call void asm sideeffect "347: nop\0A\09.pushsection .discard.instr_begin\0A\09.long 347b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 347) #15, !srcloc !23 tail call void asm sideeffect "1:\09.byte 0x0f, 0x0b\0A.pushsection __bug_table,\22aw\22\0A2:\09.long 1b - .\09# bug_entry::bug_addr\0A\09.long ${0:c} - .\09# bug_entry::file\0A\09.word ${1:c}\09# bug_entry::line\0A\09.word ${2:c}\09# bug_entry::flags\0A\09.org 2b+${3:c}\0A.popsection\0A998:\0A\09.pushsection .discard.reachable\0A\09.long 998b\0A\09.popsection\0A\09", "i,i,i,i,~{dirflag},~{fpsr},~{flags}"(ptr nonnull @.str.1, i32 1015, i32 2313, i64 12) #15, !srcloc !24 tail call void asm sideeffect "348: nop\0A\09.pushsection .discard.instr_end\0A\09.long 348b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 348) #15, !srcloc !25 tail call void asm sideeffect "349: nop\0A\09.pushsection .discard.instr_end\0A\09.long 349b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 349) #15, !srcloc !26 br label %hdmi_audio_infoframe_pack_only.exit -hdmi_audio_infoframe_pack_only.exit: ; preds = %138, %154, %._crit_edge, %134, %70, %66, %33, %29, %23, %19, %5, %9, %13, %132, %74, %162, %160, %64, %37, %27, %17 - %164 = phi i64 [ -22, %162 ], [ %18, %17 ], [ %28, %27 ], [ 29, %64 ], [ -28, %37 ], [ %161, %160 ], [ 14, %132 ], [ -28, %74 ], [ -22, %13 ], [ -22, %9 ], [ -22, %5 ], [ -22, %19 ], [ -22, %23 ], [ -22, %29 ], [ -22, %33 ], [ -22, %66 ], [ -22, %70 ], [ -22, %134 ], [ -22, %._crit_edge ], [ -22, %154 ], [ -22, %138 ] - ret i64 %164 +hdmi_audio_infoframe_pack_only.exit: ; preds = %138, %154, %._crit_edge, %134, %70, %66, %33, %29, %23, %19, %5, %9, %13, %132, %74, %161, %159, %64, %37, %27, %17 + %163 = phi i64 [ -22, %161 ], [ %18, %17 ], [ %28, %27 ], [ 29, %64 ], [ -28, %37 ], [ %160, %159 ], [ 14, %132 ], [ -28, %74 ], [ -22, %13 ], [ -22, %9 ], [ -22, %5 ], [ -22, %19 ], [ -22, %23 ], [ -22, %29 ], [ -22, %33 ], [ -22, %66 ], [ -22, %70 ], [ -22, %134 ], [ -22, %._crit_edge ], [ -22, %154 ], [ -22, %138 ] + ret i64 %163 } ; Function Attrs: fn_ret_thunk_extern nounwind null_pointer_is_valid diff --git a/bench/linux/optimized/i9xx_wm.ll b/bench/linux/optimized/i9xx_wm.ll index 2dad0065d81..39d45f1b212 100644 --- a/bench/linux/optimized/i9xx_wm.ll +++ b/bench/linux/optimized/i9xx_wm.ll @@ -3129,7 +3129,7 @@ define internal noundef range(i32 -22, 1) i32 @vlv_compute_pipe_wm(ptr noundef r %12 = getelementptr inbounds nuw i8, ptr %11, i64 704 %13 = load i32, ptr %12, align 8 %14 = icmp sgt i32 %13, 0 - br i1 %14, label %15, label %.loopexit21 + br i1 %14, label %15, label %.loopexit24 15: ; preds = %2 %16 = getelementptr inbounds nuw i8, ptr %0, i64 24 @@ -3217,10 +3217,10 @@ define internal noundef range(i32 -22, 1) i32 @vlv_compute_pipe_wm(ptr noundef r %79 = icmp samesign ult i64 %76, %78 br i1 %79, label %69, label %171, !llvm.loop !78 -80: ; preds = %.thread42, %52 - %81 = phi i64 [ 0, %52 ], [ %136, %.thread42 ] - %82 = phi i8 [ 0, %52 ], [ %135, %.thread42 ] - %83 = phi i32 [ 0, %52 ], [ %137, %.thread42 ] +80: ; preds = %.thread14, %52 + %81 = phi i64 [ 0, %52 ], [ %136, %.thread14 ] + %82 = phi i8 [ 0, %52 ], [ %135, %.thread14 ] + %83 = phi i32 [ 0, %52 ], [ %137, %.thread14 ] %84 = load ptr, ptr %31, align 8 %85 = load ptr, ptr %84, align 8 %86 = getelementptr inbounds nuw i8, ptr %85, i64 6888 @@ -3231,7 +3231,7 @@ define internal noundef range(i32 -22, 1) i32 @vlv_compute_pipe_wm(ptr noundef r 90: ; preds = %80 %91 = tail call zeroext i1 @intel_wm_plane_visible(ptr noundef %9, ptr noundef %31) #14 - br i1 %91, label %92, label %.thread42 + br i1 %91, label %92, label %.thread14 92: ; preds = %90 %93 = load i32, ptr %18, align 8 @@ -3282,9 +3282,9 @@ define internal noundef range(i32 -22, 1) i32 @vlv_compute_pipe_wm(ptr noundef r %127 = tail call i32 @llvm.umin.i32(i32 %126, i32 65535) %128 = trunc nuw i32 %127 to i16 %129 = icmp ult i16 %59, %128 - br i1 %129, label %.thread, label %.thread42 + br i1 %129, label %.thread, label %.thread14 -.thread42: ; preds = %90, %125 +.thread14: ; preds = %90, %125 %130 = phi i16 [ %128, %125 ], [ 0, %90 ] %131 = getelementptr [3 x %struct.g4x_pipe_wm], ptr %58, i64 0, i64 %81 %132 = load i16, ptr %131, align 2 @@ -3297,21 +3297,21 @@ define internal noundef range(i32 -22, 1) i32 @vlv_compute_pipe_wm(ptr noundef r %138 = load i8, ptr %49, align 8 %139 = zext i8 %138 to i64 %140 = icmp samesign ult i64 %136, %139 - br i1 %140, label %80, label %.loopexit20, !llvm.loop !79 + br i1 %140, label %80, label %.loopexit23, !llvm.loop !79 .thread: ; preds = %80, %125 %141 = trunc nuw nsw i64 %81 to i32 - br label %.loopexit20 + br label %.loopexit23 -.loopexit20: ; preds = %.thread42, %.thread - %142 = phi i8 [ %82, %.thread ], [ %135, %.thread42 ] - %143 = phi i32 [ %141, %.thread ], [ %137, %.thread42 ] +.loopexit23: ; preds = %.thread14, %.thread + %142 = phi i8 [ %82, %.thread ], [ %135, %.thread14 ] + %143 = phi i32 [ %141, %.thread ], [ %137, %.thread14 ] %144 = icmp ne i8 %142, 0 br label %145 -145: ; preds = %.loopexit20, %48 - %146 = phi i32 [ 0, %48 ], [ %143, %.loopexit20 ] - %147 = phi i1 [ false, %48 ], [ %144, %.loopexit20 ] +145: ; preds = %.loopexit23, %48 + %146 = phi i32 [ 0, %48 ], [ %143, %.loopexit23 ] + %147 = phi i1 [ false, %48 ], [ %144, %.loopexit23 ] %148 = load ptr, ptr %9, align 8 %149 = load ptr, ptr %148, align 8 %150 = getelementptr inbounds nuw i8, ptr %149, i64 7024 @@ -3388,9 +3388,9 @@ define internal noundef range(i32 -22, 1) i32 @vlv_compute_pipe_wm(ptr noundef r %201 = load i32, ptr %200, align 8 %202 = sext i32 %201 to i64 %203 = icmp slt i64 %198, %202 - br i1 %203, label %22, label %.loopexit21, !llvm.loop !80 + br i1 %203, label %22, label %.loopexit24, !llvm.loop !80 -.loopexit21: ; preds = %.critedge, %2 +.loopexit24: ; preds = %.critedge, %2 %204 = phi i32 [ 0, %2 ], [ %197, %.critedge ] %205 = getelementptr inbounds nuw i8, ptr %9, i64 10 %206 = load i8, ptr %205, align 2 @@ -3398,9 +3398,9 @@ define internal noundef range(i32 -22, 1) i32 @vlv_compute_pipe_wm(ptr noundef r %208 = icmp eq i8 %207, 0 %209 = select i1 %208, i32 %204, i32 -1 %210 = icmp eq i32 %209, 0 - br i1 %210, label %.thread19, label %211 + br i1 %210, label %.thread22, label %211 -211: ; preds = %.loopexit21 +211: ; preds = %.loopexit24 %212 = and i32 %209, -129 %213 = icmp eq i32 %212, 0 br i1 %213, label %354, label %214 @@ -3436,7 +3436,7 @@ define internal noundef range(i32 -22, 1) i32 @vlv_compute_pipe_wm(ptr noundef r %242 = add nuw nsw i32 %241, %237 %243 = add nuw nsw i32 %242, %240 %244 = icmp samesign ult i32 %243, 512 - br i1 %244, label %245, label %.thread19 + br i1 %244, label %245, label %.thread22 245: ; preds = %214 %246 = tail call i32 @llvm.umax.i32(i32 %243, i32 1) @@ -3498,24 +3498,24 @@ define internal noundef range(i32 -22, 1) i32 @vlv_compute_pipe_wm(ptr noundef r %286 = sdiv i32 %285, %283 br label %287 -287: ; preds = %.thread14, %276 - %288 = phi i64 [ 0, %276 ], [ %308, %.thread14 ] - %289 = phi i32 [ %281, %276 ], [ %307, %.thread14 ] +287: ; preds = %.thread17, %276 + %288 = phi i64 [ 0, %276 ], [ %308, %.thread17 ] + %289 = phi i32 [ %281, %276 ], [ %307, %.thread17 ] %290 = load i8, ptr %247, align 1 %291 = zext i8 %290 to i64 %292 = shl nuw nsw i64 1, %288 %293 = and i64 %292, %291 %294 = icmp eq i64 %293, 0 - br i1 %294, label %.thread14, label %295 + br i1 %294, label %.thread17, label %295 295: ; preds = %287 %296 = icmp eq i32 %289, 0 - br i1 %296, label %.thread17, label %297 + br i1 %296, label %.thread20, label %297 297: ; preds = %295 %298 = and i64 %292, %248 %299 = icmp eq i64 %298, 0 - br i1 %299, label %.thread14, label %300 + br i1 %299, label %.thread17, label %300 300: ; preds = %297 %301 = tail call i32 @llvm.smin.i32(i32 %286, i32 %289) @@ -3525,15 +3525,15 @@ define internal noundef range(i32 -22, 1) i32 @vlv_compute_pipe_wm(ptr noundef r %305 = add i16 %303, %304 store i16 %305, ptr %302, align 2 %306 = sub i32 %289, %301 - br label %.thread14 + br label %.thread17 -.thread14: ; preds = %297, %300, %287 +.thread17: ; preds = %297, %300, %287 %307 = phi i32 [ %289, %287 ], [ %289, %297 ], [ %306, %300 ] %308 = add nuw nsw i64 %288, 1 %309 = icmp eq i64 %308, 8 br i1 %309, label %310, label %287, !llvm.loop !82 -310: ; preds = %.thread14 +310: ; preds = %.thread17 %311 = icmp ne i8 %227, 0 %312 = icmp ne i32 %307, 0 %313 = select i1 %311, i1 %312, i1 false @@ -3548,13 +3548,13 @@ define internal noundef range(i32 -22, 1) i32 @vlv_compute_pipe_wm(ptr noundef r %319 = getelementptr inbounds nuw i8, ptr %318, i64 80 %320 = load ptr, ptr %319, align 8 %321 = icmp eq ptr %320, null - br i1 %321, label %322, label %.thread16 + br i1 %321, label %322, label %.thread19 322: ; preds = %314 %323 = load ptr, ptr %318, align 8 - br label %.thread16 + br label %.thread19 -.thread16: ; preds = %314, %322 +.thread19: ; preds = %314, %322 %324 = phi ptr [ %323, %322 ], [ %320, %314 ] tail call void (ptr, ...) @__warn_printk(ptr noundef nonnull @.str, ptr noundef %317, ptr noundef %324, ptr noundef nonnull @.str.25) #14 tail call void asm sideeffect "972: nop\0A\09.pushsection .discard.instr_begin\0A\09.long 972b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 972) #14, !srcloc !85 @@ -3567,16 +3567,16 @@ define internal noundef range(i32 -22, 1) i32 @vlv_compute_pipe_wm(ptr noundef r %326 = icmp eq i8 %227, 0 br i1 %326, label %328, label %345 -.thread17: ; preds = %295 +.thread20: ; preds = %295 %327 = icmp eq i8 %227, 0 - br i1 %327, label %.thread18, label %345 + br i1 %327, label %.thread21, label %345 328: ; preds = %325 %329 = icmp eq i32 %307, 511 - br i1 %329, label %343, label %.thread18, !prof !83 + br i1 %329, label %343, label %.thread21, !prof !83 -.thread18: ; preds = %.thread17, %328 - %330 = phi i32 [ %307, %328 ], [ 0, %.thread17 ] +.thread21: ; preds = %.thread20, %328 + %330 = phi i32 [ %307, %328 ], [ 0, %.thread20 ] tail call void asm sideeffect "975: nop\0A\09.pushsection .discard.instr_begin\0A\09.long 975b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 975) #14, !srcloc !89 %331 = getelementptr inbounds nuw i8, ptr %223, i64 8 %332 = load ptr, ptr %331, align 8 @@ -3587,12 +3587,12 @@ define internal noundef range(i32 -22, 1) i32 @vlv_compute_pipe_wm(ptr noundef r %337 = icmp eq ptr %336, null br i1 %337, label %338, label %340 -338: ; preds = %.thread18 +338: ; preds = %.thread21 %339 = load ptr, ptr %334, align 8 br label %340 -340: ; preds = %338, %.thread18 - %341 = phi ptr [ %339, %338 ], [ %336, %.thread18 ] +340: ; preds = %338, %.thread21 + %341 = phi ptr [ %339, %338 ], [ %336, %.thread21 ] tail call void (ptr, ...) @__warn_printk(ptr noundef nonnull @.str, ptr noundef %333, ptr noundef %341, ptr noundef nonnull @.str.26) #14 tail call void asm sideeffect "976: nop\0A\09.pushsection .discard.instr_begin\0A\09.long 976b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 976) #14, !srcloc !90 tail call void asm sideeffect "1:\09.byte 0x0f, 0x0b\0A.pushsection __bug_table,\22aw\22\0A2:\09.long 1b - .\09# bug_entry::bug_addr\0A\09.long ${0:c} - .\09# bug_entry::file\0A\09.word ${1:c}\09# bug_entry::line\0A\09.word ${2:c}\09# bug_entry::flags\0A\09.org 2b+${3:c}\0A.popsection\0A998:\0A\09.pushsection .discard.reachable\0A\09.long 998b\0A\09.popsection\0A\09", "i,i,i,i,~{dirflag},~{fpsr},~{flags}"(ptr nonnull @.str.2, i32 1519, i32 2313, i64 12) #14, !srcloc !91 @@ -3606,7 +3606,7 @@ define internal noundef range(i32 -22, 1) i32 @vlv_compute_pipe_wm(ptr noundef r store i16 %344, ptr %221, align 2 br label %345 -345: ; preds = %325, %343, %.thread16, %.thread17 +345: ; preds = %325, %343, %.thread19, %.thread20 %346 = load i8, ptr %205, align 2 %347 = and i8 %346, 14 %348 = icmp eq i8 %347, 0 @@ -3624,10 +3624,10 @@ define internal noundef range(i32 -22, 1) i32 @vlv_compute_pipe_wm(ptr noundef r 354: ; preds = %352, %349, %211 %355 = tail call fastcc i32 @_vlv_compute_pipe_wm(ptr noundef %9), !range !94 - br label %.thread19 + br label %.thread22 -.thread19: ; preds = %214, %354, %.loopexit21 - %356 = phi i32 [ %355, %354 ], [ 0, %.loopexit21 ], [ -22, %214 ] +.thread22: ; preds = %214, %354, %.loopexit24 + %356 = phi i32 [ %355, %354 ], [ 0, %.loopexit24 ], [ -22, %214 ] ret i32 %356 } diff --git a/bench/linux/optimized/intel_display.ll b/bench/linux/optimized/intel_display.ll index 54d525dcf2c..5621d09d4d0 100644 --- a/bench/linux/optimized/intel_display.ll +++ b/bench/linux/optimized/intel_display.ll @@ -16066,7 +16066,7 @@ define dso_local range(i32 0, 5) i32 @intel_mode_valid_max_plane_size(ptr nounde %4 = getelementptr inbounds nuw i8, ptr %0, i64 2632 %5 = load i16, ptr %4, align 8 %6 = icmp ult i16 %5, 9 - br i1 %6, label %23, label %7 + br i1 %6, label %22, label %7 7: ; preds = %3 %8 = icmp ugt i16 %5, 10 @@ -16077,20 +16077,19 @@ define dso_local range(i32 0, 5) i32 @intel_mode_valid_max_plane_size(ptr nounde %13 = load i16, ptr %12, align 4 %14 = zext i16 %13 to i32 %15 = icmp samesign ult i32 %11, %14 - br i1 %15, label %23, label %16 + br i1 %15, label %22, label %16 16: ; preds = %7 - %17 = select i1 %8, i32 4320, i32 4096 - %18 = getelementptr inbounds nuw i8, ptr %1, i64 14 - %19 = load i16, ptr %18, align 2 - %20 = zext i16 %19 to i32 - %21 = icmp samesign ult i32 %17, %20 - %22 = select i1 %21, i32 4, i32 0 - br label %23 + %17 = getelementptr inbounds nuw i8, ptr %1, i64 14 + %18 = load i16, ptr %17, align 2 + %19 = select i1 %8, i16 4320, i16 4096 + %20 = icmp ult i16 %19, %18 + %21 = select i1 %20, i32 4, i32 0 + br label %22 -23: ; preds = %16, %7, %3 - %24 = phi i32 [ 0, %3 ], [ 3, %7 ], [ %22, %16 ] - ret i32 %24 +22: ; preds = %16, %7, %3 + %23 = phi i32 [ 0, %3 ], [ 3, %7 ], [ %21, %16 ] + ret i32 %23 } ; Function Attrs: fn_ret_thunk_extern mustprogress nofree norecurse nosync nounwind null_pointer_is_valid willreturn memory(read, argmem: readwrite, inaccessiblemem: none) diff --git a/bench/linux/optimized/intel_fbc.ll b/bench/linux/optimized/intel_fbc.ll index 801f53a4e33..56532b14079 100644 --- a/bench/linux/optimized/intel_fbc.ll +++ b/bench/linux/optimized/intel_fbc.ll @@ -2479,7 +2479,7 @@ define internal fastcc zeroext i1 @intel_fbc_is_ok(ptr noundef readonly captures %2 = getelementptr inbounds nuw i8, ptr %0, i64 456 %3 = load ptr, ptr %2, align 8 %4 = icmp eq ptr %3, null - br i1 %4, label %5, label %95 + br i1 %4, label %5, label %94 5: ; preds = %1 %6 = load ptr, ptr %0, align 8 @@ -2494,7 +2494,7 @@ define internal fastcc zeroext i1 @intel_fbc_is_ok(ptr noundef readonly captures %13 = load i64, ptr %12, align 8 %14 = and i64 %13, 1 %15 = icmp eq i64 %14, 0 - br i1 %15, label %95, label %16 + br i1 %15, label %94, label %16 16: ; preds = %11 %17 = getelementptr inbounds nuw i8, ptr %0, i64 216 @@ -2502,13 +2502,13 @@ define internal fastcc zeroext i1 @intel_fbc_is_ok(ptr noundef readonly captures %19 = getelementptr inbounds nuw i8, ptr %18, i64 216 %20 = load ptr, ptr %19, align 8 %21 = icmp eq ptr %20, null - br i1 %21, label %95, label %22 + br i1 %21, label %94, label %22 22: ; preds = %16 %23 = getelementptr inbounds nuw i8, ptr %20, i64 200 %24 = load i32, ptr %23, align 8 %25 = icmp eq i32 %24, -1 - br i1 %25, label %95, label %26 + br i1 %25, label %94, label %26 26: ; preds = %22, %5 %27 = getelementptr inbounds nuw i8, ptr %6, i64 1352 @@ -2520,88 +2520,87 @@ define internal fastcc zeroext i1 @intel_fbc_is_ok(ptr noundef readonly captures %33 = getelementptr inbounds nuw i8, ptr %32, i64 6 %34 = load i8, ptr %33, align 2 %35 = icmp eq i8 %34, 2 - %36 = select i1 %35, i32 2, i32 1 - %37 = getelementptr inbounds nuw i8, ptr %28, i64 396 - %38 = load i8, ptr %37, align 4 - %39 = zext i8 %38 to i32 - %40 = icmp samesign ugt i32 %36, %39 - br i1 %40, label %95, label %41 - -41: ; preds = %26 - %42 = getelementptr inbounds nuw i8, ptr %0, i64 108 - %43 = getelementptr inbounds nuw i8, ptr %0, i64 120 - %44 = load i32, ptr %43, align 4 - %45 = getelementptr inbounds nuw i8, ptr %0, i64 112 - %46 = load i32, ptr %45, align 4 - %47 = sub i32 %44, %46 - %48 = ashr i32 %47, 16 - %49 = icmp eq i16 %9, 7 - br i1 %49, label %50, label %52 + %36 = getelementptr inbounds nuw i8, ptr %28, i64 396 + %37 = load i8, ptr %36, align 4 + %38 = select i1 %35, i8 2, i8 1 + %39 = icmp ugt i8 %38, %37 + br i1 %39, label %94, label %40 + +40: ; preds = %26 + %41 = getelementptr inbounds nuw i8, ptr %0, i64 108 + %42 = getelementptr inbounds nuw i8, ptr %0, i64 120 + %43 = load i32, ptr %42, align 4 + %44 = getelementptr inbounds nuw i8, ptr %0, i64 112 + %45 = load i32, ptr %44, align 4 + %46 = sub i32 %43, %45 + %47 = ashr i32 %46, 16 + %48 = icmp eq i16 %9, 7 + br i1 %48, label %49, label %51 -50: ; preds = %41 - %51 = tail call i32 @llvm.smin.i32(i32 %48, i32 2048) - br label %56 +49: ; preds = %40 + %50 = tail call i32 @llvm.smin.i32(i32 %47, i32 2048) + br label %55 -52: ; preds = %41 - %53 = icmp ugt i16 %9, 7 - br i1 %53, label %54, label %56 +51: ; preds = %40 + %52 = icmp ugt i16 %9, 7 + br i1 %52, label %53, label %55 -54: ; preds = %52 - %55 = tail call i32 @llvm.smin.i32(i32 %48, i32 2560) - br label %56 +53: ; preds = %51 + %54 = tail call i32 @llvm.smin.i32(i32 %47, i32 2560) + br label %55 -56: ; preds = %54, %52, %50 - %57 = phi i32 [ %51, %50 ], [ %55, %54 ], [ %48, %52 ] - %58 = getelementptr inbounds nuw i8, ptr %0, i64 308 - %59 = load i32, ptr %58, align 4 - %60 = getelementptr inbounds nuw i8, ptr %0, i64 196 - %61 = load i32, ptr %60, align 4 - %62 = and i32 %61, 10 - %63 = icmp eq i32 %62, 0 - br i1 %63, label %64, label %67 - -64: ; preds = %56 - %65 = zext i8 %34 to i32 - %66 = udiv i32 %59, %65 - br label %67 - -67: ; preds = %64, %56 - %68 = phi i32 [ %59, %56 ], [ %66, %64 ] - %69 = shl i32 %68, 2 - br i1 %10, label %70, label %86 - -70: ; preds = %67 - %71 = add i32 %69, 511 - %72 = and i32 %71, -512 - %73 = getelementptr inbounds nuw i8, ptr %0, i64 116 - %74 = load i32, ptr %73, align 4 - %75 = load i32, ptr %42, align 4 - %76 = sub i32 %74, %75 - %77 = ashr i32 %76, 12 - %78 = lshr i32 %77, 2 - %79 = and i32 %78, 1073741820 - %80 = icmp ugt i16 %9, 10 - %81 = add nuw nsw i32 %79, 64 - %82 = select i1 %80, i32 %81, i32 %79 - %83 = add nuw nsw i32 %82, 511 - %84 = and i32 %83, 1073741312 - %85 = tail call i32 @llvm.umax.i32(i32 %72, i32 %84) - br label %86 - -86: ; preds = %70, %67 - %87 = phi i32 [ %85, %70 ], [ %69, %67 ] - %88 = mul i32 %87, %57 - %89 = zext i32 %88 to i64 - %90 = zext i8 %38 to i64 - %91 = getelementptr inbounds nuw i8, ptr %28, i64 56 - %92 = tail call i64 @i915_gem_stolen_node_size(ptr noundef nonnull %91) #12 - %93 = mul i64 %92, %90 - %94 = icmp uge i64 %93, %89 - br label %95 +55: ; preds = %53, %51, %49 + %56 = phi i32 [ %50, %49 ], [ %54, %53 ], [ %47, %51 ] + %57 = getelementptr inbounds nuw i8, ptr %0, i64 308 + %58 = load i32, ptr %57, align 4 + %59 = getelementptr inbounds nuw i8, ptr %0, i64 196 + %60 = load i32, ptr %59, align 4 + %61 = and i32 %60, 10 + %62 = icmp eq i32 %61, 0 + br i1 %62, label %63, label %66 + +63: ; preds = %55 + %64 = zext i8 %34 to i32 + %65 = udiv i32 %58, %64 + br label %66 -95: ; preds = %86, %26, %22, %16, %11, %1 - %96 = phi i1 [ false, %22 ], [ false, %1 ], [ false, %26 ], [ %94, %86 ], [ false, %16 ], [ false, %11 ] - ret i1 %96 +66: ; preds = %63, %55 + %67 = phi i32 [ %58, %55 ], [ %65, %63 ] + %68 = shl i32 %67, 2 + br i1 %10, label %69, label %85 + +69: ; preds = %66 + %70 = add i32 %68, 511 + %71 = and i32 %70, -512 + %72 = getelementptr inbounds nuw i8, ptr %0, i64 116 + %73 = load i32, ptr %72, align 4 + %74 = load i32, ptr %41, align 4 + %75 = sub i32 %73, %74 + %76 = ashr i32 %75, 12 + %77 = lshr i32 %76, 2 + %78 = and i32 %77, 1073741820 + %79 = icmp ugt i16 %9, 10 + %80 = add nuw nsw i32 %78, 64 + %81 = select i1 %79, i32 %80, i32 %78 + %82 = add nuw nsw i32 %81, 511 + %83 = and i32 %82, 1073741312 + %84 = tail call i32 @llvm.umax.i32(i32 %71, i32 %83) + br label %85 + +85: ; preds = %69, %66 + %86 = phi i32 [ %84, %69 ], [ %68, %66 ] + %87 = mul i32 %86, %56 + %88 = zext i32 %87 to i64 + %89 = zext i8 %37 to i64 + %90 = getelementptr inbounds nuw i8, ptr %28, i64 56 + %91 = tail call i64 @i915_gem_stolen_node_size(ptr noundef nonnull %90) #12 + %92 = mul i64 %91, %89 + %93 = icmp uge i64 %92, %88 + br label %94 + +94: ; preds = %85, %26, %22, %16, %11, %1 + %95 = phi i1 [ false, %22 ], [ false, %1 ], [ false, %26 ], [ %93, %85 ], [ false, %16 ], [ false, %11 ] + ret i1 %95 } ; Function Attrs: fn_ret_thunk_extern mustprogress nofree norecurse nosync nounwind null_pointer_is_valid willreturn memory(read, inaccessiblemem: none) diff --git a/bench/linux/optimized/tcp_metrics.ll b/bench/linux/optimized/tcp_metrics.ll index 1b6094ff684..3621dc61496 100644 --- a/bench/linux/optimized/tcp_metrics.ll +++ b/bench/linux/optimized/tcp_metrics.ll @@ -409,7 +409,7 @@ define internal fastcc ptr @tcp_get_metrics(ptr noundef readonly captures(none) br label %40 40: ; preds = %31, %24, %8 - %41 = phi i64 [ 2, %8 ], [ 2, %24 ], [ 4, %31 ] + %41 = phi i64 [ 1, %8 ], [ 1, %24 ], [ 3, %31 ] %42 = phi i16 [ 2, %8 ], [ 2, %24 ], [ 10, %31 ] %43 = phi i32 [ %13, %8 ], [ %29, %24 ], [ %39, %31 ] %44 = load ptr, ptr %1, align 8 @@ -446,8 +446,8 @@ define internal fastcc ptr @tcp_get_metrics(ptr noundef readonly captures(none) %69 = load i32, ptr %68, align 4 %70 = icmp eq i32 %67, %69 %71 = add nuw nsw i64 %65, 1 - %72 = icmp ne i64 %71, %41 - %73 = select i1 %70, i1 %72, i1 false + %72 = icmp ne i64 %41, %65 + %73 = and i1 %72, %70 br i1 %73, label %.preheader60, label %74, !llvm.loop !6 74: ; preds = %.preheader60 @@ -468,8 +468,8 @@ define internal fastcc ptr @tcp_get_metrics(ptr noundef readonly captures(none) %84 = load i32, ptr %83, align 4 %85 = icmp eq i32 %82, %84 %86 = add nuw nsw i64 %80, 1 - %87 = icmp ne i64 %86, %41 - %88 = select i1 %85, i1 %87, i1 false + %87 = icmp ne i64 %41, %80 + %88 = and i1 %87, %85 br i1 %88, label %.preheader59, label %89, !llvm.loop !6 89: ; preds = %.preheader59 @@ -528,8 +528,8 @@ define internal fastcc ptr @tcp_get_metrics(ptr noundef readonly captures(none) %124 = load i32, ptr %123, align 4 %125 = icmp eq i32 %122, %124 %126 = add nuw nsw i64 %120, 1 - %127 = icmp ne i64 %126, %41 - %128 = select i1 %125, i1 %127, i1 false + %127 = icmp ne i64 %41, %120 + %128 = and i1 %127, %125 br i1 %128, label %.preheader57, label %129, !llvm.loop !6 129: ; preds = %.preheader57 @@ -550,8 +550,8 @@ define internal fastcc ptr @tcp_get_metrics(ptr noundef readonly captures(none) %139 = load i32, ptr %138, align 4 %140 = icmp eq i32 %137, %139 %141 = add nuw nsw i64 %135, 1 - %142 = icmp ne i64 %141, %41 - %143 = select i1 %140, i1 %142, i1 false + %142 = icmp ne i64 %41, %135 + %143 = and i1 %142, %140 br i1 %143, label %.preheader56, label %144, !llvm.loop !6 144: ; preds = %.preheader56 @@ -897,7 +897,7 @@ define dso_local noundef zeroext i1 @tcp_peer_is_proven(ptr noundef readonly cap 45: ; preds = %28 %46 = icmp eq i16 %10, 2 - %47 = select i1 %46, i64 2, i64 4 + %47 = select i1 %46, i64 1, i64 3 br label %48 48: ; preds = %83, %45 @@ -916,8 +916,8 @@ define dso_local noundef zeroext i1 @tcp_peer_is_proven(ptr noundef readonly cap %58 = load i32, ptr %57, align 4 %59 = icmp eq i32 %56, %58 %60 = add nuw nsw i64 %54, 1 - %61 = icmp ne i64 %60, %47 - %62 = select i1 %59, i1 %61, i1 false + %61 = icmp ne i64 %47, %54 + %62 = and i1 %61, %59 br i1 %62, label %.preheader17, label %63, !llvm.loop !6 63: ; preds = %.preheader17 @@ -938,8 +938,8 @@ define dso_local noundef zeroext i1 @tcp_peer_is_proven(ptr noundef readonly cap %73 = load i32, ptr %72, align 4 %74 = icmp eq i32 %71, %73 %75 = add nuw nsw i64 %69, 1 - %76 = icmp ne i64 %75, %47 - %77 = select i1 %74, i1 %76, i1 false + %76 = icmp ne i64 %47, %69 + %77 = and i1 %76, %74 br i1 %77, label %.preheader, label %78, !llvm.loop !6 78: ; preds = %.preheader @@ -1584,12 +1584,12 @@ define internal range(i32 -2147483648, 1) i32 @tcp_metrics_nl_cmd_get(ptr readno br i1 %88, label %.thread12, label %89 89: ; preds = %76 - %90 = select i1 %.not.not, i64 4, i64 2 + %90 = select i1 %.not.not, i64 3, i64 1 br i1 %64, label %.split.us.preheader, label %.split .split.us.preheader: ; preds = %89 %91 = icmp eq i16 %63, 2 - %92 = select i1 %91, i64 2, i64 4 + %92 = select i1 %91, i64 1, i64 3 br label %.split.us .split.us: ; preds = %.split.us.preheader, %127 @@ -1608,8 +1608,8 @@ define internal range(i32 -2147483648, 1) i32 @tcp_metrics_nl_cmd_get(ptr readno %102 = load i32, ptr %101, align 4 %103 = icmp eq i32 %100, %102 %104 = add nuw nsw i64 %98, 1 - %105 = icmp ne i64 %104, %90 - %106 = select i1 %103, i1 %105, i1 false + %105 = icmp ne i64 %90, %98 + %106 = and i1 %105, %103 br i1 %106, label %.preheader34, label %107, !llvm.loop !6 107: ; preds = %.preheader34 @@ -1630,8 +1630,8 @@ define internal range(i32 -2147483648, 1) i32 @tcp_metrics_nl_cmd_get(ptr readno %117 = load i32, ptr %116, align 4 %118 = icmp eq i32 %115, %117 %119 = add nuw nsw i64 %113, 1 - %120 = icmp ne i64 %119, %92 - %121 = select i1 %118, i1 %120, i1 false + %120 = icmp ne i64 %92, %113 + %121 = and i1 %120, %118 br i1 %121, label %.preheader, label %122, !llvm.loop !6 122: ; preds = %.preheader @@ -1664,8 +1664,8 @@ define internal range(i32 -2147483648, 1) i32 @tcp_metrics_nl_cmd_get(ptr readno %139 = load i32, ptr %138, align 4 %140 = icmp eq i32 %137, %139 %141 = add nuw nsw i64 %135, 1 - %142 = icmp ne i64 %141, %90 - %143 = select i1 %140, i1 %142, i1 false + %142 = icmp ne i64 %90, %135 + %143 = and i1 %142, %140 br i1 %143, label %.preheader35, label %144, !llvm.loop !6 144: ; preds = %.preheader35 @@ -2096,7 +2096,7 @@ define internal range(i32 -22, 1) i32 @tcp_metrics_nl_cmd_del(ptr readnone captu 142: ; preds = %.split.us %143 = icmp eq i16 %139, 2 - %144 = select i1 %143, i64 2, i64 4 + %144 = select i1 %143, i64 1, i64 3 br label %145 145: ; preds = %145, %142 @@ -2107,8 +2107,8 @@ define internal range(i32 -22, 1) i32 @tcp_metrics_nl_cmd_del(ptr readnone captu %150 = load i32, ptr %149, align 4 %151 = icmp eq i32 %148, %150 %152 = add nuw nsw i64 %146, 1 - %153 = icmp ne i64 %152, %144 - %154 = select i1 %151, i1 %153, i1 false + %153 = icmp ne i64 %144, %146 + %154 = and i1 %153, %151 br i1 %154, label %145, label %155, !llvm.loop !6 155: ; preds = %145 @@ -2124,7 +2124,7 @@ define internal range(i32 -22, 1) i32 @tcp_metrics_nl_cmd_del(ptr readnone captu 162: ; preds = %156 %163 = icmp eq i16 %159, 2 - %164 = select i1 %163, i64 2, i64 4 + %164 = select i1 %163, i64 1, i64 3 br label %165 165: ; preds = %165, %162 @@ -2135,8 +2135,8 @@ define internal range(i32 -22, 1) i32 @tcp_metrics_nl_cmd_del(ptr readnone captu %170 = load i32, ptr %169, align 4 %171 = icmp eq i32 %168, %170 %172 = add nuw nsw i64 %166, 1 - %173 = icmp ne i64 %172, %164 - %174 = select i1 %171, i1 %173, i1 false + %173 = icmp ne i64 %164, %166 + %174 = and i1 %173, %171 br i1 %174, label %165, label %175, !llvm.loop !6 175: ; preds = %165 @@ -2176,7 +2176,7 @@ define internal range(i32 -22, 1) i32 @tcp_metrics_nl_cmd_del(ptr readnone captu 196: ; preds = %.split %197 = icmp eq i16 %193, 2 - %198 = select i1 %197, i64 2, i64 4 + %198 = select i1 %197, i64 1, i64 3 br label %199 199: ; preds = %199, %196 @@ -2187,8 +2187,8 @@ define internal range(i32 -22, 1) i32 @tcp_metrics_nl_cmd_del(ptr readnone captu %204 = load i32, ptr %203, align 4 %205 = icmp eq i32 %202, %204 %206 = add nuw nsw i64 %200, 1 - %207 = icmp ne i64 %206, %198 - %208 = select i1 %205, i1 %207, i1 false + %207 = icmp ne i64 %198, %200 + %208 = and i1 %207, %205 br i1 %208, label %199, label %209, !llvm.loop !6 209: ; preds = %199 diff --git a/bench/llama.cpp/optimized/unicode.ll b/bench/llama.cpp/optimized/unicode.ll index 3cd35d44ca7..4d52366813e 100644 --- a/bench/llama.cpp/optimized/unicode.ll +++ b/bench/llama.cpp/optimized/unicode.ll @@ -15345,8 +15345,8 @@ _ZNKSt5ctypeIcE6narrowEcc.exit: ; preds = %8, %17, %22 store i64 0, ptr %77, align 8, !tbaa !13 %78 = load ptr, ptr %76, align 8, !tbaa !7 store i8 0, ptr %78, align 1, !tbaa !12 - %79 = select i1 %74, i32 2, i32 4 - %80 = getelementptr inbounds nuw i8, ptr %0, i64 216 + %79 = getelementptr inbounds nuw i8, ptr %0, i64 216 + %80 = select i1 %74, i32 1, i32 3 br label %83 81: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc.exit @@ -15385,7 +15385,7 @@ _ZNKSt5ctypeIcE6narrowEcc.exit: ; preds = %8, %17, %22 %101 = load i64, ptr %77, align 8, !tbaa !13 %102 = add i64 %101, 1 %103 = load ptr, ptr %76, align 8, !tbaa !7 - %104 = icmp eq ptr %103, %80 + %104 = icmp eq ptr %103, %79 br i1 %104, label %105, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i 105: ; preds = %98 @@ -15394,7 +15394,7 @@ _ZNKSt5ctypeIcE6narrowEcc.exit: ; preds = %8, %17, %22 br label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i: ; preds = %105, %98 - %107 = load i64, ptr %80, align 8 + %107 = load i64, ptr %79, align 8 %108 = select i1 %104, i64 15, i64 %107 %109 = icmp ugt i64 %102, %108 br i1 %109, label %110, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc.exit @@ -15413,7 +15413,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc.exit: ; preds = %_ZNKS %114 = getelementptr inbounds nuw i8, ptr %113, i64 %102 store i8 0, ptr %114, align 1, !tbaa !12 %115 = add nuw nsw i32 %.060, 1 - %exitcond.not = icmp eq i32 %115, %79 + %exitcond.not = icmp eq i32 %80, %.060 br i1 %exitcond.not, label %81, label %83, !llvm.loop !433 116: ; preds = %73 @@ -45523,8 +45523,8 @@ define linkonce_odr void @_ZNSt8__detail8_ScannerIwE18_M_eat_escape_ecmaEv(ptr n store i64 0, ptr %72, align 8, !tbaa !199 %73 = load ptr, ptr %71, align 8, !tbaa !206 store i32 0, ptr %73, align 4, !tbaa !201 - %74 = select i1 %69, i32 2, i32 4 - %75 = getelementptr inbounds nuw i8, ptr %0, i64 216 + %74 = getelementptr inbounds nuw i8, ptr %0, i64 216 + %75 = select i1 %69, i32 1, i32 3 br label %78 76: ; preds = %_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEpLEw.exit @@ -45561,7 +45561,7 @@ define linkonce_odr void @_ZNSt8__detail8_ScannerIwE18_M_eat_escape_ecmaEv(ptr n %95 = load i64, ptr %72, align 8, !tbaa !199 %96 = add i64 %95, 1 %97 = load ptr, ptr %71, align 8, !tbaa !206 - %98 = icmp eq ptr %97, %75 + %98 = icmp eq ptr %97, %74 br i1 %98, label %99, label %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8capacityEv.exit.i.i 99: ; preds = %91 @@ -45570,7 +45570,7 @@ define linkonce_odr void @_ZNSt8__detail8_ScannerIwE18_M_eat_escape_ecmaEv(ptr n br label %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8capacityEv.exit.i.i _ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8capacityEv.exit.i.i: ; preds = %99, %91 - %101 = load i64, ptr %75, align 8 + %101 = load i64, ptr %74, align 8 %102 = select i1 %98, i64 3, i64 %101 %103 = icmp ugt i64 %96, %102 br i1 %103, label %104, label %_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEpLEw.exit @@ -45588,7 +45588,7 @@ _ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEpLEw.exit: ; preds = %_ZNKS %107 = getelementptr inbounds nuw i32, ptr %105, i64 %96 store i32 0, ptr %107, align 4, !tbaa !201 %108 = add nuw nsw i32 %.051, 1 - %exitcond.not = icmp eq i32 %108, %74 + %exitcond.not = icmp eq i32 %75, %.051 br i1 %exitcond.not, label %76, label %78, !llvm.loop !1004 109: ; preds = %68 diff --git a/bench/llvm/optimized/Action.ll b/bench/llvm/optimized/Action.ll index 40ad0ba2f23..49054e99146 100644 --- a/bench/llvm/optimized/Action.ll +++ b/bench/llvm/optimized/Action.ll @@ -1287,33 +1287,32 @@ define dso_local noundef ptr @_ZNK5clang6driver13OffloadAction17getHostDependenc ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: read) uwtable define dso_local noundef zeroext i1 @_ZNK5clang6driver13OffloadAction25hasSingleDeviceDependenceEb(ptr noundef nonnull readonly align 8 captures(none) dereferenceable(136) %0, i1 noundef zeroext %1) local_unnamed_addr #7 align 2 { - br i1 %1, label %3, label %11 + br i1 %1, label %3, label %10 3: ; preds = %2 %4 = getelementptr inbounds nuw i8, ptr %0, i64 24 %5 = load i32, ptr %4, align 8, !tbaa !25 - %6 = zext i32 %5 to i64 - %7 = getelementptr inbounds nuw i8, ptr %0, i64 88 - %8 = load ptr, ptr %7, align 8, !tbaa !51 - %.not2 = icmp eq ptr %8, null - %9 = select i1 %.not2, i64 1, i64 2 - %10 = icmp eq i64 %9, %6 - br label %18 - -11: ; preds = %2 - %12 = getelementptr inbounds nuw i8, ptr %0, i64 88 - %13 = load ptr, ptr %12, align 8, !tbaa !51 - %.not = icmp eq ptr %13, null - br i1 %.not, label %14, label %18 - -14: ; preds = %11 - %15 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %16 = load i32, ptr %15, align 8, !tbaa !25 - %17 = icmp eq i32 %16, 1 - br label %18 - -18: ; preds = %11, %14, %3 - %.0 = phi i1 [ %10, %3 ], [ false, %11 ], [ %17, %14 ] + %6 = getelementptr inbounds nuw i8, ptr %0, i64 88 + %7 = load ptr, ptr %6, align 8, !tbaa !51 + %.not2 = icmp eq ptr %7, null + %8 = select i1 %.not2, i32 1, i32 2 + %9 = icmp eq i32 %8, %5 + br label %17 + +10: ; preds = %2 + %11 = getelementptr inbounds nuw i8, ptr %0, i64 88 + %12 = load ptr, ptr %11, align 8, !tbaa !51 + %.not = icmp eq ptr %12, null + br i1 %.not, label %13, label %17 + +13: ; preds = %10 + %14 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %15 = load i32, ptr %14, align 8, !tbaa !25 + %16 = icmp eq i32 %15, 1 + br label %17 + +17: ; preds = %10, %13, %3 + %.0 = phi i1 [ %9, %3 ], [ false, %10 ], [ %16, %13 ] ret i1 %.0 } diff --git a/bench/llvm/optimized/CodeGenDAGPatterns.ll b/bench/llvm/optimized/CodeGenDAGPatterns.ll index 3af6c9e2b00..ecc6bf004d2 100644 --- a/bench/llvm/optimized/CodeGenDAGPatterns.ll +++ b/bench/llvm/optimized/CodeGenDAGPatterns.ll @@ -46006,16 +46006,16 @@ _ZNSt12_Vector_baseISt6vectorIN4llvm18IntrusiveRefCntPtrINS1_15TreePatternNodeEE %442 = getelementptr inbounds nuw %"class.std::vector", ptr %441, i64 %439 call void @llvm.memset.p0.i64(ptr nonnull align 8 %441, i8 0, i64 %440, i1 false) %scevgep.i.i.i.i.i = getelementptr i8, ptr %441, i64 %440 - %.pre360 = load ptr, ptr %432, align 8, !tbaa !409 - %.pre361 = load ptr, ptr %431, align 8, !tbaa !410 - %.pre363 = ptrtoint ptr %.pre360 to i64 - %.pre364 = ptrtoint ptr %.pre361 to i64 - %.pre366 = sub i64 %.pre363, %.pre364 - %.pre368 = lshr exact i64 %.pre366, 3 + %.pre358 = load ptr, ptr %432, align 8, !tbaa !409 + %.pre359 = load ptr, ptr %431, align 8, !tbaa !410 + %.pre361 = ptrtoint ptr %.pre358 to i64 + %.pre362 = ptrtoint ptr %.pre359 to i64 + %.pre364 = sub i64 %.pre361, %.pre362 + %.pre366 = lshr exact i64 %.pre364, 3 br label %_ZNSt6vectorIS_IN4llvm18IntrusiveRefCntPtrINS0_15TreePatternNodeEEESaIS3_EESaIS5_EEC2EmRKS6_.exit _ZNSt6vectorIS_IN4llvm18IntrusiveRefCntPtrINS0_15TreePatternNodeEEESaIS3_EESaIS5_EEC2EmRKS6_.exit: ; preds = %_ZNSt12_Vector_baseISt6vectorIN4llvm18IntrusiveRefCntPtrINS1_15TreePatternNodeEEESaIS4_EESaIS6_EEC2EmRKS7_.exit.thread.i, %.lr.ph.preheader.i.i.i.i.i - %.pre-phi369 = phi i64 [ %438, %_ZNSt12_Vector_baseISt6vectorIN4llvm18IntrusiveRefCntPtrINS1_15TreePatternNodeEEESaIS4_EESaIS6_EEC2EmRKS7_.exit.thread.i ], [ %.pre368, %.lr.ph.preheader.i.i.i.i.i ] + %.pre-phi367 = phi i64 [ %438, %_ZNSt12_Vector_baseISt6vectorIN4llvm18IntrusiveRefCntPtrINS1_15TreePatternNodeEEESaIS4_EESaIS6_EEC2EmRKS7_.exit.thread.i ], [ %.pre366, %.lr.ph.preheader.i.i.i.i.i ] %443 = phi ptr [ null, %_ZNSt12_Vector_baseISt6vectorIN4llvm18IntrusiveRefCntPtrINS1_15TreePatternNodeEEESaIS4_EESaIS6_EEC2EmRKS7_.exit.thread.i ], [ %441, %.lr.ph.preheader.i.i.i.i.i ] %.sink.i = phi ptr [ null, %_ZNSt12_Vector_baseISt6vectorIN4llvm18IntrusiveRefCntPtrINS1_15TreePatternNodeEEESaIS4_EESaIS6_EEC2EmRKS7_.exit.thread.i ], [ %442, %.lr.ph.preheader.i.i.i.i.i ] %.0.lcssa.i.i.i.i.i = phi ptr [ null, %_ZNSt12_Vector_baseISt6vectorIN4llvm18IntrusiveRefCntPtrINS1_15TreePatternNodeEEESaIS4_EESaIS6_EEC2EmRKS7_.exit.thread.i ], [ %scevgep.i.i.i.i.i, %.lr.ph.preheader.i.i.i.i.i ] @@ -46023,7 +46023,7 @@ _ZNSt6vectorIS_IN4llvm18IntrusiveRefCntPtrINS0_15TreePatternNodeEEESaIS3_EESaIS5 %445 = getelementptr inbounds nuw i8, ptr %37, i64 16 store ptr %.sink.i, ptr %445, align 8, !tbaa !489 store ptr %.0.lcssa.i.i.i.i.i, ptr %444, align 8, !tbaa !490 - %446 = and i64 %.pre-phi369, 4294967295 + %446 = and i64 %.pre-phi367, 4294967295 %.not94353 = icmp eq i64 %446, 0 br i1 %.not94353, label %._crit_edge.thread, label %.lr.ph.preheader @@ -46032,13 +46032,13 @@ _ZNSt6vectorIS_IN4llvm18IntrusiveRefCntPtrINS0_15TreePatternNodeEEESaIS3_EESaIS5 br label %448 .lr.ph.preheader: ; preds = %_ZNSt6vectorIS_IN4llvm18IntrusiveRefCntPtrINS0_15TreePatternNodeEEESaIS3_EESaIS5_EEC2EmRKS6_.exit - %447 = and i64 %.pre-phi369, 4294967295 + %447 = and i64 %.pre-phi367, 4294967295 br label %.lr.ph ._crit_edge: ; preds = %_ZN4llvm18IntrusiveRefCntPtrINS_15TreePatternNodeEED2Ev.exit338 - %.pre362 = load ptr, ptr %0, align 8, !tbaa !337 - store ptr %.pre362, ptr %39, align 8, !tbaa !337 - %.not.i.i328 = icmp eq ptr %.pre362, null + %.pre360 = load ptr, ptr %0, align 8, !tbaa !337 + store ptr %.pre360, ptr %39, align 8, !tbaa !337 + %.not.i.i328 = icmp eq ptr %.pre360, null br i1 %.not.i.i328, label %_ZN4llvm18IntrusiveRefCntPtrINS_15TreePatternNodeEEC2ERKS2_.exit329.thread, label %448 _ZN4llvm18IntrusiveRefCntPtrINS_15TreePatternNodeEEC2ERKS2_.exit329.thread: ; preds = %._crit_edge @@ -46046,7 +46046,7 @@ _ZN4llvm18IntrusiveRefCntPtrINS_15TreePatternNodeEEC2ERKS2_.exit329.thread: ; pr br label %_ZN4llvm18IntrusiveRefCntPtrINS_15TreePatternNodeEED2Ev.exit332 448: ; preds = %._crit_edge.thread, %._crit_edge - %449 = phi ptr [ %430, %._crit_edge.thread ], [ %.pre362, %._crit_edge ] + %449 = phi ptr [ %430, %._crit_edge.thread ], [ %.pre360, %._crit_edge ] %450 = load i32, ptr %449, align 4, !tbaa !469 %451 = add i32 %450, 1 store i32 %451, ptr %449, align 4, !tbaa !469 @@ -46162,98 +46162,100 @@ _ZN4llvm18IntrusiveRefCntPtrINS_15TreePatternNodeEED2Ev.exit338: ; preds = %_ZN4 br i1 %.not94, label %._crit_edge, label %.lr.ph, !llvm.loop !1291 506: ; preds = %_ZNK4llvm15TreePatternNode22isCommutativeIntrinsicERKNS_18CodeGenDAGPatternsE.exit - %507 = zext i1 %488 to i64 - %508 = select i1 %488, i64 3, i64 2 + %507 = zext i1 %488 to i32 + %508 = select i1 %488, i32 2, i32 1 br label %509 -509: ; preds = %506, %527 - %indvars.iv358 = phi i64 [ %507, %506 ], [ %indvars.iv.next359, %527 ] - %.091356 = phi i1 [ true, %506 ], [ %.1, %527 ] +509: ; preds = %506, %528 + %.091356 = phi i1 [ true, %506 ], [ %.1, %528 ] + %.092355 = phi i32 [ %507, %506 ], [ %529, %528 ] %510 = load ptr, ptr %0, align 8, !tbaa !337 %511 = getelementptr inbounds nuw i8, ptr %510, i64 152 - %512 = load ptr, ptr %511, align 8, !tbaa !410 - %513 = getelementptr inbounds nuw %"class.llvm::IntrusiveRefCntPtr", ptr %512, i64 %indvars.iv358 - %514 = load ptr, ptr %513, align 8, !tbaa !337 - %515 = getelementptr inbounds nuw i8, ptr %514, i64 56 - %.0.copyload.i.i.i.i.i.i.i.i339 = load i64, ptr %515, align 8 - %516 = and i64 %.0.copyload.i.i.i.i.i.i.i.i339, 4 - %.not351 = icmp eq i64 %516, 0 - br i1 %.not351, label %527, label %517 - -517: ; preds = %509 - %518 = and i64 %.0.copyload.i.i.i.i.i.i.i.i339, -8 - %519 = inttoptr i64 %518 to ptr - %520 = getelementptr inbounds nuw i8, ptr %519, i64 8 - %521 = load i8, ptr %520, align 8, !tbaa !258 - %522 = icmp ne i8 %521, 5 - %.not96352 = icmp eq i64 %518, 0 - %.not96 = or i1 %.not96352, %522 - br i1 %.not96, label %527, label %523 - -523: ; preds = %517 - %524 = getelementptr inbounds nuw i8, ptr %519, i64 24 - %525 = load ptr, ptr %524, align 8, !tbaa !367 - %526 = call noundef zeroext i1 @_ZNK4llvm6Record12isSubClassOfENS_9StringRefE(ptr noundef nonnull align 8 dereferenceable(192) %525, ptr nonnull @.str.269, i64 8) - %not. = xor i1 %526, true + %512 = zext i32 %.092355 to i64 + %513 = load ptr, ptr %511, align 8, !tbaa !410 + %514 = getelementptr inbounds nuw %"class.llvm::IntrusiveRefCntPtr", ptr %513, i64 %512 + %515 = load ptr, ptr %514, align 8, !tbaa !337 + %516 = getelementptr inbounds nuw i8, ptr %515, i64 56 + %.0.copyload.i.i.i.i.i.i.i.i339 = load i64, ptr %516, align 8 + %517 = and i64 %.0.copyload.i.i.i.i.i.i.i.i339, 4 + %.not351 = icmp eq i64 %517, 0 + br i1 %.not351, label %528, label %518 + +518: ; preds = %509 + %519 = and i64 %.0.copyload.i.i.i.i.i.i.i.i339, -8 + %520 = inttoptr i64 %519 to ptr + %521 = getelementptr inbounds nuw i8, ptr %520, i64 8 + %522 = load i8, ptr %521, align 8, !tbaa !258 + %523 = icmp ne i8 %522, 5 + %.not96352 = icmp eq i64 %519, 0 + %.not96 = or i1 %.not96352, %523 + br i1 %.not96, label %528, label %524 + +524: ; preds = %518 + %525 = getelementptr inbounds nuw i8, ptr %520, i64 24 + %526 = load ptr, ptr %525, align 8, !tbaa !367 + %527 = call noundef zeroext i1 @_ZNK4llvm6Record12isSubClassOfENS_9StringRefE(ptr noundef nonnull align 8 dereferenceable(192) %526, ptr nonnull @.str.269, i64 8) + %not. = xor i1 %527, true %spec.select = select i1 %not., i1 %.091356, i1 false - br label %527 - -527: ; preds = %517, %523, %509 - %.1 = phi i1 [ %.091356, %509 ], [ %spec.select, %523 ], [ %.091356, %517 ] - %indvars.iv.next359 = add nuw nsw i64 %indvars.iv358, 1 - %.not95 = icmp eq i64 %indvars.iv.next359, %508 - br i1 %.not95, label %528, label %509, !llvm.loop !1292 - -528: ; preds = %527 - br i1 %.1, label %529, label %_ZN4llvm18IntrusiveRefCntPtrINS_15TreePatternNodeEED2Ev.exit345 - -529: ; preds = %528 - %530 = load ptr, ptr %37, align 8, !tbaa !486 - %531 = getelementptr inbounds nuw %"class.std::vector", ptr %530, i64 %507 - %532 = select i1 %488, i64 2, i64 1 - %533 = getelementptr inbounds nuw %"class.std::vector", ptr %530, i64 %532 - %534 = load ptr, ptr %531, align 8, !tbaa !410 - %535 = getelementptr inbounds nuw i8, ptr %531, i64 8 - %536 = load ptr, ptr %535, align 8, !tbaa !409 - %537 = getelementptr inbounds nuw i8, ptr %531, i64 16 - %538 = load ptr, ptr %537, align 8, !tbaa !475 - %539 = load ptr, ptr %533, align 8, !tbaa !410 - store ptr %539, ptr %531, align 8, !tbaa !410 - %540 = getelementptr inbounds nuw i8, ptr %533, i64 8 - %541 = load ptr, ptr %540, align 8, !tbaa !409 - store ptr %541, ptr %535, align 8, !tbaa !409 - %542 = getelementptr inbounds nuw i8, ptr %533, i64 16 - %543 = load ptr, ptr %542, align 8, !tbaa !475 - store ptr %543, ptr %537, align 8, !tbaa !475 - store ptr %534, ptr %533, align 8, !tbaa !410 - store ptr %536, ptr %540, align 8, !tbaa !409 - store ptr %538, ptr %542, align 8, !tbaa !475 - %544 = load ptr, ptr %0, align 8, !tbaa !337 - store ptr %544, ptr %40, align 8, !tbaa !337 - %.not.i.i341 = icmp eq ptr %544, null - br i1 %.not.i.i341, label %_ZN4llvm18IntrusiveRefCntPtrINS_15TreePatternNodeEEC2ERKS2_.exit342.thread, label %545 - -_ZN4llvm18IntrusiveRefCntPtrINS_15TreePatternNodeEEC2ERKS2_.exit342.thread: ; preds = %529 + br label %528 + +528: ; preds = %518, %524, %509 + %.1 = phi i1 [ %.091356, %509 ], [ %spec.select, %524 ], [ %.091356, %518 ] + %529 = add i32 %.092355, 1 + %.not95 = icmp eq i32 %508, %.092355 + br i1 %.not95, label %530, label %509, !llvm.loop !1292 + +530: ; preds = %528 + br i1 %.1, label %531, label %_ZN4llvm18IntrusiveRefCntPtrINS_15TreePatternNodeEED2Ev.exit345 + +531: ; preds = %530 + %532 = zext i1 %488 to i64 + %533 = load ptr, ptr %37, align 8, !tbaa !486 + %534 = getelementptr inbounds nuw %"class.std::vector", ptr %533, i64 %532 + %535 = select i1 %488, i64 2, i64 1 + %536 = getelementptr inbounds nuw %"class.std::vector", ptr %533, i64 %535 + %537 = load ptr, ptr %534, align 8, !tbaa !410 + %538 = getelementptr inbounds nuw i8, ptr %534, i64 8 + %539 = load ptr, ptr %538, align 8, !tbaa !409 + %540 = getelementptr inbounds nuw i8, ptr %534, i64 16 + %541 = load ptr, ptr %540, align 8, !tbaa !475 + %542 = load ptr, ptr %536, align 8, !tbaa !410 + store ptr %542, ptr %534, align 8, !tbaa !410 + %543 = getelementptr inbounds nuw i8, ptr %536, i64 8 + %544 = load ptr, ptr %543, align 8, !tbaa !409 + store ptr %544, ptr %538, align 8, !tbaa !409 + %545 = getelementptr inbounds nuw i8, ptr %536, i64 16 + %546 = load ptr, ptr %545, align 8, !tbaa !475 + store ptr %546, ptr %540, align 8, !tbaa !475 + store ptr %537, ptr %536, align 8, !tbaa !410 + store ptr %539, ptr %543, align 8, !tbaa !409 + store ptr %541, ptr %545, align 8, !tbaa !475 + %547 = load ptr, ptr %0, align 8, !tbaa !337 + store ptr %547, ptr %40, align 8, !tbaa !337 + %.not.i.i341 = icmp eq ptr %547, null + br i1 %.not.i.i341, label %_ZN4llvm18IntrusiveRefCntPtrINS_15TreePatternNodeEEC2ERKS2_.exit342.thread, label %548 + +_ZN4llvm18IntrusiveRefCntPtrINS_15TreePatternNodeEEC2ERKS2_.exit342.thread: ; preds = %531 call fastcc void @_ZL20CombineChildVariantsN4llvm18IntrusiveRefCntPtrINS_15TreePatternNodeEEERKSt6vectorIS3_IS2_SaIS2_EESaIS5_EERS5_RNS_18CodeGenDAGPatternsERKNS_9StringSetINS_15MallocAllocatorEEE(ptr noundef %40, ptr noundef nonnull align 8 dereferenceable(24) %37, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull align 8 dereferenceable(1252) %2, ptr noundef nonnull align 8 dereferenceable(24) %3) br label %_ZN4llvm18IntrusiveRefCntPtrINS_15TreePatternNodeEED2Ev.exit345 -545: ; preds = %529 - %546 = load i32, ptr %544, align 4, !tbaa !469 - %547 = add i32 %546, 1 - store i32 %547, ptr %544, align 4, !tbaa !469 +548: ; preds = %531 + %549 = load i32, ptr %547, align 4, !tbaa !469 + %550 = add i32 %549, 1 + store i32 %550, ptr %547, align 4, !tbaa !469 call fastcc void @_ZL20CombineChildVariantsN4llvm18IntrusiveRefCntPtrINS_15TreePatternNodeEEERKSt6vectorIS3_IS2_SaIS2_EESaIS5_EERS5_RNS_18CodeGenDAGPatternsERKNS_9StringSetINS_15MallocAllocatorEEE(ptr noundef %40, ptr noundef nonnull align 8 dereferenceable(24) %37, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull align 8 dereferenceable(1252) %2, ptr noundef nonnull align 8 dereferenceable(24) %3) - %548 = load i32, ptr %544, align 4, !tbaa !469 - %549 = add i32 %548, -1 - store i32 %549, ptr %544, align 4, !tbaa !469 - %.not.i.i.i344 = icmp eq i32 %549, 0 - br i1 %.not.i.i.i344, label %550, label %_ZN4llvm18IntrusiveRefCntPtrINS_15TreePatternNodeEED2Ev.exit345 - -550: ; preds = %545 - call void @_ZN4llvm15TreePatternNodeD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %544) #32 - call void @_ZdlPvm(ptr noundef nonnull align 4 dereferenceable(4) %544, i64 noundef 184) #36 + %551 = load i32, ptr %547, align 4, !tbaa !469 + %552 = add i32 %551, -1 + store i32 %552, ptr %547, align 4, !tbaa !469 + %.not.i.i.i344 = icmp eq i32 %552, 0 + br i1 %.not.i.i.i344, label %553, label %_ZN4llvm18IntrusiveRefCntPtrINS_15TreePatternNodeEED2Ev.exit345 + +553: ; preds = %548 + call void @_ZN4llvm15TreePatternNodeD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %547) #32 + call void @_ZdlPvm(ptr noundef nonnull align 4 dereferenceable(4) %547, i64 noundef 184) #36 br label %_ZN4llvm18IntrusiveRefCntPtrINS_15TreePatternNodeEED2Ev.exit345 -_ZN4llvm18IntrusiveRefCntPtrINS_15TreePatternNodeEED2Ev.exit345: ; preds = %550, %545, %_ZN4llvm18IntrusiveRefCntPtrINS_15TreePatternNodeEEC2ERKS2_.exit342.thread, %528, %_ZNK4llvm15TreePatternNode22isCommutativeIntrinsicERKNS_18CodeGenDAGPatternsE.exit +_ZN4llvm18IntrusiveRefCntPtrINS_15TreePatternNodeEED2Ev.exit345: ; preds = %553, %548, %_ZN4llvm18IntrusiveRefCntPtrINS_15TreePatternNodeEEC2ERKS2_.exit342.thread, %530, %_ZNK4llvm15TreePatternNode22isCommutativeIntrinsicERKNS_18CodeGenDAGPatternsE.exit call void @_ZNSt6vectorIS_IN4llvm18IntrusiveRefCntPtrINS0_15TreePatternNodeEEESaIS3_EESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %37) #32 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %37) #32 br label %_ZNSt6vectorIN4llvm18IntrusiveRefCntPtrINS0_15TreePatternNodeEEESaIS3_EE9push_backERKS3_.exit diff --git a/bench/llvm/optimized/CombinerHelper.ll b/bench/llvm/optimized/CombinerHelper.ll index 8569e4e92dc..abea72af49a 100644 --- a/bench/llvm/optimized/CombinerHelper.ll +++ b/bench/llvm/optimized/CombinerHelper.ll @@ -7782,18 +7782,16 @@ define dso_local noundef zeroext i1 @_ZNK4llvm14CombinerHelper18matchCombineDivR %5 = alloca [1 x %"class.llvm::LLT"], align 8 %6 = getelementptr inbounds nuw i8, ptr %1, i64 68 %7 = load i16, ptr %6, align 4, !tbaa !228 - %.fr51 = freeze i16 %7 - %8 = and i16 %.fr51, -2 + %.fr53 = freeze i16 %7 + %8 = and i16 %.fr53, -2 %switch = icmp eq i16 %8, 56 %.032.in.v = select i1 %switch, i16 56, i16 58 - %.032.in = icmp eq i16 %.fr51, %.032.in.v + %.032.in = icmp eq i16 %.fr53, %.032.in.v %9 = getelementptr inbounds nuw i8, ptr %1, i64 32 %10 = load ptr, ptr %9, align 8, !tbaa !241 %11 = getelementptr inbounds nuw i8, ptr %10, i64 36 %12 = load i32, ptr %11, align 4, !tbaa !204 %.037 = select i1 %.032.in, i32 60, i32 61 - %.036 = select i1 %.032.in, i32 58, i32 59 - %.035 = select i1 %.032.in, i32 56, i32 57 call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %4) #30 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #30 %13 = getelementptr inbounds nuw i8, ptr %0, i64 8 @@ -7889,132 +7887,132 @@ _ZNK4llvm14CombinerHelper24isLegalOrBeforeLegalizerERKNS_13LegalityQueryE.exit._ .lr.ph: ; preds = %52, %49 %.sroa.0.0.i.i = phi ptr [ %.0.i.i.i, %49 ], [ %storemerge.i.i.i.i, %52 ] %55 = getelementptr inbounds nuw i8, ptr %1, i64 24 + %.03546 = select i1 %.032.in, i16 56, i16 57 + %.03647 = select i1 %.032.in, i16 58, i16 59 br i1 %switch, label %.lr.ph.split.us, label %.lr.ph.split .lr.ph.split.us: ; preds = %_ZN4llvm19MachineRegisterInfo26defusechain_instr_iteratorILb1ELb0ELb1ELb0ELb1ELb0EE7advanceEv.exit.i.us, %.lr.ph - %.sroa.041.050.us = phi ptr [ %.sroa.0.0.i.i, %.lr.ph ], [ %storemerge.i.i.us, %_ZN4llvm19MachineRegisterInfo26defusechain_instr_iteratorILb1ELb0ELb1ELb0ELb1ELb0EE7advanceEv.exit.i.us ] - %56 = getelementptr inbounds nuw i8, ptr %.sroa.041.050.us, i64 8 + %.sroa.041.052.us = phi ptr [ %.sroa.0.0.i.i, %.lr.ph ], [ %storemerge.i.i.us, %_ZN4llvm19MachineRegisterInfo26defusechain_instr_iteratorILb1ELb0ELb1ELb0ELb1ELb0EE7advanceEv.exit.i.us ] + %56 = getelementptr inbounds nuw i8, ptr %.sroa.041.052.us, i64 8 %57 = load ptr, ptr %56, align 8, !tbaa !220 %58 = load ptr, ptr %55, align 8, !tbaa !247 %59 = getelementptr inbounds nuw i8, ptr %57, i64 24 %60 = load ptr, ptr %59, align 8, !tbaa !247 %61 = icmp eq ptr %58, %60 - br i1 %61, label %62, label %80 + br i1 %61, label %62, label %79 62: ; preds = %.lr.ph.split.us %63 = getelementptr inbounds nuw i8, ptr %57, i64 68 %64 = load i16, ptr %63, align 4, !tbaa !228 - %65 = zext i16 %64 to i32 - %66 = icmp eq i32 %.036, %65 - br i1 %66, label %67, label %80 + %65 = icmp eq i16 %.03647, %64 + br i1 %65, label %66, label %79 -67: ; preds = %62 - %68 = load ptr, ptr %9, align 8, !tbaa !241 - %69 = getelementptr inbounds nuw i8, ptr %68, i64 64 - %70 = getelementptr inbounds nuw i8, ptr %57, i64 32 - %71 = load ptr, ptr %70, align 8, !tbaa !241 - %72 = getelementptr inbounds nuw i8, ptr %71, i64 64 - %73 = call noundef zeroext i1 @_ZNK4llvm14CombinerHelper14matchEqualDefsERKNS_14MachineOperandES3_(ptr noundef nonnull align 8 dereferenceable(72) %0, ptr noundef nonnull align 8 dereferenceable(32) %69, ptr noundef nonnull align 8 dereferenceable(32) %72) - br i1 %73, label %74, label %80 +66: ; preds = %62 + %67 = load ptr, ptr %9, align 8, !tbaa !241 + %68 = getelementptr inbounds nuw i8, ptr %67, i64 64 + %69 = getelementptr inbounds nuw i8, ptr %57, i64 32 + %70 = load ptr, ptr %69, align 8, !tbaa !241 + %71 = getelementptr inbounds nuw i8, ptr %70, i64 64 + %72 = call noundef zeroext i1 @_ZNK4llvm14CombinerHelper14matchEqualDefsERKNS_14MachineOperandES3_(ptr noundef nonnull align 8 dereferenceable(72) %0, ptr noundef nonnull align 8 dereferenceable(32) %68, ptr noundef nonnull align 8 dereferenceable(32) %71) + br i1 %72, label %73, label %79 -74: ; preds = %67 - %75 = load ptr, ptr %9, align 8, !tbaa !241 - %76 = getelementptr inbounds nuw i8, ptr %75, i64 32 - %77 = load ptr, ptr %70, align 8, !tbaa !241 - %78 = getelementptr inbounds nuw i8, ptr %77, i64 32 - %79 = call noundef zeroext i1 @_ZNK4llvm14CombinerHelper14matchEqualDefsERKNS_14MachineOperandES3_(ptr noundef nonnull align 8 dereferenceable(72) %0, ptr noundef nonnull align 8 dereferenceable(32) %76, ptr noundef nonnull align 8 dereferenceable(32) %78) - br i1 %79, label %.critedge39, label %80 +73: ; preds = %66 + %74 = load ptr, ptr %9, align 8, !tbaa !241 + %75 = getelementptr inbounds nuw i8, ptr %74, i64 32 + %76 = load ptr, ptr %69, align 8, !tbaa !241 + %77 = getelementptr inbounds nuw i8, ptr %76, i64 32 + %78 = call noundef zeroext i1 @_ZNK4llvm14CombinerHelper14matchEqualDefsERKNS_14MachineOperandES3_(ptr noundef nonnull align 8 dereferenceable(72) %0, ptr noundef nonnull align 8 dereferenceable(32) %75, ptr noundef nonnull align 8 dereferenceable(32) %77) + br i1 %78, label %.critedge39, label %79 -80: ; preds = %74, %67, %62, %.lr.ph.split.us - %81 = load ptr, ptr %56, align 8, !tbaa !220 +79: ; preds = %73, %66, %62, %.lr.ph.split.us + %80 = load ptr, ptr %56, align 8, !tbaa !220 br label %.critedge2.i.i.us -.critedge2.i.i.us: ; preds = %.critedge2.i.i.us.backedge, %80 - %.pn.i.i.us = phi ptr [ %.sroa.041.050.us, %80 ], [ %storemerge.i.i.us, %.critedge2.i.i.us.backedge ] +.critedge2.i.i.us: ; preds = %.critedge2.i.i.us.backedge, %79 + %.pn.i.i.us = phi ptr [ %.sroa.041.052.us, %79 ], [ %storemerge.i.i.us, %.critedge2.i.i.us.backedge ] %storemerge.in.i.i.us = getelementptr inbounds nuw i8, ptr %.pn.i.i.us, i64 24 %storemerge.i.i.us = load ptr, ptr %storemerge.in.i.i.us, align 8, !tbaa !204 %.not.i.i.us = icmp eq ptr %storemerge.i.i.us, null - br i1 %.not.i.i.us, label %.loopexit, label %82 + br i1 %.not.i.i.us, label %.loopexit, label %81 -82: ; preds = %.critedge2.i.i.us - %83 = load i32, ptr %storemerge.i.i.us, align 8 - %84 = and i32 %83, -2130706432 - %or.cond.not.i.i.us = icmp eq i32 %84, 0 +81: ; preds = %.critedge2.i.i.us + %82 = load i32, ptr %storemerge.i.i.us, align 8 + %83 = and i32 %82, -2130706432 + %or.cond.not.i.i.us = icmp eq i32 %83, 0 br i1 %or.cond.not.i.i.us, label %_ZN4llvm19MachineRegisterInfo26defusechain_instr_iteratorILb1ELb0ELb1ELb0ELb1ELb0EE7advanceEv.exit.i.us, label %.critedge2.i.i.us.backedge -.critedge2.i.i.us.backedge: ; preds = %82, %_ZN4llvm19MachineRegisterInfo26defusechain_instr_iteratorILb1ELb0ELb1ELb0ELb1ELb0EE7advanceEv.exit.i.us +.critedge2.i.i.us.backedge: ; preds = %81, %_ZN4llvm19MachineRegisterInfo26defusechain_instr_iteratorILb1ELb0ELb1ELb0ELb1ELb0EE7advanceEv.exit.i.us br label %.critedge2.i.i.us, !llvm.loop !274 -_ZN4llvm19MachineRegisterInfo26defusechain_instr_iteratorILb1ELb0ELb1ELb0ELb1ELb0EE7advanceEv.exit.i.us: ; preds = %82 - %85 = getelementptr inbounds nuw i8, ptr %storemerge.i.i.us, i64 8 - %86 = load ptr, ptr %85, align 8, !tbaa !220 - %87 = icmp eq ptr %86, %81 - br i1 %87, label %.critedge2.i.i.us.backedge, label %.lr.ph.split.us, !llvm.loop !274 +_ZN4llvm19MachineRegisterInfo26defusechain_instr_iteratorILb1ELb0ELb1ELb0ELb1ELb0EE7advanceEv.exit.i.us: ; preds = %81 + %84 = getelementptr inbounds nuw i8, ptr %storemerge.i.i.us, i64 8 + %85 = load ptr, ptr %84, align 8, !tbaa !220 + %86 = icmp eq ptr %85, %80 + br i1 %86, label %.critedge2.i.i.us.backedge, label %.lr.ph.split.us, !llvm.loop !274 .lr.ph.split: ; preds = %_ZN4llvm19MachineRegisterInfo26defusechain_instr_iteratorILb1ELb0ELb1ELb0ELb1ELb0EE7advanceEv.exit.i, %.lr.ph - %.sroa.041.050 = phi ptr [ %.sroa.0.0.i.i, %.lr.ph ], [ %storemerge.i.i, %_ZN4llvm19MachineRegisterInfo26defusechain_instr_iteratorILb1ELb0ELb1ELb0ELb1ELb0EE7advanceEv.exit.i ] - %88 = getelementptr inbounds nuw i8, ptr %.sroa.041.050, i64 8 - %89 = load ptr, ptr %88, align 8, !tbaa !220 - %90 = load ptr, ptr %55, align 8, !tbaa !247 - %91 = getelementptr inbounds nuw i8, ptr %89, i64 24 - %92 = load ptr, ptr %91, align 8, !tbaa !247 - %93 = icmp eq ptr %90, %92 - br i1 %93, label %.critedge, label %111 + %.sroa.041.052 = phi ptr [ %.sroa.0.0.i.i, %.lr.ph ], [ %storemerge.i.i, %_ZN4llvm19MachineRegisterInfo26defusechain_instr_iteratorILb1ELb0ELb1ELb0ELb1ELb0EE7advanceEv.exit.i ] + %87 = getelementptr inbounds nuw i8, ptr %.sroa.041.052, i64 8 + %88 = load ptr, ptr %87, align 8, !tbaa !220 + %89 = load ptr, ptr %55, align 8, !tbaa !247 + %90 = getelementptr inbounds nuw i8, ptr %88, i64 24 + %91 = load ptr, ptr %90, align 8, !tbaa !247 + %92 = icmp eq ptr %89, %91 + br i1 %92, label %.critedge, label %109 .critedge: ; preds = %.lr.ph.split - %94 = getelementptr inbounds nuw i8, ptr %89, i64 68 - %95 = load i16, ptr %94, align 4, !tbaa !228 - %96 = zext i16 %95 to i32 - %97 = icmp eq i32 %.035, %96 - br i1 %97, label %98, label %111 - -98: ; preds = %.critedge - %99 = load ptr, ptr %9, align 8, !tbaa !241 - %100 = getelementptr inbounds nuw i8, ptr %99, i64 64 - %101 = getelementptr inbounds nuw i8, ptr %89, i64 32 - %102 = load ptr, ptr %101, align 8, !tbaa !241 - %103 = getelementptr inbounds nuw i8, ptr %102, i64 64 - %104 = call noundef zeroext i1 @_ZNK4llvm14CombinerHelper14matchEqualDefsERKNS_14MachineOperandES3_(ptr noundef nonnull align 8 dereferenceable(72) %0, ptr noundef nonnull align 8 dereferenceable(32) %100, ptr noundef nonnull align 8 dereferenceable(32) %103) - br i1 %104, label %105, label %111 - -105: ; preds = %98 - %106 = load ptr, ptr %9, align 8, !tbaa !241 + %93 = getelementptr inbounds nuw i8, ptr %88, i64 68 + %94 = load i16, ptr %93, align 4, !tbaa !228 + %95 = icmp eq i16 %.03546, %94 + br i1 %95, label %96, label %109 + +96: ; preds = %.critedge + %97 = load ptr, ptr %9, align 8, !tbaa !241 + %98 = getelementptr inbounds nuw i8, ptr %97, i64 64 + %99 = getelementptr inbounds nuw i8, ptr %88, i64 32 + %100 = load ptr, ptr %99, align 8, !tbaa !241 + %101 = getelementptr inbounds nuw i8, ptr %100, i64 64 + %102 = call noundef zeroext i1 @_ZNK4llvm14CombinerHelper14matchEqualDefsERKNS_14MachineOperandES3_(ptr noundef nonnull align 8 dereferenceable(72) %0, ptr noundef nonnull align 8 dereferenceable(32) %98, ptr noundef nonnull align 8 dereferenceable(32) %101) + br i1 %102, label %103, label %109 + +103: ; preds = %96 + %104 = load ptr, ptr %9, align 8, !tbaa !241 + %105 = getelementptr inbounds nuw i8, ptr %104, i64 32 + %106 = load ptr, ptr %99, align 8, !tbaa !241 %107 = getelementptr inbounds nuw i8, ptr %106, i64 32 - %108 = load ptr, ptr %101, align 8, !tbaa !241 - %109 = getelementptr inbounds nuw i8, ptr %108, i64 32 - %110 = call noundef zeroext i1 @_ZNK4llvm14CombinerHelper14matchEqualDefsERKNS_14MachineOperandES3_(ptr noundef nonnull align 8 dereferenceable(72) %0, ptr noundef nonnull align 8 dereferenceable(32) %107, ptr noundef nonnull align 8 dereferenceable(32) %109) - br i1 %110, label %.critedge39, label %111 + %108 = call noundef zeroext i1 @_ZNK4llvm14CombinerHelper14matchEqualDefsERKNS_14MachineOperandES3_(ptr noundef nonnull align 8 dereferenceable(72) %0, ptr noundef nonnull align 8 dereferenceable(32) %105, ptr noundef nonnull align 8 dereferenceable(32) %107) + br i1 %108, label %.critedge39, label %109 -.critedge39: ; preds = %105, %74 - %.us-phi = phi ptr [ %57, %74 ], [ %89, %105 ] +.critedge39: ; preds = %103, %73 + %.us-phi = phi ptr [ %57, %73 ], [ %88, %103 ] store ptr %.us-phi, ptr %2, align 8, !tbaa !244 br label %.loopexit -111: ; preds = %105, %98, %.critedge, %.lr.ph.split - %112 = load ptr, ptr %88, align 8, !tbaa !220 +109: ; preds = %103, %96, %.critedge, %.lr.ph.split + %110 = load ptr, ptr %87, align 8, !tbaa !220 br label %.critedge2.i.i -.critedge2.i.i: ; preds = %.critedge2.i.i.backedge, %111 - %.pn.i.i = phi ptr [ %.sroa.041.050, %111 ], [ %storemerge.i.i, %.critedge2.i.i.backedge ] +.critedge2.i.i: ; preds = %.critedge2.i.i.backedge, %109 + %.pn.i.i = phi ptr [ %.sroa.041.052, %109 ], [ %storemerge.i.i, %.critedge2.i.i.backedge ] %storemerge.in.i.i = getelementptr inbounds nuw i8, ptr %.pn.i.i, i64 24 %storemerge.i.i = load ptr, ptr %storemerge.in.i.i, align 8, !tbaa !204 %.not.i.i = icmp eq ptr %storemerge.i.i, null - br i1 %.not.i.i, label %.loopexit, label %113 + br i1 %.not.i.i, label %.loopexit, label %111 -113: ; preds = %.critedge2.i.i - %114 = load i32, ptr %storemerge.i.i, align 8 - %115 = and i32 %114, -2130706432 - %or.cond.not.i.i = icmp eq i32 %115, 0 +111: ; preds = %.critedge2.i.i + %112 = load i32, ptr %storemerge.i.i, align 8 + %113 = and i32 %112, -2130706432 + %or.cond.not.i.i = icmp eq i32 %113, 0 br i1 %or.cond.not.i.i, label %_ZN4llvm19MachineRegisterInfo26defusechain_instr_iteratorILb1ELb0ELb1ELb0ELb1ELb0EE7advanceEv.exit.i, label %.critedge2.i.i.backedge -.critedge2.i.i.backedge: ; preds = %113, %_ZN4llvm19MachineRegisterInfo26defusechain_instr_iteratorILb1ELb0ELb1ELb0ELb1ELb0EE7advanceEv.exit.i +.critedge2.i.i.backedge: ; preds = %111, %_ZN4llvm19MachineRegisterInfo26defusechain_instr_iteratorILb1ELb0ELb1ELb0ELb1ELb0EE7advanceEv.exit.i br label %.critedge2.i.i, !llvm.loop !274 -_ZN4llvm19MachineRegisterInfo26defusechain_instr_iteratorILb1ELb0ELb1ELb0ELb1ELb0EE7advanceEv.exit.i: ; preds = %113 - %116 = getelementptr inbounds nuw i8, ptr %storemerge.i.i, i64 8 - %117 = load ptr, ptr %116, align 8, !tbaa !220 - %118 = icmp eq ptr %117, %112 - br i1 %118, label %.critedge2.i.i.backedge, label %.lr.ph.split, !llvm.loop !274 +_ZN4llvm19MachineRegisterInfo26defusechain_instr_iteratorILb1ELb0ELb1ELb0ELb1ELb0EE7advanceEv.exit.i: ; preds = %111 + %114 = getelementptr inbounds nuw i8, ptr %storemerge.i.i, i64 8 + %115 = load ptr, ptr %114, align 8, !tbaa !220 + %116 = icmp eq ptr %115, %110 + br i1 %116, label %.critedge2.i.i.backedge, label %.lr.ph.split, !llvm.loop !274 .loopexit: ; preds = %.critedge2.i.i.i.i, %.critedge2.i.i, %.critedge2.i.i.us, %38, %.critedge39, %_ZNK4llvm14CombinerHelper24isLegalOrBeforeLegalizerERKNS_13LegalityQueryE.exit %.0 = phi i1 [ false, %_ZNK4llvm14CombinerHelper24isLegalOrBeforeLegalizerERKNS_13LegalityQueryE.exit ], [ true, %.critedge39 ], [ false, %38 ], [ false, %.critedge2.i.i.us ], [ false, %.critedge2.i.i ], [ false, %.critedge2.i.i.i.i ] diff --git a/bench/llvm/optimized/RISCVAsmPrinter.ll b/bench/llvm/optimized/RISCVAsmPrinter.ll index 55ebe2fc723..23267fd251e 100644 --- a/bench/llvm/optimized/RISCVAsmPrinter.ll +++ b/bench/llvm/optimized/RISCVAsmPrinter.ll @@ -9537,20 +9537,20 @@ _ZN12_GLOBAL__N_115RISCVAsmPrinter14EmitToStreamerERN4llvm10MCStreamerERKNS1_6MC _ZN4llvm13MCInstBuilderD2Ev.exit: ; preds = %_ZN12_GLOBAL__N_115RISCVAsmPrinter14EmitToStreamerERN4llvm10MCStreamerERKNS1_6MCInstE.exit, %56 call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %6) #17 - %57 = select i1 %16, i32 33, i32 21 - %58 = getelementptr inbounds nuw i8, ptr %7, i64 16 - %59 = getelementptr inbounds nuw i8, ptr %7, i64 32 - %60 = getelementptr inbounds nuw i8, ptr %7, i64 24 - %61 = getelementptr inbounds nuw i8, ptr %7, i64 28 + %57 = getelementptr inbounds nuw i8, ptr %7, i64 16 + %58 = getelementptr inbounds nuw i8, ptr %7, i64 32 + %59 = getelementptr inbounds nuw i8, ptr %7, i64 24 + %60 = getelementptr inbounds nuw i8, ptr %7, i64 28 %.sroa.22.0..sroa_idx.i.i.i18 = getelementptr inbounds nuw i8, ptr %7, i64 40 - %62 = getelementptr inbounds nuw i8, ptr %3, i64 16 - %63 = getelementptr inbounds nuw i8, ptr %3, i64 32 - %64 = getelementptr inbounds nuw i8, ptr %3, i64 24 - %65 = getelementptr inbounds nuw i8, ptr %3, i64 28 - %66 = getelementptr inbounds nuw i8, ptr %7, i64 48 + %61 = getelementptr inbounds nuw i8, ptr %3, i64 16 + %62 = getelementptr inbounds nuw i8, ptr %3, i64 32 + %63 = getelementptr inbounds nuw i8, ptr %3, i64 24 + %64 = getelementptr inbounds nuw i8, ptr %3, i64 28 + %65 = getelementptr inbounds nuw i8, ptr %7, i64 48 %.sroa.22.0..sroa_idx.i.i.i23 = getelementptr inbounds nuw i8, ptr %7, i64 56 - %67 = getelementptr inbounds nuw i8, ptr %7, i64 64 + %66 = getelementptr inbounds nuw i8, ptr %7, i64 64 %.sroa.22.0..sroa_idx.i.i.i27 = getelementptr inbounds nuw i8, ptr %7, i64 72 + %67 = select i1 %16, i8 32, i8 20 br label %_ZN4llvm13MCInstBuilder6addImmEl.exit 68: ; preds = %_ZN4llvm13MCInstBuilderD2Ev.exit30 @@ -9567,30 +9567,30 @@ _ZN4llvm13MCInstBuilder6addImmEl.exit: ; preds = %_ZN4llvm13MCInstBui %73 = load ptr, ptr %17, align 8, !tbaa !11 call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %7) #17 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(128) %7, i8 0, i64 16, i1 false) - store ptr %59, ptr %58, align 8, !tbaa !257 - store i32 6, ptr %61, align 4, !tbaa !259 + store ptr %58, ptr %57, align 8, !tbaa !257 + store i32 6, ptr %60, align 4, !tbaa !259 store i32 11754, ptr %7, align 8, !tbaa !320 - store i8 1, ptr %59, align 8 + store i8 1, ptr %58, align 8 store i64 43, ptr %.sroa.22.0..sroa_idx.i.i.i18, align 8 - store i8 1, ptr %66, align 8 + store i8 1, ptr %65, align 8 store i64 43, ptr %.sroa.22.0..sroa_idx.i.i.i23, align 8 %.val.pre = load ptr, ptr %42, align 8, !tbaa !141 - store i8 2, ptr %67, align 8 + store i8 2, ptr %66, align 8 store i64 0, ptr %.sroa.22.0..sroa_idx.i.i.i27, align 8 - store i32 3, ptr %60, align 8, !tbaa !258 + store i32 3, ptr %59, align 8, !tbaa !258 call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %3) #17 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(128) %3, i8 0, i64 16, i1 false) - store ptr %63, ptr %62, align 8, !tbaa !257 - store i32 0, ptr %64, align 8, !tbaa !258 - store i32 6, ptr %65, align 4, !tbaa !259 + store ptr %62, ptr %61, align 8, !tbaa !257 + store i32 0, ptr %63, align 8, !tbaa !258 + store i32 6, ptr %64, align 4, !tbaa !259 %74 = call noundef zeroext i1 @_ZN4llvm8RISCVRVC8compressERNS_6MCInstERKS1_RKNS_15MCSubtargetInfoE(ptr noundef nonnull align 8 dereferenceable(128) %3, ptr noundef nonnull align 8 dereferenceable(128) %7, ptr noundef nonnull align 8 dereferenceable(304) %.val.pre) #17 %spec.select.i.i28 = select i1 %74, ptr %3, ptr %7 %75 = load ptr, ptr %73, align 8, !tbaa !13 %76 = getelementptr inbounds nuw i8, ptr %75, i64 1272 %77 = load ptr, ptr %76, align 8 call void %77(ptr noundef nonnull align 8 dereferenceable(296) %73, ptr noundef nonnull align 8 dereferenceable(128) %spec.select.i.i28, ptr noundef nonnull align 8 dereferenceable(304) %.val.pre) #17 - %78 = load ptr, ptr %62, align 8, !tbaa !257 - %79 = icmp eq ptr %78, %63 + %78 = load ptr, ptr %61, align 8, !tbaa !257 + %79 = icmp eq ptr %78, %62 br i1 %79, label %_ZN12_GLOBAL__N_115RISCVAsmPrinter14EmitToStreamerERN4llvm10MCStreamerERKNS1_6MCInstE.exit29, label %80 80: ; preds = %_ZN4llvm13MCInstBuilder6addImmEl.exit @@ -9599,8 +9599,8 @@ _ZN4llvm13MCInstBuilder6addImmEl.exit: ; preds = %_ZN4llvm13MCInstBui _ZN12_GLOBAL__N_115RISCVAsmPrinter14EmitToStreamerERN4llvm10MCStreamerERKNS1_6MCInstE.exit29: ; preds = %_ZN4llvm13MCInstBuilder6addImmEl.exit, %80 call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %3) #17 - %81 = load ptr, ptr %58, align 8, !tbaa !257 - %82 = icmp eq ptr %81, %59 + %81 = load ptr, ptr %57, align 8, !tbaa !257 + %82 = icmp eq ptr %81, %58 br i1 %82, label %_ZN4llvm13MCInstBuilderD2Ev.exit30, label %83 83: ; preds = %_ZN12_GLOBAL__N_115RISCVAsmPrinter14EmitToStreamerERN4llvm10MCStreamerERKNS1_6MCInstE.exit29 @@ -9609,10 +9609,9 @@ _ZN12_GLOBAL__N_115RISCVAsmPrinter14EmitToStreamerERN4llvm10MCStreamerERKNS1_6MC _ZN4llvm13MCInstBuilderD2Ev.exit30: ; preds = %_ZN12_GLOBAL__N_115RISCVAsmPrinter14EmitToStreamerERN4llvm10MCStreamerERKNS1_6MCInstE.exit29, %83 call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %7) #17 - %84 = add i8 %.037, 1 - %85 = sext i8 %84 to i32 - %86 = icmp sgt i32 %57, %85 - br i1 %86, label %_ZN4llvm13MCInstBuilder6addImmEl.exit, label %68, !llvm.loop !841 + %84 = add nuw nsw i8 %.037, 1 + %exitcond.not = icmp eq i8 %67, %.037 + br i1 %exitcond.not, label %68, label %_ZN4llvm13MCInstBuilder6addImmEl.exit, !llvm.loop !841 } declare noundef ptr @_ZN4llvm9MCContext16createTempSymbolERKNS_5TwineEb(ptr noundef nonnull align 8 dereferenceable(2432), ptr noundef nonnull align 8 dereferenceable(34), i1 noundef zeroext) local_unnamed_addr #2 diff --git a/bench/llvm/optimized/WasmObjectFile.ll b/bench/llvm/optimized/WasmObjectFile.ll index 365e0753129..a416bbb2bd7 100644 --- a/bench/llvm/optimized/WasmObjectFile.ll +++ b/bench/llvm/optimized/WasmObjectFile.ll @@ -2662,8 +2662,8 @@ switch.early.test.i.i.i.i: ; preds = %317 .critedge.i.i.i.i: ; preds = %317 %319 = icmp slt i64 %.048.i.i.i.i, 0 - %320 = select i1 %319, i64 127, i64 0 - %.not57.i.i.i.i = icmp eq i64 %320, %315 + %320 = select i1 %319, i8 127, i8 0 + %.not57.i.i.i.i = icmp eq i8 %320, %314 br i1 %.not57.i.i.i.i, label %321, label %328 321: ; preds = %.critedge.i.i.i.i, %switch.early.test.i.i.i.i, %switch.early.test.i.i.i.i, %switch.early.test.i.i.i.i, %switch.early.test.i.i.i.i, %312 @@ -2838,8 +2838,8 @@ switch.early.test.i.i.i.i149: ; preds = %384 .critedge.i.i.i.i146: ; preds = %384 %386 = icmp slt i64 %.048.i.i.i.i140, 0 - %387 = select i1 %386, i64 127, i64 0 - %.not57.i.i.i.i147 = icmp eq i64 %387, %382 + %387 = select i1 %386, i8 127, i8 0 + %.not57.i.i.i.i147 = icmp eq i8 %387, %381 br i1 %.not57.i.i.i.i147, label %388, label %395 388: ; preds = %.critedge.i.i.i.i146, %switch.early.test.i.i.i.i149, %switch.early.test.i.i.i.i149, %switch.early.test.i.i.i.i149, %switch.early.test.i.i.i.i149, %379 @@ -5211,8 +5211,8 @@ switch.early.test.i.i.i.i: ; preds = %119 .critedge.i.i.i.i: ; preds = %119 %121 = icmp slt i64 %.048.i.i.i.i, 0 - %122 = select i1 %121, i64 127, i64 0 - %.not57.i.i.i.i = icmp eq i64 %122, %117 + %122 = select i1 %121, i8 127, i8 0 + %.not57.i.i.i.i = icmp eq i8 %122, %116 br i1 %.not57.i.i.i.i, label %123, label %130 123: ; preds = %.critedge.i.i.i.i, %switch.early.test.i.i.i.i, %switch.early.test.i.i.i.i, %switch.early.test.i.i.i.i, %switch.early.test.i.i.i.i, %114 @@ -6594,8 +6594,8 @@ switch.early.test.i.i.i.i: ; preds = %210 .critedge.i.i.i.i: ; preds = %210 %212 = icmp slt i64 %.048.i.i.i.i, 0 - %213 = select i1 %212, i64 127, i64 0 - %.not57.i.i.i.i = icmp eq i64 %213, %208 + %213 = select i1 %212, i8 127, i8 0 + %.not57.i.i.i.i = icmp eq i8 %213, %207 br i1 %.not57.i.i.i.i, label %214, label %221 214: ; preds = %.critedge.i.i.i.i, %switch.early.test.i.i.i.i, %switch.early.test.i.i.i.i, %switch.early.test.i.i.i.i, %switch.early.test.i.i.i.i, %205 @@ -6766,8 +6766,8 @@ switch.early.test.i.i.i.i116: ; preds = %269 .critedge.i.i.i.i113: ; preds = %269 %271 = icmp slt i64 %.048.i.i.i.i107, 0 - %272 = select i1 %271, i64 127, i64 0 - %.not57.i.i.i.i114 = icmp eq i64 %272, %267 + %272 = select i1 %271, i8 127, i8 0 + %.not57.i.i.i.i114 = icmp eq i8 %272, %266 br i1 %.not57.i.i.i.i114, label %273, label %280 273: ; preds = %.critedge.i.i.i.i113, %switch.early.test.i.i.i.i116, %switch.early.test.i.i.i.i116, %switch.early.test.i.i.i.i116, %switch.early.test.i.i.i.i116, %264 @@ -17154,8 +17154,8 @@ switch.early.test.i.i.i: ; preds = %364 .critedge.i.i.i: ; preds = %364 %366 = icmp slt i64 %.048.i.i.i, 0 - %367 = select i1 %366, i64 127, i64 0 - %.not57.i.i.i = icmp eq i64 %367, %362 + %367 = select i1 %366, i8 127, i8 0 + %.not57.i.i.i = icmp eq i8 %367, %361 br i1 %.not57.i.i.i, label %368, label %375 368: ; preds = %.critedge.i.i.i, %switch.early.test.i.i.i, %switch.early.test.i.i.i, %switch.early.test.i.i.i, %switch.early.test.i.i.i, %359 @@ -17321,8 +17321,8 @@ switch.early.test.i.i.i160: ; preds = %438 .critedge.i.i.i157: ; preds = %438 %440 = icmp slt i64 %.048.i.i.i149, 0 - %441 = select i1 %440, i64 127, i64 0 - %.not57.i.i.i158 = icmp eq i64 %441, %436 + %441 = select i1 %440, i8 127, i8 0 + %.not57.i.i.i158 = icmp eq i8 %441, %435 br i1 %.not57.i.i.i158, label %442, label %449 442: ; preds = %.critedge.i.i.i157, %switch.early.test.i.i.i160, %switch.early.test.i.i.i160, %switch.early.test.i.i.i160, %switch.early.test.i.i.i160, %433 @@ -17775,8 +17775,8 @@ switch.early.test.i.i: ; preds = %13 .critedge.i.i: ; preds = %13 %15 = icmp slt i64 %.048.i.i, 0 - %16 = select i1 %15, i64 127, i64 0 - %.not57.i.i = icmp eq i64 %16, %11 + %16 = select i1 %15, i8 127, i8 0 + %.not57.i.i = icmp eq i8 %16, %10 br i1 %.not57.i.i, label %17, label %24 17: ; preds = %.critedge.i.i, %switch.early.test.i.i, %switch.early.test.i.i, %switch.early.test.i.i, %switch.early.test.i.i, %8 @@ -18037,8 +18037,8 @@ switch.early.test.i.i.i.i: ; preds = %37 .critedge.i.i.i.i: ; preds = %37 %39 = icmp slt i64 %.048.i.i.i.i, 0 - %40 = select i1 %39, i64 127, i64 0 - %.not57.i.i.i.i = icmp eq i64 %40, %35 + %40 = select i1 %39, i8 127, i8 0 + %.not57.i.i.i.i = icmp eq i8 %40, %34 br i1 %.not57.i.i.i.i, label %41, label %48 41: ; preds = %.critedge.i.i.i.i, %switch.early.test.i.i.i.i, %switch.early.test.i.i.i.i, %switch.early.test.i.i.i.i, %switch.early.test.i.i.i.i, %32 @@ -18157,8 +18157,8 @@ switch.early.test.i.i: ; preds = %13 .critedge.i.i: ; preds = %13 %15 = icmp slt i64 %.048.i.i, 0 - %16 = select i1 %15, i64 127, i64 0 - %.not57.i.i = icmp eq i64 %16, %11 + %16 = select i1 %15, i8 127, i8 0 + %.not57.i.i = icmp eq i8 %16, %10 br i1 %.not57.i.i, label %17, label %24 17: ; preds = %.critedge.i.i, %switch.early.test.i.i, %switch.early.test.i.i, %switch.early.test.i.i, %switch.early.test.i.i, %8 @@ -18465,8 +18465,8 @@ switch.early.test.i.i.i.i: ; preds = %40 .critedge.i.i.i.i: ; preds = %40 %42 = icmp slt i64 %.048.i.i.i.i, 0 - %43 = select i1 %42, i64 127, i64 0 - %.not57.i.i.i.i = icmp eq i64 %43, %38 + %43 = select i1 %42, i8 127, i8 0 + %.not57.i.i.i.i = icmp eq i8 %43, %37 br i1 %.not57.i.i.i.i, label %44, label %51 44: ; preds = %.critedge.i.i.i.i, %switch.early.test.i.i.i.i, %switch.early.test.i.i.i.i, %switch.early.test.i.i.i.i, %switch.early.test.i.i.i.i, %35 @@ -18587,8 +18587,8 @@ switch.early.test.i.i.i: ; preds = %20 .critedge.i.i.i: ; preds = %20 %22 = icmp slt i64 %.048.i.i.i, 0 - %23 = select i1 %22, i64 127, i64 0 - %.not57.i.i.i = icmp eq i64 %23, %18 + %23 = select i1 %22, i8 127, i8 0 + %.not57.i.i.i = icmp eq i8 %23, %17 br i1 %.not57.i.i.i, label %24, label %31 24: ; preds = %.critedge.i.i.i, %switch.early.test.i.i.i, %switch.early.test.i.i.i, %switch.early.test.i.i.i, %switch.early.test.i.i.i, %15 @@ -18797,8 +18797,8 @@ switch.early.test.i.i.i.i: ; preds = %103 .critedge.i.i.i.i: ; preds = %103 %105 = icmp slt i64 %.048.i.i.i.i, 0 - %106 = select i1 %105, i64 127, i64 0 - %.not57.i.i.i.i = icmp eq i64 %106, %101 + %106 = select i1 %105, i8 127, i8 0 + %.not57.i.i.i.i = icmp eq i8 %106, %100 br i1 %.not57.i.i.i.i, label %107, label %114 107: ; preds = %.critedge.i.i.i.i, %switch.early.test.i.i.i.i, %switch.early.test.i.i.i.i, %switch.early.test.i.i.i.i, %switch.early.test.i.i.i.i, %98 diff --git a/bench/llvm/optimized/X86ISelLoweringCall.ll b/bench/llvm/optimized/X86ISelLoweringCall.ll index ba5545c2f0a..f8e0081f9cc 100644 --- a/bench/llvm/optimized/X86ISelLoweringCall.ll +++ b/bench/llvm/optimized/X86ISelLoweringCall.ll @@ -13820,7 +13820,7 @@ _ZN4llvm11SmallVectorINS_11CCValAssignELj16EED2Ev.exit240: ; preds = %.critedge2 %144 = trunc i64 %143 to i32 %145 = load i32, ptr %79, align 8, !tbaa !584 %.not.i241 = icmp eq i32 %145, 0 - br i1 %.not.i241, label %226, label %146 + br i1 %.not.i241, label %227, label %146 146: ; preds = %141 %.not219 = icmp eq i32 %144, 0 @@ -13936,113 +13936,116 @@ _ZN4llvm3isaINS_19GlobalAddressSDNodeENS_7SDValueEEEbRKT0_.exit: ; preds = %191 br i1 %186, label %197, label %.loopexit 197: ; preds = %196, %_ZN4llvm3isaINS_19GlobalAddressSDNodeENS_7SDValueEEEbRKT0_.exit - %198 = select i1 %186, i32 2, i32 3 - %199 = load ptr, ptr %3, align 8, !tbaa !582 - %200 = getelementptr inbounds nuw i8, ptr %3, i64 8 - %201 = load i32, ptr %200, align 8, !tbaa !584 - %202 = zext i32 %201 to i64 - %.idx298 = shl nuw nsw i64 %202, 5 - %203 = getelementptr inbounds nuw i8, ptr %199, i64 %.idx298 - %.not221292 = icmp eq i32 %201, 0 + %198 = load ptr, ptr %3, align 8, !tbaa !582 + %199 = getelementptr inbounds nuw i8, ptr %3, i64 8 + %200 = load i32, ptr %199, align 8, !tbaa !584 + %201 = zext i32 %200 to i64 + %.idx298 = shl nuw nsw i64 %201, 5 + %202 = getelementptr inbounds nuw i8, ptr %198, i64 %.idx298 + %.not221292 = icmp eq i32 %200, 0 br i1 %.not221292, label %.loopexit, label %.lr.ph295 -.lr.ph295: ; preds = %197, %221 - %.0203294 = phi ptr [ %222, %221 ], [ %199, %197 ] - %.0205293 = phi i32 [ %.1206.ph, %221 ], [ 0, %197 ] - %204 = getelementptr inbounds nuw i8, ptr %.0203294, i64 8 - %205 = load i8, ptr %204, align 8, !tbaa !621 - br label %206 - -206: ; preds = %212, %.lr.ph295 - %.0813.i.i.i249 = phi i64 [ 0, %.lr.ph295 ], [ %213, %212 ] - %.0912.i.i.i250 = phi i64 [ 3, %.lr.ph295 ], [ %.1.i.i.i251, %212 ] - %207 = getelementptr inbounds nuw [3 x i8], ptr @__const._ZSt24__find_uniq_type_in_packIN4llvm8RegisterEJS1_ljEEmv.__found, i64 0, i64 %.0813.i.i.i249 - %208 = load i8, ptr %207, align 1, !tbaa !740, !range !153, !noundef !154 - %209 = trunc nuw i8 %208 to i1 - br i1 %209, label %210, label %212 - -210: ; preds = %206 - %211 = icmp samesign ult i64 %.0912.i.i.i250, 3 - br i1 %211, label %_ZNK4llvm11CCValAssign8isRegLocEv.exit254, label %212 - -212: ; preds = %210, %206 - %.1.i.i.i251 = phi i64 [ %.0912.i.i.i250, %206 ], [ %.0813.i.i.i249, %210 ] - %213 = add nuw nsw i64 %.0813.i.i.i249, 1 - %exitcond.i.i.i252 = icmp eq i64 %213, 3 - br i1 %exitcond.i.i.i252, label %_ZNK4llvm11CCValAssign8isRegLocEv.exit254, label %206, !llvm.loop !741 - -_ZNK4llvm11CCValAssign8isRegLocEv.exit254: ; preds = %210, %212 - %spec.select.i.i.i253 = phi i64 [ 3, %210 ], [ %.1.i.i.i251, %212 ] - %214 = zext i8 %205 to i64 - %215 = icmp eq i64 %spec.select.i.i.i253, %214 - br i1 %215, label %216, label %221 - -216: ; preds = %_ZNK4llvm11CCValAssign8isRegLocEv.exit254 - %.not.i.i.i255 = icmp eq i8 %205, 0 - br i1 %.not.i.i.i255, label %_ZNK4llvm11CCValAssign9getLocRegEv.exit257, label %217 - -217: ; preds = %216 +.lr.ph295: ; preds = %197 + %203 = select i1 %186, i32 1, i32 2 + br label %204 + +204: ; preds = %.lr.ph295, %222 + %.0203294 = phi ptr [ %198, %.lr.ph295 ], [ %223, %222 ] + %.0205293 = phi i32 [ 0, %.lr.ph295 ], [ %.1206.ph, %222 ] + %205 = getelementptr inbounds nuw i8, ptr %.0203294, i64 8 + %206 = load i8, ptr %205, align 8, !tbaa !621 + br label %207 + +207: ; preds = %213, %204 + %.0813.i.i.i249 = phi i64 [ 0, %204 ], [ %214, %213 ] + %.0912.i.i.i250 = phi i64 [ 3, %204 ], [ %.1.i.i.i251, %213 ] + %208 = getelementptr inbounds nuw [3 x i8], ptr @__const._ZSt24__find_uniq_type_in_packIN4llvm8RegisterEJS1_ljEEmv.__found, i64 0, i64 %.0813.i.i.i249 + %209 = load i8, ptr %208, align 1, !tbaa !740, !range !153, !noundef !154 + %210 = trunc nuw i8 %209 to i1 + br i1 %210, label %211, label %213 + +211: ; preds = %207 + %212 = icmp samesign ult i64 %.0912.i.i.i250, 3 + br i1 %212, label %_ZNK4llvm11CCValAssign8isRegLocEv.exit254, label %213 + +213: ; preds = %211, %207 + %.1.i.i.i251 = phi i64 [ %.0912.i.i.i250, %207 ], [ %.0813.i.i.i249, %211 ] + %214 = add nuw nsw i64 %.0813.i.i.i249, 1 + %exitcond.i.i.i252 = icmp eq i64 %214, 3 + br i1 %exitcond.i.i.i252, label %_ZNK4llvm11CCValAssign8isRegLocEv.exit254, label %207, !llvm.loop !741 + +_ZNK4llvm11CCValAssign8isRegLocEv.exit254: ; preds = %211, %213 + %spec.select.i.i.i253 = phi i64 [ 3, %211 ], [ %.1.i.i.i251, %213 ] + %215 = zext i8 %206 to i64 + %216 = icmp eq i64 %spec.select.i.i.i253, %215 + br i1 %216, label %217, label %222 + +217: ; preds = %_ZNK4llvm11CCValAssign8isRegLocEv.exit254 + %.not.i.i.i255 = icmp eq i8 %206, 0 + br i1 %.not.i.i.i255, label %_ZNK4llvm11CCValAssign9getLocRegEv.exit257, label %218 + +218: ; preds = %217 call void @abort() #25 unreachable -_ZNK4llvm11CCValAssign9getLocRegEv.exit257: ; preds = %216 +_ZNK4llvm11CCValAssign9getLocRegEv.exit257: ; preds = %217 %.sroa.0.0.copyload.i256 = load i32, ptr %.0203294, align 4, !tbaa !163 - switch i32 %.sroa.0.0.copyload.i256, label %221 [ - i32 22, label %218 - i32 27, label %218 - i32 25, label %218 + switch i32 %.sroa.0.0.copyload.i256, label %222 [ + i32 22, label %219 + i32 27, label %219 + i32 25, label %219 ] -218: ; preds = %_ZNK4llvm11CCValAssign9getLocRegEv.exit257, %_ZNK4llvm11CCValAssign9getLocRegEv.exit257, %_ZNK4llvm11CCValAssign9getLocRegEv.exit257 - %219 = add i32 %.0205293, 1 - %220 = icmp eq i32 %219, %198 - br i1 %220, label %.critedge235, label %221 - -221: ; preds = %_ZNK4llvm11CCValAssign8isRegLocEv.exit254, %_ZNK4llvm11CCValAssign9getLocRegEv.exit257, %218 - %.1206.ph = phi i32 [ %219, %218 ], [ %.0205293, %_ZNK4llvm11CCValAssign9getLocRegEv.exit257 ], [ %.0205293, %_ZNK4llvm11CCValAssign8isRegLocEv.exit254 ] - %222 = getelementptr inbounds nuw i8, ptr %.0203294, i64 32 - %.not221 = icmp eq ptr %222, %203 - br i1 %.not221, label %.loopexit, label %.lr.ph295 - -.loopexit: ; preds = %221, %197, %_ZN4llvm3isaINS_19GlobalAddressSDNodeENS_7SDValueEEEbRKT0_.exit, %196, %.critedge233 - %223 = getelementptr inbounds nuw i8, ptr %23, i64 32 - %224 = load ptr, ptr %223, align 8, !tbaa !623 - %225 = call noundef zeroext i1 @_ZNK4llvm14TargetLowering20parametersInCSRMatchERKNS_19MachineRegisterInfoEPKjRKNS_15SmallVectorImplINS_11CCValAssignEEERKNS6_INS_7SDValueEEE(ptr noundef nonnull align 8 dereferenceable(412423) %0, ptr noundef nonnull align 8 dereferenceable(504) %224, ptr noundef %135, ptr noundef nonnull align 8 dereferenceable(16) %3, ptr noundef nonnull align 8 dereferenceable(16) %11) #24 - br i1 %225, label %226, label %.critedge235 - -226: ; preds = %.loopexit, %141 - %227 = load ptr, ptr %48, align 8, !tbaa !12 - %228 = getelementptr inbounds nuw i8, ptr %227, i64 477 - %229 = load i8, ptr %228, align 1, !tbaa !152, !range !153, !noundef !154 - %230 = trunc nuw i8 %229 to i1 - %231 = getelementptr inbounds nuw i8, ptr %23, i64 8 - %232 = load ptr, ptr %231, align 8, !tbaa !745 - %233 = getelementptr inbounds nuw i8, ptr %232, i64 864 - %234 = load i16, ptr %233, align 8 - %235 = and i16 %234, 512 - %236 = icmp ne i16 %235, 0 - %237 = call noundef zeroext i1 @_ZN4llvm3X8611isCalleePopEjbbb(i32 noundef %15, i1 noundef zeroext %230, i1 noundef zeroext %19, i1 noundef zeroext %236) - %238 = load ptr, ptr %73, align 8, !tbaa !587 - %239 = getelementptr inbounds nuw i8, ptr %238, i64 44 - %240 = load i32, ptr %239, align 4, !tbaa !589 - %.not223 = icmp eq i32 %240, 0 - br i1 %.not223, label %244, label %241 - -241: ; preds = %226 - %242 = icmp eq i32 %240, %144 - %243 = and i1 %237, %242 - br i1 %243, label %246, label %.critedge235 - -244: ; preds = %226 - %245 = icmp ne i32 %144, 0 - %or.cond28 = and i1 %245, %237 - br i1 %or.cond28, label %.critedge235, label %246 - -246: ; preds = %244, %241 +219: ; preds = %_ZNK4llvm11CCValAssign9getLocRegEv.exit257, %_ZNK4llvm11CCValAssign9getLocRegEv.exit257, %_ZNK4llvm11CCValAssign9getLocRegEv.exit257 + %220 = add i32 %.0205293, 1 + %221 = icmp eq i32 %203, %.0205293 + br i1 %221, label %.critedge235, label %222 + +222: ; preds = %_ZNK4llvm11CCValAssign8isRegLocEv.exit254, %_ZNK4llvm11CCValAssign9getLocRegEv.exit257, %219 + %.1206.ph = phi i32 [ %220, %219 ], [ %.0205293, %_ZNK4llvm11CCValAssign9getLocRegEv.exit257 ], [ %.0205293, %_ZNK4llvm11CCValAssign8isRegLocEv.exit254 ] + %223 = getelementptr inbounds nuw i8, ptr %.0203294, i64 32 + %.not221 = icmp eq ptr %223, %202 + br i1 %.not221, label %.loopexit, label %204 + +.loopexit: ; preds = %222, %197, %_ZN4llvm3isaINS_19GlobalAddressSDNodeENS_7SDValueEEEbRKT0_.exit, %196, %.critedge233 + %224 = getelementptr inbounds nuw i8, ptr %23, i64 32 + %225 = load ptr, ptr %224, align 8, !tbaa !623 + %226 = call noundef zeroext i1 @_ZNK4llvm14TargetLowering20parametersInCSRMatchERKNS_19MachineRegisterInfoEPKjRKNS_15SmallVectorImplINS_11CCValAssignEEERKNS6_INS_7SDValueEEE(ptr noundef nonnull align 8 dereferenceable(412423) %0, ptr noundef nonnull align 8 dereferenceable(504) %225, ptr noundef %135, ptr noundef nonnull align 8 dereferenceable(16) %3, ptr noundef nonnull align 8 dereferenceable(16) %11) #24 + br i1 %226, label %227, label %.critedge235 + +227: ; preds = %.loopexit, %141 + %228 = load ptr, ptr %48, align 8, !tbaa !12 + %229 = getelementptr inbounds nuw i8, ptr %228, i64 477 + %230 = load i8, ptr %229, align 1, !tbaa !152, !range !153, !noundef !154 + %231 = trunc nuw i8 %230 to i1 + %232 = getelementptr inbounds nuw i8, ptr %23, i64 8 + %233 = load ptr, ptr %232, align 8, !tbaa !745 + %234 = getelementptr inbounds nuw i8, ptr %233, i64 864 + %235 = load i16, ptr %234, align 8 + %236 = and i16 %235, 512 + %237 = icmp ne i16 %236, 0 + %238 = call noundef zeroext i1 @_ZN4llvm3X8611isCalleePopEjbbb(i32 noundef %15, i1 noundef zeroext %231, i1 noundef zeroext %19, i1 noundef zeroext %237) + %239 = load ptr, ptr %73, align 8, !tbaa !587 + %240 = getelementptr inbounds nuw i8, ptr %239, i64 44 + %241 = load i32, ptr %240, align 4, !tbaa !589 + %.not223 = icmp eq i32 %241, 0 + br i1 %.not223, label %245, label %242 + +242: ; preds = %227 + %243 = icmp eq i32 %241, %144 + %244 = and i1 %238, %243 + br i1 %244, label %247, label %.critedge235 + +245: ; preds = %227 + %246 = icmp ne i32 %144, 0 + %or.cond28 = and i1 %246, %238 + br i1 %or.cond28, label %.critedge235, label %247 + +247: ; preds = %245, %242 br label %.critedge235 -.critedge235: ; preds = %_ZNK4llvm11CCValAssign8isRegLocEv.exit, %_ZNK4llvm11CCValAssign15getLocMemOffsetEv.exit, %.lr.ph291, %218, %_ZN4llvm11SmallVectorINS_11CCValAssignELj16EED2Ev.exit, %246, %241, %244, %_ZNK4llvm18TargetRegisterInfo19hasStackRealignmentERKNS_15MachineFunctionE.exit.thread, %34, %_ZNK4llvm18TargetRegisterInfo19hasStackRealignmentERKNS_15MachineFunctionE.exit, %.critedge276, %.loopexit, %139, %136, %81, %_ZL15canGuaranteeTCOj.exit, %41, %5 - %.0 = phi i1 [ false, %5 ], [ false, %34 ], [ false, %41 ], [ %or.cond18, %_ZL15canGuaranteeTCOj.exit ], [ false, %_ZNK4llvm18TargetRegisterInfo19hasStackRealignmentERKNS_15MachineFunctionE.exit ], [ false, %_ZNK4llvm18TargetRegisterInfo19hasStackRealignmentERKNS_15MachineFunctionE.exit.thread ], [ false, %81 ], [ false, %_ZN4llvm11SmallVectorINS_11CCValAssignELj16EED2Ev.exit ], [ false, %.critedge276 ], [ false, %136 ], [ false, %139 ], [ false, %.loopexit ], [ true, %246 ], [ false, %241 ], [ false, %244 ], [ false, %218 ], [ false, %.lr.ph291 ], [ false, %_ZNK4llvm11CCValAssign15getLocMemOffsetEv.exit ], [ false, %_ZNK4llvm11CCValAssign8isRegLocEv.exit ] +.critedge235: ; preds = %_ZNK4llvm11CCValAssign8isRegLocEv.exit, %_ZNK4llvm11CCValAssign15getLocMemOffsetEv.exit, %.lr.ph291, %219, %_ZN4llvm11SmallVectorINS_11CCValAssignELj16EED2Ev.exit, %247, %242, %245, %_ZNK4llvm18TargetRegisterInfo19hasStackRealignmentERKNS_15MachineFunctionE.exit.thread, %34, %_ZNK4llvm18TargetRegisterInfo19hasStackRealignmentERKNS_15MachineFunctionE.exit, %.critedge276, %.loopexit, %139, %136, %81, %_ZL15canGuaranteeTCOj.exit, %41, %5 + %.0 = phi i1 [ false, %5 ], [ false, %34 ], [ false, %41 ], [ %or.cond18, %_ZL15canGuaranteeTCOj.exit ], [ false, %_ZNK4llvm18TargetRegisterInfo19hasStackRealignmentERKNS_15MachineFunctionE.exit ], [ false, %_ZNK4llvm18TargetRegisterInfo19hasStackRealignmentERKNS_15MachineFunctionE.exit.thread ], [ false, %81 ], [ false, %_ZN4llvm11SmallVectorINS_11CCValAssignELj16EED2Ev.exit ], [ false, %.critedge276 ], [ false, %136 ], [ false, %139 ], [ false, %.loopexit ], [ true, %247 ], [ false, %242 ], [ false, %245 ], [ false, %219 ], [ false, %.lr.ph291 ], [ false, %_ZNK4llvm11CCValAssign15getLocMemOffsetEv.exit ], [ false, %_ZNK4llvm11CCValAssign8isRegLocEv.exit ] ret i1 %.0 } diff --git a/bench/llvm/optimized/X86InstrInfo.ll b/bench/llvm/optimized/X86InstrInfo.ll index 03c6a7cfc28..a3920626e1f 100644 --- a/bench/llvm/optimized/X86InstrInfo.ll +++ b/bench/llvm/optimized/X86InstrInfo.ll @@ -13356,69 +13356,68 @@ _ZN4llvm26MachineInstrBundleIteratorINS_12MachineInstrELb1EEppEv.exit: ; preds = %80 = getelementptr inbounds nuw i8, ptr %79, i64 477 %81 = load i8, ptr %80, align 1, !tbaa !88, !range !68, !noundef !69 %82 = trunc nuw i8 %81 to i1 - %83 = select i1 %82, i32 5016, i32 5011 - %84 = getelementptr inbounds nuw i8, ptr %.sroa.072.093, i64 68 - %85 = load i16, ptr %84, align 4, !tbaa !221 - %86 = zext i16 %85 to i32 - %87 = icmp eq i32 %83, %86 - br i1 %87, label %88, label %.thread80 - -88: ; preds = %.loopexit - %89 = getelementptr inbounds nuw i8, ptr %.sroa.072.093, i64 40 - %90 = load i24, ptr %89, align 8 - %91 = icmp eq i24 %90, 3 - br i1 %91, label %92, label %.thread80 + %83 = getelementptr inbounds nuw i8, ptr %.sroa.072.093, i64 68 + %84 = load i16, ptr %83, align 4, !tbaa !221 + %85 = select i1 %82, i16 5016, i16 5011 + %86 = icmp eq i16 %85, %84 + br i1 %86, label %87, label %.thread80 + +87: ; preds = %.loopexit + %88 = getelementptr inbounds nuw i8, ptr %.sroa.072.093, i64 40 + %89 = load i24, ptr %88, align 8 + %90 = icmp eq i24 %89, 3 + br i1 %90, label %91, label %.thread80 + +91: ; preds = %87 + %92 = getelementptr inbounds nuw i8, ptr %.sroa.072.093, i64 32 + %93 = load ptr, ptr %92, align 8, !tbaa !239 + %94 = getelementptr inbounds nuw i8, ptr %93, i64 32 + %95 = call noundef zeroext i1 @_ZNK4llvm14MachineOperand13isIdenticalToERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %93, ptr noundef nonnull align 8 dereferenceable(32) %94) #32 + br i1 %95, label %96, label %.thread80 + +96: ; preds = %91 + %97 = load ptr, ptr %5, align 8, !tbaa !45 + %98 = getelementptr inbounds nuw i8, ptr %97, i64 16 + %99 = load i64, ptr %98, align 8, !tbaa !240 + %100 = and i64 %99, -2 + %switch = icmp eq i64 %100, 4 + br i1 %switch, label %101, label %.thread80 -92: ; preds = %88 - %93 = getelementptr inbounds nuw i8, ptr %.sroa.072.093, i64 32 - %94 = load ptr, ptr %93, align 8, !tbaa !239 - %95 = getelementptr inbounds nuw i8, ptr %94, i64 32 - %96 = call noundef zeroext i1 @_ZNK4llvm14MachineOperand13isIdenticalToERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %94, ptr noundef nonnull align 8 dereferenceable(32) %95) #32 - br i1 %96, label %97, label %.thread80 - -97: ; preds = %92 - %98 = load ptr, ptr %5, align 8, !tbaa !45 - %99 = getelementptr inbounds nuw i8, ptr %98, i64 16 - %100 = load i64, ptr %99, align 8, !tbaa !240 - %101 = and i64 %100, -2 - %switch = icmp eq i64 %101, 4 - br i1 %switch, label %102, label %.thread80 - -102: ; preds = %97 - %103 = load ptr, ptr %93, align 8, !tbaa !239 - %104 = getelementptr inbounds nuw i8, ptr %2, i64 8 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %104, ptr noundef nonnull align 8 dereferenceable(32) %103, i64 32, i1 false), !tbaa.struct !418 - %105 = getelementptr inbounds nuw i8, ptr %2, i64 40 - store i32 1, ptr %105, align 8, !tbaa !240 +101: ; preds = %96 + %102 = load ptr, ptr %92, align 8, !tbaa !239 + %103 = getelementptr inbounds nuw i8, ptr %2, i64 8 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %103, ptr noundef nonnull align 8 dereferenceable(32) %102, i64 32, i1 false), !tbaa.struct !418 + %104 = getelementptr inbounds nuw i8, ptr %2, i64 40 + store i32 1, ptr %104, align 8, !tbaa !240 %.sroa.566.0..sroa_idx = getelementptr inbounds nuw i8, ptr %2, i64 48 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.566.0..sroa_idx, i8 0, i64 16, i1 false) - %106 = load i64, ptr %99, align 8, !tbaa !240 - %107 = icmp eq i64 %106, 5 - %108 = zext i1 %107 to i32 - store i32 %108, ptr %2, align 8, !tbaa !824 + %105 = load i64, ptr %98, align 8, !tbaa !240 + %106 = icmp eq i64 %105, 5 + %107 = zext i1 %106 to i32 + store i32 %107, ptr %2, align 8, !tbaa !824 br label %.thread80 -.thread80: ; preds = %_ZN4llvm26MachineInstrBundleIteratorINS_12MachineInstrELb1EEppEv.exit, %_ZN4llvm26MachineInstrBundleIteratorINS_12MachineInstrELb1EEppEv.exit.i.i.i.i, %97, %.loopexit, %88, %92, %102, %4 - %.0 = phi i1 [ true, %4 ], [ false, %102 ], [ true, %92 ], [ true, %88 ], [ true, %.loopexit ], [ true, %97 ], [ true, %_ZN4llvm26MachineInstrBundleIteratorINS_12MachineInstrELb1EEppEv.exit.i.i.i.i ], [ true, %_ZN4llvm26MachineInstrBundleIteratorINS_12MachineInstrELb1EEppEv.exit ] - %109 = load ptr, ptr %6, align 8, !tbaa !45 - %110 = icmp eq ptr %109, %10 - br i1 %110, label %_ZN4llvm11SmallVectorIPNS_12MachineInstrELj4EED2Ev.exit, label %111 +.thread80: ; preds = %_ZN4llvm26MachineInstrBundleIteratorINS_12MachineInstrELb1EEppEv.exit, %_ZN4llvm26MachineInstrBundleIteratorINS_12MachineInstrELb1EEppEv.exit.i.i.i.i, %96, %.loopexit, %87, %91, %101, %4 + %.0 = phi i1 [ true, %4 ], [ false, %101 ], [ true, %91 ], [ true, %87 ], [ true, %.loopexit ], [ true, %96 ], [ true, %_ZN4llvm26MachineInstrBundleIteratorINS_12MachineInstrELb1EEppEv.exit.i.i.i.i ], [ true, %_ZN4llvm26MachineInstrBundleIteratorINS_12MachineInstrELb1EEppEv.exit ] + %108 = load ptr, ptr %6, align 8, !tbaa !45 + %109 = icmp eq ptr %108, %10 + br i1 %109, label %_ZN4llvm11SmallVectorIPNS_12MachineInstrELj4EED2Ev.exit, label %110 -111: ; preds = %.thread80 - call void @free(ptr noundef %109) #32 +110: ; preds = %.thread80 + call void @free(ptr noundef %108) #32 br label %_ZN4llvm11SmallVectorIPNS_12MachineInstrELj4EED2Ev.exit -_ZN4llvm11SmallVectorIPNS_12MachineInstrELj4EED2Ev.exit: ; preds = %.thread80, %111 +_ZN4llvm11SmallVectorIPNS_12MachineInstrELj4EED2Ev.exit: ; preds = %.thread80, %110 call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %6) #32 - %112 = load ptr, ptr %5, align 8, !tbaa !45 - %113 = icmp eq ptr %112, %7 - br i1 %113, label %_ZN4llvm11SmallVectorINS_14MachineOperandELj4EED2Ev.exit, label %114 + %111 = load ptr, ptr %5, align 8, !tbaa !45 + %112 = icmp eq ptr %111, %7 + br i1 %112, label %_ZN4llvm11SmallVectorINS_14MachineOperandELj4EED2Ev.exit, label %113 -114: ; preds = %_ZN4llvm11SmallVectorIPNS_12MachineInstrELj4EED2Ev.exit - call void @free(ptr noundef %112) #32 +113: ; preds = %_ZN4llvm11SmallVectorIPNS_12MachineInstrELj4EED2Ev.exit + call void @free(ptr noundef %111) #32 br label %_ZN4llvm11SmallVectorINS_14MachineOperandELj4EED2Ev.exit -_ZN4llvm11SmallVectorINS_14MachineOperandELj4EED2Ev.exit: ; preds = %_ZN4llvm11SmallVectorIPNS_12MachineInstrELj4EED2Ev.exit, %114 +_ZN4llvm11SmallVectorINS_14MachineOperandELj4EED2Ev.exit: ; preds = %_ZN4llvm11SmallVectorIPNS_12MachineInstrELj4EED2Ev.exit, %113 call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %5) #32 ret i1 %.0 } diff --git a/bench/llvm/optimized/X86ReturnThunks.ll b/bench/llvm/optimized/X86ReturnThunks.ll index b8bee2e2677..94f8d17cd15 100644 --- a/bench/llvm/optimized/X86ReturnThunks.ll +++ b/bench/llvm/optimized/X86ReturnThunks.ll @@ -239,21 +239,24 @@ _ZN4llvmeqENS_9StringRefES0_.exit.thread63: ; preds = %11, %_ZN4llvmeqENS_ %18 = load ptr, ptr %17, align 8, !tbaa !144 %19 = getelementptr inbounds nuw i8, ptr %18, i64 552 %20 = load i32, ptr %19, align 8, !tbaa !145 - %21 = icmp eq i32 %20, 38 - %22 = select i1 %21, i32 3739, i32 3738 call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %4) #13 - %23 = getelementptr inbounds nuw i8, ptr %4, i64 16 - store ptr %23, ptr %4, align 8, !tbaa !155 - %24 = getelementptr inbounds nuw i8, ptr %4, i64 8 - store i32 0, ptr %24, align 8, !tbaa !156 - %25 = getelementptr inbounds nuw i8, ptr %4, i64 12 - store i32 16, ptr %25, align 4, !tbaa !157 - %26 = getelementptr inbounds nuw i8, ptr %1, i64 328 - %27 = getelementptr inbounds nuw i8, ptr %1, i64 320 - %.sroa.058.072 = load ptr, ptr %26, align 8, !tbaa !158 - %.not6873 = icmp eq ptr %.sroa.058.072, %27 + %21 = getelementptr inbounds nuw i8, ptr %4, i64 16 + store ptr %21, ptr %4, align 8, !tbaa !155 + %22 = getelementptr inbounds nuw i8, ptr %4, i64 8 + store i32 0, ptr %22, align 8, !tbaa !156 + %23 = getelementptr inbounds nuw i8, ptr %4, i64 12 + store i32 16, ptr %23, align 4, !tbaa !157 + %24 = getelementptr inbounds nuw i8, ptr %1, i64 328 + %25 = getelementptr inbounds nuw i8, ptr %1, i64 320 + %.sroa.058.072 = load ptr, ptr %24, align 8, !tbaa !158 + %.not6873 = icmp eq ptr %.sroa.058.072, %25 br i1 %.not6873, label %._crit_edge76, label %.lr.ph75 +.lr.ph75: ; preds = %_ZN4llvmeqENS_9StringRefES0_.exit.thread63 + %26 = icmp eq i32 %20, 38 + %27 = select i1 %26, i16 3739, i16 3738 + br label %46 + ._crit_edge76: ; preds = %._crit_edge, %_ZN4llvmeqENS_9StringRefES0_.exit.thread63 %28 = load ptr, ptr %1, align 8, !tbaa !28 %29 = getelementptr inbounds nuw i8, ptr %28, i64 40 @@ -265,7 +268,7 @@ _ZN4llvmeqENS_9StringRefES0_.exit.thread63: ; preds = %11, %_ZN4llvmeqENS_ %34 = getelementptr inbounds i8, ptr %33, i64 -44288 %35 = getelementptr inbounds i8, ptr %33, i64 -158688 %36 = load ptr, ptr %4, align 8, !tbaa !155 - %37 = load i32, ptr %24, align 8, !tbaa !156 + %37 = load i32, ptr %22, align 8, !tbaa !156 %38 = zext i32 %37 to i64 %.idx = shl nuw nsw i64 %38, 3 %39 = getelementptr inbounds nuw i8, ptr %36, i64 %.idx @@ -281,38 +284,37 @@ _ZN4llvmeqENS_9StringRefES0_.exit.thread63: ; preds = %11, %_ZN4llvmeqENS_ %45 = getelementptr inbounds nuw i8, ptr %3, i64 24 br label %81 -.lr.ph75: ; preds = %_ZN4llvmeqENS_9StringRefES0_.exit.thread63, %._crit_edge - %.sroa.058.074 = phi ptr [ %.sroa.058.0, %._crit_edge ], [ %.sroa.058.072, %_ZN4llvmeqENS_9StringRefES0_.exit.thread63 ] - %46 = call ptr @_ZN4llvm17MachineBasicBlock18getFirstTerminatorEv(ptr noundef nonnull align 8 dereferenceable(288) %.sroa.058.074) #13 - %47 = getelementptr inbounds nuw i8, ptr %.sroa.058.074, i64 48 - %.not6970 = icmp eq ptr %46, %47 +46: ; preds = %.lr.ph75, %._crit_edge + %.sroa.058.074 = phi ptr [ %.sroa.058.072, %.lr.ph75 ], [ %.sroa.058.0, %._crit_edge ] + %47 = call ptr @_ZN4llvm17MachineBasicBlock18getFirstTerminatorEv(ptr noundef nonnull align 8 dereferenceable(288) %.sroa.058.074) #13 + %48 = getelementptr inbounds nuw i8, ptr %.sroa.058.074, i64 48 + %.not6970 = icmp eq ptr %47, %48 br i1 %.not6970, label %._crit_edge, label %.lr.ph -._crit_edge: ; preds = %_ZN4llvm26MachineInstrBundleIteratorINS_12MachineInstrELb0EEppEv.exit, %.lr.ph75 - %48 = getelementptr inbounds nuw i8, ptr %.sroa.058.074, i64 8 - %.sroa.058.0 = load ptr, ptr %48, align 8, !tbaa !158 - %.not68 = icmp eq ptr %.sroa.058.0, %27 - br i1 %.not68, label %._crit_edge76, label %.lr.ph75 - -.lr.ph: ; preds = %.lr.ph75, %_ZN4llvm26MachineInstrBundleIteratorINS_12MachineInstrELb0EEppEv.exit - %.sroa.053.071 = phi ptr [ %77, %_ZN4llvm26MachineInstrBundleIteratorINS_12MachineInstrELb0EEppEv.exit ], [ %46, %.lr.ph75 ] - %49 = getelementptr inbounds nuw i8, ptr %.sroa.053.071, i64 68 - %50 = load i16, ptr %49, align 4, !tbaa !171 - %51 = zext i16 %50 to i32 - %52 = icmp eq i32 %22, %51 +._crit_edge: ; preds = %_ZN4llvm26MachineInstrBundleIteratorINS_12MachineInstrELb0EEppEv.exit, %46 + %49 = getelementptr inbounds nuw i8, ptr %.sroa.058.074, i64 8 + %.sroa.058.0 = load ptr, ptr %49, align 8, !tbaa !158 + %.not68 = icmp eq ptr %.sroa.058.0, %25 + br i1 %.not68, label %._crit_edge76, label %46 + +.lr.ph: ; preds = %46, %_ZN4llvm26MachineInstrBundleIteratorINS_12MachineInstrELb0EEppEv.exit + %.sroa.053.071 = phi ptr [ %77, %_ZN4llvm26MachineInstrBundleIteratorINS_12MachineInstrELb0EEppEv.exit ], [ %47, %46 ] + %50 = getelementptr inbounds nuw i8, ptr %.sroa.053.071, i64 68 + %51 = load i16, ptr %50, align 4, !tbaa !171 + %52 = icmp eq i16 %27, %51 br i1 %52, label %53, label %66 53: ; preds = %.lr.ph - %54 = load i32, ptr %24, align 8, !tbaa !156 - %55 = load i32, ptr %25, align 4, !tbaa !157 + %54 = load i32, ptr %22, align 8, !tbaa !156 + %55 = load i32, ptr %23, align 4, !tbaa !157 %.not.i.i.not.i = icmp ult i32 %54, %55 br i1 %.not.i.i.not.i, label %_ZN4llvm23SmallVectorTemplateBaseIPNS_12MachineInstrELb1EE9push_backES2_.exit, label %56, !prof !189 56: ; preds = %53 %57 = zext i32 %54 to i64 %58 = add nuw nsw i64 %57, 1 - call void @_ZN4llvm15SmallVectorBaseIjE8grow_podEPvmm(ptr noundef nonnull align 8 dereferenceable(16) %4, ptr noundef nonnull %23, i64 noundef %58, i64 noundef 8) #13 - %.pre.i = load i32, ptr %24, align 8, !tbaa !156 + call void @_ZN4llvm15SmallVectorBaseIjE8grow_podEPvmm(ptr noundef nonnull align 8 dereferenceable(16) %4, ptr noundef nonnull %21, i64 noundef %58, i64 noundef 8) #13 + %.pre.i = load i32, ptr %22, align 8, !tbaa !156 br label %_ZN4llvm23SmallVectorTemplateBaseIPNS_12MachineInstrELb1EE9push_backES2_.exit _ZN4llvm23SmallVectorTemplateBaseIPNS_12MachineInstrELb1EE9push_backES2_.exit: ; preds = %53, %56 @@ -322,9 +324,9 @@ _ZN4llvm23SmallVectorTemplateBaseIPNS_12MachineInstrELb1EE9push_backES2_.exit: ; %62 = getelementptr inbounds nuw ptr, ptr %60, i64 %61 %63 = ptrtoint ptr %.sroa.053.071 to i64 store i64 %63, ptr %62, align 1 - %64 = load i32, ptr %24, align 8, !tbaa !156 + %64 = load i32, ptr %22, align 8, !tbaa !156 %65 = add i32 %64, 1 - store i32 %65, ptr %24, align 8, !tbaa !156 + store i32 %65, ptr %22, align 8, !tbaa !156 br label %66 66: ; preds = %_ZN4llvm23SmallVectorTemplateBaseIPNS_12MachineInstrELb1EE9push_backES2_.exit, %.lr.ph @@ -354,7 +356,7 @@ _ZN4llvm26MachineInstrBundleIteratorINS_12MachineInstrELb0EEppEv.exit: ; preds = %.sroa.0.0.i.i.i = phi ptr [ %.sroa.053.071, %66 ], [ %.sroa.053.071, %_ZNK4llvm14ilist_iteratorINS_12ilist_detail12node_optionsINS_12MachineInstrELb1ELb1EvLb0EvEELb0ELb0EE5isEndEv.exit.preheader.i.i.i ], [ %72, %_ZNK4llvm14ilist_iteratorINS_12ilist_detail12node_optionsINS_12MachineInstrELb1ELb1EvLb0EvEELb0ELb0EE5isEndEv.exit.i.i.i ] %76 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.i.i.i, i64 8 %77 = load ptr, ptr %76, align 8, !tbaa !190 - %.not69 = icmp eq ptr %77, %47 + %.not69 = icmp eq ptr %77, %48 br i1 %.not69, label %._crit_edge, label %.lr.ph ._crit_edge81.loopexit: ; preds = %_ZN4llvm8DebugLocD2Ev.exit50 @@ -363,7 +365,7 @@ _ZN4llvm26MachineInstrBundleIteratorINS_12MachineInstrELb0EEppEv.exit: ; preds = ._crit_edge81: ; preds = %._crit_edge81.loopexit, %._crit_edge76 %78 = phi ptr [ %.pre, %._crit_edge81.loopexit ], [ %36, %._crit_edge76 ] - %79 = icmp eq ptr %78, %23 + %79 = icmp eq ptr %78, %21 br i1 %79, label %_ZN4llvm11SmallVectorIPNS_12MachineInstrELj16EED2Ev.exit, label %80 80: ; preds = %._crit_edge81 diff --git a/bench/lua/optimized/lstrlib.ll b/bench/lua/optimized/lstrlib.ll index b0a57bc684b..33b41edbe35 100644 --- a/bench/lua/optimized/lstrlib.ll +++ b/bench/lua/optimized/lstrlib.ll @@ -2681,31 +2681,31 @@ copywithendian.exit75: ; preds = %.preheader93, %69 .lr.ph.i: ; preds = %80 %85 = load i32, ptr %26, align 8, !tbaa !48 - %.not41.i = icmp eq i32 %85, 0 + %.not43.i = icmp eq i32 %85, 0 %86 = call i32 @llvm.umin.i32(i32 %82, i32 8) %87 = zext nneg i32 %86 to i64 - br i1 %.not41.i, label %.lr.ph.split.us.i, label %.lr.ph.split.i + br i1 %.not43.i, label %.lr.ph.split.us.i, label %.lr.ph.split.i .lr.ph.split.us.i: ; preds = %.lr.ph.i, %.lr.ph.split.us.i - %indvars.iv51.i = phi i64 [ %indvars.iv.next52.i, %.lr.ph.split.us.i ], [ %87, %.lr.ph.i ] - %.043.us.i = phi i64 [ %94, %.lr.ph.split.us.i ], [ 0, %.lr.ph.i ] - %indvars.iv.next52.i = add nsw i64 %indvars.iv51.i, -1 - %88 = shl i64 %.043.us.i, 8 - %89 = sub i64 %36, %indvars.iv51.i + %indvars.iv53.i = phi i64 [ %indvars.iv.next54.i, %.lr.ph.split.us.i ], [ %87, %.lr.ph.i ] + %.045.us.i = phi i64 [ %94, %.lr.ph.split.us.i ], [ 0, %.lr.ph.i ] + %indvars.iv.next54.i = add nsw i64 %indvars.iv53.i, -1 + %88 = shl i64 %.045.us.i, 8 + %89 = sub i64 %36, %indvars.iv53.i %sext = shl i64 %89, 32 %90 = ashr exact i64 %sext, 32 %91 = getelementptr inbounds i8, ptr %81, i64 %90 %92 = load i8, ptr %91, align 1, !tbaa !9 %93 = zext i8 %92 to i64 %94 = or disjoint i64 %88, %93 - %95 = icmp samesign ugt i64 %indvars.iv51.i, 1 + %95 = icmp samesign ugt i64 %indvars.iv53.i, 1 br i1 %95, label %.lr.ph.split.us.i, label %._crit_edge.i .lr.ph.split.i: ; preds = %.lr.ph.i, %.lr.ph.split.i %indvars.iv.i = phi i64 [ %indvars.iv.next.i, %.lr.ph.split.i ], [ %87, %.lr.ph.i ] - %.043.i = phi i64 [ %100, %.lr.ph.split.i ], [ 0, %.lr.ph.i ] + %.045.i = phi i64 [ %100, %.lr.ph.split.i ], [ 0, %.lr.ph.i ] %indvars.iv.next.i = add nsw i64 %indvars.iv.i, -1 - %96 = shl i64 %.043.i, 8 + %96 = shl i64 %.045.i, 8 %97 = getelementptr inbounds i8, ptr %81, i64 %indvars.iv.next.i %98 = load i8, ptr %97, align 1, !tbaa !9 %99 = zext i8 %98 to i64 @@ -2715,24 +2715,24 @@ copywithendian.exit75: ; preds = %.preheader93, %69 ._crit_edge.i: ; preds = %.lr.ph.split.us.i %switch = icmp samesign ult i32 %82, 9 - br i1 %switch, label %unpackint.exit, label %.lr.ph46.split.us.preheader.i + br i1 %switch, label %unpackint.exit, label %.lr.ph48.split.us.preheader.i ._crit_edge.i.thread: ; preds = %.lr.ph.split.i %switch102 = icmp samesign ult i32 %82, 9 - br i1 %switch102, label %unpackint.exit, label %.lr.ph46.split.preheader.i + br i1 %switch102, label %unpackint.exit, label %.lr.ph48.split.preheader.i -.lr.ph46.split.preheader.i: ; preds = %._crit_edge.i.thread +.lr.ph48.split.preheader.i: ; preds = %._crit_edge.i.thread %102 = zext nneg i32 %83 to i64 - br label %.lr.ph46.split.i + br label %.lr.ph48.split.i -.lr.ph46.split.us.preheader.i: ; preds = %._crit_edge.i +.lr.ph48.split.us.preheader.i: ; preds = %._crit_edge.i %103 = and i64 %36, 2147483647 %umax = call i64 @llvm.umax.i64(i64 %103, i64 9) - br label %.lr.ph46.split.us.i + br label %.lr.ph48.split.us.i -.lr.ph46.split.us.i: ; preds = %111, %.lr.ph46.split.us.preheader.i - %indvars.iv57.i = phi i64 [ 8, %.lr.ph46.split.us.preheader.i ], [ %indvars.iv.next58.i, %111 ] - %104 = xor i64 %indvars.iv57.i, -1 +.lr.ph48.split.us.i: ; preds = %111, %.lr.ph48.split.us.preheader.i + %indvars.iv59.i = phi i64 [ 8, %.lr.ph48.split.us.preheader.i ], [ %indvars.iv.next60.i, %111 ] + %104 = xor i64 %indvars.iv59.i, -1 %105 = add i64 %36, %104 %sext80 = shl i64 %105, 32 %106 = ashr exact i64 %sext80, 32 @@ -2741,31 +2741,31 @@ copywithendian.exit75: ; preds = %.preheader93, %69 %.not39.us.i = icmp eq i8 %108, 0 br i1 %.not39.us.i, label %111, label %109, !prof !10 -109: ; preds = %.lr.ph46.split.us.i +109: ; preds = %.lr.ph48.split.us.i %110 = call i32 (ptr, ptr, ...) @luaL_error(ptr noundef %0, ptr noundef nonnull @.str.75, i32 noundef %82) #12 br label %111 -111: ; preds = %109, %.lr.ph46.split.us.i - %indvars.iv.next58.i = add nuw nsw i64 %indvars.iv57.i, 1 - %exitcond.not = icmp eq i64 %indvars.iv.next58.i, %umax - br i1 %exitcond.not, label %unpackint.exit, label %.lr.ph46.split.us.i +111: ; preds = %109, %.lr.ph48.split.us.i + %indvars.iv.next60.i = add nuw nsw i64 %indvars.iv59.i, 1 + %exitcond.not = icmp eq i64 %indvars.iv.next60.i, %umax + br i1 %exitcond.not, label %unpackint.exit, label %.lr.ph48.split.us.i -.lr.ph46.split.i: ; preds = %116, %.lr.ph46.split.preheader.i - %indvars.iv53.i = phi i64 [ %102, %.lr.ph46.split.preheader.i ], [ %indvars.iv.next54.i, %116 ] - %112 = getelementptr inbounds nuw i8, ptr %81, i64 %indvars.iv53.i +.lr.ph48.split.i: ; preds = %116, %.lr.ph48.split.preheader.i + %indvars.iv55.i = phi i64 [ %102, %.lr.ph48.split.preheader.i ], [ %indvars.iv.next56.i, %116 ] + %112 = getelementptr inbounds nuw i8, ptr %81, i64 %indvars.iv55.i %113 = load i8, ptr %112, align 1, !tbaa !9 %.not39.i = icmp eq i8 %113, 0 br i1 %.not39.i, label %116, label %114, !prof !10 -114: ; preds = %.lr.ph46.split.i +114: ; preds = %.lr.ph48.split.i %115 = call i32 (ptr, ptr, ...) @luaL_error(ptr noundef %0, ptr noundef nonnull @.str.75, i32 noundef %82) #12 br label %116 -116: ; preds = %114, %.lr.ph46.split.i - %indvars.iv.next54.i = add nuw nsw i64 %indvars.iv53.i, 1 - %117 = trunc nuw i64 %indvars.iv.next54.i to i32 +116: ; preds = %114, %.lr.ph48.split.i + %indvars.iv.next56.i = add nuw nsw i64 %indvars.iv55.i, 1 + %117 = trunc nuw i64 %indvars.iv.next56.i to i32 %118 = icmp sgt i32 %82, %117 - br i1 %118, label %.lr.ph46.split.i, label %unpackint.exit + br i1 %118, label %.lr.ph48.split.i, label %unpackint.exit unpackint.exit: ; preds = %116, %111, %._crit_edge.i.thread, %._crit_edge.i %.0.lcssa.i104 = phi i64 [ %100, %._crit_edge.i.thread ], [ %94, %._crit_edge.i ], [ %94, %111 ], [ %100, %116 ] @@ -4905,31 +4905,31 @@ define internal fastcc i64 @unpackint(ptr noundef %0, ptr noundef readonly captu br i1 %7, label %.lr.ph, label %._crit_edge.thread .lr.ph: ; preds = %5 - %.not41 = icmp eq i32 %2, 0 + %.not43 = icmp eq i32 %2, 0 %8 = tail call i32 @llvm.umin.i32(i32 %3, i32 8) %9 = zext nneg i32 %8 to i64 - br i1 %.not41, label %.lr.ph.split.us, label %.lr.ph.split + br i1 %.not43, label %.lr.ph.split.us, label %.lr.ph.split .lr.ph.split.us: ; preds = %.lr.ph, %.lr.ph.split.us - %indvars.iv51 = phi i64 [ %indvars.iv.next52, %.lr.ph.split.us ], [ %9, %.lr.ph ] - %.043.us = phi i64 [ %17, %.lr.ph.split.us ], [ 0, %.lr.ph ] - %indvars.iv.next52 = add nsw i64 %indvars.iv51, -1 - %10 = shl i64 %.043.us, 8 - %11 = trunc nsw i64 %indvars.iv51 to i32 + %indvars.iv53 = phi i64 [ %indvars.iv.next54, %.lr.ph.split.us ], [ %9, %.lr.ph ] + %.045.us = phi i64 [ %17, %.lr.ph.split.us ], [ 0, %.lr.ph ] + %indvars.iv.next54 = add nsw i64 %indvars.iv53, -1 + %10 = shl i64 %.045.us, 8 + %11 = trunc nsw i64 %indvars.iv53 to i32 %12 = sub i32 %3, %11 %13 = sext i32 %12 to i64 %14 = getelementptr inbounds i8, ptr %1, i64 %13 %15 = load i8, ptr %14, align 1, !tbaa !9 %16 = zext i8 %15 to i64 %17 = or disjoint i64 %10, %16 - %18 = icmp samesign ugt i64 %indvars.iv51, 1 + %18 = icmp samesign ugt i64 %indvars.iv53, 1 br i1 %18, label %.lr.ph.split.us, label %._crit_edge .lr.ph.split: ; preds = %.lr.ph, %.lr.ph.split %indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph.split ], [ %9, %.lr.ph ] - %.043 = phi i64 [ %23, %.lr.ph.split ], [ 0, %.lr.ph ] + %.045 = phi i64 [ %23, %.lr.ph.split ], [ 0, %.lr.ph ] %indvars.iv.next = add nsw i64 %indvars.iv, -1 - %19 = shl i64 %.043, 8 + %19 = shl i64 %.045, 8 %20 = getelementptr inbounds i8, ptr %1, i64 %indvars.iv.next %21 = load i8, ptr %20, align 1, !tbaa !9 %22 = zext i8 %21 to i64 @@ -4943,80 +4943,78 @@ define internal fastcc i64 @unpackint(ptr noundef %0, ptr noundef readonly captu br i1 %25, label %._crit_edge.thread, label %33 ._crit_edge.thread: ; preds = %5, %._crit_edge - %.0.lcssa60 = phi i64 [ %.0.lcssa, %._crit_edge ], [ 0, %5 ] - %.not40 = icmp eq i32 %4, 0 - br i1 %.not40, label %.loopexit, label %26 + %.0.lcssa62 = phi i64 [ %.0.lcssa, %._crit_edge ], [ 0, %5 ] + %.not42 = icmp eq i32 %4, 0 + br i1 %.not42, label %.loopexit, label %26 26: ; preds = %._crit_edge.thread %27 = shl nsw i32 %3, 3 %28 = add nsw i32 %27, -1 %29 = zext nneg i32 %28 to i64 %30 = shl nuw i64 1, %29 - %31 = xor i64 %.0.lcssa60, %30 + %31 = xor i64 %.0.lcssa62, %30 %32 = sub i64 %31, %30 br label %.loopexit 33: ; preds = %._crit_edge %.not = icmp eq i32 %3, 8 - br i1 %.not, label %.loopexit, label %.lr.ph46 + br i1 %.not, label %.loopexit, label %.lr.ph48 -.lr.ph46: ; preds = %33 - %.not37 = icmp eq i32 %4, 0 - %34 = icmp sgt i64 %.0.lcssa, -1 - %35 = select i1 %.not37, i1 true, i1 %34 - %36 = select i1 %35, i32 0, i32 255 +.lr.ph48: ; preds = %33 + %.not37 = icmp ne i32 %4, 0 + %34 = icmp slt i64 %.0.lcssa, 0 + %.not41 = select i1 %.not37, i1 %34, i1 false %.not38 = icmp eq i32 %2, 0 - br i1 %.not38, label %.lr.ph46.split.us.preheader, label %.lr.ph46.split.preheader - -.lr.ph46.split.preheader: ; preds = %.lr.ph46 - %37 = zext nneg i32 %6 to i64 - br label %.lr.ph46.split - -.lr.ph46.split.us.preheader: ; preds = %.lr.ph46 - %38 = zext nneg i32 %3 to i64 - br label %.lr.ph46.split.us - -.lr.ph46.split.us: ; preds = %.lr.ph46.split.us.preheader, %48 - %indvars.iv57 = phi i64 [ 8, %.lr.ph46.split.us.preheader ], [ %indvars.iv.next58, %48 ] - %39 = trunc nsw i64 %indvars.iv57 to i32 - %40 = xor i32 %39, -1 - %41 = add nsw i32 %3, %40 - %42 = sext i32 %41 to i64 - %43 = getelementptr inbounds i8, ptr %1, i64 %42 - %44 = load i8, ptr %43, align 1, !tbaa !9 - %45 = zext i8 %44 to i32 - %.not39.us = icmp eq i32 %36, %45 - br i1 %.not39.us, label %48, label %46, !prof !10 - -46: ; preds = %.lr.ph46.split.us - %47 = tail call i32 (ptr, ptr, ...) @luaL_error(ptr noundef %0, ptr noundef nonnull @.str.75, i32 noundef %3) #12 - br label %48 - -48: ; preds = %.lr.ph46.split.us, %46 - %indvars.iv.next58 = add nuw nsw i64 %indvars.iv57, 1 - %49 = icmp samesign ult i64 %indvars.iv.next58, %38 - br i1 %49, label %.lr.ph46.split.us, label %.loopexit - -.lr.ph46.split: ; preds = %.lr.ph46.split.preheader, %55 - %indvars.iv53 = phi i64 [ %37, %.lr.ph46.split.preheader ], [ %indvars.iv.next54, %55 ] - %50 = getelementptr inbounds nuw i8, ptr %1, i64 %indvars.iv53 - %51 = load i8, ptr %50, align 1, !tbaa !9 - %52 = zext i8 %51 to i32 - %.not39 = icmp eq i32 %36, %52 - br i1 %.not39, label %55, label %53, !prof !10 - -53: ; preds = %.lr.ph46.split - %54 = tail call i32 (ptr, ptr, ...) @luaL_error(ptr noundef %0, ptr noundef nonnull @.str.75, i32 noundef %3) #12 - br label %55 + %35 = sext i1 %.not41 to i8 + br i1 %.not38, label %.lr.ph48.split.us.preheader, label %.lr.ph48.split.preheader + +.lr.ph48.split.preheader: ; preds = %.lr.ph48 + %36 = zext nneg i32 %6 to i64 + br label %.lr.ph48.split + +.lr.ph48.split.us.preheader: ; preds = %.lr.ph48 + %37 = zext nneg i32 %3 to i64 + br label %.lr.ph48.split.us + +.lr.ph48.split.us: ; preds = %.lr.ph48.split.us.preheader, %46 + %indvars.iv59 = phi i64 [ 8, %.lr.ph48.split.us.preheader ], [ %indvars.iv.next60, %46 ] + %38 = trunc nsw i64 %indvars.iv59 to i32 + %39 = xor i32 %38, -1 + %40 = add nsw i32 %3, %39 + %41 = sext i32 %40 to i64 + %42 = getelementptr inbounds i8, ptr %1, i64 %41 + %43 = load i8, ptr %42, align 1, !tbaa !9 + %.not39.us = icmp eq i8 %43, %35 + br i1 %.not39.us, label %46, label %44, !prof !10 + +44: ; preds = %.lr.ph48.split.us + %45 = tail call i32 (ptr, ptr, ...) @luaL_error(ptr noundef %0, ptr noundef nonnull @.str.75, i32 noundef %3) #12 + br label %46 + +46: ; preds = %.lr.ph48.split.us, %44 + %indvars.iv.next60 = add nuw nsw i64 %indvars.iv59, 1 + %47 = icmp samesign ult i64 %indvars.iv.next60, %37 + br i1 %47, label %.lr.ph48.split.us, label %.loopexit + +.lr.ph48.split: ; preds = %.lr.ph48.split.preheader, %52 + %indvars.iv55 = phi i64 [ %36, %.lr.ph48.split.preheader ], [ %indvars.iv.next56, %52 ] + %48 = getelementptr inbounds nuw i8, ptr %1, i64 %indvars.iv55 + %49 = load i8, ptr %48, align 1, !tbaa !9 + %.not39 = icmp eq i8 %49, %35 + br i1 %.not39, label %52, label %50, !prof !10 + +50: ; preds = %.lr.ph48.split + %51 = tail call i32 (ptr, ptr, ...) @luaL_error(ptr noundef %0, ptr noundef nonnull @.str.75, i32 noundef %3) #12 + br label %52 -55: ; preds = %.lr.ph46.split, %53 - %indvars.iv.next54 = add nuw nsw i64 %indvars.iv53, 1 - %56 = trunc nuw i64 %indvars.iv.next54 to i32 - %57 = icmp sgt i32 %3, %56 - br i1 %57, label %.lr.ph46.split, label %.loopexit +52: ; preds = %.lr.ph48.split, %50 + %indvars.iv.next56 = add nuw nsw i64 %indvars.iv55, 1 + %53 = trunc nuw i64 %indvars.iv.next56 to i32 + %54 = icmp sgt i32 %3, %53 + br i1 %54, label %.lr.ph48.split, label %.loopexit -.loopexit: ; preds = %55, %48, %33, %._crit_edge.thread, %26 - %.1 = phi i64 [ %32, %26 ], [ %.0.lcssa60, %._crit_edge.thread ], [ %.0.lcssa, %33 ], [ %.0.lcssa, %48 ], [ %.0.lcssa, %55 ] +.loopexit: ; preds = %52, %46, %33, %._crit_edge.thread, %26 + %.1 = phi i64 [ %32, %26 ], [ %.0.lcssa62, %._crit_edge.thread ], [ %.0.lcssa, %33 ], [ %.0.lcssa, %46 ], [ %.0.lcssa, %52 ] ret i64 %.1 } diff --git a/bench/luajit/optimized/lj_load.ll b/bench/luajit/optimized/lj_load.ll index 747d861f9c5..7820eeb3a33 100644 --- a/bench/luajit/optimized/lj_load.ll +++ b/bench/luajit/optimized/lj_load.ll @@ -73,7 +73,7 @@ define internal noalias noundef ptr @cpparser(ptr noundef %0, ptr readnone captu %8 = getelementptr inbounds nuw i8, ptr %2, i64 136 %9 = load ptr, ptr %8, align 8, !tbaa !21 %.not = icmp eq ptr %9, null - br i1 %.not, label %29, label %.preheader + br i1 %.not, label %28, label %.preheader .preheader: ; preds = %3 %10 = load i8, ptr %9, align 1, !tbaa !40 @@ -82,82 +82,81 @@ define internal noalias noundef ptr @cpparser(ptr noundef %0, ptr readnone captu .lr.ph: ; preds = %.preheader %.not34 = icmp eq i32 %7, 0 - %11 = select i1 %.not34, i32 116, i32 98 + %11 = select i1 %.not34, i8 116, i8 98 %12 = getelementptr inbounds nuw i8, ptr %2, i64 180 br label %13 -13: ; preds = %.lr.ph, %20 - %14 = phi i8 [ %10, %.lr.ph ], [ %21, %20 ] - %.pn = phi ptr [ %9, %.lr.ph ], [ %15, %20 ] - %.036 = phi i32 [ 1, %.lr.ph ], [ %spec.select, %20 ] +13: ; preds = %.lr.ph, %19 + %14 = phi i8 [ %10, %.lr.ph ], [ %20, %19 ] + %.pn = phi ptr [ %9, %.lr.ph ], [ %15, %19 ] + %.036 = phi i32 [ 1, %.lr.ph ], [ %spec.select, %19 ] %15 = getelementptr inbounds nuw i8, ptr %.pn, i64 1 - %16 = sext i8 %14 to i32 - %17 = icmp eq i32 %11, %16 - %spec.select = select i1 %17, i32 0, i32 %.036 - %18 = icmp eq i8 %14, 87 - br i1 %18, label %19, label %20 + %16 = icmp eq i8 %11, %14 + %spec.select = select i1 %16, i32 0, i32 %.036 + %17 = icmp eq i8 %14, 87 + br i1 %17, label %18, label %19 -19: ; preds = %13 +18: ; preds = %13 store i32 0, ptr %12, align 4, !tbaa !41 - br label %20 + br label %19 -20: ; preds = %19, %13 - %21 = load i8, ptr %15, align 1, !tbaa !40 - %.not31 = icmp eq i8 %21, 0 +19: ; preds = %18, %13 + %20 = load i8, ptr %15, align 1, !tbaa !40 + %.not31 = icmp eq i8 %20, 0 br i1 %.not31, label %._crit_edge, label %13, !llvm.loop !42 -._crit_edge: ; preds = %20 - %22 = icmp eq i32 %spec.select, 0 - br i1 %22, label %29, label %._crit_edge.thread +._crit_edge: ; preds = %19 + %21 = icmp eq i32 %spec.select, 0 + br i1 %21, label %28, label %._crit_edge.thread ._crit_edge.thread: ; preds = %.preheader, %._crit_edge - %23 = getelementptr inbounds nuw i8, ptr %0, i64 40 - %24 = load ptr, ptr %23, align 8, !tbaa !44 - %25 = getelementptr inbounds nuw i8, ptr %24, i64 8 - store ptr %25, ptr %23, align 8, !tbaa !44 - %26 = tail call ptr @lj_err_str(ptr noundef %0, i32 noundef 2140) #12 - %27 = ptrtoint ptr %26 to i64 - %28 = or i64 %27, -703687441776640 - store i64 %28, ptr %24, align 8, !tbaa !40 + %22 = getelementptr inbounds nuw i8, ptr %0, i64 40 + %23 = load ptr, ptr %22, align 8, !tbaa !44 + %24 = getelementptr inbounds nuw i8, ptr %23, i64 8 + store ptr %24, ptr %22, align 8, !tbaa !44 + %25 = tail call ptr @lj_err_str(ptr noundef %0, i32 noundef 2140) #12 + %26 = ptrtoint ptr %25 to i64 + %27 = or i64 %26, -703687441776640 + store i64 %27, ptr %23, align 8, !tbaa !40 tail call void @lj_err_throw(ptr noundef %0, i32 noundef 3) #13 unreachable -29: ; preds = %._crit_edge, %3 +28: ; preds = %._crit_edge, %3 %.not33 = icmp eq i32 %7, 0 - br i1 %.not33, label %32, label %30 - -30: ; preds = %29 - %31 = tail call ptr @lj_bcread(ptr noundef %2) #12 - br label %34 - -32: ; preds = %29 - %33 = tail call ptr @lj_parse(ptr noundef %2) #12 - br label %34 - -34: ; preds = %32, %30 - %35 = phi ptr [ %31, %30 ], [ %33, %32 ] - %36 = getelementptr inbounds nuw i8, ptr %2, i64 180 - %37 = load i32, ptr %36, align 4, !tbaa !41 - %38 = icmp eq i32 %37, 1 - br i1 %38, label %39, label %44 - -39: ; preds = %34 - %40 = getelementptr inbounds nuw i8, ptr %0, i64 72 - %41 = load i64, ptr %40, align 8, !tbaa !45 - %42 = inttoptr i64 %41 to ptr - %43 = tail call ptr @lj_func_newL_empty(ptr noundef %0, ptr noundef %35, ptr noundef %42) #12 - br label %44 - -44: ; preds = %34, %39 - %.sink = phi ptr [ %43, %39 ], [ %35, %34 ] - %.sink40 = phi i64 [ -1266637395197952, %39 ], [ -1125899906842624, %34 ] - %45 = getelementptr inbounds nuw i8, ptr %0, i64 40 - %46 = load ptr, ptr %45, align 8, !tbaa !44 - %47 = getelementptr inbounds nuw i8, ptr %46, i64 8 - store ptr %47, ptr %45, align 8, !tbaa !44 - %48 = ptrtoint ptr %.sink to i64 - %49 = or i64 %.sink40, %48 - store i64 %49, ptr %46, align 8, !tbaa !40 + br i1 %.not33, label %31, label %29 + +29: ; preds = %28 + %30 = tail call ptr @lj_bcread(ptr noundef %2) #12 + br label %33 + +31: ; preds = %28 + %32 = tail call ptr @lj_parse(ptr noundef %2) #12 + br label %33 + +33: ; preds = %31, %29 + %34 = phi ptr [ %30, %29 ], [ %32, %31 ] + %35 = getelementptr inbounds nuw i8, ptr %2, i64 180 + %36 = load i32, ptr %35, align 4, !tbaa !41 + %37 = icmp eq i32 %36, 1 + br i1 %37, label %38, label %43 + +38: ; preds = %33 + %39 = getelementptr inbounds nuw i8, ptr %0, i64 72 + %40 = load i64, ptr %39, align 8, !tbaa !45 + %41 = inttoptr i64 %40 to ptr + %42 = tail call ptr @lj_func_newL_empty(ptr noundef %0, ptr noundef %34, ptr noundef %41) #12 + br label %43 + +43: ; preds = %33, %38 + %.sink = phi ptr [ %42, %38 ], [ %34, %33 ] + %.sink40 = phi i64 [ -1266637395197952, %38 ], [ -1125899906842624, %33 ] + %44 = getelementptr inbounds nuw i8, ptr %0, i64 40 + %45 = load ptr, ptr %44, align 8, !tbaa !44 + %46 = getelementptr inbounds nuw i8, ptr %45, i64 8 + store ptr %46, ptr %44, align 8, !tbaa !44 + %47 = ptrtoint ptr %.sink to i64 + %48 = or i64 %.sink40, %47 + store i64 %48, ptr %45, align 8, !tbaa !40 ret ptr null } diff --git a/bench/luajit/optimized/lj_strscan.ll b/bench/luajit/optimized/lj_strscan.ll index 7a176a86b80..b5d9477dc91 100644 --- a/bench/luajit/optimized/lj_strscan.ll +++ b/bench/luajit/optimized/lj_strscan.ll @@ -313,291 +313,290 @@ thread-pre-split: ; preds = %22, %4 %.2205 = phi i32 [ 0, %129 ], [ %.0203, %126 ], [ %.3206288, %.critedge.thread ] %.0194 = phi i32 [ 0, %129 ], [ 0, %126 ], [ %spec.select262, %.critedge.thread ] %147 = icmp sgt i32 %.0215, 9 - br i1 %147, label %148, label %185 + br i1 %147, label %148, label %184 148: ; preds = %146 %149 = or i8 %107, 32 - %150 = zext i8 %149 to i32 - %151 = icmp eq i32 %.0215, 16 - %152 = select i1 %151, i32 112, i32 101 - %153 = icmp eq i32 %152, %150 - br i1 %153, label %154, label %185 - -154: ; preds = %148 - %155 = getelementptr inbounds nuw i8, ptr %.8, i64 1 - %156 = load i8, ptr %155, align 1, !tbaa !4 - switch i8 %156, label %160 [ - i8 43, label %157 - i8 45, label %157 + %150 = icmp eq i32 %.0215, 16 + %151 = select i1 %150, i8 112, i8 101 + %152 = icmp eq i8 %151, %149 + br i1 %152, label %153, label %184 + +153: ; preds = %148 + %154 = getelementptr inbounds nuw i8, ptr %.8, i64 1 + %155 = load i8, ptr %154, align 1, !tbaa !4 + switch i8 %155, label %159 [ + i8 43, label %156 + i8 45, label %156 ] -157: ; preds = %154, %154 - %158 = getelementptr inbounds nuw i8, ptr %.8, i64 2 - %159 = icmp ne i8 %156, 45 - %.pre324 = load i8, ptr %158, align 1, !tbaa !4 - br label %160 - -160: ; preds = %154, %157 - %161 = phi i8 [ %.pre324, %157 ], [ %156, %154 ] - %.0192 = phi i1 [ %159, %157 ], [ true, %154 ] - %.10 = phi ptr [ %158, %157 ], [ %155, %154 ] - %162 = zext i8 %161 to i64 - %163 = getelementptr inbounds nuw i8, ptr getelementptr inbounds nuw (i8, ptr @lj_char_bits, i64 1), i64 %162 - %164 = load i8, ptr %163, align 1, !tbaa !4 - %165 = and i8 %164, 8 - %.not244 = icmp eq i8 %165, 0 - br i1 %.not244, label %.thread270, label %166 - -166: ; preds = %160 - %167 = and i8 %161, 15 - %168 = zext nneg i8 %167 to i32 - br label %169 - -169: ; preds = %175, %166 - %.0193 = phi i32 [ %168, %166 ], [ %179, %175 ] - %.10.pn = phi ptr [ %.10, %166 ], [ %.12, %175 ] +156: ; preds = %153, %153 + %157 = getelementptr inbounds nuw i8, ptr %.8, i64 2 + %158 = icmp ne i8 %155, 45 + %.pre324 = load i8, ptr %157, align 1, !tbaa !4 + br label %159 + +159: ; preds = %153, %156 + %160 = phi i8 [ %.pre324, %156 ], [ %155, %153 ] + %.0192 = phi i1 [ %158, %156 ], [ true, %153 ] + %.10 = phi ptr [ %157, %156 ], [ %154, %153 ] + %161 = zext i8 %160 to i64 + %162 = getelementptr inbounds nuw i8, ptr getelementptr inbounds nuw (i8, ptr @lj_char_bits, i64 1), i64 %161 + %163 = load i8, ptr %162, align 1, !tbaa !4 + %164 = and i8 %163, 8 + %.not244 = icmp eq i8 %164, 0 + br i1 %.not244, label %.thread270, label %165 + +165: ; preds = %159 + %166 = and i8 %160, 15 + %167 = zext nneg i8 %166 to i32 + br label %168 + +168: ; preds = %174, %165 + %.0193 = phi i32 [ %167, %165 ], [ %178, %174 ] + %.10.pn = phi ptr [ %.10, %165 ], [ %.12, %174 ] %.12 = getelementptr inbounds nuw i8, ptr %.10.pn, i64 1 - %170 = load i8, ptr %.12, align 1, !tbaa !4 - %171 = zext i8 %170 to i64 - %172 = getelementptr inbounds nuw i8, ptr getelementptr inbounds nuw (i8, ptr @lj_char_bits, i64 1), i64 %171 - %173 = load i8, ptr %172, align 1, !tbaa !4 - %174 = and i8 %173, 8 - %.not245 = icmp eq i8 %174, 0 - br i1 %.not245, label %181, label %175 - -175: ; preds = %169 - %176 = mul nuw nsw i32 %.0193, 10 - %177 = and i8 %170, 15 - %178 = zext nneg i8 %177 to i32 - %179 = add nuw nsw i32 %176, %178 - %180 = icmp samesign ugt i32 %179, 1048575 - br i1 %180, label %.thread270, label %169, !llvm.loop !12 - -181: ; preds = %169 - %182 = sub nsw i32 0, %.0193 - %183 = select i1 %.0192, i32 %.0193, i32 %182 - %184 = add nsw i32 %183, %.0194 - br label %185 - -185: ; preds = %181, %148, %146 - %186 = phi i8 [ %170, %181 ], [ %107, %148 ], [ %107, %146 ] - %.1220 = phi i32 [ 1, %181 ], [ %.0219, %148 ], [ %.0219, %146 ] - %.2196 = phi i32 [ %184, %181 ], [ %.0194, %148 ], [ %.0194, %146 ] - %.9 = phi ptr [ %.12, %181 ], [ %.8, %148 ], [ %.8, %146 ] - %.not247 = icmp eq i8 %186, 0 - br i1 %.not247, label %234, label %187 - -187: ; preds = %185 - %188 = or i8 %186, 32 - %189 = icmp eq i8 %188, 105 - br i1 %189, label %190, label %194 - -190: ; preds = %187 - %191 = and i32 %3, 4 - %.not249 = icmp eq i32 %191, 0 - br i1 %.not249, label %.thread270, label %192 - -192: ; preds = %190 - %193 = getelementptr inbounds nuw i8, ptr %.9, i64 1 - br label %225 - -194: ; preds = %187 - %195 = icmp eq i32 %.1220, 3 - br i1 %195, label %196, label %225 - -196: ; preds = %194 - %197 = icmp eq i8 %188, 117 - %spec.select263 = select i1 %197, i32 4, i32 3 - %spec.select264.idx = zext i1 %197 to i64 + %169 = load i8, ptr %.12, align 1, !tbaa !4 + %170 = zext i8 %169 to i64 + %171 = getelementptr inbounds nuw i8, ptr getelementptr inbounds nuw (i8, ptr @lj_char_bits, i64 1), i64 %170 + %172 = load i8, ptr %171, align 1, !tbaa !4 + %173 = and i8 %172, 8 + %.not245 = icmp eq i8 %173, 0 + br i1 %.not245, label %180, label %174 + +174: ; preds = %168 + %175 = mul nuw nsw i32 %.0193, 10 + %176 = and i8 %169, 15 + %177 = zext nneg i8 %176 to i32 + %178 = add nuw nsw i32 %175, %177 + %179 = icmp samesign ugt i32 %178, 1048575 + br i1 %179, label %.thread270, label %168, !llvm.loop !12 + +180: ; preds = %168 + %181 = sub nsw i32 0, %.0193 + %182 = select i1 %.0192, i32 %.0193, i32 %181 + %183 = add nsw i32 %182, %.0194 + br label %184 + +184: ; preds = %180, %148, %146 + %185 = phi i8 [ %169, %180 ], [ %107, %148 ], [ %107, %146 ] + %.1220 = phi i32 [ 1, %180 ], [ %.0219, %148 ], [ %.0219, %146 ] + %.2196 = phi i32 [ %183, %180 ], [ %.0194, %148 ], [ %.0194, %146 ] + %.9 = phi ptr [ %.12, %180 ], [ %.8, %148 ], [ %.8, %146 ] + %.not247 = icmp eq i8 %185, 0 + br i1 %.not247, label %233, label %186 + +186: ; preds = %184 + %187 = or i8 %185, 32 + %188 = icmp eq i8 %187, 105 + br i1 %188, label %189, label %193 + +189: ; preds = %186 + %190 = and i32 %3, 4 + %.not249 = icmp eq i32 %190, 0 + br i1 %.not249, label %.thread270, label %191 + +191: ; preds = %189 + %192 = getelementptr inbounds nuw i8, ptr %.9, i64 1 + br label %224 + +193: ; preds = %186 + %194 = icmp eq i32 %.1220, 3 + br i1 %194, label %195, label %224 + +195: ; preds = %193 + %196 = icmp eq i8 %187, 117 + %spec.select263 = select i1 %196, i32 4, i32 3 + %spec.select264.idx = zext i1 %196 to i64 %spec.select264 = getelementptr inbounds nuw i8, ptr %.9, i64 %spec.select264.idx - %198 = load i8, ptr %spec.select264, align 1, !tbaa !4 - %199 = and i8 %198, -33 - %200 = icmp eq i8 %199, 76 - br i1 %200, label %201, label %212 - -201: ; preds = %196 - %202 = getelementptr inbounds nuw i8, ptr %spec.select264, i64 1 - %203 = load i8, ptr %202, align 1, !tbaa !4 - %204 = and i8 %203, -33 - %205 = icmp eq i8 %204, 76 - br i1 %205, label %206, label %209 - -206: ; preds = %201 - %207 = getelementptr inbounds nuw i8, ptr %spec.select264, i64 2 - %208 = add nuw nsw i32 %spec.select263, 2 - br label %212 - -209: ; preds = %201 - br i1 %.not239, label %210, label %.thread270 + %197 = load i8, ptr %spec.select264, align 1, !tbaa !4 + %198 = and i8 %197, -33 + %199 = icmp eq i8 %198, 76 + br i1 %199, label %200, label %211 -210: ; preds = %209 - %211 = add nuw nsw i32 %spec.select263, 2 - br label %212 - -212: ; preds = %206, %210, %196 - %.5224 = phi i32 [ %208, %206 ], [ %211, %210 ], [ %spec.select263, %196 ] - %.16 = phi ptr [ %207, %206 ], [ %202, %210 ], [ %spec.select264, %196 ] - %213 = load i8, ptr %.16, align 1, !tbaa !4 - %214 = and i8 %213, -33 - %215 = icmp eq i8 %214, 85 - br i1 %215, label %216, label %220 - -216: ; preds = %212 - switch i32 %.5224, label %220 [ - i32 5, label %217 - i32 3, label %217 +200: ; preds = %195 + %201 = getelementptr inbounds nuw i8, ptr %spec.select264, i64 1 + %202 = load i8, ptr %201, align 1, !tbaa !4 + %203 = and i8 %202, -33 + %204 = icmp eq i8 %203, 76 + br i1 %204, label %205, label %208 + +205: ; preds = %200 + %206 = getelementptr inbounds nuw i8, ptr %spec.select264, i64 2 + %207 = add nuw nsw i32 %spec.select263, 2 + br label %211 + +208: ; preds = %200 + br i1 %.not239, label %209, label %.thread270 + +209: ; preds = %208 + %210 = add nuw nsw i32 %spec.select263, 2 + br label %211 + +211: ; preds = %205, %209, %195 + %.5224 = phi i32 [ %207, %205 ], [ %210, %209 ], [ %spec.select263, %195 ] + %.16 = phi ptr [ %206, %205 ], [ %201, %209 ], [ %spec.select264, %195 ] + %212 = load i8, ptr %.16, align 1, !tbaa !4 + %213 = and i8 %212, -33 + %214 = icmp eq i8 %213, 85 + br i1 %214, label %215, label %219 + +215: ; preds = %211 + switch i32 %.5224, label %219 [ + i32 5, label %216 + i32 3, label %216 ] -217: ; preds = %216, %216 - %218 = getelementptr inbounds nuw i8, ptr %.16, i64 1 - %219 = add nuw nsw i32 %.5224, 1 - br label %220 - -220: ; preds = %216, %217, %212 - %.6225 = phi i32 [ %219, %217 ], [ %.5224, %216 ], [ %.5224, %212 ] - %.17 = phi ptr [ %218, %217 ], [ %.16, %216 ], [ %.16, %212 ] - %221 = icmp ne i32 %.6225, 4 - %brmerge = or i1 %.not239, %221 - br i1 %brmerge, label %222, label %.thread270 - -222: ; preds = %220 - %223 = icmp samesign ugt i32 %.6225, 4 - %224 = and i32 %3, 8 - %.not248 = icmp eq i32 %224, 0 - %or.cond = and i1 %.not248, %223 - br i1 %or.cond, label %.thread270, label %225 - -225: ; preds = %194, %222, %192 - %.3222 = phi i32 [ 2, %192 ], [ %.6225, %222 ], [ %.1220, %194 ] - %.14 = phi ptr [ %193, %192 ], [ %.17, %222 ], [ %.9, %194 ] - br label %226 - -226: ; preds = %226, %225 - %.18 = phi ptr [ %.14, %225 ], [ %232, %226 ] - %227 = load i8, ptr %.18, align 1, !tbaa !4 - %228 = zext i8 %227 to i64 - %229 = getelementptr inbounds nuw i8, ptr getelementptr inbounds nuw (i8, ptr @lj_char_bits, i64 1), i64 %228 - %230 = load i8, ptr %229, align 1, !tbaa !4 - %231 = and i8 %230, 2 - %.not250 = icmp eq i8 %231, 0 - %232 = getelementptr inbounds nuw i8, ptr %.18, i64 1 - br i1 %.not250, label %233, label %226, !llvm.loop !13 - -233: ; preds = %226 - %.not251 = icmp eq i8 %227, 0 - br i1 %.not251, label %234, label %.thread270 - -234: ; preds = %233, %185 - %.2221 = phi i32 [ %.3222, %233 ], [ %.1220, %185 ] - %.13 = phi ptr [ %.18, %233 ], [ %.9, %185 ] - %235 = icmp ult ptr %.13, %6 - br i1 %235, label %.thread270, label %236 - -236: ; preds = %234 - %237 = icmp eq i32 %.2221, 3 - %238 = icmp eq i32 %.0215, 10 - %or.cond4 = and i1 %237, %238 - br i1 %or.cond4, label %239, label %260 - -239: ; preds = %236 - %240 = icmp ult i32 %.2205, 10 - br i1 %240, label %247, label %241 - -241: ; preds = %239 - %242 = icmp eq i32 %.2205, 10 - br i1 %242, label %243, label %.thread277 - -243: ; preds = %241 - %244 = icmp ult i8 %105, 51 - %245 = or i32 %.0213, -2147483648 - %246 = icmp ult i32 %.0198, %245 - %or.cond267 = select i1 %244, i1 %246, i1 false - br i1 %or.cond267, label %247, label %.thread277 - -247: ; preds = %243, %239 - %248 = and i32 %3, 2 - %.not253 = icmp eq i32 %248, 0 - br i1 %.not253, label %253, label %249 - -249: ; preds = %247 +216: ; preds = %215, %215 + %217 = getelementptr inbounds nuw i8, ptr %.16, i64 1 + %218 = add nuw nsw i32 %.5224, 1 + br label %219 + +219: ; preds = %215, %216, %211 + %.6225 = phi i32 [ %218, %216 ], [ %.5224, %215 ], [ %.5224, %211 ] + %.17 = phi ptr [ %217, %216 ], [ %.16, %215 ], [ %.16, %211 ] + %220 = icmp ne i32 %.6225, 4 + %brmerge = or i1 %.not239, %220 + br i1 %brmerge, label %221, label %.thread270 + +221: ; preds = %219 + %222 = icmp samesign ugt i32 %.6225, 4 + %223 = and i32 %3, 8 + %.not248 = icmp eq i32 %223, 0 + %or.cond = and i1 %.not248, %222 + br i1 %or.cond, label %.thread270, label %224 + +224: ; preds = %193, %221, %191 + %.3222 = phi i32 [ 2, %191 ], [ %.6225, %221 ], [ %.1220, %193 ] + %.14 = phi ptr [ %192, %191 ], [ %.17, %221 ], [ %.9, %193 ] + br label %225 + +225: ; preds = %225, %224 + %.18 = phi ptr [ %.14, %224 ], [ %231, %225 ] + %226 = load i8, ptr %.18, align 1, !tbaa !4 + %227 = zext i8 %226 to i64 + %228 = getelementptr inbounds nuw i8, ptr getelementptr inbounds nuw (i8, ptr @lj_char_bits, i64 1), i64 %227 + %229 = load i8, ptr %228, align 1, !tbaa !4 + %230 = and i8 %229, 2 + %.not250 = icmp eq i8 %230, 0 + %231 = getelementptr inbounds nuw i8, ptr %.18, i64 1 + br i1 %.not250, label %232, label %225, !llvm.loop !13 + +232: ; preds = %225 + %.not251 = icmp eq i8 %226, 0 + br i1 %.not251, label %233, label %.thread270 + +233: ; preds = %232, %184 + %.2221 = phi i32 [ %.3222, %232 ], [ %.1220, %184 ] + %.13 = phi ptr [ %.18, %232 ], [ %.9, %184 ] + %234 = icmp ult ptr %.13, %6 + br i1 %234, label %.thread270, label %235 + +235: ; preds = %233 + %236 = icmp eq i32 %.2221, 3 + %237 = icmp eq i32 %.0215, 10 + %or.cond4 = and i1 %236, %237 + br i1 %or.cond4, label %238, label %259 + +238: ; preds = %235 + %239 = icmp ult i32 %.2205, 10 + br i1 %239, label %246, label %240 + +240: ; preds = %238 + %241 = icmp eq i32 %.2205, 10 + br i1 %241, label %242, label %.thread277 + +242: ; preds = %240 + %243 = icmp ult i8 %105, 51 + %244 = or i32 %.0213, -2147483648 + %245 = icmp ult i32 %.0198, %244 + %or.cond267 = select i1 %243, i1 %245, i1 false + br i1 %or.cond267, label %246, label %.thread277 + +246: ; preds = %242, %238 + %247 = and i32 %3, 2 + %.not253 = icmp eq i32 %247, 0 + br i1 %.not253, label %252, label %248 + +248: ; preds = %246 %.not254 = icmp eq i32 %.0213, 0 - %250 = uitofp i32 %.0198 to double - %251 = fneg double %250 - %252 = select i1 %.not254, double %250, double %251 - store double %252, ptr %2, align 8, !tbaa !4 + %249 = uitofp i32 %.0198 to double + %250 = fneg double %249 + %251 = select i1 %.not254, double %249, double %250 + store double %251, ptr %2, align 8, !tbaa !4 br label %.thread270 -253: ; preds = %247 - %254 = icmp eq i32 %.0198, 0 - %255 = icmp ne i32 %.0213, 0 - %or.cond6 = and i1 %255, %254 - br i1 %or.cond6, label %256, label %257 +252: ; preds = %246 + %253 = icmp eq i32 %.0198, 0 + %254 = icmp ne i32 %.0213, 0 + %or.cond6 = and i1 %254, %253 + br i1 %or.cond6, label %255, label %256 -256: ; preds = %253 +255: ; preds = %252 store double -0.000000e+00, ptr %2, align 8, !tbaa !4 br label %.thread270 -257: ; preds = %253 - %258 = sub i32 0, %.0198 - %259 = select i1 %255, i32 %258, i32 %.0198 - store i32 %259, ptr %2, align 8, !tbaa !4 +256: ; preds = %252 + %257 = sub i32 0, %.0198 + %258 = select i1 %254, i32 %257, i32 %.0198 + store i32 %258, ptr %2, align 8, !tbaa !4 br label %.thread270 -260: ; preds = %236 - %261 = icmp ne i32 %.0215, 0 - %262 = add nsw i32 %.2221, -1 - %263 = icmp samesign ult i32 %262, 2 - %or.cond10 = or i1 %261, %263 - br i1 %or.cond10, label %266, label %264 +259: ; preds = %235 + %260 = icmp ne i32 %.0215, 0 + %261 = add nsw i32 %.2221, -1 + %262 = icmp samesign ult i32 %261, 2 + %or.cond10 = or i1 %260, %262 + br i1 %or.cond10, label %265, label %263 -264: ; preds = %260 - %265 = tail call fastcc i32 @strscan_oct(ptr noundef nonnull %.5191, ptr noundef %2, i32 noundef %.2221, i32 noundef %.0213, i32 noundef %.2205) +263: ; preds = %259 + %264 = tail call fastcc i32 @strscan_oct(ptr noundef nonnull %.5191, ptr noundef %2, i32 noundef %.2221, i32 noundef %.0213, i32 noundef %.2205) br label %.thread270 -266: ; preds = %260 +265: ; preds = %259 switch i32 %.0215, label %.thread277 [ - i32 16, label %267 - i32 2, label %269 + i32 16, label %266 + i32 2, label %268 ] -267: ; preds = %266 - %268 = tail call fastcc i32 @strscan_hex(ptr noundef nonnull %.5191, ptr noundef %2, i32 noundef %.2221, i32 noundef %3, i32 noundef %.2196, i32 noundef %.0213, i32 noundef %.2205) - br label %272 - -269: ; preds = %266 - %270 = tail call fastcc i32 @strscan_bin(ptr noundef nonnull %.5191, ptr noundef %2, i32 noundef %.2221, i32 noundef %3, i32 noundef %.2196, i32 noundef %.0213, i32 noundef %.2205) - br label %272 - -.thread277: ; preds = %243, %241, %266 - %271 = tail call fastcc i32 @strscan_dec(ptr noundef nonnull %.5191, ptr noundef %2, i32 noundef %.2221, i32 noundef %3, i32 noundef %.2196, i32 noundef %.0213, i32 noundef %.2205) - br label %272 - -272: ; preds = %269, %.thread277, %267 - %.7226 = phi i32 [ %268, %267 ], [ %270, %269 ], [ %271, %.thread277 ] - %273 = icmp ne i32 %.7226, 1 - %274 = and i32 %3, 1 - %.not252 = icmp eq i32 %274, 0 - %or.cond268 = or i1 %.not252, %273 - br i1 %or.cond268, label %.thread270, label %275 - -275: ; preds = %272 - %276 = load i64, ptr %2, align 8 - %277 = icmp eq i64 %276, -9223372036854775808 - br i1 %277, label %.thread270, label %278 - -278: ; preds = %275 - %279 = bitcast i64 %276 to double - %280 = fptosi double %279 to i32 - %281 = sitofp i32 %280 to double - %282 = fcmp une double %279, %281 - br i1 %282, label %.thread270, label %283 - -283: ; preds = %278 - store i32 %280, ptr %2, align 8, !tbaa !4 +266: ; preds = %265 + %267 = tail call fastcc i32 @strscan_hex(ptr noundef nonnull %.5191, ptr noundef %2, i32 noundef %.2221, i32 noundef %3, i32 noundef %.2196, i32 noundef %.0213, i32 noundef %.2205) + br label %271 + +268: ; preds = %265 + %269 = tail call fastcc i32 @strscan_bin(ptr noundef nonnull %.5191, ptr noundef %2, i32 noundef %.2221, i32 noundef %3, i32 noundef %.2196, i32 noundef %.0213, i32 noundef %.2205) + br label %271 + +.thread277: ; preds = %242, %240, %265 + %270 = tail call fastcc i32 @strscan_dec(ptr noundef nonnull %.5191, ptr noundef %2, i32 noundef %.2221, i32 noundef %3, i32 noundef %.2196, i32 noundef %.0213, i32 noundef %.2205) + br label %271 + +271: ; preds = %268, %.thread277, %266 + %.7226 = phi i32 [ %267, %266 ], [ %269, %268 ], [ %270, %.thread277 ] + %272 = icmp ne i32 %.7226, 1 + %273 = and i32 %3, 1 + %.not252 = icmp eq i32 %273, 0 + %or.cond268 = or i1 %.not252, %272 + br i1 %or.cond268, label %.thread270, label %274 + +274: ; preds = %271 + %275 = load i64, ptr %2, align 8 + %276 = icmp eq i64 %275, -9223372036854775808 + br i1 %276, label %.thread270, label %277 + +277: ; preds = %274 + %278 = bitcast i64 %275 to double + %279 = fptosi double %278 to i32 + %280 = sitofp i32 %279 to double + %281 = fcmp une double %278, %280 + br i1 %281, label %.thread270, label %282 + +282: ; preds = %277 + store i32 %279, ptr %2, align 8, !tbaa !4 br label %.thread270 -.thread270: ; preds = %102, %121, %175, %278, %160, %272, %275, %283, %249, %256, %257, %264, %124, %127, %.critedge, %190, %209, %222, %220, %233, %234, %82, %80 - %.1 = phi i32 [ 1, %82 ], [ 0, %80 ], [ 1, %249 ], [ 1, %256 ], [ 3, %257 ], [ 3, %283 ], [ %265, %264 ], [ 0, %124 ], [ 0, %127 ], [ 0, %.critedge ], [ 0, %190 ], [ 0, %209 ], [ 0, %222 ], [ 0, %220 ], [ 0, %233 ], [ 0, %234 ], [ 1, %275 ], [ %.7226, %272 ], [ 0, %160 ], [ 1, %278 ], [ 0, %175 ], [ 0, %121 ], [ 0, %102 ] +.thread270: ; preds = %102, %121, %174, %277, %159, %271, %274, %282, %248, %255, %256, %263, %124, %127, %.critedge, %189, %208, %221, %219, %232, %233, %82, %80 + %.1 = phi i32 [ 1, %82 ], [ 0, %80 ], [ 1, %248 ], [ 1, %255 ], [ 3, %256 ], [ 3, %282 ], [ %264, %263 ], [ 0, %124 ], [ 0, %127 ], [ 0, %.critedge ], [ 0, %189 ], [ 0, %208 ], [ 0, %221 ], [ 0, %219 ], [ 0, %232 ], [ 0, %233 ], [ 1, %274 ], [ %.7226, %271 ], [ 0, %159 ], [ 1, %277 ], [ 0, %174 ], [ 0, %121 ], [ 0, %102 ] ret i32 %.1 } diff --git a/bench/luau/optimized/lstrlib.ll b/bench/luau/optimized/lstrlib.ll index 9443d57095d..756c260c516 100644 --- a/bench/luau/optimized/lstrlib.ll +++ b/bench/luau/optimized/lstrlib.ll @@ -2008,9 +2008,9 @@ define internal noundef range(i32 -2147483647, -2147483648) i32 @_ZL10str_unpack %.not63181 = icmp eq i8 %22, 0 br i1 %.not63181, label %._crit_edge, label %.lr.ph -.lr.ph: ; preds = %19, %204 - %.0183 = phi i32 [ %205, %204 ], [ %spec.store.select, %19 ] - %.058182 = phi i32 [ %.159, %204 ], [ 0, %19 ] +.lr.ph: ; preds = %19, %201 + %.0183 = phi i32 [ %202, %201 ], [ %spec.store.select, %19 ] + %.058182 = phi i32 [ %.159, %201 ], [ 0, %19 ] call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #14 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #14 %23 = sext i32 %.0183 to i64 @@ -2035,14 +2035,14 @@ define internal noundef range(i32 -2147483647, -2147483648) i32 @_ZL10str_unpack %35 = add nsw i32 %.058182, 1 switch i32 %24, label %default.unreachable214 [ i32 0, label %36 - i32 1, label %86 - i32 2, label %124 - i32 3, label %145 - i32 4, label %148 - i32 5, label %192 - i32 7, label %204 - i32 6, label %204 - i32 8, label %204 + i32 1, label %83 + i32 2, label %121 + i32 3, label %142 + i32 4, label %145 + i32 5, label %189 + i32 7, label %201 + i32 6, label %201 + i32 8, label %201 ] 36: ; preds = %33 @@ -2054,31 +2054,31 @@ define internal noundef range(i32 -2147483647, -2147483648) i32 @_ZL10str_unpack .lr.ph.i: ; preds = %36 %41 = load i32, ptr %20, align 8, !tbaa !52 - %.not41.i = icmp eq i32 %41, 0 + %.not43.i = icmp eq i32 %41, 0 %42 = call i32 @llvm.umin.i32(i32 %27, i32 8) %43 = zext nneg i32 %42 to i64 - br i1 %.not41.i, label %.lr.ph.split.us.i, label %.lr.ph.split.i + br i1 %.not43.i, label %.lr.ph.split.us.i, label %.lr.ph.split.i .lr.ph.split.us.i: ; preds = %.lr.ph.i, %.lr.ph.split.us.i - %indvars.iv52.i = phi i64 [ %indvars.iv.next53.i, %.lr.ph.split.us.i ], [ %43, %.lr.ph.i ] - %.043.us.i = phi i64 [ %51, %.lr.ph.split.us.i ], [ 0, %.lr.ph.i ] - %indvars.iv.next53.i = add nsw i64 %indvars.iv52.i, -1 - %44 = shl i64 %.043.us.i, 8 - %45 = trunc nsw i64 %indvars.iv52.i to i32 + %indvars.iv54.i = phi i64 [ %indvars.iv.next55.i, %.lr.ph.split.us.i ], [ %43, %.lr.ph.i ] + %.045.us.i = phi i64 [ %51, %.lr.ph.split.us.i ], [ 0, %.lr.ph.i ] + %indvars.iv.next55.i = add nsw i64 %indvars.iv54.i, -1 + %44 = shl i64 %.045.us.i, 8 + %45 = trunc nsw i64 %indvars.iv54.i to i32 %46 = sub i32 %27, %45 %47 = sext i32 %46 to i64 %48 = getelementptr inbounds i8, ptr %38, i64 %47 %49 = load i8, ptr %48, align 1, !tbaa !8 %50 = zext i8 %49 to i64 %51 = or disjoint i64 %44, %50 - %52 = icmp samesign ugt i64 %indvars.iv52.i, 1 + %52 = icmp samesign ugt i64 %indvars.iv54.i, 1 br i1 %52, label %.lr.ph.split.us.i, label %._crit_edge.i, !llvm.loop !61 .lr.ph.split.i: ; preds = %.lr.ph.i, %.lr.ph.split.i %indvars.iv.i = phi i64 [ %indvars.iv.next.i, %.lr.ph.split.i ], [ %43, %.lr.ph.i ] - %.043.i = phi i64 [ %57, %.lr.ph.split.i ], [ 0, %.lr.ph.i ] + %.045.i = phi i64 [ %57, %.lr.ph.split.i ], [ 0, %.lr.ph.i ] %indvars.iv.next.i = add nsw i64 %indvars.iv.i, -1 - %53 = shl i64 %.043.i, 8 + %53 = shl i64 %.045.i, 8 %54 = getelementptr inbounds i8, ptr %38, i64 %indvars.iv.next.i %55 = load i8, ptr %54, align 1, !tbaa !8 %56 = zext i8 %55 to i64 @@ -2092,395 +2092,393 @@ define internal noundef range(i32 -2147483647, -2147483648) i32 @_ZL10str_unpack br i1 %59, label %._crit_edge.thread.i, label %66 ._crit_edge.thread.i: ; preds = %._crit_edge.i, %36 - %.0.lcssa61.i = phi i64 [ %.0.lcssa.i, %._crit_edge.i ], [ 0, %36 ] + %.0.lcssa63.i = phi i64 [ %.0.lcssa.i, %._crit_edge.i ], [ 0, %36 ] %60 = shl nsw i32 %27, 3 %61 = add nsw i32 %60, -1 %62 = zext nneg i32 %61 to i64 %63 = shl nuw i64 1, %62 - %64 = xor i64 %.0.lcssa61.i, %63 + %64 = xor i64 %.0.lcssa63.i, %63 %65 = sub i64 %64, %63 br label %_ZL9unpackintP9lua_StatePKciii.exit 66: ; preds = %._crit_edge.i %.not.i = icmp eq i32 %27, 8 - br i1 %.not.i, label %_ZL9unpackintP9lua_StatePKciii.exit, label %.lr.ph46.i - -.lr.ph46.i: ; preds = %66 - %67 = icmp sgt i64 %.0.lcssa.i, -1 - %68 = select i1 %67, i32 0, i32 255 - br i1 %.not41.i, label %.lr.ph46.split.us.preheader.i, label %.lr.ph46.split.preheader.i - -.lr.ph46.split.preheader.i: ; preds = %.lr.ph46.i - %69 = zext nneg i32 %39 to i64 - br label %.lr.ph46.split.i - -.lr.ph46.split.us.preheader.i: ; preds = %.lr.ph46.i - %70 = zext nneg i32 %27 to i64 - br label %.lr.ph46.split.us.i - -.lr.ph46.split.us.i: ; preds = %78, %.lr.ph46.split.us.preheader.i - %indvars.iv58.i = phi i64 [ 8, %.lr.ph46.split.us.preheader.i ], [ %indvars.iv.next59.i, %78 ] - %71 = trunc nsw i64 %indvars.iv58.i to i32 - %72 = xor i32 %71, -1 - %73 = add nsw i32 %27, %72 - %74 = sext i32 %73 to i64 - %75 = getelementptr inbounds i8, ptr %38, i64 %74 - %76 = load i8, ptr %75, align 1, !tbaa !8 - %77 = zext i8 %76 to i32 - %.not39.us.i = icmp eq i32 %68, %77 - br i1 %.not39.us.i, label %78, label %.split.us.i - -78: ; preds = %.lr.ph46.split.us.i - %indvars.iv.next59.i = add nuw nsw i64 %indvars.iv58.i, 1 - %exitcond213.not = icmp eq i64 %indvars.iv.next59.i, %70 - br i1 %exitcond213.not, label %_ZL9unpackintP9lua_StatePKciii.exit, label %.lr.ph46.split.us.i, !llvm.loop !62 - -79: ; preds = %.lr.ph46.split.i - %indvars.iv.next55.i = add nuw nsw i64 %indvars.iv54.i, 1 - %80 = trunc nuw i64 %indvars.iv.next55.i to i32 - %81 = icmp sgt i32 %27, %80 - br i1 %81, label %.lr.ph46.split.i, label %_ZL9unpackintP9lua_StatePKciii.exit, !llvm.loop !62 - -.lr.ph46.split.i: ; preds = %79, %.lr.ph46.split.preheader.i - %indvars.iv54.i = phi i64 [ %69, %.lr.ph46.split.preheader.i ], [ %indvars.iv.next55.i, %79 ] - %82 = getelementptr inbounds nuw i8, ptr %38, i64 %indvars.iv54.i - %83 = load i8, ptr %82, align 1, !tbaa !8 - %84 = zext i8 %83 to i32 - %.not39.i = icmp eq i32 %68, %84 - br i1 %.not39.i, label %79, label %.split.us.i - -.split.us.i: ; preds = %.lr.ph46.split.i, %.lr.ph46.split.us.i + br i1 %.not.i, label %_ZL9unpackintP9lua_StatePKciii.exit, label %.lr.ph48.i + +.lr.ph48.i: ; preds = %66 + %.0.lcssa.i.lobit = ashr i64 %.0.lcssa.i, 63 + %67 = trunc nsw i64 %.0.lcssa.i.lobit to i8 + br i1 %.not43.i, label %.lr.ph48.split.us.preheader.i, label %.lr.ph48.split.preheader.i + +.lr.ph48.split.preheader.i: ; preds = %.lr.ph48.i + %68 = zext nneg i32 %39 to i64 + br label %.lr.ph48.split.i + +.lr.ph48.split.us.preheader.i: ; preds = %.lr.ph48.i + %69 = zext nneg i32 %27 to i64 + br label %.lr.ph48.split.us.i + +.lr.ph48.split.us.i: ; preds = %76, %.lr.ph48.split.us.preheader.i + %indvars.iv60.i = phi i64 [ 8, %.lr.ph48.split.us.preheader.i ], [ %indvars.iv.next61.i, %76 ] + %70 = trunc nsw i64 %indvars.iv60.i to i32 + %71 = xor i32 %70, -1 + %72 = add nsw i32 %27, %71 + %73 = sext i32 %72 to i64 + %74 = getelementptr inbounds i8, ptr %38, i64 %73 + %75 = load i8, ptr %74, align 1, !tbaa !8 + %.not39.us.i = icmp eq i8 %75, %67 + br i1 %.not39.us.i, label %76, label %.split.us.i + +76: ; preds = %.lr.ph48.split.us.i + %indvars.iv.next61.i = add nuw nsw i64 %indvars.iv60.i, 1 + %exitcond213.not = icmp eq i64 %indvars.iv.next61.i, %69 + br i1 %exitcond213.not, label %_ZL9unpackintP9lua_StatePKciii.exit, label %.lr.ph48.split.us.i, !llvm.loop !62 + +77: ; preds = %.lr.ph48.split.i + %indvars.iv.next57.i = add nuw nsw i64 %indvars.iv56.i, 1 + %78 = trunc nuw i64 %indvars.iv.next57.i to i32 + %79 = icmp sgt i32 %27, %78 + br i1 %79, label %.lr.ph48.split.i, label %_ZL9unpackintP9lua_StatePKciii.exit, !llvm.loop !62 + +.lr.ph48.split.i: ; preds = %77, %.lr.ph48.split.preheader.i + %indvars.iv56.i = phi i64 [ %68, %.lr.ph48.split.preheader.i ], [ %indvars.iv.next57.i, %77 ] + %80 = getelementptr inbounds nuw i8, ptr %38, i64 %indvars.iv56.i + %81 = load i8, ptr %80, align 1, !tbaa !8 + %.not39.i = icmp eq i8 %81, %67 + br i1 %.not39.i, label %77, label %.split.us.i + +.split.us.i: ; preds = %.lr.ph48.split.i, %.lr.ph48.split.us.i call void (ptr, ptr, ...) @_Z11luaL_errorLP9lua_StatePKcz(ptr noundef %0, ptr noundef nonnull @.str.63, i32 noundef %27) #15 unreachable -_ZL9unpackintP9lua_StatePKciii.exit: ; preds = %79, %78, %._crit_edge.thread.i, %66 - %.1.i = phi i64 [ %65, %._crit_edge.thread.i ], [ %.0.lcssa.i, %66 ], [ %.0.lcssa.i, %78 ], [ %.0.lcssa.i, %79 ] - %85 = sitofp i64 %.1.i to double - call void @_Z14lua_pushnumberP9lua_Stated(ptr noundef %0, double noundef %85) - br label %204 - -86: ; preds = %33 - %87 = sext i32 %34 to i64 - %88 = getelementptr inbounds i8, ptr %9, i64 %87 - %89 = call i32 @llvm.smin.i32(i32 %27, i32 8) - %90 = icmp sgt i32 %27, 0 - br i1 %90, label %.lr.ph.i69, label %_ZL9unpackintP9lua_StatePKciii.exit95 - -.lr.ph.i69: ; preds = %86 - %91 = load i32, ptr %20, align 8, !tbaa !52 - %.not41.i70 = icmp eq i32 %91, 0 - %92 = call i32 @llvm.umin.i32(i32 %27, i32 8) - %93 = zext nneg i32 %92 to i64 - br i1 %.not41.i70, label %.lr.ph.split.us.i91, label %.lr.ph.split.i71 +_ZL9unpackintP9lua_StatePKciii.exit: ; preds = %77, %76, %._crit_edge.thread.i, %66 + %.1.i = phi i64 [ %65, %._crit_edge.thread.i ], [ %.0.lcssa.i, %66 ], [ %.0.lcssa.i, %76 ], [ %.0.lcssa.i, %77 ] + %82 = sitofp i64 %.1.i to double + call void @_Z14lua_pushnumberP9lua_Stated(ptr noundef %0, double noundef %82) + br label %201 + +83: ; preds = %33 + %84 = sext i32 %34 to i64 + %85 = getelementptr inbounds i8, ptr %9, i64 %84 + %86 = call i32 @llvm.smin.i32(i32 %27, i32 8) + %87 = icmp sgt i32 %27, 0 + br i1 %87, label %.lr.ph.i69, label %_ZL9unpackintP9lua_StatePKciii.exit95 + +.lr.ph.i69: ; preds = %83 + %88 = load i32, ptr %20, align 8, !tbaa !52 + %.not43.i70 = icmp eq i32 %88, 0 + %89 = call i32 @llvm.umin.i32(i32 %27, i32 8) + %90 = zext nneg i32 %89 to i64 + br i1 %.not43.i70, label %.lr.ph.split.us.i91, label %.lr.ph.split.i71 .lr.ph.split.us.i91: ; preds = %.lr.ph.i69, %.lr.ph.split.us.i91 - %indvars.iv52.i92 = phi i64 [ %indvars.iv.next53.i94, %.lr.ph.split.us.i91 ], [ %93, %.lr.ph.i69 ] - %.043.us.i93 = phi i64 [ %101, %.lr.ph.split.us.i91 ], [ 0, %.lr.ph.i69 ] - %indvars.iv.next53.i94 = add nsw i64 %indvars.iv52.i92, -1 - %94 = shl i64 %.043.us.i93, 8 - %95 = trunc nsw i64 %indvars.iv52.i92 to i32 - %96 = sub i32 %27, %95 - %97 = sext i32 %96 to i64 - %98 = getelementptr inbounds i8, ptr %88, i64 %97 - %99 = load i8, ptr %98, align 1, !tbaa !8 - %100 = zext i8 %99 to i64 - %101 = or disjoint i64 %94, %100 - %102 = icmp samesign ugt i64 %indvars.iv52.i92, 1 - br i1 %102, label %.lr.ph.split.us.i91, label %._crit_edge.i75, !llvm.loop !61 + %indvars.iv54.i92 = phi i64 [ %indvars.iv.next55.i94, %.lr.ph.split.us.i91 ], [ %90, %.lr.ph.i69 ] + %.045.us.i93 = phi i64 [ %98, %.lr.ph.split.us.i91 ], [ 0, %.lr.ph.i69 ] + %indvars.iv.next55.i94 = add nsw i64 %indvars.iv54.i92, -1 + %91 = shl i64 %.045.us.i93, 8 + %92 = trunc nsw i64 %indvars.iv54.i92 to i32 + %93 = sub i32 %27, %92 + %94 = sext i32 %93 to i64 + %95 = getelementptr inbounds i8, ptr %85, i64 %94 + %96 = load i8, ptr %95, align 1, !tbaa !8 + %97 = zext i8 %96 to i64 + %98 = or disjoint i64 %91, %97 + %99 = icmp samesign ugt i64 %indvars.iv54.i92, 1 + br i1 %99, label %.lr.ph.split.us.i91, label %._crit_edge.i75, !llvm.loop !61 .lr.ph.split.i71: ; preds = %.lr.ph.i69, %.lr.ph.split.i71 - %indvars.iv.i72 = phi i64 [ %indvars.iv.next.i74, %.lr.ph.split.i71 ], [ %93, %.lr.ph.i69 ] - %.043.i73 = phi i64 [ %107, %.lr.ph.split.i71 ], [ 0, %.lr.ph.i69 ] + %indvars.iv.i72 = phi i64 [ %indvars.iv.next.i74, %.lr.ph.split.i71 ], [ %90, %.lr.ph.i69 ] + %.045.i73 = phi i64 [ %104, %.lr.ph.split.i71 ], [ 0, %.lr.ph.i69 ] %indvars.iv.next.i74 = add nsw i64 %indvars.iv.i72, -1 - %103 = shl i64 %.043.i73, 8 - %104 = getelementptr inbounds i8, ptr %88, i64 %indvars.iv.next.i74 - %105 = load i8, ptr %104, align 1, !tbaa !8 - %106 = zext i8 %105 to i64 - %107 = or disjoint i64 %103, %106 - %108 = icmp samesign ugt i64 %indvars.iv.i72, 1 - br i1 %108, label %.lr.ph.split.i71, label %._crit_edge.i75.thread, !llvm.loop !61 + %100 = shl i64 %.045.i73, 8 + %101 = getelementptr inbounds i8, ptr %85, i64 %indvars.iv.next.i74 + %102 = load i8, ptr %101, align 1, !tbaa !8 + %103 = zext i8 %102 to i64 + %104 = or disjoint i64 %100, %103 + %105 = icmp samesign ugt i64 %indvars.iv.i72, 1 + br i1 %105, label %.lr.ph.split.i71, label %._crit_edge.i75.thread, !llvm.loop !61 ._crit_edge.i75: ; preds = %.lr.ph.split.us.i91 %switch = icmp samesign ult i32 %27, 9 - br i1 %switch, label %_ZL9unpackintP9lua_StatePKciii.exit95, label %.lr.ph46.split.us.preheader.i86 + br i1 %switch, label %_ZL9unpackintP9lua_StatePKciii.exit95, label %.lr.ph48.split.us.preheader.i86 ._crit_edge.i75.thread: ; preds = %.lr.ph.split.i71 %switch216 = icmp samesign ult i32 %27, 9 - br i1 %switch216, label %_ZL9unpackintP9lua_StatePKciii.exit95, label %.lr.ph46.split.preheader.i80 - -.lr.ph46.split.preheader.i80: ; preds = %._crit_edge.i75.thread - %109 = zext nneg i32 %89 to i64 - br label %.lr.ph46.split.i81 - -.lr.ph46.split.us.preheader.i86: ; preds = %._crit_edge.i75 - %110 = zext nneg i32 %27 to i64 - br label %.lr.ph46.split.us.i87 - -.lr.ph46.split.us.i87: ; preds = %117, %.lr.ph46.split.us.preheader.i86 - %indvars.iv58.i88 = phi i64 [ 8, %.lr.ph46.split.us.preheader.i86 ], [ %indvars.iv.next59.i90, %117 ] - %111 = trunc nsw i64 %indvars.iv58.i88 to i32 - %112 = xor i32 %111, -1 - %113 = add nsw i32 %27, %112 - %114 = sext i32 %113 to i64 - %115 = getelementptr inbounds i8, ptr %88, i64 %114 - %116 = load i8, ptr %115, align 1, !tbaa !8 - %.not39.us.i89 = icmp eq i8 %116, 0 - br i1 %.not39.us.i89, label %117, label %.split.us.i84 - -117: ; preds = %.lr.ph46.split.us.i87 - %indvars.iv.next59.i90 = add nuw nsw i64 %indvars.iv58.i88, 1 - %exitcond212.not = icmp eq i64 %indvars.iv.next59.i90, %110 - br i1 %exitcond212.not, label %_ZL9unpackintP9lua_StatePKciii.exit95, label %.lr.ph46.split.us.i87, !llvm.loop !62 - -118: ; preds = %.lr.ph46.split.i81 - %indvars.iv.next55.i85 = add nuw nsw i64 %indvars.iv54.i82, 1 - %119 = trunc nuw i64 %indvars.iv.next55.i85 to i32 - %120 = icmp sgt i32 %27, %119 - br i1 %120, label %.lr.ph46.split.i81, label %_ZL9unpackintP9lua_StatePKciii.exit95, !llvm.loop !62 - -.lr.ph46.split.i81: ; preds = %118, %.lr.ph46.split.preheader.i80 - %indvars.iv54.i82 = phi i64 [ %109, %.lr.ph46.split.preheader.i80 ], [ %indvars.iv.next55.i85, %118 ] - %121 = getelementptr inbounds nuw i8, ptr %88, i64 %indvars.iv54.i82 - %122 = load i8, ptr %121, align 1, !tbaa !8 - %.not39.i83 = icmp eq i8 %122, 0 - br i1 %.not39.i83, label %118, label %.split.us.i84 - -.split.us.i84: ; preds = %.lr.ph46.split.i81, %.lr.ph46.split.us.i87 + br i1 %switch216, label %_ZL9unpackintP9lua_StatePKciii.exit95, label %.lr.ph48.split.preheader.i80 + +.lr.ph48.split.preheader.i80: ; preds = %._crit_edge.i75.thread + %106 = zext nneg i32 %86 to i64 + br label %.lr.ph48.split.i81 + +.lr.ph48.split.us.preheader.i86: ; preds = %._crit_edge.i75 + %107 = zext nneg i32 %27 to i64 + br label %.lr.ph48.split.us.i87 + +.lr.ph48.split.us.i87: ; preds = %114, %.lr.ph48.split.us.preheader.i86 + %indvars.iv60.i88 = phi i64 [ 8, %.lr.ph48.split.us.preheader.i86 ], [ %indvars.iv.next61.i90, %114 ] + %108 = trunc nsw i64 %indvars.iv60.i88 to i32 + %109 = xor i32 %108, -1 + %110 = add nsw i32 %27, %109 + %111 = sext i32 %110 to i64 + %112 = getelementptr inbounds i8, ptr %85, i64 %111 + %113 = load i8, ptr %112, align 1, !tbaa !8 + %.not39.us.i89 = icmp eq i8 %113, 0 + br i1 %.not39.us.i89, label %114, label %.split.us.i84 + +114: ; preds = %.lr.ph48.split.us.i87 + %indvars.iv.next61.i90 = add nuw nsw i64 %indvars.iv60.i88, 1 + %exitcond212.not = icmp eq i64 %indvars.iv.next61.i90, %107 + br i1 %exitcond212.not, label %_ZL9unpackintP9lua_StatePKciii.exit95, label %.lr.ph48.split.us.i87, !llvm.loop !62 + +115: ; preds = %.lr.ph48.split.i81 + %indvars.iv.next57.i85 = add nuw nsw i64 %indvars.iv56.i82, 1 + %116 = trunc nuw i64 %indvars.iv.next57.i85 to i32 + %117 = icmp sgt i32 %27, %116 + br i1 %117, label %.lr.ph48.split.i81, label %_ZL9unpackintP9lua_StatePKciii.exit95, !llvm.loop !62 + +.lr.ph48.split.i81: ; preds = %115, %.lr.ph48.split.preheader.i80 + %indvars.iv56.i82 = phi i64 [ %106, %.lr.ph48.split.preheader.i80 ], [ %indvars.iv.next57.i85, %115 ] + %118 = getelementptr inbounds nuw i8, ptr %85, i64 %indvars.iv56.i82 + %119 = load i8, ptr %118, align 1, !tbaa !8 + %.not39.i83 = icmp eq i8 %119, 0 + br i1 %.not39.i83, label %115, label %.split.us.i84 + +.split.us.i84: ; preds = %.lr.ph48.split.i81, %.lr.ph48.split.us.i87 call void (ptr, ptr, ...) @_Z11luaL_errorLP9lua_StatePKcz(ptr noundef %0, ptr noundef nonnull @.str.63, i32 noundef %27) #15 unreachable -_ZL9unpackintP9lua_StatePKciii.exit95: ; preds = %118, %117, %._crit_edge.i75.thread, %._crit_edge.i75, %86 - %.1.i68 = phi i64 [ 0, %86 ], [ %101, %._crit_edge.i75 ], [ %107, %._crit_edge.i75.thread ], [ %101, %117 ], [ %107, %118 ] - %123 = uitofp i64 %.1.i68 to double - call void @_Z14lua_pushnumberP9lua_Stated(ptr noundef %0, double noundef %123) - br label %204 +_ZL9unpackintP9lua_StatePKciii.exit95: ; preds = %115, %114, %._crit_edge.i75.thread, %._crit_edge.i75, %83 + %.1.i68 = phi i64 [ 0, %83 ], [ %98, %._crit_edge.i75 ], [ %104, %._crit_edge.i75.thread ], [ %98, %114 ], [ %104, %115 ] + %120 = uitofp i64 %.1.i68 to double + call void @_Z14lua_pushnumberP9lua_Stated(ptr noundef %0, double noundef %120) + br label %201 -124: ; preds = %33 +121: ; preds = %33 call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %7) #14 - %125 = sext i32 %34 to i64 - %126 = getelementptr inbounds i8, ptr %9, i64 %125 - %127 = load i32, ptr %20, align 8, !tbaa !52 - %128 = icmp eq i32 %127, 1 + %122 = sext i32 %34 to i64 + %123 = getelementptr inbounds i8, ptr %9, i64 %122 + %124 = load i32, ptr %20, align 8, !tbaa !52 + %125 = icmp eq i32 %124, 1 %.not1218.i = icmp eq i32 %27, 0 - br i1 %128, label %.preheader.i, label %133 + br i1 %125, label %.preheader.i, label %130 -.preheader.i: ; preds = %124 +.preheader.i: ; preds = %121 br i1 %.not1218.i, label %_ZL14copywithendianPVcPVKcii.exit.thread, label %.lr.ph22.i .lr.ph22.i: ; preds = %.preheader.i, %.lr.ph22.i - %.021.i = phi ptr [ %132, %.lr.ph22.i ], [ %7, %.preheader.i ] - %.0820.i = phi i32 [ %129, %.lr.ph22.i ], [ %27, %.preheader.i ] - %.01019.i = phi ptr [ %130, %.lr.ph22.i ], [ %126, %.preheader.i ] - %129 = add nsw i32 %.0820.i, -1 - %130 = getelementptr inbounds nuw i8, ptr %.01019.i, i64 1 - %131 = load volatile i8, ptr %.01019.i, align 1, !tbaa !8 - %132 = getelementptr inbounds nuw i8, ptr %.021.i, i64 1 - store volatile i8 %131, ptr %.021.i, align 1, !tbaa !8 - %.not12.i = icmp eq i32 %129, 0 + %.021.i = phi ptr [ %129, %.lr.ph22.i ], [ %7, %.preheader.i ] + %.0820.i = phi i32 [ %126, %.lr.ph22.i ], [ %27, %.preheader.i ] + %.01019.i = phi ptr [ %127, %.lr.ph22.i ], [ %123, %.preheader.i ] + %126 = add nsw i32 %.0820.i, -1 + %127 = getelementptr inbounds nuw i8, ptr %.01019.i, i64 1 + %128 = load volatile i8, ptr %.01019.i, align 1, !tbaa !8 + %129 = getelementptr inbounds nuw i8, ptr %.021.i, i64 1 + store volatile i8 %128, ptr %.021.i, align 1, !tbaa !8 + %.not12.i = icmp eq i32 %126, 0 br i1 %.not12.i, label %_ZL14copywithendianPVcPVKcii.exit, label %.lr.ph22.i, !llvm.loop !56 -133: ; preds = %124 +130: ; preds = %121 br i1 %.not1218.i, label %_ZL14copywithendianPVcPVKcii.exit.thread, label %.lr.ph.preheader.i -.lr.ph.preheader.i: ; preds = %133 - %134 = getelementptr i8, ptr %7, i64 %28 +.lr.ph.preheader.i: ; preds = %130 + %131 = getelementptr i8, ptr %7, i64 %28 br label %.lr.ph.i96 .lr.ph.i96: ; preds = %.lr.ph.i96, %.lr.ph.preheader.i - %.pn17.i = phi ptr [ %.1.i97, %.lr.ph.i96 ], [ %134, %.lr.ph.preheader.i ] - %.1916.i = phi i32 [ %135, %.lr.ph.i96 ], [ %27, %.lr.ph.preheader.i ] - %.11115.i = phi ptr [ %136, %.lr.ph.i96 ], [ %126, %.lr.ph.preheader.i ] + %.pn17.i = phi ptr [ %.1.i97, %.lr.ph.i96 ], [ %131, %.lr.ph.preheader.i ] + %.1916.i = phi i32 [ %132, %.lr.ph.i96 ], [ %27, %.lr.ph.preheader.i ] + %.11115.i = phi ptr [ %133, %.lr.ph.i96 ], [ %123, %.lr.ph.preheader.i ] %.1.i97 = getelementptr i8, ptr %.pn17.i, i64 -1 - %135 = add nsw i32 %.1916.i, -1 - %136 = getelementptr inbounds nuw i8, ptr %.11115.i, i64 1 - %137 = load volatile i8, ptr %.11115.i, align 1, !tbaa !8 - store volatile i8 %137, ptr %.1.i97, align 1, !tbaa !8 - %.not.i98 = icmp eq i32 %135, 0 + %132 = add nsw i32 %.1916.i, -1 + %133 = getelementptr inbounds nuw i8, ptr %.11115.i, i64 1 + %134 = load volatile i8, ptr %.11115.i, align 1, !tbaa !8 + store volatile i8 %134, ptr %.1.i97, align 1, !tbaa !8 + %.not.i98 = icmp eq i32 %132, 0 br i1 %.not.i98, label %_ZL14copywithendianPVcPVKcii.exit, label %.lr.ph.i96, !llvm.loop !57 _ZL14copywithendianPVcPVKcii.exit: ; preds = %.lr.ph.i96, %.lr.ph22.i switch i32 %27, label %_ZL14copywithendianPVcPVKcii.exit.thread [ - i32 4, label %138 - i32 8, label %141 + i32 4, label %135 + i32 8, label %138 ] -138: ; preds = %_ZL14copywithendianPVcPVKcii.exit - %139 = load volatile float, ptr %7, align 8, !tbaa !8 - %140 = fpext float %139 to double - br label %144 +135: ; preds = %_ZL14copywithendianPVcPVKcii.exit + %136 = load volatile float, ptr %7, align 8, !tbaa !8 + %137 = fpext float %136 to double + br label %141 -141: ; preds = %_ZL14copywithendianPVcPVKcii.exit - %142 = load volatile double, ptr %7, align 8, !tbaa !8 - br label %144 +138: ; preds = %_ZL14copywithendianPVcPVKcii.exit + %139 = load volatile double, ptr %7, align 8, !tbaa !8 + br label %141 -_ZL14copywithendianPVcPVKcii.exit.thread: ; preds = %133, %.preheader.i, %_ZL14copywithendianPVcPVKcii.exit - %143 = load volatile double, ptr %7, align 8, !tbaa !8 - br label %144 +_ZL14copywithendianPVcPVKcii.exit.thread: ; preds = %130, %.preheader.i, %_ZL14copywithendianPVcPVKcii.exit + %140 = load volatile double, ptr %7, align 8, !tbaa !8 + br label %141 -144: ; preds = %141, %_ZL14copywithendianPVcPVKcii.exit.thread, %138 - %.060 = phi double [ %140, %138 ], [ %142, %141 ], [ %143, %_ZL14copywithendianPVcPVKcii.exit.thread ] +141: ; preds = %138, %_ZL14copywithendianPVcPVKcii.exit.thread, %135 + %.060 = phi double [ %137, %135 ], [ %139, %138 ], [ %140, %_ZL14copywithendianPVcPVKcii.exit.thread ] call void @_Z14lua_pushnumberP9lua_Stated(ptr noundef %0, double noundef %.060) call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %7) #14 - br label %204 + br label %201 + +142: ; preds = %33 + %143 = sext i32 %34 to i64 + %144 = getelementptr inbounds i8, ptr %9, i64 %143 + call void @_Z15lua_pushlstringP9lua_StatePKcm(ptr noundef %0, ptr noundef %144, i64 noundef %28) + br label %201 145: ; preds = %33 %146 = sext i32 %34 to i64 %147 = getelementptr inbounds i8, ptr %9, i64 %146 - call void @_Z15lua_pushlstringP9lua_StatePKcm(ptr noundef %0, ptr noundef %147, i64 noundef %28) - br label %204 - -148: ; preds = %33 - %149 = sext i32 %34 to i64 - %150 = getelementptr inbounds i8, ptr %9, i64 %149 - %151 = call i32 @llvm.smin.i32(i32 %27, i32 8) - %152 = icmp sgt i32 %27, 0 - br i1 %152, label %.lr.ph.i102, label %_ZL9unpackintP9lua_StatePKciii.exit128.thread - -.lr.ph.i102: ; preds = %148 - %153 = load i32, ptr %20, align 8, !tbaa !52 - %.not41.i103 = icmp eq i32 %153, 0 - %154 = call i32 @llvm.umin.i32(i32 %27, i32 8) - %155 = zext nneg i32 %154 to i64 - br i1 %.not41.i103, label %.lr.ph.split.us.i124, label %.lr.ph.split.i104 + %148 = call i32 @llvm.smin.i32(i32 %27, i32 8) + %149 = icmp sgt i32 %27, 0 + br i1 %149, label %.lr.ph.i102, label %_ZL9unpackintP9lua_StatePKciii.exit128.thread + +.lr.ph.i102: ; preds = %145 + %150 = load i32, ptr %20, align 8, !tbaa !52 + %.not43.i103 = icmp eq i32 %150, 0 + %151 = call i32 @llvm.umin.i32(i32 %27, i32 8) + %152 = zext nneg i32 %151 to i64 + br i1 %.not43.i103, label %.lr.ph.split.us.i124, label %.lr.ph.split.i104 .lr.ph.split.us.i124: ; preds = %.lr.ph.i102, %.lr.ph.split.us.i124 - %indvars.iv52.i125 = phi i64 [ %indvars.iv.next53.i127, %.lr.ph.split.us.i124 ], [ %155, %.lr.ph.i102 ] - %.043.us.i126 = phi i64 [ %163, %.lr.ph.split.us.i124 ], [ 0, %.lr.ph.i102 ] - %indvars.iv.next53.i127 = add nsw i64 %indvars.iv52.i125, -1 - %156 = shl i64 %.043.us.i126, 8 - %157 = trunc nsw i64 %indvars.iv52.i125 to i32 - %158 = sub i32 %27, %157 - %159 = sext i32 %158 to i64 - %160 = getelementptr inbounds i8, ptr %150, i64 %159 - %161 = load i8, ptr %160, align 1, !tbaa !8 - %162 = zext i8 %161 to i64 - %163 = or disjoint i64 %156, %162 - %164 = icmp samesign ugt i64 %indvars.iv52.i125, 1 - br i1 %164, label %.lr.ph.split.us.i124, label %._crit_edge.i108, !llvm.loop !61 + %indvars.iv54.i125 = phi i64 [ %indvars.iv.next55.i127, %.lr.ph.split.us.i124 ], [ %152, %.lr.ph.i102 ] + %.045.us.i126 = phi i64 [ %160, %.lr.ph.split.us.i124 ], [ 0, %.lr.ph.i102 ] + %indvars.iv.next55.i127 = add nsw i64 %indvars.iv54.i125, -1 + %153 = shl i64 %.045.us.i126, 8 + %154 = trunc nsw i64 %indvars.iv54.i125 to i32 + %155 = sub i32 %27, %154 + %156 = sext i32 %155 to i64 + %157 = getelementptr inbounds i8, ptr %147, i64 %156 + %158 = load i8, ptr %157, align 1, !tbaa !8 + %159 = zext i8 %158 to i64 + %160 = or disjoint i64 %153, %159 + %161 = icmp samesign ugt i64 %indvars.iv54.i125, 1 + br i1 %161, label %.lr.ph.split.us.i124, label %._crit_edge.i108, !llvm.loop !61 .lr.ph.split.i104: ; preds = %.lr.ph.i102, %.lr.ph.split.i104 - %indvars.iv.i105 = phi i64 [ %indvars.iv.next.i107, %.lr.ph.split.i104 ], [ %155, %.lr.ph.i102 ] - %.043.i106 = phi i64 [ %169, %.lr.ph.split.i104 ], [ 0, %.lr.ph.i102 ] + %indvars.iv.i105 = phi i64 [ %indvars.iv.next.i107, %.lr.ph.split.i104 ], [ %152, %.lr.ph.i102 ] + %.045.i106 = phi i64 [ %166, %.lr.ph.split.i104 ], [ 0, %.lr.ph.i102 ] %indvars.iv.next.i107 = add nsw i64 %indvars.iv.i105, -1 - %165 = shl i64 %.043.i106, 8 - %166 = getelementptr inbounds i8, ptr %150, i64 %indvars.iv.next.i107 - %167 = load i8, ptr %166, align 1, !tbaa !8 - %168 = zext i8 %167 to i64 - %169 = or disjoint i64 %165, %168 - %170 = icmp samesign ugt i64 %indvars.iv.i105, 1 - br i1 %170, label %.lr.ph.split.i104, label %._crit_edge.i108.thread, !llvm.loop !61 + %162 = shl i64 %.045.i106, 8 + %163 = getelementptr inbounds i8, ptr %147, i64 %indvars.iv.next.i107 + %164 = load i8, ptr %163, align 1, !tbaa !8 + %165 = zext i8 %164 to i64 + %166 = or disjoint i64 %162, %165 + %167 = icmp samesign ugt i64 %indvars.iv.i105, 1 + br i1 %167, label %.lr.ph.split.i104, label %._crit_edge.i108.thread, !llvm.loop !61 ._crit_edge.i108: ; preds = %.lr.ph.split.us.i124 %switch133 = icmp samesign ult i32 %27, 9 - br i1 %switch133, label %_ZL9unpackintP9lua_StatePKciii.exit128, label %.lr.ph46.split.us.preheader.i119 + br i1 %switch133, label %_ZL9unpackintP9lua_StatePKciii.exit128, label %.lr.ph48.split.us.preheader.i119 ._crit_edge.i108.thread: ; preds = %.lr.ph.split.i104 %switch133221 = icmp samesign ult i32 %27, 9 - br i1 %switch133221, label %_ZL9unpackintP9lua_StatePKciii.exit128, label %.lr.ph46.split.preheader.i113 - -.lr.ph46.split.preheader.i113: ; preds = %._crit_edge.i108.thread - %171 = zext nneg i32 %151 to i64 - br label %.lr.ph46.split.i114 - -.lr.ph46.split.us.preheader.i119: ; preds = %._crit_edge.i108 - %172 = zext nneg i32 %27 to i64 - br label %.lr.ph46.split.us.i120 - -.lr.ph46.split.us.i120: ; preds = %179, %.lr.ph46.split.us.preheader.i119 - %indvars.iv58.i121 = phi i64 [ 8, %.lr.ph46.split.us.preheader.i119 ], [ %indvars.iv.next59.i123, %179 ] - %173 = trunc nsw i64 %indvars.iv58.i121 to i32 - %174 = xor i32 %173, -1 - %175 = add nsw i32 %27, %174 - %176 = sext i32 %175 to i64 - %177 = getelementptr inbounds i8, ptr %150, i64 %176 - %178 = load i8, ptr %177, align 1, !tbaa !8 - %.not39.us.i122 = icmp eq i8 %178, 0 - br i1 %.not39.us.i122, label %179, label %.split.us.i117 - -179: ; preds = %.lr.ph46.split.us.i120 - %indvars.iv.next59.i123 = add nuw nsw i64 %indvars.iv58.i121, 1 - %exitcond.not = icmp eq i64 %indvars.iv.next59.i123, %172 - br i1 %exitcond.not, label %_ZL9unpackintP9lua_StatePKciii.exit128, label %.lr.ph46.split.us.i120, !llvm.loop !62 - -180: ; preds = %.lr.ph46.split.i114 - %indvars.iv.next55.i118 = add nuw nsw i64 %indvars.iv54.i115, 1 - %181 = trunc nuw i64 %indvars.iv.next55.i118 to i32 - %182 = icmp sgt i32 %27, %181 - br i1 %182, label %.lr.ph46.split.i114, label %_ZL9unpackintP9lua_StatePKciii.exit128, !llvm.loop !62 - -.lr.ph46.split.i114: ; preds = %180, %.lr.ph46.split.preheader.i113 - %indvars.iv54.i115 = phi i64 [ %171, %.lr.ph46.split.preheader.i113 ], [ %indvars.iv.next55.i118, %180 ] - %183 = getelementptr inbounds nuw i8, ptr %150, i64 %indvars.iv54.i115 - %184 = load i8, ptr %183, align 1, !tbaa !8 - %.not39.i116 = icmp eq i8 %184, 0 - br i1 %.not39.i116, label %180, label %.split.us.i117 - -.split.us.i117: ; preds = %.lr.ph46.split.i114, %.lr.ph46.split.us.i120 + br i1 %switch133221, label %_ZL9unpackintP9lua_StatePKciii.exit128, label %.lr.ph48.split.preheader.i113 + +.lr.ph48.split.preheader.i113: ; preds = %._crit_edge.i108.thread + %168 = zext nneg i32 %148 to i64 + br label %.lr.ph48.split.i114 + +.lr.ph48.split.us.preheader.i119: ; preds = %._crit_edge.i108 + %169 = zext nneg i32 %27 to i64 + br label %.lr.ph48.split.us.i120 + +.lr.ph48.split.us.i120: ; preds = %176, %.lr.ph48.split.us.preheader.i119 + %indvars.iv60.i121 = phi i64 [ 8, %.lr.ph48.split.us.preheader.i119 ], [ %indvars.iv.next61.i123, %176 ] + %170 = trunc nsw i64 %indvars.iv60.i121 to i32 + %171 = xor i32 %170, -1 + %172 = add nsw i32 %27, %171 + %173 = sext i32 %172 to i64 + %174 = getelementptr inbounds i8, ptr %147, i64 %173 + %175 = load i8, ptr %174, align 1, !tbaa !8 + %.not39.us.i122 = icmp eq i8 %175, 0 + br i1 %.not39.us.i122, label %176, label %.split.us.i117 + +176: ; preds = %.lr.ph48.split.us.i120 + %indvars.iv.next61.i123 = add nuw nsw i64 %indvars.iv60.i121, 1 + %exitcond.not = icmp eq i64 %indvars.iv.next61.i123, %169 + br i1 %exitcond.not, label %_ZL9unpackintP9lua_StatePKciii.exit128, label %.lr.ph48.split.us.i120, !llvm.loop !62 + +177: ; preds = %.lr.ph48.split.i114 + %indvars.iv.next57.i118 = add nuw nsw i64 %indvars.iv56.i115, 1 + %178 = trunc nuw i64 %indvars.iv.next57.i118 to i32 + %179 = icmp sgt i32 %27, %178 + br i1 %179, label %.lr.ph48.split.i114, label %_ZL9unpackintP9lua_StatePKciii.exit128, !llvm.loop !62 + +.lr.ph48.split.i114: ; preds = %177, %.lr.ph48.split.preheader.i113 + %indvars.iv56.i115 = phi i64 [ %168, %.lr.ph48.split.preheader.i113 ], [ %indvars.iv.next57.i118, %177 ] + %180 = getelementptr inbounds nuw i8, ptr %147, i64 %indvars.iv56.i115 + %181 = load i8, ptr %180, align 1, !tbaa !8 + %.not39.i116 = icmp eq i8 %181, 0 + br i1 %.not39.i116, label %177, label %.split.us.i117 + +.split.us.i117: ; preds = %.lr.ph48.split.i114, %.lr.ph48.split.us.i120 call void (ptr, ptr, ...) @_Z11luaL_errorLP9lua_StatePKcz(ptr noundef %0, ptr noundef nonnull @.str.63, i32 noundef %27) #15 unreachable -_ZL9unpackintP9lua_StatePKciii.exit128: ; preds = %180, %179, %._crit_edge.i108.thread, %._crit_edge.i108 - %.0.lcssa.i109223 = phi i64 [ %169, %._crit_edge.i108.thread ], [ %163, %._crit_edge.i108 ], [ %163, %179 ], [ %169, %180 ] - %185 = load i64, ptr %4, align 8, !tbaa !4 - %186 = add nsw i64 %149, %28 - %187 = sub i64 %185, %186 - %.not65 = icmp ugt i64 %.0.lcssa.i109223, %187 - br i1 %.not65, label %188, label %_ZL9unpackintP9lua_StatePKciii.exit128.thread +_ZL9unpackintP9lua_StatePKciii.exit128: ; preds = %177, %176, %._crit_edge.i108.thread, %._crit_edge.i108 + %.0.lcssa.i109223 = phi i64 [ %166, %._crit_edge.i108.thread ], [ %160, %._crit_edge.i108 ], [ %160, %176 ], [ %166, %177 ] + %182 = load i64, ptr %4, align 8, !tbaa !4 + %183 = add nsw i64 %146, %28 + %184 = sub i64 %182, %183 + %.not65 = icmp ugt i64 %.0.lcssa.i109223, %184 + br i1 %.not65, label %185, label %_ZL9unpackintP9lua_StatePKciii.exit128.thread -188: ; preds = %_ZL9unpackintP9lua_StatePKciii.exit128 +185: ; preds = %_ZL9unpackintP9lua_StatePKciii.exit128 call void @_Z14luaL_argerrorLP9lua_StateiPKc(ptr noundef %0, i32 noundef 2, ptr noundef nonnull @.str.60) #15 unreachable -_ZL9unpackintP9lua_StatePKciii.exit128.thread: ; preds = %148, %_ZL9unpackintP9lua_StatePKciii.exit128 - %.1.i101131 = phi i64 [ %.0.lcssa.i109223, %_ZL9unpackintP9lua_StatePKciii.exit128 ], [ 0, %148 ] - %189 = getelementptr inbounds i8, ptr %150, i64 %28 - call void @_Z15lua_pushlstringP9lua_StatePKcm(ptr noundef %0, ptr noundef %189, i64 noundef %.1.i101131) - %190 = trunc i64 %.1.i101131 to i32 - %191 = add nsw i32 %34, %190 - br label %204 - -192: ; preds = %33 - %193 = sext i32 %34 to i64 - %194 = getelementptr inbounds i8, ptr %9, i64 %193 - %195 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %194) #16 - %196 = add i64 %195, %193 - %197 = load i64, ptr %4, align 8, !tbaa !4 - %198 = icmp ult i64 %196, %197 - br i1 %198, label %200, label %199 - -199: ; preds = %192 +_ZL9unpackintP9lua_StatePKciii.exit128.thread: ; preds = %145, %_ZL9unpackintP9lua_StatePKciii.exit128 + %.1.i101131 = phi i64 [ %.0.lcssa.i109223, %_ZL9unpackintP9lua_StatePKciii.exit128 ], [ 0, %145 ] + %186 = getelementptr inbounds i8, ptr %147, i64 %28 + call void @_Z15lua_pushlstringP9lua_StatePKcm(ptr noundef %0, ptr noundef %186, i64 noundef %.1.i101131) + %187 = trunc i64 %.1.i101131 to i32 + %188 = add nsw i32 %34, %187 + br label %201 + +189: ; preds = %33 + %190 = sext i32 %34 to i64 + %191 = getelementptr inbounds i8, ptr %9, i64 %190 + %192 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %191) #16 + %193 = add i64 %192, %190 + %194 = load i64, ptr %4, align 8, !tbaa !4 + %195 = icmp ult i64 %193, %194 + br i1 %195, label %197, label %196 + +196: ; preds = %189 call void @_Z14luaL_argerrorLP9lua_StateiPKc(ptr noundef %0, i32 noundef 2, ptr noundef nonnull @.str.62) #15 unreachable -200: ; preds = %192 - call void @_Z15lua_pushlstringP9lua_StatePKcm(ptr noundef %0, ptr noundef nonnull %194, i64 noundef %195) - %201 = trunc i64 %195 to i32 - %202 = add i32 %34, 1 - %203 = add i32 %202, %201 - br label %204 +197: ; preds = %189 + call void @_Z15lua_pushlstringP9lua_StatePKcm(ptr noundef %0, ptr noundef nonnull %191, i64 noundef %192) + %198 = trunc i64 %192 to i32 + %199 = add i32 %34, 1 + %200 = add i32 %199, %198 + br label %201 default.unreachable214: ; preds = %33 unreachable -204: ; preds = %33, %33, %33, %200, %_ZL9unpackintP9lua_StatePKciii.exit128.thread, %145, %144, %_ZL9unpackintP9lua_StatePKciii.exit95, %_ZL9unpackintP9lua_StatePKciii.exit - %.159 = phi i32 [ %35, %_ZL9unpackintP9lua_StatePKciii.exit ], [ %35, %_ZL9unpackintP9lua_StatePKciii.exit95 ], [ %35, %144 ], [ %35, %145 ], [ %35, %_ZL9unpackintP9lua_StatePKciii.exit128.thread ], [ %35, %200 ], [ %.058182, %33 ], [ %.058182, %33 ], [ %.058182, %33 ] - %.1 = phi i32 [ %34, %_ZL9unpackintP9lua_StatePKciii.exit ], [ %34, %_ZL9unpackintP9lua_StatePKciii.exit95 ], [ %34, %144 ], [ %34, %145 ], [ %191, %_ZL9unpackintP9lua_StatePKciii.exit128.thread ], [ %203, %200 ], [ %34, %33 ], [ %34, %33 ], [ %34, %33 ] - %205 = add nsw i32 %.1, %27 +201: ; preds = %33, %33, %33, %197, %_ZL9unpackintP9lua_StatePKciii.exit128.thread, %142, %141, %_ZL9unpackintP9lua_StatePKciii.exit95, %_ZL9unpackintP9lua_StatePKciii.exit + %.159 = phi i32 [ %35, %_ZL9unpackintP9lua_StatePKciii.exit ], [ %35, %_ZL9unpackintP9lua_StatePKciii.exit95 ], [ %35, %141 ], [ %35, %142 ], [ %35, %_ZL9unpackintP9lua_StatePKciii.exit128.thread ], [ %35, %197 ], [ %.058182, %33 ], [ %.058182, %33 ], [ %.058182, %33 ] + %.1 = phi i32 [ %34, %_ZL9unpackintP9lua_StatePKciii.exit ], [ %34, %_ZL9unpackintP9lua_StatePKciii.exit95 ], [ %34, %141 ], [ %34, %142 ], [ %188, %_ZL9unpackintP9lua_StatePKciii.exit128.thread ], [ %200, %197 ], [ %34, %33 ], [ %34, %33 ], [ %34, %33 ] + %202 = add nsw i32 %.1, %27 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #14 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #14 - %206 = load ptr, ptr %3, align 8, !tbaa !49 - %207 = load i8, ptr %206, align 1, !tbaa !8 - %.not63 = icmp eq i8 %207, 0 + %203 = load ptr, ptr %3, align 8, !tbaa !49 + %204 = load i8, ptr %203, align 1, !tbaa !8 + %.not63 = icmp eq i8 %204, 0 br i1 %.not63, label %._crit_edge.loopexit, label %.lr.ph, !llvm.loop !63 -._crit_edge.loopexit: ; preds = %204 - %208 = add nsw i32 %205, 1 - %209 = add nsw i32 %.159, 1 +._crit_edge.loopexit: ; preds = %201 + %205 = add nsw i32 %202, 1 + %206 = add nsw i32 %.159, 1 br label %._crit_edge ._crit_edge: ; preds = %._crit_edge.loopexit, %19 - %.058.lcssa = phi i32 [ 1, %19 ], [ %209, %._crit_edge.loopexit ] - %.0.lcssa = phi i32 [ %16, %19 ], [ %208, %._crit_edge.loopexit ] + %.058.lcssa = phi i32 [ 1, %19 ], [ %206, %._crit_edge.loopexit ] + %.0.lcssa = phi i32 [ %16, %19 ], [ %205, %._crit_edge.loopexit ] call void @_Z15lua_pushintegerP9lua_Statei(ptr noundef %0, i32 noundef %.0.lcssa) call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #14 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #14 diff --git a/bench/mold/optimized/icf.cc.X86_64.ll b/bench/mold/optimized/icf.cc.X86_64.ll index 3d371b7d6ec..7015aaf6032 100644 --- a/bench/mold/optimized/icf.cc.X86_64.ll +++ b/bench/mold/optimized/icf.cc.X86_64.ll @@ -2901,8 +2901,8 @@ _ZN3tbb6detail2d112parallel_forIlZN4moldL17count_num_classesINS3_6X86_64EEElSt4s %888 = load atomic i64, ptr %820 acquire, align 8, !noalias !219 %.0.i.i.i.i.i.i.i.i.i = inttoptr i64 %888 to ptr %889 = icmp eq ptr %scevgep.i.i.i.i.i87, %.0.i.i.i.i.i.i.i.i.i - %890 = select i1 %889, i64 3, i64 64 - %891 = load ptr, ptr %819, align 8, !tbaa !205, !noalias !219 + %890 = load ptr, ptr %819, align 8, !tbaa !205, !noalias !219 + %891 = select i1 %889, i64 2, i64 63 br label %892 892: ; preds = %897, %_ZN3tbb6detail2d112parallel_forIlZN4moldL17count_num_classesINS3_6X86_64EEElSt4spanISt5arrayIhLm16EELm18446744073709551615EERNS1_20affinity_partitionerEEUllE_EEvT_SD_RKT0_SB_.exit.i @@ -2910,7 +2910,7 @@ _ZN3tbb6detail2d112parallel_forIlZN4moldL17count_num_classesINS3_6X86_64EEElSt4s %893 = getelementptr inbounds nuw %"struct.std::atomic.255", ptr %.0.i.i.i.i.i.i.i.i.i, i64 %.01015.i.i.i.i.i.i %894 = load atomic i64, ptr %893 monotonic, align 8, !noalias !219 %.0.i.i.i.i.i.i.i.i = inttoptr i64 %894 to ptr - %.not.i.i.i.i.i2.i = icmp ult ptr %891, %.0.i.i.i.i.i.i.i.i + %.not.i.i.i.i.i2.i = icmp ult ptr %890, %.0.i.i.i.i.i.i.i.i br i1 %.not.i.i.i.i.i2.i, label %897, label %.thread.i.i.i.i.i.i .thread.i.i.i.i.i.i: ; preds = %892 @@ -2920,7 +2920,7 @@ _ZN3tbb6detail2d112parallel_forIlZN4moldL17count_num_classesINS3_6X86_64EEElSt4s 897: ; preds = %892 %898 = add nuw nsw i64 %.01015.i.i.i.i.i.i, 1 - %exitcond.not.i.i.i.i.i.i = icmp eq i64 %898, %890 + %exitcond.not.i.i.i.i.i.i = icmp eq i64 %891, %.01015.i.i.i.i.i.i br i1 %exitcond.not.i.i.i.i.i.i, label %_ZN3tbb6detail2d126enumerable_thread_specificIlNS1_23cache_aligned_allocatorIlEELNS1_18ets_key_usage_typeE1EE3endEv.exit.i.i, label %892, !llvm.loop !222 _ZN3tbb6detail2d126enumerable_thread_specificIlNS1_23cache_aligned_allocatorIlEELNS1_18ets_key_usage_typeE1EE3endEv.exit.i.i: ; preds = %897, %.thread.i.i.i.i.i.i @@ -2957,8 +2957,8 @@ _ZNK3tbb6detail2d135enumerable_thread_specific_iteratorINS1_17concurrent_vectorI %911 = load atomic i64, ptr %820 acquire, align 8, !noalias !226 %.0.i.i.i.i.i.i.i2.i.i = inttoptr i64 %911 to ptr %912 = icmp eq ptr %scevgep.i.i.i.i.i87, %.0.i.i.i.i.i.i.i2.i.i - %913 = select i1 %912, i64 3, i64 64 - %914 = load ptr, ptr %819, align 8, !tbaa !205, !noalias !226 + %913 = load ptr, ptr %819, align 8, !tbaa !205, !noalias !226 + %914 = select i1 %912, i64 2, i64 63 br label %915 915: ; preds = %920, %908 @@ -2966,7 +2966,7 @@ _ZNK3tbb6detail2d135enumerable_thread_specific_iteratorINS1_17concurrent_vectorI %916 = getelementptr inbounds nuw %"struct.std::atomic.255", ptr %.0.i.i.i.i.i.i.i2.i.i, i64 %.01015.i.i.i.i3.i.i %917 = load atomic i64, ptr %916 monotonic, align 8, !noalias !226 %.0.i.i.i.i.i.i4.i.i = inttoptr i64 %917 to ptr - %.not.i.i.i.i5.i.i = icmp ult ptr %914, %.0.i.i.i.i.i.i4.i.i + %.not.i.i.i.i5.i.i = icmp ult ptr %913, %.0.i.i.i.i.i.i4.i.i br i1 %.not.i.i.i.i5.i.i, label %920, label %.thread.i.i.i.i6.i.i .thread.i.i.i.i6.i.i: ; preds = %915 @@ -2976,7 +2976,7 @@ _ZNK3tbb6detail2d135enumerable_thread_specific_iteratorINS1_17concurrent_vectorI 920: ; preds = %915 %921 = add nuw nsw i64 %.01015.i.i.i.i3.i.i, 1 - %exitcond.not.i.i.i.i9.i.i = icmp eq i64 %921, %913 + %exitcond.not.i.i.i.i9.i.i = icmp eq i64 %914, %.01015.i.i.i.i3.i.i br i1 %exitcond.not.i.i.i.i9.i.i, label %_ZN3tbb6detail2d126enumerable_thread_specificIlNS1_23cache_aligned_allocatorIlEELNS1_18ets_key_usage_typeE1EE3endEv.exit10.i.i, label %915, !llvm.loop !222 _ZN3tbb6detail2d126enumerable_thread_specificIlNS1_23cache_aligned_allocatorIlEELNS1_18ets_key_usage_typeE1EE3endEv.exit10.i.i: ; preds = %920, %.thread.i.i.i.i6.i.i @@ -3422,8 +3422,8 @@ _ZN3tbb6detail2d217parallel_for_eachISt6vectorIPN4mold10ObjectFileINS4_6X86_64EE %1088 = load atomic i64, ptr %1050 acquire, align 8, !noalias !527 %.0.i.i.i.i.i.i.i.i112 = inttoptr i64 %1088 to ptr %1089 = icmp eq ptr %scevgep.i.i.i.i, %.0.i.i.i.i.i.i.i.i112 - %1090 = select i1 %1089, i64 3, i64 64 - %1091 = load ptr, ptr %16, align 8, !tbaa !503, !noalias !527 + %1090 = load ptr, ptr %16, align 8, !tbaa !503, !noalias !527 + %1091 = select i1 %1089, i64 2, i64 63 br label %1092 1092: ; preds = %1097, %_ZN3tbb6detail2d217parallel_for_eachISt6vectorIPN4mold10ObjectFileINS4_6X86_64EEESaIS8_EEZNS4_L18print_icf_sectionsIS6_EEvRNS4_7ContextIT_EEEUlS8_E_EEvRSD_RKT0_.exit.i @@ -3431,7 +3431,7 @@ _ZN3tbb6detail2d217parallel_for_eachISt6vectorIPN4mold10ObjectFileINS4_6X86_64EE %1093 = getelementptr inbounds nuw %"struct.std::atomic.567", ptr %.0.i.i.i.i.i.i.i.i112, i64 %.01015.i.i.i.i.i %1094 = load atomic i64, ptr %1093 monotonic, align 8, !noalias !527 %.0.i.i.i.i.i.i.i = inttoptr i64 %1094 to ptr - %.not.i.i.i.i15.i = icmp ult ptr %1091, %.0.i.i.i.i.i.i.i + %.not.i.i.i.i15.i = icmp ult ptr %1090, %.0.i.i.i.i.i.i.i br i1 %.not.i.i.i.i15.i, label %1097, label %.thread.i.i.i.i.i .thread.i.i.i.i.i: ; preds = %1092 @@ -3441,7 +3441,7 @@ _ZN3tbb6detail2d217parallel_for_eachISt6vectorIPN4mold10ObjectFileINS4_6X86_64EE 1097: ; preds = %1092 %1098 = add nuw nsw i64 %.01015.i.i.i.i.i, 1 - %exitcond.not.i.i.i.i.i = icmp eq i64 %1098, %1090 + %exitcond.not.i.i.i.i.i = icmp eq i64 %1091, %.01015.i.i.i.i.i br i1 %exitcond.not.i.i.i.i.i, label %_ZN3tbb6detail2d117concurrent_vectorIPN4mold12InputSectionINS3_6X86_64EEENS1_23cache_aligned_allocatorIS7_EEE3endEv.exit.i, label %1092, !llvm.loop !530 _ZN3tbb6detail2d117concurrent_vectorIPN4mold12InputSectionINS3_6X86_64EEENS1_23cache_aligned_allocatorIS7_EEE3endEv.exit.i: ; preds = %1097, %.thread.i.i.i.i.i @@ -3703,8 +3703,8 @@ _ZN3tbb6detail2d113parallel_sortINS1_15vector_iteratorINS1_17concurrent_vectorIP %1202 = load atomic i64, ptr %1050 acquire, align 8, !noalias !563 %.0.i.i.i.i.i.i.i18.i = inttoptr i64 %1202 to ptr %1203 = icmp eq ptr %scevgep.i.i.i.i, %.0.i.i.i.i.i.i.i18.i - %1204 = select i1 %1203, i64 3, i64 64 - %1205 = load ptr, ptr %16, align 8, !tbaa !503, !noalias !563 + %1204 = load ptr, ptr %16, align 8, !tbaa !503, !noalias !563 + %1205 = select i1 %1203, i64 2, i64 63 br label %1206 1206: ; preds = %1211, %_ZN3tbb6detail2d113parallel_sortINS1_15vector_iteratorINS1_17concurrent_vectorIPN4mold12InputSectionINS5_6X86_64EEENS1_23cache_aligned_allocatorIS9_EEEES9_EEZNS5_L18print_icf_sectionsIS7_EEvRNS5_7ContextIT_EEEUlS9_S9_E_EEvSG_SG_RKT0_.exit.i @@ -3712,7 +3712,7 @@ _ZN3tbb6detail2d113parallel_sortINS1_15vector_iteratorINS1_17concurrent_vectorIP %1207 = getelementptr inbounds nuw %"struct.std::atomic.567", ptr %.0.i.i.i.i.i.i.i18.i, i64 %.01015.i.i.i.i19.i %1208 = load atomic i64, ptr %1207 monotonic, align 8, !noalias !563 %.0.i.i.i.i.i.i20.i = inttoptr i64 %1208 to ptr - %.not.i.i.i.i21.i = icmp ult ptr %1205, %.0.i.i.i.i.i.i20.i + %.not.i.i.i.i21.i = icmp ult ptr %1204, %.0.i.i.i.i.i.i20.i br i1 %.not.i.i.i.i21.i, label %1211, label %.thread.i.i.i.i22.i .thread.i.i.i.i22.i: ; preds = %1206 @@ -3722,7 +3722,7 @@ _ZN3tbb6detail2d113parallel_sortINS1_15vector_iteratorINS1_17concurrent_vectorIP 1211: ; preds = %1206 %1212 = add nuw nsw i64 %.01015.i.i.i.i19.i, 1 - %exitcond.not.i.i.i.i25.i = icmp eq i64 %1212, %1204 + %exitcond.not.i.i.i.i25.i = icmp eq i64 %1205, %.01015.i.i.i.i19.i br i1 %exitcond.not.i.i.i.i25.i, label %_ZN3tbb6detail2d117concurrent_vectorIPN4mold12InputSectionINS3_6X86_64EEENS1_23cache_aligned_allocatorIS7_EEE3endEv.exit26.i, label %1206, !llvm.loop !530 _ZN3tbb6detail2d117concurrent_vectorIPN4mold12InputSectionINS3_6X86_64EEENS1_23cache_aligned_allocatorIS7_EEE3endEv.exit26.i: ; preds = %1211, %.thread.i.i.i.i22.i @@ -5050,8 +5050,8 @@ _ZN3tbb6detail2d112parallel_forIlZN4moldL9propagateINS3_6X86_64EEElSt4spanISt6ve %85 = load atomic i64, ptr %49 acquire, align 8, !noalias !648 %.0.i.i.i.i.i.i.i.i = inttoptr i64 %85 to ptr %86 = icmp eq ptr %scevgep.i.i.i.i, %.0.i.i.i.i.i.i.i.i - %87 = select i1 %86, i64 3, i64 64 - %88 = load ptr, ptr %48, align 8, !tbaa !205, !noalias !648 + %87 = load ptr, ptr %48, align 8, !tbaa !205, !noalias !648 + %88 = select i1 %86, i64 2, i64 63 br label %89 89: ; preds = %94, %_ZN3tbb6detail2d112parallel_forIlZN4moldL9propagateINS3_6X86_64EEElSt4spanISt6vectorISt5arrayIhLm16EESaIS9_EELm18446744073709551615EES6_IjLm18446744073709551615EESD_RbS6_IhLm18446744073709551615EERNS1_20affinity_partitionerEEUllE_EEvT_SJ_RKT0_SH_.exit @@ -5059,7 +5059,7 @@ _ZN3tbb6detail2d112parallel_forIlZN4moldL9propagateINS3_6X86_64EEElSt4spanISt6ve %90 = getelementptr inbounds nuw %"struct.std::atomic.255", ptr %.0.i.i.i.i.i.i.i.i, i64 %.01015.i.i.i.i.i %91 = load atomic i64, ptr %90 monotonic, align 8, !noalias !648 %.0.i.i.i.i.i.i.i = inttoptr i64 %91 to ptr - %.not.i.i.i.i.i4 = icmp ult ptr %88, %.0.i.i.i.i.i.i.i + %.not.i.i.i.i.i4 = icmp ult ptr %87, %.0.i.i.i.i.i.i.i br i1 %.not.i.i.i.i.i4, label %94, label %.thread.i.i.i.i.i .thread.i.i.i.i.i: ; preds = %89 @@ -5069,7 +5069,7 @@ _ZN3tbb6detail2d112parallel_forIlZN4moldL9propagateINS3_6X86_64EEElSt4spanISt6ve 94: ; preds = %89 %95 = add nuw nsw i64 %.01015.i.i.i.i.i, 1 - %exitcond.not.i.i.i.i.i = icmp eq i64 %95, %87 + %exitcond.not.i.i.i.i.i = icmp eq i64 %88, %.01015.i.i.i.i.i br i1 %exitcond.not.i.i.i.i.i, label %_ZN3tbb6detail2d126enumerable_thread_specificIlNS1_23cache_aligned_allocatorIlEELNS1_18ets_key_usage_typeE1EE3endEv.exit.i, label %89, !llvm.loop !222 _ZN3tbb6detail2d126enumerable_thread_specificIlNS1_23cache_aligned_allocatorIlEELNS1_18ets_key_usage_typeE1EE3endEv.exit.i: ; preds = %94, %.thread.i.i.i.i.i @@ -5107,8 +5107,8 @@ _ZNK3tbb6detail2d135enumerable_thread_specific_iteratorINS1_17concurrent_vectorI %109 = load atomic i64, ptr %49 acquire, align 8, !noalias !651 %.0.i.i.i.i.i.i.i2.i = inttoptr i64 %109 to ptr %110 = icmp eq ptr %scevgep.i.i.i.i, %.0.i.i.i.i.i.i.i2.i - %111 = select i1 %110, i64 3, i64 64 - %112 = load ptr, ptr %48, align 8, !tbaa !205, !noalias !651 + %111 = load ptr, ptr %48, align 8, !tbaa !205, !noalias !651 + %112 = select i1 %110, i64 2, i64 63 br label %113 113: ; preds = %118, %106 @@ -5116,7 +5116,7 @@ _ZNK3tbb6detail2d135enumerable_thread_specific_iteratorINS1_17concurrent_vectorI %114 = getelementptr inbounds nuw %"struct.std::atomic.255", ptr %.0.i.i.i.i.i.i.i2.i, i64 %.01015.i.i.i.i3.i %115 = load atomic i64, ptr %114 monotonic, align 8, !noalias !651 %.0.i.i.i.i.i.i4.i = inttoptr i64 %115 to ptr - %.not.i.i.i.i5.i = icmp ult ptr %112, %.0.i.i.i.i.i.i4.i + %.not.i.i.i.i5.i = icmp ult ptr %111, %.0.i.i.i.i.i.i4.i br i1 %.not.i.i.i.i5.i, label %118, label %.thread.i.i.i.i6.i .thread.i.i.i.i6.i: ; preds = %113 @@ -5126,7 +5126,7 @@ _ZNK3tbb6detail2d135enumerable_thread_specific_iteratorINS1_17concurrent_vectorI 118: ; preds = %113 %119 = add nuw nsw i64 %.01015.i.i.i.i3.i, 1 - %exitcond.not.i.i.i.i9.i = icmp eq i64 %119, %111 + %exitcond.not.i.i.i.i9.i = icmp eq i64 %112, %.01015.i.i.i.i3.i br i1 %exitcond.not.i.i.i.i9.i, label %_ZN3tbb6detail2d126enumerable_thread_specificIlNS1_23cache_aligned_allocatorIlEELNS1_18ets_key_usage_typeE1EE3endEv.exit10.i, label %113, !llvm.loop !222 _ZN3tbb6detail2d126enumerable_thread_specificIlNS1_23cache_aligned_allocatorIlEELNS1_18ets_key_usage_typeE1EE3endEv.exit10.i: ; preds = %118, %.thread.i.i.i.i6.i diff --git a/bench/mold/optimized/passes.cc.X86_64.ll b/bench/mold/optimized/passes.cc.X86_64.ll index 4c088d0c727..b8f410c0fcf 100644 --- a/bench/mold/optimized/passes.cc.X86_64.ll +++ b/bench/mold/optimized/passes.cc.X86_64.ll @@ -11677,8 +11677,8 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %_ZNKS %.0.i.i.i.i.i.i.i.i.i = inttoptr i64 %27 to ptr %28 = getelementptr inbounds nuw i8, ptr %0, i64 2520 %29 = icmp eq ptr %28, %.0.i.i.i.i.i.i.i.i.i - %30 = select i1 %29, i64 3, i64 64 - %31 = load ptr, ptr %22, align 8, !tbaa !790, !noalias !789 + %30 = load ptr, ptr %22, align 8, !tbaa !790, !noalias !789 + %31 = select i1 %29, i64 2, i64 63 br label %32 32: ; preds = %37, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit @@ -11686,7 +11686,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %_ZNKS %33 = getelementptr inbounds nuw %"struct.std::atomic.106", ptr %.0.i.i.i.i.i.i.i.i.i, i64 %.01015.i.i.i.i.i.i %34 = load atomic i64, ptr %33 monotonic, align 8, !noalias !789 %.0.i.i.i.i.i.i.i.i = inttoptr i64 %34 to ptr - %.not.i.i.i.i.i.i = icmp ult ptr %31, %.0.i.i.i.i.i.i.i.i + %.not.i.i.i.i.i.i = icmp ult ptr %30, %.0.i.i.i.i.i.i.i.i br i1 %.not.i.i.i.i.i.i, label %37, label %.thread.i.i.i.i.i.i .thread.i.i.i.i.i.i: ; preds = %32 @@ -11696,7 +11696,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %_ZNKS 37: ; preds = %32 %38 = add nuw nsw i64 %.01015.i.i.i.i.i.i, 1 - %exitcond.not.i.i.i.i.i.i = icmp eq i64 %38, %30 + %exitcond.not.i.i.i.i.i.i = icmp eq i64 %31, %.01015.i.i.i.i.i.i br i1 %exitcond.not.i.i.i.i.i.i, label %_ZN3tbb6detail2d217parallel_for_eachINS0_2d117concurrent_vectorISt10unique_ptrIN4mold13MergedSectionINS6_6X86_64EEESt14default_deleteIS9_EENS3_23cache_aligned_allocatorISC_EEEEZNS6_22create_merged_sectionsIS8_EEvRNS6_7ContextIT_EEEUlRSC_E_EEvRSI_RKT0_.exit, label %32, !llvm.loop !791 _ZN3tbb6detail2d217parallel_for_eachINS0_2d117concurrent_vectorISt10unique_ptrIN4mold13MergedSectionINS6_6X86_64EEESt14default_deleteIS9_EENS3_23cache_aligned_allocatorISC_EEEEZNS6_22create_merged_sectionsIS8_EEvRNS6_7ContextIT_EEEUlRSC_E_EEvRSI_RKT0_.exit: ; preds = %37, %.thread.i.i.i.i.i.i @@ -11915,8 +11915,8 @@ _ZN3tbb6detail2d126enumerable_thread_specificISt13unordered_mapIN4mold16OutputSe %.0.i.i.i.i.i.i.i = inttoptr i64 %69 to ptr %70 = getelementptr inbounds nuw i8, ptr %0, i64 3096 %71 = icmp eq ptr %70, %.0.i.i.i.i.i.i.i - %72 = select i1 %71, i64 3, i64 64 - %73 = load ptr, ptr %65, align 8, !tbaa !826, !noalias !823 + %72 = load ptr, ptr %65, align 8, !tbaa !826, !noalias !823 + %73 = select i1 %71, i64 2, i64 63 br label %74 74: ; preds = %79, %_ZN3tbb6detail2d126enumerable_thread_specificISt13unordered_mapIN4mold16OutputSectionKeyEPNS4_13OutputSectionINS4_6X86_64EEENS5_4HashESt8equal_toIS5_ESaISt4pairIKS5_S9_EEENS1_23cache_aligned_allocatorISH_EELNS1_18ets_key_usage_typeE1EEC2Ev.exit @@ -11924,7 +11924,7 @@ _ZN3tbb6detail2d126enumerable_thread_specificISt13unordered_mapIN4mold16OutputSe %75 = getelementptr inbounds nuw %"struct.std::atomic.170", ptr %.0.i.i.i.i.i.i.i, i64 %.01015.i.i.i.i %76 = load atomic i64, ptr %75 monotonic, align 8, !noalias !823 %.0.i.i.i.i.i.i = inttoptr i64 %76 to ptr - %.not.i.i.i.i = icmp ult ptr %73, %.0.i.i.i.i.i.i + %.not.i.i.i.i = icmp ult ptr %72, %.0.i.i.i.i.i.i br i1 %.not.i.i.i.i, label %79, label %.thread.i.i.i.i .thread.i.i.i.i: ; preds = %74 @@ -11934,7 +11934,7 @@ _ZN3tbb6detail2d126enumerable_thread_specificISt13unordered_mapIN4mold16OutputSe 79: ; preds = %74 %80 = add nuw nsw i64 %.01015.i.i.i.i, 1 - %exitcond.not.i.i.i.i = icmp eq i64 %80, %72 + %exitcond.not.i.i.i.i = icmp eq i64 %73, %.01015.i.i.i.i br i1 %exitcond.not.i.i.i.i, label %_ZN3tbb6detail2d117concurrent_vectorISt10unique_ptrIN4mold13OutputSectionINS4_6X86_64EEESt14default_deleteIS7_EENS1_23cache_aligned_allocatorISA_EEE3endEv.exit, label %74, !llvm.loop !827 _ZN3tbb6detail2d117concurrent_vectorISt10unique_ptrIN4mold13OutputSectionINS4_6X86_64EEESt14default_deleteIS7_EENS1_23cache_aligned_allocatorISA_EEE3endEv.exit: ; preds = %79, %.thread.i.i.i.i @@ -11981,8 +11981,8 @@ _ZN3tbb6detail2d112parallel_forIlZN4mold22create_output_sectionsINS3_6X86_64EEEv %94 = load atomic i64, ptr %68 acquire, align 8, !noalias !835 %.0.i.i.i.i.i.i.i39 = inttoptr i64 %94 to ptr %95 = icmp eq ptr %70, %.0.i.i.i.i.i.i.i39 - %96 = select i1 %95, i64 3, i64 64 - %97 = load ptr, ptr %65, align 8, !tbaa !826, !noalias !835 + %96 = load ptr, ptr %65, align 8, !tbaa !826, !noalias !835 + %97 = select i1 %95, i64 2, i64 63 br label %98 98: ; preds = %103, %_ZN3tbb6detail2d112parallel_forIlZN4mold22create_output_sectionsINS3_6X86_64EEEvRNS3_7ContextIT_EEEUllE_EEvS7_S7_RKT0_.exit @@ -11990,7 +11990,7 @@ _ZN3tbb6detail2d112parallel_forIlZN4mold22create_output_sectionsINS3_6X86_64EEEv %99 = getelementptr inbounds nuw %"struct.std::atomic.170", ptr %.0.i.i.i.i.i.i.i39, i64 %.01015.i.i.i.i40 %100 = load atomic i64, ptr %99 monotonic, align 8, !noalias !835 %.0.i.i.i.i.i.i41 = inttoptr i64 %100 to ptr - %.not.i.i.i.i42 = icmp ult ptr %97, %.0.i.i.i.i.i.i41 + %.not.i.i.i.i42 = icmp ult ptr %96, %.0.i.i.i.i.i.i41 br i1 %.not.i.i.i.i42, label %103, label %.thread.i.i.i.i43 .thread.i.i.i.i43: ; preds = %98 @@ -12000,7 +12000,7 @@ _ZN3tbb6detail2d112parallel_forIlZN4mold22create_output_sectionsINS3_6X86_64EEEv 103: ; preds = %98 %104 = add nuw nsw i64 %.01015.i.i.i.i40, 1 - %exitcond.not.i.i.i.i46 = icmp eq i64 %104, %96 + %exitcond.not.i.i.i.i46 = icmp eq i64 %97, %.01015.i.i.i.i40 br i1 %exitcond.not.i.i.i.i46, label %_ZN3tbb6detail2d117concurrent_vectorISt10unique_ptrIN4mold13OutputSectionINS4_6X86_64EEESt14default_deleteIS7_EENS1_23cache_aligned_allocatorISA_EEE3endEv.exit47, label %98, !llvm.loop !827 _ZN3tbb6detail2d117concurrent_vectorISt10unique_ptrIN4mold13OutputSectionINS4_6X86_64EEESt14default_deleteIS7_EENS1_23cache_aligned_allocatorISA_EEE3endEv.exit47: ; preds = %103, %.thread.i.i.i.i43 @@ -12094,8 +12094,8 @@ _ZNSt6vectorIS_IPN4mold12InputSectionINS0_6X86_64EEESaIS4_EESaIS6_EE6resizeEm.ex %149 = load atomic i64, ptr %68 acquire, align 8, !noalias !847 %.0.i.i.i.i.i.i.i52 = inttoptr i64 %149 to ptr %150 = icmp eq ptr %70, %.0.i.i.i.i.i.i.i52 - %151 = select i1 %150, i64 3, i64 64 - %152 = load ptr, ptr %65, align 8, !tbaa !826, !noalias !847 + %151 = load ptr, ptr %65, align 8, !tbaa !826, !noalias !847 + %152 = select i1 %150, i64 2, i64 63 br label %153 153: ; preds = %158, %._crit_edge250 @@ -12103,7 +12103,7 @@ _ZNSt6vectorIS_IPN4mold12InputSectionINS0_6X86_64EEESaIS4_EESaIS6_EE6resizeEm.ex %154 = getelementptr inbounds nuw %"struct.std::atomic.170", ptr %.0.i.i.i.i.i.i.i52, i64 %.01015.i.i.i.i53 %155 = load atomic i64, ptr %154 monotonic, align 8, !noalias !847 %.0.i.i.i.i.i.i54 = inttoptr i64 %155 to ptr - %.not.i.i.i.i55 = icmp ult ptr %152, %.0.i.i.i.i.i.i54 + %.not.i.i.i.i55 = icmp ult ptr %151, %.0.i.i.i.i.i.i54 br i1 %.not.i.i.i.i55, label %158, label %.thread.i.i.i.i56 .thread.i.i.i.i56: ; preds = %153 @@ -12113,7 +12113,7 @@ _ZNSt6vectorIS_IPN4mold12InputSectionINS0_6X86_64EEESaIS4_EESaIS6_EE6resizeEm.ex 158: ; preds = %153 %159 = add nuw nsw i64 %.01015.i.i.i.i53, 1 - %exitcond.not.i.i.i.i59 = icmp eq i64 %159, %151 + %exitcond.not.i.i.i.i59 = icmp eq i64 %152, %.01015.i.i.i.i53 br i1 %exitcond.not.i.i.i.i59, label %_ZN3tbb6detail2d117concurrent_vectorISt10unique_ptrIN4mold13OutputSectionINS4_6X86_64EEESt14default_deleteIS7_EENS1_23cache_aligned_allocatorISA_EEE3endEv.exit60, label %153, !llvm.loop !827 _ZN3tbb6detail2d117concurrent_vectorISt10unique_ptrIN4mold13OutputSectionINS4_6X86_64EEESt14default_deleteIS7_EENS1_23cache_aligned_allocatorISA_EEE3endEv.exit60: ; preds = %158, %.thread.i.i.i.i56 @@ -12210,8 +12210,8 @@ _ZN3tbb6detail2d112parallel_forIlZN4mold22create_output_sectionsINS3_6X86_64EEEv %204 = load atomic i64, ptr %68 acquire, align 8, !noalias !856 %.0.i.i.i.i.i.i.i70 = inttoptr i64 %204 to ptr %205 = icmp eq ptr %70, %.0.i.i.i.i.i.i.i70 - %206 = select i1 %205, i64 3, i64 64 - %207 = load ptr, ptr %65, align 8, !tbaa !826, !noalias !856 + %206 = load ptr, ptr %65, align 8, !tbaa !826, !noalias !856 + %207 = select i1 %205, i64 2, i64 63 br label %208 208: ; preds = %213, %._crit_edge255 @@ -12219,7 +12219,7 @@ _ZN3tbb6detail2d112parallel_forIlZN4mold22create_output_sectionsINS3_6X86_64EEEv %209 = getelementptr inbounds nuw %"struct.std::atomic.170", ptr %.0.i.i.i.i.i.i.i70, i64 %.01015.i.i.i.i71 %210 = load atomic i64, ptr %209 monotonic, align 8, !noalias !856 %.0.i.i.i.i.i.i72 = inttoptr i64 %210 to ptr - %.not.i.i.i.i73 = icmp ult ptr %207, %.0.i.i.i.i.i.i72 + %.not.i.i.i.i73 = icmp ult ptr %206, %.0.i.i.i.i.i.i72 br i1 %.not.i.i.i.i73, label %213, label %.thread.i.i.i.i74 .thread.i.i.i.i74: ; preds = %208 @@ -12229,7 +12229,7 @@ _ZN3tbb6detail2d112parallel_forIlZN4mold22create_output_sectionsINS3_6X86_64EEEv 213: ; preds = %208 %214 = add nuw nsw i64 %.01015.i.i.i.i71, 1 - %exitcond.not.i.i.i.i77 = icmp eq i64 %214, %206 + %exitcond.not.i.i.i.i77 = icmp eq i64 %207, %.01015.i.i.i.i71 br i1 %exitcond.not.i.i.i.i77, label %_ZN3tbb6detail2d117concurrent_vectorISt10unique_ptrIN4mold13OutputSectionINS4_6X86_64EEESt14default_deleteIS7_EENS1_23cache_aligned_allocatorISA_EEE3endEv.exit78, label %208, !llvm.loop !827 _ZN3tbb6detail2d117concurrent_vectorISt10unique_ptrIN4mold13OutputSectionINS4_6X86_64EEESt14default_deleteIS7_EENS1_23cache_aligned_allocatorISA_EEE3endEv.exit78: ; preds = %213, %.thread.i.i.i.i74 @@ -12525,8 +12525,8 @@ _ZNSt6vectorIS_IPN4mold12InputSectionINS0_6X86_64EEESaIS4_EESaIS6_EE5clearEv.exi %.0.i.i.i.i.i.i.i99 = inttoptr i64 %344 to ptr %345 = getelementptr inbounds nuw i8, ptr %0, i64 2520 %346 = icmp eq ptr %345, %.0.i.i.i.i.i.i.i99 - %347 = select i1 %346, i64 3, i64 64 - %348 = load ptr, ptr %340, align 8, !tbaa !790, !noalias !865 + %347 = load ptr, ptr %340, align 8, !tbaa !790, !noalias !865 + %348 = select i1 %346, i64 2, i64 63 br label %349 349: ; preds = %354, %._crit_edge263 @@ -12534,7 +12534,7 @@ _ZNSt6vectorIS_IPN4mold12InputSectionINS0_6X86_64EEESaIS4_EESaIS6_EE5clearEv.exi %350 = getelementptr inbounds nuw %"struct.std::atomic.106", ptr %.0.i.i.i.i.i.i.i99, i64 %.01015.i.i.i.i100 %351 = load atomic i64, ptr %350 monotonic, align 8, !noalias !865 %.0.i.i.i.i.i.i101 = inttoptr i64 %351 to ptr - %.not.i.i.i.i102 = icmp ult ptr %348, %.0.i.i.i.i.i.i101 + %.not.i.i.i.i102 = icmp ult ptr %347, %.0.i.i.i.i.i.i101 br i1 %.not.i.i.i.i102, label %354, label %.thread.i.i.i.i103 .thread.i.i.i.i103: ; preds = %349 @@ -12544,7 +12544,7 @@ _ZNSt6vectorIS_IPN4mold12InputSectionINS0_6X86_64EEESaIS4_EESaIS6_EE5clearEv.exi 354: ; preds = %349 %355 = add nuw nsw i64 %.01015.i.i.i.i100, 1 - %exitcond.not.i.i.i.i106 = icmp eq i64 %355, %347 + %exitcond.not.i.i.i.i106 = icmp eq i64 %348, %.01015.i.i.i.i100 br i1 %exitcond.not.i.i.i.i106, label %_ZN3tbb6detail2d117concurrent_vectorISt10unique_ptrIN4mold13MergedSectionINS4_6X86_64EEESt14default_deleteIS7_EENS1_23cache_aligned_allocatorISA_EEE3endEv.exit, label %349, !llvm.loop !791 _ZN3tbb6detail2d117concurrent_vectorISt10unique_ptrIN4mold13MergedSectionINS4_6X86_64EEESt14default_deleteIS7_EENS1_23cache_aligned_allocatorISA_EEE3endEv.exit: ; preds = %354, %.thread.i.i.i.i103 @@ -16955,8 +16955,8 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit64: ; preds = %_ZN %.0.i.i.i.i.i.i.i = inttoptr i64 %367 to ptr %368 = getelementptr inbounds nuw i8, ptr %0, i64 2952 %369 = icmp eq ptr %368, %.0.i.i.i.i.i.i.i - %370 = select i1 %369, i64 3, i64 64 - %371 = load ptr, ptr %363, align 8, !tbaa !1053, !noalias !1050 + %370 = load ptr, ptr %363, align 8, !tbaa !1053, !noalias !1050 + %371 = select i1 %369, i64 2, i64 63 br label %372 372: ; preds = %377, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit64 @@ -16964,7 +16964,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit64: ; preds = %_ZN %373 = getelementptr inbounds nuw %"struct.std::atomic.154", ptr %.0.i.i.i.i.i.i.i, i64 %.01015.i.i.i.i %374 = load atomic i64, ptr %373 monotonic, align 8, !noalias !1050 %.0.i.i.i.i.i.i = inttoptr i64 %374 to ptr - %.not.i.i.i.i65 = icmp ult ptr %371, %.0.i.i.i.i.i.i + %.not.i.i.i.i65 = icmp ult ptr %370, %.0.i.i.i.i.i.i br i1 %.not.i.i.i.i65, label %377, label %.thread.i.i.i.i .thread.i.i.i.i: ; preds = %372 @@ -16974,7 +16974,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit64: ; preds = %_ZN 377: ; preds = %372 %378 = add nuw nsw i64 %.01015.i.i.i.i, 1 - %exitcond.not.i.i.i.i = icmp eq i64 %378, %370 + %exitcond.not.i.i.i.i = icmp eq i64 %371, %.01015.i.i.i.i br i1 %exitcond.not.i.i.i.i, label %_ZN3tbb6detail2d117concurrent_vectorISt10unique_ptrIN4mold10MappedFileESt14default_deleteIS5_EENS1_23cache_aligned_allocatorIS8_EEE3endEv.exit, label %372, !llvm.loop !1054 _ZN3tbb6detail2d117concurrent_vectorISt10unique_ptrIN4mold10MappedFileESt14default_deleteIS5_EENS1_23cache_aligned_allocatorIS8_EEE3endEv.exit: ; preds = %377, %.thread.i.i.i.i @@ -22120,8 +22120,8 @@ _ZN3tbb6detail2d112parallel_forIlZN4mold12sort_dynsymsINS3_6X86_64EEEvRNS3_7Cont %105 = load atomic i64, ptr %89 acquire, align 8, !noalias !1217 %.0.i.i.i.i.i.i.i.i = inttoptr i64 %105 to ptr %106 = icmp eq ptr %scevgep.i.i.i.i, %.0.i.i.i.i.i.i.i.i - %107 = select i1 %106, i64 3, i64 64 - %108 = load ptr, ptr %88, align 8, !tbaa !1208, !noalias !1217 + %107 = load ptr, ptr %88, align 8, !tbaa !1208, !noalias !1217 + %108 = select i1 %106, i64 2, i64 63 br label %109 109: ; preds = %114, %_ZN3tbb6detail2d112parallel_forIlZN4mold12sort_dynsymsINS3_6X86_64EEEvRNS3_7ContextIT_EEEUllE_EEvS7_S7_RKT0_.exit @@ -22129,7 +22129,7 @@ _ZN3tbb6detail2d112parallel_forIlZN4mold12sort_dynsymsINS3_6X86_64EEEvRNS3_7Cont %110 = getelementptr inbounds nuw %"struct.std::atomic.598", ptr %.0.i.i.i.i.i.i.i.i, i64 %.01015.i.i.i.i.i %111 = load atomic i64, ptr %110 monotonic, align 8, !noalias !1217 %.0.i.i.i.i.i.i.i = inttoptr i64 %111 to ptr - %.not.i.i.i.i.i22 = icmp ult ptr %108, %.0.i.i.i.i.i.i.i + %.not.i.i.i.i.i22 = icmp ult ptr %107, %.0.i.i.i.i.i.i.i br i1 %.not.i.i.i.i.i22, label %114, label %.thread.i.i.i.i.i .thread.i.i.i.i.i: ; preds = %109 @@ -22139,7 +22139,7 @@ _ZN3tbb6detail2d112parallel_forIlZN4mold12sort_dynsymsINS3_6X86_64EEEvRNS3_7Cont 114: ; preds = %109 %115 = add nuw nsw i64 %.01015.i.i.i.i.i, 1 - %exitcond.not.i.i.i.i.i = icmp eq i64 %115, %107 + %exitcond.not.i.i.i.i.i = icmp eq i64 %108, %.01015.i.i.i.i.i br i1 %exitcond.not.i.i.i.i.i, label %_ZN3tbb6detail2d126enumerable_thread_specificIlNS1_23cache_aligned_allocatorIlEELNS1_18ets_key_usage_typeE1EE3endEv.exit.i, label %109, !llvm.loop !1220 _ZN3tbb6detail2d126enumerable_thread_specificIlNS1_23cache_aligned_allocatorIlEELNS1_18ets_key_usage_typeE1EE3endEv.exit.i: ; preds = %114, %.thread.i.i.i.i.i @@ -22177,8 +22177,8 @@ _ZNK3tbb6detail2d135enumerable_thread_specific_iteratorINS1_17concurrent_vectorI %129 = load atomic i64, ptr %89 acquire, align 8, !noalias !1224 %.0.i.i.i.i.i.i.i2.i = inttoptr i64 %129 to ptr %130 = icmp eq ptr %scevgep.i.i.i.i, %.0.i.i.i.i.i.i.i2.i - %131 = select i1 %130, i64 3, i64 64 - %132 = load ptr, ptr %88, align 8, !tbaa !1208, !noalias !1224 + %131 = load ptr, ptr %88, align 8, !tbaa !1208, !noalias !1224 + %132 = select i1 %130, i64 2, i64 63 br label %133 133: ; preds = %138, %126 @@ -22186,7 +22186,7 @@ _ZNK3tbb6detail2d135enumerable_thread_specific_iteratorINS1_17concurrent_vectorI %134 = getelementptr inbounds nuw %"struct.std::atomic.598", ptr %.0.i.i.i.i.i.i.i2.i, i64 %.01015.i.i.i.i3.i %135 = load atomic i64, ptr %134 monotonic, align 8, !noalias !1224 %.0.i.i.i.i.i.i4.i = inttoptr i64 %135 to ptr - %.not.i.i.i.i5.i = icmp ult ptr %132, %.0.i.i.i.i.i.i4.i + %.not.i.i.i.i5.i = icmp ult ptr %131, %.0.i.i.i.i.i.i4.i br i1 %.not.i.i.i.i5.i, label %138, label %.thread.i.i.i.i6.i .thread.i.i.i.i6.i: ; preds = %133 @@ -22196,7 +22196,7 @@ _ZNK3tbb6detail2d135enumerable_thread_specific_iteratorINS1_17concurrent_vectorI 138: ; preds = %133 %139 = add nuw nsw i64 %.01015.i.i.i.i3.i, 1 - %exitcond.not.i.i.i.i9.i = icmp eq i64 %139, %131 + %exitcond.not.i.i.i.i9.i = icmp eq i64 %132, %.01015.i.i.i.i3.i br i1 %exitcond.not.i.i.i.i9.i, label %_ZN3tbb6detail2d126enumerable_thread_specificIlNS1_23cache_aligned_allocatorIlEELNS1_18ets_key_usage_typeE1EE3endEv.exit10.i, label %133, !llvm.loop !1220 _ZN3tbb6detail2d126enumerable_thread_specificIlNS1_23cache_aligned_allocatorIlEELNS1_18ets_key_usage_typeE1EE3endEv.exit10.i: ; preds = %138, %.thread.i.i.i.i6.i @@ -27249,8 +27249,8 @@ define weak_odr dso_local void @_ZN4mold21write_dependency_fileINS_6X86_64EEEvRN %.0.i.i.i.i.i.i.i = inttoptr i64 %18 to ptr %19 = getelementptr inbounds nuw i8, ptr %0, i64 2952 %20 = icmp eq ptr %19, %.0.i.i.i.i.i.i.i - %21 = select i1 %20, i64 3, i64 64 - %22 = load ptr, ptr %14, align 8, !tbaa !1053, !noalias !1360 + %21 = load ptr, ptr %14, align 8, !tbaa !1053, !noalias !1360 + %22 = select i1 %20, i64 2, i64 63 br label %23 23: ; preds = %28, %1 @@ -27258,7 +27258,7 @@ define weak_odr dso_local void @_ZN4mold21write_dependency_fileINS_6X86_64EEEvRN %24 = getelementptr inbounds nuw %"struct.std::atomic.154", ptr %.0.i.i.i.i.i.i.i, i64 %.01015.i.i.i.i %25 = load atomic i64, ptr %24 monotonic, align 8, !noalias !1360 %.0.i.i.i.i.i.i = inttoptr i64 %25 to ptr - %.not.i.i.i.i = icmp ult ptr %22, %.0.i.i.i.i.i.i + %.not.i.i.i.i = icmp ult ptr %21, %.0.i.i.i.i.i.i br i1 %.not.i.i.i.i, label %28, label %.thread.i.i.i.i .thread.i.i.i.i: ; preds = %23 @@ -27268,7 +27268,7 @@ define weak_odr dso_local void @_ZN4mold21write_dependency_fileINS_6X86_64EEEvRN 28: ; preds = %23 %29 = add nuw nsw i64 %.01015.i.i.i.i, 1 - %exitcond.not.i.i.i.i = icmp eq i64 %29, %21 + %exitcond.not.i.i.i.i = icmp eq i64 %22, %.01015.i.i.i.i br i1 %exitcond.not.i.i.i.i, label %_ZN3tbb6detail2d117concurrent_vectorISt10unique_ptrIN4mold10MappedFileESt14default_deleteIS5_EENS1_23cache_aligned_allocatorIS8_EEE3endEv.exit, label %23, !llvm.loop !1054 _ZN3tbb6detail2d117concurrent_vectorISt10unique_ptrIN4mold10MappedFileESt14default_deleteIS5_EENS1_23cache_aligned_allocatorIS8_EEE3endEv.exit: ; preds = %28, %.thread.i.i.i.i @@ -28411,8 +28411,8 @@ _ZN4mold7CounterpLEi.exit81: ; preds = %288, %291 %.0.i.i.i.i.i.i.i = inttoptr i64 %314 to ptr %315 = getelementptr inbounds nuw i8, ptr %0, i64 2952 %316 = icmp eq ptr %315, %.0.i.i.i.i.i.i.i - %317 = select i1 %316, i64 3, i64 64 - %318 = load ptr, ptr %310, align 8, !tbaa !1053, !noalias !1392 + %317 = load ptr, ptr %310, align 8, !tbaa !1053, !noalias !1392 + %318 = select i1 %316, i64 2, i64 63 br label %319 319: ; preds = %324, %309 @@ -28420,7 +28420,7 @@ _ZN4mold7CounterpLEi.exit81: ; preds = %288, %291 %320 = getelementptr inbounds nuw %"struct.std::atomic.154", ptr %.0.i.i.i.i.i.i.i, i64 %.01015.i.i.i.i %321 = load atomic i64, ptr %320 monotonic, align 8, !noalias !1392 %.0.i.i.i.i.i.i = inttoptr i64 %321 to ptr - %.not.i.i.i.i = icmp ult ptr %318, %.0.i.i.i.i.i.i + %.not.i.i.i.i = icmp ult ptr %317, %.0.i.i.i.i.i.i br i1 %.not.i.i.i.i, label %324, label %.thread.i.i.i.i .thread.i.i.i.i: ; preds = %319 @@ -28430,7 +28430,7 @@ _ZN4mold7CounterpLEi.exit81: ; preds = %288, %291 324: ; preds = %319 %325 = add nuw nsw i64 %.01015.i.i.i.i, 1 - %exitcond.not.i.i.i.i = icmp eq i64 %325, %317 + %exitcond.not.i.i.i.i = icmp eq i64 %318, %.01015.i.i.i.i br i1 %exitcond.not.i.i.i.i, label %_ZN3tbb6detail2d117concurrent_vectorISt10unique_ptrIN4mold10MappedFileESt14default_deleteIS5_EENS1_23cache_aligned_allocatorIS8_EEE3endEv.exit, label %319, !llvm.loop !1054 _ZN3tbb6detail2d117concurrent_vectorISt10unique_ptrIN4mold10MappedFileESt14default_deleteIS5_EENS1_23cache_aligned_allocatorIS8_EEE3endEv.exit: ; preds = %324, %.thread.i.i.i.i @@ -28625,8 +28625,8 @@ _ZN4mold7CounterpLEi.exit84: ; preds = %.lr.ph267.split, %3 %.0.i.i.i.i.i.i.i85 = inttoptr i64 %428 to ptr %429 = getelementptr inbounds nuw i8, ptr %0, i64 2520 %430 = icmp eq ptr %429, %.0.i.i.i.i.i.i.i85 - %431 = select i1 %430, i64 3, i64 64 - %432 = load ptr, ptr %424, align 8, !tbaa !790, !noalias !1399 + %431 = load ptr, ptr %424, align 8, !tbaa !790, !noalias !1399 + %432 = select i1 %430, i64 2, i64 63 br label %433 433: ; preds = %438, %423 @@ -28634,7 +28634,7 @@ _ZN4mold7CounterpLEi.exit84: ; preds = %.lr.ph267.split, %3 %434 = getelementptr inbounds nuw %"struct.std::atomic.106", ptr %.0.i.i.i.i.i.i.i85, i64 %.01015.i.i.i.i86 %435 = load atomic i64, ptr %434 monotonic, align 8, !noalias !1399 %.0.i.i.i.i.i.i87 = inttoptr i64 %435 to ptr - %.not.i.i.i.i88 = icmp ult ptr %432, %.0.i.i.i.i.i.i87 + %.not.i.i.i.i88 = icmp ult ptr %431, %.0.i.i.i.i.i.i87 br i1 %.not.i.i.i.i88, label %438, label %.thread.i.i.i.i89 .thread.i.i.i.i89: ; preds = %433 @@ -28644,7 +28644,7 @@ _ZN4mold7CounterpLEi.exit84: ; preds = %.lr.ph267.split, %3 438: ; preds = %433 %439 = add nuw nsw i64 %.01015.i.i.i.i86, 1 - %exitcond.not.i.i.i.i92 = icmp eq i64 %439, %431 + %exitcond.not.i.i.i.i92 = icmp eq i64 %432, %.01015.i.i.i.i86 br i1 %exitcond.not.i.i.i.i92, label %_ZN3tbb6detail2d117concurrent_vectorISt10unique_ptrIN4mold13MergedSectionINS4_6X86_64EEESt14default_deleteIS7_EENS1_23cache_aligned_allocatorISA_EEE3endEv.exit, label %433, !llvm.loop !791 _ZN3tbb6detail2d117concurrent_vectorISt10unique_ptrIN4mold13MergedSectionINS4_6X86_64EEESt14default_deleteIS7_EENS1_23cache_aligned_allocatorISA_EEE3endEv.exit: ; preds = %438, %.thread.i.i.i.i89 @@ -28659,8 +28659,8 @@ _ZN3tbb6detail2d117concurrent_vectorISt10unique_ptrIN4mold13MergedSectionINS4_6X %441 = load atomic i64, ptr %427 acquire, align 8, !noalias !1402 %.0.i.i.i.i.i.i.i94 = inttoptr i64 %441 to ptr %442 = icmp eq ptr %429, %.0.i.i.i.i.i.i.i94 - %443 = select i1 %442, i64 3, i64 64 - %444 = load ptr, ptr %424, align 8, !tbaa !790, !noalias !1402 + %443 = load ptr, ptr %424, align 8, !tbaa !790, !noalias !1402 + %444 = select i1 %442, i64 2, i64 63 br label %445 445: ; preds = %450, %._crit_edge275 @@ -28668,7 +28668,7 @@ _ZN3tbb6detail2d117concurrent_vectorISt10unique_ptrIN4mold13MergedSectionINS4_6X %446 = getelementptr inbounds nuw %"struct.std::atomic.106", ptr %.0.i.i.i.i.i.i.i94, i64 %.01015.i.i.i.i95 %447 = load atomic i64, ptr %446 monotonic, align 8, !noalias !1402 %.0.i.i.i.i.i.i96 = inttoptr i64 %447 to ptr - %.not.i.i.i.i97 = icmp ult ptr %444, %.0.i.i.i.i.i.i96 + %.not.i.i.i.i97 = icmp ult ptr %443, %.0.i.i.i.i.i.i96 br i1 %.not.i.i.i.i97, label %450, label %.thread.i.i.i.i98 .thread.i.i.i.i98: ; preds = %445 @@ -28678,7 +28678,7 @@ _ZN3tbb6detail2d117concurrent_vectorISt10unique_ptrIN4mold13MergedSectionINS4_6X 450: ; preds = %445 %451 = add nuw nsw i64 %.01015.i.i.i.i95, 1 - %exitcond.not.i.i.i.i101 = icmp eq i64 %451, %443 + %exitcond.not.i.i.i.i101 = icmp eq i64 %444, %.01015.i.i.i.i95 br i1 %exitcond.not.i.i.i.i101, label %_ZN3tbb6detail2d117concurrent_vectorISt10unique_ptrIN4mold13MergedSectionINS4_6X86_64EEESt14default_deleteIS7_EENS1_23cache_aligned_allocatorISA_EEE3endEv.exit102, label %445, !llvm.loop !791 _ZN3tbb6detail2d117concurrent_vectorISt10unique_ptrIN4mold13MergedSectionINS4_6X86_64EEESt14default_deleteIS7_EENS1_23cache_aligned_allocatorISA_EEE3endEv.exit102: ; preds = %450, %.thread.i.i.i.i98 @@ -64308,8 +64308,8 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6assignEmc.exit99: ; preds store i64 0, ptr %116, align 8, !tbaa !17 %117 = load ptr, ptr %115, align 8, !tbaa !343 store i8 0, ptr %117, align 1, !tbaa !19 - %118 = select i1 %114, i32 2, i32 4 - %119 = getelementptr inbounds nuw i8, ptr %0, i64 216 + %118 = getelementptr inbounds nuw i8, ptr %0, i64 216 + %119 = select i1 %114, i32 1, i32 3 br label %122 120: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc.exit @@ -64347,7 +64347,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6assignEmc.exit99: ; preds %139 = load i64, ptr %116, align 8, !tbaa !17 %140 = add i64 %139, 1 %141 = load ptr, ptr %115, align 8, !tbaa !343 - %142 = icmp eq ptr %141, %119 + %142 = icmp eq ptr %141, %118 br i1 %142, label %143, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i101 143: ; preds = %136 @@ -64356,7 +64356,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6assignEmc.exit99: ; preds br label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i101 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i101: ; preds = %143, %136 - %145 = load i64, ptr %119, align 8 + %145 = load i64, ptr %118, align 8 %146 = select i1 %142, i64 15, i64 %145 %147 = icmp ugt i64 %140, %146 br i1 %147, label %148, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc.exit @@ -64375,7 +64375,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc.exit: ; preds = %_ZNKS %152 = getelementptr inbounds nuw i8, ptr %151, i64 %140 store i8 0, ptr %152, align 1, !tbaa !19 %153 = add nuw nsw i32 %.0110, 1 - %exitcond.not = icmp eq i32 %153, %118 + %exitcond.not = icmp eq i32 %119, %.0110 br i1 %exitcond.not, label %120, label %122, !llvm.loop !2335 154: ; preds = %.loopexit diff --git a/bench/node/optimized/libnode.node_sockaddr.ll b/bench/node/optimized/libnode.node_sockaddr.ll index e55f255cdef..eca598c9be0 100644 --- a/bench/node/optimized/libnode.node_sockaddr.ll +++ b/bench/node/optimized/libnode.node_sockaddr.ll @@ -591,11 +591,10 @@ entry: do.body.i: ; preds = %entry %0 = load i32, ptr %len.i, align 4, !noalias !5 - %conv.i = sext i32 %0 to i64 %1 = load i16, ptr %address_.i.i, align 8, !alias.scope !5 %cmp.i.i.i.i = icmp eq i16 %1, 2 - %cond.i.i.i.i = select i1 %cmp.i.i.i.i, i64 16, i64 28 - %cmp3.not.i = icmp eq i64 %cond.i.i.i.i, %conv.i + %cond.i.i.i3.i = select i1 %cmp.i.i.i.i, i32 16, i32 28 + %cmp3.not.i = icmp eq i32 %cond.i.i.i3.i, %0 br i1 %cmp3.not.i, label %_ZN4node12_GLOBAL__N_112FromUVHandleI8uv_tcp_sPFiPKS2_P8sockaddrPiEEENS_13SocketAddressET0_RKT_.exit, label %do.body8.i do.body8.i: ; preds = %do.body.i @@ -629,11 +628,10 @@ entry: do.body.i: ; preds = %entry %0 = load i32, ptr %len.i, align 4, !noalias !9 - %conv.i = sext i32 %0 to i64 %1 = load i16, ptr %address_.i.i, align 8, !alias.scope !9 %cmp.i.i.i.i = icmp eq i16 %1, 2 - %cond.i.i.i.i = select i1 %cmp.i.i.i.i, i64 16, i64 28 - %cmp3.not.i = icmp eq i64 %cond.i.i.i.i, %conv.i + %cond.i.i.i3.i = select i1 %cmp.i.i.i.i, i32 16, i32 28 + %cmp3.not.i = icmp eq i32 %cond.i.i.i3.i, %0 br i1 %cmp3.not.i, label %_ZN4node12_GLOBAL__N_112FromUVHandleI8uv_udp_sPFiPKS2_P8sockaddrPiEEENS_13SocketAddressET0_RKT_.exit, label %do.body8.i do.body8.i: ; preds = %do.body.i @@ -667,11 +665,10 @@ entry: do.body.i: ; preds = %entry %0 = load i32, ptr %len.i, align 4, !noalias !13 - %conv.i = sext i32 %0 to i64 %1 = load i16, ptr %address_.i.i, align 8, !alias.scope !13 %cmp.i.i.i.i = icmp eq i16 %1, 2 - %cond.i.i.i.i = select i1 %cmp.i.i.i.i, i64 16, i64 28 - %cmp3.not.i = icmp eq i64 %cond.i.i.i.i, %conv.i + %cond.i.i.i3.i = select i1 %cmp.i.i.i.i, i32 16, i32 28 + %cmp3.not.i = icmp eq i32 %cond.i.i.i3.i, %0 br i1 %cmp3.not.i, label %_ZN4node12_GLOBAL__N_112FromUVHandleI8uv_tcp_sPFiPKS2_P8sockaddrPiEEENS_13SocketAddressET0_RKT_.exit, label %do.body8.i do.body8.i: ; preds = %do.body.i @@ -705,11 +702,10 @@ entry: do.body.i: ; preds = %entry %0 = load i32, ptr %len.i, align 4, !noalias !16 - %conv.i = sext i32 %0 to i64 %1 = load i16, ptr %address_.i.i, align 8, !alias.scope !16 %cmp.i.i.i.i = icmp eq i16 %1, 2 - %cond.i.i.i.i = select i1 %cmp.i.i.i.i, i64 16, i64 28 - %cmp3.not.i = icmp eq i64 %cond.i.i.i.i, %conv.i + %cond.i.i.i3.i = select i1 %cmp.i.i.i.i, i32 16, i32 28 + %cmp3.not.i = icmp eq i32 %cond.i.i.i3.i, %0 br i1 %cmp3.not.i, label %_ZN4node12_GLOBAL__N_112FromUVHandleI8uv_udp_sPFiPKS2_P8sockaddrPiEEENS_13SocketAddressET0_RKT_.exit, label %do.body8.i do.body8.i: ; preds = %do.body.i diff --git a/bench/open3d/optimized/FileGLTF.ll b/bench/open3d/optimized/FileGLTF.ll index 1afbeecaf16..c147e49ebe8 100644 --- a/bench/open3d/optimized/FileGLTF.ll +++ b/bench/open3d/optimized/FileGLTF.ll @@ -205167,19 +205167,22 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc.exit222: ; preds = % store i32 %389, ptr %361, align 4, !tbaa !521 %390 = mul nsw i64 %134, 3 store i64 %390, ptr %362, align 8, !tbaa !522 - %391 = select i1 %162, i64 4, i64 2 - %392 = select i1 %162, i64 2, i64 1 - %393 = shl nsw i64 %390, %392 - %394 = trunc i64 %184 to i32 - store i32 %394, ptr %18, align 8, !tbaa !486 - %395 = load ptr, ptr %168, align 8, !tbaa !648 - %396 = getelementptr inbounds nuw %"struct.tinygltf::BufferView", ptr %395, i64 %184, i32 4 - %397 = load i64, ptr %396, align 8, !tbaa !556 - store i64 %397, ptr %359, align 8, !tbaa !520 - %398 = add i64 %397, %393 - store i64 %398, ptr %396, align 8, !tbaa !556 + %391 = select i1 %162, i64 2, i64 1 + %392 = shl nsw i64 %390, %391 + %393 = trunc i64 %184 to i32 + store i32 %393, ptr %18, align 8, !tbaa !486 + %394 = load ptr, ptr %168, align 8, !tbaa !648 + %395 = getelementptr inbounds nuw %"struct.tinygltf::BufferView", ptr %394, i64 %184, i32 4 + %396 = load i64, ptr %395, align 8, !tbaa !556 + store i64 %396, ptr %359, align 8, !tbaa !520 + %397 = add i64 %396, %392 + store i64 %397, ptr %395, align 8, !tbaa !556 %.not = icmp eq ptr %129, %130 - br i1 %.not, label %._crit_edge, label %.lr.ph + br i1 %.not, label %._crit_edge, label %.lr.ph.preheader + +.lr.ph.preheader: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc.exit222 + %398 = select i1 %162, i64 3, i64 1 + br label %.lr.ph ._crit_edge.loopexit: ; preds = %442 %399 = ptrtoint ptr %.sroa.13.3 to i64 @@ -205291,11 +205294,11 @@ _ZNSt6vectorIdSaIdEE17_M_realloc_insertIJdEEEvN9__gnu_cxx17__normal_iteratorIPdS cleanup br label %_ZNSt6vectorIhSaIhEED2Ev.exit398 -.lr.ph: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc.exit222, %442 - %.0152585 = phi i64 [ %443, %442 ], [ 0, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc.exit222 ] - %.sroa.0422.0584 = phi ptr [ %.sroa.0422.4, %442 ], [ null, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc.exit222 ] - %.sroa.13.0583 = phi ptr [ %.sroa.13.3, %442 ], [ null, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc.exit222 ] - %.sroa.21.0582 = phi ptr [ %.sroa.21.4, %442 ], [ null, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc.exit222 ] +.lr.ph: ; preds = %.lr.ph.preheader, %442 + %.0152585 = phi i64 [ %443, %442 ], [ 0, %.lr.ph.preheader ] + %.sroa.0422.0584 = phi ptr [ %.sroa.0422.4, %442 ], [ null, %.lr.ph.preheader ] + %.sroa.13.0583 = phi ptr [ %.sroa.13.3, %442 ], [ null, %.lr.ph.preheader ] + %.sroa.21.0582 = phi ptr [ %.sroa.21.4, %442 ], [ null, %.lr.ph.preheader ] %440 = load ptr, ptr %127, align 8, !tbaa !3938 %441 = getelementptr inbounds nuw %"class.Eigen::Matrix.502", ptr %440, i64 %.0152585 br label %444 @@ -205389,7 +205392,7 @@ _ZNSt6vectorIhSaIhEE9push_backERKh.exit: ; preds = %_ZNSt6vectorIhSaIhE %.sroa.0422.4 = phi ptr [ %464, %_ZNSt6vectorIhSaIhEE17_M_realloc_insertIJRKhEEEvN9__gnu_cxx17__normal_iteratorIPhS1_EEDpOT_.exit.i ], [ %.sroa.0422.2576, %450 ] %.sroa.13.3 = getelementptr inbounds nuw i8, ptr %.pn460, i64 1 %471 = add nuw nsw i64 %.0156577, 1 - %exitcond.not = icmp eq i64 %471, %391 + %exitcond.not = icmp eq i64 %398, %.0156577 br i1 %exitcond.not, label %446, label %448, !llvm.loop !4612 .loopexit471: ; preds = %462 diff --git a/bench/openblas/optimized/dgsvj0.ll b/bench/openblas/optimized/dgsvj0.ll index 1e37f2964fa..514d420a5b5 100644 --- a/bench/openblas/optimized/dgsvj0.ll +++ b/bench/openblas/optimized/dgsvj0.ll @@ -201,23 +201,23 @@ define void @dgsvj0_(ptr noundef %0, ptr noundef %1, ptr noundef readonly captur %.012731697 = phi double [ 0.000000e+00, %.lr.ph1703 ], [ %.111284, %.loopexit1426 ] %indvars.iv1760 = add i32 %indvars.iv1760.in, -1 %103 = sext i32 %indvars.iv to i64 - %.inv1786 = icmp slt i32 %indvars.iv1760, 1 - %104 = select i1 %.inv1786, i32 1, i32 2 - %105 = add nsw i32 %.012361701, -1 - %106 = mul nsw i32 %105, %spec.select - %107 = sub nsw i32 %.0, %.012361701 - store i32 %107, ptr %20, align 4, !tbaa !3 - %.not13611552 = icmp slt i32 %107, 0 + %104 = add nsw i32 %.012361701, -1 + %105 = mul nsw i32 %104, %spec.select + %106 = sub nsw i32 %.0, %.012361701 + store i32 %106, ptr %20, align 4, !tbaa !3 + %.not13611552 = icmp slt i32 %106, 0 br i1 %.not13611552, label %._crit_edge1561, label %.lr.ph1560.preheader .lr.ph1560.preheader: ; preds = %102 - %108 = add nsw i32 %106, 1 + %.inv1786 = icmp sgt i32 %indvars.iv1760, 0 + %107 = add nsw i32 %105, 1 + %108 = zext i1 %.inv1786 to i32 br label %.lr.ph1560 .lr.ph1560: ; preds = %.lr.ph1560.preheader, %._crit_edge %indvars.iv1752 = phi i32 [ %indvars.iv, %.lr.ph1560.preheader ], [ %indvars.iv.next1753, %._crit_edge ] %indvars.iv1750 = phi i32 [ %spec.select, %.lr.ph1560.preheader ], [ %indvars.iv.next1751, %._crit_edge ] - %.012371558 = phi i32 [ %108, %.lr.ph1560.preheader ], [ %110, %._crit_edge ] + %.012371558 = phi i32 [ %107, %.lr.ph1560.preheader ], [ %110, %._crit_edge ] %.11557 = phi i32 [ %.012391700, %.lr.ph1560.preheader ], [ %.2.lcssa, %._crit_edge ] %.112411556 = phi i32 [ %.012401699, %.lr.ph1560.preheader ], [ %.21242.lcssa, %._crit_edge ] %.012551555 = phi i32 [ 0, %.lr.ph1560.preheader ], [ %449, %._crit_edge ] @@ -892,7 +892,7 @@ thread-pre-split: ; preds = %144, %158 %449 = add nuw nsw i32 %.012551555, 1 %indvars.iv.next1751 = add i32 %indvars.iv1750, %spec.select %indvars.iv.next1753 = add i32 %indvars.iv1752, %indvars.iv1750 - %exitcond.not = icmp eq i32 %449, %104 + %exitcond.not = icmp eq i32 %.012551555, %108 br i1 %exitcond.not, label %._crit_edge1561, label %.lr.ph1560, !llvm.loop !13 ._crit_edge1561: ; preds = %._crit_edge, %102 @@ -918,7 +918,7 @@ thread-pre-split: ; preds = %144, %158 store i32 %451, ptr %20, align 4, !tbaa !3 %455 = load i32, ptr %2, align 4, !tbaa !3 %.1392 = call i32 @llvm.smin.i32(i32 %451, i32 %455) - %.not13641663.not = icmp slt i32 %106, %.1392 + %.not13641663.not = icmp slt i32 %105, %.1392 br i1 %.not13641663.not, label %.lr.ph1673, label %._crit_edge1674 .lr.ph1673: ; preds = %.lr.ph1686 @@ -1577,7 +1577,7 @@ thread-pre-split: ; preds = %144, %158 %.12 = phi i32 [ %.11, %767 ], [ %.1.lcssa, %._crit_edge1561 ], [ %.9.lcssa, %._crit_edge1674 ] %786 = load i32, ptr %2, align 4, !tbaa !3 %.1401 = call i32 @llvm.smin.i32(i32 %451, i32 %786) - %.not13721691.not = icmp slt i32 %106, %.1401 + %.not13721691.not = icmp slt i32 %105, %.1401 br i1 %.not13721691.not, label %.lr.ph1694.preheader, label %.loopexit1426 .lr.ph1694.preheader: ; preds = %.loopexit1427 diff --git a/bench/openjdk/optimized/intrinsicnode.ll b/bench/openjdk/optimized/intrinsicnode.ll index 4543115f932..544869115e3 100644 --- a/bench/openjdk/optimized/intrinsicnode.ll +++ b/bench/openjdk/optimized/intrinsicnode.ll @@ -1855,41 +1855,41 @@ define hidden noundef ptr @_ZNK16CompressBitsNode5ValueEP8PhaseGVN(ptr noundef n %34 = getelementptr inbounds nuw [0 x %"struct.Type::TypeInfo"], ptr @_ZN4Type10_type_infoE, i64 0, i64 %33, i32 1 %35 = load i8, ptr %34, align 4 %36 = icmp eq i8 %35, 10 - %37 = select i1 %36, i32 32, i32 64 - %38 = load ptr, ptr %15, align 8 - %39 = getelementptr inbounds nuw i8, ptr %38, i64 184 - %40 = load ptr, ptr %39, align 8 - %41 = tail call noundef i64 %40(ptr noundef nonnull align 8 dereferenceable(22) %15) #5 - %42 = load ptr, ptr %15, align 8 - %43 = getelementptr inbounds nuw i8, ptr %42, i64 176 - %44 = load ptr, ptr %43, align 8 - %45 = tail call noundef i64 %44(ptr noundef nonnull align 8 dereferenceable(22) %15) #5 - %46 = icmp eq i64 %41, %45 - br i1 %46, label %47, label %74 + %37 = load ptr, ptr %15, align 8 + %38 = getelementptr inbounds nuw i8, ptr %37, i64 184 + %39 = load ptr, ptr %38, align 8 + %40 = tail call noundef i64 %39(ptr noundef nonnull align 8 dereferenceable(22) %15) #5 + %41 = load ptr, ptr %15, align 8 + %42 = getelementptr inbounds nuw i8, ptr %41, i64 176 + %43 = load ptr, ptr %42, align 8 + %44 = tail call noundef i64 %43(ptr noundef nonnull align 8 dereferenceable(22) %15) #5 + %45 = icmp eq i64 %40, %44 + br i1 %45, label %46, label %74 -47: ; preds = %26 - %48 = load ptr, ptr %22, align 8 - %49 = getelementptr inbounds nuw i8, ptr %48, i64 184 - %50 = load ptr, ptr %49, align 8 - %51 = tail call noundef i64 %50(ptr noundef nonnull align 8 dereferenceable(22) %22) #5 - %52 = load ptr, ptr %22, align 8 - %53 = getelementptr inbounds nuw i8, ptr %52, i64 176 - %54 = load ptr, ptr %53, align 8 - %55 = tail call noundef i64 %54(ptr noundef nonnull align 8 dereferenceable(22) %22) #5 - %56 = icmp eq i64 %51, %55 - br i1 %56, label %57, label %74 - -57: ; preds = %47 - %58 = tail call noundef i64 @_ZNK11TypeInteger15get_con_as_longE9BasicType(ptr noundef nonnull align 8 dereferenceable(22) %15, i8 noundef zeroext %35) #5 - %59 = tail call noundef i64 @_ZNK11TypeInteger15get_con_as_longE9BasicType(ptr noundef nonnull align 8 dereferenceable(22) %22, i8 noundef zeroext %35) #5 +46: ; preds = %26 + %47 = load ptr, ptr %22, align 8 + %48 = getelementptr inbounds nuw i8, ptr %47, i64 184 + %49 = load ptr, ptr %48, align 8 + %50 = tail call noundef i64 %49(ptr noundef nonnull align 8 dereferenceable(22) %22) #5 + %51 = load ptr, ptr %22, align 8 + %52 = getelementptr inbounds nuw i8, ptr %51, i64 176 + %53 = load ptr, ptr %52, align 8 + %54 = tail call noundef i64 %53(ptr noundef nonnull align 8 dereferenceable(22) %22) #5 + %55 = icmp eq i64 %50, %54 + br i1 %55, label %56, label %74 + +56: ; preds = %46 + %57 = tail call noundef i64 @_ZNK11TypeInteger15get_con_as_longE9BasicType(ptr noundef nonnull align 8 dereferenceable(22) %15, i8 noundef zeroext %35) #5 + %58 = tail call noundef i64 @_ZNK11TypeInteger15get_con_as_longE9BasicType(ptr noundef nonnull align 8 dereferenceable(22) %22, i8 noundef zeroext %35) #5 + %59 = select i1 %36, i32 31, i32 63 br label %.lr.ph.i -.lr.ph.i: ; preds = %57, %.lr.ph.i - %.019.i = phi i32 [ %.1.i, %.lr.ph.i ], [ 0, %57 ] - %.01018.i = phi i32 [ %68, %.lr.ph.i ], [ 0, %57 ] - %.01117.i = phi i64 [ %.112.i, %.lr.ph.i ], [ 0, %57 ] - %.01316.i = phi i64 [ %66, %.lr.ph.i ], [ %58, %57 ] - %.01415.i = phi i64 [ %67, %.lr.ph.i ], [ %59, %57 ] +.lr.ph.i: ; preds = %56, %.lr.ph.i + %.019.i = phi i32 [ %.1.i, %.lr.ph.i ], [ 0, %56 ] + %.01018.i = phi i32 [ %68, %.lr.ph.i ], [ 0, %56 ] + %.01117.i = phi i64 [ %.112.i, %.lr.ph.i ], [ 0, %56 ] + %.01316.i = phi i64 [ %66, %.lr.ph.i ], [ %57, %56 ] + %.01415.i = phi i64 [ %67, %.lr.ph.i ], [ %58, %56 ] %60 = and i64 %.01415.i, 1 %.not.i = icmp eq i64 %60, 0 %61 = and i64 %.01316.i, 1 @@ -1902,7 +1902,7 @@ define hidden noundef ptr @_ZNK16CompressBitsNode5ValueEP8PhaseGVN(ptr noundef n %66 = ashr i64 %.01316.i, 1 %67 = ashr i64 %.01415.i, 1 %68 = add nuw nsw i32 %.01018.i, 1 - %exitcond.not.i = icmp eq i32 %68, %37 + %exitcond.not.i = icmp eq i32 %59, %.01018.i br i1 %exitcond.not.i, label %_ZN16CompressBitsNode13compress_bitsElli.exit, label %.lr.ph.i, !llvm.loop !6 _ZN16CompressBitsNode13compress_bitsElli.exit: ; preds = %.lr.ph.i @@ -1917,7 +1917,7 @@ _ZN16CompressBitsNode13compress_bitsElli.exit: ; preds = %.lr.ph.i %73 = tail call noundef ptr @_ZN8TypeLong4makeEl(i64 noundef %.112.i) #5 br label %76 -74: ; preds = %47, %26 +74: ; preds = %46, %26 %75 = tail call fastcc noundef ptr @_ZL16bitshuffle_valuePK11TypeIntegerS1_i9BasicType(ptr noundef nonnull %15, ptr noundef %22, i32 noundef 65, i8 noundef zeroext %35) br label %76 @@ -2186,7 +2186,7 @@ define hidden noundef ptr @_ZNK14ExpandBitsNode5ValueEP8PhaseGVN(ptr noundef non 56: ; preds = %46 %57 = tail call noundef i64 @_ZNK11TypeInteger15get_con_as_longE9BasicType(ptr noundef nonnull align 8 dereferenceable(22) %15, i8 noundef zeroext %35) #5 %58 = tail call noundef i64 @_ZNK11TypeInteger15get_con_as_longE9BasicType(ptr noundef nonnull align 8 dereferenceable(22) %22, i8 noundef zeroext %35) #5 - %wide.trip.count.i = select i1 %36, i64 32, i64 64 + %wide.trip.count.i28 = select i1 %36, i64 31, i64 63 br label %.lr.ph.i .lr.ph.i: ; preds = %.lr.ph.i, %56 @@ -2203,7 +2203,7 @@ define hidden noundef ptr @_ZNK14ExpandBitsNode5ValueEP8PhaseGVN(ptr noundef non %.1.i = or i64 %62, %.01016.i %63 = ashr i64 %.01314.i, 1 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 - %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, %wide.trip.count.i + %exitcond.not.i = icmp eq i64 %wide.trip.count.i28, %indvars.iv.i br i1 %exitcond.not.i, label %_ZN14ExpandBitsNode11expand_bitsElli.exit, label %.lr.ph.i, !llvm.loop !8 _ZN14ExpandBitsNode11expand_bitsElli.exit: ; preds = %.lr.ph.i diff --git a/bench/openjdk/optimized/rewriter.ll b/bench/openjdk/optimized/rewriter.ll index 27f32ebc25d..cbe43ad82ce 100644 --- a/bench/openjdk/optimized/rewriter.ll +++ b/bench/openjdk/optimized/rewriter.ll @@ -2035,51 +2035,50 @@ _Z17is_reference_type9BasicTypeb.exit.thread: ; preds = %15, %15, %15, %25 br label %_Z17is_reference_type9BasicTypeb.exit 52: ; preds = %5 - %53 = select i1 %3, i32 231, i32 230 - %54 = load i8, ptr %1, align 1 - %55 = zext i8 %54 to i32 - %56 = icmp eq i32 %53, %55 - br i1 %56, label %57, label %_Z17is_reference_type9BasicTypeb.exit - -57: ; preds = %52 - %58 = sext i32 %2 to i64 - %59 = getelementptr inbounds i8, ptr %1, i64 %58 - %60 = getelementptr inbounds nuw i8, ptr %0, i64 88 - %61 = load ptr, ptr %60, align 8 - br i1 %3, label %62, label %73 - -62: ; preds = %57 - %.0.i.i = load i16, ptr %59, align 1 - %63 = zext i16 %.0.i.i to i64 - %64 = getelementptr inbounds nuw i32, ptr %61, i64 %63 - %65 = load i32, ptr %64, align 4 + %53 = load i8, ptr %1, align 1 + %54 = select i1 %3, i8 -25, i8 -26 + %55 = icmp eq i8 %54, %53 + br i1 %55, label %56, label %_Z17is_reference_type9BasicTypeb.exit + +56: ; preds = %52 + %57 = sext i32 %2 to i64 + %58 = getelementptr inbounds i8, ptr %1, i64 %57 + %59 = getelementptr inbounds nuw i8, ptr %0, i64 88 + %60 = load ptr, ptr %59, align 8 + br i1 %3, label %61, label %72 + +61: ; preds = %56 + %.0.i.i = load i16, ptr %58, align 1 + %62 = zext i16 %.0.i.i to i64 + %63 = getelementptr inbounds nuw i32, ptr %60, i64 %62 + %64 = load i32, ptr %63, align 4 store i8 19, ptr %1, align 1 - %66 = trunc i32 %65 to i16 - %67 = tail call noundef i16 @llvm.bswap.i16(i16 %66) - %68 = ptrtoint ptr %59 to i64 - %69 = and i64 %68, 1 - %70 = icmp eq i64 %69, 0 - br i1 %70, label %71, label %72 - -71: ; preds = %62 - store i16 %67, ptr %59, align 2 + %65 = trunc i32 %64 to i16 + %66 = tail call noundef i16 @llvm.bswap.i16(i16 %65) + %67 = ptrtoint ptr %58 to i64 + %68 = and i64 %67, 1 + %69 = icmp eq i64 %68, 0 + br i1 %69, label %70, label %71 + +70: ; preds = %61 + store i16 %66, ptr %58, align 2 br label %_Z17is_reference_type9BasicTypeb.exit -72: ; preds = %62 - store i16 %67, ptr %59, align 1 +71: ; preds = %61 + store i16 %66, ptr %58, align 1 br label %_Z17is_reference_type9BasicTypeb.exit -73: ; preds = %57 - %74 = load i8, ptr %59, align 1 - %75 = zext i8 %74 to i64 - %76 = getelementptr inbounds nuw i32, ptr %61, i64 %75 - %77 = load i32, ptr %76, align 4 +72: ; preds = %56 + %73 = load i8, ptr %58, align 1 + %74 = zext i8 %73 to i64 + %75 = getelementptr inbounds nuw i32, ptr %60, i64 %74 + %76 = load i32, ptr %75, align 4 store i8 18, ptr %1, align 1 - %78 = trunc i32 %77 to i8 - store i8 %78, ptr %59, align 1 + %77 = trunc i32 %76 to i8 + store i8 %77, ptr %58, align 1 br label %_Z17is_reference_type9BasicTypeb.exit -_Z17is_reference_type9BasicTypeb.exit: ; preds = %15, %72, %71, %49, %48, %25, %52, %73, %50 +_Z17is_reference_type9BasicTypeb.exit: ; preds = %15, %71, %70, %49, %48, %25, %52, %72, %50 ret void } diff --git a/bench/openspiel/optimized/backgammon.ll b/bench/openspiel/optimized/backgammon.ll index 047270e5bce..4802d623ea4 100644 --- a/bench/openspiel/optimized/backgammon.ll +++ b/bench/openspiel/optimized/backgammon.ll @@ -7968,7 +7968,7 @@ define noundef zeroext i1 @_ZNK10open_spiel10backgammon15BackgammonState9AllInHo %33 = load ptr, ptr %32, align 8 %34 = getelementptr inbounds nuw %"class.std::vector.6", ptr %33, i64 %12 %35 = load ptr, ptr %34, align 8 - %wide.trip.count = select i1 %30, i64 18, i64 24 + %wide.trip.count20 = select i1 %30, i64 17, i64 23 br label %36 36: ; preds = %36, %29 @@ -7977,8 +7977,8 @@ define noundef zeroext i1 @_ZNK10open_spiel10backgammon15BackgammonState9AllInHo %38 = load i32, ptr %37, align 4 %39 = icmp slt i32 %38, 1 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %exitcond.not = icmp ne i64 %indvars.iv.next, %wide.trip.count - %or.cond.not = select i1 %39, i1 %exitcond.not, i1 false + %exitcond.not = icmp ne i64 %wide.trip.count20, %indvars.iv + %or.cond.not = and i1 %exitcond.not, %39 br i1 %or.cond.not, label %36, label %.loopexit, !llvm.loop !31 .loopexit: ; preds = %36, %2 @@ -9061,12 +9061,12 @@ define noundef range(i32 0, 2) i32 @_ZNK10open_spiel10backgammon15BackgammonStat %23 = load ptr, ptr %22, align 8 %24 = getelementptr inbounds %"class.std::vector.6", ptr %23, i64 %8 %25 = load ptr, ptr %24, align 8 - %wide.trip.count = select i1 %20, i64 6, i64 24 + %wide.trip.count14 = select i1 %20, i64 5, i64 23 br label %27 26: ; preds = %27 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count + %exitcond.not = icmp eq i64 %wide.trip.count14, %indvars.iv br i1 %exitcond.not, label %.loopexit, label %27, !llvm.loop !38 27: ; preds = %19, %26 @@ -12484,12 +12484,12 @@ _ZNK10open_spiel10backgammon15BackgammonState10IsGammonedEi.exit.thread: ; preds %41 = load ptr, ptr %40, align 8 %42 = getelementptr inbounds nuw %"class.std::vector.6", ptr %41, i64 %.013 %43 = load ptr, ptr %42, align 8 - %wide.trip.count.i = select i1 %.not29, i64 24, i64 6 + %wide.trip.count14.i = select i1 %.not29, i64 23, i64 5 br label %45 44: ; preds = %45 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 - %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, %wide.trip.count.i + %exitcond.not.i = icmp eq i64 %wide.trip.count14.i, %indvars.iv.i br i1 %exitcond.not.i, label %_ZNK10open_spiel10backgammon15BackgammonState10IsGammonedEi.exit18, label %45, !llvm.loop !38 45: ; preds = %44, %38 diff --git a/bench/openvdb/optimized/FastSweeping.ll b/bench/openvdb/optimized/FastSweeping.ll index 80447744c22..471ddde681d 100644 --- a/bench/openvdb/optimized/FastSweeping.ll +++ b/bench/openvdb/optimized/FastSweeping.ll @@ -181192,8 +181192,8 @@ for.cond: ; preds = %invoke.cont8, %for. %12 = load atomic i64, ptr %my_segment_table.i.i.i.i acquire, align 8, !noalias !2316 %atomic-temp.i.0.i.i.i.i.i.i = inttoptr i64 %12 to ptr %cmp.i.i.i.i.i = icmp eq ptr %my_embedded_table.i.i.i.i, %atomic-temp.i.0.i.i.i.i.i.i - %cond.i.i.i.i.i = select i1 %cmp.i.i.i.i.i, i64 3, i64 64 %13 = load ptr, ptr %my_locals.i, align 8, !noalias !2316 + %cond.i11.i.i.i.i = select i1 %cmp.i.i.i.i.i, i64 2, i64 63 br label %for.body.i.i.i.i for.body.i.i.i.i: ; preds = %for.inc.i.i.i.i, %for.cond @@ -181211,7 +181211,7 @@ if.then.i.i.i.i: ; preds = %for.body.i.i.i.i for.inc.i.i.i.i: ; preds = %for.body.i.i.i.i %inc.i.i.i.i = add nuw nsw i64 %seg_index.09.i.i.i.i, 1 - %exitcond.not.i.i.i.i = icmp eq i64 %inc.i.i.i.i, %cond.i.i.i.i.i + %exitcond.not.i.i.i.i = icmp eq i64 %cond.i11.i.i.i.i, %seg_index.09.i.i.i.i br i1 %exitcond.not.i.i.i.i, label %invoke.cont12, label %for.body.i.i.i.i, !llvm.loop !2319 invoke.cont12: ; preds = %for.inc.i.i.i.i, %if.then.i.i.i.i @@ -188517,8 +188517,8 @@ for.cond: ; preds = %invoke.cont6, %for. %12 = load atomic i64, ptr %my_segment_table.i.i.i.i acquire, align 8, !noalias !2421 %atomic-temp.i.0.i.i.i.i.i.i = inttoptr i64 %12 to ptr %cmp.i.i.i.i.i = icmp eq ptr %my_embedded_table.i.i.i.i, %atomic-temp.i.0.i.i.i.i.i.i - %cond.i.i.i.i.i = select i1 %cmp.i.i.i.i.i, i64 3, i64 64 %13 = load ptr, ptr %my_locals.i, align 8, !noalias !2421 + %cond.i11.i.i.i.i = select i1 %cmp.i.i.i.i.i, i64 2, i64 63 br label %for.body.i.i.i.i for.body.i.i.i.i: ; preds = %for.inc.i.i.i.i, %for.cond @@ -188536,7 +188536,7 @@ if.then.i.i.i.i: ; preds = %for.body.i.i.i.i for.inc.i.i.i.i: ; preds = %for.body.i.i.i.i %inc.i.i.i.i = add nuw nsw i64 %seg_index.09.i.i.i.i, 1 - %exitcond.not.i.i.i.i = icmp eq i64 %inc.i.i.i.i, %cond.i.i.i.i.i + %exitcond.not.i.i.i.i = icmp eq i64 %cond.i11.i.i.i.i, %seg_index.09.i.i.i.i br i1 %exitcond.not.i.i.i.i, label %invoke.cont10, label %for.body.i.i.i.i, !llvm.loop !2319 invoke.cont10: ; preds = %for.inc.i.i.i.i, %if.then.i.i.i.i @@ -193479,8 +193479,8 @@ for.cond: ; preds = %invoke.cont6, %for. %12 = load atomic i64, ptr %my_segment_table.i.i.i.i acquire, align 8, !noalias !2482 %atomic-temp.i.0.i.i.i.i.i.i = inttoptr i64 %12 to ptr %cmp.i.i.i.i.i = icmp eq ptr %my_embedded_table.i.i.i.i, %atomic-temp.i.0.i.i.i.i.i.i - %cond.i.i.i.i.i = select i1 %cmp.i.i.i.i.i, i64 3, i64 64 %13 = load ptr, ptr %my_locals.i, align 8, !noalias !2482 + %cond.i11.i.i.i.i = select i1 %cmp.i.i.i.i.i, i64 2, i64 63 br label %for.body.i.i.i.i for.body.i.i.i.i: ; preds = %for.inc.i.i.i.i, %for.cond @@ -193498,7 +193498,7 @@ if.then.i.i.i.i: ; preds = %for.body.i.i.i.i for.inc.i.i.i.i: ; preds = %for.body.i.i.i.i %inc.i.i.i.i = add nuw nsw i64 %seg_index.09.i.i.i.i, 1 - %exitcond.not.i.i.i.i = icmp eq i64 %inc.i.i.i.i, %cond.i.i.i.i.i + %exitcond.not.i.i.i.i = icmp eq i64 %cond.i11.i.i.i.i, %seg_index.09.i.i.i.i br i1 %exitcond.not.i.i.i.i, label %invoke.cont10, label %for.body.i.i.i.i, !llvm.loop !2319 invoke.cont10: ; preds = %for.inc.i.i.i.i, %if.then.i.i.i.i @@ -198441,8 +198441,8 @@ for.cond: ; preds = %invoke.cont6, %for. %12 = load atomic i64, ptr %my_segment_table.i.i.i.i acquire, align 8, !noalias !2543 %atomic-temp.i.0.i.i.i.i.i.i = inttoptr i64 %12 to ptr %cmp.i.i.i.i.i = icmp eq ptr %my_embedded_table.i.i.i.i, %atomic-temp.i.0.i.i.i.i.i.i - %cond.i.i.i.i.i = select i1 %cmp.i.i.i.i.i, i64 3, i64 64 %13 = load ptr, ptr %my_locals.i, align 8, !noalias !2543 + %cond.i11.i.i.i.i = select i1 %cmp.i.i.i.i.i, i64 2, i64 63 br label %for.body.i.i.i.i for.body.i.i.i.i: ; preds = %for.inc.i.i.i.i, %for.cond @@ -198460,7 +198460,7 @@ if.then.i.i.i.i: ; preds = %for.body.i.i.i.i for.inc.i.i.i.i: ; preds = %for.body.i.i.i.i %inc.i.i.i.i = add nuw nsw i64 %seg_index.09.i.i.i.i, 1 - %exitcond.not.i.i.i.i = icmp eq i64 %inc.i.i.i.i, %cond.i.i.i.i.i + %exitcond.not.i.i.i.i = icmp eq i64 %cond.i11.i.i.i.i, %seg_index.09.i.i.i.i br i1 %exitcond.not.i.i.i.i, label %invoke.cont10, label %for.body.i.i.i.i, !llvm.loop !2319 invoke.cont10: ; preds = %for.inc.i.i.i.i, %if.then.i.i.i.i @@ -307194,8 +307194,8 @@ for.cond: ; preds = %invoke.cont6, %for. %12 = load atomic i64, ptr %my_segment_table.i.i.i.i acquire, align 8, !noalias !3850 %atomic-temp.i.0.i.i.i.i.i.i = inttoptr i64 %12 to ptr %cmp.i.i.i.i.i = icmp eq ptr %my_embedded_table.i.i.i.i, %atomic-temp.i.0.i.i.i.i.i.i - %cond.i.i.i.i.i = select i1 %cmp.i.i.i.i.i, i64 3, i64 64 %13 = load ptr, ptr %my_locals.i, align 8, !noalias !3850 + %cond.i11.i.i.i.i = select i1 %cmp.i.i.i.i.i, i64 2, i64 63 br label %for.body.i.i.i.i for.body.i.i.i.i: ; preds = %for.inc.i.i.i.i, %for.cond @@ -307213,7 +307213,7 @@ if.then.i.i.i.i: ; preds = %for.body.i.i.i.i for.inc.i.i.i.i: ; preds = %for.body.i.i.i.i %inc.i.i.i.i = add nuw nsw i64 %seg_index.09.i.i.i.i, 1 - %exitcond.not.i.i.i.i = icmp eq i64 %inc.i.i.i.i, %cond.i.i.i.i.i + %exitcond.not.i.i.i.i = icmp eq i64 %cond.i11.i.i.i.i, %seg_index.09.i.i.i.i br i1 %exitcond.not.i.i.i.i, label %invoke.cont10, label %for.body.i.i.i.i, !llvm.loop !2319 invoke.cont10: ; preds = %for.inc.i.i.i.i, %if.then.i.i.i.i @@ -312253,8 +312253,8 @@ for.cond: ; preds = %invoke.cont6, %for. %12 = load atomic i64, ptr %my_segment_table.i.i.i.i acquire, align 8, !noalias !3914 %atomic-temp.i.0.i.i.i.i.i.i = inttoptr i64 %12 to ptr %cmp.i.i.i.i.i = icmp eq ptr %my_embedded_table.i.i.i.i, %atomic-temp.i.0.i.i.i.i.i.i - %cond.i.i.i.i.i = select i1 %cmp.i.i.i.i.i, i64 3, i64 64 %13 = load ptr, ptr %my_locals.i, align 8, !noalias !3914 + %cond.i11.i.i.i.i = select i1 %cmp.i.i.i.i.i, i64 2, i64 63 br label %for.body.i.i.i.i for.body.i.i.i.i: ; preds = %for.inc.i.i.i.i, %for.cond @@ -312272,7 +312272,7 @@ if.then.i.i.i.i: ; preds = %for.body.i.i.i.i for.inc.i.i.i.i: ; preds = %for.body.i.i.i.i %inc.i.i.i.i = add nuw nsw i64 %seg_index.09.i.i.i.i, 1 - %exitcond.not.i.i.i.i = icmp eq i64 %inc.i.i.i.i, %cond.i.i.i.i.i + %exitcond.not.i.i.i.i = icmp eq i64 %cond.i11.i.i.i.i, %seg_index.09.i.i.i.i br i1 %exitcond.not.i.i.i.i, label %invoke.cont10, label %for.body.i.i.i.i, !llvm.loop !2319 invoke.cont10: ; preds = %for.inc.i.i.i.i, %if.then.i.i.i.i @@ -317215,8 +317215,8 @@ for.cond: ; preds = %invoke.cont6, %for. %12 = load atomic i64, ptr %my_segment_table.i.i.i.i acquire, align 8, !noalias !3975 %atomic-temp.i.0.i.i.i.i.i.i = inttoptr i64 %12 to ptr %cmp.i.i.i.i.i = icmp eq ptr %my_embedded_table.i.i.i.i, %atomic-temp.i.0.i.i.i.i.i.i - %cond.i.i.i.i.i = select i1 %cmp.i.i.i.i.i, i64 3, i64 64 %13 = load ptr, ptr %my_locals.i, align 8, !noalias !3975 + %cond.i11.i.i.i.i = select i1 %cmp.i.i.i.i.i, i64 2, i64 63 br label %for.body.i.i.i.i for.body.i.i.i.i: ; preds = %for.inc.i.i.i.i, %for.cond @@ -317234,7 +317234,7 @@ if.then.i.i.i.i: ; preds = %for.body.i.i.i.i for.inc.i.i.i.i: ; preds = %for.body.i.i.i.i %inc.i.i.i.i = add nuw nsw i64 %seg_index.09.i.i.i.i, 1 - %exitcond.not.i.i.i.i = icmp eq i64 %inc.i.i.i.i, %cond.i.i.i.i.i + %exitcond.not.i.i.i.i = icmp eq i64 %cond.i11.i.i.i.i, %seg_index.09.i.i.i.i br i1 %exitcond.not.i.i.i.i, label %invoke.cont10, label %for.body.i.i.i.i, !llvm.loop !2319 invoke.cont10: ; preds = %for.inc.i.i.i.i, %if.then.i.i.i.i @@ -322177,8 +322177,8 @@ for.cond: ; preds = %invoke.cont6, %for. %12 = load atomic i64, ptr %my_segment_table.i.i.i.i acquire, align 8, !noalias !4036 %atomic-temp.i.0.i.i.i.i.i.i = inttoptr i64 %12 to ptr %cmp.i.i.i.i.i = icmp eq ptr %my_embedded_table.i.i.i.i, %atomic-temp.i.0.i.i.i.i.i.i - %cond.i.i.i.i.i = select i1 %cmp.i.i.i.i.i, i64 3, i64 64 %13 = load ptr, ptr %my_locals.i, align 8, !noalias !4036 + %cond.i11.i.i.i.i = select i1 %cmp.i.i.i.i.i, i64 2, i64 63 br label %for.body.i.i.i.i for.body.i.i.i.i: ; preds = %for.inc.i.i.i.i, %for.cond @@ -322196,7 +322196,7 @@ if.then.i.i.i.i: ; preds = %for.body.i.i.i.i for.inc.i.i.i.i: ; preds = %for.body.i.i.i.i %inc.i.i.i.i = add nuw nsw i64 %seg_index.09.i.i.i.i, 1 - %exitcond.not.i.i.i.i = icmp eq i64 %inc.i.i.i.i, %cond.i.i.i.i.i + %exitcond.not.i.i.i.i = icmp eq i64 %cond.i11.i.i.i.i, %seg_index.09.i.i.i.i br i1 %exitcond.not.i.i.i.i, label %invoke.cont10, label %for.body.i.i.i.i, !llvm.loop !2319 invoke.cont10: ; preds = %for.inc.i.i.i.i, %if.then.i.i.i.i diff --git a/bench/php/optimized/pcre2_substitute.ll b/bench/php/optimized/pcre2_substitute.ll index c05a6e027af..850104b4257 100644 --- a/bench/php/optimized/pcre2_substitute.ll +++ b/bench/php/optimized/pcre2_substitute.ll @@ -2496,13 +2496,13 @@ define internal fastcc i64 @default_substitute_case_callout(ptr noundef %0, i64 %27 = getelementptr inbounds nuw i8, ptr %5, i64 24 br label %28 -28: ; preds = %188, %25 - %.0119 = phi i64 [ %3, %25 ], [ %.1120, %188 ] - %.1117 = phi i32 [ %.0116, %25 ], [ %.0115, %188 ] - %.0113 = phi ptr [ %2, %25 ], [ %.1114, %188 ] - %.0111 = phi i32 [ 0, %25 ], [ %.1112, %188 ] - %.0108 = phi i64 [ 0, %25 ], [ %189, %188 ] - %.0100 = phi ptr [ %0, %25 ], [ %.1101, %188 ] +28: ; preds = %187, %25 + %.0119 = phi i64 [ %3, %25 ], [ %.1120, %187 ] + %.1117 = phi i32 [ %.0116, %25 ], [ %.0115, %187 ] + %.0113 = phi ptr [ %2, %25 ], [ %.1114, %187 ] + %.0111 = phi i32 [ 0, %25 ], [ %.1112, %187 ] + %.0108 = phi i64 [ 0, %25 ], [ %188, %187 ] + %.0100 = phi ptr [ %0, %25 ], [ %.1101, %187 ] %29 = icmp ult ptr %.0100, %8 br i1 %29, label %30, label %.thread @@ -2628,7 +2628,7 @@ define internal fastcc i64 @default_substitute_case_callout(ptr noundef %0, i64 %.1101 = phi ptr [ %41, %38 ], [ %62, %52 ], [ %82, %66 ], [ %108, %98 ], [ %125, %109 ], [ %31, %30 ] %127 = icmp samesign ugt i32 %.0103, 127 %or.cond5 = select i1 %or.cond3, i1 %127, i1 false - br i1 %or.cond5, label %128, label %155 + br i1 %or.cond5, label %128, label %154 128: ; preds = %126 %129 = lshr i32 %.0103, 7 @@ -2650,103 +2650,102 @@ define internal fastcc i64 @default_substitute_case_callout(ptr noundef %0, i64 %145 = getelementptr inbounds nuw [0 x i32], ptr @_pcre2_ucp_gentype_8, i64 0, i64 %144 %146 = load i32, ptr %145, align 4, !tbaa !38 %147 = icmp eq i32 %146, 1 - br i1 %147, label %148, label %175 + br i1 %147, label %148, label %174 148: ; preds = %128 - %149 = zext i8 %143 to i32 %.not128 = icmp eq i32 %.1117, 0 - %150 = select i1 %.not128, i32 5, i32 9 - %.not129 = icmp eq i32 %150, %149 - br i1 %.not129, label %175, label %151 - -151: ; preds = %148 - %152 = getelementptr inbounds nuw i8, ptr %141, i64 4 - %153 = load i32, ptr %152, align 4, !tbaa !47 - %154 = add nsw i32 %153, %.0103 - br label %175 - -155: ; preds = %126 - %156 = load ptr, ptr %27, align 8, !tbaa !35 - %157 = getelementptr inbounds nuw i8, ptr %156, i64 512 + %149 = select i1 %.not128, i8 5, i8 9 + %.not129 = icmp eq i8 %149, %143 + br i1 %.not129, label %174, label %150 + +150: ; preds = %148 + %151 = getelementptr inbounds nuw i8, ptr %141, i64 4 + %152 = load i32, ptr %151, align 4, !tbaa !47 + %153 = add nsw i32 %152, %.0103 + br label %174 + +154: ; preds = %126 + %155 = load ptr, ptr %27, align 8, !tbaa !35 + %156 = getelementptr inbounds nuw i8, ptr %155, i64 512 %.not127 = icmp eq i32 %.1117, 0 - %158 = select i1 %.not127, i64 128, i64 96 - %159 = getelementptr inbounds nuw i8, ptr %157, i64 %158 - %160 = lshr i32 %.0103, 3 - %161 = zext nneg i32 %160 to i64 - %162 = getelementptr inbounds nuw i8, ptr %159, i64 %161 - %163 = load i8, ptr %162, align 1, !tbaa !31 - %164 = zext i8 %163 to i32 - %165 = and i32 %.0103, 7 - %166 = shl nuw nsw i32 1, %165 - %167 = and i32 %166, %164 - %168 = icmp eq i32 %167, 0 - br i1 %168, label %169, label %175 - -169: ; preds = %155 - %170 = getelementptr inbounds nuw i8, ptr %156, i64 256 - %171 = zext nneg i32 %.0103 to i64 - %172 = getelementptr inbounds nuw i8, ptr %170, i64 %171 - %173 = load i8, ptr %172, align 1, !tbaa !31 - %174 = zext i8 %173 to i32 - br label %175 - -175: ; preds = %128, %148, %151, %155, %169 - %.2105 = phi i32 [ %174, %169 ], [ %.0103, %155 ], [ %154, %151 ], [ %.0103, %148 ], [ %.0103, %128 ] - br i1 %12, label %176, label %179 - -176: ; preds = %175 - %177 = call i32 @_pcre2_ord2utf_8(i32 noundef %.2105, ptr noundef nonnull %7) #7 - %178 = zext i32 %177 to i64 - br label %181 - -179: ; preds = %175 - %180 = trunc i32 %.2105 to i8 - store i8 %180, ptr %7, align 1, !tbaa !31 - br label %181 - -181: ; preds = %179, %176 - %.0102 = phi i64 [ %178, %176 ], [ 1, %179 ] + %157 = select i1 %.not127, i64 128, i64 96 + %158 = getelementptr inbounds nuw i8, ptr %156, i64 %157 + %159 = lshr i32 %.0103, 3 + %160 = zext nneg i32 %159 to i64 + %161 = getelementptr inbounds nuw i8, ptr %158, i64 %160 + %162 = load i8, ptr %161, align 1, !tbaa !31 + %163 = zext i8 %162 to i32 + %164 = and i32 %.0103, 7 + %165 = shl nuw nsw i32 1, %164 + %166 = and i32 %165, %163 + %167 = icmp eq i32 %166, 0 + br i1 %167, label %168, label %174 + +168: ; preds = %154 + %169 = getelementptr inbounds nuw i8, ptr %155, i64 256 + %170 = zext nneg i32 %.0103 to i64 + %171 = getelementptr inbounds nuw i8, ptr %169, i64 %170 + %172 = load i8, ptr %171, align 1, !tbaa !31 + %173 = zext i8 %172 to i32 + br label %174 + +174: ; preds = %128, %148, %150, %154, %168 + %.2105 = phi i32 [ %173, %168 ], [ %.0103, %154 ], [ %153, %150 ], [ %.0103, %148 ], [ %.0103, %128 ] + br i1 %12, label %175, label %178 + +175: ; preds = %174 + %176 = call i32 @_pcre2_ord2utf_8(i32 noundef %.2105, ptr noundef nonnull %7) #7 + %177 = zext i32 %176 to i64 + br label %180 + +178: ; preds = %174 + %179 = trunc i32 %.2105 to i8 + store i8 %179, ptr %7, align 1, !tbaa !31 + br label %180 + +180: ; preds = %178, %175 + %.0102 = phi i64 [ %177, %175 ], [ 1, %178 ] %.not130 = icmp ne i32 %.0111, 0 %.not131 = icmp ugt i64 %.0102, %.0119 %or.cond134.not.not = select i1 %.not130, i1 true, i1 %.not131 - br i1 %or.cond134.not.not, label %185, label %182 + br i1 %or.cond134.not.not, label %184, label %181 -182: ; preds = %181 +181: ; preds = %180 call void @llvm.memcpy.p0.p0.i64(ptr align 1 %.0113, ptr nonnull align 1 %7, i64 %.0102, i1 false) - %183 = getelementptr inbounds nuw i8, ptr %.0113, i64 %.0102 - %184 = sub nuw i64 %.0119, %.0102 - br label %185 - -185: ; preds = %181, %182 - %.1120 = phi i64 [ %184, %182 ], [ %.0119, %181 ] - %.1114 = phi ptr [ %183, %182 ], [ %.0113, %181 ] - %.1112 = phi i32 [ 0, %182 ], [ 1, %181 ] - %186 = xor i64 %.0108, -1 - %187 = icmp ugt i64 %.0102, %186 - br i1 %187, label %.thread, label %188 - -188: ; preds = %185 - %189 = add i64 %.0102, %.0108 - br i1 %.not, label %28, label %190 - -190: ; preds = %188 - %191 = ptrtoint ptr %8 to i64 - %192 = ptrtoint ptr %.1101 to i64 - %193 = sub i64 %191, %192 - %.not133 = icmp ugt i64 %193, %.1120 + %182 = getelementptr inbounds nuw i8, ptr %.0113, i64 %.0102 + %183 = sub nuw i64 %.0119, %.0102 + br label %184 + +184: ; preds = %180, %181 + %.1120 = phi i64 [ %183, %181 ], [ %.0119, %180 ] + %.1114 = phi ptr [ %182, %181 ], [ %.0113, %180 ] + %.1112 = phi i32 [ 0, %181 ], [ 1, %180 ] + %185 = xor i64 %.0108, -1 + %186 = icmp ugt i64 %.0102, %185 + br i1 %186, label %.thread, label %187 + +187: ; preds = %184 + %188 = add i64 %.0102, %.0108 + br i1 %.not, label %28, label %189 + +189: ; preds = %187 + %190 = ptrtoint ptr %8 to i64 + %191 = ptrtoint ptr %.1101 to i64 + %192 = sub i64 %190, %191 + %.not133 = icmp ugt i64 %192, %.1120 %or.cond135 = select i1 %or.cond134.not.not, i1 true, i1 %.not133 - br i1 %or.cond135, label %195, label %194 + br i1 %or.cond135, label %194, label %193 -194: ; preds = %190 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %.1114, ptr nonnull align 1 %.1101, i64 %193, i1 false) - br label %195 +193: ; preds = %189 + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %.1114, ptr nonnull align 1 %.1101, i64 %192, i1 false) + br label %194 -195: ; preds = %194, %190 - %.3 = call i64 @llvm.uadd.sat.i64(i64 %189, i64 %193) +194: ; preds = %193, %189 + %.3 = call i64 @llvm.uadd.sat.i64(i64 %188, i64 %192) br label %.thread -.thread: ; preds = %185, %28, %195, %14, %6 - %.0 = phi i64 [ 0, %6 ], [ 0, %14 ], [ %.3, %195 ], [ -1, %185 ], [ %.0108, %28 ] +.thread: ; preds = %184, %28, %194, %14, %6 + %.0 = phi i64 [ 0, %6 ], [ 0, %14 ], [ %.3, %194 ], [ -1, %184 ], [ %.0108, %28 ] call void @llvm.lifetime.end.p0(i64 6, ptr nonnull %7) #7 ret i64 %.0 } diff --git a/bench/php/optimized/quot_print.ll b/bench/php/optimized/quot_print.ll index 6049eb11cf3..4ed787b684a 100644 --- a/bench/php/optimized/quot_print.ll +++ b/bench/php/optimized/quot_print.ll @@ -10,37 +10,36 @@ target triple = "x86_64-pc-linux-gnu" ; Function Attrs: nounwind uwtable define dso_local noundef ptr @php_quot_print_decode(ptr noundef readonly captures(none) %0, i64 noundef %1, i32 noundef %2) local_unnamed_addr #0 { %.not = icmp eq i32 %2, 0 - %spec.store.select = select i1 %.not, i32 0, i32 95 %4 = icmp ugt i64 %1, 1 br i1 %4, label %.lr.ph, label %.critedge .lr.ph: ; preds = %3, %10 - %.06199 = phi i64 [ %.1, %10 ], [ %1, %3 ] - %.06798 = phi ptr [ %11, %10 ], [ %0, %3 ] - %.06997 = phi i64 [ %12, %10 ], [ %1, %3 ] - %5 = load i8, ptr %.06798, align 1, !tbaa !4 + %.061100 = phi i64 [ %.1, %10 ], [ %1, %3 ] + %.06799 = phi ptr [ %11, %10 ], [ %0, %3 ] + %.06998 = phi i64 [ %12, %10 ], [ %1, %3 ] + %5 = load i8, ptr %.06799, align 1, !tbaa !4 switch i8 %5, label %10 [ i8 0, label %.critedge i8 61, label %6 ] 6: ; preds = %.lr.ph - %7 = add i64 %.06199, -2 - %8 = getelementptr inbounds nuw i8, ptr %.06798, i64 1 - %9 = add i64 %.06997, -1 + %7 = add i64 %.061100, -2 + %8 = getelementptr inbounds nuw i8, ptr %.06799, i64 1 + %9 = add i64 %.06998, -1 br label %10 10: ; preds = %.lr.ph, %6 - %.170 = phi i64 [ %9, %6 ], [ %.06997, %.lr.ph ] - %.168 = phi ptr [ %8, %6 ], [ %.06798, %.lr.ph ] - %.1 = phi i64 [ %7, %6 ], [ %.06199, %.lr.ph ] + %.170 = phi i64 [ %9, %6 ], [ %.06998, %.lr.ph ] + %.168 = phi ptr [ %8, %6 ], [ %.06799, %.lr.ph ] + %.1 = phi i64 [ %7, %6 ], [ %.061100, %.lr.ph ] %11 = getelementptr inbounds nuw i8, ptr %.168, i64 1 %12 = add i64 %.170, -1 %13 = icmp ugt i64 %12, 1 br i1 %13, label %.lr.ph, label %.critedge .critedge: ; preds = %.lr.ph, %10, %3 - %.061.lcssa = phi i64 [ %1, %3 ], [ %.06199, %.lr.ph ], [ %.1, %10 ] + %.061.lcssa = phi i64 [ %1, %3 ], [ %.061100, %.lr.ph ], [ %.1, %10 ] %14 = and i64 %.061.lcssa, -8 %15 = add i64 %14, 32 %16 = tail call noalias ptr @_emalloc(i64 noundef %15) #8 @@ -52,165 +51,168 @@ define dso_local noundef ptr @php_quot_print_decode(ptr noundef readonly capture %19 = getelementptr inbounds nuw i8, ptr %16, i64 16 store i64 %.061.lcssa, ptr %19, align 8, !tbaa !13 %20 = getelementptr inbounds nuw i8, ptr %16, i64 24 - %.not85102 = icmp eq i64 %1, 0 - br i1 %.not85102, label %.critedge2, label %.lr.ph107 - -.lr.ph107: ; preds = %.critedge, %82 - %.062106 = phi i64 [ %.163, %82 ], [ 0, %.critedge ] - %.065105 = phi ptr [ %.166, %82 ], [ %20, %.critedge ] - %.2104 = phi ptr [ %.5, %82 ], [ %0, %.critedge ] - %.271103 = phi i64 [ %.574, %82 ], [ %1, %.critedge ] - %21 = load i8, ptr %.2104, align 1, !tbaa !4 - switch i8 %21, label %75 [ + %.not85103 = icmp eq i64 %1, 0 + br i1 %.not85103, label %.critedge2, label %.lr.ph108 + +.lr.ph108: ; preds = %.critedge + %spec.store.select87 = select i1 %.not, i8 0, i8 95 + br label %21 + +21: ; preds = %.lr.ph108, %82 + %.062107 = phi i64 [ 0, %.lr.ph108 ], [ %.163, %82 ] + %.065106 = phi ptr [ %20, %.lr.ph108 ], [ %.166, %82 ] + %.2105 = phi ptr [ %0, %.lr.ph108 ], [ %.5, %82 ] + %.271104 = phi i64 [ %1, %.lr.ph108 ], [ %.574, %82 ] + %22 = load i8, ptr %.2105, align 1, !tbaa !4 + switch i8 %22, label %76 [ i8 0, label %.critedge2 - i8 61, label %22 + i8 61, label %23 ] -22: ; preds = %.lr.ph107 - %23 = add i64 %.271103, -1 - %24 = getelementptr inbounds nuw i8, ptr %.2104, i64 1 - %25 = icmp eq i64 %23, 0 - br i1 %25, label %.critedge2, label %26 - -26: ; preds = %22 - %27 = load i8, ptr %24, align 1, !tbaa !4 - %28 = icmp eq i8 %27, 0 - br i1 %28, label %.critedge2, label %29 - -29: ; preds = %26 - %30 = zext i8 %27 to i64 - %31 = getelementptr inbounds nuw [256 x i32], ptr @php_quot_print_decode.hexval_tbl, i64 0, i64 %30 - %32 = load i32, ptr %31, align 4, !tbaa !14 - %33 = icmp ult i32 %32, 16 - br i1 %33, label %34, label %52 - -34: ; preds = %29 - %35 = icmp eq i64 %.271103, 2 - br i1 %35, label %43, label %36 - -36: ; preds = %34 - %37 = getelementptr inbounds nuw i8, ptr %.2104, i64 2 - %38 = load i8, ptr %37, align 1, !tbaa !4 - %39 = zext i8 %38 to i64 - %40 = getelementptr inbounds nuw [256 x i32], ptr @php_quot_print_decode.hexval_tbl, i64 0, i64 %39 - %41 = load i32, ptr %40, align 4, !tbaa !14 - %42 = icmp ugt i32 %41, 15 - br i1 %42, label %43, label %44 - -43: ; preds = %36, %34 +23: ; preds = %21 + %24 = add i64 %.271104, -1 + %25 = getelementptr inbounds nuw i8, ptr %.2105, i64 1 + %26 = icmp eq i64 %24, 0 + br i1 %26, label %.critedge2, label %27 + +27: ; preds = %23 + %28 = load i8, ptr %25, align 1, !tbaa !4 + %29 = icmp eq i8 %28, 0 + br i1 %29, label %.critedge2, label %30 + +30: ; preds = %27 + %31 = zext i8 %28 to i64 + %32 = getelementptr inbounds nuw [256 x i32], ptr @php_quot_print_decode.hexval_tbl, i64 0, i64 %31 + %33 = load i32, ptr %32, align 4, !tbaa !14 + %34 = icmp ult i32 %33, 16 + br i1 %34, label %35, label %53 + +35: ; preds = %30 + %36 = icmp eq i64 %.271104, 2 + br i1 %36, label %44, label %37 + +37: ; preds = %35 + %38 = getelementptr inbounds nuw i8, ptr %.2105, i64 2 + %39 = load i8, ptr %38, align 1, !tbaa !4 + %40 = zext i8 %39 to i64 + %41 = getelementptr inbounds nuw [256 x i32], ptr @php_quot_print_decode.hexval_tbl, i64 0, i64 %40 + %42 = load i32, ptr %41, align 4, !tbaa !14 + %43 = icmp ugt i32 %42, 15 + br i1 %43, label %44, label %45 + +44: ; preds = %37, %35 tail call void @_efree(ptr noundef nonnull %16) #9 br label %83 -44: ; preds = %36 - %45 = shl nuw nsw i32 %32, 4 - %46 = or disjoint i32 %41, %45 - %47 = trunc nuw i32 %46 to i8 - %48 = getelementptr inbounds nuw i8, ptr %.065105, i64 1 - store i8 %47, ptr %.065105, align 1, !tbaa !4 - %49 = add i64 %.062106, 1 - %50 = add i64 %.271103, -3 - %51 = getelementptr inbounds nuw i8, ptr %.2104, i64 3 +45: ; preds = %37 + %46 = shl nuw nsw i32 %33, 4 + %47 = or disjoint i32 %42, %46 + %48 = trunc nuw i32 %47 to i8 + %49 = getelementptr inbounds nuw i8, ptr %.065106, i64 1 + store i8 %48, ptr %.065106, align 1, !tbaa !4 + %50 = add i64 %.062107, 1 + %51 = add i64 %.271104, -3 + %52 = getelementptr inbounds nuw i8, ptr %.2105, i64 3 br label %82 -52: ; preds = %29 - %53 = icmp ult i32 %32, 64 - br i1 %53, label %.preheader.preheader, label %74 +53: ; preds = %30 + %54 = icmp ult i32 %33, 64 + br i1 %54, label %.preheader.preheader, label %75 -.preheader.preheader: ; preds = %52 - switch i8 %27, label %.preheader._crit_edge [ - i8 32, label %.lr.ph129.preheader - i8 9, label %.lr.ph129.preheader +.preheader.preheader: ; preds = %53 + switch i8 %28, label %.preheader._crit_edge [ + i8 32, label %.lr.ph130.preheader + i8 9, label %.lr.ph130.preheader ] -.lr.ph129.preheader: ; preds = %.preheader.preheader, %.preheader.preheader - br label %.lr.ph129 +.lr.ph130.preheader: ; preds = %.preheader.preheader, %.preheader.preheader + br label %.lr.ph130 -.preheader: ; preds = %56 - switch i8 %58, label %.preheader._crit_edge [ - i8 32, label %.lr.ph129.backedge - i8 9, label %.lr.ph129.backedge +.preheader: ; preds = %57 + switch i8 %59, label %.preheader._crit_edge [ + i8 32, label %.lr.ph130.backedge + i8 9, label %.lr.ph130.backedge ] -.lr.ph129.backedge: ; preds = %.preheader, %.preheader - br label %.lr.ph129 - -.lr.ph129: ; preds = %.lr.ph129.backedge, %.lr.ph129.preheader - %.3128 = phi ptr [ %24, %.lr.ph129.preheader ], [ %57, %.lr.ph129.backedge ] - %.372127 = phi i64 [ %23, %.lr.ph129.preheader ], [ %54, %.lr.ph129.backedge ] - %54 = add i64 %.372127, -1 - %55 = icmp eq i64 %54, 0 - br i1 %55, label %63, label %56 - -56: ; preds = %.lr.ph129 - %57 = getelementptr inbounds nuw i8, ptr %.3128, i64 1 - %58 = load i8, ptr %57, align 1, !tbaa !4 - %59 = zext i8 %58 to i64 - %60 = getelementptr inbounds nuw [256 x i32], ptr @php_quot_print_decode.hexval_tbl, i64 0, i64 %59 - %61 = load i32, ptr %60, align 4, !tbaa !14 - %62 = icmp eq i32 %61, 64 - br i1 %62, label %63, label %.preheader - -63: ; preds = %56, %.lr.ph129 +.lr.ph130.backedge: ; preds = %.preheader, %.preheader + br label %.lr.ph130 + +.lr.ph130: ; preds = %.lr.ph130.backedge, %.lr.ph130.preheader + %.3129 = phi ptr [ %25, %.lr.ph130.preheader ], [ %58, %.lr.ph130.backedge ] + %.372128 = phi i64 [ %24, %.lr.ph130.preheader ], [ %55, %.lr.ph130.backedge ] + %55 = add i64 %.372128, -1 + %56 = icmp eq i64 %55, 0 + br i1 %56, label %64, label %57 + +57: ; preds = %.lr.ph130 + %58 = getelementptr inbounds nuw i8, ptr %.3129, i64 1 + %59 = load i8, ptr %58, align 1, !tbaa !4 + %60 = zext i8 %59 to i64 + %61 = getelementptr inbounds nuw [256 x i32], ptr @php_quot_print_decode.hexval_tbl, i64 0, i64 %60 + %62 = load i32, ptr %61, align 4, !tbaa !14 + %63 = icmp eq i32 %62, 64 + br i1 %63, label %64, label %.preheader + +64: ; preds = %57, %.lr.ph130 tail call void @_efree(ptr noundef nonnull %16) #9 br label %83 .preheader._crit_edge: ; preds = %.preheader, %.preheader.preheader - %.lcssa = phi i8 [ %27, %.preheader.preheader ], [ %58, %.preheader ] - %.372.lcssa = phi i64 [ %23, %.preheader.preheader ], [ %54, %.preheader ] - %.3.lcssa = phi ptr [ %24, %.preheader.preheader ], [ %57, %.preheader ] - %64 = icmp eq i8 %.lcssa, 13 - %65 = icmp ugt i64 %.372.lcssa, 1 - %or.cond = and i1 %65, %64 - br i1 %or.cond, label %66, label %71 - -66: ; preds = %.preheader._crit_edge - %67 = getelementptr inbounds nuw i8, ptr %.3.lcssa, i64 1 - %68 = load i8, ptr %67, align 1, !tbaa !4 - %69 = icmp eq i8 %68, 10 - %70 = sext i1 %69 to i64 - %spec.select = add i64 %.372.lcssa, %70 - %spec.select87 = select i1 %69, ptr %67, ptr %.3.lcssa - br label %71 - -71: ; preds = %66, %.preheader._crit_edge - %.473 = phi i64 [ %.372.lcssa, %.preheader._crit_edge ], [ %spec.select, %66 ] - %.4 = phi ptr [ %.3.lcssa, %.preheader._crit_edge ], [ %spec.select87, %66 ] - %72 = add i64 %.473, -1 - %73 = getelementptr inbounds nuw i8, ptr %.4, i64 1 + %.lcssa = phi i8 [ %28, %.preheader.preheader ], [ %59, %.preheader ] + %.372.lcssa = phi i64 [ %24, %.preheader.preheader ], [ %55, %.preheader ] + %.3.lcssa = phi ptr [ %25, %.preheader.preheader ], [ %58, %.preheader ] + %65 = icmp eq i8 %.lcssa, 13 + %66 = icmp ugt i64 %.372.lcssa, 1 + %or.cond = and i1 %66, %65 + br i1 %or.cond, label %67, label %72 + +67: ; preds = %.preheader._crit_edge + %68 = getelementptr inbounds nuw i8, ptr %.3.lcssa, i64 1 + %69 = load i8, ptr %68, align 1, !tbaa !4 + %70 = icmp eq i8 %69, 10 + %71 = sext i1 %70 to i64 + %spec.select = add i64 %.372.lcssa, %71 + %spec.select88 = select i1 %70, ptr %68, ptr %.3.lcssa + br label %72 + +72: ; preds = %67, %.preheader._crit_edge + %.473 = phi i64 [ %.372.lcssa, %.preheader._crit_edge ], [ %spec.select, %67 ] + %.4 = phi ptr [ %.3.lcssa, %.preheader._crit_edge ], [ %spec.select88, %67 ] + %73 = add i64 %.473, -1 + %74 = getelementptr inbounds nuw i8, ptr %.4, i64 1 br label %82 -74: ; preds = %52 +75: ; preds = %53 tail call void @_efree(ptr noundef nonnull %16) #9 br label %83 -75: ; preds = %.lr.ph107 - %76 = zext i8 %21 to i32 - %77 = icmp eq i32 %spec.store.select, %76 - %spec.select88 = select i1 %77, i8 32, i8 %21 - %78 = getelementptr inbounds nuw i8, ptr %.065105, i64 1 - store i8 %spec.select88, ptr %.065105, align 1, !tbaa !4 - %79 = add i64 %.271103, -1 - %80 = getelementptr inbounds nuw i8, ptr %.2104, i64 1 - %81 = add i64 %.062106, 1 +76: ; preds = %21 + %77 = icmp eq i8 %spec.store.select87, %22 + %spec.select89 = select i1 %77, i8 32, i8 %22 + %78 = getelementptr inbounds nuw i8, ptr %.065106, i64 1 + store i8 %spec.select89, ptr %.065106, align 1, !tbaa !4 + %79 = add i64 %.271104, -1 + %80 = getelementptr inbounds nuw i8, ptr %.2105, i64 1 + %81 = add i64 %.062107, 1 br label %82 -82: ; preds = %44, %71, %75 - %.574 = phi i64 [ %50, %44 ], [ %72, %71 ], [ %79, %75 ] - %.5 = phi ptr [ %51, %44 ], [ %73, %71 ], [ %80, %75 ] - %.166 = phi ptr [ %48, %44 ], [ %.065105, %71 ], [ %78, %75 ] - %.163 = phi i64 [ %49, %44 ], [ %.062106, %71 ], [ %81, %75 ] +82: ; preds = %45, %72, %76 + %.574 = phi i64 [ %51, %45 ], [ %73, %72 ], [ %79, %76 ] + %.5 = phi ptr [ %52, %45 ], [ %74, %72 ], [ %80, %76 ] + %.166 = phi ptr [ %49, %45 ], [ %.065106, %72 ], [ %78, %76 ] + %.163 = phi i64 [ %50, %45 ], [ %.062107, %72 ], [ %81, %76 ] %.not85 = icmp eq i64 %.574, 0 - br i1 %.not85, label %.critedge2, label %.lr.ph107 + br i1 %.not85, label %.critedge2, label %21 -.critedge2: ; preds = %26, %22, %82, %.lr.ph107, %.critedge - %.065.lcssa = phi ptr [ %20, %.critedge ], [ %.065105, %.lr.ph107 ], [ %.166, %82 ], [ %.065105, %22 ], [ %.065105, %26 ] - %.062.lcssa = phi i64 [ 0, %.critedge ], [ %.062106, %.lr.ph107 ], [ %.163, %82 ], [ %.062106, %22 ], [ %.062106, %26 ] +.critedge2: ; preds = %27, %23, %82, %21, %.critedge + %.065.lcssa = phi ptr [ %20, %.critedge ], [ %.065106, %21 ], [ %.166, %82 ], [ %.065106, %23 ], [ %.065106, %27 ] + %.062.lcssa = phi i64 [ 0, %.critedge ], [ %.062107, %21 ], [ %.163, %82 ], [ %.062107, %23 ], [ %.062107, %27 ] store i8 0, ptr %.065.lcssa, align 1, !tbaa !4 store i64 %.062.lcssa, ptr %19, align 8, !tbaa !13 br label %83 -83: ; preds = %.critedge2, %74, %63, %43 - %.0 = phi ptr [ %16, %.critedge2 ], [ null, %43 ], [ null, %63 ], [ null, %74 ] +83: ; preds = %.critedge2, %75, %64, %44 + %.0 = phi ptr [ %16, %.critedge2 ], [ null, %44 ], [ null, %64 ], [ null, %75 ] ret ptr %.0 } diff --git a/bench/pingora-rs/optimized/63snncgsqpi17trm0hdteq5vk.ll b/bench/pingora-rs/optimized/63snncgsqpi17trm0hdteq5vk.ll index 303f86290ad..a656cbe5ddb 100644 --- a/bench/pingora-rs/optimized/63snncgsqpi17trm0hdteq5vk.ll +++ b/bench/pingora-rs/optimized/63snncgsqpi17trm0hdteq5vk.ll @@ -7944,7 +7944,7 @@ _ZN6brotli3enc14block_splitter18RefineEntropyCodes17h9470e8526edcced8E.exit.i: ; %223 = invoke { ptr, i64 } @"_ZN111_$LT$alloc_stdlib..std_alloc..StandardAlloc$u20$as$u20$alloc_no_stdlib..stack_allocator..Allocator$LT$T$GT$$GT$10alloc_cell17h496b870d59415105E"(ptr noalias noundef nonnull align 1 %0, i64 noundef %222) to label %225 unwind label %.thread4.i, !noalias !260 -.thread81.thread.thread837.i: ; preds = %261, %260, %259 +.thread81.thread.thread838.i: ; preds = %261, %260, %259 %.sroa.026.5.ph.ph.i = phi i1 [ false, %260 ], [ true, %259 ], [ false, %261 ] %lpad.thr_comm.i = landingpad { ptr, i32 } cleanup @@ -8022,7 +8022,6 @@ _ZN6brotli3enc14block_splitter18RefineEntropyCodes17h9470e8526edcced8E.exit.i: ; %247 = getelementptr inbounds nuw i8, ptr %122, i64 8 store i64 %246, ptr %247, align 8, !noalias !265 %248 = icmp slt i32 %.val29, 12 - %..i = select i1 %248, i64 3, i64 10 %249 = icmp ugt i64 %133, %136 %250 = getelementptr inbounds nuw i8, ptr %135, i64 %133 %.sroa.4250.0..sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %93, i64 4 @@ -8045,6 +8044,7 @@ _ZN6brotli3enc14block_splitter18RefineEntropyCodes17h9470e8526edcced8E.exit.i: ; %253 = icmp eq i64 %233, 0 %254 = icmp ult i64 %251, %218 %255 = getelementptr inbounds nuw i8, ptr %217, i64 %251 + %.830.i = select i1 %248, i64 2, i64 9 br label %731 256: ; preds = %_ZN6brotli3enc14block_splitter20BuildBlockHistograms17h8eb2c873dc460cb9E.exit.i @@ -8061,11 +8061,11 @@ _ZN6brotli3enc14block_splitter18RefineEntropyCodes17h9470e8526edcced8E.exit.i: ; 259: ; preds = %258 invoke void @"_ZN111_$LT$alloc_stdlib..std_alloc..StandardAlloc$u20$as$u20$alloc_no_stdlib..stack_allocator..Allocator$LT$T$GT$$GT$9free_cell17h49a5bd31abbbe38fE"(ptr noalias noundef nonnull align 1 %0, ptr noalias noundef nonnull align 2 %245, i64 noundef %246) - to label %260 unwind label %.thread81.thread.thread837.i, !noalias !260 + to label %260 unwind label %.thread81.thread.thread838.i, !noalias !260 260: ; preds = %259 invoke void @"_ZN111_$LT$alloc_stdlib..std_alloc..StandardAlloc$u20$as$u20$alloc_no_stdlib..stack_allocator..Allocator$LT$T$GT$$GT$9free_cell17h4bb3750273934aaeE"(ptr noalias noundef nonnull align 1 %0, ptr noalias noundef nonnull align 8 %156, i64 noundef %157) - to label %261 unwind label %.thread81.thread.thread837.i, !noalias !260 + to label %261 unwind label %.thread81.thread.thread838.i, !noalias !260 261: ; preds = %260 call void @llvm.experimental.noalias.scope.decl(metadata !287) @@ -8073,7 +8073,7 @@ _ZN6brotli3enc14block_splitter18RefineEntropyCodes17h9470e8526edcced8E.exit.i: ; call void @llvm.experimental.noalias.scope.decl(metadata !292) call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %120), !noalias !294 %262 = invoke { ptr, i64 } @"_ZN111_$LT$alloc_stdlib..std_alloc..StandardAlloc$u20$as$u20$alloc_no_stdlib..stack_allocator..Allocator$LT$T$GT$$GT$10alloc_cell17h6e520e4fe8e2b1fdE"(ptr noalias noundef nonnull align 1 %0, i64 noundef %.sroa.0.0.i122.i) - to label %.noexc115.i unwind label %.thread81.thread.thread837.i, !noalias !260 + to label %.noexc115.i unwind label %.thread81.thread.thread838.i, !noalias !260 .noexc115.i: ; preds = %261 %263 = extractvalue { ptr, i64 } %262, 0 @@ -9149,14 +9149,14 @@ _ZN6brotli3enc7cluster30BrotliHistogramBitCostDistance17h196f578f145a4e42E.exit2 %629 = icmp ult i32 %627, 64 br i1 %629, label %633, label %.invoke.i.i -.invoke.i.loopexit862.split.loop.exit1017.i: ; preds = %_ZN6brotli3enc9histogram14HistogramClear17h2524b7c22a637bd5E.exit293.i.i +.invoke.i.loopexit863.split.loop.exit1018.i: ; preds = %_ZN6brotli3enc9histogram14HistogramClear17h2524b7c22a637bd5E.exit293.i.i %umax.le.i = call i64 @llvm.umax.i64(i64 %272, i64 %.sroa.0136.1823.i.i) br label %.invoke.i.i -.invoke.i.i: ; preds = %716, %714, %706, %684, %.lr.ph.i111._crit_edge.i, %.lr.ph810.i.i, %659, %657, %652, %642, %.lr.ph817.i.i, %633, %625, %694, %.lr.ph.i, %.invoke.i.loopexit862.split.loop.exit1017.i - %630 = phi i64 [ %umax.le.i, %.invoke.i.loopexit862.split.loop.exit1017.i ], [ %.sroa.041.0808.i.i, %.lr.ph.i ], [ %.sroa.0103.4802.i480.i, %694 ], [ %628, %625 ], [ %634, %633 ], [ 64, %.lr.ph817.i.i ], [ %645, %642 ], [ %645, %652 ], [ %.sroa.034.1814.i.i, %657 ], [ %664, %659 ], [ %.sroa.041.0808.i.i, %.lr.ph810.i.i ], [ %.sroa.041.0808.i.i, %.lr.ph.i111._crit_edge.i ], [ %.sroa.041.0808.i.i, %684 ], [ %.sroa.0.0799.i.i, %706 ], [ %.sroa.0136.0798.i.i, %714 ], [ %712, %716 ] - %631 = phi i64 [ %272, %.invoke.i.loopexit862.split.loop.exit1017.i ], [ %.val324.i.i, %.lr.ph.i ], [ %136, %694 ], [ 64, %625 ], [ %264, %633 ], [ 64, %.lr.ph817.i.i ], [ %.val408.i.i, %642 ], [ 64, %652 ], [ %.val340.i.i, %657 ], [ 64, %659 ], [ %.val322.i.i, %684 ], [ %.val406.i.i, %.lr.ph.i111._crit_edge.i ], [ %.val330.i.i, %.lr.ph810.i.i ], [ %272, %706 ], [ %218, %714 ], [ %218, %716 ] - %632 = phi ptr [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.180, %.invoke.i.loopexit862.split.loop.exit1017.i ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.186, %.lr.ph.i ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.187, %694 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.169, %625 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.170, %633 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.171, %.lr.ph817.i.i ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.172, %642 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.175, %652 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.176, %657 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.178, %659 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.182, %684 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.181, %.lr.ph.i111._crit_edge.i ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.179, %.lr.ph810.i.i ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.188, %706 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.189, %714 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.190, %716 ] +.invoke.i.i: ; preds = %716, %714, %706, %684, %.lr.ph.i111._crit_edge.i, %.lr.ph810.i.i, %659, %657, %652, %642, %.lr.ph817.i.i, %633, %625, %694, %.lr.ph.i, %.invoke.i.loopexit863.split.loop.exit1018.i + %630 = phi i64 [ %umax.le.i, %.invoke.i.loopexit863.split.loop.exit1018.i ], [ %.sroa.041.0808.i.i, %.lr.ph.i ], [ %.sroa.0103.4802.i480.i, %694 ], [ %628, %625 ], [ %634, %633 ], [ 64, %.lr.ph817.i.i ], [ %645, %642 ], [ %645, %652 ], [ %.sroa.034.1814.i.i, %657 ], [ %664, %659 ], [ %.sroa.041.0808.i.i, %.lr.ph810.i.i ], [ %.sroa.041.0808.i.i, %.lr.ph.i111._crit_edge.i ], [ %.sroa.041.0808.i.i, %684 ], [ %.sroa.0.0799.i.i, %706 ], [ %.sroa.0136.0798.i.i, %714 ], [ %712, %716 ] + %631 = phi i64 [ %272, %.invoke.i.loopexit863.split.loop.exit1018.i ], [ %.val324.i.i, %.lr.ph.i ], [ %136, %694 ], [ 64, %625 ], [ %264, %633 ], [ 64, %.lr.ph817.i.i ], [ %.val408.i.i, %642 ], [ 64, %652 ], [ %.val340.i.i, %657 ], [ 64, %659 ], [ %.val322.i.i, %684 ], [ %.val406.i.i, %.lr.ph.i111._crit_edge.i ], [ %.val330.i.i, %.lr.ph810.i.i ], [ %272, %706 ], [ %218, %714 ], [ %218, %716 ] + %632 = phi ptr [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.180, %.invoke.i.loopexit863.split.loop.exit1018.i ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.186, %.lr.ph.i ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.187, %694 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.169, %625 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.170, %633 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.171, %.lr.ph817.i.i ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.172, %642 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.175, %652 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.176, %657 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.178, %659 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.182, %684 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.181, %.lr.ph.i111._crit_edge.i ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.179, %.lr.ph810.i.i ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.188, %706 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.189, %714 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.190, %716 ] invoke void @_ZN4core9panicking18panic_bounds_check17h2d3ab0b83311a572E(i64 noundef %630, i64 noundef %631, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %632) #18 to label %.cont.i.i unwind label %.thread446.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.i.i, !noalias !298 @@ -9278,7 +9278,7 @@ _ZN6brotli3enc9histogram14HistogramClear17h2524b7c22a637bd5E.exit293.i.i: ; pred store float 0x47EFFE0460000000, ptr %675, align 8, !alias.scope !374, !noalias !298 %676 = add nuw nsw i64 %.sroa.041.0808.i.i, %.sroa.0136.1823.i.i %677 = icmp ult i64 %676, %272 - br i1 %677, label %.lr.ph.preheader.i.i, label %.invoke.i.loopexit862.split.loop.exit1017.i + br i1 %677, label %.lr.ph.preheader.i.i, label %.invoke.i.loopexit863.split.loop.exit1018.i .lr.ph.preheader.i.i: ; preds = %_ZN6brotli3enc9histogram14HistogramClear17h2524b7c22a637bd5E.exit293.i.i %678 = getelementptr inbounds nuw i32, ptr %271, i64 %676 @@ -9467,7 +9467,7 @@ _ZN6brotli3enc9histogram14HistogramClear17h2524b7c22a637bd5E.exit293.i.i: ; pred .preheader329.i.i: ; preds = %.preheader329.i.i.preheader, %944 %.sroa.05.1368.i.i = phi i64 [ %946, %944 ], [ 0, %.preheader329.i.i.preheader ] %exitcond.not.i119.i = icmp eq i64 %.sroa.05.1368.i.i, %157 - br i1 %exitcond.not.i119.i, label %.invoke1030.i, label %932 + br i1 %exitcond.not.i119.i, label %.invoke1031.i, label %932 .loopexit327.i.i: ; preds = %928 %744 = icmp eq i64 %746, 0 @@ -9536,7 +9536,7 @@ _ZN6brotli3enc9histogram14HistogramClear17h2524b7c22a637bd5E.exit293.i.i: ; pred .lr.ph400.split.us.i.i: ; preds = %.lr.ph400.i.i %.not420.i.i = icmp eq i64 %218, 0 - br i1 %.not420.i.i, label %.invoke1030.i, label %763 + br i1 %.not420.i.i, label %.invoke1031.i, label %763 763: ; preds = %.lr.ph400.split.us.i.i %764 = load i8, ptr %135, align 1, !alias.scope !401, !noalias !404, !noundef !3 @@ -9577,24 +9577,24 @@ _ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit. %769 = getelementptr inbounds nuw i8, ptr %.sroa.0.0304399.i.i, i64 1 %770 = add nuw i64 %.sroa.7.0398.i.i, 1 %exitcond459.not.i.i = icmp eq i64 %.sroa.7.0398.i.i, %218 - br i1 %exitcond459.not.i.i, label %.invoke1030.i, label %797 + br i1 %exitcond459.not.i.i, label %.invoke1031.i, label %797 _ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit._crit_edge.i.i: ; preds = %_ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit.loopexit.i.i - br i1 %254, label %.lr.ph413.preheader.i.i, label %.invoke1030.i + br i1 %254, label %.lr.ph413.preheader.i.i, label %.invoke1031.i .lr.ph413.preheader.i.i: ; preds = %_ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit._crit_edge.i.i %771 = load i8, ptr %255, align 1, !alias.scope !395, !noalias !405, !noundef !3 %772 = mul i64 %735, %251 br label %.lr.ph413.i.i -.invoke1030.i: ; preds = %_ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit._crit_edge.i.i, %940, %.preheader329.i.i, %.lr.ph400.split.i.i, %789, %.lr.ph413.i.i, %.preheader.i123.i, %957, %952, %.noexc151.i, %.noexc144.i, %919, %918, %.lr.ph392.i.i, %.lr.ph397.i.i, %.lr.ph400.split.us.i.i +.invoke1031.i: ; preds = %_ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit._crit_edge.i.i, %940, %.preheader329.i.i, %.lr.ph400.split.i.i, %789, %.lr.ph413.i.i, %.preheader.i123.i, %957, %952, %.noexc151.i, %.noexc144.i, %919, %918, %.lr.ph392.i.i, %.lr.ph397.i.i, %.lr.ph400.split.us.i.i %773 = phi i64 [ 0, %.lr.ph400.split.us.i.i ], [ %831, %.lr.ph397.i.i ], [ %817, %.lr.ph392.i.i ], [ %926, %.noexc144.i ], [ %157, %919 ], [ %227, %918 ], [ %136, %957 ], [ %955, %952 ], [ %218, %.noexc151.i ], [ %218, %.preheader.i123.i ], [ %776, %789 ], [ %780, %.lr.ph413.i.i ], [ %218, %.lr.ph400.split.i.i ], [ %227, %940 ], [ %157, %.preheader329.i.i ], [ %251, %_ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit._crit_edge.i.i ] %774 = phi i64 [ 0, %.lr.ph400.split.us.i.i ], [ %241, %.lr.ph397.i.i ], [ %233, %.lr.ph392.i.i ], [ %227, %.noexc144.i ], [ %157, %919 ], [ %227, %918 ], [ %136, %957 ], [ %157, %952 ], [ %218, %.noexc151.i ], [ %218, %.preheader.i123.i ], [ %218, %789 ], [ %241, %.lr.ph413.i.i ], [ %218, %.lr.ph400.split.i.i ], [ %227, %940 ], [ %157, %.preheader329.i.i ], [ %218, %_ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit._crit_edge.i.i ] %775 = phi ptr [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.112, %.lr.ph400.split.us.i.i ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.217, %.lr.ph397.i.i ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.119, %.lr.ph392.i.i ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.131, %.noexc144.i ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.130, %919 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.129, %918 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.215, %957 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.214, %952 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.213, %.noexc151.i ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.135, %.preheader.i123.i ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.109, %789 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.108, %.lr.ph413.i.i ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.112, %.lr.ph400.split.i.i ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.134, %940 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.132, %.preheader329.i.i ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.107, %_ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit._crit_edge.i.i ] invoke void @_ZN4core9panicking18panic_bounds_check17h2d3ab0b83311a572E(i64 noundef %773, i64 noundef %774, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %775) #18 - to label %.cont1031.i unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.i, !noalias !260 + to label %.cont1032.i unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.i, !noalias !260 -.cont1031.i: ; preds = %.invoke1030.i +.cont1032.i: ; preds = %.invoke1031.i unreachable .lr.ph413.i.i: ; preds = %791, %.lr.ph413.preheader.i.i @@ -9608,7 +9608,7 @@ _ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit. %779 = zext nneg i8 %778 to i64 %780 = add i64 %777, %779 %781 = icmp ult i64 %780, %241 - br i1 %781, label %782, label %.invoke1030.i + br i1 %781, label %782, label %.invoke1031.i 782: ; preds = %.lr.ph413.i.i %783 = and i8 %.sroa.063.0409.i.i, 7 @@ -9621,7 +9621,7 @@ _ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit. 789: ; preds = %782 %790 = icmp ult i64 %776, %218 - br i1 %790, label %793, label %.invoke1030.i + br i1 %790, label %793, label %.invoke1031.i 791: ; preds = %793, %782 %.sroa.063.1.i.i = phi i8 [ %.sroa.063.0409.i.i, %782 ], [ %795, %793 ] @@ -9703,7 +9703,7 @@ _ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit. %.sroa.047.0387.i.i = phi i64 [ %893, %892 ], [ %754, %.lr.ph392.preheader.i.i ] %817 = lshr i64 %.sroa.047.0387.i.i, 3 %818 = icmp ult i64 %817, %233 - br i1 %818, label %884, label %.invoke1030.i + br i1 %818, label %884, label %.invoke1031.i ._crit_edge393.i.i: ; preds = %892, %814 %.sroa.056.1.lcssa.i.i = phi float [ %.sroa.056.0.lcssa.i.i, %814 ], [ %.sroa.056.2.i.i, %892 ] @@ -9765,7 +9765,7 @@ _ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit. %.sroa.0195.0395.i.i = phi ptr [ %865, %833 ], [ %232, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h45c1c281e37cc192E.exit.i.i" ] %831 = add nuw i64 %.sroa.7197.0396.i.i, %799 %832 = icmp ult i64 %831, %241 - br i1 %832, label %833, label %.invoke1030.i + br i1 %832, label %833, label %.invoke1031.i 833: ; preds = %.lr.ph397.i.i %.sroa.6222.0..sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %.sroa.0195.0395.i.i, i64 4 @@ -9930,13 +9930,13 @@ _ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit. 918: ; preds = %928, %.split.i120.i %.sroa.024.0369.i.i = phi i64 [ 0, %.split.i120.i ], [ %931, %928 ] %exitcond453.not.i.i = icmp eq i64 %.sroa.024.0369.i.i, %227 - br i1 %exitcond453.not.i.i, label %.invoke1030.i, label %919 + br i1 %exitcond453.not.i.i, label %.invoke1031.i, label %919 919: ; preds = %918 %920 = getelementptr inbounds nuw float, ptr %226, i64 %.sroa.024.0369.i.i %921 = load float, ptr %920, align 4, !alias.scope !389, !noalias !397, !noundef !3 %exitcond454.not.i.i = icmp eq i64 %.sroa.024.0369.i.i, %157 - br i1 %exitcond454.not.i.i, label %.invoke1030.i, label %922 + br i1 %exitcond454.not.i.i, label %.invoke1031.i, label %922 922: ; preds = %919 %gep.i.i = getelementptr { [256 x i32], i64, float, [1 x i32] }, ptr %invariant.gep.i.i, i64 %.sroa.024.0369.i.i @@ -9948,7 +9948,7 @@ _ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit. .noexc144.i: ; preds = %922 %926 = add nuw i64 %.sroa.024.0369.i.i, %747 %927 = icmp ult i64 %926, %227 - br i1 %927, label %928, label %.invoke1030.i + br i1 %927, label %928, label %.invoke1031.i 928: ; preds = %.noexc144.i %929 = getelementptr inbounds nuw float, ptr %226, i64 %926 @@ -9973,7 +9973,7 @@ _ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit. 940: ; preds = %941, %937 %.sroa.04.0.i.i = phi float [ %943, %941 ], [ %939, %937 ] %exitcond451.not.i.i = icmp eq i64 %.sroa.05.1368.i.i, %227 - br i1 %exitcond451.not.i.i, label %.invoke1030.i, label %944 + br i1 %exitcond451.not.i.i, label %.invoke1031.i, label %944 941: ; preds = %932 %942 = getelementptr inbounds nuw float, ptr @_ZN6brotli3enc4util10kLog2Table17hd3967b7c903f064fE, i64 %935 @@ -9990,7 +9990,7 @@ _ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit. .preheader.i123.i: ; preds = %733, %947 %.sroa.05.0415.i.i = phi i64 [ %949, %947 ], [ 0, %733 ] %exitcond460.not.i.i = icmp eq i64 %.sroa.05.0415.i.i, %218 - br i1 %exitcond460.not.i.i, label %.invoke1030.i, label %947 + br i1 %exitcond460.not.i.i, label %.invoke1031.i, label %947 947: ; preds = %.preheader.i123.i %948 = getelementptr inbounds nuw i8, ptr %217, i64 %.sroa.05.0415.i.i @@ -10013,18 +10013,18 @@ _ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit. .noexc151.i: ; preds = %951, %.noexc154.i %.sroa.0.015.i.i = phi i64 [ %963, %.noexc154.i ], [ 0, %951 ] %exitcond.not.i150.i = icmp eq i64 %.sroa.0.015.i.i, %218 - br i1 %exitcond.not.i150.i, label %.invoke1030.i, label %952 + br i1 %exitcond.not.i150.i, label %.invoke1031.i, label %952 952: ; preds = %.noexc151.i %953 = getelementptr inbounds nuw i8, ptr %217, i64 %.sroa.0.015.i.i %954 = load i8, ptr %953, align 1, !alias.scope !426, !noalias !428, !noundef !3 %955 = zext i8 %954 to i64 %956 = icmp ugt i64 %157, %955 - br i1 %956, label %957, label %.invoke1030.i + br i1 %956, label %957, label %.invoke1031.i 957: ; preds = %952 %exitcond21.not.i.i = icmp eq i64 %.sroa.0.015.i.i, %136 - br i1 %exitcond21.not.i.i, label %.invoke1030.i, label %958 + br i1 %exitcond21.not.i.i, label %.invoke1031.i, label %958 958: ; preds = %957 %959 = getelementptr inbounds nuw { [256 x i32], i64, float, [1 x i32] }, ptr %156, i64 %955 @@ -10041,7 +10041,7 @@ _ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit. _ZN6brotli3enc14block_splitter20BuildBlockHistograms17h8eb2c873dc460cb9E.exit.i: ; preds = %.noexc154.i %964 = add nuw nsw i64 %.sroa.018.0477.i, 1 - %exitcond.not.i = icmp eq i64 %964, %..i + %exitcond.not.i = icmp eq i64 %.830.i, %.sroa.018.0477.i br i1 %exitcond.not.i, label %256, label %731 .loopexit.i: ; preds = %922 @@ -10064,10 +10064,10 @@ _ZN6brotli3enc14block_splitter20BuildBlockHistograms17h8eb2c873dc460cb9E.exit.i: cleanup br label %.loopexit.split-lp.i -.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.i: ; preds = %.invoke1030.i, %.split406.us.i.invoke.i, %.invoke.i, %258, %257, %256 - %.sroa.024.3.ph.ph.ph.ph.ph.i = phi i1 [ false, %256 ], [ false, %257 ], [ false, %258 ], [ true, %.invoke.i ], [ true, %.split406.us.i.invoke.i ], [ true, %.invoke1030.i ] - %.sroa.023.2.ph.ph.ph.ph.ph.i = phi i1 [ true, %256 ], [ false, %257 ], [ false, %258 ], [ true, %.invoke.i ], [ true, %.split406.us.i.invoke.i ], [ true, %.invoke1030.i ] - %.sroa.022.1.ph.ph.ph.ph.ph.i = phi i1 [ true, %256 ], [ true, %257 ], [ false, %258 ], [ true, %.invoke.i ], [ true, %.split406.us.i.invoke.i ], [ true, %.invoke1030.i ] +.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.i: ; preds = %.invoke1031.i, %.split406.us.i.invoke.i, %.invoke.i, %258, %257, %256 + %.sroa.024.3.ph.ph.ph.ph.ph.i = phi i1 [ false, %256 ], [ false, %257 ], [ false, %258 ], [ true, %.invoke.i ], [ true, %.split406.us.i.invoke.i ], [ true, %.invoke1031.i ] + %.sroa.023.2.ph.ph.ph.ph.ph.i = phi i1 [ true, %256 ], [ false, %257 ], [ false, %258 ], [ true, %.invoke.i ], [ true, %.split406.us.i.invoke.i ], [ true, %.invoke1031.i ] + %.sroa.022.1.ph.ph.ph.ph.ph.i = phi i1 [ true, %256 ], [ true, %257 ], [ false, %258 ], [ true, %.invoke.i ], [ true, %.split406.us.i.invoke.i ], [ true, %.invoke1031.i ] %lpad.loopexit.split-lp129.i = landingpad { ptr, i32 } cleanup br label %.loopexit.split-lp.i @@ -10104,9 +10104,9 @@ _ZN6brotli3enc14block_splitter20BuildBlockHistograms17h8eb2c873dc460cb9E.exit.i: invoke void @"_ZN4core3ptr65drop_in_place$LT$alloc_stdlib..heap_alloc..WrapBox$LT$f32$GT$$GT$17hf3151b38ab82c61dE"(ptr noalias noundef nonnull align 8 dereferenceable(16) %125) #20 to label %.thread81.thread.thread.i unwind label %965, !noalias !260 -.thread81.thread.thread.i: ; preds = %969, %727, %267, %.thread81.i, %.thread4.i, %.thread81.thread.thread837.i - %.sroa.026.19.i = phi i1 [ true, %.thread4.i ], [ false, %267 ], [ false, %727 ], [ %.sroa.026.5.ph.ph.i, %.thread81.thread.thread837.i ], [ true, %969 ], [ true, %.thread81.i ] - %.pn.pn.pn.pn8.i = phi { ptr, i32 } [ %224, %.thread4.i ], [ %.pn263.pn.pn.pn.pn.pn.i.i, %267 ], [ %.pn263.pn.pn.pn.pn.pn.pn430.i.i, %727 ], [ %lpad.thr_comm.i, %.thread81.thread.thread837.i ], [ %.pn.pn.pn15.i, %969 ], [ %.pn.pn.pn.i, %.thread81.i ] +.thread81.thread.thread.i: ; preds = %969, %727, %267, %.thread81.i, %.thread4.i, %.thread81.thread.thread838.i + %.sroa.026.19.i = phi i1 [ true, %.thread4.i ], [ false, %267 ], [ false, %727 ], [ %.sroa.026.5.ph.ph.i, %.thread81.thread.thread838.i ], [ true, %969 ], [ true, %.thread81.i ] + %.pn.pn.pn.pn8.i = phi { ptr, i32 } [ %224, %.thread4.i ], [ %.pn263.pn.pn.pn.pn.pn.i.i, %267 ], [ %.pn263.pn.pn.pn.pn.pn.pn430.i.i, %727 ], [ %lpad.thr_comm.i, %.thread81.thread.thread838.i ], [ %.pn.pn.pn15.i, %969 ], [ %.pn.pn.pn.i, %.thread81.i ] invoke void @"_ZN4core3ptr64drop_in_place$LT$alloc_stdlib..heap_alloc..WrapBox$LT$u8$GT$$GT$17hb6c382cbc1d625feE"(ptr noalias noundef nonnull align 8 dereferenceable(16) %126) #20 to label %153 unwind label %965, !noalias !260 @@ -10483,7 +10483,7 @@ _ZN6brotli3enc14block_splitter18RefineEntropyCodes17h8c3c9009db553577E.exit.i: ; %1103 = invoke { ptr, i64 } @"_ZN111_$LT$alloc_stdlib..std_alloc..StandardAlloc$u20$as$u20$alloc_no_stdlib..stack_allocator..Allocator$LT$T$GT$$GT$10alloc_cell17h496b870d59415105E"(ptr noalias noundef nonnull align 1 %0, i64 noundef %1102) to label %1105 unwind label %.thread4.i75, !noalias !449 -.thread81.thread.thread837.i270: ; preds = %1141, %1140, %1139 +.thread81.thread.thread838.i270: ; preds = %1141, %1140, %1139 %.sroa.026.5.ph.ph.i271 = phi i1 [ false, %1140 ], [ true, %1139 ], [ false, %1141 ] %lpad.thr_comm.i272 = landingpad { ptr, i32 } cleanup @@ -10561,29 +10561,29 @@ _ZN6brotli3enc14block_splitter18RefineEntropyCodes17h8c3c9009db553577E.exit.i: ; %1127 = getelementptr inbounds nuw i8, ptr %84, i64 8 store i64 %1126, ptr %1127, align 8, !noalias !454 %1128 = icmp slt i32 %.val29, 12 - %..i95 = select i1 %1128, i64 3, i64 10 %1129 = icmp ugt i64 %3, %1018 %1130 = getelementptr inbounds nuw i8, ptr %1017, i64 %1063 - %.sroa.4250.0..sroa_idx.i.i96 = getelementptr inbounds nuw i8, ptr %55, i64 4 - %.sroa.5251.0..sroa_idx.i.i97 = getelementptr inbounds nuw i8, ptr %55, i64 8 - %.sroa.6252.0..sroa_idx.i.i98 = getelementptr inbounds nuw i8, ptr %55, i64 12 - %.sroa.7253.0..sroa_idx.i.i99 = getelementptr inbounds nuw i8, ptr %55, i64 16 - %.sroa.8254.0..sroa_idx.i.i100 = getelementptr inbounds nuw i8, ptr %55, i64 20 - %.sroa.9255.0..sroa_idx.i.i101 = getelementptr inbounds nuw i8, ptr %55, i64 24 - %.sroa.10256.0..sroa_idx.i.i102 = getelementptr inbounds nuw i8, ptr %55, i64 28 - %.sroa.5267.0..sroa_idx.i.i103 = getelementptr inbounds nuw i8, ptr %54, i64 4 - %.sroa.6270.0..sroa_idx.i.i104 = getelementptr inbounds nuw i8, ptr %54, i64 8 - %.sroa.7273.0..sroa_idx.i.i105 = getelementptr inbounds nuw i8, ptr %54, i64 12 - %.sroa.8276.0..sroa_idx.i.i106 = getelementptr inbounds nuw i8, ptr %54, i64 16 - %.sroa.9279.0..sroa_idx.i.i107 = getelementptr inbounds nuw i8, ptr %54, i64 20 - %.sroa.10282.0..sroa_idx.i.i108 = getelementptr inbounds nuw i8, ptr %54, i64 24 - %.sroa.11285.0..sroa_idx.i.i109 = getelementptr inbounds nuw i8, ptr %54, i64 28 + %.sroa.4250.0..sroa_idx.i.i95 = getelementptr inbounds nuw i8, ptr %55, i64 4 + %.sroa.5251.0..sroa_idx.i.i96 = getelementptr inbounds nuw i8, ptr %55, i64 8 + %.sroa.6252.0..sroa_idx.i.i97 = getelementptr inbounds nuw i8, ptr %55, i64 12 + %.sroa.7253.0..sroa_idx.i.i98 = getelementptr inbounds nuw i8, ptr %55, i64 16 + %.sroa.8254.0..sroa_idx.i.i99 = getelementptr inbounds nuw i8, ptr %55, i64 20 + %.sroa.9255.0..sroa_idx.i.i100 = getelementptr inbounds nuw i8, ptr %55, i64 24 + %.sroa.10256.0..sroa_idx.i.i101 = getelementptr inbounds nuw i8, ptr %55, i64 28 + %.sroa.5267.0..sroa_idx.i.i102 = getelementptr inbounds nuw i8, ptr %54, i64 4 + %.sroa.6270.0..sroa_idx.i.i103 = getelementptr inbounds nuw i8, ptr %54, i64 8 + %.sroa.7273.0..sroa_idx.i.i104 = getelementptr inbounds nuw i8, ptr %54, i64 12 + %.sroa.8276.0..sroa_idx.i.i105 = getelementptr inbounds nuw i8, ptr %54, i64 16 + %.sroa.9279.0..sroa_idx.i.i106 = getelementptr inbounds nuw i8, ptr %54, i64 20 + %.sroa.10282.0..sroa_idx.i.i107 = getelementptr inbounds nuw i8, ptr %54, i64 24 + %.sroa.11285.0..sroa_idx.i.i108 = getelementptr inbounds nuw i8, ptr %54, i64 28 %1131 = add i64 %3, -1 - %.idx416.i.i110 = shl nuw nsw i64 %1113, 5 - %1132 = getelementptr inbounds nuw i8, ptr %1112, i64 %.idx416.i.i110 + %.idx416.i.i109 = shl nuw nsw i64 %1113, 5 + %1132 = getelementptr inbounds nuw i8, ptr %1112, i64 %.idx416.i.i109 %1133 = icmp eq i64 %1113, 0 %1134 = icmp ult i64 %1131, %1098 %1135 = getelementptr inbounds nuw i8, ptr %1097, i64 %1131 + %.830.i110 = select i1 %1128, i64 2, i64 9 br label %1611 1136: ; preds = %_ZN6brotli3enc14block_splitter20BuildBlockHistograms17h76a0009526212306E.exit.i @@ -10600,11 +10600,11 @@ _ZN6brotli3enc14block_splitter18RefineEntropyCodes17h8c3c9009db553577E.exit.i: ; 1139: ; preds = %1138 invoke void @"_ZN111_$LT$alloc_stdlib..std_alloc..StandardAlloc$u20$as$u20$alloc_no_stdlib..stack_allocator..Allocator$LT$T$GT$$GT$9free_cell17h49a5bd31abbbe38fE"(ptr noalias noundef nonnull align 1 %0, ptr noalias noundef nonnull align 2 %1125, i64 noundef %1126) - to label %1140 unwind label %.thread81.thread.thread837.i270, !noalias !449 + to label %1140 unwind label %.thread81.thread.thread838.i270, !noalias !449 1140: ; preds = %1139 invoke void @"_ZN111_$LT$alloc_stdlib..std_alloc..StandardAlloc$u20$as$u20$alloc_no_stdlib..stack_allocator..Allocator$LT$T$GT$$GT$9free_cell17h0cb760615d6e2bf9E"(ptr noalias noundef nonnull align 1 %0, ptr noalias noundef nonnull align 8 %1036, i64 noundef %1037) - to label %1141 unwind label %.thread81.thread.thread837.i270, !noalias !449 + to label %1141 unwind label %.thread81.thread.thread838.i270, !noalias !449 1141: ; preds = %1140 call void @llvm.experimental.noalias.scope.decl(metadata !476) @@ -10612,7 +10612,7 @@ _ZN6brotli3enc14block_splitter18RefineEntropyCodes17h8c3c9009db553577E.exit.i: ; call void @llvm.experimental.noalias.scope.decl(metadata !481) call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %82), !noalias !483 %1142 = invoke { ptr, i64 } @"_ZN111_$LT$alloc_stdlib..std_alloc..StandardAlloc$u20$as$u20$alloc_no_stdlib..stack_allocator..Allocator$LT$T$GT$$GT$10alloc_cell17h6e520e4fe8e2b1fdE"(ptr noalias noundef nonnull align 1 %0, i64 noundef %.sroa.0.0.i122.i258) - to label %.noexc115.i273 unwind label %.thread81.thread.thread837.i270, !noalias !449 + to label %.noexc115.i273 unwind label %.thread81.thread.thread838.i270, !noalias !449 .noexc115.i273: ; preds = %1141 %1143 = extractvalue { ptr, i64 } %1142, 0 @@ -11688,14 +11688,14 @@ _ZN6brotli3enc7cluster30BrotliHistogramBitCostDistance17h8e6f50bb6efdc9deE.exit2 %1509 = icmp ult i32 %1507, 64 br i1 %1509, label %1513, label %.invoke.i.i295 -.invoke.i.loopexit862.split.loop.exit1017.i322: ; preds = %_ZN6brotli3enc9histogram14HistogramClear17h281a935aa60f7ab2E.exit293.i.i +.invoke.i.loopexit863.split.loop.exit1018.i322: ; preds = %_ZN6brotli3enc9histogram14HistogramClear17h281a935aa60f7ab2E.exit293.i.i %umax.le.i323 = call i64 @llvm.umax.i64(i64 %1152, i64 %.sroa.0136.1823.i.i316) br label %.invoke.i.i295 -.invoke.i.i295: ; preds = %1596, %1594, %1586, %1564, %.lr.ph.i111._crit_edge.i332, %.lr.ph810.i.i319, %1539, %1537, %1532, %1522, %.lr.ph817.i.i345, %1513, %1505, %1574, %.lr.ph.i326, %.invoke.i.loopexit862.split.loop.exit1017.i322 - %1510 = phi i64 [ %umax.le.i323, %.invoke.i.loopexit862.split.loop.exit1017.i322 ], [ %.sroa.041.0808.i.i320, %.lr.ph.i326 ], [ %.sroa.0103.4802.i480.i327, %1574 ], [ %1508, %1505 ], [ %1514, %1513 ], [ 64, %.lr.ph817.i.i345 ], [ %1525, %1522 ], [ %1525, %1532 ], [ %.sroa.034.1814.i.i347, %1537 ], [ %1544, %1539 ], [ %.sroa.041.0808.i.i320, %.lr.ph810.i.i319 ], [ %.sroa.041.0808.i.i320, %.lr.ph.i111._crit_edge.i332 ], [ %.sroa.041.0808.i.i320, %1564 ], [ %.sroa.0.0799.i.i293, %1586 ], [ %.sroa.0136.0798.i.i294, %1594 ], [ %1592, %1596 ] - %1511 = phi i64 [ %1152, %.invoke.i.loopexit862.split.loop.exit1017.i322 ], [ %.val390.i.i, %.lr.ph.i326 ], [ %1018, %1574 ], [ 64, %1505 ], [ %1144, %1513 ], [ 64, %.lr.ph817.i.i345 ], [ %.val408.i.i351, %1522 ], [ 64, %1532 ], [ %.val322.i.i352, %1537 ], [ 64, %1539 ], [ %.val388.i.i, %1564 ], [ %.val406.i.i334, %.lr.ph.i111._crit_edge.i332 ], [ %.val396.i.i, %.lr.ph810.i.i319 ], [ %1152, %1586 ], [ %1098, %1594 ], [ %1098, %1596 ] - %1512 = phi ptr [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.180, %.invoke.i.loopexit862.split.loop.exit1017.i322 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.186, %.lr.ph.i326 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.187, %1574 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.169, %1505 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.170, %1513 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.171, %.lr.ph817.i.i345 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.172, %1522 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.175, %1532 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.176, %1537 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.178, %1539 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.182, %1564 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.181, %.lr.ph.i111._crit_edge.i332 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.179, %.lr.ph810.i.i319 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.188, %1586 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.189, %1594 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.190, %1596 ] +.invoke.i.i295: ; preds = %1596, %1594, %1586, %1564, %.lr.ph.i111._crit_edge.i332, %.lr.ph810.i.i319, %1539, %1537, %1532, %1522, %.lr.ph817.i.i345, %1513, %1505, %1574, %.lr.ph.i326, %.invoke.i.loopexit863.split.loop.exit1018.i322 + %1510 = phi i64 [ %umax.le.i323, %.invoke.i.loopexit863.split.loop.exit1018.i322 ], [ %.sroa.041.0808.i.i320, %.lr.ph.i326 ], [ %.sroa.0103.4802.i480.i327, %1574 ], [ %1508, %1505 ], [ %1514, %1513 ], [ 64, %.lr.ph817.i.i345 ], [ %1525, %1522 ], [ %1525, %1532 ], [ %.sroa.034.1814.i.i347, %1537 ], [ %1544, %1539 ], [ %.sroa.041.0808.i.i320, %.lr.ph810.i.i319 ], [ %.sroa.041.0808.i.i320, %.lr.ph.i111._crit_edge.i332 ], [ %.sroa.041.0808.i.i320, %1564 ], [ %.sroa.0.0799.i.i293, %1586 ], [ %.sroa.0136.0798.i.i294, %1594 ], [ %1592, %1596 ] + %1511 = phi i64 [ %1152, %.invoke.i.loopexit863.split.loop.exit1018.i322 ], [ %.val390.i.i, %.lr.ph.i326 ], [ %1018, %1574 ], [ 64, %1505 ], [ %1144, %1513 ], [ 64, %.lr.ph817.i.i345 ], [ %.val408.i.i351, %1522 ], [ 64, %1532 ], [ %.val322.i.i352, %1537 ], [ 64, %1539 ], [ %.val388.i.i, %1564 ], [ %.val406.i.i334, %.lr.ph.i111._crit_edge.i332 ], [ %.val396.i.i, %.lr.ph810.i.i319 ], [ %1152, %1586 ], [ %1098, %1594 ], [ %1098, %1596 ] + %1512 = phi ptr [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.180, %.invoke.i.loopexit863.split.loop.exit1018.i322 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.186, %.lr.ph.i326 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.187, %1574 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.169, %1505 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.170, %1513 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.171, %.lr.ph817.i.i345 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.172, %1522 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.175, %1532 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.176, %1537 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.178, %1539 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.182, %1564 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.181, %.lr.ph.i111._crit_edge.i332 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.179, %.lr.ph810.i.i319 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.188, %1586 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.189, %1594 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.190, %1596 ] invoke void @_ZN4core9panicking18panic_bounds_check17h2d3ab0b83311a572E(i64 noundef %1510, i64 noundef %1511, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %1512) #18 to label %.cont.i.i302 unwind label %.thread446.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.i.i296, !noalias !487 @@ -11817,7 +11817,7 @@ _ZN6brotli3enc9histogram14HistogramClear17h281a935aa60f7ab2E.exit293.i.i: ; pred store float 0x47EFFE0460000000, ptr %1555, align 8, !alias.scope !563, !noalias !487 %1556 = add nuw nsw i64 %.sroa.041.0808.i.i320, %.sroa.0136.1823.i.i316 %1557 = icmp ult i64 %1556, %1152 - br i1 %1557, label %.lr.ph.preheader.i.i324, label %.invoke.i.loopexit862.split.loop.exit1017.i322 + br i1 %1557, label %.lr.ph.preheader.i.i324, label %.invoke.i.loopexit863.split.loop.exit1018.i322 .lr.ph.preheader.i.i324: ; preds = %_ZN6brotli3enc9histogram14HistogramClear17h281a935aa60f7ab2E.exit293.i.i %1558 = getelementptr inbounds nuw i32, ptr %1151, i64 %1556 @@ -12006,7 +12006,7 @@ _ZN6brotli3enc9histogram14HistogramClear17h281a935aa60f7ab2E.exit293.i.i: ; pred .preheader329.i.i116: ; preds = %.preheader329.i.i116.preheader, %1824 %.sroa.05.1368.i.i117 = phi i64 [ %1826, %1824 ], [ 0, %.preheader329.i.i116.preheader ] %exitcond.not.i119.i118 = icmp eq i64 %.sroa.05.1368.i.i117, %1037 - br i1 %exitcond.not.i119.i118, label %.invoke1030.i138, label %1812 + br i1 %exitcond.not.i119.i118, label %.invoke1031.i138, label %1812 .loopexit327.i.i146: ; preds = %1808 %1624 = icmp eq i64 %1626, 0 @@ -12075,7 +12075,7 @@ _ZN6brotli3enc9histogram14HistogramClear17h281a935aa60f7ab2E.exit293.i.i: ; pred .lr.ph400.split.us.i.i502: ; preds = %.lr.ph400.i.i158 %.not421.i.i = icmp eq i64 %1098, 0 - br i1 %.not421.i.i, label %.invoke1030.i138, label %1643 + br i1 %.not421.i.i, label %.invoke1031.i138, label %1643 1643: ; preds = %.lr.ph400.split.us.i.i502 %1644 = load i16, ptr %1017, align 2, !alias.scope !590, !noalias !593, !noundef !3 @@ -12116,24 +12116,24 @@ _ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit. %1649 = getelementptr inbounds nuw i8, ptr %.sroa.0.0304399.i.i164, i64 2 %1650 = add nuw i64 %.sroa.7.0398.i.i165, 1 %exitcond460.not.i.i166 = icmp eq i64 %.sroa.7.0398.i.i165, %1098 - br i1 %exitcond460.not.i.i166, label %.invoke1030.i138, label %1677 + br i1 %exitcond460.not.i.i166, label %.invoke1031.i138, label %1677 _ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit._crit_edge.i.i245: ; preds = %_ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit.loopexit.i.i244 - br i1 %1134, label %.lr.ph413.preheader.i.i246, label %.invoke1030.i138 + br i1 %1134, label %.lr.ph413.preheader.i.i246, label %.invoke1031.i138 .lr.ph413.preheader.i.i246: ; preds = %_ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit._crit_edge.i.i245 %1651 = load i8, ptr %1135, align 1, !alias.scope !584, !noalias !594, !noundef !3 %1652 = mul i64 %1615, %1131 br label %.lr.ph413.i.i247 -.invoke1030.i138: ; preds = %_ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit._crit_edge.i.i245, %1820, %.preheader329.i.i116, %.lr.ph400.split.i.i163, %1669, %.lr.ph413.i.i247, %.preheader.i123.i505, %1837, %1832, %.noexc151.i261, %.noexc144.i137, %1799, %1798, %.lr.ph392.i.i187, %.lr.ph397.i.i217, %.lr.ph400.split.us.i.i502 +.invoke1031.i138: ; preds = %_ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit._crit_edge.i.i245, %1820, %.preheader329.i.i116, %.lr.ph400.split.i.i163, %1669, %.lr.ph413.i.i247, %.preheader.i123.i505, %1837, %1832, %.noexc151.i261, %.noexc144.i137, %1799, %1798, %.lr.ph392.i.i187, %.lr.ph397.i.i217, %.lr.ph400.split.us.i.i502 %1653 = phi i64 [ 0, %.lr.ph400.split.us.i.i502 ], [ %1711, %.lr.ph397.i.i217 ], [ %1697, %.lr.ph392.i.i187 ], [ %1806, %.noexc144.i137 ], [ %1037, %1799 ], [ %1107, %1798 ], [ %1018, %1837 ], [ %1835, %1832 ], [ %1098, %.noexc151.i261 ], [ %1098, %.preheader.i123.i505 ], [ %1656, %1669 ], [ %1660, %.lr.ph413.i.i247 ], [ %1098, %.lr.ph400.split.i.i163 ], [ %1107, %1820 ], [ %1037, %.preheader329.i.i116 ], [ %1131, %_ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit._crit_edge.i.i245 ] %1654 = phi i64 [ 0, %.lr.ph400.split.us.i.i502 ], [ %1121, %.lr.ph397.i.i217 ], [ %1113, %.lr.ph392.i.i187 ], [ %1107, %.noexc144.i137 ], [ %1037, %1799 ], [ %1107, %1798 ], [ %1018, %1837 ], [ %1037, %1832 ], [ %1098, %.noexc151.i261 ], [ %1098, %.preheader.i123.i505 ], [ %1098, %1669 ], [ %1121, %.lr.ph413.i.i247 ], [ %1098, %.lr.ph400.split.i.i163 ], [ %1107, %1820 ], [ %1037, %.preheader329.i.i116 ], [ %1098, %_ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit._crit_edge.i.i245 ] %1655 = phi ptr [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.112, %.lr.ph400.split.us.i.i502 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.217, %.lr.ph397.i.i217 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.119, %.lr.ph392.i.i187 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.131, %.noexc144.i137 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.130, %1799 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.129, %1798 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.215, %1837 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.214, %1832 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.213, %.noexc151.i261 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.135, %.preheader.i123.i505 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.109, %1669 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.108, %.lr.ph413.i.i247 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.112, %.lr.ph400.split.i.i163 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.134, %1820 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.132, %.preheader329.i.i116 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.107, %_ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit._crit_edge.i.i245 ] invoke void @_ZN4core9panicking18panic_bounds_check17h2d3ab0b83311a572E(i64 noundef %1653, i64 noundef %1654, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %1655) #18 - to label %.cont1031.i144 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.i139, !noalias !449 + to label %.cont1032.i144 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.i139, !noalias !449 -.cont1031.i144: ; preds = %.invoke1030.i138 +.cont1032.i144: ; preds = %.invoke1031.i138 unreachable .lr.ph413.i.i247: ; preds = %1671, %.lr.ph413.preheader.i.i246 @@ -12147,7 +12147,7 @@ _ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit. %1659 = zext nneg i8 %1658 to i64 %1660 = add i64 %1657, %1659 %1661 = icmp ult i64 %1660, %1121 - br i1 %1661, label %1662, label %.invoke1030.i138 + br i1 %1661, label %1662, label %.invoke1031.i138 1662: ; preds = %.lr.ph413.i.i247 %1663 = and i8 %.sroa.063.0409.i.i250, 7 @@ -12160,7 +12160,7 @@ _ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit. 1669: ; preds = %1662 %1670 = icmp ult i64 %1656, %1098 - br i1 %1670, label %1673, label %.invoke1030.i138 + br i1 %1670, label %1673, label %.invoke1031.i138 1671: ; preds = %1673, %1662 %.sroa.063.1.i.i254 = phi i8 [ %.sroa.063.0409.i.i250, %1662 ], [ %1675, %1673 ] @@ -12242,7 +12242,7 @@ _ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit. %.sroa.047.0387.i.i191 = phi i64 [ %1773, %1772 ], [ %1634, %.lr.ph392.preheader.i.i185 ] %1697 = lshr i64 %.sroa.047.0387.i.i191, 3 %1698 = icmp ult i64 %1697, %1113 - br i1 %1698, label %1764, label %.invoke1030.i138 + br i1 %1698, label %1764, label %.invoke1031.i138 ._crit_edge393.i.i195: ; preds = %1772, %1694 %.sroa.056.1.lcssa.i.i196 = phi float [ %.sroa.056.0.lcssa.i.i182, %1694 ], [ %.sroa.056.2.i.i192, %1772 ] @@ -12265,13 +12265,13 @@ _ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit. 1705: ; preds = %1701 %.sroa.0249.0.copyload.i.i199 = load float, ptr %55, align 4, !noalias !598 - %.sroa.4250.0.copyload.i.i200 = load float, ptr %.sroa.4250.0..sroa_idx.i.i96, align 4, !noalias !598 - %.sroa.5251.0.copyload.i.i201 = load float, ptr %.sroa.5251.0..sroa_idx.i.i97, align 4, !noalias !598 - %.sroa.6252.0.copyload.i.i202 = load float, ptr %.sroa.6252.0..sroa_idx.i.i98, align 4, !noalias !598 - %.sroa.7253.0.copyload.i.i203 = load float, ptr %.sroa.7253.0..sroa_idx.i.i99, align 4, !noalias !598 - %.sroa.8254.0.copyload.i.i204 = load float, ptr %.sroa.8254.0..sroa_idx.i.i100, align 4, !noalias !598 - %.sroa.9255.0.copyload.i.i205 = load float, ptr %.sroa.9255.0..sroa_idx.i.i101, align 4, !noalias !598 - %.sroa.10256.0.copyload.i.i206 = load float, ptr %.sroa.10256.0..sroa_idx.i.i102, align 4, !noalias !598 + %.sroa.4250.0.copyload.i.i200 = load float, ptr %.sroa.4250.0..sroa_idx.i.i95, align 4, !noalias !598 + %.sroa.5251.0.copyload.i.i201 = load float, ptr %.sroa.5251.0..sroa_idx.i.i96, align 4, !noalias !598 + %.sroa.6252.0.copyload.i.i202 = load float, ptr %.sroa.6252.0..sroa_idx.i.i97, align 4, !noalias !598 + %.sroa.7253.0.copyload.i.i203 = load float, ptr %.sroa.7253.0..sroa_idx.i.i98, align 4, !noalias !598 + %.sroa.8254.0.copyload.i.i204 = load float, ptr %.sroa.8254.0..sroa_idx.i.i99, align 4, !noalias !598 + %.sroa.9255.0.copyload.i.i205 = load float, ptr %.sroa.9255.0..sroa_idx.i.i100, align 4, !noalias !598 + %.sroa.10256.0.copyload.i.i206 = load float, ptr %.sroa.10256.0..sroa_idx.i.i101, align 4, !noalias !598 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %55), !noalias !598 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %54), !noalias !598 br label %1706 @@ -12286,13 +12286,13 @@ _ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit. 1710: ; preds = %1706 %.sroa.0265.0.copyload.i.i208 = load float, ptr %54, align 4, !noalias !598 - %.sroa.5267.0.copyload.i.i209 = load float, ptr %.sroa.5267.0..sroa_idx.i.i103, align 4, !noalias !598 - %.sroa.6270.0.copyload.i.i210 = load float, ptr %.sroa.6270.0..sroa_idx.i.i104, align 4, !noalias !598 - %.sroa.7273.0.copyload.i.i211 = load float, ptr %.sroa.7273.0..sroa_idx.i.i105, align 4, !noalias !598 - %.sroa.8276.0.copyload.i.i212 = load float, ptr %.sroa.8276.0..sroa_idx.i.i106, align 4, !noalias !598 - %.sroa.9279.0.copyload.i.i213 = load float, ptr %.sroa.9279.0..sroa_idx.i.i107, align 4, !noalias !598 - %.sroa.10282.0.copyload.i.i214 = load float, ptr %.sroa.10282.0..sroa_idx.i.i108, align 4, !noalias !598 - %.sroa.11285.0.copyload.i.i215 = load float, ptr %.sroa.11285.0..sroa_idx.i.i109, align 4, !noalias !598 + %.sroa.5267.0.copyload.i.i209 = load float, ptr %.sroa.5267.0..sroa_idx.i.i102, align 4, !noalias !598 + %.sroa.6270.0.copyload.i.i210 = load float, ptr %.sroa.6270.0..sroa_idx.i.i103, align 4, !noalias !598 + %.sroa.7273.0.copyload.i.i211 = load float, ptr %.sroa.7273.0..sroa_idx.i.i104, align 4, !noalias !598 + %.sroa.8276.0.copyload.i.i212 = load float, ptr %.sroa.8276.0..sroa_idx.i.i105, align 4, !noalias !598 + %.sroa.9279.0.copyload.i.i213 = load float, ptr %.sroa.9279.0..sroa_idx.i.i106, align 4, !noalias !598 + %.sroa.10282.0.copyload.i.i214 = load float, ptr %.sroa.10282.0..sroa_idx.i.i107, align 4, !noalias !598 + %.sroa.11285.0.copyload.i.i215 = load float, ptr %.sroa.11285.0..sroa_idx.i.i108, align 4, !noalias !598 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %54), !noalias !598 br i1 %1639, label %.invoke.i499, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h45c1c281e37cc192E.exit.i.i216", !prof !13 @@ -12304,7 +12304,7 @@ _ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit. %.sroa.0195.0395.i.i219 = phi ptr [ %1745, %1713 ], [ %1112, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h45c1c281e37cc192E.exit.i.i216" ] %1711 = add nuw i64 %.sroa.7197.0396.i.i218, %1679 %1712 = icmp ult i64 %1711, %1121 - br i1 %1712, label %1713, label %.invoke1030.i138 + br i1 %1712, label %1713, label %.invoke1031.i138 1713: ; preds = %.lr.ph397.i.i217 %.sroa.6222.0..sroa_idx.i.i220 = getelementptr inbounds nuw i8, ptr %.sroa.0195.0395.i.i219, i64 4 @@ -12469,13 +12469,13 @@ _ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit. 1798: ; preds = %1808, %.split.i120.i122 %.sroa.024.0369.i.i125 = phi i64 [ 0, %.split.i120.i122 ], [ %1811, %1808 ] %exitcond454.not.i.i126 = icmp eq i64 %.sroa.024.0369.i.i125, %1107 - br i1 %exitcond454.not.i.i126, label %.invoke1030.i138, label %1799 + br i1 %exitcond454.not.i.i126, label %.invoke1031.i138, label %1799 1799: ; preds = %1798 %1800 = getelementptr inbounds nuw float, ptr %1106, i64 %.sroa.024.0369.i.i125 %1801 = load float, ptr %1800, align 4, !alias.scope !578, !noalias !586, !noundef !3 %exitcond455.not.i.i127 = icmp eq i64 %.sroa.024.0369.i.i125, %1037 - br i1 %exitcond455.not.i.i127, label %.invoke1030.i138, label %1802 + br i1 %exitcond455.not.i.i127, label %.invoke1031.i138, label %1802 1802: ; preds = %1799 %gep.i.i128 = getelementptr { [704 x i32], i64, float, [1 x i32] }, ptr %invariant.gep.i.i124, i64 %.sroa.024.0369.i.i125 @@ -12487,7 +12487,7 @@ _ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit. .noexc144.i137: ; preds = %1802 %1806 = add nuw i64 %.sroa.024.0369.i.i125, %1627 %1807 = icmp ult i64 %1806, %1107 - br i1 %1807, label %1808, label %.invoke1030.i138 + br i1 %1807, label %1808, label %.invoke1031.i138 1808: ; preds = %.noexc144.i137 %1809 = getelementptr inbounds nuw float, ptr %1106, i64 %1806 @@ -12512,7 +12512,7 @@ _ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit. 1820: ; preds = %1821, %1817 %.sroa.04.0.i.i119 = phi float [ %1823, %1821 ], [ %1819, %1817 ] %exitcond452.not.i.i120 = icmp eq i64 %.sroa.05.1368.i.i117, %1107 - br i1 %exitcond452.not.i.i120, label %.invoke1030.i138, label %1824 + br i1 %exitcond452.not.i.i120, label %.invoke1031.i138, label %1824 1821: ; preds = %1812 %1822 = getelementptr inbounds nuw float, ptr @_ZN6brotli3enc4util10kLog2Table17hd3967b7c903f064fE, i64 %1815 @@ -12529,7 +12529,7 @@ _ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit. .preheader.i123.i505: ; preds = %1613, %1827 %.sroa.05.0415.i.i506 = phi i64 [ %1829, %1827 ], [ 0, %1613 ] %exitcond461.not.i.i507 = icmp eq i64 %.sroa.05.0415.i.i506, %1098 - br i1 %exitcond461.not.i.i507, label %.invoke1030.i138, label %1827 + br i1 %exitcond461.not.i.i507, label %.invoke1031.i138, label %1827 1827: ; preds = %.preheader.i123.i505 %1828 = getelementptr inbounds nuw i8, ptr %1097, i64 %.sroa.05.0415.i.i506 @@ -12552,18 +12552,18 @@ _ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit. .noexc151.i261: ; preds = %1831, %.noexc154.i267 %.sroa.0.015.i.i262 = phi i64 [ %1843, %.noexc154.i267 ], [ 0, %1831 ] %exitcond.not.i150.i263 = icmp eq i64 %.sroa.0.015.i.i262, %1098 - br i1 %exitcond.not.i150.i263, label %.invoke1030.i138, label %1832 + br i1 %exitcond.not.i150.i263, label %.invoke1031.i138, label %1832 1832: ; preds = %.noexc151.i261 %1833 = getelementptr inbounds nuw i8, ptr %1097, i64 %.sroa.0.015.i.i262 %1834 = load i8, ptr %1833, align 1, !alias.scope !614, !noalias !616, !noundef !3 %1835 = zext i8 %1834 to i64 %1836 = icmp ugt i64 %1037, %1835 - br i1 %1836, label %1837, label %.invoke1030.i138 + br i1 %1836, label %1837, label %.invoke1031.i138 1837: ; preds = %1832 %exitcond21.not.i.i264 = icmp eq i64 %.sroa.0.015.i.i262, %1018 - br i1 %exitcond21.not.i.i264, label %.invoke1030.i138, label %1838 + br i1 %exitcond21.not.i.i264, label %.invoke1031.i138, label %1838 1838: ; preds = %1837 %1839 = getelementptr inbounds nuw { [704 x i32], i64, float, [1 x i32] }, ptr %1036, i64 %1835 @@ -12580,7 +12580,7 @@ _ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit. _ZN6brotli3enc14block_splitter20BuildBlockHistograms17h76a0009526212306E.exit.i: ; preds = %.noexc154.i267 %1844 = add nuw nsw i64 %.sroa.018.0477.i112, 1 - %exitcond.not.i269 = icmp eq i64 %1844, %..i95 + %exitcond.not.i269 = icmp eq i64 %.830.i110, %.sroa.018.0477.i112 br i1 %exitcond.not.i269, label %1136, label %1611 .loopexit.i129: ; preds = %1802 @@ -12603,10 +12603,10 @@ _ZN6brotli3enc14block_splitter20BuildBlockHistograms17h76a0009526212306E.exit.i: cleanup br label %.loopexit.split-lp.i131 -.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.i139: ; preds = %.invoke1030.i138, %.split406.us.i.invoke.i173, %.invoke.i499, %1138, %1137, %1136 - %.sroa.024.3.ph.ph.ph.ph.ph.i140 = phi i1 [ false, %1136 ], [ false, %1137 ], [ false, %1138 ], [ true, %.invoke.i499 ], [ true, %.split406.us.i.invoke.i173 ], [ true, %.invoke1030.i138 ] - %.sroa.023.2.ph.ph.ph.ph.ph.i141 = phi i1 [ true, %1136 ], [ false, %1137 ], [ false, %1138 ], [ true, %.invoke.i499 ], [ true, %.split406.us.i.invoke.i173 ], [ true, %.invoke1030.i138 ] - %.sroa.022.1.ph.ph.ph.ph.ph.i142 = phi i1 [ true, %1136 ], [ true, %1137 ], [ false, %1138 ], [ true, %.invoke.i499 ], [ true, %.split406.us.i.invoke.i173 ], [ true, %.invoke1030.i138 ] +.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.i139: ; preds = %.invoke1031.i138, %.split406.us.i.invoke.i173, %.invoke.i499, %1138, %1137, %1136 + %.sroa.024.3.ph.ph.ph.ph.ph.i140 = phi i1 [ false, %1136 ], [ false, %1137 ], [ false, %1138 ], [ true, %.invoke.i499 ], [ true, %.split406.us.i.invoke.i173 ], [ true, %.invoke1031.i138 ] + %.sroa.023.2.ph.ph.ph.ph.ph.i141 = phi i1 [ true, %1136 ], [ false, %1137 ], [ false, %1138 ], [ true, %.invoke.i499 ], [ true, %.split406.us.i.invoke.i173 ], [ true, %.invoke1031.i138 ] + %.sroa.022.1.ph.ph.ph.ph.ph.i142 = phi i1 [ true, %1136 ], [ true, %1137 ], [ false, %1138 ], [ true, %.invoke.i499 ], [ true, %.split406.us.i.invoke.i173 ], [ true, %.invoke1031.i138 ] %lpad.loopexit.split-lp129.i143 = landingpad { ptr, i32 } cleanup br label %.loopexit.split-lp.i131 @@ -12643,9 +12643,9 @@ _ZN6brotli3enc14block_splitter20BuildBlockHistograms17h76a0009526212306E.exit.i: invoke void @"_ZN4core3ptr65drop_in_place$LT$alloc_stdlib..heap_alloc..WrapBox$LT$f32$GT$$GT$17hf3151b38ab82c61dE"(ptr noalias noundef nonnull align 8 dereferenceable(16) %87) #20 to label %.thread81.thread.thread.i76 unwind label %1845, !noalias !449 -.thread81.thread.thread.i76: ; preds = %1849, %1607, %1147, %.thread81.i84, %.thread4.i75, %.thread81.thread.thread837.i270 - %.sroa.026.19.i77 = phi i1 [ true, %.thread4.i75 ], [ false, %1147 ], [ false, %1607 ], [ %.sroa.026.5.ph.ph.i271, %.thread81.thread.thread837.i270 ], [ true, %1849 ], [ true, %.thread81.i84 ] - %.pn.pn.pn.pn8.i78 = phi { ptr, i32 } [ %1104, %.thread4.i75 ], [ %.pn263.pn.pn.pn.pn.pn.i.i277, %1147 ], [ %.pn263.pn.pn.pn.pn.pn.pn430.i.i275, %1607 ], [ %lpad.thr_comm.i272, %.thread81.thread.thread837.i270 ], [ %.pn.pn.pn15.i80, %1849 ], [ %.pn.pn.pn.i85, %.thread81.i84 ] +.thread81.thread.thread.i76: ; preds = %1849, %1607, %1147, %.thread81.i84, %.thread4.i75, %.thread81.thread.thread838.i270 + %.sroa.026.19.i77 = phi i1 [ true, %.thread4.i75 ], [ false, %1147 ], [ false, %1607 ], [ %.sroa.026.5.ph.ph.i271, %.thread81.thread.thread838.i270 ], [ true, %1849 ], [ true, %.thread81.i84 ] + %.pn.pn.pn.pn8.i78 = phi { ptr, i32 } [ %1104, %.thread4.i75 ], [ %.pn263.pn.pn.pn.pn.pn.i.i277, %1147 ], [ %.pn263.pn.pn.pn.pn.pn.pn430.i.i275, %1607 ], [ %lpad.thr_comm.i272, %.thread81.thread.thread838.i270 ], [ %.pn.pn.pn15.i80, %1849 ], [ %.pn.pn.pn.i85, %.thread81.i84 ] invoke void @"_ZN4core3ptr64drop_in_place$LT$alloc_stdlib..heap_alloc..WrapBox$LT$u8$GT$$GT$17hb6c382cbc1d625feE"(ptr noalias noundef nonnull align 8 dereferenceable(16) %88) #20 to label %1033 unwind label %1845, !noalias !449 @@ -13017,7 +13017,7 @@ _ZN6brotli3enc14block_splitter18RefineEntropyCodes17h3573ab36b94fb891E.exit.i: ; %1980 = invoke { ptr, i64 } @"_ZN111_$LT$alloc_stdlib..std_alloc..StandardAlloc$u20$as$u20$alloc_no_stdlib..stack_allocator..Allocator$LT$T$GT$$GT$10alloc_cell17h496b870d59415105E"(ptr noalias noundef nonnull align 1 %0, i64 noundef %1979) to label %1982 unwind label %.thread4.i564, !noalias !637 -.thread81.thread.thread837.i760: ; preds = %2018, %2017, %2016 +.thread81.thread.thread838.i760: ; preds = %2018, %2017, %2016 %.sroa.026.5.ph.ph.i761 = phi i1 [ false, %2017 ], [ true, %2016 ], [ false, %2018 ] %lpad.thr_comm.i762 = landingpad { ptr, i32 } cleanup @@ -13095,29 +13095,29 @@ _ZN6brotli3enc14block_splitter18RefineEntropyCodes17h3573ab36b94fb891E.exit.i: ; %2004 = getelementptr inbounds nuw i8, ptr %46, i64 8 store i64 %2003, ptr %2004, align 8, !noalias !642 %2005 = icmp slt i32 %.val29, 12 - %..i584 = select i1 %2005, i64 3, i64 10 %2006 = icmp ugt i64 %.sroa.08.1, %1896 %2007 = getelementptr inbounds nuw i8, ptr %1895, i64 %1940 - %.sroa.4250.0..sroa_idx.i.i585 = getelementptr inbounds nuw i8, ptr %17, i64 4 - %.sroa.5251.0..sroa_idx.i.i586 = getelementptr inbounds nuw i8, ptr %17, i64 8 - %.sroa.6252.0..sroa_idx.i.i587 = getelementptr inbounds nuw i8, ptr %17, i64 12 - %.sroa.7253.0..sroa_idx.i.i588 = getelementptr inbounds nuw i8, ptr %17, i64 16 - %.sroa.8254.0..sroa_idx.i.i589 = getelementptr inbounds nuw i8, ptr %17, i64 20 - %.sroa.9255.0..sroa_idx.i.i590 = getelementptr inbounds nuw i8, ptr %17, i64 24 - %.sroa.10256.0..sroa_idx.i.i591 = getelementptr inbounds nuw i8, ptr %17, i64 28 - %.sroa.5267.0..sroa_idx.i.i592 = getelementptr inbounds nuw i8, ptr %16, i64 4 - %.sroa.6270.0..sroa_idx.i.i593 = getelementptr inbounds nuw i8, ptr %16, i64 8 - %.sroa.7273.0..sroa_idx.i.i594 = getelementptr inbounds nuw i8, ptr %16, i64 12 - %.sroa.8276.0..sroa_idx.i.i595 = getelementptr inbounds nuw i8, ptr %16, i64 16 - %.sroa.9279.0..sroa_idx.i.i596 = getelementptr inbounds nuw i8, ptr %16, i64 20 - %.sroa.10282.0..sroa_idx.i.i597 = getelementptr inbounds nuw i8, ptr %16, i64 24 - %.sroa.11285.0..sroa_idx.i.i598 = getelementptr inbounds nuw i8, ptr %16, i64 28 + %.sroa.4250.0..sroa_idx.i.i584 = getelementptr inbounds nuw i8, ptr %17, i64 4 + %.sroa.5251.0..sroa_idx.i.i585 = getelementptr inbounds nuw i8, ptr %17, i64 8 + %.sroa.6252.0..sroa_idx.i.i586 = getelementptr inbounds nuw i8, ptr %17, i64 12 + %.sroa.7253.0..sroa_idx.i.i587 = getelementptr inbounds nuw i8, ptr %17, i64 16 + %.sroa.8254.0..sroa_idx.i.i588 = getelementptr inbounds nuw i8, ptr %17, i64 20 + %.sroa.9255.0..sroa_idx.i.i589 = getelementptr inbounds nuw i8, ptr %17, i64 24 + %.sroa.10256.0..sroa_idx.i.i590 = getelementptr inbounds nuw i8, ptr %17, i64 28 + %.sroa.5267.0..sroa_idx.i.i591 = getelementptr inbounds nuw i8, ptr %16, i64 4 + %.sroa.6270.0..sroa_idx.i.i592 = getelementptr inbounds nuw i8, ptr %16, i64 8 + %.sroa.7273.0..sroa_idx.i.i593 = getelementptr inbounds nuw i8, ptr %16, i64 12 + %.sroa.8276.0..sroa_idx.i.i594 = getelementptr inbounds nuw i8, ptr %16, i64 16 + %.sroa.9279.0..sroa_idx.i.i595 = getelementptr inbounds nuw i8, ptr %16, i64 20 + %.sroa.10282.0..sroa_idx.i.i596 = getelementptr inbounds nuw i8, ptr %16, i64 24 + %.sroa.11285.0..sroa_idx.i.i597 = getelementptr inbounds nuw i8, ptr %16, i64 28 %2008 = add i64 %.sroa.08.1, -1 - %.idx416.i.i599 = shl nuw nsw i64 %1990, 5 - %2009 = getelementptr inbounds nuw i8, ptr %1989, i64 %.idx416.i.i599 + %.idx416.i.i598 = shl nuw nsw i64 %1990, 5 + %2009 = getelementptr inbounds nuw i8, ptr %1989, i64 %.idx416.i.i598 %2010 = icmp eq i64 %1990, 0 %2011 = icmp ult i64 %2008, %1975 %2012 = getelementptr inbounds nuw i8, ptr %1974, i64 %2008 + %.830.i599 = select i1 %2005, i64 2, i64 9 br label %2488 2013: ; preds = %_ZN6brotli3enc14block_splitter20BuildBlockHistograms17h450c30cec7ce6203E.exit.i @@ -13134,11 +13134,11 @@ _ZN6brotli3enc14block_splitter18RefineEntropyCodes17h3573ab36b94fb891E.exit.i: ; 2016: ; preds = %2015 invoke void @"_ZN111_$LT$alloc_stdlib..std_alloc..StandardAlloc$u20$as$u20$alloc_no_stdlib..stack_allocator..Allocator$LT$T$GT$$GT$9free_cell17h49a5bd31abbbe38fE"(ptr noalias noundef nonnull align 1 %0, ptr noalias noundef nonnull align 2 %2002, i64 noundef %2003) - to label %2017 unwind label %.thread81.thread.thread837.i760, !noalias !637 + to label %2017 unwind label %.thread81.thread.thread838.i760, !noalias !637 2017: ; preds = %2016 invoke void @"_ZN111_$LT$alloc_stdlib..std_alloc..StandardAlloc$u20$as$u20$alloc_no_stdlib..stack_allocator..Allocator$LT$T$GT$$GT$9free_cell17h63a11106f52e406aE"(ptr noalias noundef nonnull align 1 %0, ptr noalias noundef nonnull align 8 %1913, i64 noundef %1914) - to label %2018 unwind label %.thread81.thread.thread837.i760, !noalias !637 + to label %2018 unwind label %.thread81.thread.thread838.i760, !noalias !637 2018: ; preds = %2017 call void @llvm.experimental.noalias.scope.decl(metadata !664) @@ -13146,7 +13146,7 @@ _ZN6brotli3enc14block_splitter18RefineEntropyCodes17h3573ab36b94fb891E.exit.i: ; call void @llvm.experimental.noalias.scope.decl(metadata !669) call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %44), !noalias !671 %2019 = invoke { ptr, i64 } @"_ZN111_$LT$alloc_stdlib..std_alloc..StandardAlloc$u20$as$u20$alloc_no_stdlib..stack_allocator..Allocator$LT$T$GT$$GT$10alloc_cell17h6e520e4fe8e2b1fdE"(ptr noalias noundef nonnull align 1 %0, i64 noundef %.sroa.0.0.i122.i748) - to label %.noexc115.i763 unwind label %.thread81.thread.thread837.i760, !noalias !637 + to label %.noexc115.i763 unwind label %.thread81.thread.thread838.i760, !noalias !637 .noexc115.i763: ; preds = %2018 %2020 = extractvalue { ptr, i64 } %2019, 0 @@ -14222,14 +14222,14 @@ _ZN6brotli3enc7cluster30BrotliHistogramBitCostDistance17hbd5292ca2d7f4f70E.exit2 %2386 = icmp ult i32 %2384, 64 br i1 %2386, label %2390, label %.invoke.i.i785 -.invoke.i.loopexit862.split.loop.exit1017.i814: ; preds = %_ZN6brotli3enc9histogram14HistogramClear17hb75b51e44fa0c2faE.exit293.i.i +.invoke.i.loopexit863.split.loop.exit1018.i814: ; preds = %_ZN6brotli3enc9histogram14HistogramClear17hb75b51e44fa0c2faE.exit293.i.i %umax.le.i815 = call i64 @llvm.umax.i64(i64 %2029, i64 %.sroa.0136.1823.i.i806) br label %.invoke.i.i785 -.invoke.i.i785: ; preds = %2473, %2471, %2463, %2441, %.lr.ph.i111._crit_edge.i826, %.lr.ph810.i.i809, %2416, %2414, %2409, %2399, %.lr.ph817.i.i845, %2390, %2382, %2451, %.lr.ph.i818, %.invoke.i.loopexit862.split.loop.exit1017.i814 - %2387 = phi i64 [ %umax.le.i815, %.invoke.i.loopexit862.split.loop.exit1017.i814 ], [ %.sroa.041.0808.i.i810, %.lr.ph.i818 ], [ %.sroa.0103.4802.i480.i819, %2451 ], [ %2385, %2382 ], [ %2391, %2390 ], [ 64, %.lr.ph817.i.i845 ], [ %2402, %2399 ], [ %2402, %2409 ], [ %.sroa.034.1814.i.i847, %2414 ], [ %2421, %2416 ], [ %.sroa.041.0808.i.i810, %.lr.ph810.i.i809 ], [ %.sroa.041.0808.i.i810, %.lr.ph.i111._crit_edge.i826 ], [ %.sroa.041.0808.i.i810, %2441 ], [ %.sroa.0.0799.i.i783, %2463 ], [ %.sroa.0136.0798.i.i784, %2471 ], [ %2469, %2473 ] - %2388 = phi i64 [ %2029, %.invoke.i.loopexit862.split.loop.exit1017.i814 ], [ %.val390.i.i821, %.lr.ph.i818 ], [ %1896, %2451 ], [ 64, %2382 ], [ %2021, %2390 ], [ 64, %.lr.ph817.i.i845 ], [ %.val408.i.i851, %2399 ], [ 64, %2409 ], [ %.val322.i.i854, %2414 ], [ 64, %2416 ], [ %.val388.i.i832, %2441 ], [ %.val406.i.i828, %.lr.ph.i111._crit_edge.i826 ], [ %.val396.i.i812, %.lr.ph810.i.i809 ], [ %2029, %2463 ], [ %1975, %2471 ], [ %1975, %2473 ] - %2389 = phi ptr [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.180, %.invoke.i.loopexit862.split.loop.exit1017.i814 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.186, %.lr.ph.i818 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.187, %2451 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.169, %2382 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.170, %2390 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.171, %.lr.ph817.i.i845 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.172, %2399 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.175, %2409 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.176, %2414 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.178, %2416 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.182, %2441 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.181, %.lr.ph.i111._crit_edge.i826 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.179, %.lr.ph810.i.i809 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.188, %2463 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.189, %2471 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.190, %2473 ] +.invoke.i.i785: ; preds = %2473, %2471, %2463, %2441, %.lr.ph.i111._crit_edge.i826, %.lr.ph810.i.i809, %2416, %2414, %2409, %2399, %.lr.ph817.i.i845, %2390, %2382, %2451, %.lr.ph.i818, %.invoke.i.loopexit863.split.loop.exit1018.i814 + %2387 = phi i64 [ %umax.le.i815, %.invoke.i.loopexit863.split.loop.exit1018.i814 ], [ %.sroa.041.0808.i.i810, %.lr.ph.i818 ], [ %.sroa.0103.4802.i480.i819, %2451 ], [ %2385, %2382 ], [ %2391, %2390 ], [ 64, %.lr.ph817.i.i845 ], [ %2402, %2399 ], [ %2402, %2409 ], [ %.sroa.034.1814.i.i847, %2414 ], [ %2421, %2416 ], [ %.sroa.041.0808.i.i810, %.lr.ph810.i.i809 ], [ %.sroa.041.0808.i.i810, %.lr.ph.i111._crit_edge.i826 ], [ %.sroa.041.0808.i.i810, %2441 ], [ %.sroa.0.0799.i.i783, %2463 ], [ %.sroa.0136.0798.i.i784, %2471 ], [ %2469, %2473 ] + %2388 = phi i64 [ %2029, %.invoke.i.loopexit863.split.loop.exit1018.i814 ], [ %.val390.i.i821, %.lr.ph.i818 ], [ %1896, %2451 ], [ 64, %2382 ], [ %2021, %2390 ], [ 64, %.lr.ph817.i.i845 ], [ %.val408.i.i851, %2399 ], [ 64, %2409 ], [ %.val322.i.i854, %2414 ], [ 64, %2416 ], [ %.val388.i.i832, %2441 ], [ %.val406.i.i828, %.lr.ph.i111._crit_edge.i826 ], [ %.val396.i.i812, %.lr.ph810.i.i809 ], [ %2029, %2463 ], [ %1975, %2471 ], [ %1975, %2473 ] + %2389 = phi ptr [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.180, %.invoke.i.loopexit863.split.loop.exit1018.i814 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.186, %.lr.ph.i818 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.187, %2451 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.169, %2382 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.170, %2390 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.171, %.lr.ph817.i.i845 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.172, %2399 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.175, %2409 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.176, %2414 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.178, %2416 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.182, %2441 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.181, %.lr.ph.i111._crit_edge.i826 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.179, %.lr.ph810.i.i809 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.188, %2463 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.189, %2471 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.190, %2473 ] invoke void @_ZN4core9panicking18panic_bounds_check17h2d3ab0b83311a572E(i64 noundef %2387, i64 noundef %2388, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %2389) #18 to label %.cont.i.i792 unwind label %.thread446.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.i.i786, !noalias !675 @@ -14351,7 +14351,7 @@ _ZN6brotli3enc9histogram14HistogramClear17hb75b51e44fa0c2faE.exit293.i.i: ; pred store float 0x47EFFE0460000000, ptr %2432, align 8, !alias.scope !751, !noalias !675 %2433 = add nuw nsw i64 %.sroa.041.0808.i.i810, %.sroa.0136.1823.i.i806 %2434 = icmp ult i64 %2433, %2029 - br i1 %2434, label %.lr.ph.preheader.i.i816, label %.invoke.i.loopexit862.split.loop.exit1017.i814 + br i1 %2434, label %.lr.ph.preheader.i.i816, label %.invoke.i.loopexit863.split.loop.exit1018.i814 .lr.ph.preheader.i.i816: ; preds = %_ZN6brotli3enc9histogram14HistogramClear17hb75b51e44fa0c2faE.exit293.i.i %2435 = getelementptr inbounds nuw i32, ptr %2028, i64 %2433 @@ -14540,7 +14540,7 @@ _ZN6brotli3enc9histogram14HistogramClear17hb75b51e44fa0c2faE.exit293.i.i: ; pred .preheader329.i.i605: ; preds = %.preheader329.i.i605.preheader, %2701 %.sroa.05.1368.i.i606 = phi i64 [ %2703, %2701 ], [ 0, %.preheader329.i.i605.preheader ] %exitcond.not.i119.i607 = icmp eq i64 %.sroa.05.1368.i.i606, %1914 - br i1 %exitcond.not.i119.i607, label %.invoke1030.i627, label %2689 + br i1 %exitcond.not.i119.i607, label %.invoke1031.i627, label %2689 .loopexit327.i.i635: ; preds = %2685 %2501 = icmp eq i64 %2503, 0 @@ -14609,7 +14609,7 @@ _ZN6brotli3enc9histogram14HistogramClear17hb75b51e44fa0c2faE.exit293.i.i: ; pred .lr.ph400.split.us.i.i1022: ; preds = %.lr.ph400.i.i647 %.not421.i.i1023 = icmp eq i64 %1975, 0 - br i1 %.not421.i.i1023, label %.invoke1030.i627, label %2520 + br i1 %.not421.i.i1023, label %.invoke1031.i627, label %2520 2520: ; preds = %.lr.ph400.split.us.i.i1022 %2521 = load i16, ptr %1895, align 2, !alias.scope !778, !noalias !781, !noundef !3 @@ -14650,24 +14650,24 @@ _ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit. %2526 = getelementptr inbounds nuw i8, ptr %.sroa.0.0304399.i.i654, i64 2 %2527 = add nuw i64 %.sroa.7.0398.i.i655, 1 %exitcond460.not.i.i656 = icmp eq i64 %.sroa.7.0398.i.i655, %1975 - br i1 %exitcond460.not.i.i656, label %.invoke1030.i627, label %2554 + br i1 %exitcond460.not.i.i656, label %.invoke1031.i627, label %2554 _ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit._crit_edge.i.i735: ; preds = %_ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit.loopexit.i.i734 - br i1 %2011, label %.lr.ph413.preheader.i.i736, label %.invoke1030.i627 + br i1 %2011, label %.lr.ph413.preheader.i.i736, label %.invoke1031.i627 .lr.ph413.preheader.i.i736: ; preds = %_ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit._crit_edge.i.i735 %2528 = load i8, ptr %2012, align 1, !alias.scope !772, !noalias !782, !noundef !3 %2529 = mul i64 %2492, %2008 br label %.lr.ph413.i.i737 -.invoke1030.i627: ; preds = %_ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit._crit_edge.i.i735, %2697, %.preheader329.i.i605, %.lr.ph400.split.i.i653, %2546, %.lr.ph413.i.i737, %.preheader.i123.i1026, %2714, %2709, %.noexc151.i751, %.noexc144.i626, %2676, %2675, %.lr.ph392.i.i677, %.lr.ph397.i.i707, %.lr.ph400.split.us.i.i1022 +.invoke1031.i627: ; preds = %_ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit._crit_edge.i.i735, %2697, %.preheader329.i.i605, %.lr.ph400.split.i.i653, %2546, %.lr.ph413.i.i737, %.preheader.i123.i1026, %2714, %2709, %.noexc151.i751, %.noexc144.i626, %2676, %2675, %.lr.ph392.i.i677, %.lr.ph397.i.i707, %.lr.ph400.split.us.i.i1022 %2530 = phi i64 [ 0, %.lr.ph400.split.us.i.i1022 ], [ %2588, %.lr.ph397.i.i707 ], [ %2574, %.lr.ph392.i.i677 ], [ %2683, %.noexc144.i626 ], [ %1914, %2676 ], [ %1984, %2675 ], [ %1896, %2714 ], [ %2712, %2709 ], [ %1975, %.noexc151.i751 ], [ %1975, %.preheader.i123.i1026 ], [ %2533, %2546 ], [ %2537, %.lr.ph413.i.i737 ], [ %1975, %.lr.ph400.split.i.i653 ], [ %1984, %2697 ], [ %1914, %.preheader329.i.i605 ], [ %2008, %_ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit._crit_edge.i.i735 ] %2531 = phi i64 [ 0, %.lr.ph400.split.us.i.i1022 ], [ %1998, %.lr.ph397.i.i707 ], [ %1990, %.lr.ph392.i.i677 ], [ %1984, %.noexc144.i626 ], [ %1914, %2676 ], [ %1984, %2675 ], [ %1896, %2714 ], [ %1914, %2709 ], [ %1975, %.noexc151.i751 ], [ %1975, %.preheader.i123.i1026 ], [ %1975, %2546 ], [ %1998, %.lr.ph413.i.i737 ], [ %1975, %.lr.ph400.split.i.i653 ], [ %1984, %2697 ], [ %1914, %.preheader329.i.i605 ], [ %1975, %_ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit._crit_edge.i.i735 ] %2532 = phi ptr [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.112, %.lr.ph400.split.us.i.i1022 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.217, %.lr.ph397.i.i707 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.119, %.lr.ph392.i.i677 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.131, %.noexc144.i626 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.130, %2676 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.129, %2675 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.215, %2714 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.214, %2709 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.213, %.noexc151.i751 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.135, %.preheader.i123.i1026 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.109, %2546 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.108, %.lr.ph413.i.i737 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.112, %.lr.ph400.split.i.i653 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.134, %2697 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.132, %.preheader329.i.i605 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.107, %_ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit._crit_edge.i.i735 ] invoke void @_ZN4core9panicking18panic_bounds_check17h2d3ab0b83311a572E(i64 noundef %2530, i64 noundef %2531, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %2532) #18 - to label %.cont1031.i633 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.i628, !noalias !637 + to label %.cont1032.i633 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.i628, !noalias !637 -.cont1031.i633: ; preds = %.invoke1030.i627 +.cont1032.i633: ; preds = %.invoke1031.i627 unreachable .lr.ph413.i.i737: ; preds = %2548, %.lr.ph413.preheader.i.i736 @@ -14681,7 +14681,7 @@ _ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit. %2536 = zext nneg i8 %2535 to i64 %2537 = add i64 %2534, %2536 %2538 = icmp ult i64 %2537, %1998 - br i1 %2538, label %2539, label %.invoke1030.i627 + br i1 %2538, label %2539, label %.invoke1031.i627 2539: ; preds = %.lr.ph413.i.i737 %2540 = and i8 %.sroa.063.0409.i.i740, 7 @@ -14694,7 +14694,7 @@ _ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit. 2546: ; preds = %2539 %2547 = icmp ult i64 %2533, %1975 - br i1 %2547, label %2550, label %.invoke1030.i627 + br i1 %2547, label %2550, label %.invoke1031.i627 2548: ; preds = %2550, %2539 %.sroa.063.1.i.i744 = phi i8 [ %.sroa.063.0409.i.i740, %2539 ], [ %2552, %2550 ] @@ -14776,7 +14776,7 @@ _ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit. %.sroa.047.0387.i.i681 = phi i64 [ %2650, %2649 ], [ %2511, %.lr.ph392.preheader.i.i675 ] %2574 = lshr i64 %.sroa.047.0387.i.i681, 3 %2575 = icmp ult i64 %2574, %1990 - br i1 %2575, label %2641, label %.invoke1030.i627 + br i1 %2575, label %2641, label %.invoke1031.i627 ._crit_edge393.i.i685: ; preds = %2649, %2571 %.sroa.056.1.lcssa.i.i686 = phi float [ %.sroa.056.0.lcssa.i.i672, %2571 ], [ %.sroa.056.2.i.i682, %2649 ] @@ -14799,13 +14799,13 @@ _ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit. 2582: ; preds = %2578 %.sroa.0249.0.copyload.i.i689 = load float, ptr %17, align 4, !noalias !786 - %.sroa.4250.0.copyload.i.i690 = load float, ptr %.sroa.4250.0..sroa_idx.i.i585, align 4, !noalias !786 - %.sroa.5251.0.copyload.i.i691 = load float, ptr %.sroa.5251.0..sroa_idx.i.i586, align 4, !noalias !786 - %.sroa.6252.0.copyload.i.i692 = load float, ptr %.sroa.6252.0..sroa_idx.i.i587, align 4, !noalias !786 - %.sroa.7253.0.copyload.i.i693 = load float, ptr %.sroa.7253.0..sroa_idx.i.i588, align 4, !noalias !786 - %.sroa.8254.0.copyload.i.i694 = load float, ptr %.sroa.8254.0..sroa_idx.i.i589, align 4, !noalias !786 - %.sroa.9255.0.copyload.i.i695 = load float, ptr %.sroa.9255.0..sroa_idx.i.i590, align 4, !noalias !786 - %.sroa.10256.0.copyload.i.i696 = load float, ptr %.sroa.10256.0..sroa_idx.i.i591, align 4, !noalias !786 + %.sroa.4250.0.copyload.i.i690 = load float, ptr %.sroa.4250.0..sroa_idx.i.i584, align 4, !noalias !786 + %.sroa.5251.0.copyload.i.i691 = load float, ptr %.sroa.5251.0..sroa_idx.i.i585, align 4, !noalias !786 + %.sroa.6252.0.copyload.i.i692 = load float, ptr %.sroa.6252.0..sroa_idx.i.i586, align 4, !noalias !786 + %.sroa.7253.0.copyload.i.i693 = load float, ptr %.sroa.7253.0..sroa_idx.i.i587, align 4, !noalias !786 + %.sroa.8254.0.copyload.i.i694 = load float, ptr %.sroa.8254.0..sroa_idx.i.i588, align 4, !noalias !786 + %.sroa.9255.0.copyload.i.i695 = load float, ptr %.sroa.9255.0..sroa_idx.i.i589, align 4, !noalias !786 + %.sroa.10256.0.copyload.i.i696 = load float, ptr %.sroa.10256.0..sroa_idx.i.i590, align 4, !noalias !786 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17), !noalias !786 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %16), !noalias !786 br label %2583 @@ -14820,13 +14820,13 @@ _ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit. 2587: ; preds = %2583 %.sroa.0265.0.copyload.i.i698 = load float, ptr %16, align 4, !noalias !786 - %.sroa.5267.0.copyload.i.i699 = load float, ptr %.sroa.5267.0..sroa_idx.i.i592, align 4, !noalias !786 - %.sroa.6270.0.copyload.i.i700 = load float, ptr %.sroa.6270.0..sroa_idx.i.i593, align 4, !noalias !786 - %.sroa.7273.0.copyload.i.i701 = load float, ptr %.sroa.7273.0..sroa_idx.i.i594, align 4, !noalias !786 - %.sroa.8276.0.copyload.i.i702 = load float, ptr %.sroa.8276.0..sroa_idx.i.i595, align 4, !noalias !786 - %.sroa.9279.0.copyload.i.i703 = load float, ptr %.sroa.9279.0..sroa_idx.i.i596, align 4, !noalias !786 - %.sroa.10282.0.copyload.i.i704 = load float, ptr %.sroa.10282.0..sroa_idx.i.i597, align 4, !noalias !786 - %.sroa.11285.0.copyload.i.i705 = load float, ptr %.sroa.11285.0..sroa_idx.i.i598, align 4, !noalias !786 + %.sroa.5267.0.copyload.i.i699 = load float, ptr %.sroa.5267.0..sroa_idx.i.i591, align 4, !noalias !786 + %.sroa.6270.0.copyload.i.i700 = load float, ptr %.sroa.6270.0..sroa_idx.i.i592, align 4, !noalias !786 + %.sroa.7273.0.copyload.i.i701 = load float, ptr %.sroa.7273.0..sroa_idx.i.i593, align 4, !noalias !786 + %.sroa.8276.0.copyload.i.i702 = load float, ptr %.sroa.8276.0..sroa_idx.i.i594, align 4, !noalias !786 + %.sroa.9279.0.copyload.i.i703 = load float, ptr %.sroa.9279.0..sroa_idx.i.i595, align 4, !noalias !786 + %.sroa.10282.0.copyload.i.i704 = load float, ptr %.sroa.10282.0..sroa_idx.i.i596, align 4, !noalias !786 + %.sroa.11285.0.copyload.i.i705 = load float, ptr %.sroa.11285.0..sroa_idx.i.i597, align 4, !noalias !786 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16), !noalias !786 br i1 %2516, label %.invoke.i1019, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h45c1c281e37cc192E.exit.i.i706", !prof !13 @@ -14838,7 +14838,7 @@ _ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit. %.sroa.0195.0395.i.i709 = phi ptr [ %2622, %2590 ], [ %1989, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h45c1c281e37cc192E.exit.i.i706" ] %2588 = add nuw i64 %.sroa.7197.0396.i.i708, %2556 %2589 = icmp ult i64 %2588, %1998 - br i1 %2589, label %2590, label %.invoke1030.i627 + br i1 %2589, label %2590, label %.invoke1031.i627 2590: ; preds = %.lr.ph397.i.i707 %.sroa.6222.0..sroa_idx.i.i710 = getelementptr inbounds nuw i8, ptr %.sroa.0195.0395.i.i709, i64 4 @@ -15003,13 +15003,13 @@ _ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit. 2675: ; preds = %2685, %.split.i120.i611 %.sroa.024.0369.i.i614 = phi i64 [ 0, %.split.i120.i611 ], [ %2688, %2685 ] %exitcond454.not.i.i615 = icmp eq i64 %.sroa.024.0369.i.i614, %1984 - br i1 %exitcond454.not.i.i615, label %.invoke1030.i627, label %2676 + br i1 %exitcond454.not.i.i615, label %.invoke1031.i627, label %2676 2676: ; preds = %2675 %2677 = getelementptr inbounds nuw float, ptr %1983, i64 %.sroa.024.0369.i.i614 %2678 = load float, ptr %2677, align 4, !alias.scope !766, !noalias !774, !noundef !3 %exitcond455.not.i.i616 = icmp eq i64 %.sroa.024.0369.i.i614, %1914 - br i1 %exitcond455.not.i.i616, label %.invoke1030.i627, label %2679 + br i1 %exitcond455.not.i.i616, label %.invoke1031.i627, label %2679 2679: ; preds = %2676 %gep.i.i617 = getelementptr { [544 x i32], i64, float, [1 x i32] }, ptr %invariant.gep.i.i613, i64 %.sroa.024.0369.i.i614 @@ -15021,7 +15021,7 @@ _ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit. .noexc144.i626: ; preds = %2679 %2683 = add nuw i64 %.sroa.024.0369.i.i614, %2504 %2684 = icmp ult i64 %2683, %1984 - br i1 %2684, label %2685, label %.invoke1030.i627 + br i1 %2684, label %2685, label %.invoke1031.i627 2685: ; preds = %.noexc144.i626 %2686 = getelementptr inbounds nuw float, ptr %1983, i64 %2683 @@ -15046,7 +15046,7 @@ _ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit. 2697: ; preds = %2698, %2694 %.sroa.04.0.i.i608 = phi float [ %2700, %2698 ], [ %2696, %2694 ] %exitcond452.not.i.i609 = icmp eq i64 %.sroa.05.1368.i.i606, %1984 - br i1 %exitcond452.not.i.i609, label %.invoke1030.i627, label %2701 + br i1 %exitcond452.not.i.i609, label %.invoke1031.i627, label %2701 2698: ; preds = %2689 %2699 = getelementptr inbounds nuw float, ptr @_ZN6brotli3enc4util10kLog2Table17hd3967b7c903f064fE, i64 %2692 @@ -15063,7 +15063,7 @@ _ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit. .preheader.i123.i1026: ; preds = %2490, %2704 %.sroa.05.0415.i.i1027 = phi i64 [ %2706, %2704 ], [ 0, %2490 ] %exitcond461.not.i.i1028 = icmp eq i64 %.sroa.05.0415.i.i1027, %1975 - br i1 %exitcond461.not.i.i1028, label %.invoke1030.i627, label %2704 + br i1 %exitcond461.not.i.i1028, label %.invoke1031.i627, label %2704 2704: ; preds = %.preheader.i123.i1026 %2705 = getelementptr inbounds nuw i8, ptr %1974, i64 %.sroa.05.0415.i.i1027 @@ -15086,18 +15086,18 @@ _ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit. .noexc151.i751: ; preds = %2708, %.noexc154.i757 %.sroa.0.015.i.i752 = phi i64 [ %2720, %.noexc154.i757 ], [ 0, %2708 ] %exitcond.not.i150.i753 = icmp eq i64 %.sroa.0.015.i.i752, %1975 - br i1 %exitcond.not.i150.i753, label %.invoke1030.i627, label %2709 + br i1 %exitcond.not.i150.i753, label %.invoke1031.i627, label %2709 2709: ; preds = %.noexc151.i751 %2710 = getelementptr inbounds nuw i8, ptr %1974, i64 %.sroa.0.015.i.i752 %2711 = load i8, ptr %2710, align 1, !alias.scope !802, !noalias !804, !noundef !3 %2712 = zext i8 %2711 to i64 %2713 = icmp ugt i64 %1914, %2712 - br i1 %2713, label %2714, label %.invoke1030.i627 + br i1 %2713, label %2714, label %.invoke1031.i627 2714: ; preds = %2709 %exitcond21.not.i.i754 = icmp eq i64 %.sroa.0.015.i.i752, %1896 - br i1 %exitcond21.not.i.i754, label %.invoke1030.i627, label %2715 + br i1 %exitcond21.not.i.i754, label %.invoke1031.i627, label %2715 2715: ; preds = %2714 %2716 = getelementptr inbounds nuw { [544 x i32], i64, float, [1 x i32] }, ptr %1913, i64 %2712 @@ -15114,7 +15114,7 @@ _ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit. _ZN6brotli3enc14block_splitter20BuildBlockHistograms17h450c30cec7ce6203E.exit.i: ; preds = %.noexc154.i757 %2721 = add nuw nsw i64 %.sroa.018.0477.i601, 1 - %exitcond.not.i759 = icmp eq i64 %2721, %..i584 + %exitcond.not.i759 = icmp eq i64 %.830.i599, %.sroa.018.0477.i601 br i1 %exitcond.not.i759, label %2013, label %2488 .loopexit.i618: ; preds = %2679 @@ -15137,10 +15137,10 @@ _ZN6brotli3enc14block_splitter20BuildBlockHistograms17h450c30cec7ce6203E.exit.i: cleanup br label %.loopexit.split-lp.i620 -.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.i628: ; preds = %.invoke1030.i627, %.split406.us.i.invoke.i663, %.invoke.i1019, %2015, %2014, %2013 - %.sroa.024.3.ph.ph.ph.ph.ph.i629 = phi i1 [ false, %2013 ], [ false, %2014 ], [ false, %2015 ], [ true, %.invoke.i1019 ], [ true, %.split406.us.i.invoke.i663 ], [ true, %.invoke1030.i627 ] - %.sroa.023.2.ph.ph.ph.ph.ph.i630 = phi i1 [ true, %2013 ], [ false, %2014 ], [ false, %2015 ], [ true, %.invoke.i1019 ], [ true, %.split406.us.i.invoke.i663 ], [ true, %.invoke1030.i627 ] - %.sroa.022.1.ph.ph.ph.ph.ph.i631 = phi i1 [ true, %2013 ], [ true, %2014 ], [ false, %2015 ], [ true, %.invoke.i1019 ], [ true, %.split406.us.i.invoke.i663 ], [ true, %.invoke1030.i627 ] +.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.i628: ; preds = %.invoke1031.i627, %.split406.us.i.invoke.i663, %.invoke.i1019, %2015, %2014, %2013 + %.sroa.024.3.ph.ph.ph.ph.ph.i629 = phi i1 [ false, %2013 ], [ false, %2014 ], [ false, %2015 ], [ true, %.invoke.i1019 ], [ true, %.split406.us.i.invoke.i663 ], [ true, %.invoke1031.i627 ] + %.sroa.023.2.ph.ph.ph.ph.ph.i630 = phi i1 [ true, %2013 ], [ false, %2014 ], [ false, %2015 ], [ true, %.invoke.i1019 ], [ true, %.split406.us.i.invoke.i663 ], [ true, %.invoke1031.i627 ] + %.sroa.022.1.ph.ph.ph.ph.ph.i631 = phi i1 [ true, %2013 ], [ true, %2014 ], [ false, %2015 ], [ true, %.invoke.i1019 ], [ true, %.split406.us.i.invoke.i663 ], [ true, %.invoke1031.i627 ] %lpad.loopexit.split-lp129.i632 = landingpad { ptr, i32 } cleanup br label %.loopexit.split-lp.i620 @@ -15177,9 +15177,9 @@ _ZN6brotli3enc14block_splitter20BuildBlockHistograms17h450c30cec7ce6203E.exit.i: invoke void @"_ZN4core3ptr65drop_in_place$LT$alloc_stdlib..heap_alloc..WrapBox$LT$f32$GT$$GT$17hf3151b38ab82c61dE"(ptr noalias noundef nonnull align 8 dereferenceable(16) %49) #20 to label %.thread81.thread.thread.i565 unwind label %2722, !noalias !637 -.thread81.thread.thread.i565: ; preds = %2726, %2484, %2024, %.thread81.i573, %.thread4.i564, %.thread81.thread.thread837.i760 - %.sroa.026.19.i566 = phi i1 [ true, %.thread4.i564 ], [ false, %2024 ], [ false, %2484 ], [ %.sroa.026.5.ph.ph.i761, %.thread81.thread.thread837.i760 ], [ true, %2726 ], [ true, %.thread81.i573 ] - %.pn.pn.pn.pn8.i567 = phi { ptr, i32 } [ %1981, %.thread4.i564 ], [ %.pn263.pn.pn.pn.pn.pn.i.i767, %2024 ], [ %.pn263.pn.pn.pn.pn.pn.pn430.i.i765, %2484 ], [ %lpad.thr_comm.i762, %.thread81.thread.thread837.i760 ], [ %.pn.pn.pn15.i569, %2726 ], [ %.pn.pn.pn.i574, %.thread81.i573 ] +.thread81.thread.thread.i565: ; preds = %2726, %2484, %2024, %.thread81.i573, %.thread4.i564, %.thread81.thread.thread838.i760 + %.sroa.026.19.i566 = phi i1 [ true, %.thread4.i564 ], [ false, %2024 ], [ false, %2484 ], [ %.sroa.026.5.ph.ph.i761, %.thread81.thread.thread838.i760 ], [ true, %2726 ], [ true, %.thread81.i573 ] + %.pn.pn.pn.pn8.i567 = phi { ptr, i32 } [ %1981, %.thread4.i564 ], [ %.pn263.pn.pn.pn.pn.pn.i.i767, %2024 ], [ %.pn263.pn.pn.pn.pn.pn.pn430.i.i765, %2484 ], [ %lpad.thr_comm.i762, %.thread81.thread.thread838.i760 ], [ %.pn.pn.pn15.i569, %2726 ], [ %.pn.pn.pn.i574, %.thread81.i573 ] invoke void @"_ZN4core3ptr64drop_in_place$LT$alloc_stdlib..heap_alloc..WrapBox$LT$u8$GT$$GT$17hb6c382cbc1d625feE"(ptr noalias noundef nonnull align 8 dereferenceable(16) %50) #20 to label %1910 unwind label %2722, !noalias !637 diff --git a/bench/postgres/optimized/copyfromparse.ll b/bench/postgres/optimized/copyfromparse.ll index 8e02d543702..5244a5ef870 100644 --- a/bench/postgres/optimized/copyfromparse.ll +++ b/bench/postgres/optimized/copyfromparse.ll @@ -923,21 +923,21 @@ CopyLoadInputBuf.exit._crit_edge.i: ; preds = %CopyLoadInputBuf.ex br i1 %210, label %211, label %232 211: ; preds = %202 - %212 = sext i8 %209 to i32 - %213 = icmp ne i8 %209, 13 - %214 = icmp slt i32 %206, %.1188.i - %215 = trunc nuw i8 %.1180.i to i1 - %216 = or i1 %213, %214 - %or.cond198.i = select i1 %216, i1 true, i1 %215 - br i1 %or.cond198.i, label %217, label %.thread.i.backedge - -217: ; preds = %211 + %212 = icmp ne i8 %209, 13 + %213 = icmp slt i32 %206, %.1188.i + %214 = trunc nuw i8 %.1180.i to i1 + %215 = or i1 %212, %213 + %or.cond198.i = select i1 %215, i1 true, i1 %214 + br i1 %or.cond198.i, label %216, label %.thread.i.backedge + +216: ; preds = %211 + %217 = sext i8 %209 to i32 %218 = trunc nuw i8 %.0171.i to i1 - %219 = icmp eq i32 %.0164.i, %212 + %219 = icmp eq i32 %.0164.i, %217 %or.cond199.i = select i1 %218, i1 %219, i1 false %220 = zext i1 %or.cond199.i to i8 %.3169.i = xor i8 %.0166.i, %220 - %.not.i = icmp eq i32 %.0165.i, %212 + %.not.i = icmp eq i32 %.0165.i, %217 %221 = xor i8 %.3169.i, -1 %222 = select i1 %.not.i, i8 %221, i8 0 %.3174.i = xor i8 %222, %.0171.i @@ -945,11 +945,11 @@ CopyLoadInputBuf.exit._crit_edge.i: ; preds = %CopyLoadInputBuf.ex %223 = trunc i8 %.3174.i to i1 br i1 %223, label %224, label %232 -224: ; preds = %217 +224: ; preds = %216 %225 = load i32, ptr %34, align 8 %226 = icmp eq i32 %225, 1 - %227 = select i1 %226, i32 10, i32 13 - %228 = icmp eq i32 %227, %212 + %227 = select i1 %226, i8 10, i8 13 + %228 = icmp eq i8 %227, %209 br i1 %228, label %229, label %232 229: ; preds = %224 @@ -958,9 +958,9 @@ CopyLoadInputBuf.exit._crit_edge.i: ; preds = %CopyLoadInputBuf.ex store i64 %231, ptr %35, align 8 br label %232 -232: ; preds = %229, %224, %217, %202 - %.2173.i = phi i8 [ 1, %229 ], [ 1, %224 ], [ 0, %217 ], [ %.0171.i, %202 ] - %.2168.i = phi i8 [ %.4170.i, %229 ], [ %.4170.i, %224 ], [ %.4170.i, %217 ], [ %.0166.i, %202 ] +232: ; preds = %229, %224, %216, %202 + %.2173.i = phi i8 [ 1, %229 ], [ 1, %224 ], [ 0, %216 ], [ %.0171.i, %202 ] + %.2168.i = phi i8 [ %.4170.i, %229 ], [ %.4170.i, %224 ], [ %.4170.i, %216 ], [ %.0166.i, %202 ] switch i8 %209, label %.thread.i.backedge [ i8 13, label %233 i8 10, label %267 diff --git a/bench/postgres/optimized/nbtsearch.ll b/bench/postgres/optimized/nbtsearch.ll index 31cf9d4dbe0..78b649252bf 100644 --- a/bench/postgres/optimized/nbtsearch.ll +++ b/bench/postgres/optimized/nbtsearch.ll @@ -564,325 +564,324 @@ define dso_local i32 @_bt_compare(ptr noundef readonly captures(none) %0, ptr no %12 = load i16, ptr %11, align 4 %13 = and i16 %12, 1 %.not = icmp eq i16 %13, 0 - br i1 %.not, label %14, label %21 + br i1 %.not, label %14, label %20 14: ; preds = %4 - %15 = zext i16 %3 to i32 - %16 = getelementptr inbounds nuw i8, ptr %10, i64 4 - %17 = load i32, ptr %16, align 4 - %18 = icmp eq i32 %17, 0 - %19 = select i1 %18, i32 1, i32 2 - %20 = icmp eq i32 %19, %15 - br i1 %20, label %.thread104, label %21 - -21: ; preds = %14, %4 - %22 = getelementptr inbounds nuw i8, ptr %2, i64 24 - %23 = zext i16 %3 to i64 - %24 = add nsw i64 %23, -1 - %25 = getelementptr inbounds [0 x %struct.ItemIdData], ptr %22, i64 0, i64 %24 - %.val = load i32, ptr %25, align 4 - %26 = and i32 %.val, 32767 - %27 = zext nneg i32 %26 to i64 - %28 = getelementptr inbounds nuw i8, ptr %2, i64 %27 - %29 = getelementptr inbounds nuw i8, ptr %28, i64 6 - %30 = load i16, ptr %29, align 2 - %31 = and i16 %30, 8192 - %32 = icmp eq i16 %31, 0 - br i1 %32, label %BTreeTupleIsPivot.exit.thread, label %BTreeTupleIsPivot.exit - -BTreeTupleIsPivot.exit: ; preds = %21 - %33 = getelementptr i8, ptr %28, i64 4 - %.val.i = load i16, ptr %33, align 2 - %34 = and i16 %.val.i, 8192 - %.not.i = icmp eq i16 %34, 0 - br i1 %.not.i, label %35, label %BTreeTupleIsPivot.exit.thread - -35: ; preds = %BTreeTupleIsPivot.exit - %36 = and i16 %.val.i, 4095 - %37 = zext nneg i16 %36 to i32 - br label %43 - -BTreeTupleIsPivot.exit.thread: ; preds = %21, %BTreeTupleIsPivot.exit - %38 = getelementptr inbounds nuw i8, ptr %0, i64 328 - %39 = load ptr, ptr %38, align 8 - %40 = getelementptr inbounds nuw i8, ptr %39, i64 8 - %41 = load i16, ptr %40, align 4 - %42 = sext i16 %41 to i32 - br label %43 - -43: ; preds = %BTreeTupleIsPivot.exit.thread, %35 - %44 = phi i32 [ %37, %35 ], [ %42, %BTreeTupleIsPivot.exit.thread ] - %45 = getelementptr inbounds nuw i8, ptr %1, i64 16 - %46 = load i32, ptr %45, align 8 - %. = tail call i32 @llvm.smin.i32(i32 %44, i32 %46) + %15 = getelementptr inbounds nuw i8, ptr %10, i64 4 + %16 = load i32, ptr %15, align 4 + %17 = icmp eq i32 %16, 0 + %18 = select i1 %17, i16 1, i16 2 + %19 = icmp eq i16 %18, %3 + br i1 %19, label %.thread104, label %20 + +20: ; preds = %14, %4 + %21 = getelementptr inbounds nuw i8, ptr %2, i64 24 + %22 = zext i16 %3 to i64 + %23 = add nsw i64 %22, -1 + %24 = getelementptr inbounds [0 x %struct.ItemIdData], ptr %21, i64 0, i64 %23 + %.val = load i32, ptr %24, align 4 + %25 = and i32 %.val, 32767 + %26 = zext nneg i32 %25 to i64 + %27 = getelementptr inbounds nuw i8, ptr %2, i64 %26 + %28 = getelementptr inbounds nuw i8, ptr %27, i64 6 + %29 = load i16, ptr %28, align 2 + %30 = and i16 %29, 8192 + %31 = icmp eq i16 %30, 0 + br i1 %31, label %BTreeTupleIsPivot.exit.thread, label %BTreeTupleIsPivot.exit + +BTreeTupleIsPivot.exit: ; preds = %20 + %32 = getelementptr i8, ptr %27, i64 4 + %.val.i = load i16, ptr %32, align 2 + %33 = and i16 %.val.i, 8192 + %.not.i = icmp eq i16 %33, 0 + br i1 %.not.i, label %34, label %BTreeTupleIsPivot.exit.thread + +34: ; preds = %BTreeTupleIsPivot.exit + %35 = and i16 %.val.i, 4095 + %36 = zext nneg i16 %35 to i32 + br label %42 + +BTreeTupleIsPivot.exit.thread: ; preds = %20, %BTreeTupleIsPivot.exit + %37 = getelementptr inbounds nuw i8, ptr %0, i64 328 + %38 = load ptr, ptr %37, align 8 + %39 = getelementptr inbounds nuw i8, ptr %38, i64 8 + %40 = load i16, ptr %39, align 4 + %41 = sext i16 %40 to i32 + br label %42 + +42: ; preds = %BTreeTupleIsPivot.exit.thread, %34 + %43 = phi i32 [ %36, %34 ], [ %41, %BTreeTupleIsPivot.exit.thread ] + %44 = getelementptr inbounds nuw i8, ptr %1, i64 16 + %45 = load i32, ptr %44, align 8 + %. = tail call i32 @llvm.smin.i32(i32 %43, i32 %45) %.not70116 = icmp slt i32 %., 1 br i1 %.not70116, label %._crit_edge, label %.lr.ph -.lr.ph: ; preds = %43 - %47 = getelementptr inbounds nuw i8, ptr %1, i64 24 - %48 = getelementptr inbounds nuw i8, ptr %6, i64 24 - %49 = getelementptr inbounds nuw i8, ptr %28, i64 8 - br label %50 - -50: ; preds = %.lr.ph, %.thread96 - %.059118 = phi i32 [ 1, %.lr.ph ], [ %122, %.thread96 ] - %.063117 = phi ptr [ %47, %.lr.ph ], [ %.164101, %.thread96 ] - %51 = getelementptr inbounds nuw i8, ptr %.063117, i64 4 - %52 = load i16, ptr %51, align 4 - %53 = sext i16 %52 to i32 - %.val.i80 = load i16, ptr %29, align 2 - %54 = icmp slt i16 %.val.i80, 0 - %55 = add nsw i32 %53, -1 - br i1 %54, label %89, label %56 +.lr.ph: ; preds = %42 + %46 = getelementptr inbounds nuw i8, ptr %1, i64 24 + %47 = getelementptr inbounds nuw i8, ptr %6, i64 24 + %48 = getelementptr inbounds nuw i8, ptr %27, i64 8 + br label %49 -56: ; preds = %50 - %57 = sext i32 %55 to i64 - %58 = getelementptr inbounds [0 x %struct.CompactAttribute], ptr %48, i64 0, i64 %57 - %59 = load i32, ptr %58, align 4 - %60 = icmp sgt i32 %59, -1 - br i1 %60, label %61, label %87 - -61: ; preds = %56 - %62 = zext nneg i32 %59 to i64 - %63 = getelementptr inbounds nuw i8, ptr %49, i64 %62 - %64 = getelementptr inbounds nuw i8, ptr %58, i64 6 - %65 = load i8, ptr %64, align 2, !range !5, !noundef !6 - %66 = trunc nuw i8 %65 to i1 - br i1 %66, label %67, label %85 - -67: ; preds = %61 - %68 = getelementptr inbounds nuw i8, ptr %58, i64 4 - %69 = load i16, ptr %68, align 4 - switch i16 %69, label %81 [ - i16 1, label %70 - i16 2, label %73 - i16 4, label %76 - i16 8, label %79 +49: ; preds = %.lr.ph, %.thread96 + %.059118 = phi i32 [ 1, %.lr.ph ], [ %121, %.thread96 ] + %.063117 = phi ptr [ %46, %.lr.ph ], [ %.164101, %.thread96 ] + %50 = getelementptr inbounds nuw i8, ptr %.063117, i64 4 + %51 = load i16, ptr %50, align 4 + %52 = sext i16 %51 to i32 + %.val.i80 = load i16, ptr %28, align 2 + %53 = icmp slt i16 %.val.i80, 0 + %54 = add nsw i32 %52, -1 + br i1 %53, label %88, label %55 + +55: ; preds = %49 + %56 = sext i32 %54 to i64 + %57 = getelementptr inbounds [0 x %struct.CompactAttribute], ptr %47, i64 0, i64 %56 + %58 = load i32, ptr %57, align 4 + %59 = icmp sgt i32 %58, -1 + br i1 %59, label %60, label %86 + +60: ; preds = %55 + %61 = zext nneg i32 %58 to i64 + %62 = getelementptr inbounds nuw i8, ptr %48, i64 %61 + %63 = getelementptr inbounds nuw i8, ptr %57, i64 6 + %64 = load i8, ptr %63, align 2, !range !5, !noundef !6 + %65 = trunc nuw i8 %64 to i1 + br i1 %65, label %66, label %84 + +66: ; preds = %60 + %67 = getelementptr inbounds nuw i8, ptr %57, i64 4 + %68 = load i16, ptr %67, align 4 + switch i16 %68, label %80 [ + i16 1, label %69 + i16 2, label %72 + i16 4, label %75 + i16 8, label %78 ] -70: ; preds = %67 - %71 = load i8, ptr %63, align 1 - %72 = sext i8 %71 to i64 +69: ; preds = %66 + %70 = load i8, ptr %62, align 1 + %71 = sext i8 %70 to i64 br label %index_getattr.exit -73: ; preds = %67 - %74 = load i16, ptr %63, align 2 - %75 = sext i16 %74 to i64 +72: ; preds = %66 + %73 = load i16, ptr %62, align 2 + %74 = sext i16 %73 to i64 br label %index_getattr.exit -76: ; preds = %67 - %77 = load i32, ptr %63, align 4 - %78 = sext i32 %77 to i64 +75: ; preds = %66 + %76 = load i32, ptr %62, align 4 + %77 = sext i32 %76 to i64 br label %index_getattr.exit -79: ; preds = %67 - %80 = load i64, ptr %63, align 8 +78: ; preds = %66 + %79 = load i64, ptr %62, align 8 br label %index_getattr.exit -81: ; preds = %67 - %82 = sext i16 %69 to i32 - %83 = tail call zeroext i1 @errstart_cold(i32 noundef 21, ptr noundef null) #8 - tail call void @llvm.assume(i1 %83) - %84 = tail call i32 (ptr, ...) @errmsg_internal(ptr noundef nonnull @.str.6, i32 noundef range(i32 -32768, 32768) %82) #7 +80: ; preds = %66 + %81 = sext i16 %68 to i32 + %82 = tail call zeroext i1 @errstart_cold(i32 noundef 21, ptr noundef null) #8 + tail call void @llvm.assume(i1 %82) + %83 = tail call i32 (ptr, ...) @errmsg_internal(ptr noundef nonnull @.str.6, i32 noundef range(i32 -32768, 32768) %81) #7 tail call void @errfinish(ptr noundef nonnull @.str.7, i32 noundef 70, ptr noundef nonnull @__func__.fetch_att) #7 unreachable -85: ; preds = %61 - %86 = ptrtoint ptr %63 to i64 +84: ; preds = %60 + %85 = ptrtoint ptr %62 to i64 br label %index_getattr.exit -87: ; preds = %56 - %88 = tail call i64 @nocache_index_getattr(ptr noundef nonnull %28, i32 noundef range(i32 -32768, 32768) %53, ptr noundef nonnull %6) #7 +86: ; preds = %55 + %87 = tail call i64 @nocache_index_getattr(ptr noundef nonnull %27, i32 noundef range(i32 -32768, 32768) %52, ptr noundef nonnull %6) #7 br label %index_getattr.exit -89: ; preds = %50 - %90 = ashr i32 %55, 3 - %91 = sext i32 %90 to i64 - %92 = getelementptr inbounds i8, ptr %49, i64 %91 - %93 = load i8, ptr %92, align 1 - %94 = zext i8 %93 to i32 - %95 = and i32 %55, 7 - %96 = shl nuw nsw i32 1, %95 - %97 = and i32 %96, %94 - %.not.i19.i = icmp eq i32 %97, 0 - br i1 %.not.i19.i, label %index_getattr.exit.thread, label %98 - -98: ; preds = %89 - %99 = tail call i64 @nocache_index_getattr(ptr noundef nonnull %28, i32 noundef range(i32 -32768, 32768) %53, ptr noundef %6) #7 +88: ; preds = %49 + %89 = ashr i32 %54, 3 + %90 = sext i32 %89 to i64 + %91 = getelementptr inbounds i8, ptr %48, i64 %90 + %92 = load i8, ptr %91, align 1 + %93 = zext i8 %92 to i32 + %94 = and i32 %54, 7 + %95 = shl nuw nsw i32 1, %94 + %96 = and i32 %95, %93 + %.not.i19.i = icmp eq i32 %96, 0 + br i1 %.not.i19.i, label %index_getattr.exit.thread, label %97 + +97: ; preds = %88 + %98 = tail call i64 @nocache_index_getattr(ptr noundef nonnull %27, i32 noundef range(i32 -32768, 32768) %52, ptr noundef %6) #7 br label %index_getattr.exit -index_getattr.exit: ; preds = %70, %73, %76, %79, %85, %87, %98 - %.1.i = phi i64 [ %99, %98 ], [ %72, %70 ], [ %75, %73 ], [ %78, %76 ], [ %80, %79 ], [ %86, %85 ], [ %88, %87 ] - %100 = load i32, ptr %.063117, align 8 - %101 = and i32 %100, 1 - %.not71 = icmp eq i32 %101, 0 - br i1 %.not71, label %108, label %104 - -index_getattr.exit.thread: ; preds = %89 - %102 = load i32, ptr %.063117, align 8 - %103 = and i32 %102, 1 - %.not71125 = icmp eq i32 %103, 0 - br i1 %.not71125, label %106, label %.thread96 - -104: ; preds = %index_getattr.exit - %105 = and i32 %100, 33554432 - %.not74 = icmp eq i32 %105, 0 +index_getattr.exit: ; preds = %69, %72, %75, %78, %84, %86, %97 + %.1.i = phi i64 [ %98, %97 ], [ %71, %69 ], [ %74, %72 ], [ %77, %75 ], [ %79, %78 ], [ %85, %84 ], [ %87, %86 ] + %99 = load i32, ptr %.063117, align 8 + %100 = and i32 %99, 1 + %.not71 = icmp eq i32 %100, 0 + br i1 %.not71, label %107, label %103 + +index_getattr.exit.thread: ; preds = %88 + %101 = load i32, ptr %.063117, align 8 + %102 = and i32 %101, 1 + %.not71125 = icmp eq i32 %102, 0 + br i1 %.not71125, label %105, label %.thread96 + +103: ; preds = %index_getattr.exit + %104 = and i32 %99, 33554432 + %.not74 = icmp eq i32 %104, 0 %.76 = select i1 %.not74, i32 1, i32 -1 br label %.thread104 -106: ; preds = %index_getattr.exit.thread - %107 = and i32 %102, 33554432 - %.not73 = icmp eq i32 %107, 0 +105: ; preds = %index_getattr.exit.thread + %106 = and i32 %101, 33554432 + %.not73 = icmp eq i32 %106, 0 %.77 = select i1 %.not73, i32 -1, i32 1 br label %.thread104 -108: ; preds = %index_getattr.exit - %109 = getelementptr inbounds nuw i8, ptr %.063117, i64 16 - %110 = getelementptr inbounds nuw i8, ptr %.063117, i64 12 - %111 = load i32, ptr %110, align 4 - %112 = getelementptr inbounds nuw i8, ptr %.063117, i64 64 - %113 = load i64, ptr %112, align 8 - %114 = tail call i64 @FunctionCall2Coll(ptr noundef nonnull %109, i32 noundef %111, i64 noundef %.1.i, i64 noundef %113) #7 - %115 = trunc i64 %114 to i32 - %116 = load i32, ptr %.063117, align 8 - %117 = and i32 %116, 16777216 - %.not72 = icmp eq i32 %117, 0 - br i1 %.not72, label %118, label %121 - -118: ; preds = %108 - %119 = icmp slt i32 %115, 0 - %120 = sub nsw i32 0, %115 - br i1 %119, label %.thread104, label %121 - -121: ; preds = %118, %108 - %.062 = phi i32 [ %115, %108 ], [ %120, %118 ] +107: ; preds = %index_getattr.exit + %108 = getelementptr inbounds nuw i8, ptr %.063117, i64 16 + %109 = getelementptr inbounds nuw i8, ptr %.063117, i64 12 + %110 = load i32, ptr %109, align 4 + %111 = getelementptr inbounds nuw i8, ptr %.063117, i64 64 + %112 = load i64, ptr %111, align 8 + %113 = tail call i64 @FunctionCall2Coll(ptr noundef nonnull %108, i32 noundef %110, i64 noundef %.1.i, i64 noundef %112) #7 + %114 = trunc i64 %113 to i32 + %115 = load i32, ptr %.063117, align 8 + %116 = and i32 %115, 16777216 + %.not72 = icmp eq i32 %116, 0 + br i1 %.not72, label %117, label %120 + +117: ; preds = %107 + %118 = icmp slt i32 %114, 0 + %119 = sub nsw i32 0, %114 + br i1 %118, label %.thread104, label %120 + +120: ; preds = %117, %107 + %.062 = phi i32 [ %114, %107 ], [ %119, %117 ] %.not75 = icmp eq i32 %.062, 0 br i1 %.not75, label %.thread96, label %.thread104 -.thread96: ; preds = %index_getattr.exit.thread, %121 +.thread96: ; preds = %index_getattr.exit.thread, %120 %.164101 = getelementptr inbounds nuw i8, ptr %.063117, i64 72 - %122 = add nuw nsw i32 %.059118, 1 + %121 = add nuw nsw i32 %.059118, 1 %exitcond.not = icmp eq i32 %.059118, %. - br i1 %exitcond.not, label %._crit_edge.loopexit, label %50, !llvm.loop !11 + br i1 %exitcond.not, label %._crit_edge.loopexit, label %49, !llvm.loop !11 ._crit_edge.loopexit: ; preds = %.thread96 - %.pre = load i32, ptr %45, align 8 + %.pre = load i32, ptr %44, align 8 br label %._crit_edge -._crit_edge: ; preds = %._crit_edge.loopexit, %43 - %123 = phi i32 [ %.pre, %._crit_edge.loopexit ], [ %46, %43 ] - %124 = icmp sgt i32 %123, %44 - br i1 %124, label %.thread104, label %125 - -125: ; preds = %._crit_edge - %126 = load i16, ptr %29, align 2 - %127 = and i16 %126, 8192 - %128 = icmp eq i16 %127, 0 - br i1 %128, label %BTreeTupleGetHeapTID.exit, label %BTreeTupleIsPivot.exit.i - -BTreeTupleIsPivot.exit.i: ; preds = %125 - %129 = getelementptr i8, ptr %28, i64 4 - %.val.i.i = load i16, ptr %129, align 2 - %130 = and i16 %.val.i.i, 8192 - %.not.i.i = icmp eq i16 %130, 0 - br i1 %.not.i.i, label %131, label %BTreeTupleIsPosting.exit.i - -131: ; preds = %BTreeTupleIsPivot.exit.i - %132 = and i16 %.val.i.i, 4096 - %.not.i82 = icmp eq i16 %132, 0 - br i1 %.not.i82, label %BTreeTupleGetHeapTID.exit.thread, label %133 - -133: ; preds = %131 - %134 = and i16 %126, 8191 - %135 = zext nneg i16 %134 to i64 - %136 = getelementptr inbounds nuw i8, ptr %28, i64 %135 - %137 = getelementptr inbounds i8, ptr %136, i64 -6 +._crit_edge: ; preds = %._crit_edge.loopexit, %42 + %122 = phi i32 [ %.pre, %._crit_edge.loopexit ], [ %45, %42 ] + %123 = icmp sgt i32 %122, %43 + br i1 %123, label %.thread104, label %124 + +124: ; preds = %._crit_edge + %125 = load i16, ptr %28, align 2 + %126 = and i16 %125, 8192 + %127 = icmp eq i16 %126, 0 + br i1 %127, label %BTreeTupleGetHeapTID.exit, label %BTreeTupleIsPivot.exit.i + +BTreeTupleIsPivot.exit.i: ; preds = %124 + %128 = getelementptr i8, ptr %27, i64 4 + %.val.i.i = load i16, ptr %128, align 2 + %129 = and i16 %.val.i.i, 8192 + %.not.i.i = icmp eq i16 %129, 0 + br i1 %.not.i.i, label %130, label %BTreeTupleIsPosting.exit.i + +130: ; preds = %BTreeTupleIsPivot.exit.i + %131 = and i16 %.val.i.i, 4096 + %.not.i82 = icmp eq i16 %131, 0 + br i1 %.not.i82, label %BTreeTupleGetHeapTID.exit.thread, label %132 + +132: ; preds = %130 + %133 = and i16 %125, 8191 + %134 = zext nneg i16 %133 to i64 + %135 = getelementptr inbounds nuw i8, ptr %27, i64 %134 + %136 = getelementptr inbounds i8, ptr %135, i64 -6 br label %BTreeTupleGetHeapTID.exit BTreeTupleIsPosting.exit.i: ; preds = %BTreeTupleIsPivot.exit.i - %.val.i11.i = load i16, ptr %28, align 2 - %138 = getelementptr i8, ptr %28, i64 2 - %.val2.i.i = load i16, ptr %138, align 2 - %139 = zext i16 %.val.i11.i to i64 - %140 = shl nuw nsw i64 %139, 16 - %141 = zext i16 %.val2.i.i to i64 - %142 = getelementptr inbounds nuw i8, ptr %28, i64 %140 - %143 = getelementptr inbounds nuw i8, ptr %142, i64 %141 + %.val.i11.i = load i16, ptr %27, align 2 + %137 = getelementptr i8, ptr %27, i64 2 + %.val2.i.i = load i16, ptr %137, align 2 + %138 = zext i16 %.val.i11.i to i64 + %139 = shl nuw nsw i64 %138, 16 + %140 = zext i16 %.val2.i.i to i64 + %141 = getelementptr inbounds nuw i8, ptr %27, i64 %139 + %142 = getelementptr inbounds nuw i8, ptr %141, i64 %140 br label %BTreeTupleGetHeapTID.exit -BTreeTupleGetHeapTID.exit: ; preds = %125, %133, %BTreeTupleIsPosting.exit.i - %.0.i81 = phi ptr [ %137, %133 ], [ %143, %BTreeTupleIsPosting.exit.i ], [ %28, %125 ] - %144 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %145 = load ptr, ptr %144, align 8 - %146 = icmp eq ptr %145, null - br i1 %146, label %150, label %161 +BTreeTupleGetHeapTID.exit: ; preds = %124, %132, %BTreeTupleIsPosting.exit.i + %.0.i81 = phi ptr [ %136, %132 ], [ %142, %BTreeTupleIsPosting.exit.i ], [ %27, %124 ] + %143 = getelementptr inbounds nuw i8, ptr %1, i64 8 + %144 = load ptr, ptr %143, align 8 + %145 = icmp eq ptr %144, null + br i1 %145, label %149, label %160 -BTreeTupleGetHeapTID.exit.thread: ; preds = %131 - %147 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %148 = load ptr, ptr %147, align 8 - %149 = icmp eq ptr %148, null - br i1 %149, label %150, label %.thread104 +BTreeTupleGetHeapTID.exit.thread: ; preds = %130 + %146 = getelementptr inbounds nuw i8, ptr %1, i64 8 + %147 = load ptr, ptr %146, align 8 + %148 = icmp eq ptr %147, null + br i1 %148, label %149, label %.thread104 -150: ; preds = %BTreeTupleGetHeapTID.exit.thread, %BTreeTupleGetHeapTID.exit +149: ; preds = %BTreeTupleGetHeapTID.exit.thread, %BTreeTupleGetHeapTID.exit %.0.i81108 = phi ptr [ null, %BTreeTupleGetHeapTID.exit.thread ], [ %.0.i81, %BTreeTupleGetHeapTID.exit ] - %151 = getelementptr inbounds nuw i8, ptr %1, i64 4 - %152 = load i8, ptr %151, align 4, !range !5, !noundef !6 - %153 = trunc nuw i8 %152 to i1 - br i1 %153, label %160, label %154 - -154: ; preds = %150 - %155 = icmp eq i32 %123, %44 - %156 = icmp eq ptr %.0.i81108, null - %or.cond = select i1 %155, i1 %156, i1 false - br i1 %or.cond, label %157, label %160 - -157: ; preds = %154 - %158 = load i8, ptr %1, align 8, !range !5, !noundef !6 - %159 = trunc nuw i8 %158 to i1 - br i1 %159, label %.thread104, label %160 - -160: ; preds = %157, %154, %150 + %150 = getelementptr inbounds nuw i8, ptr %1, i64 4 + %151 = load i8, ptr %150, align 4, !range !5, !noundef !6 + %152 = trunc nuw i8 %151 to i1 + br i1 %152, label %159, label %153 + +153: ; preds = %149 + %154 = icmp eq i32 %122, %43 + %155 = icmp eq ptr %.0.i81108, null + %or.cond = select i1 %154, i1 %155, i1 false + br i1 %or.cond, label %156, label %159 + +156: ; preds = %153 + %157 = load i8, ptr %1, align 8, !range !5, !noundef !6 + %158 = trunc nuw i8 %157 to i1 + br i1 %158, label %.thread104, label %159 + +159: ; preds = %156, %153, %149 br label %.thread104 -161: ; preds = %BTreeTupleGetHeapTID.exit - %162 = tail call i32 @ItemPointerCompare(ptr noundef nonnull %145, ptr noundef nonnull %.0.i81) #7 - %163 = icmp slt i32 %162, 1 - br i1 %163, label %.thread104, label %164 - -164: ; preds = %161 - %165 = load i16, ptr %29, align 2 - %166 = and i16 %165, 8192 - %167 = icmp eq i16 %166, 0 - br i1 %167, label %.thread104, label %BTreeTupleIsPosting.exit - -BTreeTupleIsPosting.exit: ; preds = %164 - %168 = getelementptr i8, ptr %28, i64 4 - %.val.i83 = load i16, ptr %168, align 2 - %169 = and i16 %.val.i83, 8192 - %.not112 = icmp eq i16 %169, 0 +160: ; preds = %BTreeTupleGetHeapTID.exit + %161 = tail call i32 @ItemPointerCompare(ptr noundef nonnull %144, ptr noundef nonnull %.0.i81) #7 + %162 = icmp slt i32 %161, 1 + br i1 %162, label %.thread104, label %163 + +163: ; preds = %160 + %164 = load i16, ptr %28, align 2 + %165 = and i16 %164, 8192 + %166 = icmp eq i16 %165, 0 + br i1 %166, label %.thread104, label %BTreeTupleIsPosting.exit + +BTreeTupleIsPosting.exit: ; preds = %163 + %167 = getelementptr i8, ptr %27, i64 4 + %.val.i83 = load i16, ptr %167, align 2 + %168 = and i16 %.val.i83, 8192 + %.not112 = icmp eq i16 %168, 0 br i1 %.not112, label %.thread104, label %BTreeTupleGetMaxHeapTID.exit BTreeTupleGetMaxHeapTID.exit: ; preds = %BTreeTupleIsPosting.exit - %170 = load ptr, ptr %144, align 8 - %.val.i.i.i = load i16, ptr %28, align 2 - %171 = zext i16 %.val.i.i.i to i64 - %172 = shl nuw nsw i64 %171, 16 - %173 = getelementptr inbounds nuw i8, ptr %28, i64 %172 - %174 = getelementptr i8, ptr %28, i64 2 - %.val2.i.i.i = load i16, ptr %174, align 2 - %175 = zext i16 %.val2.i.i.i to i64 - %176 = getelementptr inbounds nuw i8, ptr %173, i64 %175 - %177 = and i16 %.val.i83, 4095 - %178 = zext nneg i16 %177 to i64 - %179 = getelementptr %struct.ItemPointerData, ptr %176, i64 %178 - %180 = getelementptr i8, ptr %179, i64 -6 - %181 = tail call i32 @ItemPointerCompare(ptr noundef %170, ptr noundef %180) #7 - %182 = icmp sgt i32 %181, 0 - %.78 = zext i1 %182 to i32 + %169 = load ptr, ptr %143, align 8 + %.val.i.i.i = load i16, ptr %27, align 2 + %170 = zext i16 %.val.i.i.i to i64 + %171 = shl nuw nsw i64 %170, 16 + %172 = getelementptr inbounds nuw i8, ptr %27, i64 %171 + %173 = getelementptr i8, ptr %27, i64 2 + %.val2.i.i.i = load i16, ptr %173, align 2 + %174 = zext i16 %.val2.i.i.i to i64 + %175 = getelementptr inbounds nuw i8, ptr %172, i64 %174 + %176 = and i16 %.val.i83, 4095 + %177 = zext nneg i16 %176 to i64 + %178 = getelementptr %struct.ItemPointerData, ptr %175, i64 %177 + %179 = getelementptr i8, ptr %178, i64 -6 + %180 = tail call i32 @ItemPointerCompare(ptr noundef %169, ptr noundef %179) #7 + %181 = icmp sgt i32 %180, 0 + %.78 = zext i1 %181 to i32 br label %.thread104 -.thread104: ; preds = %118, %121, %164, %BTreeTupleGetHeapTID.exit.thread, %106, %104, %BTreeTupleGetMaxHeapTID.exit, %161, %BTreeTupleIsPosting.exit, %157, %._crit_edge, %14, %160 - %.0 = phi i32 [ 0, %160 ], [ 1, %14 ], [ 1, %._crit_edge ], [ 1, %157 ], [ %162, %BTreeTupleIsPosting.exit ], [ %162, %161 ], [ %.78, %BTreeTupleGetMaxHeapTID.exit ], [ %.77, %106 ], [ %.76, %104 ], [ 1, %BTreeTupleGetHeapTID.exit.thread ], [ %162, %164 ], [ 1, %118 ], [ %.062, %121 ] +.thread104: ; preds = %117, %120, %163, %BTreeTupleGetHeapTID.exit.thread, %105, %103, %BTreeTupleGetMaxHeapTID.exit, %160, %BTreeTupleIsPosting.exit, %156, %._crit_edge, %14, %159 + %.0 = phi i32 [ 0, %159 ], [ 1, %14 ], [ 1, %._crit_edge ], [ 1, %156 ], [ %161, %BTreeTupleIsPosting.exit ], [ %161, %160 ], [ %.78, %BTreeTupleGetMaxHeapTID.exit ], [ %.77, %105 ], [ %.76, %103 ], [ 1, %BTreeTupleGetHeapTID.exit.thread ], [ %161, %163 ], [ 1, %117 ], [ %.062, %120 ] ret i32 %.0 } diff --git a/bench/postgres/optimized/nbtutils.ll b/bench/postgres/optimized/nbtutils.ll index 6444c2d9607..d4b0b826b07 100644 --- a/bench/postgres/optimized/nbtutils.ll +++ b/bench/postgres/optimized/nbtutils.ll @@ -2408,7 +2408,7 @@ BufferGetPage.exit91: ; preds = %30, %36 46: ; preds = %BufferGetPage.exit91 %47 = load ptr, ptr %8, align 8 tail call void @_bt_relbuf(ptr noundef %47, i32 noundef %28) #14 - br label %129 + br label %128 BufferGetPage.exit: ; preds = %.thread, %19, %13 %.0 = phi ptr [ %18, %13 ], [ %24, %19 ], [ %.0.i.i90, %.thread ] @@ -2433,7 +2433,7 @@ BufferGetPage.exit: ; preds = %.thread, %19, %13 %61 = icmp eq i32 %60, 0 %62 = getelementptr inbounds nuw i8, ptr %3, i64 48 %63 = getelementptr inbounds nuw i8, ptr %3, i64 136 - %64 = select i1 %61, i32 1, i32 2 + %64 = select i1 %61, i16 1, i16 2 %65 = getelementptr inbounds nuw i8, ptr %.0, i64 24 %wide.trip.count135 = zext nneg i32 %5 to i64 br label %.outer @@ -2452,121 +2452,120 @@ BufferGetPage.exit: ; preds = %.thread, %19, %13 %71 = getelementptr inbounds [1358 x %struct.BTScanPosItem], ptr %63, i64 0, i64 %70 %72 = getelementptr inbounds nuw i8, ptr %71, i64 6 %73 = load i16, ptr %72, align 2 - %74 = zext i16 %73 to i32 - %75 = icmp samesign ugt i32 %64, %74 + %74 = icmp ugt i16 %64, %73 %.not120 = icmp ugt i16 %73, %.0.i - %or.cond = select i1 %75, i1 true, i1 %.not120 + %or.cond = select i1 %74, i1 true, i1 %.not120 %.pre = add nuw nsw i64 %indvars.iv133, 1 br i1 %or.cond, label %.loopexit, label %.lr.ph123 .lr.ph123: ; preds = %66 - %76 = trunc nuw nsw i64 %.pre to i32 - br label %77 - -77: ; preds = %.lr.ph123, %119 - %.075122 = phi i16 [ %73, %.lr.ph123 ], [ %120, %119 ] - %.077121 = phi ptr [ %71, %.lr.ph123 ], [ %.5102, %119 ] - %78 = zext i16 %.075122 to i64 - %79 = add nsw i64 %78, -1 - %80 = getelementptr inbounds [0 x %struct.ItemIdData], ptr %65, i64 0, i64 %79 - %.val = load i32, ptr %80, align 4 - %81 = and i32 %.val, 32767 - %82 = zext nneg i32 %81 to i64 - %83 = getelementptr inbounds nuw i8, ptr %.0, i64 %82 - %84 = getelementptr inbounds nuw i8, ptr %83, i64 6 - %85 = load i16, ptr %84, align 2 - %86 = and i16 %85, 8192 - %87 = icmp eq i16 %86, 0 - br i1 %87, label %BTreeTupleIsPosting.exit.thread, label %BTreeTupleIsPosting.exit - -BTreeTupleIsPosting.exit: ; preds = %77 - %88 = getelementptr i8, ptr %83, i64 4 - %.val.i = load i16, ptr %88, align 2 - %89 = and i16 %.val.i, 8192 - %.not111 = icmp eq i16 %89, 0 - br i1 %.not111, label %BTreeTupleIsPosting.exit.thread, label %90 - -90: ; preds = %BTreeTupleIsPosting.exit - %91 = and i16 %.val.i, 4095 - %92 = zext nneg i16 %91 to i32 - %.not129 = icmp eq i16 %91, 0 + %75 = trunc nuw nsw i64 %.pre to i32 + br label %76 + +76: ; preds = %.lr.ph123, %118 + %.075122 = phi i16 [ %73, %.lr.ph123 ], [ %119, %118 ] + %.077121 = phi ptr [ %71, %.lr.ph123 ], [ %.5102, %118 ] + %77 = zext i16 %.075122 to i64 + %78 = add nsw i64 %77, -1 + %79 = getelementptr inbounds [0 x %struct.ItemIdData], ptr %65, i64 0, i64 %78 + %.val = load i32, ptr %79, align 4 + %80 = and i32 %.val, 32767 + %81 = zext nneg i32 %80 to i64 + %82 = getelementptr inbounds nuw i8, ptr %.0, i64 %81 + %83 = getelementptr inbounds nuw i8, ptr %82, i64 6 + %84 = load i16, ptr %83, align 2 + %85 = and i16 %84, 8192 + %86 = icmp eq i16 %85, 0 + br i1 %86, label %BTreeTupleIsPosting.exit.thread, label %BTreeTupleIsPosting.exit + +BTreeTupleIsPosting.exit: ; preds = %76 + %87 = getelementptr i8, ptr %82, i64 4 + %.val.i = load i16, ptr %87, align 2 + %88 = and i16 %.val.i, 8192 + %.not111 = icmp eq i16 %88, 0 + br i1 %.not111, label %BTreeTupleIsPosting.exit.thread, label %89 + +89: ; preds = %BTreeTupleIsPosting.exit + %90 = and i16 %.val.i, 4095 + %91 = zext nneg i16 %90 to i32 + %.not129 = icmp eq i16 %90, 0 br i1 %.not129, label %._crit_edge, label %.lr.ph -.lr.ph: ; preds = %90 - %93 = getelementptr i8, ptr %83, i64 2 - %wide.trip.count = zext nneg i16 %91 to i64 - br label %94 - -94: ; preds = %.lr.ph, %112 - %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %112 ] - %.069114 = phi i32 [ %76, %.lr.ph ], [ %.1.ph, %112 ] - %.178113 = phi ptr [ %.077121, %.lr.ph ], [ %.380.ph, %112 ] - %.val.i.i = load i16, ptr %83, align 2 - %.val2.i.i = load i16, ptr %93, align 2 - %95 = zext i16 %.val.i.i to i64 - %96 = shl nuw nsw i64 %95, 16 - %97 = zext i16 %.val2.i.i to i64 - %98 = getelementptr inbounds nuw i8, ptr %83, i64 %96 - %99 = getelementptr inbounds nuw i8, ptr %98, i64 %97 - %100 = getelementptr inbounds nuw %struct.ItemPointerData, ptr %99, i64 %indvars.iv - %101 = tail call zeroext i1 @ItemPointerEquals(ptr noundef nonnull %100, ptr noundef %.178113) #14 - br i1 %101, label %102, label %._crit_edge.loopexit - -102: ; preds = %94 - %103 = icmp slt i32 %.069114, %5 - br i1 %103, label %104, label %112 - -104: ; preds = %102 - %105 = load ptr, ptr %62, align 8 - %106 = add nsw i32 %.069114, 1 - %107 = sext i32 %.069114 to i64 - %108 = getelementptr inbounds i32, ptr %105, i64 %107 - %109 = load i32, ptr %108, align 4 - %110 = sext i32 %109 to i64 - %111 = getelementptr inbounds [1358 x %struct.BTScanPosItem], ptr %63, i64 0, i64 %110 - br label %112 - -112: ; preds = %104, %102 - %.380.ph = phi ptr [ %.178113, %102 ], [ %111, %104 ] - %.1.ph = phi i32 [ %.069114, %102 ], [ %106, %104 ] +.lr.ph: ; preds = %89 + %92 = getelementptr i8, ptr %82, i64 2 + %wide.trip.count = zext nneg i16 %90 to i64 + br label %93 + +93: ; preds = %.lr.ph, %111 + %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %111 ] + %.069114 = phi i32 [ %75, %.lr.ph ], [ %.1.ph, %111 ] + %.178113 = phi ptr [ %.077121, %.lr.ph ], [ %.380.ph, %111 ] + %.val.i.i = load i16, ptr %82, align 2 + %.val2.i.i = load i16, ptr %92, align 2 + %94 = zext i16 %.val.i.i to i64 + %95 = shl nuw nsw i64 %94, 16 + %96 = zext i16 %.val2.i.i to i64 + %97 = getelementptr inbounds nuw i8, ptr %82, i64 %95 + %98 = getelementptr inbounds nuw i8, ptr %97, i64 %96 + %99 = getelementptr inbounds nuw %struct.ItemPointerData, ptr %98, i64 %indvars.iv + %100 = tail call zeroext i1 @ItemPointerEquals(ptr noundef nonnull %99, ptr noundef %.178113) #14 + br i1 %100, label %101, label %._crit_edge.loopexit + +101: ; preds = %93 + %102 = icmp slt i32 %.069114, %5 + br i1 %102, label %103, label %111 + +103: ; preds = %101 + %104 = load ptr, ptr %62, align 8 + %105 = add nsw i32 %.069114, 1 + %106 = sext i32 %.069114 to i64 + %107 = getelementptr inbounds i32, ptr %104, i64 %106 + %108 = load i32, ptr %107, align 4 + %109 = sext i32 %108 to i64 + %110 = getelementptr inbounds [1358 x %struct.BTScanPosItem], ptr %63, i64 0, i64 %109 + br label %111 + +111: ; preds = %103, %101 + %.380.ph = phi ptr [ %.178113, %101 ], [ %110, %103 ] + %.1.ph = phi i32 [ %.069114, %101 ], [ %105, %103 ] %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 %._crit_edge.thread, label %94, !llvm.loop !17 + br i1 %exitcond.not, label %._crit_edge.thread, label %93, !llvm.loop !17 -._crit_edge.loopexit: ; preds = %94 - %113 = trunc nuw nsw i64 %indvars.iv to i32 +._crit_edge.loopexit: ; preds = %93 + %112 = trunc nuw nsw i64 %indvars.iv to i32 br label %._crit_edge -._crit_edge: ; preds = %._crit_edge.loopexit, %90 - %.178.lcssa = phi ptr [ %.077121, %90 ], [ %.178113, %._crit_edge.loopexit ] - %.067.lcssa = phi i32 [ 0, %90 ], [ %113, %._crit_edge.loopexit ] - %114 = icmp eq i32 %.067.lcssa, %92 - br i1 %114, label %._crit_edge.thread, label %119 +._crit_edge: ; preds = %._crit_edge.loopexit, %89 + %.178.lcssa = phi ptr [ %.077121, %89 ], [ %.178113, %._crit_edge.loopexit ] + %.067.lcssa = phi i32 [ 0, %89 ], [ %112, %._crit_edge.loopexit ] + %113 = icmp eq i32 %.067.lcssa, %91 + br i1 %113, label %._crit_edge.thread, label %118 -BTreeTupleIsPosting.exit.thread: ; preds = %77, %BTreeTupleIsPosting.exit - %115 = tail call zeroext i1 @ItemPointerEquals(ptr noundef nonnull %83, ptr noundef %.077121) #14 - br i1 %115, label %._crit_edge.thread, label %119 +BTreeTupleIsPosting.exit.thread: ; preds = %76, %BTreeTupleIsPosting.exit + %114 = tail call zeroext i1 @ItemPointerEquals(ptr noundef nonnull %82, ptr noundef %.077121) #14 + br i1 %114, label %._crit_edge.thread, label %118 -._crit_edge.thread: ; preds = %112, %._crit_edge, %BTreeTupleIsPosting.exit.thread - %.5103 = phi ptr [ %.178.lcssa, %._crit_edge ], [ %.077121, %BTreeTupleIsPosting.exit.thread ], [ %.380.ph, %112 ] - %116 = load i32, ptr %80, align 4 - %117 = and i32 %116, 98304 - %118 = icmp eq i32 %117, 98304 - br i1 %118, label %119, label %.loopexit.thread +._crit_edge.thread: ; preds = %111, %._crit_edge, %BTreeTupleIsPosting.exit.thread + %.5103 = phi ptr [ %.178.lcssa, %._crit_edge ], [ %.077121, %BTreeTupleIsPosting.exit.thread ], [ %.380.ph, %111 ] + %115 = load i32, ptr %79, align 4 + %116 = and i32 %115, 98304 + %117 = icmp eq i32 %116, 98304 + br i1 %117, label %118, label %.loopexit.thread -119: ; preds = %BTreeTupleIsPosting.exit.thread, %._crit_edge.thread, %._crit_edge +118: ; preds = %BTreeTupleIsPosting.exit.thread, %._crit_edge.thread, %._crit_edge %.5102 = phi ptr [ %.178.lcssa, %._crit_edge ], [ %.5103, %._crit_edge.thread ], [ %.077121, %BTreeTupleIsPosting.exit.thread ] - %120 = add i16 %.075122, 1 - %.not = icmp ugt i16 %120, %.0.i - br i1 %.not, label %.loopexit, label %77 + %119 = add i16 %.075122, 1 + %.not = icmp ugt i16 %119, %.0.i + br i1 %.not, label %.loopexit, label %76 -.loopexit: ; preds = %119, %66 +.loopexit: ; preds = %118, %66 %exitcond136.not = icmp eq i64 %.pre, %wide.trip.count135 br i1 %exitcond136.not, label %._crit_edge127, label %66, !llvm.loop !18 .loopexit.thread: ; preds = %._crit_edge.thread - %121 = or i32 %116, 98304 - store i32 %121, ptr %80, align 4 + %120 = or i32 %115, 98304 + store i32 %120, ptr %79, align 4 %exitcond136.not141 = icmp eq i64 %.pre, %wide.trip.count135 br i1 %exitcond136.not141, label %._crit_edge127.thread, label %.outer, !llvm.loop !18 @@ -2574,22 +2573,22 @@ BTreeTupleIsPosting.exit.thread: ; preds = %77, %BTreeTupleIsPo br i1 %.072124.ph, label %._crit_edge127.thread, label %.critedge ._crit_edge127.thread: ; preds = %.loopexit.thread, %._crit_edge127 - %122 = getelementptr inbounds nuw i8, ptr %51, i64 12 - %123 = load i16, ptr %122, align 4 - %124 = or i16 %123, 64 - store i16 %124, ptr %122, align 4 - %125 = load i32, ptr %6, align 8 - tail call void @MarkBufferDirtyHint(i32 noundef %125, i1 noundef zeroext true) #14 + %121 = getelementptr inbounds nuw i8, ptr %51, i64 12 + %122 = load i16, ptr %121, align 4 + %123 = or i16 %122, 64 + store i16 %123, ptr %121, align 4 + %124 = load i32, ptr %6, align 8 + tail call void @MarkBufferDirtyHint(i32 noundef %124, i1 noundef zeroext true) #14 br label %.critedge .critedge: ; preds = %BufferGetPage.exit, %._crit_edge127.thread, %._crit_edge127 - %126 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %127 = load ptr, ptr %126, align 8 - %128 = load i32, ptr %6, align 8 - tail call void @_bt_unlockbuf(ptr noundef %127, i32 noundef %128) #14 - br label %129 + %125 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %126 = load ptr, ptr %125, align 8 + %127 = load i32, ptr %6, align 8 + tail call void @_bt_unlockbuf(ptr noundef %126, i32 noundef %127) #14 + br label %128 -129: ; preds = %46, %.critedge +128: ; preds = %46, %.critedge ret void } @@ -3281,90 +3280,89 @@ BTreeTupleIsPosting.exit61.thread: ; preds = %.thread, %.thread90 %39 = sext i16 %10 to i32 %40 = and i16 %16, 1 %.not47 = icmp eq i16 %40, 0 - %41 = zext i16 %3 to i32 - %42 = getelementptr inbounds nuw i8, ptr %14, i64 4 - %43 = load i32, ptr %42, align 4 - %44 = icmp eq i32 %43, 0 - %45 = select i1 %44, i32 1, i32 2 - br i1 %.not47, label %55, label %46 + %41 = getelementptr inbounds nuw i8, ptr %14, i64 4 + %42 = load i32, ptr %41, align 4 + %43 = icmp eq i32 %42, 0 + %44 = select i1 %43, i16 1, i16 2 + br i1 %.not47, label %54, label %45 -46: ; preds = %BTreeTupleIsPosting.exit61.thread - %.not48 = icmp samesign ugt i32 %45, %41 - br i1 %.not48, label %52, label %47 +45: ; preds = %BTreeTupleIsPosting.exit61.thread + %.not48 = icmp ugt i16 %44, %3 + br i1 %.not48, label %51, label %46 -47: ; preds = %46 +46: ; preds = %45 br i1 %29, label %BTreeTupleIsPivot.exit65.thread, label %BTreeTupleIsPivot.exit65 -BTreeTupleIsPivot.exit65.thread: ; preds = %47 - %48 = icmp eq i32 %37, %38 +BTreeTupleIsPivot.exit65.thread: ; preds = %46 + %47 = icmp eq i32 %37, %38 br label %BTreeTupleIsPivot.exit69.thread -BTreeTupleIsPivot.exit65: ; preds = %47 - %49 = getelementptr i8, ptr %25, i64 4 - %.val.i62 = load i16, ptr %49, align 2 +BTreeTupleIsPivot.exit65: ; preds = %46 + %48 = getelementptr i8, ptr %25, i64 4 + %.val.i62 = load i16, ptr %48, align 2 %.val.i62.fr = freeze i16 %.val.i62 - %50 = and i16 %.val.i62.fr, 8192 - %.not.i63 = icmp ne i16 %50, 0 - %51 = icmp eq i32 %37, %38 - %spec.select = select i1 %.not.i63, i1 %51, i1 false + %49 = and i16 %.val.i62.fr, 8192 + %.not.i63 = icmp ne i16 %49, 0 + %50 = icmp eq i32 %37, %38 + %spec.select = select i1 %.not.i63, i1 %50, i1 false br label %BTreeTupleIsPivot.exit69.thread -52: ; preds = %46 - br i1 %1, label %65, label %53 +51: ; preds = %45 + br i1 %1, label %64, label %52 -53: ; preds = %52 - %54 = icmp eq i32 %37, %39 +52: ; preds = %51 + %53 = icmp eq i32 %37, %39 br label %BTreeTupleIsPivot.exit69.thread -55: ; preds = %BTreeTupleIsPosting.exit61.thread - %56 = icmp eq i32 %45, %41 - br i1 %56, label %57, label %62 +54: ; preds = %BTreeTupleIsPosting.exit61.thread + %55 = icmp eq i16 %44, %3 + br i1 %55, label %56, label %61 -57: ; preds = %55 - %58 = icmp eq i32 %37, 0 - %brmerge102 = select i1 %1, i1 true, i1 %58 +56: ; preds = %54 + %57 = icmp eq i32 %37, 0 + %brmerge102 = select i1 %1, i1 true, i1 %57 %not. = xor i1 %1, true - %.mux = select i1 %not., i1 true, i1 %58 - br i1 %brmerge102, label %BTreeTupleIsPivot.exit69.thread, label %59 + %.mux = select i1 %not., i1 true, i1 %57 + br i1 %brmerge102, label %BTreeTupleIsPivot.exit69.thread, label %58 -59: ; preds = %57 - %60 = getelementptr i8, ptr %25, i64 4 - %.val53 = load i16, ptr %60, align 2 - %61 = icmp eq i16 %.val53, 1 +58: ; preds = %56 + %59 = getelementptr i8, ptr %25, i64 4 + %.val53 = load i16, ptr %59, align 2 + %60 = icmp eq i16 %.val53, 1 br label %BTreeTupleIsPivot.exit69.thread -62: ; preds = %55 - br i1 %1, label %65, label %63 +61: ; preds = %54 + br i1 %1, label %64, label %62 -63: ; preds = %62 - %64 = icmp eq i32 %37, %39 +62: ; preds = %61 + %63 = icmp eq i32 %37, %39 br label %BTreeTupleIsPivot.exit69.thread -65: ; preds = %62, %52 +64: ; preds = %61, %51 br i1 %29, label %BTreeTupleIsPivot.exit69.thread, label %BTreeTupleIsPivot.exit69 -BTreeTupleIsPivot.exit69: ; preds = %65 - %66 = getelementptr i8, ptr %25, i64 4 - %.val.i66 = load i16, ptr %66, align 2 - %67 = and i16 %.val.i66, 8192 - %.not.i67 = icmp eq i16 %67, 0 +BTreeTupleIsPivot.exit69: ; preds = %64 + %65 = getelementptr i8, ptr %25, i64 4 + %.val.i66 = load i16, ptr %65, align 2 + %66 = and i16 %.val.i66, 8192 + %.not.i67 = icmp eq i16 %66, 0 br i1 %.not.i67, label %BTreeTupleIsPosting.exit72, label %BTreeTupleIsPivot.exit69.thread BTreeTupleIsPosting.exit72: ; preds = %BTreeTupleIsPivot.exit69 - %68 = tail call fastcc ptr @BTreeTupleGetHeapTID(ptr noundef nonnull %25) - %.not49 = icmp eq ptr %68, null + %67 = tail call fastcc ptr @BTreeTupleGetHeapTID(ptr noundef nonnull %25) + %.not49 = icmp eq ptr %67, null %.not50 = icmp eq i32 %37, %39 %or.cond = select i1 %.not49, i1 true, i1 %.not50 - br i1 %or.cond, label %69, label %BTreeTupleIsPivot.exit69.thread + br i1 %or.cond, label %68, label %BTreeTupleIsPivot.exit69.thread -69: ; preds = %BTreeTupleIsPosting.exit72 - %70 = icmp sgt i32 %37, 0 - %71 = icmp sle i32 %37, %39 - %72 = select i1 %70, i1 %71, i1 false +68: ; preds = %BTreeTupleIsPosting.exit72 + %69 = icmp sgt i32 %37, 0 + %70 = icmp sle i32 %37, %39 + %71 = select i1 %69, i1 %70, i1 false br label %BTreeTupleIsPivot.exit69.thread -BTreeTupleIsPivot.exit69.thread: ; preds = %57, %.thread90, %BTreeTupleIsPivot.exit65, %65, %BTreeTupleIsPivot.exit65.thread, %BTreeTupleIsPosting.exit72, %BTreeTupleIsPivot.exit69, %59, %4, %69, %63, %53 - %.0 = phi i1 [ %72, %69 ], [ %54, %53 ], [ %64, %63 ], [ true, %4 ], [ %61, %59 ], [ false, %BTreeTupleIsPivot.exit69 ], [ false, %BTreeTupleIsPosting.exit72 ], [ %48, %BTreeTupleIsPivot.exit65.thread ], [ false, %65 ], [ %spec.select, %BTreeTupleIsPivot.exit65 ], [ false, %.thread90 ], [ %.mux, %57 ] +BTreeTupleIsPivot.exit69.thread: ; preds = %56, %.thread90, %BTreeTupleIsPivot.exit65, %64, %BTreeTupleIsPivot.exit65.thread, %BTreeTupleIsPosting.exit72, %BTreeTupleIsPivot.exit69, %58, %4, %68, %62, %52 + %.0 = phi i1 [ %71, %68 ], [ %53, %52 ], [ %63, %62 ], [ true, %4 ], [ %60, %58 ], [ false, %BTreeTupleIsPivot.exit69 ], [ false, %BTreeTupleIsPosting.exit72 ], [ %47, %BTreeTupleIsPivot.exit65.thread ], [ false, %64 ], [ %spec.select, %BTreeTupleIsPivot.exit65 ], [ false, %.thread90 ], [ %.mux, %56 ] ret i1 %.0 } diff --git a/bench/postgres/optimized/network.ll b/bench/postgres/optimized/network.ll index 43b8dc47991..a605030b907 100644 --- a/bench/postgres/optimized/network.ll +++ b/bench/postgres/optimized/network.ll @@ -581,8 +581,8 @@ define dso_local noundef i64 @inet_to_cidr(ptr noundef readonly captures(none) % %11 = zext i8 %10 to i32 %12 = load i8, ptr %8, align 1 %13 = icmp eq i8 %12, 2 - %14 = select i1 %13, i32 32, i32 128 - %15 = icmp samesign ult i32 %14, %11 + %14 = select i1 %13, i8 32, i8 -128 + %15 = icmp ult i8 %14, %10 br i1 %15, label %16, label %19 16: ; preds = %1 @@ -624,41 +624,41 @@ define dso_local noundef i64 @inet_to_cidr(ptr noundef readonly captures(none) % %.not32.i = icmp eq i8 %39, 0 %40 = select i1 %.not32.i, ptr %24, ptr %23 %41 = getelementptr inbounds nuw i8, ptr %40, i64 2 - %.lhs.trunc = add i8 %10, 7 - %42 = lshr i8 %.lhs.trunc, 3 - %43 = zext nneg i8 %42 to i64 - tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %37, ptr nonnull align 1 %41, i64 %43, i1 false) - %44 = and i32 %11, 7 - %.not33.i = icmp eq i32 %44, 0 - br i1 %.not33.i, label %cidr_set_masklen_internal.exit, label %45 - -45: ; preds = %33 - %46 = ashr exact i32 -256, %44 - %47 = load i8, ptr %20, align 1 - %48 = and i8 %47, 1 - %.not34.i = icmp eq i8 %48, 0 - %49 = select i1 %.not34.i, ptr %30, ptr %29 - %50 = getelementptr inbounds nuw i8, ptr %49, i64 2 - %51 = lshr i32 %11, 3 - %52 = zext nneg i32 %51 to i64 - %53 = getelementptr inbounds nuw [16 x i8], ptr %50, i64 0, i64 %52 - %54 = load i8, ptr %53, align 1 - %55 = trunc nsw i32 %46 to i8 - %56 = and i8 %54, %55 - store i8 %56, ptr %53, align 1 + %42 = zext i8 %10 to i64 + %.lhs.trunc = add nuw nsw i64 %42, 7 + %.zext = lshr i64 %.lhs.trunc, 3 + tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %37, ptr nonnull align 1 %41, i64 %.zext, i1 false) + %43 = and i32 %11, 7 + %.not33.i = icmp eq i32 %43, 0 + br i1 %.not33.i, label %cidr_set_masklen_internal.exit, label %44 + +44: ; preds = %33 + %45 = ashr exact i32 -256, %43 + %46 = load i8, ptr %20, align 1 + %47 = and i8 %46, 1 + %.not34.i = icmp eq i8 %47, 0 + %48 = select i1 %.not34.i, ptr %30, ptr %29 + %49 = getelementptr inbounds nuw i8, ptr %48, i64 2 + %50 = lshr i32 %11, 3 + %51 = zext nneg i32 %50 to i64 + %52 = getelementptr inbounds nuw [16 x i8], ptr %49, i64 0, i64 %51 + %53 = load i8, ptr %52, align 1 + %54 = trunc nsw i32 %45 to i8 + %55 = and i8 %53, %54 + store i8 %55, ptr %52, align 1 br label %cidr_set_masklen_internal.exit -cidr_set_masklen_internal.exit: ; preds = %19, %33, %45 - %57 = load i8, ptr %20, align 1 - %58 = and i8 %57, 1 - %.not35.i = icmp eq i8 %58, 0 - %59 = select i1 %.not35.i, ptr %30, ptr %29 - %60 = load i8, ptr %59, align 1 - %61 = icmp eq i8 %60, 2 - %62 = select i1 %61, i32 40, i32 88 - store i32 %62, ptr %20, align 4 - %63 = ptrtoint ptr %20 to i64 - ret i64 %63 +cidr_set_masklen_internal.exit: ; preds = %19, %33, %44 + %56 = load i8, ptr %20, align 1 + %57 = and i8 %56, 1 + %.not35.i = icmp eq i8 %57, 0 + %58 = select i1 %.not35.i, ptr %30, ptr %29 + %59 = load i8, ptr %58, align 1 + %60 = icmp eq i8 %59, 2 + %61 = select i1 %60, i32 40, i32 88 + store i32 %61, ptr %20, align 4 + %62 = ptrtoint ptr %20 to i64 + ret i64 %62 } ; Function Attrs: cold @@ -2353,7 +2353,7 @@ define dso_local noundef i64 @network_broadcast(ptr noundef readonly captures(no %21 = getelementptr inbounds nuw i8, ptr %6, i64 4 %22 = select i1 %.not43, ptr %21, ptr %20 %23 = getelementptr inbounds nuw i8, ptr %22, i64 2 - %wide.trip.count = select i1 %13, i64 4, i64 16 + %wide.trip.count52 = select i1 %13, i64 3, i64 15 br label %24 24: ; preds = %1, %33 @@ -2384,7 +2384,7 @@ define dso_local noundef i64 @network_broadcast(ptr noundef readonly captures(no %37 = getelementptr inbounds nuw i8, ptr %23, i64 %indvars.iv store i8 %36, ptr %37, align 1 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count + %exitcond.not = icmp eq i64 %wide.trip.count52, %indvars.iv br i1 %exitcond.not, label %38, label %24, !llvm.loop !26 38: ; preds = %33 @@ -2954,7 +2954,7 @@ define dso_local double @convert_network_to_scalar(i64 noundef %0, i32 noundef % %11 = icmp eq i8 %10, 2 %12 = uitofp i8 %10 to double %13 = getelementptr inbounds nuw i8, ptr %9, i64 2 - %wide.trip.count = select i1 %11, i64 4, i64 5 + %wide.trip.count49 = select i1 %11, i64 3, i64 4 br label %14 14: ; preds = %4, %14 @@ -2966,7 +2966,7 @@ define dso_local double @convert_network_to_scalar(i64 noundef %0, i32 noundef % %18 = uitofp i8 %17 to double %19 = fadd double %15, %18 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count + %exitcond.not = icmp eq i64 %wide.trip.count49, %indvars.iv br i1 %exitcond.not, label %.loopexit, label %14, !llvm.loop !29 20: ; preds = %3 diff --git a/bench/qemu/optimized/virtio.ll b/bench/qemu/optimized/virtio.ll index a5e77fccdaa..7347ef88fa6 100644 --- a/bench/qemu/optimized/virtio.ll +++ b/bench/qemu/optimized/virtio.ll @@ -10169,21 +10169,20 @@ define internal zeroext i1 @virtio_device_endian_needed(ptr noundef readonly cap %.val = load i64, ptr %6, align 8 %7 = and i64 %.val, 4294967296 %.not6 = icmp eq i64 %7, 0 - br i1 %.not6, label %8, label %12 + br i1 %.not6, label %8, label %11 8: ; preds = %5 - %9 = zext i8 %3 to i32 - %10 = tail call zeroext i1 @target_words_bigendian() #24 - %..i = select i1 %10, i32 2, i32 1 - %11 = icmp ne i32 %..i, %9 - br label %14 + %9 = tail call zeroext i1 @target_words_bigendian() #24 + %..i7 = select i1 %9, i8 2, i8 1 + %10 = icmp ne i8 %..i7, %3 + br label %13 -12: ; preds = %5 - %13 = icmp ne i8 %3, 1 - br label %14 +11: ; preds = %5 + %12 = icmp ne i8 %3, 1 + br label %13 -14: ; preds = %12, %8 - %.0 = phi i1 [ %13, %12 ], [ %11, %8 ] +13: ; preds = %11, %8 + %.0 = phi i1 [ %12, %11 ], [ %10, %8 ] ret i1 %.0 } diff --git a/bench/redis/optimized/bitops.ll b/bench/redis/optimized/bitops.ll index 5aacbfe4f61..efc0e69db7d 100644 --- a/bench/redis/optimized/bitops.ll +++ b/bench/redis/optimized/bitops.ll @@ -279,24 +279,26 @@ declare void @llvm.lifetime.end.p0(i64 immarg, ptr captures(none)) #1 ; Function Attrs: nounwind uwtable define dso_local i64 @redisBitpos(ptr noundef %0, i64 noundef %1, i32 noundef %2) local_unnamed_addr #4 { %.not = icmp eq i32 %2, 0 - %4 = select i1 %.not, i64 255, i64 0 - %5 = ptrtoint ptr %0 to i64 - %6 = and i64 %5, 7 - %7 = icmp eq i64 %6, 0 - %8 = icmp eq i64 %1, 0 - %.not5868 = or i1 %7, %8 + %4 = ptrtoint ptr %0 to i64 + %5 = and i64 %4, 7 + %6 = icmp eq i64 %5, 0 + %7 = icmp eq i64 %1, 0 + %.not5868 = or i1 %6, %7 br i1 %.not5868, label %.critedge, label %.lr.ph -.lr.ph: ; preds = %3, %11 - %.04071 = phi i64 [ %14, %11 ], [ 0, %3 ] - %.04470 = phi ptr [ %12, %11 ], [ %0, %3 ] - %.05069 = phi i64 [ %13, %11 ], [ %1, %3 ] - %9 = load i8, ptr %.04470, align 1, !tbaa !5 - %10 = zext i8 %9 to i64 - %.not54 = icmp eq i64 %4, %10 +.lr.ph: ; preds = %3 + %8 = sext i1 %.not to i8 + br label %9 + +9: ; preds = %.lr.ph, %11 + %.04071 = phi i64 [ 0, %.lr.ph ], [ %14, %11 ] + %.04470 = phi ptr [ %0, %.lr.ph ], [ %12, %11 ] + %.05069 = phi i64 [ %1, %.lr.ph ], [ %13, %11 ] + %10 = load i8, ptr %.04470, align 1, !tbaa !5 + %.not54 = icmp eq i8 %10, %8 br i1 %.not54, label %11, label %.loopexit62 -11: ; preds = %.lr.ph +11: ; preds = %9 %12 = getelementptr inbounds nuw i8, ptr %.04470, i64 1 %13 = add i64 %.05069, -1 %14 = add nuw nsw i64 %.04071, 8 @@ -305,7 +307,7 @@ define dso_local i64 @redisBitpos(ptr noundef %0, i64 noundef %1, i32 noundef %2 %17 = icmp eq i64 %16, 0 %18 = icmp eq i64 %13, 0 %.not58 = select i1 %17, i1 true, i1 %18 - br i1 %.not58, label %.critedge, label %.lr.ph, !llvm.loop !18 + br i1 %.not58, label %.critedge, label %9, !llvm.loop !18 .critedge: ; preds = %11, %3 %.050.lcssa = phi i64 [ %1, %3 ], [ %13, %11 ] @@ -330,10 +332,10 @@ define dso_local i64 @redisBitpos(ptr noundef %0, i64 noundef %1, i32 noundef %2 %26 = icmp ugt i64 %24, 7 br i1 %26, label %.lr.ph77, label %.loopexit62, !llvm.loop !19 -.loopexit62: ; preds = %.lr.ph, %.lr.ph77, %22, %.critedge - %.151 = phi i64 [ %.050.lcssa, %.critedge ], [ %.25274, %.lr.ph77 ], [ %24, %22 ], [ %.05069, %.lr.ph ] - %.047 = phi ptr [ %.044.lcssa, %.critedge ], [ %.14875, %.lr.ph77 ], [ %23, %22 ], [ %.04470, %.lr.ph ] - %.1 = phi i64 [ %.040.lcssa, %.critedge ], [ %.276, %.lr.ph77 ], [ %25, %22 ], [ %.04071, %.lr.ph ] +.loopexit62: ; preds = %9, %.lr.ph77, %22, %.critedge + %.151 = phi i64 [ %.050.lcssa, %.critedge ], [ %.25274, %.lr.ph77 ], [ %24, %22 ], [ %.05069, %9 ] + %.047 = phi ptr [ %.044.lcssa, %.critedge ], [ %.14875, %.lr.ph77 ], [ %23, %22 ], [ %.04470, %9 ] + %.1 = phi i64 [ %.040.lcssa, %.critedge ], [ %.276, %.lr.ph77 ], [ %25, %22 ], [ %.04071, %9 ] br label %27 27: ; preds = %.loopexit62, %35 diff --git a/bench/spike/optimized/f16_roundToInt.ll b/bench/spike/optimized/f16_roundToInt.ll index e5fda0f9269..ed0b0dca831 100644 --- a/bench/spike/optimized/f16_roundToInt.ll +++ b/bench/spike/optimized/f16_roundToInt.ll @@ -16,7 +16,7 @@ define i16 @f16_roundToInt(i16 %0, i8 noundef zeroext %1, i1 noundef zeroext %2) 8: ; preds = %3 %.mask = and i16 %0, 32767 %.not54 = icmp eq i16 %.mask, 0 - br i1 %.not54, label %60, label %9 + br i1 %.not54, label %59, label %9 9: ; preds = %8 br i1 %2, label %10, label %14 @@ -30,7 +30,7 @@ define i16 @f16_roundToInt(i16 %0, i8 noundef zeroext %1, i1 noundef zeroext %2) 14: ; preds = %10, %9 %15 = and i64 %4, 32768 - switch i8 %1, label %58 [ + switch i8 %1, label %57 [ i8 0, label %16 i8 4, label %20 i8 2, label %23 @@ -42,25 +42,25 @@ define i16 @f16_roundToInt(i16 %0, i8 noundef zeroext %1, i1 noundef zeroext %2) %18 = icmp ne i64 %17, 0 %19 = icmp eq i16 %6, 14 %or.cond = and i1 %18, %19 - br i1 %or.cond, label %21, label %58 + br i1 %or.cond, label %21, label %57 20: ; preds = %14 %.old3 = icmp eq i16 %6, 14 - br i1 %.old3, label %21, label %58 + br i1 %.old3, label %21, label %57 21: ; preds = %16, %20 %22 = or disjoint i64 %15, 15360 - br label %58 + br label %57 23: ; preds = %14 %.not56 = icmp eq i64 %15, 0 %spec.store.select = select i1 %.not56, i64 0, i64 48128 - br label %58 + br label %57 24: ; preds = %14 %.not55 = icmp eq i64 %15, 0 %spec.store.select1 = select i1 %.not55, i64 15360, i64 32768 - br label %58 + br label %57 25: ; preds = %3 %26 = icmp samesign ugt i16 %6, 24 @@ -71,11 +71,11 @@ define i16 @f16_roundToInt(i16 %0, i8 noundef zeroext %1, i1 noundef zeroext %2) %29 = and i64 %4, 1023 %.not53 = icmp eq i64 %29, 0 %or.cond57 = or i1 %28, %.not53 - br i1 %or.cond57, label %60, label %30 + br i1 %or.cond57, label %59, label %30 30: ; preds = %27 %31 = tail call i64 @softfloat_propagateNaNF16UI(i64 noundef %4, i64 noundef 0) #3 - br label %58 + br label %57 32: ; preds = %25 %narrow = sub nuw nsw i16 25, %6 @@ -90,51 +90,50 @@ define i16 @f16_roundToInt(i16 %0, i8 noundef zeroext %1, i1 noundef zeroext %2) 36: ; preds = %32 %37 = lshr exact i64 %34, 1 %38 = add nuw nsw i64 %37, %4 - br label %51 + br label %50 39: ; preds = %32 %40 = lshr exact i64 %34, 1 %41 = add nuw nsw i64 %40, %4 %42 = and i64 %41, %35 %.not51 = icmp eq i64 %42, 0 - br i1 %.not51, label %43, label %51 + br i1 %.not51, label %43, label %50 43: ; preds = %39 %44 = xor i64 %34, -1 %45 = and i64 %41, %44 - br label %51 + br label %50 46: ; preds = %32 - %47 = zext i8 %1 to i32 %.not = icmp sgt i16 %0, -1 - %48 = select i1 %.not, i32 3, i32 2 - %49 = icmp eq i32 %48, %47 - %50 = select i1 %49, i64 %35, i64 0 - %spec.select = add nuw nsw i64 %50, %4 - br label %51 + %47 = select i1 %.not, i8 3, i8 2 + %48 = icmp eq i8 %47, %1 + %49 = select i1 %48, i64 %35, i64 0 + %spec.select = add nuw nsw i64 %49, %4 + br label %50 -51: ; preds = %46, %43, %39, %36 +50: ; preds = %46, %43, %39, %36 %.1 = phi i64 [ %38, %36 ], [ %41, %39 ], [ %45, %43 ], [ %spec.select, %46 ] - %52 = sub nsw i64 0, %34 - %53 = and i64 %.1, %52 - %.not52 = icmp ne i64 %53, %4 + %51 = sub nsw i64 0, %34 + %52 = and i64 %.1, %51 + %.not52 = icmp ne i64 %52, %4 %or.cond59.not = select i1 %2, i1 %.not52, i1 false - br i1 %or.cond59.not, label %54, label %58 - -54: ; preds = %51 - %55 = tail call align 1 ptr @llvm.threadlocal.address.p0(ptr align 1 @softfloat_exceptionFlags) - %56 = load i8, ptr %55, align 1, !tbaa !3 - %57 = or i8 %56, 1 - store i8 %57, ptr %55, align 1, !tbaa !3 - br label %58 - -58: ; preds = %51, %54, %14, %23, %24, %16, %21, %20, %30 - %.0 = phi i64 [ %15, %14 ], [ %22, %21 ], [ %15, %16 ], [ %15, %20 ], [ %spec.store.select, %23 ], [ %spec.store.select1, %24 ], [ %31, %30 ], [ %53, %54 ], [ %53, %51 ] - %59 = trunc i64 %.0 to i16 - br label %60 - -60: ; preds = %27, %8, %58 - %.sroa.045.0 = phi i16 [ %59, %58 ], [ %0, %8 ], [ %0, %27 ] + br i1 %or.cond59.not, label %53, label %57 + +53: ; preds = %50 + %54 = tail call align 1 ptr @llvm.threadlocal.address.p0(ptr align 1 @softfloat_exceptionFlags) + %55 = load i8, ptr %54, align 1, !tbaa !3 + %56 = or i8 %55, 1 + store i8 %56, ptr %54, align 1, !tbaa !3 + br label %57 + +57: ; preds = %50, %53, %14, %23, %24, %16, %21, %20, %30 + %.0 = phi i64 [ %15, %14 ], [ %22, %21 ], [ %15, %16 ], [ %15, %20 ], [ %spec.store.select, %23 ], [ %spec.store.select1, %24 ], [ %31, %30 ], [ %52, %53 ], [ %52, %50 ] + %58 = trunc i64 %.0 to i16 + br label %59 + +59: ; preds = %27, %8, %57 + %.sroa.045.0 = phi i16 [ %58, %57 ], [ %0, %8 ], [ %0, %27 ] ret i16 %.sroa.045.0 } diff --git a/bench/spike/optimized/f64_roundToInt.ll b/bench/spike/optimized/f64_roundToInt.ll index e360b6821f0..b69c08b92f0 100644 --- a/bench/spike/optimized/f64_roundToInt.ll +++ b/bench/spike/optimized/f64_roundToInt.ll @@ -15,7 +15,7 @@ define i64 @f64_roundToInt(i64 %0, i8 noundef zeroext %1, i1 noundef zeroext %2) 7: ; preds = %3 %8 = and i64 %0, 9223372036854775807 %.not53 = icmp eq i64 %8, 0 - br i1 %.not53, label %58, label %9 + br i1 %.not53, label %57, label %9 9: ; preds = %7 br i1 %2, label %10, label %14 @@ -29,7 +29,7 @@ define i64 @f64_roundToInt(i64 %0, i8 noundef zeroext %1, i1 noundef zeroext %2) 14: ; preds = %10, %9 %15 = and i64 %0, -9223372036854775808 - switch i8 %1, label %58 [ + switch i8 %1, label %57 [ i8 0, label %16 i8 4, label %20 i8 2, label %23 @@ -41,25 +41,25 @@ define i64 @f64_roundToInt(i64 %0, i8 noundef zeroext %1, i1 noundef zeroext %2) %18 = icmp ne i64 %17, 0 %19 = icmp eq i64 %5, 1022 %or.cond = and i1 %18, %19 - br i1 %or.cond, label %21, label %58 + br i1 %or.cond, label %21, label %57 20: ; preds = %14 %.old2 = icmp eq i64 %5, 1022 - br i1 %.old2, label %21, label %58 + br i1 %.old2, label %21, label %57 21: ; preds = %16, %20 %22 = or disjoint i64 %15, 4607182418800017408 - br label %58 + br label %57 23: ; preds = %14 %.not55 = icmp eq i64 %15, 0 %spec.store.select = select i1 %.not55, i64 0, i64 -4616189618054758400 - br label %58 + br label %57 24: ; preds = %14 %.not54 = icmp eq i64 %15, 0 %spec.store.select1 = select i1 %.not54, i64 4607182418800017408, i64 -9223372036854775808 - br label %58 + br label %57 25: ; preds = %3 %26 = icmp samesign ugt i64 %5, 1074 @@ -70,11 +70,11 @@ define i64 @f64_roundToInt(i64 %0, i8 noundef zeroext %1, i1 noundef zeroext %2) %29 = and i64 %0, 4503599627370495 %.not52 = icmp eq i64 %29, 0 %or.cond56 = or i1 %.not52, %28 - br i1 %or.cond56, label %58, label %30 + br i1 %or.cond56, label %57, label %30 30: ; preds = %27 %31 = tail call i64 @softfloat_propagateNaNF64UI(i64 noundef %0, i64 noundef 0) #3 - br label %58 + br label %57 32: ; preds = %25 %33 = sub nuw nsw i64 1075, %5 @@ -88,46 +88,45 @@ define i64 @f64_roundToInt(i64 %0, i8 noundef zeroext %1, i1 noundef zeroext %2) 36: ; preds = %32 %37 = lshr i64 %34, 1 %38 = add i64 %37, %0 - br label %51 + br label %50 39: ; preds = %32 %40 = lshr i64 %34, 1 %41 = add i64 %40, %0 %42 = and i64 %41, %35 %.not50 = icmp eq i64 %42, 0 - br i1 %.not50, label %43, label %51 + br i1 %.not50, label %43, label %50 43: ; preds = %39 %44 = xor i64 %34, -1 %45 = and i64 %41, %44 - br label %51 + br label %50 46: ; preds = %32 - %47 = zext i8 %1 to i32 %.not = icmp sgt i64 %0, -1 - %48 = select i1 %.not, i32 3, i32 2 - %49 = icmp eq i32 %48, %47 - %50 = select i1 %49, i64 %35, i64 0 - %spec.select = add i64 %50, %0 - br label %51 + %47 = select i1 %.not, i8 3, i8 2 + %48 = icmp eq i8 %47, %1 + %49 = select i1 %48, i64 %35, i64 0 + %spec.select = add i64 %49, %0 + br label %50 -51: ; preds = %46, %43, %39, %36 +50: ; preds = %46, %43, %39, %36 %.1 = phi i64 [ %38, %36 ], [ %41, %39 ], [ %45, %43 ], [ %spec.select, %46 ] - %52 = sub nsw i64 0, %34 - %53 = and i64 %.1, %52 - %.not51 = icmp ne i64 %53, %0 + %51 = sub nsw i64 0, %34 + %52 = and i64 %.1, %51 + %.not51 = icmp ne i64 %52, %0 %or.cond58.not = select i1 %2, i1 %.not51, i1 false - br i1 %or.cond58.not, label %54, label %58 + br i1 %or.cond58.not, label %53, label %57 -54: ; preds = %51 - %55 = tail call align 1 ptr @llvm.threadlocal.address.p0(ptr align 1 @softfloat_exceptionFlags) - %56 = load i8, ptr %55, align 1, !tbaa !3 - %57 = or i8 %56, 1 - store i8 %57, ptr %55, align 1, !tbaa !3 - br label %58 +53: ; preds = %50 + %54 = tail call align 1 ptr @llvm.threadlocal.address.p0(ptr align 1 @softfloat_exceptionFlags) + %55 = load i8, ptr %54, align 1, !tbaa !3 + %56 = or i8 %55, 1 + store i8 %56, ptr %54, align 1, !tbaa !3 + br label %57 -58: ; preds = %30, %20, %21, %16, %24, %23, %14, %54, %51, %27, %7 - %.sroa.044.0 = phi i64 [ %0, %7 ], [ %0, %27 ], [ %15, %14 ], [ %22, %21 ], [ %15, %16 ], [ %15, %20 ], [ %spec.store.select, %23 ], [ %spec.store.select1, %24 ], [ %31, %30 ], [ %53, %54 ], [ %53, %51 ] +57: ; preds = %30, %20, %21, %16, %24, %23, %14, %53, %50, %27, %7 + %.sroa.044.0 = phi i64 [ %0, %7 ], [ %0, %27 ], [ %15, %14 ], [ %22, %21 ], [ %15, %16 ], [ %15, %20 ], [ %spec.store.select, %23 ], [ %spec.store.select1, %24 ], [ %31, %30 ], [ %52, %53 ], [ %52, %50 ] ret i64 %.sroa.044.0 } diff --git a/bench/spike/optimized/s_addMagsF16.ll b/bench/spike/optimized/s_addMagsF16.ll index f627da8aec5..50570630dbb 100644 --- a/bench/spike/optimized/s_addMagsF16.ll +++ b/bench/spike/optimized/s_addMagsF16.ll @@ -27,12 +27,12 @@ define i16 @softfloat_addMagsF16(i64 noundef %0, i64 noundef %1) local_unnamed_a 12: ; preds = %11 %13 = add i64 %10, %0 - br label %110 + br label %109 14: ; preds = %11 %15 = or i64 %10, %6 %.not105 = icmp eq i64 %15, 0 - br i1 %.not105, label %110, label %82 + br i1 %.not105, label %109, label %82 16: ; preds = %11 %17 = or disjoint i64 %6, 2048 @@ -46,7 +46,7 @@ define i16 @softfloat_addMagsF16(i64 noundef %0, i64 noundef %1) local_unnamed_a 22: ; preds = %16 %23 = lshr exact i64 %18, 1 %24 = and i64 %0, 8355840 - br label %104 + br label %103 25: ; preds = %16 %26 = shl nuw nsw i64 %18, 3 @@ -69,7 +69,7 @@ define i16 @softfloat_addMagsF16(i64 noundef %0, i64 noundef %1) local_unnamed_a 35: ; preds = %34 %36 = or disjoint i64 %30, 31744 - br label %110 + br label %109 37: ; preds = %32 %38 = icmp samesign ult i8 %29, -12 @@ -82,7 +82,7 @@ define i16 @softfloat_addMagsF16(i64 noundef %0, i64 noundef %1) local_unnamed_a %43 = and i64 %3, 31 %44 = or i64 %43, %6 %.not112 = icmp eq i64 %44, 0 - br i1 %.not112, label %110, label %84 + br i1 %.not112, label %109, label %84 45: ; preds = %37 %.not109 = icmp eq i8 %5, 0 @@ -97,7 +97,7 @@ define i16 @softfloat_addMagsF16(i64 noundef %0, i64 noundef %1) local_unnamed_a 50: ; preds = %48 %.not108 = icmp eq i64 %6, 0 - br i1 %.not108, label %110, label %82 + br i1 %.not108, label %109, label %82 51: ; preds = %48 %52 = icmp samesign ugt i8 %29, 12 @@ -107,7 +107,7 @@ define i16 @softfloat_addMagsF16(i64 noundef %0, i64 noundef %1) local_unnamed_a %54 = and i64 %7, 31 %55 = or i64 %54, %10 %.not107 = icmp eq i64 %55, 0 - br i1 %.not107, label %110, label %84 + br i1 %.not107, label %109, label %84 56: ; preds = %51 %.not106 = icmp eq i8 %9, 0 @@ -149,7 +149,7 @@ define i16 @softfloat_addMagsF16(i64 noundef %0, i64 noundef %1) local_unnamed_a 76: ; preds = %72 %77 = lshr exact i64 %.085, 20 - br label %104 + br label %103 78: ; preds = %70, %72, %25 %.195.in.in = phi i64 [ %30, %70 ], [ %30, %72 ], [ %27, %25 ] @@ -158,69 +158,68 @@ define i16 @softfloat_addMagsF16(i64 noundef %0, i64 noundef %1) local_unnamed_a %79 = icmp ne i64 %.195.in.in, 0 %80 = sext i8 %.192 to i64 %81 = tail call i16 @softfloat_roundPackToF16(i1 noundef zeroext %79, i64 noundef %80, i64 noundef %.190) #3 - br label %112 + br label %111 82: ; preds = %50, %34, %14 %83 = tail call i64 @softfloat_propagateNaNF16UI(i64 noundef %0, i64 noundef %1) #3 - br label %110 + br label %109 84: ; preds = %53, %39 %.1 = phi i64 [ %42, %39 ], [ %0, %53 ] %85 = tail call align 1 ptr @llvm.threadlocal.address.p0(ptr align 1 @softfloat_roundingMode) %86 = load i8, ptr %85, align 1, !tbaa !3 %.not113 = icmp eq i8 %86, 0 - br i1 %.not113, label %100, label %87 + br i1 %.not113, label %99, label %87 87: ; preds = %84 - %88 = sext i8 %86 to i32 - %89 = and i64 %.1, 32768 - %.not114 = icmp eq i64 %89, 0 - %90 = select i1 %.not114, i32 3, i32 2 - %91 = icmp eq i32 %90, %88 - br i1 %91, label %92, label %97 - -92: ; preds = %87 - %93 = add i64 %.1, 1 - %94 = and i64 %93, 32767 - %95 = icmp eq i64 %94, 31744 - br i1 %95, label %96, label %100 - -96: ; preds = %92 + %88 = and i64 %.1, 32768 + %.not114 = icmp eq i64 %88, 0 + %89 = select i1 %.not114, i8 3, i8 2 + %90 = icmp eq i8 %89, %86 + br i1 %90, label %91, label %96 + +91: ; preds = %87 + %92 = add i64 %.1, 1 + %93 = and i64 %92, 32767 + %94 = icmp eq i64 %93, 31744 + br i1 %94, label %95, label %99 + +95: ; preds = %91 tail call void @softfloat_raiseFlags(i8 noundef zeroext 5) #3 - br label %100 - -97: ; preds = %87 - %98 = icmp eq i8 %86, 5 - %99 = zext i1 %98 to i64 - %spec.select = or i64 %.1, %99 - br label %100 - -100: ; preds = %97, %96, %92, %84 - %.2 = phi i64 [ %93, %96 ], [ %93, %92 ], [ %.1, %84 ], [ %spec.select, %97 ] - %101 = tail call align 1 ptr @llvm.threadlocal.address.p0(ptr align 1 @softfloat_exceptionFlags) - %102 = load i8, ptr %101, align 1, !tbaa !3 - %103 = or i8 %102, 1 - store i8 %103, ptr %101, align 1, !tbaa !3 - br label %110 - -104: ; preds = %76, %22 + br label %99 + +96: ; preds = %87 + %97 = icmp eq i8 %86, 5 + %98 = zext i1 %97 to i64 + %spec.select = or i64 %.1, %98 + br label %99 + +99: ; preds = %96, %95, %91, %84 + %.2 = phi i64 [ %92, %95 ], [ %92, %91 ], [ %.1, %84 ], [ %spec.select, %96 ] + %100 = tail call align 1 ptr @llvm.threadlocal.address.p0(ptr align 1 @softfloat_exceptionFlags) + %101 = load i8, ptr %100, align 1, !tbaa !3 + %102 = or i8 %101, 1 + store i8 %102, ptr %100, align 1, !tbaa !3 + br label %109 + +103: ; preds = %76, %22 %.094 = phi i64 [ %30, %76 ], [ %24, %22 ] %.091 = phi i8 [ %.3, %76 ], [ %5, %22 ] %.089 = phi i64 [ %77, %76 ], [ %23, %22 ] - %105 = sext i8 %.091 to i64 - %106 = shl nsw i64 %105, 10 - %107 = and i64 %106, 67107840 - %108 = add nuw nsw i64 %.089, %.094 - %109 = add nuw nsw i64 %108, %107 - br label %110 - -110: ; preds = %14, %53, %50, %39, %104, %100, %82, %35, %12 - %.0 = phi i64 [ %83, %82 ], [ %36, %35 ], [ %.2, %100 ], [ %42, %39 ], [ %109, %104 ], [ %0, %50 ], [ %0, %53 ], [ %13, %12 ], [ %0, %14 ] - %111 = trunc i64 %.0 to i16 - br label %112 - -112: ; preds = %110, %78 - %.sroa.084.0 = phi i16 [ %111, %110 ], [ %81, %78 ] + %104 = sext i8 %.091 to i64 + %105 = shl nsw i64 %104, 10 + %106 = and i64 %105, 67107840 + %107 = add nuw nsw i64 %.089, %.094 + %108 = add nuw nsw i64 %107, %106 + br label %109 + +109: ; preds = %14, %53, %50, %39, %103, %99, %82, %35, %12 + %.0 = phi i64 [ %83, %82 ], [ %36, %35 ], [ %.2, %99 ], [ %42, %39 ], [ %108, %103 ], [ %0, %50 ], [ %0, %53 ], [ %13, %12 ], [ %0, %14 ] + %110 = trunc i64 %.0 to i16 + br label %111 + +111: ; preds = %109, %78 + %.sroa.084.0 = phi i16 [ %110, %109 ], [ %81, %78 ] ret i16 %.sroa.084.0 } diff --git a/bench/spike/optimized/s_roundMToI64.ll b/bench/spike/optimized/s_roundMToI64.ll index cf7a344ad86..9136daff32c 100644 --- a/bench/spike/optimized/s_roundMToI64.ll +++ b/bench/spike/optimized/s_roundMToI64.ll @@ -11,79 +11,78 @@ define i64 @softfloat_roundMToI64(i1 noundef zeroext %0, ptr noundef readonly ca %6 = load i32, ptr %1, align 4, !tbaa !3 %7 = icmp ne i8 %2, 4 %or.cond = xor i1 %5, %7 - br i1 %or.cond, label %8, label %22 + br i1 %or.cond, label %8, label %21 8: ; preds = %4 - %9 = zext i8 %2 to i32 - %10 = select i1 %0, i32 2, i32 3 - %11 = icmp eq i32 %10, %9 - %12 = icmp ne i32 %6, 0 - %13 = select i1 %11, i1 %12, i1 false - %14 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %15 = load i32, ptr %14, align 4, !tbaa !3 - %16 = zext i32 %15 to i64 - %17 = shl nuw i64 %16, 32 - %18 = getelementptr inbounds nuw i8, ptr %1, i64 4 - %19 = load i32, ptr %18, align 4, !tbaa !3 - %20 = zext i32 %19 to i64 - %21 = or disjoint i64 %17, %20 - br i1 %13, label %32, label %39 - -22: ; preds = %4 - %23 = icmp slt i32 %6, 0 - %24 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %25 = load i32, ptr %24, align 4, !tbaa !3 - %26 = zext i32 %25 to i64 - %27 = shl nuw i64 %26, 32 - %28 = getelementptr inbounds nuw i8, ptr %1, i64 4 - %29 = load i32, ptr %28, align 4, !tbaa !3 - %30 = zext i32 %29 to i64 - %31 = or disjoint i64 %27, %30 - br i1 %23, label %32, label %39 - -32: ; preds = %8, %22 - %33 = phi i64 [ %21, %8 ], [ %31, %22 ] - %34 = add i64 %33, 1 - %.not = icmp eq i64 %34, 0 - br i1 %.not, label %49, label %35 - -35: ; preds = %32 - %36 = and i32 %6, 2147483647 - %37 = icmp eq i32 %36, 0 - %or.cond4 = and i1 %5, %37 - %38 = and i64 %34, -2 - %spec.select = select i1 %or.cond4, i64 %38, i64 %34 - br label %39 - -39: ; preds = %8, %35, %22 - %.033 = phi i64 [ %31, %22 ], [ %spec.select, %35 ], [ %21, %8 ] - %40 = sub i64 0, %.033 - %41 = select i1 %0, i64 %40, i64 %.033 + %9 = select i1 %0, i8 2, i8 3 + %10 = icmp eq i8 %9, %2 + %11 = icmp ne i32 %6, 0 + %12 = select i1 %10, i1 %11, i1 false + %13 = getelementptr inbounds nuw i8, ptr %1, i64 8 + %14 = load i32, ptr %13, align 4, !tbaa !3 + %15 = zext i32 %14 to i64 + %16 = shl nuw i64 %15, 32 + %17 = getelementptr inbounds nuw i8, ptr %1, i64 4 + %18 = load i32, ptr %17, align 4, !tbaa !3 + %19 = zext i32 %18 to i64 + %20 = or disjoint i64 %16, %19 + br i1 %12, label %31, label %38 + +21: ; preds = %4 + %22 = icmp slt i32 %6, 0 + %23 = getelementptr inbounds nuw i8, ptr %1, i64 8 + %24 = load i32, ptr %23, align 4, !tbaa !3 + %25 = zext i32 %24 to i64 + %26 = shl nuw i64 %25, 32 + %27 = getelementptr inbounds nuw i8, ptr %1, i64 4 + %28 = load i32, ptr %27, align 4, !tbaa !3 + %29 = zext i32 %28 to i64 + %30 = or disjoint i64 %26, %29 + br i1 %22, label %31, label %38 + +31: ; preds = %8, %21 + %32 = phi i64 [ %20, %8 ], [ %30, %21 ] + %33 = add i64 %32, 1 + %.not = icmp eq i64 %33, 0 + br i1 %.not, label %48, label %34 + +34: ; preds = %31 + %35 = and i32 %6, 2147483647 + %36 = icmp eq i32 %35, 0 + %or.cond4 = and i1 %5, %36 + %37 = and i64 %33, -2 + %spec.select = select i1 %or.cond4, i64 %37, i64 %33 + br label %38 + +38: ; preds = %8, %34, %21 + %.033 = phi i64 [ %30, %21 ], [ %spec.select, %34 ], [ %20, %8 ] + %39 = sub i64 0, %.033 + %40 = select i1 %0, i64 %39, i64 %.033 %.not37 = icmp eq i64 %.033, 0 - %42 = icmp sgt i64 %41, -1 - %.not3839 = xor i1 %0, %42 + %41 = icmp sgt i64 %40, -1 + %.not3839 = xor i1 %0, %41 %or.cond40 = or i1 %.not37, %.not3839 - br i1 %or.cond40, label %43, label %49 + br i1 %or.cond40, label %42, label %48 -43: ; preds = %39 - %44 = icmp ne i32 %6, 0 - %or.cond6 = select i1 %3, i1 %44, i1 false - br i1 %or.cond6, label %45, label %51 +42: ; preds = %38 + %43 = icmp ne i32 %6, 0 + %or.cond6 = select i1 %3, i1 %43, i1 false + br i1 %or.cond6, label %44, label %50 -45: ; preds = %43 - %46 = tail call align 1 ptr @llvm.threadlocal.address.p0(ptr align 1 @softfloat_exceptionFlags) - %47 = load i8, ptr %46, align 1, !tbaa !7 - %48 = or i8 %47, 1 - store i8 %48, ptr %46, align 1, !tbaa !7 - br label %51 +44: ; preds = %42 + %45 = tail call align 1 ptr @llvm.threadlocal.address.p0(ptr align 1 @softfloat_exceptionFlags) + %46 = load i8, ptr %45, align 1, !tbaa !7 + %47 = or i8 %46, 1 + store i8 %47, ptr %45, align 1, !tbaa !7 + br label %50 -49: ; preds = %39, %32 +48: ; preds = %38, %31 tail call void @softfloat_raiseFlags(i8 noundef zeroext 16) #3 - %50 = select i1 %0, i64 -9223372036854775808, i64 9223372036854775807 - br label %51 + %49 = select i1 %0, i64 -9223372036854775808, i64 9223372036854775807 + br label %50 -51: ; preds = %43, %45, %49 - %.0 = phi i64 [ %50, %49 ], [ %41, %45 ], [ %41, %43 ] +50: ; preds = %42, %44, %48 + %.0 = phi i64 [ %49, %48 ], [ %40, %44 ], [ %40, %42 ] ret i64 %.0 } diff --git a/bench/spike/optimized/s_roundPackToBF16.ll b/bench/spike/optimized/s_roundPackToBF16.ll index 4ad44012499..578a15ec3f7 100644 --- a/bench/spike/optimized/s_roundPackToBF16.ll +++ b/bench/spike/optimized/s_roundPackToBF16.ll @@ -14,135 +14,134 @@ define i16 @softfloat_roundPackToBF16(i1 noundef zeroext %0, i64 noundef %1, i64 %6 = icmp eq i8 %5, 0 %7 = icmp ne i8 %5, 4 %or.cond = xor i1 %6, %7 - %8 = zext i8 %5 to i32 - %9 = select i1 %0, i32 2, i32 3 - %10 = icmp eq i32 %9, %8 - %11 = select i1 %10, i8 127, i8 0 - %.046 = select i1 %or.cond, i8 %11, i8 64 - %12 = trunc i64 %2 to i8 - %13 = trunc i64 %1 to i32 - %14 = icmp ugt i32 %13, 252 - br i1 %14, label %15, label %58 - -15: ; preds = %3 - %16 = icmp slt i64 %1, 0 - br i1 %16, label %17, label %49 - -17: ; preds = %15 - %18 = tail call align 1 ptr @llvm.threadlocal.address.p0(ptr align 1 @softfloat_detectTininess) - %19 = load i8, ptr %18, align 1, !tbaa !3 - %20 = icmp eq i8 %19, 0 - %21 = icmp ne i64 %1, -1 - %or.cond4 = or i1 %21, %20 - br i1 %or.cond4, label %26, label %22 - -22: ; preds = %17 - %23 = zext nneg i8 %.046 to i64 - %24 = add i64 %2, %23 - %25 = icmp ult i64 %24, 32768 - br label %26 - -26: ; preds = %22, %17 - %27 = phi i1 [ true, %17 ], [ %25, %22 ] - %28 = trunc i64 %2 to i32 - %29 = sub nsw i64 0, %1 - %30 = icmp samesign ult i64 %29, 31 - br i1 %30, label %31, label %40 - -31: ; preds = %26 - %32 = trunc nuw nsw i64 %29 to i32 - %33 = lshr i32 %28, %32 - %34 = sub nsw i32 0, %32 - %35 = and i32 %34, 31 - %36 = shl i32 %28, %35 - %37 = icmp ne i32 %36, 0 - %38 = zext i1 %37 to i32 - %39 = or i32 %33, %38 + %8 = select i1 %0, i8 2, i8 3 + %9 = icmp eq i8 %8, %5 + %10 = select i1 %9, i8 127, i8 0 + %.046 = select i1 %or.cond, i8 %10, i8 64 + %11 = trunc i64 %2 to i8 + %12 = trunc i64 %1 to i32 + %13 = icmp ugt i32 %12, 252 + br i1 %13, label %14, label %57 + +14: ; preds = %3 + %15 = icmp slt i64 %1, 0 + br i1 %15, label %16, label %48 + +16: ; preds = %14 + %17 = tail call align 1 ptr @llvm.threadlocal.address.p0(ptr align 1 @softfloat_detectTininess) + %18 = load i8, ptr %17, align 1, !tbaa !3 + %19 = icmp eq i8 %18, 0 + %20 = icmp ne i64 %1, -1 + %or.cond4 = or i1 %20, %19 + br i1 %or.cond4, label %25, label %21 + +21: ; preds = %16 + %22 = zext nneg i8 %.046 to i64 + %23 = add i64 %2, %22 + %24 = icmp ult i64 %23, 32768 + br label %25 + +25: ; preds = %21, %16 + %26 = phi i1 [ true, %16 ], [ %24, %21 ] + %27 = trunc i64 %2 to i32 + %28 = sub nsw i64 0, %1 + %29 = icmp samesign ult i64 %28, 31 + br i1 %29, label %30, label %39 + +30: ; preds = %25 + %31 = trunc nuw nsw i64 %28 to i32 + %32 = lshr i32 %27, %31 + %33 = sub nsw i32 0, %31 + %34 = and i32 %33, 31 + %35 = shl i32 %27, %34 + %36 = icmp ne i32 %35, 0 + %37 = zext i1 %36 to i32 + %38 = or i32 %32, %37 br label %softfloat_shiftRightJam32.exit -40: ; preds = %26 - %41 = icmp ne i32 %28, 0 - %42 = zext i1 %41 to i32 +39: ; preds = %25 + %40 = icmp ne i32 %27, 0 + %41 = zext i1 %40 to i32 br label %softfloat_shiftRightJam32.exit -softfloat_shiftRightJam32.exit: ; preds = %31, %40 - %43 = phi i32 [ %39, %31 ], [ %42, %40 ] - %44 = zext nneg i32 %43 to i64 - %45 = trunc i32 %43 to i8 - %46 = and i32 %43, 127 - %47 = icmp ne i32 %46, 0 - %or.cond7 = select i1 %27, i1 %47, i1 false - br i1 %or.cond7, label %48, label %58 +softfloat_shiftRightJam32.exit: ; preds = %30, %39 + %42 = phi i32 [ %38, %30 ], [ %41, %39 ] + %43 = zext nneg i32 %42 to i64 + %44 = trunc i32 %42 to i8 + %45 = and i32 %42, 127 + %46 = icmp ne i32 %45, 0 + %or.cond7 = select i1 %26, i1 %46, i1 false + br i1 %or.cond7, label %47, label %57 -48: ; preds = %softfloat_shiftRightJam32.exit +47: ; preds = %softfloat_shiftRightJam32.exit tail call void @softfloat_raiseFlags(i8 noundef zeroext 2) #3 - br label %58 + br label %57 -49: ; preds = %15 - %50 = icmp samesign ugt i64 %1, 253 - br i1 %50, label %55, label %51 +48: ; preds = %14 + %49 = icmp samesign ugt i64 %1, 253 + br i1 %49, label %54, label %50 -51: ; preds = %49 - %52 = zext nneg i8 %.046 to i64 - %53 = add i64 %2, %52 - %54 = icmp ugt i64 %53, 32767 - br i1 %54, label %55, label %58 +50: ; preds = %48 + %51 = zext nneg i8 %.046 to i64 + %52 = add i64 %2, %51 + %53 = icmp ugt i64 %52, 32767 + br i1 %53, label %54, label %57 -55: ; preds = %51, %49 +54: ; preds = %50, %48 tail call void @softfloat_raiseFlags(i8 noundef zeroext 5) #3 - %56 = select i1 %0, i64 65408, i64 32640 + %55 = select i1 %0, i64 65408, i64 32640 %.not = icmp eq i8 %.046, 0 %.neg = sext i1 %.not to i64 - %57 = add nsw i64 %56, %.neg - br label %80 + %56 = add nsw i64 %55, %.neg + br label %79 -58: ; preds = %48, %softfloat_shiftRightJam32.exit, %51, %3 - %.045.in = phi i8 [ %45, %48 ], [ %45, %softfloat_shiftRightJam32.exit ], [ %12, %51 ], [ %12, %3 ] - %.043 = phi i64 [ %44, %48 ], [ %44, %softfloat_shiftRightJam32.exit ], [ %2, %51 ], [ %2, %3 ] - %.0 = phi i64 [ 0, %48 ], [ 0, %softfloat_shiftRightJam32.exit ], [ 253, %51 ], [ %1, %3 ] +57: ; preds = %47, %softfloat_shiftRightJam32.exit, %50, %3 + %.045.in = phi i8 [ %44, %47 ], [ %44, %softfloat_shiftRightJam32.exit ], [ %11, %50 ], [ %11, %3 ] + %.043 = phi i64 [ %43, %47 ], [ %43, %softfloat_shiftRightJam32.exit ], [ %2, %50 ], [ %2, %3 ] + %.0 = phi i64 [ 0, %47 ], [ 0, %softfloat_shiftRightJam32.exit ], [ 253, %50 ], [ %1, %3 ] %.045 = and i8 %.045.in, 127 - %59 = zext nneg i8 %.046 to i64 - %60 = add i64 %.043, %59 - %61 = lshr i64 %60, 7 + %58 = zext nneg i8 %.046 to i64 + %59 = add i64 %.043, %58 + %60 = lshr i64 %59, 7 %.not52 = icmp eq i8 %.045, 0 - br i1 %.not52, label %69, label %62 + br i1 %.not52, label %68, label %61 -62: ; preds = %58 - %63 = tail call align 1 ptr @llvm.threadlocal.address.p0(ptr align 1 @softfloat_exceptionFlags) - %64 = load i8, ptr %63, align 1, !tbaa !3 - %65 = or i8 %64, 1 - store i8 %65, ptr %63, align 1, !tbaa !3 - %66 = icmp eq i8 %5, 5 - br i1 %66, label %67, label %69 +61: ; preds = %57 + %62 = tail call align 1 ptr @llvm.threadlocal.address.p0(ptr align 1 @softfloat_exceptionFlags) + %63 = load i8, ptr %62, align 1, !tbaa !3 + %64 = or i8 %63, 1 + store i8 %64, ptr %62, align 1, !tbaa !3 + %65 = icmp eq i8 %5, 5 + br i1 %65, label %66, label %68 -67: ; preds = %62 - %68 = or i64 %61, 1 - br label %74 +66: ; preds = %61 + %67 = or i64 %60, 1 + br label %73 -69: ; preds = %62, %58 +68: ; preds = %61, %57 %.not53 = icmp eq i8 %.045, 64 - %70 = and i1 %6, %.not53 - %71 = zext i1 %70 to i64 - %72 = xor i64 %71, -1 - %73 = and i64 %61, %72 - %.not54 = icmp eq i64 %73, 0 + %69 = and i1 %6, %.not53 + %70 = zext i1 %69 to i64 + %71 = xor i64 %70, -1 + %72 = and i64 %60, %71 + %.not54 = icmp eq i64 %72, 0 %spec.select55 = select i1 %.not54, i64 0, i64 %.0 - br label %74 - -74: ; preds = %69, %67 - %.144 = phi i64 [ %68, %67 ], [ %73, %69 ] - %.1 = phi i64 [ %.0, %67 ], [ %spec.select55, %69 ] - %75 = select i1 %0, i64 32768, i64 0 - %76 = shl i64 %.1, 7 - %77 = and i64 %76, 8388480 - %78 = add nuw nsw i64 %.144, %75 - %79 = add nuw nsw i64 %78, %77 - br label %80 - -80: ; preds = %74, %55 - %.042 = phi i64 [ %79, %74 ], [ %57, %55 ] - %81 = trunc i64 %.042 to i16 - ret i16 %81 + br label %73 + +73: ; preds = %68, %66 + %.144 = phi i64 [ %67, %66 ], [ %72, %68 ] + %.1 = phi i64 [ %.0, %66 ], [ %spec.select55, %68 ] + %74 = select i1 %0, i64 32768, i64 0 + %75 = shl i64 %.1, 7 + %76 = and i64 %75, 8388480 + %77 = add nuw nsw i64 %.144, %74 + %78 = add nuw nsw i64 %77, %76 + br label %79 + +79: ; preds = %73, %54 + %.042 = phi i64 [ %78, %73 ], [ %56, %54 ] + %80 = trunc i64 %.042 to i16 + ret i16 %80 } ; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) diff --git a/bench/spike/optimized/s_roundPackToI32.ll b/bench/spike/optimized/s_roundPackToI32.ll index 7b8f1564631..db725c61b43 100644 --- a/bench/spike/optimized/s_roundPackToI32.ll +++ b/bench/spike/optimized/s_roundPackToI32.ll @@ -10,53 +10,52 @@ define range(i64 -2147483648, 2147483648) i64 @softfloat_roundPackToI32(i1 nound %5 = icmp eq i8 %2, 0 %6 = icmp ne i8 %2, 4 %or.cond = xor i1 %5, %6 - %7 = zext i8 %2 to i32 - %8 = select i1 %0, i32 2, i32 3 - %9 = icmp eq i32 %8, %7 - %10 = select i1 %9, i64 127, i64 0 - %.029 = select i1 %or.cond, i64 %10, i64 64 - %11 = add i64 %.029, %1 - %.not = icmp ult i64 %11, 549755813888 - br i1 %.not, label %12, label %30 + %7 = select i1 %0, i8 2, i8 3 + %8 = icmp eq i8 %7, %2 + %9 = select i1 %8, i64 127, i64 0 + %.029 = select i1 %or.cond, i64 %9, i64 64 + %10 = add i64 %.029, %1 + %.not = icmp ult i64 %10, 549755813888 + br i1 %.not, label %11, label %29 -12: ; preds = %4 - %13 = trunc i64 %1 to i32 - %14 = and i32 %13, 127 - %15 = lshr i64 %11, 7 - %.not32 = icmp eq i32 %14, 64 - %16 = and i1 %5, %.not32 - %17 = zext i1 %16 to i64 - %18 = xor i64 %17, -1 - %19 = and i64 %15, %18 - %20 = sub nsw i64 0, %19 - %21 = select i1 %0, i64 %20, i64 %19 - %sext = shl i64 %21, 32 - %22 = ashr exact i64 %sext, 32 +11: ; preds = %4 + %12 = trunc i64 %1 to i32 + %13 = and i32 %12, 127 + %14 = lshr i64 %10, 7 + %.not32 = icmp eq i32 %13, 64 + %15 = and i1 %5, %.not32 + %16 = zext i1 %15 to i64 + %17 = xor i64 %16, -1 + %18 = and i64 %14, %17 + %19 = sub nsw i64 0, %18 + %20 = select i1 %0, i64 %19, i64 %18 + %sext = shl i64 %20, 32 + %21 = ashr exact i64 %sext, 32 %.not33 = icmp eq i64 %sext, 0 - %23 = icmp sgt i64 %22, -1 - %.not3435 = xor i1 %0, %23 + %22 = icmp sgt i64 %21, -1 + %.not3435 = xor i1 %0, %22 %or.cond36 = select i1 %.not33, i1 true, i1 %.not3435 - br i1 %or.cond36, label %24, label %30 + br i1 %or.cond36, label %23, label %29 -24: ; preds = %12 - %25 = icmp ne i32 %14, 0 - %or.cond5 = and i1 %3, %25 - br i1 %or.cond5, label %26, label %32 +23: ; preds = %11 + %24 = icmp ne i32 %13, 0 + %or.cond5 = and i1 %3, %24 + br i1 %or.cond5, label %25, label %31 -26: ; preds = %24 - %27 = tail call align 1 ptr @llvm.threadlocal.address.p0(ptr align 1 @softfloat_exceptionFlags) - %28 = load i8, ptr %27, align 1, !tbaa !3 - %29 = or i8 %28, 1 - store i8 %29, ptr %27, align 1, !tbaa !3 - br label %32 +25: ; preds = %23 + %26 = tail call align 1 ptr @llvm.threadlocal.address.p0(ptr align 1 @softfloat_exceptionFlags) + %27 = load i8, ptr %26, align 1, !tbaa !3 + %28 = or i8 %27, 1 + store i8 %28, ptr %26, align 1, !tbaa !3 + br label %31 -30: ; preds = %12, %4 +29: ; preds = %11, %4 tail call void @softfloat_raiseFlags(i8 noundef zeroext 16) #3 - %31 = select i1 %0, i64 -2147483648, i64 2147483647 - br label %32 + %30 = select i1 %0, i64 -2147483648, i64 2147483647 + br label %31 -32: ; preds = %24, %26, %30 - %.0 = phi i64 [ %31, %30 ], [ %22, %26 ], [ %22, %24 ] +31: ; preds = %23, %25, %29 + %.0 = phi i64 [ %30, %29 ], [ %21, %25 ], [ %21, %23 ] ret i64 %.0 } diff --git a/bench/spike/optimized/s_roundPackToI64.ll b/bench/spike/optimized/s_roundPackToI64.ll index a77124a056c..48d8f948e6c 100644 --- a/bench/spike/optimized/s_roundPackToI64.ll +++ b/bench/spike/optimized/s_roundPackToI64.ll @@ -10,63 +10,62 @@ define i64 @softfloat_roundPackToI64(i1 noundef zeroext %0, i64 noundef %1, i64 %6 = icmp eq i8 %3, 0 %7 = icmp ne i8 %3, 4 %or.cond = xor i1 %6, %7 - br i1 %or.cond, label %8, label %14 + br i1 %or.cond, label %8, label %13 8: ; preds = %5 - %9 = zext i8 %3 to i32 - %10 = select i1 %0, i32 2, i32 3 - %11 = icmp eq i32 %10, %9 - %12 = icmp ne i64 %2, 0 - %13 = and i1 %12, %11 - br i1 %13, label %16, label %24 - -14: ; preds = %5 - %15 = icmp slt i64 %2, 0 - br i1 %15, label %16, label %24 - -16: ; preds = %8, %14 - %17 = add i64 %1, 1 - %.not = icmp eq i64 %17, 0 - br i1 %.not, label %34, label %18 - -18: ; preds = %16 - %19 = and i64 %2, 9223372036854775807 - %.not33 = icmp eq i64 %19, 0 - %20 = and i1 %.not33, %6 - %21 = zext i1 %20 to i64 - %22 = xor i64 %21, -1 - %23 = and i64 %17, %22 - br label %24 - -24: ; preds = %8, %18, %14 - %.028 = phi i64 [ %23, %18 ], [ %1, %14 ], [ %1, %8 ] - %25 = sub i64 0, %.028 - %26 = select i1 %0, i64 %25, i64 %.028 + %9 = select i1 %0, i8 2, i8 3 + %10 = icmp eq i8 %9, %3 + %11 = icmp ne i64 %2, 0 + %12 = and i1 %11, %10 + br i1 %12, label %15, label %23 + +13: ; preds = %5 + %14 = icmp slt i64 %2, 0 + br i1 %14, label %15, label %23 + +15: ; preds = %8, %13 + %16 = add i64 %1, 1 + %.not = icmp eq i64 %16, 0 + br i1 %.not, label %33, label %17 + +17: ; preds = %15 + %18 = and i64 %2, 9223372036854775807 + %.not33 = icmp eq i64 %18, 0 + %19 = and i1 %.not33, %6 + %20 = zext i1 %19 to i64 + %21 = xor i64 %20, -1 + %22 = and i64 %16, %21 + br label %23 + +23: ; preds = %8, %17, %13 + %.028 = phi i64 [ %22, %17 ], [ %1, %13 ], [ %1, %8 ] + %24 = sub i64 0, %.028 + %25 = select i1 %0, i64 %24, i64 %.028 %.not34 = icmp eq i64 %.028, 0 - %27 = icmp sgt i64 %26, -1 - %.not3536 = xor i1 %0, %27 + %26 = icmp sgt i64 %25, -1 + %.not3536 = xor i1 %0, %26 %or.cond37 = or i1 %.not34, %.not3536 - br i1 %or.cond37, label %28, label %34 + br i1 %or.cond37, label %27, label %33 -28: ; preds = %24 - %29 = icmp ne i64 %2, 0 - %or.cond4 = and i1 %29, %4 - br i1 %or.cond4, label %30, label %36 +27: ; preds = %23 + %28 = icmp ne i64 %2, 0 + %or.cond4 = and i1 %28, %4 + br i1 %or.cond4, label %29, label %35 -30: ; preds = %28 - %31 = tail call align 1 ptr @llvm.threadlocal.address.p0(ptr align 1 @softfloat_exceptionFlags) - %32 = load i8, ptr %31, align 1, !tbaa !3 - %33 = or i8 %32, 1 - store i8 %33, ptr %31, align 1, !tbaa !3 - br label %36 +29: ; preds = %27 + %30 = tail call align 1 ptr @llvm.threadlocal.address.p0(ptr align 1 @softfloat_exceptionFlags) + %31 = load i8, ptr %30, align 1, !tbaa !3 + %32 = or i8 %31, 1 + store i8 %32, ptr %30, align 1, !tbaa !3 + br label %35 -34: ; preds = %24, %16 +33: ; preds = %23, %15 tail call void @softfloat_raiseFlags(i8 noundef zeroext 16) #3 - %35 = select i1 %0, i64 -9223372036854775808, i64 9223372036854775807 - br label %36 + %34 = select i1 %0, i64 -9223372036854775808, i64 9223372036854775807 + br label %35 -36: ; preds = %28, %30, %34 - %.0 = phi i64 [ %35, %34 ], [ %26, %30 ], [ %26, %28 ] +35: ; preds = %27, %29, %33 + %.0 = phi i64 [ %34, %33 ], [ %25, %29 ], [ %25, %27 ] ret i64 %.0 } diff --git a/bench/spike/optimized/s_roundPackToUI32.ll b/bench/spike/optimized/s_roundPackToUI32.ll index b9a22a6324f..314564d413e 100644 --- a/bench/spike/optimized/s_roundPackToUI32.ll +++ b/bench/spike/optimized/s_roundPackToUI32.ll @@ -10,47 +10,46 @@ define range(i64 0, 4294967296) i64 @softfloat_roundPackToUI32(i1 noundef zeroex %5 = icmp eq i8 %2, 0 %6 = icmp ne i8 %2, 4 %or.cond = xor i1 %5, %6 - %7 = zext i8 %2 to i32 - %8 = select i1 %0, i32 2, i32 3 - %9 = icmp eq i32 %8, %7 - %10 = select i1 %9, i64 127, i64 0 - %.027 = select i1 %or.cond, i64 %10, i64 64 - %11 = add i64 %.027, %1 - %.not = icmp ult i64 %11, 549755813888 - br i1 %.not, label %12, label %27 + %7 = select i1 %0, i8 2, i8 3 + %8 = icmp eq i8 %7, %2 + %9 = select i1 %8, i64 127, i64 0 + %.027 = select i1 %or.cond, i64 %9, i64 64 + %10 = add i64 %.027, %1 + %.not = icmp ult i64 %10, 549755813888 + br i1 %.not, label %11, label %26 -12: ; preds = %4 - %13 = trunc i64 %1 to i32 - %14 = and i32 %13, 127 - %15 = lshr i64 %11, 7 - %.not29 = icmp eq i32 %14, 64 - %16 = and i1 %5, %.not29 - %17 = zext i1 %16 to i64 - %18 = xor i64 %17, -1 - %19 = and i64 %15, %18 - %20 = icmp ne i64 %19, 0 - %or.cond4 = select i1 %0, i1 %20, i1 false - br i1 %or.cond4, label %27, label %21 +11: ; preds = %4 + %12 = trunc i64 %1 to i32 + %13 = and i32 %12, 127 + %14 = lshr i64 %10, 7 + %.not29 = icmp eq i32 %13, 64 + %15 = and i1 %5, %.not29 + %16 = zext i1 %15 to i64 + %17 = xor i64 %16, -1 + %18 = and i64 %14, %17 + %19 = icmp ne i64 %18, 0 + %or.cond4 = select i1 %0, i1 %19, i1 false + br i1 %or.cond4, label %26, label %20 -21: ; preds = %12 - %22 = icmp ne i32 %14, 0 - %or.cond7 = and i1 %3, %22 - br i1 %or.cond7, label %23, label %29 +20: ; preds = %11 + %21 = icmp ne i32 %13, 0 + %or.cond7 = and i1 %3, %21 + br i1 %or.cond7, label %22, label %28 -23: ; preds = %21 - %24 = tail call align 1 ptr @llvm.threadlocal.address.p0(ptr align 1 @softfloat_exceptionFlags) - %25 = load i8, ptr %24, align 1, !tbaa !3 - %26 = or i8 %25, 1 - store i8 %26, ptr %24, align 1, !tbaa !3 - br label %29 +22: ; preds = %20 + %23 = tail call align 1 ptr @llvm.threadlocal.address.p0(ptr align 1 @softfloat_exceptionFlags) + %24 = load i8, ptr %23, align 1, !tbaa !3 + %25 = or i8 %24, 1 + store i8 %25, ptr %23, align 1, !tbaa !3 + br label %28 -27: ; preds = %12, %4 +26: ; preds = %11, %4 tail call void @softfloat_raiseFlags(i8 noundef zeroext 16) #3 - %28 = select i1 %0, i64 0, i64 4294967295 - br label %29 + %27 = select i1 %0, i64 0, i64 4294967295 + br label %28 -29: ; preds = %21, %23, %27 - %.0 = phi i64 [ %28, %27 ], [ %19, %23 ], [ %19, %21 ] +28: ; preds = %20, %22, %26 + %.0 = phi i64 [ %27, %26 ], [ %18, %22 ], [ %18, %20 ] ret i64 %.0 } diff --git a/bench/spike/optimized/s_roundToUI32.ll b/bench/spike/optimized/s_roundToUI32.ll index c82d4a58c29..4c7a6a33adf 100644 --- a/bench/spike/optimized/s_roundToUI32.ll +++ b/bench/spike/optimized/s_roundToUI32.ll @@ -10,46 +10,45 @@ define range(i64 0, 4294967296) i64 @softfloat_roundToUI32(i1 noundef zeroext %0 %5 = icmp eq i8 %2, 0 %6 = icmp ne i8 %2, 4 %or.cond = xor i1 %5, %6 - %7 = zext i8 %2 to i32 - %8 = select i1 %0, i32 2, i32 3 - %9 = icmp eq i32 %8, %7 - %10 = select i1 %9, i64 4095, i64 0 - %.026 = select i1 %or.cond, i64 %10, i64 2048 - %11 = and i64 %1, 4095 - %12 = add i64 %.026, %1 - %.not = icmp ult i64 %12, 17592186044416 - br i1 %.not, label %13, label %26 + %7 = select i1 %0, i8 2, i8 3 + %8 = icmp eq i8 %7, %2 + %9 = select i1 %8, i64 4095, i64 0 + %.026 = select i1 %or.cond, i64 %9, i64 2048 + %10 = and i64 %1, 4095 + %11 = add i64 %.026, %1 + %.not = icmp ult i64 %11, 17592186044416 + br i1 %.not, label %12, label %25 -13: ; preds = %4 - %14 = lshr i64 %12, 12 - %.not28 = icmp eq i64 %11, 2048 - %15 = and i1 %.not28, %5 - %16 = zext i1 %15 to i64 - %17 = xor i64 %16, -1 - %18 = and i64 %14, %17 - %19 = icmp ne i64 %18, 0 - %or.cond4 = and i1 %0, %19 - br i1 %or.cond4, label %26, label %20 +12: ; preds = %4 + %13 = lshr i64 %11, 12 + %.not28 = icmp eq i64 %10, 2048 + %14 = and i1 %.not28, %5 + %15 = zext i1 %14 to i64 + %16 = xor i64 %15, -1 + %17 = and i64 %13, %16 + %18 = icmp ne i64 %17, 0 + %or.cond4 = and i1 %0, %18 + br i1 %or.cond4, label %25, label %19 -20: ; preds = %13 - %21 = icmp ne i64 %11, 0 - %or.cond6 = and i1 %3, %21 - br i1 %or.cond6, label %22, label %28 +19: ; preds = %12 + %20 = icmp ne i64 %10, 0 + %or.cond6 = and i1 %3, %20 + br i1 %or.cond6, label %21, label %27 -22: ; preds = %20 - %23 = tail call align 1 ptr @llvm.threadlocal.address.p0(ptr align 1 @softfloat_exceptionFlags) - %24 = load i8, ptr %23, align 1, !tbaa !3 - %25 = or i8 %24, 1 - store i8 %25, ptr %23, align 1, !tbaa !3 - br label %28 +21: ; preds = %19 + %22 = tail call align 1 ptr @llvm.threadlocal.address.p0(ptr align 1 @softfloat_exceptionFlags) + %23 = load i8, ptr %22, align 1, !tbaa !3 + %24 = or i8 %23, 1 + store i8 %24, ptr %22, align 1, !tbaa !3 + br label %27 -26: ; preds = %13, %4 +25: ; preds = %12, %4 tail call void @softfloat_raiseFlags(i8 noundef zeroext 16) #3 - %27 = select i1 %0, i64 0, i64 4294967295 - br label %28 + %26 = select i1 %0, i64 0, i64 4294967295 + br label %27 -28: ; preds = %20, %22, %26 - %.0 = phi i64 [ %27, %26 ], [ %18, %22 ], [ %18, %20 ] +27: ; preds = %19, %21, %25 + %.0 = phi i64 [ %26, %25 ], [ %17, %21 ], [ %17, %19 ] ret i64 %.0 } diff --git a/bench/sqlite/optimized/sqlite3.ll b/bench/sqlite/optimized/sqlite3.ll index 625e834303b..7621ccd099c 100644 --- a/bench/sqlite/optimized/sqlite3.ll +++ b/bench/sqlite/optimized/sqlite3.ll @@ -291245,238 +291245,236 @@ sqlite3StrICmp.exit.thread: ; preds = %..critedge31_crit_e ; Function Attrs: nounwind uwtable define internal fastcc i32 @sqlite3TriggerColmask(ptr noundef %0, ptr noundef %1, ptr noundef readonly captures(address_is_null) %2, i32 noundef range(i32 0, 2) %3, i32 noundef range(i32 1, 4) %4, ptr noundef nonnull %5, i32 noundef %6) unnamed_addr #0 { %.not = icmp eq ptr %2, null - %8 = select i1 %.not, i32 129, i32 130 - %9 = getelementptr inbounds nuw i8, ptr %5, i64 63 - %10 = load i8, ptr %9, align 1, !tbaa !691 - %11 = icmp eq i8 %10, 2 - br i1 %11, label %.loopexit, label %.preheader + %8 = getelementptr inbounds nuw i8, ptr %5, i64 63 + %9 = load i8, ptr %8, align 1, !tbaa !691 + %10 = icmp eq i8 %9, 2 + br i1 %10, label %.loopexit, label %.preheader .preheader: ; preds = %7 %.not2438 = icmp eq ptr %1, null br i1 %.not2438, label %.loopexit, label %.lr.ph42 .lr.ph42: ; preds = %.preheader + %11 = select i1 %.not, i8 -127, i8 -126 %12 = getelementptr i8, ptr %2, i64 16 %13 = getelementptr inbounds nuw i8, ptr %0, i64 152 %14 = zext nneg i32 %3 to i64 br i1 %.not, label %.lr.ph42.split.us, label %.lr.ph42.split .lr.ph42.split.us: ; preds = %.lr.ph42, %checkColumnOverlap.exit.thread.us - %.02140.us = phi ptr [ %42, %checkColumnOverlap.exit.thread.us ], [ %1, %.lr.ph42 ] + %.02140.us = phi ptr [ %41, %checkColumnOverlap.exit.thread.us ], [ %1, %.lr.ph42 ] %.02239.us = phi i32 [ %.2.us, %checkColumnOverlap.exit.thread.us ], [ 0, %.lr.ph42 ] %15 = getelementptr inbounds nuw i8, ptr %.02140.us, i64 16 %16 = load i8, ptr %15, align 8, !tbaa !2527 - %17 = zext i8 %16 to i32 - %18 = icmp eq i32 %8, %17 - br i1 %18, label %19, label %checkColumnOverlap.exit.thread.us + %17 = icmp eq i8 %11, %16 + br i1 %17, label %18, label %checkColumnOverlap.exit.thread.us -19: ; preds = %.lr.ph42.split.us - %20 = getelementptr inbounds nuw i8, ptr %.02140.us, i64 17 - %21 = load i8, ptr %20, align 1, !tbaa !2528 - %22 = zext i8 %21 to i32 - %23 = and i32 %4, %22 - %.not25.us = icmp eq i32 %23, 0 +18: ; preds = %.lr.ph42.split.us + %19 = getelementptr inbounds nuw i8, ptr %.02140.us, i64 17 + %20 = load i8, ptr %19, align 1, !tbaa !2528 + %21 = zext i8 %20 to i32 + %22 = and i32 %4, %21 + %.not25.us = icmp eq i32 %22, 0 br i1 %.not25.us, label %checkColumnOverlap.exit.thread.us, label %checkColumnOverlap.exit.us -checkColumnOverlap.exit.us: ; preds = %19 - %24 = getelementptr inbounds nuw i8, ptr %.02140.us, i64 18 - %25 = load i8, ptr %24, align 2, !tbaa !121 - %.not27.us = icmp eq i8 %25, 0 - br i1 %.not27.us, label %26, label %checkColumnOverlap.exit.thread.us - -26: ; preds = %checkColumnOverlap.exit.us - %27 = load ptr, ptr %13, align 8, !tbaa !2183 - %.not.i.us = icmp eq ptr %27, null - %..i.us = select i1 %.not.i.us, ptr %0, ptr %27 - %28 = getelementptr inbounds nuw i8, ptr %..i.us, i64 168 - %.0.i35.us = load ptr, ptr %28, align 8, !tbaa !3228 +checkColumnOverlap.exit.us: ; preds = %18 + %23 = getelementptr inbounds nuw i8, ptr %.02140.us, i64 18 + %24 = load i8, ptr %23, align 2, !tbaa !121 + %.not27.us = icmp eq i8 %24, 0 + br i1 %.not27.us, label %25, label %checkColumnOverlap.exit.thread.us + +25: ; preds = %checkColumnOverlap.exit.us + %26 = load ptr, ptr %13, align 8, !tbaa !2183 + %.not.i.us = icmp eq ptr %26, null + %..i.us = select i1 %.not.i.us, ptr %0, ptr %26 + %27 = getelementptr inbounds nuw i8, ptr %..i.us, i64 168 + %.0.i35.us = load ptr, ptr %27, align 8, !tbaa !3228 %.not19.i36.us = icmp eq ptr %.0.i35.us, null br i1 %.not19.i36.us, label %getRowTrigger.exit.us, label %.lr.ph.us -.lr.ph.us: ; preds = %26, %.critedge2.i.us - %.0.i37.us = phi ptr [ %.0.i.us, %.critedge2.i.us ], [ %.0.i35.us, %26 ] - %29 = load ptr, ptr %.0.i37.us, align 8, !tbaa !3229 - %.not20.i.us = icmp eq ptr %29, %.02140.us - br i1 %.not20.i.us, label %30, label %.critedge2.i.us +.lr.ph.us: ; preds = %25, %.critedge2.i.us + %.0.i37.us = phi ptr [ %.0.i.us, %.critedge2.i.us ], [ %.0.i35.us, %25 ] + %28 = load ptr, ptr %.0.i37.us, align 8, !tbaa !3229 + %.not20.i.us = icmp eq ptr %28, %.02140.us + br i1 %.not20.i.us, label %29, label %.critedge2.i.us -30: ; preds = %.lr.ph.us - %31 = getelementptr inbounds nuw i8, ptr %.0.i37.us, i64 24 - %32 = load i32, ptr %31, align 8, !tbaa !3230 - %.not21.i.us = icmp eq i32 %32, %6 +29: ; preds = %.lr.ph.us + %30 = getelementptr inbounds nuw i8, ptr %.0.i37.us, i64 24 + %31 = load i32, ptr %30, align 8, !tbaa !3230 + %.not21.i.us = icmp eq i32 %31, %6 br i1 %.not21.i.us, label %getRowTrigger.exit.thread.us, label %.critedge2.i.us -.critedge2.i.us: ; preds = %30, %.lr.ph.us - %33 = getelementptr inbounds nuw i8, ptr %.0.i37.us, i64 8 - %.0.i.us = load ptr, ptr %33, align 8, !tbaa !3228 +.critedge2.i.us: ; preds = %29, %.lr.ph.us + %32 = getelementptr inbounds nuw i8, ptr %.0.i37.us, i64 8 + %.0.i.us = load ptr, ptr %32, align 8, !tbaa !3228 %.not19.i.us = icmp eq ptr %.0.i.us, null br i1 %.not19.i.us, label %getRowTrigger.exit.us, label %.lr.ph.us, !llvm.loop !3231 -getRowTrigger.exit.us: ; preds = %.critedge2.i.us, %26 - %34 = tail call fastcc ptr @codeRowTrigger(ptr noundef %0, ptr noundef nonnull %.02140.us, ptr noundef nonnull %5, i32 noundef %6) - %35 = load ptr, ptr %0, align 8, !tbaa !497 - %36 = getelementptr inbounds nuw i8, ptr %35, i64 84 - store i32 -1, ptr %36, align 4, !tbaa !297 - %.not28.us = icmp eq ptr %34, null +getRowTrigger.exit.us: ; preds = %.critedge2.i.us, %25 + %33 = tail call fastcc ptr @codeRowTrigger(ptr noundef %0, ptr noundef nonnull %.02140.us, ptr noundef nonnull %5, i32 noundef %6) + %34 = load ptr, ptr %0, align 8, !tbaa !497 + %35 = getelementptr inbounds nuw i8, ptr %34, i64 84 + store i32 -1, ptr %35, align 4, !tbaa !297 + %.not28.us = icmp eq ptr %33, null br i1 %.not28.us, label %checkColumnOverlap.exit.thread.us, label %getRowTrigger.exit.thread.us -getRowTrigger.exit.thread.us: ; preds = %30, %getRowTrigger.exit.us - %.1.i33.us = phi ptr [ %34, %getRowTrigger.exit.us ], [ %.0.i37.us, %30 ] - %37 = getelementptr inbounds nuw i8, ptr %.1.i33.us, i64 28 - %38 = getelementptr inbounds nuw [2 x i32], ptr %37, i64 0, i64 %14 - %39 = load i32, ptr %38, align 4, !tbaa !16 - %40 = or i32 %39, %.02239.us +getRowTrigger.exit.thread.us: ; preds = %29, %getRowTrigger.exit.us + %.1.i33.us = phi ptr [ %33, %getRowTrigger.exit.us ], [ %.0.i37.us, %29 ] + %36 = getelementptr inbounds nuw i8, ptr %.1.i33.us, i64 28 + %37 = getelementptr inbounds nuw [2 x i32], ptr %36, i64 0, i64 %14 + %38 = load i32, ptr %37, align 4, !tbaa !16 + %39 = or i32 %38, %.02239.us br label %checkColumnOverlap.exit.thread.us -checkColumnOverlap.exit.thread.us: ; preds = %getRowTrigger.exit.thread.us, %getRowTrigger.exit.us, %checkColumnOverlap.exit.us, %19, %.lr.ph42.split.us - %.2.us = phi i32 [ %.02239.us, %19 ], [ %.02239.us, %.lr.ph42.split.us ], [ -1, %checkColumnOverlap.exit.us ], [ %40, %getRowTrigger.exit.thread.us ], [ %.02239.us, %getRowTrigger.exit.us ] - %41 = getelementptr inbounds nuw i8, ptr %.02140.us, i64 64 - %42 = load ptr, ptr %41, align 8, !tbaa !1744 - %.not24.us = icmp eq ptr %42, null +checkColumnOverlap.exit.thread.us: ; preds = %getRowTrigger.exit.thread.us, %getRowTrigger.exit.us, %checkColumnOverlap.exit.us, %18, %.lr.ph42.split.us + %.2.us = phi i32 [ %.02239.us, %18 ], [ %.02239.us, %.lr.ph42.split.us ], [ -1, %checkColumnOverlap.exit.us ], [ %39, %getRowTrigger.exit.thread.us ], [ %.02239.us, %getRowTrigger.exit.us ] + %40 = getelementptr inbounds nuw i8, ptr %.02140.us, i64 64 + %41 = load ptr, ptr %40, align 8, !tbaa !1744 + %.not24.us = icmp eq ptr %41, null br i1 %.not24.us, label %.loopexit, label %.lr.ph42.split.us, !llvm.loop !3232 .lr.ph42.split: ; preds = %.lr.ph42, %checkColumnOverlap.exit.thread - %.02140 = phi ptr [ %100, %checkColumnOverlap.exit.thread ], [ %1, %.lr.ph42 ] + %.02140 = phi ptr [ %98, %checkColumnOverlap.exit.thread ], [ %1, %.lr.ph42 ] %.02239 = phi i32 [ %.2, %checkColumnOverlap.exit.thread ], [ 0, %.lr.ph42 ] - %43 = getelementptr inbounds nuw i8, ptr %.02140, i64 16 - %44 = load i8, ptr %43, align 8, !tbaa !2527 - %45 = zext i8 %44 to i32 - %46 = icmp eq i32 %8, %45 - br i1 %46, label %47, label %checkColumnOverlap.exit.thread - -47: ; preds = %.lr.ph42.split - %48 = getelementptr inbounds nuw i8, ptr %.02140, i64 17 - %49 = load i8, ptr %48, align 1, !tbaa !2528 - %50 = zext i8 %49 to i32 - %51 = and i32 %4, %50 - %.not25 = icmp eq i32 %51, 0 - br i1 %.not25, label %checkColumnOverlap.exit.thread, label %52 + %42 = getelementptr inbounds nuw i8, ptr %.02140, i64 16 + %43 = load i8, ptr %42, align 8, !tbaa !2527 + %44 = icmp eq i8 %11, %43 + br i1 %44, label %45, label %checkColumnOverlap.exit.thread + +45: ; preds = %.lr.ph42.split + %46 = getelementptr inbounds nuw i8, ptr %.02140, i64 17 + %47 = load i8, ptr %46, align 1, !tbaa !2528 + %48 = zext i8 %47 to i32 + %49 = and i32 %4, %48 + %.not25 = icmp eq i32 %49, 0 + br i1 %.not25, label %checkColumnOverlap.exit.thread, label %50 -52: ; preds = %47 - %53 = getelementptr inbounds nuw i8, ptr %.02140, i64 32 - %54 = load ptr, ptr %53, align 8, !tbaa !130 - %55 = icmp eq ptr %54, null - br i1 %55, label %checkColumnOverlap.exit, label %.preheader.i +50: ; preds = %45 + %51 = getelementptr inbounds nuw i8, ptr %.02140, i64 32 + %52 = load ptr, ptr %51, align 8, !tbaa !130 + %53 = icmp eq ptr %52, null + br i1 %53, label %checkColumnOverlap.exit, label %.preheader.i -.preheader.i: ; preds = %52 - %56 = load i32, ptr %2, align 8, !tbaa !2120 - %57 = icmp sgt i32 %56, 0 - br i1 %57, label %.lr.ph.i, label %checkColumnOverlap.exit.thread +.preheader.i: ; preds = %50 + %54 = load i32, ptr %2, align 8, !tbaa !2120 + %55 = icmp sgt i32 %54, 0 + br i1 %55, label %.lr.ph.i, label %checkColumnOverlap.exit.thread .lr.ph.i: ; preds = %.preheader.i - %58 = load i32, ptr %54, align 8, !tbaa !1929 - %59 = icmp sgt i32 %58, 0 - %60 = getelementptr inbounds nuw i8, ptr %54, i64 8 - %wide.trip.count.i.i = zext nneg i32 %58 to i64 - br i1 %59, label %.lr.ph.i.us.preheader.i, label %checkColumnOverlap.exit.thread + %56 = load i32, ptr %52, align 8, !tbaa !1929 + %57 = icmp sgt i32 %56, 0 + %58 = getelementptr inbounds nuw i8, ptr %52, i64 8 + %wide.trip.count.i.i = zext nneg i32 %56 to i64 + br i1 %57, label %.lr.ph.i.us.preheader.i, label %checkColumnOverlap.exit.thread .lr.ph.i.us.preheader.i: ; preds = %.lr.ph.i - %wide.trip.count.i = zext nneg i32 %56 to i64 + %wide.trip.count.i = zext nneg i32 %54 to i64 br label %.lr.ph.i.us.i .lr.ph.i.us.i: ; preds = %sqlite3IdListIndex.exit.thread.loopexit.us.i, %.lr.ph.i.us.preheader.i %indvars.iv.i = phi i64 [ 0, %.lr.ph.i.us.preheader.i ], [ %indvars.iv.next.i, %sqlite3IdListIndex.exit.thread.loopexit.us.i ] %.idx.us.i = mul nuw nsw i64 %indvars.iv.i, 24 - %61 = getelementptr i8, ptr %12, i64 %.idx.us.i - %62 = load ptr, ptr %61, align 8, !tbaa !2125 - br label %63 + %59 = getelementptr i8, ptr %12, i64 %.idx.us.i + %60 = load ptr, ptr %59, align 8, !tbaa !2125 + br label %61 -63: ; preds = %sqlite3StrICmp.exit.i.us.i, %.lr.ph.i.us.i +61: ; preds = %sqlite3StrICmp.exit.i.us.i, %.lr.ph.i.us.i %indvars.iv.i.us.i = phi i64 [ 0, %.lr.ph.i.us.i ], [ %indvars.iv.next.i.us.i, %sqlite3StrICmp.exit.i.us.i ] - %64 = getelementptr inbounds nuw [1 x %struct.IdList_item], ptr %60, i64 0, i64 %indvars.iv.i.us.i - %65 = load ptr, ptr %64, align 8, !tbaa !1931 - br label %66 + %62 = getelementptr inbounds nuw [1 x %struct.IdList_item], ptr %58, i64 0, i64 %indvars.iv.i.us.i + %63 = load ptr, ptr %62, align 8, !tbaa !1931 + br label %64 -66: ; preds = %79, %63 - %.013.i.i.us.i = phi ptr [ %62, %63 ], [ %81, %79 ] - %.0.i.i.us.i = phi ptr [ %65, %63 ], [ %80, %79 ] - %67 = load i8, ptr %.0.i.i.us.i, align 1, !tbaa !198 - %68 = load i8, ptr %.013.i.i.us.i, align 1, !tbaa !198 - %69 = icmp eq i8 %67, %68 - br i1 %69, label %77, label %70 +64: ; preds = %77, %61 + %.013.i.i.us.i = phi ptr [ %60, %61 ], [ %79, %77 ] + %.0.i.i.us.i = phi ptr [ %63, %61 ], [ %78, %77 ] + %65 = load i8, ptr %.0.i.i.us.i, align 1, !tbaa !198 + %66 = load i8, ptr %.013.i.i.us.i, align 1, !tbaa !198 + %67 = icmp eq i8 %65, %66 + br i1 %67, label %75, label %68 -70: ; preds = %66 - %71 = zext i8 %67 to i64 - %72 = getelementptr inbounds nuw [274 x i8], ptr @sqlite3UpperToLower, i64 0, i64 %71 - %73 = load i8, ptr %72, align 1, !tbaa !198 - %74 = zext i8 %68 to i64 - %75 = getelementptr inbounds nuw [274 x i8], ptr @sqlite3UpperToLower, i64 0, i64 %74 - %76 = load i8, ptr %75, align 1, !tbaa !198 - %.not.i.i.us.i = icmp eq i8 %73, %76 - br i1 %.not.i.i.us.i, label %79, label %sqlite3StrICmp.exit.i.us.i +68: ; preds = %64 + %69 = zext i8 %65 to i64 + %70 = getelementptr inbounds nuw [274 x i8], ptr @sqlite3UpperToLower, i64 0, i64 %69 + %71 = load i8, ptr %70, align 1, !tbaa !198 + %72 = zext i8 %66 to i64 + %73 = getelementptr inbounds nuw [274 x i8], ptr @sqlite3UpperToLower, i64 0, i64 %72 + %74 = load i8, ptr %73, align 1, !tbaa !198 + %.not.i.i.us.i = icmp eq i8 %71, %74 + br i1 %.not.i.i.us.i, label %77, label %sqlite3StrICmp.exit.i.us.i -sqlite3StrICmp.exit.i.us.i: ; preds = %70 +sqlite3StrICmp.exit.i.us.i: ; preds = %68 %indvars.iv.next.i.us.i = add nuw nsw i64 %indvars.iv.i.us.i, 1 %exitcond.not.i.us.i = icmp eq i64 %indvars.iv.next.i.us.i, %wide.trip.count.i.i - br i1 %exitcond.not.i.us.i, label %sqlite3IdListIndex.exit.thread.loopexit.us.i, label %63, !llvm.loop !2652 + br i1 %exitcond.not.i.us.i, label %sqlite3IdListIndex.exit.thread.loopexit.us.i, label %61, !llvm.loop !2652 -77: ; preds = %66 - %78 = icmp eq i8 %67, 0 - br i1 %78, label %checkColumnOverlap.exit, label %79 +75: ; preds = %64 + %76 = icmp eq i8 %65, 0 + br i1 %76, label %checkColumnOverlap.exit, label %77 -79: ; preds = %77, %70 - %80 = getelementptr inbounds nuw i8, ptr %.0.i.i.us.i, i64 1 - %81 = getelementptr inbounds nuw i8, ptr %.013.i.i.us.i, i64 1 - br label %66 +77: ; preds = %75, %68 + %78 = getelementptr inbounds nuw i8, ptr %.0.i.i.us.i, i64 1 + %79 = getelementptr inbounds nuw i8, ptr %.013.i.i.us.i, i64 1 + br label %64 sqlite3IdListIndex.exit.thread.loopexit.us.i: ; preds = %sqlite3StrICmp.exit.i.us.i %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, %wide.trip.count.i br i1 %exitcond.not.i, label %checkColumnOverlap.exit.thread, label %.lr.ph.i.us.i, !llvm.loop !3237 -checkColumnOverlap.exit: ; preds = %77, %52 - %82 = getelementptr inbounds nuw i8, ptr %.02140, i64 18 - %83 = load i8, ptr %82, align 2, !tbaa !121 - %.not27 = icmp eq i8 %83, 0 - br i1 %.not27, label %84, label %checkColumnOverlap.exit.thread - -84: ; preds = %checkColumnOverlap.exit - %85 = load ptr, ptr %13, align 8, !tbaa !2183 - %.not.i = icmp eq ptr %85, null - %..i = select i1 %.not.i, ptr %0, ptr %85 - %86 = getelementptr inbounds nuw i8, ptr %..i, i64 168 - %.0.i35 = load ptr, ptr %86, align 8, !tbaa !3228 +checkColumnOverlap.exit: ; preds = %75, %50 + %80 = getelementptr inbounds nuw i8, ptr %.02140, i64 18 + %81 = load i8, ptr %80, align 2, !tbaa !121 + %.not27 = icmp eq i8 %81, 0 + br i1 %.not27, label %82, label %checkColumnOverlap.exit.thread + +82: ; preds = %checkColumnOverlap.exit + %83 = load ptr, ptr %13, align 8, !tbaa !2183 + %.not.i = icmp eq ptr %83, null + %..i = select i1 %.not.i, ptr %0, ptr %83 + %84 = getelementptr inbounds nuw i8, ptr %..i, i64 168 + %.0.i35 = load ptr, ptr %84, align 8, !tbaa !3228 %.not19.i36 = icmp eq ptr %.0.i35, null br i1 %.not19.i36, label %getRowTrigger.exit, label %.lr.ph -.lr.ph: ; preds = %84, %.critedge2.i - %.0.i37 = phi ptr [ %.0.i, %.critedge2.i ], [ %.0.i35, %84 ] - %87 = load ptr, ptr %.0.i37, align 8, !tbaa !3229 - %.not20.i = icmp eq ptr %87, %.02140 - br i1 %.not20.i, label %88, label %.critedge2.i +.lr.ph: ; preds = %82, %.critedge2.i + %.0.i37 = phi ptr [ %.0.i, %.critedge2.i ], [ %.0.i35, %82 ] + %85 = load ptr, ptr %.0.i37, align 8, !tbaa !3229 + %.not20.i = icmp eq ptr %85, %.02140 + br i1 %.not20.i, label %86, label %.critedge2.i -88: ; preds = %.lr.ph - %89 = getelementptr inbounds nuw i8, ptr %.0.i37, i64 24 - %90 = load i32, ptr %89, align 8, !tbaa !3230 - %.not21.i = icmp eq i32 %90, %6 +86: ; preds = %.lr.ph + %87 = getelementptr inbounds nuw i8, ptr %.0.i37, i64 24 + %88 = load i32, ptr %87, align 8, !tbaa !3230 + %.not21.i = icmp eq i32 %88, %6 br i1 %.not21.i, label %getRowTrigger.exit.thread, label %.critedge2.i -.critedge2.i: ; preds = %88, %.lr.ph - %91 = getelementptr inbounds nuw i8, ptr %.0.i37, i64 8 - %.0.i = load ptr, ptr %91, align 8, !tbaa !3228 +.critedge2.i: ; preds = %86, %.lr.ph + %89 = getelementptr inbounds nuw i8, ptr %.0.i37, i64 8 + %.0.i = load ptr, ptr %89, align 8, !tbaa !3228 %.not19.i = icmp eq ptr %.0.i, null br i1 %.not19.i, label %getRowTrigger.exit, label %.lr.ph, !llvm.loop !3231 -getRowTrigger.exit: ; preds = %.critedge2.i, %84 - %92 = tail call fastcc ptr @codeRowTrigger(ptr noundef %0, ptr noundef nonnull %.02140, ptr noundef nonnull %5, i32 noundef %6) - %93 = load ptr, ptr %0, align 8, !tbaa !497 - %94 = getelementptr inbounds nuw i8, ptr %93, i64 84 - store i32 -1, ptr %94, align 4, !tbaa !297 - %.not28 = icmp eq ptr %92, null +getRowTrigger.exit: ; preds = %.critedge2.i, %82 + %90 = tail call fastcc ptr @codeRowTrigger(ptr noundef %0, ptr noundef nonnull %.02140, ptr noundef nonnull %5, i32 noundef %6) + %91 = load ptr, ptr %0, align 8, !tbaa !497 + %92 = getelementptr inbounds nuw i8, ptr %91, i64 84 + store i32 -1, ptr %92, align 4, !tbaa !297 + %.not28 = icmp eq ptr %90, null br i1 %.not28, label %checkColumnOverlap.exit.thread, label %getRowTrigger.exit.thread -getRowTrigger.exit.thread: ; preds = %88, %getRowTrigger.exit - %.1.i33 = phi ptr [ %92, %getRowTrigger.exit ], [ %.0.i37, %88 ] - %95 = getelementptr inbounds nuw i8, ptr %.1.i33, i64 28 - %96 = getelementptr inbounds nuw [2 x i32], ptr %95, i64 0, i64 %14 - %97 = load i32, ptr %96, align 4, !tbaa !16 - %98 = or i32 %97, %.02239 +getRowTrigger.exit.thread: ; preds = %86, %getRowTrigger.exit + %.1.i33 = phi ptr [ %90, %getRowTrigger.exit ], [ %.0.i37, %86 ] + %93 = getelementptr inbounds nuw i8, ptr %.1.i33, i64 28 + %94 = getelementptr inbounds nuw [2 x i32], ptr %93, i64 0, i64 %14 + %95 = load i32, ptr %94, align 4, !tbaa !16 + %96 = or i32 %95, %.02239 br label %checkColumnOverlap.exit.thread -checkColumnOverlap.exit.thread: ; preds = %sqlite3IdListIndex.exit.thread.loopexit.us.i, %.lr.ph.i, %.preheader.i, %getRowTrigger.exit, %getRowTrigger.exit.thread, %checkColumnOverlap.exit, %.lr.ph42.split, %47 - %.2 = phi i32 [ %.02239, %47 ], [ %.02239, %.lr.ph42.split ], [ -1, %checkColumnOverlap.exit ], [ %98, %getRowTrigger.exit.thread ], [ %.02239, %getRowTrigger.exit ], [ %.02239, %.preheader.i ], [ %.02239, %.lr.ph.i ], [ %.02239, %sqlite3IdListIndex.exit.thread.loopexit.us.i ] - %99 = getelementptr inbounds nuw i8, ptr %.02140, i64 64 - %100 = load ptr, ptr %99, align 8, !tbaa !1744 - %.not24 = icmp eq ptr %100, null +checkColumnOverlap.exit.thread: ; preds = %sqlite3IdListIndex.exit.thread.loopexit.us.i, %.lr.ph.i, %.preheader.i, %getRowTrigger.exit, %getRowTrigger.exit.thread, %checkColumnOverlap.exit, %.lr.ph42.split, %45 + %.2 = phi i32 [ %.02239, %45 ], [ %.02239, %.lr.ph42.split ], [ -1, %checkColumnOverlap.exit ], [ %96, %getRowTrigger.exit.thread ], [ %.02239, %getRowTrigger.exit ], [ %.02239, %.preheader.i ], [ %.02239, %.lr.ph.i ], [ %.02239, %sqlite3IdListIndex.exit.thread.loopexit.us.i ] + %97 = getelementptr inbounds nuw i8, ptr %.02140, i64 64 + %98 = load ptr, ptr %97, align 8, !tbaa !1744 + %.not24 = icmp eq ptr %98, null br i1 %.not24, label %.loopexit, label %.lr.ph42.split, !llvm.loop !3232 .loopexit: ; preds = %checkColumnOverlap.exit.thread, %checkColumnOverlap.exit.thread.us, %.preheader, %7 diff --git a/bench/stockfish/optimized/position.ll b/bench/stockfish/optimized/position.ll index d22bba56263..df8197cf7fb 100644 --- a/bench/stockfish/optimized/position.ll +++ b/bench/stockfish/optimized/position.ll @@ -841,17 +841,17 @@ _ZNKSt17basic_string_viewIcSt11char_traitsIcEE4findEcm.exit.thread: ; preds = %3 180: ; preds = %173 %181 = load i8, ptr %6, align 1 - %182 = zext i8 %181 to i32 - %183 = load i32, ptr %74, align 4 - %184 = icmp eq i32 %183, 0 - %185 = select i1 %184, i32 54, i32 51 - %186 = icmp eq i32 %185, %182 - br i1 %186, label %187, label %.critedge35 - -187: ; preds = %180 + %182 = load i32, ptr %74, align 4 + %183 = icmp eq i32 %182, 0 + %184 = select i1 %183, i8 54, i8 51 + %185 = icmp eq i8 %184, %181 + br i1 %185, label %186, label %.critedge35 + +186: ; preds = %180 + %187 = zext nneg i8 %181 to i32 %188 = load i8, ptr %5, align 1 %189 = zext i8 %188 to i32 - %190 = shl nuw nsw i32 %182, 3 + %190 = shl nuw nsw i32 %187, 3 %191 = add nuw nsw i32 %190, -489 %192 = add nsw i32 %191, %189 %193 = load ptr, ptr %9, align 8 @@ -878,7 +878,7 @@ _ZNKSt17basic_string_viewIcSt11char_traitsIcEE4findEcm.exit.thread: ; preds = %3 %.not27 = icmp eq i64 %212, 0 br i1 %.not27, label %.critedge35, label %213 -213: ; preds = %187 +213: ; preds = %186 %214 = getelementptr inbounds nuw [2 x i64], ptr %204, i64 0, i64 %200 %215 = load i64, ptr %214, align 8 %216 = icmp eq i32 %195, 1 @@ -905,7 +905,7 @@ _ZNKSt17basic_string_viewIcSt11char_traitsIcEE4findEcm.exit.thread: ; preds = %3 %.not29 = icmp eq i64 %233, 0 br i1 %.not29, label %236, label %.critedge35 -.critedge35: ; preds = %180, %173, %.critedge2, %213, %187, %223 +.critedge35: ; preds = %180, %173, %.critedge2, %213, %186, %223 %234 = load ptr, ptr %9, align 8 %235 = getelementptr inbounds nuw i8, ptr %234, i64 36 store i32 64, ptr %235, align 4 diff --git a/bench/wireshark/optimized/packet-dof.ll b/bench/wireshark/optimized/packet-dof.ll index 5f244db7309..2077d3c78d5 100644 --- a/bench/wireshark/optimized/packet-dof.ll +++ b/bench/wireshark/optimized/packet-dof.ll @@ -5858,28 +5858,31 @@ dof_oid_create_standard_string.exit: ; preds = %6, %12, %18 22: ; preds = %dof_oid_create_standard_string.exit, %4 %23 = tail call zeroext i8 @tvb_get_uint8(ptr noundef %0, i32 noundef 0) %24 = icmp slt i8 %23, 0 - %25 = and i8 %23, 64 - %.not80 = icmp eq i8 %25, 0 - %26 = and i8 %23, 63 - %..i = select i1 %.not80, i32 2, i32 4 - %.020.i = select i1 %24, i8 %26, i8 %23 - %27 = zext nneg i8 %.020.i to i32 - br i1 %24, label %.lr.ph.i, label %read_c4.exit - -.lr.ph.i: ; preds = %22, %.lr.ph.i - %.02331.i = phi i32 [ %.023.i, %.lr.ph.i ], [ 1, %22 ] - %.02229.i = phi i32 [ %31, %.lr.ph.i ], [ %27, %22 ] + %25 = and i8 %23, 63 + %.020.i = select i1 %24, i8 %25, i8 %23 + %26 = zext nneg i8 %.020.i to i32 + br i1 %24, label %.lr.ph.i.preheader, label %read_c4.exit + +.lr.ph.i.preheader: ; preds = %22 + %27 = and i8 %23, 64 + %.not81 = icmp eq i8 %27, 0 + %..i80 = select i1 %.not81, i32 1, i32 3 + br label %.lr.ph.i + +.lr.ph.i: ; preds = %.lr.ph.i.preheader, %.lr.ph.i + %.02331.i = phi i32 [ %.023.i, %.lr.ph.i ], [ 1, %.lr.ph.i.preheader ] + %.02229.i = phi i32 [ %31, %.lr.ph.i ], [ %26, %.lr.ph.i.preheader ] %28 = shl i32 %.02229.i, 8 %29 = tail call zeroext i8 @tvb_get_uint8(ptr noundef %0, i32 noundef %.02331.i) %30 = zext i8 %29 to i32 %31 = or disjoint i32 %28, %30 - %.023.i = add nuw i32 %.02331.i, 1 - %exitcond.not.i = icmp eq i32 %.023.i, %..i + %.023.i = add nuw nsw i32 %.02331.i, 1 + %exitcond.not.i = icmp eq i32 %..i80, %.02331.i br i1 %exitcond.not.i, label %read_c4.exit, label %.lr.ph.i, !llvm.loop !33 read_c4.exit: ; preds = %.lr.ph.i, %22 - %.022.lcssa.i = phi i32 [ %27, %22 ], [ %31, %.lr.ph.i ] - %.023.lcssa.i = phi i32 [ 1, %22 ], [ %..i, %.lr.ph.i ] + %.022.lcssa.i = phi i32 [ %26, %22 ], [ %31, %.lr.ph.i ] + %.023.lcssa.i = phi i32 [ 1, %22 ], [ %.023.i, %.lr.ph.i ] %32 = load i32, ptr @hf_oid_class, align 4 %33 = tail call ptr (ptr, i32, ptr, i32, i32, i32, ptr, ...) @proto_tree_add_uint_format(ptr noundef %2, i32 noundef %32, ptr noundef %0, i32 noundef 0, i32 noundef %.023.lcssa.i, i32 noundef %.022.lcssa.i, ptr noundef nonnull @.str.696, i32 noundef %.022.lcssa.i) %34 = icmp ult i32 %.022.lcssa.i, 128 @@ -7129,7 +7132,7 @@ DOFObjectID_GetIDClass.exit: ; preds = %.lr.ph.i.i DOFObjectID_GetIDClass.exit.thread: ; preds = %DOFObjectID_GetIDClass.exit %switch = icmp eq i8 %9, 2 - %spec.select151 = select i1 %switch, i64 2, i64 4 + %spec.select151152 = select i1 %switch, i64 1, i64 3 br label %.lr.ph.i.i49 .lr.ph.i.i49: ; preds = %.lr.ph.i.i49, %DOFObjectID_GetIDClass.exit.thread @@ -7141,7 +7144,7 @@ DOFObjectID_GetIDClass.exit.thread: ; preds = %DOFObjectID_GetIDCl %58 = load i8, ptr %57, align 1 %59 = zext i8 %58 to i32 %60 = or disjoint i32 %56, %59 - %exitcond.not.i.i53 = icmp eq i64 %indvars.iv.next.i.i52, %spec.select151 + %exitcond.not.i.i53 = icmp eq i64 %spec.select151152, %indvars.iv.i.i50 br i1 %exitcond.not.i.i53, label %DOFObjectID_GetIDClass.exit56, label %.lr.ph.i.i49, !llvm.loop !38 DOFObjectID_GetIDClass.exit56: ; preds = %.lr.ph.i.i49 @@ -8421,14 +8424,14 @@ define internal i32 @dissect_dnp_1(ptr noundef %0, ptr noundef %1, ptr noundef % br label %.lr.ph .lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph - %.0112173 = phi i32 [ %31, %.lr.ph ], [ 0, %.lr.ph.preheader ] - %.0116172 = phi i32 [ %32, %.lr.ph ], [ 0, %.lr.ph.preheader ] - %27 = shl i32 %.0112173, 8 - %28 = add nuw nsw i32 %.0116172, 2 + %.0112175 = phi i32 [ %31, %.lr.ph ], [ 0, %.lr.ph.preheader ] + %.0116174 = phi i32 [ %32, %.lr.ph ], [ 0, %.lr.ph.preheader ] + %27 = shl i32 %.0112175, 8 + %28 = add nuw nsw i32 %.0116174, 2 %29 = tail call zeroext i8 @tvb_get_uint8(ptr noundef %0, i32 noundef %28) %30 = zext i8 %29 to i32 %31 = or disjoint i32 %27, %30 - %32 = add nuw nsw i32 %.0116172, 1 + %32 = add nuw nsw i32 %.0116174, 1 %exitcond.not = icmp eq i32 %32, %24 br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !51 @@ -8445,39 +8448,42 @@ define internal i32 @dissect_dnp_1(ptr noundef %0, ptr noundef %1, ptr noundef % 37: ; preds = %._crit_edge, %34 %38 = phi i32 [ %.0108167.ph, %34 ], [ %33, %._crit_edge ] - %.0111166183188 = phi i32 [ %.0111166.ph, %34 ], [ %17, %._crit_edge ] + %.0111166185190 = phi i32 [ %.0111166.ph, %34 ], [ %17, %._crit_edge ] %.1113 = phi i32 [ %36, %34 ], [ %31, %._crit_edge ] - %39 = and i32 %.0111166183188, 4 + %39 = and i32 %.0111166185190, 4 %.not125 = icmp eq i32 %39, 0 br i1 %.not125, label %63, label %40 40: ; preds = %37 %41 = tail call zeroext i8 @tvb_get_uint8(ptr noundef %0, i32 noundef %38) %42 = icmp slt i8 %41, 0 - %43 = and i8 %41, 64 - %.not169 = icmp eq i8 %43, 0 - %44 = and i8 %41, 63 - %..i = select i1 %.not169, i32 2, i32 3 - %.020.i = select i1 %42, i8 %44, i8 %41 - %45 = zext nneg i8 %.020.i to i32 + %43 = and i8 %41, 63 + %.020.i = select i1 %42, i8 %43, i8 %41 + %44 = zext nneg i8 %.020.i to i32 %.02328.i = add nuw nsw i32 %38, 1 - br i1 %42, label %.lr.ph.i, label %read_c3.exit + br i1 %42, label %.lr.ph.i.preheader, label %read_c3.exit -.lr.ph.i: ; preds = %40, %.lr.ph.i - %.02331.i = phi i32 [ %.023.i, %.lr.ph.i ], [ %.02328.i, %40 ] - %.030.i = phi i32 [ %50, %.lr.ph.i ], [ 1, %40 ] - %.02229.i = phi i32 [ %49, %.lr.ph.i ], [ %45, %40 ] +.lr.ph.i.preheader: ; preds = %40 + %45 = and i8 %41, 64 + %.not170 = icmp eq i8 %45, 0 + %..i169 = select i1 %.not170, i32 1, i32 2 + br label %.lr.ph.i + +.lr.ph.i: ; preds = %.lr.ph.i.preheader, %.lr.ph.i + %.02331.i = phi i32 [ %.023.i, %.lr.ph.i ], [ %.02328.i, %.lr.ph.i.preheader ] + %.030.i = phi i32 [ %50, %.lr.ph.i ], [ 1, %.lr.ph.i.preheader ] + %.02229.i = phi i32 [ %49, %.lr.ph.i ], [ %44, %.lr.ph.i.preheader ] %46 = shl i32 %.02229.i, 8 %47 = tail call zeroext i8 @tvb_get_uint8(ptr noundef %0, i32 noundef %.02331.i) %48 = zext i8 %47 to i32 %49 = or disjoint i32 %46, %48 %50 = add nuw nsw i32 %.030.i, 1 - %.023.i = add nuw nsw i32 %.02331.i, 1 - %exitcond.not.i = icmp eq i32 %50, %..i + %.023.i = add i32 %.02331.i, 1 + %exitcond.not.i = icmp eq i32 %..i169, %.030.i br i1 %exitcond.not.i, label %read_c3.exit, label %.lr.ph.i, !llvm.loop !52 read_c3.exit: ; preds = %.lr.ph.i, %40 - %.022.lcssa.i = phi i32 [ %45, %40 ], [ %49, %.lr.ph.i ] + %.022.lcssa.i = phi i32 [ %44, %40 ], [ %49, %.lr.ph.i ] %.023.lcssa.i = phi i32 [ %.02328.i, %40 ], [ %.023.i, %.lr.ph.i ] %51 = load i32, ptr @hf_2009_9_dnp_1_srcport, align 4 %52 = sub i32 %.023.lcssa.i, %38 @@ -8527,37 +8533,40 @@ proto_item_set_generated.exit: ; preds = %69, %66, %63, %vali %.0161 = phi i32 [ %.022.lcssa.i, %validate_c3.exit ], [ 0, %63 ], [ 0, %66 ], [ 0, %69 ] %.0114 = phi i32 [ %62, %validate_c3.exit ], [ %.1113, %63 ], [ %.1113, %66 ], [ %.1113, %69 ] %.1 = phi i32 [ %.023.lcssa.i, %validate_c3.exit ], [ %38, %63 ], [ %38, %66 ], [ %38, %69 ] - %73 = and i32 %.0111166183188, 8 + %73 = and i32 %.0111166185190, 8 %.not126 = icmp eq i32 %73, 0 br i1 %.not126, label %97, label %74 74: ; preds = %proto_item_set_generated.exit %75 = tail call zeroext i8 @tvb_get_uint8(ptr noundef %0, i32 noundef %.1) %76 = icmp slt i8 %75, 0 - %77 = and i8 %75, 64 - %.not170 = icmp eq i8 %77, 0 - %78 = and i8 %75, 63 - %..i128 = select i1 %.not170, i32 2, i32 3 - %.020.i130 = select i1 %76, i8 %78, i8 %75 - %79 = zext nneg i8 %.020.i130 to i32 + %77 = and i8 %75, 63 + %.020.i130 = select i1 %76, i8 %77, i8 %75 + %78 = zext nneg i8 %.020.i130 to i32 %.02328.i131 = add i32 %.1, 1 - br i1 %76, label %.lr.ph.i135, label %read_c3.exit141 - -.lr.ph.i135: ; preds = %74, %.lr.ph.i135 - %.02331.i136 = phi i32 [ %.023.i139, %.lr.ph.i135 ], [ %.02328.i131, %74 ] - %.030.i137 = phi i32 [ %84, %.lr.ph.i135 ], [ 1, %74 ] - %.02229.i138 = phi i32 [ %83, %.lr.ph.i135 ], [ %79, %74 ] + br i1 %76, label %.lr.ph.i135.preheader, label %read_c3.exit141 + +.lr.ph.i135.preheader: ; preds = %74 + %79 = and i8 %75, 64 + %.not172 = icmp eq i8 %79, 0 + %..i128171 = select i1 %.not172, i32 1, i32 2 + br label %.lr.ph.i135 + +.lr.ph.i135: ; preds = %.lr.ph.i135.preheader, %.lr.ph.i135 + %.02331.i136 = phi i32 [ %.023.i139, %.lr.ph.i135 ], [ %.02328.i131, %.lr.ph.i135.preheader ] + %.030.i137 = phi i32 [ %84, %.lr.ph.i135 ], [ 1, %.lr.ph.i135.preheader ] + %.02229.i138 = phi i32 [ %83, %.lr.ph.i135 ], [ %78, %.lr.ph.i135.preheader ] %80 = shl i32 %.02229.i138, 8 %81 = tail call zeroext i8 @tvb_get_uint8(ptr noundef %0, i32 noundef %.02331.i136) %82 = zext i8 %81 to i32 %83 = or disjoint i32 %80, %82 %84 = add nuw nsw i32 %.030.i137, 1 - %.023.i139 = add nuw nsw i32 %.02331.i136, 1 - %exitcond.not.i140 = icmp eq i32 %84, %..i128 + %.023.i139 = add i32 %.02331.i136, 1 + %exitcond.not.i140 = icmp eq i32 %..i128171, %.030.i137 br i1 %exitcond.not.i140, label %read_c3.exit141, label %.lr.ph.i135, !llvm.loop !52 read_c3.exit141: ; preds = %.lr.ph.i135, %74 - %.022.lcssa.i132 = phi i32 [ %79, %74 ], [ %83, %.lr.ph.i135 ] + %.022.lcssa.i132 = phi i32 [ %78, %74 ], [ %83, %.lr.ph.i135 ] %.023.lcssa.i133 = phi i32 [ %.02328.i131, %74 ], [ %.023.i139, %.lr.ph.i135 ] %85 = load i32, ptr @hf_2009_9_dnp_1_dstport, align 4 %86 = sub i32 %.023.lcssa.i133, %.1 @@ -9166,7 +9175,7 @@ proto_item_set_generated.exit527: ; preds = %176, %173, %dof_oid %213 = lshr i32 %184, 5 %214 = and i32 %213, 3 %215 = getelementptr inbounds nuw i8, ptr %15, i64 80 - switch i32 %214, label %default.unreachable680 [ + switch i32 %214, label %default.unreachable682 [ i32 0, label %.thread608 i32 1, label %242 i32 2, label %216 @@ -9176,7 +9185,7 @@ proto_item_set_generated.exit527: ; preds = %176, %173, %dof_oid 216: ; preds = %210 br label %242 -default.unreachable680: ; preds = %210 +default.unreachable682: ; preds = %210 unreachable .thread608: ; preds = %210 @@ -9225,12 +9234,12 @@ default.unreachable680: ; preds = %210 br label %proto_item_set_generated.exit530 242: ; preds = %210, %216 - %.sink693.in = phi ptr [ %143, %216 ], [ %105, %210 ] + %.sink695.in = phi ptr [ %143, %216 ], [ %105, %210 ] %.sink.in = phi ptr [ %153, %216 ], [ %115, %210 ] store i8 1, ptr %215, align 8 - %.sink693 = load i32, ptr %.sink693.in, align 4 + %.sink695 = load i32, ptr %.sink695.in, align 4 %243 = getelementptr inbounds nuw i8, ptr %15, i64 88 - store i32 %.sink693, ptr %243, align 8 + store i32 %.sink695, ptr %243, align 8 %.sink = load ptr, ptr %.sink.in, align 8 %244 = getelementptr inbounds nuw i8, ptr %15, i64 96 store ptr %.sink, ptr %244, align 8 @@ -9449,31 +9458,31 @@ validate_c4.exit: ; preds = %282, %285 360: ; preds = %355, %353, %350 %361 = load ptr, ptr %327, align 8 %362 = icmp eq ptr %328, %15 - %or.cond509667 = or i1 %.not478, %362 - br i1 %or.cond509667, label %.preheader.preheader, label %.lr.ph + %or.cond509669 = or i1 %.not478, %362 + br i1 %or.cond509669, label %.preheader.preheader, label %.lr.ph .lr.ph: ; preds = %360 %363 = load i32, ptr @globals.8, align 4 br label %364 364: ; preds = %.lr.ph, %372 - %.0434670 = phi ptr [ %328, %.lr.ph ], [ %366, %372 ] - %.0436669 = phi ptr [ %361, %.lr.ph ], [ %.1437, %372 ] - %.0442668 = phi i32 [ 0, %.lr.ph ], [ %.1443, %372 ] - %365 = getelementptr inbounds nuw i8, ptr %.0434670, i64 152 + %.0434672 = phi ptr [ %328, %.lr.ph ], [ %366, %372 ] + %.0436671 = phi ptr [ %361, %.lr.ph ], [ %.1437, %372 ] + %.0442670 = phi i32 [ 0, %.lr.ph ], [ %.1443, %372 ] + %365 = getelementptr inbounds nuw i8, ptr %.0434672, i64 152 %366 = load ptr, ptr %365, align 8 - %367 = add i32 %.0442668, 1 + %367 = add i32 %.0442670, 1 %368 = icmp ugt i32 %367, %363 br i1 %368, label %369, label %372 369: ; preds = %364 - %370 = getelementptr inbounds nuw i8, ptr %.0436669, i64 152 + %370 = getelementptr inbounds nuw i8, ptr %.0436671, i64 152 %371 = load ptr, ptr %370, align 8 br label %372 372: ; preds = %369, %364 - %.1443 = phi i32 [ %.0442668, %369 ], [ %367, %364 ] - %.1437 = phi ptr [ %371, %369 ], [ %.0436669, %364 ] + %.1443 = phi i32 [ %.0442670, %369 ], [ %367, %364 ] + %.1437 = phi ptr [ %371, %369 ], [ %.0436671, %364 ] %.not484 = icmp eq ptr %366, null %373 = icmp eq ptr %366, %15 %or.cond509 = or i1 %.not484, %373 @@ -9603,30 +9612,33 @@ validate_c4.exit: ; preds = %282, %285 444: ; preds = %423 %445 = call zeroext i8 @tvb_get_uint8(ptr noundef %0, i32 noundef %442) %446 = icmp slt i8 %445, 0 - %447 = and i8 %445, 64 - %.not659 = icmp eq i8 %447, 0 - %448 = and i8 %445, 63 - %..i532 = select i1 %.not659, i32 2, i32 4 - %.020.i534 = select i1 %446, i8 %448, i8 %445 - %449 = zext nneg i8 %.020.i534 to i32 + %447 = and i8 %445, 63 + %.020.i534 = select i1 %446, i8 %447, i8 %445 + %448 = zext nneg i8 %.020.i534 to i32 %.02328.i535 = add i32 %.5426, 2 - br i1 %446, label %.lr.ph.i539, label %read_c4.exit545 - -.lr.ph.i539: ; preds = %444, %.lr.ph.i539 - %.02331.i540 = phi i32 [ %.023.i543, %.lr.ph.i539 ], [ %.02328.i535, %444 ] - %.030.i541 = phi i32 [ %454, %.lr.ph.i539 ], [ 1, %444 ] - %.02229.i542 = phi i32 [ %453, %.lr.ph.i539 ], [ %449, %444 ] + br i1 %446, label %.lr.ph.i539.preheader, label %read_c4.exit545 + +.lr.ph.i539.preheader: ; preds = %444 + %449 = and i8 %445, 64 + %.not660 = icmp eq i8 %449, 0 + %..i532659 = select i1 %.not660, i32 1, i32 3 + br label %.lr.ph.i539 + +.lr.ph.i539: ; preds = %.lr.ph.i539.preheader, %.lr.ph.i539 + %.02331.i540 = phi i32 [ %.023.i543, %.lr.ph.i539 ], [ %.02328.i535, %.lr.ph.i539.preheader ] + %.030.i541 = phi i32 [ %454, %.lr.ph.i539 ], [ 1, %.lr.ph.i539.preheader ] + %.02229.i542 = phi i32 [ %453, %.lr.ph.i539 ], [ %448, %.lr.ph.i539.preheader ] %450 = shl i32 %.02229.i542, 8 %451 = call zeroext i8 @tvb_get_uint8(ptr noundef %0, i32 noundef %.02331.i540) %452 = zext i8 %451 to i32 %453 = or disjoint i32 %450, %452 %454 = add nuw nsw i32 %.030.i541, 1 %.023.i543 = add i32 %.02331.i540, 1 - %exitcond.not.i544 = icmp eq i32 %454, %..i532 + %exitcond.not.i544 = icmp eq i32 %..i532659, %.030.i541 br i1 %exitcond.not.i544, label %read_c4.exit545, label %.lr.ph.i539, !llvm.loop !33 read_c4.exit545: ; preds = %.lr.ph.i539, %444 - %.022.lcssa.i536 = phi i32 [ %449, %444 ], [ %453, %.lr.ph.i539 ] + %.022.lcssa.i536 = phi i32 [ %448, %444 ], [ %453, %.lr.ph.i539 ] %.023.lcssa.i537 = phi i32 [ %.02328.i535, %444 ], [ %.023.i543, %.lr.ph.i539 ] %455 = load i32, ptr @hf_2009_12_dpp_2_3_sec_ssid, align 4 %456 = sub i32 %.023.lcssa.i537, %442 @@ -9667,27 +9679,27 @@ validate_c4.exit548: ; preds = %464, %461, %423 472: ; preds = %469 %473 = getelementptr inbounds nuw i8, ptr %468, i64 8 - %.0418671 = load ptr, ptr %473, align 8 - %.not496672 = icmp eq ptr %.0418671, null - br i1 %.not496672, label %.critedge, label %.lr.ph674 + %.0418673 = load ptr, ptr %473, align 8 + %.not496674 = icmp eq ptr %.0418673, null + br i1 %.not496674, label %.critedge, label %.lr.ph676 -.lr.ph674: ; preds = %472, %476 - %.0418673 = phi ptr [ %.0418, %476 ], [ %.0418671, %472 ] - %474 = load i32, ptr %.0418673, align 8 +.lr.ph676: ; preds = %472, %476 + %.0418675 = phi ptr [ %.0418, %476 ], [ %.0418673, %472 ] + %474 = load i32, ptr %.0418675, align 8 %475 = icmp eq i32 %spec.select, %474 br i1 %475, label %478, label %476 -476: ; preds = %.lr.ph674 - %477 = getelementptr inbounds nuw i8, ptr %.0418673, i64 32 +476: ; preds = %.lr.ph676 + %477 = getelementptr inbounds nuw i8, ptr %.0418675, i64 32 %.0418 = load ptr, ptr %477, align 8 %.not496 = icmp eq ptr %.0418, null - br i1 %.not496, label %.critedge, label %.lr.ph674, !llvm.loop !56 + br i1 %.not496, label %.critedge, label %.lr.ph676, !llvm.loop !56 -478: ; preds = %.lr.ph674 - %479 = getelementptr inbounds nuw i8, ptr %.0418673, i64 40 +478: ; preds = %.lr.ph676 + %479 = getelementptr inbounds nuw i8, ptr %.0418675, i64 40 %480 = load ptr, ptr %479, align 8 store ptr %480, ptr %18, align 8 - store ptr %.0418673, ptr %470, align 8 + store ptr %.0418675, ptr %470, align 8 br label %.critedge .critedge: ; preds = %476, %472, %478, %469, %validate_c4.exit548 @@ -9698,30 +9710,33 @@ validate_c4.exit548: ; preds = %464, %461, %423 482: ; preds = %.critedge %483 = call zeroext i8 @tvb_get_uint8(ptr noundef %0, i32 noundef %.7428) %484 = icmp slt i8 %483, 0 - %485 = and i8 %483, 64 - %.not660 = icmp eq i8 %485, 0 - %486 = and i8 %483, 63 - %..i549 = select i1 %.not660, i32 2, i32 4 - %.020.i551 = select i1 %484, i8 %486, i8 %483 - %487 = zext nneg i8 %.020.i551 to i32 + %485 = and i8 %483, 63 + %.020.i551 = select i1 %484, i8 %485, i8 %483 + %486 = zext nneg i8 %.020.i551 to i32 %.02328.i552 = add i32 %.7428, 1 - br i1 %484, label %.lr.ph.i556, label %read_c4.exit562 - -.lr.ph.i556: ; preds = %482, %.lr.ph.i556 - %.02331.i557 = phi i32 [ %.023.i560, %.lr.ph.i556 ], [ %.02328.i552, %482 ] - %.030.i558 = phi i32 [ %492, %.lr.ph.i556 ], [ 1, %482 ] - %.02229.i559 = phi i32 [ %491, %.lr.ph.i556 ], [ %487, %482 ] + br i1 %484, label %.lr.ph.i556.preheader, label %read_c4.exit562 + +.lr.ph.i556.preheader: ; preds = %482 + %487 = and i8 %483, 64 + %.not662 = icmp eq i8 %487, 0 + %..i549661 = select i1 %.not662, i32 1, i32 3 + br label %.lr.ph.i556 + +.lr.ph.i556: ; preds = %.lr.ph.i556.preheader, %.lr.ph.i556 + %.02331.i557 = phi i32 [ %.023.i560, %.lr.ph.i556 ], [ %.02328.i552, %.lr.ph.i556.preheader ] + %.030.i558 = phi i32 [ %492, %.lr.ph.i556 ], [ 1, %.lr.ph.i556.preheader ] + %.02229.i559 = phi i32 [ %491, %.lr.ph.i556 ], [ %486, %.lr.ph.i556.preheader ] %488 = shl i32 %.02229.i559, 8 %489 = call zeroext i8 @tvb_get_uint8(ptr noundef %0, i32 noundef %.02331.i557) %490 = zext i8 %489 to i32 %491 = or disjoint i32 %488, %490 %492 = add nuw nsw i32 %.030.i558, 1 %.023.i560 = add i32 %.02331.i557, 1 - %exitcond.not.i561 = icmp eq i32 %492, %..i549 + %exitcond.not.i561 = icmp eq i32 %..i549661, %.030.i558 br i1 %exitcond.not.i561, label %read_c4.exit562, label %.lr.ph.i556, !llvm.loop !33 read_c4.exit562: ; preds = %.lr.ph.i556, %482 - %.022.lcssa.i553 = phi i32 [ %487, %482 ], [ %491, %.lr.ph.i556 ] + %.022.lcssa.i553 = phi i32 [ %486, %482 ], [ %491, %.lr.ph.i556 ] %.023.lcssa.i554 = phi i32 [ %.02328.i552, %482 ], [ %.023.i560, %.lr.ph.i556 ] %493 = load i32, ptr @hf_2009_12_dpp_2_3_sec_rdid, align 4 %494 = sub i32 %.023.lcssa.i554, %.7428 @@ -10381,39 +10396,42 @@ read_c2.exit: ; preds = %6, %13 br label %validate_c2.exit validate_c2.exit: ; preds = %read_c2.exit, %19 - %.not33 = icmp eq i16 %.0.ph.i, 0 - br i1 %.not33, label %._crit_edge, label %.lr.ph + %.not34 = icmp eq i16 %.0.ph.i, 0 + br i1 %.not34, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %validate_c2.exit, %validate_c4.exit %.in = phi i16 [ %21, %validate_c4.exit ], [ %.0.ph.i, %validate_c2.exit ] - %.034 = phi i32 [ %.023.lcssa.i, %validate_c4.exit ], [ %.sink.i, %validate_c2.exit ] + %.035 = phi i32 [ %.023.lcssa.i, %validate_c4.exit ], [ %.sink.i, %validate_c2.exit ] %21 = add nsw i16 %.in, -1 - %22 = tail call zeroext i8 @tvb_get_uint8(ptr noundef %0, i32 noundef %.034) + %22 = tail call zeroext i8 @tvb_get_uint8(ptr noundef %0, i32 noundef %.035) %23 = icmp slt i8 %22, 0 - %24 = and i8 %22, 64 - %.not32 = icmp eq i8 %24, 0 - %25 = and i8 %22, 63 - %..i = select i1 %.not32, i32 2, i32 4 - %.020.i = select i1 %23, i8 %25, i8 %22 - %26 = zext nneg i8 %.020.i to i32 - %.02328.i = add i32 %.034, 1 - br i1 %23, label %.lr.ph.i, label %read_c4.exit + %24 = and i8 %22, 63 + %.020.i = select i1 %23, i8 %24, i8 %22 + %25 = zext nneg i8 %.020.i to i32 + %.02328.i = add i32 %.035, 1 + br i1 %23, label %.lr.ph.i.preheader, label %read_c4.exit + +.lr.ph.i.preheader: ; preds = %.lr.ph + %26 = and i8 %22, 64 + %.not33 = icmp eq i8 %26, 0 + %..i32 = select i1 %.not33, i32 1, i32 3 + br label %.lr.ph.i -.lr.ph.i: ; preds = %.lr.ph, %.lr.ph.i - %.02331.i = phi i32 [ %.023.i, %.lr.ph.i ], [ %.02328.i, %.lr.ph ] - %.030.i = phi i32 [ %31, %.lr.ph.i ], [ 1, %.lr.ph ] - %.02229.i = phi i32 [ %30, %.lr.ph.i ], [ %26, %.lr.ph ] +.lr.ph.i: ; preds = %.lr.ph.i.preheader, %.lr.ph.i + %.02331.i = phi i32 [ %.023.i, %.lr.ph.i ], [ %.02328.i, %.lr.ph.i.preheader ] + %.030.i = phi i32 [ %31, %.lr.ph.i ], [ 1, %.lr.ph.i.preheader ] + %.02229.i = phi i32 [ %30, %.lr.ph.i ], [ %25, %.lr.ph.i.preheader ] %27 = shl i32 %.02229.i, 8 %28 = tail call zeroext i8 @tvb_get_uint8(ptr noundef %0, i32 noundef %.02331.i) %29 = zext i8 %28 to i32 %30 = or disjoint i32 %27, %29 %31 = add nuw nsw i32 %.030.i, 1 %.023.i = add i32 %.02331.i, 1 - %exitcond.not.i = icmp eq i32 %31, %..i + %exitcond.not.i = icmp eq i32 %..i32, %.030.i br i1 %exitcond.not.i, label %read_c4.exit, label %.lr.ph.i, !llvm.loop !33 read_c4.exit: ; preds = %.lr.ph.i, %.lr.ph - %.022.lcssa.i = phi i32 [ %26, %.lr.ph ], [ %30, %.lr.ph.i ] + %.022.lcssa.i = phi i32 [ %25, %.lr.ph ], [ %30, %.lr.ph.i ] %.023.lcssa.i = phi i32 [ %.02328.i, %.lr.ph ], [ %.023.i, %.lr.ph.i ] %switch.tableidx = add i32 %.022.lcssa.i, -1073741821 %32 = icmp ult i32 %switch.tableidx, 3 @@ -10428,8 +10446,8 @@ switch.lookup: ; preds = %read_c4.exit 34: ; preds = %switch.lookup, %read_c4.exit %.023 = phi ptr [ @.str.180, %read_c4.exit ], [ %switch.load, %switch.lookup ] %35 = load i32, ptr @hf_security_10_permission_group_identifier, align 4 - %36 = sub i32 %.023.lcssa.i, %.034 - %37 = tail call ptr (ptr, i32, ptr, i32, i32, i32, ptr, ...) @proto_tree_add_uint_format_value(ptr noundef %2, i32 noundef %35, ptr noundef %0, i32 noundef %.034, i32 noundef %36, i32 noundef %.022.lcssa.i, ptr noundef nonnull @.str.736, i32 noundef %.022.lcssa.i, ptr noundef nonnull %.023) + %36 = sub i32 %.023.lcssa.i, %.035 + %37 = tail call ptr (ptr, i32, ptr, i32, i32, i32, ptr, ...) @proto_tree_add_uint_format_value(ptr noundef %2, i32 noundef %35, ptr noundef %0, i32 noundef %.035, i32 noundef %36, i32 noundef %.022.lcssa.i, ptr noundef nonnull @.str.736, i32 noundef %.022.lcssa.i, ptr noundef nonnull %.023) %38 = icmp ult i32 %.022.lcssa.i, 128 %or.cond.i25 = and i1 %23, %38 br i1 %or.cond.i25, label %39, label %41 @@ -14847,28 +14865,31 @@ define internal fastcc range(i32 0, 32774) i32 @dissect_2008_4_tep_2_2_1(ptr nou 10: ; preds = %6 %11 = tail call zeroext i8 @tvb_get_uint8(ptr noundef %0, i32 noundef 0) %12 = icmp slt i8 %11, 0 - %13 = and i8 %11, 64 - %.not = icmp eq i8 %13, 0 - %14 = and i8 %11, 63 - %..i = select i1 %.not, i32 2, i32 4 - %.020.i = select i1 %12, i8 %14, i8 %11 - %15 = zext nneg i8 %.020.i to i32 - br i1 %12, label %.lr.ph.i, label %._crit_edge.i - -.lr.ph.i: ; preds = %10, %.lr.ph.i - %.02331.i = phi i32 [ %.023.i, %.lr.ph.i ], [ 1, %10 ] - %.02229.i = phi i32 [ %19, %.lr.ph.i ], [ %15, %10 ] + %13 = and i8 %11, 63 + %.020.i = select i1 %12, i8 %13, i8 %11 + %14 = zext nneg i8 %.020.i to i32 + br i1 %12, label %.lr.ph.i.preheader, label %._crit_edge.i + +.lr.ph.i.preheader: ; preds = %10 + %15 = and i8 %11, 64 + %.not = icmp eq i8 %15, 0 + %..i1 = select i1 %.not, i32 1, i32 3 + br label %.lr.ph.i + +.lr.ph.i: ; preds = %.lr.ph.i.preheader, %.lr.ph.i + %.02331.i = phi i32 [ %.023.i, %.lr.ph.i ], [ 1, %.lr.ph.i.preheader ] + %.02229.i = phi i32 [ %19, %.lr.ph.i ], [ %14, %.lr.ph.i.preheader ] %16 = shl i32 %.02229.i, 8 %17 = tail call zeroext i8 @tvb_get_uint8(ptr noundef %0, i32 noundef %.02331.i) %18 = zext i8 %17 to i32 %19 = or disjoint i32 %16, %18 - %.023.i = add nuw i32 %.02331.i, 1 - %exitcond.not.i = icmp eq i32 %.023.i, %..i + %.023.i = add nuw nsw i32 %.02331.i, 1 + %exitcond.not.i = icmp eq i32 %..i1, %.02331.i br i1 %exitcond.not.i, label %._crit_edge.i, label %.lr.ph.i, !llvm.loop !33 ._crit_edge.i: ; preds = %.lr.ph.i, %10 - %.022.lcssa.i = phi i32 [ %15, %10 ], [ %19, %.lr.ph.i ] - %.023.lcssa.i = phi i32 [ 1, %10 ], [ %..i, %.lr.ph.i ] + %.022.lcssa.i = phi i32 [ %14, %10 ], [ %19, %.lr.ph.i ] + %.023.lcssa.i = phi i32 [ 1, %10 ], [ %.023.i, %.lr.ph.i ] %.not27.i = icmp eq ptr %3, null br i1 %.not27.i, label %._crit_edge.i.read_c4.exit_crit_edge, label %20 @@ -15111,8 +15132,8 @@ validate_c2.exit: ; preds = %read_c2.exit, %19 %32 = load i32, ptr @hf_security_12_count, align 4 %33 = tail call ptr @proto_tree_add_item(ptr noundef %25, i32 noundef %32, ptr noundef %26, i32 noundef 0, i32 noundef 1, i32 noundef 0) %34 = icmp ult i8 %27, 64 - %.not5.i = icmp eq i8 %29, 0 - %or.cond.i25 = select i1 %34, i1 true, i1 %.not5.i + %.not6.i = icmp eq i8 %29, 0 + %or.cond.i25 = select i1 %34, i1 true, i1 %.not6.i br i1 %or.cond.i25, label %dissect_2008_16_security_12.exit, label %.lr.ph.preheader.i .lr.ph.preheader.i: ; preds = %.lr.ph @@ -15121,34 +15142,37 @@ validate_c2.exit: ; preds = %read_c2.exit, %19 .lr.ph.i: ; preds = %validate_c4.exit.i, %.lr.ph.preheader.i %.in.i = phi i16 [ %36, %validate_c4.exit.i ], [ %35, %.lr.ph.preheader.i ] - %.0276.i = phi i32 [ %.023.lcssa.i.i, %validate_c4.exit.i ], [ 1, %.lr.ph.preheader.i ] + %.0277.i = phi i32 [ %.023.lcssa.i.i, %validate_c4.exit.i ], [ 1, %.lr.ph.preheader.i ] %36 = add nsw i16 %.in.i, -1 - %37 = tail call zeroext i8 @tvb_get_uint8(ptr noundef %26, i32 noundef %.0276.i) + %37 = tail call zeroext i8 @tvb_get_uint8(ptr noundef %26, i32 noundef %.0277.i) %38 = icmp slt i8 %37, 0 - %39 = and i8 %37, 64 - %.not4.i = icmp eq i8 %39, 0 - %40 = and i8 %37, 63 - %..i.i = select i1 %.not4.i, i32 2, i32 4 - %.020.i.i = select i1 %38, i8 %40, i8 %37 - %41 = zext nneg i8 %.020.i.i to i32 - %.02328.i.i = add i32 %.0276.i, 1 - br i1 %38, label %.lr.ph.i.i, label %read_c4.exit.i - -.lr.ph.i.i: ; preds = %.lr.ph.i, %.lr.ph.i.i - %.02331.i.i = phi i32 [ %.023.i.i, %.lr.ph.i.i ], [ %.02328.i.i, %.lr.ph.i ] - %.030.i.i = phi i32 [ %46, %.lr.ph.i.i ], [ 1, %.lr.ph.i ] - %.02229.i.i = phi i32 [ %45, %.lr.ph.i.i ], [ %41, %.lr.ph.i ] + %39 = and i8 %37, 63 + %.020.i.i = select i1 %38, i8 %39, i8 %37 + %40 = zext nneg i8 %.020.i.i to i32 + %.02328.i.i = add i32 %.0277.i, 1 + br i1 %38, label %.lr.ph.i.preheader.i, label %read_c4.exit.i + +.lr.ph.i.preheader.i: ; preds = %.lr.ph.i + %41 = and i8 %37, 64 + %.not5.i = icmp eq i8 %41, 0 + %..i4.i = select i1 %.not5.i, i32 1, i32 3 + br label %.lr.ph.i.i + +.lr.ph.i.i: ; preds = %.lr.ph.i.i, %.lr.ph.i.preheader.i + %.02331.i.i = phi i32 [ %.023.i.i, %.lr.ph.i.i ], [ %.02328.i.i, %.lr.ph.i.preheader.i ] + %.030.i.i = phi i32 [ %46, %.lr.ph.i.i ], [ 1, %.lr.ph.i.preheader.i ] + %.02229.i.i = phi i32 [ %45, %.lr.ph.i.i ], [ %40, %.lr.ph.i.preheader.i ] %42 = shl i32 %.02229.i.i, 8 %43 = tail call zeroext i8 @tvb_get_uint8(ptr noundef %26, i32 noundef %.02331.i.i) %44 = zext i8 %43 to i32 %45 = or disjoint i32 %42, %44 %46 = add nuw nsw i32 %.030.i.i, 1 %.023.i.i = add i32 %.02331.i.i, 1 - %exitcond.not.i.i = icmp eq i32 %46, %..i.i + %exitcond.not.i.i = icmp eq i32 %..i4.i, %.030.i.i br i1 %exitcond.not.i.i, label %read_c4.exit.i, label %.lr.ph.i.i, !llvm.loop !33 read_c4.exit.i: ; preds = %.lr.ph.i.i, %.lr.ph.i - %.022.lcssa.i.i = phi i32 [ %41, %.lr.ph.i ], [ %45, %.lr.ph.i.i ] + %.022.lcssa.i.i = phi i32 [ %40, %.lr.ph.i ], [ %45, %.lr.ph.i.i ] %.023.lcssa.i.i = phi i32 [ %.02328.i.i, %.lr.ph.i ], [ %.023.i.i, %.lr.ph.i.i ] %switch.tableidx = add i32 %.022.lcssa.i.i, -1073741821 %47 = icmp ult i32 %switch.tableidx, 3 @@ -15163,8 +15187,8 @@ switch.lookup: ; preds = %read_c4.exit.i 49: ; preds = %switch.lookup, %read_c4.exit.i %.026.i = phi ptr [ @.str.180, %read_c4.exit.i ], [ %switch.load, %switch.lookup ] %50 = load i32, ptr @hf_security_12_permission_group_identifier, align 4 - %51 = sub i32 %.023.lcssa.i.i, %.0276.i - %52 = tail call ptr (ptr, i32, ptr, i32, i32, i32, ptr, ...) @proto_tree_add_uint_format_value(ptr noundef %25, i32 noundef %50, ptr noundef %26, i32 noundef %.0276.i, i32 noundef %51, i32 noundef %.022.lcssa.i.i, ptr noundef nonnull @.str.736, i32 noundef %.022.lcssa.i.i, ptr noundef nonnull %.026.i) + %51 = sub i32 %.023.lcssa.i.i, %.0277.i + %52 = tail call ptr (ptr, i32, ptr, i32, i32, i32, ptr, ...) @proto_tree_add_uint_format_value(ptr noundef %25, i32 noundef %50, ptr noundef %26, i32 noundef %.0277.i, i32 noundef %51, i32 noundef %.022.lcssa.i.i, ptr noundef nonnull @.str.736, i32 noundef %.022.lcssa.i.i, ptr noundef nonnull %.026.i) %53 = icmp ult i32 %.022.lcssa.i.i, 128 %or.cond.i.i = and i1 %38, %53 br i1 %or.cond.i.i, label %54, label %56 diff --git a/bench/wireshark/optimized/packet-ieee80211.ll b/bench/wireshark/optimized/packet-ieee80211.ll index 645bb1210f8..92af4eecf18 100644 --- a/bench/wireshark/optimized/packet-ieee80211.ll +++ b/bench/wireshark/optimized/packet-ieee80211.ll @@ -46615,16 +46615,16 @@ define internal fastcc noundef i32 @dissect_ieee80211_block_ack_details(ptr noun 116: ; preds = %114, %113 %117 = lshr i16 %10, 12 - %narrow303 = add nuw nsw i16 %117, 1 - %118 = zext nneg i16 %narrow303 to i32 + %narrow304 = add nuw nsw i16 %117, 1 + %118 = zext nneg i16 %narrow304 to i32 %119 = shl nuw nsw i32 %118, 2 %120 = load i32, ptr @ett_block_ack, align 4 %121 = call ptr @proto_tree_add_subtree(ptr noundef %17, ptr noundef %0, i32 noundef %21, i32 noundef %119, i32 noundef %120, ptr noundef null, ptr noundef nonnull @.str.9856) - br i1 %5, label %.preheader304, label %.preheader305 + br i1 %5, label %.preheader305, label %.preheader306 -.preheader304: ; preds = %116, %.preheader304 - %.1276 = phi i32 [ %135, %.preheader304 ], [ %21, %116 ] - %.1253275 = phi i32 [ %136, %.preheader304 ], [ 0, %116 ] +.preheader305: ; preds = %116, %.preheader305 + %.1276 = phi i32 [ %135, %.preheader305 ], [ %21, %116 ] + %.1253275 = phi i32 [ %136, %.preheader305 ], [ 0, %116 ] %122 = call zeroext i8 @tvb_get_uint8(ptr noundef %0, i32 noundef %.1276) %123 = and i8 %122, 15 %124 = load i32, ptr @ett_block_ack_tid, align 4 @@ -46641,11 +46641,11 @@ define internal fastcc noundef i32 @dissect_ieee80211_block_ack_details(ptr noun %135 = add i32 %.1276, 4 %136 = add nuw nsw i32 %.1253275, 1 %exitcond288.not = icmp eq i32 %136, %118 - br i1 %exitcond288.not, label %.loopexit, label %.preheader304, !llvm.loop !228 + br i1 %exitcond288.not, label %.loopexit, label %.preheader305, !llvm.loop !228 -.preheader305: ; preds = %116, %.preheader305 - %.2274 = phi i32 [ %153, %.preheader305 ], [ %21, %116 ] - %.2254273 = phi i32 [ %154, %.preheader305 ], [ 0, %116 ] +.preheader306: ; preds = %116, %.preheader306 + %.2274 = phi i32 [ %153, %.preheader306 ], [ %21, %116 ] + %.2254273 = phi i32 [ %154, %.preheader306 ], [ 0, %116 ] %137 = call zeroext i8 @tvb_get_uint8(ptr noundef %0, i32 noundef %.2274) %138 = and i8 %137, 15 %139 = load i32, ptr @ett_block_ack_tid, align 4 @@ -46665,7 +46665,7 @@ define internal fastcc noundef i32 @dissect_ieee80211_block_ack_details(ptr noun %153 = add i32 %.2274, 12 %154 = add nuw nsw i32 %.2254273, 1 %exitcond287.not = icmp eq i32 %154, %118 - br i1 %exitcond287.not, label %.loopexit, label %.preheader305, !llvm.loop !229 + br i1 %exitcond287.not, label %.loopexit, label %.preheader306, !llvm.loop !229 155: ; preds = %7 %156 = load i32, ptr @hf_ieee80211_ff_block_ack_ssc, align 4 @@ -46738,9 +46738,9 @@ define internal fastcc noundef i32 @dissect_ieee80211_block_ack_details(ptr noun %197 = call ptr @proto_item_add_subtree(ptr noundef %195, i32 noundef %196) %198 = shl nuw nsw i32 %.0, 3 %199 = icmp eq i32 %.0, 4 - %spec.select = select i1 %199, i64 32, i64 64 %200 = zext nneg i16 %183 to i64 %201 = zext nneg i32 %198 to i64 + %wide.trip.count300 = select i1 %199, i64 31, i64 63 br label %202 202: ; preds = %193, %222 @@ -46773,7 +46773,7 @@ define internal fastcc noundef i32 @dissect_ieee80211_block_ack_details(ptr noun 221: ; preds = %208, %211 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %exitcond.not = icmp eq i64 %indvars.iv.next, %spec.select + %exitcond.not = icmp eq i64 %wide.trip.count300, %indvars.iv br i1 %exitcond.not, label %222, label %208, !llvm.loop !230 222: ; preds = %221 @@ -46808,8 +46808,8 @@ define internal fastcc noundef i32 @dissect_ieee80211_block_ack_details(ptr noun %241 = icmp sgt i32 %240, %23 br i1 %241, label %.lr.ph, label %.loopexit, !llvm.loop !232 -.loopexit: ; preds = %237, %.preheader305, %.preheader304, %.preheader, %155, %163, %82, %108, %37, %77, %28, %33, %7 - %.0251 = phi i32 [ %21, %7 ], [ %32, %28 ], [ %36, %33 ], [ %42, %37 ], [ %78, %77 ], [ %86, %82 ], [ %112, %108 ], [ %162, %155 ], [ %166, %163 ], [ %21, %.preheader ], [ %135, %.preheader304 ], [ %153, %.preheader305 ], [ %.4, %237 ] +.loopexit: ; preds = %237, %.preheader306, %.preheader305, %.preheader, %155, %163, %82, %108, %37, %77, %28, %33, %7 + %.0251 = phi i32 [ %21, %7 ], [ %32, %28 ], [ %36, %33 ], [ %42, %37 ], [ %78, %77 ], [ %86, %82 ], [ %112, %108 ], [ %162, %155 ], [ %166, %163 ], [ %21, %.preheader ], [ %135, %.preheader305 ], [ %153, %.preheader306 ], [ %.4, %237 ] %242 = load ptr, ptr %8, align 8 %243 = sub i32 %.0251, %3 call void @proto_item_set_len(ptr noundef %242, i32 noundef %243) diff --git a/bench/wireshark/optimized/packet-usb-audio.ll b/bench/wireshark/optimized/packet-usb-audio.ll index 51ef697bdd2..2f0f1982b49 100644 --- a/bench/wireshark/optimized/packet-usb-audio.ll +++ b/bench/wireshark/optimized/packet-usb-audio.ll @@ -3325,45 +3325,44 @@ has_data_stage.exit: ; preds = %74 %78 = getelementptr inbounds nuw i8, ptr %75, i64 28 %79 = load i8, ptr %78, align 4 %80 = and i8 %79, -128 - %81 = zext i8 %80 to i32 - %82 = load i8, ptr %51, align 4, !range !6, !noundef !7 - %83 = trunc nuw i8 %82 to i1 - %84 = select i1 %83, i32 0, i32 128 - %85 = icmp eq i32 %84, %81 - br i1 %85, label %86, label %has_data_stage.exit.thread - -86: ; preds = %has_data_stage.exit + %81 = load i8, ptr %51, align 4, !range !6, !noundef !7 + %82 = xor i8 %81, -1 + %83 = shl i8 %82, 7 + %84 = icmp eq i8 %83, %80 + br i1 %84, label %85, label %has_data_stage.exit.thread + +85: ; preds = %has_data_stage.exit call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #9 - %87 = load i32, ptr @ett_parameter_block, align 4 - %88 = call ptr @proto_tree_add_subtree(ptr noundef %2, ptr noundef %0, i32 noundef %.0, i32 noundef -1, i32 noundef %87, ptr noundef nonnull %6, ptr noundef nonnull %.0618097) - br i1 %.not708296, label %93, label %89 - -89: ; preds = %86 - %90 = load i32, ptr %.0608495, align 4 - %91 = call ptr @proto_tree_add_item(ptr noundef %88, i32 noundef %90, ptr noundef %0, i32 noundef %.0, i32 noundef %.0598694, i32 noundef -2147483648) - %92 = add i32 %.0, %.0598694 - br label %93 - -93: ; preds = %89, %86 - %.2 = phi i32 [ %92, %89 ], [ %.0, %86 ] - %94 = call i32 @tvb_captured_length_remaining(ptr noundef %0, i32 noundef %.2) - %.not71 = icmp eq i32 %94, 0 - br i1 %.not71, label %100, label %95 - -95: ; preds = %93 - %96 = load ptr, ptr %6, align 8 - %97 = call ptr @expert_add_info(ptr noundef %1, ptr noundef %96, ptr noundef nonnull @ei_usb_audio_undecoded) - %98 = call i32 @tvb_captured_length_remaining(ptr noundef %0, i32 noundef %.2) - %99 = add i32 %98, %.2 - br label %100 - -100: ; preds = %95, %93 - %.3 = phi i32 [ %99, %95 ], [ %.2, %93 ] + %86 = load i32, ptr @ett_parameter_block, align 4 + %87 = call ptr @proto_tree_add_subtree(ptr noundef %2, ptr noundef %0, i32 noundef %.0, i32 noundef -1, i32 noundef %86, ptr noundef nonnull %6, ptr noundef nonnull %.0618097) + br i1 %.not708296, label %92, label %88 + +88: ; preds = %85 + %89 = load i32, ptr %.0608495, align 4 + %90 = call ptr @proto_tree_add_item(ptr noundef %87, i32 noundef %89, ptr noundef %0, i32 noundef %.0, i32 noundef %.0598694, i32 noundef -2147483648) + %91 = add i32 %.0, %.0598694 + br label %92 + +92: ; preds = %88, %85 + %.2 = phi i32 [ %91, %88 ], [ %.0, %85 ] + %93 = call i32 @tvb_captured_length_remaining(ptr noundef %0, i32 noundef %.2) + %.not71 = icmp eq i32 %93, 0 + br i1 %.not71, label %99, label %94 + +94: ; preds = %92 + %95 = load ptr, ptr %6, align 8 + %96 = call ptr @expert_add_info(ptr noundef %1, ptr noundef %95, ptr noundef nonnull @ei_usb_audio_undecoded) + %97 = call i32 @tvb_captured_length_remaining(ptr noundef %0, i32 noundef %.2) + %98 = add i32 %97, %.2 + br label %99 + +99: ; preds = %94, %92 + %.3 = phi i32 [ %98, %94 ], [ %.2, %92 ] call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #9 br label %has_data_stage.exit.thread -has_data_stage.exit.thread: ; preds = %74, %100, %has_data_stage.exit - %.1 = phi i32 [ %.3, %100 ], [ %.0, %has_data_stage.exit ], [ %.0, %74 ] +has_data_stage.exit.thread: ; preds = %74, %99, %has_data_stage.exit + %.1 = phi i32 [ %.3, %99 ], [ %.0, %has_data_stage.exit ], [ %.0, %74 ] call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) #9 ret i32 %.1 } @@ -3403,7 +3402,7 @@ define internal fastcc i32 @dissect_v2_control(ptr noundef %0, ptr noundef %1, p %.0 = phi i32 [ 1, %21 ], [ 0, %17 ] %25 = add i8 %11, -1 %or.cond = icmp ult i8 %25, 2 - br i1 %or.cond, label %26, label %161 + br i1 %or.cond, label %26, label %160 26: ; preds = %24 %27 = load ptr, ptr %8, align 8 @@ -3554,139 +3553,138 @@ has_data_stage.exit.i: ; preds = %90 %94 = getelementptr inbounds nuw i8, ptr %91, i64 28 %95 = load i8, ptr %94, align 4 %96 = and i8 %95, -128 - %97 = zext i8 %96 to i32 - %98 = load i8, ptr %18, align 4, !range !6, !noundef !7 - %99 = trunc nuw i8 %98 to i1 - %100 = select i1 %99, i32 0, i32 128 - %101 = icmp eq i32 %100, %97 - br i1 %101, label %102, label %dissect_v2_control_cur_range.exit - -102: ; preds = %has_data_stage.exit.i + %97 = load i8, ptr %18, align 4, !range !6, !noundef !7 + %98 = xor i8 %97, -1 + %99 = shl i8 %98, 7 + %100 = icmp eq i8 %99, %96 + br i1 %100, label %101, label %dissect_v2_control_cur_range.exit + +101: ; preds = %has_data_stage.exit.i call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #9 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %7) #9 switch i32 %.0100115129.i, label %default.unreachable [ - i32 1, label %103 - i32 2, label %108 - i32 3, label %113 - i32 0, label %118 + i32 1, label %102 + i32 2, label %107 + i32 3, label %112 + i32 0, label %117 ] -103: ; preds = %102 - %104 = load i32, ptr @hf_parameter_bcur, align 4 - %105 = load i32, ptr @hf_parameter_bmin, align 4 - %106 = load i32, ptr @hf_parameter_bmax, align 4 - %107 = load i32, ptr @hf_parameter_bres, align 4 - br label %118 - -108: ; preds = %102 - %109 = load i32, ptr @hf_parameter_wcur, align 4 - %110 = load i32, ptr @hf_parameter_wmin, align 4 - %111 = load i32, ptr @hf_parameter_wmax, align 4 - %112 = load i32, ptr @hf_parameter_wres, align 4 - br label %118 - -113: ; preds = %102 - %114 = load i32, ptr @hf_parameter_dcur, align 4 - %115 = load i32, ptr @hf_parameter_dmin, align 4 - %116 = load i32, ptr @hf_parameter_dmax, align 4 - %117 = load i32, ptr @hf_parameter_dres, align 4 - br label %118 - -default.unreachable: ; preds = %102 +102: ; preds = %101 + %103 = load i32, ptr @hf_parameter_bcur, align 4 + %104 = load i32, ptr @hf_parameter_bmin, align 4 + %105 = load i32, ptr @hf_parameter_bmax, align 4 + %106 = load i32, ptr @hf_parameter_bres, align 4 + br label %117 + +107: ; preds = %101 + %108 = load i32, ptr @hf_parameter_wcur, align 4 + %109 = load i32, ptr @hf_parameter_wmin, align 4 + %110 = load i32, ptr @hf_parameter_wmax, align 4 + %111 = load i32, ptr @hf_parameter_wres, align 4 + br label %117 + +112: ; preds = %101 + %113 = load i32, ptr @hf_parameter_dcur, align 4 + %114 = load i32, ptr @hf_parameter_dmin, align 4 + %115 = load i32, ptr @hf_parameter_dmax, align 4 + %116 = load i32, ptr @hf_parameter_dres, align 4 + br label %117 + +default.unreachable: ; preds = %101 unreachable -118: ; preds = %113, %108, %103, %102 - %.096.i = phi ptr [ @.str.828, %103 ], [ @.str.829, %108 ], [ @.str.830, %113 ], [ @.str.831, %102 ] - %.not106.i = phi i1 [ false, %103 ], [ false, %108 ], [ false, %113 ], [ true, %102 ] - %.095.i = phi i32 [ 1, %103 ], [ 2, %108 ], [ 4, %113 ], [ %.0100115129.i, %102 ] - %.094.i = phi i32 [ %104, %103 ], [ %109, %108 ], [ %114, %113 ], [ %.0100115129.i, %102 ] - %.093.i = phi i32 [ %105, %103 ], [ %110, %108 ], [ %115, %113 ], [ %.0100115129.i, %102 ] - %.092.i = phi i32 [ %106, %103 ], [ %111, %108 ], [ %116, %113 ], [ %.0100115129.i, %102 ] - %.091.i = phi i32 [ %107, %103 ], [ %112, %108 ], [ %117, %113 ], [ %.0100115129.i, %102 ] - %119 = load i32, ptr @ett_parameter_block, align 4 - %120 = call ptr @proto_tree_add_subtree(ptr noundef %2, ptr noundef %0, i32 noundef %.097.i, i32 noundef -1, i32 noundef %119, ptr noundef nonnull %6, ptr noundef nonnull %.096.i) - br i1 %.not105117128.i, label %123, label %121 - -121: ; preds = %118 - %122 = load ptr, ptr %6, align 8 - call void (ptr, ptr, ...) @proto_item_append_text(ptr noundef %122, ptr noundef nonnull @.str.796, ptr noundef %.099119127.i) - br label %123 - -123: ; preds = %121, %118 - %124 = load ptr, ptr %8, align 8 - %125 = getelementptr inbounds nuw i8, ptr %124, i64 29 - %126 = load i8, ptr %125, align 1 - %127 = icmp eq i8 %126, 2 - br i1 %127, label %128, label %152 - -128: ; preds = %123 - %129 = load i32, ptr @hf_parameter_wnumsubranges, align 4 - %130 = call ptr @proto_tree_add_item_ret_uint(ptr noundef %120, i32 noundef %129, ptr noundef %0, i32 noundef %.097.i, i32 noundef 2, i32 noundef -2147483648, ptr noundef nonnull %7) - %131 = add nuw nsw i32 %.097.i, 2 - br i1 %.not106.i, label %.loopexit.i, label %132 - -132: ; preds = %128 - %133 = load ptr, ptr %8, align 8 - %134 = getelementptr inbounds nuw i8, ptr %133, i64 34 - %135 = load i16, ptr %134, align 2 - %136 = zext i16 %135 to i32 - %137 = load i32, ptr %7, align 4 - %138 = mul i32 %137, %.095.i - %139 = add i32 %138, 2 - %.not107.i = icmp ugt i32 %139, %136 - br i1 %.not107.i, label %140, label %._crit_edge - -._crit_edge: ; preds = %132 +117: ; preds = %112, %107, %102, %101 + %.096.i = phi ptr [ @.str.828, %102 ], [ @.str.829, %107 ], [ @.str.830, %112 ], [ @.str.831, %101 ] + %.not106.i = phi i1 [ false, %102 ], [ false, %107 ], [ false, %112 ], [ true, %101 ] + %.095.i = phi i32 [ 1, %102 ], [ 2, %107 ], [ 4, %112 ], [ %.0100115129.i, %101 ] + %.094.i = phi i32 [ %103, %102 ], [ %108, %107 ], [ %113, %112 ], [ %.0100115129.i, %101 ] + %.093.i = phi i32 [ %104, %102 ], [ %109, %107 ], [ %114, %112 ], [ %.0100115129.i, %101 ] + %.092.i = phi i32 [ %105, %102 ], [ %110, %107 ], [ %115, %112 ], [ %.0100115129.i, %101 ] + %.091.i = phi i32 [ %106, %102 ], [ %111, %107 ], [ %116, %112 ], [ %.0100115129.i, %101 ] + %118 = load i32, ptr @ett_parameter_block, align 4 + %119 = call ptr @proto_tree_add_subtree(ptr noundef %2, ptr noundef %0, i32 noundef %.097.i, i32 noundef -1, i32 noundef %118, ptr noundef nonnull %6, ptr noundef nonnull %.096.i) + br i1 %.not105117128.i, label %122, label %120 + +120: ; preds = %117 + %121 = load ptr, ptr %6, align 8 + call void (ptr, ptr, ...) @proto_item_append_text(ptr noundef %121, ptr noundef nonnull @.str.796, ptr noundef %.099119127.i) + br label %122 + +122: ; preds = %120, %117 + %123 = load ptr, ptr %8, align 8 + %124 = getelementptr inbounds nuw i8, ptr %123, i64 29 + %125 = load i8, ptr %124, align 1 + %126 = icmp eq i8 %125, 2 + br i1 %126, label %127, label %151 + +127: ; preds = %122 + %128 = load i32, ptr @hf_parameter_wnumsubranges, align 4 + %129 = call ptr @proto_tree_add_item_ret_uint(ptr noundef %119, i32 noundef %128, ptr noundef %0, i32 noundef %.097.i, i32 noundef 2, i32 noundef -2147483648, ptr noundef nonnull %7) + %130 = add nuw nsw i32 %.097.i, 2 + br i1 %.not106.i, label %.loopexit.i, label %131 + +131: ; preds = %127 + %132 = load ptr, ptr %8, align 8 + %133 = getelementptr inbounds nuw i8, ptr %132, i64 34 + %134 = load i16, ptr %133, align 2 + %135 = zext i16 %134 to i32 + %136 = load i32, ptr %7, align 4 + %137 = mul i32 %136, %.095.i + %138 = add i32 %137, 2 + %.not107.i = icmp ugt i32 %138, %135 + br i1 %.not107.i, label %139, label %._crit_edge + +._crit_edge: ; preds = %131 %.pre = mul nuw nsw i32 %.095.i, 3 - br label %146 + br label %145 -140: ; preds = %132 - %141 = icmp ugt i16 %135, 2 - br i1 %141, label %142, label %.loopexit.i +139: ; preds = %131 + %140 = icmp ugt i16 %134, 2 + br i1 %140, label %141, label %.loopexit.i -142: ; preds = %140 - %143 = add nsw i32 %136, -2 - %144 = mul nuw nsw i32 %.095.i, 3 - %145 = udiv i32 %143, %144 - br label %146 +141: ; preds = %139 + %142 = add nsw i32 %135, -2 + %143 = mul nuw nsw i32 %.095.i, 3 + %144 = udiv i32 %142, %143 + br label %145 -146: ; preds = %._crit_edge, %142 - %invariant.op130.i.pre-phi = phi i32 [ %.pre, %._crit_edge ], [ %144, %142 ] - %.090.i = phi i32 [ %137, %._crit_edge ], [ %145, %142 ] +145: ; preds = %._crit_edge, %141 + %invariant.op130.i.pre-phi = phi i32 [ %.pre, %._crit_edge ], [ %143, %141 ] + %.090.i = phi i32 [ %136, %._crit_edge ], [ %144, %141 ] %invariant.op.i = shl nuw nsw i32 %.095.i, 1 %.not.i = icmp eq i32 %.090.i, 0 br i1 %.not.i, label %.loopexit.i, label %.lr.ph.i -.lr.ph.i: ; preds = %146, %.lr.ph.i - %.0133.i = phi i32 [ %151, %.lr.ph.i ], [ 0, %146 ] - %.2132.i = phi i32 [ %.reass131.i, %.lr.ph.i ], [ %131, %146 ] - %147 = call ptr @proto_tree_add_item(ptr noundef %120, i32 noundef %.093.i, ptr noundef %0, i32 noundef %.2132.i, i32 noundef %.095.i, i32 noundef -2147483648) - %148 = add i32 %.2132.i, %.095.i - %149 = call ptr @proto_tree_add_item(ptr noundef %120, i32 noundef %.092.i, ptr noundef %0, i32 noundef %148, i32 noundef %.095.i, i32 noundef -2147483648) +.lr.ph.i: ; preds = %145, %.lr.ph.i + %.0133.i = phi i32 [ %150, %.lr.ph.i ], [ 0, %145 ] + %.2132.i = phi i32 [ %.reass131.i, %.lr.ph.i ], [ %130, %145 ] + %146 = call ptr @proto_tree_add_item(ptr noundef %119, i32 noundef %.093.i, ptr noundef %0, i32 noundef %.2132.i, i32 noundef %.095.i, i32 noundef -2147483648) + %147 = add i32 %.2132.i, %.095.i + %148 = call ptr @proto_tree_add_item(ptr noundef %119, i32 noundef %.092.i, ptr noundef %0, i32 noundef %147, i32 noundef %.095.i, i32 noundef -2147483648) %.reass.i = add i32 %.2132.i, %invariant.op.i - %150 = call ptr @proto_tree_add_item(ptr noundef %120, i32 noundef %.091.i, ptr noundef %0, i32 noundef %.reass.i, i32 noundef %.095.i, i32 noundef -2147483648) + %149 = call ptr @proto_tree_add_item(ptr noundef %119, i32 noundef %.091.i, ptr noundef %0, i32 noundef %.reass.i, i32 noundef %.095.i, i32 noundef -2147483648) %.reass131.i = add i32 %.2132.i, %invariant.op130.i.pre-phi - %151 = add nuw i32 %.0133.i, 1 - %exitcond.not.i = icmp eq i32 %151, %.090.i + %150 = add nuw i32 %.0133.i, 1 + %exitcond.not.i = icmp eq i32 %150, %.090.i br i1 %exitcond.not.i, label %.loopexit.i, label %.lr.ph.i, !llvm.loop !22 -152: ; preds = %123 - br i1 %.not106.i, label %156, label %153 +151: ; preds = %122 + br i1 %.not106.i, label %155, label %152 -153: ; preds = %152 - %154 = call ptr @proto_tree_add_item(ptr noundef %120, i32 noundef %.094.i, ptr noundef %0, i32 noundef %.097.i, i32 noundef %.095.i, i32 noundef -2147483648) - %155 = add nuw nsw i32 %.095.i, %.097.i +152: ; preds = %151 + %153 = call ptr @proto_tree_add_item(ptr noundef %119, i32 noundef %.094.i, ptr noundef %0, i32 noundef %.097.i, i32 noundef %.095.i, i32 noundef -2147483648) + %154 = add nuw nsw i32 %.095.i, %.097.i br label %.loopexit.i -156: ; preds = %152 - %157 = load ptr, ptr %6, align 8 - %158 = call ptr @expert_add_info(ptr noundef %1, ptr noundef %157, ptr noundef nonnull @ei_usb_audio_undecoded) - %159 = call i32 @tvb_captured_length_remaining(ptr noundef %0, i32 noundef %.097.i) - %160 = add i32 %159, %.097.i +155: ; preds = %151 + %156 = load ptr, ptr %6, align 8 + %157 = call ptr @expert_add_info(ptr noundef %1, ptr noundef %156, ptr noundef nonnull @ei_usb_audio_undecoded) + %158 = call i32 @tvb_captured_length_remaining(ptr noundef %0, i32 noundef %.097.i) + %159 = add i32 %158, %.097.i br label %.loopexit.i -.loopexit.i: ; preds = %.lr.ph.i, %156, %153, %146, %140, %128 - %.3.i = phi i32 [ %155, %153 ], [ %160, %156 ], [ %131, %146 ], [ %131, %128 ], [ %131, %140 ], [ %.reass131.i, %.lr.ph.i ] +.loopexit.i: ; preds = %.lr.ph.i, %155, %152, %145, %139, %127 + %.3.i = phi i32 [ %154, %152 ], [ %159, %155 ], [ %130, %145 ], [ %130, %127 ], [ %130, %139 ], [ %.reass131.i, %.lr.ph.i ] call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #9 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #9 br label %dissect_v2_control_cur_range.exit @@ -3694,9 +3692,9 @@ default.unreachable: ; preds = %102 dissect_v2_control_cur_range.exit: ; preds = %90, %has_data_stage.exit.i, %.loopexit.i %.1.i = phi i32 [ %.3.i, %.loopexit.i ], [ %.097.i, %has_data_stage.exit.i ], [ %.097.i, %90 ] call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) #9 - br label %161 + br label %160 -161: ; preds = %24, %dissect_v2_control_cur_range.exit +160: ; preds = %24, %dissect_v2_control_cur_range.exit %.1 = phi i32 [ %.1.i, %dissect_v2_control_cur_range.exit ], [ %.0, %24 ] ret i32 %.1 } diff --git a/bench/yosys/optimized/blifparse.ll b/bench/yosys/optimized/blifparse.ll index 558784f2015..1bc81c2df7c 100644 --- a/bench/yosys/optimized/blifparse.ll +++ b/bench/yosys/optimized/blifparse.ll @@ -882,12 +882,12 @@ define void @_ZN5Yosys10parse_blifEPNS_5RTLIL6DesignERSiNS0_8IdStringEbbb(ptr no .loopexit2185: ; preds = %.backedge %lpad.loopexit2187 = landingpad { ptr, i32 } cleanup - br label %4058 + br label %4057 .loopexit.split-lp2186: ; preds = %.thread2024, %.loopexit2184 %lpad.loopexit.split-lp2188 = landingpad { ptr, i32 } cleanup - br label %4058 + br label %4057 471: ; preds = %470 %472 = load ptr, ptr %25, align 8, !tbaa !21 @@ -927,7 +927,7 @@ define void @_ZN5Yosys10parse_blifEPNS_5RTLIL6DesignERSiNS0_8IdStringEbbb(ptr no 482: ; preds = %476 %483 = landingpad { ptr, i32 } cleanup - br label %4058 + br label %4057 .lr.ph: ; preds = %478, %487 %.sroa.01983.05560 = phi ptr [ %488, %487 ], [ %479, %478 ] @@ -975,13 +975,13 @@ define void @_ZN5Yosys10parse_blifEPNS_5RTLIL6DesignERSiNS0_8IdStringEbbb(ptr no 499: ; preds = %1664, %._crit_edge5596, %493 %500 = landingpad { ptr, i32 } cleanup - br label %4058 + br label %4057 501: ; preds = %495 %502 = landingpad { ptr, i32 } cleanup call void @_ZdlPvm(ptr noundef nonnull %494, i64 noundef 616) #33 - br label %4058 + br label %4057 503: ; preds = %496 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %27) #29 @@ -1278,17 +1278,17 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1044: ; preds = %_ %.pn683.pn = phi { ptr, i32 } [ %587, %586 ], [ %.pn683, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i1043 ], [ %.pn683, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i1042 ] call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %28) #29 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %27) #29 - br label %4058 + br label %4057 .loopexit2178: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1038, %604 %lpad.loopexit2180 = landingpad { ptr, i32 } cleanup - br label %4058 + br label %4057 .loopexit.split-lp2179: ; preds = %581, %583 %lpad.loopexit.split-lp2181 = landingpad { ptr, i32 } cleanup - br label %4058 + br label %4057 604: ; preds = %580 invoke void @_ZN5Yosys5RTLIL6Design3addEPNS0_6ModuleE(ptr noundef nonnull align 8 dereferenceable(376) %0, ptr noundef nonnull %494) @@ -1335,7 +1335,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1044: ; preds = %_ 619: ; preds = %617, %615 %.pn690 = phi { ptr, i32 } [ %618, %617 ], [ %616, %615 ] call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %29) #29 - br label %4058 + br label %4057 620: ; preds = %606 %621 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %490, ptr noundef nonnull dereferenceable(5) @.str.4) #31 @@ -2634,7 +2634,7 @@ _ZN5Yosys5RTLIL8IdStringD2Ev.exit1123: ; preds = %_ZN5Yosys5RTLIL6Mod %.pn735.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn735.pn.pn.pn, %1147 ], [ %695, %694 ] call void @_ZN5Yosys5RTLIL8IdStringD2Ev(ptr noundef nonnull align 4 dereferenceable(4) %30) #29 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %30) #29 - br label %4058 + br label %4057 1149: ; preds = %._crit_edge5596 %1150 = load ptr, ptr %23, align 8, !tbaa !35 @@ -3829,7 +3829,7 @@ _ZNSt6vectorIPN5Yosys5RTLIL4CellESaIS3_EED2Ev.exit1222: ; preds = %_ZN5Yosys5RTL .body1125: ; preds = %_ZNSt6vectorIN5Yosys5RTLIL5StateESaIS2_EED2Ev.exit1140, %_ZNSt12_Vector_baseIN5Yosys5RTLIL5StateESaIS2_EED2Ev.exit.i, %_ZNSt6vectorIPN5Yosys5RTLIL4CellESaIS3_EED2Ev.exit1222 %.pn720.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn720.pn.pn.pn.pn, %_ZNSt6vectorIPN5Yosys5RTLIL4CellESaIS3_EED2Ev.exit1222 ], [ %1195, %_ZNSt6vectorIN5Yosys5RTLIL5StateESaIS2_EED2Ev.exit1140 ], [ %1173, %_ZNSt12_Vector_baseIN5Yosys5RTLIL5StateESaIS2_EED2Ev.exit.i ] call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %40) #29 - br label %4058 + br label %4057 1635: ; preds = %_ZNSt6vectorIPN5Yosys5RTLIL4CellESaIS3_EED2Ev.exit, %_ZN5Yosys7hashlib4dictINS_5RTLIL8IdStringESt4pairIibENS0_8hash_opsIS3_EEE5clearEv.exit store ptr null, ptr %20, align 8, !tbaa !6 @@ -3929,7 +3929,7 @@ _ZNSt6vectorIPN5Yosys5RTLIL4CellESaIS3_EED2Ev.exit1222: ; preds = %_ZN5Yosys5RTL %.0368.be = phi ptr [ %.1369, %3980 ], [ %.1369, %sub_02102 ], [ %.1369, %sub_12103 ], [ null, %1669 ], [ null, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1632 ], [ %2783, %2782 ], [ %.1369, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1267 ], [ %.1369, %1664 ], [ null, %1635 ], [ %.1369, %614 ], [ null, %604 ], [ null, %_ZN5Yosys5RTLIL8IdStringD2Ev.exit1256 ], [ %.1369, %.preheader2176 ], [ %.2370, %.loopexit2125 ] %.0361.be = phi ptr [ %.1362, %3980 ], [ %.1362, %sub_02102 ], [ %.1362, %sub_12103 ], [ null, %1669 ], [ null, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1632 ], [ %.0590, %2782 ], [ %.1362, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1267 ], [ %.1362, %1664 ], [ null, %1635 ], [ %.1362, %614 ], [ %578, %604 ], [ null, %_ZN5Yosys5RTLIL8IdStringD2Ev.exit1256 ], [ %.1362, %.preheader2176 ], [ %.2363, %.loopexit2125 ] %.0353.be = phi i32 [ %.7360, %3980 ], [ %.7360, %sub_02102 ], [ %.7360, %sub_12103 ], [ %spec.select, %1669 ], [ %spec.select, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1632 ], [ %spec.select, %2782 ], [ %spec.select, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1267 ], [ %spec.select, %1664 ], [ %spec.select, %1635 ], [ %spec.select, %614 ], [ %spec.select, %604 ], [ %spec.select, %_ZN5Yosys5RTLIL8IdStringD2Ev.exit1256 ], [ %.1354, %.preheader2176 ], [ %.3356, %.loopexit2125 ] - %.0346.be = phi i8 [ %.1347, %3980 ], [ 0, %sub_02102 ], [ %4014, %sub_12103 ], [ %.2348, %1669 ], [ %.2348, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1632 ], [ %.2348, %2782 ], [ %.2348, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1267 ], [ %.2348, %1664 ], [ %.2348, %1635 ], [ %.2348, %614 ], [ %.2348, %604 ], [ %.2348, %_ZN5Yosys5RTLIL8IdStringD2Ev.exit1256 ], [ %.1347, %.preheader2176 ], [ %.3349, %.loopexit2125 ] + %.0346.be = phi i8 [ %.1347, %3980 ], [ 0, %sub_02102 ], [ %4013, %sub_12103 ], [ %.2348, %1669 ], [ %.2348, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1632 ], [ %.2348, %2782 ], [ %.2348, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1267 ], [ %.2348, %1664 ], [ %.2348, %1635 ], [ %.2348, %614 ], [ %.2348, %604 ], [ %.2348, %_ZN5Yosys5RTLIL8IdStringD2Ev.exit1256 ], [ %.1347, %.preheader2176 ], [ %.3349, %.loopexit2125 ] %.0340.be = phi ptr [ %.1341, %3980 ], [ %.1341, %sub_02102 ], [ %.1341, %sub_12103 ], [ %.1341, %1669 ], [ %.1341, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1632 ], [ %.0590, %2782 ], [ %.1341, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1267 ], [ %.1341, %1664 ], [ null, %1635 ], [ %.1341, %614 ], [ null, %604 ], [ %.1341, %_ZN5Yosys5RTLIL8IdStringD2Ev.exit1256 ], [ %.1341, %.preheader2176 ], [ %.2342, %.loopexit2125 ] %.0331.be = phi ptr [ %.1332, %3980 ], [ %.1332, %sub_02102 ], [ %.1332, %sub_12103 ], [ null, %1669 ], [ null, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1632 ], [ null, %2782 ], [ null, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1267 ], [ null, %1664 ], [ null, %1635 ], [ null, %614 ], [ null, %604 ], [ null, %_ZN5Yosys5RTLIL8IdStringD2Ev.exit1256 ], [ %.1332, %.preheader2176 ], [ %.3334, %.loopexit2125 ] %.0.be = phi ptr [ null, %3980 ], [ %.1, %sub_02102 ], [ %.1, %sub_12103 ], [ null, %1669 ], [ null, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1632 ], [ null, %2782 ], [ null, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1267 ], [ null, %1664 ], [ null, %1635 ], [ null, %614 ], [ null, %604 ], [ null, %_ZN5Yosys5RTLIL8IdStringD2Ev.exit1256 ], [ %.1, %.preheader2176 ], [ %.3, %.loopexit2125 ] @@ -4385,7 +4385,7 @@ _ZN5Yosys5RTLIL8IdStringD2Ev.exit1256: ; preds = %1840, %1845, %1852 1858: ; preds = %1857, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1239 %.pn766.pn.pn.pn = phi { ptr, i32 } [ %.pn766.pn.pn, %1857 ], [ %.pn760, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1239 ] call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %51) #29 - br label %4058 + br label %4057 1859: ; preds = %1667 %1860 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %490, ptr noundef nonnull dereferenceable(7) @.str.27) #31 @@ -4434,7 +4434,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i12 %1878 = landingpad { ptr, i32 } cleanup call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %56) #29 - br label %4058 + br label %4057 1879: ; preds = %1864 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %58) #29 @@ -4560,7 +4560,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1273: ; preds = %_ call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %60) #29 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %59) #29 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %58) #29 - br label %4058 + br label %4057 1919: ; preds = %1859 %1920 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %490, ptr noundef nonnull dereferenceable(6) @.str.29) #31 @@ -4957,7 +4957,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1300: ; preds = %_ 2054: ; preds = %2053, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1288 %.pn791.pn = phi { ptr, i32 } [ %.pn791, %2053 ], [ %.pn780.pn, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1288 ] call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %61) #29 - br label %4058 + br label %4057 2055: ; preds = %1921 %2056 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %490, ptr noundef nonnull dereferenceable(7) @.str.34) #31 @@ -5071,7 +5071,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1306: ; preds = %_ 2097: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1306, %2085 %.pn796.pn = phi { ptr, i32 } [ %.pn796, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1306 ], [ %2086, %2085 ] call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %71) #29 - br label %4058 + br label %4057 2098: ; preds = %2065, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1303, %2057 br i1 %2063, label %.tail2085.thread, label %sub_0 @@ -5481,7 +5481,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i13 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1342: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i1340, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i1341, %2160 %.pn800.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %2161, %2160 ], [ %.pn800.pn.pn.pn.pn.pn.pn.pn.pn, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i1341 ], [ %.pn800.pn.pn.pn.pn.pn.pn.pn.pn, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i1340 ] call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %76) #29 - br label %4058 + br label %4057 sub_12077: ; preds = %sub_0 %2222 = getelementptr inbounds nuw i8, ptr %2060, i64 1 @@ -5880,7 +5880,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i13 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1378: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i1376, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i1377, %2282 %.pn812.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %2283, %2282 ], [ %.pn812.pn.pn.pn.pn.pn.pn.pn.pn, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i1377 ], [ %.pn812.pn.pn.pn.pn.pn.pn.pn.pn, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i1376 ] call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %92) #29 - br label %4058 + br label %4057 sub_12082: ; preds = %sub_0 %2344 = getelementptr inbounds nuw i8, ptr %2060, i64 1 @@ -6279,7 +6279,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i14 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1414: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i1412, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i1413, %2404 %.pn824.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %2405, %2404 ], [ %.pn824.pn.pn.pn.pn.pn.pn.pn.pn, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i1413 ], [ %.pn824.pn.pn.pn.pn.pn.pn.pn.pn, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i1412 ] call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %108) #29 - br label %4058 + br label %4057 sub_12087: ; preds = %.tail2080, %sub_12082 %2466 = getelementptr inbounds nuw i8, ptr %2060, i64 1 @@ -6678,7 +6678,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i14 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1450: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i1448, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i1449, %2526 %.pn836.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %2527, %2526 ], [ %.pn836.pn.pn.pn.pn.pn.pn.pn.pn, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i1449 ], [ %.pn836.pn.pn.pn.pn.pn.pn.pn.pn, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i1448 ] call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %124) #29 - br label %4058 + br label %4057 .tail2085.thread: ; preds = %sub_0, %.tail, %sub_1, %sub_12077, %.tail2075, %sub_12087, %.tail2085, %2098 %2588 = invoke noundef zeroext i1 @_ZNK5Yosys5RTLIL8IdString5emptyEv(ptr noundef nonnull align 4 dereferenceable(4) %2) @@ -6845,7 +6845,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1465: ; preds = %_ 2635: ; preds = %.tail2085.thread %2636 = landingpad { ptr, i32 } cleanup - br label %4058 + br label %4057 2637: ; preds = %2590 %2638 = landingpad { ptr, i32 } @@ -7005,7 +7005,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i14 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1480: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i1478, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i1479, %2637 %.pn857.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %2638, %2637 ], [ %.pn857.pn.pn.pn.pn.pn.pn, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i1479 ], [ %.pn857.pn.pn.pn.pn.pn.pn, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i1478 ] call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %140) #29 - br label %4058 + br label %4057 2688: ; preds = %2589 call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %153) #29 @@ -7219,7 +7219,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i14 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1500: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i1498, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i1499, %2735 %.pn847.pn.pn = phi { ptr, i32 } [ %2736, %2735 ], [ %.pn847.pn, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i1499 ], [ %.pn847.pn, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i1498 ] call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %153) #29 - br label %4058 + br label %4057 2756: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1488 %2757 = landingpad { ptr, i32 } @@ -7259,7 +7259,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1503: ; preds = %_ %.pn851.pn = phi { ptr, i32 } [ %2757, %2756 ], [ %.pn851, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i1502 ], [ %.pn851, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i1501 ] call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %159) #29 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %158) #29 - br label %4058 + br label %4057 2769: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1491 %2770 = landingpad { ptr, i32 } @@ -7299,7 +7299,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1506: ; preds = %_ %.pn854.pn = phi { ptr, i32 } [ %2770, %2769 ], [ %.pn854, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i1505 ], [ %.pn854, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i1504 ] call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %162) #29 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %161) #29 - br label %4058 + br label %4057 2782: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1360, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1432, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1494, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1465, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1396, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1324 %.0590 = phi ptr [ %2603, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1465 ], [ %2699, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1494 ], [ %2488, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1432 ], [ %2366, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1396 ], [ %2244, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1360 ], [ %2122, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1324 ] @@ -8611,7 +8611,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1623: ; preds = %3 3211: ; preds = %3210, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1528 %.pn905.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn905.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %3210 ], [ %.pn869.pn, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1528 ] call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %163) #29 - br label %4058 + br label %4057 3212: ; preds = %2786 %3213 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %490, ptr noundef nonnull dereferenceable(8) @.str.43) #31 @@ -8787,7 +8787,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1638: ; preds = %_ call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %201) #29 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %200) #29 call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %199) #29 - br label %4058 + br label %4057 3268: ; preds = %3214 %3269 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %490, ptr noundef nonnull dereferenceable(7) @.str.45) #31 @@ -9608,7 +9608,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1671: ; preds = %_ call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %206) #29 call void @_ZN5Yosys5RTLIL7SigSpecD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %205) #29 call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %205) #29 - br label %4058 + br label %4057 .loopexit2125: ; preds = %.thread2015, %3524, %2052 %.0567 = phi i32 [ %.3570, %2052 ], [ %.6573, %.thread2015 ], [ %.11578, %3524 ] @@ -9716,7 +9716,7 @@ sub_02091: ; preds = %3529 3563: ; preds = %3561, %3559 %.pn = phi { ptr, i32 } [ %3562, %3561 ], [ %3560, %3559 ] call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %236) #29 - br label %4058 + br label %4057 .lr.ph5616: ; preds = %.lr.ph5616.preheader, %_ZNSt6vectorIN5Yosys5RTLIL5StateESaIS2_EE9push_backEOS2_.exit1686 %indvars.iv8829 = phi i64 [ 0, %.lr.ph5616.preheader ], [ %indvars.iv.next8830, %_ZNSt6vectorIN5Yosys5RTLIL5StateESaIS2_EE9push_backEOS2_.exit1686 ] @@ -9884,27 +9884,27 @@ _ZNSt6vectorIN5Yosys5RTLIL5StateESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx 3627: ; preds = %3722, %_ZNSt6vectorIN5Yosys5RTLIL5StateESaIS2_EE9push_backEOS2_.exit1719, %3692, %3690, %3661, %_ZNSt6vectorIN5Yosys5RTLIL5StateESaIS2_EE9push_backEOS2_.exit1697, %3631, %3629, %3598, %_ZNSt6vectorIN5Yosys5RTLIL5StateESaIS2_EE9push_backEOS2_.exit, %3568, %3566 %3628 = landingpad { ptr, i32 } cleanup - br label %4058 + br label %4057 .loopexit2156: ; preds = %3588 %lpad.loopexit2158 = landingpad { ptr, i32 } cleanup - br label %4058 + br label %4057 .loopexit.split-lp2157: ; preds = %3583 %lpad.loopexit.split-lp2159 = landingpad { ptr, i32 } cleanup - br label %4058 + br label %4057 .loopexit2161: ; preds = %3618 %lpad.loopexit2163 = landingpad { ptr, i32 } cleanup - br label %4058 + br label %4057 .loopexit.split-lp2162: ; preds = %3613 %lpad.loopexit.split-lp2164 = landingpad { ptr, i32 } cleanup - br label %4058 + br label %4057 3629: ; preds = %.lr.ph5616 %3630 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZN5Yosys7hashlib4dictINS_5RTLIL8IdStringENS2_5ConstENS0_8hash_opsIS3_EEEixERKS3_(ptr noundef nonnull align 8 dereferenceable(49) %3545, ptr noundef nonnull align 4 dereferenceable(4) @_ZN5Yosys5RTLIL2ID5TABLEE) @@ -10063,22 +10063,22 @@ _ZNSt6vectorIN5Yosys5RTLIL5StateESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx .loopexit2146: ; preds = %3651 %lpad.loopexit2148 = landingpad { ptr, i32 } cleanup - br label %4058 + br label %4057 .loopexit.split-lp2147: ; preds = %3646 %lpad.loopexit.split-lp2149 = landingpad { ptr, i32 } cleanup - br label %4058 + br label %4057 .loopexit2151: ; preds = %3681 %lpad.loopexit2153 = landingpad { ptr, i32 } cleanup - br label %4058 + br label %4057 .loopexit.split-lp2152: ; preds = %3676 %lpad.loopexit.split-lp2154 = landingpad { ptr, i32 } cleanup - br label %4058 + br label %4057 3690: ; preds = %.lr.ph5616 %3691 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZN5Yosys7hashlib4dictINS_5RTLIL8IdStringENS2_5ConstENS0_8hash_opsIS3_EEEixERKS3_(ptr noundef nonnull align 8 dereferenceable(49) %3545, ptr noundef nonnull align 4 dereferenceable(4) @_ZN5Yosys5RTLIL2ID5TABLEE) @@ -10237,22 +10237,22 @@ _ZNSt6vectorIN5Yosys5RTLIL5StateESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx .loopexit2166: ; preds = %3712 %lpad.loopexit2168 = landingpad { ptr, i32 } cleanup - br label %4058 + br label %4057 .loopexit.split-lp2167: ; preds = %3707 %lpad.loopexit.split-lp2169 = landingpad { ptr, i32 } cleanup - br label %4058 + br label %4057 .loopexit2171: ; preds = %3742 %lpad.loopexit2173 = landingpad { ptr, i32 } cleanup - br label %4058 + br label %4057 .loopexit.split-lp2172: ; preds = %3737 %lpad.loopexit.split-lp2174 = landingpad { ptr, i32 } cleanup - br label %4058 + br label %4057 _ZNSt6vectorIN5Yosys5RTLIL5StateESaIS2_EE9push_backEOS2_.exit1686: ; preds = %3729, %_ZNSt6vectorIN5Yosys5RTLIL5StateESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i1727, %3668, %_ZNSt6vectorIN5Yosys5RTLIL5StateESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i1705, %3605, %_ZNSt6vectorIN5Yosys5RTLIL5StateESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i1683 %indvars.iv.next8830 = add nuw nsw i64 %indvars.iv8829, 1 @@ -10891,7 +10891,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1822: ; preds = %3 3979: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1822, %3923 %.pn666.pn.pn = phi { ptr, i32 } [ %.pn666.pn, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1822 ], [ %3924, %3923 ] call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %237) #29 - br label %4058 + br label %4057 3980: ; preds = %_ZN5Yosys5RTLIL7SigSpecD2Ev.exit1816, %3751, %._crit_edge5617, %3541 %.7360 = phi i32 [ 1, %3751 ], [ %3754, %_ZN5Yosys5RTLIL7SigSpecD2Ev.exit1816 ], [ %.1354, %._crit_edge5617 ], [ %.1354, %3541 ] @@ -10923,13 +10923,12 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1822: ; preds = %3 br i1 %.not671, label %.thread2058, label %3988 3988: ; preds = %.lr.ph5619 - %3989 = sext i8 %3987 to i32 - %3990 = trunc nuw nsw i64 %indvars.iv8834 to i32 - %3991 = shl nuw nsw i32 1, %3990 - %3992 = and i32 %3991, %3985 - %.not672 = icmp eq i32 %3992, 0 - %3993 = select i1 %.not672, i32 48, i32 49 - %.not673 = icmp eq i32 %3993, %3989 + %3989 = trunc nuw nsw i64 %indvars.iv8834 to i32 + %3990 = shl nuw nsw i32 1, %3989 + %3991 = and i32 %3990, %3985 + %.not672 = icmp eq i32 %3991, 0 + %3992 = select i1 %.not672, i8 48, i8 49 + %.not673 = icmp eq i8 %3992, %3987 br i1 %.not673, label %.thread2058, label %.loopexit2119 .thread2058: ; preds = %3988, %.lr.ph5619 @@ -10938,130 +10937,130 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1822: ; preds = %3 br i1 %exitcond8838.not, label %sub_02098, label %.lr.ph5619, !llvm.loop !180 sub_02098: ; preds = %.thread2058, %.preheader2118 - %3994 = load i8, ptr %3531, align 1 - %.not5631 = icmp eq i8 %3994, 48 + %3993 = load i8, ptr %3531, align 1 + %.not5631 = icmp eq i8 %3993, 48 br i1 %.not5631, label %sub_12099, label %.thread2061.tail sub_12099: ; preds = %sub_02098 - %3995 = load i8, ptr %3984, align 1 - %3996 = icmp ne i8 %3995, 0 - %3997 = zext i1 %3996 to i8 + %3994 = load i8, ptr %3984, align 1 + %3995 = icmp ne i8 %3994, 0 + %3996 = zext i1 %3995 to i8 br label %.thread2061.tail .thread2061.tail: ; preds = %sub_02098, %sub_12099 - %.not674 = phi i8 [ 1, %sub_02098 ], [ %3997, %sub_12099 ] - %3998 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN5Yosys5RTLIL5Const4bitsEv(ptr noundef nonnull align 8 dereferenceable(40) %.1) - to label %3999 unwind label %.loopexit2141 - -3999: ; preds = %.thread2061.tail - %4000 = getelementptr inbounds nuw i8, ptr %3998, i64 8 - %4001 = load ptr, ptr %4000, align 8, !tbaa !115 - %4002 = load ptr, ptr %3998, align 8, !tbaa !103 + %.not674 = phi i8 [ 1, %sub_02098 ], [ %3996, %sub_12099 ] + %3997 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN5Yosys5RTLIL5Const4bitsEv(ptr noundef nonnull align 8 dereferenceable(40) %.1) + to label %3998 unwind label %.loopexit2141 + +3998: ; preds = %.thread2061.tail + %3999 = getelementptr inbounds nuw i8, ptr %3997, i64 8 + %4000 = load ptr, ptr %3999, align 8, !tbaa !115 + %4001 = load ptr, ptr %3997, align 8, !tbaa !103 + %4002 = ptrtoint ptr %4000 to i64 %4003 = ptrtoint ptr %4001 to i64 - %4004 = ptrtoint ptr %4002 to i64 - %4005 = sub i64 %4003, %4004 - %.not.i.i1832 = icmp ugt i64 %4005, %indvars.iv8839 - br i1 %.not.i.i1832, label %4007, label %4006 + %4004 = sub i64 %4002, %4003 + %.not.i.i1832 = icmp ugt i64 %4004, %indvars.iv8839 + br i1 %.not.i.i1832, label %4006, label %4005 -4006: ; preds = %3999 - invoke void (ptr, ...) @_ZSt24__throw_out_of_range_fmtPKcz(ptr noundef nonnull @.str.56, i64 noundef %indvars.iv8839, i64 noundef %4005) #35 +4005: ; preds = %3998 + invoke void (ptr, ...) @_ZSt24__throw_out_of_range_fmtPKcz(ptr noundef nonnull @.str.56, i64 noundef %indvars.iv8839, i64 noundef %4004) #35 to label %.noexc1833 unwind label %.loopexit.split-lp2142 -.noexc1833: ; preds = %4006 +.noexc1833: ; preds = %4005 unreachable -4007: ; preds = %3999 - %4008 = getelementptr inbounds nuw i8, ptr %4002, i64 %indvars.iv8839 - store i8 %.not674, ptr %4008, align 1, !tbaa !23 +4006: ; preds = %3998 + %4007 = getelementptr inbounds nuw i8, ptr %4001, i64 %indvars.iv8839 + store i8 %.not674, ptr %4007, align 1, !tbaa !23 br label %.loopexit2119 -.loopexit2119: ; preds = %3988, %4007 +.loopexit2119: ; preds = %3988, %4006 %indvars.iv.next8840 = add nuw nsw i64 %indvars.iv8839, 1 - %4009 = trunc nuw i64 %indvars.iv.next8840 to i32 - %.0338.highbits = lshr i32 %4009, %3543 - %4010 = icmp eq i32 %.0338.highbits, 0 - br i1 %4010, label %.preheader2118, label %sub_02102, !llvm.loop !181 + %4008 = trunc nuw i64 %indvars.iv.next8840 to i32 + %.0338.highbits = lshr i32 %4008, %3543 + %4009 = icmp eq i32 %.0338.highbits, 0 + br i1 %4009, label %.preheader2118, label %sub_02102, !llvm.loop !181 .loopexit2141: ; preds = %.thread2061.tail %lpad.loopexit2143 = landingpad { ptr, i32 } cleanup - br label %4058 + br label %4057 -.loopexit.split-lp2142: ; preds = %4006 +.loopexit.split-lp2142: ; preds = %4005 %lpad.loopexit.split-lp2144 = landingpad { ptr, i32 } cleanup - br label %4058 + br label %4057 sub_02102: ; preds = %.loopexit2119 - %4011 = load i8, ptr %3531, align 1 - %.not5632 = icmp eq i8 %4011, 48 + %4010 = load i8, ptr %3531, align 1 + %.not5632 = icmp eq i8 %4010, 48 br i1 %.not5632, label %sub_12103, label %.backedge.backedge sub_12103: ; preds = %sub_02102 - %4012 = load i8, ptr %3984, align 1 - %4013 = icmp eq i8 %4012, 0 - %4014 = zext i1 %4013 to i8 + %4011 = load i8, ptr %3984, align 1 + %4012 = icmp eq i8 %4011, 0 + %4013 = zext i1 %4012 to i8 br label %.backedge.backedge .thread2024: ; preds = %.tail2090, %3981, %3529, %.tail2094, %3526, %3219, %3216, %1861, %496, %492, %sub_02091, %3268, %2788, %605, %.loopexit2125, %470 - %4015 = load i32, ptr %26, align 4, !tbaa !18 - invoke void (ptr, ...) @_ZN5Yosys9log_errorEPKcz(ptr noundef nonnull @.str.49, i32 noundef %4015) #35 - to label %4016 unwind label %.loopexit.split-lp2186 + %4014 = load i32, ptr %26, align 4, !tbaa !18 + invoke void (ptr, ...) @_ZN5Yosys9log_errorEPKcz(ptr noundef nonnull @.str.49, i32 noundef %4014) #35 + to label %4015 unwind label %.loopexit.split-lp2186 -4016: ; preds = %.thread2024 +4015: ; preds = %.thread2024 unreachable .loopexit2184: ; preds = %.loopexit2125, %.thread2041 - %4017 = load i32, ptr %26, align 4, !tbaa !18 - %4018 = load ptr, ptr %21, align 8, !tbaa !25 - invoke void (ptr, ...) @_ZN5Yosys9log_errorEPKcz(ptr noundef nonnull @.str.50, i32 noundef %4017, ptr noundef %4018) #35 - to label %4019 unwind label %.loopexit.split-lp2186 + %4016 = load i32, ptr %26, align 4, !tbaa !18 + %4017 = load ptr, ptr %21, align 8, !tbaa !25 + invoke void (ptr, ...) @_ZN5Yosys9log_errorEPKcz(ptr noundef nonnull @.str.50, i32 noundef %4016, ptr noundef %4017) #35 + to label %4018 unwind label %.loopexit.split-lp2186 -4019: ; preds = %.loopexit2184 +4018: ; preds = %.loopexit2184 unreachable .loopexit2183: ; preds = %.loopexit2125, %471 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %26) #29 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #29 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #29 - %4020 = load ptr, ptr %395, align 8, !tbaa !41 - %4021 = load ptr, ptr %396, align 8, !tbaa !38 - %.not4.i.i.i.i.i1834 = icmp eq ptr %4020, %4021 + %4019 = load ptr, ptr %395, align 8, !tbaa !41 + %4020 = load ptr, ptr %396, align 8, !tbaa !38 + %.not4.i.i.i.i.i1834 = icmp eq ptr %4019, %4020 br i1 %.not4.i.i.i.i.i1834, label %_ZSt8_DestroyIPN5Yosys7hashlib4dictINS0_5RTLIL8IdStringESt4pairIibENS1_8hash_opsIS4_EEE7entry_tESA_EvT_SC_RSaIT0_E.exit.i.i, label %.lr.ph.i.i.i.i.i1835 .lr.ph.i.i.i.i.i1835: ; preds = %.loopexit2183, %_ZSt8_DestroyIN5Yosys7hashlib4dictINS0_5RTLIL8IdStringESt4pairIibENS1_8hash_opsIS4_EEE7entry_tEEvPT_.exit.i.i.i.i.i - %.05.i.i.i.i.i1836 = phi ptr [ %4037, %_ZSt8_DestroyIN5Yosys7hashlib4dictINS0_5RTLIL8IdStringESt4pairIibENS1_8hash_opsIS4_EEE7entry_tEEvPT_.exit.i.i.i.i.i ], [ %4020, %.loopexit2183 ] - %4022 = load i32, ptr %.05.i.i.i.i.i1836, align 4, !tbaa !29 - %4023 = load i8, ptr @_ZN5Yosys5RTLIL8IdString17destruct_guard_okE, align 1, !tbaa !31, !range !33, !noundef !34 - %4024 = trunc nuw i8 %4023 to i1 - %4025 = icmp ne i32 %4022, 0 - %or.cond.i.i.i.i.i.i.i.i.i.i = and i1 %4025, %4024 - br i1 %or.cond.i.i.i.i.i.i.i.i.i.i, label %4026, label %_ZSt8_DestroyIN5Yosys7hashlib4dictINS0_5RTLIL8IdStringESt4pairIibENS1_8hash_opsIS4_EEE7entry_tEEvPT_.exit.i.i.i.i.i - -4026: ; preds = %.lr.ph.i.i.i.i.i1835 - %4027 = sext i32 %4022 to i64 - %4028 = load ptr, ptr @_ZN5Yosys5RTLIL8IdString24global_refcount_storage_E, align 8, !tbaa !35 - %4029 = getelementptr inbounds nuw i32, ptr %4028, i64 %4027 - %4030 = load i32, ptr %4029, align 4, !tbaa !18 - %4031 = add nsw i32 %4030, -1 - store i32 %4031, ptr %4029, align 4, !tbaa !18 - %4032 = icmp sgt i32 %4030, 1 - br i1 %4032, label %_ZSt8_DestroyIN5Yosys7hashlib4dictINS0_5RTLIL8IdStringESt4pairIibENS1_8hash_opsIS4_EEE7entry_tEEvPT_.exit.i.i.i.i.i, label %4033 - -4033: ; preds = %4026 - invoke void @_ZN5Yosys5RTLIL8IdString14free_referenceEi(i32 noundef %4022) - to label %_ZSt8_DestroyIN5Yosys7hashlib4dictINS0_5RTLIL8IdStringESt4pairIibENS1_8hash_opsIS4_EEE7entry_tEEvPT_.exit.i.i.i.i.i unwind label %4034 - -4034: ; preds = %4033 - %4035 = landingpad { ptr, i32 } + %.05.i.i.i.i.i1836 = phi ptr [ %4036, %_ZSt8_DestroyIN5Yosys7hashlib4dictINS0_5RTLIL8IdStringESt4pairIibENS1_8hash_opsIS4_EEE7entry_tEEvPT_.exit.i.i.i.i.i ], [ %4019, %.loopexit2183 ] + %4021 = load i32, ptr %.05.i.i.i.i.i1836, align 4, !tbaa !29 + %4022 = load i8, ptr @_ZN5Yosys5RTLIL8IdString17destruct_guard_okE, align 1, !tbaa !31, !range !33, !noundef !34 + %4023 = trunc nuw i8 %4022 to i1 + %4024 = icmp ne i32 %4021, 0 + %or.cond.i.i.i.i.i.i.i.i.i.i = and i1 %4024, %4023 + br i1 %or.cond.i.i.i.i.i.i.i.i.i.i, label %4025, label %_ZSt8_DestroyIN5Yosys7hashlib4dictINS0_5RTLIL8IdStringESt4pairIibENS1_8hash_opsIS4_EEE7entry_tEEvPT_.exit.i.i.i.i.i + +4025: ; preds = %.lr.ph.i.i.i.i.i1835 + %4026 = sext i32 %4021 to i64 + %4027 = load ptr, ptr @_ZN5Yosys5RTLIL8IdString24global_refcount_storage_E, align 8, !tbaa !35 + %4028 = getelementptr inbounds nuw i32, ptr %4027, i64 %4026 + %4029 = load i32, ptr %4028, align 4, !tbaa !18 + %4030 = add nsw i32 %4029, -1 + store i32 %4030, ptr %4028, align 4, !tbaa !18 + %4031 = icmp sgt i32 %4029, 1 + br i1 %4031, label %_ZSt8_DestroyIN5Yosys7hashlib4dictINS0_5RTLIL8IdStringESt4pairIibENS1_8hash_opsIS4_EEE7entry_tEEvPT_.exit.i.i.i.i.i, label %4032 + +4032: ; preds = %4025 + invoke void @_ZN5Yosys5RTLIL8IdString14free_referenceEi(i32 noundef %4021) + to label %_ZSt8_DestroyIN5Yosys7hashlib4dictINS0_5RTLIL8IdStringESt4pairIibENS1_8hash_opsIS4_EEE7entry_tEEvPT_.exit.i.i.i.i.i unwind label %4033 + +4033: ; preds = %4032 + %4034 = landingpad { ptr, i32 } catch ptr null - %4036 = extractvalue { ptr, i32 } %4035, 0 - call void @__clang_call_terminate(ptr %4036) #34 + %4035 = extractvalue { ptr, i32 } %4034, 0 + call void @__clang_call_terminate(ptr %4035) #34 unreachable -_ZSt8_DestroyIN5Yosys7hashlib4dictINS0_5RTLIL8IdStringESt4pairIibENS1_8hash_opsIS4_EEE7entry_tEEvPT_.exit.i.i.i.i.i: ; preds = %4033, %4026, %.lr.ph.i.i.i.i.i1835 - %4037 = getelementptr inbounds nuw i8, ptr %.05.i.i.i.i.i1836, i64 16 - %.not.i.i.i.i.i1837 = icmp eq ptr %4037, %4021 +_ZSt8_DestroyIN5Yosys7hashlib4dictINS0_5RTLIL8IdStringESt4pairIibENS1_8hash_opsIS4_EEE7entry_tEEvPT_.exit.i.i.i.i.i: ; preds = %4032, %4025, %.lr.ph.i.i.i.i.i1835 + %4036 = getelementptr inbounds nuw i8, ptr %.05.i.i.i.i.i1836, i64 16 + %.not.i.i.i.i.i1837 = icmp eq ptr %4036, %4020 br i1 %.not.i.i.i.i.i1837, label %_ZSt8_DestroyIPN5Yosys7hashlib4dictINS0_5RTLIL8IdStringESt4pairIibENS1_8hash_opsIS4_EEE7entry_tESA_EvT_SC_RSaIT0_E.exitthread-pre-split.i.i, label %.lr.ph.i.i.i.i.i1835, !llvm.loop !109 _ZSt8_DestroyIPN5Yosys7hashlib4dictINS0_5RTLIL8IdStringESt4pairIibENS1_8hash_opsIS4_EEE7entry_tESA_EvT_SC_RSaIT0_E.exitthread-pre-split.i.i: ; preds = %_ZSt8_DestroyIN5Yosys7hashlib4dictINS0_5RTLIL8IdStringESt4pairIibENS1_8hash_opsIS4_EEE7entry_tEEvPT_.exit.i.i.i.i.i @@ -11069,50 +11068,50 @@ _ZSt8_DestroyIPN5Yosys7hashlib4dictINS0_5RTLIL8IdStringESt4pairIibENS1_8hash_ops br label %_ZSt8_DestroyIPN5Yosys7hashlib4dictINS0_5RTLIL8IdStringESt4pairIibENS1_8hash_opsIS4_EEE7entry_tESA_EvT_SC_RSaIT0_E.exit.i.i _ZSt8_DestroyIPN5Yosys7hashlib4dictINS0_5RTLIL8IdStringESt4pairIibENS1_8hash_opsIS4_EEE7entry_tESA_EvT_SC_RSaIT0_E.exit.i.i: ; preds = %_ZSt8_DestroyIPN5Yosys7hashlib4dictINS0_5RTLIL8IdStringESt4pairIibENS1_8hash_opsIS4_EEE7entry_tESA_EvT_SC_RSaIT0_E.exitthread-pre-split.i.i, %.loopexit2183 - %4038 = phi ptr [ %.pr.i.i1838, %_ZSt8_DestroyIPN5Yosys7hashlib4dictINS0_5RTLIL8IdStringESt4pairIibENS1_8hash_opsIS4_EEE7entry_tESA_EvT_SC_RSaIT0_E.exitthread-pre-split.i.i ], [ %4020, %.loopexit2183 ] - %.not.i.i.i.i1839 = icmp eq ptr %4038, null - br i1 %.not.i.i.i.i1839, label %_ZNSt6vectorIN5Yosys7hashlib4dictINS0_5RTLIL8IdStringESt4pairIibENS1_8hash_opsIS4_EEE7entry_tESaISA_EED2Ev.exit.i, label %4039 - -4039: ; preds = %_ZSt8_DestroyIPN5Yosys7hashlib4dictINS0_5RTLIL8IdStringESt4pairIibENS1_8hash_opsIS4_EEE7entry_tESA_EvT_SC_RSaIT0_E.exit.i.i - %4040 = getelementptr inbounds nuw i8, ptr %23, i64 40 - %4041 = load ptr, ptr %4040, align 8, !tbaa !182 - %4042 = ptrtoint ptr %4041 to i64 - %4043 = ptrtoint ptr %4038 to i64 - %4044 = sub i64 %4042, %4043 - call void @_ZdlPvm(ptr noundef nonnull %4038, i64 noundef %4044) #33 + %4037 = phi ptr [ %.pr.i.i1838, %_ZSt8_DestroyIPN5Yosys7hashlib4dictINS0_5RTLIL8IdStringESt4pairIibENS1_8hash_opsIS4_EEE7entry_tESA_EvT_SC_RSaIT0_E.exitthread-pre-split.i.i ], [ %4019, %.loopexit2183 ] + %.not.i.i.i.i1839 = icmp eq ptr %4037, null + br i1 %.not.i.i.i.i1839, label %_ZNSt6vectorIN5Yosys7hashlib4dictINS0_5RTLIL8IdStringESt4pairIibENS1_8hash_opsIS4_EEE7entry_tESaISA_EED2Ev.exit.i, label %4038 + +4038: ; preds = %_ZSt8_DestroyIPN5Yosys7hashlib4dictINS0_5RTLIL8IdStringESt4pairIibENS1_8hash_opsIS4_EEE7entry_tESA_EvT_SC_RSaIT0_E.exit.i.i + %4039 = getelementptr inbounds nuw i8, ptr %23, i64 40 + %4040 = load ptr, ptr %4039, align 8, !tbaa !182 + %4041 = ptrtoint ptr %4040 to i64 + %4042 = ptrtoint ptr %4037 to i64 + %4043 = sub i64 %4041, %4042 + call void @_ZdlPvm(ptr noundef nonnull %4037, i64 noundef %4043) #33 br label %_ZNSt6vectorIN5Yosys7hashlib4dictINS0_5RTLIL8IdStringESt4pairIibENS1_8hash_opsIS4_EEE7entry_tESaISA_EED2Ev.exit.i -_ZNSt6vectorIN5Yosys7hashlib4dictINS0_5RTLIL8IdStringESt4pairIibENS1_8hash_opsIS4_EEE7entry_tESaISA_EED2Ev.exit.i: ; preds = %4039, %_ZSt8_DestroyIPN5Yosys7hashlib4dictINS0_5RTLIL8IdStringESt4pairIibENS1_8hash_opsIS4_EEE7entry_tESA_EvT_SC_RSaIT0_E.exit.i.i - %4045 = load ptr, ptr %23, align 8, !tbaa !35 - %.not.i.i.i1.i1840 = icmp eq ptr %4045, null - br i1 %.not.i.i.i1.i1840, label %_ZN5Yosys7hashlib4dictINS_5RTLIL8IdStringESt4pairIibENS0_8hash_opsIS3_EEED2Ev.exit, label %4046 - -4046: ; preds = %_ZNSt6vectorIN5Yosys7hashlib4dictINS0_5RTLIL8IdStringESt4pairIibENS1_8hash_opsIS4_EEE7entry_tESaISA_EED2Ev.exit.i - %4047 = getelementptr inbounds nuw i8, ptr %23, i64 16 - %4048 = load ptr, ptr %4047, align 8, !tbaa !84 - %4049 = ptrtoint ptr %4048 to i64 - %4050 = ptrtoint ptr %4045 to i64 - %4051 = sub i64 %4049, %4050 - call void @_ZdlPvm(ptr noundef nonnull %4045, i64 noundef %4051) #33 +_ZNSt6vectorIN5Yosys7hashlib4dictINS0_5RTLIL8IdStringESt4pairIibENS1_8hash_opsIS4_EEE7entry_tESaISA_EED2Ev.exit.i: ; preds = %4038, %_ZSt8_DestroyIPN5Yosys7hashlib4dictINS0_5RTLIL8IdStringESt4pairIibENS1_8hash_opsIS4_EEE7entry_tESA_EvT_SC_RSaIT0_E.exit.i.i + %4044 = load ptr, ptr %23, align 8, !tbaa !35 + %.not.i.i.i1.i1840 = icmp eq ptr %4044, null + br i1 %.not.i.i.i1.i1840, label %_ZN5Yosys7hashlib4dictINS_5RTLIL8IdStringESt4pairIibENS0_8hash_opsIS3_EEED2Ev.exit, label %4045 + +4045: ; preds = %_ZNSt6vectorIN5Yosys7hashlib4dictINS0_5RTLIL8IdStringESt4pairIibENS1_8hash_opsIS4_EEE7entry_tESaISA_EED2Ev.exit.i + %4046 = getelementptr inbounds nuw i8, ptr %23, i64 16 + %4047 = load ptr, ptr %4046, align 8, !tbaa !84 + %4048 = ptrtoint ptr %4047 to i64 + %4049 = ptrtoint ptr %4044 to i64 + %4050 = sub i64 %4048, %4049 + call void @_ZdlPvm(ptr noundef nonnull %4044, i64 noundef %4050) #33 br label %_ZN5Yosys7hashlib4dictINS_5RTLIL8IdStringESt4pairIibENS0_8hash_opsIS3_EEED2Ev.exit -_ZN5Yosys7hashlib4dictINS_5RTLIL8IdStringESt4pairIibENS0_8hash_opsIS3_EEED2Ev.exit: ; preds = %_ZNSt6vectorIN5Yosys7hashlib4dictINS0_5RTLIL8IdStringESt4pairIibENS1_8hash_opsIS4_EEE7entry_tESaISA_EED2Ev.exit.i, %4046 +_ZN5Yosys7hashlib4dictINS_5RTLIL8IdStringESt4pairIibENS0_8hash_opsIS3_EEED2Ev.exit: ; preds = %_ZNSt6vectorIN5Yosys7hashlib4dictINS0_5RTLIL8IdStringESt4pairIibENS1_8hash_opsIS4_EEE7entry_tESaISA_EED2Ev.exit.i, %4045 call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %23) #29 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #29 - %4052 = load ptr, ptr %21, align 8, !tbaa !25 - %4053 = icmp eq ptr %4052, %249 - br i1 %4053, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i1842, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i1841 + %4051 = load ptr, ptr %21, align 8, !tbaa !25 + %4052 = icmp eq ptr %4051, %249 + br i1 %4052, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i1842, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i1841 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i1842: ; preds = %_ZN5Yosys7hashlib4dictINS_5RTLIL8IdStringESt4pairIibENS0_8hash_opsIS3_EEED2Ev.exit - %4054 = load i64, ptr %250, align 8, !tbaa !14 - %4055 = icmp ult i64 %4054, 16 - call void @llvm.assume(i1 %4055) + %4053 = load i64, ptr %250, align 8, !tbaa !14 + %4054 = icmp ult i64 %4053, 16 + call void @llvm.assume(i1 %4054) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1843 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i1841: ; preds = %_ZN5Yosys7hashlib4dictINS_5RTLIL8IdStringESt4pairIibENS0_8hash_opsIS3_EEED2Ev.exit - %4056 = load i64, ptr %249, align 8, !tbaa !17 - %4057 = add i64 %4056, 1 - call void @_ZdlPvm(ptr noundef %4052, i64 noundef %4057) #33 + %4055 = load i64, ptr %249, align 8, !tbaa !17 + %4056 = add i64 %4055, 1 + call void @_ZdlPvm(ptr noundef %4051, i64 noundef %4056) #33 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1843 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1843: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i1842, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i1841 @@ -11120,7 +11119,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1843: ; preds = %_ call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #29 ret void -4058: ; preds = %.loopexit2141, %.loopexit.split-lp2142, %.loopexit2171, %.loopexit.split-lp2172, %.loopexit2166, %.loopexit.split-lp2167, %.loopexit2151, %.loopexit.split-lp2152, %.loopexit2146, %.loopexit.split-lp2147, %.loopexit2161, %.loopexit.split-lp2162, %.loopexit2156, %.loopexit.split-lp2157, %.loopexit2178, %.loopexit.split-lp2179, %.loopexit2185, %.loopexit.split-lp2186, %1148, %3563, %3979, %3627, %499, %501, %619, %.body1125, %1858, %2054, %3211, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1638, %3525, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1044, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1273, %1877, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1506, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1503, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1500, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1480, %2635, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1450, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1414, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1378, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1342, %2097, %482 +4057: ; preds = %.loopexit2141, %.loopexit.split-lp2142, %.loopexit2171, %.loopexit.split-lp2172, %.loopexit2166, %.loopexit.split-lp2167, %.loopexit2151, %.loopexit.split-lp2152, %.loopexit2146, %.loopexit.split-lp2147, %.loopexit2161, %.loopexit.split-lp2162, %.loopexit2156, %.loopexit.split-lp2157, %.loopexit2178, %.loopexit.split-lp2179, %.loopexit2185, %.loopexit.split-lp2186, %1148, %3563, %3979, %3627, %499, %501, %619, %.body1125, %1858, %2054, %3211, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1638, %3525, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1044, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1273, %1877, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1506, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1503, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1500, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1480, %2635, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1450, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1414, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1378, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1342, %2097, %482 %.pn955 = phi { ptr, i32 } [ %483, %482 ], [ %.pn951.pn, %3525 ], [ %.pn920.pn.pn.pn, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1638 ], [ %.pn905.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %3211 ], [ %.pn791.pn, %2054 ], [ %.pn766.pn.pn.pn, %1858 ], [ %500, %499 ], [ %.pn720.pn.pn.pn.pn.pn, %.body1125 ], [ %.pn690, %619 ], [ %502, %501 ], [ %.pn683.pn, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1044 ], [ %1878, %1877 ], [ %.pn772.pn.pn, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1273 ], [ %.pn857.pn.pn.pn.pn.pn.pn.pn, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1480 ], [ %.pn854.pn, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1506 ], [ %.pn851.pn, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1503 ], [ %.pn847.pn.pn, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1500 ], [ %2636, %2635 ], [ %.pn836.pn.pn.pn.pn.pn.pn.pn.pn.pn, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1450 ], [ %.pn824.pn.pn.pn.pn.pn.pn.pn.pn.pn, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1414 ], [ %.pn812.pn.pn.pn.pn.pn.pn.pn.pn.pn, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1378 ], [ %.pn800.pn.pn.pn.pn.pn.pn.pn.pn.pn, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1342 ], [ %.pn796.pn, %2097 ], [ %.pn666.pn.pn, %3979 ], [ %.pn, %3563 ], [ %3628, %3627 ], [ %.pn735.pn.pn.pn.pn, %1148 ], [ %lpad.loopexit2187, %.loopexit2185 ], [ %lpad.loopexit.split-lp2188, %.loopexit.split-lp2186 ], [ %lpad.loopexit2180, %.loopexit2178 ], [ %lpad.loopexit.split-lp2181, %.loopexit.split-lp2179 ], [ %lpad.loopexit2158, %.loopexit2156 ], [ %lpad.loopexit.split-lp2159, %.loopexit.split-lp2157 ], [ %lpad.loopexit2163, %.loopexit2161 ], [ %lpad.loopexit.split-lp2164, %.loopexit.split-lp2162 ], [ %lpad.loopexit2148, %.loopexit2146 ], [ %lpad.loopexit.split-lp2149, %.loopexit.split-lp2147 ], [ %lpad.loopexit2153, %.loopexit2151 ], [ %lpad.loopexit.split-lp2154, %.loopexit.split-lp2152 ], [ %lpad.loopexit2168, %.loopexit2166 ], [ %lpad.loopexit.split-lp2169, %.loopexit.split-lp2167 ], [ %lpad.loopexit2173, %.loopexit2171 ], [ %lpad.loopexit.split-lp2174, %.loopexit.split-lp2172 ], [ %lpad.loopexit2143, %.loopexit2141 ], [ %lpad.loopexit.split-lp2144, %.loopexit.split-lp2142 ] call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %26) #29 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #29 @@ -11128,20 +11127,20 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1843: ; preds = %_ call void @_ZN5Yosys7hashlib4dictINS_5RTLIL8IdStringESt4pairIibENS0_8hash_opsIS3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(49) %23) #29 call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %23) #29 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #29 - %4059 = load ptr, ptr %21, align 8, !tbaa !25 - %4060 = icmp eq ptr %4059, %249 - br i1 %4060, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i1845, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i1844 - -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i1845: ; preds = %4058 - %4061 = load i64, ptr %250, align 8, !tbaa !14 - %4062 = icmp ult i64 %4061, 16 - call void @llvm.assume(i1 %4062) + %4058 = load ptr, ptr %21, align 8, !tbaa !25 + %4059 = icmp eq ptr %4058, %249 + br i1 %4059, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i1845, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i1844 + +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i1845: ; preds = %4057 + %4060 = load i64, ptr %250, align 8, !tbaa !14 + %4061 = icmp ult i64 %4060, 16 + call void @llvm.assume(i1 %4061) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1846 -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i1844: ; preds = %4058 - %4063 = load i64, ptr %249, align 8, !tbaa !17 - %4064 = add i64 %4063, 1 - call void @_ZdlPvm(ptr noundef %4059, i64 noundef %4064) #33 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i1844: ; preds = %4057 + %4062 = load i64, ptr %249, align 8, !tbaa !17 + %4063 = add i64 %4062, 1 + call void @_ZdlPvm(ptr noundef %4058, i64 noundef %4063) #33 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1846 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1846: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i1845, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i1844 diff --git a/bench/z3/optimized/fm_tactic.ll b/bench/z3/optimized/fm_tactic.ll index 33e21d52f3e..70adb357c2e 100644 --- a/bench/z3/optimized/fm_tactic.ll +++ b/bench/z3/optimized/fm_tactic.ll @@ -16083,13 +16083,12 @@ _ZN11mpq_managerILb1EE2eqERK3mpzS3_.exit.i.i.i: ; preds = %116, %105 %184 = getelementptr inbounds nuw i32, ptr %166, i64 %indvars.iv129 %185 = load i32, ptr %184, align 4, !tbaa !117 %186 = tail call noundef i32 @llvm.abs.i32(i32 %185, i1 true) - %187 = zext nneg i32 %186 to i64 - %188 = getelementptr inbounds nuw i8, ptr %168, i64 %187 - %189 = load i8, ptr %188, align 1, !tbaa !107 - %190 = sext i8 %189 to i32 - %.inv = icmp sgt i32 %185, -1 - %191 = select i1 %.inv, i32 1, i32 -1 - %.not80 = icmp eq i32 %191, %190 + %187 = icmp slt i32 %185, 0 + %188 = zext nneg i32 %186 to i64 + %189 = getelementptr inbounds nuw i8, ptr %168, i64 %188 + %190 = load i8, ptr %189, align 1, !tbaa !107 + %191 = select i1 %187, i8 -1, i8 1 + %.not80 = icmp eq i8 %191, %190 %indvars.iv.next130 = add nuw nsw i64 %indvars.iv129, 1 %exitcond.not = icmp ne i64 %indvars.iv.next130, %wide.trip.count %or.cond143.not = select i1 %.not80, i1 %exitcond.not, i1 false diff --git a/bench/zfp/optimized/testzfp.ll b/bench/zfp/optimized/testzfp.ll index 759261c654c..050df1028bf 100644 --- a/bench/zfp/optimized/testzfp.ll +++ b/bench/zfp/optimized/testzfp.ll @@ -3081,8 +3081,8 @@ _ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_.exit200: ; preds = %1 144: ; preds = %_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_.exit200, %_Z4hashPKvm.exit %145 = tail call ptr @zfp_stream_open(ptr noundef null) %146 = lshr exact i32 2, %64 - %147 = select i1 %63, i32 64, i32 32 - %148 = icmp eq i32 %1, 1 + %147 = icmp eq i32 %1, 1 + %148 = select i1 %63, i32 16, i32 8 br label %151 149: ; preds = %151 @@ -3099,11 +3099,11 @@ _ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_.exit200: ; preds = %1 %154 = getelementptr inbounds nuw [2 x [2 x [4 x [4 x double]]]], ptr @__const._Z4testIdEjj9ArraySize.emax, i64 0, i64 %103, i64 %104, i64 %106, i64 %153 %155 = load double, ptr %154, align 8, !tbaa !46 %156 = fptrunc double %155 to float - %157 = tail call noundef i32 @_Z9test_rateIfEjP10zfp_streamPK9zfp_fielddT_b(ptr noundef %145, ptr noundef %18, double noundef %152, float noundef %156, i1 noundef zeroext %148) + %157 = tail call noundef i32 @_Z9test_rateIfEjP10zfp_streamPK9zfp_fielddT_b(ptr noundef %145, ptr noundef %18, double noundef %152, float noundef %156, i1 noundef zeroext %147) %158 = add i32 %157, %.0173250 %159 = shl nuw nsw i32 %.0172251, 2 %160 = add i32 %.0171252, 1 - %.not179 = icmp samesign ugt i32 %159, %147 + %.not179 = icmp samesign ult i32 %148, %.0172251 br i1 %.not179, label %149, label %151 161: ; preds = %149 @@ -3716,8 +3716,8 @@ _ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_.exit200: ; preds = %1 144: ; preds = %_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_.exit200, %_Z4hashPKvm.exit %145 = tail call ptr @zfp_stream_open(ptr noundef null) %146 = lshr exact i32 2, %64 - %147 = select i1 %63, i32 64, i32 32 - %148 = icmp eq i32 %1, 1 + %147 = icmp eq i32 %1, 1 + %148 = select i1 %63, i32 16, i32 8 br label %151 149: ; preds = %151 @@ -3733,11 +3733,11 @@ _ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_.exit200: ; preds = %1 %153 = zext i32 %.0171252 to i64 %154 = getelementptr inbounds nuw [2 x [2 x [4 x [4 x double]]]], ptr @__const._Z4testIdEjj9ArraySize.emax, i64 0, i64 %103, i64 %104, i64 %106, i64 %153 %155 = load double, ptr %154, align 8, !tbaa !46 - %156 = tail call noundef i32 @_Z9test_rateIdEjP10zfp_streamPK9zfp_fielddT_b(ptr noundef %145, ptr noundef %18, double noundef %152, double noundef %155, i1 noundef zeroext %148) + %156 = tail call noundef i32 @_Z9test_rateIdEjP10zfp_streamPK9zfp_fielddT_b(ptr noundef %145, ptr noundef %18, double noundef %152, double noundef %155, i1 noundef zeroext %147) %157 = add i32 %156, %.0173250 %158 = shl nuw nsw i32 %.0172251, 2 %159 = add i32 %.0171252, 1 - %.not179 = icmp samesign ugt i32 %158, %147 + %.not179 = icmp samesign ult i32 %148, %.0172251 br i1 %.not179, label %149, label %151 160: ; preds = %149 diff --git a/bench/zlib/optimized/inflate.ll b/bench/zlib/optimized/inflate.ll index 8e9440edf2a..c2c6bc19a88 100644 --- a/bench/zlib/optimized/inflate.ll +++ b/bench/zlib/optimized/inflate.ll @@ -4046,7 +4046,7 @@ inflateStateCheck.exit: ; preds = %16 ._crit_edge70: ; preds = %29 %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %14, i64 140 %.pre71 = load i32, ptr %.phi.trans.insert, align 4, !tbaa !100 - br label %57 + br label %56 30: ; preds = %29 store i32 16211, ptr %18, align 8, !tbaa !18 @@ -4090,148 +4090,146 @@ inflateStateCheck.exit: ; preds = %16 %.01415.i = phi i32 [ 0, %.lr.ph.preheader.i ], [ %.1.i, %.lr.ph.i ] %45 = getelementptr inbounds nuw i8, ptr %2, i64 %indvars.iv.i %46 = load i8, ptr %45, align 1, !tbaa !41 - %47 = zext i8 %46 to i32 - %48 = icmp samesign ult i32 %.01415.i, 2 - %49 = select i1 %48, i32 0, i32 255 - %50 = icmp eq i32 %49, %47 - %51 = add nuw nsw i32 %.01415.i, 1 + %47 = icmp samesign ugt i32 %.01415.i, 1 + %48 = sext i1 %47 to i8 + %49 = icmp eq i8 %46, %48 + %50 = add nuw nsw i32 %.01415.i, 1 %.not.i45 = icmp eq i8 %46, 0 - %52 = sub nuw nsw i32 4, %.01415.i - %spec.select.i46 = select i1 %.not.i45, i32 %52, i32 0 - %.1.i = select i1 %50, i32 %51, i32 %spec.select.i46 + %51 = sub nuw nsw i32 4, %.01415.i + %spec.select.i46 = select i1 %.not.i45, i32 %51, i32 0 + %.1.i = select i1 %49, i32 %50, i32 %spec.select.i46 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 - %53 = icmp samesign ult i64 %indvars.iv.next.i, %44 - %54 = icmp samesign ult i32 %.1.i, 4 - %55 = select i1 %53, i1 %54, i1 false - br i1 %55, label %.lr.ph.i, label %syncsearch.exit, !llvm.loop !102 + %52 = icmp samesign ult i64 %indvars.iv.next.i, %44 + %53 = icmp samesign ult i32 %.1.i, 4 + %54 = select i1 %52, i1 %53, i1 false + br i1 %54, label %.lr.ph.i, label %syncsearch.exit, !llvm.loop !102 syncsearch.exit: ; preds = %.lr.ph.i, %.thread %.014.lcssa.i = phi i32 [ 0, %.thread ], [ %.1.i, %.lr.ph.i ] - %56 = getelementptr inbounds nuw i8, ptr %14, i64 140 - store i32 %.014.lcssa.i, ptr %56, align 4, !tbaa !100 + %55 = getelementptr inbounds nuw i8, ptr %14, i64 140 + store i32 %.014.lcssa.i, ptr %55, align 4, !tbaa !100 %.pre = load i32, ptr %22, align 8, !tbaa !45 - br label %57 - -57: ; preds = %._crit_edge70, %syncsearch.exit - %58 = phi i32 [ %.014.lcssa.i, %syncsearch.exit ], [ %.pre71, %._crit_edge70 ] - %59 = phi i32 [ %.pre, %syncsearch.exit ], [ %23, %._crit_edge70 ] - %60 = getelementptr inbounds nuw i8, ptr %14, i64 140 - %61 = load ptr, ptr %0, align 8, !tbaa !44 - %62 = icmp ne i32 %59, 0 - %63 = icmp ult i32 %58, 4 - %64 = select i1 %62, i1 %63, i1 false - br i1 %64, label %.lr.ph.preheader.i49, label %syncsearch.exit58 - -.lr.ph.preheader.i49: ; preds = %57 - %65 = zext i32 %59 to i64 + br label %56 + +56: ; preds = %._crit_edge70, %syncsearch.exit + %57 = phi i32 [ %.014.lcssa.i, %syncsearch.exit ], [ %.pre71, %._crit_edge70 ] + %58 = phi i32 [ %.pre, %syncsearch.exit ], [ %23, %._crit_edge70 ] + %59 = getelementptr inbounds nuw i8, ptr %14, i64 140 + %60 = load ptr, ptr %0, align 8, !tbaa !44 + %61 = icmp ne i32 %58, 0 + %62 = icmp ult i32 %57, 4 + %63 = select i1 %61, i1 %62, i1 false + br i1 %63, label %.lr.ph.preheader.i49, label %syncsearch.exit58 + +.lr.ph.preheader.i49: ; preds = %56 + %64 = zext i32 %58 to i64 br label %.lr.ph.i50 .lr.ph.i50: ; preds = %.lr.ph.i50, %.lr.ph.preheader.i49 %indvars.iv.i51 = phi i64 [ 0, %.lr.ph.preheader.i49 ], [ %indvars.iv.next.i56, %.lr.ph.i50 ] - %.01415.i52 = phi i32 [ %58, %.lr.ph.preheader.i49 ], [ %.1.i55, %.lr.ph.i50 ] - %66 = getelementptr inbounds nuw i8, ptr %61, i64 %indvars.iv.i51 - %67 = load i8, ptr %66, align 1, !tbaa !41 - %68 = zext i8 %67 to i32 - %69 = icmp samesign ult i32 %.01415.i52, 2 - %70 = select i1 %69, i32 0, i32 255 - %71 = icmp eq i32 %70, %68 - %72 = add nuw nsw i32 %.01415.i52, 1 - %.not.i53 = icmp eq i8 %67, 0 - %73 = sub nuw nsw i32 4, %.01415.i52 - %spec.select.i54 = select i1 %.not.i53, i32 %73, i32 0 - %.1.i55 = select i1 %71, i32 %72, i32 %spec.select.i54 + %.01415.i52 = phi i32 [ %57, %.lr.ph.preheader.i49 ], [ %.1.i55, %.lr.ph.i50 ] + %65 = getelementptr inbounds nuw i8, ptr %60, i64 %indvars.iv.i51 + %66 = load i8, ptr %65, align 1, !tbaa !41 + %67 = icmp samesign ugt i32 %.01415.i52, 1 + %68 = sext i1 %67 to i8 + %69 = icmp eq i8 %66, %68 + %70 = add nuw nsw i32 %.01415.i52, 1 + %.not.i53 = icmp eq i8 %66, 0 + %71 = sub nuw nsw i32 4, %.01415.i52 + %spec.select.i54 = select i1 %.not.i53, i32 %71, i32 0 + %.1.i55 = select i1 %69, i32 %70, i32 %spec.select.i54 %indvars.iv.next.i56 = add nuw nsw i64 %indvars.iv.i51, 1 - %74 = icmp samesign ult i64 %indvars.iv.next.i56, %65 - %75 = icmp samesign ult i32 %.1.i55, 4 - %76 = select i1 %74, i1 %75, i1 false - br i1 %76, label %.lr.ph.i50, label %._crit_edge.loopexit.i57, !llvm.loop !102 + %72 = icmp samesign ult i64 %indvars.iv.next.i56, %64 + %73 = icmp samesign ult i32 %.1.i55, 4 + %74 = select i1 %72, i1 %73, i1 false + br i1 %74, label %.lr.ph.i50, label %._crit_edge.loopexit.i57, !llvm.loop !102 ._crit_edge.loopexit.i57: ; preds = %.lr.ph.i50 - %77 = trunc nuw i64 %indvars.iv.next.i56 to i32 + %75 = trunc nuw i64 %indvars.iv.next.i56 to i32 br label %syncsearch.exit58 -syncsearch.exit58: ; preds = %57, %._crit_edge.loopexit.i57 - %.014.lcssa.i47 = phi i32 [ %58, %57 ], [ %.1.i55, %._crit_edge.loopexit.i57 ] - %.0.lcssa.i48 = phi i32 [ 0, %57 ], [ %77, %._crit_edge.loopexit.i57 ] - store i32 %.014.lcssa.i47, ptr %60, align 4, !tbaa !100 - %78 = load i32, ptr %22, align 8, !tbaa !45 - %79 = sub i32 %78, %.0.lcssa.i48 - store i32 %79, ptr %22, align 8, !tbaa !45 - %80 = zext i32 %.0.lcssa.i48 to i64 - %81 = getelementptr inbounds nuw i8, ptr %61, i64 %80 - store ptr %81, ptr %0, align 8, !tbaa !44 - %82 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %83 = load i64, ptr %82, align 8, !tbaa !20 - %84 = add i64 %83, %80 - store i64 %84, ptr %82, align 8, !tbaa !20 +syncsearch.exit58: ; preds = %56, %._crit_edge.loopexit.i57 + %.014.lcssa.i47 = phi i32 [ %57, %56 ], [ %.1.i55, %._crit_edge.loopexit.i57 ] + %.0.lcssa.i48 = phi i32 [ 0, %56 ], [ %75, %._crit_edge.loopexit.i57 ] + store i32 %.014.lcssa.i47, ptr %59, align 4, !tbaa !100 + %76 = load i32, ptr %22, align 8, !tbaa !45 + %77 = sub i32 %76, %.0.lcssa.i48 + store i32 %77, ptr %22, align 8, !tbaa !45 + %78 = zext i32 %.0.lcssa.i48 to i64 + %79 = getelementptr inbounds nuw i8, ptr %60, i64 %78 + store ptr %79, ptr %0, align 8, !tbaa !44 + %80 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %81 = load i64, ptr %80, align 8, !tbaa !20 + %82 = add i64 %81, %78 + store i64 %82, ptr %80, align 8, !tbaa !20 %.not44 = icmp eq i32 %.014.lcssa.i47, 4 - br i1 %.not44, label %85, label %inflateStateCheck.exit.thread - -85: ; preds = %syncsearch.exit58 - %86 = getelementptr inbounds nuw i8, ptr %14, i64 24 - %87 = load i32, ptr %86, align 8, !tbaa !25 - %88 = icmp eq i32 %87, -1 - %89 = getelementptr inbounds nuw i8, ptr %14, i64 16 - br i1 %88, label %93, label %90 - -90: ; preds = %85 - %91 = load i32, ptr %89, align 8, !tbaa !21 - %92 = and i32 %91, -5 - br label %93 - -93: ; preds = %85, %90 - %.sink = phi i32 [ %92, %90 ], [ 0, %85 ] - store i32 %.sink, ptr %89, align 8, !tbaa !21 - %94 = getelementptr inbounds nuw i8, ptr %0, i64 40 - %95 = load i64, ptr %94, align 8, !tbaa !97 - %96 = getelementptr inbounds nuw i8, ptr %14, i64 60 - store i32 0, ptr %96, align 4, !tbaa !35 - %97 = getelementptr inbounds nuw i8, ptr %14, i64 64 - store i32 0, ptr %97, align 8, !tbaa !36 - %98 = getelementptr inbounds nuw i8, ptr %14, i64 68 - store i32 0, ptr %98, align 4, !tbaa !37 - %99 = getelementptr inbounds nuw i8, ptr %14, i64 40 - store i64 0, ptr %99, align 8, !tbaa !19 - %100 = getelementptr inbounds nuw i8, ptr %14, i64 16 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %94, i8 0, i64 16, i1 false) - %101 = load i32, ptr %100, align 8, !tbaa !21 - %.not24.i.i = icmp eq i32 %101, 0 - br i1 %.not24.i.i, label %inflateReset.exit, label %102 - -102: ; preds = %93 - %103 = and i32 %101, 1 - %104 = zext nneg i32 %103 to i64 - %105 = getelementptr inbounds nuw i8, ptr %0, i64 96 - store i64 %104, ptr %105, align 8, !tbaa !22 + br i1 %.not44, label %83, label %inflateStateCheck.exit.thread + +83: ; preds = %syncsearch.exit58 + %84 = getelementptr inbounds nuw i8, ptr %14, i64 24 + %85 = load i32, ptr %84, align 8, !tbaa !25 + %86 = icmp eq i32 %85, -1 + %87 = getelementptr inbounds nuw i8, ptr %14, i64 16 + br i1 %86, label %91, label %88 + +88: ; preds = %83 + %89 = load i32, ptr %87, align 8, !tbaa !21 + %90 = and i32 %89, -5 + br label %91 + +91: ; preds = %83, %88 + %.sink = phi i32 [ %90, %88 ], [ 0, %83 ] + store i32 %.sink, ptr %87, align 8, !tbaa !21 + %92 = getelementptr inbounds nuw i8, ptr %0, i64 40 + %93 = load i64, ptr %92, align 8, !tbaa !97 + %94 = getelementptr inbounds nuw i8, ptr %14, i64 60 + store i32 0, ptr %94, align 4, !tbaa !35 + %95 = getelementptr inbounds nuw i8, ptr %14, i64 64 + store i32 0, ptr %95, align 8, !tbaa !36 + %96 = getelementptr inbounds nuw i8, ptr %14, i64 68 + store i32 0, ptr %96, align 4, !tbaa !37 + %97 = getelementptr inbounds nuw i8, ptr %14, i64 40 + store i64 0, ptr %97, align 8, !tbaa !19 + %98 = getelementptr inbounds nuw i8, ptr %14, i64 16 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %92, i8 0, i64 16, i1 false) + %99 = load i32, ptr %98, align 8, !tbaa !21 + %.not24.i.i = icmp eq i32 %99, 0 + br i1 %.not24.i.i, label %inflateReset.exit, label %100 + +100: ; preds = %91 + %101 = and i32 %99, 1 + %102 = zext nneg i32 %101 to i64 + %103 = getelementptr inbounds nuw i8, ptr %0, i64 96 + store i64 %102, ptr %103, align 8, !tbaa !22 br label %inflateReset.exit -inflateReset.exit: ; preds = %93, %102 - %106 = getelementptr inbounds nuw i8, ptr %14, i64 12 - store i32 0, ptr %106, align 4, !tbaa !23 - %107 = getelementptr inbounds nuw i8, ptr %14, i64 20 - store i32 0, ptr %107, align 4, !tbaa !24 - %108 = getelementptr inbounds nuw i8, ptr %14, i64 28 - store i32 32768, ptr %108, align 4, !tbaa !26 - %109 = getelementptr inbounds nuw i8, ptr %14, i64 48 - store ptr null, ptr %109, align 8, !tbaa !27 - %110 = getelementptr inbounds nuw i8, ptr %14, i64 80 - store i64 0, ptr %110, align 8, !tbaa !28 - %111 = getelementptr inbounds nuw i8, ptr %14, i64 88 - store i32 0, ptr %111, align 8, !tbaa !29 - %112 = getelementptr inbounds nuw i8, ptr %14, i64 1368 - %113 = getelementptr inbounds nuw i8, ptr %14, i64 144 - store ptr %112, ptr %113, align 8, !tbaa !30 - %114 = getelementptr inbounds nuw i8, ptr %14, i64 112 - store ptr %112, ptr %114, align 8, !tbaa !31 - %115 = getelementptr inbounds nuw i8, ptr %14, i64 104 - store ptr %112, ptr %115, align 8, !tbaa !32 - %116 = getelementptr inbounds nuw i8, ptr %14, i64 7144 - store i32 1, ptr %116, align 8, !tbaa !33 - %117 = getelementptr inbounds nuw i8, ptr %14, i64 7148 - store i32 -1, ptr %117, align 4, !tbaa !34 - store i64 %84, ptr %82, align 8, !tbaa !20 - store i64 %95, ptr %94, align 8, !tbaa !97 - store i32 %87, ptr %86, align 8, !tbaa !25 +inflateReset.exit: ; preds = %91, %100 + %104 = getelementptr inbounds nuw i8, ptr %14, i64 12 + store i32 0, ptr %104, align 4, !tbaa !23 + %105 = getelementptr inbounds nuw i8, ptr %14, i64 20 + store i32 0, ptr %105, align 4, !tbaa !24 + %106 = getelementptr inbounds nuw i8, ptr %14, i64 28 + store i32 32768, ptr %106, align 4, !tbaa !26 + %107 = getelementptr inbounds nuw i8, ptr %14, i64 48 + store ptr null, ptr %107, align 8, !tbaa !27 + %108 = getelementptr inbounds nuw i8, ptr %14, i64 80 + store i64 0, ptr %108, align 8, !tbaa !28 + %109 = getelementptr inbounds nuw i8, ptr %14, i64 88 + store i32 0, ptr %109, align 8, !tbaa !29 + %110 = getelementptr inbounds nuw i8, ptr %14, i64 1368 + %111 = getelementptr inbounds nuw i8, ptr %14, i64 144 + store ptr %110, ptr %111, align 8, !tbaa !30 + %112 = getelementptr inbounds nuw i8, ptr %14, i64 112 + store ptr %110, ptr %112, align 8, !tbaa !31 + %113 = getelementptr inbounds nuw i8, ptr %14, i64 104 + store ptr %110, ptr %113, align 8, !tbaa !32 + %114 = getelementptr inbounds nuw i8, ptr %14, i64 7144 + store i32 1, ptr %114, align 8, !tbaa !33 + %115 = getelementptr inbounds nuw i8, ptr %14, i64 7148 + store i32 -1, ptr %115, align 4, !tbaa !34 + store i64 %82, ptr %80, align 8, !tbaa !20 + store i64 %93, ptr %92, align 8, !tbaa !97 + store i32 %85, ptr %84, align 8, !tbaa !25 store i32 16191, ptr %18, align 8, !tbaa !18 br label %inflateStateCheck.exit.thread From 463696770f9bb220bfdd37eeaec045a7032403d0 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 9 Jul 2025 13:27:41 +0000 Subject: [PATCH 3/3] pre-commit: Remap --- bench/abc/optimized/inflate.ll | 182 +++--- bench/arrow/optimized/align_util.ll | 4 +- bench/boost/optimized/src.ll | 144 ++--- bench/boost/optimized/test_codecvt.ll | 144 ++--- .../optimized/backward_references_hq.ll | 4 +- bench/clamav/optimized/unpack.ll | 6 +- bench/cmake/optimized/ftp.ll | 24 +- bench/cpython/optimized/longobject.ll | 80 +-- bench/curl/optimized/tool_findfile.ll | 84 +-- bench/ffmpeg/optimized/filter.ll | 52 +- bench/ffmpeg/optimized/intra.ll | 6 +- bench/ffmpeg/optimized/subtitles.ll | 22 +- bench/gromacs/optimized/wall.ll | 54 +- bench/hdf5/optimized/H5Tbit.ll | 294 +++++----- bench/icu/optimized/ucnv_lmb.ll | 226 ++++---- bench/icu/optimized/utrie_swap.ll | 10 +- bench/libquic/optimized/inflate.ll | 202 +++---- bench/libwebp/optimized/tree_enc.ll | 270 ++++----- bench/libzmq/optimized/ip_resolver.ll | 16 +- bench/lief/optimized/hmac_drbg.ll | 182 +++--- bench/linux/optimized/hdmi.ll | 44 +- bench/linux/optimized/i9xx_wm.ll | 66 +-- bench/linux/optimized/intel_display.ll | 10 +- bench/linux/optimized/intel_fbc.ll | 50 +- bench/llvm/optimized/CodeGenDAGPatterns.ll | 76 +-- bench/llvm/optimized/CombinerHelper.ll | 130 ++--- bench/llvm/optimized/RISCVAsmPrinter.ll | 26 +- bench/llvm/optimized/X86ISelLoweringCall.ll | 110 ++-- bench/llvm/optimized/X86InstrInfo.ll | 34 +- bench/llvm/optimized/X86ReturnThunks.ll | 68 +-- bench/lua/optimized/lstrlib.ll | 150 ++--- bench/luajit/optimized/lj_load.ll | 106 ++-- bench/luajit/optimized/lj_strscan.ll | 426 +++++++------- bench/luau/optimized/lstrlib.ll | 542 +++++++++--------- bench/node/optimized/libnode.node_sockaddr.ll | 16 +- bench/openjdk/optimized/intrinsicnode.ll | 42 +- bench/openjdk/optimized/rewriter.ll | 38 +- bench/openspiel/optimized/backgammon.ll | 12 +- bench/php/optimized/pcre2_substitute.ll | 164 +++--- bench/php/optimized/quot_print.ll | 240 ++++---- .../optimized/63snncgsqpi17trm0hdteq5vk.ll | 282 ++++----- bench/postgres/optimized/nbtsearch.ll | 362 ++++++------ bench/postgres/optimized/nbtutils.ll | 290 +++++----- bench/postgres/optimized/network.ll | 66 +-- bench/qemu/optimized/virtio.ll | 12 +- bench/redis/optimized/bitops.ll | 2 +- bench/spike/optimized/f16_roundToInt.ll | 72 +-- bench/spike/optimized/f64_roundToInt.ll | 58 +- bench/spike/optimized/s_addMagsF16.ll | 78 +-- bench/spike/optimized/s_roundMToI64.ll | 38 +- bench/spike/optimized/s_roundPackToBF16.ll | 128 ++--- bench/spike/optimized/s_roundPackToI32.ll | 66 +-- bench/spike/optimized/s_roundPackToI64.ll | 38 +- bench/spike/optimized/s_roundPackToUI32.ll | 60 +- bench/spike/optimized/s_roundToUI32.ll | 54 +- bench/sqlite/optimized/sqlite3.ll | 276 ++++----- bench/wireshark/optimized/packet-dof.ll | 130 ++--- bench/wireshark/optimized/packet-ieee80211.ll | 16 +- bench/wireshark/optimized/packet-usb-audio.ll | 252 ++++---- bench/yosys/optimized/blifparse.ll | 316 +++++----- bench/zlib/optimized/inflate.ll | 222 +++---- 61 files changed, 3587 insertions(+), 3587 deletions(-) diff --git a/bench/abc/optimized/inflate.ll b/bench/abc/optimized/inflate.ll index 4108c38fb1d..2f4ea2b0a58 100644 --- a/bench/abc/optimized/inflate.ll +++ b/bench/abc/optimized/inflate.ll @@ -3516,13 +3516,13 @@ define range(i32 -5, 1) i32 @inflateSync(ptr noundef captures(address_is_null) % %2 = alloca [4 x i8], align 1 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %2) #10 %3 = icmp eq ptr %0, null - br i1 %3, label %91, label %4 + br i1 %3, label %93, label %4 4: ; preds = %1 %5 = getelementptr inbounds nuw i8, ptr %0, i64 56 %6 = load ptr, ptr %5, align 8, !tbaa !3 %7 = icmp eq ptr %6, null - br i1 %7, label %91, label %8 + br i1 %7, label %93, label %8 8: ; preds = %4 %9 = getelementptr inbounds nuw i8, ptr %0, i64 8 @@ -3534,7 +3534,7 @@ define range(i32 -5, 1) i32 @inflateSync(ptr noundef captures(address_is_null) % %13 = getelementptr inbounds nuw i8, ptr %6, i64 80 %14 = load i32, ptr %13, align 8, !tbaa !26 %15 = icmp ult i32 %14, 8 - br i1 %15, label %91, label %16 + br i1 %15, label %93, label %16 16: ; preds = %12, %8 %17 = load i32, ptr %6, align 8, !tbaa !17 @@ -3544,7 +3544,7 @@ define range(i32 -5, 1) i32 @inflateSync(ptr noundef captures(address_is_null) % ._crit_edge62: ; preds = %16 %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %6, i64 132 %.pre63 = load i32, ptr %.phi.trans.insert, align 4, !tbaa !99 - br label %44 + br label %45 18: ; preds = %16 store i32 31, ptr %6, align 8, !tbaa !17 @@ -3593,41 +3593,41 @@ define range(i32 -5, 1) i32 @inflateSync(ptr noundef captures(address_is_null) % %37 = icmp eq i8 %34, %36 %38 = add nuw nsw i32 %.01415.i, 1 %.not.i = icmp eq i8 %34, 0 - %39 = sub nuw nsw i32 4, %.01415.i - %spec.select.i = select i1 %.not.i, i32 %39, i32 0 + %40 = sub nuw nsw i32 4, %.01415.i + %spec.select.i = select i1 %.not.i, i32 %40, i32 0 %.1.i = select i1 %37, i32 %38, i32 %spec.select.i %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 - %40 = icmp samesign ult i64 %indvars.iv.next.i, %32 - %41 = icmp samesign ult i32 %.1.i, 4 - %42 = select i1 %40, i1 %41, i1 false - br i1 %42, label %.lr.ph.i, label %syncsearch.exit, !llvm.loop !101 + %41 = icmp samesign ult i64 %indvars.iv.next.i, %32 + %42 = icmp samesign ult i32 %.1.i, 4 + %43 = select i1 %41, i1 %42, i1 false + br i1 %43, label %.lr.ph.i, label %syncsearch.exit, !llvm.loop !101 syncsearch.exit: ; preds = %.lr.ph.i, %.thread %.014.lcssa.i = phi i32 [ 0, %.thread ], [ %.1.i, %.lr.ph.i ] - %43 = getelementptr inbounds nuw i8, ptr %6, i64 132 - store i32 %.014.lcssa.i, ptr %43, align 4, !tbaa !99 + %44 = getelementptr inbounds nuw i8, ptr %6, i64 132 + store i32 %.014.lcssa.i, ptr %44, align 4, !tbaa !99 %.pre = load i32, ptr %9, align 8, !tbaa !42 - br label %44 - -44: ; preds = %._crit_edge62, %syncsearch.exit - %45 = phi i32 [ %.014.lcssa.i, %syncsearch.exit ], [ %.pre63, %._crit_edge62 ] - %46 = phi i32 [ %.pre, %syncsearch.exit ], [ %10, %._crit_edge62 ] - %47 = getelementptr inbounds nuw i8, ptr %6, i64 132 - %48 = load ptr, ptr %0, align 8, !tbaa !41 - %49 = icmp ne i32 %46, 0 - %50 = icmp ult i32 %45, 4 - %51 = select i1 %49, i1 %50, i1 false - br i1 %51, label %.lr.ph.preheader.i43, label %syncsearch.exit52 - -.lr.ph.preheader.i43: ; preds = %44 - %52 = zext i32 %46 to i64 + br label %45 + +45: ; preds = %._crit_edge62, %syncsearch.exit + %46 = phi i32 [ %.014.lcssa.i, %syncsearch.exit ], [ %.pre63, %._crit_edge62 ] + %47 = phi i32 [ %.pre, %syncsearch.exit ], [ %10, %._crit_edge62 ] + %48 = getelementptr inbounds nuw i8, ptr %6, i64 132 + %49 = load ptr, ptr %0, align 8, !tbaa !41 + %50 = icmp ne i32 %47, 0 + %51 = icmp ult i32 %46, 4 + %52 = select i1 %50, i1 %51, i1 false + br i1 %52, label %.lr.ph.preheader.i43, label %syncsearch.exit52 + +.lr.ph.preheader.i43: ; preds = %45 + %53 = zext i32 %47 to i64 br label %.lr.ph.i44 .lr.ph.i44: ; preds = %.lr.ph.i44, %.lr.ph.preheader.i43 %indvars.iv.i45 = phi i64 [ 0, %.lr.ph.preheader.i43 ], [ %indvars.iv.next.i50, %.lr.ph.i44 ] - %.01415.i46 = phi i32 [ %45, %.lr.ph.preheader.i43 ], [ %.1.i49, %.lr.ph.i44 ] - %53 = getelementptr inbounds nuw i8, ptr %48, i64 %indvars.iv.i45 - %54 = load i8, ptr %53, align 1, !tbaa !37 + %.01415.i46 = phi i32 [ %46, %.lr.ph.preheader.i43 ], [ %.1.i49, %.lr.ph.i44 ] + %54 = getelementptr inbounds nuw i8, ptr %49, i64 %indvars.iv.i45 + %55 = load i8, ptr %54, align 1, !tbaa !37 %55 = icmp samesign ugt i32 %.01415.i46, 1 %56 = sext i1 %55 to i8 %57 = icmp eq i8 %54, %56 @@ -3635,78 +3635,78 @@ syncsearch.exit: ; preds = %.lr.ph.i, %.thread %.not.i47 = icmp eq i8 %54, 0 %59 = sub nuw nsw i32 4, %.01415.i46 %spec.select.i48 = select i1 %.not.i47, i32 %59, i32 0 - %.1.i49 = select i1 %57, i32 %58, i32 %spec.select.i48 + %spec.select.i48 = select i1 %57, i32 %58, i32 %spec.select.i48 %indvars.iv.next.i50 = add nuw nsw i64 %indvars.iv.i45, 1 - %60 = icmp samesign ult i64 %indvars.iv.next.i50, %52 - %61 = icmp samesign ult i32 %.1.i49, 4 - %62 = select i1 %60, i1 %61, i1 false - br i1 %62, label %.lr.ph.i44, label %._crit_edge.loopexit.i51, !llvm.loop !101 + %62 = icmp samesign ult i64 %indvars.iv.next.i50, %53 + %63 = icmp samesign ult i32 %.1.i49, 4 + %64 = select i1 %62, i1 %63, i1 false + br i1 %64, label %.lr.ph.i44, label %._crit_edge.loopexit.i51, !llvm.loop !101 ._crit_edge.loopexit.i51: ; preds = %.lr.ph.i44 - %63 = trunc nuw i64 %indvars.iv.next.i50 to i32 + %65 = trunc nuw i64 %indvars.iv.next.i50 to i32 br label %syncsearch.exit52 -syncsearch.exit52: ; preds = %44, %._crit_edge.loopexit.i51 - %.014.lcssa.i41 = phi i32 [ %45, %44 ], [ %.1.i49, %._crit_edge.loopexit.i51 ] - %.0.lcssa.i42 = phi i32 [ 0, %44 ], [ %63, %._crit_edge.loopexit.i51 ] - store i32 %.014.lcssa.i41, ptr %47, align 4, !tbaa !99 - %64 = load i32, ptr %9, align 8, !tbaa !42 - %65 = sub i32 %64, %.0.lcssa.i42 - store i32 %65, ptr %9, align 8, !tbaa !42 - %66 = zext i32 %.0.lcssa.i42 to i64 - %67 = getelementptr inbounds nuw i8, ptr %48, i64 %66 - store ptr %67, ptr %0, align 8, !tbaa !41 - %68 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %69 = load i64, ptr %68, align 8, !tbaa !15 - %70 = add i64 %69, %66 - store i64 %70, ptr %68, align 8, !tbaa !15 +syncsearch.exit52: ; preds = %45, %._crit_edge.loopexit.i51 + %.014.lcssa.i41 = phi i32 [ %46, %44 ], [ %.1.i49, %._crit_edge.loopexit.i51 ] + %.0.lcssa.i42 = phi i32 [ 0, %44 ], [ %65, %._crit_edge.loopexit.i51 ] + store i32 %.014.lcssa.i41, ptr %48, align 4, !tbaa !99 + %66 = load i32, ptr %9, align 8, !tbaa !42 + %67 = sub i32 %66, %.0.lcssa.i42 + store i32 %67, ptr %9, align 8, !tbaa !42 + %68 = zext i32 %.0.lcssa.i42 to i64 + %69 = getelementptr inbounds nuw i8, ptr %49, i64 %68 + store ptr %69, ptr %0, align 8, !tbaa !41 + %70 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %71 = load i64, ptr %70, align 8, !tbaa !15 + %72 = add i64 %71, %68 + store i64 %72, ptr %70, align 8, !tbaa !15 %.not40 = icmp eq i32 %.014.lcssa.i41, 4 - br i1 %.not40, label %inflateReset.exit, label %91 + br i1 %.not40, label %inflateReset.exit, label %93 inflateReset.exit: ; preds = %syncsearch.exit52 - %71 = getelementptr inbounds nuw i8, ptr %0, i64 40 - %72 = load i64, ptr %71, align 8, !tbaa !96 - %73 = getelementptr inbounds nuw i8, ptr %6, i64 32 - store i64 0, ptr %73, align 8, !tbaa !12 - %74 = getelementptr inbounds nuw i8, ptr %0, i64 96 - %75 = getelementptr inbounds nuw i8, ptr %0, i64 48 - store i64 0, ptr %75, align 8 - store i64 1, ptr %74, align 8, !tbaa !16 - %76 = getelementptr inbounds nuw i8, ptr %6, i64 4 - store i32 0, ptr %76, align 4, !tbaa !18 - %77 = getelementptr inbounds nuw i8, ptr %6, i64 12 - store i32 0, ptr %77, align 4, !tbaa !19 - %78 = getelementptr inbounds nuw i8, ptr %6, i64 20 - store i32 32768, ptr %78, align 4, !tbaa !20 - %79 = getelementptr inbounds nuw i8, ptr %6, i64 40 - store ptr null, ptr %79, align 8, !tbaa !21 - %80 = getelementptr inbounds nuw i8, ptr %6, i64 52 - store i32 0, ptr %80, align 4, !tbaa !22 - %81 = getelementptr inbounds nuw i8, ptr %6, i64 56 - store i32 0, ptr %81, align 8, !tbaa !23 - %82 = getelementptr inbounds nuw i8, ptr %6, i64 60 - store i32 0, ptr %82, align 4, !tbaa !24 - %83 = getelementptr inbounds nuw i8, ptr %6, i64 72 - store i64 0, ptr %83, align 8, !tbaa !25 - %84 = getelementptr inbounds nuw i8, ptr %6, i64 80 - store i32 0, ptr %84, align 8, !tbaa !26 - %85 = getelementptr inbounds nuw i8, ptr %6, i64 1360 - %86 = getelementptr inbounds nuw i8, ptr %6, i64 136 - store ptr %85, ptr %86, align 8, !tbaa !27 - %87 = getelementptr inbounds nuw i8, ptr %6, i64 104 - store ptr %85, ptr %87, align 8, !tbaa !28 - %88 = getelementptr inbounds nuw i8, ptr %6, i64 96 - store ptr %85, ptr %88, align 8, !tbaa !29 - %89 = getelementptr inbounds nuw i8, ptr %6, i64 7136 - store i32 1, ptr %89, align 8, !tbaa !30 - %90 = getelementptr inbounds nuw i8, ptr %6, i64 7140 - store i32 -1, ptr %90, align 4, !tbaa !31 - store i64 %70, ptr %68, align 8, !tbaa !15 - store i64 %72, ptr %71, align 8, !tbaa !96 + %73 = getelementptr inbounds nuw i8, ptr %0, i64 40 + %74 = load i64, ptr %73, align 8, !tbaa !96 + %75 = getelementptr inbounds nuw i8, ptr %6, i64 32 + store i64 0, ptr %75, align 8, !tbaa !12 + %76 = getelementptr inbounds nuw i8, ptr %0, i64 96 + %77 = getelementptr inbounds nuw i8, ptr %0, i64 48 + store i64 0, ptr %77, align 8 + store i64 1, ptr %76, align 8, !tbaa !16 + %78 = getelementptr inbounds nuw i8, ptr %6, i64 4 + store i32 0, ptr %78, align 4, !tbaa !18 + %79 = getelementptr inbounds nuw i8, ptr %6, i64 12 + store i32 0, ptr %79, align 4, !tbaa !19 + %80 = getelementptr inbounds nuw i8, ptr %6, i64 20 + store i32 32768, ptr %80, align 4, !tbaa !20 + %81 = getelementptr inbounds nuw i8, ptr %6, i64 40 + store ptr null, ptr %81, align 8, !tbaa !21 + %82 = getelementptr inbounds nuw i8, ptr %6, i64 52 + store i32 0, ptr %82, align 4, !tbaa !22 + %83 = getelementptr inbounds nuw i8, ptr %6, i64 56 + store i32 0, ptr %83, align 8, !tbaa !23 + %84 = getelementptr inbounds nuw i8, ptr %6, i64 60 + store i32 0, ptr %84, align 4, !tbaa !24 + %85 = getelementptr inbounds nuw i8, ptr %6, i64 72 + store i64 0, ptr %85, align 8, !tbaa !25 + %86 = getelementptr inbounds nuw i8, ptr %6, i64 80 + store i32 0, ptr %86, align 8, !tbaa !26 + %87 = getelementptr inbounds nuw i8, ptr %6, i64 1360 + %88 = getelementptr inbounds nuw i8, ptr %6, i64 136 + store ptr %87, ptr %88, align 8, !tbaa !27 + %89 = getelementptr inbounds nuw i8, ptr %6, i64 104 + store ptr %87, ptr %89, align 8, !tbaa !28 + %90 = getelementptr inbounds nuw i8, ptr %6, i64 96 + store ptr %87, ptr %90, align 8, !tbaa !29 + %91 = getelementptr inbounds nuw i8, ptr %6, i64 7136 + store i32 1, ptr %91, align 8, !tbaa !30 + %92 = getelementptr inbounds nuw i8, ptr %6, i64 7140 + store i32 -1, ptr %92, align 4, !tbaa !31 + store i64 %72, ptr %70, align 8, !tbaa !15 + store i64 %74, ptr %73, align 8, !tbaa !96 store i32 11, ptr %6, align 8, !tbaa !17 - br label %91 + br label %93 -91: ; preds = %syncsearch.exit52, %12, %1, %4, %inflateReset.exit +93: ; preds = %syncsearch.exit52, %12, %1, %4, %inflateReset.exit %.0 = phi i32 [ 0, %inflateReset.exit ], [ -2, %4 ], [ -2, %1 ], [ -5, %12 ], [ -3, %syncsearch.exit52 ] call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %2) #10 ret i32 %.0 diff --git a/bench/arrow/optimized/align_util.ll b/bench/arrow/optimized/align_util.ll index a6fa4db608b..2b4027b6ddf 100644 --- a/bench/arrow/optimized/align_util.ll +++ b/bench/arrow/optimized/align_util.ll @@ -8176,8 +8176,8 @@ _ZNSt6vectorIbSaIbEE15_M_copy_alignedESt19_Bit_const_iteratorS2_St13_Bit_iterato %151 = zext i32 %.sroa.55.0.lcssa.i.i.i.i.i.i to i64 %152 = add nsw i64 %3, %151 %153 = sdiv i64 %152, 64 - %.idx159 = shl nsw i64 %153, 3 - %154 = getelementptr inbounds i8, ptr %.sroa.03.0.lcssa.i.i.i.i.i.i, i64 %.idx159 + %.idx158 = shl nsw i64 %153, 3 + %154 = getelementptr inbounds i8, ptr %.sroa.03.0.lcssa.i.i.i.i.i.i, i64 %.idx158 %155 = and i64 %152, -9223372036854775745 %156 = icmp ugt i64 %155, -9223372036854775808 %storemerge.idx.i.i.i85 = select i1 %156, i64 -8, i64 0 diff --git a/bench/boost/optimized/src.ll b/bench/boost/optimized/src.ll index 497692111ed..5f069858a47 100644 --- a/bench/boost/optimized/src.ll +++ b/bench/boost/optimized/src.ll @@ -61560,17 +61560,17 @@ define linkonce_odr hidden { ptr, i32 } @_ZN5boost4json6detail8charconv6detail6p 12: ; preds = %10 store i8 1, ptr %2, align 1, !tbaa !158 %13 = getelementptr inbounds nuw i8, ptr %0, i64 1 - br label %.preheader343 + br label %.preheader341 14: ; preds = %10 store i8 0, ptr %2, align 1, !tbaa !158 - br label %.preheader343 + br label %.preheader341 -.preheader343: ; preds = %14, %12 +.preheader341: ; preds = %14, %12 %.1.ph = phi ptr [ %0, %14 ], [ %13, %12 ] br label %15 -15: ; preds = %.preheader343, %15 +15: ; preds = %.preheader341, %15 %.1 = phi ptr [ %20, %15 ], [ %.1.ph, %.preheader343 ] %16 = load i8, ptr %.1, align 1, !tbaa !15 %17 = icmp eq i8 %16, 48 @@ -61604,27 +61604,27 @@ define linkonce_odr hidden { ptr, i32 } @_ZN5boost4json6detail8charconv6detail6p %_ZN5boost4json6detail8charconv6detail15is_integer_charEc._ZN5boost4json6detail8charconv6detail11is_hex_charEc = select i1 %.not, ptr @_ZN5boost4json6detail8charconv6detail11is_hex_charEc, ptr @_ZN5boost4json6detail8charconv6detail15is_integer_charEc %29 = select i1 %.not, i32 16, i32 10 %30 = tail call noundef zeroext i1 %_ZN5boost4json6detail8charconv6detail15is_integer_charEc._ZN5boost4json6detail8charconv6detail11is_hex_charEc(i8 noundef signext %16) #48, !callees !765 - br i1 %30, label %.lr.ph330, label %.critedge + br i1 %30, label %.lr.ph328, label %.critedge -.lr.ph: ; preds = %.lr.ph330 +.lr.ph: ; preds = %.lr.ph328 %31 = icmp ne ptr %35, %1 - %32 = icmp samesign ult i64 %.0216280329, 18 + %32 = icmp samesign ult i64 %.0216278327, 18 %or.cond18 = select i1 %31, i1 %32, i1 false - br i1 %or.cond18, label %.lr.ph330, label %.critedge, !llvm.loop !766 + br i1 %or.cond18, label %.lr.ph328, label %.critedge, !llvm.loop !766 -.lr.ph330: ; preds = %28, %.lr.ph - %.0216280329 = phi i64 [ %36, %.lr.ph ], [ 0, %28 ] - %.2282328 = phi ptr [ %35, %.lr.ph ], [ %.1, %28 ] - %33 = load i8, ptr %.2282328, align 1, !tbaa !15 - %34 = getelementptr inbounds nuw [19 x i8], ptr %7, i64 0, i64 %.0216280329 +.lr.ph328: ; preds = %28, %.lr.ph + %.0216278327 = phi i64 [ %36, %.lr.ph ], [ 0, %28 ] + %.2280326 = phi ptr [ %35, %.lr.ph ], [ %.1, %28 ] + %33 = load i8, ptr %.2280326, align 1, !tbaa !15 + %34 = getelementptr inbounds nuw [19 x i8], ptr %7, i64 0, i64 %.0216278327 store i8 %33, ptr %34, align 1, !tbaa !15 - %35 = getelementptr inbounds nuw i8, ptr %.2282328, i64 1 - %36 = add nuw nsw i64 %.0216280329, 1 + %35 = getelementptr inbounds nuw i8, ptr %.2280326, i64 1 + %36 = add nuw nsw i64 %.0216278327, 1 %37 = load i8, ptr %35, align 1, !tbaa !15 %38 = tail call noundef zeroext i1 %_ZN5boost4json6detail8charconv6detail15is_integer_charEc._ZN5boost4json6detail8charconv6detail11is_hex_charEc(i8 noundef signext %37) #48, !callees !765 br i1 %38, label %.lr.ph, label %..critedge.loopexit_crit_edge, !llvm.loop !766 -..critedge.loopexit_crit_edge: ; preds = %.lr.ph330 +..critedge.loopexit_crit_edge: ; preds = %.lr.ph328 br label %.critedge, !llvm.loop !766 .critedge: ; preds = %.lr.ph, %..critedge.loopexit_crit_edge, %28 @@ -61661,85 +61661,85 @@ define linkonce_odr hidden { ptr, i32 } @_ZN5boost4json6detail8charconv6detail6p 51: ; preds = %48 %52 = getelementptr inbounds nuw i8, ptr %.2.lcssa, i64 1 %53 = load i8, ptr %52, align 1, !tbaa !15 - br i1 %30, label %._crit_edge313, label %.preheader279 + br i1 %30, label %._crit_edge311, label %.preheader277 -.preheader279: ; preds = %51 +.preheader277: ; preds = %51 %54 = icmp eq i8 %53, 48 %55 = icmp ne ptr %52, %1 %56 = and i1 %55, %54 - br i1 %56, label %.lr.ph291, label %._crit_edge + br i1 %56, label %.lr.ph289, label %._crit_edge -.lr.ph291: ; preds = %.preheader279, %.lr.ph291 - %.4290 = phi ptr [ %57, %.lr.ph291 ], [ %52, %.preheader279 ] - %.1229289 = phi i64 [ %58, %.lr.ph291 ], [ 0, %.preheader279 ] - %57 = getelementptr inbounds nuw i8, ptr %.4290, i64 1 - %58 = add nsw i64 %.1229289, -1 +.lr.ph289: ; preds = %.preheader277, %.lr.ph289 + %.4288 = phi ptr [ %57, %.lr.ph291 ], [ %52, %.preheader279 ] + %.1229287 = phi i64 [ %58, %.lr.ph291 ], [ 0, %.preheader279 ] + %57 = getelementptr inbounds nuw i8, ptr %.4288, i64 1 + %58 = add nsw i64 %.1229287, -1 %59 = load i8, ptr %57, align 1, !tbaa !15 %60 = icmp eq i8 %59, 48 %61 = icmp ne ptr %57, %1 %62 = and i1 %61, %60 - br i1 %62, label %.lr.ph291, label %._crit_edge, !llvm.loop !767 + br i1 %62, label %.lr.ph289, label %._crit_edge, !llvm.loop !767 -._crit_edge: ; preds = %.lr.ph291, %.preheader279 +._crit_edge: ; preds = %.lr.ph289, %.preheader277 %63 = phi i8 [ %53, %.preheader279 ], [ %59, %.lr.ph291 ] %.1229.lcssa = phi i64 [ 0, %.preheader279 ], [ %58, %.lr.ph291 ] %.4.lcssa = phi ptr [ %52, %.preheader279 ], [ %57, %.lr.ph291 ] %64 = icmp eq ptr %.4.lcssa, %1 - br i1 %64, label %_ZN5boost4json6detail8charconv6detail10from_charsImEENS2_19from_chars_result_tIcEEPKcS8_RT_i.exit.thread, label %._crit_edge313 + br i1 %64, label %_ZN5boost4json6detail8charconv6detail10from_charsImEENS2_19from_chars_result_tIcEEPKcS8_RT_i.exit.thread, label %._crit_edge311 -._crit_edge313: ; preds = %51, %._crit_edge +._crit_edge311: ; preds = %51, %._crit_edge %65 = phi i8 [ %63, %._crit_edge ], [ %53, %51 ] %.0228 = phi i64 [ %.1229.lcssa, %._crit_edge ], [ 0, %51 ] %.3 = phi ptr [ %.4.lcssa, %._crit_edge ], [ %52, %51 ] %66 = tail call noundef zeroext i1 %_ZN5boost4json6detail8charconv6detail15is_integer_charEc._ZN5boost4json6detail8charconv6detail11is_hex_charEc(i8 noundef signext %65) #48, !callees !765 - br i1 %66, label %.lr.ph297, label %.critedge3 + br i1 %66, label %.lr.ph295, label %.critedge3 -.lr.ph297: ; preds = %._crit_edge313, %69 - %.5295 = phi ptr [ %72, %69 ], [ %.3, %._crit_edge313 ] - %.1217294 = phi i64 [ %73, %69 ], [ %.0216.lcssa, %._crit_edge313 ] - %67 = icmp ne ptr %.5295, %1 - %68 = icmp samesign ult i64 %.1217294, 19 +.lr.ph295: ; preds = %._crit_edge311, %69 + %.5293 = phi ptr [ %72, %69 ], [ %.3, %._crit_edge313 ] + %.1217292 = phi i64 [ %73, %69 ], [ %.0216.lcssa, %._crit_edge313 ] + %67 = icmp ne ptr %.5293, %1 + %68 = icmp samesign ult i64 %.1217292, 19 %or.cond20 = select i1 %67, i1 %68, i1 false br i1 %or.cond20, label %69, label %.critedge3 -69: ; preds = %.lr.ph297 - %70 = load i8, ptr %.5295, align 1, !tbaa !15 - %71 = getelementptr inbounds nuw [19 x i8], ptr %7, i64 0, i64 %.1217294 +69: ; preds = %.lr.ph295 + %70 = load i8, ptr %.5293, align 1, !tbaa !15 + %71 = getelementptr inbounds nuw [19 x i8], ptr %7, i64 0, i64 %.1217292 store i8 %70, ptr %71, align 1, !tbaa !15 - %72 = getelementptr inbounds nuw i8, ptr %.5295, i64 1 - %73 = add nuw nsw i64 %.1217294, 1 + %72 = getelementptr inbounds nuw i8, ptr %.5293, i64 1 + %73 = add nuw nsw i64 %.1217292, 1 %74 = load i8, ptr %72, align 1, !tbaa !15 %75 = tail call noundef zeroext i1 %_ZN5boost4json6detail8charconv6detail15is_integer_charEc._ZN5boost4json6detail8charconv6detail11is_hex_charEc(i8 noundef signext %74) #48, !callees !765 - br i1 %75, label %.lr.ph297, label %.critedge3, !llvm.loop !768 + br i1 %75, label %.lr.ph295, label %.critedge3, !llvm.loop !768 -.critedge3: ; preds = %69, %.lr.ph297, %._crit_edge313, %48 +.critedge3: ; preds = %69, %.lr.ph295, %._crit_edge311, %48 %.2230 = phi i64 [ 0, %48 ], [ %.0228, %._crit_edge313 ], [ %.0228, %.lr.ph297 ], [ %.0228, %69 ] %.0224 = phi i64 [ 0, %48 ], [ %.0216.lcssa, %._crit_edge313 ], [ %.0216.lcssa, %.lr.ph297 ], [ %.0216.lcssa, %69 ] - %.2218 = phi i64 [ %.0216.lcssa, %48 ], [ %.0216.lcssa, %._crit_edge313 ], [ %73, %69 ], [ %.1217294, %.lr.ph297 ] - %.6 = phi ptr [ %.2.lcssa, %48 ], [ %.3, %._crit_edge313 ], [ %72, %69 ], [ %.5295, %.lr.ph297 ] + %.2218 = phi i64 [ %.0216.lcssa, %48 ], [ %.0216.lcssa, %._crit_edge313 ], [ %73, %69 ], [ %.1217292, %.lr.ph297 ] + %.6 = phi ptr [ %.2.lcssa, %48 ], [ %.3, %._crit_edge313 ], [ %72, %69 ], [ %.5293, %.lr.ph297 ] %76 = icmp eq i64 %.2218, 19 - br i1 %76, label %.preheader278.preheader, label %.critedge5 + br i1 %76, label %.preheader276.preheader, label %.critedge5 -.preheader278.preheader: ; preds = %.critedge3 - %.pre314 = load i8, ptr %.6, align 1, !tbaa !15 - br label %.preheader278 +.preheader276.preheader: ; preds = %.critedge3 + %.pre312 = load i8, ptr %.6, align 1, !tbaa !15 + br label %.preheader276 -.preheader278: ; preds = %.preheader278.preheader, %83 - %77 = phi i8 [ %87, %83 ], [ %.pre314, %.preheader278.preheader ] +.preheader276: ; preds = %.preheader276.preheader, %83 + %77 = phi i8 [ %87, %83 ], [ %.pre312, %.preheader278.preheader ] %.0232 = phi i8 [ %.1233, %83 ], [ 0, %.preheader278.preheader ] %.1226 = phi i64 [ %spec.select, %83 ], [ 0, %.preheader278.preheader ] %.8 = phi ptr [ %84, %83 ], [ %.6, %.preheader278.preheader ] %78 = tail call noundef zeroext i1 %_ZN5boost4json6detail8charconv6detail15is_integer_charEc._ZN5boost4json6detail8charconv6detail11is_hex_charEc(i8 noundef signext %77) #48, !callees !765 br i1 %78, label %82, label %79 -79: ; preds = %.preheader278 +79: ; preds = %.preheader276 %80 = load i8, ptr %.8, align 1, !tbaa !15 %81 = icmp ne i8 %80, 46 %.not244 = icmp eq ptr %.8, %1 %or.cond251 = or i1 %.not244, %81 br i1 %or.cond251, label %.critedge5, label %83 -82: ; preds = %.preheader278 +82: ; preds = %.preheader276 %.not244.old = icmp eq ptr %.8, %1 br i1 %.not244.old, label %.critedge5, label %83 @@ -61752,7 +61752,7 @@ define linkonce_odr hidden { ptr, i32 } @_ZN5boost4json6detail8charconv6detail6p %87 = load i8, ptr %84, align 1, !tbaa !15 %88 = icmp eq i8 %87, 46 %.1233 = select i1 %88, i8 1, i8 %.0232 - br label %.preheader278, !llvm.loop !769 + br label %.preheader276, !llvm.loop !769 .critedge5: ; preds = %82, %79, %.critedge3 %.0225 = phi i64 [ 0, %.critedge3 ], [ %.1226, %79 ], [ %.1226, %82 ] @@ -61984,43 +61984,43 @@ _ZN5boost4json6detail8charconv6detail12is_delimiterEcNS2_12chars_formatE.exit.th .preheader: ; preds = %170 %174 = add i8 %171, -48 %175 = icmp ult i8 %174, 10 - br i1 %175, label %.lr.ph305, label %.critedge10.thread + br i1 %175, label %.lr.ph303, label %.critedge10.thread -.lr.ph305: ; preds = %.preheader, %179 +.lr.ph303: ; preds = %.preheader, %179 %176 = phi i8 [ %183, %179 ], [ %171, %.preheader ] - %.11304 = phi ptr [ %181, %179 ], [ %.10, %.preheader ] - %.5221303 = phi i64 [ %182, %179 ], [ %.4220, %.preheader ] - %177 = icmp ne ptr %.11304, %1 - %178 = icmp samesign ult i64 %.5221303, 6 + %.11302 = phi ptr [ %181, %179 ], [ %.10, %.preheader ] + %.5221301 = phi i64 [ %182, %179 ], [ %.4220, %.preheader ] + %177 = icmp ne ptr %.11302, %1 + %178 = icmp samesign ult i64 %.5221301, 6 %or.cond22 = select i1 %177, i1 %178, i1 false br i1 %or.cond22, label %179, label %.critedge10 -179: ; preds = %.lr.ph305 - %180 = getelementptr inbounds nuw [6 x i8], ptr %8, i64 0, i64 %.5221303 +179: ; preds = %.lr.ph303 + %180 = getelementptr inbounds nuw [6 x i8], ptr %8, i64 0, i64 %.5221301 store i8 %176, ptr %180, align 1, !tbaa !15 - %181 = getelementptr inbounds nuw i8, ptr %.11304, i64 1 - %182 = add nuw nsw i64 %.5221303, 1 + %181 = getelementptr inbounds nuw i8, ptr %.11302, i64 1 + %182 = add nuw nsw i64 %.5221301, 1 %183 = load i8, ptr %181, align 1, !tbaa !15 %184 = add i8 %183, -48 %185 = icmp ult i8 %184, 10 - br i1 %185, label %.lr.ph305, label %.critedge10, !llvm.loop !773 + br i1 %185, label %.lr.ph303, label %.critedge10, !llvm.loop !773 -.critedge10: ; preds = %179, %.lr.ph305 - %.5221.lcssa = phi i64 [ %182, %179 ], [ %.5221303, %.lr.ph305 ] - %.11.lcssa = phi ptr [ %181, %179 ], [ %.11304, %.lr.ph305 ] +.critedge10: ; preds = %179, %.lr.ph303 + %.5221.lcssa = phi i64 [ %182, %179 ], [ %.5221301, %.lr.ph305 ] + %.11.lcssa = phi ptr [ %181, %179 ], [ %.11302, %.lr.ph305 ] %186 = icmp ne ptr %.11.lcssa, %1 %187 = icmp eq i64 %.5221.lcssa, 6 %or.cond12 = select i1 %186, i1 %187, i1 false br i1 %or.cond12, label %214, label %.critedge10.thread .critedge10.thread: ; preds = %.preheader, %.critedge10 - %.11.lcssa319 = phi ptr [ %.11.lcssa, %.critedge10 ], [ %.10, %.preheader ] - %.5221.lcssa318 = phi i64 [ %.5221.lcssa, %.critedge10 ], [ %.4220, %.preheader ] - %188 = icmp eq i64 %.5221.lcssa318, 0 + %.11.lcssa317 = phi ptr [ %.11.lcssa, %.critedge10 ], [ %.10, %.preheader ] + %.5221.lcssa316 = phi i64 [ %.5221.lcssa, %.critedge10 ], [ %.4220, %.preheader ] + %188 = icmp eq i64 %.5221.lcssa316, 0 br i1 %188, label %193, label %189 189: ; preds = %.critedge10.thread - %190 = icmp eq i64 %.5221.lcssa318, 1 + %190 = icmp eq i64 %.5221.lcssa316, 1 %191 = load i8, ptr %8, align 1 %192 = icmp eq i8 %191, 45 %or.cond16 = select i1 %190, i1 %192, i1 false @@ -62033,7 +62033,7 @@ _ZN5boost4json6detail8charconv6detail12is_delimiterEcNS2_12chars_formatE.exit.th br label %214 195: ; preds = %189 - %196 = getelementptr inbounds nuw i8, ptr %8, i64 %.5221.lcssa318 + %196 = getelementptr inbounds nuw i8, ptr %8, i64 %.5221.lcssa316 %197 = call { ptr, i32 } @_ZN5boost4json6detail8charconv6detail10from_charsIlEENS2_19from_chars_result_tIcEEPKcS8_RT_i(ptr noundef nonnull %8, ptr noundef nonnull %196, ptr noundef nonnull align 8 dereferenceable(8) %4, i32 noundef 10) #48 %198 = extractvalue { ptr, i32 } %197, 1 %199 = load i64, ptr %4, align 8, !tbaa !11 @@ -62075,7 +62075,7 @@ _ZN5boost4json6detail8charconv6detail12is_delimiterEcNS2_12chars_formatE.exit.th br label %214 214: ; preds = %201, %195, %204, %210, %212, %.critedge10, %193 - %.sroa.0210.9 = phi ptr [ %.11.lcssa319, %193 ], [ %.11.lcssa, %.critedge10 ], [ %.11.lcssa319, %201 ], [ %0, %195 ], [ %.11.lcssa319, %204 ], [ %.11.lcssa319, %210 ], [ %.11.lcssa319, %212 ] + %.sroa.0210.9 = phi ptr [ %.11.lcssa317, %193 ], [ %.11.lcssa, %.critedge10 ], [ %.11.lcssa317, %201 ], [ %0, %195 ], [ %.11.lcssa317, %204 ], [ %.11.lcssa317, %210 ], [ %.11.lcssa317, %212 ] %.sroa.23.9 = phi i32 [ 0, %193 ], [ 34, %.critedge10 ], [ %198, %201 ], [ %198, %195 ], [ 0, %204 ], [ 0, %210 ], [ 0, %212 ] call void @llvm.lifetime.end.p0(i64 6, ptr nonnull %8) #48 br label %_ZN5boost4json6detail8charconv6detail10from_charsImEENS2_19from_chars_result_tIcEEPKcS8_RT_i.exit.thread diff --git a/bench/boost/optimized/test_codecvt.ll b/bench/boost/optimized/test_codecvt.ll index c6baba8e7ff..0f079fea7d3 100644 --- a/bench/boost/optimized/test_codecvt.ll +++ b/bench/boost/optimized/test_codecvt.ll @@ -8143,114 +8143,114 @@ define linkonce_odr hidden noundef i32 @_ZNK5boost6nowide12utf8_codecvtIDsLi2EE5 %19 = ptrtoint ptr %6 to i64 br label %20 -20: ; preds = %.lr.ph, %54 - %21 = phi ptr [ %2, %.lr.ph ], [ %56, %54 ] - %.195 = phi ptr [ %.032, %.lr.ph ], [ %.0.i, %54 ] +20: ; preds = %.lr.ph, %55 + %21 = phi ptr [ %2, %.lr.ph ], [ %57, %54 ] + %.194 = phi ptr [ %.032, %.lr.ph ], [ %.0.i, %54 ] %22 = call noundef i32 @_ZN5boost6nowide3utf10utf_traitsIcLi1EE6decodeIPKcEEjRT_S7_(ptr noundef nonnull align 8 dereferenceable(8) %9, ptr noundef nonnull %3) switch i32 %22, label %23 [ i32 -1, label %.thread54 - i32 -2, label %59 + i32 -2, label %60 ] 23: ; preds = %20 %24 = icmp ugt i32 %22, 65535 - %25 = ptrtoint ptr %.195 to i64 + %25 = ptrtoint ptr %.194 to i64 %26 = sub i64 %19, %25 %spec.select8183 = select i1 %24, i64 4, i64 2 %.not49 = icmp sgt i64 %spec.select8183, %26 - %27 = icmp ult i32 %22, 65536 - br i1 %.not49, label %43, label %30, !prof !144 + %28 = icmp ult i32 %22, 65536 + br i1 %.not49, label %44, label %31, !prof !144 .thread54: ; preds = %20 - %28 = ptrtoint ptr %.195 to i64 - %29 = sub i64 %19, %28 - %.not4956 = icmp slt i64 %29, 2 + %29 = ptrtoint ptr %.194 to i64 + %30 = sub i64 %19, %29 + %.not4956 = icmp slt i64 %30, 2 br i1 %.not4956, label %.thread62, label %.thread59, !prof !144 -30: ; preds = %23 - br i1 %27, label %.thread59, label %33, !prof !149 +31: ; preds = %23 + br i1 %28, label %.thread59, label %34, !prof !149 -.thread59: ; preds = %.thread54, %30 +.thread59: ; preds = %.thread54, %31 %.031535761 = phi i32 [ %22, %30 ], [ 65533, %.thread54 ] - %31 = trunc nuw i32 %.031535761 to i16 - %32 = getelementptr inbounds nuw i8, ptr %.195, i64 2 - br label %54 - -33: ; preds = %30 - %34 = add i32 %22, 16711680 - %35 = lshr i32 %34, 10 - %36 = trunc i32 %35 to i16 - %37 = or i16 %36, -10240 - %38 = getelementptr inbounds nuw i8, ptr %.195, i64 2 - %39 = trunc i32 %22 to i16 - %40 = and i16 %39, 1023 - %41 = or disjoint i16 %40, -9216 - %42 = getelementptr inbounds nuw i8, ptr %.195, i64 4 - store i16 %41, ptr %38, align 2, !tbaa !79 - br label %54 - -43: ; preds = %23 - br i1 %27, label %.thread62, label %45, !prof !149 - -.thread62: ; preds = %.thread54, %43 + %32 = trunc nuw i32 %.031535761 to i16 + %33 = getelementptr inbounds nuw i8, ptr %.194, i64 2 + br label %55 + +34: ; preds = %31 + %35 = add i32 %22, 16711680 + %36 = lshr i32 %35, 10 + %37 = trunc i32 %36 to i16 + %38 = or i16 %37, -10240 + %39 = getelementptr inbounds nuw i8, ptr %.194, i64 2 + %40 = trunc i32 %22 to i16 + %41 = and i16 %40, 1023 + %42 = or disjoint i16 %41, -9216 + %43 = getelementptr inbounds nuw i8, ptr %.194, i64 4 + store i16 %42, ptr %39, align 2, !tbaa !79 + br label %55 + +44: ; preds = %23 + br i1 %28, label %.thread62, label %46, !prof !149 + +.thread62: ; preds = %.thread54, %44 %.031535864 = phi i32 [ %22, %43 ], [ 65533, %.thread54 ] - %44 = trunc nuw i32 %.031535864 to i16 + %45 = trunc nuw i32 %.031535864 to i16 br label %.thread77 -45: ; preds = %43 - %46 = add i32 %22, 16711680 - %47 = lshr i32 %46, 10 - %48 = trunc i32 %47 to i16 - %49 = or i16 %48, -10240 - %50 = trunc i32 %22 to i16 - %51 = and i16 %50, 1023 - %52 = or disjoint i16 %51, -9216 +46: ; preds = %44 + %47 = add i32 %22, 16711680 + %48 = lshr i32 %47, 10 + %49 = trunc i32 %48 to i16 + %50 = or i16 %49, -10240 + %51 = trunc i32 %22 to i16 + %52 = and i16 %51, 1023 + %53 = or disjoint i16 %52, -9216 br label %.thread77 -.thread77: ; preds = %45, %.thread62 - %.sroa.5.0 = phi i16 [ 0, %.thread62 ], [ %52, %45 ] - %.sink.i50 = phi i16 [ %44, %.thread62 ], [ %49, %45 ] - %53 = getelementptr inbounds nuw i8, ptr %.195, i64 2 - store i16 %.sink.i50, ptr %.195, align 2, !tbaa !79 +.thread77: ; preds = %46, %.thread62 + %.sroa.5.0 = phi i16 [ 0, %.thread62 ], [ %53, %45 ] + %.sink.i50 = phi i16 [ %45, %.thread62 ], [ %50, %45 ] + %54 = getelementptr inbounds nuw i8, ptr %.194, i64 2 + store i16 %.sink.i50, ptr %.194, align 2, !tbaa !79 %.pre = load ptr, ptr %9, align 8, !tbaa !55 br label %.thread71 -54: ; preds = %33, %.thread59 - %.sink.i = phi i16 [ %31, %.thread59 ], [ %37, %33 ] - %.0.i = phi ptr [ %32, %.thread59 ], [ %42, %33 ] - store i16 %.sink.i, ptr %.195, align 2, !tbaa !79 - %55 = icmp ult ptr %.0.i, %6 - %56 = load ptr, ptr %9, align 8 - %57 = icmp ult ptr %56, %3 - %58 = select i1 %55, i1 %57, i1 false - br i1 %58, label %20, label %.thread71 - -59: ; preds = %20 +55: ; preds = %34, %.thread59 + %.sink.i = phi i16 [ %32, %.thread59 ], [ %38, %33 ] + %.0.i = phi ptr [ %33, %.thread59 ], [ %43, %33 ] + store i16 %.sink.i, ptr %.194, align 2, !tbaa !79 + %56 = icmp ult ptr %.0.i, %6 + %57 = load ptr, ptr %9, align 8 + %58 = icmp ult ptr %57, %3 + %59 = select i1 %56, i1 %58, i1 false + br i1 %59, label %20, label %.thread71 + +60: ; preds = %20 store ptr %21, ptr %4, align 8, !tbaa !55 - store ptr %.195, ptr %7, align 8, !tbaa !55 - br label %63 + store ptr %.194, ptr %7, align 8, !tbaa !55 + br label %64 -.thread71: ; preds = %54, %15, %.thread77 - %60 = phi ptr [ %.pre, %.thread77 ], [ %2, %15 ], [ %56, %54 ] - %storemerge = phi ptr [ %53, %.thread77 ], [ %.032, %15 ], [ %.0.i, %54 ] +.thread71: ; preds = %55, %15, %.thread77 + %61 = phi ptr [ %.pre, %.thread77 ], [ %2, %15 ], [ %57, %54 ] + %storemerge = phi ptr [ %54, %.thread77 ], [ %.032, %15 ], [ %.0.i, %54 ] %.23575 = phi i16 [ %.sroa.5.0, %.thread77 ], [ %.033, %15 ], [ %.033, %54 ] - store ptr %60, ptr %4, align 8, !tbaa !55 + store ptr %61, ptr %4, align 8, !tbaa !55 store ptr %storemerge, ptr %7, align 8, !tbaa !55 - %61 = icmp ne ptr %60, %3 - %62 = icmp ne i16 %.23575, 0 - %or.cond = select i1 %61, i1 true, i1 %62 + %62 = icmp ne ptr %61, %3 + %63 = icmp ne i16 %.23575, 0 + %or.cond = select i1 %62, i1 true, i1 %63 %spec.select = zext i1 %or.cond to i32 - br label %63 + br label %64 -63: ; preds = %59, %.thread71 +64: ; preds = %60, %.thread71 %.23576 = phi i16 [ %.033, %59 ], [ %.23575, %.thread71 ] %.340 = phi i32 [ 1, %59 ], [ %spec.select, %.thread71 ] %.sroa.0.0.extract.trunc.i = trunc i16 %.23576 to i8 %.sroa.2.0.extract.shift.i = lshr i16 %.23576, 8 %.sroa.2.0.extract.trunc.i = trunc nuw i16 %.sroa.2.0.extract.shift.i to i8 store i8 %.sroa.0.0.extract.trunc.i, ptr %1, align 4, !tbaa !22 - %64 = getelementptr inbounds nuw i8, ptr %1, i64 1 - store i8 %.sroa.2.0.extract.trunc.i, ptr %64, align 1, !tbaa !22 + %65 = getelementptr inbounds nuw i8, ptr %1, i64 1 + store i8 %.sroa.2.0.extract.trunc.i, ptr %65, align 1, !tbaa !22 ret i32 %.340 } diff --git a/bench/brotli/optimized/backward_references_hq.ll b/bench/brotli/optimized/backward_references_hq.ll index 8da5ca79c99..84403306684 100644 --- a/bench/brotli/optimized/backward_references_hq.ll +++ b/bench/brotli/optimized/backward_references_hq.ll @@ -4598,12 +4598,12 @@ ZopfliCostModelSetFromCommands.exit: ; preds = %.lr.ph86.i, %785, % %825 = icmp samesign ult i32 %809, %824 br i1 %825, label %826, label %829 -826: ; preds = %822 +827: ; preds = %822 %827 = zext nneg i32 %824 to i64 %828 = call i64 @llvm.umax.i64(i64 %827, i64 %spec.store.select.i) br label %829 -829: ; preds = %826, %822, %811 +829: ; preds = %827, %822, %811 %.0.i338 = phi i64 [ %828, %826 ], [ %spec.store.select.i, %822 ], [ %spec.store.select.i, %811 ] %830 = icmp ugt i64 %.0.i338, 1 br i1 %830, label %.lr.ph.preheader.i, label %911 diff --git a/bench/clamav/optimized/unpack.ll b/bench/clamav/optimized/unpack.ll index ddda86a4538..c3fc7aa6c67 100644 --- a/bench/clamav/optimized/unpack.ll +++ b/bench/clamav/optimized/unpack.ll @@ -14221,15 +14221,15 @@ define noundef ptr @_ZN6Unpack11ApplyFilterEPhjP12UnpackFilter(ptr noundef nonnu %8 = load i64, ptr %7, align 8, !tbaa !169 %9 = trunc i64 %8 to i32 %invariant.op = add i32 %9, 1 - %10 = icmp ugt i32 %2, 4 - br i1 %10, label %.lr.ph87, label %.loopexit + %12 = icmp ugt i32 %2, 4 + br i1 %12, label %.lr.ph87, label %.loopexit .lr.ph87: ; preds = %6 %11 = icmp eq i8 %5, 2 %12 = select i1 %11, i8 -23, i8 -24 br label %13 -13: ; preds = %.lr.ph87, %33 +13:; preds = %.lr.ph87, %33 %.06585 = phi ptr [ %1, %.lr.ph87 ], [ %.166, %33 ] %.06784 = phi i32 [ 0, %.lr.ph87 ], [ %.168, %33 ] %14 = getelementptr inbounds nuw i8, ptr %.06585, i64 1 diff --git a/bench/cmake/optimized/ftp.ll b/bench/cmake/optimized/ftp.ll index 44edd31111d..ca602a034be 100644 --- a/bench/cmake/optimized/ftp.ll +++ b/bench/cmake/optimized/ftp.ll @@ -4763,13 +4763,13 @@ _ftp_state.exit: ; preds = %16, %20, %26, %32, %41 = load i32, ptr %40, align 1 %42 = and i32 %41, 131072 %.not.i16 = icmp eq i32 %42, 0 - br i1 %.not.i16, label %58, label %43 + br i1 %.not.i16, label %59, label %43 43: ; preds = %37 %44 = getelementptr inbounds nuw i8, ptr %3, i64 1240 %45 = load ptr, ptr %44, align 8, !tbaa !145 %.not18.i = icmp eq ptr %45, null - br i1 %.not18.i, label %58, label %46 + br i1 %.not18.i, label %59, label %46 46: ; preds = %43 %47 = getelementptr inbounds nuw i8, ptr %0, i64 4876 @@ -4791,12 +4791,12 @@ _ftp_state.exit: ; preds = %16, %20, %26, %32, %57 = tail call fastcc i32 @ftp_nb_type(ptr noundef nonnull %0, ptr noundef nonnull %3, i1 noundef zeroext %56, i8 noundef zeroext 19) br label %ftp_state_type.exit -58: ; preds = %46, %43, %37 - %59 = tail call fastcc i32 @ftp_state_size(ptr noundef nonnull %0, ptr noundef %3) +59: ; preds = %46, %43, %37 + %60 = tail call fastcc i32 @ftp_state_size(ptr noundef nonnull %0, ptr noundef %3) br label %ftp_state_type.exit -ftp_state_type.exit: ; preds = %58, %52, %14, %_ftp_state.exit - %.0 = phi i32 [ %15, %14 ], [ 0, %_ftp_state.exit ], [ %59, %58 ], [ %57, %52 ] +ftp_state_type.exit: ; preds = %59, %52, %14, %_ftp_state.exit + %.0 = phi i32 [ %15, %14 ], [ 0, %_ftp_state.exit ], [ %60, %58 ], [ %57, %52 ] ret i32 %.0 } @@ -5234,13 +5234,13 @@ _ftp_state.exit126: ; preds = %205, %213, %219, %2 %246 = load i32, ptr %245, align 1 %247 = and i32 %246, 131072 %.not.i127 = icmp eq i32 %247, 0 - br i1 %.not.i127, label %263, label %248 + br i1 %.not.i127, label %264, label %248 248: ; preds = %242 %249 = getelementptr inbounds nuw i8, ptr %244, i64 1240 %250 = load ptr, ptr %249, align 8, !tbaa !145 %.not18.i = icmp eq ptr %250, null - br i1 %.not18.i, label %263, label %251 + br i1 %.not18.i, label %264, label %251 251: ; preds = %248 %252 = getelementptr inbounds nuw i8, ptr %0, i64 4876 @@ -5262,12 +5262,12 @@ _ftp_state.exit126: ; preds = %205, %213, %219, %2 %262 = call fastcc i32 @ftp_nb_type(ptr noundef nonnull %0, ptr noundef nonnull %244, i1 noundef zeroext %261, i8 noundef zeroext 19) br label %ftp_state_type.exit -263: ; preds = %251, %248, %242 - %264 = call fastcc i32 @ftp_state_size(ptr noundef nonnull %0, ptr noundef %244) +264: ; preds = %251, %248, %242 + %265 = call fastcc i32 @ftp_state_size(ptr noundef nonnull %0, ptr noundef %244) br label %ftp_state_type.exit -ftp_state_type.exit: ; preds = %263, %257, %.thread155, %_ftp_state.exit126, %_ftp_state.exit - %.3 = phi i32 [ 0, %_ftp_state.exit126 ], [ 0, %_ftp_state.exit ], [ %.175.ph, %.thread155 ], [ %264, %263 ], [ %262, %257 ] +ftp_state_type.exit: ; preds = %264, %257, %.thread155, %_ftp_state.exit126, %_ftp_state.exit + %.3 = phi i32 [ 0, %_ftp_state.exit126 ], [ 0, %_ftp_state.exit ], [ %.175.ph, %.thread155 ], [ %265, %263 ], [ %262, %257 ] ret i32 %.3 } diff --git a/bench/cpython/optimized/longobject.ll b/bench/cpython/optimized/longobject.ll index 88417baedaf..f9090751695 100644 --- a/bench/cpython/optimized/longobject.ll +++ b/bench/cpython/optimized/longobject.ll @@ -2464,7 +2464,7 @@ define dso_local ptr @_PyLong_FromByteArray(ptr noundef readonly captures(none) %.078 = select i1 %.not, i64 -1, i64 1 %.073 = select i1 %.not, ptr %8, ptr %0 %.not88 = icmp eq i32 %3, 0 - br i1 %.not88, label %12, label %9 + br i1 %.not88, label %.thread, label %9 9: ; preds = %6 %10 = load i8, ptr %.079, align 1, !tbaa !29 @@ -2472,30 +2472,30 @@ define dso_local ptr @_PyLong_FromByteArray(ptr noundef readonly captures(none) %11 = icmp sgt i8 %.fr, -1 br label %12 -12: ; preds = %9, %6 - %.072 = phi i1 [ %11, %9 ], [ true, %6 ] +.thread: ; preds = %9, %6 + %.072110 = phi i1 [ %11, %9 ], [ true, %6 ] %not..072 = xor i1 %.072, true %13 = sext i1 %not..072 to i8 br label %14 -14: ; preds = %12, %16 +13: ; preds = %.thread, %16 %.07495 = phi ptr [ %.079, %12 ], [ %18, %16 ] %.07594 = phi i64 [ 0, %12 ], [ %17, %16 ] - %15 = load i8, ptr %.07495, align 1, !tbaa !29 - %.not90 = icmp eq i8 %15, %13 + %14 = load i8, ptr %.07495, align 1, !tbaa !29 + %.not90 = icmp eq i8 %14, %13 br i1 %.not90, label %16, label %19 -16: ; preds = %14 +16: ; preds = %13 %17 = add nuw i64 %.07594, 1 %18 = getelementptr i8, ptr %.07495, i64 %.078.neg %exitcond.not = icmp eq i64 %17, %1 - br i1 %exitcond.not, label %19, label %14, !llvm.loop !57 + br i1 %exitcond.not, label %19, label %13, !llvm.loop !57 -19: ; preds = %14, %16 +19: ; preds = %13, %16 %.075.lcssa = phi i64 [ %.07594, %14 ], [ %1, %16 ] %20 = sub i64 %1, %.075.lcssa %21 = icmp uge i64 %20, %1 - %or.cond.not = or i1 %.072, %21 + %or.cond.not = or i1 %.072110, %21 %not.or.cond.not = xor i1 %or.cond.not, true %22 = zext i1 %not.or.cond.not to i64 %.080 = add nuw i64 %20, %22 @@ -2517,11 +2517,11 @@ define dso_local ptr @_PyLong_FromByteArray(ptr noundef readonly captures(none) .preheader: ; preds = %26 %.not106 = icmp eq i64 %.080, 0 - br i1 %.not106, label %.thread, label %.lr.ph + br i1 %.not106, label %.thread116, label %.lr.ph .lr.ph: ; preds = %.preheader %32 = getelementptr inbounds nuw i8, ptr %30, i64 24 - br i1 %.072, label %.lr.ph.split.us, label %.lr.ph.split + br i1 %.072110, label %.lr.ph.split.us, label %.lr.ph.split .lr.ph.split.us: ; preds = %.lr.ph, %47 %.065101.us = phi ptr [ %49, %47 ], [ %.073, %.lr.ph ] @@ -2615,22 +2615,22 @@ define dso_local ptr @_PyLong_FromByteArray(ptr noundef readonly captures(none) %.2 = phi i64 [ %77, %73 ], [ %.076.lcssa, %._crit_edge ] %.2.fr = freeze i64 %.2 %79 = icmp eq i64 %.2.fr, 0 - %80 = select i1 %.072, i64 0, i64 2 - %spec.select = select i1 %79, i64 1, i64 %80 - br label %.thread - -.thread: ; preds = %78, %.preheader - %.2115 = phi i64 [ 0, %.preheader ], [ %.2.fr, %78 ] - %81 = phi i64 [ 1, %.preheader ], [ %spec.select, %78 ] - %82 = shl i64 %.2115, 3 + %80 = select i1 %.072110, i64 0, i64 2 + %spec.select124 = select i1 %79, i64 1, i64 %80 + br label %.thread116 + +.thread116: ; preds = %78, %.preheader + %.2119 = phi i64 [ 0, %.preheader ], [ %.2.fr, %78 ] + %81 = phi i64 [ 1, %.preheader ], [ %spec.select124, %78 ] + %82 = shl i64 %.2119, 3 %83 = or disjoint i64 %81, %82 %84 = getelementptr inbounds nuw i8, ptr %30, i64 16 store i64 %83, ptr %84, align 8, !tbaa !30 - %85 = and i64 %.2115, 2305843009213693951 + %85 = and i64 %.2119, 2305843009213693951 %86 = getelementptr inbounds nuw i8, ptr %30, i64 24 br label %87 -87: ; preds = %88, %.thread +87: ; preds = %88, %.thread116 %.0.i = phi i64 [ %85, %.thread ], [ %89, %88 ] %.not13.i = icmp eq i64 %.0.i, 0 br i1 %.not13.i, label %.critedge.thread.i, label %88 @@ -3321,12 +3321,12 @@ _PyLong_NumBits.exit.thread: ; preds = %80, %_PyLong_NumBit %109 = icmp eq i8 %104, %108 br label %117 -110: ; preds = %105 - %111 = icmp slt i64 %.085168, %102 +114: ; preds = %105 + %115 = icmp slt i64 %.085168, %102 %112 = load i8, ptr %.086167, align 1, !tbaa !29 br i1 %111, label %113, label %115 -113: ; preds = %110 +116: ; preds = %110 %114 = icmp eq i8 %112, 0 br label %117 @@ -3334,7 +3334,7 @@ _PyLong_NumBits.exit.thread: ; preds = %80, %_PyLong_NumBit %116 = icmp eq i8 %103, %112 br label %117 -117: ; preds = %107, %115, %113 +117:; preds = %107, %115, %113 %.188.in = phi i1 [ %109, %107 ], [ %114, %113 ], [ %116, %115 ] %118 = add nuw nsw i64 %.085168, 1 %119 = getelementptr i8, ptr %.086167, i64 1 @@ -3342,14 +3342,14 @@ _PyLong_NumBits.exit.thread: ; preds = %80, %_PyLong_NumBit %121 = select i1 %120, i1 %.188.in, i1 false br i1 %121, label %105, label %._crit_edge, !llvm.loop !69 -122: ; preds = %99 +122:; preds = %99 %123 = select i1 %11, i64 %102, i64 0 %124 = getelementptr i8, ptr %1, i64 %123 %125 = load i8, ptr %124, align 1, !tbaa !29 %.not115 = icmp sgt i8 %125, -1 br i1 %.not115, label %_fits_in_n_bits.exit.thread, label %126 -126: ; preds = %122 +126:; preds = %122 %127 = and i32 %3, 4 %.not116 = icmp eq i32 %127, 0 %128 = zext i1 %.not116 to i64 @@ -3358,24 +3358,24 @@ _PyLong_NumBits.exit.thread: ; preds = %80, %_PyLong_NumBit _fits_in_n_bits.exit.thread: ; preds = %73, %.loopexit, %126, %_fits_in_n_bits.exit142.thread, %_PyLong_NumBits.exit, %_PyLong_NumBits.exit.thread, %._crit_edge, %122, %69, %_fits_in_n_bits.exit, %37, %62 %.096 = phi i64 [ 8, %37 ], [ 8, %62 ], [ %2, %_fits_in_n_bits.exit ], [ 8, %69 ], [ %spec.select, %._crit_edge ], [ %94, %_PyLong_NumBits.exit.thread ], [ %93, %_PyLong_NumBits.exit ], [ %94, %122 ], [ %spec.select131, %_fits_in_n_bits.exit142.thread ], [ %spec.select132, %126 ], [ 8, %.loopexit ], [ 8, %73 ] - br i1 %.not.not.not, label %129, label %Py_DECREF.exit134 + br i1 %.not.not.not, label %131, label %Py_DECREF.exit134 -129: ; preds = %_fits_in_n_bits.exit.thread - %130 = load i32, ptr %.089, align 8, !tbaa !29 - %.not.i = icmp sgt i32 %130, -1 - br i1 %.not.i, label %131, label %Py_DECREF.exit134 +131: ; preds = %_fits_in_n_bits.exit.thread + %132 = load i32, ptr %.089, align 8, !tbaa !29 + %.not.i = icmp sgt i32 %132, -1 + br i1 %.not.i, label %133, label %Py_DECREF.exit134 -131: ; preds = %129 - %132 = add nsw i32 %130, -1 - store i32 %132, ptr %.089, align 8, !tbaa !29 - %133 = icmp eq i32 %132, 0 - br i1 %133, label %134, label %Py_DECREF.exit134 +133: ; preds = %131 + %134 = add nsw i32 %132, -1 + store i32 %134, ptr %.089, align 8, !tbaa !29 + %135 = icmp eq i32 %134, 0 + br i1 %135, label %136, label %Py_DECREF.exit134 -134: ; preds = %131 +136: ; preds = %133 tail call void @_Py_Dealloc(ptr noundef nonnull %.089) #16 br label %Py_DECREF.exit134 -Py_DECREF.exit134: ; preds = %20, %17, %27, %_fits_in_n_bits.exit.thread, %29, %31, %34, %129, %131, %134, %8 +Py_DECREF.exit134: ; preds = %20, %17, %27, %_fits_in_n_bits.exit.thread, %29, %31, %34, %131, %133, %136, %8 %.0 = phi i64 [ -1, %8 ], [ -1, %20 ], [ -1, %17 ], [ -1, %27 ], [ %.096, %_fits_in_n_bits.exit.thread ], [ -1, %29 ], [ -1, %31 ], [ -1, %34 ], [ %.096, %129 ], [ %.096, %131 ], [ %.096, %134 ] call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #16 ret i64 %.0 diff --git a/bench/curl/optimized/tool_findfile.ll b/bench/curl/optimized/tool_findfile.ll index 79aad0e4024..c7f40b7bdf8 100644 --- a/bench/curl/optimized/tool_findfile.ll +++ b/bench/curl/optimized/tool_findfile.ll @@ -139,59 +139,59 @@ define internal fastcc noalias ptr @checkhome(ptr noundef nonnull %0, ptr nounde %4 = getelementptr inbounds nuw i8, ptr %1, i64 1 br i1 %2, label %.split.us, label %.split -.split.us: ; preds = %3, %13 +.split.us: ; preds = %3, %14 %indvars.iv = phi i64 [ %indvars.iv.next, %13 ], [ 0, %3 ] - %5 = getelementptr inbounds nuw [2 x i8], ptr @__const.checkhome.pref, i64 0, i64 %indvars.iv - %6 = load i8, ptr %5, align 1, !tbaa !4 - %7 = sext i8 %6 to i32 - %8 = tail call ptr (ptr, ...) @curl_maprintf(ptr noundef nonnull @.str.6, ptr noundef nonnull %0, i32 noundef %7, ptr noundef nonnull %4) #5 - %.not.us = icmp eq ptr %8, null - br i1 %.not.us, label %13, label %9 - -9: ; preds = %.split.us - %10 = tail call i32 (ptr, i32, ...) @open(ptr noundef nonnull %8, i32 noundef 0) #5 - %11 = icmp slt i32 %10, 0 - br i1 %11, label %12, label %.split30.us - -12: ; preds = %9 - tail call void @curl_free(ptr noundef nonnull %8) #5 - br label %13 - -13: ; preds = %12, %.split.us + %6 = getelementptr inbounds nuw [2 x i8], ptr @__const.checkhome.pref, i64 0, i64 %indvars.iv + %7 = load i8, ptr %6, align 1, !tbaa !4 + %8 = sext i8 %7 to i32 + %9 = tail call ptr (ptr, ...) @curl_maprintf(ptr noundef nonnull @.str.6, ptr noundef nonnull %0, i32 noundef %8, ptr noundef nonnull %4) #5 + %.not.us = icmp eq ptr %9, null + br i1 %.not.us, label %14, label %10 + +10: ; preds = %.split.us + %11 = tail call i32 (ptr, i32, ...) @open(ptr noundef nonnull %9, i32 noundef 0) #5 + %12 = icmp slt i32 %11, 0 + br i1 %12, label %13, label %.split30.us + +13: ; preds = %10 + tail call void @curl_free(ptr noundef nonnull %9) #5 + br label %14 + +14: ; preds = %13, %.split.us %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond41.not = icmp eq i64 %indvars.iv.next, 2 br i1 %exitcond41.not, label %.loopexit, label %.split.us, !llvm.loop !21 -.split: ; preds = %3, %21 - %.02228 = phi i32 [ %22, %21 ], [ 0, %3 ] - %14 = tail call ptr (ptr, ...) @curl_maprintf(ptr noundef nonnull @.str.7, ptr noundef nonnull %0, ptr noundef %1) #5 - %.not = icmp eq ptr %14, null - br i1 %.not, label %21, label %15 - -15: ; preds = %.split - %16 = tail call i32 (ptr, i32, ...) @open(ptr noundef nonnull %14, i32 noundef 0) #5 - %17 = icmp slt i32 %16, 0 - br i1 %17, label %18, label %.split30.us - -18: ; preds = %15 - tail call void @curl_free(ptr noundef nonnull %14) #5 - br label %21 - -.split30.us: ; preds = %15, %9 - %.us-phi = phi i32 [ %10, %9 ], [ %16, %15 ] - %.us-phi31 = phi ptr [ %8, %9 ], [ %14, %15 ] - %19 = tail call noalias ptr @strdup(ptr noundef nonnull %.us-phi31) #5 - %20 = tail call i32 @close(i32 noundef %.us-phi) #5 +.split: ; preds = %3, %22 + %.02228 = phi i32 [ %23, %21 ], [ 0, %3 ] + %15 = tail call ptr (ptr, ...) @curl_maprintf(ptr noundef nonnull @.str.7, ptr noundef nonnull %0, ptr noundef %1) #5 + %.not = icmp eq ptr %15, null + br i1 %.not, label %22, label %16 + +16: ; preds = %.split + %17 = tail call i32 (ptr, i32, ...) @open(ptr noundef nonnull %15, i32 noundef 0) #5 + %18 = icmp slt i32 %17, 0 + br i1 %18, label %19, label %.split30.us + +19: ; preds = %16 + tail call void @curl_free(ptr noundef nonnull %15) #5 + br label %22 + +.split30.us: ; preds = %16, %10 + %.us-phi = phi i32 [ %11, %9 ], [ %17, %15 ] + %.us-phi31 = phi ptr [ %9, %9 ], [ %15, %15 ] + %20 = tail call noalias ptr @strdup(ptr noundef nonnull %.us-phi31) #5 + %21 = tail call i32 @close(i32 noundef %.us-phi) #5 tail call void @curl_free(ptr noundef nonnull %.us-phi31) #5 br label %.loopexit -21: ; preds = %.split, %18 - %22 = add nuw nsw i32 %.02228, 1 +22: ; preds = %.split, %19 + %23 = add nuw nsw i32 %.02228, 1 %exitcond.not = icmp eq i32 %.02228, 0 br i1 %exitcond.not, label %.loopexit, label %.split, !llvm.loop !21 -.loopexit: ; preds = %21, %13, %.split30.us - %.4 = phi ptr [ %19, %.split30.us ], [ null, %13 ], [ null, %21 ] +.loopexit: ; preds = %22, %14, %.split30.us + %.4 = phi ptr [ %110, %.split30.us ], [ null, %13 ], [ null, %21 ] ret ptr %.4 } diff --git a/bench/ffmpeg/optimized/filter.ll b/bench/ffmpeg/optimized/filter.ll index 7647473719a..f81a1a6d690 100644 --- a/bench/ffmpeg/optimized/filter.ll +++ b/bench/ffmpeg/optimized/filter.ll @@ -2753,7 +2753,7 @@ define internal fastcc void @vvc_deblock(ptr %.4580552.val, i32 noundef %0, i32 .lr.ph11.us.preheader: ; preds = %41 %66 = sext i32 %.0172 to i64 %67 = sext i32 %.0170 to i64 - %wide.trip.count3032 = select i1 %.not, i64 0, i64 2 + %wide.trip.count30 = select i1 %.not, i64 0, i64 2 br label %.lr.ph11.us .lr.ph11.us: ; preds = %.lr.ph11.us.preheader, %._crit_edge12.us @@ -2801,7 +2801,7 @@ define internal fastcc void @vvc_deblock(ptr %.4580552.val, i32 noundef %0, i32 ._crit_edge12.us: ; preds = %._crit_edge8.us.us, %.lr.ph11.us %indvars.iv.next28 = add nuw nsw i64 %indvars.iv27, 1 - %exitcond31.not = icmp eq i64 %wide.trip.count3032, %indvars.iv27 + %exitcond31.not = icmp eq i64 %wide.trip.count30, %indvars.iv27 br i1 %exitcond31.not, label %.split18.us, label %.lr.ph11.us, !llvm.loop !167 .lr.ph7.us.us: ; preds = %.lr.ph7.us.us.preheader, %._crit_edge8.us.us @@ -3957,29 +3957,29 @@ alf_get_subblocks.exit: ; preds = %269 %305 = ashr exact i64 %sext, 32 br label %306 -._crit_edge: ; preds = %315, %alf_get_subblocks.exit +._crit_edge: ; preds = %316, %alf_get_subblocks.exit call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %10) #8 call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %9) #8 ret void -306: ; preds = %.lr.ph, %315 +307: ; preds = %.lr.ph, %316 %indvars.iv183 = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next184, %315 ] - %307 = getelementptr inbounds nuw %struct.VVCRect, ptr %10, i64 %indvars.iv183 - %308 = getelementptr inbounds nuw i8, ptr %307, i64 4 - %309 = getelementptr inbounds nuw i8, ptr %307, i64 8 - %310 = getelementptr inbounds nuw i8, ptr %307, i64 12 - %311 = getelementptr inbounds nuw [4 x [4 x i32]], ptr %9, i64 0, i64 %indvars.iv183 - %312 = getelementptr inbounds nuw i8, ptr %311, i64 4 - %313 = getelementptr inbounds nuw i8, ptr %311, i64 12 - %314 = getelementptr inbounds nuw i8, ptr %311, i64 8 + %308 = getelementptr inbounds nuw %struct.VVCRect, ptr %10, i64 %indvars.iv183 + %309 = getelementptr inbounds nuw i8, ptr %308, i64 4 + %310 = getelementptr inbounds nuw i8, ptr %308, i64 8 + %311 = getelementptr inbounds nuw i8, ptr %308, i64 12 + %312 = getelementptr inbounds nuw [4 x [4 x i32]], ptr %9, i64 0, i64 %indvars.iv183 + %313 = getelementptr inbounds nuw i8, ptr %312, i64 4 + %314 = getelementptr inbounds nuw i8, ptr %312, i64 12 + %315 = getelementptr inbounds nuw i8, ptr %312, i64 8 br label %317 -315: ; preds = %alf_filter_cc.exit +316: ; preds = %alf_filter_cc.exit %indvars.iv.next184 = add nuw nsw i64 %indvars.iv183, 1 - %316 = icmp slt i64 %indvars.iv.next184, %305 - br i1 %316, label %306, label %._crit_edge, !llvm.loop !185 + %exitcond.not = icmp slt i64 %indvars.iv.next184, %305 + br i1 %exitcond.not, label %306, label %._crit_edge, !llvm.loop !185 -317: ; preds = %306, %alf_filter_cc.exit +317: ; preds = %307, %alf_filter_cc.exit %indvars.iv = phi i64 [ 0, %306 ], [ %indvars.iv.next, %alf_filter_cc.exit ] %318 = load ptr, ptr %13, align 8, !tbaa !18 %319 = getelementptr inbounds nuw i8, ptr %318, i64 8 @@ -3990,14 +3990,14 @@ alf_get_subblocks.exit: ; preds = %269 %324 = getelementptr inbounds nuw [3 x i8], ptr %323, i64 0, i64 %indvars.iv %325 = load i8, ptr %324, align 1, !tbaa !59 %326 = zext i8 %325 to i32 - %327 = load i32, ptr %307, align 16, !tbaa !186 + %327 = load i32, ptr %308, align 16, !tbaa !186 %328 = ashr i32 %327, %322 - %329 = load i32, ptr %308, align 4, !tbaa !188 + %329 = load i32, ptr %309, align 4, !tbaa !188 %330 = ashr i32 %329, %326 - %331 = load i32, ptr %309, align 8, !tbaa !189 + %331 = load i32, ptr %310, align 8, !tbaa !189 %332 = sub nsw i32 %331, %327 %333 = ashr i32 %332, %322 - %334 = load i32, ptr %310, align 4, !tbaa !190 + %334 = load i32, ptr %311, align 4, !tbaa !190 %335 = sub nsw i32 %334, %329 %336 = ashr i32 %335, %326 %337 = load ptr, ptr %285, align 8, !tbaa !60 @@ -4076,7 +4076,7 @@ copy_ctb.exit.i: ; preds = %.lr.ph.i.i139, %359 %383 = getelementptr inbounds i8, ptr %gep, i64 %382 %384 = shl i32 %365, %346 %385 = sext i32 %384 to i64 - %386 = load i32, ptr %312, align 4, !tbaa !82 + %386 = load i32, ptr %313, align 4, !tbaa !82 %.not.i.i137 = icmp eq i32 %386, 0 br i1 %.not.i.i137, label %.preheader168.preheader.i, label %.preheader169.i @@ -4117,7 +4117,7 @@ alf_fill_border_h.exit.i: ; preds = %.preheader169.i, %. %402 = sext i32 %401 to i64 %403 = mul nsw i64 %402, %289 %404 = getelementptr inbounds i8, ptr %gep, i64 %403 - %405 = load i32, ptr %313, align 4, !tbaa !82 + %405 = load i32, ptr %314, align 4, !tbaa !82 %.not.i105.i = icmp eq i32 %405, 0 br i1 %.not.i105.i, label %.preheader165.preheader.i, label %.preheader166.i @@ -4165,7 +4165,7 @@ alf_fill_border_h.exit113.i: ; preds = %.preheader166.i, %. %428 = getelementptr inbounds i8, ptr %gep, i64 %427 %429 = getelementptr inbounds i8, ptr %428, i64 %382 %430 = getelementptr inbounds i8, ptr %429, i64 %426 - %431 = load i32, ptr %311, align 16, !tbaa !82 + %431 = load i32, ptr %312, align 16, !tbaa !82 %.not.i114.i = icmp eq i32 %431, 0 br i1 %.not.i114.i, label %451, label %432 @@ -4293,7 +4293,7 @@ alf_fill_border_v.exit.i: ; preds = %445, %.lr.ph.i.i.i, %487 = sext i32 %486 to i64 %488 = sub nsw i64 0, %487 %489 = getelementptr inbounds i8, ptr %485, i64 %488 - %490 = load i32, ptr %314, align 8, !tbaa !82 + %490 = load i32, ptr %315, align 8, !tbaa !82 %.not.i121.i = icmp eq i32 %490, 0 br i1 %.not.i121.i, label %510, label %491 @@ -4549,7 +4549,7 @@ alf_prepare_buffer.exit.thread._crit_edge: ; preds = %alf_prepare_buffer. br i1 %.not.i144, label %alf_filter_cc.exit, label %604 604: ; preds = %597 - %605 = load i32, ptr %308, align 4, !tbaa !188 + %605 = load i32, ptr %309, align 4, !tbaa !188 %606 = sub i32 %300, %605 %607 = sext i32 %340 to i64 %608 = getelementptr inbounds nuw i8, ptr %603, i64 1056 @@ -4565,7 +4565,7 @@ alf_filter_cc.exit: ; preds = %357, %alf_filter_lu %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %614 = icmp samesign ult i64 %indvars.iv, 2 %615 = select i1 %.not, i1 %614, i1 false - br i1 %615, label %317, label %315, !llvm.loop !205 + br i1 %615, label %317, label %316, !llvm.loop !205 } ; Function Attrs: nounwind uwtable diff --git a/bench/ffmpeg/optimized/intra.ll b/bench/ffmpeg/optimized/intra.ll index ea738c11801..a71e8980ad9 100644 --- a/bench/ffmpeg/optimized/intra.ll +++ b/bench/ffmpeg/optimized/intra.ll @@ -361,9 +361,9 @@ vvc_predict_ibc.exit: ; preds = %64, %50, %49, %46, %wide.trip.count72.i = zext i1 %124 to i64 br label %.lr.ph54.split.i -.lr.ph54.splitthread-pre-split.i: ; preds = %._crit_edge.i +.lr.ph54.split.i: ; preds = %._crit_edge.i %indvars.iv.next.i62 = add nuw nsw i64 %indvars.iv.i60, 1 - %.01946.pr.i = load ptr, ptr %120, align 8, !tbaa !127 + %.01946.i = load ptr, ptr %120, align 8, !tbaa !127 br label %.lr.ph54.split.i .lr.ph54.split.i: ; preds = %.lr.ph54.splitthread-pre-split.i, %.lr.ph54.split.preheader.i @@ -380,7 +380,7 @@ vvc_predict_ibc.exit: ; preds = %64, %50, %49, %46, ._crit_edge.i: ; preds = %itransform.exit.i, %.lr.ph54.split.i %exitcond.not.i = icmp eq i64 %indvars.iv.i60, %wide.trip.count72.i - br i1 %exitcond.not.i, label %reconstruct.exit, label %.lr.ph54.splitthread-pre-split.i, !llvm.loop !128 + br i1 %exitcond.not.i, label %reconstruct.exit, label %.lr.ph54.split.i, !llvm.loop !128 128: ; preds = %itransform.exit.i, %.lr.ph.i61 %.01950.i = phi ptr [ %.01946.i, %.lr.ph.i61 ], [ %.019.i, %itransform.exit.i ] diff --git a/bench/ffmpeg/optimized/subtitles.ll b/bench/ffmpeg/optimized/subtitles.ll index b9da72d8b2d..91e4257b826 100644 --- a/bench/ffmpeg/optimized/subtitles.ll +++ b/bench/ffmpeg/optimized/subtitles.ll @@ -1276,24 +1276,24 @@ define range(i32 -2147483647, -2147483648) i32 @ff_smil_extract_next_text_chunk( br i1 %or.cond, label %.critedge, label %11, !llvm.loop !66 .critedge: ; preds = %16 - br i1 %9, label %18, label %19 + br i1 %9, label %19, label %20 -18: ; preds = %.critedge +19: ; preds = %.critedge tail call void @av_bprint_chars(ptr noundef %1, i8 noundef signext 62, i32 noundef 1) #11 store i8 0, ptr %2, align 1, !tbaa !19 - br label %19 + br label %20 -19: ; preds = %18, %.critedge - %20 = getelementptr i8, ptr %1, i64 8 - %.val = load i32, ptr %20, align 8, !tbaa !37 - %21 = getelementptr i8, ptr %1, i64 12 - %.val26 = load i32, ptr %21, align 4, !tbaa !39 +20: ; preds = %19, %.critedge + %21 = getelementptr i8, ptr %1, i64 8 + %.val = load i32, ptr %21, align 8, !tbaa !37 + %22 = getelementptr i8, ptr %1, i64 12 + %.val26 = load i32, ptr %22, align 4, !tbaa !39 %.not28 = icmp ult i32 %.val, %.val26 - %22 = select i1 %.not28, i32 %17, i32 -12 + %23 = select i1 %.not28, i32 %17, i32 -12 br label %.loopexit -.loopexit: ; preds = %11, %5, %19 - %.0 = phi i32 [ %22, %19 ], [ 0, %5 ], [ -1094995529, %11 ] +.loopexit: ; preds = %11, %5, %20 + %.0 = phi i32 [ %23, %19 ], [ 0, %5 ], [ -1094995529, %11 ] ret i32 %.0 } diff --git a/bench/gromacs/optimized/wall.ll b/bench/gromacs/optimized/wall.ll index 56ba7735cb0..3a7aaa9cff8 100644 --- a/bench/gromacs/optimized/wall.ll +++ b/bench/gromacs/optimized/wall.ll @@ -718,18 +718,18 @@ define noundef float @_Z8do_wallsRK10t_inputrecRK10t_forcerecPA3_KfN3gmx8ArrayRe %.not = icmp eq i32 %8, 0 %66 = icmp sgt i32 %7, 0 %.sroa.0182.0.copyload = load ptr, ptr %5, align 8 - %67 = fsub float 1.000000e+00, %11 - %68 = load i64, ptr %6, align 8 - %69 = inttoptr i64 %68 to ptr - %70 = load i64, ptr %9, align 8 - %71 = inttoptr i64 %70 to ptr - %72 = getelementptr inbounds nuw i8, ptr %0, i64 568 - %73 = getelementptr inbounds nuw i8, ptr %0, i64 564 - %74 = getelementptr inbounds nuw i8, ptr %1, i64 272 - %75 = load i64, ptr %12, align 8 - %76 = inttoptr i64 %75 to ptr - %77 = sitofp i32 %7 to double - %78 = getelementptr inbounds nuw i8, ptr %13, i64 672 + %68 = fsub float 1.000000e+00, %11 + %69 = load i64, ptr %6, align 8 + %70 = inttoptr i64 %69 to ptr + %71 = load i64, ptr %9, align 8 + %72 = inttoptr i64 %71 to ptr + %73 = getelementptr inbounds nuw i8, ptr %0, i64 568 + %74 = getelementptr inbounds nuw i8, ptr %0, i64 564 + %75 = getelementptr inbounds nuw i8, ptr %1, i64 272 + %76 = load i64, ptr %12, align 8 + %77 = inttoptr i64 %76 to ptr + %78 = sitofp i32 %7 to double + %79 = getelementptr inbounds nuw i8, ptr %13, i64 672 br i1 %66, label %.split.us219.preheader, label %.split .split.us219.preheader: ; preds = %._crit_edge @@ -745,7 +745,7 @@ define noundef float @_Z8do_wallsRK10t_inputrecRK10t_forcerecPA3_KfN3gmx8ArrayRe %.0159217.us = phi double [ %.us-phi213.us, %._crit_edge210.us ], [ 0.000000e+00, %.split.us219.preheader ] %.0161216.us = phi i32 [ %87, %._crit_edge210.us ], [ 0, %.split.us219.preheader ] %80 = icmp eq i32 %.0161216.us, 0 - %. = select i1 %80, float %67, float %11 + %. = select i1 %80, float %68, float %11 %81 = or i1 %.not, %80 %.sroa.0182.1.us = select i1 %81, ptr %3, ptr %.sroa.0182.0.copyload %.0162.us = select i1 %.not, float 1.000000e+00, float %. @@ -758,9 +758,9 @@ define noundef float @_Z8do_wallsRK10t_inputrecRK10t_forcerecPA3_KfN3gmx8ArrayRe %83 = sitofp i32 %82 to float %84 = tail call float @llvm.fmuladd.f32(float %83, float %.us-phi.us, float %.0155218.us) %.1.us = select i1 %.not, float %.0155218.us, float %84 - %85 = load double, ptr %78, align 8, !tbaa !261 - %86 = fadd double %85, %77 - store double %86, ptr %78, align 8, !tbaa !261 + %85 = load double, ptr %79, align 8, !tbaa !261 + %86 = fadd double %85, %78 + store double %86, ptr %79, align 8, !tbaa !261 %87 = add nuw nsw i32 %.0161216.us, 1 %exitcond269.not = icmp eq i32 %.0161216.us, %79 br i1 %exitcond269.not, label %.split225.us.loopexit, label %.split.us219, !llvm.loop !262 @@ -769,7 +769,7 @@ define noundef float @_Z8do_wallsRK10t_inputrecRK10t_forcerecPA3_KfN3gmx8ArrayRe %indvars.iv263 = phi i64 [ %indvars.iv.next264, %._crit_edge205.us.us ], [ 0, %.split.us219 ] %.1160209.us.us = phi double [ %.3.us.us, %._crit_edge205.us.us ], [ %.0159217.us, %.split.us219 ] %.0165207.us.us = phi float [ %.2167.us.us, %._crit_edge205.us.us ], [ 0.000000e+00, %.split.us219 ] - %88 = getelementptr inbounds nuw i16, ptr %69, i64 %indvars.iv263 + %88 = getelementptr inbounds nuw i16, ptr %70, i64 %indvars.iv263 %89 = load i16, ptr %88, align 2, !tbaa !263 %90 = getelementptr inbounds nuw i32, ptr %.sroa.0182.1.us, i64 %indvars.iv263 %91 = load i32, ptr %90, align 4, !tbaa !214 @@ -778,9 +778,9 @@ define noundef float @_Z8do_wallsRK10t_inputrecRK10t_forcerecPA3_KfN3gmx8ArrayRe %94 = add nuw nsw i32 %93, 1 %95 = mul i32 %94, %22 %invariant.op.us.us = sub i32 %95, %20 - %96 = getelementptr inbounds nuw %"class.gmx::BasicVector", ptr %71, i64 %indvars.iv263, i32 0, i64 2 - %97 = load i32, ptr %73, align 4 - %98 = load ptr, ptr %74, align 8 + %96 = getelementptr inbounds nuw %"class.gmx::BasicVector", ptr %72, i64 %indvars.iv263, i32 0, i64 2 + %97 = load i32, ptr %74, align 4 + %98 = load ptr, ptr %75, align 8 %99 = zext i16 %89 to i64 %100 = getelementptr inbounds nuw [3 x float], ptr %65, i64 %indvars.iv263, i64 2 br label %101 @@ -819,7 +819,7 @@ define noundef float @_Z8do_wallsRK10t_inputrecRK10t_forcerecPA3_KfN3gmx8ArrayRe %122 = load float, ptr %96, align 4, !tbaa !233 %123 = fsub float %64, %122 %.0157.us.us = select i1 %121, float %122, float %123 - %124 = load float, ptr %72, align 8, !tbaa !265 + %124 = load float, ptr %73, align 8, !tbaa !265 %125 = fcmp olt float %.0157.us.us, %124 %126 = fsub float %124, %.0157.us.us %.1158.us.us = select i1 %125, float %124, float %.0157.us.us @@ -982,7 +982,7 @@ _ZL10tableForcefRK12t_forcetableffPfS2_.exit.us.us: ; preds = %193, %182 %254 = icmp eq i64 %indvars.iv258, 1 %255 = fneg float %.0189.us.us %.1190.us.us = select i1 %254, float %255, float %.0189.us.us - %256 = getelementptr inbounds float, ptr %76, i64 %116 + %256 = getelementptr inbounds float, ptr %77, i64 %116 %257 = load float, ptr %256, align 4, !tbaa !233 %258 = tail call float @llvm.fmuladd.f32(float %.0162.us, float %.1188.us.us, float %257) store float %258, ptr %256, align 4, !tbaa !233 @@ -1005,7 +1005,7 @@ _ZL10tableForcefRK12t_forcetableffPfS2_.exit.us.us: ; preds = %193, %182 br i1 %exitcond267.not, label %._crit_edge210.us, label %.preheader.us.us, !llvm.loop !268 .split: ; preds = %._crit_edge - %.promoted = load double, ptr %78, align 8, !tbaa !261 + %.promoted = load double, ptr %79, align 8, !tbaa !261 br i1 %.not, label %.split225.loopexit, label %.split.split .lr.ph.split: ; preds = %.lr.ph, %.lr.ph.split @@ -1020,13 +1020,13 @@ _ZL10tableForcefRK12t_forcetableffPfS2_.exit.us.us: ; preds = %193, %182 br i1 %exitcond254.not, label %._crit_edge, label %.lr.ph.split, !llvm.loop !258 .split225.loopexit: ; preds = %.split - %267 = fadd double %.promoted, %77 + %267 = fadd double %.promoted, %78 br label %.split225 .split225: ; preds = %.split.split, %.split225.loopexit %.us-phi = phi double [ %267, %.split225.loopexit ], [ %278, %.split.split ] %.us-phi236 = phi float [ 0.000000e+00, %.split225.loopexit ], [ %277, %.split.split ] - store double %.us-phi, ptr %78, align 8, !tbaa !261 + store double %.us-phi, ptr %79, align 8, !tbaa !261 br label %.split225.us .split225.us.loopexit: ; preds = %._crit_edge210.us @@ -1050,14 +1050,14 @@ _ZL10tableForcefRK12t_forcetableffPfS2_.exit.us.us: ; preds = %193, %182 %275 = select i1 %274, i32 -1, i32 1 %276 = sitofp i32 %275 to float %277 = tail call float @llvm.fmuladd.f32(float %276, float 0.000000e+00, float %.0155218) - %278 = fadd double %273, %77 + %278 = fadd double %273, %78 %279 = add nuw nsw i32 %.0161216, 1 %exitcond255.not = icmp eq i32 %279, 2 br i1 %exitcond255.not, label %.split225, label %.split.split, !llvm.loop !262 .split.us: ; preds = %120 %280 = trunc nuw nsw i64 %indvars.iv263 to i32 - tail call fastcc void @_ZL10wall_erroriN3gmx8ArrayRefIKNS_11BasicVectorIfEEEEf(i32 noundef %280, ptr nonnull %71, float noundef %.1158.us.us) #21 + tail call fastcc void @_ZL10wall_erroriN3gmx8ArrayRefIKNS_11BasicVectorIfEEEEf(i32 noundef %280, ptr nonnull %72, float noundef %.1158.us.us) #21 unreachable .preheader.i: ; preds = %.split225.us diff --git a/bench/hdf5/optimized/H5Tbit.ll b/bench/hdf5/optimized/H5Tbit.ll index e4511152424..82cf07555db 100644 --- a/bench/hdf5/optimized/H5Tbit.ll +++ b/bench/hdf5/optimized/H5Tbit.ll @@ -707,58 +707,58 @@ define i64 @H5T__bit_find(ptr noundef readonly captures(none) %0, i64 noundef %1 12: ; preds = %5 switch i32 %3, label %.loopexit [ i32 0, label %13 - i32 1, label %72 + i32 1, label %71 ] 13: ; preds = %12 %14 = lshr i64 %1, 3 %15 = and i64 %1, 7 %.not109 = icmp eq i64 %15, 0 - br i1 %.not109, label %33, label %.preheader114 + br i1 %.not109, label %33, label %.preheader113 -.preheader114: ; preds = %13 - %.not150 = icmp eq i64 %2, 0 - br i1 %.not150, label %._crit_edge139, label %.lr.ph138 +.preheader113: ; preds = %13 + %.not149 = icmp eq i64 %2, 0 + br i1 %.not149, label %._crit_edge138, label %.lr.ph137 -.lr.ph138: ; preds = %.preheader114 +.lr.ph137: ; preds = %.preheader113 %16 = getelementptr inbounds nuw i8, ptr %0, i64 %14 %17 = load i8, ptr %16, align 1, !tbaa !10 %18 = zext i8 %17 to i32 br label %19 -19: ; preds = %.lr.ph138, %26 - %.091137 = phi i64 [ %15, %.lr.ph138 ], [ %27, %26 ] - %.199136 = phi i64 [ %2, %.lr.ph138 ], [ %28, %26 ] - %20 = trunc nuw nsw i64 %.091137 to i32 +19: ; preds = %.lr.ph137, %26 + %.091136 = phi i64 [ %15, %.lr.ph138 ], [ %27, %26 ] + %.199135 = phi i64 [ %2, %.lr.ph138 ], [ %28, %26 ] + %20 = trunc nuw nsw i64 %.091136 to i32 %21 = lshr i32 %18, %20 %22 = trunc i32 %21 to i1 %23 = xor i1 %4, %22 br i1 %23, label %26, label %24 24: ; preds = %19 - %25 = sub nsw i64 %.091137, %15 + %25 = sub nsw i64 %.091136, %15 br label %.loopexit 26: ; preds = %19 - %27 = add nuw nsw i64 %.091137, 1 - %28 = add i64 %.199136, -1 - %29 = icmp samesign ult i64 %.091137, 7 + %27 = add nuw nsw i64 %.091136, 1 + %28 = add i64 %.199135, -1 + %29 = icmp samesign ult i64 %.091136, 7 %30 = icmp ne i64 %28, 0 %31 = select i1 %29, i1 %30, i1 false - br i1 %31, label %19, label %._crit_edge139, !llvm.loop !23 + br i1 %31, label %19, label %._crit_edge138, !llvm.loop !23 -._crit_edge139: ; preds = %26, %.preheader114 +._crit_edge138: ; preds = %26, %.preheader113 %.199.lcssa = phi i64 [ 0, %.preheader114 ], [ %28, %26 ] %32 = add nuw nsw i64 %14, 1 br label %33 -33: ; preds = %._crit_edge139, %13 +33: ; preds = %._crit_edge138, %13 %.098 = phi i64 [ %.199.lcssa, %._crit_edge139 ], [ %2, %13 ] %.095 = phi i64 [ %32, %._crit_edge139 ], [ %14, %13 ] %34 = icmp ugt i64 %.098, 7 - br i1 %34, label %.lr.ph145, label %.preheader + br i1 %34, label %.lr.ph144, label %.preheader -.lr.ph145: ; preds = %33 +.lr.ph144: ; preds = %33 %not.111 = xor i1 %4, true %35 = sext i1 %not.111 to i8 %36 = add i64 %.098, -8 @@ -767,22 +767,22 @@ define i64 @H5T__bit_find(ptr noundef readonly captures(none) %0, i64 noundef %1 %39 = add nuw nsw i64 %38, 1 br label %43 -.preheader: ; preds = %.loopexit113, %33 - %.2100.lcssa = phi i64 [ %.098, %33 ], [ %58, %.loopexit113 ] +.preheader: ; preds = %.loopexit112, %33 + %.2100.lcssa = phi i64 [ %.098, %33 ], [ %57, %.loopexit113 ] %.196.lcssa = phi i64 [ %.095, %33 ], [ %39, %.loopexit113 ] - %.not151 = icmp eq i64 %.2100.lcssa, 0 - br i1 %.not151, label %.loopexit, label %.lr.ph149 + %.not150 = icmp eq i64 %.2100.lcssa, 0 + br i1 %.not150, label %.loopexit, label %.lr.ph148 -.lr.ph149: ; preds = %.preheader +.lr.ph148: ; preds = %.preheader %40 = getelementptr inbounds nuw i8, ptr %0, i64 %.196.lcssa %41 = load i8, ptr %40, align 1, !tbaa !10 %42 = zext i8 %41 to i32 - br label %61 + br label %60 -43: ; preds = %.lr.ph145, %.loopexit113 - %.196143 = phi i64 [ %.095, %.lr.ph145 ], [ %59, %.loopexit113 ] - %.2100142 = phi i64 [ %.098, %.lr.ph145 ], [ %58, %.loopexit113 ] - %44 = getelementptr inbounds i8, ptr %0, i64 %.196143 +43: ; preds = %.lr.ph144, %.loopexit112 + %.196142 = phi i64 [ %.095, %.lr.ph145 ], [ %58, %.loopexit113 ] + %.2100141 = phi i64 [ %.098, %.lr.ph145 ], [ %57, %.loopexit113 ] + %44 = getelementptr inbounds i8, ptr %0, i64 %.196142 %45 = load i8, ptr %44, align 1, !tbaa !10 %.not110 = icmp eq i8 %45, %35 br i1 %.not110, label %.loopexit113, label %.preheader112 @@ -805,102 +805,102 @@ define i64 @H5T__bit_find(ptr noundef readonly captures(none) %0, i64 noundef %1 %55 = add i64 %54, %.092141 br label %.loopexit -56: ; preds = %47 - %57 = add nuw nsw i64 %.092141, 1 - %exitcond.not = icmp eq i64 %57, 8 - br i1 %exitcond.not, label %.loopexit113, label %47, !llvm.loop !24 - -.loopexit113: ; preds = %56, %43 - %58 = add i64 %.2100142, -8 - %59 = add nuw nsw i64 %.196143, 1 - %60 = icmp ugt i64 %58, 7 - br i1 %60, label %43, label %.preheader, !llvm.loop !25 - -61: ; preds = %.lr.ph149, %70 - %.193148 = phi i64 [ 0, %.lr.ph149 ], [ %71, %70 ] - %62 = trunc i64 %.193148 to i32 - %63 = lshr i32 %42, %62 - %64 = trunc i32 %63 to i1 - %65 = xor i1 %4, %64 - br i1 %65, label %70, label %66 - -66: ; preds = %61 - %67 = shl nsw i64 %.196.lcssa, 3 - %68 = sub i64 %67, %1 - %69 = add i64 %68, %.193148 +55: ; preds = %47 + %56 = add nuw nsw i64 %.092141, 1 + %exitcond.not = icmp eq i64 %56, 8 + br i1 %exitcond.not, label %.loopexit112, label %47, !llvm.loop !24 + +.loopexit112: ; preds = %55, %43 + %57 = add i64 %.2100141, -8 + %58 = add nuw nsw i64 %.196142, 1 + %59 = icmp ugt i64 %57, 7 + br i1 %59, label %43, label %.preheader, !llvm.loop !25 + +60: ; preds = %.lr.ph148, %69 + %.193147 = phi i64 [ 0, %.lr.ph149 ], [ %70, %70 ] + %61 = trunc i64 %.193147 to i32 + %62 = lshr i32 %42, %61 + %63 = trunc i32 %62 to i1 + %64 = xor i1 %4, %63 + br i1 %64, label %69, label %65 + +65: ; preds = %60 + %66 = shl nsw i64 %.196.lcssa, 3 + %67 = sub i64 %66, %1 + %68 = add i64 %67, %.193147 br label %.loopexit -70: ; preds = %61 - %71 = add nuw i64 %.193148, 1 - %exitcond167.not = icmp eq i64 %71, %.2100.lcssa - br i1 %exitcond167.not, label %.loopexit, label %61, !llvm.loop !26 - -72: ; preds = %12 - %73 = add i64 %2, %1 - %74 = add i64 %73, -1 - %75 = lshr i64 %74, 3 - %76 = and i64 %1, 7 - %77 = sub nuw nsw i64 8, %76 - %78 = icmp ule i64 %2, %77 - %79 = and i64 %73, 7 - %.not = icmp eq i64 %79, 0 - %or.cond = or i1 %78, %.not - br i1 %or.cond, label %97, label %.preheader118 - -.preheader118: ; preds = %72 - %80 = getelementptr inbounds nuw i8, ptr %0, i64 %75 - %81 = load i8, ptr %80, align 1, !tbaa !10 - %82 = zext i8 %81 to i32 - %83 = sub i64 %2, %79 - br label %84 - -84: ; preds = %.preheader118, %94 - %.1131 = phi i64 [ %79, %.preheader118 ], [ %85, %94 ] - %85 = add nsw i64 %.1131, -1 - %86 = trunc nuw nsw i64 %85 to i32 - %87 = lshr i32 %82, %86 - %88 = trunc i32 %87 to i1 - %89 = xor i1 %4, %88 - br i1 %89, label %94, label %90 - -90: ; preds = %84 - %91 = and i64 %74, -8 - %92 = sub i64 %91, %1 - %93 = add i64 %92, %85 +69: ; preds = %60 + %70 = add nuw i64 %.193147, 1 + %exitcond166.not = icmp eq i64 %70, %.2100.lcssa + br i1 %exitcond166.not, label %.loopexit, label %60, !llvm.loop !26 + +71: ; preds = %12 + %72 = add i64 %2, %1 + %73 = add i64 %72, -1 + %74 = lshr i64 %73, 3 + %75 = and i64 %1, 7 + %76 = sub nuw nsw i64 8, %75 + %77 = icmp ule i64 %2, %76 + %78 = and i64 %72, 7 + %.not = icmp eq i64 %78, 0 + %or.cond = or i1 %77, %.not + br i1 %or.cond, label %96, label %.preheader117 + +.preheader117: ; preds = %71 + %79 = getelementptr inbounds nuw i8, ptr %0, i64 %74 + %80 = load i8, ptr %79, align 1, !tbaa !10 + %81 = zext i8 %80 to i32 + %82 = sub i64 %2, %78 + br label %83 + +83: ; preds = %.preheader117, %93 + %.1130 = phi i64 [ %78, %.preheader118 ], [ %84, %94 ] + %84 = add nsw i64 %.1130, -1 + %85 = trunc nuw nsw i64 %84 to i32 + %86 = lshr i32 %81, %85 + %87 = trunc i32 %86 to i1 + %88 = xor i1 %4, %87 + br i1 %88, label %93, label %89 + +89: ; preds = %83 + %90 = and i64 %73, -8 + %91 = sub i64 %90, %1 + %92 = add i64 %91, %84 br label %.loopexit -94: ; preds = %84 - %.not106 = icmp eq i64 %85, 0 - br i1 %.not106, label %95, label %84, !llvm.loop !27 +93: ; preds = %83 + %.not106 = icmp eq i64 %84, 0 + br i1 %.not106, label %94, label %83, !llvm.loop !27 -95: ; preds = %94 - %96 = add nsw i64 %75, -1 - br label %97 +94: ; preds = %93 + %95 = add nsw i64 %74, -1 + br label %96 -97: ; preds = %95, %72 - %.3101 = phi i64 [ %83, %95 ], [ %2, %72 ] - %.297 = phi i64 [ %96, %95 ], [ %75, %72 ] - %98 = icmp ugt i64 %.3101, 7 - br i1 %98, label %.lr.ph, label %._crit_edge +96: ; preds = %94, %71 + %.3101 = phi i64 [ %82, %95 ], [ %2, %72 ] + %.297 = phi i64 [ %95, %95 ], [ %74, %72 ] + %97 = icmp ugt i64 %.3101, 7 + br i1 %97, label %.lr.ph, label %._crit_edge -.lr.ph: ; preds = %97 +.lr.ph: ; preds = %96 %not. = xor i1 %4, true %99 = sext i1 %not. to i8 br label %100 -100: ; preds = %.lr.ph, %.loopexit117 - %.3134 = phi i64 [ %.297, %.lr.ph ], [ %116, %.loopexit117 ] - %.5133 = phi i64 [ %.3101, %.lr.ph ], [ %115, %.loopexit117 ] +100: ; preds = %.lr.ph, %.loopexit116 + %.5132 = phi i64 [ %.297, %.lr.ph ], [ %116, %.loopexit117 ] + %.5133 = phi i64 [ %.3101, %.lr.ph ], [ %113, %.loopexit117 ] %101 = getelementptr inbounds i8, ptr %0, i64 %.3134 %102 = load i8, ptr %101, align 1, !tbaa !10 %.not108 = icmp eq i8 %102, %99 - br i1 %.not108, label %.loopexit117, label %.preheader116 + br i1 %.not108, label %.loopexit116, label %.preheader115 -.preheader116: ; preds = %100 +.preheader115: ; preds = %100 %103 = zext i8 %102 to i32 br label %104 -104: ; preds = %.preheader116, %113 +104:; preds = %.preheader116, %113 %.294132 = phi i64 [ 7, %.preheader116 ], [ %114, %113 ] %105 = trunc i64 %.294132 to i32 %106 = lshr i32 %103, %105 @@ -914,51 +914,51 @@ define i64 @H5T__bit_find(ptr noundef readonly captures(none) %0, i64 noundef %1 %112 = add i64 %111, %.294132 br label %.loopexit -113: ; preds = %104 - %114 = add nsw i64 %.294132, -1 - %.not168 = icmp eq i64 %.294132, 0 - br i1 %.not168, label %.loopexit117, label %104, !llvm.loop !28 +111: ; preds = %104 + %112 = add nsw i64 %.294132, -1 + %.not167 = icmp eq i64 %.294132, 0 + br i1 %.not167, label %.loopexit116, label %104, !llvm.loop !28 -.loopexit117: ; preds = %113, %100 - %115 = add i64 %.5133, -8 - %116 = add nsw i64 %.3134, -1 - %117 = icmp ugt i64 %115, 7 - br i1 %117, label %100, label %._crit_edge, !llvm.loop !29 +.loopexit116: ; preds = %111, %100 + %113 = add i64 %.5133, -8 + %114 = add nsw i64 %.3134, -1 + %115 = icmp ugt i64 %113, 7 + br i1 %115, label %100, label %._crit_edge, !llvm.loop !29 -._crit_edge: ; preds = %.loopexit117, %97 - %.5.lcssa = phi i64 [ %.3101, %97 ], [ %115, %.loopexit117 ] - %.3.lcssa = phi i64 [ %.297, %97 ], [ %116, %.loopexit117 ] +._crit_edge: ; preds = %.loopexit116, %96 + %.5.lcssa = phi i64 [ %.3101, %97 ], [ %113, %.loopexit117 ] + %.3.lcssa = phi i64 [ %.297, %97 ], [ %114, %.loopexit117 ] %.not107 = icmp eq i64 %.5.lcssa, 0 - br i1 %.not107, label %.loopexit, label %118 - -118: ; preds = %._crit_edge - %119 = add nuw nsw i64 %.5.lcssa, %76 - %120 = getelementptr inbounds i8, ptr %0, i64 %.3.lcssa - %121 = load i8, ptr %120, align 1, !tbaa !10 - %122 = zext i8 %121 to i32 - br label %123 - -123: ; preds = %125, %118 - %.2 = phi i64 [ %119, %118 ], [ %126, %125 ] - %124 = icmp ugt i64 %.2, %76 - br i1 %124, label %125, label %.loopexit - -125: ; preds = %123 - %126 = add nsw i64 %.2, -1 - %127 = trunc nuw nsw i64 %126 to i32 - %128 = lshr i32 %122, %127 - %129 = trunc i32 %128 to i1 - %130 = xor i1 %4, %129 - br i1 %130, label %123, label %131, !llvm.loop !30 - -131: ; preds = %125 - %132 = shl nsw i64 %.3.lcssa, 3 - %133 = sub i64 %132, %1 - %134 = add i64 %133, %126 + br i1 %.not107, label %.loopexit, label %116 + +116: ; preds = %._crit_edge + %117 = add nuw nsw i64 %.5.lcssa, %75 + %118 = getelementptr inbounds i8, ptr %0, i64 %.3.lcssa + %119 = load i8, ptr %118, align 1, !tbaa !10 + %120 = zext i8 %119 to i32 + br label %121 + +121: ; preds = %123, %116 + %.2 = phi i64 [ %117, %118 ], [ %124, %125 ] + %122 = icmp ugt i64 %.2, %75 + br i1 %122, label %123, label %.loopexit + +123: ; preds = %121 + %124 = add nsw i64 %.2, -1 + %125 = trunc nuw nsw i64 %124 to i32 + %126 = lshr i32 %120, %125 + %127 = trunc i32 %126 to i1 + %128 = xor i1 %4, %127 + br i1 %128, label %121, label %129, !llvm.loop !30 + +129: ; preds = %123 + %130 = shl nsw i64 %.3.lcssa, 3 + %131 = sub i64 %130, %1 + %132 = add i64 %131, %124 br label %.loopexit -.loopexit: ; preds = %123, %70, %.preheader, %24, %52, %66, %90, %109, %131, %12, %._crit_edge, %5 - %.0 = phi i64 [ -1, %12 ], [ %25, %24 ], [ %55, %52 ], [ %69, %66 ], [ %93, %90 ], [ %112, %109 ], [ %134, %131 ], [ -1, %._crit_edge ], [ -1, %5 ], [ -1, %.preheader ], [ -1, %70 ], [ -1, %123 ] +.loopexit: ; preds = %121, %69, %.preheader, %24, %52, %65, %89, %109, %129, %12, %._crit_edge, %5 + %.0 = phi i64 [ -1, %12 ], [ %25, %24 ], [ %55, %52 ], [ %68, %66 ], [ %92, %90 ], [ %112, %109 ], [ %132, %131 ], [ -1, %._crit_edge ], [ -1, %5 ], [ -1, %.preheader ], [ -1, %70 ], [ -1, %123 ] ret i64 %.0 } diff --git a/bench/icu/optimized/ucnv_lmb.ll b/bench/icu/optimized/ucnv_lmb.ll index 9fc7fe03694..af74b8c5867 100644 --- a/bench/icu/optimized/ucnv_lmb.ll +++ b/bench/icu/optimized/ucnv_lmb.ll @@ -335,9 +335,9 @@ define internal void @_ZL17_LMBCSFromUnicodeP25UConverterFromUnicodeArgsP10UErro %20 = load ptr, ptr %18, align 8, !tbaa !36 %21 = load ptr, ptr %19, align 8, !tbaa !37 %22 = icmp ult ptr %20, %21 - br i1 %22, label %.lr.ph454, label %.critedge + br i1 %22, label %.lr.ph453, label %.critedge -.lr.ph454: ; preds = %2 +.lr.ph453: ; preds = %2 %23 = getelementptr inbounds nuw i8, ptr %17, i64 161 %24 = getelementptr inbounds nuw i8, ptr %0, i64 32 %25 = getelementptr inbounds nuw i8, ptr %0, i64 40 @@ -349,10 +349,10 @@ define internal void @_ZL17_LMBCSFromUnicodeP25UConverterFromUnicodeArgsP10UErro %31 = getelementptr inbounds nuw i8, ptr %0, i64 48 br label %32 -32: ; preds = %.lr.ph454, %.critedge75.thread +32: ; preds = %.lr.ph453, %.critedge75.thread %33 = phi ptr [ %20, %.lr.ph454 ], [ %568, %.critedge75.thread ] - %.0185453 = phi i32 [ 0, %.lr.ph454 ], [ %567, %.critedge75.thread ] - %.0356452 = phi i8 [ 0, %.lr.ph454 ], [ %.1357, %.critedge75.thread ] + %.0185452 = phi i32 [ 0, %.lr.ph454 ], [ %567, %.critedge75.thread ] + %.0356451 = phi i8 [ 0, %.lr.ph454 ], [ %.1357, %.critedge75.thread ] %34 = load i32, ptr %1, align 4, !tbaa !16 %35 = icmp slt i32 %34, 1 br i1 %35, label %36, label %.critedge @@ -388,7 +388,7 @@ switch.early.test: ; preds = %41 i8 -89, label %.thread ] -.thread460: ; preds = %switch.early.test +.thread458: ; preds = %switch.early.test store i8 1, ptr %23, align 1, !tbaa !38 %44 = add nsw i16 %.fr438, -128 br label %switch.early.test224 @@ -407,7 +407,7 @@ switch.early.test: ; preds = %41 store i8 %48, ptr %12, align 1, !tbaa !42 br label %.thread432 -switch.early.test224: ; preds = %.thread460, %.thread, %46 +switch.early.test224: ; preds = %.thread458, %.thread, %46 %49 = phi i16 [ %45, %.thread ], [ %47, %46 ], [ %44, %.thread460 ] switch i16 %.fr438, label %switch.early.test225 [ i16 25, label %50 @@ -608,14 +608,14 @@ _ZL17FindLMBCSUniRangeDs.exit.thread: ; preds = %56, %_ZL17FindLMBCS br label %_ZL21LMBCSConversionWorkerP19UConverterDataLMBCShPhPDsS1_Pa.exit _ZL21LMBCSConversionWorkerP19UConverterDataLMBCShPhPDsS1_Pa.exit: ; preds = %99, %109, %132 - %.10366 = phi i8 [ %59, %109 ], [ %59, %132 ], [ %.0356452, %99 ] + %.10366 = phi i8 [ %59, %109 ], [ %59, %132 ], [ %.0356451, %99 ] %.0.i237 = phi i32 [ 0, %109 ], [ %136, %132 ], [ 0, %99 ] call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #8 br label %137 137: ; preds = %82, %_ZL21LMBCSConversionWorkerP19UConverterDataLMBCShPhPDsS1_Pa.exit, %_ZL17FindLMBCSUniRangeDs.exit.thread %.06.i373 = phi i8 [ %59, %_ZL21LMBCSConversionWorkerP19UConverterDataLMBCShPhPDsS1_Pa.exit ], [ 20, %_ZL17FindLMBCSUniRangeDs.exit.thread ], [ 15, %82 ] - %.2358 = phi i8 [ %.10366, %_ZL21LMBCSConversionWorkerP19UConverterDataLMBCShPhPDsS1_Pa.exit ], [ %.0356452, %_ZL17FindLMBCSUniRangeDs.exit.thread ], [ %.0356452, %82 ] + %.2358 = phi i8 [ %.10366, %_ZL21LMBCSConversionWorkerP19UConverterDataLMBCShPhPDsS1_Pa.exit ], [ %.0356451, %_ZL17FindLMBCSUniRangeDs.exit.thread ], [ %.0356451, %82 ] %.2188 = phi i32 [ %.0.i237, %_ZL21LMBCSConversionWorkerP19UConverterDataLMBCShPhPDsS1_Pa.exit ], [ %69, %_ZL17FindLMBCSUniRangeDs.exit.thread ], [ %85, %82 ] %.1 = phi ptr [ %.0184371, %_ZL21LMBCSConversionWorkerP19UConverterDataLMBCShPhPDsS1_Pa.exit ], [ %66, %_ZL17FindLMBCSUniRangeDs.exit.thread ], [ %.2, %82 ] %.not210 = icmp eq i32 %.2188, 0 @@ -623,7 +623,7 @@ _ZL21LMBCSConversionWorkerP19UConverterDataLMBCShPhPDsS1_Pa.exit: ; preds = %99, .thread376: ; preds = %86, %137 %.1384 = phi ptr [ %.1, %137 ], [ %.0184371, %86 ] - %.2358383 = phi i8 [ %.2358, %137 ], [ %.0356452, %86 ] + %.2358383 = phi i8 [ %.2358, %137 ], [ %.0356451, %86 ] %.06.i373382 = phi i8 [ %.06.i373, %137 ], [ %59, %86 ] call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(20) %13, i8 0, i64 20, i1 false) %138 = load i8, ptr %28, align 8, !tbaa !48 @@ -955,7 +955,7 @@ _ZL21LMBCSConversionWorkerP19UConverterDataLMBCShPhPDsS1_Pa.exit273: ; preds = % %288 = getelementptr inbounds nuw i8, ptr %.1384, i64 1 store i8 %146, ptr %.1384, align 1, !tbaa !42 %289 = icmp eq i32 %278, 1 - br i1 %289, label %290, label %.thread462 + br i1 %289, label %290, label %.thread460 290: ; preds = %287 %291 = getelementptr inbounds nuw i8, ptr %.1384, i64 2 @@ -969,10 +969,10 @@ _ZL21LMBCSConversionWorkerP19UConverterDataLMBCShPhPDsS1_Pa.exit273: ; preds = % %295 = and i32 %283, %294 %296 = icmp eq i32 %295, 0 %or.cond5.i279 = select i1 %293, i1 %296, i1 false - br i1 %or.cond5.i279, label %_ZL21LMBCSConversionWorkerP19UConverterDataLMBCShPhPDsS1_Pa.exit286, label %.thread462 + br i1 %or.cond5.i279, label %_ZL21LMBCSConversionWorkerP19UConverterDataLMBCShPhPDsS1_Pa.exit286, label %.thread460 -.thread462: ; preds = %287, %292 - %.034.i278465 = phi ptr [ %.034.i278, %292 ], [ %288, %287 ] +.thread460: ; preds = %287, %292 + %.034.i278463 = phi ptr [ %.034.i278, %292 ], [ %288, %287 ] switch i32 %278, label %314 [ i32 4, label %297 i32 3, label %301 @@ -980,15 +980,15 @@ _ZL21LMBCSConversionWorkerP19UConverterDataLMBCShPhPDsS1_Pa.exit273: ; preds = % i32 1, label %310 ] -297: ; preds = %.thread462 +297: ; preds = %.thread460 %298 = lshr i32 %283, 24 %299 = trunc nuw i32 %298 to i8 - %300 = getelementptr inbounds nuw i8, ptr %.034.i278465, i64 1 - store i8 %299, ptr %.034.i278465, align 1, !tbaa !42 + %300 = getelementptr inbounds nuw i8, ptr %.034.i278463, i64 1 + store i8 %299, ptr %.034.i278463, align 1, !tbaa !42 br label %301 -301: ; preds = %297, %.thread462 - %.1.i284 = phi ptr [ %300, %297 ], [ %.034.i278465, %.thread462 ] +301: ; preds = %297, %.thread460 + %.1.i284 = phi ptr [ %300, %297 ], [ %.034.i278463, %.thread462 ] %302 = lshr i32 %283, 16 %303 = trunc i32 %302 to i8 %304 = getelementptr inbounds nuw i8, ptr %.1.i284, i64 1 @@ -996,9 +996,9 @@ _ZL21LMBCSConversionWorkerP19UConverterDataLMBCShPhPDsS1_Pa.exit273: ; preds = % %.pre.i285 = load i32, ptr %7, align 4, !tbaa !32 br label %305 -305: ; preds = %301, %.thread462 +305: ; preds = %301, %.thread460 %306 = phi i32 [ %.pre.i285, %301 ], [ %283, %.thread462 ] - %.2.i282 = phi ptr [ %304, %301 ], [ %.034.i278465, %.thread462 ] + %.2.i282 = phi ptr [ %304, %301 ], [ %.034.i278463, %.thread462 ] %307 = lshr i32 %306, 8 %308 = trunc i32 %307 to i8 %309 = getelementptr inbounds nuw i8, ptr %.2.i282, i64 1 @@ -1006,16 +1006,16 @@ _ZL21LMBCSConversionWorkerP19UConverterDataLMBCShPhPDsS1_Pa.exit273: ; preds = % %.pre1.i283 = load i32, ptr %7, align 4, !tbaa !32 br label %310 -310: ; preds = %305, %.thread462 +310: ; preds = %305, %.thread460 %311 = phi i32 [ %.pre1.i283, %305 ], [ %283, %.thread462 ] - %.3.i280 = phi ptr [ %309, %305 ], [ %.034.i278465, %.thread462 ] + %.3.i280 = phi ptr [ %309, %305 ], [ %.034.i278463, %.thread462 ] %312 = trunc i32 %311 to i8 %313 = getelementptr inbounds nuw i8, ptr %.3.i280, i64 1 store i8 %312, ptr %.3.i280, align 1, !tbaa !42 br label %314 -314: ; preds = %310, %.thread462 - %.4.i281 = phi ptr [ %.034.i278465, %.thread462 ], [ %313, %310 ] +314: ; preds = %310, %.thread460 + %.4.i281 = phi ptr [ %.034.i278463, %.thread462 ], [ %313, %310 ] %315 = ptrtoint ptr %.4.i281 to i64 %316 = ptrtoint ptr %.1384 to i64 %317 = sub i64 %315, %316 @@ -1289,133 +1289,133 @@ _ZL21LMBCSConversionWorkerP19UConverterDataLMBCShPhPDsS1_Pa.exit312: ; preds = % %435 = select i1 %434, i64 1, i64 16 %436 = add i8 %.06.i373382, 127 %437 = icmp ult i8 %436, 2 - %spec.select228439 = select i1 %437, i64 19, i64 11 + %spec.select228 = select i1 %437, i64 19, i64 11 %438 = zext i16 %.fr438 to i32 %439 = getelementptr inbounds nuw i8, ptr %.1384, i64 1 %440 = getelementptr inbounds nuw i8, ptr %.1384, i64 2 %441 = ptrtoint ptr %.1384 to i64 br label %442 -442: ; preds = %.thread419, %491 - %indvars.iv = phi i64 [ %435, %.thread419 ], [ %indvars.iv.next, %491 ] - %.8364443 = phi i8 [ %.5361, %.thread419 ], [ %.9365, %491 ] - %443 = getelementptr inbounds nuw [20 x ptr], ptr %17, i64 0, i64 %indvars.iv +442: ; preds = %.thread419, %489 + %.0181443 = phi i64 [ %435, %.thread419 ], [ %490, %491 ] + %.8364442 = phi i8 [ %.5361, %.thread419 ], [ %.9365, %491 ] + %443 = getelementptr inbounds nuw [20 x ptr], ptr %17, i64 0, i64 %.0181443 %444 = load ptr, ptr %443, align 8, !tbaa !12 %.not218 = icmp eq ptr %444, null br i1 %.not218, label %491, label %445 445: ; preds = %442 - %446 = getelementptr inbounds nuw [20 x i8], ptr %13, i64 0, i64 %indvars.iv + %446 = getelementptr inbounds nuw [20 x i8], ptr %13, i64 0, i64 %.0181443 %447 = load i8, ptr %446, align 1, !tbaa !42 %.not219 = icmp eq i8 %447, 0 br i1 %.not219, label %448, label %491 448: ; preds = %445 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %4) #8 - %449 = call i32 @ucnv_MBCSFromUChar32_77(ptr noundef nonnull %444, i32 noundef %438, ptr noundef nonnull %4, i8 noundef signext 0) - %450 = icmp sgt i32 %449, 0 - br i1 %450, label %452, label %451 + %450 = call i32 @ucnv_MBCSFromUChar32_77(ptr noundef nonnull %444, i32 noundef %438, ptr noundef nonnull %4, i8 noundef signext 0) + %451 = icmp sgt i32 %450, 0 + br i1 %451, label %453, label %452 -451: ; preds = %448 +452: ; preds = %448 store i8 1, ptr %446, align 1, !tbaa !42 br label %_ZL21LMBCSConversionWorkerP19UConverterDataLMBCShPhPDsS1_Pa.exit325 -452: ; preds = %448 - %453 = load i32, ptr %4, align 4, !tbaa !32 - %454 = shl i32 %449, 3 - %455 = add i32 %454, -8 - %456 = load i8, ptr %28, align 8, !tbaa !48 - %457 = zext i8 %456 to i64 - %.not37.i315 = icmp eq i64 %indvars.iv, %457 +453: ; preds = %448 + %454 = load i32, ptr %4, align 4, !tbaa !32 + %455 = shl i32 %450, 3 + %456 = add i32 %455, -8 + %457 = load i8, ptr %28, align 8, !tbaa !48 + %457 = zext i8 %457 to i64 + %.not37.i315 = icmp eq i64 %.0181443, %457 br i1 %.not37.i315, label %463, label %458 -458: ; preds = %452 - %459 = trunc nuw nsw i64 %indvars.iv to i8 +458:; preds = %452 + %459 = trunc nuw nsw i64 %.0181443 to i8 store i8 %459, ptr %.1384, align 1, !tbaa !42 %460 = icmp eq i32 %449, 1 - %461 = icmp samesign ugt i64 %indvars.iv, 15 + %461 = icmp samesign ugt i64 %.0181443, 15 %or.cond.i316 = and i1 %461, %460 br i1 %or.cond.i316, label %462, label %463 -462: ; preds = %458 +462:; preds = %458 store i8 %459, ptr %439, align 1, !tbaa !42 br label %463 -463: ; preds = %462, %458, %452 +463:; preds = %462, %458, %452 %.034.i317 = phi ptr [ %440, %462 ], [ %439, %458 ], [ %.1384, %452 ] %464 = icmp eq i32 %449, 1 %465 = shl i32 224, %455 %466 = and i32 %453, %465 %467 = icmp eq i32 %466, 0 %or.cond5.i318 = select i1 %464, i1 %467, i1 false - %468 = trunc nuw nsw i64 %indvars.iv to i8 + %468 = trunc nuw nsw i64 %.0181443 to i8 br i1 %or.cond5.i318, label %_ZL21LMBCSConversionWorkerP19UConverterDataLMBCShPhPDsS1_Pa.exit325, label %469 -469: ; preds = %463 +469: ; preds = %463 switch i32 %449, label %487 [ - i32 4, label %470 + i32 4, label %468 i32 3, label %474 i32 2, label %478 i32 1, label %483 ] -470: ; preds = %469 - %471 = lshr i32 %453, 24 - %472 = trunc nuw i32 %471 to i8 - %473 = getelementptr inbounds nuw i8, ptr %.034.i317, i64 1 - store i8 %472, ptr %.034.i317, align 1, !tbaa !42 - br label %474 - -474: ; preds = %470, %469 - %.1.i323 = phi ptr [ %473, %470 ], [ %.034.i317, %469 ] - %475 = lshr i32 %453, 16 - %476 = trunc i32 %475 to i8 - %477 = getelementptr inbounds nuw i8, ptr %.1.i323, i64 1 - store i8 %476, ptr %.1.i323, align 1, !tbaa !42 +468: ; preds = %469 + %469 = lshr i32 %454, 24 + %470 = trunc nuw i32 %469 to i8 + %471 = getelementptr inbounds nuw i8, ptr %.034.i317, i64 1 + store i8 %470, ptr %.034.i317, align 1, !tbaa !42 + br label %472 + +472: ; preds = %468, %469 + %.1.i323 = phi ptr [ %471, %470 ], [ %.034.i317, %469 ] + %473 = lshr i32 %454, 16 + %474 = trunc i32 %473 to i8 + %475 = getelementptr inbounds nuw i8, ptr %.1.i323, i64 1 + store i8 %474, ptr %.1.i323, align 1, !tbaa !42 %.pre.i324 = load i32, ptr %4, align 4, !tbaa !32 - br label %478 - -478: ; preds = %474, %469 - %479 = phi i32 [ %.pre.i324, %474 ], [ %453, %469 ] - %.2.i321 = phi ptr [ %477, %474 ], [ %.034.i317, %469 ] - %480 = lshr i32 %479, 8 - %481 = trunc i32 %480 to i8 - %482 = getelementptr inbounds nuw i8, ptr %.2.i321, i64 1 - store i8 %481, ptr %.2.i321, align 1, !tbaa !42 + br label %476 + +476: ; preds = %472, %469 + %477 = phi i32 [ %.pre.i324, %474 ], [ %454, %469 ] + %.2.i321 = phi ptr [ %475, %474 ], [ %.034.i317, %469 ] + %478 = lshr i32 %477, 8 + %479 = trunc i32 %478 to i8 + %480 = getelementptr inbounds nuw i8, ptr %.2.i321, i64 1 + store i8 %479, ptr %.2.i321, align 1, !tbaa !42 %.pre1.i322 = load i32, ptr %4, align 4, !tbaa !32 - br label %483 - -483: ; preds = %478, %469 - %484 = phi i32 [ %.pre1.i322, %478 ], [ %453, %469 ] - %.3.i319 = phi ptr [ %482, %478 ], [ %.034.i317, %469 ] - %485 = trunc i32 %484 to i8 - %486 = getelementptr inbounds nuw i8, ptr %.3.i319, i64 1 - store i8 %485, ptr %.3.i319, align 1, !tbaa !42 - br label %487 - -487: ; preds = %483, %469 - %.4.i320 = phi ptr [ %.034.i317, %469 ], [ %486, %483 ] - %488 = ptrtoint ptr %.4.i320 to i64 - %489 = sub i64 %488, %441 - %490 = trunc i64 %489 to i32 + br label %481 + +481: ; preds = %476, %469 + %482 = phi i32 [ %.pre1.i322, %478 ], [ %454, %469 ] + %.3.i319 = phi ptr [ %480, %478 ], [ %.034.i317, %469 ] + %483 = trunc i32 %482 to i8 + %484 = getelementptr inbounds nuw i8, ptr %.3.i319, i64 1 + store i8 %483, ptr %.3.i319, align 1, !tbaa !42 + br label %485 + +485: ; preds = %481, %469 + %.4.i320 = phi ptr [ %.034.i317, %469 ], [ %484, %483 ] + %486 = ptrtoint ptr %.4.i320 to i64 + %487 = sub i64 %486, %441 + %488 = trunc i64 %487 to i32 br label %_ZL21LMBCSConversionWorkerP19UConverterDataLMBCShPhPDsS1_Pa.exit325 -_ZL21LMBCSConversionWorkerP19UConverterDataLMBCShPhPDsS1_Pa.exit325: ; preds = %451, %463, %487 - %.17 = phi i8 [ %468, %463 ], [ %468, %487 ], [ %.8364443, %451 ] - %.0.i313 = phi i32 [ 0, %463 ], [ %490, %487 ], [ 0, %451 ] +_ZL21LMBCSConversionWorkerP19UConverterDataLMBCShPhPDsS1_Pa.exit325: ; preds = %452, %463, %485 + %.17 = phi i8 [ %468, %463 ], [ %468, %487 ], [ %.8364442, %451 ] + %.0.i313 = phi i32 [ 0, %463 ], [ %488, %487 ], [ 0, %451 ] call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #8 - br label %491 + br label %489 -491: ; preds = %442, %445, %_ZL21LMBCSConversionWorkerP19UConverterDataLMBCShPhPDsS1_Pa.exit325 - %.9365 = phi i8 [ %.8364443, %442 ], [ %.17, %_ZL21LMBCSConversionWorkerP19UConverterDataLMBCShPhPDsS1_Pa.exit325 ], [ %.8364443, %445 ] +489: ; preds = %442, %445, %_ZL21LMBCSConversionWorkerP19UConverterDataLMBCShPhPDsS1_Pa.exit325 + %.9365 = phi i8 [ %.8364442, %442 ], [ %.17, %_ZL21LMBCSConversionWorkerP19UConverterDataLMBCShPhPDsS1_Pa.exit325 ], [ %.8364442, %445 ] %.10 = phi i32 [ 0, %442 ], [ %.0.i313, %_ZL21LMBCSConversionWorkerP19UConverterDataLMBCShPhPDsS1_Pa.exit325 ], [ 0, %445 ] - %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %492 = icmp samesign ugt i64 %spec.select228439, %indvars.iv + %490 = add nuw nsw i64 %.0181443, 1 + %492 = icmp samesign ugt i64 %spec.select228, %.0181443 %.not217 = icmp eq i32 %.10, 0 %493 = select i1 %492, i1 %.not217, i1 false br i1 %493, label %442, label %494, !llvm.loop !49 -494: ; preds = %491 +494: ; preds = %489 %or.cond73 = and i1 %434, %.not217 br i1 %or.cond73, label %495, label %528 @@ -1519,7 +1519,7 @@ _ZL21LMBCSConversionWorkerP19UConverterDataLMBCShPhPDsS1_Pa.exit335: ; preds = % br label %.thread432 .thread432: ; preds = %319, %219, %_ZL21LMBCSConversionWorkerP19UConverterDataLMBCShPhPDsS1_Pa.exit250, %433, %.thread437, %137, %529, %528, %switch.early.test225, %switch.early.test225, %switch.early.test225, %switch.early.test225, %switch.early.test225 - %.1357 = phi i8 [ %.7363, %529 ], [ %.7363, %528 ], [ %.2358, %137 ], [ %.0356452, %switch.early.test225 ], [ %.0356452, %switch.early.test225 ], [ %.0356452, %switch.early.test225 ], [ %.0356452, %switch.early.test225 ], [ %.0356452, %switch.early.test225 ], [ %.0356452, %.thread437 ], [ %.5361, %433 ], [ %.3359, %319 ], [ 0, %219 ], [ 1, %_ZL21LMBCSConversionWorkerP19UConverterDataLMBCShPhPDsS1_Pa.exit250 ] + %.1357 = phi i8 [ %.7363, %529 ], [ %.7363, %528 ], [ %.2358, %137 ], [ %.0356451, %switch.early.test225 ], [ %.0356451, %switch.early.test225 ], [ %.0356451, %switch.early.test225 ], [ %.0356451, %switch.early.test225 ], [ %.0356451, %switch.early.test225 ], [ %.0356451, %.thread437 ], [ %.5361, %433 ], [ %.3359, %319 ], [ 0, %219 ], [ 1, %_ZL21LMBCSConversionWorkerP19UConverterDataLMBCShPhPDsS1_Pa.exit250 ] %.1187 = phi i32 [ %537, %529 ], [ %.8, %528 ], [ %.2188, %137 ], [ 1, %switch.early.test225 ], [ 1, %switch.early.test225 ], [ 1, %switch.early.test225 ], [ 1, %switch.early.test225 ], [ 1, %switch.early.test225 ], [ 1, %.thread437 ], [ %.7, %433 ], [ %.4190, %319 ], [ %223, %219 ], [ %187, %_ZL21LMBCSConversionWorkerP19UConverterDataLMBCShPhPDsS1_Pa.exit250 ] %538 = load ptr, ptr %18, align 8, !tbaa !36 %539 = getelementptr inbounds nuw i8, ptr %538, i64 2 @@ -1531,15 +1531,15 @@ _ZL21LMBCSConversionWorkerP19UConverterDataLMBCShPhPDsS1_Pa.exit335: ; preds = % .lr.ph: ; preds = %.thread432, %552 %543 = phi ptr [ %553, %552 ], [ %540, %.thread432 ] - %.3447 = phi ptr [ %546, %552 ], [ %12, %.thread432 ] - %.12446 = phi i32 [ %544, %552 ], [ %.1187, %.thread432 ] - %544 = add nsw i32 %.12446, -1 - %.not221 = icmp eq i32 %.12446, 0 + %.3446 = phi ptr [ %546, %552 ], [ %12, %.thread432 ] + %.12445 = phi i32 [ %544, %552 ], [ %.1187, %.thread432 ] + %544 = add nsw i32 %.12445, -1 + %.not221 = icmp eq i32 %.12445, 0 br i1 %.not221, label %.critedge75.thread, label %545 545: ; preds = %.lr.ph - %546 = getelementptr inbounds nuw i8, ptr %.3447, i64 1 - %547 = load i8, ptr %.3447, align 1, !tbaa !42 + %546 = getelementptr inbounds nuw i8, ptr %.3446, i64 1 + %547 = load i8, ptr %.3446, align 1, !tbaa !42 %548 = getelementptr inbounds nuw i8, ptr %543, i64 1 store ptr %548, ptr %24, align 8, !tbaa !40 store i8 %547, ptr %543, align 1, !tbaa !42 @@ -1550,7 +1550,7 @@ _ZL21LMBCSConversionWorkerP19UConverterDataLMBCShPhPDsS1_Pa.exit335: ; preds = % 550: ; preds = %545 %551 = getelementptr inbounds nuw i8, ptr %549, i64 4 store ptr %551, ptr %31, align 8, !tbaa !50 - store i32 %.0185453, ptr %549, align 4, !tbaa !32 + store i32 %.0185452, ptr %549, align 4, !tbaa !32 br label %552 552: ; preds = %550, %545 @@ -1575,19 +1575,19 @@ _ZL21LMBCSConversionWorkerP19UConverterDataLMBCShPhPDsS1_Pa.exit335: ; preds = % br label %562 562: ; preds = %557, %562 - %.0451 = phi ptr [ %559, %557 ], [ %566, %562 ] - %.4450 = phi ptr [ %.3.lcssa, %557 ], [ %564, %562 ] - %.14449 = phi i32 [ %.12.lcssa, %557 ], [ %563, %562 ] - %563 = add nsw i32 %.14449, -1 - %564 = getelementptr inbounds nuw i8, ptr %.4450, i64 1 - %565 = load i8, ptr %.4450, align 1, !tbaa !42 - %566 = getelementptr inbounds nuw i8, ptr %.0451, i64 1 - store i8 %565, ptr %.0451, align 1, !tbaa !42 + %.0450 = phi ptr [ %559, %557 ], [ %566, %562 ] + %.4449 = phi ptr [ %.3.lcssa, %557 ], [ %564, %562 ] + %.14448 = phi i32 [ %.12.lcssa, %557 ], [ %563, %562 ] + %563 = add nsw i32 %.14448, -1 + %564 = getelementptr inbounds nuw i8, ptr %.4449, i64 1 + %565 = load i8, ptr %.4449, align 1, !tbaa !42 + %566 = getelementptr inbounds nuw i8, ptr %.0450, i64 1 + store i8 %565, ptr %.0450, align 1, !tbaa !42 %.not222 = icmp eq i32 %563, 0 br i1 %.not222, label %.critedge75.thread, label %562, !llvm.loop !53 .critedge75.thread: ; preds = %.lr.ph, %562, %.critedge75 - %567 = add nuw nsw i32 %.0185453, 1 + %567 = add nuw nsw i32 %.0185452, 1 store i8 %37, ptr %23, align 1, !tbaa !38 %568 = load ptr, ptr %18, align 8, !tbaa !36 %569 = load ptr, ptr %19, align 8, !tbaa !37 diff --git a/bench/icu/optimized/utrie_swap.ll b/bench/icu/optimized/utrie_swap.ll index 5062524c40e..1d6e6f665be 100644 --- a/bench/icu/optimized/utrie_swap.ll +++ b/bench/icu/optimized/utrie_swap.ll @@ -333,7 +333,7 @@ define range(i32 0, 4325387) i32 @ucptrie_swap_77(ptr noundef %0, ptr noundef %1 store i32 3, ptr %4, align 4, !tbaa !3 br label %.thread -55: ; preds = %50 +56: ; preds = %50 %56 = zext i16 %30 to i32 %57 = shl nuw nsw i32 %56, 1 %narrow = add nuw nsw i32 %57, 16 @@ -343,18 +343,18 @@ define range(i32 0, 4325387) i32 @ucptrie_swap_77(ptr noundef %0, ptr noundef %1 i32 2, label %62 ] -58: ; preds = %55 +58: ; preds = %56 %59 = shl nuw nsw i32 %42, 1 br label %62 -60: ; preds = %55 +60: ; preds = %56 %61 = shl nuw nsw i32 %42, 2 br label %62 -default.unreachable: ; preds = %64, %55 +default.unreachable: ; preds = %64, %56 unreachable -62: ; preds = %55, %60, %58 +62: ; preds = %56, %60, %58 %.pn = phi i32 [ %59, %58 ], [ %61, %60 ], [ %42, %55 ] %.095 = add nuw nsw i32 %narrow, %.pn br i1 %12, label %63, label %.thread diff --git a/bench/libquic/optimized/inflate.ll b/bench/libquic/optimized/inflate.ll index e49d20a9a7d..145dfaec940 100644 --- a/bench/libquic/optimized/inflate.ll +++ b/bench/libquic/optimized/inflate.ll @@ -3705,13 +3705,13 @@ define range(i32 -5, 1) i32 @MOZ_Z_inflateSync(ptr noundef captures(address_is_n %2 = alloca [4 x i8], align 1 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %2) #10 %3 = icmp eq ptr %0, null - br i1 %3, label %96, label %4 + br i1 %3, label %98, label %4 4: ; preds = %1 %5 = getelementptr inbounds nuw i8, ptr %0, i64 56 %6 = load ptr, ptr %5, align 8, !tbaa !3 %7 = icmp eq ptr %6, null - br i1 %7, label %96, label %8 + br i1 %7, label %98, label %8 8: ; preds = %4 %9 = getelementptr inbounds nuw i8, ptr %0, i64 8 @@ -3723,7 +3723,7 @@ define range(i32 -5, 1) i32 @MOZ_Z_inflateSync(ptr noundef captures(address_is_n %13 = getelementptr inbounds nuw i8, ptr %6, i64 80 %14 = load i32, ptr %13, align 8, !tbaa !24 %15 = icmp ult i32 %14, 8 - br i1 %15, label %96, label %16 + br i1 %15, label %98, label %16 16: ; preds = %12, %8 %17 = load i32, ptr %6, align 8, !tbaa !18 @@ -3733,7 +3733,7 @@ define range(i32 -5, 1) i32 @MOZ_Z_inflateSync(ptr noundef captures(address_is_n ._crit_edge62: ; preds = %16 %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %6, i64 132 %.pre63 = load i32, ptr %.phi.trans.insert, align 4, !tbaa !98 - br label %44 + br label %45 18: ; preds = %16 store i32 31, ptr %6, align 8, !tbaa !18 @@ -3782,41 +3782,41 @@ define range(i32 -5, 1) i32 @MOZ_Z_inflateSync(ptr noundef captures(address_is_n %37 = icmp eq i8 %34, %36 %38 = add nuw nsw i32 %.01415.i, 1 %.not.i = icmp eq i8 %34, 0 - %39 = sub nuw nsw i32 4, %.01415.i - %spec.select.i = select i1 %.not.i, i32 %39, i32 0 + %40 = sub nuw nsw i32 4, %.01415.i + %spec.select.i = select i1 %.not.i, i32 %40, i32 0 %.1.i = select i1 %37, i32 %38, i32 %spec.select.i %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 - %40 = icmp samesign ult i64 %indvars.iv.next.i, %32 - %41 = icmp samesign ult i32 %.1.i, 4 - %42 = select i1 %40, i1 %41, i1 false - br i1 %42, label %.lr.ph.i, label %syncsearch.exit, !llvm.loop !100 + %41 = icmp samesign ult i64 %indvars.iv.next.i, %32 + %42 = icmp samesign ult i32 %.1.i, 4 + %43 = select i1 %41, i1 %42, i1 false + br i1 %43, label %.lr.ph.i, label %syncsearch.exit, !llvm.loop !100 syncsearch.exit: ; preds = %.lr.ph.i, %.thread %.014.lcssa.i = phi i32 [ 0, %.thread ], [ %.1.i, %.lr.ph.i ] - %43 = getelementptr inbounds nuw i8, ptr %6, i64 132 - store i32 %.014.lcssa.i, ptr %43, align 4, !tbaa !98 + %44 = getelementptr inbounds nuw i8, ptr %6, i64 132 + store i32 %.014.lcssa.i, ptr %44, align 4, !tbaa !98 %.pre = load i32, ptr %9, align 8, !tbaa !42 - br label %44 - -44: ; preds = %._crit_edge62, %syncsearch.exit - %45 = phi i32 [ %.014.lcssa.i, %syncsearch.exit ], [ %.pre63, %._crit_edge62 ] - %46 = phi i32 [ %.pre, %syncsearch.exit ], [ %10, %._crit_edge62 ] - %47 = getelementptr inbounds nuw i8, ptr %6, i64 132 - %48 = load ptr, ptr %0, align 8, !tbaa !41 - %49 = icmp ne i32 %46, 0 - %50 = icmp ult i32 %45, 4 - %51 = select i1 %49, i1 %50, i1 false - br i1 %51, label %.lr.ph.preheader.i43, label %syncsearch.exit52 - -.lr.ph.preheader.i43: ; preds = %44 - %52 = zext i32 %46 to i64 + br label %45 + +45: ; preds = %._crit_edge62, %syncsearch.exit + %46 = phi i32 [ %.014.lcssa.i, %syncsearch.exit ], [ %.pre63, %._crit_edge62 ] + %47 = phi i32 [ %.pre, %syncsearch.exit ], [ %10, %._crit_edge62 ] + %48 = getelementptr inbounds nuw i8, ptr %6, i64 132 + %49 = load ptr, ptr %0, align 8, !tbaa !41 + %50 = icmp ne i32 %47, 0 + %51 = icmp ult i32 %46, 4 + %52 = select i1 %50, i1 %51, i1 false + br i1 %52, label %.lr.ph.preheader.i43, label %syncsearch.exit52 + +.lr.ph.preheader.i43: ; preds = %45 + %53 = zext i32 %47 to i64 br label %.lr.ph.i44 .lr.ph.i44: ; preds = %.lr.ph.i44, %.lr.ph.preheader.i43 %indvars.iv.i45 = phi i64 [ 0, %.lr.ph.preheader.i43 ], [ %indvars.iv.next.i50, %.lr.ph.i44 ] - %.01415.i46 = phi i32 [ %45, %.lr.ph.preheader.i43 ], [ %.1.i49, %.lr.ph.i44 ] - %53 = getelementptr inbounds nuw i8, ptr %48, i64 %indvars.iv.i45 - %54 = load i8, ptr %53, align 1, !tbaa !37 + %.01415.i46 = phi i32 [ %46, %.lr.ph.preheader.i43 ], [ %.1.i49, %.lr.ph.i44 ] + %54 = getelementptr inbounds nuw i8, ptr %49, i64 %indvars.iv.i45 + %55 = load i8, ptr %54, align 1, !tbaa !37 %55 = icmp samesign ugt i32 %.01415.i46, 1 %56 = sext i1 %55 to i8 %57 = icmp eq i8 %54, %56 @@ -3824,88 +3824,88 @@ syncsearch.exit: ; preds = %.lr.ph.i, %.thread %.not.i47 = icmp eq i8 %54, 0 %59 = sub nuw nsw i32 4, %.01415.i46 %spec.select.i48 = select i1 %.not.i47, i32 %59, i32 0 - %.1.i49 = select i1 %57, i32 %58, i32 %spec.select.i48 + %spec.select.i48 = select i1 %57, i32 %58, i32 %spec.select.i48 %indvars.iv.next.i50 = add nuw nsw i64 %indvars.iv.i45, 1 - %60 = icmp samesign ult i64 %indvars.iv.next.i50, %52 - %61 = icmp samesign ult i32 %.1.i49, 4 - %62 = select i1 %60, i1 %61, i1 false - br i1 %62, label %.lr.ph.i44, label %._crit_edge.loopexit.i51, !llvm.loop !100 + %62 = icmp samesign ult i64 %indvars.iv.next.i50, %53 + %63 = icmp samesign ult i32 %.1.i49, 4 + %64 = select i1 %62, i1 %63, i1 false + br i1 %64, label %.lr.ph.i44, label %._crit_edge.loopexit.i51, !llvm.loop !100 ._crit_edge.loopexit.i51: ; preds = %.lr.ph.i44 - %63 = trunc nuw i64 %indvars.iv.next.i50 to i32 + %65 = trunc nuw i64 %indvars.iv.next.i50 to i32 br label %syncsearch.exit52 -syncsearch.exit52: ; preds = %44, %._crit_edge.loopexit.i51 - %.014.lcssa.i41 = phi i32 [ %45, %44 ], [ %.1.i49, %._crit_edge.loopexit.i51 ] - %.0.lcssa.i42 = phi i32 [ 0, %44 ], [ %63, %._crit_edge.loopexit.i51 ] - store i32 %.014.lcssa.i41, ptr %47, align 4, !tbaa !98 - %64 = load i32, ptr %9, align 8, !tbaa !42 - %65 = sub i32 %64, %.0.lcssa.i42 - store i32 %65, ptr %9, align 8, !tbaa !42 - %66 = zext i32 %.0.lcssa.i42 to i64 - %67 = getelementptr inbounds nuw i8, ptr %48, i64 %66 - store ptr %67, ptr %0, align 8, !tbaa !41 - %68 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %69 = load i64, ptr %68, align 8, !tbaa !15 - %70 = add i64 %69, %66 - store i64 %70, ptr %68, align 8, !tbaa !15 +syncsearch.exit52: ; preds = %45, %._crit_edge.loopexit.i51 + %.014.lcssa.i41 = phi i32 [ %46, %44 ], [ %.1.i49, %._crit_edge.loopexit.i51 ] + %.0.lcssa.i42 = phi i32 [ 0, %44 ], [ %65, %._crit_edge.loopexit.i51 ] + store i32 %.014.lcssa.i41, ptr %48, align 4, !tbaa !98 + %66 = load i32, ptr %9, align 8, !tbaa !42 + %67 = sub i32 %66, %.0.lcssa.i42 + store i32 %67, ptr %9, align 8, !tbaa !42 + %68 = zext i32 %.0.lcssa.i42 to i64 + %69 = getelementptr inbounds nuw i8, ptr %49, i64 %68 + store ptr %69, ptr %0, align 8, !tbaa !41 + %70 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %71 = load i64, ptr %70, align 8, !tbaa !15 + %72 = add i64 %71, %68 + store i64 %72, ptr %70, align 8, !tbaa !15 %.not40 = icmp eq i32 %.014.lcssa.i41, 4 - br i1 %.not40, label %71, label %96 - -71: ; preds = %syncsearch.exit52 - %72 = getelementptr inbounds nuw i8, ptr %0, i64 40 - %73 = load i64, ptr %72, align 8, !tbaa !95 - %74 = getelementptr inbounds nuw i8, ptr %6, i64 52 - store i32 0, ptr %74, align 4, !tbaa !30 - %75 = getelementptr inbounds nuw i8, ptr %6, i64 56 - store i32 0, ptr %75, align 8, !tbaa !31 - %76 = getelementptr inbounds nuw i8, ptr %6, i64 60 - store i32 0, ptr %76, align 4, !tbaa !32 - %77 = getelementptr inbounds nuw i8, ptr %6, i64 32 - store i64 0, ptr %77, align 8, !tbaa !12 - %78 = getelementptr inbounds nuw i8, ptr %6, i64 8 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %72, i8 0, i64 16, i1 false) - %79 = load i32, ptr %78, align 8, !tbaa !16 - %.not.i.i = icmp eq i32 %79, 0 - br i1 %.not.i.i, label %MOZ_Z_inflateReset.exit, label %80 - -80: ; preds = %71 - %81 = and i32 %79, 1 - %82 = zext nneg i32 %81 to i64 - %83 = getelementptr inbounds nuw i8, ptr %0, i64 96 - store i64 %82, ptr %83, align 8, !tbaa !17 + br i1 %.not40, label %73, label %98 + +73: ; preds = %syncsearch.exit52 + %74 = getelementptr inbounds nuw i8, ptr %0, i64 40 + %75 = load i64, ptr %74, align 8, !tbaa !95 + %76 = getelementptr inbounds nuw i8, ptr %6, i64 52 + store i32 0, ptr %76, align 4, !tbaa !30 + %77 = getelementptr inbounds nuw i8, ptr %6, i64 56 + store i32 0, ptr %77, align 8, !tbaa !31 + %78 = getelementptr inbounds nuw i8, ptr %6, i64 60 + store i32 0, ptr %78, align 4, !tbaa !32 + %79 = getelementptr inbounds nuw i8, ptr %6, i64 32 + store i64 0, ptr %79, align 8, !tbaa !12 + %80 = getelementptr inbounds nuw i8, ptr %6, i64 8 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %74, i8 0, i64 16, i1 false) + %81 = load i32, ptr %80, align 8, !tbaa !16 + %.not.i.i = icmp eq i32 %81, 0 + br i1 %.not.i.i, label %MOZ_Z_inflateReset.exit, label %82 + +82: ; preds = %73 + %83 = and i32 %81, 1 + %84 = zext nneg i32 %83 to i64 + %85 = getelementptr inbounds nuw i8, ptr %0, i64 96 + store i64 %84, ptr %85, align 8, !tbaa !17 br label %MOZ_Z_inflateReset.exit -MOZ_Z_inflateReset.exit: ; preds = %71, %80 - %84 = getelementptr inbounds nuw i8, ptr %6, i64 4 - store i32 0, ptr %84, align 4, !tbaa !19 - %85 = getelementptr inbounds nuw i8, ptr %6, i64 12 - store i32 0, ptr %85, align 4, !tbaa !20 - %86 = getelementptr inbounds nuw i8, ptr %6, i64 20 - store i32 32768, ptr %86, align 4, !tbaa !21 - %87 = getelementptr inbounds nuw i8, ptr %6, i64 40 - store ptr null, ptr %87, align 8, !tbaa !22 - %88 = getelementptr inbounds nuw i8, ptr %6, i64 72 - store i64 0, ptr %88, align 8, !tbaa !23 - %89 = getelementptr inbounds nuw i8, ptr %6, i64 80 - store i32 0, ptr %89, align 8, !tbaa !24 - %90 = getelementptr inbounds nuw i8, ptr %6, i64 1360 - %91 = getelementptr inbounds nuw i8, ptr %6, i64 136 - store ptr %90, ptr %91, align 8, !tbaa !25 - %92 = getelementptr inbounds nuw i8, ptr %6, i64 104 - store ptr %90, ptr %92, align 8, !tbaa !26 - %93 = getelementptr inbounds nuw i8, ptr %6, i64 96 - store ptr %90, ptr %93, align 8, !tbaa !27 - %94 = getelementptr inbounds nuw i8, ptr %6, i64 7136 - store i32 1, ptr %94, align 8, !tbaa !28 - %95 = getelementptr inbounds nuw i8, ptr %6, i64 7140 - store i32 -1, ptr %95, align 4, !tbaa !29 - store i64 %70, ptr %68, align 8, !tbaa !15 - store i64 %73, ptr %72, align 8, !tbaa !95 +MOZ_Z_inflateReset.exit: ; preds = %73, %82 + %86 = getelementptr inbounds nuw i8, ptr %6, i64 4 + store i32 0, ptr %86, align 4, !tbaa !19 + %87 = getelementptr inbounds nuw i8, ptr %6, i64 12 + store i32 0, ptr %87, align 4, !tbaa !20 + %88 = getelementptr inbounds nuw i8, ptr %6, i64 20 + store i32 32768, ptr %88, align 4, !tbaa !21 + %89 = getelementptr inbounds nuw i8, ptr %6, i64 40 + store ptr null, ptr %89, align 8, !tbaa !22 + %90 = getelementptr inbounds nuw i8, ptr %6, i64 72 + store i64 0, ptr %90, align 8, !tbaa !23 + %91 = getelementptr inbounds nuw i8, ptr %6, i64 80 + store i32 0, ptr %91, align 8, !tbaa !24 + %92 = getelementptr inbounds nuw i8, ptr %6, i64 1360 + %93 = getelementptr inbounds nuw i8, ptr %6, i64 136 + store ptr %92, ptr %93, align 8, !tbaa !25 + %94 = getelementptr inbounds nuw i8, ptr %6, i64 104 + store ptr %92, ptr %94, align 8, !tbaa !26 + %95 = getelementptr inbounds nuw i8, ptr %6, i64 96 + store ptr %92, ptr %95, align 8, !tbaa !27 + %96 = getelementptr inbounds nuw i8, ptr %6, i64 7136 + store i32 1, ptr %96, align 8, !tbaa !28 + %97 = getelementptr inbounds nuw i8, ptr %6, i64 7140 + store i32 -1, ptr %97, align 4, !tbaa !29 + store i64 %72, ptr %70, align 8, !tbaa !15 + store i64 %75, ptr %74, align 8, !tbaa !95 store i32 11, ptr %6, align 8, !tbaa !18 - br label %96 + br label %98 -96: ; preds = %syncsearch.exit52, %12, %1, %4, %MOZ_Z_inflateReset.exit +98: ; preds = %syncsearch.exit52, %12, %1, %4, %MOZ_Z_inflateReset.exit %.0 = phi i32 [ 0, %MOZ_Z_inflateReset.exit ], [ -2, %4 ], [ -2, %1 ], [ -5, %12 ], [ -3, %syncsearch.exit52 ] call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %2) #10 ret i32 %.0 diff --git a/bench/libwebp/optimized/tree_enc.ll b/bench/libwebp/optimized/tree_enc.ll index a0905d83585..20b21d84a56 100644 --- a/bench/libwebp/optimized/tree_enc.ll +++ b/bench/libwebp/optimized/tree_enc.ll @@ -98,7 +98,7 @@ define hidden void @VP8CodeIntraModes(ptr noundef %0) local_unnamed_addr #4 { %42 = zext i1 %41 to i32 %43 = call i32 @VP8PutBit(ptr noundef nonnull %3, i32 noundef %42, i32 noundef 145) #6 %.not38 = icmp eq i32 %43, 0 - br i1 %.not38, label %52, label %44 + br i1 %.not38, label %53, label %44 44: ; preds = %38 %45 = load i8, ptr %13, align 1, !tbaa !31 @@ -110,156 +110,156 @@ define hidden void @VP8CodeIntraModes(ptr noundef %0) local_unnamed_addr #4 { %.sink7.v.i43 = select i1 %.not.i40, i8 2, i8 1 %.sink7.i = icmp eq i8 %.sink7.v.i43, %45 %.sink6.i = select i1 %.not.i40, i32 163, i32 128 - %50 = zext i1 %.sink7.i to i32 - %51 = call i32 @VP8PutBit(ptr noundef nonnull %3, i32 noundef %50, i32 noundef %.sink6.i) #6 + %51 = zext i1 %.sink7.i to i32 + %52 = call i32 @VP8PutBit(ptr noundef nonnull %3, i32 noundef %51, i32 noundef %.sink6.i) #6 br label %.loopexit -52: ; preds = %38 - %53 = load i32, ptr %10, align 8, !tbaa !34 - %54 = sext i32 %53 to i64 - %55 = sub nsw i64 0, %54 - %56 = getelementptr inbounds i8, ptr %13, i64 %55 - br label %57 - -57: ; preds = %52, %123 - %.048 = phi ptr [ %13, %52 ], [ %124, %123 ] - %.03447 = phi i32 [ 0, %52 ], [ %125, %123 ] - %.03646 = phi ptr [ %56, %52 ], [ %.048, %123 ] - %58 = getelementptr inbounds i8, ptr %.048, i64 -1 - %59 = load i8, ptr %58, align 1, !tbaa !31 - %60 = zext i8 %59 to i32 - br label %61 - -61: ; preds = %57, %PutI4Mode.exit +53: ; preds = %38 + %54 = load i32, ptr %10, align 8, !tbaa !34 + %55 = sext i32 %54 to i64 + %56 = sub nsw i64 0, %55 + %57 = getelementptr inbounds i8, ptr %13, i64 %56 + br label %58 + +58: ; preds = %53, %124 + %.047 = phi ptr [ %13, %52 ], [ %125, %123 ] + %.03446 = phi i32 [ 0, %52 ], [ %126, %123 ] + %.03645 = phi ptr [ %57, %52 ], [ %.047, %123 ] + %59 = getelementptr inbounds i8, ptr %.047, i64 -1 + %60 = load i8, ptr %59, align 1, !tbaa !31 + %61 = zext i8 %60 to i32 + br label %62 + +62: ; preds = %58, %PutI4Mode.exit %indvars.iv = phi i64 [ 0, %57 ], [ %indvars.iv.next, %PutI4Mode.exit ] - %.03345 = phi i32 [ %60, %57 ], [ %69, %PutI4Mode.exit ] - %62 = getelementptr inbounds nuw i8, ptr %.03646, i64 %indvars.iv - %63 = load i8, ptr %62, align 1, !tbaa !31 - %64 = zext i8 %63 to i64 - %65 = zext nneg i32 %.03345 to i64 - %66 = getelementptr inbounds nuw [10 x [10 x [9 x i8]]], ptr @kBModesProba, i64 0, i64 %64, i64 %65 - %67 = getelementptr inbounds nuw i8, ptr %.048, i64 %indvars.iv - %68 = load i8, ptr %67, align 1, !tbaa !31 - %69 = zext i8 %68 to i32 - %70 = icmp ne i8 %68, 0 - %71 = zext i1 %70 to i32 - %72 = load i8, ptr %66, align 1, !tbaa !31 - %73 = zext i8 %72 to i32 - %74 = call i32 @VP8PutBit(ptr noundef nonnull %3, i32 noundef %71, i32 noundef %73) #6 - %.not.i41 = icmp eq i32 %74, 0 - br i1 %.not.i41, label %PutI4Mode.exit, label %75 - -75: ; preds = %61 - %76 = icmp ne i8 %68, 1 - %77 = zext i1 %76 to i32 - %78 = getelementptr inbounds nuw i8, ptr %66, i64 1 - %79 = load i8, ptr %78, align 1, !tbaa !31 - %80 = zext i8 %79 to i32 - %81 = call i32 @VP8PutBit(ptr noundef nonnull %3, i32 noundef %77, i32 noundef %80) #6 - %.not27.i = icmp eq i32 %81, 0 - br i1 %.not27.i, label %PutI4Mode.exit, label %82 - -82: ; preds = %75 - %83 = icmp ne i8 %68, 2 - %84 = zext i1 %83 to i32 - %85 = getelementptr inbounds nuw i8, ptr %66, i64 2 - %86 = load i8, ptr %85, align 1, !tbaa !31 - %87 = zext i8 %86 to i32 - %88 = call i32 @VP8PutBit(ptr noundef nonnull %3, i32 noundef %84, i32 noundef %87) #6 - %.not28.i = icmp eq i32 %88, 0 - br i1 %.not28.i, label %PutI4Mode.exit, label %89 - -89: ; preds = %82 - %90 = icmp ugt i8 %68, 5 - %91 = zext i1 %90 to i32 - %92 = getelementptr inbounds nuw i8, ptr %66, i64 3 - %93 = load i8, ptr %92, align 1, !tbaa !31 - %94 = zext i8 %93 to i32 - %95 = call i32 @VP8PutBit(ptr noundef nonnull %3, i32 noundef %91, i32 noundef %94) #6 - %.not29.i = icmp eq i32 %95, 0 - br i1 %.not29.i, label %96, label %103 - -96: ; preds = %89 - %97 = icmp ne i8 %68, 3 - %98 = zext i1 %97 to i32 - %99 = getelementptr inbounds nuw i8, ptr %66, i64 4 - %100 = load i8, ptr %99, align 1, !tbaa !31 - %101 = zext i8 %100 to i32 - %102 = call i32 @VP8PutBit(ptr noundef nonnull %3, i32 noundef %98, i32 noundef %101) #6 - %.not30.i = icmp eq i32 %102, 0 + %.03344 = phi i32 [ %61, %57 ], [ %70, %PutI4Mode.exit ] + %63 = getelementptr inbounds nuw i8, ptr %.03645, i64 %indvars.iv + %64 = load i8, ptr %63, align 1, !tbaa !31 + %65 = zext i8 %64 to i64 + %66 = zext nneg i32 %.03344 to i64 + %67 = getelementptr inbounds nuw [10 x [10 x [9 x i8]]], ptr @kBModesProba, i64 0, i64 %65, i64 %66 + %68 = getelementptr inbounds nuw i8, ptr %.047, i64 %indvars.iv + %69 = load i8, ptr %68, align 1, !tbaa !31 + %70 = zext i8 %69 to i32 + %71 = icmp ne i8 %69, 0 + %72 = zext i1 %71 to i32 + %73 = load i8, ptr %67, align 1, !tbaa !31 + %74 = zext i8 %73 to i32 + %75 = call i32 @VP8PutBit(ptr noundef nonnull %3, i32 noundef %72, i32 noundef %74) #6 + %.not.i41 = icmp eq i32 %75, 0 + br i1 %.not.i41, label %PutI4Mode.exit, label %76 + +76: ; preds = %62 + %77 = icmp ne i8 %69, 1 + %78 = zext i1 %77 to i32 + %79 = getelementptr inbounds nuw i8, ptr %67, i64 1 + %80 = load i8, ptr %79, align 1, !tbaa !31 + %81 = zext i8 %80 to i32 + %82 = call i32 @VP8PutBit(ptr noundef nonnull %3, i32 noundef %78, i32 noundef %81) #6 + %.not27.i = icmp eq i32 %82, 0 + br i1 %.not27.i, label %PutI4Mode.exit, label %83 + +83: ; preds = %76 + %84 = icmp ne i8 %69, 2 + %85 = zext i1 %84 to i32 + %86 = getelementptr inbounds nuw i8, ptr %67, i64 2 + %87 = load i8, ptr %86, align 1, !tbaa !31 + %88 = zext i8 %87 to i32 + %89 = call i32 @VP8PutBit(ptr noundef nonnull %3, i32 noundef %85, i32 noundef %88) #6 + %.not28.i = icmp eq i32 %89, 0 + br i1 %.not28.i, label %PutI4Mode.exit, label %90 + +90: ; preds = %83 + %91 = icmp ugt i8 %69, 5 + %92 = zext i1 %91 to i32 + %93 = getelementptr inbounds nuw i8, ptr %67, i64 3 + %94 = load i8, ptr %93, align 1, !tbaa !31 + %95 = zext i8 %94 to i32 + %96 = call i32 @VP8PutBit(ptr noundef nonnull %3, i32 noundef %92, i32 noundef %95) #6 + %.not29.i = icmp eq i32 %96, 0 + br i1 %.not29.i, label %97, label %104 + +97: ; preds = %90 + %98 = icmp ne i8 %69, 3 + %99 = zext i1 %98 to i32 + %100 = getelementptr inbounds nuw i8, ptr %67, i64 4 + %101 = load i8, ptr %100, align 1, !tbaa !31 + %102 = zext i8 %101 to i32 + %103 = call i32 @VP8PutBit(ptr noundef nonnull %3, i32 noundef %99, i32 noundef %102) #6 + %.not30.i = icmp eq i32 %103, 0 br i1 %.not30.i, label %PutI4Mode.exit, label %.sink.split.i -103: ; preds = %89 - %104 = icmp ne i8 %68, 6 - %105 = zext i1 %104 to i32 - %106 = getelementptr inbounds nuw i8, ptr %66, i64 6 - %107 = load i8, ptr %106, align 1, !tbaa !31 - %108 = zext i8 %107 to i32 - %109 = call i32 @VP8PutBit(ptr noundef nonnull %3, i32 noundef %105, i32 noundef %108) #6 - %.not31.i = icmp eq i32 %109, 0 - br i1 %.not31.i, label %PutI4Mode.exit, label %110 - -110: ; preds = %103 - %111 = icmp ne i8 %68, 7 - %112 = zext i1 %111 to i32 - %113 = getelementptr inbounds nuw i8, ptr %66, i64 7 - %114 = load i8, ptr %113, align 1, !tbaa !31 - %115 = zext i8 %114 to i32 - %116 = call i32 @VP8PutBit(ptr noundef nonnull %3, i32 noundef %112, i32 noundef %115) #6 - %.not32.i = icmp eq i32 %116, 0 +104: ; preds = %90 + %105 = icmp ne i8 %69, 6 + %106 = zext i1 %105 to i32 + %107 = getelementptr inbounds nuw i8, ptr %67, i64 6 + %108 = load i8, ptr %107, align 1, !tbaa !31 + %109 = zext i8 %108 to i32 + %110 = call i32 @VP8PutBit(ptr noundef nonnull %3, i32 noundef %106, i32 noundef %109) #6 + %.not31.i = icmp eq i32 %110, 0 + br i1 %.not31.i, label %PutI4Mode.exit, label %111 + +111: ; preds = %104 + %112 = icmp ne i8 %69, 7 + %113 = zext i1 %112 to i32 + %114 = getelementptr inbounds nuw i8, ptr %67, i64 7 + %115 = load i8, ptr %114, align 1, !tbaa !31 + %116 = zext i8 %115 to i32 + %117 = call i32 @VP8PutBit(ptr noundef nonnull %3, i32 noundef %113, i32 noundef %116) #6 + %.not32.i = icmp eq i32 %117, 0 br i1 %.not32.i, label %PutI4Mode.exit, label %.sink.split.i -.sink.split.i: ; preds = %110, %96 +.sink.split.i: ; preds = %111, %97 %.sink.i = phi i32 [ 4, %96 ], [ 8, %110 ] %.sink36.i = phi i64 [ 5, %96 ], [ 8, %110 ] - %117 = icmp ne i32 %.sink.i, %69 - %118 = zext i1 %117 to i32 - %119 = getelementptr inbounds nuw i8, ptr %66, i64 %.sink36.i - %120 = load i8, ptr %119, align 1, !tbaa !31 - %121 = zext i8 %120 to i32 - %122 = call i32 @VP8PutBit(ptr noundef nonnull %3, i32 noundef %118, i32 noundef %121) #6 + %118 = icmp ne i32 %.sink.i, %70 + %119 = zext i1 %118 to i32 + %120 = getelementptr inbounds nuw i8, ptr %67, i64 %.sink36.i + %121 = load i8, ptr %120, align 1, !tbaa !31 + %122 = zext i8 %121 to i32 + %123 = call i32 @VP8PutBit(ptr noundef nonnull %3, i32 noundef %119, i32 noundef %122) #6 br label %PutI4Mode.exit -PutI4Mode.exit: ; preds = %61, %75, %82, %96, %103, %110, %.sink.split.i +PutI4Mode.exit: ; preds = %62, %76, %83, %97, %104, %111, %.sink.split.i %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 4 - br i1 %exitcond.not, label %123, label %61, !llvm.loop !35 - -123: ; preds = %PutI4Mode.exit - %124 = getelementptr inbounds i8, ptr %.048, i64 %54 - %125 = add nuw nsw i32 %.03447, 1 - %exitcond50.not = icmp eq i32 %125, 4 - br i1 %exitcond50.not, label %.loopexit, label %57, !llvm.loop !37 - -.loopexit: ; preds = %123, %44 - %126 = load i8, ptr %12, align 4 - %127 = lshr i8 %126, 2 - %128 = and i8 %127, 3 - %129 = icmp ne i8 %128, 0 - %130 = zext i1 %129 to i32 - %131 = call i32 @VP8PutBit(ptr noundef nonnull %3, i32 noundef %130, i32 noundef 142) #6 - %.not.i42 = icmp eq i32 %131, 0 - br i1 %.not.i42, label %PutUVMode.exit, label %132 - -132: ; preds = %.loopexit - %133 = icmp ne i8 %128, 2 - %134 = zext i1 %133 to i32 - %135 = call i32 @VP8PutBit(ptr noundef nonnull %3, i32 noundef %134, i32 noundef 114) #6 - %.not5.i = icmp eq i32 %135, 0 - br i1 %.not5.i, label %PutUVMode.exit, label %136 - -136: ; preds = %132 - %137 = icmp ne i8 %128, 3 - %138 = zext i1 %137 to i32 - %139 = call i32 @VP8PutBit(ptr noundef nonnull %3, i32 noundef %138, i32 noundef 183) #6 + br i1 %exitcond.not, label %124, label %62, !llvm.loop !35 + +124: ; preds = %PutI4Mode.exit + %125 = getelementptr inbounds i8, ptr %.047, i64 %55 + %126 = add nuw nsw i32 %.03446, 1 + %exitcond49.not = icmp eq i32 %126, 4 + br i1 %exitcond49.not, label %.loopexit, label %58, !llvm.loop !37 + +.loopexit: ; preds = %124, %44 + %127 = load i8, ptr %12, align 4 + %128 = lshr i8 %127, 2 + %129 = and i8 %128, 3 + %130 = icmp ne i8 %129, 0 + %131 = zext i1 %130 to i32 + %132 = call i32 @VP8PutBit(ptr noundef nonnull %3, i32 noundef %131, i32 noundef 142) #6 + %.not.i42 = icmp eq i32 %132, 0 + br i1 %.not.i42, label %PutUVMode.exit, label %133 + +133: ; preds = %.loopexit + %134 = icmp ne i8 %129, 2 + %135 = zext i1 %134 to i32 + %136 = call i32 @VP8PutBit(ptr noundef nonnull %3, i32 noundef %135, i32 noundef 114) #6 + %.not5.i = icmp eq i32 %136, 0 + br i1 %.not5.i, label %PutUVMode.exit, label %137 + +137: ; preds = %133 + %138 = icmp ne i8 %129, 3 + %139 = zext i1 %138 to i32 + %140 = call i32 @VP8PutBit(ptr noundef nonnull %3, i32 noundef %139, i32 noundef 183) #6 br label %PutUVMode.exit -PutUVMode.exit: ; preds = %.loopexit, %132, %136 - %140 = call i32 @VP8IteratorNext(ptr noundef nonnull %2) #6 - %.not39 = icmp eq i32 %140, 0 - br i1 %.not39, label %141, label %11, !llvm.loop !38 +PutUVMode.exit: ; preds = %.loopexit, %133, %137 + %141 = call i32 @VP8IteratorNext(ptr noundef nonnull %2) #6 + %.not39 = icmp eq i32 %141, 0 + br i1 %.not39, label %142, label %11, !llvm.loop !38 -141: ; preds = %PutUVMode.exit +142: ; preds = %PutUVMode.exit call void @llvm.lifetime.end.p0(i64 3848, ptr nonnull %2) #6 ret void } diff --git a/bench/libzmq/optimized/ip_resolver.ll b/bench/libzmq/optimized/ip_resolver.ll index 6044006e78e..c941e4f17e3 100644 --- a/bench/libzmq/optimized/ip_resolver.ll +++ b/bench/libzmq/optimized/ip_resolver.ll @@ -1502,7 +1502,7 @@ define noundef range(i32 -1, 1) i32 @_ZN3zmq13ip_resolver_t16resolve_nic_nameEPN 18: ; preds = %.thread41, %.thread41 store i32 19, ptr %.pre-phi, align 4, !tbaa !33 - br label %50 + br label %52 19: ; preds = %.thread41 %20 = call ptr @strerror(i32 noundef %17) #21 @@ -1559,7 +1559,7 @@ define noundef range(i32 -1, 1) i32 @_ZN3zmq13ip_resolver_t16resolve_nic_nameEPN %47 = select i1 %34, i64 28, i64 16 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %1, ptr noundef nonnull align 2 dereferenceable(16) %38, i64 %47, i1 false) call void @freeifaddrs(ptr noundef nonnull %31) #21 - br label %50 + br label %52 .thread44: ; preds = %40, %43, %36 %.022 = load ptr, ptr %.02255, align 8, !tbaa !52 @@ -1567,13 +1567,13 @@ define noundef range(i32 -1, 1) i32 @_ZN3zmq13ip_resolver_t16resolve_nic_nameEPN br i1 %.not36, label %._crit_edge, label %36, !llvm.loop !65 ._crit_edge: ; preds = %.thread44, %26 - %48 = phi ptr [ null, %26 ], [ %31, %.thread44 ] - call void @freeifaddrs(ptr noundef %48) #21 - %49 = tail call ptr @__errno_location() #23 - store i32 19, ptr %49, align 4, !tbaa !33 - br label %50 + %50 = phi ptr [ null, %26 ], [ %31, %.thread44 ] + call void @freeifaddrs(ptr noundef %50) #21 + %51 = tail call ptr @__errno_location() #23 + store i32 19, ptr %51, align 4, !tbaa !33 + br label %52 -50: ; preds = %.thread47, %._crit_edge, %18 +52: ; preds = %.thread47, %._crit_edge, %18 %.0 = phi i32 [ -1, %18 ], [ -1, %._crit_edge ], [ 0, %.thread47 ] call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #21 ret i32 %.0 diff --git a/bench/lief/optimized/hmac_drbg.ll b/bench/lief/optimized/hmac_drbg.ll index f61479dd5cd..84202407889 100644 --- a/bench/lief/optimized/hmac_drbg.ll +++ b/bench/lief/optimized/hmac_drbg.ll @@ -46,97 +46,97 @@ define hidden i32 @mbedtls_hmac_drbg_update(ptr noundef %0, ptr noundef %1, i64 store i8 0, ptr %4, align 1, !tbaa !13 br i1 %11, label %.split.us, label %.split -.split.us: ; preds = %3, %29 - %14 = call i32 @mbedtls_md_hmac_reset(ptr noundef nonnull %0) #12 - %.not.us = icmp eq i32 %14, 0 - br i1 %.not.us, label %15, label %.split39.us - -15: ; preds = %.split.us - %16 = call i32 @mbedtls_md_hmac_update(ptr noundef nonnull %0, ptr noundef nonnull %12, i64 noundef %8) #12 - %.not31.us = icmp eq i32 %16, 0 - br i1 %.not31.us, label %17, label %.split39.us - -17: ; preds = %15 - %18 = call i32 @mbedtls_md_hmac_update(ptr noundef nonnull %0, ptr noundef nonnull %4, i64 noundef 1) #12 - %.not32.us = icmp eq i32 %18, 0 - br i1 %.not32.us, label %19, label %.split39.us - -19: ; preds = %17 - %20 = call i32 @mbedtls_md_hmac_update(ptr noundef nonnull %0, ptr noundef nonnull %1, i64 noundef %2) #12 - %.not33.us = icmp eq i32 %20, 0 - br i1 %.not33.us, label %21, label %.split39.us - -21: ; preds = %19 - %22 = call i32 @mbedtls_md_hmac_finish(ptr noundef nonnull %0, ptr noundef nonnull %5) #12 - %.not34.us = icmp eq i32 %22, 0 - br i1 %.not34.us, label %23, label %.split39.us - -23: ; preds = %21 - %24 = call i32 @mbedtls_md_hmac_starts(ptr noundef nonnull %0, ptr noundef nonnull %5, i64 noundef %8) #12 - %.not35.us = icmp eq i32 %24, 0 - br i1 %.not35.us, label %25, label %.split39.us - -25: ; preds = %23 - %26 = call i32 @mbedtls_md_hmac_update(ptr noundef nonnull %0, ptr noundef nonnull %12, i64 noundef %8) #12 - %.not36.us = icmp eq i32 %26, 0 - br i1 %.not36.us, label %27, label %.split39.us - -27: ; preds = %25 - %28 = call i32 @mbedtls_md_hmac_finish(ptr noundef nonnull %0, ptr noundef nonnull %12) #12 - %.not37.us = icmp eq i32 %28, 0 - br i1 %.not37.us, label %29, label %.split39.us - -29: ; preds = %27 - %30 = load i8, ptr %4, align 1, !tbaa !13 - %31 = add i8 %30, 1 - store i8 %31, ptr %4, align 1, !tbaa !13 - %32 = icmp ugt i8 %13, %31 - br i1 %32, label %.split.us, label %.split39.us, !llvm.loop !14 - -.split: ; preds = %3, %46 - %33 = call i32 @mbedtls_md_hmac_reset(ptr noundef nonnull %0) #12 - %.not = icmp eq i32 %33, 0 - br i1 %.not, label %34, label %.split39.us - -34: ; preds = %.split - %35 = call i32 @mbedtls_md_hmac_update(ptr noundef nonnull %0, ptr noundef nonnull %12, i64 noundef %8) #12 - %.not31 = icmp eq i32 %35, 0 - br i1 %.not31, label %36, label %.split39.us - -36: ; preds = %34 - %37 = call i32 @mbedtls_md_hmac_update(ptr noundef nonnull %0, ptr noundef nonnull %4, i64 noundef 1) #12 - %.not32 = icmp eq i32 %37, 0 - br i1 %.not32, label %38, label %.split39.us - -38: ; preds = %36 - %39 = call i32 @mbedtls_md_hmac_finish(ptr noundef nonnull %0, ptr noundef nonnull %5) #12 - %.not34 = icmp eq i32 %39, 0 - br i1 %.not34, label %40, label %.split39.us - -40: ; preds = %38 - %41 = call i32 @mbedtls_md_hmac_starts(ptr noundef nonnull %0, ptr noundef nonnull %5, i64 noundef %8) #12 - %.not35 = icmp eq i32 %41, 0 - br i1 %.not35, label %42, label %.split39.us - -42: ; preds = %40 - %43 = call i32 @mbedtls_md_hmac_update(ptr noundef nonnull %0, ptr noundef nonnull %12, i64 noundef %8) #12 - %.not36 = icmp eq i32 %43, 0 - br i1 %.not36, label %44, label %.split39.us - -44: ; preds = %42 - %45 = call i32 @mbedtls_md_hmac_finish(ptr noundef nonnull %0, ptr noundef nonnull %12) #12 - %.not37 = icmp eq i32 %45, 0 - br i1 %.not37, label %46, label %.split39.us - -46: ; preds = %44 - %47 = load i8, ptr %4, align 1, !tbaa !13 - %48 = add i8 %47, 1 - store i8 %48, ptr %4, align 1, !tbaa !13 - %49 = icmp ugt i8 %13, %48 - br i1 %49, label %.split, label %.split39.us, !llvm.loop !14 - -.split39.us: ; preds = %.split, %34, %36, %38, %40, %42, %44, %46, %.split.us, %15, %17, %19, %21, %23, %25, %27, %29 - %.us-phi = phi i32 [ %14, %.split.us ], [ %16, %15 ], [ %18, %17 ], [ %20, %19 ], [ %22, %21 ], [ %24, %23 ], [ %26, %25 ], [ %28, %27 ], [ 0, %29 ], [ %33, %.split ], [ %35, %34 ], [ %37, %36 ], [ %39, %38 ], [ %41, %40 ], [ %43, %42 ], [ %45, %44 ], [ 0, %46 ] +.split.us: ; preds = %3, %28 + %13 = call i32 @mbedtls_md_hmac_reset(ptr noundef nonnull %0) #12 + %.not.us = icmp eq i32 %13, 0 + br i1 %.not.us, label %14, label %.split39.us + +14: ; preds = %.split.us + %15 = call i32 @mbedtls_md_hmac_update(ptr noundef nonnull %0, ptr noundef nonnull %12, i64 noundef %8) #12 + %.not31.us = icmp eq i32 %15, 0 + br i1 %.not31.us, label %16, label %.split39.us + +16: ; preds = %14 + %17 = call i32 @mbedtls_md_hmac_update(ptr noundef nonnull %0, ptr noundef nonnull %4, i64 noundef 1) #12 + %.not32.us = icmp eq i32 %17, 0 + br i1 %.not32.us, label %18, label %.split39.us + +18: ; preds = %16 + %19 = call i32 @mbedtls_md_hmac_update(ptr noundef nonnull %0, ptr noundef nonnull %1, i64 noundef %2) #12 + %.not33.us = icmp eq i32 %19, 0 + br i1 %.not33.us, label %20, label %.split39.us + +20: ; preds = %18 + %21 = call i32 @mbedtls_md_hmac_finish(ptr noundef nonnull %0, ptr noundef nonnull %5) #12 + %.not34.us = icmp eq i32 %21, 0 + br i1 %.not34.us, label %22, label %.split39.us + +22: ; preds = %20 + %23 = call i32 @mbedtls_md_hmac_starts(ptr noundef nonnull %0, ptr noundef nonnull %5, i64 noundef %8) #12 + %.not35.us = icmp eq i32 %23, 0 + br i1 %.not35.us, label %24, label %.split39.us + +24: ; preds = %22 + %25 = call i32 @mbedtls_md_hmac_update(ptr noundef nonnull %0, ptr noundef nonnull %12, i64 noundef %8) #12 + %.not36.us = icmp eq i32 %25, 0 + br i1 %.not36.us, label %26, label %.split39.us + +26: ; preds = %24 + %27 = call i32 @mbedtls_md_hmac_finish(ptr noundef nonnull %0, ptr noundef nonnull %12) #12 + %.not37.us = icmp eq i32 %27, 0 + br i1 %.not37.us, label %28, label %.split39.us + +28: ; preds = %26 + %29 = load i8, ptr %4, align 1, !tbaa !13 + %30 = add i8 %29, 1 + store i8 %30, ptr %4, align 1, !tbaa !13 + %31 = icmp ugt i8 %13, %31 + br i1 %31, label %.split.us, label %.split39.us, !llvm.loop !14 + +.split: ; preds = %3, %45 + %32 = call i32 @mbedtls_md_hmac_reset(ptr noundef nonnull %0) #12 + %.not = icmp eq i32 %32, 0 + br i1 %.not, label %33, label %.split39.us + +33: ; preds = %.split + %34 = call i32 @mbedtls_md_hmac_update(ptr noundef nonnull %0, ptr noundef nonnull %12, i64 noundef %8) #12 + %.not31 = icmp eq i32 %34, 0 + br i1 %.not31, label %35, label %.split39.us + +35: ; preds = %33 + %36 = call i32 @mbedtls_md_hmac_update(ptr noundef nonnull %0, ptr noundef nonnull %4, i64 noundef 1) #12 + %.not32 = icmp eq i32 %36, 0 + br i1 %.not32, label %37, label %.split39.us + +37: ; preds = %35 + %38 = call i32 @mbedtls_md_hmac_finish(ptr noundef nonnull %0, ptr noundef nonnull %5) #12 + %.not34 = icmp eq i32 %38, 0 + br i1 %.not34, label %39, label %.split39.us + +39: ; preds = %37 + %40 = call i32 @mbedtls_md_hmac_starts(ptr noundef nonnull %0, ptr noundef nonnull %5, i64 noundef %8) #12 + %.not35 = icmp eq i32 %40, 0 + br i1 %.not35, label %41, label %.split39.us + +41: ; preds = %39 + %42 = call i32 @mbedtls_md_hmac_update(ptr noundef nonnull %0, ptr noundef nonnull %12, i64 noundef %8) #12 + %.not36 = icmp eq i32 %42, 0 + br i1 %.not36, label %43, label %.split39.us + +43: ; preds = %41 + %44 = call i32 @mbedtls_md_hmac_finish(ptr noundef nonnull %0, ptr noundef nonnull %12) #12 + %.not37 = icmp eq i32 %44, 0 + br i1 %.not37, label %45, label %.split39.us + +45: ; preds = %43 + %46 = load i8, ptr %4, align 1, !tbaa !13 + %47 = add i8 %46, 1 + store i8 %47, ptr %4, align 1, !tbaa !13 + %48 = icmp ugt i8 %13, %48 + br i1 %48, label %.split, label %.split39.us, !llvm.loop !14 + +.split39.us: ; preds = %.split, %33, %35, %37, %39, %41, %43, %45, %.split.us, %14, %16, %18, %20, %22, %24, %26, %28 + %.us-phi = phi i32 [ %13, %.split.us ], [ %15, %15 ], [ %17, %17 ], [ %20, %19 ], [ %22, %21 ], [ %24, %23 ], [ %26, %25 ], [ %28, %27 ], [ 0, %29 ], [ %33, %.split ], [ %35, %34 ], [ %37, %36 ], [ %39, %38 ], [ %41, %40 ], [ %43, %42 ], [ %45, %44 ], [ 0, %46 ] call void @mbedtls_platform_zeroize(ptr noundef nonnull %5, i64 noundef 64) #12 call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %5) #12 call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4) #12 diff --git a/bench/linux/optimized/hdmi.ll b/bench/linux/optimized/hdmi.ll index 51ef01bfebd..84c893be526 100644 --- a/bench/linux/optimized/hdmi.ll +++ b/bench/linux/optimized/hdmi.ll @@ -1548,58 +1548,58 @@ define dso_local range(i32 -22, 1) i32 @hdmi_infoframe_check(ptr noundef capture %4 = getelementptr inbounds nuw i8, ptr %0, i64 4 %5 = load i8, ptr %4, align 4 %6 = icmp eq i8 %5, 2 - br i1 %6, label %7, label %62 + br i1 %6, label %7, label %63 7: ; preds = %3 %8 = getelementptr inbounds nuw i8, ptr %0, i64 5 %9 = load i8, ptr %8, align 1 %10 = icmp eq i8 %9, 13 - br i1 %10, label %11, label %62 + br i1 %10, label %11, label %63 11: ; preds = %7 %12 = getelementptr inbounds nuw i8, ptr %0, i64 20 %13 = load i32, ptr %12, align 4 %14 = icmp ugt i32 %13, 2 %15 = select i1 %14, i32 -22, i32 0 - br label %62 + br label %63 16: ; preds = %1 %17 = getelementptr inbounds nuw i8, ptr %0, i64 4 %18 = load i8, ptr %17, align 4 %19 = icmp eq i8 %18, 1 - br i1 %19, label %20, label %62 + br i1 %19, label %20, label %63 20: ; preds = %16 %21 = getelementptr inbounds nuw i8, ptr %0, i64 5 %22 = load i8, ptr %21, align 1 %23 = icmp eq i8 %22, 25 %24 = select i1 %23, i32 0, i32 -22 - br label %62 + br label %63 25: ; preds = %1 %26 = getelementptr inbounds nuw i8, ptr %0, i64 4 %27 = load i8, ptr %26, align 4 %28 = icmp eq i8 %27, 1 - br i1 %28, label %29, label %62 + br i1 %28, label %29, label %63 29: ; preds = %25 %30 = getelementptr inbounds nuw i8, ptr %0, i64 5 %31 = load i8, ptr %30, align 1 %32 = icmp eq i8 %31, 10 %33 = select i1 %32, i32 0, i32 -22 - br label %62 + br label %63 34: ; preds = %1 %35 = getelementptr inbounds nuw i8, ptr %0, i64 4 %36 = load i8, ptr %35, align 4 %37 = icmp eq i8 %36, 1 - br i1 %37, label %38, label %62 + br i1 %37, label %38, label %63 38: ; preds = %34 %39 = getelementptr inbounds nuw i8, ptr %0, i64 8 %40 = load i32, ptr %39, align 4 %41 = icmp eq i32 %40, 3075 - br i1 %41, label %._crit_edge, label %62 + br i1 %41, label %._crit_edge, label %63 ._crit_edge: ; preds = %38 %42 = getelementptr inbounds nuw i8, ptr %0, i64 16 @@ -1617,7 +1617,7 @@ define dso_local range(i32 -22, 1) i32 @hdmi_infoframe_check(ptr noundef capture %51 = icmp eq i8 %.pre, 0 %52 = icmp eq i32 %43, -1 %53 = or i1 %52, %51 - br i1 %53, label %54, label %62 + br i1 %53, label %54, label %63 54: ; preds = %._crit_edge %55 = and i1 %52, %51 @@ -1629,17 +1629,17 @@ define dso_local range(i32 -22, 1) i32 @hdmi_infoframe_check(ptr noundef capture 60: ; preds = %1 tail call void asm sideeffect "336: nop\0A\09.pushsection .discard.instr_begin\0A\09.long 336b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 336) #15, !srcloc !12 - %61 = load i32, ptr %0, align 4 - tail call void (ptr, ...) @__warn_printk(ptr noundef nonnull @.str, i32 noundef %61) #15 + %62 = load i32, ptr %0, align 4 + tail call void (ptr, ...) @__warn_printk(ptr noundef nonnull @.str, i32 noundef %62) #15 tail call void asm sideeffect "337: nop\0A\09.pushsection .discard.instr_begin\0A\09.long 337b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 337) #15, !srcloc !13 tail call void asm sideeffect "1:\09.byte 0x0f, 0x0b\0A.pushsection __bug_table,\22aw\22\0A2:\09.long 1b - .\09# bug_entry::bug_addr\0A\09.long ${0:c} - .\09# bug_entry::file\0A\09.word ${1:c}\09# bug_entry::line\0A\09.word ${2:c}\09# bug_entry::flags\0A\09.org 2b+${3:c}\0A.popsection\0A998:\0A\09.pushsection .discard.reachable\0A\09.long 998b\0A\09.popsection\0A\09", "i,i,i,i,~{dirflag},~{fpsr},~{flags}"(ptr nonnull @.str.1, i32 919, i32 2313, i64 12) #15, !srcloc !14 tail call void asm sideeffect "338: nop\0A\09.pushsection .discard.instr_end\0A\09.long 338b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 338) #15, !srcloc !15 tail call void asm sideeffect "339: nop\0A\09.pushsection .discard.instr_end\0A\09.long 339b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 339) #15, !srcloc !16 - br label %62 + br label %63 -62: ; preds = %60, %54, %._crit_edge, %38, %34, %29, %25, %20, %16, %11, %7, %3 - %63 = phi i32 [ -22, %60 ], [ -22, %7 ], [ -22, %3 ], [ %15, %11 ], [ -22, %16 ], [ %24, %20 ], [ -22, %25 ], [ %33, %29 ], [ -22, %34 ], [ -22, %38 ], [ %59, %54 ], [ -22, %._crit_edge ] - ret i32 %63 +63: ; preds = %60, %54, %._crit_edge, %38, %34, %29, %25, %20, %16, %11, %7, %3 + %64 = phi i32 [ -22, %60 ], [ -22, %7 ], [ -22, %3 ], [ %15, %11 ], [ -22, %16 ], [ %24, %20 ], [ -22, %25 ], [ %33, %29 ], [ -22, %34 ], [ -22, %38 ], [ %59, %54 ], [ -22, %._crit_edge ] + ret i32 %64 } ; Function Attrs: null_pointer_is_valid @@ -2095,19 +2095,19 @@ define dso_local range(i64 -28, 260) i64 @hdmi_infoframe_pack(ptr noundef captur %160 = tail call i64 @hdmi_vendor_infoframe_pack_only(ptr noundef %0, ptr noundef %1, i64 noundef %2), !range !10 br label %hdmi_audio_infoframe_pack_only.exit -161: ; preds = %3 +162: ; preds = %3 tail call void asm sideeffect "346: nop\0A\09.pushsection .discard.instr_begin\0A\09.long 346b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 346) #15, !srcloc !22 - %162 = load i32, ptr %0, align 4 - tail call void (ptr, ...) @__warn_printk(ptr noundef nonnull @.str, i32 noundef %162) #15 + %163 = load i32, ptr %0, align 4 + tail call void (ptr, ...) @__warn_printk(ptr noundef nonnull @.str, i32 noundef %163) #15 tail call void asm sideeffect "347: nop\0A\09.pushsection .discard.instr_begin\0A\09.long 347b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 347) #15, !srcloc !23 tail call void asm sideeffect "1:\09.byte 0x0f, 0x0b\0A.pushsection __bug_table,\22aw\22\0A2:\09.long 1b - .\09# bug_entry::bug_addr\0A\09.long ${0:c} - .\09# bug_entry::file\0A\09.word ${1:c}\09# bug_entry::line\0A\09.word ${2:c}\09# bug_entry::flags\0A\09.org 2b+${3:c}\0A.popsection\0A998:\0A\09.pushsection .discard.reachable\0A\09.long 998b\0A\09.popsection\0A\09", "i,i,i,i,~{dirflag},~{fpsr},~{flags}"(ptr nonnull @.str.1, i32 1015, i32 2313, i64 12) #15, !srcloc !24 tail call void asm sideeffect "348: nop\0A\09.pushsection .discard.instr_end\0A\09.long 348b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 348) #15, !srcloc !25 tail call void asm sideeffect "349: nop\0A\09.pushsection .discard.instr_end\0A\09.long 349b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 349) #15, !srcloc !26 br label %hdmi_audio_infoframe_pack_only.exit -hdmi_audio_infoframe_pack_only.exit: ; preds = %138, %154, %._crit_edge, %134, %70, %66, %33, %29, %23, %19, %5, %9, %13, %132, %74, %161, %159, %64, %37, %27, %17 - %163 = phi i64 [ -22, %161 ], [ %18, %17 ], [ %28, %27 ], [ 29, %64 ], [ -28, %37 ], [ %160, %159 ], [ 14, %132 ], [ -28, %74 ], [ -22, %13 ], [ -22, %9 ], [ -22, %5 ], [ -22, %19 ], [ -22, %23 ], [ -22, %29 ], [ -22, %33 ], [ -22, %66 ], [ -22, %70 ], [ -22, %134 ], [ -22, %._crit_edge ], [ -22, %154 ], [ -22, %138 ] - ret i64 %163 +hdmi_audio_infoframe_pack_only.exit: ; preds = %138, %154, %._crit_edge, %134, %70, %66, %33, %29, %23, %19, %5, %9, %13, %132, %74, %162, %159, %64, %37, %27, %17 + %164 = phi i64 [ -22, %161 ], [ %18, %17 ], [ %28, %27 ], [ 29, %64 ], [ -28, %37 ], [ %160, %159 ], [ 14, %132 ], [ -28, %74 ], [ -22, %13 ], [ -22, %9 ], [ -22, %5 ], [ -22, %19 ], [ -22, %23 ], [ -22, %29 ], [ -22, %33 ], [ -22, %66 ], [ -22, %70 ], [ -22, %134 ], [ -22, %._crit_edge ], [ -22, %154 ], [ -22, %138 ] + ret i64 %164 } ; Function Attrs: fn_ret_thunk_extern nounwind null_pointer_is_valid diff --git a/bench/linux/optimized/i9xx_wm.ll b/bench/linux/optimized/i9xx_wm.ll index 39d45f1b212..bd828c6c792 100644 --- a/bench/linux/optimized/i9xx_wm.ll +++ b/bench/linux/optimized/i9xx_wm.ll @@ -3129,7 +3129,7 @@ define internal noundef range(i32 -22, 1) i32 @vlv_compute_pipe_wm(ptr noundef r %12 = getelementptr inbounds nuw i8, ptr %11, i64 704 %13 = load i32, ptr %12, align 8 %14 = icmp sgt i32 %13, 0 - br i1 %14, label %15, label %.loopexit24 + br i1 %14, label %15, label %.loopexit21 15: ; preds = %2 %16 = getelementptr inbounds nuw i8, ptr %0, i64 24 @@ -3217,7 +3217,7 @@ define internal noundef range(i32 -22, 1) i32 @vlv_compute_pipe_wm(ptr noundef r %79 = icmp samesign ult i64 %76, %78 br i1 %79, label %69, label %171, !llvm.loop !78 -80: ; preds = %.thread14, %52 +80: ; preds = %.thread42, %52 %81 = phi i64 [ 0, %52 ], [ %136, %.thread14 ] %82 = phi i8 [ 0, %52 ], [ %135, %.thread14 ] %83 = phi i32 [ 0, %52 ], [ %137, %.thread14 ] @@ -3231,7 +3231,7 @@ define internal noundef range(i32 -22, 1) i32 @vlv_compute_pipe_wm(ptr noundef r 90: ; preds = %80 %91 = tail call zeroext i1 @intel_wm_plane_visible(ptr noundef %9, ptr noundef %31) #14 - br i1 %91, label %92, label %.thread14 + br i1 %91, label %92, label %.thread42 92: ; preds = %90 %93 = load i32, ptr %18, align 8 @@ -3282,9 +3282,9 @@ define internal noundef range(i32 -22, 1) i32 @vlv_compute_pipe_wm(ptr noundef r %127 = tail call i32 @llvm.umin.i32(i32 %126, i32 65535) %128 = trunc nuw i32 %127 to i16 %129 = icmp ult i16 %59, %128 - br i1 %129, label %.thread, label %.thread14 + br i1 %129, label %.thread, label %.thread42 -.thread14: ; preds = %90, %125 +.thread42: ; preds = %90, %125 %130 = phi i16 [ %128, %125 ], [ 0, %90 ] %131 = getelementptr [3 x %struct.g4x_pipe_wm], ptr %58, i64 0, i64 %81 %132 = load i16, ptr %131, align 2 @@ -3297,19 +3297,19 @@ define internal noundef range(i32 -22, 1) i32 @vlv_compute_pipe_wm(ptr noundef r %138 = load i8, ptr %49, align 8 %139 = zext i8 %138 to i64 %140 = icmp samesign ult i64 %136, %139 - br i1 %140, label %80, label %.loopexit23, !llvm.loop !79 + br i1 %140, label %80, label %.loopexit20, !llvm.loop !79 .thread: ; preds = %80, %125 %141 = trunc nuw nsw i64 %81 to i32 - br label %.loopexit23 + br label %.loopexit20 -.loopexit23: ; preds = %.thread14, %.thread +.loopexit20: ; preds = %.thread42, %.thread %142 = phi i8 [ %82, %.thread ], [ %135, %.thread14 ] %143 = phi i32 [ %141, %.thread ], [ %137, %.thread14 ] %144 = icmp ne i8 %142, 0 br label %145 -145: ; preds = %.loopexit23, %48 +145: ; preds = %.loopexit20, %48 %146 = phi i32 [ 0, %48 ], [ %143, %.loopexit23 ] %147 = phi i1 [ false, %48 ], [ %144, %.loopexit23 ] %148 = load ptr, ptr %9, align 8 @@ -3388,9 +3388,9 @@ define internal noundef range(i32 -22, 1) i32 @vlv_compute_pipe_wm(ptr noundef r %201 = load i32, ptr %200, align 8 %202 = sext i32 %201 to i64 %203 = icmp slt i64 %198, %202 - br i1 %203, label %22, label %.loopexit24, !llvm.loop !80 + br i1 %203, label %22, label %.loopexit21, !llvm.loop !80 -.loopexit24: ; preds = %.critedge, %2 +.loopexit21: ; preds = %.critedge, %2 %204 = phi i32 [ 0, %2 ], [ %197, %.critedge ] %205 = getelementptr inbounds nuw i8, ptr %9, i64 10 %206 = load i8, ptr %205, align 2 @@ -3398,9 +3398,9 @@ define internal noundef range(i32 -22, 1) i32 @vlv_compute_pipe_wm(ptr noundef r %208 = icmp eq i8 %207, 0 %209 = select i1 %208, i32 %204, i32 -1 %210 = icmp eq i32 %209, 0 - br i1 %210, label %.thread22, label %211 + br i1 %210, label %.thread19, label %211 -211: ; preds = %.loopexit24 +211: ; preds = %.loopexit21 %212 = and i32 %209, -129 %213 = icmp eq i32 %212, 0 br i1 %213, label %354, label %214 @@ -3436,7 +3436,7 @@ define internal noundef range(i32 -22, 1) i32 @vlv_compute_pipe_wm(ptr noundef r %242 = add nuw nsw i32 %241, %237 %243 = add nuw nsw i32 %242, %240 %244 = icmp samesign ult i32 %243, 512 - br i1 %244, label %245, label %.thread22 + br i1 %244, label %245, label %.thread19 245: ; preds = %214 %246 = tail call i32 @llvm.umax.i32(i32 %243, i32 1) @@ -3498,7 +3498,7 @@ define internal noundef range(i32 -22, 1) i32 @vlv_compute_pipe_wm(ptr noundef r %286 = sdiv i32 %285, %283 br label %287 -287: ; preds = %.thread17, %276 +287: ; preds = %.thread14, %276 %288 = phi i64 [ 0, %276 ], [ %308, %.thread17 ] %289 = phi i32 [ %281, %276 ], [ %307, %.thread17 ] %290 = load i8, ptr %247, align 1 @@ -3506,16 +3506,16 @@ define internal noundef range(i32 -22, 1) i32 @vlv_compute_pipe_wm(ptr noundef r %292 = shl nuw nsw i64 1, %288 %293 = and i64 %292, %291 %294 = icmp eq i64 %293, 0 - br i1 %294, label %.thread17, label %295 + br i1 %294, label %.thread14, label %295 295: ; preds = %287 %296 = icmp eq i32 %289, 0 - br i1 %296, label %.thread20, label %297 + br i1 %296, label %.thread17, label %297 297: ; preds = %295 %298 = and i64 %292, %248 %299 = icmp eq i64 %298, 0 - br i1 %299, label %.thread17, label %300 + br i1 %299, label %.thread14, label %300 300: ; preds = %297 %301 = tail call i32 @llvm.smin.i32(i32 %286, i32 %289) @@ -3525,15 +3525,15 @@ define internal noundef range(i32 -22, 1) i32 @vlv_compute_pipe_wm(ptr noundef r %305 = add i16 %303, %304 store i16 %305, ptr %302, align 2 %306 = sub i32 %289, %301 - br label %.thread17 + br label %.thread14 -.thread17: ; preds = %297, %300, %287 +.thread14: ; preds = %297, %300, %287 %307 = phi i32 [ %289, %287 ], [ %289, %297 ], [ %306, %300 ] %308 = add nuw nsw i64 %288, 1 %309 = icmp eq i64 %308, 8 br i1 %309, label %310, label %287, !llvm.loop !82 -310: ; preds = %.thread17 +310: ; preds = %.thread14 %311 = icmp ne i8 %227, 0 %312 = icmp ne i32 %307, 0 %313 = select i1 %311, i1 %312, i1 false @@ -3548,13 +3548,13 @@ define internal noundef range(i32 -22, 1) i32 @vlv_compute_pipe_wm(ptr noundef r %319 = getelementptr inbounds nuw i8, ptr %318, i64 80 %320 = load ptr, ptr %319, align 8 %321 = icmp eq ptr %320, null - br i1 %321, label %322, label %.thread19 + br i1 %321, label %322, label %.thread16 322: ; preds = %314 %323 = load ptr, ptr %318, align 8 - br label %.thread19 + br label %.thread16 -.thread19: ; preds = %314, %322 +.thread16: ; preds = %314, %322 %324 = phi ptr [ %323, %322 ], [ %320, %314 ] tail call void (ptr, ...) @__warn_printk(ptr noundef nonnull @.str, ptr noundef %317, ptr noundef %324, ptr noundef nonnull @.str.25) #14 tail call void asm sideeffect "972: nop\0A\09.pushsection .discard.instr_begin\0A\09.long 972b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 972) #14, !srcloc !85 @@ -3567,15 +3567,15 @@ define internal noundef range(i32 -22, 1) i32 @vlv_compute_pipe_wm(ptr noundef r %326 = icmp eq i8 %227, 0 br i1 %326, label %328, label %345 -.thread20: ; preds = %295 +.thread17: ; preds = %295 %327 = icmp eq i8 %227, 0 - br i1 %327, label %.thread21, label %345 + br i1 %327, label %.thread18, label %345 328: ; preds = %325 %329 = icmp eq i32 %307, 511 - br i1 %329, label %343, label %.thread21, !prof !83 + br i1 %329, label %343, label %.thread18, !prof !83 -.thread21: ; preds = %.thread20, %328 +.thread18: ; preds = %.thread17, %328 %330 = phi i32 [ %307, %328 ], [ 0, %.thread20 ] tail call void asm sideeffect "975: nop\0A\09.pushsection .discard.instr_begin\0A\09.long 975b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 975) #14, !srcloc !89 %331 = getelementptr inbounds nuw i8, ptr %223, i64 8 @@ -3587,11 +3587,11 @@ define internal noundef range(i32 -22, 1) i32 @vlv_compute_pipe_wm(ptr noundef r %337 = icmp eq ptr %336, null br i1 %337, label %338, label %340 -338: ; preds = %.thread21 +338: ; preds = %.thread18 %339 = load ptr, ptr %334, align 8 br label %340 -340: ; preds = %338, %.thread21 +340: ; preds = %338, %.thread18 %341 = phi ptr [ %339, %338 ], [ %336, %.thread21 ] tail call void (ptr, ...) @__warn_printk(ptr noundef nonnull @.str, ptr noundef %333, ptr noundef %341, ptr noundef nonnull @.str.26) #14 tail call void asm sideeffect "976: nop\0A\09.pushsection .discard.instr_begin\0A\09.long 976b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 976) #14, !srcloc !90 @@ -3606,7 +3606,7 @@ define internal noundef range(i32 -22, 1) i32 @vlv_compute_pipe_wm(ptr noundef r store i16 %344, ptr %221, align 2 br label %345 -345: ; preds = %325, %343, %.thread19, %.thread20 +345: ; preds = %325, %343, %.thread16, %.thread17 %346 = load i8, ptr %205, align 2 %347 = and i8 %346, 14 %348 = icmp eq i8 %347, 0 @@ -3624,9 +3624,9 @@ define internal noundef range(i32 -22, 1) i32 @vlv_compute_pipe_wm(ptr noundef r 354: ; preds = %352, %349, %211 %355 = tail call fastcc i32 @_vlv_compute_pipe_wm(ptr noundef %9), !range !94 - br label %.thread22 + br label %.thread19 -.thread22: ; preds = %214, %354, %.loopexit24 +.thread19: ; preds = %214, %354, %.loopexit21 %356 = phi i32 [ %355, %354 ], [ 0, %.loopexit24 ], [ -22, %214 ] ret i32 %356 } diff --git a/bench/linux/optimized/intel_display.ll b/bench/linux/optimized/intel_display.ll index 5621d09d4d0..227c4ab8db1 100644 --- a/bench/linux/optimized/intel_display.ll +++ b/bench/linux/optimized/intel_display.ll @@ -16066,7 +16066,7 @@ define dso_local range(i32 0, 5) i32 @intel_mode_valid_max_plane_size(ptr nounde %4 = getelementptr inbounds nuw i8, ptr %0, i64 2632 %5 = load i16, ptr %4, align 8 %6 = icmp ult i16 %5, 9 - br i1 %6, label %22, label %7 + br i1 %6, label %23, label %7 7: ; preds = %3 %8 = icmp ugt i16 %5, 10 @@ -16077,7 +16077,7 @@ define dso_local range(i32 0, 5) i32 @intel_mode_valid_max_plane_size(ptr nounde %13 = load i16, ptr %12, align 4 %14 = zext i16 %13 to i32 %15 = icmp samesign ult i32 %11, %14 - br i1 %15, label %22, label %16 + br i1 %15, label %23, label %16 16: ; preds = %7 %17 = getelementptr inbounds nuw i8, ptr %1, i64 14 @@ -16087,9 +16087,9 @@ define dso_local range(i32 0, 5) i32 @intel_mode_valid_max_plane_size(ptr nounde %21 = select i1 %20, i32 4, i32 0 br label %22 -22: ; preds = %16, %7, %3 - %23 = phi i32 [ 0, %3 ], [ 3, %7 ], [ %21, %16 ] - ret i32 %23 +23: ; preds = %16, %7, %3 + %24 = phi i32 [ 0, %3 ], [ 3, %7 ], [ %21, %16 ] + ret i32 %24 } ; Function Attrs: fn_ret_thunk_extern mustprogress nofree norecurse nosync nounwind null_pointer_is_valid willreturn memory(read, argmem: readwrite, inaccessiblemem: none) diff --git a/bench/linux/optimized/intel_fbc.ll b/bench/linux/optimized/intel_fbc.ll index 56532b14079..24e74cf6f8d 100644 --- a/bench/linux/optimized/intel_fbc.ll +++ b/bench/linux/optimized/intel_fbc.ll @@ -2537,36 +2537,36 @@ define internal fastcc zeroext i1 @intel_fbc_is_ok(ptr noundef readonly captures %48 = icmp eq i16 %9, 7 br i1 %48, label %49, label %51 -49: ; preds = %40 - %50 = tail call i32 @llvm.smin.i32(i32 %47, i32 2048) - br label %55 +50: ; preds = %40 + %51 = tail call i32 @llvm.smin.i32(i32 %47, i32 2048) + br label %56 -51: ; preds = %40 - %52 = icmp ugt i16 %9, 7 - br i1 %52, label %53, label %55 +52: ; preds = %40 + %53 = icmp ugt i16 %9, 7 + br i1 %53, label %54, label %56 -53: ; preds = %51 - %54 = tail call i32 @llvm.smin.i32(i32 %47, i32 2560) - br label %55 +54: ; preds = %52 + %55 = tail call i32 @llvm.smin.i32(i32 %47, i32 2560) + br label %56 -55: ; preds = %53, %51, %49 - %56 = phi i32 [ %50, %49 ], [ %54, %53 ], [ %47, %51 ] - %57 = getelementptr inbounds nuw i8, ptr %0, i64 308 - %58 = load i32, ptr %57, align 4 - %59 = getelementptr inbounds nuw i8, ptr %0, i64 196 - %60 = load i32, ptr %59, align 4 - %61 = and i32 %60, 10 - %62 = icmp eq i32 %61, 0 - br i1 %62, label %63, label %66 - -63: ; preds = %55 - %64 = zext i8 %34 to i32 - %65 = udiv i32 %58, %64 +56: ; preds = %54, %52, %50 + %57 = phi i32 [ %51, %49 ], [ %55, %53 ], [ %47, %51 ] + %58 = getelementptr inbounds nuw i8, ptr %0, i64 308 + %59 = load i32, ptr %58, align 4 + %60 = getelementptr inbounds nuw i8, ptr %0, i64 196 + %61 = load i32, ptr %60, align 4 + %62 = and i32 %61, 10 + %63 = icmp eq i32 %62, 0 + br i1 %63, label %64, label %66 + +64: ; preds = %56 + %65 = zext i8 %34 to i32 + %66 = udiv i32 %59, %65 br label %66 -66: ; preds = %63, %55 - %67 = phi i32 [ %58, %55 ], [ %65, %63 ] - %68 = shl i32 %67, 2 +95: ; preds = %63, %56 + %96 = phi i32 [ %58, %55 ], [ %65, %63 ] + %68 = shl i32 %96, 2 br i1 %10, label %69, label %85 69: ; preds = %66 diff --git a/bench/llvm/optimized/CodeGenDAGPatterns.ll b/bench/llvm/optimized/CodeGenDAGPatterns.ll index ecc6bf004d2..0bf98c19be8 100644 --- a/bench/llvm/optimized/CodeGenDAGPatterns.ll +++ b/bench/llvm/optimized/CodeGenDAGPatterns.ll @@ -46006,16 +46006,16 @@ _ZNSt12_Vector_baseISt6vectorIN4llvm18IntrusiveRefCntPtrINS1_15TreePatternNodeEE %442 = getelementptr inbounds nuw %"class.std::vector", ptr %441, i64 %439 call void @llvm.memset.p0.i64(ptr nonnull align 8 %441, i8 0, i64 %440, i1 false) %scevgep.i.i.i.i.i = getelementptr i8, ptr %441, i64 %440 - %.pre358 = load ptr, ptr %432, align 8, !tbaa !409 - %.pre359 = load ptr, ptr %431, align 8, !tbaa !410 - %.pre361 = ptrtoint ptr %.pre358 to i64 - %.pre362 = ptrtoint ptr %.pre359 to i64 - %.pre364 = sub i64 %.pre361, %.pre362 - %.pre366 = lshr exact i64 %.pre364, 3 + %.pre360 = load ptr, ptr %432, align 8, !tbaa !409 + %.pre361 = load ptr, ptr %431, align 8, !tbaa !410 + %.pre363 = ptrtoint ptr %.pre360 to i64 + %.pre364 = ptrtoint ptr %.pre361 to i64 + %.pre366 = sub i64 %.pre363, %.pre364 + %.pre368 = lshr exact i64 %.pre366, 3 br label %_ZNSt6vectorIS_IN4llvm18IntrusiveRefCntPtrINS0_15TreePatternNodeEEESaIS3_EESaIS5_EEC2EmRKS6_.exit _ZNSt6vectorIS_IN4llvm18IntrusiveRefCntPtrINS0_15TreePatternNodeEEESaIS3_EESaIS5_EEC2EmRKS6_.exit: ; preds = %_ZNSt12_Vector_baseISt6vectorIN4llvm18IntrusiveRefCntPtrINS1_15TreePatternNodeEEESaIS4_EESaIS6_EEC2EmRKS7_.exit.thread.i, %.lr.ph.preheader.i.i.i.i.i - %.pre-phi367 = phi i64 [ %438, %_ZNSt12_Vector_baseISt6vectorIN4llvm18IntrusiveRefCntPtrINS1_15TreePatternNodeEEESaIS4_EESaIS6_EEC2EmRKS7_.exit.thread.i ], [ %.pre366, %.lr.ph.preheader.i.i.i.i.i ] + %.pre-phi369 = phi i64 [ %438, %_ZNSt12_Vector_baseISt6vectorIN4llvm18IntrusiveRefCntPtrINS1_15TreePatternNodeEEESaIS4_EESaIS6_EEC2EmRKS7_.exit.thread.i ], [ %.pre368, %.lr.ph.preheader.i.i.i.i.i ] %443 = phi ptr [ null, %_ZNSt12_Vector_baseISt6vectorIN4llvm18IntrusiveRefCntPtrINS1_15TreePatternNodeEEESaIS4_EESaIS6_EEC2EmRKS7_.exit.thread.i ], [ %441, %.lr.ph.preheader.i.i.i.i.i ] %.sink.i = phi ptr [ null, %_ZNSt12_Vector_baseISt6vectorIN4llvm18IntrusiveRefCntPtrINS1_15TreePatternNodeEEESaIS4_EESaIS6_EEC2EmRKS7_.exit.thread.i ], [ %442, %.lr.ph.preheader.i.i.i.i.i ] %.0.lcssa.i.i.i.i.i = phi ptr [ null, %_ZNSt12_Vector_baseISt6vectorIN4llvm18IntrusiveRefCntPtrINS1_15TreePatternNodeEEESaIS4_EESaIS6_EEC2EmRKS7_.exit.thread.i ], [ %scevgep.i.i.i.i.i, %.lr.ph.preheader.i.i.i.i.i ] @@ -46023,7 +46023,7 @@ _ZNSt6vectorIS_IN4llvm18IntrusiveRefCntPtrINS0_15TreePatternNodeEEESaIS3_EESaIS5 %445 = getelementptr inbounds nuw i8, ptr %37, i64 16 store ptr %.sink.i, ptr %445, align 8, !tbaa !489 store ptr %.0.lcssa.i.i.i.i.i, ptr %444, align 8, !tbaa !490 - %446 = and i64 %.pre-phi367, 4294967295 + %446 = and i64 %.pre-phi369, 4294967295 %.not94353 = icmp eq i64 %446, 0 br i1 %.not94353, label %._crit_edge.thread, label %.lr.ph.preheader @@ -46032,13 +46032,13 @@ _ZNSt6vectorIS_IN4llvm18IntrusiveRefCntPtrINS0_15TreePatternNodeEEESaIS3_EESaIS5 br label %448 .lr.ph.preheader: ; preds = %_ZNSt6vectorIS_IN4llvm18IntrusiveRefCntPtrINS0_15TreePatternNodeEEESaIS3_EESaIS5_EEC2EmRKS6_.exit - %447 = and i64 %.pre-phi367, 4294967295 + %447 = and i64 %.pre-phi369, 4294967295 br label %.lr.ph ._crit_edge: ; preds = %_ZN4llvm18IntrusiveRefCntPtrINS_15TreePatternNodeEED2Ev.exit338 - %.pre360 = load ptr, ptr %0, align 8, !tbaa !337 - store ptr %.pre360, ptr %39, align 8, !tbaa !337 - %.not.i.i328 = icmp eq ptr %.pre360, null + %.pre362 = load ptr, ptr %0, align 8, !tbaa !337 + store ptr %.pre362, ptr %39, align 8, !tbaa !337 + %.not.i.i328 = icmp eq ptr %.pre362, null br i1 %.not.i.i328, label %_ZN4llvm18IntrusiveRefCntPtrINS_15TreePatternNodeEEC2ERKS2_.exit329.thread, label %448 _ZN4llvm18IntrusiveRefCntPtrINS_15TreePatternNodeEEC2ERKS2_.exit329.thread: ; preds = %._crit_edge @@ -46046,7 +46046,7 @@ _ZN4llvm18IntrusiveRefCntPtrINS_15TreePatternNodeEEC2ERKS2_.exit329.thread: ; pr br label %_ZN4llvm18IntrusiveRefCntPtrINS_15TreePatternNodeEED2Ev.exit332 448: ; preds = %._crit_edge.thread, %._crit_edge - %449 = phi ptr [ %430, %._crit_edge.thread ], [ %.pre360, %._crit_edge ] + %449 = phi ptr [ %430, %._crit_edge.thread ], [ %.pre362, %._crit_edge ] %450 = load i32, ptr %449, align 4, !tbaa !469 %451 = add i32 %450, 1 store i32 %451, ptr %449, align 4, !tbaa !469 @@ -46166,9 +46166,9 @@ _ZN4llvm18IntrusiveRefCntPtrINS_15TreePatternNodeEED2Ev.exit338: ; preds = %_ZN4 %508 = select i1 %488, i32 2, i32 1 br label %509 -509: ; preds = %506, %528 - %.091356 = phi i1 [ true, %506 ], [ %.1, %528 ] - %.092355 = phi i32 [ %507, %506 ], [ %529, %528 ] +509: ; preds = %506, %527 + %indvars.iv358 = phi i1 [ true, %506 ], [ %.1, %528 ] + %.091356 = phi i32 [ %507, %506 ], [ %529, %528 ] %510 = load ptr, ptr %0, align 8, !tbaa !337 %511 = getelementptr inbounds nuw i8, ptr %510, i64 152 %512 = zext i32 %.092355 to i64 @@ -46181,34 +46181,34 @@ _ZN4llvm18IntrusiveRefCntPtrINS_15TreePatternNodeEED2Ev.exit338: ; preds = %_ZN4 %.not351 = icmp eq i64 %517, 0 br i1 %.not351, label %528, label %518 -518: ; preds = %509 +518:; preds = %509 %519 = and i64 %.0.copyload.i.i.i.i.i.i.i.i339, -8 %520 = inttoptr i64 %519 to ptr %521 = getelementptr inbounds nuw i8, ptr %520, i64 8 %522 = load i8, ptr %521, align 8, !tbaa !258 - %523 = icmp ne i8 %522, 5 + %.not96352 = icmp ne i8 %522, 5 %.not96352 = icmp eq i64 %519, 0 %.not96 = or i1 %.not96352, %523 br i1 %.not96, label %528, label %524 -524: ; preds = %518 +524: ; preds = %518 %525 = getelementptr inbounds nuw i8, ptr %520, i64 24 %526 = load ptr, ptr %525, align 8, !tbaa !367 %527 = call noundef zeroext i1 @_ZNK4llvm6Record12isSubClassOfENS_9StringRefE(ptr noundef nonnull align 8 dereferenceable(192) %526, ptr nonnull @.str.269, i64 8) %not. = xor i1 %527, true %spec.select = select i1 %not., i1 %.091356, i1 false - br label %528 + br label %527 -528: ; preds = %518, %524, %509 +527: ; preds = %518, %524, %509 %.1 = phi i1 [ %.091356, %509 ], [ %spec.select, %524 ], [ %.091356, %518 ] - %529 = add i32 %.092355, 1 + %indvars.iv.next359 = add i32 %.092355, 1 %.not95 = icmp eq i32 %508, %.092355 - br i1 %.not95, label %530, label %509, !llvm.loop !1292 + br i1 %.not95, label %528, label %509, !llvm.loop !1292 -530: ; preds = %528 - br i1 %.1, label %531, label %_ZN4llvm18IntrusiveRefCntPtrINS_15TreePatternNodeEED2Ev.exit345 +528: ; preds = %527 + br i1 %.1, label %529, label %_ZN4llvm18IntrusiveRefCntPtrINS_15TreePatternNodeEED2Ev.exit345 -531: ; preds = %530 +529: ; preds = %528 %532 = zext i1 %488 to i64 %533 = load ptr, ptr %37, align 8, !tbaa !486 %534 = getelementptr inbounds nuw %"class.std::vector", ptr %533, i64 %532 @@ -46218,7 +46218,7 @@ _ZN4llvm18IntrusiveRefCntPtrINS_15TreePatternNodeEED2Ev.exit338: ; preds = %_ZN4 %538 = getelementptr inbounds nuw i8, ptr %534, i64 8 %539 = load ptr, ptr %538, align 8, !tbaa !409 %540 = getelementptr inbounds nuw i8, ptr %534, i64 16 - %541 = load ptr, ptr %540, align 8, !tbaa !475 + %539 = load ptr, ptr %540, align 8, !tbaa !475 %542 = load ptr, ptr %536, align 8, !tbaa !410 store ptr %542, ptr %534, align 8, !tbaa !410 %543 = getelementptr inbounds nuw i8, ptr %536, i64 8 @@ -46239,23 +46239,23 @@ _ZN4llvm18IntrusiveRefCntPtrINS_15TreePatternNodeEEC2ERKS2_.exit342.thread: ; pr call fastcc void @_ZL20CombineChildVariantsN4llvm18IntrusiveRefCntPtrINS_15TreePatternNodeEEERKSt6vectorIS3_IS2_SaIS2_EESaIS5_EERS5_RNS_18CodeGenDAGPatternsERKNS_9StringSetINS_15MallocAllocatorEEE(ptr noundef %40, ptr noundef nonnull align 8 dereferenceable(24) %37, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull align 8 dereferenceable(1252) %2, ptr noundef nonnull align 8 dereferenceable(24) %3) br label %_ZN4llvm18IntrusiveRefCntPtrINS_15TreePatternNodeEED2Ev.exit345 -548: ; preds = %531 - %549 = load i32, ptr %547, align 4, !tbaa !469 - %550 = add i32 %549, 1 - store i32 %550, ptr %547, align 4, !tbaa !469 +545: ; preds = %529 + %546 = load i32, ptr %547, align 4, !tbaa !469 + %547 = add i32 %546, 1 + store i32 %547, ptr %547, align 4, !tbaa !469 call fastcc void @_ZL20CombineChildVariantsN4llvm18IntrusiveRefCntPtrINS_15TreePatternNodeEEERKSt6vectorIS3_IS2_SaIS2_EESaIS5_EERS5_RNS_18CodeGenDAGPatternsERKNS_9StringSetINS_15MallocAllocatorEEE(ptr noundef %40, ptr noundef nonnull align 8 dereferenceable(24) %37, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull align 8 dereferenceable(1252) %2, ptr noundef nonnull align 8 dereferenceable(24) %3) - %551 = load i32, ptr %547, align 4, !tbaa !469 - %552 = add i32 %551, -1 - store i32 %552, ptr %547, align 4, !tbaa !469 - %.not.i.i.i344 = icmp eq i32 %552, 0 - br i1 %.not.i.i.i344, label %553, label %_ZN4llvm18IntrusiveRefCntPtrINS_15TreePatternNodeEED2Ev.exit345 + %548 = load i32, ptr %547, align 4, !tbaa !469 + %549 = add i32 %548, -1 + store i32 %549, ptr %547, align 4, !tbaa !469 + %.not.i.i.i344 = icmp eq i32 %549, 0 + br i1 %.not.i.i.i344, label %550, label %_ZN4llvm18IntrusiveRefCntPtrINS_15TreePatternNodeEED2Ev.exit345 -553: ; preds = %548 +550: ; preds = %545 call void @_ZN4llvm15TreePatternNodeD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %547) #32 call void @_ZdlPvm(ptr noundef nonnull align 4 dereferenceable(4) %547, i64 noundef 184) #36 br label %_ZN4llvm18IntrusiveRefCntPtrINS_15TreePatternNodeEED2Ev.exit345 -_ZN4llvm18IntrusiveRefCntPtrINS_15TreePatternNodeEED2Ev.exit345: ; preds = %553, %548, %_ZN4llvm18IntrusiveRefCntPtrINS_15TreePatternNodeEEC2ERKS2_.exit342.thread, %530, %_ZNK4llvm15TreePatternNode22isCommutativeIntrinsicERKNS_18CodeGenDAGPatternsE.exit +_ZN4llvm18IntrusiveRefCntPtrINS_15TreePatternNodeEED2Ev.exit345: ; preds = %550, %545, %_ZN4llvm18IntrusiveRefCntPtrINS_15TreePatternNodeEEC2ERKS2_.exit342.thread, %528, %_ZNK4llvm15TreePatternNode22isCommutativeIntrinsicERKNS_18CodeGenDAGPatternsE.exit call void @_ZNSt6vectorIS_IN4llvm18IntrusiveRefCntPtrINS0_15TreePatternNodeEEESaIS3_EESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %37) #32 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %37) #32 br label %_ZNSt6vectorIN4llvm18IntrusiveRefCntPtrINS0_15TreePatternNodeEEESaIS3_EE9push_backERKS3_.exit diff --git a/bench/llvm/optimized/CombinerHelper.ll b/bench/llvm/optimized/CombinerHelper.ll index abea72af49a..7246a0e048b 100644 --- a/bench/llvm/optimized/CombinerHelper.ll +++ b/bench/llvm/optimized/CombinerHelper.ll @@ -7782,11 +7782,11 @@ define dso_local noundef zeroext i1 @_ZNK4llvm14CombinerHelper18matchCombineDivR %5 = alloca [1 x %"class.llvm::LLT"], align 8 %6 = getelementptr inbounds nuw i8, ptr %1, i64 68 %7 = load i16, ptr %6, align 4, !tbaa !228 - %.fr53 = freeze i16 %7 - %8 = and i16 %.fr53, -2 + %.fr51 = freeze i16 %7 + %8 = and i16 %.fr51, -2 %switch = icmp eq i16 %8, 56 %.032.in.v = select i1 %switch, i16 56, i16 58 - %.032.in = icmp eq i16 %.fr53, %.032.in.v + %.032.in = icmp eq i16 %.fr51, %.032.in.v %9 = getelementptr inbounds nuw i8, ptr %1, i64 32 %10 = load ptr, ptr %9, align 8, !tbaa !241 %11 = getelementptr inbounds nuw i8, ptr %10, i64 36 @@ -7892,14 +7892,14 @@ _ZNK4llvm14CombinerHelper24isLegalOrBeforeLegalizerERKNS_13LegalityQueryE.exit._ br i1 %switch, label %.lr.ph.split.us, label %.lr.ph.split .lr.ph.split.us: ; preds = %_ZN4llvm19MachineRegisterInfo26defusechain_instr_iteratorILb1ELb0ELb1ELb0ELb1ELb0EE7advanceEv.exit.i.us, %.lr.ph - %.sroa.041.052.us = phi ptr [ %.sroa.0.0.i.i, %.lr.ph ], [ %storemerge.i.i.us, %_ZN4llvm19MachineRegisterInfo26defusechain_instr_iteratorILb1ELb0ELb1ELb0ELb1ELb0EE7advanceEv.exit.i.us ] - %56 = getelementptr inbounds nuw i8, ptr %.sroa.041.052.us, i64 8 + %.sroa.041.050.us = phi ptr [ %.sroa.0.0.i.i, %.lr.ph ], [ %storemerge.i.i.us, %_ZN4llvm19MachineRegisterInfo26defusechain_instr_iteratorILb1ELb0ELb1ELb0ELb1ELb0EE7advanceEv.exit.i.us ] + %56 = getelementptr inbounds nuw i8, ptr %.sroa.041.050.us, i64 8 %57 = load ptr, ptr %56, align 8, !tbaa !220 %58 = load ptr, ptr %55, align 8, !tbaa !247 %59 = getelementptr inbounds nuw i8, ptr %57, i64 24 %60 = load ptr, ptr %59, align 8, !tbaa !247 %61 = icmp eq ptr %58, %60 - br i1 %61, label %62, label %79 + br i1 %61, label %62, label %80 62: ; preds = %.lr.ph.split.us %63 = getelementptr inbounds nuw i8, ptr %57, i64 68 @@ -7907,69 +7907,69 @@ _ZNK4llvm14CombinerHelper24isLegalOrBeforeLegalizerERKNS_13LegalityQueryE.exit._ %65 = icmp eq i16 %.03647, %64 br i1 %65, label %66, label %79 -66: ; preds = %62 - %67 = load ptr, ptr %9, align 8, !tbaa !241 - %68 = getelementptr inbounds nuw i8, ptr %67, i64 64 - %69 = getelementptr inbounds nuw i8, ptr %57, i64 32 - %70 = load ptr, ptr %69, align 8, !tbaa !241 - %71 = getelementptr inbounds nuw i8, ptr %70, i64 64 - %72 = call noundef zeroext i1 @_ZNK4llvm14CombinerHelper14matchEqualDefsERKNS_14MachineOperandES3_(ptr noundef nonnull align 8 dereferenceable(72) %0, ptr noundef nonnull align 8 dereferenceable(32) %68, ptr noundef nonnull align 8 dereferenceable(32) %71) - br i1 %72, label %73, label %79 +67: ; preds = %62 + %68 = load ptr, ptr %9, align 8, !tbaa !241 + %69 = getelementptr inbounds nuw i8, ptr %68, i64 64 + %70 = getelementptr inbounds nuw i8, ptr %57, i64 32 + %71 = load ptr, ptr %70, align 8, !tbaa !241 + %72 = getelementptr inbounds nuw i8, ptr %71, i64 64 + %73 = call noundef zeroext i1 @_ZNK4llvm14CombinerHelper14matchEqualDefsERKNS_14MachineOperandES3_(ptr noundef nonnull align 8 dereferenceable(72) %0, ptr noundef nonnull align 8 dereferenceable(32) %69, ptr noundef nonnull align 8 dereferenceable(32) %72) + br i1 %73, label %74, label %80 -73: ; preds = %66 - %74 = load ptr, ptr %9, align 8, !tbaa !241 - %75 = getelementptr inbounds nuw i8, ptr %74, i64 32 - %76 = load ptr, ptr %69, align 8, !tbaa !241 - %77 = getelementptr inbounds nuw i8, ptr %76, i64 32 - %78 = call noundef zeroext i1 @_ZNK4llvm14CombinerHelper14matchEqualDefsERKNS_14MachineOperandES3_(ptr noundef nonnull align 8 dereferenceable(72) %0, ptr noundef nonnull align 8 dereferenceable(32) %75, ptr noundef nonnull align 8 dereferenceable(32) %77) - br i1 %78, label %.critedge39, label %79 +74: ; preds = %67 + %75 = load ptr, ptr %9, align 8, !tbaa !241 + %76 = getelementptr inbounds nuw i8, ptr %75, i64 32 + %77 = load ptr, ptr %70, align 8, !tbaa !241 + %78 = getelementptr inbounds nuw i8, ptr %77, i64 32 + %79 = call noundef zeroext i1 @_ZNK4llvm14CombinerHelper14matchEqualDefsERKNS_14MachineOperandES3_(ptr noundef nonnull align 8 dereferenceable(72) %0, ptr noundef nonnull align 8 dereferenceable(32) %76, ptr noundef nonnull align 8 dereferenceable(32) %78) + br i1 %79, label %.critedge39, label %80 -79: ; preds = %73, %66, %62, %.lr.ph.split.us - %80 = load ptr, ptr %56, align 8, !tbaa !220 +80: ; preds = %74, %67, %62, %.lr.ph.split.us + %81 = load ptr, ptr %56, align 8, !tbaa !220 br label %.critedge2.i.i.us -.critedge2.i.i.us: ; preds = %.critedge2.i.i.us.backedge, %79 - %.pn.i.i.us = phi ptr [ %.sroa.041.052.us, %79 ], [ %storemerge.i.i.us, %.critedge2.i.i.us.backedge ] +.critedge2.i.i.us: ; preds = %.critedge2.i.i.us.backedge, %80 + %.pn.i.i.us = phi ptr [ %.sroa.041.050.us, %79 ], [ %storemerge.i.i.us, %.critedge2.i.i.us.backedge ] %storemerge.in.i.i.us = getelementptr inbounds nuw i8, ptr %.pn.i.i.us, i64 24 %storemerge.i.i.us = load ptr, ptr %storemerge.in.i.i.us, align 8, !tbaa !204 %.not.i.i.us = icmp eq ptr %storemerge.i.i.us, null - br i1 %.not.i.i.us, label %.loopexit, label %81 + br i1 %.not.i.i.us, label %.loopexit, label %82 -81: ; preds = %.critedge2.i.i.us - %82 = load i32, ptr %storemerge.i.i.us, align 8 - %83 = and i32 %82, -2130706432 - %or.cond.not.i.i.us = icmp eq i32 %83, 0 +82: ; preds = %.critedge2.i.i.us + %83 = load i32, ptr %storemerge.i.i.us, align 8 + %84 = and i32 %83, -2130706432 + %or.cond.not.i.i.us = icmp eq i32 %84, 0 br i1 %or.cond.not.i.i.us, label %_ZN4llvm19MachineRegisterInfo26defusechain_instr_iteratorILb1ELb0ELb1ELb0ELb1ELb0EE7advanceEv.exit.i.us, label %.critedge2.i.i.us.backedge -.critedge2.i.i.us.backedge: ; preds = %81, %_ZN4llvm19MachineRegisterInfo26defusechain_instr_iteratorILb1ELb0ELb1ELb0ELb1ELb0EE7advanceEv.exit.i.us +.critedge2.i.i.us.backedge: ; preds = %82, %_ZN4llvm19MachineRegisterInfo26defusechain_instr_iteratorILb1ELb0ELb1ELb0ELb1ELb0EE7advanceEv.exit.i.us br label %.critedge2.i.i.us, !llvm.loop !274 -_ZN4llvm19MachineRegisterInfo26defusechain_instr_iteratorILb1ELb0ELb1ELb0ELb1ELb0EE7advanceEv.exit.i.us: ; preds = %81 - %84 = getelementptr inbounds nuw i8, ptr %storemerge.i.i.us, i64 8 - %85 = load ptr, ptr %84, align 8, !tbaa !220 - %86 = icmp eq ptr %85, %80 - br i1 %86, label %.critedge2.i.i.us.backedge, label %.lr.ph.split.us, !llvm.loop !274 +_ZN4llvm19MachineRegisterInfo26defusechain_instr_iteratorILb1ELb0ELb1ELb0ELb1ELb0EE7advanceEv.exit.i.us: ; preds = %82 + %85 = getelementptr inbounds nuw i8, ptr %storemerge.i.i.us, i64 8 + %86 = load ptr, ptr %85, align 8, !tbaa !220 + %87 = icmp eq ptr %86, %81 + br i1 %87, label %.critedge2.i.i.us.backedge, label %.lr.ph.split.us, !llvm.loop !274 .lr.ph.split: ; preds = %_ZN4llvm19MachineRegisterInfo26defusechain_instr_iteratorILb1ELb0ELb1ELb0ELb1ELb0EE7advanceEv.exit.i, %.lr.ph - %.sroa.041.052 = phi ptr [ %.sroa.0.0.i.i, %.lr.ph ], [ %storemerge.i.i, %_ZN4llvm19MachineRegisterInfo26defusechain_instr_iteratorILb1ELb0ELb1ELb0ELb1ELb0EE7advanceEv.exit.i ] - %87 = getelementptr inbounds nuw i8, ptr %.sroa.041.052, i64 8 - %88 = load ptr, ptr %87, align 8, !tbaa !220 - %89 = load ptr, ptr %55, align 8, !tbaa !247 - %90 = getelementptr inbounds nuw i8, ptr %88, i64 24 - %91 = load ptr, ptr %90, align 8, !tbaa !247 - %92 = icmp eq ptr %89, %91 - br i1 %92, label %.critedge, label %109 + %.sroa.041.050 = phi ptr [ %.sroa.0.0.i.i, %.lr.ph ], [ %storemerge.i.i, %_ZN4llvm19MachineRegisterInfo26defusechain_instr_iteratorILb1ELb0ELb1ELb0ELb1ELb0EE7advanceEv.exit.i ] + %88 = getelementptr inbounds nuw i8, ptr %.sroa.041.050, i64 8 + %89 = load ptr, ptr %88, align 8, !tbaa !220 + %90 = load ptr, ptr %55, align 8, !tbaa !247 + %91 = getelementptr inbounds nuw i8, ptr %89, i64 24 + %92 = load ptr, ptr %91, align 8, !tbaa !247 + %93 = icmp eq ptr %90, %92 + br i1 %93, label %.critedge, label %111 .critedge: ; preds = %.lr.ph.split - %93 = getelementptr inbounds nuw i8, ptr %88, i64 68 - %94 = load i16, ptr %93, align 4, !tbaa !228 - %95 = icmp eq i16 %.03546, %94 + %94 = getelementptr inbounds nuw i8, ptr %89, i64 68 + %95 = load i16, ptr %94, align 4, !tbaa !228 + %95 = icmp eq i16 %.03546, %95 br i1 %95, label %96, label %109 96: ; preds = %.critedge %97 = load ptr, ptr %9, align 8, !tbaa !241 %98 = getelementptr inbounds nuw i8, ptr %97, i64 64 - %99 = getelementptr inbounds nuw i8, ptr %88, i64 32 + %100 = getelementptr inbounds nuw i8, ptr %89, i64 32 %100 = load ptr, ptr %99, align 8, !tbaa !241 %101 = getelementptr inbounds nuw i8, ptr %100, i64 64 %102 = call noundef zeroext i1 @_ZNK4llvm14CombinerHelper14matchEqualDefsERKNS_14MachineOperandES3_(ptr noundef nonnull align 8 dereferenceable(72) %0, ptr noundef nonnull align 8 dereferenceable(32) %98, ptr noundef nonnull align 8 dereferenceable(32) %101) @@ -7983,36 +7983,36 @@ _ZN4llvm19MachineRegisterInfo26defusechain_instr_iteratorILb1ELb0ELb1ELb0ELb1ELb %108 = call noundef zeroext i1 @_ZNK4llvm14CombinerHelper14matchEqualDefsERKNS_14MachineOperandES3_(ptr noundef nonnull align 8 dereferenceable(72) %0, ptr noundef nonnull align 8 dereferenceable(32) %105, ptr noundef nonnull align 8 dereferenceable(32) %107) br i1 %108, label %.critedge39, label %109 -.critedge39: ; preds = %103, %73 - %.us-phi = phi ptr [ %57, %73 ], [ %88, %103 ] +.critedge39: ; preds = %103, %74 + %.us-phi = phi ptr [ %57, %73 ], [ %89, %103 ] store ptr %.us-phi, ptr %2, align 8, !tbaa !244 br label %.loopexit -109: ; preds = %103, %96, %.critedge, %.lr.ph.split - %110 = load ptr, ptr %87, align 8, !tbaa !220 +111: ; preds = %103, %96, %.critedge, %.lr.ph.split + %112 = load ptr, ptr %88, align 8, !tbaa !220 br label %.critedge2.i.i -.critedge2.i.i: ; preds = %.critedge2.i.i.backedge, %109 - %.pn.i.i = phi ptr [ %.sroa.041.052, %109 ], [ %storemerge.i.i, %.critedge2.i.i.backedge ] +.critedge2.i.i: ; preds = %.critedge2.i.i.backedge, %111 + %.pn.i.i = phi ptr [ %.sroa.041.050, %109 ], [ %storemerge.i.i, %.critedge2.i.i.backedge ] %storemerge.in.i.i = getelementptr inbounds nuw i8, ptr %.pn.i.i, i64 24 %storemerge.i.i = load ptr, ptr %storemerge.in.i.i, align 8, !tbaa !204 %.not.i.i = icmp eq ptr %storemerge.i.i, null - br i1 %.not.i.i, label %.loopexit, label %111 + br i1 %.not.i.i, label %.loopexit, label %113 -111: ; preds = %.critedge2.i.i - %112 = load i32, ptr %storemerge.i.i, align 8 - %113 = and i32 %112, -2130706432 - %or.cond.not.i.i = icmp eq i32 %113, 0 +113: ; preds = %.critedge2.i.i + %114 = load i32, ptr %storemerge.i.i, align 8 + %115 = and i32 %114, -2130706432 + %or.cond.not.i.i = icmp eq i32 %115, 0 br i1 %or.cond.not.i.i, label %_ZN4llvm19MachineRegisterInfo26defusechain_instr_iteratorILb1ELb0ELb1ELb0ELb1ELb0EE7advanceEv.exit.i, label %.critedge2.i.i.backedge -.critedge2.i.i.backedge: ; preds = %111, %_ZN4llvm19MachineRegisterInfo26defusechain_instr_iteratorILb1ELb0ELb1ELb0ELb1ELb0EE7advanceEv.exit.i +.critedge2.i.i.backedge: ; preds = %113, %_ZN4llvm19MachineRegisterInfo26defusechain_instr_iteratorILb1ELb0ELb1ELb0ELb1ELb0EE7advanceEv.exit.i br label %.critedge2.i.i, !llvm.loop !274 -_ZN4llvm19MachineRegisterInfo26defusechain_instr_iteratorILb1ELb0ELb1ELb0ELb1ELb0EE7advanceEv.exit.i: ; preds = %111 - %114 = getelementptr inbounds nuw i8, ptr %storemerge.i.i, i64 8 - %115 = load ptr, ptr %114, align 8, !tbaa !220 - %116 = icmp eq ptr %115, %110 - br i1 %116, label %.critedge2.i.i.backedge, label %.lr.ph.split, !llvm.loop !274 +_ZN4llvm19MachineRegisterInfo26defusechain_instr_iteratorILb1ELb0ELb1ELb0ELb1ELb0EE7advanceEv.exit.i: ; preds = %113 + %116 = getelementptr inbounds nuw i8, ptr %storemerge.i.i, i64 8 + %117 = load ptr, ptr %116, align 8, !tbaa !220 + %118 = icmp eq ptr %117, %112 + br i1 %118, label %.critedge2.i.i.backedge, label %.lr.ph.split, !llvm.loop !274 .loopexit: ; preds = %.critedge2.i.i.i.i, %.critedge2.i.i, %.critedge2.i.i.us, %38, %.critedge39, %_ZNK4llvm14CombinerHelper24isLegalOrBeforeLegalizerERKNS_13LegalityQueryE.exit %.0 = phi i1 [ false, %_ZNK4llvm14CombinerHelper24isLegalOrBeforeLegalizerERKNS_13LegalityQueryE.exit ], [ true, %.critedge39 ], [ false, %38 ], [ false, %.critedge2.i.i.us ], [ false, %.critedge2.i.i ], [ false, %.critedge2.i.i.i.i ] diff --git a/bench/llvm/optimized/RISCVAsmPrinter.ll b/bench/llvm/optimized/RISCVAsmPrinter.ll index 23267fd251e..b3f0b647d84 100644 --- a/bench/llvm/optimized/RISCVAsmPrinter.ll +++ b/bench/llvm/optimized/RISCVAsmPrinter.ll @@ -9542,13 +9542,13 @@ _ZN4llvm13MCInstBuilderD2Ev.exit: ; preds = %_ZN12_GLOBAL__N_115 %59 = getelementptr inbounds nuw i8, ptr %7, i64 24 %60 = getelementptr inbounds nuw i8, ptr %7, i64 28 %.sroa.22.0..sroa_idx.i.i.i18 = getelementptr inbounds nuw i8, ptr %7, i64 40 - %61 = getelementptr inbounds nuw i8, ptr %3, i64 16 - %62 = getelementptr inbounds nuw i8, ptr %3, i64 32 - %63 = getelementptr inbounds nuw i8, ptr %3, i64 24 - %64 = getelementptr inbounds nuw i8, ptr %3, i64 28 - %65 = getelementptr inbounds nuw i8, ptr %7, i64 48 + %62 = getelementptr inbounds nuw i8, ptr %3, i64 16 + %63 = getelementptr inbounds nuw i8, ptr %3, i64 32 + %64 = getelementptr inbounds nuw i8, ptr %3, i64 24 + %65 = getelementptr inbounds nuw i8, ptr %3, i64 28 + %66 = getelementptr inbounds nuw i8, ptr %7, i64 48 %.sroa.22.0..sroa_idx.i.i.i23 = getelementptr inbounds nuw i8, ptr %7, i64 56 - %66 = getelementptr inbounds nuw i8, ptr %7, i64 64 + %67 = getelementptr inbounds nuw i8, ptr %7, i64 64 %.sroa.22.0..sroa_idx.i.i.i27 = getelementptr inbounds nuw i8, ptr %7, i64 72 %67 = select i1 %16, i8 32, i8 20 br label %_ZN4llvm13MCInstBuilder6addImmEl.exit @@ -9572,25 +9572,25 @@ _ZN4llvm13MCInstBuilder6addImmEl.exit: ; preds = %_ZN4llvm13MCInstBui store i32 11754, ptr %7, align 8, !tbaa !320 store i8 1, ptr %58, align 8 store i64 43, ptr %.sroa.22.0..sroa_idx.i.i.i18, align 8 - store i8 1, ptr %65, align 8 + store i8 1, ptr %66, align 8 store i64 43, ptr %.sroa.22.0..sroa_idx.i.i.i23, align 8 %.val.pre = load ptr, ptr %42, align 8, !tbaa !141 - store i8 2, ptr %66, align 8 + store i8 2, ptr %67, align 8 store i64 0, ptr %.sroa.22.0..sroa_idx.i.i.i27, align 8 store i32 3, ptr %59, align 8, !tbaa !258 call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %3) #17 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(128) %3, i8 0, i64 16, i1 false) - store ptr %62, ptr %61, align 8, !tbaa !257 - store i32 0, ptr %63, align 8, !tbaa !258 - store i32 6, ptr %64, align 4, !tbaa !259 + store ptr %63, ptr %62, align 8, !tbaa !257 + store i32 0, ptr %64, align 8, !tbaa !258 + store i32 6, ptr %65, align 4, !tbaa !259 %74 = call noundef zeroext i1 @_ZN4llvm8RISCVRVC8compressERNS_6MCInstERKS1_RKNS_15MCSubtargetInfoE(ptr noundef nonnull align 8 dereferenceable(128) %3, ptr noundef nonnull align 8 dereferenceable(128) %7, ptr noundef nonnull align 8 dereferenceable(304) %.val.pre) #17 %spec.select.i.i28 = select i1 %74, ptr %3, ptr %7 %75 = load ptr, ptr %73, align 8, !tbaa !13 %76 = getelementptr inbounds nuw i8, ptr %75, i64 1272 %77 = load ptr, ptr %76, align 8 call void %77(ptr noundef nonnull align 8 dereferenceable(296) %73, ptr noundef nonnull align 8 dereferenceable(128) %spec.select.i.i28, ptr noundef nonnull align 8 dereferenceable(304) %.val.pre) #17 - %78 = load ptr, ptr %61, align 8, !tbaa !257 - %79 = icmp eq ptr %78, %62 + %78 = load ptr, ptr %62, align 8, !tbaa !257 + %79 = icmp eq ptr %78, %63 br i1 %79, label %_ZN12_GLOBAL__N_115RISCVAsmPrinter14EmitToStreamerERN4llvm10MCStreamerERKNS1_6MCInstE.exit29, label %80 80: ; preds = %_ZN4llvm13MCInstBuilder6addImmEl.exit diff --git a/bench/llvm/optimized/X86ISelLoweringCall.ll b/bench/llvm/optimized/X86ISelLoweringCall.ll index f8e0081f9cc..a41600b6633 100644 --- a/bench/llvm/optimized/X86ISelLoweringCall.ll +++ b/bench/llvm/optimized/X86ISelLoweringCall.ll @@ -13820,7 +13820,7 @@ _ZN4llvm11SmallVectorINS_11CCValAssignELj16EED2Ev.exit240: ; preds = %.critedge2 %144 = trunc i64 %143 to i32 %145 = load i32, ptr %79, align 8, !tbaa !584 %.not.i241 = icmp eq i32 %145, 0 - br i1 %.not.i241, label %227, label %146 + br i1 %.not.i241, label %226, label %146 146: ; preds = %141 %.not219 = icmp eq i32 %144, 0 @@ -13949,14 +13949,14 @@ _ZN4llvm3isaINS_19GlobalAddressSDNodeENS_7SDValueEEEbRKT0_.exit: ; preds = %191 %203 = select i1 %186, i32 1, i32 2 br label %204 -204: ; preds = %.lr.ph295, %222 +204:; preds = %.lr.ph295, %221 %.0203294 = phi ptr [ %198, %.lr.ph295 ], [ %223, %222 ] %.0205293 = phi i32 [ 0, %.lr.ph295 ], [ %.1206.ph, %222 ] %205 = getelementptr inbounds nuw i8, ptr %.0203294, i64 8 %206 = load i8, ptr %205, align 8, !tbaa !621 br label %207 -207: ; preds = %213, %204 +207:; preds = %213, %204 %.0813.i.i.i249 = phi i64 [ 0, %204 ], [ %214, %213 ] %.0912.i.i.i250 = phi i64 [ 3, %204 ], [ %.1.i.i.i251, %213 ] %208 = getelementptr inbounds nuw [3 x i8], ptr @__const._ZSt24__find_uniq_type_in_packIN4llvm8RegisterEJS1_ljEEmv.__found, i64 0, i64 %.0813.i.i.i249 @@ -13964,21 +13964,21 @@ _ZN4llvm3isaINS_19GlobalAddressSDNodeENS_7SDValueEEEbRKT0_.exit: ; preds = %191 %210 = trunc nuw i8 %209 to i1 br i1 %210, label %211, label %213 -211: ; preds = %207 +212: ; preds = %207 %212 = icmp samesign ult i64 %.0912.i.i.i250, 3 br i1 %212, label %_ZNK4llvm11CCValAssign8isRegLocEv.exit254, label %213 -213: ; preds = %211, %207 +213:; preds = %211, %207 %.1.i.i.i251 = phi i64 [ %.0912.i.i.i250, %207 ], [ %.0813.i.i.i249, %211 ] %214 = add nuw nsw i64 %.0813.i.i.i249, 1 %exitcond.i.i.i252 = icmp eq i64 %214, 3 br i1 %exitcond.i.i.i252, label %_ZNK4llvm11CCValAssign8isRegLocEv.exit254, label %207, !llvm.loop !741 -_ZNK4llvm11CCValAssign8isRegLocEv.exit254: ; preds = %211, %213 +_ZNK4llvm11CCValAssign8isRegLocEv.exit254:; preds = %211, %213 %spec.select.i.i.i253 = phi i64 [ 3, %211 ], [ %.1.i.i.i251, %213 ] %215 = zext i8 %206 to i64 - %216 = icmp eq i64 %spec.select.i.i.i253, %215 - br i1 %216, label %217, label %222 + %.not.i.i.i255 = icmp eq i64 %spec.select.i.i.i253, %215 + br i1 %.not.i.i.i255, label %217, label %221 217: ; preds = %_ZNK4llvm11CCValAssign8isRegLocEv.exit254 %.not.i.i.i255 = icmp eq i8 %206, 0 @@ -13991,60 +13991,60 @@ _ZNK4llvm11CCValAssign8isRegLocEv.exit254: ; preds = %211, %213 _ZNK4llvm11CCValAssign9getLocRegEv.exit257: ; preds = %217 %.sroa.0.0.copyload.i256 = load i32, ptr %.0203294, align 4, !tbaa !163 switch i32 %.sroa.0.0.copyload.i256, label %222 [ - i32 22, label %219 - i32 27, label %219 - i32 25, label %219 + i32 22, label %218 + i32 27, label %218 + i32 25, label %218 ] -219: ; preds = %_ZNK4llvm11CCValAssign9getLocRegEv.exit257, %_ZNK4llvm11CCValAssign9getLocRegEv.exit257, %_ZNK4llvm11CCValAssign9getLocRegEv.exit257 - %220 = add i32 %.0205293, 1 - %221 = icmp eq i32 %203, %.0205293 - br i1 %221, label %.critedge235, label %222 +218: ; preds = %_ZNK4llvm11CCValAssign9getLocRegEv.exit257, %_ZNK4llvm11CCValAssign9getLocRegEv.exit257, %_ZNK4llvm11CCValAssign9getLocRegEv.exit257 + %219 = add i32 %.0205293, 1 + %220 = icmp eq i32 %203, %.0205293 + br i1 %220, label %.critedge235, label %221 -222: ; preds = %_ZNK4llvm11CCValAssign8isRegLocEv.exit254, %_ZNK4llvm11CCValAssign9getLocRegEv.exit257, %219 - %.1206.ph = phi i32 [ %220, %219 ], [ %.0205293, %_ZNK4llvm11CCValAssign9getLocRegEv.exit257 ], [ %.0205293, %_ZNK4llvm11CCValAssign8isRegLocEv.exit254 ] - %223 = getelementptr inbounds nuw i8, ptr %.0203294, i64 32 - %.not221 = icmp eq ptr %223, %202 +221: ; preds = %_ZNK4llvm11CCValAssign8isRegLocEv.exit254, %_ZNK4llvm11CCValAssign9getLocRegEv.exit257, %218 + %.1206.ph = phi i32 [ %219, %219 ], [ %.0205293, %_ZNK4llvm11CCValAssign9getLocRegEv.exit257 ], [ %.0205293, %_ZNK4llvm11CCValAssign8isRegLocEv.exit254 ] + %222 = getelementptr inbounds nuw i8, ptr %.0203294, i64 32 + %.not221 = icmp eq ptr %222, %202 br i1 %.not221, label %.loopexit, label %204 -.loopexit: ; preds = %222, %197, %_ZN4llvm3isaINS_19GlobalAddressSDNodeENS_7SDValueEEEbRKT0_.exit, %196, %.critedge233 - %224 = getelementptr inbounds nuw i8, ptr %23, i64 32 - %225 = load ptr, ptr %224, align 8, !tbaa !623 - %226 = call noundef zeroext i1 @_ZNK4llvm14TargetLowering20parametersInCSRMatchERKNS_19MachineRegisterInfoEPKjRKNS_15SmallVectorImplINS_11CCValAssignEEERKNS6_INS_7SDValueEEE(ptr noundef nonnull align 8 dereferenceable(412423) %0, ptr noundef nonnull align 8 dereferenceable(504) %225, ptr noundef %135, ptr noundef nonnull align 8 dereferenceable(16) %3, ptr noundef nonnull align 8 dereferenceable(16) %11) #24 - br i1 %226, label %227, label %.critedge235 - -227: ; preds = %.loopexit, %141 - %228 = load ptr, ptr %48, align 8, !tbaa !12 - %229 = getelementptr inbounds nuw i8, ptr %228, i64 477 - %230 = load i8, ptr %229, align 1, !tbaa !152, !range !153, !noundef !154 - %231 = trunc nuw i8 %230 to i1 - %232 = getelementptr inbounds nuw i8, ptr %23, i64 8 - %233 = load ptr, ptr %232, align 8, !tbaa !745 - %234 = getelementptr inbounds nuw i8, ptr %233, i64 864 - %235 = load i16, ptr %234, align 8 - %236 = and i16 %235, 512 - %237 = icmp ne i16 %236, 0 - %238 = call noundef zeroext i1 @_ZN4llvm3X8611isCalleePopEjbbb(i32 noundef %15, i1 noundef zeroext %231, i1 noundef zeroext %19, i1 noundef zeroext %237) - %239 = load ptr, ptr %73, align 8, !tbaa !587 - %240 = getelementptr inbounds nuw i8, ptr %239, i64 44 - %241 = load i32, ptr %240, align 4, !tbaa !589 - %.not223 = icmp eq i32 %241, 0 - br i1 %.not223, label %245, label %242 - -242: ; preds = %227 - %243 = icmp eq i32 %241, %144 - %244 = and i1 %238, %243 - br i1 %244, label %247, label %.critedge235 - -245: ; preds = %227 - %246 = icmp ne i32 %144, 0 - %or.cond28 = and i1 %246, %238 - br i1 %or.cond28, label %.critedge235, label %247 - -247: ; preds = %245, %242 +.loopexit: ; preds = %221, %197, %_ZN4llvm3isaINS_19GlobalAddressSDNodeENS_7SDValueEEEbRKT0_.exit, %196, %.critedge233 + %223 = getelementptr inbounds nuw i8, ptr %23, i64 32 + %224 = load ptr, ptr %223, align 8, !tbaa !623 + %225 = call noundef zeroext i1 @_ZNK4llvm14TargetLowering20parametersInCSRMatchERKNS_19MachineRegisterInfoEPKjRKNS_15SmallVectorImplINS_11CCValAssignEEERKNS6_INS_7SDValueEEE(ptr noundef nonnull align 8 dereferenceable(412423) %0, ptr noundef nonnull align 8 dereferenceable(504) %224, ptr noundef %135, ptr noundef nonnull align 8 dereferenceable(16) %3, ptr noundef nonnull align 8 dereferenceable(16) %11) #24 + br i1 %225, label %226, label %.critedge235 + +226: ; preds = %.loopexit, %141 + %227 = load ptr, ptr %48, align 8, !tbaa !12 + %228 = getelementptr inbounds nuw i8, ptr %227, i64 477 + %229 = load i8, ptr %228, align 1, !tbaa !152, !range !153, !noundef !154 + %230 = trunc nuw i8 %229 to i1 + %231 = getelementptr inbounds nuw i8, ptr %23, i64 8 + %232 = load ptr, ptr %231, align 8, !tbaa !745 + %233 = getelementptr inbounds nuw i8, ptr %232, i64 864 + %234 = load i16, ptr %233, align 8 + %235 = and i16 %234, 512 + %236 = icmp ne i16 %235, 0 + %237 = call noundef zeroext i1 @_ZN4llvm3X8611isCalleePopEjbbb(i32 noundef %15, i1 noundef zeroext %230, i1 noundef zeroext %19, i1 noundef zeroext %236) + %238 = load ptr, ptr %73, align 8, !tbaa !587 + %239 = getelementptr inbounds nuw i8, ptr %238, i64 44 + %240 = load i32, ptr %239, align 4, !tbaa !589 + %.not223 = icmp eq i32 %240, 0 + br i1 %.not223, label %244, label %241 + +241: ; preds = %226 + %242 = icmp eq i32 %240, %144 + %243 = and i1 %237, %242 + br i1 %243, label %246, label %.critedge235 + +244: ; preds = %226 + %245 = icmp ne i32 %144, 0 + %or.cond28 = and i1 %245, %237 + br i1 %or.cond28, label %.critedge235, label %246 + +246: ; preds = %244, %241 br label %.critedge235 -.critedge235: ; preds = %_ZNK4llvm11CCValAssign8isRegLocEv.exit, %_ZNK4llvm11CCValAssign15getLocMemOffsetEv.exit, %.lr.ph291, %219, %_ZN4llvm11SmallVectorINS_11CCValAssignELj16EED2Ev.exit, %247, %242, %245, %_ZNK4llvm18TargetRegisterInfo19hasStackRealignmentERKNS_15MachineFunctionE.exit.thread, %34, %_ZNK4llvm18TargetRegisterInfo19hasStackRealignmentERKNS_15MachineFunctionE.exit, %.critedge276, %.loopexit, %139, %136, %81, %_ZL15canGuaranteeTCOj.exit, %41, %5 +.critedge235: ; preds = %_ZNK4llvm11CCValAssign8isRegLocEv.exit, %_ZNK4llvm11CCValAssign15getLocMemOffsetEv.exit, %.lr.ph291, %218, %_ZN4llvm11SmallVectorINS_11CCValAssignELj16EED2Ev.exit, %246, %241, %244, %_ZNK4llvm18TargetRegisterInfo19hasStackRealignmentERKNS_15MachineFunctionE.exit.thread, %34, %_ZNK4llvm18TargetRegisterInfo19hasStackRealignmentERKNS_15MachineFunctionE.exit, %.critedge276, %.loopexit, %139, %136, %81, %_ZL15canGuaranteeTCOj.exit, %41, %5 %.0 = phi i1 [ false, %5 ], [ false, %34 ], [ false, %41 ], [ %or.cond18, %_ZL15canGuaranteeTCOj.exit ], [ false, %_ZNK4llvm18TargetRegisterInfo19hasStackRealignmentERKNS_15MachineFunctionE.exit ], [ false, %_ZNK4llvm18TargetRegisterInfo19hasStackRealignmentERKNS_15MachineFunctionE.exit.thread ], [ false, %81 ], [ false, %_ZN4llvm11SmallVectorINS_11CCValAssignELj16EED2Ev.exit ], [ false, %.critedge276 ], [ false, %136 ], [ false, %139 ], [ false, %.loopexit ], [ true, %247 ], [ false, %242 ], [ false, %245 ], [ false, %219 ], [ false, %.lr.ph291 ], [ false, %_ZNK4llvm11CCValAssign15getLocMemOffsetEv.exit ], [ false, %_ZNK4llvm11CCValAssign8isRegLocEv.exit ] ret i1 %.0 } diff --git a/bench/llvm/optimized/X86InstrInfo.ll b/bench/llvm/optimized/X86InstrInfo.ll index a3920626e1f..5cfc1fedf20 100644 --- a/bench/llvm/optimized/X86InstrInfo.ll +++ b/bench/llvm/optimized/X86InstrInfo.ll @@ -13383,7 +13383,7 @@ _ZN4llvm26MachineInstrBundleIteratorINS_12MachineInstrELb1EEppEv.exit: ; preds = %switch = icmp eq i64 %100, 4 br i1 %switch, label %101, label %.thread80 -101: ; preds = %96 +92: ; preds = %96 %102 = load ptr, ptr %92, align 8, !tbaa !239 %103 = getelementptr inbounds nuw i8, ptr %2, i64 8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %103, ptr noundef nonnull align 8 dereferenceable(32) %102, i64 32, i1 false), !tbaa.struct !418 @@ -13391,33 +13391,33 @@ _ZN4llvm26MachineInstrBundleIteratorINS_12MachineInstrELb1EEppEv.exit: ; preds = store i32 1, ptr %104, align 8, !tbaa !240 %.sroa.566.0..sroa_idx = getelementptr inbounds nuw i8, ptr %2, i64 48 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.566.0..sroa_idx, i8 0, i64 16, i1 false) - %105 = load i64, ptr %98, align 8, !tbaa !240 - %106 = icmp eq i64 %105, 5 - %107 = zext i1 %106 to i32 - store i32 %107, ptr %2, align 8, !tbaa !824 + %106 = load i64, ptr %98, align 8, !tbaa !240 + %107 = icmp eq i64 %106, 5 + %108 = zext i1 %107 to i32 + store i32 %108, ptr %2, align 8, !tbaa !824 br label %.thread80 .thread80: ; preds = %_ZN4llvm26MachineInstrBundleIteratorINS_12MachineInstrELb1EEppEv.exit, %_ZN4llvm26MachineInstrBundleIteratorINS_12MachineInstrELb1EEppEv.exit.i.i.i.i, %96, %.loopexit, %87, %91, %101, %4 %.0 = phi i1 [ true, %4 ], [ false, %101 ], [ true, %91 ], [ true, %87 ], [ true, %.loopexit ], [ true, %96 ], [ true, %_ZN4llvm26MachineInstrBundleIteratorINS_12MachineInstrELb1EEppEv.exit.i.i.i.i ], [ true, %_ZN4llvm26MachineInstrBundleIteratorINS_12MachineInstrELb1EEppEv.exit ] - %108 = load ptr, ptr %6, align 8, !tbaa !45 - %109 = icmp eq ptr %108, %10 - br i1 %109, label %_ZN4llvm11SmallVectorIPNS_12MachineInstrELj4EED2Ev.exit, label %110 + %109 = load ptr, ptr %6, align 8, !tbaa !45 + %110 = icmp eq ptr %109, %10 + br i1 %110, label %_ZN4llvm11SmallVectorIPNS_12MachineInstrELj4EED2Ev.exit, label %111 -110: ; preds = %.thread80 - call void @free(ptr noundef %108) #32 +111: ; preds = %.thread80 + call void @free(ptr noundef %109) #32 br label %_ZN4llvm11SmallVectorIPNS_12MachineInstrELj4EED2Ev.exit -_ZN4llvm11SmallVectorIPNS_12MachineInstrELj4EED2Ev.exit: ; preds = %.thread80, %110 +_ZN4llvm11SmallVectorIPNS_12MachineInstrELj4EED2Ev.exit: ; preds = %.thread80, %111 call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %6) #32 - %111 = load ptr, ptr %5, align 8, !tbaa !45 - %112 = icmp eq ptr %111, %7 - br i1 %112, label %_ZN4llvm11SmallVectorINS_14MachineOperandELj4EED2Ev.exit, label %113 + %112 = load ptr, ptr %5, align 8, !tbaa !45 + %113 = icmp eq ptr %112, %7 + br i1 %113, label %_ZN4llvm11SmallVectorINS_14MachineOperandELj4EED2Ev.exit, label %114 -113: ; preds = %_ZN4llvm11SmallVectorIPNS_12MachineInstrELj4EED2Ev.exit - call void @free(ptr noundef %111) #32 +114: ; preds = %_ZN4llvm11SmallVectorIPNS_12MachineInstrELj4EED2Ev.exit + call void @free(ptr noundef %112) #32 br label %_ZN4llvm11SmallVectorINS_14MachineOperandELj4EED2Ev.exit -_ZN4llvm11SmallVectorINS_14MachineOperandELj4EED2Ev.exit: ; preds = %_ZN4llvm11SmallVectorIPNS_12MachineInstrELj4EED2Ev.exit, %113 +_ZN4llvm11SmallVectorINS_14MachineOperandELj4EED2Ev.exit: ; preds = %_ZN4llvm11SmallVectorIPNS_12MachineInstrELj4EED2Ev.exit, %114 call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %5) #32 ret i1 %.0 } diff --git a/bench/llvm/optimized/X86ReturnThunks.ll b/bench/llvm/optimized/X86ReturnThunks.ll index 94f8d17cd15..d8a423c66a8 100644 --- a/bench/llvm/optimized/X86ReturnThunks.ll +++ b/bench/llvm/optimized/X86ReturnThunks.ll @@ -240,16 +240,16 @@ _ZN4llvmeqENS_9StringRefES0_.exit.thread63: ; preds = %11, %_ZN4llvmeqENS_ %19 = getelementptr inbounds nuw i8, ptr %18, i64 552 %20 = load i32, ptr %19, align 8, !tbaa !145 call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %4) #13 - %21 = getelementptr inbounds nuw i8, ptr %4, i64 16 - store ptr %21, ptr %4, align 8, !tbaa !155 - %22 = getelementptr inbounds nuw i8, ptr %4, i64 8 - store i32 0, ptr %22, align 8, !tbaa !156 - %23 = getelementptr inbounds nuw i8, ptr %4, i64 12 - store i32 16, ptr %23, align 4, !tbaa !157 - %24 = getelementptr inbounds nuw i8, ptr %1, i64 328 - %25 = getelementptr inbounds nuw i8, ptr %1, i64 320 - %.sroa.058.072 = load ptr, ptr %24, align 8, !tbaa !158 - %.not6873 = icmp eq ptr %.sroa.058.072, %25 + %23 = getelementptr inbounds nuw i8, ptr %4, i64 16 + store ptr %23, ptr %4, align 8, !tbaa !155 + %24 = getelementptr inbounds nuw i8, ptr %4, i64 8 + store i32 0, ptr %24, align 8, !tbaa !156 + %25 = getelementptr inbounds nuw i8, ptr %4, i64 12 + store i32 16, ptr %25, align 4, !tbaa !157 + %26 = getelementptr inbounds nuw i8, ptr %1, i64 328 + %27 = getelementptr inbounds nuw i8, ptr %1, i64 320 + %.sroa.058.072 = load ptr, ptr %26, align 8, !tbaa !158 + %.not6873 = icmp eq ptr %.sroa.058.072, %27 br i1 %.not6873, label %._crit_edge76, label %.lr.ph75 .lr.ph75: ; preds = %_ZN4llvmeqENS_9StringRefES0_.exit.thread63 @@ -268,7 +268,7 @@ _ZN4llvmeqENS_9StringRefES0_.exit.thread63: ; preds = %11, %_ZN4llvmeqENS_ %34 = getelementptr inbounds i8, ptr %33, i64 -44288 %35 = getelementptr inbounds i8, ptr %33, i64 -158688 %36 = load ptr, ptr %4, align 8, !tbaa !155 - %37 = load i32, ptr %22, align 8, !tbaa !156 + %37 = load i32, ptr %24, align 8, !tbaa !156 %38 = zext i32 %37 to i64 %.idx = shl nuw nsw i64 %38, 3 %39 = getelementptr inbounds nuw i8, ptr %36, i64 %.idx @@ -284,37 +284,37 @@ _ZN4llvmeqENS_9StringRefES0_.exit.thread63: ; preds = %11, %_ZN4llvmeqENS_ %45 = getelementptr inbounds nuw i8, ptr %3, i64 24 br label %81 -46: ; preds = %.lr.ph75, %._crit_edge +.lr.ph75: ; preds = %.lr.ph75, %._crit_edge %.sroa.058.074 = phi ptr [ %.sroa.058.072, %.lr.ph75 ], [ %.sroa.058.0, %._crit_edge ] - %47 = call ptr @_ZN4llvm17MachineBasicBlock18getFirstTerminatorEv(ptr noundef nonnull align 8 dereferenceable(288) %.sroa.058.074) #13 - %48 = getelementptr inbounds nuw i8, ptr %.sroa.058.074, i64 48 - %.not6970 = icmp eq ptr %47, %48 + %46 = call ptr @_ZN4llvm17MachineBasicBlock18getFirstTerminatorEv(ptr noundef nonnull align 8 dereferenceable(288) %.sroa.058.074) #13 + %47 = getelementptr inbounds nuw i8, ptr %.sroa.058.074, i64 48 + %.not6970 = icmp eq ptr %46, %47 br i1 %.not6970, label %._crit_edge, label %.lr.ph -._crit_edge: ; preds = %_ZN4llvm26MachineInstrBundleIteratorINS_12MachineInstrELb0EEppEv.exit, %46 - %49 = getelementptr inbounds nuw i8, ptr %.sroa.058.074, i64 8 - %.sroa.058.0 = load ptr, ptr %49, align 8, !tbaa !158 - %.not68 = icmp eq ptr %.sroa.058.0, %25 - br i1 %.not68, label %._crit_edge76, label %46 - -.lr.ph: ; preds = %46, %_ZN4llvm26MachineInstrBundleIteratorINS_12MachineInstrELb0EEppEv.exit - %.sroa.053.071 = phi ptr [ %77, %_ZN4llvm26MachineInstrBundleIteratorINS_12MachineInstrELb0EEppEv.exit ], [ %47, %46 ] - %50 = getelementptr inbounds nuw i8, ptr %.sroa.053.071, i64 68 - %51 = load i16, ptr %50, align 4, !tbaa !171 - %52 = icmp eq i16 %27, %51 +._crit_edge: ; preds = %_ZN4llvm26MachineInstrBundleIteratorINS_12MachineInstrELb0EEppEv.exit, %.lr.ph75 + %48 = getelementptr inbounds nuw i8, ptr %.sroa.058.074, i64 8 + %.sroa.058.0 = load ptr, ptr %48, align 8, !tbaa !158 + %.not68 = icmp eq ptr %.sroa.058.0, %27 + br i1 %.not68, label %._crit_edge76, label %.lr.ph75 + +.lr.ph: ; preds = %.lr.ph75, %_ZN4llvm26MachineInstrBundleIteratorINS_12MachineInstrELb0EEppEv.exit + %.sroa.053.071 = phi ptr [ %77, %_ZN4llvm26MachineInstrBundleIteratorINS_12MachineInstrELb0EEppEv.exit ], [ %.lr.ph75, %46 ] + %49 = getelementptr inbounds nuw i8, ptr %.sroa.053.071, i64 68 + %50 = load i16, ptr %49, align 4, !tbaa !171 + %52 = icmp eq i16 %27, %50 br i1 %52, label %53, label %66 53: ; preds = %.lr.ph - %54 = load i32, ptr %22, align 8, !tbaa !156 - %55 = load i32, ptr %23, align 4, !tbaa !157 + %54 = load i32, ptr %24, align 8, !tbaa !156 + %55 = load i32, ptr %25, align 4, !tbaa !157 %.not.i.i.not.i = icmp ult i32 %54, %55 br i1 %.not.i.i.not.i, label %_ZN4llvm23SmallVectorTemplateBaseIPNS_12MachineInstrELb1EE9push_backES2_.exit, label %56, !prof !189 56: ; preds = %53 %57 = zext i32 %54 to i64 %58 = add nuw nsw i64 %57, 1 - call void @_ZN4llvm15SmallVectorBaseIjE8grow_podEPvmm(ptr noundef nonnull align 8 dereferenceable(16) %4, ptr noundef nonnull %21, i64 noundef %58, i64 noundef 8) #13 - %.pre.i = load i32, ptr %22, align 8, !tbaa !156 + call void @_ZN4llvm15SmallVectorBaseIjE8grow_podEPvmm(ptr noundef nonnull align 8 dereferenceable(16) %4, ptr noundef nonnull %23, i64 noundef %58, i64 noundef 8) #13 + %.pre.i = load i32, ptr %24, align 8, !tbaa !156 br label %_ZN4llvm23SmallVectorTemplateBaseIPNS_12MachineInstrELb1EE9push_backES2_.exit _ZN4llvm23SmallVectorTemplateBaseIPNS_12MachineInstrELb1EE9push_backES2_.exit: ; preds = %53, %56 @@ -324,9 +324,9 @@ _ZN4llvm23SmallVectorTemplateBaseIPNS_12MachineInstrELb1EE9push_backES2_.exit: ; %62 = getelementptr inbounds nuw ptr, ptr %60, i64 %61 %63 = ptrtoint ptr %.sroa.053.071 to i64 store i64 %63, ptr %62, align 1 - %64 = load i32, ptr %22, align 8, !tbaa !156 + %64 = load i32, ptr %24, align 8, !tbaa !156 %65 = add i32 %64, 1 - store i32 %65, ptr %22, align 8, !tbaa !156 + store i32 %65, ptr %24, align 8, !tbaa !156 br label %66 66: ; preds = %_ZN4llvm23SmallVectorTemplateBaseIPNS_12MachineInstrELb1EE9push_backES2_.exit, %.lr.ph @@ -356,7 +356,7 @@ _ZN4llvm26MachineInstrBundleIteratorINS_12MachineInstrELb0EEppEv.exit: ; preds = %.sroa.0.0.i.i.i = phi ptr [ %.sroa.053.071, %66 ], [ %.sroa.053.071, %_ZNK4llvm14ilist_iteratorINS_12ilist_detail12node_optionsINS_12MachineInstrELb1ELb1EvLb0EvEELb0ELb0EE5isEndEv.exit.preheader.i.i.i ], [ %72, %_ZNK4llvm14ilist_iteratorINS_12ilist_detail12node_optionsINS_12MachineInstrELb1ELb1EvLb0EvEELb0ELb0EE5isEndEv.exit.i.i.i ] %76 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.i.i.i, i64 8 %77 = load ptr, ptr %76, align 8, !tbaa !190 - %.not69 = icmp eq ptr %77, %48 + %.not69 = icmp eq ptr %77, %47 br i1 %.not69, label %._crit_edge, label %.lr.ph ._crit_edge81.loopexit: ; preds = %_ZN4llvm8DebugLocD2Ev.exit50 @@ -365,7 +365,7 @@ _ZN4llvm26MachineInstrBundleIteratorINS_12MachineInstrELb0EEppEv.exit: ; preds = ._crit_edge81: ; preds = %._crit_edge81.loopexit, %._crit_edge76 %78 = phi ptr [ %.pre, %._crit_edge81.loopexit ], [ %36, %._crit_edge76 ] - %79 = icmp eq ptr %78, %21 + %79 = icmp eq ptr %78, %23 br i1 %79, label %_ZN4llvm11SmallVectorIPNS_12MachineInstrELj16EED2Ev.exit, label %80 80: ; preds = %._crit_edge81 diff --git a/bench/lua/optimized/lstrlib.ll b/bench/lua/optimized/lstrlib.ll index 33b41edbe35..d57b19fa3b3 100644 --- a/bench/lua/optimized/lstrlib.ll +++ b/bench/lua/optimized/lstrlib.ll @@ -2681,31 +2681,31 @@ copywithendian.exit75: ; preds = %.preheader93, %69 .lr.ph.i: ; preds = %80 %85 = load i32, ptr %26, align 8, !tbaa !48 - %.not43.i = icmp eq i32 %85, 0 + %.not41.i = icmp eq i32 %85, 0 %86 = call i32 @llvm.umin.i32(i32 %82, i32 8) %87 = zext nneg i32 %86 to i64 - br i1 %.not43.i, label %.lr.ph.split.us.i, label %.lr.ph.split.i + br i1 %.not41.i, label %.lr.ph.split.us.i, label %.lr.ph.split.i .lr.ph.split.us.i: ; preds = %.lr.ph.i, %.lr.ph.split.us.i - %indvars.iv53.i = phi i64 [ %indvars.iv.next54.i, %.lr.ph.split.us.i ], [ %87, %.lr.ph.i ] - %.045.us.i = phi i64 [ %94, %.lr.ph.split.us.i ], [ 0, %.lr.ph.i ] - %indvars.iv.next54.i = add nsw i64 %indvars.iv53.i, -1 - %88 = shl i64 %.045.us.i, 8 - %89 = sub i64 %36, %indvars.iv53.i + %indvars.iv51.i = phi i64 [ %indvars.iv.next52.i, %.lr.ph.split.us.i ], [ %87, %.lr.ph.i ] + %.043.us.i = phi i64 [ %94, %.lr.ph.split.us.i ], [ 0, %.lr.ph.i ] + %indvars.iv.next52.i = add nsw i64 %indvars.iv51.i, -1 + %88 = shl i64 %.043.us.i, 8 + %89 = sub i64 %36, %indvars.iv51.i %sext = shl i64 %89, 32 %90 = ashr exact i64 %sext, 32 %91 = getelementptr inbounds i8, ptr %81, i64 %90 %92 = load i8, ptr %91, align 1, !tbaa !9 %93 = zext i8 %92 to i64 %94 = or disjoint i64 %88, %93 - %95 = icmp samesign ugt i64 %indvars.iv53.i, 1 + %95 = icmp samesign ugt i64 %indvars.iv51.i, 1 br i1 %95, label %.lr.ph.split.us.i, label %._crit_edge.i .lr.ph.split.i: ; preds = %.lr.ph.i, %.lr.ph.split.i %indvars.iv.i = phi i64 [ %indvars.iv.next.i, %.lr.ph.split.i ], [ %87, %.lr.ph.i ] - %.045.i = phi i64 [ %100, %.lr.ph.split.i ], [ 0, %.lr.ph.i ] + %.043.i = phi i64 [ %100, %.lr.ph.split.i ], [ 0, %.lr.ph.i ] %indvars.iv.next.i = add nsw i64 %indvars.iv.i, -1 - %96 = shl i64 %.045.i, 8 + %96 = shl i64 %.043.i, 8 %97 = getelementptr inbounds i8, ptr %81, i64 %indvars.iv.next.i %98 = load i8, ptr %97, align 1, !tbaa !9 %99 = zext i8 %98 to i64 @@ -2715,24 +2715,24 @@ copywithendian.exit75: ; preds = %.preheader93, %69 ._crit_edge.i: ; preds = %.lr.ph.split.us.i %switch = icmp samesign ult i32 %82, 9 - br i1 %switch, label %unpackint.exit, label %.lr.ph48.split.us.preheader.i + br i1 %switch, label %unpackint.exit, label %.lr.ph46.split.us.preheader.i ._crit_edge.i.thread: ; preds = %.lr.ph.split.i %switch102 = icmp samesign ult i32 %82, 9 - br i1 %switch102, label %unpackint.exit, label %.lr.ph48.split.preheader.i + br i1 %switch102, label %unpackint.exit, label %.lr.ph46.split.preheader.i -.lr.ph48.split.preheader.i: ; preds = %._crit_edge.i.thread +.lr.ph46.split.preheader.i: ; preds = %._crit_edge.i.thread %102 = zext nneg i32 %83 to i64 - br label %.lr.ph48.split.i + br label %.lr.ph46.split.i -.lr.ph48.split.us.preheader.i: ; preds = %._crit_edge.i +.lr.ph46.split.us.preheader.i: ; preds = %._crit_edge.i %103 = and i64 %36, 2147483647 %umax = call i64 @llvm.umax.i64(i64 %103, i64 9) - br label %.lr.ph48.split.us.i + br label %.lr.ph46.split.us.i -.lr.ph48.split.us.i: ; preds = %111, %.lr.ph48.split.us.preheader.i - %indvars.iv59.i = phi i64 [ 8, %.lr.ph48.split.us.preheader.i ], [ %indvars.iv.next60.i, %111 ] - %104 = xor i64 %indvars.iv59.i, -1 +.lr.ph46.split.us.i: ; preds = %111, %.lr.ph46.split.us.preheader.i + %indvars.iv57.i = phi i64 [ 8, %.lr.ph48.split.us.preheader.i ], [ %indvars.iv.next58.i, %111 ] + %104 = xor i64 %indvars.iv57.i, -1 %105 = add i64 %36, %104 %sext80 = shl i64 %105, 32 %106 = ashr exact i64 %sext80, 32 @@ -2741,31 +2741,31 @@ copywithendian.exit75: ; preds = %.preheader93, %69 %.not39.us.i = icmp eq i8 %108, 0 br i1 %.not39.us.i, label %111, label %109, !prof !10 -109: ; preds = %.lr.ph48.split.us.i +109: ; preds = %.lr.ph46.split.us.i %110 = call i32 (ptr, ptr, ...) @luaL_error(ptr noundef %0, ptr noundef nonnull @.str.75, i32 noundef %82) #12 br label %111 -111: ; preds = %109, %.lr.ph48.split.us.i - %indvars.iv.next60.i = add nuw nsw i64 %indvars.iv59.i, 1 - %exitcond.not = icmp eq i64 %indvars.iv.next60.i, %umax - br i1 %exitcond.not, label %unpackint.exit, label %.lr.ph48.split.us.i +111: ; preds = %109, %.lr.ph46.split.us.i + %indvars.iv.next58.i = add nuw nsw i64 %indvars.iv57.i, 1 + %exitcond.not = icmp eq i64 %indvars.iv.next58.i, %umax + br i1 %exitcond.not, label %unpackint.exit, label %.lr.ph46.split.us.i -.lr.ph48.split.i: ; preds = %116, %.lr.ph48.split.preheader.i - %indvars.iv55.i = phi i64 [ %102, %.lr.ph48.split.preheader.i ], [ %indvars.iv.next56.i, %116 ] - %112 = getelementptr inbounds nuw i8, ptr %81, i64 %indvars.iv55.i +.lr.ph46.split.i: ; preds = %116, %.lr.ph46.split.preheader.i + %indvars.iv53.i = phi i64 [ %102, %.lr.ph48.split.preheader.i ], [ %indvars.iv.next54.i, %116 ] + %112 = getelementptr inbounds nuw i8, ptr %81, i64 %indvars.iv53.i %113 = load i8, ptr %112, align 1, !tbaa !9 %.not39.i = icmp eq i8 %113, 0 br i1 %.not39.i, label %116, label %114, !prof !10 -114: ; preds = %.lr.ph48.split.i +114: ; preds = %.lr.ph46.split.i %115 = call i32 (ptr, ptr, ...) @luaL_error(ptr noundef %0, ptr noundef nonnull @.str.75, i32 noundef %82) #12 br label %116 -116: ; preds = %114, %.lr.ph48.split.i - %indvars.iv.next56.i = add nuw nsw i64 %indvars.iv55.i, 1 - %117 = trunc nuw i64 %indvars.iv.next56.i to i32 +116: ; preds = %114, %.lr.ph46.split.i + %indvars.iv.next54.i = add nuw nsw i64 %indvars.iv53.i, 1 + %117 = trunc nuw i64 %indvars.iv.next54.i to i32 %118 = icmp sgt i32 %82, %117 - br i1 %118, label %.lr.ph48.split.i, label %unpackint.exit + br i1 %118, label %.lr.ph46.split.i, label %unpackint.exit unpackint.exit: ; preds = %116, %111, %._crit_edge.i.thread, %._crit_edge.i %.0.lcssa.i104 = phi i64 [ %100, %._crit_edge.i.thread ], [ %94, %._crit_edge.i ], [ %94, %111 ], [ %100, %116 ] @@ -4905,31 +4905,31 @@ define internal fastcc i64 @unpackint(ptr noundef %0, ptr noundef readonly captu br i1 %7, label %.lr.ph, label %._crit_edge.thread .lr.ph: ; preds = %5 - %.not43 = icmp eq i32 %2, 0 + %.not41 = icmp eq i32 %2, 0 %8 = tail call i32 @llvm.umin.i32(i32 %3, i32 8) %9 = zext nneg i32 %8 to i64 - br i1 %.not43, label %.lr.ph.split.us, label %.lr.ph.split + br i1 %.not41, label %.lr.ph.split.us, label %.lr.ph.split .lr.ph.split.us: ; preds = %.lr.ph, %.lr.ph.split.us - %indvars.iv53 = phi i64 [ %indvars.iv.next54, %.lr.ph.split.us ], [ %9, %.lr.ph ] - %.045.us = phi i64 [ %17, %.lr.ph.split.us ], [ 0, %.lr.ph ] - %indvars.iv.next54 = add nsw i64 %indvars.iv53, -1 - %10 = shl i64 %.045.us, 8 - %11 = trunc nsw i64 %indvars.iv53 to i32 + %indvars.iv51 = phi i64 [ %indvars.iv.next52, %.lr.ph.split.us ], [ %9, %.lr.ph ] + %.043.us = phi i64 [ %17, %.lr.ph.split.us ], [ 0, %.lr.ph ] + %indvars.iv.next52 = add nsw i64 %indvars.iv51, -1 + %10 = shl i64 %.043.us, 8 + %11 = trunc nsw i64 %indvars.iv51 to i32 %12 = sub i32 %3, %11 %13 = sext i32 %12 to i64 %14 = getelementptr inbounds i8, ptr %1, i64 %13 %15 = load i8, ptr %14, align 1, !tbaa !9 %16 = zext i8 %15 to i64 %17 = or disjoint i64 %10, %16 - %18 = icmp samesign ugt i64 %indvars.iv53, 1 + %18 = icmp samesign ugt i64 %indvars.iv51, 1 br i1 %18, label %.lr.ph.split.us, label %._crit_edge .lr.ph.split: ; preds = %.lr.ph, %.lr.ph.split %indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph.split ], [ %9, %.lr.ph ] - %.045 = phi i64 [ %23, %.lr.ph.split ], [ 0, %.lr.ph ] + %.043 = phi i64 [ %23, %.lr.ph.split ], [ 0, %.lr.ph ] %indvars.iv.next = add nsw i64 %indvars.iv, -1 - %19 = shl i64 %.045, 8 + %19 = shl i64 %.043, 8 %20 = getelementptr inbounds i8, ptr %1, i64 %indvars.iv.next %21 = load i8, ptr %20, align 1, !tbaa !9 %22 = zext i8 %21 to i64 @@ -4943,40 +4943,40 @@ define internal fastcc i64 @unpackint(ptr noundef %0, ptr noundef readonly captu br i1 %25, label %._crit_edge.thread, label %33 ._crit_edge.thread: ; preds = %5, %._crit_edge - %.0.lcssa62 = phi i64 [ %.0.lcssa, %._crit_edge ], [ 0, %5 ] - %.not42 = icmp eq i32 %4, 0 - br i1 %.not42, label %.loopexit, label %26 + %.0.lcssa60 = phi i64 [ %.0.lcssa, %._crit_edge ], [ 0, %5 ] + %.not40 = icmp eq i32 %4, 0 + br i1 %.not40, label %.loopexit, label %26 26: ; preds = %._crit_edge.thread %27 = shl nsw i32 %3, 3 %28 = add nsw i32 %27, -1 %29 = zext nneg i32 %28 to i64 %30 = shl nuw i64 1, %29 - %31 = xor i64 %.0.lcssa62, %30 + %31 = xor i64 %.0.lcssa60, %30 %32 = sub i64 %31, %30 br label %.loopexit 33: ; preds = %._crit_edge %.not = icmp eq i32 %3, 8 - br i1 %.not, label %.loopexit, label %.lr.ph48 + br i1 %.not, label %.loopexit, label %.lr.ph46 -.lr.ph48: ; preds = %33 +.lr.ph46: ; preds = %33 %.not37 = icmp ne i32 %4, 0 %34 = icmp slt i64 %.0.lcssa, 0 - %.not41 = select i1 %.not37, i1 %34, i1 false + %35 = select i1 %.not37, i1 %34, i1 false %.not38 = icmp eq i32 %2, 0 %35 = sext i1 %.not41 to i8 br i1 %.not38, label %.lr.ph48.split.us.preheader, label %.lr.ph48.split.preheader -.lr.ph48.split.preheader: ; preds = %.lr.ph48 +.lr.ph48.split.preheader:; preds = %.lr.ph48 %36 = zext nneg i32 %6 to i64 br label %.lr.ph48.split -.lr.ph48.split.us.preheader: ; preds = %.lr.ph48 +.lr.ph48.split.us.preheader:; preds = %.lr.ph48 %37 = zext nneg i32 %3 to i64 br label %.lr.ph48.split.us -.lr.ph48.split.us: ; preds = %.lr.ph48.split.us.preheader, %46 +.lr.ph48.split.us:; preds = %.lr.ph48.split.us.preheader, %48 %indvars.iv59 = phi i64 [ 8, %.lr.ph48.split.us.preheader ], [ %indvars.iv.next60, %46 ] %38 = trunc nsw i64 %indvars.iv59 to i32 %39 = xor i32 %38, -1 @@ -4985,36 +4985,36 @@ define internal fastcc i64 @unpackint(ptr noundef %0, ptr noundef readonly captu %42 = getelementptr inbounds i8, ptr %1, i64 %41 %43 = load i8, ptr %42, align 1, !tbaa !9 %.not39.us = icmp eq i8 %43, %35 - br i1 %.not39.us, label %46, label %44, !prof !10 - -44: ; preds = %.lr.ph48.split.us - %45 = tail call i32 (ptr, ptr, ...) @luaL_error(ptr noundef %0, ptr noundef nonnull @.str.75, i32 noundef %3) #12 - br label %46 - -46: ; preds = %.lr.ph48.split.us, %44 - %indvars.iv.next60 = add nuw nsw i64 %indvars.iv59, 1 - %47 = icmp samesign ult i64 %indvars.iv.next60, %37 - br i1 %47, label %.lr.ph48.split.us, label %.loopexit - -.lr.ph48.split: ; preds = %.lr.ph48.split.preheader, %52 - %indvars.iv55 = phi i64 [ %36, %.lr.ph48.split.preheader ], [ %indvars.iv.next56, %52 ] - %48 = getelementptr inbounds nuw i8, ptr %1, i64 %indvars.iv55 - %49 = load i8, ptr %48, align 1, !tbaa !9 - %.not39 = icmp eq i8 %49, %35 + br i1 %.not39.us, label %48, label %46, !prof !10 + +46: ; preds = %.lr.ph48.split.us + %47 = tail call i32 (ptr, ptr, ...) @luaL_error(ptr noundef %0, ptr noundef nonnull @.str.75, i32 noundef %3) #12 + br label %48 + +48: ; preds = %.lr.ph48.split.us, %46 + %indvars.iv.next58 = add nuw nsw i64 %indvars.iv59, 1 + %49 = icmp samesign ult i64 %indvars.iv.next58, %37 + br i1 %49, label %.lr.ph48.split.us, label %.loopexit + +.lr.ph46.split: ; preds = %.lr.ph48.split.preheader, %55 + %indvars.iv53 = phi i64 [ %36, %.lr.ph48.split.preheader ], [ %indvars.iv.next54, %52 ] + %50 = getelementptr inbounds nuw i8, ptr %1, i64 %indvars.iv53 + %51 = load i8, ptr %50, align 1, !tbaa !9 + %.not39 = icmp eq i8 %51, %35 br i1 %.not39, label %52, label %50, !prof !10 50: ; preds = %.lr.ph48.split %51 = tail call i32 (ptr, ptr, ...) @luaL_error(ptr noundef %0, ptr noundef nonnull @.str.75, i32 noundef %3) #12 br label %52 -52: ; preds = %.lr.ph48.split, %50 - %indvars.iv.next56 = add nuw nsw i64 %indvars.iv55, 1 - %53 = trunc nuw i64 %indvars.iv.next56 to i32 - %54 = icmp sgt i32 %3, %53 - br i1 %54, label %.lr.ph48.split, label %.loopexit +55: ; preds = %.lr.ph46.split, %50 + %indvars.iv.next54 = add nuw nsw i64 %indvars.iv53, 1 + %56 = trunc nuw i64 %indvars.iv.next54 to i32 + %57 = icmp sgt i32 %3, %56 + br i1 %57, label %.lr.ph46.split, label %.loopexit -.loopexit: ; preds = %52, %46, %33, %._crit_edge.thread, %26 - %.1 = phi i64 [ %32, %26 ], [ %.0.lcssa62, %._crit_edge.thread ], [ %.0.lcssa, %33 ], [ %.0.lcssa, %46 ], [ %.0.lcssa, %52 ] +.loopexit: ; preds = %55, %48, %33, %._crit_edge.thread, %26 + %.1 = phi i64 [ %32, %26 ], [ %.0.lcssa60, %._crit_edge.thread ], [ %.0.lcssa, %33 ], [ %.0.lcssa, %46 ], [ %.0.lcssa, %52 ] ret i64 %.1 } diff --git a/bench/luajit/optimized/lj_load.ll b/bench/luajit/optimized/lj_load.ll index 7820eeb3a33..4415ea82480 100644 --- a/bench/luajit/optimized/lj_load.ll +++ b/bench/luajit/optimized/lj_load.ll @@ -73,7 +73,7 @@ define internal noalias noundef ptr @cpparser(ptr noundef %0, ptr readnone captu %8 = getelementptr inbounds nuw i8, ptr %2, i64 136 %9 = load ptr, ptr %8, align 8, !tbaa !21 %.not = icmp eq ptr %9, null - br i1 %.not, label %28, label %.preheader + br i1 %.not, label %29, label %.preheader .preheader: ; preds = %3 %10 = load i8, ptr %9, align 1, !tbaa !40 @@ -86,8 +86,8 @@ define internal noalias noundef ptr @cpparser(ptr noundef %0, ptr readnone captu %12 = getelementptr inbounds nuw i8, ptr %2, i64 180 br label %13 -13: ; preds = %.lr.ph, %19 - %14 = phi i8 [ %10, %.lr.ph ], [ %20, %19 ] +13: ; preds = %.lr.ph, %20 + %14 = phi i8 [ %10, %.lr.ph ], [ %21, %19 ] %.pn = phi ptr [ %9, %.lr.ph ], [ %15, %19 ] %.036 = phi i32 [ 1, %.lr.ph ], [ %spec.select, %19 ] %15 = getelementptr inbounds nuw i8, ptr %.pn, i64 1 @@ -96,67 +96,67 @@ define internal noalias noundef ptr @cpparser(ptr noundef %0, ptr readnone captu %17 = icmp eq i8 %14, 87 br i1 %17, label %18, label %19 -18: ; preds = %13 +19: ; preds = %13 store i32 0, ptr %12, align 4, !tbaa !41 - br label %19 + br label %20 -19: ; preds = %18, %13 - %20 = load i8, ptr %15, align 1, !tbaa !40 - %.not31 = icmp eq i8 %20, 0 +20: ; preds = %19, %13 + %21 = load i8, ptr %15, align 1, !tbaa !40 + %.not31 = icmp eq i8 %21, 0 br i1 %.not31, label %._crit_edge, label %13, !llvm.loop !42 -._crit_edge: ; preds = %19 - %21 = icmp eq i32 %spec.select, 0 - br i1 %21, label %28, label %._crit_edge.thread +._crit_edge: ; preds = %20 + %22 = icmp eq i32 %spec.select, 0 + br i1 %22, label %29, label %._crit_edge.thread ._crit_edge.thread: ; preds = %.preheader, %._crit_edge - %22 = getelementptr inbounds nuw i8, ptr %0, i64 40 - %23 = load ptr, ptr %22, align 8, !tbaa !44 - %24 = getelementptr inbounds nuw i8, ptr %23, i64 8 - store ptr %24, ptr %22, align 8, !tbaa !44 - %25 = tail call ptr @lj_err_str(ptr noundef %0, i32 noundef 2140) #12 - %26 = ptrtoint ptr %25 to i64 - %27 = or i64 %26, -703687441776640 - store i64 %27, ptr %23, align 8, !tbaa !40 + %23 = getelementptr inbounds nuw i8, ptr %0, i64 40 + %24 = load ptr, ptr %23, align 8, !tbaa !44 + %25 = getelementptr inbounds nuw i8, ptr %24, i64 8 + store ptr %25, ptr %23, align 8, !tbaa !44 + %26 = tail call ptr @lj_err_str(ptr noundef %0, i32 noundef 2140) #12 + %27 = ptrtoint ptr %26 to i64 + %28 = or i64 %27, -703687441776640 + store i64 %28, ptr %24, align 8, !tbaa !40 tail call void @lj_err_throw(ptr noundef %0, i32 noundef 3) #13 unreachable -28: ; preds = %._crit_edge, %3 +29: ; preds = %._crit_edge, %3 %.not33 = icmp eq i32 %7, 0 - br i1 %.not33, label %31, label %29 - -29: ; preds = %28 - %30 = tail call ptr @lj_bcread(ptr noundef %2) #12 - br label %33 - -31: ; preds = %28 - %32 = tail call ptr @lj_parse(ptr noundef %2) #12 - br label %33 - -33: ; preds = %31, %29 - %34 = phi ptr [ %30, %29 ], [ %32, %31 ] - %35 = getelementptr inbounds nuw i8, ptr %2, i64 180 - %36 = load i32, ptr %35, align 4, !tbaa !41 - %37 = icmp eq i32 %36, 1 - br i1 %37, label %38, label %43 - -38: ; preds = %33 - %39 = getelementptr inbounds nuw i8, ptr %0, i64 72 - %40 = load i64, ptr %39, align 8, !tbaa !45 - %41 = inttoptr i64 %40 to ptr - %42 = tail call ptr @lj_func_newL_empty(ptr noundef %0, ptr noundef %34, ptr noundef %41) #12 - br label %43 - -43: ; preds = %33, %38 - %.sink = phi ptr [ %42, %38 ], [ %34, %33 ] + br i1 %.not33, label %32, label %30 + +30: ; preds = %29 + %31 = tail call ptr @lj_bcread(ptr noundef %2) #12 + br label %34 + +32: ; preds = %29 + %33 = tail call ptr @lj_parse(ptr noundef %2) #12 + br label %34 + +34: ; preds = %32, %30 + %35 = phi ptr [ %31, %29 ], [ %33, %31 ] + %36 = getelementptr inbounds nuw i8, ptr %2, i64 180 + %37 = load i32, ptr %36, align 4, !tbaa !41 + %38 = icmp eq i32 %37, 1 + br i1 %38, label %39, label %44 + +39: ; preds = %34 + %40 = getelementptr inbounds nuw i8, ptr %0, i64 72 + %41 = load i64, ptr %40, align 8, !tbaa !45 + %42 = inttoptr i64 %41 to ptr + %43 = tail call ptr @lj_func_newL_empty(ptr noundef %0, ptr noundef %35, ptr noundef %42) #12 + br label %44 + +44: ; preds = %34, %39 + %.sink = phi ptr [ %43, %38 ], [ %35, %33 ] %.sink40 = phi i64 [ -1266637395197952, %38 ], [ -1125899906842624, %33 ] - %44 = getelementptr inbounds nuw i8, ptr %0, i64 40 - %45 = load ptr, ptr %44, align 8, !tbaa !44 - %46 = getelementptr inbounds nuw i8, ptr %45, i64 8 - store ptr %46, ptr %44, align 8, !tbaa !44 - %47 = ptrtoint ptr %.sink to i64 - %48 = or i64 %.sink40, %47 - store i64 %48, ptr %45, align 8, !tbaa !40 + %45 = getelementptr inbounds nuw i8, ptr %0, i64 40 + %46 = load ptr, ptr %45, align 8, !tbaa !44 + %47 = getelementptr inbounds nuw i8, ptr %46, i64 8 + store ptr %47, ptr %45, align 8, !tbaa !44 + %48 = ptrtoint ptr %.sink to i64 + %49 = or i64 %.sink40, %48 + store i64 %49, ptr %46, align 8, !tbaa !40 ret ptr null } diff --git a/bench/luajit/optimized/lj_strscan.ll b/bench/luajit/optimized/lj_strscan.ll index b5d9477dc91..566e0851c8a 100644 --- a/bench/luajit/optimized/lj_strscan.ll +++ b/bench/luajit/optimized/lj_strscan.ll @@ -313,7 +313,7 @@ thread-pre-split: ; preds = %22, %4 %.2205 = phi i32 [ 0, %129 ], [ %.0203, %126 ], [ %.3206288, %.critedge.thread ] %.0194 = phi i32 [ 0, %129 ], [ 0, %126 ], [ %spec.select262, %.critedge.thread ] %147 = icmp sgt i32 %.0215, 9 - br i1 %147, label %148, label %184 + br i1 %147, label %148, label %185 148: ; preds = %146 %149 = or i8 %107, 32 @@ -327,109 +327,109 @@ thread-pre-split: ; preds = %22, %4 %155 = load i8, ptr %154, align 1, !tbaa !4 switch i8 %155, label %159 [ i8 43, label %156 - i8 45, label %156 + i8 45, label %157 ] -156: ; preds = %153, %153 - %157 = getelementptr inbounds nuw i8, ptr %.8, i64 2 - %158 = icmp ne i8 %155, 45 - %.pre324 = load i8, ptr %157, align 1, !tbaa !4 - br label %159 - -159: ; preds = %153, %156 - %160 = phi i8 [ %.pre324, %156 ], [ %155, %153 ] - %.0192 = phi i1 [ %158, %156 ], [ true, %153 ] - %.10 = phi ptr [ %157, %156 ], [ %154, %153 ] - %161 = zext i8 %160 to i64 - %162 = getelementptr inbounds nuw i8, ptr getelementptr inbounds nuw (i8, ptr @lj_char_bits, i64 1), i64 %161 - %163 = load i8, ptr %162, align 1, !tbaa !4 - %164 = and i8 %163, 8 - %.not244 = icmp eq i8 %164, 0 - br i1 %.not244, label %.thread270, label %165 - -165: ; preds = %159 - %166 = and i8 %160, 15 - %167 = zext nneg i8 %166 to i32 - br label %168 - -168: ; preds = %174, %165 - %.0193 = phi i32 [ %167, %165 ], [ %178, %174 ] +157: ; preds = %153, %153 + %158 = getelementptr inbounds nuw i8, ptr %.8, i64 2 + %159 = icmp ne i8 %155, 45 + %.pre324 = load i8, ptr %158, align 1, !tbaa !4 + br label %160 + +160: ; preds = %153, %157 + %161 = phi i8 [ %.pre324, %156 ], [ %155, %153 ] + %.0192 = phi i1 [ %159, %156 ], [ true, %153 ] + %.10 = phi ptr [ %158, %156 ], [ %154, %153 ] + %162 = zext i8 %161 to i64 + %163 = getelementptr inbounds nuw i8, ptr getelementptr inbounds nuw (i8, ptr @lj_char_bits, i64 1), i64 %162 + %164 = load i8, ptr %163, align 1, !tbaa !4 + %165 = and i8 %164, 8 + %.not244 = icmp eq i8 %165, 0 + br i1 %.not244, label %.thread270, label %166 + +166: ; preds = %160 + %167 = and i8 %161, 15 + %168 = zext nneg i8 %167 to i32 + br label %169 + +169: ; preds = %175, %166 + %.0193 = phi i32 [ %168, %165 ], [ %179, %174 ] %.10.pn = phi ptr [ %.10, %165 ], [ %.12, %174 ] %.12 = getelementptr inbounds nuw i8, ptr %.10.pn, i64 1 - %169 = load i8, ptr %.12, align 1, !tbaa !4 - %170 = zext i8 %169 to i64 - %171 = getelementptr inbounds nuw i8, ptr getelementptr inbounds nuw (i8, ptr @lj_char_bits, i64 1), i64 %170 - %172 = load i8, ptr %171, align 1, !tbaa !4 - %173 = and i8 %172, 8 - %.not245 = icmp eq i8 %173, 0 - br i1 %.not245, label %180, label %174 - -174: ; preds = %168 - %175 = mul nuw nsw i32 %.0193, 10 - %176 = and i8 %169, 15 - %177 = zext nneg i8 %176 to i32 - %178 = add nuw nsw i32 %175, %177 - %179 = icmp samesign ugt i32 %178, 1048575 - br i1 %179, label %.thread270, label %168, !llvm.loop !12 - -180: ; preds = %168 - %181 = sub nsw i32 0, %.0193 - %182 = select i1 %.0192, i32 %.0193, i32 %181 - %183 = add nsw i32 %182, %.0194 - br label %184 - -184: ; preds = %180, %148, %146 - %185 = phi i8 [ %169, %180 ], [ %107, %148 ], [ %107, %146 ] + %170 = load i8, ptr %.12, align 1, !tbaa !4 + %171 = zext i8 %170 to i64 + %172 = getelementptr inbounds nuw i8, ptr getelementptr inbounds nuw (i8, ptr @lj_char_bits, i64 1), i64 %171 + %173 = load i8, ptr %172, align 1, !tbaa !4 + %174 = and i8 %173, 8 + %.not245 = icmp eq i8 %174, 0 + br i1 %.not245, label %181, label %175 + +175: ; preds = %169 + %176 = mul nuw nsw i32 %.0193, 10 + %177 = and i8 %170, 15 + %178 = zext nneg i8 %177 to i32 + %179 = add nuw nsw i32 %176, %178 + %180 = icmp samesign ugt i32 %179, 1048575 + br i1 %180, label %.thread270, label %169, !llvm.loop !12 + +181: ; preds = %169 + %182 = sub nsw i32 0, %.0193 + %183 = select i1 %.0192, i32 %.0193, i32 %182 + %184 = add nsw i32 %183, %.0194 + br label %185 + +185: ; preds = %181, %148, %146 + %186 = phi i8 [ %170, %180 ], [ %107, %148 ], [ %107, %146 ] %.1220 = phi i32 [ 1, %180 ], [ %.0219, %148 ], [ %.0219, %146 ] - %.2196 = phi i32 [ %183, %180 ], [ %.0194, %148 ], [ %.0194, %146 ] + %.2196 = phi i32 [ %184, %180 ], [ %.0194, %148 ], [ %.0194, %146 ] %.9 = phi ptr [ %.12, %180 ], [ %.8, %148 ], [ %.8, %146 ] - %.not247 = icmp eq i8 %185, 0 - br i1 %.not247, label %233, label %186 - -186: ; preds = %184 - %187 = or i8 %185, 32 - %188 = icmp eq i8 %187, 105 - br i1 %188, label %189, label %193 - -189: ; preds = %186 - %190 = and i32 %3, 4 - %.not249 = icmp eq i32 %190, 0 - br i1 %.not249, label %.thread270, label %191 - -191: ; preds = %189 - %192 = getelementptr inbounds nuw i8, ptr %.9, i64 1 - br label %224 - -193: ; preds = %186 - %194 = icmp eq i32 %.1220, 3 - br i1 %194, label %195, label %224 - -195: ; preds = %193 - %196 = icmp eq i8 %187, 117 - %spec.select263 = select i1 %196, i32 4, i32 3 - %spec.select264.idx = zext i1 %196 to i64 + %.not247 = icmp eq i8 %186, 0 + br i1 %.not247, label %234, label %187 + +187: ; preds = %185 + %188 = or i8 %186, 32 + %189 = icmp eq i8 %188, 105 + br i1 %189, label %190, label %194 + +190: ; preds = %187 + %191 = and i32 %3, 4 + %.not249 = icmp eq i32 %191, 0 + br i1 %.not249, label %.thread270, label %192 + +192: ; preds = %190 + %193 = getelementptr inbounds nuw i8, ptr %.9, i64 1 + br label %225 + +194: ; preds = %187 + %195 = icmp eq i32 %.1220, 3 + br i1 %195, label %196, label %225 + +196: ; preds = %194 + %197 = icmp eq i8 %188, 117 + %spec.select263 = select i1 %197, i32 4, i32 3 + %spec.select264.idx = zext i1 %197 to i64 %spec.select264 = getelementptr inbounds nuw i8, ptr %.9, i64 %spec.select264.idx - %197 = load i8, ptr %spec.select264, align 1, !tbaa !4 - %198 = and i8 %197, -33 - %199 = icmp eq i8 %198, 76 - br i1 %199, label %200, label %211 + %198 = load i8, ptr %spec.select264, align 1, !tbaa !4 + %199 = and i8 %198, -33 + %200 = icmp eq i8 %199, 76 + br i1 %200, label %200, label %211 -200: ; preds = %195 +210: ; preds = %195 %201 = getelementptr inbounds nuw i8, ptr %spec.select264, i64 1 %202 = load i8, ptr %201, align 1, !tbaa !4 %203 = and i8 %202, -33 %204 = icmp eq i8 %203, 76 - br i1 %204, label %205, label %208 + br i1 %204, label %205, label %216 -205: ; preds = %200 +205:; preds = %210 %206 = getelementptr inbounds nuw i8, ptr %spec.select264, i64 2 - %207 = add nuw nsw i32 %spec.select263, 2 + %207 = add nuw nsw i32 %spec.select264, 2 br label %211 -208: ; preds = %200 +216: ; preds = %210 br i1 %.not239, label %209, label %.thread270 -209: ; preds = %208 +209: ; preds = %217 %210 = add nuw nsw i32 %spec.select263, 2 br label %211 @@ -447,155 +447,155 @@ thread-pre-split: ; preds = %22, %4 i32 3, label %216 ] -216: ; preds = %215, %215 - %217 = getelementptr inbounds nuw i8, ptr %.16, i64 1 - %218 = add nuw nsw i32 %.5224, 1 - br label %219 +217: ; preds = %215, %215 + %218 = getelementptr inbounds nuw i8, ptr %.16, i64 1 + %219 = add nuw nsw i32 %.5224, 1 + br label %220 -219: ; preds = %215, %216, %211 - %.6225 = phi i32 [ %218, %216 ], [ %.5224, %215 ], [ %.5224, %211 ] +220: ; preds = %215, %217, %211 + %.6225 = phi i32 [ %219, %216 ], [ %.5224, %215 ], [ %.5224, %211 ] %.17 = phi ptr [ %217, %216 ], [ %.16, %215 ], [ %.16, %211 ] - %220 = icmp ne i32 %.6225, 4 - %brmerge = or i1 %.not239, %220 - br i1 %brmerge, label %221, label %.thread270 - -221: ; preds = %219 - %222 = icmp samesign ugt i32 %.6225, 4 - %223 = and i32 %3, 8 - %.not248 = icmp eq i32 %223, 0 - %or.cond = and i1 %.not248, %222 - br i1 %or.cond, label %.thread270, label %224 - -224: ; preds = %193, %221, %191 + %221 = icmp ne i32 %.6225, 4 + %brmerge = or i1 %.not239, %221 + br i1 %brmerge, label %222, label %.thread270 + +222: ; preds = %220 + %223 = icmp samesign ugt i32 %.6225, 4 + %224 = and i32 %3, 8 + %.not248 = icmp eq i32 %224, 0 + %or.cond = and i1 %.not248, %223 + br i1 %or.cond, label %.thread270, label %225 + +225: ; preds = %194, %222, %192 %.3222 = phi i32 [ 2, %191 ], [ %.6225, %221 ], [ %.1220, %193 ] - %.14 = phi ptr [ %192, %191 ], [ %.17, %221 ], [ %.9, %193 ] - br label %225 - -225: ; preds = %225, %224 - %.18 = phi ptr [ %.14, %224 ], [ %231, %225 ] - %226 = load i8, ptr %.18, align 1, !tbaa !4 - %227 = zext i8 %226 to i64 - %228 = getelementptr inbounds nuw i8, ptr getelementptr inbounds nuw (i8, ptr @lj_char_bits, i64 1), i64 %227 - %229 = load i8, ptr %228, align 1, !tbaa !4 - %230 = and i8 %229, 2 - %.not250 = icmp eq i8 %230, 0 - %231 = getelementptr inbounds nuw i8, ptr %.18, i64 1 - br i1 %.not250, label %232, label %225, !llvm.loop !13 - -232: ; preds = %225 - %.not251 = icmp eq i8 %226, 0 - br i1 %.not251, label %233, label %.thread270 - -233: ; preds = %232, %184 + %.14 = phi ptr [ %193, %191 ], [ %.17, %221 ], [ %.9, %193 ] + br label %226 + +226: ; preds = %226, %225 + %.18 = phi ptr [ %.14, %224 ], [ %232, %225 ] + %227 = load i8, ptr %.18, align 1, !tbaa !4 + %228 = zext i8 %227 to i64 + %229 = getelementptr inbounds nuw i8, ptr getelementptr inbounds nuw (i8, ptr @lj_char_bits, i64 1), i64 %228 + %230 = load i8, ptr %229, align 1, !tbaa !4 + %231 = and i8 %230, 2 + %.not250 = icmp eq i8 %231, 0 + %232 = getelementptr inbounds nuw i8, ptr %.18, i64 1 + br i1 %.not250, label %233, label %226, !llvm.loop !13 + +233: ; preds = %226 + %.not251 = icmp eq i8 %227, 0 + br i1 %.not251, label %234, label %.thread270 + +234: ; preds = %233, %185 %.2221 = phi i32 [ %.3222, %232 ], [ %.1220, %184 ] %.13 = phi ptr [ %.18, %232 ], [ %.9, %184 ] - %234 = icmp ult ptr %.13, %6 - br i1 %234, label %.thread270, label %235 - -235: ; preds = %233 - %236 = icmp eq i32 %.2221, 3 - %237 = icmp eq i32 %.0215, 10 - %or.cond4 = and i1 %236, %237 - br i1 %or.cond4, label %238, label %259 - -238: ; preds = %235 - %239 = icmp ult i32 %.2205, 10 - br i1 %239, label %246, label %240 - -240: ; preds = %238 - %241 = icmp eq i32 %.2205, 10 - br i1 %241, label %242, label %.thread277 - -242: ; preds = %240 - %243 = icmp ult i8 %105, 51 - %244 = or i32 %.0213, -2147483648 - %245 = icmp ult i32 %.0198, %244 - %or.cond267 = select i1 %243, i1 %245, i1 false - br i1 %or.cond267, label %246, label %.thread277 - -246: ; preds = %242, %238 - %247 = and i32 %3, 2 - %.not253 = icmp eq i32 %247, 0 - br i1 %.not253, label %252, label %248 - -248: ; preds = %246 + %235 = icmp ult ptr %.13, %6 + br i1 %235, label %.thread270, label %236 + +236: ; preds = %234 + %237 = icmp eq i32 %.2221, 3 + %238 = icmp eq i32 %.0215, 10 + %or.cond4 = and i1 %237, %238 + br i1 %or.cond4, label %239, label %260 + +239: ; preds = %236 + %240 = icmp ult i32 %.2205, 10 + br i1 %240, label %247, label %241 + +241: ; preds = %239 + %242 = icmp eq i32 %.2205, 10 + br i1 %242, label %243, label %.thread277 + +243: ; preds = %241 + %244 = icmp ult i8 %105, 51 + %245 = or i32 %.0213, -2147483648 + %246 = icmp ult i32 %.0198, %245 + %or.cond267 = select i1 %244, i1 %246, i1 false + br i1 %or.cond267, label %247, label %.thread277 + +247: ; preds = %243, %239 + %248 = and i32 %3, 2 + %.not253 = icmp eq i32 %248, 0 + br i1 %.not253, label %253, label %249 + +249: ; preds = %247 %.not254 = icmp eq i32 %.0213, 0 - %249 = uitofp i32 %.0198 to double - %250 = fneg double %249 - %251 = select i1 %.not254, double %249, double %250 - store double %251, ptr %2, align 8, !tbaa !4 + %250 = uitofp i32 %.0198 to double + %251 = fneg double %250 + %252 = select i1 %.not254, double %250, double %251 + store double %252, ptr %2, align 8, !tbaa !4 br label %.thread270 -252: ; preds = %246 - %253 = icmp eq i32 %.0198, 0 - %254 = icmp ne i32 %.0213, 0 - %or.cond6 = and i1 %254, %253 - br i1 %or.cond6, label %255, label %256 +253: ; preds = %247 + %254 = icmp eq i32 %.0198, 0 + %255 = icmp ne i32 %.0213, 0 + %or.cond6 = and i1 %255, %254 + br i1 %or.cond6, label %256, label %257 -255: ; preds = %252 +256: ; preds = %253 store double -0.000000e+00, ptr %2, align 8, !tbaa !4 br label %.thread270 -256: ; preds = %252 - %257 = sub i32 0, %.0198 - %258 = select i1 %254, i32 %257, i32 %.0198 - store i32 %258, ptr %2, align 8, !tbaa !4 +257: ; preds = %253 + %258 = sub i32 0, %.0198 + %259 = select i1 %255, i32 %258, i32 %.0198 + store i32 %259, ptr %2, align 8, !tbaa !4 br label %.thread270 -259: ; preds = %235 - %260 = icmp ne i32 %.0215, 0 - %261 = add nsw i32 %.2221, -1 - %262 = icmp samesign ult i32 %261, 2 - %or.cond10 = or i1 %260, %262 - br i1 %or.cond10, label %265, label %263 +260: ; preds = %236 + %261 = icmp ne i32 %.0215, 0 + %262 = add nsw i32 %.2221, -1 + %263 = icmp samesign ult i32 %262, 2 + %or.cond10 = or i1 %261, %263 + br i1 %or.cond10, label %266, label %264 -263: ; preds = %259 - %264 = tail call fastcc i32 @strscan_oct(ptr noundef nonnull %.5191, ptr noundef %2, i32 noundef %.2221, i32 noundef %.0213, i32 noundef %.2205) +264: ; preds = %260 + %265 = tail call fastcc i32 @strscan_oct(ptr noundef nonnull %.5191, ptr noundef %2, i32 noundef %.2221, i32 noundef %.0213, i32 noundef %.2205) br label %.thread270 -265: ; preds = %259 +266: ; preds = %260 switch i32 %.0215, label %.thread277 [ - i32 16, label %266 - i32 2, label %268 + i32 16, label %267 + i32 2, label %269 ] -266: ; preds = %265 - %267 = tail call fastcc i32 @strscan_hex(ptr noundef nonnull %.5191, ptr noundef %2, i32 noundef %.2221, i32 noundef %3, i32 noundef %.2196, i32 noundef %.0213, i32 noundef %.2205) - br label %271 - -268: ; preds = %265 - %269 = tail call fastcc i32 @strscan_bin(ptr noundef nonnull %.5191, ptr noundef %2, i32 noundef %.2221, i32 noundef %3, i32 noundef %.2196, i32 noundef %.0213, i32 noundef %.2205) - br label %271 - -.thread277: ; preds = %242, %240, %265 - %270 = tail call fastcc i32 @strscan_dec(ptr noundef nonnull %.5191, ptr noundef %2, i32 noundef %.2221, i32 noundef %3, i32 noundef %.2196, i32 noundef %.0213, i32 noundef %.2205) - br label %271 - -271: ; preds = %268, %.thread277, %266 - %.7226 = phi i32 [ %267, %266 ], [ %269, %268 ], [ %270, %.thread277 ] - %272 = icmp ne i32 %.7226, 1 - %273 = and i32 %3, 1 - %.not252 = icmp eq i32 %273, 0 - %or.cond268 = or i1 %.not252, %272 - br i1 %or.cond268, label %.thread270, label %274 - -274: ; preds = %271 - %275 = load i64, ptr %2, align 8 - %276 = icmp eq i64 %275, -9223372036854775808 - br i1 %276, label %.thread270, label %277 - -277: ; preds = %274 - %278 = bitcast i64 %275 to double - %279 = fptosi double %278 to i32 - %280 = sitofp i32 %279 to double - %281 = fcmp une double %278, %280 - br i1 %281, label %.thread270, label %282 - -282: ; preds = %277 - store i32 %279, ptr %2, align 8, !tbaa !4 +267: ; preds = %266 + %268 = tail call fastcc i32 @strscan_hex(ptr noundef nonnull %.5191, ptr noundef %2, i32 noundef %.2221, i32 noundef %3, i32 noundef %.2196, i32 noundef %.0213, i32 noundef %.2205) + br label %272 + +269: ; preds = %266 + %270 = tail call fastcc i32 @strscan_bin(ptr noundef nonnull %.5191, ptr noundef %2, i32 noundef %.2221, i32 noundef %3, i32 noundef %.2196, i32 noundef %.0213, i32 noundef %.2205) + br label %272 + +.thread277: ; preds = %243, %241, %266 + %271 = tail call fastcc i32 @strscan_dec(ptr noundef nonnull %.5191, ptr noundef %2, i32 noundef %.2221, i32 noundef %3, i32 noundef %.2196, i32 noundef %.0213, i32 noundef %.2205) + br label %272 + +272: ; preds = %269, %.thread277, %267 + %.7226 = phi i32 [ %268, %266 ], [ %270, %268 ], [ %271, %.thread277 ] + %273 = icmp ne i32 %.7226, 1 + %274 = and i32 %3, 1 + %.not252 = icmp eq i32 %274, 0 + %or.cond268 = or i1 %.not252, %273 + br i1 %or.cond268, label %.thread270, label %275 + +275: ; preds = %272 + %276 = load i64, ptr %2, align 8 + %277 = icmp eq i64 %276, -9223372036854775808 + br i1 %277, label %.thread270, label %278 + +278: ; preds = %275 + %279 = bitcast i64 %276 to double + %280 = fptosi double %279 to i32 + %281 = sitofp i32 %280 to double + %282 = fcmp une double %279, %281 + br i1 %282, label %.thread270, label %283 + +283: ; preds = %278 + store i32 %280, ptr %2, align 8, !tbaa !4 br label %.thread270 -.thread270: ; preds = %102, %121, %174, %277, %159, %271, %274, %282, %248, %255, %256, %263, %124, %127, %.critedge, %189, %208, %221, %219, %232, %233, %82, %80 +.thread270: ; preds = %102, %121, %175, %278, %160, %272, %275, %283, %249, %256, %257, %264, %124, %127, %.critedge, %190, %208, %221, %219, %232, %233, %82, %80 %.1 = phi i32 [ 1, %82 ], [ 0, %80 ], [ 1, %248 ], [ 1, %255 ], [ 3, %256 ], [ 3, %282 ], [ %264, %263 ], [ 0, %124 ], [ 0, %127 ], [ 0, %.critedge ], [ 0, %189 ], [ 0, %208 ], [ 0, %221 ], [ 0, %219 ], [ 0, %232 ], [ 0, %233 ], [ 1, %274 ], [ %.7226, %271 ], [ 0, %159 ], [ 1, %277 ], [ 0, %174 ], [ 0, %121 ], [ 0, %102 ] ret i32 %.1 } diff --git a/bench/luau/optimized/lstrlib.ll b/bench/luau/optimized/lstrlib.ll index 756c260c516..d0ef3f3ef1a 100644 --- a/bench/luau/optimized/lstrlib.ll +++ b/bench/luau/optimized/lstrlib.ll @@ -2008,8 +2008,8 @@ define internal noundef range(i32 -2147483647, -2147483648) i32 @_ZL10str_unpack %.not63181 = icmp eq i8 %22, 0 br i1 %.not63181, label %._crit_edge, label %.lr.ph -.lr.ph: ; preds = %19, %201 - %.0183 = phi i32 [ %202, %201 ], [ %spec.store.select, %19 ] +.lr.ph: ; preds = %19, %204 + %.0183 = phi i32 [ %205, %201 ], [ %spec.store.select, %19 ] %.058182 = phi i32 [ %.159, %201 ], [ 0, %19 ] call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #14 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #14 @@ -2035,14 +2035,14 @@ define internal noundef range(i32 -2147483647, -2147483648) i32 @_ZL10str_unpack %35 = add nsw i32 %.058182, 1 switch i32 %24, label %default.unreachable214 [ i32 0, label %36 - i32 1, label %83 - i32 2, label %121 + i32 1, label %86 + i32 2, label %124 i32 3, label %142 i32 4, label %145 - i32 5, label %189 - i32 7, label %201 - i32 6, label %201 - i32 8, label %201 + i32 5, label %192 + i32 7, label %204 + i32 6, label %204 + i32 8, label %204 ] 36: ; preds = %33 @@ -2054,31 +2054,31 @@ define internal noundef range(i32 -2147483647, -2147483648) i32 @_ZL10str_unpack .lr.ph.i: ; preds = %36 %41 = load i32, ptr %20, align 8, !tbaa !52 - %.not43.i = icmp eq i32 %41, 0 + %.not41.i = icmp eq i32 %41, 0 %42 = call i32 @llvm.umin.i32(i32 %27, i32 8) %43 = zext nneg i32 %42 to i64 - br i1 %.not43.i, label %.lr.ph.split.us.i, label %.lr.ph.split.i + br i1 %.not41.i, label %.lr.ph.split.us.i, label %.lr.ph.split.i .lr.ph.split.us.i: ; preds = %.lr.ph.i, %.lr.ph.split.us.i - %indvars.iv54.i = phi i64 [ %indvars.iv.next55.i, %.lr.ph.split.us.i ], [ %43, %.lr.ph.i ] - %.045.us.i = phi i64 [ %51, %.lr.ph.split.us.i ], [ 0, %.lr.ph.i ] - %indvars.iv.next55.i = add nsw i64 %indvars.iv54.i, -1 - %44 = shl i64 %.045.us.i, 8 - %45 = trunc nsw i64 %indvars.iv54.i to i32 + %indvars.iv52.i = phi i64 [ %indvars.iv.next53.i, %.lr.ph.split.us.i ], [ %43, %.lr.ph.i ] + %.043.us.i = phi i64 [ %51, %.lr.ph.split.us.i ], [ 0, %.lr.ph.i ] + %indvars.iv.next53.i = add nsw i64 %indvars.iv52.i, -1 + %44 = shl i64 %.043.us.i, 8 + %45 = trunc nsw i64 %indvars.iv52.i to i32 %46 = sub i32 %27, %45 %47 = sext i32 %46 to i64 %48 = getelementptr inbounds i8, ptr %38, i64 %47 %49 = load i8, ptr %48, align 1, !tbaa !8 %50 = zext i8 %49 to i64 %51 = or disjoint i64 %44, %50 - %52 = icmp samesign ugt i64 %indvars.iv54.i, 1 + %52 = icmp samesign ugt i64 %indvars.iv52.i, 1 br i1 %52, label %.lr.ph.split.us.i, label %._crit_edge.i, !llvm.loop !61 .lr.ph.split.i: ; preds = %.lr.ph.i, %.lr.ph.split.i %indvars.iv.i = phi i64 [ %indvars.iv.next.i, %.lr.ph.split.i ], [ %43, %.lr.ph.i ] - %.045.i = phi i64 [ %57, %.lr.ph.split.i ], [ 0, %.lr.ph.i ] + %.043.i = phi i64 [ %57, %.lr.ph.split.i ], [ 0, %.lr.ph.i ] %indvars.iv.next.i = add nsw i64 %indvars.iv.i, -1 - %53 = shl i64 %.045.i, 8 + %53 = shl i64 %.043.i, 8 %54 = getelementptr inbounds i8, ptr %38, i64 %indvars.iv.next.i %55 = load i8, ptr %54, align 1, !tbaa !8 %56 = zext i8 %55 to i64 @@ -2092,41 +2092,41 @@ define internal noundef range(i32 -2147483647, -2147483648) i32 @_ZL10str_unpack br i1 %59, label %._crit_edge.thread.i, label %66 ._crit_edge.thread.i: ; preds = %._crit_edge.i, %36 - %.0.lcssa63.i = phi i64 [ %.0.lcssa.i, %._crit_edge.i ], [ 0, %36 ] + %.0.lcssa61.i = phi i64 [ %.0.lcssa.i, %._crit_edge.i ], [ 0, %36 ] %60 = shl nsw i32 %27, 3 %61 = add nsw i32 %60, -1 %62 = zext nneg i32 %61 to i64 %63 = shl nuw i64 1, %62 - %64 = xor i64 %.0.lcssa63.i, %63 + %64 = xor i64 %.0.lcssa61.i, %63 %65 = sub i64 %64, %63 br label %_ZL9unpackintP9lua_StatePKciii.exit 66: ; preds = %._crit_edge.i %.not.i = icmp eq i32 %27, 8 - br i1 %.not.i, label %_ZL9unpackintP9lua_StatePKciii.exit, label %.lr.ph48.i + br i1 %.not.i, label %_ZL9unpackintP9lua_StatePKciii.exit, label %.lr.ph46.i -.lr.ph48.i: ; preds = %66 +.lr.ph46.i: ; preds = %66 %.0.lcssa.i.lobit = ashr i64 %.0.lcssa.i, 63 %67 = trunc nsw i64 %.0.lcssa.i.lobit to i8 - br i1 %.not43.i, label %.lr.ph48.split.us.preheader.i, label %.lr.ph48.split.preheader.i + br i1 %.not41.i, label %.lr.ph46.split.us.preheader.i, label %.lr.ph46.split.preheader.i -.lr.ph48.split.preheader.i: ; preds = %.lr.ph48.i - %68 = zext nneg i32 %39 to i64 +.lr.ph46.split.preheader.i: ; preds = %.lr.ph46.i + %69 = zext nneg i32 %39 to i64 br label %.lr.ph48.split.i -.lr.ph48.split.us.preheader.i: ; preds = %.lr.ph48.i - %69 = zext nneg i32 %27 to i64 - br label %.lr.ph48.split.us.i - -.lr.ph48.split.us.i: ; preds = %76, %.lr.ph48.split.us.preheader.i - %indvars.iv60.i = phi i64 [ 8, %.lr.ph48.split.us.preheader.i ], [ %indvars.iv.next61.i, %76 ] - %70 = trunc nsw i64 %indvars.iv60.i to i32 - %71 = xor i32 %70, -1 - %72 = add nsw i32 %27, %71 - %73 = sext i32 %72 to i64 - %74 = getelementptr inbounds i8, ptr %38, i64 %73 - %75 = load i8, ptr %74, align 1, !tbaa !8 - %.not39.us.i = icmp eq i8 %75, %67 +.lr.ph46.split.us.preheader.i: ; preds = %.lr.ph46.i + %70 = zext nneg i32 %27 to i64 + br label %.lr.ph46.split.us.i + +.lr.ph46.split.us.i: ; preds = %76, %.lr.ph46.split.us.preheader.i + %indvars.iv58.i = phi i64 [ 8, %.lr.ph48.split.us.preheader.i ], [ %indvars.iv.next61.i, %76 ] + %71 = trunc nsw i64 %indvars.iv58.i to i32 + %72 = xor i32 %71, -1 + %73 = add nsw i32 %27, %72 + %74 = sext i32 %73 to i64 + %75 = getelementptr inbounds i8, ptr %38, i64 %74 + %76 = load i8, ptr %75, align 1, !tbaa !8 + %.not39.us.i = icmp eq i8 %76, %67 br i1 %.not39.us.i, label %76, label %.split.us.i 76: ; preds = %.lr.ph48.split.us.i @@ -2141,185 +2141,185 @@ define internal noundef range(i32 -2147483647, -2147483648) i32 @_ZL10str_unpack br i1 %79, label %.lr.ph48.split.i, label %_ZL9unpackintP9lua_StatePKciii.exit, !llvm.loop !62 .lr.ph48.split.i: ; preds = %77, %.lr.ph48.split.preheader.i - %indvars.iv56.i = phi i64 [ %68, %.lr.ph48.split.preheader.i ], [ %indvars.iv.next57.i, %77 ] + %indvars.iv56.i = phi i64 [ %69, %.lr.ph48.split.preheader.i ], [ %indvars.iv.next57.i, %77 ] %80 = getelementptr inbounds nuw i8, ptr %38, i64 %indvars.iv56.i %81 = load i8, ptr %80, align 1, !tbaa !8 %.not39.i = icmp eq i8 %81, %67 br i1 %.not39.i, label %77, label %.split.us.i -.split.us.i: ; preds = %.lr.ph48.split.i, %.lr.ph48.split.us.i +.split.us.i:; preds = %.lr.ph48.split.i, %.lr.ph48.split.us.i call void (ptr, ptr, ...) @_Z11luaL_errorLP9lua_StatePKcz(ptr noundef %0, ptr noundef nonnull @.str.63, i32 noundef %27) #15 unreachable _ZL9unpackintP9lua_StatePKciii.exit: ; preds = %77, %76, %._crit_edge.thread.i, %66 %.1.i = phi i64 [ %65, %._crit_edge.thread.i ], [ %.0.lcssa.i, %66 ], [ %.0.lcssa.i, %76 ], [ %.0.lcssa.i, %77 ] - %82 = sitofp i64 %.1.i to double - call void @_Z14lua_pushnumberP9lua_Stated(ptr noundef %0, double noundef %82) - br label %201 - -83: ; preds = %33 - %84 = sext i32 %34 to i64 - %85 = getelementptr inbounds i8, ptr %9, i64 %84 - %86 = call i32 @llvm.smin.i32(i32 %27, i32 8) - %87 = icmp sgt i32 %27, 0 - br i1 %87, label %.lr.ph.i69, label %_ZL9unpackintP9lua_StatePKciii.exit95 - -.lr.ph.i69: ; preds = %83 - %88 = load i32, ptr %20, align 8, !tbaa !52 - %.not43.i70 = icmp eq i32 %88, 0 - %89 = call i32 @llvm.umin.i32(i32 %27, i32 8) - %90 = zext nneg i32 %89 to i64 - br i1 %.not43.i70, label %.lr.ph.split.us.i91, label %.lr.ph.split.i71 + %85 = sitofp i64 %.1.i to double + call void @_Z14lua_pushnumberP9lua_Stated(ptr noundef %0, double noundef %85) + br label %204 + +86: ; preds = %33 + %87 = sext i32 %34 to i64 + %88 = getelementptr inbounds i8, ptr %9, i64 %87 + %89 = call i32 @llvm.smin.i32(i32 %27, i32 8) + %90 = icmp sgt i32 %27, 0 + br i1 %90, label %.lr.ph.i69, label %_ZL9unpackintP9lua_StatePKciii.exit95 + +.lr.ph.i69: ; preds = %86 + %91 = load i32, ptr %20, align 8, !tbaa !52 + %.not41.i70 = icmp eq i32 %91, 0 + %92 = call i32 @llvm.umin.i32(i32 %27, i32 8) + %93 = zext nneg i32 %92 to i64 + br i1 %.not41.i70, label %.lr.ph.split.us.i91, label %.lr.ph.split.i71 .lr.ph.split.us.i91: ; preds = %.lr.ph.i69, %.lr.ph.split.us.i91 - %indvars.iv54.i92 = phi i64 [ %indvars.iv.next55.i94, %.lr.ph.split.us.i91 ], [ %90, %.lr.ph.i69 ] - %.045.us.i93 = phi i64 [ %98, %.lr.ph.split.us.i91 ], [ 0, %.lr.ph.i69 ] - %indvars.iv.next55.i94 = add nsw i64 %indvars.iv54.i92, -1 - %91 = shl i64 %.045.us.i93, 8 - %92 = trunc nsw i64 %indvars.iv54.i92 to i32 - %93 = sub i32 %27, %92 - %94 = sext i32 %93 to i64 - %95 = getelementptr inbounds i8, ptr %85, i64 %94 - %96 = load i8, ptr %95, align 1, !tbaa !8 - %97 = zext i8 %96 to i64 - %98 = or disjoint i64 %91, %97 - %99 = icmp samesign ugt i64 %indvars.iv54.i92, 1 - br i1 %99, label %.lr.ph.split.us.i91, label %._crit_edge.i75, !llvm.loop !61 + %indvars.iv52.i92 = phi i64 [ %indvars.iv.next53.i94, %.lr.ph.split.us.i91 ], [ %93, %.lr.ph.i69 ] + %.043.us.i93 = phi i64 [ %101, %.lr.ph.split.us.i91 ], [ 0, %.lr.ph.i69 ] + %indvars.iv.next53.i94 = add nsw i64 %indvars.iv52.i92, -1 + %94 = shl i64 %.043.us.i93, 8 + %95 = trunc nsw i64 %indvars.iv52.i92 to i32 + %96 = sub i32 %27, %95 + %97 = sext i32 %96 to i64 + %98 = getelementptr inbounds i8, ptr %88, i64 %97 + %99 = load i8, ptr %98, align 1, !tbaa !8 + %100 = zext i8 %99 to i64 + %101 = or disjoint i64 %94, %100 + %102 = icmp samesign ugt i64 %indvars.iv52.i92, 1 + br i1 %102, label %.lr.ph.split.us.i91, label %._crit_edge.i75, !llvm.loop !61 .lr.ph.split.i71: ; preds = %.lr.ph.i69, %.lr.ph.split.i71 - %indvars.iv.i72 = phi i64 [ %indvars.iv.next.i74, %.lr.ph.split.i71 ], [ %90, %.lr.ph.i69 ] - %.045.i73 = phi i64 [ %104, %.lr.ph.split.i71 ], [ 0, %.lr.ph.i69 ] + %indvars.iv.i72 = phi i64 [ %indvars.iv.next.i74, %.lr.ph.split.i71 ], [ %93, %.lr.ph.i69 ] + %.043.i73 = phi i64 [ %107, %.lr.ph.split.i71 ], [ 0, %.lr.ph.i69 ] %indvars.iv.next.i74 = add nsw i64 %indvars.iv.i72, -1 - %100 = shl i64 %.045.i73, 8 - %101 = getelementptr inbounds i8, ptr %85, i64 %indvars.iv.next.i74 - %102 = load i8, ptr %101, align 1, !tbaa !8 - %103 = zext i8 %102 to i64 - %104 = or disjoint i64 %100, %103 - %105 = icmp samesign ugt i64 %indvars.iv.i72, 1 - br i1 %105, label %.lr.ph.split.i71, label %._crit_edge.i75.thread, !llvm.loop !61 + %103 = shl i64 %.043.i73, 8 + %104 = getelementptr inbounds i8, ptr %88, i64 %indvars.iv.next.i74 + %105 = load i8, ptr %104, align 1, !tbaa !8 + %106 = zext i8 %105 to i64 + %107 = or disjoint i64 %103, %106 + %108 = icmp samesign ugt i64 %indvars.iv.i72, 1 + br i1 %108, label %.lr.ph.split.i71, label %._crit_edge.i75.thread, !llvm.loop !61 ._crit_edge.i75: ; preds = %.lr.ph.split.us.i91 %switch = icmp samesign ult i32 %27, 9 - br i1 %switch, label %_ZL9unpackintP9lua_StatePKciii.exit95, label %.lr.ph48.split.us.preheader.i86 + br i1 %switch, label %_ZL9unpackintP9lua_StatePKciii.exit95, label %.lr.ph46.split.us.preheader.i86 ._crit_edge.i75.thread: ; preds = %.lr.ph.split.i71 %switch216 = icmp samesign ult i32 %27, 9 - br i1 %switch216, label %_ZL9unpackintP9lua_StatePKciii.exit95, label %.lr.ph48.split.preheader.i80 - -.lr.ph48.split.preheader.i80: ; preds = %._crit_edge.i75.thread - %106 = zext nneg i32 %86 to i64 - br label %.lr.ph48.split.i81 - -.lr.ph48.split.us.preheader.i86: ; preds = %._crit_edge.i75 - %107 = zext nneg i32 %27 to i64 - br label %.lr.ph48.split.us.i87 - -.lr.ph48.split.us.i87: ; preds = %114, %.lr.ph48.split.us.preheader.i86 - %indvars.iv60.i88 = phi i64 [ 8, %.lr.ph48.split.us.preheader.i86 ], [ %indvars.iv.next61.i90, %114 ] - %108 = trunc nsw i64 %indvars.iv60.i88 to i32 - %109 = xor i32 %108, -1 - %110 = add nsw i32 %27, %109 - %111 = sext i32 %110 to i64 - %112 = getelementptr inbounds i8, ptr %85, i64 %111 - %113 = load i8, ptr %112, align 1, !tbaa !8 - %.not39.us.i89 = icmp eq i8 %113, 0 - br i1 %.not39.us.i89, label %114, label %.split.us.i84 - -114: ; preds = %.lr.ph48.split.us.i87 - %indvars.iv.next61.i90 = add nuw nsw i64 %indvars.iv60.i88, 1 - %exitcond212.not = icmp eq i64 %indvars.iv.next61.i90, %107 - br i1 %exitcond212.not, label %_ZL9unpackintP9lua_StatePKciii.exit95, label %.lr.ph48.split.us.i87, !llvm.loop !62 - -115: ; preds = %.lr.ph48.split.i81 - %indvars.iv.next57.i85 = add nuw nsw i64 %indvars.iv56.i82, 1 - %116 = trunc nuw i64 %indvars.iv.next57.i85 to i32 - %117 = icmp sgt i32 %27, %116 - br i1 %117, label %.lr.ph48.split.i81, label %_ZL9unpackintP9lua_StatePKciii.exit95, !llvm.loop !62 - -.lr.ph48.split.i81: ; preds = %115, %.lr.ph48.split.preheader.i80 - %indvars.iv56.i82 = phi i64 [ %106, %.lr.ph48.split.preheader.i80 ], [ %indvars.iv.next57.i85, %115 ] - %118 = getelementptr inbounds nuw i8, ptr %85, i64 %indvars.iv56.i82 - %119 = load i8, ptr %118, align 1, !tbaa !8 - %.not39.i83 = icmp eq i8 %119, 0 - br i1 %.not39.i83, label %115, label %.split.us.i84 - -.split.us.i84: ; preds = %.lr.ph48.split.i81, %.lr.ph48.split.us.i87 + br i1 %switch216, label %_ZL9unpackintP9lua_StatePKciii.exit95, label %.lr.ph46.split.preheader.i80 + +.lr.ph46.split.preheader.i80: ; preds = %._crit_edge.i75.thread + %109 = zext nneg i32 %89 to i64 + br label %.lr.ph46.split.i81 + +.lr.ph46.split.us.preheader.i86: ; preds = %._crit_edge.i75 + %110 = zext nneg i32 %27 to i64 + br label %.lr.ph46.split.us.i87 + +.lr.ph46.split.us.i87: ; preds = %117, %.lr.ph46.split.us.preheader.i86 + %indvars.iv58.i88 = phi i64 [ 8, %.lr.ph48.split.us.preheader.i86 ], [ %indvars.iv.next59.i90, %114 ] + %111 = trunc nsw i64 %indvars.iv58.i88 to i32 + %112 = xor i32 %111, -1 + %113 = add nsw i32 %27, %112 + %114 = sext i32 %113 to i64 + %115 = getelementptr inbounds i8, ptr %88, i64 %114 + %116 = load i8, ptr %115, align 1, !tbaa !8 + %.not39.us.i89 = icmp eq i8 %116, 0 + br i1 %.not39.us.i89, label %117, label %.split.us.i84 + +117: ; preds = %.lr.ph46.split.us.i87 + %indvars.iv.next59.i90 = add nuw nsw i64 %indvars.iv58.i88, 1 + %exitcond212.not = icmp eq i64 %indvars.iv.next59.i90, %110 + br i1 %exitcond212.not, label %_ZL9unpackintP9lua_StatePKciii.exit95, label %.lr.ph46.split.us.i87, !llvm.loop !62 + +118: ; preds = %.lr.ph46.split.i81 + %indvars.iv.next55.i85 = add nuw nsw i64 %indvars.iv54.i82, 1 + %119 = trunc nuw i64 %indvars.iv.next55.i85 to i32 + %120 = icmp sgt i32 %27, %119 + br i1 %120, label %.lr.ph46.split.i81, label %_ZL9unpackintP9lua_StatePKciii.exit95, !llvm.loop !62 + +.lr.ph46.split.i81: ; preds = %118, %.lr.ph46.split.preheader.i80 + %indvars.iv54.i82 = phi i64 [ %109, %.lr.ph48.split.preheader.i80 ], [ %indvars.iv.next55.i85, %115 ] + %121 = getelementptr inbounds nuw i8, ptr %88, i64 %indvars.iv54.i82 + %122 = load i8, ptr %121, align 1, !tbaa !8 + %.not39.i83 = icmp eq i8 %122, 0 + br i1 %.not39.i83, label %118, label %.split.us.i84 + +.split.us.i84: ; preds = %.lr.ph46.split.i81, %.lr.ph46.split.us.i87 call void (ptr, ptr, ...) @_Z11luaL_errorLP9lua_StatePKcz(ptr noundef %0, ptr noundef nonnull @.str.63, i32 noundef %27) #15 unreachable -_ZL9unpackintP9lua_StatePKciii.exit95: ; preds = %115, %114, %._crit_edge.i75.thread, %._crit_edge.i75, %83 - %.1.i68 = phi i64 [ 0, %83 ], [ %98, %._crit_edge.i75 ], [ %104, %._crit_edge.i75.thread ], [ %98, %114 ], [ %104, %115 ] - %120 = uitofp i64 %.1.i68 to double - call void @_Z14lua_pushnumberP9lua_Stated(ptr noundef %0, double noundef %120) - br label %201 +_ZL9unpackintP9lua_StatePKciii.exit95: ; preds = %118, %117, %._crit_edge.i75.thread, %._crit_edge.i75, %86 + %.1.i68 = phi i64 [ 0, %83 ], [ %101, %._crit_edge.i75 ], [ %107, %._crit_edge.i75.thread ], [ %101, %114 ], [ %107, %115 ] + %123 = uitofp i64 %.1.i68 to double + call void @_Z14lua_pushnumberP9lua_Stated(ptr noundef %0, double noundef %123) + br label %204 -121: ; preds = %33 +124: ; preds = %33 call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %7) #14 - %122 = sext i32 %34 to i64 - %123 = getelementptr inbounds i8, ptr %9, i64 %122 - %124 = load i32, ptr %20, align 8, !tbaa !52 - %125 = icmp eq i32 %124, 1 + %125 = sext i32 %34 to i64 + %126 = getelementptr inbounds i8, ptr %9, i64 %125 + %127 = load i32, ptr %20, align 8, !tbaa !52 + %128 = icmp eq i32 %127, 1 %.not1218.i = icmp eq i32 %27, 0 - br i1 %125, label %.preheader.i, label %130 + br i1 %128, label %.preheader.i, label %133 -.preheader.i: ; preds = %121 +.preheader.i: ; preds = %124 br i1 %.not1218.i, label %_ZL14copywithendianPVcPVKcii.exit.thread, label %.lr.ph22.i .lr.ph22.i: ; preds = %.preheader.i, %.lr.ph22.i - %.021.i = phi ptr [ %129, %.lr.ph22.i ], [ %7, %.preheader.i ] - %.0820.i = phi i32 [ %126, %.lr.ph22.i ], [ %27, %.preheader.i ] - %.01019.i = phi ptr [ %127, %.lr.ph22.i ], [ %123, %.preheader.i ] - %126 = add nsw i32 %.0820.i, -1 - %127 = getelementptr inbounds nuw i8, ptr %.01019.i, i64 1 - %128 = load volatile i8, ptr %.01019.i, align 1, !tbaa !8 - %129 = getelementptr inbounds nuw i8, ptr %.021.i, i64 1 - store volatile i8 %128, ptr %.021.i, align 1, !tbaa !8 - %.not12.i = icmp eq i32 %126, 0 + %.021.i = phi ptr [ %132, %.lr.ph22.i ], [ %7, %.preheader.i ] + %.0820.i = phi i32 [ %129, %.lr.ph22.i ], [ %27, %.preheader.i ] + %.01019.i = phi ptr [ %130, %.lr.ph22.i ], [ %126, %.preheader.i ] + %129 = add nsw i32 %.0820.i, -1 + %130 = getelementptr inbounds nuw i8, ptr %.01019.i, i64 1 + %131 = load volatile i8, ptr %.01019.i, align 1, !tbaa !8 + %132 = getelementptr inbounds nuw i8, ptr %.021.i, i64 1 + store volatile i8 %131, ptr %.021.i, align 1, !tbaa !8 + %.not12.i = icmp eq i32 %129, 0 br i1 %.not12.i, label %_ZL14copywithendianPVcPVKcii.exit, label %.lr.ph22.i, !llvm.loop !56 -130: ; preds = %121 +133: ; preds = %124 br i1 %.not1218.i, label %_ZL14copywithendianPVcPVKcii.exit.thread, label %.lr.ph.preheader.i -.lr.ph.preheader.i: ; preds = %130 - %131 = getelementptr i8, ptr %7, i64 %28 +.lr.ph.preheader.i: ; preds = %133 + %134 = getelementptr i8, ptr %7, i64 %28 br label %.lr.ph.i96 .lr.ph.i96: ; preds = %.lr.ph.i96, %.lr.ph.preheader.i - %.pn17.i = phi ptr [ %.1.i97, %.lr.ph.i96 ], [ %131, %.lr.ph.preheader.i ] - %.1916.i = phi i32 [ %132, %.lr.ph.i96 ], [ %27, %.lr.ph.preheader.i ] - %.11115.i = phi ptr [ %133, %.lr.ph.i96 ], [ %123, %.lr.ph.preheader.i ] + %.pn17.i = phi ptr [ %.1.i97, %.lr.ph.i96 ], [ %134, %.lr.ph.preheader.i ] + %.1916.i = phi i32 [ %135, %.lr.ph.i96 ], [ %27, %.lr.ph.preheader.i ] + %.11115.i = phi ptr [ %136, %.lr.ph.i96 ], [ %126, %.lr.ph.preheader.i ] %.1.i97 = getelementptr i8, ptr %.pn17.i, i64 -1 - %132 = add nsw i32 %.1916.i, -1 - %133 = getelementptr inbounds nuw i8, ptr %.11115.i, i64 1 - %134 = load volatile i8, ptr %.11115.i, align 1, !tbaa !8 - store volatile i8 %134, ptr %.1.i97, align 1, !tbaa !8 - %.not.i98 = icmp eq i32 %132, 0 + %135 = add nsw i32 %.1916.i, -1 + %136 = getelementptr inbounds nuw i8, ptr %.11115.i, i64 1 + %137 = load volatile i8, ptr %.11115.i, align 1, !tbaa !8 + store volatile i8 %137, ptr %.1.i97, align 1, !tbaa !8 + %.not.i98 = icmp eq i32 %135, 0 br i1 %.not.i98, label %_ZL14copywithendianPVcPVKcii.exit, label %.lr.ph.i96, !llvm.loop !57 _ZL14copywithendianPVcPVKcii.exit: ; preds = %.lr.ph.i96, %.lr.ph22.i switch i32 %27, label %_ZL14copywithendianPVcPVKcii.exit.thread [ - i32 4, label %135 - i32 8, label %138 + i32 4, label %138 + i32 8, label %141 ] -135: ; preds = %_ZL14copywithendianPVcPVKcii.exit - %136 = load volatile float, ptr %7, align 8, !tbaa !8 - %137 = fpext float %136 to double - br label %141 - 138: ; preds = %_ZL14copywithendianPVcPVKcii.exit - %139 = load volatile double, ptr %7, align 8, !tbaa !8 - br label %141 + %139 = load volatile float, ptr %7, align 8, !tbaa !8 + %140 = fpext float %139 to double + br label %144 -_ZL14copywithendianPVcPVKcii.exit.thread: ; preds = %130, %.preheader.i, %_ZL14copywithendianPVcPVKcii.exit - %140 = load volatile double, ptr %7, align 8, !tbaa !8 - br label %141 +141: ; preds = %_ZL14copywithendianPVcPVKcii.exit + %142 = load volatile double, ptr %7, align 8, !tbaa !8 + br label %144 + +_ZL14copywithendianPVcPVKcii.exit.thread: ; preds = %133, %.preheader.i, %_ZL14copywithendianPVcPVKcii.exit + %143 = load volatile double, ptr %7, align 8, !tbaa !8 + br label %144 -141: ; preds = %138, %_ZL14copywithendianPVcPVKcii.exit.thread, %135 - %.060 = phi double [ %137, %135 ], [ %139, %138 ], [ %140, %_ZL14copywithendianPVcPVKcii.exit.thread ] +144: ; preds = %141, %_ZL14copywithendianPVcPVKcii.exit.thread, %138 + %.060 = phi double [ %140, %135 ], [ %142, %138 ], [ %143, %_ZL14copywithendianPVcPVKcii.exit.thread ] call void @_Z14lua_pushnumberP9lua_Stated(ptr noundef %0, double noundef %.060) call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %7) #14 - br label %201 + br label %204 142: ; preds = %33 %143 = sext i32 %34 to i64 @@ -2334,7 +2334,7 @@ _ZL14copywithendianPVcPVKcii.exit.thread: ; preds = %130, %.preheader.i, %149 = icmp sgt i32 %27, 0 br i1 %149, label %.lr.ph.i102, label %_ZL9unpackintP9lua_StatePKciii.exit128.thread -.lr.ph.i102: ; preds = %145 +.lr.ph.i102:; preds = %145 %150 = load i32, ptr %20, align 8, !tbaa !52 %.not43.i103 = icmp eq i32 %150, 0 %151 = call i32 @llvm.umin.i32(i32 %27, i32 8) @@ -2342,143 +2342,143 @@ _ZL14copywithendianPVcPVKcii.exit.thread: ; preds = %130, %.preheader.i, br i1 %.not43.i103, label %.lr.ph.split.us.i124, label %.lr.ph.split.i104 .lr.ph.split.us.i124: ; preds = %.lr.ph.i102, %.lr.ph.split.us.i124 - %indvars.iv54.i125 = phi i64 [ %indvars.iv.next55.i127, %.lr.ph.split.us.i124 ], [ %152, %.lr.ph.i102 ] - %.045.us.i126 = phi i64 [ %160, %.lr.ph.split.us.i124 ], [ 0, %.lr.ph.i102 ] - %indvars.iv.next55.i127 = add nsw i64 %indvars.iv54.i125, -1 - %153 = shl i64 %.045.us.i126, 8 - %154 = trunc nsw i64 %indvars.iv54.i125 to i32 - %155 = sub i32 %27, %154 - %156 = sext i32 %155 to i64 - %157 = getelementptr inbounds i8, ptr %147, i64 %156 - %158 = load i8, ptr %157, align 1, !tbaa !8 - %159 = zext i8 %158 to i64 - %160 = or disjoint i64 %153, %159 - %161 = icmp samesign ugt i64 %indvars.iv54.i125, 1 - br i1 %161, label %.lr.ph.split.us.i124, label %._crit_edge.i108, !llvm.loop !61 + %indvars.iv52.i125 = phi i64 [ %indvars.iv.next53.i127, %.lr.ph.split.us.i124 ], [ %152, %.lr.ph.i102 ] + %.043.us.i126 = phi i64 [ %163, %.lr.ph.split.us.i124 ], [ 0, %.lr.ph.i102 ] + %indvars.iv.next53.i127 = add nsw i64 %indvars.iv52.i125, -1 + %156 = shl i64 %.043.us.i126, 8 + %157 = trunc nsw i64 %indvars.iv52.i125 to i32 + %158 = sub i32 %27, %157 + %159 = sext i32 %158 to i64 + %160 = getelementptr inbounds i8, ptr %147, i64 %159 + %161 = load i8, ptr %160, align 1, !tbaa !8 + %162 = zext i8 %161 to i64 + %163 = or disjoint i64 %156, %162 + %164 = icmp samesign ugt i64 %indvars.iv52.i125, 1 + br i1 %164, label %.lr.ph.split.us.i124, label %._crit_edge.i108, !llvm.loop !61 .lr.ph.split.i104: ; preds = %.lr.ph.i102, %.lr.ph.split.i104 %indvars.iv.i105 = phi i64 [ %indvars.iv.next.i107, %.lr.ph.split.i104 ], [ %152, %.lr.ph.i102 ] - %.045.i106 = phi i64 [ %166, %.lr.ph.split.i104 ], [ 0, %.lr.ph.i102 ] + %.043.i106 = phi i64 [ %169, %.lr.ph.split.i104 ], [ 0, %.lr.ph.i102 ] %indvars.iv.next.i107 = add nsw i64 %indvars.iv.i105, -1 - %162 = shl i64 %.045.i106, 8 - %163 = getelementptr inbounds i8, ptr %147, i64 %indvars.iv.next.i107 - %164 = load i8, ptr %163, align 1, !tbaa !8 - %165 = zext i8 %164 to i64 - %166 = or disjoint i64 %162, %165 - %167 = icmp samesign ugt i64 %indvars.iv.i105, 1 - br i1 %167, label %.lr.ph.split.i104, label %._crit_edge.i108.thread, !llvm.loop !61 + %165 = shl i64 %.043.i106, 8 + %166 = getelementptr inbounds i8, ptr %147, i64 %indvars.iv.next.i107 + %167 = load i8, ptr %166, align 1, !tbaa !8 + %168 = zext i8 %167 to i64 + %169 = or disjoint i64 %165, %168 + %170 = icmp samesign ugt i64 %indvars.iv.i105, 1 + br i1 %170, label %.lr.ph.split.i104, label %._crit_edge.i108.thread, !llvm.loop !61 ._crit_edge.i108: ; preds = %.lr.ph.split.us.i124 %switch133 = icmp samesign ult i32 %27, 9 - br i1 %switch133, label %_ZL9unpackintP9lua_StatePKciii.exit128, label %.lr.ph48.split.us.preheader.i119 + br i1 %switch133, label %_ZL9unpackintP9lua_StatePKciii.exit128, label %.lr.ph46.split.us.preheader.i119 ._crit_edge.i108.thread: ; preds = %.lr.ph.split.i104 %switch133221 = icmp samesign ult i32 %27, 9 - br i1 %switch133221, label %_ZL9unpackintP9lua_StatePKciii.exit128, label %.lr.ph48.split.preheader.i113 - -.lr.ph48.split.preheader.i113: ; preds = %._crit_edge.i108.thread - %168 = zext nneg i32 %148 to i64 - br label %.lr.ph48.split.i114 - -.lr.ph48.split.us.preheader.i119: ; preds = %._crit_edge.i108 - %169 = zext nneg i32 %27 to i64 - br label %.lr.ph48.split.us.i120 - -.lr.ph48.split.us.i120: ; preds = %176, %.lr.ph48.split.us.preheader.i119 - %indvars.iv60.i121 = phi i64 [ 8, %.lr.ph48.split.us.preheader.i119 ], [ %indvars.iv.next61.i123, %176 ] - %170 = trunc nsw i64 %indvars.iv60.i121 to i32 - %171 = xor i32 %170, -1 - %172 = add nsw i32 %27, %171 - %173 = sext i32 %172 to i64 - %174 = getelementptr inbounds i8, ptr %147, i64 %173 - %175 = load i8, ptr %174, align 1, !tbaa !8 - %.not39.us.i122 = icmp eq i8 %175, 0 - br i1 %.not39.us.i122, label %176, label %.split.us.i117 - -176: ; preds = %.lr.ph48.split.us.i120 - %indvars.iv.next61.i123 = add nuw nsw i64 %indvars.iv60.i121, 1 - %exitcond.not = icmp eq i64 %indvars.iv.next61.i123, %169 - br i1 %exitcond.not, label %_ZL9unpackintP9lua_StatePKciii.exit128, label %.lr.ph48.split.us.i120, !llvm.loop !62 - -177: ; preds = %.lr.ph48.split.i114 - %indvars.iv.next57.i118 = add nuw nsw i64 %indvars.iv56.i115, 1 - %178 = trunc nuw i64 %indvars.iv.next57.i118 to i32 - %179 = icmp sgt i32 %27, %178 - br i1 %179, label %.lr.ph48.split.i114, label %_ZL9unpackintP9lua_StatePKciii.exit128, !llvm.loop !62 - -.lr.ph48.split.i114: ; preds = %177, %.lr.ph48.split.preheader.i113 - %indvars.iv56.i115 = phi i64 [ %168, %.lr.ph48.split.preheader.i113 ], [ %indvars.iv.next57.i118, %177 ] - %180 = getelementptr inbounds nuw i8, ptr %147, i64 %indvars.iv56.i115 - %181 = load i8, ptr %180, align 1, !tbaa !8 - %.not39.i116 = icmp eq i8 %181, 0 - br i1 %.not39.i116, label %177, label %.split.us.i117 - -.split.us.i117: ; preds = %.lr.ph48.split.i114, %.lr.ph48.split.us.i120 + br i1 %switch133221, label %_ZL9unpackintP9lua_StatePKciii.exit128, label %.lr.ph46.split.preheader.i113 + +.lr.ph46.split.preheader.i113: ; preds = %._crit_edge.i108.thread + %171 = zext nneg i32 %148 to i64 + br label %.lr.ph46.split.i114 + +.lr.ph46.split.us.preheader.i119: ; preds = %._crit_edge.i108 + %172 = zext nneg i32 %27 to i64 + br label %.lr.ph46.split.us.i120 + +.lr.ph46.split.us.i120: ; preds = %179, %.lr.ph46.split.us.preheader.i119 + %indvars.iv58.i121 = phi i64 [ 8, %.lr.ph48.split.us.preheader.i119 ], [ %indvars.iv.next59.i123, %176 ] + %173 = trunc nsw i64 %indvars.iv58.i121 to i32 + %174 = xor i32 %173, -1 + %175 = add nsw i32 %27, %174 + %176 = sext i32 %175 to i64 + %177 = getelementptr inbounds i8, ptr %147, i64 %176 + %178 = load i8, ptr %177, align 1, !tbaa !8 + %.not39.us.i122 = icmp eq i8 %178, 0 + br i1 %.not39.us.i122, label %179, label %.split.us.i117 + +179: ; preds = %.lr.ph46.split.us.i120 + %indvars.iv.next59.i123 = add nuw nsw i64 %indvars.iv58.i121, 1 + %exitcond.not = icmp eq i64 %indvars.iv.next59.i123, %172 + br i1 %exitcond.not, label %_ZL9unpackintP9lua_StatePKciii.exit128, label %.lr.ph46.split.us.i120, !llvm.loop !62 + +180: ; preds = %.lr.ph46.split.i114 + %indvars.iv.next55.i118 = add nuw nsw i64 %indvars.iv54.i115, 1 + %181 = trunc nuw i64 %indvars.iv.next55.i118 to i32 + %182 = icmp sgt i32 %27, %181 + br i1 %182, label %.lr.ph46.split.i114, label %_ZL9unpackintP9lua_StatePKciii.exit128, !llvm.loop !62 + +.lr.ph46.split.i114: ; preds = %180, %.lr.ph46.split.preheader.i113 + %indvars.iv54.i115 = phi i64 [ %171, %.lr.ph48.split.preheader.i113 ], [ %indvars.iv.next55.i118, %177 ] + %183 = getelementptr inbounds nuw i8, ptr %147, i64 %indvars.iv54.i115 + %184 = load i8, ptr %183, align 1, !tbaa !8 + %.not39.i116 = icmp eq i8 %184, 0 + br i1 %.not39.i116, label %180, label %.split.us.i117 + +.split.us.i117: ; preds = %.lr.ph46.split.i114, %.lr.ph46.split.us.i120 call void (ptr, ptr, ...) @_Z11luaL_errorLP9lua_StatePKcz(ptr noundef %0, ptr noundef nonnull @.str.63, i32 noundef %27) #15 unreachable -_ZL9unpackintP9lua_StatePKciii.exit128: ; preds = %177, %176, %._crit_edge.i108.thread, %._crit_edge.i108 - %.0.lcssa.i109223 = phi i64 [ %166, %._crit_edge.i108.thread ], [ %160, %._crit_edge.i108 ], [ %160, %176 ], [ %166, %177 ] - %182 = load i64, ptr %4, align 8, !tbaa !4 - %183 = add nsw i64 %146, %28 - %184 = sub i64 %182, %183 - %.not65 = icmp ugt i64 %.0.lcssa.i109223, %184 - br i1 %.not65, label %185, label %_ZL9unpackintP9lua_StatePKciii.exit128.thread +_ZL9unpackintP9lua_StatePKciii.exit128: ; preds = %180, %179, %._crit_edge.i108.thread, %._crit_edge.i108 + %.0.lcssa.i109223 = phi i64 [ %169, %._crit_edge.i108.thread ], [ %163, %._crit_edge.i108 ], [ %163, %176 ], [ %169, %177 ] + %185 = load i64, ptr %4, align 8, !tbaa !4 + %186 = add nsw i64 %146, %28 + %187 = sub i64 %185, %186 + %.not65 = icmp ugt i64 %.0.lcssa.i109223, %187 + br i1 %.not65, label %188, label %_ZL9unpackintP9lua_StatePKciii.exit128.thread -185: ; preds = %_ZL9unpackintP9lua_StatePKciii.exit128 +188: ; preds = %_ZL9unpackintP9lua_StatePKciii.exit128 call void @_Z14luaL_argerrorLP9lua_StateiPKc(ptr noundef %0, i32 noundef 2, ptr noundef nonnull @.str.60) #15 unreachable _ZL9unpackintP9lua_StatePKciii.exit128.thread: ; preds = %145, %_ZL9unpackintP9lua_StatePKciii.exit128 %.1.i101131 = phi i64 [ %.0.lcssa.i109223, %_ZL9unpackintP9lua_StatePKciii.exit128 ], [ 0, %145 ] - %186 = getelementptr inbounds i8, ptr %147, i64 %28 - call void @_Z15lua_pushlstringP9lua_StatePKcm(ptr noundef %0, ptr noundef %186, i64 noundef %.1.i101131) - %187 = trunc i64 %.1.i101131 to i32 - %188 = add nsw i32 %34, %187 - br label %201 - -189: ; preds = %33 - %190 = sext i32 %34 to i64 - %191 = getelementptr inbounds i8, ptr %9, i64 %190 - %192 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %191) #16 - %193 = add i64 %192, %190 - %194 = load i64, ptr %4, align 8, !tbaa !4 - %195 = icmp ult i64 %193, %194 - br i1 %195, label %197, label %196 - -196: ; preds = %189 + %189 = getelementptr inbounds i8, ptr %147, i64 %28 + call void @_Z15lua_pushlstringP9lua_StatePKcm(ptr noundef %0, ptr noundef %189, i64 noundef %.1.i101131) + %190 = trunc i64 %.1.i101131 to i32 + %191 = add nsw i32 %34, %190 + br label %204 + +192: ; preds = %33 + %193 = sext i32 %34 to i64 + %194 = getelementptr inbounds i8, ptr %9, i64 %193 + %195 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %194) #16 + %196 = add i64 %195, %193 + %197 = load i64, ptr %4, align 8, !tbaa !4 + %198 = icmp ult i64 %196, %197 + br i1 %198, label %200, label %199 + +199: ; preds = %192 call void @_Z14luaL_argerrorLP9lua_StateiPKc(ptr noundef %0, i32 noundef 2, ptr noundef nonnull @.str.62) #15 unreachable -197: ; preds = %189 - call void @_Z15lua_pushlstringP9lua_StatePKcm(ptr noundef %0, ptr noundef nonnull %191, i64 noundef %192) - %198 = trunc i64 %192 to i32 - %199 = add i32 %34, 1 - %200 = add i32 %199, %198 - br label %201 +200: ; preds = %192 + call void @_Z15lua_pushlstringP9lua_StatePKcm(ptr noundef %0, ptr noundef nonnull %194, i64 noundef %195) + %201 = trunc i64 %195 to i32 + %202 = add i32 %34, 1 + %203 = add i32 %202, %201 + br label %204 default.unreachable214: ; preds = %33 unreachable -201: ; preds = %33, %33, %33, %197, %_ZL9unpackintP9lua_StatePKciii.exit128.thread, %142, %141, %_ZL9unpackintP9lua_StatePKciii.exit95, %_ZL9unpackintP9lua_StatePKciii.exit +204: ; preds = %33, %33, %33, %200, %_ZL9unpackintP9lua_StatePKciii.exit128.thread, %142, %144, %_ZL9unpackintP9lua_StatePKciii.exit95, %_ZL9unpackintP9lua_StatePKciii.exit %.159 = phi i32 [ %35, %_ZL9unpackintP9lua_StatePKciii.exit ], [ %35, %_ZL9unpackintP9lua_StatePKciii.exit95 ], [ %35, %141 ], [ %35, %142 ], [ %35, %_ZL9unpackintP9lua_StatePKciii.exit128.thread ], [ %35, %197 ], [ %.058182, %33 ], [ %.058182, %33 ], [ %.058182, %33 ] - %.1 = phi i32 [ %34, %_ZL9unpackintP9lua_StatePKciii.exit ], [ %34, %_ZL9unpackintP9lua_StatePKciii.exit95 ], [ %34, %141 ], [ %34, %142 ], [ %188, %_ZL9unpackintP9lua_StatePKciii.exit128.thread ], [ %200, %197 ], [ %34, %33 ], [ %34, %33 ], [ %34, %33 ] - %202 = add nsw i32 %.1, %27 + %.1 = phi i32 [ %34, %_ZL9unpackintP9lua_StatePKciii.exit ], [ %34, %_ZL9unpackintP9lua_StatePKciii.exit95 ], [ %34, %141 ], [ %34, %142 ], [ %191, %_ZL9unpackintP9lua_StatePKciii.exit128.thread ], [ %203, %197 ], [ %34, %33 ], [ %34, %33 ], [ %34, %33 ] + %205 = add nsw i32 %.1, %27 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #14 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #14 - %203 = load ptr, ptr %3, align 8, !tbaa !49 - %204 = load i8, ptr %203, align 1, !tbaa !8 - %.not63 = icmp eq i8 %204, 0 + %206 = load ptr, ptr %3, align 8, !tbaa !49 + %207 = load i8, ptr %206, align 1, !tbaa !8 + %.not63 = icmp eq i8 %207, 0 br i1 %.not63, label %._crit_edge.loopexit, label %.lr.ph, !llvm.loop !63 -._crit_edge.loopexit: ; preds = %201 - %205 = add nsw i32 %202, 1 - %206 = add nsw i32 %.159, 1 +._crit_edge.loopexit: ; preds = %204 + %208 = add nsw i32 %205, 1 + %209 = add nsw i32 %.159, 1 br label %._crit_edge ._crit_edge: ; preds = %._crit_edge.loopexit, %19 - %.058.lcssa = phi i32 [ 1, %19 ], [ %206, %._crit_edge.loopexit ] - %.0.lcssa = phi i32 [ %16, %19 ], [ %205, %._crit_edge.loopexit ] + %.058.lcssa = phi i32 [ 1, %19 ], [ %209, %._crit_edge.loopexit ] + %.0.lcssa = phi i32 [ %16, %19 ], [ %208, %._crit_edge.loopexit ] call void @_Z15lua_pushintegerP9lua_Statei(ptr noundef %0, i32 noundef %.0.lcssa) call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #14 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #14 diff --git a/bench/node/optimized/libnode.node_sockaddr.ll b/bench/node/optimized/libnode.node_sockaddr.ll index eca598c9be0..8f3df0bccc1 100644 --- a/bench/node/optimized/libnode.node_sockaddr.ll +++ b/bench/node/optimized/libnode.node_sockaddr.ll @@ -593,8 +593,8 @@ do.body.i: ; preds = %entry %0 = load i32, ptr %len.i, align 4, !noalias !5 %1 = load i16, ptr %address_.i.i, align 8, !alias.scope !5 %cmp.i.i.i.i = icmp eq i16 %1, 2 - %cond.i.i.i3.i = select i1 %cmp.i.i.i.i, i32 16, i32 28 - %cmp3.not.i = icmp eq i32 %cond.i.i.i3.i, %0 + %cond.i.i.i.i = select i1 %cmp.i.i.i.i, i32 16, i32 28 + %cmp3.not.i = icmp eq i32 %cond.i.i.i.i, %0 br i1 %cmp3.not.i, label %_ZN4node12_GLOBAL__N_112FromUVHandleI8uv_tcp_sPFiPKS2_P8sockaddrPiEEENS_13SocketAddressET0_RKT_.exit, label %do.body8.i do.body8.i: ; preds = %do.body.i @@ -630,8 +630,8 @@ do.body.i: ; preds = %entry %0 = load i32, ptr %len.i, align 4, !noalias !9 %1 = load i16, ptr %address_.i.i, align 8, !alias.scope !9 %cmp.i.i.i.i = icmp eq i16 %1, 2 - %cond.i.i.i3.i = select i1 %cmp.i.i.i.i, i32 16, i32 28 - %cmp3.not.i = icmp eq i32 %cond.i.i.i3.i, %0 + %cond.i.i.i.i = select i1 %cmp.i.i.i.i, i32 16, i32 28 + %cmp3.not.i = icmp eq i32 %cond.i.i.i.i, %0 br i1 %cmp3.not.i, label %_ZN4node12_GLOBAL__N_112FromUVHandleI8uv_udp_sPFiPKS2_P8sockaddrPiEEENS_13SocketAddressET0_RKT_.exit, label %do.body8.i do.body8.i: ; preds = %do.body.i @@ -667,8 +667,8 @@ do.body.i: ; preds = %entry %0 = load i32, ptr %len.i, align 4, !noalias !13 %1 = load i16, ptr %address_.i.i, align 8, !alias.scope !13 %cmp.i.i.i.i = icmp eq i16 %1, 2 - %cond.i.i.i3.i = select i1 %cmp.i.i.i.i, i32 16, i32 28 - %cmp3.not.i = icmp eq i32 %cond.i.i.i3.i, %0 + %cond.i.i.i.i = select i1 %cmp.i.i.i.i, i32 16, i32 28 + %cmp3.not.i = icmp eq i32 %cond.i.i.i.i, %0 br i1 %cmp3.not.i, label %_ZN4node12_GLOBAL__N_112FromUVHandleI8uv_tcp_sPFiPKS2_P8sockaddrPiEEENS_13SocketAddressET0_RKT_.exit, label %do.body8.i do.body8.i: ; preds = %do.body.i @@ -704,8 +704,8 @@ do.body.i: ; preds = %entry %0 = load i32, ptr %len.i, align 4, !noalias !16 %1 = load i16, ptr %address_.i.i, align 8, !alias.scope !16 %cmp.i.i.i.i = icmp eq i16 %1, 2 - %cond.i.i.i3.i = select i1 %cmp.i.i.i.i, i32 16, i32 28 - %cmp3.not.i = icmp eq i32 %cond.i.i.i3.i, %0 + %cond.i.i.i.i = select i1 %cmp.i.i.i.i, i32 16, i32 28 + %cmp3.not.i = icmp eq i32 %cond.i.i.i.i, %0 br i1 %cmp3.not.i, label %_ZN4node12_GLOBAL__N_112FromUVHandleI8uv_udp_sPFiPKS2_P8sockaddrPiEEENS_13SocketAddressET0_RKT_.exit, label %do.body8.i do.body8.i: ; preds = %do.body.i diff --git a/bench/openjdk/optimized/intrinsicnode.ll b/bench/openjdk/optimized/intrinsicnode.ll index 544869115e3..19f756635eb 100644 --- a/bench/openjdk/optimized/intrinsicnode.ll +++ b/bench/openjdk/optimized/intrinsicnode.ll @@ -1866,30 +1866,30 @@ define hidden noundef ptr @_ZNK16CompressBitsNode5ValueEP8PhaseGVN(ptr noundef n %45 = icmp eq i64 %40, %44 br i1 %45, label %46, label %74 -46: ; preds = %26 - %47 = load ptr, ptr %22, align 8 - %48 = getelementptr inbounds nuw i8, ptr %47, i64 184 - %49 = load ptr, ptr %48, align 8 - %50 = tail call noundef i64 %49(ptr noundef nonnull align 8 dereferenceable(22) %22) #5 - %51 = load ptr, ptr %22, align 8 - %52 = getelementptr inbounds nuw i8, ptr %51, i64 176 - %53 = load ptr, ptr %52, align 8 - %54 = tail call noundef i64 %53(ptr noundef nonnull align 8 dereferenceable(22) %22) #5 - %55 = icmp eq i64 %50, %54 - br i1 %55, label %56, label %74 - -56: ; preds = %46 - %57 = tail call noundef i64 @_ZNK11TypeInteger15get_con_as_longE9BasicType(ptr noundef nonnull align 8 dereferenceable(22) %15, i8 noundef zeroext %35) #5 - %58 = tail call noundef i64 @_ZNK11TypeInteger15get_con_as_longE9BasicType(ptr noundef nonnull align 8 dereferenceable(22) %22, i8 noundef zeroext %35) #5 +47: ; preds = %26 + %48 = load ptr, ptr %22, align 8 + %49 = getelementptr inbounds nuw i8, ptr %48, i64 184 + %50 = load ptr, ptr %49, align 8 + %51 = tail call noundef i64 %49(ptr noundef nonnull align 8 dereferenceable(22) %22) #5 + %52 = load ptr, ptr %22, align 8 + %53 = getelementptr inbounds nuw i8, ptr %52, i64 176 + %54 = load ptr, ptr %53, align 8 + %55 = tail call noundef i64 %53(ptr noundef nonnull align 8 dereferenceable(22) %22) #5 + %56 = icmp eq i64 %51, %55 + br i1 %56, label %57, label %74 + +57: ; preds = %47 + %58 = tail call noundef i64 @_ZNK11TypeInteger15get_con_as_longE9BasicType(ptr noundef nonnull align 8 dereferenceable(22) %15, i8 noundef zeroext %35) #5 + %59 = tail call noundef i64 @_ZNK11TypeInteger15get_con_as_longE9BasicType(ptr noundef nonnull align 8 dereferenceable(22) %22, i8 noundef zeroext %35) #5 %59 = select i1 %36, i32 31, i32 63 br label %.lr.ph.i -.lr.ph.i: ; preds = %56, %.lr.ph.i +.lr.ph.i: ; preds = %57, %.lr.ph.i %.019.i = phi i32 [ %.1.i, %.lr.ph.i ], [ 0, %56 ] %.01018.i = phi i32 [ %68, %.lr.ph.i ], [ 0, %56 ] %.01117.i = phi i64 [ %.112.i, %.lr.ph.i ], [ 0, %56 ] - %.01316.i = phi i64 [ %66, %.lr.ph.i ], [ %57, %56 ] - %.01415.i = phi i64 [ %67, %.lr.ph.i ], [ %58, %56 ] + %.01316.i = phi i64 [ %66, %.lr.ph.i ], [ %58, %56 ] + %.01415.i = phi i64 [ %67, %.lr.ph.i ], [ %59, %56 ] %60 = and i64 %.01415.i, 1 %.not.i = icmp eq i64 %60, 0 %61 = and i64 %.01316.i, 1 @@ -1917,7 +1917,7 @@ _ZN16CompressBitsNode13compress_bitsElli.exit: ; preds = %.lr.ph.i %73 = tail call noundef ptr @_ZN8TypeLong4makeEl(i64 noundef %.112.i) #5 br label %76 -74: ; preds = %46, %26 +74: ; preds = %47, %26 %75 = tail call fastcc noundef ptr @_ZL16bitshuffle_valuePK11TypeIntegerS1_i9BasicType(ptr noundef nonnull %15, ptr noundef %22, i32 noundef 65, i8 noundef zeroext %35) br label %76 @@ -2186,7 +2186,7 @@ define hidden noundef ptr @_ZNK14ExpandBitsNode5ValueEP8PhaseGVN(ptr noundef non 56: ; preds = %46 %57 = tail call noundef i64 @_ZNK11TypeInteger15get_con_as_longE9BasicType(ptr noundef nonnull align 8 dereferenceable(22) %15, i8 noundef zeroext %35) #5 %58 = tail call noundef i64 @_ZNK11TypeInteger15get_con_as_longE9BasicType(ptr noundef nonnull align 8 dereferenceable(22) %22, i8 noundef zeroext %35) #5 - %wide.trip.count.i28 = select i1 %36, i64 31, i64 63 + %wide.trip.count.i = select i1 %36, i64 31, i64 63 br label %.lr.ph.i .lr.ph.i: ; preds = %.lr.ph.i, %56 @@ -2203,7 +2203,7 @@ define hidden noundef ptr @_ZNK14ExpandBitsNode5ValueEP8PhaseGVN(ptr noundef non %.1.i = or i64 %62, %.01016.i %63 = ashr i64 %.01314.i, 1 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 - %exitcond.not.i = icmp eq i64 %wide.trip.count.i28, %indvars.iv.i + %exitcond.not.i = icmp eq i64 %wide.trip.count.i, %indvars.iv.i br i1 %exitcond.not.i, label %_ZN14ExpandBitsNode11expand_bitsElli.exit, label %.lr.ph.i, !llvm.loop !8 _ZN14ExpandBitsNode11expand_bitsElli.exit: ; preds = %.lr.ph.i diff --git a/bench/openjdk/optimized/rewriter.ll b/bench/openjdk/optimized/rewriter.ll index cbe43ad82ce..451be0cfd99 100644 --- a/bench/openjdk/optimized/rewriter.ll +++ b/bench/openjdk/optimized/rewriter.ll @@ -2053,32 +2053,32 @@ _Z17is_reference_type9BasicTypeb.exit.thread: ; preds = %15, %15, %15, %25 %63 = getelementptr inbounds nuw i32, ptr %60, i64 %62 %64 = load i32, ptr %63, align 4 store i8 19, ptr %1, align 1 - %65 = trunc i32 %64 to i16 - %66 = tail call noundef i16 @llvm.bswap.i16(i16 %65) - %67 = ptrtoint ptr %58 to i64 - %68 = and i64 %67, 1 - %69 = icmp eq i64 %68, 0 - br i1 %69, label %70, label %71 - -70: ; preds = %61 - store i16 %66, ptr %58, align 2 - br label %_Z17is_reference_type9BasicTypeb.exit + %66 = trunc i32 %64 to i16 + %67 = tail call noundef i16 @llvm.bswap.i16(i16 %66) + %68 = ptrtoint ptr %58 to i64 + %69 = and i64 %68, 1 + %70 = icmp eq i64 %69, 0 + br i1 %70, label %71, label %72 71: ; preds = %61 - store i16 %66, ptr %58, align 1 + store i16 %67, ptr %58, align 2 + br label %_Z17is_reference_type9BasicTypeb.exit + +72: ; preds = %61 + store i16 %67, ptr %58, align 1 br label %_Z17is_reference_type9BasicTypeb.exit -72: ; preds = %56 - %73 = load i8, ptr %58, align 1 - %74 = zext i8 %73 to i64 - %75 = getelementptr inbounds nuw i32, ptr %60, i64 %74 - %76 = load i32, ptr %75, align 4 +73: ; preds = %56 + %74 = load i8, ptr %58, align 1 + %75 = zext i8 %74 to i64 + %76 = getelementptr inbounds nuw i32, ptr %60, i64 %75 + %77 = load i32, ptr %76, align 4 store i8 18, ptr %1, align 1 - %77 = trunc i32 %76 to i8 - store i8 %77, ptr %58, align 1 + %78 = trunc i32 %77 to i8 + store i8 %78, ptr %58, align 1 br label %_Z17is_reference_type9BasicTypeb.exit -_Z17is_reference_type9BasicTypeb.exit: ; preds = %15, %71, %70, %49, %48, %25, %52, %72, %50 +_Z17is_reference_type9BasicTypeb.exit: ; preds = %15, %72, %71, %49, %48, %25, %52, %73, %50 ret void } diff --git a/bench/openspiel/optimized/backgammon.ll b/bench/openspiel/optimized/backgammon.ll index 4802d623ea4..cb1983c9371 100644 --- a/bench/openspiel/optimized/backgammon.ll +++ b/bench/openspiel/optimized/backgammon.ll @@ -7968,7 +7968,7 @@ define noundef zeroext i1 @_ZNK10open_spiel10backgammon15BackgammonState9AllInHo %33 = load ptr, ptr %32, align 8 %34 = getelementptr inbounds nuw %"class.std::vector.6", ptr %33, i64 %12 %35 = load ptr, ptr %34, align 8 - %wide.trip.count20 = select i1 %30, i64 17, i64 23 + %wide.trip.count = select i1 %30, i64 17, i64 23 br label %36 36: ; preds = %36, %29 @@ -7977,7 +7977,7 @@ define noundef zeroext i1 @_ZNK10open_spiel10backgammon15BackgammonState9AllInHo %38 = load i32, ptr %37, align 4 %39 = icmp slt i32 %38, 1 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %exitcond.not = icmp ne i64 %wide.trip.count20, %indvars.iv + %exitcond.not = icmp ne i64 %wide.trip.count, %indvars.iv %or.cond.not = and i1 %exitcond.not, %39 br i1 %or.cond.not, label %36, label %.loopexit, !llvm.loop !31 @@ -9061,12 +9061,12 @@ define noundef range(i32 0, 2) i32 @_ZNK10open_spiel10backgammon15BackgammonStat %23 = load ptr, ptr %22, align 8 %24 = getelementptr inbounds %"class.std::vector.6", ptr %23, i64 %8 %25 = load ptr, ptr %24, align 8 - %wide.trip.count14 = select i1 %20, i64 5, i64 23 + %wide.trip.count = select i1 %20, i64 5, i64 23 br label %27 26: ; preds = %27 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %exitcond.not = icmp eq i64 %wide.trip.count14, %indvars.iv + %exitcond.not = icmp eq i64 %wide.trip.count, %indvars.iv br i1 %exitcond.not, label %.loopexit, label %27, !llvm.loop !38 27: ; preds = %19, %26 @@ -12484,12 +12484,12 @@ _ZNK10open_spiel10backgammon15BackgammonState10IsGammonedEi.exit.thread: ; preds %41 = load ptr, ptr %40, align 8 %42 = getelementptr inbounds nuw %"class.std::vector.6", ptr %41, i64 %.013 %43 = load ptr, ptr %42, align 8 - %wide.trip.count14.i = select i1 %.not29, i64 23, i64 5 + %wide.trip.count.i = select i1 %.not29, i64 23, i64 5 br label %45 44: ; preds = %45 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 - %exitcond.not.i = icmp eq i64 %wide.trip.count14.i, %indvars.iv.i + %exitcond.not.i = icmp eq i64 %wide.trip.count.i, %indvars.iv.i br i1 %exitcond.not.i, label %_ZNK10open_spiel10backgammon15BackgammonState10IsGammonedEi.exit18, label %45, !llvm.loop !38 45: ; preds = %44, %38 diff --git a/bench/php/optimized/pcre2_substitute.ll b/bench/php/optimized/pcre2_substitute.ll index 850104b4257..de35f4b8acb 100644 --- a/bench/php/optimized/pcre2_substitute.ll +++ b/bench/php/optimized/pcre2_substitute.ll @@ -2496,12 +2496,12 @@ define internal fastcc i64 @default_substitute_case_callout(ptr noundef %0, i64 %27 = getelementptr inbounds nuw i8, ptr %5, i64 24 br label %28 -28: ; preds = %187, %25 +28: ; preds = %188, %25 %.0119 = phi i64 [ %3, %25 ], [ %.1120, %187 ] %.1117 = phi i32 [ %.0116, %25 ], [ %.0115, %187 ] %.0113 = phi ptr [ %2, %25 ], [ %.1114, %187 ] %.0111 = phi i32 [ 0, %25 ], [ %.1112, %187 ] - %.0108 = phi i64 [ 0, %25 ], [ %188, %187 ] + %.0108 = phi i64 [ 0, %25 ], [ %189, %187 ] %.0100 = phi ptr [ %0, %25 ], [ %.1101, %187 ] %29 = icmp ult ptr %.0100, %8 br i1 %29, label %30, label %.thread @@ -2628,7 +2628,7 @@ define internal fastcc i64 @default_substitute_case_callout(ptr noundef %0, i64 %.1101 = phi ptr [ %41, %38 ], [ %62, %52 ], [ %82, %66 ], [ %108, %98 ], [ %125, %109 ], [ %31, %30 ] %127 = icmp samesign ugt i32 %.0103, 127 %or.cond5 = select i1 %or.cond3, i1 %127, i1 false - br i1 %or.cond5, label %128, label %154 + br i1 %or.cond5, label %128, label %155 128: ; preds = %126 %129 = lshr i32 %.0103, 7 @@ -2650,101 +2650,101 @@ define internal fastcc i64 @default_substitute_case_callout(ptr noundef %0, i64 %145 = getelementptr inbounds nuw [0 x i32], ptr @_pcre2_ucp_gentype_8, i64 0, i64 %144 %146 = load i32, ptr %145, align 4, !tbaa !38 %147 = icmp eq i32 %146, 1 - br i1 %147, label %148, label %174 + br i1 %147, label %148, label %175 148: ; preds = %128 %.not128 = icmp eq i32 %.1117, 0 - %149 = select i1 %.not128, i8 5, i8 9 - %.not129 = icmp eq i8 %149, %143 - br i1 %.not129, label %174, label %150 - -150: ; preds = %148 - %151 = getelementptr inbounds nuw i8, ptr %141, i64 4 - %152 = load i32, ptr %151, align 4, !tbaa !47 - %153 = add nsw i32 %152, %.0103 - br label %174 - -154: ; preds = %126 - %155 = load ptr, ptr %27, align 8, !tbaa !35 - %156 = getelementptr inbounds nuw i8, ptr %155, i64 512 + %150 = select i1 %.not128, i8 5, i8 9 + %.not129 = icmp eq i8 %150, %143 + br i1 %.not129, label %175, label %151 + +151: ; preds = %148 + %152 = getelementptr inbounds nuw i8, ptr %141, i64 4 + %153 = load i32, ptr %152, align 4, !tbaa !47 + %154 = add nsw i32 %153, %.0103 + br label %175 + +155: ; preds = %126 + %156 = load ptr, ptr %27, align 8, !tbaa !35 + %157 = getelementptr inbounds nuw i8, ptr %156, i64 512 %.not127 = icmp eq i32 %.1117, 0 - %157 = select i1 %.not127, i64 128, i64 96 - %158 = getelementptr inbounds nuw i8, ptr %156, i64 %157 - %159 = lshr i32 %.0103, 3 - %160 = zext nneg i32 %159 to i64 - %161 = getelementptr inbounds nuw i8, ptr %158, i64 %160 - %162 = load i8, ptr %161, align 1, !tbaa !31 - %163 = zext i8 %162 to i32 - %164 = and i32 %.0103, 7 - %165 = shl nuw nsw i32 1, %164 - %166 = and i32 %165, %163 - %167 = icmp eq i32 %166, 0 - br i1 %167, label %168, label %174 - -168: ; preds = %154 - %169 = getelementptr inbounds nuw i8, ptr %155, i64 256 - %170 = zext nneg i32 %.0103 to i64 - %171 = getelementptr inbounds nuw i8, ptr %169, i64 %170 - %172 = load i8, ptr %171, align 1, !tbaa !31 - %173 = zext i8 %172 to i32 - br label %174 - -174: ; preds = %128, %148, %150, %154, %168 - %.2105 = phi i32 [ %173, %168 ], [ %.0103, %154 ], [ %153, %150 ], [ %.0103, %148 ], [ %.0103, %128 ] - br i1 %12, label %175, label %178 - -175: ; preds = %174 - %176 = call i32 @_pcre2_ord2utf_8(i32 noundef %.2105, ptr noundef nonnull %7) #7 - %177 = zext i32 %176 to i64 - br label %180 - -178: ; preds = %174 - %179 = trunc i32 %.2105 to i8 - store i8 %179, ptr %7, align 1, !tbaa !31 - br label %180 - -180: ; preds = %178, %175 - %.0102 = phi i64 [ %177, %175 ], [ 1, %178 ] + %158 = select i1 %.not127, i64 128, i64 96 + %159 = getelementptr inbounds nuw i8, ptr %157, i64 %158 + %160 = lshr i32 %.0103, 3 + %161 = zext nneg i32 %160 to i64 + %162 = getelementptr inbounds nuw i8, ptr %159, i64 %161 + %163 = load i8, ptr %162, align 1, !tbaa !31 + %164 = zext i8 %163 to i32 + %165 = and i32 %.0103, 7 + %166 = shl nuw nsw i32 1, %165 + %167 = and i32 %166, %164 + %168 = icmp eq i32 %167, 0 + br i1 %168, label %169, label %175 + +169: ; preds = %155 + %170 = getelementptr inbounds nuw i8, ptr %156, i64 256 + %171 = zext nneg i32 %.0103 to i64 + %172 = getelementptr inbounds nuw i8, ptr %170, i64 %171 + %173 = load i8, ptr %172, align 1, !tbaa !31 + %174 = zext i8 %173 to i32 + br label %175 + +175: ; preds = %128, %148, %151, %155, %169 + %.2105 = phi i32 [ %174, %168 ], [ %.0103, %154 ], [ %154, %150 ], [ %.0103, %148 ], [ %.0103, %128 ] + br i1 %12, label %176, label %179 + +176: ; preds = %175 + %177 = call i32 @_pcre2_ord2utf_8(i32 noundef %.2105, ptr noundef nonnull %7) #7 + %178 = zext i32 %177 to i64 + br label %181 + +179: ; preds = %175 + %180 = trunc i32 %.2105 to i8 + store i8 %180, ptr %7, align 1, !tbaa !31 + br label %181 + +181: ; preds = %179, %176 + %.0102 = phi i64 [ %178, %175 ], [ 1, %178 ] %.not130 = icmp ne i32 %.0111, 0 %.not131 = icmp ugt i64 %.0102, %.0119 %or.cond134.not.not = select i1 %.not130, i1 true, i1 %.not131 - br i1 %or.cond134.not.not, label %184, label %181 + br i1 %or.cond134.not.not, label %185, label %182 -181: ; preds = %180 +182: ; preds = %181 call void @llvm.memcpy.p0.p0.i64(ptr align 1 %.0113, ptr nonnull align 1 %7, i64 %.0102, i1 false) - %182 = getelementptr inbounds nuw i8, ptr %.0113, i64 %.0102 - %183 = sub nuw i64 %.0119, %.0102 - br label %184 + %183 = getelementptr inbounds nuw i8, ptr %.0113, i64 %.0102 + %184 = sub nuw i64 %.0119, %.0102 + br label %185 -184: ; preds = %180, %181 - %.1120 = phi i64 [ %183, %181 ], [ %.0119, %180 ] - %.1114 = phi ptr [ %182, %181 ], [ %.0113, %180 ] +185: ; preds = %181, %182 + %.1120 = phi i64 [ %184, %181 ], [ %.0119, %180 ] + %.1114 = phi ptr [ %183, %181 ], [ %.0113, %180 ] %.1112 = phi i32 [ 0, %181 ], [ 1, %180 ] - %185 = xor i64 %.0108, -1 - %186 = icmp ugt i64 %.0102, %185 - br i1 %186, label %.thread, label %187 - -187: ; preds = %184 - %188 = add i64 %.0102, %.0108 - br i1 %.not, label %28, label %189 - -189: ; preds = %187 - %190 = ptrtoint ptr %8 to i64 - %191 = ptrtoint ptr %.1101 to i64 - %192 = sub i64 %190, %191 - %.not133 = icmp ugt i64 %192, %.1120 + %186 = xor i64 %.0108, -1 + %187 = icmp ugt i64 %.0102, %186 + br i1 %187, label %.thread, label %188 + +188: ; preds = %185 + %189 = add i64 %.0102, %.0108 + br i1 %.not, label %28, label %190 + +190: ; preds = %188 + %191 = ptrtoint ptr %8 to i64 + %192 = ptrtoint ptr %.1101 to i64 + %193 = sub i64 %191, %192 + %.not133 = icmp ugt i64 %193, %.1120 %or.cond135 = select i1 %or.cond134.not.not, i1 true, i1 %.not133 - br i1 %or.cond135, label %194, label %193 + br i1 %or.cond135, label %195, label %194 -193: ; preds = %189 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %.1114, ptr nonnull align 1 %.1101, i64 %192, i1 false) - br label %194 +194: ; preds = %190 + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %.1114, ptr nonnull align 1 %.1101, i64 %193, i1 false) + br label %195 -194: ; preds = %193, %189 - %.3 = call i64 @llvm.uadd.sat.i64(i64 %188, i64 %192) +195: ; preds = %194, %190 + %.3 = call i64 @llvm.uadd.sat.i64(i64 %189, i64 %193) br label %.thread -.thread: ; preds = %184, %28, %194, %14, %6 +.thread: ; preds = %185, %28, %195, %14, %6 %.0 = phi i64 [ 0, %6 ], [ 0, %14 ], [ %.3, %194 ], [ -1, %184 ], [ %.0108, %28 ] call void @llvm.lifetime.end.p0(i64 6, ptr nonnull %7) #7 ret i64 %.0 diff --git a/bench/php/optimized/quot_print.ll b/bench/php/optimized/quot_print.ll index 4ed787b684a..5129940b614 100644 --- a/bench/php/optimized/quot_print.ll +++ b/bench/php/optimized/quot_print.ll @@ -14,32 +14,32 @@ define dso_local noundef ptr @php_quot_print_decode(ptr noundef readonly capture br i1 %4, label %.lr.ph, label %.critedge .lr.ph: ; preds = %3, %10 - %.061100 = phi i64 [ %.1, %10 ], [ %1, %3 ] - %.06799 = phi ptr [ %11, %10 ], [ %0, %3 ] - %.06998 = phi i64 [ %12, %10 ], [ %1, %3 ] - %5 = load i8, ptr %.06799, align 1, !tbaa !4 + %.06199 = phi i64 [ %.1, %10 ], [ %1, %3 ] + %.06798 = phi ptr [ %11, %10 ], [ %0, %3 ] + %.06997 = phi i64 [ %12, %10 ], [ %1, %3 ] + %5 = load i8, ptr %.06798, align 1, !tbaa !4 switch i8 %5, label %10 [ i8 0, label %.critedge i8 61, label %6 ] 6: ; preds = %.lr.ph - %7 = add i64 %.061100, -2 - %8 = getelementptr inbounds nuw i8, ptr %.06799, i64 1 - %9 = add i64 %.06998, -1 + %7 = add i64 %.06199, -2 + %8 = getelementptr inbounds nuw i8, ptr %.06798, i64 1 + %9 = add i64 %.06997, -1 br label %10 10: ; preds = %.lr.ph, %6 - %.170 = phi i64 [ %9, %6 ], [ %.06998, %.lr.ph ] - %.168 = phi ptr [ %8, %6 ], [ %.06799, %.lr.ph ] - %.1 = phi i64 [ %7, %6 ], [ %.061100, %.lr.ph ] + %.170 = phi i64 [ %9, %6 ], [ %.06997, %.lr.ph ] + %.168 = phi ptr [ %8, %6 ], [ %.06798, %.lr.ph ] + %.1 = phi i64 [ %7, %6 ], [ %.06199, %.lr.ph ] %11 = getelementptr inbounds nuw i8, ptr %.168, i64 1 %12 = add i64 %.170, -1 %13 = icmp ugt i64 %12, 1 br i1 %13, label %.lr.ph, label %.critedge .critedge: ; preds = %.lr.ph, %10, %3 - %.061.lcssa = phi i64 [ %1, %3 ], [ %.061100, %.lr.ph ], [ %.1, %10 ] + %.061.lcssa = phi i64 [ %1, %3 ], [ %.06199, %.lr.ph ], [ %.1, %10 ] %14 = and i64 %.061.lcssa, -8 %15 = add i64 %14, 32 %16 = tail call noalias ptr @_emalloc(i64 noundef %15) #8 @@ -51,14 +51,14 @@ define dso_local noundef ptr @php_quot_print_decode(ptr noundef readonly capture %19 = getelementptr inbounds nuw i8, ptr %16, i64 16 store i64 %.061.lcssa, ptr %19, align 8, !tbaa !13 %20 = getelementptr inbounds nuw i8, ptr %16, i64 24 - %.not85103 = icmp eq i64 %1, 0 - br i1 %.not85103, label %.critedge2, label %.lr.ph108 + %.not85102 = icmp eq i64 %1, 0 + br i1 %.not85102, label %.critedge2, label %.lr.ph107 -.lr.ph108: ; preds = %.critedge +.lr.ph107: ; preds = %.critedge %spec.store.select87 = select i1 %.not, i8 0, i8 95 br label %21 -21: ; preds = %.lr.ph108, %82 +21:; preds = %.lr.ph107, %82 %.062107 = phi i64 [ 0, %.lr.ph108 ], [ %.163, %82 ] %.065106 = phi ptr [ %20, %.lr.ph108 ], [ %.166, %82 ] %.2105 = phi ptr [ %0, %.lr.ph108 ], [ %.5, %82 ] @@ -66,127 +66,127 @@ define dso_local noundef ptr @php_quot_print_decode(ptr noundef readonly capture %22 = load i8, ptr %.2105, align 1, !tbaa !4 switch i8 %22, label %76 [ i8 0, label %.critedge2 - i8 61, label %23 + i8 61, label %22 ] -23: ; preds = %21 - %24 = add i64 %.271104, -1 - %25 = getelementptr inbounds nuw i8, ptr %.2105, i64 1 - %26 = icmp eq i64 %24, 0 - br i1 %26, label %.critedge2, label %27 - -27: ; preds = %23 - %28 = load i8, ptr %25, align 1, !tbaa !4 - %29 = icmp eq i8 %28, 0 - br i1 %29, label %.critedge2, label %30 - -30: ; preds = %27 - %31 = zext i8 %28 to i64 - %32 = getelementptr inbounds nuw [256 x i32], ptr @php_quot_print_decode.hexval_tbl, i64 0, i64 %31 - %33 = load i32, ptr %32, align 4, !tbaa !14 - %34 = icmp ult i32 %33, 16 - br i1 %34, label %35, label %53 - -35: ; preds = %30 - %36 = icmp eq i64 %.271104, 2 - br i1 %36, label %44, label %37 - -37: ; preds = %35 - %38 = getelementptr inbounds nuw i8, ptr %.2105, i64 2 - %39 = load i8, ptr %38, align 1, !tbaa !4 - %40 = zext i8 %39 to i64 - %41 = getelementptr inbounds nuw [256 x i32], ptr @php_quot_print_decode.hexval_tbl, i64 0, i64 %40 - %42 = load i32, ptr %41, align 4, !tbaa !14 - %43 = icmp ugt i32 %42, 15 - br i1 %43, label %44, label %45 - -44: ; preds = %37, %35 +22: ; preds = %21 + %23 = add i64 %.271104, -1 + %24 = getelementptr inbounds nuw i8, ptr %.2105, i64 1 + %25 = icmp eq i64 %23, 0 + br i1 %25, label %.critedge2, label %26 + +26: ; preds = %22 + %27 = load i8, ptr %24, align 1, !tbaa !4 + %28 = icmp eq i8 %27, 0 + br i1 %28, label %.critedge2, label %29 + +29: ; preds = %26 + %30 = zext i8 %27 to i64 + %31 = getelementptr inbounds nuw [256 x i32], ptr @php_quot_print_decode.hexval_tbl, i64 0, i64 %30 + %32 = load i32, ptr %31, align 4, !tbaa !14 + %33 = icmp ult i32 %32, 16 + br i1 %33, label %34, label %52 + +34: ; preds = %29 + %35 = icmp eq i64 %.271104, 2 + br i1 %35, label %43, label %36 + +36: ; preds = %34 + %37 = getelementptr inbounds nuw i8, ptr %.2105, i64 2 + %38 = load i8, ptr %37, align 1, !tbaa !4 + %39 = zext i8 %38 to i64 + %40 = getelementptr inbounds nuw [256 x i32], ptr @php_quot_print_decode.hexval_tbl, i64 0, i64 %39 + %41 = load i32, ptr %40, align 4, !tbaa !14 + %42 = icmp ugt i32 %41, 15 + br i1 %42, label %43, label %44 + +43: ; preds = %36, %34 tail call void @_efree(ptr noundef nonnull %16) #9 br label %83 -45: ; preds = %37 - %46 = shl nuw nsw i32 %33, 4 - %47 = or disjoint i32 %42, %46 - %48 = trunc nuw i32 %47 to i8 - %49 = getelementptr inbounds nuw i8, ptr %.065106, i64 1 - store i8 %48, ptr %.065106, align 1, !tbaa !4 - %50 = add i64 %.062107, 1 - %51 = add i64 %.271104, -3 - %52 = getelementptr inbounds nuw i8, ptr %.2105, i64 3 +44: ; preds = %36 + %45 = shl nuw nsw i32 %32, 4 + %46 = or disjoint i32 %41, %45 + %47 = trunc nuw i32 %46 to i8 + %48 = getelementptr inbounds nuw i8, ptr %.065106, i64 1 + store i8 %47, ptr %.065106, align 1, !tbaa !4 + %49 = add i64 %.062107, 1 + %50 = add i64 %.271104, -3 + %51 = getelementptr inbounds nuw i8, ptr %.2105, i64 3 br label %82 -53: ; preds = %30 - %54 = icmp ult i32 %33, 64 - br i1 %54, label %.preheader.preheader, label %75 +52: ; preds = %29 + %53 = icmp ult i32 %32, 64 + br i1 %53, label %.preheader.preheader, label %74 -.preheader.preheader: ; preds = %53 - switch i8 %28, label %.preheader._crit_edge [ - i8 32, label %.lr.ph130.preheader - i8 9, label %.lr.ph130.preheader +.preheader.preheader: ; preds = %52 + switch i8 %27, label %.preheader._crit_edge [ + i8 32, label %.lr.ph129.preheader + i8 9, label %.lr.ph129.preheader ] -.lr.ph130.preheader: ; preds = %.preheader.preheader, %.preheader.preheader - br label %.lr.ph130 +.lr.ph129.preheader: ; preds = %.preheader.preheader, %.preheader.preheader + br label %.lr.ph129 -.preheader: ; preds = %57 - switch i8 %59, label %.preheader._crit_edge [ - i8 32, label %.lr.ph130.backedge - i8 9, label %.lr.ph130.backedge +.preheader: ; preds = %56 + switch i8 %58, label %.preheader._crit_edge [ + i8 32, label %.lr.ph129.backedge + i8 9, label %.lr.ph129.backedge ] -.lr.ph130.backedge: ; preds = %.preheader, %.preheader - br label %.lr.ph130 - -.lr.ph130: ; preds = %.lr.ph130.backedge, %.lr.ph130.preheader - %.3129 = phi ptr [ %25, %.lr.ph130.preheader ], [ %58, %.lr.ph130.backedge ] - %.372128 = phi i64 [ %24, %.lr.ph130.preheader ], [ %55, %.lr.ph130.backedge ] - %55 = add i64 %.372128, -1 - %56 = icmp eq i64 %55, 0 - br i1 %56, label %64, label %57 - -57: ; preds = %.lr.ph130 - %58 = getelementptr inbounds nuw i8, ptr %.3129, i64 1 - %59 = load i8, ptr %58, align 1, !tbaa !4 - %60 = zext i8 %59 to i64 - %61 = getelementptr inbounds nuw [256 x i32], ptr @php_quot_print_decode.hexval_tbl, i64 0, i64 %60 - %62 = load i32, ptr %61, align 4, !tbaa !14 - %63 = icmp eq i32 %62, 64 - br i1 %63, label %64, label %.preheader - -64: ; preds = %57, %.lr.ph130 +.lr.ph129.backedge: ; preds = %.preheader, %.preheader + br label %.lr.ph129 + +.lr.ph129: ; preds = %.lr.ph129.backedge, %.lr.ph129.preheader + %.3128 = phi ptr [ %24, %.lr.ph130.preheader ], [ %57, %.lr.ph130.backedge ] + %.372127 = phi i64 [ %23, %.lr.ph130.preheader ], [ %54, %.lr.ph130.backedge ] + %54 = add i64 %.372127, -1 + %55 = icmp eq i64 %54, 0 + br i1 %55, label %63, label %56 + +56: ; preds = %.lr.ph129 + %57 = getelementptr inbounds nuw i8, ptr %.3128, i64 1 + %58 = load i8, ptr %57, align 1, !tbaa !4 + %59 = zext i8 %58 to i64 + %60 = getelementptr inbounds nuw [256 x i32], ptr @php_quot_print_decode.hexval_tbl, i64 0, i64 %59 + %61 = load i32, ptr %60, align 4, !tbaa !14 + %62 = icmp eq i32 %61, 64 + br i1 %62, label %63, label %.preheader + +63: ; preds = %56, %.lr.ph129 tail call void @_efree(ptr noundef nonnull %16) #9 br label %83 .preheader._crit_edge: ; preds = %.preheader, %.preheader.preheader - %.lcssa = phi i8 [ %28, %.preheader.preheader ], [ %59, %.preheader ] - %.372.lcssa = phi i64 [ %24, %.preheader.preheader ], [ %55, %.preheader ] - %.3.lcssa = phi ptr [ %25, %.preheader.preheader ], [ %58, %.preheader ] - %65 = icmp eq i8 %.lcssa, 13 - %66 = icmp ugt i64 %.372.lcssa, 1 - %or.cond = and i1 %66, %65 - br i1 %or.cond, label %67, label %72 - -67: ; preds = %.preheader._crit_edge - %68 = getelementptr inbounds nuw i8, ptr %.3.lcssa, i64 1 - %69 = load i8, ptr %68, align 1, !tbaa !4 - %70 = icmp eq i8 %69, 10 - %71 = sext i1 %70 to i64 - %spec.select = add i64 %.372.lcssa, %71 - %spec.select88 = select i1 %70, ptr %68, ptr %.3.lcssa - br label %72 - -72: ; preds = %67, %.preheader._crit_edge + %.lcssa = phi i8 [ %27, %.preheader.preheader ], [ %58, %.preheader ] + %.372.lcssa = phi i64 [ %23, %.preheader.preheader ], [ %54, %.preheader ] + %.3.lcssa = phi ptr [ %24, %.preheader.preheader ], [ %57, %.preheader ] + %64 = icmp eq i8 %.lcssa, 13 + %65 = icmp ugt i64 %.372.lcssa, 1 + %or.cond = and i1 %65, %64 + br i1 %or.cond, label %66, label %71 + +66: ; preds = %.preheader._crit_edge + %67 = getelementptr inbounds nuw i8, ptr %.3.lcssa, i64 1 + %68 = load i8, ptr %67, align 1, !tbaa !4 + %69 = icmp eq i8 %68, 10 + %70 = sext i1 %69 to i64 + %spec.select = add i64 %.372.lcssa, %70 + %spec.select87 = select i1 %69, ptr %67, ptr %.3.lcssa + br label %71 + +71: ; preds = %66, %.preheader._crit_edge %.473 = phi i64 [ %.372.lcssa, %.preheader._crit_edge ], [ %spec.select, %67 ] - %.4 = phi ptr [ %.3.lcssa, %.preheader._crit_edge ], [ %spec.select88, %67 ] - %73 = add i64 %.473, -1 - %74 = getelementptr inbounds nuw i8, ptr %.4, i64 1 + %.4 = phi ptr [ %.3.lcssa, %.preheader._crit_edge ], [ %spec.select87, %67 ] + %72 = add i64 %.473, -1 + %73 = getelementptr inbounds nuw i8, ptr %.4, i64 1 br label %82 -75: ; preds = %53 +74: ; preds = %52 tail call void @_efree(ptr noundef nonnull %16) #9 br label %83 -76: ; preds = %21 +75: ; preds = %21 %77 = icmp eq i8 %spec.store.select87, %22 %spec.select89 = select i1 %77, i8 32, i8 %22 %78 = getelementptr inbounds nuw i8, ptr %.065106, i64 1 @@ -196,22 +196,22 @@ define dso_local noundef ptr @php_quot_print_decode(ptr noundef readonly capture %81 = add i64 %.062107, 1 br label %82 -82: ; preds = %45, %72, %76 - %.574 = phi i64 [ %51, %45 ], [ %73, %72 ], [ %79, %76 ] - %.5 = phi ptr [ %52, %45 ], [ %74, %72 ], [ %80, %76 ] - %.166 = phi ptr [ %49, %45 ], [ %.065106, %72 ], [ %78, %76 ] - %.163 = phi i64 [ %50, %45 ], [ %.062107, %72 ], [ %81, %76 ] +82: ; preds = %44, %71, %75 + %.574 = phi i64 [ %50, %45 ], [ %72, %72 ], [ %79, %76 ] + %.5 = phi ptr [ %51, %45 ], [ %73, %72 ], [ %80, %76 ] + %.166 = phi ptr [ %48, %45 ], [ %.065106, %72 ], [ %78, %76 ] + %.163 = phi i64 [ %49, %45 ], [ %.062107, %72 ], [ %81, %76 ] %.not85 = icmp eq i64 %.574, 0 br i1 %.not85, label %.critedge2, label %21 -.critedge2: ; preds = %27, %23, %82, %21, %.critedge +.critedge2: ; preds = %26, %22, %82, %21, %.critedge %.065.lcssa = phi ptr [ %20, %.critedge ], [ %.065106, %21 ], [ %.166, %82 ], [ %.065106, %23 ], [ %.065106, %27 ] %.062.lcssa = phi i64 [ 0, %.critedge ], [ %.062107, %21 ], [ %.163, %82 ], [ %.062107, %23 ], [ %.062107, %27 ] store i8 0, ptr %.065.lcssa, align 1, !tbaa !4 store i64 %.062.lcssa, ptr %19, align 8, !tbaa !13 br label %83 -83: ; preds = %.critedge2, %75, %64, %44 +83: ; preds = %.critedge2, %74, %63, %43 %.0 = phi ptr [ %16, %.critedge2 ], [ null, %44 ], [ null, %64 ], [ null, %75 ] ret ptr %.0 } diff --git a/bench/pingora-rs/optimized/63snncgsqpi17trm0hdteq5vk.ll b/bench/pingora-rs/optimized/63snncgsqpi17trm0hdteq5vk.ll index a656cbe5ddb..e6e4810aaa1 100644 --- a/bench/pingora-rs/optimized/63snncgsqpi17trm0hdteq5vk.ll +++ b/bench/pingora-rs/optimized/63snncgsqpi17trm0hdteq5vk.ll @@ -7944,7 +7944,7 @@ _ZN6brotli3enc14block_splitter18RefineEntropyCodes17h9470e8526edcced8E.exit.i: ; %223 = invoke { ptr, i64 } @"_ZN111_$LT$alloc_stdlib..std_alloc..StandardAlloc$u20$as$u20$alloc_no_stdlib..stack_allocator..Allocator$LT$T$GT$$GT$10alloc_cell17h496b870d59415105E"(ptr noalias noundef nonnull align 1 %0, i64 noundef %222) to label %225 unwind label %.thread4.i, !noalias !260 -.thread81.thread.thread838.i: ; preds = %261, %260, %259 +.thread81.thread.thread837.i: ; preds = %261, %260, %259 %.sroa.026.5.ph.ph.i = phi i1 [ false, %260 ], [ true, %259 ], [ false, %261 ] %lpad.thr_comm.i = landingpad { ptr, i32 } cleanup @@ -8061,11 +8061,11 @@ _ZN6brotli3enc14block_splitter18RefineEntropyCodes17h9470e8526edcced8E.exit.i: ; 259: ; preds = %258 invoke void @"_ZN111_$LT$alloc_stdlib..std_alloc..StandardAlloc$u20$as$u20$alloc_no_stdlib..stack_allocator..Allocator$LT$T$GT$$GT$9free_cell17h49a5bd31abbbe38fE"(ptr noalias noundef nonnull align 1 %0, ptr noalias noundef nonnull align 2 %245, i64 noundef %246) - to label %260 unwind label %.thread81.thread.thread838.i, !noalias !260 + to label %260 unwind label %.thread81.thread.thread837.i, !noalias !260 260: ; preds = %259 invoke void @"_ZN111_$LT$alloc_stdlib..std_alloc..StandardAlloc$u20$as$u20$alloc_no_stdlib..stack_allocator..Allocator$LT$T$GT$$GT$9free_cell17h4bb3750273934aaeE"(ptr noalias noundef nonnull align 1 %0, ptr noalias noundef nonnull align 8 %156, i64 noundef %157) - to label %261 unwind label %.thread81.thread.thread838.i, !noalias !260 + to label %261 unwind label %.thread81.thread.thread837.i, !noalias !260 261: ; preds = %260 call void @llvm.experimental.noalias.scope.decl(metadata !287) @@ -8073,7 +8073,7 @@ _ZN6brotli3enc14block_splitter18RefineEntropyCodes17h9470e8526edcced8E.exit.i: ; call void @llvm.experimental.noalias.scope.decl(metadata !292) call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %120), !noalias !294 %262 = invoke { ptr, i64 } @"_ZN111_$LT$alloc_stdlib..std_alloc..StandardAlloc$u20$as$u20$alloc_no_stdlib..stack_allocator..Allocator$LT$T$GT$$GT$10alloc_cell17h6e520e4fe8e2b1fdE"(ptr noalias noundef nonnull align 1 %0, i64 noundef %.sroa.0.0.i122.i) - to label %.noexc115.i unwind label %.thread81.thread.thread838.i, !noalias !260 + to label %.noexc115.i unwind label %.thread81.thread.thread837.i, !noalias !260 .noexc115.i: ; preds = %261 %263 = extractvalue { ptr, i64 } %262, 0 @@ -9149,11 +9149,11 @@ _ZN6brotli3enc7cluster30BrotliHistogramBitCostDistance17h196f578f145a4e42E.exit2 %629 = icmp ult i32 %627, 64 br i1 %629, label %633, label %.invoke.i.i -.invoke.i.loopexit863.split.loop.exit1018.i: ; preds = %_ZN6brotli3enc9histogram14HistogramClear17h2524b7c22a637bd5E.exit293.i.i +.invoke.i.loopexit862.split.loop.exit1017.i: ; preds = %_ZN6brotli3enc9histogram14HistogramClear17h2524b7c22a637bd5E.exit293.i.i %umax.le.i = call i64 @llvm.umax.i64(i64 %272, i64 %.sroa.0136.1823.i.i) br label %.invoke.i.i -.invoke.i.i: ; preds = %716, %714, %706, %684, %.lr.ph.i111._crit_edge.i, %.lr.ph810.i.i, %659, %657, %652, %642, %.lr.ph817.i.i, %633, %625, %694, %.lr.ph.i, %.invoke.i.loopexit863.split.loop.exit1018.i +.invoke.i.i: ; preds = %716, %714, %706, %684, %.lr.ph.i111._crit_edge.i, %.lr.ph810.i.i, %659, %657, %652, %642, %.lr.ph817.i.i, %633, %625, %694, %.lr.ph.i, %.invoke.i.loopexit862.split.loop.exit1017.i %630 = phi i64 [ %umax.le.i, %.invoke.i.loopexit863.split.loop.exit1018.i ], [ %.sroa.041.0808.i.i, %.lr.ph.i ], [ %.sroa.0103.4802.i480.i, %694 ], [ %628, %625 ], [ %634, %633 ], [ 64, %.lr.ph817.i.i ], [ %645, %642 ], [ %645, %652 ], [ %.sroa.034.1814.i.i, %657 ], [ %664, %659 ], [ %.sroa.041.0808.i.i, %.lr.ph810.i.i ], [ %.sroa.041.0808.i.i, %.lr.ph.i111._crit_edge.i ], [ %.sroa.041.0808.i.i, %684 ], [ %.sroa.0.0799.i.i, %706 ], [ %.sroa.0136.0798.i.i, %714 ], [ %712, %716 ] %631 = phi i64 [ %272, %.invoke.i.loopexit863.split.loop.exit1018.i ], [ %.val324.i.i, %.lr.ph.i ], [ %136, %694 ], [ 64, %625 ], [ %264, %633 ], [ 64, %.lr.ph817.i.i ], [ %.val408.i.i, %642 ], [ 64, %652 ], [ %.val340.i.i, %657 ], [ 64, %659 ], [ %.val322.i.i, %684 ], [ %.val406.i.i, %.lr.ph.i111._crit_edge.i ], [ %.val330.i.i, %.lr.ph810.i.i ], [ %272, %706 ], [ %218, %714 ], [ %218, %716 ] %632 = phi ptr [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.180, %.invoke.i.loopexit863.split.loop.exit1018.i ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.186, %.lr.ph.i ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.187, %694 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.169, %625 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.170, %633 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.171, %.lr.ph817.i.i ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.172, %642 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.175, %652 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.176, %657 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.178, %659 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.182, %684 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.181, %.lr.ph.i111._crit_edge.i ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.179, %.lr.ph810.i.i ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.188, %706 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.189, %714 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.190, %716 ] @@ -9278,7 +9278,7 @@ _ZN6brotli3enc9histogram14HistogramClear17h2524b7c22a637bd5E.exit293.i.i: ; pred store float 0x47EFFE0460000000, ptr %675, align 8, !alias.scope !374, !noalias !298 %676 = add nuw nsw i64 %.sroa.041.0808.i.i, %.sroa.0136.1823.i.i %677 = icmp ult i64 %676, %272 - br i1 %677, label %.lr.ph.preheader.i.i, label %.invoke.i.loopexit863.split.loop.exit1018.i + br i1 %677, label %.lr.ph.preheader.i.i, label %.invoke.i.loopexit862.split.loop.exit1017.i .lr.ph.preheader.i.i: ; preds = %_ZN6brotli3enc9histogram14HistogramClear17h2524b7c22a637bd5E.exit293.i.i %678 = getelementptr inbounds nuw i32, ptr %271, i64 %676 @@ -9467,7 +9467,7 @@ _ZN6brotli3enc9histogram14HistogramClear17h2524b7c22a637bd5E.exit293.i.i: ; pred .preheader329.i.i: ; preds = %.preheader329.i.i.preheader, %944 %.sroa.05.1368.i.i = phi i64 [ %946, %944 ], [ 0, %.preheader329.i.i.preheader ] %exitcond.not.i119.i = icmp eq i64 %.sroa.05.1368.i.i, %157 - br i1 %exitcond.not.i119.i, label %.invoke1031.i, label %932 + br i1 %exitcond.not.i119.i, label %.invoke1030.i, label %932 .loopexit327.i.i: ; preds = %928 %744 = icmp eq i64 %746, 0 @@ -9536,7 +9536,7 @@ _ZN6brotli3enc9histogram14HistogramClear17h2524b7c22a637bd5E.exit293.i.i: ; pred .lr.ph400.split.us.i.i: ; preds = %.lr.ph400.i.i %.not420.i.i = icmp eq i64 %218, 0 - br i1 %.not420.i.i, label %.invoke1031.i, label %763 + br i1 %.not420.i.i, label %.invoke1030.i, label %763 763: ; preds = %.lr.ph400.split.us.i.i %764 = load i8, ptr %135, align 1, !alias.scope !401, !noalias !404, !noundef !3 @@ -9577,24 +9577,24 @@ _ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit. %769 = getelementptr inbounds nuw i8, ptr %.sroa.0.0304399.i.i, i64 1 %770 = add nuw i64 %.sroa.7.0398.i.i, 1 %exitcond459.not.i.i = icmp eq i64 %.sroa.7.0398.i.i, %218 - br i1 %exitcond459.not.i.i, label %.invoke1031.i, label %797 + br i1 %exitcond459.not.i.i, label %.invoke1030.i, label %797 _ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit._crit_edge.i.i: ; preds = %_ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit.loopexit.i.i - br i1 %254, label %.lr.ph413.preheader.i.i, label %.invoke1031.i + br i1 %254, label %.lr.ph413.preheader.i.i, label %.invoke1030.i .lr.ph413.preheader.i.i: ; preds = %_ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit._crit_edge.i.i %771 = load i8, ptr %255, align 1, !alias.scope !395, !noalias !405, !noundef !3 %772 = mul i64 %735, %251 br label %.lr.ph413.i.i -.invoke1031.i: ; preds = %_ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit._crit_edge.i.i, %940, %.preheader329.i.i, %.lr.ph400.split.i.i, %789, %.lr.ph413.i.i, %.preheader.i123.i, %957, %952, %.noexc151.i, %.noexc144.i, %919, %918, %.lr.ph392.i.i, %.lr.ph397.i.i, %.lr.ph400.split.us.i.i +.invoke1030.i: ; preds = %_ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit._crit_edge.i.i, %940, %.preheader329.i.i, %.lr.ph400.split.i.i, %789, %.lr.ph413.i.i, %.preheader.i123.i, %957, %952, %.noexc151.i, %.noexc144.i, %919, %918, %.lr.ph392.i.i, %.lr.ph397.i.i, %.lr.ph400.split.us.i.i %773 = phi i64 [ 0, %.lr.ph400.split.us.i.i ], [ %831, %.lr.ph397.i.i ], [ %817, %.lr.ph392.i.i ], [ %926, %.noexc144.i ], [ %157, %919 ], [ %227, %918 ], [ %136, %957 ], [ %955, %952 ], [ %218, %.noexc151.i ], [ %218, %.preheader.i123.i ], [ %776, %789 ], [ %780, %.lr.ph413.i.i ], [ %218, %.lr.ph400.split.i.i ], [ %227, %940 ], [ %157, %.preheader329.i.i ], [ %251, %_ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit._crit_edge.i.i ] %774 = phi i64 [ 0, %.lr.ph400.split.us.i.i ], [ %241, %.lr.ph397.i.i ], [ %233, %.lr.ph392.i.i ], [ %227, %.noexc144.i ], [ %157, %919 ], [ %227, %918 ], [ %136, %957 ], [ %157, %952 ], [ %218, %.noexc151.i ], [ %218, %.preheader.i123.i ], [ %218, %789 ], [ %241, %.lr.ph413.i.i ], [ %218, %.lr.ph400.split.i.i ], [ %227, %940 ], [ %157, %.preheader329.i.i ], [ %218, %_ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit._crit_edge.i.i ] %775 = phi ptr [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.112, %.lr.ph400.split.us.i.i ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.217, %.lr.ph397.i.i ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.119, %.lr.ph392.i.i ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.131, %.noexc144.i ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.130, %919 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.129, %918 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.215, %957 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.214, %952 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.213, %.noexc151.i ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.135, %.preheader.i123.i ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.109, %789 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.108, %.lr.ph413.i.i ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.112, %.lr.ph400.split.i.i ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.134, %940 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.132, %.preheader329.i.i ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.107, %_ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit._crit_edge.i.i ] invoke void @_ZN4core9panicking18panic_bounds_check17h2d3ab0b83311a572E(i64 noundef %773, i64 noundef %774, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %775) #18 to label %.cont1032.i unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.i, !noalias !260 -.cont1032.i: ; preds = %.invoke1031.i +.cont1031.i: ; preds = %.invoke1030.i unreachable .lr.ph413.i.i: ; preds = %791, %.lr.ph413.preheader.i.i @@ -9608,7 +9608,7 @@ _ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit. %779 = zext nneg i8 %778 to i64 %780 = add i64 %777, %779 %781 = icmp ult i64 %780, %241 - br i1 %781, label %782, label %.invoke1031.i + br i1 %781, label %782, label %.invoke1030.i 782: ; preds = %.lr.ph413.i.i %783 = and i8 %.sroa.063.0409.i.i, 7 @@ -9621,7 +9621,7 @@ _ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit. 789: ; preds = %782 %790 = icmp ult i64 %776, %218 - br i1 %790, label %793, label %.invoke1031.i + br i1 %790, label %793, label %.invoke1030.i 791: ; preds = %793, %782 %.sroa.063.1.i.i = phi i8 [ %.sroa.063.0409.i.i, %782 ], [ %795, %793 ] @@ -9703,7 +9703,7 @@ _ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit. %.sroa.047.0387.i.i = phi i64 [ %893, %892 ], [ %754, %.lr.ph392.preheader.i.i ] %817 = lshr i64 %.sroa.047.0387.i.i, 3 %818 = icmp ult i64 %817, %233 - br i1 %818, label %884, label %.invoke1031.i + br i1 %818, label %884, label %.invoke1030.i ._crit_edge393.i.i: ; preds = %892, %814 %.sroa.056.1.lcssa.i.i = phi float [ %.sroa.056.0.lcssa.i.i, %814 ], [ %.sroa.056.2.i.i, %892 ] @@ -9765,7 +9765,7 @@ _ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit. %.sroa.0195.0395.i.i = phi ptr [ %865, %833 ], [ %232, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h45c1c281e37cc192E.exit.i.i" ] %831 = add nuw i64 %.sroa.7197.0396.i.i, %799 %832 = icmp ult i64 %831, %241 - br i1 %832, label %833, label %.invoke1031.i + br i1 %832, label %833, label %.invoke1030.i 833: ; preds = %.lr.ph397.i.i %.sroa.6222.0..sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %.sroa.0195.0395.i.i, i64 4 @@ -9930,13 +9930,13 @@ _ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit. 918: ; preds = %928, %.split.i120.i %.sroa.024.0369.i.i = phi i64 [ 0, %.split.i120.i ], [ %931, %928 ] %exitcond453.not.i.i = icmp eq i64 %.sroa.024.0369.i.i, %227 - br i1 %exitcond453.not.i.i, label %.invoke1031.i, label %919 + br i1 %exitcond453.not.i.i, label %.invoke1030.i, label %919 919: ; preds = %918 %920 = getelementptr inbounds nuw float, ptr %226, i64 %.sroa.024.0369.i.i %921 = load float, ptr %920, align 4, !alias.scope !389, !noalias !397, !noundef !3 %exitcond454.not.i.i = icmp eq i64 %.sroa.024.0369.i.i, %157 - br i1 %exitcond454.not.i.i, label %.invoke1031.i, label %922 + br i1 %exitcond454.not.i.i, label %.invoke1030.i, label %922 922: ; preds = %919 %gep.i.i = getelementptr { [256 x i32], i64, float, [1 x i32] }, ptr %invariant.gep.i.i, i64 %.sroa.024.0369.i.i @@ -9948,7 +9948,7 @@ _ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit. .noexc144.i: ; preds = %922 %926 = add nuw i64 %.sroa.024.0369.i.i, %747 %927 = icmp ult i64 %926, %227 - br i1 %927, label %928, label %.invoke1031.i + br i1 %927, label %928, label %.invoke1030.i 928: ; preds = %.noexc144.i %929 = getelementptr inbounds nuw float, ptr %226, i64 %926 @@ -9973,7 +9973,7 @@ _ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit. 940: ; preds = %941, %937 %.sroa.04.0.i.i = phi float [ %943, %941 ], [ %939, %937 ] %exitcond451.not.i.i = icmp eq i64 %.sroa.05.1368.i.i, %227 - br i1 %exitcond451.not.i.i, label %.invoke1031.i, label %944 + br i1 %exitcond451.not.i.i, label %.invoke1030.i, label %944 941: ; preds = %932 %942 = getelementptr inbounds nuw float, ptr @_ZN6brotli3enc4util10kLog2Table17hd3967b7c903f064fE, i64 %935 @@ -9990,7 +9990,7 @@ _ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit. .preheader.i123.i: ; preds = %733, %947 %.sroa.05.0415.i.i = phi i64 [ %949, %947 ], [ 0, %733 ] %exitcond460.not.i.i = icmp eq i64 %.sroa.05.0415.i.i, %218 - br i1 %exitcond460.not.i.i, label %.invoke1031.i, label %947 + br i1 %exitcond460.not.i.i, label %.invoke1030.i, label %947 947: ; preds = %.preheader.i123.i %948 = getelementptr inbounds nuw i8, ptr %217, i64 %.sroa.05.0415.i.i @@ -10013,18 +10013,18 @@ _ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit. .noexc151.i: ; preds = %951, %.noexc154.i %.sroa.0.015.i.i = phi i64 [ %963, %.noexc154.i ], [ 0, %951 ] %exitcond.not.i150.i = icmp eq i64 %.sroa.0.015.i.i, %218 - br i1 %exitcond.not.i150.i, label %.invoke1031.i, label %952 + br i1 %exitcond.not.i150.i, label %.invoke1030.i, label %952 952: ; preds = %.noexc151.i %953 = getelementptr inbounds nuw i8, ptr %217, i64 %.sroa.0.015.i.i %954 = load i8, ptr %953, align 1, !alias.scope !426, !noalias !428, !noundef !3 %955 = zext i8 %954 to i64 %956 = icmp ugt i64 %157, %955 - br i1 %956, label %957, label %.invoke1031.i + br i1 %956, label %957, label %.invoke1030.i 957: ; preds = %952 %exitcond21.not.i.i = icmp eq i64 %.sroa.0.015.i.i, %136 - br i1 %exitcond21.not.i.i, label %.invoke1031.i, label %958 + br i1 %exitcond21.not.i.i, label %.invoke1030.i, label %958 958: ; preds = %957 %959 = getelementptr inbounds nuw { [256 x i32], i64, float, [1 x i32] }, ptr %156, i64 %955 @@ -10064,7 +10064,7 @@ _ZN6brotli3enc14block_splitter20BuildBlockHistograms17h8eb2c873dc460cb9E.exit.i: cleanup br label %.loopexit.split-lp.i -.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.i: ; preds = %.invoke1031.i, %.split406.us.i.invoke.i, %.invoke.i, %258, %257, %256 +.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.i: ; preds = %.invoke1030.i, %.split406.us.i.invoke.i, %.invoke.i, %258, %257, %256 %.sroa.024.3.ph.ph.ph.ph.ph.i = phi i1 [ false, %256 ], [ false, %257 ], [ false, %258 ], [ true, %.invoke.i ], [ true, %.split406.us.i.invoke.i ], [ true, %.invoke1031.i ] %.sroa.023.2.ph.ph.ph.ph.ph.i = phi i1 [ true, %256 ], [ false, %257 ], [ false, %258 ], [ true, %.invoke.i ], [ true, %.split406.us.i.invoke.i ], [ true, %.invoke1031.i ] %.sroa.022.1.ph.ph.ph.ph.ph.i = phi i1 [ true, %256 ], [ true, %257 ], [ false, %258 ], [ true, %.invoke.i ], [ true, %.split406.us.i.invoke.i ], [ true, %.invoke1031.i ] @@ -10104,7 +10104,7 @@ _ZN6brotli3enc14block_splitter20BuildBlockHistograms17h8eb2c873dc460cb9E.exit.i: invoke void @"_ZN4core3ptr65drop_in_place$LT$alloc_stdlib..heap_alloc..WrapBox$LT$f32$GT$$GT$17hf3151b38ab82c61dE"(ptr noalias noundef nonnull align 8 dereferenceable(16) %125) #20 to label %.thread81.thread.thread.i unwind label %965, !noalias !260 -.thread81.thread.thread.i: ; preds = %969, %727, %267, %.thread81.i, %.thread4.i, %.thread81.thread.thread838.i +.thread81.thread.thread.i: ; preds = %969, %727, %267, %.thread81.i, %.thread4.i, %.thread81.thread.thread837.i %.sroa.026.19.i = phi i1 [ true, %.thread4.i ], [ false, %267 ], [ false, %727 ], [ %.sroa.026.5.ph.ph.i, %.thread81.thread.thread838.i ], [ true, %969 ], [ true, %.thread81.i ] %.pn.pn.pn.pn8.i = phi { ptr, i32 } [ %224, %.thread4.i ], [ %.pn263.pn.pn.pn.pn.pn.i.i, %267 ], [ %.pn263.pn.pn.pn.pn.pn.pn430.i.i, %727 ], [ %lpad.thr_comm.i, %.thread81.thread.thread838.i ], [ %.pn.pn.pn15.i, %969 ], [ %.pn.pn.pn.i, %.thread81.i ] invoke void @"_ZN4core3ptr64drop_in_place$LT$alloc_stdlib..heap_alloc..WrapBox$LT$u8$GT$$GT$17hb6c382cbc1d625feE"(ptr noalias noundef nonnull align 8 dereferenceable(16) %126) #20 @@ -10483,7 +10483,7 @@ _ZN6brotli3enc14block_splitter18RefineEntropyCodes17h8c3c9009db553577E.exit.i: ; %1103 = invoke { ptr, i64 } @"_ZN111_$LT$alloc_stdlib..std_alloc..StandardAlloc$u20$as$u20$alloc_no_stdlib..stack_allocator..Allocator$LT$T$GT$$GT$10alloc_cell17h496b870d59415105E"(ptr noalias noundef nonnull align 1 %0, i64 noundef %1102) to label %1105 unwind label %.thread4.i75, !noalias !449 -.thread81.thread.thread838.i270: ; preds = %1141, %1140, %1139 +.thread81.thread.thread837.i270: ; preds = %1141, %1140, %1139 %.sroa.026.5.ph.ph.i271 = phi i1 [ false, %1140 ], [ true, %1139 ], [ false, %1141 ] %lpad.thr_comm.i272 = landingpad { ptr, i32 } cleanup @@ -10563,23 +10563,23 @@ _ZN6brotli3enc14block_splitter18RefineEntropyCodes17h8c3c9009db553577E.exit.i: ; %1128 = icmp slt i32 %.val29, 12 %1129 = icmp ugt i64 %3, %1018 %1130 = getelementptr inbounds nuw i8, ptr %1017, i64 %1063 - %.sroa.4250.0..sroa_idx.i.i95 = getelementptr inbounds nuw i8, ptr %55, i64 4 - %.sroa.5251.0..sroa_idx.i.i96 = getelementptr inbounds nuw i8, ptr %55, i64 8 - %.sroa.6252.0..sroa_idx.i.i97 = getelementptr inbounds nuw i8, ptr %55, i64 12 - %.sroa.7253.0..sroa_idx.i.i98 = getelementptr inbounds nuw i8, ptr %55, i64 16 - %.sroa.8254.0..sroa_idx.i.i99 = getelementptr inbounds nuw i8, ptr %55, i64 20 - %.sroa.9255.0..sroa_idx.i.i100 = getelementptr inbounds nuw i8, ptr %55, i64 24 - %.sroa.10256.0..sroa_idx.i.i101 = getelementptr inbounds nuw i8, ptr %55, i64 28 - %.sroa.5267.0..sroa_idx.i.i102 = getelementptr inbounds nuw i8, ptr %54, i64 4 - %.sroa.6270.0..sroa_idx.i.i103 = getelementptr inbounds nuw i8, ptr %54, i64 8 - %.sroa.7273.0..sroa_idx.i.i104 = getelementptr inbounds nuw i8, ptr %54, i64 12 - %.sroa.8276.0..sroa_idx.i.i105 = getelementptr inbounds nuw i8, ptr %54, i64 16 - %.sroa.9279.0..sroa_idx.i.i106 = getelementptr inbounds nuw i8, ptr %54, i64 20 - %.sroa.10282.0..sroa_idx.i.i107 = getelementptr inbounds nuw i8, ptr %54, i64 24 - %.sroa.11285.0..sroa_idx.i.i108 = getelementptr inbounds nuw i8, ptr %54, i64 28 + %.sroa.4250.0..sroa_idx.i.i96 = getelementptr inbounds nuw i8, ptr %55, i64 4 + %.sroa.5251.0..sroa_idx.i.i97 = getelementptr inbounds nuw i8, ptr %55, i64 8 + %.sroa.6252.0..sroa_idx.i.i98 = getelementptr inbounds nuw i8, ptr %55, i64 12 + %.sroa.7253.0..sroa_idx.i.i99 = getelementptr inbounds nuw i8, ptr %55, i64 16 + %.sroa.8254.0..sroa_idx.i.i100 = getelementptr inbounds nuw i8, ptr %55, i64 20 + %.sroa.9255.0..sroa_idx.i.i101 = getelementptr inbounds nuw i8, ptr %55, i64 24 + %.sroa.10256.0..sroa_idx.i.i102 = getelementptr inbounds nuw i8, ptr %55, i64 28 + %.sroa.5267.0..sroa_idx.i.i103 = getelementptr inbounds nuw i8, ptr %54, i64 4 + %.sroa.6270.0..sroa_idx.i.i104 = getelementptr inbounds nuw i8, ptr %54, i64 8 + %.sroa.7273.0..sroa_idx.i.i105 = getelementptr inbounds nuw i8, ptr %54, i64 12 + %.sroa.8276.0..sroa_idx.i.i106 = getelementptr inbounds nuw i8, ptr %54, i64 16 + %.sroa.9279.0..sroa_idx.i.i107 = getelementptr inbounds nuw i8, ptr %54, i64 20 + %.sroa.10282.0..sroa_idx.i.i108 = getelementptr inbounds nuw i8, ptr %54, i64 24 + %.sroa.11285.0..sroa_idx.i.i109 = getelementptr inbounds nuw i8, ptr %54, i64 28 %1131 = add i64 %3, -1 - %.idx416.i.i109 = shl nuw nsw i64 %1113, 5 - %1132 = getelementptr inbounds nuw i8, ptr %1112, i64 %.idx416.i.i109 + %.idx416.i.i110 = shl nuw nsw i64 %1113, 5 + %1132 = getelementptr inbounds nuw i8, ptr %1112, i64 %.idx416.i.i110 %1133 = icmp eq i64 %1113, 0 %1134 = icmp ult i64 %1131, %1098 %1135 = getelementptr inbounds nuw i8, ptr %1097, i64 %1131 @@ -10600,11 +10600,11 @@ _ZN6brotli3enc14block_splitter18RefineEntropyCodes17h8c3c9009db553577E.exit.i: ; 1139: ; preds = %1138 invoke void @"_ZN111_$LT$alloc_stdlib..std_alloc..StandardAlloc$u20$as$u20$alloc_no_stdlib..stack_allocator..Allocator$LT$T$GT$$GT$9free_cell17h49a5bd31abbbe38fE"(ptr noalias noundef nonnull align 1 %0, ptr noalias noundef nonnull align 2 %1125, i64 noundef %1126) - to label %1140 unwind label %.thread81.thread.thread838.i270, !noalias !449 + to label %1140 unwind label %.thread81.thread.thread837.i270, !noalias !449 1140: ; preds = %1139 invoke void @"_ZN111_$LT$alloc_stdlib..std_alloc..StandardAlloc$u20$as$u20$alloc_no_stdlib..stack_allocator..Allocator$LT$T$GT$$GT$9free_cell17h0cb760615d6e2bf9E"(ptr noalias noundef nonnull align 1 %0, ptr noalias noundef nonnull align 8 %1036, i64 noundef %1037) - to label %1141 unwind label %.thread81.thread.thread838.i270, !noalias !449 + to label %1141 unwind label %.thread81.thread.thread837.i270, !noalias !449 1141: ; preds = %1140 call void @llvm.experimental.noalias.scope.decl(metadata !476) @@ -10612,7 +10612,7 @@ _ZN6brotli3enc14block_splitter18RefineEntropyCodes17h8c3c9009db553577E.exit.i: ; call void @llvm.experimental.noalias.scope.decl(metadata !481) call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %82), !noalias !483 %1142 = invoke { ptr, i64 } @"_ZN111_$LT$alloc_stdlib..std_alloc..StandardAlloc$u20$as$u20$alloc_no_stdlib..stack_allocator..Allocator$LT$T$GT$$GT$10alloc_cell17h6e520e4fe8e2b1fdE"(ptr noalias noundef nonnull align 1 %0, i64 noundef %.sroa.0.0.i122.i258) - to label %.noexc115.i273 unwind label %.thread81.thread.thread838.i270, !noalias !449 + to label %.noexc115.i273 unwind label %.thread81.thread.thread837.i270, !noalias !449 .noexc115.i273: ; preds = %1141 %1143 = extractvalue { ptr, i64 } %1142, 0 @@ -11688,11 +11688,11 @@ _ZN6brotli3enc7cluster30BrotliHistogramBitCostDistance17h8e6f50bb6efdc9deE.exit2 %1509 = icmp ult i32 %1507, 64 br i1 %1509, label %1513, label %.invoke.i.i295 -.invoke.i.loopexit863.split.loop.exit1018.i322: ; preds = %_ZN6brotli3enc9histogram14HistogramClear17h281a935aa60f7ab2E.exit293.i.i +.invoke.i.loopexit862.split.loop.exit1017.i322: ; preds = %_ZN6brotli3enc9histogram14HistogramClear17h281a935aa60f7ab2E.exit293.i.i %umax.le.i323 = call i64 @llvm.umax.i64(i64 %1152, i64 %.sroa.0136.1823.i.i316) br label %.invoke.i.i295 -.invoke.i.i295: ; preds = %1596, %1594, %1586, %1564, %.lr.ph.i111._crit_edge.i332, %.lr.ph810.i.i319, %1539, %1537, %1532, %1522, %.lr.ph817.i.i345, %1513, %1505, %1574, %.lr.ph.i326, %.invoke.i.loopexit863.split.loop.exit1018.i322 +.invoke.i.i295: ; preds = %1596, %1594, %1586, %1564, %.lr.ph.i111._crit_edge.i332, %.lr.ph810.i.i319, %1539, %1537, %1532, %1522, %.lr.ph817.i.i345, %1513, %1505, %1574, %.lr.ph.i326, %.invoke.i.loopexit862.split.loop.exit1017.i322 %1510 = phi i64 [ %umax.le.i323, %.invoke.i.loopexit863.split.loop.exit1018.i322 ], [ %.sroa.041.0808.i.i320, %.lr.ph.i326 ], [ %.sroa.0103.4802.i480.i327, %1574 ], [ %1508, %1505 ], [ %1514, %1513 ], [ 64, %.lr.ph817.i.i345 ], [ %1525, %1522 ], [ %1525, %1532 ], [ %.sroa.034.1814.i.i347, %1537 ], [ %1544, %1539 ], [ %.sroa.041.0808.i.i320, %.lr.ph810.i.i319 ], [ %.sroa.041.0808.i.i320, %.lr.ph.i111._crit_edge.i332 ], [ %.sroa.041.0808.i.i320, %1564 ], [ %.sroa.0.0799.i.i293, %1586 ], [ %.sroa.0136.0798.i.i294, %1594 ], [ %1592, %1596 ] %1511 = phi i64 [ %1152, %.invoke.i.loopexit863.split.loop.exit1018.i322 ], [ %.val390.i.i, %.lr.ph.i326 ], [ %1018, %1574 ], [ 64, %1505 ], [ %1144, %1513 ], [ 64, %.lr.ph817.i.i345 ], [ %.val408.i.i351, %1522 ], [ 64, %1532 ], [ %.val322.i.i352, %1537 ], [ 64, %1539 ], [ %.val388.i.i, %1564 ], [ %.val406.i.i334, %.lr.ph.i111._crit_edge.i332 ], [ %.val396.i.i, %.lr.ph810.i.i319 ], [ %1152, %1586 ], [ %1098, %1594 ], [ %1098, %1596 ] %1512 = phi ptr [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.180, %.invoke.i.loopexit863.split.loop.exit1018.i322 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.186, %.lr.ph.i326 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.187, %1574 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.169, %1505 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.170, %1513 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.171, %.lr.ph817.i.i345 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.172, %1522 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.175, %1532 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.176, %1537 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.178, %1539 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.182, %1564 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.181, %.lr.ph.i111._crit_edge.i332 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.179, %.lr.ph810.i.i319 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.188, %1586 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.189, %1594 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.190, %1596 ] @@ -11817,7 +11817,7 @@ _ZN6brotli3enc9histogram14HistogramClear17h281a935aa60f7ab2E.exit293.i.i: ; pred store float 0x47EFFE0460000000, ptr %1555, align 8, !alias.scope !563, !noalias !487 %1556 = add nuw nsw i64 %.sroa.041.0808.i.i320, %.sroa.0136.1823.i.i316 %1557 = icmp ult i64 %1556, %1152 - br i1 %1557, label %.lr.ph.preheader.i.i324, label %.invoke.i.loopexit863.split.loop.exit1018.i322 + br i1 %1557, label %.lr.ph.preheader.i.i324, label %.invoke.i.loopexit862.split.loop.exit1017.i322 .lr.ph.preheader.i.i324: ; preds = %_ZN6brotli3enc9histogram14HistogramClear17h281a935aa60f7ab2E.exit293.i.i %1558 = getelementptr inbounds nuw i32, ptr %1151, i64 %1556 @@ -12006,7 +12006,7 @@ _ZN6brotli3enc9histogram14HistogramClear17h281a935aa60f7ab2E.exit293.i.i: ; pred .preheader329.i.i116: ; preds = %.preheader329.i.i116.preheader, %1824 %.sroa.05.1368.i.i117 = phi i64 [ %1826, %1824 ], [ 0, %.preheader329.i.i116.preheader ] %exitcond.not.i119.i118 = icmp eq i64 %.sroa.05.1368.i.i117, %1037 - br i1 %exitcond.not.i119.i118, label %.invoke1031.i138, label %1812 + br i1 %exitcond.not.i119.i118, label %.invoke1030.i138, label %1812 .loopexit327.i.i146: ; preds = %1808 %1624 = icmp eq i64 %1626, 0 @@ -12075,7 +12075,7 @@ _ZN6brotli3enc9histogram14HistogramClear17h281a935aa60f7ab2E.exit293.i.i: ; pred .lr.ph400.split.us.i.i502: ; preds = %.lr.ph400.i.i158 %.not421.i.i = icmp eq i64 %1098, 0 - br i1 %.not421.i.i, label %.invoke1031.i138, label %1643 + br i1 %.not421.i.i, label %.invoke1030.i138, label %1643 1643: ; preds = %.lr.ph400.split.us.i.i502 %1644 = load i16, ptr %1017, align 2, !alias.scope !590, !noalias !593, !noundef !3 @@ -12116,24 +12116,24 @@ _ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit. %1649 = getelementptr inbounds nuw i8, ptr %.sroa.0.0304399.i.i164, i64 2 %1650 = add nuw i64 %.sroa.7.0398.i.i165, 1 %exitcond460.not.i.i166 = icmp eq i64 %.sroa.7.0398.i.i165, %1098 - br i1 %exitcond460.not.i.i166, label %.invoke1031.i138, label %1677 + br i1 %exitcond460.not.i.i166, label %.invoke1030.i138, label %1677 _ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit._crit_edge.i.i245: ; preds = %_ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit.loopexit.i.i244 - br i1 %1134, label %.lr.ph413.preheader.i.i246, label %.invoke1031.i138 + br i1 %1134, label %.lr.ph413.preheader.i.i246, label %.invoke1030.i138 .lr.ph413.preheader.i.i246: ; preds = %_ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit._crit_edge.i.i245 %1651 = load i8, ptr %1135, align 1, !alias.scope !584, !noalias !594, !noundef !3 %1652 = mul i64 %1615, %1131 br label %.lr.ph413.i.i247 -.invoke1031.i138: ; preds = %_ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit._crit_edge.i.i245, %1820, %.preheader329.i.i116, %.lr.ph400.split.i.i163, %1669, %.lr.ph413.i.i247, %.preheader.i123.i505, %1837, %1832, %.noexc151.i261, %.noexc144.i137, %1799, %1798, %.lr.ph392.i.i187, %.lr.ph397.i.i217, %.lr.ph400.split.us.i.i502 +.invoke1030.i138: ; preds = %_ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit._crit_edge.i.i245, %1820, %.preheader329.i.i116, %.lr.ph400.split.i.i163, %1669, %.lr.ph413.i.i247, %.preheader.i123.i505, %1837, %1832, %.noexc151.i261, %.noexc144.i137, %1799, %1798, %.lr.ph392.i.i187, %.lr.ph397.i.i217, %.lr.ph400.split.us.i.i502 %1653 = phi i64 [ 0, %.lr.ph400.split.us.i.i502 ], [ %1711, %.lr.ph397.i.i217 ], [ %1697, %.lr.ph392.i.i187 ], [ %1806, %.noexc144.i137 ], [ %1037, %1799 ], [ %1107, %1798 ], [ %1018, %1837 ], [ %1835, %1832 ], [ %1098, %.noexc151.i261 ], [ %1098, %.preheader.i123.i505 ], [ %1656, %1669 ], [ %1660, %.lr.ph413.i.i247 ], [ %1098, %.lr.ph400.split.i.i163 ], [ %1107, %1820 ], [ %1037, %.preheader329.i.i116 ], [ %1131, %_ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit._crit_edge.i.i245 ] %1654 = phi i64 [ 0, %.lr.ph400.split.us.i.i502 ], [ %1121, %.lr.ph397.i.i217 ], [ %1113, %.lr.ph392.i.i187 ], [ %1107, %.noexc144.i137 ], [ %1037, %1799 ], [ %1107, %1798 ], [ %1018, %1837 ], [ %1037, %1832 ], [ %1098, %.noexc151.i261 ], [ %1098, %.preheader.i123.i505 ], [ %1098, %1669 ], [ %1121, %.lr.ph413.i.i247 ], [ %1098, %.lr.ph400.split.i.i163 ], [ %1107, %1820 ], [ %1037, %.preheader329.i.i116 ], [ %1098, %_ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit._crit_edge.i.i245 ] %1655 = phi ptr [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.112, %.lr.ph400.split.us.i.i502 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.217, %.lr.ph397.i.i217 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.119, %.lr.ph392.i.i187 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.131, %.noexc144.i137 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.130, %1799 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.129, %1798 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.215, %1837 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.214, %1832 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.213, %.noexc151.i261 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.135, %.preheader.i123.i505 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.109, %1669 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.108, %.lr.ph413.i.i247 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.112, %.lr.ph400.split.i.i163 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.134, %1820 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.132, %.preheader329.i.i116 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.107, %_ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit._crit_edge.i.i245 ] invoke void @_ZN4core9panicking18panic_bounds_check17h2d3ab0b83311a572E(i64 noundef %1653, i64 noundef %1654, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %1655) #18 to label %.cont1032.i144 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.i139, !noalias !449 -.cont1032.i144: ; preds = %.invoke1031.i138 +.cont1031.i144: ; preds = %.invoke1030.i138 unreachable .lr.ph413.i.i247: ; preds = %1671, %.lr.ph413.preheader.i.i246 @@ -12147,7 +12147,7 @@ _ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit. %1659 = zext nneg i8 %1658 to i64 %1660 = add i64 %1657, %1659 %1661 = icmp ult i64 %1660, %1121 - br i1 %1661, label %1662, label %.invoke1031.i138 + br i1 %1661, label %1662, label %.invoke1030.i138 1662: ; preds = %.lr.ph413.i.i247 %1663 = and i8 %.sroa.063.0409.i.i250, 7 @@ -12160,7 +12160,7 @@ _ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit. 1669: ; preds = %1662 %1670 = icmp ult i64 %1656, %1098 - br i1 %1670, label %1673, label %.invoke1031.i138 + br i1 %1670, label %1673, label %.invoke1030.i138 1671: ; preds = %1673, %1662 %.sroa.063.1.i.i254 = phi i8 [ %.sroa.063.0409.i.i250, %1662 ], [ %1675, %1673 ] @@ -12242,7 +12242,7 @@ _ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit. %.sroa.047.0387.i.i191 = phi i64 [ %1773, %1772 ], [ %1634, %.lr.ph392.preheader.i.i185 ] %1697 = lshr i64 %.sroa.047.0387.i.i191, 3 %1698 = icmp ult i64 %1697, %1113 - br i1 %1698, label %1764, label %.invoke1031.i138 + br i1 %1698, label %1764, label %.invoke1030.i138 ._crit_edge393.i.i195: ; preds = %1772, %1694 %.sroa.056.1.lcssa.i.i196 = phi float [ %.sroa.056.0.lcssa.i.i182, %1694 ], [ %.sroa.056.2.i.i192, %1772 ] @@ -12265,13 +12265,13 @@ _ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit. 1705: ; preds = %1701 %.sroa.0249.0.copyload.i.i199 = load float, ptr %55, align 4, !noalias !598 - %.sroa.4250.0.copyload.i.i200 = load float, ptr %.sroa.4250.0..sroa_idx.i.i95, align 4, !noalias !598 - %.sroa.5251.0.copyload.i.i201 = load float, ptr %.sroa.5251.0..sroa_idx.i.i96, align 4, !noalias !598 - %.sroa.6252.0.copyload.i.i202 = load float, ptr %.sroa.6252.0..sroa_idx.i.i97, align 4, !noalias !598 - %.sroa.7253.0.copyload.i.i203 = load float, ptr %.sroa.7253.0..sroa_idx.i.i98, align 4, !noalias !598 - %.sroa.8254.0.copyload.i.i204 = load float, ptr %.sroa.8254.0..sroa_idx.i.i99, align 4, !noalias !598 - %.sroa.9255.0.copyload.i.i205 = load float, ptr %.sroa.9255.0..sroa_idx.i.i100, align 4, !noalias !598 - %.sroa.10256.0.copyload.i.i206 = load float, ptr %.sroa.10256.0..sroa_idx.i.i101, align 4, !noalias !598 + %.sroa.4250.0.copyload.i.i200 = load float, ptr %.sroa.4250.0..sroa_idx.i.i96, align 4, !noalias !598 + %.sroa.5251.0.copyload.i.i201 = load float, ptr %.sroa.5251.0..sroa_idx.i.i97, align 4, !noalias !598 + %.sroa.6252.0.copyload.i.i202 = load float, ptr %.sroa.6252.0..sroa_idx.i.i98, align 4, !noalias !598 + %.sroa.7253.0.copyload.i.i203 = load float, ptr %.sroa.7253.0..sroa_idx.i.i99, align 4, !noalias !598 + %.sroa.8254.0.copyload.i.i204 = load float, ptr %.sroa.8254.0..sroa_idx.i.i100, align 4, !noalias !598 + %.sroa.9255.0.copyload.i.i205 = load float, ptr %.sroa.9255.0..sroa_idx.i.i101, align 4, !noalias !598 + %.sroa.10256.0.copyload.i.i206 = load float, ptr %.sroa.10256.0..sroa_idx.i.i102, align 4, !noalias !598 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %55), !noalias !598 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %54), !noalias !598 br label %1706 @@ -12286,13 +12286,13 @@ _ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit. 1710: ; preds = %1706 %.sroa.0265.0.copyload.i.i208 = load float, ptr %54, align 4, !noalias !598 - %.sroa.5267.0.copyload.i.i209 = load float, ptr %.sroa.5267.0..sroa_idx.i.i102, align 4, !noalias !598 - %.sroa.6270.0.copyload.i.i210 = load float, ptr %.sroa.6270.0..sroa_idx.i.i103, align 4, !noalias !598 - %.sroa.7273.0.copyload.i.i211 = load float, ptr %.sroa.7273.0..sroa_idx.i.i104, align 4, !noalias !598 - %.sroa.8276.0.copyload.i.i212 = load float, ptr %.sroa.8276.0..sroa_idx.i.i105, align 4, !noalias !598 - %.sroa.9279.0.copyload.i.i213 = load float, ptr %.sroa.9279.0..sroa_idx.i.i106, align 4, !noalias !598 - %.sroa.10282.0.copyload.i.i214 = load float, ptr %.sroa.10282.0..sroa_idx.i.i107, align 4, !noalias !598 - %.sroa.11285.0.copyload.i.i215 = load float, ptr %.sroa.11285.0..sroa_idx.i.i108, align 4, !noalias !598 + %.sroa.5267.0.copyload.i.i209 = load float, ptr %.sroa.5267.0..sroa_idx.i.i103, align 4, !noalias !598 + %.sroa.6270.0.copyload.i.i210 = load float, ptr %.sroa.6270.0..sroa_idx.i.i104, align 4, !noalias !598 + %.sroa.7273.0.copyload.i.i211 = load float, ptr %.sroa.7273.0..sroa_idx.i.i105, align 4, !noalias !598 + %.sroa.8276.0.copyload.i.i212 = load float, ptr %.sroa.8276.0..sroa_idx.i.i106, align 4, !noalias !598 + %.sroa.9279.0.copyload.i.i213 = load float, ptr %.sroa.9279.0..sroa_idx.i.i107, align 4, !noalias !598 + %.sroa.10282.0.copyload.i.i214 = load float, ptr %.sroa.10282.0..sroa_idx.i.i108, align 4, !noalias !598 + %.sroa.11285.0.copyload.i.i215 = load float, ptr %.sroa.11285.0..sroa_idx.i.i109, align 4, !noalias !598 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %54), !noalias !598 br i1 %1639, label %.invoke.i499, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h45c1c281e37cc192E.exit.i.i216", !prof !13 @@ -12304,7 +12304,7 @@ _ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit. %.sroa.0195.0395.i.i219 = phi ptr [ %1745, %1713 ], [ %1112, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h45c1c281e37cc192E.exit.i.i216" ] %1711 = add nuw i64 %.sroa.7197.0396.i.i218, %1679 %1712 = icmp ult i64 %1711, %1121 - br i1 %1712, label %1713, label %.invoke1031.i138 + br i1 %1712, label %1713, label %.invoke1030.i138 1713: ; preds = %.lr.ph397.i.i217 %.sroa.6222.0..sroa_idx.i.i220 = getelementptr inbounds nuw i8, ptr %.sroa.0195.0395.i.i219, i64 4 @@ -12469,13 +12469,13 @@ _ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit. 1798: ; preds = %1808, %.split.i120.i122 %.sroa.024.0369.i.i125 = phi i64 [ 0, %.split.i120.i122 ], [ %1811, %1808 ] %exitcond454.not.i.i126 = icmp eq i64 %.sroa.024.0369.i.i125, %1107 - br i1 %exitcond454.not.i.i126, label %.invoke1031.i138, label %1799 + br i1 %exitcond454.not.i.i126, label %.invoke1030.i138, label %1799 1799: ; preds = %1798 %1800 = getelementptr inbounds nuw float, ptr %1106, i64 %.sroa.024.0369.i.i125 %1801 = load float, ptr %1800, align 4, !alias.scope !578, !noalias !586, !noundef !3 %exitcond455.not.i.i127 = icmp eq i64 %.sroa.024.0369.i.i125, %1037 - br i1 %exitcond455.not.i.i127, label %.invoke1031.i138, label %1802 + br i1 %exitcond455.not.i.i127, label %.invoke1030.i138, label %1802 1802: ; preds = %1799 %gep.i.i128 = getelementptr { [704 x i32], i64, float, [1 x i32] }, ptr %invariant.gep.i.i124, i64 %.sroa.024.0369.i.i125 @@ -12487,7 +12487,7 @@ _ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit. .noexc144.i137: ; preds = %1802 %1806 = add nuw i64 %.sroa.024.0369.i.i125, %1627 %1807 = icmp ult i64 %1806, %1107 - br i1 %1807, label %1808, label %.invoke1031.i138 + br i1 %1807, label %1808, label %.invoke1030.i138 1808: ; preds = %.noexc144.i137 %1809 = getelementptr inbounds nuw float, ptr %1106, i64 %1806 @@ -12512,7 +12512,7 @@ _ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit. 1820: ; preds = %1821, %1817 %.sroa.04.0.i.i119 = phi float [ %1823, %1821 ], [ %1819, %1817 ] %exitcond452.not.i.i120 = icmp eq i64 %.sroa.05.1368.i.i117, %1107 - br i1 %exitcond452.not.i.i120, label %.invoke1031.i138, label %1824 + br i1 %exitcond452.not.i.i120, label %.invoke1030.i138, label %1824 1821: ; preds = %1812 %1822 = getelementptr inbounds nuw float, ptr @_ZN6brotli3enc4util10kLog2Table17hd3967b7c903f064fE, i64 %1815 @@ -12529,7 +12529,7 @@ _ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit. .preheader.i123.i505: ; preds = %1613, %1827 %.sroa.05.0415.i.i506 = phi i64 [ %1829, %1827 ], [ 0, %1613 ] %exitcond461.not.i.i507 = icmp eq i64 %.sroa.05.0415.i.i506, %1098 - br i1 %exitcond461.not.i.i507, label %.invoke1031.i138, label %1827 + br i1 %exitcond461.not.i.i507, label %.invoke1030.i138, label %1827 1827: ; preds = %.preheader.i123.i505 %1828 = getelementptr inbounds nuw i8, ptr %1097, i64 %.sroa.05.0415.i.i506 @@ -12552,18 +12552,18 @@ _ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit. .noexc151.i261: ; preds = %1831, %.noexc154.i267 %.sroa.0.015.i.i262 = phi i64 [ %1843, %.noexc154.i267 ], [ 0, %1831 ] %exitcond.not.i150.i263 = icmp eq i64 %.sroa.0.015.i.i262, %1098 - br i1 %exitcond.not.i150.i263, label %.invoke1031.i138, label %1832 + br i1 %exitcond.not.i150.i263, label %.invoke1030.i138, label %1832 1832: ; preds = %.noexc151.i261 %1833 = getelementptr inbounds nuw i8, ptr %1097, i64 %.sroa.0.015.i.i262 %1834 = load i8, ptr %1833, align 1, !alias.scope !614, !noalias !616, !noundef !3 %1835 = zext i8 %1834 to i64 %1836 = icmp ugt i64 %1037, %1835 - br i1 %1836, label %1837, label %.invoke1031.i138 + br i1 %1836, label %1837, label %.invoke1030.i138 1837: ; preds = %1832 %exitcond21.not.i.i264 = icmp eq i64 %.sroa.0.015.i.i262, %1018 - br i1 %exitcond21.not.i.i264, label %.invoke1031.i138, label %1838 + br i1 %exitcond21.not.i.i264, label %.invoke1030.i138, label %1838 1838: ; preds = %1837 %1839 = getelementptr inbounds nuw { [704 x i32], i64, float, [1 x i32] }, ptr %1036, i64 %1835 @@ -12603,7 +12603,7 @@ _ZN6brotli3enc14block_splitter20BuildBlockHistograms17h76a0009526212306E.exit.i: cleanup br label %.loopexit.split-lp.i131 -.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.i139: ; preds = %.invoke1031.i138, %.split406.us.i.invoke.i173, %.invoke.i499, %1138, %1137, %1136 +.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.i139: ; preds = %.invoke1030.i138, %.split406.us.i.invoke.i173, %.invoke.i499, %1138, %1137, %1136 %.sroa.024.3.ph.ph.ph.ph.ph.i140 = phi i1 [ false, %1136 ], [ false, %1137 ], [ false, %1138 ], [ true, %.invoke.i499 ], [ true, %.split406.us.i.invoke.i173 ], [ true, %.invoke1031.i138 ] %.sroa.023.2.ph.ph.ph.ph.ph.i141 = phi i1 [ true, %1136 ], [ false, %1137 ], [ false, %1138 ], [ true, %.invoke.i499 ], [ true, %.split406.us.i.invoke.i173 ], [ true, %.invoke1031.i138 ] %.sroa.022.1.ph.ph.ph.ph.ph.i142 = phi i1 [ true, %1136 ], [ true, %1137 ], [ false, %1138 ], [ true, %.invoke.i499 ], [ true, %.split406.us.i.invoke.i173 ], [ true, %.invoke1031.i138 ] @@ -12643,7 +12643,7 @@ _ZN6brotli3enc14block_splitter20BuildBlockHistograms17h76a0009526212306E.exit.i: invoke void @"_ZN4core3ptr65drop_in_place$LT$alloc_stdlib..heap_alloc..WrapBox$LT$f32$GT$$GT$17hf3151b38ab82c61dE"(ptr noalias noundef nonnull align 8 dereferenceable(16) %87) #20 to label %.thread81.thread.thread.i76 unwind label %1845, !noalias !449 -.thread81.thread.thread.i76: ; preds = %1849, %1607, %1147, %.thread81.i84, %.thread4.i75, %.thread81.thread.thread838.i270 +.thread81.thread.thread.i76: ; preds = %1849, %1607, %1147, %.thread81.i84, %.thread4.i75, %.thread81.thread.thread837.i270 %.sroa.026.19.i77 = phi i1 [ true, %.thread4.i75 ], [ false, %1147 ], [ false, %1607 ], [ %.sroa.026.5.ph.ph.i271, %.thread81.thread.thread838.i270 ], [ true, %1849 ], [ true, %.thread81.i84 ] %.pn.pn.pn.pn8.i78 = phi { ptr, i32 } [ %1104, %.thread4.i75 ], [ %.pn263.pn.pn.pn.pn.pn.i.i277, %1147 ], [ %.pn263.pn.pn.pn.pn.pn.pn430.i.i275, %1607 ], [ %lpad.thr_comm.i272, %.thread81.thread.thread838.i270 ], [ %.pn.pn.pn15.i80, %1849 ], [ %.pn.pn.pn.i85, %.thread81.i84 ] invoke void @"_ZN4core3ptr64drop_in_place$LT$alloc_stdlib..heap_alloc..WrapBox$LT$u8$GT$$GT$17hb6c382cbc1d625feE"(ptr noalias noundef nonnull align 8 dereferenceable(16) %88) #20 @@ -13017,7 +13017,7 @@ _ZN6brotli3enc14block_splitter18RefineEntropyCodes17h3573ab36b94fb891E.exit.i: ; %1980 = invoke { ptr, i64 } @"_ZN111_$LT$alloc_stdlib..std_alloc..StandardAlloc$u20$as$u20$alloc_no_stdlib..stack_allocator..Allocator$LT$T$GT$$GT$10alloc_cell17h496b870d59415105E"(ptr noalias noundef nonnull align 1 %0, i64 noundef %1979) to label %1982 unwind label %.thread4.i564, !noalias !637 -.thread81.thread.thread838.i760: ; preds = %2018, %2017, %2016 +.thread81.thread.thread837.i760: ; preds = %2018, %2017, %2016 %.sroa.026.5.ph.ph.i761 = phi i1 [ false, %2017 ], [ true, %2016 ], [ false, %2018 ] %lpad.thr_comm.i762 = landingpad { ptr, i32 } cleanup @@ -13097,23 +13097,23 @@ _ZN6brotli3enc14block_splitter18RefineEntropyCodes17h3573ab36b94fb891E.exit.i: ; %2005 = icmp slt i32 %.val29, 12 %2006 = icmp ugt i64 %.sroa.08.1, %1896 %2007 = getelementptr inbounds nuw i8, ptr %1895, i64 %1940 - %.sroa.4250.0..sroa_idx.i.i584 = getelementptr inbounds nuw i8, ptr %17, i64 4 - %.sroa.5251.0..sroa_idx.i.i585 = getelementptr inbounds nuw i8, ptr %17, i64 8 - %.sroa.6252.0..sroa_idx.i.i586 = getelementptr inbounds nuw i8, ptr %17, i64 12 - %.sroa.7253.0..sroa_idx.i.i587 = getelementptr inbounds nuw i8, ptr %17, i64 16 - %.sroa.8254.0..sroa_idx.i.i588 = getelementptr inbounds nuw i8, ptr %17, i64 20 - %.sroa.9255.0..sroa_idx.i.i589 = getelementptr inbounds nuw i8, ptr %17, i64 24 - %.sroa.10256.0..sroa_idx.i.i590 = getelementptr inbounds nuw i8, ptr %17, i64 28 - %.sroa.5267.0..sroa_idx.i.i591 = getelementptr inbounds nuw i8, ptr %16, i64 4 - %.sroa.6270.0..sroa_idx.i.i592 = getelementptr inbounds nuw i8, ptr %16, i64 8 - %.sroa.7273.0..sroa_idx.i.i593 = getelementptr inbounds nuw i8, ptr %16, i64 12 - %.sroa.8276.0..sroa_idx.i.i594 = getelementptr inbounds nuw i8, ptr %16, i64 16 - %.sroa.9279.0..sroa_idx.i.i595 = getelementptr inbounds nuw i8, ptr %16, i64 20 - %.sroa.10282.0..sroa_idx.i.i596 = getelementptr inbounds nuw i8, ptr %16, i64 24 - %.sroa.11285.0..sroa_idx.i.i597 = getelementptr inbounds nuw i8, ptr %16, i64 28 + %.sroa.4250.0..sroa_idx.i.i585 = getelementptr inbounds nuw i8, ptr %17, i64 4 + %.sroa.5251.0..sroa_idx.i.i586 = getelementptr inbounds nuw i8, ptr %17, i64 8 + %.sroa.6252.0..sroa_idx.i.i587 = getelementptr inbounds nuw i8, ptr %17, i64 12 + %.sroa.7253.0..sroa_idx.i.i588 = getelementptr inbounds nuw i8, ptr %17, i64 16 + %.sroa.8254.0..sroa_idx.i.i589 = getelementptr inbounds nuw i8, ptr %17, i64 20 + %.sroa.9255.0..sroa_idx.i.i590 = getelementptr inbounds nuw i8, ptr %17, i64 24 + %.sroa.10256.0..sroa_idx.i.i591 = getelementptr inbounds nuw i8, ptr %17, i64 28 + %.sroa.5267.0..sroa_idx.i.i592 = getelementptr inbounds nuw i8, ptr %16, i64 4 + %.sroa.6270.0..sroa_idx.i.i593 = getelementptr inbounds nuw i8, ptr %16, i64 8 + %.sroa.7273.0..sroa_idx.i.i594 = getelementptr inbounds nuw i8, ptr %16, i64 12 + %.sroa.8276.0..sroa_idx.i.i595 = getelementptr inbounds nuw i8, ptr %16, i64 16 + %.sroa.9279.0..sroa_idx.i.i596 = getelementptr inbounds nuw i8, ptr %16, i64 20 + %.sroa.10282.0..sroa_idx.i.i597 = getelementptr inbounds nuw i8, ptr %16, i64 24 + %.sroa.11285.0..sroa_idx.i.i598 = getelementptr inbounds nuw i8, ptr %16, i64 28 %2008 = add i64 %.sroa.08.1, -1 - %.idx416.i.i598 = shl nuw nsw i64 %1990, 5 - %2009 = getelementptr inbounds nuw i8, ptr %1989, i64 %.idx416.i.i598 + %.idx416.i.i599 = shl nuw nsw i64 %1990, 5 + %2009 = getelementptr inbounds nuw i8, ptr %1989, i64 %.idx416.i.i599 %2010 = icmp eq i64 %1990, 0 %2011 = icmp ult i64 %2008, %1975 %2012 = getelementptr inbounds nuw i8, ptr %1974, i64 %2008 @@ -13134,11 +13134,11 @@ _ZN6brotli3enc14block_splitter18RefineEntropyCodes17h3573ab36b94fb891E.exit.i: ; 2016: ; preds = %2015 invoke void @"_ZN111_$LT$alloc_stdlib..std_alloc..StandardAlloc$u20$as$u20$alloc_no_stdlib..stack_allocator..Allocator$LT$T$GT$$GT$9free_cell17h49a5bd31abbbe38fE"(ptr noalias noundef nonnull align 1 %0, ptr noalias noundef nonnull align 2 %2002, i64 noundef %2003) - to label %2017 unwind label %.thread81.thread.thread838.i760, !noalias !637 + to label %2017 unwind label %.thread81.thread.thread837.i760, !noalias !637 2017: ; preds = %2016 invoke void @"_ZN111_$LT$alloc_stdlib..std_alloc..StandardAlloc$u20$as$u20$alloc_no_stdlib..stack_allocator..Allocator$LT$T$GT$$GT$9free_cell17h63a11106f52e406aE"(ptr noalias noundef nonnull align 1 %0, ptr noalias noundef nonnull align 8 %1913, i64 noundef %1914) - to label %2018 unwind label %.thread81.thread.thread838.i760, !noalias !637 + to label %2018 unwind label %.thread81.thread.thread837.i760, !noalias !637 2018: ; preds = %2017 call void @llvm.experimental.noalias.scope.decl(metadata !664) @@ -13146,7 +13146,7 @@ _ZN6brotli3enc14block_splitter18RefineEntropyCodes17h3573ab36b94fb891E.exit.i: ; call void @llvm.experimental.noalias.scope.decl(metadata !669) call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %44), !noalias !671 %2019 = invoke { ptr, i64 } @"_ZN111_$LT$alloc_stdlib..std_alloc..StandardAlloc$u20$as$u20$alloc_no_stdlib..stack_allocator..Allocator$LT$T$GT$$GT$10alloc_cell17h6e520e4fe8e2b1fdE"(ptr noalias noundef nonnull align 1 %0, i64 noundef %.sroa.0.0.i122.i748) - to label %.noexc115.i763 unwind label %.thread81.thread.thread838.i760, !noalias !637 + to label %.noexc115.i763 unwind label %.thread81.thread.thread837.i760, !noalias !637 .noexc115.i763: ; preds = %2018 %2020 = extractvalue { ptr, i64 } %2019, 0 @@ -14222,11 +14222,11 @@ _ZN6brotli3enc7cluster30BrotliHistogramBitCostDistance17hbd5292ca2d7f4f70E.exit2 %2386 = icmp ult i32 %2384, 64 br i1 %2386, label %2390, label %.invoke.i.i785 -.invoke.i.loopexit863.split.loop.exit1018.i814: ; preds = %_ZN6brotli3enc9histogram14HistogramClear17hb75b51e44fa0c2faE.exit293.i.i +.invoke.i.loopexit862.split.loop.exit1017.i814: ; preds = %_ZN6brotli3enc9histogram14HistogramClear17hb75b51e44fa0c2faE.exit293.i.i %umax.le.i815 = call i64 @llvm.umax.i64(i64 %2029, i64 %.sroa.0136.1823.i.i806) br label %.invoke.i.i785 -.invoke.i.i785: ; preds = %2473, %2471, %2463, %2441, %.lr.ph.i111._crit_edge.i826, %.lr.ph810.i.i809, %2416, %2414, %2409, %2399, %.lr.ph817.i.i845, %2390, %2382, %2451, %.lr.ph.i818, %.invoke.i.loopexit863.split.loop.exit1018.i814 +.invoke.i.i785: ; preds = %2473, %2471, %2463, %2441, %.lr.ph.i111._crit_edge.i826, %.lr.ph810.i.i809, %2416, %2414, %2409, %2399, %.lr.ph817.i.i845, %2390, %2382, %2451, %.lr.ph.i818, %.invoke.i.loopexit862.split.loop.exit1017.i814 %2387 = phi i64 [ %umax.le.i815, %.invoke.i.loopexit863.split.loop.exit1018.i814 ], [ %.sroa.041.0808.i.i810, %.lr.ph.i818 ], [ %.sroa.0103.4802.i480.i819, %2451 ], [ %2385, %2382 ], [ %2391, %2390 ], [ 64, %.lr.ph817.i.i845 ], [ %2402, %2399 ], [ %2402, %2409 ], [ %.sroa.034.1814.i.i847, %2414 ], [ %2421, %2416 ], [ %.sroa.041.0808.i.i810, %.lr.ph810.i.i809 ], [ %.sroa.041.0808.i.i810, %.lr.ph.i111._crit_edge.i826 ], [ %.sroa.041.0808.i.i810, %2441 ], [ %.sroa.0.0799.i.i783, %2463 ], [ %.sroa.0136.0798.i.i784, %2471 ], [ %2469, %2473 ] %2388 = phi i64 [ %2029, %.invoke.i.loopexit863.split.loop.exit1018.i814 ], [ %.val390.i.i821, %.lr.ph.i818 ], [ %1896, %2451 ], [ 64, %2382 ], [ %2021, %2390 ], [ 64, %.lr.ph817.i.i845 ], [ %.val408.i.i851, %2399 ], [ 64, %2409 ], [ %.val322.i.i854, %2414 ], [ 64, %2416 ], [ %.val388.i.i832, %2441 ], [ %.val406.i.i828, %.lr.ph.i111._crit_edge.i826 ], [ %.val396.i.i812, %.lr.ph810.i.i809 ], [ %2029, %2463 ], [ %1975, %2471 ], [ %1975, %2473 ] %2389 = phi ptr [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.180, %.invoke.i.loopexit863.split.loop.exit1018.i814 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.186, %.lr.ph.i818 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.187, %2451 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.169, %2382 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.170, %2390 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.171, %.lr.ph817.i.i845 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.172, %2399 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.175, %2409 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.176, %2414 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.178, %2416 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.182, %2441 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.181, %.lr.ph.i111._crit_edge.i826 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.179, %.lr.ph810.i.i809 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.188, %2463 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.189, %2471 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.190, %2473 ] @@ -14351,7 +14351,7 @@ _ZN6brotli3enc9histogram14HistogramClear17hb75b51e44fa0c2faE.exit293.i.i: ; pred store float 0x47EFFE0460000000, ptr %2432, align 8, !alias.scope !751, !noalias !675 %2433 = add nuw nsw i64 %.sroa.041.0808.i.i810, %.sroa.0136.1823.i.i806 %2434 = icmp ult i64 %2433, %2029 - br i1 %2434, label %.lr.ph.preheader.i.i816, label %.invoke.i.loopexit863.split.loop.exit1018.i814 + br i1 %2434, label %.lr.ph.preheader.i.i816, label %.invoke.i.loopexit862.split.loop.exit1017.i814 .lr.ph.preheader.i.i816: ; preds = %_ZN6brotli3enc9histogram14HistogramClear17hb75b51e44fa0c2faE.exit293.i.i %2435 = getelementptr inbounds nuw i32, ptr %2028, i64 %2433 @@ -14540,7 +14540,7 @@ _ZN6brotli3enc9histogram14HistogramClear17hb75b51e44fa0c2faE.exit293.i.i: ; pred .preheader329.i.i605: ; preds = %.preheader329.i.i605.preheader, %2701 %.sroa.05.1368.i.i606 = phi i64 [ %2703, %2701 ], [ 0, %.preheader329.i.i605.preheader ] %exitcond.not.i119.i607 = icmp eq i64 %.sroa.05.1368.i.i606, %1914 - br i1 %exitcond.not.i119.i607, label %.invoke1031.i627, label %2689 + br i1 %exitcond.not.i119.i607, label %.invoke1030.i627, label %2689 .loopexit327.i.i635: ; preds = %2685 %2501 = icmp eq i64 %2503, 0 @@ -14609,7 +14609,7 @@ _ZN6brotli3enc9histogram14HistogramClear17hb75b51e44fa0c2faE.exit293.i.i: ; pred .lr.ph400.split.us.i.i1022: ; preds = %.lr.ph400.i.i647 %.not421.i.i1023 = icmp eq i64 %1975, 0 - br i1 %.not421.i.i1023, label %.invoke1031.i627, label %2520 + br i1 %.not421.i.i1023, label %.invoke1030.i627, label %2520 2520: ; preds = %.lr.ph400.split.us.i.i1022 %2521 = load i16, ptr %1895, align 2, !alias.scope !778, !noalias !781, !noundef !3 @@ -14650,24 +14650,24 @@ _ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit. %2526 = getelementptr inbounds nuw i8, ptr %.sroa.0.0304399.i.i654, i64 2 %2527 = add nuw i64 %.sroa.7.0398.i.i655, 1 %exitcond460.not.i.i656 = icmp eq i64 %.sroa.7.0398.i.i655, %1975 - br i1 %exitcond460.not.i.i656, label %.invoke1031.i627, label %2554 + br i1 %exitcond460.not.i.i656, label %.invoke1030.i627, label %2554 _ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit._crit_edge.i.i735: ; preds = %_ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit.loopexit.i.i734 - br i1 %2011, label %.lr.ph413.preheader.i.i736, label %.invoke1031.i627 + br i1 %2011, label %.lr.ph413.preheader.i.i736, label %.invoke1030.i627 .lr.ph413.preheader.i.i736: ; preds = %_ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit._crit_edge.i.i735 %2528 = load i8, ptr %2012, align 1, !alias.scope !772, !noalias !782, !noundef !3 %2529 = mul i64 %2492, %2008 br label %.lr.ph413.i.i737 -.invoke1031.i627: ; preds = %_ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit._crit_edge.i.i735, %2697, %.preheader329.i.i605, %.lr.ph400.split.i.i653, %2546, %.lr.ph413.i.i737, %.preheader.i123.i1026, %2714, %2709, %.noexc151.i751, %.noexc144.i626, %2676, %2675, %.lr.ph392.i.i677, %.lr.ph397.i.i707, %.lr.ph400.split.us.i.i1022 +.invoke1030.i627: ; preds = %_ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit._crit_edge.i.i735, %2697, %.preheader329.i.i605, %.lr.ph400.split.i.i653, %2546, %.lr.ph413.i.i737, %.preheader.i123.i1026, %2714, %2709, %.noexc151.i751, %.noexc144.i626, %2676, %2675, %.lr.ph392.i.i677, %.lr.ph397.i.i707, %.lr.ph400.split.us.i.i1022 %2530 = phi i64 [ 0, %.lr.ph400.split.us.i.i1022 ], [ %2588, %.lr.ph397.i.i707 ], [ %2574, %.lr.ph392.i.i677 ], [ %2683, %.noexc144.i626 ], [ %1914, %2676 ], [ %1984, %2675 ], [ %1896, %2714 ], [ %2712, %2709 ], [ %1975, %.noexc151.i751 ], [ %1975, %.preheader.i123.i1026 ], [ %2533, %2546 ], [ %2537, %.lr.ph413.i.i737 ], [ %1975, %.lr.ph400.split.i.i653 ], [ %1984, %2697 ], [ %1914, %.preheader329.i.i605 ], [ %2008, %_ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit._crit_edge.i.i735 ] %2531 = phi i64 [ 0, %.lr.ph400.split.us.i.i1022 ], [ %1998, %.lr.ph397.i.i707 ], [ %1990, %.lr.ph392.i.i677 ], [ %1984, %.noexc144.i626 ], [ %1914, %2676 ], [ %1984, %2675 ], [ %1896, %2714 ], [ %1914, %2709 ], [ %1975, %.noexc151.i751 ], [ %1975, %.preheader.i123.i1026 ], [ %1975, %2546 ], [ %1998, %.lr.ph413.i.i737 ], [ %1975, %.lr.ph400.split.i.i653 ], [ %1984, %2697 ], [ %1914, %.preheader329.i.i605 ], [ %1975, %_ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit._crit_edge.i.i735 ] %2532 = phi ptr [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.112, %.lr.ph400.split.us.i.i1022 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.217, %.lr.ph397.i.i707 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.119, %.lr.ph392.i.i677 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.131, %.noexc144.i626 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.130, %2676 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.129, %2675 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.215, %2714 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.214, %2709 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.213, %.noexc151.i751 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.135, %.preheader.i123.i1026 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.109, %2546 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.108, %.lr.ph413.i.i737 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.112, %.lr.ph400.split.i.i653 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.134, %2697 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.132, %.preheader329.i.i605 ], [ @anon.14565fd8bf24fc52b307f6d9f637eb2a.107, %_ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit._crit_edge.i.i735 ] invoke void @_ZN4core9panicking18panic_bounds_check17h2d3ab0b83311a572E(i64 noundef %2530, i64 noundef %2531, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %2532) #18 to label %.cont1032.i633 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.i628, !noalias !637 -.cont1032.i633: ; preds = %.invoke1031.i627 +.cont1031.i633: ; preds = %.invoke1030.i627 unreachable .lr.ph413.i.i737: ; preds = %2548, %.lr.ph413.preheader.i.i736 @@ -14681,7 +14681,7 @@ _ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit. %2536 = zext nneg i8 %2535 to i64 %2537 = add i64 %2534, %2536 %2538 = icmp ult i64 %2537, %1998 - br i1 %2538, label %2539, label %.invoke1031.i627 + br i1 %2538, label %2539, label %.invoke1030.i627 2539: ; preds = %.lr.ph413.i.i737 %2540 = and i8 %.sroa.063.0409.i.i740, 7 @@ -14694,7 +14694,7 @@ _ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit. 2546: ; preds = %2539 %2547 = icmp ult i64 %2533, %1975 - br i1 %2547, label %2550, label %.invoke1031.i627 + br i1 %2547, label %2550, label %.invoke1030.i627 2548: ; preds = %2550, %2539 %.sroa.063.1.i.i744 = phi i8 [ %.sroa.063.0409.i.i740, %2539 ], [ %2552, %2550 ] @@ -14776,7 +14776,7 @@ _ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit. %.sroa.047.0387.i.i681 = phi i64 [ %2650, %2649 ], [ %2511, %.lr.ph392.preheader.i.i675 ] %2574 = lshr i64 %.sroa.047.0387.i.i681, 3 %2575 = icmp ult i64 %2574, %1990 - br i1 %2575, label %2641, label %.invoke1031.i627 + br i1 %2575, label %2641, label %.invoke1030.i627 ._crit_edge393.i.i685: ; preds = %2649, %2571 %.sroa.056.1.lcssa.i.i686 = phi float [ %.sroa.056.0.lcssa.i.i672, %2571 ], [ %.sroa.056.2.i.i682, %2649 ] @@ -14799,13 +14799,13 @@ _ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit. 2582: ; preds = %2578 %.sroa.0249.0.copyload.i.i689 = load float, ptr %17, align 4, !noalias !786 - %.sroa.4250.0.copyload.i.i690 = load float, ptr %.sroa.4250.0..sroa_idx.i.i584, align 4, !noalias !786 - %.sroa.5251.0.copyload.i.i691 = load float, ptr %.sroa.5251.0..sroa_idx.i.i585, align 4, !noalias !786 - %.sroa.6252.0.copyload.i.i692 = load float, ptr %.sroa.6252.0..sroa_idx.i.i586, align 4, !noalias !786 - %.sroa.7253.0.copyload.i.i693 = load float, ptr %.sroa.7253.0..sroa_idx.i.i587, align 4, !noalias !786 - %.sroa.8254.0.copyload.i.i694 = load float, ptr %.sroa.8254.0..sroa_idx.i.i588, align 4, !noalias !786 - %.sroa.9255.0.copyload.i.i695 = load float, ptr %.sroa.9255.0..sroa_idx.i.i589, align 4, !noalias !786 - %.sroa.10256.0.copyload.i.i696 = load float, ptr %.sroa.10256.0..sroa_idx.i.i590, align 4, !noalias !786 + %.sroa.4250.0.copyload.i.i690 = load float, ptr %.sroa.4250.0..sroa_idx.i.i585, align 4, !noalias !786 + %.sroa.5251.0.copyload.i.i691 = load float, ptr %.sroa.5251.0..sroa_idx.i.i586, align 4, !noalias !786 + %.sroa.6252.0.copyload.i.i692 = load float, ptr %.sroa.6252.0..sroa_idx.i.i587, align 4, !noalias !786 + %.sroa.7253.0.copyload.i.i693 = load float, ptr %.sroa.7253.0..sroa_idx.i.i588, align 4, !noalias !786 + %.sroa.8254.0.copyload.i.i694 = load float, ptr %.sroa.8254.0..sroa_idx.i.i589, align 4, !noalias !786 + %.sroa.9255.0.copyload.i.i695 = load float, ptr %.sroa.9255.0..sroa_idx.i.i590, align 4, !noalias !786 + %.sroa.10256.0.copyload.i.i696 = load float, ptr %.sroa.10256.0..sroa_idx.i.i591, align 4, !noalias !786 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17), !noalias !786 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %16), !noalias !786 br label %2583 @@ -14820,13 +14820,13 @@ _ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit. 2587: ; preds = %2583 %.sroa.0265.0.copyload.i.i698 = load float, ptr %16, align 4, !noalias !786 - %.sroa.5267.0.copyload.i.i699 = load float, ptr %.sroa.5267.0..sroa_idx.i.i591, align 4, !noalias !786 - %.sroa.6270.0.copyload.i.i700 = load float, ptr %.sroa.6270.0..sroa_idx.i.i592, align 4, !noalias !786 - %.sroa.7273.0.copyload.i.i701 = load float, ptr %.sroa.7273.0..sroa_idx.i.i593, align 4, !noalias !786 - %.sroa.8276.0.copyload.i.i702 = load float, ptr %.sroa.8276.0..sroa_idx.i.i594, align 4, !noalias !786 - %.sroa.9279.0.copyload.i.i703 = load float, ptr %.sroa.9279.0..sroa_idx.i.i595, align 4, !noalias !786 - %.sroa.10282.0.copyload.i.i704 = load float, ptr %.sroa.10282.0..sroa_idx.i.i596, align 4, !noalias !786 - %.sroa.11285.0.copyload.i.i705 = load float, ptr %.sroa.11285.0..sroa_idx.i.i597, align 4, !noalias !786 + %.sroa.5267.0.copyload.i.i699 = load float, ptr %.sroa.5267.0..sroa_idx.i.i592, align 4, !noalias !786 + %.sroa.6270.0.copyload.i.i700 = load float, ptr %.sroa.6270.0..sroa_idx.i.i593, align 4, !noalias !786 + %.sroa.7273.0.copyload.i.i701 = load float, ptr %.sroa.7273.0..sroa_idx.i.i594, align 4, !noalias !786 + %.sroa.8276.0.copyload.i.i702 = load float, ptr %.sroa.8276.0..sroa_idx.i.i595, align 4, !noalias !786 + %.sroa.9279.0.copyload.i.i703 = load float, ptr %.sroa.9279.0..sroa_idx.i.i596, align 4, !noalias !786 + %.sroa.10282.0.copyload.i.i704 = load float, ptr %.sroa.10282.0..sroa_idx.i.i597, align 4, !noalias !786 + %.sroa.11285.0.copyload.i.i705 = load float, ptr %.sroa.11285.0..sroa_idx.i.i598, align 4, !noalias !786 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16), !noalias !786 br i1 %2516, label %.invoke.i1019, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h45c1c281e37cc192E.exit.i.i706", !prof !13 @@ -14838,7 +14838,7 @@ _ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit. %.sroa.0195.0395.i.i709 = phi ptr [ %2622, %2590 ], [ %1989, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h45c1c281e37cc192E.exit.i.i706" ] %2588 = add nuw i64 %.sroa.7197.0396.i.i708, %2556 %2589 = icmp ult i64 %2588, %1998 - br i1 %2589, label %2590, label %.invoke1031.i627 + br i1 %2589, label %2590, label %.invoke1030.i627 2590: ; preds = %.lr.ph397.i.i707 %.sroa.6222.0..sroa_idx.i.i710 = getelementptr inbounds nuw i8, ptr %.sroa.0195.0395.i.i709, i64 4 @@ -15003,13 +15003,13 @@ _ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit. 2675: ; preds = %2685, %.split.i120.i611 %.sroa.024.0369.i.i614 = phi i64 [ 0, %.split.i120.i611 ], [ %2688, %2685 ] %exitcond454.not.i.i615 = icmp eq i64 %.sroa.024.0369.i.i614, %1984 - br i1 %exitcond454.not.i.i615, label %.invoke1031.i627, label %2676 + br i1 %exitcond454.not.i.i615, label %.invoke1030.i627, label %2676 2676: ; preds = %2675 %2677 = getelementptr inbounds nuw float, ptr %1983, i64 %.sroa.024.0369.i.i614 %2678 = load float, ptr %2677, align 4, !alias.scope !766, !noalias !774, !noundef !3 %exitcond455.not.i.i616 = icmp eq i64 %.sroa.024.0369.i.i614, %1914 - br i1 %exitcond455.not.i.i616, label %.invoke1031.i627, label %2679 + br i1 %exitcond455.not.i.i616, label %.invoke1030.i627, label %2679 2679: ; preds = %2676 %gep.i.i617 = getelementptr { [544 x i32], i64, float, [1 x i32] }, ptr %invariant.gep.i.i613, i64 %.sroa.024.0369.i.i614 @@ -15021,7 +15021,7 @@ _ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit. .noexc144.i626: ; preds = %2679 %2683 = add nuw i64 %.sroa.024.0369.i.i614, %2504 %2684 = icmp ult i64 %2683, %1984 - br i1 %2684, label %2685, label %.invoke1031.i627 + br i1 %2684, label %2685, label %.invoke1030.i627 2685: ; preds = %.noexc144.i626 %2686 = getelementptr inbounds nuw float, ptr %1983, i64 %2683 @@ -15046,7 +15046,7 @@ _ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit. 2697: ; preds = %2698, %2694 %.sroa.04.0.i.i608 = phi float [ %2700, %2698 ], [ %2696, %2694 ] %exitcond452.not.i.i609 = icmp eq i64 %.sroa.05.1368.i.i606, %1984 - br i1 %exitcond452.not.i.i609, label %.invoke1031.i627, label %2701 + br i1 %exitcond452.not.i.i609, label %.invoke1030.i627, label %2701 2698: ; preds = %2689 %2699 = getelementptr inbounds nuw float, ptr @_ZN6brotli3enc4util10kLog2Table17hd3967b7c903f064fE, i64 %2692 @@ -15063,7 +15063,7 @@ _ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit. .preheader.i123.i1026: ; preds = %2490, %2704 %.sroa.05.0415.i.i1027 = phi i64 [ %2706, %2704 ], [ 0, %2490 ] %exitcond461.not.i.i1028 = icmp eq i64 %.sroa.05.0415.i.i1027, %1975 - br i1 %exitcond461.not.i.i1028, label %.invoke1031.i627, label %2704 + br i1 %exitcond461.not.i.i1028, label %.invoke1030.i627, label %2704 2704: ; preds = %.preheader.i123.i1026 %2705 = getelementptr inbounds nuw i8, ptr %1974, i64 %.sroa.05.0415.i.i1027 @@ -15086,18 +15086,18 @@ _ZN6brotli3enc14block_splitter22update_cost_and_signal17h526b4db181ff434aE.exit. .noexc151.i751: ; preds = %2708, %.noexc154.i757 %.sroa.0.015.i.i752 = phi i64 [ %2720, %.noexc154.i757 ], [ 0, %2708 ] %exitcond.not.i150.i753 = icmp eq i64 %.sroa.0.015.i.i752, %1975 - br i1 %exitcond.not.i150.i753, label %.invoke1031.i627, label %2709 + br i1 %exitcond.not.i150.i753, label %.invoke1030.i627, label %2709 2709: ; preds = %.noexc151.i751 %2710 = getelementptr inbounds nuw i8, ptr %1974, i64 %.sroa.0.015.i.i752 %2711 = load i8, ptr %2710, align 1, !alias.scope !802, !noalias !804, !noundef !3 %2712 = zext i8 %2711 to i64 %2713 = icmp ugt i64 %1914, %2712 - br i1 %2713, label %2714, label %.invoke1031.i627 + br i1 %2713, label %2714, label %.invoke1030.i627 2714: ; preds = %2709 %exitcond21.not.i.i754 = icmp eq i64 %.sroa.0.015.i.i752, %1896 - br i1 %exitcond21.not.i.i754, label %.invoke1031.i627, label %2715 + br i1 %exitcond21.not.i.i754, label %.invoke1030.i627, label %2715 2715: ; preds = %2714 %2716 = getelementptr inbounds nuw { [544 x i32], i64, float, [1 x i32] }, ptr %1913, i64 %2712 @@ -15137,7 +15137,7 @@ _ZN6brotli3enc14block_splitter20BuildBlockHistograms17h450c30cec7ce6203E.exit.i: cleanup br label %.loopexit.split-lp.i620 -.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.i628: ; preds = %.invoke1031.i627, %.split406.us.i.invoke.i663, %.invoke.i1019, %2015, %2014, %2013 +.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.i628: ; preds = %.invoke1030.i627, %.split406.us.i.invoke.i663, %.invoke.i1019, %2015, %2014, %2013 %.sroa.024.3.ph.ph.ph.ph.ph.i629 = phi i1 [ false, %2013 ], [ false, %2014 ], [ false, %2015 ], [ true, %.invoke.i1019 ], [ true, %.split406.us.i.invoke.i663 ], [ true, %.invoke1031.i627 ] %.sroa.023.2.ph.ph.ph.ph.ph.i630 = phi i1 [ true, %2013 ], [ false, %2014 ], [ false, %2015 ], [ true, %.invoke.i1019 ], [ true, %.split406.us.i.invoke.i663 ], [ true, %.invoke1031.i627 ] %.sroa.022.1.ph.ph.ph.ph.ph.i631 = phi i1 [ true, %2013 ], [ true, %2014 ], [ false, %2015 ], [ true, %.invoke.i1019 ], [ true, %.split406.us.i.invoke.i663 ], [ true, %.invoke1031.i627 ] @@ -15177,7 +15177,7 @@ _ZN6brotli3enc14block_splitter20BuildBlockHistograms17h450c30cec7ce6203E.exit.i: invoke void @"_ZN4core3ptr65drop_in_place$LT$alloc_stdlib..heap_alloc..WrapBox$LT$f32$GT$$GT$17hf3151b38ab82c61dE"(ptr noalias noundef nonnull align 8 dereferenceable(16) %49) #20 to label %.thread81.thread.thread.i565 unwind label %2722, !noalias !637 -.thread81.thread.thread.i565: ; preds = %2726, %2484, %2024, %.thread81.i573, %.thread4.i564, %.thread81.thread.thread838.i760 +.thread81.thread.thread.i565: ; preds = %2726, %2484, %2024, %.thread81.i573, %.thread4.i564, %.thread81.thread.thread837.i760 %.sroa.026.19.i566 = phi i1 [ true, %.thread4.i564 ], [ false, %2024 ], [ false, %2484 ], [ %.sroa.026.5.ph.ph.i761, %.thread81.thread.thread838.i760 ], [ true, %2726 ], [ true, %.thread81.i573 ] %.pn.pn.pn.pn8.i567 = phi { ptr, i32 } [ %1981, %.thread4.i564 ], [ %.pn263.pn.pn.pn.pn.pn.i.i767, %2024 ], [ %.pn263.pn.pn.pn.pn.pn.pn430.i.i765, %2484 ], [ %lpad.thr_comm.i762, %.thread81.thread.thread838.i760 ], [ %.pn.pn.pn15.i569, %2726 ], [ %.pn.pn.pn.i574, %.thread81.i573 ] invoke void @"_ZN4core3ptr64drop_in_place$LT$alloc_stdlib..heap_alloc..WrapBox$LT$u8$GT$$GT$17hb6c382cbc1d625feE"(ptr noalias noundef nonnull align 8 dereferenceable(16) %50) #20 diff --git a/bench/postgres/optimized/nbtsearch.ll b/bench/postgres/optimized/nbtsearch.ll index 78b649252bf..09bc0f54f5a 100644 --- a/bench/postgres/optimized/nbtsearch.ll +++ b/bench/postgres/optimized/nbtsearch.ll @@ -618,15 +618,15 @@ BTreeTupleIsPivot.exit.thread: ; preds = %20, %BTreeTupleIsPi br i1 %.not70116, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %42 - %46 = getelementptr inbounds nuw i8, ptr %1, i64 24 - %47 = getelementptr inbounds nuw i8, ptr %6, i64 24 - %48 = getelementptr inbounds nuw i8, ptr %27, i64 8 - br label %49 + %47 = getelementptr inbounds nuw i8, ptr %1, i64 24 + %48 = getelementptr inbounds nuw i8, ptr %6, i64 24 + %49 = getelementptr inbounds nuw i8, ptr %27, i64 8 + br label %56 -49: ; preds = %.lr.ph, %.thread96 +56: ; preds = %.lr.ph, %.thread96 %.059118 = phi i32 [ 1, %.lr.ph ], [ %121, %.thread96 ] - %.063117 = phi ptr [ %46, %.lr.ph ], [ %.164101, %.thread96 ] - %50 = getelementptr inbounds nuw i8, ptr %.063117, i64 4 + %.063117 = phi ptr [ %48, %.lr.ph ], [ %.164101, %.thread96 ] + %50 = getelementptr inbounds nuw i8, ptr %.063118, i64 4 %51 = load i16, ptr %50, align 4 %52 = sext i16 %51 to i32 %.val.i80 = load i16, ptr %28, align 2 @@ -634,14 +634,14 @@ BTreeTupleIsPivot.exit.thread: ; preds = %20, %BTreeTupleIsPi %54 = add nsw i32 %52, -1 br i1 %53, label %88, label %55 -55: ; preds = %49 +55:; preds = %56 %56 = sext i32 %54 to i64 %57 = getelementptr inbounds [0 x %struct.CompactAttribute], ptr %47, i64 0, i64 %56 %58 = load i32, ptr %57, align 4 %59 = icmp sgt i32 %58, -1 br i1 %59, label %60, label %86 -60: ; preds = %55 +60:; preds = %55 %61 = zext nneg i32 %58 to i64 %62 = getelementptr inbounds nuw i8, ptr %48, i64 %61 %63 = getelementptr inbounds nuw i8, ptr %57, i64 6 @@ -659,229 +659,229 @@ BTreeTupleIsPivot.exit.thread: ; preds = %20, %BTreeTupleIsPi i16 8, label %78 ] -69: ; preds = %66 - %70 = load i8, ptr %62, align 1 - %71 = sext i8 %70 to i64 +70: ; preds = %66 + %71 = load i8, ptr %62, align 1 + %72 = sext i8 %71 to i64 br label %index_getattr.exit -72: ; preds = %66 - %73 = load i16, ptr %62, align 2 - %74 = sext i16 %73 to i64 +73: ; preds = %66 + %74 = load i16, ptr %62, align 2 + %75 = sext i16 %74 to i64 br label %index_getattr.exit -75: ; preds = %66 - %76 = load i32, ptr %62, align 4 - %77 = sext i32 %76 to i64 +76: ; preds = %66 + %77 = load i32, ptr %62, align 4 + %78 = sext i32 %77 to i64 br label %index_getattr.exit -78: ; preds = %66 - %79 = load i64, ptr %62, align 8 +79: ; preds = %66 + %80 = load i64, ptr %62, align 8 br label %index_getattr.exit -80: ; preds = %66 - %81 = sext i16 %68 to i32 - %82 = tail call zeroext i1 @errstart_cold(i32 noundef 21, ptr noundef null) #8 - tail call void @llvm.assume(i1 %82) - %83 = tail call i32 (ptr, ...) @errmsg_internal(ptr noundef nonnull @.str.6, i32 noundef range(i32 -32768, 32768) %81) #7 +81: ; preds = %66 + %82 = sext i16 %68 to i32 + %83 = tail call zeroext i1 @errstart_cold(i32 noundef 21, ptr noundef null) #8 + tail call void @llvm.assume(i1 %83) + %84 = tail call i32 (ptr, ...) @errmsg_internal(ptr noundef nonnull @.str.6, i32 noundef range(i32 -32768, 32768) %82) #7 tail call void @errfinish(ptr noundef nonnull @.str.7, i32 noundef 70, ptr noundef nonnull @__func__.fetch_att) #7 unreachable -84: ; preds = %60 - %85 = ptrtoint ptr %62 to i64 +85: ; preds = %60 + %86 = ptrtoint ptr %62 to i64 br label %index_getattr.exit -86: ; preds = %55 - %87 = tail call i64 @nocache_index_getattr(ptr noundef nonnull %27, i32 noundef range(i32 -32768, 32768) %52, ptr noundef nonnull %6) #7 +87: ; preds = %55 + %88 = tail call i64 @nocache_index_getattr(ptr noundef nonnull %27, i32 noundef range(i32 -32768, 32768) %52, ptr noundef nonnull %6) #7 br label %index_getattr.exit -88: ; preds = %49 - %89 = ashr i32 %54, 3 - %90 = sext i32 %89 to i64 - %91 = getelementptr inbounds i8, ptr %48, i64 %90 - %92 = load i8, ptr %91, align 1 - %93 = zext i8 %92 to i32 - %94 = and i32 %54, 7 - %95 = shl nuw nsw i32 1, %94 - %96 = and i32 %95, %93 - %.not.i19.i = icmp eq i32 %96, 0 - br i1 %.not.i19.i, label %index_getattr.exit.thread, label %97 - -97: ; preds = %88 - %98 = tail call i64 @nocache_index_getattr(ptr noundef nonnull %27, i32 noundef range(i32 -32768, 32768) %52, ptr noundef %6) #7 +89: ; preds = %56 + %90 = ashr i32 %54, 3 + %91 = sext i32 %90 to i64 + %92 = getelementptr inbounds i8, ptr %49, i64 %91 + %93 = load i8, ptr %92, align 1 + %94 = zext i8 %93 to i32 + %95 = and i32 %54, 7 + %96 = shl nuw nsw i32 1, %95 + %97 = and i32 %96, %94 + %.not.i19.i = icmp eq i32 %97, 0 + br i1 %.not.i19.i, label %index_getattr.exit.thread, label %98 + +98: ; preds = %89 + %99 = tail call i64 @nocache_index_getattr(ptr noundef nonnull %27, i32 noundef range(i32 -32768, 32768) %52, ptr noundef %6) #7 br label %index_getattr.exit -index_getattr.exit: ; preds = %69, %72, %75, %78, %84, %86, %97 - %.1.i = phi i64 [ %98, %97 ], [ %71, %69 ], [ %74, %72 ], [ %77, %75 ], [ %79, %78 ], [ %85, %84 ], [ %87, %86 ] - %99 = load i32, ptr %.063117, align 8 - %100 = and i32 %99, 1 - %.not71 = icmp eq i32 %100, 0 - br i1 %.not71, label %107, label %103 - -index_getattr.exit.thread: ; preds = %88 - %101 = load i32, ptr %.063117, align 8 - %102 = and i32 %101, 1 - %.not71125 = icmp eq i32 %102, 0 - br i1 %.not71125, label %105, label %.thread96 - -103: ; preds = %index_getattr.exit - %104 = and i32 %99, 33554432 - %.not74 = icmp eq i32 %104, 0 +index_getattr.exit: ; preds = %70, %73, %76, %79, %85, %87, %98 + %.1.i = phi i64 [ %99, %97 ], [ %72, %69 ], [ %75, %72 ], [ %78, %75 ], [ %80, %78 ], [ %86, %84 ], [ %88, %86 ] + %100 = load i32, ptr %.063117, align 8 + %101 = and i32 %100, 1 + %.not71 = icmp eq i32 %101, 0 + br i1 %.not71, label %108, label %104 + +index_getattr.exit.thread: ; preds = %89 + %102 = load i32, ptr %.063117, align 8 + %103 = and i32 %102, 1 + %.not71125 = icmp eq i32 %103, 0 + br i1 %.not71125, label %106, label %.thread96 + +104: ; preds = %index_getattr.exit + %105 = and i32 %100, 33554432 + %.not74 = icmp eq i32 %105, 0 %.76 = select i1 %.not74, i32 1, i32 -1 br label %.thread104 -105: ; preds = %index_getattr.exit.thread - %106 = and i32 %101, 33554432 - %.not73 = icmp eq i32 %106, 0 +106: ; preds = %index_getattr.exit.thread + %107 = and i32 %102, 33554432 + %.not73 = icmp eq i32 %107, 0 %.77 = select i1 %.not73, i32 -1, i32 1 br label %.thread104 -107: ; preds = %index_getattr.exit - %108 = getelementptr inbounds nuw i8, ptr %.063117, i64 16 - %109 = getelementptr inbounds nuw i8, ptr %.063117, i64 12 - %110 = load i32, ptr %109, align 4 - %111 = getelementptr inbounds nuw i8, ptr %.063117, i64 64 - %112 = load i64, ptr %111, align 8 - %113 = tail call i64 @FunctionCall2Coll(ptr noundef nonnull %108, i32 noundef %110, i64 noundef %.1.i, i64 noundef %112) #7 - %114 = trunc i64 %113 to i32 - %115 = load i32, ptr %.063117, align 8 - %116 = and i32 %115, 16777216 - %.not72 = icmp eq i32 %116, 0 - br i1 %.not72, label %117, label %120 - -117: ; preds = %107 - %118 = icmp slt i32 %114, 0 - %119 = sub nsw i32 0, %114 - br i1 %118, label %.thread104, label %120 - -120: ; preds = %117, %107 - %.062 = phi i32 [ %114, %107 ], [ %119, %117 ] +108: ; preds = %index_getattr.exit + %109 = getelementptr inbounds nuw i8, ptr %.063117, i64 16 + %110 = getelementptr inbounds nuw i8, ptr %.063117, i64 12 + %111 = load i32, ptr %110, align 4 + %112 = getelementptr inbounds nuw i8, ptr %.063117, i64 64 + %113 = load i64, ptr %112, align 8 + %114 = tail call i64 @FunctionCall2Coll(ptr noundef nonnull %109, i32 noundef %111, i64 noundef %.1.i, i64 noundef %113) #7 + %115 = trunc i64 %114 to i32 + %116 = load i32, ptr %.063117, align 8 + %117 = and i32 %116, 16777216 + %.not72 = icmp eq i32 %117, 0 + br i1 %.not72, label %118, label %121 + +118: ; preds = %108 + %119 = icmp slt i32 %115, 0 + %120 = sub nsw i32 0, %115 + br i1 %119, label %.thread104, label %121 + +121: ; preds = %118, %108 + %.062 = phi i32 [ %115, %107 ], [ %120, %117 ] %.not75 = icmp eq i32 %.062, 0 br i1 %.not75, label %.thread96, label %.thread104 -.thread96: ; preds = %index_getattr.exit.thread, %120 +.thread96: ; preds = %index_getattr.exit.thread, %121 %.164101 = getelementptr inbounds nuw i8, ptr %.063117, i64 72 - %121 = add nuw nsw i32 %.059118, 1 + %122 = add nuw nsw i32 %.059118, 1 %exitcond.not = icmp eq i32 %.059118, %. - br i1 %exitcond.not, label %._crit_edge.loopexit, label %49, !llvm.loop !11 + br i1 %exitcond.not, label %._crit_edge.loopexit, label %56, !llvm.loop !11 ._crit_edge.loopexit: ; preds = %.thread96 %.pre = load i32, ptr %44, align 8 br label %._crit_edge ._crit_edge: ; preds = %._crit_edge.loopexit, %42 - %122 = phi i32 [ %.pre, %._crit_edge.loopexit ], [ %45, %42 ] - %123 = icmp sgt i32 %122, %43 - br i1 %123, label %.thread104, label %124 - -124: ; preds = %._crit_edge - %125 = load i16, ptr %28, align 2 - %126 = and i16 %125, 8192 - %127 = icmp eq i16 %126, 0 - br i1 %127, label %BTreeTupleGetHeapTID.exit, label %BTreeTupleIsPivot.exit.i - -BTreeTupleIsPivot.exit.i: ; preds = %124 - %128 = getelementptr i8, ptr %27, i64 4 - %.val.i.i = load i16, ptr %128, align 2 - %129 = and i16 %.val.i.i, 8192 - %.not.i.i = icmp eq i16 %129, 0 - br i1 %.not.i.i, label %130, label %BTreeTupleIsPosting.exit.i - -130: ; preds = %BTreeTupleIsPivot.exit.i - %131 = and i16 %.val.i.i, 4096 - %.not.i82 = icmp eq i16 %131, 0 - br i1 %.not.i82, label %BTreeTupleGetHeapTID.exit.thread, label %132 - -132: ; preds = %130 - %133 = and i16 %125, 8191 - %134 = zext nneg i16 %133 to i64 - %135 = getelementptr inbounds nuw i8, ptr %27, i64 %134 - %136 = getelementptr inbounds i8, ptr %135, i64 -6 + %123 = phi i32 [ %.pre, %._crit_edge.loopexit ], [ %45, %42 ] + %124 = icmp sgt i32 %123, %43 + br i1 %124, label %.thread104, label %125 + +125: ; preds = %._crit_edge + %126 = load i16, ptr %28, align 2 + %127 = and i16 %126, 8192 + %128 = icmp eq i16 %127, 0 + br i1 %128, label %BTreeTupleGetHeapTID.exit, label %BTreeTupleIsPivot.exit.i + +BTreeTupleIsPivot.exit.i: ; preds = %125 + %129 = getelementptr i8, ptr %27, i64 4 + %.val.i.i = load i16, ptr %129, align 2 + %130 = and i16 %.val.i.i, 8192 + %.not.i.i = icmp eq i16 %130, 0 + br i1 %.not.i.i, label %131, label %BTreeTupleIsPosting.exit.i + +131: ; preds = %BTreeTupleIsPivot.exit.i + %132 = and i16 %.val.i.i, 4096 + %.not.i82 = icmp eq i16 %132, 0 + br i1 %.not.i82, label %BTreeTupleGetHeapTID.exit.thread, label %133 + +133: ; preds = %131 + %134 = and i16 %126, 8191 + %135 = zext nneg i16 %134 to i64 + %136 = getelementptr inbounds nuw i8, ptr %27, i64 %135 + %137 = getelementptr inbounds i8, ptr %136, i64 -6 br label %BTreeTupleGetHeapTID.exit BTreeTupleIsPosting.exit.i: ; preds = %BTreeTupleIsPivot.exit.i %.val.i11.i = load i16, ptr %27, align 2 - %137 = getelementptr i8, ptr %27, i64 2 - %.val2.i.i = load i16, ptr %137, align 2 - %138 = zext i16 %.val.i11.i to i64 - %139 = shl nuw nsw i64 %138, 16 - %140 = zext i16 %.val2.i.i to i64 - %141 = getelementptr inbounds nuw i8, ptr %27, i64 %139 - %142 = getelementptr inbounds nuw i8, ptr %141, i64 %140 + %138 = getelementptr i8, ptr %27, i64 2 + %.val2.i.i = load i16, ptr %138, align 2 + %139 = zext i16 %.val.i11.i to i64 + %140 = shl nuw nsw i64 %139, 16 + %141 = zext i16 %.val2.i.i to i64 + %142 = getelementptr inbounds nuw i8, ptr %27, i64 %140 + %143 = getelementptr inbounds nuw i8, ptr %142, i64 %141 br label %BTreeTupleGetHeapTID.exit -BTreeTupleGetHeapTID.exit: ; preds = %124, %132, %BTreeTupleIsPosting.exit.i - %.0.i81 = phi ptr [ %136, %132 ], [ %142, %BTreeTupleIsPosting.exit.i ], [ %27, %124 ] - %143 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %144 = load ptr, ptr %143, align 8 - %145 = icmp eq ptr %144, null - br i1 %145, label %149, label %160 +BTreeTupleGetHeapTID.exit: ; preds = %125, %133, %BTreeTupleIsPosting.exit.i + %.0.i81 = phi ptr [ %137, %132 ], [ %143, %BTreeTupleIsPosting.exit.i ], [ %27, %124 ] + %144 = getelementptr inbounds nuw i8, ptr %1, i64 8 + %145 = load ptr, ptr %144, align 8 + %146 = icmp eq ptr %145, null + br i1 %146, label %156, label %161 -BTreeTupleGetHeapTID.exit.thread: ; preds = %130 - %146 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %147 = load ptr, ptr %146, align 8 - %148 = icmp eq ptr %147, null - br i1 %148, label %149, label %.thread104 +BTreeTupleGetHeapTID.exit.thread: ; preds = %131 + %147 = getelementptr inbounds nuw i8, ptr %1, i64 8 + %148 = load ptr, ptr %147, align 8 + %149 = icmp eq ptr %148, null + br i1 %149, label %156, label %.thread104 -149: ; preds = %BTreeTupleGetHeapTID.exit.thread, %BTreeTupleGetHeapTID.exit +156: ; preds = %BTreeTupleGetHeapTID.exit.thread, %BTreeTupleGetHeapTID.exit %.0.i81108 = phi ptr [ null, %BTreeTupleGetHeapTID.exit.thread ], [ %.0.i81, %BTreeTupleGetHeapTID.exit ] - %150 = getelementptr inbounds nuw i8, ptr %1, i64 4 - %151 = load i8, ptr %150, align 4, !range !5, !noundef !6 - %152 = trunc nuw i8 %151 to i1 - br i1 %152, label %159, label %153 - -153: ; preds = %149 - %154 = icmp eq i32 %122, %43 - %155 = icmp eq ptr %.0.i81108, null - %or.cond = select i1 %154, i1 %155, i1 false - br i1 %or.cond, label %156, label %159 - -156: ; preds = %153 - %157 = load i8, ptr %1, align 8, !range !5, !noundef !6 - %158 = trunc nuw i8 %157 to i1 - br i1 %158, label %.thread104, label %159 - -159: ; preds = %156, %153, %149 + %151 = getelementptr inbounds nuw i8, ptr %1, i64 4 + %152 = load i8, ptr %151, align 4, !range !5, !noundef !6 + %153 = trunc nuw i8 %152 to i1 + br i1 %153, label %160, label %154 + +154: ; preds = %156 + %155 = icmp eq i32 %123, %43 + %156 = icmp eq ptr %.0.i81108, null + %or.cond = select i1 %155, i1 %156, i1 false + br i1 %or.cond, label %157, label %160 + +157: ; preds = %154 + %158 = load i8, ptr %1, align 8, !range !5, !noundef !6 + %159 = trunc nuw i8 %158 to i1 + br i1 %159, label %.thread104, label %160 + +160: ; preds = %157, %154, %156 br label %.thread104 -160: ; preds = %BTreeTupleGetHeapTID.exit - %161 = tail call i32 @ItemPointerCompare(ptr noundef nonnull %144, ptr noundef nonnull %.0.i81) #7 - %162 = icmp slt i32 %161, 1 - br i1 %162, label %.thread104, label %163 - -163: ; preds = %160 - %164 = load i16, ptr %28, align 2 - %165 = and i16 %164, 8192 - %166 = icmp eq i16 %165, 0 - br i1 %166, label %.thread104, label %BTreeTupleIsPosting.exit - -BTreeTupleIsPosting.exit: ; preds = %163 - %167 = getelementptr i8, ptr %27, i64 4 - %.val.i83 = load i16, ptr %167, align 2 - %168 = and i16 %.val.i83, 8192 - %.not112 = icmp eq i16 %168, 0 +161: ; preds = %BTreeTupleGetHeapTID.exit + %162 = tail call i32 @ItemPointerCompare(ptr noundef nonnull %145, ptr noundef nonnull %.0.i81) #7 + %163 = icmp slt i32 %162, 1 + br i1 %163, label %.thread104, label %164 + +164: ; preds = %161 + %165 = load i16, ptr %28, align 2 + %166 = and i16 %165, 8192 + %167 = icmp eq i16 %166, 0 + br i1 %167, label %.thread104, label %BTreeTupleIsPosting.exit + +BTreeTupleIsPosting.exit: ; preds = %164 + %168 = getelementptr i8, ptr %27, i64 4 + %.val.i83 = load i16, ptr %168, align 2 + %169 = and i16 %.val.i83, 8192 + %.not112 = icmp eq i16 %169, 0 br i1 %.not112, label %.thread104, label %BTreeTupleGetMaxHeapTID.exit BTreeTupleGetMaxHeapTID.exit: ; preds = %BTreeTupleIsPosting.exit - %169 = load ptr, ptr %143, align 8 + %170 = load ptr, ptr %144, align 8 %.val.i.i.i = load i16, ptr %27, align 2 - %170 = zext i16 %.val.i.i.i to i64 - %171 = shl nuw nsw i64 %170, 16 - %172 = getelementptr inbounds nuw i8, ptr %27, i64 %171 - %173 = getelementptr i8, ptr %27, i64 2 - %.val2.i.i.i = load i16, ptr %173, align 2 - %174 = zext i16 %.val2.i.i.i to i64 - %175 = getelementptr inbounds nuw i8, ptr %172, i64 %174 - %176 = and i16 %.val.i83, 4095 - %177 = zext nneg i16 %176 to i64 - %178 = getelementptr %struct.ItemPointerData, ptr %175, i64 %177 - %179 = getelementptr i8, ptr %178, i64 -6 - %180 = tail call i32 @ItemPointerCompare(ptr noundef %169, ptr noundef %179) #7 - %181 = icmp sgt i32 %180, 0 - %.78 = zext i1 %181 to i32 + %171 = zext i16 %.val.i.i.i to i64 + %172 = shl nuw nsw i64 %171, 16 + %173 = getelementptr inbounds nuw i8, ptr %27, i64 %172 + %174 = getelementptr i8, ptr %27, i64 2 + %.val2.i.i.i = load i16, ptr %174, align 2 + %175 = zext i16 %.val2.i.i.i to i64 + %176 = getelementptr inbounds nuw i8, ptr %173, i64 %175 + %177 = and i16 %.val.i83, 4095 + %178 = zext nneg i16 %177 to i64 + %179 = getelementptr %struct.ItemPointerData, ptr %176, i64 %178 + %180 = getelementptr i8, ptr %179, i64 -6 + %181 = tail call i32 @ItemPointerCompare(ptr noundef %170, ptr noundef %180) #7 + %182 = icmp sgt i32 %181, 0 + %.78 = zext i1 %182 to i32 br label %.thread104 -.thread104: ; preds = %117, %120, %163, %BTreeTupleGetHeapTID.exit.thread, %105, %103, %BTreeTupleGetMaxHeapTID.exit, %160, %BTreeTupleIsPosting.exit, %156, %._crit_edge, %14, %159 - %.0 = phi i32 [ 0, %159 ], [ 1, %14 ], [ 1, %._crit_edge ], [ 1, %156 ], [ %161, %BTreeTupleIsPosting.exit ], [ %161, %160 ], [ %.78, %BTreeTupleGetMaxHeapTID.exit ], [ %.77, %105 ], [ %.76, %103 ], [ 1, %BTreeTupleGetHeapTID.exit.thread ], [ %161, %163 ], [ 1, %117 ], [ %.062, %120 ] +.thread104: ; preds = %118, %121, %164, %BTreeTupleGetHeapTID.exit.thread, %106, %104, %BTreeTupleGetMaxHeapTID.exit, %161, %BTreeTupleIsPosting.exit, %157, %._crit_edge, %14, %160 + %.0 = phi i32 [ 0, %159 ], [ 1, %14 ], [ 1, %._crit_edge ], [ 1, %156 ], [ %162, %BTreeTupleIsPosting.exit ], [ %162, %160 ], [ %.78, %BTreeTupleGetMaxHeapTID.exit ], [ %.77, %105 ], [ %.76, %103 ], [ 1, %BTreeTupleGetHeapTID.exit.thread ], [ %162, %163 ], [ 1, %117 ], [ %.062, %120 ] ret i32 %.0 } diff --git a/bench/postgres/optimized/nbtutils.ll b/bench/postgres/optimized/nbtutils.ll index d4b0b826b07..de5e5f3dc96 100644 --- a/bench/postgres/optimized/nbtutils.ll +++ b/bench/postgres/optimized/nbtutils.ll @@ -2408,7 +2408,7 @@ BufferGetPage.exit91: ; preds = %30, %36 46: ; preds = %BufferGetPage.exit91 %47 = load ptr, ptr %8, align 8 tail call void @_bt_relbuf(ptr noundef %47, i32 noundef %28) #14 - br label %128 + br label %129 BufferGetPage.exit: ; preds = %.thread, %19, %13 %.0 = phi ptr [ %18, %13 ], [ %24, %19 ], [ %.0.i.i90, %.thread ] @@ -2459,113 +2459,113 @@ BufferGetPage.exit: ; preds = %.thread, %19, %13 br i1 %or.cond, label %.loopexit, label %.lr.ph123 .lr.ph123: ; preds = %66 - %75 = trunc nuw nsw i64 %.pre to i32 - br label %76 + %76 = trunc nuw nsw i64 %.pre to i32 + br label %77 -76: ; preds = %.lr.ph123, %118 - %.075122 = phi i16 [ %73, %.lr.ph123 ], [ %119, %118 ] +77: ; preds = %.lr.ph123, %119 + %.075122 = phi i16 [ %73, %.lr.ph123 ], [ %120, %118 ] %.077121 = phi ptr [ %71, %.lr.ph123 ], [ %.5102, %118 ] - %77 = zext i16 %.075122 to i64 - %78 = add nsw i64 %77, -1 - %79 = getelementptr inbounds [0 x %struct.ItemIdData], ptr %65, i64 0, i64 %78 - %.val = load i32, ptr %79, align 4 - %80 = and i32 %.val, 32767 - %81 = zext nneg i32 %80 to i64 - %82 = getelementptr inbounds nuw i8, ptr %.0, i64 %81 - %83 = getelementptr inbounds nuw i8, ptr %82, i64 6 - %84 = load i16, ptr %83, align 2 - %85 = and i16 %84, 8192 - %86 = icmp eq i16 %85, 0 - br i1 %86, label %BTreeTupleIsPosting.exit.thread, label %BTreeTupleIsPosting.exit - -BTreeTupleIsPosting.exit: ; preds = %76 - %87 = getelementptr i8, ptr %82, i64 4 - %.val.i = load i16, ptr %87, align 2 - %88 = and i16 %.val.i, 8192 - %.not111 = icmp eq i16 %88, 0 - br i1 %.not111, label %BTreeTupleIsPosting.exit.thread, label %89 - -89: ; preds = %BTreeTupleIsPosting.exit - %90 = and i16 %.val.i, 4095 - %91 = zext nneg i16 %90 to i32 - %.not129 = icmp eq i16 %90, 0 + %78 = zext i16 %.075122 to i64 + %79 = add nsw i64 %78, -1 + %80 = getelementptr inbounds [0 x %struct.ItemIdData], ptr %65, i64 0, i64 %79 + %.val = load i32, ptr %80, align 4 + %81 = and i32 %.val, 32767 + %82 = zext nneg i32 %81 to i64 + %83 = getelementptr inbounds nuw i8, ptr %.0, i64 %82 + %84 = getelementptr inbounds nuw i8, ptr %83, i64 6 + %85 = load i16, ptr %84, align 2 + %86 = and i16 %85, 8192 + %87 = icmp eq i16 %86, 0 + br i1 %87, label %BTreeTupleIsPosting.exit.thread, label %BTreeTupleIsPosting.exit + +BTreeTupleIsPosting.exit: ; preds = %77 + %88 = getelementptr i8, ptr %83, i64 4 + %.val.i = load i16, ptr %88, align 2 + %89 = and i16 %.val.i, 8192 + %.not111 = icmp eq i16 %89, 0 + br i1 %.not111, label %BTreeTupleIsPosting.exit.thread, label %90 + +90: ; preds = %BTreeTupleIsPosting.exit + %91 = and i16 %.val.i, 4095 + %92 = zext nneg i16 %91 to i32 + %.not129 = icmp eq i16 %91, 0 br i1 %.not129, label %._crit_edge, label %.lr.ph -.lr.ph: ; preds = %89 - %92 = getelementptr i8, ptr %82, i64 2 - %wide.trip.count = zext nneg i16 %90 to i64 - br label %93 +.lr.ph: ; preds = %90 + %93 = getelementptr i8, ptr %83, i64 2 + %wide.trip.count = zext nneg i16 %91 to i64 + br label %94 -93: ; preds = %.lr.ph, %111 +94: ; preds = %.lr.ph, %112 %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %111 ] - %.069114 = phi i32 [ %75, %.lr.ph ], [ %.1.ph, %111 ] + %.069114 = phi i32 [ %76, %.lr.ph ], [ %.1.ph, %111 ] %.178113 = phi ptr [ %.077121, %.lr.ph ], [ %.380.ph, %111 ] - %.val.i.i = load i16, ptr %82, align 2 - %.val2.i.i = load i16, ptr %92, align 2 - %94 = zext i16 %.val.i.i to i64 - %95 = shl nuw nsw i64 %94, 16 - %96 = zext i16 %.val2.i.i to i64 - %97 = getelementptr inbounds nuw i8, ptr %82, i64 %95 - %98 = getelementptr inbounds nuw i8, ptr %97, i64 %96 - %99 = getelementptr inbounds nuw %struct.ItemPointerData, ptr %98, i64 %indvars.iv - %100 = tail call zeroext i1 @ItemPointerEquals(ptr noundef nonnull %99, ptr noundef %.178113) #14 - br i1 %100, label %101, label %._crit_edge.loopexit - -101: ; preds = %93 - %102 = icmp slt i32 %.069114, %5 - br i1 %102, label %103, label %111 - -103: ; preds = %101 - %104 = load ptr, ptr %62, align 8 - %105 = add nsw i32 %.069114, 1 - %106 = sext i32 %.069114 to i64 - %107 = getelementptr inbounds i32, ptr %104, i64 %106 - %108 = load i32, ptr %107, align 4 - %109 = sext i32 %108 to i64 - %110 = getelementptr inbounds [1358 x %struct.BTScanPosItem], ptr %63, i64 0, i64 %109 - br label %111 - -111: ; preds = %103, %101 - %.380.ph = phi ptr [ %.178113, %101 ], [ %110, %103 ] - %.1.ph = phi i32 [ %.069114, %101 ], [ %105, %103 ] + %.val.i.i = load i16, ptr %83, align 2 + %.val2.i.i = load i16, ptr %93, align 2 + %95 = zext i16 %.val.i.i to i64 + %96 = shl nuw nsw i64 %95, 16 + %97 = zext i16 %.val2.i.i to i64 + %98 = getelementptr inbounds nuw i8, ptr %83, i64 %96 + %99 = getelementptr inbounds nuw i8, ptr %98, i64 %97 + %100 = getelementptr inbounds nuw %struct.ItemPointerData, ptr %99, i64 %indvars.iv + %101 = tail call zeroext i1 @ItemPointerEquals(ptr noundef nonnull %100, ptr noundef %.178113) #14 + br i1 %101, label %102, label %._crit_edge.loopexit + +102: ; preds = %94 + %103 = icmp slt i32 %.069114, %5 + br i1 %103, label %104, label %112 + +104: ; preds = %102 + %105 = load ptr, ptr %62, align 8 + %106 = add nsw i32 %.069114, 1 + %107 = sext i32 %.069114 to i64 + %108 = getelementptr inbounds i32, ptr %105, i64 %107 + %109 = load i32, ptr %108, align 4 + %110 = sext i32 %109 to i64 + %111 = getelementptr inbounds [1358 x %struct.BTScanPosItem], ptr %63, i64 0, i64 %110 + br label %112 + +112: ; preds = %104, %102 + %.380.ph = phi ptr [ %.178113, %101 ], [ %111, %103 ] + %.1.ph = phi i32 [ %.069114, %101 ], [ %106, %103 ] %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 %._crit_edge.thread, label %93, !llvm.loop !17 + br i1 %exitcond.not, label %._crit_edge.thread, label %94, !llvm.loop !17 -._crit_edge.loopexit: ; preds = %93 - %112 = trunc nuw nsw i64 %indvars.iv to i32 +._crit_edge.loopexit: ; preds = %94 + %113 = trunc nuw nsw i64 %indvars.iv to i32 br label %._crit_edge -._crit_edge: ; preds = %._crit_edge.loopexit, %89 +._crit_edge: ; preds = %._crit_edge.loopexit, %90 %.178.lcssa = phi ptr [ %.077121, %89 ], [ %.178113, %._crit_edge.loopexit ] - %.067.lcssa = phi i32 [ 0, %89 ], [ %112, %._crit_edge.loopexit ] - %113 = icmp eq i32 %.067.lcssa, %91 - br i1 %113, label %._crit_edge.thread, label %118 + %.067.lcssa = phi i32 [ 0, %89 ], [ %113, %._crit_edge.loopexit ] + %114 = icmp eq i32 %.067.lcssa, %92 + br i1 %114, label %._crit_edge.thread, label %119 -BTreeTupleIsPosting.exit.thread: ; preds = %76, %BTreeTupleIsPosting.exit - %114 = tail call zeroext i1 @ItemPointerEquals(ptr noundef nonnull %82, ptr noundef %.077121) #14 - br i1 %114, label %._crit_edge.thread, label %118 +BTreeTupleIsPosting.exit.thread: ; preds = %77, %BTreeTupleIsPosting.exit + %115 = tail call zeroext i1 @ItemPointerEquals(ptr noundef nonnull %83, ptr noundef %.077121) #14 + br i1 %115, label %._crit_edge.thread, label %119 -._crit_edge.thread: ; preds = %111, %._crit_edge, %BTreeTupleIsPosting.exit.thread +._crit_edge.thread: ; preds = %112, %._crit_edge, %BTreeTupleIsPosting.exit.thread %.5103 = phi ptr [ %.178.lcssa, %._crit_edge ], [ %.077121, %BTreeTupleIsPosting.exit.thread ], [ %.380.ph, %111 ] - %115 = load i32, ptr %79, align 4 - %116 = and i32 %115, 98304 - %117 = icmp eq i32 %116, 98304 - br i1 %117, label %118, label %.loopexit.thread + %116 = load i32, ptr %80, align 4 + %117 = and i32 %116, 98304 + %118 = icmp eq i32 %117, 98304 + br i1 %118, label %119, label %.loopexit.thread -118: ; preds = %BTreeTupleIsPosting.exit.thread, %._crit_edge.thread, %._crit_edge +119: ; preds = %BTreeTupleIsPosting.exit.thread, %._crit_edge.thread, %._crit_edge %.5102 = phi ptr [ %.178.lcssa, %._crit_edge ], [ %.5103, %._crit_edge.thread ], [ %.077121, %BTreeTupleIsPosting.exit.thread ] - %119 = add i16 %.075122, 1 - %.not = icmp ugt i16 %119, %.0.i - br i1 %.not, label %.loopexit, label %76 + %120 = add i16 %.075122, 1 + %.not = icmp ugt i16 %120, %.0.i + br i1 %.not, label %.loopexit, label %77 -.loopexit: ; preds = %118, %66 +.loopexit: ; preds = %119, %66 %exitcond136.not = icmp eq i64 %.pre, %wide.trip.count135 br i1 %exitcond136.not, label %._crit_edge127, label %66, !llvm.loop !18 .loopexit.thread: ; preds = %._crit_edge.thread - %120 = or i32 %115, 98304 - store i32 %120, ptr %79, align 4 + %121 = or i32 %116, 98304 + store i32 %121, ptr %80, align 4 %exitcond136.not141 = icmp eq i64 %.pre, %wide.trip.count135 br i1 %exitcond136.not141, label %._crit_edge127.thread, label %.outer, !llvm.loop !18 @@ -2573,22 +2573,22 @@ BTreeTupleIsPosting.exit.thread: ; preds = %76, %BTreeTupleIsPo br i1 %.072124.ph, label %._crit_edge127.thread, label %.critedge ._crit_edge127.thread: ; preds = %.loopexit.thread, %._crit_edge127 - %121 = getelementptr inbounds nuw i8, ptr %51, i64 12 - %122 = load i16, ptr %121, align 4 - %123 = or i16 %122, 64 - store i16 %123, ptr %121, align 4 - %124 = load i32, ptr %6, align 8 - tail call void @MarkBufferDirtyHint(i32 noundef %124, i1 noundef zeroext true) #14 + %122 = getelementptr inbounds nuw i8, ptr %51, i64 12 + %123 = load i16, ptr %122, align 4 + %124 = or i16 %123, 64 + store i16 %124, ptr %122, align 4 + %125 = load i32, ptr %6, align 8 + tail call void @MarkBufferDirtyHint(i32 noundef %125, i1 noundef zeroext true) #14 br label %.critedge .critedge: ; preds = %BufferGetPage.exit, %._crit_edge127.thread, %._crit_edge127 - %125 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %126 = load ptr, ptr %125, align 8 - %127 = load i32, ptr %6, align 8 - tail call void @_bt_unlockbuf(ptr noundef %126, i32 noundef %127) #14 - br label %128 + %126 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %127 = load ptr, ptr %126, align 8 + %128 = load i32, ptr %6, align 8 + tail call void @_bt_unlockbuf(ptr noundef %127, i32 noundef %128) #14 + br label %129 -128: ; preds = %46, %.critedge +129: ; preds = %46, %.critedge ret void } @@ -3284,85 +3284,85 @@ BTreeTupleIsPosting.exit61.thread: ; preds = %.thread, %.thread90 %42 = load i32, ptr %41, align 4 %43 = icmp eq i32 %42, 0 %44 = select i1 %43, i16 1, i16 2 - br i1 %.not47, label %54, label %45 + br i1 %.not47, label %55, label %45 -45: ; preds = %BTreeTupleIsPosting.exit61.thread +46: ; preds = %BTreeTupleIsPosting.exit61.thread %.not48 = icmp ugt i16 %44, %3 - br i1 %.not48, label %51, label %46 + br i1 %.not48, label %52, label %47 -46: ; preds = %45 +47: ; preds = %46 br i1 %29, label %BTreeTupleIsPivot.exit65.thread, label %BTreeTupleIsPivot.exit65 -BTreeTupleIsPivot.exit65.thread: ; preds = %46 - %47 = icmp eq i32 %37, %38 +BTreeTupleIsPivot.exit65.thread: ; preds = %47 + %48 = icmp eq i32 %37, %38 br label %BTreeTupleIsPivot.exit69.thread -BTreeTupleIsPivot.exit65: ; preds = %46 - %48 = getelementptr i8, ptr %25, i64 4 - %.val.i62 = load i16, ptr %48, align 2 +BTreeTupleIsPivot.exit65: ; preds = %47 + %49 = getelementptr i8, ptr %25, i64 4 + %.val.i62 = load i16, ptr %49, align 2 %.val.i62.fr = freeze i16 %.val.i62 - %49 = and i16 %.val.i62.fr, 8192 - %.not.i63 = icmp ne i16 %49, 0 - %50 = icmp eq i32 %37, %38 - %spec.select = select i1 %.not.i63, i1 %50, i1 false + %50 = and i16 %.val.i62.fr, 8192 + %.not.i63 = icmp ne i16 %50, 0 + %51 = icmp eq i32 %37, %38 + %spec.select = select i1 %.not.i63, i1 %51, i1 false br label %BTreeTupleIsPivot.exit69.thread -51: ; preds = %45 - br i1 %1, label %64, label %52 +52: ; preds = %46 + br i1 %1, label %65, label %53 -52: ; preds = %51 - %53 = icmp eq i32 %37, %39 +53: ; preds = %52 + %54 = icmp eq i32 %37, %39 br label %BTreeTupleIsPivot.exit69.thread -54: ; preds = %BTreeTupleIsPosting.exit61.thread - %55 = icmp eq i16 %44, %3 - br i1 %55, label %56, label %61 +55: ; preds = %BTreeTupleIsPosting.exit61.thread + %56 = icmp eq i16 %44, %3 + br i1 %56, label %57, label %62 -56: ; preds = %54 - %57 = icmp eq i32 %37, 0 - %brmerge102 = select i1 %1, i1 true, i1 %57 +57: ; preds = %55 + %58 = icmp eq i32 %37, 0 + %brmerge102 = select i1 %1, i1 true, i1 %58 %not. = xor i1 %1, true - %.mux = select i1 %not., i1 true, i1 %57 - br i1 %brmerge102, label %BTreeTupleIsPivot.exit69.thread, label %58 + %.mux = select i1 %not., i1 true, i1 %58 + br i1 %brmerge102, label %BTreeTupleIsPivot.exit69.thread, label %59 -58: ; preds = %56 - %59 = getelementptr i8, ptr %25, i64 4 - %.val53 = load i16, ptr %59, align 2 - %60 = icmp eq i16 %.val53, 1 +59: ; preds = %57 + %60 = getelementptr i8, ptr %25, i64 4 + %.val53 = load i16, ptr %60, align 2 + %61 = icmp eq i16 %.val53, 1 br label %BTreeTupleIsPivot.exit69.thread -61: ; preds = %54 - br i1 %1, label %64, label %62 +62: ; preds = %55 + br i1 %1, label %65, label %63 -62: ; preds = %61 - %63 = icmp eq i32 %37, %39 +63: ; preds = %62 + %64 = icmp eq i32 %37, %39 br label %BTreeTupleIsPivot.exit69.thread -64: ; preds = %61, %51 +65: ; preds = %62, %52 br i1 %29, label %BTreeTupleIsPivot.exit69.thread, label %BTreeTupleIsPivot.exit69 -BTreeTupleIsPivot.exit69: ; preds = %64 - %65 = getelementptr i8, ptr %25, i64 4 - %.val.i66 = load i16, ptr %65, align 2 - %66 = and i16 %.val.i66, 8192 - %.not.i67 = icmp eq i16 %66, 0 +BTreeTupleIsPivot.exit69: ; preds = %65 + %66 = getelementptr i8, ptr %25, i64 4 + %.val.i66 = load i16, ptr %66, align 2 + %67 = and i16 %.val.i66, 8192 + %.not.i67 = icmp eq i16 %67, 0 br i1 %.not.i67, label %BTreeTupleIsPosting.exit72, label %BTreeTupleIsPivot.exit69.thread BTreeTupleIsPosting.exit72: ; preds = %BTreeTupleIsPivot.exit69 - %67 = tail call fastcc ptr @BTreeTupleGetHeapTID(ptr noundef nonnull %25) - %.not49 = icmp eq ptr %67, null + %68 = tail call fastcc ptr @BTreeTupleGetHeapTID(ptr noundef nonnull %25) + %.not49 = icmp eq ptr %68, null %.not50 = icmp eq i32 %37, %39 %or.cond = select i1 %.not49, i1 true, i1 %.not50 - br i1 %or.cond, label %68, label %BTreeTupleIsPivot.exit69.thread + br i1 %or.cond, label %69, label %BTreeTupleIsPivot.exit69.thread -68: ; preds = %BTreeTupleIsPosting.exit72 - %69 = icmp sgt i32 %37, 0 - %70 = icmp sle i32 %37, %39 - %71 = select i1 %69, i1 %70, i1 false +69: ; preds = %BTreeTupleIsPosting.exit72 + %70 = icmp sgt i32 %37, 0 + %71 = icmp sle i32 %37, %39 + %72 = select i1 %70, i1 %71, i1 false br label %BTreeTupleIsPivot.exit69.thread -BTreeTupleIsPivot.exit69.thread: ; preds = %56, %.thread90, %BTreeTupleIsPivot.exit65, %64, %BTreeTupleIsPivot.exit65.thread, %BTreeTupleIsPosting.exit72, %BTreeTupleIsPivot.exit69, %58, %4, %68, %62, %52 - %.0 = phi i1 [ %71, %68 ], [ %53, %52 ], [ %63, %62 ], [ true, %4 ], [ %60, %58 ], [ false, %BTreeTupleIsPivot.exit69 ], [ false, %BTreeTupleIsPosting.exit72 ], [ %47, %BTreeTupleIsPivot.exit65.thread ], [ false, %64 ], [ %spec.select, %BTreeTupleIsPivot.exit65 ], [ false, %.thread90 ], [ %.mux, %56 ] +BTreeTupleIsPivot.exit69.thread: ; preds = %57, %.thread90, %BTreeTupleIsPivot.exit65, %65, %BTreeTupleIsPivot.exit65.thread, %BTreeTupleIsPosting.exit72, %BTreeTupleIsPivot.exit69, %59, %4, %69, %63, %53 + %.0 = phi i1 [ %72, %68 ], [ %54, %52 ], [ %64, %62 ], [ true, %4 ], [ %61, %58 ], [ false, %BTreeTupleIsPivot.exit69 ], [ false, %BTreeTupleIsPosting.exit72 ], [ %48, %BTreeTupleIsPivot.exit65.thread ], [ false, %64 ], [ %spec.select, %BTreeTupleIsPivot.exit65 ], [ false, %.thread90 ], [ %.mux, %56 ] ret i1 %.0 } diff --git a/bench/postgres/optimized/network.ll b/bench/postgres/optimized/network.ll index a605030b907..e67b6dbc12a 100644 --- a/bench/postgres/optimized/network.ll +++ b/bench/postgres/optimized/network.ll @@ -628,37 +628,37 @@ define dso_local noundef i64 @inet_to_cidr(ptr noundef readonly captures(none) % %.lhs.trunc = add nuw nsw i64 %42, 7 %.zext = lshr i64 %.lhs.trunc, 3 tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %37, ptr nonnull align 1 %41, i64 %.zext, i1 false) - %43 = and i32 %11, 7 - %.not33.i = icmp eq i32 %43, 0 - br i1 %.not33.i, label %cidr_set_masklen_internal.exit, label %44 - -44: ; preds = %33 - %45 = ashr exact i32 -256, %43 - %46 = load i8, ptr %20, align 1 - %47 = and i8 %46, 1 - %.not34.i = icmp eq i8 %47, 0 - %48 = select i1 %.not34.i, ptr %30, ptr %29 - %49 = getelementptr inbounds nuw i8, ptr %48, i64 2 - %50 = lshr i32 %11, 3 - %51 = zext nneg i32 %50 to i64 - %52 = getelementptr inbounds nuw [16 x i8], ptr %49, i64 0, i64 %51 - %53 = load i8, ptr %52, align 1 - %54 = trunc nsw i32 %45 to i8 - %55 = and i8 %53, %54 - store i8 %55, ptr %52, align 1 + %44 = and i32 %11, 7 + %.not33.i = icmp eq i32 %44, 0 + br i1 %.not33.i, label %cidr_set_masklen_internal.exit, label %45 + +45: ; preds = %33 + %46 = ashr exact i32 -256, %44 + %47 = load i8, ptr %20, align 1 + %48 = and i8 %47, 1 + %.not34.i = icmp eq i8 %48, 0 + %49 = select i1 %.not34.i, ptr %30, ptr %29 + %50 = getelementptr inbounds nuw i8, ptr %49, i64 2 + %51 = lshr i32 %11, 3 + %52 = zext nneg i32 %51 to i64 + %53 = getelementptr inbounds nuw [16 x i8], ptr %50, i64 0, i64 %52 + %54 = load i8, ptr %53, align 1 + %55 = trunc nsw i32 %46 to i8 + %56 = and i8 %54, %55 + store i8 %56, ptr %53, align 1 br label %cidr_set_masklen_internal.exit -cidr_set_masklen_internal.exit: ; preds = %19, %33, %44 - %56 = load i8, ptr %20, align 1 - %57 = and i8 %56, 1 - %.not35.i = icmp eq i8 %57, 0 - %58 = select i1 %.not35.i, ptr %30, ptr %29 - %59 = load i8, ptr %58, align 1 - %60 = icmp eq i8 %59, 2 - %61 = select i1 %60, i32 40, i32 88 - store i32 %61, ptr %20, align 4 - %62 = ptrtoint ptr %20 to i64 - ret i64 %62 +cidr_set_masklen_internal.exit: ; preds = %19, %33, %45 + %57 = load i8, ptr %20, align 1 + %58 = and i8 %57, 1 + %.not35.i = icmp eq i8 %58, 0 + %59 = select i1 %.not35.i, ptr %30, ptr %29 + %60 = load i8, ptr %59, align 1 + %61 = icmp eq i8 %60, 2 + %62 = select i1 %61, i32 40, i32 88 + store i32 %62, ptr %20, align 4 + %63 = ptrtoint ptr %20 to i64 + ret i64 %63 } ; Function Attrs: cold @@ -2353,7 +2353,7 @@ define dso_local noundef i64 @network_broadcast(ptr noundef readonly captures(no %21 = getelementptr inbounds nuw i8, ptr %6, i64 4 %22 = select i1 %.not43, ptr %21, ptr %20 %23 = getelementptr inbounds nuw i8, ptr %22, i64 2 - %wide.trip.count52 = select i1 %13, i64 3, i64 15 + %wide.trip.count = select i1 %13, i64 3, i64 15 br label %24 24: ; preds = %1, %33 @@ -2384,7 +2384,7 @@ define dso_local noundef i64 @network_broadcast(ptr noundef readonly captures(no %37 = getelementptr inbounds nuw i8, ptr %23, i64 %indvars.iv store i8 %36, ptr %37, align 1 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %exitcond.not = icmp eq i64 %wide.trip.count52, %indvars.iv + %exitcond.not = icmp eq i64 %wide.trip.count, %indvars.iv br i1 %exitcond.not, label %38, label %24, !llvm.loop !26 38: ; preds = %33 @@ -2954,7 +2954,7 @@ define dso_local double @convert_network_to_scalar(i64 noundef %0, i32 noundef % %11 = icmp eq i8 %10, 2 %12 = uitofp i8 %10 to double %13 = getelementptr inbounds nuw i8, ptr %9, i64 2 - %wide.trip.count49 = select i1 %11, i64 3, i64 4 + %wide.trip.count = select i1 %11, i64 3, i64 4 br label %14 14: ; preds = %4, %14 @@ -2966,7 +2966,7 @@ define dso_local double @convert_network_to_scalar(i64 noundef %0, i32 noundef % %18 = uitofp i8 %17 to double %19 = fadd double %15, %18 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %exitcond.not = icmp eq i64 %wide.trip.count49, %indvars.iv + %exitcond.not = icmp eq i64 %wide.trip.count, %indvars.iv br i1 %exitcond.not, label %.loopexit, label %14, !llvm.loop !29 20: ; preds = %3 diff --git a/bench/qemu/optimized/virtio.ll b/bench/qemu/optimized/virtio.ll index 7347ef88fa6..95457f0b354 100644 --- a/bench/qemu/optimized/virtio.ll +++ b/bench/qemu/optimized/virtio.ll @@ -10169,7 +10169,7 @@ define internal zeroext i1 @virtio_device_endian_needed(ptr noundef readonly cap %.val = load i64, ptr %6, align 8 %7 = and i64 %.val, 4294967296 %.not6 = icmp eq i64 %7, 0 - br i1 %.not6, label %8, label %11 + br i1 %.not6, label %8, label %12 8: ; preds = %5 %9 = tail call zeroext i1 @target_words_bigendian() #24 @@ -10177,12 +10177,12 @@ define internal zeroext i1 @virtio_device_endian_needed(ptr noundef readonly cap %10 = icmp ne i8 %..i7, %3 br label %13 -11: ; preds = %5 - %12 = icmp ne i8 %3, 1 - br label %13 +12: ; preds = %5 + %13 = icmp ne i8 %3, 1 + br label %14 -13: ; preds = %11, %8 - %.0 = phi i1 [ %12, %11 ], [ %10, %8 ] +14: ; preds = %12, %8 + %.0 = phi i1 [ %13, %11 ], [ %10, %8 ] ret i1 %.0 } diff --git a/bench/redis/optimized/bitops.ll b/bench/redis/optimized/bitops.ll index efc0e69db7d..9e159bc8bbf 100644 --- a/bench/redis/optimized/bitops.ll +++ b/bench/redis/optimized/bitops.ll @@ -290,7 +290,7 @@ define dso_local i64 @redisBitpos(ptr noundef %0, i64 noundef %1, i32 noundef %2 %8 = sext i1 %.not to i8 br label %9 -9: ; preds = %.lr.ph, %11 +9:; preds = %.lr.ph, %11 %.04071 = phi i64 [ 0, %.lr.ph ], [ %14, %11 ] %.04470 = phi ptr [ %0, %.lr.ph ], [ %12, %11 ] %.05069 = phi i64 [ %1, %.lr.ph ], [ %13, %11 ] diff --git a/bench/spike/optimized/f16_roundToInt.ll b/bench/spike/optimized/f16_roundToInt.ll index ed0b0dca831..15e0a3d3f6e 100644 --- a/bench/spike/optimized/f16_roundToInt.ll +++ b/bench/spike/optimized/f16_roundToInt.ll @@ -16,7 +16,7 @@ define i16 @f16_roundToInt(i16 %0, i8 noundef zeroext %1, i1 noundef zeroext %2) 8: ; preds = %3 %.mask = and i16 %0, 32767 %.not54 = icmp eq i16 %.mask, 0 - br i1 %.not54, label %59, label %9 + br i1 %.not54, label %60, label %9 9: ; preds = %8 br i1 %2, label %10, label %14 @@ -42,25 +42,25 @@ define i16 @f16_roundToInt(i16 %0, i8 noundef zeroext %1, i1 noundef zeroext %2) %18 = icmp ne i64 %17, 0 %19 = icmp eq i16 %6, 14 %or.cond = and i1 %18, %19 - br i1 %or.cond, label %21, label %57 + br i1 %or.cond, label %21, label %58 20: ; preds = %14 %.old3 = icmp eq i16 %6, 14 - br i1 %.old3, label %21, label %57 + br i1 %.old3, label %21, label %58 21: ; preds = %16, %20 %22 = or disjoint i64 %15, 15360 - br label %57 + br label %58 23: ; preds = %14 %.not56 = icmp eq i64 %15, 0 %spec.store.select = select i1 %.not56, i64 0, i64 48128 - br label %57 + br label %58 24: ; preds = %14 %.not55 = icmp eq i64 %15, 0 %spec.store.select1 = select i1 %.not55, i64 15360, i64 32768 - br label %57 + br label %58 25: ; preds = %3 %26 = icmp samesign ugt i16 %6, 24 @@ -71,11 +71,11 @@ define i16 @f16_roundToInt(i16 %0, i8 noundef zeroext %1, i1 noundef zeroext %2) %29 = and i64 %4, 1023 %.not53 = icmp eq i64 %29, 0 %or.cond57 = or i1 %28, %.not53 - br i1 %or.cond57, label %59, label %30 + br i1 %or.cond57, label %60, label %30 30: ; preds = %27 %31 = tail call i64 @softfloat_propagateNaNF16UI(i64 noundef %4, i64 noundef 0) #3 - br label %57 + br label %58 32: ; preds = %25 %narrow = sub nuw nsw i16 25, %6 @@ -90,50 +90,50 @@ define i16 @f16_roundToInt(i16 %0, i8 noundef zeroext %1, i1 noundef zeroext %2) 36: ; preds = %32 %37 = lshr exact i64 %34, 1 %38 = add nuw nsw i64 %37, %4 - br label %50 + br label %51 39: ; preds = %32 %40 = lshr exact i64 %34, 1 %41 = add nuw nsw i64 %40, %4 %42 = and i64 %41, %35 %.not51 = icmp eq i64 %42, 0 - br i1 %.not51, label %43, label %50 + br i1 %.not51, label %43, label %51 43: ; preds = %39 %44 = xor i64 %34, -1 %45 = and i64 %41, %44 - br label %50 + br label %51 46: ; preds = %32 %.not = icmp sgt i16 %0, -1 - %47 = select i1 %.not, i8 3, i8 2 - %48 = icmp eq i8 %47, %1 - %49 = select i1 %48, i64 %35, i64 0 - %spec.select = add nuw nsw i64 %49, %4 - br label %50 + %48 = select i1 %.not, i8 3, i8 2 + %49 = icmp eq i8 %48, %1 + %50 = select i1 %49, i64 %35, i64 0 + %spec.select = add nuw nsw i64 %50, %4 + br label %51 -50: ; preds = %46, %43, %39, %36 +51: ; preds = %46, %43, %39, %36 %.1 = phi i64 [ %38, %36 ], [ %41, %39 ], [ %45, %43 ], [ %spec.select, %46 ] - %51 = sub nsw i64 0, %34 - %52 = and i64 %.1, %51 - %.not52 = icmp ne i64 %52, %4 + %52 = sub nsw i64 0, %34 + %53 = and i64 %.1, %52 + %.not52 = icmp ne i64 %53, %4 %or.cond59.not = select i1 %2, i1 %.not52, i1 false - br i1 %or.cond59.not, label %53, label %57 - -53: ; preds = %50 - %54 = tail call align 1 ptr @llvm.threadlocal.address.p0(ptr align 1 @softfloat_exceptionFlags) - %55 = load i8, ptr %54, align 1, !tbaa !3 - %56 = or i8 %55, 1 - store i8 %56, ptr %54, align 1, !tbaa !3 - br label %57 - -57: ; preds = %50, %53, %14, %23, %24, %16, %21, %20, %30 - %.0 = phi i64 [ %15, %14 ], [ %22, %21 ], [ %15, %16 ], [ %15, %20 ], [ %spec.store.select, %23 ], [ %spec.store.select1, %24 ], [ %31, %30 ], [ %52, %53 ], [ %52, %50 ] - %58 = trunc i64 %.0 to i16 - br label %59 - -59: ; preds = %27, %8, %57 - %.sroa.045.0 = phi i16 [ %58, %57 ], [ %0, %8 ], [ %0, %27 ] + br i1 %or.cond59.not, label %54, label %58 + +54: ; preds = %51 + %55 = tail call align 1 ptr @llvm.threadlocal.address.p0(ptr align 1 @softfloat_exceptionFlags) + %56 = load i8, ptr %55, align 1, !tbaa !3 + %57 = or i8 %56, 1 + store i8 %57, ptr %55, align 1, !tbaa !3 + br label %58 + +58: ; preds = %51, %54, %14, %23, %24, %16, %21, %20, %30 + %.0 = phi i64 [ %15, %14 ], [ %22, %21 ], [ %15, %16 ], [ %15, %20 ], [ %spec.store.select, %23 ], [ %spec.store.select1, %24 ], [ %31, %30 ], [ %53, %53 ], [ %53, %50 ] + %59 = trunc i64 %.0 to i16 + br label %60 + +60: ; preds = %27, %8, %58 + %.sroa.045.0 = phi i16 [ %59, %57 ], [ %0, %8 ], [ %0, %27 ] ret i16 %.sroa.045.0 } diff --git a/bench/spike/optimized/f64_roundToInt.ll b/bench/spike/optimized/f64_roundToInt.ll index b69c08b92f0..ae4d7cead11 100644 --- a/bench/spike/optimized/f64_roundToInt.ll +++ b/bench/spike/optimized/f64_roundToInt.ll @@ -15,7 +15,7 @@ define i64 @f64_roundToInt(i64 %0, i8 noundef zeroext %1, i1 noundef zeroext %2) 7: ; preds = %3 %8 = and i64 %0, 9223372036854775807 %.not53 = icmp eq i64 %8, 0 - br i1 %.not53, label %57, label %9 + br i1 %.not53, label %58, label %9 9: ; preds = %7 br i1 %2, label %10, label %14 @@ -41,25 +41,25 @@ define i64 @f64_roundToInt(i64 %0, i8 noundef zeroext %1, i1 noundef zeroext %2) %18 = icmp ne i64 %17, 0 %19 = icmp eq i64 %5, 1022 %or.cond = and i1 %18, %19 - br i1 %or.cond, label %21, label %57 + br i1 %or.cond, label %21, label %58 20: ; preds = %14 %.old2 = icmp eq i64 %5, 1022 - br i1 %.old2, label %21, label %57 + br i1 %.old2, label %21, label %58 21: ; preds = %16, %20 %22 = or disjoint i64 %15, 4607182418800017408 - br label %57 + br label %58 23: ; preds = %14 %.not55 = icmp eq i64 %15, 0 %spec.store.select = select i1 %.not55, i64 0, i64 -4616189618054758400 - br label %57 + br label %58 24: ; preds = %14 %.not54 = icmp eq i64 %15, 0 %spec.store.select1 = select i1 %.not54, i64 4607182418800017408, i64 -9223372036854775808 - br label %57 + br label %58 25: ; preds = %3 %26 = icmp samesign ugt i64 %5, 1074 @@ -70,11 +70,11 @@ define i64 @f64_roundToInt(i64 %0, i8 noundef zeroext %1, i1 noundef zeroext %2) %29 = and i64 %0, 4503599627370495 %.not52 = icmp eq i64 %29, 0 %or.cond56 = or i1 %.not52, %28 - br i1 %or.cond56, label %57, label %30 + br i1 %or.cond56, label %58, label %30 30: ; preds = %27 %31 = tail call i64 @softfloat_propagateNaNF64UI(i64 noundef %0, i64 noundef 0) #3 - br label %57 + br label %58 32: ; preds = %25 %33 = sub nuw nsw i64 1075, %5 @@ -88,45 +88,45 @@ define i64 @f64_roundToInt(i64 %0, i8 noundef zeroext %1, i1 noundef zeroext %2) 36: ; preds = %32 %37 = lshr i64 %34, 1 %38 = add i64 %37, %0 - br label %50 + br label %51 39: ; preds = %32 %40 = lshr i64 %34, 1 %41 = add i64 %40, %0 %42 = and i64 %41, %35 %.not50 = icmp eq i64 %42, 0 - br i1 %.not50, label %43, label %50 + br i1 %.not50, label %43, label %51 43: ; preds = %39 %44 = xor i64 %34, -1 %45 = and i64 %41, %44 - br label %50 + br label %51 46: ; preds = %32 %.not = icmp sgt i64 %0, -1 - %47 = select i1 %.not, i8 3, i8 2 - %48 = icmp eq i8 %47, %1 - %49 = select i1 %48, i64 %35, i64 0 - %spec.select = add i64 %49, %0 - br label %50 + %48 = select i1 %.not, i8 3, i8 2 + %49 = icmp eq i8 %48, %1 + %50 = select i1 %49, i64 %35, i64 0 + %spec.select = add i64 %50, %0 + br label %51 -50: ; preds = %46, %43, %39, %36 +51: ; preds = %46, %43, %39, %36 %.1 = phi i64 [ %38, %36 ], [ %41, %39 ], [ %45, %43 ], [ %spec.select, %46 ] - %51 = sub nsw i64 0, %34 - %52 = and i64 %.1, %51 - %.not51 = icmp ne i64 %52, %0 + %52 = sub nsw i64 0, %34 + %53 = and i64 %.1, %52 + %.not51 = icmp ne i64 %53, %0 %or.cond58.not = select i1 %2, i1 %.not51, i1 false - br i1 %or.cond58.not, label %53, label %57 + br i1 %or.cond58.not, label %54, label %58 -53: ; preds = %50 - %54 = tail call align 1 ptr @llvm.threadlocal.address.p0(ptr align 1 @softfloat_exceptionFlags) - %55 = load i8, ptr %54, align 1, !tbaa !3 - %56 = or i8 %55, 1 - store i8 %56, ptr %54, align 1, !tbaa !3 - br label %57 +54: ; preds = %51 + %55 = tail call align 1 ptr @llvm.threadlocal.address.p0(ptr align 1 @softfloat_exceptionFlags) + %56 = load i8, ptr %55, align 1, !tbaa !3 + %57 = or i8 %56, 1 + store i8 %57, ptr %55, align 1, !tbaa !3 + br label %58 -57: ; preds = %30, %20, %21, %16, %24, %23, %14, %53, %50, %27, %7 - %.sroa.044.0 = phi i64 [ %0, %7 ], [ %0, %27 ], [ %15, %14 ], [ %22, %21 ], [ %15, %16 ], [ %15, %20 ], [ %spec.store.select, %23 ], [ %spec.store.select1, %24 ], [ %31, %30 ], [ %52, %53 ], [ %52, %50 ] +58: ; preds = %30, %20, %21, %16, %24, %23, %14, %54, %51, %27, %7 + %.sroa.044.0 = phi i64 [ %0, %7 ], [ %0, %27 ], [ %15, %14 ], [ %22, %21 ], [ %15, %16 ], [ %15, %20 ], [ %spec.store.select, %23 ], [ %spec.store.select1, %24 ], [ %31, %30 ], [ %53, %53 ], [ %52, %50 ] ret i64 %.sroa.044.0 } diff --git a/bench/spike/optimized/s_addMagsF16.ll b/bench/spike/optimized/s_addMagsF16.ll index 50570630dbb..c1d1557c76e 100644 --- a/bench/spike/optimized/s_addMagsF16.ll +++ b/bench/spike/optimized/s_addMagsF16.ll @@ -27,12 +27,12 @@ define i16 @softfloat_addMagsF16(i64 noundef %0, i64 noundef %1) local_unnamed_a 12: ; preds = %11 %13 = add i64 %10, %0 - br label %109 + br label %110 14: ; preds = %11 %15 = or i64 %10, %6 %.not105 = icmp eq i64 %15, 0 - br i1 %.not105, label %109, label %82 + br i1 %.not105, label %110, label %82 16: ; preds = %11 %17 = or disjoint i64 %6, 2048 @@ -46,7 +46,7 @@ define i16 @softfloat_addMagsF16(i64 noundef %0, i64 noundef %1) local_unnamed_a 22: ; preds = %16 %23 = lshr exact i64 %18, 1 %24 = and i64 %0, 8355840 - br label %103 + br label %104 25: ; preds = %16 %26 = shl nuw nsw i64 %18, 3 @@ -69,7 +69,7 @@ define i16 @softfloat_addMagsF16(i64 noundef %0, i64 noundef %1) local_unnamed_a 35: ; preds = %34 %36 = or disjoint i64 %30, 31744 - br label %109 + br label %110 37: ; preds = %32 %38 = icmp samesign ult i8 %29, -12 @@ -82,7 +82,7 @@ define i16 @softfloat_addMagsF16(i64 noundef %0, i64 noundef %1) local_unnamed_a %43 = and i64 %3, 31 %44 = or i64 %43, %6 %.not112 = icmp eq i64 %44, 0 - br i1 %.not112, label %109, label %84 + br i1 %.not112, label %110, label %84 45: ; preds = %37 %.not109 = icmp eq i8 %5, 0 @@ -97,7 +97,7 @@ define i16 @softfloat_addMagsF16(i64 noundef %0, i64 noundef %1) local_unnamed_a 50: ; preds = %48 %.not108 = icmp eq i64 %6, 0 - br i1 %.not108, label %109, label %82 + br i1 %.not108, label %110, label %82 51: ; preds = %48 %52 = icmp samesign ugt i8 %29, 12 @@ -107,7 +107,7 @@ define i16 @softfloat_addMagsF16(i64 noundef %0, i64 noundef %1) local_unnamed_a %54 = and i64 %7, 31 %55 = or i64 %54, %10 %.not107 = icmp eq i64 %55, 0 - br i1 %.not107, label %109, label %84 + br i1 %.not107, label %110, label %84 56: ; preds = %51 %.not106 = icmp eq i8 %9, 0 @@ -149,7 +149,7 @@ define i16 @softfloat_addMagsF16(i64 noundef %0, i64 noundef %1) local_unnamed_a 76: ; preds = %72 %77 = lshr exact i64 %.085, 20 - br label %103 + br label %104 78: ; preds = %70, %72, %25 %.195.in.in = phi i64 [ %30, %70 ], [ %30, %72 ], [ %27, %25 ] @@ -158,18 +158,18 @@ define i16 @softfloat_addMagsF16(i64 noundef %0, i64 noundef %1) local_unnamed_a %79 = icmp ne i64 %.195.in.in, 0 %80 = sext i8 %.192 to i64 %81 = tail call i16 @softfloat_roundPackToF16(i1 noundef zeroext %79, i64 noundef %80, i64 noundef %.190) #3 - br label %111 + br label %112 82: ; preds = %50, %34, %14 %83 = tail call i64 @softfloat_propagateNaNF16UI(i64 noundef %0, i64 noundef %1) #3 - br label %109 + br label %110 84: ; preds = %53, %39 %.1 = phi i64 [ %42, %39 ], [ %0, %53 ] %85 = tail call align 1 ptr @llvm.threadlocal.address.p0(ptr align 1 @softfloat_roundingMode) %86 = load i8, ptr %85, align 1, !tbaa !3 %.not113 = icmp eq i8 %86, 0 - br i1 %.not113, label %99, label %87 + br i1 %.not113, label %100, label %87 87: ; preds = %84 %88 = and i64 %.1, 32768 @@ -182,44 +182,44 @@ define i16 @softfloat_addMagsF16(i64 noundef %0, i64 noundef %1) local_unnamed_a %92 = add i64 %.1, 1 %93 = and i64 %92, 32767 %94 = icmp eq i64 %93, 31744 - br i1 %94, label %95, label %99 + br i1 %94, label %95, label %100 95: ; preds = %91 tail call void @softfloat_raiseFlags(i8 noundef zeroext 5) #3 - br label %99 + br label %100 -96: ; preds = %87 - %97 = icmp eq i8 %86, 5 - %98 = zext i1 %97 to i64 - %spec.select = or i64 %.1, %98 - br label %99 +97: ; preds = %87 + %98 = icmp eq i8 %86, 5 + %99 = zext i1 %98 to i64 + %spec.select = or i64 %.1, %99 + br label %100 -99: ; preds = %96, %95, %91, %84 +100: ; preds = %97, %95, %91, %84 %.2 = phi i64 [ %92, %95 ], [ %92, %91 ], [ %.1, %84 ], [ %spec.select, %96 ] - %100 = tail call align 1 ptr @llvm.threadlocal.address.p0(ptr align 1 @softfloat_exceptionFlags) - %101 = load i8, ptr %100, align 1, !tbaa !3 - %102 = or i8 %101, 1 - store i8 %102, ptr %100, align 1, !tbaa !3 - br label %109 + %101 = tail call align 1 ptr @llvm.threadlocal.address.p0(ptr align 1 @softfloat_exceptionFlags) + %102 = load i8, ptr %101, align 1, !tbaa !3 + %103 = or i8 %102, 1 + store i8 %103, ptr %101, align 1, !tbaa !3 + br label %110 -103: ; preds = %76, %22 +104: ; preds = %76, %22 %.094 = phi i64 [ %30, %76 ], [ %24, %22 ] %.091 = phi i8 [ %.3, %76 ], [ %5, %22 ] %.089 = phi i64 [ %77, %76 ], [ %23, %22 ] - %104 = sext i8 %.091 to i64 - %105 = shl nsw i64 %104, 10 - %106 = and i64 %105, 67107840 - %107 = add nuw nsw i64 %.089, %.094 - %108 = add nuw nsw i64 %107, %106 - br label %109 - -109: ; preds = %14, %53, %50, %39, %103, %99, %82, %35, %12 - %.0 = phi i64 [ %83, %82 ], [ %36, %35 ], [ %.2, %99 ], [ %42, %39 ], [ %108, %103 ], [ %0, %50 ], [ %0, %53 ], [ %13, %12 ], [ %0, %14 ] - %110 = trunc i64 %.0 to i16 - br label %111 - -111: ; preds = %109, %78 - %.sroa.084.0 = phi i16 [ %110, %109 ], [ %81, %78 ] + %105 = sext i8 %.091 to i64 + %106 = shl nsw i64 %105, 10 + %107 = and i64 %106, 67107840 + %108 = add nuw nsw i64 %.089, %.094 + %109 = add nuw nsw i64 %108, %107 + br label %110 + +110: ; preds = %14, %53, %50, %39, %104, %100, %82, %35, %12 + %.0 = phi i64 [ %83, %82 ], [ %36, %35 ], [ %.2, %99 ], [ %42, %39 ], [ %109, %103 ], [ %0, %50 ], [ %0, %53 ], [ %13, %12 ], [ %0, %14 ] + %111 = trunc i64 %.0 to i16 + br label %112 + +112: ; preds = %110, %78 + %.sroa.084.0 = phi i16 [ %111, %109 ], [ %81, %78 ] ret i16 %.sroa.084.0 } diff --git a/bench/spike/optimized/s_roundMToI64.ll b/bench/spike/optimized/s_roundMToI64.ll index 9136daff32c..2b7b975f041 100644 --- a/bench/spike/optimized/s_roundMToI64.ll +++ b/bench/spike/optimized/s_roundMToI64.ll @@ -50,7 +50,7 @@ define i64 @softfloat_roundMToI64(i1 noundef zeroext %0, ptr noundef readonly ca %35 = and i32 %6, 2147483647 %36 = icmp eq i32 %35, 0 %or.cond4 = and i1 %5, %36 - %37 = and i64 %33, -2 + %or.cond4 = and i64 %33, -2 %spec.select = select i1 %or.cond4, i64 %37, i64 %33 br label %38 @@ -59,30 +59,30 @@ define i64 @softfloat_roundMToI64(i1 noundef zeroext %0, ptr noundef readonly ca %39 = sub i64 0, %.033 %40 = select i1 %0, i64 %39, i64 %.033 %.not37 = icmp eq i64 %.033, 0 - %41 = icmp sgt i64 %40, -1 - %.not3839 = xor i1 %0, %41 + %42 = icmp sgt i64 %40, -1 + %.not3839 = xor i1 %0, %42 %or.cond40 = or i1 %.not37, %.not3839 - br i1 %or.cond40, label %42, label %48 + br i1 %or.cond40, label %43, label %49 -42: ; preds = %38 - %43 = icmp ne i32 %6, 0 - %or.cond6 = select i1 %3, i1 %43, i1 false - br i1 %or.cond6, label %44, label %50 +43: ; preds = %38 + %44 = icmp ne i32 %6, 0 + %or.cond6 = select i1 %3, i1 %44, i1 false + br i1 %or.cond6, label %45, label %51 -44: ; preds = %42 - %45 = tail call align 1 ptr @llvm.threadlocal.address.p0(ptr align 1 @softfloat_exceptionFlags) - %46 = load i8, ptr %45, align 1, !tbaa !7 - %47 = or i8 %46, 1 - store i8 %47, ptr %45, align 1, !tbaa !7 - br label %50 +45: ; preds = %43 + %46 = tail call align 1 ptr @llvm.threadlocal.address.p0(ptr align 1 @softfloat_exceptionFlags) + %47 = load i8, ptr %46, align 1, !tbaa !7 + %48 = or i8 %47, 1 + store i8 %48, ptr %46, align 1, !tbaa !7 + br label %51 -48: ; preds = %38, %31 +49: ; preds = %38, %31 tail call void @softfloat_raiseFlags(i8 noundef zeroext 16) #3 - %49 = select i1 %0, i64 -9223372036854775808, i64 9223372036854775807 - br label %50 + %50 = select i1 %0, i64 -9223372036854775808, i64 9223372036854775807 + br label %51 -50: ; preds = %42, %44, %48 - %.0 = phi i64 [ %49, %48 ], [ %40, %44 ], [ %40, %42 ] +51: ; preds = %43, %45, %49 + %.0 = phi i64 [ %50, %48 ], [ %40, %44 ], [ %40, %42 ] ret i64 %.0 } diff --git a/bench/spike/optimized/s_roundPackToBF16.ll b/bench/spike/optimized/s_roundPackToBF16.ll index 578a15ec3f7..96c92454fb1 100644 --- a/bench/spike/optimized/s_roundPackToBF16.ll +++ b/bench/spike/optimized/s_roundPackToBF16.ll @@ -17,7 +17,7 @@ define i16 @softfloat_roundPackToBF16(i1 noundef zeroext %0, i64 noundef %1, i64 %8 = select i1 %0, i8 2, i8 3 %9 = icmp eq i8 %8, %5 %10 = select i1 %9, i8 127, i8 0 - %.046 = select i1 %or.cond, i8 %10, i8 64 + %11 = select i1 %or.cond, i8 %10, i8 64 %11 = trunc i64 %2 to i8 %12 = trunc i64 %1 to i32 %13 = icmp ugt i32 %12, 252 @@ -36,7 +36,7 @@ define i16 @softfloat_roundPackToBF16(i1 noundef zeroext %0, i64 noundef %1, i64 br i1 %or.cond4, label %25, label %21 21: ; preds = %16 - %22 = zext nneg i8 %.046 to i64 + %22 = zext nneg i8 %11 to i64 %23 = add i64 %2, %22 %24 = icmp ult i64 %23, 32768 br label %25 @@ -59,89 +59,89 @@ define i16 @softfloat_roundPackToBF16(i1 noundef zeroext %0, i64 noundef %1, i64 %38 = or i32 %32, %37 br label %softfloat_shiftRightJam32.exit -39: ; preds = %25 - %40 = icmp ne i32 %27, 0 - %41 = zext i1 %40 to i32 +40: ; preds = %25 + %41 = icmp ne i32 %27, 0 + %42 = zext i1 %41 to i32 br label %softfloat_shiftRightJam32.exit -softfloat_shiftRightJam32.exit: ; preds = %30, %39 - %42 = phi i32 [ %38, %30 ], [ %41, %39 ] - %43 = zext nneg i32 %42 to i64 - %44 = trunc i32 %42 to i8 - %45 = and i32 %42, 127 - %46 = icmp ne i32 %45, 0 - %or.cond7 = select i1 %26, i1 %46, i1 false - br i1 %or.cond7, label %47, label %57 +softfloat_shiftRightJam32.exit: ; preds = %30, %40 + %43 = phi i32 [ %38, %30 ], [ %42, %39 ] + %44 = zext nneg i32 %43 to i64 + %45 = trunc i32 %43 to i8 + %46 = and i32 %43, 127 + %47 = icmp ne i32 %46, 0 + %or.cond7 = select i1 %26, i1 %47, i1 false + br i1 %or.cond7, label %48, label %58 -47: ; preds = %softfloat_shiftRightJam32.exit +48: ; preds = %softfloat_shiftRightJam32.exit tail call void @softfloat_raiseFlags(i8 noundef zeroext 2) #3 - br label %57 + br label %58 -48: ; preds = %14 - %49 = icmp samesign ugt i64 %1, 253 - br i1 %49, label %54, label %50 +49: ; preds = %14 + %50 = icmp samesign ugt i64 %1, 253 + br i1 %50, label %55, label %51 -50: ; preds = %48 - %51 = zext nneg i8 %.046 to i64 - %52 = add i64 %2, %51 - %53 = icmp ugt i64 %52, 32767 - br i1 %53, label %54, label %57 +51: ; preds = %49 + %52 = zext nneg i8 %.046 to i64 + %53 = add i64 %2, %52 + %54 = icmp ugt i64 %53, 32767 + br i1 %54, label %55, label %58 -54: ; preds = %50, %48 +55: ; preds = %51, %49 tail call void @softfloat_raiseFlags(i8 noundef zeroext 5) #3 - %55 = select i1 %0, i64 65408, i64 32640 + %56 = select i1 %0, i64 65408, i64 32640 %.not = icmp eq i8 %.046, 0 %.neg = sext i1 %.not to i64 - %56 = add nsw i64 %55, %.neg - br label %79 + %57 = add nsw i64 %56, %.neg + br label %80 -57: ; preds = %47, %softfloat_shiftRightJam32.exit, %50, %3 - %.045.in = phi i8 [ %44, %47 ], [ %44, %softfloat_shiftRightJam32.exit ], [ %11, %50 ], [ %11, %3 ] - %.043 = phi i64 [ %43, %47 ], [ %43, %softfloat_shiftRightJam32.exit ], [ %2, %50 ], [ %2, %3 ] +58: ; preds = %48, %softfloat_shiftRightJam32.exit, %51, %3 + %.045.in = phi i8 [ %45, %47 ], [ %45, %softfloat_shiftRightJam32.exit ], [ %11, %50 ], [ %11, %3 ] + %.043 = phi i64 [ %44, %47 ], [ %44, %softfloat_shiftRightJam32.exit ], [ %2, %50 ], [ %2, %3 ] %.0 = phi i64 [ 0, %47 ], [ 0, %softfloat_shiftRightJam32.exit ], [ 253, %50 ], [ %1, %3 ] %.045 = and i8 %.045.in, 127 - %58 = zext nneg i8 %.046 to i64 - %59 = add i64 %.043, %58 - %60 = lshr i64 %59, 7 + %59 = zext nneg i8 %.046 to i64 + %60 = add i64 %.043, %59 + %61 = lshr i64 %60, 7 %.not52 = icmp eq i8 %.045, 0 - br i1 %.not52, label %68, label %61 + br i1 %.not52, label %69, label %62 -61: ; preds = %57 - %62 = tail call align 1 ptr @llvm.threadlocal.address.p0(ptr align 1 @softfloat_exceptionFlags) - %63 = load i8, ptr %62, align 1, !tbaa !3 - %64 = or i8 %63, 1 - store i8 %64, ptr %62, align 1, !tbaa !3 - %65 = icmp eq i8 %5, 5 - br i1 %65, label %66, label %68 +62: ; preds = %58 + %63 = tail call align 1 ptr @llvm.threadlocal.address.p0(ptr align 1 @softfloat_exceptionFlags) + %64 = load i8, ptr %63, align 1, !tbaa !3 + %65 = or i8 %64, 1 + store i8 %65, ptr %63, align 1, !tbaa !3 + %66 = icmp eq i8 %5, 5 + br i1 %66, label %67, label %69 -66: ; preds = %61 - %67 = or i64 %60, 1 - br label %73 +67: ; preds = %62 + %68 = or i64 %61, 1 + br label %74 -68: ; preds = %61, %57 +69: ; preds = %62, %58 %.not53 = icmp eq i8 %.045, 64 - %69 = and i1 %6, %.not53 - %70 = zext i1 %69 to i64 - %71 = xor i64 %70, -1 - %72 = and i64 %60, %71 - %.not54 = icmp eq i64 %72, 0 + %70 = and i1 %6, %.not53 + %71 = zext i1 %70 to i64 + %72 = xor i64 %71, -1 + %73 = and i64 %61, %72 + %.not54 = icmp eq i64 %73, 0 %spec.select55 = select i1 %.not54, i64 0, i64 %.0 - br label %73 + br label %74 -73: ; preds = %68, %66 - %.144 = phi i64 [ %67, %66 ], [ %72, %68 ] +74: ; preds = %69, %67 + %.144 = phi i64 [ %68, %66 ], [ %73, %68 ] %.1 = phi i64 [ %.0, %66 ], [ %spec.select55, %68 ] - %74 = select i1 %0, i64 32768, i64 0 - %75 = shl i64 %.1, 7 - %76 = and i64 %75, 8388480 - %77 = add nuw nsw i64 %.144, %74 - %78 = add nuw nsw i64 %77, %76 - br label %79 - -79: ; preds = %73, %54 - %.042 = phi i64 [ %78, %73 ], [ %56, %54 ] - %80 = trunc i64 %.042 to i16 - ret i16 %80 + %75 = select i1 %0, i64 32768, i64 0 + %76 = shl i64 %.1, 7 + %77 = and i64 %76, 8388480 + %78 = add nuw nsw i64 %.144, %75 + %79 = add nuw nsw i64 %78, %77 + br label %80 + +80: ; preds = %74, %55 + %.042 = phi i64 [ %79, %73 ], [ %57, %54 ] + %81 = trunc i64 %.042 to i16 + ret i16 %81 } ; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) diff --git a/bench/spike/optimized/s_roundPackToI32.ll b/bench/spike/optimized/s_roundPackToI32.ll index db725c61b43..7953ada1e75 100644 --- a/bench/spike/optimized/s_roundPackToI32.ll +++ b/bench/spike/optimized/s_roundPackToI32.ll @@ -13,49 +13,49 @@ define range(i64 -2147483648, 2147483648) i64 @softfloat_roundPackToI32(i1 nound %7 = select i1 %0, i8 2, i8 3 %8 = icmp eq i8 %7, %2 %9 = select i1 %8, i64 127, i64 0 - %.029 = select i1 %or.cond, i64 %9, i64 64 - %10 = add i64 %.029, %1 + %10 = select i1 %or.cond, i64 %9, i64 64 + %10 = add i64 %10, %1 %.not = icmp ult i64 %10, 549755813888 br i1 %.not, label %11, label %29 -11: ; preds = %4 - %12 = trunc i64 %1 to i32 - %13 = and i32 %12, 127 - %14 = lshr i64 %10, 7 - %.not32 = icmp eq i32 %13, 64 - %15 = and i1 %5, %.not32 - %16 = zext i1 %15 to i64 - %17 = xor i64 %16, -1 - %18 = and i64 %14, %17 - %19 = sub nsw i64 0, %18 - %20 = select i1 %0, i64 %19, i64 %18 - %sext = shl i64 %20, 32 - %21 = ashr exact i64 %sext, 32 +12: ; preds = %4 + %13 = trunc i64 %1 to i32 + %14 = and i32 %13, 127 + %15 = lshr i64 %10, 7 + %.not32 = icmp eq i32 %14, 64 + %16 = and i1 %5, %.not32 + %17 = zext i1 %16 to i64 + %18 = xor i64 %17, -1 + %19 = and i64 %15, %18 + %20 = sub nsw i64 0, %19 + %21 = select i1 %0, i64 %20, i64 %19 + %sext = shl i64 %21, 32 + %22 = ashr exact i64 %sext, 32 %.not33 = icmp eq i64 %sext, 0 - %22 = icmp sgt i64 %21, -1 - %.not3435 = xor i1 %0, %22 + %23 = icmp sgt i64 %22, -1 + %.not3435 = xor i1 %0, %23 %or.cond36 = select i1 %.not33, i1 true, i1 %.not3435 - br i1 %or.cond36, label %23, label %29 + br i1 %or.cond36, label %24, label %30 -23: ; preds = %11 - %24 = icmp ne i32 %13, 0 - %or.cond5 = and i1 %3, %24 - br i1 %or.cond5, label %25, label %31 +24: ; preds = %12 + %25 = icmp ne i32 %14, 0 + %or.cond5 = and i1 %3, %25 + br i1 %or.cond5, label %26, label %32 -25: ; preds = %23 - %26 = tail call align 1 ptr @llvm.threadlocal.address.p0(ptr align 1 @softfloat_exceptionFlags) - %27 = load i8, ptr %26, align 1, !tbaa !3 - %28 = or i8 %27, 1 - store i8 %28, ptr %26, align 1, !tbaa !3 - br label %31 +26: ; preds = %24 + %27 = tail call align 1 ptr @llvm.threadlocal.address.p0(ptr align 1 @softfloat_exceptionFlags) + %28 = load i8, ptr %27, align 1, !tbaa !3 + %29 = or i8 %28, 1 + store i8 %29, ptr %27, align 1, !tbaa !3 + br label %32 -29: ; preds = %11, %4 +30: ; preds = %12, %4 tail call void @softfloat_raiseFlags(i8 noundef zeroext 16) #3 - %30 = select i1 %0, i64 -2147483648, i64 2147483647 - br label %31 + %31 = select i1 %0, i64 -2147483648, i64 2147483647 + br label %32 -31: ; preds = %23, %25, %29 - %.0 = phi i64 [ %30, %29 ], [ %21, %25 ], [ %21, %23 ] +32: ; preds = %24, %26, %30 + %.0 = phi i64 [ %31, %29 ], [ %22, %25 ], [ %22, %23 ] ret i64 %.0 } diff --git a/bench/spike/optimized/s_roundPackToI64.ll b/bench/spike/optimized/s_roundPackToI64.ll index 48d8f948e6c..a75a121a5ec 100644 --- a/bench/spike/optimized/s_roundPackToI64.ll +++ b/bench/spike/optimized/s_roundPackToI64.ll @@ -26,7 +26,7 @@ define i64 @softfloat_roundPackToI64(i1 noundef zeroext %0, i64 noundef %1, i64 15: ; preds = %8, %13 %16 = add i64 %1, 1 %.not = icmp eq i64 %16, 0 - br i1 %.not, label %33, label %17 + br i1 %.not, label %34, label %17 17: ; preds = %15 %18 = and i64 %2, 9223372036854775807 @@ -42,30 +42,30 @@ define i64 @softfloat_roundPackToI64(i1 noundef zeroext %0, i64 noundef %1, i64 %24 = sub i64 0, %.028 %25 = select i1 %0, i64 %24, i64 %.028 %.not34 = icmp eq i64 %.028, 0 - %26 = icmp sgt i64 %25, -1 - %.not3536 = xor i1 %0, %26 + %27 = icmp sgt i64 %25, -1 + %.not3536 = xor i1 %0, %27 %or.cond37 = or i1 %.not34, %.not3536 - br i1 %or.cond37, label %27, label %33 + br i1 %or.cond37, label %28, label %34 -27: ; preds = %23 - %28 = icmp ne i64 %2, 0 - %or.cond4 = and i1 %28, %4 - br i1 %or.cond4, label %29, label %35 +28: ; preds = %23 + %29 = icmp ne i64 %2, 0 + %or.cond4 = and i1 %29, %4 + br i1 %or.cond4, label %30, label %36 -29: ; preds = %27 - %30 = tail call align 1 ptr @llvm.threadlocal.address.p0(ptr align 1 @softfloat_exceptionFlags) - %31 = load i8, ptr %30, align 1, !tbaa !3 - %32 = or i8 %31, 1 - store i8 %32, ptr %30, align 1, !tbaa !3 - br label %35 +30: ; preds = %28 + %31 = tail call align 1 ptr @llvm.threadlocal.address.p0(ptr align 1 @softfloat_exceptionFlags) + %32 = load i8, ptr %31, align 1, !tbaa !3 + %33 = or i8 %32, 1 + store i8 %33, ptr %31, align 1, !tbaa !3 + br label %36 -33: ; preds = %23, %15 +34: ; preds = %23, %15 tail call void @softfloat_raiseFlags(i8 noundef zeroext 16) #3 - %34 = select i1 %0, i64 -9223372036854775808, i64 9223372036854775807 - br label %35 + %35 = select i1 %0, i64 -9223372036854775808, i64 9223372036854775807 + br label %36 -35: ; preds = %27, %29, %33 - %.0 = phi i64 [ %34, %33 ], [ %25, %29 ], [ %25, %27 ] +36: ; preds = %28, %30, %34 + %.0 = phi i64 [ %35, %33 ], [ %25, %29 ], [ %25, %27 ] ret i64 %.0 } diff --git a/bench/spike/optimized/s_roundPackToUI32.ll b/bench/spike/optimized/s_roundPackToUI32.ll index 314564d413e..f231fa777ee 100644 --- a/bench/spike/optimized/s_roundPackToUI32.ll +++ b/bench/spike/optimized/s_roundPackToUI32.ll @@ -13,43 +13,43 @@ define range(i64 0, 4294967296) i64 @softfloat_roundPackToUI32(i1 noundef zeroex %7 = select i1 %0, i8 2, i8 3 %8 = icmp eq i8 %7, %2 %9 = select i1 %8, i64 127, i64 0 - %.027 = select i1 %or.cond, i64 %9, i64 64 - %10 = add i64 %.027, %1 + %10 = select i1 %or.cond, i64 %9, i64 64 + %10 = add i64 %10, %1 %.not = icmp ult i64 %10, 549755813888 - br i1 %.not, label %11, label %26 + br i1 %.not, label %11, label %27 -11: ; preds = %4 - %12 = trunc i64 %1 to i32 - %13 = and i32 %12, 127 - %14 = lshr i64 %10, 7 - %.not29 = icmp eq i32 %13, 64 - %15 = and i1 %5, %.not29 - %16 = zext i1 %15 to i64 - %17 = xor i64 %16, -1 - %18 = and i64 %14, %17 - %19 = icmp ne i64 %18, 0 - %or.cond4 = select i1 %0, i1 %19, i1 false - br i1 %or.cond4, label %26, label %20 +12: ; preds = %4 + %13 = trunc i64 %1 to i32 + %14 = and i32 %13, 127 + %15 = lshr i64 %10, 7 + %.not29 = icmp eq i32 %14, 64 + %16 = and i1 %5, %.not29 + %17 = zext i1 %16 to i64 + %18 = xor i64 %17, -1 + %19 = and i64 %15, %18 + %20 = icmp ne i64 %19, 0 + %or.cond4 = select i1 %0, i1 %20, i1 false + br i1 %or.cond4, label %27, label %21 -20: ; preds = %11 - %21 = icmp ne i32 %13, 0 - %or.cond7 = and i1 %3, %21 - br i1 %or.cond7, label %22, label %28 +21: ; preds = %12 + %22 = icmp ne i32 %14, 0 + %or.cond7 = and i1 %3, %22 + br i1 %or.cond7, label %23, label %29 -22: ; preds = %20 - %23 = tail call align 1 ptr @llvm.threadlocal.address.p0(ptr align 1 @softfloat_exceptionFlags) - %24 = load i8, ptr %23, align 1, !tbaa !3 - %25 = or i8 %24, 1 - store i8 %25, ptr %23, align 1, !tbaa !3 - br label %28 +23: ; preds = %21 + %24 = tail call align 1 ptr @llvm.threadlocal.address.p0(ptr align 1 @softfloat_exceptionFlags) + %25 = load i8, ptr %24, align 1, !tbaa !3 + %26 = or i8 %25, 1 + store i8 %26, ptr %24, align 1, !tbaa !3 + br label %29 -26: ; preds = %11, %4 +27: ; preds = %12, %4 tail call void @softfloat_raiseFlags(i8 noundef zeroext 16) #3 - %27 = select i1 %0, i64 0, i64 4294967295 - br label %28 + %28 = select i1 %0, i64 0, i64 4294967295 + br label %29 -28: ; preds = %20, %22, %26 - %.0 = phi i64 [ %27, %26 ], [ %18, %22 ], [ %18, %20 ] +29: ; preds = %21, %23, %27 + %.0 = phi i64 [ %28, %26 ], [ %19, %22 ], [ %19, %20 ] ret i64 %.0 } diff --git a/bench/spike/optimized/s_roundToUI32.ll b/bench/spike/optimized/s_roundToUI32.ll index 4c7a6a33adf..12ff9095750 100644 --- a/bench/spike/optimized/s_roundToUI32.ll +++ b/bench/spike/optimized/s_roundToUI32.ll @@ -13,42 +13,42 @@ define range(i64 0, 4294967296) i64 @softfloat_roundToUI32(i1 noundef zeroext %0 %7 = select i1 %0, i8 2, i8 3 %8 = icmp eq i8 %7, %2 %9 = select i1 %8, i64 4095, i64 0 - %.026 = select i1 %or.cond, i64 %9, i64 2048 + %10 = select i1 %or.cond, i64 %9, i64 2048 %10 = and i64 %1, 4095 - %11 = add i64 %.026, %1 + %11 = add i64 %10, %1 %.not = icmp ult i64 %11, 17592186044416 - br i1 %.not, label %12, label %25 + br i1 %.not, label %12, label %26 -12: ; preds = %4 - %13 = lshr i64 %11, 12 +13: ; preds = %4 + %14 = lshr i64 %11, 12 %.not28 = icmp eq i64 %10, 2048 - %14 = and i1 %.not28, %5 - %15 = zext i1 %14 to i64 - %16 = xor i64 %15, -1 - %17 = and i64 %13, %16 - %18 = icmp ne i64 %17, 0 - %or.cond4 = and i1 %0, %18 - br i1 %or.cond4, label %25, label %19 + %15 = and i1 %.not28, %5 + %16 = zext i1 %15 to i64 + %17 = xor i64 %16, -1 + %18 = and i64 %14, %17 + %19 = icmp ne i64 %18, 0 + %or.cond4 = and i1 %0, %19 + br i1 %or.cond4, label %26, label %20 -19: ; preds = %12 - %20 = icmp ne i64 %10, 0 - %or.cond6 = and i1 %3, %20 - br i1 %or.cond6, label %21, label %27 +20: ; preds = %13 + %21 = icmp ne i64 %10, 0 + %or.cond6 = and i1 %3, %21 + br i1 %or.cond6, label %22, label %28 -21: ; preds = %19 - %22 = tail call align 1 ptr @llvm.threadlocal.address.p0(ptr align 1 @softfloat_exceptionFlags) - %23 = load i8, ptr %22, align 1, !tbaa !3 - %24 = or i8 %23, 1 - store i8 %24, ptr %22, align 1, !tbaa !3 - br label %27 +22: ; preds = %20 + %23 = tail call align 1 ptr @llvm.threadlocal.address.p0(ptr align 1 @softfloat_exceptionFlags) + %24 = load i8, ptr %23, align 1, !tbaa !3 + %25 = or i8 %24, 1 + store i8 %25, ptr %23, align 1, !tbaa !3 + br label %28 -25: ; preds = %12, %4 +26: ; preds = %13, %4 tail call void @softfloat_raiseFlags(i8 noundef zeroext 16) #3 - %26 = select i1 %0, i64 0, i64 4294967295 - br label %27 + %27 = select i1 %0, i64 0, i64 4294967295 + br label %28 -27: ; preds = %19, %21, %25 - %.0 = phi i64 [ %26, %25 ], [ %17, %21 ], [ %17, %19 ] +28: ; preds = %20, %22, %26 + %.0 = phi i64 [ %27, %25 ], [ %18, %21 ], [ %18, %19 ] ret i64 %.0 } diff --git a/bench/sqlite/optimized/sqlite3.ll b/bench/sqlite/optimized/sqlite3.ll index 7621ccd099c..9b46f355089 100644 --- a/bench/sqlite/optimized/sqlite3.ll +++ b/bench/sqlite/optimized/sqlite3.ll @@ -291262,82 +291262,82 @@ define internal fastcc i32 @sqlite3TriggerColmask(ptr noundef %0, ptr noundef %1 br i1 %.not, label %.lr.ph42.split.us, label %.lr.ph42.split .lr.ph42.split.us: ; preds = %.lr.ph42, %checkColumnOverlap.exit.thread.us - %.02140.us = phi ptr [ %41, %checkColumnOverlap.exit.thread.us ], [ %1, %.lr.ph42 ] + %.02140.us = phi ptr [ %42, %checkColumnOverlap.exit.thread.us ], [ %1, %.lr.ph42 ] %.02239.us = phi i32 [ %.2.us, %checkColumnOverlap.exit.thread.us ], [ 0, %.lr.ph42 ] %15 = getelementptr inbounds nuw i8, ptr %.02140.us, i64 16 %16 = load i8, ptr %15, align 8, !tbaa !2527 %17 = icmp eq i8 %11, %16 br i1 %17, label %18, label %checkColumnOverlap.exit.thread.us -18: ; preds = %.lr.ph42.split.us - %19 = getelementptr inbounds nuw i8, ptr %.02140.us, i64 17 - %20 = load i8, ptr %19, align 1, !tbaa !2528 - %21 = zext i8 %20 to i32 - %22 = and i32 %4, %21 - %.not25.us = icmp eq i32 %22, 0 +19: ; preds = %.lr.ph42.split.us + %20 = getelementptr inbounds nuw i8, ptr %.02140.us, i64 17 + %21 = load i8, ptr %20, align 1, !tbaa !2528 + %22 = zext i8 %21 to i32 + %23 = and i32 %4, %22 + %.not25.us = icmp eq i32 %23, 0 br i1 %.not25.us, label %checkColumnOverlap.exit.thread.us, label %checkColumnOverlap.exit.us -checkColumnOverlap.exit.us: ; preds = %18 - %23 = getelementptr inbounds nuw i8, ptr %.02140.us, i64 18 - %24 = load i8, ptr %23, align 2, !tbaa !121 - %.not27.us = icmp eq i8 %24, 0 - br i1 %.not27.us, label %25, label %checkColumnOverlap.exit.thread.us - -25: ; preds = %checkColumnOverlap.exit.us - %26 = load ptr, ptr %13, align 8, !tbaa !2183 - %.not.i.us = icmp eq ptr %26, null - %..i.us = select i1 %.not.i.us, ptr %0, ptr %26 - %27 = getelementptr inbounds nuw i8, ptr %..i.us, i64 168 - %.0.i35.us = load ptr, ptr %27, align 8, !tbaa !3228 +checkColumnOverlap.exit.us: ; preds = %19 + %24 = getelementptr inbounds nuw i8, ptr %.02140.us, i64 18 + %25 = load i8, ptr %24, align 2, !tbaa !121 + %.not27.us = icmp eq i8 %25, 0 + br i1 %.not27.us, label %26, label %checkColumnOverlap.exit.thread.us + +26: ; preds = %checkColumnOverlap.exit.us + %27 = load ptr, ptr %13, align 8, !tbaa !2183 + %.not.i.us = icmp eq ptr %27, null + %..i.us = select i1 %.not.i.us, ptr %0, ptr %27 + %28 = getelementptr inbounds nuw i8, ptr %..i.us, i64 168 + %.0.i35.us = load ptr, ptr %28, align 8, !tbaa !3228 %.not19.i36.us = icmp eq ptr %.0.i35.us, null br i1 %.not19.i36.us, label %getRowTrigger.exit.us, label %.lr.ph.us -.lr.ph.us: ; preds = %25, %.critedge2.i.us +.lr.ph.us: ; preds = %26, %.critedge2.i.us %.0.i37.us = phi ptr [ %.0.i.us, %.critedge2.i.us ], [ %.0.i35.us, %25 ] - %28 = load ptr, ptr %.0.i37.us, align 8, !tbaa !3229 - %.not20.i.us = icmp eq ptr %28, %.02140.us - br i1 %.not20.i.us, label %29, label %.critedge2.i.us - -29: ; preds = %.lr.ph.us - %30 = getelementptr inbounds nuw i8, ptr %.0.i37.us, i64 24 - %31 = load i32, ptr %30, align 8, !tbaa !3230 - %.not21.i.us = icmp eq i32 %31, %6 + %29 = load ptr, ptr %.0.i37.us, align 8, !tbaa !3229 + %.not20.i.us = icmp eq ptr %29, %.02140.us + br i1 %.not20.i.us, label %30, label %.critedge2.i.us + +30: ; preds = %.lr.ph.us + %31 = getelementptr inbounds nuw i8, ptr %.0.i37.us, i64 24 + %32 = load i32, ptr %31, align 8, !tbaa !3230 + %.not21.i.us = icmp eq i32 %32, %6 br i1 %.not21.i.us, label %getRowTrigger.exit.thread.us, label %.critedge2.i.us -.critedge2.i.us: ; preds = %29, %.lr.ph.us - %32 = getelementptr inbounds nuw i8, ptr %.0.i37.us, i64 8 - %.0.i.us = load ptr, ptr %32, align 8, !tbaa !3228 +.critedge2.i.us: ; preds = %30, %.lr.ph.us + %33 = getelementptr inbounds nuw i8, ptr %.0.i37.us, i64 8 + %.0.i.us = load ptr, ptr %33, align 8, !tbaa !3228 %.not19.i.us = icmp eq ptr %.0.i.us, null br i1 %.not19.i.us, label %getRowTrigger.exit.us, label %.lr.ph.us, !llvm.loop !3231 -getRowTrigger.exit.us: ; preds = %.critedge2.i.us, %25 - %33 = tail call fastcc ptr @codeRowTrigger(ptr noundef %0, ptr noundef nonnull %.02140.us, ptr noundef nonnull %5, i32 noundef %6) - %34 = load ptr, ptr %0, align 8, !tbaa !497 - %35 = getelementptr inbounds nuw i8, ptr %34, i64 84 - store i32 -1, ptr %35, align 4, !tbaa !297 - %.not28.us = icmp eq ptr %33, null +getRowTrigger.exit.us: ; preds = %.critedge2.i.us, %26 + %34 = tail call fastcc ptr @codeRowTrigger(ptr noundef %0, ptr noundef nonnull %.02140.us, ptr noundef nonnull %5, i32 noundef %6) + %35 = load ptr, ptr %0, align 8, !tbaa !497 + %36 = getelementptr inbounds nuw i8, ptr %35, i64 84 + store i32 -1, ptr %36, align 4, !tbaa !297 + %.not28.us = icmp eq ptr %34, null br i1 %.not28.us, label %checkColumnOverlap.exit.thread.us, label %getRowTrigger.exit.thread.us -getRowTrigger.exit.thread.us: ; preds = %29, %getRowTrigger.exit.us - %.1.i33.us = phi ptr [ %33, %getRowTrigger.exit.us ], [ %.0.i37.us, %29 ] - %36 = getelementptr inbounds nuw i8, ptr %.1.i33.us, i64 28 - %37 = getelementptr inbounds nuw [2 x i32], ptr %36, i64 0, i64 %14 - %38 = load i32, ptr %37, align 4, !tbaa !16 - %39 = or i32 %38, %.02239.us +getRowTrigger.exit.thread.us: ; preds = %30, %getRowTrigger.exit.us + %.1.i33.us = phi ptr [ %34, %getRowTrigger.exit.us ], [ %.0.i37.us, %29 ] + %37 = getelementptr inbounds nuw i8, ptr %.1.i33.us, i64 28 + %38 = getelementptr inbounds nuw [2 x i32], ptr %37, i64 0, i64 %14 + %39 = load i32, ptr %38, align 4, !tbaa !16 + %40 = or i32 %39, %.02239.us br label %checkColumnOverlap.exit.thread.us -checkColumnOverlap.exit.thread.us: ; preds = %getRowTrigger.exit.thread.us, %getRowTrigger.exit.us, %checkColumnOverlap.exit.us, %18, %.lr.ph42.split.us - %.2.us = phi i32 [ %.02239.us, %18 ], [ %.02239.us, %.lr.ph42.split.us ], [ -1, %checkColumnOverlap.exit.us ], [ %39, %getRowTrigger.exit.thread.us ], [ %.02239.us, %getRowTrigger.exit.us ] - %40 = getelementptr inbounds nuw i8, ptr %.02140.us, i64 64 - %41 = load ptr, ptr %40, align 8, !tbaa !1744 - %.not24.us = icmp eq ptr %41, null +checkColumnOverlap.exit.thread.us: ; preds = %getRowTrigger.exit.thread.us, %getRowTrigger.exit.us, %checkColumnOverlap.exit.us, %19, %.lr.ph42.split.us + %.2.us = phi i32 [ %.02239.us, %18 ], [ %.02239.us, %.lr.ph42.split.us ], [ -1, %checkColumnOverlap.exit.us ], [ %40, %getRowTrigger.exit.thread.us ], [ %.02239.us, %getRowTrigger.exit.us ] + %41 = getelementptr inbounds nuw i8, ptr %.02140.us, i64 64 + %42 = load ptr, ptr %41, align 8, !tbaa !1744 + %.not24.us = icmp eq ptr %42, null br i1 %.not24.us, label %.loopexit, label %.lr.ph42.split.us, !llvm.loop !3232 .lr.ph42.split: ; preds = %.lr.ph42, %checkColumnOverlap.exit.thread - %.02140 = phi ptr [ %98, %checkColumnOverlap.exit.thread ], [ %1, %.lr.ph42 ] + %.02140 = phi ptr [ %100, %checkColumnOverlap.exit.thread ], [ %1, %.lr.ph42 ] %.02239 = phi i32 [ %.2, %checkColumnOverlap.exit.thread ], [ 0, %.lr.ph42 ] - %42 = getelementptr inbounds nuw i8, ptr %.02140, i64 16 - %43 = load i8, ptr %42, align 8, !tbaa !2527 + %43 = getelementptr inbounds nuw i8, ptr %.02140, i64 16 + %44 = load i8, ptr %43, align 8, !tbaa !2527 %44 = icmp eq i8 %11, %43 br i1 %44, label %45, label %checkColumnOverlap.exit.thread @@ -291349,132 +291349,132 @@ checkColumnOverlap.exit.thread.us: ; preds = %getRowTrigger.exit. %.not25 = icmp eq i32 %49, 0 br i1 %.not25, label %checkColumnOverlap.exit.thread, label %50 -50: ; preds = %45 - %51 = getelementptr inbounds nuw i8, ptr %.02140, i64 32 - %52 = load ptr, ptr %51, align 8, !tbaa !130 - %53 = icmp eq ptr %52, null - br i1 %53, label %checkColumnOverlap.exit, label %.preheader.i +52: ; preds = %45 + %53 = getelementptr inbounds nuw i8, ptr %.02140, i64 32 + %54 = load ptr, ptr %53, align 8, !tbaa !130 + %55 = icmp eq ptr %54, null + br i1 %55, label %checkColumnOverlap.exit, label %.preheader.i -.preheader.i: ; preds = %50 - %54 = load i32, ptr %2, align 8, !tbaa !2120 - %55 = icmp sgt i32 %54, 0 - br i1 %55, label %.lr.ph.i, label %checkColumnOverlap.exit.thread +.preheader.i: ; preds = %52 + %56 = load i32, ptr %2, align 8, !tbaa !2120 + %57 = icmp sgt i32 %56, 0 + br i1 %57, label %.lr.ph.i, label %checkColumnOverlap.exit.thread .lr.ph.i: ; preds = %.preheader.i - %56 = load i32, ptr %52, align 8, !tbaa !1929 - %57 = icmp sgt i32 %56, 0 - %58 = getelementptr inbounds nuw i8, ptr %52, i64 8 - %wide.trip.count.i.i = zext nneg i32 %56 to i64 - br i1 %57, label %.lr.ph.i.us.preheader.i, label %checkColumnOverlap.exit.thread + %58 = load i32, ptr %54, align 8, !tbaa !1929 + %59 = icmp sgt i32 %58, 0 + %60 = getelementptr inbounds nuw i8, ptr %54, i64 8 + %wide.trip.count.i.i = zext nneg i32 %58 to i64 + br i1 %59, label %.lr.ph.i.us.preheader.i, label %checkColumnOverlap.exit.thread .lr.ph.i.us.preheader.i: ; preds = %.lr.ph.i - %wide.trip.count.i = zext nneg i32 %54 to i64 + %wide.trip.count.i = zext nneg i32 %56 to i64 br label %.lr.ph.i.us.i .lr.ph.i.us.i: ; preds = %sqlite3IdListIndex.exit.thread.loopexit.us.i, %.lr.ph.i.us.preheader.i %indvars.iv.i = phi i64 [ 0, %.lr.ph.i.us.preheader.i ], [ %indvars.iv.next.i, %sqlite3IdListIndex.exit.thread.loopexit.us.i ] %.idx.us.i = mul nuw nsw i64 %indvars.iv.i, 24 - %59 = getelementptr i8, ptr %12, i64 %.idx.us.i - %60 = load ptr, ptr %59, align 8, !tbaa !2125 - br label %61 + %61 = getelementptr i8, ptr %12, i64 %.idx.us.i + %62 = load ptr, ptr %61, align 8, !tbaa !2125 + br label %63 -61: ; preds = %sqlite3StrICmp.exit.i.us.i, %.lr.ph.i.us.i +63: ; preds = %sqlite3StrICmp.exit.i.us.i, %.lr.ph.i.us.i %indvars.iv.i.us.i = phi i64 [ 0, %.lr.ph.i.us.i ], [ %indvars.iv.next.i.us.i, %sqlite3StrICmp.exit.i.us.i ] - %62 = getelementptr inbounds nuw [1 x %struct.IdList_item], ptr %58, i64 0, i64 %indvars.iv.i.us.i - %63 = load ptr, ptr %62, align 8, !tbaa !1931 - br label %64 + %64 = getelementptr inbounds nuw [1 x %struct.IdList_item], ptr %60, i64 0, i64 %indvars.iv.i.us.i + %65 = load ptr, ptr %64, align 8, !tbaa !1931 + br label %66 -64: ; preds = %77, %61 - %.013.i.i.us.i = phi ptr [ %60, %61 ], [ %79, %77 ] - %.0.i.i.us.i = phi ptr [ %63, %61 ], [ %78, %77 ] - %65 = load i8, ptr %.0.i.i.us.i, align 1, !tbaa !198 - %66 = load i8, ptr %.013.i.i.us.i, align 1, !tbaa !198 - %67 = icmp eq i8 %65, %66 - br i1 %67, label %75, label %68 +66: ; preds = %79, %63 + %.013.i.i.us.i = phi ptr [ %62, %61 ], [ %81, %77 ] + %.0.i.i.us.i = phi ptr [ %65, %61 ], [ %80, %77 ] + %67 = load i8, ptr %.0.i.i.us.i, align 1, !tbaa !198 + %68 = load i8, ptr %.013.i.i.us.i, align 1, !tbaa !198 + %69 = icmp eq i8 %67, %68 + br i1 %69, label %77, label %70 -68: ; preds = %64 - %69 = zext i8 %65 to i64 - %70 = getelementptr inbounds nuw [274 x i8], ptr @sqlite3UpperToLower, i64 0, i64 %69 - %71 = load i8, ptr %70, align 1, !tbaa !198 - %72 = zext i8 %66 to i64 - %73 = getelementptr inbounds nuw [274 x i8], ptr @sqlite3UpperToLower, i64 0, i64 %72 - %74 = load i8, ptr %73, align 1, !tbaa !198 - %.not.i.i.us.i = icmp eq i8 %71, %74 - br i1 %.not.i.i.us.i, label %77, label %sqlite3StrICmp.exit.i.us.i +70: ; preds = %66 + %71 = zext i8 %67 to i64 + %72 = getelementptr inbounds nuw [274 x i8], ptr @sqlite3UpperToLower, i64 0, i64 %71 + %73 = load i8, ptr %72, align 1, !tbaa !198 + %74 = zext i8 %68 to i64 + %75 = getelementptr inbounds nuw [274 x i8], ptr @sqlite3UpperToLower, i64 0, i64 %74 + %76 = load i8, ptr %75, align 1, !tbaa !198 + %.not.i.i.us.i = icmp eq i8 %73, %76 + br i1 %.not.i.i.us.i, label %79, label %sqlite3StrICmp.exit.i.us.i -sqlite3StrICmp.exit.i.us.i: ; preds = %68 +sqlite3StrICmp.exit.i.us.i: ; preds = %70 %indvars.iv.next.i.us.i = add nuw nsw i64 %indvars.iv.i.us.i, 1 %exitcond.not.i.us.i = icmp eq i64 %indvars.iv.next.i.us.i, %wide.trip.count.i.i - br i1 %exitcond.not.i.us.i, label %sqlite3IdListIndex.exit.thread.loopexit.us.i, label %61, !llvm.loop !2652 + br i1 %exitcond.not.i.us.i, label %sqlite3IdListIndex.exit.thread.loopexit.us.i, label %63, !llvm.loop !2652 -75: ; preds = %64 - %76 = icmp eq i8 %65, 0 - br i1 %76, label %checkColumnOverlap.exit, label %77 +77: ; preds = %66 + %78 = icmp eq i8 %67, 0 + br i1 %78, label %checkColumnOverlap.exit, label %79 -77: ; preds = %75, %68 - %78 = getelementptr inbounds nuw i8, ptr %.0.i.i.us.i, i64 1 - %79 = getelementptr inbounds nuw i8, ptr %.013.i.i.us.i, i64 1 - br label %64 +79: ; preds = %77, %70 + %80 = getelementptr inbounds nuw i8, ptr %.0.i.i.us.i, i64 1 + %81 = getelementptr inbounds nuw i8, ptr %.013.i.i.us.i, i64 1 + br label %66 sqlite3IdListIndex.exit.thread.loopexit.us.i: ; preds = %sqlite3StrICmp.exit.i.us.i %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, %wide.trip.count.i br i1 %exitcond.not.i, label %checkColumnOverlap.exit.thread, label %.lr.ph.i.us.i, !llvm.loop !3237 -checkColumnOverlap.exit: ; preds = %75, %50 - %80 = getelementptr inbounds nuw i8, ptr %.02140, i64 18 - %81 = load i8, ptr %80, align 2, !tbaa !121 - %.not27 = icmp eq i8 %81, 0 - br i1 %.not27, label %82, label %checkColumnOverlap.exit.thread - -82: ; preds = %checkColumnOverlap.exit - %83 = load ptr, ptr %13, align 8, !tbaa !2183 - %.not.i = icmp eq ptr %83, null - %..i = select i1 %.not.i, ptr %0, ptr %83 - %84 = getelementptr inbounds nuw i8, ptr %..i, i64 168 - %.0.i35 = load ptr, ptr %84, align 8, !tbaa !3228 +checkColumnOverlap.exit: ; preds = %77, %52 + %82 = getelementptr inbounds nuw i8, ptr %.02140, i64 18 + %83 = load i8, ptr %82, align 2, !tbaa !121 + %.not27 = icmp eq i8 %83, 0 + br i1 %.not27, label %84, label %checkColumnOverlap.exit.thread + +84: ; preds = %checkColumnOverlap.exit + %85 = load ptr, ptr %13, align 8, !tbaa !2183 + %.not.i = icmp eq ptr %85, null + %..i = select i1 %.not.i, ptr %0, ptr %85 + %86 = getelementptr inbounds nuw i8, ptr %..i, i64 168 + %.0.i35 = load ptr, ptr %86, align 8, !tbaa !3228 %.not19.i36 = icmp eq ptr %.0.i35, null br i1 %.not19.i36, label %getRowTrigger.exit, label %.lr.ph -.lr.ph: ; preds = %82, %.critedge2.i +.lr.ph: ; preds = %84, %.critedge2.i %.0.i37 = phi ptr [ %.0.i, %.critedge2.i ], [ %.0.i35, %82 ] - %85 = load ptr, ptr %.0.i37, align 8, !tbaa !3229 - %.not20.i = icmp eq ptr %85, %.02140 - br i1 %.not20.i, label %86, label %.critedge2.i - -86: ; preds = %.lr.ph - %87 = getelementptr inbounds nuw i8, ptr %.0.i37, i64 24 - %88 = load i32, ptr %87, align 8, !tbaa !3230 - %.not21.i = icmp eq i32 %88, %6 + %87 = load ptr, ptr %.0.i37, align 8, !tbaa !3229 + %.not20.i = icmp eq ptr %87, %.02140 + br i1 %.not20.i, label %88, label %.critedge2.i + +88: ; preds = %.lr.ph + %89 = getelementptr inbounds nuw i8, ptr %.0.i37, i64 24 + %90 = load i32, ptr %89, align 8, !tbaa !3230 + %.not21.i = icmp eq i32 %90, %6 br i1 %.not21.i, label %getRowTrigger.exit.thread, label %.critedge2.i -.critedge2.i: ; preds = %86, %.lr.ph - %89 = getelementptr inbounds nuw i8, ptr %.0.i37, i64 8 - %.0.i = load ptr, ptr %89, align 8, !tbaa !3228 +.critedge2.i: ; preds = %88, %.lr.ph + %91 = getelementptr inbounds nuw i8, ptr %.0.i37, i64 8 + %.0.i = load ptr, ptr %91, align 8, !tbaa !3228 %.not19.i = icmp eq ptr %.0.i, null br i1 %.not19.i, label %getRowTrigger.exit, label %.lr.ph, !llvm.loop !3231 -getRowTrigger.exit: ; preds = %.critedge2.i, %82 - %90 = tail call fastcc ptr @codeRowTrigger(ptr noundef %0, ptr noundef nonnull %.02140, ptr noundef nonnull %5, i32 noundef %6) - %91 = load ptr, ptr %0, align 8, !tbaa !497 - %92 = getelementptr inbounds nuw i8, ptr %91, i64 84 - store i32 -1, ptr %92, align 4, !tbaa !297 - %.not28 = icmp eq ptr %90, null +getRowTrigger.exit: ; preds = %.critedge2.i, %84 + %92 = tail call fastcc ptr @codeRowTrigger(ptr noundef %0, ptr noundef nonnull %.02140, ptr noundef nonnull %5, i32 noundef %6) + %93 = load ptr, ptr %0, align 8, !tbaa !497 + %94 = getelementptr inbounds nuw i8, ptr %93, i64 84 + store i32 -1, ptr %94, align 4, !tbaa !297 + %.not28 = icmp eq ptr %92, null br i1 %.not28, label %checkColumnOverlap.exit.thread, label %getRowTrigger.exit.thread -getRowTrigger.exit.thread: ; preds = %86, %getRowTrigger.exit - %.1.i33 = phi ptr [ %90, %getRowTrigger.exit ], [ %.0.i37, %86 ] - %93 = getelementptr inbounds nuw i8, ptr %.1.i33, i64 28 - %94 = getelementptr inbounds nuw [2 x i32], ptr %93, i64 0, i64 %14 - %95 = load i32, ptr %94, align 4, !tbaa !16 - %96 = or i32 %95, %.02239 +getRowTrigger.exit.thread: ; preds = %88, %getRowTrigger.exit + %.1.i33 = phi ptr [ %92, %getRowTrigger.exit ], [ %.0.i37, %86 ] + %95 = getelementptr inbounds nuw i8, ptr %.1.i33, i64 28 + %96 = getelementptr inbounds nuw [2 x i32], ptr %95, i64 0, i64 %14 + %97 = load i32, ptr %96, align 4, !tbaa !16 + %98 = or i32 %97, %.02239 br label %checkColumnOverlap.exit.thread checkColumnOverlap.exit.thread: ; preds = %sqlite3IdListIndex.exit.thread.loopexit.us.i, %.lr.ph.i, %.preheader.i, %getRowTrigger.exit, %getRowTrigger.exit.thread, %checkColumnOverlap.exit, %.lr.ph42.split, %45 - %.2 = phi i32 [ %.02239, %45 ], [ %.02239, %.lr.ph42.split ], [ -1, %checkColumnOverlap.exit ], [ %96, %getRowTrigger.exit.thread ], [ %.02239, %getRowTrigger.exit ], [ %.02239, %.preheader.i ], [ %.02239, %.lr.ph.i ], [ %.02239, %sqlite3IdListIndex.exit.thread.loopexit.us.i ] - %97 = getelementptr inbounds nuw i8, ptr %.02140, i64 64 - %98 = load ptr, ptr %97, align 8, !tbaa !1744 - %.not24 = icmp eq ptr %98, null + %.2 = phi i32 [ %.02239, %45 ], [ %.02239, %.lr.ph42.split ], [ -1, %checkColumnOverlap.exit ], [ %98, %getRowTrigger.exit.thread ], [ %.02239, %getRowTrigger.exit ], [ %.02239, %.preheader.i ], [ %.02239, %.lr.ph.i ], [ %.02239, %sqlite3IdListIndex.exit.thread.loopexit.us.i ] + %99 = getelementptr inbounds nuw i8, ptr %.02140, i64 64 + %100 = load ptr, ptr %99, align 8, !tbaa !1744 + %.not24 = icmp eq ptr %100, null br i1 %.not24, label %.loopexit, label %.lr.ph42.split, !llvm.loop !3232 .loopexit: ; preds = %checkColumnOverlap.exit.thread, %checkColumnOverlap.exit.thread.us, %.preheader, %7 diff --git a/bench/wireshark/optimized/packet-dof.ll b/bench/wireshark/optimized/packet-dof.ll index 2077d3c78d5..8737ef42288 100644 --- a/bench/wireshark/optimized/packet-dof.ll +++ b/bench/wireshark/optimized/packet-dof.ll @@ -5861,9 +5861,9 @@ dof_oid_create_standard_string.exit: ; preds = %6, %12, %18 %25 = and i8 %23, 63 %.020.i = select i1 %24, i8 %25, i8 %23 %26 = zext nneg i8 %.020.i to i32 - br i1 %24, label %.lr.ph.i.preheader, label %read_c4.exit + br i1 %24, label %.lr.ph.i, label %read_c4.exit -.lr.ph.i.preheader: ; preds = %22 +.lr.ph.i:; preds = %22 %27 = and i8 %23, 64 %.not81 = icmp eq i8 %27, 0 %..i80 = select i1 %.not81, i32 1, i32 3 @@ -7132,7 +7132,7 @@ DOFObjectID_GetIDClass.exit: ; preds = %.lr.ph.i.i DOFObjectID_GetIDClass.exit.thread: ; preds = %DOFObjectID_GetIDClass.exit %switch = icmp eq i8 %9, 2 - %spec.select151152 = select i1 %switch, i64 1, i64 3 + %spec.select151 = select i1 %switch, i64 1, i64 3 br label %.lr.ph.i.i49 .lr.ph.i.i49: ; preds = %.lr.ph.i.i49, %DOFObjectID_GetIDClass.exit.thread @@ -7144,7 +7144,7 @@ DOFObjectID_GetIDClass.exit.thread: ; preds = %DOFObjectID_GetIDCl %58 = load i8, ptr %57, align 1 %59 = zext i8 %58 to i32 %60 = or disjoint i32 %56, %59 - %exitcond.not.i.i53 = icmp eq i64 %spec.select151152, %indvars.iv.i.i50 + %exitcond.not.i.i53 = icmp eq i64 %spec.select151, %indvars.iv.i.i50 br i1 %exitcond.not.i.i53, label %DOFObjectID_GetIDClass.exit56, label %.lr.ph.i.i49, !llvm.loop !38 DOFObjectID_GetIDClass.exit56: ; preds = %.lr.ph.i.i49 @@ -8424,14 +8424,14 @@ define internal i32 @dissect_dnp_1(ptr noundef %0, ptr noundef %1, ptr noundef % br label %.lr.ph .lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph - %.0112175 = phi i32 [ %31, %.lr.ph ], [ 0, %.lr.ph.preheader ] - %.0116174 = phi i32 [ %32, %.lr.ph ], [ 0, %.lr.ph.preheader ] - %27 = shl i32 %.0112175, 8 - %28 = add nuw nsw i32 %.0116174, 2 + %.0112173 = phi i32 [ %31, %.lr.ph ], [ 0, %.lr.ph.preheader ] + %.0116172 = phi i32 [ %32, %.lr.ph ], [ 0, %.lr.ph.preheader ] + %27 = shl i32 %.0112173, 8 + %28 = add nuw nsw i32 %.0116172, 2 %29 = tail call zeroext i8 @tvb_get_uint8(ptr noundef %0, i32 noundef %28) %30 = zext i8 %29 to i32 %31 = or disjoint i32 %27, %30 - %32 = add nuw nsw i32 %.0116174, 1 + %32 = add nuw nsw i32 %.0116172, 1 %exitcond.not = icmp eq i32 %32, %24 br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !51 @@ -8448,9 +8448,9 @@ define internal i32 @dissect_dnp_1(ptr noundef %0, ptr noundef %1, ptr noundef % 37: ; preds = %._crit_edge, %34 %38 = phi i32 [ %.0108167.ph, %34 ], [ %33, %._crit_edge ] - %.0111166185190 = phi i32 [ %.0111166.ph, %34 ], [ %17, %._crit_edge ] + %.0111166183188 = phi i32 [ %.0111166.ph, %34 ], [ %17, %._crit_edge ] %.1113 = phi i32 [ %36, %34 ], [ %31, %._crit_edge ] - %39 = and i32 %.0111166185190, 4 + %39 = and i32 %.0111166183188, 4 %.not125 = icmp eq i32 %39, 0 br i1 %.not125, label %63, label %40 @@ -8461,9 +8461,9 @@ define internal i32 @dissect_dnp_1(ptr noundef %0, ptr noundef %1, ptr noundef % %.020.i = select i1 %42, i8 %43, i8 %41 %44 = zext nneg i8 %.020.i to i32 %.02328.i = add nuw nsw i32 %38, 1 - br i1 %42, label %.lr.ph.i.preheader, label %read_c3.exit + br i1 %42, label %.lr.ph.i, label %read_c3.exit -.lr.ph.i.preheader: ; preds = %40 +.lr.ph.i: ; preds = %40 %45 = and i8 %41, 64 %.not170 = icmp eq i8 %45, 0 %..i169 = select i1 %.not170, i32 1, i32 2 @@ -8533,7 +8533,7 @@ proto_item_set_generated.exit: ; preds = %69, %66, %63, %vali %.0161 = phi i32 [ %.022.lcssa.i, %validate_c3.exit ], [ 0, %63 ], [ 0, %66 ], [ 0, %69 ] %.0114 = phi i32 [ %62, %validate_c3.exit ], [ %.1113, %63 ], [ %.1113, %66 ], [ %.1113, %69 ] %.1 = phi i32 [ %.023.lcssa.i, %validate_c3.exit ], [ %38, %63 ], [ %38, %66 ], [ %38, %69 ] - %73 = and i32 %.0111166185190, 8 + %73 = and i32 %.0111166183188, 8 %.not126 = icmp eq i32 %73, 0 br i1 %.not126, label %97, label %74 @@ -8544,9 +8544,9 @@ proto_item_set_generated.exit: ; preds = %69, %66, %63, %vali %.020.i130 = select i1 %76, i8 %77, i8 %75 %78 = zext nneg i8 %.020.i130 to i32 %.02328.i131 = add i32 %.1, 1 - br i1 %76, label %.lr.ph.i135.preheader, label %read_c3.exit141 + br i1 %76, label %.lr.ph.i135, label %read_c3.exit141 -.lr.ph.i135.preheader: ; preds = %74 +.lr.ph.i135: ; preds = %74 %79 = and i8 %75, 64 %.not172 = icmp eq i8 %79, 0 %..i128171 = select i1 %.not172, i32 1, i32 2 @@ -9185,7 +9185,7 @@ proto_item_set_generated.exit527: ; preds = %176, %173, %dof_oid 216: ; preds = %210 br label %242 -default.unreachable682: ; preds = %210 +default.unreachable680: ; preds = %210 unreachable .thread608: ; preds = %210 @@ -9234,12 +9234,12 @@ default.unreachable682: ; preds = %210 br label %proto_item_set_generated.exit530 242: ; preds = %210, %216 - %.sink695.in = phi ptr [ %143, %216 ], [ %105, %210 ] + %.sink693.in = phi ptr [ %143, %216 ], [ %105, %210 ] %.sink.in = phi ptr [ %153, %216 ], [ %115, %210 ] store i8 1, ptr %215, align 8 - %.sink695 = load i32, ptr %.sink695.in, align 4 + %.sink693 = load i32, ptr %.sink693.in, align 4 %243 = getelementptr inbounds nuw i8, ptr %15, i64 88 - store i32 %.sink695, ptr %243, align 8 + store i32 %.sink693, ptr %243, align 8 %.sink = load ptr, ptr %.sink.in, align 8 %244 = getelementptr inbounds nuw i8, ptr %15, i64 96 store ptr %.sink, ptr %244, align 8 @@ -9458,31 +9458,31 @@ validate_c4.exit: ; preds = %282, %285 360: ; preds = %355, %353, %350 %361 = load ptr, ptr %327, align 8 %362 = icmp eq ptr %328, %15 - %or.cond509669 = or i1 %.not478, %362 - br i1 %or.cond509669, label %.preheader.preheader, label %.lr.ph + %or.cond509667 = or i1 %.not478, %362 + br i1 %or.cond509667, label %.preheader.preheader, label %.lr.ph .lr.ph: ; preds = %360 %363 = load i32, ptr @globals.8, align 4 br label %364 364: ; preds = %.lr.ph, %372 - %.0434672 = phi ptr [ %328, %.lr.ph ], [ %366, %372 ] - %.0436671 = phi ptr [ %361, %.lr.ph ], [ %.1437, %372 ] - %.0442670 = phi i32 [ 0, %.lr.ph ], [ %.1443, %372 ] - %365 = getelementptr inbounds nuw i8, ptr %.0434672, i64 152 + %.0434670 = phi ptr [ %328, %.lr.ph ], [ %366, %372 ] + %.0436669 = phi ptr [ %361, %.lr.ph ], [ %.1437, %372 ] + %.0442668 = phi i32 [ 0, %.lr.ph ], [ %.1443, %372 ] + %365 = getelementptr inbounds nuw i8, ptr %.0434670, i64 152 %366 = load ptr, ptr %365, align 8 - %367 = add i32 %.0442670, 1 + %367 = add i32 %.0442668, 1 %368 = icmp ugt i32 %367, %363 br i1 %368, label %369, label %372 369: ; preds = %364 - %370 = getelementptr inbounds nuw i8, ptr %.0436671, i64 152 + %370 = getelementptr inbounds nuw i8, ptr %.0436669, i64 152 %371 = load ptr, ptr %370, align 8 br label %372 372: ; preds = %369, %364 - %.1443 = phi i32 [ %.0442670, %369 ], [ %367, %364 ] - %.1437 = phi ptr [ %371, %369 ], [ %.0436671, %364 ] + %.1443 = phi i32 [ %.0442668, %369 ], [ %367, %364 ] + %.1437 = phi ptr [ %371, %369 ], [ %.0436669, %364 ] %.not484 = icmp eq ptr %366, null %373 = icmp eq ptr %366, %15 %or.cond509 = or i1 %.not484, %373 @@ -9616,9 +9616,9 @@ validate_c4.exit: ; preds = %282, %285 %.020.i534 = select i1 %446, i8 %447, i8 %445 %448 = zext nneg i8 %.020.i534 to i32 %.02328.i535 = add i32 %.5426, 2 - br i1 %446, label %.lr.ph.i539.preheader, label %read_c4.exit545 + br i1 %446, label %.lr.ph.i539, label %read_c4.exit545 -.lr.ph.i539.preheader: ; preds = %444 +.lr.ph.i539: ; preds = %444 %449 = and i8 %445, 64 %.not660 = icmp eq i8 %449, 0 %..i532659 = select i1 %.not660, i32 1, i32 3 @@ -9679,27 +9679,27 @@ validate_c4.exit548: ; preds = %464, %461, %423 472: ; preds = %469 %473 = getelementptr inbounds nuw i8, ptr %468, i64 8 - %.0418673 = load ptr, ptr %473, align 8 - %.not496674 = icmp eq ptr %.0418673, null - br i1 %.not496674, label %.critedge, label %.lr.ph676 + %.0418671 = load ptr, ptr %473, align 8 + %.not496672 = icmp eq ptr %.0418671, null + br i1 %.not496672, label %.critedge, label %.lr.ph674 -.lr.ph676: ; preds = %472, %476 - %.0418675 = phi ptr [ %.0418, %476 ], [ %.0418673, %472 ] - %474 = load i32, ptr %.0418675, align 8 +.lr.ph674: ; preds = %472, %476 + %.0418673 = phi ptr [ %.0418, %476 ], [ %.0418671, %472 ] + %474 = load i32, ptr %.0418673, align 8 %475 = icmp eq i32 %spec.select, %474 br i1 %475, label %478, label %476 -476: ; preds = %.lr.ph676 - %477 = getelementptr inbounds nuw i8, ptr %.0418675, i64 32 +476: ; preds = %.lr.ph674 + %477 = getelementptr inbounds nuw i8, ptr %.0418673, i64 32 %.0418 = load ptr, ptr %477, align 8 %.not496 = icmp eq ptr %.0418, null - br i1 %.not496, label %.critedge, label %.lr.ph676, !llvm.loop !56 + br i1 %.not496, label %.critedge, label %.lr.ph674, !llvm.loop !56 -478: ; preds = %.lr.ph676 - %479 = getelementptr inbounds nuw i8, ptr %.0418675, i64 40 +478: ; preds = %.lr.ph674 + %479 = getelementptr inbounds nuw i8, ptr %.0418673, i64 40 %480 = load ptr, ptr %479, align 8 store ptr %480, ptr %18, align 8 - store ptr %.0418675, ptr %470, align 8 + store ptr %.0418673, ptr %470, align 8 br label %.critedge .critedge: ; preds = %476, %472, %478, %469, %validate_c4.exit548 @@ -9714,9 +9714,9 @@ validate_c4.exit548: ; preds = %464, %461, %423 %.020.i551 = select i1 %484, i8 %485, i8 %483 %486 = zext nneg i8 %.020.i551 to i32 %.02328.i552 = add i32 %.7428, 1 - br i1 %484, label %.lr.ph.i556.preheader, label %read_c4.exit562 + br i1 %484, label %.lr.ph.i556, label %read_c4.exit562 -.lr.ph.i556.preheader: ; preds = %482 +.lr.ph.i556: ; preds = %482 %487 = and i8 %483, 64 %.not662 = icmp eq i8 %487, 0 %..i549661 = select i1 %.not662, i32 1, i32 3 @@ -10396,28 +10396,28 @@ read_c2.exit: ; preds = %6, %13 br label %validate_c2.exit validate_c2.exit: ; preds = %read_c2.exit, %19 - %.not34 = icmp eq i16 %.0.ph.i, 0 - br i1 %.not34, label %._crit_edge, label %.lr.ph + %.not33 = icmp eq i16 %.0.ph.i, 0 + br i1 %.not33, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %validate_c2.exit, %validate_c4.exit %.in = phi i16 [ %21, %validate_c4.exit ], [ %.0.ph.i, %validate_c2.exit ] - %.035 = phi i32 [ %.023.lcssa.i, %validate_c4.exit ], [ %.sink.i, %validate_c2.exit ] + %.034 = phi i32 [ %.023.lcssa.i, %validate_c4.exit ], [ %.sink.i, %validate_c2.exit ] %21 = add nsw i16 %.in, -1 - %22 = tail call zeroext i8 @tvb_get_uint8(ptr noundef %0, i32 noundef %.035) + %22 = tail call zeroext i8 @tvb_get_uint8(ptr noundef %0, i32 noundef %.034) %23 = icmp slt i8 %22, 0 %24 = and i8 %22, 63 %.020.i = select i1 %23, i8 %24, i8 %22 %25 = zext nneg i8 %.020.i to i32 %.02328.i = add i32 %.035, 1 - br i1 %23, label %.lr.ph.i.preheader, label %read_c4.exit + br i1 %23, label %.lr.ph.i, label %read_c4.exit -.lr.ph.i.preheader: ; preds = %.lr.ph +.lr.ph.i:; preds = %.lr.ph %26 = and i8 %22, 64 %.not33 = icmp eq i8 %26, 0 %..i32 = select i1 %.not33, i32 1, i32 3 br label %.lr.ph.i -.lr.ph.i: ; preds = %.lr.ph.i.preheader, %.lr.ph.i +.lr.ph.i: ; preds = %.lr.ph.i, %.lr.ph.i %.02331.i = phi i32 [ %.023.i, %.lr.ph.i ], [ %.02328.i, %.lr.ph.i.preheader ] %.030.i = phi i32 [ %31, %.lr.ph.i ], [ 1, %.lr.ph.i.preheader ] %.02229.i = phi i32 [ %30, %.lr.ph.i ], [ %25, %.lr.ph.i.preheader ] @@ -10446,8 +10446,8 @@ switch.lookup: ; preds = %read_c4.exit 34: ; preds = %switch.lookup, %read_c4.exit %.023 = phi ptr [ @.str.180, %read_c4.exit ], [ %switch.load, %switch.lookup ] %35 = load i32, ptr @hf_security_10_permission_group_identifier, align 4 - %36 = sub i32 %.023.lcssa.i, %.035 - %37 = tail call ptr (ptr, i32, ptr, i32, i32, i32, ptr, ...) @proto_tree_add_uint_format_value(ptr noundef %2, i32 noundef %35, ptr noundef %0, i32 noundef %.035, i32 noundef %36, i32 noundef %.022.lcssa.i, ptr noundef nonnull @.str.736, i32 noundef %.022.lcssa.i, ptr noundef nonnull %.023) + %36 = sub i32 %.023.lcssa.i, %.034 + %37 = tail call ptr (ptr, i32, ptr, i32, i32, i32, ptr, ...) @proto_tree_add_uint_format_value(ptr noundef %2, i32 noundef %35, ptr noundef %0, i32 noundef %.034, i32 noundef %36, i32 noundef %.022.lcssa.i, ptr noundef nonnull @.str.736, i32 noundef %.022.lcssa.i, ptr noundef nonnull %.023) %38 = icmp ult i32 %.022.lcssa.i, 128 %or.cond.i25 = and i1 %23, %38 br i1 %or.cond.i25, label %39, label %41 @@ -14868,9 +14868,9 @@ define internal fastcc range(i32 0, 32774) i32 @dissect_2008_4_tep_2_2_1(ptr nou %13 = and i8 %11, 63 %.020.i = select i1 %12, i8 %13, i8 %11 %14 = zext nneg i8 %.020.i to i32 - br i1 %12, label %.lr.ph.i.preheader, label %._crit_edge.i + br i1 %12, label %.lr.ph.i, label %._crit_edge.i -.lr.ph.i.preheader: ; preds = %10 +.lr.ph.i:; preds = %10 %15 = and i8 %11, 64 %.not = icmp eq i8 %15, 0 %..i1 = select i1 %.not, i32 1, i32 3 @@ -15132,8 +15132,8 @@ validate_c2.exit: ; preds = %read_c2.exit, %19 %32 = load i32, ptr @hf_security_12_count, align 4 %33 = tail call ptr @proto_tree_add_item(ptr noundef %25, i32 noundef %32, ptr noundef %26, i32 noundef 0, i32 noundef 1, i32 noundef 0) %34 = icmp ult i8 %27, 64 - %.not6.i = icmp eq i8 %29, 0 - %or.cond.i25 = select i1 %34, i1 true, i1 %.not6.i + %.not5.i = icmp eq i8 %29, 0 + %or.cond.i25 = select i1 %34, i1 true, i1 %.not5.i br i1 %or.cond.i25, label %dissect_2008_16_security_12.exit, label %.lr.ph.preheader.i .lr.ph.preheader.i: ; preds = %.lr.ph @@ -15142,9 +15142,9 @@ validate_c2.exit: ; preds = %read_c2.exit, %19 .lr.ph.i: ; preds = %validate_c4.exit.i, %.lr.ph.preheader.i %.in.i = phi i16 [ %36, %validate_c4.exit.i ], [ %35, %.lr.ph.preheader.i ] - %.0277.i = phi i32 [ %.023.lcssa.i.i, %validate_c4.exit.i ], [ 1, %.lr.ph.preheader.i ] + %.0276.i = phi i32 [ %.023.lcssa.i.i, %validate_c4.exit.i ], [ 1, %.lr.ph.preheader.i ] %36 = add nsw i16 %.in.i, -1 - %37 = tail call zeroext i8 @tvb_get_uint8(ptr noundef %26, i32 noundef %.0277.i) + %37 = tail call zeroext i8 @tvb_get_uint8(ptr noundef %26, i32 noundef %.0276.i) %38 = icmp slt i8 %37, 0 %39 = and i8 %37, 63 %.020.i.i = select i1 %38, i8 %39, i8 %37 @@ -15152,13 +15152,13 @@ validate_c2.exit: ; preds = %read_c2.exit, %19 %.02328.i.i = add i32 %.0277.i, 1 br i1 %38, label %.lr.ph.i.preheader.i, label %read_c4.exit.i -.lr.ph.i.preheader.i: ; preds = %.lr.ph.i +.lr.ph.i.preheader.i:; preds = %.lr.ph.i %41 = and i8 %37, 64 %.not5.i = icmp eq i8 %41, 0 %..i4.i = select i1 %.not5.i, i32 1, i32 3 br label %.lr.ph.i.i -.lr.ph.i.i: ; preds = %.lr.ph.i.i, %.lr.ph.i.preheader.i +.lr.ph.i.i: ; preds = %.lr.ph.i.i, %.lr.ph.i.preheader.i %.02331.i.i = phi i32 [ %.023.i.i, %.lr.ph.i.i ], [ %.02328.i.i, %.lr.ph.i.preheader.i ] %.030.i.i = phi i32 [ %46, %.lr.ph.i.i ], [ 1, %.lr.ph.i.preheader.i ] %.02229.i.i = phi i32 [ %45, %.lr.ph.i.i ], [ %40, %.lr.ph.i.preheader.i ] @@ -15187,8 +15187,8 @@ switch.lookup: ; preds = %read_c4.exit.i 49: ; preds = %switch.lookup, %read_c4.exit.i %.026.i = phi ptr [ @.str.180, %read_c4.exit.i ], [ %switch.load, %switch.lookup ] %50 = load i32, ptr @hf_security_12_permission_group_identifier, align 4 - %51 = sub i32 %.023.lcssa.i.i, %.0277.i - %52 = tail call ptr (ptr, i32, ptr, i32, i32, i32, ptr, ...) @proto_tree_add_uint_format_value(ptr noundef %25, i32 noundef %50, ptr noundef %26, i32 noundef %.0277.i, i32 noundef %51, i32 noundef %.022.lcssa.i.i, ptr noundef nonnull @.str.736, i32 noundef %.022.lcssa.i.i, ptr noundef nonnull %.026.i) + %51 = sub i32 %.023.lcssa.i.i, %.0276.i + %52 = tail call ptr (ptr, i32, ptr, i32, i32, i32, ptr, ...) @proto_tree_add_uint_format_value(ptr noundef %25, i32 noundef %50, ptr noundef %26, i32 noundef %.0276.i, i32 noundef %51, i32 noundef %.022.lcssa.i.i, ptr noundef nonnull @.str.736, i32 noundef %.022.lcssa.i.i, ptr noundef nonnull %.026.i) %53 = icmp ult i32 %.022.lcssa.i.i, 128 %or.cond.i.i = and i1 %38, %53 br i1 %or.cond.i.i, label %54, label %56 diff --git a/bench/wireshark/optimized/packet-ieee80211.ll b/bench/wireshark/optimized/packet-ieee80211.ll index 92af4eecf18..9dc164523df 100644 --- a/bench/wireshark/optimized/packet-ieee80211.ll +++ b/bench/wireshark/optimized/packet-ieee80211.ll @@ -46615,14 +46615,14 @@ define internal fastcc noundef i32 @dissect_ieee80211_block_ack_details(ptr noun 116: ; preds = %114, %113 %117 = lshr i16 %10, 12 - %narrow304 = add nuw nsw i16 %117, 1 - %118 = zext nneg i16 %narrow304 to i32 + %narrow303 = add nuw nsw i16 %117, 1 + %118 = zext nneg i16 %narrow303 to i32 %119 = shl nuw nsw i32 %118, 2 %120 = load i32, ptr @ett_block_ack, align 4 %121 = call ptr @proto_tree_add_subtree(ptr noundef %17, ptr noundef %0, i32 noundef %21, i32 noundef %119, i32 noundef %120, ptr noundef null, ptr noundef nonnull @.str.9856) - br i1 %5, label %.preheader305, label %.preheader306 + br i1 %5, label %.preheader304, label %.preheader305 -.preheader305: ; preds = %116, %.preheader305 +.preheader304: ; preds = %116, %.preheader304 %.1276 = phi i32 [ %135, %.preheader305 ], [ %21, %116 ] %.1253275 = phi i32 [ %136, %.preheader305 ], [ 0, %116 ] %122 = call zeroext i8 @tvb_get_uint8(ptr noundef %0, i32 noundef %.1276) @@ -46641,9 +46641,9 @@ define internal fastcc noundef i32 @dissect_ieee80211_block_ack_details(ptr noun %135 = add i32 %.1276, 4 %136 = add nuw nsw i32 %.1253275, 1 %exitcond288.not = icmp eq i32 %136, %118 - br i1 %exitcond288.not, label %.loopexit, label %.preheader305, !llvm.loop !228 + br i1 %exitcond288.not, label %.loopexit, label %.preheader304, !llvm.loop !228 -.preheader306: ; preds = %116, %.preheader306 +.preheader305: ; preds = %116, %.preheader305 %.2274 = phi i32 [ %153, %.preheader306 ], [ %21, %116 ] %.2254273 = phi i32 [ %154, %.preheader306 ], [ 0, %116 ] %137 = call zeroext i8 @tvb_get_uint8(ptr noundef %0, i32 noundef %.2274) @@ -46665,7 +46665,7 @@ define internal fastcc noundef i32 @dissect_ieee80211_block_ack_details(ptr noun %153 = add i32 %.2274, 12 %154 = add nuw nsw i32 %.2254273, 1 %exitcond287.not = icmp eq i32 %154, %118 - br i1 %exitcond287.not, label %.loopexit, label %.preheader306, !llvm.loop !229 + br i1 %exitcond287.not, label %.loopexit, label %.preheader305, !llvm.loop !229 155: ; preds = %7 %156 = load i32, ptr @hf_ieee80211_ff_block_ack_ssc, align 4 @@ -46808,7 +46808,7 @@ define internal fastcc noundef i32 @dissect_ieee80211_block_ack_details(ptr noun %241 = icmp sgt i32 %240, %23 br i1 %241, label %.lr.ph, label %.loopexit, !llvm.loop !232 -.loopexit: ; preds = %237, %.preheader306, %.preheader305, %.preheader, %155, %163, %82, %108, %37, %77, %28, %33, %7 +.loopexit: ; preds = %237, %.preheader305, %.preheader304, %.preheader, %155, %163, %82, %108, %37, %77, %28, %33, %7 %.0251 = phi i32 [ %21, %7 ], [ %32, %28 ], [ %36, %33 ], [ %42, %37 ], [ %78, %77 ], [ %86, %82 ], [ %112, %108 ], [ %162, %155 ], [ %166, %163 ], [ %21, %.preheader ], [ %135, %.preheader305 ], [ %153, %.preheader306 ], [ %.4, %237 ] %242 = load ptr, ptr %8, align 8 %243 = sub i32 %.0251, %3 diff --git a/bench/wireshark/optimized/packet-usb-audio.ll b/bench/wireshark/optimized/packet-usb-audio.ll index 2f0f1982b49..701649bfd07 100644 --- a/bench/wireshark/optimized/packet-usb-audio.ll +++ b/bench/wireshark/optimized/packet-usb-audio.ll @@ -3333,35 +3333,35 @@ has_data_stage.exit: ; preds = %74 85: ; preds = %has_data_stage.exit call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #9 - %86 = load i32, ptr @ett_parameter_block, align 4 - %87 = call ptr @proto_tree_add_subtree(ptr noundef %2, ptr noundef %0, i32 noundef %.0, i32 noundef -1, i32 noundef %86, ptr noundef nonnull %6, ptr noundef nonnull %.0618097) - br i1 %.not708296, label %92, label %88 - -88: ; preds = %85 - %89 = load i32, ptr %.0608495, align 4 - %90 = call ptr @proto_tree_add_item(ptr noundef %87, i32 noundef %89, ptr noundef %0, i32 noundef %.0, i32 noundef %.0598694, i32 noundef -2147483648) - %91 = add i32 %.0, %.0598694 - br label %92 - -92: ; preds = %88, %85 - %.2 = phi i32 [ %91, %88 ], [ %.0, %85 ] - %93 = call i32 @tvb_captured_length_remaining(ptr noundef %0, i32 noundef %.2) - %.not71 = icmp eq i32 %93, 0 - br i1 %.not71, label %99, label %94 - -94: ; preds = %92 - %95 = load ptr, ptr %6, align 8 - %96 = call ptr @expert_add_info(ptr noundef %1, ptr noundef %95, ptr noundef nonnull @ei_usb_audio_undecoded) - %97 = call i32 @tvb_captured_length_remaining(ptr noundef %0, i32 noundef %.2) - %98 = add i32 %97, %.2 - br label %99 - -99: ; preds = %94, %92 - %.3 = phi i32 [ %98, %94 ], [ %.2, %92 ] + %87 = load i32, ptr @ett_parameter_block, align 4 + %88 = call ptr @proto_tree_add_subtree(ptr noundef %2, ptr noundef %0, i32 noundef %.0, i32 noundef -1, i32 noundef %87, ptr noundef nonnull %6, ptr noundef nonnull %.0618097) + br i1 %.not708296, label %93, label %89 + +89: ; preds = %85 + %90 = load i32, ptr %.0608495, align 4 + %91 = call ptr @proto_tree_add_item(ptr noundef %88, i32 noundef %90, ptr noundef %0, i32 noundef %.0, i32 noundef %.0598694, i32 noundef -2147483648) + %92 = add i32 %.0, %.0598694 + br label %93 + +93: ; preds = %89, %85 + %.2 = phi i32 [ %92, %88 ], [ %.0, %85 ] + %94 = call i32 @tvb_captured_length_remaining(ptr noundef %0, i32 noundef %.2) + %.not71 = icmp eq i32 %94, 0 + br i1 %.not71, label %100, label %95 + +95: ; preds = %93 + %96 = load ptr, ptr %6, align 8 + %97 = call ptr @expert_add_info(ptr noundef %1, ptr noundef %96, ptr noundef nonnull @ei_usb_audio_undecoded) + %98 = call i32 @tvb_captured_length_remaining(ptr noundef %0, i32 noundef %.2) + %99 = add i32 %98, %.2 + br label %100 + +100: ; preds = %95, %93 + %.3 = phi i32 [ %99, %94 ], [ %.2, %92 ] call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #9 br label %has_data_stage.exit.thread -has_data_stage.exit.thread: ; preds = %74, %99, %has_data_stage.exit +has_data_stage.exit.thread: ; preds = %74, %100, %has_data_stage.exit %.1 = phi i32 [ %.3, %99 ], [ %.0, %has_data_stage.exit ], [ %.0, %74 ] call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) #9 ret i32 %.1 @@ -3402,7 +3402,7 @@ define internal fastcc i32 @dissect_v2_control(ptr noundef %0, ptr noundef %1, p %.0 = phi i32 [ 1, %21 ], [ 0, %17 ] %25 = add i8 %11, -1 %or.cond = icmp ult i8 %25, 2 - br i1 %or.cond, label %26, label %160 + br i1 %or.cond, label %26, label %161 26: ; preds = %24 %27 = load ptr, ptr %8, align 8 @@ -3554,7 +3554,7 @@ has_data_stage.exit.i: ; preds = %90 %95 = load i8, ptr %94, align 4 %96 = and i8 %95, -128 %97 = load i8, ptr %18, align 4, !range !6, !noundef !7 - %98 = xor i8 %97, -1 + %98 = xor i8 %98, -1 %99 = shl i8 %98, 7 %100 = icmp eq i8 %99, %96 br i1 %100, label %101, label %dissect_v2_control_cur_range.exit @@ -3563,128 +3563,128 @@ has_data_stage.exit.i: ; preds = %90 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #9 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %7) #9 switch i32 %.0100115129.i, label %default.unreachable [ - i32 1, label %102 - i32 2, label %107 - i32 3, label %112 - i32 0, label %117 + i32 1, label %103 + i32 2, label %108 + i32 3, label %113 + i32 0, label %118 ] -102: ; preds = %101 - %103 = load i32, ptr @hf_parameter_bcur, align 4 - %104 = load i32, ptr @hf_parameter_bmin, align 4 - %105 = load i32, ptr @hf_parameter_bmax, align 4 - %106 = load i32, ptr @hf_parameter_bres, align 4 - br label %117 - -107: ; preds = %101 - %108 = load i32, ptr @hf_parameter_wcur, align 4 - %109 = load i32, ptr @hf_parameter_wmin, align 4 - %110 = load i32, ptr @hf_parameter_wmax, align 4 - %111 = load i32, ptr @hf_parameter_wres, align 4 - br label %117 - -112: ; preds = %101 - %113 = load i32, ptr @hf_parameter_dcur, align 4 - %114 = load i32, ptr @hf_parameter_dmin, align 4 - %115 = load i32, ptr @hf_parameter_dmax, align 4 - %116 = load i32, ptr @hf_parameter_dres, align 4 - br label %117 +103: ; preds = %101 + %104 = load i32, ptr @hf_parameter_bcur, align 4 + %105 = load i32, ptr @hf_parameter_bmin, align 4 + %106 = load i32, ptr @hf_parameter_bmax, align 4 + %107 = load i32, ptr @hf_parameter_bres, align 4 + br label %118 + +108: ; preds = %101 + %109 = load i32, ptr @hf_parameter_wcur, align 4 + %110 = load i32, ptr @hf_parameter_wmin, align 4 + %111 = load i32, ptr @hf_parameter_wmax, align 4 + %112 = load i32, ptr @hf_parameter_wres, align 4 + br label %118 + +113: ; preds = %101 + %114 = load i32, ptr @hf_parameter_dcur, align 4 + %115 = load i32, ptr @hf_parameter_dmin, align 4 + %116 = load i32, ptr @hf_parameter_dmax, align 4 + %117 = load i32, ptr @hf_parameter_dres, align 4 + br label %118 default.unreachable: ; preds = %101 unreachable -117: ; preds = %112, %107, %102, %101 +118: ; preds = %113, %108, %103, %101 %.096.i = phi ptr [ @.str.828, %102 ], [ @.str.829, %107 ], [ @.str.830, %112 ], [ @.str.831, %101 ] %.not106.i = phi i1 [ false, %102 ], [ false, %107 ], [ false, %112 ], [ true, %101 ] %.095.i = phi i32 [ 1, %102 ], [ 2, %107 ], [ 4, %112 ], [ %.0100115129.i, %101 ] - %.094.i = phi i32 [ %103, %102 ], [ %108, %107 ], [ %113, %112 ], [ %.0100115129.i, %101 ] - %.093.i = phi i32 [ %104, %102 ], [ %109, %107 ], [ %114, %112 ], [ %.0100115129.i, %101 ] - %.092.i = phi i32 [ %105, %102 ], [ %110, %107 ], [ %115, %112 ], [ %.0100115129.i, %101 ] - %.091.i = phi i32 [ %106, %102 ], [ %111, %107 ], [ %116, %112 ], [ %.0100115129.i, %101 ] - %118 = load i32, ptr @ett_parameter_block, align 4 - %119 = call ptr @proto_tree_add_subtree(ptr noundef %2, ptr noundef %0, i32 noundef %.097.i, i32 noundef -1, i32 noundef %118, ptr noundef nonnull %6, ptr noundef nonnull %.096.i) - br i1 %.not105117128.i, label %122, label %120 - -120: ; preds = %117 - %121 = load ptr, ptr %6, align 8 - call void (ptr, ptr, ...) @proto_item_append_text(ptr noundef %121, ptr noundef nonnull @.str.796, ptr noundef %.099119127.i) - br label %122 - -122: ; preds = %120, %117 - %123 = load ptr, ptr %8, align 8 - %124 = getelementptr inbounds nuw i8, ptr %123, i64 29 - %125 = load i8, ptr %124, align 1 - %126 = icmp eq i8 %125, 2 - br i1 %126, label %127, label %151 - -127: ; preds = %122 - %128 = load i32, ptr @hf_parameter_wnumsubranges, align 4 - %129 = call ptr @proto_tree_add_item_ret_uint(ptr noundef %119, i32 noundef %128, ptr noundef %0, i32 noundef %.097.i, i32 noundef 2, i32 noundef -2147483648, ptr noundef nonnull %7) - %130 = add nuw nsw i32 %.097.i, 2 - br i1 %.not106.i, label %.loopexit.i, label %131 - -131: ; preds = %127 - %132 = load ptr, ptr %8, align 8 - %133 = getelementptr inbounds nuw i8, ptr %132, i64 34 - %134 = load i16, ptr %133, align 2 - %135 = zext i16 %134 to i32 - %136 = load i32, ptr %7, align 4 - %137 = mul i32 %136, %.095.i - %138 = add i32 %137, 2 - %.not107.i = icmp ugt i32 %138, %135 - br i1 %.not107.i, label %139, label %._crit_edge - -._crit_edge: ; preds = %131 + %.094.i = phi i32 [ %104, %102 ], [ %109, %107 ], [ %114, %112 ], [ %.0100115129.i, %101 ] + %.093.i = phi i32 [ %105, %102 ], [ %110, %107 ], [ %115, %112 ], [ %.0100115129.i, %101 ] + %.092.i = phi i32 [ %106, %102 ], [ %111, %107 ], [ %116, %112 ], [ %.0100115129.i, %101 ] + %.091.i = phi i32 [ %107, %102 ], [ %112, %107 ], [ %117, %112 ], [ %.0100115129.i, %101 ] + %119 = load i32, ptr @ett_parameter_block, align 4 + %120 = call ptr @proto_tree_add_subtree(ptr noundef %2, ptr noundef %0, i32 noundef %.097.i, i32 noundef -1, i32 noundef %119, ptr noundef nonnull %6, ptr noundef nonnull %.096.i) + br i1 %.not105117128.i, label %123, label %121 + +121: ; preds = %118 + %122 = load ptr, ptr %6, align 8 + call void (ptr, ptr, ...) @proto_item_append_text(ptr noundef %122, ptr noundef nonnull @.str.796, ptr noundef %.099119127.i) + br label %123 + +123: ; preds = %121, %118 + %124 = load ptr, ptr %8, align 8 + %125 = getelementptr inbounds nuw i8, ptr %124, i64 29 + %126 = load i8, ptr %125, align 1 + %127 = icmp eq i8 %126, 2 + br i1 %127, label %128, label %152 + +128: ; preds = %123 + %129 = load i32, ptr @hf_parameter_wnumsubranges, align 4 + %130 = call ptr @proto_tree_add_item_ret_uint(ptr noundef %120, i32 noundef %129, ptr noundef %0, i32 noundef %.097.i, i32 noundef 2, i32 noundef -2147483648, ptr noundef nonnull %7) + %131 = add nuw nsw i32 %.097.i, 2 + br i1 %.not106.i, label %.loopexit.i, label %132 + +132: ; preds = %128 + %133 = load ptr, ptr %8, align 8 + %134 = getelementptr inbounds nuw i8, ptr %133, i64 34 + %135 = load i16, ptr %134, align 2 + %136 = zext i16 %135 to i32 + %137 = load i32, ptr %7, align 4 + %138 = mul i32 %137, %.095.i + %139 = add i32 %138, 2 + %.not107.i = icmp ugt i32 %139, %136 + br i1 %.not107.i, label %140, label %._crit_edge + +._crit_edge: ; preds = %132 %.pre = mul nuw nsw i32 %.095.i, 3 - br label %145 + br label %146 -139: ; preds = %131 - %140 = icmp ugt i16 %134, 2 - br i1 %140, label %141, label %.loopexit.i +140: ; preds = %132 + %141 = icmp ugt i16 %135, 2 + br i1 %141, label %142, label %.loopexit.i -141: ; preds = %139 - %142 = add nsw i32 %135, -2 - %143 = mul nuw nsw i32 %.095.i, 3 - %144 = udiv i32 %142, %143 - br label %145 +142: ; preds = %140 + %143 = add nsw i32 %136, -2 + %144 = mul nuw nsw i32 %.095.i, 3 + %145 = udiv i32 %143, %144 + br label %146 -145: ; preds = %._crit_edge, %141 - %invariant.op130.i.pre-phi = phi i32 [ %.pre, %._crit_edge ], [ %143, %141 ] - %.090.i = phi i32 [ %136, %._crit_edge ], [ %144, %141 ] +146: ; preds = %._crit_edge, %142 + %invariant.op130.i.pre-phi = phi i32 [ %.pre, %._crit_edge ], [ %144, %141 ] + %.090.i = phi i32 [ %137, %._crit_edge ], [ %145, %141 ] %invariant.op.i = shl nuw nsw i32 %.095.i, 1 %.not.i = icmp eq i32 %.090.i, 0 br i1 %.not.i, label %.loopexit.i, label %.lr.ph.i -.lr.ph.i: ; preds = %145, %.lr.ph.i - %.0133.i = phi i32 [ %150, %.lr.ph.i ], [ 0, %145 ] - %.2132.i = phi i32 [ %.reass131.i, %.lr.ph.i ], [ %130, %145 ] - %146 = call ptr @proto_tree_add_item(ptr noundef %119, i32 noundef %.093.i, ptr noundef %0, i32 noundef %.2132.i, i32 noundef %.095.i, i32 noundef -2147483648) - %147 = add i32 %.2132.i, %.095.i - %148 = call ptr @proto_tree_add_item(ptr noundef %119, i32 noundef %.092.i, ptr noundef %0, i32 noundef %147, i32 noundef %.095.i, i32 noundef -2147483648) +.lr.ph.i: ; preds = %146, %.lr.ph.i + %.0133.i = phi i32 [ %151, %.lr.ph.i ], [ 0, %145 ] + %.2132.i = phi i32 [ %.reass131.i, %.lr.ph.i ], [ %131, %145 ] + %147 = call ptr @proto_tree_add_item(ptr noundef %120, i32 noundef %.093.i, ptr noundef %0, i32 noundef %.2132.i, i32 noundef %.095.i, i32 noundef -2147483648) + %148 = add i32 %.2132.i, %.095.i + %149 = call ptr @proto_tree_add_item(ptr noundef %120, i32 noundef %.092.i, ptr noundef %0, i32 noundef %148, i32 noundef %.095.i, i32 noundef -2147483648) %.reass.i = add i32 %.2132.i, %invariant.op.i - %149 = call ptr @proto_tree_add_item(ptr noundef %119, i32 noundef %.091.i, ptr noundef %0, i32 noundef %.reass.i, i32 noundef %.095.i, i32 noundef -2147483648) + %150 = call ptr @proto_tree_add_item(ptr noundef %120, i32 noundef %.091.i, ptr noundef %0, i32 noundef %.reass.i, i32 noundef %.095.i, i32 noundef -2147483648) %.reass131.i = add i32 %.2132.i, %invariant.op130.i.pre-phi - %150 = add nuw i32 %.0133.i, 1 - %exitcond.not.i = icmp eq i32 %150, %.090.i + %151 = add nuw i32 %.0133.i, 1 + %exitcond.not.i = icmp eq i32 %151, %.090.i br i1 %exitcond.not.i, label %.loopexit.i, label %.lr.ph.i, !llvm.loop !22 -151: ; preds = %122 - br i1 %.not106.i, label %155, label %152 +152: ; preds = %123 + br i1 %.not106.i, label %156, label %153 -152: ; preds = %151 - %153 = call ptr @proto_tree_add_item(ptr noundef %119, i32 noundef %.094.i, ptr noundef %0, i32 noundef %.097.i, i32 noundef %.095.i, i32 noundef -2147483648) - %154 = add nuw nsw i32 %.095.i, %.097.i +153: ; preds = %152 + %154 = call ptr @proto_tree_add_item(ptr noundef %120, i32 noundef %.094.i, ptr noundef %0, i32 noundef %.097.i, i32 noundef %.095.i, i32 noundef -2147483648) + %155 = add nuw nsw i32 %.095.i, %.097.i br label %.loopexit.i -155: ; preds = %151 - %156 = load ptr, ptr %6, align 8 - %157 = call ptr @expert_add_info(ptr noundef %1, ptr noundef %156, ptr noundef nonnull @ei_usb_audio_undecoded) - %158 = call i32 @tvb_captured_length_remaining(ptr noundef %0, i32 noundef %.097.i) - %159 = add i32 %158, %.097.i +156: ; preds = %152 + %157 = load ptr, ptr %6, align 8 + %158 = call ptr @expert_add_info(ptr noundef %1, ptr noundef %157, ptr noundef nonnull @ei_usb_audio_undecoded) + %159 = call i32 @tvb_captured_length_remaining(ptr noundef %0, i32 noundef %.097.i) + %160 = add i32 %159, %.097.i br label %.loopexit.i -.loopexit.i: ; preds = %.lr.ph.i, %155, %152, %145, %139, %127 - %.3.i = phi i32 [ %154, %152 ], [ %159, %155 ], [ %130, %145 ], [ %130, %127 ], [ %130, %139 ], [ %.reass131.i, %.lr.ph.i ] +.loopexit.i: ; preds = %.lr.ph.i, %156, %153, %146, %140, %128 + %.3.i = phi i32 [ %155, %152 ], [ %160, %155 ], [ %131, %145 ], [ %131, %127 ], [ %131, %139 ], [ %.reass131.i, %.lr.ph.i ] call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #9 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #9 br label %dissect_v2_control_cur_range.exit @@ -3692,9 +3692,9 @@ default.unreachable: ; preds = %101 dissect_v2_control_cur_range.exit: ; preds = %90, %has_data_stage.exit.i, %.loopexit.i %.1.i = phi i32 [ %.3.i, %.loopexit.i ], [ %.097.i, %has_data_stage.exit.i ], [ %.097.i, %90 ] call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) #9 - br label %160 + br label %161 -160: ; preds = %24, %dissect_v2_control_cur_range.exit +161: ; preds = %24, %dissect_v2_control_cur_range.exit %.1 = phi i32 [ %.1.i, %dissect_v2_control_cur_range.exit ], [ %.0, %24 ] ret i32 %.1 } diff --git a/bench/yosys/optimized/blifparse.ll b/bench/yosys/optimized/blifparse.ll index 1bc81c2df7c..c55b139ef18 100644 --- a/bench/yosys/optimized/blifparse.ll +++ b/bench/yosys/optimized/blifparse.ll @@ -882,12 +882,12 @@ define void @_ZN5Yosys10parse_blifEPNS_5RTLIL6DesignERSiNS0_8IdStringEbbb(ptr no .loopexit2185: ; preds = %.backedge %lpad.loopexit2187 = landingpad { ptr, i32 } cleanup - br label %4057 + br label %4058 .loopexit.split-lp2186: ; preds = %.thread2024, %.loopexit2184 %lpad.loopexit.split-lp2188 = landingpad { ptr, i32 } cleanup - br label %4057 + br label %4058 471: ; preds = %470 %472 = load ptr, ptr %25, align 8, !tbaa !21 @@ -927,7 +927,7 @@ define void @_ZN5Yosys10parse_blifEPNS_5RTLIL6DesignERSiNS0_8IdStringEbbb(ptr no 482: ; preds = %476 %483 = landingpad { ptr, i32 } cleanup - br label %4057 + br label %4058 .lr.ph: ; preds = %478, %487 %.sroa.01983.05560 = phi ptr [ %488, %487 ], [ %479, %478 ] @@ -975,13 +975,13 @@ define void @_ZN5Yosys10parse_blifEPNS_5RTLIL6DesignERSiNS0_8IdStringEbbb(ptr no 499: ; preds = %1664, %._crit_edge5596, %493 %500 = landingpad { ptr, i32 } cleanup - br label %4057 + br label %4058 501: ; preds = %495 %502 = landingpad { ptr, i32 } cleanup call void @_ZdlPvm(ptr noundef nonnull %494, i64 noundef 616) #33 - br label %4057 + br label %4058 503: ; preds = %496 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %27) #29 @@ -1278,17 +1278,17 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1044: ; preds = %_ %.pn683.pn = phi { ptr, i32 } [ %587, %586 ], [ %.pn683, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i1043 ], [ %.pn683, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i1042 ] call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %28) #29 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %27) #29 - br label %4057 + br label %4058 .loopexit2178: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1038, %604 %lpad.loopexit2180 = landingpad { ptr, i32 } cleanup - br label %4057 + br label %4058 .loopexit.split-lp2179: ; preds = %581, %583 %lpad.loopexit.split-lp2181 = landingpad { ptr, i32 } cleanup - br label %4057 + br label %4058 604: ; preds = %580 invoke void @_ZN5Yosys5RTLIL6Design3addEPNS0_6ModuleE(ptr noundef nonnull align 8 dereferenceable(376) %0, ptr noundef nonnull %494) @@ -1335,7 +1335,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1044: ; preds = %_ 619: ; preds = %617, %615 %.pn690 = phi { ptr, i32 } [ %618, %617 ], [ %616, %615 ] call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %29) #29 - br label %4057 + br label %4058 620: ; preds = %606 %621 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %490, ptr noundef nonnull dereferenceable(5) @.str.4) #31 @@ -2634,7 +2634,7 @@ _ZN5Yosys5RTLIL8IdStringD2Ev.exit1123: ; preds = %_ZN5Yosys5RTLIL6Mod %.pn735.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn735.pn.pn.pn, %1147 ], [ %695, %694 ] call void @_ZN5Yosys5RTLIL8IdStringD2Ev(ptr noundef nonnull align 4 dereferenceable(4) %30) #29 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %30) #29 - br label %4057 + br label %4058 1149: ; preds = %._crit_edge5596 %1150 = load ptr, ptr %23, align 8, !tbaa !35 @@ -3829,7 +3829,7 @@ _ZNSt6vectorIPN5Yosys5RTLIL4CellESaIS3_EED2Ev.exit1222: ; preds = %_ZN5Yosys5RTL .body1125: ; preds = %_ZNSt6vectorIN5Yosys5RTLIL5StateESaIS2_EED2Ev.exit1140, %_ZNSt12_Vector_baseIN5Yosys5RTLIL5StateESaIS2_EED2Ev.exit.i, %_ZNSt6vectorIPN5Yosys5RTLIL4CellESaIS3_EED2Ev.exit1222 %.pn720.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn720.pn.pn.pn.pn, %_ZNSt6vectorIPN5Yosys5RTLIL4CellESaIS3_EED2Ev.exit1222 ], [ %1195, %_ZNSt6vectorIN5Yosys5RTLIL5StateESaIS2_EED2Ev.exit1140 ], [ %1173, %_ZNSt12_Vector_baseIN5Yosys5RTLIL5StateESaIS2_EED2Ev.exit.i ] call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %40) #29 - br label %4057 + br label %4058 1635: ; preds = %_ZNSt6vectorIPN5Yosys5RTLIL4CellESaIS3_EED2Ev.exit, %_ZN5Yosys7hashlib4dictINS_5RTLIL8IdStringESt4pairIibENS0_8hash_opsIS3_EEE5clearEv.exit store ptr null, ptr %20, align 8, !tbaa !6 @@ -3929,7 +3929,7 @@ _ZNSt6vectorIPN5Yosys5RTLIL4CellESaIS3_EED2Ev.exit1222: ; preds = %_ZN5Yosys5RTL %.0368.be = phi ptr [ %.1369, %3980 ], [ %.1369, %sub_02102 ], [ %.1369, %sub_12103 ], [ null, %1669 ], [ null, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1632 ], [ %2783, %2782 ], [ %.1369, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1267 ], [ %.1369, %1664 ], [ null, %1635 ], [ %.1369, %614 ], [ null, %604 ], [ null, %_ZN5Yosys5RTLIL8IdStringD2Ev.exit1256 ], [ %.1369, %.preheader2176 ], [ %.2370, %.loopexit2125 ] %.0361.be = phi ptr [ %.1362, %3980 ], [ %.1362, %sub_02102 ], [ %.1362, %sub_12103 ], [ null, %1669 ], [ null, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1632 ], [ %.0590, %2782 ], [ %.1362, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1267 ], [ %.1362, %1664 ], [ null, %1635 ], [ %.1362, %614 ], [ %578, %604 ], [ null, %_ZN5Yosys5RTLIL8IdStringD2Ev.exit1256 ], [ %.1362, %.preheader2176 ], [ %.2363, %.loopexit2125 ] %.0353.be = phi i32 [ %.7360, %3980 ], [ %.7360, %sub_02102 ], [ %.7360, %sub_12103 ], [ %spec.select, %1669 ], [ %spec.select, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1632 ], [ %spec.select, %2782 ], [ %spec.select, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1267 ], [ %spec.select, %1664 ], [ %spec.select, %1635 ], [ %spec.select, %614 ], [ %spec.select, %604 ], [ %spec.select, %_ZN5Yosys5RTLIL8IdStringD2Ev.exit1256 ], [ %.1354, %.preheader2176 ], [ %.3356, %.loopexit2125 ] - %.0346.be = phi i8 [ %.1347, %3980 ], [ 0, %sub_02102 ], [ %4013, %sub_12103 ], [ %.2348, %1669 ], [ %.2348, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1632 ], [ %.2348, %2782 ], [ %.2348, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1267 ], [ %.2348, %1664 ], [ %.2348, %1635 ], [ %.2348, %614 ], [ %.2348, %604 ], [ %.2348, %_ZN5Yosys5RTLIL8IdStringD2Ev.exit1256 ], [ %.1347, %.preheader2176 ], [ %.3349, %.loopexit2125 ] + %.0346.be = phi i8 [ %.1347, %3980 ], [ 0, %sub_02102 ], [ %4014, %sub_12103 ], [ %.2348, %1669 ], [ %.2348, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1632 ], [ %.2348, %2782 ], [ %.2348, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1267 ], [ %.2348, %1664 ], [ %.2348, %1635 ], [ %.2348, %614 ], [ %.2348, %604 ], [ %.2348, %_ZN5Yosys5RTLIL8IdStringD2Ev.exit1256 ], [ %.1347, %.preheader2176 ], [ %.3349, %.loopexit2125 ] %.0340.be = phi ptr [ %.1341, %3980 ], [ %.1341, %sub_02102 ], [ %.1341, %sub_12103 ], [ %.1341, %1669 ], [ %.1341, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1632 ], [ %.0590, %2782 ], [ %.1341, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1267 ], [ %.1341, %1664 ], [ null, %1635 ], [ %.1341, %614 ], [ null, %604 ], [ %.1341, %_ZN5Yosys5RTLIL8IdStringD2Ev.exit1256 ], [ %.1341, %.preheader2176 ], [ %.2342, %.loopexit2125 ] %.0331.be = phi ptr [ %.1332, %3980 ], [ %.1332, %sub_02102 ], [ %.1332, %sub_12103 ], [ null, %1669 ], [ null, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1632 ], [ null, %2782 ], [ null, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1267 ], [ null, %1664 ], [ null, %1635 ], [ null, %614 ], [ null, %604 ], [ null, %_ZN5Yosys5RTLIL8IdStringD2Ev.exit1256 ], [ %.1332, %.preheader2176 ], [ %.3334, %.loopexit2125 ] %.0.be = phi ptr [ null, %3980 ], [ %.1, %sub_02102 ], [ %.1, %sub_12103 ], [ null, %1669 ], [ null, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1632 ], [ null, %2782 ], [ null, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1267 ], [ null, %1664 ], [ null, %1635 ], [ null, %614 ], [ null, %604 ], [ null, %_ZN5Yosys5RTLIL8IdStringD2Ev.exit1256 ], [ %.1, %.preheader2176 ], [ %.3, %.loopexit2125 ] @@ -4385,7 +4385,7 @@ _ZN5Yosys5RTLIL8IdStringD2Ev.exit1256: ; preds = %1840, %1845, %1852 1858: ; preds = %1857, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1239 %.pn766.pn.pn.pn = phi { ptr, i32 } [ %.pn766.pn.pn, %1857 ], [ %.pn760, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1239 ] call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %51) #29 - br label %4057 + br label %4058 1859: ; preds = %1667 %1860 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %490, ptr noundef nonnull dereferenceable(7) @.str.27) #31 @@ -4434,7 +4434,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i12 %1878 = landingpad { ptr, i32 } cleanup call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %56) #29 - br label %4057 + br label %4058 1879: ; preds = %1864 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %58) #29 @@ -4560,7 +4560,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1273: ; preds = %_ call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %60) #29 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %59) #29 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %58) #29 - br label %4057 + br label %4058 1919: ; preds = %1859 %1920 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %490, ptr noundef nonnull dereferenceable(6) @.str.29) #31 @@ -4957,7 +4957,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1300: ; preds = %_ 2054: ; preds = %2053, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1288 %.pn791.pn = phi { ptr, i32 } [ %.pn791, %2053 ], [ %.pn780.pn, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1288 ] call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %61) #29 - br label %4057 + br label %4058 2055: ; preds = %1921 %2056 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %490, ptr noundef nonnull dereferenceable(7) @.str.34) #31 @@ -5071,7 +5071,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1306: ; preds = %_ 2097: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1306, %2085 %.pn796.pn = phi { ptr, i32 } [ %.pn796, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1306 ], [ %2086, %2085 ] call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %71) #29 - br label %4057 + br label %4058 2098: ; preds = %2065, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1303, %2057 br i1 %2063, label %.tail2085.thread, label %sub_0 @@ -5481,7 +5481,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i13 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1342: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i1340, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i1341, %2160 %.pn800.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %2161, %2160 ], [ %.pn800.pn.pn.pn.pn.pn.pn.pn.pn, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i1341 ], [ %.pn800.pn.pn.pn.pn.pn.pn.pn.pn, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i1340 ] call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %76) #29 - br label %4057 + br label %4058 sub_12077: ; preds = %sub_0 %2222 = getelementptr inbounds nuw i8, ptr %2060, i64 1 @@ -5880,7 +5880,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i13 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1378: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i1376, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i1377, %2282 %.pn812.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %2283, %2282 ], [ %.pn812.pn.pn.pn.pn.pn.pn.pn.pn, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i1377 ], [ %.pn812.pn.pn.pn.pn.pn.pn.pn.pn, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i1376 ] call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %92) #29 - br label %4057 + br label %4058 sub_12082: ; preds = %sub_0 %2344 = getelementptr inbounds nuw i8, ptr %2060, i64 1 @@ -6279,7 +6279,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i14 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1414: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i1412, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i1413, %2404 %.pn824.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %2405, %2404 ], [ %.pn824.pn.pn.pn.pn.pn.pn.pn.pn, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i1413 ], [ %.pn824.pn.pn.pn.pn.pn.pn.pn.pn, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i1412 ] call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %108) #29 - br label %4057 + br label %4058 sub_12087: ; preds = %.tail2080, %sub_12082 %2466 = getelementptr inbounds nuw i8, ptr %2060, i64 1 @@ -6678,7 +6678,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i14 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1450: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i1448, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i1449, %2526 %.pn836.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %2527, %2526 ], [ %.pn836.pn.pn.pn.pn.pn.pn.pn.pn, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i1449 ], [ %.pn836.pn.pn.pn.pn.pn.pn.pn.pn, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i1448 ] call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %124) #29 - br label %4057 + br label %4058 .tail2085.thread: ; preds = %sub_0, %.tail, %sub_1, %sub_12077, %.tail2075, %sub_12087, %.tail2085, %2098 %2588 = invoke noundef zeroext i1 @_ZNK5Yosys5RTLIL8IdString5emptyEv(ptr noundef nonnull align 4 dereferenceable(4) %2) @@ -6845,7 +6845,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1465: ; preds = %_ 2635: ; preds = %.tail2085.thread %2636 = landingpad { ptr, i32 } cleanup - br label %4057 + br label %4058 2637: ; preds = %2590 %2638 = landingpad { ptr, i32 } @@ -7005,7 +7005,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i14 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1480: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i1478, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i1479, %2637 %.pn857.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %2638, %2637 ], [ %.pn857.pn.pn.pn.pn.pn.pn, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i1479 ], [ %.pn857.pn.pn.pn.pn.pn.pn, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i1478 ] call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %140) #29 - br label %4057 + br label %4058 2688: ; preds = %2589 call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %153) #29 @@ -7219,7 +7219,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i14 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1500: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i1498, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i1499, %2735 %.pn847.pn.pn = phi { ptr, i32 } [ %2736, %2735 ], [ %.pn847.pn, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i1499 ], [ %.pn847.pn, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i1498 ] call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %153) #29 - br label %4057 + br label %4058 2756: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1488 %2757 = landingpad { ptr, i32 } @@ -7259,7 +7259,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1503: ; preds = %_ %.pn851.pn = phi { ptr, i32 } [ %2757, %2756 ], [ %.pn851, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i1502 ], [ %.pn851, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i1501 ] call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %159) #29 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %158) #29 - br label %4057 + br label %4058 2769: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1491 %2770 = landingpad { ptr, i32 } @@ -7299,7 +7299,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1506: ; preds = %_ %.pn854.pn = phi { ptr, i32 } [ %2770, %2769 ], [ %.pn854, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i1505 ], [ %.pn854, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i1504 ] call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %162) #29 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %161) #29 - br label %4057 + br label %4058 2782: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1360, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1432, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1494, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1465, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1396, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1324 %.0590 = phi ptr [ %2603, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1465 ], [ %2699, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1494 ], [ %2488, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1432 ], [ %2366, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1396 ], [ %2244, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1360 ], [ %2122, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1324 ] @@ -8611,7 +8611,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1623: ; preds = %3 3211: ; preds = %3210, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1528 %.pn905.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn905.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %3210 ], [ %.pn869.pn, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1528 ] call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %163) #29 - br label %4057 + br label %4058 3212: ; preds = %2786 %3213 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %490, ptr noundef nonnull dereferenceable(8) @.str.43) #31 @@ -8787,7 +8787,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1638: ; preds = %_ call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %201) #29 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %200) #29 call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %199) #29 - br label %4057 + br label %4058 3268: ; preds = %3214 %3269 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %490, ptr noundef nonnull dereferenceable(7) @.str.45) #31 @@ -9608,7 +9608,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1671: ; preds = %_ call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %206) #29 call void @_ZN5Yosys5RTLIL7SigSpecD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %205) #29 call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %205) #29 - br label %4057 + br label %4058 .loopexit2125: ; preds = %.thread2015, %3524, %2052 %.0567 = phi i32 [ %.3570, %2052 ], [ %.6573, %.thread2015 ], [ %.11578, %3524 ] @@ -9716,7 +9716,7 @@ sub_02091: ; preds = %3529 3563: ; preds = %3561, %3559 %.pn = phi { ptr, i32 } [ %3562, %3561 ], [ %3560, %3559 ] call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %236) #29 - br label %4057 + br label %4058 .lr.ph5616: ; preds = %.lr.ph5616.preheader, %_ZNSt6vectorIN5Yosys5RTLIL5StateESaIS2_EE9push_backEOS2_.exit1686 %indvars.iv8829 = phi i64 [ 0, %.lr.ph5616.preheader ], [ %indvars.iv.next8830, %_ZNSt6vectorIN5Yosys5RTLIL5StateESaIS2_EE9push_backEOS2_.exit1686 ] @@ -9884,27 +9884,27 @@ _ZNSt6vectorIN5Yosys5RTLIL5StateESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx 3627: ; preds = %3722, %_ZNSt6vectorIN5Yosys5RTLIL5StateESaIS2_EE9push_backEOS2_.exit1719, %3692, %3690, %3661, %_ZNSt6vectorIN5Yosys5RTLIL5StateESaIS2_EE9push_backEOS2_.exit1697, %3631, %3629, %3598, %_ZNSt6vectorIN5Yosys5RTLIL5StateESaIS2_EE9push_backEOS2_.exit, %3568, %3566 %3628 = landingpad { ptr, i32 } cleanup - br label %4057 + br label %4058 .loopexit2156: ; preds = %3588 %lpad.loopexit2158 = landingpad { ptr, i32 } cleanup - br label %4057 + br label %4058 .loopexit.split-lp2157: ; preds = %3583 %lpad.loopexit.split-lp2159 = landingpad { ptr, i32 } cleanup - br label %4057 + br label %4058 .loopexit2161: ; preds = %3618 %lpad.loopexit2163 = landingpad { ptr, i32 } cleanup - br label %4057 + br label %4058 .loopexit.split-lp2162: ; preds = %3613 %lpad.loopexit.split-lp2164 = landingpad { ptr, i32 } cleanup - br label %4057 + br label %4058 3629: ; preds = %.lr.ph5616 %3630 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZN5Yosys7hashlib4dictINS_5RTLIL8IdStringENS2_5ConstENS0_8hash_opsIS3_EEEixERKS3_(ptr noundef nonnull align 8 dereferenceable(49) %3545, ptr noundef nonnull align 4 dereferenceable(4) @_ZN5Yosys5RTLIL2ID5TABLEE) @@ -10063,22 +10063,22 @@ _ZNSt6vectorIN5Yosys5RTLIL5StateESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx .loopexit2146: ; preds = %3651 %lpad.loopexit2148 = landingpad { ptr, i32 } cleanup - br label %4057 + br label %4058 .loopexit.split-lp2147: ; preds = %3646 %lpad.loopexit.split-lp2149 = landingpad { ptr, i32 } cleanup - br label %4057 + br label %4058 .loopexit2151: ; preds = %3681 %lpad.loopexit2153 = landingpad { ptr, i32 } cleanup - br label %4057 + br label %4058 .loopexit.split-lp2152: ; preds = %3676 %lpad.loopexit.split-lp2154 = landingpad { ptr, i32 } cleanup - br label %4057 + br label %4058 3690: ; preds = %.lr.ph5616 %3691 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZN5Yosys7hashlib4dictINS_5RTLIL8IdStringENS2_5ConstENS0_8hash_opsIS3_EEEixERKS3_(ptr noundef nonnull align 8 dereferenceable(49) %3545, ptr noundef nonnull align 4 dereferenceable(4) @_ZN5Yosys5RTLIL2ID5TABLEE) @@ -10237,22 +10237,22 @@ _ZNSt6vectorIN5Yosys5RTLIL5StateESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx .loopexit2166: ; preds = %3712 %lpad.loopexit2168 = landingpad { ptr, i32 } cleanup - br label %4057 + br label %4058 .loopexit.split-lp2167: ; preds = %3707 %lpad.loopexit.split-lp2169 = landingpad { ptr, i32 } cleanup - br label %4057 + br label %4058 .loopexit2171: ; preds = %3742 %lpad.loopexit2173 = landingpad { ptr, i32 } cleanup - br label %4057 + br label %4058 .loopexit.split-lp2172: ; preds = %3737 %lpad.loopexit.split-lp2174 = landingpad { ptr, i32 } cleanup - br label %4057 + br label %4058 _ZNSt6vectorIN5Yosys5RTLIL5StateESaIS2_EE9push_backEOS2_.exit1686: ; preds = %3729, %_ZNSt6vectorIN5Yosys5RTLIL5StateESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i1727, %3668, %_ZNSt6vectorIN5Yosys5RTLIL5StateESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i1705, %3605, %_ZNSt6vectorIN5Yosys5RTLIL5StateESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i1683 %indvars.iv.next8830 = add nuw nsw i64 %indvars.iv8829, 1 @@ -10891,7 +10891,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1822: ; preds = %3 3979: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1822, %3923 %.pn666.pn.pn = phi { ptr, i32 } [ %.pn666.pn, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1822 ], [ %3924, %3923 ] call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %237) #29 - br label %4057 + br label %4058 3980: ; preds = %_ZN5Yosys5RTLIL7SigSpecD2Ev.exit1816, %3751, %._crit_edge5617, %3541 %.7360 = phi i32 [ 1, %3751 ], [ %3754, %_ZN5Yosys5RTLIL7SigSpecD2Ev.exit1816 ], [ %.1354, %._crit_edge5617 ], [ %.1354, %3541 ] @@ -10937,130 +10937,130 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1822: ; preds = %3 br i1 %exitcond8838.not, label %sub_02098, label %.lr.ph5619, !llvm.loop !180 sub_02098: ; preds = %.thread2058, %.preheader2118 - %3993 = load i8, ptr %3531, align 1 - %.not5631 = icmp eq i8 %3993, 48 + %3994 = load i8, ptr %3531, align 1 + %.not5631 = icmp eq i8 %3994, 48 br i1 %.not5631, label %sub_12099, label %.thread2061.tail sub_12099: ; preds = %sub_02098 - %3994 = load i8, ptr %3984, align 1 - %3995 = icmp ne i8 %3994, 0 - %3996 = zext i1 %3995 to i8 + %3995 = load i8, ptr %3984, align 1 + %3996 = icmp ne i8 %3995, 0 + %3997 = zext i1 %3996 to i8 br label %.thread2061.tail .thread2061.tail: ; preds = %sub_02098, %sub_12099 - %.not674 = phi i8 [ 1, %sub_02098 ], [ %3996, %sub_12099 ] - %3997 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN5Yosys5RTLIL5Const4bitsEv(ptr noundef nonnull align 8 dereferenceable(40) %.1) + %.not674 = phi i8 [ 1, %sub_02098 ], [ %3997, %sub_12099 ] + %3998 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN5Yosys5RTLIL5Const4bitsEv(ptr noundef nonnull align 8 dereferenceable(40) %.1) to label %3998 unwind label %.loopexit2141 -3998: ; preds = %.thread2061.tail - %3999 = getelementptr inbounds nuw i8, ptr %3997, i64 8 - %4000 = load ptr, ptr %3999, align 8, !tbaa !115 - %4001 = load ptr, ptr %3997, align 8, !tbaa !103 +3999: ; preds = %.thread2061.tail + %4000 = getelementptr inbounds nuw i8, ptr %3998, i64 8 + %4001 = load ptr, ptr %4000, align 8, !tbaa !115 + %4002 = load ptr, ptr %3998, align 8, !tbaa !103 %4002 = ptrtoint ptr %4000 to i64 %4003 = ptrtoint ptr %4001 to i64 %4004 = sub i64 %4002, %4003 %.not.i.i1832 = icmp ugt i64 %4004, %indvars.iv8839 br i1 %.not.i.i1832, label %4006, label %4005 -4005: ; preds = %3998 +4006: ; preds = %3999 invoke void (ptr, ...) @_ZSt24__throw_out_of_range_fmtPKcz(ptr noundef nonnull @.str.56, i64 noundef %indvars.iv8839, i64 noundef %4004) #35 to label %.noexc1833 unwind label %.loopexit.split-lp2142 -.noexc1833: ; preds = %4005 +.noexc1833: ; preds = %4006 unreachable -4006: ; preds = %3998 - %4007 = getelementptr inbounds nuw i8, ptr %4001, i64 %indvars.iv8839 - store i8 %.not674, ptr %4007, align 1, !tbaa !23 +4007: ; preds = %3999 + %4008 = getelementptr inbounds nuw i8, ptr %4002, i64 %indvars.iv8839 + store i8 %.not674, ptr %4008, align 1, !tbaa !23 br label %.loopexit2119 -.loopexit2119: ; preds = %3988, %4006 +.loopexit2119: ; preds = %3988, %4007 %indvars.iv.next8840 = add nuw nsw i64 %indvars.iv8839, 1 - %4008 = trunc nuw i64 %indvars.iv.next8840 to i32 - %.0338.highbits = lshr i32 %4008, %3543 - %4009 = icmp eq i32 %.0338.highbits, 0 - br i1 %4009, label %.preheader2118, label %sub_02102, !llvm.loop !181 + %4009 = trunc nuw i64 %indvars.iv.next8840 to i32 + %.0338.highbits = lshr i32 %4009, %3543 + %4010 = icmp eq i32 %.0338.highbits, 0 + br i1 %4010, label %.preheader2118, label %sub_02102, !llvm.loop !181 .loopexit2141: ; preds = %.thread2061.tail %lpad.loopexit2143 = landingpad { ptr, i32 } cleanup - br label %4057 + br label %4058 -.loopexit.split-lp2142: ; preds = %4005 +.loopexit.split-lp2142: ; preds = %4006 %lpad.loopexit.split-lp2144 = landingpad { ptr, i32 } cleanup - br label %4057 + br label %4058 sub_02102: ; preds = %.loopexit2119 - %4010 = load i8, ptr %3531, align 1 - %.not5632 = icmp eq i8 %4010, 48 + %4011 = load i8, ptr %3531, align 1 + %.not5632 = icmp eq i8 %4011, 48 br i1 %.not5632, label %sub_12103, label %.backedge.backedge sub_12103: ; preds = %sub_02102 - %4011 = load i8, ptr %3984, align 1 - %4012 = icmp eq i8 %4011, 0 - %4013 = zext i1 %4012 to i8 + %4012 = load i8, ptr %3984, align 1 + %4013 = icmp eq i8 %4012, 0 + %4014 = zext i1 %4013 to i8 br label %.backedge.backedge .thread2024: ; preds = %.tail2090, %3981, %3529, %.tail2094, %3526, %3219, %3216, %1861, %496, %492, %sub_02091, %3268, %2788, %605, %.loopexit2125, %470 - %4014 = load i32, ptr %26, align 4, !tbaa !18 - invoke void (ptr, ...) @_ZN5Yosys9log_errorEPKcz(ptr noundef nonnull @.str.49, i32 noundef %4014) #35 + %4015 = load i32, ptr %26, align 4, !tbaa !18 + invoke void (ptr, ...) @_ZN5Yosys9log_errorEPKcz(ptr noundef nonnull @.str.49, i32 noundef %4015) #35 to label %4015 unwind label %.loopexit.split-lp2186 -4015: ; preds = %.thread2024 +4016: ; preds = %.thread2024 unreachable .loopexit2184: ; preds = %.loopexit2125, %.thread2041 - %4016 = load i32, ptr %26, align 4, !tbaa !18 - %4017 = load ptr, ptr %21, align 8, !tbaa !25 - invoke void (ptr, ...) @_ZN5Yosys9log_errorEPKcz(ptr noundef nonnull @.str.50, i32 noundef %4016, ptr noundef %4017) #35 + %4017 = load i32, ptr %26, align 4, !tbaa !18 + %4018 = load ptr, ptr %21, align 8, !tbaa !25 + invoke void (ptr, ...) @_ZN5Yosys9log_errorEPKcz(ptr noundef nonnull @.str.50, i32 noundef %4017, ptr noundef %4018) #35 to label %4018 unwind label %.loopexit.split-lp2186 -4018: ; preds = %.loopexit2184 +4019: ; preds = %.loopexit2184 unreachable .loopexit2183: ; preds = %.loopexit2125, %471 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %26) #29 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #29 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #29 - %4019 = load ptr, ptr %395, align 8, !tbaa !41 - %4020 = load ptr, ptr %396, align 8, !tbaa !38 - %.not4.i.i.i.i.i1834 = icmp eq ptr %4019, %4020 + %4020 = load ptr, ptr %395, align 8, !tbaa !41 + %4021 = load ptr, ptr %396, align 8, !tbaa !38 + %.not4.i.i.i.i.i1834 = icmp eq ptr %4020, %4021 br i1 %.not4.i.i.i.i.i1834, label %_ZSt8_DestroyIPN5Yosys7hashlib4dictINS0_5RTLIL8IdStringESt4pairIibENS1_8hash_opsIS4_EEE7entry_tESA_EvT_SC_RSaIT0_E.exit.i.i, label %.lr.ph.i.i.i.i.i1835 .lr.ph.i.i.i.i.i1835: ; preds = %.loopexit2183, %_ZSt8_DestroyIN5Yosys7hashlib4dictINS0_5RTLIL8IdStringESt4pairIibENS1_8hash_opsIS4_EEE7entry_tEEvPT_.exit.i.i.i.i.i - %.05.i.i.i.i.i1836 = phi ptr [ %4036, %_ZSt8_DestroyIN5Yosys7hashlib4dictINS0_5RTLIL8IdStringESt4pairIibENS1_8hash_opsIS4_EEE7entry_tEEvPT_.exit.i.i.i.i.i ], [ %4019, %.loopexit2183 ] - %4021 = load i32, ptr %.05.i.i.i.i.i1836, align 4, !tbaa !29 - %4022 = load i8, ptr @_ZN5Yosys5RTLIL8IdString17destruct_guard_okE, align 1, !tbaa !31, !range !33, !noundef !34 - %4023 = trunc nuw i8 %4022 to i1 - %4024 = icmp ne i32 %4021, 0 - %or.cond.i.i.i.i.i.i.i.i.i.i = and i1 %4024, %4023 - br i1 %or.cond.i.i.i.i.i.i.i.i.i.i, label %4025, label %_ZSt8_DestroyIN5Yosys7hashlib4dictINS0_5RTLIL8IdStringESt4pairIibENS1_8hash_opsIS4_EEE7entry_tEEvPT_.exit.i.i.i.i.i - -4025: ; preds = %.lr.ph.i.i.i.i.i1835 - %4026 = sext i32 %4021 to i64 - %4027 = load ptr, ptr @_ZN5Yosys5RTLIL8IdString24global_refcount_storage_E, align 8, !tbaa !35 - %4028 = getelementptr inbounds nuw i32, ptr %4027, i64 %4026 - %4029 = load i32, ptr %4028, align 4, !tbaa !18 - %4030 = add nsw i32 %4029, -1 - store i32 %4030, ptr %4028, align 4, !tbaa !18 - %4031 = icmp sgt i32 %4029, 1 - br i1 %4031, label %_ZSt8_DestroyIN5Yosys7hashlib4dictINS0_5RTLIL8IdStringESt4pairIibENS1_8hash_opsIS4_EEE7entry_tEEvPT_.exit.i.i.i.i.i, label %4032 - -4032: ; preds = %4025 - invoke void @_ZN5Yosys5RTLIL8IdString14free_referenceEi(i32 noundef %4021) - to label %_ZSt8_DestroyIN5Yosys7hashlib4dictINS0_5RTLIL8IdStringESt4pairIibENS1_8hash_opsIS4_EEE7entry_tEEvPT_.exit.i.i.i.i.i unwind label %4033 - -4033: ; preds = %4032 - %4034 = landingpad { ptr, i32 } + %.05.i.i.i.i.i1836 = phi ptr [ %4037, %_ZSt8_DestroyIN5Yosys7hashlib4dictINS0_5RTLIL8IdStringESt4pairIibENS1_8hash_opsIS4_EEE7entry_tEEvPT_.exit.i.i.i.i.i ], [ %4020, %.loopexit2183 ] + %4022 = load i32, ptr %.05.i.i.i.i.i1836, align 4, !tbaa !29 + %4023 = load i8, ptr @_ZN5Yosys5RTLIL8IdString17destruct_guard_okE, align 1, !tbaa !31, !range !33, !noundef !34 + %4024 = trunc nuw i8 %4023 to i1 + %4025 = icmp ne i32 %4022, 0 + %or.cond.i.i.i.i.i.i.i.i.i.i = and i1 %4025, %4024 + br i1 %or.cond.i.i.i.i.i.i.i.i.i.i, label %4026, label %_ZSt8_DestroyIN5Yosys7hashlib4dictINS0_5RTLIL8IdStringESt4pairIibENS1_8hash_opsIS4_EEE7entry_tEEvPT_.exit.i.i.i.i.i + +4026: ; preds = %.lr.ph.i.i.i.i.i1835 + %4027 = sext i32 %4022 to i64 + %4028 = load ptr, ptr @_ZN5Yosys5RTLIL8IdString24global_refcount_storage_E, align 8, !tbaa !35 + %4029 = getelementptr inbounds nuw i32, ptr %4028, i64 %4027 + %4030 = load i32, ptr %4029, align 4, !tbaa !18 + %4031 = add nsw i32 %4030, -1 + store i32 %4031, ptr %4029, align 4, !tbaa !18 + %4032 = icmp sgt i32 %4030, 1 + br i1 %4032, label %_ZSt8_DestroyIN5Yosys7hashlib4dictINS0_5RTLIL8IdStringESt4pairIibENS1_8hash_opsIS4_EEE7entry_tEEvPT_.exit.i.i.i.i.i, label %4033 + +4033: ; preds = %4026 + invoke void @_ZN5Yosys5RTLIL8IdString14free_referenceEi(i32 noundef %4022) + to label %_ZSt8_DestroyIN5Yosys7hashlib4dictINS0_5RTLIL8IdStringESt4pairIibENS1_8hash_opsIS4_EEE7entry_tEEvPT_.exit.i.i.i.i.i unwind label %4034 + +4034: ; preds = %4033 + %4035 = landingpad { ptr, i32 } catch ptr null - %4035 = extractvalue { ptr, i32 } %4034, 0 - call void @__clang_call_terminate(ptr %4035) #34 + %4036 = extractvalue { ptr, i32 } %4035, 0 + call void @__clang_call_terminate(ptr %4036) #34 unreachable -_ZSt8_DestroyIN5Yosys7hashlib4dictINS0_5RTLIL8IdStringESt4pairIibENS1_8hash_opsIS4_EEE7entry_tEEvPT_.exit.i.i.i.i.i: ; preds = %4032, %4025, %.lr.ph.i.i.i.i.i1835 - %4036 = getelementptr inbounds nuw i8, ptr %.05.i.i.i.i.i1836, i64 16 - %.not.i.i.i.i.i1837 = icmp eq ptr %4036, %4020 +_ZSt8_DestroyIN5Yosys7hashlib4dictINS0_5RTLIL8IdStringESt4pairIibENS1_8hash_opsIS4_EEE7entry_tEEvPT_.exit.i.i.i.i.i: ; preds = %4033, %4026, %.lr.ph.i.i.i.i.i1835 + %4037 = getelementptr inbounds nuw i8, ptr %.05.i.i.i.i.i1836, i64 16 + %.not.i.i.i.i.i1837 = icmp eq ptr %4037, %4021 br i1 %.not.i.i.i.i.i1837, label %_ZSt8_DestroyIPN5Yosys7hashlib4dictINS0_5RTLIL8IdStringESt4pairIibENS1_8hash_opsIS4_EEE7entry_tESA_EvT_SC_RSaIT0_E.exitthread-pre-split.i.i, label %.lr.ph.i.i.i.i.i1835, !llvm.loop !109 _ZSt8_DestroyIPN5Yosys7hashlib4dictINS0_5RTLIL8IdStringESt4pairIibENS1_8hash_opsIS4_EEE7entry_tESA_EvT_SC_RSaIT0_E.exitthread-pre-split.i.i: ; preds = %_ZSt8_DestroyIN5Yosys7hashlib4dictINS0_5RTLIL8IdStringESt4pairIibENS1_8hash_opsIS4_EEE7entry_tEEvPT_.exit.i.i.i.i.i @@ -11068,50 +11068,50 @@ _ZSt8_DestroyIPN5Yosys7hashlib4dictINS0_5RTLIL8IdStringESt4pairIibENS1_8hash_ops br label %_ZSt8_DestroyIPN5Yosys7hashlib4dictINS0_5RTLIL8IdStringESt4pairIibENS1_8hash_opsIS4_EEE7entry_tESA_EvT_SC_RSaIT0_E.exit.i.i _ZSt8_DestroyIPN5Yosys7hashlib4dictINS0_5RTLIL8IdStringESt4pairIibENS1_8hash_opsIS4_EEE7entry_tESA_EvT_SC_RSaIT0_E.exit.i.i: ; preds = %_ZSt8_DestroyIPN5Yosys7hashlib4dictINS0_5RTLIL8IdStringESt4pairIibENS1_8hash_opsIS4_EEE7entry_tESA_EvT_SC_RSaIT0_E.exitthread-pre-split.i.i, %.loopexit2183 - %4037 = phi ptr [ %.pr.i.i1838, %_ZSt8_DestroyIPN5Yosys7hashlib4dictINS0_5RTLIL8IdStringESt4pairIibENS1_8hash_opsIS4_EEE7entry_tESA_EvT_SC_RSaIT0_E.exitthread-pre-split.i.i ], [ %4019, %.loopexit2183 ] - %.not.i.i.i.i1839 = icmp eq ptr %4037, null - br i1 %.not.i.i.i.i1839, label %_ZNSt6vectorIN5Yosys7hashlib4dictINS0_5RTLIL8IdStringESt4pairIibENS1_8hash_opsIS4_EEE7entry_tESaISA_EED2Ev.exit.i, label %4038 - -4038: ; preds = %_ZSt8_DestroyIPN5Yosys7hashlib4dictINS0_5RTLIL8IdStringESt4pairIibENS1_8hash_opsIS4_EEE7entry_tESA_EvT_SC_RSaIT0_E.exit.i.i - %4039 = getelementptr inbounds nuw i8, ptr %23, i64 40 - %4040 = load ptr, ptr %4039, align 8, !tbaa !182 - %4041 = ptrtoint ptr %4040 to i64 - %4042 = ptrtoint ptr %4037 to i64 - %4043 = sub i64 %4041, %4042 - call void @_ZdlPvm(ptr noundef nonnull %4037, i64 noundef %4043) #33 + %4038 = phi ptr [ %.pr.i.i1838, %_ZSt8_DestroyIPN5Yosys7hashlib4dictINS0_5RTLIL8IdStringESt4pairIibENS1_8hash_opsIS4_EEE7entry_tESA_EvT_SC_RSaIT0_E.exitthread-pre-split.i.i ], [ %4020, %.loopexit2183 ] + %.not.i.i.i.i1839 = icmp eq ptr %4038, null + br i1 %.not.i.i.i.i1839, label %_ZNSt6vectorIN5Yosys7hashlib4dictINS0_5RTLIL8IdStringESt4pairIibENS1_8hash_opsIS4_EEE7entry_tESaISA_EED2Ev.exit.i, label %4039 + +4039: ; preds = %_ZSt8_DestroyIPN5Yosys7hashlib4dictINS0_5RTLIL8IdStringESt4pairIibENS1_8hash_opsIS4_EEE7entry_tESA_EvT_SC_RSaIT0_E.exit.i.i + %4040 = getelementptr inbounds nuw i8, ptr %23, i64 40 + %4041 = load ptr, ptr %4040, align 8, !tbaa !182 + %4042 = ptrtoint ptr %4041 to i64 + %4043 = ptrtoint ptr %4038 to i64 + %4044 = sub i64 %4042, %4043 + call void @_ZdlPvm(ptr noundef nonnull %4038, i64 noundef %4044) #33 br label %_ZNSt6vectorIN5Yosys7hashlib4dictINS0_5RTLIL8IdStringESt4pairIibENS1_8hash_opsIS4_EEE7entry_tESaISA_EED2Ev.exit.i -_ZNSt6vectorIN5Yosys7hashlib4dictINS0_5RTLIL8IdStringESt4pairIibENS1_8hash_opsIS4_EEE7entry_tESaISA_EED2Ev.exit.i: ; preds = %4038, %_ZSt8_DestroyIPN5Yosys7hashlib4dictINS0_5RTLIL8IdStringESt4pairIibENS1_8hash_opsIS4_EEE7entry_tESA_EvT_SC_RSaIT0_E.exit.i.i - %4044 = load ptr, ptr %23, align 8, !tbaa !35 - %.not.i.i.i1.i1840 = icmp eq ptr %4044, null - br i1 %.not.i.i.i1.i1840, label %_ZN5Yosys7hashlib4dictINS_5RTLIL8IdStringESt4pairIibENS0_8hash_opsIS3_EEED2Ev.exit, label %4045 - -4045: ; preds = %_ZNSt6vectorIN5Yosys7hashlib4dictINS0_5RTLIL8IdStringESt4pairIibENS1_8hash_opsIS4_EEE7entry_tESaISA_EED2Ev.exit.i - %4046 = getelementptr inbounds nuw i8, ptr %23, i64 16 - %4047 = load ptr, ptr %4046, align 8, !tbaa !84 - %4048 = ptrtoint ptr %4047 to i64 - %4049 = ptrtoint ptr %4044 to i64 - %4050 = sub i64 %4048, %4049 - call void @_ZdlPvm(ptr noundef nonnull %4044, i64 noundef %4050) #33 +_ZNSt6vectorIN5Yosys7hashlib4dictINS0_5RTLIL8IdStringESt4pairIibENS1_8hash_opsIS4_EEE7entry_tESaISA_EED2Ev.exit.i: ; preds = %4039, %_ZSt8_DestroyIPN5Yosys7hashlib4dictINS0_5RTLIL8IdStringESt4pairIibENS1_8hash_opsIS4_EEE7entry_tESA_EvT_SC_RSaIT0_E.exit.i.i + %4045 = load ptr, ptr %23, align 8, !tbaa !35 + %.not.i.i.i1.i1840 = icmp eq ptr %4045, null + br i1 %.not.i.i.i1.i1840, label %_ZN5Yosys7hashlib4dictINS_5RTLIL8IdStringESt4pairIibENS0_8hash_opsIS3_EEED2Ev.exit, label %4046 + +4046: ; preds = %_ZNSt6vectorIN5Yosys7hashlib4dictINS0_5RTLIL8IdStringESt4pairIibENS1_8hash_opsIS4_EEE7entry_tESaISA_EED2Ev.exit.i + %4047 = getelementptr inbounds nuw i8, ptr %23, i64 16 + %4048 = load ptr, ptr %4047, align 8, !tbaa !84 + %4049 = ptrtoint ptr %4048 to i64 + %4050 = ptrtoint ptr %4045 to i64 + %4051 = sub i64 %4049, %4050 + call void @_ZdlPvm(ptr noundef nonnull %4045, i64 noundef %4051) #33 br label %_ZN5Yosys7hashlib4dictINS_5RTLIL8IdStringESt4pairIibENS0_8hash_opsIS3_EEED2Ev.exit -_ZN5Yosys7hashlib4dictINS_5RTLIL8IdStringESt4pairIibENS0_8hash_opsIS3_EEED2Ev.exit: ; preds = %_ZNSt6vectorIN5Yosys7hashlib4dictINS0_5RTLIL8IdStringESt4pairIibENS1_8hash_opsIS4_EEE7entry_tESaISA_EED2Ev.exit.i, %4045 +_ZN5Yosys7hashlib4dictINS_5RTLIL8IdStringESt4pairIibENS0_8hash_opsIS3_EEED2Ev.exit: ; preds = %_ZNSt6vectorIN5Yosys7hashlib4dictINS0_5RTLIL8IdStringESt4pairIibENS1_8hash_opsIS4_EEE7entry_tESaISA_EED2Ev.exit.i, %4046 call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %23) #29 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #29 - %4051 = load ptr, ptr %21, align 8, !tbaa !25 - %4052 = icmp eq ptr %4051, %249 - br i1 %4052, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i1842, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i1841 + %4052 = load ptr, ptr %21, align 8, !tbaa !25 + %4053 = icmp eq ptr %4052, %249 + br i1 %4053, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i1842, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i1841 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i1842: ; preds = %_ZN5Yosys7hashlib4dictINS_5RTLIL8IdStringESt4pairIibENS0_8hash_opsIS3_EEED2Ev.exit - %4053 = load i64, ptr %250, align 8, !tbaa !14 - %4054 = icmp ult i64 %4053, 16 - call void @llvm.assume(i1 %4054) + %4054 = load i64, ptr %250, align 8, !tbaa !14 + %4055 = icmp ult i64 %4054, 16 + call void @llvm.assume(i1 %4055) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1843 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i1841: ; preds = %_ZN5Yosys7hashlib4dictINS_5RTLIL8IdStringESt4pairIibENS0_8hash_opsIS3_EEED2Ev.exit - %4055 = load i64, ptr %249, align 8, !tbaa !17 - %4056 = add i64 %4055, 1 - call void @_ZdlPvm(ptr noundef %4051, i64 noundef %4056) #33 + %4056 = load i64, ptr %249, align 8, !tbaa !17 + %4057 = add i64 %4056, 1 + call void @_ZdlPvm(ptr noundef %4052, i64 noundef %4057) #33 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1843 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1843: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i1842, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i1841 @@ -11119,7 +11119,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1843: ; preds = %_ call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #29 ret void -4057: ; preds = %.loopexit2141, %.loopexit.split-lp2142, %.loopexit2171, %.loopexit.split-lp2172, %.loopexit2166, %.loopexit.split-lp2167, %.loopexit2151, %.loopexit.split-lp2152, %.loopexit2146, %.loopexit.split-lp2147, %.loopexit2161, %.loopexit.split-lp2162, %.loopexit2156, %.loopexit.split-lp2157, %.loopexit2178, %.loopexit.split-lp2179, %.loopexit2185, %.loopexit.split-lp2186, %1148, %3563, %3979, %3627, %499, %501, %619, %.body1125, %1858, %2054, %3211, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1638, %3525, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1044, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1273, %1877, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1506, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1503, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1500, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1480, %2635, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1450, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1414, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1378, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1342, %2097, %482 +4058: ; preds = %.loopexit2141, %.loopexit.split-lp2142, %.loopexit2171, %.loopexit.split-lp2172, %.loopexit2166, %.loopexit.split-lp2167, %.loopexit2151, %.loopexit.split-lp2152, %.loopexit2146, %.loopexit.split-lp2147, %.loopexit2161, %.loopexit.split-lp2162, %.loopexit2156, %.loopexit.split-lp2157, %.loopexit2178, %.loopexit.split-lp2179, %.loopexit2185, %.loopexit.split-lp2186, %1148, %3563, %3979, %3627, %499, %501, %619, %.body1125, %1858, %2054, %3211, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1638, %3525, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1044, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1273, %1877, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1506, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1503, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1500, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1480, %2635, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1450, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1414, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1378, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1342, %2097, %482 %.pn955 = phi { ptr, i32 } [ %483, %482 ], [ %.pn951.pn, %3525 ], [ %.pn920.pn.pn.pn, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1638 ], [ %.pn905.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %3211 ], [ %.pn791.pn, %2054 ], [ %.pn766.pn.pn.pn, %1858 ], [ %500, %499 ], [ %.pn720.pn.pn.pn.pn.pn, %.body1125 ], [ %.pn690, %619 ], [ %502, %501 ], [ %.pn683.pn, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1044 ], [ %1878, %1877 ], [ %.pn772.pn.pn, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1273 ], [ %.pn857.pn.pn.pn.pn.pn.pn.pn, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1480 ], [ %.pn854.pn, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1506 ], [ %.pn851.pn, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1503 ], [ %.pn847.pn.pn, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1500 ], [ %2636, %2635 ], [ %.pn836.pn.pn.pn.pn.pn.pn.pn.pn.pn, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1450 ], [ %.pn824.pn.pn.pn.pn.pn.pn.pn.pn.pn, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1414 ], [ %.pn812.pn.pn.pn.pn.pn.pn.pn.pn.pn, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1378 ], [ %.pn800.pn.pn.pn.pn.pn.pn.pn.pn.pn, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1342 ], [ %.pn796.pn, %2097 ], [ %.pn666.pn.pn, %3979 ], [ %.pn, %3563 ], [ %3628, %3627 ], [ %.pn735.pn.pn.pn.pn, %1148 ], [ %lpad.loopexit2187, %.loopexit2185 ], [ %lpad.loopexit.split-lp2188, %.loopexit.split-lp2186 ], [ %lpad.loopexit2180, %.loopexit2178 ], [ %lpad.loopexit.split-lp2181, %.loopexit.split-lp2179 ], [ %lpad.loopexit2158, %.loopexit2156 ], [ %lpad.loopexit.split-lp2159, %.loopexit.split-lp2157 ], [ %lpad.loopexit2163, %.loopexit2161 ], [ %lpad.loopexit.split-lp2164, %.loopexit.split-lp2162 ], [ %lpad.loopexit2148, %.loopexit2146 ], [ %lpad.loopexit.split-lp2149, %.loopexit.split-lp2147 ], [ %lpad.loopexit2153, %.loopexit2151 ], [ %lpad.loopexit.split-lp2154, %.loopexit.split-lp2152 ], [ %lpad.loopexit2168, %.loopexit2166 ], [ %lpad.loopexit.split-lp2169, %.loopexit.split-lp2167 ], [ %lpad.loopexit2173, %.loopexit2171 ], [ %lpad.loopexit.split-lp2174, %.loopexit.split-lp2172 ], [ %lpad.loopexit2143, %.loopexit2141 ], [ %lpad.loopexit.split-lp2144, %.loopexit.split-lp2142 ] call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %26) #29 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #29 @@ -11127,20 +11127,20 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1843: ; preds = %_ call void @_ZN5Yosys7hashlib4dictINS_5RTLIL8IdStringESt4pairIibENS0_8hash_opsIS3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(49) %23) #29 call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %23) #29 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #29 - %4058 = load ptr, ptr %21, align 8, !tbaa !25 - %4059 = icmp eq ptr %4058, %249 - br i1 %4059, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i1845, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i1844 - -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i1845: ; preds = %4057 - %4060 = load i64, ptr %250, align 8, !tbaa !14 - %4061 = icmp ult i64 %4060, 16 - call void @llvm.assume(i1 %4061) + %4059 = load ptr, ptr %21, align 8, !tbaa !25 + %4060 = icmp eq ptr %4059, %249 + br i1 %4060, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i1845, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i1844 + +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i1845: ; preds = %4058 + %4061 = load i64, ptr %250, align 8, !tbaa !14 + %4062 = icmp ult i64 %4061, 16 + call void @llvm.assume(i1 %4062) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1846 -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i1844: ; preds = %4057 - %4062 = load i64, ptr %249, align 8, !tbaa !17 - %4063 = add i64 %4062, 1 - call void @_ZdlPvm(ptr noundef %4058, i64 noundef %4063) #33 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i1844: ; preds = %4058 + %4063 = load i64, ptr %249, align 8, !tbaa !17 + %4064 = add i64 %4063, 1 + call void @_ZdlPvm(ptr noundef %4059, i64 noundef %4064) #33 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1846 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1846: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i1845, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i1844 diff --git a/bench/zlib/optimized/inflate.ll b/bench/zlib/optimized/inflate.ll index c2c6bc19a88..4e509656bd1 100644 --- a/bench/zlib/optimized/inflate.ll +++ b/bench/zlib/optimized/inflate.ll @@ -4046,7 +4046,7 @@ inflateStateCheck.exit: ; preds = %16 ._crit_edge70: ; preds = %29 %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %14, i64 140 %.pre71 = load i32, ptr %.phi.trans.insert, align 4, !tbaa !100 - br label %56 + br label %57 30: ; preds = %29 store i32 16211, ptr %18, align 8, !tbaa !18 @@ -4095,41 +4095,41 @@ inflateStateCheck.exit: ; preds = %16 %49 = icmp eq i8 %46, %48 %50 = add nuw nsw i32 %.01415.i, 1 %.not.i45 = icmp eq i8 %46, 0 - %51 = sub nuw nsw i32 4, %.01415.i - %spec.select.i46 = select i1 %.not.i45, i32 %51, i32 0 + %52 = sub nuw nsw i32 4, %.01415.i + %spec.select.i46 = select i1 %.not.i45, i32 %52, i32 0 %.1.i = select i1 %49, i32 %50, i32 %spec.select.i46 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 - %52 = icmp samesign ult i64 %indvars.iv.next.i, %44 - %53 = icmp samesign ult i32 %.1.i, 4 - %54 = select i1 %52, i1 %53, i1 false - br i1 %54, label %.lr.ph.i, label %syncsearch.exit, !llvm.loop !102 + %53 = icmp samesign ult i64 %indvars.iv.next.i, %44 + %54 = icmp samesign ult i32 %.1.i, 4 + %55 = select i1 %53, i1 %54, i1 false + br i1 %55, label %.lr.ph.i, label %syncsearch.exit, !llvm.loop !102 syncsearch.exit: ; preds = %.lr.ph.i, %.thread %.014.lcssa.i = phi i32 [ 0, %.thread ], [ %.1.i, %.lr.ph.i ] - %55 = getelementptr inbounds nuw i8, ptr %14, i64 140 - store i32 %.014.lcssa.i, ptr %55, align 4, !tbaa !100 + %56 = getelementptr inbounds nuw i8, ptr %14, i64 140 + store i32 %.014.lcssa.i, ptr %56, align 4, !tbaa !100 %.pre = load i32, ptr %22, align 8, !tbaa !45 - br label %56 - -56: ; preds = %._crit_edge70, %syncsearch.exit - %57 = phi i32 [ %.014.lcssa.i, %syncsearch.exit ], [ %.pre71, %._crit_edge70 ] - %58 = phi i32 [ %.pre, %syncsearch.exit ], [ %23, %._crit_edge70 ] - %59 = getelementptr inbounds nuw i8, ptr %14, i64 140 - %60 = load ptr, ptr %0, align 8, !tbaa !44 - %61 = icmp ne i32 %58, 0 - %62 = icmp ult i32 %57, 4 - %63 = select i1 %61, i1 %62, i1 false - br i1 %63, label %.lr.ph.preheader.i49, label %syncsearch.exit58 - -.lr.ph.preheader.i49: ; preds = %56 - %64 = zext i32 %58 to i64 + br label %57 + +57: ; preds = %._crit_edge70, %syncsearch.exit + %58 = phi i32 [ %.014.lcssa.i, %syncsearch.exit ], [ %.pre71, %._crit_edge70 ] + %59 = phi i32 [ %.pre, %syncsearch.exit ], [ %23, %._crit_edge70 ] + %60 = getelementptr inbounds nuw i8, ptr %14, i64 140 + %61 = load ptr, ptr %0, align 8, !tbaa !44 + %62 = icmp ne i32 %59, 0 + %63 = icmp ult i32 %58, 4 + %64 = select i1 %62, i1 %63, i1 false + br i1 %64, label %.lr.ph.preheader.i49, label %syncsearch.exit58 + +.lr.ph.preheader.i49: ; preds = %57 + %65 = zext i32 %59 to i64 br label %.lr.ph.i50 .lr.ph.i50: ; preds = %.lr.ph.i50, %.lr.ph.preheader.i49 %indvars.iv.i51 = phi i64 [ 0, %.lr.ph.preheader.i49 ], [ %indvars.iv.next.i56, %.lr.ph.i50 ] - %.01415.i52 = phi i32 [ %57, %.lr.ph.preheader.i49 ], [ %.1.i55, %.lr.ph.i50 ] - %65 = getelementptr inbounds nuw i8, ptr %60, i64 %indvars.iv.i51 - %66 = load i8, ptr %65, align 1, !tbaa !41 + %.01415.i52 = phi i32 [ %58, %.lr.ph.preheader.i49 ], [ %.1.i55, %.lr.ph.i50 ] + %66 = getelementptr inbounds nuw i8, ptr %61, i64 %indvars.iv.i51 + %67 = load i8, ptr %66, align 1, !tbaa !41 %67 = icmp samesign ugt i32 %.01415.i52, 1 %68 = sext i1 %67 to i8 %69 = icmp eq i8 %66, %68 @@ -4137,99 +4137,99 @@ syncsearch.exit: ; preds = %.lr.ph.i, %.thread %.not.i53 = icmp eq i8 %66, 0 %71 = sub nuw nsw i32 4, %.01415.i52 %spec.select.i54 = select i1 %.not.i53, i32 %71, i32 0 - %.1.i55 = select i1 %69, i32 %70, i32 %spec.select.i54 + %spec.select.i54 = select i1 %69, i32 %70, i32 %spec.select.i54 %indvars.iv.next.i56 = add nuw nsw i64 %indvars.iv.i51, 1 - %72 = icmp samesign ult i64 %indvars.iv.next.i56, %64 - %73 = icmp samesign ult i32 %.1.i55, 4 - %74 = select i1 %72, i1 %73, i1 false - br i1 %74, label %.lr.ph.i50, label %._crit_edge.loopexit.i57, !llvm.loop !102 + %74 = icmp samesign ult i64 %indvars.iv.next.i56, %65 + %75 = icmp samesign ult i32 %.1.i55, 4 + %76 = select i1 %74, i1 %75, i1 false + br i1 %76, label %.lr.ph.i50, label %._crit_edge.loopexit.i57, !llvm.loop !102 ._crit_edge.loopexit.i57: ; preds = %.lr.ph.i50 - %75 = trunc nuw i64 %indvars.iv.next.i56 to i32 + %77 = trunc nuw i64 %indvars.iv.next.i56 to i32 br label %syncsearch.exit58 -syncsearch.exit58: ; preds = %56, %._crit_edge.loopexit.i57 - %.014.lcssa.i47 = phi i32 [ %57, %56 ], [ %.1.i55, %._crit_edge.loopexit.i57 ] - %.0.lcssa.i48 = phi i32 [ 0, %56 ], [ %75, %._crit_edge.loopexit.i57 ] - store i32 %.014.lcssa.i47, ptr %59, align 4, !tbaa !100 - %76 = load i32, ptr %22, align 8, !tbaa !45 - %77 = sub i32 %76, %.0.lcssa.i48 - store i32 %77, ptr %22, align 8, !tbaa !45 - %78 = zext i32 %.0.lcssa.i48 to i64 - %79 = getelementptr inbounds nuw i8, ptr %60, i64 %78 - store ptr %79, ptr %0, align 8, !tbaa !44 - %80 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %81 = load i64, ptr %80, align 8, !tbaa !20 - %82 = add i64 %81, %78 - store i64 %82, ptr %80, align 8, !tbaa !20 +syncsearch.exit58: ; preds = %57, %._crit_edge.loopexit.i57 + %.014.lcssa.i47 = phi i32 [ %58, %56 ], [ %.1.i55, %._crit_edge.loopexit.i57 ] + %.0.lcssa.i48 = phi i32 [ 0, %56 ], [ %77, %._crit_edge.loopexit.i57 ] + store i32 %.014.lcssa.i47, ptr %60, align 4, !tbaa !100 + %78 = load i32, ptr %22, align 8, !tbaa !45 + %79 = sub i32 %78, %.0.lcssa.i48 + store i32 %79, ptr %22, align 8, !tbaa !45 + %80 = zext i32 %.0.lcssa.i48 to i64 + %81 = getelementptr inbounds nuw i8, ptr %61, i64 %80 + store ptr %81, ptr %0, align 8, !tbaa !44 + %82 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %83 = load i64, ptr %82, align 8, !tbaa !20 + %84 = add i64 %83, %80 + store i64 %84, ptr %82, align 8, !tbaa !20 %.not44 = icmp eq i32 %.014.lcssa.i47, 4 - br i1 %.not44, label %83, label %inflateStateCheck.exit.thread - -83: ; preds = %syncsearch.exit58 - %84 = getelementptr inbounds nuw i8, ptr %14, i64 24 - %85 = load i32, ptr %84, align 8, !tbaa !25 - %86 = icmp eq i32 %85, -1 - %87 = getelementptr inbounds nuw i8, ptr %14, i64 16 - br i1 %86, label %91, label %88 - -88: ; preds = %83 - %89 = load i32, ptr %87, align 8, !tbaa !21 - %90 = and i32 %89, -5 - br label %91 - -91: ; preds = %83, %88 - %.sink = phi i32 [ %90, %88 ], [ 0, %83 ] - store i32 %.sink, ptr %87, align 8, !tbaa !21 - %92 = getelementptr inbounds nuw i8, ptr %0, i64 40 - %93 = load i64, ptr %92, align 8, !tbaa !97 - %94 = getelementptr inbounds nuw i8, ptr %14, i64 60 - store i32 0, ptr %94, align 4, !tbaa !35 - %95 = getelementptr inbounds nuw i8, ptr %14, i64 64 - store i32 0, ptr %95, align 8, !tbaa !36 - %96 = getelementptr inbounds nuw i8, ptr %14, i64 68 - store i32 0, ptr %96, align 4, !tbaa !37 - %97 = getelementptr inbounds nuw i8, ptr %14, i64 40 - store i64 0, ptr %97, align 8, !tbaa !19 - %98 = getelementptr inbounds nuw i8, ptr %14, i64 16 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %92, i8 0, i64 16, i1 false) - %99 = load i32, ptr %98, align 8, !tbaa !21 - %.not24.i.i = icmp eq i32 %99, 0 - br i1 %.not24.i.i, label %inflateReset.exit, label %100 - -100: ; preds = %91 - %101 = and i32 %99, 1 - %102 = zext nneg i32 %101 to i64 - %103 = getelementptr inbounds nuw i8, ptr %0, i64 96 - store i64 %102, ptr %103, align 8, !tbaa !22 + br i1 %.not44, label %85, label %inflateStateCheck.exit.thread + +85: ; preds = %syncsearch.exit58 + %86 = getelementptr inbounds nuw i8, ptr %14, i64 24 + %87 = load i32, ptr %86, align 8, !tbaa !25 + %88 = icmp eq i32 %87, -1 + %89 = getelementptr inbounds nuw i8, ptr %14, i64 16 + br i1 %88, label %93, label %90 + +90: ; preds = %85 + %91 = load i32, ptr %89, align 8, !tbaa !21 + %92 = and i32 %91, -5 + br label %93 + +93: ; preds = %85, %90 + %.sink = phi i32 [ %92, %88 ], [ 0, %83 ] + store i32 %.sink, ptr %89, align 8, !tbaa !21 + %94 = getelementptr inbounds nuw i8, ptr %0, i64 40 + %95 = load i64, ptr %94, align 8, !tbaa !97 + %96 = getelementptr inbounds nuw i8, ptr %14, i64 60 + store i32 0, ptr %96, align 4, !tbaa !35 + %97 = getelementptr inbounds nuw i8, ptr %14, i64 64 + store i32 0, ptr %97, align 8, !tbaa !36 + %98 = getelementptr inbounds nuw i8, ptr %14, i64 68 + store i32 0, ptr %98, align 4, !tbaa !37 + %99 = getelementptr inbounds nuw i8, ptr %14, i64 40 + store i64 0, ptr %99, align 8, !tbaa !19 + %100 = getelementptr inbounds nuw i8, ptr %14, i64 16 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %94, i8 0, i64 16, i1 false) + %101 = load i32, ptr %100, align 8, !tbaa !21 + %.not24.i.i = icmp eq i32 %101, 0 + br i1 %.not24.i.i, label %inflateReset.exit, label %102 + +102: ; preds = %93 + %103 = and i32 %101, 1 + %104 = zext nneg i32 %103 to i64 + %105 = getelementptr inbounds nuw i8, ptr %0, i64 96 + store i64 %104, ptr %105, align 8, !tbaa !22 br label %inflateReset.exit -inflateReset.exit: ; preds = %91, %100 - %104 = getelementptr inbounds nuw i8, ptr %14, i64 12 - store i32 0, ptr %104, align 4, !tbaa !23 - %105 = getelementptr inbounds nuw i8, ptr %14, i64 20 - store i32 0, ptr %105, align 4, !tbaa !24 - %106 = getelementptr inbounds nuw i8, ptr %14, i64 28 - store i32 32768, ptr %106, align 4, !tbaa !26 - %107 = getelementptr inbounds nuw i8, ptr %14, i64 48 - store ptr null, ptr %107, align 8, !tbaa !27 - %108 = getelementptr inbounds nuw i8, ptr %14, i64 80 - store i64 0, ptr %108, align 8, !tbaa !28 - %109 = getelementptr inbounds nuw i8, ptr %14, i64 88 - store i32 0, ptr %109, align 8, !tbaa !29 - %110 = getelementptr inbounds nuw i8, ptr %14, i64 1368 - %111 = getelementptr inbounds nuw i8, ptr %14, i64 144 - store ptr %110, ptr %111, align 8, !tbaa !30 - %112 = getelementptr inbounds nuw i8, ptr %14, i64 112 - store ptr %110, ptr %112, align 8, !tbaa !31 - %113 = getelementptr inbounds nuw i8, ptr %14, i64 104 - store ptr %110, ptr %113, align 8, !tbaa !32 - %114 = getelementptr inbounds nuw i8, ptr %14, i64 7144 - store i32 1, ptr %114, align 8, !tbaa !33 - %115 = getelementptr inbounds nuw i8, ptr %14, i64 7148 - store i32 -1, ptr %115, align 4, !tbaa !34 - store i64 %82, ptr %80, align 8, !tbaa !20 - store i64 %93, ptr %92, align 8, !tbaa !97 - store i32 %85, ptr %84, align 8, !tbaa !25 +inflateReset.exit: ; preds = %93, %102 + %106 = getelementptr inbounds nuw i8, ptr %14, i64 12 + store i32 0, ptr %106, align 4, !tbaa !23 + %107 = getelementptr inbounds nuw i8, ptr %14, i64 20 + store i32 0, ptr %107, align 4, !tbaa !24 + %108 = getelementptr inbounds nuw i8, ptr %14, i64 28 + store i32 32768, ptr %108, align 4, !tbaa !26 + %109 = getelementptr inbounds nuw i8, ptr %14, i64 48 + store ptr null, ptr %109, align 8, !tbaa !27 + %110 = getelementptr inbounds nuw i8, ptr %14, i64 80 + store i64 0, ptr %110, align 8, !tbaa !28 + %111 = getelementptr inbounds nuw i8, ptr %14, i64 88 + store i32 0, ptr %111, align 8, !tbaa !29 + %112 = getelementptr inbounds nuw i8, ptr %14, i64 1368 + %113 = getelementptr inbounds nuw i8, ptr %14, i64 144 + store ptr %112, ptr %113, align 8, !tbaa !30 + %114 = getelementptr inbounds nuw i8, ptr %14, i64 112 + store ptr %112, ptr %114, align 8, !tbaa !31 + %115 = getelementptr inbounds nuw i8, ptr %14, i64 104 + store ptr %112, ptr %115, align 8, !tbaa !32 + %116 = getelementptr inbounds nuw i8, ptr %14, i64 7144 + store i32 1, ptr %116, align 8, !tbaa !33 + %117 = getelementptr inbounds nuw i8, ptr %14, i64 7148 + store i32 -1, ptr %117, align 4, !tbaa !34 + store i64 %84, ptr %82, align 8, !tbaa !20 + store i64 %95, ptr %94, align 8, !tbaa !97 + store i32 %87, ptr %86, align 8, !tbaa !25 store i32 16191, ptr %18, align 8, !tbaa !18 br label %inflateStateCheck.exit.thread