From 7698f4a5e0049f50305ce27e091f5a2e00712a72 Mon Sep 17 00:00:00 2001 From: dtcxzyw <15650457+dtcxzyw@users.noreply.github.com> Date: Sun, 1 Dec 2024 14:25:02 +0800 Subject: [PATCH 1/2] pre-commit: PR118195 --- 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 820278fb20a..0af3561efb0 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/118195 # Please rebase manually # git fetch origin From 7025400b29bc42cc2f6389cb262718c392505090 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 1 Dec 2024 06:48:03 +0000 Subject: [PATCH 2/2] pre-commit: Update --- bench/abc/optimized/luckySimple.c.ll | 7 +- bench/abc/optimized/rsbDec6.c.ll | 202 ++++---- bench/arrow/optimized/compare.cc.ll | 27 +- bench/arrow/optimized/decimal.cc.ll | 25 +- bench/arrow/optimized/light_array.cc.ll | 5 +- .../assimp/optimized/IFCReaderGen1_2x3.cpp.ll | 126 ++--- .../assimp/optimized/IFCReaderGen2_2x3.cpp.ll | 68 +-- bench/casadi/optimized/convexify.cpp.ll | 6 +- bench/clamav/optimized/client.c.ll | 8 +- bench/clamav/optimized/timefn.cpp.ll | 38 +- bench/darktable/optimized/avif.c.ll | 321 +++++++------ .../optimized/ub_duckdb_func_string.cpp.ll | 6 +- bench/folly/optimized/LoggerDB.cpp.ll | 16 +- bench/harfbuzz/optimized/harfbuzz.cc.ll | 18 +- bench/harfbuzz/optimized/hb-static.cc.ll | 3 +- bench/hdf5/optimized/sio_engine.c.ll | 57 ++- bench/image-rs/optimized/2ndzmzcdt55acj4k.ll | 12 +- bench/linux/optimized/devio.ll | 219 +++++---- bench/linux/optimized/message.ll | 146 +++--- bench/linux/optimized/transport.ll | 315 ++++++------- bench/lodepng/optimized/pngdetail.cpp.ll | 9 +- bench/luau/optimized/Linter.cpp.ll | 292 ++++++------ bench/meshlab/optimized/filter_func.cpp.ll | 138 +++--- bench/minetest/optimized/c_content.cpp.ll | 8 +- .../optimized/test_serialization.cpp.ll | 20 +- bench/opencv/optimized/nonrigid_icp.cpp.ll | 13 +- bench/openjdk/optimized/archiveHeapWriter.ll | 59 +-- bench/openjdk/optimized/filemap.ll | 137 +++--- bench/openjdk/optimized/hb-ot-layout.ll | 15 +- bench/openjdk/optimized/objectMonitor.ll | 55 ++- .../optimized/basisCurvesTopology.cpp.ll | 45 +- bench/openusd/optimized/restoration.c.ll | 430 +++++++++--------- bench/openusd/optimized/yv12config.c.ll | 339 +++++++------- .../coordinateoperationfactory.cpp.ll | 132 +++--- bench/proj/optimized/io.cpp.ll | 36 +- bench/quantlib/optimized/floatfloatswap.ll | 6 +- bench/redis/optimized/server.ll | 19 +- bench/slurm/optimized/slurm_protocol_api.ll | 385 ++++++++-------- bench/wasmedge/optimized/refInstr.cpp.ll | 151 +++--- bench/wasmedge/optimized/tableInstr.cpp.ll | 319 ++++++------- .../wasmtime-rs/optimized/4ab4rlryc5h7bf6z.ll | 9 +- bench/wireshark/optimized/blf.c.ll | 5 +- bench/wireshark/optimized/packet-knxip.c.ll | 68 ++- bench/yosys/optimized/logger.ll | 10 +- bench/z3/optimized/theory_arith.cpp.ll | 21 +- .../optimized/9l8qkfw5pad02im34bzaql12u.ll | 111 +++-- 46 files changed, 2195 insertions(+), 2262 deletions(-) diff --git a/bench/abc/optimized/luckySimple.c.ll b/bench/abc/optimized/luckySimple.c.ll index a3e95ab0571..7b0fa192aeb 100644 --- a/bench/abc/optimized/luckySimple.c.ll +++ b/bench/abc/optimized/luckySimple.c.ll @@ -334,12 +334,11 @@ factorial.exit: ; preds = %factorial.exit.loop .lr.ph.i.preheader: ; preds = %factorial.exit %19 = icmp sgt i32 %0, 0 - %umax19 = tail call i32 @llvm.umax.i32(i32 %4, i32 1) br i1 %19, label %.lr.ph.i.us.preheader, label %.lr.ph.i.preheader14 .lr.ph.i.preheader14: ; preds = %.lr.ph.i.preheader %20 = add nsw i64 %12, -4 - %21 = add nsw i32 %umax19, -1 + %21 = tail call i32 @llvm.usub.sat.i32(i32 %4, i32 1) %22 = zext nneg i32 %21 to i64 %23 = shl nuw nsw i64 %22, 2 %24 = sub nsw i64 %20, %23 @@ -351,6 +350,7 @@ factorial.exit: ; preds = %factorial.exit.loop .lr.ph.i.us.preheader: ; preds = %.lr.ph.i.preheader %26 = zext nneg i32 %4 to i64 + %umax19 = tail call i32 @llvm.umax.i32(i32 %4, i32 1) %27 = add nuw i32 %umax19, 1 %wide.trip.count = zext i32 %27 to i64 br label %.lr.ph.i.us @@ -936,6 +936,9 @@ declare i32 @llvm.umax.i32(i32, i32) #9 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i64 @llvm.umax.i64(i64, i64) #9 +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare i32 @llvm.usub.sat.i32(i32, i32) #9 + attributes #0 = { nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { nounwind uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #2 = { nofree norecurse nosync nounwind memory(none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } diff --git a/bench/abc/optimized/rsbDec6.c.ll b/bench/abc/optimized/rsbDec6.c.ll index 01e8a281f7c..2c3592a0d8e 100644 --- a/bench/abc/optimized/rsbDec6.c.ll +++ b/bench/abc/optimized/rsbDec6.c.ll @@ -3922,46 +3922,44 @@ define noundef i32 @Rsb_DecVerify(ptr nocapture noundef readonly %0, i32 noundef %27 = and i32 %.126.i, 15 %28 = mul nuw nsw i32 %27, 17 %.227.i = select i1 %26, i32 %28, i32 %18 - %.2.i = tail call i32 @llvm.umax.i32(i32 %.val46.fr, i32 3) %29 = icmp ult i32 %.val46.fr, 4 %30 = and i32 %.227.i, 255 %31 = mul nuw nsw i32 %30, 257 %.328.i = select i1 %29, i32 %31, i32 %18 - %32 = add i32 %.2.i, -3 - %33 = icmp ult i32 %32, 2 - %34 = and i32 %.328.i, 65535 - %35 = mul nuw i32 %34, 65537 - %.429.i = select i1 %33, i32 %35, i32 %.328.i - %36 = icmp sgt i32 %.val46.fr, 0 - br i1 %36, label %.lr.ph, label %.critedge + %32 = icmp ult i32 %.val46.fr, 5 + %33 = and i32 %.328.i, 65535 + %34 = mul nuw i32 %33, 65537 + %.429.i = select i1 %32, i32 %34, i32 %18 + %35 = icmp sgt i32 %.val46.fr, 0 + br i1 %35, label %.lr.ph, label %.critedge .lr.ph: ; preds = %8 - %37 = getelementptr i8, ptr %15, i64 8 - %.val47 = load ptr, ptr %37, align 8 + %36 = getelementptr i8, ptr %15, i64 8 + %.val47 = load ptr, ptr %36, align 8 %wide.trip.count = zext nneg i32 %.val46.fr to i64 - br label %38 - -38: ; preds = %.lr.ph, %38 - %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %38 ] - %39 = getelementptr inbounds i32, ptr %.val47, i64 %indvars.iv - %40 = load i32, ptr %39, align 4 - %41 = sext i32 %40 to i64 - %42 = getelementptr inbounds ptr, ptr %3, i64 %41 - %43 = load ptr, ptr %42, align 8 - %44 = getelementptr inbounds [16 x ptr], ptr %9, i64 0, i64 %indvars.iv - store ptr %43, ptr %44, align 8 + br label %37 + +37: ; preds = %.lr.ph, %37 + %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %37 ] + %38 = getelementptr inbounds i32, ptr %.val47, i64 %indvars.iv + %39 = load i32, ptr %38, align 4 + %40 = sext i32 %39 to i64 + %41 = getelementptr inbounds ptr, ptr %3, i64 %40 + %42 = load ptr, ptr %41, align 8 + %43 = getelementptr inbounds [16 x ptr], ptr %9, i64 0, i64 %indvars.iv + store ptr %42, ptr %43, align 8 %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 %.critedge, label %38, !llvm.loop !47 + br i1 %exitcond.not, label %.critedge, label %37, !llvm.loop !47 -.critedge: ; preds = %38, %8 - %45 = icmp sgt i32 %13, 0 - br i1 %45, label %.lr.ph.preheader.i, label %Abc_TtClear.exit +.critedge: ; preds = %37, %8 + %44 = icmp sgt i32 %13, 0 + br i1 %44, label %.lr.ph.preheader.i, label %Abc_TtClear.exit .lr.ph.preheader.i: ; preds = %.critedge - %46 = zext nneg i32 %13 to i64 - %47 = shl nuw nsw i64 %46, 3 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %6, i8 0, i64 %47, i1 false) + %45 = zext nneg i32 %13 to i64 + %46 = shl nuw nsw i64 %45, 3 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %6, i8 0, i64 %46, i1 false) br label %Abc_TtClear.exit Abc_TtClear.exit: ; preds = %.critedge, %.lr.ph.preheader.i @@ -3969,12 +3967,12 @@ Abc_TtClear.exit: ; preds = %.critedge, %.lr.ph. br i1 %.not, label %._crit_edge78, label %.lr.ph77 .lr.ph77: ; preds = %Abc_TtClear.exit - %48 = zext nneg i32 %13 to i64 - %49 = shl nuw nsw i64 %48, 3 - br i1 %36, label %.lr.ph77.split.us, label %.lr.ph77.split + %47 = zext nneg i32 %13 to i64 + %48 = shl nuw nsw i64 %47, 3 + br i1 %35, label %.lr.ph77.split.us, label %.lr.ph77.split .lr.ph77.split.us: ; preds = %.lr.ph77 - br i1 %45, label %.lr.ph77.split.us.split.us.preheader, label %Abc_TtEqual.exit.thread + br i1 %44, label %.lr.ph77.split.us.split.us.preheader, label %Abc_TtEqual.exit.thread .lr.ph77.split.us.split.us.preheader: ; preds = %.lr.ph77.split.us %smax105 = tail call i32 @llvm.smax.i32(i32 %17, i32 1) @@ -3982,134 +3980,134 @@ Abc_TtClear.exit: ; preds = %.critedge, %.lr.ph. br label %.lr.ph77.split.us.split.us .lr.ph77.split.us.split.us: ; preds = %.lr.ph77.split.us.split.us.preheader, %Abc_TtOr.exit.us.us - %.04274.us.us = phi i32 [ %58, %Abc_TtOr.exit.us.us ], [ 0, %.lr.ph77.split.us.split.us.preheader ] - %50 = shl nuw i32 1, %.04274.us.us - %51 = and i32 %50, %.429.i - %52 = icmp eq i32 %51, 0 - br i1 %52, label %Abc_TtOr.exit.us.us, label %.lr.ph.preheader.i48.us.us + %.04274.us.us = phi i32 [ %57, %Abc_TtOr.exit.us.us ], [ 0, %.lr.ph77.split.us.split.us.preheader ] + %49 = shl nuw i32 1, %.04274.us.us + %50 = and i32 %49, %.429.i + %51 = icmp eq i32 %50, 0 + br i1 %51, label %Abc_TtOr.exit.us.us, label %.lr.ph.preheader.i48.us.us .lr.ph.preheader.i48.us.us: ; preds = %.lr.ph77.split.us.split.us - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %7, i8 -1, i64 %49, i1 false) - br label %59 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %7, i8 -1, i64 %48, i1 false) + br label %58 .lr.ph.i58.us.us: ; preds = %Abc_TtAnd.exit.us.us.us, %.lr.ph.i58.us.us %indvars.iv.i59.us.us = phi i64 [ %indvars.iv.next.i60.us.us, %.lr.ph.i58.us.us ], [ 0, %Abc_TtAnd.exit.us.us.us ] - %53 = getelementptr inbounds i64, ptr %6, i64 %indvars.iv.i59.us.us - %54 = load i64, ptr %53, align 8 - %55 = getelementptr inbounds i64, ptr %7, i64 %indvars.iv.i59.us.us - %56 = load i64, ptr %55, align 8 - %57 = or i64 %56, %54 - store i64 %57, ptr %53, align 8 + %52 = getelementptr inbounds i64, ptr %6, i64 %indvars.iv.i59.us.us + %53 = load i64, ptr %52, align 8 + %54 = getelementptr inbounds i64, ptr %7, i64 %indvars.iv.i59.us.us + %55 = load i64, ptr %54, align 8 + %56 = or i64 %55, %53 + store i64 %56, ptr %52, align 8 %indvars.iv.next.i60.us.us = add nuw nsw i64 %indvars.iv.i59.us.us, 1 - %exitcond.not.i61.us.us = icmp eq i64 %indvars.iv.next.i60.us.us, %48 + %exitcond.not.i61.us.us = icmp eq i64 %indvars.iv.next.i60.us.us, %47 br i1 %exitcond.not.i61.us.us, label %Abc_TtOr.exit.us.us, label %.lr.ph.i58.us.us, !llvm.loop !48 Abc_TtOr.exit.us.us: ; preds = %.lr.ph.i58.us.us, %.lr.ph77.split.us.split.us - %58 = add nuw nsw i32 %.04274.us.us, 1 - %exitcond106.not = icmp eq i32 %58, %smax105 + %57 = add nuw nsw i32 %.04274.us.us, 1 + %exitcond106.not = icmp eq i32 %57, %smax105 br i1 %exitcond106.not, label %._crit_edge78, label %.lr.ph77.split.us.split.us, !llvm.loop !49 -59: ; preds = %Abc_TtAnd.exit.us.us.us, %.lr.ph.preheader.i48.us.us +58: ; preds = %Abc_TtAnd.exit.us.us.us, %.lr.ph.preheader.i48.us.us %indvars.iv100 = phi i64 [ %indvars.iv.next101, %Abc_TtAnd.exit.us.us.us ], [ 0, %.lr.ph.preheader.i48.us.us ] - %60 = trunc nuw nsw i64 %indvars.iv100 to i32 - %61 = shl nuw i32 1, %60 - %62 = and i32 %61, %.04274.us.us - %.not43.us.us.us = icmp eq i32 %62, 0 - %63 = getelementptr inbounds [16 x ptr], ptr %9, i64 0, i64 %indvars.iv100 - %64 = load ptr, ptr %63, align 8 + %59 = trunc nuw nsw i64 %indvars.iv100 to i32 + %60 = shl nuw i32 1, %59 + %61 = and i32 %60, %.04274.us.us + %.not43.us.us.us = icmp eq i32 %61, 0 + %62 = getelementptr inbounds [16 x ptr], ptr %9, i64 0, i64 %indvars.iv100 + %63 = load ptr, ptr %62, align 8 br i1 %.not43.us.us.us, label %.lr.ph.i52.us.us.us, label %.lr.ph.i.us.us.us -.lr.ph.i.us.us.us: ; preds = %59, %.lr.ph.i.us.us.us - %indvars.iv.i.us.us.us = phi i64 [ %indvars.iv.next.i.us.us.us, %.lr.ph.i.us.us.us ], [ 0, %59 ] - %65 = getelementptr inbounds i64, ptr %7, i64 %indvars.iv.i.us.us.us - %66 = load i64, ptr %65, align 8 - %67 = getelementptr inbounds i64, ptr %64, i64 %indvars.iv.i.us.us.us - %68 = load i64, ptr %67, align 8 - %69 = and i64 %68, %66 - store i64 %69, ptr %65, align 8 +.lr.ph.i.us.us.us: ; preds = %58, %.lr.ph.i.us.us.us + %indvars.iv.i.us.us.us = phi i64 [ %indvars.iv.next.i.us.us.us, %.lr.ph.i.us.us.us ], [ 0, %58 ] + %64 = getelementptr inbounds i64, ptr %7, i64 %indvars.iv.i.us.us.us + %65 = load i64, ptr %64, align 8 + %66 = getelementptr inbounds i64, ptr %63, i64 %indvars.iv.i.us.us.us + %67 = load i64, ptr %66, align 8 + %68 = and i64 %67, %65 + store i64 %68, ptr %64, align 8 %indvars.iv.next.i.us.us.us = add nuw nsw i64 %indvars.iv.i.us.us.us, 1 - %exitcond.not.i.us.us.us = icmp eq i64 %indvars.iv.next.i.us.us.us, %48 + %exitcond.not.i.us.us.us = icmp eq i64 %indvars.iv.next.i.us.us.us, %47 br i1 %exitcond.not.i.us.us.us, label %Abc_TtAnd.exit.us.us.us, label %.lr.ph.i.us.us.us, !llvm.loop !50 -.lr.ph.i52.us.us.us: ; preds = %59, %.lr.ph.i52.us.us.us - %indvars.iv.i53.us.us.us = phi i64 [ %indvars.iv.next.i54.us.us.us, %.lr.ph.i52.us.us.us ], [ 0, %59 ] - %70 = getelementptr inbounds i64, ptr %7, i64 %indvars.iv.i53.us.us.us - %71 = load i64, ptr %70, align 8 - %72 = getelementptr inbounds i64, ptr %64, i64 %indvars.iv.i53.us.us.us - %73 = load i64, ptr %72, align 8 - %74 = xor i64 %73, -1 - %75 = and i64 %71, %74 - store i64 %75, ptr %70, align 8 +.lr.ph.i52.us.us.us: ; preds = %58, %.lr.ph.i52.us.us.us + %indvars.iv.i53.us.us.us = phi i64 [ %indvars.iv.next.i54.us.us.us, %.lr.ph.i52.us.us.us ], [ 0, %58 ] + %69 = getelementptr inbounds i64, ptr %7, i64 %indvars.iv.i53.us.us.us + %70 = load i64, ptr %69, align 8 + %71 = getelementptr inbounds i64, ptr %63, i64 %indvars.iv.i53.us.us.us + %72 = load i64, ptr %71, align 8 + %73 = xor i64 %72, -1 + %74 = and i64 %70, %73 + store i64 %74, ptr %69, align 8 %indvars.iv.next.i54.us.us.us = add nuw nsw i64 %indvars.iv.i53.us.us.us, 1 - %exitcond.not.i55.us.us.us = icmp eq i64 %indvars.iv.next.i54.us.us.us, %48 + %exitcond.not.i55.us.us.us = icmp eq i64 %indvars.iv.next.i54.us.us.us, %47 br i1 %exitcond.not.i55.us.us.us, label %Abc_TtAnd.exit.us.us.us, label %.lr.ph.i52.us.us.us, !llvm.loop !51 Abc_TtAnd.exit.us.us.us: ; preds = %.lr.ph.i.us.us.us, %.lr.ph.i52.us.us.us %indvars.iv.next101 = add nuw nsw i64 %indvars.iv100, 1 %exitcond104.not = icmp eq i64 %indvars.iv.next101, %wide.trip.count103 - br i1 %exitcond104.not, label %.lr.ph.i58.us.us, label %59, !llvm.loop !52 + br i1 %exitcond104.not, label %.lr.ph.i58.us.us, label %58, !llvm.loop !52 .lr.ph77.split: ; preds = %.lr.ph77 - br i1 %45, label %.lr.ph77.split.split.us.preheader, label %Abc_TtEqual.exit.thread + br i1 %44, label %.lr.ph77.split.split.us.preheader, label %Abc_TtEqual.exit.thread .lr.ph77.split.split.us.preheader: ; preds = %.lr.ph77.split %smax = tail call i32 @llvm.smax.i32(i32 %17, i32 1) br label %.lr.ph77.split.split.us .lr.ph77.split.split.us: ; preds = %.lr.ph77.split.split.us.preheader, %Abc_TtOr.exit.us92 - %.04274.us84 = phi i32 [ %84, %Abc_TtOr.exit.us92 ], [ 0, %.lr.ph77.split.split.us.preheader ] - %76 = shl nuw i32 1, %.04274.us84 - %77 = and i32 %76, %.429.i - %78 = icmp eq i32 %77, 0 - br i1 %78, label %Abc_TtOr.exit.us92, label %.lr.ph.preheader.i48.us85 + %.04274.us84 = phi i32 [ %83, %Abc_TtOr.exit.us92 ], [ 0, %.lr.ph77.split.split.us.preheader ] + %75 = shl nuw i32 1, %.04274.us84 + %76 = and i32 %75, %.429.i + %77 = icmp eq i32 %76, 0 + br i1 %77, label %Abc_TtOr.exit.us92, label %.lr.ph.preheader.i48.us85 .lr.ph.preheader.i48.us85: ; preds = %.lr.ph77.split.split.us - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %7, i8 -1, i64 %49, i1 false) + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %7, i8 -1, i64 %48, i1 false) br label %.lr.ph.i58.us88 .lr.ph.i58.us88: ; preds = %.lr.ph.i58.us88, %.lr.ph.preheader.i48.us85 %indvars.iv.i59.us89 = phi i64 [ 0, %.lr.ph.preheader.i48.us85 ], [ %indvars.iv.next.i60.us90, %.lr.ph.i58.us88 ] - %79 = getelementptr inbounds i64, ptr %6, i64 %indvars.iv.i59.us89 - %80 = load i64, ptr %79, align 8 - %81 = getelementptr inbounds i64, ptr %7, i64 %indvars.iv.i59.us89 - %82 = load i64, ptr %81, align 8 - %83 = or i64 %82, %80 - store i64 %83, ptr %79, align 8 + %78 = getelementptr inbounds i64, ptr %6, i64 %indvars.iv.i59.us89 + %79 = load i64, ptr %78, align 8 + %80 = getelementptr inbounds i64, ptr %7, i64 %indvars.iv.i59.us89 + %81 = load i64, ptr %80, align 8 + %82 = or i64 %81, %79 + store i64 %82, ptr %78, align 8 %indvars.iv.next.i60.us90 = add nuw nsw i64 %indvars.iv.i59.us89, 1 - %exitcond.not.i61.us91 = icmp eq i64 %indvars.iv.next.i60.us90, %48 + %exitcond.not.i61.us91 = icmp eq i64 %indvars.iv.next.i60.us90, %47 br i1 %exitcond.not.i61.us91, label %Abc_TtOr.exit.us92, label %.lr.ph.i58.us88, !llvm.loop !48 Abc_TtOr.exit.us92: ; preds = %.lr.ph.i58.us88, %.lr.ph77.split.split.us - %84 = add nuw nsw i32 %.04274.us84, 1 - %exitcond99.not = icmp eq i32 %84, %smax + %83 = add nuw nsw i32 %.04274.us84, 1 + %exitcond99.not = icmp eq i32 %83, %smax br i1 %exitcond99.not, label %._crit_edge78, label %.lr.ph77.split.split.us, !llvm.loop !49 ._crit_edge78: ; preds = %Abc_TtOr.exit.us92, %Abc_TtOr.exit.us.us, %Abc_TtClear.exit - br i1 %45, label %.lr.ph.preheader.i62, label %Abc_TtEqual.exit.thread + br i1 %44, label %.lr.ph.preheader.i62, label %Abc_TtEqual.exit.thread .lr.ph.preheader.i62: ; preds = %._crit_edge78 %wide.trip.count.i63 = zext nneg i32 %13 to i64 br label %.lr.ph.i64 -85: ; preds = %.lr.ph.i64 +84: ; preds = %.lr.ph.i64 %indvars.iv.next.i66 = add nuw nsw i64 %indvars.iv.i65, 1 %exitcond.not.i67 = icmp eq i64 %indvars.iv.next.i66, %wide.trip.count.i63 br i1 %exitcond.not.i67, label %Abc_TtEqual.exit.thread, label %.lr.ph.i64, !llvm.loop !53 -.lr.ph.i64: ; preds = %85, %.lr.ph.preheader.i62 - %indvars.iv.i65 = phi i64 [ 0, %.lr.ph.preheader.i62 ], [ %indvars.iv.next.i66, %85 ] - %86 = getelementptr inbounds i64, ptr %6, i64 %indvars.iv.i65 - %87 = load i64, ptr %86, align 8 - %88 = getelementptr inbounds i64, ptr %2, i64 %indvars.iv.i65 - %89 = load i64, ptr %88, align 8 - %.not.i = icmp eq i64 %87, %89 - br i1 %.not.i, label %85, label %Abc_TtEqual.exit +.lr.ph.i64: ; preds = %84, %.lr.ph.preheader.i62 + %indvars.iv.i65 = phi i64 [ 0, %.lr.ph.preheader.i62 ], [ %indvars.iv.next.i66, %84 ] + %85 = getelementptr inbounds i64, ptr %6, i64 %indvars.iv.i65 + %86 = load i64, ptr %85, align 8 + %87 = getelementptr inbounds i64, ptr %2, i64 %indvars.iv.i65 + %88 = load i64, ptr %87, align 8 + %.not.i = icmp eq i64 %86, %88 + br i1 %.not.i, label %84, label %Abc_TtEqual.exit Abc_TtEqual.exit: ; preds = %.lr.ph.i64 %puts = tail call i32 @puts(ptr nonnull dereferenceable(1) @str.2) br label %Abc_TtEqual.exit.thread -Abc_TtEqual.exit.thread: ; preds = %85, %.lr.ph77.split.us, %.lr.ph77.split, %._crit_edge78, %Abc_TtEqual.exit +Abc_TtEqual.exit.thread: ; preds = %84, %.lr.ph77.split.us, %.lr.ph77.split, %._crit_edge78, %Abc_TtEqual.exit ret i32 1 } diff --git a/bench/arrow/optimized/compare.cc.ll b/bench/arrow/optimized/compare.cc.ll index d96b0b6d3ad..13e9dbcd1d0 100644 --- a/bench/arrow/optimized/compare.cc.ll +++ b/bench/arrow/optimized/compare.cc.ll @@ -20127,8 +20127,7 @@ if.then11.i: ; preds = %if.else.i74 %shl20.i = shl i64 %and.i.i83, %sub.i %or21.i = or i64 %shl20.i, %left_reader.sroa.17.0 %shr24.i = lshr i64 %and.i.i83, %sub.i72 - %33 = tail call i64 @llvm.umax.i64(i64 %left_reader.sroa.11.0, i64 64) - %.sroa.speculated.i = add nsw i64 %33, -64 + %.sroa.speculated.i = tail call i64 @llvm.usub.sat.i64(i64 %left_reader.sroa.11.0, i64 64) br label %_ZN5arrow8internal18BitmapUInt64Reader8NextWordEv.exit _ZN5arrow8internal18BitmapUInt64Reader8NextWordEv.exit: ; preds = %if.else.i74, %if.then.i69, %if.then11.i @@ -20171,8 +20170,8 @@ if.then11.i103: ; preds = %if.else.i99 %shl20.i116 = shl i64 %and.i.i114, %sub.i28 %or21.i117 = or i64 %shl20.i116, %right_reader.sroa.15.0 %shr24.i119 = lshr i64 %and.i.i114, %sub.i95 - %34 = tail call i64 @llvm.smax.i64(i64 %right_reader.sroa.10.0, i64 64) - %.sroa.speculated.i120 = add nsw i64 %34, -64 + %33 = tail call i64 @llvm.smax.i64(i64 %right_reader.sroa.10.0, i64 64) + %.sroa.speculated.i120 = add nsw i64 %33, -64 br label %_ZN5arrow8internal18BitmapUInt64Reader8NextWordEv.exit121 _ZN5arrow8internal18BitmapUInt64Reader8NextWordEv.exit121: ; preds = %if.else.i99, %if.then.i89, %if.then11.i103 @@ -20184,18 +20183,18 @@ _ZN5arrow8internal18BitmapUInt64Reader8NextWordEv.exit121: ; preds = %if.else.i9 br i1 %cmp28.not, label %while.cond, label %return, !llvm.loop !648 if.else41: ; preds = %if.else - %35 = getelementptr inbounds i8, ptr %this, i64 16 + %34 = getelementptr inbounds i8, ptr %this, i64 16 + %35 = load ptr, ptr %34, align 8 %36 = load ptr, ptr %35, align 8 - %37 = load ptr, ptr %36, align 8 %right_start_idx_47 = getelementptr inbounds i8, ptr %1, i64 40 - %38 = load i64, ptr %right_start_idx_47, align 8 + %37 = load i64, ptr %right_start_idx_47, align 8 %right_48 = getelementptr inbounds i8, ptr %1, i64 24 - %39 = load ptr, ptr %right_48, align 8 - %offset49 = getelementptr inbounds i8, ptr %39, i64 32 - %40 = load i64, ptr %offset49, align 8 - %add50 = add i64 %38, %i - %add51 = add i64 %add50, %40 - %call52 = tail call noundef zeroext i1 @_ZN5arrow8internal12BitmapEqualsEPKhlS2_ll(ptr noundef %23, i64 noundef %add18, ptr noundef %37, i64 noundef %add51, i64 noundef %length) + %38 = load ptr, ptr %right_48, align 8 + %offset49 = getelementptr inbounds i8, ptr %38, i64 32 + %39 = load i64, ptr %offset49, align 8 + %add50 = add i64 %37, %i + %add51 = add i64 %add50, %39 + %call52 = tail call noundef zeroext i1 @_ZN5arrow8internal12BitmapEqualsEPKhlS2_ll(ptr noundef %23, i64 noundef %add18, ptr noundef %36, i64 noundef %add51, i64 noundef %length) br label %return return.loopexit: ; preds = %for.body @@ -23067,7 +23066,7 @@ declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #18 declare i64 @llvm.smax.i64(i64, i64) #16 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i64 @llvm.umax.i64(i64, i64) #16 +declare i64 @llvm.usub.sat.i64(i64, i64) #16 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i32 @llvm.smin.i32(i32, i32) #16 diff --git a/bench/arrow/optimized/decimal.cc.ll b/bench/arrow/optimized/decimal.cc.ll index f8a4cbe34eb..290f367d896 100644 --- a/bench/arrow/optimized/decimal.cc.ll +++ b/bench/arrow/optimized/decimal.cc.ll @@ -2445,8 +2445,7 @@ _ZN5arrow6Status11DeleteStateEv.exit.i: ; preds = %if.end8.sink.split. if.end: ; preds = %entry %15 = load i8, ptr %bytes, align 1 - %16 = tail call i32 @llvm.umax.i32(i32 %length, i32 8) - %.sroa.speculated27 = add nsw i32 %16, -8 + %.sroa.speculated27 = tail call i32 @llvm.usub.sat.i32(i32 %length, i32 8) call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %result.i) store i64 0, ptr %result.i, align 8 %add.ptr.i = getelementptr inbounds i8, ptr %result.i, i64 8 @@ -2454,8 +2453,8 @@ if.end: ; preds = %entry %idx.neg.i = sub nsw i64 0, %idx.ext.i %add.ptr1.i = getelementptr inbounds i8, ptr %add.ptr.i, i64 %idx.neg.i call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %add.ptr1.i, ptr nonnull readonly align 1 %bytes, i64 %idx.ext.i, i1 false) - %17 = load i64, ptr %result.i, align 8 - %18 = tail call noundef i64 @llvm.bswap.i64(i64 %17) + %16 = load i64, ptr %result.i, align 8 + %17 = tail call noundef i64 @llvm.bswap.i64(i64 %16) call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %result.i) %cmp7 = icmp eq i32 %.sroa.speculated27, 8 br i1 %cmp7, label %if.end14, label %if.else @@ -2463,16 +2462,16 @@ if.end: ; preds = %entry if.else: ; preds = %if.end %cmp3 = icmp slt i8 %15, 0 %cmp9 = icmp samesign ult i32 %length, 16 - %19 = select i1 %cmp3, i1 %cmp9, i1 false - %conv11 = sext i1 %19 to i64 + %18 = select i1 %cmp3, i1 %cmp9, i1 false + %conv11 = sext i1 %18 to i64 %mul12 = shl nuw nsw i32 %.sroa.speculated27, 3 %sh_prom.i = zext nneg i32 %mul12 to i64 %shl.i = shl nsw i64 %conv11, %sh_prom.i - %or = or i64 %18, %shl.i + %or = or i64 %17, %shl.i br label %if.end14 if.end14: ; preds = %if.end, %if.else - %high.0 = phi i64 [ %or, %if.else ], [ %18, %if.end ] + %high.0 = phi i64 [ %or, %if.else ], [ %17, %if.end ] %add.ptr = getelementptr inbounds i8, ptr %bytes, i64 %idx.ext.i %sub17 = sub nsw i32 %length, %.sroa.speculated27 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %result.i18) @@ -2482,8 +2481,8 @@ if.end14: ; preds = %if.end, %if.else %idx.neg.i21 = sub nsw i64 0, %idx.ext.i20 %add.ptr1.i22 = getelementptr inbounds i8, ptr %add.ptr.i19, i64 %idx.neg.i21 call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %add.ptr1.i22, ptr nonnull readonly align 1 %add.ptr, i64 %idx.ext.i20, i1 false) - %20 = load i64, ptr %result.i18, align 8 - %21 = tail call noundef i64 @llvm.bswap.i64(i64 %20) + %19 = load i64, ptr %result.i18, align 8 + %20 = tail call noundef i64 @llvm.bswap.i64(i64 %19) call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %result.i18) %cmp19 = icmp samesign ugt i32 %length, 7 br i1 %cmp19, label %if.end32, label %if.else21 @@ -2494,11 +2493,11 @@ if.else21: ; preds = %if.end14 %mul29 = shl nuw nsw i32 %length, 3 %sh_prom.i23 = zext nneg i32 %mul29 to i64 %shl.i24 = shl nsw i64 %conv28, %sh_prom.i23 - %or31 = or i64 %21, %shl.i24 + %or31 = or i64 %20, %shl.i24 br label %if.end32 if.end32: ; preds = %if.end14, %if.else21 - %low.0 = phi i64 [ %or31, %if.else21 ], [ %21, %if.end14 ] + %low.0 = phi i64 [ %or31, %if.else21 ], [ %20, %if.end14 ] store ptr null, ptr %agg.result, align 8 %storage_.i.i = getelementptr inbounds i8, ptr %agg.result, i64 8 store i64 %low.0, ptr %storage_.i.i, align 8 @@ -9227,7 +9226,7 @@ declare i32 @llvm.smax.i32(i32, i32) #17 declare i32 @llvm.smin.i32(i32, i32) #17 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.umax.i32(i32, i32) #17 +declare i32 @llvm.usub.sat.i32(i32, i32) #17 attributes #0 = { mustprogress uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+crc32,+cx8,+fxsr,+mmx,+popcnt,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+x87" "tune-cpu"="generic" } attributes #1 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) } diff --git a/bench/arrow/optimized/light_array.cc.ll b/bench/arrow/optimized/light_array.cc.ll index 0c8c1ced029..dedcf222a68 100644 --- a/bench/arrow/optimized/light_array.cc.ll +++ b/bench/arrow/optimized/light_array.cc.ll @@ -5528,8 +5528,7 @@ while.body.lr.ph.split.us: ; preds = %while.body.lr.ph while.body.us.us: ; preds = %while.body.lr.ph.split.us, %while.body.us.us %num_bytes_skipped.023.us.us = phi i32 [ %inc.us.us, %while.body.us.us ], [ 0, %while.body.lr.ph.split.us ] %num_rows_left.022.us.us = phi i32 [ %sub.us.us, %while.body.us.us ], [ %num_rows, %while.body.lr.ph.split.us ] - %.sroa.speculated.us.us = call i32 @llvm.umax.i32(i32 %num_rows_left.022.us.us, i32 8) - %sub.us.us = add nsw i32 %.sroa.speculated.us.us, -8 + %sub.us.us = call i32 @llvm.usub.sat.i32(i32 %num_rows_left.022.us.us, i32 8) %inc.us.us = add nuw nsw i32 %num_bytes_skipped.023.us.us, 1 %cmp.us.us = icmp ugt i32 %num_rows_left.022.us.us, 8 %cmp2.us.us = icmp slt i32 %inc.us.us, %num_tail_bytes_to_skip @@ -12548,7 +12547,7 @@ declare i64 @llvm.umax.i64(i64, i64) #17 declare i64 @llvm.umin.i64(i64, i64) #17 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.umax.i32(i32, i32) #17 +declare i32 @llvm.usub.sat.i32(i32, i32) #17 attributes #0 = { mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: readwrite) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+crc32,+cx8,+fxsr,+mmx,+popcnt,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+x87" "tune-cpu"="generic" } attributes #1 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) } diff --git a/bench/assimp/optimized/IFCReaderGen1_2x3.cpp.ll b/bench/assimp/optimized/IFCReaderGen1_2x3.cpp.ll index 9f99f98b727..bab708dba5a 100644 --- a/bench/assimp/optimized/IFCReaderGen1_2x3.cpp.ll +++ b/bench/assimp/optimized/IFCReaderGen1_2x3.cpp.ll @@ -58784,7 +58784,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit55: ; preds = %_ZNSt10shared_ptrIK br i1 %tobool43.not, label %if.end50, label %if.then44 ehcleanup35: ; preds = %cleanup.done32, %lpad12 - %.merged = phi { ptr, i32 } [ %.pn.pn206, %cleanup.done32 ], [ %12, %lpad12 ] + %.merged40 = phi { ptr, i32 } [ %.pn.pn206, %cleanup.done32 ], [ %12, %lpad12 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg) #22 br label %eh.resume @@ -58984,7 +58984,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit107: ; preds = %_ZNSt10shared_ptrIK br i1 %tobool95.not, label %if.end102, label %if.then96 ehcleanup86: ; preds = %cleanup.done79, %lpad51 - %.merged40 = phi { ptr, i32 } [ %.pn28.pn210, %cleanup.done79 ], [ %41, %lpad51 ] + %.merged39 = phi { ptr, i32 } [ %.pn28.pn210, %cleanup.done79 ], [ %41, %lpad51 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg37) #22 br label %eh.resume @@ -59191,7 +59191,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit158: ; preds = %_ZNSt10shared_ptrIK br i1 %tobool154.not, label %if.end161, label %if.then155 ehcleanup145: ; preds = %cleanup.done138, %lpad110 - %.merged39 = phi { ptr, i32 } [ %.pn31.pn214, %cleanup.done138 ], [ %71, %lpad110 ] + %.merged = phi { ptr, i32 } [ %.pn31.pn214, %cleanup.done138 ], [ %71, %lpad110 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg89) #22 br label %eh.resume @@ -59370,7 +59370,7 @@ ehcleanup204: ; preds = %cleanup.done197, %l br label %eh.resume eh.resume: ; preds = %ehcleanup, %cleanup.action, %ehcleanup204, %ehcleanup145, %ehcleanup86, %ehcleanup35 - %lpad.val208.merged = phi { ptr, i32 } [ %.pn37203, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged41, %ehcleanup204 ], [ %.merged39, %ehcleanup145 ], [ %.merged40, %ehcleanup86 ], [ %.merged, %ehcleanup35 ] + %lpad.val208.merged = phi { ptr, i32 } [ %.pn37203, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged41, %ehcleanup204 ], [ %.merged, %ehcleanup145 ], [ %.merged39, %ehcleanup86 ], [ %.merged40, %ehcleanup35 ] resume { ptr, i32 } %lpad.val208.merged terminate.lpad: ; preds = %cleanup.done197, %cleanup.done138, %cleanup.done79, %cleanup.done32 @@ -61324,7 +61324,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit44: ; preds = %_ZNSt10shared_ptrIK br i1 %tobool50.not, label %if.end57, label %if.then51 ehcleanup42: ; preds = %cleanup.done39, %lpad19 - %.merged30 = phi { ptr, i32 } [ %.pn.pn143, %cleanup.done39 ], [ %13, %lpad19 ] + %.merged = phi { ptr, i32 } [ %.pn.pn143, %cleanup.done39 ], [ %13, %lpad19 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg) #22 br label %eh.resume @@ -61531,7 +61531,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit98: ; preds = %_ZNSt10shared_ptrIK br i1 %tobool109.not, label %if.end116, label %if.then110 ehcleanup100: ; preds = %cleanup.done93, %lpad65 - %.merged = phi { ptr, i32 } [ %.pn21.pn147, %cleanup.done93 ], [ %43, %lpad65 ] + %.merged29 = phi { ptr, i32 } [ %.pn21.pn147, %cleanup.done93 ], [ %43, %lpad65 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg44) #22 br label %eh.resume @@ -61698,12 +61698,12 @@ _ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev.exit137: ; preds = %clea ret i64 3 ehcleanup152: ; preds = %cleanup.done145, %lpad117 - %.merged29 = phi { ptr, i32 } [ %.pn24.pn151, %cleanup.done145 ], [ %72, %lpad117 ] + %.merged30 = phi { ptr, i32 } [ %.pn24.pn151, %cleanup.done145 ], [ %72, %lpad117 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg103) #22 br label %eh.resume eh.resume: ; preds = %ehcleanup, %cleanup.action, %ehcleanup152, %ehcleanup100, %ehcleanup42 - %lpad.val156.merged = phi { ptr, i32 } [ %.pn27140, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged29, %ehcleanup152 ], [ %.merged, %ehcleanup100 ], [ %.merged30, %ehcleanup42 ] + %lpad.val156.merged = phi { ptr, i32 } [ %.pn27140, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged30, %ehcleanup152 ], [ %.merged29, %ehcleanup100 ], [ %.merged, %ehcleanup42 ] resume { ptr, i32 } %lpad.val156.merged terminate.lpad: ; preds = %cleanup.done145, %cleanup.done93, %cleanup.done39 @@ -62788,7 +62788,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit36: ; preds = %_ZNSt10shared_ptrIK br i1 %tobool44.not, label %if.end52, label %if.then45 ehcleanup36: ; preds = %cleanup.done33, %lpad13 - %.merged = phi { ptr, i32 } [ %.pn.pn93, %cleanup.done33 ], [ %12, %lpad13 ] + %.merged22 = phi { ptr, i32 } [ %.pn.pn93, %cleanup.done33 ], [ %12, %lpad13 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg) #22 br label %eh.resume @@ -62982,7 +62982,7 @@ _ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev.exit87: ; preds = %clean ret i64 2 eh.resume: ; preds = %ehcleanup, %cleanup.action, %ehcleanup36 - %lpad.val92.merged = phi { ptr, i32 } [ %.pn2090, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged, %ehcleanup36 ] + %lpad.val92.merged = phi { ptr, i32 } [ %.pn2090, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged22, %ehcleanup36 ] resume { ptr, i32 } %lpad.val92.merged terminate.lpad: ; preds = %cleanup.done33 @@ -63308,7 +63308,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit58: ; preds = %_ZNSt10shared_ptrIK br i1 %tobool51.not, label %if.end59, label %if.then52 ehcleanup43: ; preds = %cleanup.done40, %lpad20 - %.merged44 = phi { ptr, i32 } [ %.pn.pn210, %cleanup.done40 ], [ %13, %lpad20 ] + %.merged43 = phi { ptr, i32 } [ %.pn.pn210, %cleanup.done40 ], [ %13, %lpad20 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg) #22 br label %eh.resume @@ -63515,7 +63515,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit112: ; preds = %_ZNSt10shared_ptrIK br i1 %tobool111.not, label %if.end119, label %if.then112 ehcleanup102: ; preds = %cleanup.done95, %lpad67 - %.merged = phi { ptr, i32 } [ %.pn31.pn214, %cleanup.done95 ], [ %43, %lpad67 ] + %.merged42 = phi { ptr, i32 } [ %.pn31.pn214, %cleanup.done95 ], [ %43, %lpad67 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg45) #22 br label %eh.resume @@ -63715,7 +63715,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit163: ; preds = %_ZNSt10shared_ptrIK br i1 %tobool164.not, label %if.end172, label %if.then165 ehcleanup155: ; preds = %cleanup.done148, %lpad120 - %.merged43 = phi { ptr, i32 } [ %.pn34.pn218, %cleanup.done148 ], [ %72, %lpad120 ] + %.merged44 = phi { ptr, i32 } [ %.pn34.pn218, %cleanup.done148 ], [ %72, %lpad120 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg105) #22 br label %eh.resume @@ -63889,12 +63889,12 @@ _ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev.exit204: ; preds = %clea ret i64 4 ehcleanup215: ; preds = %cleanup.done208, %lpad180 - %.merged42 = phi { ptr, i32 } [ %.pn37.pn222, %cleanup.done208 ], [ %102, %lpad180 ] + %.merged = phi { ptr, i32 } [ %.pn37.pn222, %cleanup.done208 ], [ %102, %lpad180 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg158) #22 br label %eh.resume eh.resume: ; preds = %ehcleanup, %cleanup.action, %ehcleanup215, %ehcleanup155, %ehcleanup102, %ehcleanup43 - %lpad.val219.merged = phi { ptr, i32 } [ %.pn40207, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged42, %ehcleanup215 ], [ %.merged43, %ehcleanup155 ], [ %.merged, %ehcleanup102 ], [ %.merged44, %ehcleanup43 ] + %lpad.val219.merged = phi { ptr, i32 } [ %.pn40207, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged, %ehcleanup215 ], [ %.merged44, %ehcleanup155 ], [ %.merged42, %ehcleanup102 ], [ %.merged43, %ehcleanup43 ] resume { ptr, i32 } %lpad.val219.merged terminate.lpad: ; preds = %cleanup.done208, %cleanup.done148, %cleanup.done95, %cleanup.done40 @@ -64474,7 +64474,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit33: ; preds = %_ZNSt10shared_ptrIK br i1 %tobool43.not, label %if.end50, label %if.then44 ehcleanup35: ; preds = %cleanup.done32, %lpad12 - %.merged = phi { ptr, i32 } [ %.pn.pn78, %cleanup.done32 ], [ %12, %lpad12 ] + %.merged19 = phi { ptr, i32 } [ %.pn.pn78, %cleanup.done32 ], [ %12, %lpad12 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg) #22 br label %eh.resume @@ -64648,12 +64648,12 @@ _ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev.exit72: ; preds = %clean ret i64 2 ehcleanup93: ; preds = %cleanup.done86, %lpad58 - %.merged19 = phi { ptr, i32 } [ %.pn14.pn82, %cleanup.done86 ], [ %42, %lpad58 ] + %.merged = phi { ptr, i32 } [ %.pn14.pn82, %cleanup.done86 ], [ %42, %lpad58 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg37) #22 br label %eh.resume eh.resume: ; preds = %ehcleanup, %cleanup.action, %ehcleanup93, %ehcleanup35 - %lpad.val97.merged = phi { ptr, i32 } [ %.pn1775, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged19, %ehcleanup93 ], [ %.merged, %ehcleanup35 ] + %lpad.val97.merged = phi { ptr, i32 } [ %.pn1775, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged, %ehcleanup93 ], [ %.merged19, %ehcleanup35 ] resume { ptr, i32 } %lpad.val97.merged terminate.lpad: ; preds = %cleanup.done86, %cleanup.done32 @@ -67112,7 +67112,7 @@ _ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev.exit68: ; preds = %invok ret i64 6 ehcleanup29: ; preds = %cleanup.done26, %lpad6 - %.merged = phi { ptr, i32 } [ %.pn.pn76, %cleanup.done26 ], [ %26, %lpad6 ] + %.merged20 = phi { ptr, i32 } [ %.pn.pn76, %cleanup.done26 ], [ %26, %lpad6 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg) #22 br label %eh.resume @@ -67186,12 +67186,12 @@ cleanup.done61: ; preds = %cleanup.action60, % to label %ehcleanup68 unwind label %terminate.lpad ehcleanup68: ; preds = %cleanup.done61, %lpad33 - %.merged20 = phi { ptr, i32 } [ %.pn15.pn80, %cleanup.done61 ], [ %46, %lpad33 ] + %.merged = phi { ptr, i32 } [ %.pn15.pn80, %cleanup.done61 ], [ %46, %lpad33 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg31) #22 br label %eh.resume eh.resume: ; preds = %ehcleanup, %cleanup.action, %ehcleanup68, %ehcleanup29 - %lpad.val72.merged = phi { ptr, i32 } [ %.pn1873, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged20, %ehcleanup68 ], [ %.merged, %ehcleanup29 ] + %lpad.val72.merged = phi { ptr, i32 } [ %.pn1873, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged, %ehcleanup68 ], [ %.merged20, %ehcleanup29 ] resume { ptr, i32 } %lpad.val72.merged terminate.lpad: ; preds = %cleanup.done61, %cleanup.done26 @@ -67811,7 +67811,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit33: ; preds = %_ZNSt10shared_ptrIK br i1 %tobool43.not, label %if.end50, label %if.then44 ehcleanup35: ; preds = %cleanup.done32, %lpad12 - %.merged19 = phi { ptr, i32 } [ %.pn.pn78, %cleanup.done32 ], [ %12, %lpad12 ] + %.merged = phi { ptr, i32 } [ %.pn.pn78, %cleanup.done32 ], [ %12, %lpad12 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg) #22 br label %eh.resume @@ -67985,12 +67985,12 @@ _ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev.exit72: ; preds = %clean ret i64 2 ehcleanup93: ; preds = %cleanup.done86, %lpad58 - %.merged = phi { ptr, i32 } [ %.pn14.pn82, %cleanup.done86 ], [ %42, %lpad58 ] + %.merged19 = phi { ptr, i32 } [ %.pn14.pn82, %cleanup.done86 ], [ %42, %lpad58 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg37) #22 br label %eh.resume eh.resume: ; preds = %ehcleanup, %cleanup.action, %ehcleanup93, %ehcleanup35 - %lpad.val97.merged = phi { ptr, i32 } [ %.pn1775, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged, %ehcleanup93 ], [ %.merged19, %ehcleanup35 ] + %lpad.val97.merged = phi { ptr, i32 } [ %.pn1775, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged19, %ehcleanup93 ], [ %.merged, %ehcleanup35 ] resume { ptr, i32 } %lpad.val97.merged terminate.lpad: ; preds = %cleanup.done86, %cleanup.done32 @@ -70453,7 +70453,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit90: ; preds = %_ZNSt10shared_ptrIK to label %invoke.cont74 unwind label %lpad73 ehcleanup29: ; preds = %cleanup.done26, %lpad6 - %.merged = phi { ptr, i32 } [ %.pn.pn133, %cleanup.done26 ], [ %26, %lpad6 ] + %.merged30 = phi { ptr, i32 } [ %.pn.pn133, %cleanup.done26 ], [ %26, %lpad6 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg) #22 br label %eh.resume @@ -70604,7 +70604,7 @@ _ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev.exit125: ; preds = %invo ret i64 3 ehcleanup68: ; preds = %cleanup.done61, %lpad33 - %.merged29 = phi { ptr, i32 } [ %.pn21.pn137, %cleanup.done61 ], [ %52, %lpad33 ] + %.merged = phi { ptr, i32 } [ %.pn21.pn137, %cleanup.done61 ], [ %52, %lpad33 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg31) #22 br label %eh.resume @@ -70678,12 +70678,12 @@ cleanup.done101: ; preds = %cleanup.action100, to label %ehcleanup108 unwind label %terminate.lpad ehcleanup108: ; preds = %cleanup.done101, %lpad73 - %.merged30 = phi { ptr, i32 } [ %.pn24.pn141, %cleanup.done101 ], [ %72, %lpad73 ] + %.merged29 = phi { ptr, i32 } [ %.pn24.pn141, %cleanup.done101 ], [ %72, %lpad73 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg71) #22 br label %eh.resume eh.resume: ; preds = %ehcleanup, %cleanup.action, %ehcleanup108, %ehcleanup68, %ehcleanup29 - %lpad.val112.merged = phi { ptr, i32 } [ %.pn27130, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged30, %ehcleanup108 ], [ %.merged29, %ehcleanup68 ], [ %.merged, %ehcleanup29 ] + %lpad.val112.merged = phi { ptr, i32 } [ %.pn27130, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged29, %ehcleanup108 ], [ %.merged, %ehcleanup68 ], [ %.merged30, %ehcleanup29 ] resume { ptr, i32 } %lpad.val112.merged terminate.lpad: ; preds = %cleanup.done101, %cleanup.done61, %cleanup.done26 @@ -70987,7 +70987,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit37: ; preds = %_ZNSt10shared_ptrIK br i1 %tobool44.not, label %if.end52, label %if.then45 ehcleanup36: ; preds = %cleanup.done33, %lpad13 - %.merged = phi { ptr, i32 } [ %.pn.pn84, %cleanup.done33 ], [ %12, %lpad13 ] + %.merged22 = phi { ptr, i32 } [ %.pn.pn84, %cleanup.done33 ], [ %12, %lpad13 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg) #22 br label %eh.resume @@ -71154,12 +71154,12 @@ _ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev.exit78: ; preds = %clean ret i64 5 ehcleanup88: ; preds = %cleanup.done81, %lpad53 - %.merged22 = phi { ptr, i32 } [ %.pn17.pn88, %cleanup.done81 ], [ %41, %lpad53 ] + %.merged = phi { ptr, i32 } [ %.pn17.pn88, %cleanup.done81 ], [ %41, %lpad53 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg38) #22 br label %eh.resume eh.resume: ; preds = %ehcleanup, %cleanup.action, %ehcleanup88, %ehcleanup36 - %lpad.val92.merged = phi { ptr, i32 } [ %.pn2081, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged22, %ehcleanup88 ], [ %.merged, %ehcleanup36 ] + %lpad.val92.merged = phi { ptr, i32 } [ %.pn2081, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged, %ehcleanup88 ], [ %.merged22, %ehcleanup36 ] resume { ptr, i32 } %lpad.val92.merged terminate.lpad: ; preds = %cleanup.done81, %cleanup.done33 @@ -71704,12 +71704,12 @@ _ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev.exit78: ; preds = %_ZNK6 ret i64 2 ehcleanup32: ; preds = %cleanup.done29, %lpad9 - %.merged20 = phi { ptr, i32 } [ %.pn.pn86, %cleanup.done29 ], [ %11, %lpad9 ] + %.merged = phi { ptr, i32 } [ %.pn.pn86, %cleanup.done29 ], [ %11, %lpad9 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg) #22 br label %eh.resume eh.resume: ; preds = %ehcleanup, %cleanup.action, %ehcleanup32 - %lpad.val75.merged = phi { ptr, i32 } [ %.pn1883, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged20, %ehcleanup32 ] + %lpad.val75.merged = phi { ptr, i32 } [ %.pn1883, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged, %ehcleanup32 ] resume { ptr, i32 } %lpad.val75.merged terminate.lpad: ; preds = %cleanup.done29 @@ -72546,7 +72546,7 @@ _ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev.exit68: ; preds = %invok ret i64 4 ehcleanup29: ; preds = %cleanup.done26, %lpad6 - %.merged20 = phi { ptr, i32 } [ %.pn.pn76, %cleanup.done26 ], [ %26, %lpad6 ] + %.merged = phi { ptr, i32 } [ %.pn.pn76, %cleanup.done26 ], [ %26, %lpad6 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg) #22 br label %eh.resume @@ -72620,12 +72620,12 @@ cleanup.done61: ; preds = %cleanup.action60, % to label %ehcleanup68 unwind label %terminate.lpad ehcleanup68: ; preds = %cleanup.done61, %lpad33 - %.merged = phi { ptr, i32 } [ %.pn15.pn80, %cleanup.done61 ], [ %46, %lpad33 ] + %.merged20 = phi { ptr, i32 } [ %.pn15.pn80, %cleanup.done61 ], [ %46, %lpad33 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg31) #22 br label %eh.resume eh.resume: ; preds = %ehcleanup, %cleanup.action, %ehcleanup68, %ehcleanup29 - %lpad.val72.merged = phi { ptr, i32 } [ %.pn1873, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged, %ehcleanup68 ], [ %.merged20, %ehcleanup29 ] + %lpad.val72.merged = phi { ptr, i32 } [ %.pn1873, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged20, %ehcleanup68 ], [ %.merged, %ehcleanup29 ] resume { ptr, i32 } %lpad.val72.merged terminate.lpad: ; preds = %cleanup.done61, %cleanup.done26 @@ -73047,7 +73047,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit109: ; preds = %_ZNSt10shared_ptrIK br i1 %tobool.not, label %if.end75, label %cleanup108 ehcleanup29: ; preds = %cleanup.done26, %lpad6 - %.merged48 = phi { ptr, i32 } [ %.pn.pn247, %cleanup.done26 ], [ %26, %lpad6 ] + %.merged = phi { ptr, i32 } [ %.pn.pn247, %cleanup.done26 ], [ %26, %lpad6 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg) #22 br label %eh.resume @@ -73121,7 +73121,7 @@ cleanup.done61: ; preds = %cleanup.action60, % to label %ehcleanup68 unwind label %terminate.lpad ehcleanup68: ; preds = %cleanup.done61, %lpad33 - %.merged50 = phi { ptr, i32 } [ %.pn33.pn251, %cleanup.done61 ], [ %54, %lpad33 ] + %.merged48 = phi { ptr, i32 } [ %.pn33.pn251, %cleanup.done61 ], [ %54, %lpad33 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg31) #22 br label %eh.resume @@ -73424,7 +73424,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit203: ; preds = %_ZNSt10shared_ptrIK to label %invoke.cont157 unwind label %lpad156 ehcleanup111: ; preds = %cleanup.done104, %lpad76 - %.merged49 = phi { ptr, i32 } [ %.pn36.pn255, %cleanup.done104 ], [ %63, %lpad76 ] + %.merged50 = phi { ptr, i32 } [ %.pn36.pn255, %cleanup.done104 ], [ %63, %lpad76 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg71) #22 br label %eh.resume @@ -73575,7 +73575,7 @@ _ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev.exit239: ; preds = %invo ret i64 5 ehcleanup151: ; preds = %cleanup.done144, %lpad116 - %.merged47 = phi { ptr, i32 } [ %.pn39.pn259, %cleanup.done144 ], [ %106, %lpad116 ] + %.merged49 = phi { ptr, i32 } [ %.pn39.pn259, %cleanup.done144 ], [ %106, %lpad116 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg114) #22 br label %eh.resume @@ -73649,12 +73649,12 @@ cleanup.done184: ; preds = %cleanup.action183, to label %ehcleanup191 unwind label %terminate.lpad ehcleanup191: ; preds = %cleanup.done184, %lpad156 - %.merged = phi { ptr, i32 } [ %.pn42.pn263, %cleanup.done184 ], [ %126, %lpad156 ] + %.merged47 = phi { ptr, i32 } [ %.pn42.pn263, %cleanup.done184 ], [ %126, %lpad156 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg154) #22 br label %eh.resume eh.resume: ; preds = %ehcleanup, %cleanup.action, %ehcleanup191, %ehcleanup151, %ehcleanup111, %ehcleanup68, %ehcleanup29 - %lpad.val195.merged = phi { ptr, i32 } [ %.pn45244, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged, %ehcleanup191 ], [ %.merged47, %ehcleanup151 ], [ %.merged49, %ehcleanup111 ], [ %.merged50, %ehcleanup68 ], [ %.merged48, %ehcleanup29 ] + %lpad.val195.merged = phi { ptr, i32 } [ %.pn45244, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged47, %ehcleanup191 ], [ %.merged49, %ehcleanup151 ], [ %.merged50, %ehcleanup111 ], [ %.merged48, %ehcleanup68 ], [ %.merged, %ehcleanup29 ] resume { ptr, i32 } %lpad.val195.merged terminate.lpad: ; preds = %cleanup.done184, %cleanup.done144, %cleanup.done104, %cleanup.done61, %cleanup.done26 @@ -73956,7 +73956,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit36: ; preds = %_ZNSt10shared_ptrIK br i1 %tobool44.not, label %if.end52, label %if.then45 ehcleanup36: ; preds = %cleanup.done33, %lpad13 - %.merged = phi { ptr, i32 } [ %.pn.pn82, %cleanup.done33 ], [ %12, %lpad13 ] + %.merged22 = phi { ptr, i32 } [ %.pn.pn82, %cleanup.done33 ], [ %12, %lpad13 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg) #22 br label %eh.resume @@ -74123,12 +74123,12 @@ _ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev.exit76: ; preds = %clean ret i64 2 ehcleanup88: ; preds = %cleanup.done81, %lpad53 - %.merged22 = phi { ptr, i32 } [ %.pn17.pn86, %cleanup.done81 ], [ %41, %lpad53 ] + %.merged = phi { ptr, i32 } [ %.pn17.pn86, %cleanup.done81 ], [ %41, %lpad53 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg38) #22 br label %eh.resume eh.resume: ; preds = %ehcleanup, %cleanup.action, %ehcleanup88, %ehcleanup36 - %lpad.val92.merged = phi { ptr, i32 } [ %.pn2079, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged22, %ehcleanup88 ], [ %.merged, %ehcleanup36 ] + %lpad.val92.merged = phi { ptr, i32 } [ %.pn2079, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged, %ehcleanup88 ], [ %.merged22, %ehcleanup36 ] resume { ptr, i32 } %lpad.val92.merged terminate.lpad: ; preds = %cleanup.done81, %cleanup.done33 @@ -74893,7 +74893,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit55: ; preds = %_ZNSt10shared_ptrIK br i1 %tobool40.not, label %if.end42, label %cleanup75 ehcleanup32: ; preds = %cleanup.done29, %lpad9 - %.merged39 = phi { ptr, i32 } [ %.pn.pn191, %cleanup.done29 ], [ %11, %lpad9 ] + %.merged38 = phi { ptr, i32 } [ %.pn.pn191, %cleanup.done29 ], [ %11, %lpad9 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg) #22 br label %eh.resume @@ -75196,7 +75196,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit148: ; preds = %_ZNSt10shared_ptrIK to label %invoke.cont124 unwind label %lpad123 ehcleanup78: ; preds = %cleanup.done71, %lpad43 - %.merged38 = phi { ptr, i32 } [ %.pn27.pn195, %cleanup.done71 ], [ %39, %lpad43 ] + %.merged39 = phi { ptr, i32 } [ %.pn27.pn195, %cleanup.done71 ], [ %39, %lpad43 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg34) #22 br label %eh.resume @@ -75426,7 +75426,7 @@ ehcleanup158: ; preds = %cleanup.done151, %l br label %eh.resume eh.resume: ; preds = %ehcleanup, %cleanup.action, %ehcleanup158, %ehcleanup118, %ehcleanup78, %ehcleanup32 - %lpad.val162.merged = phi { ptr, i32 } [ %.pn36188, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged, %ehcleanup158 ], [ %.merged40, %ehcleanup118 ], [ %.merged38, %ehcleanup78 ], [ %.merged39, %ehcleanup32 ] + %lpad.val162.merged = phi { ptr, i32 } [ %.pn36188, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged, %ehcleanup158 ], [ %.merged40, %ehcleanup118 ], [ %.merged39, %ehcleanup78 ], [ %.merged38, %ehcleanup32 ] resume { ptr, i32 } %lpad.val162.merged terminate.lpad: ; preds = %cleanup.done151, %cleanup.done111, %cleanup.done71, %cleanup.done29 @@ -75883,7 +75883,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit109: ; preds = %_ZNSt10shared_ptrIK to label %invoke.cont74 unwind label %lpad73 ehcleanup29: ; preds = %cleanup.done26, %lpad6 - %.merged47 = phi { ptr, i32 } [ %.pn.pn248, %cleanup.done26 ], [ %26, %lpad6 ] + %.merged = phi { ptr, i32 } [ %.pn.pn248, %cleanup.done26 ], [ %26, %lpad6 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg) #22 br label %eh.resume @@ -76066,7 +76066,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit157: ; preds = %_ZNSt10shared_ptrIK to label %invoke.cont114 unwind label %lpad113 ehcleanup68: ; preds = %cleanup.done61, %lpad33 - %.merged48 = phi { ptr, i32 } [ %.pn33.pn252, %cleanup.done61 ], [ %52, %lpad33 ] + %.merged47 = phi { ptr, i32 } [ %.pn33.pn252, %cleanup.done61 ], [ %52, %lpad33 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg31) #22 br label %eh.resume @@ -76249,7 +76249,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit204: ; preds = %_ZNSt10shared_ptrIK to label %invoke.cont154 unwind label %lpad153 ehcleanup108: ; preds = %cleanup.done101, %lpad73 - %.merged49 = phi { ptr, i32 } [ %.pn36.pn256, %cleanup.done101 ], [ %78, %lpad73 ] + %.merged50 = phi { ptr, i32 } [ %.pn36.pn256, %cleanup.done101 ], [ %78, %lpad73 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg71) #22 br label %eh.resume @@ -76400,7 +76400,7 @@ _ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev.exit240: ; preds = %invo ret i64 5 ehcleanup148: ; preds = %cleanup.done141, %lpad113 - %.merged = phi { ptr, i32 } [ %.pn39.pn260, %cleanup.done141 ], [ %104, %lpad113 ] + %.merged49 = phi { ptr, i32 } [ %.pn39.pn260, %cleanup.done141 ], [ %104, %lpad113 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg111) #22 br label %eh.resume @@ -76474,12 +76474,12 @@ cleanup.done181: ; preds = %cleanup.action180, to label %ehcleanup188 unwind label %terminate.lpad ehcleanup188: ; preds = %cleanup.done181, %lpad153 - %.merged50 = phi { ptr, i32 } [ %.pn42.pn264, %cleanup.done181 ], [ %124, %lpad153 ] + %.merged48 = phi { ptr, i32 } [ %.pn42.pn264, %cleanup.done181 ], [ %124, %lpad153 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg151) #22 br label %eh.resume eh.resume: ; preds = %ehcleanup, %cleanup.action, %ehcleanup188, %ehcleanup148, %ehcleanup108, %ehcleanup68, %ehcleanup29 - %lpad.val192.merged = phi { ptr, i32 } [ %.pn45245, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged50, %ehcleanup188 ], [ %.merged, %ehcleanup148 ], [ %.merged49, %ehcleanup108 ], [ %.merged48, %ehcleanup68 ], [ %.merged47, %ehcleanup29 ] + %lpad.val192.merged = phi { ptr, i32 } [ %.pn45245, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged48, %ehcleanup188 ], [ %.merged49, %ehcleanup148 ], [ %.merged50, %ehcleanup108 ], [ %.merged47, %ehcleanup68 ], [ %.merged, %ehcleanup29 ] resume { ptr, i32 } %lpad.val192.merged terminate.lpad: ; preds = %cleanup.done181, %cleanup.done141, %cleanup.done101, %cleanup.done61, %cleanup.done26 @@ -81442,7 +81442,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit123: ; preds = %_ZNSt10shared_ptrIK br i1 %tobool97.not, label %if.end105, label %if.then98 ehcleanup88: ; preds = %cleanup.done81, %lpad53 - %.merged = phi { ptr, i32 } [ %.pn38.pn278, %cleanup.done81 ], [ %41, %lpad53 ] + %.merged54 = phi { ptr, i32 } [ %.pn38.pn278, %cleanup.done81 ], [ %41, %lpad53 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg38) #22 br label %eh.resume @@ -81642,7 +81642,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit176: ; preds = %_ZNSt10shared_ptrIK br i1 %tobool150.not, label %if.end158, label %if.then151 ehcleanup141: ; preds = %cleanup.done134, %lpad106 - %.merged52 = phi { ptr, i32 } [ %.pn41.pn282, %cleanup.done134 ], [ %70, %lpad106 ] + %.merged53 = phi { ptr, i32 } [ %.pn41.pn282, %cleanup.done134 ], [ %70, %lpad106 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg91) #22 br label %eh.resume @@ -81842,7 +81842,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit229: ; preds = %_ZNSt10shared_ptrIK br i1 %tobool203.not, label %if.end211, label %if.then204 ehcleanup194: ; preds = %cleanup.done187, %lpad159 - %.merged53 = phi { ptr, i32 } [ %.pn44.pn286, %cleanup.done187 ], [ %99, %lpad159 ] + %.merged = phi { ptr, i32 } [ %.pn44.pn286, %cleanup.done187 ], [ %99, %lpad159 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg144) #22 br label %eh.resume @@ -82016,12 +82016,12 @@ _ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev.exit268: ; preds = %clea ret i64 8 ehcleanup254: ; preds = %cleanup.done247, %lpad219 - %.merged54 = phi { ptr, i32 } [ %.pn47.pn290, %cleanup.done247 ], [ %129, %lpad219 ] + %.merged52 = phi { ptr, i32 } [ %.pn47.pn290, %cleanup.done247 ], [ %129, %lpad219 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg197) #22 br label %eh.resume eh.resume: ; preds = %ehcleanup, %cleanup.action, %ehcleanup254, %ehcleanup194, %ehcleanup141, %ehcleanup88, %ehcleanup36 - %lpad.val258.merged = phi { ptr, i32 } [ %.pn50271, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged54, %ehcleanup254 ], [ %.merged53, %ehcleanup194 ], [ %.merged52, %ehcleanup141 ], [ %.merged, %ehcleanup88 ], [ %.merged55, %ehcleanup36 ] + %lpad.val258.merged = phi { ptr, i32 } [ %.pn50271, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged52, %ehcleanup254 ], [ %.merged, %ehcleanup194 ], [ %.merged53, %ehcleanup141 ], [ %.merged54, %ehcleanup88 ], [ %.merged55, %ehcleanup36 ] resume { ptr, i32 } %lpad.val258.merged terminate.lpad: ; preds = %cleanup.done247, %cleanup.done187, %cleanup.done134, %cleanup.done81, %cleanup.done33 @@ -83346,7 +83346,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit47: ; preds = %_ZNSt10shared_ptrIK br i1 %tobool51.not, label %if.end59, label %if.then52 ehcleanup43: ; preds = %cleanup.done40, %lpad20 - %.merged33 = phi { ptr, i32 } [ %.pn.pn145, %cleanup.done40 ], [ %13, %lpad20 ] + %.merged32 = phi { ptr, i32 } [ %.pn.pn145, %cleanup.done40 ], [ %13, %lpad20 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg) #22 br label %eh.resume @@ -83546,7 +83546,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit98: ; preds = %_ZNSt10shared_ptrIK br i1 %tobool104.not, label %if.end112, label %if.then105 ehcleanup95: ; preds = %cleanup.done88, %lpad60 - %.merged = phi { ptr, i32 } [ %.pn24.pn149, %cleanup.done88 ], [ %42, %lpad60 ] + %.merged33 = phi { ptr, i32 } [ %.pn24.pn149, %cleanup.done88 ], [ %42, %lpad60 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg45) #22 br label %eh.resume @@ -83720,12 +83720,12 @@ _ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev.exit139: ; preds = %clea ret i64 3 ehcleanup155: ; preds = %cleanup.done148, %lpad120 - %.merged32 = phi { ptr, i32 } [ %.pn27.pn153, %cleanup.done148 ], [ %72, %lpad120 ] + %.merged = phi { ptr, i32 } [ %.pn27.pn153, %cleanup.done148 ], [ %72, %lpad120 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg98) #22 br label %eh.resume eh.resume: ; preds = %ehcleanup, %cleanup.action, %ehcleanup155, %ehcleanup95, %ehcleanup43 - %lpad.val159.merged = phi { ptr, i32 } [ %.pn30142, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged32, %ehcleanup155 ], [ %.merged, %ehcleanup95 ], [ %.merged33, %ehcleanup43 ] + %lpad.val159.merged = phi { ptr, i32 } [ %.pn30142, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged, %ehcleanup155 ], [ %.merged33, %ehcleanup95 ], [ %.merged32, %ehcleanup43 ] resume { ptr, i32 } %lpad.val159.merged terminate.lpad: ; preds = %cleanup.done148, %cleanup.done88, %cleanup.done40 diff --git a/bench/assimp/optimized/IFCReaderGen2_2x3.cpp.ll b/bench/assimp/optimized/IFCReaderGen2_2x3.cpp.ll index 93949ec2903..8ffda1981d5 100644 --- a/bench/assimp/optimized/IFCReaderGen2_2x3.cpp.ll +++ b/bench/assimp/optimized/IFCReaderGen2_2x3.cpp.ll @@ -2369,7 +2369,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit91: ; preds = %_ZNSt10shared_ptrIK to label %invoke.cont74 unwind label %lpad73 ehcleanup29: ; preds = %cleanup.done26, %lpad6 - %.merged29 = phi { ptr, i32 } [ %.pn.pn135, %cleanup.done26 ], [ %26, %lpad6 ] + %.merged = phi { ptr, i32 } [ %.pn.pn135, %cleanup.done26 ], [ %26, %lpad6 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg) #18 br label %eh.resume @@ -2520,7 +2520,7 @@ _ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev.exit127: ; preds = %invo ret i64 4 ehcleanup68: ; preds = %cleanup.done61, %lpad33 - %.merged30 = phi { ptr, i32 } [ %.pn21.pn139, %cleanup.done61 ], [ %52, %lpad33 ] + %.merged29 = phi { ptr, i32 } [ %.pn21.pn139, %cleanup.done61 ], [ %52, %lpad33 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg31) #18 br label %eh.resume @@ -2594,12 +2594,12 @@ cleanup.done101: ; preds = %cleanup.action100, to label %ehcleanup108 unwind label %terminate.lpad ehcleanup108: ; preds = %cleanup.done101, %lpad73 - %.merged = phi { ptr, i32 } [ %.pn24.pn143, %cleanup.done101 ], [ %72, %lpad73 ] + %.merged30 = phi { ptr, i32 } [ %.pn24.pn143, %cleanup.done101 ], [ %72, %lpad73 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg71) #18 br label %eh.resume eh.resume: ; preds = %ehcleanup, %cleanup.action, %ehcleanup108, %ehcleanup68, %ehcleanup29 - %lpad.val112.merged = phi { ptr, i32 } [ %.pn27132, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged, %ehcleanup108 ], [ %.merged30, %ehcleanup68 ], [ %.merged29, %ehcleanup29 ] + %lpad.val112.merged = phi { ptr, i32 } [ %.pn27132, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged30, %ehcleanup108 ], [ %.merged29, %ehcleanup68 ], [ %.merged, %ehcleanup29 ] resume { ptr, i32 } %lpad.val112.merged terminate.lpad: ; preds = %cleanup.done101, %cleanup.done61, %cleanup.done26 @@ -2930,7 +2930,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit65: ; preds = %_ZNSt10shared_ptrIK br i1 %tobool40.not, label %if.end42, label %cleanup75 ehcleanup32: ; preds = %cleanup.done29, %lpad9 - %.merged = phi { ptr, i32 } [ %.pn.pn252, %cleanup.done29 ], [ %11, %lpad9 ] + %.merged47 = phi { ptr, i32 } [ %.pn.pn252, %cleanup.done29 ], [ %11, %lpad9 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg) #18 br label %eh.resume @@ -3126,7 +3126,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit114: ; preds = %_ZNSt10shared_ptrIK br i1 %tobool87.not, label %if.end89, label %cleanup122 ehcleanup78: ; preds = %cleanup.done71, %lpad43 - %.merged48 = phi { ptr, i32 } [ %.pn33.pn256, %cleanup.done71 ], [ %40, %lpad43 ] + %.merged50 = phi { ptr, i32 } [ %.pn33.pn256, %cleanup.done71 ], [ %40, %lpad43 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg34) #18 br label %eh.resume @@ -3322,7 +3322,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit162: ; preds = %_ZNSt10shared_ptrIK br i1 %tobool134.not, label %if.end136, label %cleanup169 ehcleanup125: ; preds = %cleanup.done118, %lpad90 - %.merged50 = phi { ptr, i32 } [ %.pn36.pn260, %cleanup.done118 ], [ %69, %lpad90 ] + %.merged49 = phi { ptr, i32 } [ %.pn36.pn260, %cleanup.done118 ], [ %69, %lpad90 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg81) #18 br label %eh.resume @@ -3518,7 +3518,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit210: ; preds = %_ZNSt10shared_ptrIK br i1 %tobool181.not, label %if.end183, label %cleanup216 ehcleanup172: ; preds = %cleanup.done165, %lpad137 - %.merged47 = phi { ptr, i32 } [ %.pn39.pn264, %cleanup.done165 ], [ %98, %lpad137 ] + %.merged48 = phi { ptr, i32 } [ %.pn39.pn264, %cleanup.done165 ], [ %98, %lpad137 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg128) #18 br label %eh.resume @@ -3681,12 +3681,12 @@ _ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev.exit246: ; preds = %clea ret i64 %inc176 ehcleanup219: ; preds = %cleanup.done212, %lpad184 - %.merged49 = phi { ptr, i32 } [ %.pn42.pn268, %cleanup.done212 ], [ %127, %lpad184 ] + %.merged = phi { ptr, i32 } [ %.pn42.pn268, %cleanup.done212 ], [ %127, %lpad184 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg175) #18 br label %eh.resume eh.resume: ; preds = %ehcleanup, %cleanup.action, %ehcleanup219, %ehcleanup172, %ehcleanup125, %ehcleanup78, %ehcleanup32 - %lpad.val223.merged = phi { ptr, i32 } [ %.pn45249, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged49, %ehcleanup219 ], [ %.merged47, %ehcleanup172 ], [ %.merged50, %ehcleanup125 ], [ %.merged48, %ehcleanup78 ], [ %.merged, %ehcleanup32 ] + %lpad.val223.merged = phi { ptr, i32 } [ %.pn45249, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged, %ehcleanup219 ], [ %.merged48, %ehcleanup172 ], [ %.merged49, %ehcleanup125 ], [ %.merged50, %ehcleanup78 ], [ %.merged47, %ehcleanup32 ] resume { ptr, i32 } %lpad.val223.merged terminate.lpad: ; preds = %cleanup.done212, %cleanup.done165, %cleanup.done118, %cleanup.done71, %cleanup.done29 @@ -4153,7 +4153,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit70: ; preds = %_ZNSt10shared_ptrIK br i1 %tobool44.not, label %if.end52, label %if.then45 ehcleanup36: ; preds = %cleanup.done33, %lpad13 - %.merged52 = phi { ptr, i32 } [ %.pn.pn328, %cleanup.done33 ], [ %12, %lpad13 ] + %.merged53 = phi { ptr, i32 } [ %.pn.pn328, %cleanup.done33 ], [ %12, %lpad13 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg) #18 br label %eh.resume @@ -4354,7 +4354,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit122: ; preds = %_ZNSt10shared_ptrIK br i1 %tobool97.not, label %if.end105, label %if.then98 ehcleanup88: ; preds = %cleanup.done81, %lpad53 - %.merged = phi { ptr, i32 } [ %.pn38.pn332, %cleanup.done81 ], [ %42, %lpad53 ] + %.merged54 = phi { ptr, i32 } [ %.pn38.pn332, %cleanup.done81 ], [ %42, %lpad53 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg38) #18 br label %eh.resume @@ -4549,7 +4549,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit174: ; preds = %_ZNSt10shared_ptrIK br i1 %tobool150.not, label %if.end158, label %if.then151 ehcleanup141: ; preds = %cleanup.done134, %lpad106 - %.merged54 = phi { ptr, i32 } [ %.pn41.pn336, %cleanup.done134 ], [ %72, %lpad106 ] + %.merged55 = phi { ptr, i32 } [ %.pn41.pn336, %cleanup.done134 ], [ %72, %lpad106 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg91) #18 br label %eh.resume @@ -4961,7 +4961,7 @@ _ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev.exit322: ; preds = %clea ret i64 %inc198 eh.resume: ; preds = %ehcleanup, %cleanup.action, %ehcleanup141, %ehcleanup88, %ehcleanup36 - %lpad.val251.merged = phi { ptr, i32 } [ %.pn50325, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged54, %ehcleanup141 ], [ %.merged, %ehcleanup88 ], [ %.merged52, %ehcleanup36 ] + %lpad.val251.merged = phi { ptr, i32 } [ %.pn50325, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged55, %ehcleanup141 ], [ %.merged54, %ehcleanup88 ], [ %.merged53, %ehcleanup36 ] resume { ptr, i32 } %lpad.val251.merged terminate.lpad: ; preds = %cleanup.done134, %cleanup.done81, %cleanup.done33 @@ -7909,7 +7909,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit33: ; preds = %_ZNSt10shared_ptrIK br i1 %tobool50.not, label %if.end57, label %if.then51 ehcleanup42: ; preds = %cleanup.done39, %lpad19 - %.merged19 = phi { ptr, i32 } [ %.pn.pn81, %cleanup.done39 ], [ %13, %lpad19 ] + %.merged = phi { ptr, i32 } [ %.pn.pn81, %cleanup.done39 ], [ %13, %lpad19 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg) #18 br label %eh.resume @@ -8083,12 +8083,12 @@ _ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev.exit75: ; preds = %clean ret i64 2 ehcleanup100: ; preds = %cleanup.done93, %lpad65 - %.merged = phi { ptr, i32 } [ %.pn14.pn85, %cleanup.done93 ], [ %43, %lpad65 ] + %.merged19 = phi { ptr, i32 } [ %.pn14.pn85, %cleanup.done93 ], [ %43, %lpad65 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg44) #18 br label %eh.resume eh.resume: ; preds = %ehcleanup, %cleanup.action, %ehcleanup100, %ehcleanup42 - %lpad.val104.merged = phi { ptr, i32 } [ %.pn1778, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged, %ehcleanup100 ], [ %.merged19, %ehcleanup42 ] + %lpad.val104.merged = phi { ptr, i32 } [ %.pn1778, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged19, %ehcleanup100 ], [ %.merged, %ehcleanup42 ] resume { ptr, i32 } %lpad.val104.merged terminate.lpad: ; preds = %cleanup.done93, %cleanup.done39 @@ -8994,12 +8994,12 @@ _ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev.exit214: ; preds = %clea ret i64 6 ehcleanup208: ; preds = %cleanup.done201, %lpad173 - %.merged44 = phi { ptr, i32 } [ %.pn37.pn228, %cleanup.done201 ], [ %105, %lpad173 ] + %.merged43 = phi { ptr, i32 } [ %.pn37.pn228, %cleanup.done201 ], [ %105, %lpad173 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg151) #18 br label %eh.resume eh.resume: ; preds = %ehcleanup, %cleanup.action, %ehcleanup208, %ehcleanup95, %ehcleanup36 - %lpad.val212.merged = phi { ptr, i32 } [ %.pn40217, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged44, %ehcleanup208 ], [ %.merged42, %ehcleanup95 ], [ %.merged, %ehcleanup36 ] + %lpad.val212.merged = phi { ptr, i32 } [ %.pn40217, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged43, %ehcleanup208 ], [ %.merged42, %ehcleanup95 ], [ %.merged, %ehcleanup36 ] resume { ptr, i32 } %lpad.val212.merged terminate.lpad: ; preds = %cleanup.done201, %cleanup.done88, %cleanup.done33 @@ -9383,7 +9383,7 @@ _ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev.exit67: ; preds = %invok ret i64 %inc35 ehcleanup32: ; preds = %cleanup.done29, %lpad9 - %.merged = phi { ptr, i32 } [ %.pn.pn75, %cleanup.done29 ], [ %11, %lpad9 ] + %.merged20 = phi { ptr, i32 } [ %.pn.pn75, %cleanup.done29 ], [ %11, %lpad9 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg) #18 br label %eh.resume @@ -9457,12 +9457,12 @@ cleanup.done64: ; preds = %cleanup.action63, % to label %ehcleanup71 unwind label %terminate.lpad ehcleanup71: ; preds = %cleanup.done64, %lpad36 - %.merged20 = phi { ptr, i32 } [ %.pn15.pn79, %cleanup.done64 ], [ %49, %lpad36 ] + %.merged = phi { ptr, i32 } [ %.pn15.pn79, %cleanup.done64 ], [ %49, %lpad36 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg34) #18 br label %eh.resume eh.resume: ; preds = %ehcleanup, %cleanup.action, %ehcleanup71, %ehcleanup32 - %lpad.val75.merged = phi { ptr, i32 } [ %.pn1872, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged20, %ehcleanup71 ], [ %.merged, %ehcleanup32 ] + %lpad.val75.merged = phi { ptr, i32 } [ %.pn1872, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged, %ehcleanup71 ], [ %.merged20, %ehcleanup32 ] resume { ptr, i32 } %lpad.val75.merged terminate.lpad: ; preds = %cleanup.done64, %cleanup.done29 @@ -11736,7 +11736,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit37: ; preds = %_ZNSt10shared_ptrIK br i1 %tobool44.not, label %if.end52, label %if.then45 ehcleanup36: ; preds = %cleanup.done33, %lpad13 - %.merged = phi { ptr, i32 } [ %.pn.pn83, %cleanup.done33 ], [ %12, %lpad13 ] + %.merged22 = phi { ptr, i32 } [ %.pn.pn83, %cleanup.done33 ], [ %12, %lpad13 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg) #18 br label %eh.resume @@ -11904,12 +11904,12 @@ _ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev.exit77: ; preds = %clean ret i64 %inc39 ehcleanup88: ; preds = %cleanup.done81, %lpad53 - %.merged22 = phi { ptr, i32 } [ %.pn17.pn87, %cleanup.done81 ], [ %42, %lpad53 ] + %.merged = phi { ptr, i32 } [ %.pn17.pn87, %cleanup.done81 ], [ %42, %lpad53 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg38) #18 br label %eh.resume eh.resume: ; preds = %ehcleanup, %cleanup.action, %ehcleanup88, %ehcleanup36 - %lpad.val92.merged = phi { ptr, i32 } [ %.pn2080, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged22, %ehcleanup88 ], [ %.merged, %ehcleanup36 ] + %lpad.val92.merged = phi { ptr, i32 } [ %.pn2080, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged, %ehcleanup88 ], [ %.merged22, %ehcleanup36 ] resume { ptr, i32 } %lpad.val92.merged terminate.lpad: ; preds = %cleanup.done81, %cleanup.done33 @@ -15044,7 +15044,7 @@ _ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev.exit184: ; preds = %invo ret i64 %inc112 ehcleanup108: ; preds = %cleanup.done101, %lpad73 - %.merged = phi { ptr, i32 } [ %.pn30.pn200, %cleanup.done101 ], [ %81, %lpad73 ] + %.merged38 = phi { ptr, i32 } [ %.pn30.pn200, %cleanup.done101 ], [ %81, %lpad73 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg71) #18 br label %eh.resume @@ -15118,12 +15118,12 @@ cleanup.done141: ; preds = %cleanup.action140, to label %ehcleanup148 unwind label %terminate.lpad ehcleanup148: ; preds = %cleanup.done141, %lpad113 - %.merged38 = phi { ptr, i32 } [ %.pn33.pn204, %cleanup.done141 ], [ %101, %lpad113 ] + %.merged = phi { ptr, i32 } [ %.pn33.pn204, %cleanup.done141 ], [ %101, %lpad113 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg111) #18 br label %eh.resume eh.resume: ; preds = %ehcleanup, %cleanup.action, %ehcleanup148, %ehcleanup108, %ehcleanup68, %ehcleanup29 - %lpad.val152.merged = phi { ptr, i32 } [ %.pn36189, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged38, %ehcleanup148 ], [ %.merged, %ehcleanup108 ], [ %.merged39, %ehcleanup68 ], [ %.merged40, %ehcleanup29 ] + %lpad.val152.merged = phi { ptr, i32 } [ %.pn36189, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged, %ehcleanup148 ], [ %.merged38, %ehcleanup108 ], [ %.merged39, %ehcleanup68 ], [ %.merged40, %ehcleanup29 ] resume { ptr, i32 } %lpad.val152.merged terminate.lpad: ; preds = %cleanup.done141, %cleanup.done101, %cleanup.done61, %cleanup.done26 @@ -16395,7 +16395,7 @@ _ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev.exit69: ; preds = %invok ret i64 %inc32 ehcleanup29: ; preds = %cleanup.done26, %lpad6 - %.merged20 = phi { ptr, i32 } [ %.pn.pn77, %cleanup.done26 ], [ %27, %lpad6 ] + %.merged = phi { ptr, i32 } [ %.pn.pn77, %cleanup.done26 ], [ %27, %lpad6 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg) #18 br label %eh.resume @@ -16469,12 +16469,12 @@ cleanup.done61: ; preds = %cleanup.action60, % to label %ehcleanup68 unwind label %terminate.lpad ehcleanup68: ; preds = %cleanup.done61, %lpad33 - %.merged = phi { ptr, i32 } [ %.pn15.pn81, %cleanup.done61 ], [ %47, %lpad33 ] + %.merged20 = phi { ptr, i32 } [ %.pn15.pn81, %cleanup.done61 ], [ %47, %lpad33 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg31) #18 br label %eh.resume eh.resume: ; preds = %ehcleanup, %cleanup.action, %ehcleanup68, %ehcleanup29 - %lpad.val72.merged = phi { ptr, i32 } [ %.pn1874, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged, %ehcleanup68 ], [ %.merged20, %ehcleanup29 ] + %lpad.val72.merged = phi { ptr, i32 } [ %.pn1874, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged20, %ehcleanup68 ], [ %.merged, %ehcleanup29 ] resume { ptr, i32 } %lpad.val72.merged terminate.lpad: ; preds = %cleanup.done61, %cleanup.done26 @@ -17083,7 +17083,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit95: ; preds = %_ZNSt10shared_ptrIK br i1 %tobool40.not, label %if.end42, label %cleanup75 ehcleanup32: ; preds = %cleanup.done29, %lpad9 - %.merged76 = phi { ptr, i32 } [ %.pn.pn648, %cleanup.done29 ], [ %11, %lpad9 ] + %.merged74 = phi { ptr, i32 } [ %.pn.pn648, %cleanup.done29 ], [ %11, %lpad9 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg) #18 br label %eh.resume @@ -18530,12 +18530,12 @@ cleanup.done346: ; preds = %cleanup.action345, to label %ehcleanup353 unwind label %terminate.lpad ehcleanup353: ; preds = %cleanup.done346, %lpad318 - %.merged79 = phi { ptr, i32 } [ %.pn69.pn652, %cleanup.done346 ], [ %247, %lpad318 ] + %.merged76 = phi { ptr, i32 } [ %.pn69.pn652, %cleanup.done346 ], [ %247, %lpad318 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg316) #18 br label %eh.resume eh.resume: ; preds = %ehcleanup, %cleanup.action, %ehcleanup353, %ehcleanup32 - %lpad.val357.merged = phi { ptr, i32 } [ %.pn72645, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged79, %ehcleanup353 ], [ %.merged76, %ehcleanup32 ] + %lpad.val357.merged = phi { ptr, i32 } [ %.pn72645, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged76, %ehcleanup353 ], [ %.merged74, %ehcleanup32 ] resume { ptr, i32 } %lpad.val357.merged terminate.lpad: ; preds = %cleanup.done346, %cleanup.done29 diff --git a/bench/casadi/optimized/convexify.cpp.ll b/bench/casadi/optimized/convexify.cpp.ll index 9dea19fad82..da97fce79c8 100644 --- a/bench/casadi/optimized/convexify.cpp.ll +++ b/bench/casadi/optimized/convexify.cpp.ll @@ -1819,8 +1819,7 @@ _ZN6casadi8SparsityaSEOS0_.exit341: ; preds = %419 %427 = ptrtoint ptr %425 to i64 %428 = sub i64 %426, %427 %429 = ashr exact i64 %428, 3 - %umax = call i64 @llvm.umax.i64(i64 %429, i64 1) - %430 = add i64 %umax, -1 + %430 = call i64 @llvm.usub.sat.i64(i64 %429, i64 1) br label %431 431: ; preds = %.lr.ph479, %434 @@ -9344,6 +9343,9 @@ declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #22 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i64 @llvm.smax.i64(i64, i64) #20 +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare i64 @llvm.usub.sat.i64(i64, i64) #20 + ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare double @llvm.sqrt.f64(double) #20 diff --git a/bench/clamav/optimized/client.c.ll b/bench/clamav/optimized/client.c.ll index 1d590dcc34a..9e4825a7010 100644 --- a/bench/clamav/optimized/client.c.ll +++ b/bench/clamav/optimized/client.c.ll @@ -138,8 +138,7 @@ define dso_local signext range(i16 -1, 2) i16 @ping_clamd(ptr noundef %0) local_ .split.us.split.us.preheader: ; preds = %39, %.thread88 %.03897 = phi i64 [ 31, %.thread88 ], [ %34, %39 ] %.196 = phi ptr [ null, %.thread88 ], [ %16, %39 ] - %umax86 = call i64 @llvm.umax.i64(i64 %.03897, i64 1) - %43 = add i64 %umax86, -1 + %43 = call i64 @llvm.usub.sat.i64(i64 %.03897, i64 1) br label %.split.us.split.us .split.us.split.us: ; preds = %.split.us.split.us.preheader, %62 @@ -190,8 +189,7 @@ define dso_local signext range(i16 -1, 2) i16 @ping_clamd(ptr noundef %0) local_ %.041.fr105 = phi i64 [ 0, %.thread98 ], [ %.041.fr, %39 ] %.038104 = phi i64 [ 0, %.thread98 ], [ %34, %39 ] %.1103 = phi ptr [ null, %.thread98 ], [ %16, %39 ] - %umax = call i64 @llvm.umax.i64(i64 %.038104, i64 1) - %65 = add i64 %umax, -1 + %65 = call i64 @llvm.usub.sat.i64(i64 %.038104, i64 1) br label %.split.split .split.split: ; preds = %.split.split.preheader, %87 @@ -980,7 +978,7 @@ declare noundef i32 @puts(ptr nocapture noundef readonly) local_unnamed_addr #11 declare i32 @bcmp(ptr nocapture, ptr nocapture, i64) local_unnamed_addr #12 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i64 @llvm.umax.i64(i64, i64) #13 +declare i64 @llvm.usub.sat.i64(i64, i64) #13 attributes #0 = { nounwind uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } diff --git a/bench/clamav/optimized/timefn.cpp.ll b/bench/clamav/optimized/timefn.cpp.ll index d0eea991cac..4d9949a8f39 100644 --- a/bench/clamav/optimized/timefn.cpp.ll +++ b/bench/clamav/optimized/timefn.cpp.ll @@ -346,26 +346,25 @@ define void @_ZN7RarTime10SetIsoTextEPKw(ptr nocapture noundef nonnull writeonly %33 = phi i32 [ %.pre17, %._crit_edge.loopexit ], [ 0, %2 ] %34 = phi i32 [ %.pre, %._crit_edge.loopexit ], [ 0, %2 ] %35 = tail call i32 @llvm.umax.i32(i32 %31, i32 1) - %36 = tail call i32 @llvm.umax.i32(i32 %30, i32 1) call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %3) store i32 %34, ptr %3, align 8 - %37 = getelementptr inbounds i8, ptr %3, i64 4 - store i32 %33, ptr %37, align 4 - %38 = getelementptr inbounds i8, ptr %3, i64 8 - store i32 %32, ptr %38, align 8 - %39 = getelementptr inbounds i8, ptr %3, i64 12 - store i32 %35, ptr %39, align 4 - %40 = add i32 %36, -1 - %41 = getelementptr inbounds i8, ptr %3, i64 16 - store i32 %40, ptr %41, align 8 - %42 = getelementptr inbounds i8, ptr %3, i64 20 - store i32 %29, ptr %42, align 4 - %43 = getelementptr inbounds i8, ptr %3, i64 32 - store i32 -1, ptr %43, align 8 - %44 = call i64 @mktime(ptr noundef nonnull %3) #13 - %45 = mul i64 %44, 1000000000 - %46 = add i64 %45, -6802270473709551616 - store i64 %46, ptr %0, align 8 + %36 = getelementptr inbounds i8, ptr %3, i64 4 + store i32 %33, ptr %36, align 4 + %37 = getelementptr inbounds i8, ptr %3, i64 8 + store i32 %32, ptr %37, align 8 + %38 = getelementptr inbounds i8, ptr %3, i64 12 + store i32 %35, ptr %38, align 4 + %39 = tail call i32 @llvm.usub.sat.i32(i32 %30, i32 1) + %40 = getelementptr inbounds i8, ptr %3, i64 16 + store i32 %39, ptr %40, align 8 + %41 = getelementptr inbounds i8, ptr %3, i64 20 + store i32 %29, ptr %41, align 4 + %42 = getelementptr inbounds i8, ptr %3, i64 32 + store i32 -1, ptr %42, align 8 + %43 = call i64 @mktime(ptr noundef nonnull %3) #13 + %44 = mul i64 %43, 1000000000 + %45 = add i64 %44, -6802270473709551616 + store i64 %45, ptr %0, align 8 call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %3) ret void } @@ -514,6 +513,9 @@ declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #12 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #12 +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare i32 @llvm.usub.sat.i32(i32, i32) #11 + attributes #0 = { mustprogress nounwind uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: read) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #2 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } diff --git a/bench/darktable/optimized/avif.c.ll b/bench/darktable/optimized/avif.c.ll index 90e8bbdcc32..117fe0e1a15 100644 --- a/bench/darktable/optimized/avif.c.ll +++ b/bench/darktable/optimized/avif.c.ll @@ -172,11 +172,11 @@ define noundef range(i32 0, 2) i32 @write_image(ptr nocapture noundef readonly % br i1 %43, label %47, label %49 47: ; preds = %39 - br i1 %46, label %519, label %48 + br i1 %46, label %518, label %48 48: ; preds = %47 tail call void (ptr, ...) @dt_print_ext(ptr noundef nonnull @.str.1, ptr noundef %1) #18 - br label %519 + br label %518 49: ; preds = %39 br i1 %46, label %59, label %50 @@ -310,7 +310,7 @@ define noundef range(i32 0, 2) i32 @write_image(ptr nocapture noundef readonly % 112: ; preds = %104, %100 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #18 - br label %519 + br label %518 113: ; preds = %110, %89 %114 = phi ptr [ null, %89 ], [ %111, %110 ] @@ -688,7 +688,7 @@ define noundef range(i32 0, 2) i32 @write_image(ptr nocapture noundef readonly % 384: ; preds = %113 %385 = call ptr @dcgettext(ptr noundef null, ptr noundef nonnull @.str.5, i32 noundef 5) #18 call void (ptr, ...) @dt_control_log(ptr noundef %385) #18 - br label %519 + br label %518 .loopexit27: ; preds = %.loopexit28, %.loopexit, %262, %125 %386 = call i32 @avifImageRGBToYUV(ptr noundef nonnull %42, ptr noundef nonnull %13) #18 @@ -723,16 +723,16 @@ define noundef range(i32 0, 2) i32 @write_image(ptr nocapture noundef readonly % %402 = load i32, ptr getelementptr inbounds (i8, ptr @darktable, i64 8), align 8, !tbaa !6 %403 = and i32 %402, 262144 %404 = icmp eq i32 %403, 0 - br i1 %404, label %519, label %405 + br i1 %404, label %518, label %405 405: ; preds = %401 call void (ptr, ...) @dt_print_ext(ptr noundef nonnull @.str.6, ptr noundef %1) #18 - br label %519 + br label %518 406: ; preds = %398 %407 = getelementptr inbounds i8, ptr %0, i64 156 %408 = load i32, ptr %407, align 4, !tbaa !29 - switch i32 %408, label %431 [ + switch i32 %408, label %430 [ i32 0, label %409 i32 1, label %412 ] @@ -742,7 +742,7 @@ define noundef range(i32 0, 2) i32 @write_image(ptr nocapture noundef readonly % store i32 1, ptr %410, align 8, !tbaa !61 %411 = getelementptr inbounds i8, ptr %399, i64 8 store i32 0, ptr %411, align 8, !tbaa !65 - br label %428 + br label %427 412: ; preds = %406 %413 = getelementptr inbounds i8, ptr %399, i64 32 @@ -754,162 +754,161 @@ define noundef range(i32 0, 2) i32 @write_image(ptr nocapture noundef readonly % %418 = add i32 %417, 50 %419 = udiv i32 %418, 100 %420 = icmp ugt i32 %418, 6899 - %421 = call i32 @llvm.umax.i32(i32 %419, i32 5) - %422 = add nsw i32 %421, -5 - %423 = select i1 %420, i32 63, i32 %422 - %424 = getelementptr inbounds i8, ptr %399, i64 8 - store i32 %423, ptr %424, align 8, !tbaa !65 - %425 = icmp ugt i32 %418, 5899 - %426 = add nuw nsw i32 %419, 5 - %427 = select i1 %425, i32 63, i32 %426 - br label %428 - -428: ; preds = %412, %409 - %429 = phi i32 [ %427, %412 ], [ 0, %409 ] - %430 = getelementptr inbounds i8, ptr %399, i64 12 - store i32 %429, ptr %430, align 4, !tbaa !66 - br label %431 - -431: ; preds = %428, %406 - %432 = getelementptr inbounds i8, ptr %0, i64 164 - %433 = load i32, ptr %432, align 4, !tbaa !67 - %434 = icmp eq i32 %433, 0 - br i1 %434, label %435, label %469 - -435: ; preds = %431 - %436 = icmp ugt i32 %17, 6143 - %437 = icmp ugt i32 %20, 6143 - %438 = select i1 %436, i64 11, i64 10 - %439 = lshr i64 %18, %438 - %440 = trunc i64 %439 to i32 - %441 = icmp sgt i32 %440, 63 - br i1 %441, label %448, label %442 - -442: ; preds = %435 - %443 = shl i64 %439, 32 - %444 = ashr exact i64 %443, 32 - %445 = getelementptr inbounds [64 x i32], ptr @floor_log2.floor_log2_table, i64 0, i64 %444 - %446 = load i32, ptr %445, align 4, !tbaa !43 - %447 = sdiv i32 %446, 2 - br label %448 - -448: ; preds = %442, %435 - %449 = phi i32 [ %447, %442 ], [ 32, %435 ] - %450 = getelementptr inbounds i8, ptr %399, i64 28 - store i32 %449, ptr %450, align 4, !tbaa !68 - %451 = select i1 %437, i64 11, i64 10 - %452 = lshr i64 %21, %451 - %453 = trunc i64 %452 to i32 - %454 = icmp sgt i32 %453, 63 - br i1 %454, label %461, label %455 - -455: ; preds = %448 - %456 = shl i64 %452, 32 - %457 = ashr exact i64 %456, 32 - %458 = getelementptr inbounds [64 x i32], ptr @floor_log2.floor_log2_table, i64 0, i64 %457 - %459 = load i32, ptr %458, align 4, !tbaa !43 - %460 = sdiv i32 %459, 2 - br label %461 - -461: ; preds = %455, %448 - %462 = phi i32 [ %460, %455 ], [ 32, %448 ] - %463 = getelementptr inbounds i8, ptr %399, i64 24 - store i32 %462, ptr %463, align 8, !tbaa !69 - %464 = shl nuw i32 1, %462 - %465 = shl i32 %464, %449 - %466 = icmp ne i32 %465, 0 - %467 = zext i1 %466 to i32 - %468 = getelementptr inbounds i8, ptr %399, i64 4 - store i32 %467, ptr %468, align 4, !tbaa !70 - br label %469 - -469: ; preds = %461, %431 - %470 = load i32, ptr getelementptr inbounds (i8, ptr @darktable, i64 8), align 8, !tbaa !6 - %471 = and i32 %470, 262144 - %472 = icmp eq i32 %471, 0 - br i1 %472, label %486, label %473 - -473: ; preds = %469 - %474 = getelementptr inbounds i8, ptr %0, i64 160 - %475 = load i32, ptr %474, align 4, !tbaa !30 - %476 = getelementptr inbounds i8, ptr %399, i64 12 - %477 = load i32, ptr %476, align 4, !tbaa !66 - %478 = getelementptr inbounds i8, ptr %399, i64 8 - %479 = load i32, ptr %478, align 8, !tbaa !65 - %480 = getelementptr inbounds i8, ptr %399, i64 28 - %481 = load i32, ptr %480, align 4, !tbaa !68 - %482 = getelementptr inbounds i8, ptr %399, i64 24 - %483 = load i32, ptr %482, align 8, !tbaa !69 - %484 = getelementptr inbounds i8, ptr %399, i64 4 - %485 = load i32, ptr %484, align 4, !tbaa !70 - call void (ptr, ...) @dt_print_ext(ptr noundef nonnull @.str.7, i32 noundef %475, i32 noundef %477, i32 noundef %479, i32 noundef %481, i32 noundef %483, i32 noundef %485) #18 - br label %486 - -486: ; preds = %473, %469 + %421 = call i32 @llvm.usub.sat.i32(i32 %419, i32 5) + %422 = select i1 %420, i32 63, i32 %421 + %423 = getelementptr inbounds i8, ptr %399, i64 8 + store i32 %422, ptr %423, align 8, !tbaa !65 + %424 = icmp ugt i32 %418, 5899 + %425 = add nuw nsw i32 %419, 5 + %426 = select i1 %424, i32 63, i32 %425 + br label %427 + +427: ; preds = %412, %409 + %428 = phi i32 [ %426, %412 ], [ 0, %409 ] + %429 = getelementptr inbounds i8, ptr %399, i64 12 + store i32 %428, ptr %429, align 4, !tbaa !66 + br label %430 + +430: ; preds = %427, %406 + %431 = getelementptr inbounds i8, ptr %0, i64 164 + %432 = load i32, ptr %431, align 4, !tbaa !67 + %433 = icmp eq i32 %432, 0 + br i1 %433, label %434, label %468 + +434: ; preds = %430 + %435 = icmp ugt i32 %17, 6143 + %436 = icmp ugt i32 %20, 6143 + %437 = select i1 %435, i64 11, i64 10 + %438 = lshr i64 %18, %437 + %439 = trunc i64 %438 to i32 + %440 = icmp sgt i32 %439, 63 + br i1 %440, label %447, label %441 + +441: ; preds = %434 + %442 = shl i64 %438, 32 + %443 = ashr exact i64 %442, 32 + %444 = getelementptr inbounds [64 x i32], ptr @floor_log2.floor_log2_table, i64 0, i64 %443 + %445 = load i32, ptr %444, align 4, !tbaa !43 + %446 = sdiv i32 %445, 2 + br label %447 + +447: ; preds = %441, %434 + %448 = phi i32 [ %446, %441 ], [ 32, %434 ] + %449 = getelementptr inbounds i8, ptr %399, i64 28 + store i32 %448, ptr %449, align 4, !tbaa !68 + %450 = select i1 %436, i64 11, i64 10 + %451 = lshr i64 %21, %450 + %452 = trunc i64 %451 to i32 + %453 = icmp sgt i32 %452, 63 + br i1 %453, label %460, label %454 + +454: ; preds = %447 + %455 = shl i64 %451, 32 + %456 = ashr exact i64 %455, 32 + %457 = getelementptr inbounds [64 x i32], ptr @floor_log2.floor_log2_table, i64 0, i64 %456 + %458 = load i32, ptr %457, align 4, !tbaa !43 + %459 = sdiv i32 %458, 2 + br label %460 + +460: ; preds = %454, %447 + %461 = phi i32 [ %459, %454 ], [ 32, %447 ] + %462 = getelementptr inbounds i8, ptr %399, i64 24 + store i32 %461, ptr %462, align 8, !tbaa !69 + %463 = shl nuw i32 1, %461 + %464 = shl i32 %463, %448 + %465 = icmp ne i32 %464, 0 + %466 = zext i1 %465 to i32 + %467 = getelementptr inbounds i8, ptr %399, i64 4 + store i32 %466, ptr %467, align 4, !tbaa !70 + br label %468 + +468: ; preds = %460, %430 + %469 = load i32, ptr getelementptr inbounds (i8, ptr @darktable, i64 8), align 8, !tbaa !6 + %470 = and i32 %469, 262144 + %471 = icmp eq i32 %470, 0 + br i1 %471, label %485, label %472 + +472: ; preds = %468 + %473 = getelementptr inbounds i8, ptr %0, i64 160 + %474 = load i32, ptr %473, align 4, !tbaa !30 + %475 = getelementptr inbounds i8, ptr %399, i64 12 + %476 = load i32, ptr %475, align 4, !tbaa !66 + %477 = getelementptr inbounds i8, ptr %399, i64 8 + %478 = load i32, ptr %477, align 8, !tbaa !65 + %479 = getelementptr inbounds i8, ptr %399, i64 28 + %480 = load i32, ptr %479, align 4, !tbaa !68 + %481 = getelementptr inbounds i8, ptr %399, i64 24 + %482 = load i32, ptr %481, align 8, !tbaa !69 + %483 = getelementptr inbounds i8, ptr %399, i64 4 + %484 = load i32, ptr %483, align 4, !tbaa !70 + call void (ptr, ...) @dt_print_ext(ptr noundef nonnull @.str.7, i32 noundef %474, i32 noundef %476, i32 noundef %478, i32 noundef %480, i32 noundef %482, i32 noundef %484) #18 + br label %485 + +485: ; preds = %472, %468 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %15, i8 0, i64 16, i1 false) - %487 = call i32 @avifEncoderWrite(ptr noundef nonnull %399, ptr noundef nonnull %42, ptr noundef nonnull %15) #18 - %488 = icmp eq i32 %487, 0 - br i1 %488, label %495, label %489 - -489: ; preds = %486 - %490 = load i32, ptr getelementptr inbounds (i8, ptr @darktable, i64 8), align 8, !tbaa !6 - %491 = and i32 %490, 262144 - %492 = icmp eq i32 %491, 0 - br i1 %492, label %519, label %493 - -493: ; preds = %489 - %494 = call ptr @avifResultToString(i32 noundef %487) #18 - call void (ptr, ...) @dt_print_ext(ptr noundef nonnull @.str.8, ptr noundef %1, ptr noundef %494) #18 - br label %519 - -495: ; preds = %486 - %496 = getelementptr inbounds i8, ptr %15, i64 8 - %497 = load i64, ptr %496, align 8, !tbaa !71 - %498 = icmp eq i64 %497, 0 - %499 = load ptr, ptr %15, align 8 - %500 = icmp eq ptr %499, null - %501 = select i1 %498, i1 true, i1 %500 - br i1 %501, label %502, label %507 - -502: ; preds = %495 - %503 = load i32, ptr getelementptr inbounds (i8, ptr @darktable, i64 8), align 8, !tbaa !6 - %504 = and i32 %503, 262144 - %505 = icmp eq i32 %504, 0 - br i1 %505, label %519, label %506 - -506: ; preds = %502 + %486 = call i32 @avifEncoderWrite(ptr noundef nonnull %399, ptr noundef nonnull %42, ptr noundef nonnull %15) #18 + %487 = icmp eq i32 %486, 0 + br i1 %487, label %494, label %488 + +488: ; preds = %485 + %489 = load i32, ptr getelementptr inbounds (i8, ptr @darktable, i64 8), align 8, !tbaa !6 + %490 = and i32 %489, 262144 + %491 = icmp eq i32 %490, 0 + br i1 %491, label %518, label %492 + +492: ; preds = %488 + %493 = call ptr @avifResultToString(i32 noundef %486) #18 + call void (ptr, ...) @dt_print_ext(ptr noundef nonnull @.str.8, ptr noundef %1, ptr noundef %493) #18 + br label %518 + +494: ; preds = %485 + %495 = getelementptr inbounds i8, ptr %15, i64 8 + %496 = load i64, ptr %495, align 8, !tbaa !71 + %497 = icmp eq i64 %496, 0 + %498 = load ptr, ptr %15, align 8 + %499 = icmp eq ptr %498, null + %500 = select i1 %497, i1 true, i1 %499 + br i1 %500, label %501, label %506 + +501: ; preds = %494 + %502 = load i32, ptr getelementptr inbounds (i8, ptr @darktable, i64 8), align 8, !tbaa !6 + %503 = and i32 %502, 262144 + %504 = icmp eq i32 %503, 0 + br i1 %504, label %518, label %505 + +505: ; preds = %501 call void (ptr, ...) @dt_print_ext(ptr noundef nonnull @.str.9, ptr noundef %1) #18 - br label %519 - -507: ; preds = %495 - %508 = call noalias ptr @fopen(ptr noundef %1, ptr noundef nonnull @.str.10) - %509 = icmp eq ptr %508, null - br i1 %509, label %519, label %510 - -510: ; preds = %507 - %511 = load ptr, ptr %15, align 8, !tbaa !72 - %512 = load i64, ptr %496, align 8, !tbaa !71 - %513 = call i64 @fwrite(ptr noundef %511, i64 noundef 1, i64 noundef %512, ptr noundef nonnull %508) - %514 = call i32 @fclose(ptr noundef nonnull %508) - %515 = load i64, ptr %496, align 8, !tbaa !71 - %516 = icmp eq i64 %513, %515 - br i1 %516, label %519, label %517 - -517: ; preds = %510 - %518 = call i32 @g_unlink(ptr noundef %1) #18 - br label %519 - -519: ; preds = %517, %510, %507, %506, %502, %493, %489, %405, %401, %384, %112, %48, %47 - %520 = phi i32 [ 1, %384 ], [ 1, %517 ], [ 1, %112 ], [ 1, %48 ], [ 1, %47 ], [ 1, %405 ], [ 1, %401 ], [ 1, %493 ], [ 1, %489 ], [ 1, %506 ], [ 1, %502 ], [ 1, %507 ], [ 0, %510 ] - %521 = phi ptr [ %114, %384 ], [ %114, %517 ], [ null, %112 ], [ null, %48 ], [ null, %47 ], [ %114, %405 ], [ %114, %401 ], [ %114, %493 ], [ %114, %489 ], [ %114, %506 ], [ %114, %502 ], [ %114, %507 ], [ %114, %510 ] - %522 = phi ptr [ null, %384 ], [ %399, %517 ], [ null, %112 ], [ null, %48 ], [ null, %47 ], [ null, %405 ], [ null, %401 ], [ %399, %493 ], [ %399, %489 ], [ %399, %506 ], [ %399, %502 ], [ %399, %507 ], [ %399, %510 ] + br label %518 + +506: ; preds = %494 + %507 = call noalias ptr @fopen(ptr noundef %1, ptr noundef nonnull @.str.10) + %508 = icmp eq ptr %507, null + br i1 %508, label %518, label %509 + +509: ; preds = %506 + %510 = load ptr, ptr %15, align 8, !tbaa !72 + %511 = load i64, ptr %495, align 8, !tbaa !71 + %512 = call i64 @fwrite(ptr noundef %510, i64 noundef 1, i64 noundef %511, ptr noundef nonnull %507) + %513 = call i32 @fclose(ptr noundef nonnull %507) + %514 = load i64, ptr %495, align 8, !tbaa !71 + %515 = icmp eq i64 %512, %514 + br i1 %515, label %518, label %516 + +516: ; preds = %509 + %517 = call i32 @g_unlink(ptr noundef %1) #18 + br label %518 + +518: ; preds = %516, %509, %506, %505, %501, %492, %488, %405, %401, %384, %112, %48, %47 + %519 = phi i32 [ 1, %384 ], [ 1, %516 ], [ 1, %112 ], [ 1, %48 ], [ 1, %47 ], [ 1, %405 ], [ 1, %401 ], [ 1, %492 ], [ 1, %488 ], [ 1, %505 ], [ 1, %501 ], [ 1, %506 ], [ 0, %509 ] + %520 = phi ptr [ %114, %384 ], [ %114, %516 ], [ null, %112 ], [ null, %48 ], [ null, %47 ], [ %114, %405 ], [ %114, %401 ], [ %114, %492 ], [ %114, %488 ], [ %114, %505 ], [ %114, %501 ], [ %114, %506 ], [ %114, %509 ] + %521 = phi ptr [ null, %384 ], [ %399, %516 ], [ null, %112 ], [ null, %48 ], [ null, %47 ], [ null, %405 ], [ null, %401 ], [ %399, %492 ], [ %399, %488 ], [ %399, %505 ], [ %399, %501 ], [ %399, %506 ], [ %399, %509 ] call void @avifRGBImageFreePixels(ptr noundef nonnull %13) #18 call void @avifImageDestroy(ptr noundef %42) #18 - call void @avifEncoderDestroy(ptr noundef %522) #18 + call void @avifEncoderDestroy(ptr noundef %521) #18 call void @avifRWDataFree(ptr noundef nonnull %15) #18 - call void @free(ptr noundef %521) #18 + call void @free(ptr noundef %520) #18 call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %13) #18 - ret i32 %520 + ret i32 %519 } ; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: write) @@ -1386,9 +1385,6 @@ declare void @dt_conf_set_int(ptr noundef, i32 noundef) local_unnamed_addr #3 declare float @dt_bauhaus_slider_get(ptr noundef) local_unnamed_addr #3 -; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.umax.i32(i32, i32) #6 - ; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) declare { i64, i1 } @llvm.umul.with.overflow.i64(i64, i64) #6 @@ -1398,6 +1394,9 @@ declare <8 x float> @llvm.masked.gather.v8f32.v8p0(<8 x ptr>, i32 immarg, <8 x i ; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) declare <8 x float> @llvm.round.v8f32(<8 x float>) #6 +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare i32 @llvm.usub.sat.i32(i32, i32) #17 + ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare <16 x float> @llvm.round.v16f32(<16 x float>) #17 diff --git a/bench/duckdb/optimized/ub_duckdb_func_string.cpp.ll b/bench/duckdb/optimized/ub_duckdb_func_string.cpp.ll index 34bea0acb2b..36f3606eae9 100644 --- a/bench/duckdb/optimized/ub_duckdb_func_string.cpp.ll +++ b/bench/duckdb/optimized/ub_duckdb_func_string.cpp.ll @@ -63314,13 +63314,11 @@ invoke.cont23.i.i.i: ; preds = %for.body20.i.i.i %arrayidx.i.i.i = getelementptr inbounds i8, ptr %cond.i.i.i.i, i64 %pos_txt.0279.i.i.i %injected.cond.i.i.i = icmp ule i64 %sub.ptr.div.i.i.i.i.i.i, %sub.ptr.div.i.i.i132.i.i.i %injected.cond.fr.i.i.i = freeze i1 %injected.cond.i.i.i - %umax312.i.i.i = call i64 @llvm.umax.i64(i64 %sub.ptr.div.i.i.i.i.i.i, i64 1) - %12 = add i64 %umax312.i.i.i, -1 + %12 = call i64 @llvm.usub.sat.i64(i64 %sub.ptr.div.i.i.i.i.i.i, i64 1) br i1 %injected.cond.fr.i.i.i, label %for.body29.us.i.i.i, label %for.body29.preheader.i.i.i for.body29.preheader.i.i.i: ; preds = %invoke.cont23.i.i.i - %umax309.i.i.i = call i64 @llvm.umax.i64(i64 %sub.ptr.div.i.i.i132.i.i.i, i64 1) - %13 = add i64 %umax309.i.i.i, -1 + %13 = call i64 @llvm.usub.sat.i64(i64 %sub.ptr.div.i.i.i132.i.i.i, i64 1) br label %for.body29.i.i.i for.body29.us.i.i.i: ; preds = %invoke.cont23.i.i.i, %invoke.cont38.us.i.i.i diff --git a/bench/folly/optimized/LoggerDB.cpp.ll b/bench/folly/optimized/LoggerDB.cpp.ll index 058535c6920..1a6b29af82f 100644 --- a/bench/folly/optimized/LoggerDB.cpp.ll +++ b/bench/folly/optimized/LoggerDB.cpp.ll @@ -14189,7 +14189,7 @@ ehcleanup: ; preds = %lpad57 br i1 %cleanup.isactive.0, label %cleanup.action, label %ehcleanup197 cleanup.action: ; preds = %ehcleanup, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i, %ehcleanup.thread - %.merged52 = phi { ptr, i32 } [ %37, %ehcleanup.thread ], [ %38, %ehcleanup ], [ %38, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i ] + %.merged53 = phi { ptr, i32 } [ %37, %ehcleanup.thread ], [ %38, %ehcleanup ], [ %38, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i ] call void @__cxa_free_exception(ptr %exception) #28 br label %ehcleanup197 @@ -14502,7 +14502,7 @@ ehcleanup79: ; preds = %lpad75 br i1 %cleanup.isactive77.0, label %cleanup.action82, label %ehcleanup197 cleanup.action82: ; preds = %ehcleanup79, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i357, %ehcleanup79.thread - %.merged51 = phi { ptr, i32 } [ %82, %ehcleanup79.thread ], [ %83, %ehcleanup79 ], [ %83, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i357 ] + %.merged52 = phi { ptr, i32 } [ %82, %ehcleanup79.thread ], [ %83, %ehcleanup79 ], [ %83, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i357 ] call void @__cxa_free_exception(ptr %exception70) #28 br label %ehcleanup197 @@ -14607,7 +14607,7 @@ ehcleanup121: ; preds = %lpad117 br i1 %cleanup.isactive119.0, label %cleanup.action124, label %ehcleanup197 cleanup.action124: ; preds = %ehcleanup121, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i378, %ehcleanup121.thread - %.merged53 = phi { ptr, i32 } [ %91, %ehcleanup121.thread ], [ %92, %ehcleanup121 ], [ %92, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i378 ] + %.merged54 = phi { ptr, i32 } [ %91, %ehcleanup121.thread ], [ %92, %ehcleanup121 ], [ %92, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i378 ] call void @__cxa_free_exception(ptr %exception110) #28 br label %ehcleanup197 @@ -15372,17 +15372,17 @@ ehcleanup193: ; preds = %lpad181, %cleanup.d br label %ehcleanup197 ehcleanup197: ; preds = %lpad89.loopexit, %lpad89.loopexit.split-lp, %ehcleanup193, %cleanup.action124, %ehcleanup121, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i378, %lpad86, %cleanup.action82, %ehcleanup79, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i357, %lpad63, %cleanup.action, %ehcleanup, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i - %.merged50 = phi { ptr, i32 } [ %87, %lpad86 ], [ %.merged51, %cleanup.action82 ], [ %83, %ehcleanup79 ], [ %81, %lpad63 ], [ %.merged52, %cleanup.action ], [ %38, %ehcleanup ], [ %38, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i ], [ %83, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i357 ], [ %.merged53, %cleanup.action124 ], [ %92, %ehcleanup121 ], [ %207, %ehcleanup193 ], [ %92, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i378 ], [ %lpad.loopexit, %lpad89.loopexit ], [ %lpad.loopexit.split-lp, %lpad89.loopexit.split-lp ] + %.merged51 = phi { ptr, i32 } [ %87, %lpad86 ], [ %.merged52, %cleanup.action82 ], [ %83, %ehcleanup79 ], [ %81, %lpad63 ], [ %.merged53, %cleanup.action ], [ %38, %ehcleanup ], [ %38, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i ], [ %83, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i357 ], [ %.merged54, %cleanup.action124 ], [ %92, %ehcleanup121 ], [ %207, %ehcleanup193 ], [ %92, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i378 ], [ %lpad.loopexit, %lpad89.loopexit ], [ %lpad.loopexit.split-lp, %lpad89.loopexit.split-lp ] call void @_ZN5folly16LogHandlerConfigD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %updatedConfig) #28 br label %ehcleanup199 ehcleanup199: ; preds = %ehcleanup197, %lpad45 - %.merged49 = phi { ptr, i32 } [ %.merged50, %ehcleanup197 ], [ %35, %lpad45 ] + %.merged50 = phi { ptr, i32 } [ %.merged51, %ehcleanup197 ], [ %35, %lpad45 ] call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %updatedConfig) #28 br label %ehcleanup200 ehcleanup200: ; preds = %ehcleanup199, %lpad31 - %.merged = phi { ptr, i32 } [ %.merged49, %ehcleanup199 ], [ %33, %lpad31 ] + %.merged49 = phi { ptr, i32 } [ %.merged50, %ehcleanup199 ], [ %33, %lpad31 ] call void @_ZNSt12__shared_ptrIN5folly10LogHandlerELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %oldHandler) #28 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %oldHandler) #28 br label %eh.resume @@ -15680,7 +15680,7 @@ ehcleanup262: ; preds = %lpad258 br i1 %cleanup.isactive260.0, label %cleanup.action265, label %eh.resume cleanup.action265: ; preds = %ehcleanup262, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i609, %ehcleanup262.thread.body - %.merged54 = phi { ptr, i32 } [ %249, %ehcleanup262.thread.body ], [ %252, %ehcleanup262 ], [ %252, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i609 ] + %.merged = phi { ptr, i32 } [ %249, %ehcleanup262.thread.body ], [ %252, %ehcleanup262 ], [ %252, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i609 ] call void @__cxa_free_exception(ptr %exception253) #28 br label %eh.resume @@ -15695,7 +15695,7 @@ cleanup: ; preds = %if.end267.us, %if.e br i1 %cmp.i598.not, label %for.cond.cleanup222, label %for.body223 eh.resume: ; preds = %cleanup.action265, %ehcleanup262, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i609, %ehcleanup200, %lpad - %lpad.val288.merged = phi { ptr, i32 } [ %11, %lpad ], [ %.merged, %ehcleanup200 ], [ %.merged54, %cleanup.action265 ], [ %252, %ehcleanup262 ], [ %252, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i609 ] + %lpad.val288.merged = phi { ptr, i32 } [ %11, %lpad ], [ %.merged49, %ehcleanup200 ], [ %.merged, %cleanup.action265 ], [ %252, %ehcleanup262 ], [ %252, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i609 ] resume { ptr, i32 } %lpad.val288.merged terminate.lpad: ; preds = %cleanup.done177 diff --git a/bench/harfbuzz/optimized/harfbuzz.cc.ll b/bench/harfbuzz/optimized/harfbuzz.cc.ll index d4914406dd9..248857788fc 100644 --- a/bench/harfbuzz/optimized/harfbuzz.cc.ll +++ b/bench/harfbuzz/optimized/harfbuzz.cc.ll @@ -216343,8 +216343,7 @@ if.then.i14.i: ; preds = %sw.bb.i if.then.i133: ; preds = %_ZN2OT21hb_ot_apply_context_t19skipping_iterator_t5matchER15hb_glyph_info_t.exit.i130 %175 = load i32, ptr %iter_context.i, align 4 - %.sroa.speculated = tail call i32 @llvm.umax.i32(i32 %175, i32 1) - %sub.i134 = add i32 %.sroa.speculated, -1 + %sub.i134 = tail call i32 @llvm.usub.sat.i32(i32 %175, i32 1) br label %if.then19.i if.end.i84: ; preds = %if.then.i14.i, %sw.bb.i @@ -218100,8 +218099,7 @@ if.then.i14.i: ; preds = %sw.bb.i if.then.i143: ; preds = %_ZN2OT21hb_ot_apply_context_t19skipping_iterator_t5matchER15hb_glyph_info_t.exit.i140 %180 = load i32, ptr %iter_context.i, align 4 - %.sroa.speculated = tail call i32 @llvm.umax.i32(i32 %180, i32 1) - %sub.i144 = add i32 %.sroa.speculated, -1 + %sub.i144 = tail call i32 @llvm.usub.sat.i32(i32 %180, i32 1) br label %if.then19.i if.end.i94: ; preds = %if.then.i14.i, %sw.bb.i @@ -218524,8 +218522,7 @@ if.then.i14.i: ; preds = %sw.bb.i if.then.i141: ; preds = %_ZN2OT21hb_ot_apply_context_t19skipping_iterator_t5matchER15hb_glyph_info_t.exit.i139 %59 = load i32, ptr %iter_context.i70, align 4 - %.sroa.speculated = tail call i32 @llvm.umax.i32(i32 %59, i32 1) - %sub.i142 = add i32 %.sroa.speculated, -1 + %sub.i142 = tail call i32 @llvm.usub.sat.i32(i32 %59, i32 1) br label %if.else if.end.i92: ; preds = %if.then.i14.i, %sw.bb.i @@ -289524,8 +289521,7 @@ _ZNK16hb_lazy_loader_tIN2OT18vmtx_accelerator_tE21hb_face_lazy_loader_tIS1_Lj12E %tobool = trunc i8 %54 to i1 %55 = select i1 %tobool, i32 1, i32 2 %div8 = lshr i32 %53, %55 - %.sroa.speculated66 = call i32 @llvm.umax.i32(i32 %div8, i32 1) - %sub = add nsw i32 %.sroa.speculated66, -1 + %sub = call i32 @llvm.usub.sat.i32(i32 %div8, i32 1) store i32 %sub, ptr %num_glyphs, align 4 %56 = load atomic i32, ptr %num_glyphs.i.i.i monotonic, align 4 %cmp.i50 = icmp eq i32 %56, -1 @@ -297780,8 +297776,7 @@ if.then.i14.i: ; preds = %sw.bb.i if.then.i270: ; preds = %_ZN2OT21hb_ot_apply_context_t19skipping_iterator_t5matchER15hb_glyph_info_t.exit.i %52 = load i32, ptr %iter_input, align 4 - %.sroa.speculated = tail call i32 @llvm.umax.i32(i32 %52, i32 1) - %sub.i = add i32 %.sroa.speculated, -1 + %sub.i = tail call i32 @llvm.usub.sat.i32(i32 %52, i32 1) br label %if.then13 if.then13: ; preds = %while.cond.ithread-pre-split, %if.end, %if.then.i270 @@ -300791,8 +300786,7 @@ if.then.i14.i: ; preds = %sw.bb.i if.then.i113: ; preds = %_ZN2OT21hb_ot_apply_context_t19skipping_iterator_t5matchER15hb_glyph_info_t.exit.i %36 = load i32, ptr %iter_input, align 4 - %.sroa.speculated = tail call i32 @llvm.umax.i32(i32 %36, i32 1) - %sub.i = add i32 %.sroa.speculated, -1 + %sub.i = tail call i32 @llvm.usub.sat.i32(i32 %36, i32 1) br label %if.then8 if.then8: ; preds = %while.cond.i.backedge, %if.end, %if.then.i113 diff --git a/bench/harfbuzz/optimized/hb-static.cc.ll b/bench/harfbuzz/optimized/hb-static.cc.ll index 6fd1815db7e..1d2a09af7cd 100644 --- a/bench/harfbuzz/optimized/hb-static.cc.ll +++ b/bench/harfbuzz/optimized/hb-static.cc.ll @@ -7470,8 +7470,7 @@ _ZNK16hb_lazy_loader_tIN2OT18vmtx_accelerator_tE21hb_face_lazy_loader_tIS1_Lj12E %tobool = trunc i8 %35 to i1 %36 = select i1 %tobool, i32 1, i32 2 %div8 = lshr i32 %34, %36 - %.sroa.speculated42 = tail call i32 @llvm.umax.i32(i32 %div8, i32 1) - %sub = add nsw i32 %.sroa.speculated42, -1 + %sub = tail call i32 @llvm.usub.sat.i32(i32 %div8, i32 1) store i32 %sub, ptr %num_glyphs, align 4 %num_glyphs.i34 = getelementptr inbounds i8, ptr %face, i64 48 %37 = load atomic i32, ptr %num_glyphs.i34 monotonic, align 4 diff --git a/bench/hdf5/optimized/sio_engine.c.ll b/bench/hdf5/optimized/sio_engine.c.ll index 5a9a4e27654..21923d0d813 100644 --- a/bench/hdf5/optimized/sio_engine.c.ll +++ b/bench/hdf5/optimized/sio_engine.c.ll @@ -1478,38 +1478,38 @@ define dso_local range(i64 -1, -9223372036854775808) i64 @set_vfd(ptr nocapture %9 = load i64, ptr @H5P_CLS_FILE_ACCESS_ID_g, align 8 %10 = tail call i64 @H5Pcreate(i64 noundef %9) #18 %11 = icmp slt i64 %10, 0 - br i1 %11, label %48, label %12 + br i1 %11, label %47, label %12 12: ; preds = %1 - switch i32 %7, label %48 [ + switch i32 %7, label %47 [ i32 0, label %13 i32 1, label %16 i32 2, label %19 i32 3, label %22 i32 4, label %25 - i32 5, label %44 - i32 6, label %47 + i32 5, label %43 + i32 6, label %46 ] 13: ; preds = %12 %14 = tail call i32 @H5Pset_fapl_sec2(i64 noundef %10) #18 %15 = icmp slt i32 %14, 0 - br i1 %15, label %48, label %47 + br i1 %15, label %47, label %46 16: ; preds = %12 %17 = tail call i32 @H5Pset_fapl_stdio(i64 noundef %10) #18 %18 = icmp slt i32 %17, 0 - br i1 %18, label %48, label %47 + br i1 %18, label %47, label %46 19: ; preds = %12 %20 = tail call i32 @H5Pset_fapl_core(i64 noundef %10, i64 noundef 1048576, i1 noundef zeroext true) #18 %21 = icmp slt i32 %20, 0 - br i1 %21, label %48, label %47 + br i1 %21, label %47, label %46 22: ; preds = %12 %23 = tail call i32 @H5Pset_fapl_split(i64 noundef %10, ptr noundef nonnull @.str.13, i64 noundef 0, ptr noundef nonnull @.str.14, i64 noundef 0) #18 %24 = icmp slt i32 %23, 0 - br i1 %24, label %48, label %47 + br i1 %24, label %47, label %46 25: ; preds = %12 call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(28) %2, i8 0, i64 28, i1 false) @@ -1518,7 +1518,7 @@ define dso_local range(i64 -1, -9223372036854775808) i64 @set_vfd(ptr nocapture call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(56) %5, i8 0, i64 56, i1 false) %26 = tail call noalias dereferenceable_or_null(7168) ptr @calloc(i64 noundef 1, i64 noundef 7168) #19 %27 = icmp eq ptr %26, null - br i1 %27, label %48, label %.preheader + br i1 %27, label %47, label %.preheader .preheader: ; preds = %25, %.preheader %indvars.iv = phi i64 [ %indvars.iv.next, %.preheader ], [ 0, %25 ] @@ -1532,32 +1532,31 @@ define dso_local range(i64 -1, -9223372036854775808) i64 @set_vfd(ptr nocapture %34 = getelementptr inbounds [7 x ptr], ptr %4, i64 0, i64 %indvars.iv store ptr %29, ptr %34, align 8 %35 = trunc nuw nsw i64 %indvars.iv to i32 - %36 = tail call i32 @llvm.umax.i32(i32 %35, i32 1) - %37 = add nsw i32 %36, -1 - %38 = zext nneg i32 %37 to i64 - %39 = mul nuw nsw i64 %38, 1844674407370955161 - %40 = getelementptr inbounds [7 x i64], ptr %5, i64 0, i64 %indvars.iv - store i64 %39, ptr %40, align 8 + %36 = tail call i32 @llvm.usub.sat.i32(i32 %35, i32 1) + %37 = zext nneg i32 %36 to i64 + %38 = mul nuw nsw i64 %37, 1844674407370955161 + %39 = getelementptr inbounds [7 x i64], ptr %5, i64 0, i64 %indvars.iv + store i64 %38, ptr %39, align 8 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 7 - br i1 %exitcond.not, label %41, label %.preheader + br i1 %exitcond.not, label %40, label %.preheader -41: ; preds = %.preheader - %42 = call i32 @H5Pset_fapl_multi(i64 noundef %10, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull %5, i1 noundef zeroext false) #18 - %43 = icmp slt i32 %42, 0 +40: ; preds = %.preheader + %41 = call i32 @H5Pset_fapl_multi(i64 noundef %10, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull %5, i1 noundef zeroext false) #18 + %42 = icmp slt i32 %41, 0 call void @free(ptr noundef %26) #18 - br i1 %43, label %48, label %47 + br i1 %42, label %47, label %46 -44: ; preds = %12 - %45 = tail call i32 @H5Pset_fapl_family(i64 noundef %10, i64 noundef 1048576, i64 noundef 0) #18 - %46 = icmp slt i32 %45, 0 - br i1 %46, label %48, label %47 +43: ; preds = %12 + %44 = tail call i32 @H5Pset_fapl_family(i64 noundef %10, i64 noundef 1048576, i64 noundef 0) #18 + %45 = icmp slt i32 %44, 0 + br i1 %45, label %47, label %46 -47: ; preds = %41, %12, %16, %22, %44, %19, %13 - br label %48 +46: ; preds = %40, %12, %16, %22, %43, %19, %13 + br label %47 -48: ; preds = %41, %12, %44, %25, %22, %19, %16, %13, %1, %47 - %.0 = phi i64 [ %10, %47 ], [ -1, %1 ], [ -1, %13 ], [ -1, %16 ], [ -1, %19 ], [ -1, %22 ], [ -1, %25 ], [ -1, %44 ], [ -1, %12 ], [ -1, %41 ] +47: ; preds = %40, %12, %43, %25, %22, %19, %16, %13, %1, %46 + %.0 = phi i64 [ %10, %46 ], [ -1, %1 ], [ -1, %13 ], [ -1, %16 ], [ -1, %19 ], [ -1, %22 ], [ -1, %25 ], [ -1, %43 ], [ -1, %12 ], [ -1, %40 ] ret i64 %.0 } @@ -2205,7 +2204,7 @@ declare noundef i64 @fwrite(ptr nocapture noundef, i64 noundef, i64 noundef, ptr declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #14 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.umax.i32(i32, i32) #15 +declare i32 @llvm.usub.sat.i32(i32, i32) #15 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #16 diff --git a/bench/image-rs/optimized/2ndzmzcdt55acj4k.ll b/bench/image-rs/optimized/2ndzmzcdt55acj4k.ll index 84675536514..2dbdd0d1ef8 100644 --- a/bench/image-rs/optimized/2ndzmzcdt55acj4k.ll +++ b/bench/image-rs/optimized/2ndzmzcdt55acj4k.ll @@ -31964,10 +31964,8 @@ switch.lookup: ; Function Attrs: nonlazybind uwtable define void @_ZN5image6codecs4webp9transform7idct4x417h00d82ec26c4e119bE(ptr noalias nocapture noundef nonnull align 4 %0, i64 noundef %1) unnamed_addr #2 { - %umax = tail call i64 @llvm.umax.i64(i64 %1, i64 8) - %3 = add i64 %umax, -8 - %umax89 = tail call i64 @llvm.umax.i64(i64 %1, i64 12) - %4 = add i64 %umax89, -12 + %3 = tail call i64 @llvm.usub.sat.i64(i64 %1, i64 8) + %4 = tail call i64 @llvm.usub.sat.i64(i64 %1, i64 12) br label %5 5: ; preds = %2, %72 @@ -32131,8 +32129,7 @@ _ZN5image6codecs4webp9transform7idct4x45fetch17h9a45abbf13d9d6b7E.exit37: ; pred ; Function Attrs: nonlazybind uwtable define void @_ZN5image6codecs4webp9transform7iwht4x417h0d981d6f6d8159feE(ptr noalias nocapture noundef nonnull align 4 %0, i64 noundef %1) unnamed_addr #2 { - %umax = tail call i64 @llvm.umax.i64(i64 %1, i64 12) - %3 = add i64 %umax, -12 + %3 = tail call i64 @llvm.usub.sat.i64(i64 %1, i64 12) br label %4 4: ; preds = %2, %43 @@ -33137,6 +33134,9 @@ declare i32 @llvm.umin.i32(i32, i32) #28 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i64 @llvm.umax.i64(i64, i64) #28 +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare i64 @llvm.usub.sat.i64(i64, i64) #28 + attributes #0 = { inlinehint nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #1 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #2 = { nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } diff --git a/bench/linux/optimized/devio.ll b/bench/linux/optimized/devio.ll index 8c0faa32802..306d9eaccd8 100644 --- a/bench/linux/optimized/devio.ll +++ b/bench/linux/optimized/devio.ll @@ -5312,7 +5312,7 @@ define internal fastcc i32 @do_proc_bulk(ptr noundef %0, ptr nocapture noundef r %125 = load i8, ptr %124, align 1 %126 = and i8 %125, 3 %127 = icmp eq i8 %126, 3 - br i1 %127, label %128, label %153 + br i1 %127, label %128, label %152 128: ; preds = %123 %129 = and i32 %91, 2147483520 @@ -5334,136 +5334,135 @@ define internal fastcc i32 @do_proc_bulk(ptr noundef %0, ptr nocapture noundef r %140 = icmp eq i32 %139, 3 %141 = icmp ugt i32 %139, 4 %142 = or i1 %140, %141 - br i1 %142, label %143, label %149 + br i1 %142, label %143, label %148 143: ; preds = %128 %144 = icmp ugt i8 %131, 15 - %145 = tail call i32 @llvm.umax.i32(i32 %132, i32 1) - %146 = add nsw i32 %145, -1 - %147 = shl nuw nsw i32 1, %146 - %148 = select i1 %144, i32 32768, i32 %147 - br label %149 - -149: ; preds = %143, %128 - %150 = phi i32 [ %148, %143 ], [ %132, %128 ] - %151 = getelementptr inbounds i8, ptr %121, i64 160 - store i32 %150, ptr %151, align 8 - %152 = getelementptr inbounds i8, ptr %121, i64 152 - store i32 -1, ptr %152, align 8 - br label %159 - -153: ; preds = %123 - %154 = getelementptr inbounds i8, ptr %121, i64 64 - store ptr %5, ptr %154, align 8 - %155 = getelementptr inbounds i8, ptr %121, i64 80 - store i32 %91, ptr %155, align 8 - %156 = getelementptr inbounds i8, ptr %121, i64 96 - store ptr %118, ptr %156, align 8 - %157 = getelementptr inbounds i8, ptr %121, i64 128 - store i32 %79, ptr %157, align 8 - %158 = getelementptr inbounds i8, ptr %121, i64 168 - tail call void @llvm.memset.p0.i64(ptr noundef align 8 dereferenceable(16) %158, i8 0, i64 16, i1 false) - br label %159 - -159: ; preds = %153, %149 - %160 = phi i32 [ %129, %149 ], [ %91, %153 ] + %145 = tail call i32 @llvm.usub.sat.i32(i32 %132, i32 1) + %146 = shl nuw nsw i32 1, %145 + %147 = select i1 %144, i32 32768, i32 %146 + br label %148 + +148: ; preds = %143, %128 + %149 = phi i32 [ %147, %143 ], [ %132, %128 ] + %150 = getelementptr inbounds i8, ptr %121, i64 160 + store i32 %149, ptr %150, align 8 + %151 = getelementptr inbounds i8, ptr %121, i64 152 + store i32 -1, ptr %151, align 8 + br label %158 + +152: ; preds = %123 + %153 = getelementptr inbounds i8, ptr %121, i64 64 + store ptr %5, ptr %153, align 8 + %154 = getelementptr inbounds i8, ptr %121, i64 80 + store i32 %91, ptr %154, align 8 + %155 = getelementptr inbounds i8, ptr %121, i64 96 + store ptr %118, ptr %155, align 8 + %156 = getelementptr inbounds i8, ptr %121, i64 128 + store i32 %79, ptr %156, align 8 + %157 = getelementptr inbounds i8, ptr %121, i64 168 + tail call void @llvm.memset.p0.i64(ptr noundef align 8 dereferenceable(16) %157, i8 0, i64 16, i1 false) + br label %158 + +158: ; preds = %152, %148 + %159 = phi i32 [ %129, %148 ], [ %91, %152 ] store i32 0, ptr %3, align 4, !annotation !36 - %161 = getelementptr inbounds i8, ptr %1, i64 8 - %162 = load i32, ptr %161, align 8 - %163 = load i32, ptr %1, align 8 - %164 = and i32 %163, 128 - %165 = icmp eq i32 %164, 0 - br i1 %165, label %182, label %166 - -166: ; preds = %159 - tail call fastcc void @snoop_urb(ptr noundef %5, ptr noundef null, i32 noundef %160, i32 noundef %79, i32 noundef %162, i32 noundef 0, ptr noundef null, i32 noundef 0) - %167 = getelementptr inbounds i8, ptr %5, i64 296 - tail call void @mutex_unlock(ptr noundef %167) #17 - %168 = call fastcc i32 @usbfs_start_wait_urb(ptr noundef nonnull %121, i32 noundef %162, ptr noundef nonnull %3) - tail call void @mutex_lock(ptr noundef %167) #17 - %169 = load i32, ptr %3, align 4 - tail call fastcc void @snoop_urb(ptr noundef %5, ptr noundef null, i32 noundef %160, i32 noundef %169, i32 noundef %168, i32 noundef 1, ptr noundef nonnull %118, i32 noundef %169) - %170 = icmp eq i32 %168, 0 - %171 = icmp ne i32 %169, 0 - %172 = and i1 %170, %171 - br i1 %172, label %173, label %193 - -173: ; preds = %166 - %174 = icmp slt i32 %169, 0 - br i1 %174, label %175, label %176, !prof !12 - -175: ; preds = %173 + %160 = getelementptr inbounds i8, ptr %1, i64 8 + %161 = load i32, ptr %160, align 8 + %162 = load i32, ptr %1, align 8 + %163 = and i32 %162, 128 + %164 = icmp eq i32 %163, 0 + br i1 %164, label %181, label %165 + +165: ; preds = %158 + tail call fastcc void @snoop_urb(ptr noundef %5, ptr noundef null, i32 noundef %159, i32 noundef %79, i32 noundef %161, i32 noundef 0, ptr noundef null, i32 noundef 0) + %166 = getelementptr inbounds i8, ptr %5, i64 296 + tail call void @mutex_unlock(ptr noundef %166) #17 + %167 = call fastcc i32 @usbfs_start_wait_urb(ptr noundef nonnull %121, i32 noundef %161, ptr noundef nonnull %3) + tail call void @mutex_lock(ptr noundef %166) #17 + %168 = load i32, ptr %3, align 4 + tail call fastcc void @snoop_urb(ptr noundef %5, ptr noundef null, i32 noundef %159, i32 noundef %168, i32 noundef %167, i32 noundef 1, ptr noundef nonnull %118, i32 noundef %168) + %169 = icmp eq i32 %167, 0 + %170 = icmp ne i32 %168, 0 + %171 = and i1 %169, %170 + br i1 %171, label %172, label %192 + +172: ; preds = %165 + %173 = icmp slt i32 %168, 0 + br i1 %173, label %174, label %175, !prof !12 + +174: ; preds = %172 tail call void asm sideeffect "42: nop\0A\09.pushsection .discard.instr_begin\0A\09.long 42b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 42) #17, !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.5, i32 249, i32 2307, i64 12) #17, !srcloc !14 tail call void asm sideeffect "43: nop\0A\09.pushsection .discard.instr_end\0A\09.long 43b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 43) #17, !srcloc !15 br label %.thread20 -176: ; preds = %173 - %177 = zext nneg i32 %169 to i64 - %178 = getelementptr inbounds i8, ptr %1, i64 16 - %179 = load ptr, ptr %178, align 8 - %180 = tail call i64 @_copy_to_user(ptr noundef %179, ptr noundef nonnull %118, i64 noundef %177) #17 - %181 = icmp eq i64 %180, 0 - %spec.select = select i1 %181, i32 %169, i32 -14 +175: ; preds = %172 + %176 = zext nneg i32 %168 to i64 + %177 = getelementptr inbounds i8, ptr %1, i64 16 + %178 = load ptr, ptr %177, align 8 + %179 = tail call i64 @_copy_to_user(ptr noundef %178, ptr noundef nonnull %118, i64 noundef %176) #17 + %180 = icmp eq i64 %179, 0 + %spec.select = select i1 %180, i32 %168, i32 -14 br label %.thread20 -182: ; preds = %159 - %183 = icmp eq i32 %79, 0 - br i1 %183, label %.split, label %184 - -.split: ; preds = %182 - tail call fastcc void @snoop_urb(ptr noundef %5, ptr noundef null, i32 noundef %160, i32 noundef 0, i32 noundef %162, i32 noundef 0, ptr noundef nonnull %118, i32 noundef 0) - br label %189 - -184: ; preds = %182 - %185 = getelementptr inbounds i8, ptr %1, i64 16 - %186 = load ptr, ptr %185, align 8 - %187 = tail call i64 @_copy_from_user(ptr noundef nonnull %118, ptr noundef %186, i64 noundef %80) #17 - %188 = icmp eq i64 %187, 0 - br i1 %188, label %.split1, label %.thread20 - -.split1: ; preds = %184 - tail call fastcc void @snoop_urb(ptr noundef %5, ptr noundef null, i32 noundef %160, i32 noundef %79, i32 noundef %162, i32 noundef 0, ptr noundef nonnull %118, i32 noundef %79) - br label %189 - -189: ; preds = %.split1, %.split - %190 = getelementptr inbounds i8, ptr %5, i64 296 - tail call void @mutex_unlock(ptr noundef %190) #17 - %191 = call fastcc i32 @usbfs_start_wait_urb(ptr noundef nonnull %121, i32 noundef %162, ptr noundef nonnull %3) - tail call void @mutex_lock(ptr noundef %190) #17 - %192 = load i32, ptr %3, align 4 - tail call fastcc void @snoop_urb(ptr noundef %5, ptr noundef null, i32 noundef %160, i32 noundef %192, i32 noundef %191, i32 noundef 1, ptr noundef null, i32 noundef 0) - br label %193 - -193: ; preds = %189, %166 - %194 = phi i32 [ %169, %166 ], [ %192, %189 ] - %195 = phi i32 [ %168, %166 ], [ %191, %189 ] - %.fr = freeze i32 %195 - %196 = icmp slt i32 %.fr, 0 - %spec.select22 = select i1 %196, i32 %.fr, i32 %194 +181: ; preds = %158 + %182 = icmp eq i32 %79, 0 + br i1 %182, label %.split, label %183 + +.split: ; preds = %181 + tail call fastcc void @snoop_urb(ptr noundef %5, ptr noundef null, i32 noundef %159, i32 noundef 0, i32 noundef %161, i32 noundef 0, ptr noundef nonnull %118, i32 noundef 0) + br label %188 + +183: ; preds = %181 + %184 = getelementptr inbounds i8, ptr %1, i64 16 + %185 = load ptr, ptr %184, align 8 + %186 = tail call i64 @_copy_from_user(ptr noundef nonnull %118, ptr noundef %185, i64 noundef %80) #17 + %187 = icmp eq i64 %186, 0 + br i1 %187, label %.split1, label %.thread20 + +.split1: ; preds = %183 + tail call fastcc void @snoop_urb(ptr noundef %5, ptr noundef null, i32 noundef %159, i32 noundef %79, i32 noundef %161, i32 noundef 0, ptr noundef nonnull %118, i32 noundef %79) + br label %188 + +188: ; preds = %.split1, %.split + %189 = getelementptr inbounds i8, ptr %5, i64 296 + tail call void @mutex_unlock(ptr noundef %189) #17 + %190 = call fastcc i32 @usbfs_start_wait_urb(ptr noundef nonnull %121, i32 noundef %161, ptr noundef nonnull %3) + tail call void @mutex_lock(ptr noundef %189) #17 + %191 = load i32, ptr %3, align 4 + tail call fastcc void @snoop_urb(ptr noundef %5, ptr noundef null, i32 noundef %159, i32 noundef %191, i32 noundef %190, i32 noundef 1, ptr noundef null, i32 noundef 0) + br label %192 + +192: ; preds = %188, %165 + %193 = phi i32 [ %168, %165 ], [ %191, %188 ] + %194 = phi i32 [ %167, %165 ], [ %190, %188 ] + %.fr = freeze i32 %194 + %195 = icmp slt i32 %.fr, 0 + %spec.select22 = select i1 %195, i32 %.fr, i32 %193 br label %.thread20 -.thread20: ; preds = %193, %176, %184, %175, %120, %117 - %197 = phi i32 [ -12, %120 ], [ -12, %117 ], [ -14, %184 ], [ -14, %175 ], [ %spec.select, %176 ], [ %spec.select22, %193 ] - %198 = phi ptr [ null, %120 ], [ null, %117 ], [ %121, %184 ], [ %121, %175 ], [ %121, %176 ], [ %121, %193 ] - tail call void @usb_free_urb(ptr noundef %198) #17 +.thread20: ; preds = %192, %175, %183, %174, %120, %117 + %196 = phi i32 [ -12, %120 ], [ -12, %117 ], [ -14, %183 ], [ -14, %174 ], [ %spec.select, %175 ], [ %spec.select22, %192 ] + %197 = phi ptr [ null, %120 ], [ null, %117 ], [ %121, %183 ], [ %121, %174 ], [ %121, %175 ], [ %121, %192 ] + tail call void @usb_free_urb(ptr noundef %197) #17 tail call void @kfree(ptr noundef %118) #17 - %199 = tail call i64 @_raw_spin_lock_irqsave(ptr noundef nonnull @usbfs_memory_usage_lock) #17 - %200 = load i64, ptr @usbfs_memory_usage, align 8 - %201 = tail call i64 @llvm.usub.sat.i64(i64 %200, i64 range(i64 184, 4294967480) %107) - store i64 %201, ptr @usbfs_memory_usage, align 8 + %198 = tail call i64 @_raw_spin_lock_irqsave(ptr noundef nonnull @usbfs_memory_usage_lock) #17 + %199 = load i64, ptr @usbfs_memory_usage, align 8 + %200 = tail call i64 @llvm.usub.sat.i64(i64 %199, i64 range(i64 184, 4294967480) %107) + store i64 %200, ptr @usbfs_memory_usage, align 8 br label %.thread.sink.split .thread.sink.split: ; preds = %106, %.thread20 - %.sink = phi i64 [ %199, %.thread20 ], [ %109, %106 ] - %.ph = phi i32 [ %197, %.thread20 ], [ -12, %106 ] + %.sink = phi i64 [ %198, %.thread20 ], [ %109, %106 ] + %.ph = phi i32 [ %196, %.thread20 ], [ -12, %106 ] tail call void @_raw_spin_unlock_irqrestore(ptr noundef nonnull @usbfs_memory_usage_lock, i64 noundef %.sink) #17 br label %.thread .thread: ; preds = %.loopexit23, %.thread.sink.split, %60, %53, %13, %9, %2, %101, %82, %.thread18, %68 - %202 = phi i32 [ %76, %68 ], [ -22, %.thread18 ], [ -22, %101 ], [ -22, %82 ], [ -2, %13 ], [ -3, %9 ], [ -22, %2 ], [ -22, %60 ], [ -113, %53 ], [ %.ph, %.thread.sink.split ], [ -2, %.loopexit23 ] + %201 = phi i32 [ %76, %68 ], [ -22, %.thread18 ], [ -22, %101 ], [ -22, %82 ], [ -2, %13 ], [ -3, %9 ], [ -22, %2 ], [ -22, %60 ], [ -113, %53 ], [ %.ph, %.thread.sink.split ], [ -2, %.loopexit23 ] call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %3) #17 - ret i32 %202 + ret i32 %201 } ; Function Attrs: null_pointer_is_valid @@ -7510,7 +7509,7 @@ declare i32 @llvm.umin.i32(i32, i32) #15 declare i64 @llvm.usub.sat.i64(i64, i64) #15 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.umax.i32(i32, i32) #16 +declare i32 @llvm.usub.sat.i32(i32, i32) #16 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i8 @llvm.umin.i8(i8, i8) #16 diff --git a/bench/linux/optimized/message.ll b/bench/linux/optimized/message.ll index 1c6926e81c4..56f8d5bf610 100644 --- a/bench/linux/optimized/message.ll +++ b/bench/linux/optimized/message.ll @@ -296,7 +296,7 @@ define dso_local i32 @usb_interrupt_msg(ptr noundef %0, i32 noundef %1, ptr noun %24 = load i8, ptr %23, align 1 %25 = and i8 %24, 3 %26 = icmp eq i8 %25, 3 - br i1 %26, label %27, label %54 + br i1 %26, label %27, label %53 27: ; preds = %22 %28 = and i32 %1, 1073741823 @@ -321,46 +321,45 @@ define dso_local i32 @usb_interrupt_msg(ptr noundef %0, i32 noundef %1, ptr noun %41 = icmp eq i32 %40, 3 %42 = icmp ugt i32 %40, 4 %43 = or i1 %41, %42 - br i1 %43, label %44, label %50 + br i1 %43, label %44, label %49 44: ; preds = %27 %45 = icmp ugt i8 %31, 15 - %46 = tail call i32 @llvm.umax.i32(i32 %32, i32 1) - %47 = add nsw i32 %46, -1 - %48 = shl nuw nsw i32 1, %47 - %49 = select i1 %45, i32 32768, i32 %48 - br label %50 - -50: ; preds = %44, %27 - %51 = phi i32 [ %49, %44 ], [ %32, %27 ] - %52 = getelementptr inbounds i8, ptr %20, i64 160 - store i32 %51, ptr %52, align 8 - %53 = getelementptr inbounds i8, ptr %20, i64 152 - store i32 -1, ptr %53, align 8 - br label %61 - -54: ; preds = %22 - %55 = getelementptr inbounds i8, ptr %20, i64 64 - store ptr %0, ptr %55, align 8 - %56 = getelementptr inbounds i8, ptr %20, i64 80 - store i32 %1, ptr %56, align 8 - %57 = getelementptr inbounds i8, ptr %20, i64 96 - store ptr %2, ptr %57, align 8 - %58 = getelementptr inbounds i8, ptr %20, i64 128 - store i32 %3, ptr %58, align 8 - %59 = getelementptr inbounds i8, ptr %20, i64 176 - store ptr @usb_api_blocking_completion, ptr %59, align 8 - %60 = getelementptr inbounds i8, ptr %20, i64 168 - store ptr null, ptr %60, align 8 - br label %61 + %46 = tail call i32 @llvm.usub.sat.i32(i32 %32, i32 1) + %47 = shl nuw nsw i32 1, %46 + %48 = select i1 %45, i32 32768, i32 %47 + br label %49 + +49: ; preds = %44, %27 + %50 = phi i32 [ %48, %44 ], [ %32, %27 ] + %51 = getelementptr inbounds i8, ptr %20, i64 160 + store i32 %50, ptr %51, align 8 + %52 = getelementptr inbounds i8, ptr %20, i64 152 + store i32 -1, ptr %52, align 8 + br label %60 -61: ; preds = %54, %50 - %62 = tail call fastcc i32 @usb_start_wait_urb(ptr noundef nonnull %20, i32 noundef %5, ptr noundef %4) +53: ; preds = %22 + %54 = getelementptr inbounds i8, ptr %20, i64 64 + store ptr %0, ptr %54, align 8 + %55 = getelementptr inbounds i8, ptr %20, i64 80 + store i32 %1, ptr %55, align 8 + %56 = getelementptr inbounds i8, ptr %20, i64 96 + store ptr %2, ptr %56, align 8 + %57 = getelementptr inbounds i8, ptr %20, i64 128 + store i32 %3, ptr %57, align 8 + %58 = getelementptr inbounds i8, ptr %20, i64 176 + store ptr @usb_api_blocking_completion, ptr %58, align 8 + %59 = getelementptr inbounds i8, ptr %20, i64 168 + store ptr null, ptr %59, align 8 + br label %60 + +60: ; preds = %53, %49 + %61 = tail call fastcc i32 @usb_start_wait_urb(ptr noundef nonnull %20, i32 noundef %5, ptr noundef %4) br label %usb_bulk_msg.exit -usb_bulk_msg.exit: ; preds = %6, %19, %61 - %63 = phi i32 [ %62, %61 ], [ -22, %6 ], [ -12, %19 ] - ret i32 %63 +usb_bulk_msg.exit: ; preds = %6, %19, %60 + %62 = phi i32 [ %61, %60 ], [ -22, %6 ], [ -12, %19 ] + ret i32 %62 } ; Function Attrs: fn_ret_thunk_extern nounwind null_pointer_is_valid @@ -377,19 +376,19 @@ define dso_local i32 @usb_bulk_msg(ptr noundef %0, i32 noundef %1, ptr noundef % %16 = icmp eq ptr %15, null %17 = icmp slt i32 %3, 0 %18 = or i1 %17, %16 - br i1 %18, label %63, label %19 + br i1 %18, label %62, label %19 19: ; preds = %6 %20 = tail call ptr @usb_alloc_urb(i32 noundef 0, i32 noundef 3264) #12 %21 = icmp eq ptr %20, null - br i1 %21, label %63, label %22 + br i1 %21, label %62, label %22 22: ; preds = %19 %23 = getelementptr inbounds i8, ptr %15, i64 3 %24 = load i8, ptr %23, align 1 %25 = and i8 %24, 3 %26 = icmp eq i8 %25, 3 - br i1 %26, label %27, label %54 + br i1 %26, label %27, label %53 27: ; preds = %22 %28 = and i32 %1, 1073741823 @@ -414,46 +413,45 @@ define dso_local i32 @usb_bulk_msg(ptr noundef %0, i32 noundef %1, ptr noundef % %41 = icmp eq i32 %40, 3 %42 = icmp ugt i32 %40, 4 %43 = or i1 %41, %42 - br i1 %43, label %44, label %50 + br i1 %43, label %44, label %49 44: ; preds = %27 %45 = icmp ugt i8 %31, 15 - %46 = tail call i32 @llvm.umax.i32(i32 %32, i32 1) - %47 = add nsw i32 %46, -1 - %48 = shl nuw nsw i32 1, %47 - %49 = select i1 %45, i32 32768, i32 %48 - br label %50 - -50: ; preds = %44, %27 - %51 = phi i32 [ %49, %44 ], [ %32, %27 ] - %52 = getelementptr inbounds i8, ptr %20, i64 160 - store i32 %51, ptr %52, align 8 - %53 = getelementptr inbounds i8, ptr %20, i64 152 - store i32 -1, ptr %53, align 8 - br label %61 - -54: ; preds = %22 - %55 = getelementptr inbounds i8, ptr %20, i64 64 - store ptr %0, ptr %55, align 8 - %56 = getelementptr inbounds i8, ptr %20, i64 80 - store i32 %1, ptr %56, align 8 - %57 = getelementptr inbounds i8, ptr %20, i64 96 - store ptr %2, ptr %57, align 8 - %58 = getelementptr inbounds i8, ptr %20, i64 128 - store i32 %3, ptr %58, align 8 - %59 = getelementptr inbounds i8, ptr %20, i64 176 - store ptr @usb_api_blocking_completion, ptr %59, align 8 - %60 = getelementptr inbounds i8, ptr %20, i64 168 - store ptr null, ptr %60, align 8 - br label %61 + %46 = tail call i32 @llvm.usub.sat.i32(i32 %32, i32 1) + %47 = shl nuw nsw i32 1, %46 + %48 = select i1 %45, i32 32768, i32 %47 + br label %49 -61: ; preds = %54, %50 - %62 = tail call fastcc i32 @usb_start_wait_urb(ptr noundef nonnull %20, i32 noundef %5, ptr noundef %4) - br label %63 +49: ; preds = %44, %27 + %50 = phi i32 [ %48, %44 ], [ %32, %27 ] + %51 = getelementptr inbounds i8, ptr %20, i64 160 + store i32 %50, ptr %51, align 8 + %52 = getelementptr inbounds i8, ptr %20, i64 152 + store i32 -1, ptr %52, align 8 + br label %60 -63: ; preds = %61, %19, %6 - %64 = phi i32 [ %62, %61 ], [ -22, %6 ], [ -12, %19 ] - ret i32 %64 +53: ; preds = %22 + %54 = getelementptr inbounds i8, ptr %20, i64 64 + store ptr %0, ptr %54, align 8 + %55 = getelementptr inbounds i8, ptr %20, i64 80 + store i32 %1, ptr %55, align 8 + %56 = getelementptr inbounds i8, ptr %20, i64 96 + store ptr %2, ptr %56, align 8 + %57 = getelementptr inbounds i8, ptr %20, i64 128 + store i32 %3, ptr %57, align 8 + %58 = getelementptr inbounds i8, ptr %20, i64 176 + store ptr @usb_api_blocking_completion, ptr %58, align 8 + %59 = getelementptr inbounds i8, ptr %20, i64 168 + store ptr null, ptr %59, align 8 + br label %60 + +60: ; preds = %53, %49 + %61 = tail call fastcc i32 @usb_start_wait_urb(ptr noundef nonnull %20, i32 noundef %5, ptr noundef %4) + br label %62 + +62: ; preds = %60, %19, %6 + %63 = phi i32 [ %61, %60 ], [ -22, %6 ], [ -12, %19 ] + ret i32 %63 } ; Function Attrs: null_pointer_is_valid @@ -4415,7 +4413,7 @@ declare i64 @llvm.umin.i64(i64, i64) #9 declare i32 @llvm.smin.i32(i32, i32) #9 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.umax.i32(i32, i32) #10 +declare i32 @llvm.usub.sat.i32(i32, i32) #10 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i32 @llvm.umin.i32(i32, i32) #10 diff --git a/bench/linux/optimized/transport.ll b/bench/linux/optimized/transport.ll index 6f205149b18..489cb2cde20 100644 --- a/bench/linux/optimized/transport.ll +++ b/bench/linux/optimized/transport.ll @@ -109,14 +109,14 @@ declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #1 define internal void @usb_stor_blocking_completion(ptr nocapture noundef readonly %0) #0 align 16 { %2 = getelementptr inbounds i8, ptr %0, i64 168 %3 = load ptr, ptr %2, align 8 - tail call void @complete(ptr noundef %3) #8 + tail call void @complete(ptr noundef %3) #9 ret void } ; Function Attrs: fn_ret_thunk_extern nounwind null_pointer_is_valid define internal fastcc i32 @usb_stor_msg_common(ptr noundef %0, i32 noundef %1) unnamed_addr #0 align 16 { %3 = alloca %struct.completion, align 8 - call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3) #8 + call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3) #9 %4 = getelementptr inbounds i8, ptr %0, i64 64 %5 = load volatile i64, ptr %4, align 8 %6 = and i64 %5, 4 @@ -127,7 +127,7 @@ define internal fastcc i32 @usb_stor_msg_common(ptr noundef %0, i32 noundef %1) call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %3, i8 0, i64 32, i1 false), !annotation !5 store i32 0, ptr %3, align 8 %9 = getelementptr inbounds i8, ptr %3, i64 8 - call void @__init_swait_queue_head(ptr noundef %9, ptr noundef nonnull @.str.1, ptr noundef nonnull @init_completion.__key) #8 + call void @__init_swait_queue_head(ptr noundef %9, ptr noundef nonnull @.str.1, ptr noundef nonnull @init_completion.__key) #9 %10 = getelementptr inbounds i8, ptr %0, i64 200 %11 = load ptr, ptr %10, align 8 %12 = getelementptr inbounds i8, ptr %11, i64 168 @@ -158,19 +158,19 @@ define internal fastcc i32 @usb_stor_msg_common(ptr noundef %0, i32 noundef %1) %29 = getelementptr inbounds i8, ptr %26, i64 104 store i64 %28, ptr %29, align 8 %30 = load ptr, ptr %10, align 8 - %31 = call i32 @usb_submit_urb(ptr noundef %30, i32 noundef 3072) #8 + %31 = call i32 @usb_submit_urb(ptr noundef %30, i32 noundef 3072) #9 %32 = icmp eq i32 %31, 0 br i1 %32, label %33, label %56 33: ; preds = %25 - call void asm sideeffect ".pushsection .smp_locks,\22a\22\0A.balign 4\0A.long 671f - .\0A.popsection\0A671:\0A\09lock; orb ${1:b},$0", "=*m,iq,*m,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i8) %4, i32 1, ptr elementtype(i8) %4) #8, !srcloc !6 + call void asm sideeffect ".pushsection .smp_locks,\22a\22\0A.balign 4\0A.long 671f - .\0A.popsection\0A671:\0A\09lock; orb ${1:b},$0", "=*m,iq,*m,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i8) %4, i32 1, ptr elementtype(i8) %4) #9, !srcloc !6 %34 = load volatile i64, ptr %4, align 8 %35 = and i64 %34, 4 %36 = icmp eq i64 %35, 0 br i1 %36, label %44, label %37 37: ; preds = %33 - %38 = call i8 asm sideeffect ".pushsection .smp_locks,\22a\22\0A.balign 4\0A.long 671f - .\0A.popsection\0A671:\0A\09lock; btrq $2, $0\0A\09/* output condition code c*/\0A", "=*m,={@ccc},Ir,*m,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i64) %4, i64 0, ptr elementtype(i64) %4) #8, !srcloc !7 + %38 = call i8 asm sideeffect ".pushsection .smp_locks,\22a\22\0A.balign 4\0A.long 671f - .\0A.popsection\0A671:\0A\09lock; btrq $2, $0\0A\09/* output condition code c*/\0A", "=*m,={@ccc},Ir,*m,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i64) %4, i64 0, ptr elementtype(i64) %4) #9, !srcloc !7 %39 = icmp ult i8 %38, 2 call void @llvm.assume(i1 %39) %40 = icmp eq i8 %38, 0 @@ -178,21 +178,21 @@ define internal fastcc i32 @usb_stor_msg_common(ptr noundef %0, i32 noundef %1) 41: ; preds = %37 %42 = load ptr, ptr %10, align 8 - %43 = call i32 @usb_unlink_urb(ptr noundef %42) #8 + %43 = call i32 @usb_unlink_urb(ptr noundef %42) #9 br label %44 44: ; preds = %41, %37, %33 %45 = icmp eq i32 %1, 0 %46 = sext i32 %1 to i64 %47 = select i1 %45, i64 9223372036854775807, i64 %46 - %48 = call i64 @wait_for_completion_interruptible_timeout(ptr noundef nonnull %3, i64 noundef %47) #8 - call void asm sideeffect ".pushsection .smp_locks,\22a\22\0A.balign 4\0A.long 671f - .\0A.popsection\0A671:\0A\09lock; andb ${1:b},$0", "=*m,iq,*m,~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i8) %4, i32 -2, ptr elementtype(i8) %4) #8, !srcloc !8 + %48 = call i64 @wait_for_completion_interruptible_timeout(ptr noundef nonnull %3, i64 noundef %47) #9 + call void asm sideeffect ".pushsection .smp_locks,\22a\22\0A.balign 4\0A.long 671f - .\0A.popsection\0A671:\0A\09lock; andb ${1:b},$0", "=*m,iq,*m,~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i8) %4, i32 -2, ptr elementtype(i8) %4) #9, !srcloc !8 %49 = icmp slt i64 %48, 1 br i1 %49, label %50, label %52 50: ; preds = %44 %51 = load ptr, ptr %10, align 8 - call void @usb_kill_urb(ptr noundef %51) #8 + call void @usb_kill_urb(ptr noundef %51) #9 br label %52 52: ; preds = %50, %44 @@ -203,7 +203,7 @@ define internal fastcc i32 @usb_stor_msg_common(ptr noundef %0, i32 noundef %1) 56: ; preds = %52, %25, %2 %57 = phi i32 [ %55, %52 ], [ -5, %2 ], [ %31, %25 ] - call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #8 + call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #9 ret i32 %57 } @@ -270,7 +270,7 @@ define dso_local i32 @usb_stor_clear_halt(ptr noundef %0, i32 noundef %1) #0 ali 41: ; preds = %38 %42 = load ptr, ptr %22, align 8 - tail call void @usb_reset_endpoint(ptr noundef %42, i32 noundef %6) #8 + tail call void @usb_reset_endpoint(ptr noundef %42, i32 noundef %6) #9 br label %43 43: ; preds = %41, %38 @@ -402,7 +402,7 @@ define internal fastcc range(i32 0, 5) i32 @interpret_urb_result(ptr noundef %0, 50: ; preds = %47 %51 = load ptr, ptr %31, align 8 - tail call void @usb_reset_endpoint(ptr noundef %51, i32 noundef %15) #8 + tail call void @usb_reset_endpoint(ptr noundef %51, i32 noundef %15) #9 br label %52 52: ; preds = %50, %47 @@ -461,7 +461,7 @@ define dso_local range(i32 0, 5) i32 @usb_stor_bulk_transfer_buf(ptr noundef %0, ; Function Attrs: fn_ret_thunk_extern nounwind null_pointer_is_valid define dso_local range(i32 0, 5) i32 @usb_stor_bulk_srb(ptr noundef %0, i32 noundef %1, ptr nocapture noundef initializes((240, 244)) %2) #0 align 16 { %4 = alloca i32, align 4 - call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %4) #8 + call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %4) #9 store i32 0, ptr %4, align 4, !annotation !5 %5 = getelementptr inbounds i8, ptr %2, i64 200 %6 = load ptr, ptr %5, align 8 @@ -475,7 +475,7 @@ define dso_local range(i32 0, 5) i32 @usb_stor_bulk_srb(ptr noundef %0, i32 noun %14 = sub i32 %12, %13 %15 = getelementptr inbounds i8, ptr %2, i64 240 store i32 %14, ptr %15, align 8 - call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #8 + call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #9 ret i32 %11 } @@ -492,31 +492,31 @@ define internal fastcc range(i32 0, 5) i32 @usb_stor_bulk_transfer_sglist(ptr no %13 = getelementptr inbounds i8, ptr %0, i64 32 %14 = load ptr, ptr %13, align 8 %15 = zext i32 %4 to i64 - %16 = tail call i32 @usb_sg_init(ptr noundef %12, ptr noundef %14, i32 noundef %1, i32 noundef 0, ptr noundef %2, i32 noundef %3, i64 noundef %15, i32 noundef 3072) #8 + %16 = tail call i32 @usb_sg_init(ptr noundef %12, ptr noundef %14, i32 noundef %1, i32 noundef 0, ptr noundef %2, i32 noundef %3, i64 noundef %15, i32 noundef 3072) #9 %17 = icmp eq i32 %16, 0 br i1 %17, label %18, label %39 18: ; preds = %11 - tail call void asm sideeffect ".pushsection .smp_locks,\22a\22\0A.balign 4\0A.long 671f - .\0A.popsection\0A671:\0A\09lock; orb ${1:b},$0", "=*m,iq,*m,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i8) %7, i32 2, ptr elementtype(i8) %7) #8, !srcloc !6 + tail call void asm sideeffect ".pushsection .smp_locks,\22a\22\0A.balign 4\0A.long 671f - .\0A.popsection\0A671:\0A\09lock; orb ${1:b},$0", "=*m,iq,*m,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i8) %7, i32 2, ptr elementtype(i8) %7) #9, !srcloc !6 %19 = load volatile i64, ptr %7, align 8 %20 = and i64 %19, 4 %21 = icmp eq i64 %20, 0 br i1 %21, label %27, label %22 22: ; preds = %18 - %23 = tail call i8 asm sideeffect ".pushsection .smp_locks,\22a\22\0A.balign 4\0A.long 671f - .\0A.popsection\0A671:\0A\09lock; btrq $2, $0\0A\09/* output condition code c*/\0A", "=*m,={@ccc},Ir,*m,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i64) %7, i64 1, ptr elementtype(i64) %7) #8, !srcloc !7 + %23 = tail call i8 asm sideeffect ".pushsection .smp_locks,\22a\22\0A.balign 4\0A.long 671f - .\0A.popsection\0A671:\0A\09lock; btrq $2, $0\0A\09/* output condition code c*/\0A", "=*m,={@ccc},Ir,*m,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i64) %7, i64 1, ptr elementtype(i64) %7) #9, !srcloc !7 %24 = icmp ult i8 %23, 2 tail call void @llvm.assume(i1 %24) %25 = icmp eq i8 %23, 0 br i1 %25, label %27, label %26 26: ; preds = %22 - tail call void @usb_sg_cancel(ptr noundef %12) #8 + tail call void @usb_sg_cancel(ptr noundef %12) #9 br label %27 27: ; preds = %26, %22, %18 - tail call void @usb_sg_wait(ptr noundef %12) #8 - tail call void asm sideeffect ".pushsection .smp_locks,\22a\22\0A.balign 4\0A.long 671f - .\0A.popsection\0A671:\0A\09lock; andb ${1:b},$0", "=*m,iq,*m,~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i8) %7, i32 -3, ptr elementtype(i8) %7) #8, !srcloc !8 + tail call void @usb_sg_wait(ptr noundef %12) #9 + tail call void asm sideeffect ".pushsection .smp_locks,\22a\22\0A.balign 4\0A.long 671f - .\0A.popsection\0A671:\0A\09lock; andb ${1:b},$0", "=*m,iq,*m,~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i8) %7, i32 -3, ptr elementtype(i8) %7) #9, !srcloc !8 %28 = load i32, ptr %12, align 8 %29 = icmp eq ptr %5, null br i1 %29, label %34, label %30 @@ -551,7 +551,7 @@ define internal fastcc range(i32 0, 5) i32 @usb_stor_bulk_transfer_sglist(ptr no ; Function Attrs: fn_ret_thunk_extern nounwind null_pointer_is_valid define dso_local range(i32 0, 5) i32 @usb_stor_bulk_transfer_sg(ptr noundef %0, i32 noundef %1, ptr noundef %2, i32 noundef %3, i32 noundef %4, ptr noundef writeonly %5) #0 align 16 { %7 = alloca i32, align 4 - call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %7) #8 + call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %7) #9 store i32 0, ptr %7, align 4, !annotation !5 %8 = icmp eq i32 %4, 0 br i1 %8, label %11, label %9 @@ -597,7 +597,7 @@ define dso_local range(i32 0, 5) i32 @usb_stor_bulk_transfer_sg(ptr noundef %0, br label %33 33: ; preds = %30, %27 - call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #8 + call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #9 ret i32 %28 } @@ -609,7 +609,7 @@ define dso_local void @usb_stor_invoke_transport(ptr noundef initializes((240, 2 store i32 0, ptr %5, align 8 %6 = getelementptr inbounds i8, ptr %1, i64 128 %7 = load ptr, ptr %6, align 8 - %8 = tail call i32 %7(ptr noundef %0, ptr noundef %1) #8 + %8 = tail call i32 %7(ptr noundef %0, ptr noundef %1) #9 %9 = getelementptr inbounds i8, ptr %1, i64 64 %10 = load volatile i64, ptr %9, align 8 %11 = and i64 %10, 32 @@ -765,9 +765,9 @@ thread-pre-split: ; preds = %61, %19 br i1 %104, label %205, label %105 105: ; preds = %101 - call void @llvm.lifetime.start.p0(i64 112, ptr nonnull %3) #8 + call void @llvm.lifetime.start.p0(i64 112, ptr nonnull %3) #9 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(112) %3, i8 0, i64 112, i1 false), !annotation !5 - call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #8 + call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #9 store i64 0, ptr %4, align 8, !annotation !5 %106 = and i64 %102, 32768 %107 = icmp eq i64 %106, 0 @@ -779,7 +779,7 @@ thread-pre-split: ; preds = %61, %19 112: ; preds = %133, %105 %113 = phi i32 [ %108, %105 ], [ 18, %133 ] - call void @scsi_eh_prep_cmnd(ptr noundef %0, ptr noundef nonnull %3, ptr noundef null, i32 noundef 0, i32 noundef %113) #8 + call void @scsi_eh_prep_cmnd(ptr noundef %0, ptr noundef nonnull %3, ptr noundef null, i32 noundef 0, i32 noundef %113) #9 %114 = load i8, ptr %109, align 4 switch i8 %114, label %115 [ i8 1, label %116 @@ -796,8 +796,8 @@ thread-pre-split: ; preds = %61, %19 store i32 0, ptr %5, align 8 %117 = load ptr, ptr %6, align 8 %118 = load ptr, ptr %111, align 8 - %119 = call i32 %117(ptr noundef %118, ptr noundef %1) #8 - call void @scsi_eh_restore_cmnd(ptr noundef %0, ptr noundef nonnull %3) #8 + %119 = call i32 %117(ptr noundef %118, ptr noundef %1) #9 + call void @scsi_eh_restore_cmnd(ptr noundef %0, ptr noundef nonnull %3) #9 %120 = load volatile i64, ptr %9, align 8 %121 = and i64 %120, 32 %122 = icmp eq i64 %121, 0 @@ -870,10 +870,10 @@ thread-pre-split: ; preds = %61, %19 161: ; preds = %157, %153, %149, %143 %162 = phi ptr [ %.pre21, %157 ], [ %145, %153 ], [ %145, %149 ], [ %145, %143 ] - %163 = call zeroext i1 @scsi_normalize_sense(ptr noundef %162, i32 noundef 96, ptr noundef nonnull %4) #8 + %163 = call zeroext i1 @scsi_normalize_sense(ptr noundef %162, i32 noundef 96, ptr noundef nonnull %4) #9 store i32 2, ptr %13, align 8 %164 = load ptr, ptr %144, align 8 - %165 = call ptr @scsi_sense_desc_find(ptr noundef %164, i32 noundef 96, i32 noundef 4) #8 + %165 = call ptr @scsi_sense_desc_find(ptr noundef %164, i32 noundef 96, i32 noundef 4) #9 %166 = icmp eq ptr %165, null br i1 %166, label %169, label %167 @@ -941,19 +941,19 @@ thread-pre-split: ; preds = %61, %19 br label %.thread .thread: ; preds = %193, %193, %191, %200, %202, %172 - call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #8 - call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %3) #8 + call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #9 + call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %3) #9 %.pre22 = load i64, ptr %75, align 8 br label %205 .thread9: ; preds = %125, %123, %139 - call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #8 - call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %3) #8 + call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #9 + call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %3) #9 br label %308 204: ; preds = %139 - call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #8 - call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %3) #8 + call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #9 + call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %3) #9 br label %402 205: ; preds = %.thread, %101 @@ -974,7 +974,7 @@ thread-pre-split: ; preds = %61, %19 215: ; preds = %212 %216 = getelementptr i8, ptr %1, i64 65 - call void asm sideeffect ".pushsection .smp_locks,\22a\22\0A.balign 4\0A.long 671f - .\0A.popsection\0A671:\0A\09lock; orb ${1:b},$0", "=*m,iq,*m,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i8) %216, i32 1, ptr elementtype(i8) %216) #8, !srcloc !6 + call void asm sideeffect ".pushsection .smp_locks,\22a\22\0A.balign 4\0A.long 671f - .\0A.popsection\0A671:\0A\09lock; orb ${1:b},$0", "=*m,iq,*m,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i8) %216, i32 1, ptr elementtype(i8) %216) #9, !srcloc !6 br label %223 217: ; preds = %212 @@ -985,8 +985,8 @@ thread-pre-split: ; preds = %61, %19 221: ; preds = %217 %222 = getelementptr i8, ptr %1, i64 65 - call void asm sideeffect ".pushsection .smp_locks,\22a\22\0A.balign 4\0A.long 671f - .\0A.popsection\0A671:\0A\09lock; andb ${1:b},$0", "=*m,iq,*m,~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i8) %222, i32 -2, ptr elementtype(i8) %222) #8, !srcloc !8 - call void asm sideeffect ".pushsection .smp_locks,\22a\22\0A.balign 4\0A.long 671f - .\0A.popsection\0A671:\0A\09lock; orb ${1:b},$0", "=*m,iq,*m,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i8) %9, i32 128, ptr elementtype(i8) %9) #8, !srcloc !6 + call void asm sideeffect ".pushsection .smp_locks,\22a\22\0A.balign 4\0A.long 671f - .\0A.popsection\0A671:\0A\09lock; andb ${1:b},$0", "=*m,iq,*m,~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i8) %222, i32 -2, ptr elementtype(i8) %222) #9, !srcloc !8 + call void asm sideeffect ".pushsection .smp_locks,\22a\22\0A.balign 4\0A.long 671f - .\0A.popsection\0A671:\0A\09lock; orb ${1:b},$0", "=*m,iq,*m,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i8) %9, i32 128, ptr elementtype(i8) %9) #9, !srcloc !6 br label %223 223: ; preds = %221, %217, %215 @@ -996,7 +996,7 @@ thread-pre-split: ; preds = %61, %19 br i1 %226, label %230, label %227 227: ; preds = %223 - call void asm sideeffect ".pushsection .smp_locks,\22a\22\0A.balign 4\0A.long 671f - .\0A.popsection\0A671:\0A\09lock; andb ${1:b},$0", "=*m,iq,*m,~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i8) %9, i32 -129, ptr elementtype(i8) %9) #8, !srcloc !8 + call void asm sideeffect ".pushsection .smp_locks,\22a\22\0A.balign 4\0A.long 671f - .\0A.popsection\0A671:\0A\09lock; andb ${1:b},$0", "=*m,iq,*m,~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i8) %9, i32 -129, ptr elementtype(i8) %9) #9, !srcloc !8 store i32 786432, ptr %13, align 8 %228 = getelementptr inbounds i8, ptr %0, i64 248 %229 = load ptr, ptr %228, align 8 @@ -1129,12 +1129,12 @@ thread-pre-split10: ; preds = %255, %279, %283, %2 308: ; preds = %.thread9, %306 %309 = getelementptr i8, ptr %1, i64 -2008 %310 = load ptr, ptr %309, align 8 - call void @_raw_spin_lock_irq(ptr noundef %310) #8 - call void asm sideeffect ".pushsection .smp_locks,\22a\22\0A.balign 4\0A.long 671f - .\0A.popsection\0A671:\0A\09lock; orb ${1:b},$0", "=*m,iq,*m,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i8) %9, i32 16, ptr elementtype(i8) %9) #8, !srcloc !6 - call void asm sideeffect ".pushsection .smp_locks,\22a\22\0A.balign 4\0A.long 671f - .\0A.popsection\0A671:\0A\09lock; andb ${1:b},$0", "=*m,iq,*m,~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i8) %9, i32 -5, ptr elementtype(i8) %9) #8, !srcloc !8 + call void @_raw_spin_lock_irq(ptr noundef %310) #9 + call void asm sideeffect ".pushsection .smp_locks,\22a\22\0A.balign 4\0A.long 671f - .\0A.popsection\0A671:\0A\09lock; orb ${1:b},$0", "=*m,iq,*m,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i8) %9, i32 16, ptr elementtype(i8) %9) #9, !srcloc !6 + call void asm sideeffect ".pushsection .smp_locks,\22a\22\0A.balign 4\0A.long 671f - .\0A.popsection\0A671:\0A\09lock; andb ${1:b},$0", "=*m,iq,*m,~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i8) %9, i32 -5, ptr elementtype(i8) %9) #9, !srcloc !8 %311 = load ptr, ptr %309, align 8 - call void @_raw_spin_unlock_irq(ptr noundef %311) #8 - call void @mutex_unlock(ptr noundef %1) #8 + call void @_raw_spin_unlock_irq(ptr noundef %311) #9 + call void @mutex_unlock(ptr noundef %1) #9 %312 = getelementptr inbounds i8, ptr %1, i64 32 %313 = load ptr, ptr %312, align 8 %314 = getelementptr inbounds i8, ptr %313, i64 1268 @@ -1146,7 +1146,7 @@ thread-pre-split10: ; preds = %255, %279, %283, %2 318: ; preds = %308 %319 = getelementptr inbounds i8, ptr %1, i64 40 %320 = load ptr, ptr %319, align 8 - %321 = call i32 @usb_lock_device_for_reset(ptr noundef %313, ptr noundef %320) #8 + %321 = call i32 @usb_lock_device_for_reset(ptr noundef %313, ptr noundef %320) #9 %322 = icmp slt i32 %321, 0 br i1 %322, label %335, label %323 @@ -1158,36 +1158,36 @@ thread-pre-split10: ; preds = %255, %279, %283, %2 br i1 %326, label %328, label %333 328: ; preds = %323 - %329 = call i32 @usb_reset_device(ptr noundef %327) #8 + %329 = call i32 @usb_reset_device(ptr noundef %327) #9 %330 = icmp slt i32 %329, 0 %331 = load ptr, ptr %312, align 8 %332 = getelementptr inbounds i8, ptr %331, i64 296 - call void @mutex_unlock(ptr noundef %332) #8 - call void @mutex_lock(ptr noundef %1) #8 + call void @mutex_unlock(ptr noundef %332) #9 + call void @mutex_lock(ptr noundef %1) #9 br i1 %330, label %336, label %342 333: ; preds = %323 %334 = getelementptr inbounds i8, ptr %327, i64 296 - call void @mutex_unlock(ptr noundef %334) #8 + call void @mutex_unlock(ptr noundef %334) #9 br label %335 335: ; preds = %333, %318, %308 - call void @mutex_lock(ptr noundef %1) #8 + call void @mutex_lock(ptr noundef %1) #9 br label %336 336: ; preds = %335, %328 %337 = load ptr, ptr %309, align 8 - call void @_raw_spin_lock_irq(ptr noundef %337) #8 - call void @usb_stor_report_device_reset(ptr noundef %1) #8 + call void @_raw_spin_lock_irq(ptr noundef %337) #9 + call void @usb_stor_report_device_reset(ptr noundef %1) #9 %338 = load ptr, ptr %309, align 8 - call void @_raw_spin_unlock_irq(ptr noundef %338) #8 + call void @_raw_spin_unlock_irq(ptr noundef %338) #9 %339 = getelementptr inbounds i8, ptr %1, i64 136 %340 = load ptr, ptr %339, align 8 - %341 = call i32 %340(ptr noundef %1) #8 + %341 = call i32 %340(ptr noundef %1) #9 br label %342 342: ; preds = %336, %328 - call void asm sideeffect ".pushsection .smp_locks,\22a\22\0A.balign 4\0A.long 671f - .\0A.popsection\0A671:\0A\09lock; andb ${1:b},$0", "=*m,iq,*m,~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i8) %9, i32 -17, ptr elementtype(i8) %9) #8, !srcloc !8 + call void asm sideeffect ".pushsection .smp_locks,\22a\22\0A.balign 4\0A.long 671f - .\0A.popsection\0A671:\0A\09lock; andb ${1:b},$0", "=*m,iq,*m,~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i8) %9, i32 -17, ptr elementtype(i8) %9) #9, !srcloc !8 %343 = getelementptr inbounds i8, ptr %1, i64 528 %344 = load i32, ptr %343, align 8 %345 = icmp eq i32 %344, 0 @@ -1319,7 +1319,7 @@ define dso_local i32 @usb_stor_port_reset(ptr noundef %0) local_unnamed_addr #0 8: ; preds = %1 %9 = getelementptr inbounds i8, ptr %0, i64 40 %10 = load ptr, ptr %9, align 8 - %11 = tail call i32 @usb_lock_device_for_reset(ptr noundef %3, ptr noundef %10) #8 + %11 = tail call i32 @usb_lock_device_for_reset(ptr noundef %3, ptr noundef %10) #9 %12 = icmp slt i32 %11, 0 br i1 %12, label %25, label %13 @@ -1332,14 +1332,14 @@ define dso_local i32 @usb_stor_port_reset(ptr noundef %0) local_unnamed_addr #0 18: ; preds = %13 %19 = load ptr, ptr %2, align 8 - %20 = tail call i32 @usb_reset_device(ptr noundef %19) #8 + %20 = tail call i32 @usb_reset_device(ptr noundef %19) #9 br label %21 21: ; preds = %18, %13 %22 = phi i32 [ %20, %18 ], [ -5, %13 ] %23 = load ptr, ptr %2, align 8 %24 = getelementptr inbounds i8, ptr %23, i64 296 - tail call void @mutex_unlock(ptr noundef %24) #8 + tail call void @mutex_unlock(ptr noundef %24) #9 br label %25 25: ; preds = %21, %8, %1 @@ -1356,7 +1356,7 @@ declare dso_local void @usb_stor_report_device_reset(ptr noundef) local_unnamed_ ; Function Attrs: fn_ret_thunk_extern nounwind null_pointer_is_valid define dso_local void @usb_stor_stop_transport(ptr noundef %0) local_unnamed_addr #0 align 16 { %2 = getelementptr inbounds i8, ptr %0, i64 64 - %3 = tail call i8 asm sideeffect ".pushsection .smp_locks,\22a\22\0A.balign 4\0A.long 671f - .\0A.popsection\0A671:\0A\09lock; btrq $2, $0\0A\09/* output condition code c*/\0A", "=*m,={@ccc},Ir,*m,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i64) %2, i64 0, ptr elementtype(i64) %2) #8, !srcloc !7 + %3 = tail call i8 asm sideeffect ".pushsection .smp_locks,\22a\22\0A.balign 4\0A.long 671f - .\0A.popsection\0A671:\0A\09lock; btrq $2, $0\0A\09/* output condition code c*/\0A", "=*m,={@ccc},Ir,*m,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i64) %2, i64 0, ptr elementtype(i64) %2) #9, !srcloc !7 %4 = icmp ult i8 %3, 2 tail call void @llvm.assume(i1 %4) %5 = icmp eq i8 %3, 0 @@ -1365,11 +1365,11 @@ define dso_local void @usb_stor_stop_transport(ptr noundef %0) local_unnamed_add 6: ; preds = %1 %7 = getelementptr inbounds i8, ptr %0, i64 200 %8 = load ptr, ptr %7, align 8 - %9 = tail call i32 @usb_unlink_urb(ptr noundef %8) #8 + %9 = tail call i32 @usb_unlink_urb(ptr noundef %8) #9 br label %10 10: ; preds = %6, %1 - %11 = tail call i8 asm sideeffect ".pushsection .smp_locks,\22a\22\0A.balign 4\0A.long 671f - .\0A.popsection\0A671:\0A\09lock; btrq $2, $0\0A\09/* output condition code c*/\0A", "=*m,={@ccc},Ir,*m,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i64) %2, i64 1, ptr elementtype(i64) %2) #8, !srcloc !7 + %11 = tail call i8 asm sideeffect ".pushsection .smp_locks,\22a\22\0A.balign 4\0A.long 671f - .\0A.popsection\0A671:\0A\09lock; btrq $2, $0\0A\09/* output condition code c*/\0A", "=*m,={@ccc},Ir,*m,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i64) %2, i64 1, ptr elementtype(i64) %2) #9, !srcloc !7 %12 = icmp ult i8 %11, 2 tail call void @llvm.assume(i1 %12) %13 = icmp eq i8 %11, 0 @@ -1377,7 +1377,7 @@ define dso_local void @usb_stor_stop_transport(ptr noundef %0) local_unnamed_add 14: ; preds = %10 %15 = getelementptr inbounds i8, ptr %0, i64 216 - tail call void @usb_sg_cancel(ptr noundef %15) #8 + tail call void @usb_sg_cancel(ptr noundef %15) #9 br label %16 16: ; preds = %14, %10 @@ -1450,12 +1450,12 @@ define dso_local noundef range(i32 0, 4) i32 @usb_stor_CB_transport(ptr nocaptur %45 = load i32, ptr %44, align 4 %46 = tail call fastcc i32 @interpret_urb_result(ptr noundef %1, i32 noundef %13, i32 noundef %34, i32 noundef %42, i32 noundef %45), !range !9 switch i32 %46, label %47 [ - i32 2, label %152 + i32 2, label %151 i32 0, label %48 ] 47: ; preds = %2 - br label %152 + br label %151 48: ; preds = %2 %49 = icmp eq i32 %5, 0 @@ -1468,7 +1468,7 @@ define dso_local noundef range(i32 0, 4) i32 @usb_stor_CB_transport(ptr nocaptur %54 = select i1 %53, i64 76, i64 72 %55 = getelementptr inbounds i8, ptr %1, i64 %54 %56 = load i32, ptr %55, align 4 - call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %3) #8 + call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %3) #9 store i32 0, ptr %3, align 4, !annotation !5 %57 = getelementptr inbounds i8, ptr %0, i64 200 %58 = load ptr, ptr %57, align 8 @@ -1481,20 +1481,20 @@ define dso_local noundef range(i32 0, 4) i32 @usb_stor_CB_transport(ptr nocaptur %65 = sub i32 %63, %64 %66 = getelementptr inbounds i8, ptr %0, i64 240 store i32 %65, ptr %66, align 8 - call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %3) #8 + call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %3) #9 %67 = icmp eq i32 %62, 2 - br i1 %67, label %152, label %68 + br i1 %67, label %151, label %68 68: ; preds = %50 %69 = icmp samesign ugt i32 %62, 2 - br i1 %69, label %152, label %70 + br i1 %69, label %151, label %70 70: ; preds = %68, %48 %71 = phi i32 [ %56, %68 ], [ 0, %48 ] %72 = getelementptr inbounds i8, ptr %1, i64 117 %73 = load i8, ptr %72, align 1 %74 = icmp eq i8 %73, 0 - br i1 %74, label %75, label %152 + br i1 %74, label %75, label %151 75: ; preds = %70 %76 = load ptr, ptr %6, align 8 @@ -1544,78 +1544,77 @@ define dso_local noundef range(i32 0, 4) i32 @usb_stor_CB_transport(ptr nocaptur %110 = icmp eq i32 %109, 3 %111 = icmp ugt i32 %109, 4 %112 = or i1 %110, %111 - br i1 %112, label %113, label %119 + br i1 %112, label %113, label %118 113: ; preds = %94 %114 = icmp ugt i8 %100, 15 - %115 = call i32 @llvm.umax.i32(i32 %101, i32 1) - %116 = add nsw i32 %115, -1 - %117 = shl nuw nsw i32 1, %116 - %118 = select i1 %114, i32 32768, i32 %117 - br label %119 - -119: ; preds = %113, %94 - %120 = phi i32 [ %118, %113 ], [ %101, %94 ] - %121 = getelementptr inbounds i8, ptr %98, i64 160 - store i32 %120, ptr %121, align 8 - %122 = getelementptr inbounds i8, ptr %98, i64 152 - store i32 -1, ptr %122, align 8 - %123 = call fastcc i32 @usb_stor_msg_common(ptr noundef %1, i32 noundef 0) - %124 = load ptr, ptr %29, align 8 - %125 = getelementptr inbounds i8, ptr %124, i64 132 - %126 = load i32, ptr %125, align 4 - %127 = call fastcc i32 @interpret_urb_result(ptr noundef %1, i32 noundef %78, i32 noundef 2, i32 noundef %123, i32 noundef %126), !range !9 - %128 = icmp eq i32 %127, 0 - br i1 %128, label %129, label %152 - -129: ; preds = %119 - %130 = getelementptr inbounds i8, ptr %1, i64 116 - %131 = load i8, ptr %130, align 4 - %132 = icmp eq i8 %131, 4 - br i1 %132, label %133, label %139 - -133: ; preds = %129 - %134 = load i8, ptr %8, align 4 - switch i8 %134, label %135 [ - i8 3, label %152 - i8 18, label %152 + %115 = call i32 @llvm.usub.sat.i32(i32 %101, i32 1) + %116 = shl nuw nsw i32 1, %115 + %117 = select i1 %114, i32 32768, i32 %116 + br label %118 + +118: ; preds = %113, %94 + %119 = phi i32 [ %117, %113 ], [ %101, %94 ] + %120 = getelementptr inbounds i8, ptr %98, i64 160 + store i32 %119, ptr %120, align 8 + %121 = getelementptr inbounds i8, ptr %98, i64 152 + store i32 -1, ptr %121, align 8 + %122 = call fastcc i32 @usb_stor_msg_common(ptr noundef %1, i32 noundef 0) + %123 = load ptr, ptr %29, align 8 + %124 = getelementptr inbounds i8, ptr %123, i64 132 + %125 = load i32, ptr %124, align 4 + %126 = call fastcc i32 @interpret_urb_result(ptr noundef %1, i32 noundef %78, i32 noundef 2, i32 noundef %122, i32 noundef %125), !range !9 + %127 = icmp eq i32 %126, 0 + br i1 %127, label %128, label %151 + +128: ; preds = %118 + %129 = getelementptr inbounds i8, ptr %1, i64 116 + %130 = load i8, ptr %129, align 4 + %131 = icmp eq i8 %130, 4 + br i1 %131, label %132, label %138 + +132: ; preds = %128 + %133 = load i8, ptr %8, align 4 + switch i8 %133, label %134 [ + i8 3, label %151 + i8 18, label %151 ] -135: ; preds = %133 - %136 = load ptr, ptr %6, align 8 - %137 = load i8, ptr %136, align 1 - %138 = icmp eq i8 %137, 0 - br i1 %138, label %152, label %148 - -139: ; preds = %129 - %140 = load ptr, ptr %6, align 8 - %141 = load i8, ptr %140, align 1 - %142 = icmp eq i8 %141, 0 - br i1 %142, label %143, label %148 - -143: ; preds = %139 - %144 = getelementptr i8, ptr %140, i64 1 - %145 = load i8, ptr %144, align 1 - %146 = and i8 %145, 15 - switch i8 %146, label %147 [ - i8 0, label %152 - i8 1, label %148 +134: ; preds = %132 + %135 = load ptr, ptr %6, align 8 + %136 = load i8, ptr %135, align 1 + %137 = icmp eq i8 %136, 0 + br i1 %137, label %151, label %147 + +138: ; preds = %128 + %139 = load ptr, ptr %6, align 8 + %140 = load i8, ptr %139, align 1 + %141 = icmp eq i8 %140, 0 + br i1 %141, label %142, label %147 + +142: ; preds = %138 + %143 = getelementptr i8, ptr %139, i64 1 + %144 = load i8, ptr %143, align 1 + %145 = and i8 %144, 15 + switch i8 %145, label %146 [ + i8 0, label %151 + i8 1, label %147 ] -147: ; preds = %143 - br label %152 +146: ; preds = %142 + br label %151 -148: ; preds = %143, %139, %135 - %149 = icmp eq i32 %71, 0 - br i1 %149, label %152, label %150 +147: ; preds = %142, %138, %134 + %148 = icmp eq i32 %71, 0 + br i1 %148, label %151, label %149 -150: ; preds = %148 - %151 = call i32 @usb_stor_clear_halt(ptr noundef %1, i32 noundef %71) - br label %152 +149: ; preds = %147 + %150 = call i32 @usb_stor_clear_halt(ptr noundef %1, i32 noundef %71) + br label %151 -152: ; preds = %150, %148, %147, %143, %135, %133, %133, %119, %70, %68, %50, %47, %2 - %153 = phi i32 [ 3, %47 ], [ 3, %147 ], [ 1, %2 ], [ 1, %50 ], [ 3, %68 ], [ 0, %70 ], [ 3, %119 ], [ 0, %133 ], [ 0, %133 ], [ 0, %135 ], [ 0, %143 ], [ 1, %150 ], [ 1, %148 ] - ret i32 %153 +151: ; preds = %149, %147, %146, %142, %134, %132, %132, %118, %70, %68, %50, %47, %2 + %152 = phi i32 [ 3, %47 ], [ 3, %146 ], [ 1, %2 ], [ 1, %50 ], [ 3, %68 ], [ 0, %70 ], [ 3, %118 ], [ 0, %132 ], [ 0, %132 ], [ 0, %134 ], [ 0, %142 ], [ 1, %149 ], [ 1, %147 ] + ret i32 %152 } ; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) @@ -1692,7 +1691,7 @@ define dso_local range(i32 0, 256) i32 @usb_stor_Bulk_max_lun(ptr noundef %0) lo %47 = getelementptr inbounds i8, ptr %0, i64 40 %48 = load ptr, ptr %47, align 8 %49 = getelementptr inbounds i8, ptr %48, i64 80 - tail call void (ptr, ptr, ...) @_dev_info(ptr noundef %49, ptr noundef nonnull @.str, i32 noundef %44) #9 + tail call void (ptr, ptr, ...) @_dev_info(ptr noundef %49, ptr noundef nonnull @.str, i32 noundef %44) #10 br label %50 50: ; preds = %46, %41, %38 @@ -1807,7 +1806,7 @@ define dso_local noundef range(i32 0, 4) i32 @usb_stor_Bulk_transport(ptr nounde br i1 %74, label %76, label %75, !prof !11 75: ; preds = %71 - tail call void @usleep_range_state(i64 noundef 125, i64 noundef 150, i32 noundef 2) #8 + tail call void @usleep_range_state(i64 noundef 125, i64 noundef 150, i32 noundef 2) #9 br label %76 76: ; preds = %75, %71 @@ -1820,7 +1819,7 @@ define dso_local noundef range(i32 0, 4) i32 @usb_stor_Bulk_transport(ptr nounde %81 = getelementptr inbounds i8, ptr %1, i64 76 %82 = select i1 %80, ptr %81, ptr %53 %83 = load i32, ptr %82, align 4 - call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %3) #8 + call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %3) #9 store i32 0, ptr %3, align 4, !annotation !5 %84 = getelementptr inbounds i8, ptr %0, i64 200 %85 = load ptr, ptr %84, align 8 @@ -1833,7 +1832,7 @@ define dso_local noundef range(i32 0, 4) i32 @usb_stor_Bulk_transport(ptr nounde %92 = sub i32 %90, %91 %93 = getelementptr inbounds i8, ptr %0, i64 240 store i32 %92, ptr %93, align 8 - call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %3) #8 + call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %3) #9 switch i32 %89, label %.thread6.fold.split [ i32 4, label %.thread7 i32 3, label %.thread6 @@ -1849,11 +1848,11 @@ define dso_local noundef range(i32 0, 4) i32 @usb_stor_Bulk_transport(ptr nounde br i1 %99, label %100, label %.thread6 100: ; preds = %94 - call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #8 + call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #9 store ptr null, ptr %4, align 8 - call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #8 + call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #9 store i32 0, ptr %5, align 4 - %101 = call i32 @usb_stor_access_xfer_buf(ptr noundef %7, i32 noundef 13, ptr noundef %0, ptr noundef nonnull %4, ptr noundef nonnull %5, i32 noundef 1) #8 + %101 = call i32 @usb_stor_access_xfer_buf(ptr noundef %7, i32 noundef 13, ptr noundef %0, ptr noundef nonnull %4, ptr noundef nonnull %5, i32 noundef 1) #9 %102 = icmp eq i32 %101, 13 br i1 %102, label %103, label %.thread4 @@ -1863,14 +1862,14 @@ define dso_local noundef range(i32 0, 4) i32 @usb_stor_Bulk_transport(ptr nounde br i1 %105, label %106, label %.thread4 .thread4: ; preds = %103, %100 - call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #8 - call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #8 + call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #9 + call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #9 br label %.thread6 106: ; preds = %103 store i32 %9, ptr %93, align 8 - call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #8 - call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #8 + call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #9 + call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #9 br label %162 .thread6.fold.split: ; preds = %78 @@ -2148,18 +2147,18 @@ define internal fastcc i32 @usb_stor_reset_common(ptr noundef %0, i8 noundef zer br i1 %45, label %154, label %46 46: ; preds = %43 - %47 = tail call i32 @__SCT__might_resched() #8 + %47 = tail call i32 @__SCT__might_resched() #9 %48 = load volatile i64, ptr %7, align 8 %49 = and i64 %48, 8 %50 = icmp eq i64 %49, 0 br i1 %50, label %51, label %70 51: ; preds = %46 - call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %6) #8 + call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %6) #9 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %6, i8 0, i64 40, i1 false), !annotation !5 - call void @init_wait_entry(ptr noundef nonnull %6, i32 noundef 0) #8 + call void @init_wait_entry(ptr noundef nonnull %6, i32 noundef 0) #9 %52 = getelementptr inbounds i8, ptr %0, i64 392 - %53 = call i64 @prepare_to_wait_event(ptr noundef %52, ptr noundef nonnull %6, i32 noundef 1) #8 + %53 = call i64 @prepare_to_wait_event(ptr noundef %52, ptr noundef nonnull %6, i32 noundef 1) #9 %54 = load volatile i64, ptr %7, align 8 %55 = and i64 %54, 8 %.not = icmp eq i64 %55, 0 @@ -2172,8 +2171,8 @@ define internal fastcc i32 @usb_stor_reset_common(ptr noundef %0, i8 noundef zer br i1 %58, label %59, label %.thread6 59: ; preds = %.lr.ph - %60 = call i64 @schedule_timeout(i64 noundef %56) #8 - %61 = call i64 @prepare_to_wait_event(ptr noundef %52, ptr noundef nonnull %6, i32 noundef 1) #8 + %60 = call i64 @schedule_timeout(i64 noundef %56) #9 + %61 = call i64 @prepare_to_wait_event(ptr noundef %52, ptr noundef nonnull %6, i32 noundef 1) #9 %62 = load volatile i64, ptr %7, align 8 %63 = and i64 %62, 8 %64 = icmp ne i64 %63, 0 @@ -2185,11 +2184,11 @@ define internal fastcc i32 @usb_stor_reset_common(ptr noundef %0, i8 noundef zer br i1 %69, label %._crit_edge, label %.lr.ph ._crit_edge: ; preds = %59, %51 - call void @finish_wait(ptr noundef %52, ptr noundef nonnull %6) #8 + call void @finish_wait(ptr noundef %52, ptr noundef nonnull %6) #9 br label %.thread6 .thread6: ; preds = %.lr.ph, %._crit_edge - call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %6) #8 + call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %6) #9 br label %70 70: ; preds = %.thread6, %46 @@ -2255,7 +2254,7 @@ define internal fastcc i32 @usb_stor_reset_common(ptr noundef %0, i8 noundef zer 111: ; preds = %108 %112 = load ptr, ptr %26, align 8 - call void @usb_reset_endpoint(ptr noundef %112, i32 noundef %80) #8 + call void @usb_reset_endpoint(ptr noundef %112, i32 noundef %80) #9 br label %113 113: ; preds = %111, %108 @@ -2315,7 +2314,7 @@ define internal fastcc i32 @usb_stor_reset_common(ptr noundef %0, i8 noundef zer 150: ; preds = %147 %151 = load ptr, ptr %26, align 8 - call void @usb_reset_endpoint(ptr noundef %151, i32 noundef %119) #8 + call void @usb_reset_endpoint(ptr noundef %151, i32 noundef %119) #9 br label %152 152: ; preds = %150, %147 @@ -2399,6 +2398,9 @@ declare i32 @llvm.umax.i32(i32, i32) #7 ; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i16 @llvm.umin.i16(i16, i16) #7 +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare i32 @llvm.usub.sat.i32(i32, i32) #8 + attributes #0 = { fn_ret_thunk_extern nounwind null_pointer_is_valid "min-legal-vector-width"="0" "no-jump-tables"="true" "no-trapping-math"="true" "patchable-function-entry"="0" "patchable-function-prefix"="16" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+retpoline-external-thunk,+retpoline-indirect-branches,+retpoline-indirect-calls,-3dnow,-3dnowa,-aes,-avx,-avx10.1-256,-avx10.1-512,-avx2,-avx512bf16,-avx512bitalg,-avx512bw,-avx512cd,-avx512dq,-avx512er,-avx512f,-avx512fp16,-avx512ifma,-avx512pf,-avx512vbmi,-avx512vbmi2,-avx512vl,-avx512vnni,-avx512vp2intersect,-avx512vpopcntdq,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-f16c,-fma,-fma4,-gfni,-kl,-mmx,-pclmul,-sha,-sha512,-sm3,-sm4,-sse,-sse2,-sse3,-sse4.1,-sse4.2,-sse4a,-ssse3,-vaes,-vpclmulqdq,-widekl,-x87,-xop" "tune-cpu"="generic" } attributes #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } attributes #2 = { null_pointer_is_valid "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+retpoline-external-thunk,+retpoline-indirect-branches,+retpoline-indirect-calls,-3dnow,-3dnowa,-aes,-avx,-avx10.1-256,-avx10.1-512,-avx2,-avx512bf16,-avx512bitalg,-avx512bw,-avx512cd,-avx512dq,-avx512er,-avx512f,-avx512fp16,-avx512ifma,-avx512pf,-avx512vbmi,-avx512vbmi2,-avx512vl,-avx512vnni,-avx512vp2intersect,-avx512vpopcntdq,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-f16c,-fma,-fma4,-gfni,-kl,-mmx,-pclmul,-sha,-sha512,-sm3,-sm4,-sse,-sse2,-sse3,-sse4.1,-sse4.2,-sse4a,-ssse3,-vaes,-vpclmulqdq,-widekl,-x87,-xop" "tune-cpu"="generic" } @@ -2407,8 +2409,9 @@ attributes #4 = { mustprogress nocallback nofree nounwind willreturn memory(argm attributes #5 = { cold null_pointer_is_valid "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+retpoline-external-thunk,+retpoline-indirect-branches,+retpoline-indirect-calls,-3dnow,-3dnowa,-aes,-avx,-avx10.1-256,-avx10.1-512,-avx2,-avx512bf16,-avx512bitalg,-avx512bw,-avx512cd,-avx512dq,-avx512er,-avx512f,-avx512fp16,-avx512ifma,-avx512pf,-avx512vbmi,-avx512vbmi2,-avx512vl,-avx512vnni,-avx512vp2intersect,-avx512vpopcntdq,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-f16c,-fma,-fma4,-gfni,-kl,-mmx,-pclmul,-sha,-sha512,-sm3,-sm4,-sse,-sse2,-sse3,-sse4.1,-sse4.2,-sse4a,-ssse3,-vaes,-vpclmulqdq,-widekl,-x87,-xop" "tune-cpu"="generic" } attributes #6 = { mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } attributes #7 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #8 = { nounwind } -attributes #9 = { cold nounwind } +attributes #8 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } +attributes #9 = { nounwind } +attributes #10 = { cold nounwind } !llvm.module.flags = !{!0, !1, !2, !3, !4} diff --git a/bench/lodepng/optimized/pngdetail.cpp.ll b/bench/lodepng/optimized/pngdetail.cpp.ll index 74be780edc0..d5ff1af0b9f 100644 --- a/bench/lodepng/optimized/pngdetail.cpp.ll +++ b/bench/lodepng/optimized/pngdetail.cpp.ll @@ -4219,8 +4219,7 @@ for.cond80.preheader: ; preds = %invoke.cont75 %sub.ptr.rhs.cast.i181 = ptrtoint ptr %boundaries_uncompressed.sroa.0.0.lcssa to i64 %sub.ptr.sub.i182 = sub i64 %boundaries_uncompressed.sroa.7.0.lcssa, %sub.ptr.rhs.cast.i181 %sub.ptr.div.i183 = ashr exact i64 %sub.ptr.sub.i182, 3 - %umax = call i64 @llvm.umax.i64(i64 %sub.ptr.div.i183, i64 1) - %33 = add i64 %umax, -1 + %33 = call i64 @llvm.usub.sat.i64(i64 %sub.ptr.div.i183, i64 1) br label %for.cond80 for.cond80: ; preds = %for.cond80.preheader, %invoke.cont86 @@ -4251,8 +4250,7 @@ for.cond98.preheader: ; preds = %invoke.cont93 %sub.ptr.rhs.cast.i187 = ptrtoint ptr %boundaries_compressed.sroa.0.0.lcssa to i64 %sub.ptr.sub.i188 = sub i64 %boundaries_compressed.sroa.7.0.lcssa, %sub.ptr.rhs.cast.i187 %sub.ptr.div.i189 = ashr exact i64 %sub.ptr.sub.i188, 3 - %umax508 = call i64 @llvm.umax.i64(i64 %sub.ptr.div.i189, i64 1) - %35 = add i64 %umax508, -1 + %35 = call i64 @llvm.usub.sat.i64(i64 %sub.ptr.div.i189, i64 1) br label %for.cond98 for.cond98: ; preds = %for.cond98.preheader, %invoke.cont104 @@ -11676,6 +11674,9 @@ declare i64 @llvm.umax.i64(i64, i64) #21 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i64 @llvm.umin.i64(i64, i64) #21 +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare i64 @llvm.usub.sat.i64(i64, i64) #21 + ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #22 diff --git a/bench/luau/optimized/Linter.cpp.ll b/bench/luau/optimized/Linter.cpp.ll index b86a4b85b8c..33b0e457576 100644 --- a/bench/luau/optimized/Linter.cpp.ll +++ b/bench/luau/optimized/Linter.cpp.ll @@ -17067,49 +17067,48 @@ _ZNSt6vectorIPN4Luau7AstExprESaIS2_EE7reserveEm.exit: ; preds = %_ZNSt12_Vector_ 59: ; preds = %.loopexit.i, %.lr.ph34.i %60 = phi ptr [ %57, %.lr.ph34.i ], [ %.pr, %.loopexit.i ] - %61 = phi ptr [ %56, %.lr.ph34.i ], [ %84, %.loopexit.i ] - %storemerge32.i = phi i64 [ 0, %.lr.ph34.i ], [ %85, %.loopexit.i ] - %.sroa.speculated.i = call i64 @llvm.umax.i64(i64 %storemerge32.i, i64 5) - %62 = add i64 %.sroa.speculated.i, -5 + %61 = phi ptr [ %56, %.lr.ph34.i ], [ %83, %.loopexit.i ] + %storemerge32.i = phi i64 [ 0, %.lr.ph34.i ], [ %84, %.loopexit.i ] + %62 = call i64 @llvm.usub.sat.i64(i64 %storemerge32.i, i64 5) %63 = icmp ult i64 %62, %storemerge32.i br i1 %63, label %.lr.ph.i, label %.loopexit.i .lr.ph.i: ; preds = %59 %64 = getelementptr inbounds ptr, ptr %60, i64 %storemerge32.i %65 = load ptr, ptr %64, align 8 - br label %69 + br label %68 -66: ; preds = %69 - %67 = add nuw i64 %.031.i, 1 - %68 = icmp ult i64 %67, %storemerge32.i - br i1 %68, label %69, label %.loopexit.i, !llvm.loop !109 +66: ; preds = %68 + %67 = add i64 %.031.i, 1 + %exitcond.not.i = icmp eq i64 %67, %storemerge32.i + br i1 %exitcond.not.i, label %.loopexit.i, label %68, !llvm.loop !109 -69: ; preds = %66, %.lr.ph.i +68: ; preds = %66, %.lr.ph.i %.031.i = phi i64 [ %62, %.lr.ph.i ], [ %67, %66 ] - %70 = getelementptr inbounds ptr, ptr %60, i64 %.031.i - %71 = load ptr, ptr %70, align 8 - %72 = call fastcc noundef zeroext i1 @_ZN4LuauL7similarEPNS_7AstExprES1_(ptr noundef %71, ptr noundef %65) - br i1 %72, label %73, label %66 - -73: ; preds = %69 - %74 = getelementptr inbounds i8, ptr %65, i64 12 - %75 = load i32, ptr %74, align 4 - %76 = getelementptr inbounds i8, ptr %71, i64 12 - %77 = load i32, ptr %76, align 4 - %78 = icmp eq i32 %75, %77 - %79 = load ptr, ptr %58, align 8 - br i1 %78, label %80, label %.loopexit.sink.split.i + %69 = getelementptr inbounds ptr, ptr %60, i64 %.031.i + %70 = load ptr, ptr %69, align 8 + %71 = call fastcc noundef zeroext i1 @_ZN4LuauL7similarEPNS_7AstExprES1_(ptr noundef %70, ptr noundef %65) + br i1 %71, label %72, label %66 -80: ; preds = %73 - %81 = getelementptr inbounds i8, ptr %71, i64 16 - %82 = load i32, ptr %81, align 4 +72: ; preds = %68 + %73 = getelementptr inbounds i8, ptr %65, i64 12 + %74 = load i32, ptr %73, align 4 + %75 = getelementptr inbounds i8, ptr %70, i64 12 + %76 = load i32, ptr %75, align 4 + %77 = icmp eq i32 %74, %76 + %78 = load ptr, ptr %58, align 8 + br i1 %77, label %79, label %.loopexit.sink.split.i + +79: ; preds = %72 + %80 = getelementptr inbounds i8, ptr %70, i64 16 + %81 = load i32, ptr %80, align 4 br label %.loopexit.sink.split.i -.loopexit.sink.split.i: ; preds = %80, %73 - %.sink37.i = phi i32 [ %82, %80 ], [ %77, %73 ] - %.str.190.sink.i = phi ptr [ @.str.189, %80 ], [ @.str.190, %73 ] - %83 = add i32 %.sink37.i, 1 - invoke void (ptr, i32, ptr, ptr, ...) @_ZN4LuauL11emitWarningERNS_11LintContextENS_11LintWarning4CodeERKNS_8LocationEPKcz(ptr noundef nonnull align 8 dereferenceable(112) %79, i32 noundef 24, ptr noundef nonnull align 4 dereferenceable(16) %74, ptr noundef nonnull %.str.190.sink.i, i32 noundef %83) +.loopexit.sink.split.i: ; preds = %79, %72 + %.sink37.i = phi i32 [ %81, %79 ], [ %76, %72 ] + %.str.190.sink.i = phi ptr [ @.str.189, %79 ], [ @.str.190, %72 ] + %82 = add i32 %.sink37.i, 1 + invoke void (ptr, i32, ptr, ptr, ...) @_ZN4LuauL11emitWarningERNS_11LintContextENS_11LintWarning4CodeERKNS_8LocationEPKcz(ptr noundef nonnull align 8 dereferenceable(112) %78, i32 noundef 24, ptr noundef nonnull align 4 dereferenceable(16) %73, ptr noundef nonnull %.str.190.sink.i, i32 noundef %82) to label %.loopexit.sink.split.i..loopexit.i_crit_edge unwind label %.loopexit .loopexit.sink.split.i..loopexit.i_crit_edge: ; preds = %.loopexit.sink.split.i @@ -17119,56 +17118,56 @@ _ZNSt6vectorIPN4Luau7AstExprESaIS2_EE7reserveEm.exit: ; preds = %_ZNSt12_Vector_ .loopexit.i: ; preds = %66, %.loopexit.sink.split.i..loopexit.i_crit_edge, %59 %.pr = phi ptr [ %.pre37, %.loopexit.sink.split.i..loopexit.i_crit_edge ], [ %60, %59 ], [ %60, %66 ] - %84 = phi ptr [ %.pre, %.loopexit.sink.split.i..loopexit.i_crit_edge ], [ %61, %59 ], [ %61, %66 ] - %85 = add nuw i64 %storemerge32.i, 1 - %86 = ptrtoint ptr %84 to i64 - %87 = ptrtoint ptr %.pr to i64 - %88 = sub i64 %86, %87 - %89 = ashr exact i64 %88, 3 - %90 = icmp ult i64 %85, %89 - br i1 %90, label %59, label %_ZN4Luau22LintDuplicateCondition16detectDuplicatesERKSt6vectorIPNS_7AstExprESaIS3_EE.exit, !llvm.loop !110 + %83 = phi ptr [ %.pre, %.loopexit.sink.split.i..loopexit.i_crit_edge ], [ %61, %59 ], [ %61, %66 ] + %84 = add nuw i64 %storemerge32.i, 1 + %85 = ptrtoint ptr %83 to i64 + %86 = ptrtoint ptr %.pr to i64 + %87 = sub i64 %85, %86 + %88 = ashr exact i64 %87, 3 + %89 = icmp ult i64 %84, %88 + br i1 %89, label %59, label %_ZN4Luau22LintDuplicateCondition16detectDuplicatesERKSt6vectorIPNS_7AstExprESaIS3_EE.exit, !llvm.loop !110 _ZN4Luau22LintDuplicateCondition16detectDuplicatesERKSt6vectorIPNS_7AstExprESaIS3_EE.exit: ; preds = %.loopexit.i, %54 - %91 = phi ptr [ %57, %54 ], [ %.pr, %.loopexit.i ] - %.not.i.i.i = icmp eq ptr %91, null - br i1 %.not.i.i.i, label %_ZNSt6vectorIPN4Luau7AstExprESaIS2_EED2Ev.exit, label %92 - -92: ; preds = %_ZN4Luau22LintDuplicateCondition16detectDuplicatesERKSt6vectorIPNS_7AstExprESaIS3_EE.exit - %93 = load ptr, ptr %50, align 8 - %94 = ptrtoint ptr %93 to i64 - %95 = ptrtoint ptr %91 to i64 - %96 = sub i64 %94, %95 - call void @_ZdlPvm(ptr noundef nonnull %91, i64 noundef %96) #22 + %90 = phi ptr [ %57, %54 ], [ %.pr, %.loopexit.i ] + %.not.i.i.i = icmp eq ptr %90, null + br i1 %.not.i.i.i, label %_ZNSt6vectorIPN4Luau7AstExprESaIS2_EED2Ev.exit, label %91 + +91: ; preds = %_ZN4Luau22LintDuplicateCondition16detectDuplicatesERKSt6vectorIPNS_7AstExprESaIS3_EE.exit + %92 = load ptr, ptr %50, align 8 + %93 = ptrtoint ptr %92 to i64 + %94 = ptrtoint ptr %90 to i64 + %95 = sub i64 %93, %94 + call void @_ZdlPvm(ptr noundef nonnull %90, i64 noundef %95) #22 br label %_ZNSt6vectorIPN4Luau7AstExprESaIS2_EED2Ev.exit .loopexit: ; preds = %.loopexit.sink.split.i %lpad.loopexit = landingpad { ptr, i32 } cleanup - br label %97 + br label %96 .loopexit.split-lp: ; preds = %_ZNSt6vectorIPN4Luau7AstExprESaIS2_EE7reserveEm.exit, %_ZNSt12_Vector_baseIPN4Luau7AstExprESaIS2_EE11_M_allocateEm.exit.i %lpad.loopexit.split-lp = landingpad { ptr, i32 } cleanup - br label %97 + br label %96 -97: ; preds = %.loopexit.split-lp, %.loopexit +96: ; preds = %.loopexit.split-lp, %.loopexit %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] - %98 = load ptr, ptr %3, align 8 - %.not.i.i.i31 = icmp eq ptr %98, null - br i1 %.not.i.i.i31, label %_ZNSt6vectorIPN4Luau7AstExprESaIS2_EED2Ev.exit32, label %99 - -99: ; preds = %97 - %100 = load ptr, ptr %50, align 8 - %101 = ptrtoint ptr %100 to i64 - %102 = ptrtoint ptr %98 to i64 - %103 = sub i64 %101, %102 - call void @_ZdlPvm(ptr noundef nonnull %98, i64 noundef %103) #22 + %97 = load ptr, ptr %3, align 8 + %.not.i.i.i31 = icmp eq ptr %97, null + br i1 %.not.i.i.i31, label %_ZNSt6vectorIPN4Luau7AstExprESaIS2_EED2Ev.exit32, label %98 + +98: ; preds = %96 + %99 = load ptr, ptr %50, align 8 + %100 = ptrtoint ptr %99 to i64 + %101 = ptrtoint ptr %97 to i64 + %102 = sub i64 %100, %101 + call void @_ZdlPvm(ptr noundef nonnull %97, i64 noundef %102) #22 br label %_ZNSt6vectorIPN4Luau7AstExprESaIS2_EED2Ev.exit32 -_ZNSt6vectorIPN4Luau7AstExprESaIS2_EED2Ev.exit32: ; preds = %97, %99 +_ZNSt6vectorIPN4Luau7AstExprESaIS2_EED2Ev.exit32: ; preds = %96, %98 resume { ptr, i32 } %lpad.phi -_ZNSt6vectorIPN4Luau7AstExprESaIS2_EED2Ev.exit: ; preds = %92, %_ZN4Luau22LintDuplicateCondition16detectDuplicatesERKSt6vectorIPNS_7AstExprESaIS3_EE.exit, %2, %40 +_ZNSt6vectorIPN4Luau7AstExprESaIS2_EED2Ev.exit: ; preds = %91, %_ZN4Luau22LintDuplicateCondition16detectDuplicatesERKSt6vectorIPNS_7AstExprESaIS3_EE.exit, %2, %40 ret i1 %switch } @@ -17309,7 +17308,7 @@ _ZNSt6vectorIPN4Luau7AstExprESaIS2_EE9push_backERKS2_.exit: ; preds = %_ZNSt6vec 53: ; preds = %._crit_edge, %.thread35 %.pre-phi = phi i64 [ %.pre, %._crit_edge ], [ %64, %.thread35 ] - %54 = phi { ptr, i32 } [ %lpad.phi, %._crit_edge ], [ %90, %.thread35 ] + %54 = phi { ptr, i32 } [ %lpad.phi, %._crit_edge ], [ %89, %.thread35 ] %.sroa.17.040 = phi ptr [ %.sroa.17.0, %._crit_edge ], [ %.sroa.17.4, %.thread35 ] %.sroa.0.039 = phi ptr [ %.sroa.0.0, %._crit_edge ], [ %.sroa.0.4, %.thread35 ] %55 = ptrtoint ptr %.sroa.17.040 to i64 @@ -17341,72 +17340,71 @@ _ZNSt6vectorIPN4Luau7AstExprESaIS2_EED2Ev.exit: ; preds = %52, %53 br label %67 67: ; preds = %.loopexit.i, %.lr.ph34.i - %storemerge32.i = phi i64 [ 0, %.lr.ph34.i ], [ %91, %.loopexit.i ] - %.sroa.speculated.i = tail call i64 @llvm.umax.i64(i64 %storemerge32.i, i64 5) - %68 = add i64 %.sroa.speculated.i, -5 + %storemerge32.i = phi i64 [ 0, %.lr.ph34.i ], [ %90, %.loopexit.i ] + %68 = tail call i64 @llvm.usub.sat.i64(i64 %storemerge32.i, i64 5) %69 = icmp ult i64 %68, %storemerge32.i br i1 %69, label %.lr.ph.i, label %.loopexit.i .lr.ph.i: ; preds = %67 %70 = getelementptr inbounds ptr, ptr %.sroa.0.4, i64 %storemerge32.i %71 = load ptr, ptr %70, align 8 - br label %75 + br label %74 -72: ; preds = %75 - %73 = add nuw i64 %.031.i, 1 - %74 = icmp ult i64 %73, %storemerge32.i - br i1 %74, label %75, label %.loopexit.i, !llvm.loop !109 +72: ; preds = %74 + %73 = add i64 %.031.i, 1 + %exitcond.not.i = icmp eq i64 %73, %storemerge32.i + br i1 %exitcond.not.i, label %.loopexit.i, label %74, !llvm.loop !109 -75: ; preds = %72, %.lr.ph.i +74: ; preds = %72, %.lr.ph.i %.031.i = phi i64 [ %68, %.lr.ph.i ], [ %73, %72 ] - %76 = getelementptr inbounds ptr, ptr %.sroa.0.4, i64 %.031.i - %77 = load ptr, ptr %76, align 8 - %78 = tail call fastcc noundef zeroext i1 @_ZN4LuauL7similarEPNS_7AstExprES1_(ptr noundef %77, ptr noundef %71) - br i1 %78, label %79, label %72 + %75 = getelementptr inbounds ptr, ptr %.sroa.0.4, i64 %.031.i + %76 = load ptr, ptr %75, align 8 + %77 = tail call fastcc noundef zeroext i1 @_ZN4LuauL7similarEPNS_7AstExprES1_(ptr noundef %76, ptr noundef %71) + br i1 %77, label %78, label %72 -79: ; preds = %75 - %80 = getelementptr inbounds i8, ptr %71, i64 12 - %81 = load i32, ptr %80, align 4 - %82 = getelementptr inbounds i8, ptr %77, i64 12 - %83 = load i32, ptr %82, align 4 - %84 = icmp eq i32 %81, %83 - %85 = load ptr, ptr %62, align 8 - br i1 %84, label %86, label %.loopexit.sink.split.i +78: ; preds = %74 + %79 = getelementptr inbounds i8, ptr %71, i64 12 + %80 = load i32, ptr %79, align 4 + %81 = getelementptr inbounds i8, ptr %76, i64 12 + %82 = load i32, ptr %81, align 4 + %83 = icmp eq i32 %80, %82 + %84 = load ptr, ptr %62, align 8 + br i1 %83, label %85, label %.loopexit.sink.split.i -86: ; preds = %79 - %87 = getelementptr inbounds i8, ptr %77, i64 16 - %88 = load i32, ptr %87, align 4 +85: ; preds = %78 + %86 = getelementptr inbounds i8, ptr %76, i64 16 + %87 = load i32, ptr %86, align 4 br label %.loopexit.sink.split.i -.loopexit.sink.split.i: ; preds = %86, %79 - %.sink37.i = phi i32 [ %88, %86 ], [ %83, %79 ] - %.str.190.sink.i = phi ptr [ @.str.189, %86 ], [ @.str.190, %79 ] - %89 = add i32 %.sink37.i, 1 - invoke void (ptr, i32, ptr, ptr, ...) @_ZN4LuauL11emitWarningERNS_11LintContextENS_11LintWarning4CodeERKNS_8LocationEPKcz(ptr noundef nonnull align 8 dereferenceable(112) %85, i32 noundef 24, ptr noundef nonnull align 4 dereferenceable(16) %80, ptr noundef nonnull %.str.190.sink.i, i32 noundef %89) +.loopexit.sink.split.i: ; preds = %85, %78 + %.sink37.i = phi i32 [ %87, %85 ], [ %82, %78 ] + %.str.190.sink.i = phi ptr [ @.str.189, %85 ], [ @.str.190, %78 ] + %88 = add i32 %.sink37.i, 1 + invoke void (ptr, i32, ptr, ptr, ...) @_ZN4LuauL11emitWarningERNS_11LintContextENS_11LintWarning4CodeERKNS_8LocationEPKcz(ptr noundef nonnull align 8 dereferenceable(112) %84, i32 noundef 24, ptr noundef nonnull align 4 dereferenceable(16) %79, ptr noundef nonnull %.str.190.sink.i, i32 noundef %88) to label %.loopexit.i unwind label %.thread35 .thread35: ; preds = %.loopexit.sink.split.i - %90 = landingpad { ptr, i32 } + %89 = landingpad { ptr, i32 } cleanup br label %53 .loopexit.i: ; preds = %72, %.loopexit.sink.split.i, %67 - %91 = add nuw i64 %storemerge32.i, 1 - %exitcond.not = icmp eq i64 %91, %umax + %90 = add nuw i64 %storemerge32.i, 1 + %exitcond.not = icmp eq i64 %90, %umax br i1 %exitcond.not, label %_ZN4Luau22LintDuplicateCondition16detectDuplicatesERKSt6vectorIPNS_7AstExprESaIS3_EE.exit, label %67, !llvm.loop !110 _ZN4Luau22LintDuplicateCondition16detectDuplicatesERKSt6vectorIPNS_7AstExprESaIS3_EE.exit: ; preds = %.loopexit.i, %61 %.not.i.i.i18 = icmp eq ptr %.sroa.0.4, null - br i1 %.not.i.i.i18, label %_ZNSt6vectorIPN4Luau7AstExprESaIS2_EED2Ev.exit19, label %92 + br i1 %.not.i.i.i18, label %_ZNSt6vectorIPN4Luau7AstExprESaIS2_EED2Ev.exit19, label %91 -92: ; preds = %_ZN4Luau22LintDuplicateCondition16detectDuplicatesERKSt6vectorIPNS_7AstExprESaIS3_EE.exit - %93 = ptrtoint ptr %.sroa.17.4 to i64 - %94 = ptrtoint ptr %.sroa.0.4 to i64 - %95 = sub i64 %93, %94 - tail call void @_ZdlPvm(ptr noundef nonnull %.sroa.0.4, i64 noundef %95) #22 +91: ; preds = %_ZN4Luau22LintDuplicateCondition16detectDuplicatesERKSt6vectorIPNS_7AstExprESaIS3_EE.exit + %92 = ptrtoint ptr %.sroa.17.4 to i64 + %93 = ptrtoint ptr %.sroa.0.4 to i64 + %94 = sub i64 %92, %93 + tail call void @_ZdlPvm(ptr noundef nonnull %.sroa.0.4, i64 noundef %94) #22 br label %_ZNSt6vectorIPN4Luau7AstExprESaIS2_EED2Ev.exit19 -_ZNSt6vectorIPN4Luau7AstExprESaIS2_EED2Ev.exit19: ; preds = %92, %_ZN4Luau22LintDuplicateCondition16detectDuplicatesERKSt6vectorIPNS_7AstExprESaIS3_EE.exit, %2 +_ZNSt6vectorIPN4Luau7AstExprESaIS2_EED2Ev.exit19: ; preds = %91, %_ZN4Luau22LintDuplicateCondition16detectDuplicatesERKSt6vectorIPNS_7AstExprESaIS3_EE.exit, %2 ret i1 %8 } @@ -17555,7 +17553,7 @@ _ZNSt6vectorIPN4Luau7AstExprESaIS2_EE9push_backERKS2_.exit: ; preds = %_ZNSt6vec 55: ; preds = %._crit_edge, %.thread44 %.pre-phi = phi i64 [ %.pre, %._crit_edge ], [ %65, %.thread44 ] - %56 = phi { ptr, i32 } [ %lpad.phi, %._crit_edge ], [ %91, %.thread44 ] + %56 = phi { ptr, i32 } [ %lpad.phi, %._crit_edge ], [ %90, %.thread44 ] %.sroa.17.049 = phi ptr [ %.sroa.17.0, %._crit_edge ], [ %.sroa.17.4, %.thread44 ] %.sroa.0.048 = phi ptr [ %.sroa.0.0, %._crit_edge ], [ %.sroa.0.4, %.thread44 ] %57 = ptrtoint ptr %.sroa.17.049 to i64 @@ -17587,73 +17585,72 @@ _ZNSt6vectorIPN4Luau7AstExprESaIS2_EED2Ev.exit: ; preds = %54, %55 br label %68 68: ; preds = %.loopexit.i, %.lr.ph34.i - %storemerge32.i = phi i64 [ 0, %.lr.ph34.i ], [ %92, %.loopexit.i ] - %.sroa.speculated.i = tail call i64 @llvm.umax.i64(i64 %storemerge32.i, i64 5) - %69 = add i64 %.sroa.speculated.i, -5 + %storemerge32.i = phi i64 [ 0, %.lr.ph34.i ], [ %91, %.loopexit.i ] + %69 = tail call i64 @llvm.usub.sat.i64(i64 %storemerge32.i, i64 5) %70 = icmp ult i64 %69, %storemerge32.i br i1 %70, label %.lr.ph.i, label %.loopexit.i .lr.ph.i: ; preds = %68 %71 = getelementptr inbounds ptr, ptr %.sroa.0.4, i64 %storemerge32.i %72 = load ptr, ptr %71, align 8 - br label %76 + br label %75 -73: ; preds = %76 - %74 = add nuw i64 %.031.i, 1 - %75 = icmp ult i64 %74, %storemerge32.i - br i1 %75, label %76, label %.loopexit.i, !llvm.loop !109 +73: ; preds = %75 + %74 = add i64 %.031.i, 1 + %exitcond.not.i = icmp eq i64 %74, %storemerge32.i + br i1 %exitcond.not.i, label %.loopexit.i, label %75, !llvm.loop !109 -76: ; preds = %73, %.lr.ph.i +75: ; preds = %73, %.lr.ph.i %.031.i = phi i64 [ %69, %.lr.ph.i ], [ %74, %73 ] - %77 = getelementptr inbounds ptr, ptr %.sroa.0.4, i64 %.031.i - %78 = load ptr, ptr %77, align 8 - %79 = tail call fastcc noundef zeroext i1 @_ZN4LuauL7similarEPNS_7AstExprES1_(ptr noundef %78, ptr noundef %72) - br i1 %79, label %80, label %73 + %76 = getelementptr inbounds ptr, ptr %.sroa.0.4, i64 %.031.i + %77 = load ptr, ptr %76, align 8 + %78 = tail call fastcc noundef zeroext i1 @_ZN4LuauL7similarEPNS_7AstExprES1_(ptr noundef %77, ptr noundef %72) + br i1 %78, label %79, label %73 -80: ; preds = %76 - %81 = getelementptr inbounds i8, ptr %72, i64 12 - %82 = load i32, ptr %81, align 4 - %83 = getelementptr inbounds i8, ptr %78, i64 12 - %84 = load i32, ptr %83, align 4 - %85 = icmp eq i32 %82, %84 - %86 = load ptr, ptr %63, align 8 - br i1 %85, label %87, label %.loopexit.sink.split.i - -87: ; preds = %80 - %88 = getelementptr inbounds i8, ptr %78, i64 16 - %89 = load i32, ptr %88, align 4 +79: ; preds = %75 + %80 = getelementptr inbounds i8, ptr %72, i64 12 + %81 = load i32, ptr %80, align 4 + %82 = getelementptr inbounds i8, ptr %77, i64 12 + %83 = load i32, ptr %82, align 4 + %84 = icmp eq i32 %81, %83 + %85 = load ptr, ptr %63, align 8 + br i1 %84, label %86, label %.loopexit.sink.split.i + +86: ; preds = %79 + %87 = getelementptr inbounds i8, ptr %77, i64 16 + %88 = load i32, ptr %87, align 4 br label %.loopexit.sink.split.i -.loopexit.sink.split.i: ; preds = %87, %80 - %.sink37.i = phi i32 [ %89, %87 ], [ %84, %80 ] - %.str.190.sink.i = phi ptr [ @.str.189, %87 ], [ @.str.190, %80 ] - %90 = add i32 %.sink37.i, 1 - invoke void (ptr, i32, ptr, ptr, ...) @_ZN4LuauL11emitWarningERNS_11LintContextENS_11LintWarning4CodeERKNS_8LocationEPKcz(ptr noundef nonnull align 8 dereferenceable(112) %86, i32 noundef 24, ptr noundef nonnull align 4 dereferenceable(16) %81, ptr noundef nonnull %.str.190.sink.i, i32 noundef %90) +.loopexit.sink.split.i: ; preds = %86, %79 + %.sink37.i = phi i32 [ %88, %86 ], [ %83, %79 ] + %.str.190.sink.i = phi ptr [ @.str.189, %86 ], [ @.str.190, %79 ] + %89 = add i32 %.sink37.i, 1 + invoke void (ptr, i32, ptr, ptr, ...) @_ZN4LuauL11emitWarningERNS_11LintContextENS_11LintWarning4CodeERKNS_8LocationEPKcz(ptr noundef nonnull align 8 dereferenceable(112) %85, i32 noundef 24, ptr noundef nonnull align 4 dereferenceable(16) %80, ptr noundef nonnull %.str.190.sink.i, i32 noundef %89) to label %.loopexit.i unwind label %.thread44 .thread44: ; preds = %.loopexit.sink.split.i - %91 = landingpad { ptr, i32 } + %90 = landingpad { ptr, i32 } cleanup br label %55 .loopexit.i: ; preds = %73, %.loopexit.sink.split.i, %68 - %92 = add nuw i64 %storemerge32.i, 1 - %exitcond.not = icmp eq i64 %92, %umax + %91 = add nuw i64 %storemerge32.i, 1 + %exitcond.not = icmp eq i64 %91, %umax br i1 %exitcond.not, label %_ZN4Luau22LintDuplicateCondition16detectDuplicatesERKSt6vectorIPNS_7AstExprESaIS3_EE.exit, label %68, !llvm.loop !110 _ZN4Luau22LintDuplicateCondition16detectDuplicatesERKSt6vectorIPNS_7AstExprESaIS3_EE.exit: ; preds = %.loopexit.i, %.thread50 %.not.i.i.i27 = icmp eq ptr %.sroa.0.4, null - br i1 %.not.i.i.i27, label %_ZNSt6vectorIPN4Luau7AstExprESaIS2_EED2Ev.exit28, label %93 + br i1 %.not.i.i.i27, label %_ZNSt6vectorIPN4Luau7AstExprESaIS2_EED2Ev.exit28, label %92 -93: ; preds = %_ZN4Luau22LintDuplicateCondition16detectDuplicatesERKSt6vectorIPNS_7AstExprESaIS3_EE.exit - %94 = ptrtoint ptr %.sroa.17.4 to i64 - %95 = ptrtoint ptr %.sroa.0.4 to i64 - %96 = sub i64 %94, %95 - tail call void @_ZdlPvm(ptr noundef nonnull %.sroa.0.4, i64 noundef %96) #22 +92: ; preds = %_ZN4Luau22LintDuplicateCondition16detectDuplicatesERKSt6vectorIPNS_7AstExprESaIS3_EE.exit + %93 = ptrtoint ptr %.sroa.17.4 to i64 + %94 = ptrtoint ptr %.sroa.0.4 to i64 + %95 = sub i64 %93, %94 + tail call void @_ZdlPvm(ptr noundef nonnull %.sroa.0.4, i64 noundef %95) #22 br label %_ZNSt6vectorIPN4Luau7AstExprESaIS2_EED2Ev.exit28 -_ZNSt6vectorIPN4Luau7AstExprESaIS2_EED2Ev.exit28: ; preds = %93, %_ZN4Luau22LintDuplicateCondition16detectDuplicatesERKSt6vectorIPNS_7AstExprESaIS3_EE.exit, %5, %2 - %.015 = phi i1 [ true, %2 ], [ true, %5 ], [ false, %_ZN4Luau22LintDuplicateCondition16detectDuplicatesERKSt6vectorIPNS_7AstExprESaIS3_EE.exit ], [ false, %93 ] +_ZNSt6vectorIPN4Luau7AstExprESaIS2_EED2Ev.exit28: ; preds = %92, %_ZN4Luau22LintDuplicateCondition16detectDuplicatesERKSt6vectorIPNS_7AstExprESaIS3_EE.exit, %5, %2 + %.015 = phi i1 [ true, %2 ], [ true, %5 ], [ false, %_ZN4Luau22LintDuplicateCondition16detectDuplicatesERKSt6vectorIPNS_7AstExprESaIS3_EE.exit ], [ false, %92 ] ret i1 %.015 } @@ -19685,6 +19682,9 @@ declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #19 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #19 +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare i64 @llvm.usub.sat.i64(i64, i64) #18 + attributes #0 = { mustprogress nofree norecurse nosync nounwind willreturn memory(readwrite, argmem: none, inaccessiblemem: none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { mustprogress uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #2 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) } diff --git a/bench/meshlab/optimized/filter_func.cpp.ll b/bench/meshlab/optimized/filter_func.cpp.ll index 677a48bbbcc..f8b110bac87 100644 --- a/bench/meshlab/optimized/filter_func.cpp.ll +++ b/bench/meshlab/optimized/filter_func.cpp.ll @@ -18143,17 +18143,17 @@ _ZNK19MeshLabPluginLogger3logIJRifEEEvPKcDpOT_.exit: ; preds = %_ZN11GLLogStream br label %_ZN7QStringD2Ev.exit1034 534: ; preds = %510, %491, %489 - %.merged922 = phi { ptr, i32 } [ %490, %489 ], [ %.pn917.pn2197, %510 ], [ %492, %491 ] + %.merged957 = phi { ptr, i32 } [ %490, %489 ], [ %.pn917.pn2197, %510 ], [ %492, %491 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %39) #28 br label %535 535: ; preds = %534, %487 - %.merged921 = phi { ptr, i32 } [ %.merged922, %534 ], [ %488, %487 ] + %.merged956 = phi { ptr, i32 } [ %.merged957, %534 ], [ %488, %487 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #28 br label %536 536: ; preds = %535, %485 - %.merged920 = phi { ptr, i32 } [ %.merged921, %535 ], [ %486, %485 ] + %.merged955 = phi { ptr, i32 } [ %.merged956, %535 ], [ %486, %485 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #28 br label %_ZN3vcg12SimpleVolumeINS_11SimpleVoxelIfEEED2Ev.exit2026 @@ -18411,12 +18411,12 @@ _ZN9QtPrivate8RefCount5derefEv.exit.thread2.i1029: ; preds = %_ZN9QtPrivate8RefC br label %_ZN7QStringD2Ev.exit1034 620: ; preds = %592, %573, %572, %566 - %.merged937 = phi { ptr, i32 } [ %567, %566 ], [ %.pn912.pn2205, %592 ], [ %574, %573 ], [ %.pn910, %572 ] + %.merged976 = phi { ptr, i32 } [ %567, %566 ], [ %.pn912.pn2205, %592 ], [ %574, %573 ], [ %.pn910, %572 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %45) #28 br label %621 621: ; preds = %620, %564 - %.merged936 = phi { ptr, i32 } [ %.merged937, %620 ], [ %565, %564 ] + %.merged975 = phi { ptr, i32 } [ %.merged976, %620 ], [ %565, %564 ] call void @_ZN7QStringD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %43) #28 br label %_ZN3vcg12SimpleVolumeINS_11SimpleVoxelIfEEED2Ev.exit2026 @@ -19597,32 +19597,32 @@ _ZN7QStringD2Ev.exit1138: ; preds = %_ZNK19MeshLabPlugin br label %_ZN7QStringD2Ev.exit1034 .loopexit: ; preds = %862, %837, %819, %801, %.loopexit2435, %.loopexit.split-lp, %877, %861, %836, %818, %890 - %.merged989 = phi { ptr, i32 } [ %891, %890 ], [ %.pn906, %877 ], [ %.pn904, %861 ], [ %.pn902, %836 ], [ %.pn900, %818 ], [ %lpad.loopexit, %.loopexit2435 ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ], [ %802, %801 ], [ %820, %819 ], [ %838, %837 ], [ %863, %862 ] + %.merged982 = phi { ptr, i32 } [ %891, %890 ], [ %.pn906, %877 ], [ %.pn904, %861 ], [ %.pn902, %836 ], [ %.pn900, %818 ], [ %lpad.loopexit, %.loopexit2435 ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ], [ %802, %801 ], [ %820, %819 ], [ %838, %837 ], [ %863, %862 ] call void @_ZN7QStringD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %77) #28 br label %1033 1033: ; preds = %.loopexit, %799, %797, %795, %793, %791 - %.merged988 = phi { ptr, i32 } [ %.merged989, %.loopexit ], [ %792, %791 ], [ %800, %799 ], [ %798, %797 ], [ %796, %795 ], [ %794, %793 ] + %.merged981 = phi { ptr, i32 } [ %.merged982, %.loopexit ], [ %792, %791 ], [ %800, %799 ], [ %798, %797 ], [ %796, %795 ], [ %794, %793 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %72) #28 br label %1034 1034: ; preds = %1033, %789 - %.merged987 = phi { ptr, i32 } [ %.merged988, %1033 ], [ %790, %789 ] + %.merged980 = phi { ptr, i32 } [ %.merged981, %1033 ], [ %790, %789 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %71) #28 br label %1035 1035: ; preds = %1034, %787 - %.merged986 = phi { ptr, i32 } [ %.merged987, %1034 ], [ %788, %787 ] + %.merged979 = phi { ptr, i32 } [ %.merged980, %1034 ], [ %788, %787 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %70) #28 br label %1036 1036: ; preds = %1035, %785 - %.merged985 = phi { ptr, i32 } [ %.merged986, %1035 ], [ %786, %785 ] + %.merged978 = phi { ptr, i32 } [ %.merged979, %1035 ], [ %786, %785 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %69) #28 br label %1037 1037: ; preds = %734, %736, %1036, %731, %703, %698, %693, %688, %682 - %.merged984 = phi { ptr, i32 } [ %.pn9082213, %736 ], [ %735, %734 ], [ %683, %682 ], [ %.merged985, %1036 ], [ %732, %731 ], [ %.pn898, %703 ], [ %.pn896, %698 ], [ %.pn894, %693 ], [ %.pn892, %688 ] + %.merged977 = phi { ptr, i32 } [ %.pn9082213, %736 ], [ %735, %734 ], [ %683, %682 ], [ %.merged978, %1036 ], [ %732, %731 ], [ %.pn898, %703 ], [ %.pn896, %698 ], [ %.pn894, %693 ], [ %.pn892, %688 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %54) #28 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #28 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %52) #28 @@ -20311,12 +20311,12 @@ _ZNK19MeshLabPluginLogger3logIJRifEEEvPKcDpOT_.exit1225: ; preds = %_ZN11GLLogSt br label %_ZN7QStringD2Ev.exit1034 1270: ; preds = %.loopexit2436, %.loopexit.split-lp2437, %1150, %1250, %1200, %1131, %1129 - %.merged983 = phi { ptr, i32 } [ %.pn887.pn2227, %1150 ], [ %1132, %1131 ], [ %1251, %1250 ], [ %1201, %1200 ], [ %1130, %1129 ], [ %lpad.loopexit2438, %.loopexit2436 ], [ %lpad.loopexit.split-lp2439, %.loopexit.split-lp2437 ] + %.merged974 = phi { ptr, i32 } [ %.pn887.pn2227, %1150 ], [ %1132, %1131 ], [ %1251, %1250 ], [ %1201, %1200 ], [ %1130, %1129 ], [ %lpad.loopexit2438, %.loopexit2436 ], [ %lpad.loopexit.split-lp2439, %.loopexit.split-lp2437 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %88) #28 br label %1271 1271: ; preds = %1087, %1089, %1270, %1084, %1082 - %.merged982 = phi { ptr, i32 } [ %.pn8902220, %1089 ], [ %1088, %1087 ], [ %1083, %1082 ], [ %.merged983, %1270 ], [ %1085, %1084 ] + %.merged973 = phi { ptr, i32 } [ %.pn8902220, %1089 ], [ %1088, %1087 ], [ %1083, %1082 ], [ %.merged974, %1270 ], [ %1085, %1084 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %83) #28 br label %_ZN3vcg12SimpleVolumeINS_11SimpleVoxelIfEEED2Ev.exit2026 @@ -20827,22 +20827,22 @@ _ZNK19MeshLabPluginLogger3logIJRifEEEvPKcDpOT_.exit1276: ; preds = %_ZN11GLLogSt br label %_ZN7QStringD2Ev.exit1034 1451: ; preds = %1430, %1411, %1409 - %.merged941 = phi { ptr, i32 } [ %.pn880.pn2245, %1430 ], [ %1412, %1411 ], [ %1410, %1409 ] + %.merged942 = phi { ptr, i32 } [ %.pn880.pn2245, %1430 ], [ %1412, %1411 ], [ %1410, %1409 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %104) #28 br label %1452 1452: ; preds = %1451, %1407 - %.merged940 = phi { ptr, i32 } [ %.merged941, %1451 ], [ %1408, %1407 ] + %.merged941 = phi { ptr, i32 } [ %.merged942, %1451 ], [ %1408, %1407 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %103) #28 br label %1453 1453: ; preds = %1340, %1342, %1452, %1337, %1335 - %.merged939 = phi { ptr, i32 } [ %.pn8832238, %1342 ], [ %1341, %1340 ], [ %1336, %1335 ], [ %.merged940, %1452 ], [ %1338, %1337 ] + %.merged940 = phi { ptr, i32 } [ %.pn8832238, %1342 ], [ %1341, %1340 ], [ %1336, %1335 ], [ %.merged941, %1452 ], [ %1338, %1337 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %98) #28 br label %1454 1454: ; preds = %1453, %1334, %1328 - %.merged938 = phi { ptr, i32 } [ %.merged939, %1453 ], [ %.pn878, %1334 ], [ %1329, %1328 ] + %.merged939 = phi { ptr, i32 } [ %.merged940, %1453 ], [ %.pn878, %1334 ], [ %1329, %1328 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %95) #28 br label %_ZN3vcg12SimpleVolumeINS_11SimpleVoxelIfEEED2Ev.exit2026 @@ -21832,62 +21832,62 @@ _ZNK19MeshLabPluginLogger3logIJRifEEEvPKcDpOT_.exit1387: ; preds = %_ZN11GLLogSt br label %_ZN7QStringD2Ev.exit1034 1768: ; preds = %1747, %1728, %1726, %1724, %1722, %1720, %1718, %1716, %1714 - %.merged966 = phi { ptr, i32 } [ %.pn871.pn2259, %1747 ], [ %1729, %1728 ], [ %1715, %1714 ], [ %1727, %1726 ], [ %1725, %1724 ], [ %1723, %1722 ], [ %1721, %1720 ], [ %1719, %1718 ], [ %1717, %1716 ] + %.merged954 = phi { ptr, i32 } [ %.pn871.pn2259, %1747 ], [ %1729, %1728 ], [ %1715, %1714 ], [ %1727, %1726 ], [ %1725, %1724 ], [ %1723, %1722 ], [ %1721, %1720 ], [ %1719, %1718 ], [ %1717, %1716 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %133) #28 br label %1769 1769: ; preds = %1768, %1712 - %.merged965 = phi { ptr, i32 } [ %.merged966, %1768 ], [ %1713, %1712 ] + %.merged953 = phi { ptr, i32 } [ %.merged954, %1768 ], [ %1713, %1712 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %132) #28 br label %1770 1770: ; preds = %1769, %1710 - %.merged964 = phi { ptr, i32 } [ %.merged965, %1769 ], [ %1711, %1710 ] + %.merged952 = phi { ptr, i32 } [ %.merged953, %1769 ], [ %1711, %1710 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %131) #28 br label %1771 1771: ; preds = %1770, %1708 - %.merged963 = phi { ptr, i32 } [ %.merged964, %1770 ], [ %1709, %1708 ] + %.merged951 = phi { ptr, i32 } [ %.merged952, %1770 ], [ %1709, %1708 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %130) #28 br label %1772 1772: ; preds = %1771, %1706 - %.merged962 = phi { ptr, i32 } [ %.merged963, %1771 ], [ %1707, %1706 ] + %.merged950 = phi { ptr, i32 } [ %.merged951, %1771 ], [ %1707, %1706 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %129) #28 br label %1773 1773: ; preds = %1772, %1704 - %.merged961 = phi { ptr, i32 } [ %.merged962, %1772 ], [ %1705, %1704 ] + %.merged949 = phi { ptr, i32 } [ %.merged950, %1772 ], [ %1705, %1704 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %128) #28 br label %1774 1774: ; preds = %1595, %1597, %1773, %1592, %1590 - %.merged960 = phi { ptr, i32 } [ %.pn8742253, %1597 ], [ %1596, %1595 ], [ %1591, %1590 ], [ %.merged961, %1773 ], [ %1593, %1592 ] + %.merged948 = phi { ptr, i32 } [ %.pn8742253, %1597 ], [ %1596, %1595 ], [ %1591, %1590 ], [ %.merged949, %1773 ], [ %1593, %1592 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %123) #28 br label %1775 1775: ; preds = %1774, %1589, %1583 - %.merged959 = phi { ptr, i32 } [ %.merged960, %1774 ], [ %.pn869, %1589 ], [ %1584, %1583 ] + %.merged947 = phi { ptr, i32 } [ %.merged948, %1774 ], [ %.pn869, %1589 ], [ %1584, %1583 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %120) #28 br label %1776 1776: ; preds = %1775, %1582, %1576 - %.merged958 = phi { ptr, i32 } [ %.merged959, %1775 ], [ %.pn867, %1582 ], [ %1577, %1576 ] + %.merged946 = phi { ptr, i32 } [ %.merged947, %1775 ], [ %.pn867, %1582 ], [ %1577, %1576 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %117) #28 br label %1777 1777: ; preds = %1776, %1575, %1569 - %.merged957 = phi { ptr, i32 } [ %.merged958, %1776 ], [ %.pn865, %1575 ], [ %1570, %1569 ] + %.merged945 = phi { ptr, i32 } [ %.merged946, %1776 ], [ %.pn865, %1575 ], [ %1570, %1569 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %114) #28 br label %1778 1778: ; preds = %1777, %1568, %1562 - %.merged956 = phi { ptr, i32 } [ %.merged957, %1777 ], [ %.pn863, %1568 ], [ %1563, %1562 ] + %.merged944 = phi { ptr, i32 } [ %.merged945, %1777 ], [ %.pn863, %1568 ], [ %1563, %1562 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %111) #28 br label %1779 1779: ; preds = %1778, %1561, %1555 - %.merged955 = phi { ptr, i32 } [ %.merged956, %1778 ], [ %.pn861, %1561 ], [ %1556, %1555 ] + %.merged943 = phi { ptr, i32 } [ %.merged944, %1778 ], [ %.pn861, %1561 ], [ %1556, %1555 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %108) #28 br label %_ZN3vcg12SimpleVolumeINS_11SimpleVoxelIfEEED2Ev.exit2026 @@ -22614,32 +22614,32 @@ _ZNK19MeshLabPluginLogger3logIJRifEEEvPKcDpOT_.exit1463: ; preds = %_ZN11GLLogSt br label %_ZN7QStringD2Ev.exit1034 .loopexit2443: ; preds = %1946, %1928, %1910, %.loopexit2444, %.loopexit.split-lp2445, %1973, %1945, %1927, %1974, %1908, %1906, %1904 - %.merged954 = phi { ptr, i32 } [ %1975, %1974 ], [ %.pn855, %1973 ], [ %.pn853, %1945 ], [ %.pn851, %1927 ], [ %1909, %1908 ], [ %1907, %1906 ], [ %1905, %1904 ], [ %lpad.loopexit2446, %.loopexit2444 ], [ %lpad.loopexit.split-lp2447, %.loopexit.split-lp2445 ], [ %1911, %1910 ], [ %1929, %1928 ], [ %1947, %1946 ] + %.merged938 = phi { ptr, i32 } [ %1975, %1974 ], [ %.pn855, %1973 ], [ %.pn853, %1945 ], [ %.pn851, %1927 ], [ %1909, %1908 ], [ %1907, %1906 ], [ %1905, %1904 ], [ %lpad.loopexit2446, %.loopexit2444 ], [ %lpad.loopexit.split-lp2447, %.loopexit.split-lp2445 ], [ %1911, %1910 ], [ %1929, %1928 ], [ %1947, %1946 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %156) #28 br label %2003 2003: ; preds = %.loopexit2443, %1902 - %.merged953 = phi { ptr, i32 } [ %.merged954, %.loopexit2443 ], [ %1903, %1902 ] + %.merged937 = phi { ptr, i32 } [ %.merged938, %.loopexit2443 ], [ %1903, %1902 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %155) #28 br label %2004 2004: ; preds = %2003, %1900 - %.merged952 = phi { ptr, i32 } [ %.merged953, %2003 ], [ %1901, %1900 ] + %.merged936 = phi { ptr, i32 } [ %.merged937, %2003 ], [ %1901, %1900 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %154) #28 br label %2005 2005: ; preds = %1863, %1865, %2004, %1860, %1858 - %.merged951 = phi { ptr, i32 } [ %.pn8572267, %1865 ], [ %1864, %1863 ], [ %1859, %1858 ], [ %.merged952, %2004 ], [ %1861, %1860 ] + %.merged935 = phi { ptr, i32 } [ %.pn8572267, %1865 ], [ %1864, %1863 ], [ %1859, %1858 ], [ %.merged936, %2004 ], [ %1861, %1860 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %149) #28 br label %2006 2006: ; preds = %2005, %1857, %1851 - %.merged950 = phi { ptr, i32 } [ %.merged951, %2005 ], [ %.pn849, %1857 ], [ %1852, %1851 ] + %.merged934 = phi { ptr, i32 } [ %.merged935, %2005 ], [ %.pn849, %1857 ], [ %1852, %1851 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %146) #28 br label %2007 2007: ; preds = %2006, %1850, %1844 - %.merged949 = phi { ptr, i32 } [ %.merged950, %2006 ], [ %.pn847, %1850 ], [ %1845, %1844 ] + %.merged933 = phi { ptr, i32 } [ %.merged934, %2006 ], [ %.pn847, %1850 ], [ %1845, %1844 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %143) #28 br label %_ZN3vcg12SimpleVolumeINS_11SimpleVoxelIfEEED2Ev.exit2026 @@ -23542,42 +23542,42 @@ _ZNK19MeshLabPluginLogger3logIJRifEEEvPKcDpOT_.exit1557: ; preds = %_ZN11GLLogSt br label %_ZN7QStringD2Ev.exit1034 .loopexit2449: ; preds = %2219, %2201, %2183, %2165, %.loopexit2450, %.loopexit.split-lp2451, %2246, %2218, %2200, %2182, %2247, %2163, %2161, %2159, %2157 - %.merged935 = phi { ptr, i32 } [ %2248, %2247 ], [ %.pn841, %2246 ], [ %.pn839, %2218 ], [ %.pn837, %2200 ], [ %.pn835, %2182 ], [ %2164, %2163 ], [ %2162, %2161 ], [ %2160, %2159 ], [ %2158, %2157 ], [ %lpad.loopexit2452, %.loopexit2450 ], [ %lpad.loopexit.split-lp2453, %.loopexit.split-lp2451 ], [ %2166, %2165 ], [ %2184, %2183 ], [ %2202, %2201 ], [ %2220, %2219 ] + %.merged932 = phi { ptr, i32 } [ %2248, %2247 ], [ %.pn841, %2246 ], [ %.pn839, %2218 ], [ %.pn837, %2200 ], [ %.pn835, %2182 ], [ %2164, %2163 ], [ %2162, %2161 ], [ %2160, %2159 ], [ %2158, %2157 ], [ %lpad.loopexit2452, %.loopexit2450 ], [ %lpad.loopexit.split-lp2453, %.loopexit.split-lp2451 ], [ %2166, %2165 ], [ %2184, %2183 ], [ %2202, %2201 ], [ %2220, %2219 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %181) #28 br label %2285 2285: ; preds = %.loopexit2449, %2155 - %.merged934 = phi { ptr, i32 } [ %.merged935, %.loopexit2449 ], [ %2156, %2155 ] + %.merged931 = phi { ptr, i32 } [ %.merged932, %.loopexit2449 ], [ %2156, %2155 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %180) #28 br label %2286 2286: ; preds = %2285, %2153 - %.merged933 = phi { ptr, i32 } [ %.merged934, %2285 ], [ %2154, %2153 ] + %.merged930 = phi { ptr, i32 } [ %.merged931, %2285 ], [ %2154, %2153 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %179) #28 br label %2287 2287: ; preds = %2286, %2151 - %.merged932 = phi { ptr, i32 } [ %.merged933, %2286 ], [ %2152, %2151 ] + %.merged929 = phi { ptr, i32 } [ %.merged930, %2286 ], [ %2152, %2151 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %178) #28 br label %2288 2288: ; preds = %2110, %2112, %2287, %2107, %2105 - %.merged931 = phi { ptr, i32 } [ %.pn8432273, %2112 ], [ %2111, %2110 ], [ %2106, %2105 ], [ %.merged932, %2287 ], [ %2108, %2107 ] + %.merged928 = phi { ptr, i32 } [ %.pn8432273, %2112 ], [ %2111, %2110 ], [ %2106, %2105 ], [ %.merged929, %2287 ], [ %2108, %2107 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %173) #28 br label %2289 2289: ; preds = %2288, %2104, %2098 - %.merged930 = phi { ptr, i32 } [ %.merged931, %2288 ], [ %.pn833, %2104 ], [ %2099, %2098 ] + %.merged927 = phi { ptr, i32 } [ %.merged928, %2288 ], [ %.pn833, %2104 ], [ %2099, %2098 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %170) #28 br label %2290 2290: ; preds = %2289, %2097, %2091 - %.merged929 = phi { ptr, i32 } [ %.merged930, %2289 ], [ %.pn831, %2097 ], [ %2092, %2091 ] + %.merged926 = phi { ptr, i32 } [ %.merged927, %2289 ], [ %.pn831, %2097 ], [ %2092, %2091 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %167) #28 br label %2291 2291: ; preds = %2290, %2090, %2084 - %.merged928 = phi { ptr, i32 } [ %.merged929, %2290 ], [ %.pn829, %2090 ], [ %2085, %2084 ] + %.merged925 = phi { ptr, i32 } [ %.merged926, %2290 ], [ %.pn829, %2090 ], [ %2085, %2084 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %164) #28 br label %_ZN3vcg12SimpleVolumeINS_11SimpleVoxelIfEEED2Ev.exit2026 @@ -24198,12 +24198,12 @@ _ZNK19MeshLabPluginLogger3logIJRifEEEvPKcDpOT_.exit1634: ; preds = %_ZN11GLLogSt br label %_ZN7QStringD2Ev.exit1034 .loopexit2456: ; preds = %2379, %.loopexit2457, %.loopexit.split-lp2458, %2406, %2495, %2483, %2407, %2377 - %.merged924 = phi { ptr, i32 } [ %2408, %2407 ], [ %.pn823, %2406 ], [ %2496, %2495 ], [ %2484, %2483 ], [ %2378, %2377 ], [ %lpad.loopexit2459, %.loopexit2457 ], [ %lpad.loopexit.split-lp2460, %.loopexit.split-lp2458 ], [ %2380, %2379 ] + %.merged921 = phi { ptr, i32 } [ %2408, %2407 ], [ %.pn823, %2406 ], [ %2496, %2495 ], [ %2484, %2483 ], [ %2378, %2377 ], [ %lpad.loopexit2459, %.loopexit2457 ], [ %lpad.loopexit.split-lp2460, %.loopexit.split-lp2458 ], [ %2380, %2379 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %196) #28 br label %2515 2515: ; preds = %2337, %2339, %.loopexit2456, %2334, %2332 - %.merged923 = phi { ptr, i32 } [ %.pn8252279, %2339 ], [ %2338, %2337 ], [ %2333, %2332 ], [ %.merged924, %.loopexit2456 ], [ %2335, %2334 ] + %.merged920 = phi { ptr, i32 } [ %.pn8252279, %2339 ], [ %2338, %2337 ], [ %2333, %2332 ], [ %.merged921, %.loopexit2456 ], [ %2335, %2334 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %191) #28 br label %_ZN3vcg12SimpleVolumeINS_11SimpleVoxelIfEEED2Ev.exit2026 @@ -24842,17 +24842,17 @@ _ZNK19MeshLabPluginLogger3logIJRifEEEvPKcDpOT_.exit1684: ; preds = %_ZN11GLLogSt br label %_ZN7QStringD2Ev.exit1034 2736: ; preds = %2647, %2628, %2626, %2624 - %.merged927 = phi { ptr, i32 } [ %.pn818.pn2292, %2647 ], [ %2629, %2628 ], [ %2625, %2624 ], [ %2627, %2626 ] + %.merged972 = phi { ptr, i32 } [ %.pn818.pn2292, %2647 ], [ %2629, %2628 ], [ %2625, %2624 ], [ %2627, %2626 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %211) #28 br label %2737 2737: ; preds = %2585, %2587, %2736, %2594, %.body, %2582 - %.merged926 = phi { ptr, i32 } [ %.merged927, %2736 ], [ %2583, %2582 ], [ %.pn8162286, %2587 ], [ %2586, %2585 ], [ %2595, %2594 ], [ %2548, %.body ] + %.merged971 = phi { ptr, i32 } [ %.merged972, %2736 ], [ %2583, %2582 ], [ %.pn8162286, %2587 ], [ %2586, %2585 ], [ %2595, %2594 ], [ %2548, %.body ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %205) #28 br label %2738 2738: ; preds = %2737, %2581, %2575 - %.merged925 = phi { ptr, i32 } [ %.merged926, %2737 ], [ %.pn814, %2581 ], [ %2576, %2575 ] + %.merged970 = phi { ptr, i32 } [ %.merged971, %2737 ], [ %.pn814, %2581 ], [ %2576, %2575 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %202) #28 br label %_ZN3vcg12SimpleVolumeINS_11SimpleVoxelIfEEED2Ev.exit2026 @@ -25316,17 +25316,17 @@ _ZNK19MeshLabPluginLogger3logIJRifEEEvPKcDpOT_.exit1728: ; preds = %_ZN11GLLogSt br label %_ZN7QStringD2Ev.exit1034 2890: ; preds = %2869, %2850, %2848, %2846 - %.merged981 = phi { ptr, i32 } [ %.pn809.pn2307, %2869 ], [ %2851, %2850 ], [ %2847, %2846 ], [ %2849, %2848 ] + %.merged924 = phi { ptr, i32 } [ %.pn809.pn2307, %2869 ], [ %2851, %2850 ], [ %2847, %2846 ], [ %2849, %2848 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %225) #28 br label %2891 2891: ; preds = %2808, %2810, %2890, %2816, %.body1711, %2805 - %.merged980 = phi { ptr, i32 } [ %.merged981, %2890 ], [ %2806, %2805 ], [ %.pn8072301, %2810 ], [ %2809, %2808 ], [ %2817, %2816 ], [ %2771, %.body1711 ] + %.merged923 = phi { ptr, i32 } [ %.merged924, %2890 ], [ %2806, %2805 ], [ %.pn8072301, %2810 ], [ %2809, %2808 ], [ %2817, %2816 ], [ %2771, %.body1711 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %219) #28 br label %2892 2892: ; preds = %2891, %2804, %2798 - %.merged979 = phi { ptr, i32 } [ %.merged980, %2891 ], [ %.pn805, %2804 ], [ %2799, %2798 ] + %.merged922 = phi { ptr, i32 } [ %.merged923, %2891 ], [ %.pn805, %2804 ], [ %2799, %2798 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %216) #28 br label %_ZN3vcg12SimpleVolumeINS_11SimpleVoxelIfEEED2Ev.exit2026 @@ -26042,37 +26042,37 @@ _ZNK19MeshLabPluginLogger3logIJRifEEEvPKcDpOT_.exit1805: ; preds = %_ZN11GLLogSt br label %_ZN7QStringD2Ev.exit1034 3120: ; preds = %3099, %3080, %3078, %3076, %3074, %3072 - %.merged978 = phi { ptr, i32 } [ %.pn800.pn2322, %3099 ], [ %3081, %3080 ], [ %3073, %3072 ], [ %3079, %3078 ], [ %3077, %3076 ], [ %3075, %3074 ] + %.merged969 = phi { ptr, i32 } [ %.pn800.pn2322, %3099 ], [ %3081, %3080 ], [ %3073, %3072 ], [ %3079, %3078 ], [ %3077, %3076 ], [ %3075, %3074 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %247) #28 br label %3121 3121: ; preds = %3120, %3070 - %.merged977 = phi { ptr, i32 } [ %.merged978, %3120 ], [ %3071, %3070 ] + %.merged968 = phi { ptr, i32 } [ %.merged969, %3120 ], [ %3071, %3070 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %246) #28 br label %3122 3122: ; preds = %3121, %3068 - %.merged976 = phi { ptr, i32 } [ %.merged977, %3121 ], [ %3069, %3068 ] + %.merged967 = phi { ptr, i32 } [ %.merged968, %3121 ], [ %3069, %3068 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %245) #28 br label %3123 3123: ; preds = %3000, %3002, %3122, %3008, %.body1783, %2997 - %.merged975 = phi { ptr, i32 } [ %.merged976, %3122 ], [ %2998, %2997 ], [ %.pn7982316, %3002 ], [ %3001, %3000 ], [ %3009, %3008 ], [ %2949, %.body1783 ] + %.merged966 = phi { ptr, i32 } [ %.merged967, %3122 ], [ %2998, %2997 ], [ %.pn7982316, %3002 ], [ %3001, %3000 ], [ %3009, %3008 ], [ %2949, %.body1783 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %239) #28 br label %3124 3124: ; preds = %3123, %2996, %2990 - %.merged974 = phi { ptr, i32 } [ %.merged975, %3123 ], [ %.pn796, %2996 ], [ %2991, %2990 ] + %.merged965 = phi { ptr, i32 } [ %.merged966, %3123 ], [ %.pn796, %2996 ], [ %2991, %2990 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %236) #28 br label %3125 3125: ; preds = %3124, %2989, %2983 - %.merged973 = phi { ptr, i32 } [ %.merged974, %3124 ], [ %.pn794, %2989 ], [ %2984, %2983 ] + %.merged964 = phi { ptr, i32 } [ %.merged965, %3124 ], [ %.pn794, %2989 ], [ %2984, %2983 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %233) #28 br label %3126 3126: ; preds = %3125, %2982, %2976 - %.merged972 = phi { ptr, i32 } [ %.merged973, %3125 ], [ %.pn792, %2982 ], [ %2977, %2976 ] + %.merged963 = phi { ptr, i32 } [ %.merged964, %3125 ], [ %.pn792, %2982 ], [ %2977, %2976 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %230) #28 br label %_ZN3vcg12SimpleVolumeINS_11SimpleVoxelIfEEED2Ev.exit2026 @@ -26788,37 +26788,37 @@ _ZNK19MeshLabPluginLogger3logIJRifEEEvPKcDpOT_.exit1882: ; preds = %_ZN11GLLogSt br label %_ZN7QStringD2Ev.exit1034 3354: ; preds = %3333, %3314, %3312, %3310, %3308, %3306 - %.merged948 = phi { ptr, i32 } [ %.pn787.pn2337, %3333 ], [ %3315, %3314 ], [ %3307, %3306 ], [ %3313, %3312 ], [ %3311, %3310 ], [ %3309, %3308 ] + %.merged989 = phi { ptr, i32 } [ %.pn787.pn2337, %3333 ], [ %3315, %3314 ], [ %3307, %3306 ], [ %3313, %3312 ], [ %3311, %3310 ], [ %3309, %3308 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %271) #28 br label %3355 3355: ; preds = %3354, %3304 - %.merged947 = phi { ptr, i32 } [ %.merged948, %3354 ], [ %3305, %3304 ] + %.merged988 = phi { ptr, i32 } [ %.merged989, %3354 ], [ %3305, %3304 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %270) #28 br label %3356 3356: ; preds = %3355, %3302 - %.merged946 = phi { ptr, i32 } [ %.merged947, %3355 ], [ %3303, %3302 ] + %.merged987 = phi { ptr, i32 } [ %.merged988, %3355 ], [ %3303, %3302 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %269) #28 br label %3357 3357: ; preds = %3234, %3236, %3356, %3242, %.body1860, %3231 - %.merged945 = phi { ptr, i32 } [ %.merged946, %3356 ], [ %3232, %3231 ], [ %.pn7852331, %3236 ], [ %3235, %3234 ], [ %3243, %3242 ], [ %3183, %.body1860 ] + %.merged986 = phi { ptr, i32 } [ %.merged987, %3356 ], [ %3232, %3231 ], [ %.pn7852331, %3236 ], [ %3235, %3234 ], [ %3243, %3242 ], [ %3183, %.body1860 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %263) #28 br label %3358 3358: ; preds = %3357, %3230, %3224 - %.merged944 = phi { ptr, i32 } [ %.merged945, %3357 ], [ %.pn783, %3230 ], [ %3225, %3224 ] + %.merged985 = phi { ptr, i32 } [ %.merged986, %3357 ], [ %.pn783, %3230 ], [ %3225, %3224 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %260) #28 br label %3359 3359: ; preds = %3358, %3223, %3217 - %.merged943 = phi { ptr, i32 } [ %.merged944, %3358 ], [ %.pn781, %3223 ], [ %3218, %3217 ] + %.merged984 = phi { ptr, i32 } [ %.merged985, %3358 ], [ %.pn781, %3223 ], [ %3218, %3217 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %257) #28 br label %3360 3360: ; preds = %3359, %3216, %3210 - %.merged942 = phi { ptr, i32 } [ %.merged943, %3359 ], [ %.pn779, %3216 ], [ %3211, %3210 ] + %.merged983 = phi { ptr, i32 } [ %.merged984, %3359 ], [ %.pn779, %3216 ], [ %3211, %3210 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %254) #28 br label %_ZN3vcg12SimpleVolumeINS_11SimpleVoxelIfEEED2Ev.exit2026 @@ -28202,17 +28202,17 @@ _ZN3vcg3tri13TrivialWalkerI6CMeshONS_12SimpleVolumeINS_11SimpleVoxelIfEEEEED2Ev. br label %_ZN7QStringD2Ev.exit1034 3834: ; preds = %3761, %.split.us, %3745, %3743, %3741 - %.merged971 = phi { ptr, i32 } [ %.pn772.pn2351, %3761 ], [ %3690, %.split.us ], [ %3742, %3741 ], [ %3746, %3745 ], [ %3744, %3743 ] + %.merged962 = phi { ptr, i32 } [ %.pn772.pn2351, %3761 ], [ %3690, %.split.us ], [ %3742, %3741 ], [ %3746, %3745 ], [ %3744, %3743 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %306) #28 br label %3835 3835: ; preds = %3834, %3740, %3735, %3727, %3719, %3710 - %.merged970 = phi { ptr, i32 } [ %.merged971, %3834 ], [ %.pn770, %3740 ], [ %3711, %3710 ], [ %.pn767.pn, %3735 ], [ %.pn764.pn, %3727 ], [ %.pn761.pn, %3719 ] + %.merged961 = phi { ptr, i32 } [ %.merged962, %3834 ], [ %.pn770, %3740 ], [ %3711, %3710 ], [ %.pn767.pn, %3735 ], [ %.pn764.pn, %3727 ], [ %.pn761.pn, %3719 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %293) #28 br label %3836 3836: ; preds = %3694, %3696, %3698, %3700, %3702, %3704, %3706, %3708, %3835 - %.merged968 = phi { ptr, i32 } [ %.merged970, %3835 ], [ %3695, %3694 ], [ %3709, %3708 ], [ %3707, %3706 ], [ %3705, %3704 ], [ %3703, %3702 ], [ %3701, %3700 ], [ %3699, %3698 ], [ %3697, %3696 ] + %.merged959 = phi { ptr, i32 } [ %.merged961, %3835 ], [ %3695, %3694 ], [ %3709, %3708 ], [ %3707, %3706 ], [ %3705, %3704 ], [ %3703, %3702 ], [ %3701, %3700 ], [ %3699, %3698 ], [ %3697, %3696 ] call void @_ZN3vcg3tri13TrivialWalkerI6CMeshONS_12SimpleVolumeINS_11SimpleVoxelIfEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(172) %285) #28 %3837 = load ptr, ptr %3487, align 8 %.not.i.i.i.i2025 = icmp eq ptr %3837, null @@ -28739,7 +28739,7 @@ _ZN7QStringD2Ev.exit1034: ; preds = %_ZN3vcg3tri14Update ret void _ZN3vcg12SimpleVolumeINS_11SimpleVoxelIfEEED2Ev.exit2026: ; preds = %3838, %3836, %3407, %3409, %3967, %3909, %3444, %3404, %3402, %3400, %3398, %3360, %3209, %3126, %2975, %2892, %2797, %2738, %2574, %2515, %2331, %2291, %2083, %2007, %1843, %1779, %1554, %1454, %1327, %1271, %1081, %1037, %621, %562, %536, %484, %373 - %.merged = phi { ptr, i32 } [ %.pn752.pn.pn.pn.pn.pn.pn.pn, %3967 ], [ %.pn741, %3909 ], [ %.pn7752345, %3409 ], [ %3408, %3407 ], [ %3445, %3444 ], [ %3405, %3404 ], [ %3403, %3402 ], [ %3401, %3400 ], [ %3399, %3398 ], [ %.merged942, %3360 ], [ %.pn777, %3209 ], [ %.merged972, %3126 ], [ %.pn790, %2975 ], [ %.merged979, %2892 ], [ %.pn803, %2797 ], [ %.merged925, %2738 ], [ %.pn812, %2574 ], [ %.merged923, %2515 ], [ %.pn821, %2331 ], [ %.merged928, %2291 ], [ %.pn827, %2083 ], [ %.merged949, %2007 ], [ %.pn845, %1843 ], [ %.merged955, %1779 ], [ %.pn859, %1554 ], [ %.merged938, %1454 ], [ %.pn876, %1327 ], [ %.merged982, %1271 ], [ %.pn885, %1081 ], [ %.merged984, %1037 ], [ %.merged936, %621 ], [ %563, %562 ], [ %.merged920, %536 ], [ %.pn915, %484 ], [ %.pn, %373 ], [ %.merged968, %3836 ], [ %.merged968, %3838 ] + %.merged = phi { ptr, i32 } [ %.pn752.pn.pn.pn.pn.pn.pn.pn, %3967 ], [ %.pn741, %3909 ], [ %.pn7752345, %3409 ], [ %3408, %3407 ], [ %3445, %3444 ], [ %3405, %3404 ], [ %3403, %3402 ], [ %3401, %3400 ], [ %3399, %3398 ], [ %.merged983, %3360 ], [ %.pn777, %3209 ], [ %.merged963, %3126 ], [ %.pn790, %2975 ], [ %.merged922, %2892 ], [ %.pn803, %2797 ], [ %.merged970, %2738 ], [ %.pn812, %2574 ], [ %.merged920, %2515 ], [ %.pn821, %2331 ], [ %.merged925, %2291 ], [ %.pn827, %2083 ], [ %.merged933, %2007 ], [ %.pn845, %1843 ], [ %.merged943, %1779 ], [ %.pn859, %1554 ], [ %.merged939, %1454 ], [ %.pn876, %1327 ], [ %.merged973, %1271 ], [ %.pn885, %1081 ], [ %.merged977, %1037 ], [ %.merged975, %621 ], [ %563, %562 ], [ %.merged955, %536 ], [ %.pn915, %484 ], [ %.pn, %373 ], [ %.merged959, %3836 ], [ %.merged959, %3838 ] resume { ptr, i32 } %.merged 3973: ; preds = %3761, %3333, %3099, %2869, %2647, %2406, %2246, %2218, %2200, %2182, %1973, %1945, %1927, %1747, %1430, %1150, %877, %861, %836, %818, %592, %510 diff --git a/bench/minetest/optimized/c_content.cpp.ll b/bench/minetest/optimized/c_content.cpp.ll index ecd205f4d58..fbd37a0ef18 100644 --- a/bench/minetest/optimized/c_content.cpp.ll +++ b/bench/minetest/optimized/c_content.cpp.ll @@ -7170,7 +7170,7 @@ if.then.i.i7.i: ; preds = %lpad2.i br label %common.resume common.resume: ; preds = %ehcleanup34, %ehcleanup141, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i405, %ehcleanup150, %cleanup.action, %if.then.i.i8.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i216, %if.then.i.i7.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i - %common.resume.op = phi { ptr, i32 } [ %1, %if.then.i.i7.i ], [ %1, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i ], [ %14, %if.then.i.i8.i ], [ %14, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i216 ], [ %.merged21, %ehcleanup34 ], [ %.pn198.pn.pn.pn.pn.pn.pn.pn.pn, %ehcleanup141 ], [ %.merged, %cleanup.action ], [ %104, %ehcleanup150 ], [ %104, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i405 ] + %common.resume.op = phi { ptr, i32 } [ %1, %if.then.i.i7.i ], [ %1, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i ], [ %14, %if.then.i.i8.i ], [ %14, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i216 ], [ %.merged, %ehcleanup34 ], [ %.pn198.pn.pn.pn.pn.pn.pn.pn.pn, %ehcleanup141 ], [ %.merged23, %cleanup.action ], [ %104, %ehcleanup150 ], [ %104, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i405 ] resume { ptr, i32 } %common.resume.op if.end5: ; preds = %if.end @@ -7443,7 +7443,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %if.th br label %return ehcleanup32: ; preds = %lpad19, %lpad29, %catch.dispatch - %.merged22 = phi { ptr, i32 } [ %.pn208, %catch.dispatch ], [ %37, %lpad29 ], [ %36, %lpad19 ] + %.merged21 = phi { ptr, i32 } [ %.pn208, %catch.dispatch ], [ %37, %lpad29 ], [ %36, %lpad19 ] %40 = load ptr, ptr %itemstring, align 8, !tbaa !11 %cmp.i.i.i242 = icmp eq ptr %40, %17 br i1 %cmp.i.i.i242, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i244, label %if.then.i.i243 @@ -7459,7 +7459,7 @@ if.then.i.i243: ; preds = %ehcleanup32 br label %ehcleanup34 ehcleanup34: ; preds = %if.then.i.i243, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i244, %lpad - %.merged21 = phi { ptr, i32 } [ %27, %lpad ], [ %.merged22, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i244 ], [ %.merged22, %if.then.i.i243 ] + %.merged = phi { ptr, i32 } [ %27, %lpad ], [ %.merged21, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i244 ], [ %.merged21, %if.then.i.i243 ] call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %itemstring) #31 br label %common.resume @@ -8055,7 +8055,7 @@ ehcleanup150: ; preds = %lpad147 br i1 %cleanup.isactive.0, label %cleanup.action, label %common.resume cleanup.action: ; preds = %ehcleanup150, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i405, %ehcleanup150.thread - %.merged = phi { ptr, i32 } [ %103, %ehcleanup150.thread ], [ %104, %ehcleanup150 ], [ %104, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i405 ] + %.merged23 = phi { ptr, i32 } [ %103, %ehcleanup150.thread ], [ %104, %ehcleanup150 ], [ %104, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i405 ] call void @__cxa_free_exception(ptr %exception) #31 br label %common.resume diff --git a/bench/minetest/optimized/test_serialization.cpp.ll b/bench/minetest/optimized/test_serialization.cpp.ll index 204f790305e..915a5c3b205 100644 --- a/bench/minetest/optimized/test_serialization.cpp.ll +++ b/bench/minetest/optimized/test_serialization.cpp.ll @@ -3908,7 +3908,7 @@ ehcleanup83: ; preds = %lpad79 br i1 %cleanup.isactive81.0, label %cleanup.action87, label %ehcleanup90 cleanup.action87: ; preds = %ehcleanup83, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i267, %ehcleanup83.thread - %.merged24 = phi { ptr, i32 } [ %58, %ehcleanup83.thread ], [ %59, %ehcleanup83 ], [ %59, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i267 ] + %.merged27 = phi { ptr, i32 } [ %58, %ehcleanup83.thread ], [ %59, %ehcleanup83 ], [ %59, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i267 ] call void @__cxa_free_exception(ptr %exception74) #27 br label %ehcleanup90 @@ -3971,12 +3971,12 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit284: ; preds = %if to label %invoke.cont119 unwind label %ehcleanup124.thread ehcleanup90: ; preds = %cleanup.action87, %ehcleanup83, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i267, %lpad70, %lpad68 - %.merged23 = phi { ptr, i32 } [ %.merged24, %cleanup.action87 ], [ %59, %ehcleanup83 ], [ %57, %lpad70 ], [ %52, %lpad68 ], [ %59, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i267 ] + %.merged26 = phi { ptr, i32 } [ %.merged27, %cleanup.action87 ], [ %59, %ehcleanup83 ], [ %57, %lpad70 ], [ %52, %lpad68 ], [ %59, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i267 ] call void @_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(120) %is62) #27 br label %ehcleanup92 ehcleanup92: ; preds = %ehcleanup90, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit264 - %.merged = phi { ptr, i32 } [ %.merged23, %ehcleanup90 ], [ %49, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit264 ] + %.merged25 = phi { ptr, i32 } [ %.merged26, %ehcleanup90 ], [ %49, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit264 ] call void @llvm.lifetime.end.p0(i64 384, ptr nonnull %is62) #27 br label %eh.resume @@ -4057,7 +4057,7 @@ ehcleanup124: ; preds = %lpad120 br i1 %cleanup.isactive122.0, label %cleanup.action128, label %ehcleanup131 cleanup.action128: ; preds = %ehcleanup124, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i293, %ehcleanup124.thread - %.merged27 = phi { ptr, i32 } [ %77, %ehcleanup124.thread ], [ %78, %ehcleanup124 ], [ %78, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i293 ] + %.merged30 = phi { ptr, i32 } [ %77, %ehcleanup124.thread ], [ %78, %ehcleanup124 ], [ %78, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i293 ] call void @__cxa_free_exception(ptr %exception115) #27 br label %ehcleanup131 @@ -4120,12 +4120,12 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit310: ; preds = %if to label %invoke.cont160 unwind label %ehcleanup165.thread ehcleanup131: ; preds = %cleanup.action128, %ehcleanup124, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i293, %lpad109, %lpad101 - %.merged26 = phi { ptr, i32 } [ %.merged27, %cleanup.action128 ], [ %78, %ehcleanup124 ], [ %76, %lpad109 ], [ %72, %lpad101 ], [ %78, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i293 ] + %.merged29 = phi { ptr, i32 } [ %.merged30, %cleanup.action128 ], [ %78, %ehcleanup124 ], [ %76, %lpad109 ], [ %72, %lpad101 ], [ %78, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i293 ] call void @_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(120) %is93) #27 br label %ehcleanup133 ehcleanup133: ; preds = %ehcleanup131, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit290 - %.merged25 = phi { ptr, i32 } [ %.merged26, %ehcleanup131 ], [ %69, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit290 ] + %.merged28 = phi { ptr, i32 } [ %.merged29, %ehcleanup131 ], [ %69, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit290 ] call void @llvm.lifetime.end.p0(i64 384, ptr nonnull %is93) #27 br label %eh.resume @@ -4206,7 +4206,7 @@ ehcleanup165: ; preds = %lpad161 br i1 %cleanup.isactive163.0, label %cleanup.action169, label %ehcleanup172 cleanup.action169: ; preds = %ehcleanup165, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i319, %ehcleanup165.thread - %.merged30 = phi { ptr, i32 } [ %96, %ehcleanup165.thread ], [ %97, %ehcleanup165 ], [ %97, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i319 ] + %.merged24 = phi { ptr, i32 } [ %96, %ehcleanup165.thread ], [ %97, %ehcleanup165 ], [ %97, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i319 ] call void @__cxa_free_exception(ptr %exception156) #27 br label %ehcleanup172 @@ -4216,17 +4216,17 @@ if.end171: ; preds = %catch147 ret void ehcleanup172: ; preds = %cleanup.action169, %ehcleanup165, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i319, %lpad150, %lpad142 - %.merged29 = phi { ptr, i32 } [ %.merged30, %cleanup.action169 ], [ %97, %ehcleanup165 ], [ %95, %lpad150 ], [ %91, %lpad142 ], [ %97, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i319 ] + %.merged23 = phi { ptr, i32 } [ %.merged24, %cleanup.action169 ], [ %97, %ehcleanup165 ], [ %95, %lpad150 ], [ %91, %lpad142 ], [ %97, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i319 ] call void @_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(120) %is134) #27 br label %ehcleanup174 ehcleanup174: ; preds = %ehcleanup172, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit316 - %.merged28 = phi { ptr, i32 } [ %.merged29, %ehcleanup172 ], [ %88, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit316 ] + %.merged = phi { ptr, i32 } [ %.merged23, %ehcleanup172 ], [ %88, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit316 ] call void @llvm.lifetime.end.p0(i64 384, ptr nonnull %is134) #27 br label %eh.resume eh.resume: ; preds = %ehcleanup174, %ehcleanup133, %ehcleanup92, %ehcleanup61 - %lpad.val177.merged = phi { ptr, i32 } [ %.pn192.pn.pn, %ehcleanup61 ], [ %.merged28, %ehcleanup174 ], [ %.merged25, %ehcleanup133 ], [ %.merged, %ehcleanup92 ] + %lpad.val177.merged = phi { ptr, i32 } [ %.pn192.pn.pn, %ehcleanup61 ], [ %.merged, %ehcleanup174 ], [ %.merged28, %ehcleanup133 ], [ %.merged25, %ehcleanup92 ] resume { ptr, i32 } %lpad.val177.merged unreachable: ; preds = %invoke.cont162, %invoke.cont121, %invoke.cont80, %invoke.cont50, %invoke.cont25, %invoke.cont12 diff --git a/bench/opencv/optimized/nonrigid_icp.cpp.ll b/bench/opencv/optimized/nonrigid_icp.cpp.ll index 4f93f2ea5ec..350145f67ea 100644 --- a/bench/opencv/optimized/nonrigid_icp.cpp.ll +++ b/bench/opencv/optimized/nonrigid_icp.cpp.ll @@ -1161,9 +1161,8 @@ _ZNSt6vectorIfSaIfEED2Ev.exit1045.thread: ; preds = %321, %.lr.ph1493 %374 = ptrtoint ptr %369 to i64 %375 = sub i64 %373, %374 %376 = sdiv exact i64 %375, 40 - %umax = call i64 @llvm.umax.i64(i64 %376, i64 1) - %377 = getelementptr %"struct.cv::Ptr.40", ptr %372, i64 %umax - %378 = getelementptr i8, ptr %377, i64 -16 + %377 = call i64 @llvm.usub.sat.i64(i64 %376, i64 1) + %378 = getelementptr inbounds %"struct.cv::Ptr.40", ptr %372, i64 %377 %379 = load ptr, ptr %378, align 8 %380 = load float, ptr %379, align 4, !noalias !36 %381 = getelementptr inbounds i8, ptr %379, i64 4 @@ -1794,9 +1793,8 @@ _ZNSt6vectorIfSaIfEED2Ev.exit651: ; preds = %531, %_ZNK2cv6dynaf %662 = ptrtoint ptr %654 to i64 %663 = sub i64 %661, %662 %664 = sdiv exact i64 %663, 40 - %umax1635 = call i64 @llvm.umax.i64(i64 %664, i64 1) - %665 = getelementptr %"struct.cv::Ptr.40", ptr %660, i64 %umax1635 - %666 = getelementptr i8, ptr %665, i64 -16 + %665 = call i64 @llvm.usub.sat.i64(i64 %664, i64 1) + %666 = getelementptr inbounds %"struct.cv::Ptr.40", ptr %660, i64 %665 %667 = load ptr, ptr %666, align 8 %668 = load float, ptr %667, align 4, !noalias !67 %669 = getelementptr inbounds i8, ptr %667, i64 4 @@ -6517,6 +6515,9 @@ declare i64 @llvm.umax.i64(i64, i64) #21 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i64 @llvm.umin.i64(i64, i64) #21 +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare i64 @llvm.usub.sat.i64(i64, i64) #21 + attributes #0 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+sse3,+x87" "tune-cpu"="generic" } attributes #1 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+sse3,+x87" "tune-cpu"="generic" } attributes #2 = { nofree nounwind } diff --git a/bench/openjdk/optimized/archiveHeapWriter.ll b/bench/openjdk/optimized/archiveHeapWriter.ll index 67b13cf4772..a7a573ddaa6 100644 --- a/bench/openjdk/optimized/archiveHeapWriter.ll +++ b/bench/openjdk/optimized/archiveHeapWriter.ll @@ -1224,33 +1224,33 @@ _ZN7oopDesc11oop_iterateIN17ArchiveHeapWriter20EmbeddedOopRelocatorEEEvPT_.exit: %145 = getelementptr inbounds i8, ptr %143, i64 %144 call void @_ZN7oopDesc16set_narrow_klassEj(ptr noundef nonnull align 8 dereferenceable(16) %145, i32 noundef %136) #18 %.not = icmp eq ptr %0, null - br i1 %.not, label %._crit_edge58, label %146 + br i1 %.not, label %._crit_edge57, label %146 146: ; preds = %._crit_edge %147 = load i32, ptr %0, align 4 %148 = icmp sgt i32 %147, 0 - br i1 %148, label %.lr.ph57.preheader, label %._crit_edge58 + br i1 %148, label %.lr.ph56.preheader, label %._crit_edge57 -.lr.ph57.preheader: ; preds = %146 +.lr.ph56.preheader: ; preds = %146 %wide.trip.count = zext nneg i32 %147 to i64 - br label %.lr.ph57 + br label %.lr.ph56 -.lr.ph57: ; preds = %.lr.ph57.preheader, %_ZN17ArchiveHeapWriter16relocate_root_atIP7oopDescEEvS2_iP11CHeapBitMap.exit - %indvars.iv65 = phi i64 [ 0, %.lr.ph57.preheader ], [ %indvars.iv.next66, %_ZN17ArchiveHeapWriter16relocate_root_atIP7oopDescEEvS2_iP11CHeapBitMap.exit ] +.lr.ph56: ; preds = %.lr.ph56.preheader, %_ZN17ArchiveHeapWriter16relocate_root_atIP7oopDescEEvS2_iP11CHeapBitMap.exit + %indvars.iv64 = phi i64 [ 0, %.lr.ph56.preheader ], [ %indvars.iv.next65, %_ZN17ArchiveHeapWriter16relocate_root_atIP7oopDescEEvS2_iP11CHeapBitMap.exit ] %149 = load i8, ptr @UseCompressedOops, align 1 %150 = trunc i8 %149 to i1 br i1 %150, label %151, label %153 -151: ; preds = %.lr.ph57 - %152 = trunc nuw nsw i64 %indvars.iv65 to i32 +151: ; preds = %.lr.ph56 + %152 = trunc nuw nsw i64 %indvars.iv64 to i32 call void @_ZN17ArchiveHeapWriter16relocate_root_atI9narrowOopEEvP7oopDesciP11CHeapBitMap(ptr noundef %133, i32 noundef %152, ptr noundef nonnull %9) br label %_ZN17ArchiveHeapWriter16relocate_root_atIP7oopDescEEvS2_iP11CHeapBitMap.exit -153: ; preds = %.lr.ph57 +153: ; preds = %.lr.ph56 %154 = load i8, ptr @UseCompressedClassPointers, align 1 %155 = trunc i8 %154 to i1 %156 = select i1 %155, i64 16, i64 24 - %157 = shl nuw nsw i64 %indvars.iv65, 3 + %157 = shl nuw nsw i64 %indvars.iv64, 3 %158 = load i64, ptr @_ZN17ArchiveHeapWriter18_heap_roots_offsetE, align 8 %159 = load ptr, ptr @_ZN17ArchiveHeapWriter7_bufferE, align 8 %160 = getelementptr inbounds i8, ptr %159, i64 8 @@ -1330,11 +1330,11 @@ _ZN17ArchiveHeapWriter27source_obj_to_requested_objEP7oopDesc.exit.i.i: ; preds br label %_ZN17ArchiveHeapWriter16relocate_root_atIP7oopDescEEvS2_iP11CHeapBitMap.exit _ZN17ArchiveHeapWriter16relocate_root_atIP7oopDescEEvS2_iP11CHeapBitMap.exit: ; preds = %_ZN17ArchiveHeapWriter27source_obj_to_requested_objEP7oopDesc.exit.i.i, %153, %151 - %indvars.iv.next66 = add nuw nsw i64 %indvars.iv65, 1 - %exitcond.not = icmp eq i64 %indvars.iv.next66, %wide.trip.count - br i1 %exitcond.not, label %._crit_edge58, label %.lr.ph57, !llvm.loop !19 + %indvars.iv.next65 = add nuw nsw i64 %indvars.iv64, 1 + %exitcond.not = icmp eq i64 %indvars.iv.next65, %wide.trip.count + br i1 %exitcond.not, label %._crit_edge57, label %.lr.ph56, !llvm.loop !19 -._crit_edge58: ; preds = %_ZN17ArchiveHeapWriter16relocate_root_atIP7oopDescEEvS2_iP11CHeapBitMap.exit, %._crit_edge, %146 +._crit_edge57: ; preds = %_ZN17ArchiveHeapWriter16relocate_root_atIP7oopDescEEvS2_iP11CHeapBitMap.exit, %._crit_edge, %146 call void @_ZN17ArchiveHeapWriter14compute_ptrmapEP15ArchiveHeapInfo(ptr noundef nonnull %1) %209 = load ptr, ptr @_ZN17ArchiveHeapWriter7_bufferE, align 8 %210 = load i32, ptr %209, align 4 @@ -1348,7 +1348,7 @@ _ZN17ArchiveHeapWriter16relocate_root_atIP7oopDescEEvS2_iP11CHeapBitMap.exit: ; %.not.i35 = icmp eq i64 %217, 0 br i1 %.not.i35, label %.loopexit.i.i.i.i, label %218 -218: ; preds = %._crit_edge58 +218: ; preds = %._crit_edge57 %219 = load ptr, ptr %9, align 8 %220 = load i64, ptr %219, align 8 %221 = and i64 %220, 1 @@ -1362,8 +1362,7 @@ _ZN17ArchiveHeapWriter16relocate_root_atIP7oopDescEEvS2_iP11CHeapBitMap.exit: ; 224: ; preds = %222 %225 = add i64 %217, 63 %226 = lshr i64 %225, 6 - %umax.i = call i64 @llvm.umax.i64(i64 %226, i64 1) - %227 = add nsw i64 %umax.i, -1 + %227 = call i64 @llvm.usub.sat.i64(i64 %226, i64 1) br label %228 228: ; preds = %229, %224 @@ -1390,7 +1389,7 @@ _ZN17ArchiveHeapWriter16relocate_root_atIP7oopDescEEvS2_iP11CHeapBitMap.exit: ; %238 = icmp ult i64 %237, %217 br i1 %238, label %_ZNK6BitMap18find_first_set_bitEm.exit.i, label %.loopexit.i.i.i.i -.loopexit.i.i.i.i: ; preds = %228, %235, %._crit_edge58 +.loopexit.i.i.i.i: ; preds = %228, %235, %._crit_edge57 br label %_ZNK6BitMap18find_first_set_bitEm.exit.i _ZNK6BitMap18find_first_set_bitEm.exit.i: ; preds = %.loopexit.i.i.i.i, %235, %218 @@ -1432,21 +1431,20 @@ _ZL16log_bitmap_usagePKcP6BitMapm.exit: ; preds = %_ZNK6BitMap18find_f 258: ; preds = %256 %259 = add i64 %250, 63 %260 = lshr i64 %259, 6 - %umax.i44 = call i64 @llvm.umax.i64(i64 %260, i64 1) - %261 = add nsw i64 %umax.i44, -1 + %261 = call i64 @llvm.usub.sat.i64(i64 %260, i64 1) br label %262 262: ; preds = %263, %258 - %.025.i.i.i.i45 = phi i64 [ 0, %258 ], [ %264, %263 ] - %exitcond.not.i46 = icmp eq i64 %.025.i.i.i.i45, %261 - br i1 %exitcond.not.i46, label %.loopexit.i.i.i.i43, label %263 + %.025.i.i.i.i44 = phi i64 [ 0, %258 ], [ %264, %263 ] + %exitcond.not.i45 = icmp eq i64 %.025.i.i.i.i44, %261 + br i1 %exitcond.not.i45, label %.loopexit.i.i.i.i43, label %263 263: ; preds = %262 - %264 = add nuw nsw i64 %.025.i.i.i.i45, 1 + %264 = add nuw nsw i64 %.025.i.i.i.i44, 1 %265 = getelementptr inbounds i64, ptr %253, i64 %264 %266 = load i64, ptr %265, align 8 - %.not36.i.i.i.i47 = icmp eq i64 %266, 0 - br i1 %.not36.i.i.i.i47, label %262, label %267, !llvm.loop !20 + %.not36.i.i.i.i46 = icmp eq i64 %266, 0 + br i1 %.not36.i.i.i.i46, label %262, label %267, !llvm.loop !20 267: ; preds = %263 %268 = shl i64 %264, 6 @@ -1467,7 +1465,7 @@ _ZNK6BitMap18find_first_set_bitEm.exit.i38: ; preds = %.loopexit.i.i.i.i43 %.0.i.i.i.i39 = phi i64 [ %250, %.loopexit.i.i.i.i43 ], [ 0, %251 ], [ %271, %269 ] %273 = load volatile ptr, ptr getelementptr inbounds (i8, ptr @_ZN16LogTagSetMappingILN6LogTag4typeE14ELS1_0ELS1_0ELS1_0ELS1_0ELS1_0EE7_tagsetE, i64 64), align 8 %.not11.i40 = icmp eq ptr %273, null - br i1 %.not11.i40, label %_ZL16log_bitmap_usagePKcP6BitMapm.exit48, label %274 + br i1 %.not11.i40, label %_ZL16log_bitmap_usagePKcP6BitMapm.exit47, label %274 274: ; preds = %_ZNK6BitMap18find_first_set_bitEm.exit.i38 %275 = mul i64 %.0.i.i.i.i39, 100 @@ -1478,9 +1476,9 @@ _ZNK6BitMap18find_first_set_bitEm.exit.i38: ; preds = %.loopexit.i.i.i.i43 %280 = mul i64 %279, 100 %281 = udiv i64 %280, %248 call void (ptr, ...) @_ZN7LogImplILN6LogTag4typeE14ELS1_0ELS1_0ELS1_0ELS1_0ELS1_0EE5writeILN8LogLevel4typeE3EEEvPKcz(ptr noundef nonnull @.str.32, ptr noundef nonnull @.str.19, i64 noundef %.0.i.i.i.i39, i64 noundef %250, i64 noundef %276, i64 noundef %278, i64 noundef %281) - br label %_ZL16log_bitmap_usagePKcP6BitMapm.exit48 + br label %_ZL16log_bitmap_usagePKcP6BitMapm.exit47 -_ZL16log_bitmap_usagePKcP6BitMapm.exit48: ; preds = %_ZNK6BitMap18find_first_set_bitEm.exit.i38, %274 +_ZL16log_bitmap_usagePKcP6BitMapm.exit47: ; preds = %_ZNK6BitMap18find_first_set_bitEm.exit.i38, %274 ret void } @@ -9399,6 +9397,9 @@ declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #16 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #16 +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare i64 @llvm.usub.sat.i64(i64, i64) #15 + ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) declare void @llvm.experimental.noalias.scope.decl(metadata) #17 diff --git a/bench/openjdk/optimized/filemap.ll b/bench/openjdk/optimized/filemap.ll index 32ea49305bb..59f39859a9a 100644 --- a/bench/openjdk/optimized/filemap.ll +++ b/bench/openjdk/optimized/filemap.ll @@ -5643,8 +5643,7 @@ define hidden noundef i64 @_ZN11FileMapInfo27remove_bitmap_leading_zerosEP11CHea 11: ; preds = %9 %12 = add i64 %4, 63 %13 = lshr i64 %12, 6 - %umax = tail call i64 @llvm.umax.i64(i64 %13, i64 1) - %14 = add nsw i64 %umax, -1 + %14 = tail call i64 @llvm.usub.sat.i64(i64 %13, i64 1) br label %15 15: ; preds = %16, %11 @@ -5703,8 +5702,7 @@ define hidden noundef ptr @_ZN11FileMapInfo19write_bitmap_regionEP11CHeapBitMapS 14: ; preds = %12 %15 = add i64 %7, 63 %16 = lshr i64 %15, 6 - %umax.i = tail call i64 @llvm.umax.i64(i64 %16, i64 1) - %17 = add nsw i64 %umax.i, -1 + %17 = tail call i64 @llvm.usub.sat.i64(i64 %16, i64 1) br label %18 18: ; preds = %19, %14 @@ -5747,7 +5745,7 @@ _ZN11FileMapInfo27remove_bitmap_leading_zerosEP11CHeapBitMap.exit: ; preds = %8, %33 = load i64, ptr %32, align 8 %34 = and i64 %33, 1 %.not.i.i.i.i43 = icmp eq i64 %34, 0 - br i1 %.not.i.i.i.i43, label %35, label %_ZN11FileMapInfo27remove_bitmap_leading_zerosEP11CHeapBitMap.exit52 + br i1 %.not.i.i.i.i43, label %35, label %_ZN11FileMapInfo27remove_bitmap_leading_zerosEP11CHeapBitMap.exit51 35: ; preds = %31 %36 = icmp eq i64 %33, 0 @@ -5756,21 +5754,20 @@ _ZN11FileMapInfo27remove_bitmap_leading_zerosEP11CHeapBitMap.exit: ; preds = %8, 37: ; preds = %35 %38 = add i64 %30, 63 %39 = lshr i64 %38, 6 - %umax.i48 = tail call i64 @llvm.umax.i64(i64 %39, i64 1) - %40 = add nsw i64 %umax.i48, -1 + %40 = tail call i64 @llvm.usub.sat.i64(i64 %39, i64 1) br label %41 41: ; preds = %42, %37 - %.025.i.i.i.i49 = phi i64 [ 0, %37 ], [ %43, %42 ] - %exitcond.not.i50 = icmp eq i64 %.025.i.i.i.i49, %40 - br i1 %exitcond.not.i50, label %.loopexit.i.i.i.i47, label %42 + %.025.i.i.i.i48 = phi i64 [ 0, %37 ], [ %43, %42 ] + %exitcond.not.i49 = icmp eq i64 %.025.i.i.i.i48, %40 + br i1 %exitcond.not.i49, label %.loopexit.i.i.i.i47, label %42 42: ; preds = %41 - %43 = add nuw nsw i64 %.025.i.i.i.i49, 1 + %43 = add nuw nsw i64 %.025.i.i.i.i48, 1 %44 = getelementptr inbounds i64, ptr %32, i64 %43 %45 = load i64, ptr %44, align 8 - %.not36.i.i.i.i51 = icmp eq i64 %45, 0 - br i1 %.not36.i.i.i.i51, label %41, label %46, !llvm.loop !34 + %.not36.i.i.i.i50 = icmp eq i64 %45, 0 + br i1 %.not36.i.i.i.i50, label %41, label %46, !llvm.loop !34 46: ; preds = %42 %47 = shl i64 %43, 6 @@ -5782,12 +5779,12 @@ _ZN11FileMapInfo27remove_bitmap_leading_zerosEP11CHeapBitMap.exit: ; preds = %8, %49 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.027.ph.i.i.i.i45, i1 true) %50 = or disjoint i64 %.026.ph.i.i.i.i46, %49 %51 = icmp ult i64 %50, %30 - br i1 %51, label %_ZN11FileMapInfo27remove_bitmap_leading_zerosEP11CHeapBitMap.exit52, label %.loopexit.i.i.i.i47 + br i1 %51, label %_ZN11FileMapInfo27remove_bitmap_leading_zerosEP11CHeapBitMap.exit51, label %.loopexit.i.i.i.i47 .loopexit.i.i.i.i47: ; preds = %41, %48, %_ZN11FileMapInfo27remove_bitmap_leading_zerosEP11CHeapBitMap.exit - br label %_ZN11FileMapInfo27remove_bitmap_leading_zerosEP11CHeapBitMap.exit52 + br label %_ZN11FileMapInfo27remove_bitmap_leading_zerosEP11CHeapBitMap.exit51 -_ZN11FileMapInfo27remove_bitmap_leading_zerosEP11CHeapBitMap.exit52: ; preds = %31, %48, %.loopexit.i.i.i.i47 +_ZN11FileMapInfo27remove_bitmap_leading_zerosEP11CHeapBitMap.exit51: ; preds = %31, %48, %.loopexit.i.i.i.i47 %.0.i.i.i.i44 = phi i64 [ %30, %.loopexit.i.i.i.i47 ], [ 0, %31 ], [ %50, %48 ] tail call void @_ZN14GrowableBitMapI11CHeapBitMapE8truncateEmm(ptr noundef nonnull align 8 dereferenceable(16) %2, i64 noundef %.0.i.i.i.i44, i64 noundef %30) #25 %52 = getelementptr inbounds i8, ptr %0, i64 32 @@ -5812,19 +5809,19 @@ _ZN11FileMapInfo27remove_bitmap_leading_zerosEP11CHeapBitMap.exit52: ; preds = % %.not = icmp eq i64 %67, 0 br i1 %.not, label %132, label %68 -68: ; preds = %_ZN11FileMapInfo27remove_bitmap_leading_zerosEP11CHeapBitMap.exit52 +68: ; preds = %_ZN11FileMapInfo27remove_bitmap_leading_zerosEP11CHeapBitMap.exit51 %69 = getelementptr inbounds i8, ptr %3, i64 16 %70 = getelementptr inbounds i8, ptr %3, i64 24 %71 = load i64, ptr %70, align 8 - %.not.i53 = icmp eq i64 %71, 0 - br i1 %.not.i53, label %.loopexit.i.i.i.i58, label %72 + %.not.i52 = icmp eq i64 %71, 0 + br i1 %.not.i52, label %.loopexit.i.i.i.i57, label %72 72: ; preds = %68 %73 = load ptr, ptr %69, align 8 %74 = load i64, ptr %73, align 8 %75 = and i64 %74, 1 - %.not.i.i.i.i54 = icmp eq i64 %75, 0 - br i1 %.not.i.i.i.i54, label %76, label %_ZN11FileMapInfo27remove_bitmap_leading_zerosEP11CHeapBitMap.exit63 + %.not.i.i.i.i53 = icmp eq i64 %75, 0 + br i1 %.not.i.i.i.i53, label %76, label %_ZN11FileMapInfo27remove_bitmap_leading_zerosEP11CHeapBitMap.exit61 76: ; preds = %72 %77 = icmp eq i64 %74, 0 @@ -5833,52 +5830,51 @@ _ZN11FileMapInfo27remove_bitmap_leading_zerosEP11CHeapBitMap.exit52: ; preds = % 78: ; preds = %76 %79 = add i64 %71, 63 %80 = lshr i64 %79, 6 - %umax.i59 = tail call i64 @llvm.umax.i64(i64 %80, i64 1) - %81 = add nsw i64 %umax.i59, -1 + %81 = tail call i64 @llvm.usub.sat.i64(i64 %80, i64 1) br label %82 82: ; preds = %83, %78 - %.025.i.i.i.i60 = phi i64 [ 0, %78 ], [ %84, %83 ] - %exitcond.not.i61 = icmp eq i64 %.025.i.i.i.i60, %81 - br i1 %exitcond.not.i61, label %.loopexit.i.i.i.i58, label %83 + %.025.i.i.i.i58 = phi i64 [ 0, %78 ], [ %84, %83 ] + %exitcond.not.i59 = icmp eq i64 %.025.i.i.i.i58, %81 + br i1 %exitcond.not.i59, label %.loopexit.i.i.i.i57, label %83 83: ; preds = %82 - %84 = add nuw nsw i64 %.025.i.i.i.i60, 1 + %84 = add nuw nsw i64 %.025.i.i.i.i58, 1 %85 = getelementptr inbounds i64, ptr %73, i64 %84 %86 = load i64, ptr %85, align 8 - %.not36.i.i.i.i62 = icmp eq i64 %86, 0 - br i1 %.not36.i.i.i.i62, label %82, label %87, !llvm.loop !34 + %.not36.i.i.i.i60 = icmp eq i64 %86, 0 + br i1 %.not36.i.i.i.i60, label %82, label %87, !llvm.loop !34 87: ; preds = %83 %88 = shl i64 %84, 6 br label %89 89: ; preds = %87, %76 - %.027.ph.i.i.i.i56 = phi i64 [ %74, %76 ], [ %86, %87 ] - %.026.ph.i.i.i.i57 = phi i64 [ 0, %76 ], [ %88, %87 ] - %90 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.027.ph.i.i.i.i56, i1 true) - %91 = or disjoint i64 %.026.ph.i.i.i.i57, %90 + %.027.ph.i.i.i.i55 = phi i64 [ %74, %76 ], [ %86, %87 ] + %.026.ph.i.i.i.i56 = phi i64 [ 0, %76 ], [ %88, %87 ] + %90 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.027.ph.i.i.i.i55, i1 true) + %91 = or disjoint i64 %.026.ph.i.i.i.i56, %90 %92 = icmp ult i64 %91, %71 - br i1 %92, label %_ZN11FileMapInfo27remove_bitmap_leading_zerosEP11CHeapBitMap.exit63, label %.loopexit.i.i.i.i58 + br i1 %92, label %_ZN11FileMapInfo27remove_bitmap_leading_zerosEP11CHeapBitMap.exit61, label %.loopexit.i.i.i.i57 -.loopexit.i.i.i.i58: ; preds = %82, %89, %68 - br label %_ZN11FileMapInfo27remove_bitmap_leading_zerosEP11CHeapBitMap.exit63 +.loopexit.i.i.i.i57: ; preds = %82, %89, %68 + br label %_ZN11FileMapInfo27remove_bitmap_leading_zerosEP11CHeapBitMap.exit61 -_ZN11FileMapInfo27remove_bitmap_leading_zerosEP11CHeapBitMap.exit63: ; preds = %72, %89, %.loopexit.i.i.i.i58 - %.0.i.i.i.i55 = phi i64 [ %71, %.loopexit.i.i.i.i58 ], [ 0, %72 ], [ %91, %89 ] - tail call void @_ZN14GrowableBitMapI11CHeapBitMapE8truncateEmm(ptr noundef nonnull align 8 dereferenceable(16) %69, i64 noundef %.0.i.i.i.i55, i64 noundef %71) #25 +_ZN11FileMapInfo27remove_bitmap_leading_zerosEP11CHeapBitMap.exit61: ; preds = %72, %89, %.loopexit.i.i.i.i57 + %.0.i.i.i.i54 = phi i64 [ %71, %.loopexit.i.i.i.i57 ], [ 0, %72 ], [ %91, %89 ] + tail call void @_ZN14GrowableBitMapI11CHeapBitMapE8truncateEmm(ptr noundef nonnull align 8 dereferenceable(16) %69, i64 noundef %.0.i.i.i.i54, i64 noundef %71) #25 %93 = getelementptr inbounds i8, ptr %3, i64 40 %94 = getelementptr inbounds i8, ptr %3, i64 48 %95 = load i64, ptr %94, align 8 - %.not.i64 = icmp eq i64 %95, 0 - br i1 %.not.i64, label %.loopexit.i.i.i.i69, label %96 + %.not.i62 = icmp eq i64 %95, 0 + br i1 %.not.i62, label %.loopexit.i.i.i.i67, label %96 -96: ; preds = %_ZN11FileMapInfo27remove_bitmap_leading_zerosEP11CHeapBitMap.exit63 +96: ; preds = %_ZN11FileMapInfo27remove_bitmap_leading_zerosEP11CHeapBitMap.exit61 %97 = load ptr, ptr %93, align 8 %98 = load i64, ptr %97, align 8 %99 = and i64 %98, 1 - %.not.i.i.i.i65 = icmp eq i64 %99, 0 - br i1 %.not.i.i.i.i65, label %100, label %_ZN11FileMapInfo27remove_bitmap_leading_zerosEP11CHeapBitMap.exit74 + %.not.i.i.i.i63 = icmp eq i64 %99, 0 + br i1 %.not.i.i.i.i63, label %100, label %_ZN11FileMapInfo27remove_bitmap_leading_zerosEP11CHeapBitMap.exit71 100: ; preds = %96 %101 = icmp eq i64 %98, 0 @@ -5887,46 +5883,45 @@ _ZN11FileMapInfo27remove_bitmap_leading_zerosEP11CHeapBitMap.exit63: ; preds = % 102: ; preds = %100 %103 = add i64 %95, 63 %104 = lshr i64 %103, 6 - %umax.i70 = tail call i64 @llvm.umax.i64(i64 %104, i64 1) - %105 = add nsw i64 %umax.i70, -1 + %105 = tail call i64 @llvm.usub.sat.i64(i64 %104, i64 1) br label %106 106: ; preds = %107, %102 - %.025.i.i.i.i71 = phi i64 [ 0, %102 ], [ %108, %107 ] - %exitcond.not.i72 = icmp eq i64 %.025.i.i.i.i71, %105 - br i1 %exitcond.not.i72, label %.loopexit.i.i.i.i69, label %107 + %.025.i.i.i.i68 = phi i64 [ 0, %102 ], [ %108, %107 ] + %exitcond.not.i69 = icmp eq i64 %.025.i.i.i.i68, %105 + br i1 %exitcond.not.i69, label %.loopexit.i.i.i.i67, label %107 107: ; preds = %106 - %108 = add nuw nsw i64 %.025.i.i.i.i71, 1 + %108 = add nuw nsw i64 %.025.i.i.i.i68, 1 %109 = getelementptr inbounds i64, ptr %97, i64 %108 %110 = load i64, ptr %109, align 8 - %.not36.i.i.i.i73 = icmp eq i64 %110, 0 - br i1 %.not36.i.i.i.i73, label %106, label %111, !llvm.loop !34 + %.not36.i.i.i.i70 = icmp eq i64 %110, 0 + br i1 %.not36.i.i.i.i70, label %106, label %111, !llvm.loop !34 111: ; preds = %107 %112 = shl i64 %108, 6 br label %113 113: ; preds = %111, %100 - %.027.ph.i.i.i.i67 = phi i64 [ %98, %100 ], [ %110, %111 ] - %.026.ph.i.i.i.i68 = phi i64 [ 0, %100 ], [ %112, %111 ] - %114 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.027.ph.i.i.i.i67, i1 true) - %115 = or disjoint i64 %.026.ph.i.i.i.i68, %114 + %.027.ph.i.i.i.i65 = phi i64 [ %98, %100 ], [ %110, %111 ] + %.026.ph.i.i.i.i66 = phi i64 [ 0, %100 ], [ %112, %111 ] + %114 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.027.ph.i.i.i.i65, i1 true) + %115 = or disjoint i64 %.026.ph.i.i.i.i66, %114 %116 = icmp ult i64 %115, %95 - br i1 %116, label %_ZN11FileMapInfo27remove_bitmap_leading_zerosEP11CHeapBitMap.exit74, label %.loopexit.i.i.i.i69 + br i1 %116, label %_ZN11FileMapInfo27remove_bitmap_leading_zerosEP11CHeapBitMap.exit71, label %.loopexit.i.i.i.i67 -.loopexit.i.i.i.i69: ; preds = %106, %113, %_ZN11FileMapInfo27remove_bitmap_leading_zerosEP11CHeapBitMap.exit63 - br label %_ZN11FileMapInfo27remove_bitmap_leading_zerosEP11CHeapBitMap.exit74 +.loopexit.i.i.i.i67: ; preds = %106, %113, %_ZN11FileMapInfo27remove_bitmap_leading_zerosEP11CHeapBitMap.exit61 + br label %_ZN11FileMapInfo27remove_bitmap_leading_zerosEP11CHeapBitMap.exit71 -_ZN11FileMapInfo27remove_bitmap_leading_zerosEP11CHeapBitMap.exit74: ; preds = %96, %113, %.loopexit.i.i.i.i69 - %.0.i.i.i.i66 = phi i64 [ %95, %.loopexit.i.i.i.i69 ], [ 0, %96 ], [ %115, %113 ] - tail call void @_ZN14GrowableBitMapI11CHeapBitMapE8truncateEmm(ptr noundef nonnull align 8 dereferenceable(16) %93, i64 noundef %.0.i.i.i.i66, i64 noundef %95) #25 +_ZN11FileMapInfo27remove_bitmap_leading_zerosEP11CHeapBitMap.exit71: ; preds = %96, %113, %.loopexit.i.i.i.i67 + %.0.i.i.i.i64 = phi i64 [ %95, %.loopexit.i.i.i.i67 ], [ 0, %96 ], [ %115, %113 ] + tail call void @_ZN14GrowableBitMapI11CHeapBitMapE8truncateEmm(ptr noundef nonnull align 8 dereferenceable(16) %93, i64 noundef %.0.i.i.i.i64, i64 noundef %95) #25 %117 = load ptr, ptr %52, align 8 %118 = getelementptr inbounds i8, ptr %117, i64 760 - store i64 %.0.i.i.i.i55, ptr %118, align 8 + store i64 %.0.i.i.i.i54, ptr %118, align 8 %119 = load ptr, ptr %52, align 8 %120 = getelementptr inbounds i8, ptr %119, i64 768 - store i64 %.0.i.i.i.i66, ptr %120, align 8 + store i64 %.0.i.i.i.i64, ptr %120, align 8 %121 = load i64, ptr %70, align 8 %122 = add i64 %121, 63 %123 = lshr i64 %122, 3 @@ -5942,8 +5937,8 @@ _ZN11FileMapInfo27remove_bitmap_leading_zerosEP11CHeapBitMap.exit74: ; preds = % store i64 %131, ptr %4, align 8 br label %132 -132: ; preds = %_ZN11FileMapInfo27remove_bitmap_leading_zerosEP11CHeapBitMap.exit74, %_ZN11FileMapInfo27remove_bitmap_leading_zerosEP11CHeapBitMap.exit52 - %133 = phi i64 [ %131, %_ZN11FileMapInfo27remove_bitmap_leading_zerosEP11CHeapBitMap.exit74 ], [ %65, %_ZN11FileMapInfo27remove_bitmap_leading_zerosEP11CHeapBitMap.exit52 ] +132: ; preds = %_ZN11FileMapInfo27remove_bitmap_leading_zerosEP11CHeapBitMap.exit71, %_ZN11FileMapInfo27remove_bitmap_leading_zerosEP11CHeapBitMap.exit51 + %133 = phi i64 [ %131, %_ZN11FileMapInfo27remove_bitmap_leading_zerosEP11CHeapBitMap.exit71 ], [ %65, %_ZN11FileMapInfo27remove_bitmap_leading_zerosEP11CHeapBitMap.exit51 ] %134 = tail call noundef ptr @_Z12AllocateHeapm8MEMFLAGSN17AllocFailStrategy13AllocFailEnumE(i64 noundef %133, i8 noundef zeroext 13, i32 noundef 0) #25 %135 = load ptr, ptr %52, align 8 %136 = load i64, ptr %6, align 8 @@ -5969,8 +5964,8 @@ _ZN11FileMapInfo27remove_bitmap_leading_zerosEP11CHeapBitMap.exit74: ; preds = % %151 = getelementptr inbounds i8, ptr %134, i64 %142 tail call void @_ZNK6BitMap8write_toEPmm(ptr noundef nonnull align 8 dereferenceable(16) %2, ptr noundef %151, i64 noundef %150) #25 %152 = load i64, ptr %66, align 8 - %.not76 = icmp eq i64 %152, 0 - br i1 %.not76, label %177, label %153 + %.not73 = icmp eq i64 %152, 0 + br i1 %.not73, label %177, label %153 153: ; preds = %132 %154 = add nuw nsw i64 %150, %142 @@ -6019,8 +6014,8 @@ _ZN11FileMapInfo27remove_bitmap_leading_zerosEP11CHeapBitMap.exit74: ; preds = % 187: ; preds = %177 %188 = load volatile ptr, ptr getelementptr inbounds (i8, ptr @_ZN16LogTagSetMappingILN6LogTag4typeE14ELS1_0ELS1_0ELS1_0ELS1_0ELS1_0EE7_tagsetE, i64 64), align 8 - %.not.i75 = icmp eq ptr %188, null - br i1 %.not.i75, label %191, label %189 + %.not.i72 = icmp eq ptr %188, null + br i1 %.not.i72, label %191, label %189 189: ; preds = %187 %190 = load i64, ptr %182, align 8 @@ -9467,7 +9462,7 @@ declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #23 declare void @llvm.experimental.noalias.scope.decl(metadata) #24 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i64 @llvm.umax.i64(i64, i64) #21 +declare i64 @llvm.usub.sat.i64(i64, i64) #21 attributes #0 = { mustprogress nounwind uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { mustprogress nofree norecurse nosync nounwind willreturn memory(write, inaccessiblemem: none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } diff --git a/bench/openjdk/optimized/hb-ot-layout.ll b/bench/openjdk/optimized/hb-ot-layout.ll index acc1ffaff8f..02cb98c9d0c 100644 --- a/bench/openjdk/optimized/hb-ot-layout.ll +++ b/bench/openjdk/optimized/hb-ot-layout.ll @@ -75516,8 +75516,7 @@ _ZNK2OT21hb_ot_apply_context_t21match_properties_markEjjj.exit450.thread524: ; p 504: ; preds = %_ZNK2OT21hb_ot_apply_context_t21match_properties_markEjjj.exit450.thread524 %505 = load i32, ptr %254, align 4 - %.sroa.speculated = tail call i32 @llvm.umax.i32(i32 %505, i32 1) - %506 = add i32 %.sroa.speculated, -1 + %506 = tail call i32 @llvm.usub.sat.i32(i32 %505, i32 1) br label %.loopexit 507: ; preds = %502, %.thread531 @@ -77263,8 +77262,7 @@ _ZNK2OT21hb_ot_apply_context_t21match_properties_markEjjj.exit456.thread532: ; p 527: ; preds = %_ZNK2OT21hb_ot_apply_context_t21match_properties_markEjjj.exit456.thread532 %528 = load i32, ptr %279, align 4 - %.sroa.speculated = tail call i32 @llvm.umax.i32(i32 %528, i32 1) - %529 = add i32 %.sroa.speculated, -1 + %529 = tail call i32 @llvm.usub.sat.i32(i32 %528, i32 1) br label %.loopexit 530: ; preds = %525, %.thread539 @@ -77683,8 +77681,7 @@ _ZNK2OT21hb_ot_apply_context_t21match_properties_markEjjj.exit.thread238: ; pred 179: ; preds = %_ZNK2OT21hb_ot_apply_context_t21match_properties_markEjjj.exit.thread238 %180 = load i32, ptr %63, align 4 - %.sroa.speculated = tail call i32 @llvm.umax.i32(i32 %180, i32 1) - %181 = add i32 %.sroa.speculated, -1 + %181 = tail call i32 @llvm.usub.sat.i32(i32 %180, i32 1) br label %.thread249 182: ; preds = %177, %.thread241 @@ -83164,8 +83161,7 @@ _ZL50_hb_glyph_info_is_default_ignorable_and_not_hiddenPK15hb_glyph_info_t.exit. 176: ; preds = %172 %177 = load i32, ptr %88, align 4 - %.sroa.speculated = tail call i32 @llvm.umax.i32(i32 %177, i32 1) - %178 = add i32 %.sroa.speculated, -1 + %178 = tail call i32 @llvm.usub.sat.i32(i32 %177, i32 1) br label %.loopexit .loopexit: ; preds = %thread-pre-split, %.thread, %176 @@ -86117,8 +86113,7 @@ _ZNK2OT21hb_ot_apply_context_t21match_properties_markEjjj.exit.thread210: ; pred 117: ; preds = %_ZNK2OT21hb_ot_apply_context_t21match_properties_markEjjj.exit.thread210 %118 = load i32, ptr %26, align 4 - %.sroa.speculated = tail call i32 @llvm.umax.i32(i32 %118, i32 1) - %119 = add i32 %.sroa.speculated, -1 + %119 = tail call i32 @llvm.usub.sat.i32(i32 %118, i32 1) br label %.loopexit .loopexit: ; preds = %.backedge, %25, %117 diff --git a/bench/openjdk/optimized/objectMonitor.ll b/bench/openjdk/optimized/objectMonitor.ll index 8bd822f5aa3..14a50c557d0 100644 --- a/bench/openjdk/optimized/objectMonitor.ll +++ b/bench/openjdk/optimized/objectMonitor.ll @@ -1402,44 +1402,43 @@ _ZN13ObjectMonitor16short_fixed_spinEP10JavaThreadib.exit: ; preds = %8, %10 _ZN13ObjectMonitor18try_set_owner_fromEPvS0_.exit: ; preds = %67 %69 = load volatile i32, ptr %21, align 8 %70 = icmp sgt i32 %69, 0 - %71 = tail call i32 @llvm.umax.i32(i32 %69, i32 200) - %spec.store.select.i = add nsw i32 %71, -200 + %spec.store.select.i = tail call i32 @llvm.usub.sat.i32(i32 %69, i32 200) %.0.i32 = select i1 %70, i32 %spec.store.select.i, i32 %69 store volatile i32 %.0.i32, ptr %21, align 8 br label %_ZN13ObjectMonitor18try_set_owner_fromEPvS0_.exit.thread38 _ZN13ObjectMonitor18try_set_owner_fromEPvS0_.exit.thread38: ; preds = %35, %60, %43, %_ZN13ObjectMonitor18try_set_owner_fromEPvS0_.exit - %72 = load volatile ptr, ptr %25, align 8 - %73 = icmp eq ptr %72, %1 - br i1 %73, label %74, label %_ZN13ObjectMonitor7TryLockEP10JavaThread.exit + %71 = load volatile ptr, ptr %25, align 8 + %72 = icmp eq ptr %71, %1 + br i1 %72, label %73, label %_ZN13ObjectMonitor7TryLockEP10JavaThread.exit -74: ; preds = %_ZN13ObjectMonitor18try_set_owner_fromEPvS0_.exit.thread38 +73: ; preds = %_ZN13ObjectMonitor18try_set_owner_fromEPvS0_.exit.thread38 store volatile ptr null, ptr %25, align 8 tail call void asm sideeffect "lock; addl $$0,0(%rsp)", "~{cc},~{memory},~{dirflag},~{fpsr},~{flags}"() #12, !srcloc !7 tail call void asm sideeffect "", "~{memory},~{dirflag},~{fpsr},~{flags}"() #12, !srcloc !6 - %75 = getelementptr inbounds i8, ptr %0, i64 64 - %76 = load volatile ptr, ptr %75, align 8 - %.not.i33 = icmp eq ptr %76, null - br i1 %.not.i33, label %77, label %_ZN13ObjectMonitor7TryLockEP10JavaThread.exit - -77: ; preds = %74 - %78 = tail call noundef ptr asm sideeffect "lock cmpxchgq $1,($3)", "={ax},r,{ax},r,~{cc},~{memory},~{dirflag},~{fpsr},~{flags}"(ptr %1, ptr null, ptr nonnull %75) #12, !srcloc !8 - %79 = icmp eq ptr %78, null - br i1 %79, label %80, label %_ZN13ObjectMonitor7TryLockEP10JavaThread.exit - -80: ; preds = %77 - %81 = load volatile ptr, ptr getelementptr inbounds (i8, ptr @_ZN16LogTagSetMappingILN6LogTag4typeE90ELS1_106ELS1_0ELS1_0ELS1_0ELS1_0EE7_tagsetE, i64 48), align 8 - %.not.i.i35 = icmp eq ptr %81, null - br i1 %.not.i.i35, label %_ZN13ObjectMonitor7TryLockEP10JavaThread.exit, label %82 - -82: ; preds = %80 - %83 = ptrtoint ptr %0 to i64 - %84 = ptrtoint ptr %1 to i64 - tail call void (ptr, ...) @_ZN7LogImplILN6LogTag4typeE90ELS1_106ELS1_0ELS1_0ELS1_0ELS1_0EE5writeILN8LogLevel4typeE1EEEvPKcz(ptr noundef nonnull @.str.54, i64 noundef %83, i64 noundef 0, i64 noundef %84) + %74 = getelementptr inbounds i8, ptr %0, i64 64 + %75 = load volatile ptr, ptr %74, align 8 + %.not.i33 = icmp eq ptr %75, null + br i1 %.not.i33, label %76, label %_ZN13ObjectMonitor7TryLockEP10JavaThread.exit + +76: ; preds = %73 + %77 = tail call noundef ptr asm sideeffect "lock cmpxchgq $1,($3)", "={ax},r,{ax},r,~{cc},~{memory},~{dirflag},~{fpsr},~{flags}"(ptr %1, ptr null, ptr nonnull %74) #12, !srcloc !8 + %78 = icmp eq ptr %77, null + br i1 %78, label %79, label %_ZN13ObjectMonitor7TryLockEP10JavaThread.exit + +79: ; preds = %76 + %80 = load volatile ptr, ptr getelementptr inbounds (i8, ptr @_ZN16LogTagSetMappingILN6LogTag4typeE90ELS1_106ELS1_0ELS1_0ELS1_0ELS1_0EE7_tagsetE, i64 48), align 8 + %.not.i.i35 = icmp eq ptr %80, null + br i1 %.not.i.i35, label %_ZN13ObjectMonitor7TryLockEP10JavaThread.exit, label %81 + +81: ; preds = %79 + %82 = ptrtoint ptr %0 to i64 + %83 = ptrtoint ptr %1 to i64 + tail call void (ptr, ...) @_ZN7LogImplILN6LogTag4typeE90ELS1_106ELS1_0ELS1_0ELS1_0ELS1_0EE5writeILN8LogLevel4typeE1EEEvPKcz(ptr noundef nonnull @.str.54, i64 noundef %82, i64 noundef 0, i64 noundef %83) br label %_ZN13ObjectMonitor7TryLockEP10JavaThread.exit -_ZN13ObjectMonitor7TryLockEP10JavaThread.exit: ; preds = %82, %80, %_ZN13ObjectMonitor18try_set_owner_fromEPvS0_.exit.thread38, %74, %77, %_ZN13ObjectMonitor16short_fixed_spinEP10JavaThreadib.exit, %.loopexit, %55 - %.025 = phi i1 [ true, %55 ], [ true, %_ZN13ObjectMonitor16short_fixed_spinEP10JavaThreadib.exit ], [ false, %.loopexit ], [ false, %77 ], [ false, %74 ], [ false, %_ZN13ObjectMonitor18try_set_owner_fromEPvS0_.exit.thread38 ], [ true, %80 ], [ true, %82 ] +_ZN13ObjectMonitor7TryLockEP10JavaThread.exit: ; preds = %81, %79, %_ZN13ObjectMonitor18try_set_owner_fromEPvS0_.exit.thread38, %73, %76, %_ZN13ObjectMonitor16short_fixed_spinEP10JavaThreadib.exit, %.loopexit, %55 + %.025 = phi i1 [ true, %55 ], [ true, %_ZN13ObjectMonitor16short_fixed_spinEP10JavaThreadib.exit ], [ false, %.loopexit ], [ false, %76 ], [ false, %73 ], [ false, %_ZN13ObjectMonitor18try_set_owner_fromEPvS0_.exit.thread38 ], [ true, %79 ], [ true, %81 ] ret i1 %.025 } @@ -7739,7 +7738,7 @@ declare i32 @llvm.smin.i32(i32, i32) #9 declare i32 @llvm.smax.i32(i32, i32) #9 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.umax.i32(i32, i32) #9 +declare i32 @llvm.usub.sat.i32(i32, i32) #9 ; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #10 diff --git a/bench/openusd/optimized/basisCurvesTopology.cpp.ll b/bench/openusd/optimized/basisCurvesTopology.cpp.ll index 6896a03d363..15e35668293 100644 --- a/bench/openusd/optimized/basisCurvesTopology.cpp.ll +++ b/bench/openusd/optimized/basisCurvesTopology.cpp.ll @@ -2355,39 +2355,38 @@ _ZN32pxrInternal_v0_24__pxrReserved__7TfTokenD2Ev.exit45: ; preds = %_ZNK32pxrIn %.not.i.i48 = icmp eq i64 %123, 0 br i1 %.not.i.i48, label %_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenD2Ev.exit25, label %_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenD2Ev.exit25.sink.split -.lr.ph.split: ; preds = %.lr.ph, %132 - %.071 = phi ptr [ %133, %132 ], [ %106, %.lr.ph ] - %.01870 = phi i64 [ %.1, %132 ], [ 0, %.lr.ph ] +.lr.ph.split: ; preds = %.lr.ph, %131 + %.071 = phi ptr [ %132, %131 ], [ %106, %.lr.ph ] + %.01870 = phi i64 [ %.1, %131 ], [ 0, %.lr.ph ] %124 = load i32, ptr %.071, align 4 %125 = icmp slt i32 %124, 1 - br i1 %125, label %132, label %126 + br i1 %125, label %131, label %126 126: ; preds = %.lr.ph.split - %127 = tail call i32 @llvm.umax.i32(i32 %124, i32 4) - %.sroa.speculated = add nsw i32 %127, -4 - %128 = udiv i32 %.sroa.speculated, %. - %129 = add nuw nsw i32 %128, 2 - %130 = zext nneg i32 %129 to i64 - %131 = add i64 %.01870, %130 - br label %132 - -132: ; preds = %126, %.lr.ph.split - %.1 = phi i64 [ %.01870, %.lr.ph.split ], [ %131, %126 ] - %133 = getelementptr inbounds i8, ptr %.071, i64 4 - %134 = tail call noundef ptr @_ZNK32pxrInternal_v0_24__pxrReserved__7VtArrayIiE4cendEv(ptr noundef nonnull align 8 dereferenceable(40) %105) - %.not = icmp eq ptr %133, %134 + %.sroa.speculated = tail call i32 @llvm.usub.sat.i32(i32 %124, i32 4) + %127 = udiv i32 %.sroa.speculated, %. + %128 = add nuw nsw i32 %127, 2 + %129 = zext nneg i32 %128 to i64 + %130 = add i64 %.01870, %129 + br label %131 + +131: ; preds = %126, %.lr.ph.split + %.1 = phi i64 [ %.01870, %.lr.ph.split ], [ %130, %126 ] + %132 = getelementptr inbounds i8, ptr %.071, i64 4 + %133 = tail call noundef ptr @_ZNK32pxrInternal_v0_24__pxrReserved__7VtArrayIiE4cendEv(ptr noundef nonnull align 8 dereferenceable(40) %105) + %.not = icmp eq ptr %132, %133 br i1 %.not, label %.loopexit, label %.lr.ph.split, !llvm.loop !27 -.loopexit: ; preds = %132, %115, %_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenD2Ev.exit45, %34 - %.016 = phi i64 [ %36, %34 ], [ 0, %_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenD2Ev.exit45 ], [ %.1.us, %115 ], [ %.1, %132 ] +.loopexit: ; preds = %131, %115, %_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenD2Ev.exit45, %34 + %.016 = phi i64 [ %36, %34 ], [ 0, %_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenD2Ev.exit45 ], [ %.1.us, %115 ], [ %.1, %131 ] ret i64 %.016 _ZN32pxrInternal_v0_24__pxrReserved__7TfTokenD2Ev.exit25.sink.split: ; preds = %.body41, %.body31, %.body %.sroa.0.0.sink = phi i64 [ %.sroa.064.0, %.body ], [ %.sroa.061.0, %.body31 ], [ %.sroa.0.0, %.body41 ] %.pn.ph = phi { ptr, i32 } [ %eh.lpad-body, %.body ], [ %eh.lpad-body32, %.body31 ], [ %eh.lpad-body42, %.body41 ] - %135 = and i64 %.sroa.0.0.sink, -8 - %136 = inttoptr i64 %135 to ptr - %137 = atomicrmw sub ptr %136, i32 2 release, align 4 + %134 = and i64 %.sroa.0.0.sink, -8 + %135 = inttoptr i64 %134 to ptr + %136 = atomicrmw sub ptr %135, i32 2 release, align 4 br label %_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenD2Ev.exit25 _ZN32pxrInternal_v0_24__pxrReserved__7TfTokenD2Ev.exit25: ; preds = %_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenD2Ev.exit25.sink.split, %.body41, %.body31, %.body @@ -2448,7 +2447,7 @@ declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #9 declare i32 @llvm.smax.i32(i32, i32) #10 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.umax.i32(i32, i32) #10 +declare i32 @llvm.usub.sat.i32(i32, i32) #10 attributes #0 = { mustprogress uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } diff --git a/bench/openusd/optimized/restoration.c.ll b/bench/openusd/optimized/restoration.c.ll index feca016db55..5d178efd2c5 100644 --- a/bench/openusd/optimized/restoration.c.ll +++ b/bench/openusd/optimized/restoration.c.ll @@ -1276,7 +1276,7 @@ get_stripe_boundary_info.exit.lr.ph: ; preds = %65 br label %get_stripe_boundary_info.exit get_stripe_boundary_info.exit: ; preds = %get_stripe_boundary_info.exit.lr.ph, %restore_processing_stripe_boundary.exit - %.0112 = phi i32 [ 0, %get_stripe_boundary_info.exit.lr.ph ], [ %273, %restore_processing_stripe_boundary.exit ] + %.0112 = phi i32 [ 0, %get_stripe_boundary_info.exit.lr.ph ], [ %272, %restore_processing_stripe_boundary.exit ] %102 = load i32, ptr %20, align 4 %103 = add nsw i32 %102, %.0112 %104 = load i32, ptr %77, align 4 @@ -1297,7 +1297,7 @@ get_stripe_boundary_info.exit: ; preds = %get_stripe_boundary %117 = sub nsw i32 %19, %103 %118 = tail call i32 @llvm.smin.i32(i32 %116, i32 %117) %119 = load i32, ptr %79, align 8 - br i1 %.not.i77, label %120, label %185 + br i1 %.not.i77, label %120, label %184 120: ; preds = %get_stripe_boundary_info.exit br i1 %.not, label %.loopexit122.i, label %121 @@ -1306,273 +1306,272 @@ get_stripe_boundary_info.exit: ; preds = %get_stripe_boundary %122 = mul nsw i32 %103, %11 %123 = sext i32 %122 to i64 %124 = getelementptr inbounds i8, ptr %84, i64 %123 - %125 = add i32 %113, 2 br i1 %.not119.i, label %.split.us.i, label %.split.i .split.us.i: ; preds = %121, %.split.us.i %indvars.iv129.i = phi i64 [ %indvars.iv.next130.i, %.split.us.i ], [ -3, %121 ] - %126 = trunc nsw i64 %indvars.iv129.i to i32 - %127 = tail call i32 @llvm.umax.i32(i32 %126, i32 -2) - %128 = add i32 %127, %125 - %129 = mul nsw i32 %128, %119 - %130 = add nsw i32 %129, %25 - %131 = load ptr, ptr %2, align 8 - %132 = sext i32 %130 to i64 - %133 = getelementptr inbounds i8, ptr %131, i64 %132 - %134 = mul nsw i64 %indvars.iv129.i, %93 - %135 = getelementptr inbounds i8, ptr %124, i64 %134 - %136 = add nsw i64 %indvars.iv129.i, 3 - %137 = getelementptr inbounds [3 x [392 x i16]], ptr %3, i64 0, i64 %136 - tail call void @llvm.memcpy.p0.p0.i64(ptr align 2 %137, ptr align 1 %135, i64 %87, i1 false) - tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %135, ptr align 1 %133, i64 %87, i1 false) + %125 = trunc nsw i64 %indvars.iv129.i to i32 + %126 = tail call i32 @llvm.usub.sat.i32(i32 %125, i32 -2) + %127 = or disjoint i32 %126, %113 + %128 = mul nsw i32 %127, %119 + %129 = add nsw i32 %128, %25 + %130 = load ptr, ptr %2, align 8 + %131 = sext i32 %129 to i64 + %132 = getelementptr inbounds i8, ptr %130, i64 %131 + %133 = mul nsw i64 %indvars.iv129.i, %93 + %134 = getelementptr inbounds i8, ptr %124, i64 %133 + %135 = add nsw i64 %indvars.iv129.i, 3 + %136 = getelementptr inbounds [3 x [392 x i16]], ptr %3, i64 0, i64 %135 + tail call void @llvm.memcpy.p0.p0.i64(ptr align 2 %136, ptr align 1 %134, i64 %87, i1 false) + tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %134, ptr align 1 %132, i64 %87, i1 false) %indvars.iv.next130.i = add nsw i64 %indvars.iv129.i, 1 %exitcond132.not.i = icmp eq i64 %indvars.iv.next130.i, 0 br i1 %exitcond132.not.i, label %.loopexit122.i, label %.split.us.i, !llvm.loop !26 .split.i: ; preds = %121, %.split.i %indvars.iv.i = phi i64 [ %indvars.iv.next.i, %.split.i ], [ -3, %121 ] - %138 = trunc nsw i64 %indvars.iv.i to i32 - %139 = tail call i32 @llvm.umax.i32(i32 %138, i32 -2) - %140 = add i32 %139, %125 - %141 = mul nsw i32 %140, %119 - %142 = add nsw i32 %141, %25 - %143 = load ptr, ptr %2, align 8 - %144 = shl i32 %142, %8 - %145 = sext i32 %144 to i64 - %146 = getelementptr inbounds i8, ptr %143, i64 %145 - %147 = mul nsw i64 %indvars.iv.i, %93 - %148 = getelementptr inbounds i8, ptr %124, i64 %147 - %149 = add nsw i64 %indvars.iv.i, 3 - %150 = getelementptr inbounds [3 x [392 x i16]], ptr %3, i64 0, i64 %149 - %151 = ptrtoint ptr %148 to i64 - %152 = shl i64 %151, 1 - %153 = inttoptr i64 %152 to ptr - tail call void @llvm.memcpy.p0.p0.i64(ptr align 2 %150, ptr align 2 %153, i64 %87, i1 false) - tail call void @llvm.memcpy.p0.p0.i64(ptr align 2 %153, ptr align 1 %146, i64 %87, i1 false) + %137 = trunc nsw i64 %indvars.iv.i to i32 + %138 = tail call i32 @llvm.usub.sat.i32(i32 %137, i32 -2) + %139 = or disjoint i32 %138, %113 + %140 = mul nsw i32 %139, %119 + %141 = add nsw i32 %140, %25 + %142 = load ptr, ptr %2, align 8 + %143 = shl i32 %141, %8 + %144 = sext i32 %143 to i64 + %145 = getelementptr inbounds i8, ptr %142, i64 %144 + %146 = mul nsw i64 %indvars.iv.i, %93 + %147 = getelementptr inbounds i8, ptr %124, i64 %146 + %148 = add nsw i64 %indvars.iv.i, 3 + %149 = getelementptr inbounds [3 x [392 x i16]], ptr %3, i64 0, i64 %148 + %150 = ptrtoint ptr %147 to i64 + %151 = shl i64 %150, 1 + %152 = inttoptr i64 %151 to ptr + tail call void @llvm.memcpy.p0.p0.i64(ptr align 2 %149, ptr align 2 %152, i64 %87, i1 false) + tail call void @llvm.memcpy.p0.p0.i64(ptr align 2 %152, ptr align 1 %145, i64 %87, i1 false) %indvars.iv.next.i = add nsw i64 %indvars.iv.i, 1 %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, 0 br i1 %exitcond.not.i, label %.loopexit122.i, label %.split.i, !llvm.loop !26 .loopexit122.i: ; preds = %.split.i, %.split.us.i, %120 - br i1 %.not.i76.not, label %154, label %setup_processing_stripe_boundary.exit + br i1 %.not.i76.not, label %153, label %setup_processing_stripe_boundary.exit -154: ; preds = %.loopexit122.i - %155 = add nsw i32 %118, %103 - %156 = mul nsw i32 %155, %11 - %157 = sext i32 %156 to i64 - %158 = getelementptr inbounds i8, ptr %84, i64 %157 +153: ; preds = %.loopexit122.i + %154 = add nsw i32 %118, %103 + %155 = mul nsw i32 %154, %11 + %156 = sext i32 %155 to i64 + %157 = getelementptr inbounds i8, ptr %84, i64 %156 br i1 %.not119.i, label %.split125.us.i, label %.split125.i -.split125.us.i: ; preds = %154, %.split125.us.i - %indvars.iv137.i = phi i64 [ %indvars.iv.next138.i, %.split125.us.i ], [ 0, %154 ] - %159 = icmp ne i64 %indvars.iv137.i, 0 - %160 = zext i1 %159 to i32 - %161 = or disjoint i32 %113, %160 - %162 = mul nsw i32 %161, %119 - %163 = add nsw i32 %162, %25 - %164 = load ptr, ptr %94, align 8 - %165 = sext i32 %163 to i64 - %166 = getelementptr inbounds i8, ptr %164, i64 %165 - %167 = mul nsw i64 %indvars.iv137.i, %93 - %168 = getelementptr inbounds i8, ptr %158, i64 %167 - %169 = getelementptr inbounds [3 x [392 x i16]], ptr %95, i64 0, i64 %indvars.iv137.i - tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 2 %169, ptr align 1 %168, i64 %87, i1 false) - tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %168, ptr align 1 %166, i64 %87, i1 false) +.split125.us.i: ; preds = %153, %.split125.us.i + %indvars.iv137.i = phi i64 [ %indvars.iv.next138.i, %.split125.us.i ], [ 0, %153 ] + %158 = icmp ne i64 %indvars.iv137.i, 0 + %159 = zext i1 %158 to i32 + %160 = or disjoint i32 %113, %159 + %161 = mul nsw i32 %160, %119 + %162 = add nsw i32 %161, %25 + %163 = load ptr, ptr %94, align 8 + %164 = sext i32 %162 to i64 + %165 = getelementptr inbounds i8, ptr %163, i64 %164 + %166 = mul nsw i64 %indvars.iv137.i, %93 + %167 = getelementptr inbounds i8, ptr %157, i64 %166 + %168 = getelementptr inbounds [3 x [392 x i16]], ptr %95, i64 0, i64 %indvars.iv137.i + tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 2 %168, ptr align 1 %167, i64 %87, i1 false) + tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %167, ptr align 1 %165, i64 %87, i1 false) %indvars.iv.next138.i = add nuw nsw i64 %indvars.iv137.i, 1 %exitcond140.not.i = icmp eq i64 %indvars.iv.next138.i, 3 br i1 %exitcond140.not.i, label %setup_processing_stripe_boundary.exit, label %.split125.us.i, !llvm.loop !27 -.split125.i: ; preds = %154, %.split125.i - %indvars.iv133.i = phi i64 [ %indvars.iv.next134.i, %.split125.i ], [ 0, %154 ] - %170 = icmp ne i64 %indvars.iv133.i, 0 - %171 = zext i1 %170 to i32 - %172 = or disjoint i32 %113, %171 - %173 = mul nsw i32 %172, %119 - %174 = add nsw i32 %173, %25 - %175 = load ptr, ptr %94, align 8 - %176 = shl i32 %174, %8 - %177 = sext i32 %176 to i64 - %178 = getelementptr inbounds i8, ptr %175, i64 %177 - %179 = mul nsw i64 %indvars.iv133.i, %93 - %180 = getelementptr inbounds i8, ptr %158, i64 %179 - %181 = getelementptr inbounds [3 x [392 x i16]], ptr %95, i64 0, i64 %indvars.iv133.i - %182 = ptrtoint ptr %180 to i64 - %183 = shl i64 %182, 1 - %184 = inttoptr i64 %183 to ptr - tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 2 %181, ptr align 2 %184, i64 %87, i1 false) - tail call void @llvm.memcpy.p0.p0.i64(ptr align 2 %184, ptr align 1 %178, i64 %87, i1 false) +.split125.i: ; preds = %153, %.split125.i + %indvars.iv133.i = phi i64 [ %indvars.iv.next134.i, %.split125.i ], [ 0, %153 ] + %169 = icmp ne i64 %indvars.iv133.i, 0 + %170 = zext i1 %169 to i32 + %171 = or disjoint i32 %113, %170 + %172 = mul nsw i32 %171, %119 + %173 = add nsw i32 %172, %25 + %174 = load ptr, ptr %94, align 8 + %175 = shl i32 %173, %8 + %176 = sext i32 %175 to i64 + %177 = getelementptr inbounds i8, ptr %174, i64 %176 + %178 = mul nsw i64 %indvars.iv133.i, %93 + %179 = getelementptr inbounds i8, ptr %157, i64 %178 + %180 = getelementptr inbounds [3 x [392 x i16]], ptr %95, i64 0, i64 %indvars.iv133.i + %181 = ptrtoint ptr %179 to i64 + %182 = shl i64 %181, 1 + %183 = inttoptr i64 %182 to ptr + tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 2 %180, ptr align 2 %183, i64 %87, i1 false) + tail call void @llvm.memcpy.p0.p0.i64(ptr align 2 %183, ptr align 1 %177, i64 %87, i1 false) %indvars.iv.next134.i = add nuw nsw i64 %indvars.iv133.i, 1 %exitcond136.not.i = icmp eq i64 %indvars.iv.next134.i, 3 br i1 %exitcond136.not.i, label %setup_processing_stripe_boundary.exit, label %.split125.i, !llvm.loop !27 -185: ; preds = %get_stripe_boundary_info.exit - br i1 %.not, label %200, label %186 - -186: ; preds = %185 - %187 = mul nsw i32 %103, %11 - %188 = sext i32 %187 to i64 - %189 = getelementptr inbounds i8, ptr %84, i64 %188 - %190 = getelementptr inbounds i8, ptr %189, i64 %86 - %191 = ptrtoint ptr %190 to i64 - %192 = shl i64 %191, 1 - %193 = inttoptr i64 %192 to ptr - %194 = select i1 %.not119.i, ptr %190, ptr %193 - tail call void @llvm.memcpy.p0.p0.i64(ptr align 2 %3, ptr align 1 %194, i64 %87, i1 false) - %195 = getelementptr inbounds i8, ptr %189, i64 %89 - %196 = ptrtoint ptr %195 to i64 - %197 = shl i64 %196, 1 - %198 = inttoptr i64 %197 to ptr - %199 = select i1 %.not119.i, ptr %195, ptr %198 - tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %194, ptr align 1 %199, i64 %87, i1 false) - br label %200 - -200: ; preds = %186, %185 - br i1 %.not.i76.not, label %201, label %setup_processing_stripe_boundary.exit - -201: ; preds = %200 - %202 = add nsw i32 %118, %103 - %203 = mul nsw i32 %202, %11 - %204 = sext i32 %203 to i64 - %205 = getelementptr inbounds i8, ptr %84, i64 %204 - %206 = getelementptr inbounds i8, ptr %205, i64 %91 - %207 = ptrtoint ptr %206 to i64 - %208 = shl i64 %207, 1 - %209 = inttoptr i64 %208 to ptr - %210 = select i1 %.not119.i, ptr %206, ptr %209 - tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 2 %92, ptr align 1 %210, i64 %87, i1 false) - %211 = getelementptr inbounds i8, ptr %205, i64 %93 - %212 = ptrtoint ptr %211 to i64 - %213 = shl i64 %212, 1 - %214 = inttoptr i64 %213 to ptr - %215 = select i1 %.not119.i, ptr %211, ptr %214 - tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %210, ptr align 1 %215, i64 %87, i1 false) +184: ; preds = %get_stripe_boundary_info.exit + br i1 %.not, label %199, label %185 + +185: ; preds = %184 + %186 = mul nsw i32 %103, %11 + %187 = sext i32 %186 to i64 + %188 = getelementptr inbounds i8, ptr %84, i64 %187 + %189 = getelementptr inbounds i8, ptr %188, i64 %86 + %190 = ptrtoint ptr %189 to i64 + %191 = shl i64 %190, 1 + %192 = inttoptr i64 %191 to ptr + %193 = select i1 %.not119.i, ptr %189, ptr %192 + tail call void @llvm.memcpy.p0.p0.i64(ptr align 2 %3, ptr align 1 %193, i64 %87, i1 false) + %194 = getelementptr inbounds i8, ptr %188, i64 %89 + %195 = ptrtoint ptr %194 to i64 + %196 = shl i64 %195, 1 + %197 = inttoptr i64 %196 to ptr + %198 = select i1 %.not119.i, ptr %194, ptr %197 + tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %193, ptr align 1 %198, i64 %87, i1 false) + br label %199 + +199: ; preds = %185, %184 + br i1 %.not.i76.not, label %200, label %setup_processing_stripe_boundary.exit + +200: ; preds = %199 + %201 = add nsw i32 %118, %103 + %202 = mul nsw i32 %201, %11 + %203 = sext i32 %202 to i64 + %204 = getelementptr inbounds i8, ptr %84, i64 %203 + %205 = getelementptr inbounds i8, ptr %204, i64 %91 + %206 = ptrtoint ptr %205 to i64 + %207 = shl i64 %206, 1 + %208 = inttoptr i64 %207 to ptr + %209 = select i1 %.not119.i, ptr %205, ptr %208 + tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 2 %92, ptr align 1 %209, i64 %87, i1 false) + %210 = getelementptr inbounds i8, ptr %204, i64 %93 + %211 = ptrtoint ptr %210 to i64 + %212 = shl i64 %211, 1 + %213 = inttoptr i64 %212 to ptr + %214 = select i1 %.not119.i, ptr %210, ptr %213 + tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %209, ptr align 1 %214, i64 %87, i1 false) br label %setup_processing_stripe_boundary.exit -setup_processing_stripe_boundary.exit: ; preds = %.split125.i, %.split125.us.i, %.loopexit122.i, %200, %201 - %216 = mul nsw i32 %.0112, %11 - %217 = sext i32 %216 to i64 - %218 = getelementptr inbounds i8, ptr %31, i64 %217 - %219 = mul nsw i32 %.0112, %13 - %220 = sext i32 %219 to i64 - %221 = getelementptr inbounds i8, ptr %35, i64 %220 - tail call void %72(ptr noundef nonnull %1, i32 noundef %26, i32 noundef %118, i32 noundef %73, ptr noundef %218, i32 noundef %11, ptr noundef %221, i32 noundef %13, ptr noundef %14, i32 noundef %9) #12 - br i1 %.not.i77, label %222, label %255 - -222: ; preds = %setup_processing_stripe_boundary.exit - br i1 %.not, label %.loopexit81.i, label %223 - -223: ; preds = %222 - %224 = mul nsw i32 %103, %11 - %225 = sext i32 %224 to i64 - %226 = getelementptr inbounds i8, ptr %84, i64 %225 +setup_processing_stripe_boundary.exit: ; preds = %.split125.i, %.split125.us.i, %.loopexit122.i, %199, %200 + %215 = mul nsw i32 %.0112, %11 + %216 = sext i32 %215 to i64 + %217 = getelementptr inbounds i8, ptr %31, i64 %216 + %218 = mul nsw i32 %.0112, %13 + %219 = sext i32 %218 to i64 + %220 = getelementptr inbounds i8, ptr %35, i64 %219 + tail call void %72(ptr noundef nonnull %1, i32 noundef %26, i32 noundef %118, i32 noundef %73, ptr noundef %217, i32 noundef %11, ptr noundef %220, i32 noundef %13, ptr noundef %14, i32 noundef %9) #12 + br i1 %.not.i77, label %221, label %254 + +221: ; preds = %setup_processing_stripe_boundary.exit + br i1 %.not, label %.loopexit81.i, label %222 + +222: ; preds = %221 + %223 = mul nsw i32 %103, %11 + %224 = sext i32 %223 to i64 + %225 = getelementptr inbounds i8, ptr %84, i64 %224 br i1 %.not119.i, label %.split.us.i83, label %.split.i79 -.split.us.i83: ; preds = %223, %.split.us.i83 - %indvars.iv88.i = phi i64 [ %indvars.iv.next89.i, %.split.us.i83 ], [ -3, %223 ] - %227 = mul nsw i64 %indvars.iv88.i, %93 - %228 = getelementptr inbounds i8, ptr %226, i64 %227 - %229 = add nsw i64 %indvars.iv88.i, 3 - %230 = getelementptr inbounds [3 x [392 x i16]], ptr %3, i64 0, i64 %229 - tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %228, ptr readonly align 2 %230, i64 %99, i1 false) +.split.us.i83: ; preds = %222, %.split.us.i83 + %indvars.iv88.i = phi i64 [ %indvars.iv.next89.i, %.split.us.i83 ], [ -3, %222 ] + %226 = mul nsw i64 %indvars.iv88.i, %93 + %227 = getelementptr inbounds i8, ptr %225, i64 %226 + %228 = add nsw i64 %indvars.iv88.i, 3 + %229 = getelementptr inbounds [3 x [392 x i16]], ptr %3, i64 0, i64 %228 + tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %227, ptr readonly align 2 %229, i64 %99, i1 false) %indvars.iv.next89.i = add nsw i64 %indvars.iv88.i, 1 %exitcond91.not.i = icmp eq i64 %indvars.iv.next89.i, 0 br i1 %exitcond91.not.i, label %.loopexit81.i, label %.split.us.i83, !llvm.loop !28 -.split.i79: ; preds = %223, %.split.i79 - %indvars.iv.i80 = phi i64 [ %indvars.iv.next.i81, %.split.i79 ], [ -3, %223 ] - %231 = mul nsw i64 %indvars.iv.i80, %93 - %232 = getelementptr inbounds i8, ptr %226, i64 %231 - %233 = ptrtoint ptr %232 to i64 - %234 = shl i64 %233, 1 - %235 = inttoptr i64 %234 to ptr - %236 = add nsw i64 %indvars.iv.i80, 3 - %237 = getelementptr inbounds [3 x [392 x i16]], ptr %3, i64 0, i64 %236 - tail call void @llvm.memcpy.p0.p0.i64(ptr align 2 %235, ptr readonly align 2 %237, i64 %99, i1 false) +.split.i79: ; preds = %222, %.split.i79 + %indvars.iv.i80 = phi i64 [ %indvars.iv.next.i81, %.split.i79 ], [ -3, %222 ] + %230 = mul nsw i64 %indvars.iv.i80, %93 + %231 = getelementptr inbounds i8, ptr %225, i64 %230 + %232 = ptrtoint ptr %231 to i64 + %233 = shl i64 %232, 1 + %234 = inttoptr i64 %233 to ptr + %235 = add nsw i64 %indvars.iv.i80, 3 + %236 = getelementptr inbounds [3 x [392 x i16]], ptr %3, i64 0, i64 %235 + tail call void @llvm.memcpy.p0.p0.i64(ptr align 2 %234, ptr readonly align 2 %236, i64 %99, i1 false) %indvars.iv.next.i81 = add nsw i64 %indvars.iv.i80, 1 %exitcond.not.i82 = icmp eq i64 %indvars.iv.next.i81, 0 br i1 %exitcond.not.i82, label %.loopexit81.i, label %.split.i79, !llvm.loop !28 -.loopexit81.i: ; preds = %.split.i79, %.split.us.i83, %222 - br i1 %.not.i76.not, label %238, label %restore_processing_stripe_boundary.exit +.loopexit81.i: ; preds = %.split.i79, %.split.us.i83, %221 + br i1 %.not.i76.not, label %237, label %restore_processing_stripe_boundary.exit -238: ; preds = %.loopexit81.i - %239 = add nsw i32 %118, %103 - %240 = mul nsw i32 %239, %11 - %241 = sext i32 %240 to i64 - %242 = getelementptr inbounds i8, ptr %84, i64 %241 - %243 = sext i32 %239 to i64 - %invariant.op111 = sub nsw i64 %101, %243 +237: ; preds = %.loopexit81.i + %238 = add nsw i32 %118, %103 + %239 = mul nsw i32 %238, %11 + %240 = sext i32 %239 to i64 + %241 = getelementptr inbounds i8, ptr %84, i64 %240 + %242 = sext i32 %238 to i64 + %invariant.op111 = sub nsw i64 %101, %242 %smax121 = tail call i64 @llvm.smax.i64(i64 %invariant.op111, i64 0) br i1 %.not119.i, label %.split84.us.i, label %.split84.i -.split84.us.i: ; preds = %238, %244 - %indvars.iv96.i = phi i64 [ %indvars.iv.next97.i, %244 ], [ 0, %238 ] +.split84.us.i: ; preds = %237, %243 + %indvars.iv96.i = phi i64 [ %indvars.iv.next97.i, %243 ], [ 0, %237 ] %exitcond122.not = icmp eq i64 %indvars.iv96.i, %smax121 - br i1 %exitcond122.not, label %restore_processing_stripe_boundary.exit, label %244 + br i1 %exitcond122.not, label %restore_processing_stripe_boundary.exit, label %243 -244: ; preds = %.split84.us.i - %245 = mul nsw i64 %indvars.iv96.i, %93 - %246 = getelementptr inbounds i8, ptr %242, i64 %245 - %247 = getelementptr inbounds [3 x [392 x i16]], ptr %95, i64 0, i64 %indvars.iv96.i - tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %246, ptr nonnull readonly align 2 %247, i64 %99, i1 false) +243: ; preds = %.split84.us.i + %244 = mul nsw i64 %indvars.iv96.i, %93 + %245 = getelementptr inbounds i8, ptr %241, i64 %244 + %246 = getelementptr inbounds [3 x [392 x i16]], ptr %95, i64 0, i64 %indvars.iv96.i + tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %245, ptr nonnull readonly align 2 %246, i64 %99, i1 false) %indvars.iv.next97.i = add nuw nsw i64 %indvars.iv96.i, 1 %exitcond99.not.i = icmp eq i64 %indvars.iv.next97.i, 3 br i1 %exitcond99.not.i, label %restore_processing_stripe_boundary.exit, label %.split84.us.i, !llvm.loop !29 -.split84.i: ; preds = %238, %248 - %indvars.iv92.i = phi i64 [ %indvars.iv.next93.i, %248 ], [ 0, %238 ] +.split84.i: ; preds = %237, %247 + %indvars.iv92.i = phi i64 [ %indvars.iv.next93.i, %247 ], [ 0, %237 ] %exitcond.not = icmp eq i64 %indvars.iv92.i, %smax121 - br i1 %exitcond.not, label %restore_processing_stripe_boundary.exit, label %248 - -248: ; preds = %.split84.i - %249 = mul nsw i64 %indvars.iv92.i, %93 - %250 = getelementptr inbounds i8, ptr %242, i64 %249 - %251 = ptrtoint ptr %250 to i64 - %252 = shl i64 %251, 1 - %253 = inttoptr i64 %252 to ptr - %254 = getelementptr inbounds [3 x [392 x i16]], ptr %95, i64 0, i64 %indvars.iv92.i - tail call void @llvm.memcpy.p0.p0.i64(ptr align 2 %253, ptr nonnull readonly align 2 %254, i64 %99, i1 false) + br i1 %exitcond.not, label %restore_processing_stripe_boundary.exit, label %247 + +247: ; preds = %.split84.i + %248 = mul nsw i64 %indvars.iv92.i, %93 + %249 = getelementptr inbounds i8, ptr %241, i64 %248 + %250 = ptrtoint ptr %249 to i64 + %251 = shl i64 %250, 1 + %252 = inttoptr i64 %251 to ptr + %253 = getelementptr inbounds [3 x [392 x i16]], ptr %95, i64 0, i64 %indvars.iv92.i + tail call void @llvm.memcpy.p0.p0.i64(ptr align 2 %252, ptr nonnull readonly align 2 %253, i64 %99, i1 false) %indvars.iv.next93.i = add nuw nsw i64 %indvars.iv92.i, 1 %exitcond95.not.i = icmp eq i64 %indvars.iv.next93.i, 3 br i1 %exitcond95.not.i, label %restore_processing_stripe_boundary.exit, label %.split84.i, !llvm.loop !29 -255: ; preds = %setup_processing_stripe_boundary.exit - br i1 %.not, label %263, label %256 - -256: ; preds = %255 - %257 = mul nsw i32 %103, %11 - %258 = sext i32 %257 to i64 - %gep = getelementptr i8, ptr %invariant.gep, i64 %258 - %259 = ptrtoint ptr %gep to i64 - %260 = shl i64 %259, 1 - %261 = inttoptr i64 %260 to ptr - %262 = select i1 %.not119.i, ptr %gep, ptr %261 - tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %262, ptr readonly align 2 %3, i64 %99, i1 false) - br label %263 - -263: ; preds = %256, %255 - br i1 %.not.i76.not, label %264, label %restore_processing_stripe_boundary.exit - -264: ; preds = %263 - %265 = add nsw i32 %118, %103 - %.not79.i = icmp sgt i32 %265, %19 - br i1 %.not79.i, label %restore_processing_stripe_boundary.exit, label %266 - -266: ; preds = %264 - %267 = mul nsw i32 %265, %11 - %268 = sext i32 %267 to i64 - %gep114 = getelementptr i8, ptr %invariant.gep113, i64 %268 - %269 = ptrtoint ptr %gep114 to i64 - %270 = shl i64 %269, 1 - %271 = inttoptr i64 %270 to ptr - %272 = select i1 %.not119.i, ptr %gep114, ptr %271 - tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %272, ptr nonnull readonly align 2 %92, i64 %99, i1 false) +254: ; preds = %setup_processing_stripe_boundary.exit + br i1 %.not, label %262, label %255 + +255: ; preds = %254 + %256 = mul nsw i32 %103, %11 + %257 = sext i32 %256 to i64 + %gep = getelementptr i8, ptr %invariant.gep, i64 %257 + %258 = ptrtoint ptr %gep to i64 + %259 = shl i64 %258, 1 + %260 = inttoptr i64 %259 to ptr + %261 = select i1 %.not119.i, ptr %gep, ptr %260 + tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %261, ptr readonly align 2 %3, i64 %99, i1 false) + br label %262 + +262: ; preds = %255, %254 + br i1 %.not.i76.not, label %263, label %restore_processing_stripe_boundary.exit + +263: ; preds = %262 + %264 = add nsw i32 %118, %103 + %.not79.i = icmp sgt i32 %264, %19 + br i1 %.not79.i, label %restore_processing_stripe_boundary.exit, label %265 + +265: ; preds = %263 + %266 = mul nsw i32 %264, %11 + %267 = sext i32 %266 to i64 + %gep114 = getelementptr i8, ptr %invariant.gep113, i64 %267 + %268 = ptrtoint ptr %gep114 to i64 + %269 = shl i64 %268, 1 + %270 = inttoptr i64 %269 to ptr + %271 = select i1 %.not119.i, ptr %gep114, ptr %270 + tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %271, ptr nonnull readonly align 2 %92, i64 %99, i1 false) br label %restore_processing_stripe_boundary.exit -restore_processing_stripe_boundary.exit: ; preds = %.split84.i, %248, %.split84.us.i, %244, %.loopexit81.i, %263, %264, %266 - %273 = add nsw i32 %118, %.0112 - %274 = icmp slt i32 %273, %22 - br i1 %274, label %get_stripe_boundary_info.exit, label %copy_tile.exit, !llvm.loop !30 +restore_processing_stripe_boundary.exit: ; preds = %.split84.i, %247, %.split84.us.i, %243, %.loopexit81.i, %262, %263, %265 + %272 = add nsw i32 %118, %.0112 + %273 = icmp slt i32 %272, %22 + br i1 %273, label %get_stripe_boundary_info.exit, label %copy_tile.exit, !llvm.loop !30 copy_tile.exit: ; preds = %restore_processing_stripe_boundary.exit, %50, %60, %65, %55, %38 ret void @@ -3756,9 +3755,6 @@ declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #11 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #11 -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.umax.i32(i32, i32) #10 - ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i64 @llvm.smax.i64(i64, i64) #10 diff --git a/bench/openusd/optimized/yv12config.c.ll b/bench/openusd/optimized/yv12config.c.ll index c36335b8781..a12aa06f4af 100644 --- a/bench/openusd/optimized/yv12config.c.ll +++ b/bench/openusd/optimized/yv12config.c.ll @@ -110,182 +110,181 @@ define hidden range(i32 0, 3) i32 @aom_realloc_frame_buffer(ptr noundef %0, i32 %37 = add nsw i64 %36, %28 %38 = ashr i32 %6, %3 %39 = ashr i32 %14, %3 - %40 = tail call i32 @llvm.umax.i32(i32 %7, i32 1) - %41 = add nsw i32 %5, 1 - %42 = sext i32 %41 to i64 - %43 = shl i64 %37, 1 - %44 = add i64 %43, %29 - %45 = mul i64 %44, %42 + %40 = add nsw i32 %5, 1 + %41 = sext i32 %40 to i64 + %42 = shl i64 %37, 1 + %43 = add i64 %42, %29 + %44 = mul i64 %43, %41 %.not.i40 = icmp eq i32 %5, 0 - %46 = add i64 %45, %29 - %.0112.i = select i1 %.not.i40, i64 %44, i64 %46 - %47 = icmp ugt i64 %.0112.i, 1073741824 - br i1 %47, label %calc_stride_and_planesize.exit, label %48 + %45 = add i64 %44, %29 + %.0112.i = select i1 %.not.i40, i64 %43, i64 %45 + %46 = icmp ugt i64 %.0112.i, 1073741824 + br i1 %46, label %calc_stride_and_planesize.exit, label %47 -48: ; preds = %19 +47: ; preds = %19 %.not119.i = icmp eq ptr %9, null - br i1 %.not119.i, label %66, label %49 - -49: ; preds = %48 - %50 = add i64 %45, 31 - %51 = tail call i32 %9(ptr noundef %10, i64 noundef %50, ptr noundef %8) #4 - %52 = icmp slt i32 %51, 0 - br i1 %52, label %calc_stride_and_planesize.exit, label %53 - -53: ; preds = %49 - %54 = load ptr, ptr %8, align 8 - %55 = icmp eq ptr %54, null - br i1 %55, label %calc_stride_and_planesize.exit, label %56 - -56: ; preds = %53 - %57 = getelementptr inbounds nuw i8, ptr %8, i64 8 - %58 = load i64, ptr %57, align 8 - %59 = icmp ult i64 %58, %50 - br i1 %59, label %calc_stride_and_planesize.exit, label %60 - -60: ; preds = %56 - %61 = ptrtoint ptr %54 to i64 - %62 = add i64 %61, 31 - %63 = and i64 %62, -32 - %64 = inttoptr i64 %63 to ptr - %65 = getelementptr inbounds nuw i8, ptr %0, i64 112 - store ptr %64, ptr %65, align 8 - br label %75 - -66: ; preds = %48 - %67 = getelementptr inbounds nuw i8, ptr %0, i64 120 - %68 = load i64, ptr %67, align 8 - %69 = icmp ugt i64 %45, %68 - br i1 %69, label %70, label %75 - -70: ; preds = %66 - %71 = getelementptr inbounds nuw i8, ptr %0, i64 112 - %72 = load ptr, ptr %71, align 8 - tail call void @aom_free(ptr noundef %72) #4 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %71, i8 0, i64 16, i1 false) - %73 = tail call ptr @aom_memalign(i64 noundef 32, i64 noundef %45) #4 - store ptr %73, ptr %71, align 8 - %.not120.i = icmp eq ptr %73, null - br i1 %.not120.i, label %calc_stride_and_planesize.exit, label %74 - -74: ; preds = %70 - store i64 %45, ptr %67, align 8 - tail call void @llvm.memset.p0.i64(ptr nonnull align 1 %73, i8 0, i64 %45, i1 false) - br label %75 - -75: ; preds = %74, %66, %60 - %76 = getelementptr inbounds nuw i8, ptr %0, i64 16 - store i32 %1, ptr %76, align 8 - %77 = getelementptr inbounds nuw i8, ptr %0, i64 24 - store i32 %2, ptr %77, align 8 + br i1 %.not119.i, label %65, label %48 + +48: ; preds = %47 + %49 = add i64 %44, 31 + %50 = tail call i32 %9(ptr noundef %10, i64 noundef %49, ptr noundef %8) #4 + %51 = icmp slt i32 %50, 0 + br i1 %51, label %calc_stride_and_planesize.exit, label %52 + +52: ; preds = %48 + %53 = load ptr, ptr %8, align 8 + %54 = icmp eq ptr %53, null + br i1 %54, label %calc_stride_and_planesize.exit, label %55 + +55: ; preds = %52 + %56 = getelementptr inbounds nuw i8, ptr %8, i64 8 + %57 = load i64, ptr %56, align 8 + %58 = icmp ult i64 %57, %49 + br i1 %58, label %calc_stride_and_planesize.exit, label %59 + +59: ; preds = %55 + %60 = ptrtoint ptr %53 to i64 + %61 = add i64 %60, 31 + %62 = and i64 %61, -32 + %63 = inttoptr i64 %62 to ptr + %64 = getelementptr inbounds nuw i8, ptr %0, i64 112 + store ptr %63, ptr %64, align 8 + br label %74 + +65: ; preds = %47 + %66 = getelementptr inbounds nuw i8, ptr %0, i64 120 + %67 = load i64, ptr %66, align 8 + %68 = icmp ugt i64 %44, %67 + br i1 %68, label %69, label %74 + +69: ; preds = %65 + %70 = getelementptr inbounds nuw i8, ptr %0, i64 112 + %71 = load ptr, ptr %70, align 8 + tail call void @aom_free(ptr noundef %71) #4 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %70, i8 0, i64 16, i1 false) + %72 = tail call ptr @aom_memalign(i64 noundef 32, i64 noundef %44) #4 + store ptr %72, ptr %70, align 8 + %.not120.i = icmp eq ptr %72, null + br i1 %.not120.i, label %calc_stride_and_planesize.exit, label %73 + +73: ; preds = %69 + store i64 %44, ptr %66, align 8 + tail call void @llvm.memset.p0.i64(ptr nonnull align 1 %72, i8 0, i64 %44, i1 false) + br label %74 + +74: ; preds = %73, %65, %59 + %75 = getelementptr inbounds nuw i8, ptr %0, i64 16 + store i32 %1, ptr %75, align 8 + %76 = getelementptr inbounds nuw i8, ptr %0, i64 24 + store i32 %2, ptr %76, align 8 store i32 %14, ptr %0, align 8 - %78 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i32 %16, ptr %78, align 8 - %79 = getelementptr inbounds nuw i8, ptr %0, i64 32 - store i32 %23, ptr %79, align 8 - %80 = add nsw i32 %3, %1 - %81 = ashr i32 %80, %3 - %82 = getelementptr inbounds nuw i8, ptr %0, i64 20 - store i32 %81, ptr %82, align 4 - %83 = add nsw i32 %4, %2 - %84 = ashr i32 %83, %4 - %85 = getelementptr inbounds nuw i8, ptr %0, i64 28 - store i32 %84, ptr %85, align 4 - %86 = getelementptr inbounds nuw i8, ptr %0, i64 4 - store i32 %39, ptr %86, align 4 - %87 = getelementptr inbounds nuw i8, ptr %0, i64 12 - store i32 %17, ptr %87, align 4 - %88 = getelementptr inbounds nuw i8, ptr %0, i64 36 - store i32 %30, ptr %88, align 4 - %89 = getelementptr inbounds nuw i8, ptr %0, i64 128 - store i32 %6, ptr %89, align 8 - %90 = getelementptr inbounds nuw i8, ptr %0, i64 136 - store i64 %45, ptr %90, align 8 - %91 = getelementptr inbounds nuw i8, ptr %0, i64 144 - store i32 %3, ptr %91, align 8 - %92 = getelementptr inbounds nuw i8, ptr %0, i64 148 - store i32 %4, ptr %92, align 4 - %93 = getelementptr inbounds nuw i8, ptr %0, i64 112 - %94 = load ptr, ptr %93, align 8 - %95 = ptrtoint ptr %94 to i64 - %96 = lshr i64 %95, 1 - %97 = inttoptr i64 %96 to ptr + %77 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store i32 %16, ptr %77, align 8 + %78 = getelementptr inbounds nuw i8, ptr %0, i64 32 + store i32 %23, ptr %78, align 8 + %79 = add nsw i32 %3, %1 + %80 = ashr i32 %79, %3 + %81 = getelementptr inbounds nuw i8, ptr %0, i64 20 + store i32 %80, ptr %81, align 4 + %82 = add nsw i32 %4, %2 + %83 = ashr i32 %82, %4 + %84 = getelementptr inbounds nuw i8, ptr %0, i64 28 + store i32 %83, ptr %84, align 4 + %85 = getelementptr inbounds nuw i8, ptr %0, i64 4 + store i32 %39, ptr %85, align 4 + %86 = getelementptr inbounds nuw i8, ptr %0, i64 12 + store i32 %17, ptr %86, align 4 + %87 = getelementptr inbounds nuw i8, ptr %0, i64 36 + store i32 %30, ptr %87, align 4 + %88 = getelementptr inbounds nuw i8, ptr %0, i64 128 + store i32 %6, ptr %88, align 8 + %89 = getelementptr inbounds nuw i8, ptr %0, i64 136 + store i64 %44, ptr %89, align 8 + %90 = getelementptr inbounds nuw i8, ptr %0, i64 144 + store i32 %3, ptr %90, align 8 + %91 = getelementptr inbounds nuw i8, ptr %0, i64 148 + store i32 %4, ptr %91, align 4 + %92 = getelementptr inbounds nuw i8, ptr %0, i64 112 + %93 = load ptr, ptr %92, align 8 + %94 = ptrtoint ptr %93 to i64 + %95 = lshr i64 %94, 1 + %96 = inttoptr i64 %95 to ptr %.sink.i = select i1 %.not.i40, i32 0, i32 8 - %.0111.i = select i1 %.not.i40, ptr %94, ptr %97 - %98 = getelementptr inbounds nuw i8, ptr %0, i64 192 - store i32 %.sink.i, ptr %98, align 8 - %99 = mul nsw i32 %23, %6 - %100 = sext i32 %99 to i64 - %101 = getelementptr inbounds i8, ptr %.0111.i, i64 %100 - %102 = sext i32 %6 to i64 - %103 = getelementptr inbounds i8, ptr %101, i64 %102 - %104 = ptrtoint ptr %103 to i64 - %105 = add nsw i32 %40, -1 - %106 = sext i32 %105 to i64 - %107 = add i64 %104, %106 - %108 = xor i64 %106, -1 - %109 = and i64 %107, %108 - %110 = inttoptr i64 %109 to ptr - %111 = getelementptr inbounds nuw i8, ptr %0, i64 40 - store ptr %110, ptr %111, align 8 - %112 = getelementptr inbounds i8, ptr %.0111.i, i64 %29 - %113 = mul nsw i32 %30, %31 - %114 = sext i32 %113 to i64 - %115 = getelementptr inbounds i8, ptr %112, i64 %114 - %116 = sext i32 %38 to i64 - %117 = getelementptr inbounds i8, ptr %115, i64 %116 - %118 = ptrtoint ptr %117 to i64 - %119 = add i64 %118, %106 - %120 = and i64 %119, %108 - %121 = inttoptr i64 %120 to ptr - %122 = getelementptr inbounds nuw i8, ptr %0, i64 48 - store ptr %121, ptr %122, align 8 - %123 = getelementptr inbounds i8, ptr %112, i64 %37 - %124 = getelementptr inbounds i8, ptr %123, i64 %114 - %125 = getelementptr inbounds i8, ptr %124, i64 %116 - %126 = ptrtoint ptr %125 to i64 - %127 = add i64 %126, %106 - %128 = and i64 %127, %108 - %129 = inttoptr i64 %128 to ptr - %130 = getelementptr inbounds nuw i8, ptr %0, i64 56 - store ptr %129, ptr %130, align 8 - %131 = getelementptr inbounds nuw i8, ptr %0, i64 64 - store i32 0, ptr %131, align 8 - %132 = getelementptr inbounds nuw i8, ptr %0, i64 96 - %133 = load ptr, ptr %132, align 8 - %.not121.i = icmp eq ptr %133, null - br i1 %.not.i40, label %138, label %134 - -134: ; preds = %75 - br i1 %.not121.i, label %136, label %135 - -135: ; preds = %134 - tail call void @aom_free(ptr noundef nonnull %133) #4 - br label %136 - -136: ; preds = %135, %134 - %137 = tail call ptr @aom_memalign(i64 noundef 32, i64 noundef %29) #4 - store ptr %137, ptr %132, align 8 - %.not123.i = icmp eq ptr %137, null - br i1 %.not123.i, label %calc_stride_and_planesize.exit, label %141 - -138: ; preds = %75 - br i1 %.not121.i, label %141, label %139 - -139: ; preds = %138 - tail call void @aom_free(ptr noundef nonnull %133) #4 - store ptr null, ptr %132, align 8 - %140 = getelementptr inbounds nuw i8, ptr %0, i64 104 - store i32 0, ptr %140, align 8 - br label %141 - -141: ; preds = %139, %138, %136 - %142 = getelementptr inbounds nuw i8, ptr %0, i64 188 - store i32 0, ptr %142, align 4 + %.0111.i = select i1 %.not.i40, ptr %93, ptr %96 + %97 = getelementptr inbounds nuw i8, ptr %0, i64 192 + store i32 %.sink.i, ptr %97, align 8 + %98 = mul nsw i32 %23, %6 + %99 = sext i32 %98 to i64 + %100 = getelementptr inbounds i8, ptr %.0111.i, i64 %99 + %101 = sext i32 %6 to i64 + %102 = getelementptr inbounds i8, ptr %100, i64 %101 + %103 = ptrtoint ptr %102 to i64 + %104 = tail call i32 @llvm.usub.sat.i32(i32 %7, i32 1) + %105 = sext i32 %104 to i64 + %106 = add i64 %103, %105 + %107 = xor i64 %105, -1 + %108 = and i64 %106, %107 + %109 = inttoptr i64 %108 to ptr + %110 = getelementptr inbounds nuw i8, ptr %0, i64 40 + store ptr %109, ptr %110, align 8 + %111 = getelementptr inbounds i8, ptr %.0111.i, i64 %29 + %112 = mul nsw i32 %30, %31 + %113 = sext i32 %112 to i64 + %114 = getelementptr inbounds i8, ptr %111, i64 %113 + %115 = sext i32 %38 to i64 + %116 = getelementptr inbounds i8, ptr %114, i64 %115 + %117 = ptrtoint ptr %116 to i64 + %118 = add i64 %117, %105 + %119 = and i64 %118, %107 + %120 = inttoptr i64 %119 to ptr + %121 = getelementptr inbounds nuw i8, ptr %0, i64 48 + store ptr %120, ptr %121, align 8 + %122 = getelementptr inbounds i8, ptr %111, i64 %37 + %123 = getelementptr inbounds i8, ptr %122, i64 %113 + %124 = getelementptr inbounds i8, ptr %123, i64 %115 + %125 = ptrtoint ptr %124 to i64 + %126 = add i64 %125, %105 + %127 = and i64 %126, %107 + %128 = inttoptr i64 %127 to ptr + %129 = getelementptr inbounds nuw i8, ptr %0, i64 56 + store ptr %128, ptr %129, align 8 + %130 = getelementptr inbounds nuw i8, ptr %0, i64 64 + store i32 0, ptr %130, align 8 + %131 = getelementptr inbounds nuw i8, ptr %0, i64 96 + %132 = load ptr, ptr %131, align 8 + %.not121.i = icmp eq ptr %132, null + br i1 %.not.i40, label %137, label %133 + +133: ; preds = %74 + br i1 %.not121.i, label %135, label %134 + +134: ; preds = %133 + tail call void @aom_free(ptr noundef nonnull %132) #4 + br label %135 + +135: ; preds = %134, %133 + %136 = tail call ptr @aom_memalign(i64 noundef 32, i64 noundef %29) #4 + store ptr %136, ptr %131, align 8 + %.not123.i = icmp eq ptr %136, null + br i1 %.not123.i, label %calc_stride_and_planesize.exit, label %140 + +137: ; preds = %74 + br i1 %.not121.i, label %140, label %138 + +138: ; preds = %137 + tail call void @aom_free(ptr noundef nonnull %132) #4 + store ptr null, ptr %131, align 8 + %139 = getelementptr inbounds nuw i8, ptr %0, i64 104 + store i32 0, ptr %139, align 8 + br label %140 + +140: ; preds = %138, %137, %135 + %141 = getelementptr inbounds nuw i8, ptr %0, i64 188 + store i32 0, ptr %141, align 4 br label %calc_stride_and_planesize.exit -calc_stride_and_planesize.exit: ; preds = %141, %136, %70, %56, %53, %49, %19, %12, %11 - %.0 = phi i32 [ 2, %11 ], [ 2, %12 ], [ 0, %141 ], [ 2, %19 ], [ 2, %49 ], [ 2, %56 ], [ 2, %53 ], [ 2, %70 ], [ 2, %136 ] +calc_stride_and_planesize.exit: ; preds = %140, %135, %69, %55, %52, %48, %19, %12, %11 + %.0 = phi i32 [ 2, %11 ], [ 2, %12 ], [ 0, %140 ], [ 2, %19 ], [ 2, %48 ], [ 2, %55 ], [ 2, %52 ], [ 2, %69 ], [ 2, %135 ] ret i32 %.0 } @@ -433,7 +432,7 @@ declare ptr @aom_img_metadata_alloc(i32 noundef, ptr noundef, i64 noundef, i32 n declare ptr @aom_memalign(i64 noundef, i64 noundef) local_unnamed_addr #1 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.umax.i32(i32, i32) #3 +declare i32 @llvm.usub.sat.i32(i32, i32) #3 attributes #0 = { nounwind uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } diff --git a/bench/proj/optimized/coordinateoperationfactory.cpp.ll b/bench/proj/optimized/coordinateoperationfactory.cpp.ll index b20a169bc22..a19936db57e 100644 --- a/bench/proj/optimized/coordinateoperationfactory.cpp.ll +++ b/bench/proj/optimized/coordinateoperationfactory.cpp.ll @@ -43991,12 +43991,12 @@ _ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_cold br label %_ZNSt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEED2Ev.exit667 .loopexit1600: ; preds = %1355, %1361 - %.merged400 = phi { ptr, i32 } [ %1362, %1361 ], [ %.pn349, %1355 ] + %.merged399 = phi { ptr, i32 } [ %1362, %1361 ], [ %.pn349, %1355 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %27) #28 br label %1517 1517: ; preds = %.loopexit1600, %1235, %1032, %825, %816, %814 - %.merged399 = phi { ptr, i32 } [ %815, %814 ], [ %.pn351.pn, %1032 ], [ %.merged400, %.loopexit1600 ], [ %.pn346, %1235 ], [ %.pn342.pn, %825 ], [ %817, %816 ] + %.merged398 = phi { ptr, i32 } [ %815, %814 ], [ %.pn351.pn, %1032 ], [ %.merged399, %.loopexit1600 ], [ %.pn346, %1235 ], [ %.pn342.pn, %825 ], [ %817, %816 ] call void @_ZNSt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %17) #28 br label %4900 @@ -45598,7 +45598,7 @@ _ZNSt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEED2Ev.exit832: ; p br i1 %2192, label %.critedge408, label %2312 .loopexit1598: ; preds = %2182, %1977, %1968, %1966 - %.merged402 = phi { ptr, i32 } [ %1967, %1966 ], [ %.pn336.pn, %1977 ], [ %1969, %1968 ], [ %.pn340, %2182 ] + %.merged392 = phi { ptr, i32 } [ %1967, %1966 ], [ %.pn336.pn, %1977 ], [ %1969, %1968 ], [ %.pn340, %2182 ] call void @_ZNSt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %45) #28 call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %42) #28 br label %2394 @@ -46000,7 +46000,7 @@ _ZSt8_DestroyIPN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19Coordi br label %_ZNSt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEED2Ev.exit667 2394: ; preds = %.loopexit1598, %1965, %1959 - %.merged401 = phi { ptr, i32 } [ %.merged402, %.loopexit1598 ], [ %.pn334, %1965 ], [ %1960, %1959 ] + %.merged391 = phi { ptr, i32 } [ %.merged392, %.loopexit1598 ], [ %.pn334, %1965 ], [ %1960, %1959 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %37) #28 br label %4900 @@ -47768,17 +47768,17 @@ _ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_cold br label %_ZNSt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEED2Ev.exit667 .loopexit1596: ; preds = %3092, %.loopexit1597, %.loopexit.split-lp, %3081, %3080 - %.merged395 = phi { ptr, i32 } [ %3082, %3081 ], [ %.pn321, %3080 ], [ %lpad.loopexit, %.loopexit1597 ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ], [ %.pn323.pn, %3092 ] + %.merged402 = phi { ptr, i32 } [ %3082, %3081 ], [ %.pn321, %3080 ], [ %lpad.loopexit, %.loopexit1597 ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ], [ %.pn323.pn, %3092 ] call void @_ZN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation14TransformationEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %66) #28 br label %3215 3215: ; preds = %.loopexit1596, %3074 - %.merged394 = phi { ptr, i32 } [ %.merged395, %.loopexit1596 ], [ %3075, %3074 ] + %.merged401 = phi { ptr, i32 } [ %.merged402, %.loopexit1596 ], [ %3075, %3074 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %62) #28 br label %3216 3216: ; preds = %3215, %3073, %2705, %2694, %2692 - %.merged393 = phi { ptr, i32 } [ %.pn329, %2705 ], [ %2693, %2692 ], [ %.merged394, %3215 ], [ %.pn318, %3073 ], [ %2695, %2694 ] + %.merged400 = phi { ptr, i32 } [ %.pn329, %2705 ], [ %2693, %2692 ], [ %.merged401, %3215 ], [ %.pn318, %3073 ], [ %2695, %2694 ] call void @_ZN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj3crs13GeographicCRSEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %56) #28 br label %4900 @@ -48638,7 +48638,7 @@ _ZSt8_DestroyIPN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19Coordi br label %_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev.exit1143 .loopexit1586: ; preds = %3550, %3556 - %.merged390 = phi { ptr, i32 } [ %3557, %3556 ], [ %.pn383.pn, %3550 ] + %.merged397 = phi { ptr, i32 } [ %3557, %3556 ], [ %.pn383.pn, %3550 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %77) #28 br label %3661 @@ -48773,7 +48773,7 @@ _ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_cold br label %_ZNSt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEED2Ev.exit667 3661: ; preds = %3534, %.loopexit1586, %3540, %3292 - %.merged389 = phi { ptr, i32 } [ %.merged390, %.loopexit1586 ], [ %.pn381, %3540 ], [ %3293, %3292 ], [ %3535, %3534 ] + %.merged396 = phi { ptr, i32 } [ %.merged397, %.loopexit1586 ], [ %.pn381, %3540 ], [ %3293, %3292 ], [ %3535, %3534 ] call void @_ZN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj3crs3CRSEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %75) #28 br label %4900 @@ -49568,12 +49568,12 @@ _ZSt8_DestroyIPN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19Coordi br label %_ZNSt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEED2Ev.exit667 .loopexit1592: ; preds = %3892, %3881 - %.merged392 = phi { ptr, i32 } [ %3882, %3881 ], [ %.pn359.pn, %3892 ] + %.merged390 = phi { ptr, i32 } [ %3882, %3881 ], [ %.pn359.pn, %3892 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %86) #28 br label %3987 3987: ; preds = %.loopexit1592, %3880, %3874 - %.merged391 = phi { ptr, i32 } [ %.merged392, %.loopexit1592 ], [ %.pn357, %3880 ], [ %3875, %3874 ] + %.merged389 = phi { ptr, i32 } [ %.merged390, %.loopexit1592 ], [ %.pn357, %3880 ], [ %3875, %3874 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %83) #28 br label %4900 @@ -50305,7 +50305,7 @@ _ZN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperation br label %.critedge414 .loopexit1588: ; preds = %4306, %4296, %4287 - %.merged397 = phi { ptr, i32 } [ %4288, %4287 ], [ %.pn371.pn, %4296 ], [ %.pn374.pn, %4306 ] + %.merged394 = phi { ptr, i32 } [ %4288, %4287 ], [ %.pn371.pn, %4296 ], [ %.pn374.pn, %4306 ] call void @_ZN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation10ConversionEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %96) #28 br label %4617 @@ -51050,12 +51050,12 @@ _ZSt8_DestroyIPN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19Coordi br label %_ZNSt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEED2Ev.exit667 .loopexit1590: ; preds = %4522, %4511 - %.merged398 = phi { ptr, i32 } [ %4512, %4511 ], [ %.pn366.pn, %4522 ] + %.merged395 = phi { ptr, i32 } [ %4512, %4511 ], [ %.pn366.pn, %4522 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %107) #28 br label %4617 4617: ; preds = %4074, %.loopexit1590, %4510, %.loopexit1588, %4286, %4076, %4072 - %.merged396 = phi { ptr, i32 } [ %4073, %4072 ], [ %4077, %4076 ], [ %.merged397, %.loopexit1588 ], [ %.pn369, %4286 ], [ %4075, %4074 ], [ %.merged398, %.loopexit1590 ], [ %.pn364, %4510 ] + %.merged393 = phi { ptr, i32 } [ %4073, %4072 ], [ %4077, %4076 ], [ %.merged394, %.loopexit1588 ], [ %.pn369, %4286 ], [ %4075, %4074 ], [ %.merged395, %.loopexit1590 ], [ %.pn364, %4510 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %92) #28 br label %4900 @@ -51700,7 +51700,7 @@ _ZNSt10shared_ptrIN5osgeo4proj3crs13GeographicCRSEED2Ev.exit1464: ; preds = %_ZN br label %4900 4900: ; preds = %3235, %2690, %1952, %812, %4899, %4617, %4071, %3987, %3873, %3661, %3216, %2394, %1958, %1517, %480, %471 - %.merged388 = phi { ptr, i32 } [ %.merged389, %3661 ], [ %.pn378, %4899 ], [ %472, %471 ], [ %.merged396, %4617 ], [ %.pn362, %4071 ], [ %.merged391, %3987 ], [ %.pn355, %3873 ], [ %3236, %3235 ], [ %.merged399, %1517 ], [ %.merged401, %2394 ], [ %.pn331, %1958 ], [ %.merged393, %3216 ], [ %2691, %2690 ], [ %1953, %1952 ], [ %813, %812 ], [ %.pn.pn, %480 ] + %.merged388 = phi { ptr, i32 } [ %.merged396, %3661 ], [ %.pn378, %4899 ], [ %472, %471 ], [ %.merged393, %4617 ], [ %.pn362, %4071 ], [ %.merged389, %3987 ], [ %.pn355, %3873 ], [ %3236, %3235 ], [ %.merged398, %1517 ], [ %.merged391, %2394 ], [ %.pn331, %1958 ], [ %.merged400, %3216 ], [ %2691, %2690 ], [ %1953, %1952 ], [ %813, %812 ], [ %.pn.pn, %480 ] call void @_ZN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj5datum22GeodeticReferenceFrameEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %11) #28 br label %4901 @@ -56444,12 +56444,12 @@ _ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19Coordina br i1 %300, label %_ZNSt10shared_ptrIN5osgeo4proj2io15DatabaseContextEED2Ev.exit.thread, label %_ZNSt10shared_ptrIN5osgeo4proj3crs11VerticalCRSEED2Ev.exit394 .loopexit508: ; preds = %287, %293 - %.merged136 = phi { ptr, i32 } [ %294, %293 ], [ %.pn133, %287 ] + %.merged140 = phi { ptr, i32 } [ %294, %293 ], [ %.pn133, %287 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #28 br label %383 383: ; preds = %.loopexit508, %282, %276 - %.merged135 = phi { ptr, i32 } [ %.merged136, %.loopexit508 ], [ %.pn117, %282 ], [ %277, %276 ] + %.merged139 = phi { ptr, i32 } [ %.merged140, %.loopexit508 ], [ %.pn117, %282 ], [ %277, %276 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #28 br label %1339 @@ -58251,12 +58251,12 @@ _ZSt8_DestroyIPN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19Coordi br label %_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev.exit360 .loopexit507: ; preds = %988, %994 - %.merged140 = phi { ptr, i32 } [ %995, %994 ], [ %.pn128.pn, %988 ] + %.merged138 = phi { ptr, i32 } [ %995, %994 ], [ %.pn128.pn, %988 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %29) #28 br label %1166 1166: ; preds = %.loopexit507, %978, %972 - %.merged139 = phi { ptr, i32 } [ %.merged140, %.loopexit507 ], [ %.pn126, %978 ], [ %973, %972 ] + %.merged137 = phi { ptr, i32 } [ %.merged138, %.loopexit507 ], [ %.pn126, %978 ], [ %973, %972 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %26) #28 br label %1337 @@ -58655,17 +58655,17 @@ _ZNSt10shared_ptrIN5osgeo4proj3crs11VerticalCRSEED2Ev.exit394: ; preds = %_ZNSt1 br label %1337 1337: ; preds = %963, %1336, %1166, %971, %965 - %.merged138 = phi { ptr, i32 } [ %.pn131, %1336 ], [ %966, %965 ], [ %.merged139, %1166 ], [ %.pn124, %971 ], [ %964, %963 ] + %.merged136 = phi { ptr, i32 } [ %.pn131, %1336 ], [ %966, %965 ], [ %.merged137, %1166 ], [ %.pn124, %971 ], [ %964, %963 ] call void @_ZNSt10shared_ptrIN5osgeo4proj3crs11VerticalCRSEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %24) #28 br label %1338 1338: ; preds = %1337, %961 - %.merged137 = phi { ptr, i32 } [ %.merged138, %1337 ], [ %962, %961 ] + %.merged135 = phi { ptr, i32 } [ %.merged136, %1337 ], [ %962, %961 ] call void @_ZNSt10shared_ptrIN5osgeo4proj3crs11VerticalCRSEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %23) #28 br label %1339 1339: ; preds = %269, %1338, %710, %383, %275 - %.merged = phi { ptr, i32 } [ %.merged135, %383 ], [ %.merged137, %1338 ], [ %.pn119.pn.pn.pn, %710 ], [ %.pn, %275 ], [ %270, %269 ] + %.merged = phi { ptr, i32 } [ %.merged139, %383 ], [ %.merged135, %1338 ], [ %.pn119.pn.pn.pn, %710 ], [ %.pn, %275 ], [ %270, %269 ] resume { ptr, i32 } %.merged } @@ -60262,27 +60262,27 @@ _ZSt8_DestroyIPN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj3crs3CRSEEEES9_EvT br label %_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj3crs3CRSEEEESaIS9_EED2Ev.exit .loopexit2033: ; preds = %646, %652 - %.merged516 = phi { ptr, i32 } [ %653, %652 ], [ %.pn489.pn, %646 ] + %.merged496 = phi { ptr, i32 } [ %653, %652 ], [ %.pn489.pn, %646 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %65) #28 br label %811 811: ; preds = %.loopexit2033, %635 - %.merged515 = phi { ptr, i32 } [ %.merged516, %.loopexit2033 ], [ %636, %635 ] + %.merged495 = phi { ptr, i32 } [ %.merged496, %.loopexit2033 ], [ %636, %635 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %63) #28 br label %812 812: ; preds = %811, %633 - %.merged514 = phi { ptr, i32 } [ %.merged515, %811 ], [ %634, %633 ] + %.merged494 = phi { ptr, i32 } [ %.merged495, %811 ], [ %634, %633 ] call void @_ZN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj3crs11CompoundCRSEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %62) #28 br label %813 813: ; preds = %812, %631 - %.merged513 = phi { ptr, i32 } [ %.merged514, %812 ], [ %632, %631 ] + %.merged493 = phi { ptr, i32 } [ %.merged494, %812 ], [ %632, %631 ] call void @_ZN5osgeo4proj4util11PropertyMapD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %58) #28 br label %814 814: ; preds = %813, %.body560, %622 - %.merged512 = phi { ptr, i32 } [ %.merged513, %813 ], [ %.pn486.pn, %.body560 ], [ %623, %622 ] + %.merged492 = phi { ptr, i32 } [ %.merged493, %813 ], [ %.pn486.pn, %.body560 ], [ %623, %622 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj3crs3CRSEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %56) #28 br label %.loopexit2034 @@ -62467,27 +62467,27 @@ _ZSt8_DestroyIPN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj3crs3CRSEEEES9_EvT br label %_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj3crs3CRSEEEESaIS9_EED2Ev.exit .loopexit2030: ; preds = %1576, %1582 - %.merged496 = phi { ptr, i32 } [ %1583, %1582 ], [ %.pn483.pn, %1576 ] + %.merged516 = phi { ptr, i32 } [ %1583, %1582 ], [ %.pn483.pn, %1576 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %109) #28 br label %1741 1741: ; preds = %.loopexit2030, %1565 - %.merged495 = phi { ptr, i32 } [ %.merged496, %.loopexit2030 ], [ %1566, %1565 ] + %.merged515 = phi { ptr, i32 } [ %.merged516, %.loopexit2030 ], [ %1566, %1565 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %107) #28 br label %1742 1742: ; preds = %1741, %1563 - %.merged494 = phi { ptr, i32 } [ %.merged495, %1741 ], [ %1564, %1563 ] + %.merged514 = phi { ptr, i32 } [ %.merged515, %1741 ], [ %1564, %1563 ] call void @_ZN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj3crs11CompoundCRSEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %106) #28 br label %1743 1743: ; preds = %1742, %1561 - %.merged493 = phi { ptr, i32 } [ %.merged494, %1742 ], [ %1562, %1561 ] + %.merged513 = phi { ptr, i32 } [ %.merged514, %1742 ], [ %1562, %1561 ] call void @_ZN5osgeo4proj4util11PropertyMapD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %102) #28 br label %1744 1744: ; preds = %1743, %.body719, %1552 - %.merged492 = phi { ptr, i32 } [ %.merged493, %1743 ], [ %.pn480.pn, %.body719 ], [ %1553, %1552 ] + %.merged512 = phi { ptr, i32 } [ %.merged513, %1743 ], [ %.pn480.pn, %.body719 ], [ %1553, %1552 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj3crs3CRSEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %98) #28 br label %.loopexit2034 @@ -64823,7 +64823,7 @@ _ZN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperation br i1 %.not1997, label %._crit_edge2102, label %.lr.ph2101 .loopexit2017: ; preds = %2721, %.loopexit2018, %.loopexit.split-lp2019 - %.merged511 = phi { ptr, i32 } [ %lpad.loopexit2020, %.loopexit2018 ], [ %lpad.loopexit.split-lp2021, %.loopexit.split-lp2019 ], [ %.pn473.pn, %2721 ] + %.merged504 = phi { ptr, i32 } [ %lpad.loopexit2020, %.loopexit2018 ], [ %lpad.loopexit.split-lp2021, %.loopexit.split-lp2019 ], [ %.pn473.pn, %2721 ] call void @_ZN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %147) #28 br label %2799 @@ -64906,7 +64906,7 @@ _ZN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperation br i1 %.not1981, label %._crit_edge2107, label %2399 2799: ; preds = %.loopexit2023, %.loopexit.split-lp2024, %.loopexit2017 - %.merged510 = phi { ptr, i32 } [ %.merged511, %.loopexit2017 ], [ %lpad.loopexit2025, %.loopexit2023 ], [ %lpad.loopexit.split-lp2026, %.loopexit.split-lp2024 ] + %.merged503 = phi { ptr, i32 } [ %.merged504, %.loopexit2017 ], [ %lpad.loopexit2025, %.loopexit2023 ], [ %lpad.loopexit.split-lp2026, %.loopexit.split-lp2024 ] call void @_ZN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %146) #28 br label %2965 @@ -65291,22 +65291,22 @@ _ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19Coordina br i1 %2803, label %.critedge530, label %3041 2965: ; preds = %2799, %2674 - %.merged509 = phi { ptr, i32 } [ %.merged510, %2799 ], [ %2675, %2674 ] + %.merged502 = phi { ptr, i32 } [ %.merged503, %2799 ], [ %2675, %2674 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %143) #28 br label %2966 2966: ; preds = %2965, %2673, %2667 - %.merged508 = phi { ptr, i32 } [ %.merged509, %2965 ], [ %.pn446, %2673 ], [ %2668, %2667 ] + %.merged501 = phi { ptr, i32 } [ %.merged502, %2965 ], [ %.pn446, %2673 ], [ %2668, %2667 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %133) #28 br label %2967 2967: ; preds = %2966, %2666, %2648 - %.merged507 = phi { ptr, i32 } [ %.merged508, %2966 ], [ %.pn439.pn.pn.pn.pn.pn, %2666 ], [ %2649, %2648 ] + %.merged500 = phi { ptr, i32 } [ %.merged501, %2966 ], [ %.pn439.pn.pn.pn.pn.pn, %2666 ], [ %2649, %2648 ] call void @_ZN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj3crs3CRSEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %131) #28 br label %2968 2968: ; preds = %2967, %2646 - %.merged506 = phi { ptr, i32 } [ %.merged507, %2967 ], [ %2647, %2646 ] + %.merged499 = phi { ptr, i32 } [ %.merged500, %2967 ], [ %2647, %2646 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %122) #28 br label %3113 @@ -65606,12 +65606,12 @@ _ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_cold br label %_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj3crs3CRSEEEESaIS9_EED2Ev.exit 3113: ; preds = %2628, %2968, %.loopexit2028, %2616 - %.merged505 = phi { ptr, i32 } [ %.merged506, %2968 ], [ %.pn432.pn.pn.pn.pn.pn, %.loopexit2028 ], [ %2617, %2616 ], [ %.pn428.pn.pn, %2628 ] + %.merged498 = phi { ptr, i32 } [ %.merged499, %2968 ], [ %.pn432.pn.pn.pn.pn.pn, %.loopexit2028 ], [ %2617, %2616 ], [ %.pn428.pn.pn, %2628 ] call void @_ZNSt10shared_ptrIN5osgeo4proj3crs13GeographicCRSEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %115) #28 br label %3114 3114: ; preds = %3113, %2614 - %.merged504 = phi { ptr, i32 } [ %.merged505, %3113 ], [ %2615, %2614 ] + %.merged497 = phi { ptr, i32 } [ %.merged498, %3113 ], [ %2615, %2614 ] call void @_ZNSt10shared_ptrIN5osgeo4proj3crs13GeographicCRSEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %114) #28 br label %.loopexit2034 @@ -71497,12 +71497,12 @@ _ZSt8_DestroyIPN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19Coordi br label %_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev.exit1470 .body1422: ; preds = %5543, %.loopexit, %.loopexit.split-lp.loopexit.split-lp, %.loopexit.split-lp.loopexit, %5448, %_ZSt8_DestroyIPN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEES9_EvT_SB_RSaIT0_E.exit.i1690, %4717, %4634 - %.merged503 = phi { ptr, i32 } [ %.pn469, %4634 ], [ %.pn467, %4717 ], [ %.pn.pn.pn.i, %_ZSt8_DestroyIPN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEES9_EvT_SB_RSaIT0_E.exit.i1690 ], [ %.pn.pn.pn.i, %5448 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit2004, %.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp2005, %.loopexit.split-lp.loopexit.split-lp ], [ %.pn465, %5543 ] + %.merged511 = phi { ptr, i32 } [ %.pn469, %4634 ], [ %.pn467, %4717 ], [ %.pn.pn.pn.i, %_ZSt8_DestroyIPN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEES9_EvT_SB_RSaIT0_E.exit.i1690 ], [ %.pn.pn.pn.i, %5448 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit2004, %.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp2005, %.loopexit.split-lp.loopexit.split-lp ], [ %.pn465, %5543 ] call void @_ZNSt3mapIPN5osgeo4proj9operation19CoordinateOperationESt3setINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessISB_ESaISB_EESC_IS4_ESaISt4pairIKS4_SF_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %188) #28 br label %.body1294 .body1294: ; preds = %4339, %4331, %.body1422, %4629, %4455, %4341 - %.merged502 = phi { ptr, i32 } [ %.merged503, %.body1422 ], [ %.pn463, %4629 ], [ %4456, %4455 ], [ %4342, %4341 ], [ %4340, %4339 ], [ %4332, %4331 ] + %.merged510 = phi { ptr, i32 } [ %.merged511, %.body1422 ], [ %.pn463, %4629 ], [ %4456, %4455 ], [ %4342, %4341 ], [ %4340, %4339 ], [ %4332, %4331 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %179) #28 call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %178) #28 call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %177) #28 @@ -74088,28 +74088,28 @@ _ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_cold br label %_ZNSt10shared_ptrIN5osgeo4proj2io15DatabaseContextEED2Ev.exit1579 .body1291: ; preds = %.body1510, %.body1294, %6514, %4060, %4312 - %.merged500 = phi { ptr, i32 } [ %4313, %4312 ], [ %4061, %4060 ], [ %.merged502, %.body1294 ], [ %6515, %6514 ], [ %.pn461, %.body1510 ] + %.merged508 = phi { ptr, i32 } [ %4313, %4312 ], [ %4061, %4060 ], [ %.merged510, %.body1294 ], [ %6515, %6514 ], [ %.pn461, %.body1510 ] call void @_ZNSt10shared_ptrIN5osgeo4proj3crs13GeographicCRSEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %176) #28 call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairISt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaISH_EESJ_ESt4lessIS5_ESaIS6_IKS5_SK_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %175) #28 br label %6712 6712: ; preds = %.body1291, %3968, %3549 - %.merged499 = phi { ptr, i32 } [ %3550, %3549 ], [ %.merged500, %.body1291 ], [ %.pn458.pn, %3968 ] + %.merged507 = phi { ptr, i32 } [ %3550, %3549 ], [ %.merged508, %.body1291 ], [ %.pn458.pn, %3968 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %156) #28 br label %6713 6713: ; preds = %6712, %3338 - %.merged498 = phi { ptr, i32 } [ %.merged499, %6712 ], [ %3339, %3338 ] + %.merged506 = phi { ptr, i32 } [ %.merged507, %6712 ], [ %3339, %3338 ] call void @_ZNSt10shared_ptrIN5osgeo4proj3crs13GeographicCRSEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %154) #28 br label %6714 6714: ; preds = %6713, %3336 - %.merged497 = phi { ptr, i32 } [ %.merged498, %6713 ], [ %3337, %3336 ] + %.merged505 = phi { ptr, i32 } [ %.merged506, %6713 ], [ %3337, %3336 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %153) #28 br label %.loopexit2034 .loopexit2034: ; preds = %618, %1551, %.thread1899, %6714, %3240, %3114, %1744, %1072, %814, %233 - %.merged = phi { ptr, i32 } [ %.merged512, %814 ], [ %.merged492, %1744 ], [ %1546, %1551 ], [ %.merged504, %3114 ], [ %.pn471, %3240 ], [ %234, %233 ], [ %.merged497, %6714 ], [ %.pn417.pn.pn.pn.pn.pn.pn.pn, %1072 ], [ %1545, %.thread1899 ], [ %617, %618 ] + %.merged = phi { ptr, i32 } [ %.merged492, %814 ], [ %.merged512, %1744 ], [ %1546, %1551 ], [ %.merged497, %3114 ], [ %.pn471, %3240 ], [ %234, %233 ], [ %.merged505, %6714 ], [ %.pn417.pn.pn.pn.pn.pn.pn.pn, %1072 ], [ %1545, %.thread1899 ], [ %617, %618 ] call void @_ZNSt10shared_ptrIN5osgeo4proj2io15DatabaseContextEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %55) #28 resume { ptr, i32 } %.merged @@ -75265,22 +75265,22 @@ _ZN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperation br i1 %579, label %.critedge477, label %622 .loopexit.split-lp1226: ; preds = %568, %.loopexit1225, %.loopexit.split-lp1226.loopexit.split-lp, %.loopexit.split-lp1226.loopexit - %.merged462 = phi { ptr, i32 } [ %lpad.loopexit1227, %.loopexit1225 ], [ %lpad.loopexit1232, %.loopexit.split-lp1226.loopexit ], [ %lpad.loopexit.split-lp1233, %.loopexit.split-lp1226.loopexit.split-lp ], [ %.pn.pn, %568 ] + %.merged475 = phi { ptr, i32 } [ %lpad.loopexit1227, %.loopexit1225 ], [ %lpad.loopexit1232, %.loopexit.split-lp1226.loopexit ], [ %lpad.loopexit.split-lp1233, %.loopexit.split-lp1226.loopexit.split-lp ], [ %.pn.pn, %568 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %35) #28 br label %580 580: ; preds = %.loopexit.split-lp1226, %557 - %.merged461 = phi { ptr, i32 } [ %.merged462, %.loopexit.split-lp1226 ], [ %558, %557 ] + %.merged474 = phi { ptr, i32 } [ %.merged475, %.loopexit.split-lp1226 ], [ %558, %557 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %34) #28 br label %581 581: ; preds = %580, %555 - %.merged460 = phi { ptr, i32 } [ %.merged461, %580 ], [ %556, %555 ] + %.merged473 = phi { ptr, i32 } [ %.merged474, %580 ], [ %556, %555 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %33) #28 br label %582 582: ; preds = %581, %553 - %.merged459 = phi { ptr, i32 } [ %.merged460, %581 ], [ %554, %553 ] + %.merged472 = phi { ptr, i32 } [ %.merged473, %581 ], [ %554, %553 ] call void @_ZN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj3crs3CRSEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %31) #28 br label %623 @@ -75388,7 +75388,7 @@ _ZSt8_DestroyIPN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation20PointM br label %_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev.exit1021 623: ; preds = %582, %551 - %.merged458 = phi { ptr, i32 } [ %.merged459, %582 ], [ %552, %551 ] + %.merged471 = phi { ptr, i32 } [ %.merged472, %582 ], [ %552, %551 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation20PointMotionOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %28) #28 br label %3745 @@ -76025,17 +76025,17 @@ _ZN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperation br label %_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev.exit1021 .loopexit1222: ; preds = %894, %900 - %.merged475 = phi { ptr, i32 } [ %901, %900 ], [ %.pn453.pn, %894 ] + %.merged470 = phi { ptr, i32 } [ %901, %900 ], [ %.pn453.pn, %894 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %44) #28 br label %903 903: ; preds = %.loopexit1222, %883 - %.merged474 = phi { ptr, i32 } [ %.merged475, %.loopexit1222 ], [ %884, %883 ] + %.merged469 = phi { ptr, i32 } [ %.merged470, %.loopexit1222 ], [ %884, %883 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %43) #28 br label %904 904: ; preds = %903, %881 - %.merged473 = phi { ptr, i32 } [ %.merged474, %903 ], [ %882, %881 ] + %.merged468 = phi { ptr, i32 } [ %.merged469, %903 ], [ %882, %881 ] call void @_ZN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj3crs3CRSEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %41) #28 br label %3745 @@ -77704,7 +77704,7 @@ _ZN5osgeo4proj9operationL12getStepCountERKN7dropbox6oxygen2nnISt10shared_ptrINS1 br label %1744 .loopexit1219: ; preds = %.critedge492, %.loopexit1214, %.loopexit.split-lp1215 - %.merged468 = phi { ptr, i32 } [ %lpad.loopexit1216, %.loopexit1214 ], [ %lpad.loopexit.split-lp1217, %.loopexit.split-lp1215 ], [ %.pn451, %.critedge492 ] + %.merged463 = phi { ptr, i32 } [ %lpad.loopexit1216, %.loopexit1214 ], [ %lpad.loopexit.split-lp1217, %.loopexit.split-lp1215 ], [ %.pn451, %.critedge492 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %68) #28 br label %1829 @@ -77898,22 +77898,22 @@ _ZN5osgeo4proj4util8optionalINS0_6common9DataEpochEEC2Ev.exit711: ; preds = %_ZN br i1 %1828, label %.critedge479, label %_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev.exit1004 1829: ; preds = %1822, %1821, %1783, %1782, %.loopexit1219, %1389 - %.merged467 = phi { ptr, i32 } [ %.merged468, %.loopexit1219 ], [ %1823, %1822 ], [ %.pn414, %1821 ], [ %1390, %1389 ], [ %1784, %1783 ], [ %.pn412, %1782 ] + %.merged462 = phi { ptr, i32 } [ %.merged463, %.loopexit1219 ], [ %1823, %1822 ], [ %.pn414, %1821 ], [ %1390, %1389 ], [ %1784, %1783 ], [ %.pn412, %1782 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %66) #28 br label %1830 1830: ; preds = %1829, %1387 - %.merged466 = phi { ptr, i32 } [ %.merged467, %1829 ], [ %1388, %1387 ] + %.merged461 = phi { ptr, i32 } [ %.merged462, %1829 ], [ %1388, %1387 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %65) #28 br label %1831 1831: ; preds = %1830, %1385 - %.merged465 = phi { ptr, i32 } [ %.merged466, %1830 ], [ %1386, %1385 ] + %.merged460 = phi { ptr, i32 } [ %.merged461, %1830 ], [ %1386, %1385 ] call void @_ZN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj3crs3CRSEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %63) #28 br label %1832 1832: ; preds = %1383, %1831, %1381 - %.merged464 = phi { ptr, i32 } [ %.merged465, %1831 ], [ %1384, %1383 ], [ %1382, %1381 ] + %.merged459 = phi { ptr, i32 } [ %.merged460, %1831 ], [ %1384, %1383 ], [ %1382, %1381 ] call void @_ZN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj3crs3CRSEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %60) #28 br label %3744 @@ -81660,22 +81660,22 @@ _ZN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj3crs13GeographicCRSEEED2Ev.exit br i1 %.not1197, label %._crit_edge1456, label %1878 .body872: ; preds = %2731, %.loopexit, %.loopexit.split-lp, %2778, %.body895 - %.merged472 = phi { ptr, i32 } [ %.pn441, %.body895 ], [ %2779, %2778 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ], [ %.pn443, %2731 ] + %.merged467 = phi { ptr, i32 } [ %.pn441, %.body895 ], [ %2779, %2778 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ], [ %.pn443, %2731 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %96) #28 br label %3473 3473: ; preds = %.body872, %2721 - %.merged471 = phi { ptr, i32 } [ %.merged472, %.body872 ], [ %.pn434.pn, %2721 ] + %.merged466 = phi { ptr, i32 } [ %.merged467, %.body872 ], [ %.pn434.pn, %2721 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %92) #28 br label %.loopexit1212 .loopexit1212: ; preds = %2498, %2378, %2103, %3473, %2713, %1995 - %.merged470 = phi { ptr, i32 } [ %.merged471, %3473 ], [ %.pn431, %2713 ], [ %1996, %1995 ], [ %2379, %2378 ], [ %2104, %2103 ], [ %.pn426.pn, %2498 ] + %.merged465 = phi { ptr, i32 } [ %.merged466, %3473 ], [ %.pn431, %2713 ], [ %1996, %1995 ], [ %2379, %2378 ], [ %2104, %2103 ], [ %.pn426.pn, %2498 ] call void @_ZNSt10shared_ptrIN5osgeo4proj3crs3CRSEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %81) #28 br label %3474 3474: ; preds = %.loopexit1212, %1918 - %.merged469 = phi { ptr, i32 } [ %.merged470, %.loopexit1212 ], [ %1919, %1918 ] + %.merged464 = phi { ptr, i32 } [ %.merged465, %.loopexit1212 ], [ %1919, %1918 ] call void @_ZN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj3crs13GeographicCRSEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %80) #28 br label %3744 @@ -82305,12 +82305,12 @@ _ZNSt10shared_ptrIN5osgeo4proj3crs13GeographicCRSEED2Ev.exit1042: ; preds = %_ZN ret void 3744: ; preds = %1294, %1265, %3593, %3549, %3474, %1832, %1379, %1300, %1271, %1223, %1197 - %.merged463 = phi { ptr, i32 } [ %.merged464, %1832 ], [ %.merged469, %3474 ], [ %.pn418, %3593 ], [ %.pn416, %3549 ], [ %1198, %1197 ], [ %1380, %1379 ], [ %.pn410, %1271 ], [ %.pn408, %1300 ], [ %1295, %1294 ], [ %1266, %1265 ], [ %.pn405.pn, %1223 ] + %.merged458 = phi { ptr, i32 } [ %.merged459, %1832 ], [ %.merged464, %3474 ], [ %.pn418, %3593 ], [ %.pn416, %3549 ], [ %1198, %1197 ], [ %1380, %1379 ], [ %.pn410, %1271 ], [ %.pn408, %1300 ], [ %1295, %1294 ], [ %1266, %1265 ], [ %.pn405.pn, %1223 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %48) #28 br label %3745 3745: ; preds = %878, %547, %3744, %904, %879, %623, %549, %545 - %.merged457 = phi { ptr, i32 } [ %.merged473, %904 ], [ %880, %879 ], [ %.merged463, %3744 ], [ %.pn403, %878 ], [ %.merged458, %623 ], [ %550, %549 ], [ %548, %547 ], [ %546, %545 ] + %.merged457 = phi { ptr, i32 } [ %.merged468, %904 ], [ %880, %879 ], [ %.merged458, %3744 ], [ %.pn403, %878 ], [ %.merged471, %623 ], [ %550, %549 ], [ %548, %547 ], [ %546, %545 ] call void @_ZNSt10shared_ptrIN5osgeo4proj2io15DatabaseContextEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %26) #28 br label %3746 diff --git a/bench/proj/optimized/io.cpp.ll b/bench/proj/optimized/io.cpp.ll index c6aa1a711fa..20cacb75063 100644 --- a/bench/proj/optimized/io.cpp.ll +++ b/bench/proj/optimized/io.cpp.ll @@ -45771,7 +45771,7 @@ _ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN5osgeo4proj6commo br label %.loopexit547 .loopexit547: ; preds = %292, %298 - %.merged297 = phi { ptr, i32 } [ %299, %298 ], [ %.pn258.pn.pn.pn, %292 ] + %.merged291 = phi { ptr, i32 } [ %299, %298 ], [ %.pn258.pn.pn.pn, %292 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #39 br label %446 @@ -46230,7 +46230,7 @@ _ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN5osgeo4proj6commo br label %446 446: ; preds = %445, %353, %.loopexit547, %280 - %.merged296 = phi { ptr, i32 } [ %.merged297, %.loopexit547 ], [ %281, %280 ], [ %.pn247.pn.pn.pn.pn.pn.pn.pn.pn.pn, %445 ], [ %.pn231, %353 ] + %.merged290 = phi { ptr, i32 } [ %.merged291, %.loopexit547 ], [ %281, %280 ], [ %.pn247.pn.pn.pn.pn.pn.pn.pn.pn.pn, %445 ], [ %.pn231, %353 ] call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN5osgeo4proj6common7MeasureESt4lessIS5_ESaISt4pairIKS5_S9_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %17) #39 br label %1445 @@ -46535,7 +46535,7 @@ _ZNSt10shared_ptrIN5osgeo4proj3crs12ProjectedCRSEED2Ev.exit339: ; preds = %.crit br label %.sink.split642 580: ; preds = %538, %474 - %.merged295 = phi { ptr, i32 } [ %475, %474 ], [ %.pn.pn, %538 ] + %.merged289 = phi { ptr, i32 } [ %475, %474 ], [ %.pn.pn, %538 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %51) #39 br label %1445 @@ -47581,17 +47581,17 @@ _ZN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation14ParameterValueEEED2 br label %1020 1017: ; preds = %1015, %1002, %990, %851 - %.merged294 = phi { ptr, i32 } [ %.pn287519, %1015 ], [ %.pn283.pn.pn, %1002 ], [ %991, %990 ], [ %852, %851 ] + %.merged297 = phi { ptr, i32 } [ %.pn287519, %1015 ], [ %.pn283.pn.pn, %1002 ], [ %991, %990 ], [ %852, %851 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %66) #39 br label %1018 1018: ; preds = %1017, %849 - %.merged293 = phi { ptr, i32 } [ %.merged294, %1017 ], [ %850, %849 ] + %.merged296 = phi { ptr, i32 } [ %.merged297, %1017 ], [ %850, %849 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %65) #39 br label %1019 1019: ; preds = %1018, %847 - %.merged292 = phi { ptr, i32 } [ %.merged293, %1018 ], [ %848, %847 ] + %.merged295 = phi { ptr, i32 } [ %.merged296, %1018 ], [ %848, %847 ] call void @_ZN5osgeo4proj4util11PropertyMapD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %64) #39 br label %.loopexit.split-lp @@ -48351,7 +48351,7 @@ _ZNSt6vectorIbSaIbEED2Ev.exit: ; preds = %_ZN7dropbox6oxygen2 br label %.loopexit.split-lp .loopexit.split-lp: ; preds = %.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp, %.loopexit.split-lp.loopexit, %1349, %1284, %1162, %1152, %1019 - %.merged291 = phi { ptr, i32 } [ %.merged292, %1019 ], [ %.pn278.pn, %1162 ], [ %.pn276, %1152 ], [ %.pn274, %1349 ], [ %.pn272, %1284 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit534, %.loopexit.split-lp.loopexit ], [ %lpad.loopexit539, %.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp ] + %.merged294 = phi { ptr, i32 } [ %.merged295, %1019 ], [ %.pn278.pn, %1162 ], [ %.pn276, %1152 ], [ %.pn274, %1349 ], [ %.pn272, %1284 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit534, %.loopexit.split-lp.loopexit ], [ %lpad.loopexit539, %.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp ] %1350 = load ptr, ptr %63, align 8 %.not.i.i.i450 = icmp eq ptr %1350, null br i1 %.not.i.i.i450, label %_ZNSt6vectorIbSaIbEED2Ev.exit454, label %1351 @@ -48373,12 +48373,12 @@ _ZNSt6vectorIbSaIbEED2Ev.exit: ; preds = %_ZN7dropbox6oxygen2 br label %_ZNSt6vectorIbSaIbEED2Ev.exit454 _ZNSt6vectorIbSaIbEED2Ev.exit454: ; preds = %1351, %.loopexit.split-lp, %787 - %.merged290 = phi { ptr, i32 } [ %788, %787 ], [ %.merged291, %.loopexit.split-lp ], [ %.merged291, %1351 ] + %.merged293 = phi { ptr, i32 } [ %788, %787 ], [ %.merged294, %.loopexit.split-lp ], [ %.merged294, %1351 ] call void @_ZN5osgeo4proj4util11PropertyMapD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %62) #39 br label %1359 1359: ; preds = %.loopexit542, %.loopexit.split-lp543, %774, %_ZNSt6vectorIbSaIbEED2Ev.exit454, %592 - %.merged289 = phi { ptr, i32 } [ %.merged290, %_ZNSt6vectorIbSaIbEED2Ev.exit454 ], [ %775, %774 ], [ %593, %592 ], [ %lpad.loopexit544, %.loopexit542 ], [ %lpad.loopexit.split-lp545, %.loopexit.split-lp543 ] + %.merged292 = phi { ptr, i32 } [ %.merged293, %_ZNSt6vectorIbSaIbEED2Ev.exit454 ], [ %775, %774 ], [ %593, %592 ], [ %lpad.loopexit544, %.loopexit542 ], [ %lpad.loopexit.split-lp545, %.loopexit.split-lp543 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %55) #39 br label %1445 @@ -48592,7 +48592,7 @@ _ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation18Operatio ret void 1445: ; preds = %1359, %580, %446, %237, %116 - %.merged = phi { ptr, i32 } [ %.merged289, %1359 ], [ %.pn263.pn.pn, %237 ], [ %117, %116 ], [ %.merged296, %446 ], [ %.merged295, %580 ] + %.merged = phi { ptr, i32 } [ %.merged292, %1359 ], [ %.pn263.pn.pn, %237 ], [ %117, %116 ], [ %.merged290, %446 ], [ %.merged289, %580 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation14ParameterValueEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #39 call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation18OperationParameterEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #39 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #39 @@ -109993,12 +109993,12 @@ _ZN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj3crs3CRSEEEC2ENS0_30i_promise_i to label %282 unwind label %2042 282: ; preds = %281, %244, %257, %233 - %.merged531 = phi { ptr, i32 } [ %.pn407.pn744, %281 ], [ %258, %257 ], [ %.pn405, %244 ], [ %.pn, %233 ] + %.merged532 = phi { ptr, i32 } [ %.pn407.pn744, %281 ], [ %258, %257 ], [ %.pn405, %244 ], [ %.pn, %233 ] call void @_ZNSt10shared_ptrIN5osgeo4proj3crs3CRSEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %10) #39 br label %283 283: ; preds = %282, %227 - %.merged530 = phi { ptr, i32 } [ %.merged531, %282 ], [ %228, %227 ] + %.merged531 = phi { ptr, i32 } [ %.merged532, %282 ], [ %228, %227 ] call void @_ZN5osgeo4proj4util15BaseObjectNNPtrD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %9) #39 br label %286 @@ -110023,7 +110023,7 @@ _ZN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj3crs3CRSEEEC2ENS0_30i_promise_i br label %_ZN8nlohmann10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS_14adl_serializerES2_IhSaIhEEED2Ev.exit582 286: ; preds = %.loopexit859, %.loopexit.split-lp860, %283 - %.merged529 = phi { ptr, i32 } [ %.merged530, %283 ], [ %lpad.loopexit861, %.loopexit859 ], [ %lpad.loopexit.split-lp862, %.loopexit.split-lp860 ] + %.merged530 = phi { ptr, i32 } [ %.merged531, %283 ], [ %lpad.loopexit861, %.loopexit859 ], [ %lpad.loopexit.split-lp862, %.loopexit.split-lp860 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #39 br label %2041 @@ -110351,7 +110351,7 @@ _ZN5osgeo4proj2io10JSONParserD2Ev.exit: ; preds = %386, %404, %417, %_ br label %428 428: ; preds = %385, %426, %_ZNSt8functionIFbiN8nlohmann6detail13parse_event_tERNS0_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS0_14adl_serializerES5_IhSaIhEEEEEED2Ev.exit574 - %.merged532 = phi { ptr, i32 } [ %427, %426 ], [ %.pn410, %385 ], [ %361, %_ZNSt8functionIFbiN8nlohmann6detail13parse_event_tERNS0_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS0_14adl_serializerES5_IhSaIhEEEEEED2Ev.exit574 ] + %.merged529 = phi { ptr, i32 } [ %427, %426 ], [ %.pn410, %385 ], [ %361, %_ZNSt8functionIFbiN8nlohmann6detail13parse_event_tERNS0_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS0_14adl_serializerES5_IhSaIhEEEEEED2Ev.exit574 ] call void @_ZN8nlohmann10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS_14adl_serializerES2_IhSaIhEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %17) #39 br label %2041 @@ -114564,7 +114564,7 @@ _ZN8nlohmann10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_trai ret void 2041: ; preds = %2040, %594, %576, %545, %460, %453, %428, %286, %186 - %.merged = phi { ptr, i32 } [ %187, %186 ], [ %461, %460 ], [ %546, %545 ], [ %577, %576 ], [ %.merged533, %2040 ], [ %595, %594 ], [ %.pn412, %453 ], [ %.merged532, %428 ], [ %.merged529, %286 ] + %.merged = phi { ptr, i32 } [ %187, %186 ], [ %461, %460 ], [ %546, %545 ], [ %577, %576 ], [ %.merged533, %2040 ], [ %595, %594 ], [ %.pn412, %453 ], [ %.merged529, %428 ], [ %.merged530, %286 ] resume { ptr, i32 } %.merged 2042: ; preds = %844, %834, %385, %281, %244 @@ -121420,7 +121420,7 @@ _ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEdSt4lessIS5_ESaISt br label %.loopexit1866 .loopexit1866: ; preds = %2196, %2346, %2304, %2211 - %.merged938 = phi { ptr, i32 } [ %2212, %2211 ], [ %.pn915.pn.pn, %2346 ], [ %2305, %2304 ], [ %lpad.phi1862, %2196 ] + %.merged937 = phi { ptr, i32 } [ %2212, %2211 ], [ %.pn915.pn.pn, %2346 ], [ %2305, %2304 ], [ %lpad.phi1862, %2196 ] call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEdSt4lessIS5_ESaISt4pairIKS5_dEEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %77) #39 call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEdSt4lessIS5_ESaISt4pairIKS5_dEEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %76) #39 br label %3583 @@ -121725,7 +121725,7 @@ _ZNSt3setINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIS5_ESaIS5_ ] .loopexit.split-lp1853: ; preds = %2413, %.loopexit1852, %.loopexit.split-lp1853.loopexit.split-lp, %.loopexit.split-lp1853.loopexit - %.merged937 = phi { ptr, i32 } [ %lpad.loopexit1854, %.loopexit1852 ], [ %lpad.loopexit1856, %.loopexit.split-lp1853.loopexit ], [ %lpad.loopexit.split-lp1857, %.loopexit.split-lp1853.loopexit.split-lp ], [ %2414, %2413 ] + %.merged938 = phi { ptr, i32 } [ %lpad.loopexit1854, %.loopexit1852 ], [ %lpad.loopexit1856, %.loopexit.split-lp1853.loopexit ], [ %lpad.loopexit.split-lp1857, %.loopexit.split-lp1853.loopexit.split-lp ], [ %2414, %2413 ] call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %93) #39 call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %92) #39 call void @_ZNSt3setINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIS5_ESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %91) #39 @@ -124077,7 +124077,7 @@ _ZN5osgeo4proj2io19PROJStringFormatter7Private14appendToResultEPKc.exit1482: ; p ret ptr %3582 3583: ; preds = %3569, %3422, %3256, %.body1314, %2703, %.loopexit.split-lp, %.loopexit.split-lp1853, %.loopexit1866, %2048, %1974, %1804, %1678, %1552, %1441, %1330, %1220, %1103, %385 - %.merged = phi { ptr, i32 } [ %.pn934, %385 ], [ %.pn931.pn, %2703 ], [ %.merged936, %.loopexit.split-lp ], [ %.pn925, %.body1314 ], [ %3257, %3256 ], [ %3423, %3422 ], [ %.pn919.pn, %3569 ], [ %.merged937, %.loopexit.split-lp1853 ], [ %.merged938, %.loopexit1866 ], [ %.pn912, %2048 ], [ %.pn910, %1974 ], [ %.pn905.pn.pn.pn, %1804 ], [ %.pn900.pn.pn.pn, %1678 ], [ %.pn895.pn.pn.pn, %1552 ], [ %.pn890.pn.pn.pn, %1441 ], [ %.pn885.pn.pn.pn, %1330 ], [ %.pn882.pn, %1220 ], [ %.pn.pn.pn.pn, %1103 ] + %.merged = phi { ptr, i32 } [ %.pn934, %385 ], [ %.pn931.pn, %2703 ], [ %.merged936, %.loopexit.split-lp ], [ %.pn925, %.body1314 ], [ %3257, %3256 ], [ %3423, %3422 ], [ %.pn919.pn, %3569 ], [ %.merged938, %.loopexit.split-lp1853 ], [ %.merged937, %.loopexit1866 ], [ %.pn912, %2048 ], [ %.pn910, %1974 ], [ %.pn905.pn.pn.pn, %1804 ], [ %.pn900.pn.pn.pn, %1678 ], [ %.pn895.pn.pn.pn, %1552 ], [ %.pn890.pn.pn.pn, %1441 ], [ %.pn885.pn.pn.pn, %1330 ], [ %.pn882.pn, %1220 ], [ %.pn.pn.pn.pn, %1103 ] resume { ptr, i32 } %.merged 3584: ; preds = %_ZNSt3setINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIS5_ESaIS5_EED2Ev.exit1258, %_ZNSt3setINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIS5_ESaIS5_EED2Ev.exit1236, %_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEdSt4lessIS5_ESaISt4pairIKS5_dEEED2Ev.exit1221 diff --git a/bench/quantlib/optimized/floatfloatswap.ll b/bench/quantlib/optimized/floatfloatswap.ll index 3eeb826696f..99f6cf1f749 100644 --- a/bench/quantlib/optimized/floatfloatswap.ll +++ b/bench/quantlib/optimized/floatfloatswap.ll @@ -16489,7 +16489,7 @@ _ZN5boost10shared_ptrIN8QuantLib18FloatingRateCouponEED2Ev.exit: ; preds = %if.e br i1 %cmp151, label %for.body, label %for.cond372.preheader, !llvm.loop !201 ehcleanup368: ; preds = %lpad201, %lpad217, %ehcleanup364, %lpad225, %lpad178, %lpad163, %lpad155 - %.merged = phi { ptr, i32 } [ %125, %lpad225 ], [ %108, %lpad155 ], [ %110, %lpad178 ], [ %109, %lpad163 ], [ %.pn165.pn.pn.pn.pn.pn, %ehcleanup364 ], [ %124, %lpad217 ], [ %111, %lpad201 ] + %.merged174 = phi { ptr, i32 } [ %125, %lpad225 ], [ %108, %lpad155 ], [ %110, %lpad178 ], [ %109, %lpad163 ], [ %.pn165.pn.pn.pn.pn.pn, %ehcleanup364 ], [ %124, %lpad217 ], [ %111, %lpad201 ] call void @_ZN5boost10shared_ptrIN8QuantLib18FloatingRateCouponEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %coupon) #29 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %coupon) #29 br label %ehcleanup625 @@ -17212,7 +17212,7 @@ _ZN5boost10shared_ptrIN8QuantLib18FloatingRateCouponEED2Ev.exit1024: ; preds = % br i1 %cmp374, label %for.body376, label %cleanup, !llvm.loop !211 ehcleanup619: ; preds = %lpad430, %lpad451, %ehcleanup615, %lpad461, %lpad407, %lpad389, %lpad381 - %.merged174 = phi { ptr, i32 } [ %239, %lpad461 ], [ %222, %lpad381 ], [ %224, %lpad407 ], [ %223, %lpad389 ], [ %.pn154.pn.pn.pn.pn.pn, %ehcleanup615 ], [ %238, %lpad451 ], [ %225, %lpad430 ] + %.merged = phi { ptr, i32 } [ %239, %lpad461 ], [ %222, %lpad381 ], [ %224, %lpad407 ], [ %223, %lpad389 ], [ %.pn154.pn.pn.pn.pn.pn, %ehcleanup615 ], [ %238, %lpad451 ], [ %225, %lpad430 ] call void @_ZN5boost10shared_ptrIN8QuantLib18FloatingRateCouponEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %coupon377) #29 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %coupon377) #29 br label %ehcleanup625 @@ -17221,7 +17221,7 @@ cleanup: ; preds = %_ZN5boost10shared_p ret void ehcleanup625: ; preds = %ehcleanup619, %ehcleanup368, %ehcleanup29, %ehcleanup - %lpad.val630.merged = phi { ptr, i32 } [ %.merged, %ehcleanup368 ], [ %.merged174, %ehcleanup619 ], [ %.pn142, %ehcleanup29 ], [ %.pn, %ehcleanup ] + %lpad.val630.merged = phi { ptr, i32 } [ %.merged174, %ehcleanup368 ], [ %.merged, %ehcleanup619 ], [ %.pn142, %ehcleanup29 ], [ %.pn, %ehcleanup ] resume { ptr, i32 } %lpad.val630.merged unreachable: ; preds = %invoke.cont545, %invoke.cont301 diff --git a/bench/redis/optimized/server.ll b/bench/redis/optimized/server.ll index 6e6071372fd..2f5ad557027 100644 --- a/bench/redis/optimized/server.ll +++ b/bench/redis/optimized/server.ll @@ -2939,22 +2939,20 @@ if.end: ; preds = %if.then.i, %removeC if.else.i: ; preds = %if.end %15 = tail call range(i64 0, 65) i64 @llvm.ctlz.i64(i64 %call.i18, i1 false) %cast.i = trunc nuw nsw i64 %15 to i32 - %sub.i21 = sub nuw nsw i32 64, %cast.i - %spec.store.select.i = tail call i32 @llvm.umax.i32(i32 %sub.i21, i32 15) - %16 = add nsw i32 %spec.store.select.i, -15 + %16 = tail call i32 @llvm.usub.sat.i32(i32 49, i32 %cast.i) %17 = zext nneg i32 %16 to i64 br label %getMemUsageBucket.exit getMemUsageBucket.exit: ; preds = %if.end, %if.else.i %bucket_idx.0.i = phi i64 [ %17, %if.else.i ], [ 18, %if.end ] %18 = load ptr, ptr getelementptr inbounds (i8, ptr @server, i64 1496), align 8 - %arrayidx.i22 = getelementptr inbounds %struct.clientMemUsageBucket, ptr %18, i64 %bucket_idx.0.i - %mem_usage_sum = getelementptr inbounds i8, ptr %arrayidx.i22, i64 8 + %arrayidx.i21 = getelementptr inbounds %struct.clientMemUsageBucket, ptr %18, i64 %bucket_idx.0.i + %mem_usage_sum = getelementptr inbounds i8, ptr %arrayidx.i21, i64 8 %19 = load i64, ptr %mem_usage_sum, align 8 %add = add i64 %19, %call.i18 store i64 %add, ptr %mem_usage_sum, align 8 %20 = load ptr, ptr %mem_usage_bucket.i, align 8 - %cmp5.not = icmp eq ptr %arrayidx.i22, %20 + %cmp5.not = icmp eq ptr %arrayidx.i21, %20 br i1 %cmp5.not, label %return, label %if.then7 if.then7: ; preds = %getMemUsageBucket.exit @@ -2969,10 +2967,10 @@ if.then10: ; preds = %if.then7 br label %if.end12 if.end12: ; preds = %if.then10, %if.then7 - store ptr %arrayidx.i22, ptr %mem_usage_bucket.i, align 8 - %23 = load ptr, ptr %arrayidx.i22, align 8 + store ptr %arrayidx.i21, ptr %mem_usage_bucket.i, align 8 + %23 = load ptr, ptr %arrayidx.i21, align 8 %call15 = tail call ptr @listAddNodeTail(ptr noundef %23, ptr noundef nonnull %c) #40 - %24 = load ptr, ptr %arrayidx.i22, align 8 + %24 = load ptr, ptr %arrayidx.i21, align 8 %tail = getelementptr inbounds i8, ptr %24, i64 8 %25 = load ptr, ptr %tail, align 8 %mem_usage_bucket_node17 = getelementptr inbounds i8, ptr %c, i64 680 @@ -18755,6 +18753,9 @@ declare i64 @llvm.umin.i64(i64, i64) #37 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i32 @llvm.umax.i32(i32, i32) #37 +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare i32 @llvm.usub.sat.i32(i32, i32) #37 + ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i32 @llvm.smin.i32(i32, i32) #37 diff --git a/bench/slurm/optimized/slurm_protocol_api.ll b/bench/slurm/optimized/slurm_protocol_api.ll index 067f83c35d4..e228779884c 100644 --- a/bench/slurm/optimized/slurm_protocol_api.ll +++ b/bench/slurm/optimized/slurm_protocol_api.ll @@ -5405,243 +5405,242 @@ define ptr @slurm_send_addr_recv_msgs(ptr noundef %0, ptr noundef %1, i32 nounde 8: ; preds = %3 %9 = load i16, ptr @slurm_send_addr_recv_msgs.conn_timeout, align 2 %10 = icmp eq i16 %9, -2 - br i1 %10, label %11, label %17 + br i1 %10, label %11, label %16 11: ; preds = %8 %12 = load i16, ptr getelementptr inbounds (i8, ptr @slurm_conf, i64 720), align 8 %13 = tail call i16 @llvm.umin.i16(i16 %12, i16 10) store i16 %13, ptr @slurm_send_addr_recv_msgs.conn_timeout, align 2 %14 = load i16, ptr getelementptr inbounds (i8, ptr @slurm_conf, i64 1440), align 8 - %15 = tail call i16 @llvm.umax.i16(i16 %14, i16 1) - %16 = add i16 %15, -1 - store i16 %16, ptr @slurm_send_addr_recv_msgs.tcp_timeout, align 2 - br label %17 + %15 = tail call i16 @llvm.usub.sat.i16(i16 %14, i16 1) + store i16 %15, ptr @slurm_send_addr_recv_msgs.tcp_timeout, align 2 + br label %16 -17: ; preds = %8, %11 - %18 = tail call i32 @pthread_mutex_unlock(ptr noundef nonnull @slurm_send_addr_recv_msgs.conn_lock) #21 - %.not37 = icmp eq i32 %18, 0 - br i1 %.not37, label %.preheader, label %19 +16: ; preds = %8, %11 + %17 = tail call i32 @pthread_mutex_unlock(ptr noundef nonnull @slurm_send_addr_recv_msgs.conn_lock) #21 + %.not37 = icmp eq i32 %17, 0 + br i1 %.not37, label %.preheader, label %18 -19: ; preds = %17 - %20 = tail call ptr @__errno_location() #23 - store i32 %18, ptr %20, align 4 +18: ; preds = %16 + %19 = tail call ptr @__errno_location() #23 + store i32 %17, ptr %19, align 4 tail call void (ptr, ...) @fatal(ptr noundef nonnull @.str.64, ptr noundef nonnull @.str, i32 noundef 2670, ptr noundef nonnull @__func__.slurm_send_addr_recv_msgs) #24 unreachable -.preheader: ; preds = %17, %52 - %.02850 = phi i32 [ %53, %52 ], [ 0, %17 ] - %21 = tail call i32 @slurm_open_stream(ptr noundef %0, i1 noundef zeroext false) #21 - %22 = icmp sgt i32 %21, -1 - br i1 %22, label %64, label %23 +.preheader: ; preds = %16, %51 + %.02850 = phi i32 [ %52, %51 ], [ 0, %16 ] + %20 = tail call i32 @slurm_open_stream(ptr noundef %0, i1 noundef zeroext false) #21 + %21 = icmp sgt i32 %20, -1 + br i1 %21, label %63, label %22 -23: ; preds = %.preheader - %24 = tail call ptr @__errno_location() #23 - %25 = load i32, ptr %24, align 4 - %26 = and i32 %25, -2 - %switch = icmp eq i32 %26, 110 - br i1 %switch, label %27, label %56 +22: ; preds = %.preheader + %23 = tail call ptr @__errno_location() #23 + %24 = load i32, ptr %23, align 4 + %25 = and i32 %24, -2 + %switch = icmp eq i32 %25, 110 + br i1 %switch, label %26, label %55 -27: ; preds = %23 - %28 = icmp eq i32 %25, 110 - %29 = icmp eq i32 %.02850, 0 - br i1 %28, label %30, label %42 +26: ; preds = %22 + %27 = icmp eq i32 %24, 110 + %28 = icmp eq i32 %.02850, 0 + br i1 %27, label %29, label %41 -30: ; preds = %27 - br i1 %29, label %31, label %38 +29: ; preds = %26 + br i1 %28, label %30, label %37 -31: ; preds = %30 - %32 = load i64, ptr getelementptr inbounds (i8, ptr @slurm_conf, i64 288), align 8 - %33 = and i64 %32, 1024 - %.not42 = icmp eq i64 %33, 0 - br i1 %.not42, label %38, label %34 +30: ; preds = %29 + %31 = load i64, ptr getelementptr inbounds (i8, ptr @slurm_conf, i64 288), align 8 + %32 = and i64 %31, 1024 + %.not42 = icmp eq i64 %32, 0 + br i1 %.not42, label %37, label %33 -34: ; preds = %31 - %35 = tail call i32 @get_log_level() #21 - %36 = icmp sgt i32 %35, 3 - br i1 %36, label %37, label %38 +33: ; preds = %30 + %34 = tail call i32 @get_log_level() #21 + %35 = icmp sgt i32 %34, 3 + br i1 %35, label %36, label %37 -37: ; preds = %34 +36: ; preds = %33 tail call void (i32, ptr, ...) @log_var(i32 noundef 4, ptr noundef nonnull @.str.65, ptr noundef %0) #21 - br label %38 + br label %37 -38: ; preds = %37, %34, %31, %30 - %39 = load i16, ptr @slurm_send_addr_recv_msgs.tcp_timeout, align 2 - %40 = zext i16 %39 to i32 - %41 = add nsw i32 %.02850, %40 - br label %52 +37: ; preds = %36, %33, %30, %29 + %38 = load i16, ptr @slurm_send_addr_recv_msgs.tcp_timeout, align 2 + %39 = zext i16 %38 to i32 + %40 = add nsw i32 %.02850, %39 + br label %51 -42: ; preds = %27 - br i1 %29, label %43, label %50 +41: ; preds = %26 + br i1 %28, label %42, label %49 -43: ; preds = %42 - %44 = load i64, ptr getelementptr inbounds (i8, ptr @slurm_conf, i64 288), align 8 - %45 = and i64 %44, 1024 - %.not41 = icmp eq i64 %45, 0 - br i1 %.not41, label %50, label %46 +42: ; preds = %41 + %43 = load i64, ptr getelementptr inbounds (i8, ptr @slurm_conf, i64 288), align 8 + %44 = and i64 %43, 1024 + %.not41 = icmp eq i64 %44, 0 + br i1 %.not41, label %49, label %45 -46: ; preds = %43 - %47 = tail call i32 @get_log_level() #21 - %48 = icmp sgt i32 %47, 3 - br i1 %48, label %49, label %50 +45: ; preds = %42 + %46 = tail call i32 @get_log_level() #21 + %47 = icmp sgt i32 %46, 3 + br i1 %47, label %48, label %49 -49: ; preds = %46 +48: ; preds = %45 tail call void (i32, ptr, ...) @log_var(i32 noundef 4, ptr noundef nonnull @.str.66, ptr noundef %0) #21 - br label %50 - -50: ; preds = %49, %46, %43, %42 - %51 = tail call i32 @sleep(i32 noundef 1) #21 - br label %52 - -52: ; preds = %38, %50 - %.129 = phi i32 [ %41, %38 ], [ %.02850, %50 ] - %53 = add nsw i32 %.129, 1 - %54 = load i16, ptr @slurm_send_addr_recv_msgs.conn_timeout, align 2 - %55 = zext i16 %54 to i32 - %.not38.not = icmp slt i32 %.129, %55 - br i1 %.not38.not, label %.preheader, label %56, !llvm.loop !20 - -56: ; preds = %52, %23 - %57 = load i64, ptr getelementptr inbounds (i8, ptr @slurm_conf, i64 288), align 8 - %58 = and i64 %57, 1024 - %.not46 = icmp eq i64 %58, 0 - br i1 %.not46, label %63, label %59 - -59: ; preds = %56 - %60 = tail call i32 @get_log_level() #21 - %61 = icmp sgt i32 %60, 3 - br i1 %61, label %62, label %63 + br label %49 + +49: ; preds = %48, %45, %42, %41 + %50 = tail call i32 @sleep(i32 noundef 1) #21 + br label %51 + +51: ; preds = %37, %49 + %.129 = phi i32 [ %40, %37 ], [ %.02850, %49 ] + %52 = add nsw i32 %.129, 1 + %53 = load i16, ptr @slurm_send_addr_recv_msgs.conn_timeout, align 2 + %54 = zext i16 %53 to i32 + %.not38.not = icmp slt i32 %.129, %54 + br i1 %.not38.not, label %.preheader, label %55, !llvm.loop !20 + +55: ; preds = %51, %22 + %56 = load i64, ptr getelementptr inbounds (i8, ptr @slurm_conf, i64 288), align 8 + %57 = and i64 %56, 1024 + %.not46 = icmp eq i64 %57, 0 + br i1 %.not46, label %62, label %58 + +58: ; preds = %55 + %59 = tail call i32 @get_log_level() #21 + %60 = icmp sgt i32 %59, 3 + br i1 %60, label %61, label %62 -62: ; preds = %59 +61: ; preds = %58 tail call void (i32, ptr, ...) @log_var(i32 noundef 4, ptr noundef nonnull @.str.67, ptr noundef %0) #21 - br label %63 + br label %62 -63: ; preds = %56, %59, %62 +62: ; preds = %55, %58, %61 call void @mark_as_failed_forward(ptr noundef nonnull %4, ptr noundef %1, i32 noundef 1001) #21 - store i32 1001, ptr %24, align 4 - br label %119 + store i32 1001, ptr %23, align 4 + br label %118 -64: ; preds = %.preheader - %65 = getelementptr inbounds i8, ptr %0, i64 408 +63: ; preds = %.preheader + %64 = getelementptr inbounds i8, ptr %0, i64 408 + store ptr null, ptr %64, align 8 + %65 = getelementptr inbounds i8, ptr %0, i64 272 store ptr null, ptr %65, align 8 - %66 = getelementptr inbounds i8, ptr %0, i64 272 - store ptr null, ptr %66, align 8 - %67 = getelementptr inbounds i8, ptr %0, i64 264 - %68 = load i32, ptr %67, align 8 - %.not.i = icmp eq i32 %68, 0 - br i1 %.not.i, label %69, label %73 - -69: ; preds = %64 + %66 = getelementptr inbounds i8, ptr %0, i64 264 + %67 = load i32, ptr %66, align 8 + %.not.i = icmp eq i32 %67, 0 + br i1 %.not.i, label %68, label %72 + +68: ; preds = %63 %.not27.i = icmp eq i32 %2, 0 - %70 = load i16, ptr getelementptr inbounds (i8, ptr @slurm_conf, i64 720), align 8 - %71 = zext i16 %70 to i32 - %72 = mul nuw nsw i32 %71, 1000 - %.124.i = select i1 %.not27.i, i32 %72, i32 %2 - store i32 %.124.i, ptr %67, align 8 - br label %73 + %69 = load i16, ptr getelementptr inbounds (i8, ptr @slurm_conf, i64 720), align 8 + %70 = zext i16 %69 to i32 + %71 = mul nuw nsw i32 %70, 1000 + %.124.i = select i1 %.not27.i, i32 %71, i32 %2 + store i32 %.124.i, ptr %66, align 8 + br label %72 -73: ; preds = %69, %64 - %.023.i = phi i32 [ %2, %64 ], [ %.124.i, %69 ] - %74 = tail call i32 @slurm_send_node_msg(i32 noundef range(i32 0, -2147483648) %21, ptr noundef nonnull %0) - %75 = icmp sgt i32 %74, -1 - br i1 %75, label %77, label %_send_and_recv_msgs.exit.thread +72: ; preds = %68, %63 + %.023.i = phi i32 [ %2, %63 ], [ %.124.i, %68 ] + %73 = tail call i32 @slurm_send_node_msg(i32 noundef range(i32 0, -2147483648) %20, ptr noundef nonnull %0) + %74 = icmp sgt i32 %73, -1 + br i1 %74, label %76, label %_send_and_recv_msgs.exit.thread -_send_and_recv_msgs.exit.thread: ; preds = %73 - %76 = tail call i32 @close(i32 noundef range(i32 0, -2147483648) %21) #21 +_send_and_recv_msgs.exit.thread: ; preds = %72 + %75 = tail call i32 @close(i32 noundef range(i32 0, -2147483648) %20) #21 store ptr null, ptr %4, align 8 - br label %106 + br label %105 -77: ; preds = %73 - %78 = getelementptr inbounds i8, ptr %0, i64 248 - %79 = load i16, ptr %78, align 8 - %.not28.i = icmp eq i16 %79, 0 - br i1 %.not28.i, label %_send_and_recv_msgs.exit, label %80 +76: ; preds = %72 + %77 = getelementptr inbounds i8, ptr %0, i64 248 + %78 = load i16, ptr %77, align 8 + %.not28.i = icmp eq i16 %78, 0 + br i1 %.not28.i, label %_send_and_recv_msgs.exit, label %79 -80: ; preds = %77 - %81 = load i32, ptr @message_timeout, align 4 - %82 = icmp slt i32 %81, 0 - br i1 %82, label %83, label %87 +79: ; preds = %76 + %80 = load i32, ptr @message_timeout, align 4 + %81 = icmp slt i32 %80, 0 + br i1 %81, label %82, label %86 -83: ; preds = %80 - %84 = load i16, ptr getelementptr inbounds (i8, ptr @slurm_conf, i64 720), align 8 - %85 = zext i16 %84 to i32 - %86 = mul nuw nsw i32 %85, 1000 - store i32 %86, ptr @message_timeout, align 4 - br label %87 - -87: ; preds = %83, %80 - %88 = phi i32 [ %86, %83 ], [ %81, %80 ] - %89 = zext i16 %79 to i32 - %90 = add nuw nsw i32 %89, 1 - %91 = getelementptr inbounds i8, ptr %0, i64 268 - %92 = load i16, ptr %91, align 4 - %.not29.i = icmp eq i16 %92, 0 - br i1 %.not29.i, label %93, label %.thread.i - -93: ; preds = %87 - %94 = load i16, ptr getelementptr inbounds (i8, ptr @slurm_conf, i64 1472), align 8 - store i16 %94, ptr %91, align 4 - %.not30.i = icmp eq i16 %94, 0 - br i1 %.not30.i, label %98, label %.thread.i - -.thread.i: ; preds = %93, %87 - %95 = phi i16 [ %94, %93 ], [ %92, %87 ] - %96 = zext i16 %95 to i32 - %97 = udiv i32 %90, %96 - br label %98 +82: ; preds = %79 + %83 = load i16, ptr getelementptr inbounds (i8, ptr @slurm_conf, i64 720), align 8 + %84 = zext i16 %83 to i32 + %85 = mul nuw nsw i32 %84, 1000 + store i32 %85, ptr @message_timeout, align 4 + br label %86 -98: ; preds = %.thread.i, %93 - %.1.i = phi i32 [ %97, %.thread.i ], [ %90, %93 ] - %99 = mul nsw i32 %.1.i, %88 - %100 = add nuw nsw i32 %.1.i, 1 - %101 = load i32, ptr %67, align 8 - %102 = mul i32 %101, %100 - %103 = add i32 %102, %99 - br label %_send_and_recv_msgs.exit +86: ; preds = %82, %79 + %87 = phi i32 [ %85, %82 ], [ %80, %79 ] + %88 = zext i16 %78 to i32 + %89 = add nuw nsw i32 %88, 1 + %90 = getelementptr inbounds i8, ptr %0, i64 268 + %91 = load i16, ptr %90, align 4 + %.not29.i = icmp eq i16 %91, 0 + br i1 %.not29.i, label %92, label %.thread.i -_send_and_recv_msgs.exit: ; preds = %77, %98 - %.2.i = phi i32 [ %103, %98 ], [ %.023.i, %77 ] - %.0.i = phi i32 [ %100, %98 ], [ 0, %77 ] - %104 = tail call ptr @slurm_receive_msgs(i32 noundef range(i32 0, -2147483648) %21, i32 noundef %.0.i, i32 noundef %.2.i) - %105 = tail call i32 @close(i32 noundef range(i32 0, -2147483648) %21) #21 - store ptr %104, ptr %4, align 8 - %.not43 = icmp eq ptr %104, null - br i1 %.not43, label %106, label %109 - -106: ; preds = %_send_and_recv_msgs.exit.thread, %_send_and_recv_msgs.exit - %107 = tail call ptr @__errno_location() #23 - %108 = load i32, ptr %107, align 4 - call void @mark_as_failed_forward(ptr noundef nonnull %4, ptr noundef %1, i32 noundef %108) #21 - store i32 1001, ptr %107, align 4 - br label %119 - -109: ; preds = %_send_and_recv_msgs.exit - %110 = tail call ptr @list_iterator_create(ptr noundef nonnull %104) #21 - %111 = tail call ptr @list_next(ptr noundef %110) #21 - %.not4451 = icmp eq ptr %111, null - br i1 %.not4451, label %._crit_edge, label %.lr.ph +92: ; preds = %86 + %93 = load i16, ptr getelementptr inbounds (i8, ptr @slurm_conf, i64 1472), align 8 + store i16 %93, ptr %90, align 4 + %.not30.i = icmp eq i16 %93, 0 + br i1 %.not30.i, label %97, label %.thread.i + +.thread.i: ; preds = %92, %86 + %94 = phi i16 [ %93, %92 ], [ %91, %86 ] + %95 = zext i16 %94 to i32 + %96 = udiv i32 %89, %95 + br label %97 -.lr.ph: ; preds = %109, %117 - %112 = phi ptr [ %118, %117 ], [ %111, %109 ] - %113 = getelementptr inbounds i8, ptr %112, i64 8 - %114 = load ptr, ptr %113, align 8 - %.not45 = icmp eq ptr %114, null - br i1 %.not45, label %115, label %117 +97: ; preds = %.thread.i, %92 + %.1.i = phi i32 [ %96, %.thread.i ], [ %89, %92 ] + %98 = mul nsw i32 %.1.i, %87 + %99 = add nuw nsw i32 %.1.i, 1 + %100 = load i32, ptr %66, align 8 + %101 = mul i32 %100, %99 + %102 = add i32 %101, %98 + br label %_send_and_recv_msgs.exit -115: ; preds = %.lr.ph - %116 = tail call ptr @xstrdup(ptr noundef %1) #21 - store ptr %116, ptr %113, align 8 - br label %117 +_send_and_recv_msgs.exit: ; preds = %76, %97 + %.2.i = phi i32 [ %102, %97 ], [ %.023.i, %76 ] + %.0.i = phi i32 [ %99, %97 ], [ 0, %76 ] + %103 = tail call ptr @slurm_receive_msgs(i32 noundef range(i32 0, -2147483648) %20, i32 noundef %.0.i, i32 noundef %.2.i) + %104 = tail call i32 @close(i32 noundef range(i32 0, -2147483648) %20) #21 + store ptr %103, ptr %4, align 8 + %.not43 = icmp eq ptr %103, null + br i1 %.not43, label %105, label %108 + +105: ; preds = %_send_and_recv_msgs.exit.thread, %_send_and_recv_msgs.exit + %106 = tail call ptr @__errno_location() #23 + %107 = load i32, ptr %106, align 4 + call void @mark_as_failed_forward(ptr noundef nonnull %4, ptr noundef %1, i32 noundef %107) #21 + store i32 1001, ptr %106, align 4 + br label %118 + +108: ; preds = %_send_and_recv_msgs.exit + %109 = tail call ptr @list_iterator_create(ptr noundef nonnull %103) #21 + %110 = tail call ptr @list_next(ptr noundef %109) #21 + %.not4451 = icmp eq ptr %110, null + br i1 %.not4451, label %._crit_edge, label %.lr.ph -117: ; preds = %115, %.lr.ph - %118 = tail call ptr @list_next(ptr noundef %110) #21 - %.not44 = icmp eq ptr %118, null +.lr.ph: ; preds = %108, %116 + %111 = phi ptr [ %117, %116 ], [ %110, %108 ] + %112 = getelementptr inbounds i8, ptr %111, i64 8 + %113 = load ptr, ptr %112, align 8 + %.not45 = icmp eq ptr %113, null + br i1 %.not45, label %114, label %116 + +114: ; preds = %.lr.ph + %115 = tail call ptr @xstrdup(ptr noundef %1) #21 + store ptr %115, ptr %112, align 8 + br label %116 + +116: ; preds = %114, %.lr.ph + %117 = tail call ptr @list_next(ptr noundef %109) #21 + %.not44 = icmp eq ptr %117, null br i1 %.not44, label %._crit_edge, label %.lr.ph, !llvm.loop !21 -._crit_edge: ; preds = %117, %109 - tail call void @list_iterator_destroy(ptr noundef %110) #21 - br label %119 +._crit_edge: ; preds = %116, %108 + tail call void @list_iterator_destroy(ptr noundef %109) #21 + br label %118 -119: ; preds = %._crit_edge, %106, %63 +118: ; preds = %._crit_edge, %105, %62 %.0 = load ptr, ptr %4, align 8 ret ptr %.0 } @@ -6196,7 +6195,7 @@ declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #20 declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #20 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i16 @llvm.umax.i16(i16, i16) #18 +declare i16 @llvm.usub.sat.i16(i16, i16) #18 attributes #0 = { nofree nounwind uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { nofree nounwind memory(read) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } diff --git a/bench/wasmedge/optimized/refInstr.cpp.ll b/bench/wasmedge/optimized/refInstr.cpp.ll index 5d8e3b87499..3823d24a345 100644 --- a/bench/wasmedge/optimized/refInstr.cpp.ll +++ b/bench/wasmedge/optimized/refInstr.cpp.ll @@ -3810,8 +3810,7 @@ _ZNSt6vectorIN8WasmEdge7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv1 %67 = sub i64 %65, %66 %68 = lshr exact i64 %67, 4 %69 = trunc i64 %68 to i32 - %.sroa.speculated.i = call i32 @llvm.umax.i32(i32 %69, i32 1) - %70 = add i32 %.sroa.speculated.i, -1 + %70 = call noundef i32 @llvm.usub.sat.i32(i32 %69, i32 1) store i64 %62, ptr %16, align 8 %71 = getelementptr inbounds i8, ptr %16, i64 8 store i32 1, ptr %71, align 8 @@ -4058,8 +4057,7 @@ _ZNSt6vectorIN8WasmEdge7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv1 %67 = sub i64 %65, %66 %68 = lshr exact i64 %67, 4 %69 = trunc i64 %68 to i32 - %.sroa.speculated.i = call i32 @llvm.umax.i32(i32 %69, i32 1) - %70 = add i32 %.sroa.speculated.i, -1 + %70 = call noundef i32 @llvm.usub.sat.i32(i32 %69, i32 1) store i64 %62, ptr %16, align 8 %71 = getelementptr inbounds i8, ptr %16, i64 8 store i32 1, ptr %71, align 8 @@ -4428,8 +4426,7 @@ _ZNSt6vectorIN8WasmEdge7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv1 %71 = sub i64 %69, %70 %72 = lshr exact i64 %71, 4 %73 = trunc i64 %72 to i32 - %.sroa.speculated.i = call i32 @llvm.umax.i32(i32 %73, i32 1) - %74 = add i32 %.sroa.speculated.i, -1 + %74 = call noundef i32 @llvm.usub.sat.i32(i32 %73, i32 1) store i64 %51, ptr %17, align 8 %75 = getelementptr inbounds i8, ptr %17, i64 8 store i32 %2, ptr %75, align 8 @@ -4699,8 +4696,7 @@ _ZNSt6vectorIN8WasmEdge7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv1 %83 = sub i64 %81, %82 %84 = lshr exact i64 %83, 4 %85 = trunc i64 %84 to i32 - %.sroa.speculated.i = call i32 @llvm.umax.i32(i32 %85, i32 1) - %86 = add i32 %.sroa.speculated.i, -1 + %86 = call noundef i32 @llvm.usub.sat.i32(i32 %85, i32 1) store i64 %63, ptr %22, align 8 %87 = getelementptr inbounds i8, ptr %22, i64 8 store i32 %2, ptr %87, align 8 @@ -4807,23 +4803,22 @@ _ZNSt6vectorIN8WasmEdge7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv1 %135 = sub i64 %133, %134 %136 = lshr exact i64 %135, 4 %137 = trunc i64 %136 to i32 - %.sroa.speculated.i84 = call i32 @llvm.umax.i32(i32 %137, i32 1) - %138 = add i32 %.sroa.speculated.i84, -1 + %138 = call noundef i32 @llvm.usub.sat.i32(i32 %137, i32 1) store i64 %116, ptr %25, align 8 %139 = getelementptr inbounds i8, ptr %25, i64 8 store i32 %2, ptr %139, align 8 %140 = getelementptr inbounds i8, ptr %25, i64 12 store i32 %138, ptr %140, align 4 %141 = invoke noundef ptr @_ZN6spdlog18default_logger_rawEv() - to label %.noexc85 unwind label %217 + to label %.noexc84 unwind label %217 -.noexc85: ; preds = %130 +.noexc84: ; preds = %130 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %12) call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %12, i8 0, i64 24, i1 false) invoke void @_ZN6spdlog6logger4log_IJRKN8WasmEdge7ErrInfo12InfoBoundaryEEEEvNS_10source_locENS_5level10level_enumEN3fmt2v817basic_string_viewIcEEDpOT_(ptr noundef nonnull align 8 dereferenceable(208) %141, ptr noundef nonnull byval(%"struct.spdlog::source_loc") align 8 %12, i32 noundef 4, ptr nonnull @.str.2, i64 2, ptr noundef nonnull align 8 dereferenceable(16) %25) - to label %_ZN8WasmEdge7ErrInfo15InfoInstructionC2ENS_6OpCodeEmRKSt6vectorINS_7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS_10RefVariantENS_10StrVariantEEEESaISH_EERKS3_INS_7ValTypeESaISM_EEb.exit104 unwind label %217 + to label %_ZN8WasmEdge7ErrInfo15InfoInstructionC2ENS_6OpCodeEmRKSt6vectorINS_7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS_10RefVariantENS_10StrVariantEEEESaISH_EERKS3_INS_7ValTypeESaISM_EEb.exit103 unwind label %217 -_ZN8WasmEdge7ErrInfo15InfoInstructionC2ENS_6OpCodeEmRKSt6vectorINS_7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS_10RefVariantENS_10StrVariantEEEESaISH_EERKS3_INS_7ValTypeESaISM_EEb.exit104: ; preds = %.noexc85 +_ZN8WasmEdge7ErrInfo15InfoInstructionC2ENS_6OpCodeEmRKSt6vectorINS_7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS_10RefVariantENS_10StrVariantEEEESaISH_EERKS3_INS_7ValTypeESaISM_EEb.exit103: ; preds = %.noexc84 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %12) %142 = getelementptr inbounds i8, ptr %9, i64 20 %143 = load i32, ptr %142, align 4 @@ -4839,19 +4834,19 @@ _ZN8WasmEdge7ErrInfo15InfoInstructionC2ENS_6OpCodeEmRKSt6vectorINS_7VariantIJjim %151 = getelementptr inbounds i8, ptr %26, i64 56 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(49) %148, i8 0, i64 49, i1 false) %152 = invoke noundef ptr @_ZN6spdlog18default_logger_rawEv() - to label %.noexc105 unwind label %217 + to label %.noexc104 unwind label %217 -.noexc105: ; preds = %_ZN8WasmEdge7ErrInfo15InfoInstructionC2ENS_6OpCodeEmRKSt6vectorINS_7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS_10RefVariantENS_10StrVariantEEEESaISH_EERKS3_INS_7ValTypeESaISM_EEb.exit104 +.noexc104: ; preds = %_ZN8WasmEdge7ErrInfo15InfoInstructionC2ENS_6OpCodeEmRKSt6vectorINS_7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS_10RefVariantENS_10StrVariantEEEESaISH_EERKS3_INS_7ValTypeESaISM_EEb.exit103 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %11) call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %11, i8 0, i64 24, i1 false) invoke void @_ZN6spdlog6logger4log_IJRKN8WasmEdge7ErrInfo15InfoInstructionEEEEvNS_10source_locENS_5level10level_enumEN3fmt2v817basic_string_viewIcEEDpOT_(ptr noundef nonnull align 8 dereferenceable(208) %152, ptr noundef nonnull byval(%"struct.spdlog::source_loc") align 8 %11, i32 noundef 4, ptr nonnull @.str.2, i64 2, ptr noundef nonnull align 8 dereferenceable(65) %26) to label %153 unwind label %217 -153: ; preds = %.noexc105 +153: ; preds = %.noexc104 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %11) %154 = load ptr, ptr %150, align 8 - %.not.i.i.i.i108 = icmp eq ptr %154, null - br i1 %.not.i.i.i.i108, label %_ZNSt6vectorIN8WasmEdge7ValTypeESaIS1_EED2Ev.exit.i109, label %155 + %.not.i.i.i.i107 = icmp eq ptr %154, null + br i1 %.not.i.i.i.i107, label %_ZNSt6vectorIN8WasmEdge7ValTypeESaIS1_EED2Ev.exit.i108, label %155 155: ; preds = %153 %156 = load ptr, ptr %151, align 8 @@ -4859,22 +4854,22 @@ _ZN8WasmEdge7ErrInfo15InfoInstructionC2ENS_6OpCodeEmRKSt6vectorINS_7VariantIJjim %158 = ptrtoint ptr %154 to i64 %159 = sub i64 %157, %158 call void @_ZdlPvm(ptr noundef nonnull %154, i64 noundef %159) #21 - br label %_ZNSt6vectorIN8WasmEdge7ValTypeESaIS1_EED2Ev.exit.i109 + br label %_ZNSt6vectorIN8WasmEdge7ValTypeESaIS1_EED2Ev.exit.i108 -_ZNSt6vectorIN8WasmEdge7ValTypeESaIS1_EED2Ev.exit.i109: ; preds = %155, %153 +_ZNSt6vectorIN8WasmEdge7ValTypeESaIS1_EED2Ev.exit.i108: ; preds = %155, %153 %160 = load ptr, ptr %148, align 8 - %.not.i.i.i1.i110 = icmp eq ptr %160, null - br i1 %.not.i.i.i1.i110, label %_ZNSt6vectorIN8WasmEdge7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS0_10RefVariantENS0_10StrVariantEEEESaISE_EED2Ev.exit115, label %161 + %.not.i.i.i1.i109 = icmp eq ptr %160, null + br i1 %.not.i.i.i1.i109, label %_ZNSt6vectorIN8WasmEdge7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS0_10RefVariantENS0_10StrVariantEEEESaISE_EED2Ev.exit114, label %161 -161: ; preds = %_ZNSt6vectorIN8WasmEdge7ValTypeESaIS1_EED2Ev.exit.i109 +161: ; preds = %_ZNSt6vectorIN8WasmEdge7ValTypeESaIS1_EED2Ev.exit.i108 %162 = load ptr, ptr %149, align 8 %163 = ptrtoint ptr %162 to i64 %164 = ptrtoint ptr %160 to i64 %165 = sub i64 %163, %164 call void @_ZdlPvm(ptr noundef nonnull %160, i64 noundef %165) #21 - br label %_ZNSt6vectorIN8WasmEdge7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS0_10RefVariantENS0_10StrVariantEEEESaISE_EED2Ev.exit115 + br label %_ZNSt6vectorIN8WasmEdge7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS0_10RefVariantENS0_10StrVariantEEEESaISE_EED2Ev.exit114 -_ZNSt6vectorIN8WasmEdge7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS0_10RefVariantENS0_10StrVariantEEEESaISE_EED2Ev.exit115: ; preds = %_ZNSt6vectorIN8WasmEdge7ValTypeESaIS1_EED2Ev.exit.i109, %161 +_ZNSt6vectorIN8WasmEdge7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS0_10RefVariantENS0_10StrVariantEEEESaISE_EED2Ev.exit114: ; preds = %_ZNSt6vectorIN8WasmEdge7ValTypeESaIS1_EED2Ev.exit.i108, %161 store i8 0, ptr %0, align 4 %166 = getelementptr inbounds i8, ptr %0, i64 4 store i32 1033, ptr %166, align 4 @@ -4966,9 +4961,9 @@ _ZN8WasmEdge8Executor12_GLOBAL__N_19unpackValERKNS_7ValTypeERKNS_7VariantIJjimlf 194: ; preds = %167 %.not2.i = icmp eq i32 %2, 0 - br i1 %.not2.i, label %"_ZSt9transformIPN8WasmEdge7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS0_10RefVariantENS0_10StrVariantEEEESF_ZNKS0_8Executor8Executor14runArrayCopyOpEjjRKSC_jSJ_RKNS0_3AST13CompositeTypeESN_RKNSK_11InstructionEE3$_0ET0_T_ST_SS_T1_.exit", label %.lr.ph.i119 + br i1 %.not2.i, label %"_ZSt9transformIPN8WasmEdge7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS0_10RefVariantENS0_10StrVariantEEEESF_ZNKS0_8Executor8Executor14runArrayCopyOpEjjRKSC_jSJ_RKNS0_3AST13CompositeTypeESN_RKNSK_11InstructionEE3$_0ET0_T_ST_SS_T1_.exit", label %.lr.ph.i118 -.lr.ph.i119: ; preds = %194 +.lr.ph.i118: ; preds = %194 %195 = getelementptr inbounds %"class.WasmEdge::Variant", ptr %172, i64 %64 %196 = getelementptr inbounds %"class.WasmEdge::Variant", ptr %121, i64 %116 %197 = getelementptr inbounds %"class.WasmEdge::Variant", ptr %196, i64 %64 @@ -4976,78 +4971,78 @@ _ZN8WasmEdge8Executor12_GLOBAL__N_19unpackValERKNS_7ValTypeERKNS_7VariantIJjimlf %199 = getelementptr i8, ptr %171, i64 2 br label %200 -200: ; preds = %"_ZZNK8WasmEdge8Executor8Executor14runArrayCopyOpEjjRKNS_10RefVariantEjS4_RKNS_3AST13CompositeTypeES8_RKNS5_11InstructionEENK3$_1clERKNS_7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dS2_NS_10StrVariantEEEE.exit.i", %.lr.ph.i119 - %.sroa.0146.0 = phi ptr [ %195, %.lr.ph.i119 ], [ %201, %"_ZZNK8WasmEdge8Executor8Executor14runArrayCopyOpEjjRKNS_10RefVariantEjS4_RKNS_3AST13CompositeTypeES8_RKNS5_11InstructionEENK3$_1clERKNS_7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dS2_NS_10StrVariantEEEE.exit.i" ] - %.sroa.0142.0 = phi ptr [ %197, %.lr.ph.i119 ], [ %215, %"_ZZNK8WasmEdge8Executor8Executor14runArrayCopyOpEjjRKNS_10RefVariantEjS4_RKNS_3AST13CompositeTypeES8_RKNS5_11InstructionEENK3$_1clERKNS_7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dS2_NS_10StrVariantEEEE.exit.i" ] - %201 = getelementptr inbounds i8, ptr %.sroa.0146.0, i64 -16 +200: ; preds = %"_ZZNK8WasmEdge8Executor8Executor14runArrayCopyOpEjjRKNS_10RefVariantEjS4_RKNS_3AST13CompositeTypeES8_RKNS5_11InstructionEENK3$_1clERKNS_7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dS2_NS_10StrVariantEEEE.exit.i", %.lr.ph.i118 + %.sroa.0145.0 = phi ptr [ %195, %.lr.ph.i118 ], [ %201, %"_ZZNK8WasmEdge8Executor8Executor14runArrayCopyOpEjjRKNS_10RefVariantEjS4_RKNS_3AST13CompositeTypeES8_RKNS5_11InstructionEENK3$_1clERKNS_7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dS2_NS_10StrVariantEEEE.exit.i" ] + %.sroa.0141.0 = phi ptr [ %197, %.lr.ph.i118 ], [ %215, %"_ZZNK8WasmEdge8Executor8Executor14runArrayCopyOpEjjRKNS_10RefVariantEjS4_RKNS_3AST13CompositeTypeES8_RKNS5_11InstructionEENK3$_1clERKNS_7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dS2_NS_10StrVariantEEEE.exit.i" ] + %201 = getelementptr inbounds i8, ptr %.sroa.0145.0, i64 -16 %.val1.val.i = load i8, ptr %198, align 2, !noalias !73 - %.off.i.i.i.i120 = add i8 %.val1.val.i, -119 - %switch.i.i.i.i121 = icmp ult i8 %.off.i.i.i.i120, 2 - br i1 %switch.i.i.i.i121, label %202, label %208 + %.off.i.i.i.i119 = add i8 %.val1.val.i, -119 + %switch.i.i.i.i120 = icmp ult i8 %.off.i.i.i.i119, 2 + br i1 %switch.i.i.i.i120, label %202, label %208 202: ; preds = %200 %203 = load i32, ptr %201, align 4, !noalias !73 - %switch.i.i.i141 = icmp eq i8 %.val1.val.i, 120 - br i1 %switch.i.i.i141, label %204, label %206 + %switch.i.i.i140 = icmp eq i8 %.val1.val.i, 120 + br i1 %switch.i.i.i140, label %204, label %206 204: ; preds = %202 %205 = and i32 %203, 255 - br label %_ZN8WasmEdge8Executor12_GLOBAL__N_19unpackValERKNS_7ValTypeERKNS_7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS_10RefVariantENS_10StrVariantEEEEb.exit.i.i126 + br label %_ZN8WasmEdge8Executor12_GLOBAL__N_19unpackValERKNS_7ValTypeERKNS_7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS_10RefVariantENS_10StrVariantEEEEb.exit.i.i125 206: ; preds = %202 %207 = and i32 %203, 65535 - br label %_ZN8WasmEdge8Executor12_GLOBAL__N_19unpackValERKNS_7ValTypeERKNS_7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS_10RefVariantENS_10StrVariantEEEEb.exit.i.i126 + br label %_ZN8WasmEdge8Executor12_GLOBAL__N_19unpackValERKNS_7ValTypeERKNS_7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS_10RefVariantENS_10StrVariantEEEEb.exit.i.i125 208: ; preds = %200 - %.sroa.0.0.copyload.i.i.i122 = load i64, ptr %201, align 16, !noalias !73 - %.sroa.0.sroa.0.0.extract.trunc.i.i.i123 = trunc i64 %.sroa.0.0.copyload.i.i.i122 to i32 - %.sroa.6.0..sroa_idx.i.i.i124 = getelementptr inbounds i8, ptr %.sroa.0146.0, i64 -8 - %.sroa.6.0.copyload.i.i.i125 = load i64, ptr %.sroa.6.0..sroa_idx.i.i.i124, align 8, !noalias !73 - %209 = and i64 %.sroa.0.0.copyload.i.i.i122, -4294967296 - br label %_ZN8WasmEdge8Executor12_GLOBAL__N_19unpackValERKNS_7ValTypeERKNS_7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS_10RefVariantENS_10StrVariantEEEEb.exit.i.i126 - -_ZN8WasmEdge8Executor12_GLOBAL__N_19unpackValERKNS_7ValTypeERKNS_7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS_10RefVariantENS_10StrVariantEEEEb.exit.i.i126: ; preds = %208, %206, %204 - %.sroa.6.0.i.i.i127 = phi i64 [ undef, %204 ], [ undef, %206 ], [ %.sroa.6.0.copyload.i.i.i125, %208 ] - %.sroa.0.sroa.0.0.i.i.i128 = phi i32 [ %205, %204 ], [ %207, %206 ], [ %.sroa.0.sroa.0.0.extract.trunc.i.i.i123, %208 ] - %.sroa.0.sroa.6.0.i.i.i129 = phi i64 [ 0, %204 ], [ 0, %206 ], [ %209, %208 ] - %.val.i.i130 = load i8, ptr %199, align 2, !noalias !73 - %.off.i.i3.i.i131 = add i8 %.val.i.i130, -119 - %switch.i.i4.i.i132 = icmp ult i8 %.off.i.i3.i.i131, 2 - br i1 %switch.i.i4.i.i132, label %210, label %"_ZZNK8WasmEdge8Executor8Executor14runArrayCopyOpEjjRKNS_10RefVariantEjS4_RKNS_3AST13CompositeTypeES8_RKNS5_11InstructionEENK3$_1clERKNS_7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dS2_NS_10StrVariantEEEE.exit.i" - -210: ; preds = %_ZN8WasmEdge8Executor12_GLOBAL__N_19unpackValERKNS_7ValTypeERKNS_7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS_10RefVariantENS_10StrVariantEEEEb.exit.i.i126 - %switch.i12.i.i140 = icmp eq i8 %.val.i.i130, 120 - br i1 %switch.i12.i.i140, label %211, label %213 + %.sroa.0.0.copyload.i.i.i121 = load i64, ptr %201, align 16, !noalias !73 + %.sroa.0.sroa.0.0.extract.trunc.i.i.i122 = trunc i64 %.sroa.0.0.copyload.i.i.i121 to i32 + %.sroa.6.0..sroa_idx.i.i.i123 = getelementptr inbounds i8, ptr %.sroa.0145.0, i64 -8 + %.sroa.6.0.copyload.i.i.i124 = load i64, ptr %.sroa.6.0..sroa_idx.i.i.i123, align 8, !noalias !73 + %209 = and i64 %.sroa.0.0.copyload.i.i.i121, -4294967296 + br label %_ZN8WasmEdge8Executor12_GLOBAL__N_19unpackValERKNS_7ValTypeERKNS_7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS_10RefVariantENS_10StrVariantEEEEb.exit.i.i125 + +_ZN8WasmEdge8Executor12_GLOBAL__N_19unpackValERKNS_7ValTypeERKNS_7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS_10RefVariantENS_10StrVariantEEEEb.exit.i.i125: ; preds = %208, %206, %204 + %.sroa.6.0.i.i.i126 = phi i64 [ undef, %204 ], [ undef, %206 ], [ %.sroa.6.0.copyload.i.i.i124, %208 ] + %.sroa.0.sroa.0.0.i.i.i127 = phi i32 [ %205, %204 ], [ %207, %206 ], [ %.sroa.0.sroa.0.0.extract.trunc.i.i.i122, %208 ] + %.sroa.0.sroa.6.0.i.i.i128 = phi i64 [ 0, %204 ], [ 0, %206 ], [ %209, %208 ] + %.val.i.i129 = load i8, ptr %199, align 2, !noalias !73 + %.off.i.i3.i.i130 = add i8 %.val.i.i129, -119 + %switch.i.i4.i.i131 = icmp ult i8 %.off.i.i3.i.i130, 2 + br i1 %switch.i.i4.i.i131, label %210, label %"_ZZNK8WasmEdge8Executor8Executor14runArrayCopyOpEjjRKNS_10RefVariantEjS4_RKNS_3AST13CompositeTypeES8_RKNS5_11InstructionEENK3$_1clERKNS_7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dS2_NS_10StrVariantEEEE.exit.i" + +210: ; preds = %_ZN8WasmEdge8Executor12_GLOBAL__N_19unpackValERKNS_7ValTypeERKNS_7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS_10RefVariantENS_10StrVariantEEEEb.exit.i.i125 + %switch.i12.i.i139 = icmp eq i8 %.val.i.i129, 120 + br i1 %switch.i12.i.i139, label %211, label %213 211: ; preds = %210 - %212 = and i32 %.sroa.0.sroa.0.0.i.i.i128, 255 + %212 = and i32 %.sroa.0.sroa.0.0.i.i.i127, 255 br label %"_ZZNK8WasmEdge8Executor8Executor14runArrayCopyOpEjjRKNS_10RefVariantEjS4_RKNS_3AST13CompositeTypeES8_RKNS5_11InstructionEENK3$_1clERKNS_7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dS2_NS_10StrVariantEEEE.exit.i" 213: ; preds = %210 - %214 = and i32 %.sroa.0.sroa.0.0.i.i.i128, 65535 + %214 = and i32 %.sroa.0.sroa.0.0.i.i.i127, 65535 br label %"_ZZNK8WasmEdge8Executor8Executor14runArrayCopyOpEjjRKNS_10RefVariantEjS4_RKNS_3AST13CompositeTypeES8_RKNS5_11InstructionEENK3$_1clERKNS_7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dS2_NS_10StrVariantEEEE.exit.i" -"_ZZNK8WasmEdge8Executor8Executor14runArrayCopyOpEjjRKNS_10RefVariantEjS4_RKNS_3AST13CompositeTypeES8_RKNS5_11InstructionEENK3$_1clERKNS_7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dS2_NS_10StrVariantEEEE.exit.i": ; preds = %213, %211, %_ZN8WasmEdge8Executor12_GLOBAL__N_19unpackValERKNS_7ValTypeERKNS_7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS_10RefVariantENS_10StrVariantEEEEb.exit.i.i126 - %.sroa.4.0.i.i.i133 = phi i64 [ undef, %211 ], [ undef, %213 ], [ %.sroa.6.0.i.i.i127, %_ZN8WasmEdge8Executor12_GLOBAL__N_19unpackValERKNS_7ValTypeERKNS_7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS_10RefVariantENS_10StrVariantEEEEb.exit.i.i126 ] - %.sroa.0.sroa.0.0.i7.i.i134 = phi i32 [ %212, %211 ], [ %214, %213 ], [ %.sroa.0.sroa.0.0.i.i.i128, %_ZN8WasmEdge8Executor12_GLOBAL__N_19unpackValERKNS_7ValTypeERKNS_7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS_10RefVariantENS_10StrVariantEEEEb.exit.i.i126 ] - %.sroa.0.sroa.4.0.i.i.i135 = phi i64 [ 0, %211 ], [ 0, %213 ], [ %.sroa.0.sroa.6.0.i.i.i129, %_ZN8WasmEdge8Executor12_GLOBAL__N_19unpackValERKNS_7ValTypeERKNS_7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS_10RefVariantENS_10StrVariantEEEEb.exit.i.i126 ] - %.sroa.0.sroa.0.0.insert.ext.i8.i.i136 = zext i32 %.sroa.0.sroa.0.0.i7.i.i134 to i64 - %.sroa.0.sroa.0.0.insert.insert.i9.i.i137 = or disjoint i64 %.sroa.0.sroa.4.0.i.i.i135, %.sroa.0.sroa.0.0.insert.ext.i8.i.i136 - %215 = getelementptr inbounds i8, ptr %.sroa.0142.0, i64 -16 - store i64 %.sroa.0.sroa.0.0.insert.insert.i9.i.i137, ptr %215, align 16, !noalias !73 - %.sroa.2.0..sroa_idx.i138 = getelementptr inbounds i8, ptr %.sroa.0142.0, i64 -8 - store i64 %.sroa.4.0.i.i.i133, ptr %.sroa.2.0..sroa_idx.i138, align 8, !noalias !73 - %.not.i139 = icmp eq ptr %201, %172 - br i1 %.not.i139, label %"_ZSt9transformIPN8WasmEdge7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS0_10RefVariantENS0_10StrVariantEEEESF_ZNKS0_8Executor8Executor14runArrayCopyOpEjjRKSC_jSJ_RKNS0_3AST13CompositeTypeESN_RKNSK_11InstructionEE3$_0ET0_T_ST_SS_T1_.exit", label %200, !llvm.loop !76 +"_ZZNK8WasmEdge8Executor8Executor14runArrayCopyOpEjjRKNS_10RefVariantEjS4_RKNS_3AST13CompositeTypeES8_RKNS5_11InstructionEENK3$_1clERKNS_7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dS2_NS_10StrVariantEEEE.exit.i": ; preds = %213, %211, %_ZN8WasmEdge8Executor12_GLOBAL__N_19unpackValERKNS_7ValTypeERKNS_7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS_10RefVariantENS_10StrVariantEEEEb.exit.i.i125 + %.sroa.4.0.i.i.i132 = phi i64 [ undef, %211 ], [ undef, %213 ], [ %.sroa.6.0.i.i.i126, %_ZN8WasmEdge8Executor12_GLOBAL__N_19unpackValERKNS_7ValTypeERKNS_7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS_10RefVariantENS_10StrVariantEEEEb.exit.i.i125 ] + %.sroa.0.sroa.0.0.i7.i.i133 = phi i32 [ %212, %211 ], [ %214, %213 ], [ %.sroa.0.sroa.0.0.i.i.i127, %_ZN8WasmEdge8Executor12_GLOBAL__N_19unpackValERKNS_7ValTypeERKNS_7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS_10RefVariantENS_10StrVariantEEEEb.exit.i.i125 ] + %.sroa.0.sroa.4.0.i.i.i134 = phi i64 [ 0, %211 ], [ 0, %213 ], [ %.sroa.0.sroa.6.0.i.i.i128, %_ZN8WasmEdge8Executor12_GLOBAL__N_19unpackValERKNS_7ValTypeERKNS_7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS_10RefVariantENS_10StrVariantEEEEb.exit.i.i125 ] + %.sroa.0.sroa.0.0.insert.ext.i8.i.i135 = zext i32 %.sroa.0.sroa.0.0.i7.i.i133 to i64 + %.sroa.0.sroa.0.0.insert.insert.i9.i.i136 = or disjoint i64 %.sroa.0.sroa.4.0.i.i.i134, %.sroa.0.sroa.0.0.insert.ext.i8.i.i135 + %215 = getelementptr inbounds i8, ptr %.sroa.0141.0, i64 -16 + store i64 %.sroa.0.sroa.0.0.insert.insert.i9.i.i136, ptr %215, align 16, !noalias !73 + %.sroa.2.0..sroa_idx.i137 = getelementptr inbounds i8, ptr %.sroa.0141.0, i64 -8 + store i64 %.sroa.4.0.i.i.i132, ptr %.sroa.2.0..sroa_idx.i137, align 8, !noalias !73 + %.not.i138 = icmp eq ptr %201, %172 + br i1 %.not.i138, label %"_ZSt9transformIPN8WasmEdge7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS0_10RefVariantENS0_10StrVariantEEEESF_ZNKS0_8Executor8Executor14runArrayCopyOpEjjRKSC_jSJ_RKNS0_3AST13CompositeTypeESN_RKNSK_11InstructionEE3$_0ET0_T_ST_SS_T1_.exit", label %200, !llvm.loop !76 "_ZSt9transformIPN8WasmEdge7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS0_10RefVariantENS0_10StrVariantEEEESF_ZNKS0_8Executor8Executor14runArrayCopyOpEjjRKSC_jSJ_RKNS0_3AST13CompositeTypeESN_RKNSK_11InstructionEE3$_0ET0_T_ST_SS_T1_.exit": ; preds = %"_ZZNK8WasmEdge8Executor8Executor14runArrayCopyOpEjjRKNS_10RefVariantEjS4_RKNS_3AST13CompositeTypeES8_RKNS5_11InstructionEENK3$_0clERKNS_7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dS2_NS_10StrVariantEEEE.exit.i", %"_ZZNK8WasmEdge8Executor8Executor14runArrayCopyOpEjjRKNS_10RefVariantEjS4_RKNS_3AST13CompositeTypeES8_RKNS5_11InstructionEENK3$_1clERKNS_7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dS2_NS_10StrVariantEEEE.exit.i", %194, %173 store i64 1, ptr %0, align 4 br label %216 -216: ; preds = %"_ZSt9transformIPN8WasmEdge7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS0_10RefVariantENS0_10StrVariantEEEESF_ZNKS0_8Executor8Executor14runArrayCopyOpEjjRKSC_jSJ_RKNS0_3AST13CompositeTypeESN_RKNSK_11InstructionEE3$_0ET0_T_ST_SS_T1_.exit", %_ZNSt6vectorIN8WasmEdge7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS0_10RefVariantENS0_10StrVariantEEEESaISE_EED2Ev.exit115, %_ZNSt6vectorIN8WasmEdge7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS0_10RefVariantENS0_10StrVariantEEEESaISE_EED2Ev.exit80, %_ZNSt6vectorIN8WasmEdge7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS0_10RefVariantENS0_10StrVariantEEEESaISE_EED2Ev.exit +216: ; preds = %"_ZSt9transformIPN8WasmEdge7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS0_10RefVariantENS0_10StrVariantEEEESF_ZNKS0_8Executor8Executor14runArrayCopyOpEjjRKSC_jSJ_RKNS0_3AST13CompositeTypeESN_RKNSK_11InstructionEE3$_0ET0_T_ST_SS_T1_.exit", %_ZNSt6vectorIN8WasmEdge7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS0_10RefVariantENS0_10StrVariantEEEESaISE_EED2Ev.exit114, %_ZNSt6vectorIN8WasmEdge7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS0_10RefVariantENS0_10StrVariantEEEESaISE_EED2Ev.exit80, %_ZNSt6vectorIN8WasmEdge7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS0_10RefVariantENS0_10StrVariantEEEESaISE_EED2Ev.exit ret void -217: ; preds = %.noexc105, %_ZN8WasmEdge7ErrInfo15InfoInstructionC2ENS_6OpCodeEmRKSt6vectorINS_7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS_10RefVariantENS_10StrVariantEEEESaISH_EERKS3_INS_7ValTypeESaISM_EEb.exit104, %.noexc85, %130, %.noexc81, %128, %.noexc70, %_ZN8WasmEdge7ErrInfo15InfoInstructionC2ENS_6OpCodeEmRKSt6vectorINS_7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS_10RefVariantENS_10StrVariantEEEESaISH_EERKS3_INS_7ValTypeESaISM_EEb.exit69, %.noexc51, %78, %.noexc48, %76, %.noexc45, %_ZN8WasmEdge7ErrInfo15InfoInstructionC2ENS_6OpCodeEmRKSt6vectorINS_7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS_10RefVariantENS_10StrVariantEEEESaISH_EERKS3_INS_7ValTypeESaISM_EEb.exit, %.noexc, %34 +217: ; preds = %.noexc104, %_ZN8WasmEdge7ErrInfo15InfoInstructionC2ENS_6OpCodeEmRKSt6vectorINS_7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS_10RefVariantENS_10StrVariantEEEESaISH_EERKS3_INS_7ValTypeESaISM_EEb.exit103, %.noexc84, %130, %.noexc81, %128, %.noexc70, %_ZN8WasmEdge7ErrInfo15InfoInstructionC2ENS_6OpCodeEmRKSt6vectorINS_7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS_10RefVariantENS_10StrVariantEEEESaISH_EERKS3_INS_7ValTypeESaISM_EEb.exit69, %.noexc51, %78, %.noexc48, %76, %.noexc45, %_ZN8WasmEdge7ErrInfo15InfoInstructionC2ENS_6OpCodeEmRKSt6vectorINS_7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS_10RefVariantENS_10StrVariantEEEESaISH_EERKS3_INS_7ValTypeESaISM_EEb.exit, %.noexc, %34 %218 = landingpad { ptr, i32 } catch ptr null %219 = extractvalue { ptr, i32 } %218, 0 @@ -5193,8 +5188,7 @@ _ZNSt6vectorIN8WasmEdge7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv1 %83 = sub i64 %81, %82 %84 = lshr exact i64 %83, 4 %85 = trunc i64 %84 to i32 - %.sroa.speculated.i = call i32 @llvm.umax.i32(i32 %85, i32 1) - %86 = add i32 %.sroa.speculated.i, -1 + %86 = call noundef i32 @llvm.usub.sat.i32(i32 %85, i32 1) store i64 %63, ptr %21, align 8 %87 = getelementptr inbounds i8, ptr %21, i64 8 store i32 %2, ptr %87, align 8 @@ -5570,8 +5564,7 @@ _ZNSt6vectorIN8WasmEdge7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv1 %86 = sub i64 %84, %85 %87 = lshr exact i64 %86, 4 %88 = trunc i64 %87 to i32 - %.sroa.speculated.i = call i32 @llvm.umax.i32(i32 %88, i32 1) - %89 = add i32 %.sroa.speculated.i, -1 + %89 = call noundef i32 @llvm.usub.sat.i32(i32 %88, i32 1) store i64 %66, ptr %21, align 8 %90 = getelementptr inbounds i8, ptr %21, i64 8 store i32 %2, ptr %90, align 8 @@ -34757,7 +34750,7 @@ declare i64 @llvm.abs.i64(i64, i1 immarg) #16 declare i32 @llvm.smin.i32(i32, i32) #16 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.umax.i32(i32, i32) #16 +declare i32 @llvm.usub.sat.i32(i32, i32) #16 attributes #0 = { mustprogress nounwind uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } diff --git a/bench/wasmedge/optimized/tableInstr.cpp.ll b/bench/wasmedge/optimized/tableInstr.cpp.ll index 1151a385e69..2021adb8b66 100644 --- a/bench/wasmedge/optimized/tableInstr.cpp.ll +++ b/bench/wasmedge/optimized/tableInstr.cpp.ll @@ -177,8 +177,6 @@ $_ZNK8WasmEdge7Runtime8Instance13TableInstance10getRefAddrEj = comdat any $_ZN8WasmEdge7ErrInfo15InfoInstructionD2Ev = comdat any -$_ZN8WasmEdge7Runtime8Instance13TableInstance10setRefAddrEjRKNS_10RefVariantE = comdat any - $_ZN8WasmEdge7Runtime8Instance13TableInstance7setRefsEN5cxx204spanIKNS_10RefVariantELm18446744073709551615EEEjjj = comdat any $_ZNK8WasmEdge7Runtime8Instance13TableInstance7getRefsEjj = comdat any @@ -914,8 +912,7 @@ define linkonce_odr hidden void @_ZNK8WasmEdge7Runtime8Instance13TableInstance10 %24 = sub i64 %22, %23 %25 = lshr exact i64 %24, 4 %26 = trunc i64 %25 to i32 - %.sroa.speculated.i = call i32 @llvm.umax.i32(i32 %26, i32 1) - %27 = add i32 %.sroa.speculated.i, -1 + %27 = call noundef i32 @llvm.usub.sat.i32(i32 %26, i32 1) store i64 %8, ptr %7, align 8 %28 = getelementptr inbounds i8, ptr %7, i64 8 store i32 1, ptr %28, align 8 @@ -996,199 +993,177 @@ _ZNSt6vectorIN8WasmEdge7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv1 declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #2 ; Function Attrs: mustprogress uwtable -define void @_ZN8WasmEdge8Executor8Executor13runTableSetOpERNS_7Runtime12StackManagerERNS2_8Instance13TableInstanceERKNS_3AST11InstructionE(ptr dead_on_unwind noalias nocapture writable writeonly sret(%"class.cxx20::expected") align 4 %0, ptr nocapture noundef nonnull readnone align 8 dereferenceable(408) %1, ptr nocapture noundef nonnull align 8 dereferenceable(48) %2, ptr noundef nonnull align 16 dereferenceable(64) %3, ptr nocapture noundef nonnull readonly align 16 dereferenceable(25) %4) local_unnamed_addr #0 align 2 personality ptr @__gxx_personality_v0 { +define void @_ZN8WasmEdge8Executor8Executor13runTableSetOpERNS_7Runtime12StackManagerERNS2_8Instance13TableInstanceERKNS_3AST11InstructionE(ptr dead_on_unwind noalias nocapture writable writeonly sret(%"class.cxx20::expected") align 4 %0, ptr nocapture noundef nonnull readnone align 8 dereferenceable(408) %1, ptr nocapture noundef nonnull align 8 dereferenceable(48) %2, ptr nocapture noundef nonnull readonly align 16 dereferenceable(64) %3, ptr nocapture noundef nonnull readonly align 16 dereferenceable(25) %4) local_unnamed_addr #0 align 2 personality ptr @__gxx_personality_v0 { %6 = alloca %"struct.spdlog::source_loc", align 8 - %7 = alloca %"struct.WasmEdge::RefVariant", align 16 - %8 = alloca %"class.cxx20::expected", align 4 - %9 = alloca %"struct.WasmEdge::ErrInfo::InfoInstruction", align 8 - %10 = getelementptr inbounds i8, ptr %2, i64 8 - %11 = load ptr, ptr %10, align 8 - %12 = getelementptr inbounds i8, ptr %11, i64 -16 - %.sroa.0.0.copyload.i = load i64, ptr %12, align 16 - %.sroa.2.0..sroa_idx.i = getelementptr inbounds i8, ptr %11, i64 -8 + %7 = alloca %"struct.spdlog::source_loc", align 8 + %8 = alloca %"struct.spdlog::source_loc", align 8 + %9 = alloca i32, align 4 + %10 = alloca %"struct.WasmEdge::ErrInfo::InfoBoundary", align 8 + %11 = alloca %"struct.WasmEdge::ErrInfo::InfoInstruction", align 8 + %12 = getelementptr inbounds i8, ptr %2, i64 8 + %13 = load ptr, ptr %12, align 8 + %14 = getelementptr inbounds i8, ptr %13, i64 -16 + %.sroa.0.0.copyload.i = load i64, ptr %14, align 16 + %.sroa.2.0..sroa_idx.i = getelementptr inbounds i8, ptr %13, i64 -8 %.sroa.2.0.copyload.i = load i64, ptr %.sroa.2.0..sroa_idx.i, align 8 - store ptr %12, ptr %10, align 8 - store i64 %.sroa.0.0.copyload.i, ptr %7, align 16 - %.sroa.253.0..sroa_idx = getelementptr inbounds i8, ptr %7, i64 8 - store i64 %.sroa.2.0.copyload.i, ptr %.sroa.253.0..sroa_idx, align 8 - %13 = getelementptr inbounds i8, ptr %11, i64 -32 - %.sroa.0.0.copyload.i12 = load i64, ptr %13, align 16 - store ptr %13, ptr %10, align 8 - %.sroa.050.0.extract.trunc = trunc i64 %.sroa.0.0.copyload.i12 to i32 - call void @_ZN8WasmEdge7Runtime8Instance13TableInstance10setRefAddrEjRKNS_10RefVariantE(ptr dead_on_unwind nonnull writable sret(%"class.cxx20::expected") align 4 %8, ptr noundef nonnull align 16 dereferenceable(64) %3, i32 noundef %.sroa.050.0.extract.trunc, ptr noundef nonnull align 16 dereferenceable(16) %7) - %14 = load i8, ptr %8, align 4 - %15 = trunc i8 %14 to i1 - br i1 %15, label %55, label %_ZNSt16allocator_traitsISaIN8WasmEdge7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS0_10RefVariantENS0_10StrVariantEEEEEE8allocateERSF_m.exit.i.i.i.i.i + store ptr %14, ptr %12, align 8 + %15 = getelementptr inbounds i8, ptr %13, i64 -32 + %.sroa.0.0.copyload.i12 = load i64, ptr %15, align 16 + store ptr %15, ptr %12, align 8 + call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) + call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %10) + %16 = and i64 %.sroa.0.0.copyload.i12, 4294967295 + %17 = getelementptr inbounds i8, ptr %3, i64 24 + %18 = getelementptr inbounds i8, ptr %3, i64 32 + %19 = load ptr, ptr %18, align 16, !noalias !13 + %20 = load ptr, ptr %17, align 8, !noalias !13 + %21 = ptrtoint ptr %19 to i64 + %22 = ptrtoint ptr %20 to i64 + %23 = sub i64 %21, %22 + %24 = ashr exact i64 %23, 4 + %.not.i = icmp ugt i64 %24, %16 + br i1 %.not.i, label %74, label %_ZNSt16allocator_traitsISaIN8WasmEdge7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS0_10RefVariantENS0_10StrVariantEEEEEE8allocateERSF_m.exit.i.i.i.i.i _ZNSt16allocator_traitsISaIN8WasmEdge7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS0_10RefVariantENS0_10StrVariantEEEEEE8allocateERSF_m.exit.i.i.i.i.i: ; preds = %5 - %16 = getelementptr inbounds i8, ptr %4, i64 20 - %17 = load i32, ptr %16, align 4 - %18 = getelementptr inbounds i8, ptr %4, i64 16 - %19 = load i32, ptr %18, align 16 - %20 = call noalias noundef nonnull dereferenceable(16) ptr @_Znwm(i64 noundef 16) #21 - store i32 %.sroa.050.0.extract.trunc, ptr %20, align 16 - %21 = zext i32 %19 to i64 - store i32 %17, ptr %9, align 8 - %22 = getelementptr inbounds i8, ptr %9, i64 8 - store i64 %21, ptr %22, align 8 - %23 = getelementptr inbounds i8, ptr %9, i64 16 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %23, i8 0, i64 24, i1 false) - %24 = invoke noalias noundef nonnull dereferenceable(16) ptr @_Znwm(i64 noundef 16) #21 - to label %.noexc5.i unwind label %30 + %.sroa.052.0.extract.trunc = trunc i64 %.sroa.0.0.copyload.i12 to i32 + store i32 1031, ptr %9, align 4, !noalias !13 + %25 = tail call noundef ptr @_ZN6spdlog18default_logger_rawEv(), !noalias !13 + call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %8), !noalias !13 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %8, i8 0, i64 24, i1 false), !noalias !13 + call void @_ZN6spdlog6logger4log_IJRKN8WasmEdge7ErrCode5ValueEEEEvNS_10source_locENS_5level10level_enumEN3fmt2v817basic_string_viewIcEEDpOT_(ptr noundef nonnull align 8 dereferenceable(208) %25, ptr noundef nonnull byval(%"struct.spdlog::source_loc") align 8 %8, i32 noundef 4, ptr nonnull @.str, i64 2, ptr noundef nonnull align 4 dereferenceable(4) %9), !noalias !13 + call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8), !noalias !13 + %26 = load ptr, ptr %18, align 16, !noalias !13 + %27 = load ptr, ptr %17, align 8, !noalias !13 + %28 = ptrtoint ptr %26 to i64 + %29 = ptrtoint ptr %27 to i64 + %30 = sub i64 %28, %29 + %31 = lshr exact i64 %30, 4 + %32 = trunc i64 %31 to i32 + %33 = call noundef i32 @llvm.usub.sat.i32(i32 %32, i32 1) + store i64 %16, ptr %10, align 8, !noalias !13 + %34 = getelementptr inbounds i8, ptr %10, i64 8 + store i32 1, ptr %34, align 8, !noalias !13 + %35 = getelementptr inbounds i8, ptr %10, i64 12 + store i32 %33, ptr %35, align 4, !noalias !13 + %36 = call noundef ptr @_ZN6spdlog18default_logger_rawEv(), !noalias !13 + call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7), !noalias !13 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %7, i8 0, i64 24, i1 false), !noalias !13 + call void @_ZN6spdlog6logger4log_IJRKN8WasmEdge7ErrInfo12InfoBoundaryEEEEvNS_10source_locENS_5level10level_enumEN3fmt2v817basic_string_viewIcEEDpOT_(ptr noundef nonnull align 8 dereferenceable(208) %36, ptr noundef nonnull byval(%"struct.spdlog::source_loc") align 8 %7, i32 noundef 4, ptr nonnull @.str, i64 2, ptr noundef nonnull align 8 dereferenceable(16) %10), !noalias !13 + call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7), !noalias !13 + call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) + %37 = getelementptr inbounds i8, ptr %4, i64 20 + %38 = load i32, ptr %37, align 4 + %39 = getelementptr inbounds i8, ptr %4, i64 16 + %40 = load i32, ptr %39, align 16 + %41 = call noalias noundef nonnull dereferenceable(16) ptr @_Znwm(i64 noundef 16) #21 + store i32 %.sroa.052.0.extract.trunc, ptr %41, align 16 + %42 = zext i32 %40 to i64 + store i32 %38, ptr %11, align 8 + %43 = getelementptr inbounds i8, ptr %11, i64 8 + store i64 %42, ptr %43, align 8 + %44 = getelementptr inbounds i8, ptr %11, i64 16 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %44, i8 0, i64 24, i1 false) + %45 = invoke noalias noundef nonnull dereferenceable(16) ptr @_Znwm(i64 noundef 16) #21 + to label %.noexc5.i unwind label %51 .noexc5.i: ; preds = %_ZNSt16allocator_traitsISaIN8WasmEdge7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS0_10RefVariantENS0_10StrVariantEEEEEE8allocateERSF_m.exit.i.i.i.i.i - store ptr %24, ptr %23, align 8 - %25 = getelementptr inbounds i8, ptr %9, i64 24 - %26 = getelementptr inbounds i8, ptr %24, i64 16 - %27 = getelementptr inbounds i8, ptr %9, i64 32 - store ptr %26, ptr %27, align 8 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %24, ptr noundef nonnull align 16 dereferenceable(16) %20, i64 16, i1 false) - store ptr %26, ptr %25, align 8 - %28 = getelementptr inbounds i8, ptr %9, i64 40 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %28, i8 0, i64 24, i1 false) - %29 = invoke noalias noundef nonnull dereferenceable(8) ptr @_Znwm(i64 noundef 8) #21 - to label %_ZN8WasmEdge7ErrInfo15InfoInstructionC2ENS_6OpCodeEmRKSt6vectorINS_7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS_10RefVariantENS_10StrVariantEEEESaISH_EERKS3_INS_7ValTypeESaISM_EEb.exit unwind label %30 - -30: ; preds = %.noexc5.i, %_ZNSt16allocator_traitsISaIN8WasmEdge7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS0_10RefVariantENS0_10StrVariantEEEEEE8allocateERSF_m.exit.i.i.i.i.i - %31 = landingpad { ptr, i32 } + store ptr %45, ptr %44, align 8 + %46 = getelementptr inbounds i8, ptr %11, i64 24 + %47 = getelementptr inbounds i8, ptr %45, i64 16 + %48 = getelementptr inbounds i8, ptr %11, i64 32 + store ptr %47, ptr %48, align 8 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %45, ptr noundef nonnull align 16 dereferenceable(16) %41, i64 16, i1 false) + store ptr %47, ptr %46, align 8 + %49 = getelementptr inbounds i8, ptr %11, i64 40 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %49, i8 0, i64 24, i1 false) + %50 = invoke noalias noundef nonnull dereferenceable(8) ptr @_Znwm(i64 noundef 8) #21 + to label %_ZN8WasmEdge7ErrInfo15InfoInstructionC2ENS_6OpCodeEmRKSt6vectorINS_7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS_10RefVariantENS_10StrVariantEEEESaISH_EERKS3_INS_7ValTypeESaISM_EEb.exit unwind label %51 + +51: ; preds = %.noexc5.i, %_ZNSt16allocator_traitsISaIN8WasmEdge7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS0_10RefVariantENS0_10StrVariantEEEEEE8allocateERSF_m.exit.i.i.i.i.i + %52 = landingpad { ptr, i32 } catch ptr null - %32 = extractvalue { ptr, i32 } %31, 0 - call void @__clang_call_terminate(ptr %32) #23 + %53 = extractvalue { ptr, i32 } %52, 0 + call void @__clang_call_terminate(ptr %53) #23 unreachable _ZN8WasmEdge7ErrInfo15InfoInstructionC2ENS_6OpCodeEmRKSt6vectorINS_7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS_10RefVariantENS_10StrVariantEEEESaISH_EERKS3_INS_7ValTypeESaISM_EEb.exit: ; preds = %.noexc5.i - store ptr %29, ptr %28, align 8 - %33 = getelementptr inbounds i8, ptr %9, i64 48 - %34 = getelementptr inbounds i8, ptr %29, i64 8 - %35 = getelementptr inbounds i8, ptr %9, i64 56 - store ptr %34, ptr %35, align 8 - store i64 1082064896, ptr %29, align 4 - store ptr %34, ptr %33, align 8 - %36 = getelementptr inbounds i8, ptr %9, i64 64 - store i8 0, ptr %36, align 8 - %37 = invoke noundef ptr @_ZN6spdlog18default_logger_rawEv() + store ptr %50, ptr %49, align 8 + %54 = getelementptr inbounds i8, ptr %11, i64 48 + %55 = getelementptr inbounds i8, ptr %50, i64 8 + %56 = getelementptr inbounds i8, ptr %11, i64 56 + store ptr %55, ptr %56, align 8 + store i64 1082064896, ptr %50, align 4 + store ptr %55, ptr %54, align 8 + %57 = getelementptr inbounds i8, ptr %11, i64 64 + store i8 0, ptr %57, align 8 + %58 = invoke noundef ptr @_ZN6spdlog18default_logger_rawEv() to label %.noexc unwind label %_ZNSt6vectorIN8WasmEdge7ValTypeESaIS1_EED2Ev.exit26 .noexc: ; preds = %_ZN8WasmEdge7ErrInfo15InfoInstructionC2ENS_6OpCodeEmRKSt6vectorINS_7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS_10RefVariantENS_10StrVariantEEEESaISH_EERKS3_INS_7ValTypeESaISM_EEb.exit call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %6) call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %6, i8 0, i64 24, i1 false) - invoke void @_ZN6spdlog6logger4log_IJRKN8WasmEdge7ErrInfo15InfoInstructionEEEEvNS_10source_locENS_5level10level_enumEN3fmt2v817basic_string_viewIcEEDpOT_(ptr noundef nonnull align 8 dereferenceable(208) %37, ptr noundef nonnull byval(%"struct.spdlog::source_loc") align 8 %6, i32 noundef 4, ptr nonnull @.str, i64 2, ptr noundef nonnull align 8 dereferenceable(65) %9) - to label %38 unwind label %_ZNSt6vectorIN8WasmEdge7ValTypeESaIS1_EED2Ev.exit26 + invoke void @_ZN6spdlog6logger4log_IJRKN8WasmEdge7ErrInfo15InfoInstructionEEEEvNS_10source_locENS_5level10level_enumEN3fmt2v817basic_string_viewIcEEDpOT_(ptr noundef nonnull align 8 dereferenceable(208) %58, ptr noundef nonnull byval(%"struct.spdlog::source_loc") align 8 %6, i32 noundef 4, ptr nonnull @.str, i64 2, ptr noundef nonnull align 8 dereferenceable(65) %11) + to label %59 unwind label %_ZNSt6vectorIN8WasmEdge7ValTypeESaIS1_EED2Ev.exit26 -38: ; preds = %.noexc +59: ; preds = %.noexc call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) - %39 = load ptr, ptr %28, align 8 - %.not.i.i.i.i = icmp eq ptr %39, null - br i1 %.not.i.i.i.i, label %_ZNSt6vectorIN8WasmEdge7ValTypeESaIS1_EED2Ev.exit.i, label %40 - -40: ; preds = %38 - %41 = load ptr, ptr %35, align 8 - %42 = ptrtoint ptr %41 to i64 - %43 = ptrtoint ptr %39 to i64 - %44 = sub i64 %42, %43 - call void @_ZdlPvm(ptr noundef nonnull %39, i64 noundef %44) #22 + %60 = load ptr, ptr %49, align 8 + %.not.i.i.i.i = icmp eq ptr %60, null + br i1 %.not.i.i.i.i, label %_ZNSt6vectorIN8WasmEdge7ValTypeESaIS1_EED2Ev.exit.i, label %61 + +61: ; preds = %59 + %62 = load ptr, ptr %56, align 8 + %63 = ptrtoint ptr %62 to i64 + %64 = ptrtoint ptr %60 to i64 + %65 = sub i64 %63, %64 + call void @_ZdlPvm(ptr noundef nonnull %60, i64 noundef %65) #22 br label %_ZNSt6vectorIN8WasmEdge7ValTypeESaIS1_EED2Ev.exit.i -_ZNSt6vectorIN8WasmEdge7ValTypeESaIS1_EED2Ev.exit.i: ; preds = %40, %38 - %45 = load ptr, ptr %23, align 8 - %.not.i.i.i1.i = icmp eq ptr %45, null - br i1 %.not.i.i.i1.i, label %_ZNSt6vectorIN8WasmEdge7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS0_10RefVariantENS0_10StrVariantEEEESaISE_EED2Ev.exit, label %46 - -46: ; preds = %_ZNSt6vectorIN8WasmEdge7ValTypeESaIS1_EED2Ev.exit.i - %47 = load ptr, ptr %27, align 8 - %48 = ptrtoint ptr %47 to i64 - %49 = ptrtoint ptr %45 to i64 - %50 = sub i64 %48, %49 - call void @_ZdlPvm(ptr noundef nonnull %45, i64 noundef %50) #22 +_ZNSt6vectorIN8WasmEdge7ValTypeESaIS1_EED2Ev.exit.i: ; preds = %61, %59 + %66 = load ptr, ptr %44, align 8 + %.not.i.i.i1.i = icmp eq ptr %66, null + br i1 %.not.i.i.i1.i, label %_ZNSt6vectorIN8WasmEdge7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS0_10RefVariantENS0_10StrVariantEEEESaISE_EED2Ev.exit, label %67 + +67: ; preds = %_ZNSt6vectorIN8WasmEdge7ValTypeESaIS1_EED2Ev.exit.i + %68 = load ptr, ptr %48, align 8 + %69 = ptrtoint ptr %68 to i64 + %70 = ptrtoint ptr %66 to i64 + %71 = sub i64 %69, %70 + call void @_ZdlPvm(ptr noundef nonnull %66, i64 noundef %71) #22 br label %_ZNSt6vectorIN8WasmEdge7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS0_10RefVariantENS0_10StrVariantEEEESaISE_EED2Ev.exit -_ZNSt6vectorIN8WasmEdge7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS0_10RefVariantENS0_10StrVariantEEEESaISE_EED2Ev.exit: ; preds = %_ZNSt6vectorIN8WasmEdge7ValTypeESaIS1_EED2Ev.exit.i, %46 - call void @_ZdlPvm(ptr noundef nonnull %20, i64 noundef 16) #22 - %51 = getelementptr inbounds i8, ptr %8, i64 4 - %52 = load i32, ptr %51, align 4, !noalias !13 +_ZNSt6vectorIN8WasmEdge7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS0_10RefVariantENS0_10StrVariantEEEESaISE_EED2Ev.exit: ; preds = %_ZNSt6vectorIN8WasmEdge7ValTypeESaIS1_EED2Ev.exit.i, %67 + call void @_ZdlPvm(ptr noundef nonnull %41, i64 noundef 16) #22 store i8 0, ptr %0, align 4 - %53 = getelementptr inbounds i8, ptr %0, i64 4 - store i32 %52, ptr %53, align 4 - br label %56 + %72 = getelementptr inbounds i8, ptr %0, i64 4 + store i32 1031, ptr %72, align 4 + br label %76 _ZNSt6vectorIN8WasmEdge7ValTypeESaIS1_EED2Ev.exit26: ; preds = %.noexc, %_ZN8WasmEdge7ErrInfo15InfoInstructionC2ENS_6OpCodeEmRKSt6vectorINS_7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS_10RefVariantENS_10StrVariantEEEESaISH_EERKS3_INS_7ValTypeESaISM_EEb.exit - %54 = landingpad { ptr, i32 } + %73 = landingpad { ptr, i32 } cleanup - call void @_ZN8WasmEdge7ErrInfo15InfoInstructionD2Ev(ptr noundef nonnull align 8 dereferenceable(65) %9) #19 - call void @_ZdlPvm(ptr noundef nonnull %20, i64 noundef 16) #22 - resume { ptr, i32 } %54 + call void @_ZN8WasmEdge7ErrInfo15InfoInstructionD2Ev(ptr noundef nonnull align 8 dereferenceable(65) %11) #19 + call void @_ZdlPvm(ptr noundef nonnull %41, i64 noundef 16) #22 + resume { ptr, i32 } %73 -55: ; preds = %5 +74: ; preds = %5 + %75 = getelementptr inbounds %"struct.WasmEdge::RefVariant", ptr %20, i64 %16 + store i64 %.sroa.0.0.copyload.i, ptr %75, align 16, !noalias !13 + %.sroa.257.0..sroa_idx = getelementptr inbounds i8, ptr %75, i64 8 + store i64 %.sroa.2.0.copyload.i, ptr %.sroa.257.0..sroa_idx, align 8, !noalias !13 + call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) store i64 1, ptr %0, align 4 - br label %56 + br label %76 -56: ; preds = %55, %_ZNSt6vectorIN8WasmEdge7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS0_10RefVariantENS0_10StrVariantEEEESaISE_EED2Ev.exit +76: ; preds = %74, %_ZNSt6vectorIN8WasmEdge7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS0_10RefVariantENS0_10StrVariantEEEESaISE_EED2Ev.exit ret void } ; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #3 -; Function Attrs: mustprogress uwtable -define linkonce_odr hidden void @_ZN8WasmEdge7Runtime8Instance13TableInstance10setRefAddrEjRKNS_10RefVariantE(ptr dead_on_unwind noalias writable sret(%"class.cxx20::expected") align 4 %0, ptr noundef nonnull align 16 dereferenceable(64) %1, i32 noundef %2, ptr noundef nonnull align 16 dereferenceable(16) %3) local_unnamed_addr #0 comdat align 2 personality ptr @__gxx_personality_v0 { - %5 = alloca %"struct.spdlog::source_loc", align 8 - %6 = alloca %"struct.spdlog::source_loc", align 8 - %7 = alloca i32, align 4 - %8 = alloca %"struct.WasmEdge::ErrInfo::InfoBoundary", align 8 - %9 = zext i32 %2 to i64 - %10 = getelementptr inbounds i8, ptr %1, i64 24 - %11 = getelementptr inbounds i8, ptr %1, i64 32 - %12 = load ptr, ptr %11, align 16 - %13 = load ptr, ptr %10, align 8 - %14 = ptrtoint ptr %12 to i64 - %15 = ptrtoint ptr %13 to i64 - %16 = sub i64 %14, %15 - %17 = ashr exact i64 %16, 4 - %.not = icmp ugt i64 %17, %9 - br i1 %.not, label %32, label %18 - -18: ; preds = %4 - store i32 1031, ptr %7, align 4 - %19 = tail call noundef ptr @_ZN6spdlog18default_logger_rawEv() - call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %6) - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %6, i8 0, i64 24, i1 false) - call void @_ZN6spdlog6logger4log_IJRKN8WasmEdge7ErrCode5ValueEEEEvNS_10source_locENS_5level10level_enumEN3fmt2v817basic_string_viewIcEEDpOT_(ptr noundef nonnull align 8 dereferenceable(208) %19, ptr noundef nonnull byval(%"struct.spdlog::source_loc") align 8 %6, i32 noundef 4, ptr nonnull @.str, i64 2, ptr noundef nonnull align 4 dereferenceable(4) %7) - call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) - %20 = load ptr, ptr %11, align 16 - %21 = load ptr, ptr %10, align 8 - %22 = ptrtoint ptr %20 to i64 - %23 = ptrtoint ptr %21 to i64 - %24 = sub i64 %22, %23 - %25 = lshr exact i64 %24, 4 - %26 = trunc i64 %25 to i32 - %.sroa.speculated.i = call i32 @llvm.umax.i32(i32 %26, i32 1) - %27 = add i32 %.sroa.speculated.i, -1 - store i64 %9, ptr %8, align 8 - %28 = getelementptr inbounds i8, ptr %8, i64 8 - store i32 1, ptr %28, align 8 - %29 = getelementptr inbounds i8, ptr %8, i64 12 - store i32 %27, ptr %29, align 4 - %30 = call noundef ptr @_ZN6spdlog18default_logger_rawEv() - call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %5) - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %5, i8 0, i64 24, i1 false) - call void @_ZN6spdlog6logger4log_IJRKN8WasmEdge7ErrInfo12InfoBoundaryEEEEvNS_10source_locENS_5level10level_enumEN3fmt2v817basic_string_viewIcEEDpOT_(ptr noundef nonnull align 8 dereferenceable(208) %30, ptr noundef nonnull byval(%"struct.spdlog::source_loc") align 8 %5, i32 noundef 4, ptr nonnull @.str, i64 2, ptr noundef nonnull align 8 dereferenceable(16) %8) - call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) - %31 = getelementptr inbounds i8, ptr %0, i64 4 - store i32 1031, ptr %31, align 4 - br label %34 - -32: ; preds = %4 - %33 = getelementptr inbounds %"struct.WasmEdge::RefVariant", ptr %13, i64 %9 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %33, ptr noundef nonnull align 16 dereferenceable(16) %3, i64 16, i1 false) - store i64 0, ptr %0, align 4 - br label %34 - -34: ; preds = %32, %18 - %.sink = phi i8 [ 1, %32 ], [ 0, %18 ] - store i8 %.sink, ptr %0, align 4 - ret void -} - ; Function Attrs: mustprogress uwtable define void @_ZN8WasmEdge8Executor8Executor14runTableInitOpERNS_7Runtime12StackManagerERNS2_8Instance13TableInstanceERNS5_15ElementInstanceERKNS_3AST11InstructionE(ptr dead_on_unwind noalias nocapture writable writeonly sret(%"class.cxx20::expected") align 4 %0, ptr nocapture noundef nonnull readnone align 8 dereferenceable(408) %1, ptr nocapture noundef nonnull align 8 dereferenceable(48) %2, ptr noundef nonnull align 16 dereferenceable(64) %3, ptr nocapture noundef nonnull readonly align 8 dereferenceable(40) %4, ptr nocapture noundef nonnull readonly align 16 dereferenceable(25) %5) local_unnamed_addr #0 align 2 personality ptr @__gxx_personality_v0 { %7 = alloca %"struct.spdlog::source_loc", align 8 @@ -1337,8 +1312,7 @@ define linkonce_odr hidden void @_ZN8WasmEdge7Runtime8Instance13TableInstance7se %34 = sub i64 %32, %33 %35 = lshr exact i64 %34, 4 %36 = trunc i64 %35 to i32 - %.sroa.speculated.i = call i32 @llvm.umax.i32(i32 %36, i32 1) - %37 = add i32 %.sroa.speculated.i, -1 + %37 = call noundef i32 @llvm.usub.sat.i32(i32 %36, i32 1) store i64 %16, ptr %13, align 8 %38 = getelementptr inbounds i8, ptr %13, i64 8 store i32 %6, ptr %38, align 8 @@ -1380,8 +1354,7 @@ define linkonce_odr hidden void @_ZN8WasmEdge7Runtime8Instance13TableInstance7se 49: ; preds = %.noexc24 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) %50 = trunc i64 %3 to i32 - %.sroa.speculated = call i32 @llvm.umax.i32(i32 %50, i32 1) - %51 = add i32 %.sroa.speculated, -1 + %51 = call i32 @llvm.usub.sat.i32(i32 %50, i32 1) store i64 %44, ptr %15, align 8 %52 = getelementptr inbounds i8, ptr %15, i64 8 store i32 %6, ptr %52, align 8 @@ -1690,8 +1663,7 @@ define linkonce_odr hidden void @_ZNK8WasmEdge7Runtime8Instance13TableInstance7g %27 = sub i64 %25, %26 %28 = lshr exact i64 %27, 4 %29 = trunc i64 %28 to i32 - %.sroa.speculated.i = call i32 @llvm.umax.i32(i32 %29, i32 1) - %30 = add i32 %.sroa.speculated.i, -1 + %30 = call noundef i32 @llvm.usub.sat.i32(i32 %29, i32 1) store i64 %9, ptr %8, align 8 %31 = getelementptr inbounds i8, ptr %8, i64 8 store i32 %3, ptr %31, align 8 @@ -2051,8 +2023,7 @@ define linkonce_odr hidden void @_ZN8WasmEdge7Runtime8Instance13TableInstance8fi %28 = sub i64 %26, %27 %29 = lshr exact i64 %28, 4 %30 = trunc i64 %29 to i32 - %.sroa.speculated.i = call i32 @llvm.umax.i32(i32 %30, i32 1) - %31 = add i32 %.sroa.speculated.i, -1 + %31 = call noundef i32 @llvm.usub.sat.i32(i32 %30, i32 1) store i64 %10, ptr %9, align 8 %32 = getelementptr inbounds i8, ptr %9, i64 8 store i32 %4, ptr %32, align 8 @@ -29571,7 +29542,7 @@ declare i64 @llvm.abs.i64(i64, i1 immarg) #16 declare i32 @llvm.smin.i32(i32, i32) #16 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.umax.i32(i32, i32) #16 +declare i32 @llvm.usub.sat.i32(i32, i32) #16 attributes #0 = { mustprogress uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { mustprogress nounwind uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } @@ -29615,8 +29586,8 @@ attributes #24 = { nounwind willreturn memory(read) } !11 = distinct !{!11, !12, !"_ZN8WasmEdge8UnexpectINS_10RefVariantEEEDaRKN5cxx208expectedIT_NS_7ErrCodeEEE: argument 0"} !12 = distinct !{!12, !"_ZN8WasmEdge8UnexpectINS_10RefVariantEEEDaRKN5cxx208expectedIT_NS_7ErrCodeEEE"} !13 = !{!14} -!14 = distinct !{!14, !15, !"_ZN8WasmEdge8UnexpectIvEEDaRKN5cxx208expectedIT_NS_7ErrCodeEEE: argument 0"} -!15 = distinct !{!15, !"_ZN8WasmEdge8UnexpectIvEEDaRKN5cxx208expectedIT_NS_7ErrCodeEEE"} +!14 = distinct !{!14, !15, !"_ZN8WasmEdge7Runtime8Instance13TableInstance10setRefAddrEjRKNS_10RefVariantE: argument 0"} +!15 = distinct !{!15, !"_ZN8WasmEdge7Runtime8Instance13TableInstance10setRefAddrEjRKNS_10RefVariantE"} !16 = !{!17} !17 = distinct !{!17, !18, !"_ZN8WasmEdge8UnexpectIvEEDaRKN5cxx208expectedIT_NS_7ErrCodeEEE: argument 0"} !18 = distinct !{!18, !"_ZN8WasmEdge8UnexpectIvEEDaRKN5cxx208expectedIT_NS_7ErrCodeEEE"} diff --git a/bench/wasmtime-rs/optimized/4ab4rlryc5h7bf6z.ll b/bench/wasmtime-rs/optimized/4ab4rlryc5h7bf6z.ll index 9cd2e0d1843..d85a7e6668d 100644 --- a/bench/wasmtime-rs/optimized/4ab4rlryc5h7bf6z.ll +++ b/bench/wasmtime-rs/optimized/4ab4rlryc5h7bf6z.ll @@ -522,8 +522,7 @@ define hidden noundef range(i8 0, 4) i8 @"_ZN17cranelift_bforest4node17NodeData$ br i1 %.not.i, label %_ZN17cranelift_bforest11slice_shift17hf5f51a96d79a45c4E.exit, label %.lr.ph.i.preheader .lr.ph.i.preheader: ; preds = %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h11178c85ffd6cc76E.llvm.1710812290736639100.exit" - %umax = tail call i64 @llvm.umax.i64(i64 %18, i64 1) - %21 = add nsw i64 %umax, -1 + %21 = tail call i64 @llvm.usub.sat.i64(i64 %18, i64 1) br label %.lr.ph.i .lr.ph.i: ; preds = %.lr.ph.i.preheader, %24 @@ -1218,8 +1217,7 @@ _ZN17cranelift_bforest11slice_shift17hbb7d6c24393ab507E.exit.thread.i: ; preds = .lr.ph.i.preheader.i: ; preds = %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h6ce7f2c369c148f5E.exit.i" %60 = add nsw i64 %58, -2 - %umax13.i = tail call i64 @llvm.umax.i64(i64 %58, i64 1) - %61 = add nsw i64 %umax13.i, -1 + %61 = tail call i64 @llvm.usub.sat.i64(i64 %58, i64 1) br label %.lr.ph.i.i .lr.ph.i.i: ; preds = %64, %.lr.ph.i.preheader.i @@ -1267,8 +1265,7 @@ _ZN17cranelift_bforest11slice_shift17hbb7d6c24393ab507E.exit.thread.i: ; preds = .lr.ph.i4.preheader.i: ; preds = %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h11178c85ffd6cc76E.llvm.1710812290736639100.exit.i" %78 = add nsw i64 %76, -2 - %umax.i = tail call i64 @llvm.umax.i64(i64 %76, i64 1) - %79 = add nsw i64 %umax.i, -1 + %79 = tail call i64 @llvm.usub.sat.i64(i64 %76, i64 1) br label %.lr.ph.i4.i .lr.ph.i4.i: ; preds = %82, %.lr.ph.i4.preheader.i diff --git a/bench/wireshark/optimized/blf.c.ll b/bench/wireshark/optimized/blf.c.ll index b2729e23cbb..c3a8fa8be75 100644 --- a/bench/wireshark/optimized/blf.c.ll +++ b/bench/wireshark/optimized/blf.c.ll @@ -4131,7 +4131,7 @@ define internal fastcc range(i32 0, 2) i32 @blf_pull_next_logcontainer(ptr nocap 112: ; preds = %69 %113 = load ptr, ptr %25, align 8 - %114 = add i32 %65, -16 + %114 = call i32 @llvm.usub.sat.i32(i32 %65, i32 16) %115 = call i32 @wtap_read_bytes(ptr noundef %113, ptr noundef null, i32 noundef %114, ptr noundef %1, ptr noundef %2) #14 %.not55.i = icmp eq i32 %115, 0 br i1 %.not55.i, label %blf_find_next_logcontainer.exit.thread, label %116 @@ -5310,6 +5310,9 @@ declare i32 @bcmp(ptr nocapture, ptr nocapture, i64) local_unnamed_addr #11 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i32 @llvm.ucmp.i32.i64(i64, i64) #10 +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare i32 @llvm.usub.sat.i32(i32, i32) #10 + ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #12 diff --git a/bench/wireshark/optimized/packet-knxip.c.ll b/bench/wireshark/optimized/packet-knxip.c.ll index 1495fe3edb4..0073e612d2e 100644 --- a/bench/wireshark/optimized/packet-knxip.c.ll +++ b/bench/wireshark/optimized/packet-knxip.c.ll @@ -4988,7 +4988,7 @@ define internal fastcc zeroext range(i8 0, 2) i8 @dissect_session_response(ptr n %13 = tail call ptr (ptr, i32, ptr, i32, i32, ptr, ptr, ...) @proto_tree_add_bytes_format(ptr noundef %3, i32 noundef %12, ptr noundef %0, i32 noundef %6, i32 noundef %9, ptr noundef null, ptr noundef nonnull @.str.427) #9 %14 = tail call ptr (ptr, ptr, ptr, ptr, ...) @expert_add_info_format(ptr noundef nonnull %1, ptr noundef %13, ptr noundef nonnull @ei_knxip_error, ptr noundef nonnull @.str.380) #9 %15 = add i32 %9, %6 - br label %50 + br label %48 16: ; preds = %5 %17 = tail call zeroext i16 @tvb_get_ntohs(ptr noundef %0, i32 noundef %6) #9 @@ -4998,11 +4998,11 @@ define internal fastcc zeroext range(i8 0, 2) i8 @dissect_session_response(ptr n %19 = load i32, ptr @hf_knxip_session, align 4 %20 = tail call ptr @proto_tree_add_item(ptr noundef %3, i32 noundef %19, ptr noundef %0, i32 noundef %6, i32 noundef 2, i32 noundef 0) #9 %21 = add i32 %6, 2 - %22 = tail call i32 @llvm.umax.i32(i32 %9, i32 18) - %spec.store.select = add nsw i32 %22, -18 + %22 = add nsw i32 %9, -2 + %spec.store.select = tail call i32 @llvm.usub.sat.i32(i32 %9, i32 18) %23 = load i32, ptr @hf_bytes, align 4 %24 = tail call ptr (ptr, i32, ptr, i32, i32, ptr, ptr, ...) @proto_tree_add_bytes_format(ptr noundef %3, i32 noundef %23, ptr noundef %0, i32 noundef %21, i32 noundef %spec.store.select, ptr noundef null, ptr noundef nonnull @.str.332, ptr noundef nonnull @.str.465) #9 - %.not63 = icmp eq i32 %spec.store.select, 0 + %.not63 = icmp samesign ult i32 %9, 19 br i1 %.not63, label %knxip_tree_add_data.exit.thread, label %.lr.ph.split.us.split.us.i .lr.ph.split.us.split.us.i: ; preds = %16, %.lr.ph.split.us.split.us.i @@ -5028,41 +5028,39 @@ knxip_tree_add_data.exit.thread: ; preds = %16, %knxip_tree_add 31: ; preds = %knxip_tree_add_data.exit.thread, %knxip_tree_add_data.exit %.1 = phi i8 [ 0, %knxip_tree_add_data.exit.thread ], [ 1, %knxip_tree_add_data.exit ] %32 = add i32 %spec.store.select, %21 - %33 = sub nsw i32 %9, %22 - %34 = icmp ugt i32 %33, 2147483631 - br i1 %34, label %35, label %41 - -35: ; preds = %31 - %36 = add i32 %33, 16 - %37 = load i32, ptr @hf_bytes, align 4 - %38 = tail call ptr (ptr, i32, ptr, i32, i32, ptr, ptr, ...) @proto_tree_add_bytes_format(ptr noundef %3, i32 noundef %37, ptr noundef %0, i32 noundef %32, i32 noundef %36, ptr noundef null, ptr noundef nonnull @.str.458) #9 - %39 = tail call ptr (ptr, ptr, ptr, ptr, ...) @expert_add_info_format(ptr noundef %1, ptr noundef %38, ptr noundef nonnull @ei_knxip_error, ptr noundef nonnull @.str.361) #9 - %40 = add i32 %9, %6 - br label %50 - -41: ; preds = %31 - %42 = load i32, ptr @hf_bytes, align 4 - %43 = tail call ptr (ptr, i32, ptr, i32, i32, ptr, ptr, ...) @proto_tree_add_bytes_format(ptr noundef %3, i32 noundef %42, ptr noundef %0, i32 noundef %32, i32 noundef 16, ptr noundef null, ptr noundef nonnull @.str.332, ptr noundef nonnull @.str.451) #9 + %33 = sub i32 %22, %spec.store.select + %34 = icmp slt i32 %33, 16 + %35 = load i32, ptr @hf_bytes, align 4 + br i1 %34, label %36, label %40 + +36: ; preds = %31 + %37 = tail call ptr (ptr, i32, ptr, i32, i32, ptr, ptr, ...) @proto_tree_add_bytes_format(ptr noundef %3, i32 noundef %35, ptr noundef %0, i32 noundef %32, i32 noundef %33, ptr noundef null, ptr noundef nonnull @.str.458) #9 + %38 = tail call ptr (ptr, ptr, ptr, ptr, ...) @expert_add_info_format(ptr noundef %1, ptr noundef %37, ptr noundef nonnull @ei_knxip_error, ptr noundef nonnull @.str.361) #9 + %39 = add i32 %9, %6 + br label %48 + +40: ; preds = %31 + %41 = tail call ptr (ptr, i32, ptr, i32, i32, ptr, ptr, ...) @proto_tree_add_bytes_format(ptr noundef %3, i32 noundef %35, ptr noundef %0, i32 noundef %32, i32 noundef 16, ptr noundef null, ptr noundef nonnull @.str.332, ptr noundef nonnull @.str.451) #9 br label %.lr.ph.split.us.split.us.i58 -.lr.ph.split.us.split.us.i58: ; preds = %.lr.ph.split.us.split.us.i58, %41 - %.029.us.us.i59 = phi i32 [ %46, %.lr.ph.split.us.split.us.i58 ], [ %32, %41 ] - %.02428.us.us.i60 = phi i32 [ %47, %.lr.ph.split.us.split.us.i58 ], [ 16, %41 ] - %44 = tail call zeroext i8 @tvb_get_guint8(ptr noundef %0, i32 noundef %.029.us.us.i59) #9 - %45 = zext i8 %44 to i32 - tail call void (ptr, ptr, ...) @proto_item_append_text(ptr noundef %43, ptr noundef nonnull @.str.327, i32 noundef %45) #9 - %46 = add i32 %.029.us.us.i59, 1 - %47 = add nsw i32 %.02428.us.us.i60, -1 - %48 = icmp samesign ugt i32 %.02428.us.us.i60, 1 - br i1 %48, label %.lr.ph.split.us.split.us.i58, label %knxip_tree_add_data.exit61, !llvm.loop !21 +.lr.ph.split.us.split.us.i58: ; preds = %.lr.ph.split.us.split.us.i58, %40 + %.029.us.us.i59 = phi i32 [ %44, %.lr.ph.split.us.split.us.i58 ], [ %32, %40 ] + %.02428.us.us.i60 = phi i32 [ %45, %.lr.ph.split.us.split.us.i58 ], [ 16, %40 ] + %42 = tail call zeroext i8 @tvb_get_guint8(ptr noundef %0, i32 noundef %.029.us.us.i59) #9 + %43 = zext i8 %42 to i32 + tail call void (ptr, ptr, ...) @proto_item_append_text(ptr noundef %41, ptr noundef nonnull @.str.327, i32 noundef %43) #9 + %44 = add i32 %.029.us.us.i59, 1 + %45 = add nsw i32 %.02428.us.us.i60, -1 + %46 = icmp samesign ugt i32 %.02428.us.us.i60, 1 + br i1 %46, label %.lr.ph.split.us.split.us.i58, label %knxip_tree_add_data.exit61, !llvm.loop !21 knxip_tree_add_data.exit61: ; preds = %.lr.ph.split.us.split.us.i58 - %49 = add i32 %32, 16 - br label %50 + %47 = add i32 %32, 16 + br label %48 -50: ; preds = %35, %knxip_tree_add_data.exit61, %11 - %.053 = phi i32 [ %15, %11 ], [ %40, %35 ], [ %49, %knxip_tree_add_data.exit61 ] - %.0 = phi i8 [ 0, %11 ], [ 0, %35 ], [ %.1, %knxip_tree_add_data.exit61 ] +48: ; preds = %36, %knxip_tree_add_data.exit61, %11 + %.053 = phi i32 [ %15, %11 ], [ %39, %36 ], [ %47, %knxip_tree_add_data.exit61 ] + %.0 = phi i8 [ 0, %11 ], [ 0, %36 ], [ %.1, %knxip_tree_add_data.exit61 ] store i32 %.053, ptr %4, align 4 ret i8 %.0 } @@ -5559,7 +5557,7 @@ declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #8 declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #8 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.umax.i32(i32, i32) #6 +declare i32 @llvm.usub.sat.i32(i32, i32) #6 attributes #0 = { nounwind uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } diff --git a/bench/yosys/optimized/logger.ll b/bench/yosys/optimized/logger.ll index beff110fa8f..0ec48a59a6c 100644 --- a/bench/yosys/optimized/logger.ll +++ b/bench/yosys/optimized/logger.ll @@ -1356,7 +1356,7 @@ _ZNSt7__cxx1111basic_regexIcNS_12regex_traitsIcEEED2Ev.exit: ; preds = %_ZNSt6ve to label %161 unwind label %520 161: ; preds = %159, %.body, %91 - %.merged71 = phi { ptr, i32 } [ %160, %159 ], [ %.pn67, %.body ], [ %92, %91 ] + %.merged70 = phi { ptr, i32 } [ %160, %159 ], [ %.pn67, %.body ], [ %92, %91 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #24 br label %519 @@ -1792,7 +1792,7 @@ _ZNSt7__cxx1111basic_regexIcNS_12regex_traitsIcEEED2Ev.exit99: ; preds = %_ZNSt6 to label %355 unwind label %520 355: ; preds = %353, %.body87, %285 - %.merged72 = phi { ptr, i32 } [ %354, %353 ], [ %.pn63, %.body87 ], [ %286, %285 ] + %.merged69 = phi { ptr, i32 } [ %354, %353 ], [ %.pn63, %.body87 ], [ %286, %285 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #24 br label %519 @@ -2121,12 +2121,12 @@ _ZNSt7__cxx1111basic_regexIcNS_12regex_traitsIcEEED2Ev.exit99: ; preds = %_ZNSt6 br label %501 488: ; preds = %.loopexit105, %.loopexit.split-lp106, %485, %476 - %.merged70 = phi { ptr, i32 } [ %486, %485 ], [ %.pn, %476 ], [ %lpad.loopexit107, %.loopexit105 ], [ %lpad.loopexit.split-lp108, %.loopexit.split-lp106 ] + %.merged72 = phi { ptr, i32 } [ %486, %485 ], [ %.pn, %476 ], [ %lpad.loopexit107, %.loopexit105 ], [ %lpad.loopexit.split-lp108, %.loopexit.split-lp106 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #24 br label %489 489: ; preds = %.loopexit, %.loopexit.split-lp, %488 - %.merged69 = phi { ptr, i32 } [ %.merged70, %488 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] + %.merged71 = phi { ptr, i32 } [ %.merged72, %488 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #24 br label %519 @@ -2206,7 +2206,7 @@ _ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev.ex br label %519 519: ; preds = %517, %489, %386, %355, %258, %161 - %.merged = phi { ptr, i32 } [ %.merged71, %161 ], [ %.merged73, %258 ], [ %.merged72, %355 ], [ %387, %386 ], [ %.merged69, %489 ], [ %518, %517 ] + %.merged = phi { ptr, i32 } [ %.merged70, %161 ], [ %.merged73, %258 ], [ %.merged69, %355 ], [ %387, %386 ], [ %.merged71, %489 ], [ %518, %517 ] resume { ptr, i32 } %.merged 520: ; preds = %485, %353, %256, %159 diff --git a/bench/z3/optimized/theory_arith.cpp.ll b/bench/z3/optimized/theory_arith.cpp.ll index 004d52fb631..271d8c76140 100644 --- a/bench/z3/optimized/theory_arith.cpp.ll +++ b/bench/z3/optimized/theory_arith.cpp.ll @@ -74056,8 +74056,7 @@ while.body: ; preds = %invoke.cont3 %m_num_args.i = getelementptr inbounds i8, ptr %m.addr.020, i64 24 %9 = load i32, ptr %m_num_args.i, align 8 %m_args.i = getelementptr inbounds i8, ptr %m.addr.020, i64 32 - %umax = call i32 @llvm.umax.i32(i32 %9, i32 1) - %10 = add i32 %umax, -1 + %10 = call i32 @llvm.usub.sat.i32(i32 %9, i32 1) %wide.trip.count = zext i32 %10 to i64 br label %for.cond @@ -89718,8 +89717,7 @@ while.body: ; preds = %invoke.cont5 %m_num_args.i = getelementptr inbounds i8, ptr %m.addr.038, i64 24 %13 = load i32, ptr %m_num_args.i, align 8 %m_args.i = getelementptr inbounds i8, ptr %m.addr.038, i64 32 - %umax = call i32 @llvm.umax.i32(i32 %13, i32 1) - %14 = add i32 %umax, -1 + %14 = call i32 @llvm.usub.sat.i32(i32 %13, i32 1) %wide.trip.count = zext i32 %14 to i64 br label %for.cond @@ -176412,8 +176410,7 @@ while.body: ; preds = %invoke.cont3 %m_num_args.i = getelementptr inbounds i8, ptr %m.addr.020, i64 24 %9 = load i32, ptr %m_num_args.i, align 8 %m_args.i = getelementptr inbounds i8, ptr %m.addr.020, i64 32 - %umax = call i32 @llvm.umax.i32(i32 %9, i32 1) - %10 = add i32 %umax, -1 + %10 = call i32 @llvm.usub.sat.i32(i32 %9, i32 1) %wide.trip.count = zext i32 %10 to i64 br label %for.cond @@ -191809,8 +191806,7 @@ while.body: ; preds = %invoke.cont5 %m_num_args.i = getelementptr inbounds i8, ptr %m.addr.038, i64 24 %13 = load i32, ptr %m_num_args.i, align 8 %m_args.i = getelementptr inbounds i8, ptr %m.addr.038, i64 32 - %umax = call i32 @llvm.umax.i32(i32 %13, i32 1) - %14 = add i32 %umax, -1 + %14 = call i32 @llvm.usub.sat.i32(i32 %13, i32 1) %wide.trip.count = zext i32 %14 to i64 br label %for.cond @@ -276451,8 +276447,7 @@ while.body: ; preds = %invoke.cont3 %m_num_args.i = getelementptr inbounds i8, ptr %m.addr.020, i64 24 %9 = load i32, ptr %m_num_args.i, align 8 %m_args.i = getelementptr inbounds i8, ptr %m.addr.020, i64 32 - %umax = call i32 @llvm.umax.i32(i32 %9, i32 1) - %10 = add i32 %umax, -1 + %10 = call i32 @llvm.usub.sat.i32(i32 %9, i32 1) %wide.trip.count = zext i32 %10 to i64 br label %for.cond @@ -291682,8 +291677,7 @@ while.body: ; preds = %invoke.cont5 %m_num_args.i = getelementptr inbounds i8, ptr %m.addr.038, i64 24 %13 = load i32, ptr %m_num_args.i, align 8 %m_args.i = getelementptr inbounds i8, ptr %m.addr.038, i64 32 - %umax = call i32 @llvm.umax.i32(i32 %13, i32 1) - %14 = add i32 %umax, -1 + %14 = call i32 @llvm.usub.sat.i32(i32 %13, i32 1) %wide.trip.count = zext i32 %14 to i64 br label %for.cond @@ -332343,6 +332337,9 @@ declare i32 @llvm.umax.i32(i32, i32) #20 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i32 @llvm.smin.i32(i32, i32) #20 +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare i32 @llvm.usub.sat.i32(i32, i32) #20 + ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i64 @llvm.smin.i64(i64, i64) #20 diff --git a/bench/zed-rs/optimized/9l8qkfw5pad02im34bzaql12u.ll b/bench/zed-rs/optimized/9l8qkfw5pad02im34bzaql12u.ll index c32d83d9a61..b511369d13e 100644 --- a/bench/zed-rs/optimized/9l8qkfw5pad02im34bzaql12u.ll +++ b/bench/zed-rs/optimized/9l8qkfw5pad02im34bzaql12u.ll @@ -10604,7 +10604,7 @@ define hidden { ptr, ptr } @"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A br label %19 19: ; preds = %.lr.ph, %"_ZN4core4iter8adapters3map12map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hc06f37e9e7b5293bE.exit" - %.sroa.4.020 = phi ptr [ %2, %.lr.ph ], [ %72, %"_ZN4core4iter8adapters3map12map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hc06f37e9e7b5293bE.exit" ] + %.sroa.4.020 = phi ptr [ %2, %.lr.ph ], [ %71, %"_ZN4core4iter8adapters3map12map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hc06f37e9e7b5293bE.exit" ] %20 = phi ptr [ %.promoted, %.lr.ph ], [ %21, %"_ZN4core4iter8adapters3map12map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hc06f37e9e7b5293bE.exit" ] %.sroa.011.0.copyload = load i64, ptr %20, align 8 %.sroa.212.0..sroa_idx = getelementptr inbounds i8, ptr %20, i64 8 @@ -10644,75 +10644,74 @@ define hidden { ptr, ptr } @"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A %30 = extractvalue { i32, i32 } %29, 0 %31 = extractvalue { i32, i32 } %29, 1 %32 = call noundef i32 @_ZN6editor11display_map8fold_map9FoldPoint3row17h5fd653b1bdaf96c3E(i32 noundef %30, i32 noundef %31), !noalias !2795 - %33 = call i32 @llvm.umax.i32(i32 %32, i32 1) - %34 = add i32 %33, -1 - %35 = call { i32, i32 } @_ZN6editor11display_map8fold_map12FoldSnapshot9max_point17h7f87aa0b28577ce5E(ptr noalias noundef nonnull readonly align 8 dereferenceable(88) %15), !noalias !2795 - %36 = extractvalue { i32, i32 } %35, 0 - %37 = extractvalue { i32, i32 } %35, 1 - %38 = call noundef i32 @_ZN6editor11display_map8fold_map9FoldPoint3row17h5fd653b1bdaf96c3E(i32 noundef %36, i32 noundef %37), !noalias !2795 - %.sroa.0.0.sroa.speculated.i1.i.i.i.i.i = call noundef i32 @llvm.umin.i32(i32 %34, i32 %38) - %39 = call { i32, i32 } @_ZN6editor11display_map8fold_map9FoldPoint3new17h8b7c6398ba98641aE(i32 noundef %.sroa.0.0.sroa.speculated.i1.i.i.i.i.i, i32 noundef 0), !noalias !2795 - %40 = extractvalue { i32, i32 } %39, 0 - %41 = extractvalue { i32, i32 } %39, 1 - %42 = call { i32, i32 } @_ZN6editor11display_map8fold_map12FoldSnapshot10clip_point17h8fe7b6928abd41feE(ptr noalias noundef nonnull readonly align 8 dereferenceable(88) %15, i32 noundef %40, i32 noundef %41, i1 noundef zeroext true), !noalias !2795 - %43 = extractvalue { i32, i32 } %42, 0 - %44 = extractvalue { i32, i32 } %42, 1 - %45 = call { i32, i32 } @_ZN6editor11display_map15DisplaySnapshot27fold_point_to_display_point17h9b10056d46d73c1bE(ptr noalias noundef nonnull readonly align 8 dereferenceable(632) %.val.i, i32 noundef %43, i32 noundef %44), !noalias !2795 - %46 = extractvalue { i32, i32 } %45, 0 - %47 = extractvalue { i32, i32 } %45, 1 - %48 = call { i32, i32 } @_ZN6editor11display_map15DisplaySnapshot10clip_point17h3e1b9b95434b0fe3E(ptr noalias noundef nonnull readonly align 8 dereferenceable(632) %.val.i, i32 noundef %46, i32 noundef %47, i1 noundef zeroext true), !noalias !2795 - %49 = extractvalue { i32, i32 } %48, 0 - %50 = extractvalue { i32, i32 } %48, 1 + %33 = call i32 @llvm.usub.sat.i32(i32 %32, i32 1) + %34 = call { i32, i32 } @_ZN6editor11display_map8fold_map12FoldSnapshot9max_point17h7f87aa0b28577ce5E(ptr noalias noundef nonnull readonly align 8 dereferenceable(88) %15), !noalias !2795 + %35 = extractvalue { i32, i32 } %34, 0 + %36 = extractvalue { i32, i32 } %34, 1 + %37 = call noundef i32 @_ZN6editor11display_map8fold_map9FoldPoint3row17h5fd653b1bdaf96c3E(i32 noundef %35, i32 noundef %36), !noalias !2795 + %.sroa.0.0.sroa.speculated.i1.i.i.i.i.i = call noundef i32 @llvm.umin.i32(i32 %33, i32 %37) + %38 = call { i32, i32 } @_ZN6editor11display_map8fold_map9FoldPoint3new17h8b7c6398ba98641aE(i32 noundef %.sroa.0.0.sroa.speculated.i1.i.i.i.i.i, i32 noundef 0), !noalias !2795 + %39 = extractvalue { i32, i32 } %38, 0 + %40 = extractvalue { i32, i32 } %38, 1 + %41 = call { i32, i32 } @_ZN6editor11display_map8fold_map12FoldSnapshot10clip_point17h8fe7b6928abd41feE(ptr noalias noundef nonnull readonly align 8 dereferenceable(88) %15, i32 noundef %39, i32 noundef %40, i1 noundef zeroext true), !noalias !2795 + %42 = extractvalue { i32, i32 } %41, 0 + %43 = extractvalue { i32, i32 } %41, 1 + %44 = call { i32, i32 } @_ZN6editor11display_map15DisplaySnapshot27fold_point_to_display_point17h9b10056d46d73c1bE(ptr noalias noundef nonnull readonly align 8 dereferenceable(632) %.val.i, i32 noundef %42, i32 noundef %43), !noalias !2795 + %45 = extractvalue { i32, i32 } %44, 0 + %46 = extractvalue { i32, i32 } %44, 1 + %47 = call { i32, i32 } @_ZN6editor11display_map15DisplaySnapshot10clip_point17h3e1b9b95434b0fe3E(ptr noalias noundef nonnull readonly align 8 dereferenceable(632) %.val.i, i32 noundef %45, i32 noundef %46, i1 noundef zeroext true), !noalias !2795 + %48 = extractvalue { i32, i32 } %47, 0 + %49 = extractvalue { i32, i32 } %47, 1 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %6), !noalias !2812 - %51 = call { i32, i32 } @_ZN6editor11display_map12DisplayPoint8to_point17hd08e6c17e555abe1E(i32 noundef %49, i32 noundef %50, ptr noalias noundef nonnull readonly align 8 dereferenceable(632) %.val.i), !noalias !2795 - %52 = extractvalue { i32, i32 } %51, 0 - %53 = extractvalue { i32, i32 } %51, 1 - call void @_ZN6editor11display_map15DisplaySnapshot18next_line_boundary17h6f00c0d53dd6e725E(ptr noalias nocapture noundef nonnull sret([16 x i8]) align 4 dereferenceable(16) %6, ptr noalias noundef nonnull readonly align 8 dereferenceable(632) %.val.i, i32 noundef %52, i32 noundef %53), !noalias !2795 - %54 = load i32, ptr %16, align 4, !noalias !2812, !noundef !9 - %55 = load i32, ptr %17, align 4, !noalias !2812, !noundef !9 - %56 = call { i32, i32 } @_ZN6editor11display_map15DisplaySnapshot10clip_point17h3e1b9b95434b0fe3E(ptr noalias noundef nonnull readonly align 8 dereferenceable(632) %.val.i, i32 noundef %54, i32 noundef %55, i1 noundef zeroext false), !noalias !2795 + %50 = call { i32, i32 } @_ZN6editor11display_map12DisplayPoint8to_point17hd08e6c17e555abe1E(i32 noundef %48, i32 noundef %49, ptr noalias noundef nonnull readonly align 8 dereferenceable(632) %.val.i), !noalias !2795 + %51 = extractvalue { i32, i32 } %50, 0 + %52 = extractvalue { i32, i32 } %50, 1 + call void @_ZN6editor11display_map15DisplaySnapshot18next_line_boundary17h6f00c0d53dd6e725E(ptr noalias nocapture noundef nonnull sret([16 x i8]) align 4 dereferenceable(16) %6, ptr noalias noundef nonnull readonly align 8 dereferenceable(632) %.val.i, i32 noundef %51, i32 noundef %52), !noalias !2795 + %53 = load i32, ptr %16, align 4, !noalias !2812, !noundef !9 + %54 = load i32, ptr %17, align 4, !noalias !2812, !noundef !9 + %55 = call { i32, i32 } @_ZN6editor11display_map15DisplaySnapshot10clip_point17h3e1b9b95434b0fe3E(ptr noalias noundef nonnull readonly align 8 dereferenceable(632) %.val.i, i32 noundef %53, i32 noundef %54, i1 noundef zeroext false), !noalias !2795 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6), !noalias !2812 - %57 = extractvalue { i32, i32 } %56, 0 - %58 = extractvalue { i32, i32 } %56, 1 - %59 = call { i32, i32 } @_ZN6editor11display_map12DisplayPoint8to_point17hd08e6c17e555abe1E(i32 noundef %57, i32 noundef %58, ptr noalias noundef nonnull readonly align 8 dereferenceable(632) %.val.i), !noalias !2795 - %60 = call { i32, i32 } @_ZN6editor11display_map12DisplayPoint8to_point17hd08e6c17e555abe1E(i32 noundef %57, i32 noundef %58, ptr noalias noundef nonnull readonly align 8 dereferenceable(632) %.val.i), !noalias !2795 - %61 = extractvalue { i32, i32 } %59, 1 + %56 = extractvalue { i32, i32 } %55, 0 + %57 = extractvalue { i32, i32 } %55, 1 + %58 = call { i32, i32 } @_ZN6editor11display_map12DisplayPoint8to_point17hd08e6c17e555abe1E(i32 noundef %56, i32 noundef %57, ptr noalias noundef nonnull readonly align 8 dereferenceable(632) %.val.i), !noalias !2795 + %59 = call { i32, i32 } @_ZN6editor11display_map12DisplayPoint8to_point17hd08e6c17e555abe1E(i32 noundef %56, i32 noundef %57, ptr noalias noundef nonnull readonly align 8 dereferenceable(632) %.val.i), !noalias !2795 + %60 = extractvalue { i32, i32 } %58, 1 + %61 = extractvalue { i32, i32 } %58, 0 %62 = extractvalue { i32, i32 } %59, 0 - %63 = extractvalue { i32, i32 } %60, 0 - %64 = extractvalue { i32, i32 } %60, 1 - %65 = icmp eq i32 %.sroa.212.0.copyload, %62 - %66 = icmp eq i32 %.sroa.313.0.copyload, %61 - %.sroa.0.0.i.i.i.i = select i1 %65, i1 %66, i1 false - br i1 %.sroa.0.0.i.i.i.i, label %67, label %71 + %63 = extractvalue { i32, i32 } %59, 1 + %64 = icmp eq i32 %.sroa.212.0.copyload, %61 + %65 = icmp eq i32 %.sroa.313.0.copyload, %60 + %.sroa.0.0.i.i.i.i = select i1 %64, i1 %65, i1 false + br i1 %.sroa.0.0.i.i.i.i, label %66, label %70 -67: ; preds = %19 - %68 = icmp eq i32 %.sroa.414.0.copyload, %63 - %69 = icmp eq i32 %.sroa.5.0.copyload, %64 - %.sroa.0.0.i8.i.i.i = select i1 %68, i1 %69, i1 false +66: ; preds = %19 + %67 = icmp eq i32 %.sroa.414.0.copyload, %62 + %68 = icmp eq i32 %.sroa.5.0.copyload, %63 + %.sroa.0.0.i8.i.i.i = select i1 %67, i1 %68, i1 false %.not.i.i.i = icmp eq i8 %.sroa.817.0.copyload, 0 %or.cond.i.i = and i1 %.not.i.i.i, %.sroa.0.0.i8.i.i.i - %70 = icmp eq i32 %.sroa.615.0.copyload, 0 - %or.cond20.i.i = select i1 %or.cond.i.i, i1 %70, i1 false - br i1 %or.cond20.i.i, label %"_ZN4core4iter8adapters3map12map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hc06f37e9e7b5293bE.exit", label %71 + %69 = icmp eq i32 %.sroa.615.0.copyload, 0 + %or.cond20.i.i = select i1 %or.cond.i.i, i1 %69, i1 false + br i1 %or.cond20.i.i, label %"_ZN4core4iter8adapters3map12map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hc06f37e9e7b5293bE.exit", label %70 -71: ; preds = %67, %19 +70: ; preds = %66, %19 call void @llvm.assume(i1 %18) store i8 1, ptr %.val3.i, align 1, !noalias !2821 br label %"_ZN4core4iter8adapters3map12map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hc06f37e9e7b5293bE.exit" -"_ZN4core4iter8adapters3map12map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hc06f37e9e7b5293bE.exit": ; preds = %67, %71 +"_ZN4core4iter8adapters3map12map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hc06f37e9e7b5293bE.exit": ; preds = %66, %70 %.sroa.23.sroa.4.0.extract.shift.i.i = lshr i64 %.sroa.716.0.copyload, 32 %.sroa.23.sroa.4.0.extract.trunc.i.i = trunc nuw i64 %.sroa.23.sroa.4.0.extract.shift.i.i to i32 %.sroa.23.sroa.0.0.extract.trunc.i.i = trunc i64 %.sroa.716.0.copyload to i32 store i64 %.sroa.011.0.copyload, ptr %.sroa.4.020, align 8, !noalias !2795 %.sroa.4.sroa.4.0..sroa.42.8..sroa_idx.i = getelementptr inbounds i8, ptr %.sroa.4.020, i64 8 - store i32 %62, ptr %.sroa.4.sroa.4.0..sroa.42.8..sroa_idx.i, align 8, !noalias !2795 + store i32 %61, ptr %.sroa.4.sroa.4.0..sroa.42.8..sroa_idx.i, align 8, !noalias !2795 %.sroa.4.sroa.5.0..sroa.42.8..sroa_idx.i = getelementptr inbounds i8, ptr %.sroa.4.020, i64 12 - store i32 %61, ptr %.sroa.4.sroa.5.0..sroa.42.8..sroa_idx.i, align 4, !noalias !2795 + store i32 %60, ptr %.sroa.4.sroa.5.0..sroa.42.8..sroa_idx.i, align 4, !noalias !2795 %.sroa.4.sroa.6.0..sroa.42.8..sroa_idx.i = getelementptr inbounds i8, ptr %.sroa.4.020, i64 16 - store i32 %63, ptr %.sroa.4.sroa.6.0..sroa.42.8..sroa_idx.i, align 8, !noalias !2795 + store i32 %62, ptr %.sroa.4.sroa.6.0..sroa.42.8..sroa_idx.i, align 8, !noalias !2795 %.sroa.4.sroa.7.0..sroa.42.8..sroa_idx.i = getelementptr inbounds i8, ptr %.sroa.4.020, i64 20 - store i32 %64, ptr %.sroa.4.sroa.7.0..sroa.42.8..sroa_idx.i, align 4, !noalias !2795 + store i32 %63, ptr %.sroa.4.sroa.7.0..sroa.42.8..sroa_idx.i, align 4, !noalias !2795 %.sroa.4.sroa.8.0..sroa.42.8..sroa_idx.i = getelementptr inbounds i8, ptr %.sroa.4.020, i64 24 store i32 0, ptr %.sroa.4.sroa.8.0..sroa.42.8..sroa_idx.i, align 8, !noalias !2795 %.sroa.4.sroa.9.0..sroa.42.8..sroa_idx.i = getelementptr inbounds i8, ptr %.sroa.4.020, i64 28 @@ -10721,15 +10720,15 @@ define hidden { ptr, ptr } @"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A store i32 %.sroa.23.sroa.4.0.extract.trunc.i.i, ptr %.sroa.4.sroa.10.0..sroa.42.8..sroa_idx.i, align 8, !noalias !2795 %.sroa.4.sroa.11.0..sroa.42.8..sroa_idx.i = getelementptr inbounds i8, ptr %.sroa.4.020, i64 36 store i8 0, ptr %.sroa.4.sroa.11.0..sroa.42.8..sroa_idx.i, align 4, !noalias !2795 - %72 = getelementptr inbounds i8, ptr %.sroa.4.020, i64 40 + %71 = getelementptr inbounds i8, ptr %.sroa.4.020, i64 40 %.not = icmp eq ptr %21, %10 br i1 %.not, label %._crit_edge, label %19 ._crit_edge: ; preds = %"_ZN4core4iter8adapters3map12map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hc06f37e9e7b5293bE.exit", %5 - %.sroa.4.0.lcssa = phi ptr [ %2, %5 ], [ %72, %"_ZN4core4iter8adapters3map12map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hc06f37e9e7b5293bE.exit" ] - %73 = insertvalue { ptr, ptr } poison, ptr %1, 0 - %74 = insertvalue { ptr, ptr } %73, ptr %.sroa.4.0.lcssa, 1 - ret { ptr, ptr } %74 + %.sroa.4.0.lcssa = phi ptr [ %2, %5 ], [ %71, %"_ZN4core4iter8adapters3map12map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hc06f37e9e7b5293bE.exit" ] + %72 = insertvalue { ptr, ptr } poison, ptr %1, 0 + %73 = insertvalue { ptr, ptr } %72, ptr %.sroa.4.0.lcssa, 1 + ret { ptr, ptr } %73 } ; Function Attrs: nonlazybind uwtable